From 6390081cfb82d20b85e626143b7a56f4e7910445 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao Date: Fri, 9 Oct 2015 16:18:23 -0400 Subject: [PATCH 01/86] added pods, facebook SDK --- .DS_Store | Bin 0 -> 6148 bytes Unit-2-Journal/.DS_Store | Bin 0 -> 6148 bytes Unit-2-Journal/Podfile | 3 + Unit-2-Journal/Podfile.lock | 33 + .../Bolts/Bolts/Common/BFCancellationToken.h | 38 + .../Bolts/Bolts/Common/BFCancellationToken.m | 139 ++ .../Common/BFCancellationTokenRegistration.h | 25 + .../Common/BFCancellationTokenRegistration.m | 73 + .../Bolts/Common/BFCancellationTokenSource.h | 56 + .../Bolts/Common/BFCancellationTokenSource.m | 60 + .../Pods/Bolts/Bolts/Common/BFDefines.h | 18 + .../Pods/Bolts/Bolts/Common/BFExecutor.h | 58 + .../Pods/Bolts/Bolts/Common/BFExecutor.m | 112 + .../Pods/Bolts/Bolts/Common/BFTask.h | 259 ++ .../Pods/Bolts/Bolts/Common/BFTask.m | 470 ++++ .../Bolts/Common/BFTaskCompletionSource.h | 87 + .../Bolts/Common/BFTaskCompletionSource.m | 83 + .../Pods/Bolts/Bolts/Common/Bolts.h | 43 + .../Pods/Bolts/Bolts/Common/Bolts.m | 21 + .../Pods/Bolts/Bolts/Common/BoltsVersion.h | 1 + .../Pods/Bolts/Bolts/iOS/BFAppLink.h | 49 + .../Pods/Bolts/Bolts/iOS/BFAppLink.m | 62 + .../Bolts/Bolts/iOS/BFAppLinkNavigation.h | 93 + .../Bolts/Bolts/iOS/BFAppLinkNavigation.m | 248 ++ .../Pods/Bolts/Bolts/iOS/BFAppLinkResolving.h | 30 + .../iOS/BFAppLinkReturnToRefererController.h | 87 + .../iOS/BFAppLinkReturnToRefererController.m | 230 ++ .../Bolts/iOS/BFAppLinkReturnToRefererView.h | 77 + .../Bolts/iOS/BFAppLinkReturnToRefererView.m | 269 +++ .../BFAppLinkReturnToRefererView_Internal.h | 17 + .../Pods/Bolts/Bolts/iOS/BFAppLinkTarget.h | 33 + .../Pods/Bolts/Bolts/iOS/BFAppLinkTarget.m | 33 + .../Pods/Bolts/Bolts/iOS/BFAppLink_Internal.h | 23 + .../Pods/Bolts/Bolts/iOS/BFMeasurementEvent.h | 45 + .../Pods/Bolts/Bolts/iOS/BFMeasurementEvent.m | 62 + .../Bolts/iOS/BFMeasurementEvent_Internal.h | 19 + Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFURL.h | 75 + Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFURL.m | 149 ++ .../Pods/Bolts/Bolts/iOS/BFURL_Internal.h | 15 + .../Bolts/iOS/BFWebViewAppLinkResolver.h | 26 + .../Bolts/iOS/BFWebViewAppLinkResolver.m | 298 +++ Unit-2-Journal/Pods/Bolts/LICENSE | 30 + Unit-2-Journal/Pods/Bolts/README.md | 682 ++++++ .../FBSDKCoreKit/FBSDKAccessToken.h | 166 ++ .../FBSDKCoreKit/FBSDKAccessToken.m | 200 ++ .../FBSDKCoreKit/FBSDKAppEvents.h | 462 ++++ .../FBSDKCoreKit/FBSDKAppEvents.m | 831 +++++++ .../FBSDKCoreKit/FBSDKAppLinkResolver.h | 82 + .../FBSDKCoreKit/FBSDKAppLinkResolver.m | 195 ++ .../FBSDKCoreKit/FBSDKAppLinkUtility.h | 55 + .../FBSDKCoreKit/FBSDKAppLinkUtility.m | 80 + .../FBSDKCoreKit/FBSDKApplicationDelegate.h | 74 + .../FBSDKCoreKit/FBSDKApplicationDelegate.m | 430 ++++ .../FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h | 26 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m | 430 ++++ .../FBSDKCoreKit/FBSDKConstants.h | 210 ++ .../FBSDKCoreKit/FBSDKConstants.m | 34 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h | 33 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h | 38 + .../FBSDKGraphErrorRecoveryProcessor.h | 97 + .../FBSDKGraphErrorRecoveryProcessor.m | 155 ++ .../FBSDKCoreKit/FBSDKGraphRequest.h | 120 + .../FBSDKCoreKit/FBSDKGraphRequest.m | 204 ++ .../FBSDKGraphRequestConnection.h | 325 +++ .../FBSDKGraphRequestConnection.m | 1011 ++++++++ .../FBSDKGraphRequestDataAttachment.h | 52 + .../FBSDKGraphRequestDataAttachment.m | 41 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h | 39 + .../FBSDKCoreKit/FBSDKMutableCopying.h | 35 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h | 148 ++ .../FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m | 268 +++ .../FBSDKCoreKit/FBSDKProfilePictureView.h | 59 + .../FBSDKCoreKit/FBSDKProfilePictureView.m | 368 +++ .../FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h | 209 ++ .../FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m | 223 ++ .../FBSDKCoreKit/FBSDKTestUsersManager.h | 102 + .../FBSDKCoreKit/FBSDKTestUsersManager.m | 328 +++ .../FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h | 55 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m | 90 + .../AppEvents/FBSDKAppEvents+Internal.h | 158 ++ .../AppEvents/FBSDKAppEventsDeviceInfo.h | 25 + .../AppEvents/FBSDKAppEventsDeviceInfo.m | 252 ++ .../Internal/AppEvents/FBSDKAppEventsState.h | 38 + .../Internal/AppEvents/FBSDKAppEventsState.m | 161 ++ .../AppEvents/FBSDKAppEventsStateManager.h | 34 + .../AppEvents/FBSDKAppEventsStateManager.m | 78 + .../AppEvents/FBSDKAppEventsUtility.h | 57 + .../AppEvents/FBSDKAppEventsUtility.m | 305 +++ .../Internal/AppEvents/FBSDKPaymentObserver.h | 25 + .../Internal/AppEvents/FBSDKPaymentObserver.m | 281 +++ .../Internal/AppEvents/FBSDKTimeSpentData.h | 36 + .../Internal/AppEvents/FBSDKTimeSpentData.m | 305 +++ .../FBSDKBoltsMeasurementEventListener.h | 23 + .../FBSDKBoltsMeasurementEventListener.m | 78 + .../Internal/Base64/FBSDKBase64.h | 51 + .../Internal/Base64/FBSDKBase64.m | 133 ++ .../Internal/BridgeAPI/FBSDKBridgeAPICrypto.h | 31 + .../Internal/BridgeAPI/FBSDKBridgeAPICrypto.m | 139 ++ .../BridgeAPI/FBSDKBridgeAPIProtocol.h | 44 + .../BridgeAPI/FBSDKBridgeAPIProtocolType.h | 25 + .../BridgeAPI/FBSDKBridgeAPIRequest+Private.h | 35 + .../BridgeAPI/FBSDKBridgeAPIRequest.h | 44 + .../BridgeAPI/FBSDKBridgeAPIRequest.m | 166 ++ .../BridgeAPI/FBSDKBridgeAPIResponse.h | 39 + .../BridgeAPI/FBSDKBridgeAPIResponse.m | 135 ++ .../Internal/BridgeAPI/FBSDKURLOpening.h | 30 + .../FBSDKBridgeAPIProtocolNativeV1.h | 70 + .../FBSDKBridgeAPIProtocolNativeV1.m | 338 +++ .../FBSDKBridgeAPIProtocolWebV1.h | 25 + .../FBSDKBridgeAPIProtocolWebV1.m | 116 + .../FBSDKBridgeAPIProtocolWebV2.h | 25 + .../FBSDKBridgeAPIProtocolWebV2.m | 130 + .../Internal/Cryptography/FBSDKCrypto.h | 63 + .../Internal/Cryptography/FBSDKCrypto.m | 287 +++ .../FBSDKErrorRecoveryAttempter.h | 34 + .../FBSDKErrorRecoveryAttempter.m | 56 + .../_FBSDKTemporaryErrorRecoveryAttempter.h | 23 + .../_FBSDKTemporaryErrorRecoveryAttempter.m | 28 + .../FBSDKApplicationDelegate+Internal.h | 51 + .../Internal/FBSDKAudioResourceLoader.h | 36 + .../Internal/FBSDKAudioResourceLoader.m | 151 ++ .../Internal/FBSDKContainerViewController.h | 35 + .../Internal/FBSDKContainerViewController.m | 78 + .../Internal/FBSDKCoreKit+Internal.h | 68 + .../Internal/FBSDKDynamicFrameworkLoader.h | 236 ++ .../Internal/FBSDKDynamicFrameworkLoader.m | 556 +++++ .../FBSDKCoreKit/Internal/FBSDKError.h | 56 + .../FBSDKCoreKit/Internal/FBSDKError.m | 163 ++ .../Internal/FBSDKInternalUtility.h | 321 +++ .../Internal/FBSDKInternalUtility.m | 666 ++++++ .../FBSDKCoreKit/Internal/FBSDKLogger.h | 88 + .../FBSDKCoreKit/Internal/FBSDKLogger.m | 219 ++ .../FBSDKCoreKit/Internal/FBSDKMath.h | 38 + .../FBSDKCoreKit/Internal/FBSDKMath.m | 159 ++ .../Internal/FBSDKMonotonicTime.h | 67 + .../Internal/FBSDKMonotonicTime.m | 86 + .../Internal/FBSDKProfile+Internal.h | 26 + .../Internal/FBSDKSettings+Internal.h | 36 + .../Internal/FBSDKSystemAccountStoreAdapter.h | 82 + .../Internal/FBSDKSystemAccountStoreAdapter.m | 275 +++ .../FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h | 32 + .../FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m | 43 + .../FBSDKCoreKit/Internal/FBSDKTypeUtility.h | 32 + .../FBSDKCoreKit/Internal/FBSDKTypeUtility.m | 120 + .../Network/FBSDKGraphRequest+Internal.h | 56 + .../Internal/Network/FBSDKGraphRequestBody.h | 47 + .../Internal/Network/FBSDKGraphRequestBody.m | 131 ++ .../FBSDKGraphRequestConnection+Internal.h | 25 + .../Network/FBSDKGraphRequestMetadata.h | 40 + .../Network/FBSDKGraphRequestMetadata.m | 62 + .../FBSDKGraphRequestPiggybackManager.h | 30 + .../FBSDKGraphRequestPiggybackManager.m | 140 ++ .../Internal/Network/FBSDKURLConnection.h | 51 + .../Internal/Network/FBSDKURLConnection.m | 191 ++ .../FBSDKDialogConfiguration.h | 34 + .../FBSDKDialogConfiguration.m | 78 + .../FBSDKErrorConfiguration.h | 36 + .../FBSDKErrorConfiguration.m | 176 ++ .../FBSDKErrorRecoveryConfiguration.h | 35 + .../FBSDKErrorRecoveryConfiguration.m | 86 + .../FBSDKServerConfiguration+Internal.h | 25 + .../FBSDKServerConfiguration.h | 74 + .../FBSDKServerConfiguration.m | 219 ++ ...FBSDKServerConfigurationManager+Internal.h | 31 + .../FBSDKServerConfigurationManager.h | 40 + .../FBSDKServerConfigurationManager.m | 357 +++ .../TokenCaching/FBSDKAccessTokenCache.h | 27 + .../TokenCaching/FBSDKAccessTokenCache.m | 82 + .../TokenCaching/FBSDKAccessTokenCacheV3.h | 30 + .../TokenCaching/FBSDKAccessTokenCacheV3.m | 79 + .../TokenCaching/FBSDKAccessTokenCacheV3_17.h | 25 + .../TokenCaching/FBSDKAccessTokenCacheV3_17.m | 63 + .../TokenCaching/FBSDKAccessTokenCacheV3_21.h | 25 + .../TokenCaching/FBSDKAccessTokenCacheV3_21.m | 66 + .../TokenCaching/FBSDKAccessTokenCacheV4.h | 26 + .../TokenCaching/FBSDKAccessTokenCacheV4.m | 97 + .../TokenCaching/FBSDKAccessTokenCaching.h | 31 + .../TokenCaching/FBSDKKeychainStore.h | 40 + .../TokenCaching/FBSDKKeychainStore.m | 161 ++ .../FBSDKKeychainStoreViaBundleID.h | 29 + .../FBSDKKeychainStoreViaBundleID.m | 50 + .../Internal/UI/FBSDKButton+Subclass.h | 59 + .../FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h | 25 + .../FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m | 89 + .../FBSDKCoreKit/Internal/UI/FBSDKColor.h | 22 + .../FBSDKCoreKit/Internal/UI/FBSDKColor.m | 31 + .../FBSDKCoreKit/Internal/UI/FBSDKIcon.h | 31 + .../FBSDKCoreKit/Internal/UI/FBSDKIcon.m | 64 + .../FBSDKCoreKit/Internal/UI/FBSDKLogo.h | 25 + .../FBSDKCoreKit/Internal/UI/FBSDKLogo.m | 59 + .../Internal/UI/FBSDKMaleSilhouetteIcon.h | 25 + .../Internal/UI/FBSDKMaleSilhouetteIcon.m | 51 + .../FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h | 89 + .../Internal/UI/FBSDKViewImpressionTracker.h | 29 + .../Internal/UI/FBSDKViewImpressionTracker.m | 97 + .../Internal/WebDialog/FBSDKWebDialog.h | 44 + .../Internal/WebDialog/FBSDKWebDialog.m | 340 +++ .../Internal/WebDialog/FBSDKWebDialogView.h | 39 + .../Internal/WebDialog/FBSDKWebDialogView.m | 188 ++ Unit-2-Journal/Pods/FBSDKCoreKit/LICENSE | 17 + Unit-2-Journal/Pods/FBSDKCoreKit/README.mdown | 46 + .../FBSDKLoginKit/FBSDKLoginButton.h | 128 + .../FBSDKLoginKit/FBSDKLoginButton.m | 287 +++ .../FBSDKLoginKit/FBSDKLoginConstants.h | 75 + .../FBSDKLoginKit/FBSDKLoginConstants.m | 21 + .../FBSDKLoginKit/FBSDKLoginKit.h | 25 + .../FBSDKLoginKit/FBSDKLoginManager.h | 202 ++ .../FBSDKLoginKit/FBSDKLoginManager.m | 785 +++++++ .../FBSDKLoginManagerLoginResult.h | 62 + .../FBSDKLoginManagerLoginResult.m | 56 + .../FBSDKLoginKit/FBSDKLoginTooltipView.h | 93 + .../FBSDKLoginKit/FBSDKLoginTooltipView.m | 62 + .../FBSDKLoginKit/FBSDKTooltipView.h | 141 ++ .../FBSDKLoginKit/FBSDKTooltipView.m | 603 +++++ .../Internal/FBSDKLoginCompletion+Internal.h | 37 + .../Internal/FBSDKLoginCompletion.h | 96 + .../Internal/FBSDKLoginCompletion.m | 326 +++ .../FBSDKLoginKit/Internal/FBSDKLoginError.h | 35 + .../FBSDKLoginKit/Internal/FBSDKLoginError.m | 252 ++ .../Internal/FBSDKLoginKit+Internal.h | 24 + .../Internal/FBSDKLoginManager+Internal.h | 81 + .../Internal/FBSDKLoginManagerLogger.h | 41 + .../Internal/FBSDKLoginManagerLogger.m | 293 +++ .../FBSDKLoginManagerLoginResult+Internal.h | 32 + .../Internal/FBSDKLoginUtility.h | 33 + .../Internal/FBSDKLoginUtility.m | 115 + .../Internal/_FBSDKLoginRecoveryAttempter.h | 23 + .../Internal/_FBSDKLoginRecoveryAttempter.m | 51 + Unit-2-Journal/Pods/FBSDKLoginKit/LICENSE | 17 + .../Pods/FBSDKLoginKit/README.mdown | 46 + .../FBSDKShareKit/FBSDKAppGroupAddDialog.h | 101 + .../FBSDKShareKit/FBSDKAppGroupAddDialog.m | 185 ++ .../FBSDKShareKit/FBSDKAppGroupContent.h | 68 + .../FBSDKShareKit/FBSDKAppGroupContent.m | 109 + .../FBSDKShareKit/FBSDKAppGroupJoinDialog.h | 99 + .../FBSDKShareKit/FBSDKAppGroupJoinDialog.m | 167 ++ .../FBSDKShareKit/FBSDKAppInviteContent.h | 54 + .../FBSDKShareKit/FBSDKAppInviteContent.m | 99 + .../FBSDKShareKit/FBSDKAppInviteDialog.h | 111 + .../FBSDKShareKit/FBSDKAppInviteDialog.m | 197 ++ .../FBSDKShareKit/FBSDKGameRequestContent.h | 131 ++ .../FBSDKShareKit/FBSDKGameRequestContent.m | 164 ++ .../FBSDKShareKit/FBSDKGameRequestDialog.h | 105 + .../FBSDKShareKit/FBSDKGameRequestDialog.m | 265 +++ .../FBSDKShareKit/FBSDKLikeButton.h | 42 + .../FBSDKShareKit/FBSDKLikeButton.m | 294 +++ .../FBSDKShareKit/FBSDKLikeControl.h | 139 ++ .../FBSDKShareKit/FBSDKLikeControl.m | 664 ++++++ .../FBSDKShareKit/FBSDKLikeObjectType.h | 40 + .../FBSDKShareKit/FBSDKLikeObjectType.m | 32 + .../FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h | 45 + .../FBSDKShareKit/FBSDKMessageDialog.h | 35 + .../FBSDKShareKit/FBSDKMessageDialog.m | 221 ++ .../FBSDKShareKit/FBSDKSendButton.h | 32 + .../FBSDKShareKit/FBSDKSendButton.m | 97 + .../FBSDKShareKit/FBSDKShareAPI.h | 79 + .../FBSDKShareKit/FBSDKShareAPI.m | 701 ++++++ .../FBSDKShareKit/FBSDKShareButton.h | 32 + .../FBSDKShareKit/FBSDKShareButton.m | 90 + .../FBSDKShareKit/FBSDKShareConstants.h | 50 + .../FBSDKShareKit/FBSDKShareConstants.m | 24 + .../FBSDKShareKit/FBSDKShareDialog.h | 52 + .../FBSDKShareKit/FBSDKShareDialog.m | 781 ++++++ .../FBSDKShareKit/FBSDKShareDialogMode.h | 64 + .../FBSDKShareKit/FBSDKShareDialogMode.m | 51 + .../FBSDKShareKit/FBSDKShareKit.h | 47 + .../FBSDKShareKit/FBSDKShareLinkContent.h | 56 + .../FBSDKShareKit/FBSDKShareLinkContent.m | 150 ++ .../FBSDKShareKit/FBSDKShareOpenGraphAction.h | 69 + .../FBSDKShareKit/FBSDKShareOpenGraphAction.m | 117 + .../FBSDKShareOpenGraphContent.h | 49 + .../FBSDKShareOpenGraphContent.m | 132 ++ .../FBSDKShareKit/FBSDKShareOpenGraphObject.h | 58 + .../FBSDKShareKit/FBSDKShareOpenGraphObject.m | 63 + .../FBSDKShareOpenGraphValueContainer.h | 160 ++ .../FBSDKShareOpenGraphValueContainer.m | 238 ++ .../FBSDKShareKit/FBSDKSharePhoto.h | 80 + .../FBSDKShareKit/FBSDKSharePhoto.m | 119 + .../FBSDKShareKit/FBSDKSharePhotoContent.h | 41 + .../FBSDKShareKit/FBSDKSharePhotoContent.m | 133 ++ .../FBSDKShareKit/FBSDKShareVideo.h | 48 + .../FBSDKShareKit/FBSDKShareVideo.m | 89 + .../FBSDKShareKit/FBSDKShareVideoContent.h | 49 + .../FBSDKShareKit/FBSDKShareVideoContent.m | 130 + .../FBSDKShareKit/FBSDKSharing.h | 110 + .../FBSDKShareKit/FBSDKSharingButton.h | 35 + .../FBSDKShareKit/FBSDKSharingContent.h | 56 + .../Internal/FBSDKCheckmarkIcon.h | 25 + .../Internal/FBSDKCheckmarkIcon.m | 43 + ...SDKGameRequestFrictionlessRecipientCache.h | 26 + ...SDKGameRequestFrictionlessRecipientCache.m | 100 + .../Internal/FBSDKLikeActionController.h | 48 + .../Internal/FBSDKLikeActionController.m | 1062 +++++++++ .../Internal/FBSDKLikeActionControllerCache.h | 31 + .../Internal/FBSDKLikeActionControllerCache.m | 116 + .../Internal/FBSDKLikeBoxBorderView.h | 33 + .../Internal/FBSDKLikeBoxBorderView.m | 323 +++ .../FBSDKShareKit/Internal/FBSDKLikeBoxView.h | 43 + .../FBSDKShareKit/Internal/FBSDKLikeBoxView.m | 108 + .../Internal/FBSDKLikeButton+Internal.h | 29 + .../Internal/FBSDKLikeButtonPopWAV.h | 24 + .../Internal/FBSDKLikeButtonPopWAV.m | 36 + .../Internal/FBSDKLikeControl+Internal.h | 27 + .../FBSDKShareKit/Internal/FBSDKLikeDialog.h | 49 + .../FBSDKShareKit/Internal/FBSDKLikeDialog.m | 159 ++ .../Internal/FBSDKMessengerIcon.h | 25 + .../Internal/FBSDKMessengerIcon.m | 50 + .../Internal/FBSDKShareDefines.h | 30 + .../FBSDKShareKit/Internal/FBSDKShareError.h | 25 + .../FBSDKShareKit/Internal/FBSDKShareError.m | 30 + .../Internal/FBSDKShareKit+Internal.h | 26 + .../Internal/FBSDKShareLinkContent+Internal.h | 26 + ...SDKShareOpenGraphValueContainer+Internal.h | 29 + .../Internal/FBSDKShareUtility.h | 55 + .../Internal/FBSDKShareUtility.m | 727 ++++++ Unit-2-Journal/Pods/FBSDKShareKit/LICENSE | 17 + .../Pods/FBSDKShareKit/README.mdown | 46 + .../Pods/Headers/Private/Bolts/BFAppLink.h | 1 + .../Private/Bolts/BFAppLinkNavigation.h | 1 + .../Private/Bolts/BFAppLinkResolving.h | 1 + .../BFAppLinkReturnToRefererController.h | 1 + .../Bolts/BFAppLinkReturnToRefererView.h | 1 + .../BFAppLinkReturnToRefererView_Internal.h | 1 + .../Headers/Private/Bolts/BFAppLinkTarget.h | 1 + .../Private/Bolts/BFAppLink_Internal.h | 1 + .../Private/Bolts/BFCancellationToken.h | 1 + .../Bolts/BFCancellationTokenRegistration.h | 1 + .../Private/Bolts/BFCancellationTokenSource.h | 1 + .../Pods/Headers/Private/Bolts/BFDefines.h | 1 + .../Pods/Headers/Private/Bolts/BFExecutor.h | 1 + .../Private/Bolts/BFMeasurementEvent.h | 1 + .../Bolts/BFMeasurementEvent_Internal.h | 1 + .../Pods/Headers/Private/Bolts/BFTask.h | 1 + .../Private/Bolts/BFTaskCompletionSource.h | 1 + .../Pods/Headers/Private/Bolts/BFURL.h | 1 + .../Headers/Private/Bolts/BFURL_Internal.h | 1 + .../Private/Bolts/BFWebViewAppLinkResolver.h | 1 + .../Pods/Headers/Private/Bolts/Bolts.h | 1 + .../Pods/Headers/Private/Bolts/BoltsVersion.h | 1 + .../Private/FBSDKCoreKit/FBSDKAccessToken.h | 1 + .../Private/FBSDKCoreKit/FBSDKAppEvents.h | 1 + .../FBSDKCoreKit/FBSDKAppLinkResolver.h | 1 + .../FBSDKCoreKit/FBSDKAppLinkUtility.h | 1 + .../FBSDKCoreKit/FBSDKApplicationDelegate.h | 1 + .../Private/FBSDKCoreKit/FBSDKButton.h | 1 + .../Private/FBSDKCoreKit/FBSDKConstants.h | 1 + .../Private/FBSDKCoreKit/FBSDKCopying.h | 1 + .../Private/FBSDKCoreKit/FBSDKCoreKit.h | 1 + .../AppEvents/FBSDKAppEvents+Internal.h | 1 + .../AppEvents/FBSDKAppEventsDeviceInfo.h | 1 + .../AppEvents/FBSDKAppEventsState.h | 1 + .../AppEvents/FBSDKAppEventsStateManager.h | 1 + .../AppEvents/FBSDKAppEventsUtility.h | 1 + .../AppEvents/FBSDKPaymentObserver.h | 1 + .../AppEvents/FBSDKTimeSpentData.h | 1 + .../FBSDKBoltsMeasurementEventListener.h | 1 + .../FBSDKCoreKit/Base64/FBSDKBase64.h | 1 + .../BridgeAPI/FBSDKBridgeAPICrypto.h | 1 + .../BridgeAPI/FBSDKBridgeAPIProtocol.h | 1 + .../BridgeAPI/FBSDKBridgeAPIProtocolType.h | 1 + .../BridgeAPI/FBSDKBridgeAPIRequest+Private.h | 1 + .../BridgeAPI/FBSDKBridgeAPIRequest.h | 1 + .../BridgeAPI/FBSDKBridgeAPIResponse.h | 1 + .../FBSDKCoreKit/BridgeAPI/FBSDKURLOpening.h | 1 + .../FBSDKBridgeAPIProtocolNativeV1.h | 1 + .../FBSDKBridgeAPIProtocolWebV1.h | 1 + .../FBSDKBridgeAPIProtocolWebV2.h | 1 + .../FBSDKCoreKit/Cryptography/FBSDKCrypto.h | 1 + .../FBSDKErrorRecoveryAttempter.h | 1 + .../_FBSDKTemporaryErrorRecoveryAttempter.h | 1 + .../FBSDKApplicationDelegate+Internal.h | 1 + .../FBSDKCoreKit/FBSDKAudioResourceLoader.h | 1 + .../FBSDKContainerViewController.h | 1 + .../FBSDKCoreKit/FBSDKCoreKit+Internal.h | 1 + .../FBSDKDynamicFrameworkLoader.h | 1 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKError.h | 1 + .../FBSDKCoreKit/FBSDKInternalUtility.h | 1 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKLogger.h | 1 + .../FBSDKCoreKit/FBSDKCoreKit/FBSDKMath.h | 1 + .../FBSDKCoreKit/FBSDKMonotonicTime.h | 1 + .../FBSDKCoreKit/FBSDKProfile+Internal.h | 1 + .../FBSDKCoreKit/FBSDKSettings+Internal.h | 1 + .../FBSDKSystemAccountStoreAdapter.h | 1 + .../FBSDKCoreKit/FBSDKTriStateBOOL.h | 1 + .../FBSDKCoreKit/FBSDKTypeUtility.h | 1 + .../Network/FBSDKGraphRequest+Internal.h | 1 + .../Network/FBSDKGraphRequestBody.h | 1 + .../FBSDKGraphRequestConnection+Internal.h | 1 + .../Network/FBSDKGraphRequestMetadata.h | 1 + .../FBSDKGraphRequestPiggybackManager.h | 1 + .../FBSDKCoreKit/Network/FBSDKURLConnection.h | 1 + .../FBSDKDialogConfiguration.h | 1 + .../FBSDKErrorConfiguration.h | 1 + .../FBSDKErrorRecoveryConfiguration.h | 1 + .../FBSDKServerConfiguration+Internal.h | 1 + .../FBSDKServerConfiguration.h | 1 + ...FBSDKServerConfigurationManager+Internal.h | 1 + .../FBSDKServerConfigurationManager.h | 1 + .../TokenCaching/FBSDKAccessTokenCache.h | 1 + .../TokenCaching/FBSDKAccessTokenCacheV3.h | 1 + .../TokenCaching/FBSDKAccessTokenCacheV3_17.h | 1 + .../TokenCaching/FBSDKAccessTokenCacheV3_21.h | 1 + .../TokenCaching/FBSDKAccessTokenCacheV4.h | 1 + .../TokenCaching/FBSDKAccessTokenCaching.h | 1 + .../TokenCaching/FBSDKKeychainStore.h | 1 + .../FBSDKKeychainStoreViaBundleID.h | 1 + .../FBSDKCoreKit/UI/FBSDKButton+Subclass.h | 1 + .../FBSDKCoreKit/UI/FBSDKCloseIcon.h | 1 + .../FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKColor.h | 1 + .../FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKIcon.h | 1 + .../FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKLogo.h | 1 + .../FBSDKCoreKit/UI/FBSDKMaleSilhouetteIcon.h | 1 + .../FBSDKCoreKit/UI/FBSDKUIUtility.h | 1 + .../UI/FBSDKViewImpressionTracker.h | 1 + .../FBSDKCoreKit/WebDialog/FBSDKWebDialog.h | 1 + .../WebDialog/FBSDKWebDialogView.h | 1 + .../FBSDKGraphErrorRecoveryProcessor.h | 1 + .../Private/FBSDKCoreKit/FBSDKGraphRequest.h | 1 + .../FBSDKGraphRequestConnection.h | 1 + .../FBSDKGraphRequestDataAttachment.h | 1 + .../Private/FBSDKCoreKit/FBSDKMacros.h | 1 + .../FBSDKCoreKit/FBSDKMutableCopying.h | 1 + .../Private/FBSDKCoreKit/FBSDKProfile.h | 1 + .../FBSDKCoreKit/FBSDKProfilePictureView.h | 1 + .../Private/FBSDKCoreKit/FBSDKSettings.h | 1 + .../FBSDKCoreKit/FBSDKTestUsersManager.h | 1 + .../Private/FBSDKCoreKit/FBSDKUtility.h | 1 + .../FBSDKLoginKit/FBSDKLoginButton.h | 1 + .../FBSDKLoginCompletion+Internal.h | 1 + .../FBSDKLoginKit/FBSDKLoginCompletion.h | 1 + .../FBSDKLoginKit/FBSDKLoginConstants.h | 1 + .../FBSDKLoginKit/FBSDKLoginError.h | 1 + .../FBSDKLoginKit/FBSDKLoginKit+Internal.h | 1 + .../FBSDKLoginKit/FBSDKLoginKit.h | 1 + .../FBSDKLoginManager+Internal.h | 1 + .../FBSDKLoginKit/FBSDKLoginManager.h | 1 + .../FBSDKLoginKit/FBSDKLoginManagerLogger.h | 1 + .../FBSDKLoginManagerLoginResult+Internal.h | 1 + .../FBSDKLoginManagerLoginResult.h | 1 + .../FBSDKLoginKit/FBSDKLoginTooltipView.h | 1 + .../FBSDKLoginKit/FBSDKLoginUtility.h | 1 + .../FBSDKLoginKit/FBSDKTooltipView.h | 1 + .../_FBSDKLoginRecoveryAttempter.h | 1 + .../FBSDKShareKit/FBSDKAppGroupAddDialog.h | 1 + .../FBSDKShareKit/FBSDKAppGroupContent.h | 1 + .../FBSDKShareKit/FBSDKAppGroupJoinDialog.h | 1 + .../FBSDKShareKit/FBSDKAppInviteContent.h | 1 + .../FBSDKShareKit/FBSDKAppInviteDialog.h | 1 + .../FBSDKShareKit/FBSDKCheckmarkIcon.h | 1 + .../FBSDKShareKit/FBSDKGameRequestContent.h | 1 + .../FBSDKShareKit/FBSDKGameRequestDialog.h | 1 + ...SDKGameRequestFrictionlessRecipientCache.h | 1 + .../FBSDKShareKit/FBSDKLikeActionController.h | 1 + .../FBSDKLikeActionControllerCache.h | 1 + .../FBSDKShareKit/FBSDKLikeBoxBorderView.h | 1 + .../FBSDKShareKit/FBSDKLikeBoxView.h | 1 + .../FBSDKShareKit/FBSDKLikeButton+Internal.h | 1 + .../FBSDKShareKit/FBSDKLikeButton.h | 1 + .../FBSDKShareKit/FBSDKLikeButtonPopWAV.h | 1 + .../FBSDKShareKit/FBSDKLikeControl+Internal.h | 1 + .../FBSDKShareKit/FBSDKLikeControl.h | 1 + .../FBSDKShareKit/FBSDKLikeDialog.h | 1 + .../FBSDKShareKit/FBSDKLikeObjectType.h | 1 + .../FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h | 1 + .../FBSDKShareKit/FBSDKMessageDialog.h | 1 + .../FBSDKShareKit/FBSDKMessengerIcon.h | 1 + .../FBSDKShareKit/FBSDKSendButton.h | 1 + .../FBSDKShareKit/FBSDKShareAPI.h | 1 + .../FBSDKShareKit/FBSDKShareButton.h | 1 + .../FBSDKShareKit/FBSDKShareConstants.h | 1 + .../FBSDKShareKit/FBSDKShareDefines.h | 1 + .../FBSDKShareKit/FBSDKShareDialog.h | 1 + .../FBSDKShareKit/FBSDKShareDialogMode.h | 1 + .../FBSDKShareKit/FBSDKShareError.h | 1 + .../FBSDKShareKit/FBSDKShareKit+Internal.h | 1 + .../FBSDKShareKit/FBSDKShareKit.h | 1 + .../FBSDKShareLinkContent+Internal.h | 1 + .../FBSDKShareKit/FBSDKShareLinkContent.h | 1 + .../FBSDKShareKit/FBSDKShareOpenGraphAction.h | 1 + .../FBSDKShareOpenGraphContent.h | 1 + .../FBSDKShareKit/FBSDKShareOpenGraphObject.h | 1 + ...SDKShareOpenGraphValueContainer+Internal.h | 1 + .../FBSDKShareOpenGraphValueContainer.h | 1 + .../FBSDKShareKit/FBSDKSharePhoto.h | 1 + .../FBSDKShareKit/FBSDKSharePhotoContent.h | 1 + .../FBSDKShareKit/FBSDKShareUtility.h | 1 + .../FBSDKShareKit/FBSDKShareVideo.h | 1 + .../FBSDKShareKit/FBSDKShareVideoContent.h | 1 + .../FBSDKShareKit/FBSDKSharing.h | 1 + .../FBSDKShareKit/FBSDKSharingButton.h | 1 + .../FBSDKShareKit/FBSDKSharingContent.h | 1 + .../Pods/Headers/Public/Bolts/BFAppLink.h | 1 + .../Public/Bolts/BFAppLinkNavigation.h | 1 + .../Headers/Public/Bolts/BFAppLinkResolving.h | 1 + .../BFAppLinkReturnToRefererController.h | 1 + .../Bolts/BFAppLinkReturnToRefererView.h | 1 + .../BFAppLinkReturnToRefererView_Internal.h | 1 + .../Headers/Public/Bolts/BFAppLinkTarget.h | 1 + .../Headers/Public/Bolts/BFAppLink_Internal.h | 1 + .../Public/Bolts/BFCancellationToken.h | 1 + .../Bolts/BFCancellationTokenRegistration.h | 1 + .../Public/Bolts/BFCancellationTokenSource.h | 1 + .../Pods/Headers/Public/Bolts/BFDefines.h | 1 + .../Pods/Headers/Public/Bolts/BFExecutor.h | 1 + .../Headers/Public/Bolts/BFMeasurementEvent.h | 1 + .../Bolts/BFMeasurementEvent_Internal.h | 1 + .../Pods/Headers/Public/Bolts/BFTask.h | 1 + .../Public/Bolts/BFTaskCompletionSource.h | 1 + .../Pods/Headers/Public/Bolts/BFURL.h | 1 + .../Headers/Public/Bolts/BFURL_Internal.h | 1 + .../Public/Bolts/BFWebViewAppLinkResolver.h | 1 + .../Pods/Headers/Public/Bolts/Bolts.h | 1 + .../Pods/Headers/Public/Bolts/BoltsVersion.h | 1 + .../Public/FBSDKCoreKit/FBSDKAccessToken.h | 1 + .../Public/FBSDKCoreKit/FBSDKAppEvents.h | 1 + .../FBSDKCoreKit/FBSDKAppLinkResolver.h | 1 + .../Public/FBSDKCoreKit/FBSDKAppLinkUtility.h | 1 + .../FBSDKCoreKit/FBSDKApplicationDelegate.h | 1 + .../Headers/Public/FBSDKCoreKit/FBSDKButton.h | 1 + .../Public/FBSDKCoreKit/FBSDKConstants.h | 1 + .../Public/FBSDKCoreKit/FBSDKCopying.h | 1 + .../Public/FBSDKCoreKit/FBSDKCoreKit.h | 1 + .../FBSDKGraphErrorRecoveryProcessor.h | 1 + .../Public/FBSDKCoreKit/FBSDKGraphRequest.h | 1 + .../FBSDKGraphRequestConnection.h | 1 + .../FBSDKGraphRequestDataAttachment.h | 1 + .../Headers/Public/FBSDKCoreKit/FBSDKMacros.h | 1 + .../Public/FBSDKCoreKit/FBSDKMutableCopying.h | 1 + .../Public/FBSDKCoreKit/FBSDKProfile.h | 1 + .../FBSDKCoreKit/FBSDKProfilePictureView.h | 1 + .../Public/FBSDKCoreKit/FBSDKSettings.h | 1 + .../FBSDKCoreKit/FBSDKTestUsersManager.h | 1 + .../Public/FBSDKCoreKit/FBSDKUtility.h | 1 + .../FBSDKLoginKit/FBSDKLoginButton.h | 1 + .../FBSDKLoginKit/FBSDKLoginConstants.h | 1 + .../FBSDKLoginKit/FBSDKLoginKit.h | 1 + .../FBSDKLoginKit/FBSDKLoginManager.h | 1 + .../FBSDKLoginManagerLoginResult.h | 1 + .../FBSDKLoginKit/FBSDKLoginTooltipView.h | 1 + .../FBSDKLoginKit/FBSDKTooltipView.h | 1 + .../FBSDKShareKit/FBSDKAppGroupAddDialog.h | 1 + .../FBSDKShareKit/FBSDKAppGroupContent.h | 1 + .../FBSDKShareKit/FBSDKAppGroupJoinDialog.h | 1 + .../FBSDKShareKit/FBSDKAppInviteContent.h | 1 + .../FBSDKShareKit/FBSDKAppInviteDialog.h | 1 + .../FBSDKShareKit/FBSDKGameRequestContent.h | 1 + .../FBSDKShareKit/FBSDKGameRequestDialog.h | 1 + .../FBSDKShareKit/FBSDKLikeButton.h | 1 + .../FBSDKShareKit/FBSDKLikeControl.h | 1 + .../FBSDKShareKit/FBSDKLikeObjectType.h | 1 + .../FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h | 1 + .../FBSDKShareKit/FBSDKMessageDialog.h | 1 + .../FBSDKShareKit/FBSDKSendButton.h | 1 + .../FBSDKShareKit/FBSDKShareAPI.h | 1 + .../FBSDKShareKit/FBSDKShareButton.h | 1 + .../FBSDKShareKit/FBSDKShareConstants.h | 1 + .../FBSDKShareKit/FBSDKShareDialog.h | 1 + .../FBSDKShareKit/FBSDKShareDialogMode.h | 1 + .../FBSDKShareKit/FBSDKShareKit.h | 1 + .../FBSDKShareKit/FBSDKShareLinkContent.h | 1 + .../FBSDKShareKit/FBSDKShareOpenGraphAction.h | 1 + .../FBSDKShareOpenGraphContent.h | 1 + .../FBSDKShareKit/FBSDKShareOpenGraphObject.h | 1 + .../FBSDKShareOpenGraphValueContainer.h | 1 + .../FBSDKShareKit/FBSDKSharePhoto.h | 1 + .../FBSDKShareKit/FBSDKSharePhotoContent.h | 1 + .../FBSDKShareKit/FBSDKShareVideo.h | 1 + .../FBSDKShareKit/FBSDKShareVideoContent.h | 1 + .../FBSDKShareKit/FBSDKSharing.h | 1 + .../FBSDKShareKit/FBSDKSharingButton.h | 1 + .../FBSDKShareKit/FBSDKSharingContent.h | 1 + Unit-2-Journal/Pods/Manifest.lock | 33 + .../Pods/Pods.xcodeproj/project.pbxproj | 2091 +++++++++++++++++ .../Bolts/Bolts-Private.xcconfig | 5 + .../Target Support Files/Bolts/Bolts-dummy.m | 5 + .../Bolts/Bolts-prefix.pch | 4 + .../Target Support Files/Bolts/Bolts.xcconfig | 0 .../FBSDKCoreKit-Private.xcconfig | 6 + .../FBSDKCoreKit/FBSDKCoreKit-dummy.m | 5 + .../FBSDKCoreKit/FBSDKCoreKit-prefix.pch | 4 + .../FBSDKCoreKit/FBSDKCoreKit.xcconfig | 1 + .../FBSDKLoginKit-Private.xcconfig | 6 + .../FBSDKLoginKit/FBSDKLoginKit-dummy.m | 5 + .../FBSDKLoginKit/FBSDKLoginKit-prefix.pch | 4 + .../FBSDKLoginKit/FBSDKLoginKit.xcconfig | 1 + .../FBSDKShareKit-Private.xcconfig | 6 + .../FBSDKShareKit/FBSDKShareKit-dummy.m | 5 + .../FBSDKShareKit/FBSDKShareKit-prefix.pch | 4 + .../FBSDKShareKit/FBSDKShareKit.xcconfig | 1 + .../Pods/Pods-acknowledgements.markdown | 99 + .../Pods/Pods-acknowledgements.plist | 141 ++ .../Target Support Files/Pods/Pods-dummy.m | 5 + .../Pods/Pods-resources.sh | 95 + .../Pods/Pods.debug.xcconfig | 5 + .../Pods/Pods.release.xcconfig | 5 + .../Unit-2-Journal.xcodeproj/project.pbxproj | 389 +++ .../contents.xcworkspacedata | 7 + .../contents.xcworkspacedata | 10 + Unit-2-Journal/Unit-2-Journal/AppDelegate.h | 25 + Unit-2-Journal/Unit-2-Journal/AppDelegate.m | 140 ++ .../AppIcon.appiconset/Contents.json | 68 + .../Base.lproj/LaunchScreen.storyboard | 28 + .../Unit-2-Journal/Base.lproj/Main.storyboard | 25 + Unit-2-Journal/Unit-2-Journal/Info.plist | 91 + .../.xccurrentversion | 8 + .../Unit_2_Journal.xcdatamodel/contents | 4 + .../Unit-2-Journal/ViewController.h | 15 + .../Unit-2-Journal/ViewController.m | 31 + Unit-2-Journal/Unit-2-Journal/main.m | 16 + 609 files changed, 41820 insertions(+) create mode 100644 .DS_Store create mode 100644 Unit-2-Journal/.DS_Store create mode 100644 Unit-2-Journal/Podfile create mode 100644 Unit-2-Journal/Podfile.lock create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationToken.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationToken.m create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/BFDefines.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/BFExecutor.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/BFExecutor.m create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTask.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTask.m create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.m create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/Bolts.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/Bolts.m create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/Common/BoltsVersion.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLink.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLink.m create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.m create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkResolving.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.m create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.m create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.m create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLink_Internal.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.m create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFMeasurementEvent_Internal.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFURL.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFURL.m create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFURL_Internal.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.h create mode 100644 Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.m create mode 100644 Unit-2-Journal/Pods/Bolts/LICENSE create mode 100644 Unit-2-Journal/Pods/Bolts/README.md create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/LICENSE create mode 100644 Unit-2-Journal/Pods/FBSDKCoreKit/README.mdown create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/LICENSE create mode 100644 Unit-2-Journal/Pods/FBSDKLoginKit/README.mdown create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/LICENSE create mode 100644 Unit-2-Journal/Pods/FBSDKShareKit/README.mdown create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLink.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkNavigation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkResolving.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView_Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkTarget.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLink_Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFCancellationToken.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFCancellationTokenRegistration.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFCancellationTokenSource.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFDefines.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFExecutor.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFMeasurementEvent.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFMeasurementEvent_Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFTask.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFTaskCompletionSource.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFURL.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFURL_Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BFWebViewAppLinkResolver.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/Bolts.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Bolts/BoltsVersion.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessToken.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEvents.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkResolver.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkUtility.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKApplicationDelegate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKButton.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKConstants.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCopying.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEvents+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsDeviceInfo.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsStateManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsUtility.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKPaymentObserver.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKTimeSpentData.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKBoltsMeasurementEventListener.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Base64/FBSDKBase64.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPICrypto.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIProtocol.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIProtocolType.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIRequest+Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIRequest.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIResponse.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKURLOpening.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Cryptography/FBSDKCrypto.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ErrorRecovery/FBSDKErrorRecoveryAttempter.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKAudioResourceLoader.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKContainerViewController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKDynamicFrameworkLoader.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKError.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKInternalUtility.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKLogger.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKMath.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKMonotonicTime.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKSystemAccountStoreAdapter.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKTriStateBOOL.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKTypeUtility.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequest+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestBody.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestConnection+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestMetadata.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestPiggybackManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKURLConnection.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKDialogConfiguration.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKErrorConfiguration.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfiguration+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfiguration.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfigurationManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCache.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV3.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV3_17.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV3_21.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV4.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCaching.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKKeychainStore.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKKeychainStoreViaBundleID.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKButton+Subclass.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKCloseIcon.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKColor.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKIcon.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKLogo.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKMaleSilhouetteIcon.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKUIUtility.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKViewImpressionTracker.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/WebDialog/FBSDKWebDialog.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/WebDialog/FBSDKWebDialogView.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphRequest.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphRequestConnection.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKMacros.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKMutableCopying.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKProfile.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKProfilePictureView.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKSettings.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKTestUsersManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKUtility.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginCompletion+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginCompletion.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginError.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLogger.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginUtility.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/_FBSDKLoginRecoveryAttempter.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCheckmarkIcon.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestFrictionlessRecipientCache.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionControllerCache.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxBorderView.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxView.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButtonPopWAV.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeDialog.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessengerIcon.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDefines.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareError.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer+Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareUtility.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLink.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkNavigation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkResolving.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererController.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererView.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererView_Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkTarget.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLink_Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFCancellationToken.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFCancellationTokenRegistration.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFCancellationTokenSource.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFDefines.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFExecutor.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFMeasurementEvent.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFMeasurementEvent_Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFTask.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFTaskCompletionSource.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFURL.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFURL_Internal.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BFWebViewAppLinkResolver.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/Bolts.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Bolts/BoltsVersion.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAccessToken.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppEvents.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkResolver.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkUtility.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKApplicationDelegate.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKButton.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKConstants.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKCopying.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKCoreKit.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphRequest.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphRequestConnection.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKMacros.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKMutableCopying.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKProfile.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKProfilePictureView.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKSettings.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKTestUsersManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKUtility.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h create mode 100644 Unit-2-Journal/Pods/Manifest.lock create mode 100644 Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj create mode 100644 Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-dummy.m create mode 100644 Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-prefix.pch create mode 100644 Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-dummy.m create mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch create mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-dummy.m create mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch create mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-dummy.m create mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch create mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown create mode 100644 Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist create mode 100644 Unit-2-Journal/Pods/Target Support Files/Pods/Pods-dummy.m create mode 100755 Unit-2-Journal/Pods/Target Support Files/Pods/Pods-resources.sh create mode 100644 Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig create mode 100644 Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj create mode 100644 Unit-2-Journal/Unit-2-Journal.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Unit-2-Journal/Unit-2-Journal.xcworkspace/contents.xcworkspacedata create mode 100644 Unit-2-Journal/Unit-2-Journal/AppDelegate.h create mode 100644 Unit-2-Journal/Unit-2-Journal/AppDelegate.m create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard create mode 100644 Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard create mode 100644 Unit-2-Journal/Unit-2-Journal/Info.plist create mode 100644 Unit-2-Journal/Unit-2-Journal/Unit_2_Journal.xcdatamodeld/.xccurrentversion create mode 100644 Unit-2-Journal/Unit-2-Journal/Unit_2_Journal.xcdatamodeld/Unit_2_Journal.xcdatamodel/contents create mode 100644 Unit-2-Journal/Unit-2-Journal/ViewController.h create mode 100644 Unit-2-Journal/Unit-2-Journal/ViewController.m create mode 100644 Unit-2-Journal/Unit-2-Journal/main.m diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..61cdf9c5c281af8bc1f8d299d8141280031984d5 GIT binary patch literal 6148 zcmeHK%Wl&^6g|_1#wij638b>~4i*8WO-tD|qzNLt6xGl!00q0YT1&1S*-j%AMe>dh z;Qb%)7kog!fZqsr9zk&fSwe*7T6fO%%sn%nV|m5{fHnH=I#32+kaH}oQt=z(?c8T< zN!9R1Ci>_h!EKztZ3i>ixW9s{j4xJ!!sFg1b_sMULg;4~o zz^AX=CZ30+9prMq&&zd_!@!9mu{sp-7;WsLg{QF4%6G%|&UI759%bG`6Hf@$A~QWO zJ3Gg?gy#t9K~vnq2KhrV#hB`B1o_eMfVgkTi{mksz+A2~NP0?~A5JguleAhrV@u10 z3oAvVw92o`rB~K*G_X=T?I#U8ej)CB*K<_dvD4#8{EP(o72D3f?+v=;tGiK{+J5N8 zQ`DCSe&|MnM$`}8q+7n$iM>r zs}*yzc4ss)jO#aQJC6>+;k)-AK7RWA<*S%87%k$$t|*+qHwxw|a%#n45QRsSH|b-- z)wr+rX3Nwk+ zLdGPOP*RyXVlYXkdQ;`q6=o789ZVfQm>QX>6ABZfQ~#z&2dhierB*;IkXK+?-j@0P z-}>|UKTpzkS^=%Vf29B`G_7WXrlj`PnaT0J)+B#T&W-0~5(R|{wH=FqZ^dim!l=#U X0byNXCXs5$^pAj$K^IzqzpB7boT{Xv literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fcddac4a88110c889c7a08020d74e084f101f12d GIT binary patch literal 6148 zcmeHKO-sW-5Pe&VRut*6c*@a>g8qU~s-P!PdbeMKHW+Cwdd$!0kMaljZ|a+!p){$A zCn+)mvu`t*H`#p~vRMG3JsX|^O#ltLU~QMp7bf?`*Q{odZDNQu9*|*lndO6iwwCRI zO;kYEZU@)MF~mJq)-Uh#j=UBZ^rJ;I_JI9zHcq(aIR+T(x-WU}6<*zV({f(8spK7? zizklc1;;p}U$OcO6UKVTD%_6>xAha3BYopIWu_xMvto|Na=kd$`N~`me^Kw1btV{N z%9=gaxA(uK!<^#`iv?RZSHKl;1vWte?%86EJwmqp>ePjlxL`Q^P`$cW6PWM5P8hVg#i#o>*RLSSTtT!44n6o*e9i65`WYKZ)rG zsiL>8fGbc|U`sEXvj3ldfBr9%{K^$@1^$%+q29Uev^gc)Th}Hhdu>9$ql-yip}3^5 i6SrdK%2wQ>M`JvZ4ly+>6d9rUk3f{c8&}{@75D@(K4)eC literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Podfile b/Unit-2-Journal/Podfile new file mode 100644 index 0000000..a6c1178 --- /dev/null +++ b/Unit-2-Journal/Podfile @@ -0,0 +1,3 @@ +pod 'FBSDKCoreKit', '~> 4.7' +pod 'FBSDKShareKit', '~> 4.7' +pod 'FBSDKLoginKit', '~> 4.7' \ No newline at end of file diff --git a/Unit-2-Journal/Podfile.lock b/Unit-2-Journal/Podfile.lock new file mode 100644 index 0000000..06c3be1 --- /dev/null +++ b/Unit-2-Journal/Podfile.lock @@ -0,0 +1,33 @@ +PODS: + - Bolts (1.3.0): + - Bolts/AppLinks (= 1.3.0) + - Bolts/Tasks (= 1.3.0) + - Bolts/AppLinks (1.3.0): + - Bolts/Tasks + - Bolts/Tasks (1.3.0) + - FBSDKCoreKit (4.7.0): + - Bolts (~> 1.1) + - FBSDKCoreKit/arc (= 4.7.0) + - FBSDKCoreKit/no-arc (= 4.7.0) + - FBSDKCoreKit/arc (4.7.0): + - Bolts (~> 1.1) + - FBSDKCoreKit/no-arc (4.7.0): + - Bolts (~> 1.1) + - FBSDKCoreKit/arc + - FBSDKLoginKit (4.7.0): + - FBSDKCoreKit + - FBSDKShareKit (4.7.0): + - FBSDKCoreKit + +DEPENDENCIES: + - FBSDKCoreKit (~> 4.7) + - FBSDKLoginKit (~> 4.7) + - FBSDKShareKit (~> 4.7) + +SPEC CHECKSUMS: + Bolts: 805a4a87413e49d4a0c2b7d469084cbc46b09342 + FBSDKCoreKit: eb580bfc2040ad44f4c0b4f4d0befb1d35bce59c + FBSDKLoginKit: 01bce8dd3f3a26a023b0ba4ffdde7ef5062889fe + FBSDKShareKit: 1f927bb05e4d36a99d5d5bf2f4b1ff294ce3e15c + +COCOAPODS: 0.38.2 diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationToken.h b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationToken.h new file mode 100644 index 0000000..90a20d7 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationToken.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +#import + +/*! + A block that will be called when a token is cancelled. + */ +typedef void(^BFCancellationBlock)(); + +/*! + The consumer view of a CancellationToken. + Propagates notification that operations should be canceled. + A BFCancellationToken has methods to inspect whether the token has been cancelled. + */ +@interface BFCancellationToken : NSObject + +/*! + Whether cancellation has been requested for this token source. + */ +@property (nonatomic, assign, readonly, getter=isCancellationRequested) BOOL cancellationRequested; + +/*! + Register a block to be notified when the token is cancelled. + If the token is already cancelled the delegate will be notified immediately. + */ +- (BFCancellationTokenRegistration *)registerCancellationObserverWithBlock:(BFCancellationBlock)block; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationToken.m b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationToken.m new file mode 100644 index 0000000..b5006d0 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationToken.m @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import "BFCancellationToken.h" +#import "BFCancellationTokenRegistration.h" + +@interface BFCancellationToken () + +@property (atomic, assign, getter=isCancellationRequested) BOOL cancellationRequested; +@property (nonatomic, strong) NSMutableArray *registrations; +@property (nonatomic, strong) NSObject *lock; +@property (nonatomic) BOOL disposed; + +@end + +@interface BFCancellationTokenRegistration (BFCancellationToken) + ++ (instancetype)registrationWithToken:(BFCancellationToken *)token delegate:(BFCancellationBlock)delegate; + +- (void)notifyDelegate; + +@end + +@implementation BFCancellationToken + +#pragma mark - Initializer + +- (instancetype)init { + if (self = [super init]) { + _registrations = [NSMutableArray array]; + _lock = [NSObject new]; + } + return self; +} + +#pragma mark - Custom Setters/Getters + +- (BOOL)isCancellationRequested { + @synchronized(self.lock) { + [self throwIfDisposed]; + return _cancellationRequested; + } +} + +- (void)cancel { + NSArray *registrations; + @synchronized(self.lock) { + [self throwIfDisposed]; + if (_cancellationRequested) { + return; + } + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(cancelPrivate) object:nil]; + _cancellationRequested = YES; + registrations = [self.registrations copy]; + } + + [self notifyCancellation:registrations]; +} + +- (void)notifyCancellation:(NSArray *)registrations { + for (BFCancellationTokenRegistration *registration in registrations) { + [registration notifyDelegate]; + } +} + +- (BFCancellationTokenRegistration *)registerCancellationObserverWithBlock:(BFCancellationBlock)block { + @synchronized(self.lock) { + BFCancellationTokenRegistration *registration = [BFCancellationTokenRegistration registrationWithToken:self delegate:[block copy]]; + [self.registrations addObject:registration]; + + return registration; + } +} + +- (void)unregisterRegistration:(BFCancellationTokenRegistration *)registration { + @synchronized(self.lock) { + [self throwIfDisposed]; + [self.registrations removeObject:registration]; + } +} + +// Delay on a non-public method to prevent interference with a user calling performSelector or +// cancelPreviousPerformRequestsWithTarget on the public method +- (void)cancelPrivate { + [self cancel]; +} + +- (void)cancelAfterDelay:(int)millis { + [self throwIfDisposed]; + if (millis < -1) { + [NSException raise:NSInvalidArgumentException format:@"Delay must be >= -1"]; + } + + if (millis == 0) { + [self cancel]; + return; + } + + @synchronized(self.lock) { + [self throwIfDisposed]; + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(cancelPrivate) object:nil]; + if (self.cancellationRequested) { + return; + } + + if (millis != -1) { + double delay = (double)millis / 1000; + [self performSelector:@selector(cancelPrivate) withObject:nil afterDelay:delay]; + } + } +} + +- (void)dispose { + @synchronized(self.lock) { + if (self.disposed) { + return; + } + self.disposed = YES; + for (BFCancellationTokenRegistration *registration in self.registrations) { + [registration dispose]; + } + [self.registrations removeAllObjects]; + } +} + +- (void)throwIfDisposed { + if (self.disposed) { + [NSException raise:NSInternalInconsistencyException format:@"Object already disposed"]; + } +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h new file mode 100644 index 0000000..3e7b711 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +/*! + Represents the registration of a cancellation observer with a cancellation token. + Can be used to unregister the observer at a later time. + */ +@interface BFCancellationTokenRegistration : NSObject + +/*! + Removes the cancellation observer registered with the token + and releases all resources associated with this registration. + */ +- (void)dispose; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m new file mode 100644 index 0000000..9c8a7ae --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import "BFCancellationTokenRegistration.h" + +#import "BFCancellationToken.h" + +@interface BFCancellationTokenRegistration () + +@property (nonatomic, weak) BFCancellationToken *token; +@property (nonatomic, strong) BFCancellationBlock cancellationObserverBlock; +@property (nonatomic, strong) NSObject *lock; +@property (nonatomic) BOOL disposed; + +@end + +@interface BFCancellationToken (BFCancellationTokenRegistration) + +- (void)unregisterRegistration:(BFCancellationTokenRegistration *)registration; + +@end + +@implementation BFCancellationTokenRegistration + ++ (instancetype)registrationWithToken:(BFCancellationToken *)token delegate:(BFCancellationBlock)delegate { + BFCancellationTokenRegistration *registration = [BFCancellationTokenRegistration new]; + registration.token = token; + registration.cancellationObserverBlock = delegate; + return registration; +} + +- (instancetype)init { + if (self = [super init]) { + _lock = [NSObject new]; + } + return self; +} + +- (void)dispose { + @synchronized(self.lock) { + if (self.disposed) { + return; + } + self.disposed = YES; + } + + BFCancellationToken *token = self.token; + if (token != nil) { + [token unregisterRegistration:self]; + self.token = nil; + } + self.cancellationObserverBlock = nil; +} + +- (void)notifyDelegate { + @synchronized(self.lock) { + [self throwIfDisposed]; + self.cancellationObserverBlock(); + } +} + +- (void)throwIfDisposed { + NSAssert(!self.disposed, @"Object already disposed"); +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h new file mode 100644 index 0000000..bd6e7a1 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +@class BFCancellationToken; + +/*! + BFCancellationTokenSource represents the producer side of a CancellationToken. + Signals to a CancellationToken that it should be canceled. + It is a cancellation token that also has methods + for changing the state of a token by cancelling it. + */ +@interface BFCancellationTokenSource : NSObject + +/*! + Creates a new cancellation token source. + */ ++ (instancetype)cancellationTokenSource; + +/*! + The cancellation token associated with this CancellationTokenSource. + */ +@property (nonatomic, strong, readonly) BFCancellationToken *token; + +/*! + Whether cancellation has been requested for this token source. + */ +@property (nonatomic, assign, readonly, getter=isCancellationRequested) BOOL cancellationRequested; + +/*! + Cancels the token if it has not already been cancelled. + */ +- (void)cancel; + +/*! + Schedules a cancel operation on this CancellationTokenSource after the specified number of milliseconds. + @param millis The number of milliseconds to wait before completing the returned task. + If delay is `0` the cancel is executed immediately. If delay is `-1` any scheduled cancellation is stopped. + */ +- (void)cancelAfterDelay:(int)millis; + +/*! + Releases all resources associated with this token source, + including disposing of all registrations. + */ +- (void)dispose; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m new file mode 100644 index 0000000..947f725 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import "BFCancellationTokenSource.h" + +#import "BFCancellationToken.h" + +@interface BFCancellationToken (BFCancellationTokenSource) + +- (void)cancel; +- (void)cancelAfterDelay:(int)millis; + +- (void)dispose; +- (void)throwIfDisposed; + +@end + +@implementation BFCancellationTokenSource + +#pragma mark - Initializer + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _token = [BFCancellationToken new]; + + return self; +} + ++ (instancetype)cancellationTokenSource { + return [BFCancellationTokenSource new]; +} + +#pragma mark - Custom Setters/Getters + +- (BOOL)isCancellationRequested { + return _token.isCancellationRequested; +} + +- (void)cancel { + [_token cancel]; +} + +- (void)cancelAfterDelay:(int)millis { + [_token cancelAfterDelay:millis]; +} + +- (void)dispose { + [_token dispose]; +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFDefines.h b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFDefines.h new file mode 100644 index 0000000..cf7dcdf --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFDefines.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +#if __has_feature(objc_generics) || __has_extension(objc_generics) +# define BF_GENERIC(type) +#else +# define BF_GENERIC(type) +# define BFGenericType id +#endif diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFExecutor.h b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFExecutor.h new file mode 100644 index 0000000..02af9ba --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFExecutor.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +/*! + An object that can run a given block. + */ +@interface BFExecutor : NSObject + +/*! + Returns a default executor, which runs continuations immediately until the call stack gets too + deep, then dispatches to a new GCD queue. + */ ++ (instancetype)defaultExecutor; + +/*! + Returns an executor that runs continuations on the thread where the previous task was completed. + */ ++ (instancetype)immediateExecutor; + +/*! + Returns an executor that runs continuations on the main thread. + */ ++ (instancetype)mainThreadExecutor; + +/*! + Returns a new executor that uses the given block to execute continuations. + @param block The block to use. + */ ++ (instancetype)executorWithBlock:(void(^)(void(^block)()))block; + +/*! + Returns a new executor that runs continuations on the given queue. + @param queue The instance of `dispatch_queue_t` to dispatch all continuations onto. + */ ++ (instancetype)executorWithDispatchQueue:(dispatch_queue_t)queue; + +/*! + Returns a new executor that runs continuations on the given queue. + @param queue The instance of `NSOperationQueue` to run all continuations on. + */ ++ (instancetype)executorWithOperationQueue:(NSOperationQueue *)queue; + +/*! + Runs the given block using this executor's particular strategy. + @param block The block to execute. + */ +- (void)execute:(void(^)())block; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFExecutor.m b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFExecutor.m new file mode 100644 index 0000000..292e27c --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFExecutor.m @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import "BFExecutor.h" + +@interface BFExecutor () + +@property (nonatomic, copy) void(^block)(void(^block)()); + +@end + +@implementation BFExecutor + +#pragma mark - Executor methods + ++ (instancetype)defaultExecutor { + static BFExecutor *defaultExecutor = NULL; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + defaultExecutor = [self executorWithBlock:^void(void(^block)()) { + static const NSString *BFTaskDepthKey = @"BFTaskDepth"; + static const int BFTaskDefaultExecutorMaxDepth = 20; + + // We prefer to run everything possible immediately, so that there is callstack information + // when debugging. However, we don't want the stack to get too deep, so if the number of + // recursive calls to this method exceeds a certain depth, we dispatch to another GCD queue. + NSMutableDictionary *threadLocal = [[NSThread currentThread] threadDictionary]; + NSNumber *depth = threadLocal[BFTaskDepthKey]; + if (!depth) { + depth = @0; + } + if (depth.intValue > BFTaskDefaultExecutorMaxDepth) { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block); + } else { + NSNumber *previousDepth = depth; + threadLocal[BFTaskDepthKey] = @(previousDepth.intValue + 1); + @try { + block(); + } @finally { + threadLocal[BFTaskDepthKey] = previousDepth; + } + } + }]; + }); + return defaultExecutor; +} + ++ (instancetype)immediateExecutor { + static BFExecutor *immediateExecutor = NULL; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + immediateExecutor = [self executorWithBlock:^void(void(^block)()) { + block(); + }]; + }); + return immediateExecutor; +} + ++ (instancetype)mainThreadExecutor { + static BFExecutor *mainThreadExecutor = NULL; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + mainThreadExecutor = [self executorWithBlock:^void(void(^block)()) { + if (![NSThread isMainThread]) { + dispatch_async(dispatch_get_main_queue(), block); + } else { + block(); + } + }]; + }); + return mainThreadExecutor; +} + ++ (instancetype)executorWithBlock:(void(^)(void(^block)()))block { + return [[self alloc] initWithBlock:block]; +} + ++ (instancetype)executorWithDispatchQueue:(dispatch_queue_t)queue { + return [self executorWithBlock:^void(void(^block)()) { + dispatch_async(queue, block); + }]; +} + ++ (instancetype)executorWithOperationQueue:(NSOperationQueue *)queue { + return [self executorWithBlock:^void(void(^block)()) { + [queue addOperation:[NSBlockOperation blockOperationWithBlock:block]]; + }]; +} + +#pragma mark - Initializer + +- (instancetype)initWithBlock:(void(^)(void(^block)()))block { + if (self = [super init]) { + _block = block; + } + return self; +} + +#pragma mark - Execution + +- (void)execute:(void(^)())block { + self.block(block); +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTask.h b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTask.h new file mode 100644 index 0000000..827071d --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTask.h @@ -0,0 +1,259 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +#import +#import + +/*! + Error domain used if there was multiple errors on . + */ +extern NSString *const BFTaskErrorDomain; + +/*! + An exception that is thrown if there was multiple exceptions on . + */ +extern NSString *const BFTaskMultipleExceptionsException; + +@class BFExecutor; +@class BFTask; + +/*! + The consumer view of a Task. A BFTask has methods to + inspect the state of the task, and to add continuations to + be run once the task is complete. + */ +@interface BFTask BF_GENERIC(__covariant BFGenericType) : NSObject + +/*! + A block that can act as a continuation for a task. + */ +typedef id(^BFContinuationBlock)(BFTask BF_GENERIC(BFGenericType) *task); + +/*! + Creates a task that is already completed with the given result. + @param result The result for the task. + */ ++ (instancetype)taskWithResult:(BFGenericType)result; + +/*! + Creates a task that is already completed with the given error. + @param error The error for the task. + */ ++ (instancetype)taskWithError:(NSError *)error; + +/*! + Creates a task that is already completed with the given exception. + @param exception The exception for the task. + */ ++ (instancetype)taskWithException:(NSException *)exception; + +/*! + Creates a task that is already cancelled. + */ ++ (instancetype)cancelledTask; + +/*! + Returns a task that will be completed (with result == nil) once + all of the input tasks have completed. + @param tasks An `NSArray` of the tasks to use as an input. + */ ++ (instancetype)taskForCompletionOfAllTasks:(NSArray *)tasks; + +/*! + Returns a task that will be completed once all of the input tasks have completed. + If all tasks complete successfully without being faulted or cancelled the result will be + an `NSArray` of all task results in the order they were provided. + @param tasks An `NSArray` of the tasks to use as an input. + */ ++ (instancetype)taskForCompletionOfAllTasksWithResults:(NSArray *)tasks; + +/*! + Returns a task that will be completed a certain amount of time in the future. + @param millis The approximate number of milliseconds to wait before the + task will be finished (with result == nil). + */ ++ (instancetype)taskWithDelay:(int)millis; + +/*! + Returns a task that will be completed a certain amount of time in the future. + @param millis The approximate number of milliseconds to wait before the + task will be finished (with result == nil). + @param token The cancellation token (optional). + */ ++ (instancetype)taskWithDelay:(int)millis + cancellationToken:(BFCancellationToken *)token; + +/*! + Returns a task that will be completed after the given block completes with + the specified executor. + @param executor A BFExecutor responsible for determining how the + continuation block will be run. + @param block The block to immediately schedule to run with the given executor. + @returns A task that will be completed after block has run. + If block returns a BFTask, then the task returned from + this method will not be completed until that task is completed. + */ ++ (instancetype)taskFromExecutor:(BFExecutor *)executor + withBlock:(id (^)())block; + +// Properties that will be set on the task once it is completed. + +/*! + The result of a successful task. + */ +@property (nonatomic, strong, readonly) BFGenericType result; + +/*! + The error of a failed task. + */ +@property (nonatomic, strong, readonly) NSError *error; + +/*! + The exception of a failed task. + */ +@property (nonatomic, strong, readonly) NSException *exception; + +/*! + Whether this task has been cancelled. + */ +@property (nonatomic, assign, readonly, getter=isCancelled) BOOL cancelled; + +/*! + Whether this task has completed due to an error or exception. + */ +@property (nonatomic, assign, readonly, getter=isFaulted) BOOL faulted; + +/*! + Whether this task has completed. + */ +@property (nonatomic, assign, readonly, getter=isCompleted) BOOL completed; + +/*! + Enqueues the given block to be run once this task is complete. + This method uses a default execution strategy. The block will be + run on the thread where the previous task completes, unless the + the stack depth is too deep, in which case it will be run on a + dispatch queue with default priority. + @param block The block to be run once this task is complete. + @returns A task that will be completed after block has run. + If block returns a BFTask, then the task returned from + this method will not be completed until that task is completed. + */ +- (instancetype)continueWithBlock:(BFContinuationBlock)block; + +/*! + Enqueues the given block to be run once this task is complete. + This method uses a default execution strategy. The block will be + run on the thread where the previous task completes, unless the + the stack depth is too deep, in which case it will be run on a + dispatch queue with default priority. + @param block The block to be run once this task is complete. + @param cancellationToken The cancellation token (optional). + @returns A task that will be completed after block has run. + If block returns a BFTask, then the task returned from + this method will not be completed until that task is completed. + */ +- (instancetype)continueWithBlock:(BFContinuationBlock)block + cancellationToken:(BFCancellationToken *)cancellationToken; + +/*! + Enqueues the given block to be run once this task is complete. + @param executor A BFExecutor responsible for determining how the + continuation block will be run. + @param block The block to be run once this task is complete. + @returns A task that will be completed after block has run. + If block returns a BFTask, then the task returned from + this method will not be completed until that task is completed. + */ +- (instancetype)continueWithExecutor:(BFExecutor *)executor + withBlock:(BFContinuationBlock)block; +/*! + Enqueues the given block to be run once this task is complete. + @param executor A BFExecutor responsible for determining how the + continuation block will be run. + @param block The block to be run once this task is complete. + @param cancellationToken The cancellation token (optional). + @returns A task that will be completed after block has run. + If block returns a BFTask, then the task returned from + his method will not be completed until that task is completed. + */ +- (instancetype)continueWithExecutor:(BFExecutor *)executor + block:(BFContinuationBlock)block + cancellationToken:(BFCancellationToken *)cancellationToken; + +/*! + Identical to continueWithBlock:, except that the block is only run + if this task did not produce a cancellation, error, or exception. + If it did, then the failure will be propagated to the returned + task. + @param block The block to be run once this task is complete. + @returns A task that will be completed after block has run. + If block returns a BFTask, then the task returned from + this method will not be completed until that task is completed. + */ +- (instancetype)continueWithSuccessBlock:(BFContinuationBlock)block; + +/*! + Identical to continueWithBlock:, except that the block is only run + if this task did not produce a cancellation, error, or exception. + If it did, then the failure will be propagated to the returned + task. + @param block The block to be run once this task is complete. + @param cancellationToken The cancellation token (optional). + @returns A task that will be completed after block has run. + If block returns a BFTask, then the task returned from + this method will not be completed until that task is completed. + */ +- (instancetype)continueWithSuccessBlock:(BFContinuationBlock)block + cancellationToken:(BFCancellationToken *)cancellationToken; + +/*! + Identical to continueWithExecutor:withBlock:, except that the block + is only run if this task did not produce a cancellation, error, or + exception. If it did, then the failure will be propagated to the + returned task. + @param executor A BFExecutor responsible for determining how the + continuation block will be run. + @param block The block to be run once this task is complete. + @returns A task that will be completed after block has run. + If block returns a BFTask, then the task returned from + this method will not be completed until that task is completed. + */ +- (instancetype)continueWithExecutor:(BFExecutor *)executor + withSuccessBlock:(BFContinuationBlock)block; + +/*! + Identical to continueWithExecutor:withBlock:, except that the block + is only run if this task did not produce a cancellation, error, or + exception. If it did, then the failure will be propagated to the + returned task. + @param executor A BFExecutor responsible for determining how the + continuation block will be run. + @param block The block to be run once this task is complete. + @param cancellationToken The cancellation token (optional). + @returns A task that will be completed after block has run. + If block returns a BFTask, then the task returned from + this method will not be completed until that task is completed. + */ +- (instancetype)continueWithExecutor:(BFExecutor *)executor + successBlock:(BFContinuationBlock)block + cancellationToken:(BFCancellationToken *)cancellationToken; + +/*! + Waits until this operation is completed. + This method is inefficient and consumes a thread resource while + it's running. It should be avoided. This method logs a warning + message if it is used on the main thread. + */ +- (void)waitUntilFinished; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTask.m b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTask.m new file mode 100644 index 0000000..4985cfa --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTask.m @@ -0,0 +1,470 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import "BFTask.h" + +#import + +#import "Bolts.h" + +__attribute__ ((noinline)) void warnBlockingOperationOnMainThread() { + NSLog(@"Warning: A long-running operation is being executed on the main thread. \n" + " Break on warnBlockingOperationOnMainThread() to debug."); +} + +NSString *const BFTaskErrorDomain = @"bolts"; +NSString *const BFTaskMultipleExceptionsException = @"BFMultipleExceptionsException"; + +@interface BFTask () { + id _result; + NSError *_error; + NSException *_exception; +} + +@property (atomic, assign, readwrite, getter=isCancelled) BOOL cancelled; +@property (atomic, assign, readwrite, getter=isFaulted) BOOL faulted; +@property (atomic, assign, readwrite, getter=isCompleted) BOOL completed; + +@property (nonatomic, strong) NSObject *lock; +@property (nonatomic, strong) NSCondition *condition; +@property (nonatomic, strong) NSMutableArray *callbacks; + +@end + +@implementation BFTask + +#pragma mark - Initializer + +- (instancetype)init { + if (self = [super init]) { + _lock = [[NSObject alloc] init]; + _condition = [[NSCondition alloc] init]; + _callbacks = [NSMutableArray array]; + } + return self; +} + +#pragma mark - Task Class methods + ++ (instancetype)taskWithResult:(id)result { + BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; + tcs.result = result; + return tcs.task; +} + ++ (instancetype)taskWithError:(NSError *)error { + BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; + tcs.error = error; + return tcs.task; +} + ++ (instancetype)taskWithException:(NSException *)exception { + BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; + tcs.exception = exception; + return tcs.task; +} + ++ (instancetype)cancelledTask { + BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; + [tcs cancel]; + return tcs.task; +} + ++ (instancetype)taskForCompletionOfAllTasks:(NSArray *)tasks { + __block int32_t total = (int32_t)tasks.count; + if (total == 0) { + return [self taskWithResult:nil]; + } + + __block int32_t cancelled = 0; + NSObject *lock = [[NSObject alloc] init]; + NSMutableArray *errors = [NSMutableArray array]; + NSMutableArray *exceptions = [NSMutableArray array]; + + BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; + for (BFTask *task in tasks) { + [task continueWithBlock:^id(BFTask *task) { + if (task.exception) { + @synchronized (lock) { + [exceptions addObject:task.exception]; + } + } else if (task.error) { + @synchronized (lock) { + [errors addObject:task.error]; + } + } else if (task.cancelled) { + OSAtomicIncrement32(&cancelled); + } + + if (OSAtomicDecrement32(&total) == 0) { + if (exceptions.count > 0) { + if (exceptions.count == 1) { + tcs.exception = [exceptions firstObject]; + } else { + NSException *exception = + [NSException exceptionWithName:BFTaskMultipleExceptionsException + reason:@"There were multiple exceptions." + userInfo:@{ @"exceptions": exceptions }]; + tcs.exception = exception; + } + } else if (errors.count > 0) { + if (errors.count == 1) { + tcs.error = [errors firstObject]; + } else { + NSError *error = [NSError errorWithDomain:BFTaskErrorDomain + code:kBFMultipleErrorsError + userInfo:@{ @"errors": errors }]; + tcs.error = error; + } + } else if (cancelled > 0) { + [tcs cancel]; + } else { + tcs.result = nil; + } + } + return nil; + }]; + } + return tcs.task; +} + ++ (instancetype)taskForCompletionOfAllTasksWithResults:(NSArray *)tasks { + return [[self taskForCompletionOfAllTasks:tasks] continueWithSuccessBlock:^id(BFTask *task) { + return [tasks valueForKey:@"result"]; + }]; +} + ++ (instancetype)taskWithDelay:(int)millis { + BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; + dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, millis * NSEC_PER_MSEC); + dispatch_after(popTime, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ + tcs.result = nil; + }); + return tcs.task; +} + ++ (instancetype)taskWithDelay:(int)millis + cancellationToken:(BFCancellationToken *)token { + if (token.cancellationRequested) { + return [BFTask cancelledTask]; + } + + BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; + dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, millis * NSEC_PER_MSEC); + dispatch_after(popTime, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ + if (token.cancellationRequested) { + [tcs cancel]; + return; + } + tcs.result = nil; + }); + return tcs.task; +} + ++ (instancetype)taskFromExecutor:(BFExecutor *)executor + withBlock:(id (^)())block { + return [[self taskWithResult:nil] continueWithExecutor:executor withBlock:^id(BFTask *task) { + return block(); + }]; +} + +#pragma mark - Custom Setters/Getters + +- (id)result { + @synchronized(self.lock) { + return _result; + } +} + +- (void)setResult:(id)result { + if (![self trySetResult:result]) { + [NSException raise:NSInternalInconsistencyException + format:@"Cannot set the result on a completed task."]; + } +} + +- (BOOL)trySetResult:(id)result { + @synchronized(self.lock) { + if (self.completed) { + return NO; + } + self.completed = YES; + _result = result; + [self runContinuations]; + return YES; + } +} + +- (NSError *)error { + @synchronized(self.lock) { + return _error; + } +} + +- (void)setError:(NSError *)error { + if (![self trySetError:error]) { + [NSException raise:NSInternalInconsistencyException + format:@"Cannot set the error on a completed task."]; + } +} + +- (BOOL)trySetError:(NSError *)error { + @synchronized(self.lock) { + if (self.completed) { + return NO; + } + self.completed = YES; + self.faulted = YES; + _error = error; + [self runContinuations]; + return YES; + } +} + +- (NSException *)exception { + @synchronized(self.lock) { + return _exception; + } +} + +- (void)setException:(NSException *)exception { + if (![self trySetException:exception]) { + [NSException raise:NSInternalInconsistencyException + format:@"Cannot set the exception on a completed task."]; + } +} + +- (BOOL)trySetException:(NSException *)exception { + @synchronized(self.lock) { + if (self.completed) { + return NO; + } + self.completed = YES; + self.faulted = YES; + _exception = exception; + [self runContinuations]; + return YES; + } +} + +- (BOOL)isCancelled { + @synchronized(self.lock) { + return _cancelled; + } +} + +- (BOOL)isFaulted { + @synchronized(self.lock) { + return _faulted; + } +} + +- (void)cancel { + @synchronized(self.lock) { + if (![self trySetCancelled]) { + [NSException raise:NSInternalInconsistencyException + format:@"Cannot cancel a completed task."]; + } + } +} + +- (BOOL)trySetCancelled { + @synchronized(self.lock) { + if (self.completed) { + return NO; + } + self.completed = YES; + self.cancelled = YES; + [self runContinuations]; + return YES; + } +} + +- (BOOL)isCompleted { + @synchronized(self.lock) { + return _completed; + } +} + +- (void)setCompleted { + @synchronized(self.lock) { + _completed = YES; + } +} + +- (void)runContinuations { + @synchronized(self.lock) { + [self.condition lock]; + [self.condition broadcast]; + [self.condition unlock]; + for (void (^callback)() in self.callbacks) { + callback(); + } + [self.callbacks removeAllObjects]; + } +} + +#pragma mark - Chaining methods + +- (instancetype)continueWithExecutor:(BFExecutor *)executor + withBlock:(BFContinuationBlock)block { + return [self continueWithExecutor:executor block:block cancellationToken:nil]; +} + +- (instancetype)continueWithExecutor:(BFExecutor *)executor + block:(BFContinuationBlock)block + cancellationToken:(BFCancellationToken *)cancellationToken { + BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; + + // Capture all of the state that needs to used when the continuation is complete. + void (^wrappedBlock)() = ^() { + [executor execute:^{ + if (cancellationToken.cancellationRequested) { + [tcs cancel]; + return; + } + + id result = nil; + @try { + result = block(self); + } @catch (NSException *exception) { + tcs.exception = exception; + return; + } + + if ([result isKindOfClass:[BFTask class]]) { + + id (^setupWithTask) (BFTask *) = ^id(BFTask *task) { + if (cancellationToken.cancellationRequested || task.cancelled) { + [tcs cancel]; + } else if (task.exception) { + tcs.exception = task.exception; + } else if (task.error) { + tcs.error = task.error; + } else { + tcs.result = task.result; + } + return nil; + }; + + BFTask *resultTask = (BFTask *)result; + + if (resultTask.completed) { + setupWithTask(resultTask); + } else { + [resultTask continueWithBlock:setupWithTask]; + } + + } else { + tcs.result = result; + } + }]; + }; + + BOOL completed; + @synchronized(self.lock) { + completed = self.completed; + if (!completed) { + [self.callbacks addObject:[wrappedBlock copy]]; + } + } + if (completed) { + wrappedBlock(); + } + + return tcs.task; +} + +- (instancetype)continueWithBlock:(BFContinuationBlock)block { + return [self continueWithExecutor:[BFExecutor defaultExecutor] block:block cancellationToken:nil]; +} + +- (instancetype)continueWithBlock:(BFContinuationBlock)block + cancellationToken:(BFCancellationToken *)cancellationToken { + return [self continueWithExecutor:[BFExecutor defaultExecutor] block:block cancellationToken:cancellationToken]; +} + +- (instancetype)continueWithExecutor:(BFExecutor *)executor + withSuccessBlock:(BFContinuationBlock)block { + return [self continueWithExecutor:executor successBlock:block cancellationToken:nil]; +} + +- (instancetype)continueWithExecutor:(BFExecutor *)executor + successBlock:(BFContinuationBlock)block + cancellationToken:(BFCancellationToken *)cancellationToken { + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + return [self continueWithExecutor:executor block:^id(BFTask *task) { + if (task.faulted || task.cancelled) { + return task; + } else { + return block(task); + } + } cancellationToken:cancellationToken]; +} + +- (instancetype)continueWithSuccessBlock:(BFContinuationBlock)block { + return [self continueWithExecutor:[BFExecutor defaultExecutor] successBlock:block cancellationToken:nil]; +} + +- (instancetype)continueWithSuccessBlock:(BFContinuationBlock)block + cancellationToken:(BFCancellationToken *)cancellationToken { + return [self continueWithExecutor:[BFExecutor defaultExecutor] successBlock:block cancellationToken:cancellationToken]; +} + +#pragma mark - Syncing Task (Avoid it) + +- (void)warnOperationOnMainThread { + warnBlockingOperationOnMainThread(); +} + +- (void)waitUntilFinished { + if ([NSThread isMainThread]) { + [self warnOperationOnMainThread]; + } + + @synchronized(self.lock) { + if (self.completed) { + return; + } + [self.condition lock]; + } + [self.condition wait]; + [self.condition unlock]; +} + +#pragma mark - NSObject + +- (NSString *)description { + // Acquire the data from the locked properties + BOOL completed; + BOOL cancelled; + BOOL faulted; + + @synchronized(self.lock) { + completed = self.completed; + cancelled = self.cancelled; + faulted = self.faulted; + } + + // Description string includes status information and, if available, the + // result since in some ways this is what a promise actually "is". + return [NSString stringWithFormat:@"<%@: %p; completed = %@; cancelled = %@; faulted = %@;%@>", + NSStringFromClass([self class]), + self, + completed ? @"YES" : @"NO", + cancelled ? @"YES" : @"NO", + faulted ? @"YES" : @"NO", + completed ? [NSString stringWithFormat:@" result:%@", _result] : @""]; +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.h b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.h new file mode 100644 index 0000000..23366c1 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.h @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +#import + +@class BFTask BF_GENERIC(BFGenericType); + +/*! + A BFTaskCompletionSource represents the producer side of tasks. + It is a task that also has methods for changing the state of the + task by settings its completion values. + */ +@interface BFTaskCompletionSource BF_GENERIC(__covariant BFGenericType) : NSObject + +/*! + Creates a new unfinished task. + */ ++ (instancetype)taskCompletionSource; + +/*! + The task associated with this TaskCompletionSource. + */ +@property (nonatomic, strong, readonly) BFTask BF_GENERIC(BFGenericType) *task; + +/*! + Completes the task by setting the result. + Attempting to set this for a completed task will raise an exception. + @param result The result of the task. + */ +- (void)setResult:(BFGenericType)result; + +/*! + Completes the task by setting the error. + Attempting to set this for a completed task will raise an exception. + @param error The error for the task. + */ +- (void)setError:(NSError *)error; + +/*! + Completes the task by setting an exception. + Attempting to set this for a completed task will raise an exception. + @param exception The exception for the task. + */ +- (void)setException:(NSException *)exception; + +/*! + Completes the task by marking it as cancelled. + Attempting to set this for a completed task will raise an exception. + */ +- (void)cancel; + +/*! + Sets the result of the task if it wasn't already completed. + @returns whether the new value was set. + */ +- (BOOL)trySetResult:(BFGenericType)result; + +/*! + Sets the error of the task if it wasn't already completed. + @param error The error for the task. + @returns whether the new value was set. + */ +- (BOOL)trySetError:(NSError *)error; + +/*! + Sets the exception of the task if it wasn't already completed. + @param exception The exception for the task. + @returns whether the new value was set. + */ +- (BOOL)trySetException:(NSException *)exception; + +/*! + Sets the cancellation state of the task if it wasn't already completed. + @returns whether the new value was set. + */ +- (BOOL)trySetCancelled; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.m b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.m new file mode 100644 index 0000000..bd66835 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BFTaskCompletionSource.m @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import "BFTaskCompletionSource.h" + +#import "BFTask.h" + +@interface BFTaskCompletionSource () + +@property (nonatomic, strong, readwrite) BFTask *task; + +@end + +@interface BFTask (BFTaskCompletionSource) + +- (void)setResult:(id)result; +- (void)setError:(NSError *)error; +- (void)setException:(NSException *)exception; +- (void)cancel; +- (BOOL)trySetResult:(id)result; +- (BOOL)trySetError:(NSError *)error; +- (BOOL)trySetException:(NSException *)exception; +- (BOOL)trySetCancelled; + +@end + +@implementation BFTaskCompletionSource + +#pragma mark - Initializer + ++ (instancetype)taskCompletionSource { + return [[self alloc] init]; +} + +- (instancetype)init { + if (self = [super init]) { + _task = [[BFTask alloc] init]; + } + return self; +} + +#pragma mark - Custom Setters/Getters + +- (void)setResult:(id)result { + [self.task setResult:result]; +} + +- (void)setError:(NSError *)error { + [self.task setError:error]; +} + +- (void)setException:(NSException *)exception { + [self.task setException:exception]; +} + +- (void)cancel { + [self.task cancel]; +} + +- (BOOL)trySetResult:(id)result { + return [self.task trySetResult:result]; +} + +- (BOOL)trySetError:(NSError *)error { + return [self.task trySetError:error]; +} + +- (BOOL)trySetException:(NSException *)exception { + return [self.task trySetException:exception]; +} + +- (BOOL)trySetCancelled { + return [self.task trySetCancelled]; +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/Bolts.h b/Unit-2-Journal/Pods/Bolts/Bolts/Common/Bolts.h new file mode 100644 index 0000000..35d6c7c --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/Bolts.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import +#import +#import +#import +#import +#import +#import +#import + +#if __has_include() && TARGET_OS_IPHONE && !TARGET_OS_WATCH && !TARGET_OS_TV +#import +#import +#import +#import +#import +#import +#import +#import +#import +#endif + +/*! @abstract 80175001: There were multiple errors. */ +extern NSInteger const kBFMultipleErrorsError; + +@interface Bolts : NSObject + +/*! + Returns the version of the Bolts Framework as an NSString. + @returns The NSString representation of the current version. + */ ++ (NSString *)version; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/Bolts.m b/Unit-2-Journal/Pods/Bolts/Bolts/Common/Bolts.m new file mode 100644 index 0000000..9a3e75c --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/Bolts.m @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import "Bolts.h" + +NSInteger const kBFMultipleErrorsError = 80175001; + +@implementation Bolts + ++ (NSString *)version { + return BOLTS_VERSION; +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/Common/BoltsVersion.h b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BoltsVersion.h new file mode 100644 index 0000000..afb6fcb --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/Common/BoltsVersion.h @@ -0,0 +1 @@ +#define BOLTS_VERSION @"1.3.0" diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLink.h b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLink.h new file mode 100644 index 0000000..aa89efc --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLink.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +/*! The version of the App Link protocol that this library supports */ +FOUNDATION_EXPORT NSString *const BFAppLinkVersion; + +/*! + Contains App Link metadata relevant for navigation on this device + derived from the HTML at a given URL. + */ +@interface BFAppLink : NSObject + +/*! + Creates a BFAppLink with the given list of BFAppLinkTargets and target URL. + + Generally, this will only be used by implementers of the BFAppLinkResolving protocol, + as these implementers will produce App Link metadata for a given URL. + + @param sourceURL the URL from which this App Link is derived + @param targets an ordered list of BFAppLinkTargets for this platform derived + from App Link metadata. + @param webURL the fallback web URL, if any, for the app link. + */ ++ (instancetype)appLinkWithSourceURL:(NSURL *)sourceURL + targets:(NSArray *)targets + webURL:(NSURL *)webURL; + +/*! The URL from which this BFAppLink was derived */ +@property (nonatomic, strong, readonly) NSURL *sourceURL; + +/*! + The ordered list of targets applicable to this platform that will be used + for navigation. + */ +@property (nonatomic, copy, readonly) NSArray *targets; + +/*! The fallback web URL to use if no targets are installed on this device. */ +@property (nonatomic, strong, readonly) NSURL *webURL; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLink.m b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLink.m new file mode 100644 index 0000000..77fd311 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLink.m @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import "BFAppLink_Internal.h" + +NSString *const BFAppLinkDataParameterName = @"al_applink_data"; +NSString *const BFAppLinkTargetKeyName = @"target_url"; +NSString *const BFAppLinkUserAgentKeyName = @"user_agent"; +NSString *const BFAppLinkExtrasKeyName = @"extras"; +NSString *const BFAppLinkRefererAppLink = @"referer_app_link"; +NSString *const BFAppLinkRefererAppName = @"app_name"; +NSString *const BFAppLinkRefererUrl = @"url"; +NSString *const BFAppLinkVersionKeyName = @"version"; +NSString *const BFAppLinkVersion = @"1.0"; + +@interface BFAppLink () + +@property (nonatomic, strong, readwrite) NSURL *sourceURL; +@property (nonatomic, copy, readwrite) NSArray *targets; +@property (nonatomic, strong, readwrite) NSURL *webURL; + +@property (nonatomic, assign, readwrite, getter=isBackToReferrer) BOOL backToReferrer; + +@end + +@implementation BFAppLink + ++ (instancetype)appLinkWithSourceURL:(NSURL *)sourceURL + targets:(NSArray *)targets + webURL:(NSURL *)webURL + isBackToReferrer:(BOOL)isBackToReferrer { + BFAppLink *link = [[self alloc] initWithIsBackToReferrer:isBackToReferrer]; + link.sourceURL = sourceURL; + link.targets = [targets copy]; + link.webURL = webURL; + return link; +} + ++ (instancetype)appLinkWithSourceURL:(NSURL *)sourceURL + targets:(NSArray *)targets + webURL:(NSURL *)webURL { + return [self appLinkWithSourceURL:sourceURL + targets:targets + webURL:webURL + isBackToReferrer:NO]; +} + +- (BFAppLink *)initWithIsBackToReferrer:(BOOL)backToReferrer { + if ((self = [super init])) { + _backToReferrer = backToReferrer; + } + return self; +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.h b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.h new file mode 100644 index 0000000..d459f72 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.h @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +#import + +/*! + The result of calling navigate on a BFAppLinkNavigation + */ +typedef NS_ENUM(NSInteger, BFAppLinkNavigationType) { + /*! Indicates that the navigation failed and no app was opened */ + BFAppLinkNavigationTypeFailure, + /*! Indicates that the navigation succeeded by opening the URL in the browser */ + BFAppLinkNavigationTypeBrowser, + /*! Indicates that the navigation succeeded by opening the URL in an app on the device */ + BFAppLinkNavigationTypeApp +}; + +@protocol BFAppLinkResolving; +@class BFTask; + +/*! + Represents a pending request to navigate to an App Link. Most developers will + simply use navigateToURLInBackground: to open a URL, but developers can build + custom requests with additional navigation and app data attached to them by + creating BFAppLinkNavigations themselves. + */ +@interface BFAppLinkNavigation : NSObject + +/*! + The extras for the AppLinkNavigation. This will generally contain application-specific + data that should be passed along with the request, such as advertiser or affiliate IDs or + other such metadata relevant on this device. + */ +@property (nonatomic, copy, readonly) NSDictionary *extras; + +/*! + The al_applink_data for the AppLinkNavigation. This will generally contain data common to + navigation attempts such as back-links, user agents, and other information that may be used + in routing and handling an App Link request. + */ +@property (nonatomic, copy, readonly) NSDictionary *appLinkData; + +/*! The AppLink to navigate to */ +@property (nonatomic, strong, readonly) BFAppLink *appLink; + +/*! Creates an AppLinkNavigation with the given link, extras, and App Link data */ ++ (instancetype)navigationWithAppLink:(BFAppLink *)appLink + extras:(NSDictionary *)extras + appLinkData:(NSDictionary *)appLinkData; + +/*! Performs the navigation */ +- (BFAppLinkNavigationType)navigate:(NSError **)error; + +/*! Returns a BFAppLink for the given URL */ ++ (BFTask *)resolveAppLinkInBackground:(NSURL *)destination; + +/*! Returns a BFAppLink for the given URL using the given App Link resolution strategy */ ++ (BFTask *)resolveAppLinkInBackground:(NSURL *)destination resolver:(id)resolver; + +/*! Navigates to a BFAppLink and returns whether it opened in-app or in-browser */ ++ (BFAppLinkNavigationType)navigateToAppLink:(BFAppLink *)link error:(NSError **)error; + +/*! Navigates to a URL (an asynchronous action) and returns a BFNavigationType */ ++ (BFTask *)navigateToURLInBackground:(NSURL *)destination; + +/*! + Navigates to a URL (an asynchronous action) using the given App Link resolution + strategy and returns a BFNavigationType + */ ++ (BFTask *)navigateToURLInBackground:(NSURL *)destination resolver:(id)resolver; + +/*! + Gets the default resolver to be used for App Link resolution. If the developer has not set one explicitly, + a basic, built-in resolver will be used. + */ ++ (id)defaultResolver; + +/*! + Sets the default resolver to be used for App Link resolution. Setting this to nil will revert the + default resolver to the basic, built-in resolver provided by Bolts. + */ ++ (void)setDefaultResolver:(id)resolver; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.m b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.m new file mode 100644 index 0000000..5d287be --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkNavigation.m @@ -0,0 +1,248 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +#import "BFAppLinkNavigation.h" +#import "BFTaskCompletionSource.h" +#import "BFAppLinkTarget.h" +#import "BoltsVersion.h" +#import "BFWebViewAppLinkResolver.h" +#import "BFExecutor.h" +#import "BFTask.h" +#import "BFMeasurementEvent_Internal.h" +#import "BFAppLink_Internal.h" + +FOUNDATION_EXPORT NSString *const BFAppLinkDataParameterName; +FOUNDATION_EXPORT NSString *const BFAppLinkTargetKeyName; +FOUNDATION_EXPORT NSString *const BFAppLinkUserAgentKeyName; +FOUNDATION_EXPORT NSString *const BFAppLinkExtrasKeyName; +FOUNDATION_EXPORT NSString *const BFAppLinkVersionKeyName; + +static id defaultResolver; + +@interface BFAppLinkNavigation () + +@property (nonatomic, copy, readwrite) NSDictionary *extras; +@property (nonatomic, copy, readwrite) NSDictionary *appLinkData; +@property (nonatomic, strong, readwrite) BFAppLink *appLink; + +@end + +@implementation BFAppLinkNavigation + ++ (instancetype)navigationWithAppLink:(BFAppLink *)appLink + extras:(NSDictionary *)extras + appLinkData:(NSDictionary *)appLinkData { + BFAppLinkNavigation *navigation = [[self alloc] init]; + navigation.appLink = appLink; + navigation.extras = extras; + navigation.appLinkData = appLinkData; + return navigation; +} + +- (NSString *)stringByEscapingQueryString:(NSString *)string { +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_7_0 || __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_9 + return [string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; +#else + return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, + (CFStringRef)string, + NULL, + (CFStringRef) @":/?#[]@!$&'()*+,;=", + kCFStringEncodingUTF8)); +#endif +} + +- (NSURL *)appLinkURLWithTargetURL:(NSURL *)targetUrl error:(NSError **)error { + NSMutableDictionary *appLinkData = [NSMutableDictionary dictionaryWithDictionary:self.appLinkData ?: @{}]; + + // Add applink protocol data + if (!appLinkData[BFAppLinkUserAgentKeyName]) { + appLinkData[BFAppLinkUserAgentKeyName] = [NSString stringWithFormat:@"Bolts iOS %@", BOLTS_VERSION]; + } + if (!appLinkData[BFAppLinkVersionKeyName]) { + appLinkData[BFAppLinkVersionKeyName] = BFAppLinkVersion; + } + appLinkData[BFAppLinkTargetKeyName] = [self.appLink.sourceURL absoluteString]; + appLinkData[BFAppLinkExtrasKeyName] = self.extras ?: @{}; + + // JSON-ify the applink data + NSError *jsonError = nil; + NSData *jsonBlob = [NSJSONSerialization dataWithJSONObject:appLinkData options:0 error:&jsonError]; + if (!jsonError) { + NSString *jsonString = [[NSString alloc] initWithData:jsonBlob encoding:NSUTF8StringEncoding]; + NSString *encoded = [self stringByEscapingQueryString:jsonString]; + + NSString *endUrlString = [NSString stringWithFormat:@"%@%@%@=%@", + [targetUrl absoluteString], + targetUrl.query ? @"&" : @"?", + BFAppLinkDataParameterName, + encoded]; + + return [NSURL URLWithString:endUrlString]; + } else { + if (error) { + *error = jsonError; + } + + // If there was an error encoding the app link data, fail hard. + return nil; + } +} + +- (BFAppLinkNavigationType)navigate:(NSError **)error { + NSURL *openedURL = nil; + NSError *encodingError = nil; + BFAppLinkNavigationType retType = BFAppLinkNavigationTypeFailure; + + // Find the first eligible/launchable target in the BFAppLink. + for (BFAppLinkTarget *target in self.appLink.targets) { + NSURL *appLinkAppURL = [self appLinkURLWithTargetURL:target.URL error:&encodingError]; + if (encodingError || !appLinkAppURL) { + if (error) { + *error = encodingError; + } + } else if ([[UIApplication sharedApplication] openURL:appLinkAppURL]) { + retType = BFAppLinkNavigationTypeApp; + openedURL = appLinkAppURL; + break; + } + } + + if (!openedURL && self.appLink.webURL) { + // Fall back to opening the url in the browser if available. + NSURL *appLinkBrowserURL = [self appLinkURLWithTargetURL:self.appLink.webURL error:&encodingError]; + if (encodingError || !appLinkBrowserURL) { + // If there was an error encoding the app link data, fail hard. + if (error) { + *error = encodingError; + } + } else if ([[UIApplication sharedApplication] openURL:appLinkBrowserURL]) { + // This was a browser navigation. + retType = BFAppLinkNavigationTypeBrowser; + openedURL = appLinkBrowserURL; + } + } + + [self postAppLinkNavigateEventNotificationWithTargetURL:openedURL + error:error ? *error : nil + type:retType]; + return retType; +} + +- (void)postAppLinkNavigateEventNotificationWithTargetURL:(NSURL *)outputURL error:(NSError *)error type:(BFAppLinkNavigationType)type { + NSString *const EVENT_YES_VAL = @"1"; + NSString *const EVENT_NO_VAL = @"0"; + NSMutableDictionary *logData = [[NSMutableDictionary alloc] init]; + + NSString *outputURLScheme = [outputURL scheme]; + NSString *outputURLString = [outputURL absoluteString]; + if (outputURLScheme) { + logData[@"outputURLScheme"] = outputURLScheme; + } + if (outputURLString) { + logData[@"outputURL"] = outputURLString; + } + + NSString *sourceURLString = [self.appLink.sourceURL absoluteString]; + NSString *sourceURLHost = [self.appLink.sourceURL host]; + NSString *sourceURLScheme = [self.appLink.sourceURL scheme]; + if (sourceURLString) { + logData[@"sourceURL"] = sourceURLString; + } + if (sourceURLHost) { + logData[@"sourceHost"] = sourceURLHost; + } + if (sourceURLScheme) { + logData[@"sourceScheme"] = sourceURLScheme; + } + if ([error localizedDescription]) { + logData[@"error"] = [error localizedDescription]; + } + NSString *success = nil; //no + NSString *linkType = nil; // unknown; + switch (type) { + case BFAppLinkNavigationTypeFailure: + success = EVENT_NO_VAL; + linkType = @"fail"; + break; + case BFAppLinkNavigationTypeBrowser: + success = EVENT_YES_VAL; + linkType = @"web"; + break; + case BFAppLinkNavigationTypeApp: + success = EVENT_YES_VAL; + linkType = @"app"; + break; + default: + break; + } + if (success) { + logData[@"success"] = success; + } + if (linkType) { + logData[@"type"] = linkType; + } + + if ([self.appLink isBackToReferrer]) { + [BFMeasurementEvent postNotificationForEventName:BFAppLinkNavigateBackToReferrerEventName args:logData]; + } else { + [BFMeasurementEvent postNotificationForEventName:BFAppLinkNavigateOutEventName args:logData]; + } +} + ++ (BFTask *)resolveAppLinkInBackground:(NSURL *)destination resolver:(id)resolver { + return [resolver appLinkFromURLInBackground:destination]; +} + ++ (BFTask *)resolveAppLinkInBackground:(NSURL *)destination { + return [self resolveAppLinkInBackground:destination resolver:[self defaultResolver]]; +} + ++ (BFTask *)navigateToURLInBackground:(NSURL *)destination { + return [self navigateToURLInBackground:destination + resolver:[self defaultResolver]]; +} + ++ (BFTask *)navigateToURLInBackground:(NSURL *)destination + resolver:(id)resolver { + BFTask *resolutionTask = [self resolveAppLinkInBackground:destination + resolver:resolver]; + return [resolutionTask continueWithExecutor:[BFExecutor mainThreadExecutor] + withSuccessBlock:^id(BFTask *task) { + NSError *error = nil; + BFAppLinkNavigationType result = [self navigateToAppLink:task.result + error:&error]; + if (error) { + return [BFTask taskWithError:error]; + } else { + return @(result); + } + }]; +} + ++ (BFAppLinkNavigationType)navigateToAppLink:(BFAppLink *)link error:(NSError **)error { + return [[BFAppLinkNavigation navigationWithAppLink:link + extras:nil + appLinkData:nil] navigate:error]; +} + ++ (id)defaultResolver { + if (defaultResolver) { + return defaultResolver; + } + return [BFWebViewAppLinkResolver sharedInstance]; +} + ++ (void)setDefaultResolver:(id)resolver { + defaultResolver = resolver; +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkResolving.h b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkResolving.h new file mode 100644 index 0000000..b67bdba --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkResolving.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +@class BFTask; + +/*! + Implement this protocol to provide an alternate strategy for resolving + App Links that may include pre-fetching, caching, or querying for App Link + data from an index provided by a service provider. + */ +@protocol BFAppLinkResolving + +/*! + Asynchronously resolves App Link data for a given URL. + + @param url The URL to resolve into an App Link. + @returns A BFTask that will return a BFAppLink for the given URL. + */ +- (BFTask *)appLinkFromURLInBackground:(NSURL *)url; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.h b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.h new file mode 100644 index 0000000..d19465e --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.h @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import +#import + +#import + +@class BFAppLink; +@class BFAppLinkReturnToRefererController; + +/*! + Protocol that a class can implement in order to be notified when the user has navigated back + to the referer of an App Link. + */ +@protocol BFAppLinkReturnToRefererControllerDelegate + +@optional + +/*! Called when the user has tapped to navigate, but before the navigation has been performed. */ +- (void)returnToRefererController:(BFAppLinkReturnToRefererController *)controller + willNavigateToAppLink:(BFAppLink *)appLink; + +/*! Called after the navigation has been attempted, with an indication of whether the referer + app link was successfully opened. */ +- (void)returnToRefererController:(BFAppLinkReturnToRefererController *)controller + didNavigateToAppLink:(BFAppLink *)url + type:(BFAppLinkNavigationType)type; + +@end + +/*! + A controller class that implements default behavior for a BFAppLinkReturnToRefererView, including + the ability to display the view above the navigation bar for navigation-based apps. + */ +@interface BFAppLinkReturnToRefererController : NSObject + +/*! + The delegate that will be notified when the user navigates back to the referer. + */ +@property (nonatomic, weak) id delegate; + +/*! + The BFAppLinkReturnToRefererView this controller is controlling. + */ +@property (nonatomic, strong) BFAppLinkReturnToRefererView *view; + +/*! + Initializes a controller suitable for controlling a BFAppLinkReturnToRefererView that is to be displayed + contained within another UIView (i.e., not displayed above the navigation bar). + */ +- (instancetype)init; + +/*! + Initializes a controller suitable for controlling a BFAppLinkReturnToRefererView that is to be displayed + displayed above the navigation bar. + */ +- (instancetype)initForDisplayAboveNavController:(UINavigationController *)navController; + +/*! + Removes the view entirely from the navigation controller it is currently displayed in. + */ +- (void)removeFromNavController; + +/*! + Shows the BFAppLinkReturnToRefererView with the specified referer information. If nil or missing data, + the view will not be displayed. */ +- (void)showViewForRefererAppLink:(BFAppLink *)refererAppLink; + +/*! + Shows the BFAppLinkReturnToRefererView with referer information extracted from the specified URL. + If nil or missing referer App Link data, the view will not be displayed. */ +- (void)showViewForRefererURL:(NSURL *)url; + +/*! + Closes the view, possibly animating it. + */ +- (void)closeViewAnimated:(BOOL)animated; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.m b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.m new file mode 100644 index 0000000..d380635 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.m @@ -0,0 +1,230 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import "BFAppLinkReturnToRefererController.h" + +#import "BFAppLink.h" +#import "BFAppLinkReturnToRefererView_Internal.h" +#import "BFURL_Internal.h" + +static const CFTimeInterval kBFViewAnimationDuration = 0.25f; + +@implementation BFAppLinkReturnToRefererController { + UINavigationController *_navigationController; + BFAppLinkReturnToRefererView *_view; +} + +#pragma mark - Object lifecycle + +- (instancetype)init { + return [self initForDisplayAboveNavController:nil]; +} + +- (instancetype)initForDisplayAboveNavController:(UINavigationController *)navController { + self = [super init]; + if (self) { + _navigationController = navController; + + if (_navigationController != nil) { + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self + selector:@selector(statusBarFrameWillChange:) + name:UIApplicationWillChangeStatusBarFrameNotification + object:nil]; + [nc addObserver:self + selector:@selector(statusBarFrameDidChange:) + name:UIApplicationDidChangeStatusBarFrameNotification + object:nil]; + [nc addObserver:self + selector:@selector(orientationDidChange:) + name:UIDeviceOrientationDidChangeNotification + object:nil]; + } + } + return self; +} + +- (void)dealloc { + _view.delegate = nil; + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +#pragma mark - Public API + +- (BFAppLinkReturnToRefererView *)view { + if (!_view) { + self.view = [[BFAppLinkReturnToRefererView alloc] initWithFrame:CGRectZero]; + if (_navigationController) { + [_navigationController.view addSubview:_view]; + } + } + return _view; +} + +- (void)setView:(BFAppLinkReturnToRefererView *)view { + if (_view != view) { + _view.delegate = nil; + } + + _view = view; + _view.delegate = self; + + if (_navigationController) { + _view.includeStatusBarInSize = BFIncludeStatusBarInSizeAlways; + } +} + +- (void)showViewForRefererAppLink:(BFAppLink *)refererAppLink { + self.view.refererAppLink = refererAppLink; + + [_view sizeToFit]; + + if (_navigationController) { + if (!_view.closed) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self moveNavigationBar]; + }); + } + } +} + +- (void)showViewForRefererURL:(NSURL *)url { + BFAppLink *appLink = [BFURL URLForRenderBackToReferrerBarURL:url].appLinkReferer; + [self showViewForRefererAppLink:appLink]; +} + +- (void)removeFromNavController { + if (_navigationController) { + [_view removeFromSuperview]; + _navigationController = nil; + } +} + +#pragma mark - BFAppLinkReturnToRefererViewDelegate + +- (void)returnToRefererViewDidTapInsideCloseButton:(BFAppLinkReturnToRefererView *)view { + [self closeViewAnimated:YES explicitlyClosed:YES]; +} + +- (void)returnToRefererViewDidTapInsideLink:(BFAppLinkReturnToRefererView *)view + link:(BFAppLink *)link { + [self openRefererAppLink:link]; + [self closeViewAnimated:NO explicitlyClosed:NO]; +} + +#pragma mark - Private + +- (void)statusBarFrameWillChange:(NSNotification *)notification { + NSValue *rectValue = [[notification userInfo] valueForKey:UIApplicationStatusBarFrameUserInfoKey]; + CGRect newFrame; + [rectValue getValue:&newFrame]; + + if (_navigationController && !_view.closed) { + if (CGRectGetHeight(newFrame) == 40) { + UIViewAnimationOptions options = UIViewAnimationOptionBeginFromCurrentState; + [UIView animateWithDuration:kBFViewAnimationDuration delay:0.0 options:options animations:^{ + _view.frame = CGRectMake(0.0, 0.0, CGRectGetWidth(_view.bounds), 0.0); + } completion:nil]; + } + } +} + +- (void)statusBarFrameDidChange:(NSNotification *)notification { + NSValue *rectValue = [[notification userInfo] valueForKey:UIApplicationStatusBarFrameUserInfoKey]; + CGRect newFrame; + [rectValue getValue:&newFrame]; + + if (_navigationController && !_view.closed) { + if (CGRectGetHeight(newFrame) == 40) { + UIViewAnimationOptions options = UIViewAnimationOptionBeginFromCurrentState; + [UIView animateWithDuration:kBFViewAnimationDuration delay:0.0 options:options animations:^{ + [_view sizeToFit]; + [self moveNavigationBar]; + } completion:nil]; + } + } +} + +- (void)orientationDidChange:(NSNotificationCenter *)notification { + if (_navigationController && !_view.closed && CGRectGetHeight(_view.bounds) > 0) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self moveNavigationBar]; + }); + } +} + +- (void)moveNavigationBar { + if (_view.closed || !_view.refererAppLink) { + return; + } + + [self updateNavigationBarY:CGRectGetHeight(_view.bounds)]; +} + +- (void)updateNavigationBarY:(CGFloat)y { + UINavigationBar *navigationBar = _navigationController.navigationBar; + CGRect navigationBarFrame = navigationBar.frame; + CGFloat oldContainerViewY = CGRectGetMaxY(navigationBarFrame); + navigationBarFrame.origin.y = y; + navigationBar.frame = navigationBarFrame; + + CGFloat dy = CGRectGetMaxY(navigationBarFrame) - oldContainerViewY; + UIView *containerView = _navigationController.visibleViewController.view.superview; + containerView.frame = UIEdgeInsetsInsetRect(containerView.frame, UIEdgeInsetsMake(dy, 0.0, 0.0, 0.0)); +} + +- (void)closeViewAnimated:(BOOL)animated { + [self closeViewAnimated:animated explicitlyClosed:YES]; +} + +- (void)closeViewAnimated:(BOOL)animated explicitlyClosed:(BOOL)explicitlyClosed { + void (^closer)(void) = ^{ + if (_navigationController) { + [self updateNavigationBarY:_view.statusBarHeight]; + } + + CGRect frame = _view.frame; + frame.size.height = 0.0; + _view.frame = frame; + }; + + if (animated) { + [UIView animateWithDuration:kBFViewAnimationDuration animations:^{ + closer(); + } completion:^(BOOL finished) { + if (explicitlyClosed) { + _view.closed = YES; + } + }]; + } else { + closer(); + if (explicitlyClosed) { + _view.closed = YES; + } + } +} + +- (void)openRefererAppLink:(BFAppLink *)refererAppLink { + if (refererAppLink) { + id delegate = _delegate; + if ([delegate respondsToSelector:@selector(returnToRefererController:willNavigateToAppLink:)]) { + [delegate returnToRefererController:self willNavigateToAppLink:refererAppLink]; + } + + NSError *error = nil; + BFAppLinkNavigationType type = [BFAppLinkNavigation navigateToAppLink:refererAppLink error:&error]; + + if ([delegate respondsToSelector:@selector(returnToRefererController:didNavigateToAppLink:type:)]) { + [delegate returnToRefererController:self didNavigateToAppLink:refererAppLink type:type]; + } + } +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.h b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.h new file mode 100644 index 0000000..d20f73a --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.h @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import +#import + +#import + +@class BFAppLinkReturnToRefererView; +@class BFURL; + +typedef NS_ENUM(NSUInteger, BFIncludeStatusBarInSize) { + BFIncludeStatusBarInSizeNever, + BFIncludeStatusBarInSizeIOS7AndLater, + BFIncludeStatusBarInSizeAlways, +}; + +/*! + Protocol that a class can implement in order to be notified when the user has navigated back + to the referer of an App Link. + */ +@protocol BFAppLinkReturnToRefererViewDelegate + +/*! + Called when the user has tapped inside the close button. + */ +- (void)returnToRefererViewDidTapInsideCloseButton:(BFAppLinkReturnToRefererView *)view; + +/*! + Called when the user has tapped inside the App Link portion of the view. + */ +- (void)returnToRefererViewDidTapInsideLink:(BFAppLinkReturnToRefererView *)view + link:(BFAppLink *)link; + +@end + +/*! + Provides a UIView that displays a button allowing users to navigate back to the + application that launched the App Link currently being handled, if the App Link + contained referer data. The user can also close the view by clicking a close button + rather than navigating away. If the view is provided an App Link that does not contain + referer data, it will have zero size and no UI will be displayed. + */ +@interface BFAppLinkReturnToRefererView : UIView + +/*! + The delegate that will be notified when the user navigates back to the referer. + */ +@property (nonatomic, weak) id delegate; + +/*! + The color of the text label and close button. + */ +@property (nonatomic, strong) UIColor *textColor; + +@property (nonatomic, strong) BFAppLink *refererAppLink; + +/*! + Indicates whether to extend the size of the view to include the current status bar + size, for use in scenarios where the view might extend under the status bar on iOS 7 and + above; this property has no effect on earlier versions of iOS. + */ +@property (nonatomic, assign) BFIncludeStatusBarInSize includeStatusBarInSize; + +/*! + Indicates whether the user has closed the view by clicking the close button. + */ +@property (nonatomic, assign) BOOL closed; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.m b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.m new file mode 100644 index 0000000..2a1021d --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.m @@ -0,0 +1,269 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import "BFAppLinkReturnToRefererView.h" + +#import "BFAppLink.h" +#import "BFAppLinkTarget.h" + +static const CGFloat BFMarginX = 8.5f; +static const CGFloat BFMarginY = 8.5f; + +static NSString *const BFRefererAppLink = @"referer_app_link"; +static NSString *const BFRefererAppName = @"app_name"; +static NSString *const BFRefererUrl = @"url"; +static const CGFloat BFCloseButtonWidth = 12.0; +static const CGFloat BFCloseButtonHeight = 12.0; + +@interface BFAppLinkReturnToRefererView () + +@property (nonatomic, strong) UILabel *labelView; +@property (nonatomic, strong) UIButton *closeButton; +@property (nonatomic, strong) UITapGestureRecognizer *insideTapGestureRecognizer; +@property (nonatomic, strong) UIView *viewToMoveWithNavController; + +@end + +@implementation BFAppLinkReturnToRefererView { + BOOL _explicitlyHidden; +} + +#pragma mark - Initialization + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self commonInit]; + [self sizeToFit]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; + if (self) { + [self commonInit]; + } + return self; +} + +- (void)commonInit { + // Initialization code + _includeStatusBarInSize = BFIncludeStatusBarInSizeIOS7AndLater; + + // iOS 7 system blue color + self.backgroundColor = [UIColor colorWithRed:0.0f green:122.0f / 255.0f blue:1.0f alpha:1.0f]; + self.textColor = [UIColor whiteColor]; + self.clipsToBounds = YES; + + [self initViews]; +} + +- (void)initViews { + if (!_labelView && !_closeButton) { + _closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + _closeButton.backgroundColor = [UIColor clearColor]; + _closeButton.userInteractionEnabled = YES; + _closeButton.clipsToBounds = YES; + _closeButton.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin; + _closeButton.contentMode = UIViewContentModeCenter; + [_closeButton addTarget:self action:@selector(closeButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; + + [self addSubview:_closeButton]; + + _labelView = [[UILabel alloc] initWithFrame:CGRectZero]; + _labelView.font = [UIFont systemFontOfSize:[UIFont smallSystemFontSize]]; + _labelView.textColor = [UIColor whiteColor]; + _labelView.backgroundColor = [UIColor clearColor]; +#ifdef __IPHONE_6_0 + _labelView.textAlignment = NSTextAlignmentCenter; +#else + _labelView.textAlignment = UITextAlignmentCenter; +#endif + _labelView.clipsToBounds = YES; + [self updateLabelText]; + [self addSubview:_labelView]; + + _insideTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapInside:)]; + _labelView.userInteractionEnabled = YES; + [_labelView addGestureRecognizer:_insideTapGestureRecognizer]; + + [self updateColors]; + } +} + +#pragma mark - Layout + +- (CGSize)intrinsicContentSize { + CGSize size = self.bounds.size; + if (_closed || !self.hasRefererData) { + size.height = 0.0; + } else { + CGSize labelSize = [_labelView sizeThatFits:size]; + size = CGSizeMake(size.width, labelSize.height + 2 * BFMarginY + self.statusBarHeight); + } + return size; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + CGRect bounds = self.bounds; + + _labelView.preferredMaxLayoutWidth = _labelView.bounds.size.width; + CGSize labelSize = [_labelView sizeThatFits:bounds.size]; + _labelView.frame = CGRectMake(BFMarginX, + CGRectGetMaxY(bounds) - labelSize.height - 1.5f * BFMarginY, + CGRectGetMaxX(bounds) - BFCloseButtonWidth - 3 * BFMarginX, + labelSize.height + BFMarginY); + + _closeButton.frame = CGRectMake(CGRectGetMaxX(bounds) - BFCloseButtonWidth - 2 * BFMarginX, + _labelView.center.y - BFCloseButtonHeight / 2.0f - BFMarginY, + BFCloseButtonWidth + 2 * BFMarginX, + BFCloseButtonHeight + 2 * BFMarginY); +} + +- (CGSize)sizeThatFits:(CGSize)size { + if (_closed || !self.hasRefererData) { + size = CGSizeMake(size.width, 0.0); + } else { + CGSize labelSize = [_labelView sizeThatFits:size]; + size = CGSizeMake(size.width, labelSize.height + 2 * BFMarginY + self.statusBarHeight); + } + return size; +} + +- (CGFloat)statusBarHeight { + UIApplication *application = [UIApplication sharedApplication]; + + BOOL include; + switch (_includeStatusBarInSize) { + case BFIncludeStatusBarInSizeAlways: + include = YES; + break; + case BFIncludeStatusBarInSizeIOS7AndLater: { + float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; + include = (systemVersion >= 7.0); + break; + } + case BFIncludeStatusBarInSizeNever: + include = NO; + break; + } + if (include && !application.statusBarHidden) { + BOOL landscape = UIInterfaceOrientationIsLandscape(application.statusBarOrientation); + CGRect statusBarFrame = application.statusBarFrame; + return landscape ? CGRectGetWidth(statusBarFrame) : CGRectGetHeight(statusBarFrame); + } + + return 0; +} + +#pragma mark - Public API + +- (void)setIncludeStatusBarInSize:(BFIncludeStatusBarInSize)includeStatusBarInSize { + _includeStatusBarInSize = includeStatusBarInSize; + [self setNeedsLayout]; + [self invalidateIntrinsicContentSize]; +} + +- (void)setTextColor:(UIColor *)textColor { + _textColor = textColor; + [self updateColors]; +} + +- (void)setRefererAppLink:(BFAppLink *)refererAppLink { + _refererAppLink = refererAppLink; + [self updateLabelText]; + [self updateHidden]; + [self invalidateIntrinsicContentSize]; +} + +- (void)setClosed:(BOOL)closed { + if (_closed != closed) { + _closed = closed; + [self updateHidden]; + [self invalidateIntrinsicContentSize]; + } +} + +- (void)setHidden:(BOOL)hidden { + _explicitlyHidden = hidden; + [self updateHidden]; +} + +#pragma mark - Private + +- (void)updateLabelText { + NSString *appName = (_refererAppLink && _refererAppLink.targets[0]) ? [_refererAppLink.targets[0] appName] : nil; + _labelView.text = [self localizedLabelForReferer:appName]; +} + +- (void)updateColors { + UIImage *closeButtonImage = [self drawCloseButtonImageWithColor:_textColor]; + + _labelView.textColor = _textColor; + [_closeButton setImage:closeButtonImage forState:UIControlStateNormal]; +} + +- (UIImage *)drawCloseButtonImageWithColor:(UIColor *)color { + + UIGraphicsBeginImageContextWithOptions(CGSizeMake(BFCloseButtonWidth, BFCloseButtonHeight), NO, 0.0f); + + CGContextRef context = UIGraphicsGetCurrentContext(); + + CGContextSetStrokeColorWithColor(context, [color CGColor]); + CGContextSetFillColorWithColor(context, [color CGColor]); + + CGContextSetLineWidth(context, 1.25f); + + CGFloat inset = 0.5f; + + CGContextMoveToPoint(context, inset, inset); + CGContextAddLineToPoint(context, BFCloseButtonWidth - inset, BFCloseButtonHeight - inset); + CGContextStrokePath(context); + + CGContextMoveToPoint(context, BFCloseButtonWidth - inset, inset); + CGContextAddLineToPoint(context, inset, BFCloseButtonHeight - inset); + CGContextStrokePath(context); + + UIImage *result = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + return result; +} + +- (NSString *)localizedLabelForReferer:(NSString *)refererName { + if (!refererName) { + return nil; + } + + NSString *format = NSLocalizedString(@"Touch to return to %1$@", @"Format for the string to return to a calling app."); + + return [NSString stringWithFormat:format, refererName]; +} + +- (BOOL)hasRefererData { + return _refererAppLink && _refererAppLink.targets[0]; +} + +- (void)closeButtonTapped:(id)sender { + [_delegate returnToRefererViewDidTapInsideCloseButton:self]; +} + +- (void)onTapInside:(UIGestureRecognizer *)sender { + [_delegate returnToRefererViewDidTapInsideLink:self link:_refererAppLink]; +} + +- (void)updateHidden { + [super setHidden:_explicitlyHidden || _closed || !self.hasRefererData]; +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h new file mode 100644 index 0000000..8b85823 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +@interface BFAppLinkReturnToRefererView (Internal) + +- (CGFloat)statusBarHeight; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.h b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.h new file mode 100644 index 0000000..6172126 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +/*! + Represents a target defined in App Link metadata, consisting of at least + a URL, and optionally an App Store ID and name. + */ +@interface BFAppLinkTarget : NSObject + +/*! Creates a BFAppLinkTarget with the given app site and target URL. */ ++ (instancetype)appLinkTargetWithURL:(NSURL *)url + appStoreId:(NSString *)appStoreId + appName:(NSString *)appName; + +/*! The URL prefix for this app link target */ +@property (nonatomic, strong, readonly) NSURL *URL; + +/*! The app ID for the app store */ +@property (nonatomic, copy, readonly) NSString *appStoreId; + +/*! The name of the app */ +@property (nonatomic, copy, readonly) NSString *appName; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.m b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.m new file mode 100644 index 0000000..5518cba --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLinkTarget.m @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import "BFAppLinkTarget.h" + +@interface BFAppLinkTarget () + +@property (nonatomic, strong, readwrite) NSURL *URL; +@property (nonatomic, copy, readwrite) NSString *appStoreId; +@property (nonatomic, copy, readwrite) NSString *appName; + +@end + +@implementation BFAppLinkTarget + ++ (instancetype)appLinkTargetWithURL:(NSURL *)url + appStoreId:(NSString *)appStoreId + appName:(NSString *)appName { + BFAppLinkTarget *target = [[self alloc] init]; + target.URL = url; + target.appStoreId = appStoreId; + target.appName = appName; + return target; +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLink_Internal.h b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLink_Internal.h new file mode 100644 index 0000000..6644b90 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFAppLink_Internal.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +@interface BFAppLink (Internal) + ++ (instancetype)appLinkWithSourceURL:(NSURL *)sourceURL + targets:(NSArray *)targets + webURL:(NSURL *)webURL + isBackToReferrer:(BOOL)isBackToReferrer; + +/*! return if this AppLink is to go back to referrer. */ +@property (nonatomic, assign, readonly, getter=isBackToReferrer) BOOL backToReferrer; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.h b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.h new file mode 100644 index 0000000..b3173fc --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +/*! The name of the notification posted by BFMeasurementEvent */ +FOUNDATION_EXPORT NSString *const BFMeasurementEventNotificationName; + +/*! Defines keys in the userInfo object for the notification named BFMeasurementEventNotificationName */ +/*! The string field for the name of the event */ +FOUNDATION_EXPORT NSString *const BFMeasurementEventNameKey; +/*! The dictionary field for the arguments of the event */ +FOUNDATION_EXPORT NSString *const BFMeasurementEventArgsKey; + +/*! Bolts Events raised by BFMeasurementEvent for Applink */ +/*! + The name of the event posted when [BFURL URLWithURL:] is called successfully. This represents the successful parsing of an app link URL. + */ +FOUNDATION_EXPORT NSString *const BFAppLinkParseEventName; + +/*! + The name of the event posted when [BFURL URLWithInboundURL:] is called successfully. + This represents parsing an inbound app link URL from a different application + */ +FOUNDATION_EXPORT NSString *const BFAppLinkNavigateInEventName; + +/*! The event raised when the user navigates from your app to other apps */ +FOUNDATION_EXPORT NSString *const BFAppLinkNavigateOutEventName; + +/*! + The event raised when the user navigates out from your app and back to the referrer app. + e.g when the user leaves your app after tapping the back-to-referrer navigation bar + */ +FOUNDATION_EXPORT NSString *const BFAppLinkNavigateBackToReferrerEventName; + +@interface BFMeasurementEvent : NSObject + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.m b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.m new file mode 100644 index 0000000..e3e6cde --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFMeasurementEvent.m @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import "BFMeasurementEvent_Internal.h" + +NSString *const BFMeasurementEventNotificationName = @"com.parse.bolts.measurement_event"; + +NSString *const BFMeasurementEventNameKey = @"event_name"; +NSString *const BFMeasurementEventArgsKey = @"event_args"; + +/* app Link Event raised by this BFURL */ +NSString *const BFAppLinkParseEventName = @"al_link_parse"; +NSString *const BFAppLinkNavigateInEventName = @"al_nav_in"; + +/*! AppLink events raised in this class */ +NSString *const BFAppLinkNavigateOutEventName = @"al_nav_out"; +NSString *const BFAppLinkNavigateBackToReferrerEventName = @"al_ref_back_out"; + +__attribute__((noinline)) void warnOnMissingEventName() { + NSLog(@"Warning: Missing event name when logging bolts measurement event. \n" + " Ignoring this event in logging."); +} + +@implementation BFMeasurementEvent { + NSString *_name; + NSDictionary *_args; +} + +- (void)postNotification { + if (!_name) { + warnOnMissingEventName(); + return; + } + NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; + NSDictionary *userInfo = @{BFMeasurementEventNameKey : _name, + BFMeasurementEventArgsKey : _args}; + + [center postNotificationName:BFMeasurementEventNotificationName + object:self + userInfo:userInfo]; +} + +- (instancetype)initEventWithName:(NSString *)name args:(NSDictionary *)args { + if ((self = [super init])) { + _name = name; + _args = args ? args : @{}; + } + return self; +} + ++ (void)postNotificationForEventName:(NSString *)name args:(NSDictionary *)args { + [[[self alloc] initEventWithName:name args:args] postNotification]; +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFMeasurementEvent_Internal.h b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFMeasurementEvent_Internal.h new file mode 100644 index 0000000..7d46fd0 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFMeasurementEvent_Internal.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import +/*! + Provides methods for posting notifications from the Bolts framework + */ +@interface BFMeasurementEvent (Internal) + ++ (void)postNotificationForEventName:(NSString *)name args:(NSDictionary *)args; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFURL.h b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFURL.h new file mode 100644 index 0000000..924c91d --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFURL.h @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +@class BFAppLink; + +/*! + Provides a set of utilities for working with NSURLs, such as parsing of query parameters + and handling for App Link requests. + */ +@interface BFURL : NSObject + +/*! + Creates a link target from a raw URL. + On success, this posts the BFAppLinkParseEventName measurement event. If you are constructing the BFURL within your application delegate's + application:openURL:sourceApplication:annotation:, you should instead use URLWithInboundURL:sourceApplication: + to support better BFMeasurementEvent notifications + @param url The instance of `NSURL` to create BFURL from. + */ ++ (BFURL *)URLWithURL:(NSURL *)url; + +/*! + Creates a link target from a raw URL received from an external application. This is typically called from the app delegate's + application:openURL:sourceApplication:annotation: and will post the BFAppLinkNavigateInEventName measurement event. + @param url The instance of `NSURL` to create BFURL from. + @param sourceApplication the bundle ID of the app that is requesting your app to open the URL. The same sourceApplication in application:openURL:sourceApplication:annotation: + */ ++ (BFURL *)URLWithInboundURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication; + +/*! + Gets the target URL. If the link is an App Link, this is the target of the App Link. + Otherwise, it is the url that created the target. + */ +@property (nonatomic, strong, readonly) NSURL *targetURL; + +/*! + Gets the query parameters for the target, parsed into an NSDictionary. + */ +@property (nonatomic, strong, readonly) NSDictionary *targetQueryParameters; + +/*! + If this link target is an App Link, this is the data found in al_applink_data. + Otherwise, it is nil. + */ +@property (nonatomic, strong, readonly) NSDictionary *appLinkData; + +/*! + If this link target is an App Link, this is the data found in extras. + */ +@property (nonatomic, strong, readonly) NSDictionary *appLinkExtras; + +/*! + The App Link indicating how to navigate back to the referer app, if any. + */ +@property (nonatomic, strong, readonly) BFAppLink *appLinkReferer; + +/*! + The URL that was used to create this BFURL. + */ +@property (nonatomic, strong, readonly) NSURL *inputURL; + +/*! + The query parameters of the inputURL, parsed into an NSDictionary. + */ +@property (nonatomic, strong, readonly) NSDictionary *inputQueryParameters; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFURL.m b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFURL.m new file mode 100644 index 0000000..e8f2676 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFURL.m @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import "BFURL_Internal.h" +#import "BFAppLink_Internal.h" +#import "BFAppLinkTarget.h" +#import "BFMeasurementEvent_Internal.h" + +FOUNDATION_EXPORT NSString *const BFAppLinkDataParameterName; +FOUNDATION_EXPORT NSString *const BFAppLinkTargetKeyName; +FOUNDATION_EXPORT NSString *const BFAppLinkUserAgentKeyName; +FOUNDATION_EXPORT NSString *const BFAppLinkExtrasKeyName; +FOUNDATION_EXPORT NSString *const BFAppLinkVersionKeyName; +FOUNDATION_EXPORT NSString *const BFAppLinkRefererAppLink; +FOUNDATION_EXPORT NSString *const BFAppLinkRefererAppName; +FOUNDATION_EXPORT NSString *const BFAppLinkRefererUrl; + +@implementation BFURL + +- (instancetype)initWithURL:(NSURL *)url forOpenInboundURL:(BOOL)forOpenURLEvent sourceApplication:(NSString *)sourceApplication forRenderBackToReferrerBar:(BOOL)forRenderBackToReferrerBar { + if (self = [super init]) { + _inputURL = url; + _targetURL = url; + + // Parse the query string parameters for the base URL + NSDictionary *baseQuery = [BFURL queryParametersForURL:url]; + _inputQueryParameters = baseQuery; + _targetQueryParameters = baseQuery; + + // Check for applink_data + NSString *appLinkDataString = baseQuery[BFAppLinkDataParameterName]; + if (appLinkDataString) { + // Try to parse the JSON + NSError *error = nil; + NSDictionary *applinkData = [NSJSONSerialization JSONObjectWithData:[appLinkDataString dataUsingEncoding:NSUTF8StringEncoding] + options:0 + error:&error]; + if (!error && [applinkData isKindOfClass:[NSDictionary class]]) { + // If the version is not specified, assume it is 1. + NSString *version = applinkData[BFAppLinkVersionKeyName] ?: @"1.0"; + NSString *target = applinkData[BFAppLinkTargetKeyName]; + if ([version isKindOfClass:[NSString class]] && + [version isEqual:BFAppLinkVersion]) { + // There's applink data! The target should actually be the applink target. + _appLinkData = applinkData; + id applinkExtras = applinkData[BFAppLinkExtrasKeyName]; + if (applinkExtras && [applinkExtras isKindOfClass:[NSDictionary class]]) { + _appLinkExtras = applinkExtras; + } + _targetURL = ([target isKindOfClass:[NSString class]] ? [NSURL URLWithString:target] : url); + _targetQueryParameters = [BFURL queryParametersForURL:_targetURL]; + + NSDictionary *refererAppLink = _appLinkData[BFAppLinkRefererAppLink]; + NSString *refererURLString = refererAppLink[BFAppLinkRefererUrl]; + NSString *refererAppName = refererAppLink[BFAppLinkRefererAppName]; + + if (refererURLString && refererAppName) { + BFAppLinkTarget *target = [BFAppLinkTarget appLinkTargetWithURL:[NSURL URLWithString:refererURLString] + appStoreId:nil + appName:refererAppName]; + _appLinkReferer = [BFAppLink appLinkWithSourceURL:[NSURL URLWithString:refererURLString] + targets:@[ target ] + webURL:nil + isBackToReferrer:YES]; + } + + // Raise Measurement Event + NSString *const EVENT_YES_VAL = @"1"; + NSString *const EVENT_NO_VAL = @"0"; + NSMutableDictionary *logData = [[NSMutableDictionary alloc] init]; + logData[@"version"] = version; + if (refererURLString) { + logData[@"refererURL"] = refererURLString; + } + if (refererAppName) { + logData[@"refererAppName"] = refererAppName; + } + if (sourceApplication) { + logData[@"sourceApplication"] = sourceApplication; + } + if ([_targetURL absoluteString]) { + logData[@"targetURL"] = [_targetURL absoluteString]; + } + if ([_inputURL absoluteString]) { + logData[@"inputURL"] = [_inputURL absoluteString]; + } + if ([_inputURL scheme]) { + logData[@"inputURLScheme"] = [_inputURL scheme]; + } + logData[@"forRenderBackToReferrerBar"] = forRenderBackToReferrerBar ? EVENT_YES_VAL : EVENT_NO_VAL; + logData[@"forOpenUrl"] = forOpenURLEvent ? EVENT_YES_VAL : EVENT_NO_VAL; + [BFMeasurementEvent postNotificationForEventName:BFAppLinkParseEventName args:logData]; + if (forOpenURLEvent) { + [BFMeasurementEvent postNotificationForEventName:BFAppLinkNavigateInEventName args:logData]; + } + } + } + } + } + return self; +} + ++ (BFURL *)URLWithURL:(NSURL *)url { + return [[BFURL alloc] initWithURL:url forOpenInboundURL:NO sourceApplication:nil forRenderBackToReferrerBar:NO]; +} + ++ (BFURL *)URLWithInboundURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication { + return [[BFURL alloc] initWithURL:url forOpenInboundURL:YES sourceApplication:sourceApplication forRenderBackToReferrerBar:NO]; +} + ++ (BFURL *)URLForRenderBackToReferrerBarURL:(NSURL *)url { + return [[BFURL alloc] initWithURL:url forOpenInboundURL:NO sourceApplication:nil forRenderBackToReferrerBar:YES]; +} + ++ (NSString *)decodeURLString:(NSString *)string { + return (NSString *)CFBridgingRelease(CFURLCreateStringByReplacingPercentEscapes(NULL, + (CFStringRef)string, + CFSTR(""))); +} + ++ (NSDictionary *)queryParametersForURL:(NSURL *)url { + NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; + NSString *query = url.query; + if ([query isEqualToString:@""]) { + return @{}; + } + NSArray *queryComponents = [query componentsSeparatedByString:@"&"]; + for (NSString *component in queryComponents) { + NSRange equalsLocation = [component rangeOfString:@"="]; + if (equalsLocation.location == NSNotFound) { + // There's no equals, so associate the key with NSNull + parameters[[self decodeURLString:component]] = [NSNull null]; + } else { + NSString *key = [self decodeURLString:[component substringToIndex:equalsLocation.location]]; + NSString *value = [self decodeURLString:[component substringFromIndex:equalsLocation.location + 1]]; + parameters[key] = value; + } + } + return [NSDictionary dictionaryWithDictionary:parameters]; +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFURL_Internal.h b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFURL_Internal.h new file mode 100644 index 0000000..03b6bc6 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFURL_Internal.h @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +@interface BFURL (Internal) ++ (BFURL *)URLForRenderBackToReferrerBarURL:(NSURL *)url; +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.h b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.h new file mode 100644 index 0000000..3782ae2 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +#import + +/*! + A reference implementation for an App Link resolver that uses a hidden UIWebView + to parse the HTML containing App Link metadata. + */ +@interface BFWebViewAppLinkResolver : NSObject + +/*! + Gets the instance of a BFWebViewAppLinkResolver. + */ ++ (instancetype)sharedInstance; + +@end diff --git a/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.m b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.m new file mode 100644 index 0000000..720838b --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/Bolts/iOS/BFWebViewAppLinkResolver.m @@ -0,0 +1,298 @@ +/* + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#import + +#import "BFWebViewAppLinkResolver.h" +#import "BFAppLink.h" +#import "BFAppLinkTarget.h" +#import "BFTask.h" +#import "BFTaskCompletionSource.h" +#import "BFExecutor.h" + +// Defines JavaScript to extract app link tags from HTML content +static NSString *const BFWebViewAppLinkResolverTagExtractionJavaScript = @"" +"(function() {" +" var metaTags = document.getElementsByTagName('meta');" +" var results = [];" +" for (var i = 0; i < metaTags.length; i++) {" +" var property = metaTags[i].getAttribute('property');" +" if (property && property.substring(0, 'al:'.length) === 'al:') {" +" var tag = { \"property\": metaTags[i].getAttribute('property') };" +" if (metaTags[i].hasAttribute('content')) {" +" tag['content'] = metaTags[i].getAttribute('content');" +" }" +" results.push(tag);" +" }" +" }" +" return JSON.stringify(results);" +"})()"; +static NSString *const BFWebViewAppLinkResolverIOSURLKey = @"url"; +static NSString *const BFWebViewAppLinkResolverIOSAppStoreIdKey = @"app_store_id"; +static NSString *const BFWebViewAppLinkResolverIOSAppNameKey = @"app_name"; +static NSString *const BFWebViewAppLinkResolverDictionaryValueKey = @"_value"; +static NSString *const BFWebViewAppLinkResolverPreferHeader = @"Prefer-Html-Meta-Tags"; +static NSString *const BFWebViewAppLinkResolverMetaTagPrefix = @"al"; +static NSString *const BFWebViewAppLinkResolverWebKey = @"web"; +static NSString *const BFWebViewAppLinkResolverIOSKey = @"ios"; +static NSString *const BFWebViewAppLinkResolverIPhoneKey = @"iphone"; +static NSString *const BFWebViewAppLinkResolverIPadKey = @"ipad"; +static NSString *const BFWebViewAppLinkResolverWebURLKey = @"url"; +static NSString *const BFWebViewAppLinkResolverShouldFallbackKey = @"should_fallback"; + +@interface BFWebViewAppLinkResolverWebViewDelegate : NSObject + +@property (nonatomic, copy) void (^didFinishLoad)(UIWebView *webView); +@property (nonatomic, copy) void (^didFailLoadWithError)(UIWebView *webView, NSError *error); +@property (nonatomic, assign) BOOL hasLoaded; + +@end + +@implementation BFWebViewAppLinkResolverWebViewDelegate + +- (void)webViewDidFinishLoad:(UIWebView *)webView { + if (self.didFinishLoad) { + self.didFinishLoad(webView); + } +} + +- (void)webViewDidStartLoad:(UIWebView *)webView { +} + +- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { + if (self.didFailLoadWithError) { + self.didFailLoadWithError(webView, error); + } +} + +- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { + if (self.hasLoaded) { + // Consider loading a second resource to be "success", since it indicates an inner frame + // or redirect is happening. We can run the tag extraction script at this point. + self.didFinishLoad(webView); + return NO; + } + self.hasLoaded = YES; + return YES; +} + +@end + +@implementation BFWebViewAppLinkResolver + ++ (instancetype)sharedInstance { + static id instance; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + instance = [[self alloc] init]; + }); + return instance; +} + +- (BFTask *)followRedirects:(NSURL *)url { + // This task will be resolved with either the redirect NSURL + // or a dictionary with the response data to be returned. + BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; + [request setValue:BFWebViewAppLinkResolverMetaTagPrefix forHTTPHeaderField:BFWebViewAppLinkResolverPreferHeader]; + + void (^completion)(NSURLResponse *response, NSData *data, NSError *error) = ^(NSURLResponse *response, NSData *data, NSError *error) { + if (error) { + [tcs setError:error]; + return; + } + + if ([response isKindOfClass:[NSHTTPURLResponse class]]) { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; + + // NSURLConnection usually follows redirects automatically, but the + // documentation is unclear what the default is. This helps it along. + if (httpResponse.statusCode >= 300 && httpResponse.statusCode < 400) { + NSString *redirectString = httpResponse.allHeaderFields[@"Location"]; + NSURL *redirectURL = [NSURL URLWithString:redirectString]; + [tcs setResult:redirectURL]; + return; + } + } + + [tcs setResult:@{ @"response" : response, @"data" : data }]; + }; + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_7_0 || __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_9 + NSURLSession *session = [NSURLSession sharedSession]; + [[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + completion(response, data, error); + }] resume]; +#else + [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:completion]; +#endif + + return [tcs.task continueWithSuccessBlock:^id(BFTask *task) { + // If we redirected, just keep recursing. + if ([task.result isKindOfClass:[NSURL class]]) { + return [self followRedirects:task.result]; + } + return task; + }]; +} + +- (BFTask *)appLinkFromURLInBackground:(NSURL *)url { + return [[self followRedirects:url] continueWithExecutor:[BFExecutor mainThreadExecutor] + withSuccessBlock:^id(BFTask *task) { + NSData *responseData = task.result[@"data"]; + NSHTTPURLResponse *response = task.result[@"response"]; + BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; + + UIWebView *webView = [[UIWebView alloc] init]; + BFWebViewAppLinkResolverWebViewDelegate *listener = [[BFWebViewAppLinkResolverWebViewDelegate alloc] init]; + __block BFWebViewAppLinkResolverWebViewDelegate *retainedListener = listener; + listener.didFinishLoad = ^(UIWebView *view) { + if (retainedListener) { + NSDictionary *ogData = [self getALDataFromLoadedPage:view]; + [view removeFromSuperview]; + view.delegate = nil; + retainedListener = nil; + [tcs setResult:[self appLinkFromALData:ogData destination:url]]; + } + }; + listener.didFailLoadWithError = ^(UIWebView* view, NSError *error) { + if (retainedListener) { + [view removeFromSuperview]; + view.delegate = nil; + retainedListener = nil; + [tcs setError:error]; + } + }; + webView.delegate = listener; + webView.hidden = YES; + [webView loadData:responseData + MIMEType:response.MIMEType + textEncodingName:response.textEncodingName + baseURL:response.URL]; + UIWindow *window = [UIApplication sharedApplication].windows.firstObject; + [window addSubview:webView]; + + return tcs.task; + }]; +} + +/* + Builds up a data structure filled with the app link data from the meta tags on a page. + The structure of this object is a dictionary where each key holds an array of app link + data dictionaries. Values are stored in a key called "_value". + */ +- (NSDictionary *)parseALData:(NSArray *)dataArray { + NSMutableDictionary *al = [NSMutableDictionary dictionary]; + for (NSDictionary *tag in dataArray) { + NSString *name = tag[@"property"]; + if (![name isKindOfClass:[NSString class]]) { + continue; + } + NSArray *nameComponents = [name componentsSeparatedByString:@":"]; + if (![nameComponents[0] isEqualToString:BFWebViewAppLinkResolverMetaTagPrefix]) { + continue; + } + NSMutableDictionary *root = al; + for (int i = 1; i < nameComponents.count; i++) { + NSMutableArray *children = root[nameComponents[i]]; + if (!children) { + children = [NSMutableArray array]; + root[nameComponents[i]] = children; + } + NSMutableDictionary *child = children.lastObject; + if (!child || i == nameComponents.count - 1) { + child = [NSMutableDictionary dictionary]; + [children addObject:child]; + } + root = child; + } + if (tag[@"content"]) { + root[BFWebViewAppLinkResolverDictionaryValueKey] = tag[@"content"]; + } + } + return al; +} + +- (NSDictionary *)getALDataFromLoadedPage:(UIWebView *)webView { + // Run some JavaScript in the webview to fetch the meta tags. + NSString *jsonString = [webView stringByEvaluatingJavaScriptFromString:BFWebViewAppLinkResolverTagExtractionJavaScript]; + NSError *error = nil; + NSArray *arr = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] + options:0 + error:&error]; + return [self parseALData:arr]; +} + +/* + Converts app link data into a BFAppLink containing the targets relevant for this platform. + */ +- (BFAppLink *)appLinkFromALData:(NSDictionary *)appLinkDict destination:(NSURL *)destination { + NSMutableArray *linkTargets = [NSMutableArray array]; + + NSArray *platformData = nil; + switch (UI_USER_INTERFACE_IDIOM()) { + case UIUserInterfaceIdiomPad: + platformData = @[ appLinkDict[BFWebViewAppLinkResolverIPadKey] ?: @{}, + appLinkDict[BFWebViewAppLinkResolverIOSKey] ?: @{} ]; + break; + case UIUserInterfaceIdiomPhone: + platformData = @[ appLinkDict[BFWebViewAppLinkResolverIPhoneKey] ?: @{}, + appLinkDict[BFWebViewAppLinkResolverIOSKey] ?: @{} ]; + break; + default: + // Future-proofing. Other User Interface idioms should only hit ios. + platformData = @[ appLinkDict[BFWebViewAppLinkResolverIOSKey] ?: @{} ]; + break; + } + + for (NSArray *platformObjects in platformData) { + for (NSDictionary *platformDict in platformObjects) { + // The schema requires a single url/app store id/app name, + // but we could find multiple of them. We'll make a best effort + // to interpret this data. + NSArray *urls = platformDict[BFWebViewAppLinkResolverIOSURLKey]; + NSArray *appStoreIds = platformDict[BFWebViewAppLinkResolverIOSAppStoreIdKey]; + NSArray *appNames = platformDict[BFWebViewAppLinkResolverIOSAppNameKey]; + + NSUInteger maxCount = MAX(urls.count, MAX(appStoreIds.count, appNames.count)); + + for (NSUInteger i = 0; i < maxCount; i++) { + NSString *urlString = urls[i][BFWebViewAppLinkResolverDictionaryValueKey]; + NSURL *url = urlString ? [NSURL URLWithString:urlString] : nil; + NSString *appStoreId = appStoreIds[i][BFWebViewAppLinkResolverDictionaryValueKey]; + NSString *appName = appNames[i][BFWebViewAppLinkResolverDictionaryValueKey]; + BFAppLinkTarget *target = [BFAppLinkTarget appLinkTargetWithURL:url + appStoreId:appStoreId + appName:appName]; + [linkTargets addObject:target]; + } + } + } + + NSDictionary *webDict = appLinkDict[BFWebViewAppLinkResolverWebKey][0]; + NSString *webUrlString = webDict[BFWebViewAppLinkResolverWebURLKey][0][BFWebViewAppLinkResolverDictionaryValueKey]; + NSString *shouldFallbackString = webDict[BFWebViewAppLinkResolverShouldFallbackKey][0][BFWebViewAppLinkResolverDictionaryValueKey]; + + NSURL *webUrl = destination; + + if (shouldFallbackString && + [@[ @"no", @"false", @"0" ] containsObject:[shouldFallbackString lowercaseString]]) { + webUrl = nil; + } + if (webUrl && webUrlString) { + webUrl = [NSURL URLWithString:webUrlString]; + } + + return [BFAppLink appLinkWithSourceURL:destination + targets:linkTargets + webURL:webUrl]; +} + +@end diff --git a/Unit-2-Journal/Pods/Bolts/LICENSE b/Unit-2-Journal/Pods/Bolts/LICENSE new file mode 100644 index 0000000..e1a5831 --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/LICENSE @@ -0,0 +1,30 @@ +BSD License + +For Bolts software + +Copyright (c) 2013-present, Facebook, Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Bolts/README.md b/Unit-2-Journal/Pods/Bolts/README.md new file mode 100644 index 0000000..003a2ea --- /dev/null +++ b/Unit-2-Journal/Pods/Bolts/README.md @@ -0,0 +1,682 @@ +Bolts +============ +[![Build Status](http://img.shields.io/travis/BoltsFramework/Bolts-iOS/master.svg?style=flat)](https://travis-ci.org/BoltsFramework/Bolts-iOS) +[![Coverage Status](https://codecov.io/github/BoltsFramework/Bolts-iOS/coverage.svg?branch=master)](https://codecov.io/github/BoltsFramework/Bolts-iOS?branch=master) +[![Pod Version](http://img.shields.io/cocoapods/v/Bolts.svg?style=flat)](http://cocoadocs.org/docsets/Bolts/) +[![Pod Platform](http://img.shields.io/cocoapods/p/Bolts.svg?style=flat)](http://cocoadocs.org/docsets/Bolts/) +[![Pod License](http://img.shields.io/cocoapods/l/Bolts.svg?style=flat)](https://github.com/BoltsFramework/Bolts-iOS/blob/master/LICENSE) +[![Dependency Status](https://www.versioneye.com/objective-c/bolts/1.1.1/badge.svg?style=flat)](https://www.versioneye.com/objective-c/bolts) +[![Reference Status](https://www.versioneye.com/objective-c/bolts/reference_badge.svg?style=flat)](https://www.versioneye.com/objective-c/bolts/references) + +Bolts is a collection of low-level libraries designed to make developing mobile +apps easier. Bolts was designed by Parse and Facebook for our own internal use, +and we have decided to open source these libraries to make them available to +others. Using these libraries does not require using any Parse services. Nor +do they require having a Parse or Facebook developer account. + +Bolts includes: + +* "Tasks", which make organization of complex asynchronous code more manageable. A task is kind of like a JavaScript Promise, but available for iOS and Android. +* An implementation of the [App Links protocol](http://www.applinks.org), helping you link to content in other apps and handle incoming deep-links. + +For more information, see the [Bolts iOS API Reference](http://boltsframework.github.io/docs/ios/). + +# Tasks + +To build a truly responsive iOS application, you must keep long-running operations off of the UI thread, and be careful to avoid blocking anything the UI thread might be waiting on. This means you will need to execute various operations in the background. To make this easier, we've added a class called `BFTask`. A task represents the result of an asynchronous operation. Typically, a `BFTask` is returned from an asynchronous function and gives the ability to continue processing the result of the task. When a task is returned from a function, it's already begun doing its job. A task is not tied to a particular threading model: it represents the work being done, not where it is executing. Tasks have many advantages over other methods of asynchronous programming, such as callbacks. `BFTask` is not a replacement for `NSOperation` or GCD. In fact, they play well together. But tasks do fill in some gaps that those technologies don't address. +* `BFTask` takes care of managing dependencies for you. Unlike using `NSOperation` for dependency management, you don't have to declare all dependencies before starting a `BFTask`. For example, imagine you need to save a set of objects and each one may or may not require saving child objects. With an `NSOperation`, you would normally have to create operations for each of the child saves ahead of time. But you don't always know before you start the work whether that's going to be necessary. That can make managing dependencies with `NSOperation` very painful. Even in the best case, you have to create your dependencies before the operations that depend on them, which results in code that appears in a different order than it executes. With `BFTask`, you can decide during your operation's work whether there will be subtasks and return the other task in just those cases. +* `BFTasks` release their dependencies. `NSOperation` strongly retains its dependencies, so if you have a queue of ordered operations and sequence them using dependencies, you have a leak, because every operation gets retained forever. `BFTasks` release their callbacks as soon as they are run, so everything cleans up after itself. This can reduce memory use, and simplify memory management. +* `BFTasks` keep track of the state of finished tasks: It tracks whether there was a returned value, the task was cancelled, or if an error occurred. It also has convenience methods for propagating errors. With `NSOperation`, you have to build all of this stuff yourself. +* `BFTasks` don't depend on any particular threading model. So it's easy to have some tasks perform their work with an operation queue, while others perform work using blocks with GCD. These tasks can depend on each other seamlessly. +* Performing several tasks in a row will not create nested "pyramid" code as you would get when using only callbacks. +* `BFTasks` are fully composable, allowing you to perform branching, parallelism, and complex error handling, without the spaghetti code of having many named callbacks. +* You can arrange task-based code in the order that it executes, rather than having to split your logic across scattered callback functions. + +For the examples in this doc, assume there are async versions of some common Parse methods, called `saveAsync:` and `findAsync:` which return a `Task`. In a later section, we'll show how to define these functions yourself. + +## The `continueWithBlock` Method + +Every `BFTask` has a method named `continueWithBlock:` which takes a continuation block. A continuation is a block that will be executed when the task is complete. You can then inspect the task to check if it was successful and to get its result. + +```objective-c +// Objective-C +[[self saveAsync:obj] continueWithBlock:^id(BFTask *task) { + if (task.isCancelled) { + // the save was cancelled. + } else if (task.error) { + // the save failed. + } else { + // the object was saved successfully. + PFObject *object = task.result; + } + return nil; +}]; +``` + +```swift +// Swift +self.saveAsync(obj).continueWithBlock { + (task: BFTask!) -> BFTask in + if task.isCancelled() { + // the save was cancelled. + } else if task.error() { + // the save failed. + } else { + // the object was saved successfully. + var object = task.result() as PFObject + } +} +``` + +BFTasks use Objective-C blocks, so the syntax should be pretty straightforward. Let's look closer at the types involved with an example. + +```objective-c +// Objective-C +/** + * Gets an NSString asynchronously. + */ +- (BFTask *)getStringAsync { + // Let's suppose getNumberAsync returns a BFTask whose result is an NSNumber. + return [[self getNumberAsync] continueWithBlock:^id(BFTask *task) { + // This continuation block takes the NSNumber BFTask as input, + // and provides an NSString as output. + + NSNumber *number = task.result; + return [NSString stringWithFormat:@"%@", number]; + )]; +} +``` + +```swift +// Swift +/** + * Gets an NSString asynchronously. + */ +func getStringAsync() -> BFTask { + //Let's suppose getNumberAsync returns a BFTask whose result is an NSNumber. + return self.getNumberAsync().continueWithBlock { + (task: BFTask!) -> NSString in + // This continuation block takes the NSNumber BFTask as input, + // and provides an NSString as output. + + let number = task.result() as NSNumber + return NSString(format:"%@", number) + } +} +``` + +In many cases, you only want to do more work if the previous task was successful, and propagate any errors or cancellations to be dealt with later. To do this, use the `continueWithSuccessBlock:` method instead of `continueWithBlock:`. + +```objective-c +// Objective-C +[[self saveAsync:obj] continueWithSuccessBlock:^id(BFTask *task) { + // the object was saved successfully. + return nil; +}]; +``` + +```swift +// Swift +self.saveAsync(obj).continueWithSuccessBlock { + (task: BFTask!) -> AnyObject! in + // the object was saved successfully. + return nil +} +``` + +## Chaining Tasks Together + +BFTasks are a little bit magical, in that they let you chain them without nesting. If you return a BFTask from `continueWithBlock:`, then the task returned by `continueWithBlock:` will not be considered finished until the new task returned from the new continuation block. This lets you perform multiple actions without incurring the pyramid code you would get with callbacks. Likewise, you can return a `BFTask` from `continueWithSuccessBlock:`. So, return a `BFTask` to do more asynchronous work. + +```objective-c +// Objective-C +PFQuery *query = [PFQuery queryWithClassName:@"Student"]; +[query orderByDescending:@"gpa"]; +[[[[[self findAsync:query] continueWithSuccessBlock:^id(BFTask *task) { + NSArray *students = task.result; + PFObject *valedictorian = [students objectAtIndex:0]; + [valedictorian setObject:@YES forKey:@"valedictorian"]; + return [self saveAsync:valedictorian]; +}] continueWithSuccessBlock:^id(BFTask *task) { + PFObject *valedictorian = task.result; + return [self findAsync:query]; +}] continueWithSuccessBlock:^id(BFTask *task) { + NSArray *students = task.result; + PFObject *salutatorian = [students objectAtIndex:1]; + [salutatorian setObject:@YES forKey:@"salutatorian"]; + return [self saveAsync:salutatorian]; +}] continueWithSuccessBlock:^id(BFTask *task) { + // Everything is done! + return nil; +}]; +``` + +```swift +// Swift +var query = PFQuery(className:"Student") +query.orderByDescending("gpa") +findAsync(query).continueWithSuccessBlock { + (task: BFTask!) -> BFTask in + let students = task.result() as NSArray + var valedictorian = students.objectAtIndex(0) as PFObject + valedictorian["valedictorian"] = true + return self.saveAsync(valedictorian) +}.continueWithSuccessBlock { + (task: BFTask!) -> BFTask in + var valedictorian = task.result() as PFObject + return self.findAsync(query) +}.continueWithSuccessBlock { + (task: BFTask!) -> BFTask in + let students = task.result() as NSArray + var salutatorian = students.objectAtIndex(1) as PFObject + salutatorian["salutatorian"] = true + return self.saveAsync(salutatorian) +}.continueWithSuccessBlock { + (task: BFTask!) -> AnyObject! in + // Everything is done! + return nil +} +``` + +## Error Handling + +By carefully choosing whether to call `continueWithBlock:` or `continueWithSuccessBlock:`, you can control how errors are propagated in your application. Using `continueWithBlock:` lets you handle errors by transforming them or dealing with them. You can think of failed tasks kind of like throwing an exception. In fact, if you throw an exception inside a continuation, the resulting task will be faulted with that exception. + +```objective-c +// Objective-C +PFQuery *query = [PFQuery queryWithClassName:@"Student"]; +[query orderByDescending:@"gpa"]; +[[[[[self findAsync:query] continueWithSuccessBlock:^id(BFTask *task) { + NSArray *students = task.result; + PFObject *valedictorian = [students objectAtIndex:0]; + [valedictorian setObject:@YES forKey:@"valedictorian"]; + // Force this callback to fail. + return [BFTask taskWithError:[NSError errorWithDomain:@"example.com" + code:-1 + userInfo:nil]]; +}] continueWithSuccessBlock:^id(BFTask *task) { + // Now this continuation will be skipped. + PFQuery *valedictorian = task.result; + return [self findAsync:query]; +}] continueWithBlock:^id(BFTask *task) { + if (task.error) { + // This error handler WILL be called. + // The error will be the NSError returned above. + // Let's handle the error by returning a new value. + // The task will be completed with nil as its value. + return nil; + } + // This will also be skipped. + NSArray *students = task.result; + PFObject *salutatorian = [students objectAtIndex:1]; + [salutatorian setObject:@YES forKey:@"salutatorian"]; + return [self saveAsync:salutatorian]; +}] continueWithSuccessBlock:^id(BFTask *task) { + // Everything is done! This gets called. + // The task's result is nil. + return nil; +}]; +``` + +```swift +// Swift +var query = PFQuery(className:"Student") +query.orderByDescending("gpa") +findAsync(query).continueWithSuccessBlock { + (task: BFTask!) -> BFTask in + let students = task.result() as NSArray + var valedictorian = students.objectAtIndex(0) as PFObject + valedictorian["valedictorian"] = true + //Force this callback to fail. + return BFTask(error:NSError(domain:"example.com", + code:-1, userInfo: nil)) +}.continueWithSuccessBlock { + (task: BFTask!) -> AnyObject! in + //Now this continuation will be skipped. + var valedictorian = task.result() as PFObject + return self.findAsync(query) +}.continueWithBlock { + (task: BFTask!) -> AnyObject! in + if task.error() { + // This error handler WILL be called. + // The error will be the NSError returned above. + // Let's handle the error by returning a new value. + // The task will be completed with nil as its value. + return nil + } + // This will also be skipped. + let students = task.result() as NSArray + var salutatorian = students.objectAtIndex(1) as PFObject + salutatorian["salutatorian"] = true + return self.saveAsync(salutatorian) +}.continueWithSuccessBlock { + (task: BFTask!) -> AnyObject! in + // Everything is done! This gets called. + // The tasks result is nil. + return nil +} +``` + +It's often convenient to have a long chain of success callbacks with only one error handler at the end. + +## Creating Tasks + +When you're getting started, you can just use the tasks returned from methods like `findAsync:` or `saveAsync:`. However, for more advanced scenarios, you may want to make your own tasks. To do that, you create a `BFTaskCompletionSource`. This object will let you create a new `BFTask`, and control whether it gets marked as finished or cancelled. After you create a `BFTask`, you'll need to call `setResult:`, `setError:`, or `cancel` to trigger its continuations. + +```objective-c +// Objective-C +- (BFTask *)successAsync { + BFTaskCompletionSource *successful = [BFTaskCompletionSource taskCompletionSource]; + [successful setResult:@"The good result."]; + return successful.task; +} + +- (BFTask *)failAsync { + BFTaskCompletionSource *failed = [BFTaskCompletionSource taskCompletionSource]; + [failed setError:[NSError errorWithDomain:@"example.com" code:-1 userInfo:nil]]; + return failed.task; +} +``` + +```swift +// Swift +func successAsync() -> BFTask { + var successful = BFTaskCompletionSource() + successful.setResult("The good result.") + return successful.task +} + +func failAsync() -> BFTask { + var failed = BFTaskCompletionSource() + failed.setError(NSError(domain:"example.com", code:-1, userInfo:nil)) + return failed.task +} +``` + +If you know the result of a task at the time it is created, there are some convenience methods you can use. + +```objective-c +// Objective-C +BFTask *successful = [BFTask taskWithResult:@"The good result."]; + +BFTask *failed = [BFTask taskWithError:anError]; +``` + +```swift +// Swift +let successful = BFTask(result:"The good result") + +let failed = BFTask(error:anError) +``` + +## Creating Async Methods + +With these tools, it's easy to make your own asynchronous functions that return tasks. For example, you can make a task-based version of `fetchAsync:` easily. + +```objective-c +// Objective-C +- (BFTask *) fetchAsync:(PFObject *)object { + BFTaskCompletionSource *task = [BFTaskCompletionSource taskCompletionSource]; + [object fetchInBackgroundWithBlock:^(PFObject *object, NSError *error) { + if (!error) { + [task setResult:object]; + } else { + [task setError:error]; + } + }]; + return task.task; +} +``` + +```swift +// Swift +func fetchAsync(object: PFObject) -> BFTask { + var task = BFTaskCompletionSource() + object.fetchInBackgroundWithBlock { + (object: PFObject?, error: NSError?) -> Void in + if error == nil { + task.setResult(object) + } else { + task.setError(error) + } + } + return task.task +} + +``` + +It's similarly easy to create `saveAsync:`, `findAsync:` or `deleteAsync:`. + +## Tasks in Series + +`BFTasks` are convenient when you want to do a series of tasks in a row, each one waiting for the previous to finish. For example, imagine you want to delete all of the comments on your blog. + +```objective-c +// Objective-C +PFQuery *query = [PFQuery queryWithClassName:@"Comments"]; +[query whereKey:@"post" equalTo:@123]; + +[[[self findAsync:query] continueWithBlock:^id(BFTask *task) { + NSArray *results = task.result; + + // Create a trivial completed task as a base case. + BFTask *task = [BFTask taskWithResult:nil]; + for (PFObject *result in results) { + // For each item, extend the task with a function to delete the item. + task = [task continueWithBlock:^id(BFTask *task) { + // Return a task that will be marked as completed when the delete is finished. + return [self deleteAsync:result]; + }]; + } + return task; +}] continueWithBlock:^id(BFTask *task) { + // Every comment was deleted. + return nil; +}]; +``` + +```swift +// Swift +var query = PFQuery(className:"Comments") +query.whereKey("post", equalTo:123) +findAsync(query).continueWithBlock { + (task: BFTask!) -> BFTask in + let results = task.result() as NSArray + + // Create a trivial completed task as a base case. + let task = BFTask(result:nil) + for result : PFObject in results { + // For each item, extend the task with a function to delete the item. + task = task.continueWithBlock { + (task: BFTask!) -> BFTask in + return self.deleteAsync(result) + } + } + return task +}.continueWithBlock { + (task: BFTask!) -> AnyObject! in + // Every comment was deleted. + return nil +} +``` + +## Tasks in Parallel + +You can also perform several tasks in parallel, using the `taskForCompletionOfAllTasks:` method. You can start multiple operations at once, and use `taskForCompletionOfAllTasks:` to create a new task that will be marked as completed when all of its input tasks are completed. The new task will be successful only if all of the passed-in tasks succeed. Performing operations in parallel will be faster than doing them serially, but may consume more system resources and bandwidth. + +```objective-c +// Objective-C +PFQuery *query = [PFQuery queryWithClassName:@"Comments"]; +[query whereKey:@"post" equalTo:@123]; + +[[[self findAsync:query] continueWithBlock:^id(BFTask *results) { + // Collect one task for each delete into an array. + NSMutableArray *tasks = [NSMutableArray array]; + for (PFObject *result in results) { + // Start this delete immediately and add its task to the list. + [tasks addObject:[self deleteAsync:result]]; + } + // Return a new task that will be marked as completed when all of the deletes are + // finished. + return [BFTask taskForCompletionOfAllTasks:tasks]; +}] continueWithBlock:^id(BFTask *task) { + // Every comment was deleted. + return nil; +}]; +``` + +```swift +// Swift +var query = PFQuery(className:"Comments") +query.whereKey("post", equalTo:123) + +findAsync(query).continueWithBlock { + (task: BFTask!) -> BFTask in + // Collect one task for each delete into an array. + var tasks = NSMutableArray.array() + var results = task.result() as NSArray + for result : PFObject! in results { + // Start this delete immediately and add its task to the list. + tasks.addObject(self.deleteAsync(result)) + } + // Return a new task that will be marked as completed when all of the deletes + // are finished. + return BFTask(forCompletionOfAllTasks:tasks) +}.continueWithBlock { + (task: BFTask!) -> AnyObject! in + // Every comment was deleted. + return nil +} +``` + +## Task Executors + +Both `continueWithBlock:` and `continueWithSuccessBlock:` methods have another form that takes an instance of `BFExecutor`. These are `continueWithExecutor:withBlock:` and `continueWithExecutor:withSuccessBlock:`. These methods allow you to control how the continuation is executed. The default executor will dispatch to GCD, but you can provide your own executor to schedule work onto a different thread. For example, if you want to continue with work on the UI thread: + +```objective-c +// Create a BFExecutor that uses the main thread. +BFExecutor *myExecutor = [BFExecutor executorWithBlock:^void(void(^block)()) { + dispatch_async(dispatch_get_main_queue(), block); +}]; + +// And use the Main Thread Executor like this. The executor applies only to the new +// continuation being passed into continueWithBlock. +[[self fetchAsync:object] continueWithExecutor:myExecutor withBlock:^id(BFTask *task) { + myTextView.text = [object objectForKey:@"name"]; +}]; +``` + +For common cases, such as dispatching on the main thread, we have provided default implementations of `BFExecutor`. These include `defaultExecutor`, `immediateExecutor`, `mainThreadExecutor`, `executorWithDispatchQueue:`, and `executorWithOperationQueue:`. For example: + +```objective-c +// Continue on the Main Thread, using a built-in executor. +[[self fetchAsync:object] continueWithExecutor:[BFExecutor mainThreadExecutor] withBlock:^id(BFTask *task) { + myTextView.text = [object objectForKey:@"name"]; +}]; +``` + +## Task Cancellation + +It's generally bad design to keep track of the `BFTaskCompletionSource` for cancellation. A better model is to create a "cancellation token" at the top level, and pass that to each async function that you want to be part of the same "cancelable operation". Then, in your continuation blocks, you can check whether the cancellation token has been cancelled and bail out early by returning a `[BFTask cancelledTask]`. For example: + +```objective-c +- (void)doSomethingComplicatedAsync:(MYCancellationToken *)cancellationToken { + [[self doSomethingAsync:cancellationToken] continueWithBlock:^{ + if (cancellationToken.isCancelled) { + return [BFTask cancelledTask]; + } + // Do something that takes a while. + return result; + }]; +} + +// Somewhere else. +MYCancellationToken *cancellationToken = [[MYCancellationToken alloc] init]; +[obj doSomethingComplicatedAsync:cancellationToken]; + +// When you get bored... +[cancellationToken cancel]; +``` + +**Note:** The cancellation token implementation should be thread-safe. +We are likely to add some concept like this to Bolts at some point in the future. + +# App Links + +[App Links](http://www.applinks.org) provide a cross-platform mechanism that allows a developer to define and publish a deep-linking scheme for their content, allowing other apps to link directly to an experience optimized for the device they are running on. Whether you are building an app that receives incoming links or one that may link out to other apps' content, Bolts provides tools to simplify implementation of the [App Links protocol](http://www.applinks.org/documentation). + +## Handling an App Link + +The most common case will be making your app receive App Links. In-linking will allow your users to quickly access the richest, most native-feeling presentation of linked content on their devices. Bolts makes it easy to handle an inbound App Link (as well as general inbound deep-links) by providing utilities for processing an incoming URL. + +For example, you can use the `BFURL` utility class to parse an incoming URL in your `AppDelegate`: + +```objective-c +- (BOOL)application:(UIApplication *)application + openURL:(NSURL *)url + sourceApplication:(NSString *)sourceApplication + annotation:(id)annotation { + BFURL *parsedUrl = [BFURL URLWithInboundURL:url sourceApplication:sourceApplication]; + + // Use the target URL from the App Link to locate content. + if ([parsedUrl.targetURL.pathComponents[1] isEqualToString:@"profiles"]) { + // Open a profile viewer. + } + + // You can also check the query string easily. + NSString *query = parsedUrl.targetQueryParameters[@"query"]; + + // Apps that have existing deep-linking support and map their App Links to existing + // deep-linking functionality may instead want to perform these operations on the input URL. + // Use the target URL from the App Link to locate content. + if ([parsedUrl.inputURL.pathComponents[1] isEqualToString:@"profiles"]) { + // Open a profile viewer. + } + + // You can also check the query string easily. + NSString *query = parsedUrl.inputQueryParameters[@"query"]; + + // Apps can easily check the Extras and App Link data from the App Link as well. + NSString *fbAccessToken = parsedUrl.appLinkExtras[@"fb_access_token"]; + NSDictionary *refererData = parsedUrl.appLinkExtras[@"referer"]; +} +``` + +## Navigating to a URL + +Following an App Link allows your app to provide the best user experience (as defined by the receiving app) when a user navigates to a link. Bolts makes this process simple, automating the steps required to follow a link: + +1. Resolve the App Link by getting the App Link metadata from the HTML at the URL specified. +2. Step through App Link targets relevant to the device being used, checking whether the app that can handle the target is present on the device. +3. If an app is present, build a URL with the appropriate al_applink_data specified and navigate to that URL. +4. Otherwise, open the browser with the original URL specified. + +In the simplest case, it takes just one line of code to navigate to a URL that may have an App Link: + +```objective-c +[BFAppLinkNavigation navigateToURLInBackground:url]; +``` + +### Adding App and Navigation Data + +Under most circumstances, the data that will need to be passed along to an app during a navigation will be contained in the URL itself, so that whether or not the app is actually installed on the device, users are taken to the correct content. Occasionally, however, apps will want to pass along data that is relevant for app-to-app navigation, or will want to augment the App Link protocol with information that might be used by the app to adjust how the app should behave (e.g. showing a link back to the referring app). + +If you want to take advantage of these features, you can break apart the navigation process. First, you must have an App Link to which you wish to navigate: + +```objective-c +[[BFAppLinkNavigation resolveAppLinkInBackground:url] continueWithSuccessBlock:^id(BFTask *task) { + BFAppLink *link = task.result; +}]; +``` + +Then, you can build an App Link request with any additional data you would like and navigate: + +```objective-c +BFAppLinkNavigation *navigation = [BFAppLinkNavigation navigationWithAppLink:link + extras:@{ @"access_token": @"t0kEn" } + appLinkData:@{ @"ref": @"12345" }]; +NSError *error = nil; +[navigation navigate:&error]; +``` + +### Resolving App Link Metadata + +Bolts allows for custom App Link resolution, which may be used as a performance optimization (e.g. caching the metadata) or as a mechanism to allow developers to use a centralized index for obtaining App Link metadata. A custom App Link resolver just needs to be able to take a URL and return a `BFAppLink` containing the ordered list of `BFAppLinkTarget`s that are applicable for this device. Bolts provides one of these out of the box that performs this resolution on the device using a hidden UIWebView. + +You can use any resolver that implements the `BFAppLinkResolving` protocol by using one of the overloads on `BFAppLinkNavigation`: + +```objective-c +[BFAppLinkNavigation navigateToURLInBackground:url + resolver:resolver]; +``` + +Alternatively, a you can swap out the default resolver to be used by the built-in APIs: + +```objective-c +[BFAppLinkNavigation setDefaultResolver:resolver]; +[BFAppLinkNavigation navigateToURLInBackground:url]; +``` + +## App Link Return-to-Referer View + +When an application is opened via an App Link, a banner allowing the user to "Touch to return to " should be displayed. The `BFAppLinkReturnToRefererView` provides this functionality. It will take an incoming App Link and parse the referer information to display the appropriate calling app name. + +```objective-c +- (void)viewDidLoad { + [super viewDidLoad]; + + // Perform other view initialization. + + self.returnToRefererController = [[BFAppLinkReturnToRefererController alloc] init]; + + // self.returnToRefererView is a BFAppLinkReturnToRefererView. + // You may initialize the view either by loading it from a NIB or programmatically. + self.returnToRefererController.view = self.returnToRefererView; + + // If you have a UINavigationController in the view, then the bar must be shown above it. + [self.returnToRefererController] +} +``` + +The following code assumes that the view controller has an `openedAppLinkURL` `NSURL` property that has already been populated with the URL used to open the app. You can then do something like this to show the view: + +```objective-c +- (void)viewWillAppear { + [super viewWillAppear]; + + // Show only if you have a back AppLink. + [self.returnToRefererController showViewForRefererURL:self.openedAppLinkURL]; +} +``` + +In a navigaton-controller view hierarchy, the banner should be displayed above the navigation bar, and `BFAppLinkReturnToRefererController` provides an `initForDisplayAboveNavController` method to assist with this. + +## Analytics + +Bolts introduces Measurement Event. App Links posts three different Measurement Event notifications to the application, which can be caught and integrated with existing analytics components in your application. + +* `al_nav_out` — Raised when your app switches out to an App Links URL. +* `al_nav_in` — Raised when your app opens an incoming App Links URL. +* `al_ref_back_out` — Raised when your app returns back the referrer app using the built-in top navigation back bar view. + +### Listen for App Links Measurement Events + +There are other analytics tools that are integrated with Bolts' App Links events, but you can also listen for these events yourself: + +```objective-c +[[NSNotificationCenter defaultCenter] addObserverForName:BFMeasurementEventNotificationName object:nil queue:nil usingBlock:^(NSNotification *note) { + NSDictionary *event = note.userInfo; + NSDictionary *eventData = event[BFMeasurementEventArgsKey]; + // Integrate to your logging/analytics component. +}]; +``` + +### App Links Event Fields + +App Links Measurement Events sends additional information from App Links Intents in flattened string key value pairs. Here are some of the useful fields for the three events. + +* `al_nav_in` + * `inputURL`: the URL that opens the app. + * `inputURLScheme`: the scheme of `inputURL`. + * `refererURL`: the URL that the referrer app added into `al_applink_data`: `referer_app_link`. + * `refererAppName`: the app name that the referrer app added to `al_applink_data`: `referer_app_link`. + * `sourceApplication`: the bundle of referrer application. + * `targetURL`: the `target_url` field in `al_applink_data`. + * `version`: App Links API version. + +* `al_nav_out` / `al_ref_back_out` + * `outputURL`: the URL used to open the other app (or browser). If there is an eligible app to open, this will be the custom scheme url/intent in `al_applink_data`. + * `outputURLScheme`: the scheme of `outputURL`. + * `sourceURL`: the URL of the page hosting App Links meta tags. + * `sourceURLHost`: the hostname of `sourceURL`. + * `success`: `“1”` to indicate success in opening the App Link in another app or browser; `“0”` to indicate failure to open the App Link. + * `type`: `“app”` for open in app, `“web”` for open in browser; `“fail”` when the success field is `“0”`. + * `version`: App Links API version. + +# Installation + +You can download the latest framework files from our [Releases page](https://github.com/BoltsFramework/Bolts-iOS/releases). + +Bolts is also available through [CocoaPods](http://cocoapods.org). To install it simply add the following line to your Podfile: + + pod 'Bolts' diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h new file mode 100644 index 0000000..4ed0656 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h @@ -0,0 +1,166 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import +#import +#import + +/*! + @abstract Notification indicating that the `currentAccessToken` has changed. + @discussion the userInfo dictionary of the notification will contain keys + `FBSDKAccessTokenChangeOldKey` and + `FBSDKAccessTokenChangeNewKey`. + */ +FBSDK_EXTERN NSString *const FBSDKAccessTokenDidChangeNotification; + +/*! + @abstract A key in the notification's userInfo that will be set + if and only if the user ID changed between the old and new tokens. + @discussion Token refreshes can occur automatically with the SDK + which do not change the user. If you're only interested in user + changes (such as logging out), you should check for the existence + of this key. The value is a NSNumber with a boolValue. + + On a fresh start of the app where the SDK reads in the cached value + of an access token, this key will also exist since the access token + is moving from a null state (no user) to a non-null state (user). + */ +FBSDK_EXTERN NSString *const FBSDKAccessTokenDidChangeUserID; + +/* + @abstract key in notification's userInfo object for getting the old token. + @discussion If there was no old token, the key will not be present. + */ +FBSDK_EXTERN NSString *const FBSDKAccessTokenChangeOldKey; + +/* + @abstract key in notification's userInfo object for getting the new token. + @discussion If there is no new token, the key will not be present. + */ +FBSDK_EXTERN NSString *const FBSDKAccessTokenChangeNewKey; + + +/*! + @class FBSDKAccessToken + @abstract Represents an immutable access token for using Facebook services. + */ +@interface FBSDKAccessToken : NSObject + +/*! + @abstract Returns the app ID. + */ +@property (readonly, copy, nonatomic) NSString *appID; + +/*! + @abstract Returns the known declined permissions. + */ +@property (readonly, copy, nonatomic) NSSet *declinedPermissions; + +/*! + @abstract Returns the expiration date. + */ +@property (readonly, copy, nonatomic) NSDate *expirationDate; + +/*! + @abstract Returns the known granted permissions. + */ +@property (readonly, copy, nonatomic) NSSet *permissions; + +/*! + @abstract Returns the date the token was last refreshed. +*/ +@property (readonly, copy, nonatomic) NSDate *refreshDate; + +/*! + @abstract Returns the opaque token string. + */ +@property (readonly, copy, nonatomic) NSString *tokenString; + +/*! + @abstract Returns the user ID. + */ +@property (readonly, copy, nonatomic) NSString *userID; + +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +/*! + @abstract Initializes a new instance. + @param tokenString the opaque token string. + @param permissions the granted permissions. Note this is converted to NSSet and is only + an NSArray for the convenience of literal syntax. + @param declinedPermissions the declined permissions. Note this is converted to NSSet and is only + an NSArray for the convenience of literal syntax. + @param appID the app ID. + @param userID the user ID. + @param expirationDate the optional expiration date (defaults to distantFuture). + @param refreshDate the optional date the token was last refreshed (defaults to today). + @discussion This initializer should only be used for advanced apps that + manage tokens explicitly. Typical login flows only need to use `FBSDKLoginManager` + along with `+currentAccessToken`. + */ +- (instancetype)initWithTokenString:(NSString *)tokenString + permissions:(NSArray *)permissions + declinedPermissions:(NSArray *)declinedPermissions + appID:(NSString *)appID + userID:(NSString *)userID + expirationDate:(NSDate *)expirationDate + refreshDate:(NSDate *)refreshDate +NS_DESIGNATED_INITIALIZER; + +/*! + @abstract Convenience getter to determine if a permission has been granted + @param permission The permission to check. + */ +- (BOOL)hasGranted:(NSString *)permission; + +/*! + @abstract Compares the receiver to another FBSDKAccessToken + @param token The other token + @return YES if the receiver's values are equal to the other token's values; otherwise NO + */ +- (BOOL)isEqualToAccessToken:(FBSDKAccessToken *)token; + +/*! + @abstract Returns the "global" access token that represents the currently logged in user. + @discussion The `currentAccessToken` is a convenient representation of the token of the + current user and is used by other SDK components (like `FBSDKLoginManager`). + */ ++ (FBSDKAccessToken *)currentAccessToken; + +/*! + @abstract Sets the "global" access token that represents the currently logged in user. + @param token The access token to set. + @discussion This will broadcast a notification and save the token to the app keychain. + */ ++ (void)setCurrentAccessToken:(FBSDKAccessToken *)token; + +/*! + @abstract Refresh the current access token's permission state and extend the token's expiration date, + if possible. + @param completionHandler an optional callback handler that can surface any errors related to permission refreshing. + @discussion On a successful refresh, the currentAccessToken will be updated so you typically only need to + observe the `FBSDKAccessTokenDidChangeNotification` notification. + + If a token is already expired, it cannot be refreshed. + */ ++ (void)refreshCurrentAccessToken:(FBSDKGraphRequestHandler)completionHandler; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m new file mode 100644 index 0000000..456400b --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m @@ -0,0 +1,200 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAccessToken.h" + +#import "FBSDKGraphRequestPiggybackManager.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKMath.h" +#import "FBSDKSettings+Internal.h" + +NSString *const FBSDKAccessTokenDidChangeNotification = @"com.facebook.sdk.FBSDKAccessTokenData.FBSDKAccessTokenDidChangeNotification"; +NSString *const FBSDKAccessTokenDidChangeUserID = @"FBSDKAccessTokenDidChangeUserID"; +NSString *const FBSDKAccessTokenChangeNewKey = @"FBSDKAccessToken"; +NSString *const FBSDKAccessTokenChangeOldKey = @"FBSDKAccessTokenOld"; + +static FBSDKAccessToken *g_currentAccessToken; + +#define FBSDK_ACCESSTOKEN_TOKENSTRING_KEY @"tokenString" +#define FBSDK_ACCESSTOKEN_PERMISSIONS_KEY @"permissions" +#define FBSDK_ACCESSTOKEN_DECLINEDPERMISSIONS_KEY @"declinedPermissions" +#define FBSDK_ACCESSTOKEN_APPID_KEY @"appID" +#define FBSDK_ACCESSTOKEN_USERID_KEY @"userID" +#define FBSDK_ACCESSTOKEN_REFRESHDATE_KEY @"refreshDate" +#define FBSDK_ACCESSTOKEN_EXPIRATIONDATE_KEY @"expirationDate" + +@implementation FBSDKAccessToken + +- (instancetype)init NS_UNAVAILABLE +{ + assert(0); +} + +- (instancetype)initWithTokenString:(NSString *)tokenString + permissions:(NSArray *)permissions + declinedPermissions:(NSArray *)declinedPermissions + appID:(NSString *)appID + userID:(NSString *)userID + expirationDate:(NSDate *)expirationDate + refreshDate:(NSDate *)refreshDate +{ + if ((self = [super init])) { + _tokenString = [tokenString copy]; + _permissions = [NSSet setWithArray:permissions]; + _declinedPermissions = [NSSet setWithArray:declinedPermissions]; + _appID = [appID copy]; + _userID = [userID copy]; + _expirationDate = [expirationDate copy] ?: [NSDate distantFuture]; + _refreshDate = [refreshDate copy] ?: [NSDate date]; + } + return self; +} + +- (BOOL)hasGranted:(NSString *)permission +{ + return [self.permissions containsObject:permission]; +} + ++ (FBSDKAccessToken *)currentAccessToken +{ + return g_currentAccessToken; +} + ++ (void)setCurrentAccessToken:(FBSDKAccessToken *)token +{ + if (token != g_currentAccessToken) { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + [FBSDKInternalUtility dictionary:userInfo setObject:token forKey:FBSDKAccessTokenChangeNewKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:g_currentAccessToken forKey:FBSDKAccessTokenChangeOldKey]; + if (![g_currentAccessToken.userID isEqualToString:token.userID]) { + userInfo[FBSDKAccessTokenDidChangeUserID] = @YES; + } + + g_currentAccessToken = token; + + // Only need to keep current session in web view for the case when token is current + // When token is abandoned cookies must to be cleaned up immediatelly + if (token == nil) { + [FBSDKInternalUtility deleteFacebookCookies]; + } + + [[FBSDKSettings accessTokenCache] cacheAccessToken:token]; + [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKAccessTokenDidChangeNotification + object:[self class] + userInfo:userInfo]; + } +} + ++ (void)refreshCurrentAccessToken:(FBSDKGraphRequestHandler)completionHandler +{ + if ([FBSDKAccessToken currentAccessToken]) { + FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; + [FBSDKGraphRequestPiggybackManager addRefreshPiggyback:connection permissionHandler:completionHandler]; + [connection start]; + } else { + if (completionHandler) { + completionHandler(nil, nil, [FBSDKError errorWithCode:FBSDKAccessTokenRequiredErrorCode message:@"No current access token to refresh"]); + } + } +} + +#pragma mark - Equality + +- (NSUInteger)hash +{ + NSUInteger subhashes[] = { + [self.tokenString hash], + [self.permissions hash], + [self.declinedPermissions hash], + [self.appID hash], + [self.userID hash], + [self.refreshDate hash], + [self.expirationDate hash] + }; + return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if (![object isKindOfClass:[FBSDKAccessToken class]]) { + return NO; + } + return [self isEqualToAccessToken:(FBSDKAccessToken *)object]; +} + +- (BOOL)isEqualToAccessToken:(FBSDKAccessToken *)token +{ + return (token && + [FBSDKInternalUtility object:self.tokenString isEqualToObject:token.tokenString] && + [FBSDKInternalUtility object:self.permissions isEqualToObject:token.permissions] && + [FBSDKInternalUtility object:self.declinedPermissions isEqualToObject:token.declinedPermissions] && + [FBSDKInternalUtility object:self.appID isEqualToObject:token.appID] && + [FBSDKInternalUtility object:self.userID isEqualToObject:token.userID] && + [FBSDKInternalUtility object:self.refreshDate isEqualToObject:token.refreshDate] && + [FBSDKInternalUtility object:self.expirationDate isEqualToObject:token.expirationDate] ); +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + // we're immutable. + return self; +} + +#pragma mark NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + NSString *appID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_ACCESSTOKEN_APPID_KEY]; + NSSet *declinedPermissions = [decoder decodeObjectOfClass:[NSSet class] forKey:FBSDK_ACCESSTOKEN_DECLINEDPERMISSIONS_KEY]; + NSSet *permissions = [decoder decodeObjectOfClass:[NSSet class] forKey:FBSDK_ACCESSTOKEN_PERMISSIONS_KEY]; + NSString *tokenString = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_ACCESSTOKEN_TOKENSTRING_KEY]; + NSString *userID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_ACCESSTOKEN_USERID_KEY]; + NSDate *refreshDate = [decoder decodeObjectOfClass:[NSDate class] forKey:FBSDK_ACCESSTOKEN_REFRESHDATE_KEY]; + NSDate *expirationDate = [decoder decodeObjectOfClass:[NSDate class] forKey:FBSDK_ACCESSTOKEN_EXPIRATIONDATE_KEY]; + + return [self initWithTokenString:tokenString + permissions:[permissions allObjects] + declinedPermissions:[declinedPermissions allObjects] + appID:appID + userID:userID + expirationDate:expirationDate + refreshDate:refreshDate]; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:self.appID forKey:FBSDK_ACCESSTOKEN_APPID_KEY]; + [encoder encodeObject:self.declinedPermissions forKey:FBSDK_ACCESSTOKEN_DECLINEDPERMISSIONS_KEY]; + [encoder encodeObject:self.permissions forKey:FBSDK_ACCESSTOKEN_PERMISSIONS_KEY]; + [encoder encodeObject:self.tokenString forKey:FBSDK_ACCESSTOKEN_TOKENSTRING_KEY]; + [encoder encodeObject:self.userID forKey:FBSDK_ACCESSTOKEN_USERID_KEY]; + [encoder encodeObject:self.expirationDate forKey:FBSDK_ACCESSTOKEN_EXPIRATIONDATE_KEY]; + [encoder encodeObject:self.refreshDate forKey:FBSDK_ACCESSTOKEN_REFRESHDATE_KEY]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h new file mode 100644 index 0000000..375d413 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h @@ -0,0 +1,462 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKMacros.h" + +@class FBSDKAccessToken; +@class FBSDKGraphRequest; + +/*! @abstract NSNotificationCenter name indicating a result of a failed log flush attempt. The posted object will be an NSError instance. */ +FBSDK_EXTERN NSString *const FBSDKAppEventsLoggingResultNotification; + +/*! @abstract optional plist key ("FacebookLoggingOverrideAppID") for setting `loggingOverrideAppID` */ +FBSDK_EXTERN NSString *const FBSDKAppEventsOverrideAppIDBundleKey; + +/*! + + @typedef NS_ENUM (NSUInteger, FBSDKAppEventsFlushBehavior) + + @abstract Specifies when `FBSDKAppEvents` sends log events to the server. + + */ +typedef NS_ENUM(NSUInteger, FBSDKAppEventsFlushBehavior) +{ + + /*! Flush automatically: periodically (once a minute or every 100 logged events) and always at app reactivation. */ + FBSDKAppEventsFlushBehaviorAuto = 0, + + /*! Only flush when the `flush` method is called. When an app is moved to background/terminated, the + events are persisted and re-established at activation, but they will only be written with an + explicit call to `flush`. */ + FBSDKAppEventsFlushBehaviorExplicitOnly, + +}; + +/*! + @methodgroup Predefined event names for logging events common to many apps. Logging occurs through the `logEvent` family of methods on `FBSDKAppEvents`. + Common event parameters are provided in the `FBSDKAppEventsParameterNames*` constants. + */ + +/*! Log this event when the user has achieved a level in the app. */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameAchievedLevel; + +/*! Log this event when the user has entered their payment info. */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameAddedPaymentInfo; + +/*! Log this event when the user has added an item to their cart. The valueToSum passed to logEvent should be the item's price. */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameAddedToCart; + +/*! Log this event when the user has added an item to their wishlist. The valueToSum passed to logEvent should be the item's price. */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameAddedToWishlist; + +/*! Log this event when a user has completed registration with the app. */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameCompletedRegistration; + +/*! Log this event when the user has completed a tutorial in the app. */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameCompletedTutorial; + +/*! Log this event when the user has entered the checkout process. The valueToSum passed to logEvent should be the total price in the cart. */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameInitiatedCheckout; + +/*! Log this event when the user has rated an item in the app. The valueToSum passed to logEvent should be the numeric rating. */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameRated; + +/*! Log this event when a user has performed a search within the app. */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameSearched; + +/*! Log this event when the user has spent app credits. The valueToSum passed to logEvent should be the number of credits spent. */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameSpentCredits; + +/*! Log this event when the user has unlocked an achievement in the app. */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameUnlockedAchievement; + +/*! Log this event when a user has viewed a form of content in the app. */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameViewedContent; + +/*! + @methodgroup Predefined event name parameters for common additional information to accompany events logged through the `logEvent` family + of methods on `FBSDKAppEvents`. Common event names are provided in the `FBAppEventName*` constants. + */ + +/*! Parameter key used to specify an ID for the specific piece of content being logged about. Could be an EAN, article identifier, etc., depending on the nature of the app. */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameContentID; + +/*! Parameter key used to specify a generic content type/family for the logged event, e.g. "music", "photo", "video". Options to use will vary based upon what the app is all about. */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameContentType; + +/*! Parameter key used to specify currency used with logged event. E.g. "USD", "EUR", "GBP". See ISO-4217 for specific values. One reference for these is . */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameCurrency; + +/*! Parameter key used to specify a description appropriate to the event being logged. E.g., the name of the achievement unlocked in the `FBAppEventNameAchievementUnlocked` event. */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameDescription; + +/*! Parameter key used to specify the level achieved in a `FBAppEventNameAchieved` event. */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameLevel; + +/*! Parameter key used to specify the maximum rating available for the `FBAppEventNameRate` event. E.g., "5" or "10". */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameMaxRatingValue; + +/*! Parameter key used to specify how many items are being processed for an `FBAppEventNameInitiatedCheckout` or `FBAppEventNamePurchased` event. */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameNumItems; + +/*! Parameter key used to specify whether payment info is available for the `FBAppEventNameInitiatedCheckout` event. `FBSDKAppEventParameterValueYes` and `FBSDKAppEventParameterValueNo` are good canonical values to use for this parameter. */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterNamePaymentInfoAvailable; + +/*! Parameter key used to specify method user has used to register for the app, e.g., "Facebook", "email", "Twitter", etc */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameRegistrationMethod; + +/*! Parameter key used to specify the string provided by the user for a search operation. */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameSearchString; + +/*! Parameter key used to specify whether the activity being logged about was successful or not. `FBSDKAppEventParameterValueYes` and `FBSDKAppEventParameterValueNo` are good canonical values to use for this parameter. */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterNameSuccess; + +/* + @methodgroup Predefined values to assign to event parameters that accompany events logged through the `logEvent` family + of methods on `FBSDKAppEvents`. Common event parameters are provided in the `FBSDKAppEventParameterName*` constants. + */ + +/*! Yes-valued parameter value to be used with parameter keys that need a Yes/No value */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterValueYes; + +/*! No-valued parameter value to be used with parameter keys that need a Yes/No value */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterValueNo; + + +/*! + + @class FBSDKAppEvents + + @abstract + Client-side event logging for specialized application analytics available through Facebook App Insights + and for use with Facebook Ads conversion tracking and optimization. + + @discussion + The `FBSDKAppEvents` static class has a few related roles: + + + Logging predefined and application-defined events to Facebook App Insights with a + numeric value to sum across a large number of events, and an optional set of key/value + parameters that define "segments" for this event (e.g., 'purchaserStatus' : 'frequent', or + 'gamerLevel' : 'intermediate') + + + Logging events to later be used for ads optimization around lifetime value. + + + Methods that control the way in which events are flushed out to the Facebook servers. + + Here are some important characteristics of the logging mechanism provided by `FBSDKAppEvents`: + + + Events are not sent immediately when logged. They're cached and flushed out to the Facebook servers + in a number of situations: + - when an event count threshold is passed (currently 100 logged events). + - when a time threshold is passed (currently 15 seconds). + - when an app has gone to background and is then brought back to the foreground. + + + Events will be accumulated when the app is in a disconnected state, and sent when the connection is + restored and one of the above 'flush' conditions are met. + + + The `FBSDKAppEvents` class is thread-safe in that events may be logged from any of the app's threads. + + + The developer can set the `flushBehavior` on `FBSDKAppEvents` to force the flushing of events to only + occur on an explicit call to the `flush` method. + + + The developer can turn on console debug output for event logging and flushing to the server by using + the `FBSDKLoggingBehaviorAppEvents` value in `[FBSettings setLoggingBehavior:]`. + + Some things to note when logging events: + + + There is a limit on the number of unique event names an app can use, on the order of 1000. + + There is a limit to the number of unique parameter names in the provided parameters that can + be used per event, on the order of 25. This is not just for an individual call, but for all + invocations for that eventName. + + Event names and parameter names (the keys in the NSDictionary) must be between 2 and 40 characters, and + must consist of alphanumeric characters, _, -, or spaces. + + The length of each parameter value can be no more than on the order of 100 characters. + + */ +@interface FBSDKAppEvents : NSObject + +/* + * Basic event logging + */ + +/*! + + @abstract + Log an event with just an eventName. + + @param eventName The name of the event to record. Limitations on number of events and name length + are given in the `FBSDKAppEvents` documentation. + + */ ++ (void)logEvent:(NSString *)eventName; + +/*! + + @abstract + Log an event with an eventName and a numeric value to be aggregated with other events of this name. + + @param eventName The name of the event to record. Limitations on number of events and name length + are given in the `FBSDKAppEvents` documentation. Common event names are provided in `FBAppEventName*` constants. + + @param valueToSum Amount to be aggregated into all events of this eventName, and App Insights will report + the cumulative and average value of this amount. + */ ++ (void)logEvent:(NSString *)eventName + valueToSum:(double)valueToSum; + + +/*! + + @abstract + Log an event with an eventName and a set of key/value pairs in the parameters dictionary. + Parameter limitations are described above. + + @param eventName The name of the event to record. Limitations on number of events and name construction + are given in the `FBSDKAppEvents` documentation. Common event names are provided in `FBAppEventName*` constants. + + @param parameters Arbitrary parameter dictionary of characteristics. The keys to this dictionary must + be NSString's, and the values are expected to be NSString or NSNumber. Limitations on the number of + parameters and name construction are given in the `FBSDKAppEvents` documentation. Commonly used parameter names + are provided in `FBSDKAppEventParameterName*` constants. + */ ++ (void)logEvent:(NSString *)eventName + parameters:(NSDictionary *)parameters; + +/*! + + @abstract + Log an event with an eventName, a numeric value to be aggregated with other events of this name, + and a set of key/value pairs in the parameters dictionary. + + @param eventName The name of the event to record. Limitations on number of events and name construction + are given in the `FBSDKAppEvents` documentation. Common event names are provided in `FBAppEventName*` constants. + + @param valueToSum Amount to be aggregated into all events of this eventName, and App Insights will report + the cumulative and average value of this amount. + + @param parameters Arbitrary parameter dictionary of characteristics. The keys to this dictionary must + be NSString's, and the values are expected to be NSString or NSNumber. Limitations on the number of + parameters and name construction are given in the `FBSDKAppEvents` documentation. Commonly used parameter names + are provided in `FBSDKAppEventParameterName*` constants. + + */ ++ (void)logEvent:(NSString *)eventName + valueToSum:(double)valueToSum + parameters:(NSDictionary *)parameters; + + +/*! + + @abstract + Log an event with an eventName, a numeric value to be aggregated with other events of this name, + and a set of key/value pairs in the parameters dictionary. Providing session lets the developer + target a particular . If nil is provided, then `[FBSession activeSession]` will be used. + + @param eventName The name of the event to record. Limitations on number of events and name construction + are given in the `FBSDKAppEvents` documentation. Common event names are provided in `FBAppEventName*` constants. + + @param valueToSum Amount to be aggregated into all events of this eventName, and App Insights will report + the cumulative and average value of this amount. Note that this is an NSNumber, and a value of `nil` denotes + that this event doesn't have a value associated with it for summation. + + @param parameters Arbitrary parameter dictionary of characteristics. The keys to this dictionary must + be NSString's, and the values are expected to be NSString or NSNumber. Limitations on the number of + parameters and name construction are given in the `FBSDKAppEvents` documentation. Commonly used parameter names + are provided in `FBSDKAppEventParameterName*` constants. + + @param accessToken The optional access token to log the event as. + */ ++ (void)logEvent:(NSString *)eventName + valueToSum:(NSNumber *)valueToSum + parameters:(NSDictionary *)parameters + accessToken:(FBSDKAccessToken *)accessToken; + +/* + * Purchase logging + */ + +/*! + + @abstract + Log a purchase of the specified amount, in the specified currency. + + @param purchaseAmount Purchase amount to be logged, as expressed in the specified currency. This value + will be rounded to the thousandths place (e.g., 12.34567 becomes 12.346). + + @param currency Currency, is denoted as, e.g. "USD", "EUR", "GBP". See ISO-4217 for + specific values. One reference for these is . + + @discussion This event immediately triggers a flush of the `FBSDKAppEvents` event queue, unless the `flushBehavior` is set + to `FBSDKAppEventsFlushBehaviorExplicitOnly`. + + */ ++ (void)logPurchase:(double)purchaseAmount + currency:(NSString *)currency; + +/*! + + @abstract + Log a purchase of the specified amount, in the specified currency, also providing a set of + additional characteristics describing the purchase. + + @param purchaseAmount Purchase amount to be logged, as expressed in the specified currency.This value + will be rounded to the thousandths place (e.g., 12.34567 becomes 12.346). + + @param currency Currency, is denoted as, e.g. "USD", "EUR", "GBP". See ISO-4217 for + specific values. One reference for these is . + + @param parameters Arbitrary parameter dictionary of characteristics. The keys to this dictionary must + be NSString's, and the values are expected to be NSString or NSNumber. Limitations on the number of + parameters and name construction are given in the `FBSDKAppEvents` documentation. Commonly used parameter names + are provided in `FBSDKAppEventParameterName*` constants. + + @discussion This event immediately triggers a flush of the `FBSDKAppEvents` event queue, unless the `flushBehavior` is set + to `FBSDKAppEventsFlushBehaviorExplicitOnly`. + + */ ++ (void)logPurchase:(double)purchaseAmount + currency:(NSString *)currency + parameters:(NSDictionary *)parameters; + +/*! + + @abstract + Log a purchase of the specified amount, in the specified currency, also providing a set of + additional characteristics describing the purchase, as well as an to log to. + + @param purchaseAmount Purchase amount to be logged, as expressed in the specified currency.This value + will be rounded to the thousandths place (e.g., 12.34567 becomes 12.346). + + @param currency Currency, is denoted as, e.g. "USD", "EUR", "GBP". See ISO-4217 for + specific values. One reference for these is . + + @param parameters Arbitrary parameter dictionary of characteristics. The keys to this dictionary must + be NSString's, and the values are expected to be NSString or NSNumber. Limitations on the number of + parameters and name construction are given in the `FBSDKAppEvents` documentation. Commonly used parameter names + are provided in `FBSDKAppEventParameterName*` constants. + + @param accessToken The optional access token to log the event as. + + @discussion This event immediately triggers a flush of the `FBSDKAppEvents` event queue, unless the `flushBehavior` is set + to `FBSDKAppEventsFlushBehaviorExplicitOnly`. + + */ ++ (void)logPurchase:(double)purchaseAmount + currency:(NSString *)currency + parameters:(NSDictionary *)parameters + accessToken:(FBSDKAccessToken *)accessToken; + +/*! + + @abstract + Notifies the events system that the app has launched and, when appropriate, logs an "activated app" event. Should typically be placed in the + app delegates' `applicationDidBecomeActive:` method. + + This method also takes care of logging the event indicating the first time this app has been launched, which, among other things, is used to + track user acquisition and app install ads conversions. + + @discussion + `activateApp` will not log an event on every app launch, since launches happen every time the app is backgrounded and then foregrounded. + "activated app" events will be logged when the app has not been active for more than 60 seconds. This method also causes a "deactivated app" + event to be logged when sessions are "completed", and these events are logged with the session length, with an indication of how much + time has elapsed between sessions, and with the number of background/foreground interruptions that session had. This data + is all visible in your app's App Events Insights. + */ ++ (void)activateApp; + +/* + * Control over event batching/flushing + */ + +/*! + + @abstract + Get the current event flushing behavior specifying when events are sent back to Facebook servers. + */ ++ (FBSDKAppEventsFlushBehavior)flushBehavior; + +/*! + + @abstract + Set the current event flushing behavior specifying when events are sent back to Facebook servers. + + @param flushBehavior The desired `FBSDKAppEventsFlushBehavior` to be used. + */ ++ (void)setFlushBehavior:(FBSDKAppEventsFlushBehavior)flushBehavior; + +/*! + @abstract + Set the 'override' App ID for App Event logging. + + @discussion + In some cases, apps want to use one Facebook App ID for login and social presence and another + for App Event logging. (An example is if multiple apps from the same company share an app ID for login, but + want distinct logging.) By default, this value is `nil`, and defers to the `FBSDKAppEventsOverrideAppIDBundleKey` + plist value. If that's not set, it defaults to `[FBSDKSettings appID]`. + + This should be set before any other calls are made to `FBSDKAppEvents`. Thus, you should set it in your application + delegate's `application:didFinishLaunchingWithOptions:` delegate. + + @param appID The Facebook App ID to be used for App Event logging. + */ ++ (void)setLoggingOverrideAppID:(NSString *)appID; + +/*! + @abstract + Get the 'override' App ID for App Event logging. + + @see setLoggingOverrideAppID: + + */ ++ (NSString *)loggingOverrideAppID; + + +/*! + @abstract + Explicitly kick off flushing of events to Facebook. This is an asynchronous method, but it does initiate an immediate + kick off. Server failures will be reported through the NotificationCenter with notification ID `FBSDKAppEventsLoggingResultNotification`. + */ ++ (void)flush; + +/*! + @abstract + Creates a request representing the Graph API call to retrieve a Custom Audience "third party ID" for the app's Facebook user. + Callers will send this ID back to their own servers, collect up a set to create a Facebook Custom Audience with, + and then use the resultant Custom Audience to target ads. + + @param accessToken The access token to use to establish the user's identity for users logged into Facebook through this app. + If `nil`, then the `[FBSDKAccessToken currentAccessToken]` is used. + + @discussion + The JSON in the request's response will include an "custom_audience_third_party_id" key/value pair, with the value being the ID retrieved. + This ID is an encrypted encoding of the Facebook user's ID and the invoking Facebook app ID. + Multiple calls with the same user will return different IDs, thus these IDs cannot be used to correlate behavior + across devices or applications, and are only meaningful when sent back to Facebook for creating Custom Audiences. + + The ID retrieved represents the Facebook user identified in the following way: if the specified access token is valid, + the ID will represent the user associated with that token; otherwise the ID will represent the user logged into the + native Facebook app on the device. If there is no native Facebook app, no one is logged into it, or the user has opted out + at the iOS level from ad tracking, then a `nil` ID will be returned. + + This method returns `nil` if either the user has opted-out (via iOS) from Ad Tracking, the app itself has limited event usage + via the `[FBSDKSettings limitEventAndDataUsage]` flag, or a specific Facebook user cannot be identified. + */ ++ (FBSDKGraphRequest *)requestForCustomAudienceThirdPartyIDWithAccessToken:(FBSDKAccessToken *)accessToken; +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m new file mode 100644 index 0000000..7891652 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m @@ -0,0 +1,831 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAppEvents.h" +#import "FBSDKAppEvents+Internal.h" + +#import + +#import "FBSDKAccessToken.h" +#import "FBSDKAppEventsState.h" +#import "FBSDKAppEventsStateManager.h" +#import "FBSDKAppEventsUtility.h" +#import "FBSDKConstants.h" +#import "FBSDKError.h" +#import "FBSDKGraphRequest+Internal.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKLogger.h" +#import "FBSDKPaymentObserver.h" +#import "FBSDKServerConfiguration.h" +#import "FBSDKServerConfigurationManager.h" +#import "FBSDKSettings.h" +#import "FBSDKTimeSpentData.h" +#import "FBSDKUtility.h" + +// +// Public event names +// + +// General purpose +NSString *const FBSDKAppEventNameCompletedRegistration = @"fb_mobile_complete_registration"; +NSString *const FBSDKAppEventNameViewedContent = @"fb_mobile_content_view"; +NSString *const FBSDKAppEventNameSearched = @"fb_mobile_search"; +NSString *const FBSDKAppEventNameRated = @"fb_mobile_rate"; +NSString *const FBSDKAppEventNameCompletedTutorial = @"fb_mobile_tutorial_completion"; +NSString *const FBSDKAppEventParameterLaunchSource = @"fb_mobile_launch_source"; + +// Ecommerce related +NSString *const FBSDKAppEventNameAddedToCart = @"fb_mobile_add_to_cart"; +NSString *const FBSDKAppEventNameAddedToWishlist = @"fb_mobile_add_to_wishlist"; +NSString *const FBSDKAppEventNameInitiatedCheckout = @"fb_mobile_initiated_checkout"; +NSString *const FBSDKAppEventNameAddedPaymentInfo = @"fb_mobile_add_payment_info"; + +// Gaming related +NSString *const FBSDKAppEventNameAchievedLevel = @"fb_mobile_level_achieved"; +NSString *const FBSDKAppEventNameUnlockedAchievement = @"fb_mobile_achievement_unlocked"; +NSString *const FBSDKAppEventNameSpentCredits = @"fb_mobile_spent_credits"; + +// +// Public event parameter names +// + +NSString *const FBSDKAppEventParameterNameCurrency = @"fb_currency"; +NSString *const FBSDKAppEventParameterNameRegistrationMethod = @"fb_registration_method"; +NSString *const FBSDKAppEventParameterNameContentType = @"fb_content_type"; +NSString *const FBSDKAppEventParameterNameContentID = @"fb_content_id"; +NSString *const FBSDKAppEventParameterNameSearchString = @"fb_search_string"; +NSString *const FBSDKAppEventParameterNameSuccess = @"fb_success"; +NSString *const FBSDKAppEventParameterNameMaxRatingValue = @"fb_max_rating_value"; +NSString *const FBSDKAppEventParameterNamePaymentInfoAvailable = @"fb_payment_info_available"; +NSString *const FBSDKAppEventParameterNameNumItems = @"fb_num_items"; +NSString *const FBSDKAppEventParameterNameLevel = @"fb_level"; +NSString *const FBSDKAppEventParameterNameDescription = @"fb_description"; + +// +// Public event parameter values +// + +NSString *const FBSDKAppEventParameterValueNo = @"0"; +NSString *const FBSDKAppEventParameterValueYes = @"1"; + +// +// Event names internal to this file +// +NSString *const FBSDKAppEventNamePurchased = @"fb_mobile_purchase"; + +NSString *const FBSDKAppEventNameLoginViewUsage = @"fb_login_view_usage"; +NSString *const FBSDKAppEventNameShareSheetLaunch = @"fb_share_sheet_launch"; +NSString *const FBSDKAppEventNameShareSheetDismiss = @"fb_share_sheet_dismiss"; +NSString *const FBSDKAppEventNamePermissionsUILaunch = @"fb_permissions_ui_launch"; +NSString *const FBSDKAppEventNamePermissionsUIDismiss = @"fb_permissions_ui_dismiss"; +NSString *const FBSDKAppEventNameFBDialogsPresentShareDialog = @"fb_dialogs_present_share"; +NSString *const FBSDKAppEventNameFBDialogsPresentShareDialogPhoto = @"fb_dialogs_present_share_photo"; +NSString *const FBSDKAppEventNameFBDialogsPresentShareDialogOG = @"fb_dialogs_present_share_og"; +NSString *const FBSDKAppEventNameFBDialogsPresentLikeDialogOG = @"fb_dialogs_present_like_og"; +NSString *const FBSDKAppEventNameFBDialogsPresentMessageDialog = @"fb_dialogs_present_message"; +NSString *const FBSDKAppEventNameFBDialogsPresentMessageDialogPhoto = @"fb_dialogs_present_message_photo"; +NSString *const FBSDKAppEventNameFBDialogsPresentMessageDialogOG = @"fb_dialogs_present_message_og"; + +NSString *const FBSDKAppEventNameFBDialogsNativeLoginDialogStart = @"fb_dialogs_native_login_dialog_start"; +NSString *const FBSDKAppEventsNativeLoginDialogStartTime = @"fb_native_login_dialog_start_time"; + +NSString *const FBSDKAppEventNameFBDialogsNativeLoginDialogEnd = @"fb_dialogs_native_login_dialog_end"; +NSString *const FBSDKAppEventsNativeLoginDialogEndTime = @"fb_native_login_dialog_end_time"; + +NSString *const FBSDKAppEventNameFBDialogsWebLoginCompleted = @"fb_dialogs_web_login_dialog_complete"; +NSString *const FBSDKAppEventsWebLoginE2E = @"fb_web_login_e2e"; + +NSString *const FBSDKAppEventNameFBSessionAuthStart = @"fb_mobile_login_start"; +NSString *const FBSDKAppEventNameFBSessionAuthEnd = @"fb_mobile_login_complete"; +NSString *const FBSDKAppEventNameFBSessionAuthMethodStart = @"fb_mobile_login_method_start"; +NSString *const FBSDKAppEventNameFBSessionAuthMethodEnd = @"fb_mobile_login_method_complete"; + +NSString *const FBSDKAppEventNameFBSDKLikeButtonImpression = @"fb_like_button_impression"; +NSString *const FBSDKAppEventNameFBSDKLoginButtonImpression = @"fb_login_button_impression"; +NSString *const FBSDKAppEventNameFBSDKSendButtonImpression = @"fb_send_button_impression"; +NSString *const FBSDKAppEventNameFBSDKShareButtonImpression = @"fb_share_button_impression"; + +NSString *const FBSDKAppEventNameFBSDKLikeButtonDidTap = @"fb_like_button_did_tap"; +NSString *const FBSDKAppEventNameFBSDKLoginButtonDidTap = @"fb_login_button_did_tap"; +NSString *const FBSDKAppEventNameFBSDKSendButtonDidTap = @"fb_send_button_did_tap"; +NSString *const FBSDKAppEventNameFBSDKShareButtonDidTap = @"fb_share_button_did_tap"; + +NSString *const FBSDKAppEventNameFBSDKLikeControlDidDisable = @"fb_like_control_did_disable"; +NSString *const FBSDKAppEventNameFBSDKLikeControlDidLike = @"fb_like_control_did_like"; +NSString *const FBSDKAppEventNameFBSDKLikeControlDidPresentDialog = @"fb_like_control_did_present_dialog"; +NSString *const FBSDKAppEventNameFBSDKLikeControlDidTap = @"fb_like_control_did_tap"; +NSString *const FBSDKAppEventNameFBSDKLikeControlDidUnlike = @"fb_like_control_did_unlike"; +NSString *const FBSDKAppEventNameFBSDKLikeControlError = @"fb_like_control_error"; +NSString *const FBSDKAppEventNameFBSDKLikeControlImpression = @"fb_like_control_impression"; +NSString *const FBSDKAppEventNameFBSDKLikeControlNetworkUnavailable = @"fb_like_control_network_unavailable"; + +NSString *const FBSDLAppEventNameFBSDKEventShareDialogResult = @"fb_dialog_share_result"; +NSString *const FBSDKAppEventNameFBSDKEventMessengerShareDialogResult = @"fb_messenger_dialog_share_result"; +NSString *const FBSDKAppEventNameFBSDKEventAppInviteShareDialogResult = @"fb_app_invite_dialog_share_result"; + +NSString *const FBSDKAppEventNameFBSDKEventShareDialogShow = @"fb_dialog_share_show"; +NSString *const FBSDKAppEventNameFBSDKEventMessengerShareDialogShow = @"fb_messenger_dialog_share_show"; +NSString *const FBSDKAppEventNameFBSDKEventAppInviteShareDialogShow = @"fb_app_invite_share_show"; + +// Event Parameters internal to this file +NSString *const FBSDKAppEventParameterDialogOutcome = @"fb_dialog_outcome"; +NSString *const FBSDKAppEventParameterDialogErrorMessage = @"fb_dialog_outcome_error_message"; +NSString *const FBSDKAppEventParameterDialogMode = @"fb_dialog_mode"; +NSString *const FBSDKAppEventParameterDialogShareContentType = @"fb_dialog_share_content_type"; + +// Event parameter values internal to this file +NSString *const FBSDKAppEventsDialogOutcomeValue_Completed = @"Completed"; +NSString *const FBSDKAppEventsDialogOutcomeValue_Cancelled = @"Cancelled"; +NSString *const FBSDKAppEventsDialogOutcomeValue_Failed = @"Failed"; + +NSString *const FBSDKAppEventsDialogShareModeAutomatic = @"Automatic"; +NSString *const FBSDKAppEventsDialogShareModeBrowser = @"Browser"; +NSString *const FBSDKAppEventsDialogShareModeNative = @"Native"; +NSString *const FBSDKAppEventsDialogShareModeShareSheet = @"ShareSheet"; +NSString *const FBSDKAppEventsDialogShareModeWeb = @"Web"; +NSString *const FBSDKAppEventsDialogShareModeFeedBrowser = @"FeedBrowser"; +NSString *const FBSDKAppEventsDialogShareModeFeedWeb = @"FeedWeb"; +NSString *const FBSDKAppEventsDialogShareModeUnknown = @"Unknown"; + +NSString *const FBSDKAppEventsDialogShareContentTypeOpenGraph = @"OpenGraph"; +NSString *const FBSDKAppEventsDialogShareContentTypeStatus = @"Status"; +NSString *const FBSDKAppEventsDialogShareContentTypePhoto = @"Photo"; +NSString *const FBSDKAppEventsDialogShareContentTypeVideo = @"Video"; +NSString *const FBSDKAppEventsDialogShareContentTypeUnknown = @"Unknown"; + +NSString *const FBSDKAppEventsLoggingResultNotification = @"com.facebook.sdk:FBSDKAppEventsLoggingResultNotification"; + +NSString *const FBSDKAppEventsOverrideAppIDBundleKey = @"FacebookLoggingOverrideAppID"; + +#define NUM_LOG_EVENTS_TO_TRY_TO_FLUSH_AFTER 100 +#define FLUSH_PERIOD_IN_SECONDS 15 +#define APP_SUPPORTS_ATTRIBUTION_ID_RECHECK_PERIOD 60 * 60 * 24 + +static NSString *g_overrideAppID = nil; + +@interface FBSDKAppEvents () + +@property (nonatomic, readwrite) FBSDKAppEventsFlushBehavior flushBehavior; +//for testing only. +@property (nonatomic, assign) BOOL disableTimer; +@end + +@implementation FBSDKAppEvents +{ + BOOL _explicitEventsLoggedYet; + NSTimer *_flushTimer; + NSTimer *_attributionIDRecheckTimer; + FBSDKServerConfiguration *_serverConfiguration; + FBSDKAppEventsState *_appEventsState; +} + +#pragma mark - Object Lifecycle + ++ (void)initialize +{ + if (self == [FBSDKAppEvents class]) { + g_overrideAppID = [[[NSBundle mainBundle] objectForInfoDictionaryKey:FBSDKAppEventsOverrideAppIDBundleKey] copy]; + } +} + +- (FBSDKAppEvents *)init +{ + self = [super init]; + if (self) { + _flushBehavior = FBSDKAppEventsFlushBehaviorAuto; + _flushTimer = [NSTimer scheduledTimerWithTimeInterval:FLUSH_PERIOD_IN_SECONDS + target:self + selector:@selector(flushTimerFired:) + userInfo:nil + repeats:YES]; + + _attributionIDRecheckTimer = [NSTimer scheduledTimerWithTimeInterval:APP_SUPPORTS_ATTRIBUTION_ID_RECHECK_PERIOD + target:self + selector:@selector(appSettingsFetchStateResetTimerFired:) + userInfo:nil + repeats:YES]; + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector(applicationMovingFromActiveStateOrTerminating) + name:UIApplicationWillResignActiveNotification + object:NULL]; + + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector(applicationMovingFromActiveStateOrTerminating) + name:UIApplicationWillTerminateNotification + object:NULL]; + + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector(applicationDidBecomeActive) + name:UIApplicationDidBecomeActiveNotification + object:NULL]; + } + + return self; +} + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; + // technically these timers retain self so there's a cycle but + // we're a singleton anyway. + [_flushTimer invalidate]; + [_attributionIDRecheckTimer invalidate]; +} + +#pragma mark - Public Methods + ++ (void)logEvent:(NSString *)eventName +{ + [FBSDKAppEvents logEvent:eventName + parameters:nil]; +} + ++ (void)logEvent:(NSString *)eventName + valueToSum:(double)valueToSum +{ + [FBSDKAppEvents logEvent:eventName + valueToSum:valueToSum + parameters:nil]; +} + ++ (void)logEvent:(NSString *)eventName + parameters:(NSDictionary *)parameters +{ + [FBSDKAppEvents logEvent:eventName + valueToSum:nil + parameters:parameters + accessToken:nil]; +} + ++ (void)logEvent:(NSString *)eventName + valueToSum:(double)valueToSum + parameters:(NSDictionary *)parameters +{ + [FBSDKAppEvents logEvent:eventName + valueToSum:[NSNumber numberWithDouble:valueToSum] + parameters:parameters + accessToken:nil]; +} + ++ (void)logEvent:(NSString *)eventName + valueToSum:(NSNumber *)valueToSum + parameters:(NSDictionary *)parameters + accessToken:(FBSDKAccessToken *)accessToken +{ + [[FBSDKAppEvents singleton] instanceLogEvent:eventName + valueToSum:valueToSum + parameters:parameters + isImplicitlyLogged:NO + accessToken:accessToken]; +} + ++ (void)logPurchase:(double)purchaseAmount + currency:(NSString *)currency +{ + [FBSDKAppEvents logPurchase:purchaseAmount + currency:currency + parameters:nil]; +} + ++ (void)logPurchase:(double)purchaseAmount + currency:(NSString *)currency + parameters:(NSDictionary *)parameters +{ + [FBSDKAppEvents logPurchase:purchaseAmount + currency:currency + parameters:parameters + accessToken:nil]; +} + ++ (void)logPurchase:(double)purchaseAmount + currency:(NSString *)currency + parameters:(NSDictionary *)parameters + accessToken:(FBSDKAccessToken *)accessToken +{ + + // A purchase event is just a regular logged event with a given event name + // and treating the currency value as going into the parameters dictionary. + NSDictionary *newParameters; + if (!parameters) { + newParameters = @{ FBSDKAppEventParameterNameCurrency : currency }; + } else { + newParameters = [NSMutableDictionary dictionaryWithDictionary:parameters]; + [newParameters setValue:currency forKey:FBSDKAppEventParameterNameCurrency]; + } + + [FBSDKAppEvents logEvent:FBSDKAppEventNamePurchased + valueToSum:[NSNumber numberWithDouble:purchaseAmount] + parameters:newParameters + accessToken:accessToken]; + + // Unless the behavior is set to only allow explicit flushing, we go ahead and flush, since purchase events + // are relatively rare and relatively high value and worth getting across on wire right away. + if ([FBSDKAppEvents flushBehavior] != FBSDKAppEventsFlushBehaviorExplicitOnly) { + [[FBSDKAppEvents singleton] flushForReason:FBSDKAppEventsFlushReasonEagerlyFlushingEvent]; + } +} + ++ (void)activateApp +{ + [FBSDKAppEventsUtility ensureOnMainThread]; + + // Fetch app settings and register for transaction notifications only if app supports implicit purchase + // events + FBSDKAppEvents *instance = [FBSDKAppEvents singleton]; + [instance publishInstall]; + [instance fetchServerConfiguration:NULL]; + + // Restore time spent data, indicating that we're being called from "activateApp", which will, + // when appropriate, result in logging an "activated app" and "deactivated app" (for the + // previous session) App Event. + [FBSDKTimeSpentData restore:YES]; +} + ++ (FBSDKAppEventsFlushBehavior)flushBehavior +{ + return [FBSDKAppEvents singleton].flushBehavior; +} + ++ (void)setFlushBehavior:(FBSDKAppEventsFlushBehavior)flushBehavior +{ + [FBSDKAppEvents singleton].flushBehavior = flushBehavior; +} + ++ (NSString *)loggingOverrideAppID +{ + return g_overrideAppID; +} + ++ (void)setLoggingOverrideAppID:(NSString *)appID +{ + if (![g_overrideAppID isEqualToString:appID]) { + FBSDKConditionalLog(![FBSDKAppEvents singleton]->_explicitEventsLoggedYet, + FBSDKLoggingBehaviorDeveloperErrors, + @"[FBSDKAppEvents setLoggingOverrideAppID:] should only be called prior to any events being logged."); + g_overrideAppID = appID; + } +} + ++ (void)flush +{ + [[FBSDKAppEvents singleton] flushForReason:FBSDKAppEventsFlushReasonExplicit]; +} + +#pragma mark - Internal Methods + ++ (void)logImplicitEvent:(NSString *)eventName + valueToSum:(NSNumber *)valueToSum + parameters:(NSDictionary *)parameters + accessToken:(FBSDKAccessToken *)accessToken +{ + [[FBSDKAppEvents singleton] instanceLogEvent:eventName + valueToSum:valueToSum + parameters:parameters + isImplicitlyLogged:YES + accessToken:accessToken]; +} + ++ (FBSDKAppEvents *)singleton +{ + static dispatch_once_t pred; + static FBSDKAppEvents *shared = nil; + + dispatch_once(&pred, ^{ + shared = [[FBSDKAppEvents alloc] init]; + }); + return shared; +} + +- (void)flushForReason:(FBSDKAppEventsFlushReason)flushReason +{ + // Always flush asynchronously, even on main thread, for two reasons: + // - most consistent code path for all threads. + // - allow locks being held by caller to be released prior to actual flushing work being done. + @synchronized (self) { + if (!_appEventsState) { + return; + } + FBSDKAppEventsState *copy = [_appEventsState copy]; + _appEventsState = [[FBSDKAppEventsState alloc] initWithToken:copy.tokenString + appID:copy.appID]; + dispatch_async(dispatch_get_main_queue(), ^{ + [self flushOnMainQueue:copy forReason:flushReason]; + }); + } +} + +#pragma mark - Private Methods +- (NSString *)appID +{ + return [FBSDKAppEvents loggingOverrideAppID] ?: [FBSDKSettings appID]; +} + +- (void)publishInstall +{ + NSString *appID = [self appID]; + NSString *lastAttributionPingString = [NSString stringWithFormat:@"com.facebook.sdk:lastAttributionPing%@", appID]; + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + if ([defaults objectForKey:lastAttributionPingString]) { + return; + } + [self fetchServerConfiguration:^{ + NSDictionary *params = [FBSDKAppEventsUtility activityParametersDictionaryForEvent:@"MOBILE_APP_INSTALL" + implicitEventsOnly:NO + shouldAccessAdvertisingID:_serverConfiguration.isAdvertisingIDEnabled]; + NSString *path = [NSString stringWithFormat:@"%@/activities", appID]; + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:path + parameters:params + tokenString:nil + HTTPMethod:@"POST" + flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; + [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + if (!error) { + [defaults setObject:[NSDate date] forKey:lastAttributionPingString]; + NSString *lastInstallResponseKey = [NSString stringWithFormat:@"com.facebook.sdk:lastInstallResponse%@", appID]; + [defaults setObject:result forKey:lastInstallResponseKey]; + [defaults synchronize]; + } + }]; + }]; +} + +// app events can use a server configuration up to 24 hours old to minimize network traffic. +- (void)fetchServerConfiguration:(void (^)(void))callback +{ + if (_serverConfiguration == nil) { + [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:^(FBSDKServerConfiguration *serverConfiguration, NSError *error) { + _serverConfiguration = serverConfiguration; + + if (_serverConfiguration.implicitPurchaseLoggingEnabled) { + [FBSDKPaymentObserver startObservingTransactions]; + } else { + [FBSDKPaymentObserver stopObservingTransactions]; + } + if (callback) { + callback(); + } + }]; + return; + } + if (callback) { + callback(); + } +} + +- (void)instanceLogEvent:(NSString *)eventName + valueToSum:(NSNumber *)valueToSum + parameters:(NSDictionary *)parameters + isImplicitlyLogged:(BOOL)isImplicitlyLogged + accessToken:(FBSDKAccessToken *)accessToken +{ + if (isImplicitlyLogged && _serverConfiguration && !_serverConfiguration.isImplicitLoggingSupported) { + return; + } + + if (!isImplicitlyLogged && !_explicitEventsLoggedYet) { + _explicitEventsLoggedYet = YES; + } + + __block BOOL failed = NO; + + if (![FBSDKAppEventsUtility validateIdentifier:eventName]) { + failed = YES; + } + + // Make sure parameter dictionary is well formed. Log and exit if not. + [parameters enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + if (![key isKindOfClass:[NSString class]]) { + [FBSDKAppEventsUtility logAndNotify:[NSString stringWithFormat:@"The keys in the parameters must be NSStrings, '%@' is not.", key]]; + failed = YES; + } + if (![FBSDKAppEventsUtility validateIdentifier:key]) { + failed = YES; + } + if (![obj isKindOfClass:[NSString class]] && ![obj isKindOfClass:[NSNumber class]]) { + [FBSDKAppEventsUtility logAndNotify:[NSString stringWithFormat:@"The values in the parameters dictionary must be NSStrings or NSNumbers, '%@' is not.", obj]]; + failed = YES; + } + } + ]; + + if (failed) { + return; + } + + NSMutableDictionary *eventDictionary = [NSMutableDictionary dictionaryWithDictionary:parameters]; + eventDictionary[@"_eventName"] = eventName; + eventDictionary[@"_logTime"] = @([FBSDKAppEventsUtility unixTimeNow]); + [FBSDKInternalUtility dictionary:eventDictionary setObject:valueToSum forKey:@"_valueToSum"]; + if (isImplicitlyLogged) { + eventDictionary[@"_implicitlyLogged"] = @"1"; + } + + NSString *currentViewControllerName; + if ([NSThread isMainThread]) { + // We only collect the view controller when on the main thread, as the behavior off + // the main thread is unpredictable. Besides, UI state for off-main-thread computations + // isn't really relevant anyhow. + UIViewController *vc = [UIApplication sharedApplication].keyWindow.rootViewController.presentedViewController; + if (vc) { + currentViewControllerName = [[vc class] description]; + } else { + currentViewControllerName = @"no_ui"; + } + } else { + currentViewControllerName = @"off_thread"; + } + eventDictionary[@"_ui"] = currentViewControllerName; + + NSString *tokenString = [FBSDKAppEventsUtility tokenStringToUseFor:accessToken]; + NSString *appID = [self appID]; + + @synchronized (self) { + if (!_appEventsState) { + _appEventsState = [[FBSDKAppEventsState alloc] initWithToken:tokenString appID:appID]; + } else if (![_appEventsState isCompatibleWithTokenString:tokenString appID:appID]) { + if (self.flushBehavior == FBSDKAppEventsFlushBehaviorExplicitOnly) { + [FBSDKAppEventsStateManager persistAppEventsData:_appEventsState]; + } else { + [self flushForReason:FBSDKAppEventsFlushReasonSessionChange]; + } + _appEventsState = [[FBSDKAppEventsState alloc] initWithToken:tokenString appID:appID]; + } + + [_appEventsState addEvent:eventDictionary isImplicit:isImplicitlyLogged]; + if (!isImplicitlyLogged) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAppEvents + formatString:@"FBSDKAppEvents: Recording event @ %ld: %@", + [FBSDKAppEventsUtility unixTimeNow], + eventDictionary]; + } + + [self checkPersistedEvents]; + + if (_appEventsState.events.count > NUM_LOG_EVENTS_TO_TRY_TO_FLUSH_AFTER && + self.flushBehavior != FBSDKAppEventsFlushBehaviorExplicitOnly) { + [self flushForReason:FBSDKAppEventsFlushReasonEventThreshold]; + } + } +} + +// this fetches persisted event states. +// for those matching the currently tracked events, add it. +// otherwise, either flush (if not explicitonly behavior) or persist them back. +- (void)checkPersistedEvents +{ + NSArray *existingEventsStates = [FBSDKAppEventsStateManager retrievePersistedAppEventsStates]; + if (existingEventsStates.count == 0) { + return; + } + FBSDKAppEventsState *matchingEventsPreviouslySaved = nil; + // reduce lock time by creating a new FBSDKAppEventsState to collect matching persisted events. + @synchronized(self) { + if (_appEventsState) { + matchingEventsPreviouslySaved = [[FBSDKAppEventsState alloc] initWithToken:_appEventsState.tokenString + appID:_appEventsState.appID]; + } + } + for (FBSDKAppEventsState *saved in existingEventsStates) { + if ([saved isCompatibleWithAppEventsState:matchingEventsPreviouslySaved]) { + [matchingEventsPreviouslySaved addEventsFromAppEventState:saved]; + } else { + if (self.flushBehavior == FBSDKAppEventsFlushBehaviorExplicitOnly) { + [FBSDKAppEventsStateManager persistAppEventsData:saved]; + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + [self flushOnMainQueue:saved forReason:FBSDKAppEventsFlushReasonPersistedEvents]; + }); + } + } + } + if (matchingEventsPreviouslySaved.events.count > 0) { + @synchronized(self) { + if ([_appEventsState isCompatibleWithAppEventsState:matchingEventsPreviouslySaved]) { + [_appEventsState addEventsFromAppEventState:matchingEventsPreviouslySaved]; + } + } + } +} + +- (void)flushOnMainQueue:(FBSDKAppEventsState *)appEventsState + forReason:(FBSDKAppEventsFlushReason)reason +{ + if (appEventsState.events.count == 0) { + return; + } + [FBSDKAppEventsUtility ensureOnMainThread]; + + [self fetchServerConfiguration:^(void) { + NSString *JSONString = [appEventsState JSONStringForEvents:_serverConfiguration.implicitLoggingEnabled]; + NSData *encodedEvents = [JSONString dataUsingEncoding:NSUTF8StringEncoding]; + if (!encodedEvents) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAppEvents + logEntry:@"FBSDKAppEvents: Flushing skipped - no events after removing implicitly logged ones.\n"]; + return; + } + NSMutableDictionary *postParameters = [FBSDKAppEventsUtility + activityParametersDictionaryForEvent:@"CUSTOM_APP_EVENTS" + implicitEventsOnly:appEventsState.areAllEventsImplicit + shouldAccessAdvertisingID:_serverConfiguration.advertisingIDEnabled]; + postParameters[@"custom_events_file"] = encodedEvents; + if (appEventsState.numSkipped > 0) { + postParameters[@"num_skipped_events"] = [NSString stringWithFormat:@"%lu", (unsigned long)appEventsState.numSkipped]; + } + + NSString *loggingEntry = nil; + if ([[FBSDKSettings loggingBehavior] containsObject:FBSDKLoggingBehaviorAppEvents]) { + NSData *prettyJSONData = [NSJSONSerialization dataWithJSONObject:appEventsState.events + options:NSJSONWritingPrettyPrinted + error:NULL]; + NSString *prettyPrintedJsonEvents = [[NSString alloc] initWithData:prettyJSONData + encoding:NSUTF8StringEncoding]; + // Remove this param -- just an encoding of the events which we pretty print later. + NSMutableDictionary *paramsForPrinting = [postParameters mutableCopy]; + [paramsForPrinting removeObjectForKey:@"custom_events_file"]; + + loggingEntry = [NSString stringWithFormat:@"FBSDKAppEvents: Flushed @ %ld, %lu events due to '%@' - %@\nEvents: %@", + [FBSDKAppEventsUtility unixTimeNow], + (unsigned long)appEventsState.events.count, + [FBSDKAppEventsUtility flushReasonToString:reason], + paramsForPrinting, + prettyPrintedJsonEvents]; + } + + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/activities", appEventsState.appID] + parameters:postParameters + tokenString:appEventsState.tokenString + HTTPMethod:@"POST" + flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; + + [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + [self handleActivitiesPostCompletion:error + loggingEntry:loggingEntry + appEventsState:(FBSDKAppEventsState *)appEventsState]; + }]; + + }]; +} + +- (void)handleActivitiesPostCompletion:(NSError *)error + loggingEntry:(NSString *)loggingEntry + appEventsState:(FBSDKAppEventsState *)appEventsState +{ + typedef NS_ENUM(NSUInteger, FBSDKAppEventsFlushResult) { + FlushResultSuccess, + FlushResultServerError, + FlushResultNoConnectivity + }; + + [FBSDKAppEventsUtility ensureOnMainThread]; + + FBSDKAppEventsFlushResult flushResult = FlushResultSuccess; + if (error) { + NSInteger errorCode = [error.userInfo[FBSDKGraphRequestErrorHTTPStatusCodeKey] integerValue]; + + // We interpret a 400 coming back from FBRequestConnection as a server error due to improper data being + // sent down. Otherwise we assume no connectivity, or another condition where we could treat it as no connectivity. + flushResult = errorCode == 400 ? FlushResultServerError : FlushResultNoConnectivity; + } + + if (flushResult == FlushResultServerError) { + // Only log events that developer can do something with (i.e., if parameters are incorrect). + // as opposed to cases where the token is bad. + if ([error.userInfo[FBSDKGraphRequestErrorCategoryKey] unsignedIntegerValue] == FBSDKGraphRequestErrorCategoryOther) { + NSString *message = [NSString stringWithFormat:@"Failed to send AppEvents: %@", error]; + [FBSDKAppEventsUtility logAndNotify:message allowLogAsDeveloperError:!appEventsState.areAllEventsImplicit]; + } + } else if (flushResult == FlushResultNoConnectivity) { + @synchronized(self) { + if ([appEventsState isCompatibleWithAppEventsState:_appEventsState]) { + [_appEventsState addEventsFromAppEventState:appEventsState]; + } else { + // flush failed due to connectivity. Persist to be tried again later. + [FBSDKAppEventsStateManager persistAppEventsData:appEventsState]; + } + } + } + + NSString *resultString = @""; + switch (flushResult) { + case FlushResultSuccess: + resultString = @"Success"; + break; + + case FlushResultNoConnectivity: + resultString = @"No Connectivity"; + break; + + case FlushResultServerError: + resultString = [NSString stringWithFormat:@"Server Error - %@", [error description]]; + break; + } + + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAppEvents + formatString:@"%@\nFlush Result : %@", loggingEntry, resultString]; +} + +- (void)flushTimerFired:(id)arg +{ + [FBSDKAppEventsUtility ensureOnMainThread]; + if (self.flushBehavior != FBSDKAppEventsFlushBehaviorExplicitOnly && !self.disableTimer) { + [self flushForReason:FBSDKAppEventsFlushReasonTimer]; + } +} + +- (void)appSettingsFetchStateResetTimerFired:(id)arg +{ + _serverConfiguration = nil; +} + +- (void)applicationDidBecomeActive +{ + [FBSDKAppEventsUtility ensureOnMainThread]; + + [self checkPersistedEvents]; + + // Restore time spent data, indicating that we're not being called from "activateApp". + [FBSDKTimeSpentData restore:NO]; +} + +- (void)applicationMovingFromActiveStateOrTerminating +{ + // When moving from active state, we don't have time to wait for the result of a flush, so + // just persist events to storage, and we'll process them at the next activation. + FBSDKAppEventsState *copy = nil; + @synchronized (self) { + copy = [_appEventsState copy]; + _appEventsState = nil; + } + if (copy) { + [FBSDKAppEventsStateManager persistAppEventsData:copy]; + } + [FBSDKTimeSpentData suspend]; +} + +#pragma mark - Custom Audience + ++ (FBSDKGraphRequest *)requestForCustomAudienceThirdPartyIDWithAccessToken:(FBSDKAccessToken *)accessToken +{ + accessToken = accessToken ?: [FBSDKAccessToken currentAccessToken]; + // Rules for how we use the attribution ID / advertiser ID for an 'custom_audience_third_party_id' Graph API request + // 1) if the OS tells us that the user has Limited Ad Tracking, then just don't send, and return a nil in the token. + // 2) if the app has set 'limitEventAndDataUsage', this effectively implies that app-initiated ad targeting shouldn't happen, + // so use that data here to return nil as well. + // 3) if we have a user session token, then no need to send attribution ID / advertiser ID back as the udid parameter + // 4) otherwise, send back the udid parameter. + + if ([FBSDKAppEventsUtility advertisingTrackingStatus] == FBSDKAdvertisingTrackingDisallowed || [FBSDKSettings limitEventAndDataUsage]) { + return nil; + } + + NSString *tokenString = [FBSDKAppEventsUtility tokenStringToUseFor:accessToken]; + NSString *udid = nil; + if (!accessToken) { + // We don't have a logged in user, so we need some form of udid representation. Prefer advertiser ID if + // available, and back off to attribution ID if not. Note that this function only makes sense to be + // called in the context of advertising. + udid = [FBSDKAppEventsUtility advertiserID]; + if (!udid) { + udid = [FBSDKAppEventsUtility attributionID]; + } + + if (!udid) { + // No udid, and no user token. No point in making the request. + return nil; + } + } + + NSDictionary *parameters = nil; + if (udid) { + parameters = @{ @"udid" : udid }; + } + + NSString *graphPath = [NSString stringWithFormat:@"%@/custom_audience_third_party_id", [[self singleton] appID]]; + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:graphPath + parameters:parameters + tokenString:tokenString + HTTPMethod:nil + flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; + + return request; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h new file mode 100644 index 0000000..8e65e5b --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h @@ -0,0 +1,82 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@class BFTask; + +// Check if Bolts.framework is available for import +#if __has_include() +// Import it if it's available +# import +#else +// Otherwise - redeclare BFAppLinkResolving protocol to resolve the problem of missing symbols +// Please note: Bolts.framework is still required for AppLink resolving to work, +// but this allows FBSDKCoreKit to weakly link Bolts.framework as well as this enables clang modulemaps to work. + +/*! + Implement this protocol to provide an alternate strategy for resolving + App Links that may include pre-fetching, caching, or querying for App Link + data from an index provided by a service provider. + */ +@protocol BFAppLinkResolving + +/*! + Asynchronously resolves App Link data for a given URL. + + @param url The URL to resolve into an App Link. + @returns A BFTask that will return a BFAppLink for the given URL. + */ +- (BFTask *)appLinkFromURLInBackground:(NSURL *)url; + +@end + +#endif + +/*! + @class FBSDKAppLinkResolver + + @abstract + Provides an implementation of the BFAppLinkResolving protocol that uses the Facebook App Link + Index API to resolve App Links given a URL. It also provides an additional helper method that can resolve + multiple App Links in a single call. + + @discussion + Usage of this type requires a client token. See `[FBSDKSettings setClientToken:]` and linking + Bolts.framework + */ +@interface FBSDKAppLinkResolver : NSObject + +/*! + @abstract Asynchronously resolves App Link data for multiple URLs. + + @param urls An array of NSURLs to resolve into App Links. + @returns A BFTask that will return dictionary mapping input NSURLs to their + corresponding BFAppLink. + + @discussion + You should set the client token before making this call. See `[FBSDKSettings setClientToken:]` + */ +- (BFTask *)appLinksFromURLsInBackground:(NSArray *)urls; + +/*! + @abstract Allocates and initializes a new instance of FBSDKAppLinkResolver. + */ ++ (instancetype)resolver; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m new file mode 100644 index 0000000..9ce2143 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m @@ -0,0 +1,195 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAppLinkResolver.h" + +#import + +#import +#import +#import +#import + +#import "FBSDKGraphRequest+Internal.h" +#import "FBSDKGraphRequestConnection.h" +#import "FBSDKLogger.h" +#import "FBSDKSettings+Internal.h" +#import "FBSDKUtility.h" + +static NSString *const kURLKey = @"url"; +static NSString *const kIOSAppStoreIdKey = @"app_store_id"; +static NSString *const kIOSAppNameKey = @"app_name"; +static NSString *const kWebKey = @"web"; +static NSString *const kIOSKey = @"ios"; +static NSString *const kIPhoneKey = @"iphone"; +static NSString *const kIPadKey = @"ipad"; +static NSString *const kShouldFallbackKey = @"should_fallback"; +static NSString *const kAppLinksKey = @"app_links"; + +static void FBSDKAppLinkResolverBoltsClassFromString(Class *clazz, NSString *className) +{ + *clazz = NSClassFromString(className); + if (*clazz == nil) { + NSString *message = [NSString stringWithFormat:@"Unable to load class %@. Did you link Bolts.framework?", className]; + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:message + userInfo:nil]; + } +} + +@interface FBSDKAppLinkResolver () + +@property (nonatomic, strong) NSMutableDictionary *cachedLinks; +@property (nonatomic, assign) UIUserInterfaceIdiom userInterfaceIdiom; +@end + +@implementation FBSDKAppLinkResolver + +static Class g_BFTaskCompletionSourceClass; +static Class g_BFAppLinkTargetClass; +static Class g_BFAppLinkClass; +static Class g_BFTaskClass; + ++ (void)initialize +{ + if (self == [FBSDKAppLinkResolver class]) { + FBSDKAppLinkResolverBoltsClassFromString(&g_BFTaskCompletionSourceClass, @"BFTaskCompletionSource"); + FBSDKAppLinkResolverBoltsClassFromString(&g_BFAppLinkTargetClass, @"BFAppLinkTarget"); + FBSDKAppLinkResolverBoltsClassFromString(&g_BFAppLinkClass, @"BFAppLink"); + FBSDKAppLinkResolverBoltsClassFromString(&g_BFTaskClass, @"BFTask"); + } +} + +- (id)initWithUserInterfaceIdiom:(UIUserInterfaceIdiom)userInterfaceIdiom +{ + if (self = [super init]) { + self.cachedLinks = [NSMutableDictionary dictionary]; + self.userInterfaceIdiom = userInterfaceIdiom; + } + return self; +} + +- (BFTask *)appLinksFromURLsInBackground:(NSArray *)urls +{ + if (![FBSDKSettings clientToken] && ![FBSDKAccessToken currentAccessToken]) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors + logEntry:@"A user access token or clientToken is required to use FBAppLinkResolver"]; + } + NSMutableDictionary *appLinks = [NSMutableDictionary dictionary]; + NSMutableArray *toFind = [NSMutableArray array]; + NSMutableArray *toFindStrings = [NSMutableArray array]; + + @synchronized (self.cachedLinks) { + for (NSURL *url in urls) { + if (self.cachedLinks[url]) { + appLinks[url] = self.cachedLinks[url]; + } else { + [toFind addObject:url]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + [toFindStrings addObject:[url.absoluteString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; +#pragma clang diagnostic pop + } + } + } + if (toFind.count == 0) { + // All of the URLs have already been found. + return [g_BFTaskClass taskWithResult:appLinks]; + } + NSMutableArray *fields = [NSMutableArray arrayWithObject:kIOSKey]; + + NSString *idiomSpecificField = nil; + + switch (self.userInterfaceIdiom) { + case UIUserInterfaceIdiomPad: + idiomSpecificField = kIPadKey; + break; + case UIUserInterfaceIdiomPhone: + idiomSpecificField = kIPhoneKey; + break; + default: + break; + } + if (idiomSpecificField) { + [fields addObject:idiomSpecificField]; + } + NSString *path = [NSString stringWithFormat:@"?fields=%@.fields(%@)&ids=%@", + kAppLinksKey, + [fields componentsJoinedByString:@","], + [toFindStrings componentsJoinedByString:@","]]; + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:path + parameters:nil + flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; + BFTaskCompletionSource *tcs = [g_BFTaskCompletionSourceClass taskCompletionSource]; + [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + if (error) { + [tcs setError:error]; + return; + } + for (NSURL *url in toFind) { + id nestedObject = [[result objectForKey:url.absoluteString] objectForKey:kAppLinksKey]; + NSMutableArray *rawTargets = [NSMutableArray array]; + if (idiomSpecificField) { + [rawTargets addObjectsFromArray:[nestedObject objectForKey:idiomSpecificField]]; + } + [rawTargets addObjectsFromArray:[nestedObject objectForKey:kIOSKey]]; + + NSMutableArray *targets = [NSMutableArray arrayWithCapacity:rawTargets.count]; + for (id rawTarget in rawTargets) { + [targets addObject:[g_BFAppLinkTargetClass appLinkTargetWithURL:[NSURL URLWithString:[rawTarget objectForKey:kURLKey]] + appStoreId:[rawTarget objectForKey:kIOSAppStoreIdKey] + appName:[rawTarget objectForKey:kIOSAppNameKey]]]; + } + + id webTarget = [nestedObject objectForKey:kWebKey]; + NSString *webFallbackString = [webTarget objectForKey:kURLKey]; + NSURL *fallbackUrl = webFallbackString ? [NSURL URLWithString:webFallbackString] : url; + + NSNumber *shouldFallback = [webTarget objectForKey:kShouldFallbackKey]; + if (shouldFallback && !shouldFallback.boolValue) { + fallbackUrl = nil; + } + + BFAppLink *link = [g_BFAppLinkClass appLinkWithSourceURL:url + targets:targets + webURL:fallbackUrl]; + @synchronized (self.cachedLinks) { + self.cachedLinks[url] = link; + } + appLinks[url] = link; + } + [tcs setResult:appLinks]; + }]; + return tcs.task; +} + +- (BFTask *)appLinkFromURLInBackground:(NSURL *)url +{ + // Implement in terms of appLinksFromURLsInBackground + BFTask *resolveTask = [self appLinksFromURLsInBackground:@[url]]; + return [resolveTask continueWithSuccessBlock:^id(BFTask *task) { + return task.result[url]; + }]; +} + ++ (id)resolver +{ + return [[self alloc] initWithUserInterfaceIdiom:UI_USER_INTERFACE_IDIOM()]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h new file mode 100644 index 0000000..216b71d --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h @@ -0,0 +1,55 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +/*! + @abstract Describes the callback for fetchDeferredAppLink. + @param url the url representing the deferred App Link + @param error the error during the request, if any + + @discussion The url may also have a fb_click_time_utc query parameter that + represents when the click occurred that caused the deferred App Link to be created. + */ +typedef void (^FBSDKDeferredAppLinkHandler)(NSURL *url, NSError *error); + +/*! + @abstract Class containing App Links related utility methods. + */ +@interface FBSDKAppLinkUtility : NSObject + +/*! + @abstract + Call this method from the main thread to fetch deferred applink data if you use Mobile App + Engagement Ads (https://developers.facebook.com/docs/ads-for-apps/mobile-app-ads-engagement). + This may require a network round trip. If successful, the handler is invoked with the link + data (this will only return a valid URL once, and future calls will result in a nil URL + value in the callback). + + @param handler the handler to be invoked if there is deferred App Link data + + @discussion The handler may contain an NSError instance to capture any errors. In the + common case where there simply was no app link data, the NSError instance will be nil. + + This method should only be called from a location that occurs after any launching URL has + been processed (e.g., you should call this method from your application delegate's + applicationDidBecomeActive:). + */ ++ (void)fetchDeferredAppLink:(FBSDKDeferredAppLinkHandler)handler; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m new file mode 100644 index 0000000..83dc2c4 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m @@ -0,0 +1,80 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAppLinkUtility.h" + +#import "FBSDKAppEventsUtility.h" +#import "FBSDKGraphRequest.h" +#import "FBSDKSettings.h" +#import "FBSDKUtility.h" + +static NSString *const FBSDKLastDeferredAppLink = @"com.facebook.sdk:lastDeferredAppLink%@"; +static NSString *const FBSDKDeferredAppLinkEvent = @"DEFERRED_APP_LINK"; + +@implementation FBSDKAppLinkUtility {} + ++ (void)fetchDeferredAppLink:(FBSDKDeferredAppLinkHandler)handler +{ + NSAssert([NSThread isMainThread], @"FBSDKAppLink fetchDeferredAppLink: must be invoked from main thread."); + + NSString *appID = [FBSDKSettings appID]; + + // Deferred app links are only currently used for engagement ads, thus we consider the app to be an advertising one. + // If this is considered for organic, non-ads scenarios, we'll need to retrieve the FBAppEventsUtility.shouldAccessAdvertisingID + // before we make this call. + NSMutableDictionary *deferredAppLinkParameters = + [FBSDKAppEventsUtility activityParametersDictionaryForEvent:FBSDKDeferredAppLinkEvent + implicitEventsOnly:NO + shouldAccessAdvertisingID:YES]; + + FBSDKGraphRequest *deferredAppLinkRequest = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/activities", appID, nil] + parameters:deferredAppLinkParameters + tokenString:nil + version:nil + HTTPMethod:@"POST"]; + + [deferredAppLinkRequest startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, + id result, + NSError *error) { + NSURL *applinkURL = nil; + if (!error) { + NSString *appLinkString = result[@"applink_url"]; + if (appLinkString) { + applinkURL = [NSURL URLWithString:appLinkString]; + + NSString *createTimeUtc = result[@"click_time"]; + if (createTimeUtc) { + // append/translate the create_time_utc so it can be used by clients + NSString *modifiedURLString = [[applinkURL absoluteString] + stringByAppendingFormat:@"%@fb_click_time_utc=%@", + ([applinkURL query]) ? @"&" : @"?" , + createTimeUtc ]; + applinkURL = [NSURL URLWithString:modifiedURLString]; + } + } + } + + if (handler) { + dispatch_async(dispatch_get_main_queue(), ^{ + handler(applinkURL, error); + }); + } + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h new file mode 100644 index 0000000..857acd0 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h @@ -0,0 +1,74 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +/*! + @class FBSDKApplicationDelegate + + @abstract + The FBSDKApplicationDelegate is designed to post process the results from Facebook Login + or Facebook Dialogs (or any action that requires switching over to the native Facebook + app or Safari). + + @discussion + The methods in this class are designed to mirror those in UIApplicationDelegate, and you + should call them in the respective methods in your AppDelegate implementation. + */ +@interface FBSDKApplicationDelegate : NSObject + +/*! + @abstract Gets the singleton instance. + */ ++ (instancetype)sharedInstance; + +/*! + @abstract + Call this method from the [UIApplicationDelegate application:openURL:sourceApplication:annotation:] method + of the AppDelegate for your app. It should be invoked for the proper processing of responses during interaction + with the native Facebook app or Safari as part of SSO authorization flow or Facebook dialogs. + + @param application The application as passed to [UIApplicationDelegate application:openURL:sourceApplication:annotation:]. + + @param url The URL as passed to [UIApplicationDelegate application:openURL:sourceApplication:annotation:]. + + @param sourceApplication The sourceApplication as passed to [UIApplicationDelegate application:openURL:sourceApplication:annotation:]. + + @param annotation The annotation as passed to [UIApplicationDelegate application:openURL:sourceApplication:annotation:]. + + @return YES if the url was intended for the Facebook SDK, NO if not. + */ +- (BOOL)application:(UIApplication *)application + openURL:(NSURL *)url + sourceApplication:(NSString *)sourceApplication + annotation:(id)annotation; + +/*! + @abstract + Call this method from the [UIApplicationDelegate application:didFinishLaunchingWithOptions:] method + of the AppDelegate for your app. It should be invoked for the proper use of the Facebook SDK. + + @param application The application as passed to [UIApplicationDelegate application:didFinishLaunchingWithOptions:]. + + @param launchOptions The launchOptions as passed to [UIApplicationDelegate application:didFinishLaunchingWithOptions:]. + + @return YES if the url was intended for the Facebook SDK, NO if not. + */ +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m new file mode 100644 index 0000000..d3916a4 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m @@ -0,0 +1,430 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKApplicationDelegate.h" +#import "FBSDKApplicationDelegate+Internal.h" + +#import + +#import "FBSDKAppEvents+Internal.h" +#import "FBSDKBoltsMeasurementEventListener.h" +#import "FBSDKBridgeAPIRequest.h" +#import "FBSDKBridgeAPIResponse.h" +#import "FBSDKConstants.h" +#import "FBSDKContainerViewController.h" +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKError.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKLogger.h" +#import "FBSDKProfile+Internal.h" +#import "FBSDKServerConfiguration.h" +#import "FBSDKServerConfigurationManager.h" +#import "FBSDKSettings+Internal.h" +#import "FBSDKTimeSpentData.h" +#import "FBSDKUtility.h" + +NSString *const FBSDKApplicationDidBecomeActiveNotification = @"com.facebook.sdk.FBSDKApplicationDidBecomeActiveNotification"; + +static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound"; + +@implementation FBSDKApplicationDelegate +{ + FBSDKBridgeAPIRequest *_pendingRequest; + FBSDKBridgeAPICallbackBlock _pendingRequestCompletionBlock; + id _pendingURLOpen; + BOOL _expectingBackground; + UIViewController *_safariViewController; +} + +#pragma mark - Class Methods + ++ (void)load +{ + // when the app becomes active by any means, kick off the initialization. + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(initializeWithLaunchData:) + name:UIApplicationDidFinishLaunchingNotification + object:nil]; +} + +// Initialize SDK listeners +// Don't call this function in any place else. It should only be called when the class is loaded. ++ (void)initializeWithLaunchData:(NSNotification *)note +{ + NSDictionary *launchData = note.userInfo; + // Register Listener for Bolts measurement events + [FBSDKBoltsMeasurementEventListener defaultListener]; + + // Set the SourceApplication for time spent data. This is not going to update the value if the app has already launched. + [FBSDKTimeSpentData setSourceApplication:launchData[UIApplicationLaunchOptionsSourceApplicationKey] + openURL:launchData[UIApplicationLaunchOptionsURLKey]]; + // Register on UIApplicationDidEnterBackgroundNotification events to reset source application data when app backgrounds. + [FBSDKTimeSpentData registerAutoResetSourceApplication]; + + // Remove the observer + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + ++ (instancetype)sharedInstance +{ + static FBSDKApplicationDelegate *_sharedInstance; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _sharedInstance = [[self alloc] _init]; + }); + return _sharedInstance; +} + +#pragma mark - Object Lifecycle + +- (instancetype)_init +{ + if ((self = [super init]) != nil) { + NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter]; + [defaultCenter addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil]; + [defaultCenter addObserver:self selector:@selector(applicationDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil]; + } + return self; +} + +- (instancetype)init +{ + return nil; +} + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +#pragma mark - UIApplicationDelegate + +- (BOOL)application:(UIApplication *)application + openURL:(NSURL *)url + sourceApplication:(NSString *)sourceApplication + annotation:(id)annotation +{ + if (sourceApplication != nil && ![sourceApplication isKindOfClass:[NSString class]]) { + @throw [NSException exceptionWithName:NSInvalidArgumentException + reason:@"Expected 'sourceApplication' to be NSString. Please verify you are passing in 'sourceApplication' from your app delegate (not the UIApplication* parameter). If your app delegate implements iOS 9's application:openURL:options:, you should pass in options[UIApplicationOpenURLOptionsSourceApplicationKey]. " + userInfo:nil]; + } + [FBSDKTimeSpentData setSourceApplication:sourceApplication openURL:url]; + // if they completed a SFVC flow, dimiss it. + [_safariViewController.presentingViewController dismissViewControllerAnimated:YES completion: nil]; + _safariViewController = nil; + + if (_pendingURLOpen) { + id pendingURLOpen = _pendingURLOpen; + + _pendingURLOpen = nil; + + if ([pendingURLOpen application:application + openURL:url + sourceApplication:sourceApplication + annotation:annotation]) { + return YES; + } + } + if ([self _handleBridgeAPIResponseURL:url sourceApplication:sourceApplication]) { + return YES; + } + + [self _logIfAppLinkEvent:url]; + + return NO; +} + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + FBSDKProfile *cachedProfile = [FBSDKProfile fetchCachedProfile]; + [FBSDKProfile setCurrentProfile:cachedProfile]; + + FBSDKAccessToken *cachedToken = [[FBSDKSettings accessTokenCache] fetchAccessToken]; + [FBSDKAccessToken setCurrentAccessToken:cachedToken]; + + NSURL *launchedURL = launchOptions[UIApplicationLaunchOptionsURLKey]; + NSString *sourceApplication = launchOptions[UIApplicationLaunchOptionsSourceApplicationKey]; + + if (launchedURL && + sourceApplication) { + Class loginManagerClass = NSClassFromString(@"FBSDKLoginManager"); + if (loginManagerClass) { + id annotation = launchOptions[UIApplicationLaunchOptionsAnnotationKey]; + id loginManager = [[loginManagerClass alloc] init]; + return [loginManager application:application + openURL:launchedURL + sourceApplication:sourceApplication + annotation:annotation]; + } + } + return NO; +} + +- (void)applicationDidEnterBackground:(NSNotification *)notification +{ + _active = NO; + _expectingBackground = NO; +} + +- (void)applicationDidBecomeActive:(NSNotification *)notification +{ + // _expectingBackground can be YES if the caller started doing work (like login) + // within the app delegate's lifecycle like openURL, in which case there + // might have been a "didBecomeActive" event pending that we want to ignore. + if (!_expectingBackground && !_safariViewController) { + _active = YES; + [_pendingURLOpen applicationDidBecomeActive:[notification object]]; + + [self _cancelBridgeRequest]; + + [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKApplicationDidBecomeActiveNotification object:self]; + } +} + +#pragma mark - SFSafariViewControllerDelegate + +// This means the user tapped "Done" which we should treat as a cancellation. +- (void)safariViewControllerDidFinish:(UIViewController *)safariViewController +{ + if (_pendingURLOpen) { + id pendingURLOpen = _pendingURLOpen; + + _pendingURLOpen = nil; + + [pendingURLOpen application:nil + openURL:nil + sourceApplication:nil + annotation:nil]; + + } + [self _cancelBridgeRequest]; + _safariViewController = nil; +} + +#pragma mark - FBSDKContainerViewControllerDelegate + +- (void)viewControllerDidDisappear:(FBSDKContainerViewController *)viewController animated:(BOOL)animated +{ + if (_safariViewController) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors + logEntry:@"**ERROR**:\n The SFSafariViewController's parent view controller was dismissed.\n" + "This can happen if you are triggering login from a UIAlertController. Instead, make sure your top most view " + "controller will not be prematurely dismissed."]; + [self safariViewControllerDidFinish:_safariViewController]; + } +} + +#pragma mark - Internal Methods + +- (void)openBridgeAPIRequest:(FBSDKBridgeAPIRequest *)request + useSafariViewController:(BOOL)useSafariViewController + fromViewController:(UIViewController *)fromViewController + completionBlock:(FBSDKBridgeAPICallbackBlock)completionBlock +{ + if (!request) { + return; + } + NSError *error; + NSURL *requestURL = [request requestURL:&error]; + if (!requestURL) { + FBSDKBridgeAPIResponse *response = [FBSDKBridgeAPIResponse bridgeAPIResponseWithRequest:request error:error]; + completionBlock(response); + return; + } + _pendingRequest = request; + _pendingRequestCompletionBlock = [completionBlock copy]; + void (^handler)(BOOL) = ^(BOOL openedURL) { + if (!openedURL) { + _pendingRequest = nil; + _pendingRequestCompletionBlock = nil; + NSError *openedURLError; + if ([request.scheme hasPrefix:@"http"]) { + openedURLError = [FBSDKError errorWithCode:FBSDKBrowswerUnavailableErrorCode + message:@"the app switch failed because the browser is unavailable"]; + } else { + openedURLError = [FBSDKError errorWithCode:FBSDKAppVersionUnsupportedErrorCode + message:@"the app switch failed because the destination app is out of date"]; + } + FBSDKBridgeAPIResponse *response = [FBSDKBridgeAPIResponse bridgeAPIResponseWithRequest:request + error:openedURLError]; + completionBlock(response); + return; + } + }; + if (useSafariViewController) { + [self openURLWithSafariViewController:requestURL sender:nil fromViewController:fromViewController handler:handler]; + } else { + [self openURL:requestURL sender:nil handler:handler]; + } +} + +- (void)openURLWithSafariViewController:(NSURL *)url + sender:(id)sender + fromViewController:(UIViewController *)fromViewController + handler:(void(^)(BOOL))handler +{ + if (![url.scheme hasPrefix:@"http"]) { + [self openURL:url sender:sender handler:handler]; + return; + } + + _expectingBackground = NO; + _pendingURLOpen = sender; + + // trying to dynamically load SFSafariViewController class + // so for the cases when it is available we can send users through Safari View Controller flow + // in cases it is not available regular flow will be selected + Class SFSafariViewControllerClass = fbsdkdfl_SFSafariViewControllerClass(); + + if (SFSafariViewControllerClass) { + UIViewController *parent = fromViewController ?: [FBSDKInternalUtility topMostViewController]; + NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO]; + NSURLQueryItem *sfvcQueryItem = [[NSURLQueryItem alloc] initWithName:@"sfvc" value:@"1"]; + [components setQueryItems:[components.queryItems arrayByAddingObject:sfvcQueryItem]]; + url = components.URL; + FBSDKContainerViewController *container = [[FBSDKContainerViewController alloc] init]; + container.delegate = self; + if (parent.transitionCoordinator != nil) { + // Wait until the transition is finished before presenting SafariVC to avoid a blank screen. + [parent.transitionCoordinator animateAlongsideTransition:NULL completion:^(id context) { + // Note SFVC init must occur inside block to avoid blank screen. + _safariViewController = [[SFSafariViewControllerClass alloc] initWithURL:url]; + [_safariViewController performSelector:@selector(setDelegate:) withObject:self]; + [container displayChildController:_safariViewController]; + [parent presentViewController:container animated:YES completion:nil]; + }]; + } else { + _safariViewController = [[SFSafariViewControllerClass alloc] initWithURL:url]; + [_safariViewController performSelector:@selector(setDelegate:) withObject:self]; + [container displayChildController:_safariViewController]; + [parent presentViewController:container animated:YES completion:nil]; + } + + // Assuming Safari View Controller always opens + if (handler) { + handler(YES); + } + } else { + [self openURL:url sender:sender handler:handler]; + } +} + +- (void)openURL:(NSURL *)url sender:(id)sender handler:(void(^)(BOOL))handler +{ + _expectingBackground = YES; + _pendingURLOpen = sender; + dispatch_async(dispatch_get_main_queue(), ^{ + // Dispatch openURL calls to prevent hangs if we're inside the current app delegate's openURL flow already + BOOL opened = [[UIApplication sharedApplication] openURL:url]; + + if ([url.scheme hasPrefix:@"http"] && !opened) { + NSOperatingSystemVersion iOS8Version = { .majorVersion = 8, .minorVersion = 0, .patchVersion = 0 }; + if (![FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS8Version]) { + // Safari openURL calls can wrongly return NO on iOS 7 so manually overwrite that case to YES. + // Otherwise we would rather trust in the actual result of openURL + opened = YES; + } + } + if (handler) { + handler(opened); + } + }); +} + +#pragma mark - Helper Methods + +- (BOOL)_handleBridgeAPIResponseURL:(NSURL *)responseURL sourceApplication:(NSString *)sourceApplication +{ + FBSDKBridgeAPIRequest *request = _pendingRequest; + FBSDKBridgeAPICallbackBlock completionBlock = _pendingRequestCompletionBlock; + _pendingRequest = nil; + _pendingRequestCompletionBlock = NULL; + if (![responseURL.scheme isEqualToString:[FBSDKInternalUtility appURLScheme]]) { + return NO; + } + if (![responseURL.host isEqualToString:@"bridge"]) { + return NO; + } + if (!request) { + return NO; + } + if (!completionBlock) { + return YES; + } + NSError *error; + FBSDKBridgeAPIResponse *response = [FBSDKBridgeAPIResponse bridgeAPIResponseWithRequest:request + responseURL:responseURL + sourceApplication:sourceApplication + error:&error]; + if (response) { + completionBlock(response); + return YES; + } else if (error) { + completionBlock([FBSDKBridgeAPIResponse bridgeAPIResponseWithRequest:request error:error]); + return YES; + } else { + return NO; + } +} + +- (void)_logIfAppLinkEvent:(NSURL *)url +{ + if (!url) { + return; + } + NSDictionary *params = [FBSDKUtility dictionaryWithQueryString:url.query]; + NSString *applinkDataString = params[@"al_applink_data"]; + if (!applinkDataString) { + return; + } + + NSDictionary * applinkData = [FBSDKInternalUtility objectForJSONString:applinkDataString error:NULL]; + if (!applinkData) { + return; + } + + NSURL *targetURL = [NSURL URLWithString:applinkData[@"target_url"]]; + NSMutableDictionary *logData = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:logData setObject:[targetURL absoluteString] forKey:@"targetURL"]; + [FBSDKInternalUtility dictionary:logData setObject:[targetURL host] forKey:@"targetURLHost"]; + + NSDictionary *refererData = applinkData[@"referer_data"]; + if (refererData) { + [FBSDKInternalUtility dictionary:logData setObject:refererData[@"target_url"] forKey:@"referralTargetURL"]; + [FBSDKInternalUtility dictionary:logData setObject:refererData[@"url"] forKey:@"referralURL"]; + [FBSDKInternalUtility dictionary:logData setObject:refererData[@"app_name"] forKey:@"referralAppName"]; + } + [FBSDKInternalUtility dictionary:logData setObject:[url absoluteString] forKey:@"inputURL"]; + [FBSDKInternalUtility dictionary:logData setObject:[url scheme] forKey:@"inputURLScheme"]; + + [FBSDKAppEvents logImplicitEvent:FBSDKAppLinkInboundEvent + valueToSum:nil + parameters:logData + accessToken:nil]; +} + +- (void)_cancelBridgeRequest +{ + if (_pendingRequest && _pendingRequestCompletionBlock) { + _pendingRequestCompletionBlock([FBSDKBridgeAPIResponse bridgeAPIResponseCancelledWithRequest:_pendingRequest]); + } + _pendingRequest = nil; + _pendingRequestCompletionBlock = NULL; +} +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h new file mode 100644 index 0000000..8132998 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h @@ -0,0 +1,26 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +/*! + @abstract A base class for common SDK buttons. + */ +@interface FBSDKButton : UIButton + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m new file mode 100644 index 0000000..48467b5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m @@ -0,0 +1,430 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKButton.h" +#import "FBSDKButton+Subclass.h" + +#import "FBSDKAccessToken.h" +#import "FBSDKAppEvents+Internal.h" +#import "FBSDKAppEvents.h" +#import "FBSDKApplicationDelegate+Internal.h" +#import "FBSDKLogo.h" +#import "FBSDKMath.h" +#import "FBSDKUIUtility.h" +#import "FBSDKViewImpressionTracker.h" + +#define HEIGHT_TO_FONT_SIZE 0.47 +#define HEIGHT_TO_MARGIN 0.27 +#define HEIGHT_TO_PADDING 0.23 +#define HEIGHT_TO_TEXT_PADDING_CORRECTION 0.08 + +@implementation FBSDKButton +{ + BOOL _skipIntrinsicContentSizing; + BOOL _isExplicitlyDisabled; +} + +#pragma mark - Object Lifecycle + +- (instancetype)initWithFrame:(CGRect)frame +{ + if ((self = [super initWithFrame:frame])) { + _skipIntrinsicContentSizing = YES; + [self configureButton]; + _skipIntrinsicContentSizing = NO; + } + return self; +} + +- (void)awakeFromNib +{ + [super awakeFromNib]; + _skipIntrinsicContentSizing = YES; + [self configureButton]; + _skipIntrinsicContentSizing = NO; +} + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +#pragma mark - Properties + +- (void)setEnabled:(BOOL)enabled +{ + _isExplicitlyDisabled = !enabled; + [self checkImplicitlyDisabled]; +} + +#pragma mark - Layout + +- (CGRect)imageRectForContentRect:(CGRect)contentRect +{ + if ([self isHidden] || CGRectIsEmpty(self.bounds)) { + return CGRectZero; + } + CGRect imageRect = UIEdgeInsetsInsetRect(contentRect, self.imageEdgeInsets); + CGFloat margin = [self _marginForHeight:[self _heightForContentRect:contentRect]]; + imageRect = CGRectInset(imageRect, margin, margin); + imageRect.size.width = CGRectGetHeight(imageRect); + return imageRect; +} + +- (CGSize)intrinsicContentSize +{ + if (_skipIntrinsicContentSizing) { + return CGSizeZero; + } + _skipIntrinsicContentSizing = YES; + CGSize size = [self sizeThatFits:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX)]; + _skipIntrinsicContentSizing = NO; + return size; +} + +- (void)layoutSubviews +{ + // automatic impression tracking if the button conforms to FBSDKButtonImpressionTracking + if ([self conformsToProtocol:@protocol(FBSDKButtonImpressionTracking)]) { + NSString *eventName = [(id)self impressionTrackingEventName]; + NSString *identifier = [(id)self impressionTrackingIdentifier]; + NSDictionary *parameters = [(id)self analyticsParameters]; + if (eventName && identifier) { + FBSDKViewImpressionTracker *impressionTracker = [FBSDKViewImpressionTracker impressionTrackerWithEventName:eventName]; + [impressionTracker logImpressionWithIdentifier:identifier parameters:parameters]; + } + } + [super layoutSubviews]; +} + +- (CGSize)sizeThatFits:(CGSize)size +{ + if ([self isHidden]) { + return CGSizeZero; + } + CGSize normalSize = [self sizeThatFits:size title:[self titleForState:UIControlStateNormal]]; + CGSize selectedSize = [self sizeThatFits:size title:[self titleForState:UIControlStateSelected]]; + return CGSizeMake(MAX(normalSize.width, selectedSize.width), MAX(normalSize.height, selectedSize.height)); +} + +- (void)sizeToFit +{ + CGRect bounds = self.bounds; + bounds.size = [self sizeThatFits:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX)]; + self.bounds = bounds; +} + +- (CGRect)titleRectForContentRect:(CGRect)contentRect +{ + if ([self isHidden] || CGRectIsEmpty(self.bounds)) { + return CGRectZero; + } + CGRect imageRect = [self imageRectForContentRect:contentRect]; + CGFloat height = [self _heightForContentRect:contentRect]; + CGFloat padding = [self _paddingForHeight:height]; + CGFloat titleX = CGRectGetMaxX(imageRect) + padding; + CGRect titleRect = CGRectMake(titleX, 0.0, CGRectGetWidth(contentRect) - titleX, CGRectGetHeight(contentRect)); + + UIEdgeInsets titleEdgeInsets = UIEdgeInsetsZero; + if (!self.layer.needsLayout) { + UILabel *titleLabel = self.titleLabel; + if (titleLabel.textAlignment == NSTextAlignmentCenter) { + // if the text is centered, we need to adjust the frame for the titleLabel based on the size of the text in order + // to keep the text centered in the button without adding extra blank space to the right when unnecessary + // 1. the text fits centered within the button without colliding with the image (imagePaddingWidth) + // 2. the text would run into the image, so adjust the insets to effectively left align it (textPaddingWidth) + CGSize titleSize = FBSDKTextSize(titleLabel.text, + titleLabel.font, + titleRect.size, + titleLabel.lineBreakMode); + CGFloat titlePaddingWidth = (CGRectGetWidth(titleRect) - titleSize.width) / 2; + CGFloat imagePaddingWidth = (titleX - [self _marginForHeight:height]) / 2; + CGFloat inset = MIN(titlePaddingWidth, imagePaddingWidth); + titleEdgeInsets.left -= inset; + titleEdgeInsets.right += inset; + } + } + return UIEdgeInsetsInsetRect(titleRect, titleEdgeInsets); +} + +#pragma mark - Subclass Methods + +- (void)logTapEventWithEventName:(NSString *)eventName parameters:(NSDictionary *)parameters +{ + [FBSDKAppEvents logImplicitEvent:eventName + valueToSum:nil + parameters:parameters + accessToken:[FBSDKAccessToken currentAccessToken]]; +} + +- (void)checkImplicitlyDisabled +{ + BOOL enabled = !_isExplicitlyDisabled && ![self isImplicitlyDisabled]; + BOOL currentEnabled = [self isEnabled]; + [super setEnabled:enabled]; + if (currentEnabled != enabled) { + [self invalidateIntrinsicContentSize]; + [self setNeedsLayout]; + } +} + +- (void)configureButton +{ + [self configureWithIcon:[[self class] defaultIcon] + title:nil + backgroundColor:[[self class] defaultBackgroundColor] + highlightedColor:[[self class] defaultHighlightedColor]]; +} + +- (void)configureWithIcon:(FBSDKIcon *)icon + title:(NSString *)title + backgroundColor:(UIColor *)backgroundColor + highlightedColor:(UIColor *)highlightedColor +{ + [self _configureWithIcon:icon + title:title + backgroundColor:backgroundColor + highlightedColor:highlightedColor + selectedTitle:nil + selectedIcon:nil + selectedColor:nil + selectedHighlightedColor:nil]; +} + +- (void)configureWithIcon:(FBSDKIcon *)icon + title:(NSString *)title + backgroundColor:(UIColor *)backgroundColor + highlightedColor:(UIColor *)highlightedColor + selectedTitle:(NSString *)selectedTitle + selectedIcon:(FBSDKIcon *)selectedIcon + selectedColor:(UIColor *)selectedColor + selectedHighlightedColor:(UIColor *)selectedHighlightedColor +{ + if (!selectedColor) { + selectedColor = [self defaultSelectedColor]; + } + if (!selectedHighlightedColor) { + selectedHighlightedColor = highlightedColor; + } + [self _configureWithIcon:icon + title:title + backgroundColor:backgroundColor + highlightedColor:highlightedColor + selectedTitle:selectedTitle + selectedIcon:selectedIcon + selectedColor:selectedColor + selectedHighlightedColor:selectedHighlightedColor]; +} + +- (UIColor *)defaultBackgroundColor +{ + return [UIColor colorWithRed:65.0/255.0 green:93.0/255.0 blue:174.0/255.0 alpha:1.0]; +} + +- (UIColor *)defaultDisabledColor +{ + return [UIColor colorWithRed:189.0/255.0 green:193.0/255.0 blue:201.0/255.0 alpha:1.0]; +} + +- (UIColor *)defaultHighlightedColor +{ + return [UIColor colorWithRed:47.0/255.0 green:71.0/255.0 blue:122.0/255.0 alpha:1.0]; +} + +- (FBSDKIcon *)defaultIcon +{ + return [[FBSDKLogo alloc] init]; +} + +- (UIColor *)defaultSelectedColor +{ + return [UIColor colorWithRed:124.0/255.0 green:143.0/255.0 blue:200.0/255.0 alpha:1.0]; +} + +- (BOOL)isImplicitlyDisabled +{ + return NO; +} + +- (CGSize)sizeThatFits:(CGSize)size title:(NSString *)title +{ + UIFont *font = self.titleLabel.font; + CGFloat height = [self _heightForFont:font]; + + UIEdgeInsets contentEdgeInsets = self.contentEdgeInsets; + + CGSize constrainedContentSize = FBSDKEdgeInsetsInsetSize(size, contentEdgeInsets); + + CGSize titleSize = FBSDKTextSize(title, font, constrainedContentSize, self.titleLabel.lineBreakMode); + + CGFloat padding = [self _paddingForHeight:height]; + CGFloat textPaddingCorrection = [self _textPaddingCorrectionForHeight:height]; + CGSize contentSize = CGSizeMake(height + padding + titleSize.width - textPaddingCorrection, height); + return FBSDKEdgeInsetsOutsetSize(contentSize, contentEdgeInsets); +} + +#pragma mark - Helper Methods + +- (void)_applicationDidBecomeActiveNotification:(NSNotification *)notification +{ + [self checkImplicitlyDisabled]; +} + +- (UIImage *)_backgroundImageWithColor:(UIColor *)color cornerRadius:(CGFloat)cornerRadius scale:(CGFloat)scale +{ + CGFloat size = 1.0 + 2 * cornerRadius; + UIGraphicsBeginImageContextWithOptions(CGSizeMake(size, size), NO, scale); + CGContextRef context = UIGraphicsGetCurrentContext(); + CGContextSetFillColorWithColor(context, color.CGColor); + CGMutablePathRef path = CGPathCreateMutable(); + CGPathMoveToPoint(path, NULL, cornerRadius + 1.0, 0.0); + CGPathAddArcToPoint(path, NULL, size, 0.0, size, cornerRadius, cornerRadius); + CGPathAddLineToPoint(path, NULL, size, cornerRadius + 1.0); + CGPathAddArcToPoint(path, NULL, size, size, cornerRadius + 1.0, size, cornerRadius); + CGPathAddLineToPoint(path, NULL, cornerRadius, size); + CGPathAddArcToPoint(path, NULL, 0.0, size, 0.0, cornerRadius + 1.0, cornerRadius); + CGPathAddLineToPoint(path, NULL, 0.0, cornerRadius); + CGPathAddArcToPoint(path, NULL, 0.0, 0.0, cornerRadius, 0.0, cornerRadius); + CGPathCloseSubpath(path); + CGContextAddPath(context, path); + CGPathRelease(path); + CGContextFillPath(context); + UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return [image stretchableImageWithLeftCapWidth:cornerRadius topCapHeight:cornerRadius]; +} + +- (void)_configureWithIcon:(FBSDKIcon *)icon + title:(NSString *)title + backgroundColor:(UIColor *)backgroundColor + highlightedColor:(UIColor *)highlightedColor + selectedTitle:(NSString *)selectedTitle + selectedIcon:(FBSDKIcon *)selectedIcon + selectedColor:(UIColor *)selectedColor + selectedHighlightedColor:(UIColor *)selectedHighlightedColor +{ + [self checkImplicitlyDisabled]; + + if (!icon) { + icon = [self defaultIcon]; + } + if (!backgroundColor) { + backgroundColor = [self defaultBackgroundColor]; + } + if (!highlightedColor) { + highlightedColor = [self defaultHighlightedColor]; + } + + self.adjustsImageWhenDisabled = NO; + self.adjustsImageWhenHighlighted = NO; + self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill; + self.contentVerticalAlignment = UIControlContentVerticalAlignmentFill; + self.tintColor = [UIColor whiteColor]; + + BOOL forceSizeToFit = CGRectIsEmpty(self.bounds); + + CGFloat scale = [UIScreen mainScreen].scale; + UIImage *backgroundImage; + + backgroundImage = [self _backgroundImageWithColor:backgroundColor cornerRadius:3.0 scale:scale]; + [self setBackgroundImage:backgroundImage forState:UIControlStateNormal]; + + backgroundImage = [self _backgroundImageWithColor:highlightedColor cornerRadius:3.0 scale:scale]; + [self setBackgroundImage:backgroundImage forState:UIControlStateHighlighted]; + + backgroundImage = [self _backgroundImageWithColor:[self defaultDisabledColor] cornerRadius:3.0 scale:scale]; + [self setBackgroundImage:backgroundImage forState:UIControlStateDisabled]; + + if (selectedColor) { + backgroundImage = [self _backgroundImageWithColor:selectedColor cornerRadius:3.0 scale:scale]; + [self setBackgroundImage:backgroundImage forState:UIControlStateSelected]; + } + + if (selectedHighlightedColor) { + backgroundImage = [self _backgroundImageWithColor:selectedHighlightedColor cornerRadius:3.0 scale:scale]; + [self setBackgroundImage:backgroundImage forState:UIControlStateSelected | UIControlStateHighlighted]; + } + + [self setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + + [self setTitle:title forState:UIControlStateNormal]; + if (selectedTitle) { + [self setTitle:selectedTitle forState:UIControlStateSelected]; + [self setTitle:selectedTitle forState:UIControlStateSelected | UIControlStateHighlighted]; + } + + UILabel *titleLabel = self.titleLabel; + titleLabel.lineBreakMode = NSLineBreakByClipping; + UIFont *font = [UIFont boldSystemFontOfSize:14.0]; + titleLabel.font = font; + + CGSize imageSize = CGSizeMake(font.pointSize, font.pointSize); + UIImage *image = [icon imageWithSize:imageSize]; + image = [image resizableImageWithCapInsets:UIEdgeInsetsZero resizingMode:UIImageResizingModeStretch]; + [self setImage:image forState:UIControlStateNormal]; + + if (selectedIcon) { + UIImage *selectedImage = [selectedIcon imageWithSize:imageSize]; + selectedImage = [selectedImage resizableImageWithCapInsets:UIEdgeInsetsZero + resizingMode:UIImageResizingModeStretch]; + [self setImage:selectedImage forState:UIControlStateSelected]; + [self setImage:selectedImage forState:UIControlStateSelected | UIControlStateHighlighted]; + } + + if (forceSizeToFit) { + [self sizeToFit]; + } + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(_applicationDidBecomeActiveNotification:) + name:FBSDKApplicationDidBecomeActiveNotification + object:[FBSDKApplicationDelegate sharedInstance]]; +} + +- (CGFloat)_fontSizeForHeight:(CGFloat)height +{ + return floorf(height * HEIGHT_TO_FONT_SIZE); +} + +- (CGFloat)_heightForContentRect:(CGRect)contentRect +{ + UIEdgeInsets contentEdgeInsets = self.contentEdgeInsets; + return contentEdgeInsets.top + CGRectGetHeight(contentRect) + contentEdgeInsets.bottom; +} + +- (CGFloat)_heightForFont:(UIFont *)font +{ + return floorf(font.pointSize / (1 - 2 * HEIGHT_TO_MARGIN)); +} + +- (CGFloat)_marginForHeight:(CGFloat)height +{ + return floorf(height * HEIGHT_TO_MARGIN); +} + +- (CGFloat)_paddingForHeight:(CGFloat)height +{ + return roundf(height * HEIGHT_TO_PADDING) - [self _textPaddingCorrectionForHeight:height]; +} + +- (CGFloat)_textPaddingCorrectionForHeight:(CGFloat)height +{ + return floorf(height * HEIGHT_TO_TEXT_PADDING_CORRECTION); +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h new file mode 100644 index 0000000..5f53161 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h @@ -0,0 +1,210 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @abstract The error domain for all errors from FBSDKCoreKit. + @discussion Error codes from the SDK in the range 0-99 are reserved for this domain. + */ +FBSDK_EXTERN NSString *const FBSDKErrorDomain; + +/*! + @typedef NS_ENUM(NSInteger, FBSDKErrorCode) + @abstract Error codes for FBSDKErrorDomain. + */ +typedef NS_ENUM(NSInteger, FBSDKErrorCode) +{ + /*! + @abstract Reserved. + */ + FBSDKReservedErrorCode = 0, + + /*! + @abstract The error code for errors from invalid encryption on incoming encryption URLs. + */ + FBSDKEncryptionErrorCode, + + /*! + @abstract The error code for errors from invalid arguments to SDK methods. + */ + FBSDKInvalidArgumentErrorCode, + + /*! + @abstract The error code for unknown errors. + */ + FBSDKUnknownErrorCode, + + /*! + @abstract A request failed due to a network error. Use NSUnderlyingErrorKey to retrieve + the error object from the NSURLConnection for more information. + */ + FBSDKNetworkErrorCode, + + /*! + @abstract The error code for errors encounted during an App Events flush. + */ + FBSDKAppEventsFlushErrorCode, + + /*! + @abstract An endpoint that returns a binary response was used with FBSDKGraphRequestConnection. + @discussion Endpoints that return image/jpg, etc. should be accessed using NSURLRequest + */ + FBSDKGraphRequestNonTextMimeTypeReturnedErrorCode, + + /*! + @abstract The operation failed because the server returned an unexpected response. + @discussion You can get this error if you are not using the most recent SDK, or you are accessing a version of the + Graph API incompatible with the current SDK. + */ + FBSDKGraphRequestProtocolMismatchErrorCode, + + /*! + @abstract The Graph API returned an error. + @discussion See below for useful userInfo keys (beginning with FBSDKGraphRequestError*) + */ + FBSDKGraphRequestGraphAPIErrorCode, + + /*! + @abstract The specified dialog configuration is not available. + @discussion This error may signify that the configuration for the dialogs has not yet been downloaded from the server + or that the dialog is unavailable. Subsequent attempts to use the dialog may succeed as the configuration is loaded. + */ + FBSDKDialogUnavailableErrorCode, + + /*! + @abstract Indicates an operation failed because a required access token was not found. + */ + FBSDKAccessTokenRequiredErrorCode, + + /*! + @abstract Indicates an app switch (typically for a dialog) failed because the destination app is out of date. + */ + FBSDKAppVersionUnsupportedErrorCode, + + /*! + @abstract Indicates an app switch to the browser (typically for a dialog) failed. + */ + FBSDKBrowswerUnavailableErrorCode, +}; + +/*! + @typedef NS_ENUM(NSUInteger, FBSDKGraphRequestErrorCategory) + @abstract Describes the category of Facebook error. See `FBSDKGraphRequestErrorCategoryKey`. + */ +typedef NS_ENUM(NSUInteger, FBSDKGraphRequestErrorCategory) +{ + /*! The default error category that is not known to be recoverable. Check `FBSDKLocalizedErrorDescriptionKey` for a user facing message. */ + FBSDKGraphRequestErrorCategoryOther = 0, + /*! Indicates the error is temporary (such as server throttling). While a recoveryAttempter will be provided with the error instance, the attempt is guaranteed to succeed so you can simply retry the operation if you do not want to present an alert. */ + FBSDKGraphRequestErrorCategoryTransient = 1, + /*! Indicates the error can be recovered (such as requiring a login). A recoveryAttempter will be provided with the error instance that can take UI action. */ + FBSDKGraphRequestErrorCategoryRecoverable = 2 +}; + +/* + @methodgroup error userInfo keys + */ + +/*! + @abstract The userInfo key for the invalid collection for errors with FBSDKInvalidArgumentErrorCode. + @discussion If the invalid argument is a collection, the collection can be found with this key and the individual + invalid item can be found with FBSDKErrorArgumentValueKey. + */ +FBSDK_EXTERN NSString *const FBSDKErrorArgumentCollectionKey; + +/*! + @abstract The userInfo key for the invalid argument name for errors with FBSDKInvalidArgumentErrorCode. + */ +FBSDK_EXTERN NSString *const FBSDKErrorArgumentNameKey; + +/*! + @abstract The userInfo key for the invalid argument value for errors with FBSDKInvalidArgumentErrorCode. + */ +FBSDK_EXTERN NSString *const FBSDKErrorArgumentValueKey; + +/*! + @abstract The userInfo key for the message for developers in NSErrors that originate from the SDK. + @discussion The developer message will not be localized and is not intended to be presented within the app. + */ +FBSDK_EXTERN NSString *const FBSDKErrorDeveloperMessageKey; + +/*! + @abstract The userInfo key describing a localized description that can be presented to the user. + */ +FBSDK_EXTERN NSString *const FBSDKErrorLocalizedDescriptionKey; + +/*! + @abstract The userInfo key describing a localized title that can be presented to the user, used with `FBSDKLocalizedErrorDescriptionKey`. + */ +FBSDK_EXTERN NSString *const FBSDKErrorLocalizedTitleKey; + +/* + @methodgroup FBSDKGraphRequest error userInfo keys + */ + +/*! + @abstract The userInfo key describing the error category, for error recovery purposes. + @discussion See `FBSDKGraphErrorRecoveryProcessor` and `[FBSDKGraphRequest disableErrorRecovery]`. + */ +FBSDK_EXTERN NSString *const FBSDKGraphRequestErrorCategoryKey; + +/* + @abstract The userInfo key for the Graph API error code. + */ +FBSDK_EXTERN NSString *const FBSDKGraphRequestErrorGraphErrorCode; + +/* + @abstract The userInfo key for the Graph API error subcode. + */ +FBSDK_EXTERN NSString *const FBSDKGraphRequestErrorGraphErrorSubcode; + +/* + @abstract The userInfo key for the HTTP status code. + */ +FBSDK_EXTERN NSString *const FBSDKGraphRequestErrorHTTPStatusCodeKey; + +/* + @abstract The userInfo key for the raw JSON response. + */ +FBSDK_EXTERN NSString *const FBSDKGraphRequestErrorParsedJSONResponseKey; + +/*! + @abstract a formal protocol very similar to the informal protocol NSErrorRecoveryAttempting + */ +@protocol FBSDKErrorRecoveryAttempting + +/*! + @abstract attempt the recovery + @param error the error + @param recoveryOptionIndex the selected option index + @param delegate the delegate + @param didRecoverSelector the callback selector, see discussion. + @param contextInfo context info to pass back to callback selector, see discussion. + @discussion + Given that an error alert has been presented document-modally to the user, and the user has chosen one of the error's recovery options, attempt recovery from the error, and send the selected message to the specified delegate. The option index is an index into the error's array of localized recovery options. The method selected by didRecoverSelector must have the same signature as: + + - (void)didPresentErrorWithRecovery:(BOOL)didRecover contextInfo:(void *)contextInfo; + + The value passed for didRecover must be YES if error recovery was completely successful, NO otherwise. + */ +- (void)attemptRecoveryFromError:(NSError *)error optionIndex:(NSUInteger)recoveryOptionIndex delegate:(id)delegate didRecoverSelector:(SEL)didRecoverSelector contextInfo:(void *)contextInfo; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m new file mode 100644 index 0000000..f3a6ee5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m @@ -0,0 +1,34 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKConstants.h" + +NSString *const FBSDKErrorDomain = @"com.facebook.sdk.core"; + +NSString *const FBSDKErrorArgumentCollectionKey = @"com.facebook.sdk:FBSDKErrorArgumentCollectionKey"; +NSString *const FBSDKErrorArgumentNameKey = @"com.facebook.sdk:FBSDKErrorArgumentNameKey"; +NSString *const FBSDKErrorArgumentValueKey = @"com.facebook.sdk:FBSDKErrorArgumentValueKey"; +NSString *const FBSDKErrorDeveloperMessageKey = @"com.facebook.sdk:FBSDKErrorDeveloperMessageKey"; +NSString *const FBSDKErrorLocalizedDescriptionKey = @"com.facebook.sdk:FBSDKErrorLocalizedDescriptionKey"; +NSString *const FBSDKErrorLocalizedTitleKey = @"com.facebook.sdk:FBSDKErrorLocalizedErrorTitleKey"; + +NSString *const FBSDKGraphRequestErrorCategoryKey = @"com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey"; +NSString *const FBSDKGraphRequestErrorGraphErrorCode = @"com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode"; +NSString *const FBSDKGraphRequestErrorGraphErrorSubcode = @"com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorSubcode"; +NSString *const FBSDKGraphRequestErrorHTTPStatusCodeKey = @"com.facebook.sdk:FBSDKGraphRequestErrorHTTPStatusCodeKey"; +NSString *const FBSDKGraphRequestErrorParsedJSONResponseKey = @"com.facebook.sdk:FBSDKGraphRequestErrorParsedJSONResponseKey"; diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h new file mode 100644 index 0000000..f4ad767 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h @@ -0,0 +1,33 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +/*! + @abstract Extension protocol for NSCopying that adds the copy method, which is implemented on NSObject. + @discussion NSObject implicitly conforms to this protocol. + */ +@protocol FBSDKCopying + +/*! + @abstract Implemented by NSObject as a convenience to copyWithZone:. + @return A copy of the receiver. + */ +- (id)copy; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h new file mode 100644 index 0000000..3b78900 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h @@ -0,0 +1,38 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#define FBSDK_VERSION_STRING @"4.7.0" +#define FBSDK_TARGET_PLATFORM_VERSION @"v2.5" diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h new file mode 100644 index 0000000..d2b0313 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h @@ -0,0 +1,97 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKConstants.h" + +@class FBSDKGraphErrorRecoveryProcessor; +@class FBSDKGraphRequest; + +/*! + @abstract Defines a delegate for `FBSDKGraphErrorRecoveryProcessor`. + */ +@protocol FBSDKGraphErrorRecoveryProcessorDelegate + +/*! + @abstract Indicates the error recovery has been attempted. + @param processor the processor instance. + @param didRecover YES if the recovery was successful. + @param error the error that that was attempted to be recovered from. + */ +- (void)processorDidAttemptRecovery:(FBSDKGraphErrorRecoveryProcessor *)processor didRecover:(BOOL)didRecover error:(NSError *)error; + +@optional +/*! + @abstract Indicates the processor is about to process the error. + @param processor the processor instance. + @param error the error is about to be processed. + @discussion return NO if the processor should not process the error. For example, + if you want to prevent alerts of localized messages but otherwise perform retries and recoveries, + you could return NO for errors where userInfo[FBSDKGraphRequestErrorCategoryKey] equal to FBSDKGraphRequestErrorCategoryOther + */ +- (BOOL)processorWillProcessError:(FBSDKGraphErrorRecoveryProcessor *)processor error:(NSError *)error; + +@end + +/*! + @abstract Defines a type that can process Facebook NSErrors with best practices. + @discussion Facebook NSErrors can contain FBSDKErrorRecoveryAttempting instances to recover from errors, or + localized messages to present to the user. This class will process the instances as follows: + + 1. If the error is temporary as indicated by FBSDKGraphRequestErrorCategoryKey, assume the recovery succeeded and + notify the delegate. + 2. If a FBSDKErrorRecoveryAttempting instance is available, display an alert (dispatched to main thread) + with the recovery options and call the instance's [ attemptRecoveryFromError:optionIndex:...]. + 3. If a FBSDKErrorRecoveryAttempting is not available, check the userInfo for FBSDKLocalizedErrorDescriptionKey + and present that in an alert (dispatched to main thread). + + By default, FBSDKGraphRequests use this type to process errors and retry the request upon a successful + recovery. + + Note that Facebook recovery attempters can present UI or even cause app switches (such as to login). Any such + work is dispatched to the main thread (therefore your request handlers may then run on the main thread). + + Login recovery requires FBSDKLoginKit. Login will use FBSDKLoginBehaviorNative and will prompt the user + for all permissions last granted. If any are declined on the new request, the recovery is not successful but + the `[FBSDKAccessToken currentAccessToken]` might still have been updated. + . + */ +@interface FBSDKGraphErrorRecoveryProcessor : NSObject + +/*! + @abstract Gets the delegate. Note this is a strong reference, and is nil'ed out after recovery is complete. + */ +@property (nonatomic, strong, readonly) iddelegate; + +/*! + @abstract Attempts to process the error, return YES if the error can be processed. + @param error the error to process. + @param request the relateed request that may be reissued. + @param delegate the delegate that will be retained until recovery is complete. + */ +- (BOOL)processError:(NSError *)error request:(FBSDKGraphRequest *)request delegate:(id) delegate; + +/*! + @abstract The callback for FBSDKErrorRecoveryAttempting + @param didRecover if the recovery succeeded + @param contextInfo unused + */ +- (void)didPresentErrorWithRecovery:(BOOL)didRecover contextInfo:(void *)contextInfo; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m new file mode 100644 index 0000000..4caed96 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m @@ -0,0 +1,155 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKErrorRecoveryAttempter.h" + +@interface FBSDKGraphErrorRecoveryProcessor() +{ + FBSDKErrorRecoveryAttempter *_recoveryAttempter; + NSError *_error; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + UIAlertView *_alertView; +#pragma clang diagnostic pop +} + +@property (nonatomic, strong, readwrite) iddelegate; + +@end + +@implementation FBSDKGraphErrorRecoveryProcessor + +- (void)dealloc +{ + _alertView.delegate = nil; +} + +- (BOOL)processError:(NSError *)error request:(FBSDKGraphRequest *)request delegate:(id) delegate +{ + self.delegate = delegate; + if ([self.delegate respondsToSelector:@selector(processorWillProcessError:error:)]) { + if (![self.delegate processorWillProcessError:self error:error]) { + return NO; + } + } + + FBSDKGraphRequestErrorCategory errorCategory = [error.userInfo[FBSDKGraphRequestErrorCategoryKey] unsignedIntegerValue]; + switch (errorCategory) { + case FBSDKGraphRequestErrorCategoryTransient : + [self.delegate processorDidAttemptRecovery:self didRecover:YES error:nil]; + self.delegate = nil; + return YES; + case FBSDKGraphRequestErrorCategoryRecoverable : + if ([request.tokenString isEqualToString:[FBSDKAccessToken currentAccessToken].tokenString]) { + _recoveryAttempter = error.recoveryAttempter; + BOOL isLoginRecoveryAttempter = [_recoveryAttempter isKindOfClass:NSClassFromString(@"_FBSDKLoginRecoveryAttempter")]; + + // Set up a block to do the typical recovery work so that we can chain it for ios auth special cases. + // the block returns YES if recovery UI is started (meaning we wait for the alertviewdelegate to resume control flow). + BOOL (^standardRecoveryWork)(void) = ^BOOL{ + NSArray *recoveryOptionsTitles = error.userInfo[NSLocalizedRecoveryOptionsErrorKey]; + if (recoveryOptionsTitles.count > 0 && _recoveryAttempter) { + NSString *recoverySuggestion = error.userInfo[NSLocalizedRecoverySuggestionErrorKey]; + _error = error; + dispatch_async(dispatch_get_main_queue(), ^{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + _alertView = [[UIAlertView alloc] initWithTitle:nil + message:recoverySuggestion + delegate:self + cancelButtonTitle:nil + otherButtonTitles:nil]; +#pragma clang diagnostic pop + for (NSString *option in recoveryOptionsTitles) { + [_alertView addButtonWithTitle:option]; + } + [_alertView show]; + }); + return YES; + } + return NO; + }; + + if ([request.tokenString isEqualToString:[[FBSDKSystemAccountStoreAdapter sharedInstance] accessTokenString]] && + isLoginRecoveryAttempter) { + // special system auth case: if user has granted permissions we can simply renew. On a successful + // renew, treat this as immediately recovered without the standard alert prompty. + // (for example, this can repair expired tokens seamlessly) + [[FBSDKSystemAccountStoreAdapter sharedInstance] + renewSystemAuthorization:^(ACAccountCredentialRenewResult result, NSError *renewError) { + dispatch_async(dispatch_get_main_queue(), ^{ + if (result == ACAccountCredentialRenewResultRenewed) { + [self.delegate processorDidAttemptRecovery:self didRecover:YES error:nil]; + self.delegate = nil; + } else if (!standardRecoveryWork()) { + [self.delegate processorDidAttemptRecovery:self didRecover:NO error:_error]; + }; + }); + }]; + // short-circuit YES so that the renew callback resumes the control flow. + return YES; + } + + return standardRecoveryWork(); + } + return NO; + case FBSDKGraphRequestErrorCategoryOther : + if ([request.tokenString isEqualToString:[FBSDKAccessToken currentAccessToken].tokenString]) { + NSString *message = error.userInfo[FBSDKErrorLocalizedDescriptionKey]; + NSString *title = error.userInfo[FBSDKErrorLocalizedTitleKey]; + if (message) { + dispatch_async(dispatch_get_main_queue(), ^{ + NSString *localizedOK = + NSLocalizedStringWithDefaultValue(@"ErrorRecovery.Alert.OK", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"OK", + @"The title of the label to dismiss the alert when presenting user facing error messages"); +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + [[[UIAlertView alloc] initWithTitle:title + message:message + delegate:nil + cancelButtonTitle:localizedOK + otherButtonTitles:nil] show]; +#pragma clang diagnostic pop + }); + } + } + return NO; + } + return NO; +} + +#pragma mark - UIAlertViewDelegate + +- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex +{ + [_recoveryAttempter attemptRecoveryFromError:_error optionIndex:buttonIndex delegate:self didRecoverSelector:@selector(didPresentErrorWithRecovery:contextInfo:) contextInfo:nil]; + _alertView.delegate = nil; + _alertView = nil; +} + +#pragma mark - FBSDKErrorRecoveryAttempting "delegate" + +- (void)didPresentErrorWithRecovery:(BOOL)didRecover contextInfo:(void *)contextInfo +{ + [self.delegate processorDidAttemptRecovery:self didRecover:didRecover error:_error]; + self.delegate = nil; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h new file mode 100644 index 0000000..5ae03e2 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h @@ -0,0 +1,120 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +@class FBSDKAccessToken; + +/*! + @abstract Represents a request to the Facebook Graph API. + + @discussion `FBSDKGraphRequest` encapsulates the components of a request (the + Graph API path, the parameters, error recovery behavior) and should be + used in conjunction with `FBSDKGraphRequestConnection` to issue the request. + + Nearly all Graph APIs require an access token. Unless specified, the + `[FBSDKAccessToken currentAccessToken]` is used. Therefore, most requests + will require login first (see `FBSDKLoginManager` in FBSDKLoginKit.framework). + + A `- start` method is provided for convenience for single requests. + + By default, FBSDKGraphRequest will attempt to recover any errors returned from + Facebook. You can disable this via `disableErrorRecovery:`. + @see FBSDKGraphErrorRecoveryProcessor + */ +@interface FBSDKGraphRequest : NSObject + +/*! + @abstract Initializes a new instance that use use `[FBSDKAccessToken currentAccessToken]`. + @param graphPath the graph path (e.g., @"me"). + @param parameters the optional parameters dictionary. + */ +- (instancetype)initWithGraphPath:(NSString *)graphPath + parameters:(NSDictionary *)parameters; + +/*! + @abstract Initializes a new instance that use use `[FBSDKAccessToken currentAccessToken]`. + @param graphPath the graph path (e.g., @"me"). + @param parameters the optional parameters dictionary. + @param HTTPMethod the optional HTTP method. nil defaults to @"GET". + */ +- (instancetype)initWithGraphPath:(NSString *)graphPath + parameters:(NSDictionary *)parameters + HTTPMethod:(NSString *)HTTPMethod; + +/*! + @abstract Initializes a new instance. + @param graphPath the graph path (e.g., @"me"). + @param parameters the optional parameters dictionary. + @param tokenString the token string to use. Specifying nil will cause no token to be used. + @param version the optional Graph API version (e.g., @"v2.0"). nil defaults to FBSDK_TARGET_PLATFORM_VERSION. + @param HTTPMethod the optional HTTP method (e.g., @"POST"). nil defaults to @"GET". + */ +- (instancetype)initWithGraphPath:(NSString *)graphPath + parameters:(NSDictionary *)parameters + tokenString:(NSString *)tokenString + version:(NSString *)version + HTTPMethod:(NSString *)HTTPMethod +NS_DESIGNATED_INITIALIZER; + +/*! + @abstract The request parameters. + */ +@property (nonatomic, strong, readonly) NSMutableDictionary *parameters; + +/*! + @abstract The access token string used by the request. + */ +@property (nonatomic, copy, readonly) NSString *tokenString; + +/*! + @abstract The Graph API endpoint to use for the request, for example "me". + */ +@property (nonatomic, copy, readonly) NSString *graphPath; + +/*! + @abstract The HTTPMethod to use for the request, for example "GET" or "POST". + */ +@property (nonatomic, copy, readonly) NSString *HTTPMethod; + +/*! + @abstract The Graph API version to use (e.g., "v2.0") + */ +@property (nonatomic, copy, readonly) NSString *version; + +/*! + @abstract If set, disables the automatic error recovery mechanism. + @param disable whether to disable the automatic error recovery mechanism + @discussion By default, non-batched FBSDKGraphRequest instances will automatically try to recover + from errors by constructing a `FBSDKGraphErrorRecoveryProcessor` instance that + re-issues the request on successful recoveries. The re-issued request will call the same + handler as the receiver but may occur with a different `FBSDKGraphRequestConnection` instance. + + This will override [FBSDKSettings setGraphErrorRecoveryDisabled:]. + */ +- (void)setGraphErrorRecoveryDisabled:(BOOL)disable; + +/*! + @abstract Starts a connection to the Graph API. + @param handler The handler block to call when the request completes. + */ +- (FBSDKGraphRequestConnection *)startWithCompletionHandler:(FBSDKGraphRequestHandler)handler; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m new file mode 100644 index 0000000..050a676 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m @@ -0,0 +1,204 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKGraphRequest+Internal.h" + +#import + +#import "FBSDKAccessToken.h" +#import "FBSDKCoreKit.h" +#import "FBSDKGraphRequestConnection.h" +#import "FBSDKGraphRequestDataAttachment.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKLogger.h" +#import "FBSDKSettings+Internal.h" + +// constants +static NSString *const kGetHTTPMethod = @"GET"; + +@interface FBSDKGraphRequest() +@property (nonatomic, assign) FBSDKGraphRequestFlags flags; +@end + +@implementation FBSDKGraphRequest + +- (instancetype)init NS_UNAVAILABLE +{ + assert(0); +} + +- (instancetype)initWithGraphPath:(NSString *)graphPath + parameters:(NSDictionary *)parameters { + return [self initWithGraphPath:graphPath + parameters:parameters + flags:FBSDKGraphRequestFlagNone]; +} + +- (instancetype)initWithGraphPath:(NSString *)graphPath + parameters:(NSDictionary *)parameters + HTTPMethod:(NSString *)HTTPMethod { + return [self initWithGraphPath:graphPath + parameters:parameters + tokenString:[FBSDKAccessToken currentAccessToken].tokenString + version:nil + HTTPMethod:HTTPMethod]; +} + +- (instancetype)initWithGraphPath:(NSString *)graphPath + parameters:(NSDictionary *)parameters + flags:(FBSDKGraphRequestFlags)flags { + return [self initWithGraphPath:graphPath + parameters:parameters + tokenString:[FBSDKAccessToken currentAccessToken].tokenString + HTTPMethod:nil + flags:flags]; +} + +- (instancetype)initWithGraphPath:(NSString *)graphPath + parameters:(NSDictionary *)parameters + tokenString:(NSString *)tokenString + HTTPMethod:(NSString *)HTTPMethod + flags:(FBSDKGraphRequestFlags)flags { + if ((self = [self initWithGraphPath:graphPath + parameters:parameters + tokenString:tokenString + version:FBSDK_TARGET_PLATFORM_VERSION + HTTPMethod:HTTPMethod])) { + self.flags |= flags; + } + return self; +} + +- (instancetype)initWithGraphPath:(NSString *)graphPath + parameters:(NSDictionary *)parameters + tokenString:(NSString *)tokenString + version:(NSString *)version + HTTPMethod:(NSString *)HTTPMethod { + if ((self = [super init])) { + _tokenString = [tokenString copy]; + _version = version ? [version copy] : FBSDK_TARGET_PLATFORM_VERSION; + _graphPath = [graphPath copy]; + _HTTPMethod = HTTPMethod ? [HTTPMethod copy] : kGetHTTPMethod; + _parameters = [[NSMutableDictionary alloc] initWithDictionary:parameters]; + if ([FBSDKSettings isGraphErrorRecoveryDisabled]) { + _flags = FBSDKGraphRequestFlagDisableErrorRecovery; + } + } + return self; +} + +- (BOOL)isGraphErrorRecoveryDisabled +{ + return (self.flags & FBSDKGraphRequestFlagDisableErrorRecovery); +} + +- (void)setGraphErrorRecoveryDisabled:(BOOL)disable +{ + if (disable) { + self.flags |= FBSDKGraphRequestFlagDisableErrorRecovery; + } else { + self.flags &= ~FBSDKGraphRequestFlagDisableErrorRecovery; + } +} + +- (BOOL)hasAttachments +{ + __block BOOL hasAttachments = NO; + [self.parameters enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + if ([FBSDKGraphRequest isAttachment:obj]) { + hasAttachments = YES; + *stop = YES; + } + }]; + return hasAttachments; +} + ++ (BOOL)isAttachment:(id)item +{ + return ([item isKindOfClass:[UIImage class]] || + [item isKindOfClass:[NSData class]] || + [item isKindOfClass:[FBSDKGraphRequestDataAttachment class]]); +} + + ++ (NSString *)serializeURL:(NSString *)baseUrl + params:(NSDictionary *)params { + return [self serializeURL:baseUrl params:params httpMethod:kGetHTTPMethod]; +} + ++ (NSString *)serializeURL:(NSString *)baseUrl + params:(NSDictionary *)params + httpMethod:(NSString *)httpMethod { + params = [self preprocessParams: params]; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + NSURL *parsedURL = [NSURL URLWithString:[baseUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; +#pragma clang pop + NSString *queryPrefix = parsedURL.query ? @"&" : @"?"; + + NSString *query = [FBSDKInternalUtility queryStringWithDictionary:params error:NULL invalidObjectHandler:^id(id object, BOOL *stop) { + if ([self isAttachment:object]) { + if ([httpMethod isEqualToString:kGetHTTPMethod]) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry:@"can not use GET to upload a file"]; + } + return nil; + } + return object; + }]; + return [NSString stringWithFormat:@"%@%@%@", baseUrl, queryPrefix, query]; +} + ++ (NSDictionary *)preprocessParams:(NSDictionary *)params +{ + NSString *debugValue = [FBSDKSettings graphAPIDebugParamValue]; + if (debugValue) { + NSMutableDictionary *mutableParams = [NSMutableDictionary dictionaryWithDictionary:params]; + [mutableParams setObject:debugValue forKey:@"debug"]; + return mutableParams; + } + + return params; +} + +- (FBSDKGraphRequestConnection *)startWithCompletionHandler:(FBSDKGraphRequestHandler)handler +{ + FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; + [connection addRequest:self completionHandler:handler]; + [connection start]; + return connection; +} + +#pragma mark - Debugging helpers + +- (NSString *)description +{ + NSMutableString *result = [NSMutableString stringWithFormat:@"<%@: %p", + NSStringFromClass([self class]), + self]; + if (self.graphPath) { + [result appendFormat:@", graphPath: %@", self.graphPath]; + } + if (self.HTTPMethod) { + [result appendFormat:@", HTTPMethod: %@", self.HTTPMethod]; + } + [result appendFormat:@", parameters: %@>", [self.parameters description]]; + return result; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h new file mode 100644 index 0000000..79ffb3f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h @@ -0,0 +1,325 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +@class FBSDKGraphRequest; +@class FBSDKGraphRequestConnection; + +/*! + @typedef FBSDKGraphRequestHandler + + @abstract + A block that is passed to addRequest to register for a callback with the results of that + request once the connection completes. + + @discussion + Pass a block of this type when calling addRequest. This will be called once + the request completes. The call occurs on the UI thread. + + @param connection The `FBSDKGraphRequestConnection` that sent the request. + + @param result The result of the request. This is a translation of + JSON data to `NSDictionary` and `NSArray` objects. This + is nil if there was an error. + + @param error The `NSError` representing any error that occurred. + + */ +typedef void (^FBSDKGraphRequestHandler)(FBSDKGraphRequestConnection *connection, + id result, + NSError *error); + +/*! + @protocol + + @abstract + The `FBSDKGraphRequestConnectionDelegate` protocol defines the methods used to receive network + activity progress information from a . + */ +@protocol FBSDKGraphRequestConnectionDelegate + +@optional + +/*! + @method + + @abstract + Tells the delegate the request connection will begin loading + + @discussion + If the is created using one of the convenience factory methods prefixed with + start, the object returned from the convenience method has already begun loading and this method + will not be called when the delegate is set. + + @param connection The request connection that is starting a network request + */ +- (void)requestConnectionWillBeginLoading:(FBSDKGraphRequestConnection *)connection; + +/*! + @method + + @abstract + Tells the delegate the request connection finished loading + + @discussion + If the request connection completes without a network error occuring then this method is called. + Invocation of this method does not indicate success of every made, only that the + request connection has no further activity. Use the error argument passed to the FBSDKGraphRequestHandler + block to determine success or failure of each . + + This method is invoked after the completion handler for each . + + @param connection The request connection that successfully completed a network request + */ +- (void)requestConnectionDidFinishLoading:(FBSDKGraphRequestConnection *)connection; + +/*! + @method + + @abstract + Tells the delegate the request connection failed with an error + + @discussion + If the request connection fails with a network error then this method is called. The `error` + argument specifies why the network connection failed. The `NSError` object passed to the + FBSDKGraphRequestHandler block may contain additional information. + + @param connection The request connection that successfully completed a network request + @param error The `NSError` representing the network error that occurred, if any. May be nil + in some circumstances. Consult the `NSError` for the for reliable + failure information. + */ +- (void)requestConnection:(FBSDKGraphRequestConnection *)connection + didFailWithError:(NSError *)error; + +/*! + @method + + @abstract + Tells the delegate how much data has been sent and is planned to send to the remote host + + @discussion + The byte count arguments refer to the aggregated objects, not a particular . + + Like `NSURLConnection`, the values may change in unexpected ways if data needs to be resent. + + @param connection The request connection transmitting data to a remote host + @param bytesWritten The number of bytes sent in the last transmission + @param totalBytesWritten The total number of bytes sent to the remote host + @param totalBytesExpectedToWrite The total number of bytes expected to send to the remote host + */ +- (void)requestConnection:(FBSDKGraphRequestConnection *)connection + didSendBodyData:(NSInteger)bytesWritten + totalBytesWritten:(NSInteger)totalBytesWritten +totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; + +@end + +/*! + @class FBSDKGraphRequestConnection + + @abstract + The `FBSDKGraphRequestConnection` represents a single connection to Facebook to service a request. + + @discussion + The request settings are encapsulated in a reusable object. The + `FBSDKGraphRequestConnection` object encapsulates the concerns of a single communication + e.g. starting a connection, canceling a connection, or batching requests. + + */ +@interface FBSDKGraphRequestConnection : NSObject + +/*! + @abstract + The delegate object that receives updates. + */ +@property (nonatomic, assign) id delegate; + +/*! + @abstract Gets or sets the timeout interval to wait for a response before giving up. + */ +@property (nonatomic) NSTimeInterval timeout; + +/*! + @abstract + The raw response that was returned from the server. (readonly) + + @discussion + This property can be used to inspect HTTP headers that were returned from + the server. + + The property is nil until the request completes. If there was a response + then this property will be non-nil during the FBSDKGraphRequestHandler callback. + */ +@property (nonatomic, retain, readonly) NSHTTPURLResponse *URLResponse; + +/*! + @methodgroup Class methods + */ + +/*! + @method + + @abstract + This method sets the default timeout on all FBSDKGraphRequestConnection instances. Defaults to 60 seconds. + + @param defaultConnectionTimeout The timeout interval. + */ ++ (void)setDefaultConnectionTimeout:(NSTimeInterval)defaultConnectionTimeout; + +/*! + @methodgroup Adding requests + */ + +/*! + @method + + @abstract + This method adds an object to this connection. + + @param request A request to be included in the round-trip when start is called. + @param handler A handler to call back when the round-trip completes or times out. + + @discussion + The completion handler is retained until the block is called upon the + completion or cancellation of the connection. + */ +- (void)addRequest:(FBSDKGraphRequest *)request + completionHandler:(FBSDKGraphRequestHandler)handler; + +/*! + @method + + @abstract + This method adds an object to this connection. + + @param request A request to be included in the round-trip when start is called. + + @param handler A handler to call back when the round-trip completes or times out. + The handler will be invoked on the main thread. + + @param name An optional name for this request. This can be used to feed + the results of one request to the input of another in the same + `FBSDKGraphRequestConnection` as described in + [Graph API Batch Requests]( https://developers.facebook.com/docs/reference/api/batch/ ). + + @discussion + The completion handler is retained until the block is called upon the + completion or cancellation of the connection. This request can be named + to allow for using the request's response in a subsequent request. + */ +- (void)addRequest:(FBSDKGraphRequest *)request + completionHandler:(FBSDKGraphRequestHandler)handler + batchEntryName:(NSString *)name; + +/*! + @method + + @abstract + This method adds an object to this connection. + + @param request A request to be included in the round-trip when start is called. + + @param handler A handler to call back when the round-trip completes or times out. + + @param batchParameters The optional dictionary of parameters to include for this request + as described in [Graph API Batch Requests]( https://developers.facebook.com/docs/reference/api/batch/ ). + Examples include "depends_on", "name", or "omit_response_on_success". + + @discussion + The completion handler is retained until the block is called upon the + completion or cancellation of the connection. This request can be named + to allow for using the request's response in a subsequent request. + */ +- (void)addRequest:(FBSDKGraphRequest *)request + completionHandler:(FBSDKGraphRequestHandler)handler + batchParameters:(NSDictionary *)batchParameters; + +/*! + @methodgroup Instance methods + */ + +/*! + @method + + @abstract + Signals that a connection should be logically terminated as the + application is no longer interested in a response. + + @discussion + Synchronously calls any handlers indicating the request was cancelled. Cancel + does not guarantee that the request-related processing will cease. It + does promise that all handlers will complete before the cancel returns. A call to + cancel prior to a start implies a cancellation of all requests associated + with the connection. + */ +- (void)cancel; + +/*! + @method + + @abstract + This method starts a connection with the server and is capable of handling all of the + requests that were added to the connection. + + @discussion By default, a connection is scheduled on the current thread in the default mode when it is created. + See `setDelegateQueue:` for other options. + + This method cannot be called twice for an `FBSDKGraphRequestConnection` instance. + */ +- (void)start; + +/*! + @abstract Determines the operation queue that is used to call methods on the connection's delegate. + @param queue The operation queue to use when calling delegate methods. + @discussion By default, a connection is scheduled on the current thread in the default mode when it is created. + You cannot reschedule a connection after it has started. + + This is very similar to `[NSURLConnection setDelegateQueue:]`. + */ +- (void)setDelegateQueue:(NSOperationQueue *)queue; + +/*! + @method + + @abstract + Overrides the default version for a batch request + + @discussion + The SDK automatically prepends a version part, such as "v2.0" to API paths in order to simplify API versioning + for applications. If you want to override the version part while using batch requests on the connection, call + this method to set the version for the batch request. + + @param version This is a string in the form @"v2.0" which will be used for the version part of an API path + */ +- (void)overrideVersionPartWith:(NSString *)version; + +@end + +/*! + @abstract The key in the result dictionary for requests to old versions of the Graph API + whose response is not a JSON object. + + @discussion When a request returns a non-JSON response (such as a "true" literal), that response + will be wrapped into a dictionary using this const as the key. This only applies for very few Graph API + prior to v2.1. + */ +FBSDK_EXTERN NSString *const FBSDKNonJSONResponseProperty; diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m new file mode 100644 index 0000000..3b86c36 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m @@ -0,0 +1,1011 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKGraphRequestConnection+Internal.h" + +#import "FBSDKAppEvents+Internal.h" +#import "FBSDKConstants.h" +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKError.h" +#import "FBSDKErrorConfiguration.h" +#import "FBSDKGraphErrorRecoveryProcessor.h" +#import "FBSDKGraphRequest+Internal.h" +#import "FBSDKGraphRequestBody.h" +#import "FBSDKGraphRequestDataAttachment.h" +#import "FBSDKGraphRequestMetadata.h" +#import "FBSDKGraphRequestPiggybackManager.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKLogger.h" +#import "FBSDKSettings+Internal.h" +#import "FBSDKURLConnection.h" + +NSString *const FBSDKNonJSONResponseProperty = @"FACEBOOK_NON_JSON_RESULT"; + +// URL construction constants +static NSString *const kGraphURLPrefix = @"graph."; +static NSString *const kGraphVideoURLPrefix = @"graph-video."; + +static NSString *const kBatchKey = @"batch"; +static NSString *const kBatchMethodKey = @"method"; +static NSString *const kBatchRelativeURLKey = @"relative_url"; +static NSString *const kBatchAttachmentKey = @"attached_files"; +static NSString *const kBatchFileNamePrefix = @"file"; +static NSString *const kBatchEntryName = @"name"; + +static NSString *const kAccessTokenKey = @"access_token"; +static NSString *const kSDK = @"ios"; +static NSString *const kUserAgentBase = @"FBiOSSDK"; + +static NSString *const kBatchRestMethodBaseURL = @"method/"; + +static NSTimeInterval g_defaultTimeout = 60.0; + +static FBSDKErrorConfiguration *g_errorConfiguration; + +// ---------------------------------------------------------------------------- +// FBSDKGraphRequestConnectionState + +typedef NS_ENUM(NSUInteger, FBSDKGraphRequestConnectionState) +{ + kStateCreated, + kStateSerialized, + kStateStarted, + kStateCompleted, + kStateCancelled, +}; + +// ---------------------------------------------------------------------------- +// Private properties and methods + +@interface FBSDKGraphRequestConnection () + +@property (nonatomic, retain) FBSDKURLConnection *connection; +@property (nonatomic, retain) NSMutableArray *requests; +@property (nonatomic) FBSDKGraphRequestConnectionState state; +@property (nonatomic, retain) FBSDKLogger *logger; +@property (nonatomic) unsigned long requestStartTime; + +@end + +// ---------------------------------------------------------------------------- +// FBSDKGraphRequestConnection + +@implementation FBSDKGraphRequestConnection +{ + NSString *_overrideVersionPart; + FBSDKGraphRequestMetadata *_recoveringRequestMetadata; + FBSDKGraphErrorRecoveryProcessor *_errorRecoveryProcessor; + NSUInteger _expectingResults; + NSOperationQueue *_delegateQueue; +} + +- (instancetype)init +{ + if ((self = [super init])) { + _requests = [[NSMutableArray alloc] init]; + _timeout = g_defaultTimeout; + _state = kStateCreated; + _logger = [[FBSDKLogger alloc] initWithLoggingBehavior:FBSDKLoggingBehaviorNetworkRequests]; + } + return self; +} + +- (void)dealloc +{ + _connection.delegate = nil; + [_connection cancel]; +} + +#pragma mark - Public + ++ (void)setDefaultConnectionTimeout:(NSTimeInterval)defaultTimeout +{ + if (defaultTimeout >= 0) { + g_defaultTimeout = defaultTimeout; + } +} + +- (void)addRequest:(FBSDKGraphRequest *)request + completionHandler:(FBSDKGraphRequestHandler)handler +{ + [self addRequest:request completionHandler:handler batchEntryName:nil]; +} + +- (void)addRequest:(FBSDKGraphRequest *)request + completionHandler:(FBSDKGraphRequestHandler)handler + batchEntryName:(NSString *)name +{ + NSDictionary *batchParams = (name)? @{kBatchEntryName : name } : nil; + [self addRequest:request completionHandler:handler batchParameters:batchParams]; +} + +- (void)addRequest:(FBSDKGraphRequest *)request + completionHandler:(FBSDKGraphRequestHandler)handler + batchParameters:(NSDictionary *)batchParameters +{ + if (self.state != kStateCreated) { + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:@"Cannot add requests once started or if a URLRequest is set" + userInfo:nil]; + } + FBSDKGraphRequestMetadata *metadata = [[FBSDKGraphRequestMetadata alloc] initWithRequest:request + completionHandler:handler + batchParameters:batchParameters]; + + [self.requests addObject:metadata]; +} + +- (void)cancel +{ + self.state = kStateCancelled; + [self.connection cancel]; + self.connection = nil; +} + +- (void)overrideVersionPartWith:(NSString *)version +{ + if (![_overrideVersionPart isEqualToString:version]) { + _overrideVersionPart = [version copy]; + } +} + +- (void)start +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + g_errorConfiguration = [[FBSDKErrorConfiguration alloc] initWithDictionary:nil]; + }); + //optimistically check for updated server configuration; + g_errorConfiguration = [FBSDKServerConfigurationManager cachedServerConfiguration].errorConfiguration ?: g_errorConfiguration; + + if (self.state != kStateCreated && self.state != kStateSerialized) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors + formatString:@"FBSDKGraphRequestConnection cannot be started again."]; + return; + } + [FBSDKGraphRequestPiggybackManager addPiggybackRequests:self]; + NSMutableURLRequest *request = [self requestWithBatch:self.requests timeout:_timeout]; + + self.state = kStateStarted; + + [self logRequest:request bodyLength:0 bodyLogger:nil attachmentLogger:nil]; + _requestStartTime = [FBSDKInternalUtility currentTimeInMilliseconds]; + + FBSDKURLConnectionHandler handler = + ^(FBSDKURLConnection *connection, + NSError *error, + NSURLResponse *response, + NSData *responseData) { + [self completeFBSDKURLConnectionWithResponse:response + data:responseData + networkError:error]; + }; + + FBSDKURLConnection *connection = [[FBSDKURLConnection alloc] initWithRequest:request + completionHandler:handler]; + if (_delegateQueue) { + [connection setDelegateQueue:_delegateQueue]; + } + connection.delegate = self; + self.connection = connection; + [connection start]; + + id delegate = self.delegate; + if ([delegate respondsToSelector:@selector(requestConnectionWillBeginLoading:)]) { + if (_delegateQueue) { + [_delegateQueue addOperationWithBlock:^{ + [delegate requestConnectionWillBeginLoading:self]; + }]; + } else { + [delegate requestConnectionWillBeginLoading:self]; + } + } +} + +- (void)setDelegateQueue:(NSOperationQueue *)queue +{ + _delegateQueue = queue; +} + +#pragma mark - Private methods (request generation) + +// +// Adds request data to a batch in a format expected by the JsonWriter. +// Binary attachments are referenced by name in JSON and added to the +// attachments dictionary. +// +- (void)addRequest:(FBSDKGraphRequestMetadata *)metadata + toBatch:(NSMutableArray *)batch + attachments:(NSMutableDictionary *)attachments + batchToken:(NSString *)batchToken +{ + NSMutableDictionary *requestElement = [[NSMutableDictionary alloc] init]; + + if (metadata.batchParameters) { + [requestElement addEntriesFromDictionary:metadata.batchParameters]; + } + + if (batchToken) { + metadata.request.parameters[kAccessTokenKey] = batchToken; + [self registerTokenToOmitFromLog:batchToken]; + } + + NSString *urlString = [self urlStringForSingleRequest:metadata.request forBatch:YES]; + requestElement[kBatchRelativeURLKey] = urlString; + requestElement[kBatchMethodKey] = metadata.request.HTTPMethod; + + NSMutableArray *attachmentNames = [NSMutableArray array]; + + [metadata.request.parameters enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) { + if ([FBSDKGraphRequest isAttachment:value]) { + NSString *name = [NSString stringWithFormat:@"%@%lu", + kBatchFileNamePrefix, + (unsigned long)[attachments count]]; + [attachmentNames addObject:name]; + attachments[name] = value; + } + }]; + + if ([attachmentNames count]) { + requestElement[kBatchAttachmentKey] = [attachmentNames componentsJoinedByString:@","]; + } + + [batch addObject:requestElement]; +} + +- (void)appendAttachments:(NSDictionary *)attachments + toBody:(FBSDKGraphRequestBody *)body + addFormData:(BOOL)addFormData + logger:(FBSDKLogger *)logger +{ + [attachments enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) { + value = [FBSDKInternalUtility convertRequestValue:value]; + if ([value isKindOfClass:[NSString class]]) { + if (addFormData) { + [body appendWithKey:key formValue:(NSString *)value logger:logger]; + } + } else if ([value isKindOfClass:[UIImage class]]) { + [body appendWithKey:key imageValue:(UIImage *)value logger:logger]; + } else if ([value isKindOfClass:[NSData class]]) { + [body appendWithKey:key dataValue:(NSData *)value logger:logger]; + } else if ([value isKindOfClass:[FBSDKGraphRequestDataAttachment class]]) { + [body appendWithKey:key dataAttachmentValue:(FBSDKGraphRequestDataAttachment *)value logger:logger]; + } else { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors formatString:@"Unsupported FBSDKGraphRequest attachment:%@, skipping.", value]; + } + }]; +} + +// +// Serializes all requests in the batch to JSON and appends the result to +// body. Also names all attachments that need to go as separate blocks in +// the body of the request. +// +// All the requests are serialized into JSON, with any binary attachments +// named and referenced by name in the JSON. +// +- (void)appendJSONRequests:(NSArray *)requests + toBody:(FBSDKGraphRequestBody *)body + andNameAttachments:(NSMutableDictionary *)attachments + logger:(FBSDKLogger *)logger +{ + NSMutableArray *batch = [[NSMutableArray alloc] init]; + NSString *batchToken = nil; + for (FBSDKGraphRequestMetadata *metadata in requests) { + NSString *individualToken = [self accessTokenWithRequest:metadata.request]; + BOOL isClientToken = [FBSDKSettings clientToken] && [individualToken hasSuffix:[FBSDKSettings clientToken]]; + if (!batchToken && + !isClientToken) { + batchToken = individualToken; + } + [self addRequest:metadata + toBatch:batch + attachments:attachments + batchToken:[batchToken isEqualToString:individualToken] ? nil : individualToken]; + } + + NSString *jsonBatch = [FBSDKInternalUtility JSONStringForObject:batch error:NULL invalidObjectHandler:NULL]; + + [body appendWithKey:kBatchKey formValue:jsonBatch logger:logger]; + if (batchToken) { + [body appendWithKey:kAccessTokenKey formValue:batchToken logger:logger]; + } +} + +- (BOOL)_shouldWarnOnMissingFieldsParam:(FBSDKGraphRequest *)request +{ + NSString *minVersion = @"2.4"; + NSString *version = request.version; + if (!version) { + return YES; + } + if ([version hasPrefix:@"v"]) { + version = [version substringFromIndex:1]; + } + + NSComparisonResult result = [version compare:minVersion options:NSNumericSearch]; + + // if current version is the same as minVersion, or if the current version is > minVersion + return (result == NSOrderedSame) || (result == NSOrderedDescending); +} + +// Validate that all GET requests after v2.4 have a "fields" param +- (void)_validateFieldsParamForGetRequests:(NSArray *)requests +{ + for (FBSDKGraphRequestMetadata *metadata in requests) { + FBSDKGraphRequest *request = metadata.request; + if ([request.HTTPMethod.uppercaseString isEqualToString:@"GET"] && + [self _shouldWarnOnMissingFieldsParam:request] && + !request.parameters[@"fields"] && + [request.graphPath rangeOfString:@"fields="].location == NSNotFound) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors + formatString:@"starting with Graph API v2.4, GET requests for /%@ should contain an explicit \"fields\" parameter", request.graphPath]; + } + } +} + +// +// Generates a NSURLRequest based on the contents of self.requests, and sets +// options on the request. Chooses between URL-based request for a single +// request and JSON-based request for batches. +// +- (NSMutableURLRequest *)requestWithBatch:(NSArray *)requests + timeout:(NSTimeInterval)timeout +{ + FBSDKGraphRequestBody *body = [[FBSDKGraphRequestBody alloc] init]; + FBSDKLogger *bodyLogger = [[FBSDKLogger alloc] initWithLoggingBehavior:_logger.loggingBehavior]; + FBSDKLogger *attachmentLogger = [[FBSDKLogger alloc] initWithLoggingBehavior:_logger.loggingBehavior]; + + NSMutableURLRequest *request; + + if (requests.count == 0) { + [[NSException exceptionWithName:NSInvalidArgumentException + reason:@"FBSDKGraphRequestConnection: Must have at least one request or urlRequest not specified." + userInfo:nil] + raise]; + + } + + [self _validateFieldsParamForGetRequests:requests]; + + if ([requests count] == 1) { + FBSDKGraphRequestMetadata *metadata = [requests objectAtIndex:0]; + NSURL *url = [NSURL URLWithString:[self urlStringForSingleRequest:metadata.request forBatch:NO]]; + request = [NSMutableURLRequest requestWithURL:url + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:timeout]; + + // HTTP methods are case-sensitive; be helpful in case someone provided a mixed case one. + NSString *httpMethod = [metadata.request.HTTPMethod uppercaseString]; + [request setHTTPMethod:httpMethod]; + [self appendAttachments:metadata.request.parameters + toBody:body + addFormData:[httpMethod isEqualToString:@"POST"] + logger:attachmentLogger]; + } else { + // Find the session with an app ID and use that as the batch_app_id. If we can't + // find one, try to load it from the plist. As a last resort, pass 0. + NSString *batchAppID = [FBSDKSettings appID]; + if (!batchAppID || batchAppID.length == 0) { + // The Graph API batch method requires either an access token or batch_app_id. + // If we can't determine an App ID to use for the batch, we can't issue it. + [[NSException exceptionWithName:NSInternalInconsistencyException + reason:@"FBSDKGraphRequestConnection: [FBSDKSettings appID] must be specified for batch requests" + userInfo:nil] + raise]; + } + + [body appendWithKey:@"batch_app_id" formValue:batchAppID logger:bodyLogger]; + + NSMutableDictionary *attachments = [[NSMutableDictionary alloc] init]; + + [self appendJSONRequests:requests + toBody:body + andNameAttachments:attachments + logger:bodyLogger]; + + [self appendAttachments:attachments + toBody:body + addFormData:NO + logger:attachmentLogger]; + + NSURL *url = [FBSDKInternalUtility facebookURLWithHostPrefix:kGraphURLPrefix path:nil queryParameters:nil defaultVersion:_overrideVersionPart error:NULL]; + request = [NSMutableURLRequest requestWithURL:url + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:timeout]; + [request setHTTPMethod:@"POST"]; + } + + [request setHTTPBody:[body data]]; + NSUInteger bodyLength = [[body data] length] / 1024; + + [request setValue:[FBSDKGraphRequestConnection userAgent] forHTTPHeaderField:@"User-Agent"]; + [request setValue:[FBSDKGraphRequestBody mimeContentType] forHTTPHeaderField:@"Content-Type"]; + [request setHTTPShouldHandleCookies:NO]; + + [self logRequest:request bodyLength:bodyLength bodyLogger:bodyLogger attachmentLogger:attachmentLogger]; + + return request; +} + +// +// Generates a URL for a batch containing only a single request, +// and names all attachments that need to go in the body of the +// request. +// +// The URL contains all parameters that are not body attachments, +// including the session key if present. +// +// Attachments are named and referenced by name in the URL. +// +- (NSString *)urlStringForSingleRequest:(FBSDKGraphRequest *)request forBatch:(BOOL)forBatch +{ + request.parameters[@"format"] = @"json"; + request.parameters[@"sdk"] = kSDK; + request.parameters[@"include_headers"] = @"false"; + + NSString *baseURL; + if (forBatch) { + baseURL = request.graphPath; + } else { + NSString *token = [self accessTokenWithRequest:request]; + if (token) { + [request.parameters setValue:token forKey:kAccessTokenKey]; + [self registerTokenToOmitFromLog:token]; + } + + NSString *prefix = kGraphURLPrefix; + // We special case a graph post to /videos and send it to graph-video.facebook.com + // We only do this for non batch post requests + NSString *graphPath = [request.graphPath lowercaseString]; + if ([[request.HTTPMethod uppercaseString] isEqualToString:@"POST"] && + [graphPath hasSuffix:@"/videos"]) { + graphPath = [graphPath stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"/"]]; + NSArray *components = [graphPath componentsSeparatedByString:@"/"]; + if ([components count] == 2) { + prefix = kGraphVideoURLPrefix; + } + } + + baseURL = [[FBSDKInternalUtility facebookURLWithHostPrefix:prefix path:request.graphPath queryParameters:nil defaultVersion:request.version error:NULL] absoluteString]; + } + + NSString *url = [FBSDKGraphRequest serializeURL:baseURL + params:request.parameters + httpMethod:request.HTTPMethod]; + return url; +} + +#pragma mark - Private methods (response parsing) + +- (void)completeFBSDKURLConnectionWithResponse:(NSURLResponse *)response + data:(NSData *)data + networkError:(NSError *)error +{ + if (self.state != kStateCancelled) { + NSAssert(self.state == kStateStarted, + @"Unexpected state %lu in completeWithResponse", + (unsigned long)self.state); + self.state = kStateCompleted; + } + + NSArray *results = nil; + _URLResponse = (NSHTTPURLResponse *)response; + if (response) { + NSAssert([response isKindOfClass:[NSHTTPURLResponse class]], + @"Expected NSHTTPURLResponse, got %@", + response); + + NSInteger statusCode = _URLResponse.statusCode; + + if (!error && [response.MIMEType hasPrefix:@"image"]) { + error = [FBSDKError errorWithCode:FBSDKGraphRequestNonTextMimeTypeReturnedErrorCode + message:@"Response is a non-text MIME type; endpoints that return images and other " + @"binary data should be fetched using NSURLRequest and NSURLConnection"]; + } else { + results = [self parseJSONResponse:data + error:&error + statusCode:statusCode]; + } + } else if (!error) { + error = [FBSDKError errorWithCode:FBSDKUnknownErrorCode + message:@"Missing NSURLResponse"]; + } + + if (!error) { + if ([self.requests count] != [results count]) { + error = [FBSDKError errorWithCode:FBSDKGraphRequestProtocolMismatchErrorCode + message:@"Unexpected number of results returned from server."]; + } else { + [_logger appendFormat:@"Response <#%lu>\nDuration: %lu msec\nSize: %lu kB\nResponse Body:\n%@\n\n", + (unsigned long)[_logger loggerSerialNumber], + [FBSDKInternalUtility currentTimeInMilliseconds] - _requestStartTime, + (unsigned long)[data length], + results]; + } + } + + if (error) { + [_logger appendFormat:@"Response <#%lu> :\n%@\n%@\n", + (unsigned long)[_logger loggerSerialNumber], + [error localizedDescription], + [error userInfo]]; + } + [_logger emitToNSLog]; + + [self completeWithResults:results networkError:error]; + + self.connection = nil; +} + +// +// If there is one request, the JSON is the response. +// If there are multiple requests, the JSON has an array of dictionaries whose +// body property is the response. +// [{ "code":200, +// "body":"JSON-response-as-a-string" }, +// { "code":200, +// "body":"JSON-response-as-a-string" }] +// +// In both cases, this function returns an NSArray containing the results. +// The NSArray looks just like the multiple request case except the body +// value is converted from a string to parsed JSON. +// +- (NSArray *)parseJSONResponse:(NSData *)data + error:(NSError **)error + statusCode:(NSInteger)statusCode; +{ + // Graph API can return "true" or "false", which is not valid JSON. + // Translate that before asking JSON parser to look at it. + NSString *responseUTF8 = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + NSMutableArray *results = [[NSMutableArray alloc] init];; + id response = [self parseJSONOrOtherwise:responseUTF8 error:error]; + + if (responseUTF8 == nil) { + NSString *base64Data = [data length] != 0 ? [data base64EncodedStringWithOptions:0] : @""; + if (base64Data != nil) { + [FBSDKAppEvents logImplicitEvent:@"fb_response_invalid_utf8" + valueToSum:nil + parameters:nil + accessToken:nil]; + } + } + + NSDictionary *responseError = nil; + if (!response) { + if ((error != NULL) && (*error == nil)) { + *error = [self errorWithCode:FBSDKUnknownErrorCode + statusCode:statusCode + parsedJSONResponse:nil + innerError:nil + message:@"The server returned an unexpected response."]; + } + } else if ([self.requests count] == 1) { + // response is the entry, so put it in a dictionary under "body" and add + // that to array of responses. + [results addObject:@{ + @"code":@(statusCode), + @"body":response + }]; + } else if ([response isKindOfClass:[NSArray class]]) { + // response is the array of responses, but the body element of each needs + // to be decoded from JSON. + for (id item in response) { + // Don't let errors parsing one response stop us from parsing another. + NSError *batchResultError = nil; + if (![item isKindOfClass:[NSDictionary class]]) { + [results addObject:item]; + } else { + NSMutableDictionary *result = [((NSDictionary *)item) mutableCopy]; + if (result[@"body"]) { + result[@"body"] = [self parseJSONOrOtherwise:result[@"body"] error:&batchResultError]; + } + [results addObject:result]; + } + if (batchResultError) { + // We'll report back the last error we saw. + *error = batchResultError; + } + } + } else if ([response isKindOfClass:[NSDictionary class]] && + (responseError = [FBSDKTypeUtility dictionaryValue:response[@"error"]]) != nil && + [responseError[@"type"] isEqualToString:@"OAuthException"]) { + // if there was one request then return the only result. if there were multiple requests + // but only one error then the server rejected the batch access token + NSDictionary *result = @{ + @"code":@(statusCode), + @"body":response + }; + + for (NSUInteger resultIndex = 0, resultCount = self.requests.count; resultIndex < resultCount; ++resultIndex) { + [results addObject:result]; + } + } else if (error != NULL) { + *error = [self errorWithCode:FBSDKGraphRequestProtocolMismatchErrorCode + statusCode:statusCode + parsedJSONResponse:results + innerError:nil + message:nil]; + } + + return results; +} + +- (id)parseJSONOrOtherwise:(NSString *)utf8 + error:(NSError **)error +{ + id parsed = nil; + if (!(*error)) { + parsed = [FBSDKInternalUtility objectForJSONString:utf8 error:error]; + // if we fail parse we attemp a reparse of a modified input to support results in the form "foo=bar", "true", etc. + // which is shouldn't be necessary since Graph API v2.1. + if (*error) { + // we round-trip our hand-wired response through the parser in order to remain + // consistent with the rest of the output of this function (note, if perf turns out + // to be a problem -- unlikely -- we can return the following dictionary outright) + NSDictionary *original = @{ FBSDKNonJSONResponseProperty : utf8 }; + NSString *jsonrep = [FBSDKInternalUtility JSONStringForObject:original error:NULL invalidObjectHandler:NULL]; + NSError *reparseError = nil; + parsed = [FBSDKInternalUtility objectForJSONString:jsonrep error:&reparseError]; + if (!reparseError) { + *error = nil; + } + } + } + return parsed; +} + +- (void)completeWithResults:(NSArray *)results + networkError:(NSError *)networkError +{ + NSUInteger count = [self.requests count]; + _expectingResults = count; + NSUInteger disabledRecoveryCount = 0; + for (FBSDKGraphRequestMetadata *metadata in self.requests) { + if ([metadata.request isGraphErrorRecoveryDisabled]) { + disabledRecoveryCount++; + } + } + BOOL isSingleRequestToRecover = (count - disabledRecoveryCount == 1); + + [self.requests enumerateObjectsUsingBlock:^(FBSDKGraphRequestMetadata *metadata, NSUInteger i, BOOL *stop) { + id result = networkError ? nil : [results objectAtIndex:i]; + NSError *resultError = networkError ?: [self errorFromResult:result request:metadata.request]; + + id body = nil; + if (!resultError && [result isKindOfClass:[NSDictionary class]]) { + NSDictionary *resultDictionary = [FBSDKTypeUtility dictionaryValue:result]; + body = [FBSDKTypeUtility dictionaryValue:resultDictionary[@"body"]]; + } + + if (resultError && ![metadata.request isGraphErrorRecoveryDisabled] && isSingleRequestToRecover) { + _recoveringRequestMetadata = metadata; + _errorRecoveryProcessor = [[FBSDKGraphErrorRecoveryProcessor alloc] init]; + if ([_errorRecoveryProcessor processError:resultError request:metadata.request delegate:self]) { + return; + } + } + + [self processResultBody:body error:resultError metadata:metadata canNotifyDelegate:(networkError ? NO : YES)]; + }]; + + if (networkError) { + if ([_delegate respondsToSelector:@selector(requestConnection:didFailWithError:)]) { + [_delegate requestConnection:self didFailWithError:networkError]; + } + } +} + +- (void)processResultBody:(NSDictionary *)body error:(NSError *)error metadata:(FBSDKGraphRequestMetadata *)metadata canNotifyDelegate:(BOOL)canNotifyDelegate +{ + void (^clearToken)(void) = ^{ + if (!(metadata.request.flags & FBSDKGraphRequestFlagDoNotInvalidateTokenOnError)) { + [FBSDKAccessToken setCurrentAccessToken:nil]; + } + }; + void (^finishAndInvokeCompletionHandler)(void) = ^{ + NSDictionary *graphDebugDict = [body objectForKey:@"__debug__"]; + if ([graphDebugDict isKindOfClass:[NSDictionary class]]) { + [self processResultDebugDictionary: graphDebugDict]; + } + [metadata invokeCompletionHandlerForConnection:self withResults:body error:error]; + + if (--_expectingResults == 0) { + if (canNotifyDelegate && [_delegate respondsToSelector:@selector(requestConnectionDidFinishLoading:)]) { + [_delegate requestConnectionDidFinishLoading:self]; + } + } + }; + + FBSDKSystemAccountStoreAdapter *adapter = [FBSDKSystemAccountStoreAdapter sharedInstance]; + NSString *metadataTokenString = metadata.request.tokenString; + NSString *currentTokenString = [FBSDKAccessToken currentAccessToken].tokenString; + NSString *accountStoreTokenString = adapter.accessTokenString; + BOOL isAccountStoreLogin = [metadataTokenString isEqualToString:accountStoreTokenString]; + + if ([metadataTokenString isEqualToString:currentTokenString] || isAccountStoreLogin) { + NSInteger errorCode = [error.userInfo[FBSDKGraphRequestErrorGraphErrorCode] integerValue]; + NSInteger errorSubcode = [error.userInfo[FBSDKGraphRequestErrorGraphErrorSubcode] integerValue]; + if (errorCode == 190 || errorCode == 102) { + if (isAccountStoreLogin) { + if (errorSubcode == 460) { + // For iOS6, when the password is changed on the server, the system account store + // will continue to issue the old token until the user has changed the + // password AND _THEN_ a renew call is made. To prevent opening + // with an old token which would immediately be closed, we tell our adapter + // that we want to force a blocking renew until success. + adapter.forceBlockingRenew = YES; + } else { + [adapter renewSystemAuthorization:^(ACAccountCredentialRenewResult result, NSError *renewError) { + NSOperationQueue *queue = _delegateQueue ?: [NSOperationQueue mainQueue]; + [queue addOperationWithBlock:^{ + clearToken(); + finishAndInvokeCompletionHandler(); + }]; + }]; + return; + } + } + clearToken(); + } else if (errorCode >= 200 && errorCode < 300) { + // permission error + [adapter renewSystemAuthorization:^(ACAccountCredentialRenewResult result, NSError *renewError) { + NSOperationQueue *queue = _delegateQueue ?: [NSOperationQueue mainQueue]; + [queue addOperationWithBlock:finishAndInvokeCompletionHandler]; + }]; + return; + } + } + // this is already on the queue since we are currently in the NSURLConnection callback. + finishAndInvokeCompletionHandler(); +} + +- (void)processResultDebugDictionary:(NSDictionary *)dict +{ + NSArray *messages = [FBSDKTypeUtility arrayValue:dict[@"messages"]]; + if (![messages count]) { + return; + } + + [messages enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + NSDictionary *messageDict = [FBSDKTypeUtility dictionaryValue:obj]; + NSString *message = [FBSDKTypeUtility stringValue:messageDict[@"message"]]; + NSString *type = [FBSDKTypeUtility stringValue:messageDict[@"type"]]; + NSString *link = [FBSDKTypeUtility stringValue:messageDict[@"link"]]; + if (!message || !type) { + return; + } + + NSString *loggingBehavior = FBSDKLoggingBehaviorGraphAPIDebugInfo; + if ([type isEqualToString:@"warning"]) { + loggingBehavior = FBSDKLoggingBehaviorGraphAPIDebugWarning; + } + if (link) { + message = [message stringByAppendingFormat:@" Link: %@", link]; + } + + [FBSDKLogger singleShotLogEntry:loggingBehavior logEntry:message]; + }]; + +} + +- (NSError *)errorFromResult:(id)result request:(FBSDKGraphRequest *)request +{ + if ([result isKindOfClass:[NSDictionary class]]) { + NSDictionary *errorDictionary = [FBSDKTypeUtility dictionaryValue:result[@"body"]][@"error"]; + + if (errorDictionary) { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + [FBSDKInternalUtility dictionary:userInfo setObject:errorDictionary[@"code"] forKey:FBSDKGraphRequestErrorGraphErrorCode]; + [FBSDKInternalUtility dictionary:userInfo setObject:errorDictionary[@"error_subcode"] forKey:FBSDKGraphRequestErrorGraphErrorSubcode]; + //"message" is preferred over error_msg or error_reason. + [FBSDKInternalUtility dictionary:userInfo setObject:errorDictionary[@"error_msg"] forKey:FBSDKErrorDeveloperMessageKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:errorDictionary[@"error_reason"] forKey:FBSDKErrorDeveloperMessageKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:errorDictionary[@"message"] forKey:FBSDKErrorDeveloperMessageKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:errorDictionary[@"error_user_title"] forKey:FBSDKErrorLocalizedTitleKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:errorDictionary[@"error_user_msg"] forKey:FBSDKErrorLocalizedDescriptionKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:errorDictionary[@"error_user_msg"] forKey:NSLocalizedDescriptionKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:result[@"code"] forKey:FBSDKGraphRequestErrorHTTPStatusCodeKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:result forKey:FBSDKGraphRequestErrorParsedJSONResponseKey]; + + FBSDKErrorRecoveryConfiguration *recoveryConfiguration = [g_errorConfiguration + recoveryConfigurationForCode:[userInfo[FBSDKGraphRequestErrorGraphErrorCode] stringValue] + subcode:[userInfo[FBSDKGraphRequestErrorGraphErrorSubcode] stringValue] + request:request]; + if ([errorDictionary[@"is_transient"] boolValue]) { + userInfo[FBSDKGraphRequestErrorCategoryKey] = @(FBSDKGraphRequestErrorCategoryTransient); + } else { + [FBSDKInternalUtility dictionary:userInfo setObject:@(recoveryConfiguration.errorCategory) forKey:FBSDKGraphRequestErrorCategoryKey]; + } + [FBSDKInternalUtility dictionary:userInfo setObject:recoveryConfiguration.localizedRecoveryDescription forKey:NSLocalizedRecoverySuggestionErrorKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:recoveryConfiguration.localizedRecoveryOptionDescriptions forKey:NSLocalizedRecoveryOptionsErrorKey]; + FBSDKErrorRecoveryAttempter *attempter = [FBSDKErrorRecoveryAttempter recoveryAttempterFromConfiguration:recoveryConfiguration]; + [FBSDKInternalUtility dictionary:userInfo setObject:attempter forKey:NSRecoveryAttempterErrorKey]; + + return [FBSDKError errorWithCode:FBSDKGraphRequestGraphAPIErrorCode + userInfo:userInfo + message:nil + underlyingError:nil]; + } + } + + return nil; +} + +- (NSError *)errorWithCode:(FBSDKErrorCode)code + statusCode:(NSInteger)statusCode + parsedJSONResponse:(id)response + innerError:(NSError *)innerError + message:(NSString *)message { + NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] init]; + userInfo[FBSDKGraphRequestErrorHTTPStatusCodeKey] = @(statusCode); + + if (response) { + userInfo[FBSDKGraphRequestErrorParsedJSONResponseKey] = response; + } + + if (innerError) { + userInfo[FBSDKGraphRequestErrorParsedJSONResponseKey] = innerError; + } + + if (message) { + userInfo[FBSDKErrorDeveloperMessageKey] = message; + } + + NSError *error = [[NSError alloc] + initWithDomain:FBSDKErrorDomain + code:code + userInfo:userInfo]; + + return error; +} + +#pragma mark - Private methods (miscellaneous) + +- (void)logRequest:(NSMutableURLRequest *)request + bodyLength:(NSUInteger)bodyLength + bodyLogger:(FBSDKLogger *)bodyLogger + attachmentLogger:(FBSDKLogger *)attachmentLogger +{ + if (_logger.isActive) { + [_logger appendFormat:@"Request <#%lu>:\n", (unsigned long)_logger.loggerSerialNumber]; + [_logger appendKey:@"URL" value:[[request URL] absoluteString]]; + [_logger appendKey:@"Method" value:[request HTTPMethod]]; + [_logger appendKey:@"UserAgent" value:[request valueForHTTPHeaderField:@"User-Agent"]]; + [_logger appendKey:@"MIME" value:[request valueForHTTPHeaderField:@"Content-Type"]]; + + if (bodyLength != 0) { + [_logger appendKey:@"Body Size" value:[NSString stringWithFormat:@"%lu kB", (unsigned long)bodyLength / 1024]]; + } + + if (bodyLogger != nil) { + [_logger appendKey:@"Body (w/o attachments)" value:bodyLogger.contents]; + } + + if (attachmentLogger != nil) { + [_logger appendKey:@"Attachments" value:attachmentLogger.contents]; + } + + [_logger appendString:@"\n"]; + + [_logger emitToNSLog]; + } +} + +- (NSString *)accessTokenWithRequest:(FBSDKGraphRequest *)request +{ + NSString *token = request.tokenString ?: request.parameters[kAccessTokenKey]; + if (!token && !(request.flags & FBSDKGraphRequestFlagSkipClientToken) && [FBSDKSettings clientToken].length > 0) { + return [NSString stringWithFormat:@"%@|%@", [FBSDKSettings appID], [FBSDKSettings clientToken]]; + } + return token; +} + +- (void)registerTokenToOmitFromLog:(NSString *)token +{ + if (![[FBSDKSettings loggingBehavior] containsObject:FBSDKLoggingBehaviorAccessTokens]) { + [FBSDKLogger registerStringToReplace:token replaceWith:@"ACCESS_TOKEN_REMOVED"]; + } +} + ++ (NSString *)userAgent +{ + static NSString *agent = nil; + + if (!agent) { + agent = [NSString stringWithFormat:@"%@.%@", kUserAgentBase, FBSDK_VERSION_STRING]; + } + if ([FBSDKSettings userAgentSuffix]) { + return [NSString stringWithFormat:@"%@/%@", agent, [FBSDKSettings userAgentSuffix]]; + } + return agent; +} + +- (void)setConnection:(FBSDKURLConnection *)connection +{ + if (_connection != connection) { + _connection.delegate = nil; + _connection = connection; + } +} + +#pragma mark - FBSDKURLConnectionDelegate + +- (void)facebookURLConnection:(FBSDKURLConnection *)connection + didSendBodyData:(NSInteger)bytesWritten + totalBytesWritten:(NSInteger)totalBytesWritten + totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite { + id delegate = [self delegate]; + + if ([delegate respondsToSelector:@selector(requestConnection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:)]) { + [delegate requestConnection:self + didSendBodyData:bytesWritten + totalBytesWritten:totalBytesWritten + totalBytesExpectedToWrite:totalBytesExpectedToWrite]; + } +} + +#pragma mark - FBSDKGraphErrorRecoveryProcessorDelegate + +- (void)processorDidAttemptRecovery:(FBSDKGraphErrorRecoveryProcessor *)processor didRecover:(BOOL)didRecover error:(NSError *)error +{ + if (didRecover) { + FBSDKGraphRequest *originalRequest = _recoveringRequestMetadata.request; + FBSDKGraphRequest *retryRequest = [[FBSDKGraphRequest alloc] initWithGraphPath:originalRequest.graphPath + parameters:originalRequest.parameters + tokenString:[FBSDKAccessToken currentAccessToken].tokenString + version:originalRequest.version + HTTPMethod:originalRequest.HTTPMethod]; + // prevent further attempts at recovery (i.e., additional retries). + [retryRequest setGraphErrorRecoveryDisabled:YES]; + FBSDKGraphRequestMetadata *retryMetadata = [[FBSDKGraphRequestMetadata alloc] initWithRequest:retryRequest completionHandler:_recoveringRequestMetadata.completionHandler batchParameters:_recoveringRequestMetadata.batchParameters]; + [retryRequest startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *retriedError) { + [self processResultBody:result error:retriedError metadata:retryMetadata canNotifyDelegate:YES]; + _errorRecoveryProcessor = nil; + _recoveringRequestMetadata = nil; + }]; + } else { + [self processResultBody:nil error:error metadata:_recoveringRequestMetadata canNotifyDelegate:YES]; + _errorRecoveryProcessor = nil; + _recoveringRequestMetadata = nil; + } +} + +#pragma mark - Debugging helpers + +- (NSString *)description +{ + NSMutableString *result = [NSMutableString stringWithFormat:@"<%@: %p, %lu request(s): (\n", + NSStringFromClass([self class]), + self, + (unsigned long)self.requests.count]; + BOOL comma = NO; + for (FBSDKGraphRequestMetadata *metadata in self.requests) { + FBSDKGraphRequest *request = metadata.request; + if (comma) { + [result appendString:@",\n"]; + } + [result appendString:[request description]]; + comma = YES; + } + [result appendString:@"\n)>"]; + return result; + +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h new file mode 100644 index 0000000..c179e29 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h @@ -0,0 +1,52 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +/*! + @abstract A container class for data attachments so that additional metadata can be provided about the attachment. + */ +@interface FBSDKGraphRequestDataAttachment : NSObject + +/*! + @abstract Initializes the receiver with the attachment data and metadata. + @param data The attachment data (retained, not copied) + @param filename The filename for the attachment + @param contentType The content type for the attachment + */ +- (instancetype)initWithData:(NSData *)data + filename:(NSString *)filename + contentType:(NSString *)contentType +NS_DESIGNATED_INITIALIZER; + +/*! + @abstract The content type for the attachment. + */ +@property (nonatomic, copy, readonly) NSString *contentType; + +/*! + @abstract The attachment data. + */ +@property (nonatomic, strong, readonly) NSData *data; + +/*! + @abstract The filename for the attachment. + */ +@property (nonatomic, copy, readonly) NSString *filename; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m new file mode 100644 index 0000000..d5ec04d --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m @@ -0,0 +1,41 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKGraphRequestDataAttachment.h" + +#import "FBSDKMacros.h" + +@implementation FBSDKGraphRequestDataAttachment + +- (instancetype)initWithData:(NSData *)data filename:(NSString *)filename contentType:(NSString *)contentType +{ + if ((self = [super init])) { + _data = data; + _filename = [filename copy]; + _contentType = [contentType copy]; + } + return self; +} + +- (instancetype)init +{ + FBSDK_NOT_DESIGNATED_INITIALIZER(initWithData:filename:contentType:); + return [self initWithData:nil filename:nil contentType:nil]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h new file mode 100644 index 0000000..fd2e2ff --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h @@ -0,0 +1,39 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#ifdef __cplusplus +#define FBSDK_EXTERN extern "C" __attribute__((visibility ("default"))) +#else +#define FBSDK_EXTERN extern __attribute__((visibility ("default"))) +#endif + +#define FBSDK_STATIC_INLINE static inline + +#define FBSDK_NO_DESIGNATED_INITIALIZER() \ +@throw [NSException exceptionWithName:NSInvalidArgumentException \ + reason:[NSString stringWithFormat:@"unrecognized selector sent to instance %p", self] \ + userInfo:nil] + +#define FBSDK_NOT_DESIGNATED_INITIALIZER(DESIGNATED_INITIALIZER) \ +@throw [NSException exceptionWithName:NSInvalidArgumentException \ + reason:[NSString stringWithFormat:@"Please use the designated initializer [%p %@]", \ + self, \ + NSStringFromSelector(@selector(DESIGNATED_INITIALIZER))] \ + userInfo:nil] diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h new file mode 100644 index 0000000..621fac9 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h @@ -0,0 +1,35 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @abstract Extension protocol for NSMutableCopying that adds the mutableCopy method, which is implemented on NSObject. + @discussion NSObject implicitly conforms to this protocol. + */ +@protocol FBSDKMutableCopying + +/*! + @abstract Implemented by NSObject as a convenience to mutableCopyWithZone:. + @return A mutable copy of the receiver. + */ +- (id)mutableCopy; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h new file mode 100644 index 0000000..11da3d9 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h @@ -0,0 +1,148 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKMacros.h" +#import "FBSDKProfilePictureView.h" + +/*! + @abstract Notification indicating that the `currentProfile` has changed. + @discussion the userInfo dictionary of the notification will contain keys + `FBSDKProfileChangeOldKey` and + `FBSDKProfileChangeNewKey`. + */ +FBSDK_EXTERN NSString *const FBSDKProfileDidChangeNotification; + +/* @abstract key in notification's userInfo object for getting the old profile. + @discussion If there was no old profile, the key will not be present. + */ +FBSDK_EXTERN NSString *const FBSDKProfileChangeOldKey; + +/* @abstract key in notification's userInfo object for getting the new profile. + @discussion If there is no new profile, the key will not be present. + */ +FBSDK_EXTERN NSString *const FBSDKProfileChangeNewKey; + +/*! + @abstract Represents an immutable Facebook profile + @discussion This class provides a global "currentProfile" instance to more easily + add social context to your application. When the profile changes, a notification is + posted so that you can update relevant parts of your UI and is persisted to NSUserDefaults. + + Typically, you will want to call `enableUpdatesOnAccessTokenChange:YES` so that + it automatically observes changes to the `[FBSDKAccessToken currentAccessToken]`. + + You can use this class to build your own `FBSDKProfilePictureView` or in place of typical requests to "/me". + */ +@interface FBSDKProfile : NSObject + +/*! + @abstract initializes a new instance. + @param userID the user ID + @param firstName the user's first name + @param middleName the user's middle name + @param lastName the user's last name + @param name the user's complete name + @param linkURL the link for this profile + @param refreshDate the optional date this profile was fetched. Defaults to [NSDate date]. + */ +- (instancetype)initWithUserID:(NSString *)userID + firstName:(NSString *)firstName + middleName:(NSString *)middleName + lastName:(NSString *)lastName + name:(NSString *)name + linkURL:(NSURL *)linkURL + refreshDate:(NSDate *)refreshDate NS_DESIGNATED_INITIALIZER; +/*! + @abstract The user id + */ +@property (nonatomic, readonly) NSString *userID; +/*! + @abstract The user's first name + */ +@property (nonatomic, readonly) NSString *firstName; +/*! + @abstract The user's middle name + */ +@property (nonatomic, readonly) NSString *middleName; +/*! + @abstract The user's last name + */ +@property (nonatomic, readonly) NSString *lastName; +/*! + @abstract The user's complete name + */ +@property (nonatomic, readonly) NSString *name; +/*! + @abstract A URL to the user's profile. + @discussion Consider using Bolts and `FBSDKAppLinkResolver` to resolve this + to an app link to link directly to the user's profile in the Facebook app. + */ +@property (nonatomic, readonly) NSURL *linkURL; + +/*! + @abstract The last time the profile data was fetched. + */ +@property (nonatomic, readonly) NSDate *refreshDate; + +/*! + @abstract Gets the current FBSDKProfile instance. + */ ++ (FBSDKProfile *)currentProfile; + +/*! + @abstract Sets the current instance and posts the appropriate notification if the profile parameter is different + than the receiver. + @param profile the profile to set + @discussion This persists the profile to NSUserDefaults. + */ ++ (void)setCurrentProfile:(FBSDKProfile *)profile; + +/*! + @abstract Indicates if `currentProfile` will automatically observe `FBSDKAccessTokenDidChangeNotification` notifications + @param enable YES is observing + @discussion If observing, this class will issue a graph request for public profile data when the current token's userID + differs from the current profile. You can observe `FBSDKProfileDidChangeNotification` for when the profile is updated. + + Note that if `[FBSDKAccessToken currentAccessToken]` is unset, the `currentProfile` instance remains. It's also possible + for `currentProfile` to return nil until the data is fetched. + */ ++ (void)enableUpdatesOnAccessTokenChange:(BOOL)enable; + +/*! + @abstract A convenience method for returning a complete `NSURL` for retrieving the user's profile image. + @param mode The picture mode + @param size The height and width. This will be rounded to integer precision. + */ +- (NSURL *)imageURLForPictureMode:(FBSDKProfilePictureMode)mode size:(CGSize)size; + +/*! + @abstract A convenience method for returning a Graph API path for retrieving the user's profile image. + @deprecated use `imageURLForPictureMode:size:` instead + @discussion You can pass this to a `FBSDKGraphRequest` instance to download the image. + @param mode The picture mode + @param size The height and width. This will be rounded to integer precision. + */ +- (NSString *)imagePathForPictureMode:(FBSDKProfilePictureMode)mode size:(CGSize)size +__attribute__ ((deprecated("use imageURLForPictureMode:size: instead"))); + +/*! + @abstract Returns YES if the profile is equivalent to the receiver. + @param profile the profile to compare to. + */ +- (BOOL)isEqualToProfile:(FBSDKProfile *)profile; +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m new file mode 100644 index 0000000..b57b253 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m @@ -0,0 +1,268 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKProfile+Internal.h" + +#import "FBSDKCoreKit+Internal.h" + +NSString *const FBSDKProfileDidChangeNotification = @"com.facebook.sdk.FBSDKProfile.FBSDKProfileDidChangeNotification";; +NSString *const FBSDKProfileChangeOldKey = @"FBSDKProfileOld"; +NSString *const FBSDKProfileChangeNewKey = @"FBSDKProfileNew"; +static NSString *const FBSDKProfileUserDefaultsKey = @"com.facebook.sdk.FBSDKProfile.currentProfile"; +static FBSDKProfile *g_currentProfile; + +#define FBSDKPROFILE_USERID_KEY @"userID" +#define FBSDKPROFILE_FIRSTNAME_KEY @"firstName" +#define FBSDKPROFILE_MIDDLENAME_KEY @"middleName" +#define FBSDKPROFILE_LASTNAME_KEY @"lastName" +#define FBSDKPROFILE_NAME_KEY @"name" +#define FBSDKPROFILE_LINKURL_KEY @"linkURL" +#define FBSDKPROFILE_REFRESHDATE_KEY @"refreshDate" + +// Once a day +#define FBSDKPROFILE_STALE_IN_SECONDS (60 * 60 * 24) + +@implementation FBSDKProfile + +- (instancetype)init NS_UNAVAILABLE +{ + assert(0); +} + +- (instancetype)initWithUserID:(NSString *)userID + firstName:(NSString *)firstName + middleName:(NSString *)middleName + lastName:(NSString *)lastName + name:(NSString *)name + linkURL:(NSURL *)linkURL + refreshDate:(NSDate *)refreshDate +{ + if ((self = [super init])) { + _userID = [userID copy]; + _firstName = [firstName copy]; + _middleName = [middleName copy]; + _lastName = [lastName copy]; + _name = [name copy]; + _linkURL = [linkURL copy]; + _refreshDate = [refreshDate copy] ?: [NSDate date]; + } + return self; +} + ++ (FBSDKProfile *)currentProfile +{ + return g_currentProfile; +} + ++ (void)setCurrentProfile:(FBSDKProfile *)profile +{ + if (profile != g_currentProfile && ![profile isEqualToProfile:g_currentProfile]) { + [[self class] cacheProfile:profile]; + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + + [FBSDKInternalUtility dictionary:userInfo setObject:profile forKey:FBSDKProfileChangeNewKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:g_currentProfile forKey:FBSDKProfileChangeOldKey]; + g_currentProfile = profile; + [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKProfileDidChangeNotification + object:[self class] + userInfo:userInfo]; + } +} + +- (NSURL *)imageURLForPictureMode:(FBSDKProfilePictureMode)mode size:(CGSize)size +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + NSString *path = [self imagePathForPictureMode:FBSDKProfilePictureModeNormal size:size]; +#pragma clang diagnostic pop + return [FBSDKInternalUtility facebookURLWithHostPrefix:@"graph" + path:path + queryParameters:nil + error:NULL]; +} + +- (NSString *)imagePathForPictureMode:(FBSDKProfilePictureMode)mode size:(CGSize)size +{ + NSString *type; + switch (mode) { + case FBSDKProfilePictureModeNormal: type = @"normal"; break; + case FBSDKProfilePictureModeSquare: type = @"square"; break; + } + return [NSString stringWithFormat:@"%@/picture?type=%@&width=%d&height=%d", + _userID, + type, + (int) roundf(size.width), + (int) roundf(size.height)]; +} + ++ (void)enableUpdatesOnAccessTokenChange:(BOOL)enable +{ + if (enable) { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(observeChangeAccessTokenChange:) + name:FBSDKAccessTokenDidChangeNotification + object:nil]; + } else { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + } +} + +#pragma mark - NSCopying + +- (instancetype)copyWithZone:(NSZone *)zone +{ + //immutable + return self; +} + +#pragma mark - Equality + +- (NSUInteger)hash +{ + NSUInteger subhashes[] = { + [self.userID hash], + [self.firstName hash], + [self.middleName hash], + [self.lastName hash], + [self.name hash], + [self.linkURL hash], + [self.refreshDate hash] + }; + return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if (![object isKindOfClass:[FBSDKProfile class]]){ + return NO; + } + return [self isEqualToProfile:object]; +} + +- (BOOL)isEqualToProfile:(FBSDKProfile *)profile +{ + return ([_userID isEqualToString:profile.userID] && + [_firstName isEqualToString:profile.firstName] && + [_middleName isEqualToString:profile.middleName] && + [_lastName isEqualToString:profile.lastName] && + [_name isEqualToString:profile.name] && + [_linkURL isEqual:profile.linkURL] && + [_refreshDate isEqualToDate:profile.refreshDate]); +} +#pragma mark NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + NSString *userID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDKPROFILE_USERID_KEY]; + NSString *firstName = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDKPROFILE_FIRSTNAME_KEY]; + NSString *middleName = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDKPROFILE_MIDDLENAME_KEY]; + NSString *lastName = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDKPROFILE_LASTNAME_KEY]; + NSString *name = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDKPROFILE_NAME_KEY]; + NSURL *linkURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDKPROFILE_LINKURL_KEY]; + NSDate *refreshDate = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDKPROFILE_REFRESHDATE_KEY]; + return [self initWithUserID:userID + firstName:firstName + middleName:middleName + lastName:lastName + name:name + linkURL:linkURL + refreshDate:refreshDate]; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:self.userID forKey:FBSDKPROFILE_USERID_KEY]; + [encoder encodeObject:self.firstName forKey:FBSDKPROFILE_FIRSTNAME_KEY]; + [encoder encodeObject:self.middleName forKey:FBSDKPROFILE_MIDDLENAME_KEY]; + [encoder encodeObject:self.lastName forKey:FBSDKPROFILE_LASTNAME_KEY]; + [encoder encodeObject:self.name forKey:FBSDKPROFILE_NAME_KEY]; + [encoder encodeObject:self.linkURL forKey:FBSDKPROFILE_LINKURL_KEY]; + [encoder encodeObject:self.refreshDate forKey:FBSDKPROFILE_REFRESHDATE_KEY]; +} + +#pragma mark - Private + ++ (void)observeChangeAccessTokenChange:(NSNotification *)notification +{ + FBSDKAccessToken *token = notification.userInfo[FBSDKAccessTokenChangeNewKey]; + static FBSDKGraphRequestConnection *executingRequestConnection = nil; + + BOOL isStale = [[NSDate date] timeIntervalSinceDate:g_currentProfile.refreshDate] > FBSDKPROFILE_STALE_IN_SECONDS; + if (token && + (isStale || ![g_currentProfile.userID isEqualToString:token.userID])) { + FBSDKProfile *expectedCurrentProfile = g_currentProfile; + + NSString *graphPath = @"me?fields=id,first_name,middle_name,last_name,name,link"; + [executingRequestConnection cancel]; + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:graphPath + parameters:nil + flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; + executingRequestConnection = [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + if (expectedCurrentProfile != g_currentProfile) { + // current profile has already changed since request was started. Let's not overwrite. + return; + } + FBSDKProfile *profile = nil; + if (!error) { + profile = [[FBSDKProfile alloc] initWithUserID:result[@"id"] + firstName:result[@"first_name"] + middleName:result[@"middle_name"] + lastName:result[@"last_name"] + name:result[@"name"] + linkURL:[NSURL URLWithString:result[@"link"]] + refreshDate:[NSDate date]]; + } + [[self class] setCurrentProfile:profile]; + }]; + } +} + +@end + +@implementation FBSDKProfile(Internal) + ++ (void)cacheProfile:(FBSDKProfile *) profile +{ + NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; + if (profile) { + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:profile]; + [userDefaults setObject:data forKey:FBSDKProfileUserDefaultsKey]; + } else { + [userDefaults removeObjectForKey:FBSDKProfileUserDefaultsKey]; + } + [userDefaults synchronize]; +} + ++ (FBSDKProfile *)fetchCachedProfile +{ + NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; + NSData *data = [userDefaults objectForKey:FBSDKProfileUserDefaultsKey]; + return (data != nil) + ? [NSKeyedUnarchiver unarchiveObjectWithData:data] + : nil; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h new file mode 100644 index 0000000..f1f64cb --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h @@ -0,0 +1,59 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +/*! + @typedef FBSDKProfilePictureMode enum + @abstract Defines the aspect ratio mode for the source image of the profile picture. + */ +typedef NS_ENUM(NSUInteger, FBSDKProfilePictureMode) +{ + /*! + @abstract A square cropped version of the image will be included in the view. + */ + FBSDKProfilePictureModeSquare, + /*! + @abstract The original picture's aspect ratio will be used for the source image in the view. + */ + FBSDKProfilePictureModeNormal, +}; + +/*! + @abstract A view to display a profile picture. + */ +@interface FBSDKProfilePictureView : UIView + +/*! + @abstract The mode for the receiver to determine the aspect ratio of the source image. + */ +@property (nonatomic, assign) FBSDKProfilePictureMode pictureMode; + +/*! + @abstract The profile ID to show the picture for. + */ +@property (nonatomic, copy) NSString *profileID; + +/*! + @abstract Explicitly marks the receiver as needing to update the image. + @discussion This method is called whenever any properties that affect the source image are modified, but this can also + be used to trigger a manual update of the image if it needs to be re-downloaded. + */ +- (void)setNeedsImageUpdate; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m new file mode 100644 index 0000000..f107de3 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m @@ -0,0 +1,368 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKProfilePictureView.h" + +#import "FBSDKAccessToken.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKMaleSilhouetteIcon.h" +#import "FBSDKMath.h" +#import "FBSDKURLConnection.h" +#import "FBSDKUtility.h" + +@interface FBSDKProfilePictureViewState : NSObject + +- (instancetype)initWithProfileID:(NSString *)profileID + size:(CGSize)size + scale:(CGFloat)scale + pictureMode:(FBSDKProfilePictureMode)pictureMode + imageShouldFit:(BOOL)imageShouldFit; + +@property (nonatomic, assign, readonly) BOOL imageShouldFit; +@property (nonatomic, assign, readonly) FBSDKProfilePictureMode pictureMode; +@property (nonatomic, copy, readonly) NSString *profileID; +@property (nonatomic, assign, readonly) CGFloat scale; +@property (nonatomic, assign, readonly) CGSize size; + +- (BOOL)isEqualToState:(FBSDKProfilePictureViewState *)other; +- (BOOL)isValidForState:(FBSDKProfilePictureViewState *)other; + +@end + +@implementation FBSDKProfilePictureViewState + +- (instancetype)initWithProfileID:(NSString *)profileID + size:(CGSize)size + scale:(CGFloat)scale + pictureMode:(FBSDKProfilePictureMode)pictureMode + imageShouldFit:(BOOL)imageShouldFit +{ + if ((self = [super init])) { + _profileID = [profileID copy]; + _size = size; + _scale = scale; + _pictureMode = pictureMode; + _imageShouldFit = imageShouldFit; + } + return self; +} + +- (NSUInteger)hash +{ + NSUInteger subhashes[] = { + (NSUInteger)_imageShouldFit, + (NSUInteger)_size.width, + (NSUInteger)_size.height, + (NSUInteger)_scale, + (NSUInteger)_pictureMode, + [_profileID hash], + }; + return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; +} + +- (BOOL)isEqual:(id)object +{ + if (![object isKindOfClass:[FBSDKProfilePictureViewState class]]) { + return NO; + } + FBSDKProfilePictureViewState *other = (FBSDKProfilePictureViewState *)object; + return [self isEqualToState:other]; +} + +- (BOOL)isEqualToState:(FBSDKProfilePictureViewState *)other +{ + return ([self isValidForState:other] && + CGSizeEqualToSize(_size, other->_size) && + (_scale == other->_scale)); +} + +- (BOOL)isValidForState:(FBSDKProfilePictureViewState *)other +{ + return (other != nil && + (_imageShouldFit == other->_imageShouldFit) && + (_pictureMode == other->_pictureMode) && + [FBSDKInternalUtility object:_profileID isEqualToObject:other->_profileID]); +} + +@end + +@implementation FBSDKProfilePictureView +{ + BOOL _hasProfileImage; + UIImageView *_imageView; + FBSDKProfilePictureViewState *_lastState; + BOOL _needsImageUpdate; + BOOL _placeholderImageIsValid; +} + +#pragma mark - Object Lifecycle + +- (instancetype)initWithFrame:(CGRect)frame +{ + if ((self = [super initWithFrame:frame])) { + [self _configureProfilePictureView]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [super initWithCoder:decoder])) { + [self _configureProfilePictureView]; + } + return self; +} + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +#pragma mark - Properties + +- (void)setBounds:(CGRect)bounds +{ + CGRect currentBounds = self.bounds; + if (!CGRectEqualToRect(currentBounds, bounds)) { + [super setBounds:bounds]; + if (!CGSizeEqualToSize(currentBounds.size, bounds.size)) { + _placeholderImageIsValid = NO; + [self setNeedsImageUpdate]; + } + } +} + +- (UIViewContentMode)contentMode +{ + return _imageView.contentMode; +} + +- (void)setContentMode:(UIViewContentMode)contentMode +{ + if (_imageView.contentMode != contentMode) { + _imageView.contentMode = contentMode; + [super setContentMode:contentMode]; + [self setNeedsImageUpdate]; + } +} + +- (void)setMode:(FBSDKProfilePictureMode)pictureMode +{ + if (_pictureMode != pictureMode) { + _pictureMode = pictureMode; + [self setNeedsImageUpdate]; + } +} + +- (void)setProfileID:(NSString *)profileID +{ + if (![FBSDKInternalUtility object:_profileID isEqualToObject:profileID]) { + _profileID = [profileID copy]; + _placeholderImageIsValid = NO; + [self setNeedsImageUpdate]; + } +} + +#pragma mark - Public Methods + +- (void)setNeedsImageUpdate +{ + if (!_imageView || CGRectIsEmpty(self.bounds)) { + // we can't do anything with an empty view, so just bail out until we have a size + return; + } + + // ensure that we have an image. do this here so we can draw the placeholder image synchronously if we don't have one + if (!_placeholderImageIsValid && !_hasProfileImage) { + [self _setPlaceholderImage]; + } + + // debounce calls to needsImage against the main runloop + if (_needsImageUpdate) { + return; + } + _needsImageUpdate = YES; + __weak FBSDKProfilePictureView *weakSelf = self; + dispatch_async(dispatch_get_main_queue(), ^{ + [weakSelf _needsImageUpdate]; + }); +} + +#pragma mark - Helper Methods + ++ (void)_downloadImageWithState:(FBSDKProfilePictureViewState *)state + completionBlock:(void(^)(NSData *data))completionBlock; +{ + NSURL *imageURL = [self _imageURLWithState:state]; + if (!imageURL) { + return; + } + FBSDKURLConnectionHandler completionHandler = ^(FBSDKURLConnection *connection, + NSError *error, + NSURLResponse *response, + NSData *responseData) { + if (!error && [responseData length]) { + completionBlock(responseData); + } + }; + NSURLRequest *request = [[NSURLRequest alloc] initWithURL:imageURL]; + [[[FBSDKURLConnection alloc] initWithRequest:request completionHandler:completionHandler] start]; +} + ++ (NSURL *)_imageURLWithState:(FBSDKProfilePictureViewState *)state +{ + FBSDKAccessToken *accessToken = [FBSDKAccessToken currentAccessToken]; + if ([state.profileID isEqualToString:@"me"] && !accessToken) { + return nil; + } + NSString *path = [[NSString alloc] initWithFormat:@"/%@/picture", [FBSDKUtility URLEncode:state.profileID]]; + CGSize size = state.size; + NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; + parameters[@"width"] = @(size.width); + parameters[@"height"] = @(size.height); + [FBSDKInternalUtility dictionary:parameters setObject:accessToken.tokenString forKey:@"access_token"]; + return [FBSDKInternalUtility facebookURLWithHostPrefix:@"graph" path:path queryParameters:parameters error:NULL]; +} + +- (void)_accessTokenDidChangeNotification:(NSNotification *)notification +{ + if (![_profileID isEqualToString:@"me"] || !notification.userInfo[FBSDKAccessTokenDidChangeUserID]) { + return; + } + _lastState = nil; + [self setNeedsImageUpdate]; +} + +- (void)_configureProfilePictureView +{ + _imageView = [[UIImageView alloc] initWithFrame:self.bounds]; + _imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); + [self addSubview:_imageView]; + + _profileID = @"me"; + self.backgroundColor = [UIColor whiteColor]; + self.contentMode = UIViewContentModeScaleAspectFit; + self.userInteractionEnabled = NO; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(_accessTokenDidChangeNotification:) + name:FBSDKAccessTokenDidChangeNotification + object:nil]; + + [self setNeedsImageUpdate]; +} + +- (BOOL)_imageShouldFit +{ + switch (self.contentMode) { + case UIViewContentModeBottom: + case UIViewContentModeBottomLeft: + case UIViewContentModeBottomRight: + case UIViewContentModeCenter: + case UIViewContentModeLeft: + case UIViewContentModeRedraw: + case UIViewContentModeRight: + case UIViewContentModeScaleAspectFit: + case UIViewContentModeTop: + case UIViewContentModeTopLeft: + case UIViewContentModeTopRight: + return YES; + case UIViewContentModeScaleAspectFill: + case UIViewContentModeScaleToFill: + return NO; + } +} + +- (CGSize)_imageSize:(BOOL)imageShouldFit scale:(CGFloat)scale +{ + // get the image size based on the contentMode and pictureMode + CGSize size = self.bounds.size; + switch (_pictureMode) { + case FBSDKProfilePictureModeSquare:{ + CGFloat imageSize; + if (imageShouldFit) { + imageSize = MIN(size.width, size.height); + } else { + imageSize = MAX(size.width, size.height); + } + size = CGSizeMake(imageSize, imageSize); + break; + } + case FBSDKProfilePictureModeNormal: + // use the bounds size + break; + } + + // adjust for the screen scale + size = CGSizeMake(size.width * scale, size.height * scale); + + return size; +} + +- (void)_needsImageUpdate +{ + _needsImageUpdate = NO; + + if (!_profileID) { + if (!_placeholderImageIsValid) { + [self _setPlaceholderImage]; + } + return; + } + + // if the current image is no longer representative of the current state, clear the current value out; otherwise, + // leave the current value until the new resolution image is downloaded + BOOL imageShouldFit = [self _imageShouldFit]; + UIScreen *screen = self.window.screen ?: [UIScreen mainScreen]; + CGFloat scale = [screen scale]; + CGSize imageSize = [self _imageSize:imageShouldFit scale:scale]; + FBSDKProfilePictureViewState *state = [[FBSDKProfilePictureViewState alloc] initWithProfileID:_profileID + size:imageSize + scale:scale + pictureMode:_pictureMode + imageShouldFit:imageShouldFit]; + if (![_lastState isValidForState:state]) { + [self _setPlaceholderImage]; + } + _lastState = state; + + __weak FBSDKProfilePictureView *weakSelf = self; + [[self class] _downloadImageWithState:state completionBlock:^(NSData *data) { + [weakSelf _updateImageWithData:data state:state]; + }]; +} + +- (void)_setPlaceholderImage +{ + UIColor *fillColor = [UIColor colorWithRed:157.0/255.0 green:177.0/255.0 blue:204.0/255.0 alpha:1.0]; + _imageView.image = [[[FBSDKMaleSilhouetteIcon alloc] initWithColor:fillColor] imageWithSize:_imageView.bounds.size]; + _placeholderImageIsValid = YES; + _hasProfileImage = NO; +} + +- (void)_updateImageWithData:(NSData *)data state:(FBSDKProfilePictureViewState *)state +{ + // make sure we haven't updated the state since we began fetching the image + if (![state isValidForState:_lastState]) { + return; + } + UIImage *image = [[UIImage alloc] initWithData:data scale:state.scale]; + _imageView.image = image; + _hasProfileImage = YES; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h new file mode 100644 index 0000000..edc0040 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h @@ -0,0 +1,209 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/* + * Constants defining logging behavior. Use with <[FBSDKSettings setLoggingBehavior]>. + */ + +/*! Include access token in logging. */ +FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorAccessTokens; + +/*! Log performance characteristics */ +FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorPerformanceCharacteristics; + +/*! Log FBSDKAppEvents interactions */ +FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorAppEvents; + +/*! Log Informational occurrences */ +FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorInformational; + +/*! Log cache errors. */ +FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorCacheErrors; + +/*! Log errors from SDK UI controls */ +FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorUIControlErrors; + +/*! Log debug warnings from API response, i.e. when friends fields requested, but user_friends permission isn't granted. */ +FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorGraphAPIDebugWarning; + +/*! Log warnings from API response, i.e. when requested feature will be deprecated in next version of API. + Info is the lowest level of severity, using it will result in logging all previously mentioned levels. + */ +FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorGraphAPIDebugInfo; + +/*! Log errors from SDK network requests */ +FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorNetworkRequests; + +/*! Log errors likely to be preventable by the developer. This is in the default set of enabled logging behaviors. */ +FBSDK_EXTERN NSString *const FBSDKLoggingBehaviorDeveloperErrors; + +@interface FBSDKSettings : NSObject + +/*! + @abstract Get the Facebook App ID used by the SDK. + @discussion If not explicitly set, the default will be read from the application's plist (FacebookAppID). + */ ++ (NSString *)appID; + +/*! + @abstract Set the Facebook App ID to be used by the SDK. + @param appID The Facebook App ID to be used by the SDK. + */ ++ (void)setAppID:(NSString *)appID; + +/*! + @abstract Get the default url scheme suffix used for sessions. + @discussion If not explicitly set, the default will be read from the application's plist (FacebookUrlSchemeSuffix). + */ ++ (NSString *)appURLSchemeSuffix; + +/*! + @abstract Set the app url scheme suffix used by the SDK. + @param appURLSchemeSuffix The url scheme suffix to be used by the SDK. + */ ++ (void)setAppURLSchemeSuffix:(NSString *)appURLSchemeSuffix; + +/*! + @abstract Retrieve the Client Token that has been set via [FBSDKSettings setClientToken]. + @discussion If not explicitly set, the default will be read from the application's plist (FacebookClientToken). + */ ++ (NSString *)clientToken; + +/*! + @abstract Sets the Client Token for the Facebook App. + @discussion This is needed for certain API calls when made anonymously, without a user-based access token. + @param clientToken The Facebook App's "client token", which, for a given appid can be found in the Security + section of the Advanced tab of the Facebook App settings found at + */ ++ (void)setClientToken:(NSString *)clientToken; + +/*! + @abstract A convenient way to toggle error recovery for all FBSDKGraphRequest instances created after this is set. + @param disableGraphErrorRecovery YES or NO. + */ ++ (void)setGraphErrorRecoveryDisabled:(BOOL)disableGraphErrorRecovery; + +/*! + @abstract Get the Facebook Display Name used by the SDK. + @discussion If not explicitly set, the default will be read from the application's plist (FacebookDisplayName). + */ ++ (NSString *)displayName; + +/*! + @abstract Set the default Facebook Display Name to be used by the SDK. + @discussion This should match the Display Name that has been set for the app with the corresponding Facebook App ID, + in the Facebook App Dashboard. + @param displayName The Facebook Display Name to be used by the SDK. + */ ++ (void)setDisplayName:(NSString *)displayName; + +/*! + @abstract Get the Facebook domain part. + @discussion If not explicitly set, the default will be read from the application's plist (FacebookDomainPart). + */ ++ (NSString *)facebookDomainPart; + +/*! + @abstract Set the subpart of the Facebook domain. + @discussion This can be used to change the Facebook domain (e.g. @"beta") so that requests will be sent to + graph.beta.facebook.com + @param facebookDomainPart The domain part to be inserted into facebook.com. + */ ++ (void)setFacebookDomainPart:(NSString *)facebookDomainPart; + +/*! + @abstract The quality of JPEG images sent to Facebook from the SDK. + @discussion If not explicitly set, the default is 0.9. + @see [UIImageJPEGRepresentation](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIKitFunctionReference/#//apple_ref/c/func/UIImageJPEGRepresentation) */ ++ (CGFloat)JPEGCompressionQuality; + +/*! + @abstract Set the quality of JPEG images sent to Facebook from the SDK. + @param JPEGCompressionQuality The quality for JPEG images, expressed as a value from 0.0 to 1.0. + @see [UIImageJPEGRepresentation](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIKitFunctionReference/#//apple_ref/c/func/UIImageJPEGRepresentation) */ ++ (void)setJPEGCompressionQuality:(CGFloat)JPEGCompressionQuality; + +/*! + @abstract + Gets whether data such as that generated through FBSDKAppEvents and sent to Facebook should be restricted from being used for other than analytics and conversions. Defaults to NO. This value is stored on the device and persists across app launches. + */ ++ (BOOL)limitEventAndDataUsage; + +/*! + @abstract + Sets whether data such as that generated through FBSDKAppEvents and sent to Facebook should be restricted from being used for other than analytics and conversions. Defaults to NO. This value is stored on the device and persists across app launches. + + @param limitEventAndDataUsage The desired value. + */ ++ (void)setLimitEventAndDataUsage:(BOOL)limitEventAndDataUsage; + +/*! + @abstract Retrieve the current iOS SDK version. + */ ++ (NSString *)sdkVersion; + +/*! + @abstract Retrieve the current Facebook SDK logging behavior. + */ ++ (NSSet *)loggingBehavior; + +/*! + @abstract Set the current Facebook SDK logging behavior. This should consist of strings defined as + constants with FBSDKLoggingBehavior*. + + @param loggingBehavior A set of strings indicating what information should be logged. If nil is provided, the logging + behavior is reset to the default set of enabled behaviors. Set to an empty set in order to disable all logging. + + @discussion You can also define this via an array in your app plist with key "FacebookLoggingBehavior" or add and remove individual values via enableLoggingBehavior: or disableLogginBehavior: + */ ++ (void)setLoggingBehavior:(NSSet *)loggingBehavior; + +/*! + @abstract Enable a particular Facebook SDK logging behavior. + + @param loggingBehavior The LoggingBehavior to enable. This should be a string defined as a constant with FBSDKLoggingBehavior*. + */ ++ (void)enableLoggingBehavior:(NSString *)loggingBehavior; + +/*! + @abstract Disable a particular Facebook SDK logging behavior. + + @param loggingBehavior The LoggingBehavior to disable. This should be a string defined as a constant with FBSDKLoggingBehavior*. + */ ++ (void)disableLoggingBehavior:(NSString *)loggingBehavior; + +/*! + @abstract Set the user defaults key used by legacy token caches. + + @param tokenInformationKeyName the key used by legacy token caches. + + @discussion Use this only if you customized FBSessionTokenCachingStrategy in v3.x of + the Facebook SDK for iOS. +*/ ++ (void)setLegacyUserDefaultTokenInformationKeyName:(NSString *)tokenInformationKeyName; + +/*! + @abstract Get the user defaults key used by legacy token caches. +*/ ++ (NSString *)legacyUserDefaultTokenInformationKeyName; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m new file mode 100644 index 0000000..8476827 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m @@ -0,0 +1,223 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKSettings+Internal.h" + +#import "FBSDKCoreKit.h" + +#define FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(TYPE, PLIST_KEY, GETTER, SETTER, DEFAULT_VALUE) \ +static TYPE *g_##PLIST_KEY = nil; \ ++ (TYPE *)GETTER \ +{ \ + if (!g_##PLIST_KEY) { \ + g_##PLIST_KEY = [[[NSBundle mainBundle] objectForInfoDictionaryKey:@#PLIST_KEY] copy] ?: DEFAULT_VALUE; \ + } \ + return g_##PLIST_KEY; \ +} \ ++ (void)SETTER:(TYPE *)value { \ + g_##PLIST_KEY = [value copy]; \ +} + +NSString *const FBSDKLoggingBehaviorAccessTokens = @"include_access_tokens"; +NSString *const FBSDKLoggingBehaviorPerformanceCharacteristics = @"perf_characteristics"; +NSString *const FBSDKLoggingBehaviorAppEvents = @"app_events"; +NSString *const FBSDKLoggingBehaviorInformational = @"informational"; +NSString *const FBSDKLoggingBehaviorCacheErrors = @"cache_errors"; +NSString *const FBSDKLoggingBehaviorUIControlErrors = @"ui_control_errors"; +NSString *const FBSDKLoggingBehaviorDeveloperErrors = @"developer_errors"; +NSString *const FBSDKLoggingBehaviorGraphAPIDebugWarning = @"graph_api_debug_warning"; +NSString *const FBSDKLoggingBehaviorGraphAPIDebugInfo = @"graph_api_debug_info"; +NSString *const FBSDKLoggingBehaviorNetworkRequests = @"network_requests"; + +static FBSDKAccessTokenCache *g_tokenCache; +static NSMutableSet *g_loggingBehavior; +static NSString *g_legacyUserDefaultTokenInformationKeyName = @"FBAccessTokenInformationKey"; +static NSString *const FBSDKSettingsLimitEventAndDataUsage = @"com.facebook.sdk:FBSDKSettingsLimitEventAndDataUsage"; +static BOOL g_disableErrorRecovery; +static NSString *g_userAgentSuffix; + +@implementation FBSDKSettings + ++ (void)initialize +{ + if (self == [FBSDKSettings class]) { + g_tokenCache = [[FBSDKAccessTokenCache alloc] init]; + } +} + +#pragma mark - Plist Configuration Settings + +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSString, FacebookAppID, appID, setAppID, nil); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSString, FacebookUrlSchemeSuffix, appURLSchemeSuffix, setAppURLSchemeSuffix, nil); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSString, FacebookClientToken, clientToken, setClientToken, nil); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSString, FacebookDisplayName, displayName, setDisplayName, nil); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSString, FacebookDomainPart, facebookDomainPart, setFacebookDomainPart, nil); +FBSDKSETTINGS_PLIST_CONFIGURATION_SETTING_IMPL(NSNumber, FacebookJpegCompressionQuality, _JPEGCompressionQualityNumber, _setJPEGCompressionQualityNumber, @(0.9)); + ++ (void)setGraphErrorRecoveryDisabled:(BOOL)disableGraphErrorRecovery { + g_disableErrorRecovery = disableGraphErrorRecovery; +} + ++ (BOOL)isGraphErrorRecoveryDisabled { + return g_disableErrorRecovery; +} + ++ (CGFloat)JPEGCompressionQuality +{ + return [[self _JPEGCompressionQualityNumber] floatValue]; +} + ++ (void)setJPEGCompressionQuality:(CGFloat)JPEGCompressionQuality +{ + [self _setJPEGCompressionQualityNumber:@(JPEGCompressionQuality)]; +} + ++ (BOOL)limitEventAndDataUsage +{ + NSNumber *storedValue = [[NSUserDefaults standardUserDefaults] objectForKey:FBSDKSettingsLimitEventAndDataUsage]; + if (storedValue == nil) { + return NO; + } + return storedValue.boolValue; +} + ++ (void)setLimitEventAndDataUsage:(BOOL)limitEventAndDataUsage +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [defaults setObject:@(limitEventAndDataUsage) forKey:FBSDKSettingsLimitEventAndDataUsage]; + [defaults synchronize]; +} + ++ (NSSet *)loggingBehavior +{ + if (!g_loggingBehavior) { + NSArray *bundleLoggingBehaviors = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"FacebookLoggingBehavior"]; + if (bundleLoggingBehaviors) { + g_loggingBehavior = [[NSMutableSet alloc] initWithArray:bundleLoggingBehaviors]; + } else { + // Establish set of default enabled logging behaviors. You can completely disable logging by + // specifying an empty array for FacebookLoggingBehavior in your Info.plist. + g_loggingBehavior = [[NSMutableSet alloc] initWithObjects:FBSDKLoggingBehaviorDeveloperErrors, nil]; + } + } + return [g_loggingBehavior copy]; +} + ++ (void)setLoggingBehavior:(NSSet *)loggingBehavior +{ + if (![g_loggingBehavior isEqualToSet:loggingBehavior]) { + g_loggingBehavior = [loggingBehavior mutableCopy]; + + [self updateGraphAPIDebugBehavior]; + } +} + ++ (void)enableLoggingBehavior:(NSString *)loggingBehavior +{ + if (!g_loggingBehavior) { + [self loggingBehavior]; + } + [g_loggingBehavior addObject:loggingBehavior]; + [self updateGraphAPIDebugBehavior]; +} + ++ (void)disableLoggingBehavior:(NSString *)loggingBehavior +{ + if (!g_loggingBehavior) { + [self loggingBehavior]; + } + [g_loggingBehavior removeObject:loggingBehavior]; + [self updateGraphAPIDebugBehavior]; +} + ++ (void)setLegacyUserDefaultTokenInformationKeyName:(NSString *)tokenInformationKeyName +{ + if (![g_legacyUserDefaultTokenInformationKeyName isEqualToString:tokenInformationKeyName]) { + g_legacyUserDefaultTokenInformationKeyName = tokenInformationKeyName; + } +} + ++ (NSString *)legacyUserDefaultTokenInformationKeyName +{ + return g_legacyUserDefaultTokenInformationKeyName; +} + +#pragma mark - Readonly Configuration Settings + ++ (NSString *)sdkVersion +{ + return FBSDK_VERSION_STRING; +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + FBSDK_NO_DESIGNATED_INITIALIZER(); + return nil; +} + +#pragma mark - Internal + ++ (FBSDKAccessTokenCache *)accessTokenCache +{ + return g_tokenCache; +} + +- (void)setAccessTokenCache:(FBSDKAccessTokenCache *)cache +{ + if (g_tokenCache != cache) { + g_tokenCache = cache; + } +} + ++ (NSString *)userAgentSuffix +{ + return g_userAgentSuffix; +} + ++ (void)setUserAgentSuffix:(NSString *)suffix +{ + if (![g_userAgentSuffix isEqualToString:suffix]) { + g_userAgentSuffix = suffix; + } +} + +#pragma mark - Internal - Graph API Debug + ++ (void)updateGraphAPIDebugBehavior +{ + // Enable Warnings everytime Info is enabled + if ([g_loggingBehavior containsObject:FBSDKLoggingBehaviorGraphAPIDebugInfo] + && ![g_loggingBehavior containsObject:FBSDKLoggingBehaviorGraphAPIDebugWarning]) { + [g_loggingBehavior addObject:FBSDKLoggingBehaviorGraphAPIDebugWarning]; + } +} + ++ (NSString *)graphAPIDebugParamValue +{ + if ([[self loggingBehavior] containsObject:FBSDKLoggingBehaviorGraphAPIDebugInfo]) { + return @"info"; + } else if ([[self loggingBehavior] containsObject:FBSDKLoggingBehaviorGraphAPIDebugWarning]) { + return @"warning"; + } + + return nil; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h new file mode 100644 index 0000000..7d2e0ac --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h @@ -0,0 +1,102 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@class FBSDKAccessToken; + +/*! + @typedef + + @abstract Callback block for returning an array of FBSDKAccessToken instances (and possibly `NSNull` instances); or an error. + */ +typedef void (^FBSDKTestUsersManagerRetrieveTestAccountTokensHandler)(NSArray *tokens, NSError *error) ; + +/*! + @typedef + + @abstract Callback block for removing a test user. + */ +typedef void (^FBSDKTestUsersManagerRemoveTestAccountHandler)(NSError *error) ; + + +/*! + @class FBSDKTestUsersManager + @abstract Provides methods for managing test accounts for testing Facebook integration. + + @discussion Facebook allows developers to create test accounts for testing their applications' + Facebook integration (see https://developers.facebook.com/docs/test_users/). This class + simplifies use of these accounts for writing tests. It is not designed for use in + production application code. + + This class will make Graph API calls on behalf of your app to manage test accounts and requires + an app id and app secret. You will typically use this class to write unit or integration tests. + Make sure you NEVER include your app secret in your production app. + */ +@interface FBSDKTestUsersManager : NSObject + +/*! + @abstract construct or return the shared instance + @param appID the Facebook app id + @param appSecret the Facebook app secret + */ ++ (instancetype)sharedInstanceForAppID:(NSString *)appID appSecret:(NSString *)appSecret; + +/*! + @abstract retrieve FBSDKAccessToken instances for test accounts with the specific permissions. + @param arraysOfPermissions an array of permissions sets, such as @[ [NSSet setWithObject:@"email"], [NSSet setWithObject:@"user_birthday"]] + if you needed two test accounts with email and birthday permissions, respectively. You can pass in empty nested sets + if you need two arbitrary test accounts. For convenience, passing nil is treated as @[ [NSSet set] ] + for fetching a single test user. + @param createIfNotFound if YES, new test accounts are created if no test accounts existed that fit the permissions + requirement + @param handler the callback to invoke which will return an array of `FBAccessTokenData` instances or an `NSError`. + If param `createIfNotFound` is NO, the array may contain `[NSNull null]` instances. + + @discussion If you are requesting test accounts with differing number of permissions, try to order + `arrayOfPermissionsArrays` so that the most number of permissions come first to minimize creation of new + test accounts. + */ +- (void)requestTestAccountTokensWithArraysOfPermissions:(NSArray *)arraysOfPermissions + createIfNotFound:(BOOL)createIfNotFound + completionHandler:(FBSDKTestUsersManagerRetrieveTestAccountTokensHandler)handler; + +/*! + @abstract add a test account with the specified permissions + @param permissions the set of permissions, e.g., [NSSet setWithObjects:@"email", @"user_friends"] + @param handler the callback handler + */ +- (void)addTestAccountWithPermissions:(NSSet *)permissions + completionHandler:(FBSDKTestUsersManagerRetrieveTestAccountTokensHandler)handler; + +/*! + @abstract remove a test account for the given user id + @param userId the user id + @param handler the callback handler + */ +- (void)removeTestAccount:(NSString *)userId completionHandler:(FBSDKTestUsersManagerRemoveTestAccountHandler)handler; + +/*! + @abstract Make two test users friends with each other. + @param first the token of the first user + @param second the token of the second user + @param callback the callback handler + */ +- (void)makeFriendsWithFirst:(FBSDKAccessToken *)first second:(FBSDKAccessToken *)second callback:(void (^)(NSError *))callback; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m new file mode 100644 index 0000000..71fb8df --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m @@ -0,0 +1,328 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKTestUsersManager.h" + +#import "FBSDKCoreKit+Internal.h" + +static NSString *const kFBGraphAPITestUsersPathFormat = @"%@/accounts/test-users"; +static NSString *const kAccountsDictionaryTokenKey = @"access_token"; +static NSString *const kAccountsDictionaryPermissionsKey = @"permissions"; +static NSMutableDictionary *gInstancesDictionary; + +@interface FBSDKTestUsersManager() +- (instancetype)initWithAppID:(NSString *)appID appSecret:(NSString *)appSecret NS_DESIGNATED_INITIALIZER; +@end + +@implementation FBSDKTestUsersManager +{ + NSString *_appID; + NSString *_appSecret; + // dictionary with format like: + // { user_id : { kAccountsDictionaryTokenKey : "token", + // kAccountsDictionaryPermissionsKey : [ permissions ] } + NSMutableDictionary *_accounts; +} + +- (instancetype)initWithAppID:(NSString *)appID appSecret:(NSString *)appSecret { + if ((self = [super init])) { + _appID = [appID copy]; + _appSecret = [appSecret copy]; + _accounts = [NSMutableDictionary dictionary]; + } + return self; +} + +- (instancetype)init +{ + FBSDK_NOT_DESIGNATED_INITIALIZER(initWithAppID:appSecret:); + return [self initWithAppID:nil appSecret:nil]; +} + ++ (instancetype)sharedInstanceForAppID:(NSString *)appID appSecret:(NSString *)appSecret { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + gInstancesDictionary = [NSMutableDictionary dictionary]; + }); + + NSString *instanceKey = [NSString stringWithFormat:@"%@|%@", appID, appSecret]; + if (!gInstancesDictionary[instanceKey]) { + gInstancesDictionary[instanceKey] = [[FBSDKTestUsersManager alloc] initWithAppID:appID appSecret:appSecret]; + } + return gInstancesDictionary[instanceKey]; +} + +- (void)requestTestAccountTokensWithArraysOfPermissions:(NSArray *)arraysOfPermissions + createIfNotFound:(BOOL)createIfNotFound + completionHandler:(FBSDKTestUsersManagerRetrieveTestAccountTokensHandler)handler { + arraysOfPermissions = arraysOfPermissions ?: @[[NSSet set]]; + + // wrap work in a block so that we can chain it to after a fetch of existing accounts if we need to. + void (^helper)(NSError *) = ^(NSError *error){ + if (error) { + if (handler) { + handler(nil, error); + } + return; + } + NSMutableArray *tokenDatum = [NSMutableArray arrayWithCapacity:arraysOfPermissions.count]; + NSMutableSet *collectedUserIds = [NSMutableSet setWithCapacity:arraysOfPermissions.count]; + __block BOOL canInvokeHandler = YES; + __weak id weakSelf = self; + [arraysOfPermissions enumerateObjectsUsingBlock:^(NSSet *desiredPermissions, NSUInteger idx, BOOL *stop) { + NSArray* userIdAndTokenPair = [self userIdAndTokenOfExistingAccountWithPermissions:desiredPermissions skip:collectedUserIds]; + if (!userIdAndTokenPair) { + if (createIfNotFound) { + [self addTestAccountWithPermissions:desiredPermissions + completionHandler:^(NSArray *tokens, NSError *addError) { + if (addError) { + if (handler) { + handler(nil, addError); + } + } else { + [weakSelf requestTestAccountTokensWithArraysOfPermissions:arraysOfPermissions + createIfNotFound:createIfNotFound + completionHandler:handler]; + } + }]; + // stop the enumeration (ane flag so that callback to addTestAccount* will resolve our handler now). + canInvokeHandler = NO; + *stop = YES; + return; + } else { + [tokenDatum addObject:[NSNull null]]; + } + } else { + NSString *userId = userIdAndTokenPair[0]; + NSString *tokenString = userIdAndTokenPair[1]; + [collectedUserIds addObject:userId]; + [tokenDatum addObject:[self tokenDataForTokenString:tokenString + permissions:desiredPermissions + userId:userId]]; + } + }]; + + if (canInvokeHandler && handler) { + handler(tokenDatum, nil); + } + }; + if (_accounts.count == 0) { + [self fetchExistingTestAccountsWithAfterCursor:nil handler:helper]; + } else { + helper(NULL); + } +} + +- (void)addTestAccountWithPermissions:(NSSet *)permissions + completionHandler:(FBSDKTestUsersManagerRetrieveTestAccountTokensHandler)handler { + NSDictionary *params = @{ + @"installed" : @"true", + @"permissions" : [[permissions allObjects] componentsJoinedByString:@","], + @"access_token" : self.appAccessToken + }; + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:kFBGraphAPITestUsersPathFormat, _appID] + parameters:params + tokenString:[self appAccessToken] + version:nil + HTTPMethod:@"POST"]; + [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + if (error) { + if (handler) { + handler(nil, error); + } + } else { + NSMutableDictionary *accountData = [NSMutableDictionary dictionaryWithCapacity:2]; + accountData[kAccountsDictionaryPermissionsKey] = [NSSet setWithSet:permissions]; + accountData[kAccountsDictionaryTokenKey] = result[@"access_token"]; + _accounts[result[@"id"]] = accountData; + + if (handler) { + FBSDKAccessToken *token = [self tokenDataForTokenString:accountData[kAccountsDictionaryTokenKey] + permissions:permissions + userId:result[@"id"]]; + handler(@[token], nil); + } + } + }]; +} + +- (void)makeFriendsWithFirst:(FBSDKAccessToken *)first second:(FBSDKAccessToken *)second callback:(void (^)(NSError *))callback +{ + __block int expectedCount = 2; + void (^complete)(NSError *) = ^(NSError *error) { + // ignore if they're already friends or pending request + if ([error.userInfo[FBSDKGraphRequestErrorGraphErrorCode] integerValue] == 522 || + [error.userInfo[FBSDKGraphRequestErrorGraphErrorCode] integerValue] == 520) { + error = nil; + } + if (--expectedCount == 0 || error) { + callback(error); + } + }; + FBSDKGraphRequest *one = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/friends/%@", first.userID, second.userID] + parameters:nil + tokenString:first.tokenString + version:nil + HTTPMethod:@"POST"]; + FBSDKGraphRequest *two = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@/friends/%@", second.userID, first.userID] + parameters:nil + tokenString:second.tokenString + version:nil + HTTPMethod:@"POST"]; + FBSDKGraphRequestConnection *conn = [[FBSDKGraphRequestConnection alloc] init]; + [conn addRequest:one completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + complete(error); + } batchEntryName:@"first"]; + [conn addRequest:two completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + complete(error); + } batchParameters:@{ @"depends_on" : @"first"} ]; + [conn start]; +} + +- (void)removeTestAccount:(NSString *)userId completionHandler:(FBSDKTestUsersManagerRemoveTestAccountHandler)handler { + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:userId + parameters:nil + tokenString:self.appAccessToken + version:nil + HTTPMethod:@"DELETE"]; + [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + if (handler) { + handler(error); + } + }]; +} + +#pragma mark - private methods +- (FBSDKAccessToken *)tokenDataForTokenString:(NSString *)tokenString permissions:(NSSet *)permissions userId:(NSString *)userId{ + return [[FBSDKAccessToken alloc] initWithTokenString:tokenString + permissions:[permissions allObjects] + declinedPermissions:nil + appID:_appID + userID:userId + expirationDate:nil + refreshDate:nil]; +} + +- (NSArray *)userIdAndTokenOfExistingAccountWithPermissions:(NSSet *)permissions skip:(NSSet *)setToSkip { + __block NSString *userId = nil; + __block NSString *token = nil; + + [_accounts enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSDictionary *accountData, BOOL *stop) { + if ([setToSkip containsObject:key]) { + return; + } + NSSet *accountPermissions = accountData[kAccountsDictionaryPermissionsKey]; + if ([permissions isSubsetOfSet:accountPermissions]) { + token = accountData[kAccountsDictionaryTokenKey]; + userId = key; + *stop = YES; + } + }]; + if (userId && token) { + return @[userId, token]; + } else { + return nil; + } +} + +- (NSString *)appAccessToken { + return [NSString stringWithFormat:@"%@|%@", _appID, _appSecret]; +} + +- (void)fetchExistingTestAccountsWithAfterCursor:(NSString *)after handler:(void(^)(NSError *error))handler { + FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; + FBSDKGraphRequest *requestForAccountIds = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:kFBGraphAPITestUsersPathFormat, _appID] + parameters:@{@"limit" : @"50", + @"after" : after ?: @"", + @"fields": @"" + } + tokenString:self.appAccessToken + version:nil + HTTPMethod:nil]; + __block NSString *afterCursor = nil; + __block NSInteger expectedTestAccounts = 0; + FBSDKGraphRequestConnection *permissionConnection = [[FBSDKGraphRequestConnection alloc] init]; + [connection addRequest:requestForAccountIds completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { + if (error) { + if (handler) { + handler(error); + } + // on errors, clear out accounts since it may be in a bad state + [_accounts removeAllObjects]; + return; + } else { + for (NSDictionary *account in result[@"data"]) { + NSString *userId = account[@"id"]; + NSString *token = account[@"access_token"]; + if (userId && token) { + _accounts[userId] = [NSMutableDictionary dictionaryWithCapacity:2]; + _accounts[userId][kAccountsDictionaryTokenKey] = token; + expectedTestAccounts++; + [permissionConnection addRequest:[[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"%@?fields=permissions", userId] + parameters:nil + tokenString:self.appAccessToken + version:nil + HTTPMethod:nil] + completionHandler:^(FBSDKGraphRequestConnection *innerConnection2, id innerResult, NSError *innerError) { + if (_accounts.count == 0) { + // indicates an earlier error that was already passed to handler, so just short circuit. + return; + } + if (innerError) { + if (handler) { + handler(innerError); + } + [_accounts removeAllObjects]; + return; + } else { + NSMutableSet *grantedPermissions = [NSMutableSet set]; + NSArray *resultPermissionsDictionaries = innerResult[@"permissions"][@"data"]; + [resultPermissionsDictionaries enumerateObjectsUsingBlock:^(NSDictionary *obj, NSUInteger idx, BOOL *stop) { + if ([obj[@"status"] isEqualToString:@"granted"]) { + [grantedPermissions addObject:obj[@"permission"]]; + } + }]; + _accounts[userId][kAccountsDictionaryPermissionsKey] = grantedPermissions; + } + expectedTestAccounts--; + if (!expectedTestAccounts) { + if (afterCursor) { + [self fetchExistingTestAccountsWithAfterCursor:afterCursor handler:handler]; + } else if (handler) { + handler(nil); + } + } + } + ]; + } + } + afterCursor = result[@"paging"][@"cursors"][@"after"]; + } + + if (expectedTestAccounts) { + // finished fetching ids and tokens, now kick off the request for all the permissions + [permissionConnection start]; + } else { + if (handler) { + handler(nil); + } + } + }]; + [connection start]; +} +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h new file mode 100644 index 0000000..46c490b --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h @@ -0,0 +1,55 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +/*! + @abstract Class to contain common utility methods. + */ +@interface FBSDKUtility : NSObject + +/*! + @abstract Parses a query string into a dictionary. + @param queryString The query string value. + @return A dictionary with the key/value pairs. + */ ++ (NSDictionary *)dictionaryWithQueryString:(NSString *)queryString; + +/*! + @abstract Constructs a query string from a dictionary. + @param dictionary The dictionary with key/value pairs for the query string. + @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. + @result Query string representation of the parameters. + */ ++ (NSString *)queryStringWithDictionary:(NSDictionary *)dictionary error:(NSError *__autoreleasing *)errorRef; + +/*! + @abstract Decodes a value from an URL. + @param value The value to decode. + @result The decoded value. + */ ++ (NSString *)URLDecode:(NSString *)value; + +/*! + @abstract Encodes a value for an URL. + @param value The value to encode. + @result The encoded value. + */ ++ (NSString *)URLEncode:(NSString *)value; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m new file mode 100644 index 0000000..e140d16 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m @@ -0,0 +1,90 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKUtility.h" + +#import "FBSDKInternalUtility.h" +#import "FBSDKMacros.h" + +@implementation FBSDKUtility + ++ (NSDictionary *)dictionaryWithQueryString:(NSString *)queryString +{ + NSMutableDictionary *result = [[NSMutableDictionary alloc] init]; + NSArray *parts = [queryString componentsSeparatedByString:@"&"]; + + for (NSString *part in parts) { + if ([part length] == 0) { + continue; + } + + NSRange index = [part rangeOfString:@"="]; + NSString *key; + NSString *value; + + if (index.location == NSNotFound) { + key = part; + value = @""; + } else { + key = [part substringToIndex:index.location]; + value = [part substringFromIndex:index.location + index.length]; + } + + key = [self URLDecode:key]; + value = [self URLDecode:value]; + if (key && value) { + result[key] = value; + } + } + return result; +} + ++ (NSString *)queryStringWithDictionary:(NSDictionary *)dictionary error:(NSError *__autoreleasing *)errorRef +{ + return [FBSDKInternalUtility queryStringWithDictionary:dictionary error:errorRef invalidObjectHandler:NULL]; +} + ++ (NSString *)URLDecode:(NSString *)value +{ + value = [value stringByReplacingOccurrencesOfString:@"+" withString:@" "]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + value = [value stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; +#pragma clang diagnostic pop + return value; +} + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" ++ (NSString *)URLEncode:(NSString *)value +{ + return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, + (CFStringRef)value, + NULL, // characters to leave unescaped + CFSTR(":!*();@/&?+$,='"), + kCFStringEncodingUTF8); +} +#pragma clang diagnostic pop + +- (instancetype)init +{ + FBSDK_NO_DESIGNATED_INITIALIZER(); + return nil; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h new file mode 100644 index 0000000..1781a00 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h @@ -0,0 +1,158 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import +#import + +#import "FBSDKAppEventsUtility.h" + +@class FBSDKGraphRequest; + +// Internally known event names + +FBSDK_EXTERN NSString *const FBSDKAppEventNamePurchased; + +/*! Use to log that the share dialog was launched */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameShareSheetLaunch; + +/*! Use to log that the share dialog was dismissed */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameShareSheetDismiss; + +/*! Use to log that the permissions UI was launched */ +FBSDK_EXTERN NSString *const FBSDKAppEventNamePermissionsUILaunch; + +/*! Use to log that the permissions UI was dismissed */ +FBSDK_EXTERN NSString *const FBSDKAppEventNamePermissionsUIDismiss; + +/*! Use to log that the login view was used */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameLoginViewUsage; + +// Internally known event parameters + +/*! String parameter specifying the outcome of a dialog invocation */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterDialogOutcome; + +/*! Parameter key used to specify which application launches this application. */ +FBSDK_EXTERN NSString *const FBSDKAppEventParameterLaunchSource; + +/*! Use to log the result of a call to FBDialogs presentShareDialogWithParams: */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsPresentShareDialog; + +/*! Use to log the result of a call to FBDialogs presentShareDialogWithOpenGraphActionParams: */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsPresentShareDialogOG; + +/*! Use to log the result of a call to FBDialogs presentLikeDialogWithLikeParams: */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsPresentLikeDialogOG; + +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsPresentShareDialogPhoto; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsPresentMessageDialog; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsPresentMessageDialogPhoto; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsPresentMessageDialogOG; + +/*! Use to log the start of an auth request that cannot be fulfilled by the token cache */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSessionAuthStart; + +/*! Use to log the end of an auth request that was not fulfilled by the token cache */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSessionAuthEnd; + +/*! Use to log the start of a specific auth method as part of an auth request */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSessionAuthMethodStart; + +/*! Use to log the end of the last tried auth method as part of an auth request */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSessionAuthMethodEnd; + +/*! Use to log the timestamp for the transition to the Facebook native login dialog */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsNativeLoginDialogStart; + +/*! Use to log the timestamp for the transition back to the app after the Facebook native login dialog */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsNativeLoginDialogEnd; + +/*! Use to log the e2e timestamp metrics for web login */ +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBDialogsWebLoginCompleted; + +/*! Use to log the results of a share dialog */ +FBSDK_EXTERN NSString *const FBSDLAppEventNameFBSDKEventShareDialogResult; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKEventMessengerShareDialogResult; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKEventAppInviteShareDialogResult; + +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKEventShareDialogShow; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKEventMessengerShareDialogShow; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKEventAppInviteShareDialogShow; + +FBSDK_EXTERN NSString *const FBSDKAppEventParameterDialogMode; +FBSDK_EXTERN NSString *const FBSDKAppEventParameterDialogShareContentType; + +// Internally known event parameter values + +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogOutcomeValue_Completed; +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogOutcomeValue_Cancelled; +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogOutcomeValue_Failed; + +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareContentTypeOpenGraph; +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareContentTypeStatus; +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareContentTypePhoto; +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareContentTypeVideo; +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareContentTypeUnknown; + + +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeAutomatic; +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeBrowser; +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeNative; +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeShareSheet; +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeWeb; +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeFeedBrowser; +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeFeedWeb; +FBSDK_EXTERN NSString *const FBSDKAppEventsDialogShareModeUnknown; + +FBSDK_EXTERN NSString *const FBSDKAppEventsNativeLoginDialogStartTime; +FBSDK_EXTERN NSString *const FBSDKAppEventsNativeLoginDialogEndTime; + +FBSDK_EXTERN NSString *const FBSDKAppEventsWebLoginE2E; + +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeButtonImpression; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLoginButtonImpression; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKSendButtonImpression; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKShareButtonImpression; + +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeButtonDidTap; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLoginButtonDidTap; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKSendButtonDidTap; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKShareButtonDidTap; + +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlDidDisable; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlDidLike; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlDidPresentDialog; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlDidTap; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlDidUnlike; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlError; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlImpression; +FBSDK_EXTERN NSString *const FBSDKAppEventNameFBSDKLikeControlNetworkUnavailable; + +FBSDK_EXTERN NSString *const FBSDKAppEventParameterDialogErrorMessage; + +@interface FBSDKAppEvents (Internal) + ++ (void)logImplicitEvent:(NSString *)eventName + valueToSum:(NSNumber *)valueToSum + parameters:(NSDictionary *)parameters + accessToken:(FBSDKAccessToken *)accessToken; + ++ (FBSDKAppEvents *)singleton; +- (void)flushForReason:(FBSDKAppEventsFlushReason)flushReason; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h new file mode 100644 index 0000000..2de04b8 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@interface FBSDKAppEventsDeviceInfo : NSObject + ++ (void)extendDictionaryWithDeviceInfo:(NSMutableDictionary *)dictionary; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m new file mode 100644 index 0000000..152d01d --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m @@ -0,0 +1,252 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAppEventsDeviceInfo.h" + +#import +#import + +#import +#import +#import +#import + +#import "FBSDKAppEvents+Internal.h" +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKUtility.h" + +#define FB_ARRAY_COUNT(x) sizeof(x) / sizeof(x[0]) + +static const u_int FB_GROUP1_RECHECK_DURATION = 30 * 60; // seconds + +// Apple reports storage in binary gigabytes (1024^3) in their About menus, etc. +static const u_int FB_GIGABYTE = 1024 * 1024 * 1024; // bytes + +@implementation FBSDKAppEventsDeviceInfo + +// Ephemeral data, may change during the lifetime of an app. We collect them in different +// 'group' frequencies - group1 may gets collected once every 30 minutes. + +// group1 +NSString *_carrierName; +NSString *_timeZoneAbbrev; +unsigned long long _remainingDiskSpaceGB; + +// Persistent data, but we maintain it to make rebuilding the device info as fast as possible. +NSString *_bundleIdentifier; +NSString *_longVersion; +NSString *_shortVersion; +NSString *_sysVersion; +NSString *_machine; +NSString *_language; +unsigned long long _totalDiskSpaceGB; +unsigned long long _coreCount; +CGFloat _width; +CGFloat _height; +CGFloat _density; + +// Other state +long _lastGroup1CheckTime; +BOOL _isEncodingDirty = YES; +NSString *_encodedDeviceInfo; +static FBSDKAppEventsDeviceInfo *g_singleton; + +#pragma mark - Public Methods + ++ (void)extendDictionaryWithDeviceInfo:(NSMutableDictionary *)dictionary +{ + dictionary[@"extinfo"] = [g_singleton encodedDeviceInfo]; +} + +#pragma mark - Internal Methods + ++ (void)initialize +{ + if (self == [FBSDKAppEventsDeviceInfo class]) { + g_singleton = [[FBSDKAppEventsDeviceInfo alloc] init]; + [g_singleton _collectPersistentData]; + } +} + +- (NSString *)encodedDeviceInfo +{ + @synchronized (self) { + + BOOL isGroup1Expired = [self _isGroup1Expired]; + BOOL isEncodingExpired = isGroup1Expired; // Can || other groups in if we add them + + // As long as group1 hasn't expired, we can just return the last generated value + if (_encodedDeviceInfo && !isEncodingExpired) { + return _encodedDeviceInfo; + } + + if (isGroup1Expired) { + [self _collectGroup1Data]; + } + + if (_isEncodingDirty) { + self.encodedDeviceInfo = [self _generateEncoding]; + _isEncodingDirty = NO; + } + + return _encodedDeviceInfo; + } +} + +- (void)setEncodedDeviceInfo:(NSString *)encodedDeviceInfo +{ + @synchronized (self) { + if (![_encodedDeviceInfo isEqualToString:encodedDeviceInfo]) { + _encodedDeviceInfo = [encodedDeviceInfo copy]; + } + } +} + +// This data need only be collected once. +- (void)_collectPersistentData +{ + // Bundle stuff + NSBundle *mainBundle = [NSBundle mainBundle]; + _bundleIdentifier = mainBundle.bundleIdentifier; + _longVersion = [mainBundle objectForInfoDictionaryKey:@"CFBundleVersion"]; + _shortVersion = [mainBundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; + + // Locale stuff + _language = [[NSLocale currentLocale] localeIdentifier]; + + // Device stuff + UIDevice *device = [UIDevice currentDevice]; + _sysVersion = device.systemVersion; + _coreCount = [FBSDKAppEventsDeviceInfo _coreCount]; + + UIScreen *sc = [UIScreen mainScreen]; + CGRect sr = sc.bounds; + _width = sr.size.width; + _height = sr.size.height; + _density = sc.scale; + + struct utsname systemInfo; + uname(&systemInfo); + _machine = @(systemInfo.machine); + + // Disk space stuff + float totalDiskSpace = [[FBSDKAppEventsDeviceInfo _getTotalDiskSpace] floatValue]; + _totalDiskSpaceGB = (unsigned long long)round(totalDiskSpace / FB_GIGABYTE); +} + +- (BOOL)_isGroup1Expired +{ + return ([FBSDKAppEventsUtility unixTimeNow] - _lastGroup1CheckTime) > FB_GROUP1_RECHECK_DURATION; +} + +// This data is collected only once every GROUP1_RECHECK_DURATION. +- (void)_collectGroup1Data +{ + // Carrier + NSString *newCarrierName = [FBSDKAppEventsDeviceInfo _getCarrier]; + if (![newCarrierName isEqualToString:_carrierName]) { + _carrierName = newCarrierName; + _isEncodingDirty = YES; + } + + // Time zone + NSString *newTimeZoneAbbrev = [[NSTimeZone systemTimeZone] abbreviation]; + if (![newTimeZoneAbbrev isEqualToString:_timeZoneAbbrev]) { + _timeZoneAbbrev = newTimeZoneAbbrev; + _isEncodingDirty = YES; + } + + // Remaining disk space + float remainingDiskSpace = [[FBSDKAppEventsDeviceInfo _getRemainingDiskSpace] floatValue]; + unsigned long long newRemainingDiskSpaceGB = (unsigned long long)round(remainingDiskSpace / FB_GIGABYTE); + if (_remainingDiskSpaceGB != newRemainingDiskSpaceGB) { + _remainingDiskSpaceGB = newRemainingDiskSpaceGB; + _isEncodingDirty = YES; + } + + _lastGroup1CheckTime = [FBSDKAppEventsUtility unixTimeNow]; +} + +- (NSString *)_generateEncoding +{ + // Keep a bit of precision on density as it's the most likely to become non-integer. + NSString *densityString = _density ? [NSString stringWithFormat:@"%.02f", _density] : @""; + + NSArray *arr = @[ + @"i2", // version - starts with 'i' for iOS, we'll use 'a' for Android + _bundleIdentifier ?: @"", + _longVersion ?: @"", + _shortVersion ?: @"", + _sysVersion ?: @"", + _machine ?: @"", + _language ?: @"", + _timeZoneAbbrev ?: @"", + _carrierName ?: @"", + _width ? @((unsigned long)_width) : @"", + _height ? @((unsigned long)_height) : @"", + densityString, + @(_coreCount) ?: @"", + @(_totalDiskSpaceGB) ?: @"", + @(_remainingDiskSpaceGB) ?: @"", + ]; + + return [FBSDKInternalUtility JSONStringForObject:arr error:NULL invalidObjectHandler:NULL]; +} + +#pragma mark - Helper Methods + ++ (NSNumber *)_getTotalDiskSpace +{ + NSDictionary *attrs = [[[NSFileManager alloc] init] attributesOfFileSystemForPath:NSHomeDirectory() + error:nil]; + return [attrs objectForKey:NSFileSystemSize]; +} + ++ (NSNumber *)_getRemainingDiskSpace +{ + NSDictionary *attrs = [[[NSFileManager alloc] init] attributesOfFileSystemForPath:NSHomeDirectory() + error:nil]; + return [attrs objectForKey:NSFileSystemFreeSize]; +} + ++ (uint)_coreCount +{ + return [FBSDKAppEventsDeviceInfo _readSysCtlUInt:CTL_HW type:HW_AVAILCPU]; +} + ++ (uint)_readSysCtlUInt:(int)ctl type:(int)type +{ + int mib[2] = {ctl, type}; + uint value; + size_t size = sizeof value; + if (0 != sysctl(mib, FB_ARRAY_COUNT(mib), &value, &size, NULL, 0)) { + return 0; + } + return value; +} + ++ (NSString *)_getCarrier +{ + // Dynamically load class for this so calling app doesn't need to link framework in. + CTTelephonyNetworkInfo *networkInfo = [[fbsdkdfl_CTTelephonyNetworkInfoClass() alloc] init]; + CTCarrier *carrier = [networkInfo subscriberCellularProvider]; + return [carrier carrierName] ?: @"NoCarrier"; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h new file mode 100644 index 0000000..af45788 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h @@ -0,0 +1,38 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +// this type is not thread safe. +@interface FBSDKAppEventsState : NSObject + +@property (readonly, copy) NSArray *events; +@property (readonly, assign) NSUInteger numSkipped; +@property (readonly, copy) NSString *tokenString; +@property (readonly, copy) NSString *appID; + +- (instancetype)initWithToken:(NSString *)tokenString appID:(NSString *)appID NS_DESIGNATED_INITIALIZER; + +- (void)addEvent:(NSDictionary *)eventDictionary isImplicit:(BOOL)isImplicit; +- (void)addEventsFromAppEventState:(FBSDKAppEventsState *)appEventsState; +- (BOOL)areAllEventsImplicit; +- (BOOL)isCompatibleWithAppEventsState:(FBSDKAppEventsState *)appEventsState; +- (BOOL)isCompatibleWithTokenString:(NSString *)tokenString appID:(NSString *)appID; +- (NSString *)JSONStringForEvents:(BOOL)includeImplicitEvents; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m new file mode 100644 index 0000000..3498e50 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m @@ -0,0 +1,161 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAppEventsState.h" + +#import "FBSDKInternalUtility.h" +#import "FBSDKMacros.h" + +#define FBSDK_APPEVENTSTATE_ISIMPLICIT_KEY @"isImplicit" + +#define FBSDK_APPEVENTSSTATE_MAX_EVENTS 1000 + +#define FBSDK_APPEVENTSSTATE_APPID_KEY @"appID" +#define FBSDK_APPEVENTSSTATE_EVENTS_KEY @"events" +#define FBSDK_APPEVENTSSTATE_NUMSKIPPED_KEY @"numSkipped" +#define FBSDK_APPEVENTSSTATE_TOKENSTRING_KEY @"tokenString" + +@implementation FBSDKAppEventsState +{ + NSMutableArray *_mutableEvents; + BOOL _containsExplicitEvent; +} + +- (instancetype)init +{ + FBSDK_NOT_DESIGNATED_INITIALIZER(initWithToken:appID:); + return [self initWithToken:nil appID:nil]; +} + +- (instancetype)initWithToken:(NSString *)tokenString appID:(NSString *)appID +{ + if ((self = [super init])) { + _tokenString = [tokenString copy]; + _appID = [appID copy]; + _mutableEvents = [NSMutableArray array]; + } + return self; +} + +- (instancetype)copyWithZone:(NSZone *)zone +{ + FBSDKAppEventsState *copy = [[FBSDKAppEventsState allocWithZone:zone] initWithToken:_tokenString appID:_appID]; + if (copy) { + [copy->_mutableEvents addObjectsFromArray:_mutableEvents]; + copy->_numSkipped = _numSkipped; + copy->_containsExplicitEvent = _containsExplicitEvent; + } + return copy; +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + NSString *appID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_APPEVENTSSTATE_APPID_KEY]; + NSString *tokenString = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_APPEVENTSSTATE_TOKENSTRING_KEY]; + NSArray *events = [decoder decodeObjectOfClass:[NSArray class] forKey:FBSDK_APPEVENTSSTATE_EVENTS_KEY]; + NSUInteger numSkipped = [[decoder decodeObjectOfClass:[NSNumber class] forKey:FBSDK_APPEVENTSSTATE_NUMSKIPPED_KEY] unsignedIntegerValue]; + + if ((self = [self initWithToken:tokenString appID:appID])) { + _mutableEvents = [NSMutableArray arrayWithArray:events]; + _numSkipped = numSkipped; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:_appID forKey:FBSDK_APPEVENTSSTATE_APPID_KEY]; + [encoder encodeObject:_tokenString forKey:FBSDK_APPEVENTSSTATE_TOKENSTRING_KEY]; + [encoder encodeObject:@(_numSkipped) forKey:FBSDK_APPEVENTSSTATE_NUMSKIPPED_KEY]; + [encoder encodeObject:_mutableEvents forKey:FBSDK_APPEVENTSSTATE_EVENTS_KEY]; +} + +#pragma mark - Implementation + +- (NSArray *)events +{ + return [_mutableEvents copy]; +} + +- (void)addEventsFromAppEventState:(FBSDKAppEventsState *)appEventsState +{ + NSArray *toAdd = appEventsState->_mutableEvents; + NSInteger excess = _mutableEvents.count + toAdd.count - FBSDK_APPEVENTSSTATE_MAX_EVENTS; + if (excess > 0) { + NSInteger range = FBSDK_APPEVENTSSTATE_MAX_EVENTS - _mutableEvents.count; + toAdd = [toAdd subarrayWithRange:NSMakeRange(0, range)]; + _numSkipped += excess; + } + + [_mutableEvents addObjectsFromArray:toAdd]; +} + +- (void)addEvent:(NSDictionary *)eventDictionary + isImplicit:(BOOL)isImplicit { + if (_mutableEvents.count >= FBSDK_APPEVENTSSTATE_MAX_EVENTS) { + _numSkipped++; + } else { + if (!isImplicit) { + _containsExplicitEvent = YES; + } + [_mutableEvents addObject:@{ + @"event" : eventDictionary, + FBSDK_APPEVENTSTATE_ISIMPLICIT_KEY : @(isImplicit) + }]; + } +} + +- (BOOL)areAllEventsImplicit +{ + return !_containsExplicitEvent; +} + +- (BOOL)isCompatibleWithAppEventsState:(FBSDKAppEventsState *)appEventsState +{ + return ([self isCompatibleWithTokenString:appEventsState.tokenString appID:appEventsState.appID]); +} + +- (BOOL)isCompatibleWithTokenString:(NSString *)tokenString appID:(NSString *)appID +{ + // token strings can be nil (e.g., no user token) but appIDs should not. + BOOL tokenCompatible = ([self.tokenString isEqualToString:tokenString] || + (self.tokenString == nil && tokenString == nil)); + return (tokenCompatible && + [self.appID isEqualToString:appID]); +} + +- (NSString *)JSONStringForEvents:(BOOL)includeImplicitEvents +{ + NSMutableArray *events = [[NSMutableArray alloc] initWithCapacity:_mutableEvents.count]; + for (NSDictionary *eventAndImplicitFlag in _mutableEvents) { + if (!includeImplicitEvents && [eventAndImplicitFlag[FBSDK_APPEVENTSTATE_ISIMPLICIT_KEY] boolValue]) { + continue; + } + [events addObject:eventAndImplicitFlag[@"event"]]; + } + + return [FBSDKInternalUtility JSONStringForObject:events error:NULL invalidObjectHandler:NULL]; +} +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h new file mode 100644 index 0000000..4c17a4c --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h @@ -0,0 +1,34 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@class FBSDKAppEventsState; + +@interface FBSDKAppEventsStateManager : NSObject + ++ (void)clearPersistedAppEventsStates; + +// reads all saved event states, appends the param, and writes them all. ++ (void)persistAppEventsData:(FBSDKAppEventsState *)appEventsState; + +// returns the array of saved app event states and deletes them. ++ (NSArray *)retrievePersistedAppEventsStates; + + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m new file mode 100644 index 0000000..596d7a6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m @@ -0,0 +1,78 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAppEventsStateManager.h" + +#import + +#import "FBSDKAppEventsState.h" +#import "FBSDKAppEventsUtility.h" +#import "FBSDKLogger.h" +#import "FBSDKSettings.h" + +// A quick optimization to allow returning empty array if we know there are no persisted events. +static BOOL g_canSkipDiskCheck = NO; + +@implementation FBSDKAppEventsStateManager + ++ (void)clearPersistedAppEventsStates +{ + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAppEvents + logEntry:@"FBSDKAppEvents Persist: Clearing"]; + [[NSFileManager defaultManager] removeItemAtPath:[[self class] filePath] + error:NULL]; + g_canSkipDiskCheck = YES; +} + ++ (void)persistAppEventsData:(FBSDKAppEventsState *)appEventsState +{ + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAppEvents + formatString:@"FBSDKAppEvents Persist: Writing %lu events", (unsigned long)appEventsState.events.count]; + + if (!appEventsState.events.count) { + return; + } + NSMutableArray *existingEvents = [NSMutableArray arrayWithArray:[[self class] retrievePersistedAppEventsStates]]; + [existingEvents addObject:appEventsState]; + + [NSKeyedArchiver archiveRootObject:existingEvents toFile:[[self class] filePath]]; + g_canSkipDiskCheck = NO; +} + ++ (NSArray *)retrievePersistedAppEventsStates +{ + NSMutableArray *eventsStates = [NSMutableArray array]; + if (!g_canSkipDiskCheck) { + [eventsStates addObjectsFromArray:[NSKeyedUnarchiver unarchiveObjectWithFile:[[self class] filePath]]]; + + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAppEvents + formatString:@"FBSDKAppEvents Persist: Read %lu event states. First state has %lu events", + (unsigned long)eventsStates.count, + (unsigned long)(eventsStates.count > 0 ? ((FBSDKAppEventsState *)eventsStates[0]).events.count : 0)]; + [[self class] clearPersistedAppEventsStates]; + } + return eventsStates; +} + +#pragma mark - Private Helpers + ++ (NSString *)filePath +{ + return [FBSDKAppEventsUtility persistenceFilePath:@"com-facebook-sdk-AppEventsPersistedEvents.json"]; +} +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h new file mode 100644 index 0000000..7503217 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h @@ -0,0 +1,57 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@class FBSDKAccessToken; + +typedef NS_ENUM(NSUInteger, FBSDKAdvertisingTrackingStatus) +{ + FBSDKAdvertisingTrackingAllowed, + FBSDKAdvertisingTrackingDisallowed, + FBSDKAdvertisingTrackingUnspecified +}; + +typedef NS_ENUM(NSUInteger, FBSDKAppEventsFlushReason) +{ + FBSDKAppEventsFlushReasonExplicit, + FBSDKAppEventsFlushReasonTimer, + FBSDKAppEventsFlushReasonSessionChange, + FBSDKAppEventsFlushReasonPersistedEvents, + FBSDKAppEventsFlushReasonEventThreshold, + FBSDKAppEventsFlushReasonEagerlyFlushingEvent +}; + +@interface FBSDKAppEventsUtility : NSObject + ++ (NSMutableDictionary *)activityParametersDictionaryForEvent:(NSString *)eventCategory + implicitEventsOnly:(BOOL)implicitEventsOnly + shouldAccessAdvertisingID:(BOOL)shouldAccessAdvertisingID; ++ (NSString *)advertiserID; ++ (FBSDKAdvertisingTrackingStatus)advertisingTrackingStatus; ++ (NSString *)attributionID; ++ (void)ensureOnMainThread; ++ (NSString *)flushReasonToString:(FBSDKAppEventsFlushReason)flushReason; ++ (void)logAndNotify:(NSString *)msg allowLogAsDeveloperError:(BOOL)allowLogAsDeveloperError; ++ (void)logAndNotify:(NSString *)msg; ++ (NSString *)persistenceFilePath:(NSString *)filename; ++ (NSString *)tokenStringToUseFor:(FBSDKAccessToken *)token; ++ (long)unixTimeNow; ++ (BOOL)validateIdentifier:(NSString *)identifier; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m new file mode 100644 index 0000000..07562e1 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m @@ -0,0 +1,305 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAppEventsUtility.h" + +#import + +#import "FBSDKAccessToken.h" +#import "FBSDKAppEvents.h" +#import "FBSDKAppEventsDeviceInfo.h" +#import "FBSDKConstants.h" +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKError.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKLogger.h" +#import "FBSDKMacros.h" +#import "FBSDKSettings.h" +#import "FBSDKTimeSpentData.h" + +#define FBSDK_APPEVENTSUTILITY_ANONYMOUSIDFILENAME @"com-facebook-sdk-PersistedAnonymousID.json" +#define FBSDK_APPEVENTSUTILITY_ANONYMOUSID_KEY @"anon_id" +#define FBSDK_APPEVENTSUTILITY_MAX_IDENTIFIER_LENGTH 40 + +@implementation FBSDKAppEventsUtility + ++ (NSMutableDictionary *)activityParametersDictionaryForEvent:(NSString *)eventCategory + implicitEventsOnly:(BOOL)implicitEventsOnly + shouldAccessAdvertisingID:(BOOL)shouldAccessAdvertisingID { + NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; + parameters[@"event"] = eventCategory; + + NSString *attributionID = [[self class] attributionID]; // Only present on iOS 6 and below. + [FBSDKInternalUtility dictionary:parameters setObject:attributionID forKey:@"attribution"]; + + if (!implicitEventsOnly && shouldAccessAdvertisingID) { + NSString *advertiserID = [[self class] advertiserID]; + [FBSDKInternalUtility dictionary:parameters setObject:advertiserID forKey:@"advertiser_id"]; + } + + parameters[FBSDK_APPEVENTSUTILITY_ANONYMOUSID_KEY] = [self anonymousID]; + + FBSDKAdvertisingTrackingStatus advertisingTrackingStatus = [[self class] advertisingTrackingStatus]; + if (advertisingTrackingStatus != FBSDKAdvertisingTrackingUnspecified) { + BOOL allowed = (advertisingTrackingStatus == FBSDKAdvertisingTrackingAllowed); + parameters[@"advertiser_tracking_enabled"] = [@(allowed) stringValue]; + } + + parameters[@"application_tracking_enabled"] = [@(!FBSDKSettings.limitEventAndDataUsage) stringValue]; + + [FBSDKAppEventsDeviceInfo extendDictionaryWithDeviceInfo:parameters]; + + static dispatch_once_t fetchBundleOnce; + static NSMutableArray *urlSchemes; + + dispatch_once(&fetchBundleOnce, ^{ + NSBundle *mainBundle = [NSBundle mainBundle]; + urlSchemes = [[NSMutableArray alloc] init]; + for (NSDictionary *fields in [mainBundle objectForInfoDictionaryKey:@"CFBundleURLTypes"]) { + NSArray *schemesForType = [fields objectForKey:@"CFBundleURLSchemes"]; + if (schemesForType) { + [urlSchemes addObjectsFromArray:schemesForType]; + } + } + }); + + if (urlSchemes.count > 0) { + [parameters setObject:[FBSDKInternalUtility JSONStringForObject:urlSchemes error:NULL invalidObjectHandler:NULL] + forKey:@"url_schemes"]; + } + + return parameters; +} + ++ (NSString *)advertiserID +{ + NSString *result = nil; + + Class ASIdentifierManagerClass = fbsdkdfl_ASIdentifierManagerClass(); + if ([ASIdentifierManagerClass class]) { + ASIdentifierManager *manager = [ASIdentifierManagerClass sharedManager]; + result = [[manager advertisingIdentifier] UUIDString]; + } + + return result; +} + ++ (FBSDKAdvertisingTrackingStatus)advertisingTrackingStatus +{ + static dispatch_once_t fetchAdvertisingTrackingStatusOnce; + static FBSDKAdvertisingTrackingStatus status; + + dispatch_once(&fetchAdvertisingTrackingStatusOnce, ^{ + status = FBSDKAdvertisingTrackingUnspecified; + Class ASIdentifierManagerClass = fbsdkdfl_ASIdentifierManagerClass(); + if ([ASIdentifierManagerClass class]) { + ASIdentifierManager *manager = [ASIdentifierManagerClass sharedManager]; + if (manager) { + status = [manager isAdvertisingTrackingEnabled] ? FBSDKAdvertisingTrackingAllowed : FBSDKAdvertisingTrackingDisallowed; + } + } + }); + + return status; +} + ++ (NSString *)anonymousID +{ + // Grab previously written anonymous ID and, if none have been generated, create and + // persist a new one which will remain associated with this app. + NSString *result = [[self class] retrievePersistedAnonymousID]; + if (!result) { + // Generate a new anonymous ID. Create as a UUID, but then prepend the fairly + // arbitrary 'XZ' to the front so it's easily distinguishable from IDFA's which + // will only contain hex. + result = [NSString stringWithFormat:@"XZ%@", [[NSUUID UUID] UUIDString]]; + + [self persistAnonymousID:result]; + } + return result; +} + ++ (NSString *)attributionID +{ + return [[UIPasteboard pasteboardWithName:@"fb_app_attribution" create:NO] string]; +} + +// for tests only. ++ (void)clearLibraryFiles +{ + [[NSFileManager defaultManager] removeItemAtPath:[[self class] persistenceFilePath:FBSDK_APPEVENTSUTILITY_ANONYMOUSIDFILENAME] + error:NULL]; + [[NSFileManager defaultManager] removeItemAtPath:[[self class] persistenceFilePath:FBSDKTimeSpentFilename] + error:NULL]; +} + ++ (void)ensureOnMainThread +{ + FBSDKConditionalLog([NSThread isMainThread], FBSDKLoggingBehaviorInformational, @"*** This method expected to be called on the main thread."); +} + ++ (NSString *)flushReasonToString:(FBSDKAppEventsFlushReason)flushReason +{ + NSString *result = @"Unknown"; + switch (flushReason) { + case FBSDKAppEventsFlushReasonExplicit: + result = @"Explicit"; + break; + case FBSDKAppEventsFlushReasonTimer: + result = @"Timer"; + break; + case FBSDKAppEventsFlushReasonSessionChange: + result = @"SessionChange"; + break; + case FBSDKAppEventsFlushReasonPersistedEvents: + result = @"PersistedEvents"; + break; + case FBSDKAppEventsFlushReasonEventThreshold: + result = @"EventCountThreshold"; + break; + case FBSDKAppEventsFlushReasonEagerlyFlushingEvent: + result = @"EagerlyFlushingEvent"; + break; + } + return result; +} + ++ (void)logAndNotify:(NSString *)msg +{ + [[self class] logAndNotify:msg allowLogAsDeveloperError:YES]; +} + ++ (void)logAndNotify:(NSString *)msg allowLogAsDeveloperError:(BOOL)allowLogAsDeveloperError +{ + NSString *behaviorToLog = FBSDKLoggingBehaviorAppEvents; + if (allowLogAsDeveloperError) { + if ([[FBSDKSettings loggingBehavior] containsObject:FBSDKLoggingBehaviorDeveloperErrors]) { + // Rather than log twice, prefer 'DeveloperErrors' if it's set over AppEvents. + behaviorToLog = FBSDKLoggingBehaviorDeveloperErrors; + } + } + + [FBSDKLogger singleShotLogEntry:behaviorToLog logEntry:msg]; + NSError *error = [FBSDKError errorWithCode:FBSDKAppEventsFlushErrorCode message:msg]; + [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKAppEventsLoggingResultNotification object:error]; +} + ++ (BOOL)regexValidateIdentifier:(NSString *)identifier +{ + static NSRegularExpression *regex; + static dispatch_once_t onceToken; + static NSMutableSet *cachedIdentifiers; + dispatch_once(&onceToken, ^{ + NSString *regexString = @"^[0-9a-zA-Z_]+[0-9a-zA-Z _-]*$"; + regex = [NSRegularExpression regularExpressionWithPattern:regexString + options:0 + error:NULL]; + cachedIdentifiers = [[NSMutableSet alloc] init]; + }); + + @synchronized(self) { + if (![cachedIdentifiers containsObject:identifier]) { + NSUInteger numMatches = [regex numberOfMatchesInString:identifier options:0 range:NSMakeRange(0, identifier.length)]; + if (numMatches > 0) { + [cachedIdentifiers addObject:identifier]; + } else { + return NO; + } + } + } + + return YES; +} + ++ (BOOL)validateIdentifier:(NSString *)identifier +{ + if (identifier == nil || identifier.length == 0 || identifier.length > FBSDK_APPEVENTSUTILITY_MAX_IDENTIFIER_LENGTH || ![[self class] regexValidateIdentifier:identifier]) { + [[self class] logAndNotify:[NSString stringWithFormat:@"Invalid identifier: '%@'. Must be between 1 and %d characters, and must be contain only alphanumerics, _, - or spaces, starting with alphanumeric or _.", + identifier, FBSDK_APPEVENTSUTILITY_MAX_IDENTIFIER_LENGTH]]; + return NO; + } + + return YES; +} + ++ (void)persistAnonymousID:(NSString *)anonymousID +{ + [[self class] ensureOnMainThread]; + NSDictionary *data = @{ FBSDK_APPEVENTSUTILITY_ANONYMOUSID_KEY : anonymousID }; + NSString *content = [FBSDKInternalUtility JSONStringForObject:data error:NULL invalidObjectHandler:NULL]; + + [content writeToFile:[[self class] persistenceFilePath:FBSDK_APPEVENTSUTILITY_ANONYMOUSIDFILENAME] + atomically:YES + encoding:NSASCIIStringEncoding + error:nil]; +} + ++ (NSString *)persistenceFilePath:(NSString *)filename +{ + NSSearchPathDirectory directory = NSLibraryDirectory; + NSArray *paths = NSSearchPathForDirectoriesInDomains(directory, NSUserDomainMask, YES); + NSString *docDirectory = [paths objectAtIndex:0]; + return [docDirectory stringByAppendingPathComponent:filename]; +} + ++ (NSString *)retrievePersistedAnonymousID +{ + [[self class] ensureOnMainThread]; + NSString *file = [[self class] persistenceFilePath:FBSDK_APPEVENTSUTILITY_ANONYMOUSIDFILENAME]; + NSString *content = [[NSString alloc] initWithContentsOfFile:file + encoding:NSASCIIStringEncoding + error:nil]; + NSDictionary *results = [FBSDKInternalUtility objectForJSONString:content error:NULL]; + return [results objectForKey:FBSDK_APPEVENTSUTILITY_ANONYMOUSID_KEY]; +} + +// Given a candidate token (which may be nil), find the real token to string to use. +// Precedence: 1) provided token, 2) current token, 3) app | client token, 4) fully anonymous session. ++ (NSString *)tokenStringToUseFor:(FBSDKAccessToken *)token +{ + if (!token) { + token = [FBSDKAccessToken currentAccessToken]; + } + + NSString *appID = [FBSDKAppEvents loggingOverrideAppID] ?: token.appID ?: [FBSDKSettings appID]; + NSString *tokenString = token.tokenString; + if (!tokenString || ![appID isEqualToString:token.appID]) { + // If there's an logging override app id present, then we don't want to use the client token since the client token + // is intended to match up with the primary app id (and AppEvents doesn't require a client token). + NSString *clientTokenString = [FBSDKSettings clientToken]; + if (clientTokenString && appID && [appID isEqualToString:token.appID]){ + tokenString = [NSString stringWithFormat:@"%@|%@", appID, clientTokenString]; + } else if (appID) { + tokenString = nil; + } + } + return tokenString; +} + ++ (long)unixTimeNow +{ + return (long)round([[NSDate date] timeIntervalSince1970]); +} + +- (instancetype)init +{ + FBSDK_NO_DESIGNATED_INITIALIZER(); + return nil; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h new file mode 100644 index 0000000..a5f7a77 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +// Class to encapsulate implicit logging of purchase events +@interface FBSDKPaymentObserver : NSObject ++ (void)startObservingTransactions; ++ (void)stopObservingTransactions; +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m new file mode 100644 index 0000000..73ef436 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m @@ -0,0 +1,281 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKPaymentObserver.h" + +#import + +#import "FBSDKAppEvents+Internal.h" +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKLogger.h" +#import "FBSDKSettings.h" + +static NSString *const FBSDKAppEventParameterImplicitlyLoggedPurchase = @"_implicitlyLoggedPurchaseEvent"; +static NSString *const FBSDKAppEventNamePurchaseFailed = @"fb_mobile_purchase_failed"; +static NSString *const FBSDKAppEventParameterNameProductTitle = @"fb_content_title"; +static NSString *const FBSDKAppEventParameterNameTransactionID = @"fb_transaction_id"; +static int const FBSDKMaxParameterValueLength = 100; +static NSMutableArray *g_pendingRequestors; + +@interface FBSDKPaymentProductRequestor : NSObject + +@property (nonatomic, retain) SKPaymentTransaction *transaction; + +- (instancetype)initWithTransaction:(SKPaymentTransaction*)transaction; +- (void)resolveProducts; + +@end + +@interface FBSDKPaymentObserver() +@end + +@implementation FBSDKPaymentObserver +{ + BOOL _observingTransactions; +} + ++ (void)startObservingTransactions +{ + [[self singleton] startObservingTransactions]; +} + ++ (void)stopObservingTransactions +{ + [[self singleton] stopObservingTransactions]; +} + +// +// Internal methods +// + ++ (FBSDKPaymentObserver *)singleton +{ + static dispatch_once_t pred; + static FBSDKPaymentObserver *shared = nil; + + dispatch_once(&pred, ^{ + shared = [[FBSDKPaymentObserver alloc] init]; + }); + return shared; +} + +- (instancetype) init +{ + self = [super init]; + if (self) { + _observingTransactions = NO; + } + return self; +} + +- (void)startObservingTransactions +{ + @synchronized (self) { + if (!_observingTransactions) { + [(SKPaymentQueue *)[fbsdkdfl_SKPaymentQueueClass() defaultQueue] addTransactionObserver:self]; + _observingTransactions = YES; + } + } +} + +- (void)stopObservingTransactions +{ + @synchronized (self) { + if (_observingTransactions) { + [(SKPaymentQueue *)[fbsdkdfl_SKPaymentQueueClass() defaultQueue] removeTransactionObserver:self]; + _observingTransactions = NO; + } + } +} + +- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions +{ + for (SKPaymentTransaction *transaction in transactions) { + switch (transaction.transactionState) { + case SKPaymentTransactionStatePurchasing: + case SKPaymentTransactionStatePurchased: + case SKPaymentTransactionStateFailed: + [self handleTransaction:transaction]; + break; + case SKPaymentTransactionStateDeferred: + case SKPaymentTransactionStateRestored: + break; + } + } +} + +- (void)handleTransaction:(SKPaymentTransaction *)transaction +{ + FBSDKPaymentProductRequestor *productRequest = [[FBSDKPaymentProductRequestor alloc] initWithTransaction:transaction]; + [productRequest resolveProducts]; +} + +@end + +@interface FBSDKPaymentProductRequestor() +@property (nonatomic, retain) SKProductsRequest *productRequest; +@end + +@implementation FBSDKPaymentProductRequestor + ++ (void)initialize +{ + if ([self class] == [FBSDKPaymentProductRequestor class]) { + g_pendingRequestors = [[NSMutableArray alloc] init]; + } +} + +- (instancetype)initWithTransaction:(SKPaymentTransaction*)transaction +{ + self = [super init]; + if (self) { + _transaction = transaction; + } + return self; +} + +- (void)setProductRequest:(SKProductsRequest *)productRequest +{ + if (productRequest != _productRequest) { + if (_productRequest) { + _productRequest.delegate = nil; + } + _productRequest = productRequest; + } +} + +- (void)resolveProducts +{ + NSString *productId = self.transaction.payment.productIdentifier; + NSSet *productIdentifiers = [NSSet setWithObjects:productId, nil]; + self.productRequest = [[fbsdkdfl_SKProductsRequestClass() alloc] initWithProductIdentifiers:productIdentifiers]; + self.productRequest.delegate = self; + @synchronized(g_pendingRequestors) { + [g_pendingRequestors addObject:self]; + } + [self.productRequest start]; +} + +- (NSString *)getTruncatedString:(NSString *)inputString +{ + if (!inputString) { + return @""; + } + + return [inputString length] <= FBSDKMaxParameterValueLength ? inputString : [inputString substringToIndex:FBSDKMaxParameterValueLength]; +} + +- (void)logTransactionEvent:(SKProduct *)product +{ + NSString *eventName = nil; + NSString *transactionID = nil; + switch (self.transaction.transactionState) { + case SKPaymentTransactionStatePurchasing: + eventName = FBSDKAppEventNameInitiatedCheckout; + break; + case SKPaymentTransactionStatePurchased: + eventName = FBSDKAppEventNamePurchased; + transactionID = self.transaction.transactionIdentifier; + break; + case SKPaymentTransactionStateFailed: + eventName = FBSDKAppEventNamePurchaseFailed; + break; + case SKPaymentTransactionStateDeferred: + case SKPaymentTransactionStateRestored: + return; + } + if (!eventName) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAppEvents + formatString:@"FBSDKPaymentObserver logTransactionEvent: event name cannot be nil"]; + return; + } + + SKPayment *payment = self.transaction.payment; + NSMutableDictionary *eventParameters = [NSMutableDictionary dictionaryWithDictionary: @{ + FBSDKAppEventParameterNameContentID: payment.productIdentifier ?: @"", + FBSDKAppEventParameterNameNumItems: @(payment.quantity), + }]; + double totalAmount = 0; + if (product) { + totalAmount = payment.quantity * product.price.doubleValue; + [eventParameters addEntriesFromDictionary: @{ + FBSDKAppEventParameterNameCurrency: [product.priceLocale objectForKey:NSLocaleCurrencyCode], + FBSDKAppEventParameterNameNumItems: @(payment.quantity), + FBSDKAppEventParameterNameProductTitle: [self getTruncatedString:product.localizedTitle], + FBSDKAppEventParameterNameDescription: [self getTruncatedString:product.localizedDescription], + }]; + if (transactionID) { + [eventParameters setObject:transactionID forKey:FBSDKAppEventParameterNameTransactionID]; + } + } + + [self logImplicitPurchaseEvent:eventName + valueToSum:totalAmount + parameters:eventParameters]; +} + +- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response +{ + NSArray* products = response.products; + NSArray* invalidProductIdentifiers = response.invalidProductIdentifiers; + if (products.count + invalidProductIdentifiers.count != 1) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAppEvents + formatString:@"FBSDKPaymentObserver: Expect to resolve one product per request"]; + } + SKProduct *product = nil; + if (products.count) { + product = products[0]; + } + [self logTransactionEvent:product]; +} + +- (void)requestDidFinish:(SKRequest *)request +{ + [self cleanUp]; +} + +- (void)request:(SKRequest *)request didFailWithError:(NSError *)error +{ + [self logTransactionEvent:nil]; + [self cleanUp]; +} + +- (void)cleanUp +{ + @synchronized(g_pendingRequestors) { + [g_pendingRequestors removeObject:self]; + } +} + +- (void)logImplicitPurchaseEvent:(NSString *)eventName + valueToSum:(double)valueToSum + parameters:(NSDictionary *)parameters { + NSMutableDictionary *eventParameters = [NSMutableDictionary dictionaryWithDictionary:parameters]; + [eventParameters setObject:@"1" forKey:FBSDKAppEventParameterImplicitlyLoggedPurchase]; + [FBSDKAppEvents logEvent:eventName + valueToSum:valueToSum + parameters:parameters]; + + // Unless the behavior is set to only allow explicit flushing, we go ahead and flush, since purchase events + // are relatively rare and relatively high value and worth getting across on wire right away. + if ([FBSDKAppEvents flushBehavior] != FBSDKAppEventsFlushBehaviorExplicitOnly) { + [[FBSDKAppEvents singleton] flushForReason:FBSDKAppEventsFlushReasonEagerlyFlushingEvent]; + } +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h new file mode 100644 index 0000000..12f2f3a --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h @@ -0,0 +1,36 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +FBSDK_EXTERN NSString *const FBSDKTimeSpentFilename; + +// Class to encapsulate persisting of time spent data collected by [FBSDKAppEvents activateApp]. The activate app App Event is +// logged when restore: is called with sufficient time since the last deactivation. +@interface FBSDKTimeSpentData : NSObject + ++ (void)suspend; ++ (void)restore:(BOOL)calledFromActivateApp; + ++ (void)setSourceApplication:(NSString *)sourceApplication openURL:(NSURL *)url; ++ (void)setSourceApplication:(NSString *)sourceApplication isFromAppLink:(BOOL)isFromAppLink; ++ (void)registerAutoResetSourceApplication; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m new file mode 100644 index 0000000..cfa33c2 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m @@ -0,0 +1,305 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKTimeSpentData.h" + +#import "FBSDKAppEvents+Internal.h" +#import "FBSDKAppEventsUtility.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKLogger.h" +#import "FBSDKSettings.h" + + +// Filename and keys for session length +NSString *const FBSDKTimeSpentFilename = @"com-facebook-sdk-AppEventsTimeSpent.json"; +static NSString *const FBSDKTimeSpentPersistKeySessionSecondsSpent = @"secondsSpentInCurrentSession"; +static NSString *const FBSDKTimeSpentPersistKeySessionNumInterruptions = @"numInterruptions"; +static NSString *const FBSDKTimeSpentPersistKeyLastSuspendTime = @"lastSuspendTime"; + +static NSString *const FBSDKAppEventNameActivatedApp = @"fb_mobile_activate_app"; +static NSString *const FBSDKAppEventNameDeactivatedApp = @"fb_mobile_deactivate_app"; +static NSString *const FBSDKAppEventParameterNameSessionInterruptions = @"fb_mobile_app_interruptions"; +static NSString *const FBSDKAppEventParameterNameTimeBetweenSessions = @"fb_mobile_time_between_sessions"; + +static const int NUM_SECONDS_IDLE_TO_BE_NEW_SESSION = 60; +static const int SECS_PER_MIN = 60; +static const int SECS_PER_HOUR = 60 * SECS_PER_MIN; +static const int SECS_PER_DAY = 24 * SECS_PER_HOUR; + +static NSString *g_sourceApplication; +static BOOL g_isOpenedFromAppLink; + +// Will be translated and displayed in App Insights. Need to maintain same number and value of quanta on the server. +static const long INACTIVE_SECONDS_QUANTA[] = +{ + 5 * SECS_PER_MIN, + 15 * SECS_PER_MIN, + 30 * SECS_PER_MIN, + 1 * SECS_PER_HOUR, + 6 * SECS_PER_HOUR, + 12 * SECS_PER_HOUR, + 1 * SECS_PER_DAY, + 2 * SECS_PER_DAY, + 3 * SECS_PER_DAY, + 7 * SECS_PER_DAY, + 14 * SECS_PER_DAY, + 21 * SECS_PER_DAY, + 28 * SECS_PER_DAY, + 60 * SECS_PER_DAY, + 90 * SECS_PER_DAY, + 120 * SECS_PER_DAY, + 150 * SECS_PER_DAY, + 180 * SECS_PER_DAY, + 365 * SECS_PER_DAY, + LONG_MAX, // keep as LONG_MAX to guarantee loop will terminate +}; + +/** + * This class encapsulates the notion of an app 'session' - the length of time that the user has + * spent in the app that can be considered a single usage of the app. Apps may be frequently interrupted + * do to other device activity, like a text message, so this class allows those interruptions to be smoothed + * out and the time actually spent in the app excluding this interruption time to be accumulated. Also, + * once a certain amount of time has gone by where the app is not in the foreground, we consider the + * session to be complete, and a new session beginning. When this occurs, we log an 'activate app' event + * with the duration of the previous session as the 'value' of this event, along with the number of + * interruptions from that previous session as an event parameter. + */ +@interface FBSDKTimeSpentData() + +@property (nonatomic) NSInteger numSecondsIdleToBeNewSession; + +@end + +@implementation FBSDKTimeSpentData +{ + BOOL _isCurrentlyLoaded; + BOOL _shouldLogActivateEvent; + BOOL _shouldLogDeactivateEvent; + long _secondsSpentInCurrentSession; + long _timeSinceLastSuspend; + int _numInterruptionsInCurrentSession; + long _lastRestoreTime; +} + +// +// Public methods +// + ++ (void)suspend +{ + [self.singleton instanceSuspend]; +} + ++ (void)restore:(BOOL)calledFromActivateApp +{ + [self.singleton instanceRestore:calledFromActivateApp]; +} + +// +// Internal methods +// + +- (instancetype)init +{ + if ((self = [super init])) { + _numSecondsIdleToBeNewSession = NUM_SECONDS_IDLE_TO_BE_NEW_SESSION; + } + return self; +} + ++ (FBSDKTimeSpentData *)singleton +{ + static dispatch_once_t pred; + static FBSDKTimeSpentData *shared = nil; + + dispatch_once(&pred, ^{ + shared = [[FBSDKTimeSpentData alloc] init]; + }); + return shared; +} + +// Calculate and persist time spent data for this instance of the app activation. +- (void)instanceSuspend +{ + + [FBSDKAppEventsUtility ensureOnMainThread]; + if (!_isCurrentlyLoaded) { + FBSDKConditionalLog(YES, FBSDKLoggingBehaviorInformational, @"[FBSDKTimeSpentData suspend] invoked without corresponding restore"); + return; + } + + long now = [FBSDKAppEventsUtility unixTimeNow]; + long timeSinceRestore = now - _lastRestoreTime; + + // Can happen if the clock on the device is changed + if (timeSinceRestore < 0) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAppEvents + formatString:@"Clock skew detected"]; + timeSinceRestore = 0; + } + + _secondsSpentInCurrentSession += timeSinceRestore; + + NSDictionary *timeSpentData = + @{ + FBSDKTimeSpentPersistKeySessionSecondsSpent : @(_secondsSpentInCurrentSession), + FBSDKTimeSpentPersistKeySessionNumInterruptions : @(_numInterruptionsInCurrentSession), + FBSDKTimeSpentPersistKeyLastSuspendTime : @(now) + }; + + NSString *content = [FBSDKInternalUtility JSONStringForObject:timeSpentData error:NULL invalidObjectHandler:NULL]; + + [content writeToFile:[FBSDKAppEventsUtility persistenceFilePath:FBSDKTimeSpentFilename] + atomically:YES + encoding:NSASCIIStringEncoding + error:nil]; + + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAppEvents + formatString:@"FBSDKTimeSpentData Persist: %@", content]; + + _isCurrentlyLoaded = NO; +} + + +// Called during activation - either through an explicit 'activateApp' call or implicitly when the app is foregrounded. +// In both cases, we restore the persisted event data. In the case of the activateApp, we log an 'app activated' +// event if there's been enough time between the last deactivation and now. +- (void)instanceRestore:(BOOL)calledFromActivateApp +{ + + [FBSDKAppEventsUtility ensureOnMainThread]; + + // It's possible to call this multiple times during the time the app is in the foreground. If this is the case, + // just restore persisted data the first time. + if (!_isCurrentlyLoaded) { + + NSString *content = + [[NSString alloc] initWithContentsOfFile:[FBSDKAppEventsUtility persistenceFilePath:FBSDKTimeSpentFilename] + usedEncoding:nil + error:nil]; + + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAppEvents + formatString:@"FBSDKTimeSpentData Restore: %@", content]; + + long now = [FBSDKAppEventsUtility unixTimeNow]; + if (!content) { + + // Nothing persisted, so this is the first launch. + _secondsSpentInCurrentSession = 0; + _numInterruptionsInCurrentSession = 0; + + // We want to log the app activation event on the first launch, but not the deactivate event + _shouldLogActivateEvent = YES; + _shouldLogDeactivateEvent = NO; + + } else { + + NSDictionary *results = [FBSDKInternalUtility objectForJSONString:content error:NULL]; + + long lastActiveTime = [[results objectForKey:FBSDKTimeSpentPersistKeyLastSuspendTime] longValue]; + + _timeSinceLastSuspend = now - lastActiveTime; + _secondsSpentInCurrentSession = [[results objectForKey:FBSDKTimeSpentPersistKeySessionSecondsSpent] intValue]; + _numInterruptionsInCurrentSession = [[results objectForKey:FBSDKTimeSpentPersistKeySessionNumInterruptions] intValue]; + _shouldLogActivateEvent = (_timeSinceLastSuspend > _numSecondsIdleToBeNewSession); + + // Other than the first launch, we always log the last session's deactivate with this session's activate. + _shouldLogDeactivateEvent = _shouldLogActivateEvent; + + if (!_shouldLogDeactivateEvent) { + // If we're not logging, then the time we spent deactivated is considered another interruption. But cap it + // so errant or test uses doesn't blow out the cardinality on the backend processing + _numInterruptionsInCurrentSession = MIN(_numInterruptionsInCurrentSession + 1, 200); + } + + } + + _lastRestoreTime = now; + _isCurrentlyLoaded = YES; + + if (calledFromActivateApp) { + + if (_shouldLogActivateEvent) { + [FBSDKAppEvents logEvent:FBSDKAppEventNameActivatedApp + parameters:@{ + FBSDKAppEventParameterLaunchSource: [[self class] getSourceApplication] + }]; + } + + if (_shouldLogDeactivateEvent) { + + int quantaIndex = 0; + while (_timeSinceLastSuspend > INACTIVE_SECONDS_QUANTA[quantaIndex]) { + quantaIndex++; + } + + [FBSDKAppEvents logEvent:FBSDKAppEventNameDeactivatedApp + valueToSum:_secondsSpentInCurrentSession + parameters: + @{ FBSDKAppEventParameterNameSessionInterruptions : @(_numInterruptionsInCurrentSession), + FBSDKAppEventParameterNameTimeBetweenSessions : [NSString stringWithFormat:@"session_quanta_%d", quantaIndex], + FBSDKAppEventParameterLaunchSource: [[self class] getSourceApplication], + } + ]; + + // We've logged the session stats, now reset. + _secondsSpentInCurrentSession = 0; + _numInterruptionsInCurrentSession = 0; + } + } + } +} + ++ (void)setSourceApplication:(NSString *)sourceApplication openURL:(NSURL *)url +{ + [self setSourceApplication:sourceApplication + isFromAppLink:[FBSDKInternalUtility dictionaryFromFBURL:url][@"al_applink_data"] != nil]; +} + ++ (void)setSourceApplication:(NSString *)sourceApplication isFromAppLink:(BOOL)isFromAppLink +{ + g_isOpenedFromAppLink = isFromAppLink; + g_sourceApplication = sourceApplication; +} + ++ (NSString *)getSourceApplication +{ + NSString *openType = @"Unclassified"; + if (g_isOpenedFromAppLink) { + openType = @"AppLink"; + } + return (g_sourceApplication ? + [NSString stringWithFormat:@"%@(%@)", openType, g_sourceApplication] + : openType); +} + ++ (void)resetSourceApplication +{ + g_sourceApplication = nil; + g_isOpenedFromAppLink = NO; +} + ++ (void)registerAutoResetSourceApplication +{ + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(resetSourceApplication) + name:UIApplicationDidEnterBackgroundNotification + object:nil]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h new file mode 100644 index 0000000..c42431b --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h @@ -0,0 +1,23 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@interface FBSDKBoltsMeasurementEventListener : NSObject ++ (FBSDKBoltsMeasurementEventListener *)defaultListener; +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m new file mode 100644 index 0000000..415e029 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m @@ -0,0 +1,78 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKBoltsMeasurementEventListener.h" + +#import "FBSDKAppEvents+Internal.h" +#import "FBSDKTimeSpentData.h" + +static NSString *const BoltsMeasurementEventNotificationName = @"com.parse.bolts.measurement_event"; +static NSString *const BoltsMeasurementEventName = @"event_name"; +static NSString *const BoltsMeasurementEventArgs = @"event_args"; +static NSString *const BoltsMeasurementEventPrefix = @"bf_"; + +@implementation FBSDKBoltsMeasurementEventListener + ++ (instancetype)defaultListener +{ + static dispatch_once_t dispatchOnceLocker = 0; + static FBSDKBoltsMeasurementEventListener *defaultListener = nil; + dispatch_once(&dispatchOnceLocker, ^{ + defaultListener = [[self alloc] init]; + NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; + [center addObserver:defaultListener + selector:@selector(logFBAppEventForNotification:) + name:BoltsMeasurementEventNotificationName + object:nil]; + }); + return defaultListener; +} + +- (void)logFBAppEventForNotification:(NSNotification *)note +{ + // when catch al_nav_in event, we set source application for FBAppEvents. + if ([note.userInfo[BoltsMeasurementEventName] isEqualToString:@"al_nav_in"]) { + NSString *sourceApplication = note.userInfo[BoltsMeasurementEventArgs][@"sourceApplication"]; + if (sourceApplication) { + [FBSDKTimeSpentData setSourceApplication:sourceApplication isFromAppLink:YES]; + } + } + NSDictionary *eventArgs = note.userInfo[BoltsMeasurementEventArgs]; + NSMutableDictionary *logData = [[NSMutableDictionary alloc] init]; + for(NSString *key in eventArgs.allKeys) { + NSError *error = nil; + NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^0-9a-zA-Z _-]" options:0 error:&error]; + NSString *safeKey = [regex stringByReplacingMatchesInString:key + options:0 + range:NSMakeRange(0, [key length]) + withTemplate:@"-"]; + safeKey = [safeKey stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" -"]]; + logData[safeKey] = eventArgs[key]; + } + [FBSDKAppEvents logImplicitEvent:[BoltsMeasurementEventPrefix stringByAppendingString:note.userInfo[BoltsMeasurementEventName]] + valueToSum:nil + parameters:logData + accessToken:nil]; +} + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h new file mode 100644 index 0000000..f358917 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h @@ -0,0 +1,51 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@interface FBSDKBase64 : NSObject + +/*! + @abstract Decodes a base-64 encoded string. + @param string The base-64 encoded string. + @return NSData containing the decoded bytes. + */ ++ (NSData *)decodeAsData:(NSString *)string; + +/*! + @abstract Decodes a base-64 encoded string into a string. + @param string The base-64 encoded string. + @return NSString with the decoded UTF-8 value. + */ ++ (NSString *)decodeAsString:(NSString *)string; + +/*! + @abstract Encodes data into a string. + @param data The data to be encoded. + @return The base-64 encoded string. + */ ++ (NSString *)encodeData:(NSData *)data; + +/*! + @abstract Encodes string into a base-64 representation. + @param string The string to be encoded. + @return The base-64 encoded string. + */ ++ (NSString *)encodeString:(NSString *)string; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m new file mode 100644 index 0000000..c509d2e --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m @@ -0,0 +1,133 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKBase64.h" + +#import "FBSDKMacros.h" + +@implementation FBSDKBase64 +{ + BOOL _optionsEnabled; +} + +static FBSDKBase64 *_decoder; +static FBSDKBase64 *_encoder; + +#pragma mark - Class Methods + ++ (void)initialize +{ + if (self == [FBSDKBase64 class]) { + BOOL optionsEnabled; + optionsEnabled = [NSData instancesRespondToSelector:@selector(initWithBase64EncodedString:options:)]; + _decoder = [[FBSDKBase64 alloc] initWithOptionsEnabled:optionsEnabled]; + optionsEnabled = [NSData instancesRespondToSelector:@selector(base64EncodedStringWithOptions:)]; + _encoder = [[FBSDKBase64 alloc] initWithOptionsEnabled:optionsEnabled]; + } +} + ++ (NSData *)decodeAsData:(NSString *)string +{ + return [_decoder decodeAsData:string]; +} + ++ (NSString *)decodeAsString:(NSString *)string +{ + return [_decoder decodeAsString:string]; +} + ++ (NSString *)encodeData:(NSData *)data +{ + return [_encoder encodeData:data]; +} + ++ (NSString *)encodeString:(NSString *)string +{ + return [_encoder encodeString:string]; +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + FBSDK_NOT_DESIGNATED_INITIALIZER(initWithOptionsEnabled:); + return nil; +} + +- (instancetype)initWithOptionsEnabled:(BOOL)optionsEnabled +{ + if ((self = [super init])) { + _optionsEnabled = optionsEnabled; + } + return self; +} + +#pragma mark - Implementation Methods + +- (NSData *)decodeAsData:(NSString *)string +{ + if (!string) { + return nil; + } + // This padding will be appended before stripping unknown characters, so if there are unknown characters of count % 4 + // it will not be able to decode. Since we assume valid base64 data, we will take this as is. + int needPadding = string.length % 4; + if (needPadding > 0) { + needPadding = 4 - needPadding; + string = [string stringByPaddingToLength:string.length+needPadding withString:@"=" startingAtIndex:0]; + } + if (_optionsEnabled) { + return [[NSData alloc] initWithBase64EncodedString:string options:NSDataBase64DecodingIgnoreUnknownCharacters]; + } else { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + return [[NSData alloc] initWithBase64Encoding:string]; +#pragma clang diagnostic pop + } +} + +- (NSString *)decodeAsString:(NSString *)string +{ + NSData *data = [self decodeAsData:string]; + if (!data) { + return nil; + } + return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; +} + +- (NSString *)encodeData:(NSData *)data +{ + if (!data) { + return nil; + } + if (_optionsEnabled) { + return [data base64EncodedStringWithOptions:0]; + } else { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + return [data base64Encoding]; +#pragma clang diagnostic pop + } +} + +- (NSString *)encodeString:(NSString *)string +{ + return [self encodeData:[string dataUsingEncoding:NSUTF8StringEncoding]]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h new file mode 100644 index 0000000..7d488e7 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h @@ -0,0 +1,31 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKBridgeAPIRequest.h" + +@interface FBSDKBridgeAPICrypto : NSObject + ++ (void)addCipherKeyToQueryParameters:(NSMutableDictionary *)queryParameters; ++ (NSDictionary *)decryptResponseForRequest:(FBSDKBridgeAPIRequest *)request + queryParameters:(NSDictionary *)queryParameters + error:(NSError *__autoreleasing *)errorRef; ++ (void)reset; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m new file mode 100644 index 0000000..29d2eb4 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m @@ -0,0 +1,139 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKBridgeAPICrypto.h" + +#import "FBSDKBridgeAPIProtocol.h" +#import "FBSDKConstants.h" +#import "FBSDKCrypto.h" +#import "FBSDKError.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKMacros.h" +#import "FBSDKSettings.h" +#import "FBSDKUtility.h" + +static NSString *const FBSDKBridgeAPICryptoCipherKey = @"cipher"; +static NSString *const FBSDKBridgeAPICryptoCipherKeyKey = @"cipher_key"; +static NSString *g_cipherKey = nil; + +@implementation FBSDKBridgeAPICrypto + +#pragma mark - Class Methods + ++ (void)addCipherKeyToQueryParameters:(NSMutableDictionary *)queryParameters +{ + [FBSDKInternalUtility dictionary:queryParameters setObject:[self _cipherKey] forKey:FBSDKBridgeAPICryptoCipherKeyKey]; +} + ++ (NSDictionary *)decryptResponseForRequest:(FBSDKBridgeAPIRequest *)request + queryParameters:(NSDictionary *)queryParameters + error:(NSError *__autoreleasing *)errorRef +{ + if (errorRef != NULL) { + *errorRef = nil; + } + NSString *cipher = queryParameters[FBSDKBridgeAPICryptoCipherKey]; + if (!cipher) { + return queryParameters ?: @{}; + } + NSString *version = queryParameters[FBSDKBridgeAPIVersionKey]; + NSString *cipherKey = [self _cipherKey]; + if (!version || !cipherKey) { + if (errorRef != NULL) { + NSDictionary *userInfo = @{ + FBSDKErrorArgumentValueKey: queryParameters, + }; + *errorRef = [FBSDKError errorWithCode:FBSDKEncryptionErrorCode + userInfo:userInfo + message:@"Error decrypting incoming query parameters." + underlyingError:nil]; + } + return nil; + } + NSArray *additionalSignedDataArray = @[ + [[NSBundle mainBundle] bundleIdentifier], + [FBSDKSettings appID] ?: @"", + @"bridge", + request.methodName ?: @"", + version, + ]; + NSString *additionalSignedDataString = [additionalSignedDataArray componentsJoinedByString:@":"]; + NSData *additionalSignedData = [additionalSignedDataString dataUsingEncoding:NSUTF8StringEncoding]; + FBSDKCrypto *crypto = [[FBSDKCrypto alloc] initWithMasterKey:cipherKey]; + NSData *decryptedData = [crypto decrypt:cipher additionalSignedData:additionalSignedData]; + if (!decryptedData) { + if (errorRef != NULL) { + NSDictionary *userInfo = @{ + FBSDKErrorArgumentValueKey: @{ + @"cipher": cipher, + @"bundleIdentifier": additionalSignedDataArray[0], + @"appID": additionalSignedDataArray[1], + @"host": additionalSignedDataArray[2], + @"methodName": additionalSignedDataArray[3], + @"version": additionalSignedDataArray[4], + }, + }; + *errorRef = [FBSDKError errorWithCode:FBSDKEncryptionErrorCode + userInfo:userInfo + message:@"Error decrypting incoming query parameters." + underlyingError:nil]; + } + return nil; + } + NSString *decryptedString = [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding]; + NSDictionary *decryptedDictionary = [FBSDKUtility dictionaryWithQueryString:decryptedString]; + NSMutableDictionary *decryptedQueryParameters = [[NSMutableDictionary alloc] initWithDictionary:decryptedDictionary]; + decryptedQueryParameters[FBSDKBridgeAPIVersionKey] = version; + return [decryptedQueryParameters copy]; +} + ++ (void)reset +{ + [self _resetCipherKey]; +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + FBSDK_NO_DESIGNATED_INITIALIZER(); + return nil; +} + +#pragma mark - Helper Methods + ++ (NSString *)_cipherKey +{ + if (g_cipherKey) { + return g_cipherKey; + } + g_cipherKey = [[[NSUserDefaults standardUserDefaults] stringForKey:FBSDKBridgeAPICryptoCipherKeyKey] copy]; + if (g_cipherKey) { + return g_cipherKey; + } + return [self _resetCipherKey]; +} + ++ (NSString *)_resetCipherKey +{ + g_cipherKey = [[FBSDKCrypto makeMasterKey] copy]; + [[NSUserDefaults standardUserDefaults] setObject:g_cipherKey forKey:FBSDKBridgeAPICryptoCipherKeyKey]; + return g_cipherKey; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h new file mode 100644 index 0000000..679577c --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h @@ -0,0 +1,44 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import "FBSDKBridgeAPIProtocolType.h" + +@class FBSDKBridgeAPIRequest; + +FBSDK_EXTERN NSString *const FBSDKBridgeAPIAppIDKey; +FBSDK_EXTERN NSString *const FBSDKBridgeAPISchemeSuffixKey; +FBSDK_EXTERN NSString *const FBSDKBridgeAPIVersionKey; + +@protocol FBSDKBridgeAPIProtocol + +- (NSURL *)requestURLWithActionID:(NSString *)actionID + scheme:(NSString *)scheme + methodName:(NSString *)methodName + methodVersion:(NSString *)methodVersion + parameters:(NSDictionary *)parameters + error:(NSError *__autoreleasing *)errorRef; +- (NSDictionary *)responseParametersForActionID:(NSString *)actionID + queryParameters:(NSDictionary *)queryParameters + cancelled:(BOOL *)cancelledRef + error:(NSError *__autoreleasing *)errorRef; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h new file mode 100644 index 0000000..b04e359 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +typedef NS_ENUM(NSUInteger, FBSDKBridgeAPIProtocolType) +{ + FBSDKBridgeAPIProtocolTypeNative, + FBSDKBridgeAPIProtocolTypeWeb, +}; diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h new file mode 100644 index 0000000..4455e22 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h @@ -0,0 +1,35 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKBridgeAPIProtocol.h" +#import "FBSDKBridgeAPIRequest.h" + +@interface FBSDKBridgeAPIRequest () + +- (instancetype)initWithProtocol:(id)protocol + protocolType:(FBSDKBridgeAPIProtocolType)protocolType + scheme:(NSString *)scheme + methodName:(NSString *)methodName + methodVersion:(NSString *)methodVersion + parameters:(NSDictionary *)parameters + userInfo:(NSDictionary *)userInfo +NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, strong, readonly) id protocol; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h new file mode 100644 index 0000000..01af30c --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h @@ -0,0 +1,44 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import "FBSDKBridgeAPIProtocolType.h" + +@interface FBSDKBridgeAPIRequest : NSObject + ++ (instancetype)bridgeAPIRequestWithProtocolType:(FBSDKBridgeAPIProtocolType)protocolType + scheme:(NSString *)scheme + methodName:(NSString *)methodName + methodVersion:(NSString *)methodVersion + parameters:(NSDictionary *)parameters + userInfo:(NSDictionary *)userInfo; + +@property (nonatomic, copy, readonly) NSString *actionID; +@property (nonatomic, copy, readonly) NSString *methodName; +@property (nonatomic, copy, readonly) NSString *methodVersion; +@property (nonatomic, copy, readonly) NSDictionary *parameters; +@property (nonatomic, assign, readonly) FBSDKBridgeAPIProtocolType protocolType; +@property (nonatomic, copy, readonly) NSString *scheme; +@property (nonatomic, copy, readonly) NSDictionary *userInfo; + +- (NSURL *)requestURL:(NSError *__autoreleasing *)errorRef; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m new file mode 100644 index 0000000..23a3712 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m @@ -0,0 +1,166 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKBridgeAPIRequest.h" +#import "FBSDKBridgeAPIRequest+Private.h" + +#import "FBSDKBridgeAPICrypto.h" +#import "FBSDKBridgeAPIProtocolNativeV1.h" +#import "FBSDKBridgeAPIProtocolWebV1.h" +#import "FBSDKBridgeAPIProtocolWebV2.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKMacros.h" +#import "FBSDKSettings.h" +#import "FBSDKUtility.h" + +NSString *const FBSDKBridgeAPIAppIDKey = @"app_id"; +NSString *const FBSDKBridgeAPISchemeSuffixKey = @"scheme_suffix"; +NSString *const FBSDKBridgeAPIVersionKey = @"version"; + +@implementation FBSDKBridgeAPIRequest + +#pragma mark - Class Methods + ++ (instancetype)bridgeAPIRequestWithProtocolType:(FBSDKBridgeAPIProtocolType)protocolType + scheme:(NSString *)scheme + methodName:(NSString *)methodName + methodVersion:(NSString *)methodVersion + parameters:(NSDictionary *)parameters + userInfo:(NSDictionary *)userInfo +{ + return [[self alloc] initWithProtocol:[self _protocolForType:protocolType scheme:scheme] + protocolType:protocolType + scheme:scheme + methodName:methodName + methodVersion:methodVersion + parameters:parameters + userInfo:userInfo]; +} + ++ (NSDictionary *)protocolMap +{ + static NSDictionary *_protocolMap; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _protocolMap = @{ + @(FBSDKBridgeAPIProtocolTypeNative): @{ + FBSDK_CANOPENURL_FACEBOOK:[[FBSDKBridgeAPIProtocolNativeV1 alloc] initWithAppScheme:@"fbapi20130214"], + FBSDK_CANOPENURL_MESSENGER:[[FBSDKBridgeAPIProtocolNativeV1 alloc] initWithAppScheme:@"fb-messenger-api20140430"] + }, + @(FBSDKBridgeAPIProtocolTypeWeb): @{ + @"https": [[FBSDKBridgeAPIProtocolWebV1 alloc] init], + @"web": [[FBSDKBridgeAPIProtocolWebV2 alloc] init] + }, + }; + }); + return _protocolMap; +} + +#pragma mark - Object Lifecycle + +- (instancetype)initWithProtocol:(id)protocol + protocolType:(FBSDKBridgeAPIProtocolType)protocolType + scheme:(NSString *)scheme + methodName:(NSString *)methodName + methodVersion:(NSString *)methodVersion + parameters:(NSDictionary *)parameters + userInfo:(NSDictionary *)userInfo +{ + if (!protocol) { + return nil; + } + if ((self = [super init])) { + _protocol = protocol; + _protocolType = protocolType; + _scheme = [scheme copy]; + _methodName = [methodName copy]; + _methodVersion = [methodVersion copy]; + _parameters = [parameters copy]; + _userInfo = [userInfo copy]; + + _actionID = [[NSUUID UUID] UUIDString]; + } + return self; +} + +- (instancetype)init +{ + FBSDK_NOT_DESIGNATED_INITIALIZER(initWithProtocol:protocolType:scheme:methodName:methodVersion:parameters:userInfo:); + return [self initWithProtocol:nil + protocolType:FBSDKBridgeAPIProtocolTypeWeb + scheme:nil + methodName:nil + methodVersion:nil + parameters:nil + userInfo:nil]; +} + +#pragma mark - Public Methods + +- (NSURL *)requestURL:(NSError *__autoreleasing *)errorRef +{ + NSURL *requestURL = [_protocol requestURLWithActionID:self.actionID + scheme:self.scheme + methodName:self.methodName + methodVersion:self.methodVersion + parameters:self.parameters + error:errorRef]; + if (!requestURL) { + return nil; + } + + [FBSDKInternalUtility validateURLSchemes]; + + NSDictionary *requestQueryParameters = [FBSDKUtility dictionaryWithQueryString:requestURL.query]; + NSMutableDictionary *queryParameters = [[NSMutableDictionary alloc] initWithDictionary:requestQueryParameters]; + [FBSDKBridgeAPICrypto addCipherKeyToQueryParameters:queryParameters]; + [FBSDKInternalUtility dictionary:queryParameters setObject:[FBSDKSettings appID] forKey:FBSDKBridgeAPIAppIDKey]; + [FBSDKInternalUtility dictionary:queryParameters + setObject:[FBSDKSettings appURLSchemeSuffix] + forKey:FBSDKBridgeAPISchemeSuffixKey]; + requestURL = [FBSDKInternalUtility URLWithScheme:requestURL.scheme + host:requestURL.host + path:requestURL.path + queryParameters:queryParameters + error:errorRef]; + return requestURL; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + return self; +} + ++ (id)_protocolForType:(FBSDKBridgeAPIProtocolType)type scheme:(NSString *)scheme +{ + id protocol = [self protocolMap][@(type)][scheme]; + if (type == FBSDKBridgeAPIProtocolTypeWeb) { + return protocol; + } + NSURLComponents *components = [[NSURLComponents alloc] init]; + components.scheme = scheme; + components.path = @"/"; + if ([[UIApplication sharedApplication] canOpenURL:components.URL]) { + return protocol; + } + return nil; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h new file mode 100644 index 0000000..3da24d3 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h @@ -0,0 +1,39 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import "FBSDKBridgeAPIRequest.h" + +@interface FBSDKBridgeAPIResponse : NSObject + ++ (instancetype)bridgeAPIResponseWithRequest:(FBSDKBridgeAPIRequest *)request error:(NSError *)error; ++ (instancetype)bridgeAPIResponseWithRequest:(FBSDKBridgeAPIRequest *)request + responseURL:(NSURL *)responseURL + sourceApplication:(NSString *)sourceApplication + error:(NSError *__autoreleasing *)errorRef; ++ (instancetype)bridgeAPIResponseCancelledWithRequest:(FBSDKBridgeAPIRequest *)request; + +@property (nonatomic, assign, readonly, getter=isCancelled) BOOL cancelled; +@property (nonatomic, copy, readonly) NSError *error; +@property (nonatomic, copy, readonly) FBSDKBridgeAPIRequest *request; +@property (nonatomic, copy, readonly) NSDictionary *responseParameters; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m new file mode 100644 index 0000000..2254c95 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m @@ -0,0 +1,135 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKBridgeAPIResponse.h" + +#import "FBSDKBridgeAPICrypto.h" +#import "FBSDKBridgeAPIProtocol.h" +#import "FBSDKBridgeAPIProtocolType.h" +#import "FBSDKBridgeAPIRequest+Private.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKMacros.h" +#import "FBSDKTypeUtility.h" +#import "FBSDKUtility.h" + +@interface FBSDKBridgeAPIResponse () +- (instancetype)initWithRequest:(FBSDKBridgeAPIRequest *)request + responseParameters:(NSDictionary *)responseParameters + cancelled:(BOOL)cancelled + error:(NSError *)error +NS_DESIGNATED_INITIALIZER; +@end + +@implementation FBSDKBridgeAPIResponse + +#pragma mark - Class Methods + ++ (instancetype)bridgeAPIResponseWithRequest:(FBSDKBridgeAPIRequest *)request error:(NSError *)error +{ + return [[self alloc] initWithRequest:request + responseParameters:nil + cancelled:NO + error:error]; +} + ++ (instancetype)bridgeAPIResponseWithRequest:(FBSDKBridgeAPIRequest *)request + responseURL:(NSURL *)responseURL + sourceApplication:(NSString *)sourceApplication + error:(NSError *__autoreleasing *)errorRef +{ + FBSDKBridgeAPIProtocolType protocolType = request.protocolType; + switch (protocolType) { + case FBSDKBridgeAPIProtocolTypeNative:{ + if (![FBSDKInternalUtility isFacebookBundleIdentifier:sourceApplication]) { + [FBSDKBridgeAPICrypto reset]; + return nil; + } + break; + } + case FBSDKBridgeAPIProtocolTypeWeb:{ + if (![FBSDKInternalUtility isSafariBundleIdentifier:sourceApplication]) { + [FBSDKBridgeAPICrypto reset]; + return nil; + } + break; + } + } + NSDictionary *queryParameters = [FBSDKUtility dictionaryWithQueryString:responseURL.query]; + queryParameters = [FBSDKBridgeAPICrypto decryptResponseForRequest:request + queryParameters:queryParameters + error:errorRef]; + if (!queryParameters) { + return nil; + } + id protocol = request.protocol; + BOOL cancelled; + NSError *error; + NSDictionary *responseParameters = [protocol responseParametersForActionID:request.actionID + queryParameters:queryParameters + cancelled:&cancelled + error:&error]; + if (errorRef != NULL) { + *errorRef = error; + } + if (!responseParameters) { + return nil; + } + return [[self alloc] initWithRequest:request + responseParameters:responseParameters + cancelled:cancelled + error:error]; +} + ++ (instancetype)bridgeAPIResponseCancelledWithRequest:(FBSDKBridgeAPIRequest *)request +{ + return [[self alloc] initWithRequest:request + responseParameters:nil + cancelled:YES + error:nil]; +} + +#pragma mark - Object Lifecycle + +- (instancetype)initWithRequest:(FBSDKBridgeAPIRequest *)request + responseParameters:(NSDictionary *)responseParameters + cancelled:(BOOL)cancelled + error:(NSError *)error +{ + if ((self = [super init])) { + _request = [request copy]; + _responseParameters = [responseParameters copy]; + _cancelled = cancelled; + _error = [error copy]; + } + return self; +} + +- (instancetype)init +{ + FBSDK_NOT_DESIGNATED_INITIALIZER(initWithRequest:responseParameters:cancelled:error:); + return [self initWithRequest:nil responseParameters:nil cancelled:NO error:nil]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + return self; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h new file mode 100644 index 0000000..83c355a --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h @@ -0,0 +1,30 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +@protocol FBSDKURLOpening + +// Implementations should make sure they can handle nil parameters +// which is possible in SafariViewController. +- (BOOL)application:(UIApplication *)application + openURL:(NSURL *)url + sourceApplication:(NSString *)sourceApplication + annotation:(id)annotation; + +- (void)applicationDidBecomeActive:(UIApplication *)application; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h new file mode 100644 index 0000000..8fd34bd --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h @@ -0,0 +1,70 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import "FBSDKBridgeAPIProtocol.h" + +typedef struct +{ + __unsafe_unretained NSString *bridgeArgs; + __unsafe_unretained NSString *methodArgs; + __unsafe_unretained NSString *methodVersion; +} FBSDKBridgeAPIProtocolNativeV1OutputKeysStruct; +FBSDK_EXTERN const FBSDKBridgeAPIProtocolNativeV1OutputKeysStruct FBSDKBridgeAPIProtocolNativeV1OutputKeys; + +typedef struct +{ + __unsafe_unretained NSString *actionID; + __unsafe_unretained NSString *appIcon; + __unsafe_unretained NSString *appName; + __unsafe_unretained NSString *sdkVersion; +} FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeysStruct; +FBSDK_EXTERN const FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeysStruct FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeys; + +typedef struct +{ + __unsafe_unretained NSString *bridgeArgs; + __unsafe_unretained NSString *methodResults; +} FBSDKBridgeAPIProtocolNativeV1InputKeysStruct; +FBSDK_EXTERN const FBSDKBridgeAPIProtocolNativeV1InputKeysStruct FBSDKBridgeAPIProtocolNativeV1InputKeys; + +typedef struct +{ + __unsafe_unretained NSString *actionID; + __unsafe_unretained NSString *error; +} FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeysStruct; +FBSDK_EXTERN const FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeysStruct FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeys; + +@interface FBSDKBridgeAPIProtocolNativeV1 : NSObject + +- (instancetype)initWithAppScheme:(NSString *)appScheme; +- (instancetype)initWithAppScheme:(NSString *)appScheme + pasteboard:(UIPasteboard *)pasteboard + dataLengthThreshold:(NSUInteger)dataLengthThreshold + includeAppIcon:(BOOL)includeAppIcon +NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, copy, readonly) NSString *appScheme; +@property (nonatomic, assign, readonly) NSUInteger dataLengthThreshold; +@property (nonatomic, assign, readonly) BOOL includeAppIcon; +@property (nonatomic, strong, readonly) UIPasteboard *pasteboard; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m new file mode 100644 index 0000000..50e5b97 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m @@ -0,0 +1,338 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKBridgeAPIProtocolNativeV1.h" + +#import + +#import + +#import "FBSDKApplicationDelegate+Internal.h" +#import "FBSDKBase64.h" +#import "FBSDKBridgeAPIRequest.h" +#import "FBSDKConstants.h" +#import "FBSDKError.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKSettings.h" +#import "FBSDKTypeUtility.h" + +#define FBSDKBridgeAPIProtocolNativeV1BridgeMaxBase64DataLengthThreshold (1024 * 16) + +const FBSDKBridgeAPIProtocolNativeV1OutputKeysStruct FBSDKBridgeAPIProtocolNativeV1OutputKeys = +{ + .bridgeArgs = @"bridge_args", + .methodArgs = @"method_args", + .methodVersion = @"version", +}; + +const FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeysStruct FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeys = +{ + .actionID = @"action_id", + .appIcon = @"app_icon", + .appName = @"app_name", + .sdkVersion = @"sdk_version", +}; + +const FBSDKBridgeAPIProtocolNativeV1InputKeysStruct FBSDKBridgeAPIProtocolNativeV1InputKeys = +{ + .bridgeArgs = @"bridge_args", + .methodResults = @"method_results", +}; + +const FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeysStruct FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeys = +{ + .actionID = @"action_id", + .error = @"error", +}; + +static const struct +{ + __unsafe_unretained NSString *isBase64; + __unsafe_unretained NSString *isPasteboard; + __unsafe_unretained NSString *tag; + __unsafe_unretained NSString *value; +} FBSDKBridgeAPIProtocolNativeV1DataKeys = +{ + .isBase64 = @"isBase64", + .isPasteboard = @"isPasteboard", + .tag = @"tag", + .value = @"fbAppBridgeType_jsonReadyValue", +}; + +static NSString *const FBSDKBridgeAPIProtocolNativeV1DataPasteboardKey = @"com.facebook.Facebook.FBAppBridgeType"; + +static const struct +{ + __unsafe_unretained NSString *data; + __unsafe_unretained NSString *image; +} FBSDKBridgeAPIProtocolNativeV1DataTypeTags = +{ + .data = @"data", + // we serialize jpegs but use png for backward compatibility - it is any image format that UIImage can handle + .image = @"png", +}; + +static const struct +{ + __unsafe_unretained NSString *code; + __unsafe_unretained NSString *domain; + __unsafe_unretained NSString *userInfo; +} FBSDKBridgeAPIProtocolNativeV1ErrorKeys = +{ + .code = @"code", + .domain = @"domain", + .userInfo = @"user_info", +}; + +@implementation FBSDKBridgeAPIProtocolNativeV1 + +#pragma mark - Object Lifecycle + +- (instancetype)initWithAppScheme:(NSString *)appScheme +{ + return [self initWithAppScheme:appScheme + pasteboard:[UIPasteboard generalPasteboard] + dataLengthThreshold:FBSDKBridgeAPIProtocolNativeV1BridgeMaxBase64DataLengthThreshold + includeAppIcon:YES]; +} + +- (instancetype)initWithAppScheme:(NSString *)appScheme + pasteboard:(UIPasteboard *)pasteboard + dataLengthThreshold:(NSUInteger)dataLengthThreshold + includeAppIcon:(BOOL)includeAppIcon +{ + if ((self = [super init])) { + _appScheme = [appScheme copy]; + _pasteboard = pasteboard; + _dataLengthThreshold = dataLengthThreshold; + _includeAppIcon = includeAppIcon; + } + return self; +} + +- (instancetype)init +{ + FBSDK_NOT_DESIGNATED_INITIALIZER(initWithAppScheme:); + return [self initWithAppScheme:nil]; +} + +#pragma mark - FBSDKBridgeAPIProtocol + +- (NSURL *)requestURLWithActionID:(NSString *)actionID + scheme:(NSString *)scheme + methodName:(NSString *)methodName + methodVersion:(NSString *)methodVersion + parameters:(NSDictionary *)parameters + error:(NSError *__autoreleasing *)errorRef +{ + NSString *host = @"dialog"; + NSString *path = [@"/" stringByAppendingString:methodName]; + + NSMutableDictionary *queryParameters = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:queryParameters setObject:methodVersion + forKey:FBSDKBridgeAPIProtocolNativeV1OutputKeys.methodVersion]; + + if ([parameters count]) { + NSString *parametersString = [self _JSONStringForObject:parameters enablePasteboard:YES error:errorRef]; + if (!parametersString) { + return nil; + } + [FBSDKInternalUtility dictionary:queryParameters + setObject:parametersString + forKey:FBSDKBridgeAPIProtocolNativeV1OutputKeys.methodArgs]; + } + + NSDictionary *bridgeParameters = [self _bridgeParametersWithActionID:actionID error:errorRef]; + if (!bridgeParameters) { + return nil; + } + NSString *bridgeParametersString = [self _JSONStringForObject:bridgeParameters enablePasteboard:NO error:errorRef]; + if (!bridgeParametersString) { + return nil; + } + [FBSDKInternalUtility dictionary:queryParameters + setObject:bridgeParametersString + forKey:FBSDKBridgeAPIProtocolNativeV1OutputKeys.bridgeArgs]; + + + return [FBSDKInternalUtility URLWithScheme:self.appScheme + host:host + path:path + queryParameters:queryParameters + error:errorRef]; +} + +- (NSDictionary *)responseParametersForActionID:(NSString *)actionID + queryParameters:(NSDictionary *)queryParameters + cancelled:(BOOL *)cancelledRef + error:(NSError *__autoreleasing *)errorRef +{ + if (cancelledRef != NULL) { + *cancelledRef = NO; + } + if (errorRef != NULL) { + *errorRef = nil; + } + NSError *error; + NSString *bridgeParametersJSON = queryParameters[FBSDKBridgeAPIProtocolNativeV1InputKeys.bridgeArgs]; + NSDictionary *bridgeParameters = [FBSDKInternalUtility objectForJSONString:bridgeParametersJSON error:&error]; + bridgeParameters = [FBSDKTypeUtility dictionaryValue:bridgeParameters]; + if (!bridgeParameters) { + if (error && (errorRef != NULL)) { + *errorRef = [FBSDKError invalidArgumentErrorWithName:FBSDKBridgeAPIProtocolNativeV1InputKeys.bridgeArgs + value:bridgeParametersJSON + message:@"Invalid bridge_args." + underlyingError:error]; + } + return nil; + } + NSString *responseActionID = bridgeParameters[FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeys.actionID]; + responseActionID = [FBSDKTypeUtility stringValue:responseActionID]; + if (![responseActionID isEqualToString:actionID]) { + return nil; + } + NSDictionary *errorDictionary = bridgeParameters[FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeys.error]; + errorDictionary = [FBSDKTypeUtility dictionaryValue:errorDictionary]; + if (errorDictionary) { + error = [self _errorWithDictionary:errorDictionary]; + if (errorRef != NULL) { + *errorRef = error; + } + return nil; + } + NSString *resultParametersJSON = queryParameters[FBSDKBridgeAPIProtocolNativeV1InputKeys.methodResults]; + NSDictionary *resultParameters = [FBSDKInternalUtility objectForJSONString:resultParametersJSON error:&error]; + if (!resultParameters) { + if (errorRef != NULL) { + *errorRef = [FBSDKError invalidArgumentErrorWithName:FBSDKBridgeAPIProtocolNativeV1InputKeys.methodResults + value:resultParametersJSON + message:@"Invalid method_results." + underlyingError:error]; + } + return nil; + } + if (cancelledRef != NULL) { + NSString *completionGesture = [FBSDKTypeUtility stringValue:resultParameters[@"completionGesture"]]; + *cancelledRef = [completionGesture isEqualToString:@"cancel"]; + } + return resultParameters; +} + +#pragma mark - Helper Methods + +- (UIImage *)_appIcon +{ + if (!_includeAppIcon) { + return nil; + } + NSArray *files = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIcons"] + [@"CFBundlePrimaryIcon"] + [@"CFBundleIconFiles"]; + if (![files count]) { + return nil; + } + return [UIImage imageNamed:files[0]]; +} + +- (NSDictionary *)_bridgeParametersWithActionID:(NSString *)actionID error:(NSError *__autoreleasing *)errorRef +{ + NSMutableDictionary *bridgeParameters = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:bridgeParameters setObject:actionID + forKey:FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeys.actionID]; + [FBSDKInternalUtility dictionary:bridgeParameters setObject:[self _appIcon] + forKey:FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeys.appIcon]; + [FBSDKInternalUtility dictionary:bridgeParameters setObject:[FBSDKSettings displayName] + forKey:FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeys.appName]; + [FBSDKInternalUtility dictionary:bridgeParameters setObject:[FBSDKSettings sdkVersion] + forKey:FBSDKBridgeAPIProtocolNativeV1BridgeParameterOutputKeys.sdkVersion]; + return bridgeParameters; +} + +- (NSError *)_errorWithDictionary:(NSDictionary *)dictionary +{ + if (!dictionary) { + return nil; + } + NSString *domain = [FBSDKTypeUtility stringValue:dictionary[FBSDKBridgeAPIProtocolNativeV1ErrorKeys.domain]] ?: + FBSDKErrorDomain; + NSInteger code = [FBSDKTypeUtility integerValue:dictionary[FBSDKBridgeAPIProtocolNativeV1ErrorKeys.code]] ?: + FBSDKUnknownErrorCode; + NSDictionary *userInfo = [FBSDKTypeUtility dictionaryValue:dictionary[FBSDKBridgeAPIProtocolNativeV1ErrorKeys.userInfo]]; + return [NSError errorWithDomain:domain code:code userInfo:userInfo]; +} + +- (NSString *)_JSONStringForObject:(id)object enablePasteboard:(BOOL)enablePasteboard error:(NSError **)errorRef +{ + __block BOOL didAddToPasteboard = NO; + return [FBSDKInternalUtility JSONStringForObject:object error:errorRef invalidObjectHandler:^id(id invalidObject, BOOL *stop) { + NSString *dataTag = FBSDKBridgeAPIProtocolNativeV1DataTypeTags.data; + if ([invalidObject isKindOfClass:[UIImage class]]) { + UIImage *image = (UIImage *)invalidObject; + // due to backward compatibility, we must send UIImage as NSData even though UIPasteboard can handle UIImage + invalidObject = UIImageJPEGRepresentation(image, [FBSDKSettings JPEGCompressionQuality]); + dataTag = FBSDKBridgeAPIProtocolNativeV1DataTypeTags.image; + } + if ([invalidObject isKindOfClass:[NSData class]]) { + NSData *data = (NSData *)invalidObject; + NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; + if (didAddToPasteboard || !enablePasteboard || !_pasteboard || (data.length < _dataLengthThreshold)) { + dictionary[FBSDKBridgeAPIProtocolNativeV1DataKeys.isBase64] = @YES; + dictionary[FBSDKBridgeAPIProtocolNativeV1DataKeys.tag] = dataTag; + [FBSDKInternalUtility dictionary:dictionary + setObject:[FBSDKBase64 encodeData:data] + forKey:FBSDKBridgeAPIProtocolNativeV1DataKeys.value]; + } else { + dictionary[FBSDKBridgeAPIProtocolNativeV1DataKeys.isPasteboard] = @YES; + dictionary[FBSDKBridgeAPIProtocolNativeV1DataKeys.tag] = dataTag; + dictionary[FBSDKBridgeAPIProtocolNativeV1DataKeys.value] = _pasteboard.name; + [_pasteboard setData:data forPasteboardType:FBSDKBridgeAPIProtocolNativeV1DataPasteboardKey]; + // this version of the protocol only supports a single item on the pasteboard, so if when we add an item, make + // sure we don't add another item + didAddToPasteboard = YES; + // if we are adding this to the general pasteboard, then we want to remove it when we are done with the share. + // the Facebook app will not clear the value with this version of the protocol, so we should do it when the app + // becomes active again + NSString *pasteboardName = _pasteboard.name; + if ([pasteboardName isEqualToString:UIPasteboardNameGeneral] || + [pasteboardName isEqualToString:UIPasteboardNameFind]) { + [[self class] clearData:data fromPasteboardOnApplicationDidBecomeActive:_pasteboard]; + } + } + return dictionary; + } else if ([invalidObject isKindOfClass:[NSURL class]]) { + return [(NSURL *)invalidObject absoluteString]; + } + return invalidObject; + }]; +} + ++ (void)clearData:(NSData *)data fromPasteboardOnApplicationDidBecomeActive:(UIPasteboard *)pasteboard +{ + void(^notificationBlock)(NSNotification *) = ^(NSNotification *note){ + NSData *pasteboardData = [pasteboard dataForPasteboardType:FBSDKBridgeAPIProtocolNativeV1DataPasteboardKey]; + if ([data isEqualToData:pasteboardData]) { + [pasteboard setData:[NSData data] forPasteboardType:FBSDKBridgeAPIProtocolNativeV1DataPasteboardKey]; + } + }; + [[NSNotificationCenter defaultCenter] addObserverForName:FBSDKApplicationDidBecomeActiveNotification + object:[FBSDKApplicationDelegate sharedInstance] + queue:nil + usingBlock:notificationBlock]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h new file mode 100644 index 0000000..c7b28f4 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKBridgeAPIProtocol.h" + +@interface FBSDKBridgeAPIProtocolWebV1 : NSObject + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m new file mode 100644 index 0000000..ebe8710 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m @@ -0,0 +1,116 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKBridgeAPIProtocolWebV1.h" + +#import + +#import "FBSDKBase64.h" +#import "FBSDKBridgeAPIRequest.h" +#import "FBSDKError.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKMacros.h" +#import "FBSDKSettings.h" +#import "FBSDKTypeUtility.h" + +#define FBSDK_BRIDGE_API_PROTOCOL_WEB_V1_ACTION_ID_KEY @"action_id" +#define FBSDK_BRIDGE_API_PROTOCOL_WEB_V1_BRIDGE_ARGS_KEY @"bridge_args" + +@implementation FBSDKBridgeAPIProtocolWebV1 + +#pragma mark - FBSDKBridgeAPIProtocol + +- (NSURL *)requestURLWithActionID:(NSString *)actionID + scheme:(NSString *)scheme + methodName:(NSString *)methodName + methodVersion:(NSString *)methodVersion + parameters:(NSDictionary *)parameters + error:(NSError *__autoreleasing *)errorRef +{ + NSMutableDictionary *queryParameters = [[NSMutableDictionary alloc] initWithDictionary:parameters]; + queryParameters[@"display"] = @"touch"; + NSString *bridgeArgs = [FBSDKInternalUtility JSONStringForObject:@{ FBSDK_BRIDGE_API_PROTOCOL_WEB_V1_ACTION_ID_KEY: actionID } + error:NULL + invalidObjectHandler:NULL]; + NSDictionary *redirectQueryParameters = @{ FBSDK_BRIDGE_API_PROTOCOL_WEB_V1_BRIDGE_ARGS_KEY: bridgeArgs }; + NSURL *redirectURL = [FBSDKInternalUtility appURLWithHost:@"bridge" + path:methodName + queryParameters:redirectQueryParameters + error:NULL]; + [FBSDKInternalUtility dictionary:queryParameters setObject:redirectURL forKey:@"redirect_uri"]; + [queryParameters addEntriesFromDictionary:parameters]; + return [FBSDKInternalUtility facebookURLWithHostPrefix:@"m" + path:[@"/dialog/" stringByAppendingString:methodName] + queryParameters:queryParameters + error:NULL]; +} + +- (NSDictionary *)responseParametersForActionID:(NSString *)actionID + queryParameters:(NSDictionary *)queryParameters + cancelled:(BOOL *)cancelledRef + error:(NSError *__autoreleasing *)errorRef +{ + if (errorRef != NULL) { + *errorRef = nil; + } + NSInteger errorCode = [FBSDKTypeUtility integerValue:queryParameters[@"error_code"]]; + switch (errorCode) { + case 0:{ + // good to go, handle the other codes and bail + break; + } + case 4201:{ + return @{ + @"completionGesture": @"cancel", + }; + break; + } + default:{ + if (errorRef != NULL) { + *errorRef = [FBSDKError errorWithCode:errorCode + message:[FBSDKTypeUtility stringValue:queryParameters[@"error_message"]]]; + } + return nil; + break; + } + } + + NSError *error; + NSString *bridgeParametersJSON = [FBSDKTypeUtility stringValue:queryParameters[FBSDK_BRIDGE_API_PROTOCOL_WEB_V1_BRIDGE_ARGS_KEY]]; + NSDictionary *bridgeParameters = [FBSDKInternalUtility objectForJSONString:bridgeParametersJSON error:&error]; + if (!bridgeParameters) { + if (error && (errorRef != NULL)) { + *errorRef = [FBSDKError invalidArgumentErrorWithName:FBSDK_BRIDGE_API_PROTOCOL_WEB_V1_BRIDGE_ARGS_KEY + value:bridgeParametersJSON + message:nil + underlyingError:error]; + } + return nil; + } + NSString *responseActionID = bridgeParameters[FBSDK_BRIDGE_API_PROTOCOL_WEB_V1_ACTION_ID_KEY]; + responseActionID = [FBSDKTypeUtility stringValue:responseActionID]; + if (![responseActionID isEqualToString:actionID]) { + return nil; + } + NSMutableDictionary *resultParameters = [queryParameters mutableCopy]; + [resultParameters removeObjectForKey:FBSDK_BRIDGE_API_PROTOCOL_WEB_V1_BRIDGE_ARGS_KEY]; + resultParameters[@"didComplete"] = @YES; + return resultParameters; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h new file mode 100644 index 0000000..3d7e340 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKBridgeAPIProtocol.h" + +@interface FBSDKBridgeAPIProtocolWebV2 : NSObject + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m new file mode 100644 index 0000000..414543d --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m @@ -0,0 +1,130 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKBridgeAPIProtocolWebV2.h" + +#import "FBSDKBridgeAPIProtocolNativeV1.h" +#import "FBSDKDialogConfiguration.h" +#import "FBSDKError.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKServerConfiguration.h" +#import "FBSDKServerConfigurationManager.h" +#import "FBSDKUtility.h" + +@implementation FBSDKBridgeAPIProtocolWebV2 +{ + FBSDKBridgeAPIProtocolNativeV1 *_nativeProtocol; +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + if ((self = [super init])) { + _nativeProtocol = [[FBSDKBridgeAPIProtocolNativeV1 alloc] initWithAppScheme:nil + pasteboard:nil + dataLengthThreshold:0 + includeAppIcon:NO]; + } + return self; +} + +#pragma mark - FBSDKBridgeAPIProtocol + +- (NSURL *)_redirectURLWithActionID:(NSString *)actionID methodName:(NSString *)methodName error:(NSError **)errorRef +{ + NSDictionary *queryParameters = nil; + if (actionID) { + NSDictionary *bridgeArgs = @{ FBSDKBridgeAPIProtocolNativeV1BridgeParameterInputKeys.actionID: actionID }; + NSString *bridgeArgsString = [FBSDKInternalUtility JSONStringForObject:bridgeArgs + error:NULL + invalidObjectHandler:NULL]; + queryParameters = @{ FBSDKBridgeAPIProtocolNativeV1InputKeys.bridgeArgs: bridgeArgsString }; + } + return [FBSDKInternalUtility appURLWithHost:@"bridge" path:methodName queryParameters:queryParameters error:errorRef]; +} + +- (NSURL *)_requestURLForDialogConfiguration:(FBSDKDialogConfiguration *)dialogConfiguration error:(NSError **)errorRef +{ + NSURL *requestURL = dialogConfiguration.URL; + if (!requestURL.scheme) { + requestURL = [FBSDKInternalUtility facebookURLWithHostPrefix:@"m" + path:requestURL.path + queryParameters:nil + defaultVersion:@"" + error:errorRef]; + } + return requestURL; +} + +- (NSURL *)requestURLWithActionID:(NSString *)actionID + scheme:(NSString *)scheme + methodName:(NSString *)methodName + methodVersion:(NSString *)methodVersion + parameters:(NSDictionary *)parameters + error:(NSError *__autoreleasing *)errorRef +{ + FBSDKServerConfiguration *serverConfiguration = [FBSDKServerConfigurationManager cachedServerConfiguration]; + FBSDKDialogConfiguration *dialogConfiguration = [serverConfiguration dialogConfigurationForDialogName:methodName]; + if (!dialogConfiguration) { + if (errorRef != NULL) { + *errorRef = [FBSDKError errorWithCode:FBSDKDialogUnavailableErrorCode message:nil]; + } + return nil; + } + + NSURL *requestURL = [_nativeProtocol requestURLWithActionID:actionID + scheme:scheme + methodName:methodName + methodVersion:methodVersion + parameters:parameters error:errorRef]; + if (!requestURL) { + return nil; + } + + NSMutableDictionary *queryParameters = [[FBSDKUtility dictionaryWithQueryString:requestURL.query] mutableCopy]; + queryParameters[@"ios_bundle_id"] = [[NSBundle mainBundle] bundleIdentifier]; + NSURL *redirectURL = [self _redirectURLWithActionID:nil methodName:methodName error:errorRef]; + if (!redirectURL) { + return nil; + } + queryParameters[@"redirect_url"] = redirectURL; + + requestURL = [self _requestURLForDialogConfiguration:dialogConfiguration error:errorRef]; + if (!requestURL) { + return nil; + } + return [FBSDKInternalUtility URLWithScheme:requestURL.scheme + host:requestURL.host + path:requestURL.path + queryParameters:queryParameters + error:errorRef]; +} + +- (NSDictionary *)responseParametersForActionID:(NSString *)actionID + queryParameters:(NSDictionary *)queryParameters + cancelled:(BOOL *)cancelledRef + error:(NSError *__autoreleasing *)errorRef +{ + return [_nativeProtocol responseParametersForActionID:actionID + queryParameters:queryParameters + cancelled:cancelledRef + error:errorRef]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h new file mode 100644 index 0000000..6fd6170 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h @@ -0,0 +1,63 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@interface FBSDKCrypto : NSObject + +/*! + @abstract Generate numOfBytes random data. + @discussion This calls the system-provided function SecRandomCopyBytes, based on /dev/random. + */ ++ (NSData *)randomBytes:(NSUInteger)numOfBytes; + +/** + * Generate numOfBytes random data, base64-encoded. + * This calls the system-provided function SecRandomCopyBytes, based on /dev/random. + */ ++ (NSString *)randomString:(NSUInteger)numOfBytes; + +/*! + @abstract Generate a fresh master key using SecRandomCopyBytes, the result is encoded in base64/. + */ ++ (NSString *)makeMasterKey; + +/*! + @abstract Initialize with a base64-encoded master key. + @discussion This key and the current derivation function will be used to generate the encryption key and the mac key. + */ +- (instancetype)initWithMasterKey:(NSString *)masterKey; + +/*! + @abstract Initialize with base64-encoded encryption key and mac key. + */ +- (instancetype)initWithEncryptionKey:(NSString *)encryptionKey macKey:(NSString *)macKey; + +/*! + @abstract Encrypt plainText and return the base64 encoded result. + @discussion MAC computation involves additionalDataToSign. + */ +- (NSString *)encrypt:(NSData *)plainText additionalDataToSign:(NSData *)additionalDataToSign; + +/*! + @abstract Decrypt base64EncodedCipherText. + @discussion MAC computation involves additionalSignedData. + */ +- (NSData *)decrypt:(NSString *)base64EncodedCipherText additionalSignedData:(NSData *)additionalSignedData; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m new file mode 100644 index 0000000..9c2a66a --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m @@ -0,0 +1,287 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKCrypto.h" + +#import +#import +#import + +#import "FBSDKBase64.h" +#import "FBSDKDynamicFrameworkLoader.h" + +static const uint8_t kFBSDK_CRYPTO_CURRENT_VERSION = 1; +static const uint8_t kFBSDK_CRYPTO_CURRENT_MASTER_KEY_LENGTH = 16; + +FBSDK_STATIC_INLINE void FBSDKCryptoWriteIntBigEndian(uint8_t *buffer, uint32_t value) +{ + buffer[3] = (uint8_t)(value & 0xff); + buffer[2] = (uint8_t)((value >> 8) & 0xff); + buffer[1] = (uint8_t)((value >> 16) & 0xff); + buffer[0] = (uint8_t)((value >> 24) & 0xff); +} + +FBSDK_STATIC_INLINE void FBSDKCryptoBlankData(NSData *data) +{ + if (!data) { + return; + } + bzero((void *) [data bytes], [data length]); +} + +// Note: the following simple derivation function is NOT suitable for passwords or weak keys +FBSDK_STATIC_INLINE NSData *FBSDKCryptoMakeSubKey(uint8_t *key, size_t len, uint32_t idx) +{ + if (!key || len < 10) { + return nil; + } + + size_t macBufferLength = 4; + uint8_t macBuffer[4]; + FBSDKCryptoWriteIntBigEndian(macBuffer, idx); + + uint8_t *result = malloc(CC_SHA256_DIGEST_LENGTH); + if (!result) { + return nil; + } + + CCHmac(kCCHmacAlgSHA256, key, len, macBuffer, macBufferLength, result); + + return [NSData dataWithBytesNoCopy:result length:CC_SHA256_DIGEST_LENGTH]; +} + +@implementation FBSDKCrypto +{ + NSData *_encryptionKeyData; + NSData *_macKeyData; +} + +#pragma mark - Class Methods + ++ (NSString *)makeMasterKey +{ + NSData *masterKeyData = [FBSDKCrypto randomBytes:kFBSDK_CRYPTO_CURRENT_MASTER_KEY_LENGTH + 1]; + + // force the first byte to be the crypto version + uint8_t *first = (uint8_t *) [masterKeyData bytes]; + *first = kFBSDK_CRYPTO_CURRENT_VERSION; + + NSString *masterKey = [FBSDKBase64 encodeData:masterKeyData]; + FBSDKCryptoBlankData(masterKeyData); + return masterKey; +} + ++ (NSData *)randomBytes:(NSUInteger)numOfBytes +{ + uint8_t *buffer = malloc(numOfBytes); + int result = fbsdkdfl_SecRandomCopyBytes([FBSDKDynamicFrameworkLoader loadkSecRandomDefault], numOfBytes, buffer); + if (result != 0) { + free(buffer); + return nil; + } + return [NSData dataWithBytesNoCopy:buffer length:numOfBytes]; +} + ++ (NSString *)randomString:(NSUInteger)numOfBytes +{ + NSData *randomStringData = [FBSDKCrypto randomBytes:numOfBytes]; + NSString *randomString = [FBSDKBase64 encodeData:randomStringData]; + FBSDKCryptoBlankData(randomStringData); + return randomString; +} + +#pragma mark - Object Lifecycle + +- (instancetype)initWithMasterKey:(NSString *)masterKey +{ + if ((self = [super init])) { + NSData *masterKeyData = [FBSDKBase64 decodeAsData:masterKey]; + NSUInteger len = [masterKeyData length]; + uint8_t *first = (uint8_t *) [masterKeyData bytes]; + + if (len == 0 || first == nil || *first != kFBSDK_CRYPTO_CURRENT_VERSION) { + // only one version supported at the moment + return nil; + } + + _encryptionKeyData = FBSDKCryptoMakeSubKey(first+1, len-1, 1); + _macKeyData = FBSDKCryptoMakeSubKey(first+1, len-1, 2); + FBSDKCryptoBlankData(masterKeyData); + return self; + } else { + return nil; + } +} + +- (instancetype)initWithEncryptionKey:(NSString *)encryptionKey macKey:(NSString *)macKey +{ + if ((self = [super init])) { + _macKeyData = [FBSDKBase64 decodeAsData:macKey]; + _encryptionKeyData = [FBSDKBase64 decodeAsData:encryptionKey]; + } + return self; +} + +- (void)dealloc +{ + FBSDKCryptoBlankData(_encryptionKeyData); + FBSDKCryptoBlankData(_macKeyData); +} + +#pragma mark - Public Methods + +/** + * return base64_encode([VERSION 1 byte] + [MAC 32 bytes] + [IV 16 bytes] + [AES256(Padded Data, multiples of 16)] + */ +- (NSString *)encrypt:(NSData *)plainText additionalDataToSign:(NSData *)additionalDataToSign +{ + NSAssert(plainText.length <= INT_MAX, @""); + int plainTextLength = (int)plainText.length; + + uint8_t numPaddingBytes = kCCBlockSizeAES128 - (plainText.length % kCCBlockSizeAES128); // Pad 1 .. 16 bytes + int cipherDataLength = plainTextLength + numPaddingBytes; + size_t bufferSize = 1 + CC_SHA256_DIGEST_LENGTH + kCCBlockSizeAES128 + cipherDataLength; + int offsetMAC = 1; + int offsetIV = offsetMAC + CC_SHA256_DIGEST_LENGTH; + int offsetCipherData = offsetIV + kCCBlockSizeAES128; + + uint8_t *buffer = calloc(bufferSize, sizeof(uint8_t)); + buffer[0] = kFBSDK_CRYPTO_CURRENT_VERSION; // First byte is the version number + NSData *IV = [[self class] randomBytes:kCCBlockSizeAES128]; + memcpy(buffer + offsetIV, IV.bytes, IV.length); + + memcpy(buffer + offsetCipherData, plainText.bytes, plainTextLength); // Copy input in + fbsdkdfl_SecRandomCopyBytes([FBSDKDynamicFrameworkLoader loadkSecRandomDefault], + numPaddingBytes, + buffer + offsetCipherData + plainTextLength); // Random pad + buffer[offsetCipherData + cipherDataLength - 1] = numPaddingBytes; // Record the number of padded bytes at the end + + size_t numOutputBytes = 0; + CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, 0, + _encryptionKeyData.bytes, kCCKeySizeAES256, + IV.bytes, + buffer + offsetCipherData, cipherDataLength, + buffer + offsetCipherData, cipherDataLength, + &numOutputBytes); + + NSData *mac = [self _macForIV:IV + cipherData:[NSData dataWithBytesNoCopy:buffer + offsetCipherData length:cipherDataLength freeWhenDone:NO] + additionalDataToSign:additionalDataToSign]; + memcpy(buffer + offsetMAC, mac.bytes, CC_SHA256_DIGEST_LENGTH); + + if (cryptStatus == kCCSuccess) { + return [FBSDKBase64 encodeData:[NSData dataWithBytesNoCopy:buffer length:bufferSize]]; + } + free(buffer); + return nil; +} + +- (NSData *)decrypt:(NSString *)base64EncodedCipherText additionalSignedData:(NSData *)additionalSignedData +{ + NSData *cipherText = [FBSDKBase64 decodeAsData:base64EncodedCipherText]; + NSAssert(cipherText.length <= INT_MAX, @""); + int cipherTextLength = (int)cipherText.length; + + if (!cipherText || cipherTextLength < 1 + CC_SHA256_DIGEST_LENGTH + kCCBlockSizeAES128) { + return nil; + } + int cipherDataLength = cipherTextLength - (1 + CC_SHA256_DIGEST_LENGTH + kCCBlockSizeAES128); + if (cipherDataLength % kCCBlockSizeAES128 != 0) { + return nil; + } + uint8_t *buffer = (uint8_t *)cipherText.bytes; + + int offsetMAC = 1; + int offsetIV = offsetMAC + CC_SHA256_DIGEST_LENGTH; + int offsetCipherData = offsetIV + kCCBlockSizeAES128; + + if (buffer[0] != kFBSDK_CRYPTO_CURRENT_VERSION) { + return nil; // Version does not match + } + + NSData *IV = [NSData dataWithBytesNoCopy:buffer + offsetIV length:kCCBlockSizeAES128 freeWhenDone:NO]; + NSData *cipherData = [NSData dataWithBytesNoCopy:buffer + offsetCipherData length:cipherDataLength freeWhenDone:NO]; + NSData *mac = [self _macForIV:IV cipherData:cipherData additionalDataToSign:additionalSignedData]; + NSData *macFromStream = [NSData dataWithBytesNoCopy:buffer + offsetMAC length:CC_SHA256_DIGEST_LENGTH freeWhenDone:NO]; + if (![mac isEqualToData:macFromStream]) { + return nil; // MAC does not match + } + + + uint8_t *outputBuffer = malloc(cipherDataLength); + size_t numOutputBytes = 0; + CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, 0, + _encryptionKeyData.bytes, kCCKeySizeAES256, + IV.bytes, + buffer + offsetCipherData, cipherDataLength, + outputBuffer, cipherDataLength, + &numOutputBytes); + if (cryptStatus == kCCSuccess) { + int numPaddingBytes = outputBuffer[cipherDataLength - 1]; + if (!(numPaddingBytes >= 1 && numPaddingBytes <= kCCBlockSizeAES128)) { + numPaddingBytes = 0; + } + return [NSData dataWithBytesNoCopy:outputBuffer length:cipherDataLength - numPaddingBytes]; + } + free(outputBuffer); + return nil; +} + +#pragma mark - Helper Methods + +/** + * + * [IV 16 bytes] . [length of ciphertext 4 bytes] . [ciphertext] . [length of additionalDataToSign, 4 bytes] . [additionalDataToSign]) + * length is written in big-endian + */ +- (NSData *)_macForIV:(NSData *)IV cipherData:(NSData *)cipherData additionalDataToSign:(NSData *)additionalDataToSign +{ + NSAssert(cipherData.length <= INT_MAX, @""); + int cipherDataLength = (int)cipherData.length; + + NSAssert(additionalDataToSign.length <= INT_MAX, @""); + int additionalDataToSignLength = (int)additionalDataToSign.length; + + size_t macBufferLength = kCCBlockSizeAES128 + 4 + cipherData.length + 4 + additionalDataToSign.length; + uint8_t *macBuffer = malloc(macBufferLength); + int offsetIV = 0; + int offsetCipherTextLength = offsetIV + kCCBlockSizeAES128; + int offsetCipherText = offsetCipherTextLength + 4; + + int offsetAdditionalDataLength = offsetCipherText + cipherDataLength; + int offsetAdditionalData = offsetAdditionalDataLength + 4; + + // [IV 16 bytes] + memcpy(macBuffer + offsetIV, IV.bytes, kCCBlockSizeAES128); + // [length of ciphertext 4 bytes] + FBSDKCryptoWriteIntBigEndian(macBuffer + offsetCipherTextLength, cipherDataLength); + // [ciphertext] + memcpy(macBuffer + offsetCipherText, cipherData.bytes, cipherDataLength); + // [length of additionalDataToSign, 4 bytes] + FBSDKCryptoWriteIntBigEndian(macBuffer + offsetAdditionalDataLength, additionalDataToSignLength); + memcpy(macBuffer + offsetAdditionalData, additionalDataToSign.bytes, additionalDataToSignLength); + + uint8_t *result = malloc(CC_SHA256_DIGEST_LENGTH); + + CCHmac(kCCHmacAlgSHA256, _macKeyData.bytes, _macKeyData.length, macBuffer, macBufferLength, result); + free(macBuffer); + + return [NSData dataWithBytesNoCopy:result length:CC_SHA256_DIGEST_LENGTH]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h new file mode 100644 index 0000000..40715b2 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h @@ -0,0 +1,34 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +@class FBSDKErrorRecoveryConfiguration; + +@interface FBSDKErrorRecoveryAttempter : NSObject + +// can return nil if configuration is not supported. ++ (instancetype)recoveryAttempterFromConfiguration:(FBSDKErrorRecoveryConfiguration *)configuration; + +@end + +@interface FBSDKErrorRecoveryAttempter (Protected) +- (void)completeRecovery:(BOOL)didRecover delegate:(id)delegate didRecoverSelector:(SEL)didRecoverSelector contextInfo:(void *)contextInfo; +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m new file mode 100644 index 0000000..78b5e87 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m @@ -0,0 +1,56 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKErrorRecoveryAttempter.h" + +#import "_FBSDKTemporaryErrorRecoveryAttempter.h" +#import "FBSDKErrorRecoveryConfiguration.h" + +@implementation FBSDKErrorRecoveryAttempter + ++ (instancetype)recoveryAttempterFromConfiguration:(FBSDKErrorRecoveryConfiguration *)configuration +{ + if (configuration.errorCategory == FBSDKGraphRequestErrorCategoryTransient) { + return [[_FBSDKTemporaryErrorRecoveryAttempter alloc] init]; + } else if (configuration.errorCategory == FBSDKGraphRequestErrorCategoryOther) { + return nil; + } + if ([configuration.recoveryActionName isEqualToString:@"login"]) { + Class loginRecoveryAttmpterClass = NSClassFromString(@"_FBSDKLoginRecoveryAttempter"); + if (loginRecoveryAttmpterClass) { + return [[loginRecoveryAttmpterClass alloc] init]; + } + } + return nil; +} + +- (void)attemptRecoveryFromError:(NSError *)error optionIndex:(NSUInteger)recoveryOptionIndex delegate:(id)delegate didRecoverSelector:(SEL)didRecoverSelector contextInfo:(void *)contextInfo +{ + // should be implemented by subclasses. +} +@end + +@implementation FBSDKErrorRecoveryAttempter(Protected) + +- (void)completeRecovery:(BOOL)didRecover delegate:(id)delegate didRecoverSelector:(SEL)didRecoverSelector contextInfo:(void *)contextInfo +{ + void (*callback)(id, SEL, BOOL, void *) = (void *)[delegate methodForSelector:didRecoverSelector]; + (*callback)(delegate, didRecoverSelector, didRecover, contextInfo); +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h new file mode 100644 index 0000000..21ad040 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h @@ -0,0 +1,23 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKErrorRecoveryAttempter.h" + +@interface _FBSDKTemporaryErrorRecoveryAttempter : FBSDKErrorRecoveryAttempter + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m new file mode 100644 index 0000000..bb555aa --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m @@ -0,0 +1,28 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "_FBSDKTemporaryErrorRecoveryAttempter.h" + +@implementation _FBSDKTemporaryErrorRecoveryAttempter + +- (void)attemptRecoveryFromError:(NSError *)error optionIndex:(NSUInteger)recoveryOptionIndex delegate:(id)delegate didRecoverSelector:(SEL)didRecoverSelector contextInfo:(void *)contextInfo +{ + [super completeRecovery:YES delegate:delegate didRecoverSelector:didRecoverSelector contextInfo:contextInfo]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h new file mode 100644 index 0000000..479d79a --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h @@ -0,0 +1,51 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import +#import + +#import "BridgeAPI/FBSDKBridgeAPIRequest.h" +#import "BridgeAPI/FBSDKBridgeAPIResponse.h" +#import "BridgeAPI/FBSDKURLOpening.h" +#import "FBSDKContainerViewController.h" + +FBSDK_EXTERN NSString *const FBSDKApplicationDidBecomeActiveNotification; + +@class FBSDKApplicationCall; + +typedef void(^FBSDKBridgeAPICallbackBlock)(FBSDKBridgeAPIResponse *response); + +@interface FBSDKApplicationDelegate () + +- (void)openBridgeAPIRequest:(FBSDKBridgeAPIRequest *)request + useSafariViewController:(BOOL)useSafariViewController + fromViewController:(UIViewController *)fromViewController + completionBlock:(FBSDKBridgeAPICallbackBlock)completionBlock; + +- (void)openURLWithSafariViewController:(NSURL *)url + sender:(id)sender + fromViewController:(UIViewController *)fromViewController + handler:(void(^)(BOOL))handler; + +- (void)openURL:(NSURL *)url sender:(id)sender handler:(void(^)(BOOL))handler; + +@property (nonatomic, readonly, getter=isActive) BOOL active; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h new file mode 100644 index 0000000..2c05575 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h @@ -0,0 +1,36 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@interface FBSDKAudioResourceLoader : NSObject + ++ (instancetype)sharedLoader; + +- (BOOL)loadSound:(NSError **)error; +- (void)playSound; + +@end + +@interface FBSDKAudioResourceLoader (Subclass) + ++ (NSString *)name; ++ (NSUInteger)version; ++ (NSData *)data; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m new file mode 100644 index 0000000..c7efb3f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m @@ -0,0 +1,151 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAudioResourceLoader.h" + +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKLogger.h" +#import "FBSDKSettings.h" + +@implementation FBSDKAudioResourceLoader +{ + NSFileManager *_fileManager; + NSURL *_fileURL; + SystemSoundID _systemSoundID; +} + +#pragma mark - Class Methods + ++ (instancetype)sharedLoader +{ + static NSMutableDictionary *_loaderCache = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _loaderCache = [[NSMutableDictionary alloc] init]; + }); + + NSString *name = [self name]; + FBSDKAudioResourceLoader *loader; + @synchronized(_loaderCache) { + loader = _loaderCache[name]; + if (!loader) { + loader = [[self alloc] init]; + NSError *error = nil; + if ([loader loadSound:&error]) { + _loaderCache[name] = loader; + } else { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors + formatString:@"%@ error: %@", self, error]; + } + } + } + + return loader; +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + if ((self = [super init])) { + _fileManager = [[NSFileManager alloc] init]; + } + return self; +} + +- (void)dealloc +{ + fbsdkdfl_AudioServicesDisposeSystemSoundID(_systemSoundID); +} + +#pragma mark - Public API + +- (BOOL)loadSound:(NSError **)errorRef +{ + NSURL *fileURL = [self _fileURL:errorRef]; + + if (![_fileManager fileExistsAtPath:[fileURL path]]) { + NSData *data = [[self class] data]; + if (![data writeToURL:fileURL options:NSDataWritingAtomic error:errorRef]) { + return NO; + } + } + + OSStatus status = fbsdkdfl_AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileURL, &_systemSoundID); + return (status == kAudioServicesNoError); +} + +- (void)playSound +{ + if ((_systemSoundID == 0) && ![self loadSound:NULL]) { + return; + } + fbsdkdfl_AudioServicesPlaySystemSound(_systemSoundID); +} + +#pragma mark - Helper Methods + +- (NSURL *)_fileURL:(NSError **)errorRef +{ + if (_fileURL) { + return _fileURL; + } + + NSURL *baseURL = [_fileManager URLForDirectory:NSCachesDirectory + inDomain:NSUserDomainMask + appropriateForURL:nil + create:YES + error:errorRef]; + if (!baseURL) { + return nil; + } + + NSURL *directoryURL = [baseURL URLByAppendingPathComponent:@"fb_audio" isDirectory:YES]; + NSURL *versionURL = [directoryURL URLByAppendingPathComponent:[NSString stringWithFormat:@"%lu", (unsigned long)[[self class] version]] + isDirectory:YES]; + if (![_fileManager createDirectoryAtURL:versionURL withIntermediateDirectories:YES attributes:nil error:errorRef]) { + return nil; + } + + _fileURL = [[versionURL URLByAppendingPathComponent:[[self class] name]] copy]; + + return _fileURL; +} + +@end + +@implementation FBSDKAudioResourceLoader (Subclass) + +#pragma mark - Subclass Methods + ++ (NSString *)name +{ + return nil; +} + ++ (NSUInteger)version +{ + return 0; +} + ++ (NSData *)data +{ + return nil; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h new file mode 100644 index 0000000..5feed4f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h @@ -0,0 +1,35 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@class FBSDKContainerViewController; + +@protocol FBSDKContainerViewControllerDelegate + +- (void)viewControllerDidDisappear:(FBSDKContainerViewController *)viewController animated:(BOOL)animated; + +@end + +@interface FBSDKContainerViewController : UIViewController + +@property (nonatomic, weak) id delegate; + +- (void)displayChildController:(UIViewController *)childController; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m new file mode 100644 index 0000000..e1c2e6d --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m @@ -0,0 +1,78 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKContainerViewController.h" + +@implementation FBSDKContainerViewController + +- (void)viewDidDisappear:(BOOL)animated +{ + [super viewDidDisappear:animated]; + if ([self.delegate respondsToSelector:@selector(viewControllerDidDisappear:animated:)]) { + [self.delegate viewControllerDidDisappear:self animated:animated]; + } +} + +- (void)displayChildController:(UIViewController *)childController +{ + [self addChildViewController:childController]; + UIView *view = self.view; + UIView *childView = childController.view; + childView.translatesAutoresizingMaskIntoConstraints = NO; + childView.frame = view.frame; + [view addSubview:childView]; + + [view addConstraints: + @[ + [NSLayoutConstraint constraintWithItem:childView + attribute:NSLayoutAttributeTop + relatedBy:NSLayoutRelationEqual + toItem:view + attribute:NSLayoutAttributeTop + multiplier:1.0 + constant:0.0], + + [NSLayoutConstraint constraintWithItem:childView + attribute:NSLayoutAttributeBottom + relatedBy:NSLayoutRelationEqual + toItem:view + attribute:NSLayoutAttributeBottom + multiplier:1.0 + constant:0.0], + + [NSLayoutConstraint constraintWithItem:childView + attribute:NSLayoutAttributeLeading + relatedBy:NSLayoutRelationEqual + toItem:view + attribute:NSLayoutAttributeLeading + multiplier:1.0 + constant:0.0], + + [NSLayoutConstraint constraintWithItem:childView + attribute:NSLayoutAttributeTrailing + relatedBy:NSLayoutRelationEqual + toItem:view + attribute:NSLayoutAttributeTrailing + multiplier:1.0 + constant:0.0], + ]]; + + [childController didMoveToParentViewController:self]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h new file mode 100644 index 0000000..1d1ce6b --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h @@ -0,0 +1,68 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import "AppEvents/FBSDKAppEvents+Internal.h" +#import "AppEvents/FBSDKAppEventsState.h" +#import "AppEvents/FBSDKAppEventsStateManager.h" +#import "AppEvents/FBSDKAppEventsUtility.h" +#import "AppEvents/FBSDKTimeSpentData.h" +#import "Base64/FBSDKBase64.h" +#import "BridgeAPI/FBSDKBridgeAPIProtocol.h" +#import "BridgeAPI/FBSDKBridgeAPIProtocolType.h" +#import "BridgeAPI/FBSDKBridgeAPIRequest.h" +#import "BridgeAPI/FBSDKBridgeAPIResponse.h" +#import "BridgeAPI/FBSDKURLOpening.h" +#import "Cryptography/FBSDKCrypto.h" +#import "ErrorRecovery/FBSDKErrorRecoveryAttempter.h" +#import "FBSDKApplicationDelegate+Internal.h" +#import "FBSDKAudioResourceLoader.h" +#import "FBSDKContainerViewController.h" +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKError.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKLogger.h" +#import "FBSDKMath.h" +#import "FBSDKMonotonicTime.h" +#import "FBSDKSystemAccountStoreAdapter.h" +#import "FBSDKTriStateBOOL.h" +#import "FBSDKTypeUtility.h" +#import "Network/FBSDKGraphRequest+Internal.h" +#import "Network/FBSDKGraphRequestConnection+Internal.h" +#import "Network/FBSDKGraphRequestMetadata.h" +#import "ServerConfiguration/FBSDKDialogConfiguration.h" +#import "ServerConfiguration/FBSDKServerConfiguration+Internal.h" +#import "ServerConfiguration/FBSDKServerConfiguration.h" +#import "ServerConfiguration/FBSDKServerConfigurationManager+Internal.h" +#import "ServerConfiguration/FBSDKServerConfigurationManager.h" +#import "TokenCaching/FBSDKAccessTokenCache.h" +#import "TokenCaching/FBSDKAccessTokenCaching.h" +#import "TokenCaching/FBSDKKeychainStore.h" +#import "TokenCaching/FBSDKKeychainStoreViaBundleID.h" +#import "UI/FBSDKButton+Subclass.h" +#import "UI/FBSDKCloseIcon.h" +#import "UI/FBSDKColor.h" +#import "UI/FBSDKIcon.h" +#import "UI/FBSDKLogo.h" +#import "UI/FBSDKMaleSilhouetteIcon.h" +#import "UI/FBSDKUIUtility.h" +#import "UI/FBSDKViewImpressionTracker.h" +#import "WebDialog/FBSDKWebDialog.h" diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h new file mode 100644 index 0000000..196d626 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h @@ -0,0 +1,236 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import +#import +#import + +#import + +/*! + @class FBSDKDynamicFrameworkLoader + + @abstract + This class provides a way to load constants and methods from Apple Frameworks in a dynamic + fashion. It allows the SDK to be just dragged into a project without having to specify additional + frameworks to link against. It is an internal class and not to be used by 3rd party developers. + + As new types are needed, they should be added and strongly typed. + */ +@interface FBSDKDynamicFrameworkLoader : NSObject + +#pragma mark - Security Constants + +/*! + @abstract + Load the kSecRandomDefault value from the Security Framework + + @return The kSecRandomDefault value or nil. + */ ++ (SecRandomRef)loadkSecRandomDefault; + +/*! + @abstract + Load the kSecAttrAccessible value from the Security Framework + + @return The kSecAttrAccessible value or nil. + */ ++ (CFTypeRef)loadkSecAttrAccessible; + +/*! + @abstract + Load the kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly value from the Security Framework + + @return The kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly value or nil. + */ ++ (CFTypeRef)loadkSecAttrAccessibleAfterFirstUnlockThisDeviceOnly; + +/*! + @abstract + Load the kSecAttrAccount value from the Security Framework + + @return The kSecAttrAccount value or nil. + */ ++ (CFTypeRef)loadkSecAttrAccount; + +/*! + @abstract + Load the kSecAttrService value from the Security Framework + + @return The kSecAttrService value or nil. + */ ++ (CFTypeRef)loadkSecAttrService; + +/*! + @abstract + Load the kSecAttrGeneric value from the Security Framework + + @return The kSecAttrGeneric value or nil. + */ ++ (CFTypeRef)loadkSecAttrGeneric; + +/*! + @abstract + Load the kSecValueData value from the Security Framework + + @return The kSecValueData value or nil. + */ ++ (CFTypeRef)loadkSecValueData; + +/*! + @abstract + Load the kSecClassGenericPassword value from the Security Framework + + @return The kSecClassGenericPassword value or nil. + */ ++ (CFTypeRef)loadkSecClassGenericPassword; + +/*! + @abstract + Load the kSecAttrAccessGroup value from the Security Framework + + @return The kSecAttrAccessGroup value or nil. + */ ++ (CFTypeRef)loadkSecAttrAccessGroup; + +/*! + @abstract + Load the kSecMatchLimitOne value from the Security Framework + + @return The kSecMatchLimitOne value or nil. + */ ++ (CFTypeRef)loadkSecMatchLimitOne; + +/*! + @abstract + Load the kSecMatchLimit value from the Security Framework + + @return The kSecMatchLimit value or nil. + */ ++ (CFTypeRef)loadkSecMatchLimit; + +/*! + @abstract + Load the kSecReturnData value from the Security Framework + + @return The kSecReturnData value or nil. + */ ++ (CFTypeRef)loadkSecReturnData; + +/*! + @abstract + Load the kSecClass value from the Security Framework + + @return The kSecClass value or nil. + */ ++ (CFTypeRef)loadkSecClass; + +@end + +#pragma mark - Security APIs + +// These are local wrappers around the corresponding methods in Security/SecRandom.h +FBSDK_EXTERN int fbsdkdfl_SecRandomCopyBytes(SecRandomRef rnd, size_t count, uint8_t *bytes); + +// These are local wrappers around Keychain API +FBSDK_EXTERN OSStatus fbsdkdfl_SecItemUpdate(CFDictionaryRef query, CFDictionaryRef attributesToUpdate); +FBSDK_EXTERN OSStatus fbsdkdfl_SecItemAdd(CFDictionaryRef attributes, CFTypeRef *result); +FBSDK_EXTERN OSStatus fbsdkdfl_SecItemCopyMatching(CFDictionaryRef query, CFTypeRef *result); +FBSDK_EXTERN OSStatus fbsdkdfl_SecItemDelete(CFDictionaryRef query); + +#pragma mark - sqlite3 APIs + +// These are local wrappers around the corresponding sqlite3 method from /usr/include/sqlite3.h +FBSDK_EXTERN SQLITE_API const char *fbsdkdfl_sqlite3_errmsg(sqlite3 *db); +FBSDK_EXTERN SQLITE_API int fbsdkdfl_sqlite3_prepare_v2(sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **ppStmt, const char **pzTail); +FBSDK_EXTERN SQLITE_API int fbsdkdfl_sqlite3_reset(sqlite3_stmt *pStmt); +FBSDK_EXTERN SQLITE_API int fbsdkdfl_sqlite3_finalize(sqlite3_stmt *pStmt); +FBSDK_EXTERN SQLITE_API int fbsdkdfl_sqlite3_open_v2(const char *filename, sqlite3 **ppDb, int flags, const char *zVfs); +FBSDK_EXTERN SQLITE_API int fbsdkdfl_sqlite3_exec(sqlite3 *db, const char *sql, int (*callback)(void *, int, char **, char **), void *arg, char **errmsg); +FBSDK_EXTERN SQLITE_API int fbsdkdfl_sqlite3_close(sqlite3 *db); +FBSDK_EXTERN SQLITE_API int fbsdkdfl_sqlite3_bind_double(sqlite3_stmt *stmt, int index, double value); +FBSDK_EXTERN SQLITE_API int fbsdkdfl_sqlite3_bind_int(sqlite3_stmt *stmt, int index, int value); +FBSDK_EXTERN SQLITE_API int fbsdkdfl_sqlite3_bind_text(sqlite3_stmt *stmt, int index, const char *value, int n, void(*callback)(void *)); +FBSDK_EXTERN SQLITE_API int fbsdkdfl_sqlite3_step(sqlite3_stmt *stmt); +FBSDK_EXTERN SQLITE_API double fbsdkdfl_sqlite3_column_double(sqlite3_stmt *stmt, int iCol); +FBSDK_EXTERN SQLITE_API int fbsdkdfl_sqlite3_column_int(sqlite3_stmt *stmt, int iCol); +FBSDK_EXTERN SQLITE_API const unsigned char *fbsdkdfl_sqlite3_column_text(sqlite3_stmt *stmt, int iCol); + +#pragma mark - Social Constants + +FBSDK_EXTERN NSString *fbsdkdfl_SLServiceTypeFacebook(void); + +#pragma mark - Social Classes + +FBSDK_EXTERN Class fbsdkdfl_SLComposeViewControllerClass(void); + +#pragma mark - QuartzCore Classes + +FBSDK_EXTERN Class fbsdkdfl_CATransactionClass(void); + +#pragma mark - QuartzCore APIs + +// These are local wrappers around the corresponding transform methods from QuartzCore.framework/CATransform3D.h +FBSDK_EXTERN CATransform3D fbsdkdfl_CATransform3DMakeScale (CGFloat sx, CGFloat sy, CGFloat sz); +FBSDK_EXTERN CATransform3D fbsdkdfl_CATransform3DMakeTranslation (CGFloat tx, CGFloat ty, CGFloat tz); +FBSDK_EXTERN CATransform3D fbsdkdfl_CATransform3DConcat (CATransform3D a, CATransform3D b); + +FBSDK_EXTERN const CATransform3D fbsdkdfl_CATransform3DIdentity; + +#pragma mark - AudioToolbox APIs + +// These are local wrappers around the corresponding methods in AudioToolbox/AudioToolbox.h +FBSDK_EXTERN OSStatus fbsdkdfl_AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystemSoundID); +FBSDK_EXTERN OSStatus fbsdkdfl_AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID); +FBSDK_EXTERN void fbsdkdfl_AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID); + +#pragma mark - AdSupport Classes + +FBSDK_EXTERN Class fbsdkdfl_ASIdentifierManagerClass(void); + +#pragma mark - SafariServices Classes + +FBSDK_EXTERN Class fbsdkdfl_SFSafariViewControllerClass(void); + +#pragma mark - Accounts Constants + +FBSDK_EXTERN NSString *fbsdkdfl_ACFacebookAppIdKey(void); +FBSDK_EXTERN NSString *fbsdkdfl_ACFacebookAudienceEveryone(void); +FBSDK_EXTERN NSString *fbsdkdfl_ACFacebookAudienceFriends(void); +FBSDK_EXTERN NSString *fbsdkdfl_ACFacebookAudienceKey(void); +FBSDK_EXTERN NSString *fbsdkdfl_ACFacebookAudienceOnlyMe(void); +FBSDK_EXTERN NSString *fbsdkdfl_ACFacebookPermissionsKey(void); + +#pragma mark - Accounts Classes + +FBSDK_EXTERN Class fbsdkdfl_ACAccountStoreClass(void); + +#pragma mark - StoreKit classes + +FBSDK_EXTERN Class fbsdkdfl_SKPaymentQueueClass(void); +FBSDK_EXTERN Class fbsdkdfl_SKProductsRequestClass(void); + +#pragma mark - AssetsLibrary Classes + +FBSDK_EXTERN Class fbsdkdfl_ALAssetsLibraryClass(void); + +#pragma mark - CoreTelephony Classes + +FBSDK_EXTERN Class fbsdkdfl_CTTelephonyNetworkInfoClass(void); diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m new file mode 100644 index 0000000..1f01dfc --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m @@ -0,0 +1,556 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKDynamicFrameworkLoader.h" + +#import + +#import +#import +#import + +#import "FBSDKLogger.h" +#import "FBSDKSettings.h" + +static NSString *const g_frameworkPathTemplate = @"/System/Library/Frameworks/%@.framework/%@"; +static NSString *const g_sqlitePath = @"/usr/lib/libsqlite3.dylib"; + +#pragma mark - Library and Symbol Loading + +struct FBSDKDFLLoadSymbolContext +{ + void *(*library)(void); // function to retrieve the library handle (it's a function instead of void * so it can be staticlly bound) + const char *name; // name of the symbol to retrieve + void **address; // [out] address of the symbol in the process address space +}; + +// Retrieves the handle for a library for framework. The paths for each are constructed +// differently so the loading function passed to dispatch_once() calls this. +static void *fbsdkdfl_load_library_once(const char *path) +{ + void *handle = dlopen(path, RTLD_LAZY); + if (handle) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorInformational formatString:@"Dynamically loaded library at %s", path]; + } else { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorInformational formatString:@"Failed to load library at %s", path]; + } + return handle; +} + +// Constructs the path for a system framework with the given name and returns the handle for dlsym +static void *fbsdkdfl_load_framework_once(NSString *framework) +{ + NSString *path = [NSString stringWithFormat:g_frameworkPathTemplate, framework, framework]; + return fbsdkdfl_load_library_once([path fileSystemRepresentation]); +} + +// Implements the callback for dispatch_once() that loads the handle for specified framework name +#define _fbsdkdfl_load_framework_once_impl_(FRAMEWORK) \ + static void fbsdkdfl_load_##FRAMEWORK##_once(void *context) { \ + *(void **)context = fbsdkdfl_load_framework_once(@#FRAMEWORK); \ + } + +// Implements the framework/library retrieval function for the given name. +// It calls the loading function once and caches the handle in a local static variable +#define _fbsdkdfl_handle_get_impl_(LIBRARY) \ + static void *fbsdkdfl_handle_get_##LIBRARY(void) { \ + static void *LIBRARY##_handle; \ + static dispatch_once_t LIBRARY##_once; \ + dispatch_once_f(&LIBRARY##_once, &LIBRARY##_handle, &fbsdkdfl_load_##LIBRARY##_once); \ + return LIBRARY##_handle;\ + } + +// Callback from dispatch_once() to load a specific symbol +static void fbsdkdfl_load_symbol_once(void *context) +{ + struct FBSDKDFLLoadSymbolContext *ctx = context; + *ctx->address = dlsym(ctx->library(), ctx->name); +} + +// The boilerplate code for loading a symbol from a given library once and caching it in a static local +#define _fbsdkdfl_symbol_get(LIBRARY, PREFIX, SYMBOL, TYPE, VARIABLE_NAME) \ + static TYPE VARIABLE_NAME; \ + static dispatch_once_t SYMBOL##_once; \ + static struct FBSDKDFLLoadSymbolContext ctx = { .library = &fbsdkdfl_handle_get_##LIBRARY, .name = PREFIX #SYMBOL, .address = (void **)&VARIABLE_NAME }; \ + dispatch_once_f(&SYMBOL##_once, &ctx, &fbsdkdfl_load_symbol_once) + +#define _fbsdkdfl_symbol_get_c(LIBRARY, SYMBOL) _fbsdkdfl_symbol_get(LIBRARY, "OBJC_CLASS_$_", SYMBOL, Class, c) // convenience symbol retrieval macro for getting an Objective-C class symbol and storing it in the local static c +#define _fbsdkdfl_symbol_get_f(LIBRARY, SYMBOL) _fbsdkdfl_symbol_get(LIBRARY, "", SYMBOL, SYMBOL##_type, f) // convenience symbol retrieval macro for getting a function pointer and storing it in the local static f +#define _fbsdkdfl_symbol_get_k(LIBRARY, SYMBOL, TYPE) _fbsdkdfl_symbol_get(LIBRARY, "", SYMBOL, TYPE, k) // convenience symbol retrieval macro for getting a pointer to a named variable and storing it in the local static k + +// convenience macro for verifying a pointer to a named variable was successfully loaded and returns the value +#define _fbsdkdfl_return_k(FRAMEWORK, SYMBOL) \ + NSCAssert(k != NULL, @"Failed to load constant %@ in the %@ framework", @#SYMBOL, @#FRAMEWORK); \ + return *k + +// convenience macro for getting a pointer to a named NSString, verifying it loaded correctly, and returning it +#define _fbsdkdfl_get_and_return_NSString(LIBRARY, SYMBOL) \ + _fbsdkdfl_symbol_get_k(LIBRARY, SYMBOL, NSString **); \ + NSCAssert([*k isKindOfClass:[NSString class]], @"Loaded symbol %@ is not of type NSString *", @#SYMBOL); \ + _fbsdkdfl_return_k(LIBRARY, SYMBOL) + +#pragma mark - Security Framework + +_fbsdkdfl_load_framework_once_impl_(Security) +_fbsdkdfl_handle_get_impl_(Security) + +#pragma mark - Security Constants + +@implementation FBSDKDynamicFrameworkLoader + +#define _fbsdkdfl_Security_get_k(SYMBOL) _fbsdkdfl_symbol_get_k(Security, SYMBOL, CFTypeRef *) + +#define _fbsdkdfl_Security_get_and_return_k(SYMBOL) \ + _fbsdkdfl_Security_get_k(SYMBOL); \ + _fbsdkdfl_return_k(Security, SYMBOL) + ++ (SecRandomRef)loadkSecRandomDefault +{ + _fbsdkdfl_symbol_get_k(Security, kSecRandomDefault, SecRandomRef *); + _fbsdkdfl_return_k(Security, kSecRandomDefault); +} + ++ (CFTypeRef)loadkSecAttrAccessible +{ + _fbsdkdfl_Security_get_and_return_k(kSecAttrAccessible); +} + ++ (CFTypeRef)loadkSecAttrAccessibleAfterFirstUnlockThisDeviceOnly +{ + _fbsdkdfl_Security_get_and_return_k(kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly); +} + ++ (CFTypeRef)loadkSecAttrAccount +{ + _fbsdkdfl_Security_get_and_return_k(kSecAttrAccount); +} + ++ (CFTypeRef)loadkSecAttrService +{ + _fbsdkdfl_Security_get_and_return_k(kSecAttrService); +} + ++ (CFTypeRef)loadkSecAttrGeneric +{ + _fbsdkdfl_Security_get_and_return_k(kSecAttrGeneric); +} + ++ (CFTypeRef)loadkSecValueData +{ + _fbsdkdfl_Security_get_and_return_k(kSecValueData); +} + ++ (CFTypeRef)loadkSecClassGenericPassword +{ + _fbsdkdfl_Security_get_and_return_k(kSecClassGenericPassword); +} + ++ (CFTypeRef)loadkSecAttrAccessGroup +{ + _fbsdkdfl_Security_get_and_return_k(kSecAttrAccessGroup); +} + ++ (CFTypeRef)loadkSecMatchLimitOne +{ + _fbsdkdfl_Security_get_and_return_k(kSecMatchLimitOne); +} + ++ (CFTypeRef)loadkSecMatchLimit +{ + _fbsdkdfl_Security_get_and_return_k(kSecMatchLimit); +} + ++ (CFTypeRef)loadkSecReturnData +{ + _fbsdkdfl_Security_get_and_return_k(kSecReturnData); +} + ++ (CFTypeRef)loadkSecClass +{ + _fbsdkdfl_Security_get_and_return_k(kSecClass); +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + FBSDK_NO_DESIGNATED_INITIALIZER(); + return nil; +} + +@end + +#pragma mark - Security APIs + +#define _fbsdkdfl_Security_get_f(SYMBOL) _fbsdkdfl_symbol_get_f(Security, SYMBOL) + +typedef int (*SecRandomCopyBytes_type)(SecRandomRef, size_t, uint8_t *); +typedef OSStatus (*SecItemUpdate_type)(CFDictionaryRef, CFDictionaryRef); +typedef OSStatus (*SecItemAdd_type)(CFDictionaryRef, CFTypeRef); +typedef OSStatus (*SecItemCopyMatching_type)(CFDictionaryRef, CFTypeRef); +typedef OSStatus (*SecItemDelete_type)(CFDictionaryRef); + +int fbsdkdfl_SecRandomCopyBytes(SecRandomRef rnd, size_t count, uint8_t *bytes) +{ + _fbsdkdfl_Security_get_f(SecRandomCopyBytes); + return f(rnd, count, bytes); +} + +OSStatus fbsdkdfl_SecItemUpdate(CFDictionaryRef query, CFDictionaryRef attributesToUpdate) +{ + _fbsdkdfl_Security_get_f(SecItemUpdate); + return f(query, attributesToUpdate); +} + +OSStatus fbsdkdfl_SecItemAdd(CFDictionaryRef attributes, CFTypeRef *result) +{ + _fbsdkdfl_Security_get_f(SecItemAdd); + return f(attributes, result); +} + +OSStatus fbsdkdfl_SecItemCopyMatching(CFDictionaryRef query, CFTypeRef *result) +{ + _fbsdkdfl_Security_get_f(SecItemCopyMatching); + return f(query, result); +} + +OSStatus fbsdkdfl_SecItemDelete(CFDictionaryRef query) +{ + _fbsdkdfl_Security_get_f(SecItemDelete); + return f(query); +} + +#pragma mark - sqlite3 APIs + +// sqlite3 is a dynamic library (not a framework) so its path is constructed differently +// than the way employed by the framework macros. +static void fbsdkdfl_load_sqlite3_once(void *context) +{ + *(void **)context = fbsdkdfl_load_library_once([g_sqlitePath fileSystemRepresentation]); +} +_fbsdkdfl_handle_get_impl_(sqlite3) + +#define _fbsdkdfl_sqlite3_get_f(SYMBOL) _fbsdkdfl_symbol_get_f(sqlite3, SYMBOL) + +typedef SQLITE_API const char *(*sqlite3_errmsg_type)(sqlite3 *); +typedef SQLITE_API int (*sqlite3_prepare_v2_type)(sqlite3 *, const char *, int, sqlite3_stmt **, const char **); +typedef SQLITE_API int (*sqlite3_reset_type)(sqlite3_stmt *); +typedef SQLITE_API int (*sqlite3_finalize_type)(sqlite3_stmt *); +typedef SQLITE_API int (*sqlite3_open_v2_type)(const char *, sqlite3 **, int, const char *); +typedef SQLITE_API int (*sqlite3_exec_type)(sqlite3 *, const char *, int (*)(void *, int, char **, char **), void *, char **); +typedef SQLITE_API int (*sqlite3_close_type)(sqlite3 *); +typedef SQLITE_API int (*sqlite3_bind_double_type)(sqlite3_stmt *, int, double); +typedef SQLITE_API int (*sqlite3_bind_int_type)(sqlite3_stmt *, int, int); +typedef SQLITE_API int (*sqlite3_bind_text_type)(sqlite3_stmt *, int, const char *, int, void(*)(void *)); +typedef SQLITE_API int (*sqlite3_step_type)(sqlite3_stmt *); +typedef SQLITE_API double (*sqlite3_column_double_type)(sqlite3_stmt *, int); +typedef SQLITE_API int (*sqlite3_column_int_type)(sqlite3_stmt *, int); +typedef SQLITE_API const unsigned char *(*sqlite3_column_text_type)(sqlite3_stmt *, int); + +SQLITE_API const char *fbsdkdfl_sqlite3_errmsg(sqlite3 *db) +{ + _fbsdkdfl_sqlite3_get_f(sqlite3_errmsg); + return f(db); +} + +SQLITE_API int fbsdkdfl_sqlite3_prepare_v2(sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **ppStmt, const char **pzTail) +{ + _fbsdkdfl_sqlite3_get_f(sqlite3_prepare_v2); + return f(db, zSql, nByte, ppStmt, pzTail); +} + +SQLITE_API int fbsdkdfl_sqlite3_reset(sqlite3_stmt *pStmt) +{ + _fbsdkdfl_sqlite3_get_f(sqlite3_reset); + return f(pStmt); +} + +SQLITE_API int fbsdkdfl_sqlite3_finalize(sqlite3_stmt *pStmt) +{ + _fbsdkdfl_sqlite3_get_f(sqlite3_finalize); + return f(pStmt); +} + +SQLITE_API int fbsdkdfl_sqlite3_open_v2(const char *filename, sqlite3 **ppDb, int flags, const char *zVfs) +{ + _fbsdkdfl_sqlite3_get_f(sqlite3_open_v2); + return f(filename, ppDb, flags, zVfs); +} + +SQLITE_API int fbsdkdfl_sqlite3_exec(sqlite3 *db, const char *sql, int (*callback)(void *, int, char **, char **), void *arg, char **errmsg) +{ + _fbsdkdfl_sqlite3_get_f(sqlite3_exec); + return f(db, sql, callback, arg, errmsg); +} + +SQLITE_API int fbsdkdfl_sqlite3_close(sqlite3 *db) +{ + _fbsdkdfl_sqlite3_get_f(sqlite3_close); + return f(db); +} + +SQLITE_API int fbsdkdfl_sqlite3_bind_double(sqlite3_stmt *stmt, int index , double value) +{ + _fbsdkdfl_sqlite3_get_f(sqlite3_bind_double); + return f(stmt, index, value); +} + +SQLITE_API int fbsdkdfl_sqlite3_bind_int(sqlite3_stmt *stmt, int index, int value) +{ + _fbsdkdfl_sqlite3_get_f(sqlite3_bind_int); + return f(stmt, index, value); +} + +SQLITE_API int fbsdkdfl_sqlite3_bind_text(sqlite3_stmt *stmt, int index, const char *value, int n, void(*callback)(void *)) +{ + _fbsdkdfl_sqlite3_get_f(sqlite3_bind_text); + return f(stmt, index, value, n, callback); +} + +SQLITE_API int fbsdkdfl_sqlite3_step(sqlite3_stmt *stmt) +{ + _fbsdkdfl_sqlite3_get_f(sqlite3_step); + return f(stmt); +} + +SQLITE_API double fbsdkdfl_sqlite3_column_double(sqlite3_stmt *stmt, int iCol) +{ + _fbsdkdfl_sqlite3_get_f(sqlite3_column_double); + return f(stmt, iCol); +} + +SQLITE_API int fbsdkdfl_sqlite3_column_int(sqlite3_stmt *stmt, int iCol) +{ + _fbsdkdfl_sqlite3_get_f(sqlite3_column_int); + return f(stmt, iCol); +} + +SQLITE_API const unsigned char *fbsdkdfl_sqlite3_column_text(sqlite3_stmt *stmt, int iCol) +{ + _fbsdkdfl_sqlite3_get_f(sqlite3_column_text); + return f(stmt, iCol); +} + +#pragma mark - Social Constants + +_fbsdkdfl_load_framework_once_impl_(Social) +_fbsdkdfl_handle_get_impl_(Social) + +#define _fbsdkdfl_Social_get_and_return_constant(SYMBOL) _fbsdkdfl_get_and_return_NSString(Social, SYMBOL) + +NSString *fbsdkdfl_SLServiceTypeFacebook(void) +{ + _fbsdkdfl_Social_get_and_return_constant(SLServiceTypeFacebook); +} + +#pragma mark - Social Classes + +#define _fbsdkdfl_Social_get_c(SYMBOL) _fbsdkdfl_symbol_get_c(Social, SYMBOL) + +Class fbsdkdfl_SLComposeViewControllerClass(void) +{ + _fbsdkdfl_Social_get_c(SLComposeViewController); + return c; +} + +#pragma mark - QuartzCore Classes + +_fbsdkdfl_load_framework_once_impl_(QuartzCore) +_fbsdkdfl_handle_get_impl_(QuartzCore) + +#define _fbsdkdfl_QuartzCore_get_c(SYMBOL) _fbsdkdfl_symbol_get_c(QuartzCore, SYMBOL); + +Class fbsdkdfl_CATransactionClass(void) +{ + _fbsdkdfl_QuartzCore_get_c(CATransaction); + return c; +} + +#pragma mark - QuartzCore APIs + +#define _fbsdkdfl_QuartzCore_get_f(SYMBOL) _fbsdkdfl_symbol_get_f(QuartzCore, SYMBOL) + +typedef CATransform3D (*CATransform3DMakeScale_type)(CGFloat, CGFloat, CGFloat); +typedef CATransform3D (*CATransform3DMakeTranslation_type)(CGFloat, CGFloat, CGFloat); +typedef CATransform3D (*CATransform3DConcat_type)(CATransform3D, CATransform3D); + +const CATransform3D fbsdkdfl_CATransform3DIdentity = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}; + +CATransform3D fbsdkdfl_CATransform3DMakeScale(CGFloat sx, CGFloat sy, CGFloat sz) +{ + _fbsdkdfl_QuartzCore_get_f(CATransform3DMakeScale); + return f(sx, sy, sz); +} + +CATransform3D fbsdkdfl_CATransform3DMakeTranslation(CGFloat tx, CGFloat ty, CGFloat tz) +{ + _fbsdkdfl_QuartzCore_get_f(CATransform3DMakeTranslation); + return f(tx, ty, tz); +} + +CATransform3D fbsdkdfl_CATransform3DConcat(CATransform3D a, CATransform3D b) +{ + _fbsdkdfl_QuartzCore_get_f(CATransform3DConcat); + return f(a, b); +} + +#pragma mark - AudioToolbox APIs + +_fbsdkdfl_load_framework_once_impl_(AudioToolbox) +_fbsdkdfl_handle_get_impl_(AudioToolbox) + +#define _fbsdkdfl_AudioToolbox_get_f(SYMBOL) _fbsdkdfl_symbol_get_f(AudioToolbox, SYMBOL) + +typedef OSStatus (*AudioServicesCreateSystemSoundID_type)(CFURLRef, SystemSoundID *); +typedef OSStatus (*AudioServicesDisposeSystemSoundID_type)(SystemSoundID); +typedef void (*AudioServicesPlaySystemSound_type)(SystemSoundID); + +OSStatus fbsdkdfl_AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystemSoundID) +{ + _fbsdkdfl_AudioToolbox_get_f(AudioServicesCreateSystemSoundID); + return f(inFileURL, outSystemSoundID); +} + +OSStatus fbsdkdfl_AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID) +{ + _fbsdkdfl_AudioToolbox_get_f(AudioServicesDisposeSystemSoundID); + return f(inSystemSoundID); +} + +void fbsdkdfl_AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID) +{ + _fbsdkdfl_AudioToolbox_get_f(AudioServicesPlaySystemSound); + return f(inSystemSoundID); +} + +#pragma mark - Ad Support Classes + +_fbsdkdfl_load_framework_once_impl_(AdSupport) +_fbsdkdfl_handle_get_impl_(AdSupport) + +#define _fbsdkdfl_AdSupport_get_c(SYMBOL) _fbsdkdfl_symbol_get_c(AdSupport, SYMBOL); + +Class fbsdkdfl_ASIdentifierManagerClass(void) +{ + _fbsdkdfl_AdSupport_get_c(ASIdentifierManager); + return c; +} + +#pragma mark - Safari Services +_fbsdkdfl_load_framework_once_impl_(SafariServices) +_fbsdkdfl_handle_get_impl_(SafariServices) + +#define _fbsdkdfl_SafariServices_get_c(SYMBOL) _fbsdkdfl_symbol_get_c(SafariServices, SYMBOL); + +Class fbsdkdfl_SFSafariViewControllerClass(void) +{ + _fbsdkdfl_SafariServices_get_c(SFSafariViewController); + return c; +} + +#pragma mark - Accounts Constants + +_fbsdkdfl_load_framework_once_impl_(Accounts) +_fbsdkdfl_handle_get_impl_(Accounts) + +#define _fbsdkdfl_Accounts_get_and_return_NSString(SYMBOL) _fbsdkdfl_get_and_return_NSString(Accounts, SYMBOL) + +NSString *fbsdkdfl_ACFacebookAppIdKey(void) +{ + _fbsdkdfl_Accounts_get_and_return_NSString(ACFacebookAppIdKey); +} + +NSString *fbsdkdfl_ACFacebookAudienceEveryone(void) +{ + _fbsdkdfl_Accounts_get_and_return_NSString(ACFacebookAudienceEveryone); +} + +NSString *fbsdkdfl_ACFacebookAudienceFriends(void) +{ + _fbsdkdfl_Accounts_get_and_return_NSString(ACFacebookAudienceFriends); +} + +NSString *fbsdkdfl_ACFacebookAudienceKey(void) +{ + _fbsdkdfl_Accounts_get_and_return_NSString(ACFacebookAudienceKey); +} + +NSString *fbsdkdfl_ACFacebookAudienceOnlyMe(void) +{ + _fbsdkdfl_Accounts_get_and_return_NSString(ACFacebookAudienceOnlyMe); +} + +NSString *fbsdkdfl_ACFacebookPermissionsKey(void) +{ + _fbsdkdfl_Accounts_get_and_return_NSString(ACFacebookPermissionsKey); +} + +#pragma mark - Accounts Classes + +#define _fbsdkdfl_Accounts_get_c(SYMBOL) _fbsdkdfl_symbol_get_c(Accounts, SYMBOL); + +Class fbsdkdfl_ACAccountStoreClass(void) +{ + _fbsdkdfl_Accounts_get_c(ACAccountStore); + return c; +} + +#pragma mark - StoreKit Classes + +_fbsdkdfl_load_framework_once_impl_(StoreKit) +_fbsdkdfl_handle_get_impl_(StoreKit) + +#define _fbsdkdfl_StoreKit_get_c(SYMBOL) _fbsdkdfl_symbol_get_c(StoreKit, SYMBOL); + +Class fbsdkdfl_SKPaymentQueueClass(void) +{ + _fbsdkdfl_StoreKit_get_c(SKPaymentQueue); + return c; +} + +Class fbsdkdfl_SKProductsRequestClass(void) +{ + _fbsdkdfl_StoreKit_get_c(SKProductsRequest); + return c; +} + +#pragma mark - AssetsLibrary Classes + +_fbsdkdfl_load_framework_once_impl_(AssetsLibrary) +_fbsdkdfl_handle_get_impl_(AssetsLibrary) + +#define _fbsdkdfl_AssetsLibrary_get_c(SYMBOL) _fbsdkdfl_symbol_get_c(AssetsLibrary, SYMBOL); + +Class fbsdkdfl_ALAssetsLibraryClass(void) +{ + _fbsdkdfl_AssetsLibrary_get_c(ALAssetsLibrary); + return c; +} + +#pragma mark - CoreTelephony Classes + +_fbsdkdfl_load_framework_once_impl_(CoreTelephony) +_fbsdkdfl_handle_get_impl_(CoreTelephony) + +#define _fbsdkdfl_CoreTelephonyLibrary_get_c(SYMBOL) _fbsdkdfl_symbol_get_c(CoreTelephony, SYMBOL); + +Class fbsdkdfl_CTTelephonyNetworkInfoClass(void) +{ + _fbsdkdfl_CoreTelephonyLibrary_get_c(CTTelephonyNetworkInfo); + return c; +} diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h new file mode 100644 index 0000000..f37bd86 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h @@ -0,0 +1,56 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@interface FBSDKError : NSObject + ++ (NSString *)errorDomain; + ++ (BOOL)errorIsNetworkError:(NSError *)error; + ++ (NSError *)errorWithCode:(NSInteger)code message:(NSString *)message; ++ (NSError *)errorWithCode:(NSInteger)code message:(NSString *)message underlyingError:(NSError *)underlyingError; ++ (NSError *)errorWithCode:(NSInteger)code + userInfo:(NSDictionary *)userInfo + message:(NSString *)message + underlyingError:(NSError *)underlyingError; + ++ (NSError *)invalidArgumentErrorWithName:(NSString *)name value:(id)value message:(NSString *)message; ++ (NSError *)invalidArgumentErrorWithName:(NSString *)name + value:(id)value + message:(NSString *)message + underlyingError:(NSError *)underlyingError; ++ (NSError *)invalidCollectionErrorWithName:(NSString *)name + collection:(id)collection + item:(id)item + message:(NSString *)message; ++ (NSError *)invalidCollectionErrorWithName:(NSString *)name + collection:(id)collection + item:(id)item + message:(NSString *)message + underlyingError:(NSError *)underlyingError; + ++ (NSError *)requiredArgumentErrorWithName:(NSString *)name message:(NSString *)message; ++ (NSError *)requiredArgumentErrorWithName:(NSString *)name + message:(NSString *)message + underlyingError:(NSError *)underlyingError; + ++ (NSError *)unknownErrorWithMessage:(NSString *)message; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m new file mode 100644 index 0000000..0a7b455 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m @@ -0,0 +1,163 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKError.h" + +#import "FBSDKConstants.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKTypeUtility.h" + +@implementation FBSDKError + +#pragma mark - Class Methods + ++ (NSString *)errorDomain +{ + return FBSDKErrorDomain; +} + ++ (BOOL)errorIsNetworkError:(NSError *)error +{ + if (error == nil) { + return NO; + } + + NSError *innerError = error.userInfo[NSUnderlyingErrorKey]; + if ([self errorIsNetworkError:innerError]) { + return YES; + } + + switch (error.code) { + case NSURLErrorTimedOut: + case NSURLErrorCannotFindHost: + case NSURLErrorCannotConnectToHost: + case NSURLErrorNetworkConnectionLost: + case NSURLErrorDNSLookupFailed: + case NSURLErrorNotConnectedToInternet: + case NSURLErrorInternationalRoamingOff: + case NSURLErrorCallIsActive: + case NSURLErrorDataNotAllowed: + return YES; + default: + return NO; + } +} + ++ (NSError *)errorWithCode:(NSInteger)code message:(NSString *)message +{ + return [self errorWithCode:code message:message underlyingError:nil]; +} + ++ (NSError *)errorWithCode:(NSInteger)code message:(NSString *)message underlyingError:(NSError *)underlyingError +{ + return [self errorWithCode:code userInfo:nil message:message underlyingError:underlyingError]; +} + ++ (NSError *)errorWithCode:(NSInteger)code + userInfo:(NSDictionary *)userInfo + message:(NSString *)message + underlyingError:(NSError *)underlyingError +{ + NSMutableDictionary *fullUserInfo = [[NSMutableDictionary alloc] initWithDictionary:userInfo]; + [FBSDKInternalUtility dictionary:fullUserInfo setObject:message forKey:FBSDKErrorDeveloperMessageKey]; + [FBSDKInternalUtility dictionary:fullUserInfo setObject:underlyingError forKey:NSUnderlyingErrorKey]; + userInfo = ([fullUserInfo count] ? [fullUserInfo copy] : nil); + return [[NSError alloc] initWithDomain:[self errorDomain] code:code userInfo:userInfo]; +} + ++ (NSError *)invalidArgumentErrorWithName:(NSString *)name value:(id)value message:(NSString *)message +{ + return [self invalidArgumentErrorWithName:name value:value message:message underlyingError:nil]; +} + ++ (NSError *)invalidArgumentErrorWithName:(NSString *)name + value:(id)value + message:(NSString *)message + underlyingError:(NSError *)underlyingError +{ + if (!message) { + message = [[NSString alloc] initWithFormat:@"Invalid value for %@: %@", name, value]; + } + NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:userInfo setObject:name forKey:FBSDKErrorArgumentNameKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:value forKey:FBSDKErrorArgumentValueKey]; + return [self errorWithCode:FBSDKInvalidArgumentErrorCode + userInfo:userInfo + message:message + underlyingError:underlyingError]; +} + ++ (NSError *)invalidCollectionErrorWithName:(NSString *)name + collection:(id)collection + item:(id)item + message:(NSString *)message +{ + return [self invalidCollectionErrorWithName:name collection:collection item:item message:message underlyingError:nil]; +} + ++ (NSError *)invalidCollectionErrorWithName:(NSString *)name + collection:(id)collection + item:(id)item + message:(NSString *)message + underlyingError:(NSError *)underlyingError +{ + if (!message) { + message = [[NSString alloc] initWithFormat:@"Invalid item (%@) found in collection for %@: %@", item, name, collection]; + } + NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:userInfo setObject:name forKey:FBSDKErrorArgumentNameKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:item forKey:FBSDKErrorArgumentValueKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:collection forKey:FBSDKErrorArgumentCollectionKey]; + return [self errorWithCode:FBSDKInvalidArgumentErrorCode + userInfo:userInfo + message:message + underlyingError:underlyingError]; +} + ++ (NSError *)requiredArgumentErrorWithName:(NSString *)name message:(NSString *)message +{ + return [self requiredArgumentErrorWithName:name message:message underlyingError:nil]; +} + ++ (NSError *)requiredArgumentErrorWithName:(NSString *)name + message:(NSString *)message + underlyingError:(NSError *)underlyingError +{ + if (!message) { + message = [[NSString alloc] initWithFormat:@"Value for %@ is required.", name]; + } + return [self invalidArgumentErrorWithName:name value:nil message:message underlyingError:underlyingError]; +} + ++ (NSError *)unknownErrorWithMessage:(NSString *)message +{ + return [self errorWithCode:FBSDKUnknownErrorCode + userInfo:nil + message:message + underlyingError:nil]; +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + FBSDK_NO_DESIGNATED_INITIALIZER(); + return nil; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h new file mode 100644 index 0000000..71e4445 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h @@ -0,0 +1,321 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import +#import + +#define FBSDK_CANOPENURL_FACEBOOK @"fbauth2" +#define FBSDK_CANOPENURL_MESSENGER @"fb-messenger-api" + +typedef NS_ENUM(int32_t, FBSDKUIKitVersion) +{ + FBSDKUIKitVersion_6_0 = 0x0944, + FBSDKUIKitVersion_6_1 = 0x094C, + FBSDKUIKitVersion_7_0 = 0x0B57, + FBSDKUIKitVersion_7_1 = 0x0B77, + FBSDKUIKitVersion_8_0 = 0x0CF6, +}; + +@interface FBSDKInternalUtility : NSObject + +/*! + @abstract Constructs the scheme for apps that come to the current app through the bridge. + */ ++ (NSString *)appURLScheme; + +/*! + @abstract Constructs an URL for the current app. + @param host The host for the URL. + @param path The path for the URL. + @param queryParameters The query parameters for the URL. This will be converted into a query string. + @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. + @return The app URL. + */ ++ (NSURL *)appURLWithHost:(NSString *)host + path:(NSString *)path + queryParameters:(NSDictionary *)queryParameters + error:(NSError *__autoreleasing *)errorRef; + +/*! + @abstract Parses an FB url's query params (and potentially fragment) into a dictionary. + @param url The FB url. + @return A dictionary with the key/value pairs. + */ ++ (NSDictionary *)dictionaryFromFBURL:(NSURL *)url; + +/*! + @abstract Adds an object to an array if it is not nil. + @param array The array to add the object to. + @param object The object to add to the array. + */ ++ (void)array:(NSMutableArray *)array addObject:(id)object; + +/*! + @abstract Returns bundle for returning localized strings + @discussion We assume a convention of a bundle named FBSDKStrings.bundle, otherwise we + return the main bundle. +*/ ++ (NSBundle *)bundleForStrings; + +/*! + @abstract Converts simple value types to the string equivelant for serializing to a request query or body. + @param value The value to be converted. + @return The value that may have been converted if able (otherwise the input param). + */ ++ (id)convertRequestValue:(id)value; + +/*! + @abstract Gets the milliseconds since the Unix Epoch. + @discussion Changes in the system clock will affect this value. + @return The number of milliseconds since the Unix Epoch. + */ ++ (unsigned long)currentTimeInMilliseconds; + +/*! + @abstract Sets an object for a key in a dictionary if it is not nil. + @param dictionary The dictionary to set the value for. + @param object The value to set after serializing to JSON. + @param key The key to set the value for. + @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. + @return NO if an error occurred while serializing the object, otherwise YES. + */ ++ (BOOL)dictionary:(NSMutableDictionary *)dictionary +setJSONStringForObject:(id)object + forKey:(id)key + error:(NSError *__autoreleasing *)errorRef; + +/*! + @abstract Sets an object for a key in a dictionary if it is not nil. + @param dictionary The dictionary to set the value for. + @param object The value to set. + @param key The key to set the value for. + */ ++ (void)dictionary:(NSMutableDictionary *)dictionary setObject:(id)object forKey:(id)key; + +/*! + @abstract Constructs a Facebook URL. + @param hostPrefix The prefix for the host, such as 'm', 'graph', etc. + @param path The path for the URL. This may or may not include a version. + @param queryParameters The query parameters for the URL. This will be converted into a query string. + @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. + @return The Facebook URL. + */ ++ (NSURL *)facebookURLWithHostPrefix:(NSString *)hostPrefix + path:(NSString *)path + queryParameters:(NSDictionary *)queryParameters + error:(NSError *__autoreleasing *)errorRef; + +/*! + @abstract Constructs a Facebook URL. + @param hostPrefix The prefix for the host, such as 'm', 'graph', etc. + @param path The path for the URL. This may or may not include a version. + @param queryParameters The query parameters for the URL. This will be converted into a query string. + @param defaultVersion A version to add to the URL if none is found in the path. + @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. + @return The Facebook URL. + */ ++ (NSURL *)facebookURLWithHostPrefix:(NSString *)hostPrefix + path:(NSString *)path + queryParameters:(NSDictionary *)queryParameters + defaultVersion:(NSString *)defaultVersion + error:(NSError *__autoreleasing *)errorRef; + +/*! + @abstract Tests whether the supplied URL is a valid URL for opening in the browser. + @param URL The URL to test. + @return YES if the URL refers to an http or https resource, otherwise NO. + */ ++ (BOOL)isBrowserURL:(NSURL *)URL; + +/*! + @abstract Tests whether the supplied bundle identifier references a Facebook app. + @param bundleIdentifier The bundle identifier to test. + @return YES if the bundle identifier refers to a Facebook app, otherwise NO. + */ ++ (BOOL)isFacebookBundleIdentifier:(NSString *)bundleIdentifier; + +/*! + @abstract Tests whether the operating system is at least the specified version. + @param version The version to test against. + @return YES if the operating system is greater than or equal to the specified version, otherwise NO. + */ ++ (BOOL)isOSRunTimeVersionAtLeast:(NSOperatingSystemVersion)version; + +/*! + @abstract Tests whether the supplied bundle identifier references the Safari app. + @param bundleIdentifier The bundle identifier to test. + @return YES if the bundle identifier refers to the Safari app, otherwise NO. + */ ++ (BOOL)isSafariBundleIdentifier:(NSString *)bundleIdentifier; + +/*! + @abstract Tests whether the UIKit version that the current app was linked to is at least the specified version. + @param version The version to test against. + @return YES if the linked UIKit version is greater than or equal to the specified version, otherwise NO. + */ ++ (BOOL)isUIKitLinkTimeVersionAtLeast:(FBSDKUIKitVersion)version; + +/*! + @abstract Tests whether the UIKit version in the runtime is at least the specified version. + @param version The version to test against. + @return YES if the runtime UIKit version is greater than or equal to the specified version, otherwise NO. + */ ++ (BOOL)isUIKitRunTimeVersionAtLeast:(FBSDKUIKitVersion)version; + +/*! + @abstract Converts an object into a JSON string. + @param object The object to convert to JSON. + @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. + @param invalidObjectHandler Handles objects that are invalid, returning a replacement value or nil to ignore. + @return A JSON string or nil if the object cannot be converted to JSON. + */ ++ (NSString *)JSONStringForObject:(id)object + error:(NSError *__autoreleasing *)errorRef + invalidObjectHandler:(id(^)(id object, BOOL *stop))invalidObjectHandler; + +/*! + @abstract Checks equality between 2 objects. + @discussion Checks for pointer equality, nils, isEqual:. + @param object The first object to compare. + @param other The second object to compare. + @result YES if the objects are equal, otherwise NO. + */ ++ (BOOL)object:(id)object isEqualToObject:(id)other; + +/*! + @abstract Converts a JSON string into an object + @param string The JSON string to convert. + @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. + @return An NSDictionary, NSArray, NSString or NSNumber containing the object representation, or nil if the string + cannot be converted. + */ ++ (id)objectForJSONString:(NSString *)string error:(NSError *__autoreleasing *)errorRef; + +/*! + @abstract The version of the operating system on which the process is executing. + */ ++ (NSOperatingSystemVersion)operatingSystemVersion; + +/*! + @abstract Constructs a query string from a dictionary. + @param dictionary The dictionary with key/value pairs for the query string. + @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. + @param invalidObjectHandler Handles objects that are invalid, returning a replacement value or nil to ignore. + @result Query string representation of the parameters. + */ ++ (NSString *)queryStringWithDictionary:(NSDictionary *)dictionary + error:(NSError *__autoreleasing *)errorRef + invalidObjectHandler:(id(^)(id object, BOOL *stop))invalidObjectHandler; + +/*! + @abstract Tests whether the orientation should be manually adjusted for views outside of the root view controller. + @discussion With the legacy layout the developer must worry about device orientation when working with views outside of + the window's root view controller and apply the correct rotation transform and/or swap a view's width and height + values. If the application was linked with UIKit on iOS 7 or earlier or the application is running on iOS 7 or earlier + then we need to use the legacy layout code. Otherwise if the application was linked with UIKit on iOS 8 or later and + the application is running on iOS 8 or later, UIKit handles all of the rotation complexity and the origin is always in + the top-left and no rotation transform is necessary. + @return YES if if the orientation must be manually adjusted, otherwise NO. + */ ++ (BOOL)shouldManuallyAdjustOrientation; + +/*! + @abstract Constructs an NSURL. + @param scheme The scheme for the URL. + @param host The host for the URL. + @param path The path for the URL. + @param queryParameters The query parameters for the URL. This will be converted into a query string. + @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. + @return The URL. + */ ++ (NSURL *)URLWithScheme:(NSString *)scheme + host:(NSString *)host + path:(NSString *)path + queryParameters:(NSDictionary *)queryParameters + error:(NSError *__autoreleasing *)errorRef; + +/*! + * @abstract Deletes all the cookies in the NSHTTPCookieStorage for Facebook web dialogs + */ ++ (void)deleteFacebookCookies; + +/*! + @abstract Extracts permissions from a response fetched from me/permissions + @param responseObject the response + @param grantedPermissions the set to add granted permissions to + @param declinedPermissions the set to add decliend permissions to. + */ ++ (void)extractPermissionsFromResponse:(NSDictionary *)responseObject + grantedPermissions:(NSMutableSet *)grantedPermissions + declinedPermissions:(NSMutableSet *)declinedPermissions; + +/*! + @abstract Registers a transient object so that it will not be deallocated until unregistered + @param object The transient object + */ ++ (void)registerTransientObject:(id)object; + +/*! + @abstract Unregisters a transient object that was previously registered with registerTransientObject: + @param object The transient object + */ ++ (void)unregisterTransientObject:(__weak id)object; + +/*! + @abstract validates that the app ID is non-nil, throws an NSException if nil. + */ ++ (void)validateAppID; + +/*! + @abstract validates that the right URL schemes are registered, throws an NSException if not. + */ ++ (void)validateURLSchemes; + +/*! + @abstract Attempts to find the first UIViewController in the view's responder chain. Returns nil if not found. + */ ++ (UIViewController *)viewControllerforView:(UIView*)view; + +/*! + @abstract returns true if the url scheme is registered in the CFBundleURLTypes + */ ++ (BOOL)isRegisteredURLScheme:(NSString *)urlScheme; + +/*! + @abstract returns currently displayed top view controller. + */ ++ (UIViewController *)topMostViewController; + +#pragma mark - FB Apps Installed + ++ (BOOL)isFacebookAppInstalled; ++ (BOOL)isMessengerAppInstalled; ++ (void)checkRegisteredCanOpenURLScheme:(NSString *)urlScheme; ++ (BOOL)isRegisteredCanOpenURLScheme:(NSString *)urlScheme; + +#define FBSDKConditionalLog(condition, loggingBehavior, desc, ...) \ +{ \ + if (!(condition)) { \ + NSString *msg = [NSString stringWithFormat:(desc), ##__VA_ARGS__]; \ + [FBSDKLogger singleShotLogEntry:loggingBehavior logEntry:msg]; \ + } \ +} + +#define FB_BASE_URL @"facebook.com" + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m new file mode 100644 index 0000000..7f0db81 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m @@ -0,0 +1,666 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKInternalUtility.h" + +#import + +#import + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKError.h" +#import "FBSDKMacros.h" +#import "FBSDKSettings.h" +#import "FBSDKUtility.h" + +typedef NS_ENUM(NSUInteger, FBSDKInternalUtilityVersionMask) +{ + FBSDKInternalUtilityMajorVersionMask = 0xFFFF0000, + //FBSDKInternalUtilityMinorVersionMask = 0x0000FF00, // unused + //FBSDKInternalUtilityPatchVersionMask = 0x000000FF, // unused +}; + +typedef NS_ENUM(NSUInteger, FBSDKInternalUtilityVersionShift) +{ + FBSDKInternalUtilityMajorVersionShift = 16, + //FBSDKInternalUtilityMinorVersionShift = 8, // unused + //FBSDKInternalUtilityPatchVersionShift = 0, // unused +}; + +@implementation FBSDKInternalUtility + +#pragma mark - Class Methods + ++ (NSString *)appURLScheme +{ + NSString *appID = ([FBSDKSettings appID] ?: @""); + NSString *suffix = ([FBSDKSettings appURLSchemeSuffix] ?: @""); + return [[NSString alloc] initWithFormat: @"fb%@%@", appID, suffix]; +} + ++ (NSURL *)appURLWithHost:(NSString *)host + path:(NSString *)path + queryParameters:(NSDictionary *)queryParameters + error:(NSError *__autoreleasing *)errorRef +{ + return [self URLWithScheme:[self appURLScheme] + host:host + path:path + queryParameters:queryParameters + error:errorRef]; +} + ++ (NSDictionary *)dictionaryFromFBURL:(NSURL *)url +{ + // version 3.2.3 of the Facebook app encodes the parameters in the query but + // version 3.3 and above encode the parameters in the fragment; + // merge them together with fragment taking priority. + NSMutableDictionary *params = [NSMutableDictionary dictionary]; + [params addEntriesFromDictionary:[FBSDKUtility dictionaryWithQueryString:url.query]]; + + // Only get the params from the fragment if it has authorize as the host + if ([url.host isEqualToString:@"authorize"]) { + [params addEntriesFromDictionary:[FBSDKUtility dictionaryWithQueryString:url.fragment]]; + } + return params; +} + ++ (void)array:(NSMutableArray *)array addObject:(id)object +{ + if (object) { + [array addObject:object]; + } +} + ++ (NSBundle *)bundleForStrings +{ + static NSBundle *bundle; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSString *stringsBundlePath = [[NSBundle mainBundle] pathForResource:@"FacebookSDKStrings" + ofType:@"bundle"]; + bundle = [NSBundle bundleWithPath:stringsBundlePath] ?: [NSBundle mainBundle]; + }); + return bundle; +} + ++ (id)convertRequestValue:(id)value +{ + if ([value isKindOfClass:[NSNumber class]]) { + value = [(NSNumber *)value stringValue]; + } else if ([value isKindOfClass:[NSURL class]]) { + value = [(NSURL *)value absoluteString]; + } + return value; +} + ++ (unsigned long)currentTimeInMilliseconds +{ + struct timeval time; + gettimeofday(&time, NULL); + return (time.tv_sec * 1000) + (time.tv_usec / 1000); +} + ++ (BOOL)dictionary:(NSMutableDictionary *)dictionary +setJSONStringForObject:(id)object + forKey:(id)key + error:(NSError *__autoreleasing *)errorRef +{ + if (!object || !key) { + return YES; + } + NSString *JSONString = [self JSONStringForObject:object error:errorRef invalidObjectHandler:NULL]; + if (!JSONString) { + return NO; + } + [self dictionary:dictionary setObject:JSONString forKey:key]; + return YES; +} + ++ (void)dictionary:(NSMutableDictionary *)dictionary setObject:(id)object forKey:(id)key +{ + if (object && key) { + [dictionary setObject:object forKey:key]; + } +} + ++ (void)extractPermissionsFromResponse:(NSDictionary *)responseObject + grantedPermissions:(NSMutableSet *)grantedPermissions + declinedPermissions:(NSMutableSet *)declinedPermissions +{ + NSArray *resultData = responseObject[@"data"]; + if (resultData.count > 0) { + for (NSDictionary *permissionsDictionary in resultData) { + NSString *permissionName = permissionsDictionary[@"permission"]; + NSString *status = permissionsDictionary[@"status"]; + + if ([status isEqualToString:@"granted"]) { + [grantedPermissions addObject:permissionName]; + } else if ([status isEqualToString:@"declined"]) { + [declinedPermissions addObject:permissionName]; + } + } + } +} + ++ (NSURL *)facebookURLWithHostPrefix:(NSString *)hostPrefix + path:(NSString *)path + queryParameters:(NSDictionary *)queryParameters + error:(NSError *__autoreleasing *)errorRef +{ + return [self facebookURLWithHostPrefix:hostPrefix + path:path + queryParameters:queryParameters + defaultVersion:nil + error:errorRef]; +} + ++ (NSURL *)facebookURLWithHostPrefix:(NSString *)hostPrefix + path:(NSString *)path + queryParameters:(NSDictionary *)queryParameters + defaultVersion:(NSString *)defaultVersion + error:(NSError *__autoreleasing *)errorRef +{ + if ([hostPrefix length] && ![hostPrefix hasSuffix:@"."]) { + hostPrefix = [hostPrefix stringByAppendingString:@"."]; + } + + NSString *host = @"facebook.com"; + NSString *domainPart = [FBSDKSettings facebookDomainPart]; + if ([domainPart length]) { + host = [[NSString alloc] initWithFormat:@"%@.%@", domainPart, host]; + } + host = [NSString stringWithFormat:@"%@%@", hostPrefix ?: @"", host ?: @""]; + + NSString *version = defaultVersion ?: FBSDK_TARGET_PLATFORM_VERSION; + if ([version length]) { + version = [@"/" stringByAppendingString:version]; + } + + if ([path length]) { + NSScanner *versionScanner = [[NSScanner alloc] initWithString:path]; + if ([versionScanner scanString:@"/v" intoString:NULL] && + [versionScanner scanInteger:NULL] && + [versionScanner scanString:@"." intoString:NULL] && + [versionScanner scanInteger:NULL]) { + version = nil; + } + if (![path hasPrefix:@"/"]) { + path = [@"/" stringByAppendingString:path]; + } + } + path = [[NSString alloc] initWithFormat:@"%@%@", version ?: @"", path ?: @""]; + + return [self URLWithScheme:@"https" + host:host + path:path + queryParameters:queryParameters + error:errorRef]; +} + ++ (BOOL)isBrowserURL:(NSURL *)URL +{ + NSString *scheme = [URL.scheme lowercaseString]; + return ([scheme isEqualToString:@"http"] || [scheme isEqualToString:@"https"]); +} + ++ (BOOL)isFacebookBundleIdentifier:(NSString *)bundleIdentifier +{ + return ([bundleIdentifier hasPrefix:@"com.facebook."] || + [bundleIdentifier hasPrefix:@".com.facebook."]); +} + ++ (BOOL)isOSRunTimeVersionAtLeast:(NSOperatingSystemVersion)version +{ + return ([self _compareOperatingSystemVersion:[self operatingSystemVersion] toVersion:version] != NSOrderedAscending); +} + ++ (BOOL)isSafariBundleIdentifier:(NSString *)bundleIdentifier +{ + return ([bundleIdentifier isEqualToString:@"com.apple.mobilesafari"] || + [bundleIdentifier isEqualToString:@"com.apple.SafariViewService"]); +} + ++ (BOOL)isUIKitLinkTimeVersionAtLeast:(FBSDKUIKitVersion)version +{ + static int32_t linkTimeMajorVersion; + static dispatch_once_t getVersionOnce; + dispatch_once(&getVersionOnce, ^{ + int32_t linkTimeVersion = NSVersionOfLinkTimeLibrary("UIKit"); + linkTimeMajorVersion = ((MAX(linkTimeVersion, 0) & FBSDKInternalUtilityMajorVersionMask) >> FBSDKInternalUtilityMajorVersionShift); + }); + return (version <= linkTimeMajorVersion); +} + ++ (BOOL)isUIKitRunTimeVersionAtLeast:(FBSDKUIKitVersion)version +{ + static int32_t runTimeMajorVersion; + static dispatch_once_t getVersionOnce; + dispatch_once(&getVersionOnce, ^{ + int32_t runTimeVersion = NSVersionOfRunTimeLibrary("UIKit"); + runTimeMajorVersion = ((MAX(runTimeVersion, 0) & FBSDKInternalUtilityMajorVersionMask) >> FBSDKInternalUtilityMajorVersionShift); + }); + return (version <= runTimeMajorVersion); +} + ++ (NSString *)JSONStringForObject:(id)object + error:(NSError *__autoreleasing *)errorRef + invalidObjectHandler:(id(^)(id object, BOOL *stop))invalidObjectHandler +{ + if (invalidObjectHandler || ![NSJSONSerialization isValidJSONObject:object]) { + object = [self _convertObjectToJSONObject:object invalidObjectHandler:invalidObjectHandler stop:NULL]; + if (![NSJSONSerialization isValidJSONObject:object]) { + if (errorRef != NULL) { + *errorRef = [FBSDKError invalidArgumentErrorWithName:@"object" + value:object + message:@"Invalid object for JSON serialization."]; + } + return nil; + } + } + NSData *data = [NSJSONSerialization dataWithJSONObject:object options:0 error:errorRef]; + if (!data) { + return nil; + } + return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; +} + ++ (BOOL)object:(id)object isEqualToObject:(id)other; +{ + if (object == other) { + return YES; + } + if (!object || !other) { + return NO; + } + return [object isEqual:other]; +} + ++ (id)objectForJSONString:(NSString *)string error:(NSError *__autoreleasing *)errorRef +{ + NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; + if (!data) { + if (errorRef != NULL) { + *errorRef = nil; + } + return nil; + } + return [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:errorRef]; +} + ++ (NSOperatingSystemVersion)operatingSystemVersion +{ + static NSOperatingSystemVersion operatingSystemVersion = { + .majorVersion = 0, + .minorVersion = 0, + .patchVersion = 0, + }; + static dispatch_once_t getVersionOnce; + dispatch_once(&getVersionOnce, ^{ + if ([NSProcessInfo instancesRespondToSelector:@selector(operatingSystemVersion)]) { + operatingSystemVersion = [NSProcessInfo processInfo].operatingSystemVersion; + } else { + NSArray *components = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."]; + switch (components.count) { + default: + case 3: + operatingSystemVersion.patchVersion = [components[2] integerValue]; + // fall through + case 2: + operatingSystemVersion.minorVersion = [components[1] integerValue]; + // fall through + case 1: + operatingSystemVersion.majorVersion = [components[0] integerValue]; + break; + case 0: + operatingSystemVersion.majorVersion = ([self isUIKitLinkTimeVersionAtLeast:FBSDKUIKitVersion_7_0] ? 7 : 6); + break; + } + } + }); + return operatingSystemVersion; +} + ++ (NSString *)queryStringWithDictionary:(NSDictionary *)dictionary + error:(NSError *__autoreleasing *)errorRef + invalidObjectHandler:(id(^)(id object, BOOL *stop))invalidObjectHandler +{ + NSMutableString *queryString = [[NSMutableString alloc] init]; + __block BOOL hasParameters = NO; + if (dictionary) { + NSMutableArray *keys = [[dictionary allKeys] mutableCopy]; + // remove non-string keys, as they are not valid + [keys filterUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) { + return [evaluatedObject isKindOfClass:[NSString class]]; + }]]; + // sort the keys so that the query string order is deterministic + [keys sortUsingSelector:@selector(compare:)]; + BOOL stop = NO; + for (NSString *key in keys) { + id value = [self convertRequestValue:dictionary[key]]; + if ([value isKindOfClass:[NSString class]]) { + value = [FBSDKUtility URLEncode:value]; + } + if (invalidObjectHandler && ![value isKindOfClass:[NSString class]]) { + value = invalidObjectHandler(value, &stop); + if (stop) { + break; + } + } + if (value) { + if (hasParameters) { + [queryString appendString:@"&"]; + } + [queryString appendFormat:@"%@=%@", key, value]; + hasParameters = YES; + } + } + } + if (errorRef != NULL) { + *errorRef = nil; + } + return ([queryString length] ? [queryString copy] : nil); +} + ++ (BOOL)shouldManuallyAdjustOrientation +{ + return (![self isUIKitLinkTimeVersionAtLeast:FBSDKUIKitVersion_8_0] || + ![self isUIKitRunTimeVersionAtLeast:FBSDKUIKitVersion_8_0]); +} + ++ (NSURL *)URLWithScheme:(NSString *)scheme + host:(NSString *)host + path:(NSString *)path + queryParameters:(NSDictionary *)queryParameters + error:(NSError *__autoreleasing *)errorRef +{ + if (![path hasPrefix:@"/"]) { + path = [@"/" stringByAppendingString:path ?: @""]; + } + + NSString *queryString = nil; + if ([queryParameters count]) { + NSError *queryStringError; + queryString = [@"?" stringByAppendingString:[FBSDKUtility queryStringWithDictionary:queryParameters + error:&queryStringError]]; + if (!queryString) { + if (errorRef != NULL) { + *errorRef = [FBSDKError invalidArgumentErrorWithName:@"queryParameters" + value:queryParameters + message:nil + underlyingError:queryStringError]; + } + return nil; + } + } + + NSURL *URL = [[NSURL alloc] initWithString:[NSString stringWithFormat: + @"%@://%@%@%@", + scheme ?: @"", + host ?: @"", + path ?: @"", + queryString ?: @""]]; + if (errorRef != NULL) { + if (URL) { + *errorRef = nil; + } else { + *errorRef = [FBSDKError unknownErrorWithMessage:@"Unknown error building URL."]; + } + } + return URL; +} + ++ (void)deleteFacebookCookies +{ + NSHTTPCookieStorage *cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage]; + NSArray *facebookCookies = [cookies cookiesForURL:[self facebookURLWithHostPrefix:@"m." + path:@"/dialog/" + queryParameters:nil + error:NULL]]; + + for (NSHTTPCookie *cookie in facebookCookies) { + [cookies deleteCookie:cookie]; + } +} + +static NSMapTable *_transientObjects; + ++ (void)registerTransientObject:(id)object +{ + NSAssert([NSThread isMainThread], @"Must be called from the main thread!"); + if (!_transientObjects) { + _transientObjects = [[NSMapTable alloc] init]; + } + NSUInteger count = [(NSNumber *)[_transientObjects objectForKey:object] unsignedIntegerValue]; + [_transientObjects setObject:@(count + 1) forKey:object]; +} + ++ (void)unregisterTransientObject:(__weak id)object +{ + if (!object) { + return; + } + NSAssert([NSThread isMainThread], @"Must be called from the main thread!"); + NSUInteger count = [(NSNumber *)[_transientObjects objectForKey:object] unsignedIntegerValue]; + if (count == 1) { + [_transientObjects removeObjectForKey:object]; + } else if (count != 0) { + [_transientObjects setObject:@(count - 1) forKey:object]; + } else { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors + formatString:@"unregisterTransientObject:%@ count is 0. This may indicate a bug in the FBSDK. Please" + " file a report to developers.facebook.com/bugs if you encounter any problems. Thanks!", [object class]]; + } +} + ++ (UIViewController *)viewControllerforView:(UIView*)view +{ + UIResponder *responder = view.nextResponder; + while (responder) { + if ([responder isKindOfClass:[UIViewController class]]) { + return (UIViewController *)responder; + } + responder = responder.nextResponder; + } + return nil; +} + +#pragma mark - FB Apps Installed + ++ (BOOL)isFacebookAppInstalled +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + [FBSDKInternalUtility checkRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_FACEBOOK]; + }); + NSURLComponents *components = [[NSURLComponents alloc] init]; + components.scheme = FBSDK_CANOPENURL_FACEBOOK; + components.path = @"/"; + return [[UIApplication sharedApplication] + canOpenURL:components.URL]; +} + ++ (BOOL)isMessengerAppInstalled +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + [FBSDKInternalUtility checkRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_MESSENGER]; + }); + NSURLComponents *components = [[NSURLComponents alloc] init]; + components.scheme = FBSDK_CANOPENURL_MESSENGER; + components.path = @"/"; + return [[UIApplication sharedApplication] + canOpenURL:components.URL]; + +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + FBSDK_NO_DESIGNATED_INITIALIZER(); + return nil; +} + +#pragma mark - Helper Methods + ++ (NSComparisonResult)_compareOperatingSystemVersion:(NSOperatingSystemVersion)version1 + toVersion:(NSOperatingSystemVersion)version2 +{ + if (version1.majorVersion < version2.majorVersion) { + return NSOrderedAscending; + } else if (version1.majorVersion > version2.majorVersion) { + return NSOrderedDescending; + } else if (version1.minorVersion < version2.minorVersion) { + return NSOrderedAscending; + } else if (version1.minorVersion > version2.minorVersion) { + return NSOrderedDescending; + } else if (version1.patchVersion < version2.patchVersion) { + return NSOrderedAscending; + } else if (version1.patchVersion > version2.patchVersion) { + return NSOrderedDescending; + } else { + return NSOrderedSame; + } +} + ++ (id)_convertObjectToJSONObject:(id)object + invalidObjectHandler:(id(^)(id object, BOOL *stop))invalidObjectHandler + stop:(BOOL *)stopRef +{ + __block BOOL stop = NO; + if ([object isKindOfClass:[NSString class]] || [object isKindOfClass:[NSNumber class]]) { + // good to go, keep the object + } else if ([object isKindOfClass:[NSURL class]]) { + object = [(NSURL *)object absoluteString]; + } else if ([object isKindOfClass:[NSDictionary class]]) { + NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; + [(NSDictionary *)object enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *dictionaryStop) { + [self dictionary:dictionary + setObject:[self _convertObjectToJSONObject:obj invalidObjectHandler:invalidObjectHandler stop:&stop] + forKey:[FBSDKTypeUtility stringValue:key]]; + if (stop) { + *dictionaryStop = YES; + } + }]; + object = dictionary; + } else if ([object isKindOfClass:[NSArray class]]) { + NSMutableArray *array = [[NSMutableArray alloc] init]; + for (id obj in (NSArray *)object) { + id convertedObj = [self _convertObjectToJSONObject:obj invalidObjectHandler:invalidObjectHandler stop:&stop]; + [self array:array addObject:convertedObj]; + if (stop) { + break; + } + } + object = array; + } else { + object = invalidObjectHandler(object, stopRef); + } + if (stopRef != NULL) { + *stopRef = stop; + } + return object; +} + ++ (void)validateAppID +{ + if (![FBSDKSettings appID]) { + NSString *reason = @"App ID not found. Add a string value with your app ID for the key " + @"FacebookAppID to the Info.plist or call [FBSDKSettings setAppID:]."; + @throw [NSException exceptionWithName:@"InvalidOperationException" reason:reason userInfo:nil]; + } +} + ++ (void)validateURLSchemes +{ + [self validateAppID]; + NSString *defaultUrlScheme = [NSString stringWithFormat:@"fb%@%@", [FBSDKSettings appID], [FBSDKSettings appURLSchemeSuffix] ?: @""]; + if (![self isRegisteredURLScheme:defaultUrlScheme]) { + NSString *reason = [NSString stringWithFormat:@"%@ is not registered as a URL scheme. Please add it in your Info.plist", defaultUrlScheme]; + @throw [NSException exceptionWithName:@"InvalidOperationException" reason:reason userInfo:nil]; + } +} + + ++ (UIViewController *)topMostViewController +{ + UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController; + while (topController.presentedViewController) { + topController = topController.presentedViewController; + } + return topController; +} + + ++ (BOOL)isRegisteredURLScheme:(NSString *)urlScheme { + static dispatch_once_t fetchBundleOnce; + static NSArray *urlTypes = nil; + + dispatch_once(&fetchBundleOnce, ^{ + urlTypes = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleURLTypes"]; + }); + for (NSDictionary *urlType in urlTypes) { + NSArray *urlSchemes = [urlType valueForKey:@"CFBundleURLSchemes"]; + if ([urlSchemes containsObject:urlScheme]) { + return YES; + } + } + return NO; +} + ++ (void)checkRegisteredCanOpenURLScheme:(NSString *)urlScheme +{ + static dispatch_once_t initCheckedSchemesOnce; + static NSMutableSet *checkedSchemes = nil; + + dispatch_once(&initCheckedSchemesOnce, ^{ + checkedSchemes = [NSMutableSet set]; + }); + + @synchronized(self) { + if ([checkedSchemes containsObject:urlScheme]) { + return; + } else { + [checkedSchemes addObject:urlScheme]; + } + } + + if (![self isRegisteredCanOpenURLScheme:urlScheme]){ + NSString *reason = [NSString stringWithFormat:@"%@ is missing from your Info.plist under LSApplicationQueriesSchemes and is required for iOS 9.0", urlScheme]; +#ifdef __IPHONE_9_0 + @throw [NSException exceptionWithName:@"InvalidOperationException" reason:reason userInfo:nil]; +#else + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry:reason]; +#endif + } +} + ++ (BOOL)isRegisteredCanOpenURLScheme:(NSString *)urlScheme +{ + static dispatch_once_t fetchBundleOnce; + static NSArray *schemes = nil; + + dispatch_once(&fetchBundleOnce, ^{ + schemes = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"LSApplicationQueriesSchemes"]; + }); + + return [schemes containsObject:urlScheme]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h new file mode 100644 index 0000000..d00dea6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h @@ -0,0 +1,88 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +/*! + @class FBSDKLogger + + @abstract + Simple logging utility for conditionally logging strings and then emitting them + via NSLog(). + + @unsorted + */ +@interface FBSDKLogger : NSObject + +// Access current accumulated contents of the logger. +@property (copy, nonatomic) NSString *contents; + +// Each FBSDKLogger gets a unique serial number to allow the client to log these numbers and, for instance, correlation of Request/Response +@property (nonatomic, readonly) NSUInteger loggerSerialNumber; + +// The logging behavior of this logger. See the FB_LOG_BEHAVIOR* constants in FBSession.h +@property (copy, nonatomic, readonly) NSString *loggingBehavior; + +// Is the current logger instance active, based on its loggingBehavior? +@property (nonatomic, readonly) BOOL isActive; + +// +// Instance methods +// + +// Create with specified logging behavior +- (instancetype)initWithLoggingBehavior:(NSString *)loggingBehavior; + +// Append string, or key/value pair +- (void)appendString:(NSString *)string; +- (void)appendFormat:(NSString *)formatString, ... NS_FORMAT_FUNCTION(1,2); +- (void)appendKey:(NSString *)key value:(NSString *)value; + +// Emit log, clearing out the logger contents. +- (void)emitToNSLog; + +// +// Class methods +// + +// +// Return a globally unique serial number to be used for correlating multiple output from the same logger. +// ++ (NSUInteger)generateSerialNumber; + +// Simple helper to write a single log entry, based upon whether the behavior matches a specified on. ++ (void)singleShotLogEntry:(NSString *)loggingBehavior + logEntry:(NSString *)logEntry; + ++ (void)singleShotLogEntry:(NSString *)loggingBehavior + formatString:(NSString *)formatString, ... NS_FORMAT_FUNCTION(2,3); + ++ (void)singleShotLogEntry:(NSString *)loggingBehavior + timestampTag:(NSObject *)timestampTag + formatString:(NSString *)formatString, ... NS_FORMAT_FUNCTION(3,4); + +// Register a timestamp label with the "current" time, to then be retrieved by singleShotLogEntry +// to include a duration. ++ (void)registerCurrentTime:(NSString *)loggingBehavior + withTag:(NSObject *)timestampTag; + +// When logging strings, replace all instances of 'replace' with instances of 'replaceWith'. ++ (void)registerStringToReplace:(NSString *)replace + replaceWith:(NSString *)replaceWith; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m new file mode 100644 index 0000000..89e9197 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m @@ -0,0 +1,219 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLogger.h" + +#import "FBSDKInternalUtility.h" +#import "FBSDKSettings+Internal.h" + +static NSUInteger g_serialNumberCounter = 1111; +static NSMutableDictionary *g_stringsToReplace = nil; +static NSMutableDictionary *g_startTimesWithTags = nil; + +@interface FBSDKLogger () + +@property (nonatomic, strong, readonly) NSMutableString *internalContents; + +@end + +@implementation FBSDKLogger + +// Lifetime + +- (instancetype)initWithLoggingBehavior:(NSString *)loggingBehavior +{ + if ((self = [super init])) { + _isActive = [[FBSDKSettings loggingBehavior] containsObject:loggingBehavior]; + _loggingBehavior = loggingBehavior; + if (_isActive) { + _internalContents = [[NSMutableString alloc] init]; + _loggerSerialNumber = [FBSDKLogger generateSerialNumber]; + } + } + + return self; +} + +// Public properties + +- (NSString *)contents +{ + return _internalContents; +} + +- (void)setContents:(NSString *)contents +{ + if (_isActive) { + _internalContents = [NSMutableString stringWithString:contents]; + } +} + +// Public instance methods + +- (void)appendString:(NSString *)string +{ + if (_isActive) { + [_internalContents appendString:string]; + } +} + +- (void)appendFormat:(NSString *)formatString, ... +{ + if (_isActive) { + va_list vaArguments; + va_start(vaArguments, formatString); + NSString *logString = [[NSString alloc] initWithFormat:formatString arguments:vaArguments]; + va_end(vaArguments); + + [self appendString:logString]; + } +} + + +- (void)appendKey:(NSString *)key value:(NSString *)value +{ + if (_isActive && [value length]) { + [_internalContents appendFormat:@" %@:\t%@\n", key, value]; + } +} + +- (void)emitToNSLog +{ + if (_isActive) { + + for (NSString *key in [g_stringsToReplace keyEnumerator]) { + [_internalContents replaceOccurrencesOfString:key + withString:[g_stringsToReplace objectForKey:key] + options:NSLiteralSearch + range:NSMakeRange(0, _internalContents.length)]; + } + + // Xcode 4.4 hangs on extremely long NSLog output (http://openradar.appspot.com/11972490). Truncate if needed. + const int MAX_LOG_STRING_LENGTH = 10000; + NSString *logString = _internalContents; + if (_internalContents.length > MAX_LOG_STRING_LENGTH) { + logString = [NSString stringWithFormat:@"TRUNCATED: %@", [_internalContents substringToIndex:MAX_LOG_STRING_LENGTH]]; + } + NSLog(@"FBSDKLog: %@", logString); + + [_internalContents setString:@""]; + } +} + +// Public static methods + ++ (NSUInteger)generateSerialNumber +{ + return g_serialNumberCounter++; +} + ++ (void)singleShotLogEntry:(NSString *)loggingBehavior + logEntry:(NSString *)logEntry { + if ([[FBSDKSettings loggingBehavior] containsObject:loggingBehavior]) { + FBSDKLogger *logger = [[FBSDKLogger alloc] initWithLoggingBehavior:loggingBehavior]; + [logger appendString:logEntry]; + [logger emitToNSLog]; + } +} + ++ (void)singleShotLogEntry:(NSString *)loggingBehavior + formatString:(NSString *)formatString, ... { + + if ([[FBSDKSettings loggingBehavior] containsObject:loggingBehavior]) { + va_list vaArguments; + va_start(vaArguments, formatString); + NSString *logString = [[NSString alloc] initWithFormat:formatString arguments:vaArguments]; + va_end(vaArguments); + + [self singleShotLogEntry:loggingBehavior logEntry:logString]; + } +} + + ++ (void)singleShotLogEntry:(NSString *)loggingBehavior + timestampTag:(NSObject *)timestampTag + formatString:(NSString *)formatString, ... { + + if ([[FBSDKSettings loggingBehavior] containsObject:loggingBehavior]) { + va_list vaArguments; + va_start(vaArguments, formatString); + NSString *logString = [[NSString alloc] initWithFormat:formatString arguments:vaArguments]; + va_end(vaArguments); + + // Start time of this "timestampTag" is stashed in the dictionary. + // Treat the incoming object tag simply as an address, since it's only used to identify during lifetime. If + // we send in as an object, the dictionary will try to copy it. + NSNumber *tagAsNumber = [NSNumber numberWithUnsignedLong:(unsigned long)(__bridge void *)timestampTag]; + NSNumber *startTimeNumber = [g_startTimesWithTags objectForKey:tagAsNumber]; + + // Only log if there's been an associated start time. + if (startTimeNumber) { + unsigned long elapsed = [FBSDKInternalUtility currentTimeInMilliseconds] - startTimeNumber.unsignedLongValue; + [g_startTimesWithTags removeObjectForKey:tagAsNumber]; // served its purpose, remove + + // Log string is appended with "%d msec", with nothing intervening. This gives the most control to the caller. + logString = [NSString stringWithFormat:@"%@%lu msec", logString, elapsed]; + + [self singleShotLogEntry:loggingBehavior logEntry:logString]; + } + } +} + ++ (void)registerCurrentTime:(NSString *)loggingBehavior + withTag:(NSObject *)timestampTag { + + if ([[FBSDKSettings loggingBehavior] containsObject:loggingBehavior]) { + + if (!g_startTimesWithTags) { + g_startTimesWithTags = [[NSMutableDictionary alloc] init]; + } + + if (g_startTimesWithTags.count >= 1000) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry: + @"Unexpectedly large number of outstanding perf logging start times, something is likely wrong."]; + } + + unsigned long currTime = [FBSDKInternalUtility currentTimeInMilliseconds]; + + // Treat the incoming object tag simply as an address, since it's only used to identify during lifetime. If + // we send in as an object, the dictionary will try to copy it. + unsigned long tagAsNumber = (unsigned long)(__bridge void *)timestampTag; + [g_startTimesWithTags setObject:[NSNumber numberWithUnsignedLong:currTime] + forKey:[NSNumber numberWithUnsignedLong:tagAsNumber]]; + } +} + + ++ (void)registerStringToReplace:(NSString *)replace + replaceWith:(NSString *)replaceWith { + + // Strings sent in here never get cleaned up, but that's OK, don't ever expect too many. + + if ([[FBSDKSettings loggingBehavior] count] > 0) { // otherwise there's no logging. + + if (!g_stringsToReplace) { + g_stringsToReplace = [[NSMutableDictionary alloc] init]; + } + + [g_stringsToReplace setValue:replaceWith forKey:replace]; + } +} + + + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h new file mode 100644 index 0000000..e3f9cd5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h @@ -0,0 +1,38 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import +#import + +@interface FBSDKMath : NSObject + ++ (CGPoint)ceilForPoint:(CGPoint)value; ++ (CGSize)ceilForSize:(CGSize)value; ++ (CGPoint)floorForPoint:(CGPoint)value; ++ (CGSize)floorForSize:(CGSize)value; ++ (NSUInteger)hashWithCGFloat:(CGFloat)value; ++ (NSUInteger)hashWithCString:(const char *)value; ++ (NSUInteger)hashWithDouble:(double)value; ++ (NSUInteger)hashWithFloat:(float)value; ++ (NSUInteger)hashWithInteger:(NSUInteger)value; ++ (NSUInteger)hashWithInteger:(NSUInteger)value1 andInteger:(NSUInteger)value2; ++ (NSUInteger)hashWithIntegerArray:(NSUInteger *)values count:(NSUInteger)count; ++ (NSUInteger)hashWithLong:(unsigned long long)value; ++ (NSUInteger)hashWithPointer:(const void *)value; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m new file mode 100644 index 0000000..6ac3fe5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m @@ -0,0 +1,159 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// +// Based on Thomas Wang 32/64 bit mix hash +// http://www.concentric.net/~Ttwang/tech/inthash.htm +// + +#import "FBSDKMath.h" + +#import + +#import "FBSDKMacros.h" + +@implementation FBSDKMath + +#pragma mark - Class Methods + ++ (CGPoint)ceilForPoint:(CGPoint)value +{ + return CGPointMake(ceilf(value.x), ceilf(value.x)); +} + ++ (CGSize)ceilForSize:(CGSize)value +{ + return CGSizeMake(ceilf(value.width), ceilf(value.height)); +} + ++ (CGPoint)floorForPoint:(CGPoint)value +{ + return CGPointMake(floorf(value.x), floorf(value.y)); +} + ++ (CGSize)floorForSize:(CGSize)value +{ + return CGSizeMake(floorf(value.width), floorf(value.height)); +} + ++ (NSUInteger)hashWithCGFloat:(CGFloat)value +{ +#if CGFLOAT_IS_DOUBLE + return [self hashWithDouble:value]; +#else + return [self hashWithFloat:value]; +#endif +} + ++ (NSUInteger)hashWithCString:(const char *)value +{ + // FNV-1a hash. + NSUInteger hash = sizeof(NSUInteger) == 4 ? 2166136261U : 14695981039346656037U; + while (*value) { + hash ^= *value++; + hash *= sizeof(NSUInteger) == 4 ? 16777619 : 1099511628211; + } + return hash; +} + ++ (NSUInteger)hashWithDouble:(double)value +{ + assert(sizeof(double) == sizeof(uint64_t)); // Size of double must be 8 bytes + union { + double key; + uint64_t bits; + } u; + u.key = value; + return [self hashWithLong:u.bits]; +} + ++ (NSUInteger)hashWithFloat:(float)value +{ + assert(sizeof(float) == sizeof(uint32_t)); // Size of float must be 4 bytes + union { + float key; + uint32_t bits; + } u; + u.key = value; + return [self hashWithInteger:u.bits]; +} + ++ (NSUInteger)hashWithInteger:(NSUInteger)value +{ + return [self hashWithPointer:(void *)value]; +} + ++ (NSUInteger)hashWithInteger:(NSUInteger)value1 andInteger:(NSUInteger)value2 +{ + return [self hashWithLong:(((unsigned long long)value1) << 32 | value2)]; +} + ++ (NSUInteger)hashWithIntegerArray:(NSUInteger *)values count:(NSUInteger)count +{ + if (count == 0) { + return 0; + } + NSUInteger hash = values[0]; + for (NSUInteger i = 1; i < count; ++i) { + hash = [self hashWithInteger:hash andInteger:values[i]]; + } + return hash; +} + ++ (NSUInteger)hashWithLong:(unsigned long long)value +{ + value = (~value) + (value << 18); // key = (key << 18) - key - 1; + value ^= (value >> 31); + value *= 21; // key = (key + (key << 2)) + (key << 4); + value ^= (value >> 11); + value += (value << 6); + value ^= (value >> 22); + return (NSUInteger)value; +} + ++ (NSUInteger)hashWithPointer:(const void *)value +{ + NSUInteger hash = (NSUInteger)value; +#if !TARGET_RT_64_BIT + hash = ~hash + (hash << 15); // key = (key << 15) - key - 1; + hash ^= (hash >> 12); + hash += (hash << 2); + hash ^= (hash >> 4); + hash *= 2057; // key = (key + (key << 3)) + (key << 11); + hash ^= (hash >> 16); +#else + hash += ~hash + (hash << 21); // key = (key << 21) - key - 1; + hash ^= (hash >> 24); + hash = (hash + (hash << 3)) + (hash << 8); + hash ^= (hash >> 14); + hash = (hash + (hash << 2)) + (hash << 4); // key * 21 + hash ^= (hash >> 28); + hash += (hash << 31); +#endif + return hash; +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + FBSDK_NO_DESIGNATED_INITIALIZER(); + return nil; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h new file mode 100644 index 0000000..b771602 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h @@ -0,0 +1,67 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#include + +typedef double FBSDKMonotonicTimeSeconds; +typedef uint64_t FBSDKMonotonicTimeMilliseconds; +typedef uint64_t FBSDKMonotonicTimeNanoseconds; +typedef uint64_t FBSDKMachAbsoluteTimeUnits; + +/** + * return current monotonic time in Milliseconds + * Millisecond precision, uint64_t value. + * Avoids float/double math operations, thus more efficient than FBSDKMonotonicTimeGetCurrentSeconds. + * Should be prefered over FBSDKMonotonicTimeGetCurrentSeconds in case millisecond + * precision is requred. + * IMPORTANT: this timer doesn't run while the device is sleeping. + */ +FBSDKMonotonicTimeMilliseconds FBSDKMonotonicTimeGetCurrentMilliseconds(void); + +/** + * return current monotonic time in Seconds + * Nanosecond precision, double value. + * Should be prefered over FBSDKMonotonicTimeGetCurrentMilliseconds in case + * nanosecond precision is requred. + * IMPORTANT: this timer doesn't run while the device is sleeping. + */ +FBSDKMonotonicTimeSeconds FBSDKMonotonicTimeGetCurrentSeconds(void); + +/** + * return current monotonic time in NanoSeconds + * Nanosecond precision, uint64_t value. + * Useful when nanosecond precision is required but you want to avoid float/double math operations. + * IMPORTANT: this timer doesn't run while the device is sleeping. + */ +FBSDKMonotonicTimeNanoseconds FBSDKMonotonicTimeGetCurrentNanoseconds(void); + +/** + * return number of MachTimeUnits for given number of seconds + * this is useful when you want to use the really fast mach_absolute_time() function + * to calculate deltas between two points and then check it against a (precomputed) threshold. + * Nanosecond precision, uint64_t value. + */ +FBSDKMachAbsoluteTimeUnits FBSDKMonotonicTimeConvertSecondsToMachUnits(FBSDKMonotonicTimeSeconds seconds); + +/** + * return the number of seconds for a given amount of MachTimeUnits + * this is useful when you want to use the really fast mach_absolute_time() function, take + * deltas between time points, and when you're out of the timing critical section, use + * this function to compute how many seconds the delta works out to be. + */ +FBSDKMonotonicTimeSeconds FBSDKMonotonicTimeConvertMachUnitsToSeconds(FBSDKMachAbsoluteTimeUnits machUnits); diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m new file mode 100644 index 0000000..1a52c81 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m @@ -0,0 +1,86 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#include +#include +#include +#include + +#import "FBSDKMonotonicTime.h" + +/** + * PLEASE NOTE: FBSDKSDKMonotonicTimeTests work fine, but are disabled + * because they take several seconds. Please re-enable them to test + * any changes you're making here! + */ +static uint64_t _get_time_nanoseconds(void) +{ + static struct mach_timebase_info tb_info = {0}; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + int ret = mach_timebase_info(&tb_info); + assert(0 == ret); + }); + + return (mach_absolute_time() * tb_info.numer) / tb_info.denom; +} + +FBSDKMonotonicTimeSeconds FBSDKMonotonicTimeGetCurrentSeconds(void) +{ + const uint64_t nowNanoSeconds = _get_time_nanoseconds(); + return (FBSDKMonotonicTimeSeconds)nowNanoSeconds / (FBSDKMonotonicTimeSeconds)1000000000.0; +} + +FBSDKMonotonicTimeMilliseconds FBSDKMonotonicTimeGetCurrentMilliseconds(void) +{ + const uint64_t nowNanoSeconds = _get_time_nanoseconds(); + return nowNanoSeconds / 1000000; +} + +FBSDKMonotonicTimeNanoseconds FBSDKMonotonicTimeGetCurrentNanoseconds(void) +{ + return _get_time_nanoseconds(); +} + +FBSDKMachAbsoluteTimeUnits FBSDKMonotonicTimeConvertSecondsToMachUnits(FBSDKMonotonicTimeSeconds seconds) +{ + static double ratio = 0; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + struct mach_timebase_info tb_info = {0}; + int ret = mach_timebase_info(&tb_info); + assert(0 == ret); + ratio = ((double) tb_info.denom / (double)tb_info.numer) * 1000000000.0; + }); + + return seconds * ratio; +} + +FBSDKMonotonicTimeSeconds FBSDKMonotonicTimeConvertMachUnitsToSeconds(FBSDKMachAbsoluteTimeUnits machUnits) +{ + static double ratio = 0; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + struct mach_timebase_info tb_info = {0}; + int ret = mach_timebase_info(&tb_info); + assert(0 == ret); + ratio = ((double) tb_info.numer / (double)tb_info.denom) / 1000000000.0; + }); + + return ratio * (double)machUnits; +} diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h new file mode 100644 index 0000000..d2298d5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h @@ -0,0 +1,26 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKProfile.h" + +@interface FBSDKProfile(Internal) + ++ (void)cacheProfile:(FBSDKProfile *) profile; ++ (FBSDKProfile *)fetchCachedProfile; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h new file mode 100644 index 0000000..2af3879 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h @@ -0,0 +1,36 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAccessTokenCache.h" +#import "FBSDKSettings.h" + +@interface FBSDKSettings(Internal) + ++ (FBSDKAccessTokenCache *)accessTokenCache; + +- (void)setAccessTokenCache; + ++ (NSString *)graphAPIDebugParamValue; + ++ (BOOL)isGraphErrorRecoveryDisabled; + +// used by Unity. ++ (NSString *)userAgentSuffix; ++ (void)setUserAgentSuffix:(NSString *)suffix; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h new file mode 100644 index 0000000..00999f5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h @@ -0,0 +1,82 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import +#import + +typedef void (^FBSDKGraphRequestAccessToAccountsHandler)(NSString *oauthToken, NSError *accountStoreError); + +/* + @class + + @abstract Adapter around system account store APIs. Note this is only intended for internal + consumption. If publicized, consider moving declarations to an internal only header and + reconsider dispatching semantics. + */ +@interface FBSDKSystemAccountStoreAdapter : NSObject + +/* + @abstract + Requests access to the device's Facebook account for the given parameters. + @param permissions the permissions + @param defaultAudience the default audience + @param isReauthorize a flag describing if this is a reauth request + @param appID the app id + @param handler the handler that will be invoked on completion (dispatched to the main thread). the oauthToken is nil on failure. + */ +- (void)requestAccessToFacebookAccountStore:(NSSet *)permissions + defaultAudience:(NSString *)defaultAudience + isReauthorize:(BOOL)isReauthorize + appID:(NSString *)appID + handler:(FBSDKGraphRequestAccessToAccountsHandler)handler; + +/* + @abstract Sends a message to the device account store to renew the Facebook account credentials + + @param handler the handler that is invoked on completion + */ +- (void)renewSystemAuthorization:(void(^)(ACAccountCredentialRenewResult result, NSError *error))handler; + +/* + @abstracts gets the oauth token stored in the account store credential, if available. If not empty, + this implies user has granted access. + */ +- (NSString *)accessTokenString; + +/* + @abstract Gets the singleton instance. + */ ++ (FBSDKSystemAccountStoreAdapter *)sharedInstance; + +/* + @abstract Sets the singleton instance, typically only for unit tests + */ ++ (void)setSharedInstance:(FBSDKSystemAccountStoreAdapter *)instance; + +/* + @abstract Gets or sets the flag indicating if the next requestAccess call should block + on a renew call. + */ +@property (nonatomic, assign) BOOL forceBlockingRenew; + +/* + @abstract A convenience getter to the Facebook account type in the account store, if available. + */ +@property (strong, nonatomic, readonly) ACAccountType *accountType; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m new file mode 100644 index 0000000..43f506a --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m @@ -0,0 +1,275 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKSystemAccountStoreAdapter.h" + +#import "FBSDKConstants.h" +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKError.h" +#import "FBSDKLogger.h" +#import "FBSDKSettings+Internal.h" + +@interface FBSDKSystemAccountStoreAdapter () + +@property (retain, nonatomic, readonly) ACAccountStore *accountStore; + +@end + +static NSString *const FBForceBlockingRenewKey = @"com.facebook.sdk:ForceBlockingRenewKey"; +static FBSDKSystemAccountStoreAdapter *_singletonInstance = nil; + +@implementation FBSDKSystemAccountStoreAdapter +{ + ACAccountStore *_accountStore; + ACAccountType *_accountType; +} + ++ (void)initialize +{ + if (self == [FBSDKSystemAccountStoreAdapter class]) { + _singletonInstance = [[self alloc] init]; + } +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + _forceBlockingRenew = [[NSUserDefaults standardUserDefaults] boolForKey:FBForceBlockingRenewKey]; + } + return self; +} + +#pragma mark - Properties + +- (ACAccountStore *)accountStore +{ + if (_accountStore == nil) { + _accountStore = [[fbsdkdfl_ACAccountStoreClass() alloc] init]; + } + return _accountStore; +} + +- (ACAccountType *)accountType +{ + if (_accountType == nil) { + _accountType = [self.accountStore accountTypeWithAccountTypeIdentifier:@"com.apple.facebook"]; + } + return _accountType; +} + +- (void)setForceBlockingRenew:(BOOL)forceBlockingRenew +{ + if (_forceBlockingRenew != forceBlockingRenew) { + _forceBlockingRenew = forceBlockingRenew; + NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; + [userDefaults setBool:forceBlockingRenew forKey:FBForceBlockingRenewKey]; + [userDefaults synchronize]; + } +} + ++ (FBSDKSystemAccountStoreAdapter *)sharedInstance +{ + return _singletonInstance; +} + ++ (void)setSharedInstance:(FBSDKSystemAccountStoreAdapter *)instance +{ + _singletonInstance = instance; +} + +- (NSString *)accessTokenString +{ + if (self.accountType && self.accountType.accessGranted) { + NSArray *fbAccounts = [self.accountStore accountsWithAccountType:self.accountType]; + if (fbAccounts.count > 0) { + id account = [fbAccounts objectAtIndex:0]; + id credential = [account credential]; + + return [credential oauthToken]; + } + } + return nil; +} + +#pragma mark - Public properties and methods + +- (void)requestAccessToFacebookAccountStore:(NSSet *)permissions + defaultAudience:(NSString *)defaultAudience + isReauthorize:(BOOL)isReauthorize + appID:(NSString *)appID + handler:(FBSDKGraphRequestAccessToAccountsHandler)handler +{ + if (appID == nil) { + @throw [NSException exceptionWithName:NSInvalidArgumentException + reason:@"appID cannot be nil" + userInfo:nil]; + } + + // no publish_* permissions are permitted with a nil audience + if (!defaultAudience && isReauthorize) { + for (NSString *p in permissions) { + if ([p hasPrefix:@"publish"]) { + [[NSException exceptionWithName:NSInvalidArgumentException + reason:@"FBSDKLoginManager: One or more publish permission was requested " + @"without specifying an audience; use FBSDKDefaultAudienceOnlyMe, " + @"FBSDKDefaultAudienceFriends, or FBSDKDefaultAudienceEveryone" + userInfo:nil] + raise]; + } + } + } + + // construct access options + NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: + appID, fbsdkdfl_ACFacebookAppIdKey(), + [permissions allObjects], fbsdkdfl_ACFacebookPermissionsKey(), + defaultAudience, fbsdkdfl_ACFacebookAudienceKey(), // must end on this key/value due to audience possibly being nil + nil]; + + if (self.forceBlockingRenew + && [self.accountStore accountsWithAccountType:self.accountType].count > 0) { + // If the force renew flag is set and an iOS FB account is still set, + // chain the requestAccessBlock to a successful renew result + [self renewSystemAuthorization:^(ACAccountCredentialRenewResult result, NSError *error) { + if (result == ACAccountCredentialRenewResultRenewed) { + self.forceBlockingRenew = NO; + [self requestAccessToFacebookAccountStore:options retrying:NO handler:handler]; + } else if (handler) { + // Otherwise, invoke the caller's handler back on the main thread with an + // error that will trigger the password change user message. + dispatch_async(dispatch_get_main_queue(), ^{ + handler(nil, error); + }); + } + }]; + } else { + // Otherwise go ahead and invoke normal request. + [self requestAccessToFacebookAccountStore:options retrying:NO handler:handler]; + } +} + +- (void)requestAccessToFacebookAccountStore:(NSDictionary *)options + retrying:(BOOL)retrying + handler:(FBSDKGraphRequestAccessToAccountsHandler)handler +{ + if (!self.accountType) { + if (handler) { + handler(nil, [FBSDKError errorWithCode:FBSDKUnknownErrorCode message:@"Invalid request to account store"]); + } + return; + } + // we will attempt an iOS integrated facebook login + [self.accountStore + requestAccessToAccountsWithType:self.accountType + options:options + completion:^(BOOL granted, NSError *error) { + if (!granted && + error.code == ACErrorPermissionDenied && + [error.description rangeOfString:@"remote_app_id does not match stored id"].location != NSNotFound) { + + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors formatString: + @"System authorization failed:'%@'. This may be caused by a mismatch between" + @" the bundle identifier and your app configuration on the server" + @" at developers.facebook.com/apps.", + error.localizedDescription]; + } + + // requestAccessToAccountsWithType:options:completion: completes on an + // arbitrary thread; let's process this back on our main thread + dispatch_async(dispatch_get_main_queue(), ^{ + NSError *accountStoreError = error; + NSString *oauthToken = nil; + id account = nil; + if (granted) { + NSArray *fbAccounts = [self.accountStore accountsWithAccountType:self.accountType]; + if (fbAccounts.count > 0) { + account = [fbAccounts objectAtIndex:0]; + + id credential = [account credential]; + + oauthToken = [credential oauthToken]; + } + self.forceBlockingRenew = NO; + } + + if (!accountStoreError && !oauthToken) { + if (!retrying) { + // This can happen as a result of, e.g., restoring from iCloud to a different device. Try once to renew. + [self renewSystemAuthorization:^(ACAccountCredentialRenewResult renewResult, NSError *renewError) { + // Call block again, regardless of result -- either we'll get credentials or we'll fail with the + // exception below. We want to treat failure here the same regardless of whether it was before or after the refresh attempt. + [self requestAccessToFacebookAccountStore:options retrying:YES handler:handler]; + }]; + return; + } + // else call handler with nils. + } + handler(oauthToken, accountStoreError); + }); + }]; +} + +- (void)renewSystemAuthorization:(void(^)(ACAccountCredentialRenewResult, NSError *))handler +{ + // if the slider has been set to off, renew calls to iOS simply hang, so we must + // preemptively check for that condition. + if (self.accountStore && self.accountType && self.accountType.accessGranted) { + NSArray *fbAccounts = [self.accountStore accountsWithAccountType:self.accountType]; + id account; + if (fbAccounts && [fbAccounts count] > 0 && + (account = [fbAccounts objectAtIndex:0])) { + + FBSDKAccessToken *currentToken = [FBSDKAccessToken currentAccessToken]; + if (![currentToken.tokenString isEqualToString:[self accessTokenString]]) { + currentToken = nil; + } + [self.accountStore renewCredentialsForAccount:account completion:^(ACAccountCredentialRenewResult renewResult, NSError *error) { + if (error) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorAccessTokens + logEntry:[NSString stringWithFormat:@"renewCredentialsForAccount result:%ld, error: %@", + (long)renewResult, + error]]; + } + if (renewResult == ACAccountCredentialRenewResultRenewed && + currentToken && + [currentToken isEqual:[FBSDKAccessToken currentAccessToken]]) { + // account store renewals can change the stored oauth token so we need to update the currentAccessToken + // so future comparisons to -[ accessTokenString] work correctly (e.g., error recovery). + FBSDKAccessToken *updatedToken = [[FBSDKAccessToken alloc] initWithTokenString:[self accessTokenString] + permissions:[currentToken.permissions allObjects] declinedPermissions:[currentToken.declinedPermissions allObjects] + appID:currentToken.appID + userID:currentToken.userID + expirationDate:[NSDate distantFuture] + refreshDate:[NSDate date]]; + [FBSDKAccessToken setCurrentAccessToken:updatedToken]; + } + if (handler) { + handler(renewResult, error); + } + }]; + return; + } + } + + if (handler) { + handler(ACAccountCredentialRenewResultFailed, nil); + } +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h new file mode 100644 index 0000000..8fe3e9e --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h @@ -0,0 +1,32 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +typedef NS_ENUM(NSInteger, FBSDKTriStateBOOL) +{ + FBSDKTriStateBOOLValueUnknown = -1, + FBSDKTriStateBOOLValueNO = 0, + FBSDKTriStateBOOLValueYES = 1, +}; + +FBSDK_EXTERN FBSDKTriStateBOOL FBSDKTriStateBOOLFromBOOL(BOOL value); +FBSDK_EXTERN FBSDKTriStateBOOL FBSDKTriStateBOOLFromNSNumber(NSNumber *value); +FBSDK_EXTERN BOOL BOOLFromFBSDKTriStateBOOL(FBSDKTriStateBOOL value, BOOL defaultValue); diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m new file mode 100644 index 0000000..c25d365 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m @@ -0,0 +1,43 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKTriStateBOOL.h" + +FBSDKTriStateBOOL FBSDKTriStateBOOLFromBOOL(BOOL value) +{ + return value ? FBSDKTriStateBOOLValueYES : FBSDKTriStateBOOLValueNO; +} + +FBSDKTriStateBOOL FBSDKTriStateBOOLFromNSNumber(NSNumber *value) +{ + return ([value isKindOfClass:[NSNumber class]] ? + FBSDKTriStateBOOLFromBOOL([value boolValue]) : + FBSDKTriStateBOOLValueUnknown); +} + +BOOL BOOLFromFBSDKTriStateBOOL(FBSDKTriStateBOOL value, BOOL defaultValue) +{ + switch (value) { + case FBSDKTriStateBOOLValueYES: + return YES; + case FBSDKTriStateBOOLValueNO: + return NO; + case FBSDKTriStateBOOLValueUnknown: + return defaultValue; + } +} diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h new file mode 100644 index 0000000..7daa2fc --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h @@ -0,0 +1,32 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@interface FBSDKTypeUtility : NSObject + ++ (NSArray *)arrayValue:(id)object; ++ (BOOL)boolValue:(id)object; ++ (NSDictionary *)dictionaryValue:(id)object; ++ (NSInteger)integerValue:(id)object; ++ (id)objectValue:(id)object; ++ (NSString *)stringValue:(id)object; ++ (NSUInteger)unsignedIntegerValue:(id)object; ++ (NSURL *)URLValue:(id)object; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m new file mode 100644 index 0000000..84de948 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m @@ -0,0 +1,120 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKTypeUtility.h" + +#import "FBSDKMacros.h" + +@implementation FBSDKTypeUtility + +#pragma mark - Class Methods + ++ (NSArray *)arrayValue:(id)object +{ + return (NSArray *)[self _objectValue:object ofClass:[NSArray class]]; +} + ++ (BOOL)boolValue:(id)object +{ + if ([object isKindOfClass:[NSNumber class]]) { + // @0 or @NO returns NO, otherwise YES + return [(NSNumber *)object boolValue]; + } else if ([object isKindOfClass:[NSString class]]) { + // Returns YES on encountering one of "Y", "y", "T", "t", or a digit 1-9, otherwise NO + return [(NSString *)object boolValue]; + } else { + return ([self objectValue:object] != nil); + } +} + ++ (NSDictionary *)dictionaryValue:(id)object +{ + return (NSDictionary *)[self _objectValue:object ofClass:[NSDictionary class]]; +} + ++ (NSInteger)integerValue:(id)object +{ + if ([object isKindOfClass:[NSNumber class]]) { + return [(NSNumber *)object integerValue]; + } else if ([object isKindOfClass:[NSString class]]) { + return [(NSString *)object integerValue]; + } else { + return 0; + } +} + ++ (id)objectValue:(id)object +{ + return ([object isKindOfClass:[NSNull class]] ? nil : object); +} + ++ (NSString *)stringValue:(id)object +{ + if ([object isKindOfClass:[NSString class]]) { + return (NSString *)object; + } else if ([object isKindOfClass:[NSNumber class]]) { + return [(NSNumber *)object stringValue]; + } else if ([object isKindOfClass:[NSURL class]]) { + return [(NSURL *)object absoluteString]; + } else { + return nil; + } +} + ++ (NSUInteger)unsignedIntegerValue:(id)object +{ + if ([object isKindOfClass:[NSNumber class]]) { + return [(NSNumber *)object unsignedIntegerValue]; + } else { + // there is no direct support for strings containing unsigned values > NSIntegerMax - not worth writing ourselves + // right now, so just cap unsigned values at NSIntegerMax until we have a need for larger + NSInteger integerValue = [self integerValue:object]; + if (integerValue < 0) { + integerValue = 0; + } + return (NSUInteger)integerValue; + } +} + ++ (NSURL *)URLValue:(id)object +{ + if ([object isKindOfClass:[NSURL class]]) { + return (NSURL *)object; + } else if ([object isKindOfClass:[NSString class]]) { + return [[NSURL alloc] initWithString:(NSString *)object]; + } else { + return nil; + } +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + FBSDK_NO_DESIGNATED_INITIALIZER(); + return nil; +} + +#pragma mark - Helper Methods + ++ (id)_objectValue:(id)object ofClass:(Class)expectedClass +{ + return ([object isKindOfClass:expectedClass] ? object : nil); +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h new file mode 100644 index 0000000..86fedc6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h @@ -0,0 +1,56 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +typedef NS_OPTIONS(NSUInteger, FBSDKGraphRequestFlags) +{ + FBSDKGraphRequestFlagNone = 0, + // indicates this request should not use a client token as its token parameter + FBSDKGraphRequestFlagSkipClientToken = 1 << 1, + // indicates this request should not close the session if its response is an oauth error + FBSDKGraphRequestFlagDoNotInvalidateTokenOnError = 1 << 2, + // indicates this request should not perform error recovery + FBSDKGraphRequestFlagDisableErrorRecovery = 1 << 3, +}; +@interface FBSDKGraphRequest (Internal) + +- (instancetype)initWithGraphPath:(NSString *)graphPath + parameters:(NSDictionary *)parameters + flags:(FBSDKGraphRequestFlags)flags; +- (instancetype)initWithGraphPath:(NSString *)graphPath + parameters:(NSDictionary *)parameters + tokenString:(NSString *)tokenString + HTTPMethod:(NSString *)HTTPMethod + flags:(FBSDKGraphRequestFlags)flags; +// Generally, requests automatically issued by the SDK +// should not invalidate the token and should disableErrorRecovery +// so that we don't cause a sudden change in token state or trigger recovery +// out of context of any user action. +@property (nonatomic, assign) FBSDKGraphRequestFlags flags; + +- (BOOL)isGraphErrorRecoveryDisabled; +- (BOOL)hasAttachments; ++ (BOOL)isAttachment:(id)item; ++ (NSString *)serializeURL:(NSString *)baseUrl + params:(NSDictionary *)params + httpMethod:(NSString *)httpMethod; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h new file mode 100644 index 0000000..b61c782 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h @@ -0,0 +1,47 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import +#import + +@class FBSDKGraphRequestDataAttachment; +@class FBSDKLogger; + +@interface FBSDKGraphRequestBody : NSObject + +@property (nonatomic, retain, readonly) NSData *data; + +- (void)appendWithKey:(NSString *)key + formValue:(NSString *)value + logger:(FBSDKLogger *)logger; + +- (void)appendWithKey:(NSString *)key + imageValue:(UIImage *)image + logger:(FBSDKLogger *)logger; + +- (void)appendWithKey:(NSString *)key + dataValue:(NSData *)data + logger:(FBSDKLogger *)logger; + +- (void)appendWithKey:(NSString *)key + dataAttachmentValue:(FBSDKGraphRequestDataAttachment *)dataAttachment + logger:(FBSDKLogger *)logger; + ++ (NSString *)mimeContentType; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m new file mode 100644 index 0000000..5462576 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m @@ -0,0 +1,131 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKGraphRequestBody.h" + +#import "FBSDKGraphRequestDataAttachment.h" +#import "FBSDKLogger.h" +#import "FBSDKSettings.h" + +#define kStringBoundary @"3i2ndDfv2rTHiSisAbouNdArYfORhtTPEefj3q2f" +#define kNewline @"\r\n" + +@implementation FBSDKGraphRequestBody +{ + NSMutableData *_data; +} + +- (instancetype)init +{ + if ((self = [super init])) { + _data = [[NSMutableData alloc] init]; + } + + return self; +} + ++ (NSString *)mimeContentType +{ + return [NSString stringWithFormat:@"multipart/form-data; boundary=%@", kStringBoundary]; +} + +- (void)appendUTF8:(NSString *)utf8 +{ + if (![_data length]) { + NSString *headerUTF8 = [NSString stringWithFormat:@"--%@%@", kStringBoundary, kNewline]; + NSData *headerData = [headerUTF8 dataUsingEncoding:NSUTF8StringEncoding]; + [_data appendData:headerData]; + } + NSData *data = [utf8 dataUsingEncoding:NSUTF8StringEncoding]; + [_data appendData:data]; +} + +- (void)appendWithKey:(NSString *)key + formValue:(NSString *)value + logger:(FBSDKLogger *)logger +{ + [self _appendWithKey:key filename:nil contentType:nil contentBlock:^{ + [self appendUTF8:value]; + }]; + [logger appendFormat:@"\n %@:\t%@", key, (NSString *)value]; +} + +- (void)appendWithKey:(NSString *)key + imageValue:(UIImage *)image + logger:(FBSDKLogger *)logger +{ + NSData *data = UIImageJPEGRepresentation(image, [FBSDKSettings JPEGCompressionQuality]); + [self _appendWithKey:key filename:key contentType:@"image/jpeg" contentBlock:^{ + [_data appendData:data]; + }]; + [logger appendFormat:@"\n %@:\t", key, (unsigned long)([data length] / 1024)]; +} + +- (void)appendWithKey:(NSString *)key + dataValue:(NSData *)data + logger:(FBSDKLogger *)logger +{ + [self _appendWithKey:key filename:key contentType:@"content/unknown" contentBlock:^{ + [_data appendData:data]; + }]; + [logger appendFormat:@"\n %@:\t", key, (unsigned long)([data length] / 1024)]; +} + +- (void)appendWithKey:(NSString *)key + dataAttachmentValue:(FBSDKGraphRequestDataAttachment *)dataAttachment + logger:(FBSDKLogger *)logger +{ + NSString *filename = dataAttachment.filename ?: key; + NSString *contentType = dataAttachment.contentType ?: @"content/unknown"; + NSData *data = dataAttachment.data; + [self _appendWithKey:key filename:filename contentType:contentType contentBlock:^{ + [_data appendData:data]; + }]; + [logger appendFormat:@"\n %@:\t", key, (unsigned long)([data length] / 1024)]; +} + +- (NSData *)data +{ + return [_data copy]; +} + +- (void)_appendWithKey:(NSString *)key + filename:(NSString *)filename + contentType:(NSString *)contentType + contentBlock:(void(^)(void))contentBlock +{ + NSMutableArray *disposition = [[NSMutableArray alloc] init]; + [disposition addObject:@"Content-Disposition: form-data"]; + if (key) { + [disposition addObject:[[NSString alloc] initWithFormat:@"name=\"%@\"", key]]; + } + if (filename) { + [disposition addObject:[[NSString alloc] initWithFormat:@"filename=\"%@\"", filename]]; + } + [self appendUTF8:[[NSString alloc] initWithFormat:@"%@%@", [disposition componentsJoinedByString:@"; "], kNewline]]; + if (contentType) { + [self appendUTF8:[[NSString alloc] initWithFormat:@"Content-Type: %@%@", contentType, kNewline]]; + } + [self appendUTF8:kNewline]; + if (contentBlock != NULL) { + contentBlock(); + } + [self appendUTF8:[[NSString alloc] initWithFormat:@"%@--%@%@", kNewline, kStringBoundary, kNewline]]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h new file mode 100644 index 0000000..c63688c --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@interface FBSDKGraphRequestConnection(Internal) + +@property (nonatomic, readonly) NSMutableArray *requests; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h new file mode 100644 index 0000000..cd218c4 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h @@ -0,0 +1,40 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +// Internal only class to facilitate FBSDKGraphRequest processing, specifically +// associating FBSDKGraphRequest and FBSDKGraphRequestHandler instances and necessary +// data for retry processing. +@interface FBSDKGraphRequestMetadata : NSObject + +@property (nonatomic, retain) FBSDKGraphRequest *request; +@property (nonatomic, copy) FBSDKGraphRequestHandler completionHandler; +@property (nonatomic, copy) NSDictionary *batchParameters; + +- (instancetype)initWithRequest:(FBSDKGraphRequest *)request + completionHandler:(FBSDKGraphRequestHandler)handler + batchParameters:(NSDictionary *)batchParameters +NS_DESIGNATED_INITIALIZER; + +- (void)invokeCompletionHandlerForConnection:(FBSDKGraphRequestConnection *)connection + withResults:(id)results + error:(NSError *)error; +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m new file mode 100644 index 0000000..3b0ee78 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m @@ -0,0 +1,62 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKGraphRequestMetadata.h" + +#import "FBSDKGraphRequest.h" +#import "FBSDKMacros.h" + +@implementation FBSDKGraphRequestMetadata + +- (instancetype)initWithRequest:(FBSDKGraphRequest *)request + completionHandler:(FBSDKGraphRequestHandler)handler + batchParameters:(NSDictionary *)batchParameters { + + if ((self = [super init])) { + _request = request; + _batchParameters = [batchParameters copy]; + _completionHandler = [handler copy]; + } + return self; +} + +- (instancetype)init +{ + FBSDK_NOT_DESIGNATED_INITIALIZER(initWithRequest:completionHandler:batchParameters:); + return [self initWithRequest:nil completionHandler:NULL batchParameters:nil]; +} + +- (void)invokeCompletionHandlerForConnection:(FBSDKGraphRequestConnection *)connection + withResults:(id)results + error:(NSError *)error { + if (self.completionHandler) { + self.completionHandler(connection, results, error); + } +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p, batchParameters: %@, completionHandler: %@, request: %@>", + NSStringFromClass([self class]), + self, + self.batchParameters, + self.completionHandler, + self.request.description]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h new file mode 100644 index 0000000..567f8ec --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h @@ -0,0 +1,30 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKCoreKit+Internal.h" + +@interface FBSDKGraphRequestPiggybackManager : NSObject + ++ (void)addPiggybackRequests:(FBSDKGraphRequestConnection *)connection; + ++ (void)addRefreshPiggyback:(FBSDKGraphRequestConnection *)connection permissionHandler:(FBSDKGraphRequestHandler)permissionHandler; + ++ (void)addRefreshPiggybackIfStale:(FBSDKGraphRequestConnection *)connection; + ++ (void)addServerConfigurationPiggyback:(FBSDKGraphRequestConnection *)connection; +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m new file mode 100644 index 0000000..e0e4866 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m @@ -0,0 +1,140 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKGraphRequestPiggybackManager.h" + +#import "FBSDKCoreKit+Internal.h" + +static int const FBSDKTokenRefreshThresholdSeconds = 24 * 60 * 60; // day +static int const FBSDKTokenRefreshRetrySeconds = 60 * 60; // hour + +@implementation FBSDKGraphRequestPiggybackManager + ++ (void)addPiggybackRequests:(FBSDKGraphRequestConnection *)connection +{ + if ([FBSDKSettings appID].length > 0) { + BOOL safeForPiggyback = YES; + for (FBSDKGraphRequestMetadata *metadata in connection.requests) { + if (![metadata.request.version isEqualToString:FBSDK_TARGET_PLATFORM_VERSION] || + [metadata.request hasAttachments]) { + safeForPiggyback = NO; + break; + } + } + if (safeForPiggyback) { + [[self class] addRefreshPiggybackIfStale:connection]; + [[self class] addServerConfigurationPiggyback:connection]; + } + } +} + ++ (void)addRefreshPiggyback:(FBSDKGraphRequestConnection *)connection permissionHandler:(FBSDKGraphRequestHandler)permissionHandler +{ + FBSDKAccessToken *expectedToken = [FBSDKAccessToken currentAccessToken]; + __block NSMutableSet *permissions = nil; + __block NSMutableSet *declinedPermissions = nil; + __block NSString *tokenString = nil; + __block NSNumber *expirationDateNumber = nil; + __block int expectingCallbacksCount = 2; + void (^expectingCallbackComplete)(void) = ^{ + if (--expectingCallbacksCount == 0) { + FBSDKAccessToken *currentToken = [FBSDKAccessToken currentAccessToken]; + NSDate *expirationDate = currentToken.expirationDate; + if (expirationDateNumber) { + expirationDate = ([expirationDateNumber doubleValue] > 0 ? + [NSDate dateWithTimeIntervalSince1970:[expirationDateNumber doubleValue]] : + [NSDate distantFuture]); + } + FBSDKAccessToken *refreshedToken = [[FBSDKAccessToken alloc] initWithTokenString:tokenString ?: currentToken.tokenString + permissions:[(permissions ?: currentToken.permissions) allObjects] + declinedPermissions:[(declinedPermissions ?: currentToken.declinedPermissions) allObjects] + appID:currentToken.appID + userID:currentToken.userID + expirationDate:expirationDate + refreshDate:[NSDate date]]; + if (expectedToken == currentToken) { + [FBSDKAccessToken setCurrentAccessToken:refreshedToken]; + } + } + }; + FBSDKGraphRequest *extendRequest = [[FBSDKGraphRequest alloc] initWithGraphPath:@"oauth/access_token" + parameters:@{@"grant_type" : @"fb_extend_sso_token", + @"fields": @"" + } + flags:FBSDKGraphRequestFlagDisableErrorRecovery]; + + [connection addRequest:extendRequest completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { + tokenString = result[@"access_token"]; + expirationDateNumber = result[@"expires_at"]; + expectingCallbackComplete(); + }]; + FBSDKGraphRequest *permissionsRequest = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/permissions" + parameters:@{@"fields": @""} + flags:FBSDKGraphRequestFlagDisableErrorRecovery]; + + [connection addRequest:permissionsRequest completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { + if (!error) { + permissions = [NSMutableSet set]; + declinedPermissions = [NSMutableSet set]; + + [FBSDKInternalUtility extractPermissionsFromResponse:result + grantedPermissions:permissions + declinedPermissions:declinedPermissions]; + } + expectingCallbackComplete(); + if (permissionHandler) { + permissionHandler(innerConnection, result, error); + } + }]; +} + ++ (void)addRefreshPiggybackIfStale:(FBSDKGraphRequestConnection *)connection +{ + // don't piggy back more than once an hour as a cheap way of + // retrying in cases of errors and preventing duplicate refreshes. + // obviously this is not foolproof but is simple and sufficient. + static NSDate *lastRefreshTry; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + lastRefreshTry = [NSDate distantPast]; + }); + + NSDate *now = [NSDate date]; + NSDate *tokenRefreshDate = [FBSDKAccessToken currentAccessToken].refreshDate; + if (tokenRefreshDate && + [now timeIntervalSinceDate:lastRefreshTry] > FBSDKTokenRefreshRetrySeconds && + [now timeIntervalSinceDate:tokenRefreshDate] > FBSDKTokenRefreshThresholdSeconds) { + [self addRefreshPiggyback:connection permissionHandler:NULL]; + lastRefreshTry = [NSDate date]; + } +} + ++ (void)addServerConfigurationPiggyback:(FBSDKGraphRequestConnection *)connection +{ + if (![[FBSDKServerConfigurationManager cachedServerConfiguration] isDefaults]) { + return; + } + NSString *appID = [FBSDKSettings appID]; + FBSDKGraphRequest *serverConfigurationRequest = [FBSDKServerConfigurationManager requestToLoadServerConfiguration:appID]; + [connection addRequest:serverConfigurationRequest + completionHandler:^(FBSDKGraphRequestConnection *conn, id result, NSError *error) { + [FBSDKServerConfigurationManager processLoadRequestResponse:result error:error appID:appID]; + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h new file mode 100644 index 0000000..cbe80a0 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h @@ -0,0 +1,51 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@class FBSDKURLConnection; + +typedef void (^FBSDKURLConnectionHandler)(FBSDKURLConnection *connection, + NSError *error, + NSURLResponse *response, + NSData *responseData); + +@protocol FBSDKURLConnectionDelegate + +@optional + +- (void)facebookURLConnection:(FBSDKURLConnection *)connection + didSendBodyData:(NSInteger)bytesWritten + totalBytesWritten:(NSInteger)totalBytesWritten + totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; + +@end + +@interface FBSDKURLConnection : NSObject + +- (FBSDKURLConnection *)initWithRequest:(NSURLRequest *)request + completionHandler:(FBSDKURLConnectionHandler)handler +NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, assign) id delegate; + +- (void)cancel; +- (void)start; +- (void)setDelegateQueue:(NSOperationQueue *)queue; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m new file mode 100644 index 0000000..613fb8b --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m @@ -0,0 +1,191 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKURLConnection.h" + +#import "FBSDKInternalUtility.h" +#import "FBSDKLogger.h" +#import "FBSDKMacros.h" +#import "FBSDKSettings.h" + +@interface FBSDKURLConnection () + +@property (nonatomic, retain) NSURLConnection *connection; +@property (nonatomic, retain) NSMutableData *data; +@property (nonatomic, copy) FBSDKURLConnectionHandler handler; +@property (nonatomic, retain) NSURLResponse *response; +@property (nonatomic) unsigned long requestStartTime; +@property (nonatomic, readonly) NSUInteger loggerSerialNumber; + +@end + +@implementation FBSDKURLConnection + +#pragma mark - Lifecycle + +- (FBSDKURLConnection *)initWithRequest:(NSURLRequest *)request + completionHandler:(FBSDKURLConnectionHandler)handler { + if ((self = [super init])) { + _requestStartTime = [FBSDKInternalUtility currentTimeInMilliseconds]; + _loggerSerialNumber = [FBSDKLogger generateSerialNumber]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + _connection = [[NSURLConnection alloc] + initWithRequest:request + delegate:self + startImmediately:NO]; +#pragma clang diagnostic pop + _data = [[NSMutableData alloc] init]; + + _handler = [handler copy]; + } + return self; +} + +- (instancetype)init +{ + FBSDK_NOT_DESIGNATED_INITIALIZER(initWithRequest:completionHandler:); + return [self initWithRequest:nil completionHandler:NULL]; +} + +- (void)logAndInvokeHandler:(FBSDKURLConnectionHandler)handler + error:(NSError *)error { + if (error) { + NSString *logEntry = [NSString + stringWithFormat:@"FBSDKURLConnection <#%lu>:\n Error: '%@'\n%@\n", + (unsigned long)self.loggerSerialNumber, + [error localizedDescription], + [error userInfo]]; + + [self logMessage:logEntry]; + } + + [self invokeHandler:handler error:error response:nil responseData:nil]; +} + +- (void)logAndInvokeHandler:(FBSDKURLConnectionHandler)handler + response:(NSURLResponse *)response + responseData:(NSData *)responseData { + // Basic FBSDKURLConnection logging just prints out the URL. FBSDKGraphRequest logging provides more details. + NSString *mimeType = [response MIMEType]; + NSMutableString *mutableLogEntry = [NSMutableString stringWithFormat:@"FBSDKURLConnection <#%lu>:\n Duration: %lu msec\nResponse Size: %lu kB\n MIME type: %@\n", + (unsigned long)self.loggerSerialNumber, + [FBSDKInternalUtility currentTimeInMilliseconds] - self.requestStartTime, + (unsigned long)[responseData length] / 1024, + mimeType]; + + if ([mimeType isEqualToString:@"text/javascript"]) { + NSString *responseUTF8 = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; + [mutableLogEntry appendFormat:@" Response:\n%@\n\n", responseUTF8]; + } + + [self logMessage:mutableLogEntry]; + + [self invokeHandler:handler error:nil response:response responseData:responseData]; +} + +- (void)invokeHandler:(FBSDKURLConnectionHandler)handler + error:(NSError *)error + response:(NSURLResponse *)response + responseData:(NSData *)responseData { + if (handler != nil) { + handler(self, error, response, responseData); + } +} + +- (void)logMessage:(NSString *)message +{ + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorNetworkRequests formatString:@"%@", message]; +} + +- (void)cancel +{ + [self.connection cancel]; + self.handler = nil; +} + +- (void)connection:(NSURLConnection *)connection +didReceiveResponse:(NSURLResponse *)response +{ + self.response = response; + [self.data setLength:0]; +} + +- (void)connection:(NSURLResponse *)connection + didReceiveData:(NSData *)data { + [self.data appendData:data]; +} + +- (void)connection:(NSURLConnection *)connection + didFailWithError:(NSError *)error { + @try { + if ([error.domain isEqualToString:NSURLErrorDomain] && error.code == kCFURLErrorSecureConnectionFailed) { + NSOperatingSystemVersion iOS9Version = { .majorVersion = 9, .minorVersion = 0, .patchVersion = 0 }; + if ([FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS9Version]) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors + logEntry:@"WARNING: FBSDK secure network request failed. Please verify you have configured your " + "app for Application Transport Security compatibility described at https://developers.facebook.com/docs/ios/ios9"]; + } + } + [self logAndInvokeHandler:self.handler error:error]; + } @finally { + self.handler = nil; + } +} + +- (void)connectionDidFinishLoading:(NSURLConnection *)connection +{ + @try { + [self logAndInvokeHandler:self.handler response:self.response responseData:self.data]; + } @finally { + self.handler = nil; + } +} + +- (NSURLRequest *)connection:(NSURLConnection *)connection + willSendRequest:(NSURLRequest *)request + redirectResponse:(NSURLResponse *)redirectResponse { + return request; +} + +- (void) connection:(NSURLConnection *)connection + didSendBodyData:(NSInteger)bytesWritten + totalBytesWritten:(NSInteger)totalBytesWritten +totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite +{ + id delegate = self.delegate; + + if ([delegate respondsToSelector:@selector(facebookURLConnection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:)]) { + [delegate facebookURLConnection:self + didSendBodyData:bytesWritten + totalBytesWritten:totalBytesWritten + totalBytesExpectedToWrite:totalBytesExpectedToWrite]; + } +} + +- (void)start +{ + [_connection start]; +} + +- (void)setDelegateQueue:(NSOperationQueue*)queue +{ + [_connection setDelegateQueue:queue]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h new file mode 100644 index 0000000..8913cc0 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h @@ -0,0 +1,34 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +@interface FBSDKDialogConfiguration : NSObject + +- (instancetype)initWithName:(NSString *)name + URL:(NSURL *)URL + appVersions:(NSArray *)appVersions +NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, copy, readonly) NSArray *appVersions; +@property (nonatomic, copy, readonly) NSString *name; +@property (nonatomic, copy, readonly) NSURL *URL; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m new file mode 100644 index 0000000..a8986c0 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m @@ -0,0 +1,78 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKDialogConfiguration.h" + +#import "FBSDKMacros.h" + +#define FBSDK_DIALOG_CONFIGURATION_APP_VERSIONS_KEY @"appVersions" +#define FBSDK_DIALOG_CONFIGURATION_NAME_KEY @"name" +#define FBSDK_DIALOG_CONFIGURATION_URL_KEY @"url" + +@implementation FBSDKDialogConfiguration + +#pragma mark - Object Lifecycle + +- (instancetype)initWithName:(NSString *)name URL:(NSURL *)URL appVersions:(NSArray *)appVersions +{ + if ((self = [super init])) { + _name = [name copy]; + _URL = [URL copy]; + _appVersions = [appVersions copy]; + } + return self; +} + +- (instancetype)init +{ + FBSDK_NOT_DESIGNATED_INITIALIZER(initWithName:URL:appVersions:); + return [self initWithName:nil URL:nil appVersions:nil]; +} + +#pragma mark NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + NSString *name = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_DIALOG_CONFIGURATION_NAME_KEY]; + NSURL *URL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_DIALOG_CONFIGURATION_URL_KEY]; + NSSet *appVersionsClasses = [NSSet setWithObjects:[NSArray class], [NSNumber class], nil]; + NSArray *appVersions = [decoder decodeObjectOfClasses:appVersionsClasses + forKey:FBSDK_DIALOG_CONFIGURATION_APP_VERSIONS_KEY]; + return [self initWithName:name URL:URL appVersions:appVersions]; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:_appVersions forKey:FBSDK_DIALOG_CONFIGURATION_APP_VERSIONS_KEY]; + [encoder encodeObject:_name forKey:FBSDK_DIALOG_CONFIGURATION_NAME_KEY]; + [encoder encodeObject:_URL forKey:FBSDK_DIALOG_CONFIGURATION_URL_KEY]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + return self; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h new file mode 100644 index 0000000..ae8bce7 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h @@ -0,0 +1,36 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKErrorRecoveryConfiguration.h" + +@class FBSDKGraphRequest; + +// maps codes and subcodes pairs to FBSDKErrorRecoveryConfiguration instances. +@interface FBSDKErrorConfiguration : NSObject + +// initialize from optional dictionary of existing configurations. If not supplied a fallback will be created. +- (instancetype)initWithDictionary:(NSDictionary *)dictionary NS_DESIGNATED_INITIALIZER; + +// parses the array (supplied from app settings endpoint) +- (void)parseArray:(NSArray *)array; + +// NSString "code" instances support "*" wildcard semantics (nil is treated as "*" also) +// 'request' is optional, typically for identifying special graph request semantics (e.g., no recovery for client token) +- (FBSDKErrorRecoveryConfiguration *)recoveryConfigurationForCode:(NSString *)code subcode:(NSString *)subcode request:(FBSDKGraphRequest *)request; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m new file mode 100644 index 0000000..81589c4 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m @@ -0,0 +1,176 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKErrorConfiguration.h" + +#import + +#import "FBSDKErrorRecoveryConfiguration.h" + +static NSString *const kErrorCategoryOther = @"other"; +static NSString *const kErrorCategoryTransient = @"transient"; +static NSString *const kErrorCategoryLogin = @"login"; + +#define FBSDKERRORCONFIGURATION_DICTIONARY_KEY @"configurationDictionary" + +@implementation FBSDKErrorConfiguration +{ + NSMutableDictionary *_configurationDictionary; +} + +- (instancetype)init +{ + FBSDK_NOT_DESIGNATED_INITIALIZER(initWithDictionary:); + return [self initWithDictionary:nil]; +} + +- (instancetype)initWithDictionary:(NSDictionary *)dictionary +{ + if ((self = [super init])) { + if (dictionary) { + _configurationDictionary = [NSMutableDictionary dictionaryWithDictionary:dictionary]; + } else { + _configurationDictionary = [NSMutableDictionary dictionary]; + NSString *localizedOK = + NSLocalizedStringWithDefaultValue(@"ErrorRecovery.OK", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"OK", + @"The title of the label to start attempting error recovery"); + NSString *localizedCancel = + NSLocalizedStringWithDefaultValue(@"ErrorRecovery.Cancel", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Cancel", + @"The title of the label to decline attempting error recovery"); + NSString *localizedTransientSuggestion = + NSLocalizedStringWithDefaultValue(@"ErrorRecovery.Transient.Suggestion", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"The server is temporarily busy, please try again.", + @"The fallback message to display to retry transient errors"); + NSString *localizedLoginRecoverableSuggestion = + NSLocalizedStringWithDefaultValue(@"ErrorRecovery.Login.Suggestion", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Please log into this app again to reconnect your Facebook account.", + @"The fallback message to display to recover invalidated tokens"); + NSArray *fallbackArray = @[ + @{ @"name" : @"login", + @"items" : @[ @{ @"code" : @102 }, + @{ @"code" : @190 } ], + @"recovery_message" : localizedLoginRecoverableSuggestion, + @"recovery_options" : @[ localizedOK, localizedCancel] + }, + @{ @"name" : @"transient", + @"items" : @[ @{ @"code" : @1 }, + @{ @"code" : @2 }, + @{ @"code" : @4 }, + @{ @"code" : @9 }, + @{ @"code" : @17 }, + @{ @"code" : @341 } ], + @"recovery_message" : localizedTransientSuggestion, + @"recovery_options" : @[ localizedOK] + }, + ]; + [self parseArray:fallbackArray]; + } + } + return self; +} + +- (FBSDKErrorRecoveryConfiguration *)recoveryConfigurationForCode:(NSString *)code subcode:(NSString *)subcode request:(FBSDKGraphRequest *)request +{ + code = code ?: @"*"; + subcode = subcode ?: @"*"; + FBSDKErrorRecoveryConfiguration *configuration = (_configurationDictionary[code][subcode] ?: + _configurationDictionary[code][@"*"] ?: + _configurationDictionary[@"*"][subcode] ?: + _configurationDictionary[@"*"][@"*"]); + if (configuration.errorCategory == FBSDKGraphRequestErrorCategoryRecoverable && + [FBSDKSettings clientToken] && + [request.parameters[@"access_token"] hasSuffix:[FBSDKSettings clientToken]]) { + // do not attempt to recovery client tokens. + return nil; + } + return configuration; +} + +- (void)parseArray:(NSArray *)array +{ + for (NSDictionary *dictionary in array) { + [dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *key, id obj, BOOL *stop) { + FBSDKGraphRequestErrorCategory category; + NSString *action = dictionary[@"name"]; + if ([action isEqualToString:kErrorCategoryOther]) { + category = FBSDKGraphRequestErrorCategoryOther; + } else if ([action isEqualToString:kErrorCategoryTransient]) { + category = FBSDKGraphRequestErrorCategoryTransient; + } else { + category = FBSDKGraphRequestErrorCategoryRecoverable; + } + NSString *suggestion = dictionary[@"recovery_message"]; + NSArray *options = dictionary[@"recovery_options"]; + for (NSDictionary *codeSubcodesDictionary in dictionary[@"items"]) { + NSString *code = [codeSubcodesDictionary[@"code"] stringValue]; + + NSMutableDictionary *currentSubcodes = _configurationDictionary[code]; + if (!currentSubcodes) { + currentSubcodes = [NSMutableDictionary dictionary]; + _configurationDictionary[code] = currentSubcodes; + } + + NSArray *subcodes = codeSubcodesDictionary[@"subcodes"]; + if (subcodes.count > 0) { + for (NSNumber *subcodeNumber in subcodes) { + currentSubcodes[[subcodeNumber stringValue]] = [[FBSDKErrorRecoveryConfiguration alloc] + initWithRecoveryDescription:suggestion + optionDescriptions:options + category:category + recoveryActionName:action]; + } + } else { + currentSubcodes[@"*"] = [[FBSDKErrorRecoveryConfiguration alloc] + initWithRecoveryDescription:suggestion + optionDescriptions:options + category:category + recoveryActionName:action]; + } + } + }]; + } +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + NSDictionary *configurationDictionary = [decoder decodeObjectOfClass:[NSDictionary class] forKey:FBSDKERRORCONFIGURATION_DICTIONARY_KEY]; + return [self initWithDictionary:configurationDictionary]; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:_configurationDictionary forKey:FBSDKERRORCONFIGURATION_DICTIONARY_KEY]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + return self; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h new file mode 100644 index 0000000..105618f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h @@ -0,0 +1,35 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +//immutable +@interface FBSDKErrorRecoveryConfiguration : NSObject + +@property (nonatomic, readonly) NSString *localizedRecoveryDescription; +@property (nonatomic, readonly) NSArray *localizedRecoveryOptionDescriptions; +@property (nonatomic, readonly) FBSDKGraphRequestErrorCategory errorCategory; +@property (nonatomic, readonly) NSString *recoveryActionName; + +- (instancetype)initWithRecoveryDescription:(NSString *)description + optionDescriptions:(NSArray *)optionDescriptions + category:(FBSDKGraphRequestErrorCategory)category + recoveryActionName:(NSString *)recoveryActionName NS_DESIGNATED_INITIALIZER; +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m new file mode 100644 index 0000000..3c0642d --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m @@ -0,0 +1,86 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKErrorRecoveryConfiguration.h" + +#define FBSDK_ERROR_RECOVERY_CONFIGURATION_DESCRIPTION_KEY @"description" +#define FBSDK_ERROR_RECOVERY_CONFIGURATION_OPTIONS_KEY @"options" +#define FBSDK_ERROR_RECOVERY_CONFIGURATION_CATEGORY_KEY @"category" +#define FBSDK_ERROR_RECOVERY_CONFIGURATION_ACTION_KEY @"action" + +@implementation FBSDKErrorRecoveryConfiguration + +- (instancetype)init +{ + FBSDK_NOT_DESIGNATED_INITIALIZER(initWithRecoveryDescription:optionDescriptions:category:recoveryActionName:); + return [self initWithRecoveryDescription:nil + optionDescriptions:nil + category:0 + recoveryActionName:nil]; +} + +- (instancetype)initWithRecoveryDescription:(NSString *)description + optionDescriptions:(NSArray *)optionDescriptions + category:(FBSDKGraphRequestErrorCategory)category + recoveryActionName:(NSString *)recoveryActionName { + if ((self = [super init])) { + _localizedRecoveryDescription = [description copy]; + _localizedRecoveryOptionDescriptions = [optionDescriptions copy]; + _errorCategory = category; + _recoveryActionName = [recoveryActionName copy]; + } + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + NSString *description = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_ERROR_RECOVERY_CONFIGURATION_DESCRIPTION_KEY]; + NSArray *options = [decoder decodeObjectOfClass:[NSArray class] forKey:FBSDK_ERROR_RECOVERY_CONFIGURATION_OPTIONS_KEY]; + NSNumber *category = [decoder decodeObjectOfClass:[NSNumber class] forKey:FBSDK_ERROR_RECOVERY_CONFIGURATION_CATEGORY_KEY]; + NSString *action = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_ERROR_RECOVERY_CONFIGURATION_ACTION_KEY]; + + return [self initWithRecoveryDescription:description + optionDescriptions:options + category:[category unsignedIntegerValue] + recoveryActionName:action]; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:_localizedRecoveryDescription forKey:FBSDK_ERROR_RECOVERY_CONFIGURATION_DESCRIPTION_KEY]; + [encoder encodeObject:_localizedRecoveryOptionDescriptions forKey:FBSDK_ERROR_RECOVERY_CONFIGURATION_OPTIONS_KEY]; + [encoder encodeObject:@(_errorCategory) forKey:FBSDK_ERROR_RECOVERY_CONFIGURATION_CATEGORY_KEY]; + [encoder encodeObject:_recoveryActionName forKey:FBSDK_ERROR_RECOVERY_CONFIGURATION_ACTION_KEY]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + //immutable + return self; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h new file mode 100644 index 0000000..5096c03 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +extern NSString *const FBSDKDialogConfigurationNameDefault; +extern NSString *const FBSDKDialogConfigurationNameSharing; + +extern NSString *const FBSDKDialogConfigurationFeatureUseNativeFlow; +extern NSString *const FBSDKDialogConfigurationFeatureUseSafariViewController; diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h new file mode 100644 index 0000000..9cd1825 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h @@ -0,0 +1,74 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import "FBSDKDialogConfiguration.h" +#import "FBSDKErrorConfiguration.h" + +// login kit +extern NSString *const FBSDKDialogConfigurationNameLogin; + +// share kit +extern NSString *const FBSDKDialogConfigurationNameAppInvite; +extern NSString *const FBSDKDialogConfigurationNameGameRequest; +extern NSString *const FBSDKDialogConfigurationNameGroup; +extern NSString *const FBSDKDialogConfigurationNameLike; +extern NSString *const FBSDKDialogConfigurationNameMessage; +extern NSString *const FBSDKDialogConfigurationNameShare; + +@interface FBSDKServerConfiguration : NSObject + +- (instancetype)initWithAppID:(NSString *)appID + appName:(NSString *)appName + loginTooltipEnabled:(BOOL)loginTooltipEnabled + loginTooltipText:(NSString *)loginTooltipText + defaultShareMode:(NSString *)defaultShareMode + advertisingIDEnabled:(BOOL)advertisingIDEnabled + implicitLoggingEnabled:(BOOL)implicitLoggingEnabled +implicitPurchaseLoggingEnabled:(BOOL)implicitPurchaseLoggingEnabled + systemAuthenticationEnabled:(BOOL)systemAuthenticationEnabled + nativeAuthFlowEnabled:(BOOL)nativeAuthFlowEnabled + dialogConfigurations:(NSDictionary *)dialogConfigurations + dialogFlows:(NSDictionary *)dialogFlows + timestamp:(NSDate *)timestamp + errorConfiguration:(FBSDKErrorConfiguration *)errorConfiguration + defaults:(BOOL)defaults +NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, assign, readonly, getter=isAdvertisingIDEnabled) BOOL advertisingIDEnabled; +@property (nonatomic, copy, readonly) NSString *appID; +@property (nonatomic, copy, readonly) NSString *appName; +@property (nonatomic, assign, readonly, getter=isDefaults) BOOL defaults; +@property (nonatomic, copy, readonly) NSString *defaultShareMode; +@property (nonatomic, strong, readonly) FBSDKErrorConfiguration *errorConfiguration; +@property (nonatomic, assign, readonly, getter=isImplicitLoggingSupported) BOOL implicitLoggingEnabled; +@property (nonatomic, assign, readonly, getter=isImplicitPurchaseLoggingSupported) BOOL implicitPurchaseLoggingEnabled; +@property (nonatomic, assign, readonly, getter=isLoginTooltipEnabled) BOOL loginTooltipEnabled; +@property (nonatomic, assign, readonly, getter=isNativeAuthFlowEnabled) BOOL nativeAuthFlowEnabled; +@property (nonatomic, assign, readonly, getter=isSystemAuthenticationEnabled) BOOL systemAuthenticationEnabled; +@property (nonatomic, copy, readonly) NSString *loginTooltipText; +@property (nonatomic, copy, readonly) NSDate *timestamp; + +- (FBSDKDialogConfiguration *)dialogConfigurationForDialogName:(NSString *)dialogName; +- (BOOL)useNativeDialogForDialogName:(NSString *)dialogName; +- (BOOL)useSafariViewControllerForDialogName:(NSString *)dialogName; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m new file mode 100644 index 0000000..5faac5b --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m @@ -0,0 +1,219 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKServerConfiguration.h" +#import "FBSDKServerConfiguration+Internal.h" + +#import "FBSDKInternalUtility.h" +#import "FBSDKMacros.h" + +#define FBSDK_SERVER_CONFIGURATION_ADVERTISING_ID_ENABLED_KEY @"advertisingIDEnabled" +#define FBSDK_SERVER_CONFIGURATION_APP_ID_KEY @"appID" +#define FBSDK_SERVER_CONFIGURATION_APP_NAME_KEY @"appName" +#define FBSDK_SERVER_CONFIGURATION_DIALOG_CONFIGS_KEY @"dialogConfigs" +#define FBSDK_SERVER_CONFIGURATION_DIALOG_FLOWS_KEY @"dialogFlows" +#define FBSDK_SERVER_CONFIGURATION_ERROR_CONFIGS_KEY @"errorConfigs" +#define FBSDK_SERVER_CONFIGURATION_IMPLICIT_LOGGING_ENABLED_KEY @"implicitLoggingEnabled" +#define FBSDK_SERVER_CONFIGURATION_DEFAULT_SHARE_MODE_KEY @"defaultShareMode" +#define FBSDK_SERVER_CONFIGURATION_IMPLICIT_PURCHASE_LOGGING_ENABLED_KEY @"implicitPurchaseLoggingEnabled" +#define FBSDK_SERVER_CONFIGURATION_LOGIN_TOOLTIP_ENABLED_KEY @"loginTooltipEnabled" +#define FBSDK_SERVER_CONFIGURATION_LOGIN_TOOLTIP_TEXT_KEY @"loginTooltipText" +#define FBSDK_SERVER_CONFIGURATION_SYSTEM_AUTHENTICATION_ENABLED_KEY @"systemAuthenticationEnabled" +#define FBSDK_SERVER_CONFIGURATION_NATIVE_AUTH_FLOW_ENABLED_KEY @"nativeAuthFlowEnabled" +#define FBSDK_SERVER_CONFIGURATION_TIMESTAMP_KEY @"timestamp" + +#pragma mark - Dialog Names + +NSString *const FBSDKDialogConfigurationNameDefault = @"default"; + +NSString *const FBSDKDialogConfigurationNameLogin = @"login"; + +NSString *const FBSDKDialogConfigurationNameSharing = @"sharing"; + +NSString *const FBSDKDialogConfigurationNameAppInvite = @"app_invite"; +NSString *const FBSDKDialogConfigurationNameGameRequest = @"game_request"; +NSString *const FBSDKDialogConfigurationNameGroup = @"group"; +NSString *const FBSDKDialogConfigurationNameLike = @"like"; +NSString *const FBSDKDialogConfigurationNameMessage = @"message"; +NSString *const FBSDKDialogConfigurationNameShare = @"share"; + +NSString *const FBSDKDialogConfigurationFeatureUseNativeFlow = @"use_native_flow"; +NSString *const FBSDKDialogConfigurationFeatureUseSafariViewController = @"use_safari_vc"; + +@implementation FBSDKServerConfiguration +{ + NSDictionary *_dialogConfigurations; + NSDictionary *_dialogFlows; +} + +#pragma mark - Object Lifecycle + +- (instancetype)init NS_UNAVAILABLE +{ + assert(0); +} + +- (instancetype)initWithAppID:(NSString *)appID + appName:(NSString *)appName + loginTooltipEnabled:(BOOL)loginTooltipEnabled + loginTooltipText:(NSString *)loginTooltipText + defaultShareMode:(NSString*)defaultShareMode + advertisingIDEnabled:(BOOL)advertisingIDEnabled + implicitLoggingEnabled:(BOOL)implicitLoggingEnabled +implicitPurchaseLoggingEnabled:(BOOL)implicitPurchaseLoggingEnabled + systemAuthenticationEnabled:(BOOL)systemAuthenticationEnabled + nativeAuthFlowEnabled:(BOOL)nativeAuthFlowEnabled + dialogConfigurations:(NSDictionary *)dialogConfigurations + dialogFlows:(NSDictionary *)dialogFlows + timestamp:(NSDate *)timestamp + errorConfiguration:(FBSDKErrorConfiguration *)errorConfiguration + defaults:(BOOL)defaults +{ + if ((self = [super init])) { + _appID = [appID copy]; + _appName = [appName copy]; + _loginTooltipEnabled = loginTooltipEnabled; + _loginTooltipText = [loginTooltipText copy]; + _defaultShareMode = defaultShareMode; + _advertisingIDEnabled = advertisingIDEnabled; + _implicitLoggingEnabled = implicitLoggingEnabled; + _implicitPurchaseLoggingEnabled = implicitPurchaseLoggingEnabled; + _systemAuthenticationEnabled = systemAuthenticationEnabled; + _nativeAuthFlowEnabled = nativeAuthFlowEnabled; + _dialogConfigurations = [dialogConfigurations copy]; + _dialogFlows = [dialogFlows copy]; + _timestamp = [timestamp copy]; + _errorConfiguration = [errorConfiguration copy]; + _defaults = defaults; + } + return self; +} + +#pragma mark - Public Methods + +- (FBSDKDialogConfiguration *)dialogConfigurationForDialogName:(NSString *)dialogName +{ + return _dialogConfigurations[dialogName]; +} + +- (BOOL)useNativeDialogForDialogName:(NSString *)dialogName +{ + return [self _useFeatureWithKey:FBSDKDialogConfigurationFeatureUseNativeFlow dialogName:dialogName]; +} + +- (BOOL)useSafariViewControllerForDialogName:(NSString *)dialogName +{ + return [self _useFeatureWithKey:FBSDKDialogConfigurationFeatureUseSafariViewController dialogName:dialogName]; +} + +#pragma mark - Helper Methods + +- (BOOL)_useFeatureWithKey:(NSString *)key dialogName:(NSString *)dialogName +{ + if ([dialogName isEqualToString:FBSDKDialogConfigurationNameLogin]) { + return [(NSNumber *)(_dialogFlows[dialogName][key] ?: + _dialogFlows[FBSDKDialogConfigurationNameDefault][key]) boolValue]; + } else { + return [(NSNumber *)(_dialogFlows[dialogName][key] ?: + _dialogFlows[FBSDKDialogConfigurationNameSharing][key] ?: + _dialogFlows[FBSDKDialogConfigurationNameDefault][key]) boolValue]; + } +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + NSString *appID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SERVER_CONFIGURATION_APP_ID_KEY]; + NSString *appName = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SERVER_CONFIGURATION_APP_NAME_KEY]; + BOOL loginTooltipEnabled = [decoder decodeBoolForKey:FBSDK_SERVER_CONFIGURATION_LOGIN_TOOLTIP_ENABLED_KEY]; + NSString *loginTooltipText = [decoder decodeObjectOfClass:[NSString class] + forKey:FBSDK_SERVER_CONFIGURATION_LOGIN_TOOLTIP_TEXT_KEY]; + NSString *defaultShareMode = [decoder decodeObjectOfClass:[NSString class] + forKey:FBSDK_SERVER_CONFIGURATION_DEFAULT_SHARE_MODE_KEY]; + BOOL advertisingIDEnabled = [decoder decodeBoolForKey:FBSDK_SERVER_CONFIGURATION_ADVERTISING_ID_ENABLED_KEY]; + BOOL implicitLoggingEnabled = [decoder decodeBoolForKey:FBSDK_SERVER_CONFIGURATION_IMPLICIT_LOGGING_ENABLED_KEY]; + BOOL implicitPurchaseLoggingEnabbled = + [decoder decodeBoolForKey:FBSDK_SERVER_CONFIGURATION_IMPLICIT_PURCHASE_LOGGING_ENABLED_KEY]; + BOOL systemAuthenticationEnabled = + [decoder decodeBoolForKey:FBSDK_SERVER_CONFIGURATION_SYSTEM_AUTHENTICATION_ENABLED_KEY]; + BOOL nativeAuthFlowEnabled = [decoder decodeBoolForKey:FBSDK_SERVER_CONFIGURATION_NATIVE_AUTH_FLOW_ENABLED_KEY]; + NSDate *timestamp = [decoder decodeObjectOfClass:[NSDate class] forKey:FBSDK_SERVER_CONFIGURATION_TIMESTAMP_KEY]; + NSSet *dialogConfigurationsClasses = [[NSSet alloc] initWithObjects: + [NSDictionary class], + [FBSDKDialogConfiguration class], + nil]; + NSDictionary *dialogConfigurations = [decoder decodeObjectOfClasses:dialogConfigurationsClasses + forKey:FBSDK_SERVER_CONFIGURATION_DIALOG_CONFIGS_KEY]; + NSSet *dialogFlowsClasses = [[NSSet alloc] initWithObjects: + [NSDictionary class], + [NSString class], + [NSNumber class], + nil]; + NSDictionary *dialogFlows = [decoder decodeObjectOfClasses:dialogFlowsClasses + forKey:FBSDK_SERVER_CONFIGURATION_DIALOG_FLOWS_KEY]; + FBSDKErrorConfiguration *errorConfiguration = [decoder decodeObjectOfClass:[FBSDKErrorConfiguration class] forKey:FBSDK_SERVER_CONFIGURATION_ERROR_CONFIGS_KEY]; + return [self initWithAppID:appID + appName:appName + loginTooltipEnabled:loginTooltipEnabled + loginTooltipText:loginTooltipText + defaultShareMode:defaultShareMode + advertisingIDEnabled:advertisingIDEnabled + implicitLoggingEnabled:implicitLoggingEnabled +implicitPurchaseLoggingEnabled:implicitPurchaseLoggingEnabbled + systemAuthenticationEnabled:systemAuthenticationEnabled + nativeAuthFlowEnabled:nativeAuthFlowEnabled + dialogConfigurations:dialogConfigurations + dialogFlows:dialogFlows + timestamp:timestamp + errorConfiguration:errorConfiguration + defaults:NO]; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeBool:_advertisingIDEnabled forKey:FBSDK_SERVER_CONFIGURATION_ADVERTISING_ID_ENABLED_KEY]; + [encoder encodeObject:_appID forKey:FBSDK_SERVER_CONFIGURATION_APP_ID_KEY]; + [encoder encodeObject:_appName forKey:FBSDK_SERVER_CONFIGURATION_APP_NAME_KEY]; + [encoder encodeObject:_defaultShareMode forKey:FBSDK_SERVER_CONFIGURATION_DEFAULT_SHARE_MODE_KEY]; + [encoder encodeObject:_dialogConfigurations forKey:FBSDK_SERVER_CONFIGURATION_DIALOG_CONFIGS_KEY]; + [encoder encodeObject:_dialogFlows forKey:FBSDK_SERVER_CONFIGURATION_DIALOG_FLOWS_KEY]; + [encoder encodeObject:_errorConfiguration forKey:FBSDK_SERVER_CONFIGURATION_ERROR_CONFIGS_KEY]; + [encoder encodeBool:_implicitLoggingEnabled forKey:FBSDK_SERVER_CONFIGURATION_IMPLICIT_LOGGING_ENABLED_KEY]; + [encoder encodeBool:_implicitPurchaseLoggingEnabled + forKey:FBSDK_SERVER_CONFIGURATION_IMPLICIT_PURCHASE_LOGGING_ENABLED_KEY]; + [encoder encodeBool:_loginTooltipEnabled forKey:FBSDK_SERVER_CONFIGURATION_LOGIN_TOOLTIP_ENABLED_KEY]; + [encoder encodeObject:_loginTooltipText forKey:FBSDK_SERVER_CONFIGURATION_LOGIN_TOOLTIP_TEXT_KEY]; + [encoder encodeBool:_nativeAuthFlowEnabled forKey:FBSDK_SERVER_CONFIGURATION_NATIVE_AUTH_FLOW_ENABLED_KEY]; + [encoder encodeBool:_systemAuthenticationEnabled forKey:FBSDK_SERVER_CONFIGURATION_SYSTEM_AUTHENTICATION_ENABLED_KEY]; + [encoder encodeObject:_timestamp forKey:FBSDK_SERVER_CONFIGURATION_TIMESTAMP_KEY]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + return self; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h new file mode 100644 index 0000000..1edec6f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h @@ -0,0 +1,31 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKServerConfigurationManager.h" + +@class FBSDKGraphRequest; + +@interface FBSDKServerConfigurationManager () + ++ (void)processLoadRequestResponse:(id)result error:(NSError *)error appID:(NSString *)appID; + ++ (FBSDKGraphRequest *)requestToLoadServerConfiguration:(NSString *)appID; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h new file mode 100644 index 0000000..ed79efb --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h @@ -0,0 +1,40 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKServerConfiguration.h" + +typedef void(^FBSDKServerConfigurationManagerLoadBlock)(FBSDKServerConfiguration *serverConfiguration, NSError *error); + +@interface FBSDKServerConfigurationManager : NSObject + +/** + @abstract Returns the locally cached configuration. + @discussion The result will be valid for the appID from FBSDKSettings, but may be expired. A network request will be + initiated to update the configuration if a valid and unexpired configuration is not available. + */ ++ (FBSDKServerConfiguration *)cachedServerConfiguration; + +/** + @abstract Executes the completionBlock with a valid and current configuration when it is available. + @discussion This method will use a cached configuration if it is valid and not expired. + */ ++ (void)loadServerConfigurationWithCompletionBlock:(FBSDKServerConfigurationManagerLoadBlock)completionBlock; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m new file mode 100644 index 0000000..116e235 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m @@ -0,0 +1,357 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKServerConfigurationManager+Internal.h" + +#import "FBSDKGraphRequest+Internal.h" +#import "FBSDKGraphRequest.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKLogger.h" +#import "FBSDKServerConfiguration+Internal.h" +#import "FBSDKServerConfiguration.h" +#import "FBSDKSettings.h" +#import "FBSDKTypeUtility.h" + +// one hour +#define FBSDK_SERVER_CONFIGURATION_MANAGER_CACHE_TIMEOUT (60 * 60) + +#define FBSDK_SERVER_CONFIGURATION_USER_DEFAULTS_KEY @"com.facebook.sdk:serverConfiguration%@" + +#define FBSDK_SERVER_CONFIGURATION_APP_EVENTS_FEATURES_FIELD @"app_events_feature_bitmask" +#define FBSDK_SERVER_CONFIGURATION_APP_NAME_FIELD @"name" +#define FBSDK_SERVER_CONFIGURATION_DEFAULT_SHARE_MODE_FIELD @"default_share_mode" +#define FBSDK_SERVER_CONFIGURATION_DIALOG_CONFIGS_FIELD @"ios_dialog_configs" +#define FBSDK_SERVER_CONFIGURATION_DIALOG_FLOWS_FIELD @"ios_sdk_dialog_flows" +#define FBSDK_SERVER_CONFIGURATION_ERROR_CONFIGURATION_FIELD @"ios_sdk_error_categories" +#define FBSDK_SERVER_CONFIGURATION_IMPLICIT_LOGGING_ENABLED_FIELD @"supports_implicit_sdk_logging" +#define FBSDK_SERVER_CONFIGURATION_LOGIN_TOOLTIP_ENABLED_FIELD @"gdpv4_nux_enabled" +#define FBSDK_SERVER_CONFIGURATION_LOGIN_TOOLTIP_TEXT_FIELD @"gdpv4_nux_content" +#define FBSDK_SERVER_CONFIGURATION_NATIVE_PROXY_AUTH_FLOW_ENABLED_FIELD @"ios_supports_native_proxy_auth_flow" +#define FBSDK_SERVER_CONFIGURATION_SYSTEM_AUTHENTICATION_ENABLED_FIELD @"ios_supports_system_auth" + +@implementation FBSDKServerConfigurationManager + +static NSMutableArray *_completionBlocks; +static BOOL _loadingServerConfiguration; +static FBSDKServerConfiguration *_serverConfiguration; +static NSError *_serverConfigurationError; +static NSDate *_serverConfigurationErrorTimestamp; +static const NSTimeInterval kTimeout = 4.0; + +typedef NS_OPTIONS(NSUInteger, FBSDKServerConfigurationManagerAppEventsFeatures) +{ + FBSDKServerConfigurationManagerAppEventsFeaturesNone = 0, + FBSDKServerConfigurationManagerAppEventsFeaturesAdvertisingIDEnabled = 1 << 0, + FBSDKServerConfigurationManagerAppEventsFeaturesImplicitPurchaseLoggingEnabled = 1 << 1, +}; + +#pragma mark - Public Class Methods + ++ (void)initialize +{ + if (self == [FBSDKServerConfigurationManager class]) { + _completionBlocks = [[NSMutableArray alloc] init]; + } +} + ++ (FBSDKServerConfiguration *)cachedServerConfiguration +{ + NSString *appID = [FBSDKSettings appID]; + @synchronized(self) { + // load the server configuration if we don't have it already + [self loadServerConfigurationWithCompletionBlock:NULL]; + + // use whatever configuration we have or the default + return _serverConfiguration ?: [self _defaultServerConfigurationForAppID:appID]; + } +} + ++ (void)loadServerConfigurationWithCompletionBlock:(FBSDKServerConfigurationManagerLoadBlock)completionBlock +{ + void (^loadBlock)(void) = NULL; + NSString *appID = [FBSDKSettings appID]; + @synchronized(self) { + // validate the cached configuration has the correct appID + if (_serverConfiguration && ![_serverConfiguration.appID isEqualToString:appID]) { + _serverConfiguration = nil; + _serverConfigurationError = nil; + _serverConfigurationErrorTimestamp = nil; + } + + // load the configuration from NSUserDefaults + if (!_serverConfiguration) { + // load the defaults + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString *defaultsKey = [NSString stringWithFormat:FBSDK_SERVER_CONFIGURATION_USER_DEFAULTS_KEY, appID]; + NSData *data = [defaults objectForKey:defaultsKey]; + if ([data isKindOfClass:[NSData class]]) { + // decode the configuration + FBSDKServerConfiguration *serverConfiguration = [NSKeyedUnarchiver unarchiveObjectWithData:data]; + if ([serverConfiguration isKindOfClass:[FBSDKServerConfiguration class]]) { + // ensure that the configuration points to the current appID + if ([serverConfiguration.appID isEqualToString:appID]) { + _serverConfiguration = serverConfiguration; + } + } + } + } + + if ((_serverConfiguration && [self _serverConfigurationTimestampIsValid:_serverConfiguration.timestamp]) || + (_serverConfigurationErrorTimestamp && [self _serverConfigurationTimestampIsValid:_serverConfigurationErrorTimestamp])) { + // we have a valid server configuration, use that + loadBlock = [self _wrapperBlockForLoadBlock:completionBlock]; + } else { + // hold onto the completion block + [FBSDKInternalUtility array:_completionBlocks addObject:[completionBlock copy]]; + + // check if we are already loading + if (!_loadingServerConfiguration) { + // load the configuration from the network + _loadingServerConfiguration = YES; + FBSDKGraphRequest *request = [[self class] requestToLoadServerConfiguration:appID]; + + // start request with specified timeout instead of the default 180s + FBSDKGraphRequestConnection *requestConnection = [[FBSDKGraphRequestConnection alloc] init]; + requestConnection.timeout = kTimeout; + [requestConnection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + [self processLoadRequestResponse:result error:error appID:appID]; + }]; + [requestConnection start]; + } + } + } + + if (loadBlock != NULL) { + loadBlock(); + } +} + +#pragma mark - Internal Class Methods + ++ (void)processLoadRequestResponse:(id)result error:(NSError *)error appID:(NSString *)appID +{ + if (error) { + [self _didProcessConfigurationFromNetwork:nil appID:appID error:error]; + return; + } + + NSDictionary *resultDictionary = [FBSDKTypeUtility dictionaryValue:result]; + NSUInteger appEventsFeatures = [FBSDKTypeUtility unsignedIntegerValue:resultDictionary[FBSDK_SERVER_CONFIGURATION_APP_EVENTS_FEATURES_FIELD]]; + BOOL advertisingIDEnabled = (appEventsFeatures & FBSDKServerConfigurationManagerAppEventsFeaturesAdvertisingIDEnabled); + BOOL implicitPurchaseLoggingEnabled = (appEventsFeatures & FBSDKServerConfigurationManagerAppEventsFeaturesImplicitPurchaseLoggingEnabled); + + NSString *appName = [FBSDKTypeUtility stringValue:resultDictionary[FBSDK_SERVER_CONFIGURATION_APP_NAME_FIELD]]; + BOOL loginTooltipEnabled = [FBSDKTypeUtility boolValue:resultDictionary[FBSDK_SERVER_CONFIGURATION_LOGIN_TOOLTIP_ENABLED_FIELD]]; + NSString *loginTooltipText = [FBSDKTypeUtility stringValue:resultDictionary[FBSDK_SERVER_CONFIGURATION_LOGIN_TOOLTIP_TEXT_FIELD]]; + NSString *defaultShareMode = [FBSDKTypeUtility stringValue:resultDictionary[FBSDK_SERVER_CONFIGURATION_DEFAULT_SHARE_MODE_FIELD]]; + BOOL implicitLoggingEnabled = [FBSDKTypeUtility boolValue:resultDictionary[FBSDK_SERVER_CONFIGURATION_IMPLICIT_LOGGING_ENABLED_FIELD]]; + BOOL systemAuthenticationEnabled = [FBSDKTypeUtility boolValue:resultDictionary[FBSDK_SERVER_CONFIGURATION_SYSTEM_AUTHENTICATION_ENABLED_FIELD]]; + BOOL nativeAuthFlowEnabled = [FBSDKTypeUtility boolValue:resultDictionary[FBSDK_SERVER_CONFIGURATION_NATIVE_PROXY_AUTH_FLOW_ENABLED_FIELD]]; + NSDictionary *dialogConfigurations = [FBSDKTypeUtility dictionaryValue:resultDictionary[FBSDK_SERVER_CONFIGURATION_DIALOG_CONFIGS_FIELD]]; + dialogConfigurations = [self _parseDialogConfigurations:dialogConfigurations]; + NSDictionary *dialogFlows = [FBSDKTypeUtility dictionaryValue:resultDictionary[FBSDK_SERVER_CONFIGURATION_DIALOG_FLOWS_FIELD]]; + FBSDKErrorConfiguration *errorConfiguration = [[FBSDKErrorConfiguration alloc] initWithDictionary:nil]; + [errorConfiguration parseArray:resultDictionary[FBSDK_SERVER_CONFIGURATION_ERROR_CONFIGURATION_FIELD]]; + FBSDKServerConfiguration *serverConfiguration = [[FBSDKServerConfiguration alloc] initWithAppID:appID + appName:appName + loginTooltipEnabled:loginTooltipEnabled + loginTooltipText:loginTooltipText + defaultShareMode:defaultShareMode + advertisingIDEnabled:advertisingIDEnabled + implicitLoggingEnabled:implicitLoggingEnabled + implicitPurchaseLoggingEnabled:implicitPurchaseLoggingEnabled + systemAuthenticationEnabled:systemAuthenticationEnabled + nativeAuthFlowEnabled:nativeAuthFlowEnabled + dialogConfigurations:dialogConfigurations + dialogFlows:dialogFlows + timestamp:[NSDate date] + errorConfiguration:errorConfiguration + defaults:NO]; + [self _didProcessConfigurationFromNetwork:serverConfiguration appID:appID error:nil]; +} + ++ (FBSDKGraphRequest *)requestToLoadServerConfiguration:(NSString *)appID +{ + NSOperatingSystemVersion operatingSystemVersion = [FBSDKInternalUtility operatingSystemVersion]; + NSString *dialogFlowsField = [NSString stringWithFormat:@"%@.os_version(%ti.%ti.%ti)", + FBSDK_SERVER_CONFIGURATION_DIALOG_FLOWS_FIELD, + operatingSystemVersion.majorVersion, + operatingSystemVersion.minorVersion, + operatingSystemVersion.patchVersion]; + NSArray *fields = @[FBSDK_SERVER_CONFIGURATION_APP_EVENTS_FEATURES_FIELD, + FBSDK_SERVER_CONFIGURATION_APP_NAME_FIELD, + FBSDK_SERVER_CONFIGURATION_DEFAULT_SHARE_MODE_FIELD, + FBSDK_SERVER_CONFIGURATION_DIALOG_CONFIGS_FIELD, + dialogFlowsField, + FBSDK_SERVER_CONFIGURATION_ERROR_CONFIGURATION_FIELD, + FBSDK_SERVER_CONFIGURATION_IMPLICIT_LOGGING_ENABLED_FIELD, + FBSDK_SERVER_CONFIGURATION_LOGIN_TOOLTIP_ENABLED_FIELD, + FBSDK_SERVER_CONFIGURATION_LOGIN_TOOLTIP_TEXT_FIELD, + FBSDK_SERVER_CONFIGURATION_NATIVE_PROXY_AUTH_FLOW_ENABLED_FIELD, + FBSDK_SERVER_CONFIGURATION_SYSTEM_AUTHENTICATION_ENABLED_FIELD, + ]; + NSDictionary *parameters = @{ @"fields": [fields componentsJoinedByString:@","] }; + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:appID + parameters:parameters + tokenString:nil + HTTPMethod:nil + flags:FBSDKGraphRequestFlagSkipClientToken | FBSDKGraphRequestFlagDisableErrorRecovery]; + return request; +} + +#pragma mark - Helper Class Methods + ++ (FBSDKServerConfiguration *)_defaultServerConfigurationForAppID:(NSString *)appID +{ + // Use a default configuration while we do not have a configuration back from the server. This allows us to set + // the default values for any of the dialog sets or anything else in a centralized location while we are waiting for + // the server to respond. + static FBSDKServerConfiguration *_defaultServerConfiguration = nil; + if (![_defaultServerConfiguration.appID isEqualToString:appID]) { + // Bypass the native dialog flow for iOS 9+, as it produces a series of additional confirmation dialogs that lead to + // extra friction that is not desirable. + NSOperatingSystemVersion iOS9Version = { .majorVersion = 9, .minorVersion = 0, .patchVersion = 0 }; + BOOL useNativeFlow = ![FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS9Version]; + // Also enable SFSafariViewController by default. + NSDictionary *dialogFlows = @{ + FBSDKDialogConfigurationNameDefault: @{ + FBSDKDialogConfigurationFeatureUseNativeFlow: @(useNativeFlow), + FBSDKDialogConfigurationFeatureUseSafariViewController: @YES, + }, + FBSDKDialogConfigurationNameMessage: @{ + FBSDKDialogConfigurationFeatureUseNativeFlow: @YES, + }, + }; + _defaultServerConfiguration = [[FBSDKServerConfiguration alloc] initWithAppID:appID + appName:nil + loginTooltipEnabled:NO + loginTooltipText:nil + defaultShareMode:nil + advertisingIDEnabled:NO + implicitLoggingEnabled:NO + implicitPurchaseLoggingEnabled:NO + systemAuthenticationEnabled:NO + nativeAuthFlowEnabled:NO + dialogConfigurations:nil + dialogFlows:dialogFlows + timestamp:nil + errorConfiguration:nil + defaults:YES]; + } + return _defaultServerConfiguration; +} + ++ (void)_didProcessConfigurationFromNetwork:(FBSDKServerConfiguration *)serverConfiguration + appID:(NSString *)appID + error:(NSError *)error +{ + NSMutableArray *completionBlocks = [[NSMutableArray alloc] init]; + @synchronized(self) { + if (error) { + // Only set the error if we don't have previously fetched app settings. + // (i.e., if we have app settings and a new call gets an error, we'll + // ignore the error and surface the last successfully fetched settings). + if (_serverConfiguration && [_serverConfiguration.appID isEqualToString:appID]) { + // We have older app settings but the refresh received an error. + // Log and ignore the error. + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorInformational + formatString:@"loadServerConfigurationWithCompletionBlock failed with %@", error]; + } else { + _serverConfiguration = nil; + } + _serverConfigurationError = error; + _serverConfigurationErrorTimestamp = [NSDate date]; + } else { + _serverConfiguration = serverConfiguration; + _serverConfigurationError = nil; + _serverConfigurationErrorTimestamp = nil; + } + + // update the cached copy in NSUserDefaults + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString *defaultsKey = [NSString stringWithFormat:FBSDK_SERVER_CONFIGURATION_USER_DEFAULTS_KEY, appID]; + if (serverConfiguration) { + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:serverConfiguration]; + [defaults setObject:data forKey:defaultsKey]; + } + + // wrap the completion blocks + for (FBSDKServerConfigurationManagerLoadBlock completionBlock in _completionBlocks) { + [completionBlocks addObject:[self _wrapperBlockForLoadBlock:completionBlock]]; + } + [_completionBlocks removeAllObjects]; + _loadingServerConfiguration = NO; + } + + // release the lock before calling out of this class + for (void (^completionBlock)(void) in completionBlocks) { + completionBlock(); + } +} + ++ (NSDictionary *)_parseDialogConfigurations:(NSDictionary *)dictionary +{ + NSMutableDictionary *dialogConfigurations = [[NSMutableDictionary alloc] init]; + NSArray *dialogConfigurationsArray = [FBSDKTypeUtility arrayValue:dictionary[@"data"]]; + for (id dialogConfiguration in dialogConfigurationsArray) { + NSDictionary *dialogConfigurationDictionary = [FBSDKTypeUtility dictionaryValue:dialogConfiguration]; + if (dialogConfigurationDictionary) { + NSString *name = [FBSDKTypeUtility stringValue:dialogConfigurationDictionary[@"name"]]; + if ([name length]) { + NSURL *URL = [FBSDKTypeUtility URLValue:dialogConfigurationDictionary[@"url"]]; + NSArray *appVersions = [FBSDKTypeUtility arrayValue:dialogConfigurationDictionary[@"versions"]]; + dialogConfigurations[name] = [[FBSDKDialogConfiguration alloc] initWithName:name + URL:URL + appVersions:appVersions]; + } + } + } + return dialogConfigurations; +} + ++ (BOOL)_serverConfigurationTimestampIsValid:(NSDate *)timestamp +{ + return ([[NSDate date] timeIntervalSinceDate:timestamp] < FBSDK_SERVER_CONFIGURATION_MANAGER_CACHE_TIMEOUT); +} + ++ (void(^)(void))_wrapperBlockForLoadBlock:(FBSDKServerConfigurationManagerLoadBlock)loadBlock +{ + if (loadBlock == NULL) { + return NULL; + } + + // create local vars to capture the current values from the ivars to allow this wrapper to be called outside of a lock + FBSDKServerConfiguration *serverConfiguration; + NSError *serverConfigurationError; + @synchronized(self) { + serverConfiguration = _serverConfiguration; + serverConfigurationError = _serverConfigurationError; + } + return ^{ + loadBlock(serverConfiguration, serverConfigurationError); + }; +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + return nil; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h new file mode 100644 index 0000000..0d7a492 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h @@ -0,0 +1,27 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import "FBSDKAccessTokenCaching.h" + +@interface FBSDKAccessTokenCache : NSObject + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m new file mode 100644 index 0000000..aeb1103 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m @@ -0,0 +1,82 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAccessTokenCache.h" + +#import "FBSDKAccessTokenCacheV3.h" +#import "FBSDKAccessTokenCacheV3_17.h" +#import "FBSDKAccessTokenCacheV3_21.h" +#import "FBSDKAccessTokenCacheV4.h" + +static BOOL g_tryDeprecatedCaches = YES; + +@implementation FBSDKAccessTokenCache + +- (FBSDKAccessToken*)fetchAccessToken +{ + FBSDKAccessToken *token = [[[FBSDKAccessTokenCacheV4 alloc] init] fetchAccessToken]; + if (token || !g_tryDeprecatedCaches) { + return token; + } + + g_tryDeprecatedCaches = NO; + NSArray *oldCacheClasses = [[self class] deprecatedCacheClasses]; + __block FBSDKAccessToken *oldToken = nil; + [oldCacheClasses enumerateObjectsUsingBlock:^(Class obj, NSUInteger idx, BOOL *stop) { + id cache = [[obj alloc] init]; + oldToken = [cache fetchAccessToken]; + if (oldToken) { + *stop = YES; + [cache clearCache]; + } + }]; + if (oldToken) { + [self cacheAccessToken:oldToken]; + } + return oldToken; +} + +- (void)cacheAccessToken:(FBSDKAccessToken *)token +{ + [[[FBSDKAccessTokenCacheV4 alloc] init] cacheAccessToken:token]; + if (g_tryDeprecatedCaches) { + g_tryDeprecatedCaches = NO; + NSArray *oldCacheClasses = [[self class] deprecatedCacheClasses]; + [oldCacheClasses enumerateObjectsUsingBlock:^(Class obj, NSUInteger idx, BOOL *stop) { + id cache = [[obj alloc] init]; + [cache clearCache]; + }]; + } +} + +- (void)clearCache +{ + [[[FBSDKAccessTokenCacheV4 alloc] init] clearCache]; +} + +// used by FBSDKAccessTokenCacheIntegrationTests ++ (void)resetV3CacheChecks +{ + g_tryDeprecatedCaches = YES; +} + ++ (NSArray *)deprecatedCacheClasses +{ + return @[ [FBSDKAccessTokenCacheV3_21 class], [FBSDKAccessTokenCacheV3_17 class], [FBSDKAccessTokenCacheV3 class]]; +} +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h new file mode 100644 index 0000000..28134a0 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h @@ -0,0 +1,30 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKAccessTokenCaching.h" +#import "FBSDKMacros.h" + +FBSDK_EXTERN NSString *const FBSDKTokenInformationUUIDKey; + +@interface FBSDKAccessTokenCacheV3 : NSObject + ++ (FBSDKAccessToken *)accessTokenForV3Dictionary:(NSDictionary *)dictionary; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m new file mode 100644 index 0000000..356a1a6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m @@ -0,0 +1,79 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAccessTokenCacheV3.h" + +#import "FBSDKAccessToken.h" +#import "FBSDKSettings.h" +#import "FBSDKTypeUtility.h" + +NSString *const FBSDKTokenInformationUUIDKey = @"com.facebook.sdk:TokenInformationUUIDKey"; + +#define FBSDK_TOKEN_INFORMATION_TOKEN_KEY @"com.facebook.sdk:TokenInformationTokenKey" +#define FBSDK_TOKEN_INFORMATION_EXPIRATION_DATE_KEY @"com.facebook.sdk:TokenInformationExpirationDateKey" +#define FBSDK_TOKEN_INFORMATION_USER_FBID_KEY @"com.facebook.sdk:TokenInformationUserFBIDKey" +#define FBSDK_TOKEN_INFORMATION_PERMISSIONS_KEY @"com.facebook.sdk:TokenInformationPermissionsKey" +#define FBSDK_TOKEN_INFORMATION_DECLINED_PERMISSIONS_KEY @"com.facebook.sdk:TokenInformationDeclinedPermissionsKey" +#define FBSDK_TOKEN_INFORMATION_APP_ID_KEY @"com.facebook.sdk:TokenInformationAppIDKey" +#define FBSDK_TOKEN_INFORMATION_REFRESH_DATE_KEY @"com.facebook.sdk:TokenInformationRefreshDateKey" + + +@implementation FBSDKAccessTokenCacheV3 + +- (FBSDKAccessToken *)fetchAccessToken +{ + // Check NSUserDefaults ( <= v3.16 ) + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSDictionary *tokenDictionary = [defaults objectForKey:[FBSDKSettings legacyUserDefaultTokenInformationKeyName]]; + return [[self class] accessTokenForV3Dictionary:tokenDictionary]; +} + +- (void)clearCache +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [defaults removeObjectForKey:[FBSDKSettings legacyUserDefaultTokenInformationKeyName]]; + [defaults synchronize]; +} + +- (void)cacheAccessToken:(FBSDKAccessToken *)token +{ + //no-op. + NSAssert(NO, @"deprecated cache FBSDKAccessTokenCacheV3 should not be used to cache a token"); +} + ++ (FBSDKAccessToken *)accessTokenForV3Dictionary:(NSDictionary *)dictionary +{ + NSString *tokenString = [FBSDKTypeUtility stringValue:dictionary[FBSDK_TOKEN_INFORMATION_TOKEN_KEY]]; + if (tokenString.length > 0) { + NSDate *expirationDate = dictionary[FBSDK_TOKEN_INFORMATION_EXPIRATION_DATE_KEY]; + // Note we default to valid in cases where expiration date is missing. + BOOL isExpired = ([expirationDate compare:[NSDate date]] == NSOrderedAscending); + if (isExpired) { + return nil; + } + return [[FBSDKAccessToken alloc] initWithTokenString:tokenString + permissions:dictionary[FBSDK_TOKEN_INFORMATION_PERMISSIONS_KEY] + declinedPermissions:dictionary[FBSDK_TOKEN_INFORMATION_DECLINED_PERMISSIONS_KEY] + appID:dictionary[FBSDK_TOKEN_INFORMATION_APP_ID_KEY] + userID:dictionary[FBSDK_TOKEN_INFORMATION_USER_FBID_KEY] + expirationDate:expirationDate + refreshDate:dictionary[FBSDK_TOKEN_INFORMATION_REFRESH_DATE_KEY]]; + } + return nil; +} +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h new file mode 100644 index 0000000..7f486f3 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKAccessTokenCaching.h" + +@interface FBSDKAccessTokenCacheV3_17 : NSObject + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m new file mode 100644 index 0000000..18626e5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m @@ -0,0 +1,63 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAccessTokenCacheV3_17.h" + +#import "FBSDKAccessToken.h" +#import "FBSDKAccessTokenCacheV3.h" +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKKeychainStoreViaBundleID.h" +#import "FBSDKSettings.h" + +@implementation FBSDKAccessTokenCacheV3_17 +{ + FBSDKKeychainStoreViaBundleID *_keychainStore; +} + +- (instancetype)init +{ + if ((self = [super init])) { + _keychainStore = [[FBSDKKeychainStoreViaBundleID alloc] init]; + } + return self; +} +- (FBSDKAccessToken *)fetchAccessToken +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString *uuidKey = [[FBSDKSettings legacyUserDefaultTokenInformationKeyName] stringByAppendingString:@"UUID"]; + NSString *uuid = [defaults objectForKey:uuidKey]; + NSDictionary *tokenDictionary = [_keychainStore dictionaryForKey:[FBSDKSettings legacyUserDefaultTokenInformationKeyName]]; + if (![tokenDictionary[FBSDKTokenInformationUUIDKey] isEqualToString:uuid]) { + [self clearCache]; + } + + return [FBSDKAccessTokenCacheV3 accessTokenForV3Dictionary:tokenDictionary]; +} + +- (void)clearCache +{ + [_keychainStore setDictionary:nil forKey:[FBSDKSettings legacyUserDefaultTokenInformationKeyName] accessibility:nil]; +} + +- (void)cacheAccessToken:(FBSDKAccessToken *)token +{ + //no-op. + NSAssert(NO, @"deprecated cache FBSDKAccessTokenCacheV3_17 should not be used to cache a token"); +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h new file mode 100644 index 0000000..da1ac64 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKAccessTokenCaching.h" + +@interface FBSDKAccessTokenCacheV3_21 : NSObject + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m new file mode 100644 index 0000000..845138b --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m @@ -0,0 +1,66 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAccessTokenCacheV3_21.h" + +#import "FBSDKAccessToken.h" +#import "FBSDKAccessTokenCacheV3.h" +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKKeychainStore.h" +#import "FBSDKSettings.h" + +@implementation FBSDKAccessTokenCacheV3_21 +{ + FBSDKKeychainStore *_keychainStore; +} + +- (instancetype)init +{ + if ((self = [super init])) { + NSString *keyChainServiceIdentifier = [NSString stringWithFormat:@"com.facebook.sdk.tokencache.%@", [[NSBundle mainBundle] bundleIdentifier]]; + _keychainStore = [[FBSDKKeychainStore alloc] initWithService:keyChainServiceIdentifier accessGroup:nil]; + } + return self; +} + +- (FBSDKAccessToken *)fetchAccessToken +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString *uuidKey = [[FBSDKSettings legacyUserDefaultTokenInformationKeyName] stringByAppendingString:@"UUID"]; + NSString *uuid = [defaults objectForKey:uuidKey]; + NSDictionary *tokenDictionary = [_keychainStore dictionaryForKey:[FBSDKSettings legacyUserDefaultTokenInformationKeyName]]; + if (![tokenDictionary[FBSDKTokenInformationUUIDKey] isEqualToString:uuid]) { + [self clearCache]; + } + + return [FBSDKAccessTokenCacheV3 accessTokenForV3Dictionary:tokenDictionary]; +} + +- (void)clearCache +{ + [_keychainStore setDictionary:nil forKey:[FBSDKSettings legacyUserDefaultTokenInformationKeyName] accessibility:nil]; +} + +- (void)cacheAccessToken:(FBSDKAccessToken *)token +{ + //no-op. + NSAssert(NO, @"deprecated cache FBSDKAccessTokenCacheV3_21 should not be used to cache a token"); +} + + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h new file mode 100644 index 0000000..7fa7d7f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h @@ -0,0 +1,26 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKAccessToken.h" +#import "FBSDKAccessTokenCaching.h" + +@interface FBSDKAccessTokenCacheV4 : NSObject + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m new file mode 100644 index 0000000..84d4151 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m @@ -0,0 +1,97 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAccessTokenCacheV4.h" + +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKKeychainStore.h" + +static NSString *const kFBSDKAccessTokenUserDefaultsKey = @"com.facebook.sdk.v4.FBSDKAccessTokenInformationKey"; +static NSString *const kFBSDKAccessTokenUUIDKey = @"tokenUUID"; +static NSString *const kFBSDKAccessTokenEncodedKey = @"tokenEncoded"; + +@implementation FBSDKAccessTokenCacheV4 +{ + FBSDKKeychainStore *_keychainStore; +} + +- (instancetype)init +{ + if ((self = [super init])) { + NSString *keyChainServiceIdentifier = [NSString stringWithFormat:@"com.facebook.sdk.tokencache.%@", [[NSBundle mainBundle] bundleIdentifier]]; + _keychainStore = [[FBSDKKeychainStore alloc] initWithService:keyChainServiceIdentifier accessGroup:nil]; + } + return self; +} + +- (FBSDKAccessToken *)fetchAccessToken +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString *uuid = [defaults objectForKey:kFBSDKAccessTokenUserDefaultsKey]; + + NSDictionary *dict = [_keychainStore dictionaryForKey:kFBSDKAccessTokenUserDefaultsKey]; + if (![dict[kFBSDKAccessTokenUUIDKey] isEqualToString:uuid]) { + // if the uuid doesn't match (including if there is no uuid in defaults which means uninstalled case) + // clear the keychain and return nil. + [self clearCache]; + return nil; + } + + id tokenData = dict[kFBSDKAccessTokenEncodedKey]; + if ([tokenData isKindOfClass:[NSData class]]) { + return [NSKeyedUnarchiver unarchiveObjectWithData:tokenData]; + } else { + return nil; + } +} + +- (void)cacheAccessToken:(FBSDKAccessToken *)token +{ + if (!token) { + [self clearCache]; + return; + } + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString *uuid = [defaults objectForKey:kFBSDKAccessTokenUserDefaultsKey]; + if (!uuid) { + uuid = [[NSUUID UUID] UUIDString]; + [defaults setObject:uuid forKey:kFBSDKAccessTokenUserDefaultsKey]; + [defaults synchronize]; + } + NSData *tokenData = [NSKeyedArchiver archivedDataWithRootObject:token]; + NSDictionary *dict = @{ + kFBSDKAccessTokenUUIDKey : uuid, + kFBSDKAccessTokenEncodedKey : tokenData + }; + + [_keychainStore setDictionary:dict + forKey:kFBSDKAccessTokenUserDefaultsKey + accessibility:[FBSDKDynamicFrameworkLoader loadkSecAttrAccessibleAfterFirstUnlockThisDeviceOnly]]; +} + +- (void)clearCache +{ + [_keychainStore setDictionary:nil + forKey:kFBSDKAccessTokenUserDefaultsKey + accessibility:NULL]; + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [defaults removeObjectForKey:kFBSDKAccessTokenUserDefaultsKey]; + [defaults synchronize]; +} +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h new file mode 100644 index 0000000..8562245 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h @@ -0,0 +1,31 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@class FBSDKAccessToken; + +@protocol FBSDKAccessTokenCaching + +- (FBSDKAccessToken *)fetchAccessToken; + +- (void)cacheAccessToken:(FBSDKAccessToken *)token; + +- (void)clearCache; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h new file mode 100644 index 0000000..f603635 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h @@ -0,0 +1,40 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@interface FBSDKKeychainStore : NSObject + +@property (nonatomic, readonly, copy) NSString *service; +@property (nonatomic, readonly, copy) NSString *accessGroup; + +- (instancetype)initWithService:(NSString *)service accessGroup:(NSString *)accessGroup NS_DESIGNATED_INITIALIZER; + +- (BOOL)setDictionary:(NSDictionary *)value forKey:(NSString *)key accessibility:(CFTypeRef)accessibility; +- (NSDictionary *)dictionaryForKey:(NSString *)key; + +- (BOOL)setString:(NSString *)value forKey:(NSString *)key accessibility:(CFTypeRef)accessibility; +- (NSString *)stringForKey:(NSString *)key; + +- (BOOL)setData:(NSData *)value forKey:(NSString *)key accessibility:(CFTypeRef)accessibility; +- (NSData *)dataForKey:(NSString *)key; + +// hook for subclasses to override keychain query construction. +- (NSMutableDictionary *)queryForKey:(NSString *)key; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m new file mode 100644 index 0000000..b2e4f56 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m @@ -0,0 +1,161 @@ +/** + * Contains code from UICKeyChainStore + * + * Copyright (c) 2011 kishikawa katsumi + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#import "FBSDKKeychainStore.h" + +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKMacros.h" + +@implementation FBSDKKeychainStore + +- (instancetype)initWithService:(NSString *)service accessGroup:(NSString *)accessGroup +{ + if ((self = [super init])) { + _service = service ? [service copy] : [[NSBundle mainBundle] bundleIdentifier]; + _accessGroup = [accessGroup copy]; + NSAssert(_service, @"Keychain must be initialized with service"); + } + + return self; +} + +- (instancetype)init +{ + FBSDK_NOT_DESIGNATED_INITIALIZER(initWithService:accessGroup:); + return [self initWithService:nil accessGroup:nil]; +} + +- (BOOL)setDictionary:(NSDictionary *)value forKey:(NSString *)key accessibility:(CFTypeRef)accessibility +{ + NSData *data = value == nil ? nil : [NSKeyedArchiver archivedDataWithRootObject:value]; + return [self setData:data forKey:key accessibility:accessibility]; +} + +- (NSDictionary *)dictionaryForKey:(NSString *)key +{ + NSData *data = [self dataForKey:key]; + if (!data) { + return nil; + } + + NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithData:data]; + if (![dict isKindOfClass:[NSDictionary class]]) { + return nil; + } + + return dict; +} + +- (BOOL)setString:(NSString *)value forKey:(NSString *)key accessibility:(CFTypeRef)accessibility +{ + NSData *data = [value dataUsingEncoding:NSUTF8StringEncoding]; + return [self setData:data forKey:key accessibility:accessibility]; +} + +- (NSString *)stringForKey:(NSString *)key +{ + NSData *data = [self dataForKey:key]; + if (!data) { + return nil; + } + + return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; +} + +- (BOOL)setData:(NSData *)value forKey:(NSString *)key accessibility:(CFTypeRef)accessibility +{ + if (!key) { + return NO; + } + + NSMutableDictionary *query = [self queryForKey:key]; + + OSStatus status; + if (value) { + NSMutableDictionary *attributesToUpdate = [NSMutableDictionary dictionary]; + [attributesToUpdate setObject:value forKey:[FBSDKDynamicFrameworkLoader loadkSecValueData]]; + + status = fbsdkdfl_SecItemUpdate((__bridge CFDictionaryRef)query, (__bridge CFDictionaryRef)attributesToUpdate); + if (status == errSecItemNotFound) { +#if TARGET_OS_IPHONE || (defined(MAC_OS_X_VERSION_10_9) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9) + if (accessibility) { + [query setObject:(__bridge id)(accessibility) forKey:[FBSDKDynamicFrameworkLoader loadkSecAttrAccessible]]; + } +#endif + [query setObject:value forKey:[FBSDKDynamicFrameworkLoader loadkSecValueData]]; + + status = fbsdkdfl_SecItemAdd((__bridge CFDictionaryRef)query, NULL); + } + } else { + status = fbsdkdfl_SecItemDelete((__bridge CFDictionaryRef)query); + if (status == errSecItemNotFound) { + status = errSecSuccess; + } + } + + return (status == errSecSuccess); +} + +- (NSData *)dataForKey:(NSString *)key +{ + if (!key) { + return nil; + } + + NSMutableDictionary *query = [self queryForKey:key]; + [query setObject:(id)kCFBooleanTrue forKey:[FBSDKDynamicFrameworkLoader loadkSecReturnData]]; + [query setObject:[FBSDKDynamicFrameworkLoader loadkSecMatchLimitOne] forKey:[FBSDKDynamicFrameworkLoader loadkSecMatchLimit]]; + + CFTypeRef data = nil; + OSStatus status = fbsdkdfl_SecItemCopyMatching((__bridge CFDictionaryRef)query, &data); + if (status != errSecSuccess) { + return nil; + } + + if (!data || CFGetTypeID(data) != CFDataGetTypeID()) { + return nil; + } + + NSData *ret = [NSData dataWithData:(__bridge NSData *)(data)]; + CFRelease(data); + + return ret; +} + +- (NSMutableDictionary *)queryForKey:(NSString *)key +{ + NSMutableDictionary *query = [NSMutableDictionary dictionary]; + [query setObject:[FBSDKDynamicFrameworkLoader loadkSecClassGenericPassword] forKey:[FBSDKDynamicFrameworkLoader loadkSecClass]]; + [query setObject:_service forKey:[FBSDKDynamicFrameworkLoader loadkSecAttrService]]; + [query setObject:key forKey:[FBSDKDynamicFrameworkLoader loadkSecAttrAccount]]; +#if !TARGET_IPHONE_SIMULATOR + if (_accessGroup) { + [query setObject:_accessGroup forKey:[FBSDKDynamicFrameworkLoader loadkSecAttrAccessGroup]]; + } +#endif + + return query; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h new file mode 100644 index 0000000..0a0fb86 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h @@ -0,0 +1,29 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKKeychainStore.h" + +// This is the keychainstore defined in 3.17 that incorrectly used the bundle id as the service id +// and should NOT be used outside of this cache. +@interface FBSDKKeychainStoreViaBundleID : FBSDKKeychainStore + +// since this subclass represents the old keychainstore behavior, +// the designated initializer is just the `init`. +- (instancetype)init NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m new file mode 100644 index 0000000..d36335c --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m @@ -0,0 +1,50 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKKeychainStoreViaBundleID.h" + +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKInternalUtility.h" + +@implementation FBSDKKeychainStoreViaBundleID + +- (instancetype)init +{ + return [super initWithService:[[NSBundle mainBundle] bundleIdentifier] accessGroup:nil]; +} + +- (instancetype)initWithService:(NSString *)service accessGroup:(NSString *)accessGroup +{ + return [self init]; +} + +- (NSMutableDictionary*)queryForKey:(NSString *)key +{ + NSMutableDictionary *query = [NSMutableDictionary dictionary]; + query[(__bridge id)[FBSDKDynamicFrameworkLoader loadkSecClass]] = (__bridge id)([FBSDKDynamicFrameworkLoader loadkSecClassGenericPassword]); + query[(__bridge id)[FBSDKDynamicFrameworkLoader loadkSecAttrService]] = self.service; + query[(__bridge id)[FBSDKDynamicFrameworkLoader loadkSecAttrGeneric]] = key; + +#if !TARGET_IPHONE_SIMULATOR + [FBSDKInternalUtility dictionary:query setObject:self.accessGroup forKey:[FBSDKDynamicFrameworkLoader loadkSecAttrAccessGroup]]; +#endif + + return query; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h new file mode 100644 index 0000000..788d94d --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h @@ -0,0 +1,59 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import "FBSDKIcon.h" + +@protocol FBSDKButtonImpressionTracking + +- (NSDictionary *)analyticsParameters; +- (NSString *)impressionTrackingEventName; +- (NSString *)impressionTrackingIdentifier; + +@end + +@interface FBSDKButton () + +- (void)logTapEventWithEventName:(NSString *)eventName + parameters:(NSDictionary *)parameters; +- (void)checkImplicitlyDisabled; +- (void)configureButton; +- (void)configureWithIcon:(FBSDKIcon *)icon + title:(NSString *)title + backgroundColor:(UIColor *)backgroundColor + highlightedColor:(UIColor *)highlightedColor; +- (void)configureWithIcon:(FBSDKIcon *)icon + title:(NSString *)title + backgroundColor:(UIColor *)backgroundColor + highlightedColor:(UIColor *)highlightedColor + selectedTitle:(NSString *)selectedTitle + selectedIcon:(FBSDKIcon *)selectedIcon + selectedColor:(UIColor *)selectedColor + selectedHighlightedColor:(UIColor *)selectedHighlightedColor; +- (UIColor *)defaultBackgroundColor; +- (UIColor *)defaultDisabledColor; +- (UIColor *)defaultHighlightedColor; +- (FBSDKIcon *)defaultIcon; +- (UIColor *)defaultSelectedColor; +- (BOOL)isImplicitlyDisabled; +- (CGSize)sizeThatFits:(CGSize)size title:(NSString *)title; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h new file mode 100644 index 0000000..ec55385 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@interface FBSDKCloseIcon : NSObject + +- (UIImage *)imageWithSize:(CGSize)size; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m new file mode 100644 index 0000000..1bbb746 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m @@ -0,0 +1,89 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKCloseIcon.h" + +#import "FBSDKMacros.h" + +@implementation FBSDKCloseIcon + +#pragma mark - Public API + +- (UIImage *)imageWithSize:(CGSize)size +{ + CGFloat scale = [UIScreen mainScreen].scale; + UIGraphicsBeginImageContextWithOptions(size, NO, scale); + CGContextRef context = UIGraphicsGetCurrentContext(); + + CGFloat iconSize = MIN(size.width, size.height); + + CGRect rect = CGRectMake((size.width - iconSize) / 2, (size.height - iconSize) / 2, iconSize, iconSize); + CGFloat step = iconSize / 12; + + // shadow + rect = CGRectIntegral(CGRectInset(rect, step, step)); + NSArray *colors = @[ + (__bridge id)[UIColor colorWithWhite:0.0 alpha:0.7].CGColor, + (__bridge id)[UIColor colorWithWhite:0.0 alpha:0.3].CGColor, + (__bridge id)[UIColor colorWithWhite:0.0 alpha:0.1].CGColor, + (__bridge id)[UIColor colorWithWhite:0.0 alpha:0.0].CGColor, + ]; + CGFloat locations[4] = { + 0.70, + 0.80, + 0.90, + 1.0, + }; + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); + CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)colors, locations); + CGColorSpaceRelease(colorSpace); + CGPoint center = CGPointMake(CGRectGetMidX(rect) - step / 6, CGRectGetMidY(rect) + step / 4); + CGContextDrawRadialGradient(context, gradient, center, 0.0, center, (CGRectGetWidth(rect) - step / 2) / 2, 0); + CGGradientRelease(gradient); + + // outer circle + rect = CGRectIntegral(CGRectInset(rect, step, step)); + [[UIColor whiteColor] setFill]; + CGContextFillEllipseInRect(context, rect); + + // inner circle + rect = CGRectIntegral(CGRectInset(rect, step, step)); + [[UIColor blackColor] setFill]; + CGContextFillEllipseInRect(context, rect); + + // cross + rect = CGRectIntegral(CGRectInset(rect, step, step)); + CGFloat lineWidth = step * 5 / 4; + rect.origin.y = CGRectGetMidY(rect) - lineWidth / 2; + rect.size.height = lineWidth; + [[UIColor whiteColor] setFill]; + CGContextTranslateCTM(context, size.width / 2, size.height / 2); + CGContextRotateCTM(context, M_PI_4); + CGContextTranslateCTM(context, -size.width / 2, -size.height / 2); + CGContextFillRect(context, rect); + CGContextTranslateCTM(context, size.width / 2, size.height / 2); + CGContextRotateCTM(context, M_PI_2); + CGContextTranslateCTM(context, -size.width / 2, -size.height / 2); + CGContextFillRect(context, rect); + + UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return image; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h new file mode 100644 index 0000000..54825b6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h @@ -0,0 +1,22 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +UIColor *FBSDKUIColorWithRGBA(uint8_t r, uint8_t g, uint8_t b, CGFloat a); +UIColor *FBSDKUIColorWithRGB(uint8_t r, uint8_t g, uint8_t b); diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m new file mode 100644 index 0000000..71b3d80 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m @@ -0,0 +1,31 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKColor.h" + +static const CGFloat kFBRGBMax = 255.0; + +UIColor *FBSDKUIColorWithRGBA(uint8_t r, uint8_t g, uint8_t b, CGFloat a) +{ + return [UIColor colorWithRed:(r / kFBRGBMax) green:(g / kFBRGBMax) blue:(b / kFBRGBMax) alpha:a]; +} + +UIColor *FBSDKUIColorWithRGB(uint8_t r, uint8_t g, uint8_t b) +{ + return FBSDKUIColorWithRGBA(r, g, b, 1.0); +} diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h new file mode 100644 index 0000000..5be3445 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h @@ -0,0 +1,31 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@interface FBSDKIcon : NSObject + +- (instancetype)initWithColor:(UIColor *)color NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, strong, readonly) UIColor *color; + +- (UIImage *)imageWithSize:(CGSize)size; + +- (CGPathRef)pathWithSize:(CGSize)size; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m new file mode 100644 index 0000000..06b778e --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m @@ -0,0 +1,64 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKIcon.h" + +#import "FBSDKMacros.h" + +@implementation FBSDKIcon + +#pragma mark - Object Lifecycle + +- (instancetype)initWithColor:(UIColor *)color +{ + if ((self = [super init])) { + _color = [color copy]; + } + return self; +} + +- (instancetype)init +{ + return [self initWithColor:[UIColor whiteColor]]; +} + +#pragma mark - Public API + +- (UIImage *)imageWithSize:(CGSize)size +{ + if ((size.width == 0) || (size.height == 0)) { + return nil; + } + CGFloat scale = [UIScreen mainScreen].scale; + UIGraphicsBeginImageContextWithOptions(size, NO, scale); + CGContextRef context = UIGraphicsGetCurrentContext(); + CGPathRef path = [self pathWithSize:size]; + CGContextAddPath(context, path); + CGContextSetFillColorWithColor(context, self.color.CGColor); + CGContextFillPath(context); + UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return image; +} + +- (CGPathRef)pathWithSize:(CGSize)size +{ + return NULL; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h new file mode 100644 index 0000000..76affe6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKIcon.h" + +@interface FBSDKLogo : FBSDKIcon + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m new file mode 100644 index 0000000..47d0dc4 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m @@ -0,0 +1,59 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLogo.h" + +@implementation FBSDKLogo + +- (CGPathRef)pathWithSize:(CGSize)size +{ + CGAffineTransform transformValue = CGAffineTransformMakeScale(size.width / 136.0, size.height / 136.0); + const CGAffineTransform *transform = &transformValue; + CGMutablePathRef path = CGPathCreateMutable(); + CGPathMoveToPoint(path, transform, 127.856, 0.676); + CGPathAddLineToPoint(path, transform, 7.469, 0.676); + CGPathAddCurveToPoint(path, transform, 3.344, 0.676, 0.0, 4.02, 0.0, 8.145); + CGPathAddLineToPoint(path, transform, 0.0, 128.531); + CGPathAddCurveToPoint(path, transform, 0.0, 132.656, 3.344, 136.0, 7.469, 136.0); + CGPathAddLineToPoint(path, transform, 72.282, 136.0); + CGPathAddLineToPoint(path, transform, 72.282, 83.596); + CGPathAddLineToPoint(path, transform, 54.646, 83.596); + CGPathAddLineToPoint(path, transform, 54.646, 63.173); + CGPathAddLineToPoint(path, transform, 72.282, 63.173); + CGPathAddLineToPoint(path, transform, 72.282, 48.112); + CGPathAddCurveToPoint(path, transform, 72.282, 30.633, 82.957, 21.116, 98.549, 21.116); + CGPathAddCurveToPoint(path, transform, 106.018, 21.116, 112.438, 21.671, 114.309, 21.92); + CGPathAddLineToPoint(path, transform, 114.309, 40.187); + CGPathAddLineToPoint(path, transform, 103.495, 40.191); + CGPathAddCurveToPoint(path, transform, 95.014, 40.191, 93.372, 44.221, 93.372, 50.133); + CGPathAddLineToPoint(path, transform, 93.372, 63.173); + CGPathAddLineToPoint(path, transform, 113.596, 63.173); + CGPathAddLineToPoint(path, transform, 110.963, 83.596); + CGPathAddLineToPoint(path, transform, 93.372, 83.596); + CGPathAddLineToPoint(path, transform, 93.372, 136.0); + CGPathAddLineToPoint(path, transform, 127.856, 136.0); + CGPathAddCurveToPoint(path, transform, 131.981, 136.0, 135.325, 132.656, 135.325, 128.531); + CGPathAddLineToPoint(path, transform, 135.325, 8.145); + CGPathAddCurveToPoint(path, transform, 135.325, 4.02, 131.981, 0.676, 127.856, 0.676); + CGPathCloseSubpath(path); + CGPathRef result = CGPathCreateCopy(path); + CGPathRelease(path); + return CFAutorelease(result); +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h new file mode 100644 index 0000000..1a44797 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKIcon.h" + +@interface FBSDKMaleSilhouetteIcon : FBSDKIcon + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m new file mode 100644 index 0000000..6e0e1ed --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m @@ -0,0 +1,51 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKMaleSilhouetteIcon.h" + +@implementation FBSDKMaleSilhouetteIcon + +- (CGPathRef)pathWithSize:(CGSize)size +{ + CGAffineTransform transformValue = CGAffineTransformMakeScale(size.width / 158.783, size.height / 158.783); + CGAffineTransform *transform = &transformValue; + CGMutablePathRef path = CGPathCreateMutable(); + CGPathMoveToPoint(path, transform, 158.783, 158.783); + CGPathAddCurveToPoint(path, transform, 156.39, 131.441, 144.912, 136.964, 105.607, 117.32); + CGPathAddCurveToPoint(path, transform, 103.811, 113.941, 103.348, 108.8965, 103.013, 107.4781); + CGPathAddLineToPoint(path, transform, 100.434, 106.7803); + CGPathAddCurveToPoint(path, transform, 97.2363, 82.7701, 100.67, 101.5845, 106.006, 75.2188); + CGPathAddCurveToPoint(path, transform, 107.949, 76.2959, 108.268, 70.7417, 108.971, 66.5743); + CGPathAddCurveToPoint(path, transform, 109.673, 62.4068, 110.864, 58.9082, 107.139, 58.9082); + CGPathAddCurveToPoint(path, transform, 107.94, 42.7652, 110.299, 31.3848, 101.335, 23.3072); + CGPathAddCurveToPoint(path, transform, 92.3808, 15.23781, 87.874, 15.52349, 95.0483, 9.6036128); + CGPathAddCurveToPoint(path, transform, 91.2319, 8.892613, 70.2036, 12.01861, 57.4487, 23.3072); + CGPathAddCurveToPoint(path, transform, 48.4121, 31.3042, 50.8437, 42.7652, 51.6445, 58.9082); + CGPathAddCurveToPoint(path, transform, 47.9194, 58.9082, 49.1108, 62.4068, 49.813, 66.5743); + CGPathAddCurveToPoint(path, transform, 50.5156, 70.7417, 50.8349, 76.2959, 52.7778, 75.2188); + CGPathAddCurveToPoint(path, transform, 58.1138, 110.1135, 61.5478, 82.7701, 58.3501, 106.7803); + CGPathAddLineToPoint(path, transform, 55.7705, 107.4781); + CGPathAddCurveToPoint(path, transform, 55.4355, 108.8965, 54.9722, 113.941, 53.1767, 117.32); + CGPathAddCurveToPoint(path, transform, 13.8711, 136.964, 2.3945, 131.441, 0.0, 158.783); + CGPathAddLineToPoint(path, transform, 158.783, 158.783); + CGPathRef result = CGPathCreateCopy(path); + CGPathRelease(path); + return CFAutorelease(result); +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h new file mode 100644 index 0000000..60458e1 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h @@ -0,0 +1,89 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import "../FBSDKMath.h" + +/*! + @abstract Insets a CGSize with the insets in a UIEdgeInsets. + */ +FBSDK_STATIC_INLINE CGSize FBSDKEdgeInsetsInsetSize(CGSize size, UIEdgeInsets insets) +{ + CGRect rect = CGRectZero; + rect.size = size; + return UIEdgeInsetsInsetRect(rect, insets).size; +} + +/*! + @abstract Outsets a CGSize with the insets in a UIEdgeInsets. + */ +FBSDK_STATIC_INLINE CGSize FBSDKEdgeInsetsOutsetSize(CGSize size, UIEdgeInsets insets) +{ + CGRect rect = CGRectZero; + rect.size = size; + return CGSizeMake(insets.left + size.width + insets.right, + insets.top + size.height + insets.bottom); +} + +/*! + @abstract Limits a CGFloat value, using the scale to limit to pixels (instead of points). + + @discussion The limitFunction is frequention floorf, ceilf or roundf. If the scale is 2.0, + you may get back values of *.5 to correspond to pixels. + */ +typedef float (*FBSDKLimitFunctionType)(float); +FBSDK_STATIC_INLINE CGFloat FBSDKPointsForScreenPixels(FBSDKLimitFunctionType limitFunction, + CGFloat screenScale, + CGFloat pointValue) +{ + return limitFunction(pointValue * screenScale) / screenScale; +} + +FBSDK_STATIC_INLINE CGSize FBSDKTextSize(NSString *text, + UIFont *font, + CGSize constrainedSize, + NSLineBreakMode lineBreakMode) +{ + if (!text) { + return CGSizeZero; + } + CGSize size; + if ([NSAttributedString instancesRespondToSelector:@selector(boundingRectWithSize:options:context:)]) { + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + paragraphStyle.lineBreakMode = lineBreakMode; + NSDictionary *attributes = @{ + NSFontAttributeName: font, + NSParagraphStyleAttributeName: paragraphStyle, + }; + NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:text attributes:attributes]; + size = [FBSDKMath ceilForSize:[attributedString boundingRectWithSize:constrainedSize + options:(NSStringDrawingUsesDeviceMetrics | + NSStringDrawingUsesLineFragmentOrigin | + NSStringDrawingUsesFontLeading) + context:NULL].size]; + } else { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + size = [text sizeWithFont:font constrainedToSize:constrainedSize lineBreakMode:lineBreakMode]; +#pragma clang diagnostic pop + } + return [FBSDKMath ceilForSize:size]; +} diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h new file mode 100644 index 0000000..f280228 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h @@ -0,0 +1,29 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@interface FBSDKViewImpressionTracker : NSObject + ++ (instancetype)impressionTrackerWithEventName:(NSString *)eventName; + +@property (nonatomic, copy, readonly) NSString *eventName; + +- (void)logImpressionWithIdentifier:(NSString *)identifier parameters:(NSDictionary *)parameters; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m new file mode 100644 index 0000000..4f95ad7 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m @@ -0,0 +1,97 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKViewImpressionTracker.h" + +#import "FBSDKAccessToken.h" +#import "FBSDKAppEvents+Internal.h" + +@implementation FBSDKViewImpressionTracker +{ + NSMutableSet *_trackedImpressions; +} + +#pragma mark - Class Methods + ++ (instancetype)impressionTrackerWithEventName:(NSString *)eventName +{ + static NSMutableDictionary *_impressionTrackers = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _impressionTrackers = [[NSMutableDictionary alloc] init]; + }); + // Maintains a single instance of an impression tracker for each event name + FBSDKViewImpressionTracker *impressionTracker = _impressionTrackers[eventName]; + if (!impressionTracker) { + impressionTracker = [[self alloc] initWithEventName:eventName]; + _impressionTrackers[eventName] = impressionTracker; + } + return impressionTracker; +} + +#pragma mark - Object Lifecycle + +- (instancetype)initWithEventName:(NSString *)eventName +{ + if ((self = [super init])) { + _eventName = [eventName copy]; + _trackedImpressions = [[NSMutableSet alloc] init]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(_applicationDidEnterBackgroundNotification:) + name:UIApplicationDidEnterBackgroundNotification + object:[UIApplication sharedApplication]]; + } + return self; +} + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +#pragma mark - Public API + +- (void)logImpressionWithIdentifier:(NSString *)identifier parameters:(NSDictionary *)parameters +{ + NSMutableDictionary *keys = [NSMutableDictionary dictionary]; + keys[@"__view_impression_identifier__"] = identifier; + [keys addEntriesFromDictionary:parameters]; + NSDictionary *impressionKey = [keys copy]; + // Ensure that each impression is only tracked once + if ([_trackedImpressions containsObject:impressionKey]) { + return; + } + [_trackedImpressions addObject:impressionKey]; + + [FBSDKAppEvents logImplicitEvent:self.eventName + valueToSum:nil + parameters:parameters + accessToken:[FBSDKAccessToken currentAccessToken]]; +} + +#pragma mark - Helper Methods + +- (void)_applicationDidEnterBackgroundNotification:(NSNotification *)notification +{ + // reset all tracked impressions when the app backgrounds so we will start tracking them again the next time they + // are triggered. + [_trackedImpressions removeAllObjects]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h new file mode 100644 index 0000000..3ad35f3 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h @@ -0,0 +1,44 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@protocol FBSDKWebDialogDelegate; + +@interface FBSDKWebDialog : NSObject + ++ (instancetype)showWithName:(NSString *)name + parameters:(NSDictionary *)parameters + delegate:(id)delegate; + +@property (nonatomic, assign) BOOL deferVisibility; +@property (nonatomic, assign) id delegate; +@property (nonatomic, copy) NSString *name; +@property (nonatomic, copy) NSDictionary *parameters; + +- (BOOL)show; + +@end + +@protocol FBSDKWebDialogDelegate + +- (void)webDialog:(FBSDKWebDialog *)webDialog didCompleteWithResults:(NSDictionary *)results; +- (void)webDialog:(FBSDKWebDialog *)webDialog didFailWithError:(NSError *)error; +- (void)webDialogDidCancel:(FBSDKWebDialog *)webDialog; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m new file mode 100644 index 0000000..d398891 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m @@ -0,0 +1,340 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKWebDialog.h" + +#import "FBSDKAccessToken.h" +#import "FBSDKDynamicFrameworkLoader.h" +#import "FBSDKInternalUtility.h" +#import "FBSDKSettings.h" +#import "FBSDKTypeUtility.h" +#import "FBSDKWebDialogView.h" + +#define FBSDK_WEB_DIALOG_SHOW_ANIMATION_DURATION 0.2 +#define FBSDK_WEB_DIALOG_DISMISS_ANIMATION_DURATION 0.3 + +static FBSDKWebDialog *g_currentDialog = nil; + +@interface FBSDKWebDialog () +@end + +@implementation FBSDKWebDialog +{ + UIView *_backgroundView; + FBSDKWebDialogView *_dialogView; +} + +#pragma mark - Class Methods + ++ (instancetype)showWithName:(NSString *)name + parameters:(NSDictionary *)parameters + delegate:(id)delegate +{ + FBSDKWebDialog *dialog = [[self alloc] init]; + dialog.name = name; + dialog.parameters = parameters; + dialog.delegate = delegate; + [dialog show]; + return dialog; +} + +#pragma mark - Object Lifecycle + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; + _dialogView.delegate = nil; + [_dialogView removeFromSuperview]; + [_backgroundView removeFromSuperview]; +} + +#pragma mark - Public Methods + +- (BOOL)show +{ + if (g_currentDialog == self) { + return NO; + } + [g_currentDialog _dismissAnimated:YES]; + + NSError *error; + NSURL *URL = [self _generateURL:&error]; + if (!URL) { + [self _failWithError:error]; + return NO; + } + + g_currentDialog = self; + + UIWindow *window = [self _findWindow]; + if (!window) { + [self _failWithError:nil]; + return NO; + } + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + _dialogView = [[FBSDKWebDialogView alloc] initWithFrame:window.screen.applicationFrame]; +#pragma clang diagnostic pop + + _dialogView.delegate = self; + [_dialogView loadURL:URL]; + + if (!_deferVisibility) { + [self _showWebView]; + } + + return YES; +} + +#pragma mark - FBSDKWebDialogViewDelegate + +- (void)webDialogView:(FBSDKWebDialogView *)webDialogView didCompleteWithResults:(NSDictionary *)results +{ + [self _completeWithResults:results]; +} + +- (void)webDialogView:(FBSDKWebDialogView *)webDialogView didFailWithError:(NSError *)error +{ + [self _failWithError:error]; +} + +- (void)webDialogViewDidCancel:(FBSDKWebDialogView *)webDialogView +{ + [self _cancel]; +} + +- (void)webDialogViewDidFinishLoad:(FBSDKWebDialogView *)webDialogView +{ + if (_deferVisibility) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.05 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + if (_dialogView) { + [self _showWebView]; + } + }); + } +} + +#pragma mark - Notifications + +- (void)_addObservers +{ + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self + selector:@selector(_deviceOrientationDidChangeNotification:) + name:UIDeviceOrientationDidChangeNotification + object:nil]; +} + +- (void)_deviceOrientationDidChangeNotification:(NSNotification *)notification +{ + BOOL animated = [FBSDKTypeUtility boolValue:notification.userInfo[@"UIDeviceOrientationRotateAnimatedUserInfoKey"]]; + Class CATransactionClass = fbsdkdfl_CATransactionClass(); + CFTimeInterval animationDuration = (animated ? [CATransactionClass animationDuration] : 0.0); + [self _updateViewsWithScale:1.0 alpha:1.0 animationDuration:animationDuration completion:NULL]; +} + +- (void)_removeObservers +{ + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil]; +} + +#pragma mark - Helper Methods + +- (void)_cancel +{ + FBSDKWebDialog *dialog = self; + [self _dismissAnimated:YES]; // may cause the receiver to be released + [_delegate webDialogDidCancel:dialog]; +} + +- (void)_completeWithResults:(NSDictionary *)results +{ + FBSDKWebDialog *dialog = self; + [self _dismissAnimated:YES]; // may cause the receiver to be released + [_delegate webDialog:dialog didCompleteWithResults:results]; +} + +- (void)_dismissAnimated:(BOOL)animated +{ + [self _removeObservers]; + UIView *backgroundView = _backgroundView; + _backgroundView = nil; + FBSDKWebDialogView *dialogView = _dialogView; + _dialogView.delegate = nil; + _dialogView = nil; + void(^didDismiss)(BOOL) = ^(BOOL finished){ + [backgroundView removeFromSuperview]; + [dialogView removeFromSuperview]; + }; + if (animated) { + [UIView animateWithDuration:FBSDK_WEB_DIALOG_DISMISS_ANIMATION_DURATION animations:^{ + dialogView.alpha = 0.0; + backgroundView.alpha = 0.0; + } completion:didDismiss]; + } else { + didDismiss(YES); + } + if (g_currentDialog == self) { + g_currentDialog = nil; + } +} + +- (void)_failWithError:(NSError *)error +{ + // defer so that the consumer is guaranteed to have an opportunity to set the delegate before we fail + dispatch_async(dispatch_get_main_queue(), ^{ + [self _dismissAnimated:YES]; + [_delegate webDialog:self didFailWithError:error]; + }); +} + +- (UIWindow *)_findWindow +{ + UIWindow *window = [UIApplication sharedApplication].keyWindow; + if (window == nil || window.windowLevel != UIWindowLevelNormal) { + for (window in [UIApplication sharedApplication].windows) { + if (window.windowLevel == UIWindowLevelNormal) { + break; + } + } + } + return window; +} + +- (NSURL *)_generateURL:(NSError **)errorRef +{ + NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; + parameters[@"display"] = @"touch"; + parameters[@"sdk"] = [NSString stringWithFormat:@"ios-%@", [FBSDKSettings sdkVersion]]; + parameters[@"redirect_uri"] = @"fbconnect://success"; + [FBSDKInternalUtility dictionary:parameters setObject:[FBSDKSettings appID] forKey:@"app_id"]; + [FBSDKInternalUtility dictionary:parameters + setObject:[FBSDKAccessToken currentAccessToken].tokenString + forKey:@"access_token"]; + [parameters addEntriesFromDictionary:self.parameters]; + return [FBSDKInternalUtility facebookURLWithHostPrefix:@"m" + path:[@"/dialog/" stringByAppendingString:self.name] + queryParameters:parameters + error:errorRef]; +} + +- (BOOL)_showWebView +{ + UIWindow *window = [self _findWindow]; + if (!window) { + [self _failWithError:nil]; + return NO; + } + + [self _addObservers]; + + _backgroundView = [[UIView alloc] initWithFrame:window.bounds]; + _backgroundView.alpha = 0.0; + _backgroundView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); + _backgroundView.backgroundColor = [UIColor colorWithWhite:0.3 alpha:0.8]; + [window addSubview:_backgroundView]; + + [window addSubview:_dialogView]; + + [_dialogView becomeFirstResponder]; // dismisses the keyboard if it there was another first responder with it + [self _updateViewsWithScale:0.001 alpha:0.0 animationDuration:0.0 completion:NULL]; + [self _updateViewsWithScale:1.1 alpha:1.0 animationDuration:FBSDK_WEB_DIALOG_SHOW_ANIMATION_DURATION completion:^(BOOL finished1) { + [self _updateViewsWithScale:0.9 alpha:1.0 animationDuration:FBSDK_WEB_DIALOG_SHOW_ANIMATION_DURATION completion:^(BOOL finished2) { + [self _updateViewsWithScale:1.0 alpha:1.0 animationDuration:FBSDK_WEB_DIALOG_SHOW_ANIMATION_DURATION completion:NULL]; + }]; + }]; + return YES; +} + +- (CGAffineTransform)_transformForOrientation +{ + // iOS 8 simply adjusts the application frame to adapt to the current orientation and deprecated the concept of + // interface orientations + if ([FBSDKInternalUtility shouldManuallyAdjustOrientation]) { + switch ([UIApplication sharedApplication].statusBarOrientation) { + case UIInterfaceOrientationLandscapeLeft: + return CGAffineTransformMakeRotation(M_PI * 1.5); + case UIInterfaceOrientationLandscapeRight: + return CGAffineTransformMakeRotation(M_PI/2); + case UIInterfaceOrientationPortraitUpsideDown: + return CGAffineTransformMakeRotation(-M_PI); + case UIInterfaceOrientationPortrait: + case UIInterfaceOrientationUnknown: + // don't adjust the orientation + break; + } + } + return CGAffineTransformIdentity; +} + +- (CGRect)_applicationFrameForOrientation +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + CGRect applicationFrame = _dialogView.window.screen.applicationFrame; +#pragma clang diagnostic pop + if ([FBSDKInternalUtility shouldManuallyAdjustOrientation]) { + switch ([UIApplication sharedApplication].statusBarOrientation) { + case UIInterfaceOrientationLandscapeLeft: + case UIInterfaceOrientationLandscapeRight: + return CGRectMake(0, 0, CGRectGetHeight(applicationFrame), CGRectGetWidth(applicationFrame)); + case UIInterfaceOrientationPortraitUpsideDown: + case UIInterfaceOrientationPortrait: + case UIInterfaceOrientationUnknown: + return applicationFrame; + } + } else { + return applicationFrame; + } +} + +- (void)_updateViewsWithScale:(CGFloat)scale + alpha:(CGFloat)alpha + animationDuration:(CFTimeInterval)animationDuration + completion:(void(^)(BOOL finished))completion +{ + CGAffineTransform transform; + CGRect applicationFrame = [self _applicationFrameForOrientation]; + if (scale == 1.0) { + transform = _dialogView.transform; + _dialogView.transform = CGAffineTransformIdentity; + _dialogView.frame = applicationFrame; + _dialogView.transform = transform; + } + transform = CGAffineTransformScale([self _transformForOrientation], scale, scale); + void(^updateBlock)(void) = ^{ + _dialogView.transform = transform; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + CGRect mainFrame = _dialogView.window.screen.applicationFrame; +#pragma clang diagnostic pop + _dialogView.center = CGPointMake(CGRectGetMidX(mainFrame), + CGRectGetMidY(mainFrame)); + _backgroundView.alpha = alpha; + }; + if (animationDuration == 0.0) { + updateBlock(); + } else { + [UIView animateWithDuration:animationDuration animations:updateBlock completion:completion]; + } +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h new file mode 100644 index 0000000..9ad7427 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h @@ -0,0 +1,39 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@protocol FBSDKWebDialogViewDelegate; + +@interface FBSDKWebDialogView : UIView + +@property (nonatomic, assign) id delegate; + +- (void)loadURL:(NSURL *)URL; +- (void)stopLoading; + +@end + +@protocol FBSDKWebDialogViewDelegate + +- (void)webDialogView:(FBSDKWebDialogView *)webDialogView didCompleteWithResults:(NSDictionary *)results; +- (void)webDialogView:(FBSDKWebDialogView *)webDialogView didFailWithError:(NSError *)error; +- (void)webDialogViewDidCancel:(FBSDKWebDialogView *)webDialogView; +- (void)webDialogViewDidFinishLoad:(FBSDKWebDialogView *)webDialogView; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m new file mode 100644 index 0000000..92df897 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m @@ -0,0 +1,188 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKWebDialogView.h" + +#import "FBSDKCloseIcon.h" +#import "FBSDKError.h" +#import "FBSDKTypeUtility.h" +#import "FBSDKUtility.h" + +#define FBSDK_WEB_DIALOG_VIEW_BORDER_WIDTH 10.0 + +@interface FBSDKWebDialogView () +@end + +@implementation FBSDKWebDialogView +{ + UIButton *_closeButton; + UIActivityIndicatorView *_loadingView; + UIWebView *_webView; +} + +#pragma mark - Object Lifecycle + +- (instancetype)initWithFrame:(CGRect)frame +{ + if ((self = [super initWithFrame:frame])) { + self.backgroundColor = [UIColor clearColor]; + self.opaque = NO; + + _webView = [[UIWebView alloc] initWithFrame:CGRectZero]; + _webView.delegate = self; + [self addSubview:_webView]; + + _closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + UIImage *closeImage = [[[FBSDKCloseIcon alloc] init] imageWithSize:CGSizeMake(29.0, 29.0)]; + [_closeButton setImage:closeImage forState:UIControlStateNormal]; + [_closeButton setTitleColor:[UIColor colorWithRed:167.0/255.0 + green:184.0/255.0 + blue:216.0/255.0 + alpha:1.0] forState:UIControlStateNormal]; + [_closeButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted]; + _closeButton.showsTouchWhenHighlighted = YES; + [_closeButton sizeToFit]; + [self addSubview:_closeButton]; + [_closeButton addTarget:self action:@selector(_close:) forControlEvents:UIControlEventTouchUpInside]; + + _loadingView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; + _loadingView.color = [UIColor grayColor]; + [_webView addSubview:_loadingView]; + } + return self; +} + +- (void)dealloc +{ + _webView.delegate = nil; +} + +#pragma mark - Public Methods + +- (void)loadURL:(NSURL *)URL +{ + [_loadingView startAnimating]; + [_webView loadRequest:[NSURLRequest requestWithURL:URL]]; +} + +- (void)stopLoading +{ + [_webView stopLoading]; +} + +#pragma mark - Layout + +- (void)drawRect:(CGRect)rect +{ + CGContextRef context = UIGraphicsGetCurrentContext(); + CGContextSaveGState(context); + [self.backgroundColor setFill]; + CGContextFillRect(context, self.bounds); + [[UIColor blackColor] setStroke]; + CGContextSetLineWidth(context, 1.0 / self.layer.contentsScale); + CGContextStrokeRect(context, _webView.frame); + CGContextRestoreGState(context); + [super drawRect:rect]; +} + +- (void)layoutSubviews +{ + [super layoutSubviews]; + + CGRect bounds = self.bounds; + if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { + CGFloat horizontalInset = CGRectGetWidth(bounds) * 0.2; + CGFloat verticalInset = CGRectGetHeight(bounds) * 0.2; + UIEdgeInsets iPadInsets = UIEdgeInsetsMake(verticalInset, horizontalInset, verticalInset, horizontalInset); + bounds = UIEdgeInsetsInsetRect(bounds, iPadInsets); + } + UIEdgeInsets webViewInsets = UIEdgeInsetsMake(FBSDK_WEB_DIALOG_VIEW_BORDER_WIDTH, + FBSDK_WEB_DIALOG_VIEW_BORDER_WIDTH, + FBSDK_WEB_DIALOG_VIEW_BORDER_WIDTH, + FBSDK_WEB_DIALOG_VIEW_BORDER_WIDTH); + _webView.frame = UIEdgeInsetsInsetRect(bounds, webViewInsets); + + CGRect webViewBounds = _webView.bounds; + _loadingView.center = CGPointMake(CGRectGetMidX(webViewBounds), CGRectGetMidY(webViewBounds)); + + CGRect closeButtonFrame = _closeButton.bounds; + closeButtonFrame.origin = bounds.origin; + _closeButton.frame = closeButtonFrame; +} + +#pragma mark - Actions + +- (void)_close:(id)sender +{ + [_delegate webDialogViewDidCancel:self]; +} + +#pragma mark - UIWebViewDelegate + +- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error +{ + [_loadingView stopAnimating]; + + // 102 == WebKitErrorFrameLoadInterruptedByPolicyChange + // NSURLErrorCancelled == "Operation could not be completed", note NSURLErrorCancelled occurs when the user clicks + // away before the page has completely loaded, if we find cases where we want this to result in dialog failure + // (usually this just means quick-user), then we should add something more robust here to account for differences in + // application needs + if (!(([error.domain isEqualToString:NSURLErrorDomain] && error.code == NSURLErrorCancelled) || + ([error.domain isEqualToString:@"WebKitErrorDomain"] && error.code == 102))) { + [_delegate webDialogView:self didFailWithError:error]; + } +} + +- (BOOL)webView:(UIWebView *)webView +shouldStartLoadWithRequest:(NSURLRequest *)request + navigationType:(UIWebViewNavigationType)navigationType +{ + NSURL *URL = request.URL; + + if ([URL.scheme isEqualToString:@"fbconnect"]) { + NSMutableDictionary *parameters = [[FBSDKUtility dictionaryWithQueryString:URL.query] mutableCopy]; + [parameters addEntriesFromDictionary:[FBSDKUtility dictionaryWithQueryString:URL.fragment]]; + if ([URL.resourceSpecifier hasPrefix:@"//cancel"]) { + NSInteger errorCode = [FBSDKTypeUtility integerValue:parameters[@"error_code"]]; + if (errorCode) { + NSString *errorMessage = [FBSDKTypeUtility stringValue:parameters[@"error_msg"]]; + NSError *error = [FBSDKError errorWithCode:errorCode message:errorMessage]; + [_delegate webDialogView:self didFailWithError:error]; + } else { + [_delegate webDialogViewDidCancel:self]; + } + } else { + [_delegate webDialogView:self didCompleteWithResults:parameters]; + } + return NO; + } else if (navigationType == UIWebViewNavigationTypeLinkClicked) { + [[UIApplication sharedApplication] openURL:request.URL]; + return NO; + } else { + return YES; + } +} + +- (void)webViewDidFinishLoad:(UIWebView *)webView +{ + [_loadingView stopAnimating]; + [_delegate webDialogViewDidFinishLoad:self]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/LICENSE b/Unit-2-Journal/Pods/FBSDKCoreKit/LICENSE new file mode 100644 index 0000000..bdb9fc5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/LICENSE @@ -0,0 +1,17 @@ +Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + +You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +copy, modify, and distribute this software in source code or binary form for use +in connection with the web services and APIs provided by Facebook. + +As with any software that integrates with the Facebook platform, your use of +this software is subject to the Facebook Developer Principles and Policies +[http://developers.facebook.com/policy/]. This copyright notice shall be +included in all copies or substantial portions of the software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Unit-2-Journal/Pods/FBSDKCoreKit/README.mdown b/Unit-2-Journal/Pods/FBSDKCoreKit/README.mdown new file mode 100644 index 0000000..d14a5e4 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKCoreKit/README.mdown @@ -0,0 +1,46 @@ +Facebook SDK for iOS +==================== + +This open-source library allows you to integrate Facebook into your iOS app. + +Learn more about the provided samples, documentation, integrating the SDK into your app, accessing source code, and more at https://developers.facebook.com/docs/ios + +NOTE: By default, the Facebook SDK for iOS is installed in ~/Documents/FacebookSDK + +TRY IT OUT +---------- +1. Download the SDK at https://developers.facebook.com/docs/ios or via Cocoapods by adding the 'FBSDKCoreKit', 'FBSDKLoginKit', and 'FBSDKShareKit' pods. +2. Test your install: build and run the project at ~/Documents/FacebookSDK/Samples/Scrumptious/Scrumptious.xcodeproj +3. Check-out the tutorials available online at: https://developers.facebook.com/docs/ios/getting-started +4. Start coding! Visit https://developers.facebook.com/docs/ios for tutorials and reference documentation. + +FEATURES +-------- +* Login - https://developers.facebook.com/docs/facebook-login +* Sharing - https://developers.facebook.com/docs/sharing +* App Links - https://developers.facebook.com/docs/applinks +* Graph API - https://developers.facebook.com/docs/ios/graph +* Analytics for Apps - https://developers.facebook.com/docs/analytics + +GIVE FEEDBACK +------------- +Please report bugs or issues to https://developers.facebook.com/bugs/ + +You can also join the Facebook Developers Group on Facebook (https://www.facebook.com/groups/fbdevelopers/) or ask questions on Stack Overflow (http://facebook.stackoverflow.com) + +LICENSE +------- +See the LICENSE file. + +DEVELOPER TERMS +--------------- + +- By enabling Facebook integrations, including through this SDK, you can share information with Facebook, including information about people’s use of your app. Facebook will use information received in accordance with our Data Use Policy [https://www.facebook.com/about/privacy/], including to provide you with insights about the effectiveness of your ads and the use of your app. These integrations also enable us and our partners to serve ads on and off Facebook. + +- You may limit your sharing of information with us by updating the Insights control in the developer tool [https://developers.facebook.com/apps/{app_id}/settings/advanced]. + +- If you use a Facebook integration, including to share information with us, you agree and confirm that you have provided appropriate and sufficiently prominent notice to and obtained the appropriate consent from your users regarding such collection, use, and disclosure (including, at a minimum, through your privacy policy). You further agree that you will not share information with us about children under the age of 13. + +- You agree to comply with all applicable laws and regulations and also agree to our Terms , including our Platform Policies .and Advertising Guidelines, as applicable . + +By using the Facebook SDK for iOS you agree to these terms. diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h new file mode 100644 index 0000000..51499d4 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h @@ -0,0 +1,128 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import + +#import "FBSDKTooltipView.h" + +@protocol FBSDKLoginButtonDelegate; + +/*! + @typedef NS_ENUM(NSUInteger, FBSDKLoginButtonTooltipBehavior) + @abstract Indicates the desired login tooltip behavior. + */ +typedef NS_ENUM(NSUInteger, FBSDKLoginButtonTooltipBehavior) +{ + /*! The default behavior. The tooltip will only be displayed if + the app is eligible (determined by possible server round trip) */ + FBSDKLoginButtonTooltipBehaviorAutomatic = 0, + /*! Force display of the tooltip (typically for UI testing) */ + FBSDKLoginButtonTooltipBehaviorForceDisplay = 1, + /*! Force disable. In this case you can still exert more refined + control by manually constructing a `FBSDKLoginTooltipView` instance. */ + FBSDKLoginButtonTooltipBehaviorDisable = 2 +}; + +/*! + @abstract A button that initiates a log in or log out flow upon tapping. + @discussion `FBSDKLoginButton` works with `[FBSDKAccessToken currentAccessToken]` to + determine what to display, and automatically starts authentication when tapped (i.e., + you do not need to manually subscribe action targets). + + Like `FBSDKLoginManager`, you should make sure your app delegate is connected to + `FBSDKApplicationDelegate` in order for the button's delegate to receive messages. + + `FBSDKLoginButton` has a fixed height, but you may change the width. `initWithFrame:CGRectZero` + will size the button to its minimum frame. +*/ +@interface FBSDKLoginButton : FBSDKButton + +/*! + @abstract The default audience to use, if publish permissions are requested at login time. + */ +@property (assign, nonatomic) FBSDKDefaultAudience defaultAudience; +/*! + @abstract Gets or sets the delegate. + */ +@property (weak, nonatomic) IBOutlet id delegate; +/*! + @abstract Gets or sets the login behavior to use + */ +@property (assign, nonatomic) FBSDKLoginBehavior loginBehavior; +/*! + @abstract The publish permissions to request. + + @discussion Use `defaultAudience` to specify the default audience to publish to. + Note this is converted to NSSet and is only + an NSArray for the convenience of literal syntax. + */ +@property (copy, nonatomic) NSArray *publishPermissions; +/*! + @abstract The read permissions to request. + + @discussion Note, that if read permissions are specified, then publish permissions should not be specified. This is converted to NSSet and is only + an NSArray for the convenience of literal syntax. + */ +@property (copy, nonatomic) NSArray *readPermissions; +/*! + @abstract Gets or sets the desired tooltip behavior. + */ +@property (assign, nonatomic) FBSDKLoginButtonTooltipBehavior tooltipBehavior; +/*! + @abstract Gets or sets the desired tooltip color style. + */ +@property (assign, nonatomic) FBSDKTooltipColorStyle tooltipColorStyle; + +@end + +/*! + @protocol + @abstract A delegate for `FBSDKLoginButton` + */ +@protocol FBSDKLoginButtonDelegate + +@required +/*! + @abstract Sent to the delegate when the button was used to login. + @param loginButton the sender + @param result The results of the login + @param error The error (if any) from the login + */ +- (void) loginButton:(FBSDKLoginButton *)loginButton +didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result + error:(NSError *)error; + +/*! + @abstract Sent to the delegate when the button was used to logout. + @param loginButton The button that was clicked. +*/ +- (void)loginButtonDidLogOut:(FBSDKLoginButton *)loginButton; + +@optional +/*! + @abstract Sent to the delegate when the button is about to login. + @param loginButton the sender + @return YES if the login should be allowed to proceed, NO otherwise + */ +- (BOOL) loginButtonWillLogin:(FBSDKLoginButton *)loginButton; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m new file mode 100644 index 0000000..5ad8daa --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m @@ -0,0 +1,287 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLoginButton.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKLoginTooltipView.h" + +@interface FBSDKLoginButton() +@end + +@implementation FBSDKLoginButton +{ + BOOL _hasShownTooltipBubble; + FBSDKLoginManager *_loginManager; + NSString *_userID; + NSString *_userName; +} + +#pragma mark - Object Lifecycle + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +#pragma mark - Properties + +- (FBSDKDefaultAudience)defaultAudience +{ + return _loginManager.defaultAudience; +} + +- (void)setDefaultAudience:(FBSDKDefaultAudience)defaultAudience +{ + _loginManager.defaultAudience = defaultAudience; +} + +- (FBSDKLoginBehavior)loginBehavior +{ + return _loginManager.loginBehavior; +} + +- (void)setLoginBehavior:(FBSDKLoginBehavior)loginBehavior +{ + _loginManager.loginBehavior = loginBehavior; +} + +#pragma mark - UIView + +- (void)didMoveToWindow +{ + [super didMoveToWindow]; + + if (self.window && + ((self.tooltipBehavior == FBSDKLoginButtonTooltipBehaviorForceDisplay) || !_hasShownTooltipBubble)) { + [self performSelector:@selector(_showTooltipIfNeeded) withObject:nil afterDelay:0]; + _hasShownTooltipBubble = YES; + } +} + +#pragma mark - Layout + +- (void)layoutSubviews +{ + CGSize size = self.bounds.size; + CGSize longTitleSize = [self sizeThatFits:size title:[self _longLogInTitle]]; + NSString *title = (longTitleSize.width <= size.width ? + [self _longLogInTitle] : + [self _shortLogInTitle]); + if (![title isEqualToString:[self titleForState:UIControlStateNormal]]) { + [self setTitle:title forState:UIControlStateNormal]; + } + + [super layoutSubviews]; +} + +- (CGSize)sizeThatFits:(CGSize)size +{ + if ([self isHidden]) { + return CGSizeZero; + } + CGSize selectedSize = [self sizeThatFits:size title:[self _logOutTitle]]; + CGSize normalSize = [self sizeThatFits:CGSizeMake(CGFLOAT_MAX, size.height) title:[self _longLogInTitle]]; + if (normalSize.width > size.width) { + return normalSize = [self sizeThatFits:size title:[self _shortLogInTitle]]; + } + return CGSizeMake(MAX(normalSize.width, selectedSize.width), MAX(normalSize.height, selectedSize.height)); +} + +#pragma mark - UIActionSheetDelegate + +- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex +{ + if (buttonIndex == 0) { + FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; + [login logOut]; + [self.delegate loginButtonDidLogOut:self]; + } +} + +#pragma mark - FBSDKButtonImpressionTracking + +- (NSDictionary *)analyticsParameters +{ + return nil; +} + +- (NSString *)impressionTrackingEventName +{ + return FBSDKAppEventNameFBSDKLoginButtonImpression; +} + +- (NSString *)impressionTrackingIdentifier +{ + return @"login"; +} + +#pragma mark - FBSDKButton + +- (void)configureButton +{ + _loginManager = [[FBSDKLoginManager alloc] init]; + + NSString *logInTitle = [self _shortLogInTitle]; + NSString *logOutTitle = [self _logOutTitle]; + + [self configureWithIcon:nil + title:logInTitle + backgroundColor:[super defaultBackgroundColor] + highlightedColor:nil + selectedTitle:logOutTitle + selectedIcon:nil + selectedColor:[super defaultBackgroundColor] + selectedHighlightedColor:nil]; + self.titleLabel.textAlignment = NSTextAlignmentCenter; + + [self _updateContent]; + + [self addTarget:self action:@selector(_buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(_acessTokenDidChangeNotification:) + name:FBSDKAccessTokenDidChangeNotification + object:nil]; +} + +#pragma mark - Helper Methods + +- (void)_acessTokenDidChangeNotification:(NSNotification *)notification +{ + if (notification.userInfo[FBSDKAccessTokenDidChangeUserID]) { + [self _updateContent]; + } +} + +- (void)_buttonPressed:(id)sender +{ + if ([self.delegate respondsToSelector:@selector(loginButtonWillLogin:)]) { + if (![self.delegate loginButtonWillLogin:self]) { + return; + } + } + + [self logTapEventWithEventName:FBSDKAppEventNameFBSDKLoginButtonDidTap parameters:[self analyticsParameters]]; + if ([FBSDKAccessToken currentAccessToken]) { + NSString *title = nil; + + if (_userName) { + NSString *localizedFormatString = + NSLocalizedStringWithDefaultValue(@"LoginButton.LoggedInAs", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Logged in as %@", + @"The format string for the FBSDKLoginButton label when the user is logged in"); + title = [NSString localizedStringWithFormat:localizedFormatString, _userName]; + } else { + NSString *localizedLoggedIn = + NSLocalizedStringWithDefaultValue(@"LoginButton.LoggedIn", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Logged in using Facebook", + @"The fallback string for the FBSDKLoginButton label when the user name is not available yet"); + title = localizedLoggedIn; + } + NSString *cancelTitle = + NSLocalizedStringWithDefaultValue(@"LoginButton.CancelLogout", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Cancel", + @"The label for the FBSDKLoginButton action sheet to cancel logging out"); + NSString *logOutTitle = + NSLocalizedStringWithDefaultValue(@"LoginButton.ConfirmLogOut", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Log Out", + @"The label for the FBSDKLoginButton action sheet to confirm logging out"); +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:title + delegate:self + cancelButtonTitle:cancelTitle + destructiveButtonTitle:logOutTitle + otherButtonTitles:nil]; + [sheet showInView:self]; +#pragma clang diagnostic pop + } else { + FBSDKLoginManagerRequestTokenHandler handler = ^(FBSDKLoginManagerLoginResult *result, NSError *error) { + if ([self.delegate respondsToSelector:@selector(loginButton:didCompleteWithResult:error:)]) { + [self.delegate loginButton:self didCompleteWithResult:result error:error]; + } + }; + + if (self.publishPermissions.count > 0) { + [_loginManager logInWithPublishPermissions:self.publishPermissions + fromViewController:[FBSDKInternalUtility viewControllerforView:self] + handler:handler]; + } else { + [_loginManager logInWithReadPermissions:self.readPermissions + fromViewController:[FBSDKInternalUtility viewControllerforView:self] + handler:handler]; + } + } +} + +- (NSString *)_logOutTitle +{ + return NSLocalizedStringWithDefaultValue(@"LoginButton.LogOut", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Log out", + @"The label for the FBSDKLoginButton when the user is currently logged in"); + ; +} + +- (NSString *)_longLogInTitle +{ + return NSLocalizedStringWithDefaultValue(@"LoginButton.LogInLong", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Log in with Facebook", + @"The long label for the FBSDKLoginButton when the user is currently logged out"); +} + +- (NSString *)_shortLogInTitle +{ + return NSLocalizedStringWithDefaultValue(@"LoginButton.LogIn", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Log in", + @"The short label for the FBSDKLoginButton when the user is currently logged out"); +} + +- (void)_showTooltipIfNeeded +{ + if ([FBSDKAccessToken currentAccessToken] || self.tooltipBehavior == FBSDKLoginButtonTooltipBehaviorDisable) { + return; + } else { + FBSDKLoginTooltipView *tooltipView = [[FBSDKLoginTooltipView alloc] init]; + tooltipView.colorStyle = self.tooltipColorStyle; + if (self.tooltipBehavior == FBSDKLoginButtonTooltipBehaviorForceDisplay) { + tooltipView.forceDisplay = YES; + } + [tooltipView presentFromView:self]; + } +} + +- (void)_updateContent +{ + self.selected = ([FBSDKAccessToken currentAccessToken] != nil); + if ([FBSDKAccessToken currentAccessToken]) { + if (![[FBSDKAccessToken currentAccessToken].userID isEqualToString:_userID]) { + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me?fields=id,name" + parameters:nil + flags:FBSDKGraphRequestFlagDisableErrorRecovery]; + [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + NSString *userID = [FBSDKTypeUtility stringValue:result[@"id"]]; + if (!error && [[FBSDKAccessToken currentAccessToken].userID isEqualToString:userID]) { + _userName = [FBSDKTypeUtility stringValue:result[@"name"]]; + _userID = userID; + } + }]; + } + } +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h new file mode 100644 index 0000000..100c09a --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h @@ -0,0 +1,75 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @abstract The error domain for all errors from FBSDKLoginKit + @discussion Error codes from the SDK in the range 300-399 are reserved for this domain. + */ +FBSDK_EXTERN NSString *const FBSDKLoginErrorDomain; + +/*! + @typedef NS_ENUM(NSInteger, FBSDKLoginErrorCode) + @abstract Error codes for FBSDKLoginErrorDomain. + */ +typedef NS_ENUM(NSInteger, FBSDKLoginErrorCode) +{ + /*! + @abstract Reserved. + */ + FBSDKLoginReservedErrorCode = 300, + /*! + @abstract The error code for unknown errors. + */ + FBSDKLoginUnknownErrorCode, + + /*! + @abstract The user's password has changed and must log in again + */ + FBSDKLoginPasswordChangedErrorCode, + /*! + @abstract The user must log in to their account on www.facebook.com to restore access + */ + FBSDKLoginUserCheckpointedErrorCode, + /*! + @abstract Indicates a failure to request new permissions because the user has changed. + */ + FBSDKLoginUserMismatchErrorCode, + /*! + @abstract The user must confirm their account with Facebook before logging in + */ + FBSDKLoginUnconfirmedUserErrorCode, + + /*! + @abstract The Accounts framework failed without returning an error, indicating the + app's slider in the iOS Facebook Settings (device Settings -> Facebook -> App Name) has + been disabled. + */ + FBSDKLoginSystemAccountAppDisabledErrorCode, + /*! + @abstract An error occurred related to Facebook system Account store + */ + FBSDKLoginSystemAccountUnavailableErrorCode, + /*! + @abstract The login response was missing a valid challenge string. + */ + FBSDKLoginBadChallengeString, +}; diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m new file mode 100644 index 0000000..1897305 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m @@ -0,0 +1,21 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLoginConstants.h" + +NSString *const FBSDKLoginErrorDomain = @"com.facebook.sdk.login"; diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h new file mode 100644 index 0000000..4723940 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import +#import +#import +#import +#import diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h new file mode 100644 index 0000000..ee35bd8 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h @@ -0,0 +1,202 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import +#import +#import + +@class FBSDKLoginManagerLoginResult; + +/*! + @abstract Describes the call back to the FBSDKLoginManager + @param result the result of the authorization + @param error the authorization error, if any. + */ +typedef void (^FBSDKLoginManagerRequestTokenHandler)(FBSDKLoginManagerLoginResult *result, NSError *error); + + +/*! + @typedef FBSDKDefaultAudience enum + + @abstract + Passed to open to indicate which default audience to use for sessions that post data to Facebook. + + @discussion + Certain operations such as publishing a status or publishing a photo require an audience. When the user + grants an application permission to perform a publish operation, a default audience is selected as the + publication ceiling for the application. This enumerated value allows the application to select which + audience to ask the user to grant publish permission for. + */ +typedef NS_ENUM(NSUInteger, FBSDKDefaultAudience) +{ + /*! Indicates that the user's friends are able to see posts made by the application */ + FBSDKDefaultAudienceFriends = 0, + /*! Indicates that only the user is able to see posts made by the application */ + FBSDKDefaultAudienceOnlyMe, + /*! Indicates that all Facebook users are able to see posts made by the application */ + FBSDKDefaultAudienceEveryone, +}; + +/*! + @typedef FBSDKLoginBehavior enum + + @abstract + Passed to the \c FBSDKLoginManager to indicate how Facebook Login should be attempted. + + @discussion + Facebook Login authorizes the application to act on behalf of the user, using the user's + Facebook account. Usually a Facebook Login will rely on an account maintained outside of + the application, by the native Facebook application, the browser, or perhaps the device + itself. This avoids the need for a user to enter their username and password directly, and + provides the most secure and lowest friction way for a user to authorize the application to + interact with Facebook. + + The \c FBSDKLoginBehavior enum specifies which log-in methods may be used. The SDK + will determine the best behavior based on the current device (such as iOS version). + */ +typedef NS_ENUM(NSUInteger, FBSDKLoginBehavior) +{ + /*! + @abstract This is the default behavior, and indicates logging in through the native + Facebook app may be used. The SDK may still use Safari instead. + */ + FBSDKLoginBehaviorNative = 0, + /*! + @abstract Attempts log in through the Safari or SFSafariViewController, if available. + */ + FBSDKLoginBehaviorBrowser, + /*! + @abstract Attempts log in through the Facebook account currently signed in through + the device Settings. + @note If the account is not available to the app (either not configured by user or + as determined by the SDK) this behavior falls back to \c FBSDKLoginBehaviorNative. + */ + FBSDKLoginBehaviorSystemAccount, + /*! + @abstract Attemps log in through a modal \c UIWebView pop up + + @note This behavior is only available to certain types of apps. Please check the Facebook + Platform Policy to verify your app meets the restrictions. + */ + FBSDKLoginBehaviorWeb, +}; + +/*! + @abstract `FBSDKLoginManager` provides methods for logging the user in and out. + @discussion `FBSDKLoginManager` works directly with `[FBSDKAccessToken currentAccessToken]` and + sets the "currentAccessToken" upon successful authorizations (or sets `nil` in case of `logOut`). + + You should check `[FBSDKAccessToken currentAccessToken]` before calling logIn* to see if there is + a cached token available (typically in your viewDidLoad). + + If you are managing your own token instances outside of "currentAccessToken", you will need to set + "currentAccessToken" before calling logIn* to authorize futher permissions on your tokens. + */ +@interface FBSDKLoginManager : NSObject + +/*! + @abstract the default audience. + @discussion you should set this if you intend to ask for publish permissions. + */ +@property (assign, nonatomic) FBSDKDefaultAudience defaultAudience; + +/*! + @abstract the login behavior + */ +@property (assign, nonatomic) FBSDKLoginBehavior loginBehavior; + +/*! + @deprecated use logInWithReadPermissions:fromViewController:handler: instead + */ +- (void)logInWithReadPermissions:(NSArray *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler +__attribute__ ((deprecated("use logInWithReadPermissions:fromViewController:handler: instead"))); + +/*! + @deprecated use logInWithPublishPermissions:fromViewController:handler: instead + */ +- (void)logInWithPublishPermissions:(NSArray *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler +__attribute__ ((deprecated("use logInWithPublishPermissions:fromViewController:handler: instead"))); + +/*! + @abstract Logs the user in or authorizes additional permissions. + @param permissions the optional array of permissions. Note this is converted to NSSet and is only + an NSArray for the convenience of literal syntax. + @param fromViewController the view controller to present from. If nil, the topmost view controller will be + automatically determined as best as possible. + @param handler the callback. + @discussion Use this method when asking for read permissions. You should only ask for permissions when they + are needed and explain the value to the user. You can inspect the result.declinedPermissions to also + provide more information to the user if they decline permissions. + + If `[FBSDKAccessToken currentAccessToken]` is not nil, it will be treated as a reauthorization for that user + and will pass the "rerequest" flag to the login dialog. + + This method will present UI the user. You typically should check if `[FBSDKAccessToken currentAccessToken]` + already contains the permissions you need before asking to reduce unnecessary app switching. For example, + you could make that check at viewDidLoad. + */ +- (void)logInWithReadPermissions:(NSArray *)permissions + fromViewController:(UIViewController *)fromViewController + handler:(FBSDKLoginManagerRequestTokenHandler)handler; + +/*! + @abstract Logs the user in or authorizes additional permissions. + @param permissions the optional array of permissions. Note this is converted to NSSet and is only + an NSArray for the convenience of literal syntax. + @param fromViewController the view controller to present from. If nil, the topmost view controller will be + automatically determined as best as possible. + @param handler the callback. + @discussion Use this method when asking for publish permissions. You should only ask for permissions when they + are needed and explain the value to the user. You can inspect the result.declinedPermissions to also + provide more information to the user if they decline permissions. + + If `[FBSDKAccessToken currentAccessToken]` is not nil, it will be treated as a reauthorization for that user + and will pass the "rerequest" flag to the login dialog. + + This method will present UI the user. You typically should check if `[FBSDKAccessToken currentAccessToken]` + already contains the permissions you need before asking to reduce unnecessary app switching. For example, + you could make that check at viewDidLoad. + */ +- (void)logInWithPublishPermissions:(NSArray *)permissions + fromViewController:(UIViewController *)fromViewController + handler:(FBSDKLoginManagerRequestTokenHandler)handler; + +/*! + @abstract Logs the user out + @discussion This calls [FBSDKAccessToken setCurrentAccessToken:nil] and [FBSDKProfile setCurrentProfile:nil]. + */ +- (void)logOut; + +/*! + @method + + @abstract Issues an asychronous renewCredentialsForAccount call to the device's Facebook account store. + + @param handler The completion handler to call when the renewal is completed. This can be invoked on an arbitrary thread. + + @discussion This can be used to explicitly renew account credentials and is provided as a convenience wrapper around + `[ACAccountStore renewCredentialsForAccount:completion]`. Note the method will not issue the renewal call if the the + Facebook account has not been set on the device, or if access had not been granted to the account (though the handler + wil receive an error). + + If the `[FBSDKAccessToken currentAccessToken]` was from the account store, a succesful renewal will also set + a new "currentAccessToken". + */ ++ (void)renewSystemCredentials:(void (^)(ACAccountCredentialRenewResult result, NSError *error))handler; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m new file mode 100644 index 0000000..5b91b8f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m @@ -0,0 +1,785 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLoginManager+Internal.h" +#import "FBSDKLoginManagerLoginResult+Internal.h" + +#import +#import + +#import "_FBSDKLoginRecoveryAttempter.h" +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKLoginCompletion.h" +#import "FBSDKLoginConstants.h" +#import "FBSDKLoginError.h" +#import "FBSDKLoginManagerLogger.h" +#import "FBSDKLoginUtility.h" + +static int const FBClientStateChallengeLength = 20; +static NSString *const FBSDKExpectedChallengeKey = @"expected_login_challenge"; + +@implementation FBSDKLoginManager +{ + FBSDKLoginManagerRequestTokenHandler _handler; + FBSDKLoginManagerLogger *_logger; + // YES if we're calling out to the Facebook app or Safari to perform a log in + BOOL _performingLogIn; + FBSDKKeychainStore *_keychainStore; +} + ++ (void)initialize +{ + if (self == [FBSDKLoginManager class]) { + [_FBSDKLoginRecoveryAttempter class]; + [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:NULL]; + } +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + NSString *keyChainServiceIdentifier = [NSString stringWithFormat:@"com.facebook.sdk.loginmanager.%@", [[NSBundle mainBundle] bundleIdentifier]]; + _keychainStore = [[FBSDKKeychainStore alloc] initWithService:keyChainServiceIdentifier accessGroup:nil]; + } + return self; +} + +- (void)logInWithReadPermissions:(NSArray *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler +{ + [self logInWithReadPermissions:permissions + fromViewController:nil + handler:handler]; +} +- (void)logInWithReadPermissions:(NSArray *)permissions + fromViewController:(UIViewController *)fromViewController + handler:(FBSDKLoginManagerRequestTokenHandler)handler +{ + [self assertPermissions:permissions]; + NSSet *permissionSet = [NSSet setWithArray:permissions]; + if (![FBSDKLoginUtility areAllPermissionsReadPermissions:permissionSet]) { + [[NSException exceptionWithName:NSInvalidArgumentException + reason:@"Publish or manage permissions are not permitted to be requested with read permissions." + userInfo:nil] + raise]; + } + self.fromViewController = fromViewController; + [self logInWithPermissions:permissionSet handler:handler]; +} + +- (void)logInWithPublishPermissions:(NSArray *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler +{ + [self logInWithPublishPermissions:permissions + fromViewController:nil + handler:handler]; +} + +- (void)logInWithPublishPermissions:(NSArray *)permissions + fromViewController:(UIViewController *)fromViewController + handler:(FBSDKLoginManagerRequestTokenHandler)handler +{ + [self assertPermissions:permissions]; + NSSet *permissionSet = [NSSet setWithArray:permissions]; + if (![FBSDKLoginUtility areAllPermissionsPublishPermissions:permissionSet]) { + [[NSException exceptionWithName:NSInvalidArgumentException + reason:@"Read permissions are not permitted to be requested with publish or manage permissions." + userInfo:nil] + raise]; + } + self.fromViewController = fromViewController; + [self logInWithPermissions:permissionSet handler:handler]; +} + +- (void)logOut +{ + [FBSDKAccessToken setCurrentAccessToken:nil]; + [FBSDKProfile setCurrentProfile:nil]; +} + ++ (void)renewSystemCredentials:(void (^)(ACAccountCredentialRenewResult result, NSError *error))handler +{ + FBSDKSystemAccountStoreAdapter *adapter = [FBSDKSystemAccountStoreAdapter sharedInstance]; + + if (!adapter.accountType) { + handler(ACAccountCredentialRenewResultFailed, [FBSDKLoginError errorForFailedLoginWithCode:FBSDKLoginSystemAccountUnavailableErrorCode]); + } else if (!adapter.accountType.accessGranted) { + handler(ACAccountCredentialRenewResultFailed, [FBSDKLoginError errorForFailedLoginWithCode:FBSDKLoginSystemAccountAppDisabledErrorCode]); + } else { + [[FBSDKSystemAccountStoreAdapter sharedInstance] renewSystemAuthorization:handler]; + } +} + +#pragma mark - Private + +- (void)assertPermissions:(NSArray *)permissions +{ + for (NSString *permission in permissions) { + if (![permission isKindOfClass:[NSString class]]) { + [[NSException exceptionWithName:NSInvalidArgumentException + reason:@"Permissions must be string values." + userInfo:nil] + raise]; + } + if ([permission rangeOfString:@","].location != NSNotFound) { + [[NSException exceptionWithName:NSInvalidArgumentException + reason:@"Permissions should each be specified in separate string values in the array." + userInfo:nil] + raise]; + } + } +} + +- (void)completeAuthentication:(FBSDKLoginCompletionParameters *)parameters expectChallenge:(BOOL)expectChallenge +{ + FBSDKLoginManagerLoginResult *result = nil; + NSError *error = parameters.error; + + NSString *tokenString = parameters.accessTokenString; + BOOL cancelled = (tokenString == nil); + + BOOL challengePassed = YES; + if (expectChallenge) { + // Perform this check early so we be sure to clear expected challenge in all cases. + NSString *challengeReceived = parameters.challenge; + NSString *challengeExpected = [self loadExpectedChallenge]; + if (![challengeExpected isEqualToString:challengeReceived]) { + challengePassed = NO; + } + + // Don't overwrite an existing error, if any. + if (!error && !cancelled && !challengePassed) { + error = [FBSDKLoginError errorForFailedLoginWithCode:FBSDKLoginBadChallengeString]; + } + } + + [self storeExpectedChallenge:nil]; + + if (!error) { + if (!cancelled) { + NSSet *grantedPermissions = parameters.permissions; + NSSet *declinedPermissions = parameters.declinedPermissions; + + NSSet *recentlyGrantedPermissions = nil; + NSSet *recentlyDeclinedPermissions = nil; + + [self determineRecentlyGrantedPermissions:&recentlyGrantedPermissions + recentlyDeclinedPermissions:&recentlyDeclinedPermissions + forGrantedPermission:grantedPermissions + declinedPermissions:declinedPermissions]; + + if (recentlyGrantedPermissions.count > 0) { + FBSDKAccessToken *token = [[FBSDKAccessToken alloc] initWithTokenString:tokenString + permissions:[grantedPermissions allObjects] + declinedPermissions:[declinedPermissions allObjects] + appID:parameters.appID + userID:parameters.userID + expirationDate:parameters.expirationDate + refreshDate:[NSDate date]]; + result = [[FBSDKLoginManagerLoginResult alloc] initWithToken:token + isCancelled:NO + grantedPermissions:recentlyGrantedPermissions + declinedPermissions:recentlyDeclinedPermissions]; + + if ([FBSDKAccessToken currentAccessToken]) { + [self validateReauthentication:[FBSDKAccessToken currentAccessToken] withResult:result]; + // in a reauth, short circuit and let the login handler be called when the validation finishes. + return; + } + } else { + cancelled = YES; + } + } + + if (cancelled) { + NSSet *declinedPermissions = nil; + + // If a System Account reauthorization was cancelled by the user tapping Don't Allow + // then add the declined permissions to the login result. The Accounts framework + // doesn't register the decline with Facebook, which is why we don't update the + // access token. + if ([FBSDKAccessToken currentAccessToken] != nil && parameters.isSystemAccount) { + declinedPermissions = parameters.declinedPermissions; + } + + result = [[FBSDKLoginManagerLoginResult alloc] initWithToken:nil + isCancelled:YES + grantedPermissions:nil + declinedPermissions:declinedPermissions]; + } + } + + if (result.token) { + [FBSDKAccessToken setCurrentAccessToken:result.token]; + } + + [self invokeHandler:result error:error]; +} + +- (void)determineRecentlyGrantedPermissions:(NSSet **)recentlyGrantedPermissionsRef + recentlyDeclinedPermissions:(NSSet **)recentlyDeclinedPermissionsRef + forGrantedPermission:(NSSet *)grantedPermissions + declinedPermissions:(NSSet *)declinedPermissions +{ + NSMutableSet *recentlyGrantedPermissions = [grantedPermissions mutableCopy]; + NSSet *previouslyGrantedPermissions = ([FBSDKAccessToken currentAccessToken] ? + [FBSDKAccessToken currentAccessToken].permissions : + nil); + if (previouslyGrantedPermissions.count > 0) { + // this is a reauth, so recentlyGranted should be a subset of what was requested. + [recentlyGrantedPermissions intersectSet:_requestedPermissions]; + } + + NSMutableSet *recentlyDeclinedPermissions = [_requestedPermissions mutableCopy]; + [recentlyDeclinedPermissions intersectSet:declinedPermissions]; + + if (recentlyGrantedPermissionsRef != NULL) { + *recentlyGrantedPermissionsRef = [recentlyGrantedPermissions copy]; + } + if (recentlyDeclinedPermissionsRef != NULL) { + *recentlyDeclinedPermissionsRef = [recentlyDeclinedPermissions copy]; + } +} + +- (void)invokeHandler:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error +{ + [_logger endLoginWithResult:result error:error]; + [_logger endSession]; + _logger = nil; + + if (_handler) { + FBSDKLoginManagerRequestTokenHandler handler = _handler; + _handler(result, error); + if (handler == _handler) { + _handler = nil; + } else { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors + formatString:@"** WARNING: You are requesting permissions inside the completion block of an existing login." + "This is unsupported behavior. You should request additional permissions only when they are needed, such as requesting for publish_actions" + "when the user performs a sharing action."]; + } + } +} + +- (NSString *)loadExpectedChallenge +{ + return [_keychainStore stringForKey:FBSDKExpectedChallengeKey]; +} + +- (NSDictionary *)logInParametersWithPermissions:(NSSet *)permissions +{ + [FBSDKInternalUtility validateURLSchemes]; + + NSMutableDictionary *loginParams = [NSMutableDictionary dictionary]; + loginParams[@"client_id"] = [FBSDKSettings appID]; + loginParams[@"response_type"] = @"token,signed_request"; + loginParams[@"redirect_uri"] = @"fbconnect://success"; + loginParams[@"display"] = @"touch"; + loginParams[@"sdk"] = @"ios"; + loginParams[@"return_scopes"] = @"true"; + loginParams[@"sdk_version"] = FBSDK_VERSION_STRING; + loginParams[@"fbapp_pres"] = @([FBSDKInternalUtility isFacebookAppInstalled]); + if ([FBSDKAccessToken currentAccessToken]) { + loginParams[@"auth_type"] = @"rerequest"; + } + [FBSDKInternalUtility dictionary:loginParams setObject:[FBSDKSettings appURLSchemeSuffix] forKey:@"local_client_id"]; + [FBSDKInternalUtility dictionary:loginParams setObject:[FBSDKLoginUtility stringForAudience:self.defaultAudience] forKey:@"default_audience"]; + [FBSDKInternalUtility dictionary:loginParams setObject:[[permissions allObjects] componentsJoinedByString:@","] forKey:@"scope"]; + + NSString *expectedChallenge = [FBSDKLoginManager stringForChallenge]; + NSDictionary *state = @{@"challenge": [FBSDKUtility URLEncode:expectedChallenge]}; + loginParams[@"state"] = [FBSDKInternalUtility JSONStringForObject:state error:NULL invalidObjectHandler:nil]; + + [self storeExpectedChallenge:expectedChallenge]; + + return loginParams; +} + +- (void)logInWithPermissions:(NSSet *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler +{ + _logger = [[FBSDKLoginManagerLogger alloc] init]; + + _handler = [handler copy]; + _requestedPermissions = permissions; + + [_logger startSessionForLoginManager:self]; + + [self logInWithBehavior:self.loginBehavior]; +} + +- (void)logInWithBehavior:(FBSDKLoginBehavior)loginBehavior +{ + NSDictionary *loginParams = [self logInParametersWithPermissions:_requestedPermissions]; + + void(^completion)(BOOL, NSString *, NSError *) = ^void(BOOL didPerformLogIn, NSString *authMethod, NSError *error) { + if (didPerformLogIn) { + [_logger startAuthMethod:authMethod]; + _performingLogIn = YES; + } else { + if (!error) { + error = [NSError errorWithDomain:FBSDKLoginErrorDomain code:FBSDKLoginUnknownErrorCode userInfo:nil]; + } + [self invokeHandler:nil error:error]; + } + }; + + switch (loginBehavior) { + case FBSDKLoginBehaviorNative: { + if ([FBSDKInternalUtility isFacebookAppInstalled]) { + [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:^(FBSDKServerConfiguration *serverConfiguration, NSError *loadError) { + BOOL useNativeDialog = [serverConfiguration useNativeDialogForDialogName:FBSDKDialogConfigurationNameLogin]; + if (useNativeDialog && loadError == nil) { + [self performNativeLogInWithParameters:loginParams handler:^(BOOL openedURL, NSError *openedURLError) { + if (openedURLError) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors + formatString:@"FBSDKLoginBehaviorNative failed : %@\nTrying FBSDKLoginBehaviorBrowser", openedURLError]; + } + if (openedURL) { + completion(YES, FBSDKLoginManagerLoggerAuthMethod_Native, openedURLError); + } else { + [self logInWithBehavior:FBSDKLoginBehaviorBrowser]; + } + }]; + } else { + [self logInWithBehavior:FBSDKLoginBehaviorBrowser]; + } + }]; + break; + } + // intentional fall through. + } + case FBSDKLoginBehaviorBrowser: { + [self performBrowserLogInWithParameters:loginParams handler:^(BOOL openedURL, + NSString *authMethod, + NSError *openedURLError) { + if (openedURL) { + completion(YES, authMethod, openedURLError); + } else { + completion(NO, authMethod, openedURLError); + } + }]; + break; + } + case FBSDKLoginBehaviorSystemAccount: { + [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:^(FBSDKServerConfiguration *serverConfiguration, NSError *loadError) { + if (serverConfiguration.isSystemAuthenticationEnabled && loadError == nil) { + [self beginSystemLogIn]; + } else { + [self logInWithBehavior:FBSDKLoginBehaviorNative]; + } + }]; + completion(YES, FBSDKLoginManagerLoggerAuthMethod_System, nil); + break; + } + case FBSDKLoginBehaviorWeb: + [self performWebLogInWithParameters:loginParams handler:^(BOOL openedURL, NSError *openedURLError) { + completion(openedURL, FBSDKLoginManagerLoggerAuthMethod_Webview, openedURLError); + }]; + break; + } +} + +- (void)storeExpectedChallenge:(NSString *)challengeExpected +{ + [_keychainStore setString:challengeExpected + forKey:FBSDKExpectedChallengeKey + accessibility:[FBSDKDynamicFrameworkLoader loadkSecAttrAccessibleAfterFirstUnlockThisDeviceOnly]]; +} + ++ (NSString *)stringForChallenge { + return [FBSDKCrypto randomString:FBClientStateChallengeLength]; +} + +- (void)validateReauthentication:(FBSDKAccessToken *)currentToken withResult:(FBSDKLoginManagerLoginResult *)loginResult +{ + FBSDKGraphRequest *requestMe = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" + parameters:@{@"fields":@""} + tokenString:loginResult.token.tokenString + HTTPMethod:nil + flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; + [requestMe startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + NSString *actualID = result[@"id"]; + if ([currentToken.userID isEqualToString:actualID]) { + [FBSDKAccessToken setCurrentAccessToken:loginResult.token]; + [self invokeHandler:loginResult error:nil]; + } else { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + [FBSDKInternalUtility dictionary:userInfo setObject:error forKey:NSUnderlyingErrorKey]; + NSError *resultError = [NSError errorWithDomain:FBSDKLoginErrorDomain + code:FBSDKLoginUserMismatchErrorCode + userInfo:userInfo]; + [self invokeHandler:nil error:resultError]; + } + }]; +} + +#pragma mark - Test Methods + +- (void)setHandler:(FBSDKLoginManagerRequestTokenHandler)handler +{ + _handler = [handler copy]; +} + +- (void)setRequestedPermissions:(NSSet *)requestedPermissions +{ + _requestedPermissions = [requestedPermissions copy]; +} + +@end + +#pragma mark - + +@implementation FBSDKLoginManager (Native) + +- (void)performNativeLogInWithParameters:(NSDictionary *)loginParams handler:(void(^)(BOOL, NSError*))handler +{ + [_logger willAttemptAppSwitchingBehavior]; + loginParams = [_logger parametersWithTimeStampAndClientState:loginParams forAuthMethod:FBSDKLoginManagerLoggerAuthMethod_Native]; + + NSString *scheme = ([FBSDKSettings appURLSchemeSuffix] ? @"fbauth2" : @"fbauth"); + NSMutableDictionary *mutableParams = [NSMutableDictionary dictionaryWithDictionary:loginParams]; + mutableParams[@"legacy_override"] = FBSDK_TARGET_PLATFORM_VERSION; + NSError *error; + NSURL *authURL = [FBSDKInternalUtility URLWithScheme:scheme host:@"authorize" path:@"" queryParameters:mutableParams error:&error]; + + [[FBSDKApplicationDelegate sharedInstance] openURL:authURL sender:self handler:^(BOOL openedURL) { + if (handler) { + handler(openedURL, error); + } + }]; +} + +// change bool to auth method string. +- (void)performBrowserLogInWithParameters:(NSDictionary *)loginParams + handler:(void(^)(BOOL didOpen, NSString *authMethod, NSError *error))handler +{ + [_logger willAttemptAppSwitchingBehavior]; + + FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; + BOOL useSafariViewController = [configuration useSafariViewControllerForDialogName:FBSDKDialogConfigurationNameLogin]; + NSString *authMethod = (useSafariViewController ? FBSDKLoginManagerLoggerAuthMethod_SFVC : FBSDKLoginManagerLoggerAuthMethod_Browser); + + loginParams = [_logger parametersWithTimeStampAndClientState:loginParams forAuthMethod:authMethod]; + + NSURL *authURL = nil; + NSError *error; + NSURL *redirectURL = [FBSDKInternalUtility appURLWithHost:@"authorize" path:nil queryParameters:nil error:&error]; + if (!error) { + NSMutableDictionary *browserParams = [loginParams mutableCopy]; + [FBSDKInternalUtility dictionary:browserParams + setObject:redirectURL + forKey:@"redirect_uri"]; + authURL = [FBSDKInternalUtility facebookURLWithHostPrefix:@"m." + path:@"/dialog/oauth" + queryParameters:browserParams + error:&error]; + } + if (authURL) { + void(^handlerWrapper)(BOOL) = ^(BOOL didOpen) { + if (handler) { + handler(didOpen, authMethod, nil); + } + }; + if (useSafariViewController) { + // Note based on above, authURL must be a http scheme. If that changes, add a guard, otherwise SFVC can throw + [[FBSDKApplicationDelegate sharedInstance] openURLWithSafariViewController:authURL + sender:self + fromViewController:self.fromViewController + handler:handlerWrapper]; + } else { + [[FBSDKApplicationDelegate sharedInstance] openURL:authURL sender:self handler:handlerWrapper]; + } + } else { + error = error ?: [FBSDKError errorWithCode:FBSDKLoginUnknownErrorCode message:@"Failed to construct oauth browser url"]; + if (handler) { + handler(NO, nil, error); + } + } +} + +- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation +{ + // verify the URL is intended as a callback for the SDK's log in + BOOL isFacebookURL = [[url scheme] hasPrefix:[NSString stringWithFormat:@"fb%@", [FBSDKSettings appID]]] && + [[url host] isEqualToString:@"authorize"]; + + BOOL isExpectedSourceApplication = [sourceApplication hasPrefix:@"com.facebook"] || [sourceApplication hasPrefix:@"com.apple"]; + + if (!isFacebookURL && _performingLogIn) { + [self handleImplicitCancelOfLogIn]; + } + _performingLogIn = NO; + + if (isFacebookURL && isExpectedSourceApplication) { + NSDictionary *urlParameters = [FBSDKLoginUtility queryParamsFromLoginURL:url]; + id completer = [[FBSDKLoginURLCompleter alloc] initWithURLParameters:urlParameters appID:[FBSDKSettings appID]]; + + if (_logger == nil) { + _logger = [FBSDKLoginManagerLogger loggerFromParameters:urlParameters]; + } + + // any necessary strong reference is maintained by the FBSDKLoginURLCompleter handler + [completer completeLogIn:self withHandler:^(FBSDKLoginCompletionParameters *parameters) { + [self completeAuthentication:parameters expectChallenge:YES]; + }]; + } + + return isFacebookURL; +} + +- (void)applicationDidBecomeActive:(UIApplication *)application +{ + if (_performingLogIn) { + _performingLogIn = NO; + [self handleImplicitCancelOfLogIn]; + } +} + +- (void)handleImplicitCancelOfLogIn { + FBSDKLoginManagerLoginResult *result = [[FBSDKLoginManagerLoginResult alloc] initWithToken:nil + isCancelled:YES + grantedPermissions:nil + declinedPermissions:nil]; + [result addLoggingExtra:@(YES) forKey:@"implicit_cancel"]; + [self invokeHandler:result error:nil]; +} + +@end + +@implementation FBSDKLoginManager (Accounts) + +- (void)beginSystemLogIn +{ + // First, we need to validate the current access token. The user may have uninstalled the + // app, changed their password, etc., or the acceess token may have expired, which + // requires us to renew the account before asking for additional permissions. + NSString *accessTokenString = [FBSDKSystemAccountStoreAdapter sharedInstance].accessTokenString; + if (accessTokenString.length > 0) { + FBSDKGraphRequest *meRequest = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" + parameters:@{ @"fields" : @"id" } + tokenString:accessTokenString + HTTPMethod:nil + flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; + [meRequest startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + if (!error) { + // If there was no error, make an explicit renewal call anyway to cover cases where user has revoked some read permission like email. + // Otherwise, iOS system account may continue to think email was granted and never prompt UI again. + [[FBSDKSystemAccountStoreAdapter sharedInstance] renewSystemAuthorization:^(ACAccountCredentialRenewResult renewResult, NSError *renewError) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self performSystemLogIn]; + }); + }]; + } else { + // If there was an error, FBSDKGraphRequestConnection would have already done work already (like renewal calls) + [self performSystemLogIn]; + } + }]; + } else { + [self performSystemLogIn]; + } +} + +- (void)performSystemLogIn +{ + if (![FBSDKSystemAccountStoreAdapter sharedInstance].accountType) { + // There is no Facebook system account type. Fallback to Native behavior + [self fallbackToNativeBehavior]; + return; + } + BOOL isReauthorize = [FBSDKAccessToken currentAccessToken] != nil; + + // app may be asking for nothing, but we will always have a set here + NSMutableSet *permissionsToUse = _requestedPermissions ? [_requestedPermissions mutableCopy] : [NSMutableSet set]; + // Only add basic info if this is not reauthorize case, if it is the app should already have basic info ToSed + if (!isReauthorize) { + // Ensure that basic info is among the permissions requested so that the app will install if necessary. + // "email" is used as a proxy for basic_info permission. + [permissionsToUse addObject:@"email"]; + } + + [permissionsToUse removeObject:@"public_profile"]; + [permissionsToUse removeObject:@"user_friends"]; + + NSString *audience; + switch (self.defaultAudience) { + case FBSDKDefaultAudienceOnlyMe: + audience = fbsdkdfl_ACFacebookAudienceOnlyMe(); + break; + case FBSDKDefaultAudienceFriends: + audience = fbsdkdfl_ACFacebookAudienceFriends(); + break; + case FBSDKDefaultAudienceEveryone: + audience = fbsdkdfl_ACFacebookAudienceEveryone(); + break; + default: + audience = nil; + } + + unsigned long timePriorToSystemAuthUI = [FBSDKInternalUtility currentTimeInMilliseconds]; + + // the FBSDKSystemAccountStoreAdapter completion handler maintains the strong reference during the the asynchronous operation + [[FBSDKSystemAccountStoreAdapter sharedInstance] + requestAccessToFacebookAccountStore:permissionsToUse + defaultAudience:audience + isReauthorize:isReauthorize + appID:[FBSDKSettings appID] + handler:^(NSString *oauthToken, NSError *accountStoreError) { + + // There doesn't appear to be a reliable way to determine whether UI was shown or + // whether the cached token was sufficient. So we use a timer heuristic assuming that + // human response time couldn't complete a dialog in under the interval given here, but + // the process will return here fast enough if the token is cached. The threshold was + // chosen empirically, so there may be some edge cases that are false negatives or + // false positives. + BOOL didShowDialog = [FBSDKInternalUtility currentTimeInMilliseconds] - timePriorToSystemAuthUI > 350; + BOOL isUnTOSedDevice = !oauthToken && accountStoreError.code == ACErrorAccountNotFound; + [_logger systemAuthDidShowDialog:didShowDialog isUnTOSedDevice:isUnTOSedDevice]; + + if (accountStoreError && [FBSDKSystemAccountStoreAdapter sharedInstance].forceBlockingRenew) { + accountStoreError = [FBSDKLoginError errorForSystemPasswordChange:accountStoreError]; + } + if (!oauthToken && !accountStoreError) { + // This means iOS did not give an error nor granted, even after a renew. In order to + // surface this to users, stuff in our own error that can be inspected. + accountStoreError = [FBSDKLoginError errorForFailedLoginWithCode:FBSDKLoginSystemAccountAppDisabledErrorCode]; + } + + FBSDKLoginManagerSystemAccountState *state = [[FBSDKLoginManagerSystemAccountState alloc] init]; + state.didShowDialog = didShowDialog; + state.reauthorize = isReauthorize; + state.unTOSedDevice = isUnTOSedDevice; + + [self continueSystemLogInWithTokenString:oauthToken error:accountStoreError state:state]; + }]; +} + +- (void)continueSystemLogInWithTokenString:(NSString *)oauthToken error:(NSError *)accountStoreError state:(FBSDKLoginManagerSystemAccountState *)state +{ + id completer = nil; + + if (!oauthToken && accountStoreError.code == ACErrorAccountNotFound) { + // Even with the Accounts framework we use the Facebook app or Safari to log in if + // the user has not signed in. This condition can only be detected by attempting to + // log in because the framework does not otherwise indicate whether a Facebook account + // exists on the device unless the user has granted the app permissions. + + // Do this asynchronously so the logger correctly notes the system account was skipped + dispatch_async(dispatch_get_main_queue(), ^{ + [self fallbackToNativeBehavior]; + }); + } else if (oauthToken) { + completer = [[FBSDKLoginSystemAccountCompleter alloc] initWithTokenString:oauthToken appID:[FBSDKSettings appID]]; + } else { + completer = [[FBSDKLoginSystemAccountErrorCompleter alloc] initWithError:accountStoreError permissions:_requestedPermissions]; + } + + // any necessary strong reference is maintained by the FBSDKLoginSystemAccount[Error]Completer handler + [completer completeLogIn:self withHandler:^(FBSDKLoginCompletionParameters *parameters) { + NSString *eventName = [NSString stringWithFormat:@"%@ %@", + (state.isReauthorize ? @"Reauthorization" : @"Authorization"), + (parameters.error ? @"Error" : (parameters.accessTokenString ? @"succeeded" : @"cancelled")) + ]; + + [self completeAuthentication:parameters expectChallenge:NO]; + + if (eventName != nil) { + NSString *sortedPermissions = (parameters.permissions.count == 0) + ? @"" + : [[parameters.permissions.allObjects sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)] componentsJoinedByString:@","]; + + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNamePermissionsUILaunch + valueToSum:nil + parameters:@{ @"ui_dialog_type" : @"iOS integrated auth", + @"permissions_requested" : sortedPermissions } + accessToken:nil]; + + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNamePermissionsUIDismiss + valueToSum:nil + parameters:@{ @"ui_dialog_type" : @"iOS integrated auth", + FBSDKAppEventParameterDialogOutcome : eventName, + @"permissions_requested" : sortedPermissions } + accessToken:nil]; + } + }]; +} + +- (void)fallbackToNativeBehavior +{ + FBSDKLoginManagerLoginResult *skippedResult = [[FBSDKLoginManagerLoginResult alloc] initWithToken:nil + isCancelled:NO + grantedPermissions:nil + declinedPermissions:nil]; + skippedResult.isSkipped = YES; + [_logger endLoginWithResult:skippedResult error:nil]; + // any necessary strong reference will be maintained by the mechanism that is used + [self logInWithBehavior:FBSDKLoginBehaviorNative]; +} + +@end + +@implementation FBSDKLoginManager (WebDialog) + +- (void)performWebLogInWithParameters:(NSDictionary *)loginParams handler:(void(^)(BOOL, NSError*))handler +{ + [FBSDKInternalUtility registerTransientObject:self]; + [FBSDKInternalUtility deleteFacebookCookies]; + NSMutableDictionary *parameters = [[NSMutableDictionary alloc] initWithDictionary:loginParams]; + parameters[@"title"] = NSLocalizedStringWithDefaultValue(@"LoginWeb.LogInTitle", + @"FacebookSDK", + [FBSDKInternalUtility bundleForStrings], + @"Log In", + @"Title of the web dialog that prompts the user to log in to Facebook."); + [FBSDKWebDialog showWithName:@"oauth" parameters:loginParams delegate:self]; + + if (handler) { + handler(YES, nil); + } +} + +- (void)webDialog:(FBSDKWebDialog *)webDialog didCompleteWithResults:(NSDictionary *)results +{ + NSString *token = results[@"access_token"]; + + if (token.length == 0) { + [self webDialogDidCancel:webDialog]; + } else { + id completer = [[FBSDKLoginURLCompleter alloc] initWithURLParameters:results appID:[FBSDKSettings appID]]; + [completer completeLogIn:self withHandler:^(FBSDKLoginCompletionParameters *parameters) { + [self completeAuthentication:parameters expectChallenge:YES]; + }]; + [FBSDKInternalUtility unregisterTransientObject:self]; + } +} + +- (void)webDialog:(FBSDKWebDialog *)webDialog didFailWithError:(NSError *)error +{ + FBSDKLoginCompletionParameters *parameters = [[FBSDKLoginCompletionParameters alloc] initWithError:error]; + [self completeAuthentication:parameters expectChallenge:YES]; + [FBSDKInternalUtility unregisterTransientObject:self]; +} + +- (void)webDialogDidCancel:(FBSDKWebDialog *)webDialog +{ + FBSDKLoginCompletionParameters *parameters = [[FBSDKLoginCompletionParameters alloc] init]; + [self completeAuthentication:parameters expectChallenge:YES]; + [FBSDKInternalUtility unregisterTransientObject:self]; +} + +@end + +@implementation FBSDKLoginManagerSystemAccountState +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h new file mode 100644 index 0000000..36a1af6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h @@ -0,0 +1,62 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@class FBSDKAccessToken; + +/*! + @abstract Describes the result of a login attempt. + */ +@interface FBSDKLoginManagerLoginResult : NSObject + +/*! + @abstract the access token. + */ +@property (copy, nonatomic) FBSDKAccessToken *token; + +/*! + @abstract whether the login was cancelled by the user. + */ +@property (readonly, nonatomic) BOOL isCancelled; + +/*! + @abstract the set of permissions granted by the user in the associated request. + @discussion inspect the token's permissions set for a complete list. + */ +@property (copy, nonatomic) NSSet *grantedPermissions; + +/*! + @abstract the set of permissions declined by the user in the associated request. + @discussion inspect the token's permissions set for a complete list. + */ +@property (copy, nonatomic) NSSet *declinedPermissions; + +/*! + @abstract Initializes a new instance. + @param token the access token + @param isCancelled whether the login was cancelled by the user + @param grantedPermissions the set of granted permissions + @param declinedPermissions the set of declined permissions + */ +- (instancetype)initWithToken:(FBSDKAccessToken *)token + isCancelled:(BOOL)isCancelled + grantedPermissions:(NSSet *)grantedPermissions + declinedPermissions:(NSSet *)declinedPermissions +NS_DESIGNATED_INITIALIZER; +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m new file mode 100644 index 0000000..d03b022 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m @@ -0,0 +1,56 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLoginManagerLoginResult+Internal.h" + +#import "FBSDKCoreKit+Internal.h" + +@implementation FBSDKLoginManagerLoginResult { + NSMutableDictionary *_mutableLoggingExtras; +} + +- (instancetype)init NS_UNAVAILABLE +{ + assert(0); +} + +- (instancetype)initWithToken:(FBSDKAccessToken *)token + isCancelled:(BOOL)isCancelled + grantedPermissions:(NSSet *)grantedPermissions + declinedPermissions:(NSSet *)declinedPermissions { + if ((self = [super init])) { + _mutableLoggingExtras = [NSMutableDictionary dictionary]; + _token = [token copy]; + _isCancelled = isCancelled; + _grantedPermissions = [grantedPermissions copy]; + _declinedPermissions = [declinedPermissions copy]; + }; + return self; +} + +- (void)addLoggingExtra:(id)object forKey:(id)key +{ + [FBSDKInternalUtility dictionary:_mutableLoggingExtras setObject:object forKey:key]; +} + +- (NSDictionary *)loggingExtras +{ + return [_mutableLoggingExtras copy]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h new file mode 100644 index 0000000..e6a9411 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h @@ -0,0 +1,93 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +@protocol FBSDKLoginTooltipViewDelegate; + +/*! + @class FBSDKLoginTooltipView + + @abstract Represents a tooltip to be displayed next to a Facebook login button + to highlight features for new users. + + @discussion The `FBSDKLoginButton` may display this view automatically. If you do + not use the `FBSDKLoginButton`, you can manually call one of the `present*` methods + as appropriate and customize behavior via `FBSDKLoginTooltipViewDelegate` delegate. + + By default, the `FBSDKLoginTooltipView` is not added to the superview until it is + determined the app has migrated to the new login experience. You can override this + (e.g., to test the UI layout) by implementing the delegate or setting `forceDisplay` to YES. + + */ +@interface FBSDKLoginTooltipView : FBSDKTooltipView + +/*! @abstract the delegate */ +@property (nonatomic, assign) id delegate; + +/*! @abstract if set to YES, the view will always be displayed and the delegate's + `loginTooltipView:shouldAppear:` will NOT be called. */ +@property (nonatomic, assign) BOOL forceDisplay; + +@end + +/*! + @protocol + + @abstract + The `FBSDKLoginTooltipViewDelegate` protocol defines the methods used to receive event + notifications from `FBSDKLoginTooltipView` objects. + */ +@protocol FBSDKLoginTooltipViewDelegate + +@optional + +/*! + @abstract + Asks the delegate if the tooltip view should appear + + @param view The tooltip view. + @param appIsEligible The value fetched from the server identifying if the app + is eligible for the new login experience. + + @discussion Use this method to customize display behavior. + */ +- (BOOL)loginTooltipView:(FBSDKLoginTooltipView *)view shouldAppear:(BOOL)appIsEligible; + +/*! + @abstract + Tells the delegate the tooltip view will appear, specifically after it's been + added to the super view but before the fade in animation. + + @param view The tooltip view. + */ +- (void)loginTooltipViewWillAppear:(FBSDKLoginTooltipView *)view; + +/*! + @abstract + Tells the delegate the tooltip view will not appear (i.e., was not + added to the super view). + + @param view The tooltip view. + */ +- (void)loginTooltipViewWillNotAppear:(FBSDKLoginTooltipView *)view; + + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m new file mode 100644 index 0000000..59d4c17 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m @@ -0,0 +1,62 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLoginTooltipView.h" + +#import "FBSDKCoreKit+Internal.h" + +@interface FBSDKLoginTooltipView () +@end + +@implementation FBSDKLoginTooltipView + +- (instancetype)init +{ + NSString *tooltipMessage = + NSLocalizedStringWithDefaultValue(@"LoginTooltip.Message", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"New! You're in control - choose what info you want to share with apps.", + @"The message of the FBSDKLoginTooltipView"); + return [super initWithTagline:nil message:tooltipMessage colorStyle:FBSDKTooltipColorStyleFriendlyBlue]; +} + +- (void)presentInView:(UIView *)view withArrowPosition:(CGPoint)arrowPosition direction:(FBSDKTooltipViewArrowDirection)arrowDirection +{ + if (self.forceDisplay) { + [super presentInView:view withArrowPosition:arrowPosition direction:arrowDirection]; + } else { + + [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:^(FBSDKServerConfiguration *serverConfiguration, NSError *error) { + self.message = serverConfiguration.loginTooltipText; + BOOL shouldDisplay = serverConfiguration.loginTooltipEnabled; + if ([self.delegate respondsToSelector:@selector(loginTooltipView:shouldAppear:)]) { + shouldDisplay = [self.delegate loginTooltipView:self shouldAppear:shouldDisplay]; + } + if (shouldDisplay) { + [super presentInView:view withArrowPosition:arrowPosition direction:arrowDirection]; + if ([self.delegate respondsToSelector:@selector(loginTooltipViewWillAppear:)]) { + [self.delegate loginTooltipViewWillAppear:self]; + } + } else { + if ([self.delegate respondsToSelector:@selector(loginTooltipViewWillNotAppear:)]) { + [self.delegate loginTooltipViewWillNotAppear:self]; + } + } + }]; + } +} +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h new file mode 100644 index 0000000..aff1067 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h @@ -0,0 +1,141 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +/*! + @typedef FBSDKTooltipViewArrowDirection enum + + @abstract + Passed on construction to determine arrow orientation. + */ +typedef NS_ENUM(NSUInteger, FBSDKTooltipViewArrowDirection) +{ + /*! View is located above given point, arrow is pointing down. */ + FBSDKTooltipViewArrowDirectionDown = 0, + /*! View is located below given point, arrow is pointing up. */ + FBSDKTooltipViewArrowDirectionUp = 1, +}; + +/*! + @typedef FBSDKTooltipColorStyle enum + + @abstract + Passed on construction to determine color styling. + */ +typedef NS_ENUM(NSUInteger, FBSDKTooltipColorStyle) +{ + /*! Light blue background, white text, faded blue close button. */ + FBSDKTooltipColorStyleFriendlyBlue = 0, + /*! Dark gray background, white text, light gray close button. */ + FBSDKTooltipColorStyleNeutralGray = 1, +}; + +/*! + @class FBSDKTooltipView + + @abstract + Tooltip bubble with text in it used to display tips for UI elements, + with a pointed arrow (to refer to the UI element). + + @discussion + The tooltip fades in and will automatically fade out. See `displayDuration`. + */ +@interface FBSDKTooltipView : UIView + +/*! + @abstract Gets or sets the amount of time in seconds the tooltip should be displayed. + + @discussion Set this to zero to make the display permanent until explicitly dismissed. + Defaults to six seconds. + */ +@property (nonatomic, assign) CFTimeInterval displayDuration; + +/*! + @abstract Gets or sets the color style after initialization. + + @discussion Defaults to value passed to -initWithTagline:message:colorStyle:. + */ +@property (nonatomic, assign) FBSDKTooltipColorStyle colorStyle; + +/*! + @abstract Gets or sets the message. + */ +@property (nonatomic, copy) NSString *message; + +/*! + @abstract Gets or sets the optional phrase that comprises the first part of the label (and is highlighted differently). + */ +@property (nonatomic, copy) NSString *tagline; + +/*! + @abstract + Designated initializer. + + @param tagline First part of the label, that will be highlighted with different color. Can be nil. + + @param message Main message to display. + + @param colorStyle Color style to use for tooltip. + + @discussion + If you need to show a tooltip for login, consider using the `FBSDKLoginTooltipView` view. + + @see FBSDKLoginTooltipView + */ +- (instancetype)initWithTagline:(NSString *)tagline message:(NSString *)message colorStyle:(FBSDKTooltipColorStyle)colorStyle; + +/*! + @abstract + Show tooltip at the top or at the bottom of given view. + Tooltip will be added to anchorView.window.rootViewController.view + + @param anchorView view to show at, must be already added to window view hierarchy, in order to decide + where tooltip will be shown. (If there's not enough space at the top of the anchorView in window bounds - + tooltip will be shown at the bottom of it) + + @discussion + Use this method to present the tooltip with automatic positioning or + use -presentInView:withArrowPosition:direction: for manual positioning + If anchorView is nil or has no window - this method does nothing. + */ +- (void)presentFromView:(UIView *)anchorView; + +/*! + @abstract + Adds tooltip to given view, with given position and arrow direction. + + @param view View to be used as superview. + + @param arrowPosition Point in view's cordinates, where arrow will be pointing + + @param arrowDirection whenever arrow should be pointing up (message bubble is below the arrow) or + down (message bubble is above the arrow). + */ +- (void)presentInView:(UIView *)view withArrowPosition:(CGPoint)arrowPosition direction:(FBSDKTooltipViewArrowDirection)arrowDirection; + +/*! + @abstract + Remove tooltip manually. + + @discussion + Calling this method isn't necessary - tooltip will dismiss itself automatically after the `displayDuration`. + */ +- (void)dismiss; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m new file mode 100644 index 0000000..839e98f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m @@ -0,0 +1,603 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKTooltipView.h" + +#import + +#import "FBSDKCoreKit+Internal.h" + +static const CGFloat kTransitionDuration = 0.3; +static const CGFloat kZoomOutScale = 0.001f; +static const CGFloat kZoomInScale = 1.1f; +static const CGFloat kZoomBounceScale = 0.98f; + +static const CGFloat kNUXRectInset = 6; +static const CGFloat kNUXBubbleMargin = 17 - kNUXRectInset; +static const CGFloat kNUXPointMargin = -3; +static const CGFloat kNUXCornerRadius = 4; +static const CGFloat kNUXStrokeLineWidth = 0.5f; +static const CGFloat kNUXSideCap = 6; +static const CGFloat kNUXFontSize = 10; +static const CGFloat kNUXCrossGlyphSize = 11; + +static CGMutablePathRef _fbsdkCreateUpPointingBubbleWithRect(CGRect rect, CGFloat arrowMidpoint, CGFloat arrowHeight, CGFloat radius); +static CGMutablePathRef _fbsdkCreateDownPointingBubbleWithRect(CGRect rect, CGFloat arrowMidpoint, CGFloat arrowHeight, CGFloat radius); + +#pragma mark - + +@implementation FBSDKTooltipView +{ + CGPoint _positionInView; + CFAbsoluteTime _displayTime; + CFTimeInterval _minimumDisplayDuration; + UILabel *_textLabel; + UITapGestureRecognizer *_insideTapGestureRecognizer; + CGFloat _leftWidth; + CGFloat _rightWidth; + CGFloat _arrowMidpoint; + BOOL _pointingUp; + BOOL _isFadingOut; + // style + UIColor *_innerStrokeColor; + CGFloat _arrowHeight; + CGFloat _textPadding; + CGFloat _maximumTextWidth; + CGFloat _verticalTextOffset; + CGFloat _verticalCrossOffset; + FBSDKTooltipColorStyle _colorStyle; + NSArray *_gradientColors; + UIColor *_crossCloseGlyphColor; +} + +- (instancetype)initWithTagline:(NSString *)tagline message:(NSString *)message colorStyle:(FBSDKTooltipColorStyle)colorStyle +{ + self = [super initWithFrame:CGRectZero]; + if (self) { + // Define style + _textLabel = [[UILabel alloc] initWithFrame:CGRectZero]; + _textLabel.backgroundColor = [UIColor clearColor]; + _textLabel.autoresizingMask = UIViewAutoresizingFlexibleRightMargin; + _textLabel.numberOfLines = 0; + _textLabel.font = [UIFont boldSystemFontOfSize: kNUXFontSize]; + _textLabel.textAlignment = NSTextAlignmentLeft; + _arrowHeight = 7; + _textPadding = 10; + _maximumTextWidth = 185; + _verticalCrossOffset = - 2.5f; + _verticalTextOffset = 0; + _displayDuration = 6.0; + [self setColorStyle:colorStyle]; + + _message = [message copy]; + _tagline = [tagline copy]; + [self setMessage:message tagline:tagline]; + [self addSubview:_textLabel]; + + _insideTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapInTooltip:)]; + [self addGestureRecognizer:_insideTapGestureRecognizer]; + + self.opaque = NO; + self.backgroundColor = [UIColor clearColor]; + self.layer.needsDisplayOnBoundsChange = YES; + self.layer.shadowColor = [UIColor blackColor].CGColor; + self.layer.shadowOpacity = 0.5f; + self.layer.shadowOffset = CGSizeMake(0.0f, 2.0f); + self.layer.shadowRadius = 5.0f; + self.layer.masksToBounds = NO; + } + return self; +} + +- (void)dealloc +{ + [_insideTapGestureRecognizer removeTarget:self action:NULL]; +} + +#pragma mark - Public Methods + +- (void)setMessage:(NSString *)message +{ + if (![message isEqualToString:_message]) { + _message = [message copy]; + [self setMessage:_message tagline:self.tagline]; + } +} + +- (void)setTagline:(NSString *)tagline +{ + if (![tagline isEqualToString:_tagline]) { + _tagline = [tagline copy]; + [self setMessage:self.message tagline:_tagline]; + } +} + +#pragma mark Presentation + +- (void)presentFromView:(UIView *)anchorView +{ + UIView *superview = anchorView.window.rootViewController.view; + if (!superview) { + return; + } + + // By default - attach to the top, pointing down + CGPoint position = CGPointMake(CGRectGetMidX(anchorView.bounds), CGRectGetMinY(anchorView.bounds)); + CGPoint positionInSuperview = [superview convertPoint:position fromView:anchorView]; + FBSDKTooltipViewArrowDirection direction = FBSDKTooltipViewArrowDirectionDown; + + // If not enough space to point up from top of anchor view - point up to it's bottom + CGFloat bubbleHeight = CGRectGetHeight(_textLabel.bounds) + _verticalTextOffset + _textPadding * 2; + if (positionInSuperview.y - bubbleHeight - kNUXBubbleMargin < CGRectGetMinY(superview.bounds)) { + direction = FBSDKTooltipViewArrowDirectionUp; + position = CGPointMake(CGRectGetMidX(anchorView.bounds), CGRectGetMaxY(anchorView.bounds)); + positionInSuperview = [superview convertPoint:position fromView:anchorView]; + } + + [self presentInView:superview withArrowPosition:positionInSuperview direction:direction]; +} + +- (void)presentInView:(UIView *)view withArrowPosition:(CGPoint)arrowPosition direction:(FBSDKTooltipViewArrowDirection)arrowDirection +{ + _pointingUp = arrowDirection == FBSDKTooltipViewArrowDirectionUp; + _positionInView = arrowPosition; + self.frame = [self layoutSubviewsAndDetermineFrame]; + + // Add to view, while invisible. + self.hidden = YES; + if ([self superview]) { + [self removeFromSuperview]; + } + [view addSubview:self]; + + // Layout & schedule dismissal. + _displayTime = CFAbsoluteTimeGetCurrent(); + _isFadingOut = NO; + [self scheduleAutomaticFadeout]; + [self layoutSubviews]; + + [self animateFadeIn]; +} + +- (void)dismiss +{ + if (_isFadingOut) { + return; + } + _isFadingOut = YES; + + [self animateFadeOutWithCompletion:^{ + [self removeFromSuperview]; + [self cancelAllScheduledFadeOutMethods]; + _isFadingOut = NO; + }]; +} + +#pragma mark Style + +- (FBSDKTooltipColorStyle)colorStyle +{ + return _colorStyle; +} + +- (void)setColorStyle:(FBSDKTooltipColorStyle)colorStyle +{ + _colorStyle = colorStyle; + switch (colorStyle) { + case FBSDKTooltipColorStyleNeutralGray: + _gradientColors = @[ + (id)(FBSDKUIColorWithRGB(0x51, 0x50, 0x4f).CGColor), + (id)(FBSDKUIColorWithRGB(0x2d, 0x2c, 0x2c).CGColor) + ]; + _innerStrokeColor = [UIColor colorWithWhite:0.13f alpha:1.0f]; + _crossCloseGlyphColor = [UIColor colorWithWhite:0.69f alpha:1.0f]; + break; + + case FBSDKTooltipColorStyleFriendlyBlue: + default: + _gradientColors = @[ + (id)(FBSDKUIColorWithRGB(0x6e, 0x9c, 0xf5).CGColor), + (id)(FBSDKUIColorWithRGB(0x49, 0x74, 0xc6).CGColor) + ]; + _innerStrokeColor = [UIColor colorWithRed:0.12f green:0.26f blue:0.55f alpha:1.0f]; + _crossCloseGlyphColor = [UIColor colorWithRed:0.60f green:0.73f blue:1.0f alpha:1.0f]; + break; + } + + _textLabel.textColor = [UIColor whiteColor]; +} + +#pragma mark - Private Methods +#pragma mark Animation + +- (void)animateFadeIn +{ + // Prepare Animation: Zoom in with bounce. Keep the arrow point in place. + // Set initial transform (zoomed out) & become visible. + CGFloat centerPos = self.bounds.size.width / 2.0; + CGFloat zoomOffsetX = (centerPos - _arrowMidpoint) * (kZoomOutScale - 1.0f); + CGFloat zoomOffsetY = -0.5f * self.bounds.size.height * (kZoomOutScale - 1.0f); + if (_pointingUp) { + zoomOffsetY = -zoomOffsetY; + } + self.layer.transform = fbsdkdfl_CATransform3DConcat(fbsdkdfl_CATransform3DMakeScale(kZoomOutScale, kZoomOutScale, kZoomOutScale), + fbsdkdfl_CATransform3DMakeTranslation(zoomOffsetX, zoomOffsetY, 0)); + self.hidden = NO; + + // Prepare animation steps + // 1st Step. + void (^zoomIn)(void) = ^{ + self.alpha = 1.0; + + CGFloat newZoomOffsetX = (centerPos - _arrowMidpoint) * (kZoomInScale - 1.0f); + CGFloat newZoomOffsetY = -0.5f * self.bounds.size.height * (kZoomInScale - 1.0f); + if (_pointingUp) { + newZoomOffsetY = -newZoomOffsetY; + } + + CATransform3D scale = fbsdkdfl_CATransform3DMakeScale(kZoomInScale, kZoomInScale, kZoomInScale); + CATransform3D translate =fbsdkdfl_CATransform3DMakeTranslation(newZoomOffsetX, newZoomOffsetY, 0); + self.layer.transform = fbsdkdfl_CATransform3DConcat(scale, translate); + }; + + // 2nd Step. + void (^bounceZoom)(void) = ^{ + CGFloat centerPos2 = self.bounds.size.width / 2.0; + CGFloat zoomOffsetX2 = (centerPos2 - _arrowMidpoint) * (kZoomBounceScale - 1.0f); + CGFloat zoomOffsetY2 = -0.5f * self.bounds.size.height * (kZoomBounceScale - 1.0f); + if (_pointingUp) { + zoomOffsetY2 = -zoomOffsetY2; + } + self.layer.transform = fbsdkdfl_CATransform3DConcat(fbsdkdfl_CATransform3DMakeScale(kZoomBounceScale, kZoomBounceScale, kZoomBounceScale), + fbsdkdfl_CATransform3DMakeTranslation(zoomOffsetX2, zoomOffsetY2, 0)); + }; + + // 3rd Step. + void (^normalizeZoom)(void) = ^{ + self.layer.transform = fbsdkdfl_CATransform3DIdentity; + }; + + // Animate 3 steps sequentially + [UIView animateWithDuration:kTransitionDuration/1.5 + delay:0 + options:UIViewAnimationOptionCurveEaseInOut + animations:zoomIn + completion:^(BOOL finished) { + [UIView animateWithDuration:kTransitionDuration/2.2 + animations:bounceZoom + completion:^(BOOL innerFinished) { + [UIView animateWithDuration:kTransitionDuration/5 + animations:normalizeZoom]; + }]; + }]; +} + +- (void) animateFadeOutWithCompletion: (void(^)(void)) completionHandler +{ + [UIView animateWithDuration:0.3 + delay:0 + options:UIViewAnimationOptionCurveEaseInOut + animations:^{ + self.alpha = 0.0; + } + completion:^(BOOL complete) { + if(completionHandler) + completionHandler(); + }]; +} + +#pragma mark Gestures + +- (void)onTapInTooltip:(UIGestureRecognizer*)sender +{ + // ignore incomplete tap gestures + if (sender.state != UIGestureRecognizerStateEnded) { + return; + } + + // fade out the tooltip view right away + [self dismiss]; +} + +#pragma mark Drawing + +CGMutablePathRef _fbsdkCreateUpPointingBubbleWithRect(CGRect rect, CGFloat arrowMidpoint, CGFloat arrowHeight, CGFloat radius) +{ + CGMutablePathRef path = CGPathCreateMutable(); + CGFloat arrowHalfWidth = arrowHeight; + // start with arrow + CGPathMoveToPoint(path, NULL, arrowMidpoint - arrowHalfWidth, CGRectGetMinY(rect)); + CGPathAddLineToPoint(path, NULL, arrowMidpoint, CGRectGetMinY(rect) - arrowHeight); + CGPathAddLineToPoint(path, NULL, arrowMidpoint + arrowHalfWidth, CGRectGetMinY(rect)); + + // rest of curved rectangle + CGPathAddArcToPoint(path, NULL, CGRectGetMaxX(rect), CGRectGetMinY(rect), CGRectGetMaxX(rect), CGRectGetMaxY(rect), radius); + CGPathAddArcToPoint(path, NULL, CGRectGetMaxX(rect), CGRectGetMaxY(rect), CGRectGetMinX(rect), CGRectGetMaxY(rect), radius); + CGPathAddArcToPoint(path, NULL, CGRectGetMinX(rect), CGRectGetMaxY(rect), CGRectGetMinX(rect), CGRectGetMinY(rect), radius); + CGPathAddArcToPoint(path, NULL, CGRectGetMinX(rect), CGRectGetMinY(rect), CGRectGetMaxX(rect), CGRectGetMinY(rect), radius); + CGPathCloseSubpath(path); + return path; +} + +CGMutablePathRef _fbsdkCreateDownPointingBubbleWithRect(CGRect rect, CGFloat arrowMidpoint, CGFloat arrowHeight, CGFloat radius) +{ + CGMutablePathRef path = CGPathCreateMutable(); + CGFloat arrowHalfWidth = arrowHeight; + + // start with arrow + CGPathMoveToPoint(path, NULL, arrowMidpoint + arrowHalfWidth, CGRectGetMaxY(rect)); + CGPathAddLineToPoint(path, NULL, arrowMidpoint, CGRectGetMaxY(rect) + arrowHeight); + CGPathAddLineToPoint(path, NULL, arrowMidpoint - arrowHalfWidth, CGRectGetMaxY(rect)); + + // rest of curved rectangle + CGPathAddArcToPoint(path, NULL, CGRectGetMinX(rect), CGRectGetMaxY(rect), CGRectGetMinX(rect), CGRectGetMinY(rect), radius); + CGPathAddArcToPoint(path, NULL, CGRectGetMinX(rect), CGRectGetMinY(rect), CGRectGetMaxX(rect), CGRectGetMinY(rect), radius); + CGPathAddArcToPoint(path, NULL, CGRectGetMaxX(rect), CGRectGetMinY(rect), CGRectGetMaxX(rect), CGRectGetMaxY(rect), radius); + CGPathAddArcToPoint(path, NULL, CGRectGetMaxX(rect), CGRectGetMaxY(rect), CGRectGetMinX(rect), CGRectGetMaxY(rect), radius); + CGPathCloseSubpath(path); + return path; +} + +static CGMutablePathRef _createCloseCrossGlyphWithRect(CGRect rect) +{ + CGFloat lineThickness = 0.20f * CGRectGetHeight(rect); + + // One rectangle + CGMutablePathRef path1 = CGPathCreateMutable(); + CGPathMoveToPoint(path1, NULL, CGRectGetMinX(rect), CGRectGetMinY(rect) + lineThickness); + CGPathAddLineToPoint(path1, NULL, CGRectGetMinX(rect) + lineThickness, CGRectGetMinY(rect)); + CGPathAddLineToPoint(path1, NULL, CGRectGetMaxX(rect), CGRectGetMaxY(rect) - lineThickness); + CGPathAddLineToPoint(path1, NULL, CGRectGetMaxX(rect) - lineThickness, CGRectGetMaxY(rect)); + CGPathCloseSubpath(path1); + + // 2nd rectange - mirrored horizontally + CGMutablePathRef path2 = CGPathCreateMutable(); + CGPathMoveToPoint(path2, NULL, CGRectGetMinX(rect), CGRectGetMaxY(rect) - lineThickness); + CGPathAddLineToPoint(path2, NULL, CGRectGetMaxX(rect) - lineThickness, CGRectGetMinY(rect)); + CGPathAddLineToPoint(path2, NULL, CGRectGetMaxX(rect), CGRectGetMinY(rect) + lineThickness); + CGPathAddLineToPoint(path2, NULL, CGRectGetMinX(rect) + lineThickness, CGRectGetMaxY(rect)); + CGPathCloseSubpath(path2); + + CGMutablePathRef groupedPath = CGPathCreateMutable(); + CGPathAddPath(groupedPath, NULL, path1); + CGPathAddPath(groupedPath, NULL, path2); + CFRelease(path1); + CFRelease(path2); + + return groupedPath; +} + +- (void)drawRect:(CGRect)rect +{ + // Ignore dirty rect and just redraw the entire nux bubble + CGFloat arrowSideMargin = 1 + 0.5f * MAX(kNUXRectInset, _arrowHeight); + CGFloat arrowYMarginOffset = _pointingUp ? arrowSideMargin : kNUXRectInset; + CGFloat halfStroke = kNUXStrokeLineWidth / 2.0; + CGRect outerRect = CGRectMake(kNUXRectInset + halfStroke, + arrowYMarginOffset + halfStroke, + self.bounds.size.width - 2 * kNUXRectInset - kNUXStrokeLineWidth, + self.bounds.size.height - kNUXRectInset - arrowSideMargin - kNUXStrokeLineWidth); + outerRect = CGRectInset(outerRect, 5, 5); + CGRect innerRect = CGRectInset(outerRect, kNUXStrokeLineWidth, kNUXStrokeLineWidth); + CGRect fillRect = CGRectInset(innerRect, kNUXStrokeLineWidth/2.0, kNUXStrokeLineWidth/2.0); + CGFloat closeCrossGlyphPositionY = MIN(CGRectGetMinY(fillRect) + _textPadding + _verticalCrossOffset, + CGRectGetMidY(fillRect) - 0.5f * kNUXCrossGlyphSize); + CGRect closeCrossGlyphRect = CGRectMake(CGRectGetMaxX(fillRect) - 2 * kNUXFontSize, closeCrossGlyphPositionY, + kNUXCrossGlyphSize, kNUXCrossGlyphSize); + + // setup and get paths + CGContextRef context = UIGraphicsGetCurrentContext(); + CGMutablePathRef outerPath; + CGMutablePathRef innerPath; + CGMutablePathRef fillPath; + CGMutablePathRef crossCloseGlyphPath = _createCloseCrossGlyphWithRect(closeCrossGlyphRect); + CGRect gradientRect = fillRect; + if (_pointingUp) { + outerPath = _fbsdkCreateUpPointingBubbleWithRect(outerRect, + _arrowMidpoint, _arrowHeight, + kNUXCornerRadius + kNUXStrokeLineWidth); + innerPath = _fbsdkCreateUpPointingBubbleWithRect(innerRect, + _arrowMidpoint, _arrowHeight, + kNUXCornerRadius); + fillPath = _fbsdkCreateUpPointingBubbleWithRect(fillRect, + _arrowMidpoint, _arrowHeight, + kNUXCornerRadius - kNUXStrokeLineWidth); + gradientRect.origin.y -= _arrowHeight; + gradientRect.size.height += _arrowHeight; + } else { + outerPath = _fbsdkCreateDownPointingBubbleWithRect(outerRect, + _arrowMidpoint, _arrowHeight, + kNUXCornerRadius + kNUXStrokeLineWidth); + innerPath = _fbsdkCreateDownPointingBubbleWithRect(innerRect, + _arrowMidpoint, _arrowHeight, + kNUXCornerRadius); + fillPath = _fbsdkCreateDownPointingBubbleWithRect(fillRect, + _arrowMidpoint, _arrowHeight, + kNUXCornerRadius - kNUXStrokeLineWidth); + gradientRect.size.height += _arrowHeight; + } + self.layer.shadowPath = outerPath; + + // This tooltip has two borders, so draw two strokes and a fill. + CGColorRef strokeColor = _innerStrokeColor.CGColor; + CGContextSaveGState(context); + CGContextSetStrokeColorWithColor(context, strokeColor); + CGContextSetLineWidth(context, kNUXStrokeLineWidth); + CGContextAddPath(context, innerPath); + CGContextStrokePath(context); + CGContextAddPath(context, fillPath); + CGContextClip(context); + CGColorSpaceRef rgbColorspace = CGColorSpaceCreateDeviceRGB(); + CGGradientRef gradient = CGGradientCreateWithColors(rgbColorspace, (CFArrayRef)_gradientColors, nil); + CGColorSpaceRelease(rgbColorspace); + CGPoint start = CGPointMake(gradientRect.origin.x, gradientRect.origin.y); + CGPoint end = CGPointMake(gradientRect.origin.x, CGRectGetMaxY(gradientRect)); + CGContextDrawLinearGradient(context, gradient, start, end, 0); + CGContextAddPath(context, crossCloseGlyphPath); + CGContextSetFillColorWithColor(context, _crossCloseGlyphColor.CGColor); + CGContextFillPath(context); + CGGradientRelease(gradient); + CGContextRestoreGState(context); + CFRelease(outerPath); + CFRelease(innerPath); + CFRelease(fillPath); + CFRelease(crossCloseGlyphPath); +} + +#pragma mark Layout + +- (void)layoutSubviews +{ + [super layoutSubviews]; + + // We won't set the frame in layoutSubviews to avoid potential infinite loops. + // Frame is set in -presentInView:withArrowPosition:direction: method. + [self layoutSubviewsAndDetermineFrame]; +} + +- (CGRect)layoutSubviewsAndDetermineFrame +{ + // Compute the positioning of the arrow. + CGRect screenBounds = [[UIScreen mainScreen] bounds]; + UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; + if (!UIInterfaceOrientationIsPortrait(orientation)) { + screenBounds = CGRectMake(0, 0, screenBounds.size.height, screenBounds.size.width); + } + CGFloat arrowHalfWidth = _arrowHeight; + CGFloat arrowXPos = _positionInView.x - arrowHalfWidth; + arrowXPos = MAX(arrowXPos, kNUXSideCap + kNUXBubbleMargin); + arrowXPos = MIN(arrowXPos, screenBounds.size.width - kNUXBubbleMargin - kNUXSideCap - 2 * arrowHalfWidth); + _positionInView = CGPointMake(arrowXPos + arrowHalfWidth, _positionInView.y); + + CGFloat arrowYMarginOffset = _pointingUp ? MAX(kNUXRectInset, _arrowHeight) : kNUXRectInset; + + // Set the lock image frame. + CGFloat xPos = kNUXRectInset + _textPadding + kNUXStrokeLineWidth; + CGFloat yPos = arrowYMarginOffset + kNUXStrokeLineWidth + _textPadding; + + // Set the text label frame. + _textLabel.frame = CGRectMake(xPos, + yPos + _verticalTextOffset, // sizing function may not return desired height exactly + CGRectGetWidth(_textLabel.bounds), + CGRectGetHeight(_textLabel.bounds)); + + // Determine the size of the nux bubble. + CGFloat bubbleHeight = CGRectGetHeight(_textLabel.bounds) + _verticalTextOffset + _textPadding * 2; + CGFloat crossGlyphWidth = 2 * kNUXFontSize; + CGFloat bubbleWidth = CGRectGetWidth(_textLabel.bounds) + _textPadding * 2 + kNUXStrokeLineWidth * 2 + crossGlyphWidth; + + // Compute the widths to the left and right of the arrow. + _leftWidth = roundf(0.5f * (bubbleWidth - 2 * arrowHalfWidth)); + _rightWidth = _leftWidth; + CGFloat originX = arrowXPos - _leftWidth; + if (originX < kNUXBubbleMargin) { + CGFloat xShift = kNUXBubbleMargin - originX; + originX += xShift; + _leftWidth -= xShift; + _rightWidth += xShift; + } else if (originX + bubbleWidth > screenBounds.size.width - kNUXBubbleMargin) { + CGFloat xShift = originX + bubbleWidth - (screenBounds.size.width - kNUXBubbleMargin); + originX -= xShift; + _leftWidth += xShift; + _rightWidth -= xShift; + } + + _arrowMidpoint = _positionInView.x - originX + kNUXRectInset; + + // Set the frame for the view. + CGFloat nuxWidth = bubbleWidth + 2 * kNUXRectInset; + CGFloat nuxHeight = bubbleHeight + kNUXRectInset + MAX(kNUXRectInset, _arrowHeight) + 2 * kNUXStrokeLineWidth; + CGFloat yOrigin = 0; + if (_pointingUp) { + yOrigin = _positionInView.y + kNUXPointMargin - MAX(0, kNUXRectInset - _arrowHeight); + } else { + yOrigin = _positionInView.y - nuxHeight - kNUXPointMargin + MAX(0, kNUXRectInset - _arrowHeight); + } + + return CGRectMake(originX - kNUXRectInset, + yOrigin, + nuxWidth, + nuxHeight); +} + +#pragma mark Message & Tagline + +- (void)setMessage:(NSString *)message tagline:(NSString *)tagline +{ + message = message ?: @""; + // Ensure tagline is empty string or ends with space + tagline = tagline ?: @""; + if ([tagline length] && ![tagline hasSuffix:@" "]) + tagline = [tagline stringByAppendingString:@" "]; + + // Concatenate tagline & main message + message = [tagline stringByAppendingString:message]; + + NSRange fullRange = NSMakeRange(0, message.length); + NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString: message]; + + UIFont *font=[UIFont boldSystemFontOfSize:kNUXFontSize]; + [attrString addAttribute:NSFontAttributeName value:font range:fullRange]; + [attrString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:fullRange]; + if ([tagline length]) { + [attrString addAttribute:NSForegroundColorAttributeName value: FBSDKUIColorWithRGB(0x6D, 0x87, 0xC7) range:NSMakeRange(0, [tagline length])]; + } + + _textLabel.attributedText = attrString; + + CGSize textLabelSize = [_textLabel sizeThatFits:CGSizeMake(_maximumTextWidth, MAXFLOAT)]; + _textLabel.bounds = CGRectMake(0, 0, textLabelSize.width, textLabelSize.height); + self.frame = [self layoutSubviewsAndDetermineFrame]; + [self setNeedsDisplay]; +} + +#pragma mark Auto Dismiss Timeout + +- (void)scheduleAutomaticFadeout +{ + [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(scheduleFadeoutRespectingMinimumDisplayDuration) object:nil]; + + if (_displayDuration > 0.0 && [self superview]) { + CFTimeInterval intervalAlreadyDisplaying = CFAbsoluteTimeGetCurrent() - _displayTime; + CFTimeInterval timeRemainingBeforeAutomaticFadeout = _displayDuration - intervalAlreadyDisplaying; + if (timeRemainingBeforeAutomaticFadeout > 0.0) { + [self performSelector:@selector(scheduleFadeoutRespectingMinimumDisplayDuration) withObject:nil afterDelay:timeRemainingBeforeAutomaticFadeout]; + } else { + [self scheduleFadeoutRespectingMinimumDisplayDuration]; + } + } +} + +- (void)scheduleFadeoutRespectingMinimumDisplayDuration +{ + CFTimeInterval intervalAlreadyDisplaying = CFAbsoluteTimeGetCurrent() - _displayTime; + CFTimeInterval remainingDisplayTime = _minimumDisplayDuration - intervalAlreadyDisplaying; + if (remainingDisplayTime > 0.0) { + [self performSelector:@selector(dismiss) withObject:nil afterDelay:remainingDisplayTime]; + } else { + [self dismiss]; + } +} + +- (void)cancelAllScheduledFadeOutMethods +{ + [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(scheduleFadeoutRespectingMinimumDisplayDuration) object:nil]; + [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(dismiss) object:nil]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h new file mode 100644 index 0000000..ea90965 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h @@ -0,0 +1,37 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLoginCompletion.h" + +@interface FBSDKLoginCompletionParameters () + +@property (nonatomic, copy, readwrite) NSString *accessTokenString; + +@property (nonatomic, copy, readwrite) NSSet *permissions; +@property (nonatomic, copy, readwrite) NSSet *declinedPermissions; + +@property (nonatomic, copy, readwrite) NSString *appID; +@property (nonatomic, copy, readwrite) NSString *userID; + +@property (nonatomic, copy, readwrite) NSError *error; + +@property (nonatomic, readwrite, getter=isSystemAccount) BOOL systemAccount; +@property (nonatomic, copy, readwrite) NSDate *expirationDate; +@property (nonatomic, copy, readwrite) NSString *challenge; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h new file mode 100644 index 0000000..c8423d7 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h @@ -0,0 +1,96 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@class FBSDKLoginManager; + +/*! + @abstract Structured interface for accessing the parameters used to complete a log in request. + If \c accessTokenString is non-nil, the authentication succeeded. If \c error is + non-nil the request failed. If both are \c nil, the request was cancelled. + */ +@interface FBSDKLoginCompletionParameters : NSObject + +- (instancetype)init NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithError:(NSError *)error; + +@property (nonatomic, copy, readonly) NSString *accessTokenString; + +@property (nonatomic, copy, readonly) NSSet *permissions; +@property (nonatomic, copy, readonly) NSSet *declinedPermissions; + +@property (nonatomic, copy, readonly) NSString *appID; +@property (nonatomic, copy, readonly) NSString *userID; + +@property (nonatomic, copy, readonly) NSError *error; + +@property (nonatomic, readonly, getter=isSystemAccount) BOOL systemAccount; +@property (nonatomic, copy, readonly) NSDate *expirationDate; +@property (nonatomic, copy, readonly) NSString *challenge; +@end + +@protocol FBSDKLoginCompleting + +/*! + @abstract Invoke \p handler with the login parameters derived from the authentication result. + See the implementing class's documentation for whether it completes synchronously or asynchronously. + */ +- (void)completeLogIn:(FBSDKLoginManager *)loginManager withHandler:(void(^)(FBSDKLoginCompletionParameters *parameters))handler; + +@end + +#pragma mark - Completers + +/*! + @abstract Extracts the log in completion parameters from the \p parameters dictionary, + which must contain the parsed result of the return URL query string. + + The \c user_id key is first used to derive the User ID. If that fails, \c signed_request + is used. + + Completion occurs synchronously. + */ +@interface FBSDKLoginURLCompleter : NSObject + +- (instancetype)initWithURLParameters:(NSDictionary *)parameters appID:(NSString *)appID NS_DESIGNATED_INITIALIZER; + +@end + +/*! + @abstract Requests the User ID, granted permissions and declined permissions from the server + using the given access token, which must occur before authentication can be completed. + + Completion occurs asynchronously. + */ +@interface FBSDKLoginSystemAccountCompleter : NSObject + +- (instancetype)initWithTokenString:(NSString *)tokenString appID:(NSString *)appID NS_DESIGNATED_INITIALIZER; + +@end + +/*! + @abstract Converts an Accounts framework error in to an error or cancellation result + + Completion occurs synchronously. + */ +@interface FBSDKLoginSystemAccountErrorCompleter : NSObject + +- (instancetype)initWithError:(NSError *)accountStoreError permissions:(NSSet *)permissions NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m new file mode 100644 index 0000000..6ae6427 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m @@ -0,0 +1,326 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLoginCompletion+Internal.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKLoginConstants.h" +#import "FBSDKLoginError.h" +#import "FBSDKLoginManager+Internal.h" +#import "FBSDKLoginUtility.h" + +static void FBSDKLoginRequestMeAndPermissions(FBSDKLoginCompletionParameters *parameters, void(^completionBlock)(void)) +{ + __block NSUInteger pendingCount = 1; + void(^didCompleteBlock)(void) = ^{ + if (--pendingCount == 0) { + completionBlock(); + } + }; + + NSString *tokenString = parameters.accessTokenString; + FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; + + pendingCount++; + FBSDKGraphRequest *userIDRequest = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" + parameters:@{ @"fields" : @"id" } + tokenString:tokenString + HTTPMethod:nil + flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; + + [connection addRequest:userIDRequest completionHandler:^(FBSDKGraphRequestConnection *requestConnection, + id result, + NSError *error) { + parameters.userID = [result objectForKey:@"id"]; + if (error) { + parameters.error = error; + } + didCompleteBlock(); + }]; + + pendingCount++; + FBSDKGraphRequest *permissionsRequest = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/permissions" + parameters:@{@"fields":@""} + tokenString:tokenString + HTTPMethod:nil + flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; + + [connection addRequest:permissionsRequest completionHandler:^(FBSDKGraphRequestConnection *requestConnection, + id result, + NSError *error) { + NSMutableSet *grantedPermissions = [NSMutableSet set]; + NSMutableSet *declinedPermissions = [NSMutableSet set]; + + [FBSDKInternalUtility extractPermissionsFromResponse:result + grantedPermissions:grantedPermissions + declinedPermissions:declinedPermissions]; + + parameters.permissions = [grantedPermissions copy]; + parameters.declinedPermissions = [declinedPermissions copy]; + if (error) { + parameters.error = error; + } + didCompleteBlock(); + }]; + + [connection start]; + didCompleteBlock(); +} + +@implementation FBSDKLoginCompletionParameters + +- (instancetype)init +{ + return [super init]; +} + +- (instancetype)initWithError:(NSError *)error +{ + if ((self = [self init]) != nil) { + self.error = error; + } + return self; +} + +@end + +#pragma mark - Completers + +@implementation FBSDKLoginURLCompleter +{ + FBSDKLoginCompletionParameters *_parameters; + id _observer + ; BOOL _performExplicitFallback; +} + +- (instancetype)init NS_UNAVAILABLE +{ + assert(0); +} + +- (instancetype)initWithURLParameters:(NSDictionary *)parameters appID:(NSString *)appID +{ + if ((self = [super init]) != nil) { + _parameters = [[FBSDKLoginCompletionParameters alloc] init]; + + _parameters.accessTokenString = parameters[@"access_token"]; + + if (_parameters.accessTokenString.length > 0) { + [self setParametersWithDictionary:parameters appID:appID]; + } else { + _parameters.accessTokenString = nil; + [self setErrorWithDictionary:parameters]; + } + } + return self; +} + +- (void)completeLogIn:(FBSDKLoginManager *)loginManager withHandler:(void(^)(FBSDKLoginCompletionParameters *parameters))handler +{ + if (_performExplicitFallback && loginManager.loginBehavior == FBSDKLoginBehaviorNative) { + // UIKit and iOS don't like an application opening a URL during a URL open callback, so + // we need to wait until *at least* the next turn of the run loop to open the URL to + // perform the browser log in behavior. However we also need to wait for the application + // to become active so FBSDKApplicationDelegate doesn't erroneously call back the URL + // opener before the URL has been opened. + if ([FBSDKApplicationDelegate sharedInstance].isActive) { + // The application is active so there's no need to wait. + [loginManager logInWithBehavior:FBSDKLoginBehaviorBrowser]; + } else { + // use the block version to guarantee there's a strong reference to self + _observer = [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^ (NSNotification *notification) { + [self attemptBrowserLogIn:loginManager]; + }]; + } + return; + } + + if (_parameters.accessTokenString && !_parameters.userID) { + void(^handlerCopy)(FBSDKLoginCompletionParameters *) = [handler copy]; + FBSDKLoginRequestMeAndPermissions(_parameters, ^{ + handlerCopy(_parameters); + }); + return; + } + + handler(_parameters); +} + +- (void)setParametersWithDictionary:(NSDictionary *)parameters appID:(NSString *)appID +{ + NSString *grantedPermissionsString = parameters[@"granted_scopes"]; + NSString *declinedPermissionsString = parameters[@"denied_scopes"]; + + NSString *signedRequest = parameters[@"signed_request"]; + NSString *userID = parameters[@"user_id"]; + + // check the string length so that we assign an empty set rather than a set with an empty string + _parameters.permissions = (grantedPermissionsString.length > 0) + ? [NSSet setWithArray:[grantedPermissionsString componentsSeparatedByString:@","]] + : [NSSet set]; + _parameters.declinedPermissions = (declinedPermissionsString.length > 0) + ? [NSSet setWithArray:[declinedPermissionsString componentsSeparatedByString:@","]] + : [NSSet set]; + + _parameters.appID = appID; + + if (userID.length == 0 && signedRequest.length > 0) { + _parameters.userID = [FBSDKLoginUtility userIDFromSignedRequest:signedRequest]; + } else { + _parameters.userID = userID; + } + + NSString *expirationDateString = parameters[@"expires"] ?: parameters[@"expires_at"]; + NSDate *expirationDate = [NSDate distantFuture]; + if (expirationDateString && [expirationDateString doubleValue] > 0) { + expirationDate = [NSDate dateWithTimeIntervalSince1970:[expirationDateString doubleValue]]; + } else if (parameters[@"expires_in"]) { + expirationDate = [NSDate dateWithTimeIntervalSinceNow:[parameters[@"expires_in"] integerValue]]; + } + _parameters.expirationDate = expirationDate; + + NSError *error = nil; + NSDictionary *state = [FBSDKInternalUtility objectForJSONString:parameters[@"state"] error:&error]; + _parameters.challenge = [FBSDKUtility URLDecode:state[@"challenge"]]; +} + +- (void)setErrorWithDictionary:(NSDictionary *)parameters +{ + NSString *legacyErrorReason = parameters[@"error"]; + + if ([legacyErrorReason isEqualToString:@"service_disabled_use_browser"] || + [legacyErrorReason isEqualToString:@"service_disabled"]) { + _performExplicitFallback = YES; + } + + // if error is nil, then this should be processed as a cancellation unless + // _performExplicitFallback is set to YES and the log in behavior is Native. + _parameters.error = [FBSDKLoginError errorFromReturnURLParameters:parameters]; +} + +- (void)attemptBrowserLogIn:(FBSDKLoginManager *)loginManager { + if (_observer != nil) { + [[NSNotificationCenter defaultCenter] removeObserver:_observer]; + _observer = nil; + } + + if ([FBSDKApplicationDelegate sharedInstance].isActive) { + [loginManager logInWithBehavior:FBSDKLoginBehaviorBrowser]; + } else { + // The application is active but due to notification ordering the FBSDKApplicationDelegate + // doesn't know it yet. Wait one more turn of the run loop. + dispatch_async(dispatch_get_main_queue(), ^{ + [self attemptBrowserLogIn:loginManager]; + }); + } +} + +@end + +@implementation FBSDKLoginSystemAccountCompleter +{ + FBSDKLoginCompletionParameters *_parameters; +} + +- (instancetype)init NS_UNAVAILABLE +{ + assert(0); +} + +- (instancetype)initWithTokenString:(NSString *)tokenString appID:(NSString *)appID +{ + if ((self = [super init]) != nil) { + _parameters = [[FBSDKLoginCompletionParameters alloc] init]; + + _parameters.accessTokenString = tokenString; + _parameters.appID = appID; + + _parameters.systemAccount = YES; + } + return self; +} + +- (void)completeLogIn:(FBSDKLoginManager *)loginManager withHandler:(void(^)(FBSDKLoginCompletionParameters *parameters))handler +{ + void(^handlerCopy)(FBSDKLoginCompletionParameters *) = [handler copy]; + FBSDKLoginRequestMeAndPermissions(_parameters, ^{ + // Transform the FBSDKCoreKit error in to an FBSDKLoginKit error, if necessary. This specializes + // the graph errors in to User Checkpointed, Password Changed or Unconfirmed User. + // + // It's possible the graph error has a value set for NSRecoveryAttempterErrorKey but we don't + // have any login-specific attempter to provide since system auth succeeded and the error is a + // graph API error. + NSError *serverError = _parameters.error; + NSError *error = [FBSDKLoginError errorFromServerError:serverError]; + if (error != nil) { + // In the event the user's password changed the Accounts framework will still return + // an access token but API calls will fail. Clear the access token from the result + // and use the special-case System Password changed error, which has different text + // to display to the user. + if (error.code == FBSDKLoginPasswordChangedErrorCode) { + [FBSDKSystemAccountStoreAdapter sharedInstance].forceBlockingRenew = YES; + + _parameters.accessTokenString = nil; + _parameters.appID = nil; + + error = [FBSDKLoginError errorForSystemPasswordChange:serverError]; + } + + _parameters.error = error; + } + + handlerCopy(_parameters); + }); +} + +@end + +@implementation FBSDKLoginSystemAccountErrorCompleter +{ + FBSDKLoginCompletionParameters *_parameters; +} + +- (instancetype)init NS_UNAVAILABLE +{ + assert(0); +} + +- (instancetype)initWithError:(NSError *)accountStoreError permissions:(NSSet *)permissions +{ + if ((self = [super init]) != nil) { + _parameters = [[FBSDKLoginCompletionParameters alloc] init]; + + NSError *error = [FBSDKLoginError errorForSystemAccountStoreError:accountStoreError]; + if (error != nil) { + _parameters.error = error; + } else { + // The lack of an error indicates the user declined permissions + _parameters.declinedPermissions = permissions; + } + + _parameters.systemAccount = YES; + } + return self; +} + +- (void)completeLogIn:(FBSDKLoginManager *)loginManager withHandler:(void(^)(FBSDKLoginCompletionParameters *parameters))handler +{ + handler(_parameters); +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h new file mode 100644 index 0000000..34b6647 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h @@ -0,0 +1,35 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +@interface FBSDKLoginError : NSObject + ++ (NSString *)errorDomain; + ++ (NSError *)errorForFailedLoginWithCode:(FBSDKLoginErrorCode)code; + ++ (NSError *)errorForSystemAccountStoreError:(NSError *)accountStoreError; ++ (NSError *)errorForSystemPasswordChange:(NSError *)innerError; + ++ (NSError *)errorFromReturnURLParameters:(NSDictionary *)parameters; ++ (NSError *)errorFromServerError:(NSError *)serverError; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m new file mode 100644 index 0000000..856b7f9 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m @@ -0,0 +1,252 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLoginError.h" + +#import "FBSDKCoreKit+Internal.h" + +typedef NS_ENUM(NSUInteger, FBSDKLoginErrorSubcode) +{ + FBSDKLoginUserCheckpointedErrorSubcode = 459, + FBSDKLoginPasswordChangedErrorSubcode = 460, + FBSDKLoginUnconfirmedUserErrorSubcode = 464, +}; + +@implementation FBSDKLoginError + ++ (NSString *)errorDomain +{ + return FBSDKLoginErrorDomain; +} + ++ (NSError *)errorForFailedLoginWithCode:(FBSDKLoginErrorCode)code; +{ + return [self errorForFailedLoginWithCode:code innerError:nil]; +} + ++ (NSError *)errorForFailedLoginWithCode:(FBSDKLoginErrorCode)code + innerError:(NSError *)innerError +{ + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + + [FBSDKInternalUtility dictionary:userInfo setObject:innerError forKey:NSUnderlyingErrorKey]; + + NSString *errorDomain = [self errorDomain]; + NSString *localizedDescription = nil; + + switch ((NSInteger)code) { + case FBSDKNetworkErrorCode: + errorDomain = FBSDKErrorDomain; + localizedDescription = + NSLocalizedStringWithDefaultValue(@"LoginError.SystemAccount.Network", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Unable to connect to Facebook. Check your network connection and try again.", + @"The user facing error message when the Accounts framework encounters a network error."); + break; + case FBSDKLoginUserCheckpointedErrorCode: + localizedDescription = + NSLocalizedStringWithDefaultValue(@"LoginError.SystemAccount.UserCheckpointed", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"You cannot log in to apps at this time. Please log in to www.facebook.com and follow the instructions given.", + @"The user facing error message when the Facebook account signed in to the Accounts framework has been checkpointed."); + break; + case FBSDKLoginUnconfirmedUserErrorCode: + localizedDescription = + NSLocalizedStringWithDefaultValue(@"LoginError.SystemAccount.UnconfirmedUser", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Your account is not confirmed. Please log in to www.facebook.com and follow the instructions given.", + @"The user facing error message when the Facebook account signed in to the Accounts framework becomes unconfirmed."); + break; + case FBSDKLoginSystemAccountAppDisabledErrorCode: + localizedDescription = + NSLocalizedStringWithDefaultValue(@"LoginError.SystemAccount.Disabled", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Access has not been granted to the Facebook account. Verify device settings.", + @"The user facing error message when the app slider has been disabled and login fails."); + break; + case FBSDKLoginSystemAccountUnavailableErrorCode: + localizedDescription = + NSLocalizedStringWithDefaultValue(@"LoginError.SystemAccount.Unavailable", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"The Facebook account has not been configured on the device.", + @"The user facing error message when the device Facebook account is unavailable and login fails."); + break; + default: + break; + } + + [FBSDKInternalUtility dictionary:userInfo setObject:localizedDescription forKey:NSLocalizedDescriptionKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:localizedDescription forKey:FBSDKErrorLocalizedDescriptionKey]; + + return [NSError errorWithDomain:errorDomain + code:code + userInfo:userInfo]; +} + ++ (NSError *)errorForSystemAccountStoreError:(NSError *)accountStoreError +{ + NSError *err = nil; + BOOL cancellation = NO; + + if ([accountStoreError.domain isEqualToString:[self errorDomain]] || + [accountStoreError.domain isEqualToString:[FBSDKError errorDomain]]) { + // If the requestAccess call results in a Facebook error, surface it as a top-level + // error. This implies it is not the typical user "disallows" case. + err = accountStoreError; + } else if ([accountStoreError.domain isEqualToString:@"com.apple.accounts"] && accountStoreError.code == 7) { + err = [self errorWithSystemAccountStoreDeniedError:accountStoreError isCancellation:&cancellation]; + } + + if (err == nil && !cancellation) { + // create an error object with additional info regarding failed login + NSInteger errorCode = FBSDKLoginSystemAccountUnavailableErrorCode; + + NSString *errorDomain = accountStoreError.domain; + if ([errorDomain isEqualToString:NSURLErrorDomain] || + [errorDomain isEqualToString:@"kCFErrorDomainCFNetwork"]) { + errorCode = FBSDKNetworkErrorCode; + } + + err = [self errorForFailedLoginWithCode:errorCode + innerError:accountStoreError]; + } + + return err; +} + ++ (NSError *)errorForSystemPasswordChange:(NSError *)innerError +{ + NSString *failureReasonAndDescription = + NSLocalizedStringWithDefaultValue(@"LoginError.SystemAccount.PasswordChange", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Your Facebook password has changed. To confirm your password, open Settings > Facebook and tap your name.", + @"The user facing error message when the device Facebook account password is incorrect and login fails."); + NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys: + failureReasonAndDescription, FBSDKErrorLocalizedDescriptionKey, + failureReasonAndDescription, NSLocalizedDescriptionKey, + nil]; + + [FBSDKInternalUtility dictionary:userInfo setObject:innerError forKey:NSUnderlyingErrorKey]; + + return [NSError errorWithDomain:[self errorDomain] + code:FBSDKLoginPasswordChangedErrorCode + userInfo:userInfo]; +} + ++ (NSError *)errorFromReturnURLParameters:(NSDictionary *)parameters +{ + NSError *error = nil; + + NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:userInfo setObject:parameters[@"error_message"] forKey:FBSDKErrorDeveloperMessageKey]; + + if (userInfo.count > 0) { + [FBSDKInternalUtility dictionary:userInfo setObject:parameters[@"error"] forKey:FBSDKErrorDeveloperMessageKey]; + [FBSDKInternalUtility dictionary:userInfo setObject:parameters[@"error_code"] forKey:FBSDKGraphRequestErrorGraphErrorCode]; + + if (!userInfo[FBSDKErrorDeveloperMessageKey]) { + [FBSDKInternalUtility dictionary:userInfo setObject:parameters[@"error_reason"] forKey:FBSDKErrorDeveloperMessageKey]; + } + + userInfo[FBSDKGraphRequestErrorCategoryKey] = @(FBSDKGraphRequestErrorCategoryOther); + + error = [NSError errorWithDomain:FBSDKErrorDomain + code:FBSDKGraphRequestGraphAPIErrorCode + userInfo:userInfo]; + } + + return error; +} + ++ (NSError *)errorFromServerError:(NSError *)serverError +{ + NSError *loginError = nil; + + if ([serverError.domain isEqualToString:FBSDKErrorDomain]) { + NSDictionary *response = [FBSDKTypeUtility dictionaryValue:serverError.userInfo[FBSDKGraphRequestErrorParsedJSONResponseKey]]; + NSDictionary *body = [FBSDKTypeUtility dictionaryValue:response[@"body"]]; + NSDictionary *error = [FBSDKTypeUtility dictionaryValue:body[@"error"]]; + NSInteger subcode = [FBSDKTypeUtility integerValue:error[@"error_subcode"]]; + + switch (subcode) { + case FBSDKLoginUserCheckpointedErrorSubcode: + loginError = [self errorForFailedLoginWithCode:FBSDKLoginUserCheckpointedErrorCode + innerError:serverError]; + break; + case FBSDKLoginPasswordChangedErrorSubcode: + loginError = [self errorForFailedLoginWithCode:FBSDKLoginPasswordChangedErrorCode + innerError:serverError]; + break; + case FBSDKLoginUnconfirmedUserErrorSubcode: + loginError = [self errorForFailedLoginWithCode:FBSDKLoginUnconfirmedUserErrorCode + innerError:serverError]; + break; + } + } + + return loginError; +} + ++ (NSError *)errorWithSystemAccountStoreDeniedError:(NSError *)accountStoreError isCancellation:(BOOL *)cancellation +{ + // The Accounts framework returns an ACErrorPermissionDenied error for both user denied errors, + // Facebook denied errors, and other things. Unfortunately examining the contents of the + // description is the only means available to determine the reason for the error. + NSString *description = accountStoreError.userInfo[NSLocalizedDescriptionKey]; + NSError *err = nil; + + if (description) { + // If a parenthetical error code exists, map it ot a Facebook server error + FBSDKLoginErrorCode errorCode = FBSDKLoginReservedErrorCode; + if ([description rangeOfString:@"(459)"].location != NSNotFound) { + // The Facebook server could not fulfill this access request: Error validating access token: + // You cannot access the app till you log in to www.facebook.com and follow the instructions given. (459) + + // The OAuth endpoint directs people to www.facebook.com when an account has been + // checkpointed. If the web address is present, assume it's due to a checkpoint. + errorCode = FBSDKLoginUserCheckpointedErrorCode; + } else if ([description rangeOfString:@"(452)"].location != NSNotFound || + [description rangeOfString:@"(460)"].location != NSNotFound) { + // The Facebook server could not fulfill this access request: Error validating access token: + // Session does not match current stored session. This may be because the user changed the password since + // the time the session was created or Facebook has changed the session for security reasons. (452)or(460) + + // If the login failed due to the session changing, maybe it's due to the password + // changing. Direct the user to update the password in the Settings > Facebook. + err = [self errorForSystemPasswordChange:accountStoreError]; + } else if ([description rangeOfString:@"(464)"].location != NSNotFound) { + // The Facebook server could not fulfill this access request: Error validating access token: + // Sessions for the user are not allowed because the user is not a confirmed user. (464) + errorCode = FBSDKLoginUnconfirmedUserErrorCode; + } + + if (errorCode != FBSDKLoginReservedErrorCode) { + err = [self errorForFailedLoginWithCode:errorCode]; + } + } else { + // If there is no description, assume this is a user cancellation. No error object is + // returned for a cancellation. + if (cancellation != NULL) { + *cancellation = YES; + } + } + + return err; +} + +- (instancetype)init +{ + FBSDK_NO_DESIGNATED_INITIALIZER(); + return nil; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h new file mode 100644 index 0000000..74b6597 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h @@ -0,0 +1,24 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKLoginCompletion+Internal.h" +#import "FBSDKLoginError.h" +#import "FBSDKLoginManager+Internal.h" +#import "FBSDKLoginUtility.h" diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h new file mode 100644 index 0000000..344e14f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h @@ -0,0 +1,81 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import "FBSDKCoreKit+Internal.h" + +@class FBSDKAccessToken; +@class FBSDKLoginCompletionParameters; + +@interface FBSDKLoginManagerSystemAccountState : NSObject +@property (nonatomic) BOOL didShowDialog; +@property (nonatomic, getter=isReauthorize) BOOL reauthorize; +@property (nonatomic, getter=isUnTOSedDevice) BOOL unTOSedDevice; +@end + +@interface FBSDKLoginManager () +@property (nonatomic, weak) UIViewController *fromViewController; +@property (nonatomic, readonly) NSSet *requestedPermissions; + +- (void)completeAuthentication:(FBSDKLoginCompletionParameters *)parameters expectChallenge:(BOOL)expectChallenge; + +// available to internal types to trigger login without checking read/publish mixtures. +- (void)logInWithPermissions:(NSSet *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler; +- (void)logInWithBehavior:(FBSDKLoginBehavior)loginBehavior; + +// made available for testing only +- (NSDictionary *)logInParametersWithPermissions:(NSSet *)permissions; +// made available for testing only +- (void)validateReauthentication:(FBSDKAccessToken *)currentToken withResult:(FBSDKLoginManagerLoginResult *)loginResult; + +// for testing only +- (void)setHandler:(FBSDKLoginManagerRequestTokenHandler)handler; +// for testing only +- (void)setRequestedPermissions:(NSSet *)requestedPermissions; +// for testing only +- (NSString *)loadExpectedChallenge; +@end + +// the category is made available for testing only +@interface FBSDKLoginManager (Native) + +- (void)performNativeLogInWithParameters:(NSDictionary *)loginParams handler:(void(^)(BOOL, NSError*))handler; +- (void)performBrowserLogInWithParameters:(NSDictionary *)loginParams handler:(void(^)(BOOL, NSString *,NSError*))handler; + +@end + +// the category is made available for testing only +@interface FBSDKLoginManager (Accounts) + +- (void)beginSystemLogIn; +- (void)performSystemLogIn; +- (void)continueSystemLogInWithTokenString:(NSString *)oauthToken error:(NSError *)accountStoreError state:(FBSDKLoginManagerSystemAccountState *)state; + +- (void)fallbackToNativeBehavior; + +@end + +// the category is made available for testing only +@interface FBSDKLoginManager (WebDialog) + +- (void)performWebLogInWithParameters:(NSDictionary *)loginParams handler:(void(^)(BOOL, NSError*))handler; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h new file mode 100644 index 0000000..8d2459f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h @@ -0,0 +1,41 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLoginManager+Internal.h" + +extern NSString *const FBSDKLoginManagerLoggerAuthMethod_Native; +extern NSString *const FBSDKLoginManagerLoggerAuthMethod_Browser; +extern NSString *const FBSDKLoginManagerLoggerAuthMethod_System; +extern NSString *const FBSDKLoginManagerLoggerAuthMethod_Webview; +extern NSString *const FBSDKLoginManagerLoggerAuthMethod_SFVC; + + +@interface FBSDKLoginManagerLogger : NSObject ++ (FBSDKLoginManagerLogger *)loggerFromParameters:(NSDictionary *)parameters; + +// this must not retain loginManager - only used to conveniently grab various properties to log. +- (void)startSessionForLoginManager:(FBSDKLoginManager *)loginManager; +- (void)endSession; + +- (void)startAuthMethod:(NSString *)authMethod; +- (void)endLoginWithResult:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error; + +- (NSDictionary *)parametersWithTimeStampAndClientState:(NSDictionary *)loginParams forAuthMethod:(NSString *)authMethod; +- (void)willAttemptAppSwitchingBehavior; +- (void)systemAuthDidShowDialog:(BOOL)didShowDialog isUnTOSedDevice:(BOOL)isUnTOSedDevice; +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m new file mode 100644 index 0000000..531fd21 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m @@ -0,0 +1,293 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLoginManagerLogger.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKLoginError.h" +#import "FBSDKLoginManagerLoginResult+Internal.h" +#import "FBSDKLoginUtility.h" + +NSString *const FBSDKLoginManagerLoggerAuthMethod_Native = @"fb_application_web_auth"; +NSString *const FBSDKLoginManagerLoggerAuthMethod_Browser = @"browser_auth"; +NSString *const FBSDKLoginManagerLoggerAuthMethod_System = @"integrated_auth"; +NSString *const FBSDKLoginManagerLoggerAuthMethod_Webview = @"fallback_auth"; +NSString *const FBSDKLoginManagerLoggerAuthMethod_SFVC = @"sfvc_auth"; + +static NSString *const FBSDKLoginManagerLoggingClientStateKey = @"state"; +static NSString *const FBSDKLoginManagerLoggingClientStateIsClientState = @"com.facebook.sdk_client_state"; + +static NSString *const FBSDKLoginManagerLoggerParamIdentifierKey = @"0_auth_logger_id"; +static NSString *const FBSDKLoginManagerLoggerParamTimestampKey = @"1_timestamp_ms"; +static NSString *const FBSDKLoginManagerLoggerParamResultKey = @"2_result"; +static NSString *const FBSDKLoginManagerLoggerParamAuthMethodKey = @"3_method"; +static NSString *const FBSDKLoginManagerLoggerParamErrorCodeKey = @"4_error_code"; +static NSString *const FBSDKLoginManagerLoggerParamErrorMessageKey = @"5_error_message"; +static NSString *const FBSDKLoginManagerLoggerParamExtrasKey = @"6_extras"; + +static NSString *const FBSDKLoginManagerLoggerValueEmpty = @""; + +static NSString *const FBSDKLoginManagerLoggerResultSuccessString = @"success"; +static NSString *const FBSDKLoginManagerLoggerResultCancelString = @"cancelled"; +static NSString *const FBSDKLoginManagerLoggerResultErrorString = @"error"; +static NSString *const FBSDKLoginManagerLoggerResultSkippedString = @"skipped"; + +static NSString *const FBSDKLoginManagerLoggerTryNative = @"tryFBAppAuth"; +static NSString *const FBSDKLoginManagerLoggerTryBrowser = @"trySafariAuth"; +static NSString *const FBSDKLoginManagerLoggerTrySystemAccount = @"tryIntegratedAuth"; +static NSString *const FBSDKLoginManagerLoggerTryWebView = @"tryFallback"; + +@implementation FBSDKLoginManagerLogger +{ +@private + NSString *_identifier; + NSMutableDictionary *_extras; + + NSString *_lastResult; + NSError *_lastError; + + NSString *_authMethod; +} + ++ (FBSDKLoginManagerLogger *)loggerFromParameters:(NSDictionary *)parameters +{ + NSDictionary *clientState = [FBSDKInternalUtility objectForJSONString:parameters[FBSDKLoginManagerLoggingClientStateKey] error:NULL]; + + id isClientState = clientState[FBSDKLoginManagerLoggingClientStateIsClientState]; + if ([isClientState isKindOfClass:[NSNumber class]] && [isClientState boolValue]) { + FBSDKLoginManagerLogger *logger = [[self alloc] init]; + if (logger != nil) { + logger->_identifier = clientState[FBSDKLoginManagerLoggerParamIdentifierKey]; + logger->_authMethod = clientState[FBSDKLoginManagerLoggerParamAuthMethodKey]; + return logger; + } + } + return nil; +} + +- (instancetype)init +{ + if ((self = [super init]) != nil) { + _identifier = [[NSUUID UUID] UUIDString]; + _extras = [NSMutableDictionary dictionary]; + } + return self; +} + +- (void)startSessionForLoginManager:(FBSDKLoginManager *)loginManager +{ + BOOL isReauthorize = ([FBSDKAccessToken currentAccessToken] != nil); + BOOL willTryNative = NO; + BOOL willTryBrowser = NO; + BOOL willTrySystemAccount = NO; + BOOL willTryWebView = NO; + NSString *behaviorString = nil; + + switch (loginManager.loginBehavior) { + case FBSDKLoginBehaviorNative: + willTryNative = YES; + willTryBrowser = YES; + behaviorString = @"FBSDKLoginBehaviorNative"; + break; + case FBSDKLoginBehaviorBrowser: + willTryBrowser = YES; + behaviorString = @"FBSDKLoginBehaviorBrowser"; + break; + case FBSDKLoginBehaviorSystemAccount: + willTryNative = YES; + willTryBrowser = YES; + willTrySystemAccount = YES; + behaviorString = @"FBSDKLoginBehaviorSystemAccount"; + break; + case FBSDKLoginBehaviorWeb: + willTryWebView = YES; + behaviorString = @"FBSDKLoginBehaviorWeb"; + break; + } + + [_extras addEntriesFromDictionary:@{ + FBSDKLoginManagerLoggerTryNative : @(willTryNative), + FBSDKLoginManagerLoggerTryBrowser : @(willTryBrowser), + FBSDKLoginManagerLoggerTrySystemAccount : @(willTrySystemAccount), + FBSDKLoginManagerLoggerTryWebView : @(willTryWebView), + @"isReauthorize" : @(isReauthorize), + @"login_behavior" : behaviorString, + @"default_audience" : [FBSDKLoginUtility stringForAudience:loginManager.defaultAudience], + @"permissions" : [[loginManager.requestedPermissions allObjects] componentsJoinedByString:@","] ?: @"" + }]; + + [self logEvent:FBSDKAppEventNameFBSessionAuthStart params:[self _parametersForNewEvent]]; +} + +- (void)endSession +{ + [self logEvent:FBSDKAppEventNameFBSessionAuthEnd result:_lastResult error:_lastError]; +} + +- (void)startAuthMethod:(NSString *)authMethod +{ + _authMethod = authMethod; + [self logEvent:FBSDKAppEventNameFBSessionAuthMethodStart params:[self _parametersForNewEvent]]; +} + +- (void)endLoginWithResult:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error +{ + NSString *resultString = @""; + + if (error != nil) { + resultString = FBSDKLoginManagerLoggerResultErrorString; + } else if (result.isCancelled) { + resultString = FBSDKLoginManagerLoggerResultCancelString; + } else if (result.isSkipped) { + resultString = FBSDKLoginManagerLoggerResultSkippedString; + } else if (result.token) { + resultString = FBSDKLoginManagerLoggerResultSuccessString; + if (result.declinedPermissions.count) { + _extras[@"declined_permissions"] = [[result.declinedPermissions allObjects] componentsJoinedByString:@","]; + } + } + + _lastResult = resultString; + _lastError = error; + [_extras addEntriesFromDictionary:result.loggingExtras]; + + [self logEvent:FBSDKAppEventNameFBSessionAuthMethodEnd result:resultString error:error]; +} + +- (NSDictionary *)parametersWithTimeStampAndClientState:(NSDictionary *)loginParams forAuthMethod:(NSString *)authMethod +{ + NSMutableDictionary *params = [loginParams mutableCopy]; + + NSTimeInterval timeValue = (NSTimeInterval)FBSDKMonotonicTimeGetCurrentSeconds(); + NSString *e2eTimestampString = [FBSDKInternalUtility JSONStringForObject:@{ @"init" : @(timeValue) } + error:NULL + invalidObjectHandler:NULL]; + params[@"e2e"] = e2eTimestampString; + + NSDictionary *existingState = [FBSDKInternalUtility objectForJSONString:params[FBSDKLoginManagerLoggingClientStateKey] error:NULL]; + params[FBSDKLoginManagerLoggingClientStateKey] = [self clientStateForAuthMethod:authMethod andExistingState:existingState]; + + return params; +} + +- (void)willAttemptAppSwitchingBehavior +{ + NSString *defaultUrlScheme = [NSString stringWithFormat:@"fb%@%@", [FBSDKSettings appID], [FBSDKSettings appURLSchemeSuffix] ?: @""]; + BOOL isURLSchemeRegistered = [FBSDKInternalUtility isRegisteredURLScheme:defaultUrlScheme]; + + BOOL isFacebookAppCanOpenURLSchemeRegistered = [FBSDKInternalUtility isRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_FACEBOOK]; + BOOL isMessengerAppCanOpenURLSchemeRegistered = [FBSDKInternalUtility isRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_MESSENGER]; + + [_extras addEntriesFromDictionary:@{ + @"isURLSchemeRegistered" : @(isURLSchemeRegistered), + @"isFacebookAppCanOpenURLSchemeRegistered" : @(isFacebookAppCanOpenURLSchemeRegistered), + @"isMessengerAppCanOpenURLSchemeRegistered" : @(isMessengerAppCanOpenURLSchemeRegistered), + }]; +} + +- (void)systemAuthDidShowDialog:(BOOL)didShowDialog isUnTOSedDevice:(BOOL)isUnTOSedDevice +{ + [_extras addEntriesFromDictionary:@{ + @"isUntosedDevice" : @(isUnTOSedDevice), + @"dialogShown" : @(didShowDialog), + }]; +} + +#pragma mark - Private + +- (NSString *)clientStateForAuthMethod:(NSString *)authMethod andExistingState:(NSDictionary *)existingState +{ + NSDictionary *clientState = @{ + FBSDKLoginManagerLoggerParamAuthMethodKey: authMethod ?: @"", + FBSDKLoginManagerLoggerParamIdentifierKey: _identifier, + FBSDKLoginManagerLoggingClientStateIsClientState: @YES, + }; + + if (existingState) { + NSMutableDictionary *mutableState = [clientState mutableCopy]; + [mutableState addEntriesFromDictionary:existingState]; + clientState = mutableState; + } + + return [FBSDKInternalUtility JSONStringForObject:clientState error:NULL invalidObjectHandler:NULL]; +} + +- (NSMutableDictionary *)_parametersForNewEvent +{ + NSMutableDictionary *eventParameters = [[NSMutableDictionary alloc] init]; + + // NOTE: We ALWAYS add all params to each event, to ensure predictable mapping on the backend. + eventParameters[FBSDKLoginManagerLoggerParamIdentifierKey] = _identifier ?: FBSDKLoginManagerLoggerValueEmpty; + eventParameters[FBSDKLoginManagerLoggerParamTimestampKey] = [NSNumber numberWithDouble:round(1000 * [[NSDate date] timeIntervalSince1970])]; + eventParameters[FBSDKLoginManagerLoggerParamResultKey] = FBSDKLoginManagerLoggerValueEmpty; + [FBSDKInternalUtility dictionary:eventParameters setObject:_authMethod forKey:FBSDKLoginManagerLoggerParamAuthMethodKey]; + eventParameters[FBSDKLoginManagerLoggerParamErrorCodeKey] = FBSDKLoginManagerLoggerValueEmpty; + eventParameters[FBSDKLoginManagerLoggerParamErrorMessageKey] = FBSDKLoginManagerLoggerValueEmpty; + eventParameters[FBSDKLoginManagerLoggerParamExtrasKey] = FBSDKLoginManagerLoggerValueEmpty; + + return eventParameters; +} + +- (void)logEvent:(NSString *)eventName params:(NSMutableDictionary *)params +{ + if (_identifier) { + NSString *extrasJSONString = [FBSDKInternalUtility JSONStringForObject:_extras + error:NULL + invalidObjectHandler:NULL]; + if (extrasJSONString) { + params[FBSDKLoginManagerLoggerParamExtrasKey] = extrasJSONString; + } + [_extras removeAllObjects]; + + [FBSDKAppEvents logImplicitEvent:eventName valueToSum:nil parameters:params accessToken:nil]; + } +} + +- (void)logEvent:(NSString *)eventName result:(NSString *)result error:(NSError *)error +{ + NSMutableDictionary *params = [self _parametersForNewEvent]; + + params[FBSDKLoginManagerLoggerParamResultKey] = result; + + if ([error.domain isEqualToString:FBSDKErrorDomain] || [error.domain isEqualToString:FBSDKLoginErrorDomain]) { + // tease apart the structure. + + // first see if there is an explicit message in the error's userInfo. If not, default to the reason, + // which is less useful. + NSString *value = error.userInfo[@"error_message"] ?: error.userInfo[FBSDKErrorLocalizedDescriptionKey]; + [FBSDKInternalUtility dictionary:params setObject:value forKey:FBSDKLoginManagerLoggerParamErrorMessageKey]; + + value = error.userInfo[FBSDKGraphRequestErrorGraphErrorCode] ?: [NSString stringWithFormat:@"%ld", (long)error.code]; + [FBSDKInternalUtility dictionary:params setObject:value forKey:FBSDKLoginManagerLoggerParamErrorCodeKey]; + + NSError *innerError = error.userInfo[NSUnderlyingErrorKey]; + if (innerError != nil) { + value = innerError.userInfo[@"error_message"] ?: innerError.userInfo[NSLocalizedDescriptionKey]; + [FBSDKInternalUtility dictionary:_extras setObject:value forKey:@"inner_error_message"]; + + value = innerError.userInfo[FBSDKGraphRequestErrorGraphErrorCode] ?: [NSString stringWithFormat:@"%ld", (long)innerError.code]; + [FBSDKInternalUtility dictionary:_extras setObject:value forKey:@"inner_error_code"]; + } + } else if (error) { + params[FBSDKLoginManagerLoggerParamErrorCodeKey] = @(error.code); + } + + [self logEvent:eventName params:params]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h new file mode 100644 index 0000000..3191aa9 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h @@ -0,0 +1,32 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +@interface FBSDKLoginManagerLoginResult() + +@property (nonatomic, readonly) NSDictionary *loggingExtras; + +// legacy flag indicating this is an intermediary result only for logging purposes. +@property (nonatomic) BOOL isSkipped; + +// adds additional logging entry to extras - only sent as part of `endLoginWithResult:` +-(void)addLoggingExtra:(id)object forKey:(id)key; +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h new file mode 100644 index 0000000..109dec8 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h @@ -0,0 +1,33 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +@interface FBSDKLoginUtility : NSObject + ++ (BOOL)isPublishPermission:(NSString *)permission; ++ (BOOL)areAllPermissionsReadPermissions:(NSSet *)permissions; ++ (BOOL)areAllPermissionsPublishPermissions:(NSSet *)permissions; ++ (NSString *)stringForAudience:(FBSDKDefaultAudience)audience; ++ (NSDictionary *)queryParamsFromLoginURL:(NSURL *)url; + ++ (NSString *)userIDFromSignedRequest:(NSString *)signedRequest; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m new file mode 100644 index 0000000..c95a9ed --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m @@ -0,0 +1,115 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLoginUtility.h" + +#import +#import + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKLoginConstants.h" + +@implementation FBSDKLoginUtility + ++ (BOOL)isPublishPermission:(NSString *)permission +{ + return [permission hasPrefix:@"publish"] || + [permission hasPrefix:@"manage"] || + [permission isEqualToString:@"ads_management"] || + [permission isEqualToString:@"create_event"] || + [permission isEqualToString:@"rsvp_event"]; +} + ++ (BOOL)areAllPermissionsReadPermissions:(NSSet *)permissions +{ + for (NSString *permission in permissions) { + if ([[self class] isPublishPermission:permission]) { + return NO; + } + } + return YES; +} + ++ (BOOL)areAllPermissionsPublishPermissions:(NSSet *)permissions +{ + for (NSString *permission in permissions) { + if (![[self class] isPublishPermission:permission]) { + return NO; + } + } + return YES; +} + ++ (NSString *)stringForAudience:(FBSDKDefaultAudience)audience +{ + switch (audience) { + case FBSDKDefaultAudienceOnlyMe: + return @"only_me"; + case FBSDKDefaultAudienceFriends: + return @"friends"; + case FBSDKDefaultAudienceEveryone: + return @"everyone"; + } +} + ++ (NSDictionary *)queryParamsFromLoginURL:(NSURL *)url +{ + NSString *expectedUrlPrefix = [FBSDKInternalUtility appURLWithHost:@"authorize" path:nil queryParameters:nil error:NULL].absoluteString; + if (![[url absoluteString] hasPrefix:expectedUrlPrefix]) { + // Don't have an App ID, just verify path. + NSString *host = url.host; + if (![host isEqualToString:@"authorize"]) { + return nil; + } + } + NSMutableDictionary *params = [NSMutableDictionary dictionaryWithDictionary:[FBSDKInternalUtility dictionaryFromFBURL:url]]; + + NSString *userID = [[self class] userIDFromSignedRequest:params[@"signed_request"]]; + if (userID) { + params[@"user_id"] = userID; + } + + return params; +} + ++ (NSString *)userIDFromSignedRequest:(NSString *)signedRequest +{ + if (!signedRequest) { + return nil; + } + + NSArray *signatureAndPayload = [signedRequest componentsSeparatedByString:@"."]; + NSString *userID = nil; + + if (signatureAndPayload.count == 2) { + NSData *data = [FBSDKBase64 decodeAsData:signatureAndPayload[1]]; + if (data) { + NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; + userID = dictionary[@"user_id"]; + } + } + return userID; +} + +- (instancetype)init +{ + FBSDK_NO_DESIGNATED_INITIALIZER(); + return nil; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h new file mode 100644 index 0000000..b979138 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h @@ -0,0 +1,23 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKCoreKit+Internal.h" + +@interface _FBSDKLoginRecoveryAttempter : FBSDKErrorRecoveryAttempter + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m new file mode 100644 index 0000000..efeab2d --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m @@ -0,0 +1,51 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "_FBSDKLoginRecoveryAttempter.h" + +#import "FBSDKLoginKit+Internal.h" + +@implementation _FBSDKLoginRecoveryAttempter + +- (void)attemptRecoveryFromError:(NSError *)error + optionIndex:(NSUInteger)recoveryOptionIndex + delegate:(id)delegate + didRecoverSelector:(SEL)didRecoverSelector + contextInfo:(void *)contextInfo { + + void(^handler)(BOOL) = ^(BOOL didRecover) { + [super completeRecovery:didRecover delegate:delegate didRecoverSelector:didRecoverSelector contextInfo:contextInfo]; + }; + NSSet *currentPermissions = [FBSDKAccessToken currentAccessToken].permissions; + if (recoveryOptionIndex == 0 && currentPermissions.count > 0) { + FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; + [login logInWithPermissions:currentPermissions handler:^(FBSDKLoginManagerLoginResult *result, NSError *loginError) { + // we can only consider a recovery successful if there are no declines + // (note this could still set an updated currentAccessToken). + if (!loginError && !result.isCancelled && result.declinedPermissions.count == 0) { + handler(YES); + } else { + handler(NO); + } + }]; + } else { + handler(NO); + } +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/LICENSE b/Unit-2-Journal/Pods/FBSDKLoginKit/LICENSE new file mode 100644 index 0000000..bdb9fc5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/LICENSE @@ -0,0 +1,17 @@ +Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + +You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +copy, modify, and distribute this software in source code or binary form for use +in connection with the web services and APIs provided by Facebook. + +As with any software that integrates with the Facebook platform, your use of +this software is subject to the Facebook Developer Principles and Policies +[http://developers.facebook.com/policy/]. This copyright notice shall be +included in all copies or substantial portions of the software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Unit-2-Journal/Pods/FBSDKLoginKit/README.mdown b/Unit-2-Journal/Pods/FBSDKLoginKit/README.mdown new file mode 100644 index 0000000..d14a5e4 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKLoginKit/README.mdown @@ -0,0 +1,46 @@ +Facebook SDK for iOS +==================== + +This open-source library allows you to integrate Facebook into your iOS app. + +Learn more about the provided samples, documentation, integrating the SDK into your app, accessing source code, and more at https://developers.facebook.com/docs/ios + +NOTE: By default, the Facebook SDK for iOS is installed in ~/Documents/FacebookSDK + +TRY IT OUT +---------- +1. Download the SDK at https://developers.facebook.com/docs/ios or via Cocoapods by adding the 'FBSDKCoreKit', 'FBSDKLoginKit', and 'FBSDKShareKit' pods. +2. Test your install: build and run the project at ~/Documents/FacebookSDK/Samples/Scrumptious/Scrumptious.xcodeproj +3. Check-out the tutorials available online at: https://developers.facebook.com/docs/ios/getting-started +4. Start coding! Visit https://developers.facebook.com/docs/ios for tutorials and reference documentation. + +FEATURES +-------- +* Login - https://developers.facebook.com/docs/facebook-login +* Sharing - https://developers.facebook.com/docs/sharing +* App Links - https://developers.facebook.com/docs/applinks +* Graph API - https://developers.facebook.com/docs/ios/graph +* Analytics for Apps - https://developers.facebook.com/docs/analytics + +GIVE FEEDBACK +------------- +Please report bugs or issues to https://developers.facebook.com/bugs/ + +You can also join the Facebook Developers Group on Facebook (https://www.facebook.com/groups/fbdevelopers/) or ask questions on Stack Overflow (http://facebook.stackoverflow.com) + +LICENSE +------- +See the LICENSE file. + +DEVELOPER TERMS +--------------- + +- By enabling Facebook integrations, including through this SDK, you can share information with Facebook, including information about people’s use of your app. Facebook will use information received in accordance with our Data Use Policy [https://www.facebook.com/about/privacy/], including to provide you with insights about the effectiveness of your ads and the use of your app. These integrations also enable us and our partners to serve ads on and off Facebook. + +- You may limit your sharing of information with us by updating the Insights control in the developer tool [https://developers.facebook.com/apps/{app_id}/settings/advanced]. + +- If you use a Facebook integration, including to share information with us, you agree and confirm that you have provided appropriate and sufficiently prominent notice to and obtained the appropriate consent from your users regarding such collection, use, and disclosure (including, at a minimum, through your privacy policy). You further agree that you will not share information with us about children under the age of 13. + +- You agree to comply with all applicable laws and regulations and also agree to our Terms , including our Platform Policies .and Advertising Guidelines, as applicable . + +By using the Facebook SDK for iOS you agree to these terms. diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h new file mode 100644 index 0000000..05b26ff --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h @@ -0,0 +1,101 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +@protocol FBSDKAppGroupAddDialogDelegate; + +/*! + @abstract A dialog for creating app groups. + */ +@interface FBSDKAppGroupAddDialog : NSObject + +/*! + @abstract Convenience method to build up an app group dialog with content and a delegate. + @param content The content for the app group. + @param delegate The receiver's delegate. + */ ++ (instancetype)showWithContent:(FBSDKAppGroupContent *)content + delegate:(id)delegate; + +/*! + @abstract The receiver's delegate or nil if it doesn't have a delegate. + */ +@property (nonatomic, weak) id delegate; + +/*! + @abstract The content for app group. + */ +@property (nonatomic, copy) FBSDKAppGroupContent *content; + +/*! + @abstract A Boolean value that indicates whether the receiver can initiate an app group dialog. + @discussion May return NO if the appropriate Facebook app is not installed and is required or an access token is + required but not available. This method does not validate the content on the receiver, so this can be checked before + building up the content. + @see validateWithError: + @result YES if the receiver can share, otherwise NO. + */ +- (BOOL)canShow; + +/*! + @abstract Begins the app group dialog from the receiver. + @result YES if the receiver was able to show the dialog, otherwise NO. + */ +- (BOOL)show; + +/*! + @abstract Validates the content on the receiver. + @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. + @return YES if the content is valid, otherwise NO. + */ +- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef; + +@end + +/*! + @abstract A delegate for FBSDKAppGroupAddDialog. + @discussion The delegate is notified with the results of the app group request as long as the application has + permissions to receive the information. For example, if the person is not signed into the containing app, the shower + may not be able to distinguish between completion of an app group request and cancellation. + */ +@protocol FBSDKAppGroupAddDialogDelegate + +/*! + @abstract Sent to the delegate when the app group request completes without error. + @param appGroupAddDialog The FBSDKAppGroupAddDialog that completed. + @param results The results from the dialog. This may be nil or empty. + */ +- (void)appGroupAddDialog:(FBSDKAppGroupAddDialog *)appGroupAddDialog didCompleteWithResults:(NSDictionary *)results; + +/*! + @abstract Sent to the delegate when the app group request encounters an error. + @param appGroupAddDialog The FBSDKAppGroupAddDialog that completed. + @param error The error. + */ +- (void)appGroupAddDialog:(FBSDKAppGroupAddDialog *)appGroupAddDialog didFailWithError:(NSError *)error; + +/*! + @abstract Sent to the delegate when the app group dialog is cancelled. + @param appGroupAddDialog The FBSDKAppGroupAddDialog that completed. + */ +- (void)appGroupAddDialogDidCancel:(FBSDKAppGroupAddDialog *)appGroupAddDialog; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m new file mode 100644 index 0000000..805ccef --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m @@ -0,0 +1,185 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAppGroupAddDialog.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareConstants.h" +#import "FBSDKShareError.h" +#import "FBSDKShareUtility.h" + +@interface FBSDKAppGroupAddDialog () +@end + +@implementation FBSDKAppGroupAddDialog +{ + FBSDKWebDialog *_webDialog; +} + +#define FBSDK_APP_GROUP_CREATE_METHOD_NAME @"game_group_create" + +#pragma mark - Class Methods + ++ (instancetype)showWithContent:(FBSDKAppGroupContent *)content + delegate:(id)delegate +{ + FBSDKAppGroupAddDialog *dialog = [[self alloc] init]; + dialog.content = content; + dialog.delegate = delegate; + [dialog show]; + return dialog; +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + if ((self = [super init])) { + _webDialog = [[FBSDKWebDialog alloc] init]; + _webDialog.delegate = self; + _webDialog.name = FBSDK_APP_GROUP_CREATE_METHOD_NAME; + } + return self; +} + +- (void)dealloc +{ + _webDialog.delegate = nil; +} + +#pragma mark - Public Methods + +- (BOOL)canShow +{ + return YES; +} + +- (BOOL)show +{ + NSError *error; + if (![self canShow]) { + error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode + message:@"App group create dialog is not available."]; + [_delegate appGroupAddDialog:self didFailWithError:error]; + return NO; + } + if (![self validateWithError:&error]) { + [_delegate appGroupAddDialog:self didFailWithError:error]; + return NO; + } + + FBSDKAppGroupContent *content = self.content; + NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:parameters setObject:content.name forKey:@"name"]; + [FBSDKInternalUtility dictionary:parameters setObject:content.groupDescription forKey:@"description"]; + [FBSDKInternalUtility dictionary:parameters + setObject:NSStringFromFBSDKAppGroupPrivacy(content.privacy) + forKey:@"privacy"]; + + _webDialog.parameters = parameters; + [_webDialog show]; + [FBSDKInternalUtility registerTransientObject:self]; + return YES; +} + +- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef +{ + FBSDKAppGroupContent *content = self.content; + if (!content) { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"content" message:nil]; + } + return NO; + } + if (![content.name length]) { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"name" message:nil]; + } + return NO; + } + if (![content.groupDescription length]) { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"groupDescription" message:nil]; + } + return NO; + } + if (errorRef != NULL) { + *errorRef = nil; + } + return YES; +} + +#pragma mark - FBSDKWebDialogDelegate + +- (void)webDialog:(FBSDKWebDialog *)webDialog didCompleteWithResults:(NSDictionary *)results +{ + if (_webDialog != webDialog) { + return; + } + NSError *error = [FBSDKShareError errorWithCode:[FBSDKTypeUtility unsignedIntegerValue:results[@"error_code"]] + message:[FBSDKTypeUtility stringValue:results[@"error_message"]]]; + [self _handleCompletionWithDialogResults:results error:error]; + [FBSDKInternalUtility unregisterTransientObject:self]; +} + +- (void)webDialog:(FBSDKWebDialog *)webDialog didFailWithError:(NSError *)error +{ + if (_webDialog != webDialog) { + return; + } + [self _handleCompletionWithDialogResults:nil error:error]; + [FBSDKInternalUtility unregisterTransientObject:self]; +} + +- (void)webDialogDidCancel:(FBSDKWebDialog *)webDialog +{ + if (_webDialog != webDialog) { + return; + } + [_delegate appGroupAddDialogDidCancel:self]; + [FBSDKInternalUtility unregisterTransientObject:self]; +} + +#pragma mark - Helper Methods + +- (void)_handleCompletionWithDialogResults:(NSDictionary *)results error:(NSError *)error +{ + if (!_delegate) { + return; + } + switch (error.code) { + case 0:{ + [_delegate appGroupAddDialog:self didCompleteWithResults:results]; + break; + } + case 4201:{ + [_delegate appGroupAddDialogDidCancel:self]; + break; + } + default:{ + [_delegate appGroupAddDialog:self didFailWithError:error]; + break; + } + } + if (error) { + return; + } else { + } +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h new file mode 100644 index 0000000..a5c5823 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h @@ -0,0 +1,68 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import +#import + +/*! + @typedef NS_ENUM(NSUInteger, FBSDKAppGroupPrivacy) + @abstract Specifies the privacy of a group. + */ +typedef NS_ENUM(NSUInteger, FBSDKAppGroupPrivacy) +{ + /*! Anyone can see the group, who's in it and what members post. */ + FBSDKAppGroupPrivacyOpen = 0, + /*! Anyone can see the group and who's in it, but only members can see posts. */ + FBSDKAppGroupPrivacyClosed, +}; + +/*! + @abstract Converts an FBSDKAppGroupPrivacy to an NSString. + */ +FBSDK_EXTERN NSString *NSStringFromFBSDKAppGroupPrivacy(FBSDKAppGroupPrivacy privacy); + +/*! + @abstract A model for creating an app group. + */ +@interface FBSDKAppGroupContent : NSObject + +/*! + @abstract The description of the group. + */ +@property (nonatomic, copy) NSString *groupDescription; + +/*! + @abstract The name of the group. + */ +@property (nonatomic, copy) NSString *name; + +/*! + @abstract The privacy for the group. + */ +@property (nonatomic, assign) FBSDKAppGroupPrivacy privacy; + +/*! + @abstract Compares the receiver to another app group content. + @param content The other content + @return YES if the receiver's values are equal to the other content's values; otherwise NO + */ +- (BOOL)isEqualToAppGroupContent:(FBSDKAppGroupContent *)content; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m new file mode 100644 index 0000000..d3f429f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m @@ -0,0 +1,109 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAppGroupContent.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareUtility.h" + +#define FBSDK_APP_GROUP_CONTENT_GROUP_DESCRIPTION_KEY @"groupDescription" +#define FBSDK_APP_GROUP_CONTENT_NAME_KEY @"name" +#define FBSDK_APP_GROUP_CONTENT_PRIVACY_KEY @"privacy" + +NSString *NSStringFromFBSDKAppGroupPrivacy(FBSDKAppGroupPrivacy privacy) +{ + switch (privacy) { + case FBSDKAppGroupPrivacyClosed:{ + return @"closed"; + } + case FBSDKAppGroupPrivacyOpen:{ + return @"open"; + } + } +} + +@implementation FBSDKAppGroupContent + +#pragma mark - Equality + +- (NSUInteger)hash +{ + NSUInteger subhashes[] = { + [_groupDescription hash], + [_name hash], + _privacy, + }; + return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if (![object isKindOfClass:[FBSDKAppGroupContent class]]) { + return NO; + } + return [self isEqualToAppGroupContent:(FBSDKAppGroupContent *)object]; +} + +- (BOOL)isEqualToAppGroupContent:(FBSDKAppGroupContent *)content +{ + return (content && + (_privacy == content.privacy) && + [FBSDKInternalUtility object:_name isEqualToObject:content.name] && + [FBSDKInternalUtility object:_groupDescription isEqualToObject:content.groupDescription]); +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [self init])) { + _groupDescription = [decoder decodeObjectOfClass:[NSString class] + forKey:FBSDK_APP_GROUP_CONTENT_GROUP_DESCRIPTION_KEY]; + _name = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_APP_GROUP_CONTENT_PRIVACY_KEY]; + _privacy = [decoder decodeIntegerForKey:FBSDK_APP_GROUP_CONTENT_PRIVACY_KEY]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:_groupDescription forKey:FBSDK_APP_GROUP_CONTENT_GROUP_DESCRIPTION_KEY]; + [encoder encodeObject:_name forKey:FBSDK_APP_GROUP_CONTENT_NAME_KEY]; + [encoder encodeInteger:_privacy forKey:FBSDK_APP_GROUP_CONTENT_PRIVACY_KEY]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + FBSDKAppGroupContent *copy = [[FBSDKAppGroupContent alloc] init]; + copy->_groupDescription = [_groupDescription copy]; + copy->_name = [_name copy]; + copy->_privacy = _privacy; + return copy; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h new file mode 100644 index 0000000..70e4e7a --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h @@ -0,0 +1,99 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@protocol FBSDKAppGroupJoinDialogDelegate; + +/*! + @abstract A dialog for joining app groups. + */ +@interface FBSDKAppGroupJoinDialog : NSObject + +/*! + @abstract Convenience method to build up an app group dialog with content and a delegate. + @param groupID The ID for the group. + @param delegate The receiver's delegate. + */ ++ (instancetype)showWithGroupID:(NSString *)groupID + delegate:(id)delegate; + +/*! + @abstract The receiver's delegate or nil if it doesn't have a delegate. + */ +@property (nonatomic, weak) id delegate; + +/*! + @abstract The ID for group. + */ +@property (nonatomic, copy) NSString *groupID; + +/*! + @abstract A Boolean value that indicates whether the receiver can initiate an app group dialog. + @discussion May return NO if the appropriate Facebook app is not installed and is required or an access token is + required but not available. This method does not validate the content on the receiver, so this can be checked before + building up the content. + @see validateWithError: + @result YES if the receiver can share, otherwise NO. + */ +- (BOOL)canShow; + +/*! + @abstract Begins the app group dialog from the receiver. + @result YES if the receiver was able to show the dialog, otherwise NO. + */ +- (BOOL)show; + +/*! + @abstract Validates the content on the receiver. + @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. + @return YES if the content is valid, otherwise NO. + */ +- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef; + +@end + +/*! + @abstract A delegate for FBSDKAppGroupJoinDialog. + @discussion The delegate is notified with the results of the app group request as long as the application has + permissions to receive the information. For example, if the person is not signed into the containing app, the shower + may not be able to distinguish between completion of an app group request and cancellation. + */ +@protocol FBSDKAppGroupJoinDialogDelegate + +/*! + @abstract Sent to the delegate when the app group request completes without error. + @param appGroupJoinDialog The FBSDKAppGroupJoinDialog that completed. + @param results The results from the dialog. This may be nil or empty. + */ +- (void)appGroupJoinDialog:(FBSDKAppGroupJoinDialog *)appGroupJoinDialog didCompleteWithResults:(NSDictionary *)results; + +/*! + @abstract Sent to the delegate when the app group request encounters an error. + @param appGroupJoinDialog The FBSDKAppGroupJoinDialog that completed. + @param error The error. + */ +- (void)appGroupJoinDialog:(FBSDKAppGroupJoinDialog *)appGroupJoinDialog didFailWithError:(NSError *)error; + +/*! + @abstract Sent to the delegate when the app group dialog is cancelled. + @param appGroupJoinDialog The FBSDKAppGroupJoinDialog that completed. + */ +- (void)appGroupJoinDialogDidCancel:(FBSDKAppGroupJoinDialog *)appGroupJoinDialog; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m new file mode 100644 index 0000000..dd7a11a --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m @@ -0,0 +1,167 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAppGroupJoinDialog.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareConstants.h" +#import "FBSDKShareError.h" +#import "FBSDKShareUtility.h" + +@interface FBSDKAppGroupJoinDialog () +@end + +@implementation FBSDKAppGroupJoinDialog +{ + FBSDKWebDialog *_webDialog; +} + +#define FBSDK_APP_GROUP_JOIN_METHOD_NAME @"game_group_join" + +#pragma mark - Class Methods + ++ (instancetype)showWithGroupID:(NSString *)groupID + delegate:(id)delegate +{ + FBSDKAppGroupJoinDialog *dialog = [[self alloc] init]; + dialog.groupID = groupID; + dialog.delegate = delegate; + [dialog show]; + return dialog; +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + if ((self = [super init])) { + _webDialog = [[FBSDKWebDialog alloc] init]; + _webDialog.delegate = self; + _webDialog.name = FBSDK_APP_GROUP_JOIN_METHOD_NAME; + } + return self; +} + +- (void)dealloc +{ + _webDialog.delegate = nil; +} + +#pragma mark - Public Methods + +- (BOOL)canShow +{ + return YES; +} + +- (BOOL)show +{ + NSError *error; + if (![self canShow]) { + error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode + message:@"App group join dialog is not available."]; + [_delegate appGroupJoinDialog:self didFailWithError:error]; + return NO; + } + if (![self validateWithError:&error]) { + [_delegate appGroupJoinDialog:self didFailWithError:error]; + return NO; + } + + NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:parameters setObject:self.groupID forKey:@"id"]; + + _webDialog.parameters = parameters; + [_webDialog show]; + [FBSDKInternalUtility registerTransientObject:self]; + return YES; +} + +- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef +{ + if (![self.groupID length]) { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"groupID" message:nil]; + } + return NO; + } + if (errorRef != NULL) { + *errorRef = nil; + } + return YES; +} + +#pragma mark - FBSDKWebDialogDelegate + +- (void)webDialog:(FBSDKWebDialog *)webDialog didCompleteWithResults:(NSDictionary *)results +{ + if (_webDialog != webDialog) { + return; + } + NSError *error = [FBSDKShareError errorWithCode:[FBSDKTypeUtility unsignedIntegerValue:results[@"error_code"]] + message:[FBSDKTypeUtility stringValue:results[@"error_message"]]]; + [self _handleCompletionWithDialogResults:results error:error]; + [FBSDKInternalUtility unregisterTransientObject:self]; +} + +- (void)webDialog:(FBSDKWebDialog *)webDialog didFailWithError:(NSError *)error +{ + if (_webDialog != webDialog) { + return; + } + [self _handleCompletionWithDialogResults:nil error:error]; + [FBSDKInternalUtility unregisterTransientObject:self]; +} + +- (void)webDialogDidCancel:(FBSDKWebDialog *)webDialog +{ + if (_webDialog != webDialog) { + return; + } + [_delegate appGroupJoinDialogDidCancel:self]; + [FBSDKInternalUtility unregisterTransientObject:self]; +} + +#pragma mark - Helper Methods + +- (void)_handleCompletionWithDialogResults:(NSDictionary *)results error:(NSError *)error +{ + if (!_delegate) { + return; + } + switch (error.code) { + case 0:{ + [_delegate appGroupJoinDialog:self didCompleteWithResults:results]; + break; + } + case 4201:{ + [_delegate appGroupJoinDialogDidCancel:self]; + break; + } + default:{ + [_delegate appGroupJoinDialog:self didFailWithError:error]; + break; + } + } + if (error) { + return; + } else { + } +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h new file mode 100644 index 0000000..1feb828 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h @@ -0,0 +1,54 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @abstract A model for app invite. + */ +@interface FBSDKAppInviteContent : NSObject + +/*! + @abstract A URL to a preview image that will be displayed with the app invite + + @discussion This is optional. If you don't include it a fallback image will be used. +*/ +@property (nonatomic, copy) NSURL *appInvitePreviewImageURL; + +/*! + @abstract An app link target that will be used as a target when the user accept the invite. + + @discussion This is a requirement. + */ +@property (nonatomic, copy) NSURL *appLinkURL; + +/*! + @deprecated Use `appInvitePreviewImageURL` instead. + */ +@property (nonatomic, copy) NSURL *previewImageURL __attribute__ ((deprecated("use appInvitePreviewImageURL instead"))); + +/*! + @abstract Compares the receiver to another app invite content. + @param content The other content + @return YES if the receiver's values are equal to the other content's values; otherwise NO + */ +- (BOOL)isEqualToAppInviteContent:(FBSDKAppInviteContent *)content; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m new file mode 100644 index 0000000..d54ff1c --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m @@ -0,0 +1,99 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAppInviteContent.h" + +#import "FBSDKCoreKit+Internal.h" + +#define FBSDK_APP_INVITE_CONTENT_APP_LINK_URL_KEY @"appLinkURL" +#define FBSDK_APP_INVITE_CONTENT_PREVIEW_IMAGE_KEY @"previewImage" + +@implementation FBSDKAppInviteContent + +- (NSURL *)previewImageURL +{ + return self.appInvitePreviewImageURL; +} + +- (void)setPreviewImageURL:(NSURL *)previewImageURL +{ + self.appInvitePreviewImageURL = previewImageURL; +} + +#pragma mark - Equality + +- (NSUInteger)hash +{ + NSUInteger subhashes[] = { + [_appLinkURL hash], + [_appInvitePreviewImageURL hash], + }; + return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if (![object isKindOfClass:[FBSDKAppInviteContent class]]) { + return NO; + } + return [self isEqualToAppInviteContent:(FBSDKAppInviteContent *)object]; +} + +- (BOOL)isEqualToAppInviteContent:(FBSDKAppInviteContent *)content +{ + return (content && + [FBSDKInternalUtility object:_appLinkURL isEqualToObject:content.appLinkURL] && + [FBSDKInternalUtility object:_appInvitePreviewImageURL isEqualToObject:content.appInvitePreviewImageURL]); +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [self init])) { + _appLinkURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_APP_INVITE_CONTENT_APP_LINK_URL_KEY]; + _appInvitePreviewImageURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_APP_INVITE_CONTENT_PREVIEW_IMAGE_KEY]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:_appLinkURL forKey:FBSDK_APP_INVITE_CONTENT_APP_LINK_URL_KEY]; + [encoder encodeObject:_appInvitePreviewImageURL forKey:FBSDK_APP_INVITE_CONTENT_PREVIEW_IMAGE_KEY]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + FBSDKAppInviteContent *copy = [[FBSDKAppInviteContent alloc] init]; + copy->_appLinkURL = [_appLinkURL copy]; + copy->_appInvitePreviewImageURL = [_appInvitePreviewImageURL copy]; + return copy; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h new file mode 100644 index 0000000..0859d4c --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h @@ -0,0 +1,111 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import +#import + +#import + +@protocol FBSDKAppInviteDialogDelegate; + +/*! + @abstract A dialog for sending App Invites. + */ +@interface FBSDKAppInviteDialog : NSObject + +/*! + @abstract Convenience method to show a FBSDKAppInviteDialog + @param viewController A UIViewController to present the dialog from. + @param content The content for the app invite. + @param delegate The receiver's delegate. +*/ ++ (instancetype)showFromViewController:(UIViewController *)viewController + withContent:(FBSDKAppInviteContent *)content + delegate:(id)delegate; + + +/*! + @deprecated use showFromViewController:withContent:delegate: instead + */ ++ (instancetype)showWithContent:(FBSDKAppInviteContent *)content delegate:(id)delegate +__attribute__ ((deprecated("use showFromViewController:withContent:delegate: instead"))); + +/*! + @abstract A UIViewController to present the dialog from. + @discussion If not specified, the top most view controller will be automatically determined as best as possible. + */ +@property (nonatomic, weak) UIViewController *fromViewController; + +/*! + @abstract The receiver's delegate or nil if it doesn't have a delegate. + */ +@property (nonatomic, weak) id delegate; + +/*! + @abstract The content for app invite. + */ +@property (nonatomic, copy) FBSDKAppInviteContent *content; + +/*! + @abstract A Boolean value that indicates whether the receiver can initiate an app invite. + @discussion May return NO if the appropriate Facebook app is not installed and is required or an access token is + required but not available. This method does not validate the content on the receiver, so this can be checked before + building up the content. + @see validateWithError: + @result YES if the receiver can show the dialog, otherwise NO. + */ +- (BOOL)canShow; + +/*! + @abstract Begins the app invite from the receiver. + @result YES if the receiver was able to show the dialog, otherwise NO. + */ +- (BOOL)show; + +/*! + @abstract Validates the content on the receiver. + @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. + @return YES if the content is valid, otherwise NO. + */ +- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef; + +@end + +/*! + @abstract A delegate for FBSDKAppInviteDialog. + @discussion The delegate is notified with the results of the app invite as long as the application has permissions to + receive the information. For example, if the person is not signed into the containing app, the shower may not be able + to distinguish between completion of an app invite and cancellation. + */ +@protocol FBSDKAppInviteDialogDelegate + +/*! + @abstract Sent to the delegate when the app invite completes without error. + @param appInviteDialog The FBSDKAppInviteDialog that completed. + @param results The results from the dialog. This may be nil or empty. + */ +- (void)appInviteDialog:(FBSDKAppInviteDialog *)appInviteDialog didCompleteWithResults:(NSDictionary *)results; + +/*! + @abstract Sent to the delegate when the app invite encounters an error. + @param appInviteDialog The FBSDKAppInviteDialog that completed. + @param error The error. + */ +- (void)appInviteDialog:(FBSDKAppInviteDialog *)appInviteDialog didFailWithError:(NSError *)error; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m new file mode 100644 index 0000000..15fdcc6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m @@ -0,0 +1,197 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKAppInviteDialog.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareConstants.h" +#import "FBSDKShareDefines.h" +#import "FBSDKShareError.h" +#import "FBSDKShareUtility.h" + +@implementation FBSDKAppInviteDialog + +#define FBSDK_APP_INVITE_METHOD_MIN_VERSION @"20140410" +#define FBSDK_APP_INVITE_METHOD_NAME @"appinvites" + ++ (void)initialize +{ + if ([FBSDKAppInviteDialog class] == self) { + [FBSDKInternalUtility checkRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_FACEBOOK]; + // ensure that we have updated the dialog configs if we haven't already + [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:NULL]; + } +} + +#pragma mark - Class Methods + + ++ (instancetype)showWithContent:(FBSDKAppInviteContent *)content delegate:(id)delegate +{ + return [self showFromViewController:nil withContent:content delegate:delegate]; +} + ++ (instancetype)showFromViewController:(UIViewController *)viewController + withContent:(FBSDKAppInviteContent *)content + delegate:(id)delegate; +{ + FBSDKAppInviteDialog *appInvite = [[self alloc] init]; + appInvite.content = content; + appInvite.delegate = delegate; + appInvite.fromViewController = viewController; + [appInvite show]; + return appInvite; +} + +#pragma mark - Public Methods + +- (BOOL)canShow +{ + return YES; +} + +- (BOOL)show +{ + NSError *error; + if (![self canShow]) { + error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode + message:@"App invite dialog is not available."]; + [self _invokeDelegateDidFailWithError:error]; + return NO; + } + if (![self validateWithError:&error]) { + [self _invokeDelegateDidFailWithError:error]; + return NO; + } + + NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:parameters setObject:self.content.appLinkURL forKey:@"app_link_url"]; + [FBSDKInternalUtility dictionary:parameters setObject:self.content.appInvitePreviewImageURL forKey:@"preview_image_url"]; + FBSDKBridgeAPIRequest *webBridgeRequest = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeWeb + scheme:FBSDK_SHARE_JS_DIALOG_SCHEME + methodName:FBSDK_APP_INVITE_METHOD_NAME + methodVersion:nil + parameters:parameters + userInfo:nil]; + FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { + [self _handleCompletionWithDialogResults:response.responseParameters error:response.error]; + }; + + [self _logDialogShow]; + + FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; + BOOL useSafariViewController = [configuration useSafariViewControllerForDialogName:FBSDKDialogConfigurationNameAppInvite]; + if ([self _canShowNative]) { + FBSDKBridgeAPIRequest *nativeRequest = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeNative + scheme:FBSDK_CANOPENURL_FACEBOOK + methodName:FBSDK_APP_INVITE_METHOD_NAME + methodVersion:FBSDK_APP_INVITE_METHOD_MIN_VERSION + parameters:parameters + userInfo:nil]; + void (^nativeCompletionBlock)(FBSDKBridgeAPIResponse *) = ^(FBSDKBridgeAPIResponse *response) { + if (response.error.code == FBSDKAppVersionUnsupportedErrorCode) { + [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:webBridgeRequest + useSafariViewController:useSafariViewController + fromViewController:self.fromViewController + completionBlock:completionBlock]; + } else { + completionBlock(response); + } + }; + [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:nativeRequest + useSafariViewController:useSafariViewController + fromViewController:self.fromViewController + completionBlock:nativeCompletionBlock]; + } else { + [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:webBridgeRequest + useSafariViewController:useSafariViewController + fromViewController:self.fromViewController + completionBlock:completionBlock]; + } + return YES; +} + +- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef +{ + return [FBSDKShareUtility validateAppInviteContent:self.content error:errorRef]; +} + +#pragma mark - Helper Methods + +- (BOOL)_canShowNative +{ + FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; + BOOL useNativeDialog = [configuration useNativeDialogForDialogName:FBSDKDialogConfigurationNameAppInvite]; + return (useNativeDialog && [FBSDKInternalUtility isFacebookAppInstalled]); +} + +- (void)_handleCompletionWithDialogResults:(NSDictionary *)results error:(NSError *)error +{ + if (error) { + [self _invokeDelegateDidFailWithError:error]; + } else { + [self _invokeDelegateDidCompleteWithResults:results]; + } +} + +- (void)_invokeDelegateDidCompleteWithResults:(NSDictionary *)results +{ + NSDictionary * parameters =@{ + FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Completed, + }; + + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventAppInviteShareDialogResult + valueToSum:nil + parameters:parameters + accessToken:[FBSDKAccessToken currentAccessToken]]; + + if (!_delegate) { + return; + } + + [_delegate appInviteDialog:self didCompleteWithResults:[results copy]]; +} + +- (void)_invokeDelegateDidFailWithError:(NSError *)error +{ + NSDictionary * parameters =@{ + FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Failed, + FBSDKAppEventParameterDialogErrorMessage : [NSString stringWithFormat:@"%@", error] + }; + + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventAppInviteShareDialogResult + valueToSum:nil + parameters:parameters + accessToken:[FBSDKAccessToken currentAccessToken]]; + + if (!_delegate) { + return; + } + + [_delegate appInviteDialog:self didFailWithError:error]; +} + +- (void)_logDialogShow +{ + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventAppInviteShareDialogShow + valueToSum:nil + parameters:nil + accessToken:[FBSDKAccessToken currentAccessToken]]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h new file mode 100644 index 0000000..13edc06 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h @@ -0,0 +1,131 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @typedef NS_ENUM(NSUInteger, FBSDKGameRequestActionType) + @abstract Additional context about the nature of the request. + */ +typedef NS_ENUM(NSUInteger, FBSDKGameRequestActionType) +{ + /*! No action type */ + FBSDKGameRequestActionTypeNone = 0, + /*! Send action type: The user is sending an object to the friends. */ + FBSDKGameRequestActionTypeSend, + /*! Ask For action type: The user is asking for an object from friends. */ + FBSDKGameRequestActionTypeAskFor, + /*! Turn action type: It is the turn of the friends to play against the user in a match. (no object) */ + FBSDKGameRequestActionTypeTurn, +}; + +/*! + @typedef NS_ENUM(NSUInteger, FBSDKGameRequestFilters) + @abstract Filter for who can be displayed in the multi-friend selector. + */ +typedef NS_ENUM(NSUInteger, FBSDKGameRequestFilter) +{ + /*! No filter, all friends can be displayed. */ + FBSDKGameRequestFilterNone = 0, + /*! Friends using the app can be displayed. */ + FBSDKGameRequestFilterAppUsers, + /*! Friends not using the app can be displayed. */ + FBSDKGameRequestFilterAppNonUsers, +}; + +/*! + @abstract A model for a game request. + */ +@interface FBSDKGameRequestContent : NSObject + +/*! + @abstract Used when defining additional context about the nature of the request. + @discussion The parameter 'objectID' is required if the action type is either + 'FBSDKGameRequestSendActionType' or 'FBSDKGameRequestAskForActionType'. + @seealso objectID + */ +@property (nonatomic, assign) FBSDKGameRequestActionType actionType; + +/*! + @abstract Compares the receiver to another game request content. + @param content The other content + @return YES if the receiver's values are equal to the other content's values; otherwise NO + */ +- (BOOL)isEqualToGameRequestContent:(FBSDKGameRequestContent *)content; + +/*! + @abstract Additional freeform data you may pass for tracking. This will be stored as part of + the request objects created. The maximum length is 255 characters. + */ +@property (nonatomic, copy) NSString *data; + +/*! + @abstract This controls the set of friends someone sees if a multi-friend selector is shown. + It is FBSDKGameRequestNoFilter by default, meaning that all friends can be shown. + If specify as FBSDKGameRequestAppUsersFilter, only friends who use the app will be shown. + On the other hands, use FBSDKGameRequestAppNonUsersFilter to filter only friends who do not use the app. + @discussion The parameter name is preserved to be consistent with the counter part on desktop. + */ +@property (nonatomic, assign) FBSDKGameRequestFilter filters; + +/*! + @abstract A plain-text message to be sent as part of the request. This text will surface in the App Center view + of the request, but not on the notification jewel. Required parameter. + */ +@property (nonatomic, copy) NSString *message; + +/*! + @abstract The Open Graph object ID of the object being sent. + @seealso actionType + */ +@property (nonatomic, copy) NSString *objectID; + +/*! + @abstract An array of user IDs, usernames or invite tokens (NSString) of people to send request. + @discussion These may or may not be a friend of the sender. If this is specified by the app, + the sender will not have a choice of recipients. If not, the sender will see a multi-friend selector + + This is equivalent to the "to" parameter when using the web game request dialog. + */ +@property (nonatomic, copy) NSArray *recipients; + +/*! + @abstract An array of user IDs that will be included in the dialog as the first suggested friends. + Cannot be used together with filters. + @discussion This is equivalent to the "suggestions" parameter when using the web game request dialog. +*/ +@property (nonatomic, copy) NSArray *recipientSuggestions; + +/*! + @deprecated Use `recipientSuggestions` instead. +*/ +@property (nonatomic, copy) NSArray *suggestions __attribute__ ((deprecated("use recipientSuggestions instead"))); + +/*! + @abstract The title for the dialog. + */ +@property (nonatomic, copy) NSString *title; + +/*! + @deprecated Use `recipients` instead. + */ +@property (nonatomic, copy) NSArray *to __attribute__ ((deprecated("use recipients instead"))); + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m new file mode 100644 index 0000000..c2f629e --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m @@ -0,0 +1,164 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKGameRequestContent.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareUtility.h" + +#define FBSDK_APP_REQUEST_CONTENT_TO_KEY @"to" +#define FBSDK_APP_REQUEST_CONTENT_MESSAGE_KEY @"message" +#define FBSDK_APP_REQUEST_CONTENT_ACTION_TYPE_KEY @"actionType" +#define FBSDK_APP_REQUEST_CONTENT_OBJECT_ID_KEY @"objectID" +#define FBSDK_APP_REQUEST_CONTENT_FILTERS_KEY @"filters" +#define FBSDK_APP_REQUEST_CONTENT_SUGGESTIONS_KEY @"suggestions" +#define FBSDK_APP_REQUEST_CONTENT_DATA_KEY @"data" +#define FBSDK_APP_REQUEST_CONTENT_TITLE_KEY @"title" + +@implementation FBSDKGameRequestContent + +#pragma mark - Properties + +-(void)setRecipients:(NSArray *)recipients +{ + [FBSDKShareUtility assertCollection:recipients ofClass:[NSString class] name:@"recipients"]; + if (![_recipients isEqual:recipients]) { + _recipients = [recipients copy]; + } +} + +- (void)setRecipientSuggestions:(NSArray *)recipientSuggestions +{ + [FBSDKShareUtility assertCollection:recipientSuggestions ofClass:[NSString class] name:@"recipientSuggestions"]; + if (![_recipientSuggestions isEqual:recipientSuggestions]) { + _recipientSuggestions = [recipientSuggestions copy]; + } +} + +- (NSArray *)suggestions +{ + return self.recipientSuggestions; +} + +- (void)setSuggestions:(NSArray *)suggestions +{ + self.recipientSuggestions = suggestions; +} + +- (NSArray *)to +{ + return self.recipients; +} + +- (void)setTo:(NSArray *)to +{ + self.recipients = to; +} + +#pragma mark - Equality + +- (NSUInteger)hash +{ + NSUInteger subhashes[] = { + [FBSDKMath hashWithInteger:_actionType], + [_data hash], + [FBSDKMath hashWithInteger:_filters], + [_message hash], + [_objectID hash], + [_recipientSuggestions hash], + [_title hash], + [_recipients hash], + }; + return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if (![object isKindOfClass:[FBSDKGameRequestContent class]]) { + return NO; + } + return [self isEqualToGameRequestContent:(FBSDKGameRequestContent *)object]; +} + +- (BOOL)isEqualToGameRequestContent:(FBSDKGameRequestContent *)content +{ + return (content && + _actionType == content.actionType && + _filters == content.filters && + [FBSDKInternalUtility object:_data isEqualToObject:content.data] && + [FBSDKInternalUtility object:_message isEqualToObject:content.message] && + [FBSDKInternalUtility object:_objectID isEqualToObject:content.objectID] && + [FBSDKInternalUtility object:_recipientSuggestions isEqualToObject:content.recipientSuggestions] && + [FBSDKInternalUtility object:_title isEqualToObject:content.title] && + [FBSDKInternalUtility object:_recipients isEqualToObject:content.recipients]); +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [self init])) { + _actionType = [decoder decodeIntegerForKey:FBSDK_APP_REQUEST_CONTENT_ACTION_TYPE_KEY]; + _data = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_APP_REQUEST_CONTENT_DATA_KEY]; + _filters = [decoder decodeIntegerForKey:FBSDK_APP_REQUEST_CONTENT_FILTERS_KEY]; + _message = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_APP_REQUEST_CONTENT_MESSAGE_KEY]; + _objectID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_APP_REQUEST_CONTENT_OBJECT_ID_KEY]; + _recipientSuggestions = [decoder decodeObjectOfClass:[NSArray class] forKey:FBSDK_APP_REQUEST_CONTENT_SUGGESTIONS_KEY]; + _title = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_APP_REQUEST_CONTENT_TITLE_KEY]; + _recipients = [decoder decodeObjectOfClass:[NSArray class] forKey:FBSDK_APP_REQUEST_CONTENT_TO_KEY]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeInteger:_actionType forKey:FBSDK_APP_REQUEST_CONTENT_ACTION_TYPE_KEY]; + [encoder encodeObject:_data forKey:FBSDK_APP_REQUEST_CONTENT_DATA_KEY]; + [encoder encodeInteger:_filters forKey:FBSDK_APP_REQUEST_CONTENT_FILTERS_KEY]; + [encoder encodeObject:_message forKey:FBSDK_APP_REQUEST_CONTENT_MESSAGE_KEY]; + [encoder encodeObject:_objectID forKey:FBSDK_APP_REQUEST_CONTENT_OBJECT_ID_KEY]; + [encoder encodeObject:_recipientSuggestions forKey:FBSDK_APP_REQUEST_CONTENT_SUGGESTIONS_KEY]; + [encoder encodeObject:_title forKey:FBSDK_APP_REQUEST_CONTENT_TITLE_KEY]; + [encoder encodeObject:_recipients forKey:FBSDK_APP_REQUEST_CONTENT_TO_KEY]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + FBSDKGameRequestContent *copy = [[FBSDKGameRequestContent alloc] init]; + copy->_actionType = _actionType; + copy->_data = [_data copy]; + copy->_filters = _filters; + copy->_message = [_message copy]; + copy->_objectID = [_objectID copy]; + copy->_recipientSuggestions = [_recipientSuggestions copy]; + copy->_title = [_title copy]; + copy->_recipients = [_recipients copy]; + return copy; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h new file mode 100644 index 0000000..2f5acc5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h @@ -0,0 +1,105 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +@protocol FBSDKGameRequestDialogDelegate; + +/*! + @abstract A dialog for sending game requests. + */ +@interface FBSDKGameRequestDialog : NSObject + +/*! + @abstract Convenience method to build up a game request with content and a delegate. + @param content The content for the game request. + @param delegate The receiver's delegate. + */ ++ (instancetype)showWithContent:(FBSDKGameRequestContent *)content delegate:(id)delegate; + +/*! + @abstract The receiver's delegate or nil if it doesn't have a delegate. + */ +@property (nonatomic, weak) id delegate; + +/*! + @abstract The content for game request. + */ +@property (nonatomic, copy) FBSDKGameRequestContent *content; + +/*! + @abstract Specifies whether frictionless requests are enabled. + */ +@property (nonatomic, assign) BOOL frictionlessRequestsEnabled; + +/*! + @abstract A Boolean value that indicates whether the receiver can initiate a game request. + @discussion May return NO if the appropriate Facebook app is not installed and is required or an access token is + required but not available. This method does not validate the content on the receiver, so this can be checked before + building up the content. + @see validateWithError: + @result YES if the receiver can share, otherwise NO. + */ +- (BOOL)canShow; + +/*! + @abstract Begins the game request from the receiver. + @result YES if the receiver was able to show the dialog, otherwise NO. + */ +- (BOOL)show; + +/*! + @abstract Validates the content on the receiver. + @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. + @return YES if the content is valid, otherwise NO. + */ +- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef; + +@end + +/*! + @abstract A delegate for FBSDKGameRequestDialog. + @discussion The delegate is notified with the results of the game request as long as the application has permissions to + receive the information. For example, if the person is not signed into the containing app, the shower may not be able + to distinguish between completion of a game request and cancellation. + */ +@protocol FBSDKGameRequestDialogDelegate + +/*! + @abstract Sent to the delegate when the game request completes without error. + @param gameRequestDialog The FBSDKGameRequestDialog that completed. + @param results The results from the dialog. This may be nil or empty. + */ +- (void)gameRequestDialog:(FBSDKGameRequestDialog *)gameRequestDialog didCompleteWithResults:(NSDictionary *)results; + +/*! + @abstract Sent to the delegate when the game request encounters an error. + @param gameRequestDialog The FBSDKGameRequestDialog that completed. + @param error The error. + */ +- (void)gameRequestDialog:(FBSDKGameRequestDialog *)gameRequestDialog didFailWithError:(NSError *)error; + +/*! + @abstract Sent to the delegate when the game request dialog is cancelled. + @param gameRequestDialog The FBSDKGameRequestDialog that completed. + */ +- (void)gameRequestDialogDidCancel:(FBSDKGameRequestDialog *)gameRequestDialog; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m new file mode 100644 index 0000000..11932ae --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m @@ -0,0 +1,265 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKGameRequestDialog.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKGameRequestFrictionlessRecipientCache.h" +#import "FBSDKShareConstants.h" +#import "FBSDKShareError.h" +#import "FBSDKShareUtility.h" + +@interface FBSDKGameRequestDialog () +@end + +@implementation FBSDKGameRequestDialog +{ + BOOL _dialogIsFrictionless; + FBSDKWebDialog *_webDialog; +} + +#define FBSDK_APP_REQUEST_METHOD_NAME @"apprequests" + +#pragma mark - Class Methods + +static FBSDKGameRequestFrictionlessRecipientCache *_recipientCache = nil; + ++ (void)initialize +{ + if (self == [FBSDKGameRequestDialog class]) { + _recipientCache = [[FBSDKGameRequestFrictionlessRecipientCache alloc] init]; + } +} + ++ (instancetype)showWithContent:(FBSDKGameRequestContent *)content delegate:(id)delegate +{ + FBSDKGameRequestDialog *dialog = [[self alloc] init]; + dialog.content = content; + dialog.delegate = delegate; + [dialog show]; + return dialog; +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + if ((self = [super init])) { + _webDialog = [[FBSDKWebDialog alloc] init]; + _webDialog.delegate = self; + _webDialog.name = FBSDK_APP_REQUEST_METHOD_NAME; + } + return self; +} + +- (void)dealloc +{ + _webDialog.delegate = nil; +} + +#pragma mark - Public Methods + +- (BOOL)canShow +{ + return YES; +} + +- (BOOL)show +{ + NSError *error; + if (![self canShow]) { + error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode + message:@"Game request dialog is not available."]; + [_delegate gameRequestDialog:self didFailWithError:error]; + return NO; + } + if (![self validateWithError:&error]) { + [_delegate gameRequestDialog:self didFailWithError:error]; + return NO; + } + + FBSDKGameRequestContent *content = self.content; + + if (error) { + return NO; + } + + NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:parameters setObject:[content.recipients componentsJoinedByString:@","] forKey:@"to"]; + [FBSDKInternalUtility dictionary:parameters setObject:content.message forKey:@"message"]; + [FBSDKInternalUtility dictionary:parameters setObject:[self _actionTypeNameForActionType:content.actionType] forKey:@"action_type"]; + [FBSDKInternalUtility dictionary:parameters setObject:content.objectID forKey:@"object_id"]; + [FBSDKInternalUtility dictionary:parameters setObject:[self _filtersNameForFilters:content.filters] forKey:@"filters"]; + [FBSDKInternalUtility dictionary:parameters setObject:[content.recipientSuggestions componentsJoinedByString:@","] forKey:@"suggestions"]; + [FBSDKInternalUtility dictionary:parameters setObject:content.data forKey:@"data"]; + [FBSDKInternalUtility dictionary:parameters setObject:content.title forKey:@"title"]; + + // check if we are sending to a specific set of recipients. if we are and they are all frictionless recipients, we + // can perform this action without displaying the web dialog + _webDialog.deferVisibility = NO; + NSArray *recipients = content.recipients; + if (_frictionlessRequestsEnabled && recipients) { + // specify these parameters to get the frictionless recipients from the dialog when it is presented + parameters[@"frictionless"] = @YES; + parameters[@"get_frictionless_recipients"] = @YES; + + _dialogIsFrictionless = YES; + if ([_recipientCache recipientsAreFrictionless:recipients]) { + _webDialog.deferVisibility = YES; + } + } + + _webDialog.parameters = parameters; + [_webDialog show]; + [FBSDKInternalUtility registerTransientObject:self]; + return YES; +} + +- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef +{ + return [FBSDKShareUtility validateGameRequestContent:self.content error:errorRef]; +} + +#pragma mark - FBSDKWebDialogDelegate + +- (void)webDialog:(FBSDKWebDialog *)webDialog didCompleteWithResults:(NSDictionary *)results +{ + if (_webDialog != webDialog) { + return; + } + if (_dialogIsFrictionless && results) { + [_recipientCache updateWithResults:results]; + } + [self _cleanUp]; + + NSError *error = [FBSDKShareError errorWithCode:[FBSDKTypeUtility unsignedIntegerValue:results[@"error_code"]] + message:[FBSDKTypeUtility stringValue:results[@"error_message"]]]; + if (!error.code) { + // reformat "to[x]" keys into an array. + int counter = 0; + NSMutableArray *toArray = [NSMutableArray array]; + while (true) { + NSString *key = [NSString stringWithFormat:@"to[%d]", counter++]; + if (results[key]) { + [toArray addObject:results[key]]; + } else { + break; + } + } + if (toArray.count) { + NSMutableDictionary *mutableResults = [results mutableCopy]; + mutableResults[@"to"] = toArray; + results = mutableResults; + } + } + [self _handleCompletionWithDialogResults:results error:error]; + [FBSDKInternalUtility unregisterTransientObject:self]; +} + +- (void)webDialog:(FBSDKWebDialog *)webDialog didFailWithError:(NSError *)error +{ + if (_webDialog != webDialog) { + return; + } + [self _cleanUp]; + [self _handleCompletionWithDialogResults:nil error:error]; + [FBSDKInternalUtility unregisterTransientObject:self]; +} + +- (void)webDialogDidCancel:(FBSDKWebDialog *)webDialog +{ + if (_webDialog != webDialog) { + return; + } + [self _cleanUp]; + [_delegate gameRequestDialogDidCancel:self]; + [FBSDKInternalUtility unregisterTransientObject:self]; +} + +#pragma mark - Helper Methods + +- (void)_cleanUp +{ + _dialogIsFrictionless = NO; +} + +- (void)_handleCompletionWithDialogResults:(NSDictionary *)results error:(NSError *)error +{ + if (!_delegate) { + return; + } + switch (error.code) { + case 0:{ + [_delegate gameRequestDialog:self didCompleteWithResults:results]; + break; + } + case 4201:{ + [_delegate gameRequestDialogDidCancel:self]; + break; + } + default:{ + [_delegate gameRequestDialog:self didFailWithError:error]; + break; + } + } + if (error) { + return; + } else { + } +} + +- (NSString *)_actionTypeNameForActionType:(FBSDKGameRequestActionType)actionType +{ + switch (actionType) { + case FBSDKGameRequestActionTypeNone:{ + return nil; + } + case FBSDKGameRequestActionTypeSend:{ + return @"send"; + } + case FBSDKGameRequestActionTypeAskFor:{ + return @"askfor"; + } + case FBSDKGameRequestActionTypeTurn:{ + return @"turn"; + } + default:{ + return nil; + } + } +} + +- (NSString *)_filtersNameForFilters:(FBSDKGameRequestFilter)filters +{ + switch (filters) { + case FBSDKGameRequestFilterNone:{ + return nil; + } + case FBSDKGameRequestFilterAppUsers:{ + return @"app_users"; + } + case FBSDKGameRequestFilterAppNonUsers:{ + return @"app_non_users"; + } + default:{ + return nil; + } + } +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h new file mode 100644 index 0000000..0b01c4e --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h @@ -0,0 +1,42 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import +#import + +/*! + @abstract A button to like an object. + @discussion Tapping the receiver will invoke an API call to the Facebook app through a fast-app-switch that allows + the object to be liked. Upon return to the calling app, the view will update with the new state. If the + currentAccessToken has "publish_actions" permission and the object is an Open Graph object, then the like can happen + seamlessly without the fast-app-switch. + */ +@interface FBSDKLikeButton : FBSDKButton + +/*! + @abstract If YES, a sound is played when the receiver is toggled. + + @default YES + */ +@property (nonatomic, assign, getter = isSoundEnabled) BOOL soundEnabled; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m new file mode 100644 index 0000000..150cece --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m @@ -0,0 +1,294 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLikeButton.h" +#import "FBSDKLikeButton+Internal.h" + +#import "FBSDKCheckmarkIcon.h" +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKLikeActionController.h" +#import "FBSDKLikeControl+Internal.h" + +#define FBSDK_LIKE_BUTTON_ANIMATION_DURATION 0.2 +#define FBSDK_LIKE_BUTTON_ANIMATION_SPRING_DAMPING 0.3 +#define FBSDK_LIKE_BUTTON_ANIMATION_SPRING_VELOCITY 0.2 + +@implementation FBSDKLikeButton +{ + BOOL _isExplicitlyDisabled; + FBSDKLikeActionController *_likeActionController; + NSString *_objectID; + FBSDKLikeObjectType _objectType; +} + +#pragma mark - Class Methods + ++ (void)initialize +{ + if ([FBSDKLikeButton class] == self) { + // ensure that we have updated the dialog configs if we haven't already + [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:NULL]; + } +} + +#pragma mark - Object Lifecycle + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [_likeActionController endContentAccess]; +} + +#pragma mark - Properties + +- (FBSDKLikeActionController *)likeActionController +{ + [self _ensureLikeActionController:NO]; + return _likeActionController; +} + +- (void)setLikeActionController:(FBSDKLikeActionController *)likeActionController +{ + [self _setLikeActionController:likeActionController]; +} + +- (NSString *)objectID +{ + return _objectID; +} + +- (void)setObjectID:(NSString *)objectID +{ + if (![_objectID isEqualToString:objectID]) { + _objectID = objectID; + [self checkImplicitlyDisabled]; + [self _resetLikeActionController]; + } +} + +- (FBSDKLikeObjectType)objectType +{ + return _objectType; +} + +- (void)setObjectType:(FBSDKLikeObjectType)objectType +{ + if (_objectType != objectType) { + _objectType = objectType; + [self _resetLikeActionController]; + } +} + +#pragma mark - Layout + +- (void)layoutSubviews +{ + [self _ensureLikeActionController:YES]; + [super layoutSubviews]; +} + +#pragma mark - FBSDKButtonImpressionTracking + +- (NSDictionary *)analyticsParameters +{ + UIView *superview = self.superview; + while (superview && ![superview isKindOfClass:[FBSDKLikeControl class]]) { + superview = superview.superview; + } + if ([superview isKindOfClass:[FBSDKLikeControl class]]) { + return ((FBSDKLikeControl *)superview).analyticsParameters; + } + return @{ + @"object_id": (self.objectID ?: [NSNull null]), + @"object_type": (NSStringFromFBSDKLikeObjectType(self.objectType) ?: [NSNull null]), + @"sound_enabled": @(self.soundEnabled), + }; +} + +- (NSString *)impressionTrackingEventName +{ + return FBSDKAppEventNameFBSDKLikeButtonImpression; +} + +- (NSString *)impressionTrackingIdentifier +{ + return self.objectID; +} + +#pragma mark - FBSDKButton + +- (void)configureButton +{ + self.soundEnabled = YES; + + NSString *title = + NSLocalizedStringWithDefaultValue(@"LikeButton.Like", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Like", + @"The label for the FBSDKLikeButton when the object is not currently liked."); + NSString *selectedTitle = + NSLocalizedStringWithDefaultValue(@"LikeButton.Liked", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Liked", + @"The label for the FBSDKLikeButton when the object is currently liked."); + + UIColor *backgroundColor = [self defaultBackgroundColor]; + UIColor *highlightedColor = [self defaultHighlightedColor]; + UIColor *selectedColor = [self defaultSelectedColor]; + UIColor *selectedHighlightedColor = [UIColor colorWithRed:99.0/255.0 green:119.0/255.0 blue:178.0/255.0 alpha:1.0]; + + [self configureWithIcon:nil + title:title + backgroundColor:backgroundColor + highlightedColor:highlightedColor + selectedTitle:selectedTitle + selectedIcon:[[FBSDKCheckmarkIcon alloc] init] + selectedColor:selectedColor + selectedHighlightedColor:selectedHighlightedColor]; + + [self addTarget:self action:@selector(_handleTap:) forControlEvents:UIControlEventTouchUpInside]; + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self + selector:@selector(_likeActionControllerDidDisableNotification:) + name:FBSDKLikeActionControllerDidDisableNotification + object:nil]; + [nc addObserver:self + selector:@selector(_likeActionControllerDidResetNotification:) + name:FBSDKLikeActionControllerDidResetNotification + object:nil]; + [nc addObserver:self + selector:@selector(_likeActionControllerDidUpdateNotification:) + name:FBSDKLikeActionControllerDidUpdateNotification + object:nil]; +} + +- (BOOL)isImplicitlyDisabled +{ + return !self.objectID || [FBSDKLikeActionController isDisabled]; +} + +#pragma mark - Helper Methods + +- (void)_ensureLikeActionController:(BOOL)notifyKVO +{ + if (!_likeActionController) { + FBSDKLikeActionController *likeActionController = [FBSDKLikeActionController likeActionControllerForObjectID:_objectID + objectType:_objectType]; + if (notifyKVO) { + self.likeActionController = likeActionController; + } else { + [self _setLikeActionController:likeActionController]; + } + [likeActionController endContentAccess]; + self.selected = _likeActionController.objectIsLiked; + } +} + +- (void)_handleTap:(FBSDKLikeButton *)likeButton +{ + [self logTapEventWithEventName:FBSDKAppEventNameFBSDKLikeButtonDidTap parameters:[self analyticsParameters]]; + [self _ensureLikeActionController:YES]; + [_likeActionController toggleLikeWithSoundEnabled:self.soundEnabled + analyticsParameters:[self analyticsParameters] + fromViewController:[FBSDKInternalUtility viewControllerforView:self]]; +} + +- (void)_like:(id)sender +{ + [_likeActionController toggleLikeWithSoundEnabled:_soundEnabled + analyticsParameters:[self analyticsParameters] + fromViewController:[FBSDKInternalUtility viewControllerforView:self]]; +} + +- (void)_likeActionControllerDidDisableNotification:(NSNotification *)notification +{ + [self checkImplicitlyDisabled]; +} + +- (void)_likeActionControllerDidResetNotification:(NSNotification *)notification +{ + [self _resetLikeActionController]; + [self _ensureLikeActionController:YES]; +} + +- (void)_likeActionControllerDidUpdateNotification:(NSNotification *)notification +{ + [self _ensureLikeActionController:YES]; + FBSDKLikeActionController *likeActionController = (FBSDKLikeActionController *)notification.object; + NSString *objectID = likeActionController.objectID; + if ([self.objectID isEqualToString:objectID]) { + BOOL animated = [notification.userInfo[FBSDKLikeActionControllerAnimatedKey] boolValue]; + [self _setSelected:likeActionController.objectIsLiked animated:animated]; + } +} + +- (void)_resetLikeActionController +{ + self.likeActionController = nil; + [self setNeedsLayout]; +} + +- (void)_setLikeActionController:(FBSDKLikeActionController *)likeActionController +{ + if (_likeActionController != likeActionController) { + [_likeActionController endContentAccess]; + _likeActionController = likeActionController; + [_likeActionController beginContentAccess]; + } +} + +- (void)_setSelected:(BOOL)selected animated:(BOOL)animated +{ + if (self.selected != selected) { + if (animated) { + CFTimeInterval duration = FBSDK_LIKE_BUTTON_ANIMATION_DURATION; + UIViewAnimationOptions options = UIViewAnimationOptionBeginFromCurrentState; + UIImageView *imageView = self.imageView; + imageView.frame = [self imageRectForContentRect:UIEdgeInsetsInsetRect(self.bounds, self.contentEdgeInsets)]; + [UIView animateWithDuration:duration delay:0.0 options:options animations:^{ + CGPoint iconImageViewCenter = imageView.center; + imageView.frame = CGRectMake(iconImageViewCenter.x, iconImageViewCenter.y, 0.0, 0.0); + } completion:^(BOOL animateOutFinished) { + self.selected = selected; + CGPoint iconImageViewCenter = imageView.center; + imageView.frame = CGRectMake(iconImageViewCenter.x, iconImageViewCenter.y, 0.0, 0.0); + + void(^animations)(void) = ^{ + imageView.frame = [self imageRectForContentRect:UIEdgeInsetsInsetRect(self.bounds, self.contentEdgeInsets)]; + }; + if ([UIView respondsToSelector:@selector(animateWithDuration:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:)]) { + [UIView animateWithDuration:(duration * 2) + delay:0.0 + usingSpringWithDamping:FBSDK_LIKE_BUTTON_ANIMATION_SPRING_DAMPING + initialSpringVelocity:FBSDK_LIKE_BUTTON_ANIMATION_SPRING_VELOCITY + options:options + animations:animations + completion:NULL]; + } else { + [UIView animateWithDuration:(duration * 2) + delay:0.0 + options:options + animations:animations + completion:NULL]; + } + }]; + } else { + self.selected = selected; + } + } +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h new file mode 100644 index 0000000..bbc88f2 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h @@ -0,0 +1,139 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import +#import + +/*! + @typedef NS_ENUM (NSUInteger, FBSDKLikeControlAuxiliaryPosition) + + @abstract Specifies the position of the auxiliary view relative to the like button. + */ +typedef NS_ENUM(NSUInteger, FBSDKLikeControlAuxiliaryPosition) +{ + /*! The auxiliary view is inline with the like button. */ + FBSDKLikeControlAuxiliaryPositionInline, + /*! The auxiliary view is above the like button. */ + FBSDKLikeControlAuxiliaryPositionTop, + /*! The auxiliary view is below the like button. */ + FBSDKLikeControlAuxiliaryPositionBottom, +}; + +/*! + @abstract Converts an FBSDKLikeControlAuxiliaryPosition to an NSString. + */ +FBSDK_EXTERN NSString *NSStringFromFBSDKLikeControlAuxiliaryPosition(FBSDKLikeControlAuxiliaryPosition auxiliaryPosition); + +/*! + @typedef NS_ENUM(NSUInteger, FBSDKLikeControlHorizontalAlignment) + + @abstract Specifies the horizontal alignment for FBSDKLikeControlStyleStandard with + FBSDKLikeControlAuxiliaryPositionTop or FBSDKLikeControlAuxiliaryPositionBottom. + */ +typedef NS_ENUM(NSUInteger, FBSDKLikeControlHorizontalAlignment) +{ + /*! The subviews are left aligned. */ + FBSDKLikeControlHorizontalAlignmentLeft, + /*! The subviews are center aligned. */ + FBSDKLikeControlHorizontalAlignmentCenter, + /*! The subviews are right aligned. */ + FBSDKLikeControlHorizontalAlignmentRight, +}; + +/*! + @abstract Converts an FBSDKLikeControlHorizontalAlignment to an NSString. + */ +FBSDK_EXTERN NSString *NSStringFromFBSDKLikeControlHorizontalAlignment(FBSDKLikeControlHorizontalAlignment horizontalAlignment); + +/*! + @typedef NS_ENUM (NSUInteger, FBSDKLikeControlStyle) + + @abstract Specifies the style of a like control. + */ +typedef NS_ENUM(NSUInteger, FBSDKLikeControlStyle) +{ + /*! Displays the button and the social sentence. */ + FBSDKLikeControlStyleStandard = 0, + /*! Displays the button and a box that contains the like count. */ + FBSDKLikeControlStyleBoxCount, +}; + +/*! + @abstract Converts an FBSDKLikeControlStyle to an NSString. + */ +FBSDK_EXTERN NSString *NSStringFromFBSDKLikeControlStyle(FBSDKLikeControlStyle style); + +/*! + @class FBSDKLikeControl + + @abstract UI control to like an object in the Facebook graph. + + @discussion Taps on the like button within this control will invoke an API call to the Facebook app through a + fast-app-switch that allows the user to like the object. Upon return to the calling app, the view will update + with the new state and send actions for the UIControlEventValueChanged event. + */ +@interface FBSDKLikeControl : UIControl + +/*! + @abstract The foreground color to use for the content of the receiver. + */ +@property (nonatomic, strong) UIColor *foregroundColor; + +/*! + @abstract The position for the auxiliary view for the receiver. + + @see FBSDKLikeControlAuxiliaryPosition + */ +@property (nonatomic, assign) FBSDKLikeControlAuxiliaryPosition likeControlAuxiliaryPosition; + +/*! + @abstract The text alignment of the social sentence. + + @discussion This value is only valid for FBSDKLikeControlStyleStandard with + FBSDKLikeControlAuxiliaryPositionTop|Bottom. + */ +@property (nonatomic, assign) FBSDKLikeControlHorizontalAlignment likeControlHorizontalAlignment; + +/*! + @abstract The style to use for the receiver. + + @see FBSDKLikeControlStyle + */ +@property (nonatomic, assign) FBSDKLikeControlStyle likeControlStyle; + +/*! + @abstract The preferred maximum width (in points) for autolayout. + + @discussion This property affects the size of the receiver when layout constraints are applied to it. During layout, + if the text extends beyond the width specified by this property, the additional text is flowed to one or more new + lines, thereby increasing the height of the receiver. + */ +@property (nonatomic, assign) CGFloat preferredMaxLayoutWidth; + +/*! + @abstract If YES, a sound is played when the receiver is toggled. + + @default YES + */ +@property (nonatomic, assign, getter = isSoundEnabled) BOOL soundEnabled; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m new file mode 100644 index 0000000..6a8167a --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m @@ -0,0 +1,664 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLikeControl.h" +#import "FBSDKLikeControl+Internal.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKLikeActionController.h" +#import "FBSDKLikeBoxView.h" +#import "FBSDKLikeButton+Internal.h" +#import "FBSDKLikeButton.h" + +#define kFBLikeControlAnimationDuration 0.2 +#define kFBLikeControlSocialSentenceAnimationOffset 10.0 + +static void *FBSDKLikeControlKVOLikeActionControllerContext = &FBSDKLikeControlKVOLikeActionControllerContext; + +NSString *NSStringFromFBSDKLikeControlAuxiliaryPosition(FBSDKLikeControlAuxiliaryPosition auxiliaryPosition) +{ + switch (auxiliaryPosition) { + case FBSDKLikeControlAuxiliaryPositionBottom: + return @"bottom"; + case FBSDKLikeControlAuxiliaryPositionInline: + return @"inline"; + case FBSDKLikeControlAuxiliaryPositionTop: + return @"top"; + } + return nil; +} + +NSString *NSStringFromFBSDKLikeControlHorizontalAlignment(FBSDKLikeControlHorizontalAlignment horizontalAlignment) +{ + switch (horizontalAlignment) { + case FBSDKLikeControlHorizontalAlignmentCenter: + return @"center"; + case FBSDKLikeControlHorizontalAlignmentLeft: + return @"left"; + case FBSDKLikeControlHorizontalAlignmentRight: + return @"right"; + } + return nil; +} + +NSString *NSStringFromFBSDKLikeControlStyle(FBSDKLikeControlStyle style) +{ + switch (style) { + case FBSDKLikeControlStyleBoxCount: + return @"box_count"; + case FBSDKLikeControlStyleStandard: + return @"standard"; + } + return nil; +} + +typedef struct FBSDKLikeControlLayout +{ + CGSize contentSize; + CGRect likeButtonFrame; + CGRect auxiliaryViewFrame; +} FBSDKLikeControlLayout; + +typedef CGSize (^fbsdk_like_control_sizing_block_t)(UIView *subview, CGSize constrainedSize); + +@implementation FBSDKLikeControl +{ + BOOL _isExplicitlyDisabled; + FBSDKLikeBoxView *_likeBoxView; + FBSDKLikeButton *_likeButton; + UIView *_likeButtonContainer; + UILabel *_socialSentenceLabel; +} + +#pragma mark - Class Methods + ++ (void)initialize +{ + if ([FBSDKLikeControl class] == self) { + // ensure that we have updated the dialog configs if we haven't already + [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:NULL]; + } +} + +#pragma mark - Object Lifecycle + +- (instancetype)initWithFrame:(CGRect)frame +{ + if ((self = [super initWithFrame:frame])) { + [self _initializeContent]; + if (CGRectEqualToRect(frame, CGRectZero)) { + [self sizeToFit]; + } + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [super initWithCoder:decoder])) { + [self _initializeContent]; + } + return self; +} + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [_likeButton removeObserver:self forKeyPath:@"likeActionController"]; +} + +#pragma mark - Properties + +- (void)setBackgroundColor:(UIColor *)backgroundColor +{ + [super setBackgroundColor:backgroundColor]; + _likeButtonContainer.backgroundColor = backgroundColor; +} + +- (void)setForegroundColor:(UIColor *)foregroundColor +{ + if (![_foregroundColor isEqual:foregroundColor]) { + _foregroundColor = foregroundColor; + [_likeButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _socialSentenceLabel.textColor = foregroundColor; + } +} + +- (void)setEnabled:(BOOL)enabled +{ + _isExplicitlyDisabled = !enabled; + [self _updateEnabled]; +} + +- (void)setLikeControlAuxiliaryPosition:(FBSDKLikeControlAuxiliaryPosition)likeControlAuxiliaryPosition +{ + if (_likeControlAuxiliaryPosition != likeControlAuxiliaryPosition) { + _likeControlAuxiliaryPosition = likeControlAuxiliaryPosition; + [self _updateLikeBoxCaretPosition]; + [self setNeedsLayout]; + [self setNeedsUpdateConstraints]; + [self invalidateIntrinsicContentSize]; + } +} + +- (void)setLikeControlHorizontalAlignment:(FBSDKLikeControlHorizontalAlignment)likeControlHorizontalAlignment +{ + if (_likeControlHorizontalAlignment != likeControlHorizontalAlignment) { + _likeControlHorizontalAlignment = likeControlHorizontalAlignment; + [self _updateLikeBoxCaretPosition]; + [self setNeedsLayout]; + [self setNeedsUpdateConstraints]; + [self invalidateIntrinsicContentSize]; + } +} + +- (void)setLikeControlStyle:(FBSDKLikeControlStyle)likeControlStyle +{ + if (_likeControlStyle != likeControlStyle) { + _likeControlStyle = likeControlStyle; + [self _updateLikeBoxCaretPosition]; + [self setNeedsLayout]; + [self setNeedsUpdateConstraints]; + [self invalidateIntrinsicContentSize]; + } +} + +- (NSString *)objectID +{ + return _likeButton.objectID; +} + +- (void)setObjectID:(NSString *)objectID +{ + if (![_likeButton.objectID isEqualToString:objectID]) { + _likeButton.objectID = objectID; + [self _updateEnabled]; + [self setNeedsLayout]; + } +} + +- (FBSDKLikeObjectType)objectType +{ + return _likeButton.objectType; +} + +- (void)setObjectType:(FBSDKLikeObjectType)objectType +{ + if (_likeButton.objectType != objectType) { + _likeButton.objectType = objectType; + [self setNeedsLayout]; + } +} + +- (void)setOpaque:(BOOL)opaque +{ + [super setOpaque:opaque]; + _likeButtonContainer.opaque = opaque; +} + +- (BOOL)isSoundEnabled +{ + return _likeButton.soundEnabled; +} + +- (void)setSoundEnabled:(BOOL)soundEnabled +{ + _likeButton.soundEnabled = soundEnabled; +} + +#pragma mark - Layout + +- (CGSize)intrinsicContentSize +{ + CGFloat width = self.preferredMaxLayoutWidth; + if (width == 0) { + width = CGFLOAT_MAX; + } + CGRect bounds = CGRectMake(0.0, 0.0, width, CGFLOAT_MAX); + return [self _layoutWithBounds:bounds subviewSizingBlock:^CGSize(UIView *subview, CGSize constrainedSize) { + if ([subview respondsToSelector:@selector(setPreferredMaxLayoutWidth:)]) { + [(id)subview setPreferredMaxLayoutWidth:constrainedSize.width]; + } + return subview.intrinsicContentSize; + }].contentSize; +} + +- (void)layoutSubviews +{ + [super layoutSubviews]; + + NSString *objectID = self.objectID; + if (objectID) { + FBSDKViewImpressionTracker *impressionTracker = + [FBSDKViewImpressionTracker impressionTrackerWithEventName:FBSDKAppEventNameFBSDKLikeControlImpression]; + [impressionTracker logImpressionWithIdentifier:objectID parameters:[self analyticsParameters]]; + } + + [self _ensureLikeActionController]; + + CGRect bounds = self.bounds; + CGSize(^sizingBlock)(UIView *, CGSize) = ^CGSize(UIView *subview, CGSize constrainedSize) { + return [subview sizeThatFits:constrainedSize]; + }; + FBSDKLikeControlLayout layout = [self _layoutWithBounds:bounds subviewSizingBlock:sizingBlock]; + + UIView *auxiliaryView = [self _auxiliaryView]; + _likeBoxView.hidden = (_likeBoxView != auxiliaryView); + _socialSentenceLabel.hidden = (_socialSentenceLabel != auxiliaryView); + + _likeButtonContainer.frame = layout.likeButtonFrame; + _likeButton.frame = _likeButtonContainer.bounds; + auxiliaryView.frame = layout.auxiliaryViewFrame; +} + +- (CGSize)sizeThatFits:(CGSize)size +{ + switch (self.likeControlAuxiliaryPosition) { + case FBSDKLikeControlAuxiliaryPositionInline:{ + size.height = MAX(size.height, CGRectGetHeight(self.bounds)); + break; + } + case FBSDKLikeControlAuxiliaryPositionTop: + case FBSDKLikeControlAuxiliaryPositionBottom:{ + size.width = MAX(size.width, CGRectGetWidth(self.bounds)); + break; + } + } + + CGRect bounds = CGRectMake(0.0, 0.0, size.width, size.height); + return [self _layoutWithBounds:bounds subviewSizingBlock:^CGSize(UIView *subview, CGSize constrainedSize) { + return [subview sizeThatFits:constrainedSize]; + }].contentSize; +} + +#pragma mark - Internal Methods + +- (NSDictionary *)analyticsParameters +{ + return @{ + @"auxiliary_position": NSStringFromFBSDKLikeControlAuxiliaryPosition(self.likeControlAuxiliaryPosition), + @"horizontal_alignment": NSStringFromFBSDKLikeControlHorizontalAlignment(self.likeControlHorizontalAlignment), + @"object_id": (self.objectID ?: [NSNull null]), + @"object_type": (NSStringFromFBSDKLikeObjectType(self.objectType) ?: [NSNull null]), + @"sound_enabled": @(self.soundEnabled), + @"style": NSStringFromFBSDKLikeControlStyle(self.likeControlStyle), + }; +} + +#pragma mark - Helper Methods + +- (UIView *)_auxiliaryView +{ + [self _ensureLikeActionController]; + switch (_likeControlStyle) { + case FBSDKLikeControlStyleStandard:{ + return (_socialSentenceLabel.text.length == 0 ? nil : _socialSentenceLabel); + } + case FBSDKLikeControlStyleBoxCount:{ + return (_likeButton.likeActionController.likeCountString == nil ? nil : _likeBoxView); + } + } + return nil; +} + +- (CGFloat)_auxiliaryViewPadding +{ + switch (_likeControlStyle) { + case FBSDKLikeControlStyleStandard:{ + return 8.0; + } + case FBSDKLikeControlStyleBoxCount:{ + return 0.0; + } + } + return 0.0; +} + +- (void)_ensureLikeActionController +{ + FBSDKLikeActionController *likeActionController = _likeButton.likeActionController; + if (likeActionController) { + _socialSentenceLabel.text = likeActionController.socialSentence; + _likeBoxView.text = likeActionController.likeCountString; + } +} + +- (void)_handleLikeButtonTap:(FBSDKLikeButton *)likeButton +{ + [self _ensureLikeActionController]; + [self sendActionsForControlEvents:UIControlEventTouchUpInside]; +} + +- (void)_initializeContent +{ + self.backgroundColor = [UIColor clearColor]; + _foregroundColor = [UIColor blackColor]; + + _likeButtonContainer = [[UIView alloc] initWithFrame:CGRectZero]; + _likeButtonContainer.backgroundColor = self.backgroundColor; + _likeButtonContainer.opaque = self.opaque; + [self addSubview:_likeButtonContainer]; + + _likeButton = [[FBSDKLikeButton alloc] initWithFrame:CGRectZero]; + [_likeButton addTarget:self action:@selector(_handleLikeButtonTap:) forControlEvents:UIControlEventTouchUpInside]; + [_likeButtonContainer addSubview:_likeButton]; + + _socialSentenceLabel = [[UILabel alloc] initWithFrame:CGRectZero]; + _socialSentenceLabel.font = [UIFont systemFontOfSize:11.0]; + _socialSentenceLabel.numberOfLines = 2; + [self addSubview:_socialSentenceLabel]; + + _likeBoxView = [[FBSDKLikeBoxView alloc] initWithFrame:CGRectZero]; + [self addSubview:_likeBoxView]; + + // use KVO to monitor changes to the likeActionController instance on FBSDKButton in order to avoid race conditions + // between notification observers + [_likeButton addObserver:self + forKeyPath:@"likeActionController" + options:NSKeyValueObservingOptionInitial + context:FBSDKLikeControlKVOLikeActionControllerContext]; + + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self + selector:@selector(_likeActionControllerDidDisableNotification:) + name:FBSDKLikeActionControllerDidDisableNotification + object:nil]; + [nc addObserver:self + selector:@selector(_likeActionControllerDidUpdateNotification:) + name:FBSDKLikeActionControllerDidUpdateNotification + object:nil]; +} + +- (void)observeValueForKeyPath:(NSString *)keyPath + ofObject:(id)object + change:(NSDictionary *)change + context:(void *)context +{ + if (context == FBSDKLikeControlKVOLikeActionControllerContext) { + [self _likeActionControllerDidUpdateWithAnimated:NO]; + } else { + [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + } +} + +static void FBSDKLikeControlApplyHorizontalAlignment(CGRect *frameRef, + CGRect bounds, + FBSDKLikeControlHorizontalAlignment alignment) +{ + if (frameRef == NULL) { + return; + } + + CGRect frame = *frameRef; + switch (alignment) { + case FBSDKLikeControlHorizontalAlignmentLeft:{ + frame.origin.x = CGRectGetMinX(bounds); + break; + } + case FBSDKLikeControlHorizontalAlignmentCenter:{ + frame.origin.x = CGRectGetMinX(bounds) + floorf((CGRectGetWidth(bounds) - CGRectGetWidth(frame)) / 2); + break; + } + case FBSDKLikeControlHorizontalAlignmentRight:{ + frame.origin.x = CGRectGetMinX(bounds) + CGRectGetWidth(bounds) - CGRectGetWidth(frame); + break; + } + } + *frameRef = frame; +} + +static CGFloat FBSDKLikeControlPaddedDistance(CGFloat distance, CGFloat padding, BOOL includeDistance) +{ + return (distance == 0.0 ? 0.0 : (includeDistance ? distance : 0.0) + padding); +} + +static CGSize FBSDKLikeControlCalculateContentSize(FBSDKLikeControlLayout layout) +{ + return CGSizeMake(MAX(CGRectGetMaxX(layout.likeButtonFrame), CGRectGetMaxX(layout.auxiliaryViewFrame)), + MAX(CGRectGetMaxY(layout.likeButtonFrame), CGRectGetMaxY(layout.auxiliaryViewFrame))); + +} + +- (FBSDKLikeControlLayout)_layoutWithBounds:(CGRect)bounds + subviewSizingBlock:(fbsdk_like_control_sizing_block_t)subviewSizingBlock +{ + FBSDKLikeControlLayout layout; + + CGSize likeButtonSize = subviewSizingBlock(_likeButton, bounds.size); + layout.likeButtonFrame = CGRectMake(CGRectGetMinX(bounds), + CGRectGetMinY(bounds), + likeButtonSize.width, + likeButtonSize.height); + layout.auxiliaryViewFrame = CGRectZero; + + UIView *auxiliaryView = [self _auxiliaryView]; + CGFloat auxiliaryViewPadding = [self _auxiliaryViewPadding]; + CGSize auxiliaryViewSize = CGSizeZero; + switch (self.likeControlAuxiliaryPosition) { + case FBSDKLikeControlAuxiliaryPositionInline:{ + if (auxiliaryView) { + auxiliaryViewSize = CGSizeMake((CGRectGetWidth(bounds) - + auxiliaryViewPadding - + CGRectGetWidth(layout.likeButtonFrame)), + CGRectGetHeight(bounds)); + auxiliaryViewSize = subviewSizingBlock(auxiliaryView, auxiliaryViewSize); + + layout.auxiliaryViewFrame = CGRectMake(CGRectGetMinX(bounds), + CGRectGetMinY(bounds), + auxiliaryViewSize.width, + MAX(auxiliaryViewSize.height, + CGRectGetHeight(layout.likeButtonFrame))); + } + + // align the views next to each other for sizing + FBSDKLikeControlApplyHorizontalAlignment(&layout.likeButtonFrame, + bounds, + FBSDKLikeControlHorizontalAlignmentLeft); + if (auxiliaryView) { + layout.auxiliaryViewFrame.origin.x = CGRectGetMaxX(layout.likeButtonFrame) + auxiliaryViewPadding; + } + + // calculate the size before offsetting the horizontal alignment, using the total calculated width + layout.contentSize = FBSDKLikeControlCalculateContentSize(layout); + + // layout the subviews next to each other + switch (self.likeControlHorizontalAlignment) { + case FBSDKLikeControlHorizontalAlignmentLeft:{ + // already done + break; + } + case FBSDKLikeControlHorizontalAlignmentCenter:{ + layout.likeButtonFrame.origin.x = floorf((CGRectGetWidth(bounds) - layout.contentSize.width) / 2); + if (auxiliaryView) { + layout.auxiliaryViewFrame.origin.x = (CGRectGetMaxX(layout.likeButtonFrame) + + auxiliaryViewPadding); + } + break; + } + case FBSDKLikeControlHorizontalAlignmentRight:{ + layout.likeButtonFrame.origin.x = CGRectGetMaxX(bounds) - CGRectGetWidth(layout.likeButtonFrame); + if (auxiliaryView) { + layout.auxiliaryViewFrame.origin.x = (CGRectGetMinX(layout.likeButtonFrame) - + auxiliaryViewPadding - + CGRectGetWidth(layout.auxiliaryViewFrame)); + } + break; + } + } + + break; + } + case FBSDKLikeControlAuxiliaryPositionTop:{ + if (auxiliaryView) { + auxiliaryViewSize = CGSizeMake(CGRectGetWidth(bounds), + (CGRectGetHeight(bounds) - + auxiliaryViewPadding - + CGRectGetHeight(layout.likeButtonFrame))); + auxiliaryViewSize = subviewSizingBlock(auxiliaryView, auxiliaryViewSize); + + layout.auxiliaryViewFrame = CGRectMake(CGRectGetMinX(bounds), + CGRectGetMinY(bounds), + MAX(auxiliaryViewSize.width, + CGRectGetWidth(layout.likeButtonFrame)), + auxiliaryViewSize.height); + } + layout.likeButtonFrame.origin.y = FBSDKLikeControlPaddedDistance(CGRectGetMaxY(layout.auxiliaryViewFrame), + auxiliaryViewPadding, + YES); + + // calculate the size before offsetting the horizontal alignment, using the total calculated width + layout.contentSize = FBSDKLikeControlCalculateContentSize(layout); + + FBSDKLikeControlApplyHorizontalAlignment(&layout.likeButtonFrame, bounds, self.likeControlHorizontalAlignment); + FBSDKLikeControlApplyHorizontalAlignment(&layout.auxiliaryViewFrame, + bounds, + self.likeControlHorizontalAlignment); + break; + } + case FBSDKLikeControlAuxiliaryPositionBottom:{ + if (auxiliaryView) { + auxiliaryViewSize = CGSizeMake(CGRectGetWidth(bounds), + (CGRectGetHeight(bounds) - + auxiliaryViewPadding - + CGRectGetHeight(layout.likeButtonFrame))); + auxiliaryViewSize = subviewSizingBlock(auxiliaryView, auxiliaryViewSize); + + layout.auxiliaryViewFrame = CGRectMake(CGRectGetMinX(bounds), + CGRectGetMaxY(layout.likeButtonFrame) + auxiliaryViewPadding, + MAX(auxiliaryViewSize.width, + CGRectGetWidth(layout.likeButtonFrame)), + auxiliaryViewSize.height); + } + + // calculate the size before offsetting the horizontal alignment, using the total calculated width + layout.contentSize = FBSDKLikeControlCalculateContentSize(layout); + + FBSDKLikeControlApplyHorizontalAlignment(&layout.likeButtonFrame, bounds, self.likeControlHorizontalAlignment); + FBSDKLikeControlApplyHorizontalAlignment(&layout.auxiliaryViewFrame, + bounds, + self.likeControlHorizontalAlignment); + break; + } + } + + return layout; +} + +- (void)_likeActionControllerDidDisableNotification:(NSNotification *)notification +{ + [self _updateEnabled]; +} + +- (void)_likeActionControllerDidUpdateNotification:(NSNotification *)notification +{ + [self _ensureLikeActionController]; + FBSDKLikeActionController *likeActionController = (FBSDKLikeActionController *)notification.object; + NSString *objectID = likeActionController.objectID; + if ([self.objectID isEqualToString:objectID]) { + BOOL animated = [notification.userInfo[FBSDKLikeActionControllerAnimatedKey] boolValue]; + [self _likeActionControllerDidUpdateWithAnimated:animated]; + } +} + +- (void)_likeActionControllerDidUpdateWithAnimated:(BOOL)animated +{ + FBSDKLikeActionController *likeActionController = _likeButton.likeActionController; + NSString *objectID = likeActionController.objectID; + if ([self.objectID isEqualToString:objectID]) { + _likeBoxView.text = _likeButton.likeActionController.likeCountString; + + if (animated) { + void(^hideView)(UIView *) = ^(UIView *view){ + view.alpha = 0.0; + CGRect frame = view.frame; + frame.origin.y += kFBLikeControlSocialSentenceAnimationOffset; + view.frame = frame; + }; + [UIView animateWithDuration:kFBLikeControlAnimationDuration animations:^{ + hideView(_socialSentenceLabel); + } completion:^(BOOL finished) { + _socialSentenceLabel.text = likeActionController.socialSentence; + [self setNeedsLayout]; + [self setNeedsUpdateConstraints]; + [self invalidateIntrinsicContentSize]; + [self layoutIfNeeded]; + hideView(_socialSentenceLabel); + + [UIView animateWithDuration:kFBLikeControlAnimationDuration animations:^{ + _socialSentenceLabel.alpha = 1.0; + [self setNeedsLayout]; + [self layoutIfNeeded]; + }]; + }]; + } else { + _socialSentenceLabel.text = likeActionController.socialSentence; + [self setNeedsLayout]; + [self setNeedsUpdateConstraints]; + [self invalidateIntrinsicContentSize]; + } + + [self sendActionsForControlEvents:UIControlEventValueChanged]; + } +} + +- (void)_updateEnabled +{ + BOOL enabled = (!_isExplicitlyDisabled && + self.objectID && + ![FBSDKLikeActionController isDisabled]); + BOOL currentEnabled = [self isEnabled]; + [super setEnabled:enabled]; + if (currentEnabled != enabled) { + [self invalidateIntrinsicContentSize]; + [self setNeedsLayout]; + } +} + +- (void)_updateLikeBoxCaretPosition +{ + if (self.likeControlStyle != FBSDKLikeControlStyleBoxCount) { + return; + } + + switch (self.likeControlAuxiliaryPosition) { + case FBSDKLikeControlAuxiliaryPositionInline:{ + switch (self.likeControlHorizontalAlignment) { + case FBSDKLikeControlHorizontalAlignmentLeft: + case FBSDKLikeControlHorizontalAlignmentCenter:{ + _likeBoxView.caretPosition = FBSDKLikeBoxCaretPositionLeft; + break; + } + case FBSDKLikeControlHorizontalAlignmentRight:{ + _likeBoxView.caretPosition = FBSDKLikeBoxCaretPositionRight; + break; + } + } + break; + } + case FBSDKLikeControlAuxiliaryPositionTop:{ + _likeBoxView.caretPosition = FBSDKLikeBoxCaretPositionBottom; + break; + } + case FBSDKLikeControlAuxiliaryPositionBottom:{ + _likeBoxView.caretPosition = FBSDKLikeBoxCaretPositionTop; + break; + } + } +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h new file mode 100644 index 0000000..dadff43 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h @@ -0,0 +1,40 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @typedef NS_ENUM (NSUInteger, FBSDKLikeObjectType) + @abstract Specifies the type of object referenced by the objectID for likes. + */ +typedef NS_ENUM(NSUInteger, FBSDKLikeObjectType) +{ + /*! The objectID refers to an unknown object type. */ + FBSDKLikeObjectTypeUnknown = 0, + /*! The objectID refers to an Open Graph object. */ + FBSDKLikeObjectTypeOpenGraph, + /*! The objectID refers to an Page object. */ + FBSDKLikeObjectTypePage, +}; + +/*! + @abstract Converts an FBLikeControlObjectType to an NSString. + */ +FBSDK_EXTERN NSString *NSStringFromFBSDKLikeObjectType(FBSDKLikeObjectType objectType); diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m new file mode 100644 index 0000000..273fab1 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m @@ -0,0 +1,32 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLikeObjectType.h" + +NSString *NSStringFromFBSDKLikeObjectType(FBSDKLikeObjectType objectType) +{ + switch (objectType) { + case FBSDKLikeObjectTypeUnknown: + return @"unknown"; + case FBSDKLikeObjectTypeOpenGraph: + return @"open_graph"; + case FBSDKLikeObjectTypePage: + return @"page"; + } + return nil; +} diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h new file mode 100644 index 0000000..e2d4a4a --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h @@ -0,0 +1,45 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +/*! + @abstract The common interface for components that initiate liking. + @see FBSDKLikeButton + @see FBSDKLikeControl + */ +@protocol FBSDKLiking + +/*! + @abstract The objectID for the object to like. + + @discussion This value may be an Open Graph object ID or a string representation of an URL that describes an + Open Graph object. The objects may be public objects, like pages, or objects that are defined by your application. + */ +@property (nonatomic, copy) NSString *objectID; + +/*! + @abstract The type of object referenced by the objectID. + + @discussion If the objectType is unknown, the control will determine the objectType by querying the server with the + objectID. Specifying a value for the objectType is an optimization that should be used if the type is known by the + consumer. Consider setting the objectType if it is known when setting the objectID. + */ +@property (nonatomic, assign) FBSDKLikeObjectType objectType; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h new file mode 100644 index 0000000..2819eb7 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h @@ -0,0 +1,35 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @abstract A dialog for sharing content through Messenger. + */ +@interface FBSDKMessageDialog : NSObject + +/*! + @abstract Convenience method to show a Message Share Dialog with content and a delegate. + @param content The content to be shared. + @param delegate The receiver's delegate. + */ ++ (instancetype)showWithContent:(id)content delegate:(id)delegate; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m new file mode 100644 index 0000000..070fd99 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m @@ -0,0 +1,221 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKMessageDialog.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareConstants.h" +#import "FBSDKShareDefines.h" +#import "FBSDKShareError.h" +#import "FBSDKShareOpenGraphContent.h" +#import "FBSDKShareUtility.h" +#import "FBSDKShareVideoContent.h" + +#define FBSDK_MESSAGE_DIALOG_APP_SCHEME @"fb-messenger-api" +#define FBSDK_MESSAGE_METHOD_MIN_VERSION @"20140430" + +@implementation FBSDKMessageDialog + +#pragma mark - Class Methods + ++ (void)initialize +{ + if ([FBSDKMessageDialog class] == self) { + [FBSDKInternalUtility checkRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_MESSENGER]; + [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:NULL]; + } +} + ++ (instancetype)showWithContent:(id)content delegate:(id)delegate +{ + FBSDKMessageDialog *dialog = [[self alloc] init]; + dialog.shareContent = content; + dialog.delegate = delegate; + [dialog show]; + return dialog; +} + +#pragma mark - Properties + +@synthesize delegate = _delegate; +@synthesize shareContent = _shareContent; +@synthesize shouldFailOnDataError = _shouldFailOnDataError; + +#pragma mark - Public Methods + +- (BOOL)canShow +{ + return [self _canShowNative]; +} + +- (BOOL)show +{ + NSError *error; + if (![self canShow]) { + error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode + message:@"Message dialog is not available."]; + [self _invokeDelegateDidFailWithError:error]; + return NO; + } + if (![self validateWithError:&error]) { + [self _invokeDelegateDidFailWithError:error]; + return NO; + } + + id shareContent = self.shareContent; + NSDictionary *parameters = [FBSDKShareUtility parametersForShareContent:shareContent + shouldFailOnDataError:self.shouldFailOnDataError]; + NSString *methodName = ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]] ? + FBSDK_SHARE_OPEN_GRAPH_METHOD_NAME : + FBSDK_SHARE_METHOD_NAME); + FBSDKBridgeAPIRequest *request; + request = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeNative + scheme:FBSDK_MESSAGE_DIALOG_APP_SCHEME + methodName:methodName + methodVersion:FBSDK_MESSAGE_METHOD_MIN_VERSION + parameters:parameters + userInfo:nil]; + FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; + BOOL useSafariViewController = [configuration useSafariViewControllerForDialogName:FBSDKDialogConfigurationNameMessage]; + FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { + [self _handleCompletionWithDialogResults:response.responseParameters response:response]; + [FBSDKInternalUtility unregisterTransientObject:self]; + }; + [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:request + useSafariViewController:useSafariViewController + fromViewController:nil + completionBlock:completionBlock]; + + [self _logDialogShow]; + [FBSDKInternalUtility registerTransientObject:self]; + return YES; +} + +- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef +{ + id shareContent = self.shareContent; + if (!shareContent) { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"shareContent" message:nil]; + } + return NO; + } + return [FBSDKShareUtility validateShareContent:self.shareContent error:errorRef]; +} + +#pragma mark - Helper Methods + +- (BOOL)_canShowNative +{ + FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; + BOOL useNativeDialog = [configuration useNativeDialogForDialogName:FBSDKDialogConfigurationNameMessage]; + return (useNativeDialog && [FBSDKInternalUtility isMessengerAppInstalled]); +} + +- (void)_handleCompletionWithDialogResults:(NSDictionary *)results response:(FBSDKBridgeAPIResponse *)response +{ + NSString *completionGesture = results[FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; + if ([completionGesture isEqualToString:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_CANCEL] || + response.isCancelled) { + [self _invokeDelegateDidCancel]; + } else if (response.error) { + [self _invokeDelegateDidFailWithError:response.error]; + } else { + [self _invokeDelegateDidCompleteWithResults:results]; + } +} + +- (void)_invokeDelegateDidCancel +{ + NSDictionary * parameters =@{ + FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Cancelled, + }; + + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogResult + valueToSum:nil + parameters:parameters + accessToken:[FBSDKAccessToken currentAccessToken]]; + + if (!_delegate) { + return; + } + + [_delegate sharerDidCancel:self]; +} + +- (void)_invokeDelegateDidCompleteWithResults:(NSDictionary *)results +{ + NSDictionary * parameters =@{ + FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Completed, + }; + + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogResult + valueToSum:nil + parameters:parameters + accessToken:[FBSDKAccessToken currentAccessToken]]; + + if (!_delegate) { + return; + } + + [_delegate sharer:self didCompleteWithResults:[results copy]]; +} + +- (void)_invokeDelegateDidFailWithError:(NSError *)error +{ + NSMutableDictionary * parameters = [NSMutableDictionary dictionaryWithObjectsAndKeys:FBSDKAppEventsDialogOutcomeValue_Failed, FBSDKAppEventParameterDialogOutcome, nil]; + if (error) { + parameters[FBSDKAppEventParameterDialogErrorMessage] = [NSString stringWithFormat:@"%@", error]; + } + + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogResult + valueToSum:nil + parameters:parameters + accessToken:[FBSDKAccessToken currentAccessToken]]; + + if (!_delegate) { + return; + } + + [_delegate sharer:self didFailWithError:error]; +} + +- (void)_logDialogShow +{ + NSString *contentType; + if([self.shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + contentType = FBSDKAppEventsDialogShareContentTypeOpenGraph; + } else if ([self.shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { + contentType = FBSDKAppEventsDialogShareContentTypeStatus; + } else if ([self.shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { + contentType = FBSDKAppEventsDialogShareContentTypePhoto; + } else if ([self.shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { + contentType = FBSDKAppEventsDialogShareContentTypeVideo; + } else { + contentType = FBSDKAppEventsDialogShareContentTypeUnknown; + } + + NSDictionary *parameters = @{FBSDKAppEventParameterDialogShareContentType : contentType}; + + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventMessengerShareDialogShow + valueToSum:nil + parameters:parameters + accessToken:[FBSDKAccessToken currentAccessToken]]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h new file mode 100644 index 0000000..347f0e4 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h @@ -0,0 +1,32 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import + +/*! + @abstract A button to send content through Messenger. + @discussion Tapping the receiver will invoke the FBSDKShareDialog with the attached shareContent. If the dialog cannot + be shown, the button will be disable. + */ +@interface FBSDKSendButton : FBSDKButton + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m new file mode 100644 index 0000000..cc0ee18 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m @@ -0,0 +1,97 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKSendButton.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKMessageDialog.h" +#import "FBSDKMessengerIcon.h" + +@interface FBSDKSendButton () +@end + +@implementation FBSDKSendButton +{ + FBSDKMessageDialog *_dialog; +} + +#pragma mark - Properties + +- (id)shareContent +{ + return _dialog.shareContent; +} + +- (void)setShareContent:(id)shareContent +{ + _dialog.shareContent = shareContent; + [self checkImplicitlyDisabled]; +} + +#pragma mark - FBSDKButtonImpressionTracking + +- (NSDictionary *)analyticsParameters +{ + return nil; +} + +- (NSString *)impressionTrackingEventName +{ + return FBSDKAppEventNameFBSDKSendButtonImpression; +} + +- (NSString *)impressionTrackingIdentifier +{ + return @"send"; +} + +#pragma mark - FBSDKButton + +- (void)configureButton +{ + NSString *title = + NSLocalizedStringWithDefaultValue(@"SendButton.Send", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Send", + @"The label for FBSDKSendButton"); + + UIColor *backgroundColor = [UIColor colorWithRed:0.0 green:132.0/255.0 blue:1.0 alpha:1.0]; + UIColor *highlightedColor = [UIColor colorWithRed:0.0 green:111.0/255.0 blue:1.0 alpha:1.0]; + + [self configureWithIcon:[[FBSDKMessengerIcon alloc] init] + title:title + backgroundColor:backgroundColor + highlightedColor:highlightedColor]; + + [self addTarget:self action:@selector(_share:) forControlEvents:UIControlEventTouchUpInside]; + _dialog = [[FBSDKMessageDialog alloc] init]; +} + +- (BOOL)isImplicitlyDisabled +{ + return ![_dialog canShow] || ![_dialog validateWithError:NULL]; +} + +#pragma mark - Helper Methods + +- (void)_share:(id)sender +{ + [self logTapEventWithEventName:FBSDKAppEventNameFBSDKSendButtonDidTap parameters:[self analyticsParameters]]; + [_dialog show]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h new file mode 100644 index 0000000..ddbeafe --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h @@ -0,0 +1,79 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import +#import + +/*! + @abstract A utility class for sharing through the graph API. Using this class requires an access token in + [FBSDKAccessToken currentAccessToken] that has been granted the "publish_actions" permission. + @discussion FBSDKShareAPI network requests are scheduled on the current run loop in the default run loop mode + (like NSURLConnection). If you want to use FBSDKShareAPI in a background thread, you must manage the run loop + yourself. + */ +@interface FBSDKShareAPI : NSObject + +/*! + @abstract Convenience method to build up a share API with content and a delegate. + @param content The content to be shared. + @param delegate The receiver's delegate. + */ ++ (instancetype)shareWithContent:(id)content delegate:(id)delegate; + +/*! + @abstract The message the person has provided through the custom dialog that will accompany the share content. + */ +@property (nonatomic, copy) NSString *message; + +/*! + @abstract The graph node to which content should be shared. + */ +@property (nonatomic, copy) NSString *graphNode; + +/*! + @abstract A Boolean value that indicates whether the receiver can send the share. + @discussion May return NO if the appropriate Facebook app is not installed and is required or an access token is + required but not available. This method does not validate the content on the receiver, so this can be checked before + building up the content. + @see [FBSDKSharing validateWithError:] + @result YES if the receiver can send, otherwise NO. + */ +- (BOOL)canShare; + +/*! + @abstract Creates an User Owned Open Graph object without an action. + @param openGraphObject The open graph object to create. + @discussion Use this method to create an object alone, when an action is not going to be posted with the object. If + the object will be used within an action, just put the object in the action and share that as the shareContent and the + object will be created in the process. The delegate will be messaged with the results. + + Also see https://developers.facebook.com/docs/sharing/opengraph/object-api#objectapi-creatinguser + + @result YES if the receiver was able to send the request to create the object, otherwise NO. + */ +- (BOOL)createOpenGraphObject:(FBSDKShareOpenGraphObject *)openGraphObject; + +/*! + @abstract Begins the send from the receiver. + @result YES if the receiver was able to send the share, otherwise NO. + */ +- (BOOL)share; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m new file mode 100644 index 0000000..69f124f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m @@ -0,0 +1,701 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareAPI.h" + +#import + +#import +#import +#import + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareConstants.h" +#import "FBSDKShareDefines.h" +#import "FBSDKShareError.h" +#import "FBSDKShareLinkContent.h" +#import "FBSDKShareOpenGraphAction.h" +#import "FBSDKShareOpenGraphContent.h" +#import "FBSDKShareOpenGraphObject.h" +#import "FBSDKSharePhoto.h" +#import "FBSDKSharePhotoContent.h" +#import "FBSDKShareUtility.h" +#import "FBSDKShareVideo.h" +#import "FBSDKShareVideoContent.h" + +static NSString *const FBSDKShareAPIDefaultGraphNode = @"me"; +static NSString *const FBSDKShareAPIPhotosEdge = @"photos"; +static NSString *const FBSDKShareAPIVideosEdge = @"videos"; + +@implementation FBSDKShareAPI + +#pragma mark - Class Methods + ++ (instancetype)shareWithContent:(id)content delegate:(id)delegate +{ + FBSDKShareAPI *API = [[self alloc] init]; + API.shareContent = content; + API.delegate = delegate; + [API share]; + return API; +} + +#pragma mark - Properties + +@synthesize delegate = _delegate; +@synthesize shareContent = _shareContent; +@synthesize shouldFailOnDataError = _shouldFailOnDataError; + +#pragma mark - Object Lifecycle +- (instancetype)init +{ + if ((self = [super init])) { + _graphNode = FBSDKShareAPIDefaultGraphNode; + } + return self; +} + +#pragma mark - Public Methods + +- (BOOL)canShare +{ + return YES; +} + +- (BOOL)createOpenGraphObject:(FBSDKShareOpenGraphObject *)openGraphObject +{ + NSError *error; + if (![self canShare]) { + NSString *message = @"Share API is not available; verify 'canShare' returns YES"; + error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode message:message]; + [_delegate sharer:self didFailWithError:error]; + return NO; + } + if (![self _hasPublishActions]) { + NSString *message = @"Warning: [FBSDKAccessToken currentAccessToken] is missing publish_actions permissions"; + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry:message]; + } + if (!openGraphObject) { + error = [FBSDKShareError requiredArgumentErrorWithName:@"openGraphObject" message:nil]; + [_delegate sharer:self didFailWithError:error]; + return NO; + } + + FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; + void(^completionHandler)(id) = ^(NSDictionary *result) { + [_delegate sharer:self didCompleteWithResults:result]; + }; + if (![self _stageOpenGraphObject:openGraphObject + connection:connection + stagingHandler:NULL + completionHandler:completionHandler]) { + return NO; + } + [connection start]; + return YES; +} + +- (BOOL)share +{ + NSError *error; + if (![self canShare]) { + NSString *message = @"Share API is not available; verify 'canShare' returns YES"; + error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode message:message]; + [_delegate sharer:self didFailWithError:error]; + return NO; + } + if (![self _hasPublishActions]) { + NSString *message = @"Warning: [FBSDKAccessToken currentAccessToken] is missing publish_actions permissions"; + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorDeveloperErrors logEntry:message]; + } + if (![self validateWithError:&error]) { + [_delegate sharer:self didFailWithError:error]; + return NO; + } + id shareContent = self.shareContent; + + if ([shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { + return [self _shareLinkContent:(FBSDKShareLinkContent *)shareContent]; + } else if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { + return [self _sharePhotoContent:(FBSDKSharePhotoContent *)shareContent]; + } else if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { + return [self _shareVideoContent:(FBSDKShareVideoContent *)shareContent]; + } else if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + return [self _shareOpenGraphContent:(FBSDKShareOpenGraphContent *)shareContent]; + } else { + return NO; + } +} + +- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef +{ + id shareContent = self.shareContent; + if (!shareContent) { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"shareContent" message:nil]; + } + return NO; + } + return [FBSDKShareUtility validateShareContent:shareContent error:errorRef]; +} + +#pragma mark - Helper Methods + +- (NSString *)_graphPathWithSuffix:(NSString *)suffix, ... NS_REQUIRES_NIL_TERMINATION +{ + NSMutableString *graphPath = [[NSMutableString alloc] initWithString:self.graphNode]; + va_list args; + va_start(args, suffix); + for (NSString *arg = suffix; arg != nil; arg = va_arg(args, NSString *)) { + [graphPath appendFormat:@"/%@", arg]; + } + va_end(args); + return graphPath; +} + +- (void)_addCommonParameters:(NSMutableDictionary *)parameters content:(id)content +{ + NSString *tags = [content.peopleIDs componentsJoinedByString:@","]; + [FBSDKInternalUtility dictionary:parameters setObject:tags forKey:@"tags"]; + [FBSDKInternalUtility dictionary:parameters setObject:content.placeID forKey:@"place"]; + [FBSDKInternalUtility dictionary:parameters setObject:content.ref forKey:@"ref"]; +} + +- (BOOL)_hasPublishActions +{ + FBSDKAccessToken *accessToken = [FBSDKAccessToken currentAccessToken]; + return [accessToken.permissions containsObject:@"publish_actions"]; +} + +- (BOOL)_shareLinkContent:(FBSDKShareLinkContent *)linkContent +{ + FBSDKGraphRequestHandler completionHandler = ^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + if (!_delegate) { + return; + } + if (error) { + [_delegate sharer:self didFailWithError:error]; + } else { + result = [FBSDKTypeUtility dictionaryValue:result]; + NSMutableDictionary *shareResults = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:shareResults setObject:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST + forKey:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; + [FBSDKInternalUtility dictionary:shareResults setObject:[FBSDKTypeUtility stringValue:result[@"id"]] + forKey:FBSDK_SHARE_RESULT_POST_ID_KEY]; + [_delegate sharer:self didCompleteWithResults:shareResults]; + } + }; + NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; + [self _addCommonParameters:parameters content:linkContent]; + [FBSDKInternalUtility dictionary:parameters setObject:self.message forKey:@"message"]; + [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentURL forKey:@"link"]; + [FBSDKInternalUtility dictionary:parameters setObject:linkContent.imageURL forKey:@"picture"]; + [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentTitle forKey:@"name"]; + [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentDescription forKey:@"description"]; + + [[[FBSDKGraphRequest alloc] initWithGraphPath:[self _graphPathWithSuffix:@"feed", nil] + parameters:parameters + HTTPMethod:@"POST"] startWithCompletionHandler:completionHandler]; + return YES; +} + +- (BOOL)_shareOpenGraphContent:(FBSDKShareOpenGraphContent *)openGraphContent +{ + // In order to create a new Open Graph action using a custom object that does not already exist (objectID or URL), you + // must first send a request to post the object and then another to post the action. If a local image is supplied + // with the object or action, that must be staged first and then referenced by the staging URL that is returned by + // that request. + FBSDKShareOpenGraphAction *action = openGraphContent.action; + FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; + void(^stagingHandler)(NSDictionary *) = ^(NSDictionary *stagedContainer) { + NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithDictionary:stagedContainer]; + [self _addCommonParameters:parameters content:openGraphContent]; + [FBSDKInternalUtility dictionary:parameters setObject:self.message forKey:@"message"]; + + FBSDKGraphRequestHandler requestHandler = ^(FBSDKGraphRequestConnection *requestConnection, + id result, + NSError *requestError) { + if (!_delegate) { + return; + } + if (requestError) { + NSError *error = [FBSDKShareError errorWithCode:FBSDKShareOpenGraphErrorCode + message:@"Error sharing Open Graph content" + underlyingError:requestError]; + [_delegate sharer:self didFailWithError:error]; + } else if (result) { + NSMutableDictionary *shareResults = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:shareResults setObject:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST + forKey:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; + [FBSDKInternalUtility dictionary:shareResults setObject:[FBSDKTypeUtility stringValue:result[@"id"]] + forKey:FBSDK_SHARE_RESULT_POST_ID_KEY]; + [_delegate sharer:self didCompleteWithResults:shareResults]; + } + }; + NSString *graphPath = [self _graphPathWithSuffix:[FBSDKUtility URLEncode:action.actionType], nil]; + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:graphPath + parameters:parameters + HTTPMethod:@"POST"]; + [self _connection:connection addRequest:request completionHandler:requestHandler]; + [connection start]; + }; + if (![self _stageOpenGraphValueContainer:action connection:connection stagingHandler:stagingHandler]) { + return NO; + } + return YES; +} + +- (BOOL)_sharePhotoContent:(FBSDKSharePhotoContent *)photoContent +{ + NSArray *photos = photoContent.photos; + NSMutableArray *requests = [[NSMutableArray alloc] init]; + for (FBSDKSharePhoto *photo in photos) { + UIImage *image = photo.image; + if (!image && [photo.imageURL isFileURL]) { + image = [UIImage imageWithContentsOfFile:[photo.imageURL path]]; + } + if (image) { + NSString *graphPath = [self _graphPathWithSuffix:FBSDKShareAPIPhotosEdge, nil]; + NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; + [self _addCommonParameters:parameters content:photoContent]; + NSString *caption = photo.caption ?: self.message; + [FBSDKInternalUtility dictionary:parameters setObject:caption forKey:@"caption"]; + parameters[@"picture"] = image; + [requests addObject:[[FBSDKGraphRequest alloc] initWithGraphPath:graphPath + parameters:parameters + HTTPMethod:@"POST"]]; + } + } + NSUInteger requestCount = [requests count]; + NSMutableArray *results = [[NSMutableArray alloc] init]; + NSMutableArray *errors = [[NSMutableArray alloc] init]; + __block NSUInteger completedCount = 0; + FBSDKGraphRequestHandler completionHandler = ^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + result = [FBSDKTypeUtility dictionaryValue:result]; + [FBSDKInternalUtility array:results addObject:result]; + [FBSDKInternalUtility array:errors addObject:error]; + if (++completedCount != requestCount) { + return; + } + if (!_delegate) { + return; + } + if ([errors count]) { + [_delegate sharer:self didFailWithError:errors[0]]; + } else if ([results count]) { + // each photo upload will be merged into the same post, so grab the post_id from the first and use that + NSMutableDictionary *shareResults = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:shareResults setObject:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST + forKey:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; + NSDictionary *firstResult = [FBSDKTypeUtility dictionaryValue:results[0]]; + [FBSDKInternalUtility dictionary:shareResults setObject:[FBSDKTypeUtility stringValue:firstResult[@"post_id"]] + forKey:FBSDK_SHARE_RESULT_POST_ID_KEY]; + [_delegate sharer:self didCompleteWithResults:shareResults]; + } + }; + for (FBSDKGraphRequest *request in requests) { + [request startWithCompletionHandler:completionHandler]; + } + return YES; +} + +- (BOOL)_shareVideoContent:(FBSDKShareVideoContent *)videoContent +{ + FBSDKGraphRequestHandler completionHandler = ^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + if (!_delegate) { + return; + } + if (error) { + [_delegate sharer:self didFailWithError:error]; + } else { + result = [FBSDKTypeUtility dictionaryValue:result]; + NSMutableDictionary *shareResults = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:shareResults setObject:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST + forKey:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; + [FBSDKInternalUtility dictionary:shareResults setObject:[FBSDKTypeUtility stringValue:result[@"id"]] + forKey:FBSDK_SHARE_RESULT_POST_ID_KEY]; + [_delegate sharer:self didCompleteWithResults:shareResults]; + } + }; + NSString *graphPath = [self _graphPathWithSuffix:FBSDKShareAPIVideosEdge, nil]; + NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; + [self _addCommonParameters:parameters content:videoContent]; + [FBSDKInternalUtility dictionary:parameters setObject:self.message forKey:@"description"]; + if ([[FBSDKAccessToken currentAccessToken].permissions containsObject:@"ads_management"]) { + FBSDKSharePhoto *photo = videoContent.previewPhoto; + UIImage *image = photo.image; + if (!image && [photo.imageURL isFileURL]) { + image = [UIImage imageWithContentsOfFile:[photo.imageURL path]]; + } + [FBSDKInternalUtility dictionary:parameters setObject:image forKey:@"thumb"]; + } + FBSDKShareVideo *video = videoContent.video; + NSURL *videoURL = video.videoURL; + void(^postVideoBlock)(NSData *,NSString *) = ^(NSData *videoData, NSString *filename){ + FBSDKGraphRequestDataAttachment *dataAttachment = [[FBSDKGraphRequestDataAttachment alloc] initWithData:videoData + filename:filename + contentType:nil]; + [FBSDKInternalUtility dictionary:parameters setObject:dataAttachment forKey:filename]; + [[[FBSDKGraphRequest alloc] initWithGraphPath:graphPath + parameters:parameters + HTTPMethod:@"POST"] startWithCompletionHandler:completionHandler]; + }; + if ([videoURL isFileURL]) { + NSError *fileError; + NSData *videoData = [NSData dataWithContentsOfURL:video.videoURL + options:NSDataReadingMapped + error:&fileError]; + if (!videoData) { + [_delegate sharer:self didFailWithError:fileError]; + return NO; + } + NSString *filename = [[NSString alloc] initWithFormat:@"video.%@", video.videoURL.pathExtension]; + postVideoBlock(videoData, filename); + return YES; + } else if (videoURL) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + [[[fbsdkdfl_ALAssetsLibraryClass() alloc] init] assetForURL:video.videoURL resultBlock:^(ALAsset *asset) { + ALAssetRepresentation *defaultRepresentation = [asset defaultRepresentation]; + NSUInteger size = (NSUInteger)defaultRepresentation.size; + Byte *buffer = (Byte *)malloc(size); + NSError *error; + NSUInteger bufferedLength = [defaultRepresentation getBytes:buffer fromOffset:0.0 length:size error:&error]; + if (bufferedLength == 0) { + free(buffer); + [_delegate sharer:self didFailWithError:error]; + return; + } + NSData *videoData = [NSData dataWithBytesNoCopy:buffer length:bufferedLength freeWhenDone:YES]; + NSString *filename = [[NSString alloc] initWithFormat:@"video.%@", defaultRepresentation.filename.pathExtension]; +#pragma clang diagnostic pop + postVideoBlock(videoData, filename); + } failureBlock:^(NSError *error) { + [_delegate sharer:self didFailWithError:error]; + }]; + return YES; + } else { + return NO; + } +} + +- (BOOL)_addEncodedParametersToDictionary:(NSMutableDictionary *)parameters + key:(NSString *)key + value:(id)value + error:(NSError **)errorRef +{ + if ([value isKindOfClass:[NSString class]] || + [value isKindOfClass:[NSNumber class]] || + [value isKindOfClass:[NSNull class]]) { + parameters[key] = value; + } else if ([value isKindOfClass:[NSArray class]]) { + __block BOOL didEncode = YES; + [(NSArray *)value enumerateObjectsUsingBlock:^(id subvalue, NSUInteger idx, BOOL *stop) { + NSString *subkey = [[NSString alloc] initWithFormat:@"%@[%lu]", key, (unsigned long)idx]; + if (![self _addEncodedParametersToDictionary:parameters key:subkey value:subvalue error:errorRef]) { + *stop = YES; + didEncode = NO; + } + }]; + if (!didEncode) { + return NO; + } + } else if ([value isKindOfClass:[NSDictionary class]]) { + __block BOOL didEncode = YES; + [(NSDictionary *)value enumerateKeysAndObjectsUsingBlock:^(id subkey, id subvalue, BOOL *stop) { + subkey = [[NSString alloc] initWithFormat:@"%@[%@]", key, subkey]; + if (![self _addEncodedParametersToDictionary:parameters key:subkey value:subvalue error:errorRef]) { + *stop = YES; + didEncode = NO; + } + }]; + if (!didEncode) { + return NO; + } + } else { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:key value:value message:nil]; + } + return NO; + } + if (errorRef != NULL) { + *errorRef = nil; + } + return YES; +} + +- (BOOL)_stageArray:(NSArray *)array + connection:(FBSDKGraphRequestConnection *)connection + stagingHandler:(void(^)(NSArray *stagedArray))stagingHandler +{ + __block BOOL result = YES; + __block NSUInteger pendingCount = 1; + NSMutableArray *stagedArray = [[NSMutableArray alloc] initWithArray:array]; + void(^itemDidFail)(void) = ^{ + if (!result) { + return; + } + result = NO; + }; + void(^itemDidSucceed)(void) = ^{ + if (!result) { + return; + } + if ((--pendingCount == 0) && (stagingHandler != NULL)) { + stagingHandler(stagedArray); + } + }; + [array enumerateObjectsUsingBlock:^(id item, NSUInteger idx, BOOL *stop) { + pendingCount++; + void(^itemHandler)(id) = ^(id stagedValue) { + if (stagedValue) { + stagedArray[idx] = stagedValue; + itemDidSucceed(); + } else { + NSError *error = [FBSDKShareError invalidArgumentErrorWithName:@"value" + value:item + message:@"Error staging object."]; + [_delegate sharer:self didFailWithError:error]; + itemDidFail(); + *stop = YES; + result = NO; + } + }; + if (![self _stageValue:item connection:connection stagingHandler:itemHandler]) { + itemDidFail(); + *stop = YES; + result = NO; + } + }]; + if (result) { + itemDidSucceed(); + } + return result; +} + +- (BOOL)_stageOpenGraphObject:(FBSDKShareOpenGraphObject *)openGraphObject + connection:(FBSDKGraphRequestConnection *)connection + stagingHandler:(void(^)(id stagedObject))stagingHandler + completionHandler:(void(^)(NSDictionary *result))completionHandler +{ + NSString *type = [FBSDKTypeUtility stringValue:openGraphObject[@"og:type"]]; + if (!type) { + NSString *message = @"Open Graph objects must contain a og:type value."; + NSError *error = [FBSDKShareError requiredArgumentErrorWithName:@"og:type" message:message]; + [_delegate sharer:self didFailWithError:error]; + return NO; + } + void(^containerHandler)(NSDictionary *) = ^(NSDictionary *stagedContainer) { + NSError *JSONError; + NSString *objectString = [FBSDKInternalUtility JSONStringForObject:stagedContainer + error:&JSONError + invalidObjectHandler:NULL]; + if (!objectString) { + [_delegate sharer:self didFailWithError:JSONError]; + return; + } + NSString *tokenString = [FBSDKAccessToken currentAccessToken].tokenString; + NSString *graphPath = [self _graphPathWithSuffix:@"objects", type, nil]; + NSDictionary *parameters = @{ @"object": objectString }; + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:graphPath + parameters:parameters + tokenString:tokenString + version:nil + HTTPMethod:@"POST"]; + FBSDKGraphRequestHandler requestCompletionHandler = ^(FBSDKGraphRequestConnection *requestConnection, + id result, + NSError *requestError) { + if (!_delegate) { + return; + } + if (requestError) { + NSString *message = [[NSString alloc] initWithFormat:@"Error creating Open Graph object: %@", + requestError.description]; + NSError *error = [FBSDKShareError errorWithCode:FBSDKShareOpenGraphErrorCode + message:message + underlyingError:requestError]; + [_delegate sharer:self didFailWithError:error]; + } else if (completionHandler != NULL) { + completionHandler([FBSDKTypeUtility dictionaryValue:result]); + } + }; + NSString *batchEntryName = [self _connection:connection + addRequest:request + completionHandler:requestCompletionHandler]; + if (stagingHandler != NULL) { + stagingHandler([[NSString alloc] initWithFormat:@"{result=%@:$.id}", batchEntryName]); + } + }; + return [self _stageOpenGraphValueContainer:openGraphObject connection:connection stagingHandler:containerHandler]; + return YES; +} + +- (BOOL)_stageOpenGraphValueContainer:(id)container + connection:(FBSDKGraphRequestConnection *)connection + stagingHandler:(void(^)(NSDictionary *stagedContainer))stagingHandler +{ + __block BOOL result = YES; + __block NSUInteger pendingCount = 1; + NSMutableDictionary *stagedContainer = [[NSMutableDictionary alloc] init]; + void(^itemDidFail)(void) = ^{ + if (!result) { + return; + } + result = NO; + }; + void(^itemDidSucceed)(void) = ^{ + if (!result) { + return; + } + if ((--pendingCount == 0) && (stagingHandler != NULL)) { + stagingHandler(stagedContainer); + } + }; + BOOL isAction = [container isKindOfClass:[FBSDKShareOpenGraphAction class]]; + [container enumerateKeysAndObjectsUsingBlock:^(NSString *key, id object, BOOL *stop) { + pendingCount++; + + // The server does not understand custom namespaces remove them until the server is fixed + NSString *namespace; + key = [FBSDKShareUtility getOpenGraphNameAndNamespaceFromFullName:key namespace:&namespace]; + if (namespace && !isAction) { + if (!stagedContainer[namespace]) { + stagedContainer[namespace] = [[NSMutableDictionary alloc] init]; + } + } + + void(^itemHandler)(id) = ^(id stagedValue) { + if (stagedValue) { + if (isAction) { + NSError *error; + if (![self _addEncodedParametersToDictionary:stagedContainer key:key value:stagedValue error:&error]) { + [_delegate sharer:self didFailWithError:error]; + itemDidFail(); + return; + } + } else { + NSMutableDictionary *valueContainer = (namespace ? stagedContainer[namespace] : stagedContainer); + valueContainer[key] = stagedValue; + } + } + itemDidSucceed(); + }; + if (![self _stageValue:object connection:connection stagingHandler:itemHandler]) { + *stop = YES; + result = NO; + } + }]; + if (result) { + itemDidSucceed(); + } + return result; +} + +- (BOOL)_stagePhoto:(FBSDKSharePhoto *)photo + connection:(FBSDKGraphRequestConnection *)connection + stagingHandler:(void(^)(id stagedPhoto))stagingHandler +{ + if (photo.imageURL) { + NSMutableDictionary *stagedPhoto = [[NSMutableDictionary alloc]initWithDictionary: @{ + @"url": photo.imageURL.absoluteString, + @"user_generated": @(photo.userGenerated), + }]; + [FBSDKInternalUtility dictionary:stagedPhoto setObject:photo.caption forKey:@"caption"]; + if (stagingHandler) { + stagingHandler(stagedPhoto); + } + return YES; + } else if (photo.image) { + NSString *graphPath = @"/me/staging_resources"; + NSDictionary *parameters = @{ @"file": photo.image }; + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:graphPath + parameters:parameters + HTTPMethod:@"POST"]; + FBSDKGraphRequestHandler completionHandler = ^(FBSDKGraphRequestConnection *requestConnection, + id result, + NSError *requestError) { + NSString *stagedPhotoURLString = [FBSDKTypeUtility stringValue:result[@"uri"]]; + if (requestError || !stagedPhotoURLString) { + NSError *error = [FBSDKShareError errorWithCode:FBSDKShareOpenGraphErrorCode + message:@"Error staging photo" + underlyingError:requestError]; + [_delegate sharer:self didFailWithError:error]; + } else if (stagingHandler) { + NSMutableDictionary *stagedPhoto = [[NSMutableDictionary alloc] initWithDictionary: @{ + @"url": stagedPhotoURLString, + @"user_generated": @(photo.userGenerated), + }]; + [FBSDKInternalUtility dictionary:stagedPhoto setObject:photo.caption forKey:@"caption"]; + stagingHandler(stagedPhoto); + } + }; + [request startWithCompletionHandler:completionHandler]; + return YES; + } else { + NSError *error = [FBSDKShareError invalidArgumentErrorWithName:@"photo" + value:photo + message:@"Photos must have an imageURL or image."]; + [_delegate sharer:self didFailWithError:error]; + return NO; + } +} + +- (BOOL)_stageValue:(id)value + connection:(FBSDKGraphRequestConnection *)connection + stagingHandler:(void(^)(id stagedValue))stagingHandler +{ + if ([value isKindOfClass:[NSString class]] || + [value isKindOfClass:[NSNumber class]]) { + if (stagingHandler != NULL) { + stagingHandler(value); + } + return YES; + } else if ([value isKindOfClass:[NSURL class]]) { + if (stagingHandler != NULL) { + stagingHandler([(NSURL *)value absoluteString]); + } + return YES; + } else if ([value isKindOfClass:[FBSDKSharePhoto class]]) { + return [self _stagePhoto:(FBSDKSharePhoto *)value connection:connection stagingHandler:stagingHandler]; + } else if ([value isKindOfClass:[FBSDKShareOpenGraphObject class]]) { + return [self _stageOpenGraphObject:(FBSDKShareOpenGraphObject *)value + connection:connection + stagingHandler:stagingHandler + completionHandler:NULL]; + } else if ([value isKindOfClass:[NSArray class]]) { + return [self _stageArray:(NSArray *)value connection:connection stagingHandler:stagingHandler]; + } else { + NSError *error = [FBSDKShareError invalidArgumentErrorWithName:@"value" + value:value + message:@"Invalid value type found in Open Graph object."]; + [_delegate sharer:self didFailWithError:error]; + return NO; + } +} + +- (NSString *)_connection:(FBSDKGraphRequestConnection *)connection + addRequest:(FBSDKGraphRequest *)request + completionHandler:(FBSDKGraphRequestHandler)completionHandler +{ + NSUInteger requestCount = [connection.requests count]; + NSString *batchEntryName = [[NSString alloc] initWithFormat:@"request_%lu", (unsigned long)requestCount]; + [connection addRequest:request completionHandler:completionHandler batchEntryName:batchEntryName]; + return batchEntryName; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h new file mode 100644 index 0000000..d6b46fd --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h @@ -0,0 +1,32 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import + +/*! + @abstract A button to share content. + @discussion Tapping the receiver will invoke the FBSDKShareDialog with the attached shareContent. If the dialog cannot + be shown, the button will be disabled. + */ +@interface FBSDKShareButton : FBSDKButton + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m new file mode 100644 index 0000000..17ecf71 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m @@ -0,0 +1,90 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareButton.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareDialog.h" + +@implementation FBSDKShareButton +{ + FBSDKShareDialog *_dialog; +} + +#pragma mark - Properties + +- (id)shareContent +{ + return _dialog.shareContent; +} + +- (void)setShareContent:(id)shareContent +{ + _dialog.shareContent = shareContent; + [self checkImplicitlyDisabled]; +} + +#pragma mark - FBSDKButtonImpressionTracking + +- (NSDictionary *)analyticsParameters +{ + return nil; +} + +- (NSString *)impressionTrackingEventName +{ + return FBSDKAppEventNameFBSDKShareButtonImpression; +} + +- (NSString *)impressionTrackingIdentifier +{ + return @"share"; +} + +#pragma mark - FBSDKButton + +- (void)configureButton +{ + NSString *title = + NSLocalizedStringWithDefaultValue(@"ShareButton.Share", @"FacebookSDK", [FBSDKInternalUtility bundleForStrings], + @"Share", + @"The label for FBSDKShareButton"); + + [self configureWithIcon:nil + title:title + backgroundColor:nil + highlightedColor:nil]; + + [self addTarget:self action:@selector(_share:) forControlEvents:UIControlEventTouchUpInside]; + _dialog = [[FBSDKShareDialog alloc] init]; +} + +- (BOOL)isImplicitlyDisabled +{ + return ![_dialog canShow] || ![_dialog validateWithError:NULL]; +} + +#pragma mark - Helper Methods + +- (void)_share:(id)sender +{ + [self logTapEventWithEventName:FBSDKAppEventNameFBSDKShareButtonDidTap parameters:[self analyticsParameters]]; + [_dialog show]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h new file mode 100644 index 0000000..4f2af4f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h @@ -0,0 +1,50 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @abstract The error domain for all errors from FBSDKShareKit. + @discussion Error codes from the SDK in the range 200-299 are reserved for this domain. + */ +FBSDK_EXTERN NSString *const FBSDKShareErrorDomain; + +/*! + @typedef NS_ENUM(NSInteger, FBSDKShareErrorCode) + @abstract Error codes for FBSDKShareErrorDomain. + */ +typedef NS_ENUM(NSInteger, FBSDKShareErrorCode) +{ + /*! + @abstract Reserved. + */ + FBSDKShareReservedErrorCode = 200, + + /*! + @abstract The error code for errors from uploading open graph objects. + */ + FBSDKShareOpenGraphErrorCode, + + /*! + @abstract The error code for when a sharing dialog is not available. + @discussion Use the canShare methods to check for this case before calling show. + */ + FBSDKShareDialogNotAvailableErrorCode, +}; diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m new file mode 100644 index 0000000..8de78c7 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m @@ -0,0 +1,24 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareConstants.h" + +NSString *const FBSDKShareErrorDomain = @"com.facebook.sdk.share"; + +NSString *const FBSDKShareOpenGraphKeyErrorKey = @"key"; +NSString *const FBSDKShareOpenGraphValueErrorKey = @"value"; diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h new file mode 100644 index 0000000..29489a6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h @@ -0,0 +1,52 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import +#import +#import + +/*! + @abstract A dialog for sharing content on Facebook. + */ +@interface FBSDKShareDialog : NSObject + +/*! + @abstract Convenience method to show an FBSDKShareDialog with a fromViewController, content and a delegate. + @param viewController A UIViewController to present the dialog from, if appropriate. + @param content The content to be shared. + @param delegate The receiver's delegate. + */ ++ (instancetype)showFromViewController:(UIViewController *)viewController + withContent:(id)content + delegate:(id)delegate; + +/*! + @abstract A UIViewController to present the dialog from. + @discussion If not specified, the top most view controller will be automatically determined as best as possible. + */ +@property (nonatomic, weak) UIViewController *fromViewController; + +/*! + @abstract The mode with which to display the dialog. + @discussion Defaults to FBSDKShareDialogModeAutomatic, which will automatically choose the best available mode. + */ +@property (nonatomic, assign) FBSDKShareDialogMode mode; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m new file mode 100644 index 0000000..dca5b20 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m @@ -0,0 +1,781 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareDialog.h" + +#import + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareConstants.h" +#import "FBSDKShareDefines.h" +#import "FBSDKShareError.h" +#import "FBSDKShareLinkContent.h" +#import "FBSDKShareOpenGraphAction.h" +#import "FBSDKShareOpenGraphContent.h" +#import "FBSDKShareOpenGraphObject.h" +#import "FBSDKSharePhoto.h" +#import "FBSDKSharePhotoContent.h" +#import "FBSDKShareUtility.h" +#import "FBSDKShareVideo.h" +#import "FBSDKShareVideoContent.h" + +#define FBSDK_SHARE_DIALOG_APP_SCHEME @"fbapi" +#define FBSDK_SHARE_EXTENSION_APP_SCHEME @"fbshareextension" +#define FBSDK_SHARE_FEED_METHOD_NAME @"feed" +#define FBSDK_SHARE_METHOD_MIN_VERSION @"20130410" +#define FBSDK_SHARE_METHOD_OG_MIN_VERSION @"20130214" +#define FBSDK_SHARE_METHOD_OG_IMAGE_MIN_VERSION @"20130410" +#define FBSDK_SHARE_METHOD_PHOTOS_MIN_VERSION @"20140116" +#define FBSDK_SHARE_METHOD_VIDEO_MIN_VERSION @"20150313" +#define FBSDK_SHARE_METHOD_ATTRIBUTED_SHARE_SHEET_MIN_VERSION @"20150629" + +@interface FBSDKShareDialog () +@end + +@implementation FBSDKShareDialog +{ + FBSDKWebDialog *_webDialog; +} + +#pragma mark - Class Methods + ++ (void)initialize +{ + if ([FBSDKShareDialog class] == self) { + [FBSDKInternalUtility checkRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_FACEBOOK]; + [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:NULL]; + } +} + ++ (instancetype)showFromViewController:(UIViewController *)viewController + withContent:(id)content + delegate:(id)delegate +{ + FBSDKShareDialog *dialog = [[self alloc] init]; + dialog.fromViewController = viewController; + dialog.shareContent = content; + dialog.delegate = delegate; + [dialog show]; + return dialog; +} + +#pragma mark - Object Lifecycle + +- (void)dealloc +{ + _webDialog.delegate = nil; +} + +#pragma mark - Properties + +@synthesize delegate = _delegate; +@synthesize shareContent = _shareContent; +@synthesize shouldFailOnDataError = _shouldFailOnDataError; + +#pragma mark - Public Methods + +- (BOOL)canShow +{ + switch (self.mode) { + case FBSDKShareDialogModeAutomatic: + case FBSDKShareDialogModeBrowser: + case FBSDKShareDialogModeFeedBrowser: + case FBSDKShareDialogModeFeedWeb: + case FBSDKShareDialogModeWeb:{ + return YES; + } + case FBSDKShareDialogModeNative:{ + return [self _canShowNative]; + } + case FBSDKShareDialogModeShareSheet:{ + return [self _canShowShareSheet]; + } + } +} + +- (BOOL)show +{ + BOOL didShow = NO; + NSError *error = nil; + + if ([self validateWithError:&error]) { + switch (self.mode) { + case FBSDKShareDialogModeAutomatic:{ + didShow = [self _showAutomatic:&error]; + break; + } + case FBSDKShareDialogModeBrowser:{ + didShow = [self _showBrowser:&error]; + break; + } + case FBSDKShareDialogModeFeedBrowser:{ + didShow = [self _showFeedBrowser:&error]; + break; + } + case FBSDKShareDialogModeFeedWeb:{ + didShow = [self _showFeedWeb:&error]; + break; + } + case FBSDKShareDialogModeNative:{ + didShow = [self _showNativeWithCanShowError:&error validationError:&error]; + break; + } + case FBSDKShareDialogModeShareSheet:{ + didShow = [self _showShareSheetWithCanShowError:&error validationError:&error]; + break; + } + case FBSDKShareDialogModeWeb:{ + didShow = [self _showWeb:&error]; + break; + } + } + } + if (!didShow) { + [self _invokeDelegateDidFailWithError:error]; + } else { + [self _logDialogShow]; + [FBSDKInternalUtility registerTransientObject:self]; + } + return didShow; +} + +- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef +{ + if (errorRef != NULL) { + *errorRef = nil; + } + id shareContent = self.shareContent; + if (!shareContent) { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"shareContent" message:nil]; + } + return NO; + } + if (![FBSDKShareUtility validateShareContent:shareContent error:errorRef]) { + return NO; + } + switch (self.mode) { + case FBSDKShareDialogModeAutomatic:{ + return ( + ([self _canShowNative] && [self _validateShareContentForNative:errorRef]) || + ([self _canShowShareSheet] && [self _validateShareContentForShareSheet:errorRef]) || + [self _validateShareContentForFeed:errorRef] || + [self _validateShareContentForBrowser:errorRef]); + } + case FBSDKShareDialogModeNative:{ + return [self _validateShareContentForNative:errorRef]; + } + case FBSDKShareDialogModeShareSheet:{ + return [self _validateShareContentForShareSheet:errorRef]; + } + case FBSDKShareDialogModeBrowser: + case FBSDKShareDialogModeWeb:{ + return [self _validateShareContentForBrowser:errorRef]; + } + case FBSDKShareDialogModeFeedBrowser: + case FBSDKShareDialogModeFeedWeb:{ + return [self _validateShareContentForFeed:errorRef]; + } + } +} + +#pragma mark - FBSDKWebDialogDelegate + +- (void)webDialog:(FBSDKWebDialog *)webDialog didCompleteWithResults:(NSDictionary *)results +{ + if (_webDialog != webDialog) { + return; + } + [self _cleanUpWebDialog]; + NSInteger errorCode = [results[@"error_code"] integerValue]; + if (errorCode == 4201) { + [self _invokeDelegateDidCancel]; + } else { + // not all web dialogs report cancellation, so assume that the share has completed with no additional information + [self _handleWebResponseParameters:results error:nil]; + } + [FBSDKInternalUtility unregisterTransientObject:self]; +} + +- (void)webDialog:(FBSDKWebDialog *)webDialog didFailWithError:(NSError *)error +{ + if (_webDialog != webDialog) { + return; + } + [self _cleanUpWebDialog]; + [self _invokeDelegateDidFailWithError:error]; + [FBSDKInternalUtility unregisterTransientObject:self]; +} + +- (void)webDialogDidCancel:(FBSDKWebDialog *)webDialog +{ + if (_webDialog != webDialog) { + return; + } + [self _cleanUpWebDialog]; + [self _invokeDelegateDidCancel]; + [FBSDKInternalUtility unregisterTransientObject:self]; +} + +#pragma mark - Helper Methods + +-(BOOL)_isDefaultToShareSheet +{ + FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; + return [configuration.defaultShareMode isEqualToString:@"share_sheet"]; +} + +-(BOOL)_showAutomatic:(NSError *__autoreleasing *)errorRef +{ + BOOL isDefaultToShareSheet = [self _isDefaultToShareSheet]; + BOOL useNativeDialog = [self _useNativeDialog]; + return ((isDefaultToShareSheet && [self _showShareSheetWithCanShowError:NULL validationError:errorRef]) || + (useNativeDialog && [self _showNativeWithCanShowError:NULL validationError:errorRef]) || + (!isDefaultToShareSheet && [self _showShareSheetWithCanShowError:NULL validationError:errorRef]) || + [self _showFeedBrowser:errorRef] || + [self _showFeedWeb:errorRef] || + [self _showBrowser:errorRef] || + [self _showWeb:errorRef] || + (!useNativeDialog && [self _showNativeWithCanShowError:NULL validationError:errorRef])); +} + +- (void)_loadNativeMethodName:(NSString **)methodNameRef methodVersion:(NSString **)methodVersionRef +{ + if (methodNameRef != NULL) { + *methodNameRef = nil; + } + if (methodVersionRef != NULL) { + *methodVersionRef = nil; + } + + id shareContent = self.shareContent; + if (!shareContent) { + return; + } + + // if there is shareContent on the receiver already, we can check the minimum app version, otherwise we can only check + // for an app that can handle the native share dialog + NSString *methodName = nil; + NSString *methodVersion = nil; + if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + methodName = FBSDK_SHARE_OPEN_GRAPH_METHOD_NAME; + BOOL containsMedia = NO; + [FBSDKShareUtility testShareContent:shareContent containsMedia:&containsMedia containsPhotos:NULL]; + if (containsMedia) { + methodVersion = FBSDK_SHARE_METHOD_OG_IMAGE_MIN_VERSION; + } else { + methodVersion = FBSDK_SHARE_METHOD_OG_MIN_VERSION; + } + } else { + methodName = FBSDK_SHARE_METHOD_NAME; + if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { + methodVersion = FBSDK_SHARE_METHOD_PHOTOS_MIN_VERSION; + } else if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { + methodVersion = FBSDK_SHARE_METHOD_VIDEO_MIN_VERSION; + } else { + methodVersion = FBSDK_SHARE_METHOD_MIN_VERSION; + } + } + if (methodNameRef != NULL) { + *methodNameRef = methodName; + } + if (methodVersionRef != NULL) { + *methodVersionRef = methodVersion; + } +} + +- (BOOL)_canShowNative +{ + return [FBSDKInternalUtility isFacebookAppInstalled]; +} + +- (BOOL)_canShowShareSheet +{ + Class composeViewControllerClass = [fbsdkdfl_SLComposeViewControllerClass() class]; + if (!composeViewControllerClass) { + return NO; + } + NSString *facebookServiceType = fbsdkdfl_SLServiceTypeFacebook(); + if (![composeViewControllerClass isAvailableForServiceType:facebookServiceType]) { + return NO; + } + return YES; +} + +- (BOOL)_canAttributeThroughShareSheet +{ + NSOperatingSystemVersion iOS8Version = { .majorVersion = 8, .minorVersion = 0, .patchVersion = 0 }; + if (![FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS8Version]) { + return NO; + } + NSString *scheme = FBSDK_SHARE_DIALOG_APP_SCHEME; + NSString *minimumVersion = FBSDK_SHARE_METHOD_ATTRIBUTED_SHARE_SHEET_MIN_VERSION; + NSURLComponents *components = [[NSURLComponents alloc] init]; + components.scheme = [scheme stringByAppendingString:minimumVersion]; + components.path = @"/"; + return ([[UIApplication sharedApplication] canOpenURL:components.URL] || + [self _canUseFBShareSheet]); +} + +- (BOOL)_canUseFBShareSheet +{ + NSOperatingSystemVersion iOS8Version = { .majorVersion = 8, .minorVersion = 0, .patchVersion = 0 }; + if (![FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS8Version]) { + return NO; + } + NSURLComponents *components = [[NSURLComponents alloc] init]; + components.scheme = FBSDK_SHARE_EXTENSION_APP_SCHEME; + components.path = @"/"; + return [[UIApplication sharedApplication] canOpenURL:components.URL]; +} + +- (void)_cleanUpWebDialog +{ + _webDialog.delegate = nil; + _webDialog = nil; +} + +- (NSArray *)_contentImages +{ + id shareContent = self.shareContent; + return ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]] ? + [((FBSDKSharePhotoContent *)shareContent).photos valueForKeyPath:@"@distinctUnionOfObjects.image"] : + nil); +} + +- (NSArray *)_contentURLs +{ + NSArray *URLs = nil; + id shareContent = self.shareContent; + if ([shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { + FBSDKShareLinkContent *linkContent = (FBSDKShareLinkContent *)shareContent; + URLs = (linkContent.contentURL ? @[linkContent.contentURL] : nil); + } else if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { + FBSDKSharePhotoContent *photoContent = (FBSDKSharePhotoContent *)shareContent; + URLs = (photoContent.contentURL ? @[photoContent.contentURL] : nil); + } + return URLs; +} + +- (void)_handleWebResponseParameters:(NSDictionary *)webResponseParameters error:(NSError *)error +{ + if (error) { + [self _invokeDelegateDidFailWithError:error]; + return; + } else { + NSString *completionGesture = webResponseParameters[FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; + if ([completionGesture isEqualToString:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_CANCEL]) { + [self _invokeDelegateDidCancel]; + } else { + // not all web dialogs report cancellation, so assume that the share has completed with no additional information + NSMutableDictionary *results = [[NSMutableDictionary alloc] init]; + // the web response comes back with a different payload, so we need to translate it + [FBSDKInternalUtility dictionary:results + setObject:webResponseParameters[FBSDK_SHARE_WEB_PARAM_POST_ID_KEY] + forKey:FBSDK_SHARE_RESULT_POST_ID_KEY]; + [self _invokeDelegateDidCompleteWithResults:results]; + } + } +} + +- (BOOL)_showBrowser:(NSError **)errorRef +{ + if (![self _validateShareContentForBrowser:errorRef]) { + return NO; + } + id shareContent = self.shareContent; + NSString *methodName; + NSDictionary *parameters; + if (![FBSDKShareUtility buildWebShareContent:shareContent + methodName:&methodName + parameters:¶meters + error:errorRef]) { + return NO; + } + FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { + [self _handleWebResponseParameters:response.responseParameters error:response.error]; + [FBSDKInternalUtility unregisterTransientObject:self]; + }; + FBSDKBridgeAPIRequest *request; + request = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeWeb + scheme:FBSDK_SHARE_WEB_SCHEME + methodName:methodName + methodVersion:nil + parameters:parameters + userInfo:nil]; + [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:request + useSafariViewController:[self _useSafariViewController] + fromViewController:self.fromViewController + completionBlock:completionBlock]; + return YES; +} + +- (BOOL)_showFeedBrowser:(NSError **)errorRef +{ + if (![self _validateShareContentForFeed:errorRef]) { + return NO; + } + id shareContent = self.shareContent; + NSDictionary *parameters = [FBSDKShareUtility feedShareDictionaryForContent:shareContent]; + FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { + [self _handleWebResponseParameters:response.responseParameters error:response.error]; + [FBSDKInternalUtility unregisterTransientObject:self]; + }; + FBSDKBridgeAPIRequest *request; + request = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeWeb + scheme:FBSDK_SHARE_WEB_SCHEME + methodName:FBSDK_SHARE_FEED_METHOD_NAME + methodVersion:nil + parameters:parameters + userInfo:nil]; + [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:request + useSafariViewController:[self _useSafariViewController] + fromViewController:self.fromViewController + completionBlock:completionBlock]; + return YES; +} + +- (BOOL)_showFeedWeb:(NSError **)errorRef +{ + if (![self _validateShareContentForFeed:errorRef]) { + return NO; + } + id shareContent = self.shareContent; + NSDictionary *parameters = [FBSDKShareUtility feedShareDictionaryForContent:shareContent]; + _webDialog = [FBSDKWebDialog showWithName:FBSDK_SHARE_FEED_METHOD_NAME + parameters:parameters + delegate:self]; + return YES; +} + +- (BOOL)_showNativeWithCanShowError:(NSError **)canShowErrorRef validationError:(NSError **)validationErrorRef +{ + if (![self _canShowNative]) { + if (canShowErrorRef != NULL) { + *canShowErrorRef = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode + message:@"Native share dialog is not available."]; + } + return NO; + } + if (![self _validateShareContentForNative:validationErrorRef]) { + return NO; + } + + NSString *methodName; + NSString *methodVersion; + [self _loadNativeMethodName:&methodName methodVersion:&methodVersion]; + NSDictionary *parameters = [FBSDKShareUtility parametersForShareContent:self.shareContent + shouldFailOnDataError:self.shouldFailOnDataError]; + FBSDKBridgeAPIRequest *request; + request = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeNative + scheme:FBSDK_CANOPENURL_FACEBOOK + methodName:methodName + methodVersion:methodVersion + parameters:parameters + userInfo:nil]; + FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { + if (response.error.code == FBSDKAppVersionUnsupportedErrorCode) { + NSError *fallbackError; + if ([self _showShareSheetWithCanShowError:NULL validationError:&fallbackError] || + [self _showFeedBrowser:&fallbackError]) { + return; + } + } + NSDictionary *responseParameters = response.responseParameters; + NSString *completionGesture = responseParameters[FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; + if ([completionGesture isEqualToString:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_CANCEL] || + response.isCancelled) { + [self _invokeDelegateDidCancel]; + } else if (response.error) { + [self _invokeDelegateDidFailWithError:response.error]; + } else { + NSMutableDictionary *results = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:results + setObject:responseParameters[FBSDK_SHARE_RESULT_POST_ID_KEY] + forKey:FBSDK_SHARE_RESULT_POST_ID_KEY]; + [self _invokeDelegateDidCompleteWithResults:results]; + } + [FBSDKInternalUtility unregisterTransientObject:self]; + }; + [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:request + useSafariViewController:[self _useSafariViewController] + fromViewController:self.fromViewController + completionBlock:completionBlock]; + return YES; +} + +- (BOOL)_showShareSheetWithCanShowError:(NSError **)canShowErrorRef validationError:(NSError **)validationErrorRef +{ + if (![self _canShowShareSheet]) { + if (canShowErrorRef != NULL) { + *canShowErrorRef = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode + message:@"Share sheet is not available."]; + } + return NO; + } + if (![self _validateShareContentForShareSheet:validationErrorRef]) { + return NO; + } + UIViewController *fromViewController = self.fromViewController; + if (!fromViewController) { + if (validationErrorRef != NULL) { + *validationErrorRef = [FBSDKShareError requiredArgumentErrorWithName:@"fromViewController" message:nil]; + } + return NO; + } + NSArray *images = [self _contentImages]; + NSArray *URLs = [self _contentURLs]; + NSURL *videoURL = ([self.shareContent isKindOfClass:[FBSDKShareVideoContent class]] ? + ((FBSDKShareVideoContent *)self.shareContent).video.videoURL : + nil); + + Class composeViewControllerClass = [fbsdkdfl_SLComposeViewControllerClass() class]; + NSString *facebookServiceType = fbsdkdfl_SLServiceTypeFacebook(); + SLComposeViewController *composeViewController; + composeViewController = [composeViewControllerClass composeViewControllerForServiceType:facebookServiceType]; + + if (!composeViewController) { + if (canShowErrorRef != NULL) { + *canShowErrorRef = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode + message:@"Error creating SLComposeViewController."]; + } + return NO; + } + if ([self _canAttributeThroughShareSheet]) { + NSString *attributionToken = [NSString stringWithFormat:@"fb-app-id:%@", [FBSDKSettings appID]]; + [composeViewController setInitialText:attributionToken]; + } + for (UIImage *image in images) { + [composeViewController addImage:image]; + } + for (NSURL *URL in URLs) { + [composeViewController addURL:URL]; + } + if (videoURL) { + [composeViewController addURL:videoURL]; + } + composeViewController.completionHandler = ^(SLComposeViewControllerResult result) { + switch (result) { + case SLComposeViewControllerResultCancelled:{ + [self _invokeDelegateDidCancel]; + break; + } + case SLComposeViewControllerResultDone:{ + [self _invokeDelegateDidCompleteWithResults:@{}]; + break; + } + } + [FBSDKInternalUtility unregisterTransientObject:self]; + }; + [fromViewController presentViewController:composeViewController animated:YES completion:nil]; + return YES; +} + +- (BOOL)_showWeb:(NSError **)errorRef +{ + if (![self _validateShareContentForBrowser:errorRef]) { + return NO; + } + id shareContent = self.shareContent; + NSString *methodName; + NSDictionary *parameters; + if (![FBSDKShareUtility buildWebShareContent:shareContent + methodName:&methodName + parameters:¶meters + error:errorRef]) { + return NO; + } + _webDialog = [FBSDKWebDialog showWithName:methodName + parameters:parameters + delegate:self]; + return YES; +} + +- (BOOL)_useNativeDialog +{ + FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; + return [configuration useNativeDialogForDialogName:FBSDKDialogConfigurationNameShare]; +} + +- (BOOL)_useSafariViewController +{ + FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; + return [configuration useSafariViewControllerForDialogName:FBSDKDialogConfigurationNameShare]; +} + +- (BOOL)_validateShareContentForBrowser:(NSError **)errorRef +{ + id shareContent = self.shareContent; + BOOL containsMedia; + BOOL containsPhotos; + [FBSDKShareUtility testShareContent:shareContent containsMedia:&containsMedia containsPhotos:&containsPhotos]; + if (containsPhotos) { + if ((errorRef != NULL) && !*errorRef) { + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" + value:shareContent + message:@"Web share dialogs cannot include photos."]; + } + return NO; + } + if (containsMedia) { + if ((errorRef != NULL) && !*errorRef) { + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" + value:shareContent + message:@"Web share dialogs cannot include local media."]; + } + return NO; + } + return YES; +} + +- (BOOL)_validateShareContentForFeed:(NSError **)errorRef +{ + id shareContent = self.shareContent; + if (![shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { + if ((errorRef != NULL) && !*errorRef) { + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" + value:shareContent + message:@"Feed share dialogs support FBSDKShareLinkContent."]; + } + return NO; + } + return YES; +} + +- (BOOL)_validateShareContentForNative:(NSError **)errorRef +{ + id shareContent = self.shareContent; + if (![shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { + return YES; + } + return [self _validateVideoURL:((FBSDKShareVideoContent *)shareContent).video.videoURL error:errorRef]; +} + +- (BOOL)_validateShareContentForShareSheet:(NSError **)errorRef +{ + id shareContent = self.shareContent; + if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { + if ([self _contentImages] != 0) { + return YES; + } else { + if ((errorRef != NULL) && !*errorRef) { + NSString *message = @"Share photo content must have UIImage photos in order to share with the share sheet"; + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" value:shareContent message:message]; + } + return NO; + } + } else if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { + return ([self _canUseFBShareSheet] && + [self _validateVideoURL:((FBSDKShareVideoContent *)shareContent).video.videoURL error:errorRef]); + } else if (![shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { + if ((errorRef != NULL) && !*errorRef) { + NSString *message = @"Share content must be FBSDKShareLinkContent or FBSDKSharePhotoContent in order to share " + @"with the share sheet."; + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" value:shareContent message:message]; + } + return NO; + } + return YES; +} + +- (BOOL)_validateVideoURL:(NSURL *)videoURL error:(NSError **)errorRef +{ + if (videoURL.isFileURL) { + if ((errorRef != NULL) && !*errorRef) { + NSString *message = @"Only asset file URLs are allowed for videos."; + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"videoURL" value:videoURL message:message]; + } + return NO; + } + return YES; +} + +- (void)_invokeDelegateDidCancel +{ + NSDictionary * parameters = @{ + FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Cancelled, + }; + + [FBSDKAppEvents logImplicitEvent:FBSDLAppEventNameFBSDKEventShareDialogResult + valueToSum:nil + parameters:parameters + accessToken:[FBSDKAccessToken currentAccessToken]]; + + [_delegate sharerDidCancel:self]; +} + +- (void)_invokeDelegateDidCompleteWithResults:(NSDictionary *)results +{ + NSDictionary * parameters = @{ + FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Completed + }; + + [FBSDKAppEvents logImplicitEvent:FBSDLAppEventNameFBSDKEventShareDialogResult + valueToSum:nil + parameters:parameters + accessToken:[FBSDKAccessToken currentAccessToken]]; + + [_delegate sharer:self didCompleteWithResults:[results copy]]; +} + +- (void)_invokeDelegateDidFailWithError:(NSError *)error +{ + NSDictionary * parameters = @{ + FBSDKAppEventParameterDialogOutcome : FBSDKAppEventsDialogOutcomeValue_Failed, + FBSDKAppEventParameterDialogErrorMessage : [NSString stringWithFormat:@"%@", error] + }; + + [FBSDKAppEvents logImplicitEvent:FBSDLAppEventNameFBSDKEventShareDialogResult + valueToSum:nil + parameters:parameters + accessToken:[FBSDKAccessToken currentAccessToken]]; + + [_delegate sharer:self didFailWithError:error]; +} + +- (void)_logDialogShow +{ + NSString *shareMode = NSStringFromFBSDKShareDialogMode(self.mode); + + NSString *contentType; + if([self.shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + contentType = FBSDKAppEventsDialogShareContentTypeOpenGraph; + } else if ([self.shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { + contentType = FBSDKAppEventsDialogShareContentTypeStatus; + } else if ([self.shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { + contentType = FBSDKAppEventsDialogShareContentTypePhoto; + } else if ([self.shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { + contentType = FBSDKAppEventsDialogShareContentTypeVideo; + } else { + contentType = FBSDKAppEventsDialogShareContentTypeUnknown; + } + + + NSDictionary *parameters = @{ + FBSDKAppEventParameterDialogMode : shareMode, + FBSDKAppEventParameterDialogShareContentType : contentType, + + }; + + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKEventShareDialogShow + valueToSum:nil + parameters:parameters + accessToken:[FBSDKAccessToken currentAccessToken]]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h new file mode 100644 index 0000000..bdea19e --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h @@ -0,0 +1,64 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @typedef NS_ENUM(NSUInteger, FBSDKShareDialogMode) + @abstract Modes for the FBSDKShareDialog. + @discussion The automatic mode will progressively check the availability of different modes and open the most + appropriate mode for the dialog that is available. + */ +typedef NS_ENUM(NSUInteger, FBSDKShareDialogMode) +{ + /*! + @abstract Acts with the most appropriate mode that is available. + */ + FBSDKShareDialogModeAutomatic = 0, + /*! + @Displays the dialog in the main native Facebook app. + */ + FBSDKShareDialogModeNative, + /*! + @Displays the dialog in the iOS integrated share sheet. + */ + FBSDKShareDialogModeShareSheet, + /*! + @Displays the dialog in Safari. + */ + FBSDKShareDialogModeBrowser, + /*! + @Displays the dialog in a UIWebView within the app. + */ + FBSDKShareDialogModeWeb, + /*! + @Displays the feed dialog in Safari. + */ + FBSDKShareDialogModeFeedBrowser, + /*! + @Displays the feed dialog in a UIWebView within the app. + */ + FBSDKShareDialogModeFeedWeb, +}; + +/*! + @abstract Converts an FBLikeControlObjectType to an NSString. + */ +FBSDK_EXTERN NSString *NSStringFromFBSDKShareDialogMode(FBSDKShareDialogMode dialogMode); diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m new file mode 100644 index 0000000..7791adb --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m @@ -0,0 +1,51 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareDialogMode.h" + +#import "FBSDKCoreKit+Internal.h" + +NSString *NSStringFromFBSDKShareDialogMode(FBSDKShareDialogMode dialogMode) +{ + switch (dialogMode) { + case FBSDKShareDialogModeAutomatic:{ + return FBSDKAppEventsDialogShareModeAutomatic; + } + case FBSDKShareDialogModeBrowser:{ + return FBSDKAppEventsDialogShareModeBrowser; + } + case FBSDKShareDialogModeNative:{ + return FBSDKAppEventsDialogShareModeNative; + } + case FBSDKShareDialogModeShareSheet:{ + return FBSDKAppEventsDialogShareModeShareSheet; + } + case FBSDKShareDialogModeWeb:{ + return FBSDKAppEventsDialogShareModeWeb; + } + case FBSDKShareDialogModeFeedBrowser: { + return FBSDKAppEventsDialogShareModeFeedBrowser; + } + case FBSDKShareDialogModeFeedWeb:{ + return FBSDKAppEventsDialogShareModeFeedWeb; + } + default:{ + return FBSDKAppEventsDialogShareModeUnknown; + } + } +} diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h new file mode 100644 index 0000000..c2406c8 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h @@ -0,0 +1,47 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h new file mode 100644 index 0000000..9995df6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h @@ -0,0 +1,56 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @abstract A model for status and link content to be shared. + */ +@interface FBSDKShareLinkContent : NSObject + +/*! + @abstract The description of the link. + @discussion If not specified, this field is automatically populated by information scraped from the contentURL, + typically the title of the page. This value may be discarded for specially handled links (ex: iTunes URLs). + @return The description of the link + */ +@property (nonatomic, copy) NSString *contentDescription; + +/*! + @abstract The title to display for this link. + @discussion This value may be discarded for specially handled links (ex: iTunes URLs). + @return The link title + */ +@property (nonatomic, copy) NSString *contentTitle; + +/*! + @abstract The URL of a picture to attach to this content. + @return The network URL of an image + */ +@property (nonatomic, copy) NSURL *imageURL; + +/*! + @abstract Compares the receiver to another link content. + @param content The other content + @return YES if the receiver's values are equal to the other content's values; otherwise NO + */ +- (BOOL)isEqualToShareLinkContent:(FBSDKShareLinkContent *)content; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m new file mode 100644 index 0000000..cc49ed6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m @@ -0,0 +1,150 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareLinkContent+Internal.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareUtility.h" + +#define FBSDK_SHARE_STATUS_CONTENT_CONTENT_DESCRIPTION_KEY @"contentDescription" +#define FBSDK_SHARE_STATUS_CONTENT_CONTENT_TITLE_KEY @"contentTitle" +#define FBSDK_SHARE_STATUS_CONTENT_CONTENT_URL_KEY @"contentURL" +#define FBSDK_SHARE_STATUS_CONTENT_IMAGE_URL_KEY @"imageURL" +#define FBSDK_SHARE_STATUS_CONTENT_PEOPLE_IDS_KEY @"peopleIDs" +#define FBSDK_SHARE_STATUS_CONTENT_PLACE_ID_KEY @"placeID" +#define FBSDK_SHARE_STATUS_CONTENT_REF_KEY @"ref" +#define FBSDK_SHARE_STATUS_CONTENT_FEED_PARAMETERS_KEY @"feedParameters" + +@implementation FBSDKShareLinkContent + +#pragma mark - Properties + +@synthesize contentURL = _contentURL; +@synthesize peopleIDs = _peopleIDs; +@synthesize placeID = _placeID; +@synthesize ref = _ref; +@synthesize feedParameters = _feedParameters; + +- (void)setPeopleIDs:(NSArray *)peopleIDs +{ + [FBSDKShareUtility assertCollection:peopleIDs ofClass:[NSString class] name:@"peopleIDs"]; + if (![FBSDKInternalUtility object:_peopleIDs isEqualToObject:peopleIDs]) { + _peopleIDs = [peopleIDs copy]; + } +} + +- (void)setFeedParameters:(NSDictionary *)feedParameters +{ + if (![_feedParameters isEqualToDictionary:feedParameters]) { + _feedParameters = [feedParameters copy]; + } +} + +#pragma mark - Equality + +- (NSUInteger)hash +{ + NSUInteger subhashes[] = { + [_contentDescription hash], + [_contentURL hash], + [_imageURL hash], + [_peopleIDs hash], + [_placeID hash], + [_ref hash], + [_contentTitle hash], + [_feedParameters hash], + }; + return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if (![object isKindOfClass:[FBSDKShareLinkContent class]]) { + return NO; + } + return [self isEqualToShareLinkContent:(FBSDKShareLinkContent *)object]; +} + +- (BOOL)isEqualToShareLinkContent:(FBSDKShareLinkContent *)content +{ + return (content && + [FBSDKInternalUtility object:_contentDescription isEqualToObject:content.contentDescription] && + [FBSDKInternalUtility object:_contentTitle isEqualToObject:content.contentTitle] && + [FBSDKInternalUtility object:_contentURL isEqualToObject:content.contentURL] && + [FBSDKInternalUtility object:_feedParameters isEqualToObject:content.feedParameters] && + [FBSDKInternalUtility object:_imageURL isEqualToObject:content.imageURL] && + [FBSDKInternalUtility object:_peopleIDs isEqualToObject:content.peopleIDs] && + [FBSDKInternalUtility object:_placeID isEqualToObject:content.placeID] && + [FBSDKInternalUtility object:_ref isEqualToObject:content.ref]); +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [self init])) { + _contentDescription = [decoder decodeObjectOfClass:[NSString class] + forKey:FBSDK_SHARE_STATUS_CONTENT_CONTENT_DESCRIPTION_KEY]; + _contentTitle = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_STATUS_CONTENT_CONTENT_TITLE_KEY]; + _contentURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_SHARE_STATUS_CONTENT_CONTENT_URL_KEY]; + _feedParameters = [decoder decodeObjectOfClass:[NSDictionary class] forKey:FBSDK_SHARE_STATUS_CONTENT_FEED_PARAMETERS_KEY]; + _imageURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_SHARE_STATUS_CONTENT_IMAGE_URL_KEY]; + _peopleIDs = [decoder decodeObjectOfClass:[NSArray class] forKey:FBSDK_SHARE_STATUS_CONTENT_PEOPLE_IDS_KEY]; + _placeID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_STATUS_CONTENT_PLACE_ID_KEY]; + _ref = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_STATUS_CONTENT_REF_KEY]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:_contentDescription forKey:FBSDK_SHARE_STATUS_CONTENT_CONTENT_DESCRIPTION_KEY]; + [encoder encodeObject:_contentTitle forKey:FBSDK_SHARE_STATUS_CONTENT_CONTENT_TITLE_KEY]; + [encoder encodeObject:_contentURL forKey:FBSDK_SHARE_STATUS_CONTENT_CONTENT_URL_KEY]; + [encoder encodeObject:_feedParameters forKey:FBSDK_SHARE_STATUS_CONTENT_FEED_PARAMETERS_KEY]; + [encoder encodeObject:_imageURL forKey:FBSDK_SHARE_STATUS_CONTENT_IMAGE_URL_KEY]; + [encoder encodeObject:_peopleIDs forKey:FBSDK_SHARE_STATUS_CONTENT_PEOPLE_IDS_KEY]; + [encoder encodeObject:_placeID forKey:FBSDK_SHARE_STATUS_CONTENT_PLACE_ID_KEY]; + [encoder encodeObject:_ref forKey:FBSDK_SHARE_STATUS_CONTENT_REF_KEY]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + FBSDKShareLinkContent *copy = [[FBSDKShareLinkContent alloc] init]; + copy->_contentDescription = [_contentDescription copy]; + copy->_contentTitle = [_contentTitle copy]; + copy->_contentURL = [_contentURL copy]; + copy->_feedParameters = [_feedParameters copy]; + copy->_imageURL = [_imageURL copy]; + copy->_peopleIDs = [_peopleIDs copy]; + copy->_placeID = [_placeID copy]; + copy->_ref = [_ref copy]; + return copy; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h new file mode 100644 index 0000000..5f6db0a --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h @@ -0,0 +1,69 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import +#import + +/*! + @abstract An Open Graph Action for sharing. + @discussion The property keys MUST have namespaces specified on them, such as `og:image`. + */ +@interface FBSDKShareOpenGraphAction : FBSDKShareOpenGraphValueContainer + +/*! + @abstract Convenience method to build a new action and set the object for the specified key. + @param actionType The action type of the receiver + @param object The Open Graph object represented by this action + @param key The key for the object + */ ++ (instancetype)actionWithType:(NSString *)actionType object:(FBSDKShareOpenGraphObject *)object key:(NSString *)key; + +/*! + @abstract Convenience method to build a new action and set the object for the specified key. + @param actionType The action type of the receiver + @param objectID The ID of an existing Open Graph object + @param key The key for the object + */ ++ (instancetype)actionWithType:(NSString *)actionType objectID:(NSString *)objectID key:(NSString *)key; + +/*! + @abstract Convenience method to build a new action and set the object for the specified key. + @param actionType The action type of the receiver + @param objectURL The URL to a page that defines the Open Graph object with meta tags + @param key The key for the object + */ ++ (instancetype)actionWithType:(NSString *)actionType objectURL:(NSURL *)objectURL key:(NSString *)key; + +/*! + @abstract Gets the action type. + @return The action type + */ +@property (nonatomic, copy) NSString *actionType; + +/*! + @abstract Compares the receiver to another Open Graph Action. + @param action The other action + @return YES if the receiver's values are equal to the other action's values; otherwise NO + */ +- (BOOL)isEqualToShareOpenGraphAction:(FBSDKShareOpenGraphAction *)action; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m new file mode 100644 index 0000000..8211b59 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m @@ -0,0 +1,117 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareOpenGraphAction.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareOpenGraphValueContainer+Internal.h" + +#define FBSDK_SHARE_OPEN_GRAPH_ACTION_TYPE_KEY @"type" + +@implementation FBSDKShareOpenGraphAction + +#pragma mark - Class Methods + ++ (instancetype)actionWithType:(NSString *)actionType object:(FBSDKShareOpenGraphObject *)object key:(NSString *)key +{ + FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init]; + action.actionType = actionType; + [action setObject:object forKey:key]; + return action; +} + ++ (instancetype)actionWithType:(NSString *)actionType objectID:(NSString *)objectID key:(NSString *)key +{ + FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init]; + action.actionType = actionType; + [action setString:objectID forKey:key]; + return action; +} + ++ (instancetype)actionWithType:(NSString *)actionType objectURL:(NSURL *)objectURL key:(NSString *)key +{ + FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init]; + action.actionType = actionType; + [action setURL:objectURL forKey:key]; + return action; +} + +#pragma mark - Equality + +- (NSUInteger)hash +{ + return [FBSDKMath hashWithInteger:[super hash] andInteger:[_actionType hash]]; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if (![object isKindOfClass:[FBSDKShareOpenGraphAction class]]) { + return NO; + } + return [self isEqualToShareOpenGraphAction:(FBSDKShareOpenGraphAction *)object]; +} + +- (BOOL)isEqualToShareOpenGraphAction:(FBSDKShareOpenGraphAction *)action +{ + return (action && + [FBSDKInternalUtility object:_actionType isEqualToObject:action.actionType] && + [self isEqualToShareOpenGraphValueContainer:action]); +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [super initWithCoder:decoder])) { + _actionType = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_OPEN_GRAPH_ACTION_TYPE_KEY]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [super encodeWithCoder:encoder]; + [encoder encodeObject:_actionType forKey:FBSDK_SHARE_OPEN_GRAPH_ACTION_TYPE_KEY]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + FBSDKShareOpenGraphAction *copy = [[FBSDKShareOpenGraphAction alloc] init]; + copy->_actionType = [_actionType copy]; + [copy parseProperties:[self allProperties]]; + return copy; +} + +#pragma mark - Internal Methods + +- (BOOL)requireKeyNamespace +{ + return NO; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h new file mode 100644 index 0000000..4393b0c --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h @@ -0,0 +1,49 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import +#import + +/*! + @abstract A model for Open Graph content to be shared. + */ +@interface FBSDKShareOpenGraphContent : NSObject + +/*! + @abstract Open Graph Action to be shared. + @return The action + */ +@property (nonatomic, copy) FBSDKShareOpenGraphAction *action; + +/*! + @abstract Property name that points to the primary Open Graph Object in the action. + @discussion The value that this action points to will be use for rendering the preview for the share. + @return The property name for the Open Graph Object in the action + */ +@property (nonatomic, copy) NSString *previewPropertyName; + +/*! + @abstract Compares the receiver to another Open Graph content. + @param content The other content + @return YES if the receiver's values are equal to the other content's values; otherwise NO + */ +- (BOOL)isEqualToShareOpenGraphContent:(FBSDKShareOpenGraphContent *)content; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m new file mode 100644 index 0000000..8f3de20 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m @@ -0,0 +1,132 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareOpenGraphContent.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKSharePhoto.h" +#import "FBSDKShareUtility.h" + +#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_ACTION_KEY @"action" +#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_CONTENT_URL_KEY @"contentURL" +#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_PEOPLE_IDS_KEY @"peopleIDs" +#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_PLACE_ID_KEY @"placeID" +#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_PREVIEW_PROPERTY_NAME_KEY @"previewPropertyName" +#define FBSDK_SHARE_OPEN_GRAPH_CONTENT_REF_KEY @"ref" + +@implementation FBSDKShareOpenGraphContent + +#pragma mark - Properties + +@synthesize contentURL = _contentURL; +@synthesize peopleIDs = _peopleIDs; +@synthesize placeID = _placeID; +@synthesize ref = _ref; + +- (void)setPeopleIDs:(NSArray *)peopleIDs +{ + [FBSDKShareUtility assertCollection:peopleIDs ofClass:[NSString class] name:@"peopleIDs"]; + if (![FBSDKInternalUtility object:_peopleIDs isEqualToObject:peopleIDs]) { + _peopleIDs = [peopleIDs copy]; + } +} + +#pragma mark - Equality + +- (NSUInteger)hash +{ + NSUInteger subhashes[] = { + [_action hash], + [_contentURL hash], + [_peopleIDs hash], + [_placeID hash], + [_previewPropertyName hash], + [_ref hash], + }; + return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if (![object isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + return NO; + } + return [self isEqualToShareOpenGraphContent:(FBSDKShareOpenGraphContent *)object]; +} + +- (BOOL)isEqualToShareOpenGraphContent:(FBSDKShareOpenGraphContent *)content +{ + return (content && + [FBSDKInternalUtility object:_action isEqualToObject:content.action] && + [FBSDKInternalUtility object:_contentURL isEqualToObject:content.contentURL] && + [FBSDKInternalUtility object:_peopleIDs isEqualToObject:content.peopleIDs] && + [FBSDKInternalUtility object:_placeID isEqualToObject:content.placeID] && + [FBSDKInternalUtility object:_previewPropertyName isEqualToObject:content.previewPropertyName] && + [FBSDKInternalUtility object:_ref isEqualToObject:content.ref]); +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [super init])) { + _action = [decoder decodeObjectOfClass:[FBSDKShareOpenGraphAction class] + forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_ACTION_KEY]; + _contentURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_CONTENT_URL_KEY]; + _peopleIDs = [decoder decodeObjectOfClass:[NSArray class] forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_PEOPLE_IDS_KEY]; + _placeID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_PLACE_ID_KEY]; + _previewPropertyName = [decoder decodeObjectOfClass:[NSString class] + forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_PREVIEW_PROPERTY_NAME_KEY]; + _ref = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_REF_KEY]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:_action forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_ACTION_KEY]; + [encoder encodeObject:_contentURL forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_CONTENT_URL_KEY]; + [encoder encodeObject:_peopleIDs forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_PEOPLE_IDS_KEY]; + [encoder encodeObject:_placeID forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_PLACE_ID_KEY]; + [encoder encodeObject:_previewPropertyName forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_PREVIEW_PROPERTY_NAME_KEY]; + [encoder encodeObject:_ref forKey:FBSDK_SHARE_OPEN_GRAPH_CONTENT_REF_KEY]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + FBSDKShareOpenGraphContent *copy = [[FBSDKShareOpenGraphContent alloc] init]; + copy->_action = [_action copy]; + copy->_contentURL = [_contentURL copy]; + copy->_peopleIDs = [_peopleIDs copy]; + copy->_placeID = [_placeID copy]; + copy->_previewPropertyName = [_previewPropertyName copy]; + copy->_ref = [_ref copy]; + return copy; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h new file mode 100644 index 0000000..3a1e1a5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h @@ -0,0 +1,58 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import + +/*! + @abstract An Open Graph Object for sharing. + @discussion The property keys MUST have namespaces specified on them, such as `og:image`, + and `og:type` is required. + + See https://developers.facebook.com/docs/sharing/opengraph/object-properties for other properties. + + You can specify nested namespaces inline to define complex properties. For example, the following + code will generate a fitness.course object with a location: + + FBSDKShareOpenGraphObject *course = [FBSDKShareOpenGraphObject objectWithProperties: + @{ + @"og:type": @"fitness.course", + @"og:title": @"Sample course", + @"fitness:metrics:location:latitude": @"41.40338", + @"fitness:metrics:location:longitude": @"2.17403", + }]; + */ +@interface FBSDKShareOpenGraphObject : FBSDKShareOpenGraphValueContainer + +/*! + @abstract Convenience method to build a new action and set the object for the specified key. + @param properties Properties for the Open Graph object, which will be parsed into the proper models + */ ++ (instancetype)objectWithProperties:(NSDictionary *)properties; + +/*! + @abstract Compares the receiver to another Open Graph Object. + @param object The other object + @return YES if the receiver's values are equal to the other object's values; otherwise NO + */ +- (BOOL)isEqualToShareOpenGraphObject:(FBSDKShareOpenGraphObject *)object; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m new file mode 100644 index 0000000..eb6a1c5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m @@ -0,0 +1,63 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareOpenGraphObject.h" + +#import "FBSDKShareOpenGraphValueContainer+Internal.h" + +#define FBSDK_SHARE_OPEN_GRAPH_OBJECT_DATA_KEY @"data" + +@implementation FBSDKShareOpenGraphObject + +#pragma mark - Class Methods + ++ (instancetype)objectWithProperties:(NSDictionary *)properties +{ + FBSDKShareOpenGraphObject *object = [[FBSDKShareOpenGraphObject alloc] init]; + [object parseProperties:properties]; + return object; +} + +#pragma mark - Equality + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if (![object isKindOfClass:[FBSDKShareOpenGraphObject class]]) { + return NO; + } + return [self isEqualToShareOpenGraphObject:(FBSDKShareOpenGraphObject *)object]; +} + +- (BOOL)isEqualToShareOpenGraphObject:(FBSDKShareOpenGraphObject *)object +{ + return [self isEqualToShareOpenGraphValueContainer:object]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + FBSDKShareOpenGraphObject *copy = [[FBSDKShareOpenGraphObject alloc] init]; + [copy parseProperties:[self allProperties]]; + return copy; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h new file mode 100644 index 0000000..4687828 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h @@ -0,0 +1,160 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@class FBSDKShareOpenGraphObject; +@class FBSDKSharePhoto; + +/*! + @abstract Protocol defining operations on open graph actions and objects. + @discussion The property keys MUST have namespaces specified on them, such as `og:image`. + */ +@protocol FBSDKShareOpenGraphValueContaining + +/*! + @abstract Gets an NSArray out of the receiver. + @param key The key for the value + @return The NSArray value or nil + */ +- (NSArray *)arrayForKey:(NSString *)key; + +/*! + @abstract Applies a given block object to the entries of the receiver. + @param block A block object to operate on entries in the receiver + */ +- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(NSString *key, id object, BOOL *stop))block; + +/*! + @abstract Returns an enumerator object that lets you access each key in the receiver. + @return An enumerator object that lets you access each key in the receiver + */ +- (NSEnumerator *)keyEnumerator; + +/*! + @abstract Gets an NSNumber out of the receiver. + @param key The key for the value + @return The NSNumber value or nil + */ +- (NSNumber *)numberForKey:(NSString *)key; + +/*! + @abstract Returns an enumerator object that lets you access each value in the receiver. + @return An enumerator object that lets you access each value in the receiver + */ +- (NSEnumerator *)objectEnumerator; + +/*! + @abstract Gets an FBSDKShareOpenGraphObject out of the receiver. + @param key The key for the value + @return The FBSDKShareOpenGraphObject value or nil + */ +- (FBSDKShareOpenGraphObject *)objectForKey:(NSString *)key; + +/*! + @abstract Enables subscript access to the values in the receiver. + @param key The key for the value + @return The value + */ +- (id)objectForKeyedSubscript:(NSString *)key; + +/*! + @abstract Parses properties out of a dictionary into the receiver. + @param properties The properties to parse. + */ +- (void)parseProperties:(NSDictionary *)properties; + +/*! + @abstract Gets an FBSDKSharePhoto out of the receiver. + @param key The key for the value + @return The FBSDKSharePhoto value or nil + */ +- (FBSDKSharePhoto *)photoForKey:(NSString *)key; + +/*! + @abstract Removes a value from the receiver for the specified key. + @param key The key for the value + */ +- (void)removeObjectForKey:(NSString *)key; + +/*! + @abstract Sets an NSArray on the receiver. + @discussion This method will throw if the array contains any values that is not an NSNumber, NSString, NSURL, + FBSDKSharePhoto or FBSDKShareOpenGraphObject. + @param array The NSArray value + @param key The key for the value + */ +- (void)setArray:(NSArray *)array forKey:(NSString *)key; + +/*! + @abstract Sets an NSNumber on the receiver. + @param number The NSNumber value + @param key The key for the value + */ +- (void)setNumber:(NSNumber *)number forKey:(NSString *)key; + +/*! + @abstract Sets an FBSDKShareOpenGraphObject on the receiver. + @param object The FBSDKShareOpenGraphObject value + @param key The key for the value + */ +- (void)setObject:(FBSDKShareOpenGraphObject *)object forKey:(NSString *)key; + +/*! + @abstract Sets an FBSDKSharePhoto on the receiver. + @param photo The FBSDKSharePhoto value + @param key The key for the value + */ +- (void)setPhoto:(FBSDKSharePhoto *)photo forKey:(NSString *)key; + +/*! + @abstract Sets an NSString on the receiver. + @param string The NSString value + @param key The key for the value + */ +- (void)setString:(NSString *)string forKey:(NSString *)key; + +/*! + @abstract Sets an NSURL on the receiver. + @param URL The NSURL value + @param key The key for the value + */ +- (void)setURL:(NSURL *)URL forKey:(NSString *)key; + +/*! + @abstract Gets an NSString out of the receiver. + @param key The key for the value + @return The NSString value or nil + */ +- (NSString *)stringForKey:(NSString *)key; + +/*! + @abstract Gets an NSURL out of the receiver. + @param key The key for the value + @return The NSURL value or nil + */ +- (NSURL *)URLForKey:(NSString *)key; + +@end + +/*! + @abstract A base class to container Open Graph values. + */ +@interface FBSDKShareOpenGraphValueContainer : NSObject + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m new file mode 100644 index 0000000..d19ce08 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m @@ -0,0 +1,238 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareOpenGraphValueContainer.h" +#import "FBSDKShareOpenGraphValueContainer+Internal.h" + +#import + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareOpenGraphObject.h" +#import "FBSDKSharePhoto.h" +#import "FBSDKShareUtility.h" + +#define FBSDK_SHARE_OPEN_GRAPH_VALUE_CONTAINER_PROPERTIES_KEY @"properties" + +@implementation FBSDKShareOpenGraphValueContainer +{ + NSMutableDictionary *_properties; +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + if ((self = [super init])) { + _properties = [[NSMutableDictionary alloc] init]; + } + return self; +} + +#pragma mark - Public Methods + +- (NSDictionary *)allData +{ + return [_properties copy]; +} + +- (NSArray *)arrayForKey:(NSString *)key +{ + return [self _valueOfClass:[NSArray class] forKey:key]; +} + +- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(NSString *key, id object, BOOL *stop))block +{ + [_properties enumerateKeysAndObjectsUsingBlock:block]; +} + +- (NSEnumerator *)keyEnumerator +{ + return [_properties keyEnumerator]; +} + +- (NSNumber *)numberForKey:(NSString *)key +{ + return [self _valueOfClass:[NSNumber class] forKey:key]; +} + +- (NSEnumerator *)objectEnumerator +{ + return [_properties objectEnumerator]; +} + +- (FBSDKShareOpenGraphObject *)objectForKey:(NSString *)key +{ + return [self _valueOfClass:[FBSDKShareOpenGraphObject class] forKey:key]; +} + +- (id)objectForKeyedSubscript:(id)key +{ + return [self _valueForKey:key]; +} + +- (void)parseProperties:(NSDictionary *)properties +{ + [FBSDKShareUtility assertOpenGraphValues:properties requireKeyNamespace:[self requireKeyNamespace]]; + [_properties addEntriesFromDictionary:[FBSDKShareUtility convertOpenGraphValues:properties]]; +} + +- (FBSDKSharePhoto *)photoForKey:(NSString *)key +{ + return [self _valueOfClass:[FBSDKSharePhoto class] forKey:key]; +} + +- (void)removeObjectForKey:(NSString *)key +{ + [_properties removeObjectForKey:key]; +} + +- (void)setArray:(NSArray *)array forKey:(NSString *)key +{ + [self _setValue:array forKey:key]; +} + +- (void)setNumber:(NSNumber *)number forKey:(NSString *)key +{ + [self _setValue:number forKey:key]; +} + +- (void)setObject:(FBSDKShareOpenGraphObject *)object forKey:(NSString *)key +{ + [self _setValue:object forKey:key]; +} + +- (void)setPhoto:(FBSDKSharePhoto *)photo forKey:(NSString *)key +{ + [self _setValue:photo forKey:key]; +} + +- (void)setString:(NSString *)string forKey:(NSString *)key +{ + [self _setValue:string forKey:key]; +} + +- (void)setURL:(NSURL *)URL forKey:(NSString *)key +{ + [self _setValue:URL forKey:key]; +} +- (NSString *)stringForKey:(NSString *)key +{ + return [self _valueOfClass:[NSString class] forKey:key]; +} + +- (NSURL *)URLForKey:(NSString *)key +{ + return [self _valueOfClass:[NSURL class] forKey:key]; +} + +- (id)valueForKey:(NSString *)key +{ + return [self _valueForKey:key] ?: [super valueForKey:key]; +} + +#pragma mark - Internal Methods + +- (NSDictionary *)allProperties +{ + return _properties; +} + +- (BOOL)requireKeyNamespace +{ + return YES; +} + +#pragma mark - Equality + +- (NSUInteger)hash +{ + return [_properties hash]; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if (![object isKindOfClass:[FBSDKShareOpenGraphValueContainer class]]) { + return NO; + } + return [self isEqualToShareOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)object]; +} + +- (BOOL)isEqualToShareOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)object +{ + return [FBSDKInternalUtility object:_properties isEqualToObject:[object allProperties]]; +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [self init])) { + NSSet *classes = [NSSet setWithObjects: + [NSArray class], + [NSDictionary class], + [FBSDKShareOpenGraphObject class], + [FBSDKSharePhoto class], + nil]; + NSDictionary *properties = [decoder decodeObjectOfClasses:classes + forKey:FBSDK_SHARE_OPEN_GRAPH_VALUE_CONTAINER_PROPERTIES_KEY]; + if ([properties count]) { + [self parseProperties:properties]; + } + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:_properties forKey:FBSDK_SHARE_OPEN_GRAPH_VALUE_CONTAINER_PROPERTIES_KEY]; +} + +#pragma mark - Helper Methods + +- (void)_setValue:(id)value forKey:(NSString *)key +{ + [FBSDKShareUtility assertOpenGraphKey:key requireNamespace:[self requireKeyNamespace]]; + [FBSDKShareUtility assertOpenGraphValue:value]; + if (value) { + _properties[key] = value; + } else { + [self removeObjectForKey:key]; + } +} + +- (id)_valueForKey:(id)key +{ + key = [FBSDKTypeUtility stringValue:key]; + return (key ? [FBSDKTypeUtility objectValue:_properties[key]] : nil); +} + +- (id)_valueOfClass:(__unsafe_unretained Class)cls forKey:(NSString *)key +{ + id value = [self _valueForKey:key]; + return ([value isKindOfClass:cls] ? value : nil); +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h new file mode 100644 index 0000000..c3b91a6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h @@ -0,0 +1,80 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @abstract A photo for sharing. + */ +@interface FBSDKSharePhoto : NSObject + +/*! + @abstract Convenience method to build a new photo object with an image. + @param image If the photo is resident in memory, this method supplies the data + @param userGenerated Specifies whether the photo represented by the receiver was generated by the user or by the + application + */ ++ (instancetype)photoWithImage:(UIImage *)image userGenerated:(BOOL)userGenerated; + +/*! + @abstract Convenience method to build a new photo object with an imageURL. + @param imageURL The URL to the photo + @param userGenerated Specifies whether the photo represented by the receiver was generated by the user or by the + application + @discussion This method should only be used when adding photo content to open graph stories. + For example, if you're trying to share a photo from the web by itself, download the image and use + `photoWithImage:userGenerated:` instead. + */ ++ (instancetype)photoWithImageURL:(NSURL *)imageURL userGenerated:(BOOL)userGenerated; + +/*! + @abstract If the photo is resident in memory, this method supplies the data. + @return UIImage representation of the photo + */ +@property (nonatomic, strong) UIImage *image; + +/*! + @abstract The URL to the photo. + @return URL that points to a network location or the location of the photo on disk + */ +@property (nonatomic, copy) NSURL *imageURL; + +/*! + @abstract Specifies whether the photo represented by the receiver was generated by the user or by the application. + @return YES if the photo is user-generated, otherwise NO + */ +@property (nonatomic, assign, getter=isUserGenerated) BOOL userGenerated; + +/*! + @abstract Compares the receiver to another photo. + @param photo The other photo + @return YES if the receiver's values are equal to the other photo's values; otherwise NO + */ +- (BOOL)isEqualToSharePhoto:(FBSDKSharePhoto *)photo; + +/*! + @abstract The user generated caption for the photo. Note that the 'caption' must come from + * the user, as pre-filled content is forbidden by the Platform Policies (2.3). + @return the Photo's caption if exists else returns null. + */ +@property (nonatomic, copy) NSString *caption; + + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m new file mode 100644 index 0000000..27c67b5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m @@ -0,0 +1,119 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKSharePhoto.h" + +#import "FBSDKCoreKit+Internal.h" + +#define FBSDK_SHARE_PHOTO_IMAGE_KEY @"image" +#define FBSDK_SHARE_PHOTO_IMAGE_URL_KEY @"imageURL" +#define FBSDK_SHARE_PHOTO_USER_GENERATED_KEY @"userGenerated" +#define FBSDK_SHARE_PHOTO_CAPTION_KEY @"caption" + +@implementation FBSDKSharePhoto + +#pragma mark - Class Methods + ++ (instancetype)photoWithImage:(UIImage *)image userGenerated:(BOOL)userGenerated +{ + FBSDKSharePhoto *photo = [[self alloc] init]; + photo.image = image; + photo.userGenerated = userGenerated; + return photo; +} + ++ (instancetype)photoWithImageURL:(NSURL *)imageURL userGenerated:(BOOL)userGenerated +{ + FBSDKSharePhoto *photo = [[self alloc] init]; + photo.imageURL = imageURL; + photo.userGenerated = userGenerated; + return photo; +} + +#pragma mark - Equality + +- (NSUInteger)hash +{ + NSUInteger subhashes[] = { + [_image hash], + [_imageURL hash], + [_caption hash], + (_userGenerated ? 1u : 0u) + }; + return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if (![object isKindOfClass:[FBSDKSharePhoto class]]) { + return NO; + } + return [self isEqualToSharePhoto:(FBSDKSharePhoto *)object]; +} + +- (BOOL)isEqualToSharePhoto:(FBSDKSharePhoto *)photo +{ + return (photo && + (_userGenerated == photo.userGenerated) && + [FBSDKInternalUtility object:_image isEqualToObject:photo.image] && + [FBSDKInternalUtility object:_imageURL isEqualToObject:photo.imageURL] && + [FBSDKInternalUtility object:_caption isEqualToObject:photo.caption]); +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [self init])) { + _image = [decoder decodeObjectOfClass:[UIImage class] forKey:FBSDK_SHARE_PHOTO_IMAGE_KEY]; + _imageURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_SHARE_PHOTO_IMAGE_URL_KEY]; + _userGenerated = [decoder decodeBoolForKey:FBSDK_SHARE_PHOTO_USER_GENERATED_KEY]; + _caption = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_PHOTO_CAPTION_KEY]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:_image forKey:FBSDK_SHARE_PHOTO_IMAGE_KEY]; + [encoder encodeObject:_imageURL forKey:FBSDK_SHARE_PHOTO_IMAGE_URL_KEY]; + [encoder encodeBool:_userGenerated forKey:FBSDK_SHARE_PHOTO_USER_GENERATED_KEY]; + [encoder encodeObject:_caption forKey:FBSDK_SHARE_PHOTO_CAPTION_KEY]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + FBSDKSharePhoto *copy = [[FBSDKSharePhoto alloc] init]; + copy->_image = [_image copy]; + copy->_imageURL = [_imageURL copy]; + copy->_userGenerated = _userGenerated; + copy->_caption = [_caption copy]; + return copy; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h new file mode 100644 index 0000000..1fd0782 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h @@ -0,0 +1,41 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @abstract A model for photo content to be shared. + */ +@interface FBSDKSharePhotoContent : NSObject + +/*! + @abstract Photos to be shared. + @return Array of the photos (FBSDKSharePhoto) + */ +@property (nonatomic, copy) NSArray *photos; + +/*! + @abstract Compares the receiver to another photo content. + @param content The other content + @return YES if the receiver's values are equal to the other content's values; otherwise NO + */ +- (BOOL)isEqualToSharePhotoContent:(FBSDKSharePhotoContent *)content; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m new file mode 100644 index 0000000..b26b468 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m @@ -0,0 +1,133 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKSharePhotoContent.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKSharePhoto.h" +#import "FBSDKShareUtility.h" + +#define FBSDK_SHARE_PHOTO_CONTENT_CONTENT_URL_KEY @"contentURL" +#define FBSDK_SHARE_PHOTO_CONTENT_PEOPLE_IDS_KEY @"peopleIDs" +#define FBSDK_SHARE_PHOTO_CONTENT_PHOTOS_KEY @"photos" +#define FBSDK_SHARE_PHOTO_CONTENT_PLACE_ID_KEY @"placeID" +#define FBSDK_SHARE_PHOTO_CONTENT_REF_KEY @"ref" + +@implementation FBSDKSharePhotoContent + +#pragma mark - Properties + +@synthesize contentURL = _contentURL; +@synthesize peopleIDs = _peopleIDs; +@synthesize placeID = _placeID; +@synthesize ref = _ref; + +- (void)setPeopleIDs:(NSArray *)peopleIDs +{ + [FBSDKShareUtility assertCollection:peopleIDs ofClass:[NSString class] name:@"peopleIDs"]; + if (![FBSDKInternalUtility object:_peopleIDs isEqualToObject:peopleIDs]) { + _peopleIDs = [peopleIDs copy]; + } +} + +- (void)setPhotos:(NSArray *)photos +{ + [FBSDKShareUtility assertCollection:photos ofClass:[FBSDKSharePhoto class] name:@"photos"]; + if (![FBSDKInternalUtility object:_photos isEqualToObject:photos]) { + _photos = [photos copy]; + } +} + +#pragma mark - Equality + +- (NSUInteger)hash +{ + NSUInteger subhashes[] = { + [_contentURL hash], + [_peopleIDs hash], + [_photos hash], + [_placeID hash], + [_ref hash], + }; + return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if (![object isKindOfClass:[FBSDKSharePhotoContent class]]) { + return NO; + } + return [self isEqualToSharePhotoContent:(FBSDKSharePhotoContent *)object]; +} + +- (BOOL)isEqualToSharePhotoContent:(FBSDKSharePhotoContent *)content +{ + return (content && + [FBSDKInternalUtility object:_contentURL isEqualToObject:content.contentURL] && + [FBSDKInternalUtility object:_peopleIDs isEqualToObject:content.peopleIDs] && + [FBSDKInternalUtility object:_photos isEqualToObject:content.photos] && + [FBSDKInternalUtility object:_placeID isEqualToObject:content.placeID] && + [FBSDKInternalUtility object:_ref isEqualToObject:content.ref]); +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [self init])) { + _contentURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_SHARE_PHOTO_CONTENT_CONTENT_URL_KEY]; + _peopleIDs = [decoder decodeObjectOfClass:[NSArray class] forKey:FBSDK_SHARE_PHOTO_CONTENT_PEOPLE_IDS_KEY]; + NSSet *classes = [NSSet setWithObjects:[NSArray class], [FBSDKSharePhoto class], nil]; + _photos = [decoder decodeObjectOfClasses:classes forKey:FBSDK_SHARE_PHOTO_CONTENT_PHOTOS_KEY]; + _placeID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_PHOTO_CONTENT_PLACE_ID_KEY]; + _ref = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_PHOTO_CONTENT_REF_KEY]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:_contentURL forKey:FBSDK_SHARE_PHOTO_CONTENT_CONTENT_URL_KEY]; + [encoder encodeObject:_peopleIDs forKey:FBSDK_SHARE_PHOTO_CONTENT_PEOPLE_IDS_KEY]; + [encoder encodeObject:_photos forKey:FBSDK_SHARE_PHOTO_CONTENT_PHOTOS_KEY]; + [encoder encodeObject:_placeID forKey:FBSDK_SHARE_PHOTO_CONTENT_PLACE_ID_KEY]; + [encoder encodeObject:_ref forKey:FBSDK_SHARE_PHOTO_CONTENT_REF_KEY]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + FBSDKSharePhotoContent *copy = [[FBSDKSharePhotoContent alloc] init]; + copy->_contentURL = [_contentURL copy]; + copy->_peopleIDs = [_peopleIDs copy]; + copy->_photos = [_photos copy]; + copy->_placeID = [_placeID copy]; + copy->_ref = [_ref copy]; + return copy; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h new file mode 100644 index 0000000..2b6ae0c --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h @@ -0,0 +1,48 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @abstract A video for sharing. + */ +@interface FBSDKShareVideo : NSObject + +/*! + @abstract Convenience method to build a new video object with a videoURL. + @param videoURL The URL to the video + application + */ ++ (instancetype)videoWithVideoURL:(NSURL *)videoURL; + +/*! + @abstract The file URL to the video. + @return URL that points to the location of the video on disk + */ +@property (nonatomic, copy) NSURL *videoURL; + +/*! + @abstract Compares the receiver to another video. + @param video The other video + @return YES if the receiver's values are equal to the other video's values; otherwise NO + */ +- (BOOL)isEqualToShareVideo:(FBSDKShareVideo *)video; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m new file mode 100644 index 0000000..ad8e10f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m @@ -0,0 +1,89 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareVideo.h" + +#import "FBSDKCoreKit+Internal.h" + +#define FBSDK_SHARE_VIDEO_URL_KEY @"videoURL" + +@implementation FBSDKShareVideo + +#pragma mark - Class Methods + ++ (instancetype)videoWithVideoURL:(NSURL *)videoURL +{ + FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init]; + video.videoURL = videoURL; + return video; +} + +#pragma mark - Equality + +- (NSUInteger)hash +{ + return [_videoURL hash]; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if (![object isKindOfClass:[FBSDKShareVideo class]]) { + return NO; + } + return [self isEqualToShareVideo:(FBSDKShareVideo *)object]; +} + +- (BOOL)isEqualToShareVideo:(FBSDKShareVideo *)video +{ + return (video && + [FBSDKInternalUtility object:_videoURL isEqualToObject:video.videoURL]); +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [self init])) { + _videoURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_SHARE_VIDEO_URL_KEY]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:_videoURL forKey:FBSDK_SHARE_VIDEO_URL_KEY]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + FBSDKShareVideo *copy = [[FBSDKShareVideo alloc] init]; + copy->_videoURL = [_videoURL copy]; + return copy; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h new file mode 100644 index 0000000..bead676 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h @@ -0,0 +1,49 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import +#import +#import + +/*! + @abstract A model for video content to be shared. + */ +@interface FBSDKShareVideoContent : NSObject + +/*! + @abstract The photo that represents the video. + @return The photo + */ +@property (nonatomic, copy) FBSDKSharePhoto *previewPhoto; + +/*! + @abstract The video to be shared. + @return The video + */ +@property (nonatomic, copy) FBSDKShareVideo *video; + +/*! + @abstract Compares the receiver to another video content. + @param content The other content + @return YES if the receiver's values are equal to the other content's values; otherwise NO + */ +- (BOOL)isEqualToShareVideoContent:(FBSDKShareVideoContent *)content; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m new file mode 100644 index 0000000..90b3938 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m @@ -0,0 +1,130 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareVideoContent.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareUtility.h" + +#define FBSDK_SHARE_VIDEO_CONTENT_CONTENT_URL_KEY @"contentURL" +#define FBSDK_SHARE_VIDEO_CONTENT_PEOPLE_IDS_KEY @"peopleIDs" +#define FBSDK_SHARE_VIDEO_CONTENT_PLACE_ID_KEY @"placeID" +#define FBSDK_SHARE_VIDEO_CONTENT_PREVIEW_PHOTO_KEY @"previewPhoto" +#define FBSDK_SHARE_VIDEO_CONTENT_REF_KEY @"ref" +#define FBSDK_SHARE_VIDEO_CONTENT_VIDEO_KEY @"video" + +@implementation FBSDKShareVideoContent + +#pragma mark - Properties + +@synthesize contentURL = _contentURL; +@synthesize peopleIDs = _peopleIDs; +@synthesize placeID = _placeID; +@synthesize ref = _ref; + +- (void)setPeopleIDs:(NSArray *)peopleIDs +{ + [FBSDKShareUtility assertCollection:peopleIDs ofClass:[NSString class] name:@"peopleIDs"]; + if (![FBSDKInternalUtility object:_peopleIDs isEqualToObject:peopleIDs]) { + _peopleIDs = [peopleIDs copy]; + } +} + +#pragma mark - Equality + +- (NSUInteger)hash +{ + NSUInteger subhashes[] = { + [_contentURL hash], + [_peopleIDs hash], + [_placeID hash], + [_previewPhoto hash], + [_ref hash], + [_video hash], + }; + return [FBSDKMath hashWithIntegerArray:subhashes count:sizeof(subhashes) / sizeof(subhashes[0])]; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if (![object isKindOfClass:[FBSDKShareVideoContent class]]) { + return NO; + } + return [self isEqualToShareVideoContent:(FBSDKShareVideoContent *)object]; +} + +- (BOOL)isEqualToShareVideoContent:(FBSDKShareVideoContent *)content +{ + return (content && + [FBSDKInternalUtility object:_contentURL isEqualToObject:content.contentURL] && + [FBSDKInternalUtility object:_peopleIDs isEqualToObject:content.peopleIDs] && + [FBSDKInternalUtility object:_placeID isEqualToObject:content.placeID] && + [FBSDKInternalUtility object:_previewPhoto isEqualToObject:content.previewPhoto] && + [FBSDKInternalUtility object:_ref isEqualToObject:content.ref] && + [FBSDKInternalUtility object:_video isEqualToObject:content.video]); +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [self init])) { + _contentURL = [decoder decodeObjectOfClass:[NSURL class] forKey:FBSDK_SHARE_VIDEO_CONTENT_CONTENT_URL_KEY]; + _peopleIDs = [decoder decodeObjectOfClass:[NSArray class] forKey:FBSDK_SHARE_VIDEO_CONTENT_PEOPLE_IDS_KEY]; + _placeID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_VIDEO_CONTENT_PLACE_ID_KEY]; + _previewPhoto = [decoder decodeObjectOfClass:[FBSDKSharePhoto class] + forKey:FBSDK_SHARE_VIDEO_CONTENT_PREVIEW_PHOTO_KEY]; + _ref = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_SHARE_VIDEO_CONTENT_REF_KEY]; + _video = [decoder decodeObjectOfClass:[FBSDKShareVideo class] forKey:FBSDK_SHARE_VIDEO_CONTENT_VIDEO_KEY]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:_contentURL forKey:FBSDK_SHARE_VIDEO_CONTENT_CONTENT_URL_KEY]; + [encoder encodeObject:_peopleIDs forKey:FBSDK_SHARE_VIDEO_CONTENT_PEOPLE_IDS_KEY]; + [encoder encodeObject:_placeID forKey:FBSDK_SHARE_VIDEO_CONTENT_PLACE_ID_KEY]; + [encoder encodeObject:_previewPhoto forKey:FBSDK_SHARE_VIDEO_CONTENT_PREVIEW_PHOTO_KEY]; + [encoder encodeObject:_ref forKey:FBSDK_SHARE_VIDEO_CONTENT_REF_KEY]; + [encoder encodeObject:_video forKey:FBSDK_SHARE_VIDEO_CONTENT_VIDEO_KEY]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + FBSDKShareVideoContent *copy = [[FBSDKShareVideoContent alloc] init]; + copy->_contentURL = [_contentURL copy]; + copy->_peopleIDs = [_peopleIDs copy]; + copy->_placeID = [_placeID copy]; + copy->_previewPhoto = [_previewPhoto copy]; + copy->_ref = [_ref copy]; + copy->_video = [_video copy]; + return copy; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h new file mode 100644 index 0000000..d6d373e --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h @@ -0,0 +1,110 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +@protocol FBSDKSharingDelegate; + +/*! + @abstract The common interface for components that initiate sharing. + @see FBSDKShareDialog + @see FBSDKMessageDialog + @see FBSDKShareAPI + */ +@protocol FBSDKSharing + +/*! + @abstract The receiver's delegate or nil if it doesn't have a delegate. + */ +@property (nonatomic, weak) id delegate; + +/*! + @abstract The content to be shared. + */ +@property (nonatomic, copy) id shareContent; + +/*! + @abstract A Boolean value that indicates whether the receiver should fail if it finds an error with the share content. + @discussion If NO, the sharer will still be displayed without the data that was mis-configured. For example, an + invalid placeID specified on the shareContent would produce a data error. + */ +@property (nonatomic, assign) BOOL shouldFailOnDataError; + +/*! + @abstract Validates the content on the receiver. + @param errorRef If an error occurs, upon return contains an NSError object that describes the problem. + @return YES if the content is valid, otherwise NO. + */ +- (BOOL)validateWithError:(NSError **)errorRef; + +@end + +/*! + @abstract The common interface for dialogs that initiate sharing. + */ +@protocol FBSDKSharingDialog + +/*! + @abstract A Boolean value that indicates whether the receiver can initiate a share. + @discussion May return NO if the appropriate Facebook app is not installed and is required or an access token is + required but not available. This method does not validate the content on the receiver, so this can be checked before + building up the content. + @see [FBSDKSharing validateWithError:] + @result YES if the receiver can share, otherwise NO. + */ +- (BOOL)canShow; + +/*! + @abstract Shows the dialog. + @result YES if the receiver was able to begin sharing, otherwise NO. + */ +- (BOOL)show; + +@end + +/*! + @abstract A delegate for FBSDKSharing. + @discussion The delegate is notified with the results of the sharer as long as the application has permissions to + receive the information. For example, if the person is not signed into the containing app, the sharer may not be able + to distinguish between completion of a share and cancellation. + */ +@protocol FBSDKSharingDelegate + +/*! + @abstract Sent to the delegate when the share completes without error or cancellation. + @param sharer The FBSDKSharing that completed. + @param results The results from the sharer. This may be nil or empty. + */ +- (void)sharer:(id)sharer didCompleteWithResults:(NSDictionary *)results; + +/*! + @abstract Sent to the delegate when the sharer encounters an error. + @param sharer The FBSDKSharing that completed. + @param error The error. + */ +- (void)sharer:(id)sharer didFailWithError:(NSError *)error; + +/*! + @abstract Sent to the delegate when the sharer is cancelled. + @param sharer The FBSDKSharing that completed. + */ +- (void)sharerDidCancel:(id)sharer; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h new file mode 100644 index 0000000..a3af423 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h @@ -0,0 +1,35 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @abstract The common interface for sharing buttons. + @see FBSDKSendButton + @see FBSDKShareButton + */ +@protocol FBSDKSharingButton + +/*! + @abstract The content to be shared. + */ +@property (nonatomic, copy) id shareContent; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h new file mode 100644 index 0000000..5f70083 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h @@ -0,0 +1,56 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +/*! + @abstract A base interface for content to be shared. + */ +@protocol FBSDKSharingContent + +/*! + @abstract URL for the content being shared. + @discussion This URL will be checked for all link meta tags for linking in platform specific ways. See documentation + for App Links (https://developers.facebook.com/docs/applinks/) + @return URL representation of the content link + */ +@property (nonatomic, copy) NSURL *contentURL; + +/*! + @abstract List of IDs for taggable people to tag with this content. + @description See documentation for Taggable Friends + (https://developers.facebook.com/docs/graph-api/reference/user/taggable_friends) + @return Array of IDs for people to tag (NSString) + */ +@property (nonatomic, copy) NSArray *peopleIDs; + +/*! + @abstract The ID for a place to tag with this content. + @return The ID for the place to tag + */ +@property (nonatomic, copy) NSString *placeID; + +/*! + @abstract A value to be added to the referrer URL when a person follows a link from this shared content on feed. + @return The ref for the content. + */ +@property (nonatomic, copy) NSString *ref; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h new file mode 100644 index 0000000..06fde34 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKCoreKit+Internal.h" + +@interface FBSDKCheckmarkIcon : FBSDKIcon + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m new file mode 100644 index 0000000..7f4da89 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m @@ -0,0 +1,43 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKCheckmarkIcon.h" + +@implementation FBSDKCheckmarkIcon + +- (CGPathRef)pathWithSize:(CGSize)size +{ + CGAffineTransform transformValue = CGAffineTransformMakeScale(size.width / 100.0, size.height / 100.0); + CGAffineTransform *transform = &transformValue; + CGMutablePathRef path = CGPathCreateMutable(); + CGPathMoveToPoint(path, transform, 0.0, 50.0); + const CGPoint points[] = { + CGPointMake(12.0, 38.0), + CGPointMake(37.0, 63.0), + CGPointMake(87.0, 13.0), + CGPointMake(99.0, 25.0), + CGPointMake(37.0, 87.0), + CGPointMake(0.0, 48.0), + }; + CGPathAddLines(path, transform, points, sizeof(points) / sizeof(points[0])); + CGPathRef result = CGPathCreateCopy(path); + CGPathRelease(path); + return CFAutorelease(result); +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h new file mode 100644 index 0000000..ad0a20e --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h @@ -0,0 +1,26 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@interface FBSDKGameRequestFrictionlessRecipientCache : NSObject + +- (BOOL)recipientsAreFrictionless:(id)recipients; +- (void)updateWithResults:(NSDictionary *)results; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m new file mode 100644 index 0000000..b1551d5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m @@ -0,0 +1,100 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKGameRequestFrictionlessRecipientCache.h" + +#import + +#import "FBSDKCoreKit+Internal.h" + +@implementation FBSDKGameRequestFrictionlessRecipientCache +{ + NSSet *_recipientIDs; +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + if ((self = [super init])) { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(_accessTokenDidChangeNotification:) + name:FBSDKAccessTokenDidChangeNotification + object:nil]; + [self _updateCache]; + } + return self; +} + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +#pragma mark - Public API + +- (BOOL)recipientsAreFrictionless:(id)recipients +{ + if (!recipients) { + return NO; + } + NSArray *recipientIDArray = [FBSDKTypeUtility arrayValue:recipients]; + if (!recipientIDArray && [recipients isKindOfClass:[NSString class]]) { + recipientIDArray = [recipients componentsSeparatedByString:@","]; + } + NSSet *recipientIDs = [[NSSet alloc] initWithArray:recipientIDArray]; + return [recipientIDs isSubsetOfSet:_recipientIDs]; +} + +- (void)updateWithResults:(NSDictionary *)results +{ + if ([FBSDKTypeUtility boolValue:results[@"updated_frictionless"]]) { + [self _updateCache]; + } +} + +#pragma mark - Helper Methods + +- (void)_accessTokenDidChangeNotification:(NSNotification *)notification +{ + if (![notification.userInfo[FBSDKAccessTokenDidChangeUserID] boolValue]) { + return; + } + _recipientIDs = nil; + [self _updateCache]; +} + +- (void)_updateCache +{ + if (![FBSDKAccessToken currentAccessToken]) { + _recipientIDs = nil; + } + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/apprequestformerrecipients" + parameters:@{@"fields":@""} + flags:(FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | + FBSDKGraphRequestFlagDisableErrorRecovery)]; + [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { + if (!error) { + NSArray *items = [FBSDKTypeUtility arrayValue:result[@"data"]]; + NSArray *recipientIDs = [items valueForKey:@"recipient_id"]; + _recipientIDs = [[NSSet alloc] initWithArray:recipientIDs]; + } + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h new file mode 100644 index 0000000..234c8d6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h @@ -0,0 +1,48 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import +#import + +#import + +#import + +FBSDK_EXTERN NSString *const FBSDKLikeActionControllerDidDisableNotification; +FBSDK_EXTERN NSString *const FBSDKLikeActionControllerDidResetNotification; +FBSDK_EXTERN NSString *const FBSDKLikeActionControllerDidUpdateNotification; +FBSDK_EXTERN NSString *const FBSDKLikeActionControllerAnimatedKey; + +@interface FBSDKLikeActionController : NSObject + ++ (BOOL)isDisabled; + +// this method will call beginContentAccess before returning the instance ++ (instancetype)likeActionControllerForObjectID:(NSString *)objectID objectType:(FBSDKLikeObjectType)objectType; + +@property (nonatomic, copy, readonly) NSDate *lastUpdateTime; +@property (nonatomic, copy, readonly) NSString *likeCountString; +@property (nonatomic, copy, readonly) NSString *objectID; +@property (nonatomic, assign, readonly) FBSDKLikeObjectType objectType; +@property (nonatomic, assign, readonly) BOOL objectIsLiked; +@property (nonatomic, copy, readonly) NSString *socialSentence; + +- (void)refresh; +- (void)toggleLikeWithSoundEnabled:(BOOL)soundEnabled analyticsParameters:(NSDictionary *)analyticsParameters fromViewController:(UIViewController *)fromViewController; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m new file mode 100644 index 0000000..e57d9d0 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m @@ -0,0 +1,1062 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLikeActionController.h" + +#import + +#import + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKLikeActionControllerCache.h" +#import "FBSDKLikeButtonPopWAV.h" +#import "FBSDKLikeDialog.h" + +NSString *const FBSDKLikeActionControllerDidDisableNotification = @"FBSDKLikeActionControllerDidDisableNotification"; +NSString *const FBSDKLikeActionControllerDidResetNotification = @"FBSDKLikeActionControllerDidResetNotification"; +NSString *const FBSDKLikeActionControllerDidUpdateNotification = @"FBSDKLikeActionControllerDidUpdateNotification"; +NSString *const FBSDKLikeActionControllerAnimatedKey = @"animated"; + +#define FBSDK_LIKE_ACTION_CONTROLLER_ANIMATION_DELAY 0.5 +#define FBSDK_LIKE_ACTION_CONTROLLER_SOUND_DELAY 0.15 +#define FBSDK_LIKE_ACTION_CONTROLLER_API_VERSION @"v2.1" + +#define FBSDK_LIKE_ACTION_CONTROLLER_LIKE_PROPERTY_KEY @"like" +#define FBSDK_LIKE_ACTION_CONTROLLER_REFRESH_PROPERTY_KEY @"refresh" + +#define FBSDK_LIKE_ACTION_CONTROLLER_LAST_UPDATE_TIME_KEY @"lastUpdateTime" +#define FBSDK_LIKE_ACTION_CONTROLLER_LIKE_COUNT_STRING_WITH_LIKE_KEY @"likeCountStringWithLike" +#define FBSDK_LIKE_ACTION_CONTROLLER_LIKE_COUNT_STRING_WITHOUT_LIKE_KEY @"likeCountStringWithoutLike" +#define FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_ID_KEY @"objectID" +#define FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_IS_LIKED_KEY @"objectIsLiked" +#define FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_TYPE_KEY @"objectType" +#define FBSDK_LIKE_ACTION_CONTROLLER_SOCIAL_SENTENCE_WITH_LIKE_KEY @"socialSentenceWithLike" +#define FBSDK_LIKE_ACTION_CONTROLLER_SOCIAL_SENTENCE_WITHOUT_LIKE_KEY @"socialSentenceWithoutLike" +#define FBSDK_LIKE_ACTION_CONTROLLER_UNLIKE_TOKEN_KEY @"unlikeToken" +#define FBSDK_LIKE_ACTION_CONTROLLER_VERSION_KEY @"version" + +#define FBSDK_LIKE_ACTION_CONTROLLER_VERSION 4 + +typedef NS_ENUM(NSUInteger, FBSDKLikeActionControllerRefreshMode) +{ + FBSDKLikeActionControllerRefreshModeInitial, + FBSDKLikeActionControllerRefreshModeForce, +}; + +typedef NS_ENUM(NSUInteger, FBSDKLikeActionControllerRefreshState) +{ + FBSDKLikeActionControllerRefreshStateNone, + FBSDKLikeActionControllerRefreshStateActive, + FBSDKLikeActionControllerRefreshStateComplete, +}; + +typedef void(^fbsdk_like_action_block)(FBSDKTriStateBOOL objectIsLiked, + NSString *likeCountStringWithLike, + NSString *likeCountStringWithoutLike, + NSString *socialSentenceWithLike, + NSString *socialSentenceWithoutLike, + NSString *unlikeToken, + BOOL likeStateChanged, + BOOL animated); + +typedef void(^fbsdk_like_action_controller_ensure_verified_object_id_completion_block)(NSString *verifiedObjectID); + +@interface FBSDKLikeActionController () +@end + +@implementation FBSDKLikeActionController +{ + FBSDKAccessToken *_accessToken; + NSUInteger _contentAccessCount; + BOOL _contentDiscarded; + NSMapTable *_dialogToAnalyticsParametersMap; + NSMapTable *_dialogToUpdateBlockMap; + NSString *_likeCountStringWithLike; + NSString *_likeCountStringWithoutLike; + BOOL _objectIsLikedIsPending; + BOOL _objectIsLikedOnServer; + BOOL _objectIsPage; + FBSDKLikeActionControllerRefreshState _refreshState; + NSString *_socialSentenceWithLike; + NSString *_socialSentenceWithoutLike; + NSString *_unlikeToken; + NSString *_verifiedObjectID; +} + +#pragma mark - Class Methods + +static BOOL _fbsdkLikeActionControllerDisabled = NO; + ++ (BOOL)isDisabled +{ + return _fbsdkLikeActionControllerDisabled; +} + +static FBSDKLikeActionControllerCache *_cache = nil; + ++ (void)initialize +{ + if (self == [FBSDKLikeActionController class]) { + NSString *accessTokenString = [FBSDKAccessToken currentAccessToken].tokenString; + if (accessTokenString) { + NSURL *fileURL = [self _cacheFileURL]; + NSData *data = [[NSData alloc] initWithContentsOfURL:fileURL]; + if (data) { + NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; + unarchiver.requiresSecureCoding = YES; + @try { + _cache = [unarchiver decodeObjectOfClass:[FBSDKLikeActionControllerCache class] + forKey:NSKeyedArchiveRootObjectKey]; + } + @catch (NSException *ex) { + // ignore decoding exceptions from previous versions of the archive, etc + } + if (![_cache.accessTokenString isEqualToString:accessTokenString]) { + _cache = nil; + } + } + } + if (!_cache) { + _cache = [[FBSDKLikeActionControllerCache alloc] initWithAccessTokenString:accessTokenString]; + } + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self + selector:@selector(_accessTokenDidChangeNotification:) + name:FBSDKAccessTokenDidChangeNotification + object:nil]; + [nc addObserver:self + selector:@selector(_applicationWillResignActiveNotification:) + name:UIApplicationWillResignActiveNotification + object:nil]; + } +} + ++ (void)_accessTokenDidChangeNotification:(NSNotification *)notification +{ + NSString *accessTokenString = [FBSDKAccessToken currentAccessToken].tokenString; + if ([accessTokenString isEqualToString:_cache.accessTokenString]) { + return; + } + [_cache resetForAccessTokenString:accessTokenString]; + [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKLikeActionControllerDidResetNotification object:nil]; +} + ++ (void)_applicationWillResignActiveNotification:(NSNotification *)notification +{ + NSURL *fileURL = [self _cacheFileURL]; + if (!fileURL) { + return; + } + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:_cache]; + if (data) { + [data writeToURL:fileURL atomically:YES]; + } else { + [[[NSFileManager alloc] init] removeItemAtURL:fileURL error:NULL]; + } +} + ++ (NSURL *)_cacheFileURL +{ + NSURL *directoryURL = [[[NSFileManager alloc] init] URLForDirectory:NSLibraryDirectory + inDomain:NSUserDomainMask + appropriateForURL:nil + create:YES + error:NULL]; + return [directoryURL URLByAppendingPathComponent:@"com-facebook-sdk-like-data"]; +} + + ++ (instancetype)likeActionControllerForObjectID:(NSString *)objectID objectType:(FBSDKLikeObjectType)objectType +{ + if (!objectID) { + return nil; + } + @synchronized(self) { + FBSDKLikeActionController *controller = _cache[objectID]; + FBSDKAccessToken *accessToken = [FBSDKAccessToken currentAccessToken]; + if (controller) { + [controller beginContentAccess]; + } else { + controller = [[self alloc] initWithObjectID:objectID objectType:objectType accessToken:accessToken]; + _cache[objectID] = controller; + } + [controller _refreshWithMode:FBSDKLikeActionControllerRefreshModeInitial]; + return controller; + } +} + +#pragma mark - Object Lifecycle + +- (instancetype)initWithObjectID:(NSString *)objectID + objectType:(FBSDKLikeObjectType)objectType + accessToken:(FBSDKAccessToken *)accessToken +{ + if ((self = [super init])) { + _objectID = [objectID copy]; + _objectType = objectType; + _accessToken = [accessToken copy]; + + [self _configure]; + } + return self; +} + +- (instancetype)init +{ + return [self initWithObjectID:nil objectType:FBSDKLikeObjectTypeUnknown accessToken:nil]; +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (instancetype)initWithCoder:(NSCoder *)decoder +{ + if ([decoder decodeIntegerForKey:FBSDK_LIKE_ACTION_CONTROLLER_VERSION_KEY] != FBSDK_LIKE_ACTION_CONTROLLER_VERSION) { + return nil; + } + + NSString *objectID = [decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_ID_KEY]; + if (!objectID) { + return nil; + } + + if ((self = [super init])) { + _objectID = [objectID copy]; + _accessToken = [FBSDKAccessToken currentAccessToken]; + + _lastUpdateTime = [[decoder decodeObjectOfClass:[NSDate class] forKey:FBSDK_LIKE_ACTION_CONTROLLER_LAST_UPDATE_TIME_KEY] copy]; + _likeCountStringWithLike = [[decoder decodeObjectOfClass:[NSString class] + forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_COUNT_STRING_WITH_LIKE_KEY] copy]; + _likeCountStringWithoutLike = [[decoder decodeObjectOfClass:[NSString class] + forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_COUNT_STRING_WITHOUT_LIKE_KEY] copy]; + _objectIsLiked = [decoder decodeBoolForKey:FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_IS_LIKED_KEY]; + _objectType = [decoder decodeIntegerForKey:FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_TYPE_KEY]; + _socialSentenceWithLike = [[decoder decodeObjectOfClass:[NSString class] + forKey:FBSDK_LIKE_ACTION_CONTROLLER_SOCIAL_SENTENCE_WITH_LIKE_KEY] copy]; + _socialSentenceWithoutLike = [[decoder decodeObjectOfClass:[NSString class] + forKey:FBSDK_LIKE_ACTION_CONTROLLER_SOCIAL_SENTENCE_WITHOUT_LIKE_KEY] copy]; + _unlikeToken = [[decoder decodeObjectOfClass:[NSString class] forKey:FBSDK_LIKE_ACTION_CONTROLLER_UNLIKE_TOKEN_KEY] copy]; + + [self _configure]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder +{ + [coder encodeObject:_lastUpdateTime forKey:FBSDK_LIKE_ACTION_CONTROLLER_LAST_UPDATE_TIME_KEY]; + [coder encodeObject:_likeCountStringWithLike forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_COUNT_STRING_WITH_LIKE_KEY]; + [coder encodeObject:_likeCountStringWithoutLike + forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_COUNT_STRING_WITHOUT_LIKE_KEY]; + [coder encodeObject:_objectID forKey:FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_ID_KEY]; + [coder encodeBool:_objectIsLiked forKey:FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_IS_LIKED_KEY]; + [coder encodeInteger:_objectType forKey:FBSDK_LIKE_ACTION_CONTROLLER_OBJECT_TYPE_KEY]; + [coder encodeObject:_socialSentenceWithLike forKey:FBSDK_LIKE_ACTION_CONTROLLER_SOCIAL_SENTENCE_WITH_LIKE_KEY]; + [coder encodeObject:_socialSentenceWithoutLike forKey:FBSDK_LIKE_ACTION_CONTROLLER_SOCIAL_SENTENCE_WITHOUT_LIKE_KEY]; + [coder encodeObject:_unlikeToken forKey:FBSDK_LIKE_ACTION_CONTROLLER_UNLIKE_TOKEN_KEY]; + [coder encodeInteger:FBSDK_LIKE_ACTION_CONTROLLER_VERSION forKey:FBSDK_LIKE_ACTION_CONTROLLER_VERSION_KEY]; +} + +#pragma mark - Properties + +- (NSString *)likeCountString +{ + return (_objectIsLiked ? _likeCountStringWithLike : _likeCountStringWithoutLike); +} + +- (NSString *)socialSentence +{ + return (_objectIsLiked ? _socialSentenceWithLike : _socialSentenceWithoutLike); +} + +#pragma mark - Public API + +- (void)refresh +{ + [self _refreshWithMode:FBSDKLikeActionControllerRefreshModeForce]; +} + +- (void)toggleLikeWithSoundEnabled:(BOOL)soundEnabled analyticsParameters:(NSDictionary *)analyticsParameters fromViewController:(UIViewController *)fromViewController +{ + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKLikeControlDidTap + valueToSum:nil + parameters:analyticsParameters + accessToken:_accessToken]; + + [self _setExecuting:YES forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_PROPERTY_KEY]; + + BOOL useOGLike = [self _useOGLike]; + BOOL deferred = !useOGLike; + + fbsdk_like_action_block updateBlock = ^(FBSDKTriStateBOOL objectIsLiked, + NSString *likeCountStringWithLike, + NSString *likeCountStringWithoutLike, + NSString *socialSentenceWithLike, + NSString *socialSentenceWithoutLike, + NSString *unlikeToken, + BOOL likeStateChanged, + BOOL animated){ + [self _updateWithObjectIsLiked:objectIsLiked + likeCountStringWithLike:likeCountStringWithLike + likeCountStringWithoutLike:likeCountStringWithoutLike + socialSentenceWithLike:socialSentenceWithLike + socialSentenceWithoutLike:socialSentenceWithoutLike + unlikeToken:unlikeToken + soundEnabled:soundEnabled && likeStateChanged + animated:animated && likeStateChanged + deferred:deferred]; + }; + + BOOL objectIsLiked = !_objectIsLiked; + + // optimistically update if using og.like (FAS will defer the update) + if (useOGLike) { + updateBlock(FBSDKTriStateBOOLFromBOOL(objectIsLiked), + _likeCountStringWithLike, + _likeCountStringWithoutLike, + _socialSentenceWithLike, + _socialSentenceWithoutLike, + _unlikeToken, + YES, + YES); + if (_objectIsLikedIsPending) { + return; + } + } + + if (objectIsLiked) { + if (useOGLike) { + [self _publishLikeWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; + } else { + [self _presentLikeDialogWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; + } + } else { + if (useOGLike && _unlikeToken) { + [self _publishUnlikeWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; + } else { + [self _presentLikeDialogWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; + } + } +} + +#pragma mark - NSDiscardableContent + +- (BOOL)beginContentAccess +{ + _contentDiscarded = NO; + _contentAccessCount++; + return YES; +} + +- (void)endContentAccess +{ + _contentAccessCount--; +} + +- (void)discardContentIfPossible +{ + if (_contentAccessCount == 0) { + _contentDiscarded = YES; + } +} + +- (BOOL)isContentDiscarded +{ + return _contentDiscarded; +} + +#pragma mark - FBSDKLikeDialogDelegate + +- (void)likeDialog:(FBSDKLikeDialog *)likeDialog didCompleteWithResults:(NSDictionary *)results +{ + FBSDKTriStateBOOL objectIsLiked = FBSDKTriStateBOOLFromNSNumber(results[@"object_is_liked"]); + NSString *likeCountString = [FBSDKTypeUtility stringValue:results[@"like_count_string"]]; + NSString *socialSentence = [FBSDKTypeUtility stringValue:results[@"social_sentence"]]; + NSString *unlikeToken = [FBSDKTypeUtility stringValue:results[@"unlike_token"]]; + BOOL likeStateChanged = ![[FBSDKTypeUtility stringValue:results[@"completionGesture"]] isEqualToString:@"cancel"]; + + fbsdk_like_action_block updateBlock = [_dialogToUpdateBlockMap objectForKey:likeDialog]; + if (updateBlock != NULL) { + // we do not need to specify values for with/without like, since we will fast-app-switch to change + // the value + updateBlock(objectIsLiked, + likeCountString, + likeCountString, + socialSentence, + socialSentence, + unlikeToken, + likeStateChanged, + YES); + } + [self _setExecuting:NO forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_PROPERTY_KEY]; +} + +- (void)likeDialog:(FBSDKLikeDialog *)likeDialog didFailWithError:(NSError *)error +{ + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorUIControlErrors + formatString:@"Like dialog error for %@(%@): %@", _objectID, NSStringFromFBSDKLikeObjectType(_objectType), error]; + + if ([error.userInfo[@"error_reason"] isEqualToString:@"dialog_disabled"]) { + _fbsdkLikeActionControllerDisabled = YES; + + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKLikeControlDidDisable + valueToSum:nil + parameters:[_dialogToAnalyticsParametersMap objectForKey:likeDialog] + accessToken:_accessToken]; + + [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKLikeActionControllerDidDisableNotification + object:self + userInfo:nil]; + } else { + FBSDKLikeActionControllerLogError(@"present_dialog", _objectID, _objectType, _accessToken, error); + } + [self _setExecuting:NO forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_PROPERTY_KEY]; +} + +#pragma mark - Helper Methods + +- (void)_configure +{ + NSPointerFunctionsOptions keyOptions = (NSPointerFunctionsStrongMemory | NSPointerFunctionsObjectPersonality); + NSPointerFunctionsOptions valueOptions = (NSPointerFunctionsStrongMemory | + NSPointerFunctionsObjectPersonality | + NSPointerFunctionsCopyIn); + _dialogToAnalyticsParametersMap = [[NSMapTable alloc] initWithKeyOptions:keyOptions valueOptions:valueOptions capacity:0]; + _dialogToUpdateBlockMap = [[NSMapTable alloc] initWithKeyOptions:keyOptions valueOptions:valueOptions capacity:0]; + + _contentAccessCount = 1; +} + +static void FBSDKLikeActionControllerLogError(NSString *currentAction, + NSString *objectID, + FBSDKLikeObjectType objectType, + FBSDKAccessToken *accessToken, + NSError *error) +{ + NSDictionary *parameters = @{ + @"object_id": objectID, + @"object_type": NSStringFromFBSDKLikeObjectType(objectType), + @"current_action": currentAction, + @"error": [error description] ?: @"", + }; + NSString *eventName = ([FBSDKError errorIsNetworkError:error] ? + FBSDKAppEventNameFBSDKLikeControlNetworkUnavailable : + FBSDKAppEventNameFBSDKLikeControlError); + [FBSDKAppEvents logImplicitEvent:eventName + valueToSum:nil + parameters:parameters + accessToken:accessToken]; +} + +typedef void(^fbsdk_like_action_controller_get_engagement_completion_block)(BOOL success, + NSString *likeCountStringWithLike, + NSString *likeCountStringWithoutLike, + NSString *socialSentenceWithLike, + NSString *socialSentenceWithoutLike); +static void FBSDKLikeActionControllerAddGetEngagementRequest(FBSDKAccessToken *accessToken, + FBSDKGraphRequestConnection *connection, + NSString *objectID, + FBSDKLikeObjectType objectType, + fbsdk_like_action_controller_get_engagement_completion_block completionHandler) +{ + if (completionHandler == NULL) { + return; + } + NSString *fields = @"engagement.fields(count_string_with_like,count_string_without_like,social_sentence_with_like," + @"social_sentence_without_like)"; + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:objectID + parameters:@{ @"fields": fields } + tokenString:accessToken.tokenString + HTTPMethod:@"GET" + flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; + [connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { + BOOL success = NO; + NSString *likeCountStringWithLike = nil; + NSString *likeCountStringWithoutLike = nil; + NSString *socialSentenceWithLike = nil; + NSString *socialSentenceWithoutLike = nil; + if (error) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorUIControlErrors + formatString:@"Error fetching engagement for %@ (%@): %@", + objectID, + NSStringFromFBSDKLikeObjectType(objectType), + error]; + FBSDKLikeActionControllerLogError(@"get_engagement", objectID, objectType, accessToken, error); + } else { + success = YES; + result = [FBSDKTypeUtility dictionaryValue:result]; + likeCountStringWithLike = [FBSDKTypeUtility stringValue:[result valueForKeyPath:@"engagement.count_string_with_like"]]; + likeCountStringWithoutLike = [FBSDKTypeUtility stringValue:[result valueForKeyPath:@"engagement.count_string_without_like"]]; + socialSentenceWithLike = [FBSDKTypeUtility stringValue:[result valueForKeyPath:@"engagement.social_sentence_with_like"]]; + socialSentenceWithoutLike = [FBSDKTypeUtility stringValue:[result valueForKeyPath:@"engagement.social_sentence_without_like"]]; + } + completionHandler(success, + likeCountStringWithLike, + likeCountStringWithoutLike, + socialSentenceWithLike, + socialSentenceWithoutLike); + }]; +} + +typedef void(^fbsdk_like_action_controller_get_object_id_completion_block)(BOOL success, + NSString *verifiedObjectID, + BOOL objectIsPage); +static void FBSDKLikeActionControllerAddGetObjectIDRequest(FBSDKAccessToken *accessToken, + FBSDKGraphRequestConnection *connection, + NSString *objectID, + fbsdk_like_action_controller_get_object_id_completion_block completionHandler) +{ + if (completionHandler == NULL) { + return; + } + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"" + parameters:@{ + @"fields": @"id", + @"id": objectID, + @"metadata": @"1", + @"type": @"og", + } + tokenString:accessToken.tokenString + HTTPMethod:@"GET" + flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; + + [connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { + result = [FBSDKTypeUtility dictionaryValue:result]; + NSString *verifiedObjectID = [FBSDKTypeUtility stringValue:result[@"id"]]; + BOOL objectIsPage = [FBSDKTypeUtility boolValue:[result valueForKeyPath:@"metadata.type"]]; + completionHandler(verifiedObjectID != nil, verifiedObjectID, objectIsPage); + }]; +} + +static void FBSDKLikeActionControllerAddGetObjectIDWithObjectURLRequest(FBSDKAccessToken *accessToken, + FBSDKGraphRequestConnection *connection, + NSString *objectID, + fbsdk_like_action_controller_get_object_id_completion_block completionHandler) +{ + if (completionHandler == NULL) { + return; + } + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"" + parameters:@{ + @"fields": @"og_object.fields(id)", + @"id": objectID, + } + tokenString:accessToken.tokenString + HTTPMethod:@"GET" + flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; + [connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { + result = [FBSDKTypeUtility dictionaryValue:result]; + NSString *verifiedObjectID = [FBSDKTypeUtility stringValue:[result valueForKeyPath:@"og_object.id"]]; + completionHandler(verifiedObjectID != nil, verifiedObjectID, NO); + }]; +} + +typedef void(^fbsdk_like_action_controller_get_og_object_like_completion_block)(BOOL success, + FBSDKTriStateBOOL objectIsLiked, + NSString *unlikeToken); +static void FBSDKLikeActionControllerAddGetOGObjectLikeRequest(FBSDKAccessToken *accessToken, + FBSDKGraphRequestConnection *connection, + NSString *objectID, + FBSDKLikeObjectType objectType, + fbsdk_like_action_controller_get_og_object_like_completion_block completionHandler) +{ + if (completionHandler == NULL) { + return; + } + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/og.likes" + parameters:@{ + @"fields": @"id,application", + @"object": objectID, + } + tokenString:accessToken.tokenString + HTTPMethod:@"GET" + flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery]; + + [connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { + BOOL success = NO; + FBSDKTriStateBOOL objectIsLiked = FBSDKTriStateBOOLValueUnknown; + NSString *unlikeToken = nil; + if (error) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorUIControlErrors + formatString:@"Error fetching like state for %@(%@): %@", objectID, NSStringFromFBSDKLikeObjectType(objectType), error]; + FBSDKLikeActionControllerLogError(@"get_og_object_like", objectID, objectType, accessToken, error); + } else { + success = YES; + result = [FBSDKTypeUtility dictionaryValue:result]; + NSArray *dataSet = [FBSDKTypeUtility arrayValue:result[@"data"]]; + for (NSDictionary *data in dataSet) { + objectIsLiked = FBSDKTriStateBOOLValueYES; + NSString *applicationID = [FBSDKTypeUtility stringValue:[data valueForKeyPath:@"application.id"]]; + if ([accessToken.appID isEqualToString:applicationID]) { + unlikeToken = [FBSDKTypeUtility stringValue:data[@"id"]]; + break; + } + } + } + completionHandler(success, objectIsLiked, unlikeToken); + }]; +} + +typedef void(^fbsdk_like_action_controller_publish_like_completion_block)(BOOL success, NSString *unlikeToken); +static void FBSDKLikeActionControllerAddPublishLikeRequest(FBSDKAccessToken *accessToken, + FBSDKGraphRequestConnection *connection, + NSString *objectID, + FBSDKLikeObjectType objectType, + fbsdk_like_action_controller_publish_like_completion_block completionHandler) +{ + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/og.likes" + parameters:@{ @"object": objectID } + tokenString:accessToken.tokenString + version:nil + HTTPMethod:@"POST"]; + [connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { + BOOL success = NO; + NSString *unlikeToken = nil; + if (error) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorUIControlErrors + formatString:@"Error liking object %@(%@): %@", objectID, NSStringFromFBSDKLikeObjectType(objectType), error]; + FBSDKLikeActionControllerLogError(@"publish_like", objectID, objectType, accessToken, error); + } else { + success = YES; + result = [FBSDKTypeUtility dictionaryValue:result]; + unlikeToken = [FBSDKTypeUtility stringValue:result[@"id"]]; + } + if (completionHandler != NULL) { + completionHandler(success, unlikeToken); + } + }]; +} + +typedef void(^fbsdk_like_action_controller_publish_unlike_completion_block)(BOOL success); +static void FBSDKLikeActionControllerAddPublishUnlikeRequest(FBSDKAccessToken *accessToken, + FBSDKGraphRequestConnection *connection, + NSString *unlikeToken, + FBSDKLikeObjectType objectType, + fbsdk_like_action_controller_publish_unlike_completion_block completionHandler) +{ + FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:unlikeToken + parameters:nil + tokenString:accessToken.tokenString + version:nil + HTTPMethod:@"DELETE"]; + [connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *innerConnection, id result, NSError *error) { + BOOL success = NO; + if (error) { + [FBSDKLogger singleShotLogEntry:FBSDKLoggingBehaviorUIControlErrors + formatString:@"Error unliking object with unlike token %@(%@): %@", unlikeToken, NSStringFromFBSDKLikeObjectType(objectType), error]; + FBSDKLikeActionControllerLogError(@"publish_unlike", unlikeToken, objectType, accessToken, error); + } else { + success = YES; + } + if (completionHandler != NULL) { + completionHandler(success); + } + }]; +} + +static void FBSDKLikeActionControllerAddRefreshRequests(FBSDKAccessToken *accessToken, + FBSDKGraphRequestConnection *connection, + NSString *objectID, + FBSDKLikeObjectType objectType, + fbsdk_like_action_block completionHandler) +{ + if (completionHandler == NULL) { + return; + } + __block FBSDKTriStateBOOL objectIsLiked = FBSDKTriStateBOOLValueUnknown; + __block NSString *likeCountStringWithLike = nil; + __block NSString *likeCountStringWithoutLike = nil; + __block NSString *socialSentenceWithLike = nil; + __block NSString *socialSentenceWithoutLike = nil; + __block NSString *unlikeToken = nil; + + void(^handleResults)(void) = ^{ + completionHandler(objectIsLiked, + likeCountStringWithLike, + likeCountStringWithoutLike, + socialSentenceWithLike, + socialSentenceWithoutLike, + unlikeToken, + NO, + NO); + }; + + fbsdk_like_action_controller_get_og_object_like_completion_block getLikeStateCompletionBlock = ^(BOOL success, + FBSDKTriStateBOOL innerObjectIsLiked, + NSString *innerUnlikeToken) { + if (success) { + objectIsLiked = innerObjectIsLiked; + if (innerUnlikeToken) { + unlikeToken = [innerUnlikeToken copy]; + } + } + }; + FBSDKLikeActionControllerAddGetOGObjectLikeRequest(accessToken, + connection, + objectID, + objectType, + getLikeStateCompletionBlock); + + fbsdk_like_action_controller_get_engagement_completion_block engagementCompletionBlock = ^(BOOL success, + NSString *innerLikeCountStringWithLike, + NSString *innerLikeCountStringWithoutLike, + NSString *innerSocialSentenceWithLike, + NSString *innerSocialSentenceWithoutLike) { + if (success) { + // Don't lose cached state if certain properties were not included + likeCountStringWithLike = [innerLikeCountStringWithLike copy]; + likeCountStringWithoutLike = [innerLikeCountStringWithoutLike copy]; + socialSentenceWithLike = [innerSocialSentenceWithLike copy]; + socialSentenceWithoutLike = [innerSocialSentenceWithoutLike copy]; + + handleResults(); + } + }; + FBSDKLikeActionControllerAddGetEngagementRequest(accessToken, + connection, + objectID, + objectType, + engagementCompletionBlock); +} + + +- (void)_ensureVerifiedObjectID:(fbsdk_like_action_controller_ensure_verified_object_id_completion_block)completion +{ + if (completion == NULL) { + return; + } + FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; + [connection overrideVersionPartWith:FBSDK_LIKE_ACTION_CONTROLLER_API_VERSION]; + if ([_objectID rangeOfString:@"://"].location != NSNotFound) { + FBSDKLikeActionControllerAddGetObjectIDWithObjectURLRequest(_accessToken, connection, _objectID, ^(BOOL success, + NSString *innerVerifiedObjectID, + BOOL innerObjectIsPage) { + if (success) { + _verifiedObjectID = [innerVerifiedObjectID copy]; + _objectIsPage = innerObjectIsPage; + } + }); + } + + FBSDKLikeActionControllerAddGetObjectIDRequest(_accessToken, connection, _objectID, ^(BOOL success, + NSString *innerVerifiedObjectID, + BOOL innerObjectIsPage) { + if (success) { + // if this was an URL based request, then we want to use the objectID from that request - this value will just + // be an echo of the URL + if (!_verifiedObjectID) { + _verifiedObjectID = [innerVerifiedObjectID copy]; + } + _objectIsPage = innerObjectIsPage; + } + if (_verifiedObjectID) { + completion(_verifiedObjectID); + } + }); + [connection start]; +} + +- (void)_presentLikeDialogWithUpdateBlock:(fbsdk_like_action_block)updateBlock + analyticsParameters:(NSDictionary *)analyticsParameters + fromViewController:(UIViewController *)fromViewController +{ + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKLikeControlDidPresentDialog + valueToSum:nil + parameters:analyticsParameters + accessToken:_accessToken]; + FBSDKLikeDialog *dialog = [[FBSDKLikeDialog alloc] init]; + dialog.objectID = _objectID; + dialog.objectType = _objectType; + dialog.delegate = self; + dialog.fromViewController = fromViewController; + [_dialogToUpdateBlockMap setObject:updateBlock forKey:dialog]; + [_dialogToAnalyticsParametersMap setObject:analyticsParameters forKey:dialog]; + if (![dialog like]) { + [self _setExecuting:NO forKey:FBSDK_LIKE_ACTION_CONTROLLER_LIKE_PROPERTY_KEY]; + } +} + +- (void)_publishIfNeededWithUpdateBlock:(fbsdk_like_action_block)updateBlock + analyticsParameters:(NSDictionary *)analyticsParameters + fromViewController:(UIViewController *)fromViewController +{ + BOOL objectIsLiked = _objectIsLiked; + if (_objectIsLikedOnServer != objectIsLiked) { + if (objectIsLiked) { + [self _publishLikeWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; + } else { + [self _publishUnlikeWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; + } + } +} + +- (void)_publishLikeWithUpdateBlock:(fbsdk_like_action_block)updateBlock + analyticsParameters:(NSDictionary *)analyticsParameters + fromViewController:(UIViewController *)fromViewController +{ + _objectIsLikedIsPending = YES; + [self _ensureVerifiedObjectID:^(NSString *verifiedObjectID) { + FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; + [connection overrideVersionPartWith:FBSDK_LIKE_ACTION_CONTROLLER_API_VERSION]; + fbsdk_like_action_controller_publish_like_completion_block completionHandler = ^(BOOL success, + NSString *unlikeToken) { + _objectIsLikedIsPending = NO; + if (success) { + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKLikeControlDidLike + valueToSum:nil + parameters:analyticsParameters + accessToken:_accessToken]; + _objectIsLikedOnServer = YES; + _unlikeToken = [unlikeToken copy]; + if (updateBlock != NULL) { + updateBlock(FBSDKTriStateBOOLFromBOOL(self.objectIsLiked), + _likeCountStringWithLike, + _likeCountStringWithoutLike, + _socialSentenceWithLike, + _socialSentenceWithoutLike, + _unlikeToken, + NO, + NO); + } + [self _publishIfNeededWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; + } else { + [self _presentLikeDialogWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; + } + }; + FBSDKLikeActionControllerAddPublishLikeRequest(_accessToken, + connection, + verifiedObjectID, + _objectType, + completionHandler); + [connection start]; + }]; +} + +- (void)_publishUnlikeWithUpdateBlock:(fbsdk_like_action_block)updateBlock + analyticsParameters:(NSDictionary *)analyticsParameters + fromViewController:(UIViewController *)fromViewController +{ + _objectIsLikedIsPending = YES; + FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; + [connection overrideVersionPartWith:FBSDK_LIKE_ACTION_CONTROLLER_API_VERSION]; + fbsdk_like_action_controller_publish_unlike_completion_block completionHandler = ^(BOOL success) { + _objectIsLikedIsPending = NO; + if (success) { + [FBSDKAppEvents logImplicitEvent:FBSDKAppEventNameFBSDKLikeControlDidUnlike + valueToSum:nil + parameters:analyticsParameters + accessToken:_accessToken]; + _objectIsLikedOnServer = NO; + _unlikeToken = nil; + if (updateBlock != NULL) { + updateBlock(FBSDKTriStateBOOLFromBOOL(self.objectIsLiked), + _likeCountStringWithLike, + _likeCountStringWithoutLike, + _socialSentenceWithLike, + _socialSentenceWithoutLike, + _unlikeToken, + NO, + NO); + } + [self _publishIfNeededWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; + } else { + [self _presentLikeDialogWithUpdateBlock:updateBlock analyticsParameters:analyticsParameters fromViewController:fromViewController]; + } + }; + FBSDKLikeActionControllerAddPublishUnlikeRequest(_accessToken, + connection, + _unlikeToken, + _objectType, + completionHandler); + [connection start]; +} + +- (void)_refreshWithMode:(FBSDKLikeActionControllerRefreshMode)mode +{ + switch (mode) { + case FBSDKLikeActionControllerRefreshModeForce:{ + // if we're already refreshing, skip + if (_refreshState == FBSDKLikeActionControllerRefreshStateActive) { + return; + } + break; + } + case FBSDKLikeActionControllerRefreshModeInitial:{ + // if we've already started any refresh, skip this + if (_refreshState != FBSDKLikeActionControllerRefreshStateNone) { + return; + } + break; + } + } + + // You must be logged in to fetch the like status + if (!_accessToken) { + return; + } + + [self _setExecuting:YES forKey:FBSDK_LIKE_ACTION_CONTROLLER_REFRESH_PROPERTY_KEY]; + _refreshState = FBSDKLikeActionControllerRefreshStateActive; + + [self _ensureVerifiedObjectID:^(NSString *verifiedObjectID) { + FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; + [connection overrideVersionPartWith:FBSDK_LIKE_ACTION_CONTROLLER_API_VERSION]; + FBSDKLikeActionControllerAddRefreshRequests(_accessToken, + connection, + verifiedObjectID, + _objectType, + ^(FBSDKTriStateBOOL objectIsLiked, + NSString *likeCountStringWithLike, + NSString *likeCountStringWithoutLike, + NSString *socialSentenceWithLike, + NSString *socialSentenceWithoutLike, + NSString *unlikeToken, + BOOL likeStateChanged, + BOOL animated) { + [self _updateWithObjectIsLiked:objectIsLiked + likeCountStringWithLike:likeCountStringWithLike + likeCountStringWithoutLike:likeCountStringWithoutLike + socialSentenceWithLike:socialSentenceWithLike + socialSentenceWithoutLike:socialSentenceWithoutLike + unlikeToken:unlikeToken + soundEnabled:NO + animated:NO + deferred:NO]; + [self _setExecuting:NO forKey:FBSDK_LIKE_ACTION_CONTROLLER_REFRESH_PROPERTY_KEY]; + _refreshState = FBSDKLikeActionControllerRefreshStateComplete; + }); + [connection start]; + }]; +} + +- (void)_setExecuting:(BOOL)executing forKey:(NSString *)key +{ + static NSMapTable *_executing = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _executing = [[NSMapTable alloc] initWithKeyOptions:NSPointerFunctionsCopyIn valueOptions:NSPointerFunctionsStrongMemory capacity:0]; + }); + + NSString *objectKey = [NSString stringWithFormat: + @"%@:%@:%@", + _objectID, + NSStringFromFBSDKLikeObjectType(_objectType), + key]; + if (executing) { + [self beginContentAccess]; + [_executing setObject:self forKey:objectKey]; + } else { + [_executing removeObjectForKey:objectKey]; + [self endContentAccess]; + } +} + +- (void)_updateWithObjectIsLiked:(FBSDKTriStateBOOL)objectIsLikedTriState + likeCountStringWithLike:(NSString *)likeCountStringWithLike + likeCountStringWithoutLike:(NSString *)likeCountStringWithoutLike + socialSentenceWithLike:(NSString *)socialSentenceWithLike + socialSentenceWithoutLike:(NSString *)socialSentenceWithoutLike + unlikeToken:(NSString *)unlikeToken + soundEnabled:(BOOL)soundEnabled + animated:(BOOL)animated + deferred:(BOOL)deferred +{ + if (objectIsLikedTriState != FBSDKTriStateBOOLValueUnknown) { + _lastUpdateTime = [NSDate date]; + } + + // This value will not be useable if objectIsLikedTriState is FBSDKTriStateBOOLValueUnknown + BOOL objectIsLiked = BOOLFromFBSDKTriStateBOOL(objectIsLikedTriState, NO); + + // So always check objectIsLikedChanged before using objectIsLiked. + // If the new like state is unknown, we don't consider the state to have changed. + BOOL objectIsLikedChanged = (objectIsLikedTriState != FBSDKTriStateBOOLValueUnknown) && (self.objectIsLiked != objectIsLiked); + + if (!objectIsLikedChanged && + [FBSDKInternalUtility object:_likeCountStringWithLike isEqualToObject:likeCountStringWithLike] && + [FBSDKInternalUtility object:_likeCountStringWithoutLike isEqualToObject:likeCountStringWithoutLike] && + [FBSDKInternalUtility object:_socialSentenceWithLike isEqualToObject:socialSentenceWithLike] && + [FBSDKInternalUtility object:_socialSentenceWithoutLike isEqualToObject:socialSentenceWithoutLike] && + [FBSDKInternalUtility object:_unlikeToken isEqualToObject:unlikeToken]) { + // check if the like state changed and only animate if it did + return; + } + + void(^updateBlock)(void) = ^{ + if (objectIsLikedChanged) { + _objectIsLiked = objectIsLiked; + } + + if (likeCountStringWithLike) { + _likeCountStringWithLike = [likeCountStringWithLike copy]; + } + if (likeCountStringWithoutLike) { + _likeCountStringWithoutLike = [likeCountStringWithoutLike copy]; + } + if (socialSentenceWithLike) { + _socialSentenceWithLike = [socialSentenceWithLike copy]; + } + if (socialSentenceWithoutLike) { + _socialSentenceWithoutLike = [socialSentenceWithoutLike copy]; + } + if (unlikeToken) { + _unlikeToken = [unlikeToken copy]; + } + + // if only meta data changed, don't play the sound + FBSDKLikeButtonPopWAV *likeSound = (objectIsLikedChanged && objectIsLiked && soundEnabled ? [FBSDKLikeButtonPopWAV sharedLoader] : nil); + + void(^notificationBlock)(void) = ^{ + if (likeSound) { + dispatch_time_t soundPopTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(FBSDK_LIKE_ACTION_CONTROLLER_SOUND_DELAY * NSEC_PER_SEC)); + dispatch_after(soundPopTime, dispatch_get_main_queue(), ^(void){ + [likeSound playSound]; + }); + } + NSDictionary *userInfo = @{FBSDKLikeActionControllerAnimatedKey: @(animated)}; + [[NSNotificationCenter defaultCenter] postNotificationName:FBSDKLikeActionControllerDidUpdateNotification + object:self + userInfo:userInfo]; + }; + + notificationBlock(); + }; + + // if only meta data changed, don't defer + if (deferred && objectIsLikedChanged) { + double delayInSeconds = FBSDK_LIKE_ACTION_CONTROLLER_ANIMATION_DELAY; + dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); + dispatch_after(popTime, dispatch_get_main_queue(), updateBlock); + } else { + updateBlock(); + } +} + +- (BOOL)_useOGLike +{ + return (_accessToken && + !_objectIsPage && + _verifiedObjectID && + [_accessToken.permissions containsObject:@"publish_actions"]); +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h new file mode 100644 index 0000000..e1f30c8 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h @@ -0,0 +1,31 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +@interface FBSDKLikeActionControllerCache : NSObject + +- (instancetype)initWithAccessTokenString:(NSString *)accessTokenString NS_DESIGNATED_INITIALIZER; + +@property (nonatomic, copy, readonly) NSString *accessTokenString; + +- (id)objectForKeyedSubscript:(id)key; +- (void)resetForAccessTokenString:(NSString *)accessTokenString; +- (void)setObject:(id)object forKeyedSubscript:(id)key; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m new file mode 100644 index 0000000..746e819 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m @@ -0,0 +1,116 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLikeActionControllerCache.h" + +#import + +#import "FBSDKLikeActionController.h" + +// after 1 day, expire the cached states +#define FBSDK_LIKE_ACTION_CONTROLLER_CACHE_TIMEOUT 60 * 24 + +#define FBSDK_LIKE_ACTION_CONTROLLER_CACHE_ACCESS_TOKEN_KEY @"accessTokenString" +#define FBSDK_LIKE_ACTION_CONTROLLER_CACHE_ITEMS_KEY @"items" + +@implementation FBSDKLikeActionControllerCache +{ + NSString *_accessTokenString; + NSMutableDictionary *_items; +} + +#pragma mark - Object Lifecycle + +- (instancetype)initWithAccessTokenString:(NSString *)accessTokenString +{ + if ((self = [super init])) { + _accessTokenString = [accessTokenString copy]; + _items = [[NSMutableDictionary alloc] init]; + } + return self; +} + +- (instancetype)init +{ + FBSDK_NOT_DESIGNATED_INITIALIZER(initWithAccessTokenString:); + return [self initWithAccessTokenString:nil]; +} + +#pragma mark - NSCoding + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + NSString *accessTokenString = [decoder decodeObjectOfClass:[NSString class] + forKey:FBSDK_LIKE_ACTION_CONTROLLER_CACHE_ACCESS_TOKEN_KEY]; + if ((self = [self initWithAccessTokenString:accessTokenString])) { + NSSet *allowedClasses = [NSSet setWithObjects:[NSDictionary class], [FBSDKLikeActionController class], nil]; + NSDictionary *items = [decoder decodeObjectOfClasses:allowedClasses + forKey:FBSDK_LIKE_ACTION_CONTROLLER_CACHE_ITEMS_KEY]; + _items = [[NSMutableDictionary alloc] initWithDictionary:items]; + [self _prune]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:_accessTokenString forKey:FBSDK_LIKE_ACTION_CONTROLLER_CACHE_ACCESS_TOKEN_KEY]; + [encoder encodeObject:_items forKey:FBSDK_LIKE_ACTION_CONTROLLER_CACHE_ITEMS_KEY]; +} + +#pragma mark - Public Methods + +- (id)objectForKeyedSubscript:(id)key +{ + return _items[key]; +} + +- (void)resetForAccessTokenString:(NSString *)accessTokenString +{ + _accessTokenString = [accessTokenString copy]; + [_items removeAllObjects]; +} + +- (void)setObject:(id)object forKeyedSubscript:(id)key +{ + _items[key] = object; +} + +#pragma mark - Helper Methods + +- (void)_prune +{ + NSMutableArray *keysToRemove = [[NSMutableArray alloc] init]; + [_items enumerateKeysAndObjectsUsingBlock:^(NSString *objectID, + FBSDKLikeActionController *likeActionController, + BOOL *stop) { + NSDate *lastUpdateTime = likeActionController.lastUpdateTime; + if (!lastUpdateTime || + ([[NSDate date] timeIntervalSinceDate:lastUpdateTime] > FBSDK_LIKE_ACTION_CONTROLLER_CACHE_TIMEOUT)) { + [keysToRemove addObject:objectID]; + } + }]; + [_items removeObjectsForKeys:keysToRemove]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h new file mode 100644 index 0000000..8ad46b6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h @@ -0,0 +1,33 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKLikeBoxView.h" + +@interface FBSDKLikeBoxBorderView : UIView + +@property (nonatomic, assign) CGFloat borderCornerRadius; +@property (nonatomic, assign) CGFloat borderWidth; +@property (nonatomic, assign) FBSDKLikeBoxCaretPosition caretPosition; +@property (nonatomic, assign, readonly) UIEdgeInsets contentInsets; +@property (nonatomic, strong) UIView *contentView; +@property (nonatomic, strong) UIColor *fillColor; +@property (nonatomic, strong) UIColor *foregroundColor; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m new file mode 100644 index 0000000..71faf0f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m @@ -0,0 +1,323 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLikeBoxBorderView.h" + +#import "FBSDKCoreKit+Internal.h" + +#define FBSDK_LIKE_BOX_BORDER_CARET_WIDTH 6.0 +#define FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT 3.0 +#define FBSDK_LIKE_BOX_BORDER_CARET_PADDING 3.0 +#define FBSDK_LIKE_BOX_BORDER_CONTENT_PADDING 4.0 + +@implementation FBSDKLikeBoxBorderView + +#pragma mark - Object Lifecycle + +- (instancetype)initWithFrame:(CGRect)frame +{ + if ((self = [super initWithFrame:frame])) { + [self _initializeContent]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [super initWithCoder:decoder])) { + [self _initializeContent]; + } + return self; +} + +#pragma mark - Properties + +- (void)setBackgroundColor:(UIColor *)backgroundColor +{ + if (![self.backgroundColor isEqual:backgroundColor]) { + [super setBackgroundColor:backgroundColor]; + [self setNeedsDisplay]; + } +} + +- (void)setBorderCornerRadius:(CGFloat)borderCornerRadius +{ + if (_borderCornerRadius != borderCornerRadius) { + _borderCornerRadius = borderCornerRadius; + [self setNeedsDisplay]; + } +} + +- (void)setBorderWidth:(CGFloat)borderWidth +{ + if (_borderWidth != borderWidth) { + _borderWidth = borderWidth; + [self setNeedsDisplay]; + [self invalidateIntrinsicContentSize]; + } +} + +- (void)setCaretPosition:(FBSDKLikeBoxCaretPosition)caretPosition +{ + if (_caretPosition != caretPosition) { + _caretPosition = caretPosition; + [self setNeedsLayout]; + [self setNeedsDisplay]; + [self invalidateIntrinsicContentSize]; + } +} + +- (UIEdgeInsets)contentInsets +{ + UIEdgeInsets borderInsets = [self _borderInsets]; + return UIEdgeInsetsMake(borderInsets.top + FBSDK_LIKE_BOX_BORDER_CONTENT_PADDING, + borderInsets.left + FBSDK_LIKE_BOX_BORDER_CONTENT_PADDING, + borderInsets.bottom + FBSDK_LIKE_BOX_BORDER_CONTENT_PADDING, + borderInsets.right + FBSDK_LIKE_BOX_BORDER_CONTENT_PADDING); +} + +- (void)setContentView:(UIView *)contentView +{ + if (_contentView != contentView) { + [_contentView removeFromSuperview]; + _contentView = contentView; + [self addSubview:_contentView]; + [self setNeedsLayout]; + [self invalidateIntrinsicContentSize]; + } +} + +- (void)setFillColor:(UIColor *)fillColor +{ + if (![_fillColor isEqual:fillColor]) { + _fillColor = fillColor; + [self setNeedsDisplay]; + } +} + +- (void)setForegroundColor:(UIColor *)foregroundColor +{ + if (![_foregroundColor isEqual:foregroundColor]) { + _foregroundColor = foregroundColor; + [self setNeedsDisplay]; + } +} + +#pragma mark - Layout + +- (CGSize)intrinsicContentSize +{ + return FBSDKEdgeInsetsOutsetSize(self.contentView.intrinsicContentSize, self.contentInsets); +} + +- (void)layoutSubviews +{ + [super layoutSubviews]; + + self.contentView.frame = UIEdgeInsetsInsetRect(self.bounds, self.contentInsets); +} + +- (CGSize)sizeThatFits:(CGSize)size +{ + UIEdgeInsets contentInsets = self.contentInsets; + size = FBSDKEdgeInsetsInsetSize(size, contentInsets); + size = [self.contentView sizeThatFits:size]; + size = FBSDKEdgeInsetsOutsetSize(size, contentInsets); + return size; +} + +#pragma mark - Drawing + +- (void)drawRect:(CGRect)rect +{ + CGContextRef context = UIGraphicsGetCurrentContext(); + CGContextSaveGState(context); + + // read the configuration properties + CGRect bounds = self.bounds; + CGFloat borderWidth = self.borderWidth; + CGFloat borderCornerRadius = self.borderCornerRadius; + CGFloat contentScaleFactor = self.contentScaleFactor; + + // fill the background + if (self.backgroundColor) { + [self.backgroundColor setFill]; + CGContextFillRect(context, bounds); + } + + // configure the colors and lines + [self.fillColor setFill]; + [self.foregroundColor setStroke]; + CGContextSetLineJoin(context, kCGLineJoinRound); + CGContextSetLineWidth(context, borderWidth); + + // get the frame of the box + CGRect borderFrame = UIEdgeInsetsInsetRect(bounds, [self _borderInsets]); + + // define the arcs for the corners + const int start = 0; + const int tangent = 1; + const int end = 2; + CGPoint topLeftArc[3] = { + CGPointMake(CGRectGetMinX(borderFrame) + borderCornerRadius, CGRectGetMinY(borderFrame)), + CGPointMake(CGRectGetMinX(borderFrame), CGRectGetMinY(borderFrame)), + CGPointMake(CGRectGetMinX(borderFrame), CGRectGetMinY(borderFrame) + borderCornerRadius), + }; + CGPoint bottomLeftArc[3] = { + CGPointMake(CGRectGetMinX(borderFrame), CGRectGetMaxY(borderFrame) - borderCornerRadius), + CGPointMake(CGRectGetMinX(borderFrame), CGRectGetMaxY(borderFrame)), + CGPointMake(CGRectGetMinX(borderFrame) + borderCornerRadius, CGRectGetMaxY(borderFrame)), + }; + CGPoint bottomRightArc[3] = { + CGPointMake(CGRectGetMaxX(borderFrame) - borderCornerRadius, CGRectGetMaxY(borderFrame)), + CGPointMake(CGRectGetMaxX(borderFrame), CGRectGetMaxY(borderFrame)), + CGPointMake(CGRectGetMaxX(borderFrame), CGRectGetMaxY(borderFrame) - borderCornerRadius), + }; + CGPoint topRightArc[3] = { + CGPointMake(CGRectGetMaxX(borderFrame), CGRectGetMinY(borderFrame) + borderCornerRadius), + CGPointMake(CGRectGetMaxX(borderFrame), CGRectGetMinY(borderFrame)), + CGPointMake(CGRectGetMaxX(borderFrame) - borderCornerRadius, CGRectGetMinY(borderFrame)), + }; + + // start a path on the context + CGContextBeginPath(context); + + // position the caret and decide which lines to draw + CGPoint caretPoints[3]; + switch (self.caretPosition) { + case FBSDKLikeBoxCaretPositionTop: + CGContextMoveToPoint(context, topRightArc[end].x, topRightArc[end].y); + caretPoints[0] = CGPointMake(FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidX(borderFrame) + (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2)), + CGRectGetMinY(borderFrame)); + caretPoints[1] = CGPointMake(FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidX(borderFrame)), + CGRectGetMinY(borderFrame) - FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT); + caretPoints[2] = CGPointMake(FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidX(borderFrame) - (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2)), + CGRectGetMinY(borderFrame)); + CGContextAddLines(context, caretPoints, sizeof(caretPoints) / sizeof(caretPoints[0])); + CGContextAddArcToPoint(context, topLeftArc[tangent].x, topLeftArc[tangent].y, topLeftArc[end].x, topLeftArc[end].y, borderCornerRadius); + CGContextAddLineToPoint(context, bottomLeftArc[start].x, bottomLeftArc[start].y); + CGContextAddArcToPoint(context, bottomLeftArc[tangent].x, bottomLeftArc[tangent].y, bottomLeftArc[end].x, bottomLeftArc[end].y, borderCornerRadius); + CGContextAddLineToPoint(context, bottomRightArc[start].x, bottomRightArc[start].y); + CGContextAddArcToPoint(context, bottomRightArc[tangent].x, bottomRightArc[tangent].y, bottomRightArc[end].x, bottomRightArc[end].y, borderCornerRadius); + CGContextAddLineToPoint(context, topRightArc[start].x, topRightArc[start].y); + CGContextAddArcToPoint(context, topRightArc[tangent].x, topRightArc[tangent].y, topRightArc[end].x, topRightArc[end].y, borderCornerRadius); + break; + case FBSDKLikeBoxCaretPositionLeft: + CGContextMoveToPoint(context, topLeftArc[end].x, topLeftArc[end].y); + caretPoints[0] = CGPointMake(CGRectGetMinX(borderFrame), + FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidY(borderFrame) - (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2))); + caretPoints[1] = CGPointMake(CGRectGetMinX(borderFrame) - FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT, + FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidY(borderFrame))); + caretPoints[2] = CGPointMake(CGRectGetMinX(borderFrame), + FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidY(borderFrame) + (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2))); + CGContextAddLines(context, caretPoints, sizeof(caretPoints) / sizeof(caretPoints[0])); + CGContextAddArcToPoint(context, bottomLeftArc[tangent].x, bottomLeftArc[tangent].y, bottomLeftArc[end].x, bottomLeftArc[end].y, borderCornerRadius); + CGContextAddLineToPoint(context, bottomRightArc[start].x, bottomRightArc[start].y); + CGContextAddArcToPoint(context, bottomRightArc[tangent].x, bottomRightArc[tangent].y, bottomRightArc[end].x, bottomRightArc[end].y, borderCornerRadius); + CGContextAddLineToPoint(context, topRightArc[start].x, topRightArc[start].y); + CGContextAddArcToPoint(context, topRightArc[tangent].x, topRightArc[tangent].y, topRightArc[end].x, topRightArc[end].y, borderCornerRadius); + CGContextAddLineToPoint(context, topLeftArc[start].x, topLeftArc[start].y); + CGContextAddArcToPoint(context, topLeftArc[tangent].x, topLeftArc[tangent].y, topLeftArc[end].x, topLeftArc[end].y, borderCornerRadius); + break; + case FBSDKLikeBoxCaretPositionBottom: + CGContextMoveToPoint(context, bottomLeftArc[end].x, bottomLeftArc[end].y); + caretPoints[0] = CGPointMake(FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidX(borderFrame) - (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2)), + CGRectGetMaxY(borderFrame)); + caretPoints[1] = CGPointMake(FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidX(borderFrame)), + CGRectGetMaxY(borderFrame) + FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT); + caretPoints[2] = CGPointMake(FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidX(borderFrame) + (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2)), + CGRectGetMaxY(borderFrame)); + CGContextAddLines(context, caretPoints, sizeof(caretPoints) / sizeof(caretPoints[0])); + CGContextAddArcToPoint(context, bottomRightArc[tangent].x, bottomRightArc[tangent].y, bottomRightArc[end].x, bottomRightArc[end].y, borderCornerRadius); + CGContextAddLineToPoint(context, topRightArc[start].x, topRightArc[start].y); + CGContextAddArcToPoint(context, topRightArc[tangent].x, topRightArc[tangent].y, topRightArc[end].x, topRightArc[end].y, borderCornerRadius); + CGContextAddLineToPoint(context, topLeftArc[start].x, topLeftArc[start].y); + CGContextAddArcToPoint(context, topLeftArc[tangent].x, topLeftArc[tangent].y, topLeftArc[end].x, topLeftArc[end].y, borderCornerRadius); + CGContextAddLineToPoint(context, bottomLeftArc[start].x, bottomLeftArc[start].y); + CGContextAddArcToPoint(context, bottomLeftArc[tangent].x, bottomLeftArc[tangent].y, bottomLeftArc[end].x, bottomLeftArc[end].y, borderCornerRadius); + break; + case FBSDKLikeBoxCaretPositionRight: + CGContextMoveToPoint(context, bottomRightArc[end].x, bottomRightArc[end].y); + caretPoints[0] = CGPointMake(CGRectGetMaxX(borderFrame), + FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidY(borderFrame) + (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2))); + caretPoints[1] = CGPointMake(CGRectGetMaxX(borderFrame) + FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT, + FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidY(borderFrame))); + caretPoints[2] = CGPointMake(CGRectGetMaxX(borderFrame), + FBSDKPointsForScreenPixels(floorf, contentScaleFactor, CGRectGetMidY(borderFrame) - (FBSDK_LIKE_BOX_BORDER_CARET_WIDTH / 2))); + CGContextAddLines(context, caretPoints, sizeof(caretPoints) / sizeof(caretPoints[0])); + CGContextAddArcToPoint(context, topRightArc[tangent].x, topRightArc[tangent].y, topRightArc[end].x, topRightArc[end].y, borderCornerRadius); + CGContextAddLineToPoint(context, topLeftArc[start].x, topLeftArc[start].y); + CGContextAddArcToPoint(context, topLeftArc[tangent].x, topLeftArc[tangent].y, topLeftArc[end].x, topLeftArc[end].y, borderCornerRadius); + CGContextAddLineToPoint(context, bottomLeftArc[start].x, bottomLeftArc[start].y); + CGContextAddArcToPoint(context, bottomLeftArc[tangent].x, bottomLeftArc[tangent].y, bottomLeftArc[end].x, bottomLeftArc[end].y, borderCornerRadius); + CGContextAddLineToPoint(context, bottomRightArc[start].x, bottomRightArc[start].y); + CGContextAddArcToPoint(context, bottomRightArc[tangent].x, bottomRightArc[tangent].y, bottomRightArc[end].x, bottomRightArc[end].y, borderCornerRadius); + break; + } + + // close and draw now that we have it all + CGContextClosePath(context); + CGContextDrawPath(context, kCGPathFillStroke); + + CGContextRestoreGState(context); +} + +#pragma mark - Helper Methods + +- (UIEdgeInsets)_borderInsets +{ + // inset the border bounds by 1/2 of the border width, since it is drawn split between inside and outside of the path + CGFloat scale = self.contentScaleFactor; + CGFloat halfBorderWidth = FBSDKPointsForScreenPixels(ceilf, scale, self.borderWidth / 2); + UIEdgeInsets borderInsets = UIEdgeInsetsMake(halfBorderWidth, halfBorderWidth, halfBorderWidth, halfBorderWidth); + + // adjust the insets for the caret position + switch (self.caretPosition) { + case FBSDKLikeBoxCaretPositionTop:{ + borderInsets.top += FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT + FBSDK_LIKE_BOX_BORDER_CARET_PADDING; + break; + } + case FBSDKLikeBoxCaretPositionLeft:{ + borderInsets.left += FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT + FBSDK_LIKE_BOX_BORDER_CARET_PADDING; + break; + } + case FBSDKLikeBoxCaretPositionBottom:{ + borderInsets.bottom += FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT + FBSDK_LIKE_BOX_BORDER_CARET_PADDING; + break; + } + case FBSDKLikeBoxCaretPositionRight:{ + borderInsets.right += FBSDK_LIKE_BOX_BORDER_CARET_HEIGHT + FBSDK_LIKE_BOX_BORDER_CARET_PADDING; + break; + } + } + + return borderInsets; +} + +- (void)_initializeContent +{ + self.backgroundColor = [UIColor clearColor]; + self.borderCornerRadius = 3.0; + self.borderWidth = 1.0; + self.contentMode = UIViewContentModeRedraw; + self.fillColor = [UIColor whiteColor]; + self.foregroundColor = FBSDKUIColorWithRGB(0x6A, 0x71, 0x80); + self.opaque = NO; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h new file mode 100644 index 0000000..49b3756 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h @@ -0,0 +1,43 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +/*! + @typedef NS_ENUM(NSUInteger, FBSDKLikeBoxCaretPosition) + + @abstract Specifies the position of the caret relative to the box. + */ +typedef NS_ENUM(NSUInteger, FBSDKLikeBoxCaretPosition) +{ + /*! The caret is on the top of the box. */ + FBSDKLikeBoxCaretPositionTop, + /*! The caret is on the left of the box. */ + FBSDKLikeBoxCaretPositionLeft, + /*! The caret is on the bottom of the box. */ + FBSDKLikeBoxCaretPositionBottom, + /*! The caret is on the right of the box. */ + FBSDKLikeBoxCaretPositionRight, +}; + +@interface FBSDKLikeBoxView : UIView + +@property (nonatomic, assign) FBSDKLikeBoxCaretPosition caretPosition; +@property (nonatomic, copy) NSString *text; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m new file mode 100644 index 0000000..e0afeac --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m @@ -0,0 +1,108 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLikeBoxView.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKLikeBoxBorderView.h" + +@implementation FBSDKLikeBoxView +{ + FBSDKLikeBoxBorderView *_borderView; + UILabel *_likeCountLabel; +} + +#pragma mark - Object Lifecycle + +- (instancetype)initWithFrame:(CGRect)frame +{ + if ((self = [super initWithFrame:frame])) { + [self _initializeContent]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + if ((self = [super initWithCoder:decoder])) { + [self _initializeContent]; + } + return self; +} + +#pragma mark - Properties + +- (void)setCaretPosition:(FBSDKLikeBoxCaretPosition)caretPosition +{ + if (_caretPosition != caretPosition) { + _caretPosition = caretPosition; + _borderView.caretPosition = _caretPosition; + [self setNeedsLayout]; + [self invalidateIntrinsicContentSize]; + } +} + +- (NSString *)text +{ + return _likeCountLabel.text; +} + +- (void)setText:(NSString *)text +{ + if (![_likeCountLabel.text isEqualToString:text]) { + _likeCountLabel.text = text; + [self setNeedsLayout]; + [self invalidateIntrinsicContentSize]; + } +} + +#pragma mark - Layout + +- (CGSize)intrinsicContentSize +{ + return _borderView.intrinsicContentSize; +} + +- (void)layoutSubviews +{ + [super layoutSubviews]; + + CGRect bounds = self.bounds; + _borderView.frame = bounds; +} + +- (CGSize)sizeThatFits:(CGSize)size +{ + return [_borderView sizeThatFits:size]; +} + +#pragma mark - Helper Methods + +- (void)_initializeContent +{ + _borderView = [[FBSDKLikeBoxBorderView alloc] initWithFrame:CGRectZero]; + [self addSubview:_borderView]; + + _likeCountLabel = [[UILabel alloc] initWithFrame:CGRectZero]; + _likeCountLabel.font = [UIFont systemFontOfSize:11.0]; + _likeCountLabel.textAlignment = NSTextAlignmentCenter; + _likeCountLabel.textColor = FBSDKUIColorWithRGB(0x6A, 0x71, 0x80); + _borderView.contentView = _likeCountLabel; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h new file mode 100644 index 0000000..032d30d --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h @@ -0,0 +1,29 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKLikeActionController.h" +#import "FBSDKLikeButton.h" + +@interface FBSDKLikeButton () + +@property (nonatomic, strong, readwrite) FBSDKLikeActionController *likeActionController; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h new file mode 100644 index 0000000..aa4c1d8 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h @@ -0,0 +1,24 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKCoreKit+Internal.h" + +@interface FBSDKLikeButtonPopWAV : FBSDKAudioResourceLoader +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m new file mode 100644 index 0000000..c021293 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m @@ -0,0 +1,36 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLikeButtonPopWAV.h" + +@implementation FBSDKLikeButtonPopWAV + ++ (NSString *)name +{ + return @"FBSDKLikeButtonPop.wav"; +} + ++ (NSData *)data +{ + const Byte bytes[] = { +0x52, 0x49, 0x46, 0x46, 0xfc, 0x57, 0x02, 0x00, 0x57, 0x41, 0x56, 0x45, 0x4a, 0x55, 0x4e, 0x4b, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x65, 0x78, 0x74, 0x5a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x72, 0x6f, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x68, 0x72, 0x72, 0x48, 0x37, 0x38, 0x21, 0x54, 0x66, 0x61, 0x61, 0x61, 0x61, 0x47, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x30, 0x31, 0x34, 0x2d, 0x30, 0x31, 0x2d, 0x31, 0x00, 0x31, 0x35, 0x3a, 0x32, 0x38, 0x3a, 0x30, 0x31, 0xf7, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x6d, 0x74, 0x20, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x80, 0xbb, 0x00, 0x00, 0x00, 0xee, 0x02, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x69, 0x6e, 0x66, 0x10, 0x00, 0x00, 0x00, 0x70, 0xe2, 0xe6, 0xc4, 0xdb, 0x13, 0xcf, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x6c, 0x6d, 0x31, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x80, 0x53, 0x02, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x19, 0x00, 0x19, 0x00, 0x12, 0x00, 0x12, 0x00, 0x10, 0x00, 0x10, 0x00, 0x14, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x30, 0x00, 0x30, 0x00, 0x20, 0x00, 0x20, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0x08, 0x00, 0x08, 0x00, 0x11, 0x00, 0x11, 0x00, 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, 0x17, 0x00, 0x14, 0x00, 0x14, 0x00, 0x17, 0x00, 0x17, 0x00, 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x21, 0x00, 0x21, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x05, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xba, 0xff, 0xba, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xca, 0xff, 0xca, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xea, 0xff, 0xea, 0xff, 0x0d, 0x00, 0x0d, 0x00, 0x10, 0x00, 0x10, 0x00, 0xf6, 0xff, 0xf6, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0x17, 0x00, 0x17, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x33, 0x00, 0x33, 0x00, 0x11, 0x00, 0x11, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0x02, 0x00, 0x02, 0x00, 0x17, 0x00, 0x17, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x08, 0x00, 0x08, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0xf0, 0xff, 0xf0, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x41, 0xff, 0x41, 0xff, 0xe7, 0xfe, 0xe7, 0xfe, 0xb8, 0xfe, 0xb8, 0xfe, 0xb2, 0xfe, 0xb2, 0xfe, 0x39, 0xfe, 0x39, 0xfe, 0xb3, 0xfc, 0xb3, 0xfc, 0x5e, 0xfa, 0x5e, 0xfa, 0x25, 0xf8, 0x25, 0xf8, 0x22, 0xf7, 0x22, 0xf7, 0xc1, 0xf7, 0xc1, 0xf7, 0x5e, 0xf9, 0x5e, 0xf9, 0xec, 0xfa, 0xec, 0xfa, 0xb2, 0xfb, 0xb2, 0xfb, 0x96, 0xfb, 0x96, 0xfb, 0x0a, 0xfb, 0x0a, 0xfb, 0x9a, 0xfa, 0x9a, 0xfa, 0x94, 0xfa, 0x94, 0xfa, 0x1b, 0xfb, 0x1b, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0x6f, 0xfc, 0x6f, 0xfc, 0xba, 0xfb, 0xba, 0xfb, 0xbc, 0xf9, 0xbc, 0xf9, 0x08, 0xf7, 0x08, 0xf7, 0xe5, 0xf4, 0xe5, 0xf4, 0x7f, 0xf4, 0x7f, 0xf4, 0xde, 0xf5, 0xde, 0xf5, 0x1e, 0xf8, 0x1e, 0xf8, 0x5a, 0xfa, 0x5a, 0xfa, 0x26, 0xfc, 0x26, 0xfc, 0xca, 0xfd, 0xca, 0xfd, 0xdb, 0xff, 0xdb, 0xff, 0x61, 0x02, 0x61, 0x02, 0xc6, 0x04, 0xc6, 0x04, 0x54, 0x06, 0x54, 0x06, 0xb4, 0x06, 0xb4, 0x06, 0x24, 0x06, 0x24, 0x06, 0x3b, 0x05, 0x3b, 0x05, 0x72, 0x04, 0x72, 0x04, 0x27, 0x04, 0x27, 0x04, 0x8e, 0x04, 0x8e, 0x04, 0x73, 0x05, 0x73, 0x05, 0x7f, 0x06, 0x7f, 0x06, 0x72, 0x07, 0x72, 0x07, 0x28, 0x08, 0x28, 0x08, 0xeb, 0x08, 0xeb, 0x08, 0x57, 0x0a, 0x57, 0x0a, 0x8c, 0x0c, 0x8c, 0x0c, 0x00, 0x0f, 0x00, 0x0f, 0xf6, 0x10, 0xf6, 0x10, 0xf2, 0x11, 0xf2, 0x11, 0x14, 0x12, 0x14, 0x12, 0xfa, 0x11, 0xfa, 0x11, 0x1e, 0x12, 0x1e, 0x12, 0x82, 0x12, 0x82, 0x12, 0xc4, 0x12, 0xc4, 0x12, 0x75, 0x12, 0x75, 0x12, 0x86, 0x11, 0x86, 0x11, 0x35, 0x10, 0x35, 0x10, 0xba, 0x0e, 0xba, 0x0e, 0x62, 0x0d, 0x62, 0x0d, 0x79, 0x0c, 0x79, 0x0c, 0x01, 0x0c, 0x01, 0x0c, 0xcf, 0x0b, 0xcf, 0x0b, 0xa7, 0x0b, 0xa7, 0x0b, 0x27, 0x0b, 0x27, 0x0b, 0x32, 0x0a, 0x32, 0x0a, 0x1d, 0x09, 0x1d, 0x09, 0x35, 0x08, 0x35, 0x08, 0x88, 0x07, 0x88, 0x07, 0xf7, 0x06, 0xf7, 0x06, 0x38, 0x06, 0x38, 0x06, 0x1c, 0x05, 0x1c, 0x05, 0xab, 0x03, 0xab, 0x03, 0xea, 0x01, 0xea, 0x01, 0xd7, 0xff, 0xd7, 0xff, 0x72, 0xfd, 0x72, 0xfd, 0xc3, 0xfa, 0xc3, 0xfa, 0x04, 0xf8, 0x04, 0xf8, 0x88, 0xf5, 0x88, 0xf5, 0x63, 0xf3, 0x63, 0xf3, 0x93, 0xf1, 0x93, 0xf1, 0x18, 0xf0, 0x18, 0xf0, 0xe7, 0xee, 0xe7, 0xee, 0x07, 0xee, 0x07, 0xee, 0x8a, 0xed, 0x8a, 0xed, 0x62, 0xed, 0x62, 0xed, 0x68, 0xed, 0x68, 0xed, 0x87, 0xed, 0x87, 0xed, 0xb5, 0xed, 0xb5, 0xed, 0xde, 0xed, 0xde, 0xed, 0xf0, 0xed, 0xf0, 0xed, 0xe5, 0xed, 0xe5, 0xed, 0xe2, 0xed, 0xe2, 0xed, 0x0a, 0xee, 0x0a, 0xee, 0x63, 0xee, 0x63, 0xee, 0xdb, 0xee, 0xdb, 0xee, 0x47, 0xef, 0x47, 0xef, 0x81, 0xef, 0x81, 0xef, 0xb5, 0xef, 0xb5, 0xef, 0x45, 0xf0, 0x45, 0xf0, 0x7b, 0xf1, 0x7b, 0xf1, 0x6c, 0xf3, 0x6c, 0xf3, 0xf1, 0xf5, 0xf1, 0xf5, 0xbf, 0xf8, 0xbf, 0xf8, 0x86, 0xfb, 0x86, 0xfb, 0x15, 0xfe, 0x15, 0xfe, 0x6c, 0x00, 0x6c, 0x00, 0xb3, 0x02, 0xb3, 0x02, 0x1f, 0x05, 0x1f, 0x05, 0xd0, 0x07, 0xd0, 0x07, 0xad, 0x0a, 0xad, 0x0a, 0x48, 0x0d, 0x48, 0x0d, 0x2a, 0x0f, 0x2a, 0x0f, 0x2c, 0x10, 0x2c, 0x10, 0x83, 0x10, 0x83, 0x10, 0xa3, 0x10, 0xa3, 0x10, 0xf5, 0x10, 0xf5, 0x10, 0x93, 0x11, 0x93, 0x11, 0x47, 0x12, 0x47, 0x12, 0xba, 0x12, 0xba, 0x12, 0xb3, 0x12, 0xb3, 0x12, 0x3d, 0x12, 0x3d, 0x12, 0x9c, 0x11, 0x9c, 0x11, 0x26, 0x11, 0x26, 0x11, 0x20, 0x11, 0x20, 0x11, 0x81, 0x11, 0x81, 0x11, 0xdb, 0x11, 0xdb, 0x11, 0xac, 0x11, 0xac, 0x11, 0x90, 0x10, 0x90, 0x10, 0x86, 0x0e, 0x86, 0x0e, 0x06, 0x0c, 0x06, 0x0c, 0xa0, 0x09, 0xa0, 0x09, 0x8b, 0x07, 0x8b, 0x07, 0x97, 0x05, 0x97, 0x05, 0x5a, 0x03, 0x5a, 0x03, 0x73, 0x00, 0x73, 0x00, 0xe1, 0xfc, 0xe1, 0xfc, 0x09, 0xf9, 0x09, 0xf9, 0x6f, 0xf5, 0x6f, 0xf5, 0x7e, 0xf2, 0x7e, 0xf2, 0x4b, 0xf0, 0x4b, 0xf0, 0x99, 0xee, 0x99, 0xee, 0x07, 0xed, 0x07, 0xed, 0x4f, 0xeb, 0x4f, 0xeb, 0x79, 0xe9, 0x79, 0xe9, 0xd4, 0xe7, 0xd4, 0xe7, 0xcc, 0xe6, 0xcc, 0xe6, 0x81, 0xe6, 0x81, 0xe6, 0xc2, 0xe6, 0xc2, 0xe6, 0x2a, 0xe7, 0x2a, 0xe7, 0x4d, 0xe7, 0x4d, 0xe7, 0x09, 0xe7, 0x09, 0xe7, 0x8b, 0xe6, 0x8b, 0xe6, 0x23, 0xe6, 0x23, 0xe6, 0x17, 0xe6, 0x17, 0xe6, 0x7b, 0xe6, 0x7b, 0xe6, 0x38, 0xe7, 0x38, 0xe7, 0x2b, 0xe8, 0x2b, 0xe8, 0x49, 0xe9, 0x49, 0xe9, 0xa6, 0xea, 0xa6, 0xea, 0x72, 0xec, 0x72, 0xec, 0xc5, 0xee, 0xc5, 0xee, 0x92, 0xf1, 0x92, 0xf1, 0xc2, 0xf4, 0xc2, 0xf4, 0x2b, 0xf8, 0x2b, 0xf8, 0xaa, 0xfb, 0xaa, 0xfb, 0x2d, 0xff, 0x2d, 0xff, 0xa6, 0x02, 0xa6, 0x02, 0xff, 0x05, 0xff, 0x05, 0x23, 0x09, 0x23, 0x09, 0xf9, 0x0b, 0xf9, 0x0b, 0x72, 0x0e, 0x72, 0x0e, 0x92, 0x10, 0x92, 0x10, 0x60, 0x12, 0x60, 0x12, 0xe5, 0x13, 0xe5, 0x13, 0x1b, 0x15, 0x1b, 0x15, 0xf4, 0x15, 0xf4, 0x15, 0x79, 0x16, 0x79, 0x16, 0xc1, 0x16, 0xc1, 0x16, 0xf4, 0x16, 0xf4, 0x16, 0x35, 0x17, 0x35, 0x17, 0x95, 0x17, 0x95, 0x17, 0xfc, 0x17, 0xfc, 0x17, 0x39, 0x18, 0x39, 0x18, 0x1d, 0x18, 0x1d, 0x18, 0x92, 0x17, 0x92, 0x17, 0xa8, 0x16, 0xa8, 0x16, 0x86, 0x15, 0x86, 0x15, 0x41, 0x14, 0x41, 0x14, 0xc8, 0x12, 0xc8, 0x12, 0xeb, 0x10, 0xeb, 0x10, 0x84, 0x0e, 0x84, 0x0e, 0x9e, 0x0b, 0x9e, 0x0b, 0x65, 0x08, 0x65, 0x08, 0x10, 0x05, 0x10, 0x05, 0xc8, 0x01, 0xc8, 0x01, 0x9e, 0xfe, 0x9e, 0xfe, 0x8f, 0xfb, 0x8f, 0xfb, 0x9d, 0xf8, 0x9d, 0xf8, 0xd8, 0xf5, 0xd8, 0xf5, 0x5f, 0xf3, 0x5f, 0xf3, 0x5a, 0xf1, 0x5a, 0xf1, 0xe7, 0xef, 0xe7, 0xef, 0xf7, 0xee, 0xf7, 0xee, 0x62, 0xee, 0x62, 0xee, 0x00, 0xee, 0x00, 0xee, 0xb5, 0xed, 0xb5, 0xed, 0x84, 0xed, 0x84, 0xed, 0x80, 0xed, 0x80, 0xed, 0xb9, 0xed, 0xb9, 0xed, 0x26, 0xee, 0x26, 0xee, 0xa8, 0xee, 0xa8, 0xee, 0x24, 0xef, 0x24, 0xef, 0xa1, 0xef, 0xa1, 0xef, 0x37, 0xf0, 0x37, 0xf0, 0x0d, 0xf1, 0x0d, 0xf1, 0x46, 0xf2, 0x46, 0xf2, 0xe5, 0xf3, 0xe5, 0xf3, 0xd2, 0xf5, 0xd2, 0xf5, 0xf9, 0xf7, 0xf9, 0xf7, 0x59, 0xfa, 0x59, 0xfa, 0xf4, 0xfc, 0xf4, 0xfc, 0xd3, 0xff, 0xd3, 0xff, 0xf3, 0x02, 0xf3, 0x02, 0x35, 0x06, 0x35, 0x06, 0x5f, 0x09, 0x5f, 0x09, 0x36, 0x0c, 0x36, 0x0c, 0x97, 0x0e, 0x97, 0x0e, 0x7b, 0x10, 0x7b, 0x10, 0xf1, 0x11, 0xf1, 0x11, 0x0c, 0x13, 0x0c, 0x13, 0xcf, 0x13, 0xcf, 0x13, 0x2a, 0x14, 0x2a, 0x14, 0x15, 0x14, 0x15, 0x14, 0xa2, 0x13, 0xa2, 0x13, 0xf2, 0x12, 0xf2, 0x12, 0x25, 0x12, 0x25, 0x12, 0x57, 0x11, 0x57, 0x11, 0x81, 0x10, 0x81, 0x10, 0x8b, 0x0f, 0x8b, 0x0f, 0x6e, 0x0e, 0x6e, 0x0e, 0x32, 0x0d, 0x32, 0x0d, 0xe7, 0x0b, 0xe7, 0x0b, 0x9b, 0x0a, 0x9b, 0x0a, 0x4f, 0x09, 0x4f, 0x09, 0xec, 0x07, 0xec, 0x07, 0x50, 0x06, 0x50, 0x06, 0x69, 0x04, 0x69, 0x04, 0x3c, 0x02, 0x3c, 0x02, 0xda, 0xff, 0xda, 0xff, 0x5e, 0xfd, 0x5e, 0xfd, 0xe4, 0xfa, 0xe4, 0xfa, 0x7c, 0xf8, 0x7c, 0xf8, 0x29, 0xf6, 0x29, 0xf6, 0xfc, 0xf3, 0xfc, 0xf3, 0x11, 0xf2, 0x11, 0xf2, 0x88, 0xf0, 0x88, 0xf0, 0x81, 0xef, 0x81, 0xef, 0x01, 0xef, 0x01, 0xef, 0xf0, 0xee, 0xf0, 0xee, 0x2c, 0xef, 0x2c, 0xef, 0xb0, 0xef, 0xb0, 0xef, 0x91, 0xf0, 0x91, 0xf0, 0xe6, 0xf1, 0xe6, 0xf1, 0xa9, 0xf3, 0xa9, 0xf3, 0xb9, 0xf5, 0xb9, 0xf5, 0xde, 0xf7, 0xde, 0xf7, 0xdd, 0xf9, 0xdd, 0xf9, 0x8e, 0xfb, 0x8e, 0xfb, 0xe7, 0xfc, 0xe7, 0xfc, 0xfe, 0xfd, 0xfe, 0xfd, 0xf0, 0xfe, 0xf0, 0xfe, 0xd2, 0xff, 0xd2, 0xff, 0xb0, 0x00, 0xb0, 0x00, 0x89, 0x01, 0x89, 0x01, 0x57, 0x02, 0x57, 0x02, 0x25, 0x03, 0x25, 0x03, 0x1b, 0x04, 0x1b, 0x04, 0x64, 0x05, 0x64, 0x05, 0x0a, 0x07, 0x0a, 0x07, 0xf4, 0x08, 0xf4, 0x08, 0xe4, 0x0a, 0xe4, 0x0a, 0x88, 0x0c, 0x88, 0x0c, 0xbf, 0x0d, 0xbf, 0x0d, 0x7c, 0x0e, 0x7c, 0x0e, 0xd1, 0x0e, 0xd1, 0x0e, 0xca, 0x0e, 0xca, 0x0e, 0x48, 0x0e, 0x48, 0x0e, 0x33, 0x0d, 0x33, 0x0d, 0x8f, 0x0b, 0x8f, 0x0b, 0x74, 0x09, 0x74, 0x09, 0x0f, 0x07, 0x0f, 0x07, 0x97, 0x04, 0x97, 0x04, 0x37, 0x02, 0x37, 0x02, 0x11, 0x00, 0x11, 0x00, 0x42, 0xfe, 0x42, 0xfe, 0xe1, 0xfc, 0xe1, 0xfc, 0xfe, 0xfb, 0xfe, 0xfb, 0x91, 0xfb, 0x91, 0xfb, 0x7d, 0xfb, 0x7d, 0xfb, 0x9b, 0xfb, 0x9b, 0xfb, 0xd4, 0xfb, 0xd4, 0xfb, 0x12, 0xfc, 0x12, 0xfc, 0x39, 0xfc, 0x39, 0xfc, 0x2f, 0xfc, 0x2f, 0xfc, 0xe5, 0xfb, 0xe5, 0xfb, 0x56, 0xfb, 0x56, 0xfb, 0x8f, 0xfa, 0x8f, 0xfa, 0xab, 0xf9, 0xab, 0xf9, 0xc8, 0xf8, 0xc8, 0xf8, 0x02, 0xf8, 0x02, 0xf8, 0x6c, 0xf7, 0x6c, 0xf7, 0x1a, 0xf7, 0x1a, 0xf7, 0x25, 0xf7, 0x25, 0xf7, 0xa0, 0xf7, 0xa0, 0xf7, 0x95, 0xf8, 0x95, 0xf8, 0xf5, 0xf9, 0xf5, 0xf9, 0xa0, 0xfb, 0xa0, 0xfb, 0x76, 0xfd, 0x76, 0xfd, 0x68, 0xff, 0x68, 0xff, 0x62, 0x01, 0x62, 0x01, 0x3d, 0x03, 0x3d, 0x03, 0xbb, 0x04, 0xbb, 0x04, 0xa6, 0x05, 0xa6, 0x05, 0xef, 0x05, 0xef, 0x05, 0xac, 0x05, 0xac, 0x05, 0xfe, 0x04, 0xfe, 0x04, 0x03, 0x04, 0x03, 0x04, 0xc8, 0x02, 0xc8, 0x02, 0x61, 0x01, 0x61, 0x01, 0xf5, 0xff, 0xf5, 0xff, 0xb9, 0xfe, 0xb9, 0xfe, 0xd6, 0xfd, 0xd6, 0xfd, 0x5a, 0xfd, 0x5a, 0xfd, 0x3b, 0xfd, 0x3b, 0xfd, 0x62, 0xfd, 0x62, 0xfd, 0xb8, 0xfd, 0xb8, 0xfd, 0x3a, 0xfe, 0x3a, 0xfe, 0xde, 0xfe, 0xde, 0xfe, 0x87, 0xff, 0x87, 0xff, 0x0c, 0x00, 0x0c, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x33, 0x00, 0x33, 0x00, 0xc8, 0xff, 0xc8, 0xff, 0x1b, 0xff, 0x1b, 0xff, 0x41, 0xfe, 0x41, 0xfe, 0x4a, 0xfd, 0x4a, 0xfd, 0x4b, 0xfc, 0x4b, 0xfc, 0x68, 0xfb, 0x68, 0xfb, 0xd0, 0xfa, 0xd0, 0xfa, 0xb3, 0xfa, 0xb3, 0xfa, 0x2b, 0xfb, 0x2b, 0xfb, 0x38, 0xfc, 0x38, 0xfc, 0xbd, 0xfd, 0xbd, 0xfd, 0x95, 0xff, 0x95, 0xff, 0xa5, 0x01, 0xa5, 0x01, 0xd7, 0x03, 0xd7, 0x03, 0x07, 0x06, 0x07, 0x06, 0x02, 0x08, 0x02, 0x08, 0x9a, 0x09, 0x9a, 0x09, 0xb6, 0x0a, 0xb6, 0x0a, 0x4b, 0x0b, 0x4b, 0x0b, 0x57, 0x0b, 0x57, 0x0b, 0xd9, 0x0a, 0xd9, 0x0a, 0xdb, 0x09, 0xdb, 0x09, 0x7c, 0x08, 0x7c, 0x08, 0xe8, 0x06, 0xe8, 0x06, 0x48, 0x05, 0x48, 0x05, 0xaf, 0x03, 0xaf, 0x03, 0x28, 0x02, 0x28, 0x02, 0xcf, 0x00, 0xcf, 0x00, 0xce, 0xff, 0xce, 0xff, 0x2e, 0xff, 0x2e, 0xff, 0xd1, 0xfe, 0xd1, 0xfe, 0x7c, 0xfe, 0x7c, 0xfe, 0x09, 0xfe, 0x09, 0xfe, 0x76, 0xfd, 0x76, 0xfd, 0xda, 0xfc, 0xda, 0xfc, 0x37, 0xfc, 0x37, 0xfc, 0x68, 0xfb, 0x68, 0xfb, 0x4b, 0xfa, 0x4b, 0xfa, 0xd8, 0xf8, 0xd8, 0xf8, 0x1e, 0xf7, 0x1e, 0xf7, 0x3a, 0xf5, 0x3a, 0xf5, 0x5d, 0xf3, 0x5d, 0xf3, 0xce, 0xf1, 0xce, 0xf1, 0xda, 0xf0, 0xda, 0xf0, 0xba, 0xf0, 0xba, 0xf0, 0x69, 0xf1, 0x69, 0xf1, 0x8d, 0xf2, 0x8d, 0xf2, 0xc6, 0xf3, 0xc6, 0xf3, 0x20, 0xf5, 0x20, 0xf5, 0x11, 0xf7, 0x11, 0xf7, 0xf4, 0xf9, 0xf4, 0xf9, 0x96, 0xfd, 0x96, 0xfd, 0x4d, 0x01, 0x4d, 0x01, 0x79, 0x04, 0x79, 0x04, 0xe9, 0x06, 0xe9, 0x06, 0xd0, 0x08, 0xd0, 0x08, 0x6b, 0x0a, 0x6b, 0x0a, 0xb5, 0x0b, 0xb5, 0x0b, 0x80, 0x0c, 0x80, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xd4, 0x0c, 0xd4, 0x0c, 0xda, 0x0c, 0xda, 0x0c, 0xdd, 0x0c, 0xdd, 0x0c, 0xae, 0x0c, 0xae, 0x0c, 0x4a, 0x0c, 0x4a, 0x0c, 0xee, 0x0b, 0xee, 0x0b, 0xdf, 0x0b, 0xdf, 0x0b, 0x13, 0x0c, 0x13, 0x0c, 0x26, 0x0c, 0x26, 0x0c, 0xb3, 0x0b, 0xb3, 0x0b, 0xa5, 0x0a, 0xa5, 0x0a, 0x34, 0x09, 0x34, 0x09, 0x7d, 0x07, 0x7d, 0x07, 0x55, 0x05, 0x55, 0x05, 0x7c, 0x02, 0x7c, 0x02, 0xfd, 0xfe, 0xfd, 0xfe, 0x35, 0xfb, 0x35, 0xfb, 0x85, 0xf7, 0x85, 0xf7, 0x10, 0xf4, 0x10, 0xf4, 0xc9, 0xf0, 0xc9, 0xf0, 0xc0, 0xed, 0xc0, 0xed, 0x3b, 0xeb, 0x3b, 0xeb, 0x95, 0xe9, 0x95, 0xe9, 0xf6, 0xe8, 0xf6, 0xe8, 0x3a, 0xe9, 0x3a, 0xe9, 0x2d, 0xea, 0x2d, 0xea, 0xb6, 0xeb, 0xb6, 0xeb, 0xcd, 0xed, 0xcd, 0xed, 0x55, 0xf0, 0x55, 0xf0, 0x13, 0xf3, 0x13, 0xf3, 0xda, 0xf5, 0xda, 0xf5, 0xa6, 0xf8, 0xa6, 0xf8, 0x8d, 0xfb, 0x8d, 0xfb, 0x87, 0xfe, 0x87, 0xfe, 0x5c, 0x01, 0x5c, 0x01, 0xd9, 0x03, 0xd9, 0x03, 0x0b, 0x06, 0x0b, 0x06, 0x38, 0x08, 0x38, 0x08, 0x96, 0x0a, 0x96, 0x0a, 0x14, 0x0d, 0x14, 0x0d, 0x78, 0x0f, 0x78, 0x0f, 0xa7, 0x11, 0xa7, 0x11, 0xae, 0x13, 0xae, 0x13, 0xa2, 0x15, 0xa2, 0x15, 0x72, 0x17, 0x72, 0x17, 0xe1, 0x18, 0xe1, 0x18, 0xae, 0x19, 0xae, 0x19, 0xb8, 0x19, 0xb8, 0x19, 0x03, 0x19, 0x03, 0x19, 0x8f, 0x17, 0x8f, 0x17, 0x4b, 0x15, 0x4b, 0x15, 0x33, 0x12, 0x33, 0x12, 0x68, 0x0e, 0x68, 0x0e, 0x22, 0x0a, 0x22, 0x0a, 0x91, 0x05, 0x91, 0x05, 0xcb, 0x00, 0xcb, 0x00, 0xea, 0xfb, 0xea, 0xfb, 0x1b, 0xf7, 0x1b, 0xf7, 0x9f, 0xf2, 0x9f, 0xf2, 0xa8, 0xee, 0xa8, 0xee, 0x47, 0xeb, 0x47, 0xeb, 0x76, 0xe8, 0x76, 0xe8, 0x3a, 0xe6, 0x3a, 0xe6, 0x9d, 0xe4, 0x9d, 0xe4, 0xaa, 0xe3, 0xaa, 0xe3, 0x51, 0xe3, 0x51, 0xe3, 0x77, 0xe3, 0x77, 0xe3, 0x08, 0xe4, 0x08, 0xe4, 0x02, 0xe5, 0x02, 0xe5, 0x70, 0xe6, 0x70, 0xe6, 0x56, 0xe8, 0x56, 0xe8, 0xb1, 0xea, 0xb1, 0xea, 0x82, 0xed, 0x82, 0xed, 0xd8, 0xf0, 0xd8, 0xf0, 0xba, 0xf4, 0xba, 0xf4, 0x1b, 0xf9, 0x1b, 0xf9, 0xd9, 0xfd, 0xd9, 0xfd, 0xd2, 0x02, 0xd2, 0x02, 0xec, 0x07, 0xec, 0x07, 0x05, 0x0d, 0x05, 0x0d, 0xec, 0x11, 0xec, 0x11, 0x6c, 0x16, 0x6c, 0x16, 0x59, 0x1a, 0x59, 0x1a, 0x93, 0x1d, 0x93, 0x1d, 0x03, 0x20, 0x03, 0x20, 0x96, 0x21, 0x96, 0x21, 0x38, 0x22, 0x38, 0x22, 0xd9, 0x21, 0xd9, 0x21, 0x7f, 0x20, 0x7f, 0x20, 0x44, 0x1e, 0x44, 0x1e, 0x51, 0x1b, 0x51, 0x1b, 0xcf, 0x17, 0xcf, 0x17, 0xe0, 0x13, 0xe0, 0x13, 0xa4, 0x0f, 0xa4, 0x0f, 0x34, 0x0b, 0x34, 0x0b, 0xa9, 0x06, 0xa9, 0x06, 0x13, 0x02, 0x13, 0x02, 0x89, 0xfd, 0x89, 0xfd, 0x21, 0xf9, 0x21, 0xf9, 0xea, 0xf4, 0xea, 0xf4, 0xe9, 0xf0, 0xe9, 0xf0, 0x20, 0xed, 0x20, 0xed, 0x97, 0xe9, 0x97, 0xe9, 0x60, 0xe6, 0x60, 0xe6, 0x9f, 0xe3, 0x9f, 0xe3, 0x70, 0xe1, 0x70, 0xe1, 0xe6, 0xdf, 0xe6, 0xdf, 0x10, 0xdf, 0x10, 0xdf, 0x03, 0xdf, 0x03, 0xdf, 0xd2, 0xdf, 0xd2, 0xdf, 0x85, 0xe1, 0x85, 0xe1, 0x1d, 0xe4, 0x1d, 0xe4, 0x94, 0xe7, 0x94, 0xe7, 0xd8, 0xeb, 0xd8, 0xeb, 0xd0, 0xf0, 0xd0, 0xf0, 0x51, 0xf6, 0x51, 0xf6, 0x25, 0xfc, 0x25, 0xfc, 0x0f, 0x02, 0x0f, 0x02, 0xdb, 0x07, 0xdb, 0x07, 0x5c, 0x0d, 0x5c, 0x0d, 0x6c, 0x12, 0x6c, 0x12, 0xe0, 0x16, 0xe0, 0x16, 0x99, 0x1a, 0x99, 0x1a, 0x81, 0x1d, 0x81, 0x1d, 0x95, 0x1f, 0x95, 0x1f, 0xd7, 0x20, 0xd7, 0x20, 0x48, 0x21, 0x48, 0x21, 0xee, 0x20, 0xee, 0x20, 0xd3, 0x1f, 0xd3, 0x1f, 0x0d, 0x1e, 0x0d, 0x1e, 0xae, 0x1b, 0xae, 0x1b, 0xc5, 0x18, 0xc5, 0x18, 0x5c, 0x15, 0x5c, 0x15, 0x7b, 0x11, 0x7b, 0x11, 0x31, 0x0d, 0x31, 0x0d, 0x92, 0x08, 0x92, 0x08, 0xb2, 0x03, 0xb2, 0x03, 0xa4, 0xfe, 0xa4, 0xfe, 0x80, 0xf9, 0x80, 0xf9, 0x67, 0xf4, 0x67, 0xf4, 0x7f, 0xef, 0x7f, 0xef, 0xef, 0xea, 0xef, 0xea, 0xe2, 0xe6, 0xe2, 0xe6, 0x78, 0xe3, 0x78, 0xe3, 0xd2, 0xe0, 0xd2, 0xe0, 0x0f, 0xdf, 0x0f, 0xdf, 0x40, 0xde, 0x40, 0xde, 0x65, 0xde, 0x65, 0xde, 0x73, 0xdf, 0x73, 0xdf, 0x5c, 0xe1, 0x5c, 0xe1, 0x09, 0xe4, 0x09, 0xe4, 0x62, 0xe7, 0x62, 0xe7, 0x4f, 0xeb, 0x4f, 0xeb, 0xab, 0xef, 0xab, 0xef, 0x53, 0xf4, 0x53, 0xf4, 0x29, 0xf9, 0x29, 0xf9, 0x0e, 0xfe, 0x0e, 0xfe, 0xe3, 0x02, 0xe3, 0x02, 0x8a, 0x07, 0x8a, 0x07, 0xe8, 0x0b, 0xe8, 0x0b, 0xeb, 0x0f, 0xeb, 0x0f, 0x7b, 0x13, 0x7b, 0x13, 0x89, 0x16, 0x89, 0x16, 0x09, 0x19, 0x09, 0x19, 0xf3, 0x1a, 0xf3, 0x1a, 0x3a, 0x1c, 0x3a, 0x1c, 0xcb, 0x1c, 0xcb, 0x1c, 0x9b, 0x1c, 0x9b, 0x1c, 0xa8, 0x1b, 0xa8, 0x1b, 0xf8, 0x19, 0xf8, 0x19, 0x99, 0x17, 0x99, 0x17, 0x9d, 0x14, 0x9d, 0x14, 0x15, 0x11, 0x15, 0x11, 0x13, 0x0d, 0x13, 0x0d, 0xac, 0x08, 0xac, 0x08, 0x09, 0x04, 0x09, 0x04, 0x55, 0xff, 0x55, 0xff, 0xb8, 0xfa, 0xb8, 0xfa, 0x59, 0xf6, 0x59, 0xf6, 0x5a, 0xf2, 0x5a, 0xf2, 0xd4, 0xee, 0xd4, 0xee, 0xe1, 0xeb, 0xe1, 0xeb, 0x95, 0xe9, 0x95, 0xe9, 0xfb, 0xe7, 0xfb, 0xe7, 0x1d, 0xe7, 0x1d, 0xe7, 0x01, 0xe7, 0x01, 0xe7, 0xa4, 0xe7, 0xa4, 0xe7, 0xf6, 0xe8, 0xf6, 0xe8, 0xe1, 0xea, 0xe1, 0xea, 0x50, 0xed, 0x50, 0xed, 0x2d, 0xf0, 0x2d, 0xf0, 0x5e, 0xf3, 0x5e, 0xf3, 0xc7, 0xf6, 0xc7, 0xf6, 0x4d, 0xfa, 0x4d, 0xfa, 0xd9, 0xfd, 0xd9, 0xfd, 0x55, 0x01, 0x55, 0x01, 0xb0, 0x04, 0xb0, 0x04, 0xdd, 0x07, 0xdd, 0x07, 0xc8, 0x0a, 0xc8, 0x0a, 0x5f, 0x0d, 0x5f, 0x0d, 0x94, 0x0f, 0x94, 0x0f, 0x5d, 0x11, 0x5d, 0x11, 0xa4, 0x12, 0xa4, 0x12, 0x5c, 0x13, 0x5c, 0x13, 0x7c, 0x13, 0x7c, 0x13, 0x0a, 0x13, 0x0a, 0x13, 0x0e, 0x12, 0x0e, 0x12, 0x93, 0x10, 0x93, 0x10, 0xa2, 0x0e, 0xa2, 0x0e, 0x3f, 0x0c, 0x3f, 0x0c, 0x75, 0x09, 0x75, 0x09, 0x5d, 0x06, 0x5d, 0x06, 0x19, 0x03, 0x19, 0x03, 0xc4, 0xff, 0xc4, 0xff, 0x7b, 0xfc, 0x7b, 0xfc, 0x5f, 0xf9, 0x5f, 0xf9, 0x8b, 0xf6, 0x8b, 0xf6, 0x1b, 0xf4, 0x1b, 0xf4, 0x1f, 0xf2, 0x1f, 0xf2, 0xa2, 0xf0, 0xa2, 0xf0, 0xa4, 0xef, 0xa4, 0xef, 0x27, 0xef, 0x27, 0xef, 0x31, 0xef, 0x31, 0xef, 0xbd, 0xef, 0xbd, 0xef, 0xbf, 0xf0, 0xbf, 0xf0, 0x29, 0xf2, 0x29, 0xf2, 0xf1, 0xf3, 0xf1, 0xf3, 0x0a, 0xf6, 0x0a, 0xf6, 0x66, 0xf8, 0x66, 0xf8, 0xf4, 0xfa, 0xf4, 0xfa, 0x9d, 0xfd, 0x9d, 0xfd, 0x49, 0x00, 0x49, 0x00, 0xe7, 0x02, 0xe7, 0x02, 0x65, 0x05, 0x65, 0x05, 0xb2, 0x07, 0xb2, 0x07, 0xbb, 0x09, 0xbb, 0x09, 0x75, 0x0b, 0x75, 0x0b, 0xd7, 0x0c, 0xd7, 0x0c, 0xda, 0x0d, 0xda, 0x0d, 0x78, 0x0e, 0x78, 0x0e, 0xa9, 0x0e, 0xa9, 0x0e, 0x6d, 0x0e, 0x6d, 0x0e, 0xc4, 0x0d, 0xc4, 0x0d, 0xb6, 0x0c, 0xb6, 0x0c, 0x4e, 0x0b, 0x4e, 0x0b, 0xa2, 0x09, 0xa2, 0x09, 0xba, 0x07, 0xba, 0x07, 0xa8, 0x05, 0xa8, 0x05, 0x82, 0x03, 0x82, 0x03, 0x5c, 0x01, 0x5c, 0x01, 0x41, 0xff, 0x41, 0xff, 0x3e, 0xfd, 0x3e, 0xfd, 0x65, 0xfb, 0x65, 0xfb, 0xc6, 0xf9, 0xc6, 0xf9, 0x69, 0xf8, 0x69, 0xf8, 0x55, 0xf7, 0x55, 0xf7, 0x8f, 0xf6, 0x8f, 0xf6, 0x15, 0xf6, 0x15, 0xf6, 0xea, 0xf5, 0xea, 0xf5, 0x17, 0xf6, 0x17, 0xf6, 0x99, 0xf6, 0x99, 0xf6, 0x6f, 0xf7, 0x6f, 0xf7, 0x8a, 0xf8, 0x8a, 0xf8, 0xe0, 0xf9, 0xe0, 0xf9, 0x58, 0xfb, 0x58, 0xfb, 0xe7, 0xfc, 0xe7, 0xfc, 0x86, 0xfe, 0x86, 0xfe, 0x2a, 0x00, 0x2a, 0x00, 0xc3, 0x01, 0xc3, 0x01, 0x44, 0x03, 0x44, 0x03, 0x9e, 0x04, 0x9e, 0x04, 0xc3, 0x05, 0xc3, 0x05, 0xaf, 0x06, 0xaf, 0x06, 0x5b, 0x07, 0x5b, 0x07, 0xbe, 0x07, 0xbe, 0x07, 0xd5, 0x07, 0xd5, 0x07, 0xa1, 0x07, 0xa1, 0x07, 0x25, 0x07, 0x25, 0x07, 0x6c, 0x06, 0x6c, 0x06, 0x84, 0x05, 0x84, 0x05, 0x7d, 0x04, 0x7d, 0x04, 0x5d, 0x03, 0x5d, 0x03, 0x2b, 0x02, 0x2b, 0x02, 0xf3, 0x00, 0xf3, 0x00, 0xbd, 0xff, 0xbd, 0xff, 0x91, 0xfe, 0x91, 0xfe, 0x7b, 0xfd, 0x7b, 0xfd, 0x86, 0xfc, 0x86, 0xfc, 0xbb, 0xfb, 0xbb, 0xfb, 0x23, 0xfb, 0x23, 0xfb, 0xc1, 0xfa, 0xc1, 0xfa, 0x8b, 0xfa, 0x8b, 0xfa, 0x76, 0xfa, 0x76, 0xfa, 0x7f, 0xfa, 0x7f, 0xfa, 0xad, 0xfa, 0xad, 0xfa, 0x09, 0xfb, 0x09, 0xfb, 0x94, 0xfb, 0x94, 0xfb, 0x47, 0xfc, 0x47, 0xfc, 0x0c, 0xfd, 0x0c, 0xfd, 0xd4, 0xfd, 0xd4, 0xfd, 0xa0, 0xfe, 0xa0, 0xfe, 0x74, 0xff, 0x74, 0xff, 0x56, 0x00, 0x56, 0x00, 0x3b, 0x01, 0x3b, 0x01, 0x13, 0x02, 0x13, 0x02, 0xcc, 0x02, 0xcc, 0x02, 0x5e, 0x03, 0x5e, 0x03, 0xce, 0x03, 0xce, 0x03, 0x17, 0x04, 0x17, 0x04, 0x36, 0x04, 0x36, 0x04, 0x26, 0x04, 0x26, 0x04, 0xec, 0x03, 0xec, 0x03, 0x95, 0x03, 0x95, 0x03, 0x28, 0x03, 0x28, 0x03, 0xab, 0x02, 0xab, 0x02, 0x23, 0x02, 0x23, 0x02, 0x8c, 0x01, 0x8c, 0x01, 0xe8, 0x00, 0xe8, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x85, 0xff, 0x85, 0xff, 0xca, 0xfe, 0xca, 0xfe, 0x0d, 0xfe, 0x0d, 0xfe, 0x59, 0xfd, 0x59, 0xfd, 0xb7, 0xfc, 0xb7, 0xfc, 0x2b, 0xfc, 0x2b, 0xfc, 0xbc, 0xfb, 0xbc, 0xfb, 0x6d, 0xfb, 0x6d, 0xfb, 0x44, 0xfb, 0x44, 0xfb, 0x53, 0xfb, 0x53, 0xfb, 0xa7, 0xfb, 0xa7, 0xfb, 0x3f, 0xfc, 0x3f, 0xfc, 0x0e, 0xfd, 0x0e, 0xfd, 0x00, 0xfe, 0x00, 0xfe, 0xfd, 0xfe, 0xfd, 0xfe, 0xf6, 0xff, 0xf6, 0xff, 0xe0, 0x00, 0xe0, 0x00, 0xb2, 0x01, 0xb2, 0x01, 0x58, 0x02, 0x58, 0x02, 0xbd, 0x02, 0xbd, 0x02, 0xd5, 0x02, 0xd5, 0x02, 0xa5, 0x02, 0xa5, 0x02, 0x3a, 0x02, 0x3a, 0x02, 0xa4, 0x01, 0xa4, 0x01, 0xff, 0x00, 0xff, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xd6, 0xff, 0xd6, 0xff, 0x73, 0xff, 0x73, 0xff, 0x35, 0xff, 0x35, 0xff, 0x12, 0xff, 0x12, 0xff, 0x01, 0xff, 0x01, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0x12, 0xff, 0x12, 0xff, 0x3c, 0xff, 0x3c, 0xff, 0x71, 0xff, 0x71, 0xff, 0x94, 0xff, 0x94, 0xff, 0x91, 0xff, 0x91, 0xff, 0x67, 0xff, 0x67, 0xff, 0x2d, 0xff, 0x2d, 0xff, 0x03, 0xff, 0x03, 0xff, 0xfb, 0xfe, 0xfb, 0xfe, 0x12, 0xff, 0x12, 0xff, 0x3c, 0xff, 0x3c, 0xff, 0x70, 0xff, 0x70, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0x40, 0x00, 0x40, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xa0, 0x01, 0xa0, 0x01, 0x7b, 0x02, 0x7b, 0x02, 0xfc, 0x02, 0xfc, 0x02, 0xe0, 0x02, 0xe0, 0x02, 0x47, 0x02, 0x47, 0x02, 0xa9, 0x01, 0xa9, 0x01, 0x87, 0x01, 0x87, 0x01, 0x0b, 0x02, 0x0b, 0x02, 0xe2, 0x02, 0xe2, 0x02, 0x6c, 0x03, 0x6c, 0x03, 0x3d, 0x03, 0x3d, 0x03, 0x5e, 0x02, 0x5e, 0x02, 0x39, 0x01, 0x39, 0x01, 0x4e, 0x00, 0x4e, 0x00, 0xee, 0xff, 0xee, 0xff, 0x19, 0x00, 0x19, 0x00, 0x87, 0x00, 0x87, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x5b, 0xff, 0x5b, 0xff, 0xdf, 0xfd, 0xdf, 0xfd, 0x9c, 0xfc, 0x9c, 0xfc, 0x1e, 0xfc, 0x1e, 0xfc, 0x7e, 0xfc, 0x7e, 0xfc, 0x5d, 0xfd, 0x5d, 0xfd, 0x24, 0xfe, 0x24, 0xfe, 0x69, 0xfe, 0x69, 0xfe, 0x2b, 0xfe, 0x2b, 0xfe, 0xcb, 0xfd, 0xcb, 0xfd, 0xb2, 0xfd, 0xb2, 0xfd, 0x0b, 0xfe, 0x0b, 0xfe, 0xbb, 0xfe, 0xbb, 0xfe, 0x8b, 0xff, 0x8b, 0xff, 0x4c, 0x00, 0x4c, 0x00, 0xdc, 0x00, 0xdc, 0x00, 0x27, 0x01, 0x27, 0x01, 0x35, 0x01, 0x35, 0x01, 0x27, 0x01, 0x27, 0x01, 0x27, 0x01, 0x27, 0x01, 0x41, 0x01, 0x41, 0x01, 0x5f, 0x01, 0x5f, 0x01, 0x5f, 0x01, 0x5f, 0x01, 0x39, 0x01, 0x39, 0x01, 0xfd, 0x00, 0xfd, 0x00, 0xba, 0x00, 0xba, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x03, 0x00, 0x03, 0x00, 0x7b, 0xff, 0x7b, 0xff, 0xf2, 0xfe, 0xf2, 0xfe, 0x9e, 0xfe, 0x9e, 0xfe, 0x97, 0xfe, 0x97, 0xfe, 0xc5, 0xfe, 0xc5, 0xfe, 0xf3, 0xfe, 0xf3, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, 0xd2, 0xfe, 0xd2, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0x12, 0xff, 0x12, 0xff, 0x68, 0xff, 0x68, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0x5a, 0x00, 0x5a, 0x00, 0xde, 0x00, 0xde, 0x00, 0x4d, 0x01, 0x4d, 0x01, 0x97, 0x01, 0x97, 0x01, 0xc2, 0x01, 0xc2, 0x01, 0xe9, 0x01, 0xe9, 0x01, 0x22, 0x02, 0x22, 0x02, 0x69, 0x02, 0x69, 0x02, 0xad, 0x02, 0xad, 0x02, 0xda, 0x02, 0xda, 0x02, 0xe2, 0x02, 0xe2, 0x02, 0xbc, 0x02, 0xbc, 0x02, 0x61, 0x02, 0x61, 0x02, 0xd1, 0x01, 0xd1, 0x01, 0x1c, 0x01, 0x1c, 0x01, 0x65, 0x00, 0x65, 0x00, 0xcf, 0xff, 0xcf, 0xff, 0x62, 0xff, 0x62, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0xbb, 0xfe, 0xbb, 0xfe, 0x5c, 0xfe, 0x5c, 0xfe, 0xf8, 0xfd, 0xf8, 0xfd, 0xa6, 0xfd, 0xa6, 0xfd, 0x7b, 0xfd, 0x7b, 0xfd, 0x7c, 0xfd, 0x7c, 0xfd, 0xa6, 0xfd, 0xa6, 0xfd, 0xf2, 0xfd, 0xf2, 0xfd, 0x5b, 0xfe, 0x5b, 0xfe, 0xd1, 0xfe, 0xd1, 0xfe, 0x41, 0xff, 0x41, 0xff, 0x98, 0xff, 0x98, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0x01, 0x00, 0x01, 0x00, 0x28, 0x00, 0x28, 0x00, 0x53, 0x00, 0x53, 0x00, 0x86, 0x00, 0x86, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xef, 0x00, 0xef, 0x00, 0x0f, 0x01, 0x0f, 0x01, 0x12, 0x01, 0x12, 0x01, 0xff, 0x00, 0xff, 0x00, 0xe8, 0x00, 0xe8, 0x00, 0xda, 0x00, 0xda, 0x00, 0xd5, 0x00, 0xd5, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x63, 0x00, 0x63, 0x00, 0x14, 0x00, 0x14, 0x00, 0xb2, 0xff, 0xb2, 0xff, 0x42, 0xff, 0x42, 0xff, 0xca, 0xfe, 0xca, 0xfe, 0x58, 0xfe, 0x58, 0xfe, 0xfa, 0xfd, 0xfa, 0xfd, 0xae, 0xfd, 0xae, 0xfd, 0x6b, 0xfd, 0x6b, 0xfd, 0x33, 0xfd, 0x33, 0xfd, 0x11, 0xfd, 0x11, 0xfd, 0x1a, 0xfd, 0x1a, 0xfd, 0x50, 0xfd, 0x50, 0xfd, 0xac, 0xfd, 0xac, 0xfd, 0x22, 0xfe, 0x22, 0xfe, 0xa9, 0xfe, 0xa9, 0xfe, 0x3d, 0xff, 0x3d, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0x73, 0x00, 0x73, 0x00, 0x03, 0x01, 0x03, 0x01, 0x85, 0x01, 0x85, 0x01, 0xfd, 0x01, 0xfd, 0x01, 0x6f, 0x02, 0x6f, 0x02, 0xd6, 0x02, 0xd6, 0x02, 0x24, 0x03, 0x24, 0x03, 0x4c, 0x03, 0x4c, 0x03, 0x48, 0x03, 0x48, 0x03, 0x23, 0x03, 0x23, 0x03, 0xe5, 0x02, 0xe5, 0x02, 0x94, 0x02, 0x94, 0x02, 0x34, 0x02, 0x34, 0x02, 0xcf, 0x01, 0xcf, 0x01, 0x6a, 0x01, 0x6a, 0x01, 0x04, 0x01, 0x04, 0x01, 0x9b, 0x00, 0x9b, 0x00, 0x29, 0x00, 0x29, 0x00, 0xb2, 0xff, 0xb2, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0xde, 0xfe, 0xde, 0xfe, 0x94, 0xfe, 0x94, 0xfe, 0x5a, 0xfe, 0x5a, 0xfe, 0x20, 0xfe, 0x20, 0xfe, 0xe7, 0xfd, 0xe7, 0xfd, 0xb7, 0xfd, 0xb7, 0xfd, 0x9d, 0xfd, 0x9d, 0xfd, 0x9f, 0xfd, 0x9f, 0xfd, 0xb4, 0xfd, 0xb4, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, 0x04, 0xfe, 0x04, 0xfe, 0x40, 0xfe, 0x40, 0xfe, 0x8d, 0xfe, 0x8d, 0xfe, 0xec, 0xfe, 0xec, 0xfe, 0x5a, 0xff, 0x5a, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0x4a, 0x00, 0x4a, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0x12, 0x01, 0x12, 0x01, 0x4f, 0x01, 0x4f, 0x01, 0x6c, 0x01, 0x6c, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0x63, 0x01, 0x63, 0x01, 0x54, 0x01, 0x54, 0x01, 0x45, 0x01, 0x45, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0x11, 0x01, 0x11, 0x01, 0xec, 0x00, 0xec, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x44, 0x00, 0x44, 0x00, 0x30, 0x00, 0x30, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0x96, 0xff, 0x96, 0xff, 0x68, 0xff, 0x68, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x12, 0xff, 0x12, 0xff, 0xf5, 0xfe, 0xf5, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, 0xea, 0xfe, 0xea, 0xfe, 0xf4, 0xfe, 0xf4, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x0d, 0xff, 0x0d, 0xff, 0x27, 0xff, 0x27, 0xff, 0x58, 0xff, 0x58, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0x4f, 0x00, 0x4f, 0x00, 0x98, 0x00, 0x98, 0x00, 0xd8, 0x00, 0xd8, 0x00, 0x14, 0x01, 0x14, 0x01, 0x50, 0x01, 0x50, 0x01, 0x8e, 0x01, 0x8e, 0x01, 0xcb, 0x01, 0xcb, 0x01, 0x02, 0x02, 0x02, 0x02, 0x2e, 0x02, 0x2e, 0x02, 0x4a, 0x02, 0x4a, 0x02, 0x53, 0x02, 0x53, 0x02, 0x45, 0x02, 0x45, 0x02, 0x27, 0x02, 0x27, 0x02, 0xfc, 0x01, 0xfc, 0x01, 0xc9, 0x01, 0xc9, 0x01, 0x8d, 0x01, 0x8d, 0x01, 0x43, 0x01, 0x43, 0x01, 0xe9, 0x00, 0xe9, 0x00, 0x82, 0x00, 0x82, 0x00, 0x16, 0x00, 0x16, 0x00, 0xad, 0xff, 0xad, 0xff, 0x49, 0xff, 0x49, 0xff, 0xeb, 0xfe, 0xeb, 0xfe, 0x94, 0xfe, 0x94, 0xfe, 0x47, 0xfe, 0x47, 0xfe, 0x04, 0xfe, 0x04, 0xfe, 0xcb, 0xfd, 0xcb, 0xfd, 0x9e, 0xfd, 0x9e, 0xfd, 0x81, 0xfd, 0x81, 0xfd, 0x76, 0xfd, 0x76, 0xfd, 0x80, 0xfd, 0x80, 0xfd, 0x98, 0xfd, 0x98, 0xfd, 0xb9, 0xfd, 0xb9, 0xfd, 0xdf, 0xfd, 0xdf, 0xfd, 0x08, 0xfe, 0x08, 0xfe, 0x36, 0xfe, 0x36, 0xfe, 0x6f, 0xfe, 0x6f, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, 0xf4, 0xfe, 0xf4, 0xfe, 0x35, 0xff, 0x35, 0xff, 0x70, 0xff, 0x70, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0x27, 0x00, 0x27, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0xbb, 0x00, 0xbb, 0x00, 0x06, 0x01, 0x06, 0x01, 0x4b, 0x01, 0x4b, 0x01, 0x8c, 0x01, 0x8c, 0x01, 0xcc, 0x01, 0xcc, 0x01, 0x0c, 0x02, 0x0c, 0x02, 0x42, 0x02, 0x42, 0x02, 0x6e, 0x02, 0x6e, 0x02, 0x8f, 0x02, 0x8f, 0x02, 0x9e, 0x02, 0x9e, 0x02, 0x95, 0x02, 0x95, 0x02, 0x72, 0x02, 0x72, 0x02, 0x3e, 0x02, 0x3e, 0x02, 0x00, 0x02, 0x00, 0x02, 0xbe, 0x01, 0xbe, 0x01, 0x7e, 0x01, 0x7e, 0x01, 0x40, 0x01, 0x40, 0x01, 0x04, 0x01, 0x04, 0x01, 0xc8, 0x00, 0xc8, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0x55, 0x00, 0x55, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0xe8, 0xff, 0xe8, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x49, 0xff, 0x49, 0xff, 0x11, 0xff, 0x11, 0xff, 0xd3, 0xfe, 0xd3, 0xfe, 0x90, 0xfe, 0x90, 0xfe, 0x4a, 0xfe, 0x4a, 0xfe, 0x04, 0xfe, 0x04, 0xfe, 0xc4, 0xfd, 0xc4, 0xfd, 0x8c, 0xfd, 0x8c, 0xfd, 0x60, 0xfd, 0x60, 0xfd, 0x41, 0xfd, 0x41, 0xfd, 0x31, 0xfd, 0x31, 0xfd, 0x2b, 0xfd, 0x2b, 0xfd, 0x2f, 0xfd, 0x2f, 0xfd, 0x40, 0xfd, 0x40, 0xfd, 0x61, 0xfd, 0x61, 0xfd, 0x94, 0xfd, 0x94, 0xfd, 0xd4, 0xfd, 0xd4, 0xfd, 0x1a, 0xfe, 0x1a, 0xfe, 0x62, 0xfe, 0x62, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, 0xf0, 0xfe, 0xf0, 0xfe, 0x37, 0xff, 0x37, 0xff, 0x80, 0xff, 0x80, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0x0c, 0x00, 0x0c, 0x00, 0x48, 0x00, 0x48, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0xae, 0x00, 0xae, 0x00, 0xdb, 0x00, 0xdb, 0x00, 0x09, 0x01, 0x09, 0x01, 0x39, 0x01, 0x39, 0x01, 0x67, 0x01, 0x67, 0x01, 0x8b, 0x01, 0x8b, 0x01, 0xa7, 0x01, 0xa7, 0x01, 0xbc, 0x01, 0xbc, 0x01, 0xc9, 0x01, 0xc9, 0x01, 0xcd, 0x01, 0xcd, 0x01, 0xc5, 0x01, 0xc5, 0x01, 0xaf, 0x01, 0xaf, 0x01, 0x8a, 0x01, 0x8a, 0x01, 0x57, 0x01, 0x57, 0x01, 0x19, 0x01, 0x19, 0x01, 0xdb, 0x00, 0xdb, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x71, 0x00, 0x71, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x39, 0x00, 0x39, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x92, 0x00, 0x92, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xec, 0x00, 0xec, 0x00, 0x0f, 0x01, 0x0f, 0x01, 0x25, 0x01, 0x25, 0x01, 0x2b, 0x01, 0x2b, 0x01, 0x20, 0x01, 0x20, 0x01, 0x06, 0x01, 0x06, 0x01, 0xdd, 0x00, 0xdd, 0x00, 0xa6, 0x00, 0xa6, 0x00, 0x65, 0x00, 0x65, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0xce, 0xff, 0xce, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x24, 0xff, 0x24, 0xff, 0xcf, 0xfe, 0xcf, 0xfe, 0x7c, 0xfe, 0x7c, 0xfe, 0x2e, 0xfe, 0x2e, 0xfe, 0xe6, 0xfd, 0xe6, 0xfd, 0xaa, 0xfd, 0xaa, 0xfd, 0x7a, 0xfd, 0x7a, 0xfd, 0x55, 0xfd, 0x55, 0xfd, 0x3c, 0xfd, 0x3c, 0xfd, 0x2c, 0xfd, 0x2c, 0xfd, 0x24, 0xfd, 0x24, 0xfd, 0x29, 0xfd, 0x29, 0xfd, 0x3c, 0xfd, 0x3c, 0xfd, 0x63, 0xfd, 0x63, 0xfd, 0x9d, 0xfd, 0x9d, 0xfd, 0xe7, 0xfd, 0xe7, 0xfd, 0x40, 0xfe, 0x40, 0xfe, 0xa9, 0xfe, 0xa9, 0xfe, 0x24, 0xff, 0x24, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0x53, 0x00, 0x53, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xa9, 0x01, 0xa9, 0x01, 0x4b, 0x02, 0x4b, 0x02, 0xe0, 0x02, 0xe0, 0x02, 0x66, 0x03, 0x66, 0x03, 0xd9, 0x03, 0xd9, 0x03, 0x32, 0x04, 0x32, 0x04, 0x6c, 0x04, 0x6c, 0x04, 0x83, 0x04, 0x83, 0x04, 0x75, 0x04, 0x75, 0x04, 0x45, 0x04, 0x45, 0x04, 0xfa, 0x03, 0xfa, 0x03, 0x97, 0x03, 0x97, 0x03, 0x1f, 0x03, 0x1f, 0x03, 0x96, 0x02, 0x96, 0x02, 0xfb, 0x01, 0xfb, 0x01, 0x53, 0x01, 0x53, 0x01, 0x9f, 0x00, 0x9f, 0x00, 0xe5, 0xff, 0xe5, 0xff, 0x2e, 0xff, 0x2e, 0xff, 0x7e, 0xfe, 0x7e, 0xfe, 0xd8, 0xfd, 0xd8, 0xfd, 0x3a, 0xfd, 0x3a, 0xfd, 0xa6, 0xfc, 0xa6, 0xfc, 0x21, 0xfc, 0x21, 0xfc, 0xb5, 0xfb, 0xb5, 0xfb, 0x6c, 0xfb, 0x6c, 0xfb, 0x47, 0xfb, 0x47, 0xfb, 0x47, 0xfb, 0x47, 0xfb, 0x6a, 0xfb, 0x6a, 0xfb, 0xaf, 0xfb, 0xaf, 0xfb, 0x17, 0xfc, 0x17, 0xfc, 0xa1, 0xfc, 0xa1, 0xfc, 0x48, 0xfd, 0x48, 0xfd, 0x08, 0xfe, 0x08, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xb8, 0xff, 0xb8, 0xff, 0x98, 0x00, 0x98, 0x00, 0x78, 0x01, 0x78, 0x01, 0x52, 0x02, 0x52, 0x02, 0x22, 0x03, 0x22, 0x03, 0xe8, 0x03, 0xe8, 0x03, 0x9b, 0x04, 0x9b, 0x04, 0x33, 0x05, 0x33, 0x05, 0xa6, 0x05, 0xa6, 0x05, 0xf2, 0x05, 0xf2, 0x05, 0x19, 0x06, 0x19, 0x06, 0x1f, 0x06, 0x1f, 0x06, 0x04, 0x06, 0x04, 0x06, 0xc4, 0x05, 0xc4, 0x05, 0x5b, 0x05, 0x5b, 0x05, 0xc7, 0x04, 0xc7, 0x04, 0x0e, 0x04, 0x0e, 0x04, 0x3b, 0x03, 0x3b, 0x03, 0x55, 0x02, 0x55, 0x02, 0x60, 0x01, 0x60, 0x01, 0x61, 0x00, 0x61, 0x00, 0x5a, 0xff, 0x5a, 0xff, 0x4d, 0xfe, 0x4d, 0xfe, 0x47, 0xfd, 0x47, 0xfd, 0x52, 0xfc, 0x52, 0xfc, 0x77, 0xfb, 0x77, 0xfb, 0xb9, 0xfa, 0xb9, 0xfa, 0x1d, 0xfa, 0x1d, 0xfa, 0xa7, 0xf9, 0xa7, 0xf9, 0x57, 0xf9, 0x57, 0xf9, 0x30, 0xf9, 0x30, 0xf9, 0x36, 0xf9, 0x36, 0xf9, 0x69, 0xf9, 0x69, 0xf9, 0xc6, 0xf9, 0xc6, 0xf9, 0x4a, 0xfa, 0x4a, 0xfa, 0xf0, 0xfa, 0xf0, 0xfa, 0xb0, 0xfb, 0xb0, 0xfb, 0x81, 0xfc, 0x81, 0xfc, 0x61, 0xfd, 0x61, 0xfd, 0x4a, 0xfe, 0x4a, 0xfe, 0x3c, 0xff, 0x3c, 0xff, 0x31, 0x00, 0x31, 0x00, 0x23, 0x01, 0x23, 0x01, 0x0f, 0x02, 0x0f, 0x02, 0xf1, 0x02, 0xf1, 0x02, 0xc7, 0x03, 0xc7, 0x03, 0x8d, 0x04, 0x8d, 0x04, 0x3c, 0x05, 0x3c, 0x05, 0xce, 0x05, 0xce, 0x05, 0x3d, 0x06, 0x3d, 0x06, 0x88, 0x06, 0x88, 0x06, 0xae, 0x06, 0xae, 0x06, 0xaf, 0x06, 0xaf, 0x06, 0x87, 0x06, 0x87, 0x06, 0x35, 0x06, 0x35, 0x06, 0xbc, 0x05, 0xbc, 0x05, 0x1d, 0x05, 0x1d, 0x05, 0x5f, 0x04, 0x5f, 0x04, 0x88, 0x03, 0x88, 0x03, 0xa2, 0x02, 0xa2, 0x02, 0xb1, 0x01, 0xb1, 0x01, 0xbe, 0x00, 0xbe, 0x00, 0xd2, 0xff, 0xd2, 0xff, 0xf0, 0xfe, 0xf0, 0xfe, 0x1c, 0xfe, 0x1c, 0xfe, 0x5b, 0xfd, 0x5b, 0xfd, 0xb5, 0xfc, 0xb5, 0xfc, 0x2e, 0xfc, 0x2e, 0xfc, 0xc5, 0xfb, 0xc5, 0xfb, 0x75, 0xfb, 0x75, 0xfb, 0x3d, 0xfb, 0x3d, 0xfb, 0x1d, 0xfb, 0x1d, 0xfb, 0x19, 0xfb, 0x19, 0xfb, 0x31, 0xfb, 0x31, 0xfb, 0x65, 0xfb, 0x65, 0xfb, 0xae, 0xfb, 0xae, 0xfb, 0x06, 0xfc, 0x06, 0xfc, 0x66, 0xfc, 0x66, 0xfc, 0xce, 0xfc, 0xce, 0xfc, 0x41, 0xfd, 0x41, 0xfd, 0xbf, 0xfd, 0xbf, 0xfd, 0x47, 0xfe, 0x47, 0xfe, 0xd0, 0xfe, 0xd0, 0xfe, 0x5b, 0xff, 0x5b, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0x5b, 0x00, 0x5b, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0x1f, 0x01, 0x1f, 0x01, 0x6b, 0x01, 0x6b, 0x01, 0xa9, 0x01, 0xa9, 0x01, 0xda, 0x01, 0xda, 0x01, 0xfc, 0x01, 0xfc, 0x01, 0x0e, 0x02, 0x0e, 0x02, 0x0b, 0x02, 0x0b, 0x02, 0xf9, 0x01, 0xf9, 0x01, 0xda, 0x01, 0xda, 0x01, 0xb4, 0x01, 0xb4, 0x01, 0x8b, 0x01, 0x8b, 0x01, 0x60, 0x01, 0x60, 0x01, 0x34, 0x01, 0x34, 0x01, 0x05, 0x01, 0x05, 0x01, 0xd6, 0x00, 0xd6, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x62, 0x00, 0x62, 0x00, 0x55, 0x00, 0x55, 0x00, 0x53, 0x00, 0x53, 0x00, 0x58, 0x00, 0x58, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x63, 0x00, 0x63, 0x00, 0x64, 0x00, 0x64, 0x00, 0x64, 0x00, 0x64, 0x00, 0x63, 0x00, 0x63, 0x00, 0x60, 0x00, 0x60, 0x00, 0x56, 0x00, 0x56, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0xe9, 0xff, 0xe9, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0x78, 0xff, 0x78, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x0b, 0xff, 0x0b, 0xff, 0xdc, 0xfe, 0xdc, 0xfe, 0xad, 0xfe, 0xad, 0xfe, 0x7e, 0xfe, 0x7e, 0xfe, 0x53, 0xfe, 0x53, 0xfe, 0x2d, 0xfe, 0x2d, 0xfe, 0x11, 0xfe, 0x11, 0xfe, 0xfc, 0xfd, 0xfc, 0xfd, 0xec, 0xfd, 0xec, 0xfd, 0xdf, 0xfd, 0xdf, 0xfd, 0xd3, 0xfd, 0xd3, 0xfd, 0xc9, 0xfd, 0xc9, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xcc, 0xfd, 0xcc, 0xfd, 0xe3, 0xfd, 0xe3, 0xfd, 0x0b, 0xfe, 0x0b, 0xfe, 0x45, 0xfe, 0x45, 0xfe, 0x90, 0xfe, 0x90, 0xfe, 0xe9, 0xfe, 0xe9, 0xfe, 0x53, 0xff, 0x53, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0x50, 0x00, 0x50, 0x00, 0xdd, 0x00, 0xdd, 0x00, 0x6c, 0x01, 0x6c, 0x01, 0xf8, 0x01, 0xf8, 0x01, 0x79, 0x02, 0x79, 0x02, 0xea, 0x02, 0xea, 0x02, 0x4b, 0x03, 0x4b, 0x03, 0x98, 0x03, 0x98, 0x03, 0xd1, 0x03, 0xd1, 0x03, 0xf4, 0x03, 0xf4, 0x03, 0x03, 0x04, 0x03, 0x04, 0xfd, 0x03, 0xfd, 0x03, 0xe0, 0x03, 0xe0, 0x03, 0xab, 0x03, 0xab, 0x03, 0x5e, 0x03, 0x5e, 0x03, 0xfe, 0x02, 0xfe, 0x02, 0x8c, 0x02, 0x8c, 0x02, 0x09, 0x02, 0x09, 0x02, 0x7b, 0x01, 0x7b, 0x01, 0xe2, 0x00, 0xe2, 0x00, 0x44, 0x00, 0x44, 0x00, 0xa4, 0xff, 0xa4, 0xff, 0x08, 0xff, 0x08, 0xff, 0x74, 0xfe, 0x74, 0xfe, 0xeb, 0xfd, 0xeb, 0xfd, 0x6e, 0xfd, 0x6e, 0xfd, 0xfd, 0xfc, 0xfd, 0xfc, 0x99, 0xfc, 0x99, 0xfc, 0x47, 0xfc, 0x47, 0xfc, 0x0c, 0xfc, 0x0c, 0xfc, 0xec, 0xfb, 0xec, 0xfb, 0xea, 0xfb, 0xea, 0xfb, 0x05, 0xfc, 0x05, 0xfc, 0x38, 0xfc, 0x38, 0xfc, 0x7d, 0xfc, 0x7d, 0xfc, 0xcf, 0xfc, 0xcf, 0xfc, 0x33, 0xfd, 0x33, 0xfd, 0xad, 0xfd, 0xad, 0xfd, 0x3e, 0xfe, 0x3e, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, 0x97, 0xff, 0x97, 0xff, 0x50, 0x00, 0x50, 0x00, 0x03, 0x01, 0x03, 0x01, 0xa6, 0x01, 0xa6, 0x01, 0x36, 0x02, 0x36, 0x02, 0xb8, 0x02, 0xb8, 0x02, 0x2c, 0x03, 0x2c, 0x03, 0x91, 0x03, 0x91, 0x03, 0xe4, 0x03, 0xe4, 0x03, 0x1d, 0x04, 0x1d, 0x04, 0x35, 0x04, 0x35, 0x04, 0x27, 0x04, 0x27, 0x04, 0xf7, 0x03, 0xf7, 0x03, 0xb1, 0x03, 0xb1, 0x03, 0x5b, 0x03, 0x5b, 0x03, 0xf7, 0x02, 0xf7, 0x02, 0x83, 0x02, 0x83, 0x02, 0xfa, 0x01, 0xfa, 0x01, 0x61, 0x01, 0x61, 0x01, 0xbe, 0x00, 0xbe, 0x00, 0x19, 0x00, 0x19, 0x00, 0x7c, 0xff, 0x7c, 0xff, 0xf0, 0xfe, 0xf0, 0xfe, 0x78, 0xfe, 0x78, 0xfe, 0x14, 0xfe, 0x14, 0xfe, 0xbf, 0xfd, 0xbf, 0xfd, 0x75, 0xfd, 0x75, 0xfd, 0x38, 0xfd, 0x38, 0xfd, 0x0c, 0xfd, 0x0c, 0xfd, 0xf6, 0xfc, 0xf6, 0xfc, 0xf4, 0xfc, 0xf4, 0xfc, 0x06, 0xfd, 0x06, 0xfd, 0x26, 0xfd, 0x26, 0xfd, 0x4e, 0xfd, 0x4e, 0xfd, 0x7d, 0xfd, 0x7d, 0xfd, 0xb4, 0xfd, 0xb4, 0xfd, 0xf7, 0xfd, 0xf7, 0xfd, 0x48, 0xfe, 0x48, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, 0x1c, 0xff, 0x1c, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x22, 0x00, 0x22, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x1c, 0x01, 0x1c, 0x01, 0x87, 0x01, 0x87, 0x01, 0xe5, 0x01, 0xe5, 0x01, 0x35, 0x02, 0x35, 0x02, 0x75, 0x02, 0x75, 0x02, 0x9f, 0x02, 0x9f, 0x02, 0xaf, 0x02, 0xaf, 0x02, 0xa3, 0x02, 0xa3, 0x02, 0x7d, 0x02, 0x7d, 0x02, 0x42, 0x02, 0x42, 0x02, 0xf9, 0x01, 0xf9, 0x01, 0xaa, 0x01, 0xaa, 0x01, 0x57, 0x01, 0x57, 0x01, 0x04, 0x01, 0x04, 0x01, 0xad, 0x00, 0xad, 0x00, 0x53, 0x00, 0x53, 0x00, 0xf4, 0xff, 0xf4, 0xff, 0x97, 0xff, 0x97, 0xff, 0x44, 0xff, 0x44, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xc9, 0xfe, 0xc9, 0xfe, 0x9c, 0xfe, 0x9c, 0xfe, 0x76, 0xfe, 0x76, 0xfe, 0x57, 0xfe, 0x57, 0xfe, 0x43, 0xfe, 0x43, 0xfe, 0x3a, 0xfe, 0x3a, 0xfe, 0x3d, 0xfe, 0x3d, 0xfe, 0x4a, 0xfe, 0x4a, 0xfe, 0x5b, 0xfe, 0x5b, 0xfe, 0x71, 0xfe, 0x71, 0xfe, 0x8c, 0xfe, 0x8c, 0xfe, 0xac, 0xfe, 0xac, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, 0x09, 0xff, 0x09, 0xff, 0x48, 0xff, 0x48, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0x25, 0x00, 0x25, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x48, 0x01, 0x48, 0x01, 0xad, 0x01, 0xad, 0x01, 0x07, 0x02, 0x07, 0x02, 0x4f, 0x02, 0x4f, 0x02, 0x82, 0x02, 0x82, 0x02, 0x9e, 0x02, 0x9e, 0x02, 0xa7, 0x02, 0xa7, 0x02, 0xa3, 0x02, 0xa3, 0x02, 0x90, 0x02, 0x90, 0x02, 0x6a, 0x02, 0x6a, 0x02, 0x2f, 0x02, 0x2f, 0x02, 0xe2, 0x01, 0xe2, 0x01, 0x86, 0x01, 0x86, 0x01, 0x24, 0x01, 0x24, 0x01, 0xc4, 0x00, 0xc4, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0xcf, 0xff, 0xcf, 0xff, 0x84, 0xff, 0x84, 0xff, 0x3b, 0xff, 0x3b, 0xff, 0xf4, 0xfe, 0xf4, 0xfe, 0xb2, 0xfe, 0xb2, 0xfe, 0x72, 0xfe, 0x72, 0xfe, 0x30, 0xfe, 0x30, 0xfe, 0xeb, 0xfd, 0xeb, 0xfd, 0xa7, 0xfd, 0xa7, 0xfd, 0x67, 0xfd, 0x67, 0xfd, 0x2f, 0xfd, 0x2f, 0xfd, 0x02, 0xfd, 0x02, 0xfd, 0xe2, 0xfc, 0xe2, 0xfc, 0xd1, 0xfc, 0xd1, 0xfc, 0xd1, 0xfc, 0xd1, 0xfc, 0xe5, 0xfc, 0xe5, 0xfc, 0x10, 0xfd, 0x10, 0xfd, 0x53, 0xfd, 0x53, 0xfd, 0xab, 0xfd, 0xab, 0xfd, 0x15, 0xfe, 0x15, 0xfe, 0x8a, 0xfe, 0x8a, 0xfe, 0x08, 0xff, 0x08, 0xff, 0x87, 0xff, 0x87, 0xff, 0x04, 0x00, 0x04, 0x00, 0x80, 0x00, 0x80, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0x6c, 0x01, 0x6c, 0x01, 0xcf, 0x01, 0xcf, 0x01, 0x1f, 0x02, 0x1f, 0x02, 0x59, 0x02, 0x59, 0x02, 0x81, 0x02, 0x81, 0x02, 0x99, 0x02, 0x99, 0x02, 0xa5, 0x02, 0xa5, 0x02, 0xa8, 0x02, 0xa8, 0x02, 0x9e, 0x02, 0x9e, 0x02, 0x87, 0x02, 0x87, 0x02, 0x65, 0x02, 0x65, 0x02, 0x3b, 0x02, 0x3b, 0x02, 0x0d, 0x02, 0x0d, 0x02, 0xd9, 0x01, 0xd9, 0x01, 0x9f, 0x01, 0x9f, 0x01, 0x5e, 0x01, 0x5e, 0x01, 0x11, 0x01, 0x11, 0x01, 0xba, 0x00, 0xba, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x41, 0xff, 0x41, 0xff, 0xea, 0xfe, 0xea, 0xfe, 0x95, 0xfe, 0x95, 0xfe, 0x43, 0xfe, 0x43, 0xfe, 0xf7, 0xfd, 0xf7, 0xfd, 0xba, 0xfd, 0xba, 0xfd, 0x92, 0xfd, 0x92, 0xfd, 0x87, 0xfd, 0x87, 0xfd, 0x97, 0xfd, 0x97, 0xfd, 0xb8, 0xfd, 0xb8, 0xfd, 0xe5, 0xfd, 0xe5, 0xfd, 0x19, 0xfe, 0x19, 0xfe, 0x53, 0xfe, 0x53, 0xfe, 0x94, 0xfe, 0x94, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0x28, 0xff, 0x28, 0xff, 0x77, 0xff, 0x77, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x2e, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x69, 0x00, 0x69, 0x00, 0x84, 0x00, 0x84, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xda, 0x00, 0xda, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x04, 0x01, 0x04, 0x01, 0x14, 0x01, 0x14, 0x01, 0x24, 0x01, 0x24, 0x01, 0x34, 0x01, 0x34, 0x01, 0x40, 0x01, 0x40, 0x01, 0x45, 0x01, 0x45, 0x01, 0x40, 0x01, 0x40, 0x01, 0x30, 0x01, 0x30, 0x01, 0x18, 0x01, 0x18, 0x01, 0xfb, 0x00, 0xfb, 0x00, 0xdc, 0x00, 0xdc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x81, 0x00, 0x81, 0x00, 0x69, 0x00, 0x69, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x64, 0x00, 0x64, 0x00, 0x73, 0x00, 0x73, 0x00, 0x83, 0x00, 0x83, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x55, 0x00, 0x55, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x19, 0x00, 0x19, 0x00, 0xeb, 0xff, 0xeb, 0xff, 0xac, 0xff, 0xac, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x0c, 0xff, 0x0c, 0xff, 0xbd, 0xfe, 0xbd, 0xfe, 0x77, 0xfe, 0x77, 0xfe, 0x3e, 0xfe, 0x3e, 0xfe, 0x10, 0xfe, 0x10, 0xfe, 0xeb, 0xfd, 0xeb, 0xfd, 0xce, 0xfd, 0xce, 0xfd, 0xb9, 0xfd, 0xb9, 0xfd, 0xad, 0xfd, 0xad, 0xfd, 0xac, 0xfd, 0xac, 0xfd, 0xb6, 0xfd, 0xb6, 0xfd, 0xce, 0xfd, 0xce, 0xfd, 0xf1, 0xfd, 0xf1, 0xfd, 0x1a, 0xfe, 0x1a, 0xfe, 0x46, 0xfe, 0x46, 0xfe, 0x73, 0xfe, 0x73, 0xfe, 0xa2, 0xfe, 0xa2, 0xfe, 0xd4, 0xfe, 0xd4, 0xfe, 0x07, 0xff, 0x07, 0xff, 0x3e, 0xff, 0x3e, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0x26, 0x00, 0x26, 0x00, 0x85, 0x00, 0x85, 0x00, 0xe4, 0x00, 0xe4, 0x00, 0x3e, 0x01, 0x3e, 0x01, 0x93, 0x01, 0x93, 0x01, 0xe3, 0x01, 0xe3, 0x01, 0x2c, 0x02, 0x2c, 0x02, 0x6e, 0x02, 0x6e, 0x02, 0xa5, 0x02, 0xa5, 0x02, 0xd0, 0x02, 0xd0, 0x02, 0xea, 0x02, 0xea, 0x02, 0xf0, 0x02, 0xf0, 0x02, 0xe8, 0x02, 0xe8, 0x02, 0xd5, 0x02, 0xd5, 0x02, 0xc0, 0x02, 0xc0, 0x02, 0xad, 0x02, 0xad, 0x02, 0x9d, 0x02, 0x9d, 0x02, 0x8b, 0x02, 0x8b, 0x02, 0x76, 0x02, 0x76, 0x02, 0x5f, 0x02, 0x5f, 0x02, 0x48, 0x02, 0x48, 0x02, 0x32, 0x02, 0x32, 0x02, 0x1b, 0x02, 0x1b, 0x02, 0xff, 0x01, 0xff, 0x01, 0xdb, 0x01, 0xdb, 0x01, 0xae, 0x01, 0xae, 0x01, 0x75, 0x01, 0x75, 0x01, 0x37, 0x01, 0x37, 0x01, 0xf5, 0x00, 0xf5, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0x79, 0x00, 0x79, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x03, 0x00, 0xc7, 0xff, 0xc7, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x54, 0xff, 0x54, 0xff, 0x22, 0xff, 0x22, 0xff, 0xf2, 0xfe, 0xf2, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0x85, 0xfe, 0x85, 0xfe, 0x43, 0xfe, 0x43, 0xfe, 0xf9, 0xfd, 0xf9, 0xfd, 0xad, 0xfd, 0xad, 0xfd, 0x63, 0xfd, 0x63, 0xfd, 0x20, 0xfd, 0x20, 0xfd, 0xe3, 0xfc, 0xe3, 0xfc, 0xa9, 0xfc, 0xa9, 0xfc, 0x73, 0xfc, 0x73, 0xfc, 0x45, 0xfc, 0x45, 0xfc, 0x24, 0xfc, 0x24, 0xfc, 0x15, 0xfc, 0x15, 0xfc, 0x1b, 0xfc, 0x1b, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0x61, 0xfc, 0x61, 0xfc, 0x9c, 0xfc, 0x9c, 0xfc, 0xe5, 0xfc, 0xe5, 0xfc, 0x3c, 0xfd, 0x3c, 0xfd, 0x9f, 0xfd, 0x9f, 0xfd, 0x11, 0xfe, 0x11, 0xfe, 0x8e, 0xfe, 0x8e, 0xfe, 0x15, 0xff, 0x15, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x29, 0x00, 0x29, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0x32, 0x01, 0x32, 0x01, 0xae, 0x01, 0xae, 0x01, 0x22, 0x02, 0x22, 0x02, 0x8e, 0x02, 0x8e, 0x02, 0xef, 0x02, 0xef, 0x02, 0x3f, 0x03, 0x3f, 0x03, 0x82, 0x03, 0x82, 0x03, 0xbb, 0x03, 0xbb, 0x03, 0xe9, 0x03, 0xe9, 0x03, 0x0c, 0x04, 0x0c, 0x04, 0x1e, 0x04, 0x1e, 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x0a, 0x04, 0x0a, 0x04, 0xde, 0x03, 0xde, 0x03, 0x9c, 0x03, 0x9c, 0x03, 0x4a, 0x03, 0x4a, 0x03, 0xed, 0x02, 0xed, 0x02, 0x88, 0x02, 0x88, 0x02, 0x19, 0x02, 0x19, 0x02, 0xa0, 0x01, 0xa0, 0x01, 0x1c, 0x01, 0x1c, 0x01, 0x94, 0x00, 0x94, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x86, 0xff, 0x86, 0xff, 0x0e, 0xff, 0x0e, 0xff, 0xa3, 0xfe, 0xa3, 0xfe, 0x46, 0xfe, 0x46, 0xfe, 0xf5, 0xfd, 0xf5, 0xfd, 0xae, 0xfd, 0xae, 0xfd, 0x73, 0xfd, 0x73, 0xfd, 0x45, 0xfd, 0x45, 0xfd, 0x22, 0xfd, 0x22, 0xfd, 0x0d, 0xfd, 0x0d, 0xfd, 0x05, 0xfd, 0x05, 0xfd, 0x07, 0xfd, 0x07, 0xfd, 0x11, 0xfd, 0x11, 0xfd, 0x21, 0xfd, 0x21, 0xfd, 0x3b, 0xfd, 0x3b, 0xfd, 0x5e, 0xfd, 0x5e, 0xfd, 0x8c, 0xfd, 0x8c, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0x0b, 0xfe, 0x0b, 0xfe, 0x5c, 0xfe, 0x5c, 0xfe, 0xb3, 0xfe, 0xb3, 0xfe, 0x0d, 0xff, 0x0d, 0xff, 0x65, 0xff, 0x65, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0x16, 0x00, 0x16, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0x10, 0x01, 0x10, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x7f, 0x01, 0x7f, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xb0, 0x01, 0xb0, 0x01, 0xae, 0x01, 0xae, 0x01, 0x9b, 0x01, 0x9b, 0x01, 0x7e, 0x01, 0x7e, 0x01, 0x58, 0x01, 0x58, 0x01, 0x27, 0x01, 0x27, 0x01, 0xf1, 0x00, 0xf1, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x41, 0x00, 0x41, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0xd9, 0xff, 0xd9, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0x80, 0xff, 0x80, 0xff, 0x5c, 0xff, 0x5c, 0xff, 0x40, 0xff, 0x40, 0xff, 0x2b, 0xff, 0x2b, 0xff, 0x17, 0xff, 0x17, 0xff, 0x04, 0xff, 0x04, 0xff, 0xf3, 0xfe, 0xf3, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xe1, 0xfe, 0xe1, 0xfe, 0xee, 0xfe, 0xee, 0xfe, 0x01, 0xff, 0x01, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x45, 0xff, 0x45, 0xff, 0x79, 0xff, 0x79, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x47, 0x00, 0x47, 0x00, 0x90, 0x00, 0x90, 0x00, 0xd6, 0x00, 0xd6, 0x00, 0x18, 0x01, 0x18, 0x01, 0x53, 0x01, 0x53, 0x01, 0x8a, 0x01, 0x8a, 0x01, 0xb8, 0x01, 0xb8, 0x01, 0xda, 0x01, 0xda, 0x01, 0xf0, 0x01, 0xf0, 0x01, 0xf8, 0x01, 0xf8, 0x01, 0xf7, 0x01, 0xf7, 0x01, 0xef, 0x01, 0xef, 0x01, 0xe2, 0x01, 0xe2, 0x01, 0xd2, 0x01, 0xd2, 0x01, 0xbc, 0x01, 0xbc, 0x01, 0x9c, 0x01, 0x9c, 0x01, 0x73, 0x01, 0x73, 0x01, 0x44, 0x01, 0x44, 0x01, 0x13, 0x01, 0x13, 0x01, 0xe2, 0x00, 0xe2, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0x77, 0x00, 0x77, 0x00, 0x38, 0x00, 0x38, 0x00, 0xf4, 0xff, 0xf4, 0xff, 0xab, 0xff, 0xab, 0xff, 0x62, 0xff, 0x62, 0xff, 0x1b, 0xff, 0x1b, 0xff, 0xd7, 0xfe, 0xd7, 0xfe, 0x96, 0xfe, 0x96, 0xfe, 0x5a, 0xfe, 0x5a, 0xfe, 0x22, 0xfe, 0x22, 0xfe, 0xf2, 0xfd, 0xf2, 0xfd, 0xcb, 0xfd, 0xcb, 0xfd, 0xb1, 0xfd, 0xb1, 0xfd, 0xa4, 0xfd, 0xa4, 0xfd, 0xa6, 0xfd, 0xa6, 0xfd, 0xb6, 0xfd, 0xb6, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, 0xf5, 0xfd, 0xf5, 0xfd, 0x24, 0xfe, 0x24, 0xfe, 0x5b, 0xfe, 0x5b, 0xfe, 0x9a, 0xfe, 0x9a, 0xfe, 0xe2, 0xfe, 0xe2, 0xfe, 0x30, 0xff, 0x30, 0xff, 0x82, 0xff, 0x82, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0x3b, 0x00, 0x3b, 0x00, 0xa5, 0x00, 0xa5, 0x00, 0x14, 0x01, 0x14, 0x01, 0x82, 0x01, 0x82, 0x01, 0xe8, 0x01, 0xe8, 0x01, 0x46, 0x02, 0x46, 0x02, 0x99, 0x02, 0x99, 0x02, 0xdd, 0x02, 0xdd, 0x02, 0x11, 0x03, 0x11, 0x03, 0x32, 0x03, 0x32, 0x03, 0x3c, 0x03, 0x3c, 0x03, 0x30, 0x03, 0x30, 0x03, 0x0a, 0x03, 0x0a, 0x03, 0xcf, 0x02, 0xcf, 0x02, 0x83, 0x02, 0x83, 0x02, 0x2d, 0x02, 0x2d, 0x02, 0xd3, 0x01, 0xd3, 0x01, 0x76, 0x01, 0x76, 0x01, 0x16, 0x01, 0x16, 0x01, 0xb3, 0x00, 0xb3, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0xe7, 0xff, 0xe7, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x18, 0xff, 0x18, 0xff, 0xb2, 0xfe, 0xb2, 0xfe, 0x50, 0xfe, 0x50, 0xfe, 0xf2, 0xfd, 0xf2, 0xfd, 0x97, 0xfd, 0x97, 0xfd, 0x42, 0xfd, 0x42, 0xfd, 0xf8, 0xfc, 0xf8, 0xfc, 0xbc, 0xfc, 0xbc, 0xfc, 0x93, 0xfc, 0x93, 0xfc, 0x81, 0xfc, 0x81, 0xfc, 0x85, 0xfc, 0x85, 0xfc, 0xa0, 0xfc, 0xa0, 0xfc, 0xcd, 0xfc, 0xcd, 0xfc, 0x09, 0xfd, 0x09, 0xfd, 0x54, 0xfd, 0x54, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0x1a, 0xfe, 0x1a, 0xfe, 0x8f, 0xfe, 0x8f, 0xfe, 0x0b, 0xff, 0x0b, 0xff, 0x88, 0xff, 0x88, 0xff, 0x02, 0x00, 0x02, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0xf4, 0x00, 0xf4, 0x00, 0x6f, 0x01, 0x6f, 0x01, 0xe8, 0x01, 0xe8, 0x01, 0x58, 0x02, 0x58, 0x02, 0xb6, 0x02, 0xb6, 0x02, 0xfd, 0x02, 0xfd, 0x02, 0x2b, 0x03, 0x2b, 0x03, 0x46, 0x03, 0x46, 0x03, 0x53, 0x03, 0x53, 0x03, 0x56, 0x03, 0x56, 0x03, 0x4e, 0x03, 0x4e, 0x03, 0x36, 0x03, 0x36, 0x03, 0x0c, 0x03, 0x0c, 0x03, 0xd2, 0x02, 0xd2, 0x02, 0x8b, 0x02, 0x8b, 0x02, 0x3f, 0x02, 0x3f, 0x02, 0xf2, 0x01, 0xf2, 0x01, 0xa6, 0x01, 0xa6, 0x01, 0x5a, 0x01, 0x5a, 0x01, 0x07, 0x01, 0x07, 0x01, 0xa6, 0x00, 0xa6, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0xc7, 0xff, 0xc7, 0xff, 0x55, 0xff, 0x55, 0xff, 0xe7, 0xfe, 0xe7, 0xfe, 0x80, 0xfe, 0x80, 0xfe, 0x1e, 0xfe, 0x1e, 0xfe, 0xc3, 0xfd, 0xc3, 0xfd, 0x70, 0xfd, 0x70, 0xfd, 0x2d, 0xfd, 0x2d, 0xfd, 0xfe, 0xfc, 0xfe, 0xfc, 0xe6, 0xfc, 0xe6, 0xfc, 0xe5, 0xfc, 0xe5, 0xfc, 0xf8, 0xfc, 0xf8, 0xfc, 0x19, 0xfd, 0x19, 0xfd, 0x45, 0xfd, 0x45, 0xfd, 0x7a, 0xfd, 0x7a, 0xfd, 0xb6, 0xfd, 0xb6, 0xfd, 0xf3, 0xfd, 0xf3, 0xfd, 0x35, 0xfe, 0x35, 0xfe, 0x7b, 0xfe, 0x7b, 0xfe, 0xc6, 0xfe, 0xc6, 0xfe, 0x0f, 0xff, 0x0f, 0xff, 0x56, 0xff, 0x56, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0x32, 0x00, 0x32, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0x1a, 0x01, 0x1a, 0x01, 0x6e, 0x01, 0x6e, 0x01, 0xc3, 0x01, 0xc3, 0x01, 0x14, 0x02, 0x14, 0x02, 0x60, 0x02, 0x60, 0x02, 0xa4, 0x02, 0xa4, 0x02, 0xde, 0x02, 0xde, 0x02, 0x0e, 0x03, 0x0e, 0x03, 0x31, 0x03, 0x31, 0x03, 0x45, 0x03, 0x45, 0x03, 0x46, 0x03, 0x46, 0x03, 0x33, 0x03, 0x33, 0x03, 0x0a, 0x03, 0x0a, 0x03, 0xce, 0x02, 0xce, 0x02, 0x86, 0x02, 0x86, 0x02, 0x32, 0x02, 0x32, 0x02, 0xd7, 0x01, 0xd7, 0x01, 0x74, 0x01, 0x74, 0x01, 0x0c, 0x01, 0x0c, 0x01, 0xa2, 0x00, 0xa2, 0x00, 0x38, 0x00, 0x38, 0x00, 0xce, 0xff, 0xce, 0xff, 0x66, 0xff, 0x66, 0xff, 0x03, 0xff, 0x03, 0xff, 0xa4, 0xfe, 0xa4, 0xfe, 0x48, 0xfe, 0x48, 0xfe, 0xef, 0xfd, 0xef, 0xfd, 0x95, 0xfd, 0x95, 0xfd, 0x3c, 0xfd, 0x3c, 0xfd, 0xe5, 0xfc, 0xe5, 0xfc, 0x94, 0xfc, 0x94, 0xfc, 0x4f, 0xfc, 0x4f, 0xfc, 0x15, 0xfc, 0x15, 0xfc, 0xe8, 0xfb, 0xe8, 0xfb, 0xcc, 0xfb, 0xcc, 0xfb, 0xc3, 0xfb, 0xc3, 0xfb, 0xcf, 0xfb, 0xcf, 0xfb, 0xf2, 0xfb, 0xf2, 0xfb, 0x2f, 0xfc, 0x2f, 0xfc, 0x84, 0xfc, 0x84, 0xfc, 0xee, 0xfc, 0xee, 0xfc, 0x67, 0xfd, 0x67, 0xfd, 0xee, 0xfd, 0xee, 0xfd, 0x81, 0xfe, 0x81, 0xfe, 0x1f, 0xff, 0x1f, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0x6d, 0x00, 0x6d, 0x00, 0x13, 0x01, 0x13, 0x01, 0xb1, 0x01, 0xb1, 0x01, 0x42, 0x02, 0x42, 0x02, 0xc6, 0x02, 0xc6, 0x02, 0x3a, 0x03, 0x3a, 0x03, 0x9e, 0x03, 0x9e, 0x03, 0xf3, 0x03, 0xf3, 0x03, 0x38, 0x04, 0x38, 0x04, 0x6a, 0x04, 0x6a, 0x04, 0x89, 0x04, 0x89, 0x04, 0x95, 0x04, 0x95, 0x04, 0x8e, 0x04, 0x8e, 0x04, 0x78, 0x04, 0x78, 0x04, 0x51, 0x04, 0x51, 0x04, 0x19, 0x04, 0x19, 0x04, 0xcd, 0x03, 0xcd, 0x03, 0x6d, 0x03, 0x6d, 0x03, 0xf9, 0x02, 0xf9, 0x02, 0x73, 0x02, 0x73, 0x02, 0xde, 0x01, 0xde, 0x01, 0x3e, 0x01, 0x3e, 0x01, 0x97, 0x00, 0x97, 0x00, 0xe8, 0xff, 0xe8, 0xff, 0x36, 0xff, 0x36, 0xff, 0x88, 0xfe, 0x88, 0xfe, 0xe1, 0xfd, 0xe1, 0xfd, 0x47, 0xfd, 0x47, 0xfd, 0xc0, 0xfc, 0xc0, 0xfc, 0x51, 0xfc, 0x51, 0xfc, 0x01, 0xfc, 0x01, 0xfc, 0xcc, 0xfb, 0xcc, 0xfb, 0xaf, 0xfb, 0xaf, 0xfb, 0xa9, 0xfb, 0xa9, 0xfb, 0xb9, 0xfb, 0xb9, 0xfb, 0xe0, 0xfb, 0xe0, 0xfb, 0x1a, 0xfc, 0x1a, 0xfc, 0x66, 0xfc, 0x66, 0xfc, 0xc0, 0xfc, 0xc0, 0xfc, 0x23, 0xfd, 0x23, 0xfd, 0x8c, 0xfd, 0x8c, 0xfd, 0xfc, 0xfd, 0xfc, 0xfd, 0x73, 0xfe, 0x73, 0xfe, 0xf2, 0xfe, 0xf2, 0xfe, 0x75, 0xff, 0x75, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x80, 0x00, 0x80, 0x00, 0x05, 0x01, 0x05, 0x01, 0x86, 0x01, 0x86, 0x01, 0xfd, 0x01, 0xfd, 0x01, 0x67, 0x02, 0x67, 0x02, 0xc2, 0x02, 0xc2, 0x02, 0x0c, 0x03, 0x0c, 0x03, 0x43, 0x03, 0x43, 0x03, 0x60, 0x03, 0x60, 0x03, 0x64, 0x03, 0x64, 0x03, 0x4a, 0x03, 0x4a, 0x03, 0x16, 0x03, 0x16, 0x03, 0xc9, 0x02, 0xc9, 0x02, 0x64, 0x02, 0x64, 0x02, 0xeb, 0x01, 0xeb, 0x01, 0x62, 0x01, 0x62, 0x01, 0xd0, 0x00, 0xd0, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0xae, 0xff, 0xae, 0xff, 0x29, 0xff, 0x29, 0xff, 0xae, 0xfe, 0xae, 0xfe, 0x40, 0xfe, 0x40, 0xfe, 0xe2, 0xfd, 0xe2, 0xfd, 0x96, 0xfd, 0x96, 0xfd, 0x5a, 0xfd, 0x5a, 0xfd, 0x2d, 0xfd, 0x2d, 0xfd, 0x12, 0xfd, 0x12, 0xfd, 0x0c, 0xfd, 0x0c, 0xfd, 0x1b, 0xfd, 0x1b, 0xfd, 0x3c, 0xfd, 0x3c, 0xfd, 0x70, 0xfd, 0x70, 0xfd, 0xb4, 0xfd, 0xb4, 0xfd, 0x08, 0xfe, 0x08, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0x5a, 0xff, 0x5a, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0x6a, 0x00, 0x6a, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0x7f, 0x01, 0x7f, 0x01, 0x01, 0x02, 0x01, 0x02, 0x76, 0x02, 0x76, 0x02, 0xdd, 0x02, 0xdd, 0x02, 0x35, 0x03, 0x35, 0x03, 0x7d, 0x03, 0x7d, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xcb, 0x03, 0xcb, 0x03, 0xcf, 0x03, 0xcf, 0x03, 0xbb, 0x03, 0xbb, 0x03, 0x93, 0x03, 0x93, 0x03, 0x59, 0x03, 0x59, 0x03, 0x0b, 0x03, 0x0b, 0x03, 0xaa, 0x02, 0xaa, 0x02, 0x39, 0x02, 0x39, 0x02, 0xb9, 0x01, 0xb9, 0x01, 0x2d, 0x01, 0x2d, 0x01, 0x99, 0x00, 0x99, 0x00, 0x02, 0x00, 0x02, 0x00, 0x6d, 0xff, 0x6d, 0xff, 0xe0, 0xfe, 0xe0, 0xfe, 0x59, 0xfe, 0x59, 0xfe, 0xd9, 0xfd, 0xd9, 0xfd, 0x64, 0xfd, 0x64, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xa7, 0xfc, 0xa7, 0xfc, 0x69, 0xfc, 0x69, 0xfc, 0x47, 0xfc, 0x47, 0xfc, 0x41, 0xfc, 0x41, 0xfc, 0x56, 0xfc, 0x56, 0xfc, 0x83, 0xfc, 0x83, 0xfc, 0xc5, 0xfc, 0xc5, 0xfc, 0x1b, 0xfd, 0x1b, 0xfd, 0x84, 0xfd, 0x84, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0x88, 0xfe, 0x88, 0xfe, 0x1a, 0xff, 0x1a, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0x3e, 0x00, 0x3e, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0x43, 0x01, 0x43, 0x01, 0xb3, 0x01, 0xb3, 0x01, 0x14, 0x02, 0x14, 0x02, 0x65, 0x02, 0x65, 0x02, 0xa7, 0x02, 0xa7, 0x02, 0xd8, 0x02, 0xd8, 0x02, 0xf9, 0x02, 0xf9, 0x02, 0x06, 0x03, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0xf0, 0x02, 0xf0, 0x02, 0xcf, 0x02, 0xcf, 0x02, 0xa2, 0x02, 0xa2, 0x02, 0x68, 0x02, 0x68, 0x02, 0x26, 0x02, 0x26, 0x02, 0xd9, 0x01, 0xd9, 0x01, 0x81, 0x01, 0x81, 0x01, 0x1d, 0x01, 0x1d, 0x01, 0xad, 0x00, 0xad, 0x00, 0x37, 0x00, 0x37, 0x00, 0xbf, 0xff, 0xbf, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0xe2, 0xfe, 0xe2, 0xfe, 0x84, 0xfe, 0x84, 0xfe, 0x32, 0xfe, 0x32, 0xfe, 0xed, 0xfd, 0xed, 0xfd, 0xb3, 0xfd, 0xb3, 0xfd, 0x89, 0xfd, 0x89, 0xfd, 0x70, 0xfd, 0x70, 0xfd, 0x6b, 0xfd, 0x6b, 0xfd, 0x7b, 0xfd, 0x7b, 0xfd, 0x9e, 0xfd, 0x9e, 0xfd, 0xcc, 0xfd, 0xcc, 0xfd, 0x00, 0xfe, 0x00, 0xfe, 0x36, 0xfe, 0x36, 0xfe, 0x6f, 0xfe, 0x6f, 0xfe, 0xab, 0xfe, 0xab, 0xfe, 0xea, 0xfe, 0xea, 0xfe, 0x2a, 0xff, 0x2a, 0xff, 0x67, 0xff, 0x67, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0x09, 0x00, 0x09, 0x00, 0x26, 0x00, 0x26, 0x00, 0x43, 0x00, 0x43, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x75, 0x00, 0x75, 0x00, 0x86, 0x00, 0x86, 0x00, 0x93, 0x00, 0x93, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xd7, 0x00, 0xd7, 0x00, 0xe5, 0x00, 0xe5, 0x00, 0xec, 0x00, 0xec, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf2, 0x00, 0xf2, 0x00, 0xf7, 0x00, 0xf7, 0x00, 0x01, 0x01, 0x01, 0x01, 0x11, 0x01, 0x11, 0x01, 0x20, 0x01, 0x20, 0x01, 0x2b, 0x01, 0x2b, 0x01, 0x32, 0x01, 0x32, 0x01, 0x37, 0x01, 0x37, 0x01, 0x3e, 0x01, 0x3e, 0x01, 0x48, 0x01, 0x48, 0x01, 0x56, 0x01, 0x56, 0x01, 0x62, 0x01, 0x62, 0x01, 0x68, 0x01, 0x68, 0x01, 0x62, 0x01, 0x62, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x2e, 0x01, 0x2e, 0x01, 0x04, 0x01, 0x04, 0x01, 0xd2, 0x00, 0xd2, 0x00, 0x96, 0x00, 0x96, 0x00, 0x50, 0x00, 0x50, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0x3d, 0xff, 0x3d, 0xff, 0xd8, 0xfe, 0xd8, 0xfe, 0x72, 0xfe, 0x72, 0xfe, 0x10, 0xfe, 0x10, 0xfe, 0xb4, 0xfd, 0xb4, 0xfd, 0x5f, 0xfd, 0x5f, 0xfd, 0x16, 0xfd, 0x16, 0xfd, 0xdb, 0xfc, 0xdb, 0xfc, 0xb3, 0xfc, 0xb3, 0xfc, 0x9f, 0xfc, 0x9f, 0xfc, 0xa1, 0xfc, 0xa1, 0xfc, 0xb6, 0xfc, 0xb6, 0xfc, 0xe0, 0xfc, 0xe0, 0xfc, 0x1e, 0xfd, 0x1e, 0xfd, 0x6f, 0xfd, 0x6f, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, 0x3b, 0xfe, 0x3b, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, 0x2b, 0xff, 0x2b, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0x2a, 0x00, 0x2a, 0x00, 0xab, 0x00, 0xab, 0x00, 0x2d, 0x01, 0x2d, 0x01, 0xac, 0x01, 0xac, 0x01, 0x23, 0x02, 0x23, 0x02, 0x91, 0x02, 0x91, 0x02, 0xf2, 0x02, 0xf2, 0x02, 0x46, 0x03, 0x46, 0x03, 0x8c, 0x03, 0x8c, 0x03, 0xc4, 0x03, 0xc4, 0x03, 0xea, 0x03, 0xea, 0x03, 0xfb, 0x03, 0xfb, 0x03, 0xf3, 0x03, 0xf3, 0x03, 0xd2, 0x03, 0xd2, 0x03, 0x99, 0x03, 0x99, 0x03, 0x49, 0x03, 0x49, 0x03, 0xe6, 0x02, 0xe6, 0x02, 0x70, 0x02, 0x70, 0x02, 0xe7, 0x01, 0xe7, 0x01, 0x4b, 0x01, 0x4b, 0x01, 0xa2, 0x00, 0xa2, 0x00, 0xf1, 0xff, 0xf1, 0xff, 0x41, 0xff, 0x41, 0xff, 0x9d, 0xfe, 0x9d, 0xfe, 0x09, 0xfe, 0x09, 0xfe, 0x82, 0xfd, 0x82, 0xfd, 0x08, 0xfd, 0x08, 0xfd, 0x9e, 0xfc, 0x9e, 0xfc, 0x48, 0xfc, 0x48, 0xfc, 0x09, 0xfc, 0x09, 0xfc, 0xe8, 0xfb, 0xe8, 0xfb, 0xe4, 0xfb, 0xe4, 0xfb, 0xf9, 0xfb, 0xf9, 0xfb, 0x24, 0xfc, 0x24, 0xfc, 0x5f, 0xfc, 0x5f, 0xfc, 0xac, 0xfc, 0xac, 0xfc, 0x08, 0xfd, 0x08, 0xfd, 0x78, 0xfd, 0x78, 0xfd, 0xf6, 0xfd, 0xf6, 0xfd, 0x81, 0xfe, 0x81, 0xfe, 0x15, 0xff, 0x15, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0x3a, 0x00, 0x3a, 0x00, 0xc7, 0x00, 0xc7, 0x00, 0x51, 0x01, 0x51, 0x01, 0xd5, 0x01, 0xd5, 0x01, 0x4c, 0x02, 0x4c, 0x02, 0xb2, 0x02, 0xb2, 0x02, 0x03, 0x03, 0x03, 0x03, 0x40, 0x03, 0x40, 0x03, 0x66, 0x03, 0x66, 0x03, 0x78, 0x03, 0x78, 0x03, 0x77, 0x03, 0x77, 0x03, 0x64, 0x03, 0x64, 0x03, 0x3d, 0x03, 0x3d, 0x03, 0x01, 0x03, 0x01, 0x03, 0xb1, 0x02, 0xb1, 0x02, 0x4f, 0x02, 0x4f, 0x02, 0xe1, 0x01, 0xe1, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0xff, 0x00, 0xff, 0x00, 0x91, 0x00, 0x91, 0x00, 0x25, 0x00, 0x25, 0x00, 0xb8, 0xff, 0xb8, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0xf0, 0xfe, 0xf0, 0xfe, 0x9f, 0xfe, 0x9f, 0xfe, 0x5f, 0xfe, 0x5f, 0xfe, 0x31, 0xfe, 0x31, 0xfe, 0x14, 0xfe, 0x14, 0xfe, 0x03, 0xfe, 0x03, 0xfe, 0xfb, 0xfd, 0xfb, 0xfd, 0xfb, 0xfd, 0xfb, 0xfd, 0x04, 0xfe, 0x04, 0xfe, 0x19, 0xfe, 0x19, 0xfe, 0x3c, 0xfe, 0x3c, 0xfe, 0x70, 0xfe, 0x70, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, 0x3f, 0xff, 0x3f, 0xff, 0x88, 0xff, 0x88, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0x20, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0x0b, 0x01, 0x0b, 0x01, 0x4f, 0x01, 0x4f, 0x01, 0x87, 0x01, 0x87, 0x01, 0xac, 0x01, 0xac, 0x01, 0xbd, 0x01, 0xbd, 0x01, 0xbd, 0x01, 0xbd, 0x01, 0xad, 0x01, 0xad, 0x01, 0x8e, 0x01, 0x8e, 0x01, 0x5e, 0x01, 0x5e, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0xd7, 0x00, 0xd7, 0x00, 0x87, 0x00, 0x87, 0x00, 0x32, 0x00, 0x32, 0x00, 0xdc, 0xff, 0xdc, 0xff, 0x87, 0xff, 0x87, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0xf9, 0xfe, 0xf9, 0xfe, 0xc6, 0xfe, 0xc6, 0xfe, 0xa0, 0xfe, 0xa0, 0xfe, 0x89, 0xfe, 0x89, 0xfe, 0x7e, 0xfe, 0x7e, 0xfe, 0x7e, 0xfe, 0x7e, 0xfe, 0x8a, 0xfe, 0x8a, 0xfe, 0x9e, 0xfe, 0x9e, 0xfe, 0xbb, 0xfe, 0xbb, 0xfe, 0xe1, 0xfe, 0xe1, 0xfe, 0x0e, 0xff, 0x0e, 0xff, 0x41, 0xff, 0x41, 0xff, 0x79, 0xff, 0x79, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0x31, 0x00, 0x31, 0x00, 0x71, 0x00, 0x71, 0x00, 0xad, 0x00, 0xad, 0x00, 0xe8, 0x00, 0xe8, 0x00, 0x1e, 0x01, 0x1e, 0x01, 0x4d, 0x01, 0x4d, 0x01, 0x72, 0x01, 0x72, 0x01, 0x88, 0x01, 0x88, 0x01, 0x8e, 0x01, 0x8e, 0x01, 0x83, 0x01, 0x83, 0x01, 0x68, 0x01, 0x68, 0x01, 0x40, 0x01, 0x40, 0x01, 0x0a, 0x01, 0x0a, 0x01, 0xc9, 0x00, 0xc9, 0x00, 0x81, 0x00, 0x81, 0x00, 0x34, 0x00, 0x34, 0x00, 0xe2, 0xff, 0xe2, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x38, 0xff, 0x38, 0xff, 0xe6, 0xfe, 0xe6, 0xfe, 0x9d, 0xfe, 0x9d, 0xfe, 0x5e, 0xfe, 0x5e, 0xfe, 0x2f, 0xfe, 0x2f, 0xfe, 0x0e, 0xfe, 0x0e, 0xfe, 0xfa, 0xfd, 0xfa, 0xfd, 0xf4, 0xfd, 0xf4, 0xfd, 0xfa, 0xfd, 0xfa, 0xfd, 0x0e, 0xfe, 0x0e, 0xfe, 0x32, 0xfe, 0x32, 0xfe, 0x67, 0xfe, 0x67, 0xfe, 0xad, 0xfe, 0xad, 0xfe, 0xfd, 0xfe, 0xfd, 0xfe, 0x55, 0xff, 0x55, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0x0f, 0x00, 0x0f, 0x00, 0x70, 0x00, 0x70, 0x00, 0xce, 0x00, 0xce, 0x00, 0x28, 0x01, 0x28, 0x01, 0x7a, 0x01, 0x7a, 0x01, 0xc2, 0x01, 0xc2, 0x01, 0xfc, 0x01, 0xfc, 0x01, 0x29, 0x02, 0x29, 0x02, 0x47, 0x02, 0x47, 0x02, 0x58, 0x02, 0x58, 0x02, 0x5b, 0x02, 0x5b, 0x02, 0x4d, 0x02, 0x4d, 0x02, 0x31, 0x02, 0x31, 0x02, 0x05, 0x02, 0x05, 0x02, 0xca, 0x01, 0xca, 0x01, 0x81, 0x01, 0x81, 0x01, 0x2c, 0x01, 0x2c, 0x01, 0xd1, 0x00, 0xd1, 0x00, 0x73, 0x00, 0x73, 0x00, 0x11, 0x00, 0x11, 0x00, 0xad, 0xff, 0xad, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0xed, 0xfe, 0xed, 0xfe, 0x9b, 0xfe, 0x9b, 0xfe, 0x58, 0xfe, 0x58, 0xfe, 0x24, 0xfe, 0x24, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0xef, 0xfd, 0xef, 0xfd, 0xeb, 0xfd, 0xeb, 0xfd, 0xf4, 0xfd, 0xf4, 0xfd, 0x09, 0xfe, 0x09, 0xfe, 0x28, 0xfe, 0x28, 0xfe, 0x54, 0xfe, 0x54, 0xfe, 0x8b, 0xfe, 0x8b, 0xfe, 0xce, 0xfe, 0xce, 0xfe, 0x15, 0xff, 0x15, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xed, 0xff, 0xed, 0xff, 0x2f, 0x00, 0x2f, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xdc, 0x00, 0xdc, 0x00, 0x08, 0x01, 0x08, 0x01, 0x2a, 0x01, 0x2a, 0x01, 0x3e, 0x01, 0x3e, 0x01, 0x44, 0x01, 0x44, 0x01, 0x3b, 0x01, 0x3b, 0x01, 0x28, 0x01, 0x28, 0x01, 0x0d, 0x01, 0x0d, 0x01, 0xee, 0x00, 0xee, 0x00, 0xca, 0x00, 0xca, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x71, 0x00, 0x71, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0xd9, 0xff, 0xd9, 0xff, 0xab, 0xff, 0xab, 0xff, 0x82, 0xff, 0x82, 0xff, 0x62, 0xff, 0x62, 0xff, 0x47, 0xff, 0x47, 0xff, 0x31, 0xff, 0x31, 0xff, 0x22, 0xff, 0x22, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x24, 0xff, 0x24, 0xff, 0x39, 0xff, 0x39, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x89, 0xff, 0x89, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x85, 0x00, 0x85, 0x00, 0xc8, 0x00, 0xc8, 0x00, 0x06, 0x01, 0x06, 0x01, 0x3e, 0x01, 0x3e, 0x01, 0x6c, 0x01, 0x6c, 0x01, 0x8e, 0x01, 0x8e, 0x01, 0xa2, 0x01, 0xa2, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0xa5, 0x01, 0xa5, 0x01, 0x99, 0x01, 0x99, 0x01, 0x81, 0x01, 0x81, 0x01, 0x5f, 0x01, 0x5f, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0xf4, 0x00, 0xf4, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0x64, 0x00, 0x64, 0x00, 0x17, 0x00, 0x17, 0x00, 0xc8, 0xff, 0xc8, 0xff, 0x79, 0xff, 0x79, 0xff, 0x28, 0xff, 0x28, 0xff, 0xd8, 0xfe, 0xd8, 0xfe, 0x8e, 0xfe, 0x8e, 0xfe, 0x4e, 0xfe, 0x4e, 0xfe, 0x1c, 0xfe, 0x1c, 0xfe, 0xf8, 0xfd, 0xf8, 0xfd, 0xe2, 0xfd, 0xe2, 0xfd, 0xda, 0xfd, 0xda, 0xfd, 0xe0, 0xfd, 0xe0, 0xfd, 0xf4, 0xfd, 0xf4, 0xfd, 0x14, 0xfe, 0x14, 0xfe, 0x43, 0xfe, 0x43, 0xfe, 0x82, 0xfe, 0x82, 0xfe, 0xcc, 0xfe, 0xcc, 0xfe, 0x1f, 0xff, 0x1f, 0xff, 0x75, 0xff, 0x75, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0x23, 0x00, 0x23, 0x00, 0x77, 0x00, 0x77, 0x00, 0xc7, 0x00, 0xc7, 0x00, 0x12, 0x01, 0x12, 0x01, 0x53, 0x01, 0x53, 0x01, 0x8d, 0x01, 0x8d, 0x01, 0xbc, 0x01, 0xbc, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xf7, 0x01, 0xf7, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xf5, 0x01, 0xf5, 0x01, 0xdc, 0x01, 0xdc, 0x01, 0xb5, 0x01, 0xb5, 0x01, 0x85, 0x01, 0x85, 0x01, 0x4b, 0x01, 0x4b, 0x01, 0x0b, 0x01, 0x0b, 0x01, 0xc7, 0x00, 0xc7, 0x00, 0x81, 0x00, 0x81, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0xf9, 0xff, 0xf9, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x37, 0xff, 0x37, 0xff, 0x16, 0xff, 0x16, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xee, 0xfe, 0xee, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0xee, 0xfe, 0xee, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, 0xfd, 0xfe, 0xfd, 0xfe, 0x06, 0xff, 0x06, 0xff, 0x12, 0xff, 0x12, 0xff, 0x22, 0xff, 0x22, 0xff, 0x34, 0xff, 0x34, 0xff, 0x49, 0xff, 0x49, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x73, 0xff, 0x73, 0xff, 0x85, 0xff, 0x85, 0xff, 0x95, 0xff, 0x95, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xba, 0xff, 0xba, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xac, 0xff, 0xac, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0x15, 0x00, 0x15, 0x00, 0x31, 0x00, 0x31, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x68, 0x00, 0x68, 0x00, 0x85, 0x00, 0x85, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xca, 0x00, 0xca, 0x00, 0xce, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xd1, 0x00, 0xd1, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xbf, 0x00, 0xbf, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x83, 0x00, 0x83, 0x00, 0x67, 0x00, 0x67, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x35, 0x00, 0x35, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0xf5, 0xff, 0xf5, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xce, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x0a, 0x00, 0x0a, 0x00, 0x15, 0x00, 0x15, 0x00, 0x22, 0x00, 0x22, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x69, 0x00, 0x69, 0x00, 0x71, 0x00, 0x71, 0x00, 0x74, 0x00, 0x74, 0x00, 0x72, 0x00, 0x72, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x42, 0x00, 0x42, 0x00, 0x24, 0x00, 0x24, 0x00, 0x02, 0x00, 0x02, 0x00, 0xdc, 0xff, 0xdc, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x62, 0xff, 0x62, 0xff, 0x3b, 0xff, 0x3b, 0xff, 0x16, 0xff, 0x16, 0xff, 0xf9, 0xfe, 0xf9, 0xfe, 0xe2, 0xfe, 0xe2, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, 0xcd, 0xfe, 0xcd, 0xfe, 0xd1, 0xfe, 0xd1, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xfc, 0xfe, 0xfc, 0xfe, 0x20, 0xff, 0x20, 0xff, 0x4d, 0xff, 0x4d, 0xff, 0x82, 0xff, 0x82, 0xff, 0xba, 0xff, 0xba, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x3e, 0x00, 0x3e, 0x00, 0x86, 0x00, 0x86, 0x00, 0xcd, 0x00, 0xcd, 0x00, 0x0d, 0x01, 0x0d, 0x01, 0x44, 0x01, 0x44, 0x01, 0x71, 0x01, 0x71, 0x01, 0x94, 0x01, 0x94, 0x01, 0xae, 0x01, 0xae, 0x01, 0xbc, 0x01, 0xbc, 0x01, 0xbe, 0x01, 0xbe, 0x01, 0xb3, 0x01, 0xb3, 0x01, 0x98, 0x01, 0x98, 0x01, 0x70, 0x01, 0x70, 0x01, 0x3d, 0x01, 0x3d, 0x01, 0x02, 0x01, 0x02, 0x01, 0xc1, 0x00, 0xc1, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0xda, 0xff, 0xda, 0xff, 0x83, 0xff, 0x83, 0xff, 0x2a, 0xff, 0x2a, 0xff, 0xd6, 0xfe, 0xd6, 0xfe, 0x88, 0xfe, 0x88, 0xfe, 0x41, 0xfe, 0x41, 0xfe, 0x03, 0xfe, 0x03, 0xfe, 0xd1, 0xfd, 0xd1, 0xfd, 0xae, 0xfd, 0xae, 0xfd, 0x9b, 0xfd, 0x9b, 0xfd, 0x9d, 0xfd, 0x9d, 0xfd, 0xb4, 0xfd, 0xb4, 0xfd, 0xe1, 0xfd, 0xe1, 0xfd, 0x23, 0xfe, 0x23, 0xfe, 0x74, 0xfe, 0x74, 0xfe, 0xd1, 0xfe, 0xd1, 0xfe, 0x38, 0xff, 0x38, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0x1c, 0x00, 0x1c, 0x00, 0x92, 0x00, 0x92, 0x00, 0x05, 0x01, 0x05, 0x01, 0x70, 0x01, 0x70, 0x01, 0xce, 0x01, 0xce, 0x01, 0x1d, 0x02, 0x1d, 0x02, 0x5c, 0x02, 0x5c, 0x02, 0x8b, 0x02, 0x8b, 0x02, 0xa9, 0x02, 0xa9, 0x02, 0xb6, 0x02, 0xb6, 0x02, 0xb1, 0x02, 0xb1, 0x02, 0x99, 0x02, 0x99, 0x02, 0x6d, 0x02, 0x6d, 0x02, 0x32, 0x02, 0x32, 0x02, 0xe9, 0x01, 0xe9, 0x01, 0x95, 0x01, 0x95, 0x01, 0x33, 0x01, 0x33, 0x01, 0xc5, 0x00, 0xc5, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0xcf, 0xff, 0xcf, 0xff, 0x4e, 0xff, 0x4e, 0xff, 0xcd, 0xfe, 0xcd, 0xfe, 0x52, 0xfe, 0x52, 0xfe, 0xe1, 0xfd, 0xe1, 0xfd, 0x7a, 0xfd, 0x7a, 0xfd, 0x22, 0xfd, 0x22, 0xfd, 0xd7, 0xfc, 0xd7, 0xfc, 0x9c, 0xfc, 0x9c, 0xfc, 0x75, 0xfc, 0x75, 0xfc, 0x61, 0xfc, 0x61, 0xfc, 0x63, 0xfc, 0x63, 0xfc, 0x79, 0xfc, 0x79, 0xfc, 0xa3, 0xfc, 0xa3, 0xfc, 0xe2, 0xfc, 0xe2, 0xfc, 0x35, 0xfd, 0x35, 0xfd, 0x9b, 0xfd, 0x9b, 0xfd, 0x10, 0xfe, 0x10, 0xfe, 0x95, 0xfe, 0x95, 0xfe, 0x23, 0xff, 0x23, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0x4c, 0x00, 0x4c, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x6f, 0x01, 0x6f, 0x01, 0xf2, 0x01, 0xf2, 0x01, 0x68, 0x02, 0x68, 0x02, 0xcd, 0x02, 0xcd, 0x02, 0x21, 0x03, 0x21, 0x03, 0x60, 0x03, 0x60, 0x03, 0x8d, 0x03, 0x8d, 0x03, 0xa7, 0x03, 0xa7, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xa6, 0x03, 0xa6, 0x03, 0x8a, 0x03, 0x8a, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x26, 0x03, 0x26, 0x03, 0xde, 0x02, 0xde, 0x02, 0x89, 0x02, 0x89, 0x02, 0x29, 0x02, 0x29, 0x02, 0xbe, 0x01, 0xbe, 0x01, 0x4a, 0x01, 0x4a, 0x01, 0xcd, 0x00, 0xcd, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0xc5, 0xff, 0xc5, 0xff, 0x3e, 0xff, 0x3e, 0xff, 0xbb, 0xfe, 0xbb, 0xfe, 0x3b, 0xfe, 0x3b, 0xfe, 0xc6, 0xfd, 0xc6, 0xfd, 0x5e, 0xfd, 0x5e, 0xfd, 0x05, 0xfd, 0x05, 0xfd, 0xbe, 0xfc, 0xbe, 0xfc, 0x8c, 0xfc, 0x8c, 0xfc, 0x70, 0xfc, 0x70, 0xfc, 0x67, 0xfc, 0x67, 0xfc, 0x77, 0xfc, 0x77, 0xfc, 0x9c, 0xfc, 0x9c, 0xfc, 0xd6, 0xfc, 0xd6, 0xfc, 0x21, 0xfd, 0x21, 0xfd, 0x7c, 0xfd, 0x7c, 0xfd, 0xe6, 0xfd, 0xe6, 0xfd, 0x59, 0xfe, 0x59, 0xfe, 0xd0, 0xfe, 0xd0, 0xfe, 0x49, 0xff, 0x49, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0x35, 0x00, 0x35, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0x14, 0x01, 0x14, 0x01, 0x7d, 0x01, 0x7d, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0x3c, 0x02, 0x3c, 0x02, 0x91, 0x02, 0x91, 0x02, 0xde, 0x02, 0xde, 0x02, 0x20, 0x03, 0x20, 0x03, 0x55, 0x03, 0x55, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x9a, 0x03, 0x9a, 0x03, 0xa4, 0x03, 0xa4, 0x03, 0x99, 0x03, 0x99, 0x03, 0x78, 0x03, 0x78, 0x03, 0x43, 0x03, 0x43, 0x03, 0xfa, 0x02, 0xfa, 0x02, 0xa0, 0x02, 0xa0, 0x02, 0x34, 0x02, 0x34, 0x02, 0xba, 0x01, 0xba, 0x01, 0x34, 0x01, 0x34, 0x01, 0xa8, 0x00, 0xa8, 0x00, 0x19, 0x00, 0x19, 0x00, 0x8d, 0xff, 0x8d, 0xff, 0x08, 0xff, 0x08, 0xff, 0x8b, 0xfe, 0x8b, 0xfe, 0x1d, 0xfe, 0x1d, 0xfe, 0xbc, 0xfd, 0xbc, 0xfd, 0x6b, 0xfd, 0x6b, 0xfd, 0x2a, 0xfd, 0x2a, 0xfd, 0xf5, 0xfc, 0xf5, 0xfc, 0xcd, 0xfc, 0xcd, 0xfc, 0xb2, 0xfc, 0xb2, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa1, 0xfc, 0xa1, 0xfc, 0xab, 0xfc, 0xab, 0xfc, 0xbf, 0xfc, 0xbf, 0xfc, 0xe1, 0xfc, 0xe1, 0xfc, 0x14, 0xfd, 0x14, 0xfd, 0x55, 0xfd, 0x55, 0xfd, 0xa4, 0xfd, 0xa4, 0xfd, 0xfe, 0xfd, 0xfe, 0xfd, 0x62, 0xfe, 0x62, 0xfe, 0xcd, 0xfe, 0xcd, 0xfe, 0x3e, 0xff, 0x3e, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0x2c, 0x00, 0x2c, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0x0d, 0x01, 0x0d, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0xc3, 0x01, 0xc3, 0x01, 0x06, 0x02, 0x06, 0x02, 0x3a, 0x02, 0x3a, 0x02, 0x5b, 0x02, 0x5b, 0x02, 0x6d, 0x02, 0x6d, 0x02, 0x6f, 0x02, 0x6f, 0x02, 0x62, 0x02, 0x62, 0x02, 0x4c, 0x02, 0x4c, 0x02, 0x2a, 0x02, 0x2a, 0x02, 0x02, 0x02, 0x02, 0x02, 0xd1, 0x01, 0xd1, 0x01, 0x9c, 0x01, 0x9c, 0x01, 0x63, 0x01, 0x63, 0x01, 0x24, 0x01, 0x24, 0x01, 0xe4, 0x00, 0xe4, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x68, 0x00, 0x68, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0xf8, 0xff, 0xf8, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x74, 0xff, 0x74, 0xff, 0x54, 0xff, 0x54, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x2b, 0xff, 0x2b, 0xff, 0x22, 0xff, 0x22, 0xff, 0x20, 0xff, 0x20, 0xff, 0x24, 0xff, 0x24, 0xff, 0x30, 0xff, 0x30, 0xff, 0x43, 0xff, 0x43, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x77, 0xff, 0x77, 0xff, 0x99, 0xff, 0x99, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0x09, 0x00, 0x09, 0x00, 0x25, 0x00, 0x25, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x57, 0x00, 0x57, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x53, 0x00, 0x53, 0x00, 0x42, 0x00, 0x42, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0xee, 0xff, 0xee, 0xff, 0xce, 0xff, 0xce, 0xff, 0xac, 0xff, 0xac, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x70, 0xff, 0x70, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x4c, 0xff, 0x4c, 0xff, 0x43, 0xff, 0x43, 0xff, 0x3d, 0xff, 0x3d, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3c, 0xff, 0x3c, 0xff, 0x43, 0xff, 0x43, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x6f, 0xff, 0x6f, 0xff, 0x84, 0xff, 0x84, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0x23, 0x00, 0x23, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x72, 0x00, 0x72, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0xc1, 0x00, 0xc1, 0x00, 0xe6, 0x00, 0xe6, 0x00, 0x05, 0x01, 0x05, 0x01, 0x1b, 0x01, 0x1b, 0x01, 0x2a, 0x01, 0x2a, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0x2c, 0x01, 0x2c, 0x01, 0x21, 0x01, 0x21, 0x01, 0x0f, 0x01, 0x0f, 0x01, 0xf6, 0x00, 0xf6, 0x00, 0xd7, 0x00, 0xd7, 0x00, 0xb2, 0x00, 0xb2, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x32, 0x00, 0x32, 0x00, 0x08, 0x00, 0x08, 0x00, 0xde, 0xff, 0xde, 0xff, 0xba, 0xff, 0xba, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x82, 0xff, 0x82, 0xff, 0x6f, 0xff, 0x6f, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x52, 0xff, 0x52, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x48, 0xff, 0x48, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x51, 0xff, 0x51, 0xff, 0x58, 0xff, 0x58, 0xff, 0x61, 0xff, 0x61, 0xff, 0x6f, 0xff, 0x6f, 0xff, 0x80, 0xff, 0x80, 0xff, 0x96, 0xff, 0x96, 0xff, 0xac, 0xff, 0xac, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x18, 0x00, 0x18, 0x00, 0x37, 0x00, 0x37, 0x00, 0x54, 0x00, 0x54, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x81, 0x00, 0x81, 0x00, 0x92, 0x00, 0x92, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0x93, 0x00, 0x93, 0x00, 0x84, 0x00, 0x84, 0x00, 0x74, 0x00, 0x74, 0x00, 0x62, 0x00, 0x62, 0x00, 0x50, 0x00, 0x50, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x28, 0x00, 0x28, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xef, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0x01, 0x00, 0x01, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x03, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xab, 0xff, 0xab, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0x96, 0xff, 0x96, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x75, 0xff, 0x75, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x67, 0xff, 0x67, 0xff, 0x61, 0xff, 0x61, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x63, 0xff, 0x63, 0xff, 0x6b, 0xff, 0x6b, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1c, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x52, 0x00, 0x52, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x82, 0x00, 0x82, 0x00, 0x93, 0x00, 0x93, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xb1, 0x00, 0xb1, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0xad, 0x00, 0xad, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0x99, 0x00, 0x99, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x79, 0x00, 0x79, 0x00, 0x64, 0x00, 0x64, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0xef, 0xff, 0xef, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xae, 0xff, 0xae, 0xff, 0x90, 0xff, 0x90, 0xff, 0x73, 0xff, 0x73, 0xff, 0x59, 0xff, 0x59, 0xff, 0x45, 0xff, 0x45, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x39, 0xff, 0x39, 0xff, 0x41, 0xff, 0x41, 0xff, 0x52, 0xff, 0x52, 0xff, 0x68, 0xff, 0x68, 0xff, 0x85, 0xff, 0x85, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xce, 0xff, 0xce, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0x24, 0x00, 0x24, 0x00, 0x53, 0x00, 0x53, 0x00, 0x82, 0x00, 0x82, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xd6, 0x00, 0xd6, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x14, 0x01, 0x14, 0x01, 0x2a, 0x01, 0x2a, 0x01, 0x39, 0x01, 0x39, 0x01, 0x3e, 0x01, 0x3e, 0x01, 0x39, 0x01, 0x39, 0x01, 0x28, 0x01, 0x28, 0x01, 0x0e, 0x01, 0x0e, 0x01, 0xec, 0x00, 0xec, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0x93, 0x00, 0x93, 0x00, 0x58, 0x00, 0x58, 0x00, 0x17, 0x00, 0x17, 0x00, 0xcf, 0xff, 0xcf, 0xff, 0x81, 0xff, 0x81, 0xff, 0x33, 0xff, 0x33, 0xff, 0xe9, 0xfe, 0xe9, 0xfe, 0xa1, 0xfe, 0xa1, 0xfe, 0x5b, 0xfe, 0x5b, 0xfe, 0x1a, 0xfe, 0x1a, 0xfe, 0xe2, 0xfd, 0xe2, 0xfd, 0xb5, 0xfd, 0xb5, 0xfd, 0x95, 0xfd, 0x95, 0xfd, 0x86, 0xfd, 0x86, 0xfd, 0x8a, 0xfd, 0x8a, 0xfd, 0xa0, 0xfd, 0xa0, 0xfd, 0xc7, 0xfd, 0xc7, 0xfd, 0xfe, 0xfd, 0xfe, 0xfd, 0x43, 0xfe, 0x43, 0xfe, 0x97, 0xfe, 0x97, 0xfe, 0xf7, 0xfe, 0xf7, 0xfe, 0x5e, 0xff, 0x5e, 0xff, 0xca, 0xff, 0xca, 0xff, 0x35, 0x00, 0x35, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x00, 0x01, 0x00, 0x01, 0x5b, 0x01, 0x5b, 0x01, 0xab, 0x01, 0xab, 0x01, 0xf0, 0x01, 0xf0, 0x01, 0x29, 0x02, 0x29, 0x02, 0x56, 0x02, 0x56, 0x02, 0x76, 0x02, 0x76, 0x02, 0x8a, 0x02, 0x8a, 0x02, 0x92, 0x02, 0x92, 0x02, 0x8c, 0x02, 0x8c, 0x02, 0x7a, 0x02, 0x7a, 0x02, 0x5c, 0x02, 0x5c, 0x02, 0x2f, 0x02, 0x2f, 0x02, 0xf2, 0x01, 0xf2, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0x52, 0x01, 0x52, 0x01, 0xf3, 0x00, 0xf3, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x24, 0x00, 0x24, 0x00, 0xb7, 0xff, 0xb7, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0xe6, 0xfe, 0xe6, 0xfe, 0x8c, 0xfe, 0x8c, 0xfe, 0x42, 0xfe, 0x42, 0xfe, 0x0a, 0xfe, 0x0a, 0xfe, 0xe7, 0xfd, 0xe7, 0xfd, 0xda, 0xfd, 0xda, 0xfd, 0xdf, 0xfd, 0xdf, 0xfd, 0xf9, 0xfd, 0xf9, 0xfd, 0x26, 0xfe, 0x26, 0xfe, 0x63, 0xfe, 0x63, 0xfe, 0xad, 0xfe, 0xad, 0xfe, 0x02, 0xff, 0x02, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0xba, 0xff, 0xba, 0xff, 0x11, 0x00, 0x11, 0x00, 0x64, 0x00, 0x64, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xf1, 0x00, 0xf1, 0x00, 0x2b, 0x01, 0x2b, 0x01, 0x5c, 0x01, 0x5c, 0x01, 0x80, 0x01, 0x80, 0x01, 0x98, 0x01, 0x98, 0x01, 0xa2, 0x01, 0xa2, 0x01, 0x9e, 0x01, 0x9e, 0x01, 0x8b, 0x01, 0x8b, 0x01, 0x6b, 0x01, 0x6b, 0x01, 0x40, 0x01, 0x40, 0x01, 0x0b, 0x01, 0x0b, 0x01, 0xcd, 0x00, 0xcd, 0x00, 0x84, 0x00, 0x84, 0x00, 0x31, 0x00, 0x31, 0x00, 0xd9, 0xff, 0xd9, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x28, 0xff, 0x28, 0xff, 0xd6, 0xfe, 0xd6, 0xfe, 0x8b, 0xfe, 0x8b, 0xfe, 0x46, 0xfe, 0x46, 0xfe, 0x09, 0xfe, 0x09, 0xfe, 0xdb, 0xfd, 0xdb, 0xfd, 0xba, 0xfd, 0xba, 0xfd, 0xaa, 0xfd, 0xaa, 0xfd, 0xad, 0xfd, 0xad, 0xfd, 0xc3, 0xfd, 0xc3, 0xfd, 0xeb, 0xfd, 0xeb, 0xfd, 0x24, 0xfe, 0x24, 0xfe, 0x6d, 0xfe, 0x6d, 0xfe, 0xc4, 0xfe, 0xc4, 0xfe, 0x25, 0xff, 0x25, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0x6d, 0x00, 0x6d, 0x00, 0xda, 0x00, 0xda, 0x00, 0x3d, 0x01, 0x3d, 0x01, 0x97, 0x01, 0x97, 0x01, 0xe7, 0x01, 0xe7, 0x01, 0x2b, 0x02, 0x2b, 0x02, 0x60, 0x02, 0x60, 0x02, 0x83, 0x02, 0x83, 0x02, 0x95, 0x02, 0x95, 0x02, 0x94, 0x02, 0x94, 0x02, 0x81, 0x02, 0x81, 0x02, 0x5d, 0x02, 0x5d, 0x02, 0x2b, 0x02, 0x2b, 0x02, 0xec, 0x01, 0xec, 0x01, 0xa4, 0x01, 0xa4, 0x01, 0x55, 0x01, 0x55, 0x01, 0xff, 0x00, 0xff, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0x44, 0x00, 0x44, 0x00, 0xe7, 0xff, 0xe7, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x32, 0xff, 0x32, 0xff, 0xdf, 0xfe, 0xdf, 0xfe, 0x92, 0xfe, 0x92, 0xfe, 0x4e, 0xfe, 0x4e, 0xfe, 0x15, 0xfe, 0x15, 0xfe, 0xe6, 0xfd, 0xe6, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xad, 0xfd, 0xad, 0xfd, 0xa3, 0xfd, 0xa3, 0xfd, 0xa9, 0xfd, 0xa9, 0xfd, 0xc0, 0xfd, 0xc0, 0xfd, 0xe8, 0xfd, 0xe8, 0xfd, 0x20, 0xfe, 0x20, 0xfe, 0x6a, 0xfe, 0x6a, 0xfe, 0xc4, 0xfe, 0xc4, 0xfe, 0x2a, 0xff, 0x2a, 0xff, 0x96, 0xff, 0x96, 0xff, 0x04, 0x00, 0x04, 0x00, 0x71, 0x00, 0x71, 0x00, 0xdb, 0x00, 0xdb, 0x00, 0x3d, 0x01, 0x3d, 0x01, 0x93, 0x01, 0x93, 0x01, 0xdd, 0x01, 0xdd, 0x01, 0x16, 0x02, 0x16, 0x02, 0x3c, 0x02, 0x3c, 0x02, 0x4f, 0x02, 0x4f, 0x02, 0x53, 0x02, 0x53, 0x02, 0x48, 0x02, 0x48, 0x02, 0x2e, 0x02, 0x2e, 0x02, 0x0a, 0x02, 0x0a, 0x02, 0xde, 0x01, 0xde, 0x01, 0xaa, 0x01, 0xaa, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0x2e, 0x01, 0x2e, 0x01, 0xe9, 0x00, 0xe9, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x15, 0x00, 0x15, 0x00, 0xce, 0xff, 0xce, 0xff, 0x87, 0xff, 0x87, 0xff, 0x40, 0xff, 0x40, 0xff, 0xfa, 0xfe, 0xfa, 0xfe, 0xb7, 0xfe, 0xb7, 0xfe, 0x77, 0xfe, 0x77, 0xfe, 0x3d, 0xfe, 0x3d, 0xfe, 0x0a, 0xfe, 0x0a, 0xfe, 0xe1, 0xfd, 0xe1, 0xfd, 0xc3, 0xfd, 0xc3, 0xfd, 0xb5, 0xfd, 0xb5, 0xfd, 0xb6, 0xfd, 0xb6, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xe4, 0xfd, 0xe4, 0xfd, 0x11, 0xfe, 0x11, 0xfe, 0x4e, 0xfe, 0x4e, 0xfe, 0x98, 0xfe, 0x98, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0x39, 0xff, 0x39, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0x32, 0x00, 0x32, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0xbd, 0x00, 0xbd, 0x00, 0xf6, 0x00, 0xf6, 0x00, 0x26, 0x01, 0x26, 0x01, 0x4f, 0x01, 0x4f, 0x01, 0x70, 0x01, 0x70, 0x01, 0x8b, 0x01, 0x8b, 0x01, 0x9f, 0x01, 0x9f, 0x01, 0xae, 0x01, 0xae, 0x01, 0xb9, 0x01, 0xb9, 0x01, 0xc2, 0x01, 0xc2, 0x01, 0xc6, 0x01, 0xc6, 0x01, 0xc4, 0x01, 0xc4, 0x01, 0xbc, 0x01, 0xbc, 0x01, 0xaa, 0x01, 0xaa, 0x01, 0x93, 0x01, 0x93, 0x01, 0x75, 0x01, 0x75, 0x01, 0x52, 0x01, 0x52, 0x01, 0x29, 0x01, 0x29, 0x01, 0xfa, 0x00, 0xfa, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0x90, 0x00, 0x90, 0x00, 0x58, 0x00, 0x58, 0x00, 0x21, 0x00, 0x21, 0x00, 0xec, 0xff, 0xec, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0x88, 0xff, 0x88, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x04, 0xff, 0x04, 0xff, 0xf2, 0xfe, 0xf2, 0xfe, 0xe5, 0xfe, 0xe5, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xdf, 0xfe, 0xdf, 0xfe, 0xe1, 0xfe, 0xe1, 0xfe, 0xe6, 0xfe, 0xe6, 0xfe, 0xec, 0xfe, 0xec, 0xfe, 0xf4, 0xfe, 0xf4, 0xfe, 0xfc, 0xfe, 0xfc, 0xfe, 0x06, 0xff, 0x06, 0xff, 0x10, 0xff, 0x10, 0xff, 0x19, 0xff, 0x19, 0xff, 0x24, 0xff, 0x24, 0xff, 0x32, 0xff, 0x32, 0xff, 0x42, 0xff, 0x42, 0xff, 0x53, 0xff, 0x53, 0xff, 0x65, 0xff, 0x65, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x92, 0xff, 0x92, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0x0f, 0x00, 0x0f, 0x00, 0x27, 0x00, 0x27, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x58, 0x00, 0x58, 0x00, 0x60, 0x00, 0x60, 0x00, 0x67, 0x00, 0x67, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x74, 0x00, 0x78, 0x00, 0x78, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x80, 0x00, 0x80, 0x00, 0x84, 0x00, 0x84, 0x00, 0x89, 0x00, 0x89, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x95, 0x00, 0x95, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x95, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0x82, 0x00, 0x82, 0x00, 0x72, 0x00, 0x72, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x47, 0x00, 0x47, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x15, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xff, 0xec, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0x95, 0xff, 0x95, 0xff, 0x84, 0xff, 0x84, 0xff, 0x75, 0xff, 0x75, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x64, 0xff, 0x64, 0xff, 0x60, 0xff, 0x60, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x54, 0xff, 0x54, 0xff, 0x50, 0xff, 0x50, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x46, 0xff, 0x46, 0xff, 0x43, 0xff, 0x43, 0xff, 0x43, 0xff, 0x43, 0xff, 0x49, 0xff, 0x49, 0xff, 0x53, 0xff, 0x53, 0xff, 0x60, 0xff, 0x60, 0xff, 0x71, 0xff, 0x71, 0xff, 0x89, 0xff, 0x89, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0x24, 0x00, 0x24, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x77, 0x00, 0x77, 0x00, 0x99, 0x00, 0x99, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xcd, 0x00, 0xcd, 0x00, 0xdd, 0x00, 0xdd, 0x00, 0xe7, 0x00, 0xe7, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xff, 0x00, 0xff, 0x00, 0x05, 0x01, 0x05, 0x01, 0x09, 0x01, 0x09, 0x01, 0x0c, 0x01, 0x0c, 0x01, 0x0c, 0x01, 0x0c, 0x01, 0x09, 0x01, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0xf6, 0x00, 0xf6, 0x00, 0xe6, 0x00, 0xe6, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xb1, 0x00, 0xb1, 0x00, 0x89, 0x00, 0x89, 0x00, 0x59, 0x00, 0x59, 0x00, 0x21, 0x00, 0x21, 0x00, 0xe5, 0xff, 0xe5, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0x69, 0xff, 0x69, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0xf3, 0xfe, 0xf3, 0xfe, 0xbd, 0xfe, 0xbd, 0xfe, 0x8e, 0xfe, 0x8e, 0xfe, 0x69, 0xfe, 0x69, 0xfe, 0x4d, 0xfe, 0x4d, 0xfe, 0x3f, 0xfe, 0x3f, 0xfe, 0x3c, 0xfe, 0x3c, 0xfe, 0x43, 0xfe, 0x43, 0xfe, 0x52, 0xfe, 0x52, 0xfe, 0x6a, 0xfe, 0x6a, 0xfe, 0x89, 0xfe, 0x89, 0xfe, 0xb1, 0xfe, 0xb1, 0xfe, 0xe2, 0xfe, 0xe2, 0xfe, 0x17, 0xff, 0x17, 0xff, 0x53, 0xff, 0x53, 0xff, 0x94, 0xff, 0x94, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0x1b, 0x00, 0x1b, 0x00, 0x60, 0x00, 0x60, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0xee, 0x00, 0xee, 0x00, 0x31, 0x01, 0x31, 0x01, 0x70, 0x01, 0x70, 0x01, 0xac, 0x01, 0xac, 0x01, 0xe5, 0x01, 0xe5, 0x01, 0x17, 0x02, 0x17, 0x02, 0x3c, 0x02, 0x3c, 0x02, 0x53, 0x02, 0x53, 0x02, 0x5d, 0x02, 0x5d, 0x02, 0x57, 0x02, 0x57, 0x02, 0x41, 0x02, 0x41, 0x02, 0x1c, 0x02, 0x1c, 0x02, 0xe9, 0x01, 0xe9, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0x5b, 0x01, 0x5b, 0x01, 0x03, 0x01, 0x03, 0x01, 0xa4, 0x00, 0xa4, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0xd8, 0xff, 0xd8, 0xff, 0x71, 0xff, 0x71, 0xff, 0x0e, 0xff, 0x0e, 0xff, 0xb0, 0xfe, 0xb0, 0xfe, 0x5a, 0xfe, 0x5a, 0xfe, 0x0c, 0xfe, 0x0c, 0xfe, 0xcd, 0xfd, 0xcd, 0xfd, 0x9f, 0xfd, 0x9f, 0xfd, 0x7f, 0xfd, 0x7f, 0xfd, 0x71, 0xfd, 0x71, 0xfd, 0x73, 0xfd, 0x73, 0xfd, 0x82, 0xfd, 0x82, 0xfd, 0x9e, 0xfd, 0x9e, 0xfd, 0xc7, 0xfd, 0xc7, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0x42, 0xfe, 0x42, 0xfe, 0x8e, 0xfe, 0x8e, 0xfe, 0xe2, 0xfe, 0xe2, 0xfe, 0x3b, 0xff, 0x3b, 0xff, 0x98, 0xff, 0x98, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0x59, 0x00, 0x59, 0x00, 0xba, 0x00, 0xba, 0x00, 0x1a, 0x01, 0x1a, 0x01, 0x74, 0x01, 0x74, 0x01, 0xc6, 0x01, 0xc6, 0x01, 0x0d, 0x02, 0x0d, 0x02, 0x48, 0x02, 0x48, 0x02, 0x78, 0x02, 0x78, 0x02, 0x98, 0x02, 0x98, 0x02, 0xa9, 0x02, 0xa9, 0x02, 0xa9, 0x02, 0xa9, 0x02, 0x9b, 0x02, 0x9b, 0x02, 0x7d, 0x02, 0x7d, 0x02, 0x4f, 0x02, 0x4f, 0x02, 0x10, 0x02, 0x10, 0x02, 0xc3, 0x01, 0xc3, 0x01, 0x6d, 0x01, 0x6d, 0x01, 0x12, 0x01, 0x12, 0x01, 0xb2, 0x00, 0xb2, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0xe5, 0xff, 0xe5, 0xff, 0x84, 0xff, 0x84, 0xff, 0x2a, 0xff, 0x2a, 0xff, 0xd6, 0xfe, 0xd6, 0xfe, 0x8a, 0xfe, 0x8a, 0xfe, 0x49, 0xfe, 0x49, 0xfe, 0x15, 0xfe, 0x15, 0xfe, 0xef, 0xfd, 0xef, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, 0xca, 0xfd, 0xca, 0xfd, 0xc9, 0xfd, 0xc9, 0xfd, 0xd4, 0xfd, 0xd4, 0xfd, 0xe6, 0xfd, 0xe6, 0xfd, 0x03, 0xfe, 0x03, 0xfe, 0x29, 0xfe, 0x29, 0xfe, 0x57, 0xfe, 0x57, 0xfe, 0x8d, 0xfe, 0x8d, 0xfe, 0xc8, 0xfe, 0xc8, 0xfe, 0x06, 0xff, 0x06, 0xff, 0x46, 0xff, 0x46, 0xff, 0x87, 0xff, 0x87, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0x07, 0x00, 0x07, 0x00, 0x41, 0x00, 0x41, 0x00, 0x77, 0x00, 0x77, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xed, 0x00, 0xed, 0x00, 0x03, 0x01, 0x03, 0x01, 0x10, 0x01, 0x10, 0x01, 0x15, 0x01, 0x15, 0x01, 0x13, 0x01, 0x13, 0x01, 0x0a, 0x01, 0x0a, 0x01, 0xfb, 0x00, 0xfb, 0x00, 0xe6, 0x00, 0xe6, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0x94, 0x00, 0x94, 0x00, 0x78, 0x00, 0x78, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x37, 0x00, 0x37, 0x00, 0x35, 0x00, 0x35, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x71, 0x00, 0x71, 0x00, 0x85, 0x00, 0x85, 0x00, 0x97, 0x00, 0x97, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xbf, 0x00, 0xbf, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xd2, 0x00, 0xd2, 0x00, 0xd1, 0x00, 0xd1, 0x00, 0xca, 0x00, 0xca, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0x99, 0x00, 0x99, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x58, 0x00, 0x58, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0x86, 0xff, 0x86, 0xff, 0x47, 0xff, 0x47, 0xff, 0x06, 0xff, 0x06, 0xff, 0xc6, 0xfe, 0xc6, 0xfe, 0x88, 0xfe, 0x88, 0xfe, 0x51, 0xfe, 0x51, 0xfe, 0x23, 0xfe, 0x23, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xe5, 0xfd, 0xe5, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, 0xd4, 0xfd, 0xd4, 0xfd, 0xdd, 0xfd, 0xdd, 0xfd, 0xf5, 0xfd, 0xf5, 0xfd, 0x18, 0xfe, 0x18, 0xfe, 0x46, 0xfe, 0x46, 0xfe, 0x7d, 0xfe, 0x7d, 0xfe, 0xba, 0xfe, 0xba, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x43, 0xff, 0x43, 0xff, 0x87, 0xff, 0x87, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0x0f, 0x00, 0x0f, 0x00, 0x51, 0x00, 0x51, 0x00, 0x90, 0x00, 0x90, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xfb, 0x00, 0xfb, 0x00, 0x26, 0x01, 0x26, 0x01, 0x4c, 0x01, 0x4c, 0x01, 0x6b, 0x01, 0x6b, 0x01, 0x83, 0x01, 0x83, 0x01, 0x91, 0x01, 0x91, 0x01, 0x95, 0x01, 0x95, 0x01, 0x90, 0x01, 0x90, 0x01, 0x84, 0x01, 0x84, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0x52, 0x01, 0x52, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0x08, 0x01, 0x08, 0x01, 0xde, 0x00, 0xde, 0x00, 0xb1, 0x00, 0xb1, 0x00, 0x81, 0x00, 0x81, 0x00, 0x54, 0x00, 0x54, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0xef, 0xff, 0xef, 0xff, 0xda, 0xff, 0xda, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xca, 0xff, 0xca, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0x0c, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x29, 0x00, 0x29, 0x00, 0x31, 0x00, 0x31, 0x00, 0x33, 0x00, 0x33, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x24, 0x00, 0x24, 0x00, 0x16, 0x00, 0x16, 0x00, 0x02, 0x00, 0x02, 0x00, 0xea, 0xff, 0xea, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0x85, 0xff, 0x85, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x38, 0xff, 0x38, 0xff, 0x13, 0xff, 0x13, 0xff, 0xef, 0xfe, 0xef, 0xfe, 0xcc, 0xfe, 0xcc, 0xfe, 0xac, 0xfe, 0xac, 0xfe, 0x91, 0xfe, 0x91, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, 0x66, 0xfe, 0x66, 0xfe, 0x59, 0xfe, 0x59, 0xfe, 0x54, 0xfe, 0x54, 0xfe, 0x55, 0xfe, 0x55, 0xfe, 0x60, 0xfe, 0x60, 0xfe, 0x76, 0xfe, 0x76, 0xfe, 0x96, 0xfe, 0x96, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xf0, 0xfe, 0xf0, 0xfe, 0x2b, 0xff, 0x2b, 0xff, 0x70, 0xff, 0x70, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0x0a, 0x00, 0x0a, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0xb3, 0x00, 0xb3, 0x00, 0x08, 0x01, 0x08, 0x01, 0x5a, 0x01, 0x5a, 0x01, 0xa7, 0x01, 0xa7, 0x01, 0xec, 0x01, 0xec, 0x01, 0x27, 0x02, 0x27, 0x02, 0x57, 0x02, 0x57, 0x02, 0x7e, 0x02, 0x7e, 0x02, 0x9a, 0x02, 0x9a, 0x02, 0xa8, 0x02, 0xa8, 0x02, 0xa8, 0x02, 0xa8, 0x02, 0x99, 0x02, 0x99, 0x02, 0x7c, 0x02, 0x7c, 0x02, 0x52, 0x02, 0x52, 0x02, 0x1a, 0x02, 0x1a, 0x02, 0xdb, 0x01, 0xdb, 0x01, 0x95, 0x01, 0x95, 0x01, 0x49, 0x01, 0x49, 0x01, 0xf8, 0x00, 0xf8, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0xf3, 0xff, 0xf3, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x47, 0xff, 0x47, 0xff, 0xf9, 0xfe, 0xf9, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, 0x2d, 0xfe, 0x2d, 0xfe, 0xf4, 0xfd, 0xf4, 0xfd, 0xc3, 0xfd, 0xc3, 0xfd, 0x9d, 0xfd, 0x9d, 0xfd, 0x86, 0xfd, 0x86, 0xfd, 0x7c, 0xfd, 0x7c, 0xfd, 0x7c, 0xfd, 0x7c, 0xfd, 0x89, 0xfd, 0x89, 0xfd, 0xa2, 0xfd, 0xa2, 0xfd, 0xc7, 0xfd, 0xc7, 0xfd, 0xf7, 0xfd, 0xf7, 0xfd, 0x30, 0xfe, 0x30, 0xfe, 0x72, 0xfe, 0x72, 0xfe, 0xb8, 0xfe, 0xb8, 0xfe, 0x00, 0xff, 0x00, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x96, 0xff, 0x96, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0x30, 0x00, 0x30, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0x12, 0x01, 0x12, 0x01, 0x50, 0x01, 0x50, 0x01, 0x86, 0x01, 0x86, 0x01, 0xb6, 0x01, 0xb6, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0x02, 0x02, 0x02, 0x02, 0x1d, 0x02, 0x1d, 0x02, 0x2d, 0x02, 0x2d, 0x02, 0x34, 0x02, 0x34, 0x02, 0x2f, 0x02, 0x2f, 0x02, 0x21, 0x02, 0x21, 0x02, 0x0b, 0x02, 0x0b, 0x02, 0xec, 0x01, 0xec, 0x01, 0xc4, 0x01, 0xc4, 0x01, 0x98, 0x01, 0x98, 0x01, 0x67, 0x01, 0x67, 0x01, 0x30, 0x01, 0x30, 0x01, 0xf3, 0x00, 0xf3, 0x00, 0xb2, 0x00, 0xb2, 0x00, 0x70, 0x00, 0x70, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0xee, 0xff, 0xee, 0xff, 0xac, 0xff, 0xac, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x28, 0xff, 0x28, 0xff, 0xe8, 0xfe, 0xe8, 0xfe, 0xad, 0xfe, 0xad, 0xfe, 0x77, 0xfe, 0x77, 0xfe, 0x46, 0xfe, 0x46, 0xfe, 0x1b, 0xfe, 0x1b, 0xfe, 0xf9, 0xfd, 0xf9, 0xfd, 0xde, 0xfd, 0xde, 0xfd, 0xca, 0xfd, 0xca, 0xfd, 0xc2, 0xfd, 0xc2, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, 0xf3, 0xfd, 0xf3, 0xfd, 0x19, 0xfe, 0x19, 0xfe, 0x48, 0xfe, 0x48, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0xc4, 0xfe, 0xc4, 0xfe, 0x10, 0xff, 0x10, 0xff, 0x65, 0xff, 0x65, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0x1b, 0x00, 0x1b, 0x00, 0x78, 0x00, 0x78, 0x00, 0xd2, 0x00, 0xd2, 0x00, 0x27, 0x01, 0x27, 0x01, 0x78, 0x01, 0x78, 0x01, 0xc2, 0x01, 0xc2, 0x01, 0x04, 0x02, 0x04, 0x02, 0x3d, 0x02, 0x3d, 0x02, 0x6a, 0x02, 0x6a, 0x02, 0x8c, 0x02, 0x8c, 0x02, 0xa4, 0x02, 0xa4, 0x02, 0xb3, 0x02, 0xb3, 0x02, 0xb9, 0x02, 0xb9, 0x02, 0xb5, 0x02, 0xb5, 0x02, 0xa5, 0x02, 0xa5, 0x02, 0x88, 0x02, 0x88, 0x02, 0x61, 0x02, 0x61, 0x02, 0x2e, 0x02, 0x2e, 0x02, 0xf0, 0x01, 0xf0, 0x01, 0xa7, 0x01, 0xa7, 0x01, 0x55, 0x01, 0x55, 0x01, 0xfc, 0x00, 0xfc, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0x35, 0x00, 0x35, 0x00, 0xc9, 0xff, 0xc9, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0xf1, 0xfe, 0xf1, 0xfe, 0x89, 0xfe, 0x89, 0xfe, 0x28, 0xfe, 0x28, 0xfe, 0xd1, 0xfd, 0xd1, 0xfd, 0x89, 0xfd, 0x89, 0xfd, 0x4f, 0xfd, 0x4f, 0xfd, 0x24, 0xfd, 0x24, 0xfd, 0x08, 0xfd, 0x08, 0xfd, 0xfb, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x0b, 0xfd, 0x0b, 0xfd, 0x29, 0xfd, 0x29, 0xfd, 0x53, 0xfd, 0x53, 0xfd, 0x89, 0xfd, 0x89, 0xfd, 0xc9, 0xfd, 0xc9, 0xfd, 0x10, 0xfe, 0x10, 0xfe, 0x5c, 0xfe, 0x5c, 0xfe, 0xae, 0xfe, 0xae, 0xfe, 0x01, 0xff, 0x01, 0xff, 0x55, 0xff, 0x55, 0xff, 0xad, 0xff, 0xad, 0xff, 0x07, 0x00, 0x07, 0x00, 0x60, 0x00, 0x60, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0x0b, 0x01, 0x0b, 0x01, 0x5b, 0x01, 0x5b, 0x01, 0xa5, 0x01, 0xa5, 0x01, 0xe6, 0x01, 0xe6, 0x01, 0x1f, 0x02, 0x1f, 0x02, 0x4d, 0x02, 0x4d, 0x02, 0x6f, 0x02, 0x6f, 0x02, 0x85, 0x02, 0x85, 0x02, 0x8e, 0x02, 0x8e, 0x02, 0x89, 0x02, 0x89, 0x02, 0x76, 0x02, 0x76, 0x02, 0x55, 0x02, 0x55, 0x02, 0x28, 0x02, 0x28, 0x02, 0xf2, 0x01, 0xf2, 0x01, 0xb1, 0x01, 0xb1, 0x01, 0x68, 0x01, 0x68, 0x01, 0x1b, 0x01, 0x1b, 0x01, 0xcd, 0x00, 0xcd, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0xe5, 0xff, 0xe5, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x28, 0xff, 0x28, 0xff, 0xf7, 0xfe, 0xf7, 0xfe, 0xce, 0xfe, 0xce, 0xfe, 0xab, 0xfe, 0xab, 0xfe, 0x90, 0xfe, 0x90, 0xfe, 0x7e, 0xfe, 0x7e, 0xfe, 0x73, 0xfe, 0x73, 0xfe, 0x6f, 0xfe, 0x6f, 0xfe, 0x71, 0xfe, 0x71, 0xfe, 0x7b, 0xfe, 0x7b, 0xfe, 0x8b, 0xfe, 0x8b, 0xfe, 0xa0, 0xfe, 0xa0, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0x06, 0xff, 0x06, 0xff, 0x2e, 0xff, 0x2e, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xec, 0xff, 0xec, 0xff, 0x1c, 0x00, 0x1c, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xed, 0x00, 0xed, 0x00, 0x00, 0x01, 0x00, 0x01, 0x08, 0x01, 0x08, 0x01, 0x06, 0x01, 0x06, 0x01, 0xfa, 0x00, 0xfa, 0x00, 0xe5, 0x00, 0xe5, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0x81, 0x00, 0x81, 0x00, 0x59, 0x00, 0x59, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x05, 0x00, 0x05, 0x00, 0xdf, 0xff, 0xdf, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x87, 0xff, 0x87, 0xff, 0x76, 0xff, 0x76, 0xff, 0x68, 0xff, 0x68, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x53, 0xff, 0x53, 0xff, 0x4e, 0xff, 0x4e, 0xff, 0x50, 0xff, 0x50, 0xff, 0x56, 0xff, 0x56, 0xff, 0x60, 0xff, 0x60, 0xff, 0x6d, 0xff, 0x6d, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x95, 0xff, 0x95, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0x1e, 0x00, 0x1e, 0x00, 0x49, 0x00, 0x49, 0x00, 0x76, 0x00, 0x76, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xc8, 0x00, 0xc8, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0x00, 0x01, 0x00, 0x01, 0x0e, 0x01, 0x0e, 0x01, 0x11, 0x01, 0x11, 0x01, 0x07, 0x01, 0x07, 0x01, 0xf0, 0x00, 0xf0, 0x00, 0xce, 0x00, 0xce, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x17, 0x00, 0x17, 0x00, 0xe1, 0xff, 0xe1, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0x84, 0xff, 0x84, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x40, 0xff, 0x40, 0xff, 0x2a, 0xff, 0x2a, 0xff, 0x18, 0xff, 0x18, 0xff, 0x0b, 0xff, 0x0b, 0xff, 0x03, 0xff, 0x03, 0xff, 0x02, 0xff, 0x02, 0xff, 0x07, 0xff, 0x07, 0xff, 0x10, 0xff, 0x10, 0xff, 0x20, 0xff, 0x20, 0xff, 0x36, 0xff, 0x36, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0x16, 0x00, 0x16, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xd4, 0x00, 0xd4, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0x17, 0x01, 0x17, 0x01, 0x2d, 0x01, 0x2d, 0x01, 0x38, 0x01, 0x38, 0x01, 0x38, 0x01, 0x38, 0x01, 0x2c, 0x01, 0x2c, 0x01, 0x12, 0x01, 0x12, 0x01, 0xef, 0x00, 0xef, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x51, 0x00, 0x51, 0x00, 0x18, 0x00, 0x18, 0x00, 0xe1, 0xff, 0xe1, 0xff, 0xad, 0xff, 0xad, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x55, 0xff, 0x55, 0xff, 0x34, 0xff, 0x34, 0xff, 0x1b, 0xff, 0x1b, 0xff, 0x0d, 0xff, 0x0d, 0xff, 0x09, 0xff, 0x09, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x11, 0xff, 0x11, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x30, 0xff, 0x30, 0xff, 0x49, 0xff, 0x49, 0xff, 0x65, 0xff, 0x65, 0xff, 0x85, 0xff, 0x85, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x28, 0x00, 0x28, 0x00, 0x58, 0x00, 0x58, 0x00, 0x89, 0x00, 0x89, 0x00, 0xba, 0x00, 0xba, 0x00, 0xe7, 0x00, 0xe7, 0x00, 0x11, 0x01, 0x11, 0x01, 0x35, 0x01, 0x35, 0x01, 0x50, 0x01, 0x50, 0x01, 0x61, 0x01, 0x61, 0x01, 0x66, 0x01, 0x66, 0x01, 0x60, 0x01, 0x60, 0x01, 0x4a, 0x01, 0x4a, 0x01, 0x27, 0x01, 0x27, 0x01, 0xf9, 0x00, 0xf9, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0x85, 0x00, 0x85, 0x00, 0x44, 0x00, 0x44, 0x00, 0x03, 0x00, 0x03, 0x00, 0xc3, 0xff, 0xc3, 0xff, 0x86, 0xff, 0x86, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0xf5, 0xfe, 0xf5, 0xfe, 0xcf, 0xfe, 0xcf, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, 0x97, 0xfe, 0x97, 0xfe, 0x86, 0xfe, 0x86, 0xfe, 0x7c, 0xfe, 0x7c, 0xfe, 0x79, 0xfe, 0x79, 0xfe, 0x7d, 0xfe, 0x7d, 0xfe, 0x87, 0xfe, 0x87, 0xfe, 0x97, 0xfe, 0x97, 0xfe, 0xaf, 0xfe, 0xaf, 0xfe, 0xcf, 0xfe, 0xcf, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, 0x24, 0xff, 0x24, 0xff, 0x58, 0xff, 0x58, 0xff, 0x92, 0xff, 0x92, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0x0d, 0x00, 0x0d, 0x00, 0x48, 0x00, 0x48, 0x00, 0x82, 0x00, 0x82, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xe7, 0x00, 0xe7, 0x00, 0x11, 0x01, 0x11, 0x01, 0x31, 0x01, 0x31, 0x01, 0x4b, 0x01, 0x4b, 0x01, 0x5c, 0x01, 0x5c, 0x01, 0x64, 0x01, 0x64, 0x01, 0x65, 0x01, 0x65, 0x01, 0x60, 0x01, 0x60, 0x01, 0x57, 0x01, 0x57, 0x01, 0x45, 0x01, 0x45, 0x01, 0x2b, 0x01, 0x2b, 0x01, 0x0a, 0x01, 0x0a, 0x01, 0xe6, 0x00, 0xe6, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x98, 0x00, 0x98, 0x00, 0x71, 0x00, 0x71, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x25, 0x00, 0x25, 0x00, 0x02, 0x00, 0x02, 0x00, 0xe2, 0xff, 0xe2, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xac, 0xff, 0xac, 0xff, 0x98, 0xff, 0x98, 0xff, 0x88, 0xff, 0x88, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0x71, 0xff, 0x71, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x68, 0xff, 0x68, 0xff, 0x6b, 0xff, 0x6b, 0xff, 0x72, 0xff, 0x72, 0xff, 0x79, 0xff, 0x79, 0xff, 0x81, 0xff, 0x81, 0xff, 0x89, 0xff, 0x89, 0xff, 0x91, 0xff, 0x91, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xad, 0xff, 0xad, 0xff, 0xae, 0xff, 0xae, 0xff, 0xac, 0xff, 0xac, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0x93, 0xff, 0x93, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x89, 0xff, 0x89, 0xff, 0x88, 0xff, 0x88, 0xff, 0x87, 0xff, 0x87, 0xff, 0x89, 0xff, 0x89, 0xff, 0x90, 0xff, 0x90, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0x10, 0x00, 0x10, 0x00, 0x28, 0x00, 0x28, 0x00, 0x42, 0x00, 0x42, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xde, 0x00, 0xde, 0x00, 0x00, 0x01, 0x00, 0x01, 0x1e, 0x01, 0x1e, 0x01, 0x36, 0x01, 0x36, 0x01, 0x48, 0x01, 0x48, 0x01, 0x54, 0x01, 0x54, 0x01, 0x59, 0x01, 0x59, 0x01, 0x54, 0x01, 0x54, 0x01, 0x45, 0x01, 0x45, 0x01, 0x2d, 0x01, 0x2d, 0x01, 0x0c, 0x01, 0x0c, 0x01, 0xe4, 0x00, 0xe4, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x44, 0x00, 0x44, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0xd3, 0xff, 0xd3, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x6c, 0xff, 0x6c, 0xff, 0x3d, 0xff, 0x3d, 0xff, 0x12, 0xff, 0x12, 0xff, 0xee, 0xfe, 0xee, 0xfe, 0xce, 0xfe, 0xce, 0xfe, 0xb2, 0xfe, 0xb2, 0xfe, 0x99, 0xfe, 0x99, 0xfe, 0x86, 0xfe, 0x86, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, 0x72, 0xfe, 0x72, 0xfe, 0x71, 0xfe, 0x71, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, 0x8c, 0xfe, 0x8c, 0xfe, 0xa6, 0xfe, 0xa6, 0xfe, 0xc9, 0xfe, 0xc9, 0xfe, 0xf0, 0xfe, 0xf0, 0xfe, 0x1e, 0xff, 0x1e, 0xff, 0x54, 0xff, 0x54, 0xff, 0x91, 0xff, 0x91, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0x19, 0x00, 0x19, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0xd9, 0x00, 0x10, 0x01, 0x10, 0x01, 0x3d, 0x01, 0x3d, 0x01, 0x62, 0x01, 0x62, 0x01, 0x7b, 0x01, 0x7b, 0x01, 0x89, 0x01, 0x89, 0x01, 0x8d, 0x01, 0x8d, 0x01, 0x88, 0x01, 0x88, 0x01, 0x7f, 0x01, 0x7f, 0x01, 0x70, 0x01, 0x70, 0x01, 0x5a, 0x01, 0x5a, 0x01, 0x3f, 0x01, 0x3f, 0x01, 0x1e, 0x01, 0x1e, 0x01, 0xfa, 0x00, 0xfa, 0x00, 0xd3, 0x00, 0xd3, 0x00, 0xab, 0x00, 0xab, 0x00, 0x81, 0x00, 0x81, 0x00, 0x54, 0x00, 0x54, 0x00, 0x23, 0x00, 0x23, 0x00, 0xf0, 0xff, 0xf0, 0xff, 0xba, 0xff, 0xba, 0xff, 0x83, 0xff, 0x83, 0xff, 0x50, 0xff, 0x50, 0xff, 0x23, 0xff, 0x23, 0xff, 0xfd, 0xfe, 0xfd, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xbd, 0xfe, 0xbd, 0xfe, 0xa7, 0xfe, 0xa7, 0xfe, 0x97, 0xfe, 0x97, 0xfe, 0x8f, 0xfe, 0x8f, 0xfe, 0x8e, 0xfe, 0x8e, 0xfe, 0x95, 0xfe, 0x95, 0xfe, 0xa3, 0xfe, 0xa3, 0xfe, 0xb8, 0xfe, 0xb8, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, 0xf3, 0xfe, 0xf3, 0xfe, 0x18, 0xff, 0x18, 0xff, 0x40, 0xff, 0x40, 0xff, 0x69, 0xff, 0x69, 0xff, 0x92, 0xff, 0x92, 0xff, 0xba, 0xff, 0xba, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0x0a, 0x00, 0x0a, 0x00, 0x33, 0x00, 0x33, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x82, 0x00, 0x82, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xcd, 0x00, 0xcd, 0x00, 0xec, 0x00, 0xec, 0x00, 0x07, 0x01, 0x07, 0x01, 0x1d, 0x01, 0x1d, 0x01, 0x30, 0x01, 0x30, 0x01, 0x3f, 0x01, 0x3f, 0x01, 0x47, 0x01, 0x47, 0x01, 0x4b, 0x01, 0x4b, 0x01, 0x47, 0x01, 0x47, 0x01, 0x38, 0x01, 0x38, 0x01, 0x20, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0xe0, 0x00, 0xe0, 0x00, 0xba, 0x00, 0xba, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x60, 0x00, 0x60, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xca, 0xff, 0xca, 0xff, 0x99, 0xff, 0x99, 0xff, 0x6c, 0xff, 0x6c, 0xff, 0x42, 0xff, 0x42, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0xfb, 0xfe, 0xfb, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xcd, 0xfe, 0xcd, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, 0xcf, 0xfe, 0xcf, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x21, 0xff, 0x21, 0xff, 0x48, 0xff, 0x48, 0xff, 0x73, 0xff, 0x73, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0x09, 0x00, 0x09, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xfb, 0x00, 0xfb, 0x00, 0x21, 0x01, 0x21, 0x01, 0x41, 0x01, 0x41, 0x01, 0x5a, 0x01, 0x5a, 0x01, 0x6b, 0x01, 0x6b, 0x01, 0x74, 0x01, 0x74, 0x01, 0x75, 0x01, 0x75, 0x01, 0x6c, 0x01, 0x6c, 0x01, 0x57, 0x01, 0x57, 0x01, 0x36, 0x01, 0x36, 0x01, 0x0c, 0x01, 0x0c, 0x01, 0xda, 0x00, 0xda, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0xda, 0xff, 0xda, 0xff, 0x92, 0xff, 0x92, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x06, 0xff, 0x06, 0xff, 0xcc, 0xfe, 0xcc, 0xfe, 0x97, 0xfe, 0x97, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, 0x49, 0xfe, 0x49, 0xfe, 0x33, 0xfe, 0x33, 0xfe, 0x2a, 0xfe, 0x2a, 0xfe, 0x2b, 0xfe, 0x2b, 0xfe, 0x39, 0xfe, 0x39, 0xfe, 0x54, 0xfe, 0x54, 0xfe, 0x7e, 0xfe, 0x7e, 0xfe, 0xb2, 0xfe, 0xb2, 0xfe, 0xf0, 0xfe, 0xf0, 0xfe, 0x34, 0xff, 0x34, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0x1c, 0x00, 0x1c, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0xba, 0x00, 0xba, 0x00, 0x03, 0x01, 0x03, 0x01, 0x45, 0x01, 0x45, 0x01, 0x80, 0x01, 0x80, 0x01, 0xb4, 0x01, 0xb4, 0x01, 0xdd, 0x01, 0xdd, 0x01, 0xfb, 0x01, 0xfb, 0x01, 0x0c, 0x02, 0x0c, 0x02, 0x10, 0x02, 0x10, 0x02, 0x07, 0x02, 0x07, 0x02, 0xf2, 0x01, 0xf2, 0x01, 0xd1, 0x01, 0xd1, 0x01, 0xa4, 0x01, 0xa4, 0x01, 0x6e, 0x01, 0x6e, 0x01, 0x2d, 0x01, 0x2d, 0x01, 0xe4, 0x00, 0xe4, 0x00, 0x94, 0x00, 0x94, 0x00, 0x40, 0x00, 0x40, 0x00, 0xeb, 0xff, 0xeb, 0xff, 0x96, 0xff, 0x96, 0xff, 0x44, 0xff, 0x44, 0xff, 0xf6, 0xfe, 0xf6, 0xfe, 0xac, 0xfe, 0xac, 0xfe, 0x6a, 0xfe, 0x6a, 0xfe, 0x33, 0xfe, 0x33, 0xfe, 0x09, 0xfe, 0x09, 0xfe, 0xeb, 0xfd, 0xeb, 0xfd, 0xda, 0xfd, 0xda, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, 0xe0, 0xfd, 0xe0, 0xfd, 0xf6, 0xfd, 0xf6, 0xfd, 0x1b, 0xfe, 0x1b, 0xfe, 0x4e, 0xfe, 0x4e, 0xfe, 0x8b, 0xfe, 0x8b, 0xfe, 0xd0, 0xfe, 0xd0, 0xfe, 0x17, 0xff, 0x17, 0xff, 0x62, 0xff, 0x62, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4a, 0x00, 0x4a, 0x00, 0x91, 0x00, 0x91, 0x00, 0xd3, 0x00, 0xd3, 0x00, 0x0c, 0x01, 0x0c, 0x01, 0x3c, 0x01, 0x3c, 0x01, 0x61, 0x01, 0x61, 0x01, 0x7f, 0x01, 0x7f, 0x01, 0x94, 0x01, 0x94, 0x01, 0x9e, 0x01, 0x9e, 0x01, 0xa2, 0x01, 0xa2, 0x01, 0x9f, 0x01, 0x9f, 0x01, 0x92, 0x01, 0x92, 0x01, 0x7a, 0x01, 0x7a, 0x01, 0x59, 0x01, 0x59, 0x01, 0x31, 0x01, 0x31, 0x01, 0x05, 0x01, 0x05, 0x01, 0xd4, 0x00, 0xd4, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x39, 0x00, 0x39, 0x00, 0x05, 0x00, 0x05, 0x00, 0xd3, 0xff, 0xd3, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0x80, 0xff, 0x80, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x43, 0xff, 0x43, 0xff, 0x32, 0xff, 0x32, 0xff, 0x29, 0xff, 0x29, 0xff, 0x2a, 0xff, 0x2a, 0xff, 0x31, 0xff, 0x31, 0xff, 0x41, 0xff, 0x41, 0xff, 0x56, 0xff, 0x56, 0xff, 0x71, 0xff, 0x71, 0xff, 0x91, 0xff, 0x91, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0x16, 0x00, 0x16, 0x00, 0x34, 0x00, 0x34, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x62, 0x00, 0x62, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x74, 0x00, 0x73, 0x00, 0x73, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x65, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x51, 0x00, 0x51, 0x00, 0x40, 0x00, 0x40, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x16, 0x00, 0x16, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0x92, 0xff, 0x92, 0xff, 0x74, 0xff, 0x74, 0xff, 0x57, 0xff, 0x57, 0xff, 0x40, 0xff, 0x40, 0xff, 0x2e, 0xff, 0x2e, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0x14, 0xff, 0x14, 0xff, 0x10, 0xff, 0x10, 0xff, 0x15, 0xff, 0x15, 0xff, 0x22, 0xff, 0x22, 0xff, 0x37, 0xff, 0x37, 0xff, 0x53, 0xff, 0x53, 0xff, 0x74, 0xff, 0x74, 0xff, 0x98, 0xff, 0x98, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0x15, 0x00, 0x15, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x64, 0x00, 0x64, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0xb2, 0x00, 0xb2, 0x00, 0xdb, 0x00, 0xdb, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x19, 0x01, 0x19, 0x01, 0x2e, 0x01, 0x2e, 0x01, 0x3c, 0x01, 0x3c, 0x01, 0x47, 0x01, 0x47, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x4f, 0x01, 0x4f, 0x01, 0x4b, 0x01, 0x4b, 0x01, 0x40, 0x01, 0x40, 0x01, 0x2e, 0x01, 0x2e, 0x01, 0x16, 0x01, 0x16, 0x01, 0xf8, 0x00, 0xf8, 0x00, 0xd5, 0x00, 0xd5, 0x00, 0xad, 0x00, 0xad, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x14, 0x00, 0x14, 0x00, 0xdf, 0xff, 0xdf, 0xff, 0xab, 0xff, 0xab, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x4c, 0xff, 0x4c, 0xff, 0x21, 0xff, 0x21, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, 0xb2, 0xfe, 0xb2, 0xfe, 0xa4, 0xfe, 0xa4, 0xfe, 0x9f, 0xfe, 0x9f, 0xfe, 0xa4, 0xfe, 0xa4, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, 0xc0, 0xfe, 0xc0, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, 0x02, 0xff, 0x02, 0xff, 0x22, 0xff, 0x22, 0xff, 0x43, 0xff, 0x43, 0xff, 0x66, 0xff, 0x66, 0xff, 0x88, 0xff, 0x88, 0xff, 0xab, 0xff, 0xab, 0xff, 0xce, 0xff, 0xce, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0x14, 0x00, 0x14, 0x00, 0x36, 0x00, 0x36, 0x00, 0x53, 0x00, 0x53, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x87, 0x00, 0x87, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0xb3, 0x00, 0xb3, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xbd, 0x00, 0xbd, 0x00, 0xb3, 0x00, 0xb3, 0x00, 0xa5, 0x00, 0xa5, 0x00, 0x92, 0x00, 0x92, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x57, 0x00, 0x57, 0x00, 0x44, 0x00, 0x44, 0x00, 0x34, 0x00, 0x34, 0x00, 0x28, 0x00, 0x28, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x18, 0x00, 0x18, 0x00, 0x15, 0x00, 0x15, 0x00, 0x16, 0x00, 0x16, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0x00, 0x17, 0x00, 0x11, 0x00, 0x11, 0x00, 0x09, 0x00, 0x09, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xad, 0xff, 0xad, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xae, 0xff, 0xae, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xae, 0xff, 0xae, 0xff, 0xae, 0xff, 0xae, 0xff, 0xad, 0xff, 0xad, 0xff, 0xab, 0xff, 0xab, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xac, 0xff, 0xac, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xee, 0xff, 0xee, 0xff, 0x05, 0x00, 0x05, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x77, 0x00, 0x77, 0x00, 0x90, 0x00, 0x90, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0x74, 0x00, 0x74, 0x00, 0x57, 0x00, 0x57, 0x00, 0x35, 0x00, 0x35, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xe6, 0xff, 0xe6, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x62, 0xff, 0x62, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x35, 0xff, 0x35, 0xff, 0x23, 0xff, 0x23, 0xff, 0x14, 0xff, 0x14, 0xff, 0x07, 0xff, 0x07, 0xff, 0xfc, 0xfe, 0xfc, 0xfe, 0xf3, 0xfe, 0xf3, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, 0x03, 0xff, 0x03, 0xff, 0x17, 0xff, 0x17, 0xff, 0x33, 0xff, 0x33, 0xff, 0x54, 0xff, 0x54, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0x23, 0x00, 0x23, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x92, 0x00, 0x92, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0xf2, 0x00, 0xf2, 0x00, 0x1b, 0x01, 0x1b, 0x01, 0x39, 0x01, 0x39, 0x01, 0x4c, 0x01, 0x4c, 0x01, 0x56, 0x01, 0x56, 0x01, 0x58, 0x01, 0x58, 0x01, 0x55, 0x01, 0x55, 0x01, 0x4c, 0x01, 0x4c, 0x01, 0x3f, 0x01, 0x3f, 0x01, 0x2e, 0x01, 0x2e, 0x01, 0x17, 0x01, 0x17, 0x01, 0xfc, 0x00, 0xfc, 0x00, 0xda, 0x00, 0xda, 0x00, 0xb3, 0x00, 0xb3, 0x00, 0x88, 0x00, 0x88, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x27, 0x00, 0x27, 0x00, 0xf4, 0xff, 0xf4, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x58, 0xff, 0x58, 0xff, 0x28, 0xff, 0x28, 0xff, 0xfd, 0xfe, 0xfd, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, 0xae, 0xfe, 0xae, 0xfe, 0xb5, 0xfe, 0xb5, 0xfe, 0xc3, 0xfe, 0xc3, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, 0x24, 0xff, 0x24, 0xff, 0x53, 0xff, 0x53, 0xff, 0x86, 0xff, 0x86, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0x2a, 0x00, 0x2a, 0x00, 0x61, 0x00, 0x61, 0x00, 0x94, 0x00, 0x94, 0x00, 0xc1, 0x00, 0xc1, 0x00, 0xe8, 0x00, 0xe8, 0x00, 0x09, 0x01, 0x09, 0x01, 0x24, 0x01, 0x24, 0x01, 0x37, 0x01, 0x37, 0x01, 0x41, 0x01, 0x41, 0x01, 0x45, 0x01, 0x45, 0x01, 0x43, 0x01, 0x43, 0x01, 0x3d, 0x01, 0x3d, 0x01, 0x30, 0x01, 0x30, 0x01, 0x1c, 0x01, 0x1c, 0x01, 0xff, 0x00, 0xff, 0x00, 0xdb, 0x00, 0xdb, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x42, 0x00, 0x42, 0x00, 0x06, 0x00, 0x06, 0x00, 0xc5, 0xff, 0xc5, 0xff, 0x82, 0xff, 0x82, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x03, 0xff, 0x03, 0xff, 0xcf, 0xfe, 0xcf, 0xfe, 0xa3, 0xfe, 0xa3, 0xfe, 0x7d, 0xfe, 0x7d, 0xfe, 0x61, 0xfe, 0x61, 0xfe, 0x4d, 0xfe, 0x4d, 0xfe, 0x44, 0xfe, 0x44, 0xfe, 0x46, 0xfe, 0x46, 0xfe, 0x54, 0xfe, 0x54, 0xfe, 0x6c, 0xfe, 0x6c, 0xfe, 0x8c, 0xfe, 0x8c, 0xfe, 0xb4, 0xfe, 0xb4, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, 0x19, 0xff, 0x19, 0xff, 0x53, 0xff, 0x53, 0xff, 0x92, 0xff, 0x92, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0x14, 0x00, 0x14, 0x00, 0x57, 0x00, 0x57, 0x00, 0x9b, 0x00, 0x9b, 0x00, 0xde, 0x00, 0xde, 0x00, 0x1f, 0x01, 0x1f, 0x01, 0x5d, 0x01, 0x5d, 0x01, 0x96, 0x01, 0x96, 0x01, 0xcb, 0x01, 0xcb, 0x01, 0xf9, 0x01, 0xf9, 0x01, 0x1d, 0x02, 0x1d, 0x02, 0x35, 0x02, 0x35, 0x02, 0x41, 0x02, 0x41, 0x02, 0x3f, 0x02, 0x3f, 0x02, 0x30, 0x02, 0x30, 0x02, 0x13, 0x02, 0x13, 0x02, 0xe9, 0x01, 0xe9, 0x01, 0xb3, 0x01, 0xb3, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0x24, 0x01, 0x24, 0x01, 0xd2, 0x00, 0xd2, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x29, 0x00, 0x29, 0x00, 0xd5, 0xff, 0xd5, 0xff, 0x84, 0xff, 0x84, 0xff, 0x36, 0xff, 0x36, 0xff, 0xec, 0xfe, 0xec, 0xfe, 0xab, 0xfe, 0xab, 0xfe, 0x77, 0xfe, 0x77, 0xfe, 0x4c, 0xfe, 0x4c, 0xfe, 0x2b, 0xfe, 0x2b, 0xfe, 0x12, 0xfe, 0x12, 0xfe, 0x02, 0xfe, 0x02, 0xfe, 0xf9, 0xfd, 0xf9, 0xfd, 0xf6, 0xfd, 0xf6, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0x0b, 0xfe, 0x0b, 0xfe, 0x21, 0xfe, 0x21, 0xfe, 0x40, 0xfe, 0x40, 0xfe, 0x6c, 0xfe, 0x6c, 0xfe, 0xa1, 0xfe, 0xa1, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0x20, 0xff, 0x20, 0xff, 0x67, 0xff, 0x67, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x91, 0x00, 0x91, 0x00, 0xd1, 0x00, 0xd1, 0x00, 0x0a, 0x01, 0x0a, 0x01, 0x3d, 0x01, 0x3d, 0x01, 0x67, 0x01, 0x67, 0x01, 0x84, 0x01, 0x84, 0x01, 0x96, 0x01, 0x96, 0x01, 0x9f, 0x01, 0x9f, 0x01, 0x9f, 0x01, 0x9f, 0x01, 0x95, 0x01, 0x95, 0x01, 0x85, 0x01, 0x85, 0x01, 0x70, 0x01, 0x70, 0x01, 0x54, 0x01, 0x54, 0x01, 0x31, 0x01, 0x31, 0x01, 0x0a, 0x01, 0x0a, 0x01, 0xe0, 0x00, 0xe0, 0x00, 0xb1, 0x00, 0xb1, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x19, 0x00, 0x19, 0x00, 0xe6, 0xff, 0xe6, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0x85, 0xff, 0x85, 0xff, 0x58, 0xff, 0x58, 0xff, 0x2d, 0xff, 0x2d, 0xff, 0x09, 0xff, 0x09, 0xff, 0xed, 0xfe, 0xed, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, 0xbc, 0xfe, 0xbc, 0xfe, 0xb8, 0xfe, 0xb8, 0xfe, 0xb7, 0xfe, 0xb7, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, 0xee, 0xfe, 0xee, 0xfe, 0x10, 0xff, 0x10, 0xff, 0x35, 0xff, 0x35, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0x24, 0x00, 0x24, 0x00, 0x55, 0x00, 0x55, 0x00, 0x80, 0x00, 0x80, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xe4, 0x00, 0xe4, 0x00, 0xfb, 0x00, 0xfb, 0x00, 0x0d, 0x01, 0x0d, 0x01, 0x17, 0x01, 0x17, 0x01, 0x19, 0x01, 0x19, 0x01, 0x16, 0x01, 0x16, 0x01, 0x0b, 0x01, 0x0b, 0x01, 0xfd, 0x00, 0xfd, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xb3, 0x00, 0xb3, 0x00, 0x90, 0x00, 0x90, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x42, 0x00, 0x42, 0x00, 0x16, 0x00, 0x16, 0x00, 0xe7, 0xff, 0xe7, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x63, 0xff, 0x63, 0xff, 0x3d, 0xff, 0x3d, 0xff, 0x1b, 0xff, 0x1b, 0xff, 0x01, 0xff, 0x01, 0xff, 0xec, 0xfe, 0xec, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xe1, 0xfe, 0xe1, 0xfe, 0xee, 0xfe, 0xee, 0xfe, 0x01, 0xff, 0x01, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x3e, 0xff, 0x3e, 0xff, 0x67, 0xff, 0x67, 0xff, 0x95, 0xff, 0x95, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x22, 0x00, 0x53, 0x00, 0x53, 0x00, 0x84, 0x00, 0x84, 0x00, 0xb3, 0x00, 0xb3, 0x00, 0xde, 0x00, 0xde, 0x00, 0x03, 0x01, 0x03, 0x01, 0x21, 0x01, 0x21, 0x01, 0x36, 0x01, 0x36, 0x01, 0x41, 0x01, 0x41, 0x01, 0x44, 0x01, 0x44, 0x01, 0x3d, 0x01, 0x3d, 0x01, 0x2b, 0x01, 0x2b, 0x01, 0x11, 0x01, 0x11, 0x01, 0xf0, 0x00, 0xf0, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0x92, 0x00, 0x92, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0xdd, 0xff, 0xdd, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x65, 0xff, 0x65, 0xff, 0x30, 0xff, 0x30, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, 0xb4, 0xfe, 0xb4, 0xfe, 0x9c, 0xfe, 0x9c, 0xfe, 0x8e, 0xfe, 0x8e, 0xfe, 0x8a, 0xfe, 0x8a, 0xfe, 0x8e, 0xfe, 0x8e, 0xfe, 0x9e, 0xfe, 0x9e, 0xfe, 0xb8, 0xfe, 0xb8, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0x0b, 0xff, 0x0b, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0xba, 0xff, 0xba, 0xff, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x46, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0xd2, 0x00, 0xd2, 0x00, 0x0f, 0x01, 0x0f, 0x01, 0x48, 0x01, 0x48, 0x01, 0x7a, 0x01, 0x7a, 0x01, 0xa5, 0x01, 0xa5, 0x01, 0xc7, 0x01, 0xc7, 0x01, 0xdc, 0x01, 0xdc, 0x01, 0xe5, 0x01, 0xe5, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xce, 0x01, 0xce, 0x01, 0xaf, 0x01, 0xaf, 0x01, 0x84, 0x01, 0x84, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x0f, 0x01, 0x0f, 0x01, 0xca, 0x00, 0xca, 0x00, 0x80, 0x00, 0x80, 0x00, 0x31, 0x00, 0x31, 0x00, 0xdf, 0xff, 0xdf, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x3c, 0xff, 0x3c, 0xff, 0xf1, 0xfe, 0xf1, 0xfe, 0xb1, 0xfe, 0xb1, 0xfe, 0x7d, 0xfe, 0x7d, 0xfe, 0x54, 0xfe, 0x54, 0xfe, 0x36, 0xfe, 0x36, 0xfe, 0x25, 0xfe, 0x25, 0xfe, 0x1e, 0xfe, 0x1e, 0xfe, 0x22, 0xfe, 0x22, 0xfe, 0x30, 0xfe, 0x30, 0xfe, 0x4d, 0xfe, 0x4d, 0xfe, 0x77, 0xfe, 0x77, 0xfe, 0xa7, 0xfe, 0xa7, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0x14, 0xff, 0x14, 0xff, 0x51, 0xff, 0x51, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0x07, 0x00, 0x07, 0x00, 0x42, 0x00, 0x42, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0xe8, 0x00, 0xe8, 0x00, 0x11, 0x01, 0x11, 0x01, 0x32, 0x01, 0x32, 0x01, 0x4a, 0x01, 0x4a, 0x01, 0x59, 0x01, 0x59, 0x01, 0x62, 0x01, 0x62, 0x01, 0x5f, 0x01, 0x5f, 0x01, 0x52, 0x01, 0x52, 0x01, 0x39, 0x01, 0x39, 0x01, 0x18, 0x01, 0x18, 0x01, 0xf1, 0x00, 0xf1, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0x97, 0x00, 0x97, 0x00, 0x65, 0x00, 0x65, 0x00, 0x33, 0x00, 0x33, 0x00, 0x05, 0x00, 0x05, 0x00, 0xda, 0xff, 0xda, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0x93, 0xff, 0x93, 0xff, 0x79, 0xff, 0x79, 0xff, 0x63, 0xff, 0x63, 0xff, 0x54, 0xff, 0x54, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x48, 0xff, 0x48, 0xff, 0x46, 0xff, 0x46, 0xff, 0x47, 0xff, 0x47, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x74, 0xff, 0x74, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xea, 0xff, 0xea, 0xff, 0x0c, 0x00, 0x0c, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x86, 0x00, 0x86, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0xad, 0x00, 0xad, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0xbf, 0x00, 0xbf, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xab, 0x00, 0xab, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x85, 0x00, 0x85, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0xe9, 0xff, 0xe9, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0x81, 0xff, 0x81, 0xff, 0x61, 0xff, 0x61, 0xff, 0x43, 0xff, 0x43, 0xff, 0x27, 0xff, 0x27, 0xff, 0x11, 0xff, 0x11, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0xe1, 0xfe, 0xe1, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xe1, 0xfe, 0xe1, 0xfe, 0xe9, 0xfe, 0xe9, 0xfe, 0xf9, 0xfe, 0xf9, 0xfe, 0x10, 0xff, 0x10, 0xff, 0x2d, 0xff, 0x2d, 0xff, 0x4e, 0xff, 0x4e, 0xff, 0x73, 0xff, 0x73, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0x22, 0x00, 0x22, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x77, 0x00, 0x77, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0x12, 0x01, 0x12, 0x01, 0x25, 0x01, 0x25, 0x01, 0x34, 0x01, 0x34, 0x01, 0x3d, 0x01, 0x3d, 0x01, 0x43, 0x01, 0x43, 0x01, 0x46, 0x01, 0x46, 0x01, 0x45, 0x01, 0x45, 0x01, 0x40, 0x01, 0x40, 0x01, 0x37, 0x01, 0x37, 0x01, 0x28, 0x01, 0x28, 0x01, 0x14, 0x01, 0x14, 0x01, 0xfb, 0x00, 0xfb, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0x98, 0x00, 0x98, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x43, 0x00, 0x43, 0x00, 0x18, 0x00, 0x18, 0x00, 0xec, 0xff, 0xec, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0x94, 0xff, 0x94, 0xff, 0x6c, 0xff, 0x6c, 0xff, 0x45, 0xff, 0x45, 0xff, 0x22, 0xff, 0x22, 0xff, 0x05, 0xff, 0x05, 0xff, 0xec, 0xfe, 0xec, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, 0xc8, 0xfe, 0xc8, 0xfe, 0xbd, 0xfe, 0xbd, 0xfe, 0xb7, 0xfe, 0xb7, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb9, 0xfe, 0xb9, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xce, 0xfe, 0xce, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xef, 0xfe, 0xef, 0xfe, 0x06, 0xff, 0x06, 0xff, 0x20, 0xff, 0x20, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x64, 0xff, 0x64, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0x16, 0x00, 0x16, 0x00, 0x47, 0x00, 0x47, 0x00, 0x79, 0x00, 0x79, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xd4, 0x00, 0xd4, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0x1b, 0x01, 0x1b, 0x01, 0x35, 0x01, 0x35, 0x01, 0x48, 0x01, 0x48, 0x01, 0x52, 0x01, 0x52, 0x01, 0x53, 0x01, 0x53, 0x01, 0x4c, 0x01, 0x4c, 0x01, 0x40, 0x01, 0x40, 0x01, 0x2e, 0x01, 0x2e, 0x01, 0x19, 0x01, 0x19, 0x01, 0x01, 0x01, 0x01, 0x01, 0xe8, 0x00, 0xe8, 0x00, 0xcd, 0x00, 0xcd, 0x00, 0xae, 0x00, 0xae, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x69, 0x00, 0x69, 0x00, 0x46, 0x00, 0x46, 0x00, 0x20, 0x00, 0x20, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x6c, 0xff, 0x6c, 0xff, 0x4d, 0xff, 0x4d, 0xff, 0x33, 0xff, 0x33, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x0d, 0xff, 0x0d, 0xff, 0x05, 0xff, 0x05, 0xff, 0x03, 0xff, 0x03, 0xff, 0x09, 0xff, 0x09, 0xff, 0x12, 0xff, 0x12, 0xff, 0x1e, 0xff, 0x1e, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x3d, 0xff, 0x3d, 0xff, 0x53, 0xff, 0x53, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x85, 0xff, 0x85, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x0f, 0x00, 0x0f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x37, 0x00, 0x37, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x47, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x53, 0x00, 0x53, 0x00, 0x58, 0x00, 0x58, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x60, 0x00, 0x61, 0x00, 0x61, 0x00, 0x62, 0x00, 0x62, 0x00, 0x62, 0x00, 0x62, 0x00, 0x62, 0x00, 0x62, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x56, 0x00, 0x56, 0x00, 0x51, 0x00, 0x51, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x52, 0x00, 0x53, 0x00, 0x53, 0x00, 0x50, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x50, 0x00, 0x51, 0x00, 0x51, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x46, 0x00, 0x46, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xce, 0xff, 0xce, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0x81, 0xff, 0x81, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x59, 0xff, 0x59, 0xff, 0x4d, 0xff, 0x4d, 0xff, 0x47, 0xff, 0x47, 0xff, 0x45, 0xff, 0x45, 0xff, 0x46, 0xff, 0x46, 0xff, 0x4d, 0xff, 0x4d, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x6b, 0xff, 0x6b, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x91, 0xff, 0x91, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xda, 0xff, 0xda, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0x14, 0x00, 0x14, 0x00, 0x31, 0x00, 0x31, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x68, 0x00, 0x68, 0x00, 0x84, 0x00, 0x84, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0xb3, 0x00, 0xb3, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xd2, 0x00, 0xd2, 0x00, 0xda, 0x00, 0xda, 0x00, 0xdd, 0x00, 0xdd, 0x00, 0xdb, 0x00, 0xdb, 0x00, 0xd1, 0x00, 0xd1, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xab, 0x00, 0xab, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x45, 0x00, 0x45, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0xf5, 0xff, 0xf5, 0xff, 0xca, 0xff, 0xca, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x42, 0xff, 0x42, 0xff, 0x2f, 0xff, 0x2f, 0xff, 0x22, 0xff, 0x22, 0xff, 0x1b, 0xff, 0x1b, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x24, 0xff, 0x24, 0xff, 0x34, 0xff, 0x34, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x64, 0xff, 0x64, 0xff, 0x84, 0xff, 0x84, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xce, 0xff, 0xce, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0x1c, 0x00, 0x1c, 0x00, 0x43, 0x00, 0x43, 0x00, 0x66, 0x00, 0x66, 0x00, 0x86, 0x00, 0x86, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0xb8, 0x00, 0xb8, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xd1, 0x00, 0xd1, 0x00, 0xd5, 0x00, 0xd5, 0x00, 0xd3, 0x00, 0xd3, 0x00, 0xca, 0x00, 0xca, 0x00, 0xbb, 0x00, 0xbb, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x73, 0x00, 0x73, 0x00, 0x56, 0x00, 0x56, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x21, 0x00, 0x21, 0x00, 0x07, 0x00, 0x07, 0x00, 0xed, 0xff, 0xed, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0x96, 0xff, 0x96, 0xff, 0x92, 0xff, 0x92, 0xff, 0x93, 0xff, 0x93, 0xff, 0x99, 0xff, 0x99, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xed, 0xff, 0xed, 0xff, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x29, 0x00, 0x29, 0x00, 0x32, 0x00, 0x32, 0x00, 0x36, 0x00, 0x36, 0x00, 0x34, 0x00, 0x34, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x20, 0x00, 0x20, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x73, 0xff, 0x73, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x66, 0xff, 0x66, 0xff, 0x69, 0xff, 0x69, 0xff, 0x73, 0xff, 0x73, 0xff, 0x82, 0xff, 0x82, 0xff, 0x95, 0xff, 0x95, 0xff, 0xac, 0xff, 0xac, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1d, 0x00, 0x1d, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x54, 0x00, 0x54, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x82, 0x00, 0x82, 0x00, 0x98, 0x00, 0x98, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0xbd, 0x00, 0xbd, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xb2, 0x00, 0xb2, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x70, 0x00, 0x70, 0x00, 0x52, 0x00, 0x52, 0x00, 0x30, 0x00, 0x30, 0x00, 0x08, 0x00, 0x08, 0x00, 0xde, 0xff, 0xde, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0x89, 0xff, 0x89, 0xff, 0x64, 0xff, 0x64, 0xff, 0x46, 0xff, 0x46, 0xff, 0x31, 0xff, 0x31, 0xff, 0x22, 0xff, 0x22, 0xff, 0x1a, 0xff, 0x1a, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0x2e, 0xff, 0x2e, 0xff, 0x42, 0xff, 0x42, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0x0e, 0x00, 0x0e, 0x00, 0x34, 0x00, 0x34, 0x00, 0x56, 0x00, 0x56, 0x00, 0x72, 0x00, 0x72, 0x00, 0x87, 0x00, 0x87, 0x00, 0x99, 0x00, 0x99, 0x00, 0xa5, 0x00, 0xa5, 0x00, 0xab, 0x00, 0xab, 0x00, 0xab, 0x00, 0xab, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x98, 0x00, 0x98, 0x00, 0x89, 0x00, 0x89, 0x00, 0x77, 0x00, 0x77, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x45, 0x00, 0x45, 0x00, 0x26, 0x00, 0x26, 0x00, 0x02, 0x00, 0x02, 0x00, 0xde, 0xff, 0xde, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0x95, 0xff, 0x95, 0xff, 0x74, 0xff, 0x74, 0xff, 0x54, 0xff, 0x54, 0xff, 0x3b, 0xff, 0x3b, 0xff, 0x29, 0xff, 0x29, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x18, 0xff, 0x18, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x2d, 0xff, 0x2d, 0xff, 0x43, 0xff, 0x43, 0xff, 0x60, 0xff, 0x60, 0xff, 0x83, 0xff, 0x83, 0xff, 0xac, 0xff, 0xac, 0xff, 0xda, 0xff, 0xda, 0xff, 0x09, 0x00, 0x09, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x68, 0x00, 0x68, 0x00, 0x92, 0x00, 0x92, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0xd3, 0x00, 0xd3, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0xf7, 0x00, 0xf7, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0xd2, 0x00, 0xd2, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0x92, 0x00, 0x92, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x42, 0x00, 0x42, 0x00, 0x16, 0x00, 0x16, 0x00, 0xe8, 0xff, 0xe8, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x69, 0xff, 0x69, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x31, 0xff, 0x31, 0xff, 0x1e, 0xff, 0x1e, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x07, 0xff, 0x07, 0xff, 0x06, 0xff, 0x06, 0xff, 0x0e, 0xff, 0x0e, 0xff, 0x1e, 0xff, 0x1e, 0xff, 0x35, 0xff, 0x35, 0xff, 0x53, 0xff, 0x53, 0xff, 0x73, 0xff, 0x73, 0xff, 0x95, 0xff, 0x95, 0xff, 0xba, 0xff, 0xba, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0x0a, 0x00, 0x0a, 0x00, 0x35, 0x00, 0x35, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x81, 0x00, 0x81, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xda, 0x00, 0xda, 0x00, 0xe1, 0x00, 0xe1, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xd7, 0x00, 0xd7, 0x00, 0xc7, 0x00, 0xc7, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0x90, 0x00, 0x90, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x48, 0x00, 0x48, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0xf3, 0xff, 0xf3, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0x79, 0xff, 0x79, 0xff, 0x59, 0xff, 0x59, 0xff, 0x40, 0xff, 0x40, 0xff, 0x30, 0xff, 0x30, 0xff, 0x24, 0xff, 0x24, 0xff, 0x21, 0xff, 0x21, 0xff, 0x25, 0xff, 0x25, 0xff, 0x30, 0xff, 0x30, 0xff, 0x42, 0xff, 0x42, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x76, 0xff, 0x76, 0xff, 0x96, 0xff, 0x96, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0x06, 0x00, 0x06, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x55, 0x00, 0x55, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0xbd, 0x00, 0xbd, 0x00, 0xd6, 0x00, 0xd6, 0x00, 0xeb, 0x00, 0xeb, 0x00, 0xf9, 0x00, 0xf9, 0x00, 0x00, 0x01, 0x00, 0x01, 0xff, 0x00, 0xff, 0x00, 0xf6, 0x00, 0xf6, 0x00, 0xe5, 0x00, 0xe5, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0x84, 0x00, 0x84, 0x00, 0x57, 0x00, 0x57, 0x00, 0x28, 0x00, 0x28, 0x00, 0xf9, 0xff, 0xf9, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x42, 0xff, 0x42, 0xff, 0x2f, 0xff, 0x2f, 0xff, 0x23, 0xff, 0x23, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0x28, 0xff, 0x28, 0xff, 0x38, 0xff, 0x38, 0xff, 0x4e, 0xff, 0x4e, 0xff, 0x67, 0xff, 0x67, 0xff, 0x83, 0xff, 0x83, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0x10, 0x00, 0x10, 0x00, 0x36, 0x00, 0x36, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x9b, 0x00, 0x9b, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0xca, 0x00, 0xca, 0x00, 0xd7, 0x00, 0xd7, 0x00, 0xde, 0x00, 0xde, 0x00, 0xde, 0x00, 0xde, 0x00, 0xd6, 0x00, 0xd6, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0x95, 0x00, 0x95, 0x00, 0x73, 0x00, 0x73, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0xf0, 0xff, 0xf0, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x63, 0xff, 0x63, 0xff, 0x4d, 0xff, 0x4d, 0xff, 0x3d, 0xff, 0x3d, 0xff, 0x36, 0xff, 0x36, 0xff, 0x37, 0xff, 0x37, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x4e, 0xff, 0x4e, 0xff, 0x64, 0xff, 0x64, 0xff, 0x81, 0xff, 0x81, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xee, 0xff, 0xee, 0xff, 0x15, 0x00, 0x15, 0x00, 0x38, 0x00, 0x38, 0x00, 0x58, 0x00, 0x58, 0x00, 0x75, 0x00, 0x75, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x9b, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0xa6, 0x00, 0xae, 0x00, 0xae, 0x00, 0xb1, 0x00, 0xb1, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0xac, 0x00, 0xac, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x72, 0x00, 0x72, 0x00, 0x51, 0x00, 0x51, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x05, 0x00, 0xdc, 0xff, 0xdc, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0x87, 0xff, 0x87, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x3b, 0xff, 0x3b, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0xfb, 0xfe, 0xfb, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, 0x00, 0xff, 0x00, 0xff, 0x13, 0xff, 0x13, 0xff, 0x2e, 0xff, 0x2e, 0xff, 0x50, 0xff, 0x50, 0xff, 0x78, 0xff, 0x78, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xda, 0xff, 0xda, 0xff, 0x0d, 0x00, 0x0d, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x71, 0x00, 0x71, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xf1, 0x00, 0xf1, 0x00, 0x10, 0x01, 0x10, 0x01, 0x29, 0x01, 0x29, 0x01, 0x38, 0x01, 0x38, 0x01, 0x3f, 0x01, 0x3f, 0x01, 0x3e, 0x01, 0x3e, 0x01, 0x31, 0x01, 0x31, 0x01, 0x1c, 0x01, 0x1c, 0x01, 0x01, 0x01, 0x01, 0x01, 0xe3, 0x00, 0xe3, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0x75, 0x00, 0x75, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0xf7, 0xff, 0xf7, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xad, 0xff, 0xad, 0xff, 0x89, 0xff, 0x89, 0xff, 0x69, 0xff, 0x69, 0xff, 0x50, 0xff, 0x50, 0xff, 0x3c, 0xff, 0x3c, 0xff, 0x2e, 0xff, 0x2e, 0xff, 0x27, 0xff, 0x27, 0xff, 0x27, 0xff, 0x27, 0xff, 0x2f, 0xff, 0x2f, 0xff, 0x3c, 0xff, 0x3c, 0xff, 0x50, 0xff, 0x50, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x89, 0xff, 0x89, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0x01, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x41, 0x00, 0x41, 0x00, 0x44, 0x00, 0x44, 0x00, 0x41, 0x00, 0x41, 0x00, 0x39, 0x00, 0x39, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x16, 0x00, 0x16, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x69, 0xff, 0x69, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x53, 0xff, 0x53, 0xff, 0x53, 0xff, 0x53, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x68, 0xff, 0x68, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x95, 0xff, 0x95, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0x07, 0x00, 0x07, 0x00, 0x32, 0x00, 0x32, 0x00, 0x60, 0x00, 0x60, 0x00, 0x90, 0x00, 0x90, 0x00, 0xbf, 0x00, 0xbf, 0x00, 0xec, 0x00, 0xec, 0x00, 0x13, 0x01, 0x13, 0x01, 0x35, 0x01, 0x35, 0x01, 0x4f, 0x01, 0x4f, 0x01, 0x5f, 0x01, 0x5f, 0x01, 0x67, 0x01, 0x67, 0x01, 0x66, 0x01, 0x66, 0x01, 0x5b, 0x01, 0x5b, 0x01, 0x45, 0x01, 0x45, 0x01, 0x25, 0x01, 0x25, 0x01, 0xfe, 0x00, 0xfe, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x60, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x00, 0xdb, 0xff, 0xdb, 0xff, 0x95, 0xff, 0x95, 0xff, 0x52, 0xff, 0x52, 0xff, 0x12, 0xff, 0x12, 0xff, 0xd7, 0xfe, 0xd7, 0xfe, 0xa1, 0xfe, 0xa1, 0xfe, 0x78, 0xfe, 0x78, 0xfe, 0x5a, 0xfe, 0x5a, 0xfe, 0x46, 0xfe, 0x46, 0xfe, 0x3b, 0xfe, 0x3b, 0xfe, 0x3c, 0xfe, 0x3c, 0xfe, 0x4b, 0xfe, 0x4b, 0xfe, 0x65, 0xfe, 0x65, 0xfe, 0x8b, 0xfe, 0x8b, 0xfe, 0xbc, 0xfe, 0xbc, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, 0x35, 0xff, 0x35, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0x13, 0x00, 0x13, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xee, 0x00, 0xee, 0x00, 0x2c, 0x01, 0x2c, 0x01, 0x64, 0x01, 0x64, 0x01, 0x92, 0x01, 0x92, 0x01, 0xb6, 0x01, 0xb6, 0x01, 0xce, 0x01, 0xce, 0x01, 0xd9, 0x01, 0xd9, 0x01, 0xd7, 0x01, 0xd7, 0x01, 0xc8, 0x01, 0xc8, 0x01, 0xad, 0x01, 0xad, 0x01, 0x86, 0x01, 0x86, 0x01, 0x55, 0x01, 0x55, 0x01, 0x1a, 0x01, 0x1a, 0x01, 0xdb, 0x00, 0xdb, 0x00, 0x98, 0x00, 0x98, 0x00, 0x51, 0x00, 0x51, 0x00, 0x06, 0x00, 0x06, 0x00, 0xbb, 0xff, 0xbb, 0xff, 0x77, 0xff, 0x77, 0xff, 0x39, 0xff, 0x39, 0xff, 0x02, 0xff, 0x02, 0xff, 0xd0, 0xfe, 0xd0, 0xfe, 0xa5, 0xfe, 0xa5, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x66, 0xfe, 0x66, 0xfe, 0x55, 0xfe, 0x55, 0xfe, 0x52, 0xfe, 0x52, 0xfe, 0x59, 0xfe, 0x59, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, 0x87, 0xfe, 0x87, 0xfe, 0xab, 0xfe, 0xab, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, 0x0c, 0xff, 0x0c, 0xff, 0x4c, 0xff, 0x4c, 0xff, 0x91, 0xff, 0x91, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0x1b, 0x00, 0x1b, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xdb, 0x00, 0xdb, 0x00, 0x0c, 0x01, 0x0c, 0x01, 0x34, 0x01, 0x34, 0x01, 0x50, 0x01, 0x50, 0x01, 0x61, 0x01, 0x61, 0x01, 0x69, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6a, 0x01, 0x63, 0x01, 0x63, 0x01, 0x53, 0x01, 0x53, 0x01, 0x3c, 0x01, 0x3c, 0x01, 0x1e, 0x01, 0x1e, 0x01, 0xf8, 0x00, 0xf8, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x36, 0x00, 0x36, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0x90, 0xff, 0x90, 0xff, 0x5c, 0xff, 0x5c, 0xff, 0x2e, 0xff, 0x2e, 0xff, 0x08, 0xff, 0x08, 0xff, 0xe9, 0xfe, 0xe9, 0xfe, 0xd5, 0xfe, 0xd5, 0xfe, 0xcb, 0xfe, 0xcb, 0xfe, 0xc9, 0xfe, 0xc9, 0xfe, 0xce, 0xfe, 0xce, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, 0xec, 0xfe, 0xec, 0xfe, 0x05, 0xff, 0x05, 0xff, 0x27, 0xff, 0x27, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0xad, 0xff, 0xad, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0x15, 0x00, 0x15, 0x00, 0x47, 0x00, 0x47, 0x00, 0x76, 0x00, 0x76, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xe5, 0x00, 0xe5, 0x00, 0xff, 0x00, 0xff, 0x00, 0x14, 0x01, 0x14, 0x01, 0x20, 0x01, 0x20, 0x01, 0x24, 0x01, 0x24, 0x01, 0x1e, 0x01, 0x1e, 0x01, 0x11, 0x01, 0x11, 0x01, 0xfd, 0x00, 0xfd, 0x00, 0xe5, 0x00, 0xe5, 0x00, 0xca, 0x00, 0xca, 0x00, 0xac, 0x00, 0xac, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x66, 0x00, 0x66, 0x00, 0x40, 0x00, 0x40, 0x00, 0x19, 0x00, 0x19, 0x00, 0xf1, 0xff, 0xf1, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0x82, 0xff, 0x82, 0xff, 0x63, 0xff, 0x63, 0xff, 0x49, 0xff, 0x49, 0xff, 0x34, 0xff, 0x34, 0xff, 0x24, 0xff, 0x24, 0xff, 0x1a, 0xff, 0x1a, 0xff, 0x17, 0xff, 0x17, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x2a, 0xff, 0x2a, 0xff, 0x40, 0xff, 0x40, 0xff, 0x57, 0xff, 0x57, 0xff, 0x70, 0xff, 0x70, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xca, 0xff, 0xca, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0x05, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x36, 0x00, 0x36, 0x00, 0x48, 0x00, 0x48, 0x00, 0x57, 0x00, 0x57, 0x00, 0x62, 0x00, 0x62, 0x00, 0x68, 0x00, 0x68, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x66, 0x00, 0x66, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x54, 0x00, 0x54, 0x00, 0x49, 0x00, 0x49, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x33, 0x00, 0x33, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x11, 0x00, 0x11, 0x00, 0x07, 0x00, 0x07, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0x01, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x15, 0x00, 0x15, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x24, 0x00, 0x24, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x29, 0x00, 0x29, 0x00, 0x26, 0x00, 0x26, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x02, 0x00, 0xf6, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x14, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x21, 0x00, 0x21, 0x00, 0x23, 0x00, 0x23, 0x00, 0x24, 0x00, 0x24, 0x00, 0x23, 0x00, 0x23, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x03, 0x00, 0xf9, 0xff, 0xf9, 0xff, 0xed, 0xff, 0xed, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xce, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x17, 0x00, 0x17, 0x00, 0x25, 0x00, 0x25, 0x00, 0x32, 0x00, 0x32, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x47, 0x00, 0x47, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x56, 0x00, 0x56, 0x00, 0x59, 0x00, 0x59, 0x00, 0x58, 0x00, 0x58, 0x00, 0x54, 0x00, 0x54, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x41, 0x00, 0x41, 0x00, 0x31, 0x00, 0x31, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x06, 0x00, 0x06, 0x00, 0xef, 0xff, 0xef, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x79, 0xff, 0x79, 0xff, 0x6d, 0xff, 0x6d, 0xff, 0x67, 0xff, 0x67, 0xff, 0x66, 0xff, 0x66, 0xff, 0x68, 0xff, 0x68, 0xff, 0x70, 0xff, 0x70, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x88, 0xff, 0x88, 0xff, 0x99, 0xff, 0x99, 0xff, 0xae, 0xff, 0xae, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1c, 0x00, 0x1c, 0x00, 0x39, 0x00, 0x39, 0x00, 0x54, 0x00, 0x54, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x87, 0x00, 0x87, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xb3, 0x00, 0xb3, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xba, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0xb3, 0x00, 0xb3, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0x99, 0x00, 0x99, 0x00, 0x80, 0x00, 0x80, 0x00, 0x64, 0x00, 0x64, 0x00, 0x45, 0x00, 0x45, 0x00, 0x22, 0x00, 0x22, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0x96, 0xff, 0x96, 0xff, 0x79, 0xff, 0x79, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x47, 0xff, 0x47, 0xff, 0x34, 0xff, 0x34, 0xff, 0x2a, 0xff, 0x2a, 0xff, 0x26, 0xff, 0x26, 0xff, 0x27, 0xff, 0x27, 0xff, 0x2f, 0xff, 0x2f, 0xff, 0x3b, 0xff, 0x3b, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x60, 0xff, 0x60, 0xff, 0x79, 0xff, 0x79, 0xff, 0x96, 0xff, 0x96, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x15, 0x00, 0x27, 0x00, 0x27, 0x00, 0x35, 0x00, 0x35, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x47, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x48, 0x00, 0x48, 0x00, 0x45, 0x00, 0x45, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x35, 0x00, 0x35, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x28, 0x00, 0x28, 0x00, 0x20, 0x00, 0x20, 0x00, 0x19, 0x00, 0x19, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xed, 0xff, 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x40, 0x00, 0x40, 0x00, 0x52, 0x00, 0x52, 0x00, 0x63, 0x00, 0x63, 0x00, 0x70, 0x00, 0x70, 0x00, 0x79, 0x00, 0x79, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x83, 0x00, 0x83, 0x00, 0x80, 0x00, 0x80, 0x00, 0x76, 0x00, 0x76, 0x00, 0x66, 0x00, 0x66, 0x00, 0x51, 0x00, 0x51, 0x00, 0x38, 0x00, 0x38, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0x91, 0xff, 0x91, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x68, 0xff, 0x68, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x4e, 0xff, 0x4e, 0xff, 0x46, 0xff, 0x46, 0xff, 0x43, 0xff, 0x43, 0xff, 0x44, 0xff, 0x44, 0xff, 0x49, 0xff, 0x49, 0xff, 0x52, 0xff, 0x52, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x81, 0xff, 0x81, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xda, 0xff, 0xda, 0xff, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x27, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x74, 0x00, 0x74, 0x00, 0x98, 0x00, 0x98, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0xd4, 0x00, 0xd4, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0xf6, 0x00, 0xf6, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xf7, 0x00, 0xf7, 0x00, 0xed, 0x00, 0xed, 0x00, 0xdc, 0x00, 0xdc, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x51, 0x00, 0x51, 0x00, 0x24, 0x00, 0x24, 0x00, 0xf6, 0xff, 0xf6, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x79, 0xff, 0x79, 0xff, 0x57, 0xff, 0x57, 0xff, 0x38, 0xff, 0x38, 0xff, 0x1e, 0xff, 0x1e, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0xfa, 0xfe, 0xfa, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe, 0xf0, 0xfe, 0xf0, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, 0x02, 0xff, 0x02, 0xff, 0x13, 0xff, 0x13, 0xff, 0x2a, 0xff, 0x2a, 0xff, 0x47, 0xff, 0x47, 0xff, 0x67, 0xff, 0x67, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0xae, 0xff, 0xae, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2c, 0x00, 0x2c, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x84, 0x00, 0x84, 0x00, 0xad, 0x00, 0xad, 0x00, 0xd1, 0x00, 0xd1, 0x00, 0xf1, 0x00, 0xf1, 0x00, 0x0d, 0x01, 0x0d, 0x01, 0x23, 0x01, 0x23, 0x01, 0x34, 0x01, 0x34, 0x01, 0x3d, 0x01, 0x3d, 0x01, 0x3f, 0x01, 0x3f, 0x01, 0x3b, 0x01, 0x3b, 0x01, 0x30, 0x01, 0x30, 0x01, 0x1d, 0x01, 0x1d, 0x01, 0x03, 0x01, 0x03, 0x01, 0xe4, 0x00, 0xe4, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0x78, 0x00, 0x78, 0x00, 0x50, 0x00, 0x50, 0x00, 0x26, 0x00, 0x26, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xad, 0xff, 0xad, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x6b, 0xff, 0x6b, 0xff, 0x50, 0xff, 0x50, 0xff, 0x36, 0xff, 0x36, 0xff, 0x20, 0xff, 0x20, 0xff, 0x0d, 0xff, 0x0d, 0xff, 0x00, 0xff, 0x00, 0xff, 0xf8, 0xfe, 0xf8, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, 0x05, 0xff, 0x05, 0xff, 0x12, 0xff, 0x12, 0xff, 0x24, 0xff, 0x24, 0xff, 0x3b, 0xff, 0x3b, 0xff, 0x59, 0xff, 0x59, 0xff, 0x78, 0xff, 0x78, 0xff, 0x99, 0xff, 0x99, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0x03, 0x00, 0x03, 0x00, 0x26, 0x00, 0x26, 0x00, 0x48, 0x00, 0x48, 0x00, 0x65, 0x00, 0x65, 0x00, 0x80, 0x00, 0x80, 0x00, 0x96, 0x00, 0x96, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xc7, 0x00, 0xc7, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xbf, 0x00, 0xbf, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x68, 0x00, 0x68, 0x00, 0x54, 0x00, 0x54, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x25, 0x00, 0x25, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0xff, 0xf8, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xce, 0xff, 0xce, 0xff, 0xba, 0xff, 0xba, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0x95, 0xff, 0x95, 0xff, 0x85, 0xff, 0x85, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x75, 0xff, 0x75, 0xff, 0x72, 0xff, 0x72, 0xff, 0x70, 0xff, 0x70, 0xff, 0x72, 0xff, 0x72, 0xff, 0x78, 0xff, 0x78, 0xff, 0x81, 0xff, 0x81, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x97, 0xff, 0x97, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0x0d, 0x00, 0x0d, 0x00, 0x20, 0x00, 0x20, 0x00, 0x34, 0x00, 0x34, 0x00, 0x48, 0x00, 0x48, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x99, 0x00, 0x99, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0xa6, 0x00, 0xa6, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x93, 0x00, 0x93, 0x00, 0x86, 0x00, 0x86, 0x00, 0x77, 0x00, 0x77, 0x00, 0x67, 0x00, 0x67, 0x00, 0x55, 0x00, 0x55, 0x00, 0x41, 0x00, 0x41, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x15, 0x00, 0x15, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0x85, 0xff, 0x85, 0xff, 0x72, 0xff, 0x72, 0xff, 0x61, 0xff, 0x61, 0xff, 0x53, 0xff, 0x53, 0xff, 0x48, 0xff, 0x48, 0xff, 0x40, 0xff, 0x40, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x37, 0xff, 0x37, 0xff, 0x38, 0xff, 0x38, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x4c, 0xff, 0x4c, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x76, 0xff, 0x76, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xba, 0xff, 0xba, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0x0f, 0x00, 0x0f, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x67, 0x00, 0x67, 0x00, 0x80, 0x00, 0x80, 0x00, 0x97, 0x00, 0x97, 0x00, 0xae, 0x00, 0xae, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xd8, 0x00, 0xd8, 0x00, 0xe4, 0x00, 0xe4, 0x00, 0xea, 0x00, 0xea, 0x00, 0xee, 0x00, 0xee, 0x00, 0xee, 0x00, 0xee, 0x00, 0xe8, 0x00, 0xe8, 0x00, 0xde, 0x00, 0xde, 0x00, 0xce, 0x00, 0xce, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0x81, 0x00, 0x81, 0x00, 0x62, 0x00, 0x62, 0x00, 0x40, 0x00, 0x40, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x83, 0xff, 0x83, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x53, 0xff, 0x53, 0xff, 0x40, 0xff, 0x40, 0xff, 0x2f, 0xff, 0x2f, 0xff, 0x23, 0xff, 0x23, 0xff, 0x1b, 0xff, 0x1b, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1b, 0xff, 0x1b, 0xff, 0x20, 0xff, 0x20, 0xff, 0x2b, 0xff, 0x2b, 0xff, 0x3b, 0xff, 0x3b, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x64, 0xff, 0x64, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x96, 0xff, 0x96, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0x01, 0x00, 0x01, 0x00, 0x26, 0x00, 0x26, 0x00, 0x46, 0x00, 0x46, 0x00, 0x62, 0x00, 0x62, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x92, 0x00, 0x92, 0x00, 0xa6, 0x00, 0xa6, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xbd, 0x00, 0xbd, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xc1, 0x00, 0xc1, 0x00, 0xba, 0x00, 0xba, 0x00, 0xad, 0x00, 0xad, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x78, 0x00, 0x78, 0x00, 0x63, 0x00, 0x63, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x39, 0x00, 0x39, 0x00, 0x24, 0x00, 0x24, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf9, 0xff, 0xf9, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0x97, 0xff, 0x97, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x82, 0xff, 0x82, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0x80, 0xff, 0x80, 0xff, 0x86, 0xff, 0x86, 0xff, 0x90, 0xff, 0x90, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x04, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x14, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x15, 0x00, 0x15, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x25, 0x00, 0x25, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x34, 0x00, 0x34, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x47, 0x00, 0x47, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x46, 0x00, 0x46, 0x00, 0x40, 0x00, 0x40, 0x00, 0x37, 0x00, 0x37, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x25, 0x00, 0x25, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x11, 0x00, 0x11, 0x00, 0x06, 0x00, 0x06, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0x98, 0xff, 0x98, 0xff, 0x95, 0xff, 0x95, 0xff, 0x98, 0xff, 0x98, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x18, 0x00, 0x24, 0x00, 0x24, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x56, 0x00, 0x56, 0x00, 0x60, 0x00, 0x60, 0x00, 0x65, 0x00, 0x65, 0x00, 0x69, 0x00, 0x69, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x68, 0x00, 0x68, 0x00, 0x66, 0x00, 0x66, 0x00, 0x63, 0x00, 0x63, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x51, 0x00, 0x51, 0x00, 0x46, 0x00, 0x46, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x21, 0x00, 0x21, 0x00, 0x13, 0x00, 0x13, 0x00, 0x07, 0x00, 0x07, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xad, 0xff, 0xad, 0xff, 0xac, 0xff, 0xac, 0xff, 0xac, 0xff, 0xac, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0x06, 0x00, 0x06, 0x00, 0x14, 0x00, 0x14, 0x00, 0x23, 0x00, 0x23, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x57, 0x00, 0x57, 0x00, 0x61, 0x00, 0x61, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x76, 0x00, 0x76, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x83, 0x00, 0x83, 0x00, 0x85, 0x00, 0x85, 0x00, 0x82, 0x00, 0x82, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x75, 0x00, 0x75, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x61, 0x00, 0x61, 0x00, 0x54, 0x00, 0x54, 0x00, 0x46, 0x00, 0x46, 0x00, 0x36, 0x00, 0x36, 0x00, 0x26, 0x00, 0x26, 0x00, 0x15, 0x00, 0x15, 0x00, 0x05, 0x00, 0x05, 0x00, 0xf4, 0xff, 0xf4, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xce, 0xff, 0xce, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xad, 0xff, 0xad, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xad, 0xff, 0xad, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0x05, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x18, 0x00, 0x18, 0x00, 0x21, 0x00, 0x21, 0x00, 0x24, 0x00, 0x24, 0x00, 0x23, 0x00, 0x23, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x16, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x04, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xca, 0xff, 0xca, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0x07, 0x00, 0x07, 0x00, 0x19, 0x00, 0x19, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x66, 0x00, 0x66, 0x00, 0x72, 0x00, 0x72, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x82, 0x00, 0x82, 0x00, 0x86, 0x00, 0x86, 0x00, 0x89, 0x00, 0x89, 0x00, 0x89, 0x00, 0x89, 0x00, 0x87, 0x00, 0x87, 0x00, 0x83, 0x00, 0x83, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x77, 0x00, 0x77, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x35, 0x00, 0x35, 0x00, 0x20, 0x00, 0x20, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0xf4, 0xff, 0xf4, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0x98, 0xff, 0x98, 0xff, 0x81, 0xff, 0x81, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x52, 0xff, 0x52, 0xff, 0x3d, 0xff, 0x3d, 0xff, 0x2b, 0xff, 0x2b, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0x17, 0xff, 0x17, 0xff, 0x16, 0xff, 0x16, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x27, 0xff, 0x27, 0xff, 0x37, 0xff, 0x37, 0xff, 0x48, 0xff, 0x48, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x78, 0xff, 0x78, 0xff, 0x96, 0xff, 0x96, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0x10, 0x00, 0x10, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x47, 0x00, 0x47, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x73, 0x00, 0x73, 0x00, 0x85, 0x00, 0x85, 0x00, 0x93, 0x00, 0x93, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0xab, 0x00, 0xab, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xba, 0x00, 0xba, 0x00, 0xbb, 0x00, 0xbb, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x77, 0x00, 0x77, 0x00, 0x61, 0x00, 0x61, 0x00, 0x49, 0x00, 0x49, 0x00, 0x30, 0x00, 0x30, 0x00, 0x14, 0x00, 0x14, 0x00, 0xf9, 0xff, 0xf9, 0xff, 0xde, 0xff, 0xde, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x92, 0xff, 0x92, 0xff, 0x87, 0xff, 0x87, 0xff, 0x80, 0xff, 0x80, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x85, 0xff, 0x85, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x98, 0xff, 0x98, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0x06, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16, 0x00, 0x24, 0x00, 0x24, 0x00, 0x32, 0x00, 0x32, 0x00, 0x40, 0x00, 0x40, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x58, 0x00, 0x58, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x61, 0x00, 0x61, 0x00, 0x61, 0x00, 0x61, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x57, 0x00, 0x57, 0x00, 0x52, 0x00, 0x52, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x44, 0x00, 0x44, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x22, 0x00, 0x22, 0x00, 0x15, 0x00, 0x15, 0x00, 0x08, 0x00, 0x08, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xed, 0xff, 0xed, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xce, 0xff, 0xce, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0x97, 0xff, 0x97, 0xff, 0x96, 0xff, 0x96, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xad, 0xff, 0xad, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0x0c, 0x00, 0x0c, 0x00, 0x23, 0x00, 0x23, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x51, 0x00, 0x51, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x83, 0x00, 0x83, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0xae, 0x00, 0xae, 0x00, 0xbd, 0x00, 0xbd, 0x00, 0xca, 0x00, 0xca, 0x00, 0xd3, 0x00, 0xd3, 0x00, 0xd9, 0x00, 0xd9, 0x00, 0xda, 0x00, 0xda, 0x00, 0xd6, 0x00, 0xd6, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x71, 0x00, 0x71, 0x00, 0x52, 0x00, 0x52, 0x00, 0x32, 0x00, 0x32, 0x00, 0x11, 0x00, 0x11, 0x00, 0xef, 0xff, 0xef, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0x84, 0xff, 0x84, 0xff, 0x63, 0xff, 0x63, 0xff, 0x43, 0xff, 0x43, 0xff, 0x26, 0xff, 0x26, 0xff, 0x0d, 0xff, 0x0d, 0xff, 0xf6, 0xfe, 0xf6, 0xfe, 0xe6, 0xfe, 0xe6, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xd4, 0xfe, 0xd4, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xe9, 0xfe, 0xe9, 0xfe, 0xfd, 0xfe, 0xfd, 0xfe, 0x17, 0xff, 0x17, 0xff, 0x34, 0xff, 0x34, 0xff, 0x56, 0xff, 0x56, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xce, 0xff, 0xce, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x25, 0x00, 0x25, 0x00, 0x50, 0x00, 0x50, 0x00, 0x78, 0x00, 0x78, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xf9, 0x00, 0xf9, 0x00, 0x0a, 0x01, 0x0a, 0x01, 0x16, 0x01, 0x16, 0x01, 0x1a, 0x01, 0x1a, 0x01, 0x18, 0x01, 0x18, 0x01, 0x13, 0x01, 0x13, 0x01, 0x07, 0x01, 0x07, 0x01, 0xf6, 0x00, 0xf6, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xab, 0x00, 0xab, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x62, 0x00, 0x62, 0x00, 0x37, 0x00, 0x37, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0xe1, 0xff, 0xe1, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0x98, 0xff, 0x98, 0xff, 0x78, 0xff, 0x78, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x29, 0xff, 0x29, 0xff, 0x18, 0xff, 0x18, 0xff, 0x0c, 0xff, 0x0c, 0xff, 0x04, 0xff, 0x04, 0xff, 0x02, 0xff, 0x02, 0xff, 0x08, 0xff, 0x08, 0xff, 0x17, 0xff, 0x17, 0xff, 0x2a, 0xff, 0x2a, 0xff, 0x40, 0xff, 0x40, 0xff, 0x58, 0xff, 0x58, 0xff, 0x73, 0xff, 0x73, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0xab, 0xff, 0xab, 0xff, 0xca, 0xff, 0xca, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0x08, 0x00, 0x08, 0x00, 0x25, 0x00, 0x25, 0x00, 0x43, 0x00, 0x43, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x75, 0x00, 0x75, 0x00, 0x89, 0x00, 0x89, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xc7, 0x00, 0xc7, 0x00, 0xca, 0x00, 0xca, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0x94, 0x00, 0x94, 0x00, 0x82, 0x00, 0x82, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x54, 0x00, 0x54, 0x00, 0x39, 0x00, 0x39, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x01, 0x00, 0x01, 0x00, 0xe2, 0xff, 0xe2, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0x85, 0xff, 0x85, 0xff, 0x68, 0xff, 0x68, 0xff, 0x4c, 0xff, 0x4c, 0xff, 0x34, 0xff, 0x34, 0xff, 0x21, 0xff, 0x21, 0xff, 0x13, 0xff, 0x13, 0xff, 0x08, 0xff, 0x08, 0xff, 0x03, 0xff, 0x03, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0xff, 0x00, 0xff, 0x03, 0xff, 0x03, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x15, 0xff, 0x15, 0xff, 0x23, 0xff, 0x23, 0xff, 0x36, 0xff, 0x36, 0xff, 0x4d, 0xff, 0x4d, 0xff, 0x68, 0xff, 0x68, 0xff, 0x85, 0xff, 0x85, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0x0a, 0x00, 0x0a, 0x00, 0x32, 0x00, 0x32, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x85, 0x00, 0x85, 0x00, 0xac, 0x00, 0xac, 0x00, 0xce, 0x00, 0xce, 0x00, 0xed, 0x00, 0xed, 0x00, 0x0b, 0x01, 0x0b, 0x01, 0x27, 0x01, 0x27, 0x01, 0x41, 0x01, 0x41, 0x01, 0x57, 0x01, 0x57, 0x01, 0x66, 0x01, 0x66, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0x66, 0x01, 0x66, 0x01, 0x59, 0x01, 0x59, 0x01, 0x48, 0x01, 0x48, 0x01, 0x31, 0x01, 0x31, 0x01, 0x16, 0x01, 0x16, 0x01, 0xf5, 0x00, 0xf5, 0x00, 0xcd, 0x00, 0xcd, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0x74, 0x00, 0x74, 0x00, 0x43, 0x00, 0x43, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xda, 0xff, 0xda, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0x74, 0xff, 0x74, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x0b, 0xff, 0x0b, 0xff, 0xdd, 0xfe, 0xdd, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0x95, 0xfe, 0x95, 0xfe, 0x77, 0xfe, 0x77, 0xfe, 0x5f, 0xfe, 0x5f, 0xfe, 0x4e, 0xfe, 0x4e, 0xfe, 0x43, 0xfe, 0x43, 0xfe, 0x3d, 0xfe, 0x3d, 0xfe, 0x41, 0xfe, 0x41, 0xfe, 0x4c, 0xfe, 0x4c, 0xfe, 0x5f, 0xfe, 0x5f, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, 0x9e, 0xfe, 0x9e, 0xfe, 0xcb, 0xfe, 0xcb, 0xfe, 0xfc, 0xfe, 0xfc, 0xfe, 0x31, 0xff, 0x31, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0x27, 0x00, 0x27, 0x00, 0x65, 0x00, 0x65, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xdc, 0x00, 0xdc, 0x00, 0x12, 0x01, 0x12, 0x01, 0x43, 0x01, 0x43, 0x01, 0x6d, 0x01, 0x6d, 0x01, 0x8e, 0x01, 0x8e, 0x01, 0xa9, 0x01, 0xa9, 0x01, 0xbe, 0x01, 0xbe, 0x01, 0xcb, 0x01, 0xcb, 0x01, 0xd0, 0x01, 0xd0, 0x01, 0xcd, 0x01, 0xcd, 0x01, 0xc1, 0x01, 0xc1, 0x01, 0xad, 0x01, 0xad, 0x01, 0x91, 0x01, 0x91, 0x01, 0x6d, 0x01, 0x6d, 0x01, 0x42, 0x01, 0x42, 0x01, 0x11, 0x01, 0x11, 0x01, 0xda, 0x00, 0xda, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0x66, 0x00, 0x66, 0x00, 0x29, 0x00, 0x29, 0x00, 0xee, 0xff, 0xee, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x45, 0xff, 0x45, 0xff, 0x14, 0xff, 0x14, 0xff, 0xea, 0xfe, 0xea, 0xfe, 0xc8, 0xfe, 0xc8, 0xfe, 0xad, 0xfe, 0xad, 0xfe, 0x9d, 0xfe, 0x9d, 0xfe, 0x94, 0xfe, 0x94, 0xfe, 0x8f, 0xfe, 0x8f, 0xfe, 0x91, 0xfe, 0x91, 0xfe, 0x9e, 0xfe, 0x9e, 0xfe, 0xb4, 0xfe, 0xb4, 0xfe, 0xcd, 0xfe, 0xcd, 0xfe, 0xeb, 0xfe, 0xeb, 0xfe, 0x0c, 0xff, 0x0c, 0xff, 0x30, 0xff, 0x30, 0xff, 0x55, 0xff, 0x55, 0xff, 0x79, 0xff, 0x79, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0x1c, 0x00, 0x1c, 0x00, 0x45, 0x00, 0x45, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0xa5, 0x00, 0xa5, 0x00, 0xbb, 0x00, 0xbb, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xd8, 0x00, 0xd8, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xdc, 0x00, 0xdc, 0x00, 0xd4, 0x00, 0xd4, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xba, 0x00, 0xba, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0x95, 0x00, 0x95, 0x00, 0x80, 0x00, 0x80, 0x00, 0x69, 0x00, 0x69, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x37, 0x00, 0x37, 0x00, 0x22, 0x00, 0x22, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xee, 0xff, 0xee, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xde, 0xff, 0xde, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xee, 0xff, 0xee, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0x02, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x10, 0x00, 0x15, 0x00, 0x15, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x20, 0x00, 0x23, 0x00, 0x23, 0x00, 0x25, 0x00, 0x25, 0x00, 0x23, 0x00, 0x23, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x14, 0x00, 0x14, 0x00, 0x09, 0x00, 0x09, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xed, 0xff, 0xed, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0x01, 0x00, 0x01, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x11, 0x00, 0x19, 0x00, 0x19, 0x00, 0x21, 0x00, 0x21, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x35, 0x00, 0x35, 0x00, 0x40, 0x00, 0x40, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x54, 0x00, 0x54, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x66, 0x00, 0x66, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x76, 0x00, 0x76, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x81, 0x00, 0x81, 0x00, 0x80, 0x00, 0x80, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x74, 0x00, 0x74, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x63, 0x00, 0x63, 0x00, 0x57, 0x00, 0x57, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x39, 0x00, 0x39, 0x00, 0x28, 0x00, 0x28, 0x00, 0x14, 0x00, 0x14, 0x00, 0x01, 0x00, 0x01, 0x00, 0xef, 0xff, 0xef, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x97, 0xff, 0x97, 0xff, 0x92, 0xff, 0x92, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x88, 0xff, 0x88, 0xff, 0x84, 0xff, 0x84, 0xff, 0x83, 0xff, 0x83, 0xff, 0x84, 0xff, 0x84, 0xff, 0x89, 0xff, 0x89, 0xff, 0x92, 0xff, 0x92, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0xab, 0xff, 0xab, 0xff, 0xba, 0xff, 0xba, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0x0e, 0x00, 0x0e, 0x00, 0x21, 0x00, 0x21, 0x00, 0x33, 0x00, 0x33, 0x00, 0x42, 0x00, 0x42, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x58, 0x00, 0x58, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x60, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x52, 0x00, 0x52, 0x00, 0x47, 0x00, 0x47, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x30, 0x00, 0x30, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x04, 0x00, 0x04, 0x00, 0xf5, 0xff, 0xf5, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xca, 0xff, 0xca, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xae, 0xff, 0xae, 0xff, 0xad, 0xff, 0xad, 0xff, 0xae, 0xff, 0xae, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x0a, 0x00, 0x0a, 0x00, 0x15, 0x00, 0x15, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x28, 0x00, 0x28, 0x00, 0x31, 0x00, 0x31, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x46, 0x00, 0x46, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x34, 0x00, 0x34, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x20, 0x00, 0x20, 0x00, 0x14, 0x00, 0x14, 0x00, 0x06, 0x00, 0x06, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xca, 0xff, 0xca, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xda, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x03, 0x00, 0x03, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x22, 0x00, 0x22, 0x00, 0x29, 0x00, 0x29, 0x00, 0x32, 0x00, 0x32, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x45, 0x00, 0x45, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x49, 0x00, 0x49, 0x00, 0x44, 0x00, 0x44, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x32, 0x00, 0x32, 0x00, 0x23, 0x00, 0x23, 0x00, 0x10, 0x00, 0x10, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xad, 0xff, 0xad, 0xff, 0xac, 0xff, 0xac, 0xff, 0xab, 0xff, 0xab, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xae, 0xff, 0xae, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0x06, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x35, 0x00, 0x35, 0x00, 0x46, 0x00, 0x46, 0x00, 0x54, 0x00, 0x54, 0x00, 0x62, 0x00, 0x62, 0x00, 0x73, 0x00, 0x73, 0x00, 0x81, 0x00, 0x81, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x92, 0x00, 0x92, 0x00, 0x91, 0x00, 0x91, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0x85, 0x00, 0x85, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x71, 0x00, 0x71, 0x00, 0x62, 0x00, 0x62, 0x00, 0x51, 0x00, 0x51, 0x00, 0x41, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x07, 0x00, 0x07, 0x00, 0xf0, 0xff, 0xf0, 0xff, 0xda, 0xff, 0xda, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0x91, 0xff, 0x91, 0xff, 0x83, 0xff, 0x83, 0xff, 0x77, 0xff, 0x77, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x67, 0xff, 0x67, 0xff, 0x62, 0xff, 0x62, 0xff, 0x63, 0xff, 0x63, 0xff, 0x69, 0xff, 0x69, 0xff, 0x6f, 0xff, 0x6f, 0xff, 0x76, 0xff, 0x76, 0xff, 0x80, 0xff, 0x80, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xed, 0xff, 0xed, 0xff, 0x06, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x32, 0x00, 0x32, 0x00, 0x44, 0x00, 0x44, 0x00, 0x55, 0x00, 0x55, 0x00, 0x67, 0x00, 0x67, 0x00, 0x78, 0x00, 0x78, 0x00, 0x86, 0x00, 0x86, 0x00, 0x91, 0x00, 0x91, 0x00, 0x98, 0x00, 0x98, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0x93, 0x00, 0x93, 0x00, 0x85, 0x00, 0x85, 0x00, 0x76, 0x00, 0x76, 0x00, 0x65, 0x00, 0x65, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x38, 0x00, 0x38, 0x00, 0x20, 0x00, 0x20, 0x00, 0x07, 0x00, 0x07, 0x00, 0xec, 0xff, 0xec, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0x99, 0xff, 0x99, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x89, 0xff, 0x89, 0xff, 0x85, 0xff, 0x85, 0xff, 0x81, 0xff, 0x81, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x80, 0xff, 0x80, 0xff, 0x85, 0xff, 0x85, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x95, 0xff, 0x95, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xad, 0xff, 0xad, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xde, 0xff, 0xde, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0x05, 0x00, 0x05, 0x00, 0x18, 0x00, 0x18, 0x00, 0x28, 0x00, 0x28, 0x00, 0x36, 0x00, 0x36, 0x00, 0x43, 0x00, 0x43, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x58, 0x00, 0x58, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x63, 0x00, 0x63, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x66, 0x00, 0x66, 0x00, 0x63, 0x00, 0x63, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x57, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x48, 0x00, 0x48, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x36, 0x00, 0x36, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0x07, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x14, 0x00, 0x14, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x22, 0x00, 0x22, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x33, 0x00, 0x33, 0x00, 0x39, 0x00, 0x39, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x44, 0x00, 0x44, 0x00, 0x46, 0x00, 0x46, 0x00, 0x44, 0x00, 0x44, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x34, 0x00, 0x34, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 0x16, 0x00, 0x16, 0x00, 0x09, 0x00, 0x09, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xad, 0xff, 0xad, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0x6f, 0xff, 0x6f, 0xff, 0x66, 0xff, 0x66, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x65, 0xff, 0x65, 0xff, 0x70, 0xff, 0x70, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xba, 0xff, 0xba, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xee, 0xff, 0xee, 0xff, 0x0e, 0x00, 0x0e, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x68, 0x00, 0x68, 0x00, 0x83, 0x00, 0x83, 0x00, 0x99, 0x00, 0x99, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xb8, 0x00, 0xb8, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xc8, 0x00, 0xc8, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x75, 0x00, 0x75, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x40, 0x00, 0x40, 0x00, 0x23, 0x00, 0x23, 0x00, 0x06, 0x00, 0x06, 0x00, 0xe6, 0xff, 0xe6, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x74, 0xff, 0x74, 0xff, 0x60, 0xff, 0x60, 0xff, 0x51, 0xff, 0x51, 0xff, 0x48, 0xff, 0x48, 0xff, 0x44, 0xff, 0x44, 0xff, 0x43, 0xff, 0x43, 0xff, 0x48, 0xff, 0x48, 0xff, 0x53, 0xff, 0x53, 0xff, 0x65, 0xff, 0x65, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x95, 0xff, 0x95, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x19, 0x00, 0x30, 0x00, 0x30, 0x00, 0x45, 0x00, 0x45, 0x00, 0x55, 0x00, 0x55, 0x00, 0x63, 0x00, 0x63, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x72, 0x00, 0x70, 0x00, 0x70, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x60, 0x00, 0x60, 0x00, 0x55, 0x00, 0x55, 0x00, 0x48, 0x00, 0x48, 0x00, 0x38, 0x00, 0x38, 0x00, 0x27, 0x00, 0x27, 0x00, 0x16, 0x00, 0x16, 0x00, 0x03, 0x00, 0x03, 0x00, 0xed, 0xff, 0xed, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0x97, 0xff, 0x97, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x84, 0xff, 0x84, 0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0xff, 0x86, 0xff, 0x86, 0xff, 0x90, 0xff, 0x90, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0x01, 0x00, 0x01, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x51, 0x00, 0x51, 0x00, 0x67, 0x00, 0x67, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0xae, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0x98, 0x00, 0x98, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x57, 0x00, 0x57, 0x00, 0x41, 0x00, 0x41, 0x00, 0x26, 0x00, 0x26, 0x00, 0x09, 0x00, 0x09, 0x00, 0xee, 0xff, 0xee, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0x93, 0xff, 0x93, 0xff, 0x81, 0xff, 0x81, 0xff, 0x73, 0xff, 0x73, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x64, 0xff, 0x64, 0xff, 0x62, 0xff, 0x62, 0xff, 0x66, 0xff, 0x66, 0xff, 0x73, 0xff, 0x73, 0xff, 0x85, 0xff, 0x85, 0xff, 0x99, 0xff, 0x99, 0xff, 0xae, 0xff, 0xae, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xde, 0xff, 0xde, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0x12, 0x00, 0x12, 0x00, 0x29, 0x00, 0x29, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x66, 0x00, 0x66, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x64, 0x00, 0x64, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x52, 0x00, 0x52, 0x00, 0x44, 0x00, 0x44, 0x00, 0x33, 0x00, 0x33, 0x00, 0x20, 0x00, 0x20, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0xf3, 0xff, 0xf3, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0x99, 0xff, 0x99, 0xff, 0x86, 0xff, 0x86, 0xff, 0x75, 0xff, 0x75, 0xff, 0x68, 0xff, 0x68, 0xff, 0x60, 0xff, 0x60, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x62, 0xff, 0x62, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x74, 0xff, 0x74, 0xff, 0x82, 0xff, 0x82, 0xff, 0x92, 0xff, 0x92, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0x02, 0x00, 0x02, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x41, 0x00, 0x41, 0x00, 0x52, 0x00, 0x52, 0x00, 0x64, 0x00, 0x64, 0x00, 0x77, 0x00, 0x77, 0x00, 0x88, 0x00, 0x88, 0x00, 0x97, 0x00, 0x97, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xb8, 0x00, 0xb8, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0x9b, 0x00, 0x9b, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x76, 0x00, 0x76, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x45, 0x00, 0x45, 0x00, 0x29, 0x00, 0x29, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0xf2, 0xff, 0xf2, 0xff, 0xda, 0xff, 0xda, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x77, 0xff, 0x77, 0xff, 0x62, 0xff, 0x62, 0xff, 0x50, 0xff, 0x50, 0xff, 0x41, 0xff, 0x41, 0xff, 0x34, 0xff, 0x34, 0xff, 0x29, 0xff, 0x29, 0xff, 0x1e, 0xff, 0x1e, 0xff, 0x19, 0xff, 0x19, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x23, 0xff, 0x23, 0xff, 0x30, 0xff, 0x30, 0xff, 0x43, 0xff, 0x43, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x75, 0xff, 0x75, 0xff, 0x91, 0xff, 0x91, 0xff, 0xad, 0xff, 0xad, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0x0c, 0x00, 0x0c, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x97, 0x00, 0x97, 0x00, 0xab, 0x00, 0xab, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xca, 0x00, 0xca, 0x00, 0xd4, 0x00, 0xd4, 0x00, 0xda, 0x00, 0xda, 0x00, 0xde, 0x00, 0xde, 0x00, 0xdd, 0x00, 0xdd, 0x00, 0xd8, 0x00, 0xd8, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0x97, 0x00, 0x97, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x64, 0x00, 0x64, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x12, 0x00, 0x12, 0x00, 0xf6, 0xff, 0xf6, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x79, 0xff, 0x79, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x61, 0xff, 0x61, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x59, 0xff, 0x59, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x60, 0xff, 0x60, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x75, 0xff, 0x75, 0xff, 0x84, 0xff, 0x84, 0xff, 0x96, 0xff, 0x96, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xec, 0xff, 0xec, 0xff, 0x04, 0x00, 0x04, 0x00, 0x19, 0x00, 0x19, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x48, 0x00, 0x48, 0x00, 0x52, 0x00, 0x52, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x61, 0x00, 0x61, 0x00, 0x68, 0x00, 0x68, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x72, 0x00, 0x72, 0x00, 0x72, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x67, 0x00, 0x67, 0x00, 0x63, 0x00, 0x63, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x52, 0x00, 0x52, 0x00, 0x48, 0x00, 0x48, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x16, 0x00, 0x16, 0x00, 0x02, 0x00, 0x02, 0x00, 0xef, 0xff, 0xef, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xab, 0xff, 0xab, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0x99, 0xff, 0x99, 0xff, 0x92, 0xff, 0x92, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x88, 0xff, 0x88, 0xff, 0x87, 0xff, 0x87, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x91, 0xff, 0x91, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0x06, 0x00, 0x06, 0x00, 0x14, 0x00, 0x14, 0x00, 0x23, 0x00, 0x23, 0x00, 0x32, 0x00, 0x32, 0x00, 0x41, 0x00, 0x41, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x58, 0x00, 0x58, 0x00, 0x62, 0x00, 0x62, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x70, 0x00, 0x70, 0x00, 0x74, 0x00, 0x74, 0x00, 0x76, 0x00, 0x76, 0x00, 0x72, 0x00, 0x72, 0x00, 0x69, 0x00, 0x69, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x15, 0x00, 0x15, 0x00, 0x03, 0x00, 0x03, 0x00, 0xf3, 0xff, 0xf3, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x03, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x12, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x18, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x38, 0x00, 0x38, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x47, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x52, 0x00, 0x52, 0x00, 0x54, 0x00, 0x54, 0x00, 0x52, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x42, 0x00, 0x42, 0x00, 0x37, 0x00, 0x37, 0x00, 0x27, 0x00, 0x27, 0x00, 0x14, 0x00, 0x14, 0x00, 0x01, 0x00, 0x01, 0x00, 0xf3, 0xff, 0xf3, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xba, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xce, 0xff, 0xce, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x11, 0x00, 0x11, 0x00, 0x24, 0x00, 0x24, 0x00, 0x36, 0x00, 0x36, 0x00, 0x46, 0x00, 0x46, 0x00, 0x54, 0x00, 0x54, 0x00, 0x60, 0x00, 0x60, 0x00, 0x69, 0x00, 0x69, 0x00, 0x72, 0x00, 0x72, 0x00, 0x78, 0x00, 0x78, 0x00, 0x79, 0x00, 0x79, 0x00, 0x77, 0x00, 0x77, 0x00, 0x74, 0x00, 0x74, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x28, 0x00, 0x28, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xff, 0xec, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xad, 0xff, 0xad, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x91, 0xff, 0x91, 0xff, 0x85, 0xff, 0x85, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x76, 0xff, 0x76, 0xff, 0x75, 0xff, 0x75, 0xff, 0x79, 0xff, 0x79, 0xff, 0x80, 0xff, 0x80, 0xff, 0x88, 0xff, 0x88, 0xff, 0x92, 0xff, 0x92, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0xad, 0xff, 0xad, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xef, 0xff, 0xef, 0xff, 0x03, 0x00, 0x03, 0x00, 0x14, 0x00, 0x14, 0x00, 0x25, 0x00, 0x25, 0x00, 0x32, 0x00, 0x32, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x47, 0x00, 0x47, 0x00, 0x50, 0x00, 0x50, 0x00, 0x56, 0x00, 0x56, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x64, 0x00, 0x64, 0x00, 0x67, 0x00, 0x67, 0x00, 0x65, 0x00, 0x65, 0x00, 0x61, 0x00, 0x61, 0x00, 0x59, 0x00, 0x59, 0x00, 0x50, 0x00, 0x50, 0x00, 0x48, 0x00, 0x48, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x35, 0x00, 0x35, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x23, 0x00, 0x23, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x18, 0x00, 0x10, 0x00, 0x10, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xee, 0xff, 0xee, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x07, 0x00, 0x07, 0x00, 0x12, 0x00, 0x12, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x26, 0x00, 0x26, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x30, 0x00, 0x30, 0x00, 0x34, 0x00, 0x34, 0x00, 0x39, 0x00, 0x39, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x35, 0x00, 0x35, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x11, 0x00, 0x11, 0x00, 0x06, 0x00, 0x06, 0x00, 0xf8, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xea, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xce, 0xff, 0xce, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0x02, 0x00, 0x02, 0x00, 0x14, 0x00, 0x14, 0x00, 0x24, 0x00, 0x24, 0x00, 0x31, 0x00, 0x31, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x46, 0x00, 0x46, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x51, 0x00, 0x51, 0x00, 0x55, 0x00, 0x55, 0x00, 0x57, 0x00, 0x57, 0x00, 0x54, 0x00, 0x54, 0x00, 0x50, 0x00, 0x50, 0x00, 0x48, 0x00, 0x48, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x30, 0x00, 0x30, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x04, 0x00, 0x04, 0x00, 0xf3, 0xff, 0xf3, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xac, 0xff, 0xac, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x91, 0xff, 0x91, 0xff, 0x86, 0xff, 0x86, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x79, 0xff, 0x79, 0xff, 0x79, 0xff, 0x79, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x84, 0xff, 0x84, 0xff, 0x90, 0xff, 0x90, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xde, 0xff, 0xde, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0x0c, 0x00, 0x0c, 0x00, 0x21, 0x00, 0x21, 0x00, 0x34, 0x00, 0x34, 0x00, 0x46, 0x00, 0x46, 0x00, 0x59, 0x00, 0x59, 0x00, 0x67, 0x00, 0x67, 0x00, 0x73, 0x00, 0x73, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x85, 0x00, 0x85, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x85, 0x00, 0x85, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x73, 0x00, 0x73, 0x00, 0x65, 0x00, 0x65, 0x00, 0x54, 0x00, 0x54, 0x00, 0x45, 0x00, 0x45, 0x00, 0x36, 0x00, 0x36, 0x00, 0x26, 0x00, 0x26, 0x00, 0x13, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 0x00, 0xef, 0xff, 0xef, 0xff, 0xde, 0xff, 0xde, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xae, 0xff, 0xae, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0x97, 0xff, 0x97, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x88, 0xff, 0x88, 0xff, 0x83, 0xff, 0x83, 0xff, 0x84, 0xff, 0x84, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x95, 0xff, 0x95, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xad, 0xff, 0xad, 0xff, 0xba, 0xff, 0xba, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0x09, 0x00, 0x09, 0x00, 0x18, 0x00, 0x18, 0x00, 0x26, 0x00, 0x26, 0x00, 0x31, 0x00, 0x31, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x46, 0x00, 0x47, 0x00, 0x47, 0x00, 0x47, 0x00, 0x47, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x48, 0x00, 0x48, 0x00, 0x46, 0x00, 0x46, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x34, 0x00, 0x34, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x23, 0x00, 0x23, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xee, 0xff, 0xee, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xce, 0xff, 0xce, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xca, 0xff, 0xca, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x11, 0x00, 0x16, 0x00, 0x16, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x20, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x17, 0x00, 0x17, 0x00, 0x11, 0x00, 0x11, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x05, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, 0x14, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x05, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xed, 0xff, 0xed, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x11, 0x00, 0x11, 0x00, 0x15, 0x00, 0x15, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x20, 0x00, 0x27, 0x00, 0x27, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x33, 0x00, 0x33, 0x00, 0x39, 0x00, 0x39, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x31, 0x00, 0x31, 0x00, 0x28, 0x00, 0x28, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x12, 0x00, 0x12, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x01, 0x00, 0xf7, 0xff, 0xf7, 0xff, 0xef, 0xff, 0xef, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xae, 0xff, 0xae, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x08, 0x00, 0x08, 0x00, 0x19, 0x00, 0x19, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x86, 0x00, 0x86, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x92, 0x00, 0x92, 0x00, 0x94, 0x00, 0x94, 0x00, 0x91, 0x00, 0x91, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x80, 0x00, 0x80, 0x00, 0x73, 0x00, 0x73, 0x00, 0x64, 0x00, 0x64, 0x00, 0x52, 0x00, 0x52, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x18, 0x00, 0x18, 0x00, 0x02, 0x00, 0x02, 0x00, 0xeb, 0xff, 0xeb, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xba, 0xff, 0xba, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0x95, 0xff, 0x95, 0xff, 0x87, 0xff, 0x87, 0xff, 0x79, 0xff, 0x79, 0xff, 0x6d, 0xff, 0x6d, 0xff, 0x68, 0xff, 0x68, 0xff, 0x69, 0xff, 0x69, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x75, 0xff, 0x75, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xea, 0xff, 0x02, 0x00, 0x02, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x35, 0x00, 0x35, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0xa5, 0x00, 0xa5, 0x00, 0xab, 0x00, 0xab, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0x98, 0x00, 0x98, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0x81, 0x00, 0x81, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x43, 0x00, 0x43, 0x00, 0x28, 0x00, 0x28, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0xf5, 0xff, 0xf5, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x6b, 0xff, 0x6b, 0xff, 0x60, 0xff, 0x60, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x57, 0xff, 0x57, 0xff, 0x59, 0xff, 0x59, 0xff, 0x62, 0xff, 0x62, 0xff, 0x71, 0xff, 0x71, 0xff, 0x83, 0xff, 0x83, 0xff, 0x95, 0xff, 0x95, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0x0d, 0x00, 0x0d, 0x00, 0x27, 0x00, 0x27, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x55, 0x00, 0x55, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x88, 0x00, 0x88, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xb3, 0x00, 0xb3, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x52, 0x00, 0x52, 0x00, 0x35, 0x00, 0x35, 0x00, 0x19, 0x00, 0x19, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x6b, 0xff, 0x6b, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x50, 0xff, 0x50, 0xff, 0x48, 0xff, 0x48, 0xff, 0x49, 0xff, 0x49, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x69, 0xff, 0x69, 0xff, 0x78, 0xff, 0x78, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x1d, 0x00, 0x1d, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x58, 0x00, 0x58, 0x00, 0x72, 0x00, 0x72, 0x00, 0x88, 0x00, 0x88, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0xa6, 0x00, 0xa6, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0xb8, 0x00, 0xb8, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0xae, 0x00, 0xae, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x67, 0x00, 0x67, 0x00, 0x51, 0x00, 0x51, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x26, 0x00, 0x26, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0xf1, 0xff, 0xf1, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xba, 0xff, 0xba, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x77, 0xff, 0x77, 0xff, 0x68, 0xff, 0x68, 0xff, 0x5c, 0xff, 0x5c, 0xff, 0x52, 0xff, 0x52, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x48, 0xff, 0x48, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x51, 0xff, 0x51, 0xff, 0x5c, 0xff, 0x5c, 0xff, 0x69, 0xff, 0x69, 0xff, 0x79, 0xff, 0x79, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0xba, 0xff, 0xba, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0x0e, 0x00, 0x0e, 0x00, 0x28, 0x00, 0x28, 0x00, 0x41, 0x00, 0x41, 0x00, 0x59, 0x00, 0x59, 0x00, 0x71, 0x00, 0x71, 0x00, 0x85, 0x00, 0x85, 0x00, 0x95, 0x00, 0x95, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xac, 0x00, 0xac, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0x98, 0x00, 0x98, 0x00, 0x88, 0x00, 0x88, 0x00, 0x77, 0x00, 0x77, 0x00, 0x65, 0x00, 0x65, 0x00, 0x52, 0x00, 0x52, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x23, 0x00, 0x23, 0x00, 0x09, 0x00, 0x09, 0x00, 0xee, 0xff, 0xee, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x91, 0xff, 0x91, 0xff, 0x89, 0xff, 0x89, 0xff, 0x87, 0xff, 0x87, 0xff, 0x86, 0xff, 0x86, 0xff, 0x84, 0xff, 0x84, 0xff, 0x83, 0xff, 0x83, 0xff, 0x86, 0xff, 0x86, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x98, 0xff, 0x98, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xed, 0xff, 0xed, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x0d, 0x00, 0x0d, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x29, 0x00, 0x29, 0x00, 0x33, 0x00, 0x33, 0x00, 0x39, 0x00, 0x39, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x33, 0x00, 0x33, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x16, 0x00, 0x16, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x02, 0x00, 0x02, 0x00, 0x05, 0x00, 0x05, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xde, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x07, 0x00, 0x07, 0x00, 0x10, 0x00, 0x10, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x24, 0x00, 0x24, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x34, 0x00, 0x34, 0x00, 0x39, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x37, 0x00, 0x37, 0x00, 0x35, 0x00, 0x35, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x25, 0x00, 0x25, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x05, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xde, 0xff, 0xde, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xce, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0x03, 0x00, 0x03, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x22, 0x00, 0x22, 0x00, 0x28, 0x00, 0x28, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x43, 0x00, 0x43, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x53, 0x00, 0x53, 0x00, 0x59, 0x00, 0x59, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x54, 0x00, 0x54, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x43, 0x00, 0x43, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x30, 0x00, 0x30, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0xf9, 0xff, 0xf9, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xec, 0xff, 0xec, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x0d, 0x00, 0x0d, 0x00, 0x20, 0x00, 0x20, 0x00, 0x31, 0x00, 0x31, 0x00, 0x41, 0x00, 0x41, 0x00, 0x51, 0x00, 0x51, 0x00, 0x60, 0x00, 0x60, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x85, 0x00, 0x85, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x88, 0x00, 0x88, 0x00, 0x80, 0x00, 0x80, 0x00, 0x75, 0x00, 0x75, 0x00, 0x65, 0x00, 0x65, 0x00, 0x52, 0x00, 0x52, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x21, 0x00, 0x21, 0x00, 0x07, 0x00, 0x07, 0x00, 0xed, 0xff, 0xed, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x70, 0xff, 0x70, 0xff, 0x68, 0xff, 0x68, 0xff, 0x64, 0xff, 0x64, 0xff, 0x62, 0xff, 0x62, 0xff, 0x65, 0xff, 0x65, 0xff, 0x6c, 0xff, 0x6c, 0xff, 0x79, 0xff, 0x79, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xef, 0xff, 0xef, 0xff, 0x07, 0x00, 0x07, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x35, 0x00, 0x35, 0x00, 0x49, 0x00, 0x49, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x70, 0x00, 0x70, 0x00, 0x81, 0x00, 0x81, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x96, 0x00, 0x96, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9b, 0x00, 0x98, 0x00, 0x98, 0x00, 0x92, 0x00, 0x92, 0x00, 0x89, 0x00, 0x89, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x34, 0x00, 0x34, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x02, 0x00, 0x02, 0x00, 0xed, 0xff, 0xed, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0x90, 0xff, 0x90, 0xff, 0x83, 0xff, 0x83, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x76, 0xff, 0x76, 0xff, 0x76, 0xff, 0x76, 0xff, 0x77, 0xff, 0x77, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x99, 0xff, 0x99, 0xff, 0xab, 0xff, 0xab, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0x08, 0x00, 0x08, 0x00, 0x18, 0x00, 0x18, 0x00, 0x25, 0x00, 0x25, 0x00, 0x31, 0x00, 0x31, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x47, 0x00, 0x47, 0x00, 0x50, 0x00, 0x50, 0x00, 0x55, 0x00, 0x55, 0x00, 0x57, 0x00, 0x57, 0x00, 0x59, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x59, 0x00, 0x59, 0x00, 0x57, 0x00, 0x57, 0x00, 0x52, 0x00, 0x52, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x41, 0x00, 0x41, 0x00, 0x35, 0x00, 0x35, 0x00, 0x29, 0x00, 0x29, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0xf5, 0xff, 0xea, 0xff, 0xea, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x01, 0x00, 0x01, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x17, 0x00, 0x17, 0x00, 0x23, 0x00, 0x23, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x45, 0x00, 0x45, 0x00, 0x48, 0x00, 0x48, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x48, 0x00, 0x48, 0x00, 0x43, 0x00, 0x43, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x39, 0x00, 0x39, 0x00, 0x36, 0x00, 0x36, 0x00, 0x32, 0x00, 0x32, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x22, 0x00, 0x22, 0x00, 0x17, 0x00, 0x17, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x04, 0x00, 0x04, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xed, 0xff, 0xed, 0xff, 0xde, 0xff, 0xde, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xba, 0xff, 0xba, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0x93, 0xff, 0x93, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x91, 0xff, 0x91, 0xff, 0x90, 0xff, 0x90, 0xff, 0x90, 0xff, 0x90, 0xff, 0x91, 0xff, 0x91, 0xff, 0x96, 0xff, 0x96, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xae, 0xff, 0xae, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xca, 0xff, 0xca, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xea, 0xff, 0xea, 0xff, 0x01, 0x00, 0x01, 0x00, 0x18, 0x00, 0x18, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x66, 0x00, 0x66, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x73, 0x00, 0x73, 0x00, 0x76, 0x00, 0x76, 0x00, 0x75, 0x00, 0x75, 0x00, 0x72, 0x00, 0x72, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x62, 0x00, 0x62, 0x00, 0x58, 0x00, 0x58, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xee, 0xff, 0xde, 0xff, 0xde, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0x91, 0xff, 0x91, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x93, 0xff, 0x93, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0x03, 0x00, 0x03, 0x00, 0x13, 0x00, 0x13, 0x00, 0x22, 0x00, 0x22, 0x00, 0x31, 0x00, 0x31, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x45, 0x00, 0x45, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x46, 0x00, 0x46, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xee, 0xff, 0xee, 0xff, 0xde, 0xff, 0xde, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0x0a, 0x00, 0x0a, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x64, 0x00, 0x64, 0x00, 0x69, 0x00, 0x69, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x68, 0x00, 0x68, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x47, 0x00, 0x47, 0x00, 0x34, 0x00, 0x34, 0x00, 0x24, 0x00, 0x24, 0x00, 0x14, 0x00, 0x14, 0x00, 0x01, 0x00, 0x01, 0x00, 0xed, 0xff, 0xed, 0xff, 0xda, 0xff, 0xda, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xba, 0xff, 0xba, 0xff, 0xae, 0xff, 0xae, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0x95, 0xff, 0x95, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x89, 0xff, 0x89, 0xff, 0x89, 0xff, 0x89, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x93, 0xff, 0x93, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xca, 0xff, 0xca, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x13, 0x00, 0x13, 0x00, 0x26, 0x00, 0x26, 0x00, 0x37, 0x00, 0x37, 0x00, 0x47, 0x00, 0x47, 0x00, 0x58, 0x00, 0x58, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x77, 0x00, 0x77, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x80, 0x00, 0x80, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x75, 0x00, 0x75, 0x00, 0x71, 0x00, 0x71, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x32, 0x00, 0x32, 0x00, 0x25, 0x00, 0x25, 0x00, 0x16, 0x00, 0x16, 0x00, 0x07, 0x00, 0x07, 0x00, 0xf6, 0xff, 0xf6, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x99, 0xff, 0x99, 0xff, 0x99, 0xff, 0x99, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xae, 0xff, 0xae, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0x05, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x14, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x34, 0x00, 0x34, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x37, 0x00, 0x37, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x37, 0x00, 0x37, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x35, 0x00, 0x35, 0x00, 0x30, 0x00, 0x30, 0x00, 0x27, 0x00, 0x27, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x16, 0x00, 0x16, 0x00, 0x13, 0x00, 0x13, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x09, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xde, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xda, 0xff, 0xda, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x12, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x22, 0x00, 0x22, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x34, 0x00, 0x34, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x39, 0x00, 0x39, 0x00, 0x33, 0x00, 0x33, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x26, 0x00, 0x26, 0x00, 0x23, 0x00, 0x23, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x15, 0x00, 0x15, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xef, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x18, 0x00, 0x23, 0x00, 0x23, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x35, 0x00, 0x35, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x48, 0x00, 0x48, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x48, 0x00, 0x48, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x33, 0x00, 0x33, 0x00, 0x26, 0x00, 0x26, 0x00, 0x18, 0x00, 0x18, 0x00, 0x06, 0x00, 0x06, 0x00, 0xf4, 0xff, 0xf4, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xce, 0xff, 0xce, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x15, 0x00, 0x22, 0x00, 0x22, 0x00, 0x30, 0x00, 0x30, 0x00, 0x40, 0x00, 0x40, 0x00, 0x51, 0x00, 0x51, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x66, 0x00, 0x66, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x67, 0x00, 0x67, 0x00, 0x60, 0x00, 0x60, 0x00, 0x59, 0x00, 0x59, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x44, 0x00, 0x44, 0x00, 0x39, 0x00, 0x39, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x14, 0x00, 0x14, 0x00, 0x09, 0x00, 0x09, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xed, 0xff, 0xed, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0x97, 0xff, 0x97, 0xff, 0x85, 0xff, 0x85, 0xff, 0x74, 0xff, 0x74, 0xff, 0x69, 0xff, 0x69, 0xff, 0x63, 0xff, 0x63, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x62, 0xff, 0x62, 0xff, 0x69, 0xff, 0x69, 0xff, 0x73, 0xff, 0x73, 0xff, 0x81, 0xff, 0x81, 0xff, 0x93, 0xff, 0x93, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xee, 0xff, 0xee, 0xff, 0x07, 0x00, 0x07, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x42, 0x00, 0x42, 0x00, 0x55, 0x00, 0x55, 0x00, 0x67, 0x00, 0x67, 0x00, 0x76, 0x00, 0x76, 0x00, 0x84, 0x00, 0x84, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0x95, 0x00, 0x95, 0x00, 0x9b, 0x00, 0x9b, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x96, 0x00, 0x96, 0x00, 0x88, 0x00, 0x88, 0x00, 0x75, 0x00, 0x75, 0x00, 0x61, 0x00, 0x61, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x25, 0x00, 0x25, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0xf5, 0xff, 0xf5, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0x97, 0xff, 0x97, 0xff, 0x89, 0xff, 0x89, 0xff, 0x80, 0xff, 0x80, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x79, 0xff, 0x79, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x82, 0xff, 0x82, 0xff, 0x89, 0xff, 0x89, 0xff, 0x91, 0xff, 0x91, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0xac, 0xff, 0xac, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0x0c, 0x00, 0x0c, 0x00, 0x20, 0x00, 0x20, 0x00, 0x31, 0x00, 0x31, 0x00, 0x40, 0x00, 0x40, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x54, 0x00, 0x54, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x60, 0x00, 0x60, 0x00, 0x65, 0x00, 0x65, 0x00, 0x67, 0x00, 0x67, 0x00, 0x66, 0x00, 0x66, 0x00, 0x62, 0x00, 0x62, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x54, 0x00, 0x54, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x30, 0x00, 0x30, 0x00, 0x24, 0x00, 0x24, 0x00, 0x16, 0x00, 0x16, 0x00, 0x06, 0x00, 0x06, 0x00, 0xf6, 0xff, 0xf6, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xac, 0xff, 0xac, 0xff, 0xae, 0xff, 0xae, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0x02, 0x00, 0x02, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x35, 0x00, 0x35, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x44, 0x00, 0x44, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x51, 0x00, 0x51, 0x00, 0x56, 0x00, 0x56, 0x00, 0x58, 0x00, 0x58, 0x00, 0x55, 0x00, 0x55, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x45, 0x00, 0x45, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x34, 0x00, 0x34, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x00, 0x03, 0x00, 0xf5, 0xff, 0xf5, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xba, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xce, 0xff, 0xce, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xed, 0xff, 0xed, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x08, 0x00, 0x08, 0x00, 0x12, 0x00, 0x12, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x20, 0x00, 0x25, 0x00, 0x25, 0x00, 0x29, 0x00, 0x29, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x26, 0x00, 0x26, 0x00, 0x20, 0x00, 0x20, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x05, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x03, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x12, 0x00, 0x12, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x21, 0x00, 0x21, 0x00, 0x26, 0x00, 0x26, 0x00, 0x29, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x29, 0x00, 0x29, 0x00, 0x27, 0x00, 0x27, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xed, 0xff, 0xed, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xda, 0xff, 0xda, 0xff, 0xda, 0xff, 0xda, 0xff, 0xda, 0xff, 0xda, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xed, 0xff, 0xed, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0x06, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x16, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x27, 0x00, 0x27, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x22, 0x00, 0x22, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xba, 0xff, 0xba, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0x05, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x14, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x23, 0x00, 0x23, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x31, 0x00, 0x31, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x33, 0x00, 0x33, 0x00, 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x27, 0x00, 0x27, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xec, 0xff, 0xec, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xca, 0xff, 0xca, 0xff, 0xca, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xce, 0xff, 0xce, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xee, 0xff, 0xee, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x03, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x11, 0x00, 0x11, 0x00, 0x14, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x21, 0x00, 0x21, 0x00, 0x24, 0x00, 0x24, 0x00, 0x26, 0x00, 0x26, 0x00, 0x29, 0x00, 0x29, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x28, 0x00, 0x28, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x25, 0x00, 0x25, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x18, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xee, 0xff, 0xee, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xce, 0xff, 0xce, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xba, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xee, 0xff, 0xee, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x08, 0x00, 0x08, 0x00, 0x17, 0x00, 0x17, 0x00, 0x28, 0x00, 0x28, 0x00, 0x39, 0x00, 0x39, 0x00, 0x49, 0x00, 0x49, 0x00, 0x57, 0x00, 0x57, 0x00, 0x62, 0x00, 0x62, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x75, 0x00, 0x75, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x78, 0x00, 0x78, 0x00, 0x71, 0x00, 0x71, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x60, 0x00, 0x60, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xed, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x99, 0xff, 0x99, 0xff, 0x98, 0xff, 0x98, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0x04, 0x00, 0x04, 0x00, 0x14, 0x00, 0x14, 0x00, 0x24, 0x00, 0x24, 0x00, 0x32, 0x00, 0x32, 0x00, 0x40, 0x00, 0x40, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x58, 0x00, 0x58, 0x00, 0x62, 0x00, 0x62, 0x00, 0x69, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x65, 0x00, 0x65, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x43, 0x00, 0x43, 0x00, 0x38, 0x00, 0x38, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x11, 0x00, 0x12, 0x00, 0x12, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x05, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xed, 0xff, 0xed, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xde, 0xff, 0xde, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xca, 0xff, 0xca, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x12, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x34, 0x00, 0x34, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x46, 0x00, 0x46, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x54, 0x00, 0x54, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x64, 0x00, 0x64, 0x00, 0x67, 0x00, 0x67, 0x00, 0x68, 0x00, 0x68, 0x00, 0x65, 0x00, 0x65, 0x00, 0x61, 0x00, 0x61, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x54, 0x00, 0x54, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x45, 0x00, 0x45, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xce, 0xff, 0xce, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xac, 0xff, 0xac, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x12, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x28, 0x00, 0x28, 0x00, 0x32, 0x00, 0x32, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x42, 0x00, 0x42, 0x00, 0x49, 0x00, 0x49, 0x00, 0x50, 0x00, 0x50, 0x00, 0x58, 0x00, 0x58, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x58, 0x00, 0x58, 0x00, 0x55, 0x00, 0x55, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x45, 0x00, 0x45, 0x00, 0x39, 0x00, 0x39, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xec, 0xff, 0xec, 0xff, 0xde, 0xff, 0xde, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xba, 0xff, 0xba, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0x98, 0xff, 0x98, 0xff, 0x93, 0xff, 0x93, 0xff, 0x92, 0xff, 0x92, 0xff, 0x97, 0xff, 0x97, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0x06, 0x00, 0x06, 0x00, 0x17, 0x00, 0x17, 0x00, 0x27, 0x00, 0x27, 0x00, 0x39, 0x00, 0x39, 0x00, 0x48, 0x00, 0x48, 0x00, 0x54, 0x00, 0x54, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x64, 0x00, 0x64, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x71, 0x00, 0x71, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x69, 0x00, 0x69, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x50, 0x00, 0x50, 0x00, 0x41, 0x00, 0x41, 0x00, 0x32, 0x00, 0x32, 0x00, 0x21, 0x00, 0x21, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xab, 0xff, 0xab, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x91, 0xff, 0x91, 0xff, 0x88, 0xff, 0x88, 0xff, 0x83, 0xff, 0x83, 0xff, 0x82, 0xff, 0x82, 0xff, 0x86, 0xff, 0x86, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x92, 0xff, 0x92, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x08, 0x00, 0x08, 0x00, 0x15, 0x00, 0x15, 0x00, 0x21, 0x00, 0x21, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x37, 0x00, 0x37, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x48, 0x00, 0x48, 0x00, 0x50, 0x00, 0x50, 0x00, 0x56, 0x00, 0x56, 0x00, 0x58, 0x00, 0x58, 0x00, 0x57, 0x00, 0x57, 0x00, 0x55, 0x00, 0x55, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x43, 0x00, 0x43, 0x00, 0x34, 0x00, 0x34, 0x00, 0x24, 0x00, 0x24, 0x00, 0x15, 0x00, 0x15, 0x00, 0x04, 0x00, 0x04, 0x00, 0xf2, 0xff, 0xf2, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xab, 0xff, 0xab, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x98, 0xff, 0x98, 0xff, 0x95, 0xff, 0x95, 0xff, 0x96, 0xff, 0x96, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0x09, 0x00, 0x09, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x40, 0x00, 0x40, 0x00, 0x50, 0x00, 0x50, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x64, 0x00, 0x64, 0x00, 0x69, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x69, 0x00, 0x64, 0x00, 0x64, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x54, 0x00, 0x54, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x31, 0x00, 0x31, 0x00, 0x24, 0x00, 0x24, 0x00, 0x17, 0x00, 0x17, 0x00, 0x08, 0x00, 0x08, 0x00, 0xf9, 0xff, 0xf9, 0xff, 0xec, 0xff, 0xec, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xca, 0xff, 0xca, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xab, 0xff, 0xab, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xce, 0xff, 0xce, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0x08, 0x00, 0x08, 0x00, 0x15, 0x00, 0x15, 0x00, 0x21, 0x00, 0x21, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x37, 0x00, 0x37, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x46, 0x00, 0x46, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x52, 0x00, 0x54, 0x00, 0x54, 0x00, 0x53, 0x00, 0x53, 0x00, 0x51, 0x00, 0x51, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x43, 0x00, 0x43, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x34, 0x00, 0x34, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x21, 0x00, 0x21, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xed, 0xff, 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, 0xee, 0xff, 0xee, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xef, 0xff, 0xec, 0xff, 0xec, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0x01, 0x00, 0x01, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x15, 0x00, 0x15, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x20, 0x00, 0x20, 0x00, 0x24, 0x00, 0x24, 0x00, 0x27, 0x00, 0x27, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x28, 0x00, 0x27, 0x00, 0x27, 0x00, 0x26, 0x00, 0x26, 0x00, 0x23, 0x00, 0x23, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x05, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xde, 0xff, 0xde, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xce, 0xff, 0xce, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xca, 0xff, 0xca, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x14, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x21, 0x00, 0x21, 0x00, 0x26, 0x00, 0x26, 0x00, 0x28, 0x00, 0x28, 0x00, 0x27, 0x00, 0x27, 0x00, 0x26, 0x00, 0x26, 0x00, 0x25, 0x00, 0x25, 0x00, 0x23, 0x00, 0x23, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xda, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x09, 0x00, 0x10, 0x00, 0x10, 0x00, 0x16, 0x00, 0x16, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x26, 0x00, 0x26, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x35, 0x00, 0x35, 0x00, 0x37, 0x00, 0x37, 0x00, 0x36, 0x00, 0x36, 0x00, 0x31, 0x00, 0x31, 0x00, 0x29, 0x00, 0x29, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x17, 0x00, 0x17, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x02, 0x00, 0x02, 0x00, 0xf7, 0xff, 0xf7, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xed, 0xff, 0xed, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0x02, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x15, 0x00, 0x15, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x27, 0x00, 0x27, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x31, 0x00, 0x31, 0x00, 0x32, 0x00, 0x32, 0x00, 0x33, 0x00, 0x33, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x27, 0x00, 0x27, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x17, 0x00, 0x17, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x04, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xee, 0xff, 0xee, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0x03, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x22, 0x00, 0x22, 0x00, 0x29, 0x00, 0x29, 0x00, 0x30, 0x00, 0x30, 0x00, 0x35, 0x00, 0x35, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x43, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x44, 0x00, 0x44, 0x00, 0x43, 0x00, 0x43, 0x00, 0x43, 0x00, 0x43, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x34, 0x00, 0x34, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x23, 0x00, 0x23, 0x00, 0x19, 0x00, 0x19, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xed, 0xff, 0xde, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xca, 0xff, 0xce, 0xff, 0xce, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xea, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x02, 0x00, 0x02, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x17, 0x00, 0x17, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x21, 0x00, 0x21, 0x00, 0x24, 0x00, 0x24, 0x00, 0x27, 0x00, 0x27, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x28, 0x00, 0x28, 0x00, 0x23, 0x00, 0x23, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x17, 0x00, 0x17, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xec, 0xff, 0xee, 0xff, 0xee, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x09, 0x00, 0x10, 0x00, 0x10, 0x00, 0x15, 0x00, 0x15, 0x00, 0x18, 0x00, 0x18, 0x00, 0x19, 0x00, 0x19, 0x00, 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, 0x17, 0x00, 0x16, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xef, 0xff, 0xef, 0xff, 0xed, 0xff, 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xea, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xca, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0x01, 0x00, 0x01, 0x00, 0x09, 0x00, 0x09, 0x00, 0x14, 0x00, 0x14, 0x00, 0x23, 0x00, 0x23, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x25, 0x00, 0x25, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x13, 0x00, 0x13, 0x00, 0x08, 0x00, 0x08, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xef, 0xff, 0xef, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xce, 0xff, 0xce, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0x02, 0x00, 0x02, 0x00, 0x05, 0x00, 0x05, 0x00, 0x07, 0x00, 0x07, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x14, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x16, 0x00, 0x16, 0x00, 0x11, 0x00, 0x11, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xed, 0xff, 0xed, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xca, 0xff, 0xca, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xde, 0xff, 0xde, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x15, 0x00, 0x15, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x47, 0x00, 0x47, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x55, 0x00, 0x55, 0x00, 0x59, 0x00, 0x59, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x58, 0x00, 0x58, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x45, 0x00, 0x45, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x42, 0x00, 0x49, 0x00, 0x49, 0x00, 0x42, 0x00, 0x42, 0x00, 0x39, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x33, 0x00, 0x33, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x33, 0x00, 0x33, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x08, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0x04, 0x00, 0x04, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x28, 0x00, 0x28, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x59, 0x00, 0x59, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x75, 0x00, 0x75, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x66, 0x00, 0x66, 0x00, 0x74, 0x00, 0x74, 0x00, 0x87, 0x00, 0x87, 0x00, 0x81, 0x00, 0x81, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x69, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x74, 0x00, 0x74, 0x00, 0x65, 0x00, 0x65, 0x00, 0x51, 0x00, 0x51, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x50, 0x00, 0x45, 0x00, 0x45, 0x00, 0x37, 0x00, 0x37, 0x00, 0x21, 0x00, 0x21, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x15, 0x00, 0x15, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xee, 0xff, 0xee, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0x05, 0x00, 0x05, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x0b, 0x00, 0x0b, 0x00, 0x24, 0x00, 0x24, 0x00, 0x25, 0x00, 0x25, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x57, 0x00, 0x57, 0x00, 0x39, 0x00, 0x39, 0x00, 0x35, 0x00, 0x35, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x84, 0x00, 0x84, 0x00, 0xde, 0x00, 0xde, 0x00, 0xab, 0x00, 0xab, 0x00, 0x89, 0xff, 0x89, 0xff, 0x52, 0xfd, 0x52, 0xfd, 0xba, 0xfa, 0xba, 0xfa, 0x11, 0xfa, 0x11, 0xfa, 0x79, 0xfc, 0x79, 0xfc, 0x96, 0xff, 0x96, 0xff, 0xee, 0x00, 0xee, 0x00, 0x69, 0x00, 0x69, 0x00, 0x63, 0xfe, 0x63, 0xfe, 0xa0, 0xfb, 0xa0, 0xfb, 0xdd, 0xf9, 0xdd, 0xf9, 0x58, 0xf9, 0x58, 0xf9, 0xec, 0xf8, 0xed, 0xf8, 0x22, 0xf9, 0x22, 0xf9, 0x2b, 0xfb, 0x2b, 0xfb, 0x4b, 0xfe, 0x4b, 0xfe, 0xaa, 0x00, 0xaa, 0x00, 0x0c, 0x01, 0x0c, 0x01, 0x5a, 0xff, 0x5a, 0xff, 0xcc, 0xfc, 0xcc, 0xfc, 0x43, 0xfb, 0x44, 0xfb, 0x0b, 0xfc, 0x0b, 0xfc, 0xb1, 0xfe, 0xb2, 0xfe, 0x15, 0x01, 0x15, 0x01, 0x81, 0x01, 0x81, 0x01, 0x2d, 0x00, 0x2d, 0x00, 0x02, 0xfe, 0x02, 0xfe, 0xdd, 0xfb, 0xdd, 0xfb, 0xed, 0xfa, 0xed, 0xfa, 0x80, 0xfb, 0x81, 0xfb, 0x7f, 0xfc, 0x7f, 0xfc, 0x1a, 0xfd, 0x1a, 0xfd, 0x75, 0xfd, 0x75, 0xfd, 0x8c, 0xfd, 0x8c, 0xfd, 0x22, 0xfd, 0x22, 0xfd, 0xa2, 0xfc, 0xa2, 0xfc, 0xf1, 0xfc, 0xf1, 0xfc, 0x38, 0xfe, 0x38, 0xfe, 0xcb, 0xff, 0xcb, 0xff, 0x06, 0x01, 0x07, 0x01, 0x92, 0x01, 0x92, 0x01, 0x93, 0x01, 0x93, 0x01, 0x11, 0x02, 0x11, 0x02, 0xc7, 0x03, 0xc7, 0x03, 0xdb, 0x05, 0xdb, 0x05, 0x16, 0x07, 0x16, 0x07, 0x51, 0x07, 0x51, 0x07, 0x18, 0x07, 0x18, 0x07, 0xfa, 0x06, 0xfa, 0x06, 0x08, 0x07, 0x08, 0x07, 0xf5, 0x06, 0xf5, 0x06, 0xd8, 0x06, 0xd8, 0x06, 0x09, 0x07, 0x09, 0x07, 0x4c, 0x07, 0x4c, 0x07, 0xff, 0x06, 0xff, 0x06, 0x8c, 0x05, 0x8b, 0x05, 0xfa, 0x02, 0xfa, 0x02, 0xa8, 0x00, 0xa8, 0x00, 0x29, 0x00, 0x28, 0x00, 0x52, 0x01, 0x51, 0x01, 0xa4, 0x02, 0xa3, 0x02, 0x03, 0x03, 0x02, 0x03, 0x4e, 0x02, 0x4d, 0x02, 0x10, 0x01, 0x10, 0x01, 0xe1, 0xff, 0xe1, 0xff, 0x2d, 0xff, 0x2d, 0xff, 0x64, 0xff, 0x64, 0xff, 0x9d, 0x00, 0x9d, 0x00, 0x6c, 0x02, 0x6c, 0x02, 0x44, 0x04, 0x43, 0x04, 0x7c, 0x05, 0x7c, 0x05, 0xb4, 0x05, 0xb3, 0x05, 0x75, 0x05, 0x74, 0x05, 0x84, 0x05, 0x83, 0x05, 0x16, 0x06, 0x16, 0x06, 0x35, 0x07, 0x35, 0x07, 0xcb, 0x08, 0xcb, 0x08, 0x6a, 0x0a, 0x6a, 0x0a, 0xaa, 0x0b, 0xa9, 0x0b, 0x4b, 0x0c, 0x4b, 0x0c, 0x50, 0x0c, 0x4f, 0x0c, 0x34, 0x0c, 0x34, 0x0c, 0x6c, 0x0c, 0x6b, 0x0c, 0xfc, 0x0c, 0xfc, 0x0c, 0x99, 0x0d, 0x99, 0x0d, 0x9b, 0x0d, 0x9a, 0x0d, 0x7c, 0x0c, 0x7b, 0x0c, 0x8e, 0x0a, 0x8e, 0x0a, 0x64, 0x08, 0x64, 0x08, 0x4f, 0x06, 0x4e, 0x06, 0xe7, 0x04, 0xe6, 0x04, 0x8f, 0x04, 0x8f, 0x04, 0x8b, 0x04, 0x8a, 0x04, 0xb7, 0x03, 0xb6, 0x03, 0xa6, 0x01, 0xa6, 0x01, 0xb9, 0xfe, 0xb9, 0xfe, 0xe5, 0xfb, 0xe5, 0xfb, 0x3f, 0xfa, 0x3e, 0xfa, 0x23, 0xfa, 0x23, 0xfa, 0x03, 0xfb, 0x02, 0xfb, 0xf5, 0xfb, 0xf4, 0xfb, 0x3b, 0xfc, 0x3a, 0xfc, 0x7b, 0xfb, 0x7a, 0xfb, 0xc9, 0xf9, 0xc8, 0xf9, 0xaf, 0xf7, 0xaf, 0xf7, 0x22, 0xf6, 0x21, 0xf6, 0xe7, 0xf5, 0xe6, 0xf5, 0xfc, 0xf6, 0xfb, 0xf6, 0x97, 0xf8, 0x97, 0xf8, 0xc5, 0xf9, 0xc5, 0xf9, 0xf9, 0xf9, 0xf8, 0xf9, 0x40, 0xf9, 0x40, 0xf9, 0x35, 0xf8, 0x35, 0xf8, 0x8b, 0xf7, 0x8b, 0xf7, 0x9b, 0xf7, 0x9b, 0xf7, 0x33, 0xf8, 0x33, 0xf8, 0xd7, 0xf8, 0xd7, 0xf8, 0xf0, 0xf8, 0xf1, 0xf8, 0x09, 0xf8, 0x0a, 0xf8, 0x77, 0xf6, 0x78, 0xf6, 0x48, 0xf5, 0x49, 0xf5, 0x5a, 0xf5, 0x5b, 0xf5, 0xb5, 0xf6, 0xb6, 0xf6, 0x89, 0xf8, 0x8a, 0xf8, 0xa0, 0xf9, 0xa1, 0xf9, 0x5a, 0xf9, 0x5b, 0xf9, 0x24, 0xf8, 0x25, 0xf8, 0xe7, 0xf6, 0xe8, 0xf6, 0x6f, 0xf6, 0x70, 0xf6, 0x1c, 0xf7, 0x1d, 0xf7, 0xa8, 0xf8, 0xa9, 0xf8, 0x5a, 0xfa, 0x5a, 0xfa, 0x8d, 0xfb, 0x8d, 0xfb, 0xeb, 0xfb, 0xeb, 0xfb, 0x7b, 0xfb, 0x7b, 0xfb, 0xb2, 0xfa, 0xb2, 0xfa, 0x2c, 0xfa, 0x2c, 0xfa, 0x48, 0xfa, 0x48, 0xfa, 0x1a, 0xfb, 0x19, 0xfb, 0x7e, 0xfc, 0x7d, 0xfc, 0x12, 0xfe, 0x11, 0xfe, 0x50, 0xff, 0x4f, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xec, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe9, 0xff, 0x55, 0x00, 0x54, 0x00, 0x3a, 0x01, 0x39, 0x01, 0x2f, 0x02, 0x2d, 0x02, 0x9d, 0x02, 0x9b, 0x02, 0x4c, 0x02, 0x4d, 0x02, 0xaf, 0x01, 0xb6, 0x01, 0x7d, 0x01, 0x8b, 0x01, 0x0a, 0x02, 0x1e, 0x02, 0x2a, 0x03, 0x3f, 0x03, 0x6b, 0x04, 0x7d, 0x04, 0x3f, 0x05, 0x4b, 0x05, 0x34, 0x05, 0x3a, 0x05, 0x4e, 0x04, 0x4f, 0x04, 0x0d, 0x03, 0x0e, 0x03, 0xfe, 0x01, 0x05, 0x02, 0x7e, 0x01, 0x8e, 0x01, 0xb3, 0x01, 0xcb, 0x01, 0x63, 0x02, 0x7e, 0x02, 0x00, 0x03, 0x18, 0x03, 0x13, 0x03, 0x21, 0x03, 0x86, 0x02, 0x87, 0x02, 0x78, 0x01, 0x6f, 0x01, 0x22, 0x00, 0x13, 0x00, 0xeb, 0xfe, 0xdb, 0xfe, 0x3e, 0xfe, 0x32, 0xfe, 0x1c, 0xfe, 0x14, 0xfe, 0x26, 0xfe, 0x20, 0xfe, 0x08, 0xfe, 0x00, 0xfe, 0x9a, 0xfd, 0x90, 0xfd, 0xe8, 0xfc, 0xdb, 0xfc, 0x36, 0xfc, 0x29, 0xfc, 0xc0, 0xfb, 0xb7, 0xfb, 0x75, 0xfb, 0x74, 0xfb, 0x18, 0xfb, 0x1e, 0xfb, 0x8c, 0xfa, 0x97, 0xfa, 0xd2, 0xf9, 0xde, 0xf9, 0x07, 0xf9, 0x11, 0xf9, 0x76, 0xf8, 0x7d, 0xf8, 0x62, 0xf8, 0x66, 0xf8, 0xc7, 0xf8, 0xc9, 0xf8, 0x64, 0xf9, 0x65, 0xf9, 0xe0, 0xf9, 0xde, 0xf9, 0xed, 0xf9, 0xe9, 0xf9, 0x75, 0xf9, 0x6c, 0xf9, 0xaa, 0xf8, 0x9b, 0xf8, 0xfb, 0xf7, 0xe8, 0xf7, 0xd5, 0xf7, 0xbe, 0xf7, 0x56, 0xf8, 0x3a, 0xf8, 0x55, 0xf9, 0x35, 0xf9, 0x8a, 0xfa, 0x66, 0xfa, 0x92, 0xfb, 0x6b, 0xfb, 0x20, 0xfc, 0xf7, 0xfb, 0x40, 0xfc, 0x17, 0xfc, 0x47, 0xfc, 0x20, 0xfc, 0x6b, 0xfc, 0x48, 0xfc, 0xc4, 0xfc, 0xa6, 0xfc, 0x60, 0xfd, 0x48, 0xfd, 0x21, 0xfe, 0x12, 0xfe, 0xe4, 0xfe, 0xe0, 0xfe, 0xaa, 0xff, 0xb0, 0xff, 0x78, 0x00, 0x86, 0x00, 0x42, 0x01, 0x56, 0x01, 0x06, 0x02, 0x1f, 0x02, 0xc5, 0x02, 0xe1, 0x02, 0x66, 0x03, 0x87, 0x03, 0xd0, 0x03, 0xf6, 0x03, 0x03, 0x04, 0x2c, 0x04, 0x1d, 0x04, 0x49, 0x04, 0x56, 0x04, 0x86, 0x04, 0xdd, 0x04, 0x13, 0x05, 0xbd, 0x05, 0xf3, 0x05, 0xcd, 0x06, 0xfd, 0x06, 0xbc, 0x07, 0xe1, 0x07, 0x3f, 0x08, 0x59, 0x08, 0x57, 0x08, 0x6c, 0x08, 0x2f, 0x08, 0x47, 0x08, 0xff, 0x07, 0x1e, 0x08, 0x02, 0x08, 0x24, 0x08, 0x5a, 0x08, 0x78, 0x08, 0xf5, 0x08, 0x0a, 0x09, 0xa0, 0x09, 0xa9, 0x09, 0x29, 0x0a, 0x27, 0x0a, 0x69, 0x0a, 0x61, 0x0a, 0x4d, 0x0a, 0x48, 0x0a, 0xe5, 0x09, 0xeb, 0x09, 0x4f, 0x09, 0x61, 0x09, 0xa2, 0x08, 0xbd, 0x08, 0xf5, 0x07, 0x10, 0x08, 0x65, 0x07, 0x75, 0x07, 0x09, 0x07, 0x0a, 0x07, 0xda, 0x06, 0xd1, 0x06, 0xb4, 0x06, 0xac, 0x06, 0x6e, 0x06, 0x6d, 0x06, 0xf4, 0x05, 0xfd, 0x05, 0x43, 0x05, 0x54, 0x05, 0x67, 0x04, 0x7a, 0x04, 0x76, 0x03, 0x83, 0x03, 0x7e, 0x02, 0x81, 0x02, 0x99, 0x01, 0x8f, 0x01, 0xe5, 0x00, 0xd2, 0x00, 0x71, 0x00, 0x5e, 0x00, 0x2c, 0x00, 0x24, 0x00, 0xe8, 0xff, 0xf0, 0xff, 0x83, 0xff, 0x93, 0xff, 0xfd, 0xfe, 0x0a, 0xff, 0x5c, 0xfe, 0x5c, 0xfe, 0xad, 0xfd, 0x9c, 0xfd, 0xff, 0xfc, 0xe2, 0xfc, 0x5e, 0xfc, 0x3f, 0xfc, 0xd9, 0xfb, 0xbe, 0xfb, 0x91, 0xfb, 0x7b, 0xfb, 0x93, 0xfb, 0x7c, 0xfb, 0xc1, 0xfb, 0xa2, 0xfb, 0xf8, 0xfb, 0xcb, 0xfb, 0x0d, 0xfc, 0xd1, 0xfb, 0xe4, 0xfb, 0x9a, 0xfb, 0x93, 0xfb, 0x3e, 0xfb, 0x40, 0xfb, 0xe3, 0xfa, 0xf9, 0xfa, 0x98, 0xfa, 0xda, 0xfa, 0x76, 0xfa, 0xf9, 0xfa, 0x92, 0xfa, 0x4b, 0xfb, 0xe2, 0xfa, 0xc6, 0xfb, 0x5e, 0xfb, 0x55, 0xfc, 0xf3, 0xfb, 0xc9, 0xfc, 0x70, 0xfc, 0x01, 0xfd, 0xb0, 0xfc, 0x0d, 0xfd, 0xc1, 0xfc, 0x13, 0xfd, 0xc8, 0xfc, 0x33, 0xfd, 0xeb, 0xfc, 0x76, 0xfd, 0x36, 0xfd, 0xc5, 0xfd, 0x95, 0xfd, 0x1b, 0xfe, 0xfc, 0xfd, 0x8c, 0xfe, 0x7c, 0xfe, 0x23, 0xff, 0x1a, 0xff, 0xcd, 0xff, 0xc6, 0xff, 0x62, 0x00, 0x55, 0x00, 0xbb, 0x00, 0xa6, 0x00, 0xde, 0x00, 0xc0, 0x00, 0xfb, 0x00, 0xd8, 0x00, 0x35, 0x01, 0x13, 0x01, 0x90, 0x01, 0x6e, 0x01, 0xfe, 0x01, 0xd7, 0x01, 0x8b, 0x02, 0x58, 0x02, 0x46, 0x03, 0x02, 0x03, 0x21, 0x04, 0xcc, 0x03, 0xf1, 0x04, 0x90, 0x04, 0x7a, 0x05, 0x12, 0x05, 0xa2, 0x05, 0x35, 0x05, 0x9a, 0x05, 0x2a, 0x05, 0xac, 0x05, 0x3b, 0x05, 0xf3, 0x05, 0x84, 0x05, 0x5f, 0x06, 0xf9, 0x05, 0xd8, 0x06, 0x80, 0x06, 0x42, 0x07, 0xfd, 0x06, 0x97, 0x07, 0x62, 0x07, 0xd6, 0x07, 0xaf, 0x07, 0xe7, 0x07, 0xca, 0x07, 0xbb, 0x07, 0xa8, 0x07, 0x67, 0x07, 0x62, 0x07, 0x00, 0x07, 0x0f, 0x07, 0x93, 0x06, 0xc0, 0x06, 0x2c, 0x06, 0x7f, 0x06, 0xca, 0x05, 0x49, 0x06, 0x6d, 0x05, 0x17, 0x06, 0x1a, 0x05, 0xe6, 0x05, 0xbc, 0x04, 0x9c, 0x05, 0x35, 0x04, 0x1e, 0x05, 0x83, 0x03, 0x71, 0x04, 0xad, 0x02, 0xa8, 0x03, 0xc9, 0x01, 0xdb, 0x02, 0xf9, 0x00, 0x27, 0x02, 0x47, 0x00, 0x8b, 0x01, 0xa7, 0xff, 0xf6, 0x00, 0x1a, 0xff, 0x65, 0x00, 0x9f, 0xfe, 0xdd, 0xff, 0x21, 0xfe, 0x50, 0xff, 0x94, 0xfd, 0xb7, 0xfe, 0xf3, 0xfc, 0x11, 0xfe, 0x3b, 0xfc, 0x5c, 0xfd, 0x78, 0xfb, 0xa1, 0xfc, 0xc2, 0xfa, 0xf3, 0xfb, 0x2e, 0xfa, 0x62, 0xfb, 0xd0, 0xf9, 0xf9, 0xfa, 0xa7, 0xf9, 0xba, 0xfa, 0x9b, 0xf9, 0x95, 0xfa, 0x8b, 0xf9, 0x70, 0xfa, 0x5f, 0xf9, 0x38, 0xfa, 0x16, 0xf9, 0xe5, 0xf9, 0xc8, 0xf8, 0x88, 0xf9, 0x90, 0xf8, 0x39, 0xf9, 0x72, 0xf8, 0x01, 0xf9, 0x71, 0xf8, 0xeb, 0xf8, 0x98, 0xf8, 0x01, 0xf9, 0xeb, 0xf8, 0x43, 0xf9, 0x5b, 0xf9, 0x9b, 0xf9, 0xd1, 0xf9, 0xee, 0xf9, 0x3a, 0xfa, 0x2b, 0xfa, 0x8c, 0xfa, 0x4c, 0xfa, 0xcd, 0xfa, 0x5c, 0xfa, 0x11, 0xfb, 0x74, 0xfa, 0x5f, 0xfb, 0xa5, 0xfa, 0xc1, 0xfb, 0xf5, 0xfa, 0x3b, 0xfc, 0x65, 0xfb, 0xcf, 0xfc, 0xf1, 0xfb, 0x73, 0xfd, 0x8a, 0xfc, 0x19, 0xfe, 0x20, 0xfd, 0xae, 0xfe, 0xa6, 0xfd, 0x26, 0xff, 0x14, 0xfe, 0x84, 0xff, 0x71, 0xfe, 0xd3, 0xff, 0xc8, 0xfe, 0x28, 0x00, 0x2b, 0xff, 0x99, 0x00, 0xac, 0xff, 0x26, 0x01, 0x47, 0x00, 0xca, 0x01, 0xf2, 0x00, 0x76, 0x02, 0x9c, 0x01, 0x12, 0x03, 0x33, 0x02, 0x98, 0x03, 0xb3, 0x02, 0x02, 0x04, 0x1c, 0x03, 0x51, 0x04, 0x6b, 0x03, 0x8d, 0x04, 0xa6, 0x03, 0xc9, 0x04, 0xd8, 0x03, 0x18, 0x05, 0x10, 0x04, 0x83, 0x05, 0x5c, 0x04, 0xfe, 0x05, 0xb6, 0x04, 0x72, 0x06, 0x0f, 0x05, 0xc8, 0x06, 0x57, 0x05, 0xfa, 0x06, 0x84, 0x05, 0x0e, 0x07, 0x95, 0x05, 0x05, 0x07, 0x86, 0x05, 0xe8, 0x06, 0x5f, 0x05, 0xbe, 0x06, 0x2e, 0x05, 0x92, 0x06, 0xfd, 0x04, 0x6f, 0x06, 0xe1, 0x04, 0x5c, 0x06, 0xdd, 0x04, 0x46, 0x06, 0xe1, 0x04, 0x1a, 0x06, 0xd8, 0x04, 0xd1, 0x05, 0xb9, 0x04, 0x65, 0x05, 0x79, 0x04, 0xd1, 0x04, 0x15, 0x04, 0x26, 0x04, 0x9e, 0x03, 0x74, 0x03, 0x25, 0x03, 0xcb, 0x02, 0xb7, 0x02, 0x3c, 0x02, 0x5f, 0x02, 0xc0, 0x01, 0x16, 0x02, 0x44, 0x01, 0xc7, 0x01, 0xbd, 0x00, 0x6a, 0x01, 0x28, 0x00, 0xfe, 0x00, 0x84, 0xff, 0x7f, 0x00, 0xd7, 0xfe, 0xf0, 0xff, 0x26, 0xfe, 0x54, 0xff, 0x79, 0xfd, 0xb1, 0xfe, 0xe1, 0xfc, 0x17, 0xfe, 0x63, 0xfc, 0x8e, 0xfd, 0xf3, 0xfb, 0x0f, 0xfd, 0x87, 0xfb, 0x95, 0xfc, 0x1e, 0xfb, 0x21, 0xfc, 0xb8, 0xfa, 0xb2, 0xfb, 0x57, 0xfa, 0x46, 0xfb, 0xfa, 0xf9, 0xda, 0xfa, 0x9c, 0xf9, 0x68, 0xfa, 0x43, 0xf9, 0xf3, 0xf9, 0xfb, 0xf8, 0x8d, 0xf9, 0xd1, 0xf8, 0x47, 0xf9, 0xc6, 0xf8, 0x2c, 0xf9, 0xd5, 0xf8, 0x3b, 0xf9, 0xea, 0xf8, 0x60, 0xf9, 0xf5, 0xf8, 0x83, 0xf9, 0xf4, 0xf8, 0x9d, 0xf9, 0xef, 0xf8, 0xb0, 0xf9, 0xeb, 0xf8, 0xc1, 0xf9, 0xf2, 0xf8, 0xdb, 0xf9, 0x13, 0xf9, 0x0e, 0xfa, 0x50, 0xf9, 0x5d, 0xfa, 0xa3, 0xf9, 0xc5, 0xfa, 0x0c, 0xfa, 0x45, 0xfb, 0x81, 0xfa, 0xd0, 0xfb, 0xf8, 0xfa, 0x57, 0xfc, 0x6e, 0xfb, 0xd1, 0xfc, 0xe3, 0xfb, 0x40, 0xfd, 0x58, 0xfc, 0xaa, 0xfd, 0xd2, 0xfc, 0x16, 0xfe, 0x54, 0xfd, 0x88, 0xfe, 0xe0, 0xfd, 0xfe, 0xfe, 0x76, 0xfe, 0x76, 0xff, 0x14, 0xff, 0xf2, 0xff, 0xb5, 0xff, 0x70, 0x00, 0x52, 0x00, 0xed, 0x00, 0xe2, 0x00, 0x63, 0x01, 0x5e, 0x01, 0xc8, 0x01, 0xc6, 0x01, 0x1a, 0x02, 0x1c, 0x02, 0x5c, 0x02, 0x6d, 0x02, 0x96, 0x02, 0xc8, 0x02, 0xd5, 0x02, 0x33, 0x03, 0x21, 0x03, 0xa3, 0x03, 0x79, 0x03, 0x0c, 0x04, 0xd5, 0x03, 0x61, 0x04, 0x2b, 0x04, 0x95, 0x04, 0x6a, 0x04, 0xa4, 0x04, 0x89, 0x04, 0x9d, 0x04, 0x8f, 0x04, 0x93, 0x04, 0x8e, 0x04, 0x86, 0x04, 0x8a, 0x04, 0x77, 0x04, 0x84, 0x04, 0x6f, 0x04, 0x84, 0x04, 0x6c, 0x04, 0x86, 0x04, 0x67, 0x04, 0x85, 0x04, 0x5d, 0x04, 0x7c, 0x04, 0x40, 0x04, 0x63, 0x04, 0x08, 0x04, 0x32, 0x04, 0xbc, 0x03, 0xed, 0x03, 0x6b, 0x03, 0xa1, 0x03, 0x1f, 0x03, 0x56, 0x03, 0xdd, 0x02, 0x0f, 0x03, 0xa4, 0x02, 0xcc, 0x02, 0x6d, 0x02, 0x87, 0x02, 0x34, 0x02, 0x3d, 0x02, 0xef, 0x01, 0xe8, 0x01, 0x95, 0x01, 0x81, 0x01, 0x27, 0x01, 0x0c, 0x01, 0xaf, 0x00, 0x92, 0x00, 0x34, 0x00, 0x19, 0x00, 0xc1, 0xff, 0xa2, 0xff, 0x5f, 0xff, 0x35, 0xff, 0x08, 0xff, 0xca, 0xfe, 0xb4, 0xfe, 0x5e, 0xfe, 0x64, 0xfe, 0xf8, 0xfd, 0x18, 0xfe, 0x9a, 0xfd, 0xc8, 0xfd, 0x3b, 0xfd, 0x74, 0xfd, 0xd9, 0xfc, 0x1e, 0xfd, 0x76, 0xfc, 0xc3, 0xfc, 0x0e, 0xfc, 0x69, 0xfc, 0xa9, 0xfb, 0x1d, 0xfc, 0x50, 0xfb, 0xe7, 0xfb, 0x0a, 0xfb, 0xcc, 0xfb, 0xdc, 0xfa, 0xc9, 0xfb, 0xc5, 0xfa, 0xd2, 0xfb, 0xbd, 0xfa, 0xdd, 0xfb, 0xbb, 0xfa, 0xdd, 0xfb, 0xb2, 0xfa, 0xcd, 0xfb, 0x9b, 0xfa, 0xbc, 0xfb, 0x85, 0xfa, 0xb7, 0xfb, 0x80, 0xfa, 0xbe, 0xfb, 0x8c, 0xfa, 0xcf, 0xfb, 0xa4, 0xfa, 0xeb, 0xfb, 0xc7, 0xfa, 0x10, 0xfc, 0xee, 0xfa, 0x39, 0xfc, 0x14, 0xfb, 0x65, 0xfc, 0x42, 0xfb, 0x96, 0xfc, 0x80, 0xfb, 0xc0, 0xfc, 0xc5, 0xfb, 0xe8, 0xfc, 0x0e, 0xfc, 0x1a, 0xfd, 0x5f, 0xfc, 0x5f, 0xfd, 0xb8, 0xfc, 0xb1, 0xfd, 0x12, 0xfd, 0x0e, 0xfe, 0x6a, 0xfd, 0x79, 0xfe, 0xc9, 0xfd, 0xea, 0xfe, 0x2e, 0xfe, 0x5a, 0xff, 0x97, 0xfe, 0xcb, 0xff, 0x0d, 0xff, 0x39, 0x00, 0x8d, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x06, 0x01, 0x7d, 0x00, 0x75, 0x01, 0xec, 0x00, 0xee, 0x01, 0x59, 0x01, 0x71, 0x02, 0xc8, 0x01, 0xf7, 0x02, 0x3d, 0x02, 0x7b, 0x03, 0xb6, 0x02, 0xf3, 0x03, 0x27, 0x03, 0x56, 0x04, 0x85, 0x03, 0xa9, 0x04, 0xd2, 0x03, 0xf1, 0x04, 0x0c, 0x04, 0x2b, 0x05, 0x31, 0x04, 0x5f, 0x05, 0x49, 0x04, 0x9b, 0x05, 0x6c, 0x04, 0xdf, 0x05, 0xa0, 0x04, 0x1d, 0x06, 0xda, 0x04, 0x51, 0x06, 0x14, 0x05, 0x78, 0x06, 0x44, 0x05, 0x88, 0x06, 0x5d, 0x05, 0x85, 0x06, 0x62, 0x05, 0x76, 0x06, 0x5f, 0x05, 0x5c, 0x06, 0x58, 0x05, 0x39, 0x06, 0x4e, 0x05, 0x14, 0x06, 0x46, 0x05, 0xe8, 0x05, 0x3e, 0x05, 0xab, 0x05, 0x2c, 0x05, 0x63, 0x05, 0x14, 0x05, 0x19, 0x05, 0xfc, 0x04, 0xca, 0x04, 0xdd, 0x04, 0x75, 0x04, 0xb4, 0x04, 0x19, 0x04, 0x82, 0x04, 0xb2, 0x03, 0x46, 0x04, 0x3d, 0x03, 0xfd, 0x03, 0xbb, 0x02, 0xa9, 0x03, 0x3a, 0x02, 0x56, 0x03, 0xc2, 0x01, 0x0b, 0x03, 0x5d, 0x01, 0xcb, 0x02, 0x03, 0x01, 0x8a, 0x02, 0xaa, 0x00, 0x38, 0x02, 0x42, 0x00, 0xc9, 0x01, 0xbe, 0xff, 0x3f, 0x01, 0x26, 0xff, 0xac, 0x00, 0x90, 0xfe, 0x27, 0x00, 0x08, 0xfe, 0xb6, 0xff, 0x97, 0xfd, 0x58, 0xff, 0x44, 0xfd, 0x0e, 0xff, 0x02, 0xfd, 0xcc, 0xfe, 0xc0, 0xfc, 0x84, 0xfe, 0x73, 0xfc, 0x2c, 0xfe, 0x1c, 0xfc, 0xc8, 0xfd, 0xb9, 0xfb, 0x5d, 0xfd, 0x53, 0xfb, 0xfe, 0xfc, 0xfd, 0xfa, 0xc0, 0xfc, 0xbc, 0xfa, 0x9e, 0xfc, 0x92, 0xfa, 0x8d, 0xfc, 0x85, 0xfa, 0x86, 0xfc, 0x8f, 0xfa, 0x84, 0xfc, 0x97, 0xfa, 0x7c, 0xfc, 0x96, 0xfa, 0x72, 0xfc, 0x8e, 0xfa, 0x70, 0xfc, 0x88, 0xfa, 0x77, 0xfc, 0x8d, 0xfa, 0x86, 0xfc, 0xaa, 0xfa, 0xa3, 0xfc, 0xe0, 0xfa, 0xcb, 0xfc, 0x24, 0xfb, 0xf9, 0xfc, 0x6f, 0xfb, 0x2c, 0xfd, 0xb7, 0xfb, 0x61, 0xfd, 0xf8, 0xfb, 0x98, 0xfd, 0x33, 0xfc, 0xcd, 0xfd, 0x6c, 0xfc, 0xfb, 0xfd, 0xa9, 0xfc, 0x1c, 0xfe, 0xec, 0xfc, 0x31, 0xfe, 0x2f, 0xfd, 0x3c, 0xfe, 0x70, 0xfd, 0x46, 0xfe, 0xb4, 0xfd, 0x60, 0xfe, 0xff, 0xfd, 0x90, 0xfe, 0x56, 0xfe, 0xd5, 0xfe, 0xb0, 0xfe, 0x21, 0xff, 0x04, 0xff, 0x64, 0xff, 0x49, 0xff, 0x91, 0xff, 0x80, 0xff, 0xa7, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xf1, 0xff, 0xc8, 0xff, 0x38, 0x00, 0xf1, 0xff, 0x86, 0x00, 0x31, 0x00, 0xd1, 0x00, 0x7d, 0x00, 0x13, 0x01, 0xc0, 0x00, 0x4d, 0x01, 0xf0, 0x00, 0x7e, 0x01, 0x0a, 0x01, 0xa5, 0x01, 0x17, 0x01, 0xc7, 0x01, 0x28, 0x01, 0xe9, 0x01, 0x44, 0x01, 0x12, 0x02, 0x6a, 0x01, 0x41, 0x02, 0x96, 0x01, 0x76, 0x02, 0xc3, 0x01, 0xa1, 0x02, 0xea, 0x01, 0xbe, 0x02, 0x0c, 0x02, 0xcd, 0x02, 0x27, 0x02, 0xd6, 0x02, 0x3b, 0x02, 0xde, 0x02, 0x49, 0x02, 0xe7, 0x02, 0x52, 0x02, 0xef, 0x02, 0x58, 0x02, 0xef, 0x02, 0x50, 0x02, 0xe1, 0x02, 0x37, 0x02, 0xc4, 0x02, 0x11, 0x02, 0xa8, 0x02, 0xf2, 0x01, 0x93, 0x02, 0xe6, 0x01, 0x85, 0x02, 0xeb, 0x01, 0x79, 0x02, 0xf5, 0x01, 0x60, 0x02, 0xec, 0x01, 0x2a, 0x02, 0xc0, 0x01, 0xd5, 0x01, 0x72, 0x01, 0x6d, 0x01, 0x15, 0x01, 0xff, 0x00, 0xb8, 0x00, 0x98, 0x00, 0x65, 0x00, 0x46, 0x00, 0x28, 0x00, 0x0a, 0x00, 0xff, 0xff, 0xd3, 0xff, 0xd9, 0xff, 0x92, 0xff, 0xa9, 0xff, 0x3a, 0xff, 0x66, 0xff, 0xca, 0xfe, 0x10, 0xff, 0x50, 0xfe, 0xb6, 0xfe, 0xe3, 0xfd, 0x6d, 0xfe, 0x94, 0xfd, 0x3a, 0xfe, 0x5e, 0xfd, 0x0f, 0xfe, 0x3e, 0xfd, 0xe6, 0xfd, 0x29, 0xfd, 0xbb, 0xfd, 0x16, 0xfd, 0x8e, 0xfd, 0x02, 0xfd, 0x66, 0xfd, 0xea, 0xfc, 0x41, 0xfd, 0xd2, 0xfc, 0x1d, 0xfd, 0xbf, 0xfc, 0xf3, 0xfc, 0xb5, 0xfc, 0xc4, 0xfc, 0xb7, 0xfc, 0x94, 0xfc, 0xcf, 0xfc, 0x70, 0xfc, 0xf9, 0xfc, 0x5d, 0xfc, 0x30, 0xfd, 0x5c, 0xfc, 0x6a, 0xfd, 0x68, 0xfc, 0xa0, 0xfd, 0x77, 0xfc, 0xcf, 0xfd, 0x81, 0xfc, 0xfa, 0xfd, 0x80, 0xfc, 0x23, 0xfe, 0x73, 0xfc, 0x49, 0xfe, 0x5d, 0xfc, 0x6c, 0xfe, 0x4a, 0xfc, 0x91, 0xfe, 0x4b, 0xfc, 0xc2, 0xfe, 0x68, 0xfc, 0x06, 0xff, 0x9d, 0xfc, 0x5c, 0xff, 0xde, 0xfc, 0xba, 0xff, 0x1b, 0xfd, 0x0d, 0x00, 0x49, 0xfd, 0x54, 0x00, 0x74, 0xfd, 0x91, 0x00, 0xa9, 0xfd, 0xd0, 0x00, 0xf2, 0xfd, 0x19, 0x01, 0x50, 0xfe, 0x75, 0x01, 0xc1, 0xfe, 0xe4, 0x01, 0x3c, 0xff, 0x57, 0x02, 0xb1, 0xff, 0xc2, 0x02, 0x16, 0x00, 0x1b, 0x03, 0x69, 0x00, 0x5f, 0x03, 0xb1, 0x00, 0x95, 0x03, 0xfa, 0x00, 0xbf, 0x03, 0x4c, 0x01, 0xe5, 0x03, 0xa7, 0x01, 0x17, 0x04, 0x0b, 0x02, 0x57, 0x04, 0x6f, 0x02, 0x9b, 0x04, 0xc8, 0x02, 0xd8, 0x04, 0x13, 0x03, 0x00, 0x05, 0x4d, 0x03, 0x0e, 0x05, 0x78, 0x03, 0x0b, 0x05, 0x9e, 0x03, 0x09, 0x05, 0xcf, 0x03, 0x0d, 0x05, 0x0a, 0x04, 0x11, 0x05, 0x47, 0x04, 0x0c, 0x05, 0x78, 0x04, 0xf5, 0x04, 0x90, 0x04, 0xcc, 0x04, 0x90, 0x04, 0x99, 0x04, 0x80, 0x04, 0x67, 0x04, 0x71, 0x04, 0x3f, 0x04, 0x6f, 0x04, 0x20, 0x04, 0x78, 0x04, 0xfd, 0x03, 0x82, 0x04, 0xcb, 0x03, 0x7e, 0x04, 0x87, 0x03, 0x66, 0x04, 0x37, 0x03, 0x41, 0x04, 0xe8, 0x02, 0x19, 0x04, 0xa5, 0x02, 0xf5, 0x03, 0x69, 0x02, 0xd3, 0x03, 0x28, 0x02, 0xa6, 0x03, 0xe5, 0x01, 0x70, 0x03, 0xa4, 0x01, 0x3b, 0x03, 0x5a, 0x01, 0x01, 0x03, 0x05, 0x01, 0xc4, 0x02, 0xaa, 0x00, 0x87, 0x02, 0x4f, 0x00, 0x4c, 0x02, 0xfa, 0xff, 0x15, 0x02, 0xab, 0xff, 0xde, 0x01, 0x5a, 0xff, 0xa0, 0x01, 0xf9, 0xfe, 0x52, 0x01, 0x8d, 0xfe, 0xfa, 0x00, 0x27, 0xfe, 0xa6, 0x00, 0xcf, 0xfd, 0x61, 0x00, 0x89, 0xfd, 0x2b, 0x00, 0x4c, 0xfd, 0xfb, 0xff, 0x0b, 0xfd, 0xc4, 0xff, 0xc1, 0xfc, 0x83, 0xff, 0x79, 0xfc, 0x3f, 0xff, 0x3b, 0xfc, 0x00, 0xff, 0x0e, 0xfc, 0xcc, 0xfe, 0xf7, 0xfb, 0xa9, 0xfe, 0xe9, 0xfb, 0x8d, 0xfe, 0xd4, 0xfb, 0x68, 0xfe, 0xb3, 0xfb, 0x34, 0xfe, 0x8a, 0xfb, 0xf3, 0xfd, 0x68, 0xfb, 0xb4, 0xfd, 0x5f, 0xfb, 0x88, 0xfd, 0x75, 0xfb, 0x78, 0xfd, 0x9f, 0xfb, 0x78, 0xfd, 0xcf, 0xfb, 0x76, 0xfd, 0x01, 0xfc, 0x6c, 0xfd, 0x2c, 0xfc, 0x55, 0xfd, 0x50, 0xfc, 0x30, 0xfd, 0x75, 0xfc, 0x08, 0xfd, 0xa5, 0xfc, 0xe3, 0xfc, 0xe8, 0xfc, 0xcd, 0xfc, 0x41, 0xfd, 0xcc, 0xfc, 0xb0, 0xfd, 0xe7, 0xfc, 0x28, 0xfe, 0x16, 0xfd, 0x9b, 0xfe, 0x4a, 0xfd, 0xfd, 0xfe, 0x70, 0xfd, 0x4f, 0xff, 0x81, 0xfd, 0x97, 0xff, 0x88, 0xfd, 0xe6, 0xff, 0x97, 0xfd, 0x47, 0x00, 0xc0, 0xfd, 0xb8, 0x00, 0x0c, 0xfe, 0x2a, 0x01, 0x72, 0xfe, 0x85, 0x01, 0xd6, 0xfe, 0xbd, 0x01, 0x28, 0xff, 0xdb, 0x01, 0x6b, 0xff, 0xed, 0x01, 0xa7, 0xff, 0x00, 0x02, 0xe5, 0xff, 0x1d, 0x02, 0x2c, 0x00, 0x40, 0x02, 0x7d, 0x00, 0x61, 0x02, 0xd3, 0x00, 0x81, 0x02, 0x2e, 0x01, 0xa0, 0x02, 0x90, 0x01, 0xb7, 0x02, 0xec, 0x01, 0xc2, 0x02, 0x33, 0x02, 0xc9, 0x02, 0x67, 0x02, 0xd5, 0x02, 0x94, 0x02, 0xe7, 0x02, 0xbd, 0x02, 0xfc, 0x02, 0xe1, 0x02, 0x0f, 0x03, 0x01, 0x03, 0x1b, 0x03, 0x1d, 0x03, 0x21, 0x03, 0x33, 0x03, 0x1f, 0x03, 0x41, 0x03, 0x1c, 0x03, 0x4d, 0x03, 0x1b, 0x03, 0x5a, 0x03, 0x19, 0x03, 0x63, 0x03, 0x0f, 0x03, 0x69, 0x03, 0xf6, 0x02, 0x68, 0x03, 0xc7, 0x02, 0x56, 0x03, 0x84, 0x02, 0x31, 0x03, 0x36, 0x02, 0x01, 0x03, 0xec, 0x01, 0xd6, 0x02, 0xb3, 0x01, 0xbb, 0x02, 0x81, 0x01, 0xa9, 0x02, 0x48, 0x01, 0x93, 0x02, 0xff, 0x00, 0x6d, 0x02, 0xa5, 0x00, 0x33, 0x02, 0x3b, 0x00, 0xe7, 0x01, 0xcd, 0xff, 0x94, 0x01, 0x63, 0xff, 0x42, 0x01, 0xfe, 0xfe, 0xef, 0x00, 0x9e, 0xfe, 0x9b, 0x00, 0x47, 0xfe, 0x4a, 0x00, 0xf9, 0xfd, 0xfa, 0xff, 0xaf, 0xfd, 0xa8, 0xff, 0x6a, 0xfd, 0x54, 0xff, 0x2d, 0xfd, 0xfe, 0xfe, 0xf4, 0xfc, 0x9f, 0xfe, 0xbe, 0xfc, 0x3c, 0xfe, 0x92, 0xfc, 0xe0, 0xfd, 0x71, 0xfc, 0x8e, 0xfd, 0x53, 0xfc, 0x40, 0xfd, 0x3d, 0xfc, 0xf3, 0xfc, 0x36, 0xfc, 0xae, 0xfc, 0x40, 0xfc, 0x74, 0xfc, 0x53, 0xfc, 0x47, 0xfc, 0x68, 0xfc, 0x26, 0xfc, 0x7c, 0xfc, 0x08, 0xfc, 0x88, 0xfc, 0xe6, 0xfb, 0x8f, 0xfc, 0xc0, 0xfb, 0x9f, 0xfc, 0xa5, 0xfb, 0xbf, 0xfc, 0x9e, 0xfb, 0xe7, 0xfc, 0xa9, 0xfb, 0x14, 0xfd, 0xc2, 0xfb, 0x48, 0xfd, 0xee, 0xfb, 0x7a, 0xfd, 0x2a, 0xfc, 0xa3, 0xfd, 0x6e, 0xfc, 0xc3, 0xfd, 0xb2, 0xfc, 0xe3, 0xfd, 0xf4, 0xfc, 0x03, 0xfe, 0x31, 0xfd, 0x22, 0xfe, 0x6b, 0xfd, 0x47, 0xfe, 0xb1, 0xfd, 0x71, 0xfe, 0x0b, 0xfe, 0x95, 0xfe, 0x6b, 0xfe, 0xb8, 0xfe, 0xcb, 0xfe, 0xe8, 0xfe, 0x2d, 0xff, 0x27, 0xff, 0x8c, 0xff, 0x6d, 0xff, 0xde, 0xff, 0xb6, 0xff, 0x26, 0x00, 0xfe, 0xff, 0x64, 0x00, 0x3d, 0x00, 0x9a, 0x00, 0x77, 0x00, 0xcf, 0x00, 0xb7, 0x00, 0x0e, 0x01, 0xff, 0x00, 0x57, 0x01, 0x4c, 0x01, 0x9e, 0x01, 0x9e, 0x01, 0xde, 0x01, 0xf3, 0x01, 0x0e, 0x02, 0x3f, 0x02, 0x2f, 0x02, 0x7e, 0x02, 0x4b, 0x02, 0xa9, 0x02, 0x6b, 0x02, 0xc5, 0x02, 0x92, 0x02, 0xdb, 0x02, 0xc1, 0x02, 0xf6, 0x02, 0xf7, 0x02, 0x1a, 0x03, 0x31, 0x03, 0x44, 0x03, 0x70, 0x03, 0x68, 0x03, 0xad, 0x03, 0x7c, 0x03, 0xe1, 0x03, 0x80, 0x03, 0x03, 0x04, 0x73, 0x03, 0x11, 0x04, 0x54, 0x03, 0x0e, 0x04, 0x24, 0x03, 0x02, 0x04, 0xe8, 0x02, 0xf5, 0x03, 0xa4, 0x02, 0xe8, 0x03, 0x60, 0x02, 0xd8, 0x03, 0x20, 0x02, 0xbf, 0x03, 0xe1, 0x01, 0x94, 0x03, 0x9f, 0x01, 0x53, 0x03, 0x5a, 0x01, 0x04, 0x03, 0x17, 0x01, 0xb3, 0x02, 0xd7, 0x00, 0x6a, 0x02, 0x94, 0x00, 0x28, 0x02, 0x48, 0x00, 0xe4, 0x01, 0xf3, 0xff, 0x97, 0x01, 0x9b, 0xff, 0x3d, 0x01, 0x46, 0xff, 0xd5, 0x00, 0xfd, 0xfe, 0x64, 0x00, 0xc3, 0xfe, 0xf2, 0xff, 0x93, 0xfe, 0x85, 0xff, 0x62, 0xfe, 0x1d, 0xff, 0x2b, 0xfe, 0xbd, 0xfe, 0xf0, 0xfd, 0x63, 0xfe, 0xb6, 0xfd, 0x0e, 0xfe, 0x83, 0xfd, 0xb7, 0xfd, 0x61, 0xfd, 0x62, 0xfd, 0x4f, 0xfd, 0x12, 0xfd, 0x47, 0xfd, 0xc7, 0xfc, 0x44, 0xfd, 0x83, 0xfc, 0x44, 0xfd, 0x47, 0xfc, 0x41, 0xfd, 0x12, 0xfc, 0x3c, 0xfd, 0xe2, 0xfb, 0x3a, 0xfd, 0xb8, 0xfb, 0x39, 0xfd, 0x98, 0xfb, 0x35, 0xfd, 0x7e, 0xfb, 0x2e, 0xfd, 0x67, 0xfb, 0x2b, 0xfd, 0x56, 0xfb, 0x32, 0xfd, 0x50, 0xfb, 0x42, 0xfd, 0x53, 0xfb, 0x5f, 0xfd, 0x63, 0xfb, 0x87, 0xfd, 0x83, 0xfb, 0xb1, 0xfd, 0xaa, 0xfb, 0xd8, 0xfd, 0xcf, 0xfb, 0xfe, 0xfd, 0xf2, 0xfb, 0x24, 0xfe, 0x16, 0xfc, 0x47, 0xfe, 0x39, 0xfc, 0x6c, 0xfe, 0x5e, 0xfc, 0x9b, 0xfe, 0x8e, 0xfc, 0xd4, 0xfe, 0xc5, 0xfc, 0x0d, 0xff, 0xfa, 0xfc, 0x45, 0xff, 0x2c, 0xfd, 0x7f, 0xff, 0x61, 0xfd, 0xbc, 0xff, 0x9a, 0xfd, 0x01, 0x00, 0xdb, 0xfd, 0x4e, 0x00, 0x24, 0xfe, 0x98, 0x00, 0x6d, 0xfe, 0xd6, 0x00, 0xad, 0xfe, 0x08, 0x01, 0xe5, 0xfe, 0x31, 0x01, 0x1e, 0xff, 0x58, 0x01, 0x5d, 0xff, 0x89, 0x01, 0xa6, 0xff, 0xc7, 0x01, 0xf8, 0xff, 0x0e, 0x02, 0x4b, 0x00, 0x55, 0x02, 0x99, 0x00, 0x91, 0x02, 0xe0, 0x00, 0xbf, 0x02, 0x21, 0x01, 0xd9, 0x02, 0x5c, 0x01, 0xe7, 0x02, 0x8f, 0x01, 0xed, 0x02, 0xb8, 0x01, 0xf8, 0x02, 0xd9, 0x01, 0x0e, 0x03, 0xf9, 0x01, 0x2c, 0x03, 0x18, 0x02, 0x49, 0x03, 0x38, 0x02, 0x5a, 0x03, 0x56, 0x02, 0x56, 0x03, 0x69, 0x02, 0x3d, 0x03, 0x6f, 0x02, 0x1c, 0x03, 0x72, 0x02, 0x02, 0x03, 0x79, 0x02, 0xed, 0x02, 0x82, 0x02, 0xdb, 0x02, 0x86, 0x02, 0xcc, 0x02, 0x84, 0x02, 0xbb, 0x02, 0x7e, 0x02, 0xa5, 0x02, 0x73, 0x02, 0x89, 0x02, 0x67, 0x02, 0x66, 0x02, 0x58, 0x02, 0x3c, 0x02, 0x43, 0x02, 0x0d, 0x02, 0x27, 0x02, 0xda, 0x01, 0x05, 0x02, 0xa2, 0x01, 0xdf, 0x01, 0x64, 0x01, 0xb4, 0x01, 0x24, 0x01, 0x81, 0x01, 0xe3, 0x00, 0x44, 0x01, 0xa4, 0x00, 0x02, 0x01, 0x68, 0x00, 0xc2, 0x00, 0x2c, 0x00, 0x88, 0x00, 0xeb, 0xff, 0x50, 0x00, 0xa6, 0xff, 0x1a, 0x00, 0x5d, 0xff, 0xe3, 0xff, 0x0e, 0xff, 0xa3, 0xff, 0xba, 0xfe, 0x5d, 0xff, 0x64, 0xfe, 0x11, 0xff, 0x15, 0xfe, 0xcc, 0xfe, 0xd3, 0xfd, 0x98, 0xfe, 0x9d, 0xfd, 0x79, 0xfe, 0x6e, 0xfd, 0x69, 0xfe, 0x3f, 0xfd, 0x5c, 0xfe, 0x11, 0xfd, 0x48, 0xfe, 0xe5, 0xfc, 0x2a, 0xfe, 0xc5, 0xfc, 0x0a, 0xfe, 0xb8, 0xfc, 0xf5, 0xfd, 0xbe, 0xfc, 0xf0, 0xfd, 0xcb, 0xfc, 0xf9, 0xfd, 0xe1, 0xfc, 0x13, 0xfe, 0x01, 0xfd, 0x39, 0xfe, 0x29, 0xfd, 0x63, 0xfe, 0x5d, 0xfd, 0x89, 0xfe, 0x9f, 0xfd, 0xb0, 0xfe, 0xe7, 0xfd, 0xd5, 0xfe, 0x27, 0xfe, 0xf8, 0xfe, 0x5f, 0xfe, 0x1c, 0xff, 0x8e, 0xfe, 0x43, 0xff, 0xb9, 0xfe, 0x6c, 0xff, 0xe5, 0xfe, 0x97, 0xff, 0x1a, 0xff, 0xc6, 0xff, 0x5c, 0xff, 0xfc, 0xff, 0xa8, 0xff, 0x36, 0x00, 0xf6, 0xff, 0x72, 0x00, 0x3a, 0x00, 0xaf, 0x00, 0x70, 0x00, 0xed, 0x00, 0x99, 0x00, 0x28, 0x01, 0xbd, 0x00, 0x5e, 0x01, 0xe4, 0x00, 0x8c, 0x01, 0x14, 0x01, 0xb5, 0x01, 0x4f, 0x01, 0xe0, 0x01, 0x8e, 0x01, 0x12, 0x02, 0xcf, 0x01, 0x4c, 0x02, 0x09, 0x02, 0x85, 0x02, 0x32, 0x02, 0xb2, 0x02, 0x4f, 0x02, 0xd0, 0x02, 0x67, 0x02, 0xe5, 0x02, 0x83, 0x02, 0xf8, 0x02, 0xa5, 0x02, 0x0e, 0x03, 0xca, 0x02, 0x25, 0x03, 0xe8, 0x02, 0x34, 0x03, 0xfe, 0x02, 0x38, 0x03, 0x0e, 0x03, 0x37, 0x03, 0x19, 0x03, 0x34, 0x03, 0x1c, 0x03, 0x2e, 0x03, 0x14, 0x03, 0x21, 0x03, 0xfe, 0x02, 0x07, 0x03, 0xdd, 0x02, 0xe0, 0x02, 0xb6, 0x02, 0xb2, 0x02, 0x92, 0x02, 0x8a, 0x02, 0x71, 0x02, 0x67, 0x02, 0x56, 0x02, 0x46, 0x02, 0x44, 0x02, 0x27, 0x02, 0x32, 0x02, 0x09, 0x02, 0x16, 0x02, 0xed, 0x01, 0xee, 0x01, 0xd3, 0x01, 0xb7, 0x01, 0xb3, 0x01, 0x74, 0x01, 0x87, 0x01, 0x30, 0x01, 0x50, 0x01, 0xf1, 0x00, 0x18, 0x01, 0xbd, 0x00, 0xe9, 0x00, 0x90, 0x00, 0xc2, 0x00, 0x65, 0x00, 0xa0, 0x00, 0x39, 0x00, 0x7f, 0x00, 0x08, 0x00, 0x59, 0x00, 0xd2, 0xff, 0x2c, 0x00, 0x99, 0xff, 0xf8, 0xff, 0x62, 0xff, 0xbf, 0xff, 0x30, 0xff, 0x83, 0xff, 0x0a, 0xff, 0x4b, 0xff, 0xf1, 0xfe, 0x1d, 0xff, 0xe1, 0xfe, 0xf8, 0xfe, 0xd4, 0xfe, 0xd9, 0xfe, 0xc5, 0xfe, 0xbc, 0xfe, 0xb3, 0xfe, 0x9e, 0xfe, 0x9a, 0xfe, 0x80, 0xfe, 0x7c, 0xfe, 0x60, 0xfe, 0x5d, 0xfe, 0x43, 0xfe, 0x3d, 0xfe, 0x28, 0xfe, 0x1c, 0xfe, 0x0c, 0xfe, 0xfb, 0xfd, 0xf2, 0xfd, 0xdb, 0xfd, 0xdb, 0xfd, 0xb7, 0xfd, 0xc4, 0xfd, 0x8e, 0xfd, 0xad, 0xfd, 0x69, 0xfd, 0x9f, 0xfd, 0x4e, 0xfd, 0x9f, 0xfd, 0x39, 0xfd, 0xaa, 0xfd, 0x23, 0xfd, 0xbf, 0xfd, 0x08, 0xfd, 0xd6, 0xfd, 0xed, 0xfc, 0xe9, 0xfd, 0xe0, 0xfc, 0xfc, 0xfd, 0xeb, 0xfc, 0x18, 0xfe, 0x09, 0xfd, 0x40, 0xfe, 0x2f, 0xfd, 0x74, 0xfe, 0x50, 0xfd, 0xa9, 0xfe, 0x6c, 0xfd, 0xdb, 0xfe, 0x91, 0xfd, 0x08, 0xff, 0xc3, 0xfd, 0x37, 0xff, 0x03, 0xfe, 0x6d, 0xff, 0x49, 0xfe, 0xad, 0xff, 0x8e, 0xfe, 0xef, 0xff, 0xcd, 0xfe, 0x29, 0x00, 0x05, 0xff, 0x58, 0x00, 0x40, 0xff, 0x81, 0x00, 0x7f, 0xff, 0xab, 0x00, 0xc3, 0xff, 0xd7, 0x00, 0x09, 0x00, 0x00, 0x01, 0x4b, 0x00, 0x19, 0x01, 0x7f, 0x00, 0x1c, 0x01, 0xa2, 0x00, 0x14, 0x01, 0xc0, 0x00, 0x10, 0x01, 0xdd, 0x00, 0x14, 0x01, 0xf9, 0x00, 0x17, 0x01, 0x17, 0x01, 0x15, 0x01, 0x3a, 0x01, 0x10, 0x01, 0x5e, 0x01, 0x06, 0x01, 0x7c, 0x01, 0x00, 0x01, 0x96, 0x01, 0x01, 0x01, 0xa7, 0x01, 0x05, 0x01, 0xaf, 0x01, 0x07, 0x01, 0xad, 0x01, 0x08, 0x01, 0xaa, 0x01, 0x08, 0x01, 0xa7, 0x01, 0x04, 0x01, 0x9e, 0x01, 0xf7, 0x00, 0x90, 0x01, 0xe4, 0x00, 0x7f, 0x01, 0xd1, 0x00, 0x6a, 0x01, 0xc1, 0x00, 0x52, 0x01, 0xb6, 0x00, 0x39, 0x01, 0xa9, 0x00, 0x1e, 0x01, 0x95, 0x00, 0xff, 0x00, 0x73, 0x00, 0xd9, 0x00, 0x44, 0x00, 0xb1, 0x00, 0x0f, 0x00, 0x89, 0x00, 0xd7, 0xff, 0x62, 0x00, 0xa1, 0xff, 0x41, 0x00, 0x70, 0xff, 0x27, 0x00, 0x46, 0xff, 0x0f, 0x00, 0x21, 0xff, 0xf7, 0xff, 0xff, 0xfe, 0xe0, 0xff, 0xde, 0xfe, 0xc6, 0xff, 0xb8, 0xfe, 0xa9, 0xff, 0x8e, 0xfe, 0x8e, 0xff, 0x6b, 0xfe, 0x75, 0xff, 0x51, 0xfe, 0x5d, 0xff, 0x3a, 0xfe, 0x40, 0xff, 0x1e, 0xfe, 0x22, 0xff, 0x01, 0xfe, 0x02, 0xff, 0xe5, 0xfd, 0xd9, 0xfe, 0xcd, 0xfd, 0xa9, 0xfe, 0xbf, 0xfd, 0x77, 0xfe, 0xb6, 0xfd, 0x47, 0xfe, 0xab, 0xfd, 0x1a, 0xfe, 0x96, 0xfd, 0xf5, 0xfd, 0x80, 0xfd, 0xdc, 0xfd, 0x70, 0xfd, 0xc9, 0xfd, 0x69, 0xfd, 0xc0, 0xfd, 0x73, 0xfd, 0xc5, 0xfd, 0x8f, 0xfd, 0xd2, 0xfd, 0xb9, 0xfd, 0xdd, 0xfd, 0xe1, 0xfd, 0xe0, 0xfd, 0xff, 0xfd, 0xda, 0xfd, 0x0f, 0xfe, 0xca, 0xfd, 0x13, 0xfe, 0xb7, 0xfd, 0x15, 0xfe, 0xa7, 0xfd, 0x22, 0xfe, 0xa4, 0xfd, 0x43, 0xfe, 0xae, 0xfd, 0x77, 0xfe, 0xbd, 0xfd, 0xb1, 0xfe, 0xcf, 0xfd, 0xef, 0xfe, 0xe9, 0xfd, 0x2e, 0xff, 0x06, 0xfe, 0x68, 0xff, 0x20, 0xfe, 0x96, 0xff, 0x3b, 0xfe, 0xc0, 0xff, 0x5d, 0xfe, 0xf0, 0xff, 0x83, 0xfe, 0x29, 0x00, 0xb2, 0xfe, 0x6d, 0x00, 0xec, 0xfe, 0xb6, 0x00, 0x2b, 0xff, 0xf9, 0x00, 0x66, 0xff, 0x2f, 0x01, 0x9e, 0xff, 0x5f, 0x01, 0xd6, 0xff, 0x8e, 0x01, 0x11, 0x00, 0xbf, 0x01, 0x4f, 0x00, 0xf1, 0x01, 0x8c, 0x00, 0x1d, 0x02, 0xc3, 0x00, 0x3d, 0x02, 0xf1, 0x00, 0x52, 0x02, 0x1b, 0x01, 0x63, 0x02, 0x4c, 0x01, 0x7a, 0x02, 0x8c, 0x01, 0x9d, 0x02, 0xd3, 0x01, 0xc4, 0x02, 0x11, 0x02, 0xe2, 0x02, 0x3e, 0x02, 0xef, 0x02, 0x58, 0x02, 0xe9, 0x02, 0x68, 0x02, 0xd8, 0x02, 0x7a, 0x02, 0xc3, 0x02, 0x96, 0x02, 0xb5, 0x02, 0xb1, 0x02, 0xa7, 0x02, 0xc3, 0x02, 0x96, 0x02, 0xd0, 0x02, 0x86, 0x02, 0xda, 0x02, 0x74, 0x02, 0xe4, 0x02, 0x5f, 0x02, 0xf4, 0x02, 0x4a, 0x02, 0x05, 0x03, 0x33, 0x02, 0x09, 0x03, 0x16, 0x02, 0xfc, 0x02, 0xf1, 0x01, 0xe4, 0x02, 0xcb, 0x01, 0xbf, 0x02, 0x9f, 0x01, 0x93, 0x02, 0x6f, 0x01, 0x67, 0x02, 0x3f, 0x01, 0x3c, 0x02, 0x0e, 0x01, 0x0e, 0x02, 0xd6, 0x00, 0xd6, 0x01, 0x96, 0x00, 0x96, 0x01, 0x57, 0x00, 0x4f, 0x01, 0x1e, 0x00, 0x01, 0x01, 0xeb, 0xff, 0xb2, 0x00, 0xbc, 0xff, 0x64, 0x00, 0x87, 0xff, 0x1e, 0x00, 0x4f, 0xff, 0xe2, 0xff, 0x17, 0xff, 0xac, 0xff, 0xe2, 0xfe, 0x77, 0xff, 0xb0, 0xfe, 0x3d, 0xff, 0x83, 0xfe, 0xfa, 0xfe, 0x56, 0xfe, 0xaf, 0xfe, 0x27, 0xfe, 0x68, 0xfe, 0xff, 0xfd, 0x2d, 0xfe, 0xde, 0xfd, 0x00, 0xfe, 0xc4, 0xfd, 0xde, 0xfd, 0xb0, 0xfd, 0xbf, 0xfd, 0xa0, 0xfd, 0x9b, 0xfd, 0x90, 0xfd, 0x79, 0xfd, 0x85, 0xfd, 0x5f, 0xfd, 0x82, 0xfd, 0x50, 0xfd, 0x83, 0xfd, 0x4d, 0xfd, 0x86, 0xfd, 0x53, 0xfd, 0x8f, 0xfd, 0x61, 0xfd, 0xa5, 0xfd, 0x6e, 0xfd, 0xc4, 0xfd, 0x7c, 0xfd, 0xed, 0xfd, 0x8b, 0xfd, 0x17, 0xfe, 0x97, 0xfd, 0x3a, 0xfe, 0xaa, 0xfd, 0x58, 0xfe, 0xc7, 0xfd, 0x76, 0xfe, 0xe9, 0xfd, 0x97, 0xfe, 0x12, 0xfe, 0xc1, 0xfe, 0x3a, 0xfe, 0xf1, 0xfe, 0x5b, 0xfe, 0x1e, 0xff, 0x73, 0xfe, 0x43, 0xff, 0x8b, 0xfe, 0x62, 0xff, 0xa9, 0xfe, 0x7e, 0xff, 0xd2, 0xfe, 0x98, 0xff, 0x0b, 0xff, 0xba, 0xff, 0x4e, 0xff, 0xe6, 0xff, 0x97, 0xff, 0x1a, 0x00, 0xdd, 0xff, 0x51, 0x00, 0x18, 0x00, 0x7e, 0x00, 0x47, 0x00, 0x97, 0x00, 0x72, 0x00, 0xa1, 0x00, 0xa9, 0x00, 0xab, 0x00, 0xf0, 0x00, 0xbe, 0x00, 0x48, 0x01, 0xdf, 0x00, 0xa5, 0x01, 0x08, 0x01, 0xf9, 0x01, 0x2f, 0x01, 0x43, 0x02, 0x4d, 0x01, 0x85, 0x02, 0x65, 0x01, 0xc4, 0x02, 0x78, 0x01, 0x03, 0x03, 0x8a, 0x01, 0x3d, 0x03, 0x95, 0x01, 0x6d, 0x03, 0x98, 0x01, 0x92, 0x03, 0x98, 0x01, 0xb1, 0x03, 0x96, 0x01, 0xd0, 0x03, 0x92, 0x01, 0xed, 0x03, 0x8b, 0x01, 0x09, 0x04, 0x7e, 0x01, 0x1d, 0x04, 0x66, 0x01, 0x25, 0x04, 0x44, 0x01, 0x23, 0x04, 0x1d, 0x01, 0x1a, 0x04, 0xf6, 0x00, 0x0a, 0x04, 0xce, 0x00, 0xf2, 0x03, 0xa2, 0x00, 0xd1, 0x03, 0x70, 0x00, 0xac, 0x03, 0x39, 0x00, 0x89, 0x03, 0x05, 0x00, 0x66, 0x03, 0xd4, 0xff, 0x3d, 0x03, 0xa4, 0xff, 0x08, 0x03, 0x73, 0xff, 0xc0, 0x02, 0x3d, 0xff, 0x6b, 0x02, 0xff, 0xfe, 0x13, 0x02, 0xbf, 0xfe, 0xc0, 0x01, 0x7e, 0xfe, 0x6f, 0x01, 0x41, 0xfe, 0x19, 0x01, 0x09, 0xfe, 0xbf, 0x00, 0xdb, 0xfd, 0x60, 0x00, 0xb9, 0xfd, 0xfe, 0xff, 0x9e, 0xfd, 0x9a, 0xff, 0x82, 0xfd, 0x38, 0xff, 0x61, 0xfd, 0xda, 0xfe, 0x3d, 0xfd, 0x81, 0xfe, 0x1a, 0xfd, 0x31, 0xfe, 0x00, 0xfd, 0xe9, 0xfd, 0xf3, 0xfc, 0xa3, 0xfd, 0xf3, 0xfc, 0x5e, 0xfd, 0xfa, 0xfc, 0x1b, 0xfd, 0x05, 0xfd, 0xdf, 0xfc, 0x10, 0xfd, 0xaf, 0xfc, 0x1a, 0xfd, 0x8b, 0xfc, 0x26, 0xfd, 0x74, 0xfc, 0x37, 0xfd, 0x64, 0xfc, 0x52, 0xfd, 0x52, 0xfc, 0x71, 0xfd, 0x3c, 0xfc, 0x95, 0xfd, 0x29, 0xfc, 0xbe, 0xfd, 0x1e, 0xfc, 0xeb, 0xfd, 0x22, 0xfc, 0x1d, 0xfe, 0x37, 0xfc, 0x57, 0xfe, 0x5d, 0xfc, 0x9c, 0xfe, 0x8a, 0xfc, 0xe7, 0xfe, 0xb1, 0xfc, 0x31, 0xff, 0xce, 0xfc, 0x73, 0xff, 0xe4, 0xfc, 0xaf, 0xff, 0xfe, 0xfc, 0xe9, 0xff, 0x25, 0xfd, 0x27, 0x00, 0x5c, 0xfd, 0x6c, 0x00, 0x9f, 0xfd, 0xbb, 0x00, 0xe9, 0xfd, 0x13, 0x01, 0x36, 0xfe, 0x72, 0x01, 0x86, 0xfe, 0xd2, 0x01, 0xd8, 0xfe, 0x29, 0x02, 0x2a, 0xff, 0x70, 0x02, 0x7e, 0xff, 0xab, 0x02, 0xd6, 0xff, 0xe4, 0x02, 0x34, 0x00, 0x20, 0x03, 0x93, 0x00, 0x5b, 0x03, 0xea, 0x00, 0x91, 0x03, 0x35, 0x01, 0xbd, 0x03, 0x77, 0x01, 0xdd, 0x03, 0xb7, 0x01, 0xf1, 0x03, 0xf9, 0x01, 0xf6, 0x03, 0x3a, 0x02, 0xee, 0x03, 0x74, 0x02, 0xda, 0x03, 0xa3, 0x02, 0xc1, 0x03, 0xc8, 0x02, 0xa7, 0x03, 0xea, 0x02, 0x8d, 0x03, 0x0e, 0x03, 0x73, 0x03, 0x2e, 0x03, 0x4f, 0x03, 0x43, 0x03, 0x20, 0x03, 0x50, 0x03, 0xed, 0x02, 0x56, 0x03, 0xba, 0x02, 0x55, 0x03, 0x86, 0x02, 0x4c, 0x03, 0x51, 0x02, 0x3b, 0x03, 0x18, 0x02, 0x21, 0x03, 0xda, 0x01, 0x02, 0x03, 0x99, 0x01, 0xe3, 0x02, 0x5b, 0x01, 0xc2, 0x02, 0x1f, 0x01, 0x9b, 0x02, 0xe4, 0x00, 0x6d, 0x02, 0xa8, 0x00, 0x37, 0x02, 0x68, 0x00, 0x01, 0x02, 0x2a, 0x00, 0xd1, 0x01, 0xf0, 0xff, 0xa9, 0x01, 0xbc, 0xff, 0x85, 0x01, 0x8e, 0xff, 0x5c, 0x01, 0x64, 0xff, 0x24, 0x01, 0x37, 0xff, 0xdf, 0x00, 0x05, 0xff, 0x97, 0x00, 0xd3, 0xfe, 0x58, 0x00, 0xa8, 0xfe, 0x20, 0x00, 0x81, 0xfe, 0xf5, 0xff, 0x66, 0xfe, 0xd3, 0xff, 0x59, 0xfe, 0xac, 0xff, 0x4f, 0xfe, 0x78, 0xff, 0x43, 0xfe, 0x37, 0xff, 0x3b, 0xfe, 0xed, 0xfe, 0x38, 0xfe, 0x9f, 0xfe, 0x37, 0xfe, 0x5c, 0xfe, 0x3b, 0xfe, 0x2a, 0xfe, 0x43, 0xfe, 0x03, 0xfe, 0x4b, 0xfe, 0xdf, 0xfd, 0x56, 0xfe, 0xb8, 0xfd, 0x6a, 0xfe, 0x86, 0xfd, 0x83, 0xfe, 0x4d, 0xfd, 0x9c, 0xfe, 0x16, 0xfd, 0xb6, 0xfe, 0xe9, 0xfc, 0xd2, 0xfe, 0xcf, 0xfc, 0xf6, 0xfe, 0xc6, 0xfc, 0x1c, 0xff, 0xc7, 0xfc, 0x3f, 0xff, 0xcd, 0xfc, 0x5f, 0xff, 0xd3, 0xfc, 0x7c, 0xff, 0xd4, 0xfc, 0x99, 0xff, 0xd5, 0xfc, 0xba, 0xff, 0xe1, 0xfc, 0xe2, 0xff, 0xfe, 0xfc, 0x14, 0x00, 0x2a, 0xfd, 0x4e, 0x00, 0x60, 0xfd, 0x8b, 0x00, 0x98, 0xfd, 0xc8, 0x00, 0xc7, 0xfd, 0xfc, 0x00, 0xef, 0xfd, 0x2a, 0x01, 0x19, 0xfe, 0x5a, 0x01, 0x41, 0xfe, 0x89, 0x01, 0x6a, 0xfe, 0xb7, 0x01, 0x97, 0xfe, 0xe8, 0x01, 0xc5, 0xfe, 0x17, 0x02, 0xf4, 0xfe, 0x42, 0x02, 0x22, 0xff, 0x66, 0x02, 0x54, 0xff, 0x86, 0x02, 0x86, 0xff, 0x9e, 0x02, 0xb5, 0xff, 0xac, 0x02, 0xe1, 0xff, 0xb3, 0x02, 0x0b, 0x00, 0xb6, 0x02, 0x38, 0x00, 0xbc, 0x02, 0x68, 0x00, 0xc0, 0x02, 0x9b, 0x00, 0xbf, 0x02, 0xd2, 0x00, 0xb3, 0x02, 0x0a, 0x01, 0x9a, 0x02, 0x3f, 0x01, 0x77, 0x02, 0x6c, 0x01, 0x4e, 0x02, 0x94, 0x01, 0x29, 0x02, 0xba, 0x01, 0x08, 0x02, 0xe2, 0x01, 0xe9, 0x01, 0x10, 0x02, 0xc8, 0x01, 0x40, 0x02, 0xa3, 0x01, 0x69, 0x02, 0x76, 0x01, 0x86, 0x02, 0x40, 0x01, 0x97, 0x02, 0x0a, 0x01, 0x9a, 0x02, 0xd2, 0x00, 0x93, 0x02, 0x9d, 0x00, 0x87, 0x02, 0x6a, 0x00, 0x7b, 0x02, 0x38, 0x00, 0x72, 0x02, 0x03, 0x00, 0x6c, 0x02, 0xcf, 0xff, 0x62, 0x02, 0x9b, 0xff, 0x4e, 0x02, 0x66, 0xff, 0x2d, 0x02, 0x31, 0xff, 0x00, 0x02, 0xfa, 0xfe, 0xcb, 0x01, 0xbf, 0xfe, 0x92, 0x01, 0x82, 0xfe, 0x5b, 0x01, 0x45, 0xfe, 0x29, 0x01, 0x09, 0xfe, 0xfb, 0x00, 0xcf, 0xfd, 0xd1, 0x00, 0x9d, 0xfd, 0xaa, 0x00, 0x78, 0xfd, 0x81, 0x00, 0x61, 0xfd, 0x51, 0x00, 0x4e, 0xfd, 0x15, 0x00, 0x33, 0xfd, 0xd3, 0xff, 0x11, 0xfd, 0x8f, 0xff, 0xec, 0xfc, 0x52, 0xff, 0xcc, 0xfc, 0x23, 0xff, 0xc0, 0xfc, 0xfe, 0xfe, 0xc1, 0xfc, 0xda, 0xfe, 0xc5, 0xfc, 0xac, 0xfe, 0xc3, 0xfc, 0x71, 0xfe, 0xbb, 0xfc, 0x31, 0xfe, 0xb5, 0xfc, 0xf6, 0xfd, 0xb9, 0xfc, 0xc7, 0xfd, 0xcd, 0xfc, 0xa9, 0xfd, 0xf4, 0xfc, 0x9b, 0xfd, 0x28, 0xfd, 0x93, 0xfd, 0x61, 0xfd, 0x88, 0xfd, 0x96, 0xfd, 0x7b, 0xfd, 0xc8, 0xfd, 0x71, 0xfd, 0xfb, 0xfd, 0x6e, 0xfd, 0x2f, 0xfe, 0x76, 0xfd, 0x67, 0xfe, 0x8c, 0xfd, 0xa9, 0xfe, 0xae, 0xfd, 0xf4, 0xfe, 0xd2, 0xfd, 0x41, 0xff, 0xf8, 0xfd, 0x8d, 0xff, 0x20, 0xfe, 0xd1, 0xff, 0x4b, 0xfe, 0x0d, 0x00, 0x79, 0xfe, 0x42, 0x00, 0xaa, 0xfe, 0x75, 0x00, 0xdd, 0xfe, 0xae, 0x00, 0x18, 0xff, 0xf1, 0x00, 0x59, 0xff, 0x3c, 0x01, 0x9a, 0xff, 0x83, 0x01, 0xd3, 0xff, 0xbd, 0x01, 0x09, 0x00, 0xeb, 0x01, 0x3e, 0x00, 0x0f, 0x02, 0x73, 0x00, 0x30, 0x02, 0xa9, 0x00, 0x53, 0x02, 0xdf, 0x00, 0x7a, 0x02, 0x17, 0x01, 0xa3, 0x02, 0x4b, 0x01, 0xc7, 0x02, 0x7a, 0x01, 0xe2, 0x02, 0xa3, 0x01, 0xf6, 0x02, 0xc3, 0x01, 0x01, 0x03, 0xde, 0x01, 0x07, 0x03, 0xf9, 0x01, 0x0b, 0x03, 0x17, 0x02, 0x0b, 0x03, 0x34, 0x02, 0x01, 0x03, 0x4d, 0x02, 0xe9, 0x02, 0x62, 0x02, 0xc5, 0x02, 0x75, 0x02, 0x9c, 0x02, 0x7f, 0x02, 0x6e, 0x02, 0x81, 0x02, 0x3d, 0x02, 0x7f, 0x02, 0x0e, 0x02, 0x7e, 0x02, 0xe0, 0x01, 0x81, 0x02, 0xb1, 0x01, 0x8d, 0x02, 0x82, 0x01, 0x9f, 0x02, 0x53, 0x01, 0xad, 0x02, 0x20, 0x01, 0xb4, 0x02, 0xed, 0x00, 0xb5, 0x02, 0xbd, 0x00, 0xae, 0x02, 0x91, 0x00, 0xa4, 0x02, 0x67, 0x00, 0x9e, 0x02, 0x44, 0x00, 0x9b, 0x02, 0x23, 0x00, 0x91, 0x02, 0xfe, 0xff, 0x7d, 0x02, 0xd6, 0xff, 0x5d, 0x02, 0xaf, 0xff, 0x31, 0x02, 0x8b, 0xff, 0xfd, 0x01, 0x68, 0xff, 0xc5, 0x01, 0x45, 0xff, 0x87, 0x01, 0x1c, 0xff, 0x45, 0x01, 0xf0, 0xfe, 0x00, 0x01, 0xc8, 0xfe, 0xbb, 0x00, 0xa9, 0xfe, 0x77, 0x00, 0x96, 0xfe, 0x2f, 0x00, 0x86, 0xfe, 0xe1, 0xff, 0x71, 0xfe, 0x8f, 0xff, 0x56, 0xfe, 0x41, 0xff, 0x3b, 0xfe, 0xfe, 0xfe, 0x23, 0xfe, 0xc6, 0xfe, 0x11, 0xfe, 0x94, 0xfe, 0x03, 0xfe, 0x63, 0xfe, 0xfb, 0xfd, 0x33, 0xfe, 0xf7, 0xfd, 0x05, 0xfe, 0xf6, 0xfd, 0xdd, 0xfd, 0xf6, 0xfd, 0xb9, 0xfd, 0xf2, 0xfd, 0x9c, 0xfd, 0xeb, 0xfd, 0x83, 0xfd, 0xe4, 0xfd, 0x6b, 0xfd, 0xe1, 0xfd, 0x56, 0xfd, 0xe5, 0xfd, 0x4a, 0xfd, 0xf8, 0xfd, 0x4a, 0xfd, 0x1a, 0xfe, 0x55, 0xfd, 0x48, 0xfe, 0x62, 0xfd, 0x75, 0xfe, 0x65, 0xfd, 0x99, 0xfe, 0x60, 0xfd, 0xb5, 0xfe, 0x5b, 0xfd, 0xd3, 0xfe, 0x5f, 0xfd, 0xfb, 0xfe, 0x72, 0xfd, 0x30, 0xff, 0x8e, 0xfd, 0x70, 0xff, 0xaa, 0xfd, 0xb2, 0xff, 0xc0, 0xfd, 0xef, 0xff, 0xd0, 0xfd, 0x23, 0x00, 0xdf, 0xfd, 0x54, 0x00, 0xf3, 0xfd, 0x85, 0x00, 0x09, 0xfe, 0xb7, 0x00, 0x26, 0xfe, 0xea, 0x00, 0x4a, 0xfe, 0x1e, 0x01, 0x75, 0xfe, 0x4d, 0x01, 0xa0, 0xfe, 0x73, 0x01, 0xce, 0xfe, 0x91, 0x01, 0xf9, 0xfe, 0xa4, 0x01, 0x23, 0xff, 0xaf, 0x01, 0x4f, 0xff, 0xb8, 0x01, 0x7d, 0xff, 0xc0, 0x01, 0xae, 0xff, 0xc9, 0x01, 0xe0, 0xff, 0xcd, 0x01, 0x14, 0x00, 0xc8, 0x01, 0x4a, 0x00, 0xbb, 0x01, 0x80, 0x00, 0xa4, 0x01, 0xb5, 0x00, 0x89, 0x01, 0xe7, 0x00, 0x6c, 0x01, 0x14, 0x01, 0x4e, 0x01, 0x3b, 0x01, 0x2d, 0x01, 0x5b, 0x01, 0x0a, 0x01, 0x75, 0x01, 0xe5, 0x00, 0x87, 0x01, 0xbc, 0x00, 0x94, 0x01, 0x90, 0x00, 0x9c, 0x01, 0x61, 0x00, 0xa2, 0x01, 0x2e, 0x00, 0xa3, 0x01, 0xf8, 0xff, 0xa1, 0x01, 0xc6, 0xff, 0x96, 0x01, 0x94, 0xff, 0x80, 0x01, 0x64, 0xff, 0x60, 0x01, 0x34, 0xff, 0x3d, 0x01, 0x07, 0xff, 0x1b, 0x01, 0xdb, 0xfe, 0xfc, 0x00, 0xac, 0xfe, 0xe1, 0x00, 0x7a, 0xfe, 0xc9, 0x00, 0x46, 0xfe, 0xad, 0x00, 0x12, 0xfe, 0x8b, 0x00, 0xde, 0xfd, 0x65, 0x00, 0xae, 0xfd, 0x3b, 0x00, 0x83, 0xfd, 0x11, 0x00, 0x60, 0xfd, 0xe9, 0xff, 0x44, 0xfd, 0xc1, 0xff, 0x2c, 0xfd, 0x94, 0xff, 0x13, 0xfd, 0x66, 0xff, 0xf9, 0xfc, 0x3d, 0xff, 0xe0, 0xfc, 0x15, 0xff, 0xc6, 0xfc, 0xef, 0xfe, 0xb3, 0xfc, 0xcd, 0xfe, 0xaa, 0xfc, 0xac, 0xfe, 0xb2, 0xfc, 0x8b, 0xfe, 0xc8, 0xfc, 0x6a, 0xfe, 0xe9, 0xfc, 0x4b, 0xfe, 0x0e, 0xfd, 0x26, 0xfe, 0x2e, 0xfd, 0xfe, 0xfd, 0x49, 0xfd, 0xda, 0xfd, 0x65, 0xfd, 0xc1, 0xfd, 0x89, 0xfd, 0xb2, 0xfd, 0xb3, 0xfd, 0xa7, 0xfd, 0xe1, 0xfd, 0x9a, 0xfd, 0x10, 0xfe, 0x88, 0xfd, 0x41, 0xfe, 0x76, 0xfd, 0x78, 0xfe, 0x6f, 0xfd, 0xb6, 0xfe, 0x78, 0xfd, 0xf8, 0xfe, 0x8f, 0xfd, 0x38, 0xff, 0xae, 0xfd, 0x72, 0xff, 0xca, 0xfd, 0xa1, 0xff, 0xde, 0xfd, 0xc7, 0xff, 0xf0, 0xfd, 0xed, 0xff, 0x07, 0xfe, 0x1b, 0x00, 0x2b, 0xfe, 0x54, 0x00, 0x60, 0xfe, 0x99, 0x00, 0xa3, 0xfe, 0xe0, 0x00, 0xe9, 0xfe, 0x1f, 0x01, 0x2c, 0xff, 0x53, 0x01, 0x65, 0xff, 0x7d, 0x01, 0x98, 0xff, 0xa4, 0x01, 0xc8, 0xff, 0xca, 0x01, 0xfe, 0xff, 0xf2, 0x01, 0x3e, 0x00, 0x1d, 0x02, 0x81, 0x00, 0x46, 0x02, 0xc5, 0x00, 0x6e, 0x02, 0x06, 0x01, 0x96, 0x02, 0x3e, 0x01, 0xb9, 0x02, 0x6c, 0x01, 0xd5, 0x02, 0x92, 0x01, 0xea, 0x02, 0xb3, 0x01, 0xf8, 0x02, 0xd4, 0x01, 0x03, 0x03, 0xf4, 0x01, 0x0c, 0x03, 0x12, 0x02, 0x12, 0x03, 0x2c, 0x02, 0x11, 0x03, 0x3f, 0x02, 0x09, 0x03, 0x4a, 0x02, 0xfa, 0x02, 0x51, 0x02, 0xe8, 0x02, 0x59, 0x02, 0xd3, 0x02, 0x65, 0x02, 0xbb, 0x02, 0x72, 0x02, 0x9d, 0x02, 0x7f, 0x02, 0x7a, 0x02, 0x88, 0x02, 0x55, 0x02, 0x8c, 0x02, 0x2f, 0x02, 0x8d, 0x02, 0x09, 0x02, 0x8b, 0x02, 0xde, 0x01, 0x89, 0x02, 0xad, 0x01, 0x84, 0x02, 0x78, 0x01, 0x81, 0x02, 0x44, 0x01, 0x7a, 0x02, 0x13, 0x01, 0x6f, 0x02, 0xe3, 0x00, 0x61, 0x02, 0xb7, 0x00, 0x52, 0x02, 0x8b, 0x00, 0x40, 0x02, 0x5b, 0x00, 0x2b, 0x02, 0x28, 0x00, 0x15, 0x02, 0xf3, 0xff, 0xf8, 0x01, 0xbd, 0xff, 0xd7, 0x01, 0x8c, 0xff, 0xb4, 0x01, 0x63, 0xff, 0x8f, 0x01, 0x42, 0xff, 0x6a, 0x01, 0x29, 0xff, 0x47, 0x01, 0x18, 0xff, 0x25, 0x01, 0x09, 0xff, 0x01, 0x01, 0xf5, 0xfe, 0xda, 0x00, 0xdf, 0xfe, 0xac, 0x00, 0xc8, 0xfe, 0x7d, 0x00, 0xb9, 0xfe, 0x4d, 0x00, 0xb5, 0xfe, 0x23, 0x00, 0xc0, 0xfe, 0xfd, 0xff, 0xcf, 0xfe, 0xd8, 0xff, 0xd9, 0xfe, 0xb4, 0xff, 0xdf, 0xfe, 0x8f, 0xff, 0xe6, 0xfe, 0x69, 0xff, 0xf0, 0xfe, 0x42, 0xff, 0x01, 0xff, 0x1b, 0xff, 0x17, 0xff, 0xf7, 0xfe, 0x2e, 0xff, 0xdf, 0xfe, 0x4a, 0xff, 0xd1, 0xfe, 0x67, 0xff, 0xc5, 0xfe, 0x7f, 0xff, 0xb5, 0xfe, 0x90, 0xff, 0x9f, 0xfe, 0x9b, 0xff, 0x87, 0xfe, 0xa5, 0xff, 0x74, 0xfe, 0xb3, 0xff, 0x6d, 0xfe, 0xc6, 0xff, 0x6f, 0xfe, 0xd9, 0xff, 0x76, 0xfe, 0xea, 0xff, 0x80, 0xfe, 0xf7, 0xff, 0x8c, 0xfe, 0x05, 0x00, 0x97, 0xfe, 0x17, 0x00, 0xa5, 0xfe, 0x31, 0x00, 0xb6, 0xfe, 0x51, 0x00, 0xcc, 0xfe, 0x73, 0x00, 0xe5, 0xfe, 0x91, 0x00, 0x02, 0xff, 0xa7, 0x00, 0x23, 0xff, 0xb6, 0x00, 0x49, 0xff, 0xc9, 0x00, 0x70, 0xff, 0xe4, 0x00, 0x93, 0xff, 0x03, 0x01, 0xb0, 0xff, 0x23, 0x01, 0xce, 0xff, 0x41, 0x01, 0xf6, 0xff, 0x60, 0x01, 0x2b, 0x00, 0x7e, 0x01, 0x65, 0x00, 0x99, 0x01, 0x96, 0x00, 0xaa, 0x01, 0xb8, 0x00, 0xb3, 0x01, 0xd2, 0x00, 0xbc, 0x01, 0xeb, 0x00, 0xc8, 0x01, 0x0b, 0x01, 0xd8, 0x01, 0x2e, 0x01, 0xe4, 0x01, 0x4e, 0x01, 0xe5, 0x01, 0x64, 0x01, 0xd6, 0x01, 0x6d, 0x01, 0xb8, 0x01, 0x6c, 0x01, 0x94, 0x01, 0x67, 0x01, 0x71, 0x01, 0x62, 0x01, 0x51, 0x01, 0x62, 0x01, 0x33, 0x01, 0x63, 0x01, 0x0f, 0x01, 0x64, 0x01, 0xe3, 0x00, 0x5a, 0x01, 0xae, 0x00, 0x47, 0x01, 0x76, 0x00, 0x2d, 0x01, 0x3f, 0x00, 0x10, 0x01, 0x0e, 0x00, 0xf9, 0x00, 0xe6, 0xff, 0xe8, 0x00, 0xc5, 0xff, 0xdd, 0x00, 0xa9, 0xff, 0xd5, 0x00, 0x8b, 0xff, 0xcb, 0x00, 0x69, 0xff, 0xbc, 0x00, 0x45, 0xff, 0xa5, 0x00, 0x21, 0xff, 0x89, 0x00, 0x03, 0xff, 0x6b, 0x00, 0xea, 0xfe, 0x50, 0x00, 0xd9, 0xfe, 0x3a, 0x00, 0xcd, 0xfe, 0x23, 0x00, 0xbf, 0xfe, 0x08, 0x00, 0xb1, 0xfe, 0xe6, 0xff, 0xa1, 0xfe, 0xbf, 0xff, 0x8f, 0xfe, 0x97, 0xff, 0x7b, 0xfe, 0x77, 0xff, 0x6b, 0xfe, 0x5f, 0xff, 0x5f, 0xfe, 0x48, 0xff, 0x53, 0xfe, 0x2d, 0xff, 0x46, 0xfe, 0x0d, 0xff, 0x39, 0xfe, 0xe5, 0xfe, 0x2a, 0xfe, 0xba, 0xfe, 0x19, 0xfe, 0x97, 0xfe, 0x0f, 0xfe, 0x83, 0xfe, 0x0e, 0xfe, 0x79, 0xfe, 0x0f, 0xfe, 0x73, 0xfe, 0x11, 0xfe, 0x6e, 0xfe, 0x13, 0xfe, 0x63, 0xfe, 0x16, 0xfe, 0x51, 0xfe, 0x1b, 0xfe, 0x3e, 0xfe, 0x27, 0xfe, 0x2b, 0xfe, 0x36, 0xfe, 0x20, 0xfe, 0x47, 0xfe, 0x20, 0xfe, 0x5a, 0xfe, 0x2c, 0xfe, 0x72, 0xfe, 0x3f, 0xfe, 0x8f, 0xfe, 0x55, 0xfe, 0xb0, 0xfe, 0x6a, 0xfe, 0xd3, 0xfe, 0x7b, 0xfe, 0xf9, 0xfe, 0x8a, 0xfe, 0x1e, 0xff, 0x99, 0xfe, 0x43, 0xff, 0xb0, 0xfe, 0x6a, 0xff, 0xd2, 0xfe, 0x93, 0xff, 0xfa, 0xfe, 0xbc, 0xff, 0x1e, 0xff, 0xe2, 0xff, 0x3d, 0xff, 0x08, 0x00, 0x54, 0xff, 0x2a, 0x00, 0x66, 0xff, 0x48, 0x00, 0x7d, 0xff, 0x65, 0x00, 0x9a, 0xff, 0x82, 0x00, 0xbb, 0xff, 0xa1, 0x00, 0xda, 0xff, 0xbc, 0x00, 0xf6, 0xff, 0xd6, 0x00, 0x0d, 0x00, 0xea, 0x00, 0x21, 0x00, 0xfa, 0x00, 0x38, 0x00, 0x0b, 0x01, 0x54, 0x00, 0x21, 0x01, 0x76, 0x00, 0x39, 0x01, 0x9d, 0x00, 0x55, 0x01, 0xc7, 0x00, 0x70, 0x01, 0xec, 0x00, 0x85, 0x01, 0x07, 0x01, 0x92, 0x01, 0x15, 0x01, 0x98, 0x01, 0x1d, 0x01, 0x99, 0x01, 0x25, 0x01, 0x99, 0x01, 0x35, 0x01, 0x9c, 0x01, 0x52, 0x01, 0xa4, 0x01, 0x77, 0x01, 0xae, 0x01, 0x97, 0x01, 0xb4, 0x01, 0xa8, 0x01, 0xb0, 0x01, 0xa6, 0x01, 0xa0, 0x01, 0x97, 0x01, 0x85, 0x01, 0x82, 0x01, 0x64, 0x01, 0x6f, 0x01, 0x40, 0x01, 0x61, 0x01, 0x20, 0x01, 0x5a, 0x01, 0x06, 0x01, 0x51, 0x01, 0xee, 0x00, 0x44, 0x01, 0xd5, 0x00, 0x32, 0x01, 0xbb, 0x00, 0x17, 0x01, 0x9e, 0x00, 0xf9, 0x00, 0x7f, 0x00, 0xdb, 0x00, 0x61, 0x00, 0xc0, 0x00, 0x43, 0x00, 0xaa, 0x00, 0x29, 0x00, 0x98, 0x00, 0x14, 0x00, 0x8c, 0x00, 0x05, 0x00, 0x7b, 0x00, 0xf4, 0xff, 0x5e, 0x00, 0xdc, 0xff, 0x3b, 0x00, 0xc1, 0xff, 0x1a, 0x00, 0xa9, 0xff, 0xfe, 0xff, 0x95, 0xff, 0xea, 0xff, 0x87, 0xff, 0xdc, 0xff, 0x7d, 0xff, 0xca, 0xff, 0x70, 0xff, 0xb2, 0xff, 0x62, 0xff, 0x97, 0xff, 0x54, 0xff, 0x7e, 0xff, 0x47, 0xff, 0x69, 0xff, 0x3a, 0xff, 0x56, 0xff, 0x2d, 0xff, 0x46, 0xff, 0x21, 0xff, 0x3a, 0xff, 0x19, 0xff, 0x30, 0xff, 0x15, 0xff, 0x28, 0xff, 0x12, 0xff, 0x22, 0xff, 0x0e, 0xff, 0x1f, 0xff, 0x0b, 0xff, 0x1d, 0xff, 0x09, 0xff, 0x17, 0xff, 0x04, 0xff, 0x0a, 0xff, 0xfc, 0xfe, 0xf9, 0xfe, 0xf2, 0xfe, 0xeb, 0xfe, 0xed, 0xfe, 0xe5, 0xfe, 0xef, 0xfe, 0xe8, 0xfe, 0xf9, 0xfe, 0xee, 0xfe, 0x06, 0xff, 0xf0, 0xfe, 0x11, 0xff, 0xeb, 0xfe, 0x19, 0xff, 0xde, 0xfe, 0x1b, 0xff, 0xcf, 0xfe, 0x1c, 0xff, 0xc3, 0xfe, 0x23, 0xff, 0xc2, 0xfe, 0x34, 0xff, 0xce, 0xfe, 0x52, 0xff, 0xe7, 0xfe, 0x7d, 0xff, 0x0a, 0xff, 0xb0, 0xff, 0x2f, 0xff, 0xe4, 0xff, 0x51, 0xff, 0x15, 0x00, 0x70, 0xff, 0x43, 0x00, 0x8a, 0xff, 0x6c, 0x00, 0xa4, 0xff, 0x94, 0x00, 0xc3, 0xff, 0xc2, 0x00, 0xed, 0xff, 0xfa, 0x00, 0x1f, 0x00, 0x37, 0x01, 0x53, 0x00, 0x73, 0x01, 0x82, 0x00, 0xa9, 0x01, 0xa4, 0x00, 0xd3, 0x01, 0xb7, 0x00, 0xed, 0x01, 0xc0, 0x00, 0xfb, 0x01, 0xca, 0x00, 0x03, 0x02, 0xd8, 0x00, 0x08, 0x02, 0xed, 0x00, 0x0f, 0x02, 0x07, 0x01, 0x19, 0x02, 0x1c, 0x01, 0x21, 0x02, 0x25, 0x01, 0x20, 0x02, 0x22, 0x01, 0x15, 0x02, 0x15, 0x01, 0x01, 0x02, 0x03, 0x01, 0xe5, 0x01, 0xf3, 0x00, 0xc3, 0x01, 0xe9, 0x00, 0x9c, 0x01, 0xe7, 0x00, 0x75, 0x01, 0xe6, 0x00, 0x4e, 0x01, 0xe2, 0x00, 0x27, 0x01, 0xd9, 0x00, 0x05, 0x01, 0xcc, 0x00, 0xe6, 0x00, 0xbd, 0x00, 0xc7, 0x00, 0xb0, 0x00, 0xa5, 0x00, 0xa8, 0x00, 0x81, 0x00, 0xa7, 0x00, 0x62, 0x00, 0xaa, 0x00, 0x4c, 0x00, 0xaa, 0x00, 0x3b, 0x00, 0x9d, 0x00, 0x28, 0x00, 0x84, 0x00, 0x0f, 0x00, 0x6a, 0x00, 0xf6, 0xff, 0x59, 0x00, 0xe1, 0xff, 0x54, 0x00, 0xd5, 0xff, 0x56, 0x00, 0xcf, 0xff, 0x51, 0x00, 0xc6, 0xff, 0x44, 0x00, 0xb7, 0xff, 0x2e, 0x00, 0xa2, 0xff, 0x15, 0x00, 0x8a, 0xff, 0xfb, 0xff, 0x6e, 0xff, 0xe3, 0xff, 0x51, 0xff, 0xcc, 0xff, 0x34, 0xff, 0xb4, 0xff, 0x14, 0xff, 0x99, 0xff, 0xf4, 0xfe, 0x7c, 0xff, 0xd4, 0xfe, 0x60, 0xff, 0xb7, 0xfe, 0x44, 0xff, 0x9e, 0xfe, 0x2d, 0xff, 0x87, 0xfe, 0x1c, 0xff, 0x73, 0xfe, 0x0c, 0xff, 0x5b, 0xfe, 0xfb, 0xfe, 0x3c, 0xfe, 0xe6, 0xfe, 0x1a, 0xfe, 0xcc, 0xfe, 0xf7, 0xfd, 0xb0, 0xfe, 0xd8, 0xfd, 0x9b, 0xfe, 0xc7, 0xfd, 0x94, 0xfe, 0xc4, 0xfd, 0x9a, 0xfe, 0xcc, 0xfd, 0xab, 0xfe, 0xdb, 0xfd, 0xc1, 0xfe, 0xec, 0xfd, 0xd1, 0xfe, 0xf9, 0xfd, 0xd3, 0xfe, 0xf9, 0xfd, 0xcb, 0xfe, 0xf4, 0xfd, 0xc5, 0xfe, 0xf6, 0xfd, 0xca, 0xfe, 0x07, 0xfe, 0xe0, 0xfe, 0x2d, 0xfe, 0x06, 0xff, 0x61, 0xfe, 0x32, 0xff, 0x97, 0xfe, 0x58, 0xff, 0xc4, 0xfe, 0x72, 0xff, 0xe4, 0xfe, 0x85, 0xff, 0xfd, 0xfe, 0x97, 0xff, 0x17, 0xff, 0xb1, 0xff, 0x39, 0xff, 0xd4, 0xff, 0x65, 0xff, 0xf9, 0xff, 0x97, 0xff, 0x19, 0x00, 0xc7, 0xff, 0x32, 0x00, 0xf3, 0xff, 0x47, 0x00, 0x18, 0x00, 0x5c, 0x00, 0x3c, 0x00, 0x76, 0x00, 0x61, 0x00, 0x95, 0x00, 0x87, 0x00, 0xb6, 0x00, 0xae, 0x00, 0xd5, 0x00, 0xcf, 0x00, 0xe6, 0x00, 0xe3, 0x00, 0xe7, 0x00, 0xe6, 0x00, 0xe2, 0x00, 0xe5, 0x00, 0xdd, 0x00, 0xe6, 0x00, 0xe0, 0x00, 0xed, 0x00, 0xf2, 0x00, 0x00, 0x01, 0x0f, 0x01, 0x1b, 0x01, 0x29, 0x01, 0x32, 0x01, 0x36, 0x01, 0x3a, 0x01, 0x32, 0x01, 0x34, 0x01, 0x24, 0x01, 0x25, 0x01, 0x12, 0x01, 0x12, 0x01, 0x04, 0x01, 0x01, 0x01, 0x05, 0x01, 0xfa, 0x00, 0x0f, 0x01, 0xfa, 0x00, 0x1c, 0x01, 0xfa, 0x00, 0x22, 0x01, 0xf4, 0x00, 0x1f, 0x01, 0xe7, 0x00, 0x14, 0x01, 0xd3, 0x00, 0x08, 0x01, 0xbb, 0x00, 0x02, 0x01, 0xa6, 0x00, 0x02, 0x01, 0x95, 0x00, 0x02, 0x01, 0x85, 0x00, 0xfa, 0x00, 0x73, 0x00, 0xeb, 0x00, 0x5f, 0x00, 0xd3, 0x00, 0x49, 0x00, 0xb9, 0x00, 0x35, 0x00, 0xa4, 0x00, 0x28, 0x00, 0x96, 0x00, 0x20, 0x00, 0x87, 0x00, 0x16, 0x00, 0x73, 0x00, 0x04, 0x00, 0x56, 0x00, 0xeb, 0xff, 0x32, 0x00, 0xce, 0xff, 0x06, 0x00, 0xb0, 0xff, 0xd6, 0xff, 0x93, 0xff, 0xaf, 0xff, 0x82, 0xff, 0x93, 0xff, 0x79, 0xff, 0x7f, 0xff, 0x73, 0xff, 0x6b, 0xff, 0x68, 0xff, 0x51, 0xff, 0x56, 0xff, 0x2e, 0xff, 0x3c, 0xff, 0x03, 0xff, 0x1c, 0xff, 0xda, 0xfe, 0xfd, 0xfe, 0xb7, 0xfe, 0xe4, 0xfe, 0x9f, 0xfe, 0xd3, 0xfe, 0x93, 0xfe, 0xcc, 0xfe, 0x90, 0xfe, 0xce, 0xfe, 0x8d, 0xfe, 0xce, 0xfe, 0x86, 0xfe, 0xcc, 0xfe, 0x7f, 0xfe, 0xca, 0xfe, 0x79, 0xfe, 0xca, 0xfe, 0x73, 0xfe, 0xcc, 0xfe, 0x71, 0xfe, 0xd3, 0xfe, 0x78, 0xfe, 0xe4, 0xfe, 0x84, 0xfe, 0xfa, 0xfe, 0x8f, 0xfe, 0x12, 0xff, 0x98, 0xfe, 0x29, 0xff, 0xa3, 0xfe, 0x41, 0xff, 0xb0, 0xfe, 0x5a, 0xff, 0xbe, 0xfe, 0x73, 0xff, 0xcf, 0xfe, 0x8d, 0xff, 0xe1, 0xfe, 0xa7, 0xff, 0xf3, 0xfe, 0xc0, 0xff, 0x05, 0xff, 0xdb, 0xff, 0x16, 0xff, 0xf6, 0xff, 0x26, 0xff, 0x10, 0x00, 0x37, 0xff, 0x2c, 0x00, 0x4c, 0xff, 0x4a, 0x00, 0x65, 0xff, 0x68, 0x00, 0x7c, 0xff, 0x83, 0x00, 0x91, 0xff, 0x9e, 0x00, 0xa1, 0xff, 0xb5, 0x00, 0xa7, 0xff, 0xc6, 0x00, 0xa8, 0xff, 0xcf, 0x00, 0xa7, 0xff, 0xd2, 0x00, 0xa9, 0xff, 0xd4, 0x00, 0xb2, 0xff, 0xdb, 0x00, 0xc5, 0xff, 0xea, 0x00, 0xdd, 0xff, 0xfc, 0x00, 0xf2, 0xff, 0x0a, 0x01, 0x04, 0x00, 0x12, 0x01, 0x10, 0x00, 0x11, 0x01, 0x19, 0x00, 0x0b, 0x01, 0x22, 0x00, 0x02, 0x01, 0x28, 0x00, 0xf5, 0x00, 0x2f, 0x00, 0xe8, 0x00, 0x37, 0x00, 0xdd, 0x00, 0x3e, 0x00, 0xd4, 0x00, 0x47, 0x00, 0xcd, 0x00, 0x54, 0x00, 0xc6, 0x00, 0x63, 0x00, 0xbd, 0x00, 0x73, 0x00, 0xb1, 0x00, 0x7e, 0x00, 0xa1, 0x00, 0x80, 0x00, 0x8c, 0x00, 0x76, 0x00, 0x71, 0x00, 0x66, 0x00, 0x55, 0x00, 0x58, 0x00, 0x3e, 0x00, 0x4f, 0x00, 0x2d, 0x00, 0x4d, 0x00, 0x24, 0x00, 0x4e, 0x00, 0x1d, 0x00, 0x4c, 0x00, 0x13, 0x00, 0x41, 0x00, 0x01, 0x00, 0x2d, 0x00, 0xe6, 0xff, 0x17, 0x00, 0xcb, 0xff, 0xff, 0xff, 0xb1, 0xff, 0xe5, 0xff, 0x95, 0xff, 0xcd, 0xff, 0x79, 0xff, 0xb6, 0xff, 0x5f, 0xff, 0xa3, 0xff, 0x49, 0xff, 0x93, 0xff, 0x36, 0xff, 0x89, 0xff, 0x28, 0xff, 0x82, 0xff, 0x1d, 0xff, 0x7e, 0xff, 0x10, 0xff, 0x7b, 0xff, 0x04, 0xff, 0x79, 0xff, 0xf9, 0xfe, 0x79, 0xff, 0xf2, 0xfe, 0x77, 0xff, 0xeb, 0xfe, 0x73, 0xff, 0xe2, 0xfe, 0x6f, 0xff, 0xda, 0xfe, 0x6c, 0xff, 0xd6, 0xfe, 0x6f, 0xff, 0xd7, 0xfe, 0x77, 0xff, 0xde, 0xfe, 0x82, 0xff, 0xe7, 0xfe, 0x8a, 0xff, 0xee, 0xfe, 0x8d, 0xff, 0xee, 0xfe, 0x8c, 0xff, 0xec, 0xfe, 0x8b, 0xff, 0xee, 0xfe, 0x92, 0xff, 0xfa, 0xfe, 0xa2, 0xff, 0x12, 0xff, 0xb9, 0xff, 0x2f, 0xff, 0xd3, 0xff, 0x4f, 0xff, 0xeb, 0xff, 0x6c, 0xff, 0x03, 0x00, 0x8a, 0xff, 0x1a, 0x00, 0xa6, 0xff, 0x2f, 0x00, 0xc2, 0xff, 0x43, 0x00, 0xde, 0xff, 0x56, 0x00, 0xfa, 0xff, 0x6a, 0x00, 0x17, 0x00, 0x80, 0x00, 0x35, 0x00, 0x9a, 0x00, 0x56, 0x00, 0xb6, 0x00, 0x7a, 0x00, 0xd2, 0x00, 0xa0, 0x00, 0xec, 0x00, 0xc6, 0x00, 0x04, 0x01, 0xea, 0x00, 0x18, 0x01, 0x08, 0x01, 0x28, 0x01, 0x1e, 0x01, 0x31, 0x01, 0x2c, 0x01, 0x31, 0x01, 0x33, 0x01, 0x30, 0x01, 0x3b, 0x01, 0x32, 0x01, 0x4a, 0x01, 0x39, 0x01, 0x5e, 0x01, 0x44, 0x01, 0x74, 0x01, 0x53, 0x01, 0x88, 0x01, 0x60, 0x01, 0x93, 0x01, 0x63, 0x01, 0x91, 0x01, 0x5c, 0x01, 0x85, 0x01, 0x51, 0x01, 0x76, 0x01, 0x44, 0x01, 0x6a, 0x01, 0x38, 0x01, 0x62, 0x01, 0x33, 0x01, 0x61, 0x01, 0x32, 0x01, 0x63, 0x01, 0x32, 0x01, 0x60, 0x01, 0x31, 0x01, 0x54, 0x01, 0x2e, 0x01, 0x43, 0x01, 0x29, 0x01, 0x30, 0x01, 0x20, 0x01, 0x1a, 0x01, 0x15, 0x01, 0x04, 0x01, 0x08, 0x01, 0xee, 0x00, 0xff, 0x00, 0xd9, 0x00, 0xf9, 0x00, 0xc4, 0x00, 0xf3, 0x00, 0xac, 0x00, 0xeb, 0x00, 0x91, 0x00, 0xe2, 0x00, 0x76, 0x00, 0xdb, 0x00, 0x5d, 0x00, 0xcf, 0x00, 0x42, 0x00, 0xc2, 0x00, 0x28, 0x00, 0xb7, 0x00, 0x14, 0x00, 0xae, 0x00, 0x04, 0x00, 0xa5, 0x00, 0xf7, 0xff, 0x9f, 0x00, 0xee, 0xff, 0x99, 0x00, 0xe9, 0xff, 0x91, 0x00, 0xe4, 0xff, 0x85, 0x00, 0xe0, 0xff, 0x76, 0x00, 0xdc, 0xff, 0x66, 0x00, 0xd6, 0xff, 0x55, 0x00, 0xd0, 0xff, 0x46, 0x00, 0xcd, 0xff, 0x38, 0x00, 0xcc, 0xff, 0x28, 0x00, 0xcf, 0xff, 0x14, 0x00, 0xcf, 0xff, 0xfd, 0xff, 0xcb, 0xff, 0xe7, 0xff, 0xc6, 0xff, 0xd2, 0xff, 0xbe, 0xff, 0xc1, 0xff, 0xb5, 0xff, 0xb4, 0xff, 0xae, 0xff, 0xac, 0xff, 0xa8, 0xff, 0xa9, 0xff, 0xa5, 0xff, 0xa8, 0xff, 0xa5, 0xff, 0xa9, 0xff, 0xa8, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0x9a, 0xff, 0x9b, 0xff, 0x90, 0xff, 0x92, 0xff, 0x8a, 0xff, 0x8b, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x92, 0xff, 0x91, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0xa6, 0xff, 0xa7, 0xff, 0xae, 0xff, 0xb1, 0xff, 0xba, 0xff, 0xbb, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xce, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xe1, 0xff, 0xd7, 0xff, 0xf1, 0xff, 0xd9, 0xff, 0x00, 0x00, 0xda, 0xff, 0x0f, 0x00, 0xdf, 0xff, 0x1e, 0x00, 0xeb, 0xff, 0x31, 0x00, 0xf8, 0xff, 0x42, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x59, 0x00, 0x08, 0x00, 0x65, 0x00, 0x09, 0x00, 0x77, 0x00, 0x08, 0x00, 0x89, 0x00, 0x08, 0x00, 0x99, 0x00, 0x06, 0x00, 0xa3, 0x00, 0x03, 0x00, 0xa7, 0x00, 0x01, 0x00, 0xac, 0x00, 0xfd, 0xff, 0xae, 0x00, 0xf5, 0xff, 0xaf, 0x00, 0xec, 0xff, 0xb1, 0x00, 0xe4, 0xff, 0xb5, 0x00, 0xe1, 0xff, 0xbd, 0x00, 0xde, 0xff, 0xc0, 0x00, 0xd8, 0xff, 0xbc, 0x00, 0xcc, 0xff, 0xad, 0x00, 0xbb, 0xff, 0x98, 0x00, 0xa9, 0xff, 0x81, 0x00, 0x9a, 0xff, 0x6c, 0x00, 0x90, 0xff, 0x5b, 0x00, 0x88, 0xff, 0x49, 0x00, 0x7f, 0xff, 0x34, 0x00, 0x70, 0xff, 0x1b, 0x00, 0x5e, 0xff, 0xfd, 0xff, 0x4a, 0xff, 0xdf, 0xff, 0x39, 0xff, 0xc3, 0xff, 0x32, 0xff, 0xae, 0xff, 0x37, 0xff, 0xa0, 0xff, 0x44, 0xff, 0x98, 0xff, 0x52, 0xff, 0x90, 0xff, 0x5c, 0xff, 0x86, 0xff, 0x62, 0xff, 0x7b, 0xff, 0x62, 0xff, 0x6f, 0xff, 0x5f, 0xff, 0x65, 0xff, 0x5d, 0xff, 0x60, 0xff, 0x5e, 0xff, 0x5f, 0xff, 0x66, 0xff, 0x62, 0xff, 0x76, 0xff, 0x69, 0xff, 0x86, 0xff, 0x6d, 0xff, 0x91, 0xff, 0x6a, 0xff, 0x97, 0xff, 0x67, 0xff, 0x9d, 0xff, 0x67, 0xff, 0xa2, 0xff, 0x6b, 0xff, 0xa8, 0xff, 0x70, 0xff, 0xac, 0xff, 0x74, 0xff, 0xad, 0xff, 0x73, 0xff, 0xa8, 0xff, 0x68, 0xff, 0x9d, 0xff, 0x54, 0xff, 0x91, 0xff, 0x3c, 0xff, 0x85, 0xff, 0x26, 0xff, 0x7a, 0xff, 0x15, 0xff, 0x77, 0xff, 0x0e, 0xff, 0x7b, 0xff, 0x11, 0xff, 0x81, 0xff, 0x15, 0xff, 0x81, 0xff, 0x12, 0xff, 0x79, 0xff, 0x05, 0xff, 0x6d, 0xff, 0xf5, 0xfe, 0x66, 0xff, 0xe8, 0xfe, 0x68, 0xff, 0xe4, 0xfe, 0x74, 0xff, 0xea, 0xfe, 0x86, 0xff, 0xf7, 0xfe, 0x96, 0xff, 0x00, 0xff, 0xa3, 0xff, 0x09, 0xff, 0xb0, 0xff, 0x16, 0xff, 0xbe, 0xff, 0x25, 0xff, 0xcd, 0xff, 0x3a, 0xff, 0xdf, 0xff, 0x53, 0xff, 0xf4, 0xff, 0x72, 0xff, 0x06, 0x00, 0x8e, 0xff, 0x16, 0x00, 0xa7, 0xff, 0x25, 0x00, 0xbe, 0xff, 0x35, 0x00, 0xd5, 0xff, 0x48, 0x00, 0xee, 0xff, 0x5b, 0x00, 0x09, 0x00, 0x6e, 0x00, 0x29, 0x00, 0x7b, 0x00, 0x46, 0x00, 0x7d, 0x00, 0x57, 0x00, 0x74, 0x00, 0x5e, 0x00, 0x67, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5d, 0x00, 0x5b, 0x00, 0x62, 0x00, 0x60, 0x00, 0x6d, 0x00, 0x69, 0x00, 0x7b, 0x00, 0x6e, 0x00, 0x85, 0x00, 0x6b, 0x00, 0x88, 0x00, 0x5c, 0x00, 0x80, 0x00, 0x47, 0x00, 0x71, 0x00, 0x33, 0x00, 0x61, 0x00, 0x29, 0x00, 0x58, 0x00, 0x2b, 0x00, 0x58, 0x00, 0x36, 0x00, 0x5f, 0x00, 0x43, 0x00, 0x67, 0x00, 0x4a, 0x00, 0x68, 0x00, 0x49, 0x00, 0x61, 0x00, 0x44, 0x00, 0x56, 0x00, 0x40, 0x00, 0x4d, 0x00, 0x3e, 0x00, 0x47, 0x00, 0x44, 0x00, 0x49, 0x00, 0x4d, 0x00, 0x4f, 0x00, 0x57, 0x00, 0x54, 0x00, 0x5f, 0x00, 0x55, 0x00, 0x64, 0x00, 0x50, 0x00, 0x60, 0x00, 0x43, 0x00, 0x5c, 0x00, 0x38, 0x00, 0x5e, 0x00, 0x34, 0x00, 0x64, 0x00, 0x36, 0x00, 0x6a, 0x00, 0x3a, 0x00, 0x6e, 0x00, 0x3c, 0x00, 0x6f, 0x00, 0x3a, 0x00, 0x6d, 0x00, 0x34, 0x00, 0x69, 0x00, 0x2b, 0x00, 0x65, 0x00, 0x1f, 0x00, 0x63, 0x00, 0x15, 0x00, 0x60, 0x00, 0x0d, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x5a, 0x00, 0x02, 0x00, 0x54, 0x00, 0xf8, 0xff, 0x4b, 0x00, 0xeb, 0xff, 0x3f, 0x00, 0xd9, 0xff, 0x31, 0x00, 0xc5, 0xff, 0x25, 0x00, 0xb4, 0xff, 0x1e, 0x00, 0xa8, 0xff, 0x17, 0x00, 0x9d, 0xff, 0x0d, 0x00, 0x90, 0xff, 0x01, 0x00, 0x82, 0xff, 0xf3, 0xff, 0x73, 0xff, 0xe2, 0xff, 0x63, 0xff, 0xd5, 0xff, 0x58, 0xff, 0xcb, 0xff, 0x53, 0xff, 0xc3, 0xff, 0x54, 0xff, 0xbc, 0xff, 0x57, 0xff, 0xb5, 0xff, 0x59, 0xff, 0xae, 0xff, 0x5a, 0xff, 0xa6, 0xff, 0x58, 0xff, 0xa1, 0xff, 0x59, 0xff, 0xa3, 0xff, 0x61, 0xff, 0xa8, 0xff, 0x6e, 0xff, 0xae, 0xff, 0x7f, 0xff, 0xb3, 0xff, 0x91, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0xab, 0xff, 0xa5, 0xff, 0xa2, 0xff, 0xab, 0xff, 0x9e, 0xff, 0xb4, 0xff, 0xa4, 0xff, 0xc7, 0xff, 0xb4, 0xff, 0xe2, 0xff, 0xc8, 0xff, 0x02, 0x00, 0xdb, 0xff, 0x22, 0x00, 0xe8, 0xff, 0x3c, 0x00, 0xf0, 0xff, 0x53, 0x00, 0xf5, 0xff, 0x66, 0x00, 0xf9, 0xff, 0x77, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x0c, 0x00, 0xa1, 0x00, 0x1e, 0x00, 0xbe, 0x00, 0x32, 0x00, 0xdd, 0x00, 0x44, 0x00, 0xf8, 0x00, 0x50, 0x00, 0x0c, 0x01, 0x54, 0x00, 0x16, 0x01, 0x57, 0x00, 0x1d, 0x01, 0x59, 0x00, 0x25, 0x01, 0x5b, 0x00, 0x2b, 0x01, 0x5e, 0x00, 0x31, 0x01, 0x5e, 0x00, 0x33, 0x01, 0x58, 0x00, 0x2c, 0x01, 0x4e, 0x00, 0x1d, 0x01, 0x45, 0x00, 0x0a, 0x01, 0x41, 0x00, 0xf7, 0x00, 0x3f, 0x00, 0xe3, 0x00, 0x3d, 0x00, 0xd1, 0x00, 0x3e, 0x00, 0xc6, 0x00, 0x3e, 0x00, 0xbb, 0x00, 0x38, 0x00, 0xad, 0x00, 0x2e, 0x00, 0x9b, 0x00, 0x24, 0x00, 0x84, 0x00, 0x19, 0x00, 0x6a, 0x00, 0x12, 0x00, 0x4e, 0x00, 0x0c, 0x00, 0x32, 0x00, 0x07, 0x00, 0x17, 0x00, 0x01, 0x00, 0xfd, 0xff, 0xf7, 0xff, 0xe1, 0xff, 0xe4, 0xff, 0xc1, 0xff, 0xcf, 0xff, 0xa3, 0xff, 0xc1, 0xff, 0x8f, 0xff, 0xbc, 0xff, 0x85, 0xff, 0xbe, 0xff, 0x81, 0xff, 0xc4, 0xff, 0x81, 0xff, 0xca, 0xff, 0x7e, 0xff, 0xca, 0xff, 0x78, 0xff, 0xc3, 0xff, 0x6d, 0xff, 0xb8, 0xff, 0x63, 0xff, 0xac, 0xff, 0x5b, 0xff, 0xa6, 0xff, 0x5d, 0xff, 0xa6, 0xff, 0x68, 0xff, 0xa7, 0xff, 0x75, 0xff, 0xa6, 0xff, 0x7c, 0xff, 0xa0, 0xff, 0x7c, 0xff, 0x99, 0xff, 0x76, 0xff, 0x92, 0xff, 0x6e, 0xff, 0x91, 0xff, 0x6c, 0xff, 0x97, 0xff, 0x74, 0xff, 0xa2, 0xff, 0x82, 0xff, 0xb0, 0xff, 0x92, 0xff, 0xba, 0xff, 0x9f, 0xff, 0xbd, 0xff, 0xa4, 0xff, 0xbb, 0xff, 0xa0, 0xff, 0xb4, 0xff, 0x94, 0xff, 0xb2, 0xff, 0x8a, 0xff, 0xb6, 0xff, 0x83, 0xff, 0xbe, 0xff, 0x82, 0xff, 0xc5, 0xff, 0x85, 0xff, 0xc7, 0xff, 0x87, 0xff, 0xc3, 0xff, 0x87, 0xff, 0xbc, 0xff, 0x83, 0xff, 0xb7, 0xff, 0x82, 0xff, 0xb8, 0xff, 0x87, 0xff, 0xc0, 0xff, 0x94, 0xff, 0xcc, 0xff, 0xa5, 0xff, 0xd9, 0xff, 0xbb, 0xff, 0xe3, 0xff, 0xd1, 0xff, 0xe7, 0xff, 0xe2, 0xff, 0xe7, 0xff, 0xf3, 0xff, 0xe9, 0xff, 0x06, 0x00, 0xf3, 0xff, 0x21, 0x00, 0x03, 0x00, 0x3f, 0x00, 0x14, 0x00, 0x5c, 0x00, 0x22, 0x00, 0x74, 0x00, 0x2e, 0x00, 0x87, 0x00, 0x3c, 0x00, 0x9c, 0x00, 0x4d, 0x00, 0xb2, 0x00, 0x62, 0x00, 0xc7, 0x00, 0x74, 0x00, 0xd8, 0x00, 0x81, 0x00, 0xe4, 0x00, 0x8a, 0x00, 0xec, 0x00, 0x90, 0x00, 0xf1, 0x00, 0x93, 0x00, 0xf4, 0x00, 0x91, 0x00, 0xf3, 0x00, 0x8d, 0x00, 0xed, 0x00, 0x8e, 0x00, 0xe9, 0x00, 0x97, 0x00, 0xeb, 0x00, 0xa5, 0x00, 0xef, 0x00, 0xae, 0x00, 0xee, 0x00, 0xac, 0x00, 0xe5, 0x00, 0xa4, 0x00, 0xd9, 0x00, 0x96, 0x00, 0xca, 0x00, 0x84, 0x00, 0xb9, 0x00, 0x6f, 0x00, 0xa3, 0x00, 0x5b, 0x00, 0x8d, 0x00, 0x4f, 0x00, 0x7d, 0x00, 0x47, 0x00, 0x70, 0x00, 0x3b, 0x00, 0x5e, 0x00, 0x25, 0x00, 0x46, 0x00, 0x0a, 0x00, 0x29, 0x00, 0xef, 0xff, 0x10, 0x00, 0xd9, 0xff, 0xfc, 0xff, 0xc8, 0xff, 0xec, 0xff, 0xba, 0xff, 0xdd, 0xff, 0xac, 0xff, 0xcb, 0xff, 0xa0, 0xff, 0xb9, 0xff, 0x98, 0xff, 0xa9, 0xff, 0x96, 0xff, 0x9e, 0xff, 0x98, 0xff, 0x98, 0xff, 0x9a, 0xff, 0x92, 0xff, 0x9d, 0xff, 0x8d, 0xff, 0xa4, 0xff, 0x8d, 0xff, 0xaf, 0xff, 0x90, 0xff, 0xb9, 0xff, 0x92, 0xff, 0xc0, 0xff, 0x8f, 0xff, 0xc2, 0xff, 0x88, 0xff, 0xc3, 0xff, 0x7f, 0xff, 0xc6, 0xff, 0x76, 0xff, 0xd0, 0xff, 0x73, 0xff, 0xe3, 0xff, 0x78, 0xff, 0xf5, 0xff, 0x80, 0xff, 0xff, 0xff, 0x83, 0xff, 0xff, 0xff, 0x80, 0xff, 0xf4, 0xff, 0x77, 0xff, 0xe7, 0xff, 0x6e, 0xff, 0xe0, 0xff, 0x6b, 0xff, 0xe2, 0xff, 0x70, 0xff, 0xe6, 0xff, 0x79, 0xff, 0xec, 0xff, 0x84, 0xff, 0xef, 0xff, 0x8e, 0xff, 0xe8, 0xff, 0x90, 0xff, 0xd6, 0xff, 0x89, 0xff, 0xc6, 0xff, 0x83, 0xff, 0xbe, 0xff, 0x87, 0xff, 0xbe, 0xff, 0x92, 0xff, 0xc1, 0xff, 0xa0, 0xff, 0xc3, 0xff, 0xaf, 0xff, 0xc1, 0xff, 0xba, 0xff, 0xb8, 0xff, 0xbd, 0xff, 0xaf, 0xff, 0xbe, 0xff, 0xac, 0xff, 0xc1, 0xff, 0xb1, 0xff, 0xc8, 0xff, 0xbc, 0xff, 0xd5, 0xff, 0xcd, 0xff, 0xe7, 0xff, 0xdd, 0xff, 0xf9, 0xff, 0xe4, 0xff, 0x03, 0x00, 0xe2, 0xff, 0x07, 0x00, 0xde, 0xff, 0x09, 0x00, 0xde, 0xff, 0x0e, 0x00, 0xe7, 0xff, 0x19, 0x00, 0xfc, 0xff, 0x2c, 0x00, 0x15, 0x00, 0x41, 0x00, 0x29, 0x00, 0x52, 0x00, 0x30, 0x00, 0x59, 0x00, 0x2a, 0x00, 0x57, 0x00, 0x21, 0x00, 0x54, 0x00, 0x1c, 0x00, 0x55, 0x00, 0x21, 0x00, 0x5e, 0x00, 0x2d, 0x00, 0x6b, 0x00, 0x3c, 0x00, 0x7a, 0x00, 0x48, 0x00, 0x85, 0x00, 0x4c, 0x00, 0x88, 0x00, 0x49, 0x00, 0x87, 0x00, 0x3f, 0x00, 0x82, 0x00, 0x33, 0x00, 0x7d, 0x00, 0x2b, 0x00, 0x7d, 0x00, 0x28, 0x00, 0x81, 0x00, 0x29, 0x00, 0x86, 0x00, 0x29, 0x00, 0x88, 0x00, 0x26, 0x00, 0x87, 0x00, 0x1c, 0x00, 0x7f, 0x00, 0x0c, 0x00, 0x70, 0x00, 0xfc, 0xff, 0x61, 0x00, 0xf3, 0xff, 0x58, 0x00, 0xee, 0xff, 0x52, 0x00, 0xe6, 0xff, 0x4a, 0x00, 0xdb, 0xff, 0x3f, 0x00, 0xca, 0xff, 0x2d, 0x00, 0xb9, 0xff, 0x16, 0x00, 0xab, 0xff, 0x00, 0x00, 0xa2, 0xff, 0xeb, 0xff, 0x9d, 0xff, 0xdb, 0xff, 0x99, 0xff, 0xcb, 0xff, 0x93, 0xff, 0xb8, 0xff, 0x86, 0xff, 0x9f, 0xff, 0x74, 0xff, 0x80, 0xff, 0x62, 0xff, 0x64, 0xff, 0x5b, 0xff, 0x50, 0xff, 0x5f, 0xff, 0x45, 0xff, 0x68, 0xff, 0x3f, 0xff, 0x71, 0xff, 0x36, 0xff, 0x76, 0xff, 0x2b, 0xff, 0x79, 0xff, 0x20, 0xff, 0x7f, 0xff, 0x1a, 0xff, 0x8b, 0xff, 0x1b, 0xff, 0x9a, 0xff, 0x1f, 0xff, 0xac, 0xff, 0x26, 0xff, 0xc2, 0xff, 0x33, 0xff, 0xda, 0xff, 0x43, 0xff, 0xeb, 0xff, 0x51, 0xff, 0xf2, 0xff, 0x57, 0xff, 0xf1, 0xff, 0x58, 0xff, 0xf0, 0xff, 0x59, 0xff, 0xf6, 0xff, 0x63, 0xff, 0x02, 0x00, 0x72, 0xff, 0x0c, 0x00, 0x81, 0xff, 0x0e, 0x00, 0x8c, 0xff, 0x0b, 0x00, 0x93, 0xff, 0x04, 0x00, 0x99, 0xff, 0xfb, 0xff, 0x9f, 0xff, 0xf3, 0xff, 0xa5, 0xff, 0xf1, 0xff, 0xb1, 0xff, 0xfb, 0xff, 0xc5, 0xff, 0x0c, 0x00, 0xdd, 0xff, 0x1e, 0x00, 0xf6, 0xff, 0x2e, 0x00, 0x0c, 0x00, 0x37, 0x00, 0x1c, 0x00, 0x39, 0x00, 0x26, 0x00, 0x3d, 0x00, 0x31, 0x00, 0x48, 0x00, 0x42, 0x00, 0x5a, 0x00, 0x59, 0x00, 0x74, 0x00, 0x74, 0x00, 0x96, 0x00, 0x95, 0x00, 0xb6, 0x00, 0xb2, 0x00, 0xcc, 0x00, 0xc5, 0x00, 0xdc, 0x00, 0xd2, 0x00, 0xe9, 0x00, 0xdd, 0x00, 0xf2, 0x00, 0xe3, 0x00, 0xf8, 0x00, 0xe6, 0x00, 0xf9, 0x00, 0xe5, 0x00, 0xfb, 0x00, 0xe6, 0x00, 0xfe, 0x00, 0xea, 0x00, 0x06, 0x01, 0xf1, 0x00, 0x0d, 0x01, 0xf5, 0x00, 0x0c, 0x01, 0xf0, 0x00, 0x05, 0x01, 0xe6, 0x00, 0xfb, 0x00, 0xd9, 0x00, 0xf1, 0x00, 0xce, 0x00, 0xea, 0x00, 0xc9, 0x00, 0xeb, 0x00, 0xcb, 0x00, 0xed, 0x00, 0xce, 0x00, 0xe5, 0x00, 0xc7, 0x00, 0xd5, 0x00, 0xb9, 0x00, 0xbf, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x78, 0x00, 0x7d, 0x00, 0x65, 0x00, 0x6a, 0x00, 0x52, 0x00, 0x57, 0x00, 0x3f, 0x00, 0x47, 0x00, 0x2e, 0x00, 0x3c, 0x00, 0x22, 0x00, 0x30, 0x00, 0x16, 0x00, 0x22, 0x00, 0x07, 0x00, 0x0f, 0x00, 0xf4, 0xff, 0xfb, 0xff, 0xe1, 0xff, 0xec, 0xff, 0xd1, 0xff, 0xe6, 0xff, 0xc9, 0xff, 0xe5, 0xff, 0xc5, 0xff, 0xe4, 0xff, 0xc1, 0xff, 0xdf, 0xff, 0xba, 0xff, 0xd5, 0xff, 0xb1, 0xff, 0xc6, 0xff, 0xa5, 0xff, 0xb5, 0xff, 0x98, 0xff, 0xa8, 0xff, 0x8e, 0xff, 0x9e, 0xff, 0x86, 0xff, 0x97, 0xff, 0x7e, 0xff, 0x90, 0xff, 0x77, 0xff, 0x89, 0xff, 0x71, 0xff, 0x83, 0xff, 0x6f, 0xff, 0x7d, 0xff, 0x70, 0xff, 0x74, 0xff, 0x71, 0xff, 0x68, 0xff, 0x70, 0xff, 0x5d, 0xff, 0x6c, 0xff, 0x57, 0xff, 0x6a, 0xff, 0x56, 0xff, 0x69, 0xff, 0x5a, 0xff, 0x6d, 0xff, 0x61, 0xff, 0x75, 0xff, 0x67, 0xff, 0x7f, 0xff, 0x6b, 0xff, 0x87, 0xff, 0x6d, 0xff, 0x8d, 0xff, 0x70, 0xff, 0x91, 0xff, 0x75, 0xff, 0x97, 0xff, 0x78, 0xff, 0x9a, 0xff, 0x7b, 0xff, 0x9e, 0xff, 0x7c, 0xff, 0xa3, 0xff, 0x81, 0xff, 0xac, 0xff, 0x8a, 0xff, 0xba, 0xff, 0x96, 0xff, 0xc9, 0xff, 0xa4, 0xff, 0xd9, 0xff, 0xb4, 0xff, 0xe7, 0xff, 0xc1, 0xff, 0xf4, 0xff, 0xcd, 0xff, 0x00, 0x00, 0xd8, 0xff, 0x0e, 0x00, 0xe5, 0xff, 0x23, 0x00, 0xf9, 0xff, 0x3f, 0x00, 0x11, 0x00, 0x5f, 0x00, 0x2d, 0x00, 0x7f, 0x00, 0x47, 0x00, 0x9a, 0x00, 0x56, 0x00, 0xab, 0x00, 0x5e, 0x00, 0xb6, 0x00, 0x5f, 0x00, 0xbe, 0x00, 0x5d, 0x00, 0xc5, 0x00, 0x5a, 0x00, 0xce, 0x00, 0x57, 0x00, 0xd6, 0x00, 0x53, 0x00, 0xdc, 0x00, 0x4c, 0x00, 0xdd, 0x00, 0x42, 0x00, 0xd9, 0x00, 0x32, 0x00, 0xcc, 0x00, 0x1c, 0x00, 0xba, 0x00, 0x08, 0x00, 0xa8, 0x00, 0xf7, 0xff, 0x99, 0x00, 0xe9, 0xff, 0x8c, 0x00, 0xdb, 0xff, 0x7e, 0x00, 0xcd, 0xff, 0x70, 0x00, 0xbf, 0xff, 0x5f, 0x00, 0xac, 0xff, 0x49, 0x00, 0x9a, 0xff, 0x31, 0x00, 0x8d, 0xff, 0x1d, 0x00, 0x87, 0xff, 0x0d, 0x00, 0x86, 0xff, 0xff, 0xff, 0x83, 0xff, 0xed, 0xff, 0x7c, 0xff, 0xd8, 0xff, 0x73, 0xff, 0xc0, 0xff, 0x64, 0xff, 0xa8, 0xff, 0x55, 0xff, 0x90, 0xff, 0x47, 0xff, 0x7a, 0xff, 0x41, 0xff, 0x69, 0xff, 0x43, 0xff, 0x5e, 0xff, 0x4a, 0xff, 0x55, 0xff, 0x53, 0xff, 0x4d, 0xff, 0x58, 0xff, 0x44, 0xff, 0x5c, 0xff, 0x3b, 0xff, 0x5e, 0xff, 0x35, 0xff, 0x5f, 0xff, 0x2e, 0xff, 0x5c, 0xff, 0x25, 0xff, 0x56, 0xff, 0x1b, 0xff, 0x59, 0xff, 0x19, 0xff, 0x6d, 0xff, 0x26, 0xff, 0x8b, 0xff, 0x3e, 0xff, 0x9e, 0xff, 0x4b, 0xff, 0x9c, 0xff, 0x45, 0xff, 0x92, 0xff, 0x37, 0xff, 0x90, 0xff, 0x34, 0xff, 0x9a, 0xff, 0x3c, 0xff, 0xa0, 0xff, 0x43, 0xff, 0x9d, 0xff, 0x42, 0xff, 0x9e, 0xff, 0x45, 0xff, 0xb0, 0xff, 0x5a, 0xff, 0xcd, 0xff, 0x7a, 0xff, 0xe4, 0xff, 0x94, 0xff, 0xeb, 0xff, 0x9f, 0xff, 0xe5, 0xff, 0x9b, 0xff, 0xd9, 0xff, 0x90, 0xff, 0xcc, 0xff, 0x85, 0xff, 0xca, 0xff, 0x85, 0xff, 0xd5, 0xff, 0x95, 0xff, 0xeb, 0xff, 0xae, 0xff, 0xfb, 0xff, 0xc0, 0xff, 0xfd, 0xff, 0xc0, 0xff, 0xf4, 0xff, 0xb2, 0xff, 0xed, 0xff, 0xa7, 0xff, 0xf4, 0xff, 0xac, 0xff, 0x05, 0x00, 0xbd, 0xff, 0x19, 0x00, 0xd3, 0xff, 0x2b, 0x00, 0xe6, 0xff, 0x37, 0x00, 0xf1, 0xff, 0x3e, 0x00, 0xf5, 0xff, 0x44, 0x00, 0xf6, 0xff, 0x49, 0x00, 0xf3, 0xff, 0x4e, 0x00, 0xf1, 0xff, 0x57, 0x00, 0xf6, 0xff, 0x6e, 0x00, 0x0c, 0x00, 0x97, 0x00, 0x36, 0x00, 0xc2, 0x00, 0x62, 0x00, 0xda, 0x00, 0x79, 0x00, 0xda, 0x00, 0x77, 0x00, 0xd3, 0x00, 0x6c, 0x00, 0xd5, 0x00, 0x6e, 0x00, 0xe5, 0x00, 0x82, 0x00, 0xfd, 0x00, 0xa2, 0x00, 0x16, 0x01, 0xc2, 0x00, 0x30, 0x01, 0xe2, 0x00, 0x44, 0x01, 0xfa, 0x00, 0x4b, 0x01, 0x03, 0x01, 0x46, 0x01, 0xfe, 0x00, 0x38, 0x01, 0xef, 0x00, 0x27, 0x01, 0xdf, 0x00, 0x1a, 0x01, 0xd7, 0x00, 0x18, 0x01, 0xdb, 0x00, 0x1d, 0x01, 0xe7, 0x00, 0x22, 0x01, 0xf0, 0x00, 0x18, 0x01, 0xe6, 0x00, 0xf7, 0x00, 0xc1, 0x00, 0xc5, 0x00, 0x8b, 0x00, 0x93, 0x00, 0x58, 0x00, 0x77, 0x00, 0x3b, 0x00, 0x72, 0x00, 0x37, 0x00, 0x7a, 0x00, 0x3e, 0x00, 0x78, 0x00, 0x38, 0x00, 0x5f, 0x00, 0x1c, 0x00, 0x35, 0x00, 0xee, 0xff, 0x0a, 0x00, 0xc3, 0xff, 0xf0, 0xff, 0xa8, 0xff, 0xe6, 0xff, 0xa0, 0xff, 0xde, 0xff, 0x9b, 0xff, 0xcc, 0xff, 0x8b, 0xff, 0xb2, 0xff, 0x72, 0xff, 0x97, 0xff, 0x5a, 0xff, 0x84, 0xff, 0x4c, 0xff, 0x79, 0xff, 0x48, 0xff, 0x6e, 0xff, 0x45, 0xff, 0x66, 0xff, 0x45, 0xff, 0x61, 0xff, 0x48, 0xff, 0x65, 0xff, 0x4f, 0xff, 0x70, 0xff, 0x5b, 0xff, 0x84, 0xff, 0x6f, 0xff, 0x9e, 0xff, 0x89, 0xff, 0xb5, 0xff, 0xa2, 0xff, 0xc3, 0xff, 0xb6, 0xff, 0xcc, 0xff, 0xc5, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xee, 0xff, 0x03, 0x00, 0x08, 0x00, 0x1c, 0x00, 0x20, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x46, 0x00, 0x4b, 0x00, 0x4d, 0x00, 0x59, 0x00, 0x53, 0x00, 0x6a, 0x00, 0x5a, 0x00, 0x7b, 0x00, 0x60, 0x00, 0x89, 0x00, 0x61, 0x00, 0x8f, 0x00, 0x5e, 0x00, 0x90, 0x00, 0x60, 0x00, 0x95, 0x00, 0x67, 0x00, 0xa0, 0x00, 0x6f, 0x00, 0xae, 0x00, 0x75, 0x00, 0xbb, 0x00, 0x74, 0x00, 0xc1, 0x00, 0x6b, 0x00, 0xbe, 0x00, 0x5f, 0x00, 0xb6, 0x00, 0x54, 0x00, 0xb0, 0x00, 0x51, 0x00, 0xb2, 0x00, 0x56, 0x00, 0xbd, 0x00, 0x5c, 0x00, 0xc9, 0x00, 0x58, 0x00, 0xca, 0x00, 0x45, 0x00, 0xb8, 0x00, 0x26, 0x00, 0x97, 0x00, 0x0c, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x01, 0x00, 0x68, 0x00, 0x08, 0x00, 0x6d, 0x00, 0x0c, 0x00, 0x70, 0x00, 0x04, 0x00, 0x67, 0x00, 0xf3, 0xff, 0x52, 0x00, 0xdd, 0xff, 0x33, 0x00, 0xc6, 0xff, 0x13, 0x00, 0xb1, 0xff, 0xf3, 0xff, 0x9c, 0xff, 0xd8, 0xff, 0x8e, 0xff, 0xc5, 0xff, 0x84, 0xff, 0xb9, 0xff, 0x7f, 0xff, 0xaf, 0xff, 0x79, 0xff, 0xa1, 0xff, 0x6b, 0xff, 0x89, 0xff, 0x55, 0xff, 0x69, 0xff, 0x3d, 0xff, 0x48, 0xff, 0x2e, 0xff, 0x32, 0xff, 0x2b, 0xff, 0x2a, 0xff, 0x2f, 0xff, 0x2d, 0xff, 0x36, 0xff, 0x35, 0xff, 0x38, 0xff, 0x3a, 0xff, 0x33, 0xff, 0x38, 0xff, 0x2e, 0xff, 0x36, 0xff, 0x2f, 0xff, 0x3a, 0xff, 0x39, 0xff, 0x49, 0xff, 0x44, 0xff, 0x5c, 0xff, 0x4d, 0xff, 0x6c, 0xff, 0x54, 0xff, 0x77, 0xff, 0x59, 0xff, 0x7e, 0xff, 0x65, 0xff, 0x89, 0xff, 0x77, 0xff, 0x9b, 0xff, 0x87, 0xff, 0xac, 0xff, 0x91, 0xff, 0xb8, 0xff, 0x96, 0xff, 0xc0, 0xff, 0x98, 0xff, 0xc7, 0xff, 0x9c, 0xff, 0xcd, 0xff, 0xa2, 0xff, 0xd4, 0xff, 0xac, 0xff, 0xdb, 0xff, 0xb9, 0xff, 0xe3, 0xff, 0xc9, 0xff, 0xeb, 0xff, 0xdb, 0xff, 0xf8, 0xff, 0xec, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x10, 0x00, 0x00, 0x00, 0x13, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x02, 0x00, 0x09, 0x00, 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x1f, 0x00, 0x18, 0x00, 0x28, 0x00, 0x1d, 0x00, 0x2b, 0x00, 0x19, 0x00, 0x27, 0x00, 0x0f, 0x00, 0x1d, 0x00, 0x01, 0x00, 0x15, 0x00, 0xf8, 0xff, 0x16, 0x00, 0xf8, 0xff, 0x20, 0x00, 0x01, 0x00, 0x2e, 0x00, 0x0d, 0x00, 0x3d, 0x00, 0x18, 0x00, 0x4a, 0x00, 0x21, 0x00, 0x52, 0x00, 0x22, 0x00, 0x56, 0x00, 0x20, 0x00, 0x5a, 0x00, 0x1f, 0x00, 0x5f, 0x00, 0x22, 0x00, 0x67, 0x00, 0x2a, 0x00, 0x74, 0x00, 0x38, 0x00, 0x85, 0x00, 0x48, 0x00, 0x95, 0x00, 0x53, 0x00, 0x9d, 0x00, 0x57, 0x00, 0x9f, 0x00, 0x54, 0x00, 0xa0, 0x00, 0x52, 0x00, 0xa6, 0x00, 0x56, 0x00, 0xb3, 0x00, 0x64, 0x00, 0xc2, 0x00, 0x76, 0x00, 0xcf, 0x00, 0x87, 0x00, 0xd3, 0x00, 0x91, 0x00, 0xca, 0x00, 0x8e, 0x00, 0xb8, 0x00, 0x82, 0x00, 0xa6, 0x00, 0x76, 0x00, 0x98, 0x00, 0x70, 0x00, 0x8c, 0x00, 0x6e, 0x00, 0x81, 0x00, 0x6d, 0x00, 0x77, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x6a, 0x00, 0x5b, 0x00, 0x61, 0x00, 0x46, 0x00, 0x54, 0x00, 0x30, 0x00, 0x47, 0x00, 0x1c, 0x00, 0x3e, 0x00, 0x08, 0x00, 0x37, 0x00, 0xf3, 0xff, 0x2f, 0x00, 0xdc, 0xff, 0x24, 0x00, 0xc0, 0xff, 0x12, 0x00, 0xa3, 0xff, 0xfc, 0xff, 0x88, 0xff, 0xe4, 0xff, 0x73, 0xff, 0xcf, 0xff, 0x64, 0xff, 0xc1, 0xff, 0x57, 0xff, 0xb9, 0xff, 0x45, 0xff, 0xb1, 0xff, 0x2d, 0xff, 0xa5, 0xff, 0x13, 0xff, 0x96, 0xff, 0xfc, 0xfe, 0x88, 0xff, 0xec, 0xfe, 0x7d, 0xff, 0xe3, 0xfe, 0x79, 0xff, 0xe4, 0xfe, 0x7e, 0xff, 0xec, 0xfe, 0x8a, 0xff, 0xf6, 0xfe, 0x98, 0xff, 0xfe, 0xfe, 0xa7, 0xff, 0x03, 0xff, 0xb4, 0xff, 0x08, 0xff, 0xc1, 0xff, 0x0d, 0xff, 0xcc, 0xff, 0x15, 0xff, 0xd9, 0xff, 0x22, 0xff, 0xe8, 0xff, 0x34, 0xff, 0xfa, 0xff, 0x46, 0xff, 0x0b, 0x00, 0x55, 0xff, 0x17, 0x00, 0x61, 0xff, 0x1f, 0x00, 0x69, 0xff, 0x21, 0x00, 0x74, 0xff, 0x25, 0x00, 0x88, 0xff, 0x31, 0x00, 0xa6, 0xff, 0x45, 0x00, 0xc9, 0xff, 0x5e, 0x00, 0xea, 0xff, 0x71, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x1a, 0x00, 0x82, 0x00, 0x33, 0x00, 0x8a, 0x00, 0x51, 0x00, 0x97, 0x00, 0x75, 0x00, 0xa9, 0x00, 0x9b, 0x00, 0xbc, 0x00, 0xb8, 0x00, 0xc9, 0x00, 0xc7, 0x00, 0xc9, 0x00, 0xc8, 0x00, 0xbd, 0x00, 0xc4, 0x00, 0xab, 0x00, 0xc5, 0x00, 0x9d, 0x00, 0xce, 0x00, 0x95, 0x00, 0xdf, 0x00, 0x94, 0x00, 0xef, 0x00, 0x93, 0x00, 0xf8, 0x00, 0x8d, 0x00, 0xf8, 0x00, 0x82, 0x00, 0xf4, 0x00, 0x78, 0x00, 0xee, 0x00, 0x6f, 0x00, 0xe6, 0x00, 0x66, 0x00, 0xe3, 0x00, 0x60, 0x00, 0xe2, 0x00, 0x5a, 0x00, 0xe1, 0x00, 0x52, 0x00, 0xda, 0x00, 0x45, 0x00, 0xcf, 0x00, 0x35, 0x00, 0xc0, 0x00, 0x25, 0x00, 0xb1, 0x00, 0x17, 0x00, 0xa8, 0x00, 0x10, 0x00, 0xa5, 0x00, 0x0f, 0x00, 0xa4, 0x00, 0x11, 0x00, 0xa2, 0x00, 0x0f, 0x00, 0x98, 0x00, 0x07, 0x00, 0x85, 0x00, 0xf6, 0xff, 0x6f, 0x00, 0xe2, 0xff, 0x5b, 0x00, 0xd1, 0xff, 0x4d, 0x00, 0xc8, 0xff, 0x45, 0x00, 0xc6, 0xff, 0x3b, 0x00, 0xc3, 0xff, 0x2f, 0x00, 0xc0, 0xff, 0x1b, 0x00, 0xb9, 0xff, 0xfe, 0xff, 0xaa, 0xff, 0xda, 0xff, 0x96, 0xff, 0xb4, 0xff, 0x7e, 0xff, 0x94, 0xff, 0x69, 0xff, 0x7f, 0xff, 0x5e, 0xff, 0x72, 0xff, 0x5b, 0xff, 0x69, 0xff, 0x5f, 0xff, 0x5e, 0xff, 0x65, 0xff, 0x4e, 0xff, 0x6a, 0xff, 0x37, 0xff, 0x66, 0xff, 0x1b, 0xff, 0x5a, 0xff, 0x01, 0xff, 0x4c, 0xff, 0xea, 0xfe, 0x3d, 0xff, 0xd7, 0xfe, 0x30, 0xff, 0xc7, 0xfe, 0x26, 0xff, 0xba, 0xfe, 0x1f, 0xff, 0xad, 0xfe, 0x17, 0xff, 0xa0, 0xfe, 0x0f, 0xff, 0x96, 0xfe, 0x08, 0xff, 0x92, 0xfe, 0x04, 0xff, 0x95, 0xfe, 0x06, 0xff, 0x9c, 0xfe, 0x0a, 0xff, 0xa5, 0xfe, 0x10, 0xff, 0xac, 0xfe, 0x14, 0xff, 0xb4, 0xfe, 0x19, 0xff, 0xc2, 0xfe, 0x20, 0xff, 0xd5, 0xfe, 0x2a, 0xff, 0xf1, 0xfe, 0x37, 0xff, 0x13, 0xff, 0x4a, 0xff, 0x3a, 0xff, 0x61, 0xff, 0x5d, 0xff, 0x79, 0xff, 0x7a, 0xff, 0x8e, 0xff, 0x92, 0xff, 0xa0, 0xff, 0xa8, 0xff, 0xae, 0xff, 0xc1, 0xff, 0xbc, 0xff, 0xe1, 0xff, 0xcc, 0xff, 0x05, 0x00, 0xe0, 0xff, 0x2d, 0x00, 0xf7, 0xff, 0x57, 0x00, 0x11, 0x00, 0x7f, 0x00, 0x2b, 0x00, 0xa2, 0x00, 0x44, 0x00, 0xbb, 0x00, 0x55, 0x00, 0xcc, 0x00, 0x5f, 0x00, 0xde, 0x00, 0x69, 0x00, 0xf1, 0x00, 0x74, 0x00, 0x04, 0x01, 0x7f, 0x00, 0x17, 0x01, 0x89, 0x00, 0x2c, 0x01, 0x94, 0x00, 0x40, 0x01, 0x9d, 0x00, 0x52, 0x01, 0xa4, 0x00, 0x60, 0x01, 0xa6, 0x00, 0x68, 0x01, 0xa6, 0x00, 0x67, 0x01, 0xa1, 0x00, 0x5e, 0x01, 0x97, 0x00, 0x4e, 0x01, 0x8a, 0x00, 0x3c, 0x01, 0x79, 0x00, 0x2a, 0x01, 0x66, 0x00, 0x1a, 0x01, 0x4f, 0x00, 0x09, 0x01, 0x37, 0x00, 0xf9, 0x00, 0x23, 0x00, 0xeb, 0x00, 0x15, 0x00, 0xdd, 0x00, 0x0e, 0x00, 0xce, 0x00, 0x09, 0x00, 0xbc, 0x00, 0x02, 0x00, 0xaa, 0x00, 0xf8, 0xff, 0x98, 0x00, 0xeb, 0xff, 0x89, 0x00, 0xdd, 0xff, 0x7f, 0x00, 0xd2, 0xff, 0x77, 0x00, 0xca, 0xff, 0x6e, 0x00, 0xc6, 0xff, 0x62, 0x00, 0xc4, 0xff, 0x55, 0x00, 0xc5, 0xff, 0x48, 0x00, 0xc7, 0xff, 0x38, 0x00, 0xc5, 0xff, 0x24, 0x00, 0xbd, 0xff, 0x0d, 0x00, 0xb2, 0xff, 0xf4, 0xff, 0xa7, 0xff, 0xdc, 0xff, 0x9e, 0xff, 0xc9, 0xff, 0x9d, 0xff, 0xb6, 0xff, 0x9f, 0xff, 0xa3, 0xff, 0xa1, 0xff, 0x91, 0xff, 0xa4, 0xff, 0x81, 0xff, 0xaa, 0xff, 0x73, 0xff, 0xb1, 0xff, 0x63, 0xff, 0xb6, 0xff, 0x4f, 0xff, 0xb7, 0xff, 0x38, 0xff, 0xb2, 0xff, 0x21, 0xff, 0xab, 0xff, 0x10, 0xff, 0xa6, 0xff, 0x06, 0xff, 0xa6, 0xff, 0xff, 0xfe, 0xa8, 0xff, 0xf9, 0xfe, 0xaa, 0xff, 0xf2, 0xfe, 0xac, 0xff, 0xee, 0xfe, 0xaf, 0xff, 0xef, 0xfe, 0xb6, 0xff, 0xef, 0xfe, 0xb9, 0xff, 0xf0, 0xfe, 0xba, 0xff, 0xf0, 0xfe, 0xb9, 0xff, 0xf6, 0xfe, 0xb9, 0xff, 0x00, 0xff, 0xbe, 0xff, 0x0f, 0xff, 0xca, 0xff, 0x24, 0xff, 0xde, 0xff, 0x3d, 0xff, 0xf7, 0xff, 0x57, 0xff, 0x0f, 0x00, 0x6e, 0xff, 0x21, 0x00, 0x82, 0xff, 0x2d, 0x00, 0x93, 0xff, 0x35, 0x00, 0xa3, 0xff, 0x3f, 0x00, 0xb7, 0xff, 0x4f, 0x00, 0xd1, 0xff, 0x65, 0x00, 0xed, 0xff, 0x7c, 0x00, 0x0b, 0x00, 0x93, 0x00, 0x28, 0x00, 0xa6, 0x00, 0x41, 0x00, 0xb7, 0x00, 0x54, 0x00, 0xc5, 0x00, 0x64, 0x00, 0xd2, 0x00, 0x74, 0x00, 0xe0, 0x00, 0x85, 0x00, 0xed, 0x00, 0x95, 0x00, 0xf8, 0x00, 0xa3, 0x00, 0xfd, 0x00, 0xab, 0x00, 0xfd, 0x00, 0xac, 0x00, 0xf6, 0x00, 0xab, 0x00, 0xee, 0x00, 0xa9, 0x00, 0xe7, 0x00, 0xa5, 0x00, 0xde, 0x00, 0x9f, 0x00, 0xd3, 0x00, 0x98, 0x00, 0xc4, 0x00, 0x95, 0x00, 0xb7, 0x00, 0x96, 0x00, 0xa8, 0x00, 0x96, 0x00, 0x95, 0x00, 0x93, 0x00, 0x7f, 0x00, 0x91, 0x00, 0x6a, 0x00, 0x90, 0x00, 0x5a, 0x00, 0x93, 0x00, 0x50, 0x00, 0x99, 0x00, 0x48, 0x00, 0x9c, 0x00, 0x3e, 0x00, 0x99, 0x00, 0x2b, 0x00, 0x8e, 0x00, 0x10, 0x00, 0x7e, 0x00, 0xf4, 0xff, 0x72, 0x00, 0xe0, 0xff, 0x69, 0x00, 0xd3, 0xff, 0x63, 0x00, 0xcb, 0xff, 0x63, 0x00, 0xc8, 0xff, 0x64, 0x00, 0xc4, 0xff, 0x63, 0x00, 0xbf, 0xff, 0x60, 0x00, 0xba, 0xff, 0x5b, 0x00, 0xb9, 0xff, 0x54, 0x00, 0xba, 0xff, 0x4a, 0x00, 0xbb, 0xff, 0x3f, 0x00, 0xba, 0xff, 0x34, 0x00, 0xb9, 0xff, 0x2a, 0x00, 0xb5, 0xff, 0x1e, 0x00, 0xae, 0xff, 0x12, 0x00, 0xa9, 0xff, 0x06, 0x00, 0xa5, 0xff, 0xf7, 0xff, 0xa3, 0xff, 0xe9, 0xff, 0xa4, 0xff, 0xdd, 0xff, 0xa4, 0xff, 0xcf, 0xff, 0xa1, 0xff, 0xc0, 0xff, 0x96, 0xff, 0xb0, 0xff, 0x87, 0xff, 0xa0, 0xff, 0x77, 0xff, 0x8d, 0xff, 0x65, 0xff, 0x7b, 0xff, 0x58, 0xff, 0x71, 0xff, 0x54, 0xff, 0x6c, 0xff, 0x55, 0xff, 0x68, 0xff, 0x54, 0xff, 0x66, 0xff, 0x51, 0xff, 0x62, 0xff, 0x4b, 0xff, 0x5f, 0xff, 0x43, 0xff, 0x60, 0xff, 0x40, 0xff, 0x66, 0xff, 0x43, 0xff, 0x6d, 0xff, 0x4a, 0xff, 0x78, 0xff, 0x55, 0xff, 0x87, 0xff, 0x64, 0xff, 0x99, 0xff, 0x75, 0xff, 0xa9, 0xff, 0x83, 0xff, 0xb7, 0xff, 0x91, 0xff, 0xc6, 0xff, 0xa3, 0xff, 0xd6, 0xff, 0xb7, 0xff, 0xe6, 0xff, 0xcb, 0xff, 0xf6, 0xff, 0xdf, 0xff, 0x07, 0x00, 0xf2, 0xff, 0x15, 0x00, 0x04, 0x00, 0x22, 0x00, 0x17, 0x00, 0x2c, 0x00, 0x28, 0x00, 0x32, 0x00, 0x34, 0x00, 0x39, 0x00, 0x3f, 0x00, 0x43, 0x00, 0x4b, 0x00, 0x4d, 0x00, 0x55, 0x00, 0x53, 0x00, 0x5b, 0x00, 0x54, 0x00, 0x5e, 0x00, 0x52, 0x00, 0x5f, 0x00, 0x53, 0x00, 0x62, 0x00, 0x5a, 0x00, 0x6a, 0x00, 0x69, 0x00, 0x78, 0x00, 0x7a, 0x00, 0x85, 0x00, 0x88, 0x00, 0x8f, 0x00, 0x93, 0x00, 0x94, 0x00, 0x9a, 0x00, 0x94, 0x00, 0x9d, 0x00, 0x92, 0x00, 0x9d, 0x00, 0x90, 0x00, 0x9a, 0x00, 0x8e, 0x00, 0x98, 0x00, 0x8e, 0x00, 0x9e, 0x00, 0x93, 0x00, 0xaa, 0x00, 0x9b, 0x00, 0xb6, 0x00, 0xa0, 0x00, 0xbf, 0x00, 0xa3, 0x00, 0xc4, 0x00, 0xa5, 0x00, 0xc6, 0x00, 0xa6, 0x00, 0xc1, 0x00, 0xa3, 0x00, 0xbb, 0x00, 0x9d, 0x00, 0xb9, 0x00, 0x98, 0x00, 0xba, 0x00, 0x94, 0x00, 0xbb, 0x00, 0x8e, 0x00, 0xb5, 0x00, 0x85, 0x00, 0xa8, 0x00, 0x76, 0x00, 0x98, 0x00, 0x69, 0x00, 0x8c, 0x00, 0x62, 0x00, 0x85, 0x00, 0x61, 0x00, 0x7e, 0x00, 0x60, 0x00, 0x74, 0x00, 0x5c, 0x00, 0x63, 0x00, 0x51, 0x00, 0x4b, 0x00, 0x3e, 0x00, 0x2d, 0x00, 0x26, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf3, 0xff, 0x00, 0x00, 0xd8, 0xff, 0xf5, 0xff, 0xbf, 0xff, 0xef, 0xff, 0xa9, 0xff, 0xea, 0xff, 0x92, 0xff, 0xe1, 0xff, 0x79, 0xff, 0xd2, 0xff, 0x5f, 0xff, 0xc3, 0xff, 0x49, 0xff, 0xbc, 0xff, 0x35, 0xff, 0xba, 0xff, 0x24, 0xff, 0xbc, 0xff, 0x18, 0xff, 0xbd, 0xff, 0x11, 0xff, 0xbb, 0xff, 0x0d, 0xff, 0xb8, 0xff, 0x10, 0xff, 0xb9, 0xff, 0x15, 0xff, 0xbd, 0xff, 0x1b, 0xff, 0xc2, 0xff, 0x23, 0xff, 0xc9, 0xff, 0x2d, 0xff, 0xd4, 0xff, 0x3a, 0xff, 0xdf, 0xff, 0x47, 0xff, 0xe5, 0xff, 0x4f, 0xff, 0xe5, 0xff, 0x59, 0xff, 0xe2, 0xff, 0x63, 0xff, 0xe0, 0xff, 0x6c, 0xff, 0xe2, 0xff, 0x77, 0xff, 0xe8, 0xff, 0x80, 0xff, 0xef, 0xff, 0x89, 0xff, 0xf5, 0xff, 0x94, 0xff, 0xfa, 0xff, 0xa0, 0xff, 0xfb, 0xff, 0xaa, 0xff, 0xfa, 0xff, 0xb5, 0xff, 0xfa, 0xff, 0xc1, 0xff, 0xfc, 0xff, 0xcf, 0xff, 0x05, 0x00, 0xe1, 0xff, 0x11, 0x00, 0xf1, 0xff, 0x1b, 0x00, 0xfc, 0xff, 0x1e, 0x00, 0x02, 0x00, 0x1b, 0x00, 0x09, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, 0x21, 0x00, 0x16, 0x00, 0x2f, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x1e, 0x00, 0x4e, 0x00, 0x23, 0x00, 0x5b, 0x00, 0x23, 0x00, 0x65, 0x00, 0x1f, 0x00, 0x70, 0x00, 0x1c, 0x00, 0x7f, 0x00, 0x20, 0x00, 0x91, 0x00, 0x29, 0x00, 0xa3, 0x00, 0x34, 0x00, 0xaf, 0x00, 0x3a, 0x00, 0xb8, 0x00, 0x3c, 0x00, 0xbc, 0x00, 0x38, 0x00, 0xbc, 0x00, 0x2f, 0x00, 0xbc, 0x00, 0x25, 0x00, 0xbe, 0x00, 0x20, 0x00, 0xc2, 0x00, 0x21, 0x00, 0xc2, 0x00, 0x22, 0x00, 0xbf, 0x00, 0x23, 0x00, 0xba, 0x00, 0x22, 0x00, 0xb1, 0x00, 0x1c, 0x00, 0xa2, 0x00, 0x0f, 0x00, 0x92, 0x00, 0x00, 0x00, 0x84, 0x00, 0xf6, 0xff, 0x78, 0x00, 0xf1, 0xff, 0x6b, 0x00, 0xf1, 0xff, 0x5f, 0x00, 0xf6, 0xff, 0x51, 0x00, 0xf9, 0xff, 0x3c, 0x00, 0xf4, 0xff, 0x21, 0x00, 0xe5, 0xff, 0x00, 0x00, 0xd1, 0xff, 0xe0, 0xff, 0xbe, 0xff, 0xc4, 0xff, 0xb3, 0xff, 0xae, 0xff, 0xad, 0xff, 0x9c, 0xff, 0xaa, 0xff, 0x89, 0xff, 0xa5, 0xff, 0x70, 0xff, 0x99, 0xff, 0x4f, 0xff, 0x84, 0xff, 0x2d, 0xff, 0x6d, 0xff, 0x14, 0xff, 0x5f, 0xff, 0x0c, 0xff, 0x64, 0xff, 0x07, 0xff, 0x6a, 0xff, 0xf5, 0xfe, 0x63, 0xff, 0xda, 0xfe, 0x50, 0xff, 0xc8, 0xfe, 0x44, 0xff, 0xc5, 0xfe, 0x46, 0xff, 0xc6, 0xfe, 0x4c, 0xff, 0xc0, 0xfe, 0x4f, 0xff, 0xb2, 0xfe, 0x4b, 0xff, 0xa8, 0xfe, 0x4b, 0xff, 0xae, 0xfe, 0x59, 0xff, 0xc1, 0xfe, 0x71, 0xff, 0xd1, 0xfe, 0x81, 0xff, 0xd5, 0xfe, 0x82, 0xff, 0xd7, 0xfe, 0x81, 0xff, 0xe0, 0xfe, 0x89, 0xff, 0xf3, 0xfe, 0x9c, 0xff, 0x0e, 0xff, 0xb7, 0xff, 0x29, 0xff, 0xce, 0xff, 0x38, 0xff, 0xd4, 0xff, 0x40, 0xff, 0xce, 0xff, 0x4f, 0xff, 0xcd, 0xff, 0x67, 0xff, 0xd8, 0xff, 0x81, 0xff, 0xe6, 0xff, 0x96, 0xff, 0xf1, 0xff, 0xa8, 0xff, 0xf8, 0xff, 0xba, 0xff, 0xf9, 0xff, 0xce, 0xff, 0xf5, 0xff, 0xe4, 0xff, 0xef, 0xff, 0xfa, 0xff, 0xec, 0xff, 0x10, 0x00, 0xec, 0xff, 0x25, 0x00, 0xf0, 0xff, 0x38, 0x00, 0xf4, 0xff, 0x45, 0x00, 0xf0, 0xff, 0x50, 0x00, 0xeb, 0xff, 0x60, 0x00, 0xeb, 0xff, 0x76, 0x00, 0xf5, 0xff, 0x8e, 0x00, 0x02, 0x00, 0xa2, 0x00, 0x10, 0x00, 0xb0, 0x00, 0x1d, 0x00, 0xb8, 0x00, 0x27, 0x00, 0xbd, 0x00, 0x30, 0x00, 0xc4, 0x00, 0x3b, 0x00, 0xd0, 0x00, 0x48, 0x00, 0xdd, 0x00, 0x54, 0x00, 0xe0, 0x00, 0x59, 0x00, 0xdd, 0x00, 0x5a, 0x00, 0xd8, 0x00, 0x5d, 0x00, 0xd7, 0x00, 0x65, 0x00, 0xd6, 0x00, 0x6f, 0x00, 0xd2, 0x00, 0x74, 0x00, 0xce, 0x00, 0x77, 0x00, 0xcd, 0x00, 0x7d, 0x00, 0xce, 0x00, 0x85, 0x00, 0xcd, 0x00, 0x8e, 0x00, 0xcc, 0x00, 0x96, 0x00, 0xcb, 0x00, 0x9e, 0x00, 0xcc, 0x00, 0xa6, 0x00, 0xcc, 0x00, 0xab, 0x00, 0xcc, 0x00, 0xaf, 0x00, 0xc9, 0x00, 0xb0, 0x00, 0xc2, 0x00, 0xaf, 0x00, 0xb8, 0x00, 0xaf, 0x00, 0xab, 0x00, 0xad, 0x00, 0x9c, 0x00, 0xab, 0x00, 0x8e, 0x00, 0xa6, 0x00, 0x7e, 0x00, 0x9c, 0x00, 0x6a, 0x00, 0x8d, 0x00, 0x56, 0x00, 0x81, 0x00, 0x44, 0x00, 0x7b, 0x00, 0x31, 0x00, 0x75, 0x00, 0x1c, 0x00, 0x6a, 0x00, 0x05, 0x00, 0x59, 0x00, 0xf1, 0xff, 0x48, 0x00, 0xdc, 0xff, 0x36, 0x00, 0xc4, 0xff, 0x22, 0x00, 0xa8, 0xff, 0x0a, 0x00, 0x89, 0xff, 0xef, 0xff, 0x6c, 0xff, 0xd5, 0xff, 0x52, 0xff, 0xbf, 0xff, 0x3c, 0xff, 0xae, 0xff, 0x27, 0xff, 0x9e, 0xff, 0x16, 0xff, 0x91, 0xff, 0x0b, 0xff, 0x85, 0xff, 0x03, 0xff, 0x7b, 0xff, 0xfd, 0xfe, 0x73, 0xff, 0xf8, 0xfe, 0x6f, 0xff, 0xf8, 0xfe, 0x6f, 0xff, 0xfb, 0xfe, 0x70, 0xff, 0x03, 0xff, 0x70, 0xff, 0x0c, 0xff, 0x6d, 0xff, 0x16, 0xff, 0x6a, 0xff, 0x26, 0xff, 0x6d, 0xff, 0x38, 0xff, 0x74, 0xff, 0x49, 0xff, 0x7a, 0xff, 0x57, 0xff, 0x7a, 0xff, 0x67, 0xff, 0x77, 0xff, 0x7a, 0xff, 0x75, 0xff, 0x91, 0xff, 0x77, 0xff, 0xac, 0xff, 0x7f, 0xff, 0xc4, 0xff, 0x89, 0xff, 0xd9, 0xff, 0x93, 0xff, 0xed, 0xff, 0x9f, 0xff, 0x07, 0x00, 0xb0, 0xff, 0x22, 0x00, 0xc1, 0xff, 0x3a, 0x00, 0xce, 0xff, 0x4f, 0x00, 0xd9, 0xff, 0x5c, 0x00, 0xe1, 0xff, 0x66, 0x00, 0xea, 0xff, 0x70, 0x00, 0xf7, 0xff, 0x7d, 0x00, 0x06, 0x00, 0x89, 0x00, 0x15, 0x00, 0x92, 0x00, 0x1e, 0x00, 0x99, 0x00, 0x24, 0x00, 0xa3, 0x00, 0x2c, 0x00, 0xad, 0x00, 0x33, 0x00, 0xb4, 0x00, 0x38, 0x00, 0xb7, 0x00, 0x3b, 0x00, 0xb8, 0x00, 0x3e, 0x00, 0xbc, 0x00, 0x41, 0x00, 0xbf, 0x00, 0x42, 0x00, 0xc5, 0x00, 0x42, 0x00, 0xca, 0x00, 0x40, 0x00, 0xd1, 0x00, 0x41, 0x00, 0xd9, 0x00, 0x46, 0x00, 0xe0, 0x00, 0x4a, 0x00, 0xe5, 0x00, 0x4d, 0x00, 0xec, 0x00, 0x52, 0x00, 0xf4, 0x00, 0x57, 0x00, 0xfa, 0x00, 0x59, 0x00, 0xff, 0x00, 0x5b, 0x00, 0x02, 0x01, 0x5e, 0x00, 0x02, 0x01, 0x61, 0x00, 0xfe, 0x00, 0x63, 0x00, 0xf4, 0x00, 0x63, 0x00, 0xe7, 0x00, 0x62, 0x00, 0xd5, 0x00, 0x5b, 0x00, 0xc5, 0x00, 0x54, 0x00, 0xc0, 0x00, 0x56, 0x00, 0xbc, 0x00, 0x5a, 0x00, 0xae, 0x00, 0x56, 0x00, 0x98, 0x00, 0x4e, 0x00, 0x83, 0x00, 0x4a, 0x00, 0x74, 0x00, 0x4e, 0x00, 0x66, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x57, 0x00, 0x25, 0x00, 0x44, 0x00, 0xf7, 0xff, 0x29, 0x00, 0xdd, 0xff, 0x1e, 0x00, 0xd9, 0xff, 0x28, 0x00, 0xd2, 0xff, 0x2d, 0x00, 0xb2, 0xff, 0x19, 0x00, 0x80, 0xff, 0xf3, 0xff, 0x51, 0xff, 0xd1, 0xff, 0x32, 0xff, 0xbf, 0xff, 0x1e, 0xff, 0xb6, 0xff, 0x07, 0xff, 0xa7, 0xff, 0xe8, 0xfe, 0x8a, 0xff, 0xca, 0xfe, 0x68, 0xff, 0xbd, 0xfe, 0x53, 0xff, 0xbb, 0xfe, 0x48, 0xff, 0xb8, 0xfe, 0x41, 0xff, 0xb2, 0xfe, 0x39, 0xff, 0xaf, 0xfe, 0x36, 0xff, 0xb2, 0xfe, 0x38, 0xff, 0xbb, 0xfe, 0x3d, 0xff, 0xc8, 0xfe, 0x41, 0xff, 0xd9, 0xfe, 0x46, 0xff, 0xed, 0xfe, 0x4e, 0xff, 0xfc, 0xfe, 0x55, 0xff, 0x05, 0xff, 0x59, 0xff, 0x09, 0xff, 0x5f, 0xff, 0x11, 0xff, 0x68, 0xff, 0x1f, 0xff, 0x76, 0xff, 0x32, 0xff, 0x84, 0xff, 0x43, 0xff, 0x90, 0xff, 0x4f, 0xff, 0x97, 0xff, 0x56, 0xff, 0x9a, 0xff, 0x58, 0xff, 0x9d, 0xff, 0x5b, 0xff, 0xa2, 0xff, 0x62, 0xff, 0xab, 0xff, 0x6e, 0xff, 0xb9, 0xff, 0x7e, 0xff, 0xc9, 0xff, 0x8f, 0xff, 0xd9, 0xff, 0xa2, 0xff, 0xea, 0xff, 0xb4, 0xff, 0xfa, 0xff, 0xc6, 0xff, 0x0c, 0x00, 0xd9, 0xff, 0x22, 0x00, 0xee, 0xff, 0x39, 0x00, 0x03, 0x00, 0x4f, 0x00, 0x18, 0x00, 0x62, 0x00, 0x2c, 0x00, 0x74, 0x00, 0x42, 0x00, 0x87, 0x00, 0x54, 0x00, 0x9b, 0x00, 0x64, 0x00, 0xaf, 0x00, 0x72, 0x00, 0xc0, 0x00, 0x7e, 0x00, 0xcf, 0x00, 0x8b, 0x00, 0xdc, 0x00, 0x96, 0x00, 0xe6, 0x00, 0x9e, 0x00, 0xef, 0x00, 0xa5, 0x00, 0xf8, 0x00, 0xb1, 0x00, 0x07, 0x01, 0xbc, 0x00, 0x16, 0x01, 0xc0, 0x00, 0x1f, 0x01, 0xbe, 0x00, 0x23, 0x01, 0xb7, 0x00, 0x20, 0x01, 0xb1, 0x00, 0x1c, 0x01, 0xae, 0x00, 0x17, 0x01, 0xaf, 0x00, 0x10, 0x01, 0xae, 0x00, 0x06, 0x01, 0xa4, 0x00, 0xf4, 0x00, 0x95, 0x00, 0xde, 0x00, 0x88, 0x00, 0xc9, 0x00, 0x80, 0x00, 0xb9, 0x00, 0x7e, 0x00, 0xac, 0x00, 0x7b, 0x00, 0x9d, 0x00, 0x73, 0x00, 0x8a, 0x00, 0x69, 0x00, 0x78, 0x00, 0x62, 0x00, 0x69, 0x00, 0x5d, 0x00, 0x5a, 0x00, 0x54, 0x00, 0x45, 0x00, 0x49, 0x00, 0x2b, 0x00, 0x3d, 0x00, 0x11, 0x00, 0x33, 0x00, 0xfd, 0xff, 0x2b, 0x00, 0xf2, 0xff, 0x21, 0x00, 0xe9, 0xff, 0x13, 0x00, 0xdd, 0xff, 0x01, 0x00, 0xcb, 0xff, 0xf0, 0xff, 0xb4, 0xff, 0xde, 0xff, 0x9b, 0xff, 0xcb, 0xff, 0x81, 0xff, 0xb5, 0xff, 0x66, 0xff, 0x9b, 0xff, 0x4a, 0xff, 0x7e, 0xff, 0x2d, 0xff, 0x63, 0xff, 0x14, 0xff, 0x51, 0xff, 0x04, 0xff, 0x47, 0xff, 0xfa, 0xfe, 0x3e, 0xff, 0xef, 0xfe, 0x31, 0xff, 0xdf, 0xfe, 0x25, 0xff, 0xcd, 0xfe, 0x1f, 0xff, 0xc1, 0xfe, 0x25, 0xff, 0xc3, 0xfe, 0x34, 0xff, 0xd2, 0xfe, 0x43, 0xff, 0xe6, 0xfe, 0x4e, 0xff, 0xf6, 0xfe, 0x54, 0xff, 0x01, 0xff, 0x5f, 0xff, 0x0f, 0xff, 0x6f, 0xff, 0x20, 0xff, 0x82, 0xff, 0x37, 0xff, 0x97, 0xff, 0x50, 0xff, 0xae, 0xff, 0x69, 0xff, 0xc6, 0xff, 0x81, 0xff, 0xe2, 0xff, 0x99, 0xff, 0x01, 0x00, 0xb0, 0xff, 0x1d, 0x00, 0xc5, 0xff, 0x32, 0x00, 0xd7, 0xff, 0x43, 0x00, 0xe7, 0xff, 0x53, 0x00, 0xf8, 0xff, 0x69, 0x00, 0x0f, 0x00, 0x84, 0x00, 0x2b, 0x00, 0x9e, 0x00, 0x45, 0x00, 0xb2, 0x00, 0x57, 0x00, 0xba, 0x00, 0x5d, 0x00, 0xbd, 0x00, 0x5d, 0x00, 0xc1, 0x00, 0x60, 0x00, 0xc6, 0x00, 0x6a, 0x00, 0xcd, 0x00, 0x7b, 0x00, 0xd1, 0x00, 0x8a, 0x00, 0xcf, 0x00, 0x90, 0x00, 0xca, 0x00, 0x90, 0x00, 0xc8, 0x00, 0x8e, 0x00, 0xc9, 0x00, 0x8f, 0x00, 0xc7, 0x00, 0x91, 0x00, 0xc0, 0x00, 0x92, 0x00, 0xb7, 0x00, 0x94, 0x00, 0xb0, 0x00, 0x97, 0x00, 0xa8, 0x00, 0x99, 0x00, 0xa3, 0x00, 0x99, 0x00, 0xa2, 0x00, 0x9b, 0x00, 0xa5, 0x00, 0xa0, 0x00, 0xa5, 0x00, 0xa5, 0x00, 0xa2, 0x00, 0xa9, 0x00, 0x9e, 0x00, 0xac, 0x00, 0x97, 0x00, 0xac, 0x00, 0x90, 0x00, 0xab, 0x00, 0x8c, 0x00, 0xaa, 0x00, 0x89, 0x00, 0xaa, 0x00, 0x83, 0x00, 0xaa, 0x00, 0x78, 0x00, 0xa6, 0x00, 0x68, 0x00, 0xa0, 0x00, 0x57, 0x00, 0x97, 0x00, 0x42, 0x00, 0x8a, 0x00, 0x28, 0x00, 0x75, 0x00, 0x0b, 0x00, 0x5b, 0x00, 0xee, 0xff, 0x41, 0x00, 0xd3, 0xff, 0x27, 0x00, 0xbb, 0xff, 0x0d, 0x00, 0xa2, 0xff, 0xf3, 0xff, 0x83, 0xff, 0xd5, 0xff, 0x60, 0xff, 0xb6, 0xff, 0x40, 0xff, 0x9a, 0xff, 0x24, 0xff, 0x82, 0xff, 0x0e, 0xff, 0x6e, 0xff, 0xfd, 0xfe, 0x5b, 0xff, 0xf3, 0xfe, 0x4f, 0xff, 0xec, 0xfe, 0x45, 0xff, 0xe5, 0xfe, 0x39, 0xff, 0xdc, 0xfe, 0x2a, 0xff, 0xd6, 0xfe, 0x1a, 0xff, 0xd7, 0xfe, 0x12, 0xff, 0xde, 0xfe, 0x10, 0xff, 0xec, 0xfe, 0x17, 0xff, 0xfe, 0xfe, 0x24, 0xff, 0x10, 0xff, 0x33, 0xff, 0x20, 0xff, 0x3d, 0xff, 0x2c, 0xff, 0x41, 0xff, 0x39, 0xff, 0x44, 0xff, 0x49, 0xff, 0x49, 0xff, 0x61, 0xff, 0x56, 0xff, 0x7e, 0xff, 0x6c, 0xff, 0x9e, 0xff, 0x86, 0xff, 0xbc, 0xff, 0xa0, 0xff, 0xd2, 0xff, 0xb3, 0xff, 0xe0, 0xff, 0xbb, 0xff, 0xe8, 0xff, 0xbc, 0xff, 0xf1, 0xff, 0xbe, 0xff, 0xfa, 0xff, 0xc3, 0xff, 0x03, 0x00, 0xcc, 0xff, 0x0c, 0x00, 0xd7, 0xff, 0x11, 0x00, 0xdf, 0xff, 0x16, 0x00, 0xe3, 0xff, 0x19, 0x00, 0xe5, 0xff, 0x1d, 0x00, 0xe5, 0xff, 0x20, 0x00, 0xe6, 0xff, 0x25, 0x00, 0xe9, 0xff, 0x2b, 0x00, 0xed, 0xff, 0x33, 0x00, 0xf4, 0xff, 0x40, 0x00, 0x02, 0x00, 0x51, 0x00, 0x14, 0x00, 0x65, 0x00, 0x26, 0x00, 0x78, 0x00, 0x33, 0x00, 0x8a, 0x00, 0x3f, 0x00, 0x9e, 0x00, 0x4f, 0x00, 0xad, 0x00, 0x5f, 0x00, 0xb9, 0x00, 0x6f, 0x00, 0xc5, 0x00, 0x7f, 0x00, 0xd5, 0x00, 0x8f, 0x00, 0xe5, 0x00, 0x9c, 0x00, 0xf2, 0x00, 0xa7, 0x00, 0xfc, 0x00, 0xb1, 0x00, 0xff, 0x00, 0xb8, 0x00, 0xfd, 0x00, 0xbf, 0x00, 0xf7, 0x00, 0xc4, 0x00, 0xec, 0x00, 0xc5, 0x00, 0xdd, 0x00, 0xc0, 0x00, 0xca, 0x00, 0xb6, 0x00, 0xb5, 0x00, 0xa9, 0x00, 0xa0, 0x00, 0x9c, 0x00, 0x8e, 0x00, 0x92, 0x00, 0x7c, 0x00, 0x8d, 0x00, 0x67, 0x00, 0x85, 0x00, 0x4e, 0x00, 0x79, 0x00, 0x32, 0x00, 0x67, 0x00, 0x18, 0x00, 0x53, 0x00, 0x02, 0x00, 0x40, 0x00, 0xf1, 0xff, 0x33, 0x00, 0xe3, 0xff, 0x2c, 0x00, 0xd5, 0xff, 0x28, 0x00, 0xc3, 0xff, 0x20, 0x00, 0xae, 0xff, 0x10, 0x00, 0x99, 0xff, 0xfa, 0xff, 0x84, 0xff, 0xe0, 0xff, 0x78, 0xff, 0xcc, 0xff, 0x76, 0xff, 0xc2, 0xff, 0x7a, 0xff, 0xc1, 0xff, 0x7d, 0xff, 0xc0, 0xff, 0x7b, 0xff, 0xbd, 0xff, 0x77, 0xff, 0xb7, 0xff, 0x70, 0xff, 0xaf, 0xff, 0x69, 0xff, 0xa4, 0xff, 0x63, 0xff, 0x9c, 0xff, 0x5d, 0xff, 0x96, 0xff, 0x59, 0xff, 0x94, 0xff, 0x59, 0xff, 0x93, 0xff, 0x5d, 0xff, 0x96, 0xff, 0x5e, 0xff, 0x95, 0xff, 0x58, 0xff, 0x8d, 0xff, 0x4d, 0xff, 0x81, 0xff, 0x3f, 0xff, 0x75, 0xff, 0x33, 0xff, 0x6d, 0xff, 0x2e, 0xff, 0x6d, 0xff, 0x30, 0xff, 0x75, 0xff, 0x34, 0xff, 0x7c, 0xff, 0x37, 0xff, 0x7e, 0xff, 0x3d, 0xff, 0x7f, 0xff, 0x45, 0xff, 0x7d, 0xff, 0x4d, 0xff, 0x7c, 0xff, 0x59, 0xff, 0x80, 0xff, 0x6b, 0xff, 0x8c, 0xff, 0x80, 0xff, 0x9e, 0xff, 0x9a, 0xff, 0xb2, 0xff, 0xb7, 0xff, 0xc5, 0xff, 0xd6, 0xff, 0xd3, 0xff, 0xf2, 0xff, 0xda, 0xff, 0x0b, 0x00, 0xde, 0xff, 0x21, 0x00, 0xe5, 0xff, 0x34, 0x00, 0xee, 0xff, 0x44, 0x00, 0xfa, 0xff, 0x54, 0x00, 0x09, 0x00, 0x66, 0x00, 0x19, 0x00, 0x79, 0x00, 0x28, 0x00, 0x8e, 0x00, 0x37, 0x00, 0xa0, 0x00, 0x43, 0x00, 0xab, 0x00, 0x4c, 0x00, 0xb3, 0x00, 0x57, 0x00, 0xbb, 0x00, 0x64, 0x00, 0xc0, 0x00, 0x70, 0x00, 0xc2, 0x00, 0x7a, 0x00, 0xc2, 0x00, 0x84, 0x00, 0xbd, 0x00, 0x8c, 0x00, 0xb8, 0x00, 0x94, 0x00, 0xb7, 0x00, 0xa1, 0x00, 0xbc, 0x00, 0xb2, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xc8, 0x00, 0xd1, 0x00, 0xc7, 0x00, 0xd8, 0x00, 0xbf, 0x00, 0xd9, 0x00, 0xb5, 0x00, 0xd7, 0x00, 0xac, 0x00, 0xd4, 0x00, 0xa2, 0x00, 0xce, 0x00, 0x99, 0x00, 0xc5, 0x00, 0x8d, 0x00, 0xb7, 0x00, 0x7e, 0x00, 0xa1, 0x00, 0x6d, 0x00, 0x89, 0x00, 0x5c, 0x00, 0x71, 0x00, 0x4a, 0x00, 0x59, 0x00, 0x38, 0x00, 0x41, 0x00, 0x2a, 0x00, 0x2d, 0x00, 0x1f, 0x00, 0x1b, 0x00, 0x13, 0x00, 0x08, 0x00, 0x03, 0x00, 0xf3, 0xff, 0xf3, 0xff, 0xdf, 0xff, 0xe5, 0xff, 0xd0, 0xff, 0xda, 0xff, 0xc7, 0xff, 0xd2, 0xff, 0xc4, 0xff, 0xd1, 0xff, 0xc7, 0xff, 0xd2, 0xff, 0xc9, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xd7, 0xff, 0xd0, 0xff, 0xd9, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xdd, 0xff, 0xd0, 0xff, 0xe2, 0xff, 0xc9, 0xff, 0xe8, 0xff, 0xc5, 0xff, 0xf1, 0xff, 0xc4, 0xff, 0xf9, 0xff, 0xc7, 0xff, 0x00, 0x00, 0xca, 0xff, 0x01, 0x00, 0xcb, 0xff, 0xfd, 0xff, 0xcb, 0xff, 0xf6, 0xff, 0xca, 0xff, 0xf0, 0xff, 0xcd, 0xff, 0xf0, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0xdc, 0xff, 0xfd, 0xff, 0xe3, 0xff, 0x00, 0x00, 0xe5, 0xff, 0xfd, 0xff, 0xe5, 0xff, 0xf2, 0xff, 0xe4, 0xff, 0xe1, 0xff, 0xe7, 0xff, 0xd2, 0xff, 0xf0, 0xff, 0xc9, 0xff, 0xf8, 0xff, 0xc1, 0xff, 0xfb, 0xff, 0xb7, 0xff, 0xfb, 0xff, 0xac, 0xff, 0xf8, 0xff, 0xa0, 0xff, 0xf8, 0xff, 0x97, 0xff, 0xfc, 0xff, 0x93, 0xff, 0x05, 0x00, 0x93, 0xff, 0x10, 0x00, 0x94, 0xff, 0x1d, 0x00, 0x93, 0xff, 0x2d, 0x00, 0x94, 0xff, 0x3b, 0x00, 0x94, 0xff, 0x44, 0x00, 0x95, 0xff, 0x42, 0x00, 0x8f, 0xff, 0x3c, 0x00, 0x8a, 0xff, 0x3e, 0x00, 0x90, 0xff, 0x4d, 0x00, 0xa3, 0xff, 0x64, 0x00, 0xbc, 0xff, 0x7b, 0x00, 0xd2, 0xff, 0x8d, 0x00, 0xe2, 0xff, 0x97, 0x00, 0xe9, 0xff, 0x9a, 0x00, 0xec, 0xff, 0x96, 0x00, 0xef, 0xff, 0x8b, 0x00, 0xf4, 0xff, 0x78, 0x00, 0xf8, 0xff, 0x63, 0x00, 0xfa, 0xff, 0x52, 0x00, 0xfc, 0xff, 0x46, 0x00, 0xfd, 0xff, 0x3e, 0x00, 0xfd, 0xff, 0x34, 0x00, 0xfa, 0xff, 0x26, 0x00, 0xf6, 0xff, 0x14, 0x00, 0xf2, 0xff, 0x03, 0x00, 0xf2, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf3, 0xff, 0x02, 0x00, 0xf0, 0xff, 0x0a, 0x00, 0xe8, 0xff, 0x0a, 0x00, 0xde, 0xff, 0x06, 0x00, 0xd8, 0xff, 0x05, 0x00, 0xd8, 0xff, 0x0a, 0x00, 0xe1, 0xff, 0x16, 0x00, 0xec, 0xff, 0x23, 0x00, 0xf7, 0xff, 0x2b, 0x00, 0xfa, 0xff, 0x28, 0x00, 0xf1, 0xff, 0x19, 0x00, 0xe4, 0xff, 0x08, 0x00, 0xdb, 0xff, 0xfd, 0xff, 0xd7, 0xff, 0xfa, 0xff, 0xd3, 0xff, 0xf6, 0xff, 0xcc, 0xff, 0xee, 0xff, 0xc0, 0xff, 0xe2, 0xff, 0xb0, 0xff, 0xd1, 0xff, 0xa2, 0xff, 0xc3, 0xff, 0x96, 0xff, 0xb9, 0xff, 0x8a, 0xff, 0xb1, 0xff, 0x7e, 0xff, 0xaa, 0xff, 0x71, 0xff, 0xa2, 0xff, 0x61, 0xff, 0x97, 0xff, 0x51, 0xff, 0x8a, 0xff, 0x47, 0xff, 0x84, 0xff, 0x41, 0xff, 0x85, 0xff, 0x3b, 0xff, 0x89, 0xff, 0x38, 0xff, 0x90, 0xff, 0x3b, 0xff, 0x9a, 0xff, 0x40, 0xff, 0xa4, 0xff, 0x42, 0xff, 0xaa, 0xff, 0x3f, 0xff, 0xa8, 0xff, 0x33, 0xff, 0x9f, 0xff, 0x25, 0xff, 0x96, 0xff, 0x1e, 0xff, 0x95, 0xff, 0x23, 0xff, 0x9e, 0xff, 0x30, 0xff, 0xaa, 0xff, 0x41, 0xff, 0xb4, 0xff, 0x5a, 0xff, 0xbf, 0xff, 0x75, 0xff, 0xc8, 0xff, 0x8c, 0xff, 0xcc, 0xff, 0x9a, 0xff, 0xc9, 0xff, 0xa2, 0xff, 0xc5, 0xff, 0xa9, 0xff, 0xc5, 0xff, 0xb7, 0xff, 0xce, 0xff, 0xcc, 0xff, 0xdc, 0xff, 0xe2, 0xff, 0xe7, 0xff, 0xf6, 0xff, 0xeb, 0xff, 0x06, 0x00, 0xea, 0xff, 0x13, 0x00, 0xea, 0xff, 0x1d, 0x00, 0xee, 0xff, 0x21, 0x00, 0xf0, 0xff, 0x22, 0x00, 0xf0, 0xff, 0x22, 0x00, 0xf1, 0xff, 0x1f, 0x00, 0xf1, 0xff, 0x16, 0x00, 0xee, 0xff, 0x05, 0x00, 0xe4, 0xff, 0xf4, 0xff, 0xdb, 0xff, 0xeb, 0xff, 0xd8, 0xff, 0xef, 0xff, 0xe0, 0xff, 0xf9, 0xff, 0xee, 0xff, 0x00, 0x00, 0xf9, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xe6, 0xff, 0xfa, 0xff, 0xdd, 0xff, 0xfa, 0xff, 0xd9, 0xff, 0xff, 0xff, 0xde, 0xff, 0x0b, 0x00, 0xeb, 0xff, 0x1f, 0x00, 0xfa, 0xff, 0x33, 0x00, 0x09, 0x00, 0x45, 0x00, 0x17, 0x00, 0x53, 0x00, 0x24, 0x00, 0x5f, 0x00, 0x34, 0x00, 0x70, 0x00, 0x48, 0x00, 0x86, 0x00, 0x5c, 0x00, 0x9f, 0x00, 0x6d, 0x00, 0xb2, 0x00, 0x79, 0x00, 0xbf, 0x00, 0x84, 0x00, 0xc8, 0x00, 0x8a, 0x00, 0xc9, 0x00, 0x8c, 0x00, 0xc5, 0x00, 0x8d, 0x00, 0xbf, 0x00, 0x8b, 0x00, 0xb9, 0x00, 0x84, 0x00, 0xad, 0x00, 0x74, 0x00, 0x98, 0x00, 0x64, 0x00, 0x82, 0x00, 0x52, 0x00, 0x6b, 0x00, 0x3c, 0x00, 0x52, 0x00, 0x25, 0x00, 0x3b, 0x00, 0x12, 0x00, 0x2a, 0x00, 0x04, 0x00, 0x1c, 0x00, 0xfa, 0xff, 0x0e, 0x00, 0xf2, 0xff, 0xff, 0xff, 0xe6, 0xff, 0xed, 0xff, 0xd3, 0xff, 0xd8, 0xff, 0xb9, 0xff, 0xc0, 0xff, 0xa1, 0xff, 0xb0, 0xff, 0x90, 0xff, 0xaa, 0xff, 0x83, 0xff, 0xa9, 0xff, 0x79, 0xff, 0xa8, 0xff, 0x78, 0xff, 0xab, 0xff, 0x7f, 0xff, 0xb3, 0xff, 0x88, 0xff, 0xba, 0xff, 0x91, 0xff, 0xc0, 0xff, 0x9b, 0xff, 0xc8, 0xff, 0xa6, 0xff, 0xd3, 0xff, 0xb5, 0xff, 0xe3, 0xff, 0xc7, 0xff, 0xf7, 0xff, 0xd5, 0xff, 0x07, 0x00, 0xda, 0xff, 0x0d, 0x00, 0xdc, 0xff, 0x0d, 0x00, 0xe3, 0xff, 0x0d, 0x00, 0xec, 0xff, 0x0e, 0x00, 0xef, 0xff, 0x09, 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf6, 0xff, 0xff, 0xff, 0x02, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0xf5, 0xff, 0x0e, 0x00, 0xf6, 0xff, 0x14, 0x00, 0xff, 0xff, 0x1d, 0x00, 0x07, 0x00, 0x24, 0x00, 0x08, 0x00, 0x26, 0x00, 0x06, 0x00, 0x2b, 0x00, 0x02, 0x00, 0x36, 0x00, 0xfd, 0xff, 0x46, 0x00, 0xf7, 0xff, 0x56, 0x00, 0xf0, 0xff, 0x62, 0x00, 0xee, 0xff, 0x6c, 0x00, 0xf6, 0xff, 0x7b, 0x00, 0x08, 0x00, 0x8f, 0x00, 0x1b, 0x00, 0xa3, 0x00, 0x29, 0x00, 0xb1, 0x00, 0x33, 0x00, 0xbe, 0x00, 0x3b, 0x00, 0xca, 0x00, 0x3d, 0x00, 0xd1, 0x00, 0x3b, 0x00, 0xd0, 0x00, 0x3f, 0x00, 0xcc, 0x00, 0x4a, 0x00, 0xc9, 0x00, 0x56, 0x00, 0xc5, 0x00, 0x5f, 0x00, 0xbe, 0x00, 0x66, 0x00, 0xb6, 0x00, 0x6f, 0x00, 0xad, 0x00, 0x78, 0x00, 0xa0, 0x00, 0x7f, 0x00, 0x8e, 0x00, 0x87, 0x00, 0x7e, 0x00, 0x8b, 0x00, 0x6c, 0x00, 0x88, 0x00, 0x58, 0x00, 0x83, 0x00, 0x47, 0x00, 0x84, 0x00, 0x40, 0x00, 0x87, 0x00, 0x3d, 0x00, 0x89, 0x00, 0x36, 0x00, 0x8d, 0x00, 0x2e, 0x00, 0x92, 0x00, 0x26, 0x00, 0x95, 0x00, 0x1f, 0x00, 0x96, 0x00, 0x19, 0x00, 0x96, 0x00, 0x16, 0x00, 0x95, 0x00, 0x15, 0x00, 0x92, 0x00, 0x15, 0x00, 0x92, 0x00, 0x17, 0x00, 0x92, 0x00, 0x18, 0x00, 0x8d, 0x00, 0x11, 0x00, 0x84, 0x00, 0x04, 0x00, 0x7b, 0x00, 0xf7, 0xff, 0x74, 0x00, 0xee, 0xff, 0x6e, 0x00, 0xe6, 0xff, 0x67, 0x00, 0xe0, 0xff, 0x60, 0x00, 0xd9, 0xff, 0x52, 0x00, 0xcc, 0xff, 0x3f, 0x00, 0xbc, 0xff, 0x29, 0x00, 0xaa, 0xff, 0x15, 0x00, 0x99, 0xff, 0x02, 0x00, 0x86, 0xff, 0xf3, 0xff, 0x75, 0xff, 0xeb, 0xff, 0x6a, 0xff, 0xe8, 0xff, 0x64, 0xff, 0xe5, 0xff, 0x63, 0xff, 0xe2, 0xff, 0x66, 0xff, 0xdd, 0xff, 0x6a, 0xff, 0xd8, 0xff, 0x6f, 0xff, 0xd2, 0xff, 0x70, 0xff, 0xcf, 0xff, 0x6f, 0xff, 0xd3, 0xff, 0x72, 0xff, 0xda, 0xff, 0x76, 0xff, 0xe0, 0xff, 0x7b, 0xff, 0xe1, 0xff, 0x83, 0xff, 0xdc, 0xff, 0x8a, 0xff, 0xd5, 0xff, 0x92, 0xff, 0xd3, 0xff, 0x9d, 0xff, 0xd4, 0xff, 0xa7, 0xff, 0xd3, 0xff, 0xad, 0xff, 0xd3, 0xff, 0xb1, 0xff, 0xd3, 0xff, 0xb7, 0xff, 0xd2, 0xff, 0xbc, 0xff, 0xce, 0xff, 0xbf, 0xff, 0xcc, 0xff, 0xc5, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xd1, 0xff, 0xd5, 0xff, 0xd7, 0xff, 0xdf, 0xff, 0xe1, 0xff, 0xeb, 0xff, 0xef, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0x02, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x12, 0x00, 0x15, 0x00, 0x21, 0x00, 0x21, 0x00, 0x30, 0x00, 0x2b, 0x00, 0x40, 0x00, 0x32, 0x00, 0x4e, 0x00, 0x37, 0x00, 0x58, 0x00, 0x3a, 0x00, 0x5e, 0x00, 0x3d, 0x00, 0x63, 0x00, 0x40, 0x00, 0x67, 0x00, 0x44, 0x00, 0x68, 0x00, 0x42, 0x00, 0x63, 0x00, 0x3a, 0x00, 0x5d, 0x00, 0x31, 0x00, 0x57, 0x00, 0x27, 0x00, 0x54, 0x00, 0x20, 0x00, 0x51, 0x00, 0x19, 0x00, 0x4d, 0x00, 0x13, 0x00, 0x45, 0x00, 0x0b, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x31, 0x00, 0xf7, 0xff, 0x2a, 0x00, 0xec, 0xff, 0x24, 0x00, 0xe1, 0xff, 0x1c, 0x00, 0xd4, 0xff, 0x18, 0x00, 0xc9, 0xff, 0x17, 0x00, 0xbf, 0xff, 0x19, 0x00, 0xb5, 0xff, 0x1c, 0x00, 0xa9, 0xff, 0x1e, 0x00, 0x9e, 0xff, 0x20, 0x00, 0x92, 0xff, 0x1e, 0x00, 0x85, 0xff, 0x1d, 0x00, 0x7d, 0xff, 0x21, 0x00, 0x7b, 0xff, 0x28, 0x00, 0x7c, 0xff, 0x31, 0x00, 0x7c, 0xff, 0x39, 0x00, 0x78, 0xff, 0x40, 0x00, 0x72, 0xff, 0x46, 0x00, 0x70, 0xff, 0x4d, 0x00, 0x74, 0xff, 0x54, 0x00, 0x7d, 0xff, 0x5b, 0x00, 0x86, 0xff, 0x5c, 0x00, 0x8c, 0xff, 0x5a, 0x00, 0x90, 0xff, 0x53, 0x00, 0x92, 0xff, 0x48, 0x00, 0x95, 0xff, 0x3b, 0x00, 0x97, 0xff, 0x2e, 0x00, 0x9d, 0xff, 0x21, 0x00, 0xa7, 0xff, 0x14, 0x00, 0xb6, 0xff, 0x04, 0x00, 0xc6, 0xff, 0xf2, 0xff, 0xd4, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xd2, 0xff, 0xec, 0xff, 0xc2, 0xff, 0xf5, 0xff, 0xb3, 0xff, 0xff, 0xff, 0xa4, 0xff, 0x0c, 0x00, 0x8f, 0xff, 0x16, 0x00, 0x76, 0xff, 0x1a, 0x00, 0x5b, 0xff, 0x18, 0x00, 0x40, 0xff, 0x14, 0x00, 0x29, 0xff, 0x11, 0x00, 0x18, 0xff, 0x17, 0x00, 0x0d, 0xff, 0x22, 0x00, 0x03, 0xff, 0x2e, 0x00, 0xfa, 0xfe, 0x35, 0x00, 0xf1, 0xfe, 0x39, 0x00, 0xea, 0xfe, 0x3c, 0x00, 0xe0, 0xfe, 0x3c, 0x00, 0xda, 0xfe, 0x3c, 0x00, 0xdc, 0xfe, 0x40, 0x00, 0xe7, 0xfe, 0x4a, 0x00, 0xf6, 0xfe, 0x59, 0x00, 0x04, 0xff, 0x67, 0x00, 0x0e, 0xff, 0x72, 0x00, 0x13, 0xff, 0x76, 0x00, 0x1a, 0xff, 0x79, 0x00, 0x25, 0xff, 0x80, 0x00, 0x34, 0xff, 0x8a, 0x00, 0x44, 0xff, 0x91, 0x00, 0x56, 0xff, 0x97, 0x00, 0x6b, 0xff, 0x9c, 0x00, 0x7f, 0xff, 0x9f, 0x00, 0x8f, 0xff, 0xa2, 0x00, 0x9a, 0xff, 0xa4, 0x00, 0xa5, 0xff, 0xa7, 0x00, 0xaf, 0xff, 0xa6, 0x00, 0xba, 0xff, 0xa3, 0x00, 0xc8, 0xff, 0xa0, 0x00, 0xd8, 0xff, 0x9a, 0x00, 0xe5, 0xff, 0x90, 0x00, 0xf5, 0xff, 0x89, 0x00, 0x09, 0x00, 0x88, 0x00, 0x1f, 0x00, 0x8d, 0x00, 0x2f, 0x00, 0x8f, 0x00, 0x38, 0x00, 0x88, 0x00, 0x40, 0x00, 0x7c, 0x00, 0x46, 0x00, 0x69, 0x00, 0x4a, 0x00, 0x50, 0x00, 0x50, 0x00, 0x37, 0x00, 0x5c, 0x00, 0x23, 0x00, 0x6b, 0x00, 0x16, 0x00, 0x7a, 0x00, 0x0d, 0x00, 0x86, 0x00, 0x04, 0x00, 0x8f, 0x00, 0xf9, 0xff, 0x97, 0x00, 0xee, 0xff, 0x9f, 0x00, 0xe1, 0xff, 0xa5, 0x00, 0xd1, 0xff, 0xa4, 0x00, 0xb9, 0xff, 0xa0, 0x00, 0x9d, 0xff, 0x9e, 0x00, 0x84, 0xff, 0x9f, 0x00, 0x73, 0xff, 0xa2, 0x00, 0x69, 0xff, 0x9e, 0x00, 0x5e, 0xff, 0x92, 0x00, 0x4f, 0xff, 0x81, 0x00, 0x3e, 0xff, 0x75, 0x00, 0x30, 0xff, 0x73, 0x00, 0x2a, 0xff, 0x7b, 0x00, 0x2c, 0xff, 0x82, 0x00, 0x2d, 0xff, 0x82, 0x00, 0x2a, 0xff, 0x80, 0x00, 0x29, 0xff, 0x81, 0x00, 0x32, 0xff, 0x83, 0x00, 0x41, 0xff, 0x81, 0x00, 0x4e, 0xff, 0x7c, 0x00, 0x59, 0xff, 0x79, 0x00, 0x62, 0xff, 0x78, 0x00, 0x6c, 0xff, 0x76, 0x00, 0x76, 0xff, 0x72, 0x00, 0x7f, 0xff, 0x6b, 0x00, 0x88, 0xff, 0x5f, 0x00, 0x92, 0xff, 0x4f, 0x00, 0x9a, 0xff, 0x3a, 0x00, 0x9d, 0xff, 0x1f, 0x00, 0x9a, 0xff, 0xfe, 0xff, 0x8f, 0xff, 0xd8, 0xff, 0x80, 0xff, 0xb2, 0xff, 0x71, 0xff, 0x90, 0xff, 0x68, 0xff, 0x78, 0xff, 0x6b, 0xff, 0x69, 0xff, 0x78, 0xff, 0x61, 0xff, 0x8c, 0xff, 0x67, 0xff, 0xab, 0xff, 0x79, 0xff, 0xd5, 0xff, 0x8a, 0xff, 0xfb, 0xff, 0x8d, 0xff, 0x13, 0x00, 0x86, 0xff, 0x20, 0x00, 0x83, 0xff, 0x30, 0x00, 0x88, 0xff, 0x46, 0x00, 0x93, 0xff, 0x60, 0x00, 0x9f, 0xff, 0x79, 0x00, 0xa8, 0xff, 0x8c, 0x00, 0xb0, 0xff, 0x9b, 0x00, 0xb8, 0xff, 0xa7, 0x00, 0xbe, 0xff, 0xb1, 0x00, 0xb9, 0xff, 0xad, 0x00, 0xaa, 0xff, 0xa0, 0x00, 0x9d, 0xff, 0x92, 0x00, 0x98, 0xff, 0x88, 0x00, 0x97, 0xff, 0x7d, 0x00, 0x91, 0xff, 0x69, 0x00, 0x86, 0xff, 0x4e, 0x00, 0x7f, 0xff, 0x37, 0x00, 0x80, 0xff, 0x29, 0x00, 0x8b, 0xff, 0x25, 0x00, 0x9d, 0xff, 0x27, 0x00, 0xb3, 0xff, 0x2d, 0x00, 0xca, 0xff, 0x34, 0x00, 0xe7, 0xff, 0x43, 0x00, 0x0b, 0x00, 0x59, 0x00, 0x2f, 0x00, 0x70, 0x00, 0x4d, 0x00, 0x81, 0x00, 0x68, 0x00, 0x90, 0x00, 0x80, 0x00, 0x9b, 0x00, 0x90, 0x00, 0x9e, 0x00, 0x95, 0x00, 0x97, 0x00, 0x93, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x7e, 0x00, 0x81, 0x00, 0x71, 0x00, 0x72, 0x00, 0x61, 0x00, 0x61, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x2d, 0x00, 0x35, 0x00, 0x0a, 0x00, 0x20, 0x00, 0xea, 0xff, 0x10, 0x00, 0xd0, 0xff, 0x05, 0x00, 0xbf, 0xff, 0x03, 0x00, 0xb8, 0xff, 0x07, 0x00, 0xb8, 0xff, 0x13, 0x00, 0xbe, 0xff, 0x22, 0x00, 0xc7, 0xff, 0x37, 0x00, 0xd4, 0xff, 0x4d, 0x00, 0xe4, 0xff, 0x5e, 0x00, 0xf0, 0xff, 0x6a, 0x00, 0xfb, 0xff, 0x6e, 0x00, 0x01, 0x00, 0x71, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08, 0x00, 0x69, 0x00, 0x01, 0x00, 0x59, 0x00, 0xf1, 0xff, 0x42, 0x00, 0xdc, 0xff, 0x25, 0x00, 0xc5, 0xff, 0x01, 0x00, 0xad, 0xff, 0xda, 0xff, 0x97, 0xff, 0xb3, 0xff, 0x86, 0xff, 0x90, 0xff, 0x7a, 0xff, 0x71, 0xff, 0x72, 0xff, 0x55, 0xff, 0x6b, 0xff, 0x3e, 0xff, 0x67, 0xff, 0x2b, 0xff, 0x6a, 0xff, 0x20, 0xff, 0x77, 0xff, 0x1c, 0xff, 0x8f, 0xff, 0x1d, 0xff, 0xae, 0xff, 0x22, 0xff, 0xd0, 0xff, 0x29, 0xff, 0xf0, 0xff, 0x32, 0xff, 0x0f, 0x00, 0x3d, 0xff, 0x2f, 0x00, 0x4b, 0xff, 0x50, 0x00, 0x57, 0xff, 0x6c, 0x00, 0x5f, 0xff, 0x81, 0x00, 0x65, 0xff, 0x91, 0x00, 0x68, 0xff, 0x9f, 0x00, 0x66, 0xff, 0xa6, 0x00, 0x61, 0xff, 0xa9, 0x00, 0x5a, 0xff, 0xa5, 0x00, 0x51, 0xff, 0x9a, 0x00, 0x47, 0xff, 0x8b, 0x00, 0x41, 0xff, 0x7f, 0x00, 0x42, 0xff, 0x79, 0x00, 0x4a, 0xff, 0x77, 0x00, 0x57, 0xff, 0x77, 0x00, 0x6c, 0xff, 0x7e, 0x00, 0x8a, 0xff, 0x90, 0x00, 0xaa, 0xff, 0xa7, 0x00, 0xca, 0xff, 0xc0, 0x00, 0xe8, 0xff, 0xd4, 0x00, 0x01, 0x00, 0xe0, 0x00, 0x19, 0x00, 0xe7, 0x00, 0x3d, 0x00, 0xfb, 0x00, 0x73, 0x00, 0x1f, 0x01, 0xac, 0x00, 0x47, 0x01, 0xda, 0x00, 0x64, 0x01, 0xf5, 0x00, 0x6d, 0x01, 0xfb, 0x00, 0x5f, 0x01, 0xee, 0x00, 0x38, 0x01, 0xdd, 0x00, 0x09, 0x01, 0xd1, 0x00, 0xdb, 0x00, 0xc6, 0x00, 0xac, 0x00, 0xb7, 0x00, 0x7c, 0x00, 0xac, 0x00, 0x52, 0x00, 0xab, 0x00, 0x31, 0x00, 0xb4, 0x00, 0x1b, 0x00, 0xc3, 0x00, 0x07, 0x00, 0xca, 0x00, 0xe9, 0xff, 0xbe, 0x00, 0xb8, 0xff, 0xac, 0x00, 0x81, 0xff, 0xaf, 0x00, 0x64, 0xff, 0xd4, 0x00, 0x6c, 0xff, 0x07, 0x01, 0x87, 0xff, 0x2e, 0x01, 0x99, 0xff, 0x3d, 0x01, 0x93, 0xff, 0x3c, 0x01, 0x7f, 0xff, 0x3b, 0x01, 0x70, 0xff, 0x44, 0x01, 0x70, 0xff, 0x51, 0x01, 0x7b, 0xff, 0x54, 0x01, 0x83, 0xff, 0x45, 0x01, 0x7d, 0xff, 0x27, 0x01, 0x6a, 0xff, 0x01, 0x01, 0x4f, 0xff, 0xdb, 0x00, 0x34, 0xff, 0xb4, 0x00, 0x1c, 0xff, 0x8c, 0x00, 0x08, 0xff, 0x65, 0x00, 0xfb, 0xfe, 0x39, 0x00, 0xed, 0xfe, 0x0b, 0x00, 0xdd, 0xfe, 0xe5, 0xff, 0xd2, 0xfe, 0xcf, 0xff, 0xd1, 0xfe, 0xc9, 0xff, 0xda, 0xfe, 0xc7, 0xff, 0xe6, 0xfe, 0xc5, 0xff, 0xf3, 0xfe, 0xc6, 0xff, 0x07, 0xff, 0xcb, 0xff, 0x26, 0xff, 0xd7, 0xff, 0x51, 0xff, 0xe6, 0xff, 0x7c, 0xff, 0xf1, 0xff, 0xa0, 0xff, 0xf9, 0xff, 0xba, 0xff, 0xf8, 0xff, 0xca, 0xff, 0xf1, 0xff, 0xd2, 0xff, 0xe7, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xe9, 0xff, 0xc9, 0xff, 0xf2, 0xff, 0xad, 0xff, 0xf0, 0xff, 0x84, 0xff, 0xe0, 0xff, 0x57, 0xff, 0xc8, 0xff, 0x2b, 0xff, 0xae, 0xff, 0x06, 0xff, 0x9a, 0xff, 0xef, 0xfe, 0x94, 0xff, 0xde, 0xfe, 0x97, 0xff, 0xd4, 0xfe, 0xa2, 0xff, 0xd3, 0xfe, 0xb7, 0xff, 0xdd, 0xfe, 0xd5, 0xff, 0xef, 0xfe, 0xf8, 0xff, 0x09, 0xff, 0x1e, 0x00, 0x2e, 0xff, 0x4b, 0x00, 0x59, 0xff, 0x7e, 0x00, 0x82, 0xff, 0xae, 0x00, 0xa3, 0xff, 0xd4, 0x00, 0xbb, 0xff, 0xee, 0x00, 0xcc, 0xff, 0xfd, 0x00, 0xd7, 0xff, 0x03, 0x01, 0xdc, 0xff, 0x01, 0x01, 0xda, 0xff, 0xf7, 0x00, 0xd4, 0xff, 0xe9, 0x00, 0xca, 0xff, 0xd4, 0x00, 0xbc, 0xff, 0xb8, 0x00, 0xae, 0xff, 0x97, 0x00, 0xa0, 0xff, 0x71, 0x00, 0x97, 0xff, 0x4b, 0x00, 0x95, 0xff, 0x2a, 0x00, 0xa2, 0xff, 0x18, 0x00, 0xbc, 0xff, 0x16, 0x00, 0xd9, 0xff, 0x18, 0x00, 0xf7, 0xff, 0x1a, 0x00, 0x1a, 0x00, 0x1d, 0x00, 0x42, 0x00, 0x20, 0x00, 0x6b, 0x00, 0x24, 0x00, 0x97, 0x00, 0x2b, 0x00, 0xc0, 0x00, 0x35, 0x00, 0xdd, 0x00, 0x3a, 0x00, 0xec, 0x00, 0x34, 0x00, 0xf4, 0x00, 0x2c, 0x00, 0xf6, 0x00, 0x1f, 0x00, 0xec, 0x00, 0x07, 0x00, 0xdc, 0x00, 0xec, 0xff, 0xc9, 0x00, 0xcf, 0xff, 0xaf, 0x00, 0xb0, 0xff, 0x8f, 0x00, 0x8f, 0xff, 0x71, 0x00, 0x74, 0xff, 0x55, 0x00, 0x5d, 0xff, 0x37, 0x00, 0x46, 0xff, 0x20, 0x00, 0x32, 0xff, 0x17, 0x00, 0x2b, 0xff, 0x13, 0x00, 0x2a, 0xff, 0x0e, 0x00, 0x2c, 0xff, 0x0e, 0x00, 0x3a, 0xff, 0x10, 0x00, 0x4d, 0xff, 0x0e, 0x00, 0x5c, 0xff, 0x0d, 0x00, 0x68, 0xff, 0x16, 0x00, 0x7b, 0xff, 0x1c, 0x00, 0x8b, 0xff, 0x18, 0x00, 0x92, 0xff, 0x16, 0x00, 0x9c, 0xff, 0x11, 0x00, 0xa4, 0xff, 0xfd, 0xff, 0x9a, 0xff, 0xdf, 0xff, 0x86, 0xff, 0xce, 0xff, 0x7c, 0xff, 0xc5, 0xff, 0x7c, 0xff, 0xb6, 0xff, 0x75, 0xff, 0xa1, 0xff, 0x69, 0xff, 0x8e, 0xff, 0x5f, 0xff, 0x80, 0xff, 0x5b, 0xff, 0x7d, 0xff, 0x65, 0xff, 0x89, 0xff, 0x80, 0xff, 0x92, 0xff, 0x99, 0xff, 0x90, 0xff, 0xa5, 0xff, 0x96, 0xff, 0xb8, 0xff, 0xac, 0xff, 0xdc, 0xff, 0xbe, 0xff, 0xfc, 0xff, 0xc7, 0xff, 0x15, 0x00, 0xce, 0xff, 0x2b, 0x00, 0xcb, 0xff, 0x36, 0x00, 0xbd, 0xff, 0x33, 0x00, 0xaf, 0xff, 0x31, 0x00, 0xa4, 0xff, 0x33, 0x00, 0x92, 0xff, 0x31, 0x00, 0x89, 0xff, 0x3a, 0x00, 0x97, 0xff, 0x5a, 0x00, 0x98, 0xff, 0x6b, 0x00, 0x7e, 0xff, 0x59, 0x00, 0x77, 0xff, 0x55, 0x00, 0xa0, 0xff, 0x7a, 0x00, 0xc8, 0xff, 0x9c, 0x00, 0xca, 0xff, 0x96, 0x00, 0xc4, 0xff, 0x88, 0x00, 0xcb, 0xff, 0x87, 0x00, 0xdf, 0xff, 0x8e, 0x00, 0x03, 0x00, 0xa1, 0x00, 0x2b, 0x00, 0xb3, 0x00, 0x35, 0x00, 0xa2, 0x00, 0x23, 0x00, 0x78, 0x00, 0x28, 0x00, 0x64, 0x00, 0x45, 0x00, 0x6b, 0x00, 0x4d, 0x00, 0x60, 0x00, 0x44, 0x00, 0x45, 0x00, 0x48, 0x00, 0x36, 0x00, 0x52, 0x00, 0x2d, 0x00, 0x55, 0x00, 0x1d, 0x00, 0x61, 0x00, 0x19, 0x00, 0x72, 0x00, 0x21, 0x00, 0x73, 0x00, 0x1e, 0x00, 0x72, 0x00, 0x1c, 0x00, 0x84, 0x00, 0x2e, 0x00, 0x9a, 0x00, 0x40, 0x00, 0xa4, 0x00, 0x42, 0x00, 0xb2, 0x00, 0x46, 0x00, 0xc5, 0x00, 0x53, 0x00, 0xcb, 0x00, 0x56, 0x00, 0xc3, 0x00, 0x4f, 0x00, 0xbc, 0x00, 0x4a, 0x00, 0xad, 0x00, 0x3a, 0x00, 0x93, 0x00, 0x1b, 0x00, 0x7f, 0x00, 0xfc, 0xff, 0x6d, 0x00, 0xdd, 0xff, 0x4b, 0x00, 0xae, 0xff, 0x2a, 0x00, 0x83, 0xff, 0x1c, 0x00, 0x6f, 0xff, 0x0f, 0x00, 0x5c, 0xff, 0xf4, 0xff, 0x3d, 0xff, 0xe4, 0xff, 0x2a, 0xff, 0xe9, 0xff, 0x2f, 0xff, 0xec, 0xff, 0x35, 0xff, 0xe5, 0xff, 0x32, 0xff, 0xe1, 0xff, 0x35, 0xff, 0xe1, 0xff, 0x3e, 0xff, 0xde, 0xff, 0x47, 0xff, 0xdd, 0xff, 0x53, 0xff, 0xdf, 0xff, 0x63, 0xff, 0xd8, 0xff, 0x6b, 0xff, 0xcc, 0xff, 0x70, 0xff, 0xc3, 0xff, 0x78, 0xff, 0xb5, 0xff, 0x7d, 0xff, 0x9d, 0xff, 0x7b, 0xff, 0x8a, 0xff, 0x7d, 0xff, 0x7b, 0xff, 0x81, 0xff, 0x6c, 0xff, 0x81, 0xff, 0x63, 0xff, 0x86, 0xff, 0x61, 0xff, 0x93, 0xff, 0x5c, 0xff, 0xa1, 0xff, 0x54, 0xff, 0xaf, 0xff, 0x5b, 0xff, 0xce, 0xff, 0x6e, 0xff, 0xf9, 0xff, 0x7f, 0xff, 0x1e, 0x00, 0x90, 0xff, 0x40, 0x00, 0xa8, 0xff, 0x65, 0x00, 0xba, 0xff, 0x83, 0x00, 0xc4, 0xff, 0x99, 0x00, 0xd4, 0xff, 0xb5, 0x00, 0xe6, 0xff, 0xd3, 0x00, 0xe5, 0xff, 0xe0, 0x00, 0xd5, 0xff, 0xde, 0x00, 0xce, 0xff, 0xe1, 0x00, 0xcf, 0xff, 0xe9, 0x00, 0xc9, 0xff, 0xe9, 0x00, 0xb8, 0xff, 0xdb, 0x00, 0xa1, 0xff, 0xc5, 0x00, 0x8f, 0xff, 0xb6, 0x00, 0x8e, 0xff, 0xba, 0x00, 0x9c, 0xff, 0xcd, 0x00, 0xa8, 0xff, 0xde, 0x00, 0xab, 0xff, 0xe2, 0x00, 0xae, 0xff, 0xe5, 0x00, 0xbb, 0xff, 0xef, 0x00, 0xcf, 0xff, 0xff, 0x00, 0xe8, 0xff, 0x12, 0x01, 0x02, 0x00, 0x23, 0x01, 0x16, 0x00, 0x2a, 0x01, 0x25, 0x00, 0x2c, 0x01, 0x37, 0x00, 0x30, 0x01, 0x47, 0x00, 0x34, 0x01, 0x4f, 0x00, 0x2d, 0x01, 0x54, 0x00, 0x22, 0x01, 0x62, 0x00, 0x1c, 0x01, 0x74, 0x00, 0x19, 0x01, 0x80, 0x00, 0x0e, 0x01, 0x82, 0x00, 0xfa, 0x00, 0x7f, 0x00, 0xde, 0x00, 0x77, 0x00, 0xbb, 0x00, 0x75, 0x00, 0x9b, 0x00, 0x7a, 0x00, 0x84, 0x00, 0x7f, 0x00, 0x70, 0x00, 0x7c, 0x00, 0x5c, 0x00, 0x77, 0x00, 0x49, 0x00, 0x76, 0x00, 0x3c, 0x00, 0x73, 0x00, 0x2c, 0x00, 0x6b, 0x00, 0x17, 0x00, 0x64, 0x00, 0x02, 0x00, 0x60, 0x00, 0xf2, 0xff, 0x58, 0x00, 0xdf, 0xff, 0x4d, 0x00, 0xc6, 0xff, 0x42, 0x00, 0xae, 0xff, 0x37, 0x00, 0x96, 0xff, 0x29, 0x00, 0x7a, 0xff, 0x14, 0x00, 0x5a, 0xff, 0xff, 0xff, 0x3a, 0xff, 0xef, 0xff, 0x1e, 0xff, 0xe6, 0xff, 0x07, 0xff, 0xe6, 0xff, 0xfa, 0xfe, 0xec, 0xff, 0xf4, 0xfe, 0xf0, 0xff, 0xf3, 0xfe, 0xef, 0xff, 0xef, 0xfe, 0xe8, 0xff, 0xea, 0xfe, 0xe1, 0xff, 0xe7, 0xfe, 0xdb, 0xff, 0xe9, 0xfe, 0xdb, 0xff, 0xf0, 0xfe, 0xde, 0xff, 0xfa, 0xfe, 0xe2, 0xff, 0x05, 0xff, 0xe5, 0xff, 0x0e, 0xff, 0xe5, 0xff, 0x16, 0xff, 0xe0, 0xff, 0x1c, 0xff, 0xda, 0xff, 0x21, 0xff, 0xd6, 0xff, 0x2a, 0xff, 0xd1, 0xff, 0x33, 0xff, 0xcf, 0xff, 0x40, 0xff, 0xd2, 0xff, 0x54, 0xff, 0xd6, 0xff, 0x6e, 0xff, 0xd7, 0xff, 0x82, 0xff, 0xd0, 0xff, 0x8c, 0xff, 0xca, 0xff, 0x91, 0xff, 0xc8, 0xff, 0x98, 0xff, 0xc7, 0xff, 0xa2, 0xff, 0xc2, 0xff, 0xae, 0xff, 0xb9, 0xff, 0xba, 0xff, 0xaa, 0xff, 0xc3, 0xff, 0x9c, 0xff, 0xca, 0xff, 0x96, 0xff, 0xd5, 0xff, 0x95, 0xff, 0xe1, 0xff, 0x94, 0xff, 0xe9, 0xff, 0x94, 0xff, 0xef, 0xff, 0x98, 0xff, 0xfc, 0xff, 0x9e, 0xff, 0x0e, 0x00, 0xa6, 0xff, 0x25, 0x00, 0xad, 0xff, 0x38, 0x00, 0xb5, 0xff, 0x47, 0x00, 0xc0, 0xff, 0x54, 0x00, 0xd4, 0xff, 0x66, 0x00, 0xf0, 0xff, 0x82, 0x00, 0x08, 0x00, 0x98, 0x00, 0x16, 0x00, 0xa5, 0x00, 0x26, 0x00, 0xb0, 0x00, 0x3b, 0x00, 0xbc, 0x00, 0x4c, 0x00, 0xc4, 0x00, 0x5c, 0x00, 0xca, 0x00, 0x6a, 0x00, 0xce, 0x00, 0x74, 0x00, 0xce, 0x00, 0x7b, 0x00, 0xcb, 0x00, 0x80, 0x00, 0xc6, 0x00, 0x83, 0x00, 0xbc, 0x00, 0x77, 0x00, 0xa1, 0x00, 0x60, 0x00, 0x78, 0x00, 0x4b, 0x00, 0x51, 0x00, 0x46, 0x00, 0x3c, 0x00, 0x53, 0x00, 0x3e, 0x00, 0x6c, 0x00, 0x50, 0x00, 0x82, 0x00, 0x61, 0x00, 0x8c, 0x00, 0x62, 0x00, 0x8a, 0x00, 0x53, 0x00, 0x7d, 0x00, 0x36, 0x00, 0x65, 0x00, 0x10, 0x00, 0x4a, 0x00, 0xe9, 0xff, 0x30, 0x00, 0xcb, 0xff, 0x16, 0x00, 0xb1, 0xff, 0x03, 0x00, 0xa0, 0xff, 0x04, 0x00, 0xa4, 0xff, 0x13, 0x00, 0xb4, 0xff, 0x1a, 0x00, 0xbb, 0xff, 0x0d, 0x00, 0xaf, 0xff, 0xf0, 0xff, 0x98, 0xff, 0xcf, 0xff, 0x80, 0xff, 0xb6, 0xff, 0x72, 0xff, 0xb2, 0xff, 0x78, 0xff, 0xbd, 0xff, 0x88, 0xff, 0xc3, 0xff, 0x8e, 0xff, 0xc1, 0xff, 0x87, 0xff, 0xc0, 0xff, 0x7f, 0xff, 0xc0, 0xff, 0x7b, 0xff, 0xbd, 0xff, 0x76, 0xff, 0xbb, 0xff, 0x75, 0xff, 0xbf, 0xff, 0x7a, 0xff, 0xc1, 0xff, 0x79, 0xff, 0xbb, 0xff, 0x6d, 0xff, 0xb9, 0xff, 0x62, 0xff, 0xbe, 0xff, 0x5e, 0xff, 0xc5, 0xff, 0x61, 0xff, 0xca, 0xff, 0x66, 0xff, 0xcb, 0xff, 0x69, 0xff, 0xc3, 0xff, 0x65, 0xff, 0xb3, 0xff, 0x58, 0xff, 0xa6, 0xff, 0x4c, 0xff, 0x9f, 0xff, 0x48, 0xff, 0xa0, 0xff, 0x4e, 0xff, 0xa8, 0xff, 0x60, 0xff, 0xb3, 0xff, 0x79, 0xff, 0xbf, 0xff, 0x9a, 0xff, 0xd0, 0xff, 0xc1, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xfd, 0xff, 0x15, 0x00, 0x09, 0x00, 0x34, 0x00, 0x0d, 0x00, 0x4c, 0x00, 0x15, 0x00, 0x69, 0x00, 0x1f, 0x00, 0x89, 0x00, 0x24, 0x00, 0xa2, 0x00, 0x22, 0x00, 0xad, 0x00, 0x20, 0x00, 0xb2, 0x00, 0x23, 0x00, 0xb9, 0x00, 0x26, 0x00, 0xbf, 0x00, 0x24, 0x00, 0xc3, 0x00, 0x1e, 0x00, 0xc6, 0x00, 0x14, 0x00, 0xc7, 0x00, 0x0a, 0x00, 0xc7, 0x00, 0x08, 0x00, 0xcb, 0x00, 0x10, 0x00, 0xd3, 0x00, 0x17, 0x00, 0xd6, 0x00, 0x1c, 0x00, 0xd4, 0x00, 0x23, 0x00, 0xd6, 0x00, 0x29, 0x00, 0xda, 0x00, 0x29, 0x00, 0xda, 0x00, 0x29, 0x00, 0xda, 0x00, 0x2d, 0x00, 0xdd, 0x00, 0x2f, 0x00, 0xdb, 0x00, 0x2b, 0x00, 0xcd, 0x00, 0x27, 0x00, 0xbe, 0x00, 0x23, 0x00, 0xae, 0x00, 0x17, 0x00, 0x98, 0x00, 0x08, 0x00, 0x7f, 0x00, 0xfc, 0xff, 0x6b, 0x00, 0xf5, 0xff, 0x57, 0x00, 0xeb, 0xff, 0x3e, 0x00, 0xe4, 0xff, 0x23, 0x00, 0xe1, 0xff, 0x0e, 0x00, 0xe3, 0xff, 0x03, 0x00, 0xe6, 0xff, 0xfd, 0xff, 0xe9, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xfe, 0xff, 0xed, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xf3, 0xff, 0xea, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xdb, 0xff, 0xd6, 0xff, 0xd1, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xbe, 0xff, 0xc1, 0xff, 0xb2, 0xff, 0xb7, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0x98, 0xff, 0xb0, 0xff, 0x91, 0xff, 0xae, 0xff, 0x89, 0xff, 0xa5, 0xff, 0x7b, 0xff, 0x97, 0xff, 0x67, 0xff, 0x8a, 0xff, 0x53, 0xff, 0x80, 0xff, 0x3d, 0xff, 0x78, 0xff, 0x26, 0xff, 0x73, 0xff, 0x10, 0xff, 0x74, 0xff, 0xfd, 0xfe, 0x7c, 0xff, 0xf1, 0xfe, 0x84, 0xff, 0xe8, 0xfe, 0x8a, 0xff, 0xe2, 0xfe, 0x8e, 0xff, 0xe1, 0xfe, 0x95, 0xff, 0xe8, 0xfe, 0xa5, 0xff, 0xf8, 0xfe, 0xba, 0xff, 0x0d, 0xff, 0xd2, 0xff, 0x23, 0xff, 0xe8, 0xff, 0x37, 0xff, 0xf9, 0xff, 0x4b, 0xff, 0x06, 0x00, 0x5d, 0xff, 0x0d, 0x00, 0x6e, 0xff, 0x12, 0x00, 0x7e, 0xff, 0x15, 0x00, 0x8c, 0xff, 0x12, 0x00, 0x92, 0xff, 0x0a, 0x00, 0x92, 0xff, 0x02, 0x00, 0x94, 0xff, 0xff, 0xff, 0x9a, 0xff, 0xfc, 0xff, 0xa2, 0xff, 0xfd, 0xff, 0xae, 0xff, 0x02, 0x00, 0xbc, 0xff, 0x0a, 0x00, 0xcd, 0xff, 0x17, 0x00, 0xe1, 0xff, 0x24, 0x00, 0xf6, 0xff, 0x31, 0x00, 0x0b, 0x00, 0x3f, 0x00, 0x22, 0x00, 0x51, 0x00, 0x3a, 0x00, 0x66, 0x00, 0x53, 0x00, 0x80, 0x00, 0x69, 0x00, 0x9c, 0x00, 0x7d, 0x00, 0xba, 0x00, 0x91, 0x00, 0xd3, 0x00, 0xa1, 0x00, 0xe3, 0x00, 0xab, 0x00, 0xeb, 0x00, 0xb3, 0x00, 0xf2, 0x00, 0xb9, 0x00, 0xf9, 0x00, 0xc0, 0x00, 0x05, 0x01, 0xca, 0x00, 0x13, 0x01, 0xd1, 0x00, 0x1f, 0x01, 0xd2, 0x00, 0x2c, 0x01, 0xd1, 0x00, 0x38, 0x01, 0xcf, 0x00, 0x3f, 0x01, 0xcd, 0x00, 0x3c, 0x01, 0xc3, 0x00, 0x30, 0x01, 0xb2, 0x00, 0x25, 0x01, 0xa0, 0x00, 0x1c, 0x01, 0x91, 0x00, 0x13, 0x01, 0x84, 0x00, 0x0a, 0x01, 0x77, 0x00, 0xfc, 0x00, 0x68, 0x00, 0xeb, 0x00, 0x55, 0x00, 0xd6, 0x00, 0x3f, 0x00, 0xbf, 0x00, 0x2a, 0x00, 0xa8, 0x00, 0x18, 0x00, 0x8f, 0x00, 0x09, 0x00, 0x72, 0x00, 0xfb, 0xff, 0x53, 0x00, 0xec, 0xff, 0x35, 0x00, 0xdc, 0xff, 0x19, 0x00, 0xca, 0xff, 0x00, 0x00, 0xb6, 0xff, 0xe8, 0xff, 0xa0, 0xff, 0xcd, 0xff, 0x8a, 0xff, 0xb1, 0xff, 0x78, 0xff, 0x96, 0xff, 0x6d, 0xff, 0x7d, 0xff, 0x66, 0xff, 0x67, 0xff, 0x63, 0xff, 0x58, 0xff, 0x61, 0xff, 0x53, 0xff, 0x64, 0xff, 0x57, 0xff, 0x67, 0xff, 0x5d, 0xff, 0x6b, 0xff, 0x63, 0xff, 0x6f, 0xff, 0x65, 0xff, 0x75, 0xff, 0x62, 0xff, 0x7d, 0xff, 0x5f, 0xff, 0x87, 0xff, 0x5c, 0xff, 0x8e, 0xff, 0x5b, 0xff, 0x90, 0xff, 0x59, 0xff, 0x8b, 0xff, 0x56, 0xff, 0x85, 0xff, 0x53, 0xff, 0x7f, 0xff, 0x4e, 0xff, 0x7d, 0xff, 0x47, 0xff, 0x7f, 0xff, 0x40, 0xff, 0x81, 0xff, 0x39, 0xff, 0x82, 0xff, 0x33, 0xff, 0x81, 0xff, 0x2f, 0xff, 0x7f, 0xff, 0x31, 0xff, 0x7f, 0xff, 0x3b, 0xff, 0x86, 0xff, 0x4b, 0xff, 0x93, 0xff, 0x5b, 0xff, 0xa0, 0xff, 0x6d, 0xff, 0xb0, 0xff, 0x81, 0xff, 0xc2, 0xff, 0x96, 0xff, 0xd8, 0xff, 0xac, 0xff, 0xf0, 0xff, 0xbf, 0xff, 0x05, 0x00, 0xcf, 0xff, 0x15, 0x00, 0xdf, 0xff, 0x20, 0x00, 0xef, 0xff, 0x2a, 0x00, 0xfd, 0xff, 0x31, 0x00, 0x09, 0x00, 0x38, 0x00, 0x13, 0x00, 0x3d, 0x00, 0x1c, 0x00, 0x44, 0x00, 0x23, 0x00, 0x4d, 0x00, 0x2a, 0x00, 0x59, 0x00, 0x31, 0x00, 0x67, 0x00, 0x36, 0x00, 0x71, 0x00, 0x3e, 0x00, 0x77, 0x00, 0x4b, 0x00, 0x7a, 0x00, 0x5c, 0x00, 0x7f, 0x00, 0x6f, 0x00, 0x88, 0x00, 0x7d, 0x00, 0x92, 0x00, 0x85, 0x00, 0x9b, 0x00, 0x8a, 0x00, 0xa2, 0x00, 0x8d, 0x00, 0xa2, 0x00, 0x90, 0x00, 0x9d, 0x00, 0x93, 0x00, 0x94, 0x00, 0x99, 0x00, 0x8c, 0x00, 0xa0, 0x00, 0x87, 0x00, 0xa6, 0x00, 0x84, 0x00, 0xa4, 0x00, 0x7d, 0x00, 0x9d, 0x00, 0x74, 0x00, 0x96, 0x00, 0x6c, 0x00, 0x8f, 0x00, 0x61, 0x00, 0x8a, 0x00, 0x55, 0x00, 0x83, 0x00, 0x47, 0x00, 0x7c, 0x00, 0x3a, 0x00, 0x71, 0x00, 0x2d, 0x00, 0x63, 0x00, 0x22, 0x00, 0x54, 0x00, 0x1b, 0x00, 0x45, 0x00, 0x15, 0x00, 0x38, 0x00, 0x0f, 0x00, 0x2b, 0x00, 0x07, 0x00, 0x1f, 0x00, 0x01, 0x00, 0x12, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xf9, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xe6, 0xff, 0xfc, 0xff, 0xd8, 0xff, 0xfd, 0xff, 0xcb, 0xff, 0xf9, 0xff, 0xbd, 0xff, 0xf2, 0xff, 0xab, 0xff, 0xe6, 0xff, 0x96, 0xff, 0xdb, 0xff, 0x7e, 0xff, 0xd3, 0xff, 0x64, 0xff, 0xce, 0xff, 0x4a, 0xff, 0xc9, 0xff, 0x35, 0xff, 0xc2, 0xff, 0x25, 0xff, 0xba, 0xff, 0x19, 0xff, 0xb3, 0xff, 0x0e, 0xff, 0xae, 0xff, 0x04, 0xff, 0xab, 0xff, 0xfa, 0xfe, 0xac, 0xff, 0xf2, 0xfe, 0xae, 0xff, 0xf0, 0xfe, 0xb4, 0xff, 0xf4, 0xfe, 0xbc, 0xff, 0xfc, 0xfe, 0xc4, 0xff, 0x06, 0xff, 0xca, 0xff, 0x0e, 0xff, 0xcf, 0xff, 0x14, 0xff, 0xd8, 0xff, 0x18, 0xff, 0xe3, 0xff, 0x1c, 0xff, 0xf0, 0xff, 0x23, 0xff, 0xfc, 0xff, 0x30, 0xff, 0x08, 0x00, 0x43, 0xff, 0x13, 0x00, 0x56, 0xff, 0x1a, 0x00, 0x69, 0xff, 0x23, 0x00, 0x7c, 0xff, 0x2d, 0x00, 0x8e, 0xff, 0x3c, 0x00, 0xa2, 0xff, 0x4c, 0x00, 0xb6, 0xff, 0x5b, 0x00, 0xcd, 0xff, 0x69, 0x00, 0xe4, 0xff, 0x75, 0x00, 0xfc, 0xff, 0x7d, 0x00, 0x11, 0x00, 0x85, 0x00, 0x22, 0x00, 0x8f, 0x00, 0x2e, 0x00, 0x98, 0x00, 0x35, 0x00, 0xa0, 0x00, 0x3a, 0x00, 0xa5, 0x00, 0x40, 0x00, 0xa6, 0x00, 0x4a, 0x00, 0xa6, 0x00, 0x57, 0x00, 0xa4, 0x00, 0x63, 0x00, 0xa0, 0x00, 0x6d, 0x00, 0x9e, 0x00, 0x75, 0x00, 0x9e, 0x00, 0x7c, 0x00, 0xa0, 0x00, 0x82, 0x00, 0xa1, 0x00, 0x89, 0x00, 0x9f, 0x00, 0x90, 0x00, 0x9a, 0x00, 0x97, 0x00, 0x93, 0x00, 0x9e, 0x00, 0x8c, 0x00, 0xa5, 0x00, 0x87, 0x00, 0xac, 0x00, 0x83, 0x00, 0xb1, 0x00, 0x7e, 0x00, 0xb4, 0x00, 0x79, 0x00, 0xb5, 0x00, 0x71, 0x00, 0xb5, 0x00, 0x68, 0x00, 0xb4, 0x00, 0x5e, 0x00, 0xaf, 0x00, 0x54, 0x00, 0xa7, 0x00, 0x4c, 0x00, 0x9a, 0x00, 0x46, 0x00, 0x8f, 0x00, 0x41, 0x00, 0x82, 0x00, 0x3b, 0x00, 0x73, 0x00, 0x2f, 0x00, 0x63, 0x00, 0x22, 0x00, 0x53, 0x00, 0x15, 0x00, 0x43, 0x00, 0x0d, 0x00, 0x32, 0x00, 0x05, 0x00, 0x1f, 0x00, 0xfa, 0xff, 0x0d, 0x00, 0xf1, 0xff, 0xff, 0xff, 0xe8, 0xff, 0xf5, 0xff, 0xe1, 0xff, 0xf2, 0xff, 0xdf, 0xff, 0xf1, 0xff, 0xdd, 0xff, 0xec, 0xff, 0xd8, 0xff, 0xe5, 0xff, 0xd0, 0xff, 0xdc, 0xff, 0xc6, 0xff, 0xd1, 0xff, 0xb9, 0xff, 0xc5, 0xff, 0xa9, 0xff, 0xb9, 0xff, 0x9a, 0xff, 0xac, 0xff, 0x8c, 0xff, 0x9f, 0xff, 0x82, 0xff, 0x94, 0xff, 0x7c, 0xff, 0x8a, 0xff, 0x78, 0xff, 0x83, 0xff, 0x74, 0xff, 0x7d, 0xff, 0x6c, 0xff, 0x79, 0xff, 0x61, 0xff, 0x74, 0xff, 0x55, 0xff, 0x6f, 0xff, 0x49, 0xff, 0x6e, 0xff, 0x44, 0xff, 0x70, 0xff, 0x45, 0xff, 0x70, 0xff, 0x45, 0xff, 0x72, 0xff, 0x43, 0xff, 0x77, 0xff, 0x3f, 0xff, 0x80, 0xff, 0x3a, 0xff, 0x89, 0xff, 0x31, 0xff, 0x90, 0xff, 0x27, 0xff, 0x98, 0xff, 0x22, 0xff, 0xa0, 0xff, 0x22, 0xff, 0xa9, 0xff, 0x24, 0xff, 0xb3, 0xff, 0x26, 0xff, 0xbc, 0xff, 0x25, 0xff, 0xc8, 0xff, 0x25, 0xff, 0xd6, 0xff, 0x27, 0xff, 0xe7, 0xff, 0x2f, 0xff, 0xfb, 0xff, 0x3e, 0xff, 0x12, 0x00, 0x52, 0xff, 0x2a, 0x00, 0x6b, 0xff, 0x41, 0x00, 0x85, 0xff, 0x56, 0x00, 0x9c, 0xff, 0x6b, 0x00, 0xb2, 0xff, 0x7d, 0x00, 0xc5, 0xff, 0x8c, 0x00, 0xd5, 0xff, 0x95, 0x00, 0xe5, 0xff, 0x97, 0x00, 0xf5, 0xff, 0x96, 0x00, 0x04, 0x00, 0x94, 0x00, 0x10, 0x00, 0x93, 0x00, 0x18, 0x00, 0x95, 0x00, 0x1d, 0x00, 0x95, 0x00, 0x21, 0x00, 0x95, 0x00, 0x25, 0x00, 0x95, 0x00, 0x2b, 0x00, 0x98, 0x00, 0x36, 0x00, 0x9a, 0x00, 0x43, 0x00, 0x9c, 0x00, 0x51, 0x00, 0x9c, 0x00, 0x5c, 0x00, 0x9a, 0x00, 0x63, 0x00, 0x98, 0x00, 0x65, 0x00, 0x97, 0x00, 0x63, 0x00, 0x92, 0x00, 0x5b, 0x00, 0x86, 0x00, 0x4f, 0x00, 0x78, 0x00, 0x44, 0x00, 0x69, 0x00, 0x3b, 0x00, 0x59, 0x00, 0x32, 0x00, 0x47, 0x00, 0x27, 0x00, 0x36, 0x00, 0x1a, 0x00, 0x27, 0x00, 0x0c, 0x00, 0x19, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xe9, 0xff, 0xfd, 0xff, 0xd6, 0xff, 0xf5, 0xff, 0xcc, 0xff, 0xf3, 0xff, 0xcd, 0xff, 0xf8, 0xff, 0xd7, 0xff, 0xfe, 0xff, 0xe3, 0xff, 0x01, 0x00, 0xea, 0xff, 0x05, 0x00, 0xf1, 0xff, 0x0a, 0x00, 0xfb, 0xff, 0x0b, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0xee, 0xff, 0x00, 0x00, 0xdd, 0xff, 0xfb, 0xff, 0xce, 0xff, 0xf7, 0xff, 0xc3, 0xff, 0xf6, 0xff, 0xbb, 0xff, 0xf8, 0xff, 0xaf, 0xff, 0xf9, 0xff, 0x9d, 0xff, 0xf6, 0xff, 0x88, 0xff, 0xf0, 0xff, 0x71, 0xff, 0xe4, 0xff, 0x5a, 0xff, 0xd2, 0xff, 0x46, 0xff, 0xbe, 0xff, 0x37, 0xff, 0xa9, 0xff, 0x2b, 0xff, 0x95, 0xff, 0x22, 0xff, 0x84, 0xff, 0x1e, 0xff, 0x78, 0xff, 0x1d, 0xff, 0x70, 0xff, 0x20, 0xff, 0x6c, 0xff, 0x2a, 0xff, 0x6c, 0xff, 0x3c, 0xff, 0x6e, 0xff, 0x4f, 0xff, 0x6f, 0xff, 0x5d, 0xff, 0x6a, 0xff, 0x67, 0xff, 0x66, 0xff, 0x71, 0xff, 0x69, 0xff, 0x7a, 0xff, 0x71, 0xff, 0x85, 0xff, 0x7e, 0xff, 0x92, 0xff, 0x90, 0xff, 0xa3, 0xff, 0xa5, 0xff, 0xb6, 0xff, 0xbd, 0xff, 0xc8, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xeb, 0xff, 0xde, 0xff, 0xfc, 0xff, 0xe1, 0xff, 0x09, 0x00, 0xe5, 0xff, 0x13, 0x00, 0xea, 0xff, 0x1c, 0x00, 0xf5, 0xff, 0x28, 0x00, 0x0a, 0x00, 0x3d, 0x00, 0x27, 0x00, 0x59, 0x00, 0x41, 0x00, 0x70, 0x00, 0x52, 0x00, 0x7e, 0x00, 0x60, 0x00, 0x89, 0x00, 0x67, 0x00, 0x8d, 0x00, 0x6d, 0x00, 0x8e, 0x00, 0x72, 0x00, 0x8d, 0x00, 0x79, 0x00, 0x8a, 0x00, 0x7c, 0x00, 0x87, 0x00, 0x7b, 0x00, 0x86, 0x00, 0x79, 0x00, 0x8a, 0x00, 0x70, 0x00, 0x8d, 0x00, 0x64, 0x00, 0x8e, 0x00, 0x5c, 0x00, 0x91, 0x00, 0x52, 0x00, 0x92, 0x00, 0x46, 0x00, 0x90, 0x00, 0x3e, 0x00, 0x92, 0x00, 0x3e, 0x00, 0x9f, 0x00, 0x46, 0x00, 0xb5, 0x00, 0x51, 0x00, 0xce, 0x00, 0x55, 0x00, 0xdd, 0x00, 0x50, 0x00, 0xe1, 0x00, 0x43, 0x00, 0xda, 0x00, 0x32, 0x00, 0xce, 0x00, 0x24, 0x00, 0xc5, 0x00, 0x1a, 0x00, 0xbf, 0x00, 0x14, 0x00, 0xbc, 0x00, 0x15, 0x00, 0xbf, 0x00, 0x22, 0x00, 0xcd, 0x00, 0x30, 0x00, 0xdc, 0x00, 0x37, 0x00, 0xe3, 0x00, 0x2e, 0x00, 0xdc, 0x00, 0x12, 0x00, 0xc6, 0x00, 0xed, 0xff, 0xa9, 0x00, 0xcd, 0xff, 0x94, 0x00, 0xbb, 0xff, 0x89, 0x00, 0xb7, 0xff, 0x86, 0x00, 0xbe, 0xff, 0x88, 0x00, 0xca, 0xff, 0x8a, 0x00, 0xd3, 0xff, 0x88, 0x00, 0xd7, 0xff, 0x81, 0x00, 0xd4, 0xff, 0x76, 0x00, 0xc9, 0xff, 0x61, 0x00, 0xb6, 0xff, 0x40, 0x00, 0xa2, 0xff, 0x18, 0x00, 0x96, 0xff, 0xf2, 0xff, 0x95, 0xff, 0xd5, 0xff, 0x9f, 0xff, 0xc6, 0xff, 0xb1, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xd5, 0xff, 0xc5, 0xff, 0xe0, 0xff, 0xc3, 0xff, 0xe8, 0xff, 0xc1, 0xff, 0xeb, 0xff, 0xbe, 0xff, 0xe9, 0xff, 0xb7, 0xff, 0xe4, 0xff, 0xaf, 0xff, 0xdf, 0xff, 0xa7, 0xff, 0xe1, 0xff, 0xa6, 0xff, 0xee, 0xff, 0xaf, 0xff, 0x06, 0x00, 0xc0, 0xff, 0x20, 0x00, 0xd1, 0xff, 0x37, 0x00, 0xdf, 0xff, 0x46, 0x00, 0xe9, 0xff, 0x4f, 0x00, 0xef, 0xff, 0x55, 0x00, 0xf4, 0xff, 0x5c, 0x00, 0xf7, 0xff, 0x65, 0x00, 0xf9, 0xff, 0x6f, 0x00, 0xf7, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0x94, 0x00, 0xfd, 0xff, 0xa6, 0x00, 0x06, 0x00, 0xb1, 0x00, 0x0f, 0x00, 0xae, 0x00, 0x12, 0x00, 0xa0, 0x00, 0x0c, 0x00, 0x8a, 0x00, 0xfb, 0xff, 0x75, 0x00, 0xe6, 0xff, 0x66, 0x00, 0xd6, 0xff, 0x64, 0x00, 0xd4, 0xff, 0x6e, 0x00, 0xe3, 0xff, 0x7c, 0x00, 0xfd, 0xff, 0x8a, 0x00, 0x1a, 0x00, 0x97, 0x00, 0x33, 0x00, 0x9f, 0x00, 0x44, 0x00, 0xa0, 0x00, 0x4b, 0x00, 0x9e, 0x00, 0x48, 0x00, 0x95, 0x00, 0x3c, 0x00, 0x8c, 0x00, 0x31, 0x00, 0x85, 0x00, 0x2c, 0x00, 0x85, 0x00, 0x2e, 0x00, 0x90, 0x00, 0x3c, 0x00, 0xa5, 0x00, 0x50, 0x00, 0xb8, 0x00, 0x60, 0x00, 0xc7, 0x00, 0x6c, 0x00, 0xcf, 0x00, 0x74, 0x00, 0xc8, 0x00, 0x71, 0x00, 0xb4, 0x00, 0x68, 0x00, 0x9b, 0x00, 0x5e, 0x00, 0x80, 0x00, 0x54, 0x00, 0x65, 0x00, 0x48, 0x00, 0x52, 0x00, 0x40, 0x00, 0x48, 0x00, 0x3d, 0x00, 0x43, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x30, 0x00, 0x3a, 0x00, 0x1b, 0x00, 0x2f, 0x00, 0x01, 0x00, 0x1c, 0x00, 0xe4, 0xff, 0x02, 0x00, 0xcd, 0xff, 0xe9, 0xff, 0xc2, 0xff, 0xd6, 0xff, 0xbe, 0xff, 0xc9, 0xff, 0xba, 0xff, 0xba, 0xff, 0xb8, 0xff, 0xaf, 0xff, 0xba, 0xff, 0xaa, 0xff, 0xb0, 0xff, 0x99, 0xff, 0x98, 0xff, 0x78, 0xff, 0x84, 0xff, 0x58, 0xff, 0x72, 0xff, 0x3b, 0xff, 0x5e, 0xff, 0x1b, 0xff, 0x5e, 0xff, 0x12, 0xff, 0x7b, 0xff, 0x29, 0xff, 0x94, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0x46, 0xff, 0xa6, 0xff, 0x4a, 0xff, 0xa2, 0xff, 0x41, 0xff, 0x90, 0xff, 0x29, 0xff, 0x81, 0xff, 0x14, 0xff, 0x7a, 0xff, 0x07, 0xff, 0x78, 0xff, 0x00, 0xff, 0x83, 0xff, 0x07, 0xff, 0x9a, 0xff, 0x1a, 0xff, 0xb0, 0xff, 0x2c, 0xff, 0xc0, 0xff, 0x38, 0xff, 0xc7, 0xff, 0x3d, 0xff, 0xba, 0xff, 0x2f, 0xff, 0xa1, 0xff, 0x17, 0xff, 0x97, 0xff, 0x12, 0xff, 0x9a, 0xff, 0x1b, 0xff, 0xa7, 0xff, 0x2c, 0xff, 0xd2, 0xff, 0x58, 0xff, 0x11, 0x00, 0x99, 0xff, 0x34, 0x00, 0xc3, 0xff, 0x27, 0x00, 0xc2, 0xff, 0xf2, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x5a, 0xff, 0x53, 0xff, 0x1d, 0xff, 0x33, 0xff, 0x0a, 0xff, 0x39, 0xff, 0x1d, 0xff, 0x67, 0xff, 0x58, 0xff, 0xcb, 0xff, 0xc9, 0xff, 0x44, 0x00, 0x4b, 0x00, 0xa2, 0x00, 0xb2, 0x00, 0xc9, 0x00, 0xde, 0x00, 0x96, 0x00, 0xad, 0x00, 0x1a, 0x00, 0x30, 0x00, 0xa1, 0xff, 0xb3, 0xff, 0x58, 0xff, 0x66, 0xff, 0x55, 0xff, 0x63, 0xff, 0xae, 0xff, 0xc3, 0xff, 0x3b, 0x00, 0x5d, 0x00, 0xb5, 0x00, 0xe4, 0x00, 0xf6, 0x00, 0x2f, 0x01, 0xe5, 0x00, 0x24, 0x01, 0x8b, 0x00, 0xcd, 0x00, 0x29, 0x00, 0x6f, 0x00, 0xf1, 0xff, 0x42, 0x00, 0xf4, 0xff, 0x55, 0x00, 0x32, 0x00, 0xa7, 0x00, 0x71, 0x00, 0xfa, 0x00, 0x6c, 0x00, 0x05, 0x01, 0x0d, 0x00, 0xb0, 0x00, 0x60, 0xff, 0x09, 0x00, 0xae, 0xfe, 0x5b, 0xff, 0x66, 0xfe, 0x14, 0xff, 0xbf, 0xfe, 0x6d, 0xff, 0xb2, 0xff, 0x61, 0x00, 0xfb, 0x00, 0xaa, 0x01, 0x0e, 0x02, 0xbd, 0x02, 0x7e, 0x02, 0x2d, 0x03, 0x15, 0x02, 0xc0, 0x02, 0xb1, 0x00, 0x52, 0x01, 0xcc, 0xfe, 0x5e, 0xff, 0x6a, 0xfd, 0xea, 0xfd, 0x17, 0xfd, 0x86, 0xfd, 0xee, 0xfd, 0x4f, 0xfe, 0xd1, 0xff, 0x29, 0x00, 0xf6, 0x01, 0x46, 0x02, 0x61, 0x03, 0xa9, 0x03, 0xad, 0x03, 0xea, 0x03, 0xb2, 0x02, 0xe1, 0x02, 0xa7, 0x00, 0xca, 0x00, 0x8d, 0xfe, 0xa2, 0xfe, 0x50, 0xfd, 0x56, 0xfd, 0x3d, 0xfd, 0x33, 0xfd, 0x52, 0xfe, 0x39, 0xfe, 0x0b, 0x00, 0xe6, 0xff, 0x88, 0x01, 0x5b, 0x01, 0x42, 0x02, 0x10, 0x02, 0x02, 0x02, 0xcb, 0x01, 0xd8, 0x00, 0x9d, 0x00, 0x58, 0xff, 0x18, 0xff, 0x22, 0xfe, 0xe0, 0xfd, 0x98, 0xfd, 0x54, 0xfd, 0xee, 0xfd, 0xa9, 0xfd, 0xeb, 0xfe, 0xa7, 0xfe, 0xff, 0xff, 0xbd, 0xff, 0xc7, 0x00, 0x8c, 0x00, 0xfd, 0x00, 0xcc, 0x00, 0x7b, 0x00, 0x54, 0x00, 0x8a, 0xff, 0x68, 0xff, 0x84, 0xfe, 0x63, 0xfe, 0xbe, 0xfd, 0x9a, 0xfd, 0xa2, 0xfd, 0x7d, 0xfd, 0x33, 0xfe, 0x0e, 0xfe, 0x12, 0xff, 0xf2, 0xfe, 0x01, 0x00, 0xe9, 0xff, 0xb4, 0x00, 0xa7, 0x00, 0xe0, 0x00, 0xde, 0x00, 0x9a, 0x00, 0xa0, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x39, 0xff, 0x40, 0xff, 0x90, 0xfe, 0x95, 0xfe, 0x49, 0xfe, 0x4e, 0xfe, 0x69, 0xfe, 0x72, 0xfe, 0x02, 0xff, 0x13, 0xff, 0xe8, 0xff, 0x06, 0x00, 0xac, 0x00, 0xd8, 0x00, 0x19, 0x01, 0x51, 0x01, 0x12, 0x01, 0x51, 0x01, 0x84, 0x00, 0xc7, 0x00, 0xbb, 0xff, 0x00, 0x00, 0x0b, 0xff, 0x50, 0xff, 0x98, 0xfe, 0xde, 0xfe, 0xa4, 0xfe, 0xeb, 0xfe, 0x39, 0xff, 0x80, 0xff, 0xf2, 0xff, 0x39, 0x00, 0x85, 0x00, 0xcb, 0x00, 0xd3, 0x00, 0x17, 0x01, 0xb6, 0x00, 0xf8, 0x00, 0x4f, 0x00, 0x90, 0x00, 0xf2, 0xff, 0x32, 0x00, 0xbe, 0xff, 0xfc, 0xff, 0xba, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0x39, 0x00, 0x5f, 0x00, 0xa2, 0x00, 0xc3, 0x00, 0x0c, 0x01, 0xfb, 0x00, 0x4b, 0x01, 0xe0, 0x00, 0x35, 0x01, 0x75, 0x00, 0xcf, 0x00, 0xeb, 0xff, 0x49, 0x00, 0x7f, 0xff, 0xe0, 0xff, 0x6d, 0xff, 0xcf, 0xff, 0xc9, 0xff, 0x29, 0x00, 0x63, 0x00, 0xc2, 0x00, 0xfd, 0x00, 0x5b, 0x01, 0x60, 0x01, 0xbe, 0x01, 0x58, 0x01, 0xb4, 0x01, 0xda, 0x00, 0x31, 0x01, 0x11, 0x00, 0x61, 0x00, 0x37, 0xff, 0x7e, 0xff, 0xa0, 0xfe, 0xdf, 0xfe, 0xad, 0xfe, 0xe4, 0xfe, 0x6b, 0xff, 0x9a, 0xff, 0x7b, 0x00, 0x9e, 0x00, 0x63, 0x01, 0x79, 0x01, 0xce, 0x01, 0xd5, 0x01, 0x95, 0x01, 0x8a, 0x01, 0xcb, 0x00, 0xac, 0x00, 0xc0, 0xff, 0x8c, 0xff, 0xe7, 0xfe, 0x9f, 0xfe, 0xa9, 0xfe, 0x4f, 0xfe, 0x36, 0xff, 0xce, 0xfe, 0x6e, 0x00, 0xfa, 0xff, 0xc9, 0x01, 0x48, 0x01, 0x7b, 0x02, 0xea, 0x01, 0x0f, 0x02, 0x6b, 0x01, 0xc1, 0x00, 0x08, 0x00, 0x17, 0xff, 0x4f, 0xfe, 0xba, 0xfd, 0xea, 0xfc, 0x6e, 0xfd, 0x9f, 0xfc, 0x70, 0xfe, 0xa7, 0xfd, 0x34, 0x00, 0x75, 0xff, 0xf4, 0x01, 0x40, 0x01, 0xe6, 0x02, 0x3e, 0x02, 0x6e, 0x02, 0xd2, 0x01, 0xbe, 0x00, 0x2f, 0x00, 0xb3, 0xfe, 0x32, 0xfe, 0x27, 0xfd, 0xb7, 0xfc, 0xa8, 0xfc, 0x50, 0xfc, 0x5c, 0xfd, 0x22, 0xfd, 0xf2, 0xfe, 0xd8, 0xfe, 0xb9, 0x00, 0xbc, 0x00, 0xdc, 0x01, 0xf8, 0x01, 0xdf, 0x01, 0x0e, 0x02, 0xe2, 0x00, 0x21, 0x01, 0x52, 0xff, 0x9e, 0xff, 0xc4, 0xfd, 0x1c, 0xfe, 0xfa, 0xfc, 0x59, 0xfd, 0x47, 0xfd, 0xaa, 0xfd, 0x5b, 0xfe, 0xc0, 0xfe, 0xc4, 0xff, 0x2c, 0x00, 0x0a, 0x01, 0x76, 0x01, 0xa5, 0x01, 0x14, 0x02, 0x63, 0x01, 0xd4, 0x01, 0x85, 0x00, 0xf6, 0x00, 0x76, 0xff, 0xe6, 0xff, 0x96, 0xfe, 0x03, 0xff, 0x10, 0xfe, 0x7e, 0xfe, 0x22, 0xfe, 0x93, 0xfe, 0xf7, 0xfe, 0x6e, 0xff, 0x22, 0x00, 0x9f, 0x00, 0x18, 0x01, 0x9b, 0x01, 0xbf, 0x01, 0x46, 0x02, 0xf5, 0x01, 0x7d, 0x02, 0x78, 0x01, 0xff, 0x01, 0x90, 0x00, 0x14, 0x01, 0xa5, 0xff, 0x22, 0x00, 0xd1, 0xfe, 0x48, 0xff, 0x71, 0xfe, 0xe5, 0xfe, 0xf0, 0xfe, 0x62, 0xff, 0x25, 0x00, 0x96, 0x00, 0x7d, 0x01, 0xeb, 0x01, 0x62, 0x02, 0xc7, 0x02, 0x76, 0x02, 0xd1, 0x02, 0xbb, 0x01, 0x09, 0x02, 0x80, 0x00, 0xc3, 0x00, 0x58, 0xff, 0x8f, 0xff, 0xdf, 0xfe, 0x0d, 0xff, 0x3e, 0xff, 0x65, 0xff, 0x2f, 0x00, 0x52, 0x00, 0x5b, 0x01, 0x7c, 0x01, 0x43, 0x02, 0x61, 0x02, 0x68, 0x02, 0x81, 0x02, 0xcb, 0x01, 0xde, 0x01, 0xd0, 0x00, 0xda, 0x00, 0xe4, 0xff, 0xe2, 0xff, 0x69, 0xff, 0x58, 0xff, 0x7f, 0xff, 0x5e, 0xff, 0x06, 0x00, 0xd6, 0xff, 0xc5, 0x00, 0x87, 0x00, 0x66, 0x01, 0x1c, 0x01, 0xa8, 0x01, 0x53, 0x01, 0x8a, 0x01, 0x2c, 0x01, 0x0b, 0x01, 0xa5, 0x00, 0x4f, 0x00, 0xe1, 0xff, 0xbd, 0xff, 0x41, 0xff, 0x80, 0xff, 0xf0, 0xfe, 0x86, 0xff, 0xe0, 0xfe, 0xd7, 0xff, 0x1f, 0xff, 0x4f, 0x00, 0x8d, 0xff, 0xa0, 0x00, 0xdc, 0xff, 0xb5, 0x00, 0xf4, 0xff, 0x93, 0x00, 0xd6, 0xff, 0x3c, 0x00, 0x82, 0xff, 0xd1, 0xff, 0x18, 0xff, 0x7d, 0xff, 0xc3, 0xfe, 0x56, 0xff, 0x9a, 0xfe, 0x67, 0xff, 0xa9, 0xfe, 0x9a, 0xff, 0xda, 0xfe, 0xd9, 0xff, 0x19, 0xff, 0x1d, 0x00, 0x61, 0xff, 0x3e, 0x00, 0x89, 0xff, 0x23, 0x00, 0x75, 0xff, 0xe8, 0xff, 0x43, 0xff, 0xaa, 0xff, 0x0d, 0xff, 0x77, 0xff, 0xe4, 0xfe, 0x70, 0xff, 0xe9, 0xfe, 0x9c, 0xff, 0x23, 0xff, 0xd9, 0xff, 0x72, 0xff, 0x0c, 0x00, 0xbc, 0xff, 0x13, 0x00, 0xde, 0xff, 0xe3, 0xff, 0xce, 0xff, 0x99, 0xff, 0xa4, 0xff, 0x49, 0xff, 0x74, 0xff, 0x14, 0xff, 0x58, 0xff, 0x1f, 0xff, 0x74, 0xff, 0x54, 0xff, 0xb5, 0xff, 0x84, 0xff, 0xef, 0xff, 0xab, 0xff, 0x1e, 0x00, 0xbe, 0xff, 0x38, 0x00, 0xa6, 0xff, 0x26, 0x00, 0x7d, 0xff, 0x04, 0x00, 0x60, 0xff, 0xee, 0xff, 0x4d, 0xff, 0xe1, 0xff, 0x49, 0xff, 0xe0, 0xff, 0x52, 0xff, 0xe7, 0xff, 0x5e, 0xff, 0xec, 0xff, 0x73, 0xff, 0xf7, 0xff, 0x8b, 0xff, 0x06, 0x00, 0xa1, 0xff, 0x16, 0x00, 0xbc, 0xff, 0x2d, 0x00, 0xce, 0xff, 0x3d, 0x00, 0xcd, 0xff, 0x3c, 0x00, 0xcd, 0xff, 0x3a, 0x00, 0xd4, 0xff, 0x3b, 0x00, 0xd7, 0xff, 0x36, 0x00, 0xea, 0xff, 0x40, 0x00, 0x15, 0x00, 0x60, 0x00, 0x35, 0x00, 0x7a, 0x00, 0x3f, 0x00, 0x81, 0x00, 0x2f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x47, 0x00, 0xca, 0xff, 0x0e, 0x00, 0xb4, 0xff, 0xf0, 0xff, 0xe0, 0xff, 0x0d, 0x00, 0x44, 0x00, 0x5e, 0x00, 0xa0, 0x00, 0xa7, 0x00, 0xc6, 0x00, 0xc0, 0x00, 0xbf, 0x00, 0xb2, 0x00, 0x8f, 0x00, 0x82, 0x00, 0x3a, 0x00, 0x2b, 0x00, 0xdb, 0xff, 0xc6, 0xff, 0x91, 0xff, 0x6d, 0xff, 0x7f, 0xff, 0x46, 0xff, 0xcf, 0xff, 0x7b, 0xff, 0x62, 0x00, 0xf4, 0xff, 0xdb, 0x00, 0x58, 0x00, 0xf6, 0x00, 0x64, 0x00, 0xac, 0x00, 0x10, 0x00, 0x24, 0x00, 0x82, 0xff, 0xa7, 0xff, 0xfc, 0xfe, 0x67, 0xff, 0xad, 0xfe, 0x7e, 0xff, 0xae, 0xfe, 0xef, 0xff, 0x06, 0xff, 0x80, 0x00, 0x81, 0xff, 0xdc, 0x00, 0xcf, 0xff, 0xdc, 0x00, 0xcd, 0xff, 0x8c, 0x00, 0x83, 0xff, 0x15, 0x00, 0x18, 0xff, 0xbe, 0xff, 0xce, 0xfe, 0xa9, 0xff, 0xc6, 0xfe, 0xcb, 0xff, 0xf4, 0xfe, 0x0e, 0x00, 0x42, 0xff, 0x54, 0x00, 0x92, 0xff, 0x79, 0x00, 0xc5, 0xff, 0x74, 0x00, 0xd1, 0xff, 0x47, 0x00, 0xbb, 0xff, 0x03, 0x00, 0x93, 0xff, 0xcb, 0xff, 0x77, 0xff, 0xad, 0xff, 0x70, 0xff, 0xa9, 0xff, 0x7c, 0xff, 0xbe, 0xff, 0x9c, 0xff, 0xdd, 0xff, 0xc5, 0xff, 0xf0, 0xff, 0xe1, 0xff, 0xef, 0xff, 0xeb, 0xff, 0xd9, 0xff, 0xe2, 0xff, 0xb0, 0xff, 0xc8, 0xff, 0x88, 0xff, 0xb1, 0xff, 0x72, 0xff, 0xad, 0xff, 0x73, 0xff, 0xc0, 0xff, 0x85, 0xff, 0xe0, 0xff, 0x99, 0xff, 0x01, 0x00, 0xa0, 0xff, 0x13, 0x00, 0xa1, 0xff, 0x1f, 0x00, 0xa0, 0xff, 0x27, 0x00, 0x9a, 0xff, 0x2b, 0x00, 0x9d, 0xff, 0x39, 0x00, 0xa7, 0xff, 0x4e, 0x00, 0xae, 0xff, 0x61, 0x00, 0xae, 0xff, 0x6d, 0x00, 0xac, 0xff, 0x74, 0x00, 0xb2, 0xff, 0x80, 0x00, 0xcb, 0xff, 0x9a, 0x00, 0xee, 0xff, 0xb7, 0x00, 0x07, 0x00, 0xc8, 0x00, 0x11, 0x00, 0xc9, 0x00, 0x0f, 0x00, 0xc2, 0x00, 0x07, 0x00, 0xbe, 0x00, 0x03, 0x00, 0xc3, 0x00, 0x0a, 0x00, 0xd2, 0x00, 0x23, 0x00, 0xef, 0x00, 0x4b, 0x00, 0x12, 0x01, 0x6b, 0x00, 0x25, 0x01, 0x7e, 0x00, 0x27, 0x01, 0x84, 0x00, 0x1e, 0x01, 0x7a, 0x00, 0x0b, 0x01, 0x64, 0x00, 0xf5, 0x00, 0x52, 0x00, 0xe9, 0x00, 0x4c, 0x00, 0xec, 0x00, 0x4c, 0x00, 0xf3, 0x00, 0x54, 0x00, 0xf9, 0x00, 0x5e, 0x00, 0xf8, 0x00, 0x6a, 0x00, 0xf0, 0x00, 0x76, 0x00, 0xe2, 0x00, 0x7c, 0x00, 0xd0, 0x00, 0x7d, 0x00, 0xc2, 0x00, 0x72, 0x00, 0xb2, 0x00, 0x5b, 0x00, 0x9d, 0x00, 0x48, 0x00, 0x8c, 0x00, 0x40, 0x00, 0x7f, 0x00, 0x40, 0x00, 0x72, 0x00, 0x48, 0x00, 0x63, 0x00, 0x58, 0x00, 0x58, 0x00, 0x68, 0x00, 0x4e, 0x00, 0x71, 0x00, 0x45, 0x00, 0x6b, 0x00, 0x38, 0x00, 0x58, 0x00, 0x2b, 0x00, 0x43, 0x00, 0x20, 0x00, 0x33, 0x00, 0x17, 0x00, 0x2d, 0x00, 0x0b, 0x00, 0x37, 0x00, 0x01, 0x00, 0x4e, 0x00, 0xfc, 0xff, 0x6a, 0x00, 0xfb, 0xff, 0x7e, 0x00, 0xfc, 0xff, 0x7c, 0x00, 0xf6, 0xff, 0x62, 0x00, 0xe5, 0xff, 0x3d, 0x00, 0xd2, 0xff, 0x1d, 0x00, 0xc2, 0xff, 0x08, 0x00, 0xb5, 0xff, 0x08, 0x00, 0xae, 0xff, 0x18, 0x00, 0xad, 0xff, 0x2c, 0x00, 0xaf, 0xff, 0x3a, 0x00, 0xaf, 0xff, 0x34, 0x00, 0xa8, 0xff, 0x18, 0x00, 0x99, 0xff, 0xf2, 0xff, 0x8b, 0xff, 0xd0, 0xff, 0x87, 0xff, 0xb8, 0xff, 0x8c, 0xff, 0xb0, 0xff, 0x9d, 0xff, 0xb4, 0xff, 0xb1, 0xff, 0xbb, 0xff, 0xc0, 0xff, 0xc7, 0xff, 0xcb, 0xff, 0xd0, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd3, 0xff, 0xc8, 0xff, 0xd4, 0xff, 0xbb, 0xff, 0xd8, 0xff, 0xae, 0xff, 0xe2, 0xff, 0xa8, 0xff, 0xf1, 0xff, 0xac, 0xff, 0x05, 0x00, 0xb6, 0xff, 0x18, 0x00, 0xc3, 0xff, 0x24, 0x00, 0xcf, 0xff, 0x27, 0x00, 0xd5, 0xff, 0x22, 0x00, 0xd6, 0xff, 0x1a, 0x00, 0xd1, 0xff, 0x11, 0x00, 0xc7, 0xff, 0x09, 0x00, 0xbf, 0xff, 0x06, 0x00, 0xbe, 0xff, 0x08, 0x00, 0xc6, 0xff, 0x0d, 0x00, 0xd8, 0xff, 0x14, 0x00, 0xf3, 0xff, 0x1d, 0x00, 0x12, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x23, 0x00, 0x21, 0x00, 0x0f, 0x00, 0x15, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xf1, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf2, 0xff, 0x0e, 0x00, 0xf1, 0xff, 0x25, 0x00, 0xf1, 0xff, 0x30, 0x00, 0xeb, 0xff, 0x30, 0x00, 0xe4, 0xff, 0x25, 0x00, 0xde, 0xff, 0x14, 0x00, 0xd8, 0xff, 0x05, 0x00, 0xd6, 0xff, 0xfc, 0xff, 0xd4, 0xff, 0xf7, 0xff, 0xce, 0xff, 0xf4, 0xff, 0xc3, 0xff, 0xf2, 0xff, 0xb6, 0xff, 0xf1, 0xff, 0xab, 0xff, 0xeb, 0xff, 0xa0, 0xff, 0xe1, 0xff, 0x97, 0xff, 0xd6, 0xff, 0x91, 0xff, 0xd0, 0xff, 0x91, 0xff, 0xcd, 0xff, 0x93, 0xff, 0xcd, 0xff, 0x93, 0xff, 0xd0, 0xff, 0x90, 0xff, 0xd1, 0xff, 0x85, 0xff, 0xcf, 0xff, 0x72, 0xff, 0xcc, 0xff, 0x5c, 0xff, 0xc7, 0xff, 0x47, 0xff, 0xbe, 0xff, 0x32, 0xff, 0xb2, 0xff, 0x1f, 0xff, 0xa9, 0xff, 0x11, 0xff, 0xa3, 0xff, 0x06, 0xff, 0xa1, 0xff, 0xf9, 0xfe, 0xa4, 0xff, 0xeb, 0xfe, 0xae, 0xff, 0xe1, 0xfe, 0xbc, 0xff, 0xdc, 0xfe, 0xc8, 0xff, 0xda, 0xfe, 0xcd, 0xff, 0xdc, 0xfe, 0xc9, 0xff, 0xe1, 0xfe, 0xbe, 0xff, 0xe5, 0xfe, 0xb1, 0xff, 0xe8, 0xfe, 0xa6, 0xff, 0xe8, 0xfe, 0x9f, 0xff, 0xe3, 0xfe, 0xa3, 0xff, 0xe1, 0xfe, 0xae, 0xff, 0xe3, 0xfe, 0xba, 0xff, 0xec, 0xfe, 0xbd, 0xff, 0xf3, 0xfe, 0xb4, 0xff, 0xfa, 0xfe, 0xa5, 0xff, 0x06, 0xff, 0x93, 0xff, 0x12, 0xff, 0x85, 0xff, 0x21, 0xff, 0x81, 0xff, 0x30, 0xff, 0x89, 0xff, 0x40, 0xff, 0x9a, 0xff, 0x4e, 0xff, 0xad, 0xff, 0x5a, 0xff, 0xbe, 0xff, 0x67, 0xff, 0xc5, 0xff, 0x77, 0xff, 0xc5, 0xff, 0x8a, 0xff, 0xc3, 0xff, 0xa3, 0xff, 0xc5, 0xff, 0xc0, 0xff, 0xcd, 0xff, 0xdd, 0xff, 0xdb, 0xff, 0xf8, 0xff, 0xed, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x0e, 0x00, 0x31, 0x00, 0x15, 0x00, 0x38, 0x00, 0x13, 0x00, 0x3a, 0x00, 0x0a, 0x00, 0x3c, 0x00, 0xff, 0xff, 0x44, 0x00, 0xf8, 0xff, 0x57, 0x00, 0xf7, 0xff, 0x6f, 0x00, 0xfc, 0xff, 0x85, 0x00, 0x07, 0x00, 0x97, 0x00, 0x17, 0x00, 0xa6, 0x00, 0x23, 0x00, 0xae, 0x00, 0x28, 0x00, 0xb1, 0x00, 0x2b, 0x00, 0xba, 0x00, 0x2f, 0x00, 0xce, 0x00, 0x35, 0x00, 0xed, 0x00, 0x3d, 0x00, 0x11, 0x01, 0x46, 0x00, 0x33, 0x01, 0x4f, 0x00, 0x48, 0x01, 0x52, 0x00, 0x4a, 0x01, 0x4f, 0x00, 0x3d, 0x01, 0x4e, 0x00, 0x31, 0x01, 0x4e, 0x00, 0x2b, 0x01, 0x4b, 0x00, 0x2a, 0x01, 0x49, 0x00, 0x2e, 0x01, 0x47, 0x00, 0x33, 0x01, 0x47, 0x00, 0x33, 0x01, 0x49, 0x00, 0x2c, 0x01, 0x49, 0x00, 0x1a, 0x01, 0x48, 0x00, 0x03, 0x01, 0x43, 0x00, 0xeb, 0x00, 0x3b, 0x00, 0xd5, 0x00, 0x36, 0x00, 0xc7, 0x00, 0x33, 0x00, 0xbc, 0x00, 0x35, 0x00, 0xb3, 0x00, 0x3b, 0x00, 0xa9, 0x00, 0x44, 0x00, 0x9b, 0x00, 0x4d, 0x00, 0x89, 0x00, 0x53, 0x00, 0x78, 0x00, 0x55, 0x00, 0x68, 0x00, 0x51, 0x00, 0x5c, 0x00, 0x49, 0x00, 0x55, 0x00, 0x3d, 0x00, 0x4e, 0x00, 0x2d, 0x00, 0x3e, 0x00, 0x1c, 0x00, 0x26, 0x00, 0x15, 0x00, 0x0e, 0x00, 0x18, 0x00, 0xfa, 0xff, 0x1d, 0x00, 0xea, 0xff, 0x1d, 0x00, 0xdb, 0xff, 0x19, 0x00, 0xd2, 0xff, 0x14, 0x00, 0xcd, 0xff, 0x0b, 0x00, 0xc5, 0xff, 0xfd, 0xff, 0xb5, 0xff, 0xf4, 0xff, 0xa5, 0xff, 0xf6, 0xff, 0x9b, 0xff, 0x00, 0x00, 0x95, 0xff, 0x12, 0x00, 0x98, 0xff, 0x28, 0x00, 0xa3, 0xff, 0x3d, 0x00, 0xb6, 0xff, 0x46, 0x00, 0xc7, 0xff, 0x3f, 0x00, 0xce, 0xff, 0x30, 0x00, 0xcb, 0xff, 0x20, 0x00, 0xc1, 0xff, 0x15, 0x00, 0xb4, 0xff, 0x14, 0x00, 0xac, 0xff, 0x1b, 0x00, 0xa9, 0xff, 0x26, 0x00, 0xab, 0xff, 0x30, 0x00, 0xb3, 0xff, 0x37, 0x00, 0xc4, 0xff, 0x3a, 0x00, 0xd9, 0xff, 0x36, 0x00, 0xeb, 0xff, 0x2b, 0x00, 0xf4, 0xff, 0x20, 0x00, 0xf4, 0xff, 0x18, 0x00, 0xf0, 0xff, 0x17, 0x00, 0xf0, 0xff, 0x1e, 0x00, 0xf9, 0xff, 0x2a, 0x00, 0x0a, 0x00, 0x37, 0x00, 0x21, 0x00, 0x41, 0x00, 0x3a, 0x00, 0x46, 0x00, 0x52, 0x00, 0x42, 0x00, 0x66, 0x00, 0x39, 0x00, 0x72, 0x00, 0x31, 0x00, 0x7b, 0x00, 0x2c, 0x00, 0x82, 0x00, 0x28, 0x00, 0x87, 0x00, 0x21, 0x00, 0x89, 0x00, 0x19, 0x00, 0x8e, 0x00, 0x0e, 0x00, 0x93, 0x00, 0x05, 0x00, 0x98, 0x00, 0x00, 0x00, 0x9c, 0x00, 0xfc, 0xff, 0x9c, 0x00, 0xf8, 0xff, 0x98, 0x00, 0xf0, 0xff, 0x8f, 0x00, 0xe7, 0xff, 0x85, 0x00, 0xdc, 0xff, 0x7e, 0x00, 0xd0, 0xff, 0x78, 0x00, 0xc7, 0xff, 0x79, 0x00, 0xc4, 0xff, 0x80, 0x00, 0xc7, 0xff, 0x87, 0x00, 0xce, 0xff, 0x8a, 0x00, 0xdb, 0xff, 0x89, 0x00, 0xe8, 0xff, 0x86, 0x00, 0xf2, 0xff, 0x82, 0x00, 0xf8, 0xff, 0x7f, 0x00, 0xfd, 0xff, 0x7e, 0x00, 0x04, 0x00, 0x7d, 0x00, 0x0e, 0x00, 0x79, 0x00, 0x19, 0x00, 0x73, 0x00, 0x24, 0x00, 0x68, 0x00, 0x2d, 0x00, 0x58, 0x00, 0x2f, 0x00, 0x41, 0x00, 0x2c, 0x00, 0x28, 0x00, 0x25, 0x00, 0x11, 0x00, 0x1d, 0x00, 0xfb, 0xff, 0x18, 0x00, 0xe7, 0xff, 0x1c, 0x00, 0xd6, 0xff, 0x26, 0x00, 0xc8, 0xff, 0x2e, 0x00, 0xb7, 0xff, 0x30, 0x00, 0xa3, 0xff, 0x27, 0x00, 0x8c, 0xff, 0x15, 0x00, 0x76, 0xff, 0xfe, 0xff, 0x65, 0xff, 0xe6, 0xff, 0x5a, 0xff, 0xd4, 0xff, 0x56, 0xff, 0xc9, 0xff, 0x54, 0xff, 0xc7, 0xff, 0x50, 0xff, 0xca, 0xff, 0x4a, 0xff, 0xcb, 0xff, 0x40, 0xff, 0xc6, 0xff, 0x34, 0xff, 0xbc, 0xff, 0x2b, 0xff, 0xac, 0xff, 0x25, 0xff, 0x9c, 0xff, 0x22, 0xff, 0x94, 0xff, 0x27, 0xff, 0x97, 0xff, 0x32, 0xff, 0x9d, 0xff, 0x3b, 0xff, 0x9f, 0xff, 0x3d, 0xff, 0x9d, 0xff, 0x3c, 0xff, 0x98, 0xff, 0x37, 0xff, 0x91, 0xff, 0x30, 0xff, 0x8d, 0xff, 0x2f, 0xff, 0x94, 0xff, 0x36, 0xff, 0x9f, 0xff, 0x43, 0xff, 0xa9, 0xff, 0x50, 0xff, 0xae, 0xff, 0x5a, 0xff, 0xaf, 0xff, 0x66, 0xff, 0xaf, 0xff, 0x75, 0xff, 0xad, 0xff, 0x87, 0xff, 0xad, 0xff, 0x9b, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xbf, 0xff, 0xc5, 0xff, 0xd1, 0xff, 0xd7, 0xff, 0xe5, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0x0c, 0x00, 0xff, 0xff, 0x23, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0xfd, 0xff, 0x5b, 0x00, 0x02, 0x00, 0x74, 0x00, 0x0d, 0x00, 0x86, 0x00, 0x1b, 0x00, 0x8f, 0x00, 0x27, 0x00, 0x92, 0x00, 0x2c, 0x00, 0x92, 0x00, 0x2a, 0x00, 0x96, 0x00, 0x20, 0x00, 0xa1, 0x00, 0x14, 0x00, 0xb5, 0x00, 0x0b, 0x00, 0xcf, 0x00, 0x07, 0x00, 0xe4, 0x00, 0x07, 0x00, 0xec, 0x00, 0x0c, 0x00, 0xe4, 0x00, 0x13, 0x00, 0xd3, 0x00, 0x19, 0x00, 0xbe, 0x00, 0x19, 0x00, 0xab, 0x00, 0x16, 0x00, 0xa1, 0x00, 0x0e, 0x00, 0x9f, 0x00, 0x04, 0x00, 0xa3, 0x00, 0xfd, 0xff, 0xaa, 0x00, 0xfc, 0xff, 0xaf, 0x00, 0x00, 0x00, 0xad, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x06, 0x00, 0x88, 0x00, 0x07, 0x00, 0x71, 0x00, 0x05, 0x00, 0x5e, 0x00, 0x01, 0x00, 0x51, 0x00, 0xff, 0xff, 0x4c, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x15, 0x00, 0x5b, 0x00, 0x20, 0x00, 0x5d, 0x00, 0x26, 0x00, 0x56, 0x00, 0x24, 0x00, 0x46, 0x00, 0x1e, 0x00, 0x2e, 0x00, 0x19, 0x00, 0x17, 0x00, 0x19, 0x00, 0x04, 0x00, 0x1f, 0x00, 0xf5, 0xff, 0x2c, 0x00, 0xee, 0xff, 0x3a, 0x00, 0xeb, 0xff, 0x46, 0x00, 0xe7, 0xff, 0x4e, 0x00, 0xe1, 0xff, 0x50, 0x00, 0xd7, 0xff, 0x4d, 0x00, 0xc7, 0xff, 0x46, 0x00, 0xaf, 0xff, 0x41, 0x00, 0x98, 0xff, 0x44, 0x00, 0x89, 0xff, 0x4c, 0x00, 0x83, 0xff, 0x53, 0x00, 0x81, 0xff, 0x57, 0x00, 0x84, 0xff, 0x57, 0x00, 0x87, 0xff, 0x50, 0x00, 0x81, 0xff, 0x46, 0x00, 0x75, 0xff, 0x3d, 0x00, 0x64, 0xff, 0x38, 0x00, 0x55, 0xff, 0x34, 0x00, 0x4c, 0xff, 0x31, 0x00, 0x4a, 0xff, 0x2e, 0x00, 0x50, 0xff, 0x29, 0x00, 0x58, 0xff, 0x25, 0x00, 0x60, 0xff, 0x21, 0x00, 0x67, 0xff, 0x1f, 0x00, 0x6c, 0xff, 0x1b, 0x00, 0x6d, 0xff, 0x1a, 0x00, 0x6f, 0xff, 0x1c, 0x00, 0x75, 0xff, 0x1f, 0x00, 0x7e, 0xff, 0x1f, 0x00, 0x88, 0xff, 0x1b, 0x00, 0x92, 0xff, 0x16, 0x00, 0x9c, 0xff, 0x11, 0x00, 0xa4, 0xff, 0x0c, 0x00, 0xa8, 0xff, 0x07, 0x00, 0xa9, 0xff, 0x03, 0x00, 0xaa, 0xff, 0xfb, 0xff, 0xaa, 0xff, 0xf0, 0xff, 0xab, 0xff, 0xe6, 0xff, 0xae, 0xff, 0xdc, 0xff, 0xb1, 0xff, 0xd5, 0xff, 0xb7, 0xff, 0xd5, 0xff, 0xc4, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xe3, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xe3, 0xff, 0xf6, 0xff, 0xdb, 0xff, 0xfb, 0xff, 0xd0, 0xff, 0x01, 0x00, 0xc5, 0xff, 0x0c, 0x00, 0xbb, 0xff, 0x19, 0x00, 0xb3, 0xff, 0x25, 0x00, 0xaf, 0xff, 0x2f, 0x00, 0xad, 0xff, 0x33, 0x00, 0xad, 0xff, 0x32, 0x00, 0xab, 0xff, 0x29, 0x00, 0xa8, 0xff, 0x23, 0x00, 0xa9, 0xff, 0x28, 0x00, 0xad, 0xff, 0x37, 0x00, 0xae, 0xff, 0x4a, 0x00, 0xad, 0xff, 0x5b, 0x00, 0xae, 0xff, 0x67, 0x00, 0xac, 0xff, 0x65, 0x00, 0xaa, 0xff, 0x58, 0x00, 0xa7, 0xff, 0x44, 0x00, 0xa3, 0xff, 0x30, 0x00, 0xa1, 0xff, 0x25, 0x00, 0xa2, 0xff, 0x25, 0x00, 0xa5, 0xff, 0x2d, 0x00, 0xaa, 0xff, 0x38, 0x00, 0xaf, 0xff, 0x3d, 0x00, 0xb1, 0xff, 0x37, 0x00, 0xb0, 0xff, 0x28, 0x00, 0xac, 0xff, 0x0f, 0x00, 0xa8, 0xff, 0xf8, 0xff, 0xa9, 0xff, 0xea, 0xff, 0xae, 0xff, 0xe2, 0xff, 0xb4, 0xff, 0xdf, 0xff, 0xbd, 0xff, 0xde, 0xff, 0xc8, 0xff, 0xde, 0xff, 0xd1, 0xff, 0xdb, 0xff, 0xd7, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xcf, 0xff, 0xdc, 0xff, 0xc7, 0xff, 0xdd, 0xff, 0xbe, 0xff, 0xde, 0xff, 0xb3, 0xff, 0xe2, 0xff, 0xaa, 0xff, 0xe8, 0xff, 0xa5, 0xff, 0xf0, 0xff, 0xa2, 0xff, 0xf9, 0xff, 0xa6, 0xff, 0x05, 0x00, 0xb0, 0xff, 0x14, 0x00, 0xbb, 0xff, 0x23, 0x00, 0xc2, 0xff, 0x2f, 0x00, 0xc1, 0xff, 0x37, 0x00, 0xb9, 0xff, 0x37, 0x00, 0xab, 0xff, 0x34, 0x00, 0x9e, 0xff, 0x33, 0x00, 0x99, 0xff, 0x34, 0x00, 0x9c, 0xff, 0x3b, 0x00, 0xa6, 0xff, 0x45, 0x00, 0xb4, 0xff, 0x51, 0x00, 0xc0, 0xff, 0x58, 0x00, 0xc3, 0xff, 0x59, 0x00, 0xbf, 0xff, 0x53, 0x00, 0xba, 0xff, 0x40, 0x00, 0xb4, 0xff, 0x29, 0x00, 0xb3, 0xff, 0x18, 0x00, 0xbd, 0xff, 0x15, 0x00, 0xd4, 0xff, 0x23, 0x00, 0xf1, 0xff, 0x37, 0x00, 0x08, 0x00, 0x45, 0x00, 0x12, 0x00, 0x44, 0x00, 0x11, 0x00, 0x35, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x07, 0x00, 0x08, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0x11, 0x00, 0xf2, 0xff, 0x1d, 0x00, 0xfd, 0xff, 0x2b, 0x00, 0x12, 0x00, 0x3a, 0x00, 0x28, 0x00, 0x46, 0x00, 0x35, 0x00, 0x4e, 0x00, 0x34, 0x00, 0x51, 0x00, 0x25, 0x00, 0x51, 0x00, 0x11, 0x00, 0x52, 0x00, 0x01, 0x00, 0x56, 0x00, 0xf7, 0xff, 0x5c, 0x00, 0xf6, 0xff, 0x64, 0x00, 0xfd, 0xff, 0x6d, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x18, 0x00, 0x84, 0x00, 0x22, 0x00, 0x8b, 0x00, 0x21, 0x00, 0x8a, 0x00, 0x13, 0x00, 0x81, 0x00, 0xfe, 0xff, 0x76, 0x00, 0xeb, 0xff, 0x72, 0x00, 0xe0, 0xff, 0x75, 0x00, 0xdb, 0xff, 0x79, 0x00, 0xde, 0xff, 0x7d, 0x00, 0xe6, 0xff, 0x7c, 0x00, 0xef, 0xff, 0x76, 0x00, 0xf7, 0xff, 0x68, 0x00, 0xfe, 0xff, 0x56, 0x00, 0x04, 0x00, 0x47, 0x00, 0x06, 0x00, 0x3f, 0x00, 0x03, 0x00, 0x3d, 0x00, 0xfc, 0xff, 0x3e, 0x00, 0xf4, 0xff, 0x3d, 0x00, 0xeb, 0xff, 0x31, 0x00, 0xe7, 0xff, 0x1e, 0x00, 0xe7, 0xff, 0x06, 0x00, 0xea, 0xff, 0xef, 0xff, 0xf3, 0xff, 0xe4, 0xff, 0xff, 0xff, 0xe6, 0xff, 0x09, 0x00, 0xf2, 0xff, 0x0b, 0x00, 0xff, 0xff, 0x0a, 0x00, 0x09, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0xfb, 0xff, 0x0c, 0x00, 0xf4, 0xff, 0x17, 0x00, 0xf5, 0xff, 0x21, 0x00, 0xff, 0xff, 0x29, 0x00, 0x11, 0x00, 0x2c, 0x00, 0x23, 0x00, 0x23, 0x00, 0x2c, 0x00, 0x13, 0x00, 0x2b, 0x00, 0x01, 0x00, 0x21, 0x00, 0xf3, 0xff, 0x13, 0x00, 0xeb, 0xff, 0x06, 0x00, 0xeb, 0xff, 0xfd, 0xff, 0xf2, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xf1, 0xff, 0x00, 0x00, 0xde, 0xff, 0xfd, 0xff, 0xca, 0xff, 0xf7, 0xff, 0xbb, 0xff, 0xee, 0xff, 0xb5, 0xff, 0xe3, 0xff, 0xb7, 0xff, 0xd4, 0xff, 0xbf, 0xff, 0xc5, 0xff, 0xce, 0xff, 0xbd, 0xff, 0xdc, 0xff, 0xc1, 0xff, 0xe2, 0xff, 0xd0, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xdf, 0xff, 0xfd, 0xff, 0xda, 0xff, 0x09, 0x00, 0xd7, 0xff, 0x07, 0x00, 0xd8, 0xff, 0xf8, 0xff, 0xdf, 0xff, 0xea, 0xff, 0xec, 0xff, 0xe5, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0x0c, 0x00, 0x11, 0x00, 0x17, 0x00, 0x36, 0x00, 0x1b, 0x00, 0x55, 0x00, 0x1c, 0x00, 0x65, 0x00, 0x1a, 0x00, 0x61, 0x00, 0x15, 0x00, 0x4d, 0x00, 0x11, 0x00, 0x35, 0x00, 0x10, 0x00, 0x27, 0x00, 0x10, 0x00, 0x25, 0x00, 0x0f, 0x00, 0x2e, 0x00, 0x0c, 0x00, 0x3e, 0x00, 0x0c, 0x00, 0x4b, 0x00, 0x0f, 0x00, 0x4f, 0x00, 0x14, 0x00, 0x47, 0x00, 0x1d, 0x00, 0x38, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x19, 0x00, 0x22, 0x00, 0x0c, 0x00, 0x17, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x10, 0x00, 0x28, 0x00, 0x0c, 0x00, 0x34, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x03, 0x00, 0x42, 0x00, 0x01, 0x00, 0x3f, 0x00, 0xff, 0xff, 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x0a, 0x00, 0x42, 0x00, 0x0e, 0x00, 0x4e, 0x00, 0x14, 0x00, 0x5b, 0x00, 0x19, 0x00, 0x65, 0x00, 0x19, 0x00, 0x6a, 0x00, 0x15, 0x00, 0x67, 0x00, 0x0c, 0x00, 0x5f, 0x00, 0x02, 0x00, 0x51, 0x00, 0xf6, 0xff, 0x43, 0x00, 0xec, 0xff, 0x3b, 0x00, 0xe4, 0xff, 0x39, 0x00, 0xd9, 0xff, 0x3c, 0x00, 0xc9, 0xff, 0x44, 0x00, 0xb4, 0xff, 0x4b, 0x00, 0x9c, 0xff, 0x4d, 0x00, 0x85, 0xff, 0x4d, 0x00, 0x75, 0xff, 0x4b, 0x00, 0x6f, 0xff, 0x46, 0x00, 0x6e, 0xff, 0x3e, 0x00, 0x6f, 0xff, 0x35, 0x00, 0x6e, 0xff, 0x2f, 0x00, 0x6a, 0xff, 0x2e, 0x00, 0x61, 0xff, 0x35, 0x00, 0x59, 0xff, 0x44, 0x00, 0x57, 0xff, 0x56, 0x00, 0x5d, 0xff, 0x60, 0x00, 0x69, 0xff, 0x5e, 0x00, 0x78, 0xff, 0x4f, 0x00, 0x87, 0xff, 0x37, 0x00, 0x8e, 0xff, 0x1e, 0x00, 0x8d, 0xff, 0x09, 0x00, 0x88, 0xff, 0x01, 0x00, 0x85, 0xff, 0x00, 0x00, 0x85, 0xff, 0x04, 0x00, 0x8e, 0xff, 0x0c, 0x00, 0xa2, 0xff, 0x10, 0x00, 0xba, 0xff, 0x0b, 0x00, 0xd0, 0xff, 0xfe, 0xff, 0xde, 0xff, 0xec, 0xff, 0xe2, 0xff, 0xda, 0xff, 0xdd, 0xff, 0xcd, 0xff, 0xd3, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xce, 0xff, 0xc1, 0xff, 0xd8, 0xff, 0xc5, 0xff, 0xe3, 0xff, 0xd3, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf9, 0xff, 0xdd, 0xff, 0x02, 0x00, 0xcf, 0xff, 0x04, 0x00, 0xc4, 0xff, 0x00, 0x00, 0xbf, 0xff, 0xf9, 0xff, 0xc0, 0xff, 0xf1, 0xff, 0xc7, 0xff, 0xef, 0xff, 0xd1, 0xff, 0xf6, 0xff, 0xd9, 0xff, 0x05, 0x00, 0xdd, 0xff, 0x1c, 0x00, 0xe0, 0xff, 0x37, 0x00, 0xdd, 0xff, 0x4f, 0x00, 0xd7, 0xff, 0x5e, 0x00, 0xd1, 0xff, 0x65, 0x00, 0xcf, 0xff, 0x67, 0x00, 0xcf, 0xff, 0x66, 0x00, 0xd2, 0xff, 0x66, 0x00, 0xda, 0xff, 0x6d, 0x00, 0xe5, 0xff, 0x7e, 0x00, 0xee, 0xff, 0x95, 0x00, 0xf3, 0xff, 0xac, 0x00, 0xf2, 0xff, 0xc0, 0x00, 0xeb, 0xff, 0xc8, 0x00, 0xe2, 0xff, 0xc6, 0x00, 0xdc, 0xff, 0xbd, 0x00, 0xdb, 0xff, 0xae, 0x00, 0xdd, 0xff, 0xa1, 0x00, 0xe4, 0xff, 0x9b, 0x00, 0xef, 0xff, 0xa2, 0x00, 0xfc, 0xff, 0xb1, 0x00, 0x04, 0x00, 0xbf, 0x00, 0x06, 0x00, 0xc3, 0x00, 0x04, 0x00, 0xba, 0x00, 0xfb, 0xff, 0xa0, 0x00, 0xf0, 0xff, 0x7c, 0x00, 0xed, 0xff, 0x5d, 0x00, 0xf2, 0xff, 0x4b, 0x00, 0x01, 0x00, 0x4c, 0x00, 0x14, 0x00, 0x5b, 0x00, 0x25, 0x00, 0x6f, 0x00, 0x2d, 0x00, 0x7c, 0x00, 0x2b, 0x00, 0x7b, 0x00, 0x25, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x55, 0x00, 0x1f, 0x00, 0x39, 0x00, 0x25, 0x00, 0x25, 0x00, 0x31, 0x00, 0x1d, 0x00, 0x3d, 0x00, 0x22, 0x00, 0x45, 0x00, 0x2c, 0x00, 0x45, 0x00, 0x35, 0x00, 0x3e, 0x00, 0x38, 0x00, 0x32, 0x00, 0x33, 0x00, 0x26, 0x00, 0x28, 0x00, 0x20, 0x00, 0x1b, 0x00, 0x21, 0x00, 0x0e, 0x00, 0x23, 0x00, 0x00, 0x00, 0x25, 0x00, 0xf4, 0xff, 0x21, 0x00, 0xe8, 0xff, 0x13, 0x00, 0xdb, 0xff, 0x00, 0x00, 0xce, 0xff, 0xed, 0xff, 0xc4, 0xff, 0xe0, 0xff, 0xbd, 0xff, 0xda, 0xff, 0xba, 0xff, 0xda, 0xff, 0xba, 0xff, 0xdd, 0xff, 0xbb, 0xff, 0xe1, 0xff, 0xbf, 0xff, 0xe1, 0xff, 0xc4, 0xff, 0xda, 0xff, 0xc6, 0xff, 0xce, 0xff, 0xc5, 0xff, 0xbe, 0xff, 0xc3, 0xff, 0xb1, 0xff, 0xc3, 0xff, 0xaa, 0xff, 0xc5, 0xff, 0xac, 0xff, 0xc9, 0xff, 0xb3, 0xff, 0xcf, 0xff, 0xbb, 0xff, 0xd5, 0xff, 0xbf, 0xff, 0xdb, 0xff, 0xbd, 0xff, 0xe0, 0xff, 0xb5, 0xff, 0xe1, 0xff, 0xad, 0xff, 0xe1, 0xff, 0xa9, 0xff, 0xe2, 0xff, 0xac, 0xff, 0xe2, 0xff, 0xb5, 0xff, 0xe6, 0xff, 0xc3, 0xff, 0xed, 0xff, 0xd2, 0xff, 0xf8, 0xff, 0xdc, 0xff, 0x07, 0x00, 0xe3, 0xff, 0x17, 0x00, 0xe5, 0xff, 0x26, 0x00, 0xe0, 0xff, 0x2c, 0x00, 0xd7, 0xff, 0x28, 0x00, 0xcd, 0xff, 0x1f, 0x00, 0xc8, 0xff, 0x19, 0x00, 0xca, 0xff, 0x1b, 0x00, 0xd0, 0xff, 0x24, 0x00, 0xd5, 0xff, 0x31, 0x00, 0xd5, 0xff, 0x3b, 0x00, 0xd0, 0xff, 0x40, 0x00, 0xc7, 0xff, 0x3f, 0x00, 0xbd, 0xff, 0x39, 0x00, 0xb4, 0xff, 0x2f, 0x00, 0xb0, 0xff, 0x28, 0x00, 0xb6, 0xff, 0x29, 0x00, 0xc3, 0xff, 0x2f, 0x00, 0xd0, 0xff, 0x37, 0x00, 0xdc, 0xff, 0x3d, 0x00, 0xe5, 0xff, 0x3e, 0x00, 0xea, 0xff, 0x38, 0x00, 0xe7, 0xff, 0x2b, 0x00, 0xe0, 0xff, 0x18, 0x00, 0xd9, 0xff, 0x05, 0x00, 0xd6, 0xff, 0xf5, 0xff, 0xd7, 0xff, 0xe9, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xe9, 0xff, 0xd6, 0xff, 0xf5, 0xff, 0xce, 0xff, 0xff, 0xff, 0xc6, 0xff, 0x05, 0x00, 0xbe, 0xff, 0x05, 0x00, 0xb6, 0xff, 0xfe, 0xff, 0xaa, 0xff, 0xf2, 0xff, 0x99, 0xff, 0xe6, 0xff, 0x83, 0xff, 0xe0, 0xff, 0x6f, 0xff, 0xe1, 0xff, 0x5e, 0xff, 0xec, 0xff, 0x55, 0xff, 0xfd, 0xff, 0x55, 0xff, 0x0f, 0x00, 0x5c, 0xff, 0x19, 0x00, 0x63, 0xff, 0x18, 0x00, 0x66, 0xff, 0x0f, 0x00, 0x66, 0xff, 0xff, 0xff, 0x61, 0xff, 0xed, 0xff, 0x5b, 0xff, 0xe0, 0xff, 0x56, 0xff, 0xde, 0xff, 0x59, 0xff, 0xe9, 0xff, 0x65, 0xff, 0xfa, 0xff, 0x72, 0xff, 0x07, 0x00, 0x7b, 0xff, 0x0a, 0x00, 0x7f, 0xff, 0x01, 0x00, 0x7b, 0xff, 0xf0, 0xff, 0x76, 0xff, 0xe0, 0xff, 0x75, 0xff, 0xd4, 0xff, 0x78, 0xff, 0xcf, 0xff, 0x7c, 0xff, 0xd2, 0xff, 0x81, 0xff, 0xdd, 0xff, 0x85, 0xff, 0xee, 0xff, 0x89, 0xff, 0xfd, 0xff, 0x8c, 0xff, 0x06, 0x00, 0x8f, 0xff, 0x05, 0x00, 0x8e, 0xff, 0xfe, 0xff, 0x8a, 0xff, 0xf1, 0xff, 0x82, 0xff, 0xe3, 0xff, 0x79, 0xff, 0xdb, 0xff, 0x75, 0xff, 0xd9, 0xff, 0x78, 0xff, 0xdf, 0xff, 0x85, 0xff, 0xeb, 0xff, 0x9c, 0xff, 0xf8, 0xff, 0xb6, 0xff, 0x00, 0x00, 0xca, 0xff, 0xfd, 0xff, 0xd3, 0xff, 0xf1, 0xff, 0xd2, 0xff, 0xe1, 0xff, 0xcc, 0xff, 0xd3, 0xff, 0xca, 0xff, 0xca, 0xff, 0xcf, 0xff, 0xcd, 0xff, 0xe2, 0xff, 0xdb, 0xff, 0x01, 0x00, 0xef, 0xff, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x0c, 0x00, 0x51, 0x00, 0x12, 0x00, 0x56, 0x00, 0x12, 0x00, 0x51, 0x00, 0x10, 0x00, 0x4a, 0x00, 0x12, 0x00, 0x47, 0x00, 0x19, 0x00, 0x4e, 0x00, 0x25, 0x00, 0x5c, 0x00, 0x36, 0x00, 0x6f, 0x00, 0x4a, 0x00, 0x82, 0x00, 0x5c, 0x00, 0x8f, 0x00, 0x6b, 0x00, 0x94, 0x00, 0x73, 0x00, 0x92, 0x00, 0x77, 0x00, 0x8d, 0x00, 0x79, 0x00, 0x89, 0x00, 0x7c, 0x00, 0x87, 0x00, 0x81, 0x00, 0x88, 0x00, 0x85, 0x00, 0x89, 0x00, 0x88, 0x00, 0x87, 0x00, 0x88, 0x00, 0x81, 0x00, 0x85, 0x00, 0x77, 0x00, 0x7f, 0x00, 0x6a, 0x00, 0x78, 0x00, 0x5d, 0x00, 0x6d, 0x00, 0x4f, 0x00, 0x62, 0x00, 0x43, 0x00, 0x58, 0x00, 0x39, 0x00, 0x4e, 0x00, 0x33, 0x00, 0x43, 0x00, 0x2e, 0x00, 0x39, 0x00, 0x2d, 0x00, 0x31, 0x00, 0x2e, 0x00, 0x28, 0x00, 0x2b, 0x00, 0x21, 0x00, 0x23, 0x00, 0x1c, 0x00, 0x17, 0x00, 0x19, 0x00, 0x08, 0x00, 0x18, 0x00, 0xfd, 0xff, 0x18, 0x00, 0xf7, 0xff, 0x17, 0x00, 0xf9, 0xff, 0x10, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfa, 0xff, 0xef, 0xff, 0xef, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xd6, 0xff, 0xcc, 0xff, 0xd2, 0xff, 0xbc, 0xff, 0xd5, 0xff, 0xb2, 0xff, 0xdd, 0xff, 0xb2, 0xff, 0xe7, 0xff, 0xb9, 0xff, 0xea, 0xff, 0xbd, 0xff, 0xe5, 0xff, 0xba, 0xff, 0xd8, 0xff, 0xaf, 0xff, 0xcb, 0xff, 0xa1, 0xff, 0xbf, 0xff, 0x93, 0xff, 0xb6, 0xff, 0x8b, 0xff, 0xb1, 0xff, 0x8c, 0xff, 0xb2, 0xff, 0x94, 0xff, 0xb5, 0xff, 0xa1, 0xff, 0xba, 0xff, 0xad, 0xff, 0xbd, 0xff, 0xb5, 0xff, 0xbe, 0xff, 0xb8, 0xff, 0xbc, 0xff, 0xb6, 0xff, 0xba, 0xff, 0xb2, 0xff, 0xb9, 0xff, 0xb2, 0xff, 0xb9, 0xff, 0xb4, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xbd, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xc8, 0xff, 0xc7, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xda, 0xff, 0xd4, 0xff, 0xe3, 0xff, 0xda, 0xff, 0xec, 0xff, 0xdd, 0xff, 0xf0, 0xff, 0xde, 0xff, 0xf1, 0xff, 0xde, 0xff, 0xee, 0xff, 0xdf, 0xff, 0xeb, 0xff, 0xe2, 0xff, 0xed, 0xff, 0xed, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x12, 0x00, 0x10, 0x00, 0x2e, 0x00, 0x1e, 0x00, 0x45, 0x00, 0x28, 0x00, 0x52, 0x00, 0x31, 0x00, 0x56, 0x00, 0x38, 0x00, 0x51, 0x00, 0x3f, 0x00, 0x4b, 0x00, 0x48, 0x00, 0x4c, 0x00, 0x55, 0x00, 0x57, 0x00, 0x64, 0x00, 0x6b, 0x00, 0x73, 0x00, 0x7f, 0x00, 0x81, 0x00, 0x90, 0x00, 0x8b, 0x00, 0x96, 0x00, 0x8e, 0x00, 0x91, 0x00, 0x88, 0x00, 0x81, 0x00, 0x7e, 0x00, 0x6f, 0x00, 0x77, 0x00, 0x64, 0x00, 0x72, 0x00, 0x61, 0x00, 0x71, 0x00, 0x67, 0x00, 0x74, 0x00, 0x70, 0x00, 0x7a, 0x00, 0x78, 0x00, 0x81, 0x00, 0x7a, 0x00, 0x85, 0x00, 0x74, 0x00, 0x83, 0x00, 0x65, 0x00, 0x78, 0x00, 0x52, 0x00, 0x67, 0x00, 0x40, 0x00, 0x56, 0x00, 0x34, 0x00, 0x48, 0x00, 0x32, 0x00, 0x3d, 0x00, 0x35, 0x00, 0x37, 0x00, 0x3b, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x2e, 0x00, 0x3a, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x1e, 0x00, 0x1b, 0x00, 0x14, 0x00, 0x08, 0x00, 0x0c, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfb, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xf1, 0xff, 0x06, 0x00, 0xde, 0xff, 0x0a, 0x00, 0xc9, 0xff, 0x09, 0x00, 0xb3, 0xff, 0x02, 0x00, 0xa1, 0xff, 0xf6, 0xff, 0x95, 0xff, 0xe7, 0xff, 0x8e, 0xff, 0xd8, 0xff, 0x8e, 0xff, 0xd2, 0xff, 0x90, 0xff, 0xd5, 0xff, 0x92, 0xff, 0xe2, 0xff, 0x8e, 0xff, 0xf0, 0xff, 0x84, 0xff, 0xf8, 0xff, 0x75, 0xff, 0xf5, 0xff, 0x68, 0xff, 0xe9, 0xff, 0x63, 0xff, 0xd9, 0xff, 0x68, 0xff, 0xcd, 0xff, 0x73, 0xff, 0xca, 0xff, 0x7f, 0xff, 0xce, 0xff, 0x87, 0xff, 0xd7, 0xff, 0x8a, 0xff, 0xe2, 0xff, 0x8a, 0xff, 0xec, 0xff, 0x88, 0xff, 0xef, 0xff, 0x87, 0xff, 0xe8, 0xff, 0x8b, 0xff, 0xd9, 0xff, 0x95, 0xff, 0xc9, 0xff, 0xa4, 0xff, 0xbd, 0xff, 0xb2, 0xff, 0xb9, 0xff, 0xbd, 0xff, 0xbe, 0xff, 0xc1, 0xff, 0xc9, 0xff, 0xc1, 0xff, 0xd3, 0xff, 0xc0, 0xff, 0xda, 0xff, 0xc5, 0xff, 0xdd, 0xff, 0xcf, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd7, 0xff, 0xed, 0xff, 0xd0, 0xff, 0xfc, 0xff, 0xc9, 0xff, 0x0b, 0x00, 0xc8, 0xff, 0x18, 0x00, 0xce, 0xff, 0x23, 0x00, 0xdc, 0xff, 0x2e, 0x00, 0xef, 0xff, 0x34, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x0c, 0x00, 0x40, 0x00, 0x10, 0x00, 0x48, 0x00, 0x0f, 0x00, 0x56, 0x00, 0x0f, 0x00, 0x67, 0x00, 0x13, 0x00, 0x7b, 0x00, 0x1e, 0x00, 0x8e, 0x00, 0x2f, 0x00, 0x9c, 0x00, 0x42, 0x00, 0xa3, 0x00, 0x53, 0x00, 0xa5, 0x00, 0x5e, 0x00, 0xa2, 0x00, 0x62, 0x00, 0x9e, 0x00, 0x5f, 0x00, 0x9b, 0x00, 0x5b, 0x00, 0x9d, 0x00, 0x5a, 0x00, 0xa2, 0x00, 0x5d, 0x00, 0xa6, 0x00, 0x63, 0x00, 0xa8, 0x00, 0x6b, 0x00, 0xa2, 0x00, 0x70, 0x00, 0x94, 0x00, 0x6e, 0x00, 0x7e, 0x00, 0x65, 0x00, 0x68, 0x00, 0x58, 0x00, 0x58, 0x00, 0x4d, 0x00, 0x51, 0x00, 0x47, 0x00, 0x50, 0x00, 0x43, 0x00, 0x4f, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x42, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x24, 0x00, 0x31, 0x00, 0x09, 0x00, 0x23, 0x00, 0xf2, 0xff, 0x16, 0x00, 0xe2, 0xff, 0x0c, 0x00, 0xda, 0xff, 0x07, 0x00, 0xd9, 0xff, 0x06, 0x00, 0xdb, 0xff, 0x07, 0x00, 0xda, 0xff, 0x0a, 0x00, 0xd6, 0xff, 0x0e, 0x00, 0xcf, 0xff, 0x12, 0x00, 0xc6, 0xff, 0x14, 0x00, 0xbc, 0xff, 0x11, 0x00, 0xb1, 0xff, 0x08, 0x00, 0xa6, 0xff, 0xfb, 0xff, 0x9f, 0xff, 0xee, 0xff, 0x9c, 0xff, 0xe8, 0xff, 0x9a, 0xff, 0xe8, 0xff, 0x9c, 0xff, 0xef, 0xff, 0xa0, 0xff, 0xfc, 0xff, 0xa4, 0xff, 0x09, 0x00, 0xa5, 0xff, 0x10, 0x00, 0xa1, 0xff, 0x0e, 0x00, 0x9a, 0xff, 0x03, 0x00, 0x90, 0xff, 0xf1, 0xff, 0x88, 0xff, 0xe2, 0xff, 0x84, 0xff, 0xd8, 0xff, 0x87, 0xff, 0xd6, 0xff, 0x8d, 0xff, 0xdb, 0xff, 0x95, 0xff, 0xe1, 0xff, 0x9b, 0xff, 0xe6, 0xff, 0x9d, 0xff, 0xe8, 0xff, 0x9e, 0xff, 0xe7, 0xff, 0x9e, 0xff, 0xe6, 0xff, 0xa1, 0xff, 0xe6, 0xff, 0xab, 0xff, 0xe8, 0xff, 0xbc, 0xff, 0xed, 0xff, 0xd2, 0xff, 0xf5, 0xff, 0xe7, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x14, 0x00, 0xfd, 0xff, 0x1c, 0x00, 0xfd, 0xff, 0x21, 0x00, 0x00, 0x00, 0x23, 0x00, 0x08, 0x00, 0x22, 0x00, 0x16, 0x00, 0x22, 0x00, 0x28, 0x00, 0x25, 0x00, 0x39, 0x00, 0x2d, 0x00, 0x45, 0x00, 0x38, 0x00, 0x49, 0x00, 0x42, 0x00, 0x47, 0x00, 0x49, 0x00, 0x43, 0x00, 0x4a, 0x00, 0x42, 0x00, 0x45, 0x00, 0x44, 0x00, 0x3c, 0x00, 0x4a, 0x00, 0x35, 0x00, 0x53, 0x00, 0x35, 0x00, 0x5b, 0x00, 0x3b, 0x00, 0x5f, 0x00, 0x44, 0x00, 0x5f, 0x00, 0x4e, 0x00, 0x5b, 0x00, 0x53, 0x00, 0x55, 0x00, 0x52, 0x00, 0x50, 0x00, 0x4a, 0x00, 0x4e, 0x00, 0x41, 0x00, 0x50, 0x00, 0x3b, 0x00, 0x54, 0x00, 0x38, 0x00, 0x56, 0x00, 0x39, 0x00, 0x56, 0x00, 0x3e, 0x00, 0x52, 0x00, 0x44, 0x00, 0x45, 0x00, 0x44, 0x00, 0x35, 0x00, 0x3e, 0x00, 0x24, 0x00, 0x33, 0x00, 0x16, 0x00, 0x24, 0x00, 0x0d, 0x00, 0x16, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x03, 0x00, 0x08, 0x00, 0xf1, 0xff, 0x05, 0x00, 0xda, 0xff, 0xfd, 0xff, 0xc1, 0xff, 0xef, 0xff, 0xac, 0xff, 0xdc, 0xff, 0x9e, 0xff, 0xc9, 0xff, 0x9a, 0xff, 0xbb, 0xff, 0x9b, 0xff, 0xb2, 0xff, 0x9c, 0xff, 0xaf, 0xff, 0x96, 0xff, 0xb0, 0xff, 0x86, 0xff, 0xb2, 0xff, 0x70, 0xff, 0xb3, 0xff, 0x57, 0xff, 0xad, 0xff, 0x45, 0xff, 0xa3, 0xff, 0x3e, 0xff, 0x96, 0xff, 0x41, 0xff, 0x87, 0xff, 0x4a, 0xff, 0x78, 0xff, 0x51, 0xff, 0x6d, 0xff, 0x52, 0xff, 0x69, 0xff, 0x4e, 0xff, 0x6d, 0xff, 0x47, 0xff, 0x76, 0xff, 0x43, 0xff, 0x7e, 0xff, 0x48, 0xff, 0x82, 0xff, 0x57, 0xff, 0x7f, 0xff, 0x6f, 0xff, 0x78, 0xff, 0x89, 0xff, 0x6f, 0xff, 0xa1, 0xff, 0x68, 0xff, 0xb1, 0xff, 0x64, 0xff, 0xbc, 0xff, 0x65, 0xff, 0xc3, 0xff, 0x69, 0xff, 0xca, 0xff, 0x6e, 0xff, 0xd7, 0xff, 0x74, 0xff, 0xec, 0xff, 0x79, 0xff, 0x07, 0x00, 0x7d, 0xff, 0x20, 0x00, 0x7c, 0xff, 0x34, 0x00, 0x76, 0xff, 0x42, 0x00, 0x71, 0xff, 0x4e, 0x00, 0x71, 0xff, 0x59, 0x00, 0x78, 0xff, 0x63, 0x00, 0x83, 0xff, 0x6d, 0x00, 0x91, 0xff, 0x77, 0x00, 0x9c, 0xff, 0x81, 0x00, 0xa4, 0xff, 0x8c, 0x00, 0xa8, 0xff, 0x96, 0x00, 0xaa, 0xff, 0x9f, 0x00, 0xac, 0xff, 0xa8, 0x00, 0xb2, 0xff, 0xb2, 0x00, 0xbe, 0xff, 0xbc, 0x00, 0xd3, 0xff, 0xc5, 0x00, 0xed, 0xff, 0xca, 0x00, 0x08, 0x00, 0xcc, 0x00, 0x1e, 0x00, 0xcd, 0x00, 0x2b, 0x00, 0xcd, 0x00, 0x2f, 0x00, 0xcd, 0x00, 0x2d, 0x00, 0xcf, 0x00, 0x2c, 0x00, 0xd2, 0x00, 0x2f, 0x00, 0xd5, 0x00, 0x3a, 0x00, 0xd7, 0x00, 0x4c, 0x00, 0xd6, 0x00, 0x5f, 0x00, 0xd0, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x78, 0x00, 0xbe, 0x00, 0x79, 0x00, 0xb1, 0x00, 0x72, 0x00, 0xa1, 0x00, 0x65, 0x00, 0x91, 0x00, 0x58, 0x00, 0x84, 0x00, 0x50, 0x00, 0x79, 0x00, 0x4b, 0x00, 0x6f, 0x00, 0x4c, 0x00, 0x64, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x51, 0x00, 0x43, 0x00, 0x50, 0x00, 0x30, 0x00, 0x4c, 0x00, 0x1d, 0x00, 0x44, 0x00, 0x0b, 0x00, 0x3a, 0x00, 0xfe, 0xff, 0x31, 0x00, 0xf3, 0xff, 0x2c, 0x00, 0xe8, 0xff, 0x2a, 0x00, 0xda, 0xff, 0x2b, 0x00, 0xc8, 0xff, 0x2d, 0x00, 0xb5, 0xff, 0x30, 0x00, 0xa3, 0xff, 0x2e, 0x00, 0x93, 0xff, 0x27, 0x00, 0x89, 0xff, 0x1d, 0x00, 0x84, 0xff, 0x10, 0x00, 0x82, 0xff, 0x05, 0x00, 0x81, 0xff, 0xff, 0xff, 0x7c, 0xff, 0xfe, 0xff, 0x72, 0xff, 0x01, 0x00, 0x65, 0xff, 0x02, 0x00, 0x59, 0xff, 0x01, 0x00, 0x54, 0xff, 0xfb, 0xff, 0x56, 0xff, 0xf2, 0xff, 0x5e, 0xff, 0xe8, 0xff, 0x68, 0xff, 0xe2, 0xff, 0x71, 0xff, 0xde, 0xff, 0x72, 0xff, 0xd9, 0xff, 0x6f, 0xff, 0xd5, 0xff, 0x6b, 0xff, 0xd0, 0xff, 0x68, 0xff, 0xcb, 0xff, 0x6c, 0xff, 0xc8, 0xff, 0x76, 0xff, 0xc6, 0xff, 0x81, 0xff, 0xc6, 0xff, 0x8a, 0xff, 0xc6, 0xff, 0x8f, 0xff, 0xc8, 0xff, 0x91, 0xff, 0xca, 0xff, 0x92, 0xff, 0xc9, 0xff, 0x96, 0xff, 0xc9, 0xff, 0xa1, 0xff, 0xcb, 0xff, 0xb4, 0xff, 0xd2, 0xff, 0xcb, 0xff, 0xdc, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x09, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x14, 0x00, 0x22, 0x00, 0x1c, 0x00, 0x30, 0x00, 0x26, 0x00, 0x43, 0x00, 0x30, 0x00, 0x59, 0x00, 0x3a, 0x00, 0x6c, 0x00, 0x40, 0x00, 0x78, 0x00, 0x41, 0x00, 0x7c, 0x00, 0x3f, 0x00, 0x7d, 0x00, 0x3f, 0x00, 0x7c, 0x00, 0x42, 0x00, 0x7c, 0x00, 0x4a, 0x00, 0x7e, 0x00, 0x51, 0x00, 0x81, 0x00, 0x54, 0x00, 0x85, 0x00, 0x55, 0x00, 0x88, 0x00, 0x51, 0x00, 0x89, 0x00, 0x4b, 0x00, 0x85, 0x00, 0x47, 0x00, 0x7d, 0x00, 0x47, 0x00, 0x71, 0x00, 0x4b, 0x00, 0x66, 0x00, 0x55, 0x00, 0x5d, 0x00, 0x60, 0x00, 0x56, 0x00, 0x65, 0x00, 0x51, 0x00, 0x65, 0x00, 0x4b, 0x00, 0x5e, 0x00, 0x3f, 0x00, 0x54, 0x00, 0x2f, 0x00, 0x4d, 0x00, 0x18, 0x00, 0x48, 0x00, 0x01, 0x00, 0x46, 0x00, 0xed, 0xff, 0x45, 0x00, 0xe2, 0xff, 0x44, 0x00, 0xe0, 0xff, 0x41, 0x00, 0xe0, 0xff, 0x3b, 0x00, 0xdd, 0xff, 0x2f, 0x00, 0xd2, 0xff, 0x21, 0x00, 0xbf, 0xff, 0x13, 0x00, 0xa7, 0xff, 0x06, 0x00, 0x8f, 0xff, 0xfd, 0xff, 0x7e, 0xff, 0xfa, 0xff, 0x77, 0xff, 0xfb, 0xff, 0x78, 0xff, 0xff, 0xff, 0x80, 0xff, 0x05, 0x00, 0x89, 0xff, 0x08, 0x00, 0x8d, 0xff, 0x06, 0x00, 0x8c, 0xff, 0xfe, 0xff, 0x86, 0xff, 0xef, 0xff, 0x7e, 0xff, 0xdf, 0xff, 0x79, 0xff, 0xd3, 0xff, 0x79, 0xff, 0xcf, 0xff, 0x7e, 0xff, 0xd1, 0xff, 0x86, 0xff, 0xd7, 0xff, 0x90, 0xff, 0xdd, 0xff, 0x9a, 0xff, 0xdc, 0xff, 0x9e, 0xff, 0xd0, 0xff, 0x9f, 0xff, 0xbe, 0xff, 0xa1, 0xff, 0xaa, 0xff, 0xa3, 0xff, 0x9a, 0xff, 0xa6, 0xff, 0x91, 0xff, 0xaa, 0xff, 0x90, 0xff, 0xb3, 0xff, 0x95, 0xff, 0xbf, 0xff, 0x9a, 0xff, 0xcc, 0xff, 0x9a, 0xff, 0xd8, 0xff, 0x92, 0xff, 0xe0, 0xff, 0x87, 0xff, 0xe4, 0xff, 0x7b, 0xff, 0xe3, 0xff, 0x72, 0xff, 0xe1, 0xff, 0x70, 0xff, 0xe1, 0xff, 0x75, 0xff, 0xe5, 0xff, 0x7f, 0xff, 0xef, 0xff, 0x8b, 0xff, 0xfc, 0xff, 0x93, 0xff, 0x0b, 0x00, 0x98, 0xff, 0x18, 0x00, 0x9a, 0xff, 0x21, 0x00, 0x9c, 0xff, 0x24, 0x00, 0xa1, 0xff, 0x26, 0x00, 0xac, 0xff, 0x2a, 0x00, 0xbc, 0xff, 0x32, 0x00, 0xcf, 0xff, 0x3e, 0x00, 0xe2, 0xff, 0x4c, 0x00, 0xf4, 0xff, 0x5a, 0x00, 0x04, 0x00, 0x66, 0x00, 0x13, 0x00, 0x6c, 0x00, 0x21, 0x00, 0x6e, 0x00, 0x2f, 0x00, 0x6f, 0x00, 0x3c, 0x00, 0x72, 0x00, 0x49, 0x00, 0x77, 0x00, 0x53, 0x00, 0x7f, 0x00, 0x5a, 0x00, 0x88, 0x00, 0x5f, 0x00, 0x92, 0x00, 0x63, 0x00, 0x99, 0x00, 0x66, 0x00, 0x9c, 0x00, 0x69, 0x00, 0x9c, 0x00, 0x6a, 0x00, 0x98, 0x00, 0x69, 0x00, 0x90, 0x00, 0x65, 0x00, 0x85, 0x00, 0x5e, 0x00, 0x79, 0x00, 0x54, 0x00, 0x6f, 0x00, 0x4a, 0x00, 0x69, 0x00, 0x42, 0x00, 0x66, 0x00, 0x3a, 0x00, 0x62, 0x00, 0x33, 0x00, 0x5a, 0x00, 0x2e, 0x00, 0x4d, 0x00, 0x2c, 0x00, 0x39, 0x00, 0x2d, 0x00, 0x21, 0x00, 0x2e, 0x00, 0x07, 0x00, 0x30, 0x00, 0xf0, 0xff, 0x31, 0x00, 0xe0, 0xff, 0x32, 0x00, 0xda, 0xff, 0x32, 0x00, 0xdc, 0xff, 0x31, 0x00, 0xe0, 0xff, 0x30, 0x00, 0xe0, 0xff, 0x2e, 0x00, 0xd7, 0xff, 0x2e, 0x00, 0xc4, 0xff, 0x2f, 0x00, 0xac, 0xff, 0x2f, 0x00, 0x97, 0xff, 0x30, 0x00, 0x8d, 0xff, 0x32, 0x00, 0x8c, 0xff, 0x31, 0x00, 0x91, 0xff, 0x2a, 0x00, 0x99, 0xff, 0x1e, 0x00, 0x9d, 0xff, 0x0f, 0x00, 0x97, 0xff, 0xff, 0xff, 0x88, 0xff, 0xf1, 0xff, 0x76, 0xff, 0xe9, 0xff, 0x68, 0xff, 0xe7, 0xff, 0x61, 0xff, 0xeb, 0xff, 0x65, 0xff, 0xf1, 0xff, 0x71, 0xff, 0xf7, 0xff, 0x80, 0xff, 0xf9, 0xff, 0x8c, 0xff, 0xf5, 0xff, 0x92, 0xff, 0xee, 0xff, 0x91, 0xff, 0xe8, 0xff, 0x8d, 0xff, 0xe7, 0xff, 0x8a, 0xff, 0xec, 0xff, 0x8b, 0xff, 0xf6, 0xff, 0x93, 0xff, 0x01, 0x00, 0xa0, 0xff, 0x09, 0x00, 0xaf, 0xff, 0x0c, 0x00, 0xbe, 0xff, 0x09, 0x00, 0xcb, 0xff, 0x03, 0x00, 0xd4, 0xff, 0xfc, 0xff, 0xdb, 0xff, 0xf9, 0xff, 0xe1, 0xff, 0xfc, 0xff, 0xe6, 0xff, 0x03, 0x00, 0xea, 0xff, 0x0a, 0x00, 0xef, 0xff, 0x0f, 0x00, 0xfb, 0xff, 0x12, 0x00, 0x0b, 0x00, 0x10, 0x00, 0x1d, 0x00, 0x08, 0x00, 0x2e, 0x00, 0xff, 0xff, 0x39, 0x00, 0xf6, 0xff, 0x3e, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0xee, 0xff, 0x40, 0x00, 0xf2, 0xff, 0x45, 0x00, 0xf8, 0xff, 0x4d, 0x00, 0xfd, 0xff, 0x58, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x72, 0x00, 0xfd, 0xff, 0x78, 0x00, 0xf7, 0xff, 0x77, 0x00, 0xf1, 0xff, 0x71, 0x00, 0xee, 0xff, 0x6c, 0x00, 0xf2, 0xff, 0x6a, 0x00, 0xfc, 0xff, 0x6c, 0x00, 0x08, 0x00, 0x70, 0x00, 0x11, 0x00, 0x74, 0x00, 0x16, 0x00, 0x76, 0x00, 0x16, 0x00, 0x74, 0x00, 0x13, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x61, 0x00, 0x0e, 0x00, 0x55, 0x00, 0x11, 0x00, 0x4a, 0x00, 0x15, 0x00, 0x40, 0x00, 0x19, 0x00, 0x37, 0x00, 0x1c, 0x00, 0x30, 0x00, 0x19, 0x00, 0x27, 0x00, 0x10, 0x00, 0x1c, 0x00, 0x03, 0x00, 0x10, 0x00, 0xf3, 0xff, 0x03, 0x00, 0xe6, 0xff, 0xf9, 0xff, 0xe1, 0xff, 0xf0, 0xff, 0xe3, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xf1, 0xff, 0xd9, 0xff, 0xf3, 0xff, 0xd2, 0xff, 0xef, 0xff, 0xcc, 0xff, 0xe7, 0xff, 0xc9, 0xff, 0xde, 0xff, 0xc7, 0xff, 0xd7, 0xff, 0xc4, 0xff, 0xd1, 0xff, 0xc0, 0xff, 0xcf, 0xff, 0xbb, 0xff, 0xd1, 0xff, 0xb8, 0xff, 0xd6, 0xff, 0xb5, 0xff, 0xda, 0xff, 0xb5, 0xff, 0xdd, 0xff, 0xb7, 0xff, 0xde, 0xff, 0xbc, 0xff, 0xdc, 0xff, 0xc3, 0xff, 0xd7, 0xff, 0xc7, 0xff, 0xcf, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc5, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc9, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xdc, 0xff, 0xd4, 0xff, 0xe7, 0xff, 0xd3, 0xff, 0xeb, 0xff, 0xce, 0xff, 0xea, 0xff, 0xc9, 0xff, 0xe9, 0xff, 0xca, 0xff, 0xec, 0xff, 0xd0, 0xff, 0xf3, 0xff, 0xd8, 0xff, 0xfd, 0xff, 0xde, 0xff, 0x07, 0x00, 0xe0, 0xff, 0x10, 0x00, 0xdf, 0xff, 0x16, 0x00, 0xdb, 0xff, 0x1a, 0x00, 0xd8, 0xff, 0x1c, 0x00, 0xd9, 0xff, 0x1c, 0x00, 0xdf, 0xff, 0x1d, 0x00, 0xe7, 0xff, 0x24, 0x00, 0xf1, 0xff, 0x31, 0x00, 0xfb, 0xff, 0x41, 0x00, 0xff, 0xff, 0x50, 0x00, 0xfe, 0xff, 0x5b, 0x00, 0xfc, 0xff, 0x62, 0x00, 0xfc, 0xff, 0x66, 0x00, 0xff, 0xff, 0x6b, 0x00, 0x07, 0x00, 0x70, 0x00, 0x11, 0x00, 0x76, 0x00, 0x1a, 0x00, 0x7d, 0x00, 0x21, 0x00, 0x83, 0x00, 0x22, 0x00, 0x87, 0x00, 0x1e, 0x00, 0x88, 0x00, 0x18, 0x00, 0x84, 0x00, 0x12, 0x00, 0x7d, 0x00, 0x10, 0x00, 0x76, 0x00, 0x13, 0x00, 0x6e, 0x00, 0x18, 0x00, 0x68, 0x00, 0x1e, 0x00, 0x62, 0x00, 0x23, 0x00, 0x5e, 0x00, 0x27, 0x00, 0x5a, 0x00, 0x2a, 0x00, 0x55, 0x00, 0x2a, 0x00, 0x4d, 0x00, 0x28, 0x00, 0x40, 0x00, 0x25, 0x00, 0x32, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x1b, 0x00, 0x2c, 0x00, 0x16, 0x00, 0x34, 0x00, 0x13, 0x00, 0x3c, 0x00, 0x0f, 0x00, 0x42, 0x00, 0x0b, 0x00, 0x46, 0x00, 0x05, 0x00, 0x47, 0x00, 0xfb, 0xff, 0x44, 0x00, 0xed, 0xff, 0x3f, 0x00, 0xde, 0xff, 0x3b, 0x00, 0xcf, 0xff, 0x38, 0x00, 0xc2, 0xff, 0x39, 0x00, 0xba, 0xff, 0x3c, 0x00, 0xb5, 0xff, 0x3e, 0x00, 0xb1, 0xff, 0x3d, 0x00, 0xab, 0xff, 0x36, 0x00, 0xa2, 0xff, 0x2b, 0x00, 0x97, 0xff, 0x1e, 0x00, 0x8a, 0xff, 0x14, 0x00, 0x81, 0xff, 0x10, 0x00, 0x7b, 0xff, 0x11, 0x00, 0x78, 0xff, 0x17, 0x00, 0x78, 0xff, 0x1d, 0x00, 0x7a, 0xff, 0x21, 0x00, 0x7c, 0xff, 0x1f, 0x00, 0x7d, 0xff, 0x18, 0x00, 0x7e, 0xff, 0x10, 0x00, 0x7f, 0xff, 0x0a, 0x00, 0x80, 0xff, 0x04, 0x00, 0x82, 0xff, 0x02, 0x00, 0x86, 0xff, 0x04, 0x00, 0x8c, 0xff, 0x08, 0x00, 0x92, 0xff, 0x0b, 0x00, 0x9a, 0xff, 0x0b, 0x00, 0xa5, 0xff, 0x09, 0x00, 0xb1, 0xff, 0x03, 0x00, 0xbe, 0xff, 0xfb, 0xff, 0xcd, 0xff, 0xf5, 0xff, 0xde, 0xff, 0xf2, 0xff, 0xef, 0xff, 0xf4, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x0e, 0x00, 0xff, 0xff, 0x1c, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x09, 0x00, 0x3a, 0x00, 0x08, 0x00, 0x47, 0x00, 0x02, 0x00, 0x4e, 0x00, 0xf7, 0xff, 0x4f, 0x00, 0xec, 0xff, 0x4b, 0x00, 0xe3, 0xff, 0x44, 0x00, 0xde, 0xff, 0x3f, 0x00, 0xdc, 0xff, 0x3f, 0x00, 0xde, 0xff, 0x46, 0x00, 0xe5, 0xff, 0x51, 0x00, 0xed, 0xff, 0x59, 0x00, 0xf0, 0xff, 0x5d, 0x00, 0xef, 0xff, 0x5b, 0x00, 0xea, 0xff, 0x51, 0x00, 0xe2, 0xff, 0x44, 0x00, 0xde, 0xff, 0x3a, 0x00, 0xdf, 0xff, 0x37, 0x00, 0xe6, 0xff, 0x3c, 0x00, 0xef, 0xff, 0x46, 0x00, 0xf9, 0xff, 0x52, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x05, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x55, 0x00, 0x04, 0x00, 0x4a, 0x00, 0xff, 0xff, 0x40, 0x00, 0xfc, 0xff, 0x3b, 0x00, 0xfe, 0xff, 0x3d, 0x00, 0x04, 0x00, 0x45, 0x00, 0x0e, 0x00, 0x4c, 0x00, 0x17, 0x00, 0x4e, 0x00, 0x1b, 0x00, 0x48, 0x00, 0x1a, 0x00, 0x3a, 0x00, 0x16, 0x00, 0x2a, 0x00, 0x11, 0x00, 0x1c, 0x00, 0x0f, 0x00, 0x14, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0d, 0x00, 0x12, 0x00, 0x0b, 0x00, 0x13, 0x00, 0x05, 0x00, 0x13, 0x00, 0xfc, 0xff, 0x13, 0x00, 0xed, 0xff, 0x11, 0x00, 0xda, 0xff, 0x0e, 0x00, 0xc7, 0xff, 0x0a, 0x00, 0xb7, 0xff, 0x05, 0x00, 0xac, 0xff, 0x00, 0x00, 0xa4, 0xff, 0xf8, 0xff, 0x9c, 0xff, 0xf0, 0xff, 0x92, 0xff, 0xe9, 0xff, 0x88, 0xff, 0xe6, 0xff, 0x7d, 0xff, 0xe6, 0xff, 0x71, 0xff, 0xe6, 0xff, 0x67, 0xff, 0xe5, 0xff, 0x61, 0xff, 0xe1, 0xff, 0x60, 0xff, 0xdd, 0xff, 0x64, 0xff, 0xda, 0xff, 0x6a, 0xff, 0xd8, 0xff, 0x71, 0xff, 0xd9, 0xff, 0x77, 0xff, 0xdb, 0xff, 0x79, 0xff, 0xdb, 0xff, 0x79, 0xff, 0xda, 0xff, 0x7a, 0xff, 0xda, 0xff, 0x7e, 0xff, 0xd9, 0xff, 0x86, 0xff, 0xd9, 0xff, 0x93, 0xff, 0xd9, 0xff, 0xa4, 0xff, 0xd9, 0xff, 0xb4, 0xff, 0xd8, 0xff, 0xc2, 0xff, 0xd5, 0xff, 0xcd, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xce, 0xff, 0xd6, 0xff, 0xca, 0xff, 0xd9, 0xff, 0xc8, 0xff, 0xdf, 0xff, 0xc9, 0xff, 0xe8, 0xff, 0xcb, 0xff, 0xf4, 0xff, 0xcd, 0xff, 0x02, 0x00, 0xcc, 0xff, 0x10, 0x00, 0xc8, 0xff, 0x1b, 0x00, 0xc2, 0xff, 0x22, 0x00, 0xbc, 0xff, 0x28, 0x00, 0xb8, 0xff, 0x2c, 0x00, 0xba, 0xff, 0x2f, 0x00, 0xbe, 0xff, 0x32, 0x00, 0xc5, 0xff, 0x38, 0x00, 0xca, 0xff, 0x3f, 0x00, 0xcf, 0xff, 0x49, 0x00, 0xd2, 0xff, 0x52, 0x00, 0xd2, 0xff, 0x5a, 0x00, 0xd1, 0xff, 0x62, 0x00, 0xd2, 0xff, 0x69, 0x00, 0xd5, 0xff, 0x6e, 0x00, 0xda, 0xff, 0x6f, 0x00, 0xe0, 0xff, 0x71, 0x00, 0xe6, 0xff, 0x73, 0x00, 0xec, 0xff, 0x78, 0x00, 0xf2, 0xff, 0x7f, 0x00, 0xf7, 0xff, 0x86, 0x00, 0xfc, 0xff, 0x8b, 0x00, 0x01, 0x00, 0x8d, 0x00, 0x05, 0x00, 0x89, 0x00, 0x09, 0x00, 0x7f, 0x00, 0x0b, 0x00, 0x74, 0x00, 0x0e, 0x00, 0x6a, 0x00, 0x13, 0x00, 0x64, 0x00, 0x1a, 0x00, 0x61, 0x00, 0x25, 0x00, 0x5f, 0x00, 0x30, 0x00, 0x5a, 0x00, 0x39, 0x00, 0x4f, 0x00, 0x3d, 0x00, 0x3f, 0x00, 0x3d, 0x00, 0x2c, 0x00, 0x3b, 0x00, 0x19, 0x00, 0x3c, 0x00, 0x0a, 0x00, 0x41, 0x00, 0xfe, 0xff, 0x48, 0x00, 0xf8, 0xff, 0x52, 0x00, 0xf8, 0xff, 0x5d, 0x00, 0xfa, 0xff, 0x66, 0x00, 0xfa, 0xff, 0x6a, 0x00, 0xf2, 0xff, 0x67, 0x00, 0xe4, 0xff, 0x5e, 0x00, 0xd3, 0xff, 0x53, 0x00, 0xc4, 0xff, 0x4c, 0x00, 0xbb, 0xff, 0x49, 0x00, 0xba, 0xff, 0x4b, 0x00, 0xbe, 0xff, 0x4f, 0x00, 0xc3, 0xff, 0x50, 0x00, 0xc6, 0xff, 0x4e, 0x00, 0xc5, 0xff, 0x49, 0x00, 0xbe, 0xff, 0x42, 0x00, 0xb2, 0xff, 0x39, 0x00, 0xa5, 0xff, 0x30, 0x00, 0x99, 0xff, 0x26, 0x00, 0x94, 0xff, 0x1f, 0x00, 0x95, 0xff, 0x1b, 0x00, 0x9b, 0xff, 0x1c, 0x00, 0xa2, 0xff, 0x1f, 0x00, 0xa4, 0xff, 0x22, 0x00, 0xa0, 0xff, 0x23, 0x00, 0x99, 0xff, 0x21, 0x00, 0x91, 0xff, 0x1c, 0x00, 0x8d, 0xff, 0x12, 0x00, 0x8e, 0xff, 0x07, 0x00, 0x94, 0xff, 0xfe, 0xff, 0x9e, 0xff, 0xfb, 0xff, 0xa9, 0xff, 0xfd, 0xff, 0xb3, 0xff, 0x05, 0x00, 0xbc, 0xff, 0x0d, 0x00, 0xc4, 0xff, 0x13, 0x00, 0xcc, 0xff, 0x14, 0x00, 0xd5, 0xff, 0x0e, 0x00, 0xdf, 0xff, 0x04, 0x00, 0xeb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xf5, 0xff, 0x0b, 0x00, 0xf5, 0xff, 0x1a, 0x00, 0xf8, 0xff, 0x26, 0x00, 0xfc, 0xff, 0x30, 0x00, 0xfd, 0xff, 0x39, 0x00, 0xfb, 0xff, 0x41, 0x00, 0xf7, 0xff, 0x4a, 0x00, 0xf2, 0xff, 0x53, 0x00, 0xee, 0xff, 0x5b, 0x00, 0xea, 0xff, 0x61, 0x00, 0xe6, 0xff, 0x64, 0x00, 0xe3, 0xff, 0x66, 0x00, 0xe1, 0xff, 0x65, 0x00, 0xe0, 0xff, 0x64, 0x00, 0xde, 0xff, 0x65, 0x00, 0xdc, 0xff, 0x66, 0x00, 0xdb, 0xff, 0x67, 0x00, 0xdb, 0xff, 0x6a, 0x00, 0xdc, 0xff, 0x6c, 0x00, 0xde, 0xff, 0x6c, 0x00, 0xe0, 0xff, 0x68, 0x00, 0xe0, 0xff, 0x61, 0x00, 0xde, 0xff, 0x58, 0x00, 0xda, 0xff, 0x50, 0x00, 0xd8, 0xff, 0x4a, 0x00, 0xd9, 0xff, 0x47, 0x00, 0xdd, 0xff, 0x45, 0x00, 0xe4, 0xff, 0x43, 0x00, 0xea, 0xff, 0x41, 0x00, 0xee, 0xff, 0x3e, 0x00, 0xf0, 0xff, 0x3a, 0x00, 0xf0, 0xff, 0x33, 0x00, 0xef, 0xff, 0x2c, 0x00, 0xee, 0xff, 0x24, 0x00, 0xed, 0xff, 0x1e, 0x00, 0xf0, 0xff, 0x1b, 0x00, 0xf4, 0xff, 0x1c, 0x00, 0xfa, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x04, 0x00, 0x23, 0x00, 0x08, 0x00, 0x1f, 0x00, 0x08, 0x00, 0x16, 0x00, 0x04, 0x00, 0x0a, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xe7, 0xff, 0xed, 0xff, 0xe6, 0xff, 0xee, 0xff, 0xe5, 0xff, 0xed, 0xff, 0xe1, 0xff, 0xea, 0xff, 0xd8, 0xff, 0xe4, 0xff, 0xcd, 0xff, 0xdc, 0xff, 0xbf, 0xff, 0xd6, 0xff, 0xb1, 0xff, 0xcf, 0xff, 0xa6, 0xff, 0xcc, 0xff, 0xa0, 0xff, 0xcb, 0xff, 0x9e, 0xff, 0xcc, 0xff, 0xa0, 0xff, 0xcd, 0xff, 0xa4, 0xff, 0xcd, 0xff, 0xa7, 0xff, 0xcd, 0xff, 0xa8, 0xff, 0xcd, 0xff, 0xa8, 0xff, 0xcd, 0xff, 0xa8, 0xff, 0xd1, 0xff, 0xa9, 0xff, 0xd7, 0xff, 0xac, 0xff, 0xde, 0xff, 0xb3, 0xff, 0xe5, 0xff, 0xbe, 0xff, 0xe9, 0xff, 0xc8, 0xff, 0xeb, 0xff, 0xd0, 0xff, 0xeb, 0xff, 0xd6, 0xff, 0xed, 0xff, 0xda, 0xff, 0xf1, 0xff, 0xdc, 0xff, 0xf5, 0xff, 0xde, 0xff, 0xfa, 0xff, 0xe0, 0xff, 0xfd, 0xff, 0xe5, 0xff, 0xff, 0xff, 0xed, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x0d, 0x00, 0xff, 0xff, 0x15, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x08, 0x00, 0x1d, 0x00, 0x0b, 0x00, 0x1e, 0x00, 0x0d, 0x00, 0x22, 0x00, 0x0f, 0x00, 0x25, 0x00, 0x12, 0x00, 0x29, 0x00, 0x16, 0x00, 0x2b, 0x00, 0x1b, 0x00, 0x2d, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x23, 0x00, 0x2b, 0x00, 0x25, 0x00, 0x2a, 0x00, 0x26, 0x00, 0x29, 0x00, 0x27, 0x00, 0x29, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2b, 0x00, 0x28, 0x00, 0x30, 0x00, 0x24, 0x00, 0x35, 0x00, 0x1f, 0x00, 0x39, 0x00, 0x19, 0x00, 0x3b, 0x00, 0x15, 0x00, 0x3b, 0x00, 0x15, 0x00, 0x39, 0x00, 0x16, 0x00, 0x37, 0x00, 0x17, 0x00, 0x34, 0x00, 0x15, 0x00, 0x33, 0x00, 0x11, 0x00, 0x34, 0x00, 0x0a, 0x00, 0x36, 0x00, 0x02, 0x00, 0x37, 0x00, 0xfb, 0xff, 0x35, 0x00, 0xf5, 0xff, 0x32, 0x00, 0xf1, 0xff, 0x2d, 0x00, 0xef, 0xff, 0x28, 0x00, 0xed, 0xff, 0x25, 0x00, 0xea, 0xff, 0x24, 0x00, 0xe7, 0xff, 0x25, 0x00, 0xe3, 0xff, 0x25, 0x00, 0xde, 0xff, 0x25, 0x00, 0xd7, 0xff, 0x22, 0x00, 0xcf, 0xff, 0x1d, 0x00, 0xc6, 0xff, 0x16, 0x00, 0xbd, 0xff, 0x10, 0x00, 0xb6, 0xff, 0x0b, 0x00, 0xb0, 0xff, 0x08, 0x00, 0xac, 0xff, 0x05, 0x00, 0xab, 0xff, 0x03, 0x00, 0xac, 0xff, 0x02, 0x00, 0xad, 0xff, 0x01, 0x00, 0xab, 0xff, 0xfd, 0xff, 0xa6, 0xff, 0xf6, 0xff, 0x9f, 0xff, 0xed, 0xff, 0x9a, 0xff, 0xe4, 0xff, 0x9a, 0xff, 0xdd, 0xff, 0x9e, 0xff, 0xd9, 0xff, 0xa7, 0xff, 0xd9, 0xff, 0xb2, 0xff, 0xdd, 0xff, 0xb9, 0xff, 0xe0, 0xff, 0xbd, 0xff, 0xe1, 0xff, 0xbf, 0xff, 0xe0, 0xff, 0xc1, 0xff, 0xdd, 0xff, 0xc4, 0xff, 0xd8, 0xff, 0xc9, 0xff, 0xd3, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xdd, 0xff, 0xd4, 0xff, 0xe8, 0xff, 0xd9, 0xff, 0xf1, 0xff, 0xde, 0xff, 0xf8, 0xff, 0xe1, 0xff, 0xfe, 0xff, 0xe1, 0xff, 0x02, 0x00, 0xde, 0xff, 0x07, 0x00, 0xdb, 0xff, 0x0c, 0x00, 0xd8, 0xff, 0x13, 0x00, 0xd8, 0xff, 0x1c, 0x00, 0xd9, 0xff, 0x24, 0x00, 0xdb, 0xff, 0x2c, 0x00, 0xdc, 0xff, 0x33, 0x00, 0xda, 0xff, 0x38, 0x00, 0xd6, 0xff, 0x3e, 0x00, 0xd1, 0xff, 0x43, 0x00, 0xcb, 0xff, 0x46, 0x00, 0xc6, 0xff, 0x46, 0x00, 0xc2, 0xff, 0x43, 0x00, 0xc1, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0x3d, 0x00, 0xc2, 0xff, 0x3f, 0x00, 0xc5, 0xff, 0x44, 0x00, 0xca, 0xff, 0x49, 0x00, 0xce, 0xff, 0x4c, 0x00, 0xd1, 0xff, 0x4d, 0x00, 0xd5, 0xff, 0x4c, 0x00, 0xda, 0xff, 0x4a, 0x00, 0xe1, 0xff, 0x47, 0x00, 0xe9, 0xff, 0x45, 0x00, 0xf1, 0xff, 0x46, 0x00, 0xfb, 0xff, 0x48, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x0c, 0x00, 0x4a, 0x00, 0x14, 0x00, 0x48, 0x00, 0x1a, 0x00, 0x43, 0x00, 0x1e, 0x00, 0x3d, 0x00, 0x21, 0x00, 0x36, 0x00, 0x25, 0x00, 0x30, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x32, 0x00, 0x29, 0x00, 0x38, 0x00, 0x26, 0x00, 0x3b, 0x00, 0x21, 0x00, 0x3a, 0x00, 0x1c, 0x00, 0x36, 0x00, 0x16, 0x00, 0x33, 0x00, 0x10, 0x00, 0x32, 0x00, 0x0b, 0x00, 0x34, 0x00, 0x05, 0x00, 0x37, 0x00, 0xff, 0xff, 0x3a, 0x00, 0xf9, 0xff, 0x3a, 0x00, 0xf4, 0xff, 0x37, 0x00, 0xef, 0xff, 0x30, 0x00, 0xec, 0xff, 0x29, 0x00, 0xe9, 0xff, 0x23, 0x00, 0xe6, 0xff, 0x1d, 0x00, 0xe0, 0xff, 0x19, 0x00, 0xd9, 0xff, 0x16, 0x00, 0xd3, 0xff, 0x14, 0x00, 0xcc, 0xff, 0x11, 0x00, 0xc7, 0xff, 0x0c, 0x00, 0xc5, 0xff, 0x08, 0x00, 0xc5, 0xff, 0x06, 0x00, 0xc5, 0xff, 0x04, 0x00, 0xc5, 0xff, 0x03, 0x00, 0xc5, 0xff, 0x02, 0x00, 0xc3, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xfa, 0xff, 0xbe, 0xff, 0xf5, 0xff, 0xbd, 0xff, 0xf1, 0xff, 0xbe, 0xff, 0xed, 0xff, 0xc0, 0xff, 0xeb, 0xff, 0xc3, 0xff, 0xe9, 0xff, 0xc8, 0xff, 0xe8, 0xff, 0xcc, 0xff, 0xe6, 0xff, 0xcf, 0xff, 0xe3, 0xff, 0xd3, 0xff, 0xdf, 0xff, 0xd9, 0xff, 0xdd, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xec, 0xff, 0xe2, 0xff, 0xf6, 0xff, 0xe5, 0xff, 0xfe, 0xff, 0xe6, 0xff, 0x03, 0x00, 0xe7, 0xff, 0x07, 0x00, 0xe8, 0xff, 0x09, 0x00, 0xe8, 0xff, 0x0b, 0x00, 0xe9, 0xff, 0x0e, 0x00, 0xee, 0xff, 0x12, 0x00, 0xf4, 0xff, 0x17, 0x00, 0xfd, 0xff, 0x1c, 0x00, 0x06, 0x00, 0x20, 0x00, 0x0e, 0x00, 0x20, 0x00, 0x13, 0x00, 0x1d, 0x00, 0x13, 0x00, 0x19, 0x00, 0x12, 0x00, 0x14, 0x00, 0x11, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0d, 0x00, 0x14, 0x00, 0x0d, 0x00, 0x19, 0x00, 0x0d, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0x1d, 0x00, 0x08, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x18, 0x00, 0xfe, 0xff, 0x13, 0x00, 0xfb, 0xff, 0x0e, 0x00, 0xf9, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x09, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x14, 0x00, 0x09, 0x00, 0x18, 0x00, 0x08, 0x00, 0x1a, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x02, 0x00, 0x1c, 0x00, 0x01, 0x00, 0x1f, 0x00, 0x04, 0x00, 0x25, 0x00, 0x0b, 0x00, 0x2c, 0x00, 0x14, 0x00, 0x34, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x26, 0x00, 0x42, 0x00, 0x2c, 0x00, 0x46, 0x00, 0x30, 0x00, 0x45, 0x00, 0x32, 0x00, 0x41, 0x00, 0x34, 0x00, 0x3b, 0x00, 0x38, 0x00, 0x36, 0x00, 0x3e, 0x00, 0x32, 0x00, 0x46, 0x00, 0x2f, 0x00, 0x4b, 0x00, 0x2d, 0x00, 0x4e, 0x00, 0x2b, 0x00, 0x4e, 0x00, 0x26, 0x00, 0x4b, 0x00, 0x1f, 0x00, 0x47, 0x00, 0x16, 0x00, 0x43, 0x00, 0x0d, 0x00, 0x40, 0x00, 0x04, 0x00, 0x3c, 0x00, 0xfd, 0xff, 0x38, 0x00, 0xf9, 0xff, 0x32, 0x00, 0xf7, 0xff, 0x27, 0x00, 0xf4, 0xff, 0x19, 0x00, 0xf3, 0xff, 0x0a, 0x00, 0xf2, 0xff, 0xfe, 0xff, 0xf1, 0xff, 0xf5, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xe6, 0xff, 0xeb, 0xff, 0xe1, 0xff, 0xeb, 0xff, 0xda, 0xff, 0xed, 0xff, 0xd5, 0xff, 0xf0, 0xff, 0xd3, 0xff, 0xf5, 0xff, 0xd3, 0xff, 0xf9, 0xff, 0xd4, 0xff, 0xfd, 0xff, 0xd6, 0xff, 0xff, 0xff, 0xd8, 0xff, 0xff, 0xff, 0xdb, 0xff, 0xfd, 0xff, 0xdf, 0xff, 0xfa, 0xff, 0xe1, 0xff, 0xf9, 0xff, 0xe2, 0xff, 0xf8, 0xff, 0xe1, 0xff, 0xf8, 0xff, 0xde, 0xff, 0xf9, 0xff, 0xdb, 0xff, 0xf8, 0xff, 0xd7, 0xff, 0xf5, 0xff, 0xd3, 0xff, 0xf2, 0xff, 0xd0, 0xff, 0xf1, 0xff, 0xcf, 0xff, 0xf0, 0xff, 0xcd, 0xff, 0xf1, 0xff, 0xca, 0xff, 0xf4, 0xff, 0xc6, 0xff, 0xfa, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xbc, 0xff, 0x04, 0x00, 0xb7, 0xff, 0x08, 0x00, 0xb6, 0xff, 0x0c, 0x00, 0xb7, 0xff, 0x10, 0x00, 0xba, 0xff, 0x16, 0x00, 0xbe, 0xff, 0x1c, 0x00, 0xc1, 0xff, 0x1f, 0x00, 0xc2, 0xff, 0x21, 0x00, 0xc1, 0xff, 0x22, 0x00, 0xc0, 0xff, 0x22, 0x00, 0xbf, 0xff, 0x23, 0x00, 0xc0, 0xff, 0x24, 0x00, 0xc2, 0xff, 0x26, 0x00, 0xc8, 0xff, 0x28, 0x00, 0xcf, 0xff, 0x2a, 0x00, 0xd6, 0xff, 0x2b, 0x00, 0xdd, 0xff, 0x2a, 0x00, 0xe2, 0xff, 0x26, 0x00, 0xe5, 0xff, 0x21, 0x00, 0xe6, 0xff, 0x1c, 0x00, 0xe7, 0xff, 0x19, 0x00, 0xe9, 0xff, 0x16, 0x00, 0xea, 0xff, 0x12, 0x00, 0xec, 0xff, 0x0f, 0x00, 0xf1, 0xff, 0x0d, 0x00, 0xf7, 0xff, 0x0d, 0x00, 0xfe, 0xff, 0x0e, 0x00, 0x05, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x11, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x09, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x15, 0x00, 0x13, 0x00, 0x19, 0x00, 0x15, 0x00, 0x1b, 0x00, 0x16, 0x00, 0x1b, 0x00, 0x13, 0x00, 0x19, 0x00, 0x0f, 0x00, 0x15, 0x00, 0x0c, 0x00, 0x11, 0x00, 0x0c, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x13, 0x00, 0x10, 0x00, 0x16, 0x00, 0x0d, 0x00, 0x16, 0x00, 0x06, 0x00, 0x13, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xf6, 0xff, 0x0b, 0x00, 0xef, 0xff, 0x07, 0x00, 0xe9, 0xff, 0x05, 0x00, 0xe3, 0xff, 0x03, 0x00, 0xde, 0xff, 0x00, 0x00, 0xd9, 0xff, 0x00, 0x00, 0xd6, 0xff, 0xff, 0xff, 0xd3, 0xff, 0xff, 0xff, 0xd1, 0xff, 0xfe, 0xff, 0xd1, 0xff, 0xfc, 0xff, 0xd3, 0xff, 0xfa, 0xff, 0xd6, 0xff, 0xf7, 0xff, 0xda, 0xff, 0xf4, 0xff, 0xde, 0xff, 0xf0, 0xff, 0xe1, 0xff, 0xec, 0xff, 0xe3, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe3, 0xff, 0xe8, 0xff, 0xe3, 0xff, 0xeb, 0xff, 0xe4, 0xff, 0xed, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe9, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xd5, 0xff, 0xdf, 0xff, 0xd4, 0xff, 0xdf, 0xff, 0xd4, 0xff, 0xde, 0xff, 0xd3, 0xff, 0xda, 0xff, 0xd3, 0xff, 0xd5, 0xff, 0xd3, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xc8, 0xff, 0xd2, 0xff, 0xc2, 0xff, 0xd3, 0xff, 0xbe, 0xff, 0xd5, 0xff, 0xbb, 0xff, 0xd8, 0xff, 0xbb, 0xff, 0xde, 0xff, 0xbd, 0xff, 0xe6, 0xff, 0xc1, 0xff, 0xef, 0xff, 0xc6, 0xff, 0xf7, 0xff, 0xca, 0xff, 0xff, 0xff, 0xcd, 0xff, 0x05, 0x00, 0xd0, 0xff, 0x0d, 0x00, 0xd5, 0xff, 0x17, 0x00, 0xdd, 0xff, 0x24, 0x00, 0xe5, 0xff, 0x33, 0x00, 0xeb, 0xff, 0x41, 0x00, 0xee, 0xff, 0x4c, 0x00, 0xf1, 0xff, 0x56, 0x00, 0xf8, 0xff, 0x5e, 0x00, 0x02, 0x00, 0x66, 0x00, 0x0d, 0x00, 0x6e, 0x00, 0x14, 0x00, 0x74, 0x00, 0x15, 0x00, 0x7a, 0x00, 0x12, 0x00, 0x7f, 0x00, 0x0f, 0x00, 0x85, 0x00, 0x0e, 0x00, 0x8c, 0x00, 0x0e, 0x00, 0x91, 0x00, 0x0f, 0x00, 0x92, 0x00, 0x10, 0x00, 0x8d, 0x00, 0x0f, 0x00, 0x86, 0x00, 0x0f, 0x00, 0x7e, 0x00, 0x0d, 0x00, 0x79, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x05, 0x00, 0x76, 0x00, 0x00, 0x00, 0x76, 0x00, 0xfb, 0xff, 0x75, 0x00, 0xf7, 0xff, 0x71, 0x00, 0xf3, 0xff, 0x6a, 0x00, 0xef, 0xff, 0x5d, 0x00, 0xea, 0xff, 0x4f, 0x00, 0xe7, 0xff, 0x41, 0x00, 0xe7, 0xff, 0x37, 0x00, 0xe8, 0xff, 0x33, 0x00, 0xeb, 0xff, 0x31, 0x00, 0xec, 0xff, 0x2f, 0x00, 0xec, 0xff, 0x2b, 0x00, 0xeb, 0xff, 0x22, 0x00, 0xec, 0xff, 0x16, 0x00, 0xef, 0xff, 0x0a, 0x00, 0xf3, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf9, 0xff, 0xef, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xf9, 0xff, 0xeb, 0xff, 0xf7, 0xff, 0xed, 0xff, 0xf6, 0xff, 0xef, 0xff, 0xf6, 0xff, 0xf1, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xf3, 0xff, 0xe7, 0xff, 0xef, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xdf, 0xff, 0xe9, 0xff, 0xdb, 0xff, 0xee, 0xff, 0xd8, 0xff, 0xf1, 0xff, 0xd6, 0xff, 0xf2, 0xff, 0xd4, 0xff, 0xef, 0xff, 0xd2, 0xff, 0xe7, 0xff, 0xcf, 0xff, 0xdd, 0xff, 0xcc, 0xff, 0xd3, 0xff, 0xca, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xc9, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xd3, 0xff, 0xce, 0xff, 0xda, 0xff, 0xd1, 0xff, 0xe2, 0xff, 0xd0, 0xff, 0xe9, 0xff, 0xcc, 0xff, 0xed, 0xff, 0xc6, 0xff, 0xf2, 0xff, 0xc1, 0xff, 0xf7, 0xff, 0xc0, 0xff, 0xfe, 0xff, 0xc2, 0xff, 0x07, 0x00, 0xc8, 0xff, 0x11, 0x00, 0xd1, 0xff, 0x1a, 0x00, 0xdb, 0xff, 0x22, 0x00, 0xe4, 0xff, 0x28, 0x00, 0xea, 0xff, 0x2d, 0x00, 0xed, 0xff, 0x30, 0x00, 0xee, 0xff, 0x32, 0x00, 0xee, 0xff, 0x35, 0x00, 0xef, 0xff, 0x39, 0x00, 0xf3, 0xff, 0x3e, 0x00, 0xfb, 0xff, 0x41, 0x00, 0x04, 0x00, 0x42, 0x00, 0x0e, 0x00, 0x3f, 0x00, 0x17, 0x00, 0x3a, 0x00, 0x1e, 0x00, 0x35, 0x00, 0x21, 0x00, 0x30, 0x00, 0x22, 0x00, 0x2d, 0x00, 0x20, 0x00, 0x2b, 0x00, 0x1f, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x28, 0x00, 0x27, 0x00, 0x24, 0x00, 0x2d, 0x00, 0x20, 0x00, 0x31, 0x00, 0x1a, 0x00, 0x31, 0x00, 0x15, 0x00, 0x2d, 0x00, 0x0e, 0x00, 0x24, 0x00, 0x06, 0x00, 0x19, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xf8, 0xff, 0x08, 0x00, 0xf3, 0xff, 0x03, 0x00, 0xf1, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xef, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xd9, 0xff, 0xe8, 0xff, 0xce, 0xff, 0xe5, 0xff, 0xc8, 0xff, 0xe2, 0xff, 0xc7, 0xff, 0xe0, 0xff, 0xc7, 0xff, 0xe1, 0xff, 0xc8, 0xff, 0xe4, 0xff, 0xc6, 0xff, 0xe6, 0xff, 0xc1, 0xff, 0xe8, 0xff, 0xba, 0xff, 0xe8, 0xff, 0xb4, 0xff, 0xe6, 0xff, 0xb0, 0xff, 0xe2, 0xff, 0xaf, 0xff, 0xdc, 0xff, 0xae, 0xff, 0xd5, 0xff, 0xae, 0xff, 0xd1, 0xff, 0xad, 0xff, 0xcf, 0xff, 0xac, 0xff, 0xd0, 0xff, 0xaa, 0xff, 0xd2, 0xff, 0xa7, 0xff, 0xd6, 0xff, 0xa4, 0xff, 0xd9, 0xff, 0xa2, 0xff, 0xdc, 0xff, 0xa1, 0xff, 0xde, 0xff, 0xa4, 0xff, 0xe1, 0xff, 0xa9, 0xff, 0xe4, 0xff, 0xae, 0xff, 0xe8, 0xff, 0xb4, 0xff, 0xee, 0xff, 0xb9, 0xff, 0xf6, 0xff, 0xbd, 0xff, 0x00, 0x00, 0xc1, 0xff, 0x0c, 0x00, 0xc5, 0xff, 0x18, 0x00, 0xcb, 0xff, 0x21, 0x00, 0xd2, 0xff, 0x28, 0x00, 0xd9, 0xff, 0x2c, 0x00, 0xe1, 0xff, 0x2f, 0x00, 0xeb, 0xff, 0x33, 0x00, 0xf5, 0xff, 0x39, 0x00, 0xfd, 0xff, 0x41, 0x00, 0x04, 0x00, 0x49, 0x00, 0x08, 0x00, 0x50, 0x00, 0x0b, 0x00, 0x55, 0x00, 0x0f, 0x00, 0x58, 0x00, 0x16, 0x00, 0x5a, 0x00, 0x20, 0x00, 0x5d, 0x00, 0x2c, 0x00, 0x5f, 0x00, 0x35, 0x00, 0x62, 0x00, 0x3c, 0x00, 0x66, 0x00, 0x3f, 0x00, 0x6a, 0x00, 0x41, 0x00, 0x6d, 0x00, 0x41, 0x00, 0x6d, 0x00, 0x40, 0x00, 0x6b, 0x00, 0x40, 0x00, 0x6a, 0x00, 0x40, 0x00, 0x6a, 0x00, 0x40, 0x00, 0x6c, 0x00, 0x40, 0x00, 0x6d, 0x00, 0x3f, 0x00, 0x6e, 0x00, 0x3e, 0x00, 0x6d, 0x00, 0x3c, 0x00, 0x69, 0x00, 0x39, 0x00, 0x65, 0x00, 0x35, 0x00, 0x62, 0x00, 0x30, 0x00, 0x5e, 0x00, 0x2b, 0x00, 0x5c, 0x00, 0x26, 0x00, 0x5b, 0x00, 0x22, 0x00, 0x5c, 0x00, 0x20, 0x00, 0x5d, 0x00, 0x21, 0x00, 0x5e, 0x00, 0x24, 0x00, 0x5f, 0x00, 0x29, 0x00, 0x5e, 0x00, 0x2e, 0x00, 0x5d, 0x00, 0x31, 0x00, 0x5b, 0x00, 0x32, 0x00, 0x58, 0x00, 0x32, 0x00, 0x53, 0x00, 0x30, 0x00, 0x4b, 0x00, 0x2e, 0x00, 0x43, 0x00, 0x2d, 0x00, 0x3a, 0x00, 0x2d, 0x00, 0x33, 0x00, 0x2e, 0x00, 0x2b, 0x00, 0x2e, 0x00, 0x22, 0x00, 0x2d, 0x00, 0x17, 0x00, 0x2a, 0x00, 0x0a, 0x00, 0x25, 0x00, 0xfd, 0xff, 0x1f, 0x00, 0xef, 0xff, 0x16, 0x00, 0xe3, 0xff, 0x0f, 0x00, 0xd8, 0xff, 0x09, 0x00, 0xce, 0xff, 0x05, 0x00, 0xc5, 0xff, 0x02, 0x00, 0xbb, 0xff, 0xff, 0xff, 0xb1, 0xff, 0xfb, 0xff, 0xa8, 0xff, 0xf4, 0xff, 0x9f, 0xff, 0xec, 0xff, 0x99, 0xff, 0xe5, 0xff, 0x97, 0xff, 0xe0, 0xff, 0x96, 0xff, 0xde, 0xff, 0x96, 0xff, 0xdd, 0xff, 0x97, 0xff, 0xdd, 0xff, 0x97, 0xff, 0xdd, 0xff, 0x98, 0xff, 0xdb, 0xff, 0x99, 0xff, 0xd9, 0xff, 0x9c, 0xff, 0xd5, 0xff, 0xa0, 0xff, 0xd0, 0xff, 0xa4, 0xff, 0xcd, 0xff, 0xa9, 0xff, 0xcd, 0xff, 0xb0, 0xff, 0xcd, 0xff, 0xb7, 0xff, 0xcf, 0xff, 0xbf, 0xff, 0xd2, 0xff, 0xc8, 0xff, 0xd6, 0xff, 0xd1, 0xff, 0xda, 0xff, 0xda, 0xff, 0xdf, 0xff, 0xe1, 0xff, 0xe3, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xef, 0xff, 0xee, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xfb, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xf5, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x05, 0x00, 0xf5, 0xff, 0x08, 0x00, 0xf5, 0xff, 0x0c, 0x00, 0xf6, 0xff, 0x12, 0x00, 0xf8, 0xff, 0x16, 0x00, 0xf9, 0xff, 0x19, 0x00, 0xfb, 0xff, 0x1b, 0x00, 0xfd, 0xff, 0x1b, 0x00, 0xff, 0xff, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x01, 0x00, 0x1e, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x08, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x0f, 0x00, 0x18, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, 0x03, 0x00, 0x05, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xf6, 0xff, 0xfd, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xef, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xe7, 0xff, 0xf0, 0xff, 0xe7, 0xff, 0xef, 0xff, 0xe6, 0xff, 0xed, 0xff, 0xe4, 0xff, 0xe9, 0xff, 0xdf, 0xff, 0xe3, 0xff, 0xd9, 0xff, 0xdc, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xcf, 0xff, 0xcd, 0xff, 0xd4, 0xff, 0xce, 0xff, 0xd7, 0xff, 0xcf, 0xff, 0xd8, 0xff, 0xcf, 0xff, 0xd6, 0xff, 0xcc, 0xff, 0xd1, 0xff, 0xc7, 0xff, 0xcc, 0xff, 0xc2, 0xff, 0xcb, 0xff, 0xbf, 0xff, 0xcd, 0xff, 0xc0, 0xff, 0xd0, 0xff, 0xc6, 0xff, 0xd3, 0xff, 0xcf, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xd3, 0xff, 0xe2, 0xff, 0xd3, 0xff, 0xe7, 0xff, 0xd2, 0xff, 0xe8, 0xff, 0xd3, 0xff, 0xe8, 0xff, 0xd5, 0xff, 0xe7, 0xff, 0xd6, 0xff, 0xe8, 0xff, 0xd8, 0xff, 0xed, 0xff, 0xd9, 0xff, 0xf3, 0xff, 0xda, 0xff, 0xfa, 0xff, 0xdb, 0xff, 0xfe, 0xff, 0xdd, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xfe, 0xff, 0xe5, 0xff, 0xfc, 0xff, 0xea, 0xff, 0xfc, 0xff, 0xed, 0xff, 0xff, 0xff, 0xee, 0xff, 0x02, 0x00, 0xf0, 0xff, 0x06, 0x00, 0xf3, 0xff, 0x09, 0x00, 0xf8, 0xff, 0x0d, 0x00, 0xfe, 0xff, 0x12, 0x00, 0x04, 0x00, 0x17, 0x00, 0x08, 0x00, 0x1d, 0x00, 0x0b, 0x00, 0x23, 0x00, 0x0c, 0x00, 0x29, 0x00, 0x0c, 0x00, 0x2c, 0x00, 0x0e, 0x00, 0x2e, 0x00, 0x13, 0x00, 0x2e, 0x00, 0x1a, 0x00, 0x2e, 0x00, 0x23, 0x00, 0x2f, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x2f, 0x00, 0x36, 0x00, 0x31, 0x00, 0x3a, 0x00, 0x33, 0x00, 0x3b, 0x00, 0x36, 0x00, 0x38, 0x00, 0x3b, 0x00, 0x33, 0x00, 0x42, 0x00, 0x2d, 0x00, 0x49, 0x00, 0x29, 0x00, 0x4f, 0x00, 0x26, 0x00, 0x54, 0x00, 0x24, 0x00, 0x57, 0x00, 0x22, 0x00, 0x5a, 0x00, 0x20, 0x00, 0x5b, 0x00, 0x1d, 0x00, 0x5c, 0x00, 0x1b, 0x00, 0x5d, 0x00, 0x19, 0x00, 0x5d, 0x00, 0x15, 0x00, 0x5c, 0x00, 0x11, 0x00, 0x58, 0x00, 0x0d, 0x00, 0x54, 0x00, 0x08, 0x00, 0x50, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4c, 0x00, 0xfd, 0xff, 0x4a, 0x00, 0xfa, 0xff, 0x46, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0xf5, 0xff, 0x36, 0x00, 0xf1, 0xff, 0x2d, 0x00, 0xeb, 0xff, 0x25, 0x00, 0xe5, 0xff, 0x1e, 0x00, 0xdf, 0xff, 0x18, 0x00, 0xdb, 0xff, 0x12, 0x00, 0xd8, 0xff, 0x0a, 0x00, 0xd7, 0xff, 0x01, 0x00, 0xd6, 0xff, 0xf7, 0xff, 0xd5, 0xff, 0xef, 0xff, 0xd2, 0xff, 0xe9, 0xff, 0xce, 0xff, 0xe5, 0xff, 0xcb, 0xff, 0xe4, 0xff, 0xc9, 0xff, 0xe1, 0xff, 0xc9, 0xff, 0xdb, 0xff, 0xca, 0xff, 0xd1, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xcd, 0xff, 0xbd, 0xff, 0xce, 0xff, 0xb7, 0xff, 0xce, 0xff, 0xb4, 0xff, 0xcd, 0xff, 0xb5, 0xff, 0xce, 0xff, 0xb7, 0xff, 0xd1, 0xff, 0xb8, 0xff, 0xd6, 0xff, 0xb7, 0xff, 0xdb, 0xff, 0xb4, 0xff, 0xe1, 0xff, 0xb0, 0xff, 0xe5, 0xff, 0xaf, 0xff, 0xe8, 0xff, 0xb2, 0xff, 0xeb, 0xff, 0xb9, 0xff, 0xef, 0xff, 0xc1, 0xff, 0xf4, 0xff, 0xc7, 0xff, 0xfc, 0xff, 0xcb, 0xff, 0x05, 0x00, 0xce, 0xff, 0x0e, 0x00, 0xd1, 0xff, 0x15, 0x00, 0xd4, 0xff, 0x18, 0x00, 0xda, 0xff, 0x18, 0x00, 0xe1, 0xff, 0x19, 0x00, 0xe9, 0xff, 0x1a, 0x00, 0xf2, 0xff, 0x1c, 0x00, 0xfc, 0xff, 0x1d, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x17, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x21, 0x00, 0x15, 0x00, 0x25, 0x00, 0x13, 0x00, 0x28, 0x00, 0x10, 0x00, 0x2c, 0x00, 0x0e, 0x00, 0x30, 0x00, 0x0b, 0x00, 0x33, 0x00, 0x09, 0x00, 0x36, 0x00, 0x07, 0x00, 0x36, 0x00, 0x07, 0x00, 0x33, 0x00, 0x0a, 0x00, 0x2d, 0x00, 0x0d, 0x00, 0x27, 0x00, 0x11, 0x00, 0x21, 0x00, 0x14, 0x00, 0x1c, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, 0x16, 0x00, 0x1b, 0x00, 0x13, 0x00, 0x21, 0x00, 0x0f, 0x00, 0x28, 0x00, 0x07, 0x00, 0x30, 0x00, 0xfe, 0xff, 0x37, 0x00, 0xf6, 0xff, 0x3c, 0x00, 0xf1, 0xff, 0x3d, 0x00, 0xee, 0xff, 0x3b, 0x00, 0xed, 0xff, 0x38, 0x00, 0xec, 0xff, 0x36, 0x00, 0xec, 0xff, 0x37, 0x00, 0xe9, 0xff, 0x3b, 0x00, 0xe5, 0xff, 0x41, 0x00, 0xdf, 0xff, 0x45, 0x00, 0xda, 0xff, 0x47, 0x00, 0xd5, 0xff, 0x45, 0x00, 0xd3, 0xff, 0x40, 0x00, 0xd3, 0xff, 0x3a, 0x00, 0xd3, 0xff, 0x35, 0x00, 0xd2, 0xff, 0x32, 0x00, 0xd0, 0xff, 0x30, 0x00, 0xcc, 0xff, 0x31, 0x00, 0xc6, 0xff, 0x32, 0x00, 0xc1, 0xff, 0x31, 0x00, 0xbd, 0xff, 0x2d, 0x00, 0xbc, 0xff, 0x27, 0x00, 0xbc, 0xff, 0x20, 0x00, 0xbf, 0xff, 0x18, 0x00, 0xc2, 0xff, 0x12, 0x00, 0xc5, 0xff, 0x0d, 0x00, 0xc6, 0xff, 0x09, 0x00, 0xc5, 0xff, 0x08, 0x00, 0xc3, 0xff, 0x07, 0x00, 0xc2, 0xff, 0x06, 0x00, 0xc2, 0xff, 0x04, 0x00, 0xc4, 0xff, 0x01, 0x00, 0xc9, 0xff, 0xfd, 0xff, 0xcf, 0xff, 0xf9, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0xd9, 0xff, 0xf7, 0xff, 0xdb, 0xff, 0xfb, 0xff, 0xdc, 0xff, 0x01, 0x00, 0xdd, 0xff, 0x08, 0x00, 0xe0, 0xff, 0x0d, 0x00, 0xe4, 0xff, 0x0e, 0x00, 0xeb, 0xff, 0x0d, 0x00, 0xf4, 0xff, 0x09, 0x00, 0xfc, 0xff, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x13, 0x00, 0x0a, 0x00, 0x19, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x02, 0x00, 0x25, 0x00, 0xff, 0xff, 0x29, 0x00, 0xfc, 0xff, 0x2c, 0x00, 0xf8, 0xff, 0x2e, 0x00, 0xf5, 0xff, 0x30, 0x00, 0xf2, 0xff, 0x33, 0x00, 0xee, 0xff, 0x37, 0x00, 0xeb, 0xff, 0x3c, 0x00, 0xe9, 0xff, 0x41, 0x00, 0xe9, 0xff, 0x44, 0x00, 0xea, 0xff, 0x46, 0x00, 0xe9, 0xff, 0x46, 0x00, 0xe6, 0xff, 0x45, 0x00, 0xe1, 0xff, 0x45, 0x00, 0xdb, 0xff, 0x44, 0x00, 0xd7, 0xff, 0x43, 0x00, 0xd5, 0xff, 0x44, 0x00, 0xd6, 0xff, 0x46, 0x00, 0xd8, 0xff, 0x48, 0x00, 0xdb, 0xff, 0x4a, 0x00, 0xdc, 0xff, 0x49, 0x00, 0xdb, 0xff, 0x46, 0x00, 0xd9, 0xff, 0x41, 0x00, 0xd7, 0xff, 0x3c, 0x00, 0xd6, 0xff, 0x37, 0x00, 0xd7, 0xff, 0x34, 0x00, 0xda, 0xff, 0x31, 0x00, 0xdc, 0xff, 0x30, 0x00, 0xde, 0xff, 0x2e, 0x00, 0xdf, 0xff, 0x2c, 0x00, 0xde, 0xff, 0x2a, 0x00, 0xdd, 0xff, 0x27, 0x00, 0xdc, 0xff, 0x23, 0x00, 0xdc, 0xff, 0x1e, 0x00, 0xdc, 0xff, 0x18, 0x00, 0xdc, 0xff, 0x13, 0x00, 0xdc, 0xff, 0x0e, 0x00, 0xdb, 0xff, 0x09, 0x00, 0xda, 0xff, 0x04, 0x00, 0xdb, 0xff, 0xff, 0xff, 0xdb, 0xff, 0xfa, 0xff, 0xdc, 0xff, 0xf7, 0xff, 0xdb, 0xff, 0xf4, 0xff, 0xd9, 0xff, 0xf2, 0xff, 0xd8, 0xff, 0xf0, 0xff, 0xd7, 0xff, 0xef, 0xff, 0xd7, 0xff, 0xef, 0xff, 0xda, 0xff, 0xef, 0xff, 0xde, 0xff, 0xef, 0xff, 0xe3, 0xff, 0xee, 0xff, 0xe7, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xed, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0x02, 0x00, 0xff, 0xff, 0x08, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x12, 0x00, 0x05, 0x00, 0x15, 0x00, 0x04, 0x00, 0x19, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x06, 0x00, 0x1e, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x0e, 0x00, 0x1b, 0x00, 0x14, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x15, 0x00, 0x1e, 0x00, 0x12, 0x00, 0x21, 0x00, 0x10, 0x00, 0x20, 0x00, 0x0f, 0x00, 0x1f, 0x00, 0x0e, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0x1d, 0x00, 0x09, 0x00, 0x1f, 0x00, 0x04, 0x00, 0x22, 0x00, 0xff, 0xff, 0x26, 0x00, 0xf9, 0xff, 0x2a, 0x00, 0xf5, 0xff, 0x2e, 0x00, 0xf3, 0xff, 0x31, 0x00, 0xf2, 0xff, 0x33, 0x00, 0xf2, 0xff, 0x33, 0x00, 0xf2, 0xff, 0x31, 0x00, 0xf2, 0xff, 0x2f, 0x00, 0xf2, 0xff, 0x2f, 0x00, 0xf3, 0xff, 0x30, 0x00, 0xf4, 0xff, 0x32, 0x00, 0xf5, 0xff, 0x33, 0x00, 0xf5, 0xff, 0x33, 0x00, 0xf5, 0xff, 0x2f, 0x00, 0xf4, 0xff, 0x29, 0x00, 0xf4, 0xff, 0x1f, 0x00, 0xf5, 0xff, 0x14, 0x00, 0xf7, 0xff, 0x0b, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xfd, 0xff, 0xe6, 0xff, 0xff, 0xff, 0xdb, 0xff, 0x03, 0x00, 0xd0, 0xff, 0x08, 0x00, 0xc8, 0xff, 0x0e, 0x00, 0xc1, 0xff, 0x13, 0x00, 0xbc, 0xff, 0x16, 0x00, 0xb9, 0xff, 0x17, 0x00, 0xb7, 0xff, 0x16, 0x00, 0xb3, 0xff, 0x15, 0x00, 0xaf, 0xff, 0x16, 0x00, 0xaa, 0xff, 0x17, 0x00, 0xa8, 0xff, 0x1a, 0x00, 0xa8, 0xff, 0x1d, 0x00, 0xab, 0xff, 0x1d, 0x00, 0xb0, 0xff, 0x1c, 0x00, 0xb3, 0xff, 0x1a, 0x00, 0xb3, 0xff, 0x18, 0x00, 0xb1, 0xff, 0x17, 0x00, 0xb0, 0xff, 0x17, 0x00, 0xb0, 0xff, 0x17, 0x00, 0xb3, 0xff, 0x18, 0x00, 0xb5, 0xff, 0x1a, 0x00, 0xb7, 0xff, 0x1c, 0x00, 0xb6, 0xff, 0x20, 0x00, 0xb5, 0xff, 0x23, 0x00, 0xb3, 0xff, 0x27, 0x00, 0xb1, 0xff, 0x29, 0x00, 0xb0, 0xff, 0x2b, 0x00, 0xb1, 0xff, 0x2c, 0x00, 0xb5, 0xff, 0x2e, 0x00, 0xb9, 0xff, 0x2f, 0x00, 0xbe, 0xff, 0x32, 0x00, 0xc0, 0xff, 0x35, 0x00, 0xc2, 0xff, 0x3a, 0x00, 0xc3, 0xff, 0x3f, 0x00, 0xc5, 0xff, 0x43, 0x00, 0xca, 0xff, 0x43, 0x00, 0xd2, 0xff, 0x3e, 0x00, 0xdb, 0xff, 0x37, 0x00, 0xe6, 0xff, 0x30, 0x00, 0xf1, 0xff, 0x2a, 0x00, 0xfc, 0xff, 0x26, 0x00, 0x06, 0x00, 0x23, 0x00, 0x10, 0x00, 0x20, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x25, 0x00, 0x17, 0x00, 0x31, 0x00, 0x10, 0x00, 0x3d, 0x00, 0x08, 0x00, 0x49, 0x00, 0xff, 0xff, 0x53, 0x00, 0xf8, 0xff, 0x5c, 0x00, 0xf1, 0xff, 0x64, 0x00, 0xed, 0xff, 0x6b, 0x00, 0xea, 0xff, 0x71, 0x00, 0xe6, 0xff, 0x74, 0x00, 0xe1, 0xff, 0x75, 0x00, 0xdb, 0xff, 0x75, 0x00, 0xd6, 0xff, 0x75, 0x00, 0xd2, 0xff, 0x77, 0x00, 0xce, 0xff, 0x79, 0x00, 0xcb, 0xff, 0x7a, 0x00, 0xc9, 0xff, 0x77, 0x00, 0xc8, 0xff, 0x72, 0x00, 0xc9, 0xff, 0x6b, 0x00, 0xcc, 0xff, 0x63, 0x00, 0xd0, 0xff, 0x5b, 0x00, 0xd3, 0xff, 0x54, 0x00, 0xd5, 0xff, 0x4e, 0x00, 0xd6, 0xff, 0x49, 0x00, 0xd5, 0xff, 0x45, 0x00, 0xd3, 0xff, 0x3f, 0x00, 0xd3, 0xff, 0x35, 0x00, 0xd5, 0xff, 0x2a, 0x00, 0xd8, 0xff, 0x1f, 0x00, 0xdc, 0xff, 0x17, 0x00, 0xe0, 0xff, 0x13, 0x00, 0xe2, 0xff, 0x11, 0x00, 0xe1, 0xff, 0x0e, 0x00, 0xe0, 0xff, 0x08, 0x00, 0xde, 0xff, 0x00, 0x00, 0xde, 0xff, 0xf6, 0xff, 0xe0, 0xff, 0xed, 0xff, 0xe3, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xeb, 0xff, 0xe4, 0xff, 0xef, 0xff, 0xe4, 0xff, 0xf3, 0xff, 0xe2, 0xff, 0xf5, 0xff, 0xdc, 0xff, 0xf7, 0xff, 0xd3, 0xff, 0xf9, 0xff, 0xc9, 0xff, 0xfc, 0xff, 0xbf, 0xff, 0x01, 0x00, 0xb8, 0xff, 0x06, 0x00, 0xb5, 0xff, 0x0a, 0x00, 0xb4, 0xff, 0x0d, 0x00, 0xb5, 0xff, 0x10, 0x00, 0xb6, 0xff, 0x12, 0x00, 0xb5, 0xff, 0x13, 0x00, 0xb3, 0xff, 0x14, 0x00, 0xaf, 0xff, 0x14, 0x00, 0xaa, 0xff, 0x15, 0x00, 0xa5, 0xff, 0x14, 0x00, 0xa2, 0xff, 0x14, 0x00, 0xa2, 0xff, 0x12, 0x00, 0xa4, 0xff, 0x11, 0x00, 0xa8, 0xff, 0x10, 0x00, 0xad, 0xff, 0x0e, 0x00, 0xb4, 0xff, 0x0b, 0x00, 0xba, 0xff, 0x08, 0x00, 0xbe, 0xff, 0x03, 0x00, 0xbf, 0xff, 0xff, 0xff, 0xbe, 0xff, 0xfc, 0xff, 0xbe, 0xff, 0xfb, 0xff, 0xc0, 0xff, 0xfa, 0xff, 0xc7, 0xff, 0xf8, 0xff, 0xd2, 0xff, 0xf4, 0xff, 0xdf, 0xff, 0xef, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xe5, 0xff, 0xf1, 0xff, 0xe2, 0xff, 0xf1, 0xff, 0xe2, 0xff, 0xf2, 0xff, 0xe3, 0xff, 0xf7, 0xff, 0xe5, 0xff, 0x01, 0x00, 0xe6, 0xff, 0x0f, 0x00, 0xe5, 0xff, 0x1d, 0x00, 0xe2, 0xff, 0x28, 0x00, 0xdf, 0xff, 0x2f, 0x00, 0xdd, 0xff, 0x32, 0x00, 0xdd, 0xff, 0x31, 0x00, 0xde, 0xff, 0x31, 0x00, 0xe0, 0xff, 0x33, 0x00, 0xe0, 0xff, 0x39, 0x00, 0xde, 0xff, 0x42, 0x00, 0xda, 0xff, 0x4a, 0x00, 0xd5, 0xff, 0x4f, 0x00, 0xd2, 0xff, 0x4f, 0x00, 0xd0, 0xff, 0x4b, 0x00, 0xd0, 0xff, 0x46, 0x00, 0xd2, 0xff, 0x42, 0x00, 0xd3, 0xff, 0x41, 0x00, 0xd4, 0xff, 0x41, 0x00, 0xd4, 0xff, 0x41, 0x00, 0xd4, 0xff, 0x41, 0x00, 0xd5, 0xff, 0x3f, 0x00, 0xd8, 0xff, 0x3c, 0x00, 0xdc, 0xff, 0x37, 0x00, 0xe1, 0xff, 0x32, 0x00, 0xe6, 0xff, 0x2d, 0x00, 0xeb, 0xff, 0x27, 0x00, 0xf1, 0xff, 0x22, 0x00, 0xf9, 0xff, 0x1c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x07, 0x00, 0x13, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x09, 0x00, 0x14, 0x00, 0x02, 0x00, 0x16, 0x00, 0xf9, 0xff, 0x17, 0x00, 0xee, 0xff, 0x19, 0x00, 0xe2, 0xff, 0x1d, 0x00, 0xd7, 0xff, 0x24, 0x00, 0xce, 0xff, 0x2b, 0x00, 0xc7, 0xff, 0x2f, 0x00, 0xc4, 0xff, 0x30, 0x00, 0xc3, 0xff, 0x2f, 0x00, 0xc1, 0xff, 0x2d, 0x00, 0xbd, 0xff, 0x2b, 0x00, 0xb7, 0xff, 0x2a, 0x00, 0xae, 0xff, 0x2b, 0x00, 0xa7, 0xff, 0x2d, 0x00, 0xa4, 0xff, 0x2f, 0x00, 0xa6, 0xff, 0x31, 0x00, 0xac, 0xff, 0x31, 0x00, 0xb4, 0xff, 0x30, 0x00, 0xb9, 0xff, 0x2f, 0x00, 0xbb, 0xff, 0x2c, 0x00, 0xba, 0xff, 0x29, 0x00, 0xb9, 0xff, 0x24, 0x00, 0xb9, 0xff, 0x1e, 0x00, 0xbb, 0xff, 0x18, 0x00, 0xc1, 0xff, 0x12, 0x00, 0xc8, 0xff, 0x0d, 0x00, 0xd1, 0xff, 0x0a, 0x00, 0xd8, 0xff, 0x08, 0x00, 0xdd, 0xff, 0x05, 0x00, 0xdf, 0xff, 0x01, 0x00, 0xe0, 0xff, 0xfb, 0xff, 0xe1, 0xff, 0xf5, 0xff, 0xe5, 0xff, 0xf0, 0xff, 0xed, 0xff, 0xee, 0xff, 0xf7, 0xff, 0xed, 0xff, 0x02, 0x00, 0xf0, 0xff, 0x0c, 0x00, 0xf3, 0xff, 0x14, 0x00, 0xf6, 0xff, 0x1a, 0x00, 0xf7, 0xff, 0x1e, 0x00, 0xf5, 0xff, 0x22, 0x00, 0xf1, 0xff, 0x28, 0x00, 0xed, 0xff, 0x2f, 0x00, 0xeb, 0xff, 0x38, 0x00, 0xec, 0xff, 0x41, 0x00, 0xf1, 0xff, 0x4a, 0x00, 0xf8, 0xff, 0x52, 0x00, 0xfe, 0xff, 0x58, 0x00, 0x02, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x01, 0x00, 0x61, 0x00, 0xff, 0xff, 0x64, 0x00, 0xff, 0xff, 0x69, 0x00, 0x01, 0x00, 0x70, 0x00, 0x06, 0x00, 0x76, 0x00, 0x0d, 0x00, 0x7a, 0x00, 0x14, 0x00, 0x7a, 0x00, 0x1b, 0x00, 0x75, 0x00, 0x20, 0x00, 0x6d, 0x00, 0x23, 0x00, 0x65, 0x00, 0x25, 0x00, 0x5f, 0x00, 0x26, 0x00, 0x5c, 0x00, 0x28, 0x00, 0x5b, 0x00, 0x2b, 0x00, 0x5a, 0x00, 0x2e, 0x00, 0x57, 0x00, 0x31, 0x00, 0x52, 0x00, 0x33, 0x00, 0x48, 0x00, 0x32, 0x00, 0x3b, 0x00, 0x2f, 0x00, 0x2d, 0x00, 0x2a, 0x00, 0x21, 0x00, 0x24, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x13, 0x00, 0x1b, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x08, 0x00, 0x17, 0x00, 0x01, 0x00, 0x17, 0x00, 0xf7, 0xff, 0x17, 0x00, 0xeb, 0xff, 0x16, 0x00, 0xdf, 0xff, 0x13, 0x00, 0xd2, 0xff, 0x11, 0x00, 0xc8, 0xff, 0x11, 0x00, 0xbf, 0xff, 0x15, 0x00, 0xb7, 0xff, 0x1b, 0x00, 0xb1, 0xff, 0x20, 0x00, 0xac, 0xff, 0x24, 0x00, 0xa8, 0xff, 0x25, 0x00, 0xa4, 0xff, 0x24, 0x00, 0x9e, 0xff, 0x22, 0x00, 0x98, 0xff, 0x1f, 0x00, 0x90, 0xff, 0x1c, 0x00, 0x89, 0xff, 0x19, 0x00, 0x84, 0xff, 0x16, 0x00, 0x82, 0xff, 0x13, 0x00, 0x84, 0xff, 0x0f, 0x00, 0x88, 0xff, 0x0a, 0x00, 0x8d, 0xff, 0x04, 0x00, 0x90, 0xff, 0xfe, 0xff, 0x92, 0xff, 0xf7, 0xff, 0x92, 0xff, 0xf0, 0xff, 0x92, 0xff, 0xe9, 0xff, 0x94, 0xff, 0xe3, 0xff, 0x98, 0xff, 0xdf, 0xff, 0xa1, 0xff, 0xdb, 0xff, 0xab, 0xff, 0xd7, 0xff, 0xb7, 0xff, 0xd1, 0xff, 0xc1, 0xff, 0xcb, 0xff, 0xc7, 0xff, 0xc5, 0xff, 0xcc, 0xff, 0xbf, 0xff, 0xd0, 0xff, 0xba, 0xff, 0xd5, 0xff, 0xb8, 0xff, 0xdd, 0xff, 0xb8, 0xff, 0xe6, 0xff, 0xbb, 0xff, 0xf0, 0xff, 0xbd, 0xff, 0xfb, 0xff, 0xbd, 0xff, 0x04, 0x00, 0xbd, 0xff, 0x0d, 0x00, 0xbb, 0xff, 0x16, 0x00, 0xbb, 0xff, 0x1e, 0x00, 0xbd, 0xff, 0x27, 0x00, 0xc1, 0xff, 0x31, 0x00, 0xc7, 0xff, 0x3b, 0x00, 0xcf, 0xff, 0x43, 0x00, 0xd6, 0xff, 0x4b, 0x00, 0xdc, 0xff, 0x52, 0x00, 0xe1, 0xff, 0x5a, 0x00, 0xe4, 0xff, 0x63, 0x00, 0xe7, 0xff, 0x6b, 0x00, 0xea, 0xff, 0x70, 0x00, 0xed, 0xff, 0x72, 0x00, 0xef, 0xff, 0x71, 0x00, 0xee, 0xff, 0x6f, 0x00, 0xed, 0xff, 0x6d, 0x00, 0xec, 0xff, 0x6b, 0x00, 0xeb, 0xff, 0x68, 0x00, 0xea, 0xff, 0x64, 0x00, 0xea, 0xff, 0x60, 0x00, 0xea, 0xff, 0x5a, 0x00, 0xea, 0xff, 0x51, 0x00, 0xe9, 0xff, 0x46, 0x00, 0xe9, 0xff, 0x3b, 0x00, 0xe9, 0xff, 0x32, 0x00, 0xed, 0xff, 0x2a, 0x00, 0xf5, 0xff, 0x23, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x0b, 0x00, 0x19, 0x00, 0x14, 0x00, 0x13, 0x00, 0x1a, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x09, 0x00, 0x1c, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x32, 0x00, 0xff, 0xff, 0x38, 0x00, 0xfc, 0xff, 0x3b, 0x00, 0xfa, 0xff, 0x39, 0x00, 0xf7, 0xff, 0x36, 0x00, 0xf4, 0xff, 0x31, 0x00, 0xf2, 0xff, 0x2d, 0x00, 0xf1, 0xff, 0x29, 0x00, 0xef, 0xff, 0x26, 0x00, 0xed, 0xff, 0x25, 0x00, 0xea, 0xff, 0x24, 0x00, 0xe6, 0xff, 0x23, 0x00, 0xe3, 0xff, 0x21, 0x00, 0xdf, 0xff, 0x1f, 0x00, 0xda, 0xff, 0x1c, 0x00, 0xd6, 0xff, 0x18, 0x00, 0xd1, 0xff, 0x12, 0x00, 0xcc, 0xff, 0x0c, 0x00, 0xc8, 0xff, 0x05, 0x00, 0xc5, 0xff, 0x00, 0x00, 0xc2, 0xff, 0xfe, 0xff, 0xc0, 0xff, 0xfe, 0xff, 0xbe, 0xff, 0xff, 0xff, 0xbb, 0xff, 0xfd, 0xff, 0xb7, 0xff, 0xf8, 0xff, 0xb4, 0xff, 0xf1, 0xff, 0xb2, 0xff, 0xe7, 0xff, 0xb4, 0xff, 0xde, 0xff, 0xb8, 0xff, 0xd8, 0xff, 0xbe, 0xff, 0xd6, 0xff, 0xc4, 0xff, 0xd9, 0xff, 0xc8, 0xff, 0xde, 0xff, 0xcb, 0xff, 0xe1, 0xff, 0xcc, 0xff, 0xe0, 0xff, 0xcd, 0xff, 0xdb, 0xff, 0xd0, 0xff, 0xd7, 0xff, 0xd5, 0xff, 0xd4, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xe9, 0xff, 0xd8, 0xff, 0xf5, 0xff, 0xdd, 0xff, 0x00, 0x00, 0xe2, 0xff, 0x09, 0x00, 0xe5, 0xff, 0x0f, 0x00, 0xe6, 0xff, 0x15, 0x00, 0xe6, 0xff, 0x1a, 0x00, 0xe6, 0xff, 0x20, 0x00, 0xe5, 0xff, 0x27, 0x00, 0xe5, 0xff, 0x2f, 0x00, 0xe7, 0xff, 0x37, 0x00, 0xeb, 0xff, 0x3f, 0x00, 0xef, 0xff, 0x45, 0x00, 0xf2, 0xff, 0x49, 0x00, 0xf6, 0xff, 0x4b, 0x00, 0xf8, 0xff, 0x4c, 0x00, 0xfb, 0xff, 0x4d, 0x00, 0xfe, 0xff, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x07, 0x00, 0x4b, 0x00, 0x0b, 0x00, 0x47, 0x00, 0x10, 0x00, 0x43, 0x00, 0x15, 0x00, 0x3d, 0x00, 0x18, 0x00, 0x36, 0x00, 0x19, 0x00, 0x2f, 0x00, 0x18, 0x00, 0x29, 0x00, 0x17, 0x00, 0x22, 0x00, 0x17, 0x00, 0x1c, 0x00, 0x19, 0x00, 0x16, 0x00, 0x1d, 0x00, 0x11, 0x00, 0x25, 0x00, 0x0c, 0x00, 0x2d, 0x00, 0x07, 0x00, 0x34, 0x00, 0x01, 0x00, 0x39, 0x00, 0xfa, 0xff, 0x3c, 0x00, 0xf2, 0xff, 0x3e, 0x00, 0xec, 0xff, 0x40, 0x00, 0xe7, 0xff, 0x44, 0x00, 0xe3, 0xff, 0x49, 0x00, 0xe1, 0xff, 0x4f, 0x00, 0xe0, 0xff, 0x54, 0x00, 0xde, 0xff, 0x57, 0x00, 0xdd, 0xff, 0x56, 0x00, 0xda, 0xff, 0x54, 0x00, 0xd5, 0xff, 0x51, 0x00, 0xcf, 0xff, 0x4e, 0x00, 0xc9, 0xff, 0x4a, 0x00, 0xc4, 0xff, 0x45, 0x00, 0xc1, 0xff, 0x3e, 0x00, 0xc1, 0xff, 0x37, 0x00, 0xc4, 0xff, 0x2f, 0x00, 0xc7, 0xff, 0x26, 0x00, 0xc8, 0xff, 0x1c, 0x00, 0xc7, 0xff, 0x12, 0x00, 0xc4, 0xff, 0x06, 0x00, 0xc0, 0xff, 0xfa, 0xff, 0xbc, 0xff, 0xed, 0xff, 0xbb, 0xff, 0xe1, 0xff, 0xbd, 0xff, 0xd7, 0xff, 0xc1, 0xff, 0xcf, 0xff, 0xc6, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xc8, 0xff, 0xcd, 0xff, 0xc5, 0xff, 0xcc, 0xff, 0xc0, 0xff, 0xcb, 0xff, 0xba, 0xff, 0xcb, 0xff, 0xb3, 0xff, 0xd0, 0xff, 0xb0, 0xff, 0xd9, 0xff, 0xb0, 0xff, 0xe4, 0xff, 0xb5, 0xff, 0xf0, 0xff, 0xbc, 0xff, 0xfa, 0xff, 0xc3, 0xff, 0x00, 0x00, 0xc8, 0xff, 0x03, 0x00, 0xc9, 0xff, 0x04, 0x00, 0xca, 0xff, 0x07, 0x00, 0xca, 0xff, 0x0d, 0x00, 0xcd, 0xff, 0x16, 0x00, 0xd3, 0xff, 0x22, 0x00, 0xdd, 0xff, 0x2e, 0x00, 0xe8, 0xff, 0x39, 0x00, 0xf2, 0xff, 0x40, 0x00, 0xf9, 0xff, 0x43, 0x00, 0xfd, 0xff, 0x44, 0x00, 0xfe, 0xff, 0x43, 0x00, 0xfd, 0xff, 0x43, 0x00, 0xfe, 0xff, 0x45, 0x00, 0x01, 0x00, 0x48, 0x00, 0x06, 0x00, 0x4c, 0x00, 0x0b, 0x00, 0x4e, 0x00, 0x11, 0x00, 0x4f, 0x00, 0x14, 0x00, 0x4d, 0x00, 0x16, 0x00, 0x4a, 0x00, 0x16, 0x00, 0x47, 0x00, 0x15, 0x00, 0x45, 0x00, 0x13, 0x00, 0x44, 0x00, 0x13, 0x00, 0x45, 0x00, 0x14, 0x00, 0x46, 0x00, 0x18, 0x00, 0x47, 0x00, 0x1e, 0x00, 0x48, 0x00, 0x25, 0x00, 0x48, 0x00, 0x29, 0x00, 0x47, 0x00, 0x2b, 0x00, 0x46, 0x00, 0x2b, 0x00, 0x43, 0x00, 0x2a, 0x00, 0x3f, 0x00, 0x29, 0x00, 0x3b, 0x00, 0x2a, 0x00, 0x37, 0x00, 0x30, 0x00, 0x33, 0x00, 0x38, 0x00, 0x30, 0x00, 0x40, 0x00, 0x2d, 0x00, 0x46, 0x00, 0x2a, 0x00, 0x48, 0x00, 0x26, 0x00, 0x46, 0x00, 0x20, 0x00, 0x43, 0x00, 0x18, 0x00, 0x40, 0x00, 0x0e, 0x00, 0x3f, 0x00, 0x04, 0x00, 0x40, 0x00, 0xfa, 0xff, 0x43, 0x00, 0xf1, 0xff, 0x44, 0x00, 0xea, 0xff, 0x42, 0x00, 0xe4, 0xff, 0x3c, 0x00, 0xde, 0xff, 0x32, 0x00, 0xd7, 0xff, 0x27, 0x00, 0xcf, 0xff, 0x1d, 0x00, 0xc6, 0xff, 0x17, 0x00, 0xbe, 0xff, 0x13, 0x00, 0xb5, 0xff, 0x10, 0x00, 0xad, 0xff, 0x0c, 0x00, 0xa6, 0xff, 0x07, 0x00, 0xa1, 0xff, 0xff, 0xff, 0x9d, 0xff, 0xf7, 0xff, 0x9b, 0xff, 0xf0, 0xff, 0x9a, 0xff, 0xea, 0xff, 0x99, 0xff, 0xe7, 0xff, 0x9a, 0xff, 0xe4, 0xff, 0x9b, 0xff, 0xe1, 0xff, 0x9f, 0xff, 0xdd, 0xff, 0xa4, 0xff, 0xd8, 0xff, 0xab, 0xff, 0xd3, 0xff, 0xb0, 0xff, 0xcf, 0xff, 0xb5, 0xff, 0xcb, 0xff, 0xb8, 0xff, 0xc8, 0xff, 0xba, 0xff, 0xc4, 0xff, 0xbb, 0xff, 0xc0, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xc0, 0xff, 0xbb, 0xff, 0xc4, 0xff, 0xba, 0xff, 0xcb, 0xff, 0xb9, 0xff, 0xd2, 0xff, 0xba, 0xff, 0xd6, 0xff, 0xba, 0xff, 0xd7, 0xff, 0xbb, 0xff, 0xd5, 0xff, 0xbb, 0xff, 0xd2, 0xff, 0xba, 0xff, 0xd1, 0xff, 0xbb, 0xff, 0xd2, 0xff, 0xbd, 0xff, 0xd6, 0xff, 0xc2, 0xff, 0xdd, 0xff, 0xc8, 0xff, 0xe4, 0xff, 0xce, 0xff, 0xeb, 0xff, 0xd3, 0xff, 0xf0, 0xff, 0xd6, 0xff, 0xf4, 0xff, 0xd8, 0xff, 0xf7, 0xff, 0xd9, 0xff, 0xf9, 0xff, 0xdb, 0xff, 0xfc, 0xff, 0xdf, 0xff, 0x00, 0x00, 0xe2, 0xff, 0x05, 0x00, 0xe6, 0xff, 0x0b, 0x00, 0xe8, 0xff, 0x12, 0x00, 0xe9, 0xff, 0x17, 0x00, 0xe9, 0xff, 0x1b, 0x00, 0xe8, 0xff, 0x1d, 0x00, 0xe8, 0xff, 0x1e, 0x00, 0xe9, 0xff, 0x1e, 0x00, 0xea, 0xff, 0x20, 0x00, 0xec, 0xff, 0x23, 0x00, 0xef, 0xff, 0x28, 0x00, 0xf3, 0xff, 0x2e, 0x00, 0xf7, 0xff, 0x36, 0x00, 0xfd, 0xff, 0x3d, 0x00, 0x02, 0x00, 0x41, 0x00, 0x06, 0x00, 0x44, 0x00, 0x09, 0x00, 0x46, 0x00, 0x0b, 0x00, 0x48, 0x00, 0x0b, 0x00, 0x4a, 0x00, 0x0c, 0x00, 0x4d, 0x00, 0x0e, 0x00, 0x4f, 0x00, 0x12, 0x00, 0x50, 0x00, 0x18, 0x00, 0x4e, 0x00, 0x1d, 0x00, 0x4b, 0x00, 0x21, 0x00, 0x45, 0x00, 0x21, 0x00, 0x3d, 0x00, 0x1f, 0x00, 0x36, 0x00, 0x1b, 0x00, 0x2f, 0x00, 0x18, 0x00, 0x29, 0x00, 0x18, 0x00, 0x22, 0x00, 0x19, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x12, 0x00, 0x1d, 0x00, 0x08, 0x00, 0x1c, 0x00, 0xfe, 0xff, 0x19, 0x00, 0xf4, 0xff, 0x14, 0x00, 0xeb, 0xff, 0x0e, 0x00, 0xe3, 0xff, 0x08, 0x00, 0xdb, 0xff, 0x03, 0x00, 0xd3, 0xff, 0xff, 0xff, 0xcc, 0xff, 0xfd, 0xff, 0xc6, 0xff, 0xfd, 0xff, 0xc1, 0xff, 0xfc, 0xff, 0xbc, 0xff, 0xf9, 0xff, 0xb6, 0xff, 0xf5, 0xff, 0xb1, 0xff, 0xf0, 0xff, 0xad, 0xff, 0xec, 0xff, 0xab, 0xff, 0xeb, 0xff, 0xaa, 0xff, 0xeb, 0xff, 0xad, 0xff, 0xee, 0xff, 0xb2, 0xff, 0xf2, 0xff, 0xba, 0xff, 0xf6, 0xff, 0xc2, 0xff, 0xfa, 0xff, 0xca, 0xff, 0xfc, 0xff, 0xcf, 0xff, 0xfd, 0xff, 0xd4, 0xff, 0xfe, 0xff, 0xd7, 0xff, 0x00, 0x00, 0xdd, 0xff, 0x03, 0x00, 0xe4, 0xff, 0x07, 0x00, 0xee, 0xff, 0x0b, 0x00, 0xfa, 0xff, 0x0f, 0x00, 0x06, 0x00, 0x11, 0x00, 0x10, 0x00, 0x12, 0x00, 0x17, 0x00, 0x11, 0x00, 0x19, 0x00, 0x0e, 0x00, 0x19, 0x00, 0x0b, 0x00, 0x19, 0x00, 0x09, 0x00, 0x1a, 0x00, 0x08, 0x00, 0x1d, 0x00, 0x08, 0x00, 0x21, 0x00, 0x09, 0x00, 0x26, 0x00, 0x08, 0x00, 0x2b, 0x00, 0x08, 0x00, 0x30, 0x00, 0x06, 0x00, 0x35, 0x00, 0x04, 0x00, 0x38, 0x00, 0x01, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x01, 0x00, 0x44, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x07, 0x00, 0x55, 0x00, 0x0a, 0x00, 0x5d, 0x00, 0x0b, 0x00, 0x63, 0x00, 0x09, 0x00, 0x69, 0x00, 0x07, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x75, 0x00, 0x03, 0x00, 0x79, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x06, 0x00, 0x7e, 0x00, 0x08, 0x00, 0x80, 0x00, 0x09, 0x00, 0x80, 0x00, 0x08, 0x00, 0x80, 0x00, 0x05, 0x00, 0x7e, 0x00, 0x02, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x02, 0x00, 0x69, 0x00, 0x04, 0x00, 0x61, 0x00, 0x04, 0x00, 0x59, 0x00, 0x02, 0x00, 0x51, 0x00, 0xfe, 0xff, 0x49, 0x00, 0xf8, 0xff, 0x40, 0x00, 0xf4, 0xff, 0x37, 0x00, 0xf0, 0xff, 0x2c, 0x00, 0xef, 0xff, 0x20, 0x00, 0xee, 0xff, 0x15, 0x00, 0xec, 0xff, 0x0b, 0x00, 0xe9, 0xff, 0x04, 0x00, 0xe5, 0xff, 0xfd, 0xff, 0xe0, 0xff, 0xf5, 0xff, 0xdc, 0xff, 0xeb, 0xff, 0xda, 0xff, 0xe0, 0xff, 0xdb, 0xff, 0xd5, 0xff, 0xdd, 0xff, 0xcb, 0xff, 0xe1, 0xff, 0xc2, 0xff, 0xe3, 0xff, 0xbc, 0xff, 0xe2, 0xff, 0xb7, 0xff, 0xe1, 0xff, 0xb2, 0xff, 0xe0, 0xff, 0xac, 0xff, 0xe1, 0xff, 0xa4, 0xff, 0xe6, 0xff, 0x9c, 0xff, 0xed, 0xff, 0x96, 0xff, 0xf5, 0xff, 0x91, 0xff, 0xfd, 0xff, 0x8e, 0xff, 0x02, 0x00, 0x8d, 0xff, 0x04, 0x00, 0x8c, 0xff, 0x06, 0x00, 0x8b, 0xff, 0x07, 0x00, 0x8a, 0xff, 0x0a, 0x00, 0x8a, 0xff, 0x0c, 0x00, 0x8c, 0xff, 0x0e, 0x00, 0x92, 0xff, 0x0f, 0x00, 0x9a, 0xff, 0x0e, 0x00, 0xa2, 0xff, 0x0c, 0x00, 0xaa, 0xff, 0x0a, 0x00, 0xb1, 0xff, 0x0a, 0x00, 0xb7, 0xff, 0x0c, 0x00, 0xbd, 0xff, 0x11, 0x00, 0xc4, 0xff, 0x15, 0x00, 0xcc, 0xff, 0x18, 0x00, 0xd5, 0xff, 0x19, 0x00, 0xdf, 0xff, 0x17, 0x00, 0xe8, 0xff, 0x14, 0x00, 0xf0, 0xff, 0x12, 0x00, 0xf7, 0xff, 0x11, 0x00, 0xfb, 0xff, 0x11, 0x00, 0xfe, 0xff, 0x14, 0x00, 0x01, 0x00, 0x18, 0x00, 0x06, 0x00, 0x1b, 0x00, 0x0c, 0x00, 0x1d, 0x00, 0x12, 0x00, 0x1e, 0x00, 0x16, 0x00, 0x1d, 0x00, 0x17, 0x00, 0x1b, 0x00, 0x17, 0x00, 0x17, 0x00, 0x19, 0x00, 0x13, 0x00, 0x1d, 0x00, 0x0e, 0x00, 0x22, 0x00, 0x0b, 0x00, 0x28, 0x00, 0x0a, 0x00, 0x2c, 0x00, 0x0c, 0x00, 0x2d, 0x00, 0x0f, 0x00, 0x2b, 0x00, 0x12, 0x00, 0x28, 0x00, 0x12, 0x00, 0x25, 0x00, 0x0f, 0x00, 0x25, 0x00, 0x0b, 0x00, 0x28, 0x00, 0x09, 0x00, 0x2e, 0x00, 0x08, 0x00, 0x33, 0x00, 0x0c, 0x00, 0x36, 0x00, 0x11, 0x00, 0x36, 0x00, 0x17, 0x00, 0x34, 0x00, 0x1a, 0x00, 0x30, 0x00, 0x1a, 0x00, 0x2e, 0x00, 0x15, 0x00, 0x2e, 0x00, 0x0f, 0x00, 0x2f, 0x00, 0x09, 0x00, 0x30, 0x00, 0x07, 0x00, 0x30, 0x00, 0x09, 0x00, 0x2d, 0x00, 0x0d, 0x00, 0x27, 0x00, 0x10, 0x00, 0x1e, 0x00, 0x10, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x08, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xf3, 0xff, 0x0b, 0x00, 0xec, 0xff, 0x10, 0x00, 0xe4, 0xff, 0x16, 0x00, 0xdc, 0xff, 0x1c, 0x00, 0xd3, 0xff, 0x1f, 0x00, 0xca, 0xff, 0x20, 0x00, 0xc1, 0xff, 0x21, 0x00, 0xba, 0xff, 0x23, 0x00, 0xb5, 0xff, 0x26, 0x00, 0xb2, 0xff, 0x29, 0x00, 0xb1, 0xff, 0x28, 0x00, 0xb2, 0xff, 0x25, 0x00, 0xb5, 0xff, 0x1f, 0x00, 0xb9, 0xff, 0x18, 0x00, 0xbd, 0xff, 0x12, 0x00, 0xbf, 0xff, 0x10, 0x00, 0xbe, 0xff, 0x10, 0x00, 0xbd, 0xff, 0x12, 0x00, 0xbd, 0xff, 0x14, 0x00, 0xc0, 0xff, 0x13, 0x00, 0xc5, 0xff, 0x0e, 0x00, 0xcb, 0xff, 0x07, 0x00, 0xd0, 0xff, 0x01, 0x00, 0xd4, 0xff, 0xfd, 0xff, 0xd5, 0xff, 0xfd, 0xff, 0xd7, 0xff, 0xff, 0xff, 0xd9, 0xff, 0x02, 0x00, 0xdc, 0xff, 0x03, 0x00, 0xdf, 0xff, 0x01, 0x00, 0xe4, 0xff, 0xfc, 0xff, 0xe7, 0xff, 0xf7, 0xff, 0xea, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xef, 0xff, 0xed, 0xff, 0xed, 0xff, 0xef, 0xff, 0xec, 0xff, 0xf3, 0xff, 0xea, 0xff, 0xf9, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xe1, 0xff, 0x04, 0x00, 0xdb, 0xff, 0x06, 0x00, 0xd4, 0xff, 0x05, 0x00, 0xce, 0xff, 0x04, 0x00, 0xc9, 0xff, 0x03, 0x00, 0xc5, 0xff, 0x05, 0x00, 0xc1, 0xff, 0x09, 0x00, 0xbe, 0xff, 0x0e, 0x00, 0xbd, 0xff, 0x14, 0x00, 0xbc, 0xff, 0x1a, 0x00, 0xbc, 0xff, 0x1e, 0x00, 0xbb, 0xff, 0x22, 0x00, 0xb8, 0xff, 0x24, 0x00, 0xb5, 0xff, 0x25, 0x00, 0xb2, 0xff, 0x25, 0x00, 0xaf, 0xff, 0x24, 0x00, 0xad, 0xff, 0x24, 0x00, 0xac, 0xff, 0x23, 0x00, 0xaa, 0xff, 0x22, 0x00, 0xa9, 0xff, 0x22, 0x00, 0xa7, 0xff, 0x23, 0x00, 0xa6, 0xff, 0x23, 0x00, 0xa7, 0xff, 0x23, 0x00, 0xab, 0xff, 0x21, 0x00, 0xb2, 0xff, 0x1d, 0x00, 0xbb, 0xff, 0x17, 0x00, 0xc4, 0xff, 0x11, 0x00, 0xcd, 0xff, 0x0e, 0x00, 0xd4, 0xff, 0x0e, 0x00, 0xdb, 0xff, 0x10, 0x00, 0xe2, 0xff, 0x14, 0x00, 0xec, 0xff, 0x15, 0x00, 0xf9, 0xff, 0x14, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x15, 0x00, 0x07, 0x00, 0x21, 0x00, 0x00, 0x00, 0x2a, 0x00, 0xfb, 0xff, 0x31, 0x00, 0xfb, 0xff, 0x35, 0x00, 0xff, 0xff, 0x3b, 0x00, 0x03, 0x00, 0x43, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x06, 0x00, 0x5a, 0x00, 0x02, 0x00, 0x64, 0x00, 0xfc, 0xff, 0x6a, 0x00, 0xf5, 0xff, 0x6a, 0x00, 0xf0, 0xff, 0x66, 0x00, 0xed, 0xff, 0x62, 0x00, 0xee, 0xff, 0x5e, 0x00, 0xf2, 0xff, 0x5e, 0x00, 0xf6, 0xff, 0x61, 0x00, 0xf9, 0xff, 0x64, 0x00, 0xfa, 0xff, 0x66, 0x00, 0xfa, 0xff, 0x65, 0x00, 0xf7, 0xff, 0x61, 0x00, 0xf3, 0xff, 0x5a, 0x00, 0xef, 0xff, 0x51, 0x00, 0xed, 0xff, 0x48, 0x00, 0xed, 0xff, 0x41, 0x00, 0xf0, 0xff, 0x3a, 0x00, 0xf5, 0xff, 0x35, 0x00, 0xfb, 0xff, 0x31, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x03, 0x00, 0x27, 0x00, 0x03, 0x00, 0x20, 0x00, 0x03, 0x00, 0x19, 0x00, 0x03, 0x00, 0x12, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0xfd, 0xff, 0x23, 0x00, 0xf9, 0xff, 0x27, 0x00, 0xf3, 0xff, 0x29, 0x00, 0xeb, 0xff, 0x2a, 0x00, 0xe2, 0xff, 0x2c, 0x00, 0xda, 0xff, 0x31, 0x00, 0xd4, 0xff, 0x36, 0x00, 0xd0, 0xff, 0x3b, 0x00, 0xcd, 0xff, 0x3e, 0x00, 0xca, 0xff, 0x3d, 0x00, 0xc5, 0xff, 0x3a, 0x00, 0xbe, 0xff, 0x36, 0x00, 0xb4, 0xff, 0x34, 0x00, 0xa8, 0xff, 0x34, 0x00, 0x9d, 0xff, 0x34, 0x00, 0x94, 0xff, 0x34, 0x00, 0x8e, 0xff, 0x32, 0x00, 0x8d, 0xff, 0x2d, 0x00, 0x8f, 0xff, 0x27, 0x00, 0x92, 0xff, 0x22, 0x00, 0x94, 0xff, 0x1d, 0x00, 0x95, 0xff, 0x1b, 0x00, 0x96, 0xff, 0x19, 0x00, 0x98, 0xff, 0x18, 0x00, 0x9c, 0xff, 0x16, 0x00, 0xa2, 0xff, 0x12, 0x00, 0xab, 0xff, 0x0d, 0x00, 0xb4, 0xff, 0x07, 0x00, 0xbd, 0xff, 0x00, 0x00, 0xc6, 0xff, 0xfb, 0xff, 0xce, 0xff, 0xf6, 0xff, 0xd5, 0xff, 0xf4, 0xff, 0xdc, 0xff, 0xf3, 0xff, 0xe4, 0xff, 0xf4, 0xff, 0xeb, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf8, 0xff, 0xeb, 0xff, 0xff, 0xff, 0xe2, 0xff, 0x05, 0x00, 0xd8, 0xff, 0x0b, 0x00, 0xd1, 0xff, 0x10, 0x00, 0xce, 0xff, 0x13, 0x00, 0xce, 0xff, 0x16, 0x00, 0xd1, 0xff, 0x19, 0x00, 0xd5, 0xff, 0x1e, 0x00, 0xd8, 0xff, 0x25, 0x00, 0xd8, 0xff, 0x2d, 0x00, 0xd5, 0xff, 0x36, 0x00, 0xd0, 0xff, 0x3e, 0x00, 0xca, 0xff, 0x46, 0x00, 0xc7, 0xff, 0x4d, 0x00, 0xc7, 0xff, 0x51, 0x00, 0xcd, 0xff, 0x53, 0x00, 0xd6, 0xff, 0x53, 0x00, 0xdf, 0xff, 0x55, 0x00, 0xe7, 0xff, 0x58, 0x00, 0xec, 0xff, 0x5e, 0x00, 0xed, 0xff, 0x65, 0x00, 0xec, 0xff, 0x6b, 0x00, 0xeb, 0xff, 0x6d, 0x00, 0xec, 0xff, 0x6d, 0x00, 0xf0, 0xff, 0x6a, 0x00, 0xf6, 0xff, 0x65, 0x00, 0xfe, 0xff, 0x61, 0x00, 0x05, 0x00, 0x5e, 0x00, 0x0a, 0x00, 0x5d, 0x00, 0x0b, 0x00, 0x5b, 0x00, 0x08, 0x00, 0x58, 0x00, 0x04, 0x00, 0x50, 0x00, 0xff, 0xff, 0x46, 0x00, 0xfe, 0xff, 0x39, 0x00, 0xff, 0xff, 0x2b, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x05, 0x00, 0x15, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xe7, 0xff, 0xf2, 0xff, 0xd6, 0xff, 0xee, 0xff, 0xc6, 0xff, 0xee, 0xff, 0xba, 0xff, 0xf1, 0xff, 0xb2, 0xff, 0xf8, 0xff, 0xae, 0xff, 0xff, 0xff, 0xac, 0xff, 0x05, 0x00, 0xab, 0xff, 0x08, 0x00, 0xa9, 0xff, 0x09, 0x00, 0xa5, 0xff, 0x09, 0x00, 0xa1, 0xff, 0x0b, 0x00, 0x9c, 0xff, 0x0d, 0x00, 0x97, 0xff, 0x10, 0x00, 0x94, 0xff, 0x15, 0x00, 0x95, 0xff, 0x1b, 0x00, 0x99, 0xff, 0x21, 0x00, 0x9f, 0xff, 0x25, 0x00, 0xa4, 0xff, 0x26, 0x00, 0xa8, 0xff, 0x24, 0x00, 0xa8, 0xff, 0x1f, 0x00, 0xa6, 0xff, 0x1a, 0x00, 0xa3, 0xff, 0x15, 0x00, 0xa2, 0xff, 0x10, 0x00, 0xa3, 0xff, 0x0c, 0x00, 0xa8, 0xff, 0x08, 0x00, 0xaf, 0xff, 0x04, 0x00, 0xb6, 0xff, 0xff, 0xff, 0xbb, 0xff, 0xf8, 0xff, 0xc0, 0xff, 0xf1, 0xff, 0xc4, 0xff, 0xea, 0xff, 0xc8, 0xff, 0xe4, 0xff, 0xcd, 0xff, 0xe1, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xea, 0xff, 0xde, 0xff, 0xf8, 0xff, 0xdc, 0xff, 0x07, 0x00, 0xda, 0xff, 0x14, 0x00, 0xd8, 0xff, 0x20, 0x00, 0xd8, 0xff, 0x29, 0x00, 0xdb, 0xff, 0x30, 0x00, 0xdf, 0xff, 0x38, 0x00, 0xe3, 0xff, 0x41, 0x00, 0xe6, 0xff, 0x4b, 0x00, 0xe9, 0xff, 0x55, 0x00, 0xea, 0xff, 0x5e, 0x00, 0xeb, 0xff, 0x67, 0x00, 0xeb, 0xff, 0x6e, 0x00, 0xed, 0xff, 0x74, 0x00, 0xf2, 0xff, 0x76, 0x00, 0xf8, 0xff, 0x75, 0x00, 0xff, 0xff, 0x72, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07, 0x00, 0x6f, 0x00, 0x08, 0x00, 0x71, 0x00, 0x08, 0x00, 0x73, 0x00, 0x08, 0x00, 0x73, 0x00, 0x08, 0x00, 0x72, 0x00, 0x0a, 0x00, 0x6e, 0x00, 0x0d, 0x00, 0x68, 0x00, 0x10, 0x00, 0x61, 0x00, 0x15, 0x00, 0x5b, 0x00, 0x18, 0x00, 0x55, 0x00, 0x19, 0x00, 0x50, 0x00, 0x18, 0x00, 0x4c, 0x00, 0x15, 0x00, 0x4a, 0x00, 0x12, 0x00, 0x45, 0x00, 0x0f, 0x00, 0x3f, 0x00, 0x0f, 0x00, 0x35, 0x00, 0x13, 0x00, 0x2a, 0x00, 0x19, 0x00, 0x20, 0x00, 0x20, 0x00, 0x18, 0x00, 0x25, 0x00, 0x13, 0x00, 0x26, 0x00, 0x0e, 0x00, 0x24, 0x00, 0x0a, 0x00, 0x20, 0x00, 0x05, 0x00, 0x1b, 0x00, 0xfe, 0xff, 0x17, 0x00, 0xf6, 0xff, 0x15, 0x00, 0xed, 0xff, 0x16, 0x00, 0xe5, 0xff, 0x18, 0x00, 0xde, 0xff, 0x19, 0x00, 0xd9, 0xff, 0x17, 0x00, 0xd5, 0xff, 0x12, 0x00, 0xcf, 0xff, 0x09, 0x00, 0xc8, 0xff, 0xff, 0xff, 0xc0, 0xff, 0xf8, 0xff, 0xb7, 0xff, 0xf3, 0xff, 0xb0, 0xff, 0xf2, 0xff, 0xa9, 0xff, 0xf2, 0xff, 0xa4, 0xff, 0xf2, 0xff, 0xa1, 0xff, 0xf2, 0xff, 0x9e, 0xff, 0xf0, 0xff, 0x9b, 0xff, 0xee, 0xff, 0x98, 0xff, 0xeb, 0xff, 0x97, 0xff, 0xe8, 0xff, 0x97, 0xff, 0xe6, 0xff, 0x99, 0xff, 0xe5, 0xff, 0x9c, 0xff, 0xe8, 0xff, 0xa0, 0xff, 0xeb, 0xff, 0xa3, 0xff, 0xed, 0xff, 0xa7, 0xff, 0xee, 0xff, 0xac, 0xff, 0xec, 0xff, 0xb4, 0xff, 0xea, 0xff, 0xbd, 0xff, 0xe9, 0xff, 0xc7, 0xff, 0xe8, 0xff, 0xd0, 0xff, 0xe6, 0xff, 0xd9, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe6, 0xff, 0xe0, 0xff, 0xec, 0xff, 0xdf, 0xff, 0xf3, 0xff, 0xdd, 0xff, 0xfb, 0xff, 0xdc, 0xff, 0x04, 0x00, 0xdb, 0xff, 0x0e, 0x00, 0xda, 0xff, 0x19, 0x00, 0xda, 0xff, 0x23, 0x00, 0xdc, 0xff, 0x2a, 0x00, 0xdd, 0xff, 0x30, 0x00, 0xdd, 0xff, 0x34, 0x00, 0xdc, 0xff, 0x39, 0x00, 0xdb, 0xff, 0x41, 0x00, 0xdb, 0xff, 0x4a, 0x00, 0xdd, 0xff, 0x55, 0x00, 0xe1, 0xff, 0x60, 0x00, 0xe6, 0xff, 0x69, 0x00, 0xeb, 0xff, 0x6e, 0x00, 0xee, 0xff, 0x71, 0x00, 0xf2, 0xff, 0x73, 0x00, 0xf4, 0xff, 0x76, 0x00, 0xf6, 0xff, 0x7a, 0x00, 0xf9, 0xff, 0x7e, 0x00, 0xfc, 0xff, 0x82, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x84, 0x00, 0x0c, 0x00, 0x82, 0x00, 0x14, 0x00, 0x7e, 0x00, 0x1c, 0x00, 0x78, 0x00, 0x24, 0x00, 0x71, 0x00, 0x2b, 0x00, 0x6a, 0x00, 0x32, 0x00, 0x64, 0x00, 0x39, 0x00, 0x5e, 0x00, 0x40, 0x00, 0x56, 0x00, 0x45, 0x00, 0x4c, 0x00, 0x49, 0x00, 0x3f, 0x00, 0x4b, 0x00, 0x30, 0x00, 0x4d, 0x00, 0x22, 0x00, 0x4f, 0x00, 0x15, 0x00, 0x52, 0x00, 0x09, 0x00, 0x56, 0x00, 0x00, 0x00, 0x5a, 0x00, 0xf7, 0xff, 0x5c, 0x00, 0xef, 0xff, 0x5e, 0x00, 0xe4, 0xff, 0x60, 0x00, 0xd7, 0xff, 0x60, 0x00, 0xc8, 0xff, 0x60, 0x00, 0xba, 0xff, 0x5f, 0x00, 0xad, 0xff, 0x5e, 0x00, 0xa4, 0xff, 0x5d, 0x00, 0x9f, 0xff, 0x5a, 0x00, 0x9c, 0xff, 0x56, 0x00, 0x9a, 0xff, 0x52, 0x00, 0x96, 0xff, 0x4d, 0x00, 0x90, 0xff, 0x48, 0x00, 0x88, 0xff, 0x42, 0x00, 0x7e, 0xff, 0x3c, 0x00, 0x75, 0xff, 0x35, 0x00, 0x71, 0xff, 0x2d, 0x00, 0x71, 0xff, 0x25, 0x00, 0x74, 0xff, 0x1b, 0x00, 0x7a, 0xff, 0x11, 0x00, 0x7e, 0xff, 0x07, 0x00, 0x81, 0xff, 0xfe, 0xff, 0x82, 0xff, 0xf7, 0xff, 0x81, 0xff, 0xf3, 0xff, 0x81, 0xff, 0xf1, 0xff, 0x83, 0xff, 0xef, 0xff, 0x87, 0xff, 0xec, 0xff, 0x8f, 0xff, 0xe8, 0xff, 0x99, 0xff, 0xe4, 0xff, 0xa2, 0xff, 0xdf, 0xff, 0xa9, 0xff, 0xdb, 0xff, 0xaf, 0xff, 0xd9, 0xff, 0xb4, 0xff, 0xda, 0xff, 0xbb, 0xff, 0xdd, 0xff, 0xc4, 0xff, 0xe1, 0xff, 0xce, 0xff, 0xe4, 0xff, 0xd9, 0xff, 0xe5, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xec, 0xff, 0xe3, 0xff, 0xf3, 0xff, 0xe3, 0xff, 0xfb, 0xff, 0xe4, 0xff, 0x04, 0x00, 0xe8, 0xff, 0x0e, 0x00, 0xec, 0xff, 0x19, 0x00, 0xef, 0xff, 0x24, 0x00, 0xf0, 0xff, 0x2d, 0x00, 0xf1, 0xff, 0x34, 0x00, 0xf2, 0xff, 0x38, 0x00, 0xf5, 0xff, 0x3c, 0x00, 0xf9, 0xff, 0x40, 0x00, 0x00, 0x00, 0x44, 0x00, 0x07, 0x00, 0x49, 0x00, 0x0e, 0x00, 0x4e, 0x00, 0x13, 0x00, 0x4f, 0x00, 0x15, 0x00, 0x4d, 0x00, 0x13, 0x00, 0x48, 0x00, 0x10, 0x00, 0x42, 0x00, 0x0d, 0x00, 0x3d, 0x00, 0x0b, 0x00, 0x3c, 0x00, 0x0a, 0x00, 0x3c, 0x00, 0x0a, 0x00, 0x3d, 0x00, 0x09, 0x00, 0x3c, 0x00, 0x08, 0x00, 0x38, 0x00, 0x05, 0x00, 0x34, 0x00, 0x01, 0x00, 0x2f, 0x00, 0xff, 0xff, 0x2d, 0x00, 0xfe, 0xff, 0x2d, 0x00, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2e, 0x00, 0xfe, 0xff, 0x2b, 0x00, 0xfb, 0xff, 0x26, 0x00, 0xf9, 0xff, 0x1f, 0x00, 0xf9, 0xff, 0x19, 0x00, 0xfb, 0xff, 0x14, 0x00, 0xfe, 0xff, 0x10, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xee, 0xff, 0xf1, 0xff, 0xe3, 0xff, 0xec, 0xff, 0xda, 0xff, 0xe7, 0xff, 0xd1, 0xff, 0xe2, 0xff, 0xca, 0xff, 0xdd, 0xff, 0xc5, 0xff, 0xd7, 0xff, 0xc0, 0xff, 0xd1, 0xff, 0xba, 0xff, 0xcb, 0xff, 0xb5, 0xff, 0xc7, 0xff, 0xaf, 0xff, 0xc3, 0xff, 0xab, 0xff, 0xc1, 0xff, 0xa6, 0xff, 0xbc, 0xff, 0xa2, 0xff, 0xb6, 0xff, 0x9e, 0xff, 0xaf, 0xff, 0x9a, 0xff, 0xa8, 0xff, 0x97, 0xff, 0xa2, 0xff, 0x96, 0xff, 0x9e, 0xff, 0x97, 0xff, 0x9b, 0xff, 0x9a, 0xff, 0x98, 0xff, 0x9d, 0xff, 0x95, 0xff, 0xa1, 0xff, 0x91, 0xff, 0xa5, 0xff, 0x8e, 0xff, 0xa9, 0xff, 0x8c, 0xff, 0xae, 0xff, 0x8c, 0xff, 0xb6, 0xff, 0x8e, 0xff, 0xc2, 0xff, 0x90, 0xff, 0xd0, 0xff, 0x93, 0xff, 0xe0, 0xff, 0x94, 0xff, 0xef, 0xff, 0x96, 0xff, 0xfc, 0xff, 0x98, 0xff, 0x07, 0x00, 0x9e, 0xff, 0x11, 0x00, 0xa6, 0xff, 0x1a, 0x00, 0xb1, 0xff, 0x25, 0x00, 0xbd, 0xff, 0x31, 0x00, 0xc9, 0xff, 0x3e, 0x00, 0xd4, 0xff, 0x49, 0x00, 0xdd, 0xff, 0x53, 0x00, 0xe3, 0xff, 0x5c, 0x00, 0xe7, 0xff, 0x62, 0x00, 0xec, 0xff, 0x67, 0x00, 0xf1, 0xff, 0x6b, 0x00, 0xf9, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x72, 0x00, 0x07, 0x00, 0x75, 0x00, 0x0c, 0x00, 0x77, 0x00, 0x0f, 0x00, 0x78, 0x00, 0x11, 0x00, 0x79, 0x00, 0x13, 0x00, 0x7a, 0x00, 0x16, 0x00, 0x7b, 0x00, 0x1a, 0x00, 0x7b, 0x00, 0x1f, 0x00, 0x78, 0x00, 0x26, 0x00, 0x75, 0x00, 0x2e, 0x00, 0x71, 0x00, 0x35, 0x00, 0x6f, 0x00, 0x3a, 0x00, 0x6e, 0x00, 0x3f, 0x00, 0x6d, 0x00, 0x42, 0x00, 0x6b, 0x00, 0x43, 0x00, 0x67, 0x00, 0x45, 0x00, 0x61, 0x00, 0x46, 0x00, 0x59, 0x00, 0x49, 0x00, 0x4f, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x51, 0x00, 0x3c, 0x00, 0x55, 0x00, 0x34, 0x00, 0x57, 0x00, 0x2f, 0x00, 0x56, 0x00, 0x2a, 0x00, 0x52, 0x00, 0x25, 0x00, 0x4a, 0x00, 0x1f, 0x00, 0x41, 0x00, 0x17, 0x00, 0x3a, 0x00, 0x0e, 0x00, 0x37, 0x00, 0x04, 0x00, 0x37, 0x00, 0xfb, 0xff, 0x38, 0x00, 0xf3, 0xff, 0x39, 0x00, 0xec, 0xff, 0x37, 0x00, 0xe6, 0xff, 0x33, 0x00, 0xe2, 0xff, 0x2b, 0x00, 0xde, 0xff, 0x23, 0x00, 0xd9, 0xff, 0x1a, 0x00, 0xd4, 0xff, 0x14, 0x00, 0xcd, 0xff, 0x10, 0x00, 0xc4, 0xff, 0x0d, 0x00, 0xba, 0xff, 0x0b, 0x00, 0xb1, 0xff, 0x06, 0x00, 0xa9, 0xff, 0x01, 0x00, 0xa3, 0xff, 0xf9, 0xff, 0xa0, 0xff, 0xf2, 0xff, 0x9f, 0xff, 0xea, 0xff, 0x9e, 0xff, 0xe4, 0xff, 0x9d, 0xff, 0xdf, 0xff, 0x9a, 0xff, 0xda, 0xff, 0x96, 0xff, 0xd7, 0xff, 0x92, 0xff, 0xd3, 0xff, 0x8f, 0xff, 0xd1, 0xff, 0x8f, 0xff, 0xcf, 0xff, 0x92, 0xff, 0xcd, 0xff, 0x98, 0xff, 0xcc, 0xff, 0xa0, 0xff, 0xcb, 0xff, 0xa9, 0xff, 0xcb, 0xff, 0xb0, 0xff, 0xcb, 0xff, 0xb6, 0xff, 0xce, 0xff, 0xbb, 0xff, 0xd2, 0xff, 0xbf, 0xff, 0xd8, 0xff, 0xc4, 0xff, 0xdf, 0xff, 0xcb, 0xff, 0xe4, 0xff, 0xd4, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xea, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf8, 0xff, 0xef, 0xff, 0x02, 0x00, 0xf4, 0xff, 0x09, 0x00, 0xfb, 0xff, 0x0e, 0x00, 0x03, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x17, 0x00, 0x13, 0x00, 0x1d, 0x00, 0x19, 0x00, 0x26, 0x00, 0x1d, 0x00, 0x30, 0x00, 0x1f, 0x00, 0x3a, 0x00, 0x22, 0x00, 0x41, 0x00, 0x26, 0x00, 0x47, 0x00, 0x2b, 0x00, 0x4a, 0x00, 0x31, 0x00, 0x4c, 0x00, 0x36, 0x00, 0x4e, 0x00, 0x3a, 0x00, 0x50, 0x00, 0x3e, 0x00, 0x51, 0x00, 0x40, 0x00, 0x52, 0x00, 0x44, 0x00, 0x51, 0x00, 0x48, 0x00, 0x4f, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x51, 0x00, 0x49, 0x00, 0x56, 0x00, 0x48, 0x00, 0x59, 0x00, 0x47, 0x00, 0x5c, 0x00, 0x48, 0x00, 0x5c, 0x00, 0x49, 0x00, 0x5b, 0x00, 0x4a, 0x00, 0x5a, 0x00, 0x4a, 0x00, 0x59, 0x00, 0x47, 0x00, 0x5a, 0x00, 0x44, 0x00, 0x5b, 0x00, 0x3f, 0x00, 0x5b, 0x00, 0x3b, 0x00, 0x5a, 0x00, 0x37, 0x00, 0x58, 0x00, 0x33, 0x00, 0x54, 0x00, 0x2e, 0x00, 0x4d, 0x00, 0x29, 0x00, 0x46, 0x00, 0x22, 0x00, 0x3e, 0x00, 0x1c, 0x00, 0x37, 0x00, 0x16, 0x00, 0x32, 0x00, 0x10, 0x00, 0x2f, 0x00, 0x0a, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2b, 0x00, 0xf5, 0xff, 0x26, 0x00, 0xe8, 0xff, 0x1d, 0x00, 0xdd, 0xff, 0x11, 0x00, 0xd5, 0xff, 0x04, 0x00, 0xcf, 0xff, 0xf7, 0xff, 0xcc, 0xff, 0xee, 0xff, 0xca, 0xff, 0xe8, 0xff, 0xc7, 0xff, 0xe5, 0xff, 0xc2, 0xff, 0xe3, 0xff, 0xbc, 0xff, 0xe0, 0xff, 0xb5, 0xff, 0xd9, 0xff, 0xb0, 0xff, 0xcf, 0xff, 0xab, 0xff, 0xc2, 0xff, 0xaa, 0xff, 0xb6, 0xff, 0xa9, 0xff, 0xad, 0xff, 0xa8, 0xff, 0xa7, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xa2, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x9d, 0xff, 0x97, 0xff, 0x9e, 0xff, 0x90, 0xff, 0xa1, 0xff, 0x8b, 0xff, 0xa4, 0xff, 0x88, 0xff, 0xa7, 0xff, 0x87, 0xff, 0xab, 0xff, 0x89, 0xff, 0xb1, 0xff, 0x8b, 0xff, 0xb8, 0xff, 0x8e, 0xff, 0xc2, 0xff, 0x92, 0xff, 0xcc, 0xff, 0x95, 0xff, 0xd5, 0xff, 0x98, 0xff, 0xdd, 0xff, 0x9a, 0xff, 0xe2, 0xff, 0x9c, 0xff, 0xe5, 0xff, 0x9e, 0xff, 0xe9, 0xff, 0xa3, 0xff, 0xee, 0xff, 0xaa, 0xff, 0xf4, 0xff, 0xb3, 0xff, 0xfc, 0xff, 0xbd, 0xff, 0x03, 0x00, 0xc9, 0xff, 0x08, 0x00, 0xd5, 0xff, 0x0b, 0x00, 0xde, 0xff, 0x0d, 0x00, 0xe6, 0xff, 0x0e, 0x00, 0xec, 0xff, 0x0e, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0xfb, 0xff, 0x11, 0x00, 0x05, 0x00, 0x13, 0x00, 0x11, 0x00, 0x17, 0x00, 0x1e, 0x00, 0x1a, 0x00, 0x2b, 0x00, 0x1f, 0x00, 0x35, 0x00, 0x24, 0x00, 0x3c, 0x00, 0x29, 0x00, 0x40, 0x00, 0x2d, 0x00, 0x43, 0x00, 0x30, 0x00, 0x45, 0x00, 0x30, 0x00, 0x48, 0x00, 0x2f, 0x00, 0x4c, 0x00, 0x2d, 0x00, 0x50, 0x00, 0x2d, 0x00, 0x54, 0x00, 0x2d, 0x00, 0x58, 0x00, 0x2f, 0x00, 0x5a, 0x00, 0x30, 0x00, 0x5a, 0x00, 0x30, 0x00, 0x57, 0x00, 0x2e, 0x00, 0x55, 0x00, 0x2a, 0x00, 0x53, 0x00, 0x27, 0x00, 0x53, 0x00, 0x23, 0x00, 0x52, 0x00, 0x21, 0x00, 0x50, 0x00, 0x1e, 0x00, 0x4d, 0x00, 0x1b, 0x00, 0x4b, 0x00, 0x17, 0x00, 0x4a, 0x00, 0x11, 0x00, 0x48, 0x00, 0x0c, 0x00, 0x45, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, 0x30, 0x00, 0xff, 0xff, 0x29, 0x00, 0x00, 0x00, 0x24, 0x00, 0xff, 0xff, 0x21, 0x00, 0xfb, 0xff, 0x20, 0x00, 0xf4, 0xff, 0x1c, 0x00, 0xec, 0xff, 0x17, 0x00, 0xe6, 0xff, 0x0e, 0x00, 0xe3, 0xff, 0x03, 0x00, 0xe3, 0xff, 0xf7, 0xff, 0xe5, 0xff, 0xed, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe3, 0xff, 0xe6, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xdc, 0xff, 0xdf, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xd5, 0xff, 0xda, 0xff, 0xd0, 0xff, 0xe0, 0xff, 0xcc, 0xff, 0xe6, 0xff, 0xc9, 0xff, 0xeb, 0xff, 0xc8, 0xff, 0xed, 0xff, 0xc7, 0xff, 0xec, 0xff, 0xc7, 0xff, 0xe8, 0xff, 0xc8, 0xff, 0xe6, 0xff, 0xc8, 0xff, 0xe6, 0xff, 0xc9, 0xff, 0xe9, 0xff, 0xcb, 0xff, 0xf1, 0xff, 0xce, 0xff, 0xf9, 0xff, 0xd2, 0xff, 0x01, 0x00, 0xd6, 0xff, 0x06, 0x00, 0xda, 0xff, 0x09, 0x00, 0xdc, 0xff, 0x09, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xe6, 0xff, 0x06, 0x00, 0xee, 0xff, 0x07, 0x00, 0xf6, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x11, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x05, 0x00, 0x24, 0x00, 0x09, 0x00, 0x2d, 0x00, 0x0e, 0x00, 0x32, 0x00, 0x15, 0x00, 0x34, 0x00, 0x1d, 0x00, 0x33, 0x00, 0x26, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x33, 0x00, 0x34, 0x00, 0x37, 0x00, 0x38, 0x00, 0x3d, 0x00, 0x3a, 0x00, 0x45, 0x00, 0x3c, 0x00, 0x4c, 0x00, 0x40, 0x00, 0x51, 0x00, 0x43, 0x00, 0x52, 0x00, 0x46, 0x00, 0x4f, 0x00, 0x48, 0x00, 0x4a, 0x00, 0x48, 0x00, 0x46, 0x00, 0x47, 0x00, 0x44, 0x00, 0x46, 0x00, 0x45, 0x00, 0x47, 0x00, 0x49, 0x00, 0x48, 0x00, 0x4d, 0x00, 0x49, 0x00, 0x4f, 0x00, 0x48, 0x00, 0x4e, 0x00, 0x45, 0x00, 0x48, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3b, 0x00, 0x38, 0x00, 0x36, 0x00, 0x32, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x2c, 0x00, 0x34, 0x00, 0x2c, 0x00, 0x35, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x27, 0x00, 0x2d, 0x00, 0x23, 0x00, 0x26, 0x00, 0x1b, 0x00, 0x1e, 0x00, 0x11, 0x00, 0x18, 0x00, 0x05, 0x00, 0x11, 0x00, 0xf9, 0xff, 0x0b, 0x00, 0xf0, 0xff, 0x05, 0x00, 0xea, 0xff, 0xfe, 0xff, 0xe7, 0xff, 0xf6, 0xff, 0xe5, 0xff, 0xef, 0xff, 0xe5, 0xff, 0xe7, 0xff, 0xe3, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xd9, 0xff, 0xda, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xcb, 0xff, 0xca, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xba, 0xff, 0xc0, 0xff, 0xb2, 0xff, 0xc0, 0xff, 0xac, 0xff, 0xc2, 0xff, 0xa7, 0xff, 0xc4, 0xff, 0xa4, 0xff, 0xc5, 0xff, 0xa1, 0xff, 0xc5, 0xff, 0x9d, 0xff, 0xc2, 0xff, 0x99, 0xff, 0xbf, 0xff, 0x94, 0xff, 0xbd, 0xff, 0x8f, 0xff, 0xbc, 0xff, 0x8c, 0xff, 0xbd, 0xff, 0x8c, 0xff, 0xbf, 0xff, 0x8e, 0xff, 0xc3, 0xff, 0x93, 0xff, 0xc7, 0xff, 0x97, 0xff, 0xcc, 0xff, 0x9b, 0xff, 0xd2, 0xff, 0x9e, 0xff, 0xd8, 0xff, 0xa0, 0xff, 0xde, 0xff, 0xa3, 0xff, 0xe6, 0xff, 0xa7, 0xff, 0xee, 0xff, 0xad, 0xff, 0xf5, 0xff, 0xb5, 0xff, 0xfa, 0xff, 0xbe, 0xff, 0xff, 0xff, 0xc8, 0xff, 0x05, 0x00, 0xd2, 0xff, 0x0b, 0x00, 0xdb, 0xff, 0x13, 0x00, 0xe4, 0xff, 0x1c, 0x00, 0xeb, 0xff, 0x24, 0x00, 0xf0, 0xff, 0x2b, 0x00, 0xf5, 0xff, 0x30, 0x00, 0xf9, 0xff, 0x32, 0x00, 0xfd, 0xff, 0x33, 0x00, 0x01, 0x00, 0x33, 0x00, 0x06, 0x00, 0x33, 0x00, 0x0b, 0x00, 0x34, 0x00, 0x10, 0x00, 0x36, 0x00, 0x15, 0x00, 0x37, 0x00, 0x19, 0x00, 0x39, 0x00, 0x1a, 0x00, 0x3b, 0x00, 0x19, 0x00, 0x3c, 0x00, 0x18, 0x00, 0x3c, 0x00, 0x18, 0x00, 0x3b, 0x00, 0x18, 0x00, 0x3a, 0x00, 0x19, 0x00, 0x37, 0x00, 0x1a, 0x00, 0x35, 0x00, 0x1a, 0x00, 0x32, 0x00, 0x18, 0x00, 0x30, 0x00, 0x16, 0x00, 0x2f, 0x00, 0x12, 0x00, 0x2f, 0x00, 0x0e, 0x00, 0x2f, 0x00, 0x0a, 0x00, 0x2f, 0x00, 0x08, 0x00, 0x2d, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x25, 0x00, 0x01, 0x00, 0x1f, 0x00, 0xfe, 0xff, 0x19, 0x00, 0xfd, 0xff, 0x15, 0x00, 0xfb, 0xff, 0x13, 0x00, 0xfb, 0xff, 0x12, 0x00, 0xfa, 0xff, 0x10, 0x00, 0xf9, 0xff, 0x0c, 0x00, 0xf7, 0xff, 0x05, 0x00, 0xf6, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf0, 0xff, 0xf9, 0xff, 0xec, 0xff, 0xf9, 0xff, 0xe7, 0xff, 0xf8, 0xff, 0xe1, 0xff, 0xf6, 0xff, 0xd9, 0xff, 0xf1, 0xff, 0xcf, 0xff, 0xec, 0xff, 0xc4, 0xff, 0xe7, 0xff, 0xbc, 0xff, 0xe3, 0xff, 0xb8, 0xff, 0xe1, 0xff, 0xb9, 0xff, 0xe1, 0xff, 0xbb, 0xff, 0xe0, 0xff, 0xbd, 0xff, 0xde, 0xff, 0xbb, 0xff, 0xda, 0xff, 0xb7, 0xff, 0xd4, 0xff, 0xb2, 0xff, 0xcf, 0xff, 0xaf, 0xff, 0xcc, 0xff, 0xae, 0xff, 0xcb, 0xff, 0xb2, 0xff, 0xcd, 0xff, 0xb9, 0xff, 0xd1, 0xff, 0xc1, 0xff, 0xd7, 0xff, 0xc7, 0xff, 0xdc, 0xff, 0xcb, 0xff, 0xe1, 0xff, 0xcd, 0xff, 0xe4, 0xff, 0xcf, 0xff, 0xe6, 0xff, 0xd0, 0xff, 0xe9, 0xff, 0xd4, 0xff, 0xed, 0xff, 0xda, 0xff, 0xf4, 0xff, 0xe0, 0xff, 0xfd, 0xff, 0xe7, 0xff, 0x08, 0x00, 0xec, 0xff, 0x12, 0x00, 0xef, 0xff, 0x1c, 0x00, 0xf0, 0xff, 0x23, 0x00, 0xf1, 0xff, 0x28, 0x00, 0xf2, 0xff, 0x2c, 0x00, 0xf4, 0xff, 0x2f, 0x00, 0xf6, 0xff, 0x32, 0x00, 0xf9, 0xff, 0x35, 0x00, 0xfd, 0xff, 0x3a, 0x00, 0x01, 0x00, 0x40, 0x00, 0x06, 0x00, 0x45, 0x00, 0x0c, 0x00, 0x49, 0x00, 0x10, 0x00, 0x4a, 0x00, 0x14, 0x00, 0x49, 0x00, 0x15, 0x00, 0x47, 0x00, 0x15, 0x00, 0x46, 0x00, 0x16, 0x00, 0x46, 0x00, 0x18, 0x00, 0x49, 0x00, 0x1d, 0x00, 0x4c, 0x00, 0x24, 0x00, 0x4f, 0x00, 0x2d, 0x00, 0x51, 0x00, 0x35, 0x00, 0x4f, 0x00, 0x3b, 0x00, 0x4c, 0x00, 0x3f, 0x00, 0x49, 0x00, 0x40, 0x00, 0x48, 0x00, 0x40, 0x00, 0x49, 0x00, 0x40, 0x00, 0x4c, 0x00, 0x42, 0x00, 0x51, 0x00, 0x46, 0x00, 0x55, 0x00, 0x48, 0x00, 0x58, 0x00, 0x48, 0x00, 0x57, 0x00, 0x45, 0x00, 0x53, 0x00, 0x3e, 0x00, 0x4c, 0x00, 0x36, 0x00, 0x46, 0x00, 0x2f, 0x00, 0x40, 0x00, 0x28, 0x00, 0x3b, 0x00, 0x22, 0x00, 0x38, 0x00, 0x1c, 0x00, 0x34, 0x00, 0x15, 0x00, 0x30, 0x00, 0x0b, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x26, 0x00, 0xf3, 0xff, 0x20, 0x00, 0xe6, 0xff, 0x18, 0x00, 0xd9, 0xff, 0x10, 0x00, 0xce, 0xff, 0x0a, 0x00, 0xc6, 0xff, 0x06, 0x00, 0xbf, 0xff, 0x04, 0x00, 0xb9, 0xff, 0x01, 0x00, 0xb4, 0xff, 0xfe, 0xff, 0xae, 0xff, 0xf9, 0xff, 0xa8, 0xff, 0xf3, 0xff, 0xa3, 0xff, 0xec, 0xff, 0x9e, 0xff, 0xe4, 0xff, 0x9b, 0xff, 0xdd, 0xff, 0x99, 0xff, 0xd7, 0xff, 0x97, 0xff, 0xd2, 0xff, 0x96, 0xff, 0xcf, 0xff, 0x95, 0xff, 0xcf, 0xff, 0x96, 0xff, 0xcf, 0xff, 0x97, 0xff, 0xcf, 0xff, 0x99, 0xff, 0xcd, 0xff, 0x9a, 0xff, 0xc9, 0xff, 0x9b, 0xff, 0xc5, 0xff, 0x9b, 0xff, 0xc2, 0xff, 0x9b, 0xff, 0xc1, 0xff, 0x9c, 0xff, 0xc1, 0xff, 0x9f, 0xff, 0xc5, 0xff, 0xa2, 0xff, 0xcc, 0xff, 0xa7, 0xff, 0xd2, 0xff, 0xaa, 0xff, 0xd6, 0xff, 0xac, 0xff, 0xd8, 0xff, 0xad, 0xff, 0xd7, 0xff, 0xaf, 0xff, 0xd6, 0xff, 0xb2, 0xff, 0xd6, 0xff, 0xb7, 0xff, 0xd8, 0xff, 0xbe, 0xff, 0xdb, 0xff, 0xc5, 0xff, 0xdf, 0xff, 0xcd, 0xff, 0xe3, 0xff, 0xd3, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xe8, 0xff, 0xe1, 0xff, 0xe9, 0xff, 0xe6, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x0a, 0x00, 0x04, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x1d, 0x00, 0x0c, 0x00, 0x23, 0x00, 0x0d, 0x00, 0x28, 0x00, 0x0c, 0x00, 0x2a, 0x00, 0x0b, 0x00, 0x2b, 0x00, 0x0b, 0x00, 0x2c, 0x00, 0x0e, 0x00, 0x2e, 0x00, 0x12, 0x00, 0x33, 0x00, 0x17, 0x00, 0x39, 0x00, 0x1d, 0x00, 0x3f, 0x00, 0x20, 0x00, 0x43, 0x00, 0x20, 0x00, 0x43, 0x00, 0x1c, 0x00, 0x3f, 0x00, 0x16, 0x00, 0x39, 0x00, 0x10, 0x00, 0x33, 0x00, 0x0d, 0x00, 0x2d, 0x00, 0x0e, 0x00, 0x2b, 0x00, 0x12, 0x00, 0x2a, 0x00, 0x17, 0x00, 0x2c, 0x00, 0x1d, 0x00, 0x2e, 0x00, 0x1f, 0x00, 0x2d, 0x00, 0x1f, 0x00, 0x29, 0x00, 0x1d, 0x00, 0x23, 0x00, 0x19, 0x00, 0x1b, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, 0x11, 0x00, 0x14, 0x00, 0x0f, 0x00, 0x15, 0x00, 0x10, 0x00, 0x16, 0x00, 0x13, 0x00, 0x15, 0x00, 0x15, 0x00, 0x12, 0x00, 0x15, 0x00, 0x0b, 0x00, 0x13, 0x00, 0x03, 0x00, 0x0f, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf6, 0xff, 0x01, 0x00, 0xf4, 0xff, 0x00, 0x00, 0xf2, 0xff, 0x00, 0x00, 0xef, 0xff, 0x01, 0x00, 0xea, 0xff, 0x02, 0x00, 0xe4, 0xff, 0x01, 0x00, 0xdd, 0xff, 0xff, 0xff, 0xd8, 0xff, 0xfc, 0xff, 0xd3, 0xff, 0xf9, 0xff, 0xd0, 0xff, 0xf7, 0xff, 0xce, 0xff, 0xf5, 0xff, 0xcb, 0xff, 0xf4, 0xff, 0xc9, 0xff, 0xf4, 0xff, 0xc8, 0xff, 0xf5, 0xff, 0xc7, 0xff, 0xf6, 0xff, 0xc8, 0xff, 0xf7, 0xff, 0xc9, 0xff, 0xf7, 0xff, 0xca, 0xff, 0xf5, 0xff, 0xcc, 0xff, 0xf4, 0xff, 0xcd, 0xff, 0xf4, 0xff, 0xce, 0xff, 0xf6, 0xff, 0xd1, 0xff, 0xfa, 0xff, 0xd5, 0xff, 0xfe, 0xff, 0xd9, 0xff, 0x04, 0x00, 0xde, 0xff, 0x08, 0x00, 0xe2, 0xff, 0x0b, 0x00, 0xe6, 0xff, 0x0c, 0x00, 0xea, 0xff, 0x0c, 0x00, 0xf0, 0xff, 0x0c, 0x00, 0xf7, 0xff, 0x0c, 0x00, 0xff, 0xff, 0x0e, 0x00, 0x07, 0x00, 0x11, 0x00, 0x0d, 0x00, 0x17, 0x00, 0x11, 0x00, 0x1e, 0x00, 0x13, 0x00, 0x26, 0x00, 0x13, 0x00, 0x2c, 0x00, 0x14, 0x00, 0x31, 0x00, 0x17, 0x00, 0x33, 0x00, 0x20, 0x00, 0x34, 0x00, 0x2c, 0x00, 0x35, 0x00, 0x38, 0x00, 0x37, 0x00, 0x40, 0x00, 0x3b, 0x00, 0x44, 0x00, 0x3f, 0x00, 0x43, 0x00, 0x43, 0x00, 0x40, 0x00, 0x47, 0x00, 0x3d, 0x00, 0x4b, 0x00, 0x3c, 0x00, 0x4e, 0x00, 0x3e, 0x00, 0x50, 0x00, 0x42, 0x00, 0x52, 0x00, 0x47, 0x00, 0x53, 0x00, 0x4c, 0x00, 0x56, 0x00, 0x50, 0x00, 0x58, 0x00, 0x52, 0x00, 0x5a, 0x00, 0x51, 0x00, 0x5b, 0x00, 0x50, 0x00, 0x5b, 0x00, 0x4e, 0x00, 0x59, 0x00, 0x4b, 0x00, 0x57, 0x00, 0x48, 0x00, 0x56, 0x00, 0x47, 0x00, 0x54, 0x00, 0x46, 0x00, 0x52, 0x00, 0x48, 0x00, 0x51, 0x00, 0x4a, 0x00, 0x4f, 0x00, 0x4c, 0x00, 0x4e, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x47, 0x00, 0x46, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3b, 0x00, 0x38, 0x00, 0x37, 0x00, 0x30, 0x00, 0x34, 0x00, 0x29, 0x00, 0x33, 0x00, 0x24, 0x00, 0x32, 0x00, 0x20, 0x00, 0x30, 0x00, 0x1d, 0x00, 0x2c, 0x00, 0x18, 0x00, 0x25, 0x00, 0x12, 0x00, 0x1d, 0x00, 0x0a, 0x00, 0x15, 0x00, 0x02, 0x00, 0x10, 0x00, 0xfa, 0xff, 0x0c, 0x00, 0xf3, 0xff, 0x0a, 0x00, 0xed, 0xff, 0x09, 0x00, 0xe9, 0xff, 0x07, 0x00, 0xe6, 0xff, 0x04, 0x00, 0xe5, 0xff, 0xff, 0xff, 0xe5, 0xff, 0xf8, 0xff, 0xe5, 0xff, 0xf2, 0xff, 0xe4, 0xff, 0xed, 0xff, 0xe2, 0xff, 0xeb, 0xff, 0xe2, 0xff, 0xe9, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xdf, 0xff, 0xe5, 0xff, 0xd8, 0xff, 0xe5, 0xff, 0xd0, 0xff, 0xe5, 0xff, 0xca, 0xff, 0xe5, 0xff, 0xc6, 0xff, 0xe5, 0xff, 0xc5, 0xff, 0xe4, 0xff, 0xc4, 0xff, 0xe2, 0xff, 0xc4, 0xff, 0xdf, 0xff, 0xc4, 0xff, 0xdd, 0xff, 0xc3, 0xff, 0xdd, 0xff, 0xc2, 0xff, 0xdf, 0xff, 0xc0, 0xff, 0xe1, 0xff, 0xbd, 0xff, 0xe3, 0xff, 0xbb, 0xff, 0xe4, 0xff, 0xbb, 0xff, 0xe2, 0xff, 0xbb, 0xff, 0xde, 0xff, 0xbe, 0xff, 0xda, 0xff, 0xc3, 0xff, 0xd8, 0xff, 0xc8, 0xff, 0xd8, 0xff, 0xcd, 0xff, 0xdb, 0xff, 0xd0, 0xff, 0xe0, 0xff, 0xd1, 0xff, 0xe5, 0xff, 0xd0, 0xff, 0xe8, 0xff, 0xce, 0xff, 0xe9, 0xff, 0xcf, 0xff, 0xe7, 0xff, 0xd2, 0xff, 0xe4, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe3, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xec, 0xff, 0xea, 0xff, 0xed, 0xff, 0xee, 0xff, 0xec, 0xff, 0xf1, 0xff, 0xe9, 0xff, 0xf3, 0xff, 0xe7, 0xff, 0xf4, 0xff, 0xea, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf5, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x0b, 0x00, 0xf8, 0xff, 0x11, 0x00, 0xf9, 0xff, 0x14, 0x00, 0xfe, 0xff, 0x13, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x07, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xf6, 0xff, 0x0b, 0x00, 0xef, 0xff, 0x0b, 0x00, 0xec, 0xff, 0x09, 0x00, 0xed, 0xff, 0x06, 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf2, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xe2, 0xff, 0xf6, 0xff, 0xd7, 0xff, 0xf7, 0xff, 0xce, 0xff, 0xf8, 0xff, 0xca, 0xff, 0xf7, 0xff, 0xca, 0xff, 0xf5, 0xff, 0xcd, 0xff, 0xf0, 0xff, 0xd0, 0xff, 0xea, 0xff, 0xd0, 0xff, 0xe4, 0xff, 0xcb, 0xff, 0xe0, 0xff, 0xc2, 0xff, 0xde, 0xff, 0xb8, 0xff, 0xdf, 0xff, 0xb0, 0xff, 0xe2, 0xff, 0xae, 0xff, 0xe5, 0xff, 0xb1, 0xff, 0xe6, 0xff, 0xb8, 0xff, 0xe4, 0xff, 0xc1, 0xff, 0xdf, 0xff, 0xc8, 0xff, 0xd8, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xd2, 0xff, 0xda, 0xff, 0xd3, 0xff, 0xe2, 0xff, 0xd7, 0xff, 0xe7, 0xff, 0xdf, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe3, 0xff, 0xf1, 0xff, 0xdc, 0xff, 0xf8, 0xff, 0xd7, 0xff, 0xfc, 0xff, 0xd6, 0xff, 0xfd, 0xff, 0xdb, 0xff, 0xfd, 0xff, 0xe4, 0xff, 0xfc, 0xff, 0xed, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xfd, 0xff, 0xf4, 0xff, 0x01, 0x00, 0xf1, 0xff, 0x05, 0x00, 0xec, 0xff, 0x08, 0x00, 0xe7, 0xff, 0x0a, 0x00, 0xe6, 0xff, 0x09, 0x00, 0xe9, 0xff, 0x09, 0x00, 0xf2, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0x09, 0x00, 0x10, 0x00, 0x10, 0x00, 0x15, 0x00, 0x12, 0x00, 0x1b, 0x00, 0x10, 0x00, 0x1f, 0x00, 0x0b, 0x00, 0x23, 0x00, 0x08, 0x00, 0x26, 0x00, 0x08, 0x00, 0x27, 0x00, 0x0c, 0x00, 0x27, 0x00, 0x15, 0x00, 0x28, 0x00, 0x20, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x32, 0x00, 0x30, 0x00, 0x33, 0x00, 0x33, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x24, 0x00, 0x36, 0x00, 0x1a, 0x00, 0x38, 0x00, 0x14, 0x00, 0x3a, 0x00, 0x14, 0x00, 0x3c, 0x00, 0x18, 0x00, 0x3c, 0x00, 0x1d, 0x00, 0x39, 0x00, 0x22, 0x00, 0x35, 0x00, 0x22, 0x00, 0x30, 0x00, 0x1d, 0x00, 0x2c, 0x00, 0x14, 0x00, 0x29, 0x00, 0x09, 0x00, 0x27, 0x00, 0x02, 0x00, 0x25, 0x00, 0x01, 0x00, 0x21, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0d, 0x00, 0x19, 0x00, 0x07, 0x00, 0x18, 0x00, 0x06, 0x00, 0x13, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x01, 0x00, 0x0b, 0x00, 0xfa, 0xff, 0x0f, 0x00, 0xf4, 0xff, 0x10, 0x00, 0xf3, 0xff, 0x0e, 0x00, 0xf6, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x02, 0x00, 0x07, 0x00, 0xfb, 0xff, 0x0e, 0x00, 0xf6, 0xff, 0x10, 0x00, 0xf2, 0xff, 0x0e, 0x00, 0xf0, 0xff, 0x08, 0x00, 0xf0, 0xff, 0x02, 0x00, 0xf0, 0xff, 0xfe, 0xff, 0xef, 0xff, 0xfe, 0xff, 0xed, 0xff, 0x02, 0x00, 0xea, 0xff, 0x06, 0x00, 0xe8, 0xff, 0x0a, 0x00, 0xe8, 0xff, 0x0b, 0x00, 0xe8, 0xff, 0x08, 0x00, 0xe8, 0xff, 0x03, 0x00, 0xe8, 0xff, 0xfe, 0xff, 0xea, 0xff, 0xf9, 0xff, 0xee, 0xff, 0xf5, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf7, 0xff, 0xf2, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xfe, 0xff, 0xf0, 0xff, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0xee, 0xff, 0x07, 0x00, 0xec, 0xff, 0x0c, 0x00, 0xe9, 0xff, 0x11, 0x00, 0xe7, 0xff, 0x16, 0x00, 0xe7, 0xff, 0x1a, 0x00, 0xe9, 0xff, 0x1c, 0x00, 0xee, 0xff, 0x1d, 0x00, 0xf3, 0xff, 0x1d, 0x00, 0xf6, 0xff, 0x1f, 0x00, 0xf7, 0xff, 0x22, 0x00, 0xf7, 0xff, 0x27, 0x00, 0xf4, 0xff, 0x2b, 0x00, 0xf3, 0xff, 0x2d, 0x00, 0xf2, 0xff, 0x2b, 0x00, 0xf5, 0xff, 0x27, 0x00, 0xf9, 0xff, 0x21, 0x00, 0xfd, 0xff, 0x1b, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x17, 0x00, 0xfc, 0xff, 0x19, 0x00, 0xf6, 0xff, 0x1b, 0x00, 0xf0, 0xff, 0x1c, 0x00, 0xed, 0xff, 0x19, 0x00, 0xec, 0xff, 0x14, 0x00, 0xed, 0xff, 0x0d, 0x00, 0xef, 0xff, 0x08, 0x00, 0xf0, 0xff, 0x07, 0x00, 0xef, 0xff, 0x0a, 0x00, 0xec, 0xff, 0x0f, 0x00, 0xe9, 0xff, 0x15, 0x00, 0xe6, 0xff, 0x19, 0x00, 0xe5, 0xff, 0x1b, 0x00, 0xe6, 0xff, 0x1a, 0x00, 0xe9, 0xff, 0x18, 0x00, 0xec, 0xff, 0x14, 0x00, 0xee, 0xff, 0x10, 0x00, 0xef, 0xff, 0x0f, 0x00, 0xed, 0xff, 0x11, 0x00, 0xea, 0xff, 0x15, 0x00, 0xe8, 0xff, 0x1a, 0x00, 0xe6, 0xff, 0x1e, 0x00, 0xe5, 0xff, 0x1d, 0x00, 0xe4, 0xff, 0x19, 0x00, 0xe5, 0xff, 0x11, 0x00, 0xe5, 0xff, 0x08, 0x00, 0xe5, 0xff, 0xff, 0xff, 0xe4, 0xff, 0xf9, 0xff, 0xe3, 0xff, 0xf6, 0xff, 0xe2, 0xff, 0xf5, 0xff, 0xe1, 0xff, 0xf6, 0xff, 0xdf, 0xff, 0xf5, 0xff, 0xde, 0xff, 0xf2, 0xff, 0xde, 0xff, 0xec, 0xff, 0xe0, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xdc, 0xff, 0xe7, 0xff, 0xd7, 0xff, 0xea, 0xff, 0xd6, 0xff, 0xed, 0xff, 0xd9, 0xff, 0xee, 0xff, 0xdf, 0xff, 0xed, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xea, 0xff, 0xef, 0xff, 0xea, 0xff, 0xef, 0xff, 0xec, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0x02, 0x00, 0xf4, 0xff, 0x08, 0x00, 0xf5, 0xff, 0x0d, 0x00, 0xf7, 0xff, 0x10, 0x00, 0xfa, 0xff, 0x11, 0x00, 0xfd, 0xff, 0x11, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x08, 0x00, 0x02, 0x00, 0x07, 0x00, 0x03, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x11, 0x00, 0x09, 0x00, 0x16, 0x00, 0x08, 0x00, 0x19, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xfc, 0xff, 0x1e, 0x00, 0xf9, 0xff, 0x22, 0x00, 0xf9, 0xff, 0x27, 0x00, 0xf9, 0xff, 0x2c, 0x00, 0xfb, 0xff, 0x31, 0x00, 0xfd, 0xff, 0x36, 0x00, 0xff, 0xff, 0x3b, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x46, 0x00, 0x01, 0x00, 0x4a, 0x00, 0x01, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x01, 0x00, 0x4a, 0x00, 0x04, 0x00, 0x48, 0x00, 0x08, 0x00, 0x46, 0x00, 0x0c, 0x00, 0x45, 0x00, 0x0f, 0x00, 0x45, 0x00, 0x10, 0x00, 0x44, 0x00, 0x0f, 0x00, 0x41, 0x00, 0x0c, 0x00, 0x3b, 0x00, 0x08, 0x00, 0x33, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x01, 0x00, 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0xff, 0xff, 0x1f, 0x00, 0xfd, 0xff, 0x1c, 0x00, 0xf9, 0xff, 0x18, 0x00, 0xf6, 0xff, 0x15, 0x00, 0xf4, 0xff, 0x13, 0x00, 0xf4, 0xff, 0x15, 0x00, 0xf4, 0xff, 0x17, 0x00, 0xf5, 0xff, 0x1a, 0x00, 0xf6, 0xff, 0x19, 0x00, 0xf6, 0xff, 0x15, 0x00, 0xf6, 0xff, 0x0f, 0x00, 0xf5, 0xff, 0x09, 0x00, 0xf2, 0xff, 0x05, 0x00, 0xee, 0xff, 0x05, 0x00, 0xe8, 0xff, 0x07, 0x00, 0xe3, 0xff, 0x09, 0x00, 0xde, 0xff, 0x0a, 0x00, 0xdb, 0xff, 0x08, 0x00, 0xda, 0xff, 0x03, 0x00, 0xd9, 0xff, 0xff, 0xff, 0xd7, 0xff, 0xfb, 0xff, 0xd5, 0xff, 0xfa, 0xff, 0xd1, 0xff, 0xfa, 0xff, 0xcb, 0xff, 0xfb, 0xff, 0xc5, 0xff, 0xfd, 0xff, 0xc2, 0xff, 0xfd, 0xff, 0xc2, 0xff, 0xfd, 0xff, 0xc5, 0xff, 0xfb, 0xff, 0xcb, 0xff, 0xfa, 0xff, 0xd0, 0xff, 0xf9, 0xff, 0xd4, 0xff, 0xf8, 0xff, 0xd6, 0xff, 0xf7, 0xff, 0xd6, 0xff, 0xf6, 0xff, 0xd6, 0xff, 0xf4, 0xff, 0xd8, 0xff, 0xf3, 0xff, 0xdc, 0xff, 0xf1, 0xff, 0xe4, 0xff, 0xef, 0xff, 0xec, 0xff, 0xed, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xfd, 0xff, 0xec, 0xff, 0x02, 0x00, 0xec, 0xff, 0x06, 0x00, 0xed, 0xff, 0x08, 0x00, 0xef, 0xff, 0x0a, 0x00, 0xf1, 0xff, 0x0c, 0x00, 0xf2, 0xff, 0x0e, 0x00, 0xf4, 0xff, 0x11, 0x00, 0xf4, 0xff, 0x13, 0x00, 0xf4, 0xff, 0x16, 0x00, 0xf4, 0xff, 0x19, 0x00, 0xf6, 0xff, 0x1d, 0x00, 0xfa, 0xff, 0x20, 0x00, 0xff, 0xff, 0x22, 0x00, 0x04, 0x00, 0x22, 0x00, 0x07, 0x00, 0x20, 0x00, 0x08, 0x00, 0x1c, 0x00, 0x06, 0x00, 0x18, 0x00, 0x02, 0x00, 0x16, 0x00, 0xff, 0xff, 0x16, 0x00, 0xfe, 0xff, 0x1a, 0x00, 0xff, 0xff, 0x1e, 0x00, 0x04, 0x00, 0x22, 0x00, 0x09, 0x00, 0x24, 0x00, 0x0c, 0x00, 0x23, 0x00, 0x0d, 0x00, 0x22, 0x00, 0x0b, 0x00, 0x20, 0x00, 0x08, 0x00, 0x20, 0x00, 0x06, 0x00, 0x21, 0x00, 0x05, 0x00, 0x24, 0x00, 0x06, 0x00, 0x27, 0x00, 0x07, 0x00, 0x28, 0x00, 0x07, 0x00, 0x28, 0x00, 0x06, 0x00, 0x27, 0x00, 0x04, 0x00, 0x25, 0x00, 0xff, 0xff, 0x23, 0x00, 0xfb, 0xff, 0x22, 0x00, 0xf7, 0xff, 0x20, 0x00, 0xf4, 0xff, 0x1e, 0x00, 0xf2, 0xff, 0x1c, 0x00, 0xef, 0xff, 0x19, 0x00, 0xe9, 0xff, 0x17, 0x00, 0xe3, 0xff, 0x16, 0x00, 0xdd, 0xff, 0x16, 0x00, 0xd8, 0xff, 0x15, 0x00, 0xd4, 0xff, 0x14, 0x00, 0xd2, 0xff, 0x11, 0x00, 0xd1, 0xff, 0x0d, 0x00, 0xd0, 0xff, 0x08, 0x00, 0xcf, 0xff, 0x04, 0x00, 0xcd, 0xff, 0x03, 0x00, 0xcc, 0xff, 0x03, 0x00, 0xcc, 0xff, 0x05, 0x00, 0xce, 0xff, 0x06, 0x00, 0xcf, 0xff, 0x06, 0x00, 0xd0, 0xff, 0x03, 0x00, 0xcf, 0xff, 0xff, 0xff, 0xce, 0xff, 0xfa, 0xff, 0xcd, 0xff, 0xf6, 0xff, 0xcd, 0xff, 0xf3, 0xff, 0xce, 0xff, 0xf3, 0xff, 0xd0, 0xff, 0xf4, 0xff, 0xd1, 0xff, 0xf7, 0xff, 0xd1, 0xff, 0xf9, 0xff, 0xd0, 0xff, 0xfa, 0xff, 0xcd, 0xff, 0xf9, 0xff, 0xcb, 0xff, 0xf7, 0xff, 0xc9, 0xff, 0xf3, 0xff, 0xc9, 0xff, 0xf0, 0xff, 0xca, 0xff, 0xed, 0xff, 0xcc, 0xff, 0xec, 0xff, 0xce, 0xff, 0xee, 0xff, 0xd0, 0xff, 0xf2, 0xff, 0xd1, 0xff, 0xf7, 0xff, 0xd3, 0xff, 0xfb, 0xff, 0xd6, 0xff, 0xff, 0xff, 0xdb, 0xff, 0x01, 0x00, 0xe1, 0xff, 0x03, 0x00, 0xe7, 0xff, 0x04, 0x00, 0xed, 0xff, 0x04, 0x00, 0xf2, 0xff, 0x06, 0x00, 0xf5, 0xff, 0x08, 0x00, 0xf9, 0xff, 0x0b, 0x00, 0xfc, 0xff, 0x0e, 0x00, 0x01, 0x00, 0x11, 0x00, 0x06, 0x00, 0x12, 0x00, 0x0b, 0x00, 0x13, 0x00, 0x0f, 0x00, 0x15, 0x00, 0x12, 0x00, 0x16, 0x00, 0x13, 0x00, 0x17, 0x00, 0x13, 0x00, 0x18, 0x00, 0x13, 0x00, 0x18, 0x00, 0x13, 0x00, 0x19, 0x00, 0x14, 0x00, 0x19, 0x00, 0x15, 0x00, 0x19, 0x00, 0x13, 0x00, 0x18, 0x00, 0x12, 0x00, 0x15, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x13, 0x00, 0x0a, 0x00, 0x15, 0x00, 0x09, 0x00, 0x17, 0x00, 0x09, 0x00, 0x18, 0x00, 0x0a, 0x00, 0x18, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x0b, 0x00, 0x19, 0x00, 0x0b, 0x00, 0x1c, 0x00, 0x09, 0x00, 0x21, 0x00, 0x04, 0x00, 0x27, 0x00, 0xff, 0xff, 0x2c, 0x00, 0xf9, 0xff, 0x2e, 0x00, 0xf4, 0xff, 0x2e, 0x00, 0xf3, 0xff, 0x2b, 0x00, 0xf5, 0xff, 0x27, 0x00, 0xf8, 0xff, 0x22, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0x20, 0x00, 0xfc, 0xff, 0x22, 0x00, 0xf8, 0xff, 0x22, 0x00, 0xf3, 0xff, 0x1e, 0x00, 0xf0, 0xff, 0x18, 0x00, 0xef, 0xff, 0x11, 0x00, 0xef, 0xff, 0x0a, 0x00, 0xef, 0xff, 0x06, 0x00, 0xef, 0xff, 0x04, 0x00, 0xed, 0xff, 0x04, 0x00, 0xeb, 0xff, 0x05, 0x00, 0xe6, 0xff, 0x05, 0x00, 0xe2, 0xff, 0x04, 0x00, 0xde, 0xff, 0x00, 0x00, 0xdb, 0xff, 0xfb, 0xff, 0xd9, 0xff, 0xf6, 0xff, 0xd7, 0xff, 0xf4, 0xff, 0xd5, 0xff, 0xf4, 0xff, 0xd2, 0xff, 0xf6, 0xff, 0xcf, 0xff, 0xfa, 0xff, 0xcd, 0xff, 0xfd, 0xff, 0xcb, 0xff, 0x00, 0x00, 0xcc, 0xff, 0x00, 0x00, 0xcf, 0xff, 0xfe, 0xff, 0xd3, 0xff, 0xfa, 0xff, 0xd8, 0xff, 0xf7, 0xff, 0xdd, 0xff, 0xf5, 0xff, 0xe0, 0xff, 0xf6, 0xff, 0xe3, 0xff, 0xf9, 0xff, 0xe4, 0xff, 0xff, 0xff, 0xe7, 0xff, 0x04, 0x00, 0xec, 0xff, 0x06, 0x00, 0xf3, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x01, 0x00, 0x05, 0x00, 0xfd, 0xff, 0x0d, 0x00, 0xfa, 0xff, 0x12, 0x00, 0xfa, 0xff, 0x14, 0x00, 0xfd, 0xff, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x07, 0x00, 0x19, 0x00, 0x09, 0x00, 0x1d, 0x00, 0x09, 0x00, 0x22, 0x00, 0x08, 0x00, 0x25, 0x00, 0x06, 0x00, 0x27, 0x00, 0x06, 0x00, 0x26, 0x00, 0x0a, 0x00, 0x22, 0x00, 0x10, 0x00, 0x1e, 0x00, 0x17, 0x00, 0x1b, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x23, 0x00, 0x18, 0x00, 0x26, 0x00, 0x19, 0x00, 0x26, 0x00, 0x1a, 0x00, 0x24, 0x00, 0x1b, 0x00, 0x22, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x17, 0x00, 0x1f, 0x00, 0x13, 0x00, 0x1e, 0x00, 0x0e, 0x00, 0x1e, 0x00, 0x0a, 0x00, 0x1d, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x16, 0x00, 0x04, 0x00, 0x10, 0x00, 0x05, 0x00, 0x08, 0x00, 0x07, 0x00, 0x01, 0x00, 0x09, 0x00, 0xfa, 0xff, 0x09, 0x00, 0xf4, 0xff, 0x06, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xed, 0xff, 0xfb, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xed, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xf7, 0xff, 0xea, 0xff, 0xf9, 0xff, 0xe6, 0xff, 0xf9, 0xff, 0xe4, 0xff, 0xf4, 0xff, 0xe4, 0xff, 0xec, 0xff, 0xe7, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xda, 0xff, 0xf1, 0xff, 0xd6, 0xff, 0xf5, 0xff, 0xd6, 0xff, 0xf5, 0xff, 0xd8, 0xff, 0xf4, 0xff, 0xdb, 0xff, 0xf1, 0xff, 0xdb, 0xff, 0xf0, 0xff, 0xd8, 0xff, 0xf0, 0xff, 0xd2, 0xff, 0xf3, 0xff, 0xca, 0xff, 0xf6, 0xff, 0xc3, 0xff, 0xfa, 0xff, 0xbf, 0xff, 0xfb, 0xff, 0xc0, 0xff, 0xf9, 0xff, 0xc4, 0xff, 0xf5, 0xff, 0xca, 0xff, 0xf2, 0xff, 0xd1, 0xff, 0xf1, 0xff, 0xd6, 0xff, 0xf2, 0xff, 0xd9, 0xff, 0xf6, 0xff, 0xd8, 0xff, 0xfb, 0xff, 0xd6, 0xff, 0xfe, 0xff, 0xd5, 0xff, 0x00, 0x00, 0xd6, 0xff, 0x00, 0x00, 0xdb, 0xff, 0xfd, 0xff, 0xe4, 0xff, 0xfb, 0xff, 0xee, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x0a, 0x00, 0xf7, 0xff, 0x0c, 0x00, 0xf8, 0xff, 0x0d, 0x00, 0xfe, 0xff, 0x0e, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x10, 0x00, 0x1a, 0x00, 0x13, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x16, 0x00, 0x22, 0x00, 0x16, 0x00, 0x24, 0x00, 0x19, 0x00, 0x23, 0x00, 0x1d, 0x00, 0x21, 0x00, 0x23, 0x00, 0x1f, 0x00, 0x28, 0x00, 0x1d, 0x00, 0x2b, 0x00, 0x1e, 0x00, 0x2d, 0x00, 0x22, 0x00, 0x2f, 0x00, 0x29, 0x00, 0x32, 0x00, 0x2f, 0x00, 0x35, 0x00, 0x33, 0x00, 0x38, 0x00, 0x32, 0x00, 0x39, 0x00, 0x2d, 0x00, 0x39, 0x00, 0x26, 0x00, 0x38, 0x00, 0x1f, 0x00, 0x37, 0x00, 0x1a, 0x00, 0x36, 0x00, 0x18, 0x00, 0x36, 0x00, 0x18, 0x00, 0x35, 0x00, 0x19, 0x00, 0x35, 0x00, 0x19, 0x00, 0x34, 0x00, 0x17, 0x00, 0x32, 0x00, 0x13, 0x00, 0x2e, 0x00, 0x0e, 0x00, 0x28, 0x00, 0x07, 0x00, 0x20, 0x00, 0x02, 0x00, 0x18, 0x00, 0xff, 0xff, 0x11, 0x00, 0xfd, 0xff, 0x0b, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfb, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xef, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xf1, 0xff, 0xe7, 0xff, 0xef, 0xff, 0xe2, 0xff, 0xef, 0xff, 0xdd, 0xff, 0xf1, 0xff, 0xda, 0xff, 0xf4, 0xff, 0xd9, 0xff, 0xf6, 0xff, 0xdc, 0xff, 0xf7, 0xff, 0xe1, 0xff, 0xf7, 0xff, 0xe7, 0xff, 0xf5, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xef, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf7, 0xff, 0xef, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0xf2, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xfe, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x0d, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xf7, 0xff, 0x05, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf5, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xfb, 0xff, 0xf0, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0xf3, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xf9, 0xff, 0x0e, 0x00, 0xf4, 0xff, 0x15, 0x00, 0xef, 0xff, 0x1c, 0x00, 0xeb, 0xff, 0x22, 0x00, 0xe8, 0xff, 0x25, 0x00, 0xe7, 0xff, 0x26, 0x00, 0xe9, 0xff, 0x26, 0x00, 0xeb, 0xff, 0x26, 0x00, 0xec, 0xff, 0x26, 0x00, 0xec, 0xff, 0x28, 0x00, 0xe8, 0xff, 0x2a, 0x00, 0xe3, 0xff, 0x2c, 0x00, 0xde, 0xff, 0x2e, 0x00, 0xda, 0xff, 0x2d, 0x00, 0xd8, 0xff, 0x2a, 0x00, 0xd8, 0xff, 0x25, 0x00, 0xda, 0xff, 0x20, 0x00, 0xdc, 0xff, 0x1a, 0x00, 0xde, 0xff, 0x14, 0x00, 0xde, 0xff, 0x10, 0x00, 0xdc, 0xff, 0x0b, 0x00, 0xd9, 0xff, 0x08, 0x00, 0xd6, 0xff, 0x04, 0x00, 0xd5, 0xff, 0x00, 0x00, 0xd7, 0xff, 0xfa, 0xff, 0xda, 0xff, 0xf4, 0xff, 0xe0, 0xff, 0xed, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe9, 0xff, 0xe0, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xe8, 0xff, 0xd9, 0xff, 0xe7, 0xff, 0xd9, 0xff, 0xe6, 0xff, 0xda, 0xff, 0xe8, 0xff, 0xda, 0xff, 0xed, 0xff, 0xd9, 0xff, 0xf3, 0xff, 0xd6, 0xff, 0xfa, 0xff, 0xd2, 0xff, 0x01, 0x00, 0xce, 0xff, 0x05, 0x00, 0xcb, 0xff, 0x06, 0x00, 0xcb, 0xff, 0x05, 0x00, 0xce, 0xff, 0x03, 0x00, 0xd2, 0xff, 0x03, 0x00, 0xd4, 0xff, 0x05, 0x00, 0xd4, 0xff, 0x09, 0x00, 0xd0, 0xff, 0x0f, 0x00, 0xcc, 0xff, 0x13, 0x00, 0xc7, 0xff, 0x16, 0x00, 0xc5, 0xff, 0x17, 0x00, 0xc7, 0xff, 0x17, 0x00, 0xcb, 0xff, 0x17, 0x00, 0xd1, 0xff, 0x18, 0x00, 0xd4, 0xff, 0x1b, 0x00, 0xd6, 0xff, 0x1e, 0x00, 0xd6, 0xff, 0x21, 0x00, 0xd6, 0xff, 0x21, 0x00, 0xd8, 0xff, 0x1e, 0x00, 0xde, 0xff, 0x1a, 0x00, 0xe7, 0xff, 0x17, 0x00, 0xf1, 0xff, 0x15, 0x00, 0xfb, 0xff, 0x16, 0x00, 0x02, 0x00, 0x18, 0x00, 0x06, 0x00, 0x19, 0x00, 0x08, 0x00, 0x18, 0x00, 0x0b, 0x00, 0x16, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x16, 0x00, 0x0e, 0x00, 0x20, 0x00, 0x0b, 0x00, 0x2b, 0x00, 0x0b, 0x00, 0x35, 0x00, 0x0c, 0x00, 0x3b, 0x00, 0x0d, 0x00, 0x3d, 0x00, 0x0c, 0x00, 0x3c, 0x00, 0x09, 0x00, 0x3a, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3b, 0x00, 0xfb, 0xff, 0x3f, 0x00, 0xf6, 0xff, 0x44, 0x00, 0xf3, 0xff, 0x49, 0x00, 0xf0, 0xff, 0x4c, 0x00, 0xee, 0xff, 0x4c, 0x00, 0xed, 0xff, 0x49, 0x00, 0xed, 0xff, 0x43, 0x00, 0xec, 0xff, 0x3c, 0x00, 0xea, 0xff, 0x36, 0x00, 0xe6, 0xff, 0x32, 0x00, 0xe0, 0xff, 0x30, 0x00, 0xd9, 0xff, 0x2f, 0x00, 0xd2, 0xff, 0x2e, 0x00, 0xcc, 0xff, 0x2c, 0x00, 0xca, 0xff, 0x28, 0x00, 0xcb, 0xff, 0x23, 0x00, 0xce, 0xff, 0x1c, 0x00, 0xd1, 0xff, 0x16, 0x00, 0xd1, 0xff, 0x10, 0x00, 0xce, 0xff, 0x0c, 0x00, 0xc9, 0xff, 0x09, 0x00, 0xc4, 0xff, 0x07, 0x00, 0xc1, 0xff, 0x05, 0x00, 0xc2, 0xff, 0x04, 0x00, 0xc7, 0xff, 0x02, 0x00, 0xce, 0xff, 0xfe, 0xff, 0xd6, 0xff, 0xfa, 0xff, 0xdb, 0xff, 0xf5, 0xff, 0xde, 0xff, 0xf0, 0xff, 0xdd, 0xff, 0xed, 0xff, 0xdc, 0xff, 0xea, 0xff, 0xdb, 0xff, 0xe8, 0xff, 0xdf, 0xff, 0xe5, 0xff, 0xe7, 0xff, 0xe1, 0xff, 0xf2, 0xff, 0xdc, 0xff, 0xfd, 0xff, 0xd7, 0xff, 0x07, 0x00, 0xd0, 0xff, 0x0f, 0x00, 0xc9, 0xff, 0x13, 0x00, 0xc3, 0xff, 0x14, 0x00, 0xbf, 0xff, 0x14, 0x00, 0xbd, 0xff, 0x14, 0x00, 0xbf, 0xff, 0x14, 0x00, 0xc2, 0xff, 0x17, 0x00, 0xc6, 0xff, 0x1d, 0x00, 0xc8, 0xff, 0x23, 0x00, 0xc9, 0xff, 0x2a, 0x00, 0xca, 0xff, 0x30, 0x00, 0xca, 0xff, 0x32, 0x00, 0xcc, 0xff, 0x31, 0x00, 0xd0, 0xff, 0x2e, 0x00, 0xd5, 0xff, 0x2b, 0x00, 0xde, 0xff, 0x2a, 0x00, 0xe7, 0xff, 0x2c, 0x00, 0xf1, 0xff, 0x30, 0x00, 0xf9, 0xff, 0x34, 0x00, 0xfd, 0xff, 0x38, 0x00, 0xff, 0xff, 0x39, 0x00, 0xff, 0xff, 0x37, 0x00, 0xff, 0xff, 0x31, 0x00, 0x01, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x28, 0x00, 0x0a, 0x00, 0x27, 0x00, 0x10, 0x00, 0x29, 0x00, 0x14, 0x00, 0x2c, 0x00, 0x16, 0x00, 0x2e, 0x00, 0x16, 0x00, 0x2e, 0x00, 0x14, 0x00, 0x2b, 0x00, 0x13, 0x00, 0x28, 0x00, 0x14, 0x00, 0x26, 0x00, 0x17, 0x00, 0x25, 0x00, 0x1d, 0x00, 0x26, 0x00, 0x22, 0x00, 0x27, 0x00, 0x27, 0x00, 0x28, 0x00, 0x28, 0x00, 0x27, 0x00, 0x28, 0x00, 0x25, 0x00, 0x26, 0x00, 0x21, 0x00, 0x25, 0x00, 0x1e, 0x00, 0x25, 0x00, 0x1c, 0x00, 0x27, 0x00, 0x1b, 0x00, 0x2b, 0x00, 0x1a, 0x00, 0x2f, 0x00, 0x19, 0x00, 0x32, 0x00, 0x15, 0x00, 0x32, 0x00, 0x11, 0x00, 0x30, 0x00, 0x0c, 0x00, 0x2b, 0x00, 0x08, 0x00, 0x26, 0x00, 0x06, 0x00, 0x22, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x18, 0x00, 0x02, 0x00, 0x16, 0x00, 0x00, 0x00, 0x13, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xe9, 0xff, 0xf8, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0xdf, 0xff, 0xf8, 0xff, 0xda, 0xff, 0xfa, 0xff, 0xd7, 0xff, 0xfc, 0xff, 0xd3, 0xff, 0xfd, 0xff, 0xd0, 0xff, 0xfd, 0xff, 0xce, 0xff, 0xfd, 0xff, 0xcc, 0xff, 0xfb, 0xff, 0xcc, 0xff, 0xf9, 0xff, 0xcc, 0xff, 0xf8, 0xff, 0xce, 0xff, 0xf9, 0xff, 0xd1, 0xff, 0xfa, 0xff, 0xd4, 0xff, 0xfb, 0xff, 0xd6, 0xff, 0xfd, 0xff, 0xd6, 0xff, 0xff, 0xff, 0xd6, 0xff, 0x00, 0x00, 0xd6, 0xff, 0x01, 0x00, 0xd7, 0xff, 0x00, 0x00, 0xd9, 0xff, 0xff, 0xff, 0xde, 0xff, 0xfe, 0xff, 0xe3, 0xff, 0xfd, 0xff, 0xe8, 0xff, 0xfd, 0xff, 0xeb, 0xff, 0xfe, 0xff, 0xed, 0xff, 0x00, 0x00, 0xed, 0xff, 0x01, 0x00, 0xec, 0xff, 0x01, 0x00, 0xec, 0xff, 0xff, 0xff, 0xef, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x13, 0x00, 0x02, 0x00, 0x1b, 0x00, 0x01, 0x00, 0x21, 0x00, 0x03, 0x00, 0x24, 0x00, 0x05, 0x00, 0x26, 0x00, 0x07, 0x00, 0x25, 0x00, 0x07, 0x00, 0x24, 0x00, 0x06, 0x00, 0x23, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, 0x2b, 0x00, 0xfd, 0xff, 0x33, 0x00, 0xfc, 0xff, 0x3a, 0x00, 0xfb, 0xff, 0x3f, 0x00, 0xfb, 0xff, 0x41, 0x00, 0xf9, 0xff, 0x40, 0x00, 0xf6, 0xff, 0x3c, 0x00, 0xf1, 0xff, 0x38, 0x00, 0xeb, 0xff, 0x34, 0x00, 0xe6, 0xff, 0x31, 0x00, 0xe2, 0xff, 0x31, 0x00, 0xe0, 0xff, 0x32, 0x00, 0xdf, 0xff, 0x34, 0x00, 0xdf, 0xff, 0x34, 0x00, 0xde, 0xff, 0x34, 0x00, 0xda, 0xff, 0x31, 0x00, 0xd6, 0xff, 0x2b, 0x00, 0xd1, 0xff, 0x25, 0x00, 0xcd, 0xff, 0x1f, 0x00, 0xcb, 0xff, 0x1a, 0x00, 0xcb, 0xff, 0x19, 0x00, 0xcc, 0xff, 0x19, 0x00, 0xce, 0xff, 0x1a, 0x00, 0xd0, 0xff, 0x1a, 0x00, 0xd3, 0xff, 0x18, 0x00, 0xd6, 0xff, 0x13, 0x00, 0xd9, 0xff, 0x0e, 0x00, 0xdb, 0xff, 0x07, 0x00, 0xdd, 0xff, 0x02, 0x00, 0xdf, 0xff, 0xfc, 0xff, 0xe2, 0xff, 0xf8, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0xe8, 0xff, 0xf3, 0xff, 0xeb, 0xff, 0xf1, 0xff, 0xee, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xeb, 0xff, 0xf4, 0xff, 0xe5, 0xff, 0xf6, 0xff, 0xdf, 0xff, 0xf9, 0xff, 0xd9, 0xff, 0xfa, 0xff, 0xd4, 0xff, 0xfc, 0xff, 0xd1, 0xff, 0xfe, 0xff, 0xd0, 0xff, 0xff, 0xff, 0xd0, 0xff, 0x01, 0x00, 0xd1, 0xff, 0x02, 0x00, 0xd2, 0xff, 0x02, 0x00, 0xd1, 0xff, 0x02, 0x00, 0xce, 0xff, 0x03, 0x00, 0xca, 0xff, 0x04, 0x00, 0xc6, 0xff, 0x05, 0x00, 0xc4, 0xff, 0x07, 0x00, 0xc3, 0xff, 0x08, 0x00, 0xc5, 0xff, 0x09, 0x00, 0xc8, 0xff, 0x0a, 0x00, 0xcc, 0xff, 0x0b, 0x00, 0xcf, 0xff, 0x0d, 0x00, 0xd0, 0xff, 0x10, 0x00, 0xcf, 0xff, 0x13, 0x00, 0xcd, 0xff, 0x15, 0x00, 0xcc, 0xff, 0x16, 0x00, 0xce, 0xff, 0x16, 0x00, 0xd2, 0xff, 0x15, 0x00, 0xd7, 0xff, 0x14, 0x00, 0xdd, 0xff, 0x15, 0x00, 0xe1, 0xff, 0x18, 0x00, 0xe4, 0xff, 0x1d, 0x00, 0xe4, 0xff, 0x22, 0x00, 0xe3, 0xff, 0x25, 0x00, 0xe2, 0xff, 0x25, 0x00, 0xe1, 0xff, 0x23, 0x00, 0xe3, 0xff, 0x1f, 0x00, 0xe7, 0xff, 0x1a, 0x00, 0xed, 0xff, 0x16, 0x00, 0xf2, 0xff, 0x13, 0x00, 0xf6, 0xff, 0x12, 0x00, 0xf7, 0xff, 0x12, 0x00, 0xf7, 0xff, 0x14, 0x00, 0xf7, 0xff, 0x16, 0x00, 0xf7, 0xff, 0x15, 0x00, 0xfa, 0xff, 0x12, 0x00, 0xfe, 0xff, 0x0d, 0x00, 0x02, 0x00, 0x08, 0x00, 0x06, 0x00, 0x04, 0x00, 0x09, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x15, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x09, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x01, 0x00, 0x1c, 0x00, 0x02, 0x00, 0x1c, 0x00, 0x06, 0x00, 0x1c, 0x00, 0x0b, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x09, 0x00, 0x1d, 0x00, 0x02, 0x00, 0x1f, 0x00, 0xfb, 0xff, 0x20, 0x00, 0xf4, 0xff, 0x20, 0x00, 0xf1, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0x1c, 0x00, 0xf1, 0xff, 0x19, 0x00, 0xf3, 0xff, 0x17, 0x00, 0xf4, 0xff, 0x15, 0x00, 0xf2, 0xff, 0x15, 0x00, 0xee, 0xff, 0x16, 0x00, 0xe9, 0xff, 0x17, 0x00, 0xe5, 0xff, 0x18, 0x00, 0xe4, 0xff, 0x16, 0x00, 0xe6, 0xff, 0x13, 0x00, 0xea, 0xff, 0x0f, 0x00, 0xed, 0xff, 0x0a, 0x00, 0xf0, 0xff, 0x06, 0x00, 0xf1, 0xff, 0x04, 0x00, 0xf1, 0xff, 0x04, 0x00, 0xf2, 0xff, 0x05, 0x00, 0xf3, 0xff, 0x05, 0x00, 0xf6, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x0d, 0x00, 0xf5, 0xff, 0x13, 0x00, 0xf4, 0xff, 0x17, 0x00, 0xf6, 0xff, 0x19, 0x00, 0xfb, 0xff, 0x19, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05, 0x00, 0x16, 0x00, 0x08, 0x00, 0x16, 0x00, 0x08, 0x00, 0x17, 0x00, 0x06, 0x00, 0x18, 0x00, 0x03, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x18, 0x00, 0x04, 0x00, 0x16, 0x00, 0x0a, 0x00, 0x13, 0x00, 0x11, 0x00, 0x10, 0x00, 0x16, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x0d, 0x00, 0x18, 0x00, 0x0d, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x10, 0x00, 0x09, 0x00, 0x11, 0x00, 0x0b, 0x00, 0x13, 0x00, 0x0f, 0x00, 0x14, 0x00, 0x13, 0x00, 0x14, 0x00, 0x17, 0x00, 0x14, 0x00, 0x19, 0x00, 0x13, 0x00, 0x18, 0x00, 0x13, 0x00, 0x16, 0x00, 0x13, 0x00, 0x14, 0x00, 0x12, 0x00, 0x13, 0x00, 0x11, 0x00, 0x15, 0x00, 0x0f, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0x1f, 0x00, 0x09, 0x00, 0x23, 0x00, 0x05, 0x00, 0x25, 0x00, 0x01, 0x00, 0x24, 0x00, 0xfd, 0xff, 0x22, 0x00, 0xf9, 0xff, 0x1f, 0x00, 0xf6, 0xff, 0x1d, 0x00, 0xf4, 0xff, 0x1c, 0x00, 0xf0, 0xff, 0x1e, 0x00, 0xec, 0xff, 0x1f, 0x00, 0xe7, 0xff, 0x20, 0x00, 0xe3, 0xff, 0x20, 0x00, 0xe1, 0xff, 0x1d, 0x00, 0xe1, 0xff, 0x18, 0x00, 0xe2, 0xff, 0x14, 0x00, 0xe5, 0xff, 0x0f, 0x00, 0xe8, 0xff, 0x0b, 0x00, 0xe8, 0xff, 0x08, 0x00, 0xe7, 0xff, 0x05, 0x00, 0xe5, 0xff, 0x03, 0x00, 0xe2, 0xff, 0x02, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xe1, 0xff, 0xfc, 0xff, 0xe4, 0xff, 0xf7, 0xff, 0xe9, 0xff, 0xf1, 0xff, 0xee, 0xff, 0xeb, 0xff, 0xf2, 0xff, 0xe5, 0xff, 0xf3, 0xff, 0xe0, 0xff, 0xf2, 0xff, 0xdd, 0xff, 0xf1, 0xff, 0xdb, 0xff, 0xf0, 0xff, 0xd9, 0xff, 0xf1, 0xff, 0xd8, 0xff, 0xf4, 0xff, 0xd7, 0xff, 0xf7, 0xff, 0xd4, 0xff, 0xfb, 0xff, 0xd1, 0xff, 0xfd, 0xff, 0xcd, 0xff, 0xfe, 0xff, 0xc9, 0xff, 0xfe, 0xff, 0xc7, 0xff, 0xfd, 0xff, 0xc7, 0xff, 0xfc, 0xff, 0xc9, 0xff, 0xfc, 0xff, 0xcc, 0xff, 0xfd, 0xff, 0xce, 0xff, 0xfe, 0xff, 0xd0, 0xff, 0x00, 0x00, 0xd0, 0xff, 0x01, 0x00, 0xcf, 0xff, 0x01, 0x00, 0xce, 0xff, 0x01, 0x00, 0xcd, 0xff, 0x01, 0x00, 0xcc, 0xff, 0x02, 0x00, 0xcc, 0xff, 0x04, 0x00, 0xcd, 0xff, 0x06, 0x00, 0xcf, 0xff, 0x07, 0x00, 0xd1, 0xff, 0x09, 0x00, 0xd3, 0xff, 0x0b, 0x00, 0xd4, 0xff, 0x0d, 0x00, 0xd4, 0xff, 0x11, 0x00, 0xd4, 0xff, 0x14, 0x00, 0xd4, 0xff, 0x16, 0x00, 0xd7, 0xff, 0x17, 0x00, 0xdb, 0xff, 0x18, 0x00, 0xe0, 0xff, 0x1a, 0x00, 0xe5, 0xff, 0x1c, 0x00, 0xea, 0xff, 0x1f, 0x00, 0xef, 0xff, 0x22, 0x00, 0xf4, 0xff, 0x24, 0x00, 0xf8, 0xff, 0x24, 0x00, 0xfd, 0xff, 0x22, 0x00, 0x02, 0x00, 0x20, 0x00, 0x07, 0x00, 0x1d, 0x00, 0x0c, 0x00, 0x1a, 0x00, 0x11, 0x00, 0x1a, 0x00, 0x15, 0x00, 0x1b, 0x00, 0x17, 0x00, 0x1d, 0x00, 0x18, 0x00, 0x1f, 0x00, 0x1a, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x20, 0x00, 0x18, 0x00, 0x23, 0x00, 0x14, 0x00, 0x24, 0x00, 0x10, 0x00, 0x23, 0x00, 0x0f, 0x00, 0x21, 0x00, 0x0e, 0x00, 0x1f, 0x00, 0x0e, 0x00, 0x1d, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0x1d, 0x00, 0x08, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x21, 0x00, 0xfe, 0xff, 0x22, 0x00, 0xfa, 0xff, 0x21, 0x00, 0xf7, 0xff, 0x1e, 0x00, 0xf4, 0xff, 0x1a, 0x00, 0xf2, 0xff, 0x16, 0x00, 0xef, 0xff, 0x13, 0x00, 0xed, 0xff, 0x12, 0x00, 0xe9, 0xff, 0x12, 0x00, 0xe5, 0xff, 0x13, 0x00, 0xe1, 0xff, 0x13, 0x00, 0xde, 0xff, 0x12, 0x00, 0xdb, 0xff, 0x0f, 0x00, 0xd9, 0xff, 0x0b, 0x00, 0xd8, 0xff, 0x06, 0x00, 0xd6, 0xff, 0x03, 0x00, 0xd5, 0xff, 0x01, 0x00, 0xd4, 0xff, 0x01, 0x00, 0xd3, 0xff, 0x01, 0x00, 0xd3, 0xff, 0x01, 0x00, 0xd3, 0xff, 0x00, 0x00, 0xd2, 0xff, 0xff, 0xff, 0xd2, 0xff, 0xfd, 0xff, 0xd3, 0xff, 0xfa, 0xff, 0xd4, 0xff, 0xf5, 0xff, 0xd6, 0xff, 0xef, 0xff, 0xd7, 0xff, 0xe9, 0xff, 0xd8, 0xff, 0xe4, 0xff, 0xd9, 0xff, 0xe1, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xdc, 0xff, 0xe5, 0xff, 0xda, 0xff, 0xea, 0xff, 0xd8, 0xff, 0xed, 0xff, 0xd6, 0xff, 0xef, 0xff, 0xd4, 0xff, 0xf0, 0xff, 0xd4, 0xff, 0xf0, 0xff, 0xd5, 0xff, 0xf2, 0xff, 0xd7, 0xff, 0xf5, 0xff, 0xda, 0xff, 0xfa, 0xff, 0xde, 0xff, 0x00, 0x00, 0xe1, 0xff, 0x06, 0x00, 0xe5, 0xff, 0x0a, 0x00, 0xe9, 0xff, 0x0b, 0x00, 0xee, 0xff, 0x0a, 0x00, 0xf3, 0xff, 0x09, 0x00, 0xf9, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x0c, 0x00, 0x01, 0x00, 0x11, 0x00, 0x02, 0x00, 0x17, 0x00, 0x02, 0x00, 0x1d, 0x00, 0x02, 0x00, 0x22, 0x00, 0x02, 0x00, 0x23, 0x00, 0x02, 0x00, 0x22, 0x00, 0x04, 0x00, 0x20, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x06, 0x00, 0x20, 0x00, 0x05, 0x00, 0x23, 0x00, 0x03, 0x00, 0x26, 0x00, 0x01, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28, 0x00, 0x01, 0x00, 0x25, 0x00, 0x03, 0x00, 0x20, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x0a, 0x00, 0x15, 0x00, 0x0d, 0x00, 0x12, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x0d, 0x00, 0x13, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x06, 0x00, 0x16, 0x00, 0x02, 0x00, 0x19, 0x00, 0xfe, 0xff, 0x1b, 0x00, 0xf9, 0xff, 0x1c, 0x00, 0xf5, 0xff, 0x1c, 0x00, 0xf1, 0xff, 0x1c, 0x00, 0xec, 0xff, 0x1d, 0x00, 0xe9, 0xff, 0x1d, 0x00, 0xe7, 0xff, 0x1d, 0x00, 0xe5, 0xff, 0x1e, 0x00, 0xe5, 0xff, 0x1f, 0x00, 0xe5, 0xff, 0x20, 0x00, 0xe5, 0xff, 0x20, 0x00, 0xe4, 0xff, 0x20, 0x00, 0xe1, 0xff, 0x1f, 0x00, 0xdd, 0xff, 0x1f, 0x00, 0xd9, 0xff, 0x20, 0x00, 0xd5, 0xff, 0x21, 0x00, 0xd4, 0xff, 0x22, 0x00, 0xd4, 0xff, 0x23, 0x00, 0xd5, 0xff, 0x23, 0x00, 0xd6, 0xff, 0x22, 0x00, 0xd7, 0xff, 0x21, 0x00, 0xd8, 0xff, 0x1f, 0x00, 0xd9, 0xff, 0x1d, 0x00, 0xd9, 0xff, 0x1a, 0x00, 0xd9, 0xff, 0x19, 0x00, 0xda, 0xff, 0x18, 0x00, 0xdd, 0xff, 0x17, 0x00, 0xe1, 0xff, 0x14, 0x00, 0xe6, 0xff, 0x10, 0x00, 0xec, 0xff, 0x0a, 0x00, 0xf1, 0xff, 0x05, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x09, 0x00, 0xf9, 0xff, 0x10, 0x00, 0xf7, 0xff, 0x1a, 0x00, 0xf4, 0xff, 0x23, 0x00, 0xf0, 0xff, 0x2b, 0x00, 0xeb, 0xff, 0x30, 0x00, 0xe6, 0xff, 0x32, 0x00, 0xe1, 0xff, 0x33, 0x00, 0xdf, 0xff, 0x32, 0x00, 0xde, 0xff, 0x32, 0x00, 0xde, 0xff, 0x33, 0x00, 0xdd, 0xff, 0x36, 0x00, 0xdb, 0xff, 0x3b, 0x00, 0xd9, 0xff, 0x41, 0x00, 0xd6, 0xff, 0x44, 0x00, 0xd4, 0xff, 0x45, 0x00, 0xd3, 0xff, 0x43, 0x00, 0xd3, 0xff, 0x3e, 0x00, 0xd6, 0xff, 0x3a, 0x00, 0xda, 0xff, 0x37, 0x00, 0xdf, 0xff, 0x37, 0x00, 0xe4, 0xff, 0x38, 0x00, 0xe8, 0xff, 0x3a, 0x00, 0xec, 0xff, 0x3b, 0x00, 0xf1, 0xff, 0x3b, 0x00, 0xf6, 0xff, 0x39, 0x00, 0xfd, 0xff, 0x37, 0x00, 0x04, 0x00, 0x35, 0x00, 0x0b, 0x00, 0x36, 0x00, 0x11, 0x00, 0x37, 0x00, 0x17, 0x00, 0x38, 0x00, 0x1b, 0x00, 0x36, 0x00, 0x1f, 0x00, 0x33, 0x00, 0x22, 0x00, 0x2e, 0x00, 0x25, 0x00, 0x29, 0x00, 0x28, 0x00, 0x25, 0x00, 0x2b, 0x00, 0x23, 0x00, 0x2d, 0x00, 0x22, 0x00, 0x2d, 0x00, 0x21, 0x00, 0x2c, 0x00, 0x1e, 0x00, 0x29, 0x00, 0x1a, 0x00, 0x25, 0x00, 0x13, 0x00, 0x22, 0x00, 0x0b, 0x00, 0x20, 0x00, 0x03, 0x00, 0x1f, 0x00, 0xfd, 0xff, 0x1e, 0x00, 0xf9, 0xff, 0x1c, 0x00, 0xf7, 0xff, 0x1a, 0x00, 0xf4, 0xff, 0x17, 0x00, 0xf0, 0xff, 0x15, 0x00, 0xea, 0xff, 0x12, 0x00, 0xe5, 0xff, 0x11, 0x00, 0xe0, 0xff, 0x10, 0x00, 0xdd, 0xff, 0x0f, 0x00, 0xdb, 0xff, 0x0d, 0x00, 0xdb, 0xff, 0x0b, 0x00, 0xda, 0xff, 0x08, 0x00, 0xda, 0xff, 0x06, 0x00, 0xd9, 0xff, 0x04, 0x00, 0xd8, 0xff, 0x04, 0x00, 0xd6, 0xff, 0x04, 0x00, 0xd3, 0xff, 0x03, 0x00, 0xd1, 0xff, 0x02, 0x00, 0xce, 0xff, 0x00, 0x00, 0xcc, 0xff, 0xfd, 0xff, 0xcb, 0xff, 0xfb, 0xff, 0xca, 0xff, 0xfb, 0xff, 0xcc, 0xff, 0xfb, 0xff, 0xce, 0xff, 0xfc, 0xff, 0xd1, 0xff, 0xfb, 0xff, 0xd3, 0xff, 0xf9, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0xd2, 0xff, 0xf2, 0xff, 0xcf, 0xff, 0xee, 0xff, 0xcd, 0xff, 0xeb, 0xff, 0xcb, 0xff, 0xea, 0xff, 0xcd, 0xff, 0xe9, 0xff, 0xd2, 0xff, 0xe8, 0xff, 0xd9, 0xff, 0xe7, 0xff, 0xe1, 0xff, 0xe5, 0xff, 0xe8, 0xff, 0xe3, 0xff, 0xed, 0xff, 0xe0, 0xff, 0xf0, 0xff, 0xde, 0xff, 0xf2, 0xff, 0xdb, 0xff, 0xf4, 0xff, 0xd8, 0xff, 0xf7, 0xff, 0xd7, 0xff, 0xfc, 0xff, 0xd8, 0xff, 0x01, 0x00, 0xda, 0xff, 0x08, 0x00, 0xdd, 0xff, 0x0d, 0x00, 0xe0, 0xff, 0x12, 0x00, 0xe1, 0xff, 0x15, 0x00, 0xe0, 0xff, 0x17, 0x00, 0xdd, 0xff, 0x1a, 0x00, 0xda, 0xff, 0x1c, 0x00, 0xd8, 0xff, 0x1d, 0x00, 0xd8, 0xff, 0x1e, 0x00, 0xdb, 0xff, 0x1f, 0x00, 0xe1, 0xff, 0x21, 0x00, 0xe7, 0xff, 0x23, 0x00, 0xed, 0xff, 0x24, 0x00, 0xf0, 0xff, 0x25, 0x00, 0xf0, 0xff, 0x24, 0x00, 0xef, 0xff, 0x21, 0x00, 0xed, 0xff, 0x1d, 0x00, 0xee, 0xff, 0x19, 0x00, 0xf1, 0xff, 0x16, 0x00, 0xf8, 0xff, 0x15, 0x00, 0x00, 0x00, 0x14, 0x00, 0x07, 0x00, 0x15, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x0b, 0x00, 0x13, 0x00, 0x07, 0x00, 0x16, 0x00, 0x04, 0x00, 0x19, 0x00, 0x03, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x20, 0x00, 0x03, 0x00, 0x22, 0x00, 0x02, 0x00, 0x22, 0x00, 0x01, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1f, 0x00, 0xfe, 0xff, 0x1c, 0x00, 0xfc, 0xff, 0x18, 0x00, 0xfa, 0xff, 0x15, 0x00, 0xf8, 0xff, 0x13, 0x00, 0xf6, 0xff, 0x12, 0x00, 0xf3, 0xff, 0x12, 0x00, 0xf1, 0xff, 0x12, 0x00, 0xee, 0xff, 0x10, 0x00, 0xed, 0xff, 0x0d, 0x00, 0xed, 0xff, 0x09, 0x00, 0xed, 0xff, 0x04, 0x00, 0xec, 0xff, 0x01, 0x00, 0xeb, 0xff, 0xff, 0xff, 0xea, 0xff, 0xff, 0xff, 0xe8, 0xff, 0xff, 0xff, 0xe7, 0xff, 0x01, 0x00, 0xe7, 0xff, 0x01, 0x00, 0xe7, 0xff, 0x01, 0x00, 0xe8, 0xff, 0x00, 0x00, 0xea, 0xff, 0xfe, 0xff, 0xeb, 0xff, 0xfc, 0xff, 0xeb, 0xff, 0xfc, 0xff, 0xea, 0xff, 0xfd, 0xff, 0xea, 0xff, 0x00, 0x00, 0xea, 0xff, 0x01, 0x00, 0xec, 0xff, 0x01, 0x00, 0xee, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xfb, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xed, 0xff, 0xf3, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xf5, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xf4, 0xff, 0xf1, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfb, 0xff, 0x0e, 0x00, 0xfc, 0xff, 0x12, 0x00, 0xff, 0xff, 0x16, 0x00, 0x03, 0x00, 0x1b, 0x00, 0x08, 0x00, 0x1e, 0x00, 0x0b, 0x00, 0x21, 0x00, 0x0e, 0x00, 0x22, 0x00, 0x0e, 0x00, 0x22, 0x00, 0x0e, 0x00, 0x22, 0x00, 0x0e, 0x00, 0x20, 0x00, 0x0e, 0x00, 0x20, 0x00, 0x10, 0x00, 0x20, 0x00, 0x12, 0x00, 0x21, 0x00, 0x15, 0x00, 0x22, 0x00, 0x16, 0x00, 0x23, 0x00, 0x17, 0x00, 0x23, 0x00, 0x16, 0x00, 0x22, 0x00, 0x14, 0x00, 0x1f, 0x00, 0x10, 0x00, 0x1d, 0x00, 0x0d, 0x00, 0x1a, 0x00, 0x0b, 0x00, 0x1a, 0x00, 0x0a, 0x00, 0x1b, 0x00, 0x0a, 0x00, 0x1d, 0x00, 0x09, 0x00, 0x20, 0x00, 0x08, 0x00, 0x22, 0x00, 0x05, 0x00, 0x23, 0x00, 0x01, 0x00, 0x22, 0x00, 0xfc, 0xff, 0x21, 0x00, 0xf6, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0x1e, 0x00, 0xeb, 0xff, 0x1f, 0x00, 0xe8, 0xff, 0x21, 0x00, 0xe6, 0xff, 0x24, 0x00, 0xe5, 0xff, 0x28, 0x00, 0xe4, 0xff, 0x29, 0x00, 0xe3, 0xff, 0x27, 0x00, 0xe0, 0xff, 0x23, 0x00, 0xdd, 0xff, 0x1c, 0x00, 0xd9, 0xff, 0x15, 0x00, 0xd5, 0xff, 0x0e, 0x00, 0xd2, 0xff, 0x0a, 0x00, 0xd1, 0xff, 0x08, 0x00, 0xd1, 0xff, 0x06, 0x00, 0xd2, 0xff, 0x04, 0x00, 0xd3, 0xff, 0xff, 0xff, 0xd4, 0xff, 0xf9, 0xff, 0xd5, 0xff, 0xef, 0xff, 0xd6, 0xff, 0xe4, 0xff, 0xd7, 0xff, 0xda, 0xff, 0xd7, 0xff, 0xd1, 0xff, 0xd8, 0xff, 0xcb, 0xff, 0xda, 0xff, 0xc8, 0xff, 0xde, 0xff, 0xc8, 0xff, 0xe2, 0xff, 0xc9, 0xff, 0xe6, 0xff, 0xc9, 0xff, 0xea, 0xff, 0xc6, 0xff, 0xed, 0xff, 0xc2, 0xff, 0xee, 0xff, 0xbd, 0xff, 0xef, 0xff, 0xb9, 0xff, 0xf0, 0xff, 0xb7, 0xff, 0xf2, 0xff, 0xb8, 0xff, 0xf5, 0xff, 0xbc, 0xff, 0xf9, 0xff, 0xc3, 0xff, 0xfe, 0xff, 0xc9, 0xff, 0x03, 0x00, 0xcf, 0xff, 0x07, 0x00, 0xd2, 0xff, 0x0a, 0x00, 0xd4, 0xff, 0x0b, 0x00, 0xd5, 0xff, 0x0b, 0x00, 0xd7, 0xff, 0x0c, 0x00, 0xd9, 0xff, 0x0f, 0x00, 0xdd, 0xff, 0x13, 0x00, 0xe3, 0xff, 0x17, 0x00, 0xe8, 0xff, 0x1c, 0x00, 0xed, 0xff, 0x20, 0x00, 0xef, 0xff, 0x23, 0x00, 0xef, 0xff, 0x25, 0x00, 0xed, 0xff, 0x25, 0x00, 0xec, 0xff, 0x24, 0x00, 0xec, 0xff, 0x24, 0x00, 0xee, 0xff, 0x25, 0x00, 0xf2, 0xff, 0x27, 0x00, 0xf8, 0xff, 0x29, 0x00, 0xfd, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x01, 0x00, 0x28, 0x00, 0x00, 0x00, 0x25, 0x00, 0xff, 0xff, 0x22, 0x00, 0xfe, 0xff, 0x20, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x02, 0x00, 0x20, 0x00, 0x07, 0x00, 0x21, 0x00, 0x0c, 0x00, 0x21, 0x00, 0x10, 0x00, 0x20, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x15, 0x00, 0x1c, 0x00, 0x16, 0x00, 0x1b, 0x00, 0x17, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x1d, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x1b, 0x00, 0x1f, 0x00, 0x1b, 0x00, 0x1f, 0x00, 0x1a, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x1d, 0x00, 0x15, 0x00, 0x1b, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x13, 0x00, 0x19, 0x00, 0x13, 0x00, 0x18, 0x00, 0x13, 0x00, 0x18, 0x00, 0x12, 0x00, 0x17, 0x00, 0x0f, 0x00, 0x15, 0x00, 0x0b, 0x00, 0x12, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xfb, 0xff, 0x0a, 0x00, 0xf7, 0xff, 0x09, 0x00, 0xf3, 0xff, 0x08, 0x00, 0xee, 0xff, 0x06, 0x00, 0xea, 0xff, 0x03, 0x00, 0xe7, 0xff, 0x00, 0x00, 0xe4, 0xff, 0xfc, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xe0, 0xff, 0xf9, 0xff, 0xdc, 0xff, 0xf8, 0xff, 0xd8, 0xff, 0xf8, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0xd0, 0xff, 0xf3, 0xff, 0xcd, 0xff, 0xf0, 0xff, 0xcd, 0xff, 0xef, 0xff, 0xce, 0xff, 0xf1, 0xff, 0xd1, 0xff, 0xf4, 0xff, 0xd3, 0xff, 0xf8, 0xff, 0xd5, 0xff, 0xfa, 0xff, 0xd4, 0xff, 0xfa, 0xff, 0xd3, 0xff, 0xf9, 0xff, 0xd2, 0xff, 0xf7, 0xff, 0xd2, 0xff, 0xf6, 0xff, 0xd5, 0xff, 0xf7, 0xff, 0xda, 0xff, 0xfa, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xe6, 0xff, 0x05, 0x00, 0xea, 0xff, 0x08, 0x00, 0xed, 0xff, 0x09, 0x00, 0xed, 0xff, 0x07, 0x00, 0xed, 0xff, 0x05, 0x00, 0xed, 0xff, 0x02, 0x00, 0xef, 0xff, 0x02, 0x00, 0xf3, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x0c, 0x00, 0xff, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x0d, 0x00, 0xfa, 0xff, 0x0e, 0x00, 0xfa, 0xff, 0x11, 0x00, 0xfd, 0xff, 0x13, 0x00, 0x02, 0x00, 0x14, 0x00, 0x09, 0x00, 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, 0x17, 0x00, 0x13, 0x00, 0x1c, 0x00, 0x12, 0x00, 0x20, 0x00, 0x11, 0x00, 0x22, 0x00, 0x0f, 0x00, 0x24, 0x00, 0x0d, 0x00, 0x27, 0x00, 0x0b, 0x00, 0x2c, 0x00, 0x0b, 0x00, 0x32, 0x00, 0x0b, 0x00, 0x3a, 0x00, 0x0b, 0x00, 0x41, 0x00, 0x0a, 0x00, 0x47, 0x00, 0x08, 0x00, 0x4b, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4d, 0x00, 0xfc, 0xff, 0x4d, 0x00, 0xfa, 0xff, 0x4c, 0x00, 0xf8, 0xff, 0x4b, 0x00, 0xf9, 0xff, 0x4a, 0x00, 0xf9, 0xff, 0x4a, 0x00, 0xf9, 0xff, 0x49, 0x00, 0xf7, 0xff, 0x47, 0x00, 0xf2, 0xff, 0x44, 0x00, 0xed, 0xff, 0x41, 0x00, 0xe9, 0xff, 0x3e, 0x00, 0xe6, 0xff, 0x3a, 0x00, 0xe5, 0xff, 0x35, 0x00, 0xe4, 0xff, 0x2f, 0x00, 0xe4, 0xff, 0x2a, 0x00, 0xe3, 0xff, 0x24, 0x00, 0xe1, 0xff, 0x20, 0x00, 0xde, 0xff, 0x1d, 0x00, 0xdb, 0xff, 0x1b, 0x00, 0xd9, 0xff, 0x19, 0x00, 0xd9, 0xff, 0x17, 0x00, 0xd9, 0xff, 0x13, 0x00, 0xdb, 0xff, 0x0d, 0x00, 0xdc, 0xff, 0x06, 0x00, 0xdd, 0xff, 0xff, 0xff, 0xdd, 0xff, 0xfa, 0xff, 0xdd, 0xff, 0xf9, 0xff, 0xde, 0xff, 0xfb, 0xff, 0xdf, 0xff, 0xfe, 0xff, 0xe0, 0xff, 0x01, 0x00, 0xe1, 0xff, 0x02, 0x00, 0xe2, 0xff, 0x00, 0x00, 0xe4, 0xff, 0xfc, 0xff, 0xe6, 0xff, 0xf7, 0xff, 0xea, 0xff, 0xf4, 0xff, 0xed, 0xff, 0xf3, 0xff, 0xef, 0xff, 0xf6, 0xff, 0xf1, 0xff, 0xf9, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xfb, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xee, 0xff, 0x02, 0x00, 0xee, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x03, 0x00, 0xf3, 0xff, 0x04, 0x00, 0xf6, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x09, 0x00, 0xf9, 0xff, 0x0c, 0x00, 0xf7, 0xff, 0x0f, 0x00, 0xf5, 0xff, 0x11, 0x00, 0xf3, 0xff, 0x13, 0x00, 0xf3, 0xff, 0x15, 0x00, 0xf5, 0xff, 0x18, 0x00, 0xf7, 0xff, 0x1a, 0x00, 0xf9, 0xff, 0x1e, 0x00, 0xfc, 0xff, 0x22, 0x00, 0xfd, 0xff, 0x25, 0x00, 0xfd, 0xff, 0x26, 0x00, 0xfc, 0xff, 0x26, 0x00, 0xfa, 0xff, 0x26, 0x00, 0xf9, 0xff, 0x26, 0x00, 0xf9, 0xff, 0x27, 0x00, 0xfb, 0xff, 0x29, 0x00, 0xfe, 0xff, 0x2c, 0x00, 0x01, 0x00, 0x2d, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x05, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x29, 0x00, 0x08, 0x00, 0x25, 0x00, 0x09, 0x00, 0x22, 0x00, 0x09, 0x00, 0x20, 0x00, 0x0a, 0x00, 0x1d, 0x00, 0x0c, 0x00, 0x19, 0x00, 0x0d, 0x00, 0x16, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x08, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf1, 0xff, 0xf9, 0xff, 0xef, 0xff, 0xf9, 0xff, 0xed, 0xff, 0xf8, 0xff, 0xeb, 0xff, 0xf6, 0xff, 0xe9, 0xff, 0xf6, 0xff, 0xe7, 0xff, 0xf6, 0xff, 0xe5, 0xff, 0xf7, 0xff, 0xe2, 0xff, 0xf8, 0xff, 0xe0, 0xff, 0xf9, 0xff, 0xde, 0xff, 0xf9, 0xff, 0xdc, 0xff, 0xf7, 0xff, 0xda, 0xff, 0xf4, 0xff, 0xda, 0xff, 0xf3, 0xff, 0xd9, 0xff, 0xf2, 0xff, 0xd9, 0xff, 0xf3, 0xff, 0xd8, 0xff, 0xf5, 0xff, 0xd7, 0xff, 0xf8, 0xff, 0xd5, 0xff, 0xf9, 0xff, 0xd4, 0xff, 0xfa, 0xff, 0xd4, 0xff, 0xfa, 0xff, 0xd5, 0xff, 0xfa, 0xff, 0xd8, 0xff, 0xfa, 0xff, 0xdd, 0xff, 0xfa, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xe5, 0xff, 0xfb, 0xff, 0xe8, 0xff, 0xfd, 0xff, 0xe8, 0xff, 0xff, 0xff, 0xe7, 0xff, 0x02, 0x00, 0xe6, 0xff, 0x04, 0x00, 0xe7, 0xff, 0x05, 0x00, 0xeb, 0xff, 0x06, 0x00, 0xf0, 0xff, 0x06, 0x00, 0xf6, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x06, 0x00, 0xff, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfb, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xff, 0xff, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0xff, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x02, 0x00, 0x09, 0x00, 0x02, 0x00, 0x07, 0x00, 0x01, 0x00, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x0b, 0x00, 0xf5, 0xff, 0x0f, 0x00, 0xf7, 0xff, 0x11, 0x00, 0xfa, 0xff, 0x12, 0x00, 0xfe, 0xff, 0x11, 0x00, 0x00, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x0e, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0xf8, 0xff, 0x10, 0x00, 0xf5, 0xff, 0x12, 0x00, 0xf4, 0xff, 0x12, 0x00, 0xf5, 0xff, 0x12, 0x00, 0xf6, 0xff, 0x11, 0x00, 0xf8, 0xff, 0x10, 0x00, 0xf8, 0xff, 0x10, 0x00, 0xf5, 0xff, 0x11, 0x00, 0xf1, 0xff, 0x12, 0x00, 0xed, 0xff, 0x12, 0x00, 0xe9, 0xff, 0x12, 0x00, 0xe7, 0xff, 0x11, 0x00, 0xe7, 0xff, 0x10, 0x00, 0xe8, 0xff, 0x0f, 0x00, 0xe9, 0xff, 0x0e, 0x00, 0xe9, 0xff, 0x0d, 0x00, 0xe8, 0xff, 0x0e, 0x00, 0xe6, 0xff, 0x0e, 0x00, 0xe5, 0xff, 0x0e, 0x00, 0xe5, 0xff, 0x0d, 0x00, 0xe5, 0xff, 0x0a, 0x00, 0xe6, 0xff, 0x07, 0x00, 0xe9, 0xff, 0x05, 0x00, 0xec, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x03, 0x00, 0xf4, 0xff, 0x03, 0x00, 0xf7, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf7, 0xff, 0x0b, 0x00, 0xf6, 0xff, 0x0f, 0x00, 0xf5, 0xff, 0x10, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0xf3, 0xff, 0x0d, 0x00, 0xf2, 0xff, 0x0c, 0x00, 0xf2, 0xff, 0x0d, 0x00, 0xf2, 0xff, 0x0f, 0x00, 0xf1, 0xff, 0x12, 0x00, 0xef, 0xff, 0x15, 0x00, 0xed, 0xff, 0x16, 0x00, 0xeb, 0xff, 0x16, 0x00, 0xeb, 0xff, 0x13, 0x00, 0xea, 0xff, 0x10, 0x00, 0xea, 0xff, 0x0d, 0x00, 0xeb, 0xff, 0x0a, 0x00, 0xed, 0xff, 0x07, 0x00, 0xef, 0xff, 0x05, 0x00, 0xf3, 0xff, 0x04, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x07, 0x00, 0xff, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0e, 0x00, 0xfb, 0xff, 0x12, 0x00, 0xfb, 0xff, 0x17, 0x00, 0xfc, 0xff, 0x1c, 0x00, 0xfd, 0xff, 0x20, 0x00, 0xff, 0xff, 0x22, 0x00, 0x00, 0x00, 0x24, 0x00, 0xfe, 0xff, 0x25, 0x00, 0xfc, 0xff, 0x26, 0x00, 0xf9, 0xff, 0x27, 0x00, 0xf7, 0xff, 0x29, 0x00, 0xf7, 0xff, 0x2b, 0x00, 0xf9, 0xff, 0x2e, 0x00, 0xfa, 0xff, 0x30, 0x00, 0xfb, 0xff, 0x31, 0x00, 0xf9, 0xff, 0x32, 0x00, 0xf6, 0xff, 0x32, 0x00, 0xf1, 0xff, 0x31, 0x00, 0xec, 0xff, 0x30, 0x00, 0xea, 0xff, 0x2e, 0x00, 0xeb, 0xff, 0x2c, 0x00, 0xec, 0xff, 0x2b, 0x00, 0xee, 0xff, 0x2a, 0x00, 0xef, 0xff, 0x28, 0x00, 0xed, 0xff, 0x25, 0x00, 0xe9, 0xff, 0x22, 0x00, 0xe5, 0xff, 0x1e, 0x00, 0xe2, 0xff, 0x1a, 0x00, 0xe0, 0xff, 0x15, 0x00, 0xe1, 0xff, 0x10, 0x00, 0xe3, 0xff, 0x0b, 0x00, 0xe4, 0xff, 0x06, 0x00, 0xe6, 0xff, 0x02, 0x00, 0xe5, 0xff, 0xfe, 0xff, 0xe4, 0xff, 0xfb, 0xff, 0xe2, 0xff, 0xf7, 0xff, 0xe1, 0xff, 0xf2, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xed, 0xff, 0xe1, 0xff, 0xf4, 0xff, 0xde, 0xff, 0xfc, 0xff, 0xdc, 0xff, 0x02, 0x00, 0xdc, 0xff, 0x07, 0x00, 0xdc, 0xff, 0x0a, 0x00, 0xdb, 0xff, 0x0c, 0x00, 0xda, 0xff, 0x0e, 0x00, 0xd8, 0xff, 0x10, 0x00, 0xd5, 0xff, 0x14, 0x00, 0xd2, 0xff, 0x1a, 0x00, 0xd1, 0xff, 0x22, 0x00, 0xd0, 0xff, 0x29, 0x00, 0xd2, 0xff, 0x2f, 0x00, 0xd4, 0xff, 0x31, 0x00, 0xd5, 0xff, 0x30, 0x00, 0xd7, 0xff, 0x2d, 0x00, 0xd7, 0xff, 0x28, 0x00, 0xd7, 0xff, 0x24, 0x00, 0xd7, 0xff, 0x23, 0x00, 0xd7, 0xff, 0x25, 0x00, 0xd8, 0xff, 0x27, 0x00, 0xda, 0xff, 0x28, 0x00, 0xdd, 0xff, 0x26, 0x00, 0xe1, 0xff, 0x21, 0x00, 0xe3, 0xff, 0x1a, 0x00, 0xe4, 0xff, 0x13, 0x00, 0xe3, 0xff, 0x0d, 0x00, 0xe1, 0xff, 0x0a, 0x00, 0xdf, 0xff, 0x09, 0x00, 0xe0, 0xff, 0x0a, 0x00, 0xe2, 0xff, 0x0b, 0x00, 0xe7, 0xff, 0x0a, 0x00, 0xed, 0xff, 0x08, 0x00, 0xf2, 0xff, 0x03, 0x00, 0xf5, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfb, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x13, 0x00, 0x07, 0x00, 0x19, 0x00, 0x06, 0x00, 0x1c, 0x00, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0xfc, 0xff, 0x20, 0x00, 0xfb, 0xff, 0x23, 0x00, 0xfa, 0xff, 0x26, 0x00, 0xfb, 0xff, 0x2a, 0x00, 0xfc, 0xff, 0x2d, 0x00, 0xfb, 0xff, 0x2e, 0x00, 0xf8, 0xff, 0x2f, 0x00, 0xf4, 0xff, 0x2e, 0x00, 0xef, 0xff, 0x2c, 0x00, 0xeb, 0xff, 0x2a, 0x00, 0xe8, 0xff, 0x29, 0x00, 0xe6, 0xff, 0x28, 0x00, 0xe5, 0xff, 0x27, 0x00, 0xe4, 0xff, 0x27, 0x00, 0xe3, 0xff, 0x26, 0x00, 0xe1, 0xff, 0x25, 0x00, 0xe0, 0xff, 0x23, 0x00, 0xe0, 0xff, 0x20, 0x00, 0xe0, 0xff, 0x1c, 0x00, 0xe0, 0xff, 0x18, 0x00, 0xe1, 0xff, 0x14, 0x00, 0xe2, 0xff, 0x11, 0x00, 0xe3, 0xff, 0x0f, 0x00, 0xe3, 0xff, 0x0d, 0x00, 0xe3, 0xff, 0x0a, 0x00, 0xe5, 0xff, 0x06, 0x00, 0xe8, 0xff, 0x00, 0x00, 0xee, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xed, 0xff, 0x01, 0x00, 0xe8, 0xff, 0x05, 0x00, 0xe6, 0xff, 0x08, 0x00, 0xe5, 0xff, 0x0b, 0x00, 0xe4, 0xff, 0x0f, 0x00, 0xe1, 0xff, 0x13, 0x00, 0xde, 0xff, 0x18, 0x00, 0xd9, 0xff, 0x1d, 0x00, 0xd3, 0xff, 0x22, 0x00, 0xcf, 0xff, 0x26, 0x00, 0xcc, 0xff, 0x28, 0x00, 0xca, 0xff, 0x28, 0x00, 0xc8, 0xff, 0x27, 0x00, 0xc6, 0xff, 0x27, 0x00, 0xc5, 0xff, 0x26, 0x00, 0xc3, 0xff, 0x25, 0x00, 0xc0, 0xff, 0x25, 0x00, 0xbe, 0xff, 0x25, 0x00, 0xbc, 0xff, 0x25, 0x00, 0xbc, 0xff, 0x26, 0x00, 0xbd, 0xff, 0x26, 0x00, 0xc0, 0xff, 0x25, 0x00, 0xc4, 0xff, 0x23, 0x00, 0xc9, 0xff, 0x20, 0x00, 0xce, 0xff, 0x1d, 0x00, 0xd3, 0xff, 0x1a, 0x00, 0xd8, 0xff, 0x19, 0x00, 0xdb, 0xff, 0x18, 0x00, 0xdd, 0xff, 0x18, 0x00, 0xdf, 0xff, 0x18, 0x00, 0xe3, 0xff, 0x17, 0x00, 0xe8, 0xff, 0x16, 0x00, 0xf0, 0xff, 0x14, 0x00, 0xf9, 0xff, 0x11, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x09, 0x00, 0x05, 0x00, 0x07, 0x00, 0x04, 0x00, 0x09, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x15, 0x00, 0xff, 0xff, 0x1c, 0x00, 0xfc, 0xff, 0x20, 0x00, 0xfa, 0xff, 0x21, 0x00, 0xf7, 0xff, 0x1f, 0x00, 0xf5, 0xff, 0x1c, 0x00, 0xf2, 0xff, 0x1b, 0x00, 0xef, 0xff, 0x1d, 0x00, 0xec, 0xff, 0x21, 0x00, 0xe9, 0xff, 0x27, 0x00, 0xe6, 0xff, 0x2c, 0x00, 0xe2, 0xff, 0x30, 0x00, 0xdd, 0xff, 0x30, 0x00, 0xd9, 0xff, 0x2f, 0x00, 0xd4, 0xff, 0x2d, 0x00, 0xd2, 0xff, 0x2c, 0x00, 0xd0, 0xff, 0x2d, 0x00, 0xd1, 0xff, 0x30, 0x00, 0xd2, 0xff, 0x33, 0x00, 0xd4, 0xff, 0x36, 0x00, 0xd5, 0xff, 0x38, 0x00, 0xd5, 0xff, 0x38, 0x00, 0xd5, 0xff, 0x36, 0x00, 0xd5, 0xff, 0x33, 0x00, 0xd6, 0xff, 0x31, 0x00, 0xd9, 0xff, 0x2f, 0x00, 0xdd, 0xff, 0x2e, 0x00, 0xe2, 0xff, 0x2e, 0x00, 0xe7, 0xff, 0x2c, 0x00, 0xec, 0xff, 0x2b, 0x00, 0xef, 0xff, 0x28, 0x00, 0xf3, 0xff, 0x25, 0x00, 0xf6, 0xff, 0x21, 0x00, 0xf8, 0xff, 0x1c, 0x00, 0xfa, 0xff, 0x17, 0x00, 0xfa, 0xff, 0x11, 0x00, 0xfb, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x05, 0x00, 0x01, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x09, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xf9, 0xff, 0x0a, 0x00, 0xf4, 0xff, 0x09, 0x00, 0xef, 0xff, 0x07, 0x00, 0xeb, 0xff, 0x07, 0x00, 0xea, 0xff, 0x07, 0x00, 0xea, 0xff, 0x0a, 0x00, 0xeb, 0xff, 0x0e, 0x00, 0xec, 0xff, 0x11, 0x00, 0xec, 0xff, 0x13, 0x00, 0xeb, 0xff, 0x13, 0x00, 0xea, 0xff, 0x13, 0x00, 0xe8, 0xff, 0x11, 0x00, 0xe8, 0xff, 0x11, 0x00, 0xea, 0xff, 0x12, 0x00, 0xed, 0xff, 0x15, 0x00, 0xf1, 0xff, 0x19, 0x00, 0xf4, 0xff, 0x1c, 0x00, 0xf7, 0xff, 0x1e, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0xf9, 0xff, 0x1e, 0x00, 0xfa, 0xff, 0x1d, 0x00, 0xfb, 0xff, 0x1b, 0x00, 0xfd, 0xff, 0x18, 0x00, 0xff, 0xff, 0x16, 0x00, 0x01, 0x00, 0x14, 0x00, 0x02, 0x00, 0x12, 0x00, 0x03, 0x00, 0x11, 0x00, 0x04, 0x00, 0x10, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x08, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x08, 0x00, 0xf3, 0xff, 0x09, 0x00, 0xf1, 0xff, 0x0a, 0x00, 0xf0, 0xff, 0x0a, 0x00, 0xf0, 0xff, 0x0b, 0x00, 0xef, 0xff, 0x0b, 0x00, 0xed, 0xff, 0x0b, 0x00, 0xea, 0xff, 0x0b, 0x00, 0xe6, 0xff, 0x0b, 0x00, 0xe4, 0xff, 0x0d, 0x00, 0xe2, 0xff, 0x0f, 0x00, 0xe2, 0xff, 0x11, 0x00, 0xe3, 0xff, 0x12, 0x00, 0xe4, 0xff, 0x12, 0x00, 0xe3, 0xff, 0x10, 0x00, 0xe1, 0xff, 0x0e, 0x00, 0xde, 0xff, 0x0c, 0x00, 0xdd, 0xff, 0x0b, 0x00, 0xdb, 0xff, 0x0a, 0x00, 0xdb, 0xff, 0x0b, 0x00, 0xdc, 0xff, 0x0a, 0x00, 0xdd, 0xff, 0x08, 0x00, 0xde, 0xff, 0x04, 0x00, 0xdf, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xfb, 0xff, 0xe1, 0xff, 0xf7, 0xff, 0xe2, 0xff, 0xf6, 0xff, 0xe4, 0xff, 0xf5, 0xff, 0xe6, 0xff, 0xf4, 0xff, 0xe8, 0xff, 0xf3, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xf1, 0xff, 0xe1, 0xff, 0xf5, 0xff, 0xdd, 0xff, 0xfa, 0xff, 0xdb, 0xff, 0xfe, 0xff, 0xda, 0xff, 0x02, 0x00, 0xda, 0xff, 0x05, 0x00, 0xda, 0xff, 0x07, 0x00, 0xdb, 0xff, 0x0a, 0x00, 0xda, 0xff, 0x0d, 0x00, 0xda, 0xff, 0x11, 0x00, 0xd9, 0xff, 0x15, 0x00, 0xd9, 0xff, 0x19, 0x00, 0xda, 0xff, 0x1d, 0x00, 0xdb, 0xff, 0x1f, 0x00, 0xdc, 0xff, 0x21, 0x00, 0xde, 0xff, 0x22, 0x00, 0xe1, 0xff, 0x24, 0x00, 0xe3, 0xff, 0x27, 0x00, 0xe5, 0xff, 0x29, 0x00, 0xe7, 0xff, 0x2b, 0x00, 0xe8, 0xff, 0x2c, 0x00, 0xea, 0xff, 0x2d, 0x00, 0xeb, 0xff, 0x2d, 0x00, 0xec, 0xff, 0x2e, 0x00, 0xee, 0xff, 0x30, 0x00, 0xf0, 0xff, 0x32, 0x00, 0xf2, 0xff, 0x33, 0x00, 0xf4, 0xff, 0x34, 0x00, 0xf4, 0xff, 0x34, 0x00, 0xf5, 0xff, 0x32, 0x00, 0xf7, 0xff, 0x30, 0x00, 0xf9, 0xff, 0x2e, 0x00, 0xfc, 0xff, 0x2d, 0x00, 0xff, 0xff, 0x2d, 0x00, 0x03, 0x00, 0x2e, 0x00, 0x07, 0x00, 0x2e, 0x00, 0x0b, 0x00, 0x2d, 0x00, 0x0e, 0x00, 0x2b, 0x00, 0x10, 0x00, 0x28, 0x00, 0x13, 0x00, 0x25, 0x00, 0x16, 0x00, 0x21, 0x00, 0x1a, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1b, 0x00, 0x22, 0x00, 0x19, 0x00, 0x26, 0x00, 0x16, 0x00, 0x29, 0x00, 0x14, 0x00, 0x2b, 0x00, 0x10, 0x00, 0x2d, 0x00, 0x0c, 0x00, 0x2e, 0x00, 0x07, 0x00, 0x2e, 0x00, 0x01, 0x00, 0x2e, 0x00, 0xfd, 0xff, 0x2e, 0x00, 0xf9, 0xff, 0x2d, 0x00, 0xf6, 0xff, 0x2c, 0x00, 0xf4, 0xff, 0x2b, 0x00, 0xf1, 0xff, 0x29, 0x00, 0xee, 0xff, 0x27, 0x00, 0xea, 0xff, 0x24, 0x00, 0xe7, 0xff, 0x21, 0x00, 0xe4, 0xff, 0x1e, 0x00, 0xe1, 0xff, 0x1b, 0x00, 0xde, 0xff, 0x17, 0x00, 0xdb, 0xff, 0x13, 0x00, 0xd7, 0xff, 0x0e, 0x00, 0xd5, 0xff, 0x08, 0x00, 0xd5, 0xff, 0x02, 0x00, 0xd6, 0xff, 0xfc, 0xff, 0xd7, 0xff, 0xf7, 0xff, 0xd9, 0xff, 0xf3, 0xff, 0xd9, 0xff, 0xf1, 0xff, 0xd8, 0xff, 0xef, 0xff, 0xd6, 0xff, 0xed, 0xff, 0xd3, 0xff, 0xea, 0xff, 0xd2, 0xff, 0xe6, 0xff, 0xd2, 0xff, 0xe1, 0xff, 0xd5, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xd0, 0xff, 0xdf, 0xff, 0xcc, 0xff, 0xe1, 0xff, 0xcb, 0xff, 0xe1, 0xff, 0xca, 0xff, 0xe1, 0xff, 0xca, 0xff, 0xe1, 0xff, 0xca, 0xff, 0xe4, 0xff, 0xc8, 0xff, 0xe8, 0xff, 0xc6, 0xff, 0xec, 0xff, 0xc5, 0xff, 0xf0, 0xff, 0xc4, 0xff, 0xf3, 0xff, 0xc6, 0xff, 0xf6, 0xff, 0xc9, 0xff, 0xf7, 0xff, 0xcd, 0xff, 0xfa, 0xff, 0xd3, 0xff, 0xfd, 0xff, 0xd8, 0xff, 0x00, 0x00, 0xde, 0xff, 0x04, 0x00, 0xe2, 0xff, 0x08, 0x00, 0xe4, 0xff, 0x0b, 0x00, 0xe5, 0xff, 0x0e, 0x00, 0xe6, 0xff, 0x10, 0x00, 0xe8, 0xff, 0x13, 0x00, 0xeb, 0xff, 0x16, 0x00, 0xf0, 0xff, 0x1b, 0x00, 0xf6, 0xff, 0x1e, 0x00, 0xfc, 0xff, 0x21, 0x00, 0x02, 0x00, 0x22, 0x00, 0x05, 0x00, 0x23, 0x00, 0x08, 0x00, 0x23, 0x00, 0x09, 0x00, 0x23, 0x00, 0x0a, 0x00, 0x24, 0x00, 0x0c, 0x00, 0x25, 0x00, 0x10, 0x00, 0x26, 0x00, 0x16, 0x00, 0x26, 0x00, 0x1d, 0x00, 0x25, 0x00, 0x24, 0x00, 0x21, 0x00, 0x2a, 0x00, 0x1d, 0x00, 0x2e, 0x00, 0x19, 0x00, 0x2f, 0x00, 0x16, 0x00, 0x2f, 0x00, 0x14, 0x00, 0x2f, 0x00, 0x13, 0x00, 0x2f, 0x00, 0x11, 0x00, 0x31, 0x00, 0x0f, 0x00, 0x34, 0x00, 0x0e, 0x00, 0x38, 0x00, 0x0b, 0x00, 0x3a, 0x00, 0x09, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x3a, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x36, 0x00, 0xfe, 0xff, 0x33, 0x00, 0xfc, 0xff, 0x31, 0x00, 0xfb, 0xff, 0x30, 0x00, 0xfb, 0xff, 0x30, 0x00, 0xfb, 0xff, 0x2f, 0x00, 0xfa, 0xff, 0x2d, 0x00, 0xf6, 0xff, 0x2a, 0x00, 0xf1, 0xff, 0x27, 0x00, 0xec, 0xff, 0x24, 0x00, 0xe6, 0xff, 0x20, 0x00, 0xe1, 0xff, 0x1d, 0x00, 0xde, 0xff, 0x19, 0x00, 0xdd, 0xff, 0x15, 0x00, 0xdd, 0xff, 0x11, 0x00, 0xdd, 0xff, 0x0c, 0x00, 0xdb, 0xff, 0x08, 0x00, 0xd8, 0xff, 0x03, 0x00, 0xd4, 0xff, 0xfe, 0xff, 0xd2, 0xff, 0xfa, 0xff, 0xd1, 0xff, 0xf6, 0xff, 0xd2, 0xff, 0xf4, 0xff, 0xd5, 0xff, 0xf3, 0xff, 0xd8, 0xff, 0xf2, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xdb, 0xff, 0xee, 0xff, 0xda, 0xff, 0xec, 0xff, 0xda, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xea, 0xff, 0xdf, 0xff, 0xe9, 0xff, 0xe4, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xef, 0xff, 0xe9, 0xff, 0xf3, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xe6, 0xff, 0xfa, 0xff, 0xe4, 0xff, 0xfe, 0xff, 0xe3, 0xff, 0x03, 0x00, 0xe2, 0xff, 0x09, 0x00, 0xe2, 0xff, 0x0f, 0x00, 0xe3, 0xff, 0x15, 0x00, 0xe3, 0xff, 0x19, 0x00, 0xe4, 0xff, 0x1c, 0x00, 0xe3, 0xff, 0x20, 0x00, 0xe3, 0xff, 0x23, 0x00, 0xe4, 0xff, 0x27, 0x00, 0xe5, 0xff, 0x2b, 0x00, 0xe8, 0xff, 0x2e, 0x00, 0xeb, 0xff, 0x2f, 0x00, 0xef, 0xff, 0x2f, 0x00, 0xf2, 0xff, 0x2e, 0x00, 0xf3, 0xff, 0x2c, 0x00, 0xf4, 0xff, 0x2b, 0x00, 0xf5, 0xff, 0x2b, 0x00, 0xf6, 0xff, 0x2c, 0x00, 0xf8, 0xff, 0x2b, 0x00, 0xfb, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x29, 0x00, 0x05, 0x00, 0x27, 0x00, 0x09, 0x00, 0x25, 0x00, 0x0d, 0x00, 0x24, 0x00, 0x0e, 0x00, 0x23, 0x00, 0x0f, 0x00, 0x23, 0x00, 0x0f, 0x00, 0x23, 0x00, 0x0f, 0x00, 0x21, 0x00, 0x11, 0x00, 0x1f, 0x00, 0x13, 0x00, 0x1c, 0x00, 0x15, 0x00, 0x19, 0x00, 0x18, 0x00, 0x17, 0x00, 0x1b, 0x00, 0x16, 0x00, 0x1d, 0x00, 0x14, 0x00, 0x1f, 0x00, 0x11, 0x00, 0x1f, 0x00, 0x0e, 0x00, 0x1f, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x1d, 0x00, 0xff, 0xff, 0x1c, 0x00, 0xfa, 0xff, 0x1c, 0x00, 0xf7, 0xff, 0x1d, 0x00, 0xf6, 0xff, 0x1f, 0x00, 0xf4, 0xff, 0x21, 0x00, 0xf1, 0xff, 0x22, 0x00, 0xee, 0xff, 0x21, 0x00, 0xeb, 0xff, 0x20, 0x00, 0xe7, 0xff, 0x1d, 0x00, 0xe4, 0xff, 0x1a, 0x00, 0xe2, 0xff, 0x19, 0x00, 0xe0, 0xff, 0x18, 0x00, 0xde, 0xff, 0x18, 0x00, 0xdc, 0xff, 0x18, 0x00, 0xdb, 0xff, 0x18, 0x00, 0xda, 0xff, 0x17, 0x00, 0xda, 0xff, 0x15, 0x00, 0xd9, 0xff, 0x13, 0x00, 0xd8, 0xff, 0x0f, 0x00, 0xd6, 0xff, 0x0b, 0x00, 0xd3, 0xff, 0x07, 0x00, 0xd1, 0xff, 0x04, 0x00, 0xd0, 0xff, 0x02, 0x00, 0xd0, 0xff, 0x01, 0x00, 0xd2, 0xff, 0x00, 0x00, 0xd5, 0xff, 0x00, 0x00, 0xd8, 0xff, 0xfe, 0xff, 0xda, 0xff, 0xfc, 0xff, 0xdb, 0xff, 0xf8, 0xff, 0xdb, 0xff, 0xf3, 0xff, 0xdb, 0xff, 0xef, 0xff, 0xdd, 0xff, 0xec, 0xff, 0xe1, 0xff, 0xeb, 0xff, 0xe6, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xf3, 0xff, 0xec, 0xff, 0xf5, 0xff, 0xea, 0xff, 0xf8, 0xff, 0xe8, 0xff, 0xfb, 0xff, 0xe5, 0xff, 0xff, 0xff, 0xe3, 0xff, 0x04, 0x00, 0xe2, 0xff, 0x0b, 0x00, 0xe2, 0xff, 0x10, 0x00, 0xe3, 0xff, 0x15, 0x00, 0xe4, 0xff, 0x18, 0x00, 0xe5, 0xff, 0x1a, 0x00, 0xe6, 0xff, 0x1d, 0x00, 0xe5, 0xff, 0x20, 0x00, 0xe4, 0xff, 0x23, 0x00, 0xe2, 0xff, 0x27, 0x00, 0xe1, 0xff, 0x2a, 0x00, 0xe0, 0xff, 0x2c, 0x00, 0xdf, 0xff, 0x2b, 0x00, 0xde, 0xff, 0x2a, 0x00, 0xde, 0xff, 0x29, 0x00, 0xdd, 0xff, 0x29, 0x00, 0xdd, 0xff, 0x29, 0x00, 0xdc, 0xff, 0x2a, 0x00, 0xdc, 0xff, 0x2b, 0x00, 0xdc, 0xff, 0x2a, 0x00, 0xdd, 0xff, 0x27, 0x00, 0xdd, 0xff, 0x23, 0x00, 0xdf, 0xff, 0x1e, 0x00, 0xe2, 0xff, 0x1a, 0x00, 0xe6, 0xff, 0x18, 0x00, 0xeb, 0xff, 0x17, 0x00, 0xf0, 0xff, 0x16, 0x00, 0xf5, 0xff, 0x15, 0x00, 0xf9, 0xff, 0x13, 0x00, 0xfd, 0xff, 0x10, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x09, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0xfe, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0xfa, 0xff, 0x11, 0x00, 0xf9, 0xff, 0x12, 0x00, 0xf7, 0xff, 0x12, 0x00, 0xf5, 0xff, 0x10, 0x00, 0xf3, 0xff, 0x0d, 0x00, 0xef, 0xff, 0x0a, 0x00, 0xec, 0xff, 0x08, 0x00, 0xea, 0xff, 0x07, 0x00, 0xe7, 0xff, 0x07, 0x00, 0xe6, 0xff, 0x08, 0x00, 0xe5, 0xff, 0x08, 0x00, 0xe3, 0xff, 0x08, 0x00, 0xe1, 0xff, 0x05, 0x00, 0xdf, 0xff, 0x01, 0x00, 0xdb, 0xff, 0xfc, 0xff, 0xd7, 0xff, 0xf9, 0xff, 0xd4, 0xff, 0xf7, 0xff, 0xd2, 0xff, 0xf7, 0xff, 0xd1, 0xff, 0xf7, 0xff, 0xd1, 0xff, 0xf7, 0xff, 0xd1, 0xff, 0xf7, 0xff, 0xd1, 0xff, 0xf7, 0xff, 0xd1, 0xff, 0xf7, 0xff, 0xd1, 0xff, 0xf7, 0xff, 0xd1, 0xff, 0xf5, 0xff, 0xd3, 0xff, 0xf4, 0xff, 0xd7, 0xff, 0xf3, 0xff, 0xdc, 0xff, 0xf4, 0xff, 0xe2, 0xff, 0xf6, 0xff, 0xe8, 0xff, 0xf9, 0xff, 0xed, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xf6, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x12, 0x00, 0xfc, 0xff, 0x17, 0x00, 0xfe, 0xff, 0x1b, 0x00, 0x01, 0x00, 0x1f, 0x00, 0x04, 0x00, 0x21, 0x00, 0x05, 0x00, 0x22, 0x00, 0x06, 0x00, 0x24, 0x00, 0x04, 0x00, 0x26, 0x00, 0x02, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x00, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x04, 0x00, 0x29, 0x00, 0x08, 0x00, 0x27, 0x00, 0x0b, 0x00, 0x26, 0x00, 0x0d, 0x00, 0x23, 0x00, 0x0d, 0x00, 0x21, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0x1a, 0x00, 0x0d, 0x00, 0x19, 0x00, 0x0f, 0x00, 0x18, 0x00, 0x13, 0x00, 0x15, 0x00, 0x17, 0x00, 0x13, 0x00, 0x19, 0x00, 0x10, 0x00, 0x1a, 0x00, 0x0f, 0x00, 0x1a, 0x00, 0x0e, 0x00, 0x19, 0x00, 0x0e, 0x00, 0x19, 0x00, 0x0d, 0x00, 0x19, 0x00, 0x0d, 0x00, 0x19, 0x00, 0x0c, 0x00, 0x1a, 0x00, 0x0b, 0x00, 0x1a, 0x00, 0x0a, 0x00, 0x1b, 0x00, 0x09, 0x00, 0x1a, 0x00, 0x09, 0x00, 0x18, 0x00, 0x09, 0x00, 0x15, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x06, 0x00, 0x08, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xfb, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xeb, 0xff, 0xf6, 0xff, 0xe8, 0xff, 0xf9, 0xff, 0xe5, 0xff, 0xfb, 0xff, 0xe3, 0xff, 0xfb, 0xff, 0xe1, 0xff, 0xfa, 0xff, 0xe0, 0xff, 0xf9, 0xff, 0xdf, 0xff, 0xf8, 0xff, 0xdf, 0xff, 0xf9, 0xff, 0xdf, 0xff, 0xfa, 0xff, 0xdf, 0xff, 0xfd, 0xff, 0xde, 0xff, 0x01, 0x00, 0xde, 0xff, 0x03, 0x00, 0xdd, 0xff, 0x03, 0x00, 0xde, 0xff, 0x01, 0x00, 0xdf, 0xff, 0xfe, 0xff, 0xe1, 0xff, 0xfb, 0xff, 0xe3, 0xff, 0xf9, 0xff, 0xe5, 0xff, 0xfa, 0xff, 0xe7, 0xff, 0xfc, 0xff, 0xe9, 0xff, 0xfe, 0xff, 0xeb, 0xff, 0xff, 0xff, 0xed, 0xff, 0x00, 0x00, 0xf1, 0xff, 0xff, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf6, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf7, 0xff, 0x06, 0x00, 0xf6, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x08, 0x00, 0xf9, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x0b, 0x00, 0xff, 0xff, 0x0a, 0x00, 0x01, 0x00, 0x08, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0x01, 0x00, 0x06, 0x00, 0x04, 0x00, 0x09, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x11, 0x00, 0x0c, 0x00, 0x13, 0x00, 0x0d, 0x00, 0x15, 0x00, 0x0b, 0x00, 0x16, 0x00, 0x07, 0x00, 0x16, 0x00, 0x02, 0x00, 0x15, 0x00, 0xfd, 0xff, 0x13, 0x00, 0xfa, 0xff, 0x11, 0x00, 0xfa, 0xff, 0x11, 0x00, 0xfb, 0xff, 0x11, 0x00, 0xfd, 0xff, 0x13, 0x00, 0xfd, 0xff, 0x15, 0x00, 0xfb, 0xff, 0x17, 0x00, 0xf9, 0xff, 0x18, 0x00, 0xf6, 0xff, 0x18, 0x00, 0xf5, 0xff, 0x16, 0x00, 0xf4, 0xff, 0x14, 0x00, 0xf6, 0xff, 0x11, 0x00, 0xf7, 0xff, 0x10, 0x00, 0xf9, 0xff, 0x11, 0x00, 0xfa, 0xff, 0x12, 0x00, 0xfa, 0xff, 0x13, 0x00, 0xfa, 0xff, 0x13, 0x00, 0xfb, 0xff, 0x12, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0xff, 0xff, 0x0b, 0x00, 0x02, 0x00, 0x08, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00, 0x08, 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xfe, 0xff, 0x0c, 0x00, 0xfa, 0xff, 0x0c, 0x00, 0xf6, 0xff, 0x0c, 0x00, 0xf3, 0xff, 0x0c, 0x00, 0xf1, 0xff, 0x0c, 0x00, 0xf1, 0xff, 0x0d, 0x00, 0xf0, 0xff, 0x0e, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xee, 0xff, 0x0e, 0x00, 0xea, 0xff, 0x0c, 0x00, 0xe5, 0xff, 0x09, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xdb, 0xff, 0x07, 0x00, 0xd9, 0xff, 0x07, 0x00, 0xd8, 0xff, 0x09, 0x00, 0xda, 0xff, 0x0b, 0x00, 0xdb, 0xff, 0x0c, 0x00, 0xdb, 0xff, 0x0c, 0x00, 0xda, 0xff, 0x0c, 0x00, 0xd8, 0xff, 0x0c, 0x00, 0xd6, 0xff, 0x0c, 0x00, 0xd3, 0xff, 0x0e, 0x00, 0xd2, 0xff, 0x10, 0x00, 0xd3, 0xff, 0x13, 0x00, 0xd5, 0xff, 0x16, 0x00, 0xd8, 0xff, 0x19, 0x00, 0xdb, 0xff, 0x1c, 0x00, 0xdc, 0xff, 0x1e, 0x00, 0xdc, 0xff, 0x21, 0x00, 0xda, 0xff, 0x22, 0x00, 0xd9, 0xff, 0x23, 0x00, 0xda, 0xff, 0x22, 0x00, 0xdd, 0xff, 0x20, 0x00, 0xe1, 0xff, 0x1f, 0x00, 0xe6, 0xff, 0x1f, 0x00, 0xea, 0xff, 0x1f, 0x00, 0xed, 0xff, 0x1f, 0x00, 0xee, 0xff, 0x1e, 0x00, 0xf0, 0xff, 0x1c, 0x00, 0xf2, 0xff, 0x18, 0x00, 0xf6, 0xff, 0x13, 0x00, 0xfa, 0xff, 0x0e, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x14, 0x00, 0x08, 0x00, 0x17, 0x00, 0x08, 0x00, 0x19, 0x00, 0x06, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0xfd, 0xff, 0x24, 0x00, 0xfb, 0xff, 0x28, 0x00, 0xfa, 0xff, 0x2c, 0x00, 0xfa, 0xff, 0x2f, 0x00, 0xf9, 0xff, 0x30, 0x00, 0xf8, 0xff, 0x2f, 0x00, 0xf7, 0xff, 0x2d, 0x00, 0xf6, 0xff, 0x2c, 0x00, 0xf4, 0xff, 0x2a, 0x00, 0xf3, 0xff, 0x2a, 0x00, 0xf3, 0xff, 0x2b, 0x00, 0xf3, 0xff, 0x2c, 0x00, 0xf3, 0xff, 0x2d, 0x00, 0xf3, 0xff, 0x2c, 0x00, 0xf2, 0xff, 0x2b, 0x00, 0xf2, 0xff, 0x28, 0x00, 0xf2, 0xff, 0x25, 0x00, 0xf2, 0xff, 0x21, 0x00, 0xf1, 0xff, 0x1e, 0x00, 0xf1, 0xff, 0x1c, 0x00, 0xef, 0xff, 0x1b, 0x00, 0xed, 0xff, 0x1b, 0x00, 0xec, 0xff, 0x19, 0x00, 0xea, 0xff, 0x17, 0x00, 0xe9, 0xff, 0x12, 0x00, 0xe9, 0xff, 0x0e, 0x00, 0xe8, 0xff, 0x09, 0x00, 0xe7, 0xff, 0x06, 0x00, 0xe6, 0xff, 0x03, 0x00, 0xe4, 0xff, 0x02, 0x00, 0xe4, 0xff, 0x00, 0x00, 0xe4, 0xff, 0xfc, 0xff, 0xe4, 0xff, 0xf7, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe3, 0xff, 0xea, 0xff, 0xdf, 0xff, 0xea, 0xff, 0xde, 0xff, 0xea, 0xff, 0xdd, 0xff, 0xeb, 0xff, 0xdd, 0xff, 0xed, 0xff, 0xdb, 0xff, 0xf1, 0xff, 0xd8, 0xff, 0xf5, 0xff, 0xd4, 0xff, 0xf8, 0xff, 0xd0, 0xff, 0xf9, 0xff, 0xcd, 0xff, 0xfa, 0xff, 0xcb, 0xff, 0xf9, 0xff, 0xcb, 0xff, 0xf9, 0xff, 0xcc, 0xff, 0xf9, 0xff, 0xcd, 0xff, 0xfa, 0xff, 0xcf, 0xff, 0xfb, 0xff, 0xd0, 0xff, 0xfe, 0xff, 0xd1, 0xff, 0x00, 0x00, 0xd2, 0xff, 0x03, 0x00, 0xd3, 0xff, 0x05, 0x00, 0xd4, 0xff, 0x06, 0x00, 0xd6, 0xff, 0x08, 0x00, 0xd8, 0xff, 0x09, 0x00, 0xd9, 0xff, 0x0b, 0x00, 0xdb, 0xff, 0x0c, 0x00, 0xde, 0xff, 0x0d, 0x00, 0xe1, 0xff, 0x0f, 0x00, 0xe6, 0xff, 0x10, 0x00, 0xeb, 0xff, 0x11, 0x00, 0xf0, 0xff, 0x11, 0x00, 0xf3, 0xff, 0x11, 0x00, 0xf6, 0xff, 0x10, 0x00, 0xf8, 0xff, 0x0d, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0x03, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x11, 0x00, 0x05, 0x00, 0x16, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, 0xfc, 0xff, 0x23, 0x00, 0xf9, 0xff, 0x26, 0x00, 0xf6, 0xff, 0x2b, 0x00, 0xf5, 0xff, 0x30, 0x00, 0xf4, 0xff, 0x35, 0x00, 0xf4, 0xff, 0x37, 0x00, 0xf3, 0xff, 0x37, 0x00, 0xf2, 0xff, 0x35, 0x00, 0xf0, 0xff, 0x32, 0x00, 0xef, 0xff, 0x2e, 0x00, 0xed, 0xff, 0x2b, 0x00, 0xec, 0xff, 0x2a, 0x00, 0xed, 0xff, 0x2a, 0x00, 0xee, 0xff, 0x2a, 0x00, 0xf0, 0xff, 0x29, 0x00, 0xf1, 0xff, 0x28, 0x00, 0xf2, 0xff, 0x24, 0x00, 0xf4, 0xff, 0x1e, 0x00, 0xf7, 0xff, 0x16, 0x00, 0xfb, 0xff, 0x0d, 0x00, 0xff, 0xff, 0x07, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x08, 0x00, 0xf2, 0xff, 0x0a, 0x00, 0xec, 0xff, 0x0b, 0x00, 0xe7, 0xff, 0x0b, 0x00, 0xe4, 0xff, 0x0a, 0x00, 0xe3, 0xff, 0x08, 0x00, 0xe3, 0xff, 0x07, 0x00, 0xe3, 0xff, 0x07, 0x00, 0xe1, 0xff, 0x07, 0x00, 0xde, 0xff, 0x08, 0x00, 0xd9, 0xff, 0x09, 0x00, 0xd4, 0xff, 0x09, 0x00, 0xd1, 0xff, 0x08, 0x00, 0xcf, 0xff, 0x08, 0x00, 0xd0, 0xff, 0x08, 0x00, 0xd0, 0xff, 0x09, 0x00, 0xd0, 0xff, 0x0c, 0x00, 0xd0, 0xff, 0x0f, 0x00, 0xce, 0xff, 0x12, 0x00, 0xcd, 0xff, 0x13, 0x00, 0xcd, 0xff, 0x14, 0x00, 0xcf, 0xff, 0x14, 0x00, 0xd2, 0xff, 0x13, 0x00, 0xd5, 0xff, 0x12, 0x00, 0xd7, 0xff, 0x11, 0x00, 0xda, 0xff, 0x10, 0x00, 0xdc, 0xff, 0x0f, 0x00, 0xdf, 0xff, 0x0c, 0x00, 0xe3, 0xff, 0x07, 0x00, 0xe9, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x09, 0x00, 0xf9, 0xff, 0x0d, 0x00, 0xf6, 0xff, 0x12, 0x00, 0xf3, 0xff, 0x17, 0x00, 0xf0, 0xff, 0x1d, 0x00, 0xed, 0xff, 0x23, 0x00, 0xeb, 0xff, 0x2a, 0x00, 0xeb, 0xff, 0x2f, 0x00, 0xeb, 0xff, 0x34, 0x00, 0xeb, 0xff, 0x38, 0x00, 0xea, 0xff, 0x3b, 0x00, 0xe8, 0xff, 0x3d, 0x00, 0xe7, 0xff, 0x3f, 0x00, 0xe7, 0xff, 0x40, 0x00, 0xe6, 0xff, 0x40, 0x00, 0xe6, 0xff, 0x40, 0x00, 0xe5, 0xff, 0x40, 0x00, 0xe3, 0xff, 0x40, 0x00, 0xe2, 0xff, 0x41, 0x00, 0xe1, 0xff, 0x41, 0x00, 0xe2, 0xff, 0x41, 0x00, 0xe4, 0xff, 0x40, 0x00, 0xe6, 0xff, 0x3d, 0x00, 0xe9, 0xff, 0x3a, 0x00, 0xea, 0xff, 0x36, 0x00, 0xeb, 0xff, 0x32, 0x00, 0xea, 0xff, 0x2d, 0x00, 0xea, 0xff, 0x2a, 0x00, 0xeb, 0xff, 0x26, 0x00, 0xed, 0xff, 0x23, 0x00, 0xf0, 0xff, 0x20, 0x00, 0xf2, 0xff, 0x1c, 0x00, 0xf3, 0xff, 0x18, 0x00, 0xf3, 0xff, 0x12, 0x00, 0xf2, 0xff, 0x0b, 0x00, 0xf1, 0xff, 0x04, 0x00, 0xf1, 0xff, 0xfe, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xef, 0xff, 0xf8, 0xff, 0xeb, 0xff, 0xf9, 0xff, 0xe7, 0xff, 0xfb, 0xff, 0xe2, 0xff, 0xfc, 0xff, 0xdc, 0xff, 0xfd, 0xff, 0xd5, 0xff, 0xff, 0xff, 0xce, 0xff, 0x02, 0x00, 0xc8, 0xff, 0x06, 0x00, 0xc5, 0xff, 0x0a, 0x00, 0xc3, 0xff, 0x0d, 0x00, 0xc2, 0xff, 0x0f, 0x00, 0xc2, 0xff, 0x11, 0x00, 0xc0, 0xff, 0x12, 0x00, 0xbc, 0xff, 0x12, 0x00, 0xb7, 0xff, 0x13, 0x00, 0xb3, 0xff, 0x13, 0x00, 0xaf, 0xff, 0x12, 0x00, 0xae, 0xff, 0x10, 0x00, 0xb0, 0xff, 0x0e, 0x00, 0xb4, 0xff, 0x0c, 0x00, 0xb9, 0xff, 0x0a, 0x00, 0xbd, 0xff, 0x0a, 0x00, 0xc0, 0xff, 0x0b, 0x00, 0xc2, 0xff, 0x0b, 0x00, 0xc3, 0xff, 0x0b, 0x00, 0xc5, 0xff, 0x0b, 0x00, 0xc8, 0xff, 0x0b, 0x00, 0xcc, 0xff, 0x0b, 0x00, 0xd3, 0xff, 0x0d, 0x00, 0xda, 0xff, 0x0e, 0x00, 0xe1, 0xff, 0x0f, 0x00, 0xe8, 0xff, 0x10, 0x00, 0xee, 0xff, 0x10, 0x00, 0xf4, 0xff, 0x10, 0x00, 0xf9, 0xff, 0x10, 0x00, 0xff, 0xff, 0x10, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x13, 0x00, 0x0c, 0x00, 0x1a, 0x00, 0x09, 0x00, 0x21, 0x00, 0x07, 0x00, 0x28, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x02, 0x00, 0x36, 0x00, 0x01, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x46, 0x00, 0x01, 0x00, 0x46, 0x00, 0x02, 0x00, 0x46, 0x00, 0x04, 0x00, 0x48, 0x00, 0x05, 0x00, 0x49, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x07, 0x00, 0x49, 0x00, 0x08, 0x00, 0x46, 0x00, 0x0b, 0x00, 0x40, 0x00, 0x0e, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x34, 0x00, 0x12, 0x00, 0x2f, 0x00, 0x13, 0x00, 0x2b, 0x00, 0x14, 0x00, 0x28, 0x00, 0x13, 0x00, 0x25, 0x00, 0x12, 0x00, 0x21, 0x00, 0x11, 0x00, 0x1d, 0x00, 0x11, 0x00, 0x18, 0x00, 0x13, 0x00, 0x12, 0x00, 0x16, 0x00, 0x0d, 0x00, 0x18, 0x00, 0x07, 0x00, 0x19, 0x00, 0x02, 0x00, 0x19, 0x00, 0xfe, 0xff, 0x19, 0x00, 0xfa, 0xff, 0x19, 0x00, 0xf7, 0xff, 0x1a, 0x00, 0xf4, 0xff, 0x1b, 0x00, 0xf1, 0xff, 0x1d, 0x00, 0xed, 0xff, 0x1e, 0x00, 0xe9, 0xff, 0x1e, 0x00, 0xe5, 0xff, 0x1e, 0x00, 0xe0, 0xff, 0x1d, 0x00, 0xdc, 0xff, 0x1b, 0x00, 0xd7, 0xff, 0x19, 0x00, 0xd4, 0xff, 0x18, 0x00, 0xd1, 0xff, 0x17, 0x00, 0xcf, 0xff, 0x17, 0x00, 0xcc, 0xff, 0x16, 0x00, 0xca, 0xff, 0x15, 0x00, 0xc7, 0xff, 0x13, 0x00, 0xc5, 0xff, 0x11, 0x00, 0xc3, 0xff, 0x10, 0x00, 0xc2, 0xff, 0x0f, 0x00, 0xc1, 0xff, 0x0e, 0x00, 0xc0, 0xff, 0x0d, 0x00, 0xc0, 0xff, 0x0a, 0x00, 0xc1, 0xff, 0x06, 0x00, 0xc2, 0xff, 0x01, 0x00, 0xc3, 0xff, 0xfe, 0xff, 0xc5, 0xff, 0xfc, 0xff, 0xc7, 0xff, 0xfc, 0xff, 0xcb, 0xff, 0xfe, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xd4, 0xff, 0xfd, 0xff, 0xda, 0xff, 0xfa, 0xff, 0xe1, 0xff, 0xf4, 0xff, 0xe9, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xf7, 0xff, 0xeb, 0xff, 0xfd, 0xff, 0xed, 0xff, 0x04, 0x00, 0xf0, 0xff, 0x0a, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0xf6, 0xff, 0x14, 0x00, 0xf7, 0xff, 0x19, 0x00, 0xf6, 0xff, 0x1f, 0x00, 0xf5, 0xff, 0x25, 0x00, 0xf5, 0xff, 0x2b, 0x00, 0xf5, 0xff, 0x31, 0x00, 0xf7, 0xff, 0x36, 0x00, 0xfa, 0xff, 0x3a, 0x00, 0xfc, 0xff, 0x3b, 0x00, 0xfe, 0xff, 0x3c, 0x00, 0xff, 0xff, 0x3d, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x41, 0x00, 0xfa, 0xff, 0x44, 0x00, 0xf8, 0xff, 0x47, 0x00, 0xf6, 0xff, 0x4a, 0x00, 0xf5, 0xff, 0x4b, 0x00, 0xf6, 0xff, 0x4c, 0x00, 0xf6, 0xff, 0x4b, 0x00, 0xf5, 0xff, 0x4a, 0x00, 0xf3, 0xff, 0x4a, 0x00, 0xef, 0xff, 0x49, 0x00, 0xeb, 0xff, 0x48, 0x00, 0xe8, 0xff, 0x46, 0x00, 0xe6, 0xff, 0x43, 0x00, 0xe6, 0xff, 0x40, 0x00, 0xe7, 0xff, 0x3c, 0x00, 0xe9, 0xff, 0x38, 0x00, 0xea, 0xff, 0x34, 0x00, 0xeb, 0xff, 0x30, 0x00, 0xeb, 0xff, 0x2c, 0x00, 0xeb, 0xff, 0x27, 0x00, 0xec, 0xff, 0x22, 0x00, 0xee, 0xff, 0x1d, 0x00, 0xf0, 0xff, 0x19, 0x00, 0xf3, 0xff, 0x15, 0x00, 0xf4, 0xff, 0x12, 0x00, 0xf5, 0xff, 0x0e, 0x00, 0xf4, 0xff, 0x0b, 0x00, 0xf4, 0xff, 0x07, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf7, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xf9, 0xff, 0xed, 0xff, 0xf7, 0xff, 0xea, 0xff, 0xf3, 0xff, 0xe7, 0xff, 0xef, 0xff, 0xe4, 0xff, 0xed, 0xff, 0xe1, 0xff, 0xeb, 0xff, 0xde, 0xff, 0xec, 0xff, 0xd9, 0xff, 0xed, 0xff, 0xd3, 0xff, 0xee, 0xff, 0xcd, 0xff, 0xed, 0xff, 0xc7, 0xff, 0xea, 0xff, 0xc4, 0xff, 0xe5, 0xff, 0xc2, 0xff, 0xe2, 0xff, 0xc3, 0xff, 0xe0, 0xff, 0xc6, 0xff, 0xdf, 0xff, 0xca, 0xff, 0xe1, 0xff, 0xcc, 0xff, 0xe3, 0xff, 0xcd, 0xff, 0xe5, 0xff, 0xcc, 0xff, 0xe5, 0xff, 0xcb, 0xff, 0xe4, 0xff, 0xcb, 0xff, 0xe3, 0xff, 0xcb, 0xff, 0xe1, 0xff, 0xce, 0xff, 0xe0, 0xff, 0xd2, 0xff, 0xe1, 0xff, 0xd7, 0xff, 0xe3, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xe1, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xec, 0xff, 0xf0, 0xff, 0xed, 0xff, 0xf3, 0xff, 0xed, 0xff, 0xf8, 0xff, 0xed, 0xff, 0xfd, 0xff, 0xee, 0xff, 0x02, 0x00, 0xee, 0xff, 0x08, 0x00, 0xef, 0xff, 0x0d, 0x00, 0xf0, 0xff, 0x12, 0x00, 0xf1, 0xff, 0x15, 0x00, 0xf4, 0xff, 0x17, 0x00, 0xf6, 0xff, 0x1a, 0x00, 0xf8, 0xff, 0x1c, 0x00, 0xfb, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0x22, 0x00, 0x01, 0x00, 0x25, 0x00, 0x03, 0x00, 0x27, 0x00, 0x06, 0x00, 0x28, 0x00, 0x09, 0x00, 0x29, 0x00, 0x0d, 0x00, 0x2a, 0x00, 0x11, 0x00, 0x29, 0x00, 0x17, 0x00, 0x2a, 0x00, 0x1d, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x2b, 0x00, 0x26, 0x00, 0x2c, 0x00, 0x29, 0x00, 0x2c, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x28, 0x00, 0x2d, 0x00, 0x26, 0x00, 0x2e, 0x00, 0x24, 0x00, 0x31, 0x00, 0x23, 0x00, 0x34, 0x00, 0x21, 0x00, 0x37, 0x00, 0x1f, 0x00, 0x38, 0x00, 0x1b, 0x00, 0x37, 0x00, 0x16, 0x00, 0x34, 0x00, 0x10, 0x00, 0x30, 0x00, 0x0a, 0x00, 0x2d, 0x00, 0x04, 0x00, 0x2c, 0x00, 0xfe, 0xff, 0x2c, 0x00, 0xf8, 0xff, 0x2c, 0x00, 0xf2, 0xff, 0x2b, 0x00, 0xeb, 0xff, 0x29, 0x00, 0xe4, 0xff, 0x25, 0x00, 0xdc, 0xff, 0x21, 0x00, 0xd4, 0xff, 0x1d, 0x00, 0xcd, 0xff, 0x1b, 0x00, 0xc8, 0xff, 0x19, 0x00, 0xc4, 0xff, 0x18, 0x00, 0xc1, 0xff, 0x17, 0x00, 0xbd, 0xff, 0x16, 0x00, 0xba, 0xff, 0x13, 0x00, 0xb6, 0xff, 0x10, 0x00, 0xb2, 0xff, 0x0e, 0x00, 0xb0, 0xff, 0x0c, 0x00, 0xae, 0xff, 0x0a, 0x00, 0xac, 0xff, 0x08, 0x00, 0xac, 0xff, 0x05, 0x00, 0xad, 0xff, 0x02, 0x00, 0xae, 0xff, 0xff, 0xff, 0xb0, 0xff, 0xfd, 0xff, 0xb2, 0xff, 0xfc, 0xff, 0xb5, 0xff, 0xfc, 0xff, 0xb8, 0xff, 0xfd, 0xff, 0xbc, 0xff, 0xfd, 0xff, 0xc0, 0xff, 0xfc, 0xff, 0xc5, 0xff, 0xfa, 0xff, 0xca, 0xff, 0xf7, 0xff, 0xcf, 0xff, 0xf3, 0xff, 0xd4, 0xff, 0xf1, 0xff, 0xd9, 0xff, 0xef, 0xff, 0xdf, 0xff, 0xee, 0xff, 0xe5, 0xff, 0xee, 0xff, 0xeb, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xed, 0xff, 0xfa, 0xff, 0xeb, 0xff, 0xfe, 0xff, 0xe9, 0xff, 0x01, 0x00, 0xe6, 0xff, 0x05, 0x00, 0xe6, 0xff, 0x09, 0x00, 0xe6, 0xff, 0x0d, 0x00, 0xe8, 0xff, 0x11, 0x00, 0xeb, 0xff, 0x14, 0x00, 0xed, 0xff, 0x17, 0x00, 0xef, 0xff, 0x1a, 0x00, 0xef, 0xff, 0x1d, 0x00, 0xf0, 0xff, 0x1f, 0x00, 0xf1, 0xff, 0x21, 0x00, 0xf3, 0xff, 0x24, 0x00, 0xf6, 0xff, 0x27, 0x00, 0xfa, 0xff, 0x2a, 0x00, 0xff, 0xff, 0x2e, 0x00, 0x04, 0x00, 0x32, 0x00, 0x09, 0x00, 0x35, 0x00, 0x0d, 0x00, 0x37, 0x00, 0x10, 0x00, 0x37, 0x00, 0x12, 0x00, 0x37, 0x00, 0x14, 0x00, 0x37, 0x00, 0x16, 0x00, 0x38, 0x00, 0x18, 0x00, 0x3b, 0x00, 0x1b, 0x00, 0x3e, 0x00, 0x1e, 0x00, 0x40, 0x00, 0x21, 0x00, 0x41, 0x00, 0x23, 0x00, 0x3e, 0x00, 0x24, 0x00, 0x3a, 0x00, 0x23, 0x00, 0x35, 0x00, 0x21, 0x00, 0x30, 0x00, 0x1e, 0x00, 0x2c, 0x00, 0x1d, 0x00, 0x29, 0x00, 0x1d, 0x00, 0x27, 0x00, 0x1d, 0x00, 0x24, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x19, 0x00, 0x1d, 0x00, 0x12, 0x00, 0x1a, 0x00, 0x0a, 0x00, 0x16, 0x00, 0x03, 0x00, 0x12, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0xf8, 0xff, 0x0c, 0x00, 0xf3, 0xff, 0x0b, 0x00, 0xef, 0xff, 0x0a, 0x00, 0xeb, 0xff, 0x08, 0x00, 0xe7, 0xff, 0x05, 0x00, 0xe3, 0xff, 0x02, 0x00, 0xe0, 0xff, 0xfd, 0xff, 0xdd, 0xff, 0xf9, 0xff, 0xda, 0xff, 0xf6, 0xff, 0xd8, 0xff, 0xf3, 0xff, 0xd4, 0xff, 0xf0, 0xff, 0xd1, 0xff, 0xed, 0xff, 0xcf, 0xff, 0xe9, 0xff, 0xcd, 0xff, 0xe5, 0xff, 0xcc, 0xff, 0xe1, 0xff, 0xcc, 0xff, 0xdd, 0xff, 0xcd, 0xff, 0xda, 0xff, 0xcd, 0xff, 0xd8, 0xff, 0xcd, 0xff, 0xd7, 0xff, 0xcc, 0xff, 0xd6, 0xff, 0xcc, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xd1, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xd4, 0xff, 0xc8, 0xff, 0xd7, 0xff, 0xc6, 0xff, 0xdb, 0xff, 0xc5, 0xff, 0xde, 0xff, 0xc4, 0xff, 0xe1, 0xff, 0xc3, 0xff, 0xe4, 0xff, 0xc2, 0xff, 0xe7, 0xff, 0xc2, 0xff, 0xeb, 0xff, 0xc2, 0xff, 0xef, 0xff, 0xc3, 0xff, 0xf4, 0xff, 0xc5, 0xff, 0xf9, 0xff, 0xc7, 0xff, 0xfe, 0xff, 0xc9, 0xff, 0x02, 0x00, 0xcc, 0xff, 0x07, 0x00, 0xce, 0xff, 0x0c, 0x00, 0xd1, 0xff, 0x11, 0x00, 0xd5, 0xff, 0x16, 0x00, 0xdb, 0xff, 0x1b, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0xe5, 0xff, 0x23, 0x00, 0xea, 0xff, 0x27, 0x00, 0xed, 0xff, 0x2a, 0x00, 0xf0, 0xff, 0x2e, 0x00, 0xf3, 0xff, 0x31, 0x00, 0xf8, 0xff, 0x34, 0x00, 0xfd, 0xff, 0x37, 0x00, 0x03, 0x00, 0x39, 0x00, 0x09, 0x00, 0x3a, 0x00, 0x0d, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x3a, 0x00, 0x13, 0x00, 0x3a, 0x00, 0x16, 0x00, 0x39, 0x00, 0x1a, 0x00, 0x37, 0x00, 0x1f, 0x00, 0x34, 0x00, 0x24, 0x00, 0x30, 0x00, 0x2a, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2b, 0x00, 0x31, 0x00, 0x2b, 0x00, 0x34, 0x00, 0x2a, 0x00, 0x36, 0x00, 0x29, 0x00, 0x37, 0x00, 0x26, 0x00, 0x38, 0x00, 0x23, 0x00, 0x3a, 0x00, 0x20, 0x00, 0x3c, 0x00, 0x1d, 0x00, 0x3e, 0x00, 0x1c, 0x00, 0x40, 0x00, 0x1c, 0x00, 0x41, 0x00, 0x1c, 0x00, 0x42, 0x00, 0x1c, 0x00, 0x42, 0x00, 0x1a, 0x00, 0x42, 0x00, 0x18, 0x00, 0x41, 0x00, 0x14, 0x00, 0x3f, 0x00, 0x0f, 0x00, 0x3c, 0x00, 0x0b, 0x00, 0x3a, 0x00, 0x06, 0x00, 0x38, 0x00, 0x02, 0x00, 0x38, 0x00, 0xff, 0xff, 0x38, 0x00, 0xfc, 0xff, 0x37, 0x00, 0xf8, 0xff, 0x35, 0x00, 0xf4, 0xff, 0x31, 0x00, 0xef, 0xff, 0x2d, 0x00, 0xea, 0xff, 0x28, 0x00, 0xe6, 0xff, 0x23, 0x00, 0xe3, 0xff, 0x1e, 0x00, 0xe1, 0xff, 0x1a, 0x00, 0xe0, 0xff, 0x16, 0x00, 0xdf, 0xff, 0x12, 0x00, 0xdf, 0xff, 0x0d, 0x00, 0xdf, 0xff, 0x06, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xf8, 0xff, 0xe0, 0xff, 0xf2, 0xff, 0xe0, 0xff, 0xee, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xed, 0xff, 0xe7, 0xff, 0xf3, 0xff, 0xe4, 0xff, 0xf9, 0xff, 0xe0, 0xff, 0xfe, 0xff, 0xdd, 0xff, 0x02, 0x00, 0xdb, 0xff, 0x05, 0x00, 0xda, 0xff, 0x07, 0x00, 0xda, 0xff, 0x0a, 0x00, 0xda, 0xff, 0x0e, 0x00, 0xda, 0xff, 0x12, 0x00, 0xda, 0xff, 0x17, 0x00, 0xda, 0xff, 0x1c, 0x00, 0xd9, 0xff, 0x20, 0x00, 0xd9, 0xff, 0x23, 0x00, 0xd9, 0xff, 0x24, 0x00, 0xda, 0xff, 0x25, 0x00, 0xdc, 0xff, 0x24, 0x00, 0xdf, 0xff, 0x23, 0x00, 0xe2, 0xff, 0x24, 0x00, 0xe5, 0xff, 0x24, 0x00, 0xe8, 0xff, 0x25, 0x00, 0xe9, 0xff, 0x26, 0x00, 0xeb, 0xff, 0x25, 0x00, 0xed, 0xff, 0x24, 0x00, 0xf1, 0xff, 0x23, 0x00, 0xf5, 0xff, 0x22, 0x00, 0xfa, 0xff, 0x22, 0x00, 0x00, 0x00, 0x22, 0x00, 0x05, 0x00, 0x22, 0x00, 0x08, 0x00, 0x23, 0x00, 0x09, 0x00, 0x23, 0x00, 0x09, 0x00, 0x23, 0x00, 0x08, 0x00, 0x23, 0x00, 0x08, 0x00, 0x23, 0x00, 0x0b, 0x00, 0x22, 0x00, 0x0f, 0x00, 0x21, 0x00, 0x14, 0x00, 0x20, 0x00, 0x18, 0x00, 0x1f, 0x00, 0x1a, 0x00, 0x1d, 0x00, 0x19, 0x00, 0x1c, 0x00, 0x17, 0x00, 0x1a, 0x00, 0x15, 0x00, 0x17, 0x00, 0x14, 0x00, 0x13, 0x00, 0x15, 0x00, 0x0f, 0x00, 0x17, 0x00, 0x09, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x1d, 0x00, 0xfd, 0xff, 0x1d, 0x00, 0xf8, 0xff, 0x1b, 0x00, 0xf3, 0xff, 0x17, 0x00, 0xee, 0xff, 0x12, 0x00, 0xea, 0xff, 0x0d, 0x00, 0xe5, 0xff, 0x0a, 0x00, 0xe0, 0xff, 0x08, 0x00, 0xd9, 0xff, 0x07, 0x00, 0xd3, 0xff, 0x06, 0x00, 0xcd, 0xff, 0x03, 0x00, 0xca, 0xff, 0x00, 0x00, 0xc9, 0xff, 0xfb, 0xff, 0xc8, 0xff, 0xf6, 0xff, 0xc8, 0xff, 0xf2, 0xff, 0xc8, 0xff, 0xee, 0xff, 0xc7, 0xff, 0xea, 0xff, 0xc5, 0xff, 0xe8, 0xff, 0xc4, 0xff, 0xe6, 0xff, 0xc3, 0xff, 0xe5, 0xff, 0xc3, 0xff, 0xe4, 0xff, 0xc6, 0xff, 0xe3, 0xff, 0xca, 0xff, 0xe0, 0xff, 0xce, 0xff, 0xdd, 0xff, 0xd1, 0xff, 0xd9, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xd1, 0xff, 0xd3, 0xff, 0xcf, 0xff, 0xd1, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xcf, 0xff, 0xd3, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xda, 0xff, 0xd4, 0xff, 0xdd, 0xff, 0xd3, 0xff, 0xdf, 0xff, 0xd2, 0xff, 0xe0, 0xff, 0xd1, 0xff, 0xe0, 0xff, 0xd2, 0xff, 0xe0, 0xff, 0xd3, 0xff, 0xe1, 0xff, 0xd5, 0xff, 0xe5, 0xff, 0xd8, 0xff, 0xea, 0xff, 0xdb, 0xff, 0xf0, 0xff, 0xdd, 0xff, 0xf5, 0xff, 0xdf, 0xff, 0xfa, 0xff, 0xe1, 0xff, 0xfe, 0xff, 0xe4, 0xff, 0x01, 0x00, 0xe7, 0xff, 0x03, 0x00, 0xeb, 0xff, 0x04, 0x00, 0xef, 0xff, 0x06, 0x00, 0xf2, 0xff, 0x09, 0x00, 0xf5, 0xff, 0x0d, 0x00, 0xf9, 0xff, 0x12, 0x00, 0xfc, 0xff, 0x17, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x21, 0x00, 0x08, 0x00, 0x24, 0x00, 0x0b, 0x00, 0x25, 0x00, 0x0e, 0x00, 0x25, 0x00, 0x11, 0x00, 0x24, 0x00, 0x14, 0x00, 0x24, 0x00, 0x18, 0x00, 0x24, 0x00, 0x1c, 0x00, 0x25, 0x00, 0x1e, 0x00, 0x27, 0x00, 0x20, 0x00, 0x28, 0x00, 0x20, 0x00, 0x27, 0x00, 0x1f, 0x00, 0x25, 0x00, 0x1f, 0x00, 0x21, 0x00, 0x20, 0x00, 0x1c, 0x00, 0x23, 0x00, 0x17, 0x00, 0x26, 0x00, 0x14, 0x00, 0x29, 0x00, 0x11, 0x00, 0x2b, 0x00, 0x0f, 0x00, 0x2b, 0x00, 0x0d, 0x00, 0x28, 0x00, 0x0b, 0x00, 0x25, 0x00, 0x07, 0x00, 0x22, 0x00, 0x03, 0x00, 0x21, 0x00, 0xff, 0xff, 0x23, 0x00, 0xfc, 0xff, 0x25, 0x00, 0xf9, 0xff, 0x27, 0x00, 0xf8, 0xff, 0x28, 0x00, 0xf7, 0xff, 0x25, 0x00, 0xf5, 0xff, 0x21, 0x00, 0xf4, 0xff, 0x1c, 0x00, 0xf2, 0xff, 0x18, 0x00, 0xf0, 0xff, 0x15, 0x00, 0xed, 0xff, 0x15, 0x00, 0xea, 0xff, 0x15, 0x00, 0xe7, 0xff, 0x14, 0x00, 0xe4, 0xff, 0x13, 0x00, 0xe1, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0x0a, 0x00, 0xdf, 0xff, 0x04, 0x00, 0xde, 0xff, 0xff, 0xff, 0xdd, 0xff, 0xfc, 0xff, 0xdc, 0xff, 0xfa, 0xff, 0xda, 0xff, 0xf9, 0xff, 0xd8, 0xff, 0xf8, 0xff, 0xd6, 0xff, 0xf5, 0xff, 0xd5, 0xff, 0xf0, 0xff, 0xd5, 0xff, 0xeb, 0xff, 0xd6, 0xff, 0xe6, 0xff, 0xd9, 0xff, 0xe2, 0xff, 0xdb, 0xff, 0xdf, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xdd, 0xff, 0xe5, 0xff, 0xdc, 0xff, 0xe9, 0xff, 0xdc, 0xff, 0xec, 0xff, 0xdc, 0xff, 0xed, 0xff, 0xdf, 0xff, 0xee, 0xff, 0xe1, 0xff, 0xf0, 0xff, 0xe5, 0xff, 0xf3, 0xff, 0xe9, 0xff, 0xf7, 0xff, 0xec, 0xff, 0xfb, 0xff, 0xef, 0xff, 0x00, 0x00, 0xf1, 0xff, 0x04, 0x00, 0xf1, 0xff, 0x08, 0x00, 0xf2, 0xff, 0x0c, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0xf6, 0xff, 0x13, 0x00, 0xf9, 0xff, 0x17, 0x00, 0xfe, 0xff, 0x1a, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x22, 0x00, 0x09, 0x00, 0x25, 0x00, 0x0b, 0x00, 0x28, 0x00, 0x0c, 0x00, 0x2a, 0x00, 0x0d, 0x00, 0x2c, 0x00, 0x0f, 0x00, 0x2c, 0x00, 0x12, 0x00, 0x2c, 0x00, 0x17, 0x00, 0x2c, 0x00, 0x1c, 0x00, 0x2c, 0x00, 0x20, 0x00, 0x2d, 0x00, 0x23, 0x00, 0x2e, 0x00, 0x24, 0x00, 0x2e, 0x00, 0x25, 0x00, 0x2d, 0x00, 0x25, 0x00, 0x2b, 0x00, 0x26, 0x00, 0x28, 0x00, 0x28, 0x00, 0x24, 0x00, 0x29, 0x00, 0x20, 0x00, 0x2b, 0x00, 0x1c, 0x00, 0x2c, 0x00, 0x1b, 0x00, 0x2c, 0x00, 0x1a, 0x00, 0x2b, 0x00, 0x19, 0x00, 0x29, 0x00, 0x17, 0x00, 0x27, 0x00, 0x13, 0x00, 0x24, 0x00, 0x0e, 0x00, 0x22, 0x00, 0x08, 0x00, 0x21, 0x00, 0x02, 0x00, 0x20, 0x00, 0xff, 0xff, 0x20, 0x00, 0xfd, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x1e, 0x00, 0xfb, 0xff, 0x1c, 0x00, 0xf9, 0xff, 0x19, 0x00, 0xf7, 0xff, 0x16, 0x00, 0xf4, 0xff, 0x13, 0x00, 0xf1, 0xff, 0x10, 0x00, 0xee, 0xff, 0x0e, 0x00, 0xec, 0xff, 0x0c, 0x00, 0xec, 0xff, 0x0b, 0x00, 0xec, 0xff, 0x09, 0x00, 0xed, 0xff, 0x05, 0x00, 0xee, 0xff, 0x01, 0x00, 0xee, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xf9, 0xff, 0xed, 0xff, 0xf8, 0xff, 0xed, 0xff, 0xf7, 0xff, 0xed, 0xff, 0xf7, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xed, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xed, 0xff, 0xf2, 0xff, 0xea, 0xff, 0xf5, 0xff, 0xe8, 0xff, 0xf9, 0xff, 0xe7, 0xff, 0xfb, 0xff, 0xe8, 0xff, 0xfd, 0xff, 0xe9, 0xff, 0xfd, 0xff, 0xe9, 0xff, 0xfe, 0xff, 0xe8, 0xff, 0xff, 0xff, 0xe6, 0xff, 0x02, 0x00, 0xe4, 0xff, 0x06, 0x00, 0xe2, 0xff, 0x0c, 0x00, 0xe0, 0xff, 0x12, 0x00, 0xde, 0xff, 0x16, 0x00, 0xdd, 0xff, 0x1a, 0x00, 0xde, 0xff, 0x1d, 0x00, 0xdf, 0xff, 0x1f, 0x00, 0xe1, 0xff, 0x21, 0x00, 0xe3, 0xff, 0x23, 0x00, 0xe6, 0xff, 0x26, 0x00, 0xe8, 0xff, 0x29, 0x00, 0xeb, 0xff, 0x2d, 0x00, 0xef, 0xff, 0x31, 0x00, 0xf3, 0xff, 0x35, 0x00, 0xf8, 0xff, 0x38, 0x00, 0xfc, 0xff, 0x3a, 0x00, 0x01, 0x00, 0x3b, 0x00, 0x05, 0x00, 0x3b, 0x00, 0x09, 0x00, 0x39, 0x00, 0x0c, 0x00, 0x38, 0x00, 0x0f, 0x00, 0x36, 0x00, 0x12, 0x00, 0x35, 0x00, 0x14, 0x00, 0x35, 0x00, 0x16, 0x00, 0x34, 0x00, 0x17, 0x00, 0x32, 0x00, 0x17, 0x00, 0x2f, 0x00, 0x17, 0x00, 0x2a, 0x00, 0x18, 0x00, 0x24, 0x00, 0x18, 0x00, 0x1d, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x13, 0x00, 0x16, 0x00, 0x11, 0x00, 0x16, 0x00, 0x0f, 0x00, 0x16, 0x00, 0x0c, 0x00, 0x16, 0x00, 0x07, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0xfa, 0xff, 0x17, 0x00, 0xf4, 0xff, 0x16, 0x00, 0xf0, 0xff, 0x14, 0x00, 0xee, 0xff, 0x11, 0x00, 0xec, 0xff, 0x0e, 0x00, 0xeb, 0xff, 0x0b, 0x00, 0xea, 0xff, 0x08, 0x00, 0xe8, 0xff, 0x06, 0x00, 0xe5, 0xff, 0x04, 0x00, 0xe2, 0xff, 0x02, 0x00, 0xdf, 0xff, 0xfe, 0xff, 0xdc, 0xff, 0xfa, 0xff, 0xd9, 0xff, 0xf6, 0xff, 0xd8, 0xff, 0xf2, 0xff, 0xd7, 0xff, 0xef, 0xff, 0xd7, 0xff, 0xed, 0xff, 0xd8, 0xff, 0xeb, 0xff, 0xd9, 0xff, 0xe9, 0xff, 0xd9, 0xff, 0xe7, 0xff, 0xd9, 0xff, 0xe5, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xd3, 0xff, 0xde, 0xff, 0xd3, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xe1, 0xff, 0xdc, 0xff, 0xe7, 0xff, 0xdb, 0xff, 0xeb, 0xff, 0xda, 0xff, 0xec, 0xff, 0xd9, 0xff, 0xeb, 0xff, 0xd8, 0xff, 0xea, 0xff, 0xd7, 0xff, 0xeb, 0xff, 0xd6, 0xff, 0xee, 0xff, 0xd6, 0xff, 0xf2, 0xff, 0xd6, 0xff, 0xf8, 0xff, 0xd7, 0xff, 0xfc, 0xff, 0xd8, 0xff, 0xfe, 0xff, 0xda, 0xff, 0xfc, 0xff, 0xdc, 0xff, 0xf9, 0xff, 0xdd, 0xff, 0xf5, 0xff, 0xdf, 0xff, 0xf3, 0xff, 0xe1, 0xff, 0xf3, 0xff, 0xe3, 0xff, 0xf5, 0xff, 0xe5, 0xff, 0xf8, 0xff, 0xe7, 0xff, 0xf9, 0xff, 0xe9, 0xff, 0xf9, 0xff, 0xeb, 0xff, 0xf7, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x02, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf4, 0xff, 0x04, 0x00, 0xf2, 0xff, 0x05, 0x00, 0xf2, 0xff, 0x07, 0x00, 0xf3, 0xff, 0x09, 0x00, 0xf5, 0xff, 0x0b, 0x00, 0xf6, 0xff, 0x0d, 0x00, 0xf5, 0xff, 0x0e, 0x00, 0xf4, 0xff, 0x0f, 0x00, 0xf2, 0xff, 0x10, 0x00, 0xef, 0xff, 0x11, 0x00, 0xed, 0xff, 0x14, 0x00, 0xed, 0xff, 0x17, 0x00, 0xee, 0xff, 0x1a, 0x00, 0xf0, 0xff, 0x1d, 0x00, 0xf2, 0xff, 0x1e, 0x00, 0xf3, 0xff, 0x1d, 0x00, 0xf2, 0xff, 0x1c, 0x00, 0xee, 0xff, 0x1b, 0x00, 0xe9, 0xff, 0x19, 0x00, 0xe5, 0xff, 0x19, 0x00, 0xe2, 0xff, 0x1a, 0x00, 0xe2, 0xff, 0x1b, 0x00, 0xe3, 0xff, 0x1c, 0x00, 0xe5, 0xff, 0x1c, 0x00, 0xe7, 0xff, 0x1b, 0x00, 0xe6, 0xff, 0x1a, 0x00, 0xe5, 0xff, 0x19, 0x00, 0xe2, 0xff, 0x18, 0x00, 0xe1, 0xff, 0x17, 0x00, 0xe2, 0xff, 0x16, 0x00, 0xe5, 0xff, 0x15, 0x00, 0xe9, 0xff, 0x15, 0x00, 0xee, 0xff, 0x14, 0x00, 0xf3, 0xff, 0x14, 0x00, 0xf7, 0xff, 0x13, 0x00, 0xfa, 0xff, 0x12, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x08, 0x00, 0x07, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x10, 0x00, 0x01, 0x00, 0x14, 0x00, 0x01, 0x00, 0x16, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0xfd, 0xff, 0x1a, 0x00, 0xf8, 0xff, 0x1b, 0x00, 0xf2, 0xff, 0x1d, 0x00, 0xed, 0xff, 0x1f, 0x00, 0xea, 0xff, 0x22, 0x00, 0xea, 0xff, 0x26, 0x00, 0xeb, 0xff, 0x29, 0x00, 0xee, 0xff, 0x2b, 0x00, 0xef, 0xff, 0x2c, 0x00, 0xee, 0xff, 0x2b, 0x00, 0xec, 0xff, 0x29, 0x00, 0xe9, 0xff, 0x28, 0x00, 0xe6, 0xff, 0x28, 0x00, 0xe5, 0xff, 0x29, 0x00, 0xe5, 0xff, 0x2b, 0x00, 0xe6, 0xff, 0x2d, 0x00, 0xe8, 0xff, 0x2e, 0x00, 0xea, 0xff, 0x2d, 0x00, 0xeb, 0xff, 0x2b, 0x00, 0xed, 0xff, 0x28, 0x00, 0xee, 0xff, 0x26, 0x00, 0xf0, 0xff, 0x26, 0x00, 0xf2, 0xff, 0x27, 0x00, 0xf5, 0xff, 0x29, 0x00, 0xf7, 0xff, 0x2b, 0x00, 0xf9, 0xff, 0x2c, 0x00, 0xfc, 0xff, 0x2b, 0x00, 0x00, 0x00, 0x29, 0x00, 0x04, 0x00, 0x25, 0x00, 0x07, 0x00, 0x22, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x0d, 0x00, 0x1f, 0x00, 0x0e, 0x00, 0x1f, 0x00, 0x0f, 0x00, 0x20, 0x00, 0x11, 0x00, 0x1e, 0x00, 0x12, 0x00, 0x1b, 0x00, 0x13, 0x00, 0x15, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x03, 0x00, 0x14, 0x00, 0xff, 0xff, 0x14, 0x00, 0xfc, 0xff, 0x14, 0x00, 0xfb, 0xff, 0x16, 0x00, 0xf9, 0xff, 0x18, 0x00, 0xf7, 0xff, 0x1a, 0x00, 0xf4, 0xff, 0x1b, 0x00, 0xf1, 0xff, 0x1b, 0x00, 0xef, 0xff, 0x19, 0x00, 0xec, 0xff, 0x18, 0x00, 0xeb, 0xff, 0x17, 0x00, 0xea, 0xff, 0x17, 0x00, 0xe9, 0xff, 0x19, 0x00, 0xe9, 0xff, 0x1c, 0x00, 0xea, 0xff, 0x1f, 0x00, 0xeb, 0xff, 0x21, 0x00, 0xec, 0xff, 0x21, 0x00, 0xeb, 0xff, 0x20, 0x00, 0xea, 0xff, 0x1e, 0x00, 0xe9, 0xff, 0x1d, 0x00, 0xe8, 0xff, 0x1d, 0x00, 0xe8, 0xff, 0x1d, 0x00, 0xe8, 0xff, 0x1e, 0x00, 0xea, 0xff, 0x1e, 0x00, 0xeb, 0xff, 0x1e, 0x00, 0xed, 0xff, 0x1c, 0x00, 0xee, 0xff, 0x1a, 0x00, 0xed, 0xff, 0x17, 0x00, 0xec, 0xff, 0x13, 0x00, 0xeb, 0xff, 0x10, 0x00, 0xeb, 0xff, 0x0d, 0x00, 0xec, 0xff, 0x0b, 0x00, 0xee, 0xff, 0x0a, 0x00, 0xf0, 0xff, 0x09, 0x00, 0xf3, 0xff, 0x09, 0x00, 0xf4, 0xff, 0x08, 0x00, 0xf4, 0xff, 0x05, 0x00, 0xf3, 0xff, 0x01, 0x00, 0xf3, 0xff, 0xfb, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xfb, 0xff, 0xf2, 0xff, 0xfd, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xf5, 0xff, 0x01, 0x00, 0xf2, 0xff, 0x04, 0x00, 0xee, 0xff, 0x06, 0x00, 0xe9, 0xff, 0x09, 0x00, 0xe5, 0xff, 0x0a, 0x00, 0xe5, 0xff, 0x0b, 0x00, 0xe6, 0xff, 0x0c, 0x00, 0xe9, 0xff, 0x0d, 0x00, 0xec, 0xff, 0x0e, 0x00, 0xed, 0xff, 0x10, 0x00, 0xec, 0xff, 0x11, 0x00, 0xe9, 0xff, 0x12, 0x00, 0xe6, 0xff, 0x12, 0x00, 0xe4, 0xff, 0x11, 0x00, 0xe4, 0xff, 0x0f, 0x00, 0xe5, 0xff, 0x0d, 0x00, 0xe8, 0xff, 0x0a, 0x00, 0xeb, 0xff, 0x08, 0x00, 0xed, 0xff, 0x06, 0x00, 0xee, 0xff, 0x04, 0x00, 0xee, 0xff, 0x03, 0x00, 0xed, 0xff, 0x01, 0x00, 0xec, 0xff, 0xfe, 0xff, 0xec, 0xff, 0xfc, 0xff, 0xed, 0xff, 0xf9, 0xff, 0xf0, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf2, 0xff, 0xfd, 0xff, 0xf1, 0xff, 0x01, 0x00, 0xef, 0xff, 0x03, 0x00, 0xed, 0xff, 0x03, 0x00, 0xeb, 0xff, 0x02, 0x00, 0xea, 0xff, 0x02, 0x00, 0xe9, 0xff, 0x03, 0x00, 0xe9, 0xff, 0x06, 0x00, 0xe9, 0xff, 0x0a, 0x00, 0xe9, 0xff, 0x0e, 0x00, 0xe9, 0xff, 0x11, 0x00, 0xe9, 0xff, 0x12, 0x00, 0xe9, 0xff, 0x0f, 0x00, 0xea, 0xff, 0x0b, 0x00, 0xea, 0xff, 0x07, 0x00, 0xeb, 0xff, 0x03, 0x00, 0xec, 0xff, 0x02, 0x00, 0xec, 0xff, 0x03, 0x00, 0xed, 0xff, 0x04, 0x00, 0xee, 0xff, 0x05, 0x00, 0xf0, 0xff, 0x04, 0x00, 0xf2, 0xff, 0x02, 0x00, 0xf3, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xfb, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xfb, 0xff, 0xf5, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0x01, 0x00, 0xf7, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x10, 0x00, 0xff, 0xff, 0x13, 0x00, 0x00, 0x00, 0x16, 0x00, 0x02, 0x00, 0x16, 0x00, 0x04, 0x00, 0x15, 0x00, 0x05, 0x00, 0x12, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x11, 0x00, 0x0c, 0x00, 0x13, 0x00, 0x0c, 0x00, 0x15, 0x00, 0x09, 0x00, 0x16, 0x00, 0x05, 0x00, 0x17, 0x00, 0x01, 0x00, 0x18, 0x00, 0xfc, 0xff, 0x1a, 0x00, 0xf9, 0xff, 0x1c, 0x00, 0xf7, 0xff, 0x1d, 0x00, 0xf7, 0xff, 0x1d, 0x00, 0xf8, 0xff, 0x1c, 0x00, 0xfa, 0xff, 0x1b, 0x00, 0xfb, 0xff, 0x1a, 0x00, 0xfa, 0xff, 0x1a, 0x00, 0xf9, 0xff, 0x1b, 0x00, 0xf7, 0xff, 0x1b, 0x00, 0xf7, 0xff, 0x1b, 0x00, 0xf8, 0xff, 0x1a, 0x00, 0xfb, 0xff, 0x17, 0x00, 0xff, 0xff, 0x14, 0x00, 0x02, 0x00, 0x12, 0x00, 0x04, 0x00, 0x11, 0x00, 0x05, 0x00, 0x13, 0x00, 0x04, 0x00, 0x15, 0x00, 0x04, 0x00, 0x17, 0x00, 0x03, 0x00, 0x16, 0x00, 0x03, 0x00, 0x13, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0x02, 0x00, 0x06, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xf5, 0xff, 0x06, 0x00, 0xf1, 0xff, 0x09, 0x00, 0xef, 0xff, 0x0c, 0x00, 0xee, 0xff, 0x0f, 0x00, 0xed, 0xff, 0x10, 0x00, 0xeb, 0xff, 0x10, 0x00, 0xe9, 0xff, 0x0d, 0x00, 0xe6, 0xff, 0x0a, 0x00, 0xe4, 0xff, 0x08, 0x00, 0xe2, 0xff, 0x07, 0x00, 0xe0, 0xff, 0x08, 0x00, 0xdf, 0xff, 0x0b, 0x00, 0xdf, 0xff, 0x0e, 0x00, 0xdf, 0xff, 0x10, 0x00, 0xe1, 0xff, 0x10, 0x00, 0xe3, 0xff, 0x0d, 0x00, 0xe5, 0xff, 0x08, 0x00, 0xe7, 0xff, 0x04, 0x00, 0xe8, 0xff, 0x01, 0x00, 0xe8, 0xff, 0x00, 0x00, 0xe9, 0xff, 0x02, 0x00, 0xeb, 0xff, 0x04, 0x00, 0xef, 0xff, 0x05, 0x00, 0xf3, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xfd, 0xff, 0xfc, 0xff, 0x01, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf1, 0xff, 0x04, 0x00, 0xee, 0xff, 0x03, 0x00, 0xed, 0xff, 0x03, 0x00, 0xed, 0xff, 0x04, 0x00, 0xed, 0xff, 0x06, 0x00, 0xed, 0xff, 0x08, 0x00, 0xeb, 0xff, 0x0b, 0x00, 0xe8, 0xff, 0x0c, 0x00, 0xe5, 0xff, 0x0d, 0x00, 0xe1, 0xff, 0x0d, 0x00, 0xde, 0xff, 0x0c, 0x00, 0xdc, 0xff, 0x0b, 0x00, 0xdc, 0xff, 0x0b, 0x00, 0xde, 0xff, 0x0b, 0x00, 0xe0, 0xff, 0x0b, 0x00, 0xe1, 0xff, 0x0c, 0x00, 0xe1, 0xff, 0x0d, 0x00, 0xe0, 0xff, 0x0e, 0x00, 0xde, 0xff, 0x0f, 0x00, 0xdc, 0xff, 0x10, 0x00, 0xdb, 0xff, 0x11, 0x00, 0xda, 0xff, 0x12, 0x00, 0xda, 0xff, 0x13, 0x00, 0xdb, 0xff, 0x14, 0x00, 0xdc, 0xff, 0x15, 0x00, 0xdd, 0xff, 0x16, 0x00, 0xdc, 0xff, 0x16, 0x00, 0xdb, 0xff, 0x17, 0x00, 0xd9, 0xff, 0x16, 0x00, 0xd8, 0xff, 0x15, 0x00, 0xd9, 0xff, 0x14, 0x00, 0xda, 0xff, 0x13, 0x00, 0xdc, 0xff, 0x13, 0x00, 0xdf, 0xff, 0x13, 0x00, 0xe0, 0xff, 0x14, 0x00, 0xe0, 0xff, 0x13, 0x00, 0xe0, 0xff, 0x11, 0x00, 0xdf, 0xff, 0x0e, 0x00, 0xde, 0xff, 0x0b, 0x00, 0xdf, 0xff, 0x08, 0x00, 0xe2, 0xff, 0x05, 0x00, 0xe5, 0xff, 0x03, 0x00, 0xe8, 0xff, 0x01, 0x00, 0xeb, 0xff, 0xff, 0xff, 0xec, 0xff, 0xfc, 0xff, 0xec, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xf7, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xef, 0xff, 0xfb, 0xff, 0xed, 0xff, 0xff, 0xff, 0xeb, 0xff, 0x03, 0x00, 0xe8, 0xff, 0x05, 0x00, 0xe6, 0xff, 0x06, 0x00, 0xe4, 0xff, 0x07, 0x00, 0xe2, 0xff, 0x08, 0x00, 0xe2, 0xff, 0x0a, 0x00, 0xe1, 0xff, 0x0d, 0x00, 0xe2, 0xff, 0x10, 0x00, 0xe2, 0xff, 0x13, 0x00, 0xe3, 0xff, 0x15, 0x00, 0xe3, 0xff, 0x16, 0x00, 0xe4, 0xff, 0x15, 0x00, 0xe5, 0xff, 0x13, 0x00, 0xe7, 0xff, 0x11, 0x00, 0xe7, 0xff, 0x10, 0x00, 0xe8, 0xff, 0x0f, 0x00, 0xe8, 0xff, 0x0f, 0x00, 0xe8, 0xff, 0x10, 0x00, 0xea, 0xff, 0x11, 0x00, 0xed, 0xff, 0x12, 0x00, 0xf0, 0xff, 0x11, 0x00, 0xf4, 0xff, 0x10, 0x00, 0xf6, 0xff, 0x0e, 0x00, 0xf8, 0xff, 0x0d, 0x00, 0xf8, 0xff, 0x0d, 0x00, 0xf8, 0xff, 0x0e, 0x00, 0xf7, 0xff, 0x10, 0x00, 0xf8, 0xff, 0x12, 0x00, 0xfa, 0xff, 0x13, 0x00, 0xfd, 0xff, 0x14, 0x00, 0x01, 0x00, 0x14, 0x00, 0x05, 0x00, 0x14, 0x00, 0x09, 0x00, 0x13, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x11, 0x00, 0x14, 0x00, 0x14, 0x00, 0x15, 0x00, 0x17, 0x00, 0x15, 0x00, 0x1a, 0x00, 0x15, 0x00, 0x1d, 0x00, 0x14, 0x00, 0x20, 0x00, 0x13, 0x00, 0x24, 0x00, 0x12, 0x00, 0x27, 0x00, 0x10, 0x00, 0x2a, 0x00, 0x0f, 0x00, 0x2b, 0x00, 0x0f, 0x00, 0x2a, 0x00, 0x0f, 0x00, 0x29, 0x00, 0x10, 0x00, 0x28, 0x00, 0x10, 0x00, 0x27, 0x00, 0x10, 0x00, 0x27, 0x00, 0x0e, 0x00, 0x26, 0x00, 0x0c, 0x00, 0x26, 0x00, 0x0a, 0x00, 0x24, 0x00, 0x0a, 0x00, 0x21, 0x00, 0x0a, 0x00, 0x1d, 0x00, 0x0b, 0x00, 0x19, 0x00, 0x0c, 0x00, 0x15, 0x00, 0x0d, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x0d, 0x00, 0xff, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x12, 0x00, 0xfb, 0xff, 0x14, 0x00, 0xf9, 0xff, 0x16, 0x00, 0xf8, 0xff, 0x18, 0x00, 0xf6, 0xff, 0x18, 0x00, 0xf3, 0xff, 0x18, 0x00, 0xf1, 0xff, 0x18, 0x00, 0xf0, 0xff, 0x18, 0x00, 0xf0, 0xff, 0x19, 0x00, 0xf1, 0xff, 0x1b, 0x00, 0xf1, 0xff, 0x1d, 0x00, 0xf1, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0x21, 0x00, 0xee, 0xff, 0x21, 0x00, 0xec, 0xff, 0x1f, 0x00, 0xeb, 0xff, 0x1d, 0x00, 0xeb, 0xff, 0x1c, 0x00, 0xec, 0xff, 0x1b, 0x00, 0xed, 0xff, 0x1b, 0x00, 0xed, 0xff, 0x1b, 0x00, 0xee, 0xff, 0x1b, 0x00, 0xee, 0xff, 0x1b, 0x00, 0xed, 0xff, 0x1b, 0x00, 0xec, 0xff, 0x19, 0x00, 0xeb, 0xff, 0x16, 0x00, 0xea, 0xff, 0x14, 0x00, 0xea, 0xff, 0x12, 0x00, 0xea, 0xff, 0x12, 0x00, 0xea, 0xff, 0x12, 0x00, 0xec, 0xff, 0x12, 0x00, 0xee, 0xff, 0x12, 0x00, 0xf1, 0xff, 0x12, 0x00, 0xf4, 0xff, 0x11, 0x00, 0xf7, 0xff, 0x0f, 0x00, 0xf9, 0xff, 0x0e, 0x00, 0xfb, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x13, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x09, 0x00, 0x1a, 0x00, 0x07, 0x00, 0x1c, 0x00, 0x06, 0x00, 0x1d, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x02, 0x00, 0x1f, 0x00, 0xff, 0xff, 0x21, 0x00, 0xfd, 0xff, 0x22, 0x00, 0xfb, 0xff, 0x24, 0x00, 0xf9, 0xff, 0x25, 0x00, 0xf8, 0xff, 0x25, 0x00, 0xf7, 0xff, 0x25, 0x00, 0xf6, 0xff, 0x25, 0x00, 0xf4, 0xff, 0x24, 0x00, 0xf2, 0xff, 0x23, 0x00, 0xf0, 0xff, 0x20, 0x00, 0xef, 0xff, 0x1e, 0x00, 0xee, 0xff, 0x1b, 0x00, 0xed, 0xff, 0x19, 0x00, 0xec, 0xff, 0x18, 0x00, 0xeb, 0xff, 0x17, 0x00, 0xeb, 0xff, 0x16, 0x00, 0xea, 0xff, 0x15, 0x00, 0xeb, 0xff, 0x13, 0x00, 0xeb, 0xff, 0x0f, 0x00, 0xec, 0xff, 0x0b, 0x00, 0xed, 0xff, 0x06, 0x00, 0xec, 0xff, 0x02, 0x00, 0xeb, 0xff, 0xfe, 0xff, 0xe9, 0xff, 0xfb, 0xff, 0xe9, 0xff, 0xf6, 0xff, 0xe9, 0xff, 0xf1, 0xff, 0xea, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xed, 0xff, 0xe2, 0xff, 0xed, 0xff, 0xdf, 0xff, 0xec, 0xff, 0xdc, 0xff, 0xeb, 0xff, 0xda, 0xff, 0xea, 0xff, 0xd8, 0xff, 0xeb, 0xff, 0xd4, 0xff, 0xed, 0xff, 0xd0, 0xff, 0xef, 0xff, 0xcc, 0xff, 0xf3, 0xff, 0xc9, 0xff, 0xf6, 0xff, 0xc7, 0xff, 0xf7, 0xff, 0xc7, 0xff, 0xf7, 0xff, 0xc7, 0xff, 0xf5, 0xff, 0xc7, 0xff, 0xf3, 0xff, 0xc8, 0xff, 0xf2, 0xff, 0xc8, 0xff, 0xf2, 0xff, 0xc8, 0xff, 0xf4, 0xff, 0xc9, 0xff, 0xf7, 0xff, 0xcb, 0xff, 0xf9, 0xff, 0xcd, 0xff, 0xfb, 0xff, 0xcf, 0xff, 0xfb, 0xff, 0xd1, 0xff, 0xfa, 0xff, 0xd2, 0xff, 0xf8, 0xff, 0xd3, 0xff, 0xf6, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xd6, 0xff, 0xf4, 0xff, 0xd9, 0xff, 0xf4, 0xff, 0xdc, 0xff, 0xf4, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0xe3, 0xff, 0xf4, 0xff, 0xe6, 0xff, 0xf3, 0xff, 0xe9, 0xff, 0xf1, 0xff, 0xeb, 0xff, 0xef, 0xff, 0xee, 0xff, 0xed, 0xff, 0xf2, 0xff, 0xea, 0xff, 0xf5, 0xff, 0xe8, 0xff, 0xf9, 0xff, 0xe7, 0xff, 0xfe, 0xff, 0xe6, 0xff, 0x02, 0x00, 0xe5, 0xff, 0x07, 0x00, 0xe5, 0xff, 0x0b, 0x00, 0xe4, 0xff, 0x0f, 0x00, 0xe3, 0xff, 0x13, 0x00, 0xe1, 0xff, 0x16, 0x00, 0xdf, 0xff, 0x1a, 0x00, 0xdd, 0xff, 0x1f, 0x00, 0xdb, 0xff, 0x23, 0x00, 0xdb, 0xff, 0x28, 0x00, 0xdd, 0xff, 0x2c, 0x00, 0xdf, 0xff, 0x31, 0x00, 0xe1, 0xff, 0x35, 0x00, 0xe2, 0xff, 0x39, 0x00, 0xe1, 0xff, 0x3b, 0x00, 0xe0, 0xff, 0x3c, 0x00, 0xdf, 0xff, 0x3d, 0x00, 0xdf, 0xff, 0x3d, 0x00, 0xe0, 0xff, 0x3e, 0x00, 0xe2, 0xff, 0x3e, 0x00, 0xe5, 0xff, 0x3c, 0x00, 0xe9, 0xff, 0x39, 0x00, 0xec, 0xff, 0x35, 0x00, 0xef, 0xff, 0x31, 0x00, 0xf0, 0xff, 0x2c, 0x00, 0xf1, 0xff, 0x27, 0x00, 0xf2, 0xff, 0x23, 0x00, 0xf3, 0xff, 0x1e, 0x00, 0xf5, 0xff, 0x1a, 0x00, 0xf7, 0xff, 0x15, 0x00, 0xf9, 0xff, 0x0f, 0x00, 0xfb, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xf7, 0xff, 0x04, 0x00, 0xf4, 0xff, 0x05, 0x00, 0xf2, 0xff, 0x05, 0x00, 0xef, 0xff, 0x05, 0x00, 0xec, 0xff, 0x06, 0x00, 0xea, 0xff, 0x07, 0x00, 0xe8, 0xff, 0x08, 0x00, 0xe7, 0xff, 0x09, 0x00, 0xe6, 0xff, 0x09, 0x00, 0xe6, 0xff, 0x09, 0x00, 0xe5, 0xff, 0x09, 0x00, 0xe4, 0xff, 0x0a, 0x00, 0xe2, 0xff, 0x0c, 0x00, 0xe1, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0x12, 0x00, 0xe0, 0xff, 0x14, 0x00, 0xe0, 0xff, 0x16, 0x00, 0xdf, 0xff, 0x17, 0x00, 0xde, 0xff, 0x17, 0x00, 0xdc, 0xff, 0x18, 0x00, 0xda, 0xff, 0x19, 0x00, 0xd9, 0xff, 0x1c, 0x00, 0xd9, 0xff, 0x1f, 0x00, 0xd9, 0xff, 0x22, 0x00, 0xdb, 0xff, 0x24, 0x00, 0xdd, 0xff, 0x24, 0x00, 0xdf, 0xff, 0x23, 0x00, 0xdf, 0xff, 0x22, 0x00, 0xdf, 0xff, 0x20, 0x00, 0xdf, 0xff, 0x20, 0x00, 0xdf, 0xff, 0x21, 0x00, 0xe1, 0xff, 0x22, 0x00, 0xe4, 0xff, 0x23, 0x00, 0xe8, 0xff, 0x23, 0x00, 0xed, 0xff, 0x22, 0x00, 0xf1, 0xff, 0x1e, 0x00, 0xf3, 0xff, 0x1a, 0x00, 0xf5, 0xff, 0x17, 0x00, 0xf7, 0xff, 0x15, 0x00, 0xfa, 0xff, 0x15, 0x00, 0xfe, 0xff, 0x16, 0x00, 0x04, 0x00, 0x19, 0x00, 0x0a, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x19, 0x00, 0x16, 0x00, 0x17, 0x00, 0x1a, 0x00, 0x14, 0x00, 0x1c, 0x00, 0x10, 0x00, 0x1f, 0x00, 0x0e, 0x00, 0x21, 0x00, 0x0c, 0x00, 0x25, 0x00, 0x0d, 0x00, 0x29, 0x00, 0x0d, 0x00, 0x2d, 0x00, 0x0f, 0x00, 0x32, 0x00, 0x10, 0x00, 0x35, 0x00, 0x0f, 0x00, 0x37, 0x00, 0x0e, 0x00, 0x38, 0x00, 0x0b, 0x00, 0x39, 0x00, 0x08, 0x00, 0x39, 0x00, 0x04, 0x00, 0x39, 0x00, 0x02, 0x00, 0x38, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x36, 0x00, 0x02, 0x00, 0x32, 0x00, 0x03, 0x00, 0x2e, 0x00, 0x03, 0x00, 0x28, 0x00, 0x00, 0x00, 0x22, 0x00, 0xfd, 0xff, 0x1d, 0x00, 0xf9, 0xff, 0x19, 0x00, 0xf6, 0xff, 0x15, 0x00, 0xf6, 0xff, 0x12, 0x00, 0xf6, 0xff, 0x0f, 0x00, 0xf8, 0xff, 0x0c, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xf5, 0xff, 0x02, 0x00, 0xf3, 0xff, 0x03, 0x00, 0xf1, 0xff, 0x03, 0x00, 0xef, 0xff, 0x02, 0x00, 0xee, 0xff, 0x00, 0x00, 0xed, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xfc, 0xff, 0xed, 0xff, 0xfc, 0xff, 0xed, 0xff, 0xfe, 0xff, 0xec, 0xff, 0x00, 0x00, 0xec, 0xff, 0x03, 0x00, 0xeb, 0xff, 0x04, 0x00, 0xea, 0xff, 0x03, 0x00, 0xea, 0xff, 0x01, 0x00, 0xea, 0xff, 0x00, 0x00, 0xeb, 0xff, 0xff, 0xff, 0xec, 0xff, 0xff, 0xff, 0xee, 0xff, 0x01, 0x00, 0xef, 0xff, 0x04, 0x00, 0xef, 0xff, 0x06, 0x00, 0xf0, 0xff, 0x07, 0x00, 0xf1, 0xff, 0x07, 0x00, 0xf3, 0xff, 0x05, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x09, 0x00, 0x02, 0x00, 0x0b, 0x00, 0xff, 0xff, 0x0d, 0x00, 0xfa, 0xff, 0x0f, 0x00, 0xf7, 0xff, 0x11, 0x00, 0xf5, 0xff, 0x12, 0x00, 0xf4, 0xff, 0x15, 0x00, 0xf5, 0xff, 0x18, 0x00, 0xf6, 0xff, 0x1c, 0x00, 0xf7, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0x21, 0x00, 0xf8, 0xff, 0x21, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0xf7, 0xff, 0x1d, 0x00, 0xf5, 0xff, 0x1b, 0x00, 0xf4, 0xff, 0x1a, 0x00, 0xf2, 0xff, 0x19, 0x00, 0xf2, 0xff, 0x1a, 0x00, 0xf2, 0xff, 0x1b, 0x00, 0xf2, 0xff, 0x1b, 0x00, 0xf1, 0xff, 0x19, 0x00, 0xf0, 0xff, 0x16, 0x00, 0xef, 0xff, 0x13, 0x00, 0xef, 0xff, 0x11, 0x00, 0xef, 0xff, 0x10, 0x00, 0xf0, 0xff, 0x10, 0x00, 0xf1, 0xff, 0x0f, 0x00, 0xf3, 0xff, 0x0e, 0x00, 0xf4, 0xff, 0x0c, 0x00, 0xf6, 0xff, 0x09, 0x00, 0xf7, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x08, 0x00, 0xf6, 0xff, 0x08, 0x00, 0xf3, 0xff, 0x07, 0x00, 0xf0, 0xff, 0x05, 0x00, 0xed, 0xff, 0x04, 0x00, 0xeb, 0xff, 0x04, 0x00, 0xe8, 0xff, 0x04, 0x00, 0xe5, 0xff, 0x05, 0x00, 0xe1, 0xff, 0x06, 0x00, 0xde, 0xff, 0x07, 0x00, 0xdc, 0xff, 0x08, 0x00, 0xda, 0xff, 0x08, 0x00, 0xd9, 0xff, 0x07, 0x00, 0xd9, 0xff, 0x06, 0x00, 0xd8, 0xff, 0x04, 0x00, 0xd7, 0xff, 0x03, 0x00, 0xd6, 0xff, 0x03, 0x00, 0xd6, 0xff, 0x04, 0x00, 0xd6, 0xff, 0x05, 0x00, 0xd8, 0xff, 0x06, 0x00, 0xda, 0xff, 0x07, 0x00, 0xdd, 0xff, 0x08, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xe4, 0xff, 0x05, 0x00, 0xe7, 0xff, 0x02, 0x00, 0xe9, 0xff, 0x00, 0x00, 0xec, 0xff, 0xff, 0xff, 0xee, 0xff, 0x00, 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf2, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xfb, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xff, 0xff, 0x07, 0x00, 0x01, 0x00, 0x08, 0x00, 0x03, 0x00, 0x09, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00, 0x14, 0x00, 0xfd, 0xff, 0x17, 0x00, 0xfb, 0xff, 0x18, 0x00, 0xf9, 0xff, 0x17, 0x00, 0xf8, 0xff, 0x17, 0x00, 0xf8, 0xff, 0x17, 0x00, 0xf9, 0xff, 0x18, 0x00, 0xfb, 0xff, 0x1b, 0x00, 0xfb, 0xff, 0x1f, 0x00, 0xfb, 0xff, 0x22, 0x00, 0xf9, 0xff, 0x24, 0x00, 0xf6, 0xff, 0x24, 0x00, 0xf4, 0xff, 0x23, 0x00, 0xf4, 0xff, 0x21, 0x00, 0xf4, 0xff, 0x1f, 0x00, 0xf6, 0xff, 0x1e, 0x00, 0xf8, 0xff, 0x1d, 0x00, 0xfb, 0xff, 0x1d, 0x00, 0xfd, 0xff, 0x1c, 0x00, 0xfe, 0xff, 0x1b, 0x00, 0xfd, 0xff, 0x18, 0x00, 0xfc, 0xff, 0x15, 0x00, 0xfc, 0xff, 0x12, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0xff, 0xff, 0x0c, 0x00, 0x02, 0x00, 0x09, 0x00, 0x04, 0x00, 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf6, 0xff, 0x05, 0x00, 0xf4, 0xff, 0x06, 0x00, 0xf2, 0xff, 0x06, 0x00, 0xf2, 0xff, 0x05, 0x00, 0xf3, 0xff, 0x02, 0x00, 0xf4, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0xfd, 0xff, 0xf2, 0xff, 0xfd, 0xff, 0xf0, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xfc, 0xff, 0xec, 0xff, 0xfc, 0xff, 0xec, 0xff, 0xfa, 0xff, 0xed, 0xff, 0xf7, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xee, 0xff, 0xed, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xe7, 0xff, 0xec, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xed, 0xff, 0xe6, 0xff, 0xee, 0xff, 0xe5, 0xff, 0xee, 0xff, 0xe5, 0xff, 0xef, 0xff, 0xe7, 0xff, 0xf0, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xe9, 0xff, 0xf4, 0xff, 0xea, 0xff, 0xf8, 0xff, 0xe9, 0xff, 0xfc, 0xff, 0xe8, 0xff, 0x00, 0x00, 0xe6, 0xff, 0x03, 0x00, 0xe5, 0xff, 0x05, 0x00, 0xe4, 0xff, 0x05, 0x00, 0xe5, 0xff, 0x05, 0x00, 0xe7, 0xff, 0x04, 0x00, 0xea, 0xff, 0x04, 0x00, 0xec, 0xff, 0x04, 0x00, 0xee, 0xff, 0x04, 0x00, 0xef, 0xff, 0x05, 0x00, 0xf0, 0xff, 0x05, 0x00, 0xf2, 0xff, 0x04, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x09, 0x00, 0xf8, 0xff, 0x0d, 0x00, 0xf9, 0xff, 0x10, 0x00, 0xfa, 0xff, 0x14, 0x00, 0xfb, 0xff, 0x17, 0x00, 0xfa, 0xff, 0x1b, 0x00, 0xf8, 0xff, 0x20, 0x00, 0xf6, 0xff, 0x25, 0x00, 0xf5, 0xff, 0x29, 0x00, 0xf6, 0xff, 0x2b, 0x00, 0xf8, 0xff, 0x2d, 0x00, 0xfa, 0xff, 0x2e, 0x00, 0xfc, 0xff, 0x2e, 0x00, 0xfc, 0xff, 0x2f, 0x00, 0xfc, 0xff, 0x31, 0x00, 0xf9, 0xff, 0x33, 0x00, 0xf7, 0xff, 0x36, 0x00, 0xf4, 0xff, 0x38, 0x00, 0xf3, 0xff, 0x39, 0x00, 0xf3, 0xff, 0x39, 0x00, 0xf4, 0xff, 0x37, 0x00, 0xf4, 0xff, 0x33, 0x00, 0xf5, 0xff, 0x30, 0x00, 0xf4, 0xff, 0x2d, 0x00, 0xf2, 0xff, 0x2b, 0x00, 0xf0, 0xff, 0x2b, 0x00, 0xef, 0xff, 0x2b, 0x00, 0xee, 0xff, 0x2c, 0x00, 0xee, 0xff, 0x2b, 0x00, 0xef, 0xff, 0x29, 0x00, 0xf0, 0xff, 0x25, 0x00, 0xf1, 0xff, 0x22, 0x00, 0xf3, 0xff, 0x1e, 0x00, 0xf3, 0xff, 0x1c, 0x00, 0xf4, 0xff, 0x1b, 0x00, 0xf5, 0xff, 0x1b, 0x00, 0xf5, 0xff, 0x1c, 0x00, 0xf6, 0xff, 0x1c, 0x00, 0xf7, 0xff, 0x1b, 0x00, 0xf9, 0xff, 0x18, 0x00, 0xfc, 0xff, 0x14, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x09, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x02, 0x00, 0x0a, 0x00, 0xfe, 0xff, 0x0e, 0x00, 0xfb, 0xff, 0x11, 0x00, 0xf8, 0xff, 0x12, 0x00, 0xf7, 0xff, 0x11, 0x00, 0xf6, 0xff, 0x0e, 0x00, 0xf5, 0xff, 0x0a, 0x00, 0xf5, 0xff, 0x07, 0x00, 0xf4, 0xff, 0x06, 0x00, 0xf3, 0xff, 0x07, 0x00, 0xf1, 0xff, 0x0a, 0x00, 0xef, 0xff, 0x0d, 0x00, 0xed, 0xff, 0x0f, 0x00, 0xeb, 0xff, 0x10, 0x00, 0xeb, 0xff, 0x0f, 0x00, 0xea, 0xff, 0x0d, 0x00, 0xea, 0xff, 0x0c, 0x00, 0xea, 0xff, 0x0c, 0x00, 0xeb, 0xff, 0x0d, 0x00, 0xeb, 0xff, 0x10, 0x00, 0xed, 0xff, 0x14, 0x00, 0xee, 0xff, 0x18, 0x00, 0xf0, 0xff, 0x1a, 0x00, 0xf1, 0xff, 0x1c, 0x00, 0xf2, 0xff, 0x1b, 0x00, 0xf4, 0xff, 0x18, 0x00, 0xf6, 0xff, 0x15, 0x00, 0xf8, 0xff, 0x14, 0x00, 0xf9, 0xff, 0x14, 0x00, 0xf9, 0xff, 0x15, 0x00, 0xf9, 0xff, 0x17, 0x00, 0xf9, 0xff, 0x18, 0x00, 0xf9, 0xff, 0x18, 0x00, 0xfa, 0xff, 0x16, 0x00, 0xfc, 0xff, 0x12, 0x00, 0xfe, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0xff, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfb, 0xff, 0x0e, 0x00, 0xfb, 0xff, 0x0d, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfe, 0xff, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xf7, 0xff, 0x05, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf6, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf7, 0xff, 0xf1, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xe9, 0xff, 0xf4, 0xff, 0xe6, 0xff, 0xf3, 0xff, 0xe3, 0xff, 0xf0, 0xff, 0xe1, 0xff, 0xee, 0xff, 0xe0, 0xff, 0xeb, 0xff, 0xdf, 0xff, 0xe9, 0xff, 0xdf, 0xff, 0xe8, 0xff, 0xde, 0xff, 0xe7, 0xff, 0xdd, 0xff, 0xe7, 0xff, 0xdb, 0xff, 0xe7, 0xff, 0xd7, 0xff, 0xe7, 0xff, 0xd3, 0xff, 0xe7, 0xff, 0xd0, 0xff, 0xe6, 0xff, 0xce, 0xff, 0xe5, 0xff, 0xce, 0xff, 0xe4, 0xff, 0xd0, 0xff, 0xe3, 0xff, 0xd2, 0xff, 0xe4, 0xff, 0xd2, 0xff, 0xe5, 0xff, 0xd0, 0xff, 0xe8, 0xff, 0xcd, 0xff, 0xeb, 0xff, 0xcb, 0xff, 0xee, 0xff, 0xca, 0xff, 0xf0, 0xff, 0xcc, 0xff, 0xf1, 0xff, 0xd1, 0xff, 0xf2, 0xff, 0xd7, 0xff, 0xf3, 0xff, 0xdc, 0xff, 0xf5, 0xff, 0xdf, 0xff, 0xf8, 0xff, 0xe0, 0xff, 0xfc, 0xff, 0xe0, 0xff, 0x01, 0x00, 0xe2, 0xff, 0x05, 0x00, 0xe5, 0xff, 0x08, 0x00, 0xe9, 0xff, 0x0a, 0x00, 0xef, 0xff, 0x0a, 0x00, 0xf4, 0xff, 0x09, 0x00, 0xf8, 0xff, 0x09, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xff, 0xff, 0x0d, 0x00, 0x02, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x11, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x15, 0x00, 0x0c, 0x00, 0x17, 0x00, 0x0a, 0x00, 0x18, 0x00, 0x09, 0x00, 0x18, 0x00, 0x0a, 0x00, 0x19, 0x00, 0x0c, 0x00, 0x1a, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x0e, 0x00, 0x1f, 0x00, 0x0c, 0x00, 0x21, 0x00, 0x09, 0x00, 0x21, 0x00, 0x07, 0x00, 0x21, 0x00, 0x05, 0x00, 0x20, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x1c, 0x00, 0x09, 0x00, 0x19, 0x00, 0x0c, 0x00, 0x17, 0x00, 0x0e, 0x00, 0x15, 0x00, 0x0d, 0x00, 0x14, 0x00, 0x0b, 0x00, 0x14, 0x00, 0x07, 0x00, 0x15, 0x00, 0x04, 0x00, 0x15, 0x00, 0x01, 0x00, 0x14, 0x00, 0x01, 0x00, 0x12, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x09, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x09, 0x00, 0xf8, 0xff, 0x0a, 0x00, 0xf9, 0xff, 0x09, 0x00, 0xf9, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf4, 0xff, 0x02, 0x00, 0xef, 0xff, 0x02, 0x00, 0xec, 0xff, 0x04, 0x00, 0xea, 0xff, 0x07, 0x00, 0xeb, 0xff, 0x0a, 0x00, 0xed, 0xff, 0x0d, 0x00, 0xf1, 0xff, 0x0d, 0x00, 0xf4, 0xff, 0x0c, 0x00, 0xf5, 0xff, 0x0a, 0x00, 0xf5, 0xff, 0x08, 0x00, 0xf3, 0xff, 0x06, 0x00, 0xf2, 0xff, 0x06, 0x00, 0xf2, 0xff, 0x07, 0x00, 0xf3, 0xff, 0x08, 0x00, 0xf5, 0xff, 0x09, 0x00, 0xf8, 0xff, 0x09, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x06, 0x00, 0x01, 0x00, 0x07, 0x00, 0x02, 0x00, 0x09, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x11, 0x00, 0x06, 0x00, 0x13, 0x00, 0x05, 0x00, 0x15, 0x00, 0x06, 0x00, 0x16, 0x00, 0x07, 0x00, 0x17, 0x00, 0x09, 0x00, 0x19, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x10, 0x00, 0x20, 0x00, 0x12, 0x00, 0x25, 0x00, 0x14, 0x00, 0x2a, 0x00, 0x14, 0x00, 0x2d, 0x00, 0x13, 0x00, 0x30, 0x00, 0x12, 0x00, 0x31, 0x00, 0x11, 0x00, 0x31, 0x00, 0x10, 0x00, 0x31, 0x00, 0x11, 0x00, 0x32, 0x00, 0x12, 0x00, 0x35, 0x00, 0x12, 0x00, 0x38, 0x00, 0x11, 0x00, 0x3a, 0x00, 0x0f, 0x00, 0x3c, 0x00, 0x0c, 0x00, 0x3c, 0x00, 0x09, 0x00, 0x3b, 0x00, 0x07, 0x00, 0x39, 0x00, 0x05, 0x00, 0x36, 0x00, 0x03, 0x00, 0x33, 0x00, 0x02, 0x00, 0x2f, 0x00, 0x02, 0x00, 0x2c, 0x00, 0x01, 0x00, 0x28, 0x00, 0xff, 0xff, 0x25, 0x00, 0xfc, 0xff, 0x21, 0x00, 0xfa, 0xff, 0x1d, 0x00, 0xf8, 0xff, 0x19, 0x00, 0xf7, 0xff, 0x15, 0x00, 0xf7, 0xff, 0x12, 0x00, 0xf8, 0xff, 0x0e, 0x00, 0xf8, 0xff, 0x0a, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xf9, 0xff, 0xf2, 0xff, 0xf9, 0xff, 0xef, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xfa, 0xff, 0xeb, 0xff, 0xfa, 0xff, 0xe9, 0xff, 0xf9, 0xff, 0xe7, 0xff, 0xf8, 0xff, 0xe5, 0xff, 0xf5, 0xff, 0xe2, 0xff, 0xf3, 0xff, 0xe0, 0xff, 0xf1, 0xff, 0xde, 0xff, 0xf0, 0xff, 0xdc, 0xff, 0xf0, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xd9, 0xff, 0xf1, 0xff, 0xd8, 0xff, 0xf1, 0xff, 0xd7, 0xff, 0xf1, 0xff, 0xd6, 0xff, 0xf0, 0xff, 0xd5, 0xff, 0xef, 0xff, 0xd4, 0xff, 0xee, 0xff, 0xd4, 0xff, 0xed, 0xff, 0xd3, 0xff, 0xee, 0xff, 0xd3, 0xff, 0xf0, 0xff, 0xd4, 0xff, 0xf3, 0xff, 0xd6, 0xff, 0xf5, 0xff, 0xd9, 0xff, 0xf6, 0xff, 0xdc, 0xff, 0xf6, 0xff, 0xdf, 0xff, 0xf5, 0xff, 0xe1, 0xff, 0xf4, 0xff, 0xe2, 0xff, 0xf2, 0xff, 0xe3, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xe9, 0xff, 0xf0, 0xff, 0xed, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf3, 0xff, 0x05, 0x00, 0xf1, 0xff, 0x06, 0x00, 0xf1, 0xff, 0x07, 0x00, 0xf2, 0xff, 0x0a, 0x00, 0xf3, 0xff, 0x0e, 0x00, 0xf6, 0xff, 0x11, 0x00, 0xf9, 0xff, 0x15, 0x00, 0xfc, 0xff, 0x16, 0x00, 0xfe, 0xff, 0x16, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0xff, 0xff, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x15, 0x00, 0x05, 0x00, 0x18, 0x00, 0x06, 0x00, 0x18, 0x00, 0x07, 0x00, 0x17, 0x00, 0x07, 0x00, 0x15, 0x00, 0x05, 0x00, 0x12, 0x00, 0x03, 0x00, 0x10, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0xff, 0xff, 0x12, 0x00, 0xff, 0xff, 0x14, 0x00, 0xff, 0xff, 0x16, 0x00, 0xfe, 0xff, 0x17, 0x00, 0xfc, 0xff, 0x17, 0x00, 0xfa, 0xff, 0x16, 0x00, 0xf7, 0xff, 0x13, 0x00, 0xf4, 0xff, 0x10, 0x00, 0xf2, 0xff, 0x0e, 0x00, 0xf1, 0xff, 0x0c, 0x00, 0xf2, 0xff, 0x0c, 0x00, 0xf2, 0xff, 0x0b, 0x00, 0xf3, 0xff, 0x0a, 0x00, 0xf4, 0xff, 0x08, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf5, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0xee, 0xff, 0xfe, 0xff, 0xed, 0xff, 0x00, 0x00, 0xec, 0xff, 0x03, 0x00, 0xea, 0xff, 0x05, 0x00, 0xe7, 0xff, 0x08, 0x00, 0xe4, 0xff, 0x0a, 0x00, 0xe1, 0xff, 0x0c, 0x00, 0xde, 0xff, 0x0d, 0x00, 0xde, 0xff, 0x0e, 0x00, 0xdf, 0xff, 0x0f, 0x00, 0xe1, 0xff, 0x11, 0x00, 0xe3, 0xff, 0x13, 0x00, 0xe4, 0xff, 0x15, 0x00, 0xe4, 0xff, 0x16, 0x00, 0xe4, 0xff, 0x15, 0x00, 0xe3, 0xff, 0x13, 0x00, 0xe4, 0xff, 0x11, 0x00, 0xe6, 0xff, 0x10, 0x00, 0xe8, 0xff, 0x0f, 0x00, 0xec, 0xff, 0x0f, 0x00, 0xef, 0xff, 0x10, 0x00, 0xf2, 0xff, 0x10, 0x00, 0xf4, 0xff, 0x0f, 0x00, 0xf5, 0xff, 0x0d, 0x00, 0xf5, 0xff, 0x09, 0x00, 0xf7, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x07, 0x00, 0x01, 0x00, 0x09, 0x00, 0xff, 0xff, 0x0b, 0x00, 0xfe, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0d, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x11, 0x00, 0xfc, 0xff, 0x14, 0x00, 0xfd, 0xff, 0x17, 0x00, 0xfd, 0xff, 0x19, 0x00, 0xfd, 0xff, 0x1b, 0x00, 0xfd, 0xff, 0x1b, 0x00, 0xfd, 0xff, 0x1b, 0x00, 0xfd, 0xff, 0x1b, 0x00, 0xfd, 0xff, 0x1c, 0x00, 0xfd, 0xff, 0x1e, 0x00, 0xfd, 0xff, 0x20, 0x00, 0xfc, 0xff, 0x22, 0x00, 0xfc, 0xff, 0x23, 0x00, 0xfb, 0xff, 0x22, 0x00, 0xfb, 0xff, 0x20, 0x00, 0xfa, 0xff, 0x1d, 0x00, 0xfa, 0xff, 0x19, 0x00, 0xfa, 0xff, 0x15, 0x00, 0xfa, 0xff, 0x13, 0x00, 0xfb, 0xff, 0x11, 0x00, 0xfd, 0xff, 0x10, 0x00, 0xfe, 0xff, 0x0e, 0x00, 0xff, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf6, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x05, 0x00, 0xf4, 0xff, 0x07, 0x00, 0xf2, 0xff, 0x08, 0x00, 0xf0, 0xff, 0x08, 0x00, 0xed, 0xff, 0x08, 0x00, 0xeb, 0xff, 0x07, 0x00, 0xea, 0xff, 0x06, 0x00, 0xe9, 0xff, 0x07, 0x00, 0xe9, 0xff, 0x07, 0x00, 0xea, 0xff, 0x08, 0x00, 0xea, 0xff, 0x08, 0x00, 0xea, 0xff, 0x08, 0x00, 0xe9, 0xff, 0x07, 0x00, 0xe8, 0xff, 0x06, 0x00, 0xe6, 0xff, 0x05, 0x00, 0xe5, 0xff, 0x03, 0x00, 0xe4, 0xff, 0x01, 0x00, 0xe5, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xfd, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0xea, 0xff, 0xfb, 0xff, 0xeb, 0xff, 0xfa, 0xff, 0xeb, 0xff, 0xfa, 0xff, 0xeb, 0xff, 0xf9, 0xff, 0xeb, 0xff, 0xf8, 0xff, 0xeb, 0xff, 0xf7, 0xff, 0xec, 0xff, 0xf5, 0xff, 0xee, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xf4, 0xff, 0x01, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x08, 0x00, 0xf7, 0xff, 0x0b, 0x00, 0xf5, 0xff, 0x0d, 0x00, 0xf2, 0xff, 0x10, 0x00, 0xf1, 0xff, 0x13, 0x00, 0xf0, 0xff, 0x15, 0x00, 0xf0, 0xff, 0x18, 0x00, 0xf1, 0xff, 0x1a, 0x00, 0xf2, 0xff, 0x1b, 0x00, 0xf2, 0xff, 0x1b, 0x00, 0xf3, 0xff, 0x1a, 0x00, 0xf3, 0xff, 0x1a, 0x00, 0xf3, 0xff, 0x19, 0x00, 0xf3, 0xff, 0x18, 0x00, 0xf4, 0xff, 0x18, 0x00, 0xf5, 0xff, 0x18, 0x00, 0xf6, 0xff, 0x17, 0x00, 0xf8, 0xff, 0x17, 0x00, 0xfa, 0xff, 0x15, 0x00, 0xfc, 0xff, 0x13, 0x00, 0xfe, 0xff, 0x10, 0x00, 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x09, 0x00, 0x06, 0x00, 0x08, 0x00, 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xfa, 0xff, 0x09, 0x00, 0xfb, 0xff, 0x0a, 0x00, 0xfa, 0xff, 0x0c, 0x00, 0xf7, 0xff, 0x0c, 0x00, 0xf4, 0xff, 0x0c, 0x00, 0xf0, 0xff, 0x0c, 0x00, 0xee, 0xff, 0x0c, 0x00, 0xec, 0xff, 0x0c, 0x00, 0xec, 0xff, 0x0d, 0x00, 0xee, 0xff, 0x0f, 0x00, 0xef, 0xff, 0x10, 0x00, 0xf0, 0xff, 0x11, 0x00, 0xef, 0xff, 0x11, 0x00, 0xee, 0xff, 0x11, 0x00, 0xec, 0xff, 0x10, 0x00, 0xeb, 0xff, 0x10, 0x00, 0xec, 0xff, 0x11, 0x00, 0xee, 0xff, 0x11, 0x00, 0xf0, 0xff, 0x11, 0x00, 0xf3, 0xff, 0x11, 0x00, 0xf5, 0xff, 0x10, 0x00, 0xf6, 0xff, 0x0f, 0x00, 0xf7, 0xff, 0x0e, 0x00, 0xf8, 0xff, 0x0d, 0x00, 0xfa, 0xff, 0x0c, 0x00, 0xfb, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x09, 0x00, 0x03, 0x00, 0x07, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x0b, 0x00, 0xfa, 0xff, 0x0b, 0x00, 0xf7, 0xff, 0x0c, 0x00, 0xf6, 0xff, 0x0d, 0x00, 0xf5, 0xff, 0x0e, 0x00, 0xf5, 0xff, 0x10, 0x00, 0xf5, 0xff, 0x11, 0x00, 0xf4, 0xff, 0x12, 0x00, 0xf3, 0xff, 0x13, 0x00, 0xf2, 0xff, 0x14, 0x00, 0xf1, 0xff, 0x14, 0x00, 0xef, 0xff, 0x14, 0x00, 0xee, 0xff, 0x14, 0x00, 0xed, 0xff, 0x15, 0x00, 0xee, 0xff, 0x15, 0x00, 0xef, 0xff, 0x15, 0x00, 0xf0, 0xff, 0x14, 0x00, 0xf1, 0xff, 0x13, 0x00, 0xf1, 0xff, 0x11, 0x00, 0xf2, 0xff, 0x0f, 0x00, 0xf2, 0xff, 0x0c, 0x00, 0xf3, 0xff, 0x09, 0x00, 0xf3, 0xff, 0x06, 0x00, 0xf4, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf7, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xff, 0xff, 0xef, 0xff, 0x02, 0x00, 0xeb, 0xff, 0x03, 0x00, 0xe6, 0xff, 0x04, 0x00, 0xe2, 0xff, 0x04, 0x00, 0xdf, 0xff, 0x04, 0x00, 0xdc, 0xff, 0x05, 0x00, 0xda, 0xff, 0x06, 0x00, 0xd9, 0xff, 0x07, 0x00, 0xd8, 0xff, 0x0a, 0x00, 0xd7, 0xff, 0x0c, 0x00, 0xd6, 0xff, 0x0d, 0x00, 0xd5, 0xff, 0x0e, 0x00, 0xd5, 0xff, 0x0f, 0x00, 0xd6, 0xff, 0x0f, 0x00, 0xd7, 0xff, 0x0f, 0x00, 0xd9, 0xff, 0x10, 0x00, 0xdc, 0xff, 0x10, 0x00, 0xde, 0xff, 0x11, 0x00, 0xe1, 0xff, 0x12, 0x00, 0xe3, 0xff, 0x13, 0x00, 0xe4, 0xff, 0x14, 0x00, 0xe5, 0xff, 0x15, 0x00, 0xe7, 0xff, 0x15, 0x00, 0xe9, 0xff, 0x15, 0x00, 0xeb, 0xff, 0x15, 0x00, 0xee, 0xff, 0x14, 0x00, 0xf1, 0xff, 0x13, 0x00, 0xf3, 0xff, 0x12, 0x00, 0xf5, 0xff, 0x12, 0x00, 0xf6, 0xff, 0x13, 0x00, 0xf8, 0xff, 0x14, 0x00, 0xf9, 0xff, 0x14, 0x00, 0xfa, 0xff, 0x13, 0x00, 0xfb, 0xff, 0x11, 0x00, 0xfc, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0xff, 0xff, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x07, 0x00, 0x03, 0x00, 0x06, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf7, 0xff, 0x07, 0x00, 0xf6, 0xff, 0x09, 0x00, 0xf5, 0xff, 0x0b, 0x00, 0xf5, 0xff, 0x0e, 0x00, 0xf3, 0xff, 0x10, 0x00, 0xf2, 0xff, 0x12, 0x00, 0xf1, 0xff, 0x14, 0x00, 0xf0, 0xff, 0x15, 0x00, 0xef, 0xff, 0x16, 0x00, 0xee, 0xff, 0x16, 0x00, 0xee, 0xff, 0x17, 0x00, 0xed, 0xff, 0x18, 0x00, 0xec, 0xff, 0x19, 0x00, 0xea, 0xff, 0x1a, 0x00, 0xe9, 0xff, 0x19, 0x00, 0xe9, 0xff, 0x18, 0x00, 0xea, 0xff, 0x16, 0x00, 0xeb, 0xff, 0x14, 0x00, 0xed, 0xff, 0x11, 0x00, 0xee, 0xff, 0x0f, 0x00, 0xef, 0xff, 0x0e, 0x00, 0xf0, 0xff, 0x0c, 0x00, 0xf0, 0xff, 0x0a, 0x00, 0xf0, 0xff, 0x09, 0x00, 0xf1, 0xff, 0x07, 0x00, 0xf3, 0xff, 0x05, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xfb, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf7, 0xff, 0x03, 0x00, 0xf7, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x08, 0x00, 0xf8, 0xff, 0x0b, 0x00, 0xf9, 0xff, 0x0e, 0x00, 0xf9, 0xff, 0x10, 0x00, 0xf9, 0xff, 0x12, 0x00, 0xfa, 0xff, 0x12, 0x00, 0xfb, 0xff, 0x12, 0x00, 0xfc, 0xff, 0x12, 0x00, 0xfe, 0xff, 0x12, 0x00, 0xff, 0xff, 0x14, 0x00, 0x00, 0x00, 0x16, 0x00, 0x01, 0x00, 0x19, 0x00, 0x03, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x06, 0x00, 0x1c, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x08, 0x00, 0x17, 0x00, 0x09, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x13, 0x00, 0x0b, 0x00, 0x13, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x0b, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x09, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x0b, 0x00, 0xff, 0xff, 0x0c, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfd, 0xff, 0x12, 0x00, 0xfc, 0xff, 0x14, 0x00, 0xfa, 0xff, 0x15, 0x00, 0xf9, 0xff, 0x15, 0x00, 0xf9, 0xff, 0x14, 0x00, 0xf9, 0xff, 0x13, 0x00, 0xf9, 0xff, 0x14, 0x00, 0xf9, 0xff, 0x15, 0x00, 0xf9, 0xff, 0x17, 0x00, 0xf9, 0xff, 0x1a, 0x00, 0xf9, 0xff, 0x1b, 0x00, 0xf9, 0xff, 0x1c, 0x00, 0xf9, 0xff, 0x1c, 0x00, 0xf9, 0xff, 0x1c, 0x00, 0xfa, 0xff, 0x1a, 0x00, 0xfb, 0xff, 0x1a, 0x00, 0xfc, 0xff, 0x1a, 0x00, 0xfd, 0xff, 0x1a, 0x00, 0xfd, 0xff, 0x1b, 0x00, 0xfc, 0xff, 0x1b, 0x00, 0xfb, 0xff, 0x1a, 0x00, 0xf9, 0xff, 0x19, 0x00, 0xf7, 0xff, 0x17, 0x00, 0xf5, 0xff, 0x15, 0x00, 0xf4, 0xff, 0x13, 0x00, 0xf3, 0xff, 0x12, 0x00, 0xf3, 0xff, 0x10, 0x00, 0xf3, 0xff, 0x0e, 0x00, 0xf3, 0xff, 0x0d, 0x00, 0xf3, 0xff, 0x0b, 0x00, 0xf2, 0xff, 0x09, 0x00, 0xf1, 0xff, 0x07, 0x00, 0xf0, 0xff, 0x05, 0x00, 0xf0, 0xff, 0x03, 0x00, 0xef, 0xff, 0x02, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf1, 0xff, 0x00, 0x00, 0xf2, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xfe, 0xff, 0xf3, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0xfd, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xf5, 0xff, 0xfb, 0xff, 0xf6, 0xff, 0xfb, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xf4, 0xff, 0x00, 0x00, 0xf3, 0xff, 0x00, 0x00, 0xf3, 0xff, 0x00, 0x00, 0xf3, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0xef, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xfc, 0xff, 0xec, 0xff, 0xf9, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xed, 0xff, 0xf4, 0xff, 0xed, 0xff, 0xf3, 0xff, 0xed, 0xff, 0xf3, 0xff, 0xed, 0xff, 0xf4, 0xff, 0xed, 0xff, 0xf5, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xeb, 0xff, 0xf6, 0xff, 0xeb, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xed, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf3, 0xff, 0xee, 0xff, 0xf5, 0xff, 0xed, 0xff, 0xf7, 0xff, 0xeb, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xf7, 0xff, 0xea, 0xff, 0xf5, 0xff, 0xeb, 0xff, 0xf3, 0xff, 0xec, 0xff, 0xf1, 0xff, 0xed, 0xff, 0xf1, 0xff, 0xee, 0xff, 0xf2, 0xff, 0xef, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xf7, 0xff, 0xec, 0xff, 0xf8, 0xff, 0xeb, 0xff, 0xf9, 0xff, 0xea, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xf7, 0xff, 0xec, 0xff, 0xf7, 0xff, 0xee, 0xff, 0xf7, 0xff, 0xf1, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x10, 0x00, 0x12, 0x00, 0x13, 0x00, 0x12, 0x00, 0x16, 0x00, 0x11, 0x00, 0x18, 0x00, 0x0f, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0x1b, 0x00, 0x09, 0x00, 0x1b, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x19, 0x00, 0x07, 0x00, 0x18, 0x00, 0x07, 0x00, 0x17, 0x00, 0x07, 0x00, 0x17, 0x00, 0x06, 0x00, 0x17, 0x00, 0x04, 0x00, 0x17, 0x00, 0x01, 0x00, 0x17, 0x00, 0xfe, 0xff, 0x17, 0x00, 0xfd, 0xff, 0x16, 0x00, 0xfd, 0xff, 0x15, 0x00, 0xfd, 0xff, 0x14, 0x00, 0xfe, 0xff, 0x12, 0x00, 0xff, 0xff, 0x11, 0x00, 0xff, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0xfb, 0xff, 0x0f, 0x00, 0xfb, 0xff, 0x10, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf5, 0xff, 0xfb, 0xff, 0xf4, 0xff, 0xfb, 0xff, 0xf5, 0xff, 0xfb, 0xff, 0xf7, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfd, 0xff, 0xf4, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x05, 0x00, 0x03, 0x00, 0x07, 0x00, 0x05, 0x00, 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, 0x12, 0x00, 0x07, 0x00, 0x14, 0x00, 0x07, 0x00, 0x15, 0x00, 0x07, 0x00, 0x16, 0x00, 0x05, 0x00, 0x16, 0x00, 0x03, 0x00, 0x16, 0x00, 0x01, 0x00, 0x16, 0x00, 0xff, 0xff, 0x16, 0x00, 0xfe, 0xff, 0x16, 0x00, 0xfe, 0xff, 0x16, 0x00, 0xff, 0xff, 0x16, 0x00, 0xff, 0xff, 0x15, 0x00, 0xff, 0xff, 0x13, 0x00, 0xfd, 0xff, 0x10, 0x00, 0xfb, 0xff, 0x0c, 0x00, 0xf9, 0xff, 0x09, 0x00, 0xf7, 0xff, 0x06, 0x00, 0xf7, 0xff, 0x03, 0x00, 0xf7, 0xff, 0x02, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xef, 0xff, 0xf3, 0xff, 0xed, 0xff, 0xf2, 0xff, 0xeb, 0xff, 0xf1, 0xff, 0xe9, 0xff, 0xf2, 0xff, 0xe8, 0xff, 0xf4, 0xff, 0xe8, 0xff, 0xf7, 0xff, 0xe8, 0xff, 0xfa, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0xe7, 0xff, 0xfc, 0xff, 0xe7, 0xff, 0xfc, 0xff, 0xe8, 0xff, 0xfe, 0xff, 0xe8, 0xff, 0x01, 0x00, 0xea, 0xff, 0x03, 0x00, 0xec, 0xff, 0x05, 0x00, 0xef, 0xff, 0x06, 0x00, 0xf1, 0xff, 0x05, 0x00, 0xf3, 0xff, 0x05, 0x00, 0xf5, 0xff, 0x05, 0x00, 0xf6, 0xff, 0x05, 0x00, 0xf6, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x09, 0x00, 0xf9, 0xff, 0x0b, 0x00, 0xfa, 0xff, 0x0d, 0x00, 0xfc, 0xff, 0x0d, 0x00, 0xfe, 0xff, 0x0c, 0x00, 0xff, 0xff, 0x0b, 0x00, 0xff, 0xff, 0x0b, 0x00, 0xfe, 0xff, 0x0d, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0xfd, 0xff, 0x12, 0x00, 0xfd, 0xff, 0x14, 0x00, 0xfe, 0xff, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x01, 0x00, 0x15, 0x00, 0x02, 0x00, 0x15, 0x00, 0x03, 0x00, 0x15, 0x00, 0x03, 0x00, 0x15, 0x00, 0x04, 0x00, 0x15, 0x00, 0x06, 0x00, 0x16, 0x00, 0x08, 0x00, 0x17, 0x00, 0x0a, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x10, 0x00, 0x17, 0x00, 0x10, 0x00, 0x16, 0x00, 0x10, 0x00, 0x14, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x10, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x0e, 0x00, 0xff, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xf7, 0xff, 0x05, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf4, 0xff, 0x03, 0x00, 0xf3, 0xff, 0x01, 0x00, 0xf2, 0xff, 0xfe, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xf9, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x11, 0x00, 0xfc, 0xff, 0x13, 0x00, 0xfd, 0xff, 0x13, 0x00, 0xfe, 0xff, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x10, 0x00, 0x02, 0x00, 0x10, 0x00, 0x02, 0x00, 0x11, 0x00, 0x02, 0x00, 0x12, 0x00, 0x02, 0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x03, 0x00, 0x15, 0x00, 0x05, 0x00, 0x13, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x0b, 0x00, 0xfe, 0xff, 0x0c, 0x00, 0xfa, 0xff, 0x0d, 0x00, 0xf8, 0xff, 0x0d, 0x00, 0xf5, 0xff, 0x0c, 0x00, 0xf4, 0xff, 0x0b, 0x00, 0xf2, 0xff, 0x09, 0x00, 0xf1, 0xff, 0x08, 0x00, 0xef, 0xff, 0x06, 0x00, 0xed, 0xff, 0x05, 0x00, 0xeb, 0xff, 0x05, 0x00, 0xe8, 0xff, 0x04, 0x00, 0xe6, 0xff, 0x04, 0x00, 0xe5, 0xff, 0x02, 0x00, 0xe4, 0xff, 0x00, 0x00, 0xe5, 0xff, 0xfe, 0xff, 0xe6, 0xff, 0xfc, 0xff, 0xe6, 0xff, 0xfb, 0xff, 0xe6, 0xff, 0xfa, 0xff, 0xe5, 0xff, 0xf9, 0xff, 0xe5, 0xff, 0xf8, 0xff, 0xe4, 0xff, 0xf7, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0xe4, 0xff, 0xf5, 0xff, 0xe5, 0xff, 0xf3, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xe7, 0xff, 0xf0, 0xff, 0xe8, 0xff, 0xef, 0xff, 0xe9, 0xff, 0xed, 0xff, 0xea, 0xff, 0xec, 0xff, 0xea, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xed, 0xff, 0xe7, 0xff, 0xef, 0xff, 0xe6, 0xff, 0xf1, 0xff, 0xe6, 0xff, 0xf3, 0xff, 0xe6, 0xff, 0xf5, 0xff, 0xe7, 0xff, 0xf7, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xe9, 0xff, 0xf9, 0xff, 0xeb, 0xff, 0xf9, 0xff, 0xec, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xfb, 0xff, 0xf0, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00, 0x08, 0x00, 0x04, 0x00, 0x09, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x0b, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x11, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x0d, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x11, 0x00, 0x11, 0x00, 0x14, 0x00, 0x11, 0x00, 0x16, 0x00, 0x10, 0x00, 0x18, 0x00, 0x11, 0x00, 0x18, 0x00, 0x11, 0x00, 0x18, 0x00, 0x10, 0x00, 0x18, 0x00, 0x10, 0x00, 0x19, 0x00, 0x0f, 0x00, 0x19, 0x00, 0x0e, 0x00, 0x1a, 0x00, 0x0e, 0x00, 0x1a, 0x00, 0x0f, 0x00, 0x1b, 0x00, 0x0f, 0x00, 0x1a, 0x00, 0x0f, 0x00, 0x19, 0x00, 0x0f, 0x00, 0x17, 0x00, 0x0f, 0x00, 0x15, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x0d, 0x00, 0x13, 0x00, 0x0d, 0x00, 0x13, 0x00, 0x0d, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xff, 0xff, 0x0d, 0x00, 0xff, 0xff, 0x0c, 0x00, 0xff, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xf5, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0xf3, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xfd, 0xff, 0xf4, 0xff, 0xfd, 0xff, 0xf4, 0xff, 0xff, 0xff, 0xf6, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x10, 0x00, 0xfe, 0xff, 0x12, 0x00, 0xfc, 0xff, 0x12, 0x00, 0xfa, 0xff, 0x12, 0x00, 0xf9, 0xff, 0x11, 0x00, 0xf9, 0xff, 0x10, 0x00, 0xf9, 0xff, 0x10, 0x00, 0xf9, 0xff, 0x11, 0x00, 0xf8, 0xff, 0x11, 0x00, 0xf7, 0xff, 0x11, 0x00, 0xf6, 0xff, 0x0f, 0x00, 0xf5, 0xff, 0x0c, 0x00, 0xf6, 0xff, 0x09, 0x00, 0xf7, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xff, 0xff, 0x04, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf7, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf4, 0xff, 0x00, 0x00, 0xf2, 0xff, 0xfd, 0xff, 0xf1, 0xff, 0xfb, 0xff, 0xee, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xf9, 0xff, 0xea, 0xff, 0xfa, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0xe7, 0xff, 0xfc, 0xff, 0xe7, 0xff, 0xfc, 0xff, 0xe7, 0xff, 0xfb, 0xff, 0xe8, 0xff, 0xfb, 0xff, 0xe7, 0xff, 0xfa, 0xff, 0xe7, 0xff, 0xfb, 0xff, 0xe6, 0xff, 0xfc, 0xff, 0xe6, 0xff, 0xfd, 0xff, 0xe7, 0xff, 0xfe, 0xff, 0xe9, 0xff, 0xff, 0xff, 0xeb, 0xff, 0xff, 0xff, 0xed, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xf1, 0xff, 0x00, 0x00, 0xf2, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x08, 0x00, 0xf9, 0xff, 0x08, 0x00, 0xf9, 0xff, 0x09, 0x00, 0xf9, 0xff, 0x09, 0x00, 0xf8, 0xff, 0x09, 0x00, 0xf8, 0xff, 0x09, 0x00, 0xf8, 0xff, 0x0a, 0x00, 0xf9, 0xff, 0x0b, 0x00, 0xfa, 0xff, 0x0c, 0x00, 0xfa, 0xff, 0x0e, 0x00, 0xfa, 0xff, 0x0f, 0x00, 0xfa, 0xff, 0x10, 0x00, 0xf9, 0xff, 0x10, 0x00, 0xf9, 0xff, 0x0f, 0x00, 0xf9, 0xff, 0x0d, 0x00, 0xf9, 0xff, 0x0b, 0x00, 0xfb, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xff, 0xff, 0x05, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfa, 0xff, 0x0b, 0x00, 0xf7, 0xff, 0x0d, 0x00, 0xf4, 0xff, 0x10, 0x00, 0xf2, 0xff, 0x11, 0x00, 0xf1, 0xff, 0x13, 0x00, 0xf1, 0xff, 0x13, 0x00, 0xf1, 0xff, 0x12, 0x00, 0xf2, 0xff, 0x11, 0x00, 0xf3, 0xff, 0x10, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0xf2, 0xff, 0x0f, 0x00, 0xf1, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0x0e, 0x00, 0xf0, 0xff, 0x0c, 0x00, 0xf0, 0xff, 0x0a, 0x00, 0xf1, 0xff, 0x08, 0x00, 0xf3, 0xff, 0x06, 0x00, 0xf5, 0xff, 0x05, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf4, 0xff, 0x03, 0x00, 0xf3, 0xff, 0x02, 0x00, 0xf2, 0xff, 0x00, 0x00, 0xf2, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfa, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xf3, 0xff, 0xfb, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xf0, 0xff, 0xfd, 0xff, 0xef, 0xff, 0xfe, 0xff, 0xef, 0xff, 0x00, 0x00, 0xef, 0xff, 0x00, 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf2, 0xff, 0x01, 0x00, 0xf3, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf4, 0xff, 0x04, 0x00, 0xf3, 0xff, 0x04, 0x00, 0xf3, 0xff, 0x05, 0x00, 0xf3, 0xff, 0x07, 0x00, 0xf4, 0xff, 0x08, 0x00, 0xf4, 0xff, 0x09, 0x00, 0xf6, 0xff, 0x0a, 0x00, 0xf7, 0xff, 0x0c, 0x00, 0xf9, 0xff, 0x0d, 0x00, 0xfa, 0xff, 0x0e, 0x00, 0xfb, 0xff, 0x0f, 0x00, 0xfb, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x10, 0x00, 0xfd, 0xff, 0x10, 0x00, 0xff, 0xff, 0x11, 0x00, 0x02, 0x00, 0x12, 0x00, 0x05, 0x00, 0x12, 0x00, 0x08, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x12, 0x00, 0x07, 0x00, 0x15, 0x00, 0x06, 0x00, 0x19, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x1d, 0x00, 0x01, 0x00, 0x1c, 0x00, 0xfe, 0xff, 0x1b, 0x00, 0xfb, 0xff, 0x1a, 0x00, 0xf7, 0xff, 0x1a, 0x00, 0xf5, 0xff, 0x1b, 0x00, 0xf3, 0xff, 0x1d, 0x00, 0xf2, 0xff, 0x1f, 0x00, 0xf2, 0xff, 0x1f, 0x00, 0xf1, 0xff, 0x1e, 0x00, 0xf1, 0xff, 0x1c, 0x00, 0xf1, 0xff, 0x19, 0x00, 0xf0, 0xff, 0x16, 0x00, 0xef, 0xff, 0x13, 0x00, 0xed, 0xff, 0x10, 0x00, 0xec, 0xff, 0x0e, 0x00, 0xeb, 0xff, 0x0c, 0x00, 0xea, 0xff, 0x0a, 0x00, 0xeb, 0xff, 0x07, 0x00, 0xed, 0xff, 0x04, 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf3, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xfb, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x03, 0x00, 0xf4, 0xff, 0x05, 0x00, 0xf4, 0xff, 0x06, 0x00, 0xf5, 0xff, 0x06, 0x00, 0xf6, 0xff, 0x06, 0x00, 0xf6, 0xff, 0x07, 0x00, 0xf5, 0xff, 0x08, 0x00, 0xf4, 0xff, 0x0b, 0x00, 0xf4, 0xff, 0x0e, 0x00, 0xf4, 0xff, 0x11, 0x00, 0xf6, 0xff, 0x12, 0x00, 0xf8, 0xff, 0x13, 0x00, 0xf9, 0xff, 0x14, 0x00, 0xfa, 0xff, 0x14, 0x00, 0xfa, 0xff, 0x15, 0x00, 0xf9, 0xff, 0x15, 0x00, 0xf8, 0xff, 0x15, 0x00, 0xf7, 0xff, 0x14, 0x00, 0xf8, 0xff, 0x14, 0x00, 0xf9, 0xff, 0x14, 0x00, 0xfb, 0xff, 0x14, 0x00, 0xfd, 0xff, 0x14, 0x00, 0xfe, 0xff, 0x14, 0x00, 0xff, 0xff, 0x13, 0x00, 0xff, 0xff, 0x12, 0x00, 0xff, 0xff, 0x10, 0x00, 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x11, 0x00, 0x0b, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x16, 0x00, 0x09, 0x00, 0x16, 0x00, 0x08, 0x00, 0x16, 0x00, 0x06, 0x00, 0x15, 0x00, 0x05, 0x00, 0x12, 0x00, 0x03, 0x00, 0x10, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xfe, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf6, 0xff, 0x01, 0x00, 0xf4, 0xff, 0xff, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0xf2, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xfa, 0xff, 0xf3, 0xff, 0xf7, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xef, 0xff, 0xe9, 0xff, 0xef, 0xff, 0xe7, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xe5, 0xff, 0xf5, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0xe3, 0xff, 0xf7, 0xff, 0xe1, 0xff, 0xf7, 0xff, 0xdf, 0xff, 0xf8, 0xff, 0xdd, 0xff, 0xf8, 0xff, 0xdc, 0xff, 0xf9, 0xff, 0xdc, 0xff, 0xfa, 0xff, 0xdd, 0xff, 0xfc, 0xff, 0xde, 0xff, 0xfe, 0xff, 0xde, 0xff, 0x00, 0x00, 0xdf, 0xff, 0x02, 0x00, 0xdf, 0xff, 0x03, 0x00, 0xdf, 0xff, 0x04, 0x00, 0xe0, 0xff, 0x05, 0x00, 0xe1, 0xff, 0x06, 0x00, 0xe2, 0xff, 0x06, 0x00, 0xe4, 0xff, 0x07, 0x00, 0xe6, 0xff, 0x07, 0x00, 0xe8, 0xff, 0x07, 0x00, 0xea, 0xff, 0x08, 0x00, 0xec, 0xff, 0x08, 0x00, 0xee, 0xff, 0x09, 0x00, 0xf0, 0xff, 0x0a, 0x00, 0xf3, 0xff, 0x0a, 0x00, 0xf6, 0xff, 0x0a, 0x00, 0xf9, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x13, 0x00, 0x05, 0x00, 0x15, 0x00, 0x05, 0x00, 0x16, 0x00, 0x05, 0x00, 0x16, 0x00, 0x03, 0x00, 0x16, 0x00, 0x01, 0x00, 0x17, 0x00, 0xff, 0xff, 0x19, 0x00, 0xfc, 0xff, 0x1b, 0x00, 0xfb, 0xff, 0x1d, 0x00, 0xfa, 0xff, 0x1f, 0x00, 0xfa, 0xff, 0x20, 0x00, 0xf9, 0xff, 0x20, 0x00, 0xf9, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0x1e, 0x00, 0xf7, 0xff, 0x1d, 0x00, 0xf5, 0xff, 0x1c, 0x00, 0xf3, 0xff, 0x1b, 0x00, 0xf2, 0xff, 0x1a, 0x00, 0xf1, 0xff, 0x18, 0x00, 0xf1, 0xff, 0x17, 0x00, 0xf2, 0xff, 0x14, 0x00, 0xf2, 0xff, 0x12, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0xf3, 0xff, 0x0d, 0x00, 0xf3, 0xff, 0x0a, 0x00, 0xf4, 0xff, 0x07, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf5, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xfd, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf1, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xef, 0xff, 0xf7, 0xff, 0xee, 0xff, 0xf8, 0xff, 0xeb, 0xff, 0xfa, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0xe5, 0xff, 0xfd, 0xff, 0xe3, 0xff, 0xfe, 0xff, 0xe2, 0xff, 0xff, 0xff, 0xe2, 0xff, 0xff, 0xff, 0xe3, 0xff, 0x01, 0x00, 0xe5, 0xff, 0x03, 0x00, 0xe6, 0xff, 0x05, 0x00, 0xe6, 0xff, 0x08, 0x00, 0xe6, 0xff, 0x0a, 0x00, 0xe5, 0xff, 0x0b, 0x00, 0xe5, 0xff, 0x0d, 0x00, 0xe5, 0xff, 0x0d, 0x00, 0xe7, 0xff, 0x0e, 0x00, 0xea, 0xff, 0x0e, 0x00, 0xed, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0x10, 0x00, 0xf3, 0xff, 0x12, 0x00, 0xf5, 0xff, 0x13, 0x00, 0xf7, 0xff, 0x14, 0x00, 0xf9, 0xff, 0x14, 0x00, 0xfa, 0xff, 0x13, 0x00, 0xfd, 0xff, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x03, 0x00, 0x13, 0x00, 0x06, 0x00, 0x14, 0x00, 0x08, 0x00, 0x15, 0x00, 0x0a, 0x00, 0x15, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x0d, 0x00, 0x13, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x14, 0x00, 0x0f, 0x00, 0x16, 0x00, 0x0f, 0x00, 0x18, 0x00, 0x0e, 0x00, 0x19, 0x00, 0x0d, 0x00, 0x1a, 0x00, 0x0b, 0x00, 0x1b, 0x00, 0x09, 0x00, 0x1d, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x02, 0x00, 0x20, 0x00, 0xff, 0xff, 0x20, 0x00, 0xfc, 0xff, 0x21, 0x00, 0xfb, 0xff, 0x22, 0x00, 0xfa, 0xff, 0x22, 0x00, 0xf9, 0xff, 0x23, 0x00, 0xf7, 0xff, 0x23, 0x00, 0xf5, 0xff, 0x24, 0x00, 0xf2, 0xff, 0x23, 0x00, 0xf0, 0xff, 0x22, 0x00, 0xed, 0xff, 0x20, 0x00, 0xeb, 0xff, 0x1e, 0x00, 0xea, 0xff, 0x1b, 0x00, 0xe9, 0xff, 0x18, 0x00, 0xe9, 0xff, 0x15, 0x00, 0xe9, 0xff, 0x12, 0x00, 0xea, 0xff, 0x0f, 0x00, 0xe9, 0xff, 0x0c, 0x00, 0xe8, 0xff, 0x08, 0x00, 0xe6, 0xff, 0x05, 0x00, 0xe4, 0xff, 0x02, 0x00, 0xe3, 0xff, 0xff, 0xff, 0xe2, 0xff, 0xfc, 0xff, 0xe4, 0xff, 0xf9, 0xff, 0xe6, 0xff, 0xf5, 0xff, 0xe8, 0xff, 0xf1, 0xff, 0xea, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xe7, 0xff, 0xea, 0xff, 0xe5, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xeb, 0xff, 0xe3, 0xff, 0xed, 0xff, 0xe1, 0xff, 0xf1, 0xff, 0xdf, 0xff, 0xf4, 0xff, 0xdd, 0xff, 0xf7, 0xff, 0xdb, 0xff, 0xf8, 0xff, 0xda, 0xff, 0xf8, 0xff, 0xda, 0xff, 0xf7, 0xff, 0xda, 0xff, 0xf7, 0xff, 0xdb, 0xff, 0xf7, 0xff, 0xdb, 0xff, 0xf9, 0xff, 0xdc, 0xff, 0xfb, 0xff, 0xdc, 0xff, 0xfe, 0xff, 0xdc, 0xff, 0x01, 0x00, 0xdc, 0xff, 0x03, 0x00, 0xdd, 0xff, 0x05, 0x00, 0xde, 0xff, 0x06, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xe3, 0xff, 0x08, 0x00, 0xe5, 0xff, 0x09, 0x00, 0xe8, 0xff, 0x0b, 0x00, 0xea, 0xff, 0x0c, 0x00, 0xec, 0xff, 0x0e, 0x00, 0xee, 0xff, 0x11, 0x00, 0xf0, 0xff, 0x13, 0x00, 0xf2, 0xff, 0x15, 0x00, 0xf5, 0xff, 0x16, 0x00, 0xf8, 0xff, 0x16, 0x00, 0xfb, 0xff, 0x15, 0x00, 0xff, 0xff, 0x13, 0x00, 0x03, 0x00, 0x12, 0x00, 0x06, 0x00, 0x11, 0x00, 0x09, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x10, 0x00, 0x0d, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x16, 0x00, 0x0e, 0x00, 0x1b, 0x00, 0x0c, 0x00, 0x1f, 0x00, 0x0b, 0x00, 0x22, 0x00, 0x0b, 0x00, 0x24, 0x00, 0x0b, 0x00, 0x26, 0x00, 0x0c, 0x00, 0x27, 0x00, 0x0c, 0x00, 0x28, 0x00, 0x0c, 0x00, 0x28, 0x00, 0x0b, 0x00, 0x29, 0x00, 0x09, 0x00, 0x2b, 0x00, 0x07, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x2e, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x03, 0x00, 0x2a, 0x00, 0x02, 0x00, 0x27, 0x00, 0xff, 0xff, 0x25, 0x00, 0xfc, 0xff, 0x22, 0x00, 0xf9, 0xff, 0x1f, 0x00, 0xf7, 0xff, 0x1d, 0x00, 0xf5, 0xff, 0x1a, 0x00, 0xf4, 0xff, 0x17, 0x00, 0xf3, 0xff, 0x13, 0x00, 0xf2, 0xff, 0x0e, 0x00, 0xf1, 0xff, 0x09, 0x00, 0xef, 0xff, 0x04, 0x00, 0xee, 0xff, 0xff, 0xff, 0xec, 0xff, 0xfb, 0xff, 0xeb, 0xff, 0xf9, 0xff, 0xeb, 0xff, 0xf7, 0xff, 0xeb, 0xff, 0xf6, 0xff, 0xeb, 0xff, 0xf4, 0xff, 0xeb, 0xff, 0xf1, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xe7, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xe5, 0xff, 0xeb, 0xff, 0xe6, 0xff, 0xed, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xf3, 0xff, 0xe5, 0xff, 0xf7, 0xff, 0xe3, 0xff, 0xf9, 0xff, 0xe1, 0xff, 0xfa, 0xff, 0xe0, 0xff, 0xfb, 0xff, 0xdf, 0xff, 0xfb, 0xff, 0xdf, 0xff, 0xfc, 0xff, 0xe0, 0xff, 0xfd, 0xff, 0xe1, 0xff, 0x01, 0x00, 0xe2, 0xff, 0x05, 0x00, 0xe2, 0xff, 0x09, 0x00, 0xe2, 0xff, 0x0c, 0x00, 0xe2, 0xff, 0x0e, 0x00, 0xe3, 0xff, 0x0d, 0x00, 0xe4, 0xff, 0x0c, 0x00, 0xe6, 0xff, 0x0b, 0x00, 0xe8, 0xff, 0x0b, 0x00, 0xeb, 0xff, 0x0b, 0x00, 0xee, 0xff, 0x0d, 0x00, 0xf2, 0xff, 0x0f, 0x00, 0xf5, 0xff, 0x11, 0x00, 0xf8, 0xff, 0x12, 0x00, 0xfa, 0xff, 0x11, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x0d, 0x00, 0x1b, 0x00, 0x0f, 0x00, 0x1d, 0x00, 0x10, 0x00, 0x1e, 0x00, 0x10, 0x00, 0x1f, 0x00, 0x0f, 0x00, 0x21, 0x00, 0x0e, 0x00, 0x25, 0x00, 0x0d, 0x00, 0x29, 0x00, 0x0d, 0x00, 0x2c, 0x00, 0x0d, 0x00, 0x2e, 0x00, 0x0d, 0x00, 0x2e, 0x00, 0x0e, 0x00, 0x2d, 0x00, 0x0d, 0x00, 0x2a, 0x00, 0x0c, 0x00, 0x27, 0x00, 0x0b, 0x00, 0x25, 0x00, 0x09, 0x00, 0x23, 0x00, 0x07, 0x00, 0x22, 0x00, 0x05, 0x00, 0x22, 0x00, 0x03, 0x00, 0x20, 0x00, 0x01, 0x00, 0x1d, 0x00, 0x01, 0x00, 0x19, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x11, 0x00, 0xfe, 0xff, 0x0d, 0x00, 0xfc, 0xff, 0x0b, 0x00, 0xf9, 0xff, 0x09, 0x00, 0xf6, 0xff, 0x08, 0x00, 0xf3, 0xff, 0x06, 0x00, 0xf2, 0xff, 0x05, 0x00, 0xf3, 0xff, 0x02, 0x00, 0xf4, 0xff, 0x00, 0x00, 0xf6, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xf5, 0xff, 0xed, 0xff, 0xf6, 0xff, 0xe9, 0xff, 0xf7, 0xff, 0xe5, 0xff, 0xf7, 0xff, 0xe2, 0xff, 0xf7, 0xff, 0xe0, 0xff, 0xf8, 0xff, 0xe1, 0xff, 0xfa, 0xff, 0xe2, 0xff, 0xfd, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xe4, 0xff, 0x02, 0x00, 0xe3, 0xff, 0x04, 0x00, 0xe1, 0xff, 0x05, 0x00, 0xdf, 0xff, 0x07, 0x00, 0xde, 0xff, 0x08, 0x00, 0xde, 0xff, 0x0a, 0x00, 0xdf, 0xff, 0x0b, 0x00, 0xe2, 0xff, 0x0d, 0x00, 0xe5, 0xff, 0x0f, 0x00, 0xe9, 0xff, 0x10, 0x00, 0xec, 0xff, 0x12, 0x00, 0xee, 0xff, 0x12, 0x00, 0xef, 0xff, 0x13, 0x00, 0xf1, 0xff, 0x14, 0x00, 0xf3, 0xff, 0x15, 0x00, 0xf6, 0xff, 0x15, 0x00, 0xfa, 0xff, 0x16, 0x00, 0xfd, 0xff, 0x17, 0x00, 0x01, 0x00, 0x17, 0x00, 0x05, 0x00, 0x17, 0x00, 0x09, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x0f, 0x00, 0x18, 0x00, 0x11, 0x00, 0x17, 0x00, 0x13, 0x00, 0x17, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16, 0x00, 0x15, 0x00, 0x19, 0x00, 0x14, 0x00, 0x1b, 0x00, 0x13, 0x00, 0x1d, 0x00, 0x12, 0x00, 0x1f, 0x00, 0x12, 0x00, 0x1f, 0x00, 0x11, 0x00, 0x1e, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x0d, 0x00, 0x1d, 0x00, 0x0b, 0x00, 0x1e, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x08, 0x00, 0x20, 0x00, 0x07, 0x00, 0x20, 0x00, 0x06, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x01, 0x00, 0x1c, 0x00, 0xff, 0xff, 0x1a, 0x00, 0xfb, 0xff, 0x18, 0x00, 0xf9, 0xff, 0x18, 0x00, 0xf7, 0xff, 0x18, 0x00, 0xf6, 0xff, 0x17, 0x00, 0xf6, 0xff, 0x16, 0x00, 0xf5, 0xff, 0x14, 0x00, 0xf4, 0xff, 0x10, 0x00, 0xf2, 0xff, 0x0d, 0x00, 0xf0, 0xff, 0x0a, 0x00, 0xee, 0xff, 0x08, 0x00, 0xee, 0xff, 0x06, 0x00, 0xee, 0xff, 0x05, 0x00, 0xef, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf1, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xef, 0xff, 0xf2, 0xff, 0xed, 0xff, 0xf3, 0xff, 0xeb, 0xff, 0xf3, 0xff, 0xe8, 0xff, 0xf4, 0xff, 0xe6, 0xff, 0xf4, 0xff, 0xe3, 0xff, 0xf5, 0xff, 0xe1, 0xff, 0xf5, 0xff, 0xde, 0xff, 0xf4, 0xff, 0xdc, 0xff, 0xf3, 0xff, 0xdb, 0xff, 0xf2, 0xff, 0xd9, 0xff, 0xf1, 0xff, 0xd8, 0xff, 0xf1, 0xff, 0xd7, 0xff, 0xf1, 0xff, 0xd6, 0xff, 0xf3, 0xff, 0xd7, 0xff, 0xf5, 0xff, 0xd8, 0xff, 0xf8, 0xff, 0xd8, 0xff, 0xf9, 0xff, 0xd8, 0xff, 0xfa, 0xff, 0xd9, 0xff, 0xf9, 0xff, 0xd9, 0xff, 0xf8, 0xff, 0xda, 0xff, 0xf8, 0xff, 0xdb, 0xff, 0xfa, 0xff, 0xdc, 0xff, 0xfd, 0xff, 0xdf, 0xff, 0x01, 0x00, 0xe1, 0xff, 0x04, 0x00, 0xe4, 0xff, 0x07, 0x00, 0xe6, 0xff, 0x08, 0x00, 0xe7, 0xff, 0x08, 0x00, 0xe8, 0xff, 0x07, 0x00, 0xe9, 0xff, 0x08, 0x00, 0xea, 0xff, 0x09, 0x00, 0xed, 0xff, 0x0b, 0x00, 0xf0, 0xff, 0x0d, 0x00, 0xf4, 0xff, 0x0e, 0x00, 0xf7, 0xff, 0x0e, 0x00, 0xfb, 0xff, 0x0c, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x02, 0x00, 0x08, 0x00, 0x04, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x12, 0x00, 0x03, 0x00, 0x15, 0x00, 0x02, 0x00, 0x17, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0xff, 0xff, 0x1a, 0x00, 0xfe, 0xff, 0x1a, 0x00, 0xfd, 0xff, 0x1b, 0x00, 0xfd, 0xff, 0x1c, 0x00, 0xfd, 0xff, 0x1d, 0x00, 0xfd, 0xff, 0x1d, 0x00, 0xfe, 0xff, 0x1d, 0x00, 0xfe, 0xff, 0x1d, 0x00, 0xfe, 0xff, 0x1b, 0x00, 0xfe, 0xff, 0x1a, 0x00, 0xfc, 0xff, 0x18, 0x00, 0xfb, 0xff, 0x16, 0x00, 0xfa, 0xff, 0x15, 0x00, 0xf9, 0xff, 0x14, 0x00, 0xf9, 0xff, 0x13, 0x00, 0xf9, 0xff, 0x11, 0x00, 0xf9, 0xff, 0x0e, 0x00, 0xf8, 0xff, 0x0b, 0x00, 0xf6, 0xff, 0x08, 0x00, 0xf3, 0xff, 0x05, 0x00, 0xf1, 0xff, 0x03, 0x00, 0xef, 0xff, 0x02, 0x00, 0xef, 0xff, 0x00, 0x00, 0xef, 0xff, 0xfe, 0xff, 0xee, 0xff, 0xfb, 0xff, 0xec, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xf5, 0xff, 0xe9, 0xff, 0xf2, 0xff, 0xe8, 0xff, 0xf1, 0xff, 0xe9, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xef, 0xff, 0xed, 0xff, 0xee, 0xff, 0xef, 0xff, 0xec, 0xff, 0xf1, 0xff, 0xe9, 0xff, 0xf1, 0xff, 0xe7, 0xff, 0xf1, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0xe2, 0xff, 0xf3, 0xff, 0xe1, 0xff, 0xf5, 0xff, 0xe0, 0xff, 0xf8, 0xff, 0xe0, 0xff, 0xfc, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xe0, 0xff, 0x01, 0x00, 0xdf, 0xff, 0x03, 0x00, 0xdf, 0xff, 0x04, 0x00, 0xde, 0xff, 0x04, 0x00, 0xdd, 0xff, 0x04, 0x00, 0xdd, 0xff, 0x03, 0x00, 0xde, 0xff, 0x03, 0x00, 0xe0, 0xff, 0x04, 0x00, 0xe2, 0xff, 0x05, 0x00, 0xe5, 0xff, 0x06, 0x00, 0xe7, 0xff, 0x08, 0x00, 0xea, 0xff, 0x08, 0x00, 0xee, 0xff, 0x08, 0x00, 0xf1, 0xff, 0x07, 0x00, 0xf4, 0xff, 0x06, 0x00, 0xf6, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xff, 0xff, 0x06, 0x00, 0x03, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x12, 0x00, 0x06, 0x00, 0x15, 0x00, 0x04, 0x00, 0x17, 0x00, 0x05, 0x00, 0x19, 0x00, 0x06, 0x00, 0x1b, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x0b, 0x00, 0x21, 0x00, 0x0d, 0x00, 0x24, 0x00, 0x0d, 0x00, 0x26, 0x00, 0x0c, 0x00, 0x27, 0x00, 0x0c, 0x00, 0x28, 0x00, 0x0c, 0x00, 0x28, 0x00, 0x0d, 0x00, 0x29, 0x00, 0x0f, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x2a, 0x00, 0x12, 0x00, 0x2b, 0x00, 0x12, 0x00, 0x2b, 0x00, 0x11, 0x00, 0x2b, 0x00, 0x0f, 0x00, 0x2b, 0x00, 0x0e, 0x00, 0x2a, 0x00, 0x0c, 0x00, 0x29, 0x00, 0x0b, 0x00, 0x28, 0x00, 0x0b, 0x00, 0x27, 0x00, 0x0a, 0x00, 0x26, 0x00, 0x09, 0x00, 0x25, 0x00, 0x08, 0x00, 0x24, 0x00, 0x06, 0x00, 0x22, 0x00, 0x05, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x02, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1a, 0x00, 0xfe, 0xff, 0x18, 0x00, 0xfc, 0xff, 0x16, 0x00, 0xfb, 0xff, 0x15, 0x00, 0xfb, 0xff, 0x13, 0x00, 0xfc, 0xff, 0x12, 0x00, 0xfc, 0xff, 0x11, 0x00, 0xfb, 0xff, 0x0f, 0x00, 0xf9, 0xff, 0x0d, 0x00, 0xf7, 0xff, 0x0a, 0x00, 0xf4, 0xff, 0x08, 0x00, 0xf1, 0xff, 0x05, 0x00, 0xf0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x02, 0x00, 0xf1, 0xff, 0x01, 0x00, 0xf2, 0xff, 0xff, 0xff, 0xf2, 0xff, 0xfd, 0xff, 0xf1, 0xff, 0xfa, 0xff, 0xef, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xf3, 0xff, 0xeb, 0xff, 0xf1, 0xff, 0xeb, 0xff, 0xef, 0xff, 0xec, 0xff, 0xef, 0xff, 0xee, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xf1, 0xff, 0xed, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xeb, 0xff, 0xf2, 0xff, 0xea, 0xff, 0xf2, 0xff, 0xea, 0xff, 0xf3, 0xff, 0xeb, 0xff, 0xf5, 0xff, 0xeb, 0xff, 0xf7, 0xff, 0xec, 0xff, 0xf8, 0xff, 0xee, 0xff, 0xfa, 0xff, 0xef, 0xff, 0xfb, 0xff, 0xf0, 0xff, 0xfb, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf5, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xf8, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xff, 0xff, 0x07, 0x00, 0x01, 0x00, 0x08, 0x00, 0x02, 0x00, 0x09, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x07, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x03, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xfb, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0xf1, 0xff, 0xfa, 0xff, 0xef, 0xff, 0xfb, 0xff, 0xed, 0xff, 0xfc, 0xff, 0xeb, 0xff, 0xfd, 0xff, 0xe9, 0xff, 0xfe, 0xff, 0xe6, 0xff, 0xfe, 0xff, 0xe5, 0xff, 0xfd, 0xff, 0xe4, 0xff, 0xfc, 0xff, 0xe4, 0xff, 0xfb, 0xff, 0xe4, 0xff, 0xfa, 0xff, 0xe4, 0xff, 0xfb, 0xff, 0xe3, 0xff, 0xfc, 0xff, 0xe1, 0xff, 0xfd, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x01, 0x00, 0xdf, 0xff, 0x02, 0x00, 0xe0, 0xff, 0x02, 0x00, 0xe2, 0xff, 0x01, 0x00, 0xe4, 0xff, 0x01, 0x00, 0xe6, 0xff, 0x01, 0x00, 0xe7, 0xff, 0x03, 0x00, 0xe7, 0xff, 0x06, 0x00, 0xe7, 0xff, 0x0a, 0x00, 0xe8, 0xff, 0x0d, 0x00, 0xe8, 0xff, 0x10, 0x00, 0xe9, 0xff, 0x11, 0x00, 0xea, 0xff, 0x11, 0x00, 0xeb, 0xff, 0x10, 0x00, 0xec, 0xff, 0x10, 0x00, 0xed, 0xff, 0x10, 0x00, 0xee, 0xff, 0x11, 0x00, 0xef, 0xff, 0x13, 0x00, 0xf0, 0xff, 0x15, 0x00, 0xf0, 0xff, 0x16, 0x00, 0xf0, 0xff, 0x16, 0x00, 0xf1, 0xff, 0x15, 0x00, 0xf2, 0xff, 0x13, 0x00, 0xf3, 0xff, 0x11, 0x00, 0xf4, 0xff, 0x10, 0x00, 0xf6, 0xff, 0x10, 0x00, 0xf8, 0xff, 0x10, 0x00, 0xfa, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x10, 0x00, 0x06, 0x00, 0x11, 0x00, 0x06, 0x00, 0x12, 0x00, 0x05, 0x00, 0x14, 0x00, 0x05, 0x00, 0x16, 0x00, 0x03, 0x00, 0x19, 0x00, 0x01, 0x00, 0x1b, 0x00, 0xff, 0xff, 0x1c, 0x00, 0xfc, 0xff, 0x1d, 0x00, 0xfa, 0xff, 0x1d, 0x00, 0xf9, 0xff, 0x1c, 0x00, 0xf8, 0xff, 0x1c, 0x00, 0xf7, 0xff, 0x1c, 0x00, 0xf6, 0xff, 0x1c, 0x00, 0xf5, 0xff, 0x1c, 0x00, 0xf3, 0xff, 0x1c, 0x00, 0xf0, 0xff, 0x1c, 0x00, 0xee, 0xff, 0x1a, 0x00, 0xeb, 0xff, 0x18, 0x00, 0xea, 0xff, 0x15, 0x00, 0xe8, 0xff, 0x13, 0x00, 0xe7, 0xff, 0x11, 0x00, 0xe7, 0xff, 0x10, 0x00, 0xe7, 0xff, 0x0f, 0x00, 0xe6, 0xff, 0x0d, 0x00, 0xe5, 0xff, 0x0b, 0x00, 0xe4, 0xff, 0x09, 0x00, 0xe4, 0xff, 0x07, 0x00, 0xe4, 0xff, 0x05, 0x00, 0xe5, 0xff, 0x04, 0x00, 0xe7, 0xff, 0x02, 0x00, 0xe9, 0xff, 0xff, 0xff, 0xeb, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xfb, 0xff, 0xef, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xf9, 0xff, 0xf2, 0xff, 0xf9, 0xff, 0xf3, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xfb, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xfe, 0xff, 0xf1, 0xff, 0x00, 0x00, 0xf1, 0xff, 0x02, 0x00, 0xf1, 0xff, 0x04, 0x00, 0xf1, 0xff, 0x06, 0x00, 0xf1, 0xff, 0x07, 0x00, 0xf1, 0xff, 0x08, 0x00, 0xf1, 0xff, 0x09, 0x00, 0xf1, 0xff, 0x0a, 0x00, 0xf2, 0xff, 0x0c, 0x00, 0xf4, 0xff, 0x0e, 0x00, 0xf5, 0xff, 0x10, 0x00, 0xf7, 0xff, 0x11, 0x00, 0xf8, 0xff, 0x12, 0x00, 0xf9, 0xff, 0x13, 0x00, 0xfa, 0xff, 0x14, 0x00, 0xfc, 0xff, 0x15, 0x00, 0xff, 0xff, 0x16, 0x00, 0x01, 0x00, 0x16, 0x00, 0x03, 0x00, 0x16, 0x00, 0x05, 0x00, 0x16, 0x00, 0x06, 0x00, 0x16, 0x00, 0x07, 0x00, 0x16, 0x00, 0x09, 0x00, 0x15, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x13, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x15, 0x00, 0x0a, 0x00, 0x17, 0x00, 0x08, 0x00, 0x19, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x06, 0x00, 0x1d, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x1f, 0x00, 0x01, 0x00, 0x20, 0x00, 0xff, 0xff, 0x21, 0x00, 0xfd, 0xff, 0x23, 0x00, 0xfc, 0xff, 0x25, 0x00, 0xfb, 0xff, 0x26, 0x00, 0xfb, 0xff, 0x27, 0x00, 0xfa, 0xff, 0x26, 0x00, 0xfa, 0xff, 0x25, 0x00, 0xf9, 0xff, 0x24, 0x00, 0xf7, 0xff, 0x22, 0x00, 0xf6, 0xff, 0x22, 0x00, 0xf5, 0xff, 0x22, 0x00, 0xf4, 0xff, 0x21, 0x00, 0xf3, 0xff, 0x20, 0x00, 0xf2, 0xff, 0x1e, 0x00, 0xf1, 0xff, 0x1a, 0x00, 0xef, 0xff, 0x17, 0x00, 0xed, 0xff, 0x13, 0x00, 0xec, 0xff, 0x0f, 0x00, 0xea, 0xff, 0x0c, 0x00, 0xea, 0xff, 0x09, 0x00, 0xea, 0xff, 0x07, 0x00, 0xe9, 0xff, 0x04, 0x00, 0xe9, 0xff, 0x01, 0x00, 0xe9, 0xff, 0xfe, 0xff, 0xe9, 0xff, 0xfb, 0xff, 0xe8, 0xff, 0xf7, 0xff, 0xe8, 0xff, 0xf4, 0xff, 0xe9, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe9, 0xff, 0xee, 0xff, 0xe7, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xe5, 0xff, 0xf4, 0xff, 0xe4, 0xff, 0xf5, 0xff, 0xe4, 0xff, 0xf7, 0xff, 0xe4, 0xff, 0xf9, 0xff, 0xe3, 0xff, 0xfc, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x03, 0x00, 0xde, 0xff, 0x06, 0x00, 0xdf, 0xff, 0x09, 0x00, 0xe0, 0xff, 0x0b, 0x00, 0xe1, 0xff, 0x0d, 0x00, 0xe2, 0xff, 0x0f, 0x00, 0xe3, 0xff, 0x11, 0x00, 0xe2, 0xff, 0x13, 0x00, 0xe0, 0xff, 0x15, 0x00, 0xdf, 0xff, 0x18, 0x00, 0xdf, 0xff, 0x1a, 0x00, 0xdf, 0xff, 0x1b, 0x00, 0xe1, 0xff, 0x1c, 0x00, 0xe3, 0xff, 0x1d, 0x00, 0xe5, 0xff, 0x1d, 0x00, 0xe6, 0xff, 0x1d, 0x00, 0xe7, 0xff, 0x1c, 0x00, 0xe7, 0xff, 0x1c, 0x00, 0xe7, 0xff, 0x1c, 0x00, 0xe8, 0xff, 0x1c, 0x00, 0xe9, 0xff, 0x1c, 0x00, 0xeb, 0xff, 0x1b, 0x00, 0xed, 0xff, 0x1a, 0x00, 0xf0, 0xff, 0x18, 0x00, 0xf4, 0xff, 0x16, 0x00, 0xf7, 0xff, 0x14, 0x00, 0xfb, 0xff, 0x13, 0x00, 0xfd, 0xff, 0x12, 0x00, 0xff, 0xff, 0x12, 0x00, 0x01, 0x00, 0x12, 0x00, 0x02, 0x00, 0x12, 0x00, 0x04, 0x00, 0x11, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x09, 0x00, 0x13, 0x00, 0x09, 0x00, 0x13, 0x00, 0x08, 0x00, 0x12, 0x00, 0x07, 0x00, 0x11, 0x00, 0x05, 0x00, 0x11, 0x00, 0x02, 0x00, 0x12, 0x00, 0xff, 0xff, 0x13, 0x00, 0xfd, 0xff, 0x13, 0x00, 0xfa, 0xff, 0x12, 0x00, 0xf9, 0xff, 0x11, 0x00, 0xf7, 0xff, 0x10, 0x00, 0xf5, 0xff, 0x0f, 0x00, 0xf3, 0xff, 0x0e, 0x00, 0xf1, 0xff, 0x0d, 0x00, 0xef, 0xff, 0x0d, 0x00, 0xed, 0xff, 0x0d, 0x00, 0xeb, 0xff, 0x0d, 0x00, 0xe8, 0xff, 0x0c, 0x00, 0xe6, 0xff, 0x0c, 0x00, 0xe4, 0xff, 0x0b, 0x00, 0xe2, 0xff, 0x0b, 0x00, 0xe1, 0xff, 0x0b, 0x00, 0xe1, 0xff, 0x0b, 0x00, 0xe1, 0xff, 0x0a, 0x00, 0xe2, 0xff, 0x0a, 0x00, 0xe3, 0xff, 0x09, 0x00, 0xe4, 0xff, 0x07, 0x00, 0xe4, 0xff, 0x06, 0x00, 0xe4, 0xff, 0x05, 0x00, 0xe4, 0xff, 0x04, 0x00, 0xe4, 0xff, 0x03, 0x00, 0xe6, 0xff, 0x01, 0x00, 0xe8, 0xff, 0xfe, 0xff, 0xeb, 0xff, 0xfb, 0xff, 0xed, 0xff, 0xf8, 0xff, 0xef, 0xff, 0xf6, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xf8, 0xff, 0xee, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xfc, 0xff, 0xed, 0xff, 0xfd, 0xff, 0xec, 0xff, 0xfe, 0xff, 0xeb, 0xff, 0xff, 0xff, 0xea, 0xff, 0x01, 0x00, 0xea, 0xff, 0x03, 0x00, 0xe9, 0xff, 0x06, 0x00, 0xe8, 0xff, 0x09, 0x00, 0xe8, 0xff, 0x0b, 0x00, 0xe7, 0xff, 0x0c, 0x00, 0xe7, 0xff, 0x0c, 0x00, 0xe8, 0xff, 0x0c, 0x00, 0xea, 0xff, 0x0d, 0x00, 0xeb, 0xff, 0x0d, 0x00, 0xed, 0xff, 0x0f, 0x00, 0xee, 0xff, 0x11, 0x00, 0xef, 0xff, 0x12, 0x00, 0xef, 0xff, 0x13, 0x00, 0xef, 0xff, 0x12, 0x00, 0xf0, 0xff, 0x11, 0x00, 0xf1, 0xff, 0x10, 0x00, 0xf3, 0xff, 0x10, 0x00, 0xf6, 0xff, 0x10, 0x00, 0xf9, 0xff, 0x11, 0x00, 0xfc, 0xff, 0x11, 0x00, 0xfe, 0xff, 0x11, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x10, 0x00, 0x06, 0x00, 0x11, 0x00, 0x03, 0x00, 0x12, 0x00, 0x01, 0x00, 0x13, 0x00, 0xfe, 0xff, 0x14, 0x00, 0xfc, 0xff, 0x15, 0x00, 0xf9, 0xff, 0x17, 0x00, 0xf7, 0xff, 0x18, 0x00, 0xf4, 0xff, 0x19, 0x00, 0xf0, 0xff, 0x19, 0x00, 0xed, 0xff, 0x19, 0x00, 0xeb, 0xff, 0x18, 0x00, 0xe9, 0xff, 0x18, 0x00, 0xe7, 0xff, 0x19, 0x00, 0xe6, 0xff, 0x1a, 0x00, 0xe4, 0xff, 0x1a, 0x00, 0xe2, 0xff, 0x1b, 0x00, 0xe0, 0xff, 0x1a, 0x00, 0xde, 0xff, 0x18, 0x00, 0xdd, 0xff, 0x15, 0x00, 0xdd, 0xff, 0x13, 0x00, 0xdd, 0xff, 0x11, 0x00, 0xde, 0xff, 0x10, 0x00, 0xdf, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0x0e, 0x00, 0xe1, 0xff, 0x0c, 0x00, 0xe2, 0xff, 0x0a, 0x00, 0xe3, 0xff, 0x08, 0x00, 0xe5, 0xff, 0x05, 0x00, 0xe8, 0xff, 0x03, 0x00, 0xeb, 0xff, 0x02, 0x00, 0xee, 0xff, 0x01, 0x00, 0xf1, 0xff, 0x00, 0x00, 0xf4, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x0b, 0x00, 0xf8, 0xff, 0x0e, 0x00, 0xf8, 0xff, 0x11, 0x00, 0xf7, 0xff, 0x13, 0x00, 0xf7, 0xff, 0x15, 0x00, 0xf6, 0xff, 0x16, 0x00, 0xf5, 0xff, 0x18, 0x00, 0xf5, 0xff, 0x1a, 0x00, 0xf4, 0xff, 0x1d, 0x00, 0xf4, 0xff, 0x1f, 0x00, 0xf4, 0xff, 0x22, 0x00, 0xf4, 0xff, 0x25, 0x00, 0xf4, 0xff, 0x28, 0x00, 0xf3, 0xff, 0x29, 0x00, 0xf2, 0xff, 0x2a, 0x00, 0xf1, 0xff, 0x2b, 0x00, 0xf0, 0xff, 0x2b, 0x00, 0xf0, 0xff, 0x2b, 0x00, 0xf0, 0xff, 0x2c, 0x00, 0xf2, 0xff, 0x2d, 0x00, 0xf4, 0xff, 0x2d, 0x00, 0xf6, 0xff, 0x2d, 0x00, 0xf6, 0xff, 0x2c, 0x00, 0xf7, 0xff, 0x2a, 0x00, 0xf6, 0xff, 0x27, 0x00, 0xf6, 0xff, 0x24, 0x00, 0xf6, 0xff, 0x21, 0x00, 0xf7, 0xff, 0x1e, 0x00, 0xf9, 0xff, 0x1b, 0x00, 0xfb, 0xff, 0x18, 0x00, 0xfe, 0xff, 0x15, 0x00, 0xff, 0xff, 0x12, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x08, 0x00, 0xf4, 0xff, 0x09, 0x00, 0xf2, 0xff, 0x09, 0x00, 0xf1, 0xff, 0x09, 0x00, 0xef, 0xff, 0x08, 0x00, 0xed, 0xff, 0x07, 0x00, 0xea, 0xff, 0x07, 0x00, 0xe8, 0xff, 0x07, 0x00, 0xe6, 0xff, 0x08, 0x00, 0xe5, 0xff, 0x08, 0x00, 0xe4, 0xff, 0x08, 0x00, 0xe4, 0xff, 0x07, 0x00, 0xe3, 0xff, 0x06, 0x00, 0xe2, 0xff, 0x04, 0x00, 0xe2, 0xff, 0x02, 0x00, 0xe1, 0xff, 0x01, 0x00, 0xe0, 0xff, 0x01, 0x00, 0xe0, 0xff, 0x01, 0x00, 0xe1, 0xff, 0x02, 0x00, 0xe2, 0xff, 0x03, 0x00, 0xe4, 0xff, 0x02, 0x00, 0xe5, 0xff, 0x02, 0x00, 0xe6, 0xff, 0x01, 0x00, 0xe6, 0xff, 0x00, 0x00, 0xe8, 0xff, 0x00, 0x00, 0xe9, 0xff, 0x01, 0x00, 0xeb, 0xff, 0x02, 0x00, 0xed, 0xff, 0x04, 0x00, 0xf0, 0xff, 0x04, 0x00, 0xf2, 0xff, 0x03, 0x00, 0xf4, 0xff, 0x02, 0x00, 0xf7, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xfe, 0xff, 0x0d, 0x00, 0xfc, 0xff, 0x10, 0x00, 0xfa, 0xff, 0x13, 0x00, 0xf9, 0xff, 0x16, 0x00, 0xf9, 0xff, 0x19, 0x00, 0xfb, 0xff, 0x1b, 0x00, 0xfd, 0xff, 0x1c, 0x00, 0xff, 0xff, 0x1d, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xff, 0xff, 0x1d, 0x00, 0xff, 0xff, 0x1d, 0x00, 0xfe, 0xff, 0x1e, 0x00, 0xff, 0xff, 0x1f, 0x00, 0xff, 0xff, 0x20, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x01, 0x00, 0x1d, 0x00, 0x02, 0x00, 0x1b, 0x00, 0x02, 0x00, 0x18, 0x00, 0x02, 0x00, 0x15, 0x00, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x11, 0x00, 0x02, 0x00, 0x0f, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x05, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfa, 0xff, 0x09, 0x00, 0xf8, 0xff, 0x0a, 0x00, 0xf7, 0xff, 0x0c, 0x00, 0xf5, 0xff, 0x0d, 0x00, 0xf2, 0xff, 0x0d, 0x00, 0xef, 0xff, 0x0c, 0x00, 0xec, 0xff, 0x0b, 0x00, 0xe9, 0xff, 0x0b, 0x00, 0xe7, 0xff, 0x0b, 0x00, 0xe6, 0xff, 0x0c, 0x00, 0xe5, 0xff, 0x0d, 0x00, 0xe3, 0xff, 0x0e, 0x00, 0xe1, 0xff, 0x0f, 0x00, 0xdf, 0xff, 0x0f, 0x00, 0xde, 0xff, 0x0f, 0x00, 0xdc, 0xff, 0x0e, 0x00, 0xdb, 0xff, 0x0d, 0x00, 0xda, 0xff, 0x0c, 0x00, 0xda, 0xff, 0x0a, 0x00, 0xda, 0xff, 0x0a, 0x00, 0xda, 0xff, 0x0a, 0x00, 0xda, 0xff, 0x0a, 0x00, 0xdb, 0xff, 0x09, 0x00, 0xdc, 0xff, 0x08, 0x00, 0xde, 0xff, 0x06, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xe2, 0xff, 0x01, 0x00, 0xe3, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xfe, 0xff, 0xe4, 0xff, 0xfe, 0xff, 0xe5, 0xff, 0xfe, 0xff, 0xe8, 0xff, 0xfe, 0xff, 0xeb, 0xff, 0xfd, 0xff, 0xee, 0xff, 0xfb, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xfb, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x07, 0x00, 0xf6, 0xff, 0x0a, 0x00, 0xf4, 0xff, 0x0d, 0x00, 0xf3, 0xff, 0x10, 0x00, 0xf2, 0xff, 0x12, 0x00, 0xf3, 0xff, 0x14, 0x00, 0xf4, 0xff, 0x16, 0x00, 0xf6, 0xff, 0x17, 0x00, 0xf7, 0xff, 0x18, 0x00, 0xf7, 0xff, 0x19, 0x00, 0xf6, 0xff, 0x1a, 0x00, 0xf4, 0xff, 0x1a, 0x00, 0xf2, 0xff, 0x1b, 0x00, 0xf1, 0xff, 0x1c, 0x00, 0xf0, 0xff, 0x1c, 0x00, 0xf1, 0xff, 0x1c, 0x00, 0xf2, 0xff, 0x1d, 0x00, 0xf3, 0xff, 0x1d, 0x00, 0xf4, 0xff, 0x1d, 0x00, 0xf3, 0xff, 0x1d, 0x00, 0xf2, 0xff, 0x1d, 0x00, 0xf1, 0xff, 0x1d, 0x00, 0xf0, 0xff, 0x1d, 0x00, 0xef, 0xff, 0x1d, 0x00, 0xf0, 0xff, 0x1c, 0x00, 0xf2, 0xff, 0x1a, 0x00, 0xf5, 0xff, 0x17, 0x00, 0xf7, 0xff, 0x14, 0x00, 0xf8, 0xff, 0x11, 0x00, 0xf8, 0xff, 0x0e, 0x00, 0xf7, 0xff, 0x0c, 0x00, 0xf6, 0xff, 0x09, 0x00, 0xf5, 0xff, 0x07, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf7, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xfb, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xf9, 0xff, 0xf0, 0xff, 0xf9, 0xff, 0xf0, 0xff, 0xf9, 0xff, 0xef, 0xff, 0xfb, 0xff, 0xee, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xfe, 0xff, 0xeb, 0xff, 0xfe, 0xff, 0xea, 0xff, 0xfe, 0xff, 0xea, 0xff, 0xfe, 0xff, 0xea, 0xff, 0xfd, 0xff, 0xeb, 0xff, 0xfe, 0xff, 0xed, 0xff, 0x00, 0x00, 0xee, 0xff, 0x01, 0x00, 0xef, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x04, 0x00, 0xf0, 0xff, 0x05, 0x00, 0xf1, 0xff, 0x04, 0x00, 0xf3, 0xff, 0x04, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0x03, 0x00, 0x07, 0x00, 0x05, 0x00, 0x08, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x10, 0x00, 0x05, 0x00, 0x13, 0x00, 0x05, 0x00, 0x15, 0x00, 0x04, 0x00, 0x17, 0x00, 0x04, 0x00, 0x18, 0x00, 0x04, 0x00, 0x18, 0x00, 0x04, 0x00, 0x18, 0x00, 0x04, 0x00, 0x18, 0x00, 0x04, 0x00, 0x18, 0x00, 0x03, 0x00, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x18, 0x00, 0x02, 0x00, 0x18, 0x00, 0x02, 0x00, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 0x00, 0xff, 0xff, 0x19, 0x00, 0xfe, 0xff, 0x19, 0x00, 0xfd, 0xff, 0x18, 0x00, 0xfd, 0xff, 0x17, 0x00, 0xfd, 0xff, 0x15, 0x00, 0xfd, 0xff, 0x13, 0x00, 0xfb, 0xff, 0x11, 0x00, 0xf9, 0xff, 0x10, 0x00, 0xf7, 0xff, 0x0e, 0x00, 0xf5, 0xff, 0x0d, 0x00, 0xf4, 0xff, 0x0b, 0x00, 0xf4, 0xff, 0x09, 0x00, 0xf4, 0xff, 0x07, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf4, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xf5, 0xff, 0xeb, 0xff, 0xf7, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xe6, 0xff, 0xfa, 0xff, 0xe4, 0xff, 0xfc, 0xff, 0xe3, 0xff, 0xfe, 0xff, 0xe2, 0xff, 0x00, 0x00, 0xe1, 0xff, 0x02, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xdf, 0xff, 0x04, 0x00, 0xde, 0xff, 0x06, 0x00, 0xdd, 0xff, 0x07, 0x00, 0xdc, 0xff, 0x09, 0x00, 0xdc, 0xff, 0x0b, 0x00, 0xdc, 0xff, 0x0d, 0x00, 0xdc, 0xff, 0x0e, 0x00, 0xdd, 0xff, 0x0f, 0x00, 0xde, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0x0e, 0x00, 0xe1, 0xff, 0x0e, 0x00, 0xe3, 0xff, 0x0e, 0x00, 0xe5, 0xff, 0x0e, 0x00, 0xe6, 0xff, 0x0e, 0x00, 0xe7, 0xff, 0x0d, 0x00, 0xe8, 0xff, 0x0c, 0x00, 0xea, 0xff, 0x0c, 0x00, 0xeb, 0xff, 0x0b, 0x00, 0xed, 0xff, 0x0b, 0x00, 0xef, 0xff, 0x0b, 0x00, 0xf1, 0xff, 0x0c, 0x00, 0xf2, 0xff, 0x0d, 0x00, 0xf3, 0xff, 0x0d, 0x00, 0xf4, 0xff, 0x0d, 0x00, 0xf4, 0xff, 0x0d, 0x00, 0xf5, 0xff, 0x0d, 0x00, 0xf7, 0xff, 0x0d, 0x00, 0xf8, 0xff, 0x0e, 0x00, 0xfa, 0xff, 0x10, 0x00, 0xfb, 0xff, 0x11, 0x00, 0xfc, 0xff, 0x12, 0x00, 0xfd, 0xff, 0x12, 0x00, 0xfe, 0xff, 0x11, 0x00, 0xff, 0xff, 0x10, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x10, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x11, 0x00, 0x0a, 0x00, 0x13, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x16, 0x00, 0x0a, 0x00, 0x17, 0x00, 0x09, 0x00, 0x18, 0x00, 0x08, 0x00, 0x18, 0x00, 0x06, 0x00, 0x18, 0x00, 0x04, 0x00, 0x17, 0x00, 0x02, 0x00, 0x16, 0x00, 0x01, 0x00, 0x15, 0x00, 0x00, 0x00, 0x14, 0x00, 0xff, 0xff, 0x14, 0x00, 0xfe, 0xff, 0x13, 0x00, 0xfd, 0xff, 0x13, 0x00, 0xfb, 0xff, 0x13, 0x00, 0xf9, 0xff, 0x12, 0x00, 0xf8, 0xff, 0x11, 0x00, 0xf6, 0xff, 0x0f, 0x00, 0xf5, 0xff, 0x0e, 0x00, 0xf5, 0xff, 0x0c, 0x00, 0xf4, 0xff, 0x0b, 0x00, 0xf4, 0xff, 0x0b, 0x00, 0xf4, 0xff, 0x0a, 0x00, 0xf5, 0xff, 0x09, 0x00, 0xf5, 0xff, 0x08, 0x00, 0xf6, 0xff, 0x06, 0x00, 0xf6, 0xff, 0x04, 0x00, 0xf6, 0xff, 0x02, 0x00, 0xf6, 0xff, 0x01, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf7, 0xff, 0x03, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf4, 0xff, 0x05, 0x00, 0xf3, 0xff, 0x06, 0x00, 0xf3, 0xff, 0x08, 0x00, 0xf3, 0xff, 0x0a, 0x00, 0xf3, 0xff, 0x0b, 0x00, 0xf3, 0xff, 0x0c, 0x00, 0xf4, 0xff, 0x0c, 0x00, 0xf4, 0xff, 0x0b, 0x00, 0xf5, 0xff, 0x0b, 0x00, 0xf7, 0xff, 0x0a, 0x00, 0xf9, 0xff, 0x0a, 0x00, 0xfb, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x0b, 0x00, 0xff, 0xff, 0x0c, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x0d, 0x00, 0x11, 0x00, 0x0b, 0x00, 0x11, 0x00, 0x08, 0x00, 0x11, 0x00, 0x05, 0x00, 0x11, 0x00, 0x03, 0x00, 0x10, 0x00, 0x03, 0x00, 0x10, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x10, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0xfe, 0xff, 0x10, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0xfb, 0xff, 0x0f, 0x00, 0xfb, 0xff, 0x0f, 0x00, 0xfb, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0xfd, 0xff, 0x0d, 0x00, 0xfb, 0xff, 0x0c, 0x00, 0xf9, 0xff, 0x09, 0x00, 0xf6, 0xff, 0x07, 0x00, 0xf4, 0xff, 0x06, 0x00, 0xf2, 0xff, 0x04, 0x00, 0xf0, 0xff, 0x02, 0x00, 0xef, 0xff, 0x00, 0x00, 0xef, 0xff, 0xfd, 0xff, 0xef, 0xff, 0xfb, 0xff, 0xee, 0xff, 0xf9, 0xff, 0xec, 0xff, 0xf7, 0xff, 0xeb, 0xff, 0xf6, 0xff, 0xe9, 0xff, 0xf4, 0xff, 0xe8, 0xff, 0xf4, 0xff, 0xe7, 0xff, 0xf3, 0xff, 0xe7, 0xff, 0xf2, 0xff, 0xe7, 0xff, 0xf0, 0xff, 0xe8, 0xff, 0xef, 0xff, 0xe9, 0xff, 0xee, 0xff, 0xea, 0xff, 0xee, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xec, 0xff, 0xee, 0xff, 0xec, 0xff, 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0x03, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x09, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x10, 0x00, 0x07, 0x00, 0x11, 0x00, 0x07, 0x00, 0x13, 0x00, 0x07, 0x00, 0x15, 0x00, 0x08, 0x00, 0x15, 0x00, 0x08, 0x00, 0x15, 0x00, 0x07, 0x00, 0x14, 0x00, 0x05, 0x00, 0x14, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0xfe, 0xff, 0x12, 0x00, 0xfd, 0xff, 0x11, 0x00, 0xfd, 0xff, 0x10, 0x00, 0xfe, 0xff, 0x0e, 0x00, 0xff, 0xff, 0x0d, 0x00, 0xff, 0xff, 0x0c, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0xf2, 0xff, 0xfd, 0xff, 0xf0, 0xff, 0xfd, 0xff, 0xee, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xfd, 0xff, 0xec, 0xff, 0xfe, 0xff, 0xec, 0xff, 0xff, 0xff, 0xeb, 0xff, 0xff, 0xff, 0xea, 0xff, 0x00, 0x00, 0xe9, 0xff, 0x00, 0x00, 0xe8, 0xff, 0xff, 0xff, 0xe8, 0xff, 0xff, 0xff, 0xe9, 0xff, 0xfe, 0xff, 0xeb, 0xff, 0xfe, 0xff, 0xec, 0xff, 0xfd, 0xff, 0xee, 0xff, 0xfd, 0xff, 0xee, 0xff, 0xfe, 0xff, 0xee, 0xff, 0xfe, 0xff, 0xee, 0xff, 0xfe, 0xff, 0xee, 0xff, 0xfe, 0xff, 0xee, 0xff, 0xfe, 0xff, 0xef, 0xff, 0xfe, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xf2, 0xff, 0x00, 0x00, 0xf2, 0xff, 0x01, 0x00, 0xf2, 0xff, 0x02, 0x00, 0xf2, 0xff, 0x04, 0x00, 0xf3, 0xff, 0x05, 0x00, 0xf4, 0xff, 0x06, 0x00, 0xf6, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x09, 0x00, 0xf9, 0xff, 0x0a, 0x00, 0xfa, 0xff, 0x0a, 0x00, 0xfb, 0xff, 0x0b, 0x00, 0xfc, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0d, 0x00, 0xff, 0xff, 0x0e, 0x00, 0x01, 0x00, 0x10, 0x00, 0x04, 0x00, 0x11, 0x00, 0x06, 0x00, 0x12, 0x00, 0x09, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x11, 0x00, 0x0d, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x0d, 0x00, 0x13, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x05, 0x00, 0x13, 0x00, 0x04, 0x00, 0x12, 0x00, 0x02, 0x00, 0x11, 0x00, 0x01, 0x00, 0x10, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xff, 0xff, 0x0d, 0x00, 0xfe, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xf9, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xed, 0xff, 0xed, 0xff, 0xec, 0xff, 0xee, 0xff, 0xeb, 0xff, 0xef, 0xff, 0xeb, 0xff, 0xf0, 0xff, 0xeb, 0xff, 0xf2, 0xff, 0xeb, 0xff, 0xf3, 0xff, 0xeb, 0xff, 0xf3, 0xff, 0xeb, 0xff, 0xf4, 0xff, 0xeb, 0xff, 0xf4, 0xff, 0xea, 0xff, 0xf5, 0xff, 0xe9, 0xff, 0xf7, 0xff, 0xe9, 0xff, 0xf9, 0xff, 0xe9, 0xff, 0xfb, 0xff, 0xeb, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xff, 0xff, 0xef, 0xff, 0x02, 0x00, 0xf1, 0xff, 0x04, 0x00, 0xf2, 0xff, 0x05, 0x00, 0xf3, 0xff, 0x06, 0x00, 0xf3, 0xff, 0x07, 0x00, 0xf4, 0xff, 0x08, 0x00, 0xf6, 0xff, 0x0a, 0x00, 0xf9, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0d, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x03, 0x00, 0x11, 0x00, 0x04, 0x00, 0x12, 0x00, 0x05, 0x00, 0x13, 0x00, 0x05, 0x00, 0x13, 0x00, 0x05, 0x00, 0x13, 0x00, 0x06, 0x00, 0x13, 0x00, 0x08, 0x00, 0x13, 0x00, 0x0b, 0x00, 0x13, 0x00, 0x0d, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x0d, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0b, 0x00, 0x10, 0x00, 0x09, 0x00, 0x11, 0x00, 0x08, 0x00, 0x12, 0x00, 0x06, 0x00, 0x11, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0d, 0x00, 0xfc, 0xff, 0x0b, 0x00, 0xfb, 0xff, 0x09, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf7, 0xff, 0x03, 0x00, 0xf6, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf4, 0xff, 0x01, 0x00, 0xf2, 0xff, 0x00, 0x00, 0xf1, 0xff, 0xff, 0xff, 0xef, 0xff, 0xfd, 0xff, 0xef, 0xff, 0xfc, 0xff, 0xee, 0xff, 0xfb, 0xff, 0xee, 0xff, 0xfb, 0xff, 0xee, 0xff, 0xfb, 0xff, 0xee, 0xff, 0xfc, 0xff, 0xee, 0xff, 0xfc, 0xff, 0xee, 0xff, 0xfc, 0xff, 0xee, 0xff, 0xfd, 0xff, 0xef, 0xff, 0xfd, 0xff, 0xf0, 0xff, 0xfd, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xf2, 0xff, 0x00, 0x00, 0xf2, 0xff, 0x02, 0x00, 0xf2, 0xff, 0x03, 0x00, 0xf2, 0xff, 0x03, 0x00, 0xf2, 0xff, 0x03, 0x00, 0xf2, 0xff, 0x02, 0x00, 0xf4, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf7, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0x01, 0x00, 0x07, 0x00, 0x02, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x07, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x13, 0x00, 0x09, 0x00, 0x15, 0x00, 0x0a, 0x00, 0x16, 0x00, 0x0b, 0x00, 0x16, 0x00, 0x0b, 0x00, 0x16, 0x00, 0x0b, 0x00, 0x16, 0x00, 0x0a, 0x00, 0x16, 0x00, 0x09, 0x00, 0x17, 0x00, 0x08, 0x00, 0x18, 0x00, 0x07, 0x00, 0x18, 0x00, 0x08, 0x00, 0x19, 0x00, 0x09, 0x00, 0x19, 0x00, 0x09, 0x00, 0x17, 0x00, 0x09, 0x00, 0x16, 0x00, 0x08, 0x00, 0x14, 0x00, 0x07, 0x00, 0x13, 0x00, 0x06, 0x00, 0x12, 0x00, 0x05, 0x00, 0x10, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x04, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf6, 0xff, 0xff, 0xff, 0xf4, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfb, 0xff, 0xf2, 0xff, 0xf9, 0xff, 0xf1, 0xff, 0xf6, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xef, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xf1, 0xff, 0xed, 0xff, 0xf1, 0xff, 0xec, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xef, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xec, 0xff, 0xee, 0xff, 0xec, 0xff, 0xee, 0xff, 0xec, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xea, 0xff, 0xee, 0xff, 0xe9, 0xff, 0xef, 0xff, 0xe8, 0xff, 0xf1, 0xff, 0xe8, 0xff, 0xf3, 0xff, 0xe9, 0xff, 0xf4, 0xff, 0xea, 0xff, 0xf5, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xf7, 0xff, 0xf1, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0xf3, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf7, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x09, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0xff, 0xff, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x02, 0x00, 0x17, 0x00, 0x03, 0x00, 0x18, 0x00, 0x04, 0x00, 0x19, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x06, 0x00, 0x1d, 0x00, 0x06, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x1f, 0x00, 0x07, 0x00, 0x1f, 0x00, 0x08, 0x00, 0x1f, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x0a, 0x00, 0x1d, 0x00, 0x0b, 0x00, 0x1c, 0x00, 0x0d, 0x00, 0x1b, 0x00, 0x0e, 0x00, 0x1a, 0x00, 0x0e, 0x00, 0x19, 0x00, 0x0d, 0x00, 0x18, 0x00, 0x0d, 0x00, 0x17, 0x00, 0x0c, 0x00, 0x16, 0x00, 0x0c, 0x00, 0x15, 0x00, 0x0b, 0x00, 0x14, 0x00, 0x0b, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x09, 0x00, 0x01, 0x00, 0x07, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf6, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xfd, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xf5, 0xff, 0xfb, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xf5, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x06, 0x00, 0x04, 0x00, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x11, 0x00, 0x0a, 0x00, 0x11, 0x00, 0x08, 0x00, 0x12, 0x00, 0x07, 0x00, 0x12, 0x00, 0x06, 0x00, 0x12, 0x00, 0x06, 0x00, 0x12, 0x00, 0x05, 0x00, 0x11, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xff, 0xff, 0x0b, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf7, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xfb, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf1, 0xff, 0xf8, 0xff, 0xf1, 0xff, 0xf7, 0xff, 0xf1, 0xff, 0xf7, 0xff, 0xf1, 0xff, 0xf6, 0xff, 0xf1, 0xff, 0xf5, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xf3, 0xff, 0xef, 0xff, 0xf4, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xf7, 0xff, 0xf1, 0xff, 0xf8, 0xff, 0xf1, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xfb, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xfd, 0xff, 0xf5, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x09, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x09, 0x00, 0x05, 0x00, 0x08, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf7, 0xff, 0x03, 0x00, 0xf6, 0xff, 0x05, 0x00, 0xf5, 0xff, 0x06, 0x00, 0xf3, 0xff, 0x07, 0x00, 0xf2, 0xff, 0x07, 0x00, 0xef, 0xff, 0x06, 0x00, 0xed, 0xff, 0x06, 0x00, 0xec, 0xff, 0x06, 0x00, 0xeb, 0xff, 0x06, 0x00, 0xeb, 0xff, 0x07, 0x00, 0xec, 0xff, 0x08, 0x00, 0xed, 0xff, 0x08, 0x00, 0xee, 0xff, 0x08, 0x00, 0xef, 0xff, 0x08, 0x00, 0xef, 0xff, 0x07, 0x00, 0xee, 0xff, 0x06, 0x00, 0xee, 0xff, 0x05, 0x00, 0xee, 0xff, 0x04, 0x00, 0xf0, 0xff, 0x04, 0x00, 0xf2, 0xff, 0x04, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x09, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0xfe, 0xff, 0x10, 0x00, 0xfc, 0xff, 0x11, 0x00, 0xfb, 0xff, 0x11, 0x00, 0xfb, 0xff, 0x10, 0x00, 0xfb, 0xff, 0x10, 0x00, 0xfb, 0xff, 0x10, 0x00, 0xfb, 0xff, 0x11, 0x00, 0xfa, 0xff, 0x12, 0x00, 0xf9, 0xff, 0x13, 0x00, 0xf8, 0xff, 0x14, 0x00, 0xf7, 0xff, 0x13, 0x00, 0xf7, 0xff, 0x12, 0x00, 0xf8, 0xff, 0x10, 0x00, 0xf9, 0xff, 0x0f, 0x00, 0xfa, 0xff, 0x0e, 0x00, 0xfb, 0xff, 0x0d, 0x00, 0xfb, 0xff, 0x0d, 0x00, 0xfc, 0xff, 0x0d, 0x00, 0xfc, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xfd, 0xff, 0xf2, 0xff, 0xfd, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xfa, 0xff, 0xf1, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xfb, 0xff, 0xf2, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xf6, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0x01, 0x00, 0x07, 0x00, 0x02, 0x00, 0x08, 0x00, 0x03, 0x00, 0x09, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x09, 0x00, 0x03, 0x00, 0x07, 0x00, 0x02, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x01, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf6, 0xff, 0x06, 0x00, 0xf3, 0xff, 0x07, 0x00, 0xf2, 0xff, 0x07, 0x00, 0xf2, 0xff, 0x07, 0x00, 0xf2, 0xff, 0x07, 0x00, 0xf2, 0xff, 0x07, 0x00, 0xf1, 0xff, 0x07, 0x00, 0xf0, 0xff, 0x07, 0x00, 0xef, 0xff, 0x08, 0x00, 0xef, 0xff, 0x08, 0x00, 0xee, 0xff, 0x09, 0x00, 0xef, 0xff, 0x0a, 0x00, 0xf0, 0xff, 0x0b, 0x00, 0xf2, 0xff, 0x0c, 0x00, 0xf4, 0xff, 0x0c, 0x00, 0xf6, 0xff, 0x0b, 0x00, 0xf7, 0xff, 0x0a, 0x00, 0xf9, 0xff, 0x09, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x08, 0x00, 0xf7, 0xff, 0x09, 0x00, 0xf7, 0xff, 0x0b, 0x00, 0xf6, 0xff, 0x0c, 0x00, 0xf6, 0xff, 0x0d, 0x00, 0xf6, 0xff, 0x0d, 0x00, 0xf7, 0xff, 0x0d, 0x00, 0xf7, 0xff, 0x0d, 0x00, 0xf8, 0xff, 0x0e, 0x00, 0xf9, 0xff, 0x0e, 0x00, 0xfa, 0xff, 0x0f, 0x00, 0xfb, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0xfd, 0xff, 0x10, 0x00, 0xfd, 0xff, 0x10, 0x00, 0xfd, 0xff, 0x11, 0x00, 0xfd, 0xff, 0x11, 0x00, 0xfd, 0xff, 0x11, 0x00, 0xfd, 0xff, 0x11, 0x00, 0xfe, 0xff, 0x11, 0x00, 0xfe, 0xff, 0x10, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfd, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0e, 0x00, 0xfe, 0xff, 0x0d, 0x00, 0xff, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x09, 0x00, 0x04, 0x00, 0x08, 0x00, 0x05, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, 0x09, 0x00, 0x05, 0x00, 0x09, 0x00, 0x04, 0x00, 0x09, 0x00, 0x02, 0x00, 0x09, 0x00, 0x01, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0xff, 0xff, 0x0a, 0x00, 0xff, 0xff, 0x0a, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfa, 0xff, 0x09, 0x00, 0xf9, 0xff, 0x08, 0x00, 0xf7, 0xff, 0x08, 0x00, 0xf7, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfa, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf7, 0xff, 0x03, 0x00, 0xf6, 0xff, 0x04, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf5, 0xff, 0x05, 0x00, 0xf4, 0xff, 0x05, 0x00, 0xf4, 0xff, 0x05, 0x00, 0xf3, 0xff, 0x06, 0x00, 0xf1, 0xff, 0x06, 0x00, 0xf0, 0xff, 0x06, 0x00, 0xef, 0xff, 0x06, 0x00, 0xee, 0xff, 0x06, 0x00, 0xed, 0xff, 0x05, 0x00, 0xed, 0xff, 0x04, 0x00, 0xed, 0xff, 0x04, 0x00, 0xec, 0xff, 0x03, 0x00, 0xeb, 0xff, 0x03, 0x00, 0xea, 0xff, 0x03, 0x00, 0xe9, 0xff, 0x03, 0x00, 0xe8, 0xff, 0x02, 0x00, 0xe8, 0xff, 0x02, 0x00, 0xe8, 0xff, 0x00, 0x00, 0xe9, 0xff, 0xff, 0xff, 0xeb, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xfc, 0xff, 0xef, 0xff, 0xfb, 0xff, 0xf0, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0xf3, 0xff, 0xfa, 0xff, 0xf5, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xfb, 0xff, 0xf5, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xf1, 0xff, 0x01, 0x00, 0xf0, 0xff, 0x02, 0x00, 0xf0, 0xff, 0x04, 0x00, 0xef, 0xff, 0x05, 0x00, 0xef, 0xff, 0x05, 0x00, 0xf0, 0xff, 0x05, 0x00, 0xef, 0xff, 0x06, 0x00, 0xef, 0xff, 0x06, 0x00, 0xed, 0xff, 0x08, 0x00, 0xec, 0xff, 0x09, 0x00, 0xea, 0xff, 0x0b, 0x00, 0xea, 0xff, 0x0c, 0x00, 0xe9, 0xff, 0x0d, 0x00, 0xe9, 0xff, 0x0d, 0x00, 0xe9, 0xff, 0x0d, 0x00, 0xe9, 0xff, 0x0c, 0x00, 0xe9, 0xff, 0x0c, 0x00, 0xe9, 0xff, 0x0d, 0x00, 0xe9, 0xff, 0x0e, 0x00, 0xe9, 0xff, 0x0f, 0x00, 0xe9, 0xff, 0x10, 0x00, 0xe9, 0xff, 0x11, 0x00, 0xe9, 0xff, 0x10, 0x00, 0xea, 0xff, 0x10, 0x00, 0xeb, 0xff, 0x0f, 0x00, 0xec, 0xff, 0x0f, 0x00, 0xed, 0xff, 0x0f, 0x00, 0xee, 0xff, 0x10, 0x00, 0xf0, 0xff, 0x10, 0x00, 0xf1, 0xff, 0x10, 0x00, 0xf1, 0xff, 0x10, 0x00, 0xf2, 0xff, 0x10, 0x00, 0xf3, 0xff, 0x10, 0x00, 0xf4, 0xff, 0x10, 0x00, 0xf6, 0xff, 0x0f, 0x00, 0xf8, 0xff, 0x0f, 0x00, 0xfb, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0d, 0x00, 0xff, 0xff, 0x0d, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x09, 0x00, 0x09, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x02, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xff, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0x11, 0x00, 0xfc, 0xff, 0x12, 0x00, 0xfb, 0xff, 0x13, 0x00, 0xfa, 0xff, 0x12, 0x00, 0xfa, 0xff, 0x11, 0x00, 0xfa, 0xff, 0x10, 0x00, 0xfa, 0xff, 0x0f, 0x00, 0xfb, 0xff, 0x0e, 0x00, 0xfb, 0xff, 0x0f, 0x00, 0xfb, 0xff, 0x10, 0x00, 0xfb, 0xff, 0x12, 0x00, 0xfa, 0xff, 0x13, 0x00, 0xf9, 0xff, 0x12, 0x00, 0xf8, 0xff, 0x10, 0x00, 0xf8, 0xff, 0x0e, 0x00, 0xf8, 0xff, 0x0c, 0x00, 0xfa, 0xff, 0x0b, 0x00, 0xfb, 0xff, 0x0b, 0x00, 0xfc, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf6, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf4, 0xff, 0x03, 0x00, 0xf4, 0xff, 0x04, 0x00, 0xf3, 0xff, 0x04, 0x00, 0xf2, 0xff, 0x04, 0x00, 0xf1, 0xff, 0x04, 0x00, 0xf0, 0xff, 0x04, 0x00, 0xf0, 0xff, 0x05, 0x00, 0xef, 0xff, 0x06, 0x00, 0xef, 0xff, 0x07, 0x00, 0xf0, 0xff, 0x07, 0x00, 0xf0, 0xff, 0x07, 0x00, 0xf1, 0xff, 0x06, 0x00, 0xf2, 0xff, 0x05, 0x00, 0xf2, 0xff, 0x03, 0x00, 0xf3, 0xff, 0x02, 0x00, 0xf3, 0xff, 0x01, 0x00, 0xf4, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0xff, 0xff, 0x0a, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x09, 0x00, 0x06, 0x00, 0x09, 0x00, 0x06, 0x00, 0x09, 0x00, 0x06, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x02, 0x00, 0x10, 0x00, 0x01, 0x00, 0x11, 0x00, 0x01, 0x00, 0x12, 0x00, 0x02, 0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x02, 0x00, 0x16, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0xff, 0xff, 0x12, 0x00, 0xfe, 0xff, 0x11, 0x00, 0xfe, 0xff, 0x10, 0x00, 0xfe, 0xff, 0x10, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0x0d, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xf5, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf4, 0xff, 0x00, 0x00, 0xf4, 0xff, 0x00, 0x00, 0xf4, 0xff, 0xff, 0xff, 0xf4, 0xff, 0xff, 0xff, 0xf4, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf6, 0xff, 0x02, 0x00, 0xf7, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf7, 0xff, 0x04, 0x00, 0xf7, 0xff, 0x05, 0x00, 0xf6, 0xff, 0x05, 0x00, 0xf7, 0xff, 0x05, 0x00, 0xf7, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x07, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xfd, 0xff, 0xf4, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xfb, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xfa, 0xff, 0xed, 0xff, 0xfa, 0xff, 0xed, 0xff, 0xfb, 0xff, 0xed, 0xff, 0xfb, 0xff, 0xee, 0xff, 0xfb, 0xff, 0xef, 0xff, 0xfc, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xfd, 0xff, 0xf1, 0xff, 0xfd, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x10, 0x00, 0x05, 0x00, 0x11, 0x00, 0x04, 0x00, 0x12, 0x00, 0x03, 0x00, 0x12, 0x00, 0x02, 0x00, 0x11, 0x00, 0x01, 0x00, 0x11, 0x00, 0x02, 0x00, 0x11, 0x00, 0x03, 0x00, 0x11, 0x00, 0x04, 0x00, 0x11, 0x00, 0x05, 0x00, 0x10, 0x00, 0x06, 0x00, 0x10, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x10, 0x00, 0x06, 0x00, 0x10, 0x00, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, 0x10, 0x00, 0x05, 0x00, 0x11, 0x00, 0x04, 0x00, 0x11, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x09, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfb, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xf7, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xf7, 0xff, 0xf2, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xf8, 0xff, 0xf3, 0xff, 0xf9, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xff, 0xff, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x10, 0x00, 0x06, 0x00, 0x10, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x10, 0x00, 0x04, 0x00, 0x10, 0x00, 0x02, 0x00, 0x10, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xff, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x0b, 0x00, 0xfb, 0xff, 0x0a, 0x00, 0xf9, 0xff, 0x0a, 0x00, 0xf8, 0xff, 0x08, 0x00, 0xf7, 0xff, 0x06, 0x00, 0xf7, 0xff, 0x03, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf3, 0xff, 0xf8, 0xff, 0xf1, 0xff, 0xf7, 0xff, 0xf0, 0xff, 0xf7, 0xff, 0xed, 0xff, 0xf7, 0xff, 0xeb, 0xff, 0xf8, 0xff, 0xe9, 0xff, 0xf9, 0xff, 0xe8, 0xff, 0xfa, 0xff, 0xe7, 0xff, 0xfb, 0xff, 0xe7, 0xff, 0xfb, 0xff, 0xe7, 0xff, 0xfa, 0xff, 0xe7, 0xff, 0xf9, 0xff, 0xe7, 0xff, 0xf9, 0xff, 0xe8, 0xff, 0xf9, 0xff, 0xe8, 0xff, 0xf9, 0xff, 0xe8, 0xff, 0xfa, 0xff, 0xe9, 0xff, 0xfb, 0xff, 0xea, 0xff, 0xfd, 0xff, 0xeb, 0xff, 0xfe, 0xff, 0xec, 0xff, 0xfe, 0xff, 0xed, 0xff, 0xfe, 0xff, 0xee, 0xff, 0xfd, 0xff, 0xef, 0xff, 0xfd, 0xff, 0xef, 0xff, 0xfd, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xf2, 0xff, 0x01, 0x00, 0xf4, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf7, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x08, 0x00, 0xf9, 0xff, 0x0a, 0x00, 0xfa, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x11, 0x00, 0x09, 0x00, 0x11, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x13, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x09, 0x00, 0x15, 0x00, 0x09, 0x00, 0x16, 0x00, 0x08, 0x00, 0x17, 0x00, 0x07, 0x00, 0x16, 0x00, 0x06, 0x00, 0x15, 0x00, 0x06, 0x00, 0x14, 0x00, 0x06, 0x00, 0x12, 0x00, 0x06, 0x00, 0x10, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x08, 0x00, 0x01, 0x00, 0x09, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x09, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x0d, 0x00, 0xff, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0xfb, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x0e, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf9, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf5, 0xff, 0xfb, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xf3, 0xff, 0xf8, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf1, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xec, 0xff, 0xf5, 0xff, 0xeb, 0xff, 0xf5, 0xff, 0xea, 0xff, 0xf4, 0xff, 0xea, 0xff, 0xf2, 0xff, 0xea, 0xff, 0xf1, 0xff, 0xeb, 0xff, 0xf1, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xf3, 0xff, 0xeb, 0xff, 0xf5, 0xff, 0xeb, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xf7, 0xff, 0xea, 0xff, 0xf7, 0xff, 0xeb, 0xff, 0xf7, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xed, 0xff, 0xf6, 0xff, 0xef, 0xff, 0xf7, 0xff, 0xf1, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xf9, 0xff, 0xf3, 0xff, 0xfb, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x06, 0x00, 0x04, 0x00, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x14, 0x00, 0x08, 0x00, 0x18, 0x00, 0x09, 0x00, 0x1a, 0x00, 0x0a, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x0d, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x1d, 0x00, 0x0e, 0x00, 0x1e, 0x00, 0x0d, 0x00, 0x20, 0x00, 0x0c, 0x00, 0x21, 0x00, 0x0b, 0x00, 0x21, 0x00, 0x0b, 0x00, 0x21, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x0c, 0x00, 0x1d, 0x00, 0x0d, 0x00, 0x1b, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x0f, 0x00, 0x16, 0x00, 0x0e, 0x00, 0x15, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x0b, 0x00, 0x11, 0x00, 0x0a, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, 0x07, 0x00, 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf4, 0xff, 0x00, 0x00, 0xf2, 0xff, 0xff, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0xf2, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfb, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf3, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf1, 0xff, 0xf8, 0xff, 0xef, 0xff, 0xf8, 0xff, 0xed, 0xff, 0xf9, 0xff, 0xed, 0xff, 0xf9, 0xff, 0xed, 0xff, 0xf8, 0xff, 0xee, 0xff, 0xf7, 0xff, 0xef, 0xff, 0xf7, 0xff, 0xf1, 0xff, 0xf7, 0xff, 0xf2, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x0d, 0x00, 0xfb, 0xff, 0x0e, 0x00, 0xfa, 0xff, 0x0e, 0x00, 0xfa, 0xff, 0x0d, 0x00, 0xfb, 0xff, 0x0c, 0x00, 0xfb, 0xff, 0x0b, 0x00, 0xfb, 0xff, 0x0a, 0x00, 0xfb, 0xff, 0x0a, 0x00, 0xfb, 0xff, 0x0a, 0x00, 0xfa, 0xff, 0x0a, 0x00, 0xfa, 0xff, 0x09, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf3, 0xff, 0xfe, 0xff, 0xf1, 0xff, 0xfe, 0xff, 0xef, 0xff, 0xfe, 0xff, 0xee, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xee, 0xff, 0x00, 0x00, 0xee, 0xff, 0x00, 0x00, 0xed, 0xff, 0x00, 0x00, 0xec, 0xff, 0x00, 0x00, 0xea, 0xff, 0x00, 0x00, 0xe8, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xe7, 0xff, 0x00, 0x00, 0xe8, 0xff, 0x00, 0x00, 0xe9, 0xff, 0x01, 0x00, 0xe9, 0xff, 0x01, 0x00, 0xea, 0xff, 0x01, 0x00, 0xe9, 0xff, 0x00, 0x00, 0xe8, 0xff, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xe8, 0xff, 0xff, 0xff, 0xea, 0xff, 0xff, 0xff, 0xec, 0xff, 0xff, 0xff, 0xee, 0xff, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xf2, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x10, 0x00, 0x03, 0x00, 0x10, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x10, 0x00, 0x05, 0x00, 0x10, 0x00, 0x05, 0x00, 0x11, 0x00, 0x06, 0x00, 0x12, 0x00, 0x06, 0x00, 0x12, 0x00, 0x06, 0x00, 0x11, 0x00, 0x06, 0x00, 0x10, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x09, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfb, 0xff, 0x0a, 0x00, 0xfa, 0xff, 0x0a, 0x00, 0xf9, 0xff, 0x0b, 0x00, 0xf8, 0xff, 0x0b, 0x00, 0xf8, 0xff, 0x0c, 0x00, 0xf8, 0xff, 0x0d, 0x00, 0xf9, 0xff, 0x0e, 0x00, 0xfa, 0xff, 0x0e, 0x00, 0xfb, 0xff, 0x0d, 0x00, 0xfc, 0xff, 0x0d, 0x00, 0xfc, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x0d, 0x00, 0xfd, 0xff, 0x0e, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xff, 0xff, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x10, 0x00, 0x02, 0x00, 0x0f, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x10, 0x00, 0x05, 0x00, 0x10, 0x00, 0x05, 0x00, 0x10, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x06, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x07, 0x00, 0xf5, 0xff, 0x06, 0x00, 0xf3, 0xff, 0x05, 0x00, 0xf2, 0xff, 0x04, 0x00, 0xf1, 0xff, 0x03, 0x00, 0xf1, 0xff, 0x02, 0x00, 0xf0, 0xff, 0x01, 0x00, 0xef, 0xff, 0xff, 0xff, 0xee, 0xff, 0xfe, 0xff, 0xed, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xfc, 0xff, 0xed, 0xff, 0xfb, 0xff, 0xed, 0xff, 0xfa, 0xff, 0xef, 0xff, 0xf9, 0xff, 0xf0, 0xff, 0xf7, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0xf1, 0xff, 0xf5, 0xff, 0xf0, 0xff, 0xf7, 0xff, 0xef, 0xff, 0xf8, 0xff, 0xef, 0xff, 0xf9, 0xff, 0xee, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xfa, 0xff, 0xed, 0xff, 0xfa, 0xff, 0xed, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xfb, 0xff, 0xef, 0xff, 0xfc, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xf2, 0xff, 0x00, 0x00, 0xf3, 0xff, 0x00, 0x00, 0xf4, 0xff, 0x01, 0x00, 0xf6, 0xff, 0x01, 0x00, 0xf7, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x09, 0x00, 0x02, 0x00, 0x09, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x03, 0x00, 0x10, 0x00, 0x03, 0x00, 0x11, 0x00, 0x02, 0x00, 0x11, 0x00, 0x01, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0xff, 0xff, 0x11, 0x00, 0xfe, 0xff, 0x11, 0x00, 0xfe, 0xff, 0x10, 0x00, 0xfd, 0xff, 0x10, 0x00, 0xfd, 0xff, 0x10, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0d, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x0b, 0x00, 0xfb, 0xff, 0x0a, 0x00, 0xfb, 0xff, 0x09, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf7, 0xff, 0x02, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf5, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xfd, 0xff, 0xf5, 0xff, 0xfd, 0xff, 0xf5, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xf5, 0xff, 0xfb, 0xff, 0xf5, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf4, 0xff, 0xfb, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xf5, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf6, 0xff, 0x05, 0x00, 0xf5, 0xff, 0x07, 0x00, 0xf4, 0xff, 0x09, 0x00, 0xf4, 0xff, 0x0a, 0x00, 0xf4, 0xff, 0x0b, 0x00, 0xf5, 0xff, 0x0c, 0x00, 0xf7, 0xff, 0x0d, 0x00, 0xf8, 0xff, 0x0f, 0x00, 0xf9, 0xff, 0x11, 0x00, 0xf9, 0xff, 0x12, 0x00, 0xfa, 0xff, 0x13, 0x00, 0xf9, 0xff, 0x13, 0x00, 0xfa, 0xff, 0x13, 0x00, 0xfb, 0xff, 0x12, 0x00, 0xfc, 0xff, 0x11, 0x00, 0xfe, 0xff, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x11, 0x00, 0x03, 0x00, 0x11, 0x00, 0x05, 0x00, 0x11, 0x00, 0x05, 0x00, 0x10, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0x07, 0x00, 0x03, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x01, 0x00, 0x06, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf7, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf3, 0xff, 0x02, 0x00, 0xf1, 0xff, 0x02, 0x00, 0xf0, 0xff, 0x01, 0x00, 0xee, 0xff, 0x00, 0x00, 0xec, 0xff, 0xfe, 0xff, 0xeb, 0xff, 0xfd, 0xff, 0xe9, 0xff, 0xfd, 0xff, 0xe9, 0xff, 0xfd, 0xff, 0xe8, 0xff, 0xfd, 0xff, 0xe9, 0xff, 0xfe, 0xff, 0xe9, 0xff, 0xfd, 0xff, 0xe9, 0xff, 0xfd, 0xff, 0xe9, 0xff, 0xfc, 0xff, 0xea, 0xff, 0xfa, 0xff, 0xeb, 0xff, 0xf9, 0xff, 0xec, 0xff, 0xf9, 0xff, 0xee, 0xff, 0xf8, 0xff, 0xef, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xf9, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf3, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf3, 0xff, 0xfa, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfe, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x00, 0x00, 0xf4, 0xff, 0x00, 0x00, 0xf4, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf6, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x0a, 0x00, 0xff, 0xff, 0x0c, 0x00, 0xff, 0xff, 0x0e, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0xff, 0xff, 0x10, 0x00, 0xff, 0xff, 0x10, 0x00, 0xfe, 0xff, 0x10, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfd, 0xff, 0x10, 0x00, 0xfd, 0xff, 0x11, 0x00, 0xfd, 0xff, 0x11, 0x00, 0xfd, 0xff, 0x12, 0x00, 0xfd, 0xff, 0x12, 0x00, 0xfd, 0xff, 0x11, 0x00, 0xfd, 0xff, 0x10, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0xfd, 0xff, 0x0e, 0x00, 0xfc, 0xff, 0x0d, 0x00, 0xfc, 0xff, 0x0d, 0x00, 0xfb, 0xff, 0x0c, 0x00, 0xfb, 0xff, 0x0b, 0x00, 0xfb, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf7, 0xff, 0x02, 0x00, 0xf6, 0xff, 0x02, 0x00, 0xf4, 0xff, 0x02, 0x00, 0xf4, 0xff, 0x03, 0x00, 0xf4, 0xff, 0x03, 0x00, 0xf4, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x04, 0x00, 0xf6, 0xff, 0x05, 0x00, 0xf7, 0xff, 0x06, 0x00, 0xf7, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x09, 0x00, 0xf7, 0xff, 0x0a, 0x00, 0xf7, 0xff, 0x0b, 0x00, 0xf7, 0xff, 0x0c, 0x00, 0xf8, 0xff, 0x0c, 0x00, 0xfa, 0xff, 0x0d, 0x00, 0xfb, 0xff, 0x0e, 0x00, 0xfc, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0x10, 0x00, 0xff, 0xff, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x11, 0x00, 0x02, 0x00, 0x11, 0x00, 0x03, 0x00, 0x10, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xff, 0xff, 0x0a, 0x00, 0xff, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf5, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xf2, 0xff, 0x00, 0x00, 0xf2, 0xff, 0x01, 0x00, 0xf3, 0xff, 0x02, 0x00, 0xf3, 0xff, 0x03, 0x00, 0xf3, 0xff, 0x03, 0x00, 0xf2, 0xff, 0x03, 0x00, 0xf1, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x04, 0x00, 0xf0, 0xff, 0x05, 0x00, 0xf0, 0xff, 0x05, 0x00, 0xf0, 0xff, 0x06, 0x00, 0xf0, 0xff, 0x06, 0x00, 0xf1, 0xff, 0x05, 0x00, 0xf2, 0xff, 0x05, 0x00, 0xf4, 0xff, 0x05, 0x00, 0xf5, 0xff, 0x06, 0x00, 0xf7, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x09, 0x00, 0x03, 0x00, 0x09, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x10, 0x00, 0x07, 0x00, 0x10, 0x00, 0x06, 0x00, 0x10, 0x00, 0x05, 0x00, 0x10, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x02, 0x00, 0x10, 0x00, 0x02, 0x00, 0x10, 0x00, 0x02, 0x00, 0x11, 0x00, 0x02, 0x00, 0x11, 0x00, 0x03, 0x00, 0x10, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x0c, 0x00, 0xfb, 0xff, 0x0c, 0x00, 0xfb, 0xff, 0x0b, 0x00, 0xfa, 0xff, 0x09, 0x00, 0xf8, 0xff, 0x08, 0x00, 0xf7, 0xff, 0x07, 0x00, 0xf5, 0xff, 0x06, 0x00, 0xf4, 0xff, 0x06, 0x00, 0xf3, 0xff, 0x07, 0x00, 0xf2, 0xff, 0x07, 0x00, 0xf2, 0xff, 0x07, 0x00, 0xf1, 0xff, 0x06, 0x00, 0xf1, 0xff, 0x04, 0x00, 0xf0, 0xff, 0x02, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xef, 0xff, 0xfe, 0xff, 0xef, 0xff, 0xfd, 0xff, 0xef, 0xff, 0xfd, 0xff, 0xf0, 0xff, 0xfd, 0xff, 0xf0, 0xff, 0xfd, 0xff, 0xf1, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xfb, 0xff, 0xf3, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf7, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xfb, 0xff, 0xf6, 0xff, 0xfb, 0xff, 0xf5, 0xff, 0xfb, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xfb, 0xff, 0xf4, 0xff, 0xfb, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf6, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x02, 0x00, 0xf7, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x00, 0x08, 0x00, 0x02, 0x00, 0x09, 0x00, 0x04, 0x00, 0x09, 0x00, 0x05, 0x00, 0x09, 0x00, 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x09, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x09, 0x00, 0x04, 0x00, 0x08, 0x00, 0x03, 0x00, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf7, 0xff, 0x03, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf4, 0xff, 0x03, 0x00, 0xf4, 0xff, 0x02, 0x00, 0xf4, 0xff, 0x02, 0x00, 0xf4, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0x04, 0x00, 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x03, 0x00, 0x10, 0x00, 0x03, 0x00, 0x10, 0x00, 0x04, 0x00, 0x10, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x10, 0x00, 0x05, 0x00, 0x10, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x09, 0x00, 0x01, 0x00, 0x07, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xf3, 0xff, 0xfb, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xfc, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0xef, 0xff, 0xfb, 0xff, 0xee, 0xff, 0xf9, 0xff, 0xec, 0xff, 0xf9, 0xff, 0xeb, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xf9, 0xff, 0xea, 0xff, 0xfa, 0xff, 0xea, 0xff, 0xfb, 0xff, 0xeb, 0xff, 0xfb, 0xff, 0xec, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xfa, 0xff, 0xed, 0xff, 0xf9, 0xff, 0xed, 0xff, 0xf8, 0xff, 0xed, 0xff, 0xf7, 0xff, 0xed, 0xff, 0xf7, 0xff, 0xee, 0xff, 0xf7, 0xff, 0xf0, 0xff, 0xf7, 0xff, 0xf2, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x03, 0x00, 0x08, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x10, 0x00, 0x05, 0x00, 0x10, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xf5, 0xff, 0xfd, 0xff, 0xf4, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfe, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xed, 0xff, 0xff, 0xff, 0xed, 0xff, 0xff, 0xff, 0xed, 0xff, 0xff, 0xff, 0xed, 0xff, 0xff, 0xff, 0xed, 0xff, 0x00, 0x00, 0xed, 0xff, 0x01, 0x00, 0xed, 0xff, 0x02, 0x00, 0xed, 0xff, 0x02, 0x00, 0xed, 0xff, 0x02, 0x00, 0xee, 0xff, 0x02, 0x00, 0xef, 0xff, 0x01, 0x00, 0xf1, 0xff, 0x01, 0x00, 0xf2, 0xff, 0x01, 0x00, 0xf3, 0xff, 0x02, 0x00, 0xf4, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf7, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x0a, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0d, 0x00, 0xfd, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0e, 0x00, 0xfd, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0xfb, 0xff, 0xf4, 0xff, 0xfb, 0xff, 0xf3, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xfa, 0xff, 0xf1, 0xff, 0xfa, 0xff, 0xf1, 0xff, 0xfa, 0xff, 0xf1, 0xff, 0xfa, 0xff, 0xf1, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xfe, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xf1, 0xff, 0x00, 0x00, 0xf1, 0xff, 0x00, 0x00, 0xf2, 0xff, 0x00, 0x00, 0xf2, 0xff, 0x00, 0x00, 0xf3, 0xff, 0x00, 0x00, 0xf4, 0xff, 0x01, 0x00, 0xf6, 0xff, 0x02, 0x00, 0xf7, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xfa, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xff, 0xff, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x03, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x10, 0x00, 0x09, 0x00, 0x11, 0x00, 0x0a, 0x00, 0x13, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x15, 0x00, 0x09, 0x00, 0x16, 0x00, 0x08, 0x00, 0x17, 0x00, 0x08, 0x00, 0x18, 0x00, 0x08, 0x00, 0x18, 0x00, 0x08, 0x00, 0x19, 0x00, 0x08, 0x00, 0x19, 0x00, 0x09, 0x00, 0x19, 0x00, 0x08, 0x00, 0x18, 0x00, 0x07, 0x00, 0x16, 0x00, 0x06, 0x00, 0x14, 0x00, 0x04, 0x00, 0x13, 0x00, 0x03, 0x00, 0x12, 0x00, 0x02, 0x00, 0x12, 0x00, 0x02, 0x00, 0x11, 0x00, 0x02, 0x00, 0x11, 0x00, 0x02, 0x00, 0x10, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0xf2, 0xff, 0xfd, 0xff, 0xef, 0xff, 0xfd, 0xff, 0xee, 0xff, 0xfd, 0xff, 0xec, 0xff, 0xfe, 0xff, 0xec, 0xff, 0xfe, 0xff, 0xeb, 0xff, 0xfe, 0xff, 0xea, 0xff, 0xfe, 0xff, 0xe9, 0xff, 0xfd, 0xff, 0xe9, 0xff, 0xfd, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0xe9, 0xff, 0xfc, 0xff, 0xeb, 0xff, 0xfd, 0xff, 0xec, 0xff, 0xfd, 0xff, 0xee, 0xff, 0xfd, 0xff, 0xef, 0xff, 0xfd, 0xff, 0xf1, 0xff, 0xfd, 0xff, 0xf2, 0xff, 0xfd, 0xff, 0xf4, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0xff, 0xff, 0x0b, 0x00, 0xff, 0xff, 0x0b, 0x00, 0xff, 0xff, 0x0c, 0x00, 0xfe, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x0b, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf3, 0xff, 0xfa, 0xff, 0xf3, 0xff, 0xfb, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xfc, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xfd, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xff, 0xff, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x09, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf7, 0xff, 0x04, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf6, 0xff, 0x02, 0x00, 0xf6, 0xff, 0x01, 0x00, 0xf7, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x03, 0x00, 0x08, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x09, 0x00, 0x07, 0x00, 0x09, 0x00, 0x06, 0x00, 0x08, 0x00, 0x05, 0x00, 0x09, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x08, 0x00, 0x02, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf7, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xfb, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xf5, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0xff, 0xff, 0xf4, 0xff, 0x01, 0x00, 0xf3, 0xff, 0x01, 0x00, 0xf3, 0xff, 0x02, 0x00, 0xf3, 0xff, 0x03, 0x00, 0xf4, 0xff, 0x04, 0x00, 0xf5, 0xff, 0x06, 0x00, 0xf6, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x08, 0x00, 0xf8, 0xff, 0x09, 0x00, 0xf8, 0xff, 0x0a, 0x00, 0xf8, 0xff, 0x0b, 0x00, 0xf8, 0xff, 0x0b, 0x00, 0xf8, 0xff, 0x0b, 0x00, 0xf9, 0xff, 0x0c, 0x00, 0xfa, 0xff, 0x0c, 0x00, 0xfb, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x0d, 0x00, 0xfd, 0xff, 0x0d, 0x00, 0xfd, 0xff, 0x0d, 0x00, 0xfe, 0xff, 0x0d, 0x00, 0xfe, 0xff, 0x0c, 0x00, 0xff, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x0b, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfb, 0xff, 0x0a, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xf9, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf7, 0xff, 0x06, 0x00, 0xf6, 0xff, 0x05, 0x00, 0xf4, 0xff, 0x04, 0x00, 0xf3, 0xff, 0x03, 0x00, 0xf2, 0xff, 0x02, 0x00, 0xf2, 0xff, 0x01, 0x00, 0xf2, 0xff, 0x00, 0x00, 0xf2, 0xff, 0x00, 0x00, 0xf3, 0xff, 0x00, 0x00, 0xf3, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xfe, 0xff, 0xf2, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf3, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf7, 0xff, 0x05, 0x00, 0xf6, 0xff, 0x06, 0x00, 0xf5, 0xff, 0x06, 0x00, 0xf6, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x08, 0x00, 0xf8, 0xff, 0x09, 0x00, 0xf9, 0xff, 0x0b, 0x00, 0xf9, 0xff, 0x0c, 0x00, 0xf8, 0xff, 0x0d, 0x00, 0xf9, 0xff, 0x0d, 0x00, 0xf9, 0xff, 0x0e, 0x00, 0xfa, 0xff, 0x0e, 0x00, 0xfb, 0xff, 0x0e, 0x00, 0xfc, 0xff, 0x0e, 0x00, 0xfc, 0xff, 0x0d, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0b, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0xff, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x08, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf7, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x09, 0x00, 0x06, 0x00, 0x09, 0x00, 0x06, 0x00, 0x09, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x08, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x05, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x08, 0x00, 0xf9, 0xff, 0x08, 0x00, 0xf9, 0xff, 0x08, 0x00, 0xf9, 0xff, 0x08, 0x00, 0xf9, 0xff, 0x08, 0x00, 0xf9, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfb, 0xff, 0x09, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf6, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xf5, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf4, 0xff, 0x01, 0x00, 0xf4, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf6, 0xff, 0x01, 0x00, 0xf7, 0xff, 0x01, 0x00, 0xf7, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0xff, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfd, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf7, 0xff, 0x02, 0x00, 0xf6, 0xff, 0x01, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf7, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x09, 0x00, 0x02, 0x00, 0x08, 0x00, 0x02, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf7, 0xff, 0x03, 0x00, 0xf7, 0xff, 0x03, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf6, 0xff, 0x01, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfb, 0xff, 0x09, 0x00, 0xfb, 0xff, 0x09, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x09, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x02, 0x00, 0x0f, 0x00, 0x02, 0x00, 0x0f, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0xff, 0xff, 0x0d, 0x00, 0xff, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xf5, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf4, 0xff, 0x00, 0x00, 0xf4, 0xff, 0x00, 0x00, 0xf3, 0xff, 0x00, 0x00, 0xf3, 0xff, 0xff, 0xff, 0xf4, 0xff, 0xff, 0xff, 0xf4, 0xff, 0xff, 0xff, 0xf5, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x03, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x03, 0x00, 0x08, 0x00, 0x03, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfc, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x0b, 0x00, 0xfc, 0xff, 0x0c, 0x00, 0xfc, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0d, 0x00, 0xfd, 0xff, 0x0d, 0x00, 0xfe, 0xff, 0x0d, 0x00, 0xfe, 0xff, 0x0d, 0x00, 0xfe, 0xff, 0x0d, 0x00, 0xfe, 0xff, 0x0c, 0x00, 0xfe, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0b, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfd, 0xff, 0x0b, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xfa, 0xff, 0x05, 0x00, 0xfa, 0xff, 0x05, 0x00, 0xfa, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x06, 0x00, 0xf7, 0xff, 0x06, 0x00, 0xf7, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x05, 0x00, 0x09, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x09, 0x00, 0x06, 0x00, 0x08, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf5, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0x03, 0x00, 0x08, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xff, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x09, 0x00, 0x05, 0x00, 0x09, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00, 0x07, 0x00, 0x04, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x07, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0x02, 0x00, 0x09, 0x00, 0x01, 0x00, 0x09, 0x00, 0x01, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf6, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x01, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf5, 0xff, 0x02, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf6, 0xff, 0x03, 0x00, 0xf7, 0xff, 0x04, 0x00, 0xf7, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x08, 0x00, 0x02, 0x00, 0x09, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xff, 0xff, 0x0a, 0x00, 0xff, 0xff, 0x0a, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf7, 0xff, 0x06, 0x00, 0xf7, 0xff, 0x06, 0x00, 0xf6, 0xff, 0x06, 0x00, 0xf6, 0xff, 0x07, 0x00, 0xf6, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x07, 0x00, 0xf7, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x00, 0x08, 0x00, 0x01, 0x00, 0x08, 0x00, 0x01, 0x00, 0x08, 0x00, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xf5, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf5, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfc, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x07, 0x00, 0xf9, 0xff, 0x08, 0x00, 0xf9, 0xff, 0x09, 0x00, 0xf9, 0xff, 0x09, 0x00, 0xfa, 0xff, 0x09, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xfa, 0xff, 0x07, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x05, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x03, 0x00, 0x06, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x06, 0x00, 0x09, 0x00, 0x07, 0x00, 0x09, 0x00, 0x07, 0x00, 0x09, 0x00, 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x08, 0x00, 0x02, 0x00, 0x07, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00, 0x08, 0x00, 0x03, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x08, 0x00, 0x01, 0x00, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0x02, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x08, 0x00, 0x01, 0x00, 0x08, 0x00, 0x02, 0x00, 0x09, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0x02, 0x00, 0x09, 0x00, 0x01, 0x00, 0x09, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x0a, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x09, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x08, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfb, 0xff, 0x07, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x02, 0x00, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0x03, 0x00, 0x08, 0x00, 0x03, 0x00, 0x09, 0x00, 0x03, 0x00, 0x09, 0x00, 0x03, 0x00, 0x09, 0x00, 0x04, 0x00, 0x09, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x09, 0x00, 0x05, 0x00, 0x09, 0x00, 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x03, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xf9, 0xff, 0x05, 0x00, 0xf8, 0xff, 0x04, 0x00, 0xf8, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x02, 0x00, 0xf7, 0xff, 0x01, 0x00, 0xf7, 0xff, 0x01, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0x00, 0x00, 0xf7, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x00, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xf9, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x09, 0x00, 0x01, 0x00, 0x08, 0x00, 0x01, 0x00, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x03, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfc, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x05, 0x00, 0xfb, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x04, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x03, 0x00, 0xf9, 0xff, 0x02, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x03, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x03, 0x00, 0x09, 0x00, 0x03, 0x00, 0x09, 0x00, 0x02, 0x00, 0x09, 0x00, 0x02, 0x00, 0x09, 0x00, 0x01, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff, 0x08, 0x00, 0xff, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x05, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x09, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0xff, 0xff, 0x0a, 0x00, 0xff, 0xff, 0x0a, 0x00, 0xff, 0xff, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x02, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x00, 0x00, 0xfb, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x01, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x02, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfa, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfb, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x05, 0x00, 0xff, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x07, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x06, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x05, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x04, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x03, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x02, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfd, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x72, 0x65, 0x67, 0x6e, 0x5c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x01, 0x6d, 0xff, 0xce, 0xe1, 0x45, 0x11, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x50, 0x6f, 0x70, 0x5f, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x65, 0x64, 0x5f, 0x32, 0x00, 0x00, 0x58, 0x99, 0xd6, 0x39, 0x01, 0x00, 0x00, 0x00, 0x90, 0x6e, 0xc5, 0xbc, 0xa6, 0x7f, 0x00, 0x00, 0x75, 0x6d, 0x69, 0x64, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x01, 0x6d, 0xff, 0xce, 0xe1, 0x45, 0x11, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + NSUInteger length = sizeof(bytes) / sizeof(Byte); + return [NSData dataWithBytesNoCopy:(void *)bytes length:length freeWhenDone:NO]; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h new file mode 100644 index 0000000..13890a6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h @@ -0,0 +1,27 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKLikeControl.h" + +@interface FBSDKLikeControl () + +- (NSDictionary *)analyticsParameters; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h new file mode 100644 index 0000000..9d7748f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h @@ -0,0 +1,49 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import +#import + +#import + +@protocol FBSDKLikeDialogDelegate; + +@interface FBSDKLikeDialog : NSObject + ++ (instancetype)likeWithObjectID:(NSString *)objectID + objectType:(FBSDKLikeObjectType)objectType + delegate:(id)delegate; + +@property (nonatomic, weak) id delegate; +@property (nonatomic, copy) NSString *objectID; +@property (nonatomic, assign) FBSDKLikeObjectType objectType; +@property (nonatomic, assign) BOOL shouldFailOnDataError; +@property (nonatomic, weak) UIViewController *fromViewController; + +- (BOOL)canLike; +- (BOOL)like; +- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef; + +@end + +@protocol FBSDKLikeDialogDelegate + +- (void)likeDialog:(FBSDKLikeDialog *)likeDialog didCompleteWithResults:(NSDictionary *)results; +- (void)likeDialog:(FBSDKLikeDialog *)likeDialog didFailWithError:(NSError *)error; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m new file mode 100644 index 0000000..ea2abf6 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m @@ -0,0 +1,159 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKLikeDialog.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareConstants.h" +#import "FBSDKShareDefines.h" +#import "FBSDKShareError.h" + +@implementation FBSDKLikeDialog + +#define FBSDK_LIKE_METHOD_MIN_VERSION @"20140410" +#define FBSDK_LIKE_METHOD_NAME @"like" +#define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_LIKE @"like" +#define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_UNLIKE @"unlike" + +#pragma mark - Class Methods + ++ (void)initialize +{ + if ([FBSDKLikeDialog class] == self) { + [FBSDKServerConfigurationManager loadServerConfigurationWithCompletionBlock:NULL]; + } +} + ++ (instancetype)likeWithObjectID:(NSString *)objectID + objectType:(FBSDKLikeObjectType)objectType + delegate:(id)delegate +{ + FBSDKLikeDialog *dialog = [[self alloc] init]; + dialog.objectID = objectID; + dialog.objectType = objectType; + dialog.delegate = delegate; + [dialog like]; + return dialog; +} + +#pragma mark - Public Methods + +- (BOOL)canLike +{ + return YES; +} + +- (BOOL)like +{ + NSError *error; + if (![self canLike]) { + error = [FBSDKShareError errorWithCode:FBSDKShareDialogNotAvailableErrorCode + message:@"Like dialog is not available."]; + [_delegate likeDialog:self didFailWithError:error]; + return NO; + } + if (![self validateWithError:&error]) { + [_delegate likeDialog:self didFailWithError:error]; + return NO; + } + + NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; + [FBSDKInternalUtility dictionary:parameters setObject:self.objectID forKey:@"object_id"]; + [FBSDKInternalUtility dictionary:parameters + setObject:NSStringFromFBSDKLikeObjectType(self.objectType) + forKey:@"object_type"]; + FBSDKBridgeAPIRequest * webRequest = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeWeb + scheme:FBSDK_SHARE_JS_DIALOG_SCHEME + methodName:FBSDK_LIKE_METHOD_NAME + methodVersion:nil + parameters:parameters + userInfo:nil]; + FBSDKBridgeAPICallbackBlock completionBlock = ^(FBSDKBridgeAPIResponse *response) { + [self _handleCompletionWithDialogResults:response.responseParameters error:response.error]; + }; + + FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; + BOOL useSafariViewController = [configuration useSafariViewControllerForDialogName:FBSDKDialogConfigurationNameLike]; + if ([self _canLikeNative]) { + FBSDKBridgeAPIRequest *nativeRequest = [FBSDKBridgeAPIRequest bridgeAPIRequestWithProtocolType:FBSDKBridgeAPIProtocolTypeNative + scheme:FBSDK_CANOPENURL_FACEBOOK + methodName:FBSDK_LIKE_METHOD_NAME + methodVersion:FBSDK_LIKE_METHOD_MIN_VERSION + parameters:parameters + userInfo:nil]; + void (^networkCompletionBlock)(FBSDKBridgeAPIResponse *) = ^(FBSDKBridgeAPIResponse *response) { + if (response.error.code == FBSDKAppVersionUnsupportedErrorCode) { + [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:webRequest + useSafariViewController:useSafariViewController + fromViewController:self.fromViewController + completionBlock:completionBlock]; + } else { + completionBlock(response); + } + }; + [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:nativeRequest + useSafariViewController:useSafariViewController + fromViewController:self.fromViewController + completionBlock:networkCompletionBlock]; + } else { + [[FBSDKApplicationDelegate sharedInstance] openBridgeAPIRequest:webRequest + useSafariViewController:useSafariViewController + fromViewController:self.fromViewController + completionBlock:completionBlock]; + } + + return YES; +} + +- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef +{ + if (![self.objectID length]) { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"objectID" message:nil]; + } + return NO; + } + if (errorRef != NULL) { + *errorRef = nil; + } + return YES; +} + +#pragma mark - Helper Methods + +- (BOOL)_canLikeNative +{ + FBSDKServerConfiguration *configuration = [FBSDKServerConfigurationManager cachedServerConfiguration]; + BOOL useNativeDialog = [configuration useNativeDialogForDialogName:FBSDKDialogConfigurationNameLike]; + return (useNativeDialog && [FBSDKInternalUtility isFacebookAppInstalled]); +} + +- (void)_handleCompletionWithDialogResults:(NSDictionary *)results error:(NSError *)error +{ + if (!_delegate) { + return; + } + NSString *completionGesture = results[FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY]; + if (completionGesture && !error) { + [_delegate likeDialog:self didCompleteWithResults:[results copy]]; + } else { + [_delegate likeDialog:self didFailWithError:error]; + } +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h new file mode 100644 index 0000000..b3b6965 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKCoreKit+Internal.h" + +@interface FBSDKMessengerIcon : FBSDKIcon + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m new file mode 100644 index 0000000..2f5a22f --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m @@ -0,0 +1,50 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKMessengerIcon.h" + +@implementation FBSDKMessengerIcon + +- (CGPathRef)pathWithSize:(CGSize)size +{ + CGAffineTransform transformValue = CGAffineTransformMakeScale(size.width / 61.0, size.height / 61.0); + const CGAffineTransform *transform = &transformValue; + CGMutablePathRef path = CGPathCreateMutable(); + CGPathMoveToPoint(path, transform, 30.001, 0.962); + CGPathAddCurveToPoint(path, transform, 13.439, 0.962, 0.014, 13.462, 0.014, 28.882); + CGPathAddCurveToPoint(path, transform, 0.014, 37.165, 3.892, 44.516, 10.046, 49.549); + CGPathAddLineToPoint(path, transform, 10.046, 61.176); + CGPathAddLineToPoint(path, transform, 19.351, 54.722); + CGPathAddCurveToPoint(path, transform, 22.662, 55.870, 26.250, 56.502, 30.002, 56.502); + CGPathAddCurveToPoint(path, transform, 46.565, 56.502, 59.990, 44.301, 59.990, 28.882); + CGPathAddCurveToPoint(path, transform, 59.989, 13.462, 46.564, 0.962, 30.001, 0.962); + CGPathCloseSubpath(path); + CGPathMoveToPoint(path, transform, 33.159, 37.473); + CGPathAddLineToPoint(path, transform, 25.403, 29.484); + CGPathAddLineToPoint(path, transform, 10.467, 37.674); + CGPathAddLineToPoint(path, transform, 26.843, 20.445); + CGPathAddLineToPoint(path, transform, 34.599, 28.433); + CGPathAddLineToPoint(path, transform, 49.535, 20.244); + CGPathAddLineToPoint(path, transform, 33.159, 37.473); + CGPathCloseSubpath(path); + CGPathRef result = CGPathCreateCopy(path); + CGPathRelease(path); + return CFAutorelease(result); +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h new file mode 100644 index 0000000..2d647fb --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h @@ -0,0 +1,30 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#define FBSDK_SHARE_JS_DIALOG_SCHEME @"web" +#define FBSDK_SHARE_METHOD_NAME @"share" +#define FBSDK_SHARE_OPEN_GRAPH_METHOD_NAME @"ogshare" +#define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_KEY @"completionGesture" +#define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_CANCEL @"cancel" +#define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST @"post" +#define FBSDK_SHARE_RESULT_DID_COMPLETE_KEY @"didComplete" +#define FBSDK_SHARE_RESULT_POST_ID_KEY @"postId" +#define FBSDK_SHARE_WEB_PARAM_POST_ID_KEY @"post_id" +#define FBSDK_SHARE_WEB_SCHEME @"https" diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h new file mode 100644 index 0000000..ad83522 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h @@ -0,0 +1,25 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import "FBSDKCoreKit+Internal.h" + +@interface FBSDKShareError : FBSDKError + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m new file mode 100644 index 0000000..46896cc --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m @@ -0,0 +1,30 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareError.h" + +#import "FBSDKShareConstants.h" + +@implementation FBSDKShareError + ++ (NSString *)errorDomain +{ + return FBSDKShareErrorDomain; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h new file mode 100644 index 0000000..5c75377 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h @@ -0,0 +1,26 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +#import "FBSDKShareDefines.h" +#import "FBSDKShareError.h" +#import "FBSDKShareOpenGraphValueContainer+Internal.h" +#import "FBSDKShareUtility.h" diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h new file mode 100644 index 0000000..c9269de --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h @@ -0,0 +1,26 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareLinkContent.h" + +@interface FBSDKShareLinkContent () + +// Deprecated parameters for Feed Dialog - for usage with Unity only. +@property (nonatomic, copy) NSDictionary *feedParameters; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h new file mode 100644 index 0000000..5d9382e --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h @@ -0,0 +1,29 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import + +@interface FBSDKShareOpenGraphValueContainer () + +- (NSDictionary *)allProperties; +- (BOOL)isEqualToShareOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)object; +- (BOOL)requireKeyNamespace; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h new file mode 100644 index 0000000..82ac804 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h @@ -0,0 +1,55 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import + +#import +#import +#import +#import +#import +#import + +@interface FBSDKShareUtility : NSObject + ++ (void)assertCollection:(id)collection ofClass:itemClass name:(NSString *)name; ++ (void)assertOpenGraphKey:(id)key requireNamespace:(BOOL)requireNamespace; ++ (void)assertOpenGraphValue:(id)value; ++ (void)assertOpenGraphValues:(NSDictionary *)dictionary requireKeyNamespace:(BOOL)requireKeyNamespace; ++ (id)convertOpenGraphValue:(id)value; ++ (BOOL)buildWebShareContent:(id)content + methodName:(NSString *__autoreleasing *)methodNameRef + parameters:(NSDictionary *__autoreleasing *)parametersRef + error:(NSError *__autoreleasing *)errorRef; ++ (NSDictionary *)convertOpenGraphValues:(NSDictionary *)dictionary; ++ (NSDictionary *)feedShareDictionaryForContent:(id)content; ++ (NSDictionary *)parametersForShareContent:(id)shareContent + shouldFailOnDataError:(BOOL)shouldFailOnDataError; ++ (void)testShareContent:(id)shareContent + containsMedia:(BOOL *)containsMediaRef + containsPhotos:(BOOL *)containsPhotosRef; ++ (BOOL)validateAppInviteContent:(FBSDKAppInviteContent *)appInviteContent error:(NSError *__autoreleasing *)errorRef; ++ (BOOL)validateGameRequestContent:(FBSDKGameRequestContent *)gameRequestContent error:(NSError *__autoreleasing *)errorRef; ++ (BOOL)validateShareContent:(id)shareContent error:(NSError *__autoreleasing *)errorRef; ++ (BOOL)validateShareLinkContent:(FBSDKShareLinkContent *)linkContent error:(NSError *__autoreleasing *)errorRef; ++ (BOOL)validateShareOpenGraphContent:(FBSDKShareOpenGraphContent *)openGraphContent + error:(NSError *__autoreleasing *)errorRef; ++ (BOOL)validateSharePhotoContent:(FBSDKSharePhotoContent *)photoContent error:(NSError *__autoreleasing *)errorRef; ++ (NSString *)getOpenGraphNameAndNamespaceFromFullName:(NSString *)fullName namespace:(NSString **)namespace; + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m new file mode 100644 index 0000000..8c296e0 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m @@ -0,0 +1,727 @@ +// Copyright (c) 2014-present, Facebook, Inc. All rights reserved. +// +// You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +// copy, modify, and distribute this software in source code or binary form for use +// in connection with the web services and APIs provided by Facebook. +// +// As with any software that integrates with the Facebook platform, your use of +// this software is subject to the Facebook Developer Principles and Policies +// [http://developers.facebook.com/policy/]. This copyright notice shall be +// included in all copies or substantial portions of the software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "FBSDKShareUtility.h" + +#import "FBSDKCoreKit+Internal.h" +#import "FBSDKShareConstants.h" +#import "FBSDKShareError.h" +#import "FBSDKShareLinkContent+Internal.h" +#import "FBSDKShareOpenGraphContent.h" +#import "FBSDKShareOpenGraphObject.h" +#import "FBSDKSharePhoto.h" +#import "FBSDKSharePhotoContent.h" +#import "FBSDKShareVideo.h" +#import "FBSDKShareVideoContent.h" +#import "FBSDKSharingContent.h" + +@implementation FBSDKShareUtility + +#pragma mark - Class Methods + ++ (void)assertCollection:(id)collection ofClass:itemClass name:(NSString *)name +{ + for (id item in collection) { + if (![item isKindOfClass:itemClass]) { + NSString *reason = [[NSString alloc] initWithFormat: + @"Invalid value found in %@: %@ - %@", + name, + item, + collection]; + @throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil]; + } + } +} + ++ (void)assertOpenGraphKey:(id)key requireNamespace:(BOOL)requireNamespace +{ + if (![key isKindOfClass:[NSString class]]) { + NSString *reason = [[NSString alloc] initWithFormat:@"Invalid key found in Open Graph dictionary: %@", key]; + @throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil]; + } + if (!requireNamespace) { + return; + } + NSArray *components = [key componentsSeparatedByString:@":"]; + if ([components count] < 2) { + NSString *reason = [[NSString alloc] initWithFormat:@"Open Graph keys must be namespaced: %@", key]; + @throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil]; + } + for (NSString *component in components) { + if (![component length]) { + NSString *reason = [[NSString alloc] initWithFormat:@"Invalid key found in Open Graph dictionary: %@", key]; + @throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil]; + } + } +} + ++ (void)assertOpenGraphValue:(id)value +{ + if ([self _isOpenGraphValue:value]) { + return; + } + if ([value isKindOfClass:[NSDictionary class]]) { + [self assertOpenGraphValues:(NSDictionary *)value requireKeyNamespace:YES]; + return; + } + if ([value isKindOfClass:[NSArray class]]) { + for (id subValue in (NSArray *)value) { + [self assertOpenGraphValue:subValue]; + } + return; + } + NSString *reason = [[NSString alloc] initWithFormat:@"Invalid Open Graph value found: %@", value]; + @throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil]; +} + ++ (void)assertOpenGraphValues:(NSDictionary *)dictionary requireKeyNamespace:(BOOL)requireKeyNamespace +{ + [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) { + [self assertOpenGraphKey:key requireNamespace:requireKeyNamespace]; + [self assertOpenGraphValue:value]; + }]; +} + ++ (BOOL)buildWebShareContent:(id)content + methodName:(NSString *__autoreleasing *)methodNameRef + parameters:(NSDictionary *__autoreleasing *)parametersRef + error:(NSError *__autoreleasing *)errorRef +{ + NSString *methodName = nil; + NSDictionary *parameters = nil; + if ([content isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + methodName = @"share_open_graph"; + FBSDKShareOpenGraphContent *openGraphContent = (FBSDKShareOpenGraphContent *)content; + FBSDKShareOpenGraphAction *action = openGraphContent.action; + NSDictionary *properties = [self _convertOpenGraphValueContainer:action requireNamespace:NO]; + NSString *propertiesJSON = [FBSDKInternalUtility JSONStringForObject:properties + error:errorRef + invalidObjectHandler:NULL]; + parameters = @{ + @"action_type": action.actionType, + @"action_properties": propertiesJSON, + }; + } else if ([content isKindOfClass:[FBSDKShareLinkContent class]]) { + FBSDKShareLinkContent *linkContent = (FBSDKShareLinkContent *)content; + methodName = @"share"; + if (linkContent.contentURL != nil) { + parameters = @{ @"href": linkContent.contentURL.absoluteString }; + } + } + if (methodNameRef != NULL) { + *methodNameRef = methodName; + } + if (parametersRef != NULL) { + *parametersRef = parameters; + } + if (errorRef != NULL) { + *errorRef = nil; + } + return YES; +} + ++ (id)convertOpenGraphValue:(id)value +{ + if ([self _isOpenGraphValue:value]) { + return value; + } else if ([value isKindOfClass:[NSDictionary class]]) { + NSDictionary *properties = (NSDictionary *)value; + if ([FBSDKTypeUtility stringValue:properties[@"type"]]) { + return [FBSDKShareOpenGraphObject objectWithProperties:properties]; + } else { + NSURL *imageURL = [FBSDKTypeUtility URLValue:properties[@"url"]]; + if (imageURL) { + FBSDKSharePhoto *sharePhoto = [FBSDKSharePhoto photoWithImageURL:imageURL + userGenerated:[FBSDKTypeUtility boolValue:properties[@"user_generated"]]]; + sharePhoto.caption = [FBSDKTypeUtility stringValue:properties[@"caption"]]; + return sharePhoto; + } else { + return nil; + } + } + } else if ([value isKindOfClass:[NSArray class]]) { + NSMutableArray *array = [[NSMutableArray alloc] init]; + for (id subValue in (NSArray *)value) { + [FBSDKInternalUtility array:array addObject:[self convertOpenGraphValue:subValue]]; + } + return [array copy]; + } else { + return nil; + } +} + ++ (NSDictionary *)convertOpenGraphValues:(NSDictionary *)dictionary +{ + NSMutableDictionary *convertedDictionary = [[NSMutableDictionary alloc] init]; + [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + [FBSDKInternalUtility dictionary:convertedDictionary setObject:[self convertOpenGraphValue:obj] forKey:key]; + }]; + return [convertedDictionary copy]; +} + ++ (NSDictionary *)feedShareDictionaryForContent:(id)content +{ + NSMutableDictionary *parameters = nil; + if ([content isKindOfClass:[FBSDKShareLinkContent class]]) { + FBSDKShareLinkContent *linkContent = (FBSDKShareLinkContent *)content; + parameters = [[NSMutableDictionary alloc] initWithDictionary:linkContent.feedParameters]; + [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentDescription forKey:@"description"]; + [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentURL forKey:@"link"]; + [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentTitle forKey:@"name"]; + [FBSDKInternalUtility dictionary:parameters setObject:linkContent.imageURL forKey:@"picture"]; + [FBSDKInternalUtility dictionary:parameters setObject:linkContent.ref forKey:@"ref"]; + } + return [parameters copy]; +} + ++ (NSDictionary *)parametersForShareContent:(id)shareContent + shouldFailOnDataError:(BOOL)shouldFailOnDataError +{ + NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; + [self _addToParameters:parameters forShareContent:shareContent]; + parameters[@"dataFailuresFatal"] = @(shouldFailOnDataError); + if ([shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { + [self _addToParameters:parameters forShareLinkContent:(FBSDKShareLinkContent *)shareContent]; + } else if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { + [self _addToParameters:parameters forSharePhotoContent:(FBSDKSharePhotoContent *)shareContent]; + } else if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { + [self _addToParameters:parameters forShareVideoContent:(FBSDKShareVideoContent *)shareContent]; + } else if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + [self _addToParameters:parameters forShareOpenGraphContent:(FBSDKShareOpenGraphContent *)shareContent]; + } + return [parameters copy]; +} + ++ (void)testShareContent:(id)shareContent + containsMedia:(BOOL *)containsMediaRef + containsPhotos:(BOOL *)containsPhotosRef +{ + BOOL containsMedia = NO; + BOOL containsPhotos = NO; + if ([shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { + containsMedia = NO; + containsPhotos = NO; + } else if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { + containsMedia = YES; + containsPhotos = NO; + } else if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { + [self _testObject:((FBSDKSharePhotoContent *)shareContent).photos + containsMedia:&containsMedia + containsPhotos:&containsPhotos]; + } else if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + [self _testOpenGraphValueContainer:((FBSDKShareOpenGraphContent *)shareContent).action + containsMedia:&containsMedia + containsPhotos:&containsPhotos]; + } + if (containsMediaRef != NULL) { + *containsMediaRef = containsMedia; + } + if (containsPhotosRef != NULL) { + *containsPhotosRef = containsPhotos; + } +} + ++ (BOOL)validateAppInviteContent:(FBSDKAppInviteContent *)appInviteContent error:(NSError *__autoreleasing *)errorRef +{ + return ([self _validateRequiredValue:appInviteContent name:@"content" error:errorRef] && + [self _validateRequiredValue:appInviteContent.appLinkURL name:@"appLinkURL" error:errorRef] && + [self _validateNetworkURL:appInviteContent.appLinkURL name:@"appLinkURL" error:errorRef] && + [self _validateNetworkURL:appInviteContent.appInvitePreviewImageURL name:@"appInvitePreviewImageURL" error:errorRef]); +} + ++ (BOOL)validateGameRequestContent:(FBSDKGameRequestContent *)gameRequestContent error:(NSError *__autoreleasing *)errorRef +{ + if (![self _validateRequiredValue:gameRequestContent name:@"content" error:errorRef] + || ![self _validateRequiredValue:gameRequestContent.message name:@"message" error:errorRef]) { + return NO; + } + BOOL mustHaveobjectID = gameRequestContent.actionType == FBSDKGameRequestActionTypeSend + || gameRequestContent.actionType == FBSDKGameRequestActionTypeAskFor; + BOOL hasobjectID = [gameRequestContent.objectID length] > 0; + if (mustHaveobjectID ^ hasobjectID) { + if (errorRef != NULL) { + NSString *message = @"The objectID is required when the actionType is either send or askfor."; + *errorRef = [FBSDKShareError requiredArgumentErrorWithName:@"objectID" message:message]; + } + return NO; + } + BOOL hasTo = [gameRequestContent.recipients count] > 0; + BOOL hasFilters = gameRequestContent.filters != FBSDKGameRequestFilterNone; + BOOL hasSuggestions = [gameRequestContent.recipientSuggestions count] > 0; + if (hasTo && hasFilters) { + if (errorRef != NULL) { + NSString *message = @"Cannot specify to and filters at the same time."; + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"recipients" value:gameRequestContent.recipients message:message]; + } + return NO; + } + if (hasTo && hasSuggestions) { + if (errorRef != NULL) { + NSString *message = @"Cannot specify to and suggestions at the same time."; + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"recipients" value:gameRequestContent.recipients message:message]; + } + return NO; + } + + if (hasFilters && hasSuggestions) { + if (errorRef != NULL) { + NSString *message = @"Cannot specify filters and suggestions at the same time."; + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"recipientSuggestions" value:gameRequestContent.recipientSuggestions message:message]; + } + return NO; + } + + if ([gameRequestContent.data length] > 255) { + if (errorRef != NULL) { + NSString *message = @"The data cannot be longer than 255 characters"; + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"data" value:gameRequestContent.data message:message]; + } + return NO; + } + + if (errorRef != NULL) { + *errorRef = nil; + } + + return [self _validateArgumentWithName:@"actionType" + value:gameRequestContent.actionType + isIn:@[@(FBSDKGameRequestActionTypeNone), + @(FBSDKGameRequestActionTypeSend), + @(FBSDKGameRequestActionTypeAskFor), + @(FBSDKGameRequestActionTypeTurn)] + error:errorRef] + && [self _validateArgumentWithName:@"filters" + value:gameRequestContent.filters + isIn:@[@(FBSDKGameRequestFilterNone), + @(FBSDKGameRequestFilterAppUsers), + @(FBSDKGameRequestFilterAppNonUsers)] + error:errorRef]; +} + ++ (BOOL)validateShareContent:(id)shareContent error:(NSError *__autoreleasing *)errorRef +{ + if (![self _validateRequiredValue:shareContent name:@"shareContent" error:errorRef]) { + return NO; + } else if ([shareContent isKindOfClass:[FBSDKShareLinkContent class]]) { + return [self validateShareLinkContent:(FBSDKShareLinkContent *)shareContent error:errorRef]; + } else if ([shareContent isKindOfClass:[FBSDKSharePhotoContent class]]) { + return [self validateSharePhotoContent:(FBSDKSharePhotoContent *)shareContent error:errorRef]; + } else if ([shareContent isKindOfClass:[FBSDKShareVideoContent class]]) { + return [self validateShareVideoContent:(FBSDKShareVideoContent *)shareContent error:errorRef]; + } else if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + return [self validateShareOpenGraphContent:(FBSDKShareOpenGraphContent *)shareContent error:errorRef]; + } else { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"shareContent" value:shareContent message:nil]; + } + return NO; + } +} + ++ (BOOL)validateShareOpenGraphContent:(FBSDKShareOpenGraphContent *)openGraphContent + error:(NSError *__autoreleasing *)errorRef +{ + FBSDKShareOpenGraphAction *action = openGraphContent.action; + NSString *previewPropertyName = openGraphContent.previewPropertyName; + id object = action[previewPropertyName]; + return ([self _validateRequiredValue:openGraphContent name:@"shareContent" error:errorRef] && + [self _validateRequiredValue:action name:@"action" error:errorRef] && + [self _validateRequiredValue:previewPropertyName name:@"previewPropertyName" error:errorRef] && + [self _validateRequiredValue:object name:previewPropertyName error:errorRef]); +} + ++ (BOOL)validateSharePhotoContent:(FBSDKSharePhotoContent *)photoContent error:(NSError *__autoreleasing *)errorRef +{ + NSArray *photos = photoContent.photos; + if (![self _validateRequiredValue:photoContent name:@"shareContent" error:errorRef] || + ![self _validateArray:photos minCount:1 maxCount:6 name:@"photos" error:errorRef]) { + return NO; + } + for (FBSDKSharePhoto *photo in photos) { + if (!photo.image) { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:@"photos" + value:photos + message:@"photos must have UIImages"]; + } + return NO; + } + } + return YES; +} + ++ (BOOL)validateShareLinkContent:(FBSDKShareLinkContent *)linkContent error:(NSError *__autoreleasing *)errorRef +{ + return ([self _validateRequiredValue:linkContent name:@"shareContent" error:errorRef] && + [self _validateNetworkURL:linkContent.contentURL name:@"contentURL" error:errorRef] && + [self _validateNetworkURL:linkContent.imageURL name:@"imageURL" error:errorRef]); +} + ++ (BOOL)validateShareVideoContent:(FBSDKShareVideoContent *)videoContent error:(NSError *__autoreleasing *)errorRef +{ + FBSDKShareVideo *video = videoContent.video; + NSURL *videoURL = video.videoURL; + return ([self _validateRequiredValue:videoContent name:@"videoContent" error:errorRef] && + [self _validateRequiredValue:video name:@"video" error:errorRef] && + [self _validateRequiredValue:videoURL name:@"videoURL" error:errorRef] && + [self _validateAssetLibraryURL:videoURL name:@"videoURL" error:errorRef]); +} + +#pragma mark - Object Lifecycle + +- (instancetype)init +{ + FBSDK_NO_DESIGNATED_INITIALIZER(); + return nil; +} + +#pragma mark - Helper Methods + ++ (void)_addToParameters:(NSMutableDictionary *)parameters forShareContent:(id)shareContent +{ + if ([shareContent isKindOfClass:[FBSDKShareOpenGraphContent class]]) { + FBSDKShareOpenGraphAction *action = ((FBSDKShareOpenGraphContent *)shareContent).action; + [action setArray:shareContent.peopleIDs forKey:@"tags"]; + [action setString:shareContent.placeID forKey:@"place"]; + [action setString:shareContent.ref forKey:@"ref"]; + } else { + [FBSDKInternalUtility dictionary:parameters setObject:shareContent.peopleIDs forKey:@"tags"]; + [FBSDKInternalUtility dictionary:parameters setObject:shareContent.placeID forKey:@"place"]; + [FBSDKInternalUtility dictionary:parameters setObject:shareContent.ref forKey:@"ref"]; + } +} + ++ (void)_addToParameters:(NSMutableDictionary *)parameters +forShareOpenGraphContent:(FBSDKShareOpenGraphContent *)openGraphContent +{ + NSString *previewPropertyName = [self getOpenGraphNameAndNamespaceFromFullName:openGraphContent.previewPropertyName namespace:nil]; + [FBSDKInternalUtility dictionary:parameters + setObject:previewPropertyName + forKey:@"previewPropertyName"]; + [FBSDKInternalUtility dictionary:parameters setObject:openGraphContent.action.actionType forKey:@"actionType"]; + [FBSDKInternalUtility dictionary:parameters + setObject:[self _convertOpenGraphValueContainer:openGraphContent.action requireNamespace:NO] + forKey:@"action"]; +} + ++ (void)_addToParameters:(NSMutableDictionary *)parameters + forSharePhotoContent:(FBSDKSharePhotoContent *)photoContent +{ + [FBSDKInternalUtility dictionary:parameters + setObject:[photoContent.photos valueForKeyPath:@"image"] + forKey:@"photos"]; +} + ++ (void)_addToParameters:(NSMutableDictionary *)parameters + forShareLinkContent:(FBSDKShareLinkContent *)linkContent +{ + [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentURL forKey:@"link"]; + [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentTitle forKey:@"name"]; + [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentDescription forKey:@"description"]; + [FBSDKInternalUtility dictionary:parameters setObject:linkContent.imageURL forKey:@"picture"]; +} + ++ (void)_addToParameters:(NSMutableDictionary *)parameters + forShareVideoContent:(FBSDKShareVideoContent *)videoContent +{ + NSMutableDictionary *videoParameters = [[NSMutableDictionary alloc] init]; + FBSDKShareVideo *video = videoContent.video; + NSURL *videoURL = video.videoURL; + if (videoURL) { + videoParameters[@"assetURL"] = videoURL; + } + [FBSDKInternalUtility dictionary:videoParameters + setObject:[self _convertPhoto:videoContent.previewPhoto] + forKey:@"previewPhoto"]; + parameters[@"video"] = videoParameters; +} + ++ (id)_convertObject:(id)object +{ + if ([object isKindOfClass:[FBSDKShareOpenGraphValueContainer class]]) { + object = [self _convertOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)object requireNamespace:YES]; + } else if ([object isKindOfClass:[FBSDKSharePhoto class]]) { + object = [self _convertPhoto:(FBSDKSharePhoto *)object]; + } else if ([object isKindOfClass:[NSArray class]]) { + NSMutableArray *array = [[NSMutableArray alloc] init]; + for (id item in (NSArray *)object) { + [FBSDKInternalUtility array:array addObject:[self _convertObject:item]]; + } + object = array; + } + return object; +} + ++ (NSDictionary *)_convertOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)container + requireNamespace:(BOOL)requireNamespace +{ + NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *data = [[NSMutableDictionary alloc] init]; + [container enumerateKeysAndObjectsUsingBlock:^(NSString *key, id object, BOOL *stop) { + // if we have an FBSDKShareOpenGraphObject and a type, then we are creating a new object instance; set the flag + if ([key isEqualToString:@"og:type"] && [container isKindOfClass:[FBSDKShareOpenGraphObject class]]) { + dictionary[@"fbsdk:create_object"] = @YES; + dictionary[key] = object; + } + id value = [self _convertObject:object]; + if (value) { + NSString *namespace; + key = [self getOpenGraphNameAndNamespaceFromFullName:key namespace:&namespace]; + + if (requireNamespace) { + if ([namespace isEqualToString:@"og"]) { + dictionary[key] = value; + } else { + data[key] = value; + } + } else { + dictionary[key] = value; + } + } + }]; + if ([data count]) { + dictionary[@"data"] = data; + } + return dictionary; +} + ++ (NSString *)getOpenGraphNameAndNamespaceFromFullName:(NSString *)fullName namespace:(NSString **)namespace { + if (namespace) { + *namespace = nil; + } + + if ([fullName isEqualToString:@"fb:explicitly_shared"]) { + return fullName; + } + + NSUInteger index = [fullName rangeOfString:@":"].location; + if ((index != NSNotFound) && (fullName.length > index + 1)) { + if (namespace) { + *namespace = [fullName substringToIndex:index]; + } + + return [fullName substringFromIndex:index + 1]; + } + + return fullName; +} + ++ (NSDictionary *)_convertPhoto:(FBSDKSharePhoto *)photo +{ + if (!photo) { + return nil; + } + NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; + dictionary[@"user_generated"] = @(photo.userGenerated); + [FBSDKInternalUtility dictionary:dictionary setObject:photo.caption forKey:@"caption"]; + + [FBSDKInternalUtility dictionary:dictionary setObject:photo.image ?: photo.imageURL.absoluteString forKey:@"url"]; + return dictionary; +} + ++ (BOOL)_isOpenGraphValue:(id)value +{ + return ((value == nil) || + [value isKindOfClass:[NSNull class]] || + [value isKindOfClass:[NSNumber class]] || + [value isKindOfClass:[NSString class]] || + [value isKindOfClass:[NSURL class]] || + [value isKindOfClass:[FBSDKSharePhoto class]] || + [value isKindOfClass:[FBSDKShareOpenGraphObject class]]); +} + ++ (void)_testObject:(id)object containsMedia:(BOOL *)containsMediaRef containsPhotos:(BOOL *)containsPhotosRef +{ + BOOL containsMedia = NO; + BOOL containsPhotos = NO; + if ([object isKindOfClass:[FBSDKSharePhoto class]]) { + containsMedia = (((FBSDKSharePhoto *)object).image != nil); + containsPhotos = YES; + } else if ([object isKindOfClass:[FBSDKShareOpenGraphValueContainer class]]) { + [self _testOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)object + containsMedia:&containsMedia + containsPhotos:&containsPhotos]; + } else if ([object isKindOfClass:[NSArray class]]) { + for (id item in (NSArray *)object) { + BOOL itemContainsMedia = NO; + BOOL itemContainsPhotos = NO; + [self _testObject:item containsMedia:&itemContainsMedia containsPhotos:&itemContainsPhotos]; + containsMedia |= itemContainsMedia; + containsPhotos |= itemContainsPhotos; + if (containsMedia && containsPhotos) { + break; + } + } + } + if (containsMediaRef != NULL) { + *containsMediaRef = containsMedia; + } + if (containsPhotosRef != NULL) { + *containsPhotosRef = containsPhotos; + } +} + ++ (void)_testOpenGraphValueContainer:(FBSDKShareOpenGraphValueContainer *)container + containsMedia:(BOOL *)containsMediaRef + containsPhotos:(BOOL *)containsPhotosRef +{ + __block BOOL containsMedia = NO; + __block BOOL containsPhotos = NO; + [container enumerateKeysAndObjectsUsingBlock:^(NSString *key, id object, BOOL *stop) { + BOOL itemContainsMedia = NO; + BOOL itemContainsPhotos = NO; + [self _testObject:object containsMedia:&itemContainsMedia containsPhotos:&itemContainsPhotos]; + containsMedia |= itemContainsMedia; + containsPhotos |= itemContainsPhotos; + if (containsMedia && containsPhotos) { + *stop = YES; + } + }]; + if (containsMediaRef != NULL) { + *containsMediaRef = containsMedia; + } + if (containsPhotosRef != NULL) { + *containsPhotosRef = containsPhotos; + } +} + ++ (BOOL)_validateArray:(NSArray *)array + minCount:(NSUInteger)minCount + maxCount:(NSUInteger)maxCount + name:(NSString *)name + error:(NSError *__autoreleasing *)errorRef +{ + NSUInteger count = [array count]; + if ((count < minCount) || (count > maxCount)) { + if (errorRef != NULL) { + NSString *message = [[NSString alloc] initWithFormat:@"%@ must have %lu to %lu values", + name, + (unsigned long)minCount, + (unsigned long)maxCount]; + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:name value:array message:message]; + } + return NO; + } else { + if (errorRef != NULL) { + *errorRef = nil; + } + return YES; + } +} + ++ (BOOL)_validateAssetLibraryURL:(NSURL *)URL name:(NSString *)name error:(NSError *__autoreleasing *)errorRef +{ + if (!URL || [[URL.scheme lowercaseString] isEqualToString:@"assets-library"]) { + if (errorRef != NULL) { + *errorRef = nil; + } + return YES; + } else { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:name value:URL message:nil]; + } + return NO; + } +} + ++ (BOOL)_validateFileURL:(NSURL *)URL name:(NSString *)name error:(NSError *__autoreleasing *)errorRef +{ + if (!URL) { + if (errorRef != NULL) { + *errorRef = nil; + } + return YES; + } + if (!URL.isFileURL) { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:name value:URL message:nil]; + } + return NO; + } + // ensure that the file exists. per the latest spec for NSFileManager, we should not be checking for file existance, + // so they have removed that option for URLs and discourage it for paths, so we just construct a mapped NSData. + NSError *fileError; + if (![[NSData alloc] initWithContentsOfURL:URL + options:NSDataReadingMapped + error:&fileError]) { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:name + value:URL + message:@"Error reading file" + underlyingError:fileError]; + } + return NO; + } + if (errorRef != NULL) { + *errorRef = nil; + } + return YES; +} + ++ (BOOL)_validateNetworkURL:(NSURL *)URL name:(NSString *)name error:(NSError *__autoreleasing *)errorRef +{ + if (!URL || [FBSDKInternalUtility isBrowserURL:URL]) { + if (errorRef != NULL) { + *errorRef = nil; + } + return YES; + } else { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:name value:URL message:nil]; + } + return NO; + } +} + ++ (BOOL)_validateRequiredValue:(id)value name:(NSString *)name error:(NSError *__autoreleasing *)errorRef +{ + if (!value || + ([value isKindOfClass:[NSString class]] && ![(NSString *)value length]) || + ([value isKindOfClass:[NSArray class]] && ![(NSArray *)value count]) || + ([value isKindOfClass:[NSDictionary class]] && ![(NSDictionary *)value count])) { + if (errorRef != NULL) { + *errorRef = [FBSDKShareError requiredArgumentErrorWithName:name message:nil]; + } + return NO; + } + if (errorRef != NULL) { + *errorRef = nil; + } + return YES; +} + ++ (BOOL)_validateArgumentWithName:(NSString *)argumentName + value:(NSUInteger)value + isIn:(NSArray *)possibleValues + error:(NSError *__autoreleasing *)errorRef +{ + for (NSNumber *possibleValue in possibleValues) { + if (value == [possibleValue unsignedIntegerValue]) { + if (errorRef != NULL) { + *errorRef = nil; + } + return YES; + } + } + if (errorRef != NULL) { + *errorRef = [FBSDKShareError invalidArgumentErrorWithName:argumentName value:@(value) message:nil]; + } + return NO; +} + +@end diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/LICENSE b/Unit-2-Journal/Pods/FBSDKShareKit/LICENSE new file mode 100644 index 0000000..bdb9fc5 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/LICENSE @@ -0,0 +1,17 @@ +Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + +You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +copy, modify, and distribute this software in source code or binary form for use +in connection with the web services and APIs provided by Facebook. + +As with any software that integrates with the Facebook platform, your use of +this software is subject to the Facebook Developer Principles and Policies +[http://developers.facebook.com/policy/]. This copyright notice shall be +included in all copies or substantial portions of the software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Unit-2-Journal/Pods/FBSDKShareKit/README.mdown b/Unit-2-Journal/Pods/FBSDKShareKit/README.mdown new file mode 100644 index 0000000..d14a5e4 --- /dev/null +++ b/Unit-2-Journal/Pods/FBSDKShareKit/README.mdown @@ -0,0 +1,46 @@ +Facebook SDK for iOS +==================== + +This open-source library allows you to integrate Facebook into your iOS app. + +Learn more about the provided samples, documentation, integrating the SDK into your app, accessing source code, and more at https://developers.facebook.com/docs/ios + +NOTE: By default, the Facebook SDK for iOS is installed in ~/Documents/FacebookSDK + +TRY IT OUT +---------- +1. Download the SDK at https://developers.facebook.com/docs/ios or via Cocoapods by adding the 'FBSDKCoreKit', 'FBSDKLoginKit', and 'FBSDKShareKit' pods. +2. Test your install: build and run the project at ~/Documents/FacebookSDK/Samples/Scrumptious/Scrumptious.xcodeproj +3. Check-out the tutorials available online at: https://developers.facebook.com/docs/ios/getting-started +4. Start coding! Visit https://developers.facebook.com/docs/ios for tutorials and reference documentation. + +FEATURES +-------- +* Login - https://developers.facebook.com/docs/facebook-login +* Sharing - https://developers.facebook.com/docs/sharing +* App Links - https://developers.facebook.com/docs/applinks +* Graph API - https://developers.facebook.com/docs/ios/graph +* Analytics for Apps - https://developers.facebook.com/docs/analytics + +GIVE FEEDBACK +------------- +Please report bugs or issues to https://developers.facebook.com/bugs/ + +You can also join the Facebook Developers Group on Facebook (https://www.facebook.com/groups/fbdevelopers/) or ask questions on Stack Overflow (http://facebook.stackoverflow.com) + +LICENSE +------- +See the LICENSE file. + +DEVELOPER TERMS +--------------- + +- By enabling Facebook integrations, including through this SDK, you can share information with Facebook, including information about people’s use of your app. Facebook will use information received in accordance with our Data Use Policy [https://www.facebook.com/about/privacy/], including to provide you with insights about the effectiveness of your ads and the use of your app. These integrations also enable us and our partners to serve ads on and off Facebook. + +- You may limit your sharing of information with us by updating the Insights control in the developer tool [https://developers.facebook.com/apps/{app_id}/settings/advanced]. + +- If you use a Facebook integration, including to share information with us, you agree and confirm that you have provided appropriate and sufficiently prominent notice to and obtained the appropriate consent from your users regarding such collection, use, and disclosure (including, at a minimum, through your privacy policy). You further agree that you will not share information with us about children under the age of 13. + +- You agree to comply with all applicable laws and regulations and also agree to our Terms , including our Platform Policies .and Advertising Guidelines, as applicable . + +By using the Facebook SDK for iOS you agree to these terms. diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLink.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLink.h new file mode 120000 index 0000000..3f79bee --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLink.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLink.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkNavigation.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkNavigation.h new file mode 120000 index 0000000..6962356 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkNavigation.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLinkNavigation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkResolving.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkResolving.h new file mode 120000 index 0000000..94cc66f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkResolving.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLinkResolving.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererController.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererController.h new file mode 120000 index 0000000..95067f0 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererController.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView.h new file mode 120000 index 0000000..cc00897 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView_Internal.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView_Internal.h new file mode 120000 index 0000000..fc68769 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkReturnToRefererView_Internal.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkTarget.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkTarget.h new file mode 120000 index 0000000..90a41f6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLinkTarget.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLinkTarget.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLink_Internal.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLink_Internal.h new file mode 120000 index 0000000..dc060b2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFAppLink_Internal.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLink_Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFCancellationToken.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFCancellationToken.h new file mode 120000 index 0000000..0b69486 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFCancellationToken.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BFCancellationToken.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFCancellationTokenRegistration.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFCancellationTokenRegistration.h new file mode 120000 index 0000000..c587ca7 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFCancellationTokenRegistration.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BFCancellationTokenRegistration.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFCancellationTokenSource.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFCancellationTokenSource.h new file mode 120000 index 0000000..d3d5985 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFCancellationTokenSource.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BFCancellationTokenSource.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFDefines.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFDefines.h new file mode 120000 index 0000000..5df18ff --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFDefines.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BFDefines.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFExecutor.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFExecutor.h new file mode 120000 index 0000000..c071e8c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFExecutor.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BFExecutor.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFMeasurementEvent.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFMeasurementEvent.h new file mode 120000 index 0000000..2eb6c11 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFMeasurementEvent.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFMeasurementEvent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFMeasurementEvent_Internal.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFMeasurementEvent_Internal.h new file mode 120000 index 0000000..98b7d06 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFMeasurementEvent_Internal.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFMeasurementEvent_Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFTask.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFTask.h new file mode 120000 index 0000000..5468334 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFTask.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BFTask.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFTaskCompletionSource.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFTaskCompletionSource.h new file mode 120000 index 0000000..c74760f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFTaskCompletionSource.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BFTaskCompletionSource.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFURL.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFURL.h new file mode 120000 index 0000000..df21bd9 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFURL.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFURL.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFURL_Internal.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFURL_Internal.h new file mode 120000 index 0000000..3a5c5f4 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFURL_Internal.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFURL_Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BFWebViewAppLinkResolver.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFWebViewAppLinkResolver.h new file mode 120000 index 0000000..bf250db --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BFWebViewAppLinkResolver.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFWebViewAppLinkResolver.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/Bolts.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/Bolts.h new file mode 120000 index 0000000..146ac6e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/Bolts.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/Bolts.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Bolts/BoltsVersion.h b/Unit-2-Journal/Pods/Headers/Private/Bolts/BoltsVersion.h new file mode 120000 index 0000000..0fa0e2d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Bolts/BoltsVersion.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BoltsVersion.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessToken.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessToken.h new file mode 120000 index 0000000..a5b3f97 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAccessToken.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEvents.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEvents.h new file mode 120000 index 0000000..95c1d00 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppEvents.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkResolver.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkResolver.h new file mode 120000 index 0000000..69c20f5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkResolver.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkUtility.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkUtility.h new file mode 120000 index 0000000..fef519c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKAppLinkUtility.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKApplicationDelegate.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKApplicationDelegate.h new file mode 120000 index 0000000..e163dc8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKApplicationDelegate.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKButton.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKButton.h new file mode 120000 index 0000000..806ec62 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKButton.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKConstants.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKConstants.h new file mode 120000 index 0000000..4c08cc8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKConstants.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCopying.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCopying.h new file mode 120000 index 0000000..aa5dc1f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCopying.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit.h new file mode 120000 index 0000000..bfffe4f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEvents+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEvents+Internal.h new file mode 120000 index 0000000..bca1f6d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEvents+Internal.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsDeviceInfo.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsDeviceInfo.h new file mode 120000 index 0000000..0117f86 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsDeviceInfo.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsState.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsState.h new file mode 120000 index 0000000..d308fc2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsState.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsStateManager.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsStateManager.h new file mode 120000 index 0000000..96166c9 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsStateManager.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsUtility.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsUtility.h new file mode 120000 index 0000000..9e4fe10 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKAppEventsUtility.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKPaymentObserver.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKPaymentObserver.h new file mode 120000 index 0000000..2a1633c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKPaymentObserver.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKTimeSpentData.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKTimeSpentData.h new file mode 120000 index 0000000..86e7c62 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents/FBSDKTimeSpentData.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKBoltsMeasurementEventListener.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKBoltsMeasurementEventListener.h new file mode 120000 index 0000000..5487fc0 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppLink/FBSDKBoltsMeasurementEventListener.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Base64/FBSDKBase64.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Base64/FBSDKBase64.h new file mode 120000 index 0000000..813405b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Base64/FBSDKBase64.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPICrypto.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPICrypto.h new file mode 120000 index 0000000..cb0de38 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPICrypto.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIProtocol.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIProtocol.h new file mode 120000 index 0000000..1e29474 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIProtocol.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIProtocolType.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIProtocolType.h new file mode 120000 index 0000000..be98e2d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIProtocolType.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIRequest+Private.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIRequest+Private.h new file mode 120000 index 0000000..683af01 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIRequest+Private.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIRequest.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIRequest.h new file mode 120000 index 0000000..5559ff2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIRequest.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIResponse.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIResponse.h new file mode 120000 index 0000000..b98fda5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKBridgeAPIResponse.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKURLOpening.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKURLOpening.h new file mode 120000 index 0000000..511af8b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/FBSDKURLOpening.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h new file mode 120000 index 0000000..7217555 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h @@ -0,0 +1 @@ +../../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h new file mode 120000 index 0000000..81046ef --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h @@ -0,0 +1 @@ +../../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h new file mode 120000 index 0000000..3d5905f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h @@ -0,0 +1 @@ +../../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Cryptography/FBSDKCrypto.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Cryptography/FBSDKCrypto.h new file mode 120000 index 0000000..d252bd1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Cryptography/FBSDKCrypto.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ErrorRecovery/FBSDKErrorRecoveryAttempter.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ErrorRecovery/FBSDKErrorRecoveryAttempter.h new file mode 120000 index 0000000..38b6b9a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ErrorRecovery/FBSDKErrorRecoveryAttempter.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h new file mode 120000 index 0000000..632ac64 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate+Internal.h new file mode 120000 index 0000000..77f5848 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate+Internal.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKAudioResourceLoader.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKAudioResourceLoader.h new file mode 120000 index 0000000..2bfc06b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKAudioResourceLoader.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKContainerViewController.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKContainerViewController.h new file mode 120000 index 0000000..e7f5c5a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKContainerViewController.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit+Internal.h new file mode 120000 index 0000000..b008702 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit+Internal.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKDynamicFrameworkLoader.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKDynamicFrameworkLoader.h new file mode 120000 index 0000000..a19240e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKDynamicFrameworkLoader.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKError.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKError.h new file mode 120000 index 0000000..6d85e14 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKError.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKInternalUtility.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKInternalUtility.h new file mode 120000 index 0000000..c23bf34 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKInternalUtility.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKLogger.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKLogger.h new file mode 120000 index 0000000..3315142 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKLogger.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKMath.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKMath.h new file mode 120000 index 0000000..df9ec6b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKMath.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKMonotonicTime.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKMonotonicTime.h new file mode 120000 index 0000000..d2aa09d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKMonotonicTime.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile+Internal.h new file mode 120000 index 0000000..255bbe8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile+Internal.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings+Internal.h new file mode 120000 index 0000000..d6f2f9a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings+Internal.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKSystemAccountStoreAdapter.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKSystemAccountStoreAdapter.h new file mode 120000 index 0000000..2c6a47b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKSystemAccountStoreAdapter.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKTriStateBOOL.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKTriStateBOOL.h new file mode 120000 index 0000000..6a410f9 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKTriStateBOOL.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKTypeUtility.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKTypeUtility.h new file mode 120000 index 0000000..099c869 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/FBSDKTypeUtility.h @@ -0,0 +1 @@ +../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequest+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequest+Internal.h new file mode 120000 index 0000000..6e01ec1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequest+Internal.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestBody.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestBody.h new file mode 120000 index 0000000..934a950 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestBody.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestConnection+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestConnection+Internal.h new file mode 120000 index 0000000..91dc9cf --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestConnection+Internal.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestMetadata.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestMetadata.h new file mode 120000 index 0000000..706bcf0 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestMetadata.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestPiggybackManager.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestPiggybackManager.h new file mode 120000 index 0000000..08b7d33 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKGraphRequestPiggybackManager.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKURLConnection.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKURLConnection.h new file mode 120000 index 0000000..6c2e53a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network/FBSDKURLConnection.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKDialogConfiguration.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKDialogConfiguration.h new file mode 120000 index 0000000..440f996 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKDialogConfiguration.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKErrorConfiguration.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKErrorConfiguration.h new file mode 120000 index 0000000..2dd9eb6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKErrorConfiguration.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h new file mode 120000 index 0000000..7fefef9 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfiguration+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfiguration+Internal.h new file mode 120000 index 0000000..c83017c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfiguration+Internal.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfiguration.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfiguration.h new file mode 120000 index 0000000..92b6a91 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfiguration.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h new file mode 120000 index 0000000..ff5429a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfigurationManager.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfigurationManager.h new file mode 120000 index 0000000..fce03db --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration/FBSDKServerConfigurationManager.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCache.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCache.h new file mode 120000 index 0000000..7fd98c6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCache.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV3.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV3.h new file mode 120000 index 0000000..76f7463 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV3.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV3_17.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV3_17.h new file mode 120000 index 0000000..ab98c04 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV3_17.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV3_21.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV3_21.h new file mode 120000 index 0000000..e5b9041 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV3_21.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV4.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV4.h new file mode 120000 index 0000000..d51e088 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCacheV4.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCaching.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCaching.h new file mode 120000 index 0000000..2847507 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKAccessTokenCaching.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKKeychainStore.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKKeychainStore.h new file mode 120000 index 0000000..b4cd9e0 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKKeychainStore.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKKeychainStoreViaBundleID.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKKeychainStoreViaBundleID.h new file mode 120000 index 0000000..e487b7c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching/FBSDKKeychainStoreViaBundleID.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKButton+Subclass.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKButton+Subclass.h new file mode 120000 index 0000000..5d7863e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKButton+Subclass.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKCloseIcon.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKCloseIcon.h new file mode 120000 index 0000000..757c858 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKCloseIcon.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKColor.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKColor.h new file mode 120000 index 0000000..7f6cbb5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKColor.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKIcon.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKIcon.h new file mode 120000 index 0000000..d36c18a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKIcon.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKLogo.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKLogo.h new file mode 120000 index 0000000..360f0b0 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKLogo.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKMaleSilhouetteIcon.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKMaleSilhouetteIcon.h new file mode 120000 index 0000000..a46a344 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKMaleSilhouetteIcon.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKUIUtility.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKUIUtility.h new file mode 120000 index 0000000..e6fcd41 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKUIUtility.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKViewImpressionTracker.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKViewImpressionTracker.h new file mode 120000 index 0000000..3c37050 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI/FBSDKViewImpressionTracker.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/WebDialog/FBSDKWebDialog.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/WebDialog/FBSDKWebDialog.h new file mode 120000 index 0000000..c7e0ba3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/WebDialog/FBSDKWebDialog.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/WebDialog/FBSDKWebDialogView.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/WebDialog/FBSDKWebDialogView.h new file mode 120000 index 0000000..e0507f4 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/WebDialog/FBSDKWebDialogView.h @@ -0,0 +1 @@ +../../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h new file mode 120000 index 0000000..6f019f6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphRequest.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphRequest.h new file mode 120000 index 0000000..524cb77 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphRequest.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphRequestConnection.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphRequestConnection.h new file mode 120000 index 0000000..c6cbbfc --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphRequestConnection.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h new file mode 120000 index 0000000..9960de2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKMacros.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKMacros.h new file mode 120000 index 0000000..f9059c1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKMacros.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKMutableCopying.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKMutableCopying.h new file mode 120000 index 0000000..40cf5f1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKMutableCopying.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKProfile.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKProfile.h new file mode 120000 index 0000000..a9866b1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKProfile.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKProfilePictureView.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKProfilePictureView.h new file mode 120000 index 0000000..6f38799 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKProfilePictureView.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKSettings.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKSettings.h new file mode 120000 index 0000000..7edc38f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKSettings.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKTestUsersManager.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKTestUsersManager.h new file mode 120000 index 0000000..5813f89 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKTestUsersManager.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKUtility.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKUtility.h new file mode 120000 index 0000000..efbfaf1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKCoreKit/FBSDKUtility.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h new file mode 120000 index 0000000..2858225 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginCompletion+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginCompletion+Internal.h new file mode 120000 index 0000000..d780aec --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginCompletion+Internal.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginCompletion.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginCompletion.h new file mode 120000 index 0000000..9101505 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginCompletion.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h new file mode 120000 index 0000000..7a07eea --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginError.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginError.h new file mode 120000 index 0000000..ed27b5a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginError.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit+Internal.h new file mode 120000 index 0000000..e7b579c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit+Internal.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h new file mode 120000 index 0000000..fcd06fa --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager+Internal.h new file mode 120000 index 0000000..fea69ca --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager+Internal.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h new file mode 120000 index 0000000..05205f6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLogger.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLogger.h new file mode 120000 index 0000000..5a06db7 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLogger.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult+Internal.h new file mode 120000 index 0000000..ce5d355 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult+Internal.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h new file mode 120000 index 0000000..fb21852 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h new file mode 120000 index 0000000..ffe74ad --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginUtility.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginUtility.h new file mode 120000 index 0000000..5431582 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginUtility.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h new file mode 120000 index 0000000..725e375 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/_FBSDKLoginRecoveryAttempter.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/_FBSDKLoginRecoveryAttempter.h new file mode 120000 index 0000000..156bac4 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKLoginKit/FBSDKLoginKit/_FBSDKLoginRecoveryAttempter.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h new file mode 120000 index 0000000..67d7080 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h new file mode 120000 index 0000000..0e81d04 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h new file mode 120000 index 0000000..32e79a7 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h new file mode 120000 index 0000000..61c47da --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h new file mode 120000 index 0000000..16f9d52 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCheckmarkIcon.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCheckmarkIcon.h new file mode 120000 index 0000000..429d4fb --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKCheckmarkIcon.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h new file mode 120000 index 0000000..0a8ba29 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h new file mode 120000 index 0000000..3f7906b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestFrictionlessRecipientCache.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestFrictionlessRecipientCache.h new file mode 120000 index 0000000..8d2b1fc --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestFrictionlessRecipientCache.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionController.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionController.h new file mode 120000 index 0000000..b17a17a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionController.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionControllerCache.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionControllerCache.h new file mode 120000 index 0000000..f54c62b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeActionControllerCache.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxBorderView.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxBorderView.h new file mode 120000 index 0000000..eac03ca --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxBorderView.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxView.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxView.h new file mode 120000 index 0000000..2fe6da3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeBoxView.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton+Internal.h new file mode 120000 index 0000000..894b54b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton+Internal.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h new file mode 120000 index 0000000..1e9ecee --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButtonPopWAV.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButtonPopWAV.h new file mode 120000 index 0000000..3693592 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButtonPopWAV.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl+Internal.h new file mode 120000 index 0000000..89509cd --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl+Internal.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h new file mode 120000 index 0000000..984a2ff --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeDialog.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeDialog.h new file mode 120000 index 0000000..5f2ac3b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeDialog.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h new file mode 120000 index 0000000..efe324e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h new file mode 120000 index 0000000..c29f9ee --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h new file mode 120000 index 0000000..7451999 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessengerIcon.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessengerIcon.h new file mode 120000 index 0000000..6363326 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKMessengerIcon.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h new file mode 120000 index 0000000..b827828 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h new file mode 120000 index 0000000..2d4e646 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h new file mode 120000 index 0000000..c981a56 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h new file mode 120000 index 0000000..e7e13b5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDefines.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDefines.h new file mode 120000 index 0000000..4314dbc --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDefines.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h new file mode 120000 index 0000000..56b9ff9 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h new file mode 120000 index 0000000..8e28a21 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareError.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareError.h new file mode 120000 index 0000000..c4a055e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareError.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit+Internal.h new file mode 120000 index 0000000..b6d1c4f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit+Internal.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h new file mode 120000 index 0000000..4c43211 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent+Internal.h new file mode 120000 index 0000000..15eb00f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent+Internal.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h new file mode 120000 index 0000000..5d14f07 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h new file mode 120000 index 0000000..8e50e05 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h new file mode 120000 index 0000000..c44ae92 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h new file mode 120000 index 0000000..f8b1179 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer+Internal.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer+Internal.h new file mode 120000 index 0000000..7882df5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer+Internal.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h new file mode 120000 index 0000000..30a0dd3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h new file mode 120000 index 0000000..b025b98 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h new file mode 120000 index 0000000..54fbeba --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareUtility.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareUtility.h new file mode 120000 index 0000000..1654e8c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareUtility.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h new file mode 120000 index 0000000..5fe5d63 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h new file mode 120000 index 0000000..18a9aad --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h new file mode 120000 index 0000000..e649637 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h new file mode 120000 index 0000000..3485485 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h new file mode 120000 index 0000000..c11b781 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLink.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLink.h new file mode 120000 index 0000000..3f79bee --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLink.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLink.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkNavigation.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkNavigation.h new file mode 120000 index 0000000..6962356 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkNavigation.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLinkNavigation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkResolving.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkResolving.h new file mode 120000 index 0000000..94cc66f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkResolving.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLinkResolving.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererController.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererController.h new file mode 120000 index 0000000..95067f0 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererController.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLinkReturnToRefererController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererView.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererView.h new file mode 120000 index 0000000..cc00897 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererView.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLinkReturnToRefererView.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererView_Internal.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererView_Internal.h new file mode 120000 index 0000000..fc68769 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkReturnToRefererView_Internal.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkTarget.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkTarget.h new file mode 120000 index 0000000..90a41f6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLinkTarget.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLinkTarget.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLink_Internal.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLink_Internal.h new file mode 120000 index 0000000..dc060b2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFAppLink_Internal.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFAppLink_Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFCancellationToken.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFCancellationToken.h new file mode 120000 index 0000000..0b69486 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFCancellationToken.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BFCancellationToken.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFCancellationTokenRegistration.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFCancellationTokenRegistration.h new file mode 120000 index 0000000..c587ca7 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFCancellationTokenRegistration.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BFCancellationTokenRegistration.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFCancellationTokenSource.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFCancellationTokenSource.h new file mode 120000 index 0000000..d3d5985 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFCancellationTokenSource.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BFCancellationTokenSource.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFDefines.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFDefines.h new file mode 120000 index 0000000..5df18ff --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFDefines.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BFDefines.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFExecutor.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFExecutor.h new file mode 120000 index 0000000..c071e8c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFExecutor.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BFExecutor.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFMeasurementEvent.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFMeasurementEvent.h new file mode 120000 index 0000000..2eb6c11 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFMeasurementEvent.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFMeasurementEvent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFMeasurementEvent_Internal.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFMeasurementEvent_Internal.h new file mode 120000 index 0000000..98b7d06 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFMeasurementEvent_Internal.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFMeasurementEvent_Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFTask.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFTask.h new file mode 120000 index 0000000..5468334 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFTask.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BFTask.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFTaskCompletionSource.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFTaskCompletionSource.h new file mode 120000 index 0000000..c74760f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFTaskCompletionSource.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BFTaskCompletionSource.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFURL.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFURL.h new file mode 120000 index 0000000..df21bd9 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFURL.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFURL.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFURL_Internal.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFURL_Internal.h new file mode 120000 index 0000000..3a5c5f4 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFURL_Internal.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFURL_Internal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BFWebViewAppLinkResolver.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFWebViewAppLinkResolver.h new file mode 120000 index 0000000..bf250db --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BFWebViewAppLinkResolver.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/iOS/BFWebViewAppLinkResolver.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/Bolts.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/Bolts.h new file mode 120000 index 0000000..146ac6e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/Bolts.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/Bolts.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Bolts/BoltsVersion.h b/Unit-2-Journal/Pods/Headers/Public/Bolts/BoltsVersion.h new file mode 120000 index 0000000..0fa0e2d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Bolts/BoltsVersion.h @@ -0,0 +1 @@ +../../../Bolts/Bolts/Common/BoltsVersion.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAccessToken.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAccessToken.h new file mode 120000 index 0000000..a5b3f97 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAccessToken.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppEvents.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppEvents.h new file mode 120000 index 0000000..95c1d00 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppEvents.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkResolver.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkResolver.h new file mode 120000 index 0000000..69c20f5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkResolver.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkUtility.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkUtility.h new file mode 120000 index 0000000..fef519c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKAppLinkUtility.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKApplicationDelegate.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKApplicationDelegate.h new file mode 120000 index 0000000..e163dc8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKApplicationDelegate.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKButton.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKButton.h new file mode 120000 index 0000000..806ec62 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKButton.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKConstants.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKConstants.h new file mode 120000 index 0000000..4c08cc8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKConstants.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKCopying.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKCopying.h new file mode 120000 index 0000000..aa5dc1f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKCopying.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKCoreKit.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKCoreKit.h new file mode 120000 index 0000000..bfffe4f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKCoreKit.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h new file mode 120000 index 0000000..6f019f6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphRequest.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphRequest.h new file mode 120000 index 0000000..524cb77 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphRequest.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphRequestConnection.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphRequestConnection.h new file mode 120000 index 0000000..c6cbbfc --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphRequestConnection.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h new file mode 120000 index 0000000..9960de2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKMacros.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKMacros.h new file mode 120000 index 0000000..f9059c1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKMacros.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKMutableCopying.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKMutableCopying.h new file mode 120000 index 0000000..40cf5f1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKMutableCopying.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKProfile.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKProfile.h new file mode 120000 index 0000000..a9866b1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKProfile.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKProfilePictureView.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKProfilePictureView.h new file mode 120000 index 0000000..6f38799 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKProfilePictureView.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKSettings.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKSettings.h new file mode 120000 index 0000000..7edc38f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKSettings.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKTestUsersManager.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKTestUsersManager.h new file mode 120000 index 0000000..5813f89 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKTestUsersManager.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKUtility.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKUtility.h new file mode 120000 index 0000000..efbfaf1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKCoreKit/FBSDKUtility.h @@ -0,0 +1 @@ +../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h new file mode 120000 index 0000000..2858225 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h new file mode 120000 index 0000000..7a07eea --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h new file mode 120000 index 0000000..fcd06fa --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h new file mode 120000 index 0000000..05205f6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h new file mode 120000 index 0000000..fb21852 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h new file mode 120000 index 0000000..ffe74ad --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h new file mode 120000 index 0000000..725e375 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h @@ -0,0 +1 @@ +../../../../FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h new file mode 120000 index 0000000..67d7080 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h new file mode 120000 index 0000000..0e81d04 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h new file mode 120000 index 0000000..32e79a7 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h new file mode 120000 index 0000000..61c47da --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h new file mode 120000 index 0000000..16f9d52 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h new file mode 120000 index 0000000..0a8ba29 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h new file mode 120000 index 0000000..3f7906b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h new file mode 120000 index 0000000..1e9ecee --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h new file mode 120000 index 0000000..984a2ff --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h new file mode 120000 index 0000000..efe324e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h new file mode 120000 index 0000000..c29f9ee --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h new file mode 120000 index 0000000..7451999 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h new file mode 120000 index 0000000..b827828 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h new file mode 120000 index 0000000..2d4e646 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h new file mode 120000 index 0000000..c981a56 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h new file mode 120000 index 0000000..e7e13b5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h new file mode 120000 index 0000000..56b9ff9 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h new file mode 120000 index 0000000..8e28a21 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h new file mode 120000 index 0000000..4c43211 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h new file mode 120000 index 0000000..5d14f07 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h new file mode 120000 index 0000000..8e50e05 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h new file mode 120000 index 0000000..c44ae92 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h new file mode 120000 index 0000000..f8b1179 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h new file mode 120000 index 0000000..30a0dd3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h new file mode 120000 index 0000000..b025b98 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h new file mode 120000 index 0000000..54fbeba --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h new file mode 120000 index 0000000..5fe5d63 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h new file mode 120000 index 0000000..18a9aad --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h new file mode 120000 index 0000000..e649637 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h new file mode 120000 index 0000000..3485485 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h new file mode 120000 index 0000000..c11b781 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h @@ -0,0 +1 @@ +../../../../FBSDKShareKit/FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Manifest.lock b/Unit-2-Journal/Pods/Manifest.lock new file mode 100644 index 0000000..06c3be1 --- /dev/null +++ b/Unit-2-Journal/Pods/Manifest.lock @@ -0,0 +1,33 @@ +PODS: + - Bolts (1.3.0): + - Bolts/AppLinks (= 1.3.0) + - Bolts/Tasks (= 1.3.0) + - Bolts/AppLinks (1.3.0): + - Bolts/Tasks + - Bolts/Tasks (1.3.0) + - FBSDKCoreKit (4.7.0): + - Bolts (~> 1.1) + - FBSDKCoreKit/arc (= 4.7.0) + - FBSDKCoreKit/no-arc (= 4.7.0) + - FBSDKCoreKit/arc (4.7.0): + - Bolts (~> 1.1) + - FBSDKCoreKit/no-arc (4.7.0): + - Bolts (~> 1.1) + - FBSDKCoreKit/arc + - FBSDKLoginKit (4.7.0): + - FBSDKCoreKit + - FBSDKShareKit (4.7.0): + - FBSDKCoreKit + +DEPENDENCIES: + - FBSDKCoreKit (~> 4.7) + - FBSDKLoginKit (~> 4.7) + - FBSDKShareKit (~> 4.7) + +SPEC CHECKSUMS: + Bolts: 805a4a87413e49d4a0c2b7d469084cbc46b09342 + FBSDKCoreKit: eb580bfc2040ad44f4c0b4f4d0befb1d35bce59c + FBSDKLoginKit: 01bce8dd3f3a26a023b0ba4ffdde7ef5062889fe + FBSDKShareKit: 1f927bb05e4d36a99d5d5bf2f4b1ff294ce3e15c + +COCOAPODS: 0.38.2 diff --git a/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj b/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 0000000..0797aea --- /dev/null +++ b/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,2091 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 00FA0FE05D9A1D51D0B9DAB959758414 /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = D6BA663394EED0BB2FE15D361CEF0CC0 /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 02967D3BF0AE64AAED377E0BD9F0111B /* FBSDKSharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E96A05C4068F79754A471DFA28BAAA5 /* FBSDKSharing.h */; }; + 02CE817C10D60DB802D528770AECDD02 /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA70E0602DF174C01CBE4AAC4B2FDD83 /* FBSDKWebDialogView.h */; }; + 0465F0E4BECA2CE5C64F1251A7BA1922 /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = AD6CB1A023BD68BC921696ADB8AB358D /* FBSDKMath.h */; }; + 048C3C60838C918CC1E9EDA7A39FEADB /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EF36FE5802B718C77F58F0A55F941FAD /* FBSDKTestUsersManager.h */; }; + 06A5A17665E162F635DACD2B0625299A /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = 26F24911943B64E9095819A493DC1EF7 /* BFAppLinkTarget.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 06F3235CA26951EF727E3C1FDA0A06A7 /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 67BBE784A2801F01F65EAF698A7A4C65 /* FBSDKKeychainStore.h */; }; + 07729073627D94E620F85E370167BE72 /* FBSDKCheckmarkIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = A4A098339793E5BCA2444DB32B7612F4 /* FBSDKCheckmarkIcon.h */; }; + 077A33F1B3D52FA2D2C18147CE033D3D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED3ABC29606CB6F9337BB302194076AB /* Foundation.framework */; }; + 086A67663ECD9FDD0F048DC84683E298 /* FBSDKShareOpenGraphObject.h in Headers */ = {isa = PBXBuildFile; fileRef = B0F5B126E4385B53E9C73775BBC036F5 /* FBSDKShareOpenGraphObject.h */; }; + 09062BEA7F9F32BA8461FCB10A833BBA /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = C6C55AB8CC2B8BA526A40CE4AE0092BD /* FBSDKKeychainStoreViaBundleID.m */; }; + 0AB27E0C4D053AC65C9732DB1BB11B3D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED3ABC29606CB6F9337BB302194076AB /* Foundation.framework */; }; + 0B53C42D59A3930785AFF339A0CAF0D9 /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = CE51C4347F37793614B7D2FE3580EA38 /* FBSDKAppEvents.h */; }; + 0D33D8B56477808D44FB51F1B5178A16 /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 90AC4DD014072A65EE77000860896177 /* FBSDKAccessTokenCache.h */; }; + 0DF6A2FF0C411278A2A3F34AF834CD77 /* FBSDKAccessTokenCacheV3.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D28A8973855B42B7E0B94F7F2E7F679 /* FBSDKAccessTokenCacheV3.h */; }; + 0E4C46F8ADD580C0AFE225BBDBA64D83 /* FBSDKLoginManagerLoginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = B79196C5F88B102B98CC926632FA54C5 /* FBSDKLoginManagerLoginResult.h */; }; + 0ECE24B940F9019FF559DF6435234863 /* FBSDKAppGroupAddDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 37D367937646E4E05AD9519B21B1F566 /* FBSDKAppGroupAddDialog.h */; }; + 10285394D2429F0345EEAE31AA791DE8 /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 157A1552C1C00504C4E58FB57CF5F9EA /* FBSDKCoreKit.h */; }; + 111DE8B9C2B39A3118005168EE06ED40 /* FBSDKLoginManagerLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F23A8CFF0A5178FFE437F3900690E4D /* FBSDKLoginManagerLogger.m */; }; + 15CB8B5F3E5C004528DF130D5F74280E /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = D83F322AAF71062208A8ED107E20BF12 /* FBSDKPaymentObserver.h */; }; + 16163FA266DAD8321C75374755AA940B /* FBSDKLikeControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D2C8E2D65E652FD1F3E1F311E40A83B /* FBSDKLikeControl.m */; }; + 167B40D0426290E0222F4E484A61847C /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = 57875897B510F5382AD775C0A28734A2 /* FBSDKProfilePictureView.h */; }; + 172CB4824EAF09637FD6F2DB40BB2D40 /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BFC2409C44B8CD69A6C03A63F32F7CA /* FBSDKGraphRequest+Internal.h */; }; + 173FD61B3C3D86AD287305F713A7FD1B /* FBSDKLikeBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9650DB5BE3E3803B05EEF2BA728FD08A /* FBSDKLikeBoxView.m */; }; + 17E9812BBA8F1D9195470696536D49E1 /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 02865F67BBD6040226CBD1FDBA29F5A2 /* FBSDKProfile+Internal.h */; }; + 1812C122239FADE20B76682591144642 /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F11E9B9214843E4C733658288B46F50 /* FBSDKProfile.h */; }; + 18C647BF58293362753766B94268A2E7 /* FBSDKLoginKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F25867AF7B57AE5CAFF6A7A97011505E /* FBSDKLoginKit-dummy.m */; }; + 1932B23ECC778C829EA995A6F74F5D5B /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = AB8EC144295EC6E09242AFA1DE8FBB93 /* FBSDKWebDialog.h */; }; + 195D0B36E067E6836525EC864989DCFF /* FBSDKLikeObjectType.m in Sources */ = {isa = PBXBuildFile; fileRef = E523319DE2F5CBA2664EF1861CAE8385 /* FBSDKLikeObjectType.m */; }; + 1A7EA98C986EAC775428C6F2E3CF145B /* FBSDKLoginCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = EE77E56FA0FD8571B90F7293F8A6CA4E /* FBSDKLoginCompletion.h */; }; + 1A9540242875568483F093F9024171FC /* _FBSDKLoginRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = ED654A2013434F730212951BE3CDF95A /* _FBSDKLoginRecoveryAttempter.m */; }; + 1AA02F1D34B3617DE8A640A0CE1DACEB /* FBSDKShareUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 44B2E26031F3FC70570B8D0355B9107A /* FBSDKShareUtility.h */; }; + 1AC335060DAA36EE9CC7A9C8FA74CFFE /* FBSDKLikeActionControllerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9690B619FE2AAD1DC6925B4C2698A069 /* FBSDKLikeActionControllerCache.m */; }; + 1B1E8C274800F7ADFE4498580F6799DE /* FBSDKLikeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = FFDC8DE8F321A7C08F3D315635B2B056 /* FBSDKLikeDialog.m */; }; + 1B7595D44BBEF7C62FC58770579051DA /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AE311A8C1894882C4A2DCB8EE2013E8 /* FBSDKCrypto.h */; }; + 1B87820A977924BF9D822310F62C317F /* FBSDKAccessTokenCacheV3_17.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D663126B6E34DDA8860BAE880B56139 /* FBSDKAccessTokenCacheV3_17.h */; }; + 1CD8D6D26B1EC48DA95F1E213A68B8C9 /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 756E20E698838AA3F512B572C052F12A /* BFMeasurementEvent_Internal.h */; }; + 1D6728A1DEC389747A8495B24C4A672D /* FBSDKShareOpenGraphAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E2C28D858D12923C51D6A59FF47FAFC /* FBSDKShareOpenGraphAction.m */; }; + 1D9B660498B96AFADC6BD055D94E6269 /* BFAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 210A8D5F5D9E18273157AA6FA4DF1616 /* BFAppLinkTarget.h */; }; + 1E252EBF9D39E9E6C2AAA46DDD8A58EE /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = B3B6ED0B1490827E42BF16379DC889D8 /* FBSDKMaleSilhouetteIcon.h */; }; + 1E8B8261F4EAD05CD057F4714125D009 /* FBSDKLoginCompletion+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 43170513EC0C6AEAEAE625758B1656D2 /* FBSDKLoginCompletion+Internal.h */; }; + 22D8E54CF9C32947CE1B898D398B9960 /* FBSDKShareVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = FBD42041AE768C9FC5ED4984163A2D43 /* FBSDKShareVideo.m */; }; + 22F938415D14269663488FFF723F5D8D /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = F970F2C40DCD372EE55CFFE828E80CAE /* FBSDKPaymentObserver.m */; }; + 240F2B6D6C9E9D561598B3B5DC5E0D47 /* FBSDKShareDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 739A8FE1539F5F0119E36821784CB8EE /* FBSDKShareDialog.m */; }; + 253008BA1D1380B9F00039AD006DC5E9 /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AB293581B2CC2E15600E1001DBBA77B /* FBSDKCloseIcon.h */; }; + 25D0C4FA0F58B2B6E3388737FDA80322 /* FBSDKLoginUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 60D814E0C681012497F5E777A131D775 /* FBSDKLoginUtility.m */; }; + 26A5469794638EF2972A7F3D6B0A0E36 /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 23160D89AEAF98B6D83BB6EF3E05310E /* FBSDKConstants.m */; }; + 27482D67BFDB88CDD0E7668C5328EDCC /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 4722FCF8C978A7B204A55D0BF6F34B2D /* FBSDKAudioResourceLoader.m */; }; + 27B5C50C845CB0944C503B035D6011DF /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BAB751FF25D6FB93E08CE08011C84895 /* FBSDKTestUsersManager.m */; }; + 29DE01B3141EC629AF9F713E96A78805 /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 03F85D35C27D1671D1F41676A47CD249 /* FBSDKServerConfigurationManager.m */; }; + 2A4F558F44525BAC6EE6F823DB600240 /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 841EA80357141FB191529428AA4841A0 /* FBSDKApplicationDelegate.m */; }; + 2A6467F8C1AAB711191D5206AF4565D8 /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = FF2AA4084EE7DD2A0CE09C7DE485C764 /* FBSDKAppEvents+Internal.h */; }; + 2CC98680408DDD432D1394C212FAE776 /* BFAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FB1726D1A37BF1BA4F347373EA1F055 /* BFAppLinkNavigation.h */; }; + 2D9204953A03CF4E39CDAB8A7D98F4EB /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 897E8201CCE098369853632C2B3C6896 /* FBSDKAppLinkUtility.m */; }; + 2F446E6B70E9AD1399F977B2FCA41645 /* FBSDKTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A11C49919F9BE6F3A03567D38BE5C1 /* FBSDKTooltipView.m */; }; + 2F5B65C786B12D97BF3FEB32ECEC8057 /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = D598B036F0405E2C2F154346BADBAF5E /* FBSDKBridgeAPIResponse.m */; }; + 31E2E831EB0D5CCEB51B9C1F3D62C9AA /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = CFBCB363EDF2DA2195A76CD54C25DAA2 /* Bolts.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 326E6464B5D07DD06BF0AC33528A6272 /* FBSDKLikeObjectType.h in Headers */ = {isa = PBXBuildFile; fileRef = 2089FF7B2CC0E94D22CE2F8418713448 /* FBSDKLikeObjectType.h */; }; + 344F402E97A64E44A868FFD3911E6110 /* FBSDKLoginCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F375DCDC3AF03A748BF6AE2DE8847AB /* FBSDKLoginCompletion.m */; }; + 349A7C474005969BC5798E2D96B54429 /* FBSDKShareConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A47608DFA1AF84E7AB9DCCF058C78F1 /* FBSDKShareConstants.m */; }; + 35D34BFAFCB107B8A052AF1C7546E661 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = E5DE1E73EB9968D3497F35D73BDB6A94 /* BFTaskCompletionSource.h */; }; + 36B027BFBD5E91EBA7EBE9B430CAEBAE /* FBSDKAccessTokenCacheV3.m in Sources */ = {isa = PBXBuildFile; fileRef = F782EBF11CD0B444B301A6D62DB3982D /* FBSDKAccessTokenCacheV3.m */; }; + 37866BE47097F3430E848333A7DC7C52 /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B8DF220992413B87518E5E85B18E32 /* FBSDKAppEventsStateManager.h */; }; + 37A2F9456A8F405373ACBFAE17371CB6 /* FBSDKLikeBoxBorderView.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CB010DF4304781A764957D945B27F3 /* FBSDKLikeBoxBorderView.h */; }; + 37ECBAB9AF588A5875B245828942E9EB /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B3F8F8D1757081C79044C13664E9E9A /* FBSDKLogo.m */; }; + 39C5C564C02CF5ABB08BE513AFBF9C1F /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4669EF085FC9747EEF39F5EB5BDA05E0 /* FBSDKCoreKit-dummy.m */; }; + 3A6FC29C2DC181498FC8CD8DFA062A04 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = D34AA74CF0863A8C0BD1947CC4821F52 /* FBSDKBridgeAPIProtocolNativeV1.h */; }; + 3B495133DCFC7C6770A66ABD657A3759 /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 68E38006C5CB85E78FC2D6A4FA68A3D9 /* FBSDKAppEventsDeviceInfo.h */; }; + 3C0BC486782A950DF6222FB6631E1EBC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED3ABC29606CB6F9337BB302194076AB /* Foundation.framework */; }; + 3DAA93F17722BDE26B1EF1720449F883 /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CA71C2FA19AA4DF65FFE25558510C11 /* FBSDKBridgeAPIResponse.h */; }; + 3DDC0185933F124931CE4962AABAB04E /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 958A88B9D72E9934EADC8C9179B0E455 /* BFCancellationTokenSource.h */; }; + 3E3A02D5AA0C2AA0E5C6BAB31A195D91 /* FBSDKLikeBoxBorderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EADBDF1DFD27B8D0B09D789CE9B66A6 /* FBSDKLikeBoxBorderView.m */; }; + 3E8C87F48E3786E177DE28E61F4E57AB /* FBSDKLoginConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 0536CFD0FB595B94B070BF9F406E1C6E /* FBSDKLoginConstants.h */; }; + 3F64A64ACBA4C6FD46BCFBC3AD4F8727 /* FBSDKBridgeAPICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B58B12D0098350BFEF482A1274F3C4D /* FBSDKBridgeAPICrypto.h */; }; + 3F7EC364751F75C1A0A04250BFED217A /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 39DDF6968CBE57929F3632EACEAB2610 /* FBSDKAudioResourceLoader.h */; }; + 407FB0E1E5BB584D59B0E4BECAE1EA17 /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = DC55CDB4CCC04F5A9F06E71FFE785F36 /* BFTask.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 41B9DD20AD35BD9BBAB55C2B9B09BF80 /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AAFA5AFB7771A50B2E04EE16097AE2E /* FBSDKConstants.h */; }; + 41FDC6A65A60AEEDE0F52ACCE1C8B6AC /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 86B1B9D4698C595DBEBFF71FBA796D03 /* FBSDKMaleSilhouetteIcon.m */; }; + 423330C6B01AD37FF96720AC2767E01A /* FBSDKLoginManagerLoginResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CA34076F58016A8D344DF051264EC600 /* FBSDKLoginManagerLoginResult+Internal.h */; }; + 43FE98D2FD3B83F90B0066D11CC7468A /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = DF75B30DC0865920AE9E1B19F32AD80B /* FBSDKServerConfigurationManager+Internal.h */; }; + 4420194CD9E598D9E8831F5F1E471CC1 /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = A71B981C41660472869BD0AAB04382C0 /* FBSDKGraphRequestMetadata.m */; }; + 4669B1FD4393A31136FECE7E33E2E615 /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = 06D6B35A2ACE17598D198FFFA920B997 /* FBSDKError.h */; }; + 467C3ABFCF99EFCEF7FAE6A1B80F12C5 /* FBSDKShareButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 8725E71411518E68EEDB1C8286EE55BB /* FBSDKShareButton.h */; }; + 46907396399AC7ABE8902C4415F298F6 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 41CFAF1E1E62AE0A66D11ADAABFDD595 /* BFExecutor.h */; }; + 46BEA5AD8A3D422A96D95DC0E4257939 /* BFWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EB290C8F6E8E6E8FC74EEFAD135259E /* BFWebViewAppLinkResolver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 49421026FE47248CF4AF6EF3C5D13494 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED3ABC29606CB6F9337BB302194076AB /* Foundation.framework */; }; + 4A3C09FA15FA477592FD19B04B6DAA54 /* FBSDKLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B0A365A7833E9C747150256183939CF /* FBSDKLoginError.m */; }; + 4AEAD0A6D5815DF782ADCCD822D99082 /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = E88798669932F94A6C3A3DC258F34AE9 /* BFAppLinkReturnToRefererView.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 4BFB9EC48CD7CE6C71367B494F82D892 /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D62A18D54FFB9AA33D848791F2B9A0 /* BFAppLink.h */; }; + 4C70CDE945E9DA71BF1C90DFC59F57F7 /* BFAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = C03A3298B33198FAA942973584DF194D /* BFAppLinkReturnToRefererController.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 4CD7334521294D0CB39186630A7B34DF /* BoltsVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 28C6F74CFBBB5E9EDDE2A8BC53A897B4 /* BoltsVersion.h */; }; + 509F398D211295351837BB6AC960D4FA /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C1908C17C35F6446698AE8C14A7A62E7 /* FBSDKAppEventsStateManager.m */; }; + 5116B8A961D5089C882E9AC987F2ADE9 /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DDFB93965E515FAEA6FB7A51182E549 /* FBSDKBridgeAPIProtocol.h */; }; + 514394EE53FCBE06133BEB1BD924B935 /* FBSDKLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FA62565BBE412C30069502FF0CC51DF /* FBSDKLoginManager.m */; }; + 530CEAF78868367987ABD76335D3CC8A /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D104BC85E9A4726C0D1B381B549BABF /* FBSDKErrorRecoveryConfiguration.h */; }; + 532F567B13329D5E08A1B4CD0E0CF948 /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 72918635A11FE88E26388BB52C7A8F7A /* FBSDKApplicationDelegate+Internal.h */; }; + 538C67D301EE9960A461E12E29DC104C /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = B70E4B942E4F5FFDC75D62D5A35A3A59 /* FBSDKTimeSpentData.m */; }; + 542A4EDD600F5D4F80E88E64F8348755 /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 18686D428534EFB249C7C2B72191F907 /* FBSDKUtility.h */; }; + 54734BA378F71909763FE9B12579CC3F /* FBSDKLikeControl+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C4AB5BA93BA69576C5A0A741C5004F05 /* FBSDKLikeControl+Internal.h */; }; + 556B4BEE4477186865CB420D799EEB56 /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = CE853CD10ECD55C2CF0F9E4CC5C3118D /* FBSDKTriStateBOOL.h */; }; + 56AE9578D5A1EE4FE77E255E49E364FF /* FBSDKSendButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 12EBCA469BCC9A652E162B87170B3030 /* FBSDKSendButton.h */; }; + 5750590682AA775047A6F7793463BADE /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = FE3F695A6D43B329CB5E37EDF6B476D5 /* FBSDKGraphRequest.m */; }; + 599A60532E54BFFD2ACBF2723F447DFA /* FBSDKMessengerIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 68926D1EF195CCE0C2B10D9C7EA6D834 /* FBSDKMessengerIcon.h */; }; + 59E5F7CFD14C3487F37C1D17EFAB8016 /* FBSDKShareError.h in Headers */ = {isa = PBXBuildFile; fileRef = C88A57B8E059E22B232E9A1336DCB6C3 /* FBSDKShareError.h */; }; + 5A40CA30F0B7BDCE37E9F1FAF3296215 /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A98A92B293F049F7956A464E5A69C36 /* FBSDKWebDialogView.m */; }; + 5B646A14E78903975331A483A9491A61 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = 7325C6E7A2B3643DE8F984C17DF372D7 /* FBSDKBridgeAPIProtocolWebV2.m */; }; + 5C20FD4ED2A23F07C999818F3BA49E71 /* FBSDKSharingContent.h in Headers */ = {isa = PBXBuildFile; fileRef = DF9B508AC2E512E2315EE3967D33A86C /* FBSDKSharingContent.h */; }; + 5C333A12F6DEE056AAE24F1F3ECD1AEB /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = E557465C83E744378BD9E99E95EE5177 /* FBSDKDynamicFrameworkLoader.h */; }; + 5CEF0D94936D45B939E630AF012A65CF /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = DEFB08AC2015F546E03A7EBE7B531F87 /* FBSDKButton+Subclass.h */; }; + 5D00B3FD1E10CA8314EE7B2E6F639AB7 /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = BE01B3E5B1C99EAC2141DD5F8AB29249 /* FBSDKGraphErrorRecoveryProcessor.h */; }; + 5E1E334836A0290430ED7B0F88616D18 /* FBSDKAppInviteDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 924C84F16E12DF079D8940F931F315CC /* FBSDKAppInviteDialog.h */; }; + 5E56B197B3451E124FB0B19972703BD1 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = B41F54859F94464A7063BAD8F5DEEA40 /* Bolts.h */; }; + 5E711151377B9E5382ABE8C714008139 /* FBSDKMessengerIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A95DEF7BEDE8726F9906E6535257C80 /* FBSDKMessengerIcon.m */; }; + 5ECB96604E6A661FABCDF90186CFAB9F /* BFWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = F7A0AE448F9342C2274615F8B33139C7 /* BFWebViewAppLinkResolver.h */; }; + 6212E3FF00DD6A2AA02CE34D9BD2334D /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = 4224206215E4AE2302FDC96A58E94814 /* FBSDKTriStateBOOL.m */; }; + 622B46A901E22E5D91BB3C90DE9CDFCC /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = B1C83C2BB6E10A770B424DDCA045A3DA /* FBSDKMath.m */; }; + 6334BBBF5DFE71A39F4B78F452EB3B16 /* FBSDKLikeActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E629243AE4F868C8E75AC372D1DEC6A /* FBSDKLikeActionController.m */; }; + 635D4231CBC6EB7F6F55E68F921AE7DA /* FBSDKLikeBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E20D900533A9FD00F2DC7A1D0797CA4 /* FBSDKLikeBoxView.h */; }; + 63871AB3E42751D51363EE4D42324D94 /* FBSDKLikeControl.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D0AE422908565AD433E41A1778C632 /* FBSDKLikeControl.h */; }; + 6397F66C8ACEC3576BA93356FE55A070 /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 165375EAB1DC28C393658A5139DE1C57 /* FBSDKBridgeAPIRequest+Private.h */; }; + 63CC62BCC070A6BF1BDEC844E6E201FC /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B6EB12A21506DEFAD3D1AC35360E429 /* FBSDKTimeSpentData.h */; }; + 63FA668AF7EEB9D054D1B49A2B6C7FD7 /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D27D517A8FA7ABC01A523D4CC9BF059 /* FBSDKAppEventsUtility.m */; }; + 6445E957696C984621418F36BC830C57 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ED2A1728265E00DF4FCBB52224C6768 /* FBSDKBridgeAPIProtocolWebV1.m */; }; + 64489CCAD159DF9E9E7A54E2FE713EF2 /* FBSDKShareAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = C2BBB16B19727EFA6001D8DA5BFDAE63 /* FBSDKShareAPI.h */; }; + 64775268853C467B962519877F2B4849 /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7021140A61A89A7065788EF7F6FE9A25 /* BFMeasurementEvent.h */; }; + 64F899D82FC4BB6ECB8532DC080A6F50 /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B5BB805709FFB6878A293945C7DD6EB /* FBSDKApplicationDelegate.h */; }; + 6515776E0BD305B2124402129A1C1B20 /* FBSDKLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0575E3793244EA718CE0007D35E83183 /* FBSDKLoginManager.h */; }; + 66521FE3823C4D51B4803BEDB1B6569F /* FBSDKLoginTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 91D245F8CA4CBBB78697B00434888AAB /* FBSDKLoginTooltipView.h */; }; + 66B869BCC4227C5BE116BF12FDCD8E13 /* FBSDKShareKit.h in Headers */ = {isa = PBXBuildFile; fileRef = E9F08741DEF6A1D2B1AC19BDAA8B851A /* FBSDKShareKit.h */; }; + 67604095ED041F533A408815BB02A6E2 /* BFCancellationTokenRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 075B616D3A97272E3EADC31EADC87E6D /* BFCancellationTokenRegistration.h */; }; + 6ADEB932DF2052B403A8081F7F6FB6FD /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A3FFE114934342A6293CAA369A5684A /* FBSDKGraphRequestPiggybackManager.h */; }; + 6BB2309BEFAB49815750D7EFA142AD47 /* FBSDKAppGroupContent.m in Sources */ = {isa = PBXBuildFile; fileRef = E777FE88F6ABED3F476963B5B7D5C3C1 /* FBSDKAppGroupContent.m */; }; + 6C8783ED1C88B44C9E3D1790CFE41826 /* BFDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 20CCC4BC67725A4015A7A848B16ED671 /* BFDefines.h */; }; + 6E447AD7EC572B2C26DEB819F352E8FB /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = E4742C855FF14D3374DADBC22D0B3626 /* FBSDKAccessTokenCaching.h */; }; + 6E8B990B944235DC3ECAC6D925DB2C8C /* FBSDKURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C99BF979526D0E1A3D9A5677F3A18A6 /* FBSDKURLConnection.m */; }; + 6F5B7115A39E3C475866B1EA0D5AD5AF /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C592CC7FBD1BF17DD1A484916AA7E85 /* FBSDKSettings+Internal.h */; }; + 700CAB9C03DEBA19C44BD5E8D0F2A3C4 /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 16E3A15FF65AF85ABCD42065EAAAF029 /* FBSDKServerConfigurationManager.h */; }; + 7153C03C230E494E41AF946C8FE45A4B /* FBSDKShareVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CBBB605F74764838E88897E88411957 /* FBSDKShareVideo.h */; }; + 71C5F8270B32558033282502BC3D8A42 /* FBSDKLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = 13FF75A9C1FC86B8BB017906047CD763 /* FBSDKLoginError.h */; }; + 72AC09070892237ADC0AE8C2876565AA /* FBSDKAccessTokenCacheV3_21.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E2113F2BAA1CC96FE4BEBF42FE4C415 /* FBSDKAccessTokenCacheV3_21.m */; }; + 73A8CB489961CC597812CB33A21E25EB /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E6BD5EA50424CA24CA7148B1E4A106B /* FBSDKGraphRequest.h */; }; + 73B2935A00AEA602158F897267556E86 /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = A52D1235E783D39988D2B6E470ADDA7F /* FBSDKSettings.h */; }; + 74E5BDDFB7CB47CA66A9A0C5A80BC104 /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D227F15B3C39C8F240799FC97C03FC7 /* FBSDKProfile.m */; }; + 751995A70FBC691A9848C197D354D3F9 /* FBSDKLoginManagerLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D42936E332BFFE8C7AEA60379CAA0CA /* FBSDKLoginManagerLogger.h */; }; + 752DE38A344B49BBAEB857E0EB978743 /* FBSDKGameRequestContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A44558D108D044EF825B0B6D60677E9 /* FBSDKGameRequestContent.m */; }; + 762A6D233F9ECF033FF6A93EE8D1B312 /* FBSDKURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B6A3059AD3E528BC8797D2FC76256C7 /* FBSDKURLConnection.h */; }; + 7667B428B685BFA7941575697E3FD591 /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FF996A5E210707A84723CEF66C72615 /* FBSDKViewImpressionTracker.h */; }; + 76AD1FAA34AD4CA2BD3F7C18911BFC30 /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 26DE794F5D70A3E6AA3856E8B437F8A1 /* FBSDKErrorRecoveryConfiguration.m */; }; + 76C0743B4B421043366A6302A19A16B3 /* FBSDKShareVideoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = C189A94CF246B97BF2987B6E1D8D19A2 /* FBSDKShareVideoContent.h */; }; + 76CE6EAA24A997F35EE30A2085F5B4A5 /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 398C73EFC085AF867FD191360CA9E692 /* FBSDKBase64.m */; }; + 76D582E94A30659780B659442279237E /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D2532E23A345066E6895AB5BFA257B95 /* FBSDKGraphRequestDataAttachment.h */; }; + 783DDF2DD53195D9AC1863EB6095BA29 /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 08246BDCF7BCF08AB9C89B6EC23B82F1 /* BFAppLinkReturnToRefererView_Internal.h */; }; + 786FCC431FF021DE2922004A00A4ABCA /* FBSDKSharePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E40E6E3F7E645FF915A402B90C5FC /* FBSDKSharePhoto.m */; }; + 7969A4428697F074353829C5125C0B0E /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 942B56873727FBE84A29CD08DC9DF625 /* BFCancellationTokenRegistration.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 7B2C42E4C07416AF7B0B47A94C5D449B /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = F406E6A99876CF2EAA128E3273EA1168 /* FBSDKAccessToken.h */; }; + 7B85EF9B84423C92EE09DC21CDFAE27C /* FBSDKLikeButtonPopWAV.m in Sources */ = {isa = PBXBuildFile; fileRef = 17CB7B06981F44E91DD1BCD38D59103C /* FBSDKLikeButtonPopWAV.m */; }; + 7CE6D5210A69563E538E075CF0C96C83 /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EE2EF71BA2F3066A6E38404F4C6E5BB /* FBSDKBase64.h */; }; + 7E169254B8EFFB64AE77877D4ACC5752 /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C1C914E1A584C53FF0F2FF1FA95D8D97 /* FBSDKGraphRequestPiggybackManager.m */; }; + 7EE7F793B552F7D4781DBEBB3FA9A422 /* FBSDKSystemAccountStoreAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A8296B0778C8F6FF86E096891EC3330 /* FBSDKSystemAccountStoreAdapter.h */; }; + 7F63B791432A0A4F438C96CD7E0CD9BC /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 79B5D96C4AD1BAD8C5A16095FE40D904 /* FBSDKGraphRequestMetadata.h */; }; + 80E5B1D10F29D06CA8F17EC6D8D3F5AA /* FBSDKAppGroupAddDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = E01F50F6336774FE25601285EEF01EE5 /* FBSDKAppGroupAddDialog.m */; }; + 81147666D0A1B53CF71F2DEDC9D6A067 /* FBSDKLoginManagerLoginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 543A2D9E4374BEADC0C923E0AEFCE01A /* FBSDKLoginManagerLoginResult.m */; }; + 8226E400E3E52E1D55BFA73458A980E7 /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = CCF95C1DF1520BBB95BB1817504B8776 /* FBSDKError.m */; }; + 822DB121B5BA73535DE85FCC300706BC /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 35F0D9C7E4A77DC844319010E2664C26 /* FBSDKContainerViewController.h */; }; + 82A86E910E3E517AEFA5E72CFF5712AD /* FBSDKLikeActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F5D9A88B97412C115AF0CFCA999F8C2 /* FBSDKLikeActionController.h */; }; + 82C4EF653777E50D349F845C3A147749 /* FBSDKGameRequestContent.h in Headers */ = {isa = PBXBuildFile; fileRef = DB675133B40BF7554858A2DB108E8BFF /* FBSDKGameRequestContent.h */; }; + 83224CF6EA0FE34F75744507ADF75FD2 /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = C0BF39E0E35CD7253485DDB425C68004 /* FBSDKSettings.m */; }; + 83E613CF96D388F4BAB48941647A294A /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = C39716FEDA3645018E76AA83F2EC2FD6 /* FBSDKAppEventsState.m */; }; + 855A62F1C870083E9CD8136DAF729168 /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D24677F8860BB996C1BE057AFDAE111 /* BFMeasurementEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 86CD43D3731553C5A3ABACC389FC1E0C /* FBSDKBridgeAPICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 25C81CF10A1B913E3ECE5AE4BC865122 /* FBSDKBridgeAPICrypto.m */; }; + 86E1F443BB682D0F2A9FCE4C3D4F6B6F /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A029B649640C1353F893551FE5BEA9F /* FBSDKMonotonicTime.m */; }; + 88CF8FD178995FC2DA3F5D289D6F0873 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = ADA0E0868E9C002ACAA9EFBEAA6C7349 /* BFCancellationTokenSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 890B1F7156ADB0AB7BE1FA6A95575362 /* FBSDKShareLinkContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B6C469BF1DF1A22E1734404841744335 /* FBSDKShareLinkContent.m */; }; + 89A9445D0396D959926D55E3FC6CA06A /* FBSDKGameRequestDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = CE22ABAF0BB23620853203C50BFB6759 /* FBSDKGameRequestDialog.h */; }; + 8ACE7F123E09ED0A01F95357C99AE282 /* FBSDKShareButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 48B7ACF3FD17DCB8BD8D200A9067137C /* FBSDKShareButton.m */; }; + 8B622D2B8F97CB71EE1273AD81A43343 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 002664079DFD68B6479C6AB0F0232180 /* _FBSDKTemporaryErrorRecoveryAttempter.h */; }; + 8BC46BEC754DD9900B8B3F76317A3244 /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 2274A950D07549AC3A4D354548562493 /* FBSDKColor.m */; }; + 8C6EFE905F15BE56E8408B5D5D6EF4A3 /* FBSDKLoginTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = CB2709395EFC37B68B84452B8B52D2FA /* FBSDKLoginTooltipView.m */; }; + 8C9FDE665A8D5B02FC558942B7782E56 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BE2BA427F26BC5B28DC6D9605083C58 /* FBSDKGraphErrorRecoveryProcessor.m */; }; + 8D36023B3040CF604EE9B5E9AB1488D2 /* FBSDKShareDialogMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5111C7A616531A62E55A8FC7C6C72498 /* FBSDKShareDialogMode.m */; }; + 8E43998099C63D2A9D3B8069D52D81DE /* FBSDKMessageDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 00A650A22497211EEC0B83849E6FA811 /* FBSDKMessageDialog.h */; }; + 8E85C6D1BA82C015543BF6647AB81363 /* FBSDKShareOpenGraphValueContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = B516688D51560D55EF42ADE2FB6AA4AE /* FBSDKShareOpenGraphValueContainer.h */; }; + 8EB23BAAD63A613F57DF8CD3C72B7259 /* FBSDKShareDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 88875A5B7AE372A96E9961E4551A6C07 /* FBSDKShareDefines.h */; }; + 8FB2338CD7F58B919C02EAC4A23417B2 /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = EA0A354774F149974049A4C2978DCC7F /* FBSDKGraphRequestDataAttachment.m */; }; + 910E7E8C68D3382BBF53091BE45E408D /* Bolts-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D2ABC77A4C6425C22BB540990BB5A163 /* Bolts-dummy.m */; }; + 91C2251DF36023609ABFDE929F850422 /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = A531906FF2DAF6D0F7F834076CBEC4C2 /* FBSDKAppEventsDeviceInfo.m */; }; + 931164E42CFCA82B5C9CED43CC769D37 /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CEC8B35C95959831EE1057B11322CE9 /* FBSDKWebDialog.m */; }; + 93169A6D1E97B3A5CD2CF6DD1AFA5EF0 /* FBSDKLikeActionControllerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DCA2983B324CC477B5B90C4E6EF6536 /* FBSDKLikeActionControllerCache.h */; }; + 943E672E2E8964259A108CFCA62618E4 /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E2CB7869A71090D975E7A675914369C /* BFTask.h */; }; + 9446F878E86942E6AF0487891E865A03 /* FBSDKLoginKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD55E74CE45585A17758C1059634836 /* FBSDKLoginKit+Internal.h */; }; + 948272BE3CAE53C5DDA5000B8A51AEDD /* FBSDKBoltsMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 771E8EB6E927AC1AE9224E750AB1243B /* FBSDKBoltsMeasurementEventListener.m */; }; + 94E2FC6A422448963CEAE61D410E16FD /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C2EF67EB1769993AA0E90FD5B40C0518 /* FBSDKBridgeAPIRequest.h */; }; + 959259BB92C987851AD969FC45E45406 /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ACFCDE2F85688257805323CB7568B51 /* FBSDKProfilePictureView.m */; }; + 95C048BCA333A52658C95DB524B70428 /* FBSDKSharePhotoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = A3F48D508CF9A089F6D2FBD3067DE053 /* FBSDKSharePhotoContent.h */; }; + 961126493126A68DF7656A6C12611CFE /* FBSDKShareOpenGraphValueContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = C082E4FF16E72FFD979AA487D6E60C1E /* FBSDKShareOpenGraphValueContainer.m */; }; + 965BA8F00CE3D6909531A1A75CECA2B4 /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C57395BC9AB5BA1544DDD898B1B9146 /* FBSDKAppEvents.m */; }; + 96686EA3DB6DD21C52CE24586DED9641 /* BFAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 592B052F02115EC6E41AC5B9CB79E1C6 /* BFAppLinkNavigation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 9821757B5F4E33C440DFC1403937F61D /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = EC03B77FB6AEBB7B42B5DDA048688205 /* FBSDKInternalUtility.m */; }; + 98592F12C4012F47B2A972CA886D054E /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 6150512B0D0562C3F6C90F95463621B1 /* FBSDKTypeUtility.h */; }; + 9AD2C1B0B5D075843F4A50DA2F7A54EA /* FBSDKShareOpenGraphContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A1979D48C487FA3EDA1159EF3852F20 /* FBSDKShareOpenGraphContent.h */; }; + 9BBEAB67727DCFD56D431780FE44F80B /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15C51B4DF1030238AF6D7649E82788B5 /* FBSDKContainerViewController.m */; }; + 9C22E4B97819BA5E83843C8385CB00E4 /* FBSDKLikeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 21EBC77612C0C02A1BCC39116437EA23 /* FBSDKLikeButton.h */; }; + 9D9BFBBA2F59972D7E86515C53035F98 /* FBSDKAppGroupJoinDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 066BD5A6D3EB9C54F7FF6EC096EE0937 /* FBSDKAppGroupJoinDialog.m */; }; + 9DF452BA99BA653723EF19F53745D85C /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BFB535A8B4485F7D0DE50127BA902285 /* BFURL_Internal.h */; }; + A05B7BAC0ADC16FE809F6DCABEBEC818 /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 5649742E243B8F68ED6ABBD16F3AD910 /* FBSDKInternalUtility.h */; }; + A1D3061933F687CC2D4732CE09FAB63F /* FBSDKShareOpenGraphContent.m in Sources */ = {isa = PBXBuildFile; fileRef = C57529A9BA3C0D011FCAA5B9F68062A5 /* FBSDKShareOpenGraphContent.m */; }; + A1DE168A12031E69C57F6DC684EFA0D5 /* FBSDKLikeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 7106B5AFA24BAAD954C531BB2060F0F6 /* FBSDKLikeButton.m */; }; + A28F374AB5DF6E8893BD0AC3EDB38AD2 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C9260CF6266A23A17B2C842C283E8D9 /* FBSDKLogger.m */; }; + A4A522C2511616E471BF42C39B51CC2D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED3ABC29606CB6F9337BB302194076AB /* Foundation.framework */; }; + A5BAA576C0CEE292FA3962B08F236DDF /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 472EE8D03187469F99EC5B927D40BA24 /* BFCancellationToken.h */; }; + A5D658E4E7750FE8C4DB6C940440D6C5 /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = C5971F3A2B0D25D55D3B109A7C6871E9 /* FBSDKGraphRequestConnection.m */; }; + A72BFDB0F5E6B612043D662F38375CD5 /* FBSDKLikeButtonPopWAV.h in Headers */ = {isa = PBXBuildFile; fileRef = D6E644B97F6CC42B51B503C2EF1D6C1A /* FBSDKLikeButtonPopWAV.h */; }; + A770DF35E61B676731FA5870E67A812C /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B3806A1B94DBFDDC3984E1C3453BD094 /* FBSDKGameRequestFrictionlessRecipientCache.m */; }; + A81B6899E45E0474D72759E0671E3EEA /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A00FD05BA1219E73100D7E090F01F37 /* FBSDKUtility.m */; }; + A8D3E43445F3B76B2EF512055E638984 /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = B2AFE071DB027CD94877612CFD3D006B /* FBSDKCopying.h */; }; + AA4717F942CA25B414201C18A46FD237 /* FBSDKSendButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 921B4A2DE5C84AE72BF2515994B661FA /* FBSDKSendButton.m */; }; + AD5D1D2FA4043A5E2F4A7125384450C4 /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = DD2D3EA91E3DEECA63A7E8D2F61622D0 /* FBSDKLogger.h */; }; + AD65F98FB86F1F2D102A08AEA878EC72 /* FBSDKShareKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 228E810DDF4A3C7DA3A85A9E2D4A501B /* FBSDKShareKit-dummy.m */; }; + AE08232806308393A562E4908555BA97 /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = AC4DF8AF9C3B56874F7711E6F2D3096B /* BFURL.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + AEB99931D89BD7370042412945D4667C /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 94415A29F6A91534137FF604BCB14AB6 /* BFAppLink_Internal.h */; }; + AFF31C168316FFEA345DCCB873752DB0 /* FBSDKSharingButton.h in Headers */ = {isa = PBXBuildFile; fileRef = F2CC45F6A7650A6695B67A7054C43C61 /* FBSDKSharingButton.h */; }; + B0175E1CC830A5A82913B4A7F0152C0F /* FBSDKTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E12677D5DAFEE12EA3BA1E2055E89F8 /* FBSDKTooltipView.h */; }; + B058FE7A182DC5347E8F65FD5DB9AC2C /* FBSDKAccessTokenCacheV3_21.h in Headers */ = {isa = PBXBuildFile; fileRef = 7575CD22562E2CAF02FF831B37B73C85 /* FBSDKAccessTokenCacheV3_21.h */; }; + B23D927BF8F18FEF89C82761FA2B4BA4 /* BFCancellationToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D5414763D71E60BCDE8CE7AB80B2CC7 /* BFCancellationToken.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B32F7CCC98EB822CCF21FE7303F43841 /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 893AE4BEC580A446CE3ABAEAD7B53BAF /* FBSDKDialogConfiguration.m */; }; + B3BE0C9C5D12D46FF7986661A1F9A875 /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 279F862324C9CEB1307D4D63451084C5 /* FBSDKServerConfiguration.m */; }; + B3F0AFB7BC6557C56B58AF827C0B5484 /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 3686DA8DE42E552A6664A3515098B2AC /* FBSDKCrypto.m */; }; + B52EA95F5243B523B317DF9FEE9F1E22 /* FBSDKShareKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B63D1AD2ED4371D377A70F2324E760DE /* FBSDKShareKit+Internal.h */; }; + B53892E01BE831E973296B75B7EA7822 /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9186B74312AC521E7BBF48001A87F4DB /* FBSDKCoreKit+Internal.h */; }; + B58593A4A44DC201302965C4E75E3EA0 /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ED0E1AC1869827BA4E401AEE8EF913D /* FBSDKColor.h */; }; + B6FF39AE12B24C61E4E63F63329AD042 /* FBSDKAccessTokenCacheV3_17.m in Sources */ = {isa = PBXBuildFile; fileRef = BAD471AA47694836A5869F2C1DA93F88 /* FBSDKAccessTokenCacheV3_17.m */; }; + B7CE8A07ECC3C3F0994183B658C1FBB6 /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = C241898523306A2F36BA957442AECE37 /* FBSDKErrorRecoveryAttempter.h */; }; + B8AD4E788B27F8C035AF410B1C3EB827 /* FBSDKMessageDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 924FEBD3A9C3142529E09988A1AF5D31 /* FBSDKMessageDialog.m */; }; + B9765A071F255916280A2E79F0720FA5 /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E89EBAE854490CCB0C5339A4813E9B51 /* FBSDKServerConfiguration+Internal.h */; }; + B9BFA96DA9A7417DBF08E05811F7608B /* FBSDKLikeDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 84FC51CEFB7A3CAD3C1BD50FBFC5A2C2 /* FBSDKLikeDialog.h */; }; + BA99E18915E6D55C1DDEFAB80BB4ED98 /* FBSDKGameRequestDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = F0F21F7A00DAFE2805355B155B9130E2 /* FBSDKGameRequestDialog.m */; }; + BC3A05425B4E79ED86788327BEE3A453 /* FBSDKShareDialogMode.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB27FC0CB1D4381C0F19C75A5B1FBF4 /* FBSDKShareDialogMode.h */; }; + BCA75F0A9F1A771DC78B1F8EF1EA3A3B /* FBSDKShareDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = FD8213BF5D4E3A775DE2CDFE95B11D27 /* FBSDKShareDialog.h */; }; + BD53A7AA25C4819BD49089938C6C18B3 /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 074F24F3EBCC23154EFFEDC5D0444966 /* FBSDKAccessTokenCache.m */; }; + BDE3E86FAB8FAEB7B9A4E8ACB002CF0A /* FBSDKSharePhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = ADD174C9CB223131CA86CA2808E20A95 /* FBSDKSharePhoto.h */; }; + BE291760D3E5058139FBA34F1168E703 /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = 51572F406F0AFA9A30C97AF6374A415C /* FBSDKGraphRequestBody.m */; }; + BEA74841C7130B61431B7FCC1DC9A187 /* FBSDKLoginConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BFFBA3AC0C02108B7DA60345A7F020A /* FBSDKLoginConstants.m */; }; + BED6A27BF7072DDE75C15ECDEC54865C /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CCAB63AD3B56ABA526AA33F4B072751D /* FBSDKShareOpenGraphValueContainer+Internal.h */; }; + BF8FA8030BF4A7E7C81C845DBF9F66E2 /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = 3196869736428BB66717FE7BFDA19965 /* FBSDKGraphRequestBody.h */; }; + C176728EB7BE2514A1A18D95EF59B9FA /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 21E2EC6DEE56644A5CEFC5F1DD108201 /* FBSDKBridgeAPIProtocolNativeV1.m */; }; + C1D984D893C9B2F151CD01FA53F38FC1 /* FBSDKLoginUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 808CC2D89F4CAACB4CF99EDF5F5B3F24 /* FBSDKLoginUtility.h */; }; + C1E2EE58E2EA7629E26E8CCB79BB17D6 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = 485C58584AC1DB1D243A5A57D0B31866 /* FBSDKURLOpening.h */; }; + C26467C6BEB73B1CA99181DCC5BFB515 /* FBSDKShareOpenGraphAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 7541C21C9026B7882A0CA33D03229333 /* FBSDKShareOpenGraphAction.h */; }; + C4810A644FD861EFB3501D98E71DC4CA /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C4122009F6CCD4958E84541DAFBE9B1 /* FBSDKMonotonicTime.h */; }; + C4C1A3B4D31942461B566C5930B08591 /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 38F0EE39E8FB99923B05946F733FCDE6 /* FBSDKAppLinkResolver.m */; }; + C4F6B361F13A14F17531B0DF4C589D66 /* FBSDKSharePhotoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = F0BE2E93E589BAAD87094107404458C4 /* FBSDKSharePhotoContent.m */; }; + C5E4AF06F8FC98D2C53F1F553EC49DE7 /* FBSDKAppGroupJoinDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B46B41FC5464B48A5B5275DA0C6D3E5 /* FBSDKAppGroupJoinDialog.h */; }; + C6C1716C620893DE14E8439744E41BB8 /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = 804DC229C4E97BF5C05E79781E0F3F75 /* FBSDKBridgeAPIProtocolType.h */; }; + C71ADB1D792D37972836F49970FF7F56 /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = 26339C8E6E8F5A145E0410B33CAEFC76 /* FBSDKViewImpressionTracker.m */; }; + CA5018821A0E860850A7A0664134B997 /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 09F5BB824C951F2045215ED0D7633774 /* FBSDKServerConfiguration.h */; }; + CA7C818918D88860E2609BC9106C9810 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A5B22F878870CE770E0E9B97C28A59 /* FBSDKBridgeAPIProtocolWebV2.h */; }; + CA9558AD7F6AC94824C9C9EF39E0C01B /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 55931A99F538C33CD1E60CBBF28D7444 /* FBSDKTypeUtility.m */; }; + CAE9DB888185C6931D53C05745B82E5D /* FBSDKShareLinkContent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B6F3BB37BEED8098957948DDEC201160 /* FBSDKShareLinkContent+Internal.h */; }; + CDC7BB2EB9E1AFF7F11E4B7E057E4EDD /* BFAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = A944D2DC04BEF6207604DBB76FBB12AB /* BFAppLinkResolving.h */; }; + CF397493647953A85CDF077F0F1F4817 /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7647CEF4963EF72C881A0512B4A106FC /* BFAppLinkReturnToRefererController.h */; }; + CFCB25F51BCA1DEA91F87F71B10504EA /* FBSDKBoltsMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 79C5E77BE16EE3DED6079065F72F3119 /* FBSDKBoltsMeasurementEventListener.h */; }; + D00BF86E482A580D2A97CFC92154F79E /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 7052F61CFA5DBBB1A1F2329AE83EF04A /* BFExecutor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + D033A089BB2224AA3A0156A72B49B3FB /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = 330D9CC147E914E18E2035F5B6441E5F /* FBSDKLogo.h */; }; + D05BD8665A0A93538E3C451535DFE58E /* FBSDKShareConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B2E189F86CFA538D17F926EC1C45AC6 /* FBSDKShareConstants.h */; }; + D1256713DD24A7275D5802A27C631F14 /* FBSDKShareError.m in Sources */ = {isa = PBXBuildFile; fileRef = 63BF64F3A37FC48CF494725985B8BBE2 /* FBSDKShareError.m */; }; + D2E51D4190852D64BB0AA2B49E619BA8 /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = C7C691E993DE2424E1B336A86721F67E /* BFTaskCompletionSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + D374EC2D04FBBA8C2FFB7E58174FCFE1 /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = AC13EFDCE9B8FF9E1CAE5BEBCA2D7C17 /* FBSDKKeychainStoreViaBundleID.h */; }; + D40807D0CD676A9F3013821A756B7743 /* FBSDKShareVideoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A41D002C9FB24CD74E5A6B80176BA2 /* FBSDKShareVideoContent.m */; }; + D4150F08DACC0D4D7D2E2D42E3E1FC00 /* FBSDKShareUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 12D8EA79EFC598C83745B7B3A0BA4184 /* FBSDKShareUtility.m */; }; + D4401D7CDC50F868125D07720EE0080D /* FBSDKAccessTokenCacheV4.m in Sources */ = {isa = PBXBuildFile; fileRef = A876B3147441FD714C84B3F962F228FF /* FBSDKAccessTokenCacheV4.m */; }; + D51AB8E965DECEFDC39A02A1140A342E /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = D9899AB1FB240FC4ECF430207E7A6B41 /* BFAppLink.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + D5290C47C521C3B4E98DD520A05354FE /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D7947DAFEA73B2AEDEE3110BE69C4C3 /* FBSDKErrorRecoveryAttempter.m */; }; + D5453B795872AF7A76DA1F01795E5B36 /* FBSDKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 162FD6F0F18A8A4BD0969AEABB0CC78C /* FBSDKMacros.h */; }; + D72A3BEA9AD7CB2D4C025CD197D7D39C /* FBSDKAccessTokenCacheV4.h in Headers */ = {isa = PBXBuildFile; fileRef = C60FB16C403DE81404C5A483846D5521 /* FBSDKAccessTokenCacheV4.h */; }; + D886FDCCE6C9D581FB54D0279553BC46 /* _FBSDKLoginRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = AEE40C84F20C8B4855574E68B561F586 /* _FBSDKLoginRecoveryAttempter.h */; }; + D8F8C8278B94951DD5F0C4C70DB4E454 /* FBSDKLiking.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A6AB04D37A2DB4DEA04B11CAFFAB82 /* FBSDKLiking.h */; }; + DCBAE86037E81F1497936455B43C9065 /* BFAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A255D4D45C82DE35FE87E3BC6774FD6 /* BFAppLinkReturnToRefererView.h */; }; + DCCBA89A8A2710FF7E054F69EC964911 /* FBSDKLikeButton+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E2D8292478F266CEC5D9B4545F591A5 /* FBSDKLikeButton+Internal.h */; }; + DCFE87B61173D909B11DDAA4F71788DE /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = E08C0F0B4B039E308A51F4526A22E667 /* FBSDKAppEventsUtility.h */; }; + E1F83DC0FE5A3C7C03561FA9CE7FE6A1 /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 74E292C58D36C37E72777B5729D63ECC /* FBSDKButton.h */; }; + E610D8D46F5B853A640B9EB01EB105D8 /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = C7EE49040D26C6D8282770B424B78159 /* FBSDKKeychainStore.m */; }; + E6D9CE27BE4674CF7755B9F82B1E58AA /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = 53532C476C4D8D532ED66CDBF0F8657F /* FBSDKAppEventsState.h */; }; + E725B8B6F2DBEEA2C8106229737D91AC /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 7153F996BEDD033559675D14F2FB9FAA /* FBSDKAppLinkUtility.h */; }; + E72B8ECC477EE9195AD7F41392B4CE7B /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 32CA3C7FC2ED01D33FB4A2353CF242BA /* FBSDKGraphRequestConnection+Internal.h */; }; + E74D71AE166349C35C42F3D5ABD5B1C9 /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 51C741025D484F6D07E6AD3AEA7291A5 /* FBSDKErrorConfiguration.m */; }; + E7B50434828FA042869D78C54A58AF90 /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C68C4E5CCC43F6D12B543C207FF10C8 /* FBSDKErrorConfiguration.h */; }; + E8280DA9138A9950C934A0F13A7A2DA5 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E21BE33CA995E3E18A1344838330D8 /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; + EA426EC658ED2A630090136BCBDCF8F8 /* FBSDKAppInviteContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 78C57BD49A74C10B14C023D390C280E1 /* FBSDKAppInviteContent.m */; }; + EAFC5D6DFE023A9DA433BDEFAD30C6E8 /* FBSDKLoginKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 08CDE37FE6C9394E1AE63982CC68D3B0 /* FBSDKLoginKit.h */; }; + EB23E339DBA43E1DA3185BB324CEA54B /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 7950AA08C2373C1D88DDA283D1C68C10 /* BFURL.h */; }; + EB7D5269252876FDD8FB3D3DFE42C73D /* FBSDKLoginButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 80E57FF8B4AA3C7BF27A67169E51EA08 /* FBSDKLoginButton.m */; }; + EBB4A13CEE376C95546B2347E2D7250E /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 90A9CEFADF5414847EB52B6DB5FB52C1 /* FBSDKGraphRequestConnection.h */; }; + EBBB2E68E5C2BB4A392A6B52AAB6A65D /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */ = {isa = PBXBuildFile; fileRef = EE99AA22341E1A198DE866465C3C3091 /* FBSDKGameRequestFrictionlessRecipientCache.h */; }; + EC76783DEC44B62526E83D829C71D18C /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2309DCCA91F9883D4D79FEE1EF0099E8 /* Pods-dummy.m */; }; + ECD065627810DD77F59266E24A503AA9 /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = EB1A78A2C977DABC4740C7FC08BBB2F7 /* FBSDKButton.m */; }; + EDC74CD08B6D32181CD98A3DE1A2DD7F /* FBSDKAppGroupContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DF70211D471BD5D151D459A27B6B280 /* FBSDKAppGroupContent.h */; }; + EE1E0445D5539A5A83D898095665B993 /* FBSDKAppInviteContent.h in Headers */ = {isa = PBXBuildFile; fileRef = A756AEA07B826EDE98ADCBC9C088F709 /* FBSDKAppInviteContent.h */; }; + F1CA949069BA75B782FA550701EFF48F /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 80A48EDE1E87DD0DC00057715A434A28 /* FBSDKBridgeAPIRequest.m */; }; + F1FC725A6D5E9E16D3824E4521668E1D /* FBSDKCheckmarkIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = ADEFB298B7B2CC468183D78059BF9DF7 /* FBSDKCheckmarkIcon.m */; }; + F2AA769C78097E16F72E050AB93DE00D /* FBSDKLoginManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = FB1C07F9FFF2FDF41760BCFD01D6DBD2 /* FBSDKLoginManager+Internal.h */; }; + F4F5599031266758C5A6EE7027DF6BD8 /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 4864721E089588E27ACD5169546B84B7 /* FBSDKCloseIcon.m */; }; + F794A07C3CF58F784345DCEA85E814BA /* FBSDKShareLinkContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 02A139F6C34566CB47C35B489480DD07 /* FBSDKShareLinkContent.h */; }; + F8C1154884436F4CDA773DBDD5B4B224 /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 8761049FB9D429C3A55046B90C71D88B /* FBSDKDialogConfiguration.h */; }; + F8C616C859912B70A4CD872EA8F7A23E /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C1EFFE13B9B3F21423A0453CAE574AA /* FBSDKAccessToken.m */; }; + F9021083802664367043208DEFB7E6EA /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = A06FF11F33DBF85168D2BFEA8F9CC0B6 /* FBSDKAppLinkResolver.h */; }; + F976D265D4CAA37B54A9444E072C4934 /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = ECC9B0749C18CB8AF78E670D8E76B4BC /* FBSDKIcon.m */; }; + F9DD490313C1A34374EB935EA6F504E7 /* FBSDKSystemAccountStoreAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E67958ECD2A430829F342463DD96876 /* FBSDKSystemAccountStoreAdapter.m */; }; + FB04BF441608674C807973A587CC5963 /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = 78B2C5646EBCB59F70AD7D01594943A9 /* FBSDKMutableCopying.h */; }; + FB2D03E9EF1F1437B211F991DA80C472 /* FBSDKShareAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = A8F6921FE57CF7CEB82F14DE7C7F1ADE /* FBSDKShareAPI.m */; }; + FBB381337318019A66613990BA4267B2 /* FBSDKShareOpenGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 8123DF664552E1E50D61750680BB63BA /* FBSDKShareOpenGraphObject.m */; }; + FC8DF4009AA07E88871E128E58986C8A /* FBSDKLoginButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 22BD1BB2D1ACDED2C3DA5FB714A15C33 /* FBSDKLoginButton.h */; }; + FE176F860A032686AA09D6C366D2C9EC /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 500B28CDDA39D831040A82A0735DA513 /* FBSDKUIUtility.h */; }; + FF337FC6A01267CFC462853F3EDF379B /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = F3AA812465C239C11602D1E90810FE4A /* FBSDKIcon.h */; }; + FF6874A3553124FB49AD0FC2F3B15150 /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = B84EE2CCC07E78723DCBA09471C30EFC /* FBSDKBridgeAPIProtocolWebV1.h */; }; + FFD2A3A9288445D4A3992F29769A080C /* FBSDKAppInviteDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 386BE61982EC743B3A128214EC83CFCD /* FBSDKAppInviteDialog.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 0770907D46486483AE4C3B044B98D06B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5D317E2C239D207CE072A2C1FE79D30A; + remoteInfo = Bolts; + }; + 0A5B9E7B7B98C2DBA5746494B769F468 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 228A8DE101DBB992D8BCEC1E4FD9FFB7; + remoteInfo = FBSDKLoginKit; + }; + 104DD7E0D1D1835D2025676C12BB1E68 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7514A5BBFEA8726C550640239F35CF9F; + remoteInfo = FBSDKCoreKit; + }; + 2D3ADA04FE0BE10C39EE7B0F01C2D544 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7514A5BBFEA8726C550640239F35CF9F; + remoteInfo = FBSDKCoreKit; + }; + 5E12961A62642C4FC8A1B794B732A1CF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5D317E2C239D207CE072A2C1FE79D30A; + remoteInfo = Bolts; + }; + 95BFFB90564EE4DDCCFB7443059C97A9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3BCD0D10E30222706C12D7C3102FA893; + remoteInfo = FBSDKShareKit; + }; + F24C2706B41E2A13115DC189DD607DE7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7514A5BBFEA8726C550640239F35CF9F; + remoteInfo = FBSDKCoreKit; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 002664079DFD68B6479C6AB0F0232180 /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = ""; }; + 00A650A22497211EEC0B83849E6FA811 /* FBSDKMessageDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessageDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h; sourceTree = ""; }; + 02865F67BBD6040226CBD1FDBA29F5A2 /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = ""; }; + 02A139F6C34566CB47C35B489480DD07 /* FBSDKShareLinkContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareLinkContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h; sourceTree = ""; }; + 03F85D35C27D1671D1F41676A47CD249 /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = ""; }; + 0536CFD0FB595B94B070BF9F406E1C6E /* FBSDKLoginConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginConstants.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h; sourceTree = ""; }; + 0575E3793244EA718CE0007D35E83183 /* FBSDKLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h; sourceTree = ""; }; + 066BD5A6D3EB9C54F7FF6EC096EE0937 /* FBSDKAppGroupJoinDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupJoinDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m; sourceTree = ""; }; + 06D6B35A2ACE17598D198FFFA920B997 /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = ""; }; + 074F24F3EBCC23154EFFEDC5D0444966 /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = ""; }; + 075B616D3A97272E3EADC31EADC87E6D /* BFCancellationTokenRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenRegistration.h; path = Bolts/Common/BFCancellationTokenRegistration.h; sourceTree = ""; }; + 08246BDCF7BCF08AB9C89B6EC23B82F1 /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView_Internal.h; path = Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h; sourceTree = ""; }; + 08CDE37FE6C9394E1AE63982CC68D3B0 /* FBSDKLoginKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginKit.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h; sourceTree = ""; }; + 09F5BB824C951F2045215ED0D7633774 /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = ""; }; + 0A255D4D45C82DE35FE87E3BC6774FD6 /* BFAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView.h; path = Bolts/iOS/BFAppLinkReturnToRefererView.h; sourceTree = ""; }; + 0B6A3059AD3E528BC8797D2FC76256C7 /* FBSDKURLConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h; sourceTree = ""; }; + 0C1EFFE13B9B3F21423A0453CAE574AA /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = ""; }; + 0CBBB605F74764838E88897E88411957 /* FBSDKShareVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideo.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h; sourceTree = ""; }; + 0FD55E74CE45585A17758C1059634836 /* FBSDKLoginKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginKit+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h"; sourceTree = ""; }; + 1276BE5A9F1D39331198580AAA4221EB /* libBolts.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBolts.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 12D8EA79EFC598C83745B7B3A0BA4184 /* FBSDKShareUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m; sourceTree = ""; }; + 12EBCA469BCC9A652E162B87170B3030 /* FBSDKSendButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSendButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h; sourceTree = ""; }; + 13FF75A9C1FC86B8BB017906047CD763 /* FBSDKLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h; sourceTree = ""; }; + 157A1552C1C00504C4E58FB57CF5F9EA /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = ""; }; + 15A529C27057E4A57D259CBC6E6CE49C /* Pods-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-acknowledgements.markdown"; sourceTree = ""; }; + 15C51B4DF1030238AF6D7649E82788B5 /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = ""; }; + 162FD6F0F18A8A4BD0969AEABB0CC78C /* FBSDKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h; sourceTree = ""; }; + 165375EAB1DC28C393658A5139DE1C57 /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = ""; }; + 16E3A15FF65AF85ABCD42065EAAAF029 /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = ""; }; + 17CB7B06981F44E91DD1BCD38D59103C /* FBSDKLikeButtonPopWAV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButtonPopWAV.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m; sourceTree = ""; }; + 18686D428534EFB249C7C2B72191F907 /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = ""; }; + 1A00FD05BA1219E73100D7E090F01F37 /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = ""; }; + 1A47608DFA1AF84E7AB9DCCF058C78F1 /* FBSDKShareConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareConstants.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m; sourceTree = ""; }; + 1BFC2409C44B8CD69A6C03A63F32F7CA /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = ""; }; + 1BFFBA3AC0C02108B7DA60345A7F020A /* FBSDKLoginConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginConstants.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m; sourceTree = ""; }; + 1C57395BC9AB5BA1544DDD898B1B9146 /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m; sourceTree = ""; }; + 1C9260CF6266A23A17B2C842C283E8D9 /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = ""; }; + 1D2C8E2D65E652FD1F3E1F311E40A83B /* FBSDKLikeControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeControl.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m; sourceTree = ""; }; + 1E20D900533A9FD00F2DC7A1D0797CA4 /* FBSDKLikeBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h; sourceTree = ""; }; + 1E67958ECD2A430829F342463DD96876 /* FBSDKSystemAccountStoreAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSystemAccountStoreAdapter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m; sourceTree = ""; }; + 1F11E9B9214843E4C733658288B46F50 /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = ""; }; + 1FB1726D1A37BF1BA4F347373EA1F055 /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkNavigation.h; path = Bolts/iOS/BFAppLinkNavigation.h; sourceTree = ""; }; + 2089FF7B2CC0E94D22CE2F8418713448 /* FBSDKLikeObjectType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeObjectType.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h; sourceTree = ""; }; + 20CCC4BC67725A4015A7A848B16ED671 /* BFDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFDefines.h; path = Bolts/Common/BFDefines.h; sourceTree = ""; }; + 210A8D5F5D9E18273157AA6FA4DF1616 /* BFAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkTarget.h; path = Bolts/iOS/BFAppLinkTarget.h; sourceTree = ""; }; + 21E2EC6DEE56644A5CEFC5F1DD108201 /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = ""; }; + 21EBC77612C0C02A1BCC39116437EA23 /* FBSDKLikeButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h; sourceTree = ""; }; + 2274A950D07549AC3A4D354548562493 /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = ""; }; + 228E810DDF4A3C7DA3A85A9E2D4A501B /* FBSDKShareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKShareKit-dummy.m"; sourceTree = ""; }; + 22BD1BB2D1ACDED2C3DA5FB714A15C33 /* FBSDKLoginButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginButton.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h; sourceTree = ""; }; + 22D35F8704195922C00F9CC8B9A3857E /* FBSDKCoreKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKCoreKit.xcconfig; sourceTree = ""; }; + 2309DCCA91F9883D4D79FEE1EF0099E8 /* Pods-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-dummy.m"; sourceTree = ""; }; + 23160D89AEAF98B6D83BB6EF3E05310E /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = ""; }; + 25C81CF10A1B913E3ECE5AE4BC865122 /* FBSDKBridgeAPICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPICrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m; sourceTree = ""; }; + 26339C8E6E8F5A145E0410B33CAEFC76 /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = ""; }; + 26DE794F5D70A3E6AA3856E8B437F8A1 /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = ""; }; + 26F24911943B64E9095819A493DC1EF7 /* BFAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkTarget.m; path = Bolts/iOS/BFAppLinkTarget.m; sourceTree = ""; }; + 279F862324C9CEB1307D4D63451084C5 /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = ""; }; + 28C6F74CFBBB5E9EDDE2A8BC53A897B4 /* BoltsVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BoltsVersion.h; path = Bolts/Common/BoltsVersion.h; sourceTree = ""; }; + 2A44558D108D044EF825B0B6D60677E9 /* FBSDKGameRequestContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m; sourceTree = ""; }; + 2B3F8F8D1757081C79044C13664E9E9A /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = ""; }; + 2BE2BA427F26BC5B28DC6D9605083C58 /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = ""; }; + 2D24677F8860BB996C1BE057AFDAE111 /* BFMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFMeasurementEvent.m; path = Bolts/iOS/BFMeasurementEvent.m; sourceTree = ""; }; + 2ED2A1728265E00DF4FCBB52224C6768 /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = ""; }; + 2FF996A5E210707A84723CEF66C72615 /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = ""; }; + 3121BA645E578829C4840BA0F5D2F2FB /* Bolts-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Bolts-Private.xcconfig"; sourceTree = ""; }; + 3196869736428BB66717FE7BFDA19965 /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = ""; }; + 32CA3C7FC2ED01D33FB4A2353CF242BA /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = ""; }; + 330D9CC147E914E18E2035F5B6441E5F /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = ""; }; + 35F0D9C7E4A77DC844319010E2664C26 /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = ""; }; + 3686DA8DE42E552A6664A3515098B2AC /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = ""; }; + 37D367937646E4E05AD9519B21B1F566 /* FBSDKAppGroupAddDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupAddDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h; sourceTree = ""; }; + 386BE61982EC743B3A128214EC83CFCD /* FBSDKAppInviteDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m; sourceTree = ""; }; + 38F0EE39E8FB99923B05946F733FCDE6 /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m; sourceTree = ""; }; + 398C73EFC085AF867FD191360CA9E692 /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = ""; }; + 39DDF6968CBE57929F3632EACEAB2610 /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = ""; }; + 3A8296B0778C8F6FF86E096891EC3330 /* FBSDKSystemAccountStoreAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSystemAccountStoreAdapter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h; sourceTree = ""; }; + 3ACFCDE2F85688257805323CB7568B51 /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = ""; }; + 3B46B41FC5464B48A5B5275DA0C6D3E5 /* FBSDKAppGroupJoinDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupJoinDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h; sourceTree = ""; }; + 3E96A05C4068F79754A471DFA28BAAA5 /* FBSDKSharing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharing.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h; sourceTree = ""; }; + 41CFAF1E1E62AE0A66D11ADAABFDD595 /* BFExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFExecutor.h; path = Bolts/Common/BFExecutor.h; sourceTree = ""; }; + 4224206215E4AE2302FDC96A58E94814 /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = ""; }; + 43170513EC0C6AEAEAE625758B1656D2 /* FBSDKLoginCompletion+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginCompletion+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h"; sourceTree = ""; }; + 44B2E26031F3FC70570B8D0355B9107A /* FBSDKShareUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h; sourceTree = ""; }; + 45B79D0956F6A1351479E569B774EE64 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.release.xcconfig; sourceTree = ""; }; + 4669EF085FC9747EEF39F5EB5BDA05E0 /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = ""; }; + 4722FCF8C978A7B204A55D0BF6F34B2D /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = ""; }; + 472EE8D03187469F99EC5B927D40BA24 /* BFCancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationToken.h; path = Bolts/Common/BFCancellationToken.h; sourceTree = ""; }; + 485C58584AC1DB1D243A5A57D0B31866 /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = ""; }; + 4864721E089588E27ACD5169546B84B7 /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = ""; }; + 48B7ACF3FD17DCB8BD8D200A9067137C /* FBSDKShareButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m; sourceTree = ""; }; + 4AE311A8C1894882C4A2DCB8EE2013E8 /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = ""; }; + 4B8E40E6E3F7E645FF915A402B90C5FC /* FBSDKSharePhoto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhoto.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m; sourceTree = ""; }; + 4C592CC7FBD1BF17DD1A484916AA7E85 /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = ""; }; + 4DCA2983B324CC477B5B90C4E6EF6536 /* FBSDKLikeActionControllerCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionControllerCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h; sourceTree = ""; }; + 4E2CB7869A71090D975E7A675914369C /* BFTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTask.h; path = Bolts/Common/BFTask.h; sourceTree = ""; }; + 4EADBDF1DFD27B8D0B09D789CE9B66A6 /* FBSDKLikeBoxBorderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxBorderView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m; sourceTree = ""; }; + 4ED0E1AC1869827BA4E401AEE8EF913D /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = ""; }; + 500B28CDDA39D831040A82A0735DA513 /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = ""; }; + 5111C7A616531A62E55A8FC7C6C72498 /* FBSDKShareDialogMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialogMode.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m; sourceTree = ""; }; + 51572F406F0AFA9A30C97AF6374A415C /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = ""; }; + 51C741025D484F6D07E6AD3AEA7291A5 /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = ""; }; + 53532C476C4D8D532ED66CDBF0F8657F /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h; sourceTree = ""; }; + 543A2D9E4374BEADC0C923E0AEFCE01A /* FBSDKLoginManagerLoginResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLoginResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m; sourceTree = ""; }; + 55931A99F538C33CD1E60CBBF28D7444 /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m; sourceTree = ""; }; + 5649742E243B8F68ED6ABBD16F3AD910 /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = ""; }; + 57875897B510F5382AD775C0A28734A2 /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = ""; }; + 592B052F02115EC6E41AC5B9CB79E1C6 /* BFAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkNavigation.m; path = Bolts/iOS/BFAppLinkNavigation.m; sourceTree = ""; }; + 5D27D517A8FA7ABC01A523D4CC9BF059 /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m; sourceTree = ""; }; + 5D42936E332BFFE8C7AEA60379CAA0CA /* FBSDKLoginManagerLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLogger.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h; sourceTree = ""; }; + 5D5414763D71E60BCDE8CE7AB80B2CC7 /* BFCancellationToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationToken.m; path = Bolts/Common/BFCancellationToken.m; sourceTree = ""; }; + 5E2C28D858D12923C51D6A59FF47FAFC /* FBSDKShareOpenGraphAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphAction.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m; sourceTree = ""; }; + 60D814E0C681012497F5E777A131D775 /* FBSDKLoginUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginUtility.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m; sourceTree = ""; }; + 6150512B0D0562C3F6C90F95463621B1 /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h; sourceTree = ""; }; + 62AA5AFD1D7438053DE8446F795803E7 /* FBSDKLoginKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKLoginKit-Private.xcconfig"; sourceTree = ""; }; + 63BF64F3A37FC48CF494725985B8BBE2 /* FBSDKShareError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareError.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m; sourceTree = ""; }; + 641AE05DD55E5E6AC1590CD7B4A18F97 /* Pods-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-resources.sh"; sourceTree = ""; }; + 67BBE784A2801F01F65EAF698A7A4C65 /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = ""; }; + 687D294ACB2FA8374173C7BB1EBD1D0B /* libFBSDKShareKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKShareKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 68926D1EF195CCE0C2B10D9C7EA6D834 /* FBSDKMessengerIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessengerIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h; sourceTree = ""; }; + 68E38006C5CB85E78FC2D6A4FA68A3D9 /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h; sourceTree = ""; }; + 6A029B649640C1353F893551FE5BEA9F /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = ""; }; + 6B2E189F86CFA538D17F926EC1C45AC6 /* FBSDKShareConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareConstants.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h; sourceTree = ""; }; + 6B58B12D0098350BFEF482A1274F3C4D /* FBSDKBridgeAPICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPICrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h; sourceTree = ""; }; + 6DF70211D471BD5D151D459A27B6B280 /* FBSDKAppGroupContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h; sourceTree = ""; }; + 6E2113F2BAA1CC96FE4BEBF42FE4C415 /* FBSDKAccessTokenCacheV3_21.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_21.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m; sourceTree = ""; }; + 6F5D9A88B97412C115AF0CFCA999F8C2 /* FBSDKLikeActionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionController.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h; sourceTree = ""; }; + 7021140A61A89A7065788EF7F6FE9A25 /* BFMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent.h; path = Bolts/iOS/BFMeasurementEvent.h; sourceTree = ""; }; + 7052F61CFA5DBBB1A1F2329AE83EF04A /* BFExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFExecutor.m; path = Bolts/Common/BFExecutor.m; sourceTree = ""; }; + 7106B5AFA24BAAD954C531BB2060F0F6 /* FBSDKLikeButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m; sourceTree = ""; }; + 7153F996BEDD033559675D14F2FB9FAA /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h; sourceTree = ""; }; + 72918635A11FE88E26388BB52C7A8F7A /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = ""; }; + 7325C6E7A2B3643DE8F984C17DF372D7 /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = ""; }; + 739A8FE1539F5F0119E36821784CB8EE /* FBSDKShareDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m; sourceTree = ""; }; + 74E292C58D36C37E72777B5729D63ECC /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = ""; }; + 7541C21C9026B7882A0CA33D03229333 /* FBSDKShareOpenGraphAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphAction.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h; sourceTree = ""; }; + 756E20E698838AA3F512B572C052F12A /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent_Internal.h; path = Bolts/iOS/BFMeasurementEvent_Internal.h; sourceTree = ""; }; + 7575CD22562E2CAF02FF831B37B73C85 /* FBSDKAccessTokenCacheV3_21.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_21.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h; sourceTree = ""; }; + 7647CEF4963EF72C881A0512B4A106FC /* BFAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererController.h; path = Bolts/iOS/BFAppLinkReturnToRefererController.h; sourceTree = ""; }; + 771E8EB6E927AC1AE9224E750AB1243B /* FBSDKBoltsMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBoltsMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m; sourceTree = ""; }; + 78B2C5646EBCB59F70AD7D01594943A9 /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = ""; }; + 78C57BD49A74C10B14C023D390C280E1 /* FBSDKAppInviteContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m; sourceTree = ""; }; + 7950AA08C2373C1D88DDA283D1C68C10 /* BFURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL.h; path = Bolts/iOS/BFURL.h; sourceTree = ""; }; + 79B5D96C4AD1BAD8C5A16095FE40D904 /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = ""; }; + 79C5E77BE16EE3DED6079065F72F3119 /* FBSDKBoltsMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBoltsMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h; sourceTree = ""; }; + 7A3FFE114934342A6293CAA369A5684A /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = ""; }; + 7A95DEF7BEDE8726F9906E6535257C80 /* FBSDKMessengerIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessengerIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m; sourceTree = ""; }; + 7B0A365A7833E9C747150256183939CF /* FBSDKLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m; sourceTree = ""; }; + 7B5BB805709FFB6878A293945C7DD6EB /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = ""; }; + 7CA71C2FA19AA4DF65FFE25558510C11 /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = ""; }; + 7EB290C8F6E8E6E8FC74EEFAD135259E /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFWebViewAppLinkResolver.m; path = Bolts/iOS/BFWebViewAppLinkResolver.m; sourceTree = ""; }; + 7EE2EF71BA2F3066A6E38404F4C6E5BB /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = ""; }; + 7F1DE529D81212E5BBBD7F41CE5139A8 /* FBSDKLoginKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKLoginKit-prefix.pch"; sourceTree = ""; }; + 7F322F6ACF68AF56AF896EB667A4EE12 /* FBSDKShareKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKShareKit-Private.xcconfig"; sourceTree = ""; }; + 804DC229C4E97BF5C05E79781E0F3F75 /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = ""; }; + 808CC2D89F4CAACB4CF99EDF5F5B3F24 /* FBSDKLoginUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginUtility.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h; sourceTree = ""; }; + 80A48EDE1E87DD0DC00057715A434A28 /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = ""; }; + 80E57FF8B4AA3C7BF27A67169E51EA08 /* FBSDKLoginButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginButton.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m; sourceTree = ""; }; + 8123DF664552E1E50D61750680BB63BA /* FBSDKShareOpenGraphObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphObject.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m; sourceTree = ""; }; + 841EA80357141FB191529428AA4841A0 /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = ""; }; + 84FC51CEFB7A3CAD3C1BD50FBFC5A2C2 /* FBSDKLikeDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeDialog.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h; sourceTree = ""; }; + 86B1B9D4698C595DBEBFF71FBA796D03 /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = ""; }; + 8725E71411518E68EEDB1C8286EE55BB /* FBSDKShareButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h; sourceTree = ""; }; + 8761049FB9D429C3A55046B90C71D88B /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = ""; }; + 88875A5B7AE372A96E9961E4551A6C07 /* FBSDKShareDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDefines.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h; sourceTree = ""; }; + 893AE4BEC580A446CE3ABAEAD7B53BAF /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = ""; }; + 897E8201CCE098369853632C2B3C6896 /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m; sourceTree = ""; }; + 8AAFA5AFB7771A50B2E04EE16097AE2E /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = ""; }; + 8AB293581B2CC2E15600E1001DBBA77B /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = ""; }; + 8C4122009F6CCD4958E84541DAFBE9B1 /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = ""; }; + 8C99BF979526D0E1A3D9A5677F3A18A6 /* FBSDKURLConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m; sourceTree = ""; }; + 8D104BC85E9A4726C0D1B381B549BABF /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = ""; }; + 8D7947DAFEA73B2AEDEE3110BE69C4C3 /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = ""; }; + 8DDFB93965E515FAEA6FB7A51182E549 /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = ""; }; + 8E12677D5DAFEE12EA3BA1E2055E89F8 /* FBSDKTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h; sourceTree = ""; }; + 8E629243AE4F868C8E75AC372D1DEC6A /* FBSDKLikeActionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionController.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m; sourceTree = ""; }; + 8F375DCDC3AF03A748BF6AE2DE8847AB /* FBSDKLoginCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginCompletion.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m; sourceTree = ""; }; + 8FA62565BBE412C30069502FF0CC51DF /* FBSDKLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m; sourceTree = ""; }; + 90A9CEFADF5414847EB52B6DB5FB52C1 /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = ""; }; + 90AC4DD014072A65EE77000860896177 /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = ""; }; + 9186B74312AC521E7BBF48001A87F4DB /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = ""; }; + 91D245F8CA4CBBB78697B00434888AAB /* FBSDKLoginTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h; sourceTree = ""; }; + 921B4A2DE5C84AE72BF2515994B661FA /* FBSDKSendButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSendButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m; sourceTree = ""; }; + 924C84F16E12DF079D8940F931F315CC /* FBSDKAppInviteDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h; sourceTree = ""; }; + 924FEBD3A9C3142529E09988A1AF5D31 /* FBSDKMessageDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessageDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m; sourceTree = ""; }; + 942B56873727FBE84A29CD08DC9DF625 /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = ""; }; + 94415A29F6A91534137FF604BCB14AB6 /* BFAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink_Internal.h; path = Bolts/iOS/BFAppLink_Internal.h; sourceTree = ""; }; + 958A88B9D72E9934EADC8C9179B0E455 /* BFCancellationTokenSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenSource.h; path = Bolts/Common/BFCancellationTokenSource.h; sourceTree = ""; }; + 9650DB5BE3E3803B05EEF2BA728FD08A /* FBSDKLikeBoxView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m; sourceTree = ""; }; + 9690B619FE2AAD1DC6925B4C2698A069 /* FBSDKLikeActionControllerCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionControllerCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m; sourceTree = ""; }; + 9A1979D48C487FA3EDA1159EF3852F20 /* FBSDKShareOpenGraphContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h; sourceTree = ""; }; + 9A98A92B293F049F7956A464E5A69C36 /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = ""; }; + 9B6EB12A21506DEFAD3D1AC35360E429 /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h; sourceTree = ""; }; + 9C68C4E5CCC43F6D12B543C207FF10C8 /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = ""; }; + 9CEC8B35C95959831EE1057B11322CE9 /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = ""; }; + 9D227F15B3C39C8F240799FC97C03FC7 /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = ""; }; + 9D28A8973855B42B7E0B94F7F2E7F679 /* FBSDKAccessTokenCacheV3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h; sourceTree = ""; }; + 9D663126B6E34DDA8860BAE880B56139 /* FBSDKAccessTokenCacheV3_17.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_17.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h; sourceTree = ""; }; + 9E2D8292478F266CEC5D9B4545F591A5 /* FBSDKLikeButton+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeButton+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h"; sourceTree = ""; }; + 9E6BD5EA50424CA24CA7148B1E4A106B /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = ""; }; + 9F23A8CFF0A5178FFE437F3900690E4D /* FBSDKLoginManagerLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLogger.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m; sourceTree = ""; }; + A06FF11F33DBF85168D2BFEA8F9CC0B6 /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h; sourceTree = ""; }; + A3F48D508CF9A089F6D2FBD3067DE053 /* FBSDKSharePhotoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhotoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h; sourceTree = ""; }; + A4A098339793E5BCA2444DB32B7612F4 /* FBSDKCheckmarkIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCheckmarkIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h; sourceTree = ""; }; + A52D1235E783D39988D2B6E470ADDA7F /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = ""; }; + A531906FF2DAF6D0F7F834076CBEC4C2 /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m; sourceTree = ""; }; + A6A11C49919F9BE6F3A03567D38BE5C1 /* FBSDKTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m; sourceTree = ""; }; + A71B981C41660472869BD0AAB04382C0 /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = ""; }; + A756AEA07B826EDE98ADCBC9C088F709 /* FBSDKAppInviteContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h; sourceTree = ""; }; + A7A6AB04D37A2DB4DEA04B11CAFFAB82 /* FBSDKLiking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLiking.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h; sourceTree = ""; }; + A7B8DF220992413B87518E5E85B18E32 /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h; sourceTree = ""; }; + A7D62A18D54FFB9AA33D848791F2B9A0 /* BFAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink.h; path = Bolts/iOS/BFAppLink.h; sourceTree = ""; }; + A876B3147441FD714C84B3F962F228FF /* FBSDKAccessTokenCacheV4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV4.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m; sourceTree = ""; }; + A8F6921FE57CF7CEB82F14DE7C7F1ADE /* FBSDKShareAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareAPI.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m; sourceTree = ""; }; + A944D2DC04BEF6207604DBB76FBB12AB /* BFAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkResolving.h; path = Bolts/iOS/BFAppLinkResolving.h; sourceTree = ""; }; + AB8EC144295EC6E09242AFA1DE8FBB93 /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = ""; }; + AC13EFDCE9B8FF9E1CAE5BEBCA2D7C17 /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = ""; }; + AC4DF8AF9C3B56874F7711E6F2D3096B /* BFURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFURL.m; path = Bolts/iOS/BFURL.m; sourceTree = ""; }; + AD6CB1A023BD68BC921696ADB8AB358D /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = ""; }; + ADA0E0868E9C002ACAA9EFBEAA6C7349 /* BFCancellationTokenSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenSource.m; path = Bolts/Common/BFCancellationTokenSource.m; sourceTree = ""; }; + ADD174C9CB223131CA86CA2808E20A95 /* FBSDKSharePhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhoto.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h; sourceTree = ""; }; + ADEFB298B7B2CC468183D78059BF9DF7 /* FBSDKCheckmarkIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCheckmarkIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m; sourceTree = ""; }; + AE1FBE172796B6EE66C9CE028F91A9D6 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; + AEE40C84F20C8B4855574E68B561F586 /* _FBSDKLoginRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKLoginRecoveryAttempter.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h; sourceTree = ""; }; + B0F5B126E4385B53E9C73775BBC036F5 /* FBSDKShareOpenGraphObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphObject.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h; sourceTree = ""; }; + B1C83C2BB6E10A770B424DDCA045A3DA /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = ""; }; + B2AFE071DB027CD94877612CFD3D006B /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = ""; }; + B35B1A6E0BC37C179ED9897DB54C66BD /* FBSDKCoreKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKCoreKit-prefix.pch"; sourceTree = ""; }; + B3806A1B94DBFDDC3984E1C3453BD094 /* FBSDKGameRequestFrictionlessRecipientCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestFrictionlessRecipientCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m; sourceTree = ""; }; + B3A5B22F878870CE770E0E9B97C28A59 /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = ""; }; + B3B6ED0B1490827E42BF16379DC889D8 /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = ""; }; + B41F54859F94464A7063BAD8F5DEEA40 /* Bolts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bolts.h; path = Bolts/Common/Bolts.h; sourceTree = ""; }; + B516688D51560D55EF42ADE2FB6AA4AE /* FBSDKShareOpenGraphValueContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphValueContainer.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h; sourceTree = ""; }; + B63D1AD2ED4371D377A70F2324E760DE /* FBSDKShareKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareKit+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h"; sourceTree = ""; }; + B6B4D633C955BC761C6FFA1EF8A98580 /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B6C469BF1DF1A22E1734404841744335 /* FBSDKShareLinkContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareLinkContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m; sourceTree = ""; }; + B6CB010DF4304781A764957D945B27F3 /* FBSDKLikeBoxBorderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxBorderView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h; sourceTree = ""; }; + B6F3BB37BEED8098957948DDEC201160 /* FBSDKShareLinkContent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareLinkContent+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h"; sourceTree = ""; }; + B70E4B942E4F5FFDC75D62D5A35A3A59 /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m; sourceTree = ""; }; + B79196C5F88B102B98CC926632FA54C5 /* FBSDKLoginManagerLoginResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLoginResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h; sourceTree = ""; }; + B7D0AE422908565AD433E41A1778C632 /* FBSDKLikeControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeControl.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h; sourceTree = ""; }; + B84EE2CCC07E78723DCBA09471C30EFC /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = ""; }; + BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + BAB751FF25D6FB93E08CE08011C84895 /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = ""; }; + BAD471AA47694836A5869F2C1DA93F88 /* FBSDKAccessTokenCacheV3_17.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_17.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m; sourceTree = ""; }; + BCB27FC0CB1D4381C0F19C75A5B1FBF4 /* FBSDKShareDialogMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialogMode.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h; sourceTree = ""; }; + BE01B3E5B1C99EAC2141DD5F8AB29249 /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = ""; }; + BF59BC15D23E1E1912C8F334E7236813 /* Pods-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-acknowledgements.plist"; sourceTree = ""; }; + BFB535A8B4485F7D0DE50127BA902285 /* BFURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL_Internal.h; path = Bolts/iOS/BFURL_Internal.h; sourceTree = ""; }; + C03A3298B33198FAA942973584DF194D /* BFAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererController.m; path = Bolts/iOS/BFAppLinkReturnToRefererController.m; sourceTree = ""; }; + C082E4FF16E72FFD979AA487D6E60C1E /* FBSDKShareOpenGraphValueContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphValueContainer.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m; sourceTree = ""; }; + C0BF39E0E35CD7253485DDB425C68004 /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = ""; }; + C189A94CF246B97BF2987B6E1D8D19A2 /* FBSDKShareVideoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h; sourceTree = ""; }; + C1908C17C35F6446698AE8C14A7A62E7 /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m; sourceTree = ""; }; + C1C914E1A584C53FF0F2FF1FA95D8D97 /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = ""; }; + C241898523306A2F36BA957442AECE37 /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = ""; }; + C2BBB16B19727EFA6001D8DA5BFDAE63 /* FBSDKShareAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareAPI.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h; sourceTree = ""; }; + C2EF67EB1769993AA0E90FD5B40C0518 /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = ""; }; + C39716FEDA3645018E76AA83F2EC2FD6 /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m; sourceTree = ""; }; + C4610B513862FEFB3BF7F20A25825BC1 /* Bolts-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Bolts-prefix.pch"; sourceTree = ""; }; + C4AB5BA93BA69576C5A0A741C5004F05 /* FBSDKLikeControl+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeControl+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h"; sourceTree = ""; }; + C57529A9BA3C0D011FCAA5B9F68062A5 /* FBSDKShareOpenGraphContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m; sourceTree = ""; }; + C5971F3A2B0D25D55D3B109A7C6871E9 /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = ""; }; + C60FB16C403DE81404C5A483846D5521 /* FBSDKAccessTokenCacheV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV4.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h; sourceTree = ""; }; + C6C55AB8CC2B8BA526A40CE4AE0092BD /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = ""; }; + C7C691E993DE2424E1B336A86721F67E /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTaskCompletionSource.m; path = Bolts/Common/BFTaskCompletionSource.m; sourceTree = ""; }; + C7EE49040D26C6D8282770B424B78159 /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = ""; }; + C88A57B8E059E22B232E9A1336DCB6C3 /* FBSDKShareError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareError.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h; sourceTree = ""; }; + C9E21BE33CA995E3E18A1344838330D8 /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = ""; }; + CA34076F58016A8D344DF051264EC600 /* FBSDKLoginManagerLoginResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManagerLoginResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h"; sourceTree = ""; }; + CB2709395EFC37B68B84452B8B52D2FA /* FBSDKLoginTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m; sourceTree = ""; }; + CCAB63AD3B56ABA526AA33F4B072751D /* FBSDKShareOpenGraphValueContainer+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareOpenGraphValueContainer+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h"; sourceTree = ""; }; + CCF95C1DF1520BBB95BB1817504B8776 /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = ""; }; + CE22ABAF0BB23620853203C50BFB6759 /* FBSDKGameRequestDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h; sourceTree = ""; }; + CE51C4347F37793614B7D2FE3580EA38 /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h; sourceTree = ""; }; + CE853CD10ECD55C2CF0F9E4CC5C3118D /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = ""; }; + CFBCB363EDF2DA2195A76CD54C25DAA2 /* Bolts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Bolts.m; path = Bolts/Common/Bolts.m; sourceTree = ""; }; + D0206FEE967F07559593DB0A49437047 /* Bolts.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bolts.xcconfig; sourceTree = ""; }; + D04E665A901817D8EC9150B344EE57E3 /* FBSDKShareKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKShareKit.xcconfig; sourceTree = ""; }; + D0BD5813C82F4D56A56445BCBF651D1D /* FBSDKCoreKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKCoreKit-Private.xcconfig"; sourceTree = ""; }; + D2532E23A345066E6895AB5BFA257B95 /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = ""; }; + D2A60EBB4F7EE474CF1CED06DFEDBF08 /* FBSDKShareKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKShareKit-prefix.pch"; sourceTree = ""; }; + D2ABC77A4C6425C22BB540990BB5A163 /* Bolts-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Bolts-dummy.m"; sourceTree = ""; }; + D34AA74CF0863A8C0BD1947CC4821F52 /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = ""; }; + D598B036F0405E2C2F154346BADBAF5E /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = ""; }; + D6BA663394EED0BB2FE15D361CEF0CC0 /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m; sourceTree = ""; }; + D6E644B97F6CC42B51B503C2EF1D6C1A /* FBSDKLikeButtonPopWAV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButtonPopWAV.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h; sourceTree = ""; }; + D83F322AAF71062208A8ED107E20BF12 /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h; sourceTree = ""; }; + D9899AB1FB240FC4ECF430207E7A6B41 /* BFAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLink.m; path = Bolts/iOS/BFAppLink.m; sourceTree = ""; }; + DA70E0602DF174C01CBE4AAC4B2FDD83 /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = ""; }; + DB675133B40BF7554858A2DB108E8BFF /* FBSDKGameRequestContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h; sourceTree = ""; }; + DC219C5A4D9CF2E73465E5137C2B9ADC /* libFBSDKLoginKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKLoginKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + DC55CDB4CCC04F5A9F06E71FFE785F36 /* BFTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTask.m; path = Bolts/Common/BFTask.m; sourceTree = ""; }; + DD2D3EA91E3DEECA63A7E8D2F61622D0 /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = ""; }; + DEFB08AC2015F546E03A7EBE7B531F87 /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = ""; }; + DF75B30DC0865920AE9E1B19F32AD80B /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = ""; }; + DF9B508AC2E512E2315EE3967D33A86C /* FBSDKSharingContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h; sourceTree = ""; }; + E01F50F6336774FE25601285EEF01EE5 /* FBSDKAppGroupAddDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupAddDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m; sourceTree = ""; }; + E08C0F0B4B039E308A51F4526A22E667 /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h; sourceTree = ""; }; + E4742C855FF14D3374DADBC22D0B3626 /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = ""; }; + E523319DE2F5CBA2664EF1861CAE8385 /* FBSDKLikeObjectType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeObjectType.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m; sourceTree = ""; }; + E557465C83E744378BD9E99E95EE5177 /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = ""; }; + E5DE1E73EB9968D3497F35D73BDB6A94 /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTaskCompletionSource.h; path = Bolts/Common/BFTaskCompletionSource.h; sourceTree = ""; }; + E777FE88F6ABED3F476963B5B7D5C3C1 /* FBSDKAppGroupContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m; sourceTree = ""; }; + E88798669932F94A6C3A3DC258F34AE9 /* BFAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererView.m; path = Bolts/iOS/BFAppLinkReturnToRefererView.m; sourceTree = ""; }; + E89EBAE854490CCB0C5339A4813E9B51 /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = ""; }; + E8A41D002C9FB24CD74E5A6B80176BA2 /* FBSDKShareVideoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m; sourceTree = ""; }; + E9F08741DEF6A1D2B1AC19BDAA8B851A /* FBSDKShareKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareKit.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h; sourceTree = ""; }; + EA0A354774F149974049A4C2978DCC7F /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = ""; }; + EA48C5EE3CE4DF057217B99A5A223606 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.debug.xcconfig; sourceTree = ""; }; + EB1A78A2C977DABC4740C7FC08BBB2F7 /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = ""; }; + EC03B77FB6AEBB7B42B5DDA048688205 /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = ""; }; + ECC9B0749C18CB8AF78E670D8E76B4BC /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = ""; }; + ED3ABC29606CB6F9337BB302194076AB /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + ED654A2013434F730212951BE3CDF95A /* _FBSDKLoginRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKLoginRecoveryAttempter.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m; sourceTree = ""; }; + EE77E56FA0FD8571B90F7293F8A6CA4E /* FBSDKLoginCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginCompletion.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h; sourceTree = ""; }; + EE99AA22341E1A198DE866465C3C3091 /* FBSDKGameRequestFrictionlessRecipientCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestFrictionlessRecipientCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h; sourceTree = ""; }; + EF36FE5802B718C77F58F0A55F941FAD /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = ""; }; + F0BE2E93E589BAAD87094107404458C4 /* FBSDKSharePhotoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhotoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m; sourceTree = ""; }; + F0F21F7A00DAFE2805355B155B9130E2 /* FBSDKGameRequestDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m; sourceTree = ""; }; + F25867AF7B57AE5CAFF6A7A97011505E /* FBSDKLoginKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKLoginKit-dummy.m"; sourceTree = ""; }; + F2CC45F6A7650A6695B67A7054C43C61 /* FBSDKSharingButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h; sourceTree = ""; }; + F3AA812465C239C11602D1E90810FE4A /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = ""; }; + F406E6A99876CF2EAA128E3273EA1168 /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = ""; }; + F782EBF11CD0B444B301A6D62DB3982D /* FBSDKAccessTokenCacheV3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m; sourceTree = ""; }; + F7A0AE448F9342C2274615F8B33139C7 /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFWebViewAppLinkResolver.h; path = Bolts/iOS/BFWebViewAppLinkResolver.h; sourceTree = ""; }; + F970F2C40DCD372EE55CFFE828E80CAE /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m; sourceTree = ""; }; + FB1C07F9FFF2FDF41760BCFD01D6DBD2 /* FBSDKLoginManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManager+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h"; sourceTree = ""; }; + FBD42041AE768C9FC5ED4984163A2D43 /* FBSDKShareVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideo.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m; sourceTree = ""; }; + FD3AC0887DD1FC60BAE9387F80523E6B /* FBSDKLoginKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKLoginKit.xcconfig; sourceTree = ""; }; + FD8213BF5D4E3A775DE2CDFE95B11D27 /* FBSDKShareDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h; sourceTree = ""; }; + FE3F695A6D43B329CB5E37EDF6B476D5 /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = ""; }; + FF2AA4084EE7DD2A0CE09C7DE485C764 /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h"; sourceTree = ""; }; + FFDC8DE8F321A7C08F3D315635B2B056 /* FBSDKLikeDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeDialog.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1C1DD4BE9A8F7C910DF0F3E77BF7C62D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 49421026FE47248CF4AF6EF3C5D13494 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1E72EB589808F87950D233F18FFBBD2E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 077A33F1B3D52FA2D2C18147CE033D3D /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 40AC19B3F8E01DF016229112D2367F46 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0AB27E0C4D053AC65C9732DB1BB11B3D /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 563EEC817F4B39196257BF87E9BAF65B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A4A522C2511616E471BF42C39B51CC2D /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A14B9249809C06A9D3AEFBA9B23EA350 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3C0BC486782A950DF6222FB6631E1EBC /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 03D972F8FD8FDE13BB9FF3BADFDE04EF /* Support Files */ = { + isa = PBXGroup; + children = ( + D04E665A901817D8EC9150B344EE57E3 /* FBSDKShareKit.xcconfig */, + 7F322F6ACF68AF56AF896EB667A4EE12 /* FBSDKShareKit-Private.xcconfig */, + 228E810DDF4A3C7DA3A85A9E2D4A501B /* FBSDKShareKit-dummy.m */, + D2A60EBB4F7EE474CF1CED06DFEDBF08 /* FBSDKShareKit-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/FBSDKShareKit"; + sourceTree = ""; + }; + 0CCA37610B869AEE4F26E4D94532229F /* no-arc */ = { + isa = PBXGroup; + children = ( + D6BA663394EED0BB2FE15D361CEF0CC0 /* FBSDKDynamicFrameworkLoader.m */, + ); + name = "no-arc"; + sourceTree = ""; + }; + 16FEA20C1F582DDE438128E880D8CFAD /* Tasks */ = { + isa = PBXGroup; + children = ( + 472EE8D03187469F99EC5B927D40BA24 /* BFCancellationToken.h */, + 5D5414763D71E60BCDE8CE7AB80B2CC7 /* BFCancellationToken.m */, + 075B616D3A97272E3EADC31EADC87E6D /* BFCancellationTokenRegistration.h */, + 942B56873727FBE84A29CD08DC9DF625 /* BFCancellationTokenRegistration.m */, + 958A88B9D72E9934EADC8C9179B0E455 /* BFCancellationTokenSource.h */, + ADA0E0868E9C002ACAA9EFBEAA6C7349 /* BFCancellationTokenSource.m */, + 20CCC4BC67725A4015A7A848B16ED671 /* BFDefines.h */, + 41CFAF1E1E62AE0A66D11ADAABFDD595 /* BFExecutor.h */, + 7052F61CFA5DBBB1A1F2329AE83EF04A /* BFExecutor.m */, + 4E2CB7869A71090D975E7A675914369C /* BFTask.h */, + DC55CDB4CCC04F5A9F06E71FFE785F36 /* BFTask.m */, + E5DE1E73EB9968D3497F35D73BDB6A94 /* BFTaskCompletionSource.h */, + C7C691E993DE2424E1B336A86721F67E /* BFTaskCompletionSource.m */, + B41F54859F94464A7063BAD8F5DEEA40 /* Bolts.h */, + CFBCB363EDF2DA2195A76CD54C25DAA2 /* Bolts.m */, + 28C6F74CFBBB5E9EDDE2A8BC53A897B4 /* BoltsVersion.h */, + ); + name = Tasks; + sourceTree = ""; + }; + 1DB7024972D117DCB7C2DF938433BE13 /* Support Files */ = { + isa = PBXGroup; + children = ( + D0206FEE967F07559593DB0A49437047 /* Bolts.xcconfig */, + 3121BA645E578829C4840BA0F5D2F2FB /* Bolts-Private.xcconfig */, + D2ABC77A4C6425C22BB540990BB5A163 /* Bolts-dummy.m */, + C4610B513862FEFB3BF7F20A25825BC1 /* Bolts-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/Bolts"; + sourceTree = ""; + }; + 318DE6DB1C43BC39E260C1ACBC1D2339 /* Bolts */ = { + isa = PBXGroup; + children = ( + 436D998F3D116843D36AD91C7CBE7593 /* AppLinks */, + 1DB7024972D117DCB7C2DF938433BE13 /* Support Files */, + 16FEA20C1F582DDE438128E880D8CFAD /* Tasks */, + ); + path = Bolts; + sourceTree = ""; + }; + 40F1C6894DB267A5CAE3498060F47A24 /* FBSDKLoginKit */ = { + isa = PBXGroup; + children = ( + 22BD1BB2D1ACDED2C3DA5FB714A15C33 /* FBSDKLoginButton.h */, + 80E57FF8B4AA3C7BF27A67169E51EA08 /* FBSDKLoginButton.m */, + EE77E56FA0FD8571B90F7293F8A6CA4E /* FBSDKLoginCompletion.h */, + 8F375DCDC3AF03A748BF6AE2DE8847AB /* FBSDKLoginCompletion.m */, + 43170513EC0C6AEAEAE625758B1656D2 /* FBSDKLoginCompletion+Internal.h */, + 0536CFD0FB595B94B070BF9F406E1C6E /* FBSDKLoginConstants.h */, + 1BFFBA3AC0C02108B7DA60345A7F020A /* FBSDKLoginConstants.m */, + 13FF75A9C1FC86B8BB017906047CD763 /* FBSDKLoginError.h */, + 7B0A365A7833E9C747150256183939CF /* FBSDKLoginError.m */, + 08CDE37FE6C9394E1AE63982CC68D3B0 /* FBSDKLoginKit.h */, + 0FD55E74CE45585A17758C1059634836 /* FBSDKLoginKit+Internal.h */, + 0575E3793244EA718CE0007D35E83183 /* FBSDKLoginManager.h */, + 8FA62565BBE412C30069502FF0CC51DF /* FBSDKLoginManager.m */, + FB1C07F9FFF2FDF41760BCFD01D6DBD2 /* FBSDKLoginManager+Internal.h */, + 5D42936E332BFFE8C7AEA60379CAA0CA /* FBSDKLoginManagerLogger.h */, + 9F23A8CFF0A5178FFE437F3900690E4D /* FBSDKLoginManagerLogger.m */, + B79196C5F88B102B98CC926632FA54C5 /* FBSDKLoginManagerLoginResult.h */, + 543A2D9E4374BEADC0C923E0AEFCE01A /* FBSDKLoginManagerLoginResult.m */, + CA34076F58016A8D344DF051264EC600 /* FBSDKLoginManagerLoginResult+Internal.h */, + 91D245F8CA4CBBB78697B00434888AAB /* FBSDKLoginTooltipView.h */, + CB2709395EFC37B68B84452B8B52D2FA /* FBSDKLoginTooltipView.m */, + 808CC2D89F4CAACB4CF99EDF5F5B3F24 /* FBSDKLoginUtility.h */, + 60D814E0C681012497F5E777A131D775 /* FBSDKLoginUtility.m */, + 8E12677D5DAFEE12EA3BA1E2055E89F8 /* FBSDKTooltipView.h */, + A6A11C49919F9BE6F3A03567D38BE5C1 /* FBSDKTooltipView.m */, + AEE40C84F20C8B4855574E68B561F586 /* _FBSDKLoginRecoveryAttempter.h */, + ED654A2013434F730212951BE3CDF95A /* _FBSDKLoginRecoveryAttempter.m */, + CD53B378A2C85AC02E4C94B72B2396B1 /* Support Files */, + ); + path = FBSDKLoginKit; + sourceTree = ""; + }; + 436D998F3D116843D36AD91C7CBE7593 /* AppLinks */ = { + isa = PBXGroup; + children = ( + A7D62A18D54FFB9AA33D848791F2B9A0 /* BFAppLink.h */, + D9899AB1FB240FC4ECF430207E7A6B41 /* BFAppLink.m */, + 1FB1726D1A37BF1BA4F347373EA1F055 /* BFAppLinkNavigation.h */, + 592B052F02115EC6E41AC5B9CB79E1C6 /* BFAppLinkNavigation.m */, + A944D2DC04BEF6207604DBB76FBB12AB /* BFAppLinkResolving.h */, + 7647CEF4963EF72C881A0512B4A106FC /* BFAppLinkReturnToRefererController.h */, + C03A3298B33198FAA942973584DF194D /* BFAppLinkReturnToRefererController.m */, + 0A255D4D45C82DE35FE87E3BC6774FD6 /* BFAppLinkReturnToRefererView.h */, + E88798669932F94A6C3A3DC258F34AE9 /* BFAppLinkReturnToRefererView.m */, + 08246BDCF7BCF08AB9C89B6EC23B82F1 /* BFAppLinkReturnToRefererView_Internal.h */, + 210A8D5F5D9E18273157AA6FA4DF1616 /* BFAppLinkTarget.h */, + 26F24911943B64E9095819A493DC1EF7 /* BFAppLinkTarget.m */, + 94415A29F6A91534137FF604BCB14AB6 /* BFAppLink_Internal.h */, + 7021140A61A89A7065788EF7F6FE9A25 /* BFMeasurementEvent.h */, + 2D24677F8860BB996C1BE057AFDAE111 /* BFMeasurementEvent.m */, + 756E20E698838AA3F512B572C052F12A /* BFMeasurementEvent_Internal.h */, + 7950AA08C2373C1D88DDA283D1C68C10 /* BFURL.h */, + AC4DF8AF9C3B56874F7711E6F2D3096B /* BFURL.m */, + BFB535A8B4485F7D0DE50127BA902285 /* BFURL_Internal.h */, + F7A0AE448F9342C2274615F8B33139C7 /* BFWebViewAppLinkResolver.h */, + 7EB290C8F6E8E6E8FC74EEFAD135259E /* BFWebViewAppLinkResolver.m */, + ); + name = AppLinks; + sourceTree = ""; + }; + 53F661C0CA7190D2CF05023FB33D61E4 /* iOS */ = { + isa = PBXGroup; + children = ( + ED3ABC29606CB6F9337BB302194076AB /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 7DB346D0F39D3F0E887471402A8071AB = { + isa = PBXGroup; + children = ( + BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, + AFB94B753B1CA4679A1C2B9C5B31ED92 /* Pods */, + CCA510CFBEA2D207524CDA0D73C3B561 /* Products */, + D2411A5FE7F7A004607BED49990C37F4 /* Targets Support Files */, + ); + sourceTree = ""; + }; + 885A2BF9367C2A3CF8D74CD10FD14D4A /* arc */ = { + isa = PBXGroup; + children = ( + F406E6A99876CF2EAA128E3273EA1168 /* FBSDKAccessToken.h */, + 0C1EFFE13B9B3F21423A0453CAE574AA /* FBSDKAccessToken.m */, + 90AC4DD014072A65EE77000860896177 /* FBSDKAccessTokenCache.h */, + 074F24F3EBCC23154EFFEDC5D0444966 /* FBSDKAccessTokenCache.m */, + 9D28A8973855B42B7E0B94F7F2E7F679 /* FBSDKAccessTokenCacheV3.h */, + F782EBF11CD0B444B301A6D62DB3982D /* FBSDKAccessTokenCacheV3.m */, + 9D663126B6E34DDA8860BAE880B56139 /* FBSDKAccessTokenCacheV3_17.h */, + BAD471AA47694836A5869F2C1DA93F88 /* FBSDKAccessTokenCacheV3_17.m */, + 7575CD22562E2CAF02FF831B37B73C85 /* FBSDKAccessTokenCacheV3_21.h */, + 6E2113F2BAA1CC96FE4BEBF42FE4C415 /* FBSDKAccessTokenCacheV3_21.m */, + C60FB16C403DE81404C5A483846D5521 /* FBSDKAccessTokenCacheV4.h */, + A876B3147441FD714C84B3F962F228FF /* FBSDKAccessTokenCacheV4.m */, + E4742C855FF14D3374DADBC22D0B3626 /* FBSDKAccessTokenCaching.h */, + CE51C4347F37793614B7D2FE3580EA38 /* FBSDKAppEvents.h */, + 1C57395BC9AB5BA1544DDD898B1B9146 /* FBSDKAppEvents.m */, + FF2AA4084EE7DD2A0CE09C7DE485C764 /* FBSDKAppEvents+Internal.h */, + 68E38006C5CB85E78FC2D6A4FA68A3D9 /* FBSDKAppEventsDeviceInfo.h */, + A531906FF2DAF6D0F7F834076CBEC4C2 /* FBSDKAppEventsDeviceInfo.m */, + 53532C476C4D8D532ED66CDBF0F8657F /* FBSDKAppEventsState.h */, + C39716FEDA3645018E76AA83F2EC2FD6 /* FBSDKAppEventsState.m */, + A7B8DF220992413B87518E5E85B18E32 /* FBSDKAppEventsStateManager.h */, + C1908C17C35F6446698AE8C14A7A62E7 /* FBSDKAppEventsStateManager.m */, + E08C0F0B4B039E308A51F4526A22E667 /* FBSDKAppEventsUtility.h */, + 5D27D517A8FA7ABC01A523D4CC9BF059 /* FBSDKAppEventsUtility.m */, + A06FF11F33DBF85168D2BFEA8F9CC0B6 /* FBSDKAppLinkResolver.h */, + 38F0EE39E8FB99923B05946F733FCDE6 /* FBSDKAppLinkResolver.m */, + 7153F996BEDD033559675D14F2FB9FAA /* FBSDKAppLinkUtility.h */, + 897E8201CCE098369853632C2B3C6896 /* FBSDKAppLinkUtility.m */, + 7B5BB805709FFB6878A293945C7DD6EB /* FBSDKApplicationDelegate.h */, + 841EA80357141FB191529428AA4841A0 /* FBSDKApplicationDelegate.m */, + 72918635A11FE88E26388BB52C7A8F7A /* FBSDKApplicationDelegate+Internal.h */, + 39DDF6968CBE57929F3632EACEAB2610 /* FBSDKAudioResourceLoader.h */, + 4722FCF8C978A7B204A55D0BF6F34B2D /* FBSDKAudioResourceLoader.m */, + 7EE2EF71BA2F3066A6E38404F4C6E5BB /* FBSDKBase64.h */, + 398C73EFC085AF867FD191360CA9E692 /* FBSDKBase64.m */, + 79C5E77BE16EE3DED6079065F72F3119 /* FBSDKBoltsMeasurementEventListener.h */, + 771E8EB6E927AC1AE9224E750AB1243B /* FBSDKBoltsMeasurementEventListener.m */, + 6B58B12D0098350BFEF482A1274F3C4D /* FBSDKBridgeAPICrypto.h */, + 25C81CF10A1B913E3ECE5AE4BC865122 /* FBSDKBridgeAPICrypto.m */, + 8DDFB93965E515FAEA6FB7A51182E549 /* FBSDKBridgeAPIProtocol.h */, + D34AA74CF0863A8C0BD1947CC4821F52 /* FBSDKBridgeAPIProtocolNativeV1.h */, + 21E2EC6DEE56644A5CEFC5F1DD108201 /* FBSDKBridgeAPIProtocolNativeV1.m */, + 804DC229C4E97BF5C05E79781E0F3F75 /* FBSDKBridgeAPIProtocolType.h */, + B84EE2CCC07E78723DCBA09471C30EFC /* FBSDKBridgeAPIProtocolWebV1.h */, + 2ED2A1728265E00DF4FCBB52224C6768 /* FBSDKBridgeAPIProtocolWebV1.m */, + B3A5B22F878870CE770E0E9B97C28A59 /* FBSDKBridgeAPIProtocolWebV2.h */, + 7325C6E7A2B3643DE8F984C17DF372D7 /* FBSDKBridgeAPIProtocolWebV2.m */, + C2EF67EB1769993AA0E90FD5B40C0518 /* FBSDKBridgeAPIRequest.h */, + 80A48EDE1E87DD0DC00057715A434A28 /* FBSDKBridgeAPIRequest.m */, + 165375EAB1DC28C393658A5139DE1C57 /* FBSDKBridgeAPIRequest+Private.h */, + 7CA71C2FA19AA4DF65FFE25558510C11 /* FBSDKBridgeAPIResponse.h */, + D598B036F0405E2C2F154346BADBAF5E /* FBSDKBridgeAPIResponse.m */, + 74E292C58D36C37E72777B5729D63ECC /* FBSDKButton.h */, + EB1A78A2C977DABC4740C7FC08BBB2F7 /* FBSDKButton.m */, + DEFB08AC2015F546E03A7EBE7B531F87 /* FBSDKButton+Subclass.h */, + 8AB293581B2CC2E15600E1001DBBA77B /* FBSDKCloseIcon.h */, + 4864721E089588E27ACD5169546B84B7 /* FBSDKCloseIcon.m */, + 4ED0E1AC1869827BA4E401AEE8EF913D /* FBSDKColor.h */, + 2274A950D07549AC3A4D354548562493 /* FBSDKColor.m */, + 8AAFA5AFB7771A50B2E04EE16097AE2E /* FBSDKConstants.h */, + 23160D89AEAF98B6D83BB6EF3E05310E /* FBSDKConstants.m */, + 35F0D9C7E4A77DC844319010E2664C26 /* FBSDKContainerViewController.h */, + 15C51B4DF1030238AF6D7649E82788B5 /* FBSDKContainerViewController.m */, + B2AFE071DB027CD94877612CFD3D006B /* FBSDKCopying.h */, + 157A1552C1C00504C4E58FB57CF5F9EA /* FBSDKCoreKit.h */, + 9186B74312AC521E7BBF48001A87F4DB /* FBSDKCoreKit+Internal.h */, + 4AE311A8C1894882C4A2DCB8EE2013E8 /* FBSDKCrypto.h */, + 3686DA8DE42E552A6664A3515098B2AC /* FBSDKCrypto.m */, + 8761049FB9D429C3A55046B90C71D88B /* FBSDKDialogConfiguration.h */, + 893AE4BEC580A446CE3ABAEAD7B53BAF /* FBSDKDialogConfiguration.m */, + E557465C83E744378BD9E99E95EE5177 /* FBSDKDynamicFrameworkLoader.h */, + 06D6B35A2ACE17598D198FFFA920B997 /* FBSDKError.h */, + CCF95C1DF1520BBB95BB1817504B8776 /* FBSDKError.m */, + 9C68C4E5CCC43F6D12B543C207FF10C8 /* FBSDKErrorConfiguration.h */, + 51C741025D484F6D07E6AD3AEA7291A5 /* FBSDKErrorConfiguration.m */, + C241898523306A2F36BA957442AECE37 /* FBSDKErrorRecoveryAttempter.h */, + 8D7947DAFEA73B2AEDEE3110BE69C4C3 /* FBSDKErrorRecoveryAttempter.m */, + 8D104BC85E9A4726C0D1B381B549BABF /* FBSDKErrorRecoveryConfiguration.h */, + 26DE794F5D70A3E6AA3856E8B437F8A1 /* FBSDKErrorRecoveryConfiguration.m */, + BE01B3E5B1C99EAC2141DD5F8AB29249 /* FBSDKGraphErrorRecoveryProcessor.h */, + 2BE2BA427F26BC5B28DC6D9605083C58 /* FBSDKGraphErrorRecoveryProcessor.m */, + 9E6BD5EA50424CA24CA7148B1E4A106B /* FBSDKGraphRequest.h */, + FE3F695A6D43B329CB5E37EDF6B476D5 /* FBSDKGraphRequest.m */, + 1BFC2409C44B8CD69A6C03A63F32F7CA /* FBSDKGraphRequest+Internal.h */, + 3196869736428BB66717FE7BFDA19965 /* FBSDKGraphRequestBody.h */, + 51572F406F0AFA9A30C97AF6374A415C /* FBSDKGraphRequestBody.m */, + 90A9CEFADF5414847EB52B6DB5FB52C1 /* FBSDKGraphRequestConnection.h */, + C5971F3A2B0D25D55D3B109A7C6871E9 /* FBSDKGraphRequestConnection.m */, + 32CA3C7FC2ED01D33FB4A2353CF242BA /* FBSDKGraphRequestConnection+Internal.h */, + D2532E23A345066E6895AB5BFA257B95 /* FBSDKGraphRequestDataAttachment.h */, + EA0A354774F149974049A4C2978DCC7F /* FBSDKGraphRequestDataAttachment.m */, + 79B5D96C4AD1BAD8C5A16095FE40D904 /* FBSDKGraphRequestMetadata.h */, + A71B981C41660472869BD0AAB04382C0 /* FBSDKGraphRequestMetadata.m */, + 7A3FFE114934342A6293CAA369A5684A /* FBSDKGraphRequestPiggybackManager.h */, + C1C914E1A584C53FF0F2FF1FA95D8D97 /* FBSDKGraphRequestPiggybackManager.m */, + F3AA812465C239C11602D1E90810FE4A /* FBSDKIcon.h */, + ECC9B0749C18CB8AF78E670D8E76B4BC /* FBSDKIcon.m */, + 5649742E243B8F68ED6ABBD16F3AD910 /* FBSDKInternalUtility.h */, + EC03B77FB6AEBB7B42B5DDA048688205 /* FBSDKInternalUtility.m */, + 67BBE784A2801F01F65EAF698A7A4C65 /* FBSDKKeychainStore.h */, + C7EE49040D26C6D8282770B424B78159 /* FBSDKKeychainStore.m */, + AC13EFDCE9B8FF9E1CAE5BEBCA2D7C17 /* FBSDKKeychainStoreViaBundleID.h */, + C6C55AB8CC2B8BA526A40CE4AE0092BD /* FBSDKKeychainStoreViaBundleID.m */, + DD2D3EA91E3DEECA63A7E8D2F61622D0 /* FBSDKLogger.h */, + 1C9260CF6266A23A17B2C842C283E8D9 /* FBSDKLogger.m */, + 330D9CC147E914E18E2035F5B6441E5F /* FBSDKLogo.h */, + 2B3F8F8D1757081C79044C13664E9E9A /* FBSDKLogo.m */, + 162FD6F0F18A8A4BD0969AEABB0CC78C /* FBSDKMacros.h */, + B3B6ED0B1490827E42BF16379DC889D8 /* FBSDKMaleSilhouetteIcon.h */, + 86B1B9D4698C595DBEBFF71FBA796D03 /* FBSDKMaleSilhouetteIcon.m */, + AD6CB1A023BD68BC921696ADB8AB358D /* FBSDKMath.h */, + B1C83C2BB6E10A770B424DDCA045A3DA /* FBSDKMath.m */, + 8C4122009F6CCD4958E84541DAFBE9B1 /* FBSDKMonotonicTime.h */, + 6A029B649640C1353F893551FE5BEA9F /* FBSDKMonotonicTime.m */, + 78B2C5646EBCB59F70AD7D01594943A9 /* FBSDKMutableCopying.h */, + D83F322AAF71062208A8ED107E20BF12 /* FBSDKPaymentObserver.h */, + F970F2C40DCD372EE55CFFE828E80CAE /* FBSDKPaymentObserver.m */, + 1F11E9B9214843E4C733658288B46F50 /* FBSDKProfile.h */, + 9D227F15B3C39C8F240799FC97C03FC7 /* FBSDKProfile.m */, + 02865F67BBD6040226CBD1FDBA29F5A2 /* FBSDKProfile+Internal.h */, + 57875897B510F5382AD775C0A28734A2 /* FBSDKProfilePictureView.h */, + 3ACFCDE2F85688257805323CB7568B51 /* FBSDKProfilePictureView.m */, + 09F5BB824C951F2045215ED0D7633774 /* FBSDKServerConfiguration.h */, + 279F862324C9CEB1307D4D63451084C5 /* FBSDKServerConfiguration.m */, + E89EBAE854490CCB0C5339A4813E9B51 /* FBSDKServerConfiguration+Internal.h */, + 16E3A15FF65AF85ABCD42065EAAAF029 /* FBSDKServerConfigurationManager.h */, + 03F85D35C27D1671D1F41676A47CD249 /* FBSDKServerConfigurationManager.m */, + DF75B30DC0865920AE9E1B19F32AD80B /* FBSDKServerConfigurationManager+Internal.h */, + A52D1235E783D39988D2B6E470ADDA7F /* FBSDKSettings.h */, + C0BF39E0E35CD7253485DDB425C68004 /* FBSDKSettings.m */, + 4C592CC7FBD1BF17DD1A484916AA7E85 /* FBSDKSettings+Internal.h */, + 3A8296B0778C8F6FF86E096891EC3330 /* FBSDKSystemAccountStoreAdapter.h */, + 1E67958ECD2A430829F342463DD96876 /* FBSDKSystemAccountStoreAdapter.m */, + EF36FE5802B718C77F58F0A55F941FAD /* FBSDKTestUsersManager.h */, + BAB751FF25D6FB93E08CE08011C84895 /* FBSDKTestUsersManager.m */, + 9B6EB12A21506DEFAD3D1AC35360E429 /* FBSDKTimeSpentData.h */, + B70E4B942E4F5FFDC75D62D5A35A3A59 /* FBSDKTimeSpentData.m */, + CE853CD10ECD55C2CF0F9E4CC5C3118D /* FBSDKTriStateBOOL.h */, + 4224206215E4AE2302FDC96A58E94814 /* FBSDKTriStateBOOL.m */, + 6150512B0D0562C3F6C90F95463621B1 /* FBSDKTypeUtility.h */, + 55931A99F538C33CD1E60CBBF28D7444 /* FBSDKTypeUtility.m */, + 500B28CDDA39D831040A82A0735DA513 /* FBSDKUIUtility.h */, + 0B6A3059AD3E528BC8797D2FC76256C7 /* FBSDKURLConnection.h */, + 8C99BF979526D0E1A3D9A5677F3A18A6 /* FBSDKURLConnection.m */, + 485C58584AC1DB1D243A5A57D0B31866 /* FBSDKURLOpening.h */, + 18686D428534EFB249C7C2B72191F907 /* FBSDKUtility.h */, + 1A00FD05BA1219E73100D7E090F01F37 /* FBSDKUtility.m */, + 2FF996A5E210707A84723CEF66C72615 /* FBSDKViewImpressionTracker.h */, + 26339C8E6E8F5A145E0410B33CAEFC76 /* FBSDKViewImpressionTracker.m */, + AB8EC144295EC6E09242AFA1DE8FBB93 /* FBSDKWebDialog.h */, + 9CEC8B35C95959831EE1057B11322CE9 /* FBSDKWebDialog.m */, + DA70E0602DF174C01CBE4AAC4B2FDD83 /* FBSDKWebDialogView.h */, + 9A98A92B293F049F7956A464E5A69C36 /* FBSDKWebDialogView.m */, + 002664079DFD68B6479C6AB0F0232180 /* _FBSDKTemporaryErrorRecoveryAttempter.h */, + C9E21BE33CA995E3E18A1344838330D8 /* _FBSDKTemporaryErrorRecoveryAttempter.m */, + ); + name = arc; + sourceTree = ""; + }; + 8FF9755ACA8D8BC0033F70A1B9DA11C9 /* FBSDKShareKit */ = { + isa = PBXGroup; + children = ( + 37D367937646E4E05AD9519B21B1F566 /* FBSDKAppGroupAddDialog.h */, + E01F50F6336774FE25601285EEF01EE5 /* FBSDKAppGroupAddDialog.m */, + 6DF70211D471BD5D151D459A27B6B280 /* FBSDKAppGroupContent.h */, + E777FE88F6ABED3F476963B5B7D5C3C1 /* FBSDKAppGroupContent.m */, + 3B46B41FC5464B48A5B5275DA0C6D3E5 /* FBSDKAppGroupJoinDialog.h */, + 066BD5A6D3EB9C54F7FF6EC096EE0937 /* FBSDKAppGroupJoinDialog.m */, + A756AEA07B826EDE98ADCBC9C088F709 /* FBSDKAppInviteContent.h */, + 78C57BD49A74C10B14C023D390C280E1 /* FBSDKAppInviteContent.m */, + 924C84F16E12DF079D8940F931F315CC /* FBSDKAppInviteDialog.h */, + 386BE61982EC743B3A128214EC83CFCD /* FBSDKAppInviteDialog.m */, + A4A098339793E5BCA2444DB32B7612F4 /* FBSDKCheckmarkIcon.h */, + ADEFB298B7B2CC468183D78059BF9DF7 /* FBSDKCheckmarkIcon.m */, + DB675133B40BF7554858A2DB108E8BFF /* FBSDKGameRequestContent.h */, + 2A44558D108D044EF825B0B6D60677E9 /* FBSDKGameRequestContent.m */, + CE22ABAF0BB23620853203C50BFB6759 /* FBSDKGameRequestDialog.h */, + F0F21F7A00DAFE2805355B155B9130E2 /* FBSDKGameRequestDialog.m */, + EE99AA22341E1A198DE866465C3C3091 /* FBSDKGameRequestFrictionlessRecipientCache.h */, + B3806A1B94DBFDDC3984E1C3453BD094 /* FBSDKGameRequestFrictionlessRecipientCache.m */, + 6F5D9A88B97412C115AF0CFCA999F8C2 /* FBSDKLikeActionController.h */, + 8E629243AE4F868C8E75AC372D1DEC6A /* FBSDKLikeActionController.m */, + 4DCA2983B324CC477B5B90C4E6EF6536 /* FBSDKLikeActionControllerCache.h */, + 9690B619FE2AAD1DC6925B4C2698A069 /* FBSDKLikeActionControllerCache.m */, + B6CB010DF4304781A764957D945B27F3 /* FBSDKLikeBoxBorderView.h */, + 4EADBDF1DFD27B8D0B09D789CE9B66A6 /* FBSDKLikeBoxBorderView.m */, + 1E20D900533A9FD00F2DC7A1D0797CA4 /* FBSDKLikeBoxView.h */, + 9650DB5BE3E3803B05EEF2BA728FD08A /* FBSDKLikeBoxView.m */, + 21EBC77612C0C02A1BCC39116437EA23 /* FBSDKLikeButton.h */, + 7106B5AFA24BAAD954C531BB2060F0F6 /* FBSDKLikeButton.m */, + 9E2D8292478F266CEC5D9B4545F591A5 /* FBSDKLikeButton+Internal.h */, + D6E644B97F6CC42B51B503C2EF1D6C1A /* FBSDKLikeButtonPopWAV.h */, + 17CB7B06981F44E91DD1BCD38D59103C /* FBSDKLikeButtonPopWAV.m */, + B7D0AE422908565AD433E41A1778C632 /* FBSDKLikeControl.h */, + 1D2C8E2D65E652FD1F3E1F311E40A83B /* FBSDKLikeControl.m */, + C4AB5BA93BA69576C5A0A741C5004F05 /* FBSDKLikeControl+Internal.h */, + 84FC51CEFB7A3CAD3C1BD50FBFC5A2C2 /* FBSDKLikeDialog.h */, + FFDC8DE8F321A7C08F3D315635B2B056 /* FBSDKLikeDialog.m */, + 2089FF7B2CC0E94D22CE2F8418713448 /* FBSDKLikeObjectType.h */, + E523319DE2F5CBA2664EF1861CAE8385 /* FBSDKLikeObjectType.m */, + A7A6AB04D37A2DB4DEA04B11CAFFAB82 /* FBSDKLiking.h */, + 00A650A22497211EEC0B83849E6FA811 /* FBSDKMessageDialog.h */, + 924FEBD3A9C3142529E09988A1AF5D31 /* FBSDKMessageDialog.m */, + 68926D1EF195CCE0C2B10D9C7EA6D834 /* FBSDKMessengerIcon.h */, + 7A95DEF7BEDE8726F9906E6535257C80 /* FBSDKMessengerIcon.m */, + 12EBCA469BCC9A652E162B87170B3030 /* FBSDKSendButton.h */, + 921B4A2DE5C84AE72BF2515994B661FA /* FBSDKSendButton.m */, + C2BBB16B19727EFA6001D8DA5BFDAE63 /* FBSDKShareAPI.h */, + A8F6921FE57CF7CEB82F14DE7C7F1ADE /* FBSDKShareAPI.m */, + 8725E71411518E68EEDB1C8286EE55BB /* FBSDKShareButton.h */, + 48B7ACF3FD17DCB8BD8D200A9067137C /* FBSDKShareButton.m */, + 6B2E189F86CFA538D17F926EC1C45AC6 /* FBSDKShareConstants.h */, + 1A47608DFA1AF84E7AB9DCCF058C78F1 /* FBSDKShareConstants.m */, + 88875A5B7AE372A96E9961E4551A6C07 /* FBSDKShareDefines.h */, + FD8213BF5D4E3A775DE2CDFE95B11D27 /* FBSDKShareDialog.h */, + 739A8FE1539F5F0119E36821784CB8EE /* FBSDKShareDialog.m */, + BCB27FC0CB1D4381C0F19C75A5B1FBF4 /* FBSDKShareDialogMode.h */, + 5111C7A616531A62E55A8FC7C6C72498 /* FBSDKShareDialogMode.m */, + C88A57B8E059E22B232E9A1336DCB6C3 /* FBSDKShareError.h */, + 63BF64F3A37FC48CF494725985B8BBE2 /* FBSDKShareError.m */, + E9F08741DEF6A1D2B1AC19BDAA8B851A /* FBSDKShareKit.h */, + B63D1AD2ED4371D377A70F2324E760DE /* FBSDKShareKit+Internal.h */, + 02A139F6C34566CB47C35B489480DD07 /* FBSDKShareLinkContent.h */, + B6C469BF1DF1A22E1734404841744335 /* FBSDKShareLinkContent.m */, + B6F3BB37BEED8098957948DDEC201160 /* FBSDKShareLinkContent+Internal.h */, + 7541C21C9026B7882A0CA33D03229333 /* FBSDKShareOpenGraphAction.h */, + 5E2C28D858D12923C51D6A59FF47FAFC /* FBSDKShareOpenGraphAction.m */, + 9A1979D48C487FA3EDA1159EF3852F20 /* FBSDKShareOpenGraphContent.h */, + C57529A9BA3C0D011FCAA5B9F68062A5 /* FBSDKShareOpenGraphContent.m */, + B0F5B126E4385B53E9C73775BBC036F5 /* FBSDKShareOpenGraphObject.h */, + 8123DF664552E1E50D61750680BB63BA /* FBSDKShareOpenGraphObject.m */, + B516688D51560D55EF42ADE2FB6AA4AE /* FBSDKShareOpenGraphValueContainer.h */, + C082E4FF16E72FFD979AA487D6E60C1E /* FBSDKShareOpenGraphValueContainer.m */, + CCAB63AD3B56ABA526AA33F4B072751D /* FBSDKShareOpenGraphValueContainer+Internal.h */, + ADD174C9CB223131CA86CA2808E20A95 /* FBSDKSharePhoto.h */, + 4B8E40E6E3F7E645FF915A402B90C5FC /* FBSDKSharePhoto.m */, + A3F48D508CF9A089F6D2FBD3067DE053 /* FBSDKSharePhotoContent.h */, + F0BE2E93E589BAAD87094107404458C4 /* FBSDKSharePhotoContent.m */, + 44B2E26031F3FC70570B8D0355B9107A /* FBSDKShareUtility.h */, + 12D8EA79EFC598C83745B7B3A0BA4184 /* FBSDKShareUtility.m */, + 0CBBB605F74764838E88897E88411957 /* FBSDKShareVideo.h */, + FBD42041AE768C9FC5ED4984163A2D43 /* FBSDKShareVideo.m */, + C189A94CF246B97BF2987B6E1D8D19A2 /* FBSDKShareVideoContent.h */, + E8A41D002C9FB24CD74E5A6B80176BA2 /* FBSDKShareVideoContent.m */, + 3E96A05C4068F79754A471DFA28BAAA5 /* FBSDKSharing.h */, + F2CC45F6A7650A6695B67A7054C43C61 /* FBSDKSharingButton.h */, + DF9B508AC2E512E2315EE3967D33A86C /* FBSDKSharingContent.h */, + 03D972F8FD8FDE13BB9FF3BADFDE04EF /* Support Files */, + ); + path = FBSDKShareKit; + sourceTree = ""; + }; + 94585C70170894290F826E0D09791A8E /* Support Files */ = { + isa = PBXGroup; + children = ( + 22D35F8704195922C00F9CC8B9A3857E /* FBSDKCoreKit.xcconfig */, + D0BD5813C82F4D56A56445BCBF651D1D /* FBSDKCoreKit-Private.xcconfig */, + 4669EF085FC9747EEF39F5EB5BDA05E0 /* FBSDKCoreKit-dummy.m */, + B35B1A6E0BC37C179ED9897DB54C66BD /* FBSDKCoreKit-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/FBSDKCoreKit"; + sourceTree = ""; + }; + 952EEBFAF8F7E620423C9F156F25A506 /* Pods */ = { + isa = PBXGroup; + children = ( + 15A529C27057E4A57D259CBC6E6CE49C /* Pods-acknowledgements.markdown */, + BF59BC15D23E1E1912C8F334E7236813 /* Pods-acknowledgements.plist */, + 2309DCCA91F9883D4D79FEE1EF0099E8 /* Pods-dummy.m */, + 641AE05DD55E5E6AC1590CD7B4A18F97 /* Pods-resources.sh */, + EA48C5EE3CE4DF057217B99A5A223606 /* Pods.debug.xcconfig */, + 45B79D0956F6A1351479E569B774EE64 /* Pods.release.xcconfig */, + ); + name = Pods; + path = "Target Support Files/Pods"; + sourceTree = ""; + }; + AFB94B753B1CA4679A1C2B9C5B31ED92 /* Pods */ = { + isa = PBXGroup; + children = ( + 318DE6DB1C43BC39E260C1ACBC1D2339 /* Bolts */, + EDEFDFAD0452B1B8E9B99C0F36D15BE7 /* FBSDKCoreKit */, + 40F1C6894DB267A5CAE3498060F47A24 /* FBSDKLoginKit */, + 8FF9755ACA8D8BC0033F70A1B9DA11C9 /* FBSDKShareKit */, + ); + name = Pods; + sourceTree = ""; + }; + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { + isa = PBXGroup; + children = ( + 53F661C0CA7190D2CF05023FB33D61E4 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + CCA510CFBEA2D207524CDA0D73C3B561 /* Products */ = { + isa = PBXGroup; + children = ( + 1276BE5A9F1D39331198580AAA4221EB /* libBolts.a */, + B6B4D633C955BC761C6FFA1EF8A98580 /* libFBSDKCoreKit.a */, + DC219C5A4D9CF2E73465E5137C2B9ADC /* libFBSDKLoginKit.a */, + 687D294ACB2FA8374173C7BB1EBD1D0B /* libFBSDKShareKit.a */, + AE1FBE172796B6EE66C9CE028F91A9D6 /* libPods.a */, + ); + name = Products; + sourceTree = ""; + }; + CD53B378A2C85AC02E4C94B72B2396B1 /* Support Files */ = { + isa = PBXGroup; + children = ( + FD3AC0887DD1FC60BAE9387F80523E6B /* FBSDKLoginKit.xcconfig */, + 62AA5AFD1D7438053DE8446F795803E7 /* FBSDKLoginKit-Private.xcconfig */, + F25867AF7B57AE5CAFF6A7A97011505E /* FBSDKLoginKit-dummy.m */, + 7F1DE529D81212E5BBBD7F41CE5139A8 /* FBSDKLoginKit-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/FBSDKLoginKit"; + sourceTree = ""; + }; + D2411A5FE7F7A004607BED49990C37F4 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + 952EEBFAF8F7E620423C9F156F25A506 /* Pods */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + EDEFDFAD0452B1B8E9B99C0F36D15BE7 /* FBSDKCoreKit */ = { + isa = PBXGroup; + children = ( + 94585C70170894290F826E0D09791A8E /* Support Files */, + 885A2BF9367C2A3CF8D74CD10FD14D4A /* arc */, + 0CCA37610B869AEE4F26E4D94532229F /* no-arc */, + ); + path = FBSDKCoreKit; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 1A19916C2132F3208272B8CEB94A68DE /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0ECE24B940F9019FF559DF6435234863 /* FBSDKAppGroupAddDialog.h in Headers */, + EDC74CD08B6D32181CD98A3DE1A2DD7F /* FBSDKAppGroupContent.h in Headers */, + C5E4AF06F8FC98D2C53F1F553EC49DE7 /* FBSDKAppGroupJoinDialog.h in Headers */, + EE1E0445D5539A5A83D898095665B993 /* FBSDKAppInviteContent.h in Headers */, + 5E1E334836A0290430ED7B0F88616D18 /* FBSDKAppInviteDialog.h in Headers */, + 07729073627D94E620F85E370167BE72 /* FBSDKCheckmarkIcon.h in Headers */, + 82C4EF653777E50D349F845C3A147749 /* FBSDKGameRequestContent.h in Headers */, + 89A9445D0396D959926D55E3FC6CA06A /* FBSDKGameRequestDialog.h in Headers */, + EBBB2E68E5C2BB4A392A6B52AAB6A65D /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */, + 82A86E910E3E517AEFA5E72CFF5712AD /* FBSDKLikeActionController.h in Headers */, + 93169A6D1E97B3A5CD2CF6DD1AFA5EF0 /* FBSDKLikeActionControllerCache.h in Headers */, + 37A2F9456A8F405373ACBFAE17371CB6 /* FBSDKLikeBoxBorderView.h in Headers */, + 635D4231CBC6EB7F6F55E68F921AE7DA /* FBSDKLikeBoxView.h in Headers */, + DCCBA89A8A2710FF7E054F69EC964911 /* FBSDKLikeButton+Internal.h in Headers */, + 9C22E4B97819BA5E83843C8385CB00E4 /* FBSDKLikeButton.h in Headers */, + A72BFDB0F5E6B612043D662F38375CD5 /* FBSDKLikeButtonPopWAV.h in Headers */, + 54734BA378F71909763FE9B12579CC3F /* FBSDKLikeControl+Internal.h in Headers */, + 63871AB3E42751D51363EE4D42324D94 /* FBSDKLikeControl.h in Headers */, + B9BFA96DA9A7417DBF08E05811F7608B /* FBSDKLikeDialog.h in Headers */, + 326E6464B5D07DD06BF0AC33528A6272 /* FBSDKLikeObjectType.h in Headers */, + D8F8C8278B94951DD5F0C4C70DB4E454 /* FBSDKLiking.h in Headers */, + 8E43998099C63D2A9D3B8069D52D81DE /* FBSDKMessageDialog.h in Headers */, + 599A60532E54BFFD2ACBF2723F447DFA /* FBSDKMessengerIcon.h in Headers */, + 56AE9578D5A1EE4FE77E255E49E364FF /* FBSDKSendButton.h in Headers */, + 64489CCAD159DF9E9E7A54E2FE713EF2 /* FBSDKShareAPI.h in Headers */, + 467C3ABFCF99EFCEF7FAE6A1B80F12C5 /* FBSDKShareButton.h in Headers */, + D05BD8665A0A93538E3C451535DFE58E /* FBSDKShareConstants.h in Headers */, + 8EB23BAAD63A613F57DF8CD3C72B7259 /* FBSDKShareDefines.h in Headers */, + BCA75F0A9F1A771DC78B1F8EF1EA3A3B /* FBSDKShareDialog.h in Headers */, + BC3A05425B4E79ED86788327BEE3A453 /* FBSDKShareDialogMode.h in Headers */, + 59E5F7CFD14C3487F37C1D17EFAB8016 /* FBSDKShareError.h in Headers */, + B52EA95F5243B523B317DF9FEE9F1E22 /* FBSDKShareKit+Internal.h in Headers */, + 66B869BCC4227C5BE116BF12FDCD8E13 /* FBSDKShareKit.h in Headers */, + CAE9DB888185C6931D53C05745B82E5D /* FBSDKShareLinkContent+Internal.h in Headers */, + F794A07C3CF58F784345DCEA85E814BA /* FBSDKShareLinkContent.h in Headers */, + C26467C6BEB73B1CA99181DCC5BFB515 /* FBSDKShareOpenGraphAction.h in Headers */, + 9AD2C1B0B5D075843F4A50DA2F7A54EA /* FBSDKShareOpenGraphContent.h in Headers */, + 086A67663ECD9FDD0F048DC84683E298 /* FBSDKShareOpenGraphObject.h in Headers */, + BED6A27BF7072DDE75C15ECDEC54865C /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */, + 8E85C6D1BA82C015543BF6647AB81363 /* FBSDKShareOpenGraphValueContainer.h in Headers */, + BDE3E86FAB8FAEB7B9A4E8ACB002CF0A /* FBSDKSharePhoto.h in Headers */, + 95C048BCA333A52658C95DB524B70428 /* FBSDKSharePhotoContent.h in Headers */, + 1AA02F1D34B3617DE8A640A0CE1DACEB /* FBSDKShareUtility.h in Headers */, + 7153C03C230E494E41AF946C8FE45A4B /* FBSDKShareVideo.h in Headers */, + 76C0743B4B421043366A6302A19A16B3 /* FBSDKShareVideoContent.h in Headers */, + 02967D3BF0AE64AAED377E0BD9F0111B /* FBSDKSharing.h in Headers */, + AFF31C168316FFEA345DCCB873752DB0 /* FBSDKSharingButton.h in Headers */, + 5C20FD4ED2A23F07C999818F3BA49E71 /* FBSDKSharingContent.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3E02813C30D26A6F02927C79F5D7D255 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 4BFB9EC48CD7CE6C71367B494F82D892 /* BFAppLink.h in Headers */, + 2CC98680408DDD432D1394C212FAE776 /* BFAppLinkNavigation.h in Headers */, + CDC7BB2EB9E1AFF7F11E4B7E057E4EDD /* BFAppLinkResolving.h in Headers */, + CF397493647953A85CDF077F0F1F4817 /* BFAppLinkReturnToRefererController.h in Headers */, + DCBAE86037E81F1497936455B43C9065 /* BFAppLinkReturnToRefererView.h in Headers */, + 783DDF2DD53195D9AC1863EB6095BA29 /* BFAppLinkReturnToRefererView_Internal.h in Headers */, + 1D9B660498B96AFADC6BD055D94E6269 /* BFAppLinkTarget.h in Headers */, + AEB99931D89BD7370042412945D4667C /* BFAppLink_Internal.h in Headers */, + A5BAA576C0CEE292FA3962B08F236DDF /* BFCancellationToken.h in Headers */, + 67604095ED041F533A408815BB02A6E2 /* BFCancellationTokenRegistration.h in Headers */, + 3DDC0185933F124931CE4962AABAB04E /* BFCancellationTokenSource.h in Headers */, + 6C8783ED1C88B44C9E3D1790CFE41826 /* BFDefines.h in Headers */, + 46907396399AC7ABE8902C4415F298F6 /* BFExecutor.h in Headers */, + 64775268853C467B962519877F2B4849 /* BFMeasurementEvent.h in Headers */, + 1CD8D6D26B1EC48DA95F1E213A68B8C9 /* BFMeasurementEvent_Internal.h in Headers */, + 943E672E2E8964259A108CFCA62618E4 /* BFTask.h in Headers */, + 35D34BFAFCB107B8A052AF1C7546E661 /* BFTaskCompletionSource.h in Headers */, + EB23E339DBA43E1DA3185BB324CEA54B /* BFURL.h in Headers */, + 9DF452BA99BA653723EF19F53745D85C /* BFURL_Internal.h in Headers */, + 5ECB96604E6A661FABCDF90186CFAB9F /* BFWebViewAppLinkResolver.h in Headers */, + 5E56B197B3451E124FB0B19972703BD1 /* Bolts.h in Headers */, + 4CD7334521294D0CB39186630A7B34DF /* BoltsVersion.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 75EC6E4BB111633BED714695B117A909 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 7B2C42E4C07416AF7B0B47A94C5D449B /* FBSDKAccessToken.h in Headers */, + 0D33D8B56477808D44FB51F1B5178A16 /* FBSDKAccessTokenCache.h in Headers */, + 0DF6A2FF0C411278A2A3F34AF834CD77 /* FBSDKAccessTokenCacheV3.h in Headers */, + 1B87820A977924BF9D822310F62C317F /* FBSDKAccessTokenCacheV3_17.h in Headers */, + B058FE7A182DC5347E8F65FD5DB9AC2C /* FBSDKAccessTokenCacheV3_21.h in Headers */, + D72A3BEA9AD7CB2D4C025CD197D7D39C /* FBSDKAccessTokenCacheV4.h in Headers */, + 6E447AD7EC572B2C26DEB819F352E8FB /* FBSDKAccessTokenCaching.h in Headers */, + 2A6467F8C1AAB711191D5206AF4565D8 /* FBSDKAppEvents+Internal.h in Headers */, + 0B53C42D59A3930785AFF339A0CAF0D9 /* FBSDKAppEvents.h in Headers */, + 3B495133DCFC7C6770A66ABD657A3759 /* FBSDKAppEventsDeviceInfo.h in Headers */, + E6D9CE27BE4674CF7755B9F82B1E58AA /* FBSDKAppEventsState.h in Headers */, + 37866BE47097F3430E848333A7DC7C52 /* FBSDKAppEventsStateManager.h in Headers */, + DCFE87B61173D909B11DDAA4F71788DE /* FBSDKAppEventsUtility.h in Headers */, + F9021083802664367043208DEFB7E6EA /* FBSDKAppLinkResolver.h in Headers */, + E725B8B6F2DBEEA2C8106229737D91AC /* FBSDKAppLinkUtility.h in Headers */, + 532F567B13329D5E08A1B4CD0E0CF948 /* FBSDKApplicationDelegate+Internal.h in Headers */, + 64F899D82FC4BB6ECB8532DC080A6F50 /* FBSDKApplicationDelegate.h in Headers */, + 3F7EC364751F75C1A0A04250BFED217A /* FBSDKAudioResourceLoader.h in Headers */, + 7CE6D5210A69563E538E075CF0C96C83 /* FBSDKBase64.h in Headers */, + CFCB25F51BCA1DEA91F87F71B10504EA /* FBSDKBoltsMeasurementEventListener.h in Headers */, + 3F64A64ACBA4C6FD46BCFBC3AD4F8727 /* FBSDKBridgeAPICrypto.h in Headers */, + 5116B8A961D5089C882E9AC987F2ADE9 /* FBSDKBridgeAPIProtocol.h in Headers */, + 3A6FC29C2DC181498FC8CD8DFA062A04 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */, + C6C1716C620893DE14E8439744E41BB8 /* FBSDKBridgeAPIProtocolType.h in Headers */, + FF6874A3553124FB49AD0FC2F3B15150 /* FBSDKBridgeAPIProtocolWebV1.h in Headers */, + CA7C818918D88860E2609BC9106C9810 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */, + 6397F66C8ACEC3576BA93356FE55A070 /* FBSDKBridgeAPIRequest+Private.h in Headers */, + 94E2FC6A422448963CEAE61D410E16FD /* FBSDKBridgeAPIRequest.h in Headers */, + 3DAA93F17722BDE26B1EF1720449F883 /* FBSDKBridgeAPIResponse.h in Headers */, + 5CEF0D94936D45B939E630AF012A65CF /* FBSDKButton+Subclass.h in Headers */, + E1F83DC0FE5A3C7C03561FA9CE7FE6A1 /* FBSDKButton.h in Headers */, + 253008BA1D1380B9F00039AD006DC5E9 /* FBSDKCloseIcon.h in Headers */, + B58593A4A44DC201302965C4E75E3EA0 /* FBSDKColor.h in Headers */, + 41B9DD20AD35BD9BBAB55C2B9B09BF80 /* FBSDKConstants.h in Headers */, + 822DB121B5BA73535DE85FCC300706BC /* FBSDKContainerViewController.h in Headers */, + A8D3E43445F3B76B2EF512055E638984 /* FBSDKCopying.h in Headers */, + B53892E01BE831E973296B75B7EA7822 /* FBSDKCoreKit+Internal.h in Headers */, + 10285394D2429F0345EEAE31AA791DE8 /* FBSDKCoreKit.h in Headers */, + 1B7595D44BBEF7C62FC58770579051DA /* FBSDKCrypto.h in Headers */, + F8C1154884436F4CDA773DBDD5B4B224 /* FBSDKDialogConfiguration.h in Headers */, + 5C333A12F6DEE056AAE24F1F3ECD1AEB /* FBSDKDynamicFrameworkLoader.h in Headers */, + 4669B1FD4393A31136FECE7E33E2E615 /* FBSDKError.h in Headers */, + E7B50434828FA042869D78C54A58AF90 /* FBSDKErrorConfiguration.h in Headers */, + B7CE8A07ECC3C3F0994183B658C1FBB6 /* FBSDKErrorRecoveryAttempter.h in Headers */, + 530CEAF78868367987ABD76335D3CC8A /* FBSDKErrorRecoveryConfiguration.h in Headers */, + 5D00B3FD1E10CA8314EE7B2E6F639AB7 /* FBSDKGraphErrorRecoveryProcessor.h in Headers */, + 172CB4824EAF09637FD6F2DB40BB2D40 /* FBSDKGraphRequest+Internal.h in Headers */, + 73A8CB489961CC597812CB33A21E25EB /* FBSDKGraphRequest.h in Headers */, + BF8FA8030BF4A7E7C81C845DBF9F66E2 /* FBSDKGraphRequestBody.h in Headers */, + E72B8ECC477EE9195AD7F41392B4CE7B /* FBSDKGraphRequestConnection+Internal.h in Headers */, + EBB4A13CEE376C95546B2347E2D7250E /* FBSDKGraphRequestConnection.h in Headers */, + 76D582E94A30659780B659442279237E /* FBSDKGraphRequestDataAttachment.h in Headers */, + 7F63B791432A0A4F438C96CD7E0CD9BC /* FBSDKGraphRequestMetadata.h in Headers */, + 6ADEB932DF2052B403A8081F7F6FB6FD /* FBSDKGraphRequestPiggybackManager.h in Headers */, + FF337FC6A01267CFC462853F3EDF379B /* FBSDKIcon.h in Headers */, + A05B7BAC0ADC16FE809F6DCABEBEC818 /* FBSDKInternalUtility.h in Headers */, + 06F3235CA26951EF727E3C1FDA0A06A7 /* FBSDKKeychainStore.h in Headers */, + D374EC2D04FBBA8C2FFB7E58174FCFE1 /* FBSDKKeychainStoreViaBundleID.h in Headers */, + AD5D1D2FA4043A5E2F4A7125384450C4 /* FBSDKLogger.h in Headers */, + D033A089BB2224AA3A0156A72B49B3FB /* FBSDKLogo.h in Headers */, + D5453B795872AF7A76DA1F01795E5B36 /* FBSDKMacros.h in Headers */, + 1E252EBF9D39E9E6C2AAA46DDD8A58EE /* FBSDKMaleSilhouetteIcon.h in Headers */, + 0465F0E4BECA2CE5C64F1251A7BA1922 /* FBSDKMath.h in Headers */, + C4810A644FD861EFB3501D98E71DC4CA /* FBSDKMonotonicTime.h in Headers */, + FB04BF441608674C807973A587CC5963 /* FBSDKMutableCopying.h in Headers */, + 15CB8B5F3E5C004528DF130D5F74280E /* FBSDKPaymentObserver.h in Headers */, + 17E9812BBA8F1D9195470696536D49E1 /* FBSDKProfile+Internal.h in Headers */, + 1812C122239FADE20B76682591144642 /* FBSDKProfile.h in Headers */, + 167B40D0426290E0222F4E484A61847C /* FBSDKProfilePictureView.h in Headers */, + B9765A071F255916280A2E79F0720FA5 /* FBSDKServerConfiguration+Internal.h in Headers */, + CA5018821A0E860850A7A0664134B997 /* FBSDKServerConfiguration.h in Headers */, + 43FE98D2FD3B83F90B0066D11CC7468A /* FBSDKServerConfigurationManager+Internal.h in Headers */, + 700CAB9C03DEBA19C44BD5E8D0F2A3C4 /* FBSDKServerConfigurationManager.h in Headers */, + 6F5B7115A39E3C475866B1EA0D5AD5AF /* FBSDKSettings+Internal.h in Headers */, + 73B2935A00AEA602158F897267556E86 /* FBSDKSettings.h in Headers */, + 7EE7F793B552F7D4781DBEBB3FA9A422 /* FBSDKSystemAccountStoreAdapter.h in Headers */, + 048C3C60838C918CC1E9EDA7A39FEADB /* FBSDKTestUsersManager.h in Headers */, + 63CC62BCC070A6BF1BDEC844E6E201FC /* FBSDKTimeSpentData.h in Headers */, + 556B4BEE4477186865CB420D799EEB56 /* FBSDKTriStateBOOL.h in Headers */, + 98592F12C4012F47B2A972CA886D054E /* FBSDKTypeUtility.h in Headers */, + FE176F860A032686AA09D6C366D2C9EC /* FBSDKUIUtility.h in Headers */, + 762A6D233F9ECF033FF6A93EE8D1B312 /* FBSDKURLConnection.h in Headers */, + C1E2EE58E2EA7629E26E8CCB79BB17D6 /* FBSDKURLOpening.h in Headers */, + 542A4EDD600F5D4F80E88E64F8348755 /* FBSDKUtility.h in Headers */, + 7667B428B685BFA7941575697E3FD591 /* FBSDKViewImpressionTracker.h in Headers */, + 1932B23ECC778C829EA995A6F74F5D5B /* FBSDKWebDialog.h in Headers */, + 02CE817C10D60DB802D528770AECDD02 /* FBSDKWebDialogView.h in Headers */, + 8B622D2B8F97CB71EE1273AD81A43343 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DACD2E7B73C5EAFB38585823CC5A8D64 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + FC8DF4009AA07E88871E128E58986C8A /* FBSDKLoginButton.h in Headers */, + 1E8B8261F4EAD05CD057F4714125D009 /* FBSDKLoginCompletion+Internal.h in Headers */, + 1A7EA98C986EAC775428C6F2E3CF145B /* FBSDKLoginCompletion.h in Headers */, + 3E8C87F48E3786E177DE28E61F4E57AB /* FBSDKLoginConstants.h in Headers */, + 71C5F8270B32558033282502BC3D8A42 /* FBSDKLoginError.h in Headers */, + 9446F878E86942E6AF0487891E865A03 /* FBSDKLoginKit+Internal.h in Headers */, + EAFC5D6DFE023A9DA433BDEFAD30C6E8 /* FBSDKLoginKit.h in Headers */, + F2AA769C78097E16F72E050AB93DE00D /* FBSDKLoginManager+Internal.h in Headers */, + 6515776E0BD305B2124402129A1C1B20 /* FBSDKLoginManager.h in Headers */, + 751995A70FBC691A9848C197D354D3F9 /* FBSDKLoginManagerLogger.h in Headers */, + 423330C6B01AD37FF96720AC2767E01A /* FBSDKLoginManagerLoginResult+Internal.h in Headers */, + 0E4C46F8ADD580C0AFE225BBDBA64D83 /* FBSDKLoginManagerLoginResult.h in Headers */, + 66521FE3823C4D51B4803BEDB1B6569F /* FBSDKLoginTooltipView.h in Headers */, + C1D984D893C9B2F151CD01FA53F38FC1 /* FBSDKLoginUtility.h in Headers */, + B0175E1CC830A5A82913B4A7F0152C0F /* FBSDKTooltipView.h in Headers */, + D886FDCCE6C9D581FB54D0279553BC46 /* _FBSDKLoginRecoveryAttempter.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 228A8DE101DBB992D8BCEC1E4FD9FFB7 /* FBSDKLoginKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 008AF45A7DCEC840A23CB8A8F28940B5 /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */; + buildPhases = ( + 52A557D9D6AD36B9EE87EC5D7D2B9F16 /* Sources */, + 40AC19B3F8E01DF016229112D2367F46 /* Frameworks */, + DACD2E7B73C5EAFB38585823CC5A8D64 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 498553B7AB02C22E1DDAEC22B3A757E5 /* PBXTargetDependency */, + ); + name = FBSDKLoginKit; + productName = FBSDKLoginKit; + productReference = DC219C5A4D9CF2E73465E5137C2B9ADC /* libFBSDKLoginKit.a */; + productType = "com.apple.product-type.library.static"; + }; + 3BCD0D10E30222706C12D7C3102FA893 /* FBSDKShareKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = F1929F0DB463DFC558DC2ACC6C8BB716 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */; + buildPhases = ( + 33364A72F9A20C06C4CE43992252DF26 /* Sources */, + A14B9249809C06A9D3AEFBA9B23EA350 /* Frameworks */, + 1A19916C2132F3208272B8CEB94A68DE /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 94EE6831D03FF605E8D58953481383B1 /* PBXTargetDependency */, + ); + name = FBSDKShareKit; + productName = FBSDKShareKit; + productReference = 687D294ACB2FA8374173C7BB1EBD1D0B /* libFBSDKShareKit.a */; + productType = "com.apple.product-type.library.static"; + }; + 5D317E2C239D207CE072A2C1FE79D30A /* Bolts */ = { + isa = PBXNativeTarget; + buildConfigurationList = 508AC5ACB7A2105F131E3E1DF5F1A124 /* Build configuration list for PBXNativeTarget "Bolts" */; + buildPhases = ( + B5F6CCCA510D0D147183CDBAD7F9738A /* Sources */, + 563EEC817F4B39196257BF87E9BAF65B /* Frameworks */, + 3E02813C30D26A6F02927C79F5D7D255 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Bolts; + productName = Bolts; + productReference = 1276BE5A9F1D39331198580AAA4221EB /* libBolts.a */; + productType = "com.apple.product-type.library.static"; + }; + 7514A5BBFEA8726C550640239F35CF9F /* FBSDKCoreKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 318D64157D92C3305C44018C69F6714D /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */; + buildPhases = ( + 02D5247A5861926B03B9815A1BBD8978 /* Sources */, + 1E72EB589808F87950D233F18FFBBD2E /* Frameworks */, + 75EC6E4BB111633BED714695B117A909 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + E956503DD1B5D1958CD15106C3FCA103 /* PBXTargetDependency */, + ); + name = FBSDKCoreKit; + productName = FBSDKCoreKit; + productReference = B6B4D633C955BC761C6FFA1EF8A98580 /* libFBSDKCoreKit.a */; + productType = "com.apple.product-type.library.static"; + }; + A063F697CC37CD18346F0404AED11874 /* Pods */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3860FF88C80D2DA6686687257F735AD1 /* Build configuration list for PBXNativeTarget "Pods" */; + buildPhases = ( + 428E3CDA6242B355796622DBAA26DD29 /* Sources */, + 1C1DD4BE9A8F7C910DF0F3E77BF7C62D /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 54884D0DF003C3460B42231FCBA904C0 /* PBXTargetDependency */, + 1154ED62C9EBAFBFBEE5E01C23702978 /* PBXTargetDependency */, + A8C11B55DBA1CE791C24C8C9232EED47 /* PBXTargetDependency */, + 6943C731F6F55D5EA7D991FAAE3835C7 /* PBXTargetDependency */, + ); + name = Pods; + productName = Pods; + productReference = AE1FBE172796B6EE66C9CE028F91A9D6 /* libPods.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; + }; + buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 7DB346D0F39D3F0E887471402A8071AB; + productRefGroup = CCA510CFBEA2D207524CDA0D73C3B561 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 5D317E2C239D207CE072A2C1FE79D30A /* Bolts */, + 7514A5BBFEA8726C550640239F35CF9F /* FBSDKCoreKit */, + 228A8DE101DBB992D8BCEC1E4FD9FFB7 /* FBSDKLoginKit */, + 3BCD0D10E30222706C12D7C3102FA893 /* FBSDKShareKit */, + A063F697CC37CD18346F0404AED11874 /* Pods */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 02D5247A5861926B03B9815A1BBD8978 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F8C616C859912B70A4CD872EA8F7A23E /* FBSDKAccessToken.m in Sources */, + BD53A7AA25C4819BD49089938C6C18B3 /* FBSDKAccessTokenCache.m in Sources */, + 36B027BFBD5E91EBA7EBE9B430CAEBAE /* FBSDKAccessTokenCacheV3.m in Sources */, + B6FF39AE12B24C61E4E63F63329AD042 /* FBSDKAccessTokenCacheV3_17.m in Sources */, + 72AC09070892237ADC0AE8C2876565AA /* FBSDKAccessTokenCacheV3_21.m in Sources */, + D4401D7CDC50F868125D07720EE0080D /* FBSDKAccessTokenCacheV4.m in Sources */, + 965BA8F00CE3D6909531A1A75CECA2B4 /* FBSDKAppEvents.m in Sources */, + 91C2251DF36023609ABFDE929F850422 /* FBSDKAppEventsDeviceInfo.m in Sources */, + 83E613CF96D388F4BAB48941647A294A /* FBSDKAppEventsState.m in Sources */, + 509F398D211295351837BB6AC960D4FA /* FBSDKAppEventsStateManager.m in Sources */, + 63FA668AF7EEB9D054D1B49A2B6C7FD7 /* FBSDKAppEventsUtility.m in Sources */, + C4C1A3B4D31942461B566C5930B08591 /* FBSDKAppLinkResolver.m in Sources */, + 2D9204953A03CF4E39CDAB8A7D98F4EB /* FBSDKAppLinkUtility.m in Sources */, + 2A4F558F44525BAC6EE6F823DB600240 /* FBSDKApplicationDelegate.m in Sources */, + 27482D67BFDB88CDD0E7668C5328EDCC /* FBSDKAudioResourceLoader.m in Sources */, + 76CE6EAA24A997F35EE30A2085F5B4A5 /* FBSDKBase64.m in Sources */, + 948272BE3CAE53C5DDA5000B8A51AEDD /* FBSDKBoltsMeasurementEventListener.m in Sources */, + 86CD43D3731553C5A3ABACC389FC1E0C /* FBSDKBridgeAPICrypto.m in Sources */, + C176728EB7BE2514A1A18D95EF59B9FA /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */, + 6445E957696C984621418F36BC830C57 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */, + 5B646A14E78903975331A483A9491A61 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */, + F1CA949069BA75B782FA550701EFF48F /* FBSDKBridgeAPIRequest.m in Sources */, + 2F5B65C786B12D97BF3FEB32ECEC8057 /* FBSDKBridgeAPIResponse.m in Sources */, + ECD065627810DD77F59266E24A503AA9 /* FBSDKButton.m in Sources */, + F4F5599031266758C5A6EE7027DF6BD8 /* FBSDKCloseIcon.m in Sources */, + 8BC46BEC754DD9900B8B3F76317A3244 /* FBSDKColor.m in Sources */, + 26A5469794638EF2972A7F3D6B0A0E36 /* FBSDKConstants.m in Sources */, + 9BBEAB67727DCFD56D431780FE44F80B /* FBSDKContainerViewController.m in Sources */, + 39C5C564C02CF5ABB08BE513AFBF9C1F /* FBSDKCoreKit-dummy.m in Sources */, + B3F0AFB7BC6557C56B58AF827C0B5484 /* FBSDKCrypto.m in Sources */, + B32F7CCC98EB822CCF21FE7303F43841 /* FBSDKDialogConfiguration.m in Sources */, + 00FA0FE05D9A1D51D0B9DAB959758414 /* FBSDKDynamicFrameworkLoader.m in Sources */, + 8226E400E3E52E1D55BFA73458A980E7 /* FBSDKError.m in Sources */, + E74D71AE166349C35C42F3D5ABD5B1C9 /* FBSDKErrorConfiguration.m in Sources */, + D5290C47C521C3B4E98DD520A05354FE /* FBSDKErrorRecoveryAttempter.m in Sources */, + 76AD1FAA34AD4CA2BD3F7C18911BFC30 /* FBSDKErrorRecoveryConfiguration.m in Sources */, + 8C9FDE665A8D5B02FC558942B7782E56 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */, + 5750590682AA775047A6F7793463BADE /* FBSDKGraphRequest.m in Sources */, + BE291760D3E5058139FBA34F1168E703 /* FBSDKGraphRequestBody.m in Sources */, + A5D658E4E7750FE8C4DB6C940440D6C5 /* FBSDKGraphRequestConnection.m in Sources */, + 8FB2338CD7F58B919C02EAC4A23417B2 /* FBSDKGraphRequestDataAttachment.m in Sources */, + 4420194CD9E598D9E8831F5F1E471CC1 /* FBSDKGraphRequestMetadata.m in Sources */, + 7E169254B8EFFB64AE77877D4ACC5752 /* FBSDKGraphRequestPiggybackManager.m in Sources */, + F976D265D4CAA37B54A9444E072C4934 /* FBSDKIcon.m in Sources */, + 9821757B5F4E33C440DFC1403937F61D /* FBSDKInternalUtility.m in Sources */, + E610D8D46F5B853A640B9EB01EB105D8 /* FBSDKKeychainStore.m in Sources */, + 09062BEA7F9F32BA8461FCB10A833BBA /* FBSDKKeychainStoreViaBundleID.m in Sources */, + A28F374AB5DF6E8893BD0AC3EDB38AD2 /* FBSDKLogger.m in Sources */, + 37ECBAB9AF588A5875B245828942E9EB /* FBSDKLogo.m in Sources */, + 41FDC6A65A60AEEDE0F52ACCE1C8B6AC /* FBSDKMaleSilhouetteIcon.m in Sources */, + 622B46A901E22E5D91BB3C90DE9CDFCC /* FBSDKMath.m in Sources */, + 86E1F443BB682D0F2A9FCE4C3D4F6B6F /* FBSDKMonotonicTime.m in Sources */, + 22F938415D14269663488FFF723F5D8D /* FBSDKPaymentObserver.m in Sources */, + 74E5BDDFB7CB47CA66A9A0C5A80BC104 /* FBSDKProfile.m in Sources */, + 959259BB92C987851AD969FC45E45406 /* FBSDKProfilePictureView.m in Sources */, + B3BE0C9C5D12D46FF7986661A1F9A875 /* FBSDKServerConfiguration.m in Sources */, + 29DE01B3141EC629AF9F713E96A78805 /* FBSDKServerConfigurationManager.m in Sources */, + 83224CF6EA0FE34F75744507ADF75FD2 /* FBSDKSettings.m in Sources */, + F9DD490313C1A34374EB935EA6F504E7 /* FBSDKSystemAccountStoreAdapter.m in Sources */, + 27B5C50C845CB0944C503B035D6011DF /* FBSDKTestUsersManager.m in Sources */, + 538C67D301EE9960A461E12E29DC104C /* FBSDKTimeSpentData.m in Sources */, + 6212E3FF00DD6A2AA02CE34D9BD2334D /* FBSDKTriStateBOOL.m in Sources */, + CA9558AD7F6AC94824C9C9EF39E0C01B /* FBSDKTypeUtility.m in Sources */, + 6E8B990B944235DC3ECAC6D925DB2C8C /* FBSDKURLConnection.m in Sources */, + A81B6899E45E0474D72759E0671E3EEA /* FBSDKUtility.m in Sources */, + C71ADB1D792D37972836F49970FF7F56 /* FBSDKViewImpressionTracker.m in Sources */, + 931164E42CFCA82B5C9CED43CC769D37 /* FBSDKWebDialog.m in Sources */, + 5A40CA30F0B7BDCE37E9F1FAF3296215 /* FBSDKWebDialogView.m in Sources */, + E8280DA9138A9950C934A0F13A7A2DA5 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33364A72F9A20C06C4CE43992252DF26 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 80E5B1D10F29D06CA8F17EC6D8D3F5AA /* FBSDKAppGroupAddDialog.m in Sources */, + 6BB2309BEFAB49815750D7EFA142AD47 /* FBSDKAppGroupContent.m in Sources */, + 9D9BFBBA2F59972D7E86515C53035F98 /* FBSDKAppGroupJoinDialog.m in Sources */, + EA426EC658ED2A630090136BCBDCF8F8 /* FBSDKAppInviteContent.m in Sources */, + FFD2A3A9288445D4A3992F29769A080C /* FBSDKAppInviteDialog.m in Sources */, + F1FC725A6D5E9E16D3824E4521668E1D /* FBSDKCheckmarkIcon.m in Sources */, + 752DE38A344B49BBAEB857E0EB978743 /* FBSDKGameRequestContent.m in Sources */, + BA99E18915E6D55C1DDEFAB80BB4ED98 /* FBSDKGameRequestDialog.m in Sources */, + A770DF35E61B676731FA5870E67A812C /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */, + 6334BBBF5DFE71A39F4B78F452EB3B16 /* FBSDKLikeActionController.m in Sources */, + 1AC335060DAA36EE9CC7A9C8FA74CFFE /* FBSDKLikeActionControllerCache.m in Sources */, + 3E3A02D5AA0C2AA0E5C6BAB31A195D91 /* FBSDKLikeBoxBorderView.m in Sources */, + 173FD61B3C3D86AD287305F713A7FD1B /* FBSDKLikeBoxView.m in Sources */, + A1DE168A12031E69C57F6DC684EFA0D5 /* FBSDKLikeButton.m in Sources */, + 7B85EF9B84423C92EE09DC21CDFAE27C /* FBSDKLikeButtonPopWAV.m in Sources */, + 16163FA266DAD8321C75374755AA940B /* FBSDKLikeControl.m in Sources */, + 1B1E8C274800F7ADFE4498580F6799DE /* FBSDKLikeDialog.m in Sources */, + 195D0B36E067E6836525EC864989DCFF /* FBSDKLikeObjectType.m in Sources */, + B8AD4E788B27F8C035AF410B1C3EB827 /* FBSDKMessageDialog.m in Sources */, + 5E711151377B9E5382ABE8C714008139 /* FBSDKMessengerIcon.m in Sources */, + AA4717F942CA25B414201C18A46FD237 /* FBSDKSendButton.m in Sources */, + FB2D03E9EF1F1437B211F991DA80C472 /* FBSDKShareAPI.m in Sources */, + 8ACE7F123E09ED0A01F95357C99AE282 /* FBSDKShareButton.m in Sources */, + 349A7C474005969BC5798E2D96B54429 /* FBSDKShareConstants.m in Sources */, + 240F2B6D6C9E9D561598B3B5DC5E0D47 /* FBSDKShareDialog.m in Sources */, + 8D36023B3040CF604EE9B5E9AB1488D2 /* FBSDKShareDialogMode.m in Sources */, + D1256713DD24A7275D5802A27C631F14 /* FBSDKShareError.m in Sources */, + AD65F98FB86F1F2D102A08AEA878EC72 /* FBSDKShareKit-dummy.m in Sources */, + 890B1F7156ADB0AB7BE1FA6A95575362 /* FBSDKShareLinkContent.m in Sources */, + 1D6728A1DEC389747A8495B24C4A672D /* FBSDKShareOpenGraphAction.m in Sources */, + A1D3061933F687CC2D4732CE09FAB63F /* FBSDKShareOpenGraphContent.m in Sources */, + FBB381337318019A66613990BA4267B2 /* FBSDKShareOpenGraphObject.m in Sources */, + 961126493126A68DF7656A6C12611CFE /* FBSDKShareOpenGraphValueContainer.m in Sources */, + 786FCC431FF021DE2922004A00A4ABCA /* FBSDKSharePhoto.m in Sources */, + C4F6B361F13A14F17531B0DF4C589D66 /* FBSDKSharePhotoContent.m in Sources */, + D4150F08DACC0D4D7D2E2D42E3E1FC00 /* FBSDKShareUtility.m in Sources */, + 22D8E54CF9C32947CE1B898D398B9960 /* FBSDKShareVideo.m in Sources */, + D40807D0CD676A9F3013821A756B7743 /* FBSDKShareVideoContent.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 428E3CDA6242B355796622DBAA26DD29 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EC76783DEC44B62526E83D829C71D18C /* Pods-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52A557D9D6AD36B9EE87EC5D7D2B9F16 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB7D5269252876FDD8FB3D3DFE42C73D /* FBSDKLoginButton.m in Sources */, + 344F402E97A64E44A868FFD3911E6110 /* FBSDKLoginCompletion.m in Sources */, + BEA74841C7130B61431B7FCC1DC9A187 /* FBSDKLoginConstants.m in Sources */, + 4A3C09FA15FA477592FD19B04B6DAA54 /* FBSDKLoginError.m in Sources */, + 18C647BF58293362753766B94268A2E7 /* FBSDKLoginKit-dummy.m in Sources */, + 514394EE53FCBE06133BEB1BD924B935 /* FBSDKLoginManager.m in Sources */, + 111DE8B9C2B39A3118005168EE06ED40 /* FBSDKLoginManagerLogger.m in Sources */, + 81147666D0A1B53CF71F2DEDC9D6A067 /* FBSDKLoginManagerLoginResult.m in Sources */, + 8C6EFE905F15BE56E8408B5D5D6EF4A3 /* FBSDKLoginTooltipView.m in Sources */, + 25D0C4FA0F58B2B6E3388737FDA80322 /* FBSDKLoginUtility.m in Sources */, + 2F446E6B70E9AD1399F977B2FCA41645 /* FBSDKTooltipView.m in Sources */, + 1A9540242875568483F093F9024171FC /* _FBSDKLoginRecoveryAttempter.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B5F6CCCA510D0D147183CDBAD7F9738A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D51AB8E965DECEFDC39A02A1140A342E /* BFAppLink.m in Sources */, + 96686EA3DB6DD21C52CE24586DED9641 /* BFAppLinkNavigation.m in Sources */, + 4C70CDE945E9DA71BF1C90DFC59F57F7 /* BFAppLinkReturnToRefererController.m in Sources */, + 4AEAD0A6D5815DF782ADCCD822D99082 /* BFAppLinkReturnToRefererView.m in Sources */, + 06A5A17665E162F635DACD2B0625299A /* BFAppLinkTarget.m in Sources */, + B23D927BF8F18FEF89C82761FA2B4BA4 /* BFCancellationToken.m in Sources */, + 7969A4428697F074353829C5125C0B0E /* BFCancellationTokenRegistration.m in Sources */, + 88CF8FD178995FC2DA3F5D289D6F0873 /* BFCancellationTokenSource.m in Sources */, + D00BF86E482A580D2A97CFC92154F79E /* BFExecutor.m in Sources */, + 855A62F1C870083E9CD8136DAF729168 /* BFMeasurementEvent.m in Sources */, + 407FB0E1E5BB584D59B0E4BECAE1EA17 /* BFTask.m in Sources */, + D2E51D4190852D64BB0AA2B49E619BA8 /* BFTaskCompletionSource.m in Sources */, + AE08232806308393A562E4908555BA97 /* BFURL.m in Sources */, + 46BEA5AD8A3D422A96D95DC0E4257939 /* BFWebViewAppLinkResolver.m in Sources */, + 910E7E8C68D3382BBF53091BE45E408D /* Bolts-dummy.m in Sources */, + 31E2E831EB0D5CCEB51B9C1F3D62C9AA /* Bolts.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 1154ED62C9EBAFBFBEE5E01C23702978 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKCoreKit; + target = 7514A5BBFEA8726C550640239F35CF9F /* FBSDKCoreKit */; + targetProxy = 104DD7E0D1D1835D2025676C12BB1E68 /* PBXContainerItemProxy */; + }; + 498553B7AB02C22E1DDAEC22B3A757E5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKCoreKit; + target = 7514A5BBFEA8726C550640239F35CF9F /* FBSDKCoreKit */; + targetProxy = F24C2706B41E2A13115DC189DD607DE7 /* PBXContainerItemProxy */; + }; + 54884D0DF003C3460B42231FCBA904C0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Bolts; + target = 5D317E2C239D207CE072A2C1FE79D30A /* Bolts */; + targetProxy = 0770907D46486483AE4C3B044B98D06B /* PBXContainerItemProxy */; + }; + 6943C731F6F55D5EA7D991FAAE3835C7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKShareKit; + target = 3BCD0D10E30222706C12D7C3102FA893 /* FBSDKShareKit */; + targetProxy = 95BFFB90564EE4DDCCFB7443059C97A9 /* PBXContainerItemProxy */; + }; + 94EE6831D03FF605E8D58953481383B1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKCoreKit; + target = 7514A5BBFEA8726C550640239F35CF9F /* FBSDKCoreKit */; + targetProxy = 2D3ADA04FE0BE10C39EE7B0F01C2D544 /* PBXContainerItemProxy */; + }; + A8C11B55DBA1CE791C24C8C9232EED47 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKLoginKit; + target = 228A8DE101DBB992D8BCEC1E4FD9FFB7 /* FBSDKLoginKit */; + targetProxy = 0A5B9E7B7B98C2DBA5746494B769F468 /* PBXContainerItemProxy */; + }; + E956503DD1B5D1958CD15106C3FCA103 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Bolts; + target = 5D317E2C239D207CE072A2C1FE79D30A /* Bolts */; + targetProxy = 5E12961A62642C4FC8A1B794B732A1CF /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 5CE5176205D06FF3FFE3DDDA9291E44B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + ONLY_ACTIVE_ARCH = YES; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + 74857149DC1E0D599B8A01A78349A926 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREPROCESSOR_DEFINITIONS = "RELEASE=1"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 7D9E9201BFDC23768E911083692B55E1 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3121BA645E578829C4840BA0F5D2F2FB /* Bolts-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 82C290B3162C1322E3E86577236D1796 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 62AA5AFD1D7438053DE8446F795803E7 /* FBSDKLoginKit-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 933F2BF14711CB82E0B76182782927AA /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 45B79D0956F6A1351479E569B774EE64 /* Pods.release.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 9A9EFCE82257D8FFFC89F4207122EDBB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EA48C5EE3CE4DF057217B99A5A223606 /* Pods.debug.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + A0F389A6B6FDA9C4BA3CD4650B9E1F83 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7F322F6ACF68AF56AF896EB667A4EE12 /* FBSDKShareKit-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + C0A63F2A119B46BF5C50A9692A816E97 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 62AA5AFD1D7438053DE8446F795803E7 /* FBSDKLoginKit-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + CE0B3F2161711C6E9EFB7F7C90C7F382 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3121BA645E578829C4840BA0F5D2F2FB /* Bolts-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + E2ECE642E988862B9DD796919EC2C9C3 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D0BD5813C82F4D56A56445BCBF651D1D /* FBSDKCoreKit-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + E6580B95274214F7F26F334B6A6D4BE0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D0BD5813C82F4D56A56445BCBF651D1D /* FBSDKCoreKit-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + EC41C35068509A47AAAE44BE89EBFCAC /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7F322F6ACF68AF56AF896EB667A4EE12 /* FBSDKShareKit-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 008AF45A7DCEC840A23CB8A8F28940B5 /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 82C290B3162C1322E3E86577236D1796 /* Debug */, + C0A63F2A119B46BF5C50A9692A816E97 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5CE5176205D06FF3FFE3DDDA9291E44B /* Debug */, + 74857149DC1E0D599B8A01A78349A926 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 318D64157D92C3305C44018C69F6714D /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E6580B95274214F7F26F334B6A6D4BE0 /* Debug */, + E2ECE642E988862B9DD796919EC2C9C3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3860FF88C80D2DA6686687257F735AD1 /* Build configuration list for PBXNativeTarget "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A9EFCE82257D8FFFC89F4207122EDBB /* Debug */, + 933F2BF14711CB82E0B76182782927AA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 508AC5ACB7A2105F131E3E1DF5F1A124 /* Build configuration list for PBXNativeTarget "Bolts" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7D9E9201BFDC23768E911083692B55E1 /* Debug */, + CE0B3F2161711C6E9EFB7F7C90C7F382 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F1929F0DB463DFC558DC2ACC6C8BB716 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A0F389A6B6FDA9C4BA3CD4650B9E1F83 /* Debug */, + EC41C35068509A47AAAE44BE89EBFCAC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; +} diff --git a/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig new file mode 100644 index 0000000..983f1f6 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig @@ -0,0 +1,5 @@ +#include "Bolts.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Bolts" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-dummy.m b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-dummy.m new file mode 100644 index 0000000..aeabf61 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Bolts : NSObject +@end +@implementation PodsDummy_Bolts +@end diff --git a/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-prefix.pch b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-prefix.pch new file mode 100644 index 0000000..aa992a4 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import +#endif + diff --git a/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts.xcconfig new file mode 100644 index 0000000..e69de29 diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig new file mode 100644 index 0000000..218f70c --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig @@ -0,0 +1,6 @@ +#include "FBSDKCoreKit.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppLink" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Base64" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Cryptography" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ErrorRecovery" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/WebDialog" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" +OTHER_LDFLAGS = ${FBSDKCOREKIT_OTHER_LDFLAGS} +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-dummy.m b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-dummy.m new file mode 100644 index 0000000..eb4f9df --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_FBSDKCoreKit : NSObject +@end +@implementation PodsDummy_FBSDKCoreKit +@end diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch new file mode 100644 index 0000000..aa992a4 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import +#endif + diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig new file mode 100644 index 0000000..a71de60 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig @@ -0,0 +1 @@ +FBSDKCOREKIT_OTHER_LDFLAGS = -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig new file mode 100644 index 0000000..49181d4 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig @@ -0,0 +1,6 @@ +#include "FBSDKLoginKit.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" +OTHER_LDFLAGS = ${FBSDKLOGINKIT_OTHER_LDFLAGS} +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-dummy.m b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-dummy.m new file mode 100644 index 0000000..ff16b39 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_FBSDKLoginKit : NSObject +@end +@implementation PodsDummy_FBSDKLoginKit +@end diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch new file mode 100644 index 0000000..aa992a4 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import +#endif + diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig new file mode 100644 index 0000000..845ac71 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig @@ -0,0 +1 @@ +FBSDKLOGINKIT_OTHER_LDFLAGS = -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig new file mode 100644 index 0000000..363228e --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig @@ -0,0 +1,6 @@ +#include "FBSDKShareKit.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKShareKit" "${PODS_ROOT}/Headers/Private/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" +OTHER_LDFLAGS = ${FBSDKSHAREKIT_OTHER_LDFLAGS} +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-dummy.m b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-dummy.m new file mode 100644 index 0000000..8f70249 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_FBSDKShareKit : NSObject +@end +@implementation PodsDummy_FBSDKShareKit +@end diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch new file mode 100644 index 0000000..aa992a4 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import +#endif + diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig new file mode 100644 index 0000000..7dcc632 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig @@ -0,0 +1 @@ +FBSDKSHAREKIT_OTHER_LDFLAGS = -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown new file mode 100644 index 0000000..631b33a --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown @@ -0,0 +1,99 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## Bolts + +BSD License + +For Bolts software + +Copyright (c) 2013-present, Facebook, Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +## FBSDKCoreKit + +Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + +You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +copy, modify, and distribute this software in source code or binary form for use +in connection with the web services and APIs provided by Facebook. + +As with any software that integrates with the Facebook platform, your use of +this software is subject to the Facebook Developer Principles and Policies +[http://developers.facebook.com/policy/]. This copyright notice shall be +included in all copies or substantial portions of the software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +## FBSDKLoginKit + +Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + +You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +copy, modify, and distribute this software in source code or binary form for use +in connection with the web services and APIs provided by Facebook. + +As with any software that integrates with the Facebook platform, your use of +this software is subject to the Facebook Developer Principles and Policies +[http://developers.facebook.com/policy/]. This copyright notice shall be +included in all copies or substantial portions of the software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +## FBSDKShareKit + +Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + +You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +copy, modify, and distribute this software in source code or binary form for use +in connection with the web services and APIs provided by Facebook. + +As with any software that integrates with the Facebook platform, your use of +this software is subject to the Facebook Developer Principles and Policies +[http://developers.facebook.com/policy/]. This copyright notice shall be +included in all copies or substantial portions of the software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Generated by CocoaPods - http://cocoapods.org diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist new file mode 100644 index 0000000..dcfc908 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist @@ -0,0 +1,141 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + BSD License + +For Bolts software + +Copyright (c) 2013-present, Facebook, Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + Title + Bolts + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + +You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +copy, modify, and distribute this software in source code or binary form for use +in connection with the web services and APIs provided by Facebook. + +As with any software that integrates with the Facebook platform, your use of +this software is subject to the Facebook Developer Principles and Policies +[http://developers.facebook.com/policy/]. This copyright notice shall be +included in all copies or substantial portions of the software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Title + FBSDKCoreKit + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + +You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +copy, modify, and distribute this software in source code or binary form for use +in connection with the web services and APIs provided by Facebook. + +As with any software that integrates with the Facebook platform, your use of +this software is subject to the Facebook Developer Principles and Policies +[http://developers.facebook.com/policy/]. This copyright notice shall be +included in all copies or substantial portions of the software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Title + FBSDKLoginKit + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + +You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +copy, modify, and distribute this software in source code or binary form for use +in connection with the web services and APIs provided by Facebook. + +As with any software that integrates with the Facebook platform, your use of +this software is subject to the Facebook Developer Principles and Policies +[http://developers.facebook.com/policy/]. This copyright notice shall be +included in all copies or substantial portions of the software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Title + FBSDKShareKit + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - http://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-dummy.m b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-dummy.m new file mode 100644 index 0000000..ade64bd --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods : NSObject +@end +@implementation PodsDummy_Pods +@end diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-resources.sh b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-resources.sh new file mode 100755 index 0000000..ea685a2 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-resources.sh @@ -0,0 +1,95 @@ +#!/bin/sh +set -e + +mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +realpath() { + DIRECTORY="$(cd "${1%/*}" && pwd)" + FILENAME="${1##*/}" + echo "$DIRECTORY/$FILENAME" +} + +install_resource() +{ + case $1 in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" + ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" + ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + ;; + *.framework) + echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" + xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" + xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" + xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + /*) + echo "$1" + echo "$1" >> "$RESOURCES_TO_COPY" + ;; + *) + echo "${PODS_ROOT}/$1" + echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +then + case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; + esac + + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "`realpath $PODS_ROOT`*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig new file mode 100644 index 0000000..3ba869d --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig @@ -0,0 +1,5 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" +OTHER_LDFLAGS = $(inherited) -ObjC -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig new file mode 100644 index 0000000..3ba869d --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig @@ -0,0 +1,5 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" +OTHER_LDFLAGS = $(inherited) -ObjC -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj new file mode 100644 index 0000000..2203b61 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -0,0 +1,389 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 617F8769EFBE79517A02E6D0 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAF24AD380284C55768010A2 /* libPods.a */; }; + 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC2E1BC84BF200E880D3 /* main.m */; }; + 9A2FFC321BC84BF200E880D3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC311BC84BF200E880D3 /* AppDelegate.m */; }; + 9A2FFC351BC84BF200E880D3 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC341BC84BF200E880D3 /* ViewController.m */; }; + 9A2FFC381BC84BF200E880D3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A2FFC361BC84BF200E880D3 /* Main.storyboard */; }; + 9A2FFC3B1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC391BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld */; }; + 9A2FFC3D1BC84BF200E880D3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */; }; + 9A2FFC401BC84BF200E880D3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A2FFC3E1BC84BF200E880D3 /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 1F41A29CEEC52ED6A148CCE5 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; + 2BC0A6490F88476E5C31E3B1 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; + 9A2FFC2A1BC84BF200E880D3 /* Unit-2-Journal.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Unit-2-Journal.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A2FFC2E1BC84BF200E880D3 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 9A2FFC301BC84BF200E880D3 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 9A2FFC311BC84BF200E880D3 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 9A2FFC331BC84BF200E880D3 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 9A2FFC341BC84BF200E880D3 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + 9A2FFC371BC84BF200E880D3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 9A2FFC3A1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Unit_2_Journal.xcdatamodel; sourceTree = ""; }; + 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 9A2FFC3F1BC84BF200E880D3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 9A2FFC411BC84BF200E880D3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + FAF24AD380284C55768010A2 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9A2FFC271BC84BF100E880D3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 617F8769EFBE79517A02E6D0 /* libPods.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2EA812FB29649A9DC9449826 /* Frameworks */ = { + isa = PBXGroup; + children = ( + FAF24AD380284C55768010A2 /* libPods.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 5A43989E2A6AD60B52B523E0 /* Pods */ = { + isa = PBXGroup; + children = ( + 2BC0A6490F88476E5C31E3B1 /* Pods.debug.xcconfig */, + 1F41A29CEEC52ED6A148CCE5 /* Pods.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; + 9A2FFC211BC84BF100E880D3 = { + isa = PBXGroup; + children = ( + 9A2FFC2C1BC84BF200E880D3 /* Unit-2-Journal */, + 9A2FFC2B1BC84BF200E880D3 /* Products */, + 5A43989E2A6AD60B52B523E0 /* Pods */, + 2EA812FB29649A9DC9449826 /* Frameworks */, + ); + sourceTree = ""; + }; + 9A2FFC2B1BC84BF200E880D3 /* Products */ = { + isa = PBXGroup; + children = ( + 9A2FFC2A1BC84BF200E880D3 /* Unit-2-Journal.app */, + ); + name = Products; + sourceTree = ""; + }; + 9A2FFC2C1BC84BF200E880D3 /* Unit-2-Journal */ = { + isa = PBXGroup; + children = ( + 9A2FFC301BC84BF200E880D3 /* AppDelegate.h */, + 9A2FFC311BC84BF200E880D3 /* AppDelegate.m */, + 9A2FFC331BC84BF200E880D3 /* ViewController.h */, + 9A2FFC341BC84BF200E880D3 /* ViewController.m */, + 9A2FFC361BC84BF200E880D3 /* Main.storyboard */, + 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */, + 9A2FFC3E1BC84BF200E880D3 /* LaunchScreen.storyboard */, + 9A2FFC411BC84BF200E880D3 /* Info.plist */, + 9A2FFC391BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld */, + 9A2FFC2D1BC84BF200E880D3 /* Supporting Files */, + ); + path = "Unit-2-Journal"; + sourceTree = ""; + }; + 9A2FFC2D1BC84BF200E880D3 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 9A2FFC2E1BC84BF200E880D3 /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9A2FFC291BC84BF100E880D3 /* Unit-2-Journal */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A2FFC441BC84BF200E880D3 /* Build configuration list for PBXNativeTarget "Unit-2-Journal" */; + buildPhases = ( + 52492941416B94624F7E67A8 /* Check Pods Manifest.lock */, + 9A2FFC261BC84BF100E880D3 /* Sources */, + 9A2FFC271BC84BF100E880D3 /* Frameworks */, + 9A2FFC281BC84BF100E880D3 /* Resources */, + 7C374323F34F7199EEEEB87E /* Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Unit-2-Journal"; + productName = "Unit-2-Journal"; + productReference = 9A2FFC2A1BC84BF200E880D3 /* Unit-2-Journal.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9A2FFC221BC84BF100E880D3 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0700; + ORGANIZATIONNAME = "Jamaal Sedayao"; + TargetAttributes = { + 9A2FFC291BC84BF100E880D3 = { + CreatedOnToolsVersion = 7.0; + DevelopmentTeam = Z368FJ9ZFJ; + }; + }; + }; + buildConfigurationList = 9A2FFC251BC84BF100E880D3 /* Build configuration list for PBXProject "Unit-2-Journal" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9A2FFC211BC84BF100E880D3; + productRefGroup = 9A2FFC2B1BC84BF200E880D3 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9A2FFC291BC84BF100E880D3 /* Unit-2-Journal */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9A2FFC281BC84BF100E880D3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A2FFC401BC84BF200E880D3 /* LaunchScreen.storyboard in Resources */, + 9A2FFC3D1BC84BF200E880D3 /* Assets.xcassets in Resources */, + 9A2FFC381BC84BF200E880D3 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 52492941416B94624F7E67A8 /* Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + 7C374323F34F7199EEEEB87E /* Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9A2FFC261BC84BF100E880D3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A2FFC351BC84BF200E880D3 /* ViewController.m in Sources */, + 9A2FFC321BC84BF200E880D3 /* AppDelegate.m in Sources */, + 9A2FFC3B1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld in Sources */, + 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 9A2FFC361BC84BF200E880D3 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9A2FFC371BC84BF200E880D3 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 9A2FFC3E1BC84BF200E880D3 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9A2FFC3F1BC84BF200E880D3 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 9A2FFC421BC84BF200E880D3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9A2FFC431BC84BF200E880D3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9A2FFC451BC84BF200E880D3 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2BC0A6490F88476E5C31E3B1 /* Pods.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.jamaalsedayao.Unit-2-Journal"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 9A2FFC461BC84BF200E880D3 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1F41A29CEEC52ED6A148CCE5 /* Pods.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.jamaalsedayao.Unit-2-Journal"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9A2FFC251BC84BF100E880D3 /* Build configuration list for PBXProject "Unit-2-Journal" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A2FFC421BC84BF200E880D3 /* Debug */, + 9A2FFC431BC84BF200E880D3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A2FFC441BC84BF200E880D3 /* Build configuration list for PBXNativeTarget "Unit-2-Journal" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A2FFC451BC84BF200E880D3 /* Debug */, + 9A2FFC461BC84BF200E880D3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCVersionGroup section */ + 9A2FFC391BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + 9A2FFC3A1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodel */, + ); + currentVersion = 9A2FFC3A1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodel */; + path = Unit_2_Journal.xcdatamodeld; + sourceTree = ""; + versionGroupType = wrapper.xcdatamodel; + }; +/* End XCVersionGroup section */ + }; + rootObject = 9A2FFC221BC84BF100E880D3 /* Project object */; +} diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d63f60 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Unit-2-Journal/Unit-2-Journal.xcworkspace/contents.xcworkspacedata b/Unit-2-Journal/Unit-2-Journal.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..da3cae0 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Unit-2-Journal/Unit-2-Journal/AppDelegate.h b/Unit-2-Journal/Unit-2-Journal/AppDelegate.h new file mode 100644 index 0000000..cb3f367 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/AppDelegate.h @@ -0,0 +1,25 @@ +// +// AppDelegate.h +// Unit-2-Journal +// +// Created by Jamaal Sedayao on 10/9/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; +@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; +@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; + +- (void)saveContext; +- (NSURL *)applicationDocumentsDirectory; + + +@end + diff --git a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m new file mode 100644 index 0000000..64acfdb --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m @@ -0,0 +1,140 @@ +// +// AppDelegate.m +// Unit-2-Journal +// +// Created by Jamaal Sedayao on 10/9/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "AppDelegate.h" +#import +#import + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + + return [[FBSDKApplicationDelegate sharedInstance] application:application + didFinishLaunchingWithOptions:launchOptions];; +} + +- (void)applicationWillResignActive:(UIApplication *)application { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application { + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { + + [FBSDKAppEvents activateApp]; +} +- (BOOL)application:(UIApplication *)application + openURL:(NSURL *)url + sourceApplication:(NSString *)sourceApplication + annotation:(id)annotation { + return [[FBSDKApplicationDelegate sharedInstance] application:application + openURL:url + sourceApplication:sourceApplication + annotation:annotation]; +} + +- (void)applicationWillTerminate:(UIApplication *)application { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + // Saves changes in the application's managed object context before the application terminates. + [self saveContext]; +} + +#pragma mark - Core Data stack + +@synthesize managedObjectContext = _managedObjectContext; +@synthesize managedObjectModel = _managedObjectModel; +@synthesize persistentStoreCoordinator = _persistentStoreCoordinator; + +- (NSURL *)applicationDocumentsDirectory { + // The directory the application uses to store the Core Data store file. This code uses a directory named "com.jamaalsedayao.Unit_2_Journal" in the application's documents directory. + return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; +} + +- (NSManagedObjectModel *)managedObjectModel { + // The managed object model for the application. It is a fatal error for the application not to be able to find and load its model. + if (_managedObjectModel != nil) { + return _managedObjectModel; + } + NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Unit_2_Journal" withExtension:@"momd"]; + _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; + return _managedObjectModel; +} + +- (NSPersistentStoreCoordinator *)persistentStoreCoordinator { + // The persistent store coordinator for the application. This implementation creates and returns a coordinator, having added the store for the application to it. + if (_persistentStoreCoordinator != nil) { + return _persistentStoreCoordinator; + } + + // Create the coordinator and store + + _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; + NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Unit_2_Journal.sqlite"]; + NSError *error = nil; + NSString *failureReason = @"There was an error creating or loading the application's saved data."; + if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { + // Report any error we got. + NSMutableDictionary *dict = [NSMutableDictionary dictionary]; + dict[NSLocalizedDescriptionKey] = @"Failed to initialize the application's saved data"; + dict[NSLocalizedFailureReasonErrorKey] = failureReason; + dict[NSUnderlyingErrorKey] = error; + error = [NSError errorWithDomain:@"YOUR_ERROR_DOMAIN" code:9999 userInfo:dict]; + // Replace this with code to handle the error appropriately. + // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + NSLog(@"Unresolved error %@, %@", error, [error userInfo]); + abort(); + } + + return _persistentStoreCoordinator; +} + + +- (NSManagedObjectContext *)managedObjectContext { + // Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) + if (_managedObjectContext != nil) { + return _managedObjectContext; + } + + NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; + if (!coordinator) { + return nil; + } + _managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; + [_managedObjectContext setPersistentStoreCoordinator:coordinator]; + return _managedObjectContext; +} + +#pragma mark - Core Data Saving support + +- (void)saveContext { + NSManagedObjectContext *managedObjectContext = self.managedObjectContext; + if (managedObjectContext != nil) { + NSError *error = nil; + if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) { + // Replace this implementation with code to handle the error appropriately. + // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + NSLog(@"Unresolved error %@, %@", error, [error userInfo]); + abort(); + } + } +} + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/AppIcon.appiconset/Contents.json b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..36d2c80 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2afbe5 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f56d2f3 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Unit-2-Journal/Unit-2-Journal/Info.plist b/Unit-2-Journal/Unit-2-Journal/Info.plist new file mode 100644 index 0000000..7954e7a --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Info.plist @@ -0,0 +1,91 @@ + + + + + LSApplicationQueriesSchemes + + fbauth2 + + NSAppTransportSecurity + + NSExceptionDomains + + facebook.com + + NSIncludesSubdomains + + NSExceptionRequiresForwardSecrecy + + + fbcdn.net + + NSIncludesSubdomains + + NSExceptionRequiresForwardSecrecy + + + akamaihd.net + + NSIncludesSubdomains + + NSExceptionRequiresForwardSecrecy + + + + + CFBundleURLTypes + + + CFBundleURLSchemes + + fb762432797195822 + + + + FacebookAppID + 762432797195822 + FacebookDisplayName + Unit-2-Journal + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Unit-2-Journal/Unit-2-Journal/Unit_2_Journal.xcdatamodeld/.xccurrentversion b/Unit-2-Journal/Unit-2-Journal/Unit_2_Journal.xcdatamodeld/.xccurrentversion new file mode 100644 index 0000000..2d436c1 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Unit_2_Journal.xcdatamodeld/.xccurrentversion @@ -0,0 +1,8 @@ + + + + + _XCCurrentVersionName + Unit_2_Journal.xcdatamodel + + diff --git a/Unit-2-Journal/Unit-2-Journal/Unit_2_Journal.xcdatamodeld/Unit_2_Journal.xcdatamodel/contents b/Unit-2-Journal/Unit-2-Journal/Unit_2_Journal.xcdatamodeld/Unit_2_Journal.xcdatamodel/contents new file mode 100644 index 0000000..193f33c --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Unit_2_Journal.xcdatamodeld/Unit_2_Journal.xcdatamodel/contents @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/ViewController.h b/Unit-2-Journal/Unit-2-Journal/ViewController.h new file mode 100644 index 0000000..3ef65d0 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/ViewController.h @@ -0,0 +1,15 @@ +// +// ViewController.h +// Unit-2-Journal +// +// Created by Jamaal Sedayao on 10/9/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import + +@interface ViewController : UIViewController + + +@end + diff --git a/Unit-2-Journal/Unit-2-Journal/ViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewController.m new file mode 100644 index 0000000..6baf6dc --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/ViewController.m @@ -0,0 +1,31 @@ +// +// ViewController.m +// Unit-2-Journal +// +// Created by Jamaal Sedayao on 10/9/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "ViewController.h" +#import +#import + +@interface ViewController () + +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init]; + loginButton.center = self.view.center; + [self.view addSubview:loginButton]; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/main.m b/Unit-2-Journal/Unit-2-Journal/main.m new file mode 100644 index 0000000..070f920 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/main.m @@ -0,0 +1,16 @@ +// +// main.m +// Unit-2-Journal +// +// Created by Jamaal Sedayao on 10/9/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} From a831ba419f1cb803f19fde9f499e974f4211f3c5 Mon Sep 17 00:00:00 2001 From: Brian Date: Sat, 10 Oct 2015 12:40:35 -0400 Subject: [PATCH 02/86] added parse tested, working --- .DS_Store | Bin 6148 -> 6148 bytes Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes Unit-2-Journal/Podfile | 3 +- Unit-2-Journal/Podfile.lock | 4 + Unit-2-Journal/Pods/Manifest.lock | 4 + .../Pods/Pods.xcodeproj/project.pbxproj | 4601 +++++++++++------ .../Bolts/Bolts-Private.xcconfig | 2 +- .../FBSDKCoreKit-Private.xcconfig | 2 +- .../FBSDKLoginKit-Private.xcconfig | 2 +- .../FBSDKShareKit-Private.xcconfig | 2 +- .../Pods/Pods-acknowledgements.markdown | 4 + .../Pods/Pods-acknowledgements.plist | 8 + .../Pods/Pods-resources.sh | 6 + .../Pods/Pods.debug.xcconfig | 6 +- .../Pods/Pods.release.xcconfig | 6 +- .../Unit-2-Journal.xcodeproj/project.pbxproj | 26 + Unit-2-Journal/Unit-2-Journal/AppDelegate.m | 17 +- .../Base.lproj/LaunchScreen.storyboard | 1 - .../Unit-2-Journal/Base.lproj/Main.storyboard | 198 +- .../Unit-2-Journal/LoginViewController.h | 13 + .../Unit-2-Journal/LoginViewController.m | 37 + .../Unit-2-Journal/MainTableViewController.h | 13 + .../Unit-2-Journal/MainTableViewController.m | 43 + .../Unit-2-Journal/SignUpViewController.h | 13 + .../Unit-2-Journal/SignUpViewController.m | 37 + .../Unit-2-Journal/ViewController.m | 6 + 26 files changed, 3509 insertions(+), 1545 deletions(-) create mode 100644 Unit-2-Journal/Unit-2-Journal/LoginViewController.h create mode 100644 Unit-2-Journal/Unit-2-Journal/LoginViewController.m create mode 100644 Unit-2-Journal/Unit-2-Journal/MainTableViewController.h create mode 100644 Unit-2-Journal/Unit-2-Journal/MainTableViewController.m create mode 100644 Unit-2-Journal/Unit-2-Journal/SignUpViewController.h create mode 100644 Unit-2-Journal/Unit-2-Journal/SignUpViewController.m diff --git a/.DS_Store b/.DS_Store index 61cdf9c5c281af8bc1f8d299d8141280031984d5..e7b37ff808e56420c0ad9e2fcd00489bed336a1f 100644 GIT binary patch delta 21 ccmZoMXffFEl9j{I)J#Xg(7<@}M^<4W08EDlSpWb4 delta 21 ccmZoMXffFEl9j{A)IvwW*u-%2M^<4W08GjTU;qFB diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index fcddac4a88110c889c7a08020d74e084f101f12d..3fa84147aa08f30bf4ee41ed40c97fd629f863c7 100644 GIT binary patch delta 33 pcmZoMXffC@iHU`Qfq`lAG^YE^%>VyyZe(s_nb^R&nVsV=KLEJ$3u*uW delta 33 ocmZoMXffC@iHYSu5KNxNbf1~=|NqU6%xx?a8#p(!bNuB802WsdVgLXD diff --git a/Unit-2-Journal/Podfile b/Unit-2-Journal/Podfile index a6c1178..cfe4ed8 100644 --- a/Unit-2-Journal/Podfile +++ b/Unit-2-Journal/Podfile @@ -1,3 +1,4 @@ pod 'FBSDKCoreKit', '~> 4.7' pod 'FBSDKShareKit', '~> 4.7' -pod 'FBSDKLoginKit', '~> 4.7' \ No newline at end of file +pod 'FBSDKLoginKit', '~> 4.7' +pod 'Parse' diff --git a/Unit-2-Journal/Podfile.lock b/Unit-2-Journal/Podfile.lock index 06c3be1..ed88401 100644 --- a/Unit-2-Journal/Podfile.lock +++ b/Unit-2-Journal/Podfile.lock @@ -18,16 +18,20 @@ PODS: - FBSDKCoreKit - FBSDKShareKit (4.7.0): - FBSDKCoreKit + - Parse (1.9.0): + - Bolts/Tasks (>= 1.3.0) DEPENDENCIES: - FBSDKCoreKit (~> 4.7) - FBSDKLoginKit (~> 4.7) - FBSDKShareKit (~> 4.7) + - Parse SPEC CHECKSUMS: Bolts: 805a4a87413e49d4a0c2b7d469084cbc46b09342 FBSDKCoreKit: eb580bfc2040ad44f4c0b4f4d0befb1d35bce59c FBSDKLoginKit: 01bce8dd3f3a26a023b0ba4ffdde7ef5062889fe FBSDKShareKit: 1f927bb05e4d36a99d5d5bf2f4b1ff294ce3e15c + Parse: 712efbc476d4f47b0f96b70db7e53101575753aa COCOAPODS: 0.38.2 diff --git a/Unit-2-Journal/Pods/Manifest.lock b/Unit-2-Journal/Pods/Manifest.lock index 06c3be1..ed88401 100644 --- a/Unit-2-Journal/Pods/Manifest.lock +++ b/Unit-2-Journal/Pods/Manifest.lock @@ -18,16 +18,20 @@ PODS: - FBSDKCoreKit - FBSDKShareKit (4.7.0): - FBSDKCoreKit + - Parse (1.9.0): + - Bolts/Tasks (>= 1.3.0) DEPENDENCIES: - FBSDKCoreKit (~> 4.7) - FBSDKLoginKit (~> 4.7) - FBSDKShareKit (~> 4.7) + - Parse SPEC CHECKSUMS: Bolts: 805a4a87413e49d4a0c2b7d469084cbc46b09342 FBSDKCoreKit: eb580bfc2040ad44f4c0b4f4d0befb1d35bce59c FBSDKLoginKit: 01bce8dd3f3a26a023b0ba4ffdde7ef5062889fe FBSDKShareKit: 1f927bb05e4d36a99d5d5bf2f4b1ff294ce3e15c + Parse: 712efbc476d4f47b0f96b70db7e53101575753aa COCOAPODS: 0.38.2 diff --git a/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj b/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj index 0797aea..484cf93 100644 --- a/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj @@ -7,1168 +7,2236 @@ objects = { /* Begin PBXBuildFile section */ - 00FA0FE05D9A1D51D0B9DAB959758414 /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = D6BA663394EED0BB2FE15D361CEF0CC0 /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 02967D3BF0AE64AAED377E0BD9F0111B /* FBSDKSharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E96A05C4068F79754A471DFA28BAAA5 /* FBSDKSharing.h */; }; - 02CE817C10D60DB802D528770AECDD02 /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA70E0602DF174C01CBE4AAC4B2FDD83 /* FBSDKWebDialogView.h */; }; - 0465F0E4BECA2CE5C64F1251A7BA1922 /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = AD6CB1A023BD68BC921696ADB8AB358D /* FBSDKMath.h */; }; - 048C3C60838C918CC1E9EDA7A39FEADB /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EF36FE5802B718C77F58F0A55F941FAD /* FBSDKTestUsersManager.h */; }; - 06A5A17665E162F635DACD2B0625299A /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = 26F24911943B64E9095819A493DC1EF7 /* BFAppLinkTarget.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 06F3235CA26951EF727E3C1FDA0A06A7 /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 67BBE784A2801F01F65EAF698A7A4C65 /* FBSDKKeychainStore.h */; }; - 07729073627D94E620F85E370167BE72 /* FBSDKCheckmarkIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = A4A098339793E5BCA2444DB32B7612F4 /* FBSDKCheckmarkIcon.h */; }; - 077A33F1B3D52FA2D2C18147CE033D3D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED3ABC29606CB6F9337BB302194076AB /* Foundation.framework */; }; - 086A67663ECD9FDD0F048DC84683E298 /* FBSDKShareOpenGraphObject.h in Headers */ = {isa = PBXBuildFile; fileRef = B0F5B126E4385B53E9C73775BBC036F5 /* FBSDKShareOpenGraphObject.h */; }; - 09062BEA7F9F32BA8461FCB10A833BBA /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = C6C55AB8CC2B8BA526A40CE4AE0092BD /* FBSDKKeychainStoreViaBundleID.m */; }; - 0AB27E0C4D053AC65C9732DB1BB11B3D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED3ABC29606CB6F9337BB302194076AB /* Foundation.framework */; }; - 0B53C42D59A3930785AFF339A0CAF0D9 /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = CE51C4347F37793614B7D2FE3580EA38 /* FBSDKAppEvents.h */; }; - 0D33D8B56477808D44FB51F1B5178A16 /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 90AC4DD014072A65EE77000860896177 /* FBSDKAccessTokenCache.h */; }; - 0DF6A2FF0C411278A2A3F34AF834CD77 /* FBSDKAccessTokenCacheV3.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D28A8973855B42B7E0B94F7F2E7F679 /* FBSDKAccessTokenCacheV3.h */; }; - 0E4C46F8ADD580C0AFE225BBDBA64D83 /* FBSDKLoginManagerLoginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = B79196C5F88B102B98CC926632FA54C5 /* FBSDKLoginManagerLoginResult.h */; }; - 0ECE24B940F9019FF559DF6435234863 /* FBSDKAppGroupAddDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 37D367937646E4E05AD9519B21B1F566 /* FBSDKAppGroupAddDialog.h */; }; - 10285394D2429F0345EEAE31AA791DE8 /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 157A1552C1C00504C4E58FB57CF5F9EA /* FBSDKCoreKit.h */; }; - 111DE8B9C2B39A3118005168EE06ED40 /* FBSDKLoginManagerLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F23A8CFF0A5178FFE437F3900690E4D /* FBSDKLoginManagerLogger.m */; }; - 15CB8B5F3E5C004528DF130D5F74280E /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = D83F322AAF71062208A8ED107E20BF12 /* FBSDKPaymentObserver.h */; }; - 16163FA266DAD8321C75374755AA940B /* FBSDKLikeControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D2C8E2D65E652FD1F3E1F311E40A83B /* FBSDKLikeControl.m */; }; - 167B40D0426290E0222F4E484A61847C /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = 57875897B510F5382AD775C0A28734A2 /* FBSDKProfilePictureView.h */; }; - 172CB4824EAF09637FD6F2DB40BB2D40 /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BFC2409C44B8CD69A6C03A63F32F7CA /* FBSDKGraphRequest+Internal.h */; }; - 173FD61B3C3D86AD287305F713A7FD1B /* FBSDKLikeBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9650DB5BE3E3803B05EEF2BA728FD08A /* FBSDKLikeBoxView.m */; }; - 17E9812BBA8F1D9195470696536D49E1 /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 02865F67BBD6040226CBD1FDBA29F5A2 /* FBSDKProfile+Internal.h */; }; - 1812C122239FADE20B76682591144642 /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F11E9B9214843E4C733658288B46F50 /* FBSDKProfile.h */; }; - 18C647BF58293362753766B94268A2E7 /* FBSDKLoginKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F25867AF7B57AE5CAFF6A7A97011505E /* FBSDKLoginKit-dummy.m */; }; - 1932B23ECC778C829EA995A6F74F5D5B /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = AB8EC144295EC6E09242AFA1DE8FBB93 /* FBSDKWebDialog.h */; }; - 195D0B36E067E6836525EC864989DCFF /* FBSDKLikeObjectType.m in Sources */ = {isa = PBXBuildFile; fileRef = E523319DE2F5CBA2664EF1861CAE8385 /* FBSDKLikeObjectType.m */; }; - 1A7EA98C986EAC775428C6F2E3CF145B /* FBSDKLoginCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = EE77E56FA0FD8571B90F7293F8A6CA4E /* FBSDKLoginCompletion.h */; }; - 1A9540242875568483F093F9024171FC /* _FBSDKLoginRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = ED654A2013434F730212951BE3CDF95A /* _FBSDKLoginRecoveryAttempter.m */; }; - 1AA02F1D34B3617DE8A640A0CE1DACEB /* FBSDKShareUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 44B2E26031F3FC70570B8D0355B9107A /* FBSDKShareUtility.h */; }; - 1AC335060DAA36EE9CC7A9C8FA74CFFE /* FBSDKLikeActionControllerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9690B619FE2AAD1DC6925B4C2698A069 /* FBSDKLikeActionControllerCache.m */; }; - 1B1E8C274800F7ADFE4498580F6799DE /* FBSDKLikeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = FFDC8DE8F321A7C08F3D315635B2B056 /* FBSDKLikeDialog.m */; }; - 1B7595D44BBEF7C62FC58770579051DA /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AE311A8C1894882C4A2DCB8EE2013E8 /* FBSDKCrypto.h */; }; - 1B87820A977924BF9D822310F62C317F /* FBSDKAccessTokenCacheV3_17.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D663126B6E34DDA8860BAE880B56139 /* FBSDKAccessTokenCacheV3_17.h */; }; - 1CD8D6D26B1EC48DA95F1E213A68B8C9 /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 756E20E698838AA3F512B572C052F12A /* BFMeasurementEvent_Internal.h */; }; - 1D6728A1DEC389747A8495B24C4A672D /* FBSDKShareOpenGraphAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E2C28D858D12923C51D6A59FF47FAFC /* FBSDKShareOpenGraphAction.m */; }; - 1D9B660498B96AFADC6BD055D94E6269 /* BFAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 210A8D5F5D9E18273157AA6FA4DF1616 /* BFAppLinkTarget.h */; }; - 1E252EBF9D39E9E6C2AAA46DDD8A58EE /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = B3B6ED0B1490827E42BF16379DC889D8 /* FBSDKMaleSilhouetteIcon.h */; }; - 1E8B8261F4EAD05CD057F4714125D009 /* FBSDKLoginCompletion+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 43170513EC0C6AEAEAE625758B1656D2 /* FBSDKLoginCompletion+Internal.h */; }; - 22D8E54CF9C32947CE1B898D398B9960 /* FBSDKShareVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = FBD42041AE768C9FC5ED4984163A2D43 /* FBSDKShareVideo.m */; }; - 22F938415D14269663488FFF723F5D8D /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = F970F2C40DCD372EE55CFFE828E80CAE /* FBSDKPaymentObserver.m */; }; - 240F2B6D6C9E9D561598B3B5DC5E0D47 /* FBSDKShareDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 739A8FE1539F5F0119E36821784CB8EE /* FBSDKShareDialog.m */; }; - 253008BA1D1380B9F00039AD006DC5E9 /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AB293581B2CC2E15600E1001DBBA77B /* FBSDKCloseIcon.h */; }; - 25D0C4FA0F58B2B6E3388737FDA80322 /* FBSDKLoginUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 60D814E0C681012497F5E777A131D775 /* FBSDKLoginUtility.m */; }; - 26A5469794638EF2972A7F3D6B0A0E36 /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 23160D89AEAF98B6D83BB6EF3E05310E /* FBSDKConstants.m */; }; - 27482D67BFDB88CDD0E7668C5328EDCC /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 4722FCF8C978A7B204A55D0BF6F34B2D /* FBSDKAudioResourceLoader.m */; }; - 27B5C50C845CB0944C503B035D6011DF /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BAB751FF25D6FB93E08CE08011C84895 /* FBSDKTestUsersManager.m */; }; - 29DE01B3141EC629AF9F713E96A78805 /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 03F85D35C27D1671D1F41676A47CD249 /* FBSDKServerConfigurationManager.m */; }; - 2A4F558F44525BAC6EE6F823DB600240 /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 841EA80357141FB191529428AA4841A0 /* FBSDKApplicationDelegate.m */; }; - 2A6467F8C1AAB711191D5206AF4565D8 /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = FF2AA4084EE7DD2A0CE09C7DE485C764 /* FBSDKAppEvents+Internal.h */; }; - 2CC98680408DDD432D1394C212FAE776 /* BFAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FB1726D1A37BF1BA4F347373EA1F055 /* BFAppLinkNavigation.h */; }; - 2D9204953A03CF4E39CDAB8A7D98F4EB /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 897E8201CCE098369853632C2B3C6896 /* FBSDKAppLinkUtility.m */; }; - 2F446E6B70E9AD1399F977B2FCA41645 /* FBSDKTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A11C49919F9BE6F3A03567D38BE5C1 /* FBSDKTooltipView.m */; }; - 2F5B65C786B12D97BF3FEB32ECEC8057 /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = D598B036F0405E2C2F154346BADBAF5E /* FBSDKBridgeAPIResponse.m */; }; - 31E2E831EB0D5CCEB51B9C1F3D62C9AA /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = CFBCB363EDF2DA2195A76CD54C25DAA2 /* Bolts.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 326E6464B5D07DD06BF0AC33528A6272 /* FBSDKLikeObjectType.h in Headers */ = {isa = PBXBuildFile; fileRef = 2089FF7B2CC0E94D22CE2F8418713448 /* FBSDKLikeObjectType.h */; }; - 344F402E97A64E44A868FFD3911E6110 /* FBSDKLoginCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F375DCDC3AF03A748BF6AE2DE8847AB /* FBSDKLoginCompletion.m */; }; - 349A7C474005969BC5798E2D96B54429 /* FBSDKShareConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A47608DFA1AF84E7AB9DCCF058C78F1 /* FBSDKShareConstants.m */; }; - 35D34BFAFCB107B8A052AF1C7546E661 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = E5DE1E73EB9968D3497F35D73BDB6A94 /* BFTaskCompletionSource.h */; }; - 36B027BFBD5E91EBA7EBE9B430CAEBAE /* FBSDKAccessTokenCacheV3.m in Sources */ = {isa = PBXBuildFile; fileRef = F782EBF11CD0B444B301A6D62DB3982D /* FBSDKAccessTokenCacheV3.m */; }; - 37866BE47097F3430E848333A7DC7C52 /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B8DF220992413B87518E5E85B18E32 /* FBSDKAppEventsStateManager.h */; }; - 37A2F9456A8F405373ACBFAE17371CB6 /* FBSDKLikeBoxBorderView.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CB010DF4304781A764957D945B27F3 /* FBSDKLikeBoxBorderView.h */; }; - 37ECBAB9AF588A5875B245828942E9EB /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B3F8F8D1757081C79044C13664E9E9A /* FBSDKLogo.m */; }; - 39C5C564C02CF5ABB08BE513AFBF9C1F /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4669EF085FC9747EEF39F5EB5BDA05E0 /* FBSDKCoreKit-dummy.m */; }; - 3A6FC29C2DC181498FC8CD8DFA062A04 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = D34AA74CF0863A8C0BD1947CC4821F52 /* FBSDKBridgeAPIProtocolNativeV1.h */; }; - 3B495133DCFC7C6770A66ABD657A3759 /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 68E38006C5CB85E78FC2D6A4FA68A3D9 /* FBSDKAppEventsDeviceInfo.h */; }; - 3C0BC486782A950DF6222FB6631E1EBC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED3ABC29606CB6F9337BB302194076AB /* Foundation.framework */; }; - 3DAA93F17722BDE26B1EF1720449F883 /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CA71C2FA19AA4DF65FFE25558510C11 /* FBSDKBridgeAPIResponse.h */; }; - 3DDC0185933F124931CE4962AABAB04E /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 958A88B9D72E9934EADC8C9179B0E455 /* BFCancellationTokenSource.h */; }; - 3E3A02D5AA0C2AA0E5C6BAB31A195D91 /* FBSDKLikeBoxBorderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EADBDF1DFD27B8D0B09D789CE9B66A6 /* FBSDKLikeBoxBorderView.m */; }; - 3E8C87F48E3786E177DE28E61F4E57AB /* FBSDKLoginConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 0536CFD0FB595B94B070BF9F406E1C6E /* FBSDKLoginConstants.h */; }; - 3F64A64ACBA4C6FD46BCFBC3AD4F8727 /* FBSDKBridgeAPICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B58B12D0098350BFEF482A1274F3C4D /* FBSDKBridgeAPICrypto.h */; }; - 3F7EC364751F75C1A0A04250BFED217A /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 39DDF6968CBE57929F3632EACEAB2610 /* FBSDKAudioResourceLoader.h */; }; - 407FB0E1E5BB584D59B0E4BECAE1EA17 /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = DC55CDB4CCC04F5A9F06E71FFE785F36 /* BFTask.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 41B9DD20AD35BD9BBAB55C2B9B09BF80 /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AAFA5AFB7771A50B2E04EE16097AE2E /* FBSDKConstants.h */; }; - 41FDC6A65A60AEEDE0F52ACCE1C8B6AC /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 86B1B9D4698C595DBEBFF71FBA796D03 /* FBSDKMaleSilhouetteIcon.m */; }; - 423330C6B01AD37FF96720AC2767E01A /* FBSDKLoginManagerLoginResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CA34076F58016A8D344DF051264EC600 /* FBSDKLoginManagerLoginResult+Internal.h */; }; - 43FE98D2FD3B83F90B0066D11CC7468A /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = DF75B30DC0865920AE9E1B19F32AD80B /* FBSDKServerConfigurationManager+Internal.h */; }; - 4420194CD9E598D9E8831F5F1E471CC1 /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = A71B981C41660472869BD0AAB04382C0 /* FBSDKGraphRequestMetadata.m */; }; - 4669B1FD4393A31136FECE7E33E2E615 /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = 06D6B35A2ACE17598D198FFFA920B997 /* FBSDKError.h */; }; - 467C3ABFCF99EFCEF7FAE6A1B80F12C5 /* FBSDKShareButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 8725E71411518E68EEDB1C8286EE55BB /* FBSDKShareButton.h */; }; - 46907396399AC7ABE8902C4415F298F6 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 41CFAF1E1E62AE0A66D11ADAABFDD595 /* BFExecutor.h */; }; - 46BEA5AD8A3D422A96D95DC0E4257939 /* BFWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EB290C8F6E8E6E8FC74EEFAD135259E /* BFWebViewAppLinkResolver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 49421026FE47248CF4AF6EF3C5D13494 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED3ABC29606CB6F9337BB302194076AB /* Foundation.framework */; }; - 4A3C09FA15FA477592FD19B04B6DAA54 /* FBSDKLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B0A365A7833E9C747150256183939CF /* FBSDKLoginError.m */; }; - 4AEAD0A6D5815DF782ADCCD822D99082 /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = E88798669932F94A6C3A3DC258F34AE9 /* BFAppLinkReturnToRefererView.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 4BFB9EC48CD7CE6C71367B494F82D892 /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D62A18D54FFB9AA33D848791F2B9A0 /* BFAppLink.h */; }; - 4C70CDE945E9DA71BF1C90DFC59F57F7 /* BFAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = C03A3298B33198FAA942973584DF194D /* BFAppLinkReturnToRefererController.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 4CD7334521294D0CB39186630A7B34DF /* BoltsVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 28C6F74CFBBB5E9EDDE2A8BC53A897B4 /* BoltsVersion.h */; }; - 509F398D211295351837BB6AC960D4FA /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C1908C17C35F6446698AE8C14A7A62E7 /* FBSDKAppEventsStateManager.m */; }; - 5116B8A961D5089C882E9AC987F2ADE9 /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DDFB93965E515FAEA6FB7A51182E549 /* FBSDKBridgeAPIProtocol.h */; }; - 514394EE53FCBE06133BEB1BD924B935 /* FBSDKLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FA62565BBE412C30069502FF0CC51DF /* FBSDKLoginManager.m */; }; - 530CEAF78868367987ABD76335D3CC8A /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D104BC85E9A4726C0D1B381B549BABF /* FBSDKErrorRecoveryConfiguration.h */; }; - 532F567B13329D5E08A1B4CD0E0CF948 /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 72918635A11FE88E26388BB52C7A8F7A /* FBSDKApplicationDelegate+Internal.h */; }; - 538C67D301EE9960A461E12E29DC104C /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = B70E4B942E4F5FFDC75D62D5A35A3A59 /* FBSDKTimeSpentData.m */; }; - 542A4EDD600F5D4F80E88E64F8348755 /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 18686D428534EFB249C7C2B72191F907 /* FBSDKUtility.h */; }; - 54734BA378F71909763FE9B12579CC3F /* FBSDKLikeControl+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C4AB5BA93BA69576C5A0A741C5004F05 /* FBSDKLikeControl+Internal.h */; }; - 556B4BEE4477186865CB420D799EEB56 /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = CE853CD10ECD55C2CF0F9E4CC5C3118D /* FBSDKTriStateBOOL.h */; }; - 56AE9578D5A1EE4FE77E255E49E364FF /* FBSDKSendButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 12EBCA469BCC9A652E162B87170B3030 /* FBSDKSendButton.h */; }; - 5750590682AA775047A6F7793463BADE /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = FE3F695A6D43B329CB5E37EDF6B476D5 /* FBSDKGraphRequest.m */; }; - 599A60532E54BFFD2ACBF2723F447DFA /* FBSDKMessengerIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 68926D1EF195CCE0C2B10D9C7EA6D834 /* FBSDKMessengerIcon.h */; }; - 59E5F7CFD14C3487F37C1D17EFAB8016 /* FBSDKShareError.h in Headers */ = {isa = PBXBuildFile; fileRef = C88A57B8E059E22B232E9A1336DCB6C3 /* FBSDKShareError.h */; }; - 5A40CA30F0B7BDCE37E9F1FAF3296215 /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A98A92B293F049F7956A464E5A69C36 /* FBSDKWebDialogView.m */; }; - 5B646A14E78903975331A483A9491A61 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = 7325C6E7A2B3643DE8F984C17DF372D7 /* FBSDKBridgeAPIProtocolWebV2.m */; }; - 5C20FD4ED2A23F07C999818F3BA49E71 /* FBSDKSharingContent.h in Headers */ = {isa = PBXBuildFile; fileRef = DF9B508AC2E512E2315EE3967D33A86C /* FBSDKSharingContent.h */; }; - 5C333A12F6DEE056AAE24F1F3ECD1AEB /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = E557465C83E744378BD9E99E95EE5177 /* FBSDKDynamicFrameworkLoader.h */; }; - 5CEF0D94936D45B939E630AF012A65CF /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = DEFB08AC2015F546E03A7EBE7B531F87 /* FBSDKButton+Subclass.h */; }; - 5D00B3FD1E10CA8314EE7B2E6F639AB7 /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = BE01B3E5B1C99EAC2141DD5F8AB29249 /* FBSDKGraphErrorRecoveryProcessor.h */; }; - 5E1E334836A0290430ED7B0F88616D18 /* FBSDKAppInviteDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 924C84F16E12DF079D8940F931F315CC /* FBSDKAppInviteDialog.h */; }; - 5E56B197B3451E124FB0B19972703BD1 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = B41F54859F94464A7063BAD8F5DEEA40 /* Bolts.h */; }; - 5E711151377B9E5382ABE8C714008139 /* FBSDKMessengerIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A95DEF7BEDE8726F9906E6535257C80 /* FBSDKMessengerIcon.m */; }; - 5ECB96604E6A661FABCDF90186CFAB9F /* BFWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = F7A0AE448F9342C2274615F8B33139C7 /* BFWebViewAppLinkResolver.h */; }; - 6212E3FF00DD6A2AA02CE34D9BD2334D /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = 4224206215E4AE2302FDC96A58E94814 /* FBSDKTriStateBOOL.m */; }; - 622B46A901E22E5D91BB3C90DE9CDFCC /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = B1C83C2BB6E10A770B424DDCA045A3DA /* FBSDKMath.m */; }; - 6334BBBF5DFE71A39F4B78F452EB3B16 /* FBSDKLikeActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E629243AE4F868C8E75AC372D1DEC6A /* FBSDKLikeActionController.m */; }; - 635D4231CBC6EB7F6F55E68F921AE7DA /* FBSDKLikeBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E20D900533A9FD00F2DC7A1D0797CA4 /* FBSDKLikeBoxView.h */; }; - 63871AB3E42751D51363EE4D42324D94 /* FBSDKLikeControl.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D0AE422908565AD433E41A1778C632 /* FBSDKLikeControl.h */; }; - 6397F66C8ACEC3576BA93356FE55A070 /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 165375EAB1DC28C393658A5139DE1C57 /* FBSDKBridgeAPIRequest+Private.h */; }; - 63CC62BCC070A6BF1BDEC844E6E201FC /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B6EB12A21506DEFAD3D1AC35360E429 /* FBSDKTimeSpentData.h */; }; - 63FA668AF7EEB9D054D1B49A2B6C7FD7 /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D27D517A8FA7ABC01A523D4CC9BF059 /* FBSDKAppEventsUtility.m */; }; - 6445E957696C984621418F36BC830C57 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ED2A1728265E00DF4FCBB52224C6768 /* FBSDKBridgeAPIProtocolWebV1.m */; }; - 64489CCAD159DF9E9E7A54E2FE713EF2 /* FBSDKShareAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = C2BBB16B19727EFA6001D8DA5BFDAE63 /* FBSDKShareAPI.h */; }; - 64775268853C467B962519877F2B4849 /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7021140A61A89A7065788EF7F6FE9A25 /* BFMeasurementEvent.h */; }; - 64F899D82FC4BB6ECB8532DC080A6F50 /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B5BB805709FFB6878A293945C7DD6EB /* FBSDKApplicationDelegate.h */; }; - 6515776E0BD305B2124402129A1C1B20 /* FBSDKLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0575E3793244EA718CE0007D35E83183 /* FBSDKLoginManager.h */; }; - 66521FE3823C4D51B4803BEDB1B6569F /* FBSDKLoginTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 91D245F8CA4CBBB78697B00434888AAB /* FBSDKLoginTooltipView.h */; }; - 66B869BCC4227C5BE116BF12FDCD8E13 /* FBSDKShareKit.h in Headers */ = {isa = PBXBuildFile; fileRef = E9F08741DEF6A1D2B1AC19BDAA8B851A /* FBSDKShareKit.h */; }; - 67604095ED041F533A408815BB02A6E2 /* BFCancellationTokenRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 075B616D3A97272E3EADC31EADC87E6D /* BFCancellationTokenRegistration.h */; }; - 6ADEB932DF2052B403A8081F7F6FB6FD /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A3FFE114934342A6293CAA369A5684A /* FBSDKGraphRequestPiggybackManager.h */; }; - 6BB2309BEFAB49815750D7EFA142AD47 /* FBSDKAppGroupContent.m in Sources */ = {isa = PBXBuildFile; fileRef = E777FE88F6ABED3F476963B5B7D5C3C1 /* FBSDKAppGroupContent.m */; }; - 6C8783ED1C88B44C9E3D1790CFE41826 /* BFDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 20CCC4BC67725A4015A7A848B16ED671 /* BFDefines.h */; }; - 6E447AD7EC572B2C26DEB819F352E8FB /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = E4742C855FF14D3374DADBC22D0B3626 /* FBSDKAccessTokenCaching.h */; }; - 6E8B990B944235DC3ECAC6D925DB2C8C /* FBSDKURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C99BF979526D0E1A3D9A5677F3A18A6 /* FBSDKURLConnection.m */; }; - 6F5B7115A39E3C475866B1EA0D5AD5AF /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C592CC7FBD1BF17DD1A484916AA7E85 /* FBSDKSettings+Internal.h */; }; - 700CAB9C03DEBA19C44BD5E8D0F2A3C4 /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 16E3A15FF65AF85ABCD42065EAAAF029 /* FBSDKServerConfigurationManager.h */; }; - 7153C03C230E494E41AF946C8FE45A4B /* FBSDKShareVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CBBB605F74764838E88897E88411957 /* FBSDKShareVideo.h */; }; - 71C5F8270B32558033282502BC3D8A42 /* FBSDKLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = 13FF75A9C1FC86B8BB017906047CD763 /* FBSDKLoginError.h */; }; - 72AC09070892237ADC0AE8C2876565AA /* FBSDKAccessTokenCacheV3_21.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E2113F2BAA1CC96FE4BEBF42FE4C415 /* FBSDKAccessTokenCacheV3_21.m */; }; - 73A8CB489961CC597812CB33A21E25EB /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E6BD5EA50424CA24CA7148B1E4A106B /* FBSDKGraphRequest.h */; }; - 73B2935A00AEA602158F897267556E86 /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = A52D1235E783D39988D2B6E470ADDA7F /* FBSDKSettings.h */; }; - 74E5BDDFB7CB47CA66A9A0C5A80BC104 /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D227F15B3C39C8F240799FC97C03FC7 /* FBSDKProfile.m */; }; - 751995A70FBC691A9848C197D354D3F9 /* FBSDKLoginManagerLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D42936E332BFFE8C7AEA60379CAA0CA /* FBSDKLoginManagerLogger.h */; }; - 752DE38A344B49BBAEB857E0EB978743 /* FBSDKGameRequestContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A44558D108D044EF825B0B6D60677E9 /* FBSDKGameRequestContent.m */; }; - 762A6D233F9ECF033FF6A93EE8D1B312 /* FBSDKURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B6A3059AD3E528BC8797D2FC76256C7 /* FBSDKURLConnection.h */; }; - 7667B428B685BFA7941575697E3FD591 /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FF996A5E210707A84723CEF66C72615 /* FBSDKViewImpressionTracker.h */; }; - 76AD1FAA34AD4CA2BD3F7C18911BFC30 /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 26DE794F5D70A3E6AA3856E8B437F8A1 /* FBSDKErrorRecoveryConfiguration.m */; }; - 76C0743B4B421043366A6302A19A16B3 /* FBSDKShareVideoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = C189A94CF246B97BF2987B6E1D8D19A2 /* FBSDKShareVideoContent.h */; }; - 76CE6EAA24A997F35EE30A2085F5B4A5 /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 398C73EFC085AF867FD191360CA9E692 /* FBSDKBase64.m */; }; - 76D582E94A30659780B659442279237E /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D2532E23A345066E6895AB5BFA257B95 /* FBSDKGraphRequestDataAttachment.h */; }; - 783DDF2DD53195D9AC1863EB6095BA29 /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 08246BDCF7BCF08AB9C89B6EC23B82F1 /* BFAppLinkReturnToRefererView_Internal.h */; }; - 786FCC431FF021DE2922004A00A4ABCA /* FBSDKSharePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8E40E6E3F7E645FF915A402B90C5FC /* FBSDKSharePhoto.m */; }; - 7969A4428697F074353829C5125C0B0E /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 942B56873727FBE84A29CD08DC9DF625 /* BFCancellationTokenRegistration.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 7B2C42E4C07416AF7B0B47A94C5D449B /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = F406E6A99876CF2EAA128E3273EA1168 /* FBSDKAccessToken.h */; }; - 7B85EF9B84423C92EE09DC21CDFAE27C /* FBSDKLikeButtonPopWAV.m in Sources */ = {isa = PBXBuildFile; fileRef = 17CB7B06981F44E91DD1BCD38D59103C /* FBSDKLikeButtonPopWAV.m */; }; - 7CE6D5210A69563E538E075CF0C96C83 /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EE2EF71BA2F3066A6E38404F4C6E5BB /* FBSDKBase64.h */; }; - 7E169254B8EFFB64AE77877D4ACC5752 /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C1C914E1A584C53FF0F2FF1FA95D8D97 /* FBSDKGraphRequestPiggybackManager.m */; }; - 7EE7F793B552F7D4781DBEBB3FA9A422 /* FBSDKSystemAccountStoreAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A8296B0778C8F6FF86E096891EC3330 /* FBSDKSystemAccountStoreAdapter.h */; }; - 7F63B791432A0A4F438C96CD7E0CD9BC /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 79B5D96C4AD1BAD8C5A16095FE40D904 /* FBSDKGraphRequestMetadata.h */; }; - 80E5B1D10F29D06CA8F17EC6D8D3F5AA /* FBSDKAppGroupAddDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = E01F50F6336774FE25601285EEF01EE5 /* FBSDKAppGroupAddDialog.m */; }; - 81147666D0A1B53CF71F2DEDC9D6A067 /* FBSDKLoginManagerLoginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 543A2D9E4374BEADC0C923E0AEFCE01A /* FBSDKLoginManagerLoginResult.m */; }; - 8226E400E3E52E1D55BFA73458A980E7 /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = CCF95C1DF1520BBB95BB1817504B8776 /* FBSDKError.m */; }; - 822DB121B5BA73535DE85FCC300706BC /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 35F0D9C7E4A77DC844319010E2664C26 /* FBSDKContainerViewController.h */; }; - 82A86E910E3E517AEFA5E72CFF5712AD /* FBSDKLikeActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F5D9A88B97412C115AF0CFCA999F8C2 /* FBSDKLikeActionController.h */; }; - 82C4EF653777E50D349F845C3A147749 /* FBSDKGameRequestContent.h in Headers */ = {isa = PBXBuildFile; fileRef = DB675133B40BF7554858A2DB108E8BFF /* FBSDKGameRequestContent.h */; }; - 83224CF6EA0FE34F75744507ADF75FD2 /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = C0BF39E0E35CD7253485DDB425C68004 /* FBSDKSettings.m */; }; - 83E613CF96D388F4BAB48941647A294A /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = C39716FEDA3645018E76AA83F2EC2FD6 /* FBSDKAppEventsState.m */; }; - 855A62F1C870083E9CD8136DAF729168 /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D24677F8860BB996C1BE057AFDAE111 /* BFMeasurementEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 86CD43D3731553C5A3ABACC389FC1E0C /* FBSDKBridgeAPICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 25C81CF10A1B913E3ECE5AE4BC865122 /* FBSDKBridgeAPICrypto.m */; }; - 86E1F443BB682D0F2A9FCE4C3D4F6B6F /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A029B649640C1353F893551FE5BEA9F /* FBSDKMonotonicTime.m */; }; - 88CF8FD178995FC2DA3F5D289D6F0873 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = ADA0E0868E9C002ACAA9EFBEAA6C7349 /* BFCancellationTokenSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 890B1F7156ADB0AB7BE1FA6A95575362 /* FBSDKShareLinkContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B6C469BF1DF1A22E1734404841744335 /* FBSDKShareLinkContent.m */; }; - 89A9445D0396D959926D55E3FC6CA06A /* FBSDKGameRequestDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = CE22ABAF0BB23620853203C50BFB6759 /* FBSDKGameRequestDialog.h */; }; - 8ACE7F123E09ED0A01F95357C99AE282 /* FBSDKShareButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 48B7ACF3FD17DCB8BD8D200A9067137C /* FBSDKShareButton.m */; }; - 8B622D2B8F97CB71EE1273AD81A43343 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 002664079DFD68B6479C6AB0F0232180 /* _FBSDKTemporaryErrorRecoveryAttempter.h */; }; - 8BC46BEC754DD9900B8B3F76317A3244 /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 2274A950D07549AC3A4D354548562493 /* FBSDKColor.m */; }; - 8C6EFE905F15BE56E8408B5D5D6EF4A3 /* FBSDKLoginTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = CB2709395EFC37B68B84452B8B52D2FA /* FBSDKLoginTooltipView.m */; }; - 8C9FDE665A8D5B02FC558942B7782E56 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BE2BA427F26BC5B28DC6D9605083C58 /* FBSDKGraphErrorRecoveryProcessor.m */; }; - 8D36023B3040CF604EE9B5E9AB1488D2 /* FBSDKShareDialogMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5111C7A616531A62E55A8FC7C6C72498 /* FBSDKShareDialogMode.m */; }; - 8E43998099C63D2A9D3B8069D52D81DE /* FBSDKMessageDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 00A650A22497211EEC0B83849E6FA811 /* FBSDKMessageDialog.h */; }; - 8E85C6D1BA82C015543BF6647AB81363 /* FBSDKShareOpenGraphValueContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = B516688D51560D55EF42ADE2FB6AA4AE /* FBSDKShareOpenGraphValueContainer.h */; }; - 8EB23BAAD63A613F57DF8CD3C72B7259 /* FBSDKShareDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 88875A5B7AE372A96E9961E4551A6C07 /* FBSDKShareDefines.h */; }; - 8FB2338CD7F58B919C02EAC4A23417B2 /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = EA0A354774F149974049A4C2978DCC7F /* FBSDKGraphRequestDataAttachment.m */; }; - 910E7E8C68D3382BBF53091BE45E408D /* Bolts-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D2ABC77A4C6425C22BB540990BB5A163 /* Bolts-dummy.m */; }; - 91C2251DF36023609ABFDE929F850422 /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = A531906FF2DAF6D0F7F834076CBEC4C2 /* FBSDKAppEventsDeviceInfo.m */; }; - 931164E42CFCA82B5C9CED43CC769D37 /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CEC8B35C95959831EE1057B11322CE9 /* FBSDKWebDialog.m */; }; - 93169A6D1E97B3A5CD2CF6DD1AFA5EF0 /* FBSDKLikeActionControllerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DCA2983B324CC477B5B90C4E6EF6536 /* FBSDKLikeActionControllerCache.h */; }; - 943E672E2E8964259A108CFCA62618E4 /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E2CB7869A71090D975E7A675914369C /* BFTask.h */; }; - 9446F878E86942E6AF0487891E865A03 /* FBSDKLoginKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD55E74CE45585A17758C1059634836 /* FBSDKLoginKit+Internal.h */; }; - 948272BE3CAE53C5DDA5000B8A51AEDD /* FBSDKBoltsMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 771E8EB6E927AC1AE9224E750AB1243B /* FBSDKBoltsMeasurementEventListener.m */; }; - 94E2FC6A422448963CEAE61D410E16FD /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C2EF67EB1769993AA0E90FD5B40C0518 /* FBSDKBridgeAPIRequest.h */; }; - 959259BB92C987851AD969FC45E45406 /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ACFCDE2F85688257805323CB7568B51 /* FBSDKProfilePictureView.m */; }; - 95C048BCA333A52658C95DB524B70428 /* FBSDKSharePhotoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = A3F48D508CF9A089F6D2FBD3067DE053 /* FBSDKSharePhotoContent.h */; }; - 961126493126A68DF7656A6C12611CFE /* FBSDKShareOpenGraphValueContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = C082E4FF16E72FFD979AA487D6E60C1E /* FBSDKShareOpenGraphValueContainer.m */; }; - 965BA8F00CE3D6909531A1A75CECA2B4 /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C57395BC9AB5BA1544DDD898B1B9146 /* FBSDKAppEvents.m */; }; - 96686EA3DB6DD21C52CE24586DED9641 /* BFAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 592B052F02115EC6E41AC5B9CB79E1C6 /* BFAppLinkNavigation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 9821757B5F4E33C440DFC1403937F61D /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = EC03B77FB6AEBB7B42B5DDA048688205 /* FBSDKInternalUtility.m */; }; - 98592F12C4012F47B2A972CA886D054E /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 6150512B0D0562C3F6C90F95463621B1 /* FBSDKTypeUtility.h */; }; - 9AD2C1B0B5D075843F4A50DA2F7A54EA /* FBSDKShareOpenGraphContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A1979D48C487FA3EDA1159EF3852F20 /* FBSDKShareOpenGraphContent.h */; }; - 9BBEAB67727DCFD56D431780FE44F80B /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15C51B4DF1030238AF6D7649E82788B5 /* FBSDKContainerViewController.m */; }; - 9C22E4B97819BA5E83843C8385CB00E4 /* FBSDKLikeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 21EBC77612C0C02A1BCC39116437EA23 /* FBSDKLikeButton.h */; }; - 9D9BFBBA2F59972D7E86515C53035F98 /* FBSDKAppGroupJoinDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 066BD5A6D3EB9C54F7FF6EC096EE0937 /* FBSDKAppGroupJoinDialog.m */; }; - 9DF452BA99BA653723EF19F53745D85C /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BFB535A8B4485F7D0DE50127BA902285 /* BFURL_Internal.h */; }; - A05B7BAC0ADC16FE809F6DCABEBEC818 /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 5649742E243B8F68ED6ABBD16F3AD910 /* FBSDKInternalUtility.h */; }; - A1D3061933F687CC2D4732CE09FAB63F /* FBSDKShareOpenGraphContent.m in Sources */ = {isa = PBXBuildFile; fileRef = C57529A9BA3C0D011FCAA5B9F68062A5 /* FBSDKShareOpenGraphContent.m */; }; - A1DE168A12031E69C57F6DC684EFA0D5 /* FBSDKLikeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 7106B5AFA24BAAD954C531BB2060F0F6 /* FBSDKLikeButton.m */; }; - A28F374AB5DF6E8893BD0AC3EDB38AD2 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C9260CF6266A23A17B2C842C283E8D9 /* FBSDKLogger.m */; }; - A4A522C2511616E471BF42C39B51CC2D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED3ABC29606CB6F9337BB302194076AB /* Foundation.framework */; }; - A5BAA576C0CEE292FA3962B08F236DDF /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 472EE8D03187469F99EC5B927D40BA24 /* BFCancellationToken.h */; }; - A5D658E4E7750FE8C4DB6C940440D6C5 /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = C5971F3A2B0D25D55D3B109A7C6871E9 /* FBSDKGraphRequestConnection.m */; }; - A72BFDB0F5E6B612043D662F38375CD5 /* FBSDKLikeButtonPopWAV.h in Headers */ = {isa = PBXBuildFile; fileRef = D6E644B97F6CC42B51B503C2EF1D6C1A /* FBSDKLikeButtonPopWAV.h */; }; - A770DF35E61B676731FA5870E67A812C /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B3806A1B94DBFDDC3984E1C3453BD094 /* FBSDKGameRequestFrictionlessRecipientCache.m */; }; - A81B6899E45E0474D72759E0671E3EEA /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A00FD05BA1219E73100D7E090F01F37 /* FBSDKUtility.m */; }; - A8D3E43445F3B76B2EF512055E638984 /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = B2AFE071DB027CD94877612CFD3D006B /* FBSDKCopying.h */; }; - AA4717F942CA25B414201C18A46FD237 /* FBSDKSendButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 921B4A2DE5C84AE72BF2515994B661FA /* FBSDKSendButton.m */; }; - AD5D1D2FA4043A5E2F4A7125384450C4 /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = DD2D3EA91E3DEECA63A7E8D2F61622D0 /* FBSDKLogger.h */; }; - AD65F98FB86F1F2D102A08AEA878EC72 /* FBSDKShareKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 228E810DDF4A3C7DA3A85A9E2D4A501B /* FBSDKShareKit-dummy.m */; }; - AE08232806308393A562E4908555BA97 /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = AC4DF8AF9C3B56874F7711E6F2D3096B /* BFURL.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - AEB99931D89BD7370042412945D4667C /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 94415A29F6A91534137FF604BCB14AB6 /* BFAppLink_Internal.h */; }; - AFF31C168316FFEA345DCCB873752DB0 /* FBSDKSharingButton.h in Headers */ = {isa = PBXBuildFile; fileRef = F2CC45F6A7650A6695B67A7054C43C61 /* FBSDKSharingButton.h */; }; - B0175E1CC830A5A82913B4A7F0152C0F /* FBSDKTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E12677D5DAFEE12EA3BA1E2055E89F8 /* FBSDKTooltipView.h */; }; - B058FE7A182DC5347E8F65FD5DB9AC2C /* FBSDKAccessTokenCacheV3_21.h in Headers */ = {isa = PBXBuildFile; fileRef = 7575CD22562E2CAF02FF831B37B73C85 /* FBSDKAccessTokenCacheV3_21.h */; }; - B23D927BF8F18FEF89C82761FA2B4BA4 /* BFCancellationToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D5414763D71E60BCDE8CE7AB80B2CC7 /* BFCancellationToken.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B32F7CCC98EB822CCF21FE7303F43841 /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 893AE4BEC580A446CE3ABAEAD7B53BAF /* FBSDKDialogConfiguration.m */; }; - B3BE0C9C5D12D46FF7986661A1F9A875 /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 279F862324C9CEB1307D4D63451084C5 /* FBSDKServerConfiguration.m */; }; - B3F0AFB7BC6557C56B58AF827C0B5484 /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 3686DA8DE42E552A6664A3515098B2AC /* FBSDKCrypto.m */; }; - B52EA95F5243B523B317DF9FEE9F1E22 /* FBSDKShareKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B63D1AD2ED4371D377A70F2324E760DE /* FBSDKShareKit+Internal.h */; }; - B53892E01BE831E973296B75B7EA7822 /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9186B74312AC521E7BBF48001A87F4DB /* FBSDKCoreKit+Internal.h */; }; - B58593A4A44DC201302965C4E75E3EA0 /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ED0E1AC1869827BA4E401AEE8EF913D /* FBSDKColor.h */; }; - B6FF39AE12B24C61E4E63F63329AD042 /* FBSDKAccessTokenCacheV3_17.m in Sources */ = {isa = PBXBuildFile; fileRef = BAD471AA47694836A5869F2C1DA93F88 /* FBSDKAccessTokenCacheV3_17.m */; }; - B7CE8A07ECC3C3F0994183B658C1FBB6 /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = C241898523306A2F36BA957442AECE37 /* FBSDKErrorRecoveryAttempter.h */; }; - B8AD4E788B27F8C035AF410B1C3EB827 /* FBSDKMessageDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 924FEBD3A9C3142529E09988A1AF5D31 /* FBSDKMessageDialog.m */; }; - B9765A071F255916280A2E79F0720FA5 /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E89EBAE854490CCB0C5339A4813E9B51 /* FBSDKServerConfiguration+Internal.h */; }; - B9BFA96DA9A7417DBF08E05811F7608B /* FBSDKLikeDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 84FC51CEFB7A3CAD3C1BD50FBFC5A2C2 /* FBSDKLikeDialog.h */; }; - BA99E18915E6D55C1DDEFAB80BB4ED98 /* FBSDKGameRequestDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = F0F21F7A00DAFE2805355B155B9130E2 /* FBSDKGameRequestDialog.m */; }; - BC3A05425B4E79ED86788327BEE3A453 /* FBSDKShareDialogMode.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB27FC0CB1D4381C0F19C75A5B1FBF4 /* FBSDKShareDialogMode.h */; }; - BCA75F0A9F1A771DC78B1F8EF1EA3A3B /* FBSDKShareDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = FD8213BF5D4E3A775DE2CDFE95B11D27 /* FBSDKShareDialog.h */; }; - BD53A7AA25C4819BD49089938C6C18B3 /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 074F24F3EBCC23154EFFEDC5D0444966 /* FBSDKAccessTokenCache.m */; }; - BDE3E86FAB8FAEB7B9A4E8ACB002CF0A /* FBSDKSharePhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = ADD174C9CB223131CA86CA2808E20A95 /* FBSDKSharePhoto.h */; }; - BE291760D3E5058139FBA34F1168E703 /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = 51572F406F0AFA9A30C97AF6374A415C /* FBSDKGraphRequestBody.m */; }; - BEA74841C7130B61431B7FCC1DC9A187 /* FBSDKLoginConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BFFBA3AC0C02108B7DA60345A7F020A /* FBSDKLoginConstants.m */; }; - BED6A27BF7072DDE75C15ECDEC54865C /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CCAB63AD3B56ABA526AA33F4B072751D /* FBSDKShareOpenGraphValueContainer+Internal.h */; }; - BF8FA8030BF4A7E7C81C845DBF9F66E2 /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = 3196869736428BB66717FE7BFDA19965 /* FBSDKGraphRequestBody.h */; }; - C176728EB7BE2514A1A18D95EF59B9FA /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 21E2EC6DEE56644A5CEFC5F1DD108201 /* FBSDKBridgeAPIProtocolNativeV1.m */; }; - C1D984D893C9B2F151CD01FA53F38FC1 /* FBSDKLoginUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 808CC2D89F4CAACB4CF99EDF5F5B3F24 /* FBSDKLoginUtility.h */; }; - C1E2EE58E2EA7629E26E8CCB79BB17D6 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = 485C58584AC1DB1D243A5A57D0B31866 /* FBSDKURLOpening.h */; }; - C26467C6BEB73B1CA99181DCC5BFB515 /* FBSDKShareOpenGraphAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 7541C21C9026B7882A0CA33D03229333 /* FBSDKShareOpenGraphAction.h */; }; - C4810A644FD861EFB3501D98E71DC4CA /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C4122009F6CCD4958E84541DAFBE9B1 /* FBSDKMonotonicTime.h */; }; - C4C1A3B4D31942461B566C5930B08591 /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 38F0EE39E8FB99923B05946F733FCDE6 /* FBSDKAppLinkResolver.m */; }; - C4F6B361F13A14F17531B0DF4C589D66 /* FBSDKSharePhotoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = F0BE2E93E589BAAD87094107404458C4 /* FBSDKSharePhotoContent.m */; }; - C5E4AF06F8FC98D2C53F1F553EC49DE7 /* FBSDKAppGroupJoinDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B46B41FC5464B48A5B5275DA0C6D3E5 /* FBSDKAppGroupJoinDialog.h */; }; - C6C1716C620893DE14E8439744E41BB8 /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = 804DC229C4E97BF5C05E79781E0F3F75 /* FBSDKBridgeAPIProtocolType.h */; }; - C71ADB1D792D37972836F49970FF7F56 /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = 26339C8E6E8F5A145E0410B33CAEFC76 /* FBSDKViewImpressionTracker.m */; }; - CA5018821A0E860850A7A0664134B997 /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 09F5BB824C951F2045215ED0D7633774 /* FBSDKServerConfiguration.h */; }; - CA7C818918D88860E2609BC9106C9810 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A5B22F878870CE770E0E9B97C28A59 /* FBSDKBridgeAPIProtocolWebV2.h */; }; - CA9558AD7F6AC94824C9C9EF39E0C01B /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 55931A99F538C33CD1E60CBBF28D7444 /* FBSDKTypeUtility.m */; }; - CAE9DB888185C6931D53C05745B82E5D /* FBSDKShareLinkContent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B6F3BB37BEED8098957948DDEC201160 /* FBSDKShareLinkContent+Internal.h */; }; - CDC7BB2EB9E1AFF7F11E4B7E057E4EDD /* BFAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = A944D2DC04BEF6207604DBB76FBB12AB /* BFAppLinkResolving.h */; }; - CF397493647953A85CDF077F0F1F4817 /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7647CEF4963EF72C881A0512B4A106FC /* BFAppLinkReturnToRefererController.h */; }; - CFCB25F51BCA1DEA91F87F71B10504EA /* FBSDKBoltsMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 79C5E77BE16EE3DED6079065F72F3119 /* FBSDKBoltsMeasurementEventListener.h */; }; - D00BF86E482A580D2A97CFC92154F79E /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 7052F61CFA5DBBB1A1F2329AE83EF04A /* BFExecutor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D033A089BB2224AA3A0156A72B49B3FB /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = 330D9CC147E914E18E2035F5B6441E5F /* FBSDKLogo.h */; }; - D05BD8665A0A93538E3C451535DFE58E /* FBSDKShareConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B2E189F86CFA538D17F926EC1C45AC6 /* FBSDKShareConstants.h */; }; - D1256713DD24A7275D5802A27C631F14 /* FBSDKShareError.m in Sources */ = {isa = PBXBuildFile; fileRef = 63BF64F3A37FC48CF494725985B8BBE2 /* FBSDKShareError.m */; }; - D2E51D4190852D64BB0AA2B49E619BA8 /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = C7C691E993DE2424E1B336A86721F67E /* BFTaskCompletionSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D374EC2D04FBBA8C2FFB7E58174FCFE1 /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = AC13EFDCE9B8FF9E1CAE5BEBCA2D7C17 /* FBSDKKeychainStoreViaBundleID.h */; }; - D40807D0CD676A9F3013821A756B7743 /* FBSDKShareVideoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A41D002C9FB24CD74E5A6B80176BA2 /* FBSDKShareVideoContent.m */; }; - D4150F08DACC0D4D7D2E2D42E3E1FC00 /* FBSDKShareUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 12D8EA79EFC598C83745B7B3A0BA4184 /* FBSDKShareUtility.m */; }; - D4401D7CDC50F868125D07720EE0080D /* FBSDKAccessTokenCacheV4.m in Sources */ = {isa = PBXBuildFile; fileRef = A876B3147441FD714C84B3F962F228FF /* FBSDKAccessTokenCacheV4.m */; }; - D51AB8E965DECEFDC39A02A1140A342E /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = D9899AB1FB240FC4ECF430207E7A6B41 /* BFAppLink.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D5290C47C521C3B4E98DD520A05354FE /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D7947DAFEA73B2AEDEE3110BE69C4C3 /* FBSDKErrorRecoveryAttempter.m */; }; - D5453B795872AF7A76DA1F01795E5B36 /* FBSDKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 162FD6F0F18A8A4BD0969AEABB0CC78C /* FBSDKMacros.h */; }; - D72A3BEA9AD7CB2D4C025CD197D7D39C /* FBSDKAccessTokenCacheV4.h in Headers */ = {isa = PBXBuildFile; fileRef = C60FB16C403DE81404C5A483846D5521 /* FBSDKAccessTokenCacheV4.h */; }; - D886FDCCE6C9D581FB54D0279553BC46 /* _FBSDKLoginRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = AEE40C84F20C8B4855574E68B561F586 /* _FBSDKLoginRecoveryAttempter.h */; }; - D8F8C8278B94951DD5F0C4C70DB4E454 /* FBSDKLiking.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A6AB04D37A2DB4DEA04B11CAFFAB82 /* FBSDKLiking.h */; }; - DCBAE86037E81F1497936455B43C9065 /* BFAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A255D4D45C82DE35FE87E3BC6774FD6 /* BFAppLinkReturnToRefererView.h */; }; - DCCBA89A8A2710FF7E054F69EC964911 /* FBSDKLikeButton+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E2D8292478F266CEC5D9B4545F591A5 /* FBSDKLikeButton+Internal.h */; }; - DCFE87B61173D909B11DDAA4F71788DE /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = E08C0F0B4B039E308A51F4526A22E667 /* FBSDKAppEventsUtility.h */; }; - E1F83DC0FE5A3C7C03561FA9CE7FE6A1 /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 74E292C58D36C37E72777B5729D63ECC /* FBSDKButton.h */; }; - E610D8D46F5B853A640B9EB01EB105D8 /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = C7EE49040D26C6D8282770B424B78159 /* FBSDKKeychainStore.m */; }; - E6D9CE27BE4674CF7755B9F82B1E58AA /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = 53532C476C4D8D532ED66CDBF0F8657F /* FBSDKAppEventsState.h */; }; - E725B8B6F2DBEEA2C8106229737D91AC /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 7153F996BEDD033559675D14F2FB9FAA /* FBSDKAppLinkUtility.h */; }; - E72B8ECC477EE9195AD7F41392B4CE7B /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 32CA3C7FC2ED01D33FB4A2353CF242BA /* FBSDKGraphRequestConnection+Internal.h */; }; - E74D71AE166349C35C42F3D5ABD5B1C9 /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 51C741025D484F6D07E6AD3AEA7291A5 /* FBSDKErrorConfiguration.m */; }; - E7B50434828FA042869D78C54A58AF90 /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C68C4E5CCC43F6D12B543C207FF10C8 /* FBSDKErrorConfiguration.h */; }; - E8280DA9138A9950C934A0F13A7A2DA5 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E21BE33CA995E3E18A1344838330D8 /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; - EA426EC658ED2A630090136BCBDCF8F8 /* FBSDKAppInviteContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 78C57BD49A74C10B14C023D390C280E1 /* FBSDKAppInviteContent.m */; }; - EAFC5D6DFE023A9DA433BDEFAD30C6E8 /* FBSDKLoginKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 08CDE37FE6C9394E1AE63982CC68D3B0 /* FBSDKLoginKit.h */; }; - EB23E339DBA43E1DA3185BB324CEA54B /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 7950AA08C2373C1D88DDA283D1C68C10 /* BFURL.h */; }; - EB7D5269252876FDD8FB3D3DFE42C73D /* FBSDKLoginButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 80E57FF8B4AA3C7BF27A67169E51EA08 /* FBSDKLoginButton.m */; }; - EBB4A13CEE376C95546B2347E2D7250E /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 90A9CEFADF5414847EB52B6DB5FB52C1 /* FBSDKGraphRequestConnection.h */; }; - EBBB2E68E5C2BB4A392A6B52AAB6A65D /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */ = {isa = PBXBuildFile; fileRef = EE99AA22341E1A198DE866465C3C3091 /* FBSDKGameRequestFrictionlessRecipientCache.h */; }; - EC76783DEC44B62526E83D829C71D18C /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2309DCCA91F9883D4D79FEE1EF0099E8 /* Pods-dummy.m */; }; - ECD065627810DD77F59266E24A503AA9 /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = EB1A78A2C977DABC4740C7FC08BBB2F7 /* FBSDKButton.m */; }; - EDC74CD08B6D32181CD98A3DE1A2DD7F /* FBSDKAppGroupContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DF70211D471BD5D151D459A27B6B280 /* FBSDKAppGroupContent.h */; }; - EE1E0445D5539A5A83D898095665B993 /* FBSDKAppInviteContent.h in Headers */ = {isa = PBXBuildFile; fileRef = A756AEA07B826EDE98ADCBC9C088F709 /* FBSDKAppInviteContent.h */; }; - F1CA949069BA75B782FA550701EFF48F /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 80A48EDE1E87DD0DC00057715A434A28 /* FBSDKBridgeAPIRequest.m */; }; - F1FC725A6D5E9E16D3824E4521668E1D /* FBSDKCheckmarkIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = ADEFB298B7B2CC468183D78059BF9DF7 /* FBSDKCheckmarkIcon.m */; }; - F2AA769C78097E16F72E050AB93DE00D /* FBSDKLoginManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = FB1C07F9FFF2FDF41760BCFD01D6DBD2 /* FBSDKLoginManager+Internal.h */; }; - F4F5599031266758C5A6EE7027DF6BD8 /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 4864721E089588E27ACD5169546B84B7 /* FBSDKCloseIcon.m */; }; - F794A07C3CF58F784345DCEA85E814BA /* FBSDKShareLinkContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 02A139F6C34566CB47C35B489480DD07 /* FBSDKShareLinkContent.h */; }; - F8C1154884436F4CDA773DBDD5B4B224 /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 8761049FB9D429C3A55046B90C71D88B /* FBSDKDialogConfiguration.h */; }; - F8C616C859912B70A4CD872EA8F7A23E /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C1EFFE13B9B3F21423A0453CAE574AA /* FBSDKAccessToken.m */; }; - F9021083802664367043208DEFB7E6EA /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = A06FF11F33DBF85168D2BFEA8F9CC0B6 /* FBSDKAppLinkResolver.h */; }; - F976D265D4CAA37B54A9444E072C4934 /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = ECC9B0749C18CB8AF78E670D8E76B4BC /* FBSDKIcon.m */; }; - F9DD490313C1A34374EB935EA6F504E7 /* FBSDKSystemAccountStoreAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E67958ECD2A430829F342463DD96876 /* FBSDKSystemAccountStoreAdapter.m */; }; - FB04BF441608674C807973A587CC5963 /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = 78B2C5646EBCB59F70AD7D01594943A9 /* FBSDKMutableCopying.h */; }; - FB2D03E9EF1F1437B211F991DA80C472 /* FBSDKShareAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = A8F6921FE57CF7CEB82F14DE7C7F1ADE /* FBSDKShareAPI.m */; }; - FBB381337318019A66613990BA4267B2 /* FBSDKShareOpenGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 8123DF664552E1E50D61750680BB63BA /* FBSDKShareOpenGraphObject.m */; }; - FC8DF4009AA07E88871E128E58986C8A /* FBSDKLoginButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 22BD1BB2D1ACDED2C3DA5FB714A15C33 /* FBSDKLoginButton.h */; }; - FE176F860A032686AA09D6C366D2C9EC /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 500B28CDDA39D831040A82A0735DA513 /* FBSDKUIUtility.h */; }; - FF337FC6A01267CFC462853F3EDF379B /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = F3AA812465C239C11602D1E90810FE4A /* FBSDKIcon.h */; }; - FF6874A3553124FB49AD0FC2F3B15150 /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = B84EE2CCC07E78723DCBA09471C30EFC /* FBSDKBridgeAPIProtocolWebV1.h */; }; - FFD2A3A9288445D4A3992F29769A080C /* FBSDKAppInviteDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 386BE61982EC743B3A128214EC83CFCD /* FBSDKAppInviteDialog.m */; }; + 0031093FE01CA0F995D38F14E0786CE5 /* PFLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = D45D3E81C27909856D36BC8D34806CF3 /* PFLogger.h */; }; + 0076F8848D3C0862138855C15B8969F6 /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE1C285AB595843D879319E54ED6E95 /* FBSDKBridgeAPIRequest+Private.h */; }; + 00A070B61019CED58251933B64DCD204 /* PFOfflineQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 805A9C7F80B24B7D43C26816704C0E61 /* PFOfflineQueryController.m */; }; + 0115290BBAE8D8A26CBB67DBB296B5E7 /* PFFile.m in Sources */ = {isa = PBXBuildFile; fileRef = BDA465E9443323180CC1815D1C87C705 /* PFFile.m */; }; + 0119725155E71EC7F6CBCEAB5FC19DC5 /* PFTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = E4DE147989205694AE9667AACA7AECD9 /* PFTaskQueue.m */; }; + 011E9F4783EC67957F40FF6CFD1BF3B3 /* FBSDKLikeObjectType.m in Sources */ = {isa = PBXBuildFile; fileRef = 00AA046AB84056772E21CE43C551AAAE /* FBSDKLikeObjectType.m */; }; + 015B1B15761CFB91D536917CD1FBED3E /* PFObjectConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 9820DB142515E9FE68F1635778CDF436 /* PFObjectConstants.m */; }; + 01EAB8D957945D4CE9D3A81888EC6AFD /* PFKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = E166AD26497D5B00C94E0891C82C6BD3 /* PFKeychainStore.h */; }; + 01F6CEC2F048AD473BBDAA8FFA196488 /* FBSDKGameRequestContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C3130D692EFBD2F3FA5A396FF19871E /* FBSDKGameRequestContent.m */; }; + 0240D5556E070D570A97669B5550C3DC /* PFEventuallyQueue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 28938733DD441FACFA78DCA04FC186C4 /* PFEventuallyQueue_Private.h */; }; + 024F2F6E7B359E16D430507777D2A23A /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 71207309A4BF5422B709A558661FB9DD /* FBSDKGameRequestFrictionlessRecipientCache.h */; }; + 025140DE78DC4DE2EADAAA64E7382F27 /* PFPushChannelsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 46C04343C64E76EC67462AD59BFCEAA3 /* PFPushChannelsController.m */; }; + 0295896A65DEFA556020FAF30366DF0C /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = 306334793F42597A58A4BA17738769A8 /* FBSDKAppEventsState.m */; }; + 0455144463BABE9F7588B14858F7FBD9 /* PFCommandResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 3723B220F505C587A732C7DDB88DA222 /* PFCommandResult.h */; }; + 045968C599579171BF784B3516F8B2A1 /* PFOfflineObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = 59E56D9E5ED9372FE9F67EE8F685C3DB /* PFOfflineObjectController.m */; }; + 0490862CDB776C815363CFC351F1F3A1 /* PFRESTCommand_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFBAEBF5E6EDC57B0F60C53E56D90FE /* PFRESTCommand_Private.h */; }; + 049098E1C6C7C462769F96568DA8D72F /* FBSDKLikeButtonPopWAV.h in Headers */ = {isa = PBXBuildFile; fileRef = 695B20B39C65A0F70AF9F9C9D54CDC02 /* FBSDKLikeButtonPopWAV.h */; }; + 0534960921332F24B285B5A2DF46AEEA /* PFRESTUserCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = AB89D35DE0F5C32E58B215882C35703A /* PFRESTUserCommand.h */; }; + 0563FB0BD1A8121457AF6417A3F3877B /* PFBaseState.m in Sources */ = {isa = PBXBuildFile; fileRef = BBE9E1940BF9CB7CB79EEC68691D7CC7 /* PFBaseState.m */; }; + 056D1A2F30304795BCF119D77F6A3444 /* BFDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A2D949315D757A2D3EB973286C11836 /* BFDefines.h */; }; + 05CD7BC5729091AECA9F16F650E89EFB /* PFURLSessionDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5701B935661FE2B2D953052CE58E255F /* PFURLSessionDataTaskDelegate.h */; }; + 0600F71A1A6C706F958DA903B2474602 /* PFCommandRunning.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B99F25C004D2B7579CC0ED827FDD52C /* PFCommandRunning.h */; }; + 06E216A82A4557C2F6C948A602A4B9B4 /* PFCommandRunningConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FC21711E96478983E21D14A7248B1C0 /* PFCommandRunningConstants.m */; }; + 06E66A4FCDA7BE84ABB7212E5D346452 /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C934943D7A25BDE5AA3C99D0D0E2D06A /* FBSDKCoreKit-dummy.m */; }; + 07AC4C46B69255EBF0737753110703F6 /* PFRESTQueryCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 91A20DEF4E05121BC0D3BA0B95057690 /* PFRESTQueryCommand.m */; }; + 07B3F93C12DD63838C00EA94CD93B27D /* FBSDKShareLinkContent.h in Headers */ = {isa = PBXBuildFile; fileRef = AA723A00866BEEDAE1A8E099DFE0C01C /* FBSDKShareLinkContent.h */; }; + 07C07BAC99463E00A00664BABE73C8E9 /* FBSDKSendButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 279F58DF900F5886BE441B7000DE90AF /* FBSDKSendButton.m */; }; + 081A0C2B9D647B6B157889DE9300036D /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = 578C1B0AB298F33880AF7743E63A09A6 /* FBSDKLogo.m */; }; + 099BAF1AD4D80C3814E83CB96A7F9ED2 /* PFObjectConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 983F35D2D34ACB272BCEEEC6040DDF33 /* PFObjectConstants.h */; }; + 09B5027EB6E9E85497A98ED58C0AA9F2 /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DB0C886738CB142BFF8D6C68BDC124 /* FBSDKTriStateBOOL.h */; }; + 0A1FC44863CD4AD27EB4078FE4A8234E /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 60FF9CABF05ED49D7A2F6C7414459E8F /* BFURL.h */; }; + 0C6BC3E49CBD68FA2DF9587848F59916 /* PFObjectState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = AA3F835F4861D394CDA474F016B68DF3 /* PFObjectState_Private.h */; }; + 0CF0CA6113E52DCB32C33183A1B726F2 /* FBSDKLikeControl.m in Sources */ = {isa = PBXBuildFile; fileRef = F7D6DF824B91053634D56B3A1DE837EF /* FBSDKLikeControl.m */; }; + 0CFA690393172E2727762B65A2CDABC2 /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1247DC0FBCBA3414C6BFB88ECA3ADA8D /* FBSDKContainerViewController.h */; }; + 0D1BF3A32608EED521199FC7756F2A2C /* FBSDKShareVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = D47FDBAD7CB049CA85F42858313FA486 /* FBSDKShareVideo.h */; }; + 0D781A587B6C90E1684F0E9881312466 /* FBSDKLoginManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 36C87C6A0D356709A30FBC0A3D13EA86 /* FBSDKLoginManager+Internal.h */; }; + 0DE4FD1C506CB317481F942614CFE432 /* PFFileStagingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 89833C3688D20D27A921CD52CBF04258 /* PFFileStagingController.h */; }; + 0F43A45B89B58E00B1FE0F97BBC073E6 /* PFSessionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 11895677202537B8F1FA94B44D23ACFD /* PFSessionController.h */; }; + 0F5681D4155EF404B63B22B18C1AF88F /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B1E05B566A858D61F1885B32B64AF7 /* BFAppLink.h */; }; + 0F900FFCB72D81E50A554D642CBB8885 /* PFObjectFilePersistenceController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C247169039B75E0BFB4A9F4811F5A7D /* PFObjectFilePersistenceController.h */; }; + 0FD6F7DC809A014C513B088D3EC9DC6B /* PFCurrentConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = C69C77ABF5CBDE6FAEA65F67DC68806A /* PFCurrentConfigController.h */; }; + 1001DEFE89CB83044A7A1B3AE42C0F66 /* PFPush.h in Headers */ = {isa = PBXBuildFile; fileRef = 0175D7D3E9C314F1D72F51BB23D70137 /* PFPush.h */; }; + 1040D99E9461517B77C9B50A96E91A7B /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = C4850C360C9673CBE290A0841176FD78 /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 1041460BCE68A200AF08B5D81DB28C1D /* PFURLSessionCommandRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 5587C60D4A8E123E1C1112734C3FD4A8 /* PFURLSessionCommandRunner.m */; }; + 10D67968048D274197D4CD9F02D7664D /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = F5599187F396820DE7700A6E7F6E43A9 /* FBSDKWebDialogView.m */; }; + 10E5693130E9DBC6DD16809E06484C4C /* PFPushState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B1E5184AF7DB35882426974C6E4F54D /* PFPushState_Private.h */; }; + 1130B0AEE5F9BD63B55C152BAF5106DC /* BFAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 10F366B82EB075ED6CFE0882D1B87BBA /* BFAppLinkNavigation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 115282FAD689F856C602E20DADA1D9BB /* FBSDKShareVideoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BD705FB6C7BC580C655F9EB6061B436 /* FBSDKShareVideoContent.h */; }; + 116721C51B12DAABBC7095E284DD8EBB /* PFRESTCloudCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 05274B2C48957E129DCADF7E7BB272C1 /* PFRESTCloudCommand.m */; }; + 117BBCDE4D34AAAE0F3B7C9BB5D9254E /* PFCommandCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 08A5F9DDBE312E2B39D52155B7463DA8 /* PFCommandCache.m */; }; + 1234B7A56D643EEFC32AD7B3D707F3A8 /* PFGeoPoint.m in Sources */ = {isa = PBXBuildFile; fileRef = 7591F734161565C8587390742A1ED783 /* PFGeoPoint.m */; }; + 12808509E4ABFDF7030A7C6ABAA68616 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 91A3C081AA893B7C7E3C720BDD0B87AA /* FBSDKBridgeAPIProtocolWebV1.m */; }; + 12D70D555B750473FDFD4444E07114DF /* PFReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 99BD86550F9CEEAFE247409114E419D3 /* PFReachability.m */; }; + 1388690C4046C715B129CBE4F501C410 /* PFInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = ED29B572533174091A28FE94F7BBC738 /* PFInstallationController.h */; }; + 139836449D1FF9389BDF1A25AAE9550A /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 567F41DC5BE80C8E3FAD7E42124F6A1D /* FBSDKConstants.h */; }; + 13A1C4E2418AFCB69A8A061CDABEDF58 /* PFObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 96DEB41D236F2F957F542803B7242485 /* PFObject.m */; }; + 1466ADD5C1C9064B71781241B2AC887D /* PFRole.h in Headers */ = {isa = PBXBuildFile; fileRef = E47AEA771CADAF0F7E1A8716B513852F /* PFRole.h */; }; + 148878B5B97134968A610F4A0BD27E8B /* PFPushPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 33E340B3658DAFF8B960E00C876976B1 /* PFPushPrivate.h */; }; + 14ED5D2A2E45EDFAC58F338BB275BB27 /* PFMutableFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = 66C1B850FF8F72C651A98CCB78DB0E42 /* PFMutableFileState.h */; }; + 14F1171052248FD2C9252B38F4081977 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */; }; + 151E6C369136D436BB51A4DDF2DB9719 /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CAFF3BEDD8F0042F6050C5859DE2A0E /* FBSDKWebDialog.m */; }; + 15C5CEA7AE66D7CCBBC99C533A80856B /* PFEventuallyPin.h in Headers */ = {isa = PBXBuildFile; fileRef = EDF5AD225C15738985A7A4FFD5F486C9 /* PFEventuallyPin.h */; }; + 1627ABDB622C7AA22401EFBC45268DC0 /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = E2B84A286CDFEFD476C028DA645FE8B7 /* FBSDKDialogConfiguration.h */; }; + 165198337F3D88ED8D13950D042243F3 /* PFEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 92219F3882F82E7756711A802C7F34EA /* PFEncoder.h */; }; + 165411C8E35D734155064C1D5B7A7E95 /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 280B92F20BB7309511EA9EFC8DF7AB87 /* FBSDKAudioResourceLoader.h */; }; + 16568C7F23CDF1C2617CDA1A62325092 /* PFMutablePushState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CE057D872493F57174963C4F6B50DC4 /* PFMutablePushState.m */; }; + 16679D0607E9A53098AB211571CE9999 /* Parse_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 729D6D653BE34D23C8D053B85CDD5E97 /* Parse_Private.h */; }; + 16E18968E369451E339FFD342156CCA4 /* FBSDKShareLinkContent.m in Sources */ = {isa = PBXBuildFile; fileRef = A3F681072693C690033F636D1262450F /* FBSDKShareLinkContent.m */; }; + 16FAF341ED8A49E3144EEB1B5E3E10C0 /* PFAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F40CD0B016860B2BBC25B6EBBE9E284 /* PFAlertView.m */; }; + 17119C973C7223A310050A3C641406EC /* PFAnonymousAuthenticationProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 8858E00C3002371F0FAF9914734C5FD8 /* PFAnonymousAuthenticationProvider.m */; }; + 18137F7F403B447DCC10865DB6B08485 /* PFAnalyticsUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 0862B411E359C83CBD18E519CEF6D94C /* PFAnalyticsUtilities.h */; }; + 1848DA8D90C5B65BBAE55E0F5C277645 /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = 7442E5ADF75557556E523DE6A1E3BE3E /* FBSDKTimeSpentData.m */; }; + 1855A22A1DFC12DB655772510147D6E5 /* FBSDKAppGroupJoinDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4490BD8F1600D89FDE4126EAF678E35C /* FBSDKAppGroupJoinDialog.m */; }; + 189096427AF5BB709D1D1FFAEE25264E /* PFQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = DF9A789A3EB2E9881006021046DBA3A5 /* PFQueryState.m */; }; + 1A091BE8B5581EDAFE2E8C884AB2F9FB /* PFAnonymousAuthenticationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B2175B028A34E81F071193394F373B5 /* PFAnonymousAuthenticationProvider.h */; }; + 1A3A538509B4785B7B6623CA76004593 /* PFAnalyticsController.m in Sources */ = {isa = PBXBuildFile; fileRef = AADB13268569ACD428CA718A38894A49 /* PFAnalyticsController.m */; }; + 1A7028D0D1252E883696DA49D7F51E52 /* PFReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 282E7F3B29E9E0666DC2F0DD9E9BC196 /* PFReachability.h */; }; + 1A7B34868636A1A11E07B9685E7BE9B8 /* FBSDKAccessTokenCacheV4.h in Headers */ = {isa = PBXBuildFile; fileRef = F4EC35BFE04E1EB232697BD6C033CA73 /* FBSDKAccessTokenCacheV4.h */; }; + 1A87FA679C6F8FB9E1635F2D327D498F /* FBSDKLoginKit.h in Headers */ = {isa = PBXBuildFile; fileRef = A588ADAFB9768AED4B3BA282F6561A68 /* FBSDKLoginKit.h */; }; + 1B214B8DA84AF3D339A4A5173F84B7CE /* FBSDKAppInviteDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 23F24FEF2A5474160AA9AD33E508D81E /* FBSDKAppInviteDialog.m */; }; + 1B63A4BB0D67684AA1278326F09BF4E3 /* PFUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F19786B895155DF0DBA51BE5462CDCA /* PFUser.m */; }; + 1B7AD2E885D25E8F20DFA5F22348968D /* FBSDKLoginKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2EE36FA36A8C91403AF93CAE6EDA4A1B /* FBSDKLoginKit-dummy.m */; }; + 1B89B03D72EA7E5B78F08041D807F24E /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = B22590D9365E880F05CFC1DC1066B067 /* FBSDKAppLinkUtility.h */; }; + 1C30161F5CCDE877911BBF4E37C668AB /* PFPropertyInfo_Runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 64E64C3C1EBC666F4CF3A2893F8DB8F1 /* PFPropertyInfo_Runtime.h */; }; + 1C4CCD5145FFC73BBD93BD34AF80DC26 /* FBSDKShareButton.h in Headers */ = {isa = PBXBuildFile; fileRef = DFFDFF65FE7476F1D6C9313962B686E7 /* FBSDKShareButton.h */; }; + 1CFCB3D3ED8F0D7F95ED1F62F2989787 /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 157F73E38A3EEBACD7E9F322201C0A4A /* FBSDKBridgeAPIRequest.h */; }; + 1D2DBAC1F882B01E611F87B197AE52C7 /* PFSQLiteDatabaseResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 3652FCED3441641775C14E6FD5BC06D1 /* PFSQLiteDatabaseResult.h */; }; + 1E2206097284965CFD9DFE4426467D67 /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA9DC4FB2F1D4B30FF6F4D47961DEC2 /* BFExecutor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1E695458610F698BBCF35377CDF28FF3 /* PFPurchaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCC05D6904CB78C337D61B1211C5BC6F /* PFPurchaseController.m */; }; + 1E7CC04F13ABFE73058CD7DF69C9812B /* Parse.h in Headers */ = {isa = PBXBuildFile; fileRef = 997EE9B33EDCEA687B122C5D12D9A6E2 /* Parse.h */; }; + 1EA5DBD371A19F75A226BF25CA31469C /* PFPinningObjectStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 582D21818FB0E31756573C0CEAC6A8B4 /* PFPinningObjectStore.m */; }; + 1EE9A8EC40D092820419E7A7DAAB79F6 /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = B0F4434611B4FFD948A3FA3E177D8791 /* FBSDKAppEventsUtility.m */; }; + 1F1670F7DFA0E47562CD51956E793600 /* FBSDKBoltsMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D36D6965ABDC70928CD459FE8BC3B89 /* FBSDKBoltsMeasurementEventListener.h */; }; + 1FCDA4DAD6F25814BF8EB9DFB98A9798 /* PFCommandCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 92C9EF435D1A1B30A324A3863E2CB1CB /* PFCommandCache_Private.h */; }; + 1FDD51E9AB8FE7FC5D2629B19426C4A2 /* PFFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 77E53941D7D46C602DD11044D3718DE6 /* PFFileManager.h */; }; + 1FFBD1EEC0E90F3FE1279B2D4828F84E /* PFBaseState.h in Headers */ = {isa = PBXBuildFile; fileRef = EF274E7B9BD70039B6C19D59B6817F3C /* PFBaseState.h */; }; + 1FFD190681463306C97ABCD802238795 /* FBSDKLoginCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = E921A833B36DAA6D8087D3841D15FC40 /* FBSDKLoginCompletion.h */; }; + 200945BE8422160937BE875D2DC3A012 /* PFCommandURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 32E03031E4F6C80A832AC26957F2BD66 /* PFCommandURLRequestConstructor.m */; }; + 2039DF3542A81321E4BC68F087EFB01F /* PFMultiProcessFileLockController.h in Headers */ = {isa = PBXBuildFile; fileRef = E7B7004292F62F0BBD9D137660B5648B /* PFMultiProcessFileLockController.h */; }; + 204DDADC01B3E9C60F94B73B1DA02D78 /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = 10FB754E7CB98525F95328FAD2C2D788 /* FBSDKGraphRequestBody.h */; }; + 20A9F089A7FD34F0A52109F66A201BE8 /* PFPushUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 26127A113C8DE5D855C538CEEE818097 /* PFPushUtilities.h */; }; + 2140AB24A57365D2C212F506BCB07580 /* PFDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F9593DC6B40D6FF814A1A143B4F1192 /* PFDecoder.m */; }; + 2175F55C5F40FFAE2164E17849FF158D /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C038B21BF92B30435A80432688533E05 /* FBSDKGraphRequestPiggybackManager.h */; }; + 217CDE795AD5E36334974C7974839D93 /* PFFileStagingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 927A4EF5B8ED82ABCB709942CC242E06 /* PFFileStagingController.m */; }; + 21FDA2BBB4A2B144AE336A2017002A45 /* PFSQLiteDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 30AEFC89FB4F53E87A31D13E8D1108FC /* PFSQLiteDatabase.m */; }; + 225847BA0FD2D6E5B0C7FC331BA7CCD1 /* PFMultiProcessFileLockController.m in Sources */ = {isa = PBXBuildFile; fileRef = ACC07E15FC2CA7D185BFF1F84D565D3F /* PFMultiProcessFileLockController.m */; }; + 226B5499EFB78CE822793F57B7F5D338 /* PFDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 395A40E6ED210F9F655AE3ED00AB6CCE /* PFDateFormatter.m */; }; + 2296792F99964BC4DB7A70EA2AE3191C /* PFUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = 8350BE6813045E1E683091FF4C71539B /* PFUserState.m */; }; + 22E996525BF371CEA7503656391231B6 /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E2155DA6D3D13D23A2BE2F0CBAFE632 /* FBSDKAudioResourceLoader.m */; }; + 23589C8FDD1C654F9B5ABD21EBB44F14 /* FBSDKLikeDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F58C09538CC735A9D6E6B2036FA8A43 /* FBSDKLikeDialog.h */; }; + 23DDE6D9EB01F5BCF7FA3B95E0962D0D /* PFURLSessionCommandRunner_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = AC0B78FA41B62305BA8AB5B5C9C0EF51 /* PFURLSessionCommandRunner_Private.h */; }; + 240569949C2FF9453095CAD95D627B02 /* PFPaymentTransactionObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 41CAAD93B8E8E5A2F8F2F8297FFE95AC /* PFPaymentTransactionObserver.m */; }; + 2407AF3DC659F4D82509D57974CB2CEB /* FBSDKShareOpenGraphContent.h in Headers */ = {isa = PBXBuildFile; fileRef = A0E7F189FF9BF3307F3E7363608DBD81 /* FBSDKShareOpenGraphContent.h */; }; + 24191EF742D65921D5B8BCD975149375 /* PFRESTConfigCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A972AC76383DCF37E7008206794C8F /* PFRESTConfigCommand.m */; }; + 2446F1673C3F111AE5544C5D612F983D /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = A0AA88C65C641FBD65F890D8F0AB8026 /* FBSDKErrorConfiguration.m */; }; + 24CDB698465EC154FCDAB969C4DB41EF /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 35EAA5B4750A741B6F6FB63B5EF161F6 /* FBSDKBase64.m */; }; + 2504C2D803E69F8AD5242FE200CAC89C /* FBSDKSharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 1223A0C9FC36B8E26592679DCD48B8ED /* FBSDKSharing.h */; }; + 255F8174747BEE4E1DBA228D6B91F7DE /* PFACLPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F1FF6BF9EE55B7EAA6650EA4BA611F /* PFACLPrivate.h */; }; + 25700FC04D9595410BB668AC6D95B2C8 /* FBSDKShareDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = C7971F18FB6165E37A0B729145BD2CE0 /* FBSDKShareDialog.h */; }; + 25A70766920D6C0A260636FDE527A851 /* PFPaymentTransactionObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EE4677B561DC6EB86FA8571CEE64AF1 /* PFPaymentTransactionObserver.h */; }; + 267A2D6F3E72601A59294D6C8B35904C /* PFAnalyticsUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = FB20A82F1DA5086B118A419F8A505588 /* PFAnalyticsUtilities.m */; }; + 26862DDAADC74DA962C7D181E23CA54D /* PFRESTAnalyticsCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = E9A152C5D066C52D0A1CFF6EA97C0303 /* PFRESTAnalyticsCommand.m */; }; + 26F99FB90BCE2289002832D28389E430 /* PFURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 0462A31AED64616A9EA07AE370D6A31B /* PFURLSession.m */; }; + 2712D02D098539CDB3E3F8E60D5E07E7 /* PFRelation.m in Sources */ = {isa = PBXBuildFile; fileRef = 7809BA66D5768E97BE3CB53E36ECAC4D /* PFRelation.m */; }; + 279BC3A66039DA564403BDB1A3466D92 /* PFInternalUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 80376EBD200672DDD3336480C347B3E5 /* PFInternalUtils.h */; }; + 27D5286B2C57AD201EFD862B24BAFBD7 /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A750B8C4CABD71000E78BA2523A93FE /* FBSDKAppEventsStateManager.h */; }; + 2830B7C4D04072D1398E6B5573AEB518 /* FBSDKShareError.m in Sources */ = {isa = PBXBuildFile; fileRef = DFFD8020EDD3222D365D682FB9C69978 /* FBSDKShareError.m */; }; + 2898D3157017DB142DBF3E00E0BD102F /* PFInstallation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5251FD21A849AFCBA7D4CFF66A674774 /* PFInstallation.m */; }; + 28D77B1E40AF92C0A748B126296A1BC8 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 281C73120A87B602C8A007845677FA4B /* AudioToolbox.framework */; }; + 29166D4DAACA9E28F26B324BCDA69382 /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 871A5A6C8E91EC01AA7DE9ACD7C59412 /* FBSDKCloseIcon.m */; }; + 297DB3DE5178B2FA2A6A10EF99454A09 /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 13314419869A5B70A3A44B8807BA61CF /* FBSDKInternalUtility.m */; }; + 29995A9A0D5FFA5515CED4BEB70AF54A /* PFConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = F31EC4849CD16E6B48A237BDBB0954FA /* PFConstants.m */; }; + 29F51D242E42CD214C63CED9501DA333 /* FBSDKLoginCompletion+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A3A2CA15348284F196D703170DDC0118 /* FBSDKLoginCompletion+Internal.h */; }; + 29FBBB45CB7F81B05EABA6C9DCACCB25 /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 2701725284D1AF7F14D88A53E152A451 /* FBSDKBridgeAPIRequest.m */; }; + 2A2CD77D6E2E7F12B9F3D890A3C9BC0A /* PFURLSessionDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F85984F43D0AE4CBF449F432430888C /* PFURLSessionDataTaskDelegate.m */; }; + 2A45C81A059350612A5BED9F330A14AA /* FBSDKBridgeAPICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 058D4B861CA7EDC7CCC4C7CA51C1EEB8 /* FBSDKBridgeAPICrypto.m */; }; + 2ABACE5B5D7D1688A1D1F8BE1224F574 /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB946FBB5587B0F326E668F21F73F3B /* FBSDKServerConfiguration.h */; }; + 2B2B4D270B2E4878DE1E753C46D2A366 /* ParseModule.m in Sources */ = {isa = PBXBuildFile; fileRef = BAEDA41B80675DA1345DAF6D8F0D4632 /* ParseModule.m */; }; + 2BA6D9AB7D2AAD271967A17F3F924663 /* PFRESTQueryCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = E557E21B22E0695434EA0A8BF54D2A5D /* PFRESTQueryCommand.h */; }; + 2CA9451A1DF7FD5448467C2E46D8B709 /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E1B52EE3E2E3E51117F76E0A815856 /* FBSDKIcon.h */; }; + 2CD4B86CFAF9CB721F853A29189581FF /* PFACL.m in Sources */ = {isa = PBXBuildFile; fileRef = 3065F7EE96D178C185A3FDEA83907DD7 /* PFACL.m */; }; + 2CDE62281BF30CDC37D9B4C4AD493EC7 /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2315D6063FC476611A25D1D15DDAD009 /* BFAppLink_Internal.h */; }; + 2E1BA71176C94E1755B7182A3B0DC8BC /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = C68D370A7D08931EEB8E723D7B8F35E9 /* FBSDKGraphRequestBody.m */; }; + 2E7C5E79D1A09338147DF84B8A9EA400 /* PFObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 35F6EDACB4373C69CDD53204DEFA7B7F /* PFObjectPrivate.h */; }; + 2E810A5D78C5F0A509A666DF78DCB27D /* PFDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = EC5B7EA9E38C9FBEE69F5B9C0BC4A0E0 /* PFDevice.m */; }; + 2EDEF8FFB620FBD7083DDDE379A09698 /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 405EFED49FCFF2D26196C7FDF11D924D /* FBSDKServerConfigurationManager.m */; }; + 2F11E320BB3B775D097764E76EAAFFEF /* FBSDKAccessTokenCacheV3_17.m in Sources */ = {isa = PBXBuildFile; fileRef = 70AE4640E658912F8EA7EB2D84532E59 /* FBSDKAccessTokenCacheV3_17.m */; }; + 2F1D9D6FAE731109B9B920E1C136B4F5 /* PFRESTPushCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 191B469630ED03845A82C1836CBDDF7A /* PFRESTPushCommand.h */; }; + 2F30FD14654236C2AB6410924BAD50F3 /* PFURLSessionCommandRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = 7919FE3E34E4A4E8FA40E5EF771D417F /* PFURLSessionCommandRunner.h */; }; + 2F7CEA1D8FB71E86849259929F76AAB1 /* PFRESTObjectCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 88A728EC723990EFB69B861995E74ECC /* PFRESTObjectCommand.h */; }; + 30FD4EF0B6E65062C47B435ABC219900 /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E36424AEF035DA22DC2D4053D625671 /* FBSDKMath.m */; }; + 3123E5228CAF40E9B6D9E6BC745611D8 /* PFRESTConfigCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B5440ED9524EB35C55FB414229EDA986 /* PFRESTConfigCommand.h */; }; + 3216502FBE7540ECD129D15528EC0A1B /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E92731E3FF7A77ABF62EC441D94D3BF /* FBSDKMath.h */; }; + 33BE00722C951BA132EE6CED6B5E97CA /* FBSDKShareButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D5060E67D251FD6C07A6C8127F60BC3 /* FBSDKShareButton.m */; }; + 33C2196F168DB4DADADB70A0F821A923 /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = F7A8AFB90B055F7CA759BA8AC799303F /* FBSDKGraphRequestDataAttachment.h */; }; + 343D8C1473045CEACF4BD1DA5FEEAB84 /* PFInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 61F77E151A38F4FE7CA5F80B9415A1AA /* PFInstallationController.m */; }; + 347444A5012AA92268504F167C1A9BE8 /* PFUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 766CE3F27E11129F0EFA11C60884ECFC /* PFUser.h */; }; + 35118B7E36A74239A4477C8E27A33FEE /* BFAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB9A90D939500BE1CEC8324CA790C85 /* BFAppLinkReturnToRefererController.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 35582974E5D8C37C5E69CB967330B7F6 /* PFACL.h in Headers */ = {isa = PBXBuildFile; fileRef = EA1EA428E9AD65BC84701D2503ACC121 /* PFACL.h */; }; + 358E6D3F04CDD76CE5217B415314B0D4 /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 14615E83480751392A8DA9C806B52B9A /* FBSDKAccessTokenCaching.h */; }; + 359A4B46CD1A246979E24F1A1D45449D /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 028707090FDF1694249FBC4759635D31 /* FBSDKColor.m */; }; + 359E55D720B39F54548BBE07AA3BBB48 /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = CE802EE1D42445FFBD68FDC5F1B53019 /* FBSDKWebDialogView.h */; }; + 35D4C9D681C02CE17416BCC6C82CC37B /* FBSDKAccessTokenCacheV3_21.m in Sources */ = {isa = PBXBuildFile; fileRef = 610C8660482AAF6DF1ED051F56BA7AAE /* FBSDKAccessTokenCacheV3_21.m */; }; + 36A1B6147DA2DD394552DDB51C37DFAA /* PFAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 71B258E245FD3703F42B32A176062FDB /* PFAssert.h */; }; + 3706025C91B4BB38EAF348E815FD0EAF /* PFPushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = EC749D5306636F8078256E3AD6AEF7C7 /* PFPushManager.m */; }; + 382CAEAD6DA2082FEEF4801B7D083210 /* PFProductsRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F782BE969B5510EDD8EC6903FD236BE /* PFProductsRequestHandler.m */; }; + 3830CBF1147D74E5E5E625F57E7F9D44 /* FBSDKLoginUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 99849B37667DE2EF2F45DD8C3C4E1188 /* FBSDKLoginUtility.m */; }; + 389B345C717A5E21578570628297DE0C /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 13F8602E2C5A9AB96363E1F7B1EFEED6 /* FBSDKUIUtility.h */; }; + 38C6A63050CD48EB4AFD4BB80A9E748E /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = C6E3A3B7C704403CB94D4FEFBBEEF1B0 /* FBSDKAccessToken.h */; }; + 391C0FB05028B2080F37A8AF4931A664 /* PFMutableQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C5C69B84F7FCD1066173E02E04716CE /* PFMutableQueryState.h */; }; + 3968209E908099601F60991D5DE829F0 /* Parse-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1660A7818BE658914CAD0B03854799AF /* Parse-dummy.m */; }; + 398449323354D2CFD6F71B61806B0B13 /* FBSDKSharePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 31A3C807180B3E37B45206DDBBC18002 /* FBSDKSharePhoto.m */; }; + 3A53D0DFE7A5184D13FF5E9FEEB545DE /* FBSDKLikeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D70B316B602A15A89952D1C307A9D90 /* FBSDKLikeButton.h */; }; + 3A6A18C3954C1B80604F12E048173F89 /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 95D6DC3AAED48153E982E7B6CE2ACBF2 /* FBSDKUtility.m */; }; + 3A7F1B841F623E917E9A93108963F45F /* FBSDKShareDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 82DD9C04E2048B93470902C1B226313D /* FBSDKShareDefines.h */; }; + 3B1B1F2120C6124502241F7475BF4A34 /* PFDefaultACLController.h in Headers */ = {isa = PBXBuildFile; fileRef = 84FAF19E9FE280B8C4A65B70B825CD58 /* PFDefaultACLController.h */; }; + 3C2B301A7BCE209D2D1C8E06F9EC8D37 /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = B98993B6CB83A0F4F6836BA48CB8855E /* BFAppLinkTarget.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3CDA0EFB1390A868EEB6A3DB196F882C /* FBSDKShareOpenGraphValueContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 31B2F765DDFA36C75E4D5C6A387B8EF2 /* FBSDKShareOpenGraphValueContainer.h */; }; + 3D7B8490714964BABCD5A24305DB8F11 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = ED7E4C6BDA278A2EACB4205CFC9A3840 /* BFExecutor.h */; }; + 3DE049023FC2163B1D8617B4956CDB32 /* PFUserAuthenticationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F15A1AA5F5C733E8B06847912B9D6C2 /* PFUserAuthenticationController.m */; }; + 3E132B5FEEBF0FAC1F709354042C6181 /* PFConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = CE5A89927105D9819003581D0C8DD06F /* PFConfigController.h */; }; + 3E2734C06AF6883C3CAE5DD479C2D493 /* FBSDKCheckmarkIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = ABD0C19409CB1F24FD1AFB365E60C99F /* FBSDKCheckmarkIcon.m */; }; + 3F7CB366D8B55004DB4320681DABC0D7 /* PFSQLiteDatabaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = F060686A92FC706C2AC04A14E7348F4D /* PFSQLiteDatabaseController.m */; }; + 3F8B0AD29B9B4773DE22580FEAF3E52D /* PFOfflineQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2590AA5D13156556306B9B8ED6AD2D74 /* PFOfflineQueryController.h */; }; + 3FA6DA7F2D09FE5A2E518AA9288302EC /* PFObjectBatchController.m in Sources */ = {isa = PBXBuildFile; fileRef = CCEC1C29226031242E5C3329E7913386 /* PFObjectBatchController.m */; }; + 3FC326BA0AD90AB0A54AA0C84106CA4C /* PFQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = AA6155E47D6756DC20B676A1E6799081 /* PFQuery.h */; }; + 413A19D796947A6E9E28E6026D41E2CD /* FBSDKMessageDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BCF6D36AAFB2D3DDD6EC1074B3664A8 /* FBSDKMessageDialog.m */; }; + 41ADBDD587FCD69FA0E67FA5D01D1D24 /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 62433B094D7197450919571030C74B07 /* FBSDKCloseIcon.h */; }; + 43B53D52EF9B54815FB801838A053E1A /* PFUserPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F20CDC41B5A71F131F228EA1F49FAE29 /* PFUserPrivate.h */; }; + 4429798D21F62121D2D8BD3009BC590D /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1164BD18616ED3B6D9FECCCA99F68888 /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; + 442B88BF438088AE02DEEE713216D7FE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */; }; + 455E7B4B376DA91E5E9FED7A9C668D3F /* FBSDKURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DFAA71E4A500F993C066198D2F6B141 /* FBSDKURLConnection.h */; }; + 4574F0728D51C1DB6F88E0238ECCD638 /* PFAlertView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F4BCC79A27562D8BCE24A7A8DDEB17E /* PFAlertView.h */; }; + 459FB122AFB2F2790C0397A0A1100517 /* PFKeyValueCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D91A3470D21870EAF9AE6AF9B98A8CAA /* PFKeyValueCache.h */; }; + 45BE13346C1088632046978C8150B515 /* FBSDKLoginManagerLoginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = F10C958A391650BD6ABEE08D4D0EF8D8 /* FBSDKLoginManagerLoginResult.h */; }; + 45C370F777F372C29E152959C44D825E /* PFConfig_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D6D13D12D3B1AC6E70E2C85B780DA659 /* PFConfig_Private.h */; }; + 462CCA389937F980A7A1FFE8C27193A2 /* PFOperationSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 75D753CB65D28E2B39894FBCB517D0A3 /* PFOperationSet.m */; }; + 46EB4B43C3D20732F946864A047F91F6 /* BFAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 32F98A56A6F6C88E819D8937E418E312 /* BFAppLinkNavigation.h */; }; + 491495DF4B5CFE183633BB819E705184 /* PFRESTCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 70137F33147D3F372FC44F6E67E63899 /* PFRESTCommand.h */; }; + 495E25F21F1F487E62F73D709FCF5477 /* FBSDKShareConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 10135E293A34F093B13620EB7118F0EC /* FBSDKShareConstants.m */; }; + 49B0E1ADABDDA3C73B2C2A457223BC2C /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = BD030BCD3379D3A583CB4E1BF4757DAE /* FBSDKUtility.h */; }; + 49B25AC78150B8692A15271678A5E544 /* PFQueryState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 880EC96BB6771023E9A8E3DF31FD9310 /* PFQueryState_Private.h */; }; + 4A359027CE24E02E2258B07BCFA195E0 /* PFCoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C839088F1464046F38572AEA46F43237 /* PFCoreManager.m */; }; + 4A50F2B0E4CB78265EAC673D309DB615 /* FBSDKLikeActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = A1D336D237B3B30BCE04A43FD371473E /* FBSDKLikeActionController.m */; }; + 4AB15B4CCF41C8A354FBC5E810F6F9DE /* PFPropertyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = E82368CA082B92ADBB3B0DA8C9D29791 /* PFPropertyInfo.h */; }; + 4AEEEAA20163C1AD6C08AEB1BB090269 /* FBSDKLoginManagerLoginResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B38B03E5392BB79AE3F31D3346D7A1F /* FBSDKLoginManagerLoginResult+Internal.h */; }; + 4B04059FB01CB2A896E9DC7BCD426A07 /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 60D3605114807AAF6515D9AEE323E75B /* FBSDKGraphRequest.m */; }; + 4B2A23038CB7A3FEA1B0818BCC5681B2 /* PFMutableRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 059EBF24A2AB19E48A0FE457DA504A78 /* PFMutableRelationState.h */; }; + 4BBE91F980C399FB90C6D8336639D55F /* FBSDKSharePhotoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E4D2B2CBD42ED6EEDC6C535E15CDB74 /* FBSDKSharePhotoContent.m */; }; + 4BE274866F02B07D87B61B50A405E766 /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = B0708AC2D79933D1B00549B5767FE60C /* FBSDKMaleSilhouetteIcon.m */; }; + 4C0A7707981C891E0EAB882E66D9D7DB /* PFUserAuthenticationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8248A75015CEDF0E471BD2919921A0FA /* PFUserAuthenticationDelegate.h */; }; + 4C192107186E7E1C8AE7BEB83BA0E24A /* PFCurrentInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D30480B8CCEEB19D1DDA7BA271A3BD7 /* PFCurrentInstallationController.h */; }; + 4C1A4B84FC9C07E0C03CF560175A8765 /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = B24C9F82AA8C193E9B823CF102B19AB2 /* FBSDKAccessToken.m */; }; + 4C3F4B69F870FEF1F364EE745DB32219 /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BFBAFABD8F6AE7D797021761B45B56BF /* BFMeasurementEvent_Internal.h */; }; + 4DB17B4ECC016AB59E509AC962A6B8D3 /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 152E9CDD4624FDDC8186CF180C5EFED9 /* FBSDKGraphRequest.h */; }; + 4DFA2BD02F94F030FC91411B297A09F3 /* FBSDKShareKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 99AD28F109954C4513A2B73C3775C971 /* FBSDKShareKit-dummy.m */; }; + 4E07076710363106C424577587997DC3 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61EC245B07BF5B2B8DAB7F7D13FF56EB /* Security.framework */; }; + 4E1E288E9B60710885CB7D0D34371D28 /* PFDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = CD7F12FF98C15CB2FB25F62797543E56 /* PFDataProvider.h */; }; + 4E6C905511C88BA4E3B5B12D8BF1D049 /* PFRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = B524B63009EE535EBA7977E07F2F824F /* PFRelationState.m */; }; + 4FDA2085E5E26B257AB67C19AE7FA00F /* PFEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6424FD719BE7F330C61F5BF5C1214B13 /* PFEncoder.m */; }; + 5254D905261CECDD104D077E9EC0FAF4 /* PFUserFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = EB012283833C25F7392F7395A1DD2D26 /* PFUserFileCodingLogic.h */; }; + 52B04DF7AA6B9EFCAEF5EFE94BD54941 /* PFCloudCodeController.m in Sources */ = {isa = PBXBuildFile; fileRef = 62F86AE15FCDD3BDB2B1432E3A970BAE /* PFCloudCodeController.m */; }; + 52CEE12D512539188DC4951C8466D238 /* PFURLSessionJSONDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 183EE46003EBA5A7639B3EC6AC265522 /* PFURLSessionJSONDataTaskDelegate.m */; }; + 5363AC9672DB64C9118CB994E4A7BC2D /* PFProductsRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 6771448442ACE74CF1DA8462E84FE3C1 /* PFProductsRequestHandler.h */; }; + 537F504A45AB0B342AB6A227E76F8857 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = 7865EEF23330A2B2953AF4D3772DDB3F /* FBSDKBridgeAPIProtocolWebV2.h */; }; + 53B43D61079878D9F3D459CDEEEE0C39 /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = F1386E668F6D9A1E7CF872A02649E498 /* BFTaskCompletionSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5470F6CE6D56D2390A1A04B25B7709FE /* PFMutableRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = 38A085262915DEFB26BD203072DD601B /* PFMutableRelationState.m */; }; + 54D0B032B4FC86688CE6A288A3D2819A /* FBSDKShareAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 819F604AC9E7F0671221BC885460C546 /* FBSDKShareAPI.m */; }; + 54F586403DA2EFA3BAA583BD615F96C4 /* PFFile_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D131706344B44D723C0EDC00AD04D9B9 /* PFFile_Private.h */; }; + 55549127D15D4850D669B0176FD188AE /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED97321AD7E6EF7BB46B7C26AFD43451 /* QuartzCore.framework */; }; + 557732BF5412A367CA63E4CC0C8E1231 /* FBSDKAccessTokenCacheV3.m in Sources */ = {isa = PBXBuildFile; fileRef = 36275B6CAF874F0A77AECB1185D90A1F /* FBSDKAccessTokenCacheV3.m */; }; + 559B49348B7EB3F4BF4BB0984CF73CC7 /* FBSDKShareOpenGraphAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 88EFF331F662FFFA9E548EA3F9CF8BD9 /* FBSDKShareOpenGraphAction.h */; }; + 55D902D3ACA8F967C1F72B51756E26F7 /* FBSDKBoltsMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 19BCCC920CFF89CFA88D6CDFD23D5044 /* FBSDKBoltsMeasurementEventListener.m */; }; + 5676B33310A2A718632F8EB4599082F3 /* PFOfflineObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CFCFDB608A66C522ECD909465A4CDFD /* PFOfflineObjectController.h */; }; + 56C1BCFCD84D90290B05C0A3874FA0A7 /* PFRESTSessionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 909527AB697DC5F602A8BEE088B28420 /* PFRESTSessionCommand.h */; }; + 57057BB02C2E71110491AE84B3F7B091 /* PFCurrentConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AEC1733825D5A2ABD8D47EE37DC9FEC /* PFCurrentConfigController.m */; }; + 576D18D63A70D92387FB45A0464F20CB /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = EDD5CE9B3424920B0391E833E095927E /* BFAppLinkReturnToRefererView_Internal.h */; }; + 578E66E718A1020A82FFEEC24E7D65BE /* FBSDKSharePhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = B1AF0EAA010A2243D3B652627909B1E0 /* FBSDKSharePhoto.h */; }; + 57D012204E6B29DD1581D7C1EEF0B976 /* FBSDKShareLinkContent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C50076788F9D1661F6F38C60F88F2E1 /* FBSDKShareLinkContent+Internal.h */; }; + 57EC6FF906A92AEA56DD92EA8C662CCB /* PFObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = B23B2A450DD924145ECEEBCAF9F9DE49 /* PFObjectController.m */; }; + 581F100F4AA60AB4541967C135D9DBD6 /* PFPushState.h in Headers */ = {isa = PBXBuildFile; fileRef = DDC74E76E8D8BB53B2921A4D81230691 /* PFPushState.h */; }; + 5838BA1EB3A53944C6789E9DB9D23428 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */; }; + 58ED4561BD7135E9B4531E236A8CAE11 /* PFFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7768B39DF4B1F1A7BFD05D306CAB1BDD /* PFFileManager.m */; }; + 58F1B6573F9C8D331A70BD1B3FD3F894 /* PFHTTPURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = D81D0AFDE6434123DE6ED1DC6F6BB145 /* PFHTTPURLRequestConstructor.h */; }; + 59FEF86CD32941CBFFA63D5F4693AE3A /* PFObjectFileCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D1061A294A0D25A3BFAB4FF7B35C1A9C /* PFObjectFileCoder.m */; }; + 5B05A51BDC32718348A42347B24047AC /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CD6F1D91AE76D53924F066A9E871A4E9 /* FBSDKCoreKit+Internal.h */; }; + 5B36F8CEF9561B1BBC50AE696901B039 /* PFSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BDEBE5111524FC2428EBDDD195197C8 /* PFSession.h */; }; + 5B72C7E51B86A4689017B9B075AD180B /* PFUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 465813B1FEEE434D921E2CE4F2EE3F87 /* PFUserController.m */; }; + 5C41141CD7D1FAC5C9B739AC0E3FE876 /* PFObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = DDB5F6DBCF6A420FE4A916EF00D431E9 /* PFObjectUtilities.h */; }; + 5CAC17E117B95FACAC405917DB40049E /* PFMutableObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = F814D3C39AD10478EC573697C25159A8 /* PFMutableObjectState.m */; }; + 5CAD289DD87697AD723F4E09479CB0D3 /* FBSDKShareConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AF0D88FB66A75671BB0F620D0569032 /* FBSDKShareConstants.h */; }; + 5D13A3534EAC4E005CA23818980CBE9E /* BFAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = 90C4E8263D7D7018E90CB006AE5285EA /* BFAppLinkReturnToRefererView.h */; }; + 5D2753286AEEB426BF28716E486B50E1 /* PFWeakValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EFB00044A9A987E6150AACA4DD28233 /* PFWeakValue.h */; }; + 5DFAE3F0BCBCA31DF32FEF4DF7083137 /* PFUserAuthenticationController.h in Headers */ = {isa = PBXBuildFile; fileRef = D3B177B3970048B89F03D66264703FDA /* PFUserAuthenticationController.h */; }; + 5E2F5A4FC20F2B6F8EBA66D864FBE351 /* PFQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 33749F5083DAFA1A1E3A782C771A1569 /* PFQuery.m */; }; + 5E4C8F31597A078F0C354AB8710A0E08 /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 2198309D71CC7402D65F16A43667E437 /* BFAppLink.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5EBE74F7A1A99B390EA1D0880AF631D4 /* FBSDKLikeActionControllerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 12585EA0DD81C8296E71552C34E29D15 /* FBSDKLikeActionControllerCache.h */; }; + 5ECA82DED51AAEC5914651A1DC5F4AA8 /* FBSDKAppGroupContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 139C145BDD122109F513A0E27ABD2054 /* FBSDKAppGroupContent.h */; }; + 5F41CFDB8779912A50ABD6A631A2B4B1 /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = 05F2D63CC787EE0E5D2D0F0A73BAF4FB /* FBSDKAppEventsState.h */; }; + 5FE50967209C8A609F2755E712C18CFD /* PFRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 89BE488D5FB2949B04C3B2078CB54ACE /* PFRelationState.h */; }; + 603CD1A9757748FFDF36F25F1442BFEE /* FBSDKCheckmarkIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = ECDD4925923774BEB4574763291AC558 /* FBSDKCheckmarkIcon.h */; }; + 6106389848B734829466DFE8F59D4902 /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 117EE18D9FE3C52EFB3FC22C9026769B /* BFCancellationTokenRegistration.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 62460A52E60F539997171BABD1A6408C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */; }; + 62508475BB6D02884B6F40E981B30FB0 /* PFObjectController_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 284898C95718E6C68579D4FE3FE4B5BA /* PFObjectController_Private.h */; }; + 627E13AAD8DEE6700D48E5D62A19E006 /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = D35218557707E188346D1B5F07861524 /* BFTask.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 62D2342808F35C1D75528BB879DCD079 /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC26A40586455BB8DD6BA95710C3486D /* FBSDKApplicationDelegate+Internal.h */; }; + 63368804039E7C1DD02EE36D4132FECB /* PFURLSessionJSONDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = A9EC065D9C7FD03E63A29BCF6F3A428C /* PFURLSessionJSONDataTaskDelegate.h */; }; + 63591C49938B5E342974E37126F214D7 /* PFObjectFilePersistenceController.m in Sources */ = {isa = PBXBuildFile; fileRef = BE5646EAD6FEC69BB2B3C73D922BED8E /* PFObjectFilePersistenceController.m */; }; + 63A4E5F2E629AEBF6CF597AF608DD3DD /* FBSDKLoginCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = 86858E70734ECDA22030AA8DC8467710 /* FBSDKLoginCompletion.m */; }; + 63D7567007CCC845EDDFCE115D1923B3 /* PFUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = 59024F193667AEB7E18165A249D687E7 /* PFUserState.h */; }; + 6431A5828DAF7B2CFC0A1757F76E5C48 /* PFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E60E681E3152FF31E45D14307138A1F0 /* PFObject.h */; }; + 654A88020DDA963F33B82DC810141C97 /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F213A888C3CDCF3160CB878D06CDFD7B /* FBSDKProfile+Internal.h */; }; + 65B09E455DF352D9F9870A3D64BF6EDD /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = B7F77AE462F767DFBBE7AE020EC34F77 /* FBSDKErrorRecoveryConfiguration.h */; }; + 664A8B6A7BF211DA84A48A07F78A73C0 /* PFInstallationIdentifierStore_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 01653FEFDB182B8F87FD9FA72A320331 /* PFInstallationIdentifierStore_Private.h */; }; + 6695A079915118627BA77F70911E243C /* PFDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B5990F0ACF5AC91C7955E37265F1135 /* PFDevice.h */; }; + 6695FCAF935A626AB8BD9FA286B781A9 /* PFAnalytics.m in Sources */ = {isa = PBXBuildFile; fileRef = 836A8F74A8C94C26BFF6CE7C96CDBB29 /* PFAnalytics.m */; }; + 670C180263184D1D8F68896C964AEE22 /* PFThreadsafety.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B5B7577FF23FD60A87A8C05EA2652E3 /* PFThreadsafety.m */; }; + 684F06D3A55F610E508358633DEAF98F /* PFSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D2B6CA8A26E1A54057C96806C92CBB2 /* PFSession.m */; }; + 694761A5588259C7DF1DA6DA014F5CBE /* FBSDKLoginTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2144DB6EA4F8D23EDA85ED9E54139327 /* FBSDKLoginTooltipView.h */; }; + 696C35B2099E61F0EEA8AA1B1F998C1C /* PFFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 28039FB8496FC037CD115B9256200393 /* PFFile.h */; }; + 69BF53C7FCB3B725A3810153DFC4EA79 /* BFCancellationTokenRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 58081944456413D3F0B0A33BCF9415F7 /* BFCancellationTokenRegistration.h */; }; + 69E21A2908DA39DCE37C40108E4785F0 /* PFRESTFileCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EDAD3C1FD06B798BC04244B0271C9ED /* PFRESTFileCommand.m */; }; + 6AAEAA9C1568F984F7340E7E66CC9EF9 /* PFQueryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 23A2C3297FA5C533D7041CCE18A98771 /* PFQueryUtilities.h */; }; + 6AC7277FB240777B01E8635E9A416979 /* FBSDKShareError.h in Headers */ = {isa = PBXBuildFile; fileRef = 73A2CAB8C0CB0FB451E60B3C35C23B4C /* FBSDKShareError.h */; }; + 6AF8B6F00562BF454E2CD5A10EC0B489 /* PFCommandRunning.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A9CE0394A88D885474139DCEB0E2D2D /* PFCommandRunning.m */; }; + 6B0AA4AFE73F485E0C620DF214D82351 /* PFFileController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4812BF72649E3FB3CABBD5BEE63A124A /* PFFileController.m */; }; + 6B1BF7C8DA973C86CF960C233B5B1B21 /* PFObjectSubclassInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F9F7B355F7CD6C75C1B6D99445E1702 /* PFObjectSubclassInfo.m */; }; + 6B4E4936DD042805436D14527E7B083D /* PFNullability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C9C1D9FAA0AB4875FD3710EBA7C5926 /* PFNullability.h */; }; + 6B7131E140E2CDB8DE40B439FA26D657 /* PFCoreDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = EE30E5F951BC779939012BAD6E3C5693 /* PFCoreDataProvider.h */; }; + 6B79C2AC728C350EDD9926A18D2E650F /* PFOfflineStore.m in Sources */ = {isa = PBXBuildFile; fileRef = BA3BE979C7C897206FAB369D2B6BE3BB /* PFOfflineStore.m */; }; + 6B7F38B71431FCAE3FF85C68745E73F5 /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 19ACD332B62F67CAEE524FC72B49A909 /* FBSDKErrorRecoveryConfiguration.m */; }; + 6C46FDF8859806CA78AD521B2365C5A0 /* FBSDKAppInviteContent.m in Sources */ = {isa = PBXBuildFile; fileRef = E9AE56E8A69F187F40367169FB36AEC6 /* FBSDKAppInviteContent.m */; }; + 6C4BDD9625C03F8ED09938E299167C1D /* PFRole.m in Sources */ = {isa = PBXBuildFile; fileRef = 7127C42346F2C6E7C6852278A7D91999 /* PFRole.m */; }; + 6CBF07685287382B192F73AF43D9072D /* Bolts-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CC6FCED7A91E155259651DBC0B5262D /* Bolts-dummy.m */; }; + 6CDB057F1E455322CF133BEBDBD26FC9 /* PFHTTPRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 57991A4FD66FFD7B27890292A9F881D8 /* PFHTTPRequest.h */; }; + 6D8069186AA68903B3B1E3A9FE645FC7 /* PFConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 831FFA276E384FF81912831665D2ACD1 /* PFConstants.h */; }; + 6D9129F858C5DA6A5809DACF615D023F /* PFAsyncTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = C6FDA527EF165EC2D2CA5E44A20F1D00 /* PFAsyncTaskQueue.m */; }; + 6EC3D0CE07BC83907B8AB131C6FEA9A1 /* PFHTTPURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 55EDB925355F44E5F4CD0589A4D15596 /* PFHTTPURLRequestConstructor.m */; }; + 6F1007ED622C28520AD82DE65F64804B /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 8918E95EAEEA3883B0958070A6D63E5B /* FBSDKPaymentObserver.m */; }; + 6FA12986ECFD54D5A141EC98D1C3E2A9 /* PFUserConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 89771FED47F0BB242E7B85A73CCEEE3A /* PFUserConstants.m */; }; + 6FBA55245D921C73581CD3B4058073CB /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = B739AEBEEECA5F2836D6FDE87E7DAD2C /* FBSDKAppLinkResolver.m */; }; + 6FD0C9E25E96D683FF939A03F5ADBB6B /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = B152B331790608828B3D3221EF8BB3FA /* BFAppLinkReturnToRefererController.h */; }; + 705709FDEDB3A24F1833B641E9D87460 /* PFPushController.m in Sources */ = {isa = PBXBuildFile; fileRef = E40D5277A9FEE4394113FE40E8457989 /* PFPushController.m */; }; + 711828A478DCB7D32EFC732598558216 /* PFInternalUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 92F1167BDB41D6566E2A2BD962A7D42F /* PFInternalUtils.m */; }; + 71AE845ED581E71888B1FDDD5D697A2D /* PFErrorUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = D76C0DEC86D6F664834D44A8082E5A6D /* PFErrorUtilities.m */; }; + 7247C89530C6427A67956C925B68F4D8 /* PFAnalytics_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 298BE9F2710D86C3196C6850E44C968A /* PFAnalytics_Private.h */; }; + 730F6107E3FB55439CBF055292FD1211 /* PFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 862C4A36A947B7610B400462C749359A /* PFNetworkActivityIndicatorManager.m */; }; + 733822208BEBE0C468B43F2DD6DD56FA /* FBSDKLiking.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AFCCD081D365FBB6E1CF56D2CB3AF34 /* FBSDKLiking.h */; }; + 738653101EF3E4FD4A8E2B42B20E1913 /* FBSDKShareOpenGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 1630835145A45B1AE1B5731F89DE41E1 /* FBSDKShareOpenGraphObject.m */; }; + 738BE7380719F5A074B833B92FB64E83 /* FBSDKLoginTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = A59F5C8E499F158AF013FD0A4D779E33 /* FBSDKLoginTooltipView.m */; }; + 74E62FDCD9AC705781E45A9B7B851B2E /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B08BB513ADF56CF82CFFF7B821CEAB4 /* FBSDKColor.h */; }; + 754D8A2093AC1500714A7A3C741F0DD2 /* FBSDKSendButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B56BC63A46E0C60E1F65E1E43FF3D2B /* FBSDKSendButton.h */; }; + 7588F6295488C1FF35A36B4D597B0291 /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 74F31D0EDF2CF7E7AAD77F746837D59A /* FBSDKBridgeAPIProtocolWebV1.h */; }; + 75F6BB7AACADCF0FDF54458E1FDBF6C4 /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = E7679EFCB871C367D45B87FF04498A5E /* FBSDKAppLinkUtility.m */; }; + 75FC76263B96684BE311B778C695D7A8 /* PFMutableQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = 6959DDF11EB0DBA886C8071FA6536544 /* PFMutableQueryState.m */; }; + 769DB7E377D5E818B5EB613CC5E902C9 /* PFMutableUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = 7312C6904E7BD6A83FF99B8A93855A01 /* PFMutableUserState.h */; }; + 76B02A59FD2C1AECC0387DB93BCC94EF /* PFGeoPointPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = E91945A365E97AE157FD90FB6032742D /* PFGeoPointPrivate.h */; }; + 76BE06A3ACC6F8D20AECC3C947176E57 /* PFSQLiteDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 442BC9945073FD644D98DC6A0BDCD0D1 /* PFSQLiteDatabase.h */; }; + 77229C67477828C6DBC3AD1BF1962BEB /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 985038F14FE8FC23678ED1F7DDCF796A /* FBSDKTestUsersManager.m */; }; + 7763AB0E9ED90508B19469D1BE4E1E5D /* PFURLConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = DACF075638B9FC0CD730644C26FB71E5 /* PFURLConstructor.m */; }; + 7853E04B2781F9D5247FE36F97DB369F /* PFRESTUserCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 11EFC989CAB132B6D48E25A50D67FBC9 /* PFRESTUserCommand.m */; }; + 785EF8A13CF87CF8086D4653B1CE826E /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 722DD6778B0569325E2893B96510468D /* FBSDKCrypto.m */; }; + 786E305F1780B943C505B7034C654FC0 /* PFURLSessionUploadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 98FE22DC82B2E9780B8345DD11E25245 /* PFURLSessionUploadTaskDelegate.h */; }; + 78F3C290F4ABB6382D55AC7EDDB85873 /* PFCommandURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A2EC2506D904AB39ACE6AC2490368BC6 /* PFCommandURLRequestConstructor.h */; }; + 79366269D4BA5E9EC208D0AFC2C43E99 /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = B674C021D7D553529D1868DE6724ACF5 /* FBSDKErrorRecoveryAttempter.m */; }; + 79A776D0DC41D257DA6823D978C535E0 /* PFObjectEstimatedData.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E0284BB2426357ED603C689888DD262 /* PFObjectEstimatedData.m */; }; + 7AE9B5B1B9C84FD8D5B6D314F73888A8 /* BoltsVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AE219E0D5DA9BEAD01E3B7B78A5B608 /* BoltsVersion.h */; }; + 7B518BDCB9857C22C76D89C15E4571D8 /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 73DFE94251B23509786E450651A48B90 /* FBSDKTypeUtility.h */; }; + 7BA68DEE96B757C492E6BD77B94620B7 /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BD744AF804A9F5355C68DFD41621893 /* FBSDKProfile.m */; }; + 7C702D387E65E1ECA41D75A1AB059FAB /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E0D7EF42282EAA7CA554AA254D0F09A /* FBSDKErrorConfiguration.h */; }; + 7CC48DD2498D412BB8502EF9D7D0F144 /* FBSDKShareKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F882D75C1CCE50E50D3030EB284FF29 /* FBSDKShareKit+Internal.h */; }; + 7CD74FEC73EFB3EEDE052E5444DE4DE7 /* FBSDKLikeBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 47A4C203E7867764F3E284630A0268FD /* FBSDKLikeBoxView.m */; }; + 7D2D3C0A68A7EF6E5A1148C34C24413B /* FBSDKShareVideoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 69B7181C6F142ED4F0C684EC984A9CFC /* FBSDKShareVideoContent.m */; }; + 7DBCC0E643223DE9DBA754562F5134E4 /* FBSDKShareDialogMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B567AC8F39B4A53D38DEA73D3B7AD4C /* FBSDKShareDialogMode.h */; }; + 7DC6C578F01533E6B939916438FCF022 /* PFAsyncTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 46CF33218A1E3A8EEBA12DF120858641 /* PFAsyncTaskQueue.h */; }; + 7DD39755BB6F240522A6235B4E218DF0 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D7982BBC669B81B73D2DCE2C8D509E /* FBSDKBridgeAPIProtocolWebV2.m */; }; + 7DE52253AC3B77AD116C7B85E50C7C19 /* PFMulticastDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B1F0581CF330D76A0A76C63A642DD8E /* PFMulticastDelegate.h */; }; + 7E7BB5AD7A49C149712AFC678C255451 /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = AE6E4E1A35E5A1578967DF2865545D99 /* FBSDKWebDialog.h */; }; + 7E9FC7FDDDB432095AF34F79FCFCE9CE /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 94DCA4C48ED2DED1795550D3340FAB93 /* FBSDKAppEventsDeviceInfo.m */; }; + 7F55E76E58B983036FF0856D12318766 /* PFObjectFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = D20A9EB54DFD244FBACB2A29830F5CC3 /* PFObjectFileCodingLogic.h */; }; + 7FCD4FF353DB6DE536D86717C65C0204 /* PFFieldOperationDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F4F3195CA169976EFA27638B5893094 /* PFFieldOperationDecoder.h */; }; + 7FEC1DED15AE9E52C32A206F1BE40115 /* PFPushController.h in Headers */ = {isa = PBXBuildFile; fileRef = F496DCF5311E5B908DE4C4911C062A01 /* PFPushController.h */; }; + 806BADC3119A86AF66B04B8C7AD36832 /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = CDD73DC7AE87074EAEDF09FACACF5104 /* FBSDKBridgeAPIResponse.h */; }; + 80FB4A5ECD5FCA885D5EF27C6A1E3FC8 /* PFOfflineQueryLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = B49C8BAF9D69B1E6568421F922FD8F3A /* PFOfflineQueryLogic.m */; }; + 812E20ED57C5B81B34AB5CC8BA24441D /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = 0817A1706D8DF4000848B118C9DEE924 /* FBSDKKeychainStoreViaBundleID.h */; }; + 816A183678595D414E0D7F57F291CA7C /* FBSDKLoginManagerLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = B0E053D50F29084CF7D3D802F1517C70 /* FBSDKLoginManagerLogger.m */; }; + 8188B7DDD81BFD211F628D8EFEF3C300 /* PFRelation.h in Headers */ = {isa = PBXBuildFile; fileRef = F409B315AFACD2CDD448DFD6401146FC /* PFRelation.h */; }; + 8189451E0D572A123365625A27B40734 /* FBSDKShareKit.h in Headers */ = {isa = PBXBuildFile; fileRef = E0B83933AD135BA53C1F2A1BD657DA5A /* FBSDKShareKit.h */; }; + 81CFB279DD69C8D328DF48AE00E8A1F6 /* FBSDKLoginKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DEDE777646928ECFED937EF0600521E /* FBSDKLoginKit+Internal.h */; }; + 823183722B03E811E5B712BF5182521D /* PFObjectBatchController.h in Headers */ = {isa = PBXBuildFile; fileRef = B02C63468CE0F7F2C99C5865466B0C19 /* PFObjectBatchController.h */; }; + 824352FF2399FD1CDC6D6D817685FA33 /* PFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D62A4BDE3836C5D2CBA3510FF1F7F03 /* PFNetworkActivityIndicatorManager.h */; }; + 837E9C27712156BDE9D280EE4545D276 /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = F7D4CB9368BD8EF802C21EAB26119104 /* BFCancellationToken.h */; }; + 83BD07623A7905682A5066B1C1CEDA26 /* PFEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = CD984CB60274EFFD2FC6F488DBADE377 /* PFEventuallyQueue.h */; }; + 84245166731C1ADAFC84852A605AA4DC /* PFCurrentInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 316A644BD3E063F9A440F7F164000FB8 /* PFCurrentInstallationController.m */; }; + 8453AD5FDEE1A34114BC10032F7A8278 /* FBSDKLikeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = DD84DEFBFCE10B1818486E633AFAADD3 /* FBSDKLikeButton.m */; }; + 847247B05193D07DE43AF03B10C8F65D /* PFInstallationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A4845D88BBD0E2BF9238DBAC29792FF /* PFInstallationPrivate.h */; }; + 84868D53AABF24975E37AACB96FBA295 /* FBSDKShareDialogMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 6634E8525E51E4FF70C26E49F54493FC /* FBSDKShareDialogMode.m */; }; + 848D32C1394A874780205EE7808526BD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */; }; + 84D8529D8524E39A936AED30BDD14522 /* _FBSDKLoginRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 27330F2C59009D2CCAFFFB3332D30BE4 /* _FBSDKLoginRecoveryAttempter.m */; }; + 84E80F23894171F4A76DF54F420398E1 /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F7C92F85D64501768D125A46270422E /* FBSDKBridgeAPIProtocol.h */; }; + 8552B06A7BF3E6F606D6D44E22C7D940 /* FBSDKLoginManagerLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F5245D9C22CC21BB136BDC2AC4955ED /* FBSDKLoginManagerLogger.h */; }; + 8587D45B790E4579166CA011B18A0083 /* PFSessionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 81FCF70E549275BAA5747573A561C836 /* PFSessionUtilities.h */; }; + 86249EC7787535A0B0ECEC25B48D8635 /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = C5C45B89F5B6C19209EDAD31A79E371D /* FBSDKProfilePictureView.m */; }; + 86E29A0B163945AD1202BBBA3B932D9A /* PFPin.h in Headers */ = {isa = PBXBuildFile; fileRef = 279CEB44F83E8E0913B50FCE426C934D /* PFPin.h */; }; + 8700477C4DEE150BBA6B87EEE9528A44 /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = DE7C9DBCE49E309207C0F6DBBD2FC077 /* FBSDKAppEvents+Internal.h */; }; + 8856F450B33FE10B5CDDBB7075D13156 /* FBSDKLikeBoxBorderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FC77C0223C08FEC9F0BF799243D8F4C /* FBSDKLikeBoxBorderView.h */; }; + 887427914859D11CACBBC4A0C9858A42 /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = 260655407F577D163F7D60F3E66F4979 /* FBSDKViewImpressionTracker.m */; }; + 8A015CCBBB5F889F2666DB3E0DEC8AD5 /* FBSDKLikeObjectType.h in Headers */ = {isa = PBXBuildFile; fileRef = B410DB6A268571CB00AE7C7B191AFC4F /* FBSDKLikeObjectType.h */; }; + 8A0A3B0961EA769D2720A9B3FE94AE94 /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DDD6BD25FFFCF1D98AD2C5B68EED6B5 /* BFURL_Internal.h */; }; + 8ABEC82F977A95FF8798858A869CEDC8 /* PFInstallationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 02460856BC3622AAE8075AE3E3FC91A1 /* PFInstallationConstants.h */; }; + 8AC64D13C6DE5D63254570F33C7B7C7F /* PFPushManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7631CDE057643A0E17ACCC4DAF8BBF13 /* PFPushManager.h */; }; + 8ACD828FAC9F8124538B1B6E6671E248 /* PFConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = BDD02728E44328FBED3ACBA8A76F69A2 /* PFConfig.m */; }; + 8ADDFE574B996E273961DAA1620E9613 /* PFFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EA792EC53DF7A8B5DA6169AC702E322 /* PFFileState.h */; }; + 8ADE524A64AB7D81516BBFCC74B49351 /* PFProduct.h in Headers */ = {isa = PBXBuildFile; fileRef = 991B6A74EED7A47CCB0295E345AE6B36 /* PFProduct.h */; }; + 8AEC4F3B27211DC55A16547DA586384B /* PFWeakValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 786CD905662A5B821B7FBD479582CBCD /* PFWeakValue.m */; }; + 8B0114F4A39914DDCDB3C472DB61C1F9 /* FBSDKAppGroupAddDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 45C436A6EE477BC43DFD0B674BD6F99C /* FBSDKAppGroupAddDialog.m */; }; + 8B0281F30C94CC8589630EAF4D28A680 /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C6A832BE98AC2513DCF0311F799732F /* Pods-dummy.m */; }; + 8C157133D56BF238386C33CF523E7D47 /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = FA75267D4B40F3809876DEBF3F4D299B /* FBSDKDialogConfiguration.m */; }; + 8C6A3E1F148F5CEAD72A1BBF59B974C1 /* PFMultiProcessFileLock.h in Headers */ = {isa = PBXBuildFile; fileRef = C04006B24886DEDB86D8AA796A957464 /* PFMultiProcessFileLock.h */; }; + 8CD66ADBF206FA36EEC1BB63D4052E13 /* PFEventuallyPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 44B6337C2B9832B7597DF729DE1D5419 /* PFEventuallyPin.m */; }; + 8D474DFB1ECB14E03F575ACFE0B26538 /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BCC4C05D309B44EE5FE3BCBCEF29FF9 /* FBSDKServerConfigurationManager.h */; }; + 8E07A844FBC59F8B9D73FAE12E02750B /* BFCancellationToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 93A5F67195E8183EE3FC797F98DC5956 /* BFCancellationToken.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 8E6C7B0C25223EBDB7C6604C6A2D3BCF /* PFFieldOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E85B0B9859FBCA9E74C55E1211ACE9A /* PFFieldOperation.m */; }; + 8ED4BE044EF21C643B3E79E21ECBC6A4 /* PFMulticastDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = FB4DE0ABD27878F01E20805AF9C9D6FC /* PFMulticastDelegate.m */; }; + 8FB0A448CF0BE75E167A5B4C4E353D90 /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CF8B294E2A7B44762772B83EB5F37585 /* FBSDKSettings+Internal.h */; }; + 8FCAFC45A1ED8A43375A66D15276E686 /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = E8E7C875C6D9ECD9F2B37DCBDFC9B2CD /* FBSDKAppEventsUtility.h */; }; + 8FF05DB71CAB42D4094135A93E77060C /* PFAnalyticsController.h in Headers */ = {isa = PBXBuildFile; fileRef = E8397C0E16E68CA9A74B4BBDED56C9C4 /* PFAnalyticsController.h */; }; + 9003C22E2E869AAE17A8ED51D8FD8D80 /* PFMutableFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C44C18F2ACA338C07999CAF4BDA46E4 /* PFMutableFileState.m */; }; + 902F3630EB8D3ABB9D7755CCDC17152D /* FBSDKTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 042A2244DF3B5F5C519B2D9711580B50 /* FBSDKTooltipView.m */; }; + 906E067419EAFC22D23DA657F3CF9693 /* PFLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = E2BB5322373C1D0A089D6447434E2F01 /* PFLogging.h */; }; + 90ADE70B8B9EE69E84421A5C857638E2 /* FBSDKLikeActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = ADEBB6BE4E6B7E95DBD5EA0F8198E2A6 /* FBSDKLikeActionController.h */; }; + 91B0FB2808205072D601D935ADC386BE /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 31A715898F55241C3204E5E8C95A3963 /* FBSDKAppLinkResolver.h */; }; + 9200159DC5F8143B827C1F843DF2B710 /* PFObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 76C526DD236D0ABDBBDEEE2285B501CC /* PFObjectController.h */; }; + 925B485469CF179340D855CB22857291 /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = BB64BAB52FC9332856CA17F5ECED7115 /* FBSDKMonotonicTime.m */; }; + 92A1C24F9EDE76ED654923B58AFEC34E /* PFPurchaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D0BD04081C3A718EFB63F79C43FA7C0 /* PFPurchaseController.h */; }; + 933C5D203D10D0FB3205B0FC2DD744F1 /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 284C3412CE156CA93B1FBA2AB890B118 /* FBSDKAppEventsStateManager.m */; }; + 93A3540505C0BE9A4983E4015D5CACBA /* PFJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AF90E9A2D2424F9A61BF41682FAB99A /* PFJSONSerialization.h */; }; + 949E9BF062D5BD5F99F83D574EE7350C /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = FD0EBED5DD6CD15CFA67F054ABDCDD72 /* FBSDKDynamicFrameworkLoader.h */; }; + 94AFC2671530505C987790F5F3FA99FC /* ParseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A4FA890C6CF8DCC5C56BF4D23B3D4EC0 /* ParseManager.m */; }; + 94C2E9AB52E39C8B5DAC91BADA725ED5 /* ParseModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 9826F9EF99C989F23C8760ECCF731EB0 /* ParseModule.h */; }; + 94D0BE43FF35618240E63C0D74C781CB /* PFSessionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 48E607B7C98F48C601E0A8EADDB4199E /* PFSessionController.m */; }; + 95A8EA311AE92357D4704E6B640C5AB6 /* FBSDKAccessTokenCacheV3_17.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B229FDD88B02BA431226CF6F4C2C557 /* FBSDKAccessTokenCacheV3_17.h */; }; + 96118F82F75A07742E95B976664396A1 /* PFFileDataStream.m in Sources */ = {isa = PBXBuildFile; fileRef = CA713D1D956929857B5573815E8B700A /* PFFileDataStream.m */; }; + 962AF9D2ECAFBB82577BC5870B99A5AC /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = D200CBDECE639A7FCC23CBA4AA40C197 /* FBSDKProfile.h */; }; + 96BF60A7CC6C1DA5E3150C952FD663E4 /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = EF543883C6E0CD2FC7B4528B2C70C269 /* FBSDKAppEventsDeviceInfo.h */; }; + 96C0654FF3DA4CA52E8645F5906D7A4F /* PFCommandRunningConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AE3A1E847A23D89FFD2AA9F7A96D994 /* PFCommandRunningConstants.h */; }; + 96C59365E57E7DC8F92C37E3FCC8664B /* PFTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 55D18B6A42464EFB5D7AC64708485ECF /* PFTaskQueue.h */; }; + 974DCD6881C74FDEAB446E947479EF47 /* PFProduct.m in Sources */ = {isa = PBXBuildFile; fileRef = 0368EC0DFD738EA132782A0111A76AD6 /* PFProduct.m */; }; + 995DC7CA4C2115CC77A9458E848D53F4 /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 25820261B6FF28709163579438BE7D8E /* FBSDKPaymentObserver.h */; }; + 99CE3270C4F73E2A162321E133F2F19C /* ParseManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C923F6FD789CB2C9F384405DEACE388F /* ParseManager.h */; }; + 99E5BF53E83D7C3F6928CD8A16ABAF21 /* FBSDKTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = C7984134808FC31A9208D31DFE42B6AF /* FBSDKTooltipView.h */; }; + 9B026B617E683F9C03E8BD29B6F424D3 /* PFRESTPushCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EB6555F0750836E4B76B0C08567E4F7 /* PFRESTPushCommand.m */; }; + 9B122332AEED13957E029A90E6674FA2 /* PFSessionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = EB6A4EB9D35740998C6D23740E612D5C /* PFSessionUtilities.m */; }; + 9B860FF944EF4A439B373EB2E80B97F3 /* FBSDKSharingContent.h in Headers */ = {isa = PBXBuildFile; fileRef = AE99A458700FBFED7B17F712111F6238 /* FBSDKSharingContent.h */; }; + 9BC3D340FB7797EA087856FB677E10CA /* PFMutableUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = FD87D91BF55E5388FB9F03A3ADE8B577 /* PFMutableUserState.m */; }; + 9C23BE6854C26A25FF7BD9A4212C6D31 /* PFDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DE4686D573E489CA8763A9AFF69E884 /* PFDecoder.h */; }; + 9C64E7360A956C3AEEAA371F1F48A572 /* PFUserConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 492800396C7B66131BE664D3B6D93D67 /* PFUserConstants.h */; }; + 9CAEA2F3FC5A259EC3F12BDECB612EBC /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = E5071678A9FFE38B25984E1DE154CA86 /* FBSDKAppEvents.h */; }; + 9CE0C07218A736188343B4DA20DA39FD /* _FBSDKLoginRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C899258C0EA110D85E7B48171B6432 /* _FBSDKLoginRecoveryAttempter.h */; }; + 9D4B4179D22A7E72ADC746BC9867F19F /* FBSDKMessageDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 00317664E706475AA83526A30F2CC298 /* FBSDKMessageDialog.h */; }; + 9D78ACDBFEA0C1BE2E92617B281FBA83 /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = A4776CCEC32BF011FC6F64F822052FDC /* FBSDKKeychainStore.h */; }; + 9DBD52A2A42B56822E76A986EA118AEA /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = 870C15BDFACBF06245D3E708FB7C0973 /* Bolts.h */; }; + 9E5B04ABE2C83DB36FCBDF9DE6F924FF /* FBSDKAccessTokenCacheV3.h in Headers */ = {isa = PBXBuildFile; fileRef = E5DAF6DF08F79AABABEB6DCD99347D5A /* FBSDKAccessTokenCacheV3.h */; }; + 9E5D86931310C44A629DA4BC6BF87A3B /* PFRESTObjectBatchCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 068DBD6F64C945AE062AA96733338643 /* PFRESTObjectBatchCommand.m */; }; + 9E63D3D328F8688E3A110A7471A76EE0 /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ADDE928DDF753FD23E0044BC7A4C15B /* FBSDKAppEvents.m */; }; + 9E7E70AC3527DE4F9E286082227EF521 /* PFRESTSessionCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 11CEF84C21F6B2D0803987B5694F5F14 /* PFRESTSessionCommand.m */; }; + 9EBDAE34F4A8CB5649E184EE8DA92133 /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F4B36F14A355821D7E2FB123300DDCD /* FBSDKGraphRequestConnection.m */; }; + 9F23B3D99743F33A718A80E8A6C3C7B6 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = EDB642C66D82496889ED7B13E6DBA70B /* FBSDKBridgeAPIProtocolNativeV1.h */; }; + 9F9D41E0CF8CAD2AC465F6C4FFCE1CA7 /* PFPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E6F860380815B6D4EE77B3B136F98BB /* PFPurchase.m */; }; + A05B16705DD63CA337527EC7129CC5EC /* FBSDKMessengerIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 43C58CE6DD6DD31ACA6BE1B0D257427E /* FBSDKMessengerIcon.m */; }; + A0626297F5A1CC35F90FD5E3051C2133 /* PFKeyValueCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B1F9A5CCDA0552CD62CAD6A9C8018543 /* PFKeyValueCache.m */; }; + A086C2615B2785D481DA7C4D34F4E624 /* FBSDKShareAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CF322B34A45C7374C6ACB86C793A0977 /* FBSDKShareAPI.h */; }; + A0A59E60CF207E84E074F3AC90546799 /* PFOfflineStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 6510524988D56D1E9B8FC5C067C04B9A /* PFOfflineStore.h */; }; + A178F9052CF04F9A910455EC7A7ADB93 /* PFInstallationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = FF936D8AE384A20B5E843F162679EC85 /* PFInstallationConstants.m */; }; + A1A51D34B7F1ACAD09DB4C718A4848CB /* PFSQLiteStatement.m in Sources */ = {isa = PBXBuildFile; fileRef = 34AD764CE1E3CBCA034D21A0B4EDFC69 /* PFSQLiteStatement.m */; }; + A1C17F0CCAFF80E954A67A06B623F1D3 /* FBSDKShareVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A6FA7C694C6B40F59512851C968703D /* FBSDKShareVideo.m */; }; + A1C73296132580A14556BA586F455433 /* PFObjectFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 40FC928384A8D2A945845B0EB6281D6C /* PFObjectFileCodingLogic.m */; }; + A21EAD6DC6E64D1DDEC818E884B8681C /* FBSDKAppGroupJoinDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F95877AC2E55BE1D53E55F4938D652C /* FBSDKAppGroupJoinDialog.h */; }; + A4335A60A42ACE37E88A5ED18002F7CC /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = EC5644397B97AA444E77A9EB9CFC10E5 /* FBSDKBase64.h */; }; + A4A60E33AFF6B461A043C413D1B9D4E4 /* FBSDKAccessTokenCacheV4.m in Sources */ = {isa = PBXBuildFile; fileRef = 3708EBED7F7E311067B7CCF801145621 /* FBSDKAccessTokenCacheV4.m */; }; + A4C607C623C9CA43A597968B0DA3A72C /* PFUserFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 19D77D49AB34F2DECC9C970A88D920DE /* PFUserFileCodingLogic.m */; }; + A54FE2B3F69ED6C33AC71A8B49360D44 /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 93BC124A0CB4D829CA7468516B1F1877 /* FBSDKServerConfigurationManager+Internal.h */; }; + A62FFF4A04995FA43CC038DBE8DB7979 /* PFObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = 583552D355C9486BC5473CB54B561686 /* PFObjectState.m */; }; + A6D342C48B8AA4EBF44869A4F34C4209 /* PFHash.m in Sources */ = {isa = PBXBuildFile; fileRef = 03E70A5437B075C14B5508D5BFCEEB28 /* PFHash.m */; }; + A73836C245FAD1D78661404A365F13A4 /* PFCommandCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A9B29CACB66253CAD26C692CD8B3617 /* PFCommandCache.h */; }; + A7C11E5DBBF673F5014C251AA00BB71B /* PFPropertyInfo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BC74937463C566796639512770F35CC /* PFPropertyInfo_Private.h */; }; + A850527F1ABF982385E234283E348456 /* PFLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 071B86E1C2AAD3B5091748D714423E5B /* PFLogger.m */; }; + A87116EDAB375BCF34DC687F08B51081 /* FBSDKLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D1AB96A6A99AA8FC62B50D926542778 /* FBSDKLoginManager.m */; }; + A923C01A3CCA7B26A0756D7BAF9E0D3A /* FBSDKShareOpenGraphAction.m in Sources */ = {isa = PBXBuildFile; fileRef = D6C799561791E9883CE1451D688B8D98 /* FBSDKShareOpenGraphAction.m */; }; + A92D8896D37E1D574BA51B6B4762E648 /* PFCurrentObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = E195893EFAF6B4D88041C06F7BD32C88 /* PFCurrentObjectControlling.h */; }; + A9B1A69195737600121B362FF71C4482 /* PFHash.h in Headers */ = {isa = PBXBuildFile; fileRef = AAD6D82FB30E66F727F7DF8841439C41 /* PFHash.h */; }; + A9BEF137DF5768708869D3256BFAD63D /* FBSDKAppInviteDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = ED36E7E1EEBAAFFA740A30B12242CA27 /* FBSDKAppInviteDialog.h */; }; + AA1E39ADA454257B308C615115763491 /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B91208A301E53477B2B4CCCF31C14AB /* FBSDKServerConfiguration.m */; }; + AA25FED1F75847E0B88021010EA77F7E /* PFInstallationIdentifierStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 32CCE778F285747138A0725BD9D1B019 /* PFInstallationIdentifierStore.h */; }; + AA6E969F0ACDA126C12E755EA39EAAC3 /* PFFileDataStream.h in Headers */ = {isa = PBXBuildFile; fileRef = FC1407E7292FD644B5484C9433F82629 /* PFFileDataStream.h */; }; + AB2143E64A033D3593F4B6798DB0947E /* FBSDKLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9390C92F1CE8467A8432506858B8172F /* FBSDKLoginManager.h */; }; + ABC7A9122C527CC454683E0F3003AC5E /* FBSDKMessengerIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 860483D9361D7525A3473BBEBF3BE90A /* FBSDKMessengerIcon.h */; }; + AC12EBE82E427B9B5608A32FBE398FE5 /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = B2B529CF2F3BA08A19036180A7792FD5 /* BFTask.h */; }; + ACB80FF5C9696C3897C2DD20D18FB650 /* PFAnonymousUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0773FB1AEB768DE82BEE27A777B659A1 /* PFAnonymousUtils.m */; }; + ACF041AF7954A94B73F36771017E1433 /* PFObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = A4C16395183819CC55902C187BBF3588 /* PFObjectState.h */; }; + AD80993512EDCDB6BB0D8F2B45D8EBBE /* PFQueryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B302392664E4BE2747A482E82F65D97 /* PFQueryUtilities.m */; }; + AD9E637F9642485C7EAB40ED17FFD6EA /* PFDefaultACLController.m in Sources */ = {isa = PBXBuildFile; fileRef = BE9F0035470C161A4516449709B0853A /* PFDefaultACLController.m */; }; + ADCBD1E21EE29D29239129FD8025C57B /* BFAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = AC06B3B87B029CEA32581C7CEB6C05B0 /* BFAppLinkResolving.h */; }; + AE7D44B9963E439D25BA557117AAB3FC /* PFCoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FEB5063ADD4EFE8EFFAD97BD5C4D8CF /* PFCoreManager.h */; }; + AEF25B93963113F53E8832A09D77B905 /* PFMutableACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = B5B0B7503DC660F1E57F478887AA177E /* PFMutableACLState.m */; }; + AEFB1B90E74FD8578D51CC4A5107313F /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CB8B17646606A4BA50309E5B9768E26 /* FBSDKMaleSilhouetteIcon.h */; }; + AF5359F040D97FC805477208E7911018 /* FBSDKGameRequestContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 37E59CBA1B5E09F3A99384CDBF968875 /* FBSDKGameRequestContent.h */; }; + B08B8E79E38086479F6B2202EE6E67B7 /* PFCurrentUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4612BDFDA5045AC0EE6F998D18D57F77 /* PFCurrentUserController.m */; }; + B093EFF1E2ECE82CDA6B6B9B1E8A0B66 /* PFSubclassing.h in Headers */ = {isa = PBXBuildFile; fileRef = ECBD1659924D8AA95D83F0EDE40C2614 /* PFSubclassing.h */; }; + B124A8929C4F461DBC3D5043685F2401 /* FBSDKShareDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 396620E59D63358DFBB3310A8B068287 /* FBSDKShareDialog.m */; }; + B292958ED03BC952956FD8A4ED79E0DD /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BF0534631608C66AF55C61D37D30B11 /* FBSDKKeychainStoreViaBundleID.m */; }; + B2A40C992E571AFD66738150516F47EF /* FBSDKSharePhotoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = AE6F6B94AFE361FD0E18CCB6B75A0DE3 /* FBSDKSharePhotoContent.h */; }; + B2BDC7947CCD674D3AB2E9C362FF6D7C /* BFWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = D5255CB6CDF2850371E17AAA2A1AB6D7 /* BFWebViewAppLinkResolver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B30588470800ED65039D4154015DDD6B /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = B8734BB39E4CEA7D82E5591EDFECB01E /* FBSDKError.h */; }; + B3149A88B5EF9D591100060E4577FFEC /* PFConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = C4D9795941DB7420B09A2A295B29310C /* PFConfigController.m */; }; + B32B1CA0020B31D043806BC3FEB9A0D5 /* FBSDKSystemAccountStoreAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9278C0A565B9938261216A43EA0177CA /* FBSDKSystemAccountStoreAdapter.m */; }; + B3573F43A0E654ED6253ED7CEB106C44 /* PFAnonymousUtils_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 33AA341F9AFBBCA79F1F6E89A0571479 /* PFAnonymousUtils_Private.h */; }; + B3B89D2A7B994E378A344B620ADCA35E /* PFObjectSubclassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = D24D2A9A2A00617641EB1C9DAF8E5BD9 /* PFObjectSubclassInfo.h */; }; + B3E66A59EA04548C918BD8E9CC72613A /* PFQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = D13DEF1A34A6346D0D141BE69B48222B /* PFQueryController.m */; }; + B503F98EF155E568AAFF59237046DD90 /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C943F70CC022BD45D5BC6C312618A47 /* FBSDKTimeSpentData.h */; }; + B50CAA3D21A9C93DFC9017CB1C1A6520 /* PFOfflineQueryLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = E7FFCEEBB5EF7D5A28D81A02BAD268FD /* PFOfflineQueryLogic.h */; }; + B59666CE66E901154A8239073431C260 /* BFTask+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B9D0ABFE846D51BADE9E86A6F8E48989 /* BFTask+Private.h */; }; + B5AD392A076CFADF6041F94414478DCD /* FBSDKLoginManagerLoginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B4D99B79C54CE4DF16ED8030ABCA255 /* FBSDKLoginManagerLoginResult.m */; }; + B703741B0A21A1DB2F89EC7414A8FA26 /* PFCloud.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E7104272D9C49EA366374D7591B69BC /* PFCloud.h */; }; + B725979258522519ED96E2704A869932 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 992BF67D0574DEFDA7B5A5DA35227955 /* CoreLocation.framework */; }; + B77C09C30F319B9914148050FE53A842 /* PFURLSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C2398FB910D7AF39F3C66C51408D84D5 /* PFURLSession_Private.h */; }; + B7CD16BA3FCFCD0304E41FD626F2ADB3 /* FBSDKLikeButtonPopWAV.m in Sources */ = {isa = PBXBuildFile; fileRef = A16681B3380FF1CBA89E6E2F276422AA /* FBSDKLikeButtonPopWAV.m */; }; + B7E4BEE543CE921D3E8EA19F745A4840 /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ED733F365A4B7276A584251EDEE13D3 /* FBSDKErrorRecoveryAttempter.h */; }; + B90A724A9A95499F9B46EC9E4124E2CE /* BFWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 2221BF7B944E3A928C21F480C8CCE6A6 /* BFWebViewAppLinkResolver.h */; }; + B93C621EA6D9A186BD1743F6B1E5D134 /* FBSDKLikeBoxBorderView.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E4838EB0ACA07B884CA93AFAD23B44 /* FBSDKLikeBoxBorderView.m */; }; + B9CAF300C714025446DBD3D170DE7380 /* PFCachedQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 778B2BB152B3C76A56D9A45B5E01AC3E /* PFCachedQueryController.m */; }; + B9D665C1FFEA8087E6977A029EC9F109 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 24E017A99C1D0B48564CB40E5B2422A8 /* BFTaskCompletionSource.h */; }; + B9DCE0A35921E1DAFB1C063EC254E6A6 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = EE40A18D405EDF0DDC2E9EB039576D21 /* FBSDKGraphErrorRecoveryProcessor.m */; }; + BAEC1C6ADE3E2E0B4B8BC1E58DC4E9B1 /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 60BBB09A1AF30CA3EF9CB3294AA8A5F9 /* FBSDKIcon.m */; }; + BAFC86D712FD60393400E6F37005C10E /* FBSDKShareUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 2278812C83EFF9DAF44E37BDB2014B3F /* FBSDKShareUtility.m */; }; + BB0147FB69D9824B3084835C05ED2D96 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E52BB93D7804BC50FDA99B9B59EB044 /* _FBSDKTemporaryErrorRecoveryAttempter.h */; }; + BBAE76F290141486645F6885DA829A55 /* FBSDKSystemAccountStoreAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 15A55E8ABB2D9F00C4D7E5B591503FC7 /* FBSDKSystemAccountStoreAdapter.h */; }; + BBEDC1B0186EE3BDCFD52D33F5019B73 /* PFCommandResult.m in Sources */ = {isa = PBXBuildFile; fileRef = FB8484337705B68B729961116D8780FF /* PFCommandResult.m */; }; + BD15875D09A6E6126333EA8200F3CED3 /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C38CB3F5B5846CA53D031EA7F63E697 /* FBSDKError.m */; }; + BD3CE6F36B20865EAA4F5E6AD2FE7B9B /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = ADC7A4E7F1BB2DAD519028D6DD15357F /* BFCancellationTokenSource.h */; }; + BDC94B58683F8564C61B5217AA9D8CF3 /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = ED57766F65BFA4FA25D7090346C97F28 /* FBSDKBridgeAPIProtocolType.h */; }; + BE81BB3D49E3317002BEE498E3D5DA50 /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = C394ED14B3FB109EF6BFAA2414984518 /* FBSDKGraphRequestMetadata.h */; }; + BEB5FEB51FB1A12140DA5E683C2FE8CD /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83550267DCC8A2C04DD26DBA885C6379 /* StoreKit.framework */; }; + BEEC9448DF823C0F80F5D35464DFDBB1 /* PFLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = FCC45D5098F99503478D96062E9B86BB /* PFLocationManager.m */; }; + C02E3465BA70AD28DCD5390996FB6AF6 /* PFPushState.m in Sources */ = {isa = PBXBuildFile; fileRef = D6B6858EBB4F2461F279E542CA9305EF /* PFPushState.m */; }; + C19D9ECB5B4495B5218A40256135FF82 /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = FE64BADD703C143B203FA8E00FD8FAD4 /* BFURL.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + C222EBE352FA0160CB53093ECB765D23 /* FBSDKLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = CAE37334F4838571A1A3347478DDBD93 /* FBSDKLoginError.h */; }; + C48038B4840E38D6CC3CEB1604944E87 /* PFACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = BAD153B7AF61CF6B398EB3FE2E5C2C7D /* PFACLState.h */; }; + C4A0B3AE8DE75263B4F77C7A56761C61 /* PFMutableObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = ECFFDF4EED9136970053D3F87C287A38 /* PFMutableObjectState.h */; }; + C4A82D2592849F48EFC21967D4D816C1 /* FBSDKLoginUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 690DD19198EE8D5F0127BA29BE0469C5 /* FBSDKLoginUtility.h */; }; + C4B4503F43EC426C4289493879FCB0E8 /* PFQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4954F834F6DA1CCC4DE29F801E8E6A52 /* PFQueryController.h */; }; + C51B459816A37F9471FD39AABAE78521 /* PFPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 12D6C59ACE08BC3F7440AFA3074159F7 /* PFPin.m */; }; + C5977D81D3310AC9F8ED1BBE8D297D3F /* PFBase64Encoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FCC6B0A52F1073866F5045115232A56 /* PFBase64Encoder.h */; }; + C6E485332A5CCC5526ABD9E70052981C /* PFFieldOperationDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = F64699881A4C5A9980C295DDA013D4DA /* PFFieldOperationDecoder.m */; }; + C74F0797B7B9DC9ED903076DAAB112C1 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = B0FEAD05D23D395F290529EE5DB73F6C /* FBSDKLogger.m */; }; + C76BFBC54AB29A882AFF2B93FABC02D9 /* FBSDKLikeButton+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 055D613FCAF2DEE454B4D55F922EE234 /* FBSDKLikeButton+Internal.h */; }; + C7E8486D1F67A49434500098CC8DB323 /* PFSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 19768BDA094897981754F254573AA405 /* PFSession_Private.h */; }; + C872275F11CC8962B2FAD03A3B9B13D6 /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F02776DDFE76E235B5AF885797A8F4B7 /* FBSDKGraphRequestPiggybackManager.m */; }; + C8E9F8ABFEE1F8C017714E754C5D8279 /* PFPushUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = F0B0CDDA729281358070EBBED9C52BB7 /* PFPushUtilities.m */; }; + C9199F1600296856F0A68EB34DE06DC0 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70A2ACBCF37165DCF827CE708D6D4C9E /* CFNetwork.framework */; }; + C93EF9E7AB322844B44D91A7417C7677 /* FBSDKAppInviteContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DEDEA8104363CAC7A0792A26668948A /* FBSDKAppInviteContent.h */; }; + C9A04A5564AD93F2D29EB2A7E0B4A9DB /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 32BA9072F15BE4F0B32F6D4CBC36210A /* BFAppLinkReturnToRefererView.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + CAB7052056C21EFFD46860D32FE256B7 /* PFThreadsafety.h in Headers */ = {isa = PBXBuildFile; fileRef = DEF1EA4E1F9251BFCF197D8CF0D4A299 /* PFThreadsafety.h */; }; + CB6E04CE7A2D8908A3E3D529DB7F5061 /* PFURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = E381E7C31CC253F19B9DBADD0D0C49A6 /* PFURLSession.h */; }; + CC2ABE5C8F67B4B91BD62C41634F456C /* PFRelationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D1936061C906ACCF7096B33BC0F8B8D5 /* PFRelationPrivate.h */; }; + CC6774347838445871178181BC28620A /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7679ACE8F1FCAA1786579B614C35BAC0 /* FBSDKTestUsersManager.h */; }; + CC8D510E3D7EF751A5E55F13A2071D87 /* PFConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B5E087C87BE017FB0C382DC023EA4BE /* PFConfig.h */; }; + CCBD5FF1E39126AED1F8DD92F8DCFD82 /* FBSDKLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F06057C5FB4F34C78273C6773FE934A /* FBSDKLoginError.m */; }; + CD9D2216FD81D025B9F8A044BC727B4A /* PFURLSessionFileDownloadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EF85D0CB5A209F611DBE0B95DD6E0937 /* PFURLSessionFileDownloadTaskDelegate.m */; }; + CDCA058527BCAAC5DAC3C538DBDC6855 /* PFPaymentTransactionObserver_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CC1532E55E3DE39D552270CFBD839CF6 /* PFPaymentTransactionObserver_Private.h */; }; + CE04A9D2777511F219923DC8A7E456FA /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F9DB8A88D120EF79B711A6D9A60C9735 /* FBSDKAccessTokenCache.h */; }; + CE21ACAE8CD2E1F05A6878D3B2482ABB /* PFCloudCodeController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2022F0B4ED20CCE9260B4E160964B9D8 /* PFCloudCodeController.h */; }; + CF79198C14BBBD2D665382664838FDC3 /* FBSDKAppGroupAddDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 175A1AE7E5CD7E7816C852D51957E66A /* FBSDKAppGroupAddDialog.h */; }; + CFF394E02CD69EA682C7AD26E4A6580E /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C91A1662596A108F805EA72954D11C /* FBSDKGraphErrorRecoveryProcessor.h */; }; + D0144F5341D9037D37D9446DA8745BD1 /* PFObjectLocalIdStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D32532031A1C89062D9473123DC3B2 /* PFObjectLocalIdStore.m */; }; + D03F806B3D48F7003CC1DCAAE0D7F7AD /* PFAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = D72924A89C6D36425031B7EB8C451C49 /* PFAnalytics.h */; }; + D08EDD7023EA483E0FCC806B743AB8C8 /* PFRESTObjectCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 8018CD5321B09E6AA082BFED9506705E /* PFRESTObjectCommand.m */; }; + D0D743C0E98198942EE41BFBA24950FA /* PFObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD21F178D79A8CCA228342BF2E4B2 /* PFObjectUtilities.m */; }; + D10CDE3288CBAECCB4870B578BA26A96 /* PFCategoryLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AAB126C87821E766861FC4022C4E248 /* PFCategoryLoader.h */; }; + D17EA2C542316E553796A54137DB2BA2 /* FBSDKShareOpenGraphValueContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A3E0823C5C63DCBFFF51F3DAA930F7E /* FBSDKShareOpenGraphValueContainer.m */; }; + D181D054976B047917CE654092F55A0D /* FBSDKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = A07F69889F21865BABF7494B7A375A53 /* FBSDKMacros.h */; }; + D1E97F4708237AC9D9EE8F0DC21C7B64 /* PFPushChannelsController.h in Headers */ = {isa = PBXBuildFile; fileRef = A2B0C52AADDA52456790576546FCC99D /* PFPushChannelsController.h */; }; + D24F4135A2908F8F44653B3B9285C687 /* PFInstallationIdentifierStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 18DA781E03A5FEF86B0ADEA14D9E9E63 /* PFInstallationIdentifierStore.m */; }; + D2607228CAE8BB301CB8263391ABCDCB /* PFKeyValueCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6997FDD65FC84CBE9C0B1F06A436C49C /* PFKeyValueCache_Private.h */; }; + D2B4AAB5308342E98196868D0B732FA1 /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 41094B5E693D24C0D940E39D86E35B98 /* FBSDKBridgeAPIResponse.m */; }; + D2FA4F91B4B66C579FAB1CB3BB8D1CBB /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47F6D008CDDC192BF994FAA0B8B41043 /* SystemConfiguration.framework */; }; + D3134BF37E80DB532CB93325997FB927 /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 8827063A0A317BDA830C5A1CBEC3F03F /* FBSDKGraphRequestMetadata.m */; }; + D35E29B5D9FC142022E8427B40FC3D2B /* BFAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 041D6BFA828C5A1E9512BEEFEC8F8283 /* BFAppLinkTarget.h */; }; + D417241C7870B27AAB51410A98A0F475 /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = D388F363F30D7354C0DD6EF934AEF405 /* FBSDKCopying.h */; }; + D41DB6CD0DFFE0F06736B971FF6E40DA /* PFFieldOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C0625656720CAD50DBE306C724DADC69 /* PFFieldOperation.h */; }; + D426F78D685F292D750DDAE27B542951 /* PFMutableACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = 25F9E5B91126E490040E4C142BE17D7C /* PFMutableACLState.h */; }; + D473EBF593E8962DC51188AD7CA7A26C /* FBSDKAppGroupContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B212E7E5891AA33B35F56D833F69EF4D /* FBSDKAppGroupContent.m */; }; + D532A655317AE37BD7AC500809F5DE09 /* PFObjectSubclassingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B8C83CAC30A6E627FC4C625FE78664C /* PFObjectSubclassingController.m */; }; + D539A64059405A192DA4DD93A1819502 /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B0A0F292A52A1B2A4F4BBA76248ED29 /* FBSDKViewImpressionTracker.h */; }; + D5650C90FF89446F265AB92F128B696F /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F83E67F4212B6068698963474A88BBC6 /* FBSDKApplicationDelegate.m */; }; + D58BA1D2025529F819D6E423F0C7DD6A /* PFUserState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 945E0E4F9730840B5671665F5AE4F8C6 /* PFUserState_Private.h */; }; + D5D8352542CA6A2CFA802B75632E6586 /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A8D4366E635D41E68C80330D1D6303 /* FBSDKButton.h */; }; + D5EF482B2E3D57F3FD95D49EDB459A23 /* PFFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C9D0DC652ECEB0AC847D646E33E3762 /* PFFileState.m */; }; + D66601DBFBB39851657F90C29134F86A /* FBSDKLikeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 75CAD372C74E8529A061E6EB2818F982 /* FBSDKLikeDialog.m */; }; + D69677EA0874C8A641C3EAC1650B0F83 /* BFTask+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A19F56E0F8C29946A8608B76F3A49F4 /* BFTask+Private.m */; }; + D6C47ED862055985196D9325E3121EF0 /* FBSDKLoginConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 9764C114535D7CCF89F76AD383D000DF /* FBSDKLoginConstants.m */; }; + D74F2E810DA974E4D08A2873A84D1A9C /* PFFileController.h in Headers */ = {isa = PBXBuildFile; fileRef = D03015A70D44B37A63401618F5BAE8D3 /* PFFileController.h */; }; + D869A0A06F7092BB38061BE822D5F0BD /* PFSQLiteDatabaseResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 81D6701BAB69FFA1D5E976AA8AE47D90 /* PFSQLiteDatabaseResult.m */; }; + D97458B299708EC25990B63810465D97 /* PFQueryPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D97F582E69FFF8BC67A3DB17D398C9C5 /* PFQueryPrivate.h */; }; + D9850B00148639B256BDE5F3F23C8A0F /* PFGeoPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = F1EF1E16E02ADB82F94F4A9757F01077 /* PFGeoPoint.h */; }; + D99E0E47569B3EA08DD354582883AA97 /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = 897397ACC5D65221928DE26C756E60EC /* FBSDKTriStateBOOL.m */; }; + DA143DD613C9371DF58294B6C5EFD2B4 /* FBSDKBridgeAPICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EBCBD93200C3A10C234267D819C7E09 /* FBSDKBridgeAPICrypto.h */; }; + DA176B90A87EC91233E2508B4F5D141B /* PFCategoryLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C119E76B1739D418563786A3535A586 /* PFCategoryLoader.m */; }; + DA8E9CB7BC799826B6986C010360E359 /* PFRESTCloudCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FEF83ED93FDFDDF9C57D5020D1F5EB6 /* PFRESTCloudCommand.h */; }; + DA945F0026584B08173CD60DA7C25EAC /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D1F353DA75094169460F4E178D67879F /* BFMeasurementEvent.h */; }; + DAAE0B37F5BE0DA84A8932C0643484ED /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 5942BB14DE3948BBEF602394405639FE /* FBSDKGraphRequestDataAttachment.m */; }; + DB4F10499FD9AE1571DF6D24F3D059A4 /* PFURLSessionUploadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 87B2FEF6137A22119E9C4BF5999B87A1 /* PFURLSessionUploadTaskDelegate.m */; }; + DB976377ECFE3DCDC7A39A70EFDCB66A /* FBSDKShareOpenGraphObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 629A496B7FB2D5E3C39FF55136A1EEE4 /* FBSDKShareOpenGraphObject.h */; }; + DC2C432ADD7B9BF3E341DF74E3FE1558 /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 31B2F7D2FA080E49146AA5468986A493 /* FBSDKConstants.m */; }; + DC464A1128A701A7CF13E46185475091 /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9908DE4518F24CDCE9DEBFBD8AAF7A5E /* FBSDKContainerViewController.m */; }; + DC95621B201A1643FEDCA0D4B8F9F8AE /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F7F02E2032B63EE2D9E989373528958 /* FBSDKGraphRequestConnection.h */; }; + DCC1ABB0688AAFDD2FA307053A70B667 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */; }; + DD580DFD2330BC82FF3CC6AE0673D23C /* FBSDKGameRequestDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DED363DFEDD926102B4745A17AA358A /* FBSDKGameRequestDialog.m */; }; + DDA5BB61D5FDA34A2F4DA088708BFF07 /* PFRESTFileCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F1129A22D3FF953177EDA6105319682 /* PFRESTFileCommand.h */; }; + DE27B30E8B84C46EFE4214A8F1DF4CA1 /* FBSDKLikeActionControllerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A1EE50D31E951A4463F312FC9BF343D5 /* FBSDKLikeActionControllerCache.m */; }; + DF8EBECA6B580DBD79CB044E25D8D25F /* PFOperationSet.h in Headers */ = {isa = PBXBuildFile; fileRef = E5CCD914EAF1670C15EFE26F755C80A1 /* PFOperationSet.h */; }; + DFE76642360EFF066C3CC145468E4BC2 /* PFApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C2DF1B80261AAA9B73D7187A3623941 /* PFApplication.h */; }; + E027ECC5E4F105AAA36189986EC6E3A3 /* PFACLState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C71D2C477F3399D3AD1EFD4F9A866DB3 /* PFACLState_Private.h */; }; + E0ACC93E5EA8EBCAB60DB71BEF5C1693 /* PFMutablePushState.h in Headers */ = {isa = PBXBuildFile; fileRef = 6925CDA0BCBCFF149619E0E29A35A3DF /* PFMutablePushState.h */; }; + E0AF7C8E6312712C90E14832F43A36B1 /* FBSDKSharingButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 2456CB46EED1A00126E3F3CD460B8E39 /* FBSDKSharingButton.h */; }; + E0B1DB6ADFD698DA60717627A946015E /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 993A21CE56E830A28F273FBEE71237B7 /* BFMeasurementEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + E0DD1B663B6833D565CFFCD640E525CA /* PFApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = A2151507558FB08E11B302809C4679D5 /* PFApplication.m */; }; + E1325F398C34BEA93CD9321ADFDB74BE /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 5217066CC765E38FC661DB8DD6390679 /* FBSDKButton.m */; }; + E1810D26E4FC22372B19063A3CEA743E /* PFObjectEstimatedData.h in Headers */ = {isa = PBXBuildFile; fileRef = C316ACA67E163041176B415E9B6CD9DD /* PFObjectEstimatedData.h */; }; + E1A1DEE33F2B917512C43A63737EB794 /* PFKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDADE6B03CF289BAE3BBAE839E354B5 /* PFKeychainStore.m */; }; + E1B74F3B3D829F2B22CBE7E78FED4A94 /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A7F97E5324275ECE8A2DB0BB11F4382 /* FBSDKCoreKit.h */; }; + E1CB2BA40EE5A3FE0F3317FE718EB52E /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A128707E58E6F7FD7C1268992BEFD2C5 /* FBSDKGameRequestFrictionlessRecipientCache.m */; }; + E213A5926DFA7791DCA2621FFC3C37EB /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AC0AE8CCB6A9AA9E28BD0E07607467 /* FBSDKTypeUtility.m */; }; + E273FCC56D19EBC9CB8F6C43CE0530C3 /* FBSDKLoginButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F598868B799F457865DCE7BA2139460 /* FBSDKLoginButton.h */; }; + E27A9C15F3D333CE44838FC62A07DCD0 /* PFFileState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B519F2BE42EA935C61C49611DFDE3111 /* PFFileState_Private.h */; }; + E30F6ED3C9433E9C224E934F86526DFB /* PFEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = D950227B3A59DCF16242E75918DC221C /* PFEventuallyQueue.m */; }; + E3ADD077F80CC1DD43ECE53F10FA20E6 /* PFMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 183A69494B93ED3701B335D4754CDE51 /* PFMacros.h */; }; + E3DAA3FD4277840AC125CD26EE72A61B /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = E39D48341F0F70D7E687A32C109136F4 /* FBSDKSettings.h */; }; + E501C70A3F56D91E2FD2E2135A1EC469 /* PFObjectFileCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 61EFCD5D7B14809002EECB4A73721FD4 /* PFObjectFileCoder.h */; }; + E51BE51D61BD89C6F13645CE46F0E87B /* PFDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB3B7F4B8D4BBB3AF4CFE483FA32924 /* PFDateFormatter.h */; }; + E56A71F9DCE03E0D3A23C186BC549398 /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 178E1657CE29AD06224A9CDAE2FF258D /* FBSDKGraphRequestConnection+Internal.h */; }; + E63BBF78198C05D1B345C98DE621F745 /* PFLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 73A9A2B2C84C359AC796978E67B9549D /* PFLocationManager.h */; }; + E75B88CF9855E0AE3BF0E5D2E262D062 /* PFObjectLocalIdStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 611ADAF0571A733561852B6D6D73901A /* PFObjectLocalIdStore.h */; }; + E7D61730878DC04A66A7F4C7F4E46A5D /* PFObject+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = 621186073ECC02598EFBC30E0D60F6A4 /* PFObject+Subclass.h */; }; + E8B019228FF069E4A1B1A07AB1AC2B3A /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = C61DC81C824307F112DA576783266C8B /* FBSDKBridgeAPIProtocolNativeV1.m */; }; + E8FE4AEF06AE75668686A795E35987E9 /* FBSDKShareOpenGraphContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 18A1F36B919BB4094769DA9141FA13B4 /* FBSDKShareOpenGraphContent.m */; }; + E95A35CACF79B5613E435793A12C3B12 /* FBSDKLikeControl+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F82DC5081D723743511B666306BC567 /* FBSDKLikeControl+Internal.h */; }; + E9AA2204628D9753A4A5EB1AC368ABF7 /* PFSQLiteStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = 671C93F34B25F0E2D951C18DF74FBE1C /* PFSQLiteStatement.h */; }; + E9D6CE3222E0BA71F2A6417D9096F495 /* PFURLSessionFileDownloadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 163419D898E7F370D581B4668E1A8F90 /* PFURLSessionFileDownloadTaskDelegate.h */; }; + EAEB1AFFEF75396CA12351C6D85EFD54 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = E6BB98CFA5D8A318326528AF33DF0BEC /* FBSDKURLOpening.h */; }; + EB0104D47F39544F712F75BB8B3DCEAE /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = A4AD7609287338B0BF2365DE061D4525 /* FBSDKMutableCopying.h */; }; + EB727D0AC97D5FF6566CE2138A73F2BF /* PFURLSessionDataTaskDelegate_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CA7489220D6C75107468852C7C0A0D03 /* PFURLSessionDataTaskDelegate_Private.h */; }; + EB863E147B32EC3C3B48045F1C88FA94 /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C0C4E8FFB7B46EAF4E88536FB6D05C9 /* FBSDKInternalUtility.h */; }; + EBF174B3526DA204542A9E7EDDA420C0 /* FBSDKLikeBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = D686AFA6A1B571DB6379798EEC41A114 /* FBSDKLikeBoxView.h */; }; + EC1AFF0BEAF765300970650A44FEC23E /* FBSDKLoginButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B12F7845B8017EA22B0E0EEF0B3B56A /* FBSDKLoginButton.m */; }; + EDC9073C2528E8A4C94343F4F3AB7FEF /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = FACF0C560352F6EA75B7CEE63BCB2793 /* Bolts.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + EE59ED1C743DB6D311ED072D908A63CD /* Parse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D93203DD4AFE0B35B1D82EF027EE2E3 /* Parse.m */; }; + EE600F90E43CBFE4E16F3AF3E3FCD24A /* PFPinningObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 89FA1CDB34FC6A266A0CB85649B29BAD /* PFPinningObjectStore.h */; }; + EE922301DF435B008CD36FBBEBCE2013 /* FBSDKLoginConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = C438E8586D1D6C401A986F82E9815270 /* FBSDKLoginConstants.h */; }; + EEA05A7718D37867B32667CBD6D71B51 /* PFPinningEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = DFD9CDB1EB349CA71F08124AACE22058 /* PFPinningEventuallyQueue.h */; }; + EEC92256C2CE4D6A71D7BEBCB59FA596 /* PFObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = CDFD024CF43A4AE623C0F5C4BDF1A912 /* PFObjectControlling.h */; }; + EF3BF6324C7416A119E5B4501ECA0243 /* FBSDKLikeControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 17D097F39B59CDB7D0438128AF2166D6 /* FBSDKLikeControl.h */; }; + EFC9DC66A1415A8C54AF1D0F6BCB5FF3 /* PFErrorUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = BDD8F3D065CF416DD92F0BB5DE7ADF01 /* PFErrorUtilities.h */; }; + EFF70AE917CE096804329270000B30CA /* PFPropertyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4991C6D1D1F1E90244D63C683726742E /* PFPropertyInfo.m */; }; + F01956C5A64FDF6066764555830C417B /* PFUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C4B1918D6C2748B708FBA9010D47C59 /* PFUserController.h */; }; + F039DF3F73126E9A4879323F015AEED5 /* PFRESTCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 11AECB6BCE686A69BECE7B35B96E410A /* PFRESTCommand.m */; }; + F04A246C6AF48B1F4E0AAA59AB263887 /* PFBase64Encoder.m in Sources */ = {isa = PBXBuildFile; fileRef = F1AF1463AFA83AA08F43ABCD39BF6FFB /* PFBase64Encoder.m */; }; + F078C36EAE42D363446021B148D01DBA /* PFMultiProcessFileLock.m in Sources */ = {isa = PBXBuildFile; fileRef = 2623540305AAB0140A287E371F61E55C /* PFMultiProcessFileLock.m */; }; + F0A8AEAA9CA105D255B698A63E916966 /* PFObjectSubclassingController.h in Headers */ = {isa = PBXBuildFile; fileRef = BD39191E0A16426B7F816A902E3ED1A2 /* PFObjectSubclassingController.h */; }; + F10A986E0C7986EEB092D621957E9A35 /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = FD462163039488768F58B0E9E27E6C43 /* FBSDKAccessTokenCache.m */; }; + F1D1E127FD70AF059457961F7B76C5E4 /* FBSDKAccessTokenCacheV3_21.h in Headers */ = {isa = PBXBuildFile; fileRef = D61E6CD1DA3114DB0F3E65D1FD361D36 /* FBSDKAccessTokenCacheV3_21.h */; }; + F1F29611141F8144413F5980024BCDE7 /* PFCachedQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 887593F0DEE8EFD5BDC3F6E96A7AF9C2 /* PFCachedQueryController.h */; }; + F2262E4714D619DFE966A76A7871E8C0 /* PFURLConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 037AABBBCA13696A48290F5766CC10B4 /* PFURLConstructor.h */; }; + F226BC6EF2861BE54054C5A0E1508BC0 /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 33370AFC4AF7E1BD533B19E83C86384C /* FBSDKKeychainStore.m */; }; + F22D730AF7C810CEC8F093F249E164B9 /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 96619AD29A8E305120281298BB9C2117 /* FBSDKMonotonicTime.h */; }; + F2AF88887A99A5F17A7C1006F78D0754 /* PFInstallation.h in Headers */ = {isa = PBXBuildFile; fileRef = B571E0FEC01D103B7151ECA4A256D9BE /* PFInstallation.h */; }; + F397C996AC39BBA073D32D6B15E6DB54 /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 08D5478EDC1981B91D3B2EE8042C45EE /* FBSDKShareOpenGraphValueContainer+Internal.h */; }; + F3E0AC37722D619B98C8F59B2F79F7EE /* PFAnonymousUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = BD01BA2811FF01AC721F5BD747249BB4 /* PFAnonymousUtils.h */; }; + F435C8D6A784B176C8528DC2C90E53D9 /* FBSDKURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = FBE9B1CE32D01F9E50A891EA8A4513A7 /* FBSDKURLConnection.m */; }; + F56C1A008897709131994E8408F6A3F6 /* PFPropertyInfo_Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = E0856F90FBBE3E20ACD8BC2DC4D7936A /* PFPropertyInfo_Runtime.m */; }; + F58687BA4A3BE0B69DF85C2CED642104 /* PFCurrentUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 994D05614D1EDF257C36EB9774BC9F9E /* PFCurrentUserController.h */; }; + F5B59A63E1A5DF6A06D293B7F6D6AAFC /* PFPinningEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 5015295E9D9B6BD11C70E85285B15C0C /* PFPinningEventuallyQueue.m */; }; + F5D3F433965CBC07523BF8B52A4CFD0D /* PFSQLiteDatabaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = E543FA1FAC8FAA14119B1F575299C209 /* PFSQLiteDatabaseController.h */; }; + F68578BB7CC74D30FAB7AE569B031F1F /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D9A54A95B795541832AC67B6AD76BE /* FBSDKProfilePictureView.h */; }; + F6B1B2E35E2A2F8DD6C246B5EDA59478 /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = E77CF83F87413203B1BFCA6ED0238DAC /* FBSDKLogger.h */; }; + F6B2BAA1EB859F859E12AD8449D6A172 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C97DF3988890CAEF8564FB45FDC77191 /* CoreGraphics.framework */; }; + F6F20F1577D517829A60E3C7524A3FB2 /* FBSDKShareUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 633199AB2B8E7F8DD87937157D733647 /* FBSDKShareUtility.h */; }; + F76B7A3DCC976CFA0702A75323201FFC /* ParseInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = D605E91ED4E689A9CCE862F2F178290D /* ParseInternal.h */; }; + F7A01ABECB87107C0D949ABBDA1A3F6A /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = ADC11EA5CCDB563EF63FECBB82F1809E /* FBSDKButton+Subclass.h */; }; + F7AA085613E075E8E5C9624051D73C40 /* PFQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = C9AFF24120C438CE8768D912A12FE069 /* PFQueryState.h */; }; + F7C0DBA5EF54C0DD2928E293D97F4317 /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = EB7DACF210125B509F4D6887A2B2D027 /* FBSDKApplicationDelegate.h */; }; + F80DA427D9B4EFC30775898E17772FBD /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = 21118A1801B385E14793771E3E2EB3DD /* FBSDKLogo.h */; }; + F8776BBAA1C27717D2D5D893A232EE64 /* PFPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8690C66AA184BBA764246933C2A4A354 /* PFPurchase.h */; }; + F97E8AEA2BF089005DDFA63D975BBB4A /* PFJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 42DC5A6ADC1D96FFC19B5446CC236649 /* PFJSONSerialization.m */; }; + F9B29220D46F9601E53EAC2960053F8E /* PFRESTAnalyticsCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F5F8B13BF4255AFCED026AC6B211C8 /* PFRESTAnalyticsCommand.h */; }; + F9E320C0B05AE66F5CD2C49B891CDAD7 /* PFPush.m in Sources */ = {isa = PBXBuildFile; fileRef = 02F00ACE2DBD4B299DE97EDC74368855 /* PFPush.m */; }; + FA16E9DD7604ECBFEA94DCE63C71F718 /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F767B7B637099477E518FC655BBFC0A /* FBSDKCrypto.h */; }; + FA492C9CAE233569C4240CBE669CCC18 /* PFProduct+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A13F1B5B057D95AEB199BD0AC1569C85 /* PFProduct+Private.h */; }; + FA655EAE8BB4D9B2C519FE4B4E257FC0 /* PFRESTObjectBatchCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F91500B4545DAA6F7241732589F388A /* PFRESTObjectBatchCommand.h */; }; + FAA724BD8C2E9812D6E8DB5AE75187FD /* PFCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = A2EE1BEF00118C9B86DED80D8E9F78E5 /* PFCloud.m */; }; + FAD2F3F163BE5C8ADB49265D238A0A88 /* PFNetworkCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B13CC16593686DB265856434BBFC4594 /* PFNetworkCommand.h */; }; + FC49C19B4A93B84BFCD85C648FFEDDB1 /* PFSQLiteDatabase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E6CC90C5C183BC584DAC5A06F3B7AB7 /* PFSQLiteDatabase_Private.h */; }; + FC741D511C021CB157AE1A996FCFB3D5 /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B122B4FE33C8E68A4C66FCFE7DC77AF7 /* FBSDKGraphRequest+Internal.h */; }; + FD874685C537E5A0F3A6CEF0752C4BE2 /* FBSDKGameRequestDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 590B72F042F883DF5EACA245CBD92A25 /* FBSDKGameRequestDialog.h */; }; + FE05CC6A81AEDA51F7B8BFFDAC3A3C33 /* PFRelationState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 53680AD3533A53E841E40B971C980E33 /* PFRelationState_Private.h */; }; + FE61940A58EB4C4C8D2559C46F7C0FE4 /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = EE07970368BAD29465F0F84B9B1BBF89 /* FBSDKServerConfiguration+Internal.h */; }; + FE76285FB50562EE5B0A1CE546E43737 /* PFACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = E1339B136ECA6BA809535B109308BBE8 /* PFACLState.m */; }; + FEE736B607EBEDA1D87C97B7A60C056C /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 174428FB6ED93BFAE36DC2D84B429C3F /* BFCancellationTokenSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + FFBEDB74DCA016F287B966EECFA6F909 /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = D94AA448EE0BB8B639F08787CE1F8480 /* FBSDKSettings.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0770907D46486483AE4C3B044B98D06B /* PBXContainerItemProxy */ = { + 0ABD3F822E95796533DB652545AF5E24 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 5D317E2C239D207CE072A2C1FE79D30A; + remoteGlobalIDString = E017A37450D026E9D888F3645A58C436; remoteInfo = Bolts; }; - 0A5B9E7B7B98C2DBA5746494B769F468 /* PBXContainerItemProxy */ = { + 10A4DB144F041A4C0CED43BED0C4C30D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 228A8DE101DBB992D8BCEC1E4FD9FFB7; - remoteInfo = FBSDKLoginKit; + remoteGlobalIDString = A510D2CCD10E1ACAF039EB42370EECE9; + remoteInfo = FBSDKCoreKit; }; - 104DD7E0D1D1835D2025676C12BB1E68 /* PBXContainerItemProxy */ = { + 1B7477DE69B98AC8F4EBB4F78AC36BB1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 7514A5BBFEA8726C550640239F35CF9F; + remoteGlobalIDString = A510D2CCD10E1ACAF039EB42370EECE9; remoteInfo = FBSDKCoreKit; }; - 2D3ADA04FE0BE10C39EE7B0F01C2D544 /* PBXContainerItemProxy */ = { + 29FA9B94F4438EAED67FA3A30ECF56D1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 7514A5BBFEA8726C550640239F35CF9F; - remoteInfo = FBSDKCoreKit; + remoteGlobalIDString = 7F26E33CF29862A805138C68D09DFFD9; + remoteInfo = Parse; }; - 5E12961A62642C4FC8A1B794B732A1CF /* PBXContainerItemProxy */ = { + 66720104A3642E5CC2B35163BABF39C6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 5D317E2C239D207CE072A2C1FE79D30A; + remoteGlobalIDString = E017A37450D026E9D888F3645A58C436; remoteInfo = Bolts; }; - 95BFFB90564EE4DDCCFB7443059C97A9 /* PBXContainerItemProxy */ = { + 806CFFFB7BFBB520E7EC73DACD16B3B9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = A510D2CCD10E1ACAF039EB42370EECE9; + remoteInfo = FBSDKCoreKit; + }; + 8246EE16CFB95F2B8C2F8EFCE4E5AEEB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 3BCD0D10E30222706C12D7C3102FA893; + remoteGlobalIDString = 8ADAD2264B57B834BB67514D536FB7E3; remoteInfo = FBSDKShareKit; }; - F24C2706B41E2A13115DC189DD607DE7 /* PBXContainerItemProxy */ = { + CA158329B7B558180C68B74E1C44ECC8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 7514A5BBFEA8726C550640239F35CF9F; - remoteInfo = FBSDKCoreKit; + remoteGlobalIDString = 87F49B89DFA2EDF98E9D8C6CB50976BF; + remoteInfo = FBSDKLoginKit; + }; + F89E89A6938252AB3114DB944787C18D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = E017A37450D026E9D888F3645A58C436; + remoteInfo = Bolts; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 002664079DFD68B6479C6AB0F0232180 /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = ""; }; - 00A650A22497211EEC0B83849E6FA811 /* FBSDKMessageDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessageDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h; sourceTree = ""; }; - 02865F67BBD6040226CBD1FDBA29F5A2 /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = ""; }; - 02A139F6C34566CB47C35B489480DD07 /* FBSDKShareLinkContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareLinkContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h; sourceTree = ""; }; - 03F85D35C27D1671D1F41676A47CD249 /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = ""; }; - 0536CFD0FB595B94B070BF9F406E1C6E /* FBSDKLoginConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginConstants.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h; sourceTree = ""; }; - 0575E3793244EA718CE0007D35E83183 /* FBSDKLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h; sourceTree = ""; }; - 066BD5A6D3EB9C54F7FF6EC096EE0937 /* FBSDKAppGroupJoinDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupJoinDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m; sourceTree = ""; }; - 06D6B35A2ACE17598D198FFFA920B997 /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = ""; }; - 074F24F3EBCC23154EFFEDC5D0444966 /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = ""; }; - 075B616D3A97272E3EADC31EADC87E6D /* BFCancellationTokenRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenRegistration.h; path = Bolts/Common/BFCancellationTokenRegistration.h; sourceTree = ""; }; - 08246BDCF7BCF08AB9C89B6EC23B82F1 /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView_Internal.h; path = Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h; sourceTree = ""; }; - 08CDE37FE6C9394E1AE63982CC68D3B0 /* FBSDKLoginKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginKit.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h; sourceTree = ""; }; - 09F5BB824C951F2045215ED0D7633774 /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = ""; }; - 0A255D4D45C82DE35FE87E3BC6774FD6 /* BFAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView.h; path = Bolts/iOS/BFAppLinkReturnToRefererView.h; sourceTree = ""; }; - 0B6A3059AD3E528BC8797D2FC76256C7 /* FBSDKURLConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h; sourceTree = ""; }; - 0C1EFFE13B9B3F21423A0453CAE574AA /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = ""; }; - 0CBBB605F74764838E88897E88411957 /* FBSDKShareVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideo.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h; sourceTree = ""; }; - 0FD55E74CE45585A17758C1059634836 /* FBSDKLoginKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginKit+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h"; sourceTree = ""; }; - 1276BE5A9F1D39331198580AAA4221EB /* libBolts.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBolts.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 12D8EA79EFC598C83745B7B3A0BA4184 /* FBSDKShareUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m; sourceTree = ""; }; - 12EBCA469BCC9A652E162B87170B3030 /* FBSDKSendButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSendButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h; sourceTree = ""; }; - 13FF75A9C1FC86B8BB017906047CD763 /* FBSDKLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h; sourceTree = ""; }; - 157A1552C1C00504C4E58FB57CF5F9EA /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = ""; }; + 00317664E706475AA83526A30F2CC298 /* FBSDKMessageDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessageDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h; sourceTree = ""; }; + 00AA046AB84056772E21CE43C551AAAE /* FBSDKLikeObjectType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeObjectType.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m; sourceTree = ""; }; + 01653FEFDB182B8F87FD9FA72A320331 /* PFInstallationIdentifierStore_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore_Private.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore_Private.h; sourceTree = ""; }; + 0175D7D3E9C314F1D72F51BB23D70137 /* PFPush.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPush.h; path = Parse/PFPush.h; sourceTree = ""; }; + 02460856BC3622AAE8075AE3E3FC91A1 /* PFInstallationConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationConstants.h; path = Parse/Internal/Installation/Constants/PFInstallationConstants.h; sourceTree = ""; }; + 028707090FDF1694249FBC4759635D31 /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = ""; }; + 02F00ACE2DBD4B299DE97EDC74368855 /* PFPush.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPush.m; path = Parse/PFPush.m; sourceTree = ""; }; + 0368EC0DFD738EA132782A0111A76AD6 /* PFProduct.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProduct.m; path = Parse/PFProduct.m; sourceTree = ""; }; + 037AABBBCA13696A48290F5766CC10B4 /* PFURLConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLConstructor.h; path = Parse/Internal/HTTPRequest/PFURLConstructor.h; sourceTree = ""; }; + 03E70A5437B075C14B5508D5BFCEEB28 /* PFHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHash.m; path = Parse/Internal/PFHash.m; sourceTree = ""; }; + 041D6BFA828C5A1E9512BEEFEC8F8283 /* BFAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkTarget.h; path = Bolts/iOS/BFAppLinkTarget.h; sourceTree = ""; }; + 042A2244DF3B5F5C519B2D9711580B50 /* FBSDKTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m; sourceTree = ""; }; + 0462A31AED64616A9EA07AE370D6A31B /* PFURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSession.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.m; sourceTree = ""; }; + 0468C80564B418DC62D6A06C75D47E20 /* Bolts.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bolts.xcconfig; sourceTree = ""; }; + 05274B2C48957E129DCADF7E7BB272C1 /* PFRESTCloudCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCloudCommand.m; path = Parse/Internal/Commands/PFRESTCloudCommand.m; sourceTree = ""; }; + 0556ABAC4F9D071C431F5D3711FDE1E9 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.debug.xcconfig; sourceTree = ""; }; + 055D613FCAF2DEE454B4D55F922EE234 /* FBSDKLikeButton+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeButton+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h"; sourceTree = ""; }; + 058D4B861CA7EDC7CCC4C7CA51C1EEB8 /* FBSDKBridgeAPICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPICrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m; sourceTree = ""; }; + 059EBF24A2AB19E48A0FE457DA504A78 /* PFMutableRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableRelationState.h; path = Parse/Internal/Relation/State/PFMutableRelationState.h; sourceTree = ""; }; + 05F2D63CC787EE0E5D2D0F0A73BAF4FB /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h; sourceTree = ""; }; + 068DBD6F64C945AE062AA96733338643 /* PFRESTObjectBatchCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectBatchCommand.m; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.m; sourceTree = ""; }; + 06B9B52AD9A3CF756611E7DAA22CE383 /* FBSDKLoginKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKLoginKit-Private.xcconfig"; sourceTree = ""; }; + 071B86E1C2AAD3B5091748D714423E5B /* PFLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLogger.m; path = Parse/Internal/PFLogger.m; sourceTree = ""; }; + 0773FB1AEB768DE82BEE27A777B659A1 /* PFAnonymousUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousUtils.m; path = Parse/PFAnonymousUtils.m; sourceTree = ""; }; + 07D32532031A1C89062D9473123DC3B2 /* PFObjectLocalIdStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectLocalIdStore.m; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.m; sourceTree = ""; }; + 07D7982BBC669B81B73D2DCE2C8D509E /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = ""; }; + 0817A1706D8DF4000848B118C9DEE924 /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = ""; }; + 0862B411E359C83CBD18E519CEF6D94C /* PFAnalyticsUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsUtilities.h; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.h; sourceTree = ""; }; + 08A5F9DDBE312E2B39D52155B7463DA8 /* PFCommandCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandCache.m; path = Parse/Internal/PFCommandCache.m; sourceTree = ""; }; + 08D5478EDC1981B91D3B2EE8042C45EE /* FBSDKShareOpenGraphValueContainer+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareOpenGraphValueContainer+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h"; sourceTree = ""; }; + 0A2D949315D757A2D3EB973286C11836 /* BFDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFDefines.h; path = Bolts/Common/BFDefines.h; sourceTree = ""; }; + 0A9B29CACB66253CAD26C692CD8B3617 /* PFCommandCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache.h; path = Parse/Internal/PFCommandCache.h; sourceTree = ""; }; + 0B5E087C87BE017FB0C382DC023EA4BE /* PFConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig.h; path = Parse/PFConfig.h; sourceTree = ""; }; + 0BC74937463C566796639512770F35CC /* PFPropertyInfo_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Private.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Private.h; sourceTree = ""; }; + 0BD744AF804A9F5355C68DFD41621893 /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = ""; }; + 0CFCFDB608A66C522ECD909465A4CDFD /* PFOfflineObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineObjectController.h; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.h; sourceTree = ""; }; + 0D30480B8CCEEB19D1DDA7BA271A3BD7 /* PFCurrentInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentInstallationController.h; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.h; sourceTree = ""; }; + 0DEDEA8104363CAC7A0792A26668948A /* FBSDKAppInviteContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h; sourceTree = ""; }; + 0EFB00044A9A987E6150AACA4DD28233 /* PFWeakValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFWeakValue.h; path = Parse/Internal/PFWeakValue.h; sourceTree = ""; }; + 0F7F02E2032B63EE2D9E989373528958 /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = ""; }; + 10135E293A34F093B13620EB7118F0EC /* FBSDKShareConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareConstants.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m; sourceTree = ""; }; + 10D75599B0B083CB8DA9B5FE832071BA /* FBSDKCoreKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKCoreKit-prefix.pch"; sourceTree = ""; }; + 10F366B82EB075ED6CFE0882D1B87BBA /* BFAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkNavigation.m; path = Bolts/iOS/BFAppLinkNavigation.m; sourceTree = ""; }; + 10FB754E7CB98525F95328FAD2C2D788 /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = ""; }; + 1164BD18616ED3B6D9FECCCA99F68888 /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = ""; }; + 117EE18D9FE3C52EFB3FC22C9026769B /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = ""; }; + 11895677202537B8F1FA94B44D23ACFD /* PFSessionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionController.h; path = Parse/Internal/Session/Controller/PFSessionController.h; sourceTree = ""; }; + 11AECB6BCE686A69BECE7B35B96E410A /* PFRESTCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCommand.m; path = Parse/Internal/Commands/PFRESTCommand.m; sourceTree = ""; }; + 11CEF84C21F6B2D0803987B5694F5F14 /* PFRESTSessionCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTSessionCommand.m; path = Parse/Internal/Commands/PFRESTSessionCommand.m; sourceTree = ""; }; + 11EFC989CAB132B6D48E25A50D67FBC9 /* PFRESTUserCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTUserCommand.m; path = Parse/Internal/Commands/PFRESTUserCommand.m; sourceTree = ""; }; + 1223A0C9FC36B8E26592679DCD48B8ED /* FBSDKSharing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharing.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h; sourceTree = ""; }; + 1247DC0FBCBA3414C6BFB88ECA3ADA8D /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = ""; }; + 12585EA0DD81C8296E71552C34E29D15 /* FBSDKLikeActionControllerCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionControllerCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h; sourceTree = ""; }; + 12D6C59ACE08BC3F7440AFA3074159F7 /* PFPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPin.m; path = Parse/Internal/LocalDataStore/Pin/PFPin.m; sourceTree = ""; }; + 13314419869A5B70A3A44B8807BA61CF /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = ""; }; + 139C145BDD122109F513A0E27ABD2054 /* FBSDKAppGroupContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h; sourceTree = ""; }; + 13F8602E2C5A9AB96363E1F7B1EFEED6 /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = ""; }; + 14615E83480751392A8DA9C806B52B9A /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = ""; }; + 152E9CDD4624FDDC8186CF180C5EFED9 /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = ""; }; + 157F73E38A3EEBACD7E9F322201C0A4A /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = ""; }; 15A529C27057E4A57D259CBC6E6CE49C /* Pods-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-acknowledgements.markdown"; sourceTree = ""; }; - 15C51B4DF1030238AF6D7649E82788B5 /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = ""; }; - 162FD6F0F18A8A4BD0969AEABB0CC78C /* FBSDKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h; sourceTree = ""; }; - 165375EAB1DC28C393658A5139DE1C57 /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = ""; }; - 16E3A15FF65AF85ABCD42065EAAAF029 /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = ""; }; - 17CB7B06981F44E91DD1BCD38D59103C /* FBSDKLikeButtonPopWAV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButtonPopWAV.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m; sourceTree = ""; }; - 18686D428534EFB249C7C2B72191F907 /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = ""; }; - 1A00FD05BA1219E73100D7E090F01F37 /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = ""; }; - 1A47608DFA1AF84E7AB9DCCF058C78F1 /* FBSDKShareConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareConstants.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m; sourceTree = ""; }; - 1BFC2409C44B8CD69A6C03A63F32F7CA /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = ""; }; - 1BFFBA3AC0C02108B7DA60345A7F020A /* FBSDKLoginConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginConstants.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m; sourceTree = ""; }; - 1C57395BC9AB5BA1544DDD898B1B9146 /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m; sourceTree = ""; }; - 1C9260CF6266A23A17B2C842C283E8D9 /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = ""; }; - 1D2C8E2D65E652FD1F3E1F311E40A83B /* FBSDKLikeControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeControl.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m; sourceTree = ""; }; - 1E20D900533A9FD00F2DC7A1D0797CA4 /* FBSDKLikeBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h; sourceTree = ""; }; - 1E67958ECD2A430829F342463DD96876 /* FBSDKSystemAccountStoreAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSystemAccountStoreAdapter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m; sourceTree = ""; }; - 1F11E9B9214843E4C733658288B46F50 /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = ""; }; - 1FB1726D1A37BF1BA4F347373EA1F055 /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkNavigation.h; path = Bolts/iOS/BFAppLinkNavigation.h; sourceTree = ""; }; - 2089FF7B2CC0E94D22CE2F8418713448 /* FBSDKLikeObjectType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeObjectType.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h; sourceTree = ""; }; - 20CCC4BC67725A4015A7A848B16ED671 /* BFDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFDefines.h; path = Bolts/Common/BFDefines.h; sourceTree = ""; }; - 210A8D5F5D9E18273157AA6FA4DF1616 /* BFAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkTarget.h; path = Bolts/iOS/BFAppLinkTarget.h; sourceTree = ""; }; - 21E2EC6DEE56644A5CEFC5F1DD108201 /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = ""; }; - 21EBC77612C0C02A1BCC39116437EA23 /* FBSDKLikeButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h; sourceTree = ""; }; - 2274A950D07549AC3A4D354548562493 /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = ""; }; - 228E810DDF4A3C7DA3A85A9E2D4A501B /* FBSDKShareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKShareKit-dummy.m"; sourceTree = ""; }; - 22BD1BB2D1ACDED2C3DA5FB714A15C33 /* FBSDKLoginButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginButton.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h; sourceTree = ""; }; - 22D35F8704195922C00F9CC8B9A3857E /* FBSDKCoreKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKCoreKit.xcconfig; sourceTree = ""; }; - 2309DCCA91F9883D4D79FEE1EF0099E8 /* Pods-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-dummy.m"; sourceTree = ""; }; - 23160D89AEAF98B6D83BB6EF3E05310E /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = ""; }; - 25C81CF10A1B913E3ECE5AE4BC865122 /* FBSDKBridgeAPICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPICrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m; sourceTree = ""; }; - 26339C8E6E8F5A145E0410B33CAEFC76 /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = ""; }; - 26DE794F5D70A3E6AA3856E8B437F8A1 /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = ""; }; - 26F24911943B64E9095819A493DC1EF7 /* BFAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkTarget.m; path = Bolts/iOS/BFAppLinkTarget.m; sourceTree = ""; }; - 279F862324C9CEB1307D4D63451084C5 /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = ""; }; - 28C6F74CFBBB5E9EDDE2A8BC53A897B4 /* BoltsVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BoltsVersion.h; path = Bolts/Common/BoltsVersion.h; sourceTree = ""; }; - 2A44558D108D044EF825B0B6D60677E9 /* FBSDKGameRequestContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m; sourceTree = ""; }; - 2B3F8F8D1757081C79044C13664E9E9A /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = ""; }; - 2BE2BA427F26BC5B28DC6D9605083C58 /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = ""; }; - 2D24677F8860BB996C1BE057AFDAE111 /* BFMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFMeasurementEvent.m; path = Bolts/iOS/BFMeasurementEvent.m; sourceTree = ""; }; - 2ED2A1728265E00DF4FCBB52224C6768 /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = ""; }; - 2FF996A5E210707A84723CEF66C72615 /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = ""; }; - 3121BA645E578829C4840BA0F5D2F2FB /* Bolts-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Bolts-Private.xcconfig"; sourceTree = ""; }; - 3196869736428BB66717FE7BFDA19965 /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = ""; }; - 32CA3C7FC2ED01D33FB4A2353CF242BA /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = ""; }; - 330D9CC147E914E18E2035F5B6441E5F /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = ""; }; - 35F0D9C7E4A77DC844319010E2664C26 /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = ""; }; - 3686DA8DE42E552A6664A3515098B2AC /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = ""; }; - 37D367937646E4E05AD9519B21B1F566 /* FBSDKAppGroupAddDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupAddDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h; sourceTree = ""; }; - 386BE61982EC743B3A128214EC83CFCD /* FBSDKAppInviteDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m; sourceTree = ""; }; - 38F0EE39E8FB99923B05946F733FCDE6 /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m; sourceTree = ""; }; - 398C73EFC085AF867FD191360CA9E692 /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = ""; }; - 39DDF6968CBE57929F3632EACEAB2610 /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = ""; }; - 3A8296B0778C8F6FF86E096891EC3330 /* FBSDKSystemAccountStoreAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSystemAccountStoreAdapter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h; sourceTree = ""; }; - 3ACFCDE2F85688257805323CB7568B51 /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = ""; }; - 3B46B41FC5464B48A5B5275DA0C6D3E5 /* FBSDKAppGroupJoinDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupJoinDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h; sourceTree = ""; }; - 3E96A05C4068F79754A471DFA28BAAA5 /* FBSDKSharing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharing.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h; sourceTree = ""; }; - 41CFAF1E1E62AE0A66D11ADAABFDD595 /* BFExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFExecutor.h; path = Bolts/Common/BFExecutor.h; sourceTree = ""; }; - 4224206215E4AE2302FDC96A58E94814 /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = ""; }; - 43170513EC0C6AEAEAE625758B1656D2 /* FBSDKLoginCompletion+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginCompletion+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h"; sourceTree = ""; }; - 44B2E26031F3FC70570B8D0355B9107A /* FBSDKShareUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h; sourceTree = ""; }; - 45B79D0956F6A1351479E569B774EE64 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.release.xcconfig; sourceTree = ""; }; - 4669EF085FC9747EEF39F5EB5BDA05E0 /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = ""; }; - 4722FCF8C978A7B204A55D0BF6F34B2D /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = ""; }; - 472EE8D03187469F99EC5B927D40BA24 /* BFCancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationToken.h; path = Bolts/Common/BFCancellationToken.h; sourceTree = ""; }; - 485C58584AC1DB1D243A5A57D0B31866 /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = ""; }; - 4864721E089588E27ACD5169546B84B7 /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = ""; }; - 48B7ACF3FD17DCB8BD8D200A9067137C /* FBSDKShareButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m; sourceTree = ""; }; - 4AE311A8C1894882C4A2DCB8EE2013E8 /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = ""; }; - 4B8E40E6E3F7E645FF915A402B90C5FC /* FBSDKSharePhoto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhoto.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m; sourceTree = ""; }; - 4C592CC7FBD1BF17DD1A484916AA7E85 /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = ""; }; - 4DCA2983B324CC477B5B90C4E6EF6536 /* FBSDKLikeActionControllerCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionControllerCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h; sourceTree = ""; }; - 4E2CB7869A71090D975E7A675914369C /* BFTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTask.h; path = Bolts/Common/BFTask.h; sourceTree = ""; }; - 4EADBDF1DFD27B8D0B09D789CE9B66A6 /* FBSDKLikeBoxBorderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxBorderView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m; sourceTree = ""; }; - 4ED0E1AC1869827BA4E401AEE8EF913D /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = ""; }; - 500B28CDDA39D831040A82A0735DA513 /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = ""; }; - 5111C7A616531A62E55A8FC7C6C72498 /* FBSDKShareDialogMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialogMode.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m; sourceTree = ""; }; - 51572F406F0AFA9A30C97AF6374A415C /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = ""; }; - 51C741025D484F6D07E6AD3AEA7291A5 /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = ""; }; - 53532C476C4D8D532ED66CDBF0F8657F /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h; sourceTree = ""; }; - 543A2D9E4374BEADC0C923E0AEFCE01A /* FBSDKLoginManagerLoginResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLoginResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m; sourceTree = ""; }; - 55931A99F538C33CD1E60CBBF28D7444 /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m; sourceTree = ""; }; - 5649742E243B8F68ED6ABBD16F3AD910 /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = ""; }; - 57875897B510F5382AD775C0A28734A2 /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = ""; }; - 592B052F02115EC6E41AC5B9CB79E1C6 /* BFAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkNavigation.m; path = Bolts/iOS/BFAppLinkNavigation.m; sourceTree = ""; }; - 5D27D517A8FA7ABC01A523D4CC9BF059 /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m; sourceTree = ""; }; - 5D42936E332BFFE8C7AEA60379CAA0CA /* FBSDKLoginManagerLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLogger.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h; sourceTree = ""; }; - 5D5414763D71E60BCDE8CE7AB80B2CC7 /* BFCancellationToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationToken.m; path = Bolts/Common/BFCancellationToken.m; sourceTree = ""; }; - 5E2C28D858D12923C51D6A59FF47FAFC /* FBSDKShareOpenGraphAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphAction.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m; sourceTree = ""; }; - 60D814E0C681012497F5E777A131D775 /* FBSDKLoginUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginUtility.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m; sourceTree = ""; }; - 6150512B0D0562C3F6C90F95463621B1 /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h; sourceTree = ""; }; - 62AA5AFD1D7438053DE8446F795803E7 /* FBSDKLoginKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKLoginKit-Private.xcconfig"; sourceTree = ""; }; - 63BF64F3A37FC48CF494725985B8BBE2 /* FBSDKShareError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareError.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m; sourceTree = ""; }; + 15A55E8ABB2D9F00C4D7E5B591503FC7 /* FBSDKSystemAccountStoreAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSystemAccountStoreAdapter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h; sourceTree = ""; }; + 1630835145A45B1AE1B5731F89DE41E1 /* FBSDKShareOpenGraphObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphObject.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m; sourceTree = ""; }; + 163419D898E7F370D581B4668E1A8F90 /* PFURLSessionFileDownloadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionFileDownloadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.h; sourceTree = ""; }; + 1660A7818BE658914CAD0B03854799AF /* Parse-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Parse-dummy.m"; sourceTree = ""; }; + 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 174428FB6ED93BFAE36DC2D84B429C3F /* BFCancellationTokenSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenSource.m; path = Bolts/Common/BFCancellationTokenSource.m; sourceTree = ""; }; + 175A1AE7E5CD7E7816C852D51957E66A /* FBSDKAppGroupAddDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupAddDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h; sourceTree = ""; }; + 178E1657CE29AD06224A9CDAE2FF258D /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = ""; }; + 17B1E05B566A858D61F1885B32B64AF7 /* BFAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink.h; path = Bolts/iOS/BFAppLink.h; sourceTree = ""; }; + 17D097F39B59CDB7D0438128AF2166D6 /* FBSDKLikeControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeControl.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h; sourceTree = ""; }; + 183A69494B93ED3701B335D4754CDE51 /* PFMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMacros.h; path = Parse/Internal/PFMacros.h; sourceTree = ""; }; + 183EE46003EBA5A7639B3EC6AC265522 /* PFURLSessionJSONDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionJSONDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m; sourceTree = ""; }; + 18A1F36B919BB4094769DA9141FA13B4 /* FBSDKShareOpenGraphContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m; sourceTree = ""; }; + 18DA781E03A5FEF86B0ADEA14D9E9E63 /* PFInstallationIdentifierStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationIdentifierStore.m; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.m; sourceTree = ""; }; + 191B469630ED03845A82C1836CBDDF7A /* PFRESTPushCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTPushCommand.h; path = Parse/Internal/Commands/PFRESTPushCommand.h; sourceTree = ""; }; + 19768BDA094897981754F254573AA405 /* PFSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession_Private.h; path = Parse/Internal/Session/PFSession_Private.h; sourceTree = ""; }; + 19ACD332B62F67CAEE524FC72B49A909 /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = ""; }; + 19BCCC920CFF89CFA88D6CDFD23D5044 /* FBSDKBoltsMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBoltsMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m; sourceTree = ""; }; + 19D77D49AB34F2DECC9C970A88D920DE /* PFUserFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserFileCodingLogic.m; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.m; sourceTree = ""; }; + 1A9CE0394A88D885474139DCEB0E2D2D /* PFCommandRunning.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunning.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.m; sourceTree = ""; }; + 1BCC4C05D309B44EE5FE3BCBCEF29FF9 /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = ""; }; + 1BCF6D36AAFB2D3DDD6EC1074B3664A8 /* FBSDKMessageDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessageDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m; sourceTree = ""; }; + 1C0C4E8FFB7B46EAF4E88536FB6D05C9 /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = ""; }; + 1C5C69B84F7FCD1066173E02E04716CE /* PFMutableQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableQueryState.h; path = Parse/Internal/Query/State/PFMutableQueryState.h; sourceTree = ""; }; + 1CC6FCED7A91E155259651DBC0B5262D /* Bolts-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Bolts-dummy.m"; sourceTree = ""; }; + 1D62A4BDE3836C5D2CBA3510FF1F7F03 /* PFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkActivityIndicatorManager.h; path = Parse/PFNetworkActivityIndicatorManager.h; sourceTree = ""; }; + 1D70B316B602A15A89952D1C307A9D90 /* FBSDKLikeButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h; sourceTree = ""; }; + 1DED363DFEDD926102B4745A17AA358A /* FBSDKGameRequestDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m; sourceTree = ""; }; + 1E6F860380815B6D4EE77B3B136F98BB /* PFPurchase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchase.m; path = Parse/PFPurchase.m; sourceTree = ""; }; + 1ED733F365A4B7276A584251EDEE13D3 /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = ""; }; + 1F15A1AA5F5C733E8B06847912B9D6C2 /* PFUserAuthenticationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserAuthenticationController.m; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m; sourceTree = ""; }; + 1F4BCC79A27562D8BCE24A7A8DDEB17E /* PFAlertView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAlertView.h; path = Parse/Internal/PFAlertView.h; sourceTree = ""; }; + 1F7C92F85D64501768D125A46270422E /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = ""; }; + 1F85984F43D0AE4CBF449F432430888C /* PFURLSessionDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.m; sourceTree = ""; }; + 2022F0B4ED20CCE9260B4E160964B9D8 /* PFCloudCodeController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloudCodeController.h; path = Parse/Internal/CloudCode/PFCloudCodeController.h; sourceTree = ""; }; + 21118A1801B385E14793771E3E2EB3DD /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = ""; }; + 2144DB6EA4F8D23EDA85ED9E54139327 /* FBSDKLoginTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h; sourceTree = ""; }; + 2198309D71CC7402D65F16A43667E437 /* BFAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLink.m; path = Bolts/iOS/BFAppLink.m; sourceTree = ""; }; + 2221BF7B944E3A928C21F480C8CCE6A6 /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFWebViewAppLinkResolver.h; path = Bolts/iOS/BFWebViewAppLinkResolver.h; sourceTree = ""; }; + 2278812C83EFF9DAF44E37BDB2014B3F /* FBSDKShareUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m; sourceTree = ""; }; + 2315D6063FC476611A25D1D15DDAD009 /* BFAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink_Internal.h; path = Bolts/iOS/BFAppLink_Internal.h; sourceTree = ""; }; + 23A2C3297FA5C533D7041CCE18A98771 /* PFQueryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryUtilities.h; path = Parse/Internal/Query/Utilities/PFQueryUtilities.h; sourceTree = ""; }; + 23F24FEF2A5474160AA9AD33E508D81E /* FBSDKAppInviteDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m; sourceTree = ""; }; + 2456CB46EED1A00126E3F3CD460B8E39 /* FBSDKSharingButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h; sourceTree = ""; }; + 24E017A99C1D0B48564CB40E5B2422A8 /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTaskCompletionSource.h; path = Bolts/Common/BFTaskCompletionSource.h; sourceTree = ""; }; + 25820261B6FF28709163579438BE7D8E /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h; sourceTree = ""; }; + 2590AA5D13156556306B9B8ED6AD2D74 /* PFOfflineQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryController.h; path = Parse/Internal/Query/Controller/PFOfflineQueryController.h; sourceTree = ""; }; + 25F9E5B91126E490040E4C142BE17D7C /* PFMutableACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableACLState.h; path = Parse/Internal/ACL/State/PFMutableACLState.h; sourceTree = ""; }; + 260655407F577D163F7D60F3E66F4979 /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = ""; }; + 26127A113C8DE5D855C538CEEE818097 /* PFPushUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushUtilities.h; path = Parse/Internal/Push/Utilites/PFPushUtilities.h; sourceTree = ""; }; + 2623540305AAB0140A287E371F61E55C /* PFMultiProcessFileLock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLock.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.m; sourceTree = ""; }; + 2701725284D1AF7F14D88A53E152A451 /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = ""; }; + 27330F2C59009D2CCAFFFB3332D30BE4 /* _FBSDKLoginRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKLoginRecoveryAttempter.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m; sourceTree = ""; }; + 279CEB44F83E8E0913B50FCE426C934D /* PFPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPin.h; path = Parse/Internal/LocalDataStore/Pin/PFPin.h; sourceTree = ""; }; + 279F58DF900F5886BE441B7000DE90AF /* FBSDKSendButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSendButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m; sourceTree = ""; }; + 27AAD21F178D79A8CCA228342BF2E4B2 /* PFObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectUtilities.m; path = Parse/Internal/Object/Utilities/PFObjectUtilities.m; sourceTree = ""; }; + 28039FB8496FC037CD115B9256200393 /* PFFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile.h; path = Parse/PFFile.h; sourceTree = ""; }; + 280B92F20BB7309511EA9EFC8DF7AB87 /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = ""; }; + 281C73120A87B602C8A007845677FA4B /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; + 282E7F3B29E9E0666DC2F0DD9E9BC196 /* PFReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFReachability.h; path = Parse/Internal/PFReachability.h; sourceTree = ""; }; + 284898C95718E6C68579D4FE3FE4B5BA /* PFObjectController_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController_Private.h; path = Parse/Internal/Object/Controller/PFObjectController_Private.h; sourceTree = ""; }; + 284C3412CE156CA93B1FBA2AB890B118 /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m; sourceTree = ""; }; + 28938733DD441FACFA78DCA04FC186C4 /* PFEventuallyQueue_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue_Private.h; path = Parse/Internal/PFEventuallyQueue_Private.h; sourceTree = ""; }; + 298BE9F2710D86C3196C6850E44C968A /* PFAnalytics_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics_Private.h; path = Parse/Internal/Analytics/PFAnalytics_Private.h; sourceTree = ""; }; + 2AF0D88FB66A75671BB0F620D0569032 /* FBSDKShareConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareConstants.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h; sourceTree = ""; }; + 2B302392664E4BE2747A482E82F65D97 /* PFQueryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryUtilities.m; path = Parse/Internal/Query/Utilities/PFQueryUtilities.m; sourceTree = ""; }; + 2B91208A301E53477B2B4CCCF31C14AB /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = ""; }; + 2CB8B17646606A4BA50309E5B9768E26 /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = ""; }; + 2D2B6CA8A26E1A54057C96806C92CBB2 /* PFSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSession.m; path = Parse/PFSession.m; sourceTree = ""; }; + 2DDD6BD25FFFCF1D98AD2C5B68EED6B5 /* BFURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL_Internal.h; path = Bolts/iOS/BFURL_Internal.h; sourceTree = ""; }; + 2E0D7EF42282EAA7CA554AA254D0F09A /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = ""; }; + 2EE36FA36A8C91403AF93CAE6EDA4A1B /* FBSDKLoginKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKLoginKit-dummy.m"; sourceTree = ""; }; + 2F4F3195CA169976EFA27638B5893094 /* PFFieldOperationDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperationDecoder.h; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.h; sourceTree = ""; }; + 2F9593DC6B40D6FF814A1A143B4F1192 /* PFDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDecoder.m; path = Parse/Internal/PFDecoder.m; sourceTree = ""; }; + 2FC77C0223C08FEC9F0BF799243D8F4C /* FBSDKLikeBoxBorderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxBorderView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h; sourceTree = ""; }; + 2FEB5063ADD4EFE8EFFAD97BD5C4D8CF /* PFCoreManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreManager.h; path = Parse/Internal/PFCoreManager.h; sourceTree = ""; }; + 306334793F42597A58A4BA17738769A8 /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m; sourceTree = ""; }; + 3065F7EE96D178C185A3FDEA83907DD7 /* PFACL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACL.m; path = Parse/PFACL.m; sourceTree = ""; }; + 30AEFC89FB4F53E87A31D13E8D1108FC /* PFSQLiteDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabase.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m; sourceTree = ""; }; + 316A644BD3E063F9A440F7F164000FB8 /* PFCurrentInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentInstallationController.m; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.m; sourceTree = ""; }; + 31A3C807180B3E37B45206DDBBC18002 /* FBSDKSharePhoto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhoto.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m; sourceTree = ""; }; + 31A715898F55241C3204E5E8C95A3963 /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h; sourceTree = ""; }; + 31B2F765DDFA36C75E4D5C6A387B8EF2 /* FBSDKShareOpenGraphValueContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphValueContainer.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h; sourceTree = ""; }; + 31B2F7D2FA080E49146AA5468986A493 /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = ""; }; + 32BA9072F15BE4F0B32F6D4CBC36210A /* BFAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererView.m; path = Bolts/iOS/BFAppLinkReturnToRefererView.m; sourceTree = ""; }; + 32CCE778F285747138A0725BD9D1B019 /* PFInstallationIdentifierStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.h; sourceTree = ""; }; + 32E03031E4F6C80A832AC26957F2BD66 /* PFCommandURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandURLRequestConstructor.m; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.m; sourceTree = ""; }; + 32F98A56A6F6C88E819D8937E418E312 /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkNavigation.h; path = Bolts/iOS/BFAppLinkNavigation.h; sourceTree = ""; }; + 33370AFC4AF7E1BD533B19E83C86384C /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = ""; }; + 33749F5083DAFA1A1E3A782C771A1569 /* PFQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQuery.m; path = Parse/PFQuery.m; sourceTree = ""; }; + 33AA341F9AFBBCA79F1F6E89A0571479 /* PFAnonymousUtils_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils_Private.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousUtils_Private.h; sourceTree = ""; }; + 33E340B3658DAFF8B960E00C876976B1 /* PFPushPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushPrivate.h; path = Parse/Internal/Push/PFPushPrivate.h; sourceTree = ""; }; + 34AD764CE1E3CBCA034D21A0B4EDFC69 /* PFSQLiteStatement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteStatement.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.m; sourceTree = ""; }; + 35E1B52EE3E2E3E51117F76E0A815856 /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = ""; }; + 35EAA5B4750A741B6F6FB63B5EF161F6 /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = ""; }; + 35F6EDACB4373C69CDD53204DEFA7B7F /* PFObjectPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectPrivate.h; path = Parse/Internal/Object/PFObjectPrivate.h; sourceTree = ""; }; + 36275B6CAF874F0A77AECB1185D90A1F /* FBSDKAccessTokenCacheV3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m; sourceTree = ""; }; + 3652FCED3441641775C14E6FD5BC06D1 /* PFSQLiteDatabaseResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseResult.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.h; sourceTree = ""; }; + 36C87C6A0D356709A30FBC0A3D13EA86 /* FBSDKLoginManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManager+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h"; sourceTree = ""; }; + 3708EBED7F7E311067B7CCF801145621 /* FBSDKAccessTokenCacheV4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV4.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m; sourceTree = ""; }; + 3723B220F505C587A732C7DDB88DA222 /* PFCommandResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandResult.h; path = Parse/Internal/PFCommandResult.h; sourceTree = ""; }; + 37E59CBA1B5E09F3A99384CDBF968875 /* FBSDKGameRequestContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h; sourceTree = ""; }; + 38A085262915DEFB26BD203072DD601B /* PFMutableRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableRelationState.m; path = Parse/Internal/Relation/State/PFMutableRelationState.m; sourceTree = ""; }; + 395A40E6ED210F9F655AE3ED00AB6CCE /* PFDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDateFormatter.m; path = Parse/Internal/PFDateFormatter.m; sourceTree = ""; }; + 396620E59D63358DFBB3310A8B068287 /* FBSDKShareDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m; sourceTree = ""; }; + 3A6FA7C694C6B40F59512851C968703D /* FBSDKShareVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideo.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m; sourceTree = ""; }; + 3AAB126C87821E766861FC4022C4E248 /* PFCategoryLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCategoryLoader.h; path = Parse/Internal/PFCategoryLoader.h; sourceTree = ""; }; + 3AB3B7F4B8D4BBB3AF4CFE483FA32924 /* PFDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDateFormatter.h; path = Parse/Internal/PFDateFormatter.h; sourceTree = ""; }; + 3ADDE928DDF753FD23E0044BC7A4C15B /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m; sourceTree = ""; }; + 3B0A0F292A52A1B2A4F4BBA76248ED29 /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = ""; }; + 3B38B03E5392BB79AE3F31D3346D7A1F /* FBSDKLoginManagerLoginResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManagerLoginResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h"; sourceTree = ""; }; + 3B567AC8F39B4A53D38DEA73D3B7AD4C /* FBSDKShareDialogMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialogMode.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h; sourceTree = ""; }; + 3CB9A90D939500BE1CEC8324CA790C85 /* BFAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererController.m; path = Bolts/iOS/BFAppLinkReturnToRefererController.m; sourceTree = ""; }; + 3D36D6965ABDC70928CD459FE8BC3B89 /* FBSDKBoltsMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBoltsMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h; sourceTree = ""; }; + 3DEDE777646928ECFED937EF0600521E /* FBSDKLoginKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginKit+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h"; sourceTree = ""; }; + 3E0284BB2426357ED603C689888DD262 /* PFObjectEstimatedData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectEstimatedData.m; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.m; sourceTree = ""; }; + 3E52BB93D7804BC50FDA99B9B59EB044 /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = ""; }; + 3E718F82F8FAFE696738E00DEA95B1BE /* FBSDKShareKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKShareKit-Private.xcconfig"; sourceTree = ""; }; + 3E85B0B9859FBCA9E74C55E1211ACE9A /* PFFieldOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperation.m; path = Parse/Internal/FieldOperation/PFFieldOperation.m; sourceTree = ""; }; + 3F782BE969B5510EDD8EC6903FD236BE /* PFProductsRequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProductsRequestHandler.m; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.m; sourceTree = ""; }; + 3F882D75C1CCE50E50D3030EB284FF29 /* FBSDKShareKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareKit+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h"; sourceTree = ""; }; + 405EFED49FCFF2D26196C7FDF11D924D /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = ""; }; + 40FC928384A8D2A945845B0EB6281D6C /* PFObjectFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCodingLogic.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.m; sourceTree = ""; }; + 41094B5E693D24C0D940E39D86E35B98 /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = ""; }; + 41CAAD93B8E8E5A2F8F2F8297FFE95AC /* PFPaymentTransactionObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPaymentTransactionObserver.m; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.m; sourceTree = ""; }; + 42DC5A6ADC1D96FFC19B5446CC236649 /* PFJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFJSONSerialization.m; path = Parse/Internal/PFJSONSerialization.m; sourceTree = ""; }; + 43A8D4366E635D41E68C80330D1D6303 /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = ""; }; + 43C58CE6DD6DD31ACA6BE1B0D257427E /* FBSDKMessengerIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessengerIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m; sourceTree = ""; }; + 442BC9945073FD644D98DC6A0BDCD0D1 /* PFSQLiteDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.h; sourceTree = ""; }; + 4490BD8F1600D89FDE4126EAF678E35C /* FBSDKAppGroupJoinDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupJoinDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m; sourceTree = ""; }; + 44AC0AE8CCB6A9AA9E28BD0E07607467 /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m; sourceTree = ""; }; + 44B6337C2B9832B7597DF729DE1D5419 /* PFEventuallyPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyPin.m; path = Parse/Internal/PFEventuallyPin.m; sourceTree = ""; }; + 45C436A6EE477BC43DFD0B674BD6F99C /* FBSDKAppGroupAddDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupAddDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m; sourceTree = ""; }; + 4612BDFDA5045AC0EE6F998D18D57F77 /* PFCurrentUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentUserController.m; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.m; sourceTree = ""; }; + 465813B1FEEE434D921E2CE4F2EE3F87 /* PFUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserController.m; path = Parse/Internal/User/Controller/PFUserController.m; sourceTree = ""; }; + 46C04343C64E76EC67462AD59BFCEAA3 /* PFPushChannelsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushChannelsController.m; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.m; sourceTree = ""; }; + 46CF33218A1E3A8EEBA12DF120858641 /* PFAsyncTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAsyncTaskQueue.h; path = Parse/Internal/PFAsyncTaskQueue.h; sourceTree = ""; }; + 46D403D3185FA87D018A34BBD7A76FC0 /* libBolts.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBolts.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 47A4C203E7867764F3E284630A0268FD /* FBSDKLikeBoxView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m; sourceTree = ""; }; + 47F6D008CDDC192BF994FAA0B8B41043 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; + 4812BF72649E3FB3CABBD5BEE63A124A /* PFFileController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileController.m; path = Parse/Internal/File/Controller/PFFileController.m; sourceTree = ""; }; + 48E607B7C98F48C601E0A8EADDB4199E /* PFSessionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionController.m; path = Parse/Internal/Session/Controller/PFSessionController.m; sourceTree = ""; }; + 492800396C7B66131BE664D3B6D93D67 /* PFUserConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserConstants.h; path = Parse/Internal/User/Constants/PFUserConstants.h; sourceTree = ""; }; + 4954F834F6DA1CCC4DE29F801E8E6A52 /* PFQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryController.h; path = Parse/Internal/Query/Controller/PFQueryController.h; sourceTree = ""; }; + 4991C6D1D1F1E90244D63C683726742E /* PFPropertyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo.m; sourceTree = ""; }; + 4AF90E9A2D2424F9A61BF41682FAB99A /* PFJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFJSONSerialization.h; path = Parse/Internal/PFJSONSerialization.h; sourceTree = ""; }; + 4BDEBE5111524FC2428EBDDD195197C8 /* PFSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession.h; path = Parse/PFSession.h; sourceTree = ""; }; + 4CAFF3BEDD8F0042F6050C5859DE2A0E /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = ""; }; + 4D1AB96A6A99AA8FC62B50D926542778 /* FBSDKLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m; sourceTree = ""; }; + 4D5060E67D251FD6C07A6C8127F60BC3 /* FBSDKShareButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m; sourceTree = ""; }; + 4D93203DD4AFE0B35B1D82EF027EE2E3 /* Parse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Parse.m; path = Parse/Parse.m; sourceTree = ""; }; + 4E2155DA6D3D13D23A2BE2F0CBAFE632 /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = ""; }; + 4E7104272D9C49EA366374D7591B69BC /* PFCloud.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloud.h; path = Parse/PFCloud.h; sourceTree = ""; }; + 4F58C09538CC735A9D6E6B2036FA8A43 /* FBSDKLikeDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeDialog.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h; sourceTree = ""; }; + 4F598868B799F457865DCE7BA2139460 /* FBSDKLoginButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginButton.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h; sourceTree = ""; }; + 4FEF83ED93FDFDDF9C57D5020D1F5EB6 /* PFRESTCloudCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCloudCommand.h; path = Parse/Internal/Commands/PFRESTCloudCommand.h; sourceTree = ""; }; + 5015295E9D9B6BD11C70E85285B15C0C /* PFPinningEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningEventuallyQueue.m; path = Parse/Internal/PFPinningEventuallyQueue.m; sourceTree = ""; }; + 51F1FF6BF9EE55B7EAA6650EA4BA611F /* PFACLPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLPrivate.h; path = Parse/Internal/ACL/PFACLPrivate.h; sourceTree = ""; }; + 5217066CC765E38FC661DB8DD6390679 /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = ""; }; + 5251FD21A849AFCBA7D4CFF66A674774 /* PFInstallation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallation.m; path = Parse/PFInstallation.m; sourceTree = ""; }; + 5292F6C0B6F153791486694C6FF45617 /* Bolts-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Bolts-Private.xcconfig"; sourceTree = ""; }; + 53680AD3533A53E841E40B971C980E33 /* PFRelationState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState_Private.h; path = Parse/Internal/Relation/State/PFRelationState_Private.h; sourceTree = ""; }; + 5587C60D4A8E123E1C1112734C3FD4A8 /* PFURLSessionCommandRunner.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionCommandRunner.m; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.m; sourceTree = ""; }; + 55D18B6A42464EFB5D7AC64708485ECF /* PFTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFTaskQueue.h; path = Parse/Internal/PFTaskQueue.h; sourceTree = ""; }; + 55EDB925355F44E5F4CD0589A4D15596 /* PFHTTPURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHTTPURLRequestConstructor.m; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.m; sourceTree = ""; }; + 567F41DC5BE80C8E3FAD7E42124F6A1D /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = ""; }; + 56DB0C886738CB142BFF8D6C68BDC124 /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = ""; }; + 5701B935661FE2B2D953052CE58E255F /* PFURLSessionDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.h; sourceTree = ""; }; + 578C1B0AB298F33880AF7743E63A09A6 /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = ""; }; + 57991A4FD66FFD7B27890292A9F881D8 /* PFHTTPRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPRequest.h; path = Parse/Internal/HTTPRequest/PFHTTPRequest.h; sourceTree = ""; }; + 58081944456413D3F0B0A33BCF9415F7 /* BFCancellationTokenRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenRegistration.h; path = Bolts/Common/BFCancellationTokenRegistration.h; sourceTree = ""; }; + 582D21818FB0E31756573C0CEAC6A8B4 /* PFPinningObjectStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningObjectStore.m; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.m; sourceTree = ""; }; + 583552D355C9486BC5473CB54B561686 /* PFObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectState.m; path = Parse/Internal/Object/State/PFObjectState.m; sourceTree = ""; }; + 59024F193667AEB7E18165A249D687E7 /* PFUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState.h; path = Parse/Internal/User/State/PFUserState.h; sourceTree = ""; }; + 590B72F042F883DF5EACA245CBD92A25 /* FBSDKGameRequestDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h; sourceTree = ""; }; + 5942BB14DE3948BBEF602394405639FE /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = ""; }; + 59E56D9E5ED9372FE9F67EE8F685C3DB /* PFOfflineObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineObjectController.m; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m; sourceTree = ""; }; + 5AE219E0D5DA9BEAD01E3B7B78A5B608 /* BoltsVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BoltsVersion.h; path = Bolts/Common/BoltsVersion.h; sourceTree = ""; }; + 5AFCCD081D365FBB6E1CF56D2CB3AF34 /* FBSDKLiking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLiking.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h; sourceTree = ""; }; + 5B1F0581CF330D76A0A76C63A642DD8E /* PFMulticastDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMulticastDelegate.h; path = Parse/Internal/PFMulticastDelegate.h; sourceTree = ""; }; + 5B5990F0ACF5AC91C7955E37265F1135 /* PFDevice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDevice.h; path = Parse/Internal/PFDevice.h; sourceTree = ""; }; + 5BF0534631608C66AF55C61D37D30B11 /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = ""; }; + 5C119E76B1739D418563786A3535A586 /* PFCategoryLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCategoryLoader.m; path = Parse/Internal/PFCategoryLoader.m; sourceTree = ""; }; + 5C9C1D9FAA0AB4875FD3710EBA7C5926 /* PFNullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNullability.h; path = Parse/PFNullability.h; sourceTree = ""; }; + 5CE057D872493F57174963C4F6B50DC4 /* PFMutablePushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutablePushState.m; path = Parse/Internal/Push/State/PFMutablePushState.m; sourceTree = ""; }; + 5E92731E3FF7A77ABF62EC441D94D3BF /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = ""; }; + 5EA792EC53DF7A8B5DA6169AC702E322 /* PFFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState.h; path = Parse/Internal/File/State/PFFileState.h; sourceTree = ""; }; + 5F06057C5FB4F34C78273C6773FE934A /* FBSDKLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m; sourceTree = ""; }; + 5F40CD0B016860B2BBC25B6EBBE9E284 /* PFAlertView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAlertView.m; path = Parse/Internal/PFAlertView.m; sourceTree = ""; }; + 5F767B7B637099477E518FC655BBFC0A /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = ""; }; + 5F9F7B355F7CD6C75C1B6D99445E1702 /* PFObjectSubclassInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassInfo.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.m; sourceTree = ""; }; + 5FB626B7387C990243FEC9C3854CBAD8 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 60BBB09A1AF30CA3EF9CB3294AA8A5F9 /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = ""; }; + 60D3605114807AAF6515D9AEE323E75B /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = ""; }; + 60FF9CABF05ED49D7A2F6C7414459E8F /* BFURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL.h; path = Bolts/iOS/BFURL.h; sourceTree = ""; }; + 610C8660482AAF6DF1ED051F56BA7AAE /* FBSDKAccessTokenCacheV3_21.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_21.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m; sourceTree = ""; }; + 611ADAF0571A733561852B6D6D73901A /* PFObjectLocalIdStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectLocalIdStore.h; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h; sourceTree = ""; }; + 61EC245B07BF5B2B8DAB7F7D13FF56EB /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; + 61EFCD5D7B14809002EECB4A73721FD4 /* PFObjectFileCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCoder.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.h; sourceTree = ""; }; + 61F77E151A38F4FE7CA5F80B9415A1AA /* PFInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationController.m; path = Parse/Internal/Installation/Controller/PFInstallationController.m; sourceTree = ""; }; + 621186073ECC02598EFBC30E0D60F6A4 /* PFObject+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFObject+Subclass.h"; path = "Parse/PFObject+Subclass.h"; sourceTree = ""; }; + 62433B094D7197450919571030C74B07 /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = ""; }; + 629A496B7FB2D5E3C39FF55136A1EEE4 /* FBSDKShareOpenGraphObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphObject.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h; sourceTree = ""; }; + 62F86AE15FCDD3BDB2B1432E3A970BAE /* PFCloudCodeController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloudCodeController.m; path = Parse/Internal/CloudCode/PFCloudCodeController.m; sourceTree = ""; }; + 633199AB2B8E7F8DD87937157D733647 /* FBSDKShareUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h; sourceTree = ""; }; 641AE05DD55E5E6AC1590CD7B4A18F97 /* Pods-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-resources.sh"; sourceTree = ""; }; - 67BBE784A2801F01F65EAF698A7A4C65 /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = ""; }; - 687D294ACB2FA8374173C7BB1EBD1D0B /* libFBSDKShareKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKShareKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 68926D1EF195CCE0C2B10D9C7EA6D834 /* FBSDKMessengerIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessengerIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h; sourceTree = ""; }; - 68E38006C5CB85E78FC2D6A4FA68A3D9 /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h; sourceTree = ""; }; - 6A029B649640C1353F893551FE5BEA9F /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = ""; }; - 6B2E189F86CFA538D17F926EC1C45AC6 /* FBSDKShareConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareConstants.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h; sourceTree = ""; }; - 6B58B12D0098350BFEF482A1274F3C4D /* FBSDKBridgeAPICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPICrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h; sourceTree = ""; }; - 6DF70211D471BD5D151D459A27B6B280 /* FBSDKAppGroupContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h; sourceTree = ""; }; - 6E2113F2BAA1CC96FE4BEBF42FE4C415 /* FBSDKAccessTokenCacheV3_21.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_21.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m; sourceTree = ""; }; - 6F5D9A88B97412C115AF0CFCA999F8C2 /* FBSDKLikeActionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionController.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h; sourceTree = ""; }; - 7021140A61A89A7065788EF7F6FE9A25 /* BFMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent.h; path = Bolts/iOS/BFMeasurementEvent.h; sourceTree = ""; }; - 7052F61CFA5DBBB1A1F2329AE83EF04A /* BFExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFExecutor.m; path = Bolts/Common/BFExecutor.m; sourceTree = ""; }; - 7106B5AFA24BAAD954C531BB2060F0F6 /* FBSDKLikeButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m; sourceTree = ""; }; - 7153F996BEDD033559675D14F2FB9FAA /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h; sourceTree = ""; }; - 72918635A11FE88E26388BB52C7A8F7A /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = ""; }; - 7325C6E7A2B3643DE8F984C17DF372D7 /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = ""; }; - 739A8FE1539F5F0119E36821784CB8EE /* FBSDKShareDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m; sourceTree = ""; }; - 74E292C58D36C37E72777B5729D63ECC /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = ""; }; - 7541C21C9026B7882A0CA33D03229333 /* FBSDKShareOpenGraphAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphAction.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h; sourceTree = ""; }; - 756E20E698838AA3F512B572C052F12A /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent_Internal.h; path = Bolts/iOS/BFMeasurementEvent_Internal.h; sourceTree = ""; }; - 7575CD22562E2CAF02FF831B37B73C85 /* FBSDKAccessTokenCacheV3_21.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_21.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h; sourceTree = ""; }; - 7647CEF4963EF72C881A0512B4A106FC /* BFAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererController.h; path = Bolts/iOS/BFAppLinkReturnToRefererController.h; sourceTree = ""; }; - 771E8EB6E927AC1AE9224E750AB1243B /* FBSDKBoltsMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBoltsMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m; sourceTree = ""; }; - 78B2C5646EBCB59F70AD7D01594943A9 /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = ""; }; - 78C57BD49A74C10B14C023D390C280E1 /* FBSDKAppInviteContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m; sourceTree = ""; }; - 7950AA08C2373C1D88DDA283D1C68C10 /* BFURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL.h; path = Bolts/iOS/BFURL.h; sourceTree = ""; }; - 79B5D96C4AD1BAD8C5A16095FE40D904 /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = ""; }; - 79C5E77BE16EE3DED6079065F72F3119 /* FBSDKBoltsMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBoltsMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h; sourceTree = ""; }; - 7A3FFE114934342A6293CAA369A5684A /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = ""; }; - 7A95DEF7BEDE8726F9906E6535257C80 /* FBSDKMessengerIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessengerIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m; sourceTree = ""; }; - 7B0A365A7833E9C747150256183939CF /* FBSDKLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m; sourceTree = ""; }; - 7B5BB805709FFB6878A293945C7DD6EB /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = ""; }; - 7CA71C2FA19AA4DF65FFE25558510C11 /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = ""; }; - 7EB290C8F6E8E6E8FC74EEFAD135259E /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFWebViewAppLinkResolver.m; path = Bolts/iOS/BFWebViewAppLinkResolver.m; sourceTree = ""; }; - 7EE2EF71BA2F3066A6E38404F4C6E5BB /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = ""; }; - 7F1DE529D81212E5BBBD7F41CE5139A8 /* FBSDKLoginKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKLoginKit-prefix.pch"; sourceTree = ""; }; - 7F322F6ACF68AF56AF896EB667A4EE12 /* FBSDKShareKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKShareKit-Private.xcconfig"; sourceTree = ""; }; - 804DC229C4E97BF5C05E79781E0F3F75 /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = ""; }; - 808CC2D89F4CAACB4CF99EDF5F5B3F24 /* FBSDKLoginUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginUtility.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h; sourceTree = ""; }; - 80A48EDE1E87DD0DC00057715A434A28 /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = ""; }; - 80E57FF8B4AA3C7BF27A67169E51EA08 /* FBSDKLoginButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginButton.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m; sourceTree = ""; }; - 8123DF664552E1E50D61750680BB63BA /* FBSDKShareOpenGraphObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphObject.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m; sourceTree = ""; }; - 841EA80357141FB191529428AA4841A0 /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = ""; }; - 84FC51CEFB7A3CAD3C1BD50FBFC5A2C2 /* FBSDKLikeDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeDialog.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h; sourceTree = ""; }; - 86B1B9D4698C595DBEBFF71FBA796D03 /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = ""; }; - 8725E71411518E68EEDB1C8286EE55BB /* FBSDKShareButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h; sourceTree = ""; }; - 8761049FB9D429C3A55046B90C71D88B /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = ""; }; - 88875A5B7AE372A96E9961E4551A6C07 /* FBSDKShareDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDefines.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h; sourceTree = ""; }; - 893AE4BEC580A446CE3ABAEAD7B53BAF /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = ""; }; - 897E8201CCE098369853632C2B3C6896 /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m; sourceTree = ""; }; - 8AAFA5AFB7771A50B2E04EE16097AE2E /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = ""; }; - 8AB293581B2CC2E15600E1001DBBA77B /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = ""; }; - 8C4122009F6CCD4958E84541DAFBE9B1 /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = ""; }; - 8C99BF979526D0E1A3D9A5677F3A18A6 /* FBSDKURLConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m; sourceTree = ""; }; - 8D104BC85E9A4726C0D1B381B549BABF /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = ""; }; - 8D7947DAFEA73B2AEDEE3110BE69C4C3 /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = ""; }; - 8DDFB93965E515FAEA6FB7A51182E549 /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = ""; }; - 8E12677D5DAFEE12EA3BA1E2055E89F8 /* FBSDKTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h; sourceTree = ""; }; - 8E629243AE4F868C8E75AC372D1DEC6A /* FBSDKLikeActionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionController.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m; sourceTree = ""; }; - 8F375DCDC3AF03A748BF6AE2DE8847AB /* FBSDKLoginCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginCompletion.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m; sourceTree = ""; }; - 8FA62565BBE412C30069502FF0CC51DF /* FBSDKLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m; sourceTree = ""; }; - 90A9CEFADF5414847EB52B6DB5FB52C1 /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = ""; }; - 90AC4DD014072A65EE77000860896177 /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = ""; }; - 9186B74312AC521E7BBF48001A87F4DB /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = ""; }; - 91D245F8CA4CBBB78697B00434888AAB /* FBSDKLoginTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h; sourceTree = ""; }; - 921B4A2DE5C84AE72BF2515994B661FA /* FBSDKSendButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSendButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m; sourceTree = ""; }; - 924C84F16E12DF079D8940F931F315CC /* FBSDKAppInviteDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h; sourceTree = ""; }; - 924FEBD3A9C3142529E09988A1AF5D31 /* FBSDKMessageDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessageDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m; sourceTree = ""; }; - 942B56873727FBE84A29CD08DC9DF625 /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = ""; }; - 94415A29F6A91534137FF604BCB14AB6 /* BFAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink_Internal.h; path = Bolts/iOS/BFAppLink_Internal.h; sourceTree = ""; }; - 958A88B9D72E9934EADC8C9179B0E455 /* BFCancellationTokenSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenSource.h; path = Bolts/Common/BFCancellationTokenSource.h; sourceTree = ""; }; - 9650DB5BE3E3803B05EEF2BA728FD08A /* FBSDKLikeBoxView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m; sourceTree = ""; }; - 9690B619FE2AAD1DC6925B4C2698A069 /* FBSDKLikeActionControllerCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionControllerCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m; sourceTree = ""; }; - 9A1979D48C487FA3EDA1159EF3852F20 /* FBSDKShareOpenGraphContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h; sourceTree = ""; }; - 9A98A92B293F049F7956A464E5A69C36 /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = ""; }; - 9B6EB12A21506DEFAD3D1AC35360E429 /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h; sourceTree = ""; }; - 9C68C4E5CCC43F6D12B543C207FF10C8 /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = ""; }; - 9CEC8B35C95959831EE1057B11322CE9 /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = ""; }; - 9D227F15B3C39C8F240799FC97C03FC7 /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = ""; }; - 9D28A8973855B42B7E0B94F7F2E7F679 /* FBSDKAccessTokenCacheV3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h; sourceTree = ""; }; - 9D663126B6E34DDA8860BAE880B56139 /* FBSDKAccessTokenCacheV3_17.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_17.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h; sourceTree = ""; }; - 9E2D8292478F266CEC5D9B4545F591A5 /* FBSDKLikeButton+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeButton+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h"; sourceTree = ""; }; - 9E6BD5EA50424CA24CA7148B1E4A106B /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = ""; }; - 9F23A8CFF0A5178FFE437F3900690E4D /* FBSDKLoginManagerLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLogger.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m; sourceTree = ""; }; - A06FF11F33DBF85168D2BFEA8F9CC0B6 /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h; sourceTree = ""; }; - A3F48D508CF9A089F6D2FBD3067DE053 /* FBSDKSharePhotoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhotoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h; sourceTree = ""; }; - A4A098339793E5BCA2444DB32B7612F4 /* FBSDKCheckmarkIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCheckmarkIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h; sourceTree = ""; }; - A52D1235E783D39988D2B6E470ADDA7F /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = ""; }; - A531906FF2DAF6D0F7F834076CBEC4C2 /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m; sourceTree = ""; }; - A6A11C49919F9BE6F3A03567D38BE5C1 /* FBSDKTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m; sourceTree = ""; }; - A71B981C41660472869BD0AAB04382C0 /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = ""; }; - A756AEA07B826EDE98ADCBC9C088F709 /* FBSDKAppInviteContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h; sourceTree = ""; }; - A7A6AB04D37A2DB4DEA04B11CAFFAB82 /* FBSDKLiking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLiking.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h; sourceTree = ""; }; - A7B8DF220992413B87518E5E85B18E32 /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h; sourceTree = ""; }; - A7D62A18D54FFB9AA33D848791F2B9A0 /* BFAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink.h; path = Bolts/iOS/BFAppLink.h; sourceTree = ""; }; - A876B3147441FD714C84B3F962F228FF /* FBSDKAccessTokenCacheV4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV4.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m; sourceTree = ""; }; - A8F6921FE57CF7CEB82F14DE7C7F1ADE /* FBSDKShareAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareAPI.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m; sourceTree = ""; }; - A944D2DC04BEF6207604DBB76FBB12AB /* BFAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkResolving.h; path = Bolts/iOS/BFAppLinkResolving.h; sourceTree = ""; }; - AB8EC144295EC6E09242AFA1DE8FBB93 /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = ""; }; - AC13EFDCE9B8FF9E1CAE5BEBCA2D7C17 /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = ""; }; - AC4DF8AF9C3B56874F7711E6F2D3096B /* BFURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFURL.m; path = Bolts/iOS/BFURL.m; sourceTree = ""; }; - AD6CB1A023BD68BC921696ADB8AB358D /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = ""; }; - ADA0E0868E9C002ACAA9EFBEAA6C7349 /* BFCancellationTokenSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenSource.m; path = Bolts/Common/BFCancellationTokenSource.m; sourceTree = ""; }; - ADD174C9CB223131CA86CA2808E20A95 /* FBSDKSharePhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhoto.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h; sourceTree = ""; }; - ADEFB298B7B2CC468183D78059BF9DF7 /* FBSDKCheckmarkIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCheckmarkIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m; sourceTree = ""; }; - AE1FBE172796B6EE66C9CE028F91A9D6 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; - AEE40C84F20C8B4855574E68B561F586 /* _FBSDKLoginRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKLoginRecoveryAttempter.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h; sourceTree = ""; }; - B0F5B126E4385B53E9C73775BBC036F5 /* FBSDKShareOpenGraphObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphObject.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h; sourceTree = ""; }; - B1C83C2BB6E10A770B424DDCA045A3DA /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = ""; }; - B2AFE071DB027CD94877612CFD3D006B /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = ""; }; - B35B1A6E0BC37C179ED9897DB54C66BD /* FBSDKCoreKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKCoreKit-prefix.pch"; sourceTree = ""; }; - B3806A1B94DBFDDC3984E1C3453BD094 /* FBSDKGameRequestFrictionlessRecipientCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestFrictionlessRecipientCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m; sourceTree = ""; }; - B3A5B22F878870CE770E0E9B97C28A59 /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = ""; }; - B3B6ED0B1490827E42BF16379DC889D8 /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = ""; }; - B41F54859F94464A7063BAD8F5DEEA40 /* Bolts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bolts.h; path = Bolts/Common/Bolts.h; sourceTree = ""; }; - B516688D51560D55EF42ADE2FB6AA4AE /* FBSDKShareOpenGraphValueContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphValueContainer.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h; sourceTree = ""; }; - B63D1AD2ED4371D377A70F2324E760DE /* FBSDKShareKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareKit+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h"; sourceTree = ""; }; - B6B4D633C955BC761C6FFA1EF8A98580 /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - B6C469BF1DF1A22E1734404841744335 /* FBSDKShareLinkContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareLinkContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m; sourceTree = ""; }; - B6CB010DF4304781A764957D945B27F3 /* FBSDKLikeBoxBorderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxBorderView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h; sourceTree = ""; }; - B6F3BB37BEED8098957948DDEC201160 /* FBSDKShareLinkContent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareLinkContent+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h"; sourceTree = ""; }; - B70E4B942E4F5FFDC75D62D5A35A3A59 /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m; sourceTree = ""; }; - B79196C5F88B102B98CC926632FA54C5 /* FBSDKLoginManagerLoginResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLoginResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h; sourceTree = ""; }; - B7D0AE422908565AD433E41A1778C632 /* FBSDKLikeControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeControl.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h; sourceTree = ""; }; - B84EE2CCC07E78723DCBA09471C30EFC /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = ""; }; + 6424FD719BE7F330C61F5BF5C1214B13 /* PFEncoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEncoder.m; path = Parse/Internal/PFEncoder.m; sourceTree = ""; }; + 64E64C3C1EBC666F4CF3A2893F8DB8F1 /* PFPropertyInfo_Runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Runtime.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h; sourceTree = ""; }; + 6510524988D56D1E9B8FC5C067C04B9A /* PFOfflineStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineStore.h; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.h; sourceTree = ""; }; + 6634E8525E51E4FF70C26E49F54493FC /* FBSDKShareDialogMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialogMode.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m; sourceTree = ""; }; + 66C1B850FF8F72C651A98CCB78DB0E42 /* PFMutableFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableFileState.h; path = Parse/Internal/File/State/PFMutableFileState.h; sourceTree = ""; }; + 671C93F34B25F0E2D951C18DF74FBE1C /* PFSQLiteStatement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteStatement.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.h; sourceTree = ""; }; + 6771448442ACE74CF1DA8462E84FE3C1 /* PFProductsRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProductsRequestHandler.h; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.h; sourceTree = ""; }; + 690DD19198EE8D5F0127BA29BE0469C5 /* FBSDKLoginUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginUtility.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h; sourceTree = ""; }; + 6925CDA0BCBCFF149619E0E29A35A3DF /* PFMutablePushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutablePushState.h; path = Parse/Internal/Push/State/PFMutablePushState.h; sourceTree = ""; }; + 6959DDF11EB0DBA886C8071FA6536544 /* PFMutableQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableQueryState.m; path = Parse/Internal/Query/State/PFMutableQueryState.m; sourceTree = ""; }; + 695B20B39C65A0F70AF9F9C9D54CDC02 /* FBSDKLikeButtonPopWAV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButtonPopWAV.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h; sourceTree = ""; }; + 6997FDD65FC84CBE9C0B1F06A436C49C /* PFKeyValueCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache_Private.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache_Private.h; sourceTree = ""; }; + 69B7181C6F142ED4F0C684EC984A9CFC /* FBSDKShareVideoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m; sourceTree = ""; }; + 6A19F56E0F8C29946A8608B76F3A49F4 /* BFTask+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "BFTask+Private.m"; path = "Parse/Internal/BFTask+Private.m"; sourceTree = ""; }; + 6A750B8C4CABD71000E78BA2523A93FE /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h; sourceTree = ""; }; + 6B12F7845B8017EA22B0E0EEF0B3B56A /* FBSDKLoginButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginButton.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m; sourceTree = ""; }; + 6C3130D692EFBD2F3FA5A396FF19871E /* FBSDKGameRequestContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m; sourceTree = ""; }; + 6C44C18F2ACA338C07999CAF4BDA46E4 /* PFMutableFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableFileState.m; path = Parse/Internal/File/State/PFMutableFileState.m; sourceTree = ""; }; + 6C943F70CC022BD45D5BC6C312618A47 /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h; sourceTree = ""; }; + 6C9D0DC652ECEB0AC847D646E33E3762 /* PFFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileState.m; path = Parse/Internal/File/State/PFFileState.m; sourceTree = ""; }; + 6D0BD04081C3A718EFB63F79C43FA7C0 /* PFPurchaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchaseController.h; path = Parse/Internal/Purchase/Controller/PFPurchaseController.h; sourceTree = ""; }; + 6DE4686D573E489CA8763A9AFF69E884 /* PFDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDecoder.h; path = Parse/Internal/PFDecoder.h; sourceTree = ""; }; + 6EB6555F0750836E4B76B0C08567E4F7 /* PFRESTPushCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTPushCommand.m; path = Parse/Internal/Commands/PFRESTPushCommand.m; sourceTree = ""; }; + 6EE4677B561DC6EB86FA8571CEE64AF1 /* PFPaymentTransactionObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.h; sourceTree = ""; }; + 6F5245D9C22CC21BB136BDC2AC4955ED /* FBSDKLoginManagerLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLogger.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h; sourceTree = ""; }; + 6F95877AC2E55BE1D53E55F4938D652C /* FBSDKAppGroupJoinDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupJoinDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h; sourceTree = ""; }; + 70137F33147D3F372FC44F6E67E63899 /* PFRESTCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand.h; path = Parse/Internal/Commands/PFRESTCommand.h; sourceTree = ""; }; + 70A2ACBCF37165DCF827CE708D6D4C9E /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; + 70AE4640E658912F8EA7EB2D84532E59 /* FBSDKAccessTokenCacheV3_17.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_17.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m; sourceTree = ""; }; + 71207309A4BF5422B709A558661FB9DD /* FBSDKGameRequestFrictionlessRecipientCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestFrictionlessRecipientCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h; sourceTree = ""; }; + 7127C42346F2C6E7C6852278A7D91999 /* PFRole.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRole.m; path = Parse/PFRole.m; sourceTree = ""; }; + 71B258E245FD3703F42B32A176062FDB /* PFAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAssert.h; path = Parse/Internal/PFAssert.h; sourceTree = ""; }; + 722DD6778B0569325E2893B96510468D /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = ""; }; + 729D6D653BE34D23C8D053B85CDD5E97 /* Parse_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse_Private.h; path = Parse/Internal/Parse_Private.h; sourceTree = ""; }; + 7312C6904E7BD6A83FF99B8A93855A01 /* PFMutableUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableUserState.h; path = Parse/Internal/User/State/PFMutableUserState.h; sourceTree = ""; }; + 73A2CAB8C0CB0FB451E60B3C35C23B4C /* FBSDKShareError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareError.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h; sourceTree = ""; }; + 73A9A2B2C84C359AC796978E67B9549D /* PFLocationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLocationManager.h; path = Parse/Internal/PFLocationManager.h; sourceTree = ""; }; + 73DFE94251B23509786E450651A48B90 /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h; sourceTree = ""; }; + 7431B6B9B7E1DFEF929BB54553B5676F /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 7442E5ADF75557556E523DE6A1E3BE3E /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m; sourceTree = ""; }; + 74A9C6AFAD90897450936AE0813C80E2 /* FBSDKShareKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKShareKit-prefix.pch"; sourceTree = ""; }; + 74F31D0EDF2CF7E7AAD77F746837D59A /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = ""; }; + 7591F734161565C8587390742A1ED783 /* PFGeoPoint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFGeoPoint.m; path = Parse/PFGeoPoint.m; sourceTree = ""; }; + 75CAD372C74E8529A061E6EB2818F982 /* FBSDKLikeDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeDialog.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m; sourceTree = ""; }; + 75D753CB65D28E2B39894FBCB517D0A3 /* PFOperationSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOperationSet.m; path = Parse/Internal/Object/OperationSet/PFOperationSet.m; sourceTree = ""; }; + 7631CDE057643A0E17ACCC4DAF8BBF13 /* PFPushManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushManager.h; path = Parse/Internal/Push/Manager/PFPushManager.h; sourceTree = ""; }; + 766CE3F27E11129F0EFA11C60884ECFC /* PFUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUser.h; path = Parse/PFUser.h; sourceTree = ""; }; + 7679ACE8F1FCAA1786579B614C35BAC0 /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = ""; }; + 76C526DD236D0ABDBBDEEE2285B501CC /* PFObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController.h; path = Parse/Internal/Object/Controller/PFObjectController.h; sourceTree = ""; }; + 7768B39DF4B1F1A7BFD05D306CAB1BDD /* PFFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileManager.m; path = Parse/Internal/PFFileManager.m; sourceTree = ""; }; + 778B2BB152B3C76A56D9A45B5E01AC3E /* PFCachedQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCachedQueryController.m; path = Parse/Internal/Query/Controller/PFCachedQueryController.m; sourceTree = ""; }; + 77E53941D7D46C602DD11044D3718DE6 /* PFFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileManager.h; path = Parse/Internal/PFFileManager.h; sourceTree = ""; }; + 7809BA66D5768E97BE3CB53E36ECAC4D /* PFRelation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelation.m; path = Parse/PFRelation.m; sourceTree = ""; }; + 7865EEF23330A2B2953AF4D3772DDB3F /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = ""; }; + 786CD905662A5B821B7FBD479582CBCD /* PFWeakValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFWeakValue.m; path = Parse/Internal/PFWeakValue.m; sourceTree = ""; }; + 7919FE3E34E4A4E8FA40E5EF771D417F /* PFURLSessionCommandRunner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.h; sourceTree = ""; }; + 7A3E0823C5C63DCBFFF51F3DAA930F7E /* FBSDKShareOpenGraphValueContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphValueContainer.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m; sourceTree = ""; }; + 7A7F97E5324275ECE8A2DB0BB11F4382 /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = ""; }; + 7B1E5184AF7DB35882426974C6E4F54D /* PFPushState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState_Private.h; path = Parse/Internal/Push/State/PFPushState_Private.h; sourceTree = ""; }; + 7B2175B028A34E81F071193394F373B5 /* PFAnonymousAuthenticationProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousAuthenticationProvider.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.h; sourceTree = ""; }; + 7B8C83CAC30A6E627FC4C625FE78664C /* PFObjectSubclassingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassingController.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.m; sourceTree = ""; }; + 7BD705FB6C7BC580C655F9EB6061B436 /* FBSDKShareVideoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h; sourceTree = ""; }; + 7C38CB3F5B5846CA53D031EA7F63E697 /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = ""; }; + 7C50076788F9D1661F6F38C60F88F2E1 /* FBSDKShareLinkContent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareLinkContent+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h"; sourceTree = ""; }; + 7C6A832BE98AC2513DCF0311F799732F /* Pods-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-dummy.m"; sourceTree = ""; }; + 7E4D2B2CBD42ED6EEDC6C535E15CDB74 /* FBSDKSharePhotoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhotoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m; sourceTree = ""; }; + 7E6CC90C5C183BC584DAC5A06F3B7AB7 /* PFSQLiteDatabase_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase_Private.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase_Private.h; sourceTree = ""; }; + 7EBCBD93200C3A10C234267D819C7E09 /* FBSDKBridgeAPICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPICrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h; sourceTree = ""; }; + 7FC21711E96478983E21D14A7248B1C0 /* PFCommandRunningConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunningConstants.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.m; sourceTree = ""; }; + 8018CD5321B09E6AA082BFED9506705E /* PFRESTObjectCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectCommand.m; path = Parse/Internal/Commands/PFRESTObjectCommand.m; sourceTree = ""; }; + 80376EBD200672DDD3336480C347B3E5 /* PFInternalUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInternalUtils.h; path = Parse/Internal/PFInternalUtils.h; sourceTree = ""; }; + 805A9C7F80B24B7D43C26816704C0E61 /* PFOfflineQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryController.m; path = Parse/Internal/Query/Controller/PFOfflineQueryController.m; sourceTree = ""; }; + 819F604AC9E7F0671221BC885460C546 /* FBSDKShareAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareAPI.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m; sourceTree = ""; }; + 81D6701BAB69FFA1D5E976AA8AE47D90 /* PFSQLiteDatabaseResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseResult.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.m; sourceTree = ""; }; + 81FCF70E549275BAA5747573A561C836 /* PFSessionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionUtilities.h; path = Parse/Internal/Session/Utilities/PFSessionUtilities.h; sourceTree = ""; }; + 8248A75015CEDF0E471BD2919921A0FA /* PFUserAuthenticationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationDelegate.h; path = Parse/PFUserAuthenticationDelegate.h; sourceTree = ""; }; + 82DD9C04E2048B93470902C1B226313D /* FBSDKShareDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDefines.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h; sourceTree = ""; }; + 831FFA276E384FF81912831665D2ACD1 /* PFConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConstants.h; path = Parse/PFConstants.h; sourceTree = ""; }; + 8350BE6813045E1E683091FF4C71539B /* PFUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserState.m; path = Parse/Internal/User/State/PFUserState.m; sourceTree = ""; }; + 83550267DCC8A2C04DD26DBA885C6379 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; + 836A8F74A8C94C26BFF6CE7C96CDBB29 /* PFAnalytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalytics.m; path = Parse/PFAnalytics.m; sourceTree = ""; }; + 84FAF19E9FE280B8C4A65B70B825CD58 /* PFDefaultACLController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDefaultACLController.h; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.h; sourceTree = ""; }; + 860483D9361D7525A3473BBEBF3BE90A /* FBSDKMessengerIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessengerIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h; sourceTree = ""; }; + 862C4A36A947B7610B400462C749359A /* PFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFNetworkActivityIndicatorManager.m; path = Parse/PFNetworkActivityIndicatorManager.m; sourceTree = ""; }; + 86858E70734ECDA22030AA8DC8467710 /* FBSDKLoginCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginCompletion.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m; sourceTree = ""; }; + 8690C66AA184BBA764246933C2A4A354 /* PFPurchase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchase.h; path = Parse/PFPurchase.h; sourceTree = ""; }; + 86A4C332D9CCAF6221388ED57676952A /* Bolts-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Bolts-prefix.pch"; sourceTree = ""; }; + 870C15BDFACBF06245D3E708FB7C0973 /* Bolts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bolts.h; path = Bolts/Common/Bolts.h; sourceTree = ""; }; + 871A5A6C8E91EC01AA7DE9ACD7C59412 /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = ""; }; + 87B2FEF6137A22119E9C4BF5999B87A1 /* PFURLSessionUploadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionUploadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.m; sourceTree = ""; }; + 880EC96BB6771023E9A8E3DF31FD9310 /* PFQueryState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState_Private.h; path = Parse/Internal/Query/State/PFQueryState_Private.h; sourceTree = ""; }; + 8827063A0A317BDA830C5A1CBEC3F03F /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = ""; }; + 8858E00C3002371F0FAF9914734C5FD8 /* PFAnonymousAuthenticationProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousAuthenticationProvider.m; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.m; sourceTree = ""; }; + 887593F0DEE8EFD5BDC3F6E96A7AF9C2 /* PFCachedQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCachedQueryController.h; path = Parse/Internal/Query/Controller/PFCachedQueryController.h; sourceTree = ""; }; + 88A728EC723990EFB69B861995E74ECC /* PFRESTObjectCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectCommand.h; path = Parse/Internal/Commands/PFRESTObjectCommand.h; sourceTree = ""; }; + 88EFF331F662FFFA9E548EA3F9CF8BD9 /* FBSDKShareOpenGraphAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphAction.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h; sourceTree = ""; }; + 8918E95EAEEA3883B0958070A6D63E5B /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m; sourceTree = ""; }; + 897397ACC5D65221928DE26C756E60EC /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = ""; }; + 89771FED47F0BB242E7B85A73CCEEE3A /* PFUserConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserConstants.m; path = Parse/Internal/User/Constants/PFUserConstants.m; sourceTree = ""; }; + 89833C3688D20D27A921CD52CBF04258 /* PFFileStagingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileStagingController.h; path = Parse/Internal/File/Controller/PFFileStagingController.h; sourceTree = ""; }; + 89BE488D5FB2949B04C3B2078CB54ACE /* PFRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState.h; path = Parse/Internal/Relation/State/PFRelationState.h; sourceTree = ""; }; + 89FA1CDB34FC6A266A0CB85649B29BAD /* PFPinningObjectStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningObjectStore.h; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.h; sourceTree = ""; }; + 8B229FDD88B02BA431226CF6F4C2C557 /* FBSDKAccessTokenCacheV3_17.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_17.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h; sourceTree = ""; }; + 8B4D99B79C54CE4DF16ED8030ABCA255 /* FBSDKLoginManagerLoginResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLoginResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m; sourceTree = ""; }; + 8B99F25C004D2B7579CC0ED827FDD52C /* PFCommandRunning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunning.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.h; sourceTree = ""; }; + 8C2DF1B80261AAA9B73D7187A3623941 /* PFApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFApplication.h; path = Parse/Internal/PFApplication.h; sourceTree = ""; }; + 8DFAA71E4A500F993C066198D2F6B141 /* FBSDKURLConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h; sourceTree = ""; }; + 8E36424AEF035DA22DC2D4053D625671 /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = ""; }; + 8EDAD3C1FD06B798BC04244B0271C9ED /* PFRESTFileCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTFileCommand.m; path = Parse/Internal/Commands/PFRESTFileCommand.m; sourceTree = ""; }; + 8F1129A22D3FF953177EDA6105319682 /* PFRESTFileCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTFileCommand.h; path = Parse/Internal/Commands/PFRESTFileCommand.h; sourceTree = ""; }; + 8F19786B895155DF0DBA51BE5462CDCA /* PFUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUser.m; path = Parse/PFUser.m; sourceTree = ""; }; + 8FCC6B0A52F1073866F5045115232A56 /* PFBase64Encoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBase64Encoder.h; path = Parse/Internal/PFBase64Encoder.h; sourceTree = ""; }; + 909527AB697DC5F602A8BEE088B28420 /* PFRESTSessionCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTSessionCommand.h; path = Parse/Internal/Commands/PFRESTSessionCommand.h; sourceTree = ""; }; + 90C4E8263D7D7018E90CB006AE5285EA /* BFAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView.h; path = Bolts/iOS/BFAppLinkReturnToRefererView.h; sourceTree = ""; }; + 91A20DEF4E05121BC0D3BA0B95057690 /* PFRESTQueryCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTQueryCommand.m; path = Parse/Internal/Commands/PFRESTQueryCommand.m; sourceTree = ""; }; + 91A3C081AA893B7C7E3C720BDD0B87AA /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = ""; }; + 9201ECF588FA8BB08DDBF3C8E4CD31A3 /* FBSDKCoreKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKCoreKit-Private.xcconfig"; sourceTree = ""; }; + 92219F3882F82E7756711A802C7F34EA /* PFEncoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEncoder.h; path = Parse/Internal/PFEncoder.h; sourceTree = ""; }; + 9278C0A565B9938261216A43EA0177CA /* FBSDKSystemAccountStoreAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSystemAccountStoreAdapter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m; sourceTree = ""; }; + 927A4EF5B8ED82ABCB709942CC242E06 /* PFFileStagingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileStagingController.m; path = Parse/Internal/File/Controller/PFFileStagingController.m; sourceTree = ""; }; + 92C9EF435D1A1B30A324A3863E2CB1CB /* PFCommandCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache_Private.h; path = Parse/Internal/PFCommandCache_Private.h; sourceTree = ""; }; + 92F1167BDB41D6566E2A2BD962A7D42F /* PFInternalUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInternalUtils.m; path = Parse/Internal/PFInternalUtils.m; sourceTree = ""; }; + 9390C92F1CE8467A8432506858B8172F /* FBSDKLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h; sourceTree = ""; }; + 93A5F67195E8183EE3FC797F98DC5956 /* BFCancellationToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationToken.m; path = Bolts/Common/BFCancellationToken.m; sourceTree = ""; }; + 93BC124A0CB4D829CA7468516B1F1877 /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = ""; }; + 945E0E4F9730840B5671665F5AE4F8C6 /* PFUserState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState_Private.h; path = Parse/Internal/User/State/PFUserState_Private.h; sourceTree = ""; }; + 94DCA4C48ED2DED1795550D3340FAB93 /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m; sourceTree = ""; }; + 95D6DC3AAED48153E982E7B6CE2ACBF2 /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = ""; }; + 96619AD29A8E305120281298BB9C2117 /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = ""; }; + 96DEB41D236F2F957F542803B7242485 /* PFObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObject.m; path = Parse/PFObject.m; sourceTree = ""; }; + 9764C114535D7CCF89F76AD383D000DF /* FBSDKLoginConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginConstants.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m; sourceTree = ""; }; + 9820DB142515E9FE68F1635778CDF436 /* PFObjectConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectConstants.m; path = Parse/Internal/Object/Constants/PFObjectConstants.m; sourceTree = ""; }; + 9826F9EF99C989F23C8760ECCF731EB0 /* ParseModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseModule.h; path = Parse/Internal/ParseModule.h; sourceTree = ""; }; + 983F35D2D34ACB272BCEEEC6040DDF33 /* PFObjectConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectConstants.h; path = Parse/Internal/Object/Constants/PFObjectConstants.h; sourceTree = ""; }; + 985038F14FE8FC23678ED1F7DDCF796A /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = ""; }; + 98FE22DC82B2E9780B8345DD11E25245 /* PFURLSessionUploadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionUploadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.h; sourceTree = ""; }; + 9908DE4518F24CDCE9DEBFBD8AAF7A5E /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = ""; }; + 991B6A74EED7A47CCB0295E345AE6B36 /* PFProduct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProduct.h; path = Parse/PFProduct.h; sourceTree = ""; }; + 992BF67D0574DEFDA7B5A5DA35227955 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreLocation.framework; sourceTree = DEVELOPER_DIR; }; + 993A21CE56E830A28F273FBEE71237B7 /* BFMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFMeasurementEvent.m; path = Bolts/iOS/BFMeasurementEvent.m; sourceTree = ""; }; + 994D05614D1EDF257C36EB9774BC9F9E /* PFCurrentUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentUserController.h; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.h; sourceTree = ""; }; + 997EE9B33EDCEA687B122C5D12D9A6E2 /* Parse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse.h; path = Parse/Parse.h; sourceTree = ""; }; + 99849B37667DE2EF2F45DD8C3C4E1188 /* FBSDKLoginUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginUtility.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m; sourceTree = ""; }; + 99AD28F109954C4513A2B73C3775C971 /* FBSDKShareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKShareKit-dummy.m"; sourceTree = ""; }; + 99BD86550F9CEEAFE247409114E419D3 /* PFReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFReachability.m; path = Parse/Internal/PFReachability.m; sourceTree = ""; }; + 9A4845D88BBD0E2BF9238DBAC29792FF /* PFInstallationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationPrivate.h; path = Parse/Internal/Installation/PFInstallationPrivate.h; sourceTree = ""; }; + 9AE3A1E847A23D89FFD2AA9F7A96D994 /* PFCommandRunningConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunningConstants.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h; sourceTree = ""; }; + 9AEC1733825D5A2ABD8D47EE37DC9FEC /* PFCurrentConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentConfigController.m; path = Parse/Internal/Config/Controller/PFCurrentConfigController.m; sourceTree = ""; }; + 9B08BB513ADF56CF82CFFF7B821CEAB4 /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = ""; }; + 9B56BC63A46E0C60E1F65E1E43FF3D2B /* FBSDKSendButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSendButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h; sourceTree = ""; }; + 9B5B7577FF23FD60A87A8C05EA2652E3 /* PFThreadsafety.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFThreadsafety.m; path = Parse/Internal/ThreadSafety/PFThreadsafety.m; sourceTree = ""; }; + 9BA9DC4FB2F1D4B30FF6F4D47961DEC2 /* BFExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFExecutor.m; path = Bolts/Common/BFExecutor.m; sourceTree = ""; }; + 9C247169039B75E0BFB4A9F4811F5A7D /* PFObjectFilePersistenceController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFilePersistenceController.h; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.h; sourceTree = ""; }; + 9C4B1918D6C2748B708FBA9010D47C59 /* PFUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserController.h; path = Parse/Internal/User/Controller/PFUserController.h; sourceTree = ""; }; + 9CB6162708CA811C045FC48276E533AC /* Parse-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Parse-prefix.pch"; sourceTree = ""; }; + 9F4B36F14A355821D7E2FB123300DDCD /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = ""; }; + 9F82DC5081D723743511B666306BC567 /* FBSDKLikeControl+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeControl+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h"; sourceTree = ""; }; + 9F91500B4545DAA6F7241732589F388A /* PFRESTObjectBatchCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectBatchCommand.h; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.h; sourceTree = ""; }; + A07F69889F21865BABF7494B7A375A53 /* FBSDKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h; sourceTree = ""; }; + A0AA88C65C641FBD65F890D8F0AB8026 /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = ""; }; + A0C91A1662596A108F805EA72954D11C /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = ""; }; + A0E7F189FF9BF3307F3E7363608DBD81 /* FBSDKShareOpenGraphContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h; sourceTree = ""; }; + A0F5F8B13BF4255AFCED026AC6B211C8 /* PFRESTAnalyticsCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTAnalyticsCommand.h; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.h; sourceTree = ""; }; + A128707E58E6F7FD7C1268992BEFD2C5 /* FBSDKGameRequestFrictionlessRecipientCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestFrictionlessRecipientCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m; sourceTree = ""; }; + A13F1B5B057D95AEB199BD0AC1569C85 /* PFProduct+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFProduct+Private.h"; path = "Parse/Internal/Product/PFProduct+Private.h"; sourceTree = ""; }; + A16681B3380FF1CBA89E6E2F276422AA /* FBSDKLikeButtonPopWAV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButtonPopWAV.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m; sourceTree = ""; }; + A1D336D237B3B30BCE04A43FD371473E /* FBSDKLikeActionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionController.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m; sourceTree = ""; }; + A1EE50D31E951A4463F312FC9BF343D5 /* FBSDKLikeActionControllerCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionControllerCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m; sourceTree = ""; }; + A2151507558FB08E11B302809C4679D5 /* PFApplication.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFApplication.m; path = Parse/Internal/PFApplication.m; sourceTree = ""; }; + A2B0C52AADDA52456790576546FCC99D /* PFPushChannelsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushChannelsController.h; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.h; sourceTree = ""; }; + A2EC2506D904AB39ACE6AC2490368BC6 /* PFCommandURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandURLRequestConstructor.h; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.h; sourceTree = ""; }; + A2EE1BEF00118C9B86DED80D8E9F78E5 /* PFCloud.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloud.m; path = Parse/PFCloud.m; sourceTree = ""; }; + A3A2CA15348284F196D703170DDC0118 /* FBSDKLoginCompletion+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginCompletion+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h"; sourceTree = ""; }; + A3F681072693C690033F636D1262450F /* FBSDKShareLinkContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareLinkContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m; sourceTree = ""; }; + A4776CCEC32BF011FC6F64F822052FDC /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = ""; }; + A4AD7609287338B0BF2365DE061D4525 /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = ""; }; + A4C16395183819CC55902C187BBF3588 /* PFObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState.h; path = Parse/Internal/Object/State/PFObjectState.h; sourceTree = ""; }; + A4FA890C6CF8DCC5C56BF4D23B3D4EC0 /* ParseManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseManager.m; path = Parse/Internal/ParseManager.m; sourceTree = ""; }; + A588ADAFB9768AED4B3BA282F6561A68 /* FBSDKLoginKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginKit.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h; sourceTree = ""; }; + A59F5C8E499F158AF013FD0A4D779E33 /* FBSDKLoginTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m; sourceTree = ""; }; + A6A972AC76383DCF37E7008206794C8F /* PFRESTConfigCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTConfigCommand.m; path = Parse/Internal/Commands/PFRESTConfigCommand.m; sourceTree = ""; }; + A9C899258C0EA110D85E7B48171B6432 /* _FBSDKLoginRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKLoginRecoveryAttempter.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h; sourceTree = ""; }; + A9EC065D9C7FD03E63A29BCF6F3A428C /* PFURLSessionJSONDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionJSONDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.h; sourceTree = ""; }; + AA3F835F4861D394CDA474F016B68DF3 /* PFObjectState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState_Private.h; path = Parse/Internal/Object/State/PFObjectState_Private.h; sourceTree = ""; }; + AA6155E47D6756DC20B676A1E6799081 /* PFQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQuery.h; path = Parse/PFQuery.h; sourceTree = ""; }; + AA723A00866BEEDAE1A8E099DFE0C01C /* FBSDKShareLinkContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareLinkContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h; sourceTree = ""; }; + AAD6D82FB30E66F727F7DF8841439C41 /* PFHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHash.h; path = Parse/Internal/PFHash.h; sourceTree = ""; }; + AADB13268569ACD428CA718A38894A49 /* PFAnalyticsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsController.m; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.m; sourceTree = ""; }; + AB89D35DE0F5C32E58B215882C35703A /* PFRESTUserCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTUserCommand.h; path = Parse/Internal/Commands/PFRESTUserCommand.h; sourceTree = ""; }; + ABD0C19409CB1F24FD1AFB365E60C99F /* FBSDKCheckmarkIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCheckmarkIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m; sourceTree = ""; }; + AC06B3B87B029CEA32581C7CEB6C05B0 /* BFAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkResolving.h; path = Bolts/iOS/BFAppLinkResolving.h; sourceTree = ""; }; + AC0B78FA41B62305BA8AB5B5C9C0EF51 /* PFURLSessionCommandRunner_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner_Private.h; sourceTree = ""; }; + ACC07E15FC2CA7D185BFF1F84D565D3F /* PFMultiProcessFileLockController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLockController.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.m; sourceTree = ""; }; + ADC11EA5CCDB563EF63FECBB82F1809E /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = ""; }; + ADC7A4E7F1BB2DAD519028D6DD15357F /* BFCancellationTokenSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenSource.h; path = Bolts/Common/BFCancellationTokenSource.h; sourceTree = ""; }; + ADEBB6BE4E6B7E95DBD5EA0F8198E2A6 /* FBSDKLikeActionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionController.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h; sourceTree = ""; }; + AE6E4E1A35E5A1578967DF2865545D99 /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = ""; }; + AE6F6B94AFE361FD0E18CCB6B75A0DE3 /* FBSDKSharePhotoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhotoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h; sourceTree = ""; }; + AE99A458700FBFED7B17F712111F6238 /* FBSDKSharingContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h; sourceTree = ""; }; + AEDADE6B03CF289BAE3BBAE839E354B5 /* PFKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeychainStore.m; path = Parse/Internal/PFKeychainStore.m; sourceTree = ""; }; + B02C63468CE0F7F2C99C5865466B0C19 /* PFObjectBatchController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectBatchController.h; path = Parse/Internal/Object/BatchController/PFObjectBatchController.h; sourceTree = ""; }; + B0708AC2D79933D1B00549B5767FE60C /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = ""; }; + B0E053D50F29084CF7D3D802F1517C70 /* FBSDKLoginManagerLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLogger.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m; sourceTree = ""; }; + B0F4434611B4FFD948A3FA3E177D8791 /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m; sourceTree = ""; }; + B0FEAD05D23D395F290529EE5DB73F6C /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = ""; }; + B122B4FE33C8E68A4C66FCFE7DC77AF7 /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = ""; }; + B13CC16593686DB265856434BBFC4594 /* PFNetworkCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkCommand.h; path = Parse/Internal/PFNetworkCommand.h; sourceTree = ""; }; + B152B331790608828B3D3221EF8BB3FA /* BFAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererController.h; path = Bolts/iOS/BFAppLinkReturnToRefererController.h; sourceTree = ""; }; + B1AF0EAA010A2243D3B652627909B1E0 /* FBSDKSharePhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhoto.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h; sourceTree = ""; }; + B1F9A5CCDA0552CD62CAD6A9C8018543 /* PFKeyValueCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeyValueCache.m; path = Parse/Internal/KeyValueCache/PFKeyValueCache.m; sourceTree = ""; }; + B212E7E5891AA33B35F56D833F69EF4D /* FBSDKAppGroupContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m; sourceTree = ""; }; + B22590D9365E880F05CFC1DC1066B067 /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h; sourceTree = ""; }; + B23B2A450DD924145ECEEBCAF9F9DE49 /* PFObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectController.m; path = Parse/Internal/Object/Controller/PFObjectController.m; sourceTree = ""; }; + B24C9F82AA8C193E9B823CF102B19AB2 /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = ""; }; + B2B529CF2F3BA08A19036180A7792FD5 /* BFTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTask.h; path = Bolts/Common/BFTask.h; sourceTree = ""; }; + B410DB6A268571CB00AE7C7B191AFC4F /* FBSDKLikeObjectType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeObjectType.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h; sourceTree = ""; }; + B49C8BAF9D69B1E6568421F922FD8F3A /* PFOfflineQueryLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryLogic.m; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m; sourceTree = ""; }; + B519F2BE42EA935C61C49611DFDE3111 /* PFFileState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState_Private.h; path = Parse/Internal/File/State/PFFileState_Private.h; sourceTree = ""; }; + B524B63009EE535EBA7977E07F2F824F /* PFRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelationState.m; path = Parse/Internal/Relation/State/PFRelationState.m; sourceTree = ""; }; + B5440ED9524EB35C55FB414229EDA986 /* PFRESTConfigCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTConfigCommand.h; path = Parse/Internal/Commands/PFRESTConfigCommand.h; sourceTree = ""; }; + B571E0FEC01D103B7151ECA4A256D9BE /* PFInstallation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallation.h; path = Parse/PFInstallation.h; sourceTree = ""; }; + B5B0B7503DC660F1E57F478887AA177E /* PFMutableACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableACLState.m; path = Parse/Internal/ACL/State/PFMutableACLState.m; sourceTree = ""; }; + B674C021D7D553529D1868DE6724ACF5 /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = ""; }; + B71C430B59468A7C97039EC40E16D99C /* libParse.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libParse.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B739AEBEEECA5F2836D6FDE87E7DAD2C /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m; sourceTree = ""; }; + B7F77AE462F767DFBBE7AE020EC34F77 /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = ""; }; + B8734BB39E4CEA7D82E5591EDFECB01E /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = ""; }; + B98993B6CB83A0F4F6836BA48CB8855E /* BFAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkTarget.m; path = Bolts/iOS/BFAppLinkTarget.m; sourceTree = ""; }; + B9D0ABFE846D51BADE9E86A6F8E48989 /* BFTask+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BFTask+Private.h"; path = "Parse/Internal/BFTask+Private.h"; sourceTree = ""; }; + BA3BE979C7C897206FAB369D2B6BE3BB /* PFOfflineStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineStore.m; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m; sourceTree = ""; }; BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - BAB751FF25D6FB93E08CE08011C84895 /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = ""; }; - BAD471AA47694836A5869F2C1DA93F88 /* FBSDKAccessTokenCacheV3_17.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_17.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m; sourceTree = ""; }; - BCB27FC0CB1D4381C0F19C75A5B1FBF4 /* FBSDKShareDialogMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialogMode.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h; sourceTree = ""; }; - BE01B3E5B1C99EAC2141DD5F8AB29249 /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = ""; }; + BAD153B7AF61CF6B398EB3FE2E5C2C7D /* PFACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState.h; path = Parse/Internal/ACL/State/PFACLState.h; sourceTree = ""; }; + BAEDA41B80675DA1345DAF6D8F0D4632 /* ParseModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseModule.m; path = Parse/Internal/ParseModule.m; sourceTree = ""; }; + BB64BAB52FC9332856CA17F5ECED7115 /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = ""; }; + BBE9E1940BF9CB7CB79EEC68691D7CC7 /* PFBaseState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBaseState.m; path = Parse/Internal/PFBaseState.m; sourceTree = ""; }; + BC26A40586455BB8DD6BA95710C3486D /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = ""; }; + BCC05D6904CB78C337D61B1211C5BC6F /* PFPurchaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchaseController.m; path = Parse/Internal/Purchase/Controller/PFPurchaseController.m; sourceTree = ""; }; + BD01BA2811FF01AC721F5BD747249BB4 /* PFAnonymousUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils.h; path = Parse/PFAnonymousUtils.h; sourceTree = ""; }; + BD030BCD3379D3A583CB4E1BF4757DAE /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = ""; }; + BD39191E0A16426B7F816A902E3ED1A2 /* PFObjectSubclassingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassingController.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.h; sourceTree = ""; }; + BDA465E9443323180CC1815D1C87C705 /* PFFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFile.m; path = Parse/PFFile.m; sourceTree = ""; }; + BDD02728E44328FBED3ACBA8A76F69A2 /* PFConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfig.m; path = Parse/PFConfig.m; sourceTree = ""; }; + BDD8F3D065CF416DD92F0BB5DE7ADF01 /* PFErrorUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFErrorUtilities.h; path = Parse/Internal/PFErrorUtilities.h; sourceTree = ""; }; + BE5646EAD6FEC69BB2B3C73D922BED8E /* PFObjectFilePersistenceController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFilePersistenceController.m; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.m; sourceTree = ""; }; + BE9F0035470C161A4516449709B0853A /* PFDefaultACLController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDefaultACLController.m; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.m; sourceTree = ""; }; BF59BC15D23E1E1912C8F334E7236813 /* Pods-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-acknowledgements.plist"; sourceTree = ""; }; - BFB535A8B4485F7D0DE50127BA902285 /* BFURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL_Internal.h; path = Bolts/iOS/BFURL_Internal.h; sourceTree = ""; }; - C03A3298B33198FAA942973584DF194D /* BFAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererController.m; path = Bolts/iOS/BFAppLinkReturnToRefererController.m; sourceTree = ""; }; - C082E4FF16E72FFD979AA487D6E60C1E /* FBSDKShareOpenGraphValueContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphValueContainer.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m; sourceTree = ""; }; - C0BF39E0E35CD7253485DDB425C68004 /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = ""; }; - C189A94CF246B97BF2987B6E1D8D19A2 /* FBSDKShareVideoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h; sourceTree = ""; }; - C1908C17C35F6446698AE8C14A7A62E7 /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m; sourceTree = ""; }; - C1C914E1A584C53FF0F2FF1FA95D8D97 /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = ""; }; - C241898523306A2F36BA957442AECE37 /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = ""; }; - C2BBB16B19727EFA6001D8DA5BFDAE63 /* FBSDKShareAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareAPI.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h; sourceTree = ""; }; - C2EF67EB1769993AA0E90FD5B40C0518 /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = ""; }; - C39716FEDA3645018E76AA83F2EC2FD6 /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m; sourceTree = ""; }; - C4610B513862FEFB3BF7F20A25825BC1 /* Bolts-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Bolts-prefix.pch"; sourceTree = ""; }; - C4AB5BA93BA69576C5A0A741C5004F05 /* FBSDKLikeControl+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeControl+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h"; sourceTree = ""; }; - C57529A9BA3C0D011FCAA5B9F68062A5 /* FBSDKShareOpenGraphContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m; sourceTree = ""; }; - C5971F3A2B0D25D55D3B109A7C6871E9 /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = ""; }; - C60FB16C403DE81404C5A483846D5521 /* FBSDKAccessTokenCacheV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV4.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h; sourceTree = ""; }; - C6C55AB8CC2B8BA526A40CE4AE0092BD /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = ""; }; - C7C691E993DE2424E1B336A86721F67E /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTaskCompletionSource.m; path = Bolts/Common/BFTaskCompletionSource.m; sourceTree = ""; }; - C7EE49040D26C6D8282770B424B78159 /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = ""; }; - C88A57B8E059E22B232E9A1336DCB6C3 /* FBSDKShareError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareError.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h; sourceTree = ""; }; - C9E21BE33CA995E3E18A1344838330D8 /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = ""; }; - CA34076F58016A8D344DF051264EC600 /* FBSDKLoginManagerLoginResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManagerLoginResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h"; sourceTree = ""; }; - CB2709395EFC37B68B84452B8B52D2FA /* FBSDKLoginTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m; sourceTree = ""; }; - CCAB63AD3B56ABA526AA33F4B072751D /* FBSDKShareOpenGraphValueContainer+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareOpenGraphValueContainer+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h"; sourceTree = ""; }; - CCF95C1DF1520BBB95BB1817504B8776 /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = ""; }; - CE22ABAF0BB23620853203C50BFB6759 /* FBSDKGameRequestDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h; sourceTree = ""; }; - CE51C4347F37793614B7D2FE3580EA38 /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h; sourceTree = ""; }; - CE853CD10ECD55C2CF0F9E4CC5C3118D /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = ""; }; - CFBCB363EDF2DA2195A76CD54C25DAA2 /* Bolts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Bolts.m; path = Bolts/Common/Bolts.m; sourceTree = ""; }; - D0206FEE967F07559593DB0A49437047 /* Bolts.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bolts.xcconfig; sourceTree = ""; }; - D04E665A901817D8EC9150B344EE57E3 /* FBSDKShareKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKShareKit.xcconfig; sourceTree = ""; }; - D0BD5813C82F4D56A56445BCBF651D1D /* FBSDKCoreKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKCoreKit-Private.xcconfig"; sourceTree = ""; }; - D2532E23A345066E6895AB5BFA257B95 /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = ""; }; - D2A60EBB4F7EE474CF1CED06DFEDBF08 /* FBSDKShareKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKShareKit-prefix.pch"; sourceTree = ""; }; - D2ABC77A4C6425C22BB540990BB5A163 /* Bolts-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Bolts-dummy.m"; sourceTree = ""; }; - D34AA74CF0863A8C0BD1947CC4821F52 /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = ""; }; - D598B036F0405E2C2F154346BADBAF5E /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = ""; }; - D6BA663394EED0BB2FE15D361CEF0CC0 /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m; sourceTree = ""; }; - D6E644B97F6CC42B51B503C2EF1D6C1A /* FBSDKLikeButtonPopWAV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButtonPopWAV.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h; sourceTree = ""; }; - D83F322AAF71062208A8ED107E20BF12 /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h; sourceTree = ""; }; - D9899AB1FB240FC4ECF430207E7A6B41 /* BFAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLink.m; path = Bolts/iOS/BFAppLink.m; sourceTree = ""; }; - DA70E0602DF174C01CBE4AAC4B2FDD83 /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = ""; }; - DB675133B40BF7554858A2DB108E8BFF /* FBSDKGameRequestContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h; sourceTree = ""; }; - DC219C5A4D9CF2E73465E5137C2B9ADC /* libFBSDKLoginKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKLoginKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - DC55CDB4CCC04F5A9F06E71FFE785F36 /* BFTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTask.m; path = Bolts/Common/BFTask.m; sourceTree = ""; }; - DD2D3EA91E3DEECA63A7E8D2F61622D0 /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = ""; }; - DEFB08AC2015F546E03A7EBE7B531F87 /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = ""; }; - DF75B30DC0865920AE9E1B19F32AD80B /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = ""; }; - DF9B508AC2E512E2315EE3967D33A86C /* FBSDKSharingContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h; sourceTree = ""; }; - E01F50F6336774FE25601285EEF01EE5 /* FBSDKAppGroupAddDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupAddDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m; sourceTree = ""; }; - E08C0F0B4B039E308A51F4526A22E667 /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h; sourceTree = ""; }; - E4742C855FF14D3374DADBC22D0B3626 /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = ""; }; - E523319DE2F5CBA2664EF1861CAE8385 /* FBSDKLikeObjectType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeObjectType.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m; sourceTree = ""; }; - E557465C83E744378BD9E99E95EE5177 /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = ""; }; - E5DE1E73EB9968D3497F35D73BDB6A94 /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTaskCompletionSource.h; path = Bolts/Common/BFTaskCompletionSource.h; sourceTree = ""; }; - E777FE88F6ABED3F476963B5B7D5C3C1 /* FBSDKAppGroupContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m; sourceTree = ""; }; - E88798669932F94A6C3A3DC258F34AE9 /* BFAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererView.m; path = Bolts/iOS/BFAppLinkReturnToRefererView.m; sourceTree = ""; }; - E89EBAE854490CCB0C5339A4813E9B51 /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = ""; }; - E8A41D002C9FB24CD74E5A6B80176BA2 /* FBSDKShareVideoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m; sourceTree = ""; }; - E9F08741DEF6A1D2B1AC19BDAA8B851A /* FBSDKShareKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareKit.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h; sourceTree = ""; }; - EA0A354774F149974049A4C2978DCC7F /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = ""; }; - EA48C5EE3CE4DF057217B99A5A223606 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.debug.xcconfig; sourceTree = ""; }; - EB1A78A2C977DABC4740C7FC08BBB2F7 /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = ""; }; - EC03B77FB6AEBB7B42B5DDA048688205 /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = ""; }; - ECC9B0749C18CB8AF78E670D8E76B4BC /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = ""; }; - ED3ABC29606CB6F9337BB302194076AB /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - ED654A2013434F730212951BE3CDF95A /* _FBSDKLoginRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKLoginRecoveryAttempter.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m; sourceTree = ""; }; - EE77E56FA0FD8571B90F7293F8A6CA4E /* FBSDKLoginCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginCompletion.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h; sourceTree = ""; }; - EE99AA22341E1A198DE866465C3C3091 /* FBSDKGameRequestFrictionlessRecipientCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestFrictionlessRecipientCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h; sourceTree = ""; }; - EF36FE5802B718C77F58F0A55F941FAD /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = ""; }; - F0BE2E93E589BAAD87094107404458C4 /* FBSDKSharePhotoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhotoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m; sourceTree = ""; }; - F0F21F7A00DAFE2805355B155B9130E2 /* FBSDKGameRequestDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m; sourceTree = ""; }; - F25867AF7B57AE5CAFF6A7A97011505E /* FBSDKLoginKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKLoginKit-dummy.m"; sourceTree = ""; }; - F2CC45F6A7650A6695B67A7054C43C61 /* FBSDKSharingButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h; sourceTree = ""; }; - F3AA812465C239C11602D1E90810FE4A /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = ""; }; - F406E6A99876CF2EAA128E3273EA1168 /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = ""; }; - F782EBF11CD0B444B301A6D62DB3982D /* FBSDKAccessTokenCacheV3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m; sourceTree = ""; }; - F7A0AE448F9342C2274615F8B33139C7 /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFWebViewAppLinkResolver.h; path = Bolts/iOS/BFWebViewAppLinkResolver.h; sourceTree = ""; }; - F970F2C40DCD372EE55CFFE828E80CAE /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m; sourceTree = ""; }; - FB1C07F9FFF2FDF41760BCFD01D6DBD2 /* FBSDKLoginManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManager+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h"; sourceTree = ""; }; - FBD42041AE768C9FC5ED4984163A2D43 /* FBSDKShareVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideo.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m; sourceTree = ""; }; - FD3AC0887DD1FC60BAE9387F80523E6B /* FBSDKLoginKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKLoginKit.xcconfig; sourceTree = ""; }; - FD8213BF5D4E3A775DE2CDFE95B11D27 /* FBSDKShareDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h; sourceTree = ""; }; - FE3F695A6D43B329CB5E37EDF6B476D5 /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = ""; }; - FF2AA4084EE7DD2A0CE09C7DE485C764 /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h"; sourceTree = ""; }; - FFDC8DE8F321A7C08F3D315635B2B056 /* FBSDKLikeDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeDialog.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m; sourceTree = ""; }; + BFBAFABD8F6AE7D797021761B45B56BF /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent_Internal.h; path = Bolts/iOS/BFMeasurementEvent_Internal.h; sourceTree = ""; }; + C038B21BF92B30435A80432688533E05 /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = ""; }; + C04006B24886DEDB86D8AA796A957464 /* PFMultiProcessFileLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLock.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.h; sourceTree = ""; }; + C0625656720CAD50DBE306C724DADC69 /* PFFieldOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperation.h; path = Parse/Internal/FieldOperation/PFFieldOperation.h; sourceTree = ""; }; + C2398FB910D7AF39F3C66C51408D84D5 /* PFURLSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession_Private.h; sourceTree = ""; }; + C316ACA67E163041176B415E9B6CD9DD /* PFObjectEstimatedData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectEstimatedData.h; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.h; sourceTree = ""; }; + C394ED14B3FB109EF6BFAA2414984518 /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = ""; }; + C438E8586D1D6C401A986F82E9815270 /* FBSDKLoginConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginConstants.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h; sourceTree = ""; }; + C4850C360C9673CBE290A0841176FD78 /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m; sourceTree = ""; }; + C4D9795941DB7420B09A2A295B29310C /* PFConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfigController.m; path = Parse/Internal/Config/Controller/PFConfigController.m; sourceTree = ""; }; + C5C45B89F5B6C19209EDAD31A79E371D /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = ""; }; + C61DC81C824307F112DA576783266C8B /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = ""; }; + C68D370A7D08931EEB8E723D7B8F35E9 /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = ""; }; + C69C77ABF5CBDE6FAEA65F67DC68806A /* PFCurrentConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentConfigController.h; path = Parse/Internal/Config/Controller/PFCurrentConfigController.h; sourceTree = ""; }; + C6E3A3B7C704403CB94D4FEFBBEEF1B0 /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = ""; }; + C6FDA527EF165EC2D2CA5E44A20F1D00 /* PFAsyncTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAsyncTaskQueue.m; path = Parse/Internal/PFAsyncTaskQueue.m; sourceTree = ""; }; + C71D2C477F3399D3AD1EFD4F9A866DB3 /* PFACLState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState_Private.h; path = Parse/Internal/ACL/State/PFACLState_Private.h; sourceTree = ""; }; + C7971F18FB6165E37A0B729145BD2CE0 /* FBSDKShareDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h; sourceTree = ""; }; + C7984134808FC31A9208D31DFE42B6AF /* FBSDKTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h; sourceTree = ""; }; + C839088F1464046F38572AEA46F43237 /* PFCoreManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCoreManager.m; path = Parse/Internal/PFCoreManager.m; sourceTree = ""; }; + C923F6FD789CB2C9F384405DEACE388F /* ParseManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseManager.h; path = Parse/Internal/ParseManager.h; sourceTree = ""; }; + C934943D7A25BDE5AA3C99D0D0E2D06A /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = ""; }; + C97DF3988890CAEF8564FB45FDC77191 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + C9AFF24120C438CE8768D912A12FE069 /* PFQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState.h; path = Parse/Internal/Query/State/PFQueryState.h; sourceTree = ""; }; + C9E4838EB0ACA07B884CA93AFAD23B44 /* FBSDKLikeBoxBorderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxBorderView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m; sourceTree = ""; }; + CA713D1D956929857B5573815E8B700A /* PFFileDataStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileDataStream.m; path = Parse/Internal/File/FileDataStream/PFFileDataStream.m; sourceTree = ""; }; + CA7489220D6C75107468852C7C0A0D03 /* PFURLSessionDataTaskDelegate_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate_Private.h; sourceTree = ""; }; + CAE37334F4838571A1A3347478DDBD93 /* FBSDKLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h; sourceTree = ""; }; + CC1532E55E3DE39D552270CFBD839CF6 /* PFPaymentTransactionObserver_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver_Private.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h; sourceTree = ""; }; + CCEC1C29226031242E5C3329E7913386 /* PFObjectBatchController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectBatchController.m; path = Parse/Internal/Object/BatchController/PFObjectBatchController.m; sourceTree = ""; }; + CD6F1D91AE76D53924F066A9E871A4E9 /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = ""; }; + CD7F12FF98C15CB2FB25F62797543E56 /* PFDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDataProvider.h; path = Parse/Internal/PFDataProvider.h; sourceTree = ""; }; + CD984CB60274EFFD2FC6F488DBADE377 /* PFEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue.h; path = Parse/Internal/PFEventuallyQueue.h; sourceTree = ""; }; + CDD73DC7AE87074EAEDF09FACACF5104 /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = ""; }; + CDFD024CF43A4AE623C0F5C4BDF1A912 /* PFObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectControlling.h; path = Parse/Internal/Object/Controller/PFObjectControlling.h; sourceTree = ""; }; + CE5A89927105D9819003581D0C8DD06F /* PFConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfigController.h; path = Parse/Internal/Config/Controller/PFConfigController.h; sourceTree = ""; }; + CE802EE1D42445FFBD68FDC5F1B53019 /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = ""; }; + CF322B34A45C7374C6ACB86C793A0977 /* FBSDKShareAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareAPI.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h; sourceTree = ""; }; + CF8B294E2A7B44762772B83EB5F37585 /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = ""; }; + CF97A4EB4D2F59FF601E2BE734C11228 /* FBSDKLoginKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKLoginKit-prefix.pch"; sourceTree = ""; }; + D03015A70D44B37A63401618F5BAE8D3 /* PFFileController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileController.h; path = Parse/Internal/File/Controller/PFFileController.h; sourceTree = ""; }; + D1061A294A0D25A3BFAB4FF7B35C1A9C /* PFObjectFileCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCoder.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.m; sourceTree = ""; }; + D131706344B44D723C0EDC00AD04D9B9 /* PFFile_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile_Private.h; path = Parse/Internal/File/PFFile_Private.h; sourceTree = ""; }; + D13DEF1A34A6346D0D141BE69B48222B /* PFQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryController.m; path = Parse/Internal/Query/Controller/PFQueryController.m; sourceTree = ""; }; + D1936061C906ACCF7096B33BC0F8B8D5 /* PFRelationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationPrivate.h; path = Parse/Internal/Relation/PFRelationPrivate.h; sourceTree = ""; }; + D1F353DA75094169460F4E178D67879F /* BFMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent.h; path = Bolts/iOS/BFMeasurementEvent.h; sourceTree = ""; }; + D200CBDECE639A7FCC23CBA4AA40C197 /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = ""; }; + D20A9EB54DFD244FBACB2A29830F5CC3 /* PFObjectFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCodingLogic.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.h; sourceTree = ""; }; + D22A81EE72C8AF87FA5165920160A541 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = en.lproj; path = Parse/Resources/en.lproj; sourceTree = ""; }; + D24D2A9A2A00617641EB1C9DAF8E5BD9 /* PFObjectSubclassInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassInfo.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.h; sourceTree = ""; }; + D278AD7FDD5A46F106410E751FA6B672 /* Parse.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Parse.xcconfig; sourceTree = ""; }; + D35218557707E188346D1B5F07861524 /* BFTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTask.m; path = Bolts/Common/BFTask.m; sourceTree = ""; }; + D388F363F30D7354C0DD6EF934AEF405 /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = ""; }; + D3B177B3970048B89F03D66264703FDA /* PFUserAuthenticationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationController.h; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.h; sourceTree = ""; }; + D45D3E81C27909856D36BC8D34806CF3 /* PFLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogger.h; path = Parse/Internal/PFLogger.h; sourceTree = ""; }; + D47FDBAD7CB049CA85F42858313FA486 /* FBSDKShareVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideo.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h; sourceTree = ""; }; + D5255CB6CDF2850371E17AAA2A1AB6D7 /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFWebViewAppLinkResolver.m; path = Bolts/iOS/BFWebViewAppLinkResolver.m; sourceTree = ""; }; + D605E91ED4E689A9CCE862F2F178290D /* ParseInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseInternal.h; path = Parse/Internal/ParseInternal.h; sourceTree = ""; }; + D61C8185B740497218D477F278420CDD /* FBSDKCoreKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKCoreKit.xcconfig; sourceTree = ""; }; + D61E6CD1DA3114DB0F3E65D1FD361D36 /* FBSDKAccessTokenCacheV3_21.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_21.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h; sourceTree = ""; }; + D686AFA6A1B571DB6379798EEC41A114 /* FBSDKLikeBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h; sourceTree = ""; }; + D6B6858EBB4F2461F279E542CA9305EF /* PFPushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushState.m; path = Parse/Internal/Push/State/PFPushState.m; sourceTree = ""; }; + D6C799561791E9883CE1451D688B8D98 /* FBSDKShareOpenGraphAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphAction.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m; sourceTree = ""; }; + D6D13D12D3B1AC6E70E2C85B780DA659 /* PFConfig_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig_Private.h; path = Parse/Internal/Config/PFConfig_Private.h; sourceTree = ""; }; + D72924A89C6D36425031B7EB8C451C49 /* PFAnalytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics.h; path = Parse/PFAnalytics.h; sourceTree = ""; }; + D76C0DEC86D6F664834D44A8082E5A6D /* PFErrorUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFErrorUtilities.m; path = Parse/Internal/PFErrorUtilities.m; sourceTree = ""; }; + D81D0AFDE6434123DE6ED1DC6F6BB145 /* PFHTTPURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPURLRequestConstructor.h; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.h; sourceTree = ""; }; + D8814D734B55D0B745B301CCCD84E999 /* FBSDKLoginKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKLoginKit.xcconfig; sourceTree = ""; }; + D91A3470D21870EAF9AE6AF9B98A8CAA /* PFKeyValueCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache.h; sourceTree = ""; }; + D94AA448EE0BB8B639F08787CE1F8480 /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = ""; }; + D950227B3A59DCF16242E75918DC221C /* PFEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyQueue.m; path = Parse/Internal/PFEventuallyQueue.m; sourceTree = ""; }; + D97F582E69FFF8BC67A3DB17D398C9C5 /* PFQueryPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryPrivate.h; path = Parse/Internal/Query/PFQueryPrivate.h; sourceTree = ""; }; + DAAE1F4A9A0A5F773B133BE2D859DCA6 /* FBSDKShareKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKShareKit.xcconfig; sourceTree = ""; }; + DAAE63B311691BDD6651032E86A8597B /* libFBSDKShareKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKShareKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + DACF075638B9FC0CD730644C26FB71E5 /* PFURLConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLConstructor.m; path = Parse/Internal/HTTPRequest/PFURLConstructor.m; sourceTree = ""; }; + DBFBAEBF5E6EDC57B0F60C53E56D90FE /* PFRESTCommand_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand_Private.h; path = Parse/Internal/Commands/PFRESTCommand_Private.h; sourceTree = ""; }; + DD84DEFBFCE10B1818486E633AFAADD3 /* FBSDKLikeButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m; sourceTree = ""; }; + DDB5F6DBCF6A420FE4A916EF00D431E9 /* PFObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectUtilities.h; path = Parse/Internal/Object/Utilities/PFObjectUtilities.h; sourceTree = ""; }; + DDC74E76E8D8BB53B2921A4D81230691 /* PFPushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState.h; path = Parse/Internal/Push/State/PFPushState.h; sourceTree = ""; }; + DE7C9DBCE49E309207C0F6DBBD2FC077 /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h"; sourceTree = ""; }; + DEF1EA4E1F9251BFCF197D8CF0D4A299 /* PFThreadsafety.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFThreadsafety.h; path = Parse/Internal/ThreadSafety/PFThreadsafety.h; sourceTree = ""; }; + DF9A789A3EB2E9881006021046DBA3A5 /* PFQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryState.m; path = Parse/Internal/Query/State/PFQueryState.m; sourceTree = ""; }; + DFB946FBB5587B0F326E668F21F73F3B /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = ""; }; + DFD9CDB1EB349CA71F08124AACE22058 /* PFPinningEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningEventuallyQueue.h; path = Parse/Internal/PFPinningEventuallyQueue.h; sourceTree = ""; }; + DFFD8020EDD3222D365D682FB9C69978 /* FBSDKShareError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareError.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m; sourceTree = ""; }; + DFFDFF65FE7476F1D6C9313962B686E7 /* FBSDKShareButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h; sourceTree = ""; }; + E0856F90FBBE3E20ACD8BC2DC4D7936A /* PFPropertyInfo_Runtime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo_Runtime.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.m; sourceTree = ""; }; + E0B83933AD135BA53C1F2A1BD657DA5A /* FBSDKShareKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareKit.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h; sourceTree = ""; }; + E1339B136ECA6BA809535B109308BBE8 /* PFACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACLState.m; path = Parse/Internal/ACL/State/PFACLState.m; sourceTree = ""; }; + E166AD26497D5B00C94E0891C82C6BD3 /* PFKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeychainStore.h; path = Parse/Internal/PFKeychainStore.h; sourceTree = ""; }; + E195893EFAF6B4D88041C06F7BD32C88 /* PFCurrentObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentObjectControlling.h; path = Parse/Internal/Object/CurrentController/PFCurrentObjectControlling.h; sourceTree = ""; }; + E2B84A286CDFEFD476C028DA645FE8B7 /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = ""; }; + E2BB5322373C1D0A089D6447434E2F01 /* PFLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogging.h; path = Parse/Internal/PFLogging.h; sourceTree = ""; }; + E381E7C31CC253F19B9DBADD0D0C49A6 /* PFURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.h; sourceTree = ""; }; + E39D48341F0F70D7E687A32C109136F4 /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = ""; }; + E40D5277A9FEE4394113FE40E8457989 /* PFPushController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushController.m; path = Parse/Internal/Push/Controller/PFPushController.m; sourceTree = ""; }; + E47AEA771CADAF0F7E1A8716B513852F /* PFRole.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRole.h; path = Parse/PFRole.h; sourceTree = ""; }; + E4D9A54A95B795541832AC67B6AD76BE /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = ""; }; + E4DE147989205694AE9667AACA7AECD9 /* PFTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFTaskQueue.m; path = Parse/Internal/PFTaskQueue.m; sourceTree = ""; }; + E5071678A9FFE38B25984E1DE154CA86 /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h; sourceTree = ""; }; + E543FA1FAC8FAA14119B1F575299C209 /* PFSQLiteDatabaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseController.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.h; sourceTree = ""; }; + E557E21B22E0695434EA0A8BF54D2A5D /* PFRESTQueryCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTQueryCommand.h; path = Parse/Internal/Commands/PFRESTQueryCommand.h; sourceTree = ""; }; + E5CCD914EAF1670C15EFE26F755C80A1 /* PFOperationSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOperationSet.h; path = Parse/Internal/Object/OperationSet/PFOperationSet.h; sourceTree = ""; }; + E5DAF6DF08F79AABABEB6DCD99347D5A /* FBSDKAccessTokenCacheV3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h; sourceTree = ""; }; + E60E681E3152FF31E45D14307138A1F0 /* PFObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObject.h; path = Parse/PFObject.h; sourceTree = ""; }; + E6BB98CFA5D8A318326528AF33DF0BEC /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = ""; }; + E7679EFCB871C367D45B87FF04498A5E /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m; sourceTree = ""; }; + E77CF83F87413203B1BFCA6ED0238DAC /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = ""; }; + E7B7004292F62F0BBD9D137660B5648B /* PFMultiProcessFileLockController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLockController.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.h; sourceTree = ""; }; + E7FFCEEBB5EF7D5A28D81A02BAD268FD /* PFOfflineQueryLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryLogic.h; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.h; sourceTree = ""; }; + E82368CA082B92ADBB3B0DA8C9D29791 /* PFPropertyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo.h; sourceTree = ""; }; + E8397C0E16E68CA9A74B4BBDED56C9C4 /* PFAnalyticsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsController.h; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.h; sourceTree = ""; }; + E8E7C875C6D9ECD9F2B37DCBDFC9B2CD /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h; sourceTree = ""; }; + E91945A365E97AE157FD90FB6032742D /* PFGeoPointPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPointPrivate.h; path = Parse/Internal/PFGeoPointPrivate.h; sourceTree = ""; }; + E921A833B36DAA6D8087D3841D15FC40 /* FBSDKLoginCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginCompletion.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h; sourceTree = ""; }; + E9A152C5D066C52D0A1CFF6EA97C0303 /* PFRESTAnalyticsCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTAnalyticsCommand.m; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.m; sourceTree = ""; }; + E9AE56E8A69F187F40367169FB36AEC6 /* FBSDKAppInviteContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m; sourceTree = ""; }; + EA1EA428E9AD65BC84701D2503ACC121 /* PFACL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACL.h; path = Parse/PFACL.h; sourceTree = ""; }; + EAE1C285AB595843D879319E54ED6E95 /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = ""; }; + EB012283833C25F7392F7395A1DD2D26 /* PFUserFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserFileCodingLogic.h; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.h; sourceTree = ""; }; + EB6A4EB9D35740998C6D23740E612D5C /* PFSessionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionUtilities.m; path = Parse/Internal/Session/Utilities/PFSessionUtilities.m; sourceTree = ""; }; + EB7DACF210125B509F4D6887A2B2D027 /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = ""; }; + EC5644397B97AA444E77A9EB9CFC10E5 /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = ""; }; + EC5B7EA9E38C9FBEE69F5B9C0BC4A0E0 /* PFDevice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDevice.m; path = Parse/Internal/PFDevice.m; sourceTree = ""; }; + EC749D5306636F8078256E3AD6AEF7C7 /* PFPushManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushManager.m; path = Parse/Internal/Push/Manager/PFPushManager.m; sourceTree = ""; }; + ECBD1659924D8AA95D83F0EDE40C2614 /* PFSubclassing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSubclassing.h; path = Parse/PFSubclassing.h; sourceTree = ""; }; + ECDD4925923774BEB4574763291AC558 /* FBSDKCheckmarkIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCheckmarkIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h; sourceTree = ""; }; + ECFFDF4EED9136970053D3F87C287A38 /* PFMutableObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableObjectState.h; path = Parse/Internal/Object/State/PFMutableObjectState.h; sourceTree = ""; }; + ED29B572533174091A28FE94F7BBC738 /* PFInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationController.h; path = Parse/Internal/Installation/Controller/PFInstallationController.h; sourceTree = ""; }; + ED36E7E1EEBAAFFA740A30B12242CA27 /* FBSDKAppInviteDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h; sourceTree = ""; }; + ED57766F65BFA4FA25D7090346C97F28 /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = ""; }; + ED7E4C6BDA278A2EACB4205CFC9A3840 /* BFExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFExecutor.h; path = Bolts/Common/BFExecutor.h; sourceTree = ""; }; + ED97321AD7E6EF7BB46B7C26AFD43451 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + EDB642C66D82496889ED7B13E6DBA70B /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = ""; }; + EDD5CE9B3424920B0391E833E095927E /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView_Internal.h; path = Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h; sourceTree = ""; }; + EDF5AD225C15738985A7A4FFD5F486C9 /* PFEventuallyPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyPin.h; path = Parse/Internal/PFEventuallyPin.h; sourceTree = ""; }; + EE07970368BAD29465F0F84B9B1BBF89 /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = ""; }; + EE30E5F951BC779939012BAD6E3C5693 /* PFCoreDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreDataProvider.h; path = Parse/Internal/PFCoreDataProvider.h; sourceTree = ""; }; + EE40A18D405EDF0DDC2E9EB039576D21 /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = ""; }; + EF274E7B9BD70039B6C19D59B6817F3C /* PFBaseState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBaseState.h; path = Parse/Internal/PFBaseState.h; sourceTree = ""; }; + EF543883C6E0CD2FC7B4528B2C70C269 /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h; sourceTree = ""; }; + EF85D0CB5A209F611DBE0B95DD6E0937 /* PFURLSessionFileDownloadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionFileDownloadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m; sourceTree = ""; }; + F02776DDFE76E235B5AF885797A8F4B7 /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = ""; }; + F060686A92FC706C2AC04A14E7348F4D /* PFSQLiteDatabaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseController.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.m; sourceTree = ""; }; + F0B0CDDA729281358070EBBED9C52BB7 /* PFPushUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushUtilities.m; path = Parse/Internal/Push/Utilites/PFPushUtilities.m; sourceTree = ""; }; + F10C958A391650BD6ABEE08D4D0EF8D8 /* FBSDKLoginManagerLoginResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLoginResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h; sourceTree = ""; }; + F1386E668F6D9A1E7CF872A02649E498 /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTaskCompletionSource.m; path = Bolts/Common/BFTaskCompletionSource.m; sourceTree = ""; }; + F1AF1463AFA83AA08F43ABCD39BF6FFB /* PFBase64Encoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBase64Encoder.m; path = Parse/Internal/PFBase64Encoder.m; sourceTree = ""; }; + F1EF1E16E02ADB82F94F4A9757F01077 /* PFGeoPoint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPoint.h; path = Parse/PFGeoPoint.h; sourceTree = ""; }; + F20CDC41B5A71F131F228EA1F49FAE29 /* PFUserPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserPrivate.h; path = Parse/Internal/User/PFUserPrivate.h; sourceTree = ""; }; + F213A888C3CDCF3160CB878D06CDFD7B /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = ""; }; + F31EC4849CD16E6B48A237BDBB0954FA /* PFConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConstants.m; path = Parse/PFConstants.m; sourceTree = ""; }; + F409B315AFACD2CDD448DFD6401146FC /* PFRelation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelation.h; path = Parse/PFRelation.h; sourceTree = ""; }; + F496DCF5311E5B908DE4C4911C062A01 /* PFPushController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushController.h; path = Parse/Internal/Push/Controller/PFPushController.h; sourceTree = ""; }; + F4EC35BFE04E1EB232697BD6C033CA73 /* FBSDKAccessTokenCacheV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV4.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h; sourceTree = ""; }; + F5599187F396820DE7700A6E7F6E43A9 /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = ""; }; + F64699881A4C5A9980C295DDA013D4DA /* PFFieldOperationDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperationDecoder.m; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.m; sourceTree = ""; }; + F7A8AFB90B055F7CA759BA8AC799303F /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = ""; }; + F7D4CB9368BD8EF802C21EAB26119104 /* BFCancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationToken.h; path = Bolts/Common/BFCancellationToken.h; sourceTree = ""; }; + F7D6DF824B91053634D56B3A1DE837EF /* FBSDKLikeControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeControl.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m; sourceTree = ""; }; + F814D3C39AD10478EC573697C25159A8 /* PFMutableObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableObjectState.m; path = Parse/Internal/Object/State/PFMutableObjectState.m; sourceTree = ""; }; + F83E67F4212B6068698963474A88BBC6 /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = ""; }; + F8F8D92E9BF54CF0325CDBF3A13F511C /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.release.xcconfig; sourceTree = ""; }; + F9DB8A88D120EF79B711A6D9A60C9735 /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = ""; }; + FA75267D4B40F3809876DEBF3F4D299B /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = ""; }; + FACF0C560352F6EA75B7CEE63BCB2793 /* Bolts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Bolts.m; path = Bolts/Common/Bolts.m; sourceTree = ""; }; + FAD786BC4ACCD93AEF869C440819A61D /* Parse-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Parse-Private.xcconfig"; sourceTree = ""; }; + FB0644F2C0DBFC0141F618380733B87C /* libFBSDKLoginKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKLoginKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FB20A82F1DA5086B118A419F8A505588 /* PFAnalyticsUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsUtilities.m; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.m; sourceTree = ""; }; + FB4DE0ABD27878F01E20805AF9C9D6FC /* PFMulticastDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMulticastDelegate.m; path = Parse/Internal/PFMulticastDelegate.m; sourceTree = ""; }; + FB8484337705B68B729961116D8780FF /* PFCommandResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandResult.m; path = Parse/Internal/PFCommandResult.m; sourceTree = ""; }; + FBE9B1CE32D01F9E50A891EA8A4513A7 /* FBSDKURLConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m; sourceTree = ""; }; + FC1407E7292FD644B5484C9433F82629 /* PFFileDataStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileDataStream.h; path = Parse/Internal/File/FileDataStream/PFFileDataStream.h; sourceTree = ""; }; + FCC45D5098F99503478D96062E9B86BB /* PFLocationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLocationManager.m; path = Parse/Internal/PFLocationManager.m; sourceTree = ""; }; + FD0EBED5DD6CD15CFA67F054ABDCDD72 /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = ""; }; + FD462163039488768F58B0E9E27E6C43 /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = ""; }; + FD87D91BF55E5388FB9F03A3ADE8B577 /* PFMutableUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableUserState.m; path = Parse/Internal/User/State/PFMutableUserState.m; sourceTree = ""; }; + FE64BADD703C143B203FA8E00FD8FAD4 /* BFURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFURL.m; path = Bolts/iOS/BFURL.m; sourceTree = ""; }; + FF936D8AE384A20B5E843F162679EC85 /* PFInstallationConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationConstants.m; path = Parse/Internal/Installation/Constants/PFInstallationConstants.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 1C1DD4BE9A8F7C910DF0F3E77BF7C62D /* Frameworks */ = { + 52B566C3F38D88DAE6CB3B0099A0DB2D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 49421026FE47248CF4AF6EF3C5D13494 /* Foundation.framework in Frameworks */, + DCC1ABB0688AAFDD2FA307053A70B667 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1E72EB589808F87950D233F18FFBBD2E /* Frameworks */ = { + 5931A939FDAB18C661EC31929DC88491 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 077A33F1B3D52FA2D2C18147CE033D3D /* Foundation.framework in Frameworks */, + 14F1171052248FD2C9252B38F4081977 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 40AC19B3F8E01DF016229112D2367F46 /* Frameworks */ = { + 93050DA4590BB3C69121F66E0613EF97 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0AB27E0C4D053AC65C9732DB1BB11B3D /* Foundation.framework in Frameworks */, + 442B88BF438088AE02DEEE713216D7FE /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 563EEC817F4B39196257BF87E9BAF65B /* Frameworks */ = { + C30A5B56F2EB2A290FA16DA8E83058C3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A4A522C2511616E471BF42C39B51CC2D /* Foundation.framework in Frameworks */, + 848D32C1394A874780205EE7808526BD /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A14B9249809C06A9D3AEFBA9B23EA350 /* Frameworks */ = { + D376342DD6A10F6488BB2E42F69AC518 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3C0BC486782A950DF6222FB6631E1EBC /* Foundation.framework in Frameworks */, + 5838BA1EB3A53944C6789E9DB9D23428 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D97E53C2B2D248D6179FE56627FD0227 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 28D77B1E40AF92C0A748B126296A1BC8 /* AudioToolbox.framework in Frameworks */, + C9199F1600296856F0A68EB34DE06DC0 /* CFNetwork.framework in Frameworks */, + F6B2BAA1EB859F859E12AD8449D6A172 /* CoreGraphics.framework in Frameworks */, + B725979258522519ED96E2704A869932 /* CoreLocation.framework in Frameworks */, + 62460A52E60F539997171BABD1A6408C /* Foundation.framework in Frameworks */, + 55549127D15D4850D669B0176FD188AE /* QuartzCore.framework in Frameworks */, + 4E07076710363106C424577587997DC3 /* Security.framework in Frameworks */, + BEB5FEB51FB1A12140DA5E683C2FE8CD /* StoreKit.framework in Frameworks */, + D2FA4F91B4B66C579FAB1CB3BB8D1CBB /* SystemConfiguration.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 03D972F8FD8FDE13BB9FF3BADFDE04EF /* Support Files */ = { + 1E0D3B5AF7A67EA2BD6761F1E9EAC65E /* no-arc */ = { isa = PBXGroup; children = ( - D04E665A901817D8EC9150B344EE57E3 /* FBSDKShareKit.xcconfig */, - 7F322F6ACF68AF56AF896EB667A4EE12 /* FBSDKShareKit-Private.xcconfig */, - 228E810DDF4A3C7DA3A85A9E2D4A501B /* FBSDKShareKit-dummy.m */, - D2A60EBB4F7EE474CF1CED06DFEDBF08 /* FBSDKShareKit-prefix.pch */, + C4850C360C9673CBE290A0841176FD78 /* FBSDKDynamicFrameworkLoader.m */, ); - name = "Support Files"; - path = "../Target Support Files/FBSDKShareKit"; + name = "no-arc"; sourceTree = ""; }; - 0CCA37610B869AEE4F26E4D94532229F /* no-arc */ = { + 24002A6670E6882ECD6250D3E60F9CB2 /* Frameworks */ = { isa = PBXGroup; children = ( - D6BA663394EED0BB2FE15D361CEF0CC0 /* FBSDKDynamicFrameworkLoader.m */, + F9400E82BDA8E39AA40BABDC6CB12014 /* iOS */, ); - name = "no-arc"; + name = Frameworks; sourceTree = ""; }; - 16FEA20C1F582DDE438128E880D8CFAD /* Tasks */ = { + 252E87DA7170BD6566BD06E26674A007 /* Support Files */ = { isa = PBXGroup; children = ( - 472EE8D03187469F99EC5B927D40BA24 /* BFCancellationToken.h */, - 5D5414763D71E60BCDE8CE7AB80B2CC7 /* BFCancellationToken.m */, - 075B616D3A97272E3EADC31EADC87E6D /* BFCancellationTokenRegistration.h */, - 942B56873727FBE84A29CD08DC9DF625 /* BFCancellationTokenRegistration.m */, - 958A88B9D72E9934EADC8C9179B0E455 /* BFCancellationTokenSource.h */, - ADA0E0868E9C002ACAA9EFBEAA6C7349 /* BFCancellationTokenSource.m */, - 20CCC4BC67725A4015A7A848B16ED671 /* BFDefines.h */, - 41CFAF1E1E62AE0A66D11ADAABFDD595 /* BFExecutor.h */, - 7052F61CFA5DBBB1A1F2329AE83EF04A /* BFExecutor.m */, - 4E2CB7869A71090D975E7A675914369C /* BFTask.h */, - DC55CDB4CCC04F5A9F06E71FFE785F36 /* BFTask.m */, - E5DE1E73EB9968D3497F35D73BDB6A94 /* BFTaskCompletionSource.h */, - C7C691E993DE2424E1B336A86721F67E /* BFTaskCompletionSource.m */, - B41F54859F94464A7063BAD8F5DEEA40 /* Bolts.h */, - CFBCB363EDF2DA2195A76CD54C25DAA2 /* Bolts.m */, - 28C6F74CFBBB5E9EDDE2A8BC53A897B4 /* BoltsVersion.h */, + DAAE1F4A9A0A5F773B133BE2D859DCA6 /* FBSDKShareKit.xcconfig */, + 3E718F82F8FAFE696738E00DEA95B1BE /* FBSDKShareKit-Private.xcconfig */, + 99AD28F109954C4513A2B73C3775C971 /* FBSDKShareKit-dummy.m */, + 74A9C6AFAD90897450936AE0813C80E2 /* FBSDKShareKit-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/FBSDKShareKit"; + sourceTree = ""; + }; + 381EF370C8F09BA2E6F4C9CD17E0BABA /* Tasks */ = { + isa = PBXGroup; + children = ( + F7D4CB9368BD8EF802C21EAB26119104 /* BFCancellationToken.h */, + 93A5F67195E8183EE3FC797F98DC5956 /* BFCancellationToken.m */, + 58081944456413D3F0B0A33BCF9415F7 /* BFCancellationTokenRegistration.h */, + 117EE18D9FE3C52EFB3FC22C9026769B /* BFCancellationTokenRegistration.m */, + ADC7A4E7F1BB2DAD519028D6DD15357F /* BFCancellationTokenSource.h */, + 174428FB6ED93BFAE36DC2D84B429C3F /* BFCancellationTokenSource.m */, + 0A2D949315D757A2D3EB973286C11836 /* BFDefines.h */, + ED7E4C6BDA278A2EACB4205CFC9A3840 /* BFExecutor.h */, + 9BA9DC4FB2F1D4B30FF6F4D47961DEC2 /* BFExecutor.m */, + B2B529CF2F3BA08A19036180A7792FD5 /* BFTask.h */, + D35218557707E188346D1B5F07861524 /* BFTask.m */, + 24E017A99C1D0B48564CB40E5B2422A8 /* BFTaskCompletionSource.h */, + F1386E668F6D9A1E7CF872A02649E498 /* BFTaskCompletionSource.m */, + 870C15BDFACBF06245D3E708FB7C0973 /* Bolts.h */, + FACF0C560352F6EA75B7CEE63BCB2793 /* Bolts.m */, + 5AE219E0D5DA9BEAD01E3B7B78A5B608 /* BoltsVersion.h */, ); name = Tasks; sourceTree = ""; }; - 1DB7024972D117DCB7C2DF938433BE13 /* Support Files */ = { + 506CAA494D3B21DBBAD983F4BAED119F /* FBSDKCoreKit */ = { isa = PBXGroup; children = ( - D0206FEE967F07559593DB0A49437047 /* Bolts.xcconfig */, - 3121BA645E578829C4840BA0F5D2F2FB /* Bolts-Private.xcconfig */, - D2ABC77A4C6425C22BB540990BB5A163 /* Bolts-dummy.m */, - C4610B513862FEFB3BF7F20A25825BC1 /* Bolts-prefix.pch */, + E46A0832738AC01F481C0A1AC7761E0C /* Support Files */, + 6853153E7E440E7AC078111AEF0891C2 /* arc */, + 1E0D3B5AF7A67EA2BD6761F1E9EAC65E /* no-arc */, ); - name = "Support Files"; - path = "../Target Support Files/Bolts"; + path = FBSDKCoreKit; sourceTree = ""; }; - 318DE6DB1C43BC39E260C1ACBC1D2339 /* Bolts */ = { + 63A5D4C13A14A38F2A436EDF181C19F0 /* Resources */ = { isa = PBXGroup; children = ( - 436D998F3D116843D36AD91C7CBE7593 /* AppLinks */, - 1DB7024972D117DCB7C2DF938433BE13 /* Support Files */, - 16FEA20C1F582DDE438128E880D8CFAD /* Tasks */, + D22A81EE72C8AF87FA5165920160A541 /* en.lproj */, ); - path = Bolts; + name = Resources; sourceTree = ""; }; - 40F1C6894DB267A5CAE3498060F47A24 /* FBSDKLoginKit */ = { + 660F7FA41B8491B7303D71C44F4D78C2 /* FBSDKShareKit */ = { isa = PBXGroup; children = ( - 22BD1BB2D1ACDED2C3DA5FB714A15C33 /* FBSDKLoginButton.h */, - 80E57FF8B4AA3C7BF27A67169E51EA08 /* FBSDKLoginButton.m */, - EE77E56FA0FD8571B90F7293F8A6CA4E /* FBSDKLoginCompletion.h */, - 8F375DCDC3AF03A748BF6AE2DE8847AB /* FBSDKLoginCompletion.m */, - 43170513EC0C6AEAEAE625758B1656D2 /* FBSDKLoginCompletion+Internal.h */, - 0536CFD0FB595B94B070BF9F406E1C6E /* FBSDKLoginConstants.h */, - 1BFFBA3AC0C02108B7DA60345A7F020A /* FBSDKLoginConstants.m */, - 13FF75A9C1FC86B8BB017906047CD763 /* FBSDKLoginError.h */, - 7B0A365A7833E9C747150256183939CF /* FBSDKLoginError.m */, - 08CDE37FE6C9394E1AE63982CC68D3B0 /* FBSDKLoginKit.h */, - 0FD55E74CE45585A17758C1059634836 /* FBSDKLoginKit+Internal.h */, - 0575E3793244EA718CE0007D35E83183 /* FBSDKLoginManager.h */, - 8FA62565BBE412C30069502FF0CC51DF /* FBSDKLoginManager.m */, - FB1C07F9FFF2FDF41760BCFD01D6DBD2 /* FBSDKLoginManager+Internal.h */, - 5D42936E332BFFE8C7AEA60379CAA0CA /* FBSDKLoginManagerLogger.h */, - 9F23A8CFF0A5178FFE437F3900690E4D /* FBSDKLoginManagerLogger.m */, - B79196C5F88B102B98CC926632FA54C5 /* FBSDKLoginManagerLoginResult.h */, - 543A2D9E4374BEADC0C923E0AEFCE01A /* FBSDKLoginManagerLoginResult.m */, - CA34076F58016A8D344DF051264EC600 /* FBSDKLoginManagerLoginResult+Internal.h */, - 91D245F8CA4CBBB78697B00434888AAB /* FBSDKLoginTooltipView.h */, - CB2709395EFC37B68B84452B8B52D2FA /* FBSDKLoginTooltipView.m */, - 808CC2D89F4CAACB4CF99EDF5F5B3F24 /* FBSDKLoginUtility.h */, - 60D814E0C681012497F5E777A131D775 /* FBSDKLoginUtility.m */, - 8E12677D5DAFEE12EA3BA1E2055E89F8 /* FBSDKTooltipView.h */, - A6A11C49919F9BE6F3A03567D38BE5C1 /* FBSDKTooltipView.m */, - AEE40C84F20C8B4855574E68B561F586 /* _FBSDKLoginRecoveryAttempter.h */, - ED654A2013434F730212951BE3CDF95A /* _FBSDKLoginRecoveryAttempter.m */, - CD53B378A2C85AC02E4C94B72B2396B1 /* Support Files */, + 175A1AE7E5CD7E7816C852D51957E66A /* FBSDKAppGroupAddDialog.h */, + 45C436A6EE477BC43DFD0B674BD6F99C /* FBSDKAppGroupAddDialog.m */, + 139C145BDD122109F513A0E27ABD2054 /* FBSDKAppGroupContent.h */, + B212E7E5891AA33B35F56D833F69EF4D /* FBSDKAppGroupContent.m */, + 6F95877AC2E55BE1D53E55F4938D652C /* FBSDKAppGroupJoinDialog.h */, + 4490BD8F1600D89FDE4126EAF678E35C /* FBSDKAppGroupJoinDialog.m */, + 0DEDEA8104363CAC7A0792A26668948A /* FBSDKAppInviteContent.h */, + E9AE56E8A69F187F40367169FB36AEC6 /* FBSDKAppInviteContent.m */, + ED36E7E1EEBAAFFA740A30B12242CA27 /* FBSDKAppInviteDialog.h */, + 23F24FEF2A5474160AA9AD33E508D81E /* FBSDKAppInviteDialog.m */, + ECDD4925923774BEB4574763291AC558 /* FBSDKCheckmarkIcon.h */, + ABD0C19409CB1F24FD1AFB365E60C99F /* FBSDKCheckmarkIcon.m */, + 37E59CBA1B5E09F3A99384CDBF968875 /* FBSDKGameRequestContent.h */, + 6C3130D692EFBD2F3FA5A396FF19871E /* FBSDKGameRequestContent.m */, + 590B72F042F883DF5EACA245CBD92A25 /* FBSDKGameRequestDialog.h */, + 1DED363DFEDD926102B4745A17AA358A /* FBSDKGameRequestDialog.m */, + 71207309A4BF5422B709A558661FB9DD /* FBSDKGameRequestFrictionlessRecipientCache.h */, + A128707E58E6F7FD7C1268992BEFD2C5 /* FBSDKGameRequestFrictionlessRecipientCache.m */, + ADEBB6BE4E6B7E95DBD5EA0F8198E2A6 /* FBSDKLikeActionController.h */, + A1D336D237B3B30BCE04A43FD371473E /* FBSDKLikeActionController.m */, + 12585EA0DD81C8296E71552C34E29D15 /* FBSDKLikeActionControllerCache.h */, + A1EE50D31E951A4463F312FC9BF343D5 /* FBSDKLikeActionControllerCache.m */, + 2FC77C0223C08FEC9F0BF799243D8F4C /* FBSDKLikeBoxBorderView.h */, + C9E4838EB0ACA07B884CA93AFAD23B44 /* FBSDKLikeBoxBorderView.m */, + D686AFA6A1B571DB6379798EEC41A114 /* FBSDKLikeBoxView.h */, + 47A4C203E7867764F3E284630A0268FD /* FBSDKLikeBoxView.m */, + 1D70B316B602A15A89952D1C307A9D90 /* FBSDKLikeButton.h */, + DD84DEFBFCE10B1818486E633AFAADD3 /* FBSDKLikeButton.m */, + 055D613FCAF2DEE454B4D55F922EE234 /* FBSDKLikeButton+Internal.h */, + 695B20B39C65A0F70AF9F9C9D54CDC02 /* FBSDKLikeButtonPopWAV.h */, + A16681B3380FF1CBA89E6E2F276422AA /* FBSDKLikeButtonPopWAV.m */, + 17D097F39B59CDB7D0438128AF2166D6 /* FBSDKLikeControl.h */, + F7D6DF824B91053634D56B3A1DE837EF /* FBSDKLikeControl.m */, + 9F82DC5081D723743511B666306BC567 /* FBSDKLikeControl+Internal.h */, + 4F58C09538CC735A9D6E6B2036FA8A43 /* FBSDKLikeDialog.h */, + 75CAD372C74E8529A061E6EB2818F982 /* FBSDKLikeDialog.m */, + B410DB6A268571CB00AE7C7B191AFC4F /* FBSDKLikeObjectType.h */, + 00AA046AB84056772E21CE43C551AAAE /* FBSDKLikeObjectType.m */, + 5AFCCD081D365FBB6E1CF56D2CB3AF34 /* FBSDKLiking.h */, + 00317664E706475AA83526A30F2CC298 /* FBSDKMessageDialog.h */, + 1BCF6D36AAFB2D3DDD6EC1074B3664A8 /* FBSDKMessageDialog.m */, + 860483D9361D7525A3473BBEBF3BE90A /* FBSDKMessengerIcon.h */, + 43C58CE6DD6DD31ACA6BE1B0D257427E /* FBSDKMessengerIcon.m */, + 9B56BC63A46E0C60E1F65E1E43FF3D2B /* FBSDKSendButton.h */, + 279F58DF900F5886BE441B7000DE90AF /* FBSDKSendButton.m */, + CF322B34A45C7374C6ACB86C793A0977 /* FBSDKShareAPI.h */, + 819F604AC9E7F0671221BC885460C546 /* FBSDKShareAPI.m */, + DFFDFF65FE7476F1D6C9313962B686E7 /* FBSDKShareButton.h */, + 4D5060E67D251FD6C07A6C8127F60BC3 /* FBSDKShareButton.m */, + 2AF0D88FB66A75671BB0F620D0569032 /* FBSDKShareConstants.h */, + 10135E293A34F093B13620EB7118F0EC /* FBSDKShareConstants.m */, + 82DD9C04E2048B93470902C1B226313D /* FBSDKShareDefines.h */, + C7971F18FB6165E37A0B729145BD2CE0 /* FBSDKShareDialog.h */, + 396620E59D63358DFBB3310A8B068287 /* FBSDKShareDialog.m */, + 3B567AC8F39B4A53D38DEA73D3B7AD4C /* FBSDKShareDialogMode.h */, + 6634E8525E51E4FF70C26E49F54493FC /* FBSDKShareDialogMode.m */, + 73A2CAB8C0CB0FB451E60B3C35C23B4C /* FBSDKShareError.h */, + DFFD8020EDD3222D365D682FB9C69978 /* FBSDKShareError.m */, + E0B83933AD135BA53C1F2A1BD657DA5A /* FBSDKShareKit.h */, + 3F882D75C1CCE50E50D3030EB284FF29 /* FBSDKShareKit+Internal.h */, + AA723A00866BEEDAE1A8E099DFE0C01C /* FBSDKShareLinkContent.h */, + A3F681072693C690033F636D1262450F /* FBSDKShareLinkContent.m */, + 7C50076788F9D1661F6F38C60F88F2E1 /* FBSDKShareLinkContent+Internal.h */, + 88EFF331F662FFFA9E548EA3F9CF8BD9 /* FBSDKShareOpenGraphAction.h */, + D6C799561791E9883CE1451D688B8D98 /* FBSDKShareOpenGraphAction.m */, + A0E7F189FF9BF3307F3E7363608DBD81 /* FBSDKShareOpenGraphContent.h */, + 18A1F36B919BB4094769DA9141FA13B4 /* FBSDKShareOpenGraphContent.m */, + 629A496B7FB2D5E3C39FF55136A1EEE4 /* FBSDKShareOpenGraphObject.h */, + 1630835145A45B1AE1B5731F89DE41E1 /* FBSDKShareOpenGraphObject.m */, + 31B2F765DDFA36C75E4D5C6A387B8EF2 /* FBSDKShareOpenGraphValueContainer.h */, + 7A3E0823C5C63DCBFFF51F3DAA930F7E /* FBSDKShareOpenGraphValueContainer.m */, + 08D5478EDC1981B91D3B2EE8042C45EE /* FBSDKShareOpenGraphValueContainer+Internal.h */, + B1AF0EAA010A2243D3B652627909B1E0 /* FBSDKSharePhoto.h */, + 31A3C807180B3E37B45206DDBBC18002 /* FBSDKSharePhoto.m */, + AE6F6B94AFE361FD0E18CCB6B75A0DE3 /* FBSDKSharePhotoContent.h */, + 7E4D2B2CBD42ED6EEDC6C535E15CDB74 /* FBSDKSharePhotoContent.m */, + 633199AB2B8E7F8DD87937157D733647 /* FBSDKShareUtility.h */, + 2278812C83EFF9DAF44E37BDB2014B3F /* FBSDKShareUtility.m */, + D47FDBAD7CB049CA85F42858313FA486 /* FBSDKShareVideo.h */, + 3A6FA7C694C6B40F59512851C968703D /* FBSDKShareVideo.m */, + 7BD705FB6C7BC580C655F9EB6061B436 /* FBSDKShareVideoContent.h */, + 69B7181C6F142ED4F0C684EC984A9CFC /* FBSDKShareVideoContent.m */, + 1223A0C9FC36B8E26592679DCD48B8ED /* FBSDKSharing.h */, + 2456CB46EED1A00126E3F3CD460B8E39 /* FBSDKSharingButton.h */, + AE99A458700FBFED7B17F712111F6238 /* FBSDKSharingContent.h */, + 252E87DA7170BD6566BD06E26674A007 /* Support Files */, ); - path = FBSDKLoginKit; + path = FBSDKShareKit; sourceTree = ""; }; - 436D998F3D116843D36AD91C7CBE7593 /* AppLinks */ = { + 6853153E7E440E7AC078111AEF0891C2 /* arc */ = { isa = PBXGroup; children = ( - A7D62A18D54FFB9AA33D848791F2B9A0 /* BFAppLink.h */, - D9899AB1FB240FC4ECF430207E7A6B41 /* BFAppLink.m */, - 1FB1726D1A37BF1BA4F347373EA1F055 /* BFAppLinkNavigation.h */, - 592B052F02115EC6E41AC5B9CB79E1C6 /* BFAppLinkNavigation.m */, - A944D2DC04BEF6207604DBB76FBB12AB /* BFAppLinkResolving.h */, - 7647CEF4963EF72C881A0512B4A106FC /* BFAppLinkReturnToRefererController.h */, - C03A3298B33198FAA942973584DF194D /* BFAppLinkReturnToRefererController.m */, - 0A255D4D45C82DE35FE87E3BC6774FD6 /* BFAppLinkReturnToRefererView.h */, - E88798669932F94A6C3A3DC258F34AE9 /* BFAppLinkReturnToRefererView.m */, - 08246BDCF7BCF08AB9C89B6EC23B82F1 /* BFAppLinkReturnToRefererView_Internal.h */, - 210A8D5F5D9E18273157AA6FA4DF1616 /* BFAppLinkTarget.h */, - 26F24911943B64E9095819A493DC1EF7 /* BFAppLinkTarget.m */, - 94415A29F6A91534137FF604BCB14AB6 /* BFAppLink_Internal.h */, - 7021140A61A89A7065788EF7F6FE9A25 /* BFMeasurementEvent.h */, - 2D24677F8860BB996C1BE057AFDAE111 /* BFMeasurementEvent.m */, - 756E20E698838AA3F512B572C052F12A /* BFMeasurementEvent_Internal.h */, - 7950AA08C2373C1D88DDA283D1C68C10 /* BFURL.h */, - AC4DF8AF9C3B56874F7711E6F2D3096B /* BFURL.m */, - BFB535A8B4485F7D0DE50127BA902285 /* BFURL_Internal.h */, - F7A0AE448F9342C2274615F8B33139C7 /* BFWebViewAppLinkResolver.h */, - 7EB290C8F6E8E6E8FC74EEFAD135259E /* BFWebViewAppLinkResolver.m */, + C6E3A3B7C704403CB94D4FEFBBEEF1B0 /* FBSDKAccessToken.h */, + B24C9F82AA8C193E9B823CF102B19AB2 /* FBSDKAccessToken.m */, + F9DB8A88D120EF79B711A6D9A60C9735 /* FBSDKAccessTokenCache.h */, + FD462163039488768F58B0E9E27E6C43 /* FBSDKAccessTokenCache.m */, + E5DAF6DF08F79AABABEB6DCD99347D5A /* FBSDKAccessTokenCacheV3.h */, + 36275B6CAF874F0A77AECB1185D90A1F /* FBSDKAccessTokenCacheV3.m */, + 8B229FDD88B02BA431226CF6F4C2C557 /* FBSDKAccessTokenCacheV3_17.h */, + 70AE4640E658912F8EA7EB2D84532E59 /* FBSDKAccessTokenCacheV3_17.m */, + D61E6CD1DA3114DB0F3E65D1FD361D36 /* FBSDKAccessTokenCacheV3_21.h */, + 610C8660482AAF6DF1ED051F56BA7AAE /* FBSDKAccessTokenCacheV3_21.m */, + F4EC35BFE04E1EB232697BD6C033CA73 /* FBSDKAccessTokenCacheV4.h */, + 3708EBED7F7E311067B7CCF801145621 /* FBSDKAccessTokenCacheV4.m */, + 14615E83480751392A8DA9C806B52B9A /* FBSDKAccessTokenCaching.h */, + E5071678A9FFE38B25984E1DE154CA86 /* FBSDKAppEvents.h */, + 3ADDE928DDF753FD23E0044BC7A4C15B /* FBSDKAppEvents.m */, + DE7C9DBCE49E309207C0F6DBBD2FC077 /* FBSDKAppEvents+Internal.h */, + EF543883C6E0CD2FC7B4528B2C70C269 /* FBSDKAppEventsDeviceInfo.h */, + 94DCA4C48ED2DED1795550D3340FAB93 /* FBSDKAppEventsDeviceInfo.m */, + 05F2D63CC787EE0E5D2D0F0A73BAF4FB /* FBSDKAppEventsState.h */, + 306334793F42597A58A4BA17738769A8 /* FBSDKAppEventsState.m */, + 6A750B8C4CABD71000E78BA2523A93FE /* FBSDKAppEventsStateManager.h */, + 284C3412CE156CA93B1FBA2AB890B118 /* FBSDKAppEventsStateManager.m */, + E8E7C875C6D9ECD9F2B37DCBDFC9B2CD /* FBSDKAppEventsUtility.h */, + B0F4434611B4FFD948A3FA3E177D8791 /* FBSDKAppEventsUtility.m */, + 31A715898F55241C3204E5E8C95A3963 /* FBSDKAppLinkResolver.h */, + B739AEBEEECA5F2836D6FDE87E7DAD2C /* FBSDKAppLinkResolver.m */, + B22590D9365E880F05CFC1DC1066B067 /* FBSDKAppLinkUtility.h */, + E7679EFCB871C367D45B87FF04498A5E /* FBSDKAppLinkUtility.m */, + EB7DACF210125B509F4D6887A2B2D027 /* FBSDKApplicationDelegate.h */, + F83E67F4212B6068698963474A88BBC6 /* FBSDKApplicationDelegate.m */, + BC26A40586455BB8DD6BA95710C3486D /* FBSDKApplicationDelegate+Internal.h */, + 280B92F20BB7309511EA9EFC8DF7AB87 /* FBSDKAudioResourceLoader.h */, + 4E2155DA6D3D13D23A2BE2F0CBAFE632 /* FBSDKAudioResourceLoader.m */, + EC5644397B97AA444E77A9EB9CFC10E5 /* FBSDKBase64.h */, + 35EAA5B4750A741B6F6FB63B5EF161F6 /* FBSDKBase64.m */, + 3D36D6965ABDC70928CD459FE8BC3B89 /* FBSDKBoltsMeasurementEventListener.h */, + 19BCCC920CFF89CFA88D6CDFD23D5044 /* FBSDKBoltsMeasurementEventListener.m */, + 7EBCBD93200C3A10C234267D819C7E09 /* FBSDKBridgeAPICrypto.h */, + 058D4B861CA7EDC7CCC4C7CA51C1EEB8 /* FBSDKBridgeAPICrypto.m */, + 1F7C92F85D64501768D125A46270422E /* FBSDKBridgeAPIProtocol.h */, + EDB642C66D82496889ED7B13E6DBA70B /* FBSDKBridgeAPIProtocolNativeV1.h */, + C61DC81C824307F112DA576783266C8B /* FBSDKBridgeAPIProtocolNativeV1.m */, + ED57766F65BFA4FA25D7090346C97F28 /* FBSDKBridgeAPIProtocolType.h */, + 74F31D0EDF2CF7E7AAD77F746837D59A /* FBSDKBridgeAPIProtocolWebV1.h */, + 91A3C081AA893B7C7E3C720BDD0B87AA /* FBSDKBridgeAPIProtocolWebV1.m */, + 7865EEF23330A2B2953AF4D3772DDB3F /* FBSDKBridgeAPIProtocolWebV2.h */, + 07D7982BBC669B81B73D2DCE2C8D509E /* FBSDKBridgeAPIProtocolWebV2.m */, + 157F73E38A3EEBACD7E9F322201C0A4A /* FBSDKBridgeAPIRequest.h */, + 2701725284D1AF7F14D88A53E152A451 /* FBSDKBridgeAPIRequest.m */, + EAE1C285AB595843D879319E54ED6E95 /* FBSDKBridgeAPIRequest+Private.h */, + CDD73DC7AE87074EAEDF09FACACF5104 /* FBSDKBridgeAPIResponse.h */, + 41094B5E693D24C0D940E39D86E35B98 /* FBSDKBridgeAPIResponse.m */, + 43A8D4366E635D41E68C80330D1D6303 /* FBSDKButton.h */, + 5217066CC765E38FC661DB8DD6390679 /* FBSDKButton.m */, + ADC11EA5CCDB563EF63FECBB82F1809E /* FBSDKButton+Subclass.h */, + 62433B094D7197450919571030C74B07 /* FBSDKCloseIcon.h */, + 871A5A6C8E91EC01AA7DE9ACD7C59412 /* FBSDKCloseIcon.m */, + 9B08BB513ADF56CF82CFFF7B821CEAB4 /* FBSDKColor.h */, + 028707090FDF1694249FBC4759635D31 /* FBSDKColor.m */, + 567F41DC5BE80C8E3FAD7E42124F6A1D /* FBSDKConstants.h */, + 31B2F7D2FA080E49146AA5468986A493 /* FBSDKConstants.m */, + 1247DC0FBCBA3414C6BFB88ECA3ADA8D /* FBSDKContainerViewController.h */, + 9908DE4518F24CDCE9DEBFBD8AAF7A5E /* FBSDKContainerViewController.m */, + D388F363F30D7354C0DD6EF934AEF405 /* FBSDKCopying.h */, + 7A7F97E5324275ECE8A2DB0BB11F4382 /* FBSDKCoreKit.h */, + CD6F1D91AE76D53924F066A9E871A4E9 /* FBSDKCoreKit+Internal.h */, + 5F767B7B637099477E518FC655BBFC0A /* FBSDKCrypto.h */, + 722DD6778B0569325E2893B96510468D /* FBSDKCrypto.m */, + E2B84A286CDFEFD476C028DA645FE8B7 /* FBSDKDialogConfiguration.h */, + FA75267D4B40F3809876DEBF3F4D299B /* FBSDKDialogConfiguration.m */, + FD0EBED5DD6CD15CFA67F054ABDCDD72 /* FBSDKDynamicFrameworkLoader.h */, + B8734BB39E4CEA7D82E5591EDFECB01E /* FBSDKError.h */, + 7C38CB3F5B5846CA53D031EA7F63E697 /* FBSDKError.m */, + 2E0D7EF42282EAA7CA554AA254D0F09A /* FBSDKErrorConfiguration.h */, + A0AA88C65C641FBD65F890D8F0AB8026 /* FBSDKErrorConfiguration.m */, + 1ED733F365A4B7276A584251EDEE13D3 /* FBSDKErrorRecoveryAttempter.h */, + B674C021D7D553529D1868DE6724ACF5 /* FBSDKErrorRecoveryAttempter.m */, + B7F77AE462F767DFBBE7AE020EC34F77 /* FBSDKErrorRecoveryConfiguration.h */, + 19ACD332B62F67CAEE524FC72B49A909 /* FBSDKErrorRecoveryConfiguration.m */, + A0C91A1662596A108F805EA72954D11C /* FBSDKGraphErrorRecoveryProcessor.h */, + EE40A18D405EDF0DDC2E9EB039576D21 /* FBSDKGraphErrorRecoveryProcessor.m */, + 152E9CDD4624FDDC8186CF180C5EFED9 /* FBSDKGraphRequest.h */, + 60D3605114807AAF6515D9AEE323E75B /* FBSDKGraphRequest.m */, + B122B4FE33C8E68A4C66FCFE7DC77AF7 /* FBSDKGraphRequest+Internal.h */, + 10FB754E7CB98525F95328FAD2C2D788 /* FBSDKGraphRequestBody.h */, + C68D370A7D08931EEB8E723D7B8F35E9 /* FBSDKGraphRequestBody.m */, + 0F7F02E2032B63EE2D9E989373528958 /* FBSDKGraphRequestConnection.h */, + 9F4B36F14A355821D7E2FB123300DDCD /* FBSDKGraphRequestConnection.m */, + 178E1657CE29AD06224A9CDAE2FF258D /* FBSDKGraphRequestConnection+Internal.h */, + F7A8AFB90B055F7CA759BA8AC799303F /* FBSDKGraphRequestDataAttachment.h */, + 5942BB14DE3948BBEF602394405639FE /* FBSDKGraphRequestDataAttachment.m */, + C394ED14B3FB109EF6BFAA2414984518 /* FBSDKGraphRequestMetadata.h */, + 8827063A0A317BDA830C5A1CBEC3F03F /* FBSDKGraphRequestMetadata.m */, + C038B21BF92B30435A80432688533E05 /* FBSDKGraphRequestPiggybackManager.h */, + F02776DDFE76E235B5AF885797A8F4B7 /* FBSDKGraphRequestPiggybackManager.m */, + 35E1B52EE3E2E3E51117F76E0A815856 /* FBSDKIcon.h */, + 60BBB09A1AF30CA3EF9CB3294AA8A5F9 /* FBSDKIcon.m */, + 1C0C4E8FFB7B46EAF4E88536FB6D05C9 /* FBSDKInternalUtility.h */, + 13314419869A5B70A3A44B8807BA61CF /* FBSDKInternalUtility.m */, + A4776CCEC32BF011FC6F64F822052FDC /* FBSDKKeychainStore.h */, + 33370AFC4AF7E1BD533B19E83C86384C /* FBSDKKeychainStore.m */, + 0817A1706D8DF4000848B118C9DEE924 /* FBSDKKeychainStoreViaBundleID.h */, + 5BF0534631608C66AF55C61D37D30B11 /* FBSDKKeychainStoreViaBundleID.m */, + E77CF83F87413203B1BFCA6ED0238DAC /* FBSDKLogger.h */, + B0FEAD05D23D395F290529EE5DB73F6C /* FBSDKLogger.m */, + 21118A1801B385E14793771E3E2EB3DD /* FBSDKLogo.h */, + 578C1B0AB298F33880AF7743E63A09A6 /* FBSDKLogo.m */, + A07F69889F21865BABF7494B7A375A53 /* FBSDKMacros.h */, + 2CB8B17646606A4BA50309E5B9768E26 /* FBSDKMaleSilhouetteIcon.h */, + B0708AC2D79933D1B00549B5767FE60C /* FBSDKMaleSilhouetteIcon.m */, + 5E92731E3FF7A77ABF62EC441D94D3BF /* FBSDKMath.h */, + 8E36424AEF035DA22DC2D4053D625671 /* FBSDKMath.m */, + 96619AD29A8E305120281298BB9C2117 /* FBSDKMonotonicTime.h */, + BB64BAB52FC9332856CA17F5ECED7115 /* FBSDKMonotonicTime.m */, + A4AD7609287338B0BF2365DE061D4525 /* FBSDKMutableCopying.h */, + 25820261B6FF28709163579438BE7D8E /* FBSDKPaymentObserver.h */, + 8918E95EAEEA3883B0958070A6D63E5B /* FBSDKPaymentObserver.m */, + D200CBDECE639A7FCC23CBA4AA40C197 /* FBSDKProfile.h */, + 0BD744AF804A9F5355C68DFD41621893 /* FBSDKProfile.m */, + F213A888C3CDCF3160CB878D06CDFD7B /* FBSDKProfile+Internal.h */, + E4D9A54A95B795541832AC67B6AD76BE /* FBSDKProfilePictureView.h */, + C5C45B89F5B6C19209EDAD31A79E371D /* FBSDKProfilePictureView.m */, + DFB946FBB5587B0F326E668F21F73F3B /* FBSDKServerConfiguration.h */, + 2B91208A301E53477B2B4CCCF31C14AB /* FBSDKServerConfiguration.m */, + EE07970368BAD29465F0F84B9B1BBF89 /* FBSDKServerConfiguration+Internal.h */, + 1BCC4C05D309B44EE5FE3BCBCEF29FF9 /* FBSDKServerConfigurationManager.h */, + 405EFED49FCFF2D26196C7FDF11D924D /* FBSDKServerConfigurationManager.m */, + 93BC124A0CB4D829CA7468516B1F1877 /* FBSDKServerConfigurationManager+Internal.h */, + E39D48341F0F70D7E687A32C109136F4 /* FBSDKSettings.h */, + D94AA448EE0BB8B639F08787CE1F8480 /* FBSDKSettings.m */, + CF8B294E2A7B44762772B83EB5F37585 /* FBSDKSettings+Internal.h */, + 15A55E8ABB2D9F00C4D7E5B591503FC7 /* FBSDKSystemAccountStoreAdapter.h */, + 9278C0A565B9938261216A43EA0177CA /* FBSDKSystemAccountStoreAdapter.m */, + 7679ACE8F1FCAA1786579B614C35BAC0 /* FBSDKTestUsersManager.h */, + 985038F14FE8FC23678ED1F7DDCF796A /* FBSDKTestUsersManager.m */, + 6C943F70CC022BD45D5BC6C312618A47 /* FBSDKTimeSpentData.h */, + 7442E5ADF75557556E523DE6A1E3BE3E /* FBSDKTimeSpentData.m */, + 56DB0C886738CB142BFF8D6C68BDC124 /* FBSDKTriStateBOOL.h */, + 897397ACC5D65221928DE26C756E60EC /* FBSDKTriStateBOOL.m */, + 73DFE94251B23509786E450651A48B90 /* FBSDKTypeUtility.h */, + 44AC0AE8CCB6A9AA9E28BD0E07607467 /* FBSDKTypeUtility.m */, + 13F8602E2C5A9AB96363E1F7B1EFEED6 /* FBSDKUIUtility.h */, + 8DFAA71E4A500F993C066198D2F6B141 /* FBSDKURLConnection.h */, + FBE9B1CE32D01F9E50A891EA8A4513A7 /* FBSDKURLConnection.m */, + E6BB98CFA5D8A318326528AF33DF0BEC /* FBSDKURLOpening.h */, + BD030BCD3379D3A583CB4E1BF4757DAE /* FBSDKUtility.h */, + 95D6DC3AAED48153E982E7B6CE2ACBF2 /* FBSDKUtility.m */, + 3B0A0F292A52A1B2A4F4BBA76248ED29 /* FBSDKViewImpressionTracker.h */, + 260655407F577D163F7D60F3E66F4979 /* FBSDKViewImpressionTracker.m */, + AE6E4E1A35E5A1578967DF2865545D99 /* FBSDKWebDialog.h */, + 4CAFF3BEDD8F0042F6050C5859DE2A0E /* FBSDKWebDialog.m */, + CE802EE1D42445FFBD68FDC5F1B53019 /* FBSDKWebDialogView.h */, + F5599187F396820DE7700A6E7F6E43A9 /* FBSDKWebDialogView.m */, + 3E52BB93D7804BC50FDA99B9B59EB044 /* _FBSDKTemporaryErrorRecoveryAttempter.h */, + 1164BD18616ED3B6D9FECCCA99F68888 /* _FBSDKTemporaryErrorRecoveryAttempter.m */, ); - name = AppLinks; + name = arc; sourceTree = ""; }; - 53F661C0CA7190D2CF05023FB33D61E4 /* iOS */ = { + 7C3BC2426BF03CF0C6EE58DAC886DC2F /* Support Files */ = { isa = PBXGroup; children = ( - ED3ABC29606CB6F9337BB302194076AB /* Foundation.framework */, + 0468C80564B418DC62D6A06C75D47E20 /* Bolts.xcconfig */, + 5292F6C0B6F153791486694C6FF45617 /* Bolts-Private.xcconfig */, + 1CC6FCED7A91E155259651DBC0B5262D /* Bolts-dummy.m */, + 86A4C332D9CCAF6221388ED57676952A /* Bolts-prefix.pch */, ); - name = iOS; + name = "Support Files"; + path = "../Target Support Files/Bolts"; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 7D3053D38CB358506E523E685B3B2235 /* Support Files */ = { isa = PBXGroup; children = ( - BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, - BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, - AFB94B753B1CA4679A1C2B9C5B31ED92 /* Pods */, - CCA510CFBEA2D207524CDA0D73C3B561 /* Products */, - D2411A5FE7F7A004607BED49990C37F4 /* Targets Support Files */, + D8814D734B55D0B745B301CCCD84E999 /* FBSDKLoginKit.xcconfig */, + 06B9B52AD9A3CF756611E7DAA22CE383 /* FBSDKLoginKit-Private.xcconfig */, + 2EE36FA36A8C91403AF93CAE6EDA4A1B /* FBSDKLoginKit-dummy.m */, + CF97A4EB4D2F59FF601E2BE734C11228 /* FBSDKLoginKit-prefix.pch */, ); + name = "Support Files"; + path = "../Target Support Files/FBSDKLoginKit"; sourceTree = ""; }; - 885A2BF9367C2A3CF8D74CD10FD14D4A /* arc */ = { + 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( - F406E6A99876CF2EAA128E3273EA1168 /* FBSDKAccessToken.h */, - 0C1EFFE13B9B3F21423A0453CAE574AA /* FBSDKAccessToken.m */, - 90AC4DD014072A65EE77000860896177 /* FBSDKAccessTokenCache.h */, - 074F24F3EBCC23154EFFEDC5D0444966 /* FBSDKAccessTokenCache.m */, - 9D28A8973855B42B7E0B94F7F2E7F679 /* FBSDKAccessTokenCacheV3.h */, - F782EBF11CD0B444B301A6D62DB3982D /* FBSDKAccessTokenCacheV3.m */, - 9D663126B6E34DDA8860BAE880B56139 /* FBSDKAccessTokenCacheV3_17.h */, - BAD471AA47694836A5869F2C1DA93F88 /* FBSDKAccessTokenCacheV3_17.m */, - 7575CD22562E2CAF02FF831B37B73C85 /* FBSDKAccessTokenCacheV3_21.h */, - 6E2113F2BAA1CC96FE4BEBF42FE4C415 /* FBSDKAccessTokenCacheV3_21.m */, - C60FB16C403DE81404C5A483846D5521 /* FBSDKAccessTokenCacheV4.h */, - A876B3147441FD714C84B3F962F228FF /* FBSDKAccessTokenCacheV4.m */, - E4742C855FF14D3374DADBC22D0B3626 /* FBSDKAccessTokenCaching.h */, - CE51C4347F37793614B7D2FE3580EA38 /* FBSDKAppEvents.h */, - 1C57395BC9AB5BA1544DDD898B1B9146 /* FBSDKAppEvents.m */, - FF2AA4084EE7DD2A0CE09C7DE485C764 /* FBSDKAppEvents+Internal.h */, - 68E38006C5CB85E78FC2D6A4FA68A3D9 /* FBSDKAppEventsDeviceInfo.h */, - A531906FF2DAF6D0F7F834076CBEC4C2 /* FBSDKAppEventsDeviceInfo.m */, - 53532C476C4D8D532ED66CDBF0F8657F /* FBSDKAppEventsState.h */, - C39716FEDA3645018E76AA83F2EC2FD6 /* FBSDKAppEventsState.m */, - A7B8DF220992413B87518E5E85B18E32 /* FBSDKAppEventsStateManager.h */, - C1908C17C35F6446698AE8C14A7A62E7 /* FBSDKAppEventsStateManager.m */, - E08C0F0B4B039E308A51F4526A22E667 /* FBSDKAppEventsUtility.h */, - 5D27D517A8FA7ABC01A523D4CC9BF059 /* FBSDKAppEventsUtility.m */, - A06FF11F33DBF85168D2BFEA8F9CC0B6 /* FBSDKAppLinkResolver.h */, - 38F0EE39E8FB99923B05946F733FCDE6 /* FBSDKAppLinkResolver.m */, - 7153F996BEDD033559675D14F2FB9FAA /* FBSDKAppLinkUtility.h */, - 897E8201CCE098369853632C2B3C6896 /* FBSDKAppLinkUtility.m */, - 7B5BB805709FFB6878A293945C7DD6EB /* FBSDKApplicationDelegate.h */, - 841EA80357141FB191529428AA4841A0 /* FBSDKApplicationDelegate.m */, - 72918635A11FE88E26388BB52C7A8F7A /* FBSDKApplicationDelegate+Internal.h */, - 39DDF6968CBE57929F3632EACEAB2610 /* FBSDKAudioResourceLoader.h */, - 4722FCF8C978A7B204A55D0BF6F34B2D /* FBSDKAudioResourceLoader.m */, - 7EE2EF71BA2F3066A6E38404F4C6E5BB /* FBSDKBase64.h */, - 398C73EFC085AF867FD191360CA9E692 /* FBSDKBase64.m */, - 79C5E77BE16EE3DED6079065F72F3119 /* FBSDKBoltsMeasurementEventListener.h */, - 771E8EB6E927AC1AE9224E750AB1243B /* FBSDKBoltsMeasurementEventListener.m */, - 6B58B12D0098350BFEF482A1274F3C4D /* FBSDKBridgeAPICrypto.h */, - 25C81CF10A1B913E3ECE5AE4BC865122 /* FBSDKBridgeAPICrypto.m */, - 8DDFB93965E515FAEA6FB7A51182E549 /* FBSDKBridgeAPIProtocol.h */, - D34AA74CF0863A8C0BD1947CC4821F52 /* FBSDKBridgeAPIProtocolNativeV1.h */, - 21E2EC6DEE56644A5CEFC5F1DD108201 /* FBSDKBridgeAPIProtocolNativeV1.m */, - 804DC229C4E97BF5C05E79781E0F3F75 /* FBSDKBridgeAPIProtocolType.h */, - B84EE2CCC07E78723DCBA09471C30EFC /* FBSDKBridgeAPIProtocolWebV1.h */, - 2ED2A1728265E00DF4FCBB52224C6768 /* FBSDKBridgeAPIProtocolWebV1.m */, - B3A5B22F878870CE770E0E9B97C28A59 /* FBSDKBridgeAPIProtocolWebV2.h */, - 7325C6E7A2B3643DE8F984C17DF372D7 /* FBSDKBridgeAPIProtocolWebV2.m */, - C2EF67EB1769993AA0E90FD5B40C0518 /* FBSDKBridgeAPIRequest.h */, - 80A48EDE1E87DD0DC00057715A434A28 /* FBSDKBridgeAPIRequest.m */, - 165375EAB1DC28C393658A5139DE1C57 /* FBSDKBridgeAPIRequest+Private.h */, - 7CA71C2FA19AA4DF65FFE25558510C11 /* FBSDKBridgeAPIResponse.h */, - D598B036F0405E2C2F154346BADBAF5E /* FBSDKBridgeAPIResponse.m */, - 74E292C58D36C37E72777B5729D63ECC /* FBSDKButton.h */, - EB1A78A2C977DABC4740C7FC08BBB2F7 /* FBSDKButton.m */, - DEFB08AC2015F546E03A7EBE7B531F87 /* FBSDKButton+Subclass.h */, - 8AB293581B2CC2E15600E1001DBBA77B /* FBSDKCloseIcon.h */, - 4864721E089588E27ACD5169546B84B7 /* FBSDKCloseIcon.m */, - 4ED0E1AC1869827BA4E401AEE8EF913D /* FBSDKColor.h */, - 2274A950D07549AC3A4D354548562493 /* FBSDKColor.m */, - 8AAFA5AFB7771A50B2E04EE16097AE2E /* FBSDKConstants.h */, - 23160D89AEAF98B6D83BB6EF3E05310E /* FBSDKConstants.m */, - 35F0D9C7E4A77DC844319010E2664C26 /* FBSDKContainerViewController.h */, - 15C51B4DF1030238AF6D7649E82788B5 /* FBSDKContainerViewController.m */, - B2AFE071DB027CD94877612CFD3D006B /* FBSDKCopying.h */, - 157A1552C1C00504C4E58FB57CF5F9EA /* FBSDKCoreKit.h */, - 9186B74312AC521E7BBF48001A87F4DB /* FBSDKCoreKit+Internal.h */, - 4AE311A8C1894882C4A2DCB8EE2013E8 /* FBSDKCrypto.h */, - 3686DA8DE42E552A6664A3515098B2AC /* FBSDKCrypto.m */, - 8761049FB9D429C3A55046B90C71D88B /* FBSDKDialogConfiguration.h */, - 893AE4BEC580A446CE3ABAEAD7B53BAF /* FBSDKDialogConfiguration.m */, - E557465C83E744378BD9E99E95EE5177 /* FBSDKDynamicFrameworkLoader.h */, - 06D6B35A2ACE17598D198FFFA920B997 /* FBSDKError.h */, - CCF95C1DF1520BBB95BB1817504B8776 /* FBSDKError.m */, - 9C68C4E5CCC43F6D12B543C207FF10C8 /* FBSDKErrorConfiguration.h */, - 51C741025D484F6D07E6AD3AEA7291A5 /* FBSDKErrorConfiguration.m */, - C241898523306A2F36BA957442AECE37 /* FBSDKErrorRecoveryAttempter.h */, - 8D7947DAFEA73B2AEDEE3110BE69C4C3 /* FBSDKErrorRecoveryAttempter.m */, - 8D104BC85E9A4726C0D1B381B549BABF /* FBSDKErrorRecoveryConfiguration.h */, - 26DE794F5D70A3E6AA3856E8B437F8A1 /* FBSDKErrorRecoveryConfiguration.m */, - BE01B3E5B1C99EAC2141DD5F8AB29249 /* FBSDKGraphErrorRecoveryProcessor.h */, - 2BE2BA427F26BC5B28DC6D9605083C58 /* FBSDKGraphErrorRecoveryProcessor.m */, - 9E6BD5EA50424CA24CA7148B1E4A106B /* FBSDKGraphRequest.h */, - FE3F695A6D43B329CB5E37EDF6B476D5 /* FBSDKGraphRequest.m */, - 1BFC2409C44B8CD69A6C03A63F32F7CA /* FBSDKGraphRequest+Internal.h */, - 3196869736428BB66717FE7BFDA19965 /* FBSDKGraphRequestBody.h */, - 51572F406F0AFA9A30C97AF6374A415C /* FBSDKGraphRequestBody.m */, - 90A9CEFADF5414847EB52B6DB5FB52C1 /* FBSDKGraphRequestConnection.h */, - C5971F3A2B0D25D55D3B109A7C6871E9 /* FBSDKGraphRequestConnection.m */, - 32CA3C7FC2ED01D33FB4A2353CF242BA /* FBSDKGraphRequestConnection+Internal.h */, - D2532E23A345066E6895AB5BFA257B95 /* FBSDKGraphRequestDataAttachment.h */, - EA0A354774F149974049A4C2978DCC7F /* FBSDKGraphRequestDataAttachment.m */, - 79B5D96C4AD1BAD8C5A16095FE40D904 /* FBSDKGraphRequestMetadata.h */, - A71B981C41660472869BD0AAB04382C0 /* FBSDKGraphRequestMetadata.m */, - 7A3FFE114934342A6293CAA369A5684A /* FBSDKGraphRequestPiggybackManager.h */, - C1C914E1A584C53FF0F2FF1FA95D8D97 /* FBSDKGraphRequestPiggybackManager.m */, - F3AA812465C239C11602D1E90810FE4A /* FBSDKIcon.h */, - ECC9B0749C18CB8AF78E670D8E76B4BC /* FBSDKIcon.m */, - 5649742E243B8F68ED6ABBD16F3AD910 /* FBSDKInternalUtility.h */, - EC03B77FB6AEBB7B42B5DDA048688205 /* FBSDKInternalUtility.m */, - 67BBE784A2801F01F65EAF698A7A4C65 /* FBSDKKeychainStore.h */, - C7EE49040D26C6D8282770B424B78159 /* FBSDKKeychainStore.m */, - AC13EFDCE9B8FF9E1CAE5BEBCA2D7C17 /* FBSDKKeychainStoreViaBundleID.h */, - C6C55AB8CC2B8BA526A40CE4AE0092BD /* FBSDKKeychainStoreViaBundleID.m */, - DD2D3EA91E3DEECA63A7E8D2F61622D0 /* FBSDKLogger.h */, - 1C9260CF6266A23A17B2C842C283E8D9 /* FBSDKLogger.m */, - 330D9CC147E914E18E2035F5B6441E5F /* FBSDKLogo.h */, - 2B3F8F8D1757081C79044C13664E9E9A /* FBSDKLogo.m */, - 162FD6F0F18A8A4BD0969AEABB0CC78C /* FBSDKMacros.h */, - B3B6ED0B1490827E42BF16379DC889D8 /* FBSDKMaleSilhouetteIcon.h */, - 86B1B9D4698C595DBEBFF71FBA796D03 /* FBSDKMaleSilhouetteIcon.m */, - AD6CB1A023BD68BC921696ADB8AB358D /* FBSDKMath.h */, - B1C83C2BB6E10A770B424DDCA045A3DA /* FBSDKMath.m */, - 8C4122009F6CCD4958E84541DAFBE9B1 /* FBSDKMonotonicTime.h */, - 6A029B649640C1353F893551FE5BEA9F /* FBSDKMonotonicTime.m */, - 78B2C5646EBCB59F70AD7D01594943A9 /* FBSDKMutableCopying.h */, - D83F322AAF71062208A8ED107E20BF12 /* FBSDKPaymentObserver.h */, - F970F2C40DCD372EE55CFFE828E80CAE /* FBSDKPaymentObserver.m */, - 1F11E9B9214843E4C733658288B46F50 /* FBSDKProfile.h */, - 9D227F15B3C39C8F240799FC97C03FC7 /* FBSDKProfile.m */, - 02865F67BBD6040226CBD1FDBA29F5A2 /* FBSDKProfile+Internal.h */, - 57875897B510F5382AD775C0A28734A2 /* FBSDKProfilePictureView.h */, - 3ACFCDE2F85688257805323CB7568B51 /* FBSDKProfilePictureView.m */, - 09F5BB824C951F2045215ED0D7633774 /* FBSDKServerConfiguration.h */, - 279F862324C9CEB1307D4D63451084C5 /* FBSDKServerConfiguration.m */, - E89EBAE854490CCB0C5339A4813E9B51 /* FBSDKServerConfiguration+Internal.h */, - 16E3A15FF65AF85ABCD42065EAAAF029 /* FBSDKServerConfigurationManager.h */, - 03F85D35C27D1671D1F41676A47CD249 /* FBSDKServerConfigurationManager.m */, - DF75B30DC0865920AE9E1B19F32AD80B /* FBSDKServerConfigurationManager+Internal.h */, - A52D1235E783D39988D2B6E470ADDA7F /* FBSDKSettings.h */, - C0BF39E0E35CD7253485DDB425C68004 /* FBSDKSettings.m */, - 4C592CC7FBD1BF17DD1A484916AA7E85 /* FBSDKSettings+Internal.h */, - 3A8296B0778C8F6FF86E096891EC3330 /* FBSDKSystemAccountStoreAdapter.h */, - 1E67958ECD2A430829F342463DD96876 /* FBSDKSystemAccountStoreAdapter.m */, - EF36FE5802B718C77F58F0A55F941FAD /* FBSDKTestUsersManager.h */, - BAB751FF25D6FB93E08CE08011C84895 /* FBSDKTestUsersManager.m */, - 9B6EB12A21506DEFAD3D1AC35360E429 /* FBSDKTimeSpentData.h */, - B70E4B942E4F5FFDC75D62D5A35A3A59 /* FBSDKTimeSpentData.m */, - CE853CD10ECD55C2CF0F9E4CC5C3118D /* FBSDKTriStateBOOL.h */, - 4224206215E4AE2302FDC96A58E94814 /* FBSDKTriStateBOOL.m */, - 6150512B0D0562C3F6C90F95463621B1 /* FBSDKTypeUtility.h */, - 55931A99F538C33CD1E60CBBF28D7444 /* FBSDKTypeUtility.m */, - 500B28CDDA39D831040A82A0735DA513 /* FBSDKUIUtility.h */, - 0B6A3059AD3E528BC8797D2FC76256C7 /* FBSDKURLConnection.h */, - 8C99BF979526D0E1A3D9A5677F3A18A6 /* FBSDKURLConnection.m */, - 485C58584AC1DB1D243A5A57D0B31866 /* FBSDKURLOpening.h */, - 18686D428534EFB249C7C2B72191F907 /* FBSDKUtility.h */, - 1A00FD05BA1219E73100D7E090F01F37 /* FBSDKUtility.m */, - 2FF996A5E210707A84723CEF66C72615 /* FBSDKViewImpressionTracker.h */, - 26339C8E6E8F5A145E0410B33CAEFC76 /* FBSDKViewImpressionTracker.m */, - AB8EC144295EC6E09242AFA1DE8FBB93 /* FBSDKWebDialog.h */, - 9CEC8B35C95959831EE1057B11322CE9 /* FBSDKWebDialog.m */, - DA70E0602DF174C01CBE4AAC4B2FDD83 /* FBSDKWebDialogView.h */, - 9A98A92B293F049F7956A464E5A69C36 /* FBSDKWebDialogView.m */, - 002664079DFD68B6479C6AB0F0232180 /* _FBSDKTemporaryErrorRecoveryAttempter.h */, - C9E21BE33CA995E3E18A1344838330D8 /* _FBSDKTemporaryErrorRecoveryAttempter.m */, + BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, + 24002A6670E6882ECD6250D3E60F9CB2 /* Frameworks */, + F4AE91E31AD3333C57E7E667D8F1BD22 /* Pods */, + CCA510CFBEA2D207524CDA0D73C3B561 /* Products */, + D2411A5FE7F7A004607BED49990C37F4 /* Targets Support Files */, ); - name = arc; sourceTree = ""; }; - 8FF9755ACA8D8BC0033F70A1B9DA11C9 /* FBSDKShareKit */ = { + 89794D4255CC3FB783978193B2E5DA10 /* AppLinks */ = { isa = PBXGroup; children = ( - 37D367937646E4E05AD9519B21B1F566 /* FBSDKAppGroupAddDialog.h */, - E01F50F6336774FE25601285EEF01EE5 /* FBSDKAppGroupAddDialog.m */, - 6DF70211D471BD5D151D459A27B6B280 /* FBSDKAppGroupContent.h */, - E777FE88F6ABED3F476963B5B7D5C3C1 /* FBSDKAppGroupContent.m */, - 3B46B41FC5464B48A5B5275DA0C6D3E5 /* FBSDKAppGroupJoinDialog.h */, - 066BD5A6D3EB9C54F7FF6EC096EE0937 /* FBSDKAppGroupJoinDialog.m */, - A756AEA07B826EDE98ADCBC9C088F709 /* FBSDKAppInviteContent.h */, - 78C57BD49A74C10B14C023D390C280E1 /* FBSDKAppInviteContent.m */, - 924C84F16E12DF079D8940F931F315CC /* FBSDKAppInviteDialog.h */, - 386BE61982EC743B3A128214EC83CFCD /* FBSDKAppInviteDialog.m */, - A4A098339793E5BCA2444DB32B7612F4 /* FBSDKCheckmarkIcon.h */, - ADEFB298B7B2CC468183D78059BF9DF7 /* FBSDKCheckmarkIcon.m */, - DB675133B40BF7554858A2DB108E8BFF /* FBSDKGameRequestContent.h */, - 2A44558D108D044EF825B0B6D60677E9 /* FBSDKGameRequestContent.m */, - CE22ABAF0BB23620853203C50BFB6759 /* FBSDKGameRequestDialog.h */, - F0F21F7A00DAFE2805355B155B9130E2 /* FBSDKGameRequestDialog.m */, - EE99AA22341E1A198DE866465C3C3091 /* FBSDKGameRequestFrictionlessRecipientCache.h */, - B3806A1B94DBFDDC3984E1C3453BD094 /* FBSDKGameRequestFrictionlessRecipientCache.m */, - 6F5D9A88B97412C115AF0CFCA999F8C2 /* FBSDKLikeActionController.h */, - 8E629243AE4F868C8E75AC372D1DEC6A /* FBSDKLikeActionController.m */, - 4DCA2983B324CC477B5B90C4E6EF6536 /* FBSDKLikeActionControllerCache.h */, - 9690B619FE2AAD1DC6925B4C2698A069 /* FBSDKLikeActionControllerCache.m */, - B6CB010DF4304781A764957D945B27F3 /* FBSDKLikeBoxBorderView.h */, - 4EADBDF1DFD27B8D0B09D789CE9B66A6 /* FBSDKLikeBoxBorderView.m */, - 1E20D900533A9FD00F2DC7A1D0797CA4 /* FBSDKLikeBoxView.h */, - 9650DB5BE3E3803B05EEF2BA728FD08A /* FBSDKLikeBoxView.m */, - 21EBC77612C0C02A1BCC39116437EA23 /* FBSDKLikeButton.h */, - 7106B5AFA24BAAD954C531BB2060F0F6 /* FBSDKLikeButton.m */, - 9E2D8292478F266CEC5D9B4545F591A5 /* FBSDKLikeButton+Internal.h */, - D6E644B97F6CC42B51B503C2EF1D6C1A /* FBSDKLikeButtonPopWAV.h */, - 17CB7B06981F44E91DD1BCD38D59103C /* FBSDKLikeButtonPopWAV.m */, - B7D0AE422908565AD433E41A1778C632 /* FBSDKLikeControl.h */, - 1D2C8E2D65E652FD1F3E1F311E40A83B /* FBSDKLikeControl.m */, - C4AB5BA93BA69576C5A0A741C5004F05 /* FBSDKLikeControl+Internal.h */, - 84FC51CEFB7A3CAD3C1BD50FBFC5A2C2 /* FBSDKLikeDialog.h */, - FFDC8DE8F321A7C08F3D315635B2B056 /* FBSDKLikeDialog.m */, - 2089FF7B2CC0E94D22CE2F8418713448 /* FBSDKLikeObjectType.h */, - E523319DE2F5CBA2664EF1861CAE8385 /* FBSDKLikeObjectType.m */, - A7A6AB04D37A2DB4DEA04B11CAFFAB82 /* FBSDKLiking.h */, - 00A650A22497211EEC0B83849E6FA811 /* FBSDKMessageDialog.h */, - 924FEBD3A9C3142529E09988A1AF5D31 /* FBSDKMessageDialog.m */, - 68926D1EF195CCE0C2B10D9C7EA6D834 /* FBSDKMessengerIcon.h */, - 7A95DEF7BEDE8726F9906E6535257C80 /* FBSDKMessengerIcon.m */, - 12EBCA469BCC9A652E162B87170B3030 /* FBSDKSendButton.h */, - 921B4A2DE5C84AE72BF2515994B661FA /* FBSDKSendButton.m */, - C2BBB16B19727EFA6001D8DA5BFDAE63 /* FBSDKShareAPI.h */, - A8F6921FE57CF7CEB82F14DE7C7F1ADE /* FBSDKShareAPI.m */, - 8725E71411518E68EEDB1C8286EE55BB /* FBSDKShareButton.h */, - 48B7ACF3FD17DCB8BD8D200A9067137C /* FBSDKShareButton.m */, - 6B2E189F86CFA538D17F926EC1C45AC6 /* FBSDKShareConstants.h */, - 1A47608DFA1AF84E7AB9DCCF058C78F1 /* FBSDKShareConstants.m */, - 88875A5B7AE372A96E9961E4551A6C07 /* FBSDKShareDefines.h */, - FD8213BF5D4E3A775DE2CDFE95B11D27 /* FBSDKShareDialog.h */, - 739A8FE1539F5F0119E36821784CB8EE /* FBSDKShareDialog.m */, - BCB27FC0CB1D4381C0F19C75A5B1FBF4 /* FBSDKShareDialogMode.h */, - 5111C7A616531A62E55A8FC7C6C72498 /* FBSDKShareDialogMode.m */, - C88A57B8E059E22B232E9A1336DCB6C3 /* FBSDKShareError.h */, - 63BF64F3A37FC48CF494725985B8BBE2 /* FBSDKShareError.m */, - E9F08741DEF6A1D2B1AC19BDAA8B851A /* FBSDKShareKit.h */, - B63D1AD2ED4371D377A70F2324E760DE /* FBSDKShareKit+Internal.h */, - 02A139F6C34566CB47C35B489480DD07 /* FBSDKShareLinkContent.h */, - B6C469BF1DF1A22E1734404841744335 /* FBSDKShareLinkContent.m */, - B6F3BB37BEED8098957948DDEC201160 /* FBSDKShareLinkContent+Internal.h */, - 7541C21C9026B7882A0CA33D03229333 /* FBSDKShareOpenGraphAction.h */, - 5E2C28D858D12923C51D6A59FF47FAFC /* FBSDKShareOpenGraphAction.m */, - 9A1979D48C487FA3EDA1159EF3852F20 /* FBSDKShareOpenGraphContent.h */, - C57529A9BA3C0D011FCAA5B9F68062A5 /* FBSDKShareOpenGraphContent.m */, - B0F5B126E4385B53E9C73775BBC036F5 /* FBSDKShareOpenGraphObject.h */, - 8123DF664552E1E50D61750680BB63BA /* FBSDKShareOpenGraphObject.m */, - B516688D51560D55EF42ADE2FB6AA4AE /* FBSDKShareOpenGraphValueContainer.h */, - C082E4FF16E72FFD979AA487D6E60C1E /* FBSDKShareOpenGraphValueContainer.m */, - CCAB63AD3B56ABA526AA33F4B072751D /* FBSDKShareOpenGraphValueContainer+Internal.h */, - ADD174C9CB223131CA86CA2808E20A95 /* FBSDKSharePhoto.h */, - 4B8E40E6E3F7E645FF915A402B90C5FC /* FBSDKSharePhoto.m */, - A3F48D508CF9A089F6D2FBD3067DE053 /* FBSDKSharePhotoContent.h */, - F0BE2E93E589BAAD87094107404458C4 /* FBSDKSharePhotoContent.m */, - 44B2E26031F3FC70570B8D0355B9107A /* FBSDKShareUtility.h */, - 12D8EA79EFC598C83745B7B3A0BA4184 /* FBSDKShareUtility.m */, - 0CBBB605F74764838E88897E88411957 /* FBSDKShareVideo.h */, - FBD42041AE768C9FC5ED4984163A2D43 /* FBSDKShareVideo.m */, - C189A94CF246B97BF2987B6E1D8D19A2 /* FBSDKShareVideoContent.h */, - E8A41D002C9FB24CD74E5A6B80176BA2 /* FBSDKShareVideoContent.m */, - 3E96A05C4068F79754A471DFA28BAAA5 /* FBSDKSharing.h */, - F2CC45F6A7650A6695B67A7054C43C61 /* FBSDKSharingButton.h */, - DF9B508AC2E512E2315EE3967D33A86C /* FBSDKSharingContent.h */, - 03D972F8FD8FDE13BB9FF3BADFDE04EF /* Support Files */, + 17B1E05B566A858D61F1885B32B64AF7 /* BFAppLink.h */, + 2198309D71CC7402D65F16A43667E437 /* BFAppLink.m */, + 32F98A56A6F6C88E819D8937E418E312 /* BFAppLinkNavigation.h */, + 10F366B82EB075ED6CFE0882D1B87BBA /* BFAppLinkNavigation.m */, + AC06B3B87B029CEA32581C7CEB6C05B0 /* BFAppLinkResolving.h */, + B152B331790608828B3D3221EF8BB3FA /* BFAppLinkReturnToRefererController.h */, + 3CB9A90D939500BE1CEC8324CA790C85 /* BFAppLinkReturnToRefererController.m */, + 90C4E8263D7D7018E90CB006AE5285EA /* BFAppLinkReturnToRefererView.h */, + 32BA9072F15BE4F0B32F6D4CBC36210A /* BFAppLinkReturnToRefererView.m */, + EDD5CE9B3424920B0391E833E095927E /* BFAppLinkReturnToRefererView_Internal.h */, + 041D6BFA828C5A1E9512BEEFEC8F8283 /* BFAppLinkTarget.h */, + B98993B6CB83A0F4F6836BA48CB8855E /* BFAppLinkTarget.m */, + 2315D6063FC476611A25D1D15DDAD009 /* BFAppLink_Internal.h */, + D1F353DA75094169460F4E178D67879F /* BFMeasurementEvent.h */, + 993A21CE56E830A28F273FBEE71237B7 /* BFMeasurementEvent.m */, + BFBAFABD8F6AE7D797021761B45B56BF /* BFMeasurementEvent_Internal.h */, + 60FF9CABF05ED49D7A2F6C7414459E8F /* BFURL.h */, + FE64BADD703C143B203FA8E00FD8FAD4 /* BFURL.m */, + 2DDD6BD25FFFCF1D98AD2C5B68EED6B5 /* BFURL_Internal.h */, + 2221BF7B944E3A928C21F480C8CCE6A6 /* BFWebViewAppLinkResolver.h */, + D5255CB6CDF2850371E17AAA2A1AB6D7 /* BFWebViewAppLinkResolver.m */, ); - path = FBSDKShareKit; + name = AppLinks; sourceTree = ""; }; - 94585C70170894290F826E0D09791A8E /* Support Files */ = { + 951E09E60F9BEE2200DA298DB53FB98B /* Parse */ = { isa = PBXGroup; children = ( - 22D35F8704195922C00F9CC8B9A3857E /* FBSDKCoreKit.xcconfig */, - D0BD5813C82F4D56A56445BCBF651D1D /* FBSDKCoreKit-Private.xcconfig */, - 4669EF085FC9747EEF39F5EB5BDA05E0 /* FBSDKCoreKit-dummy.m */, - B35B1A6E0BC37C179ED9897DB54C66BD /* FBSDKCoreKit-prefix.pch */, + B9D0ABFE846D51BADE9E86A6F8E48989 /* BFTask+Private.h */, + 6A19F56E0F8C29946A8608B76F3A49F4 /* BFTask+Private.m */, + EA1EA428E9AD65BC84701D2503ACC121 /* PFACL.h */, + 3065F7EE96D178C185A3FDEA83907DD7 /* PFACL.m */, + 51F1FF6BF9EE55B7EAA6650EA4BA611F /* PFACLPrivate.h */, + BAD153B7AF61CF6B398EB3FE2E5C2C7D /* PFACLState.h */, + E1339B136ECA6BA809535B109308BBE8 /* PFACLState.m */, + C71D2C477F3399D3AD1EFD4F9A866DB3 /* PFACLState_Private.h */, + 1F4BCC79A27562D8BCE24A7A8DDEB17E /* PFAlertView.h */, + 5F40CD0B016860B2BBC25B6EBBE9E284 /* PFAlertView.m */, + D72924A89C6D36425031B7EB8C451C49 /* PFAnalytics.h */, + 836A8F74A8C94C26BFF6CE7C96CDBB29 /* PFAnalytics.m */, + E8397C0E16E68CA9A74B4BBDED56C9C4 /* PFAnalyticsController.h */, + AADB13268569ACD428CA718A38894A49 /* PFAnalyticsController.m */, + 0862B411E359C83CBD18E519CEF6D94C /* PFAnalyticsUtilities.h */, + FB20A82F1DA5086B118A419F8A505588 /* PFAnalyticsUtilities.m */, + 298BE9F2710D86C3196C6850E44C968A /* PFAnalytics_Private.h */, + 7B2175B028A34E81F071193394F373B5 /* PFAnonymousAuthenticationProvider.h */, + 8858E00C3002371F0FAF9914734C5FD8 /* PFAnonymousAuthenticationProvider.m */, + BD01BA2811FF01AC721F5BD747249BB4 /* PFAnonymousUtils.h */, + 0773FB1AEB768DE82BEE27A777B659A1 /* PFAnonymousUtils.m */, + 33AA341F9AFBBCA79F1F6E89A0571479 /* PFAnonymousUtils_Private.h */, + 8C2DF1B80261AAA9B73D7187A3623941 /* PFApplication.h */, + A2151507558FB08E11B302809C4679D5 /* PFApplication.m */, + 71B258E245FD3703F42B32A176062FDB /* PFAssert.h */, + 46CF33218A1E3A8EEBA12DF120858641 /* PFAsyncTaskQueue.h */, + C6FDA527EF165EC2D2CA5E44A20F1D00 /* PFAsyncTaskQueue.m */, + 8FCC6B0A52F1073866F5045115232A56 /* PFBase64Encoder.h */, + F1AF1463AFA83AA08F43ABCD39BF6FFB /* PFBase64Encoder.m */, + EF274E7B9BD70039B6C19D59B6817F3C /* PFBaseState.h */, + BBE9E1940BF9CB7CB79EEC68691D7CC7 /* PFBaseState.m */, + 887593F0DEE8EFD5BDC3F6E96A7AF9C2 /* PFCachedQueryController.h */, + 778B2BB152B3C76A56D9A45B5E01AC3E /* PFCachedQueryController.m */, + 3AAB126C87821E766861FC4022C4E248 /* PFCategoryLoader.h */, + 5C119E76B1739D418563786A3535A586 /* PFCategoryLoader.m */, + 4E7104272D9C49EA366374D7591B69BC /* PFCloud.h */, + A2EE1BEF00118C9B86DED80D8E9F78E5 /* PFCloud.m */, + 2022F0B4ED20CCE9260B4E160964B9D8 /* PFCloudCodeController.h */, + 62F86AE15FCDD3BDB2B1432E3A970BAE /* PFCloudCodeController.m */, + 0A9B29CACB66253CAD26C692CD8B3617 /* PFCommandCache.h */, + 08A5F9DDBE312E2B39D52155B7463DA8 /* PFCommandCache.m */, + 92C9EF435D1A1B30A324A3863E2CB1CB /* PFCommandCache_Private.h */, + 3723B220F505C587A732C7DDB88DA222 /* PFCommandResult.h */, + FB8484337705B68B729961116D8780FF /* PFCommandResult.m */, + 8B99F25C004D2B7579CC0ED827FDD52C /* PFCommandRunning.h */, + 1A9CE0394A88D885474139DCEB0E2D2D /* PFCommandRunning.m */, + 9AE3A1E847A23D89FFD2AA9F7A96D994 /* PFCommandRunningConstants.h */, + 7FC21711E96478983E21D14A7248B1C0 /* PFCommandRunningConstants.m */, + A2EC2506D904AB39ACE6AC2490368BC6 /* PFCommandURLRequestConstructor.h */, + 32E03031E4F6C80A832AC26957F2BD66 /* PFCommandURLRequestConstructor.m */, + 0B5E087C87BE017FB0C382DC023EA4BE /* PFConfig.h */, + BDD02728E44328FBED3ACBA8A76F69A2 /* PFConfig.m */, + CE5A89927105D9819003581D0C8DD06F /* PFConfigController.h */, + C4D9795941DB7420B09A2A295B29310C /* PFConfigController.m */, + D6D13D12D3B1AC6E70E2C85B780DA659 /* PFConfig_Private.h */, + 831FFA276E384FF81912831665D2ACD1 /* PFConstants.h */, + F31EC4849CD16E6B48A237BDBB0954FA /* PFConstants.m */, + EE30E5F951BC779939012BAD6E3C5693 /* PFCoreDataProvider.h */, + 2FEB5063ADD4EFE8EFFAD97BD5C4D8CF /* PFCoreManager.h */, + C839088F1464046F38572AEA46F43237 /* PFCoreManager.m */, + C69C77ABF5CBDE6FAEA65F67DC68806A /* PFCurrentConfigController.h */, + 9AEC1733825D5A2ABD8D47EE37DC9FEC /* PFCurrentConfigController.m */, + 0D30480B8CCEEB19D1DDA7BA271A3BD7 /* PFCurrentInstallationController.h */, + 316A644BD3E063F9A440F7F164000FB8 /* PFCurrentInstallationController.m */, + E195893EFAF6B4D88041C06F7BD32C88 /* PFCurrentObjectControlling.h */, + 994D05614D1EDF257C36EB9774BC9F9E /* PFCurrentUserController.h */, + 4612BDFDA5045AC0EE6F998D18D57F77 /* PFCurrentUserController.m */, + CD7F12FF98C15CB2FB25F62797543E56 /* PFDataProvider.h */, + 3AB3B7F4B8D4BBB3AF4CFE483FA32924 /* PFDateFormatter.h */, + 395A40E6ED210F9F655AE3ED00AB6CCE /* PFDateFormatter.m */, + 6DE4686D573E489CA8763A9AFF69E884 /* PFDecoder.h */, + 2F9593DC6B40D6FF814A1A143B4F1192 /* PFDecoder.m */, + 84FAF19E9FE280B8C4A65B70B825CD58 /* PFDefaultACLController.h */, + BE9F0035470C161A4516449709B0853A /* PFDefaultACLController.m */, + 5B5990F0ACF5AC91C7955E37265F1135 /* PFDevice.h */, + EC5B7EA9E38C9FBEE69F5B9C0BC4A0E0 /* PFDevice.m */, + 92219F3882F82E7756711A802C7F34EA /* PFEncoder.h */, + 6424FD719BE7F330C61F5BF5C1214B13 /* PFEncoder.m */, + BDD8F3D065CF416DD92F0BB5DE7ADF01 /* PFErrorUtilities.h */, + D76C0DEC86D6F664834D44A8082E5A6D /* PFErrorUtilities.m */, + EDF5AD225C15738985A7A4FFD5F486C9 /* PFEventuallyPin.h */, + 44B6337C2B9832B7597DF729DE1D5419 /* PFEventuallyPin.m */, + CD984CB60274EFFD2FC6F488DBADE377 /* PFEventuallyQueue.h */, + D950227B3A59DCF16242E75918DC221C /* PFEventuallyQueue.m */, + 28938733DD441FACFA78DCA04FC186C4 /* PFEventuallyQueue_Private.h */, + C0625656720CAD50DBE306C724DADC69 /* PFFieldOperation.h */, + 3E85B0B9859FBCA9E74C55E1211ACE9A /* PFFieldOperation.m */, + 2F4F3195CA169976EFA27638B5893094 /* PFFieldOperationDecoder.h */, + F64699881A4C5A9980C295DDA013D4DA /* PFFieldOperationDecoder.m */, + 28039FB8496FC037CD115B9256200393 /* PFFile.h */, + BDA465E9443323180CC1815D1C87C705 /* PFFile.m */, + D03015A70D44B37A63401618F5BAE8D3 /* PFFileController.h */, + 4812BF72649E3FB3CABBD5BEE63A124A /* PFFileController.m */, + FC1407E7292FD644B5484C9433F82629 /* PFFileDataStream.h */, + CA713D1D956929857B5573815E8B700A /* PFFileDataStream.m */, + 77E53941D7D46C602DD11044D3718DE6 /* PFFileManager.h */, + 7768B39DF4B1F1A7BFD05D306CAB1BDD /* PFFileManager.m */, + 89833C3688D20D27A921CD52CBF04258 /* PFFileStagingController.h */, + 927A4EF5B8ED82ABCB709942CC242E06 /* PFFileStagingController.m */, + 5EA792EC53DF7A8B5DA6169AC702E322 /* PFFileState.h */, + 6C9D0DC652ECEB0AC847D646E33E3762 /* PFFileState.m */, + B519F2BE42EA935C61C49611DFDE3111 /* PFFileState_Private.h */, + D131706344B44D723C0EDC00AD04D9B9 /* PFFile_Private.h */, + F1EF1E16E02ADB82F94F4A9757F01077 /* PFGeoPoint.h */, + 7591F734161565C8587390742A1ED783 /* PFGeoPoint.m */, + E91945A365E97AE157FD90FB6032742D /* PFGeoPointPrivate.h */, + 57991A4FD66FFD7B27890292A9F881D8 /* PFHTTPRequest.h */, + D81D0AFDE6434123DE6ED1DC6F6BB145 /* PFHTTPURLRequestConstructor.h */, + 55EDB925355F44E5F4CD0589A4D15596 /* PFHTTPURLRequestConstructor.m */, + AAD6D82FB30E66F727F7DF8841439C41 /* PFHash.h */, + 03E70A5437B075C14B5508D5BFCEEB28 /* PFHash.m */, + B571E0FEC01D103B7151ECA4A256D9BE /* PFInstallation.h */, + 5251FD21A849AFCBA7D4CFF66A674774 /* PFInstallation.m */, + 02460856BC3622AAE8075AE3E3FC91A1 /* PFInstallationConstants.h */, + FF936D8AE384A20B5E843F162679EC85 /* PFInstallationConstants.m */, + ED29B572533174091A28FE94F7BBC738 /* PFInstallationController.h */, + 61F77E151A38F4FE7CA5F80B9415A1AA /* PFInstallationController.m */, + 32CCE778F285747138A0725BD9D1B019 /* PFInstallationIdentifierStore.h */, + 18DA781E03A5FEF86B0ADEA14D9E9E63 /* PFInstallationIdentifierStore.m */, + 01653FEFDB182B8F87FD9FA72A320331 /* PFInstallationIdentifierStore_Private.h */, + 9A4845D88BBD0E2BF9238DBAC29792FF /* PFInstallationPrivate.h */, + 80376EBD200672DDD3336480C347B3E5 /* PFInternalUtils.h */, + 92F1167BDB41D6566E2A2BD962A7D42F /* PFInternalUtils.m */, + 4AF90E9A2D2424F9A61BF41682FAB99A /* PFJSONSerialization.h */, + 42DC5A6ADC1D96FFC19B5446CC236649 /* PFJSONSerialization.m */, + D91A3470D21870EAF9AE6AF9B98A8CAA /* PFKeyValueCache.h */, + B1F9A5CCDA0552CD62CAD6A9C8018543 /* PFKeyValueCache.m */, + 6997FDD65FC84CBE9C0B1F06A436C49C /* PFKeyValueCache_Private.h */, + E166AD26497D5B00C94E0891C82C6BD3 /* PFKeychainStore.h */, + AEDADE6B03CF289BAE3BBAE839E354B5 /* PFKeychainStore.m */, + 73A9A2B2C84C359AC796978E67B9549D /* PFLocationManager.h */, + FCC45D5098F99503478D96062E9B86BB /* PFLocationManager.m */, + D45D3E81C27909856D36BC8D34806CF3 /* PFLogger.h */, + 071B86E1C2AAD3B5091748D714423E5B /* PFLogger.m */, + E2BB5322373C1D0A089D6447434E2F01 /* PFLogging.h */, + 183A69494B93ED3701B335D4754CDE51 /* PFMacros.h */, + C04006B24886DEDB86D8AA796A957464 /* PFMultiProcessFileLock.h */, + 2623540305AAB0140A287E371F61E55C /* PFMultiProcessFileLock.m */, + E7B7004292F62F0BBD9D137660B5648B /* PFMultiProcessFileLockController.h */, + ACC07E15FC2CA7D185BFF1F84D565D3F /* PFMultiProcessFileLockController.m */, + 5B1F0581CF330D76A0A76C63A642DD8E /* PFMulticastDelegate.h */, + FB4DE0ABD27878F01E20805AF9C9D6FC /* PFMulticastDelegate.m */, + 25F9E5B91126E490040E4C142BE17D7C /* PFMutableACLState.h */, + B5B0B7503DC660F1E57F478887AA177E /* PFMutableACLState.m */, + 66C1B850FF8F72C651A98CCB78DB0E42 /* PFMutableFileState.h */, + 6C44C18F2ACA338C07999CAF4BDA46E4 /* PFMutableFileState.m */, + ECFFDF4EED9136970053D3F87C287A38 /* PFMutableObjectState.h */, + F814D3C39AD10478EC573697C25159A8 /* PFMutableObjectState.m */, + 6925CDA0BCBCFF149619E0E29A35A3DF /* PFMutablePushState.h */, + 5CE057D872493F57174963C4F6B50DC4 /* PFMutablePushState.m */, + 1C5C69B84F7FCD1066173E02E04716CE /* PFMutableQueryState.h */, + 6959DDF11EB0DBA886C8071FA6536544 /* PFMutableQueryState.m */, + 059EBF24A2AB19E48A0FE457DA504A78 /* PFMutableRelationState.h */, + 38A085262915DEFB26BD203072DD601B /* PFMutableRelationState.m */, + 7312C6904E7BD6A83FF99B8A93855A01 /* PFMutableUserState.h */, + FD87D91BF55E5388FB9F03A3ADE8B577 /* PFMutableUserState.m */, + 1D62A4BDE3836C5D2CBA3510FF1F7F03 /* PFNetworkActivityIndicatorManager.h */, + 862C4A36A947B7610B400462C749359A /* PFNetworkActivityIndicatorManager.m */, + B13CC16593686DB265856434BBFC4594 /* PFNetworkCommand.h */, + 5C9C1D9FAA0AB4875FD3710EBA7C5926 /* PFNullability.h */, + E60E681E3152FF31E45D14307138A1F0 /* PFObject.h */, + 96DEB41D236F2F957F542803B7242485 /* PFObject.m */, + 621186073ECC02598EFBC30E0D60F6A4 /* PFObject+Subclass.h */, + B02C63468CE0F7F2C99C5865466B0C19 /* PFObjectBatchController.h */, + CCEC1C29226031242E5C3329E7913386 /* PFObjectBatchController.m */, + 983F35D2D34ACB272BCEEEC6040DDF33 /* PFObjectConstants.h */, + 9820DB142515E9FE68F1635778CDF436 /* PFObjectConstants.m */, + 76C526DD236D0ABDBBDEEE2285B501CC /* PFObjectController.h */, + B23B2A450DD924145ECEEBCAF9F9DE49 /* PFObjectController.m */, + 284898C95718E6C68579D4FE3FE4B5BA /* PFObjectController_Private.h */, + CDFD024CF43A4AE623C0F5C4BDF1A912 /* PFObjectControlling.h */, + C316ACA67E163041176B415E9B6CD9DD /* PFObjectEstimatedData.h */, + 3E0284BB2426357ED603C689888DD262 /* PFObjectEstimatedData.m */, + 61EFCD5D7B14809002EECB4A73721FD4 /* PFObjectFileCoder.h */, + D1061A294A0D25A3BFAB4FF7B35C1A9C /* PFObjectFileCoder.m */, + D20A9EB54DFD244FBACB2A29830F5CC3 /* PFObjectFileCodingLogic.h */, + 40FC928384A8D2A945845B0EB6281D6C /* PFObjectFileCodingLogic.m */, + 9C247169039B75E0BFB4A9F4811F5A7D /* PFObjectFilePersistenceController.h */, + BE5646EAD6FEC69BB2B3C73D922BED8E /* PFObjectFilePersistenceController.m */, + 611ADAF0571A733561852B6D6D73901A /* PFObjectLocalIdStore.h */, + 07D32532031A1C89062D9473123DC3B2 /* PFObjectLocalIdStore.m */, + 35F6EDACB4373C69CDD53204DEFA7B7F /* PFObjectPrivate.h */, + A4C16395183819CC55902C187BBF3588 /* PFObjectState.h */, + 583552D355C9486BC5473CB54B561686 /* PFObjectState.m */, + AA3F835F4861D394CDA474F016B68DF3 /* PFObjectState_Private.h */, + D24D2A9A2A00617641EB1C9DAF8E5BD9 /* PFObjectSubclassInfo.h */, + 5F9F7B355F7CD6C75C1B6D99445E1702 /* PFObjectSubclassInfo.m */, + BD39191E0A16426B7F816A902E3ED1A2 /* PFObjectSubclassingController.h */, + 7B8C83CAC30A6E627FC4C625FE78664C /* PFObjectSubclassingController.m */, + DDB5F6DBCF6A420FE4A916EF00D431E9 /* PFObjectUtilities.h */, + 27AAD21F178D79A8CCA228342BF2E4B2 /* PFObjectUtilities.m */, + 0CFCFDB608A66C522ECD909465A4CDFD /* PFOfflineObjectController.h */, + 59E56D9E5ED9372FE9F67EE8F685C3DB /* PFOfflineObjectController.m */, + 2590AA5D13156556306B9B8ED6AD2D74 /* PFOfflineQueryController.h */, + 805A9C7F80B24B7D43C26816704C0E61 /* PFOfflineQueryController.m */, + E7FFCEEBB5EF7D5A28D81A02BAD268FD /* PFOfflineQueryLogic.h */, + B49C8BAF9D69B1E6568421F922FD8F3A /* PFOfflineQueryLogic.m */, + 6510524988D56D1E9B8FC5C067C04B9A /* PFOfflineStore.h */, + BA3BE979C7C897206FAB369D2B6BE3BB /* PFOfflineStore.m */, + E5CCD914EAF1670C15EFE26F755C80A1 /* PFOperationSet.h */, + 75D753CB65D28E2B39894FBCB517D0A3 /* PFOperationSet.m */, + 6EE4677B561DC6EB86FA8571CEE64AF1 /* PFPaymentTransactionObserver.h */, + 41CAAD93B8E8E5A2F8F2F8297FFE95AC /* PFPaymentTransactionObserver.m */, + CC1532E55E3DE39D552270CFBD839CF6 /* PFPaymentTransactionObserver_Private.h */, + 279CEB44F83E8E0913B50FCE426C934D /* PFPin.h */, + 12D6C59ACE08BC3F7440AFA3074159F7 /* PFPin.m */, + DFD9CDB1EB349CA71F08124AACE22058 /* PFPinningEventuallyQueue.h */, + 5015295E9D9B6BD11C70E85285B15C0C /* PFPinningEventuallyQueue.m */, + 89FA1CDB34FC6A266A0CB85649B29BAD /* PFPinningObjectStore.h */, + 582D21818FB0E31756573C0CEAC6A8B4 /* PFPinningObjectStore.m */, + 991B6A74EED7A47CCB0295E345AE6B36 /* PFProduct.h */, + 0368EC0DFD738EA132782A0111A76AD6 /* PFProduct.m */, + A13F1B5B057D95AEB199BD0AC1569C85 /* PFProduct+Private.h */, + 6771448442ACE74CF1DA8462E84FE3C1 /* PFProductsRequestHandler.h */, + 3F782BE969B5510EDD8EC6903FD236BE /* PFProductsRequestHandler.m */, + E82368CA082B92ADBB3B0DA8C9D29791 /* PFPropertyInfo.h */, + 4991C6D1D1F1E90244D63C683726742E /* PFPropertyInfo.m */, + 0BC74937463C566796639512770F35CC /* PFPropertyInfo_Private.h */, + 64E64C3C1EBC666F4CF3A2893F8DB8F1 /* PFPropertyInfo_Runtime.h */, + E0856F90FBBE3E20ACD8BC2DC4D7936A /* PFPropertyInfo_Runtime.m */, + 8690C66AA184BBA764246933C2A4A354 /* PFPurchase.h */, + 1E6F860380815B6D4EE77B3B136F98BB /* PFPurchase.m */, + 6D0BD04081C3A718EFB63F79C43FA7C0 /* PFPurchaseController.h */, + BCC05D6904CB78C337D61B1211C5BC6F /* PFPurchaseController.m */, + 0175D7D3E9C314F1D72F51BB23D70137 /* PFPush.h */, + 02F00ACE2DBD4B299DE97EDC74368855 /* PFPush.m */, + A2B0C52AADDA52456790576546FCC99D /* PFPushChannelsController.h */, + 46C04343C64E76EC67462AD59BFCEAA3 /* PFPushChannelsController.m */, + F496DCF5311E5B908DE4C4911C062A01 /* PFPushController.h */, + E40D5277A9FEE4394113FE40E8457989 /* PFPushController.m */, + 7631CDE057643A0E17ACCC4DAF8BBF13 /* PFPushManager.h */, + EC749D5306636F8078256E3AD6AEF7C7 /* PFPushManager.m */, + 33E340B3658DAFF8B960E00C876976B1 /* PFPushPrivate.h */, + DDC74E76E8D8BB53B2921A4D81230691 /* PFPushState.h */, + D6B6858EBB4F2461F279E542CA9305EF /* PFPushState.m */, + 7B1E5184AF7DB35882426974C6E4F54D /* PFPushState_Private.h */, + 26127A113C8DE5D855C538CEEE818097 /* PFPushUtilities.h */, + F0B0CDDA729281358070EBBED9C52BB7 /* PFPushUtilities.m */, + AA6155E47D6756DC20B676A1E6799081 /* PFQuery.h */, + 33749F5083DAFA1A1E3A782C771A1569 /* PFQuery.m */, + 4954F834F6DA1CCC4DE29F801E8E6A52 /* PFQueryController.h */, + D13DEF1A34A6346D0D141BE69B48222B /* PFQueryController.m */, + D97F582E69FFF8BC67A3DB17D398C9C5 /* PFQueryPrivate.h */, + C9AFF24120C438CE8768D912A12FE069 /* PFQueryState.h */, + DF9A789A3EB2E9881006021046DBA3A5 /* PFQueryState.m */, + 880EC96BB6771023E9A8E3DF31FD9310 /* PFQueryState_Private.h */, + 23A2C3297FA5C533D7041CCE18A98771 /* PFQueryUtilities.h */, + 2B302392664E4BE2747A482E82F65D97 /* PFQueryUtilities.m */, + A0F5F8B13BF4255AFCED026AC6B211C8 /* PFRESTAnalyticsCommand.h */, + E9A152C5D066C52D0A1CFF6EA97C0303 /* PFRESTAnalyticsCommand.m */, + 4FEF83ED93FDFDDF9C57D5020D1F5EB6 /* PFRESTCloudCommand.h */, + 05274B2C48957E129DCADF7E7BB272C1 /* PFRESTCloudCommand.m */, + 70137F33147D3F372FC44F6E67E63899 /* PFRESTCommand.h */, + 11AECB6BCE686A69BECE7B35B96E410A /* PFRESTCommand.m */, + DBFBAEBF5E6EDC57B0F60C53E56D90FE /* PFRESTCommand_Private.h */, + B5440ED9524EB35C55FB414229EDA986 /* PFRESTConfigCommand.h */, + A6A972AC76383DCF37E7008206794C8F /* PFRESTConfigCommand.m */, + 8F1129A22D3FF953177EDA6105319682 /* PFRESTFileCommand.h */, + 8EDAD3C1FD06B798BC04244B0271C9ED /* PFRESTFileCommand.m */, + 9F91500B4545DAA6F7241732589F388A /* PFRESTObjectBatchCommand.h */, + 068DBD6F64C945AE062AA96733338643 /* PFRESTObjectBatchCommand.m */, + 88A728EC723990EFB69B861995E74ECC /* PFRESTObjectCommand.h */, + 8018CD5321B09E6AA082BFED9506705E /* PFRESTObjectCommand.m */, + 191B469630ED03845A82C1836CBDDF7A /* PFRESTPushCommand.h */, + 6EB6555F0750836E4B76B0C08567E4F7 /* PFRESTPushCommand.m */, + E557E21B22E0695434EA0A8BF54D2A5D /* PFRESTQueryCommand.h */, + 91A20DEF4E05121BC0D3BA0B95057690 /* PFRESTQueryCommand.m */, + 909527AB697DC5F602A8BEE088B28420 /* PFRESTSessionCommand.h */, + 11CEF84C21F6B2D0803987B5694F5F14 /* PFRESTSessionCommand.m */, + AB89D35DE0F5C32E58B215882C35703A /* PFRESTUserCommand.h */, + 11EFC989CAB132B6D48E25A50D67FBC9 /* PFRESTUserCommand.m */, + 282E7F3B29E9E0666DC2F0DD9E9BC196 /* PFReachability.h */, + 99BD86550F9CEEAFE247409114E419D3 /* PFReachability.m */, + F409B315AFACD2CDD448DFD6401146FC /* PFRelation.h */, + 7809BA66D5768E97BE3CB53E36ECAC4D /* PFRelation.m */, + D1936061C906ACCF7096B33BC0F8B8D5 /* PFRelationPrivate.h */, + 89BE488D5FB2949B04C3B2078CB54ACE /* PFRelationState.h */, + B524B63009EE535EBA7977E07F2F824F /* PFRelationState.m */, + 53680AD3533A53E841E40B971C980E33 /* PFRelationState_Private.h */, + E47AEA771CADAF0F7E1A8716B513852F /* PFRole.h */, + 7127C42346F2C6E7C6852278A7D91999 /* PFRole.m */, + 442BC9945073FD644D98DC6A0BDCD0D1 /* PFSQLiteDatabase.h */, + 30AEFC89FB4F53E87A31D13E8D1108FC /* PFSQLiteDatabase.m */, + E543FA1FAC8FAA14119B1F575299C209 /* PFSQLiteDatabaseController.h */, + F060686A92FC706C2AC04A14E7348F4D /* PFSQLiteDatabaseController.m */, + 3652FCED3441641775C14E6FD5BC06D1 /* PFSQLiteDatabaseResult.h */, + 81D6701BAB69FFA1D5E976AA8AE47D90 /* PFSQLiteDatabaseResult.m */, + 7E6CC90C5C183BC584DAC5A06F3B7AB7 /* PFSQLiteDatabase_Private.h */, + 671C93F34B25F0E2D951C18DF74FBE1C /* PFSQLiteStatement.h */, + 34AD764CE1E3CBCA034D21A0B4EDFC69 /* PFSQLiteStatement.m */, + 4BDEBE5111524FC2428EBDDD195197C8 /* PFSession.h */, + 2D2B6CA8A26E1A54057C96806C92CBB2 /* PFSession.m */, + 11895677202537B8F1FA94B44D23ACFD /* PFSessionController.h */, + 48E607B7C98F48C601E0A8EADDB4199E /* PFSessionController.m */, + 81FCF70E549275BAA5747573A561C836 /* PFSessionUtilities.h */, + EB6A4EB9D35740998C6D23740E612D5C /* PFSessionUtilities.m */, + 19768BDA094897981754F254573AA405 /* PFSession_Private.h */, + ECBD1659924D8AA95D83F0EDE40C2614 /* PFSubclassing.h */, + 55D18B6A42464EFB5D7AC64708485ECF /* PFTaskQueue.h */, + E4DE147989205694AE9667AACA7AECD9 /* PFTaskQueue.m */, + DEF1EA4E1F9251BFCF197D8CF0D4A299 /* PFThreadsafety.h */, + 9B5B7577FF23FD60A87A8C05EA2652E3 /* PFThreadsafety.m */, + 037AABBBCA13696A48290F5766CC10B4 /* PFURLConstructor.h */, + DACF075638B9FC0CD730644C26FB71E5 /* PFURLConstructor.m */, + E381E7C31CC253F19B9DBADD0D0C49A6 /* PFURLSession.h */, + 0462A31AED64616A9EA07AE370D6A31B /* PFURLSession.m */, + 7919FE3E34E4A4E8FA40E5EF771D417F /* PFURLSessionCommandRunner.h */, + 5587C60D4A8E123E1C1112734C3FD4A8 /* PFURLSessionCommandRunner.m */, + AC0B78FA41B62305BA8AB5B5C9C0EF51 /* PFURLSessionCommandRunner_Private.h */, + 5701B935661FE2B2D953052CE58E255F /* PFURLSessionDataTaskDelegate.h */, + 1F85984F43D0AE4CBF449F432430888C /* PFURLSessionDataTaskDelegate.m */, + CA7489220D6C75107468852C7C0A0D03 /* PFURLSessionDataTaskDelegate_Private.h */, + 163419D898E7F370D581B4668E1A8F90 /* PFURLSessionFileDownloadTaskDelegate.h */, + EF85D0CB5A209F611DBE0B95DD6E0937 /* PFURLSessionFileDownloadTaskDelegate.m */, + A9EC065D9C7FD03E63A29BCF6F3A428C /* PFURLSessionJSONDataTaskDelegate.h */, + 183EE46003EBA5A7639B3EC6AC265522 /* PFURLSessionJSONDataTaskDelegate.m */, + 98FE22DC82B2E9780B8345DD11E25245 /* PFURLSessionUploadTaskDelegate.h */, + 87B2FEF6137A22119E9C4BF5999B87A1 /* PFURLSessionUploadTaskDelegate.m */, + C2398FB910D7AF39F3C66C51408D84D5 /* PFURLSession_Private.h */, + 766CE3F27E11129F0EFA11C60884ECFC /* PFUser.h */, + 8F19786B895155DF0DBA51BE5462CDCA /* PFUser.m */, + D3B177B3970048B89F03D66264703FDA /* PFUserAuthenticationController.h */, + 1F15A1AA5F5C733E8B06847912B9D6C2 /* PFUserAuthenticationController.m */, + 8248A75015CEDF0E471BD2919921A0FA /* PFUserAuthenticationDelegate.h */, + 492800396C7B66131BE664D3B6D93D67 /* PFUserConstants.h */, + 89771FED47F0BB242E7B85A73CCEEE3A /* PFUserConstants.m */, + 9C4B1918D6C2748B708FBA9010D47C59 /* PFUserController.h */, + 465813B1FEEE434D921E2CE4F2EE3F87 /* PFUserController.m */, + EB012283833C25F7392F7395A1DD2D26 /* PFUserFileCodingLogic.h */, + 19D77D49AB34F2DECC9C970A88D920DE /* PFUserFileCodingLogic.m */, + F20CDC41B5A71F131F228EA1F49FAE29 /* PFUserPrivate.h */, + 59024F193667AEB7E18165A249D687E7 /* PFUserState.h */, + 8350BE6813045E1E683091FF4C71539B /* PFUserState.m */, + 945E0E4F9730840B5671665F5AE4F8C6 /* PFUserState_Private.h */, + 0EFB00044A9A987E6150AACA4DD28233 /* PFWeakValue.h */, + 786CD905662A5B821B7FBD479582CBCD /* PFWeakValue.m */, + 997EE9B33EDCEA687B122C5D12D9A6E2 /* Parse.h */, + 4D93203DD4AFE0B35B1D82EF027EE2E3 /* Parse.m */, + D605E91ED4E689A9CCE862F2F178290D /* ParseInternal.h */, + C923F6FD789CB2C9F384405DEACE388F /* ParseManager.h */, + A4FA890C6CF8DCC5C56BF4D23B3D4EC0 /* ParseManager.m */, + 9826F9EF99C989F23C8760ECCF731EB0 /* ParseModule.h */, + BAEDA41B80675DA1345DAF6D8F0D4632 /* ParseModule.m */, + 729D6D653BE34D23C8D053B85CDD5E97 /* Parse_Private.h */, + 63A5D4C13A14A38F2A436EDF181C19F0 /* Resources */, + F7B367CB58EC1993BB803642898AA53B /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/FBSDKCoreKit"; + path = Parse; sourceTree = ""; }; 952EEBFAF8F7E620423C9F156F25A506 /* Pods */ = { @@ -1176,373 +2244,652 @@ children = ( 15A529C27057E4A57D259CBC6E6CE49C /* Pods-acknowledgements.markdown */, BF59BC15D23E1E1912C8F334E7236813 /* Pods-acknowledgements.plist */, - 2309DCCA91F9883D4D79FEE1EF0099E8 /* Pods-dummy.m */, + 7C6A832BE98AC2513DCF0311F799732F /* Pods-dummy.m */, 641AE05DD55E5E6AC1590CD7B4A18F97 /* Pods-resources.sh */, - EA48C5EE3CE4DF057217B99A5A223606 /* Pods.debug.xcconfig */, - 45B79D0956F6A1351479E569B774EE64 /* Pods.release.xcconfig */, + 0556ABAC4F9D071C431F5D3711FDE1E9 /* Pods.debug.xcconfig */, + F8F8D92E9BF54CF0325CDBF3A13F511C /* Pods.release.xcconfig */, ); name = Pods; path = "Target Support Files/Pods"; sourceTree = ""; }; - AFB94B753B1CA4679A1C2B9C5B31ED92 /* Pods */ = { + 967F8C1FA14C7E8AE26DDAE9AEC18626 /* FBSDKLoginKit */ = { isa = PBXGroup; children = ( - 318DE6DB1C43BC39E260C1ACBC1D2339 /* Bolts */, - EDEFDFAD0452B1B8E9B99C0F36D15BE7 /* FBSDKCoreKit */, - 40F1C6894DB267A5CAE3498060F47A24 /* FBSDKLoginKit */, - 8FF9755ACA8D8BC0033F70A1B9DA11C9 /* FBSDKShareKit */, + 4F598868B799F457865DCE7BA2139460 /* FBSDKLoginButton.h */, + 6B12F7845B8017EA22B0E0EEF0B3B56A /* FBSDKLoginButton.m */, + E921A833B36DAA6D8087D3841D15FC40 /* FBSDKLoginCompletion.h */, + 86858E70734ECDA22030AA8DC8467710 /* FBSDKLoginCompletion.m */, + A3A2CA15348284F196D703170DDC0118 /* FBSDKLoginCompletion+Internal.h */, + C438E8586D1D6C401A986F82E9815270 /* FBSDKLoginConstants.h */, + 9764C114535D7CCF89F76AD383D000DF /* FBSDKLoginConstants.m */, + CAE37334F4838571A1A3347478DDBD93 /* FBSDKLoginError.h */, + 5F06057C5FB4F34C78273C6773FE934A /* FBSDKLoginError.m */, + A588ADAFB9768AED4B3BA282F6561A68 /* FBSDKLoginKit.h */, + 3DEDE777646928ECFED937EF0600521E /* FBSDKLoginKit+Internal.h */, + 9390C92F1CE8467A8432506858B8172F /* FBSDKLoginManager.h */, + 4D1AB96A6A99AA8FC62B50D926542778 /* FBSDKLoginManager.m */, + 36C87C6A0D356709A30FBC0A3D13EA86 /* FBSDKLoginManager+Internal.h */, + 6F5245D9C22CC21BB136BDC2AC4955ED /* FBSDKLoginManagerLogger.h */, + B0E053D50F29084CF7D3D802F1517C70 /* FBSDKLoginManagerLogger.m */, + F10C958A391650BD6ABEE08D4D0EF8D8 /* FBSDKLoginManagerLoginResult.h */, + 8B4D99B79C54CE4DF16ED8030ABCA255 /* FBSDKLoginManagerLoginResult.m */, + 3B38B03E5392BB79AE3F31D3346D7A1F /* FBSDKLoginManagerLoginResult+Internal.h */, + 2144DB6EA4F8D23EDA85ED9E54139327 /* FBSDKLoginTooltipView.h */, + A59F5C8E499F158AF013FD0A4D779E33 /* FBSDKLoginTooltipView.m */, + 690DD19198EE8D5F0127BA29BE0469C5 /* FBSDKLoginUtility.h */, + 99849B37667DE2EF2F45DD8C3C4E1188 /* FBSDKLoginUtility.m */, + C7984134808FC31A9208D31DFE42B6AF /* FBSDKTooltipView.h */, + 042A2244DF3B5F5C519B2D9711580B50 /* FBSDKTooltipView.m */, + A9C899258C0EA110D85E7B48171B6432 /* _FBSDKLoginRecoveryAttempter.h */, + 27330F2C59009D2CCAFFFB3332D30BE4 /* _FBSDKLoginRecoveryAttempter.m */, + 7D3053D38CB358506E523E685B3B2235 /* Support Files */, ); - name = Pods; + path = FBSDKLoginKit; sourceTree = ""; }; - BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { + AE002A940239A1B74390C75CA4E5964B /* Bolts */ = { isa = PBXGroup; children = ( - 53F661C0CA7190D2CF05023FB33D61E4 /* iOS */, + 89794D4255CC3FB783978193B2E5DA10 /* AppLinks */, + 7C3BC2426BF03CF0C6EE58DAC886DC2F /* Support Files */, + 381EF370C8F09BA2E6F4C9CD17E0BABA /* Tasks */, ); - name = Frameworks; + path = Bolts; sourceTree = ""; }; CCA510CFBEA2D207524CDA0D73C3B561 /* Products */ = { isa = PBXGroup; children = ( - 1276BE5A9F1D39331198580AAA4221EB /* libBolts.a */, - B6B4D633C955BC761C6FFA1EF8A98580 /* libFBSDKCoreKit.a */, - DC219C5A4D9CF2E73465E5137C2B9ADC /* libFBSDKLoginKit.a */, - 687D294ACB2FA8374173C7BB1EBD1D0B /* libFBSDKShareKit.a */, - AE1FBE172796B6EE66C9CE028F91A9D6 /* libPods.a */, + 46D403D3185FA87D018A34BBD7A76FC0 /* libBolts.a */, + 7431B6B9B7E1DFEF929BB54553B5676F /* libFBSDKCoreKit.a */, + FB0644F2C0DBFC0141F618380733B87C /* libFBSDKLoginKit.a */, + DAAE63B311691BDD6651032E86A8597B /* libFBSDKShareKit.a */, + B71C430B59468A7C97039EC40E16D99C /* libParse.a */, + 5FB626B7387C990243FEC9C3854CBAD8 /* libPods.a */, ); name = Products; sourceTree = ""; }; - CD53B378A2C85AC02E4C94B72B2396B1 /* Support Files */ = { + D2411A5FE7F7A004607BED49990C37F4 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + 952EEBFAF8F7E620423C9F156F25A506 /* Pods */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + E46A0832738AC01F481C0A1AC7761E0C /* Support Files */ = { isa = PBXGroup; children = ( - FD3AC0887DD1FC60BAE9387F80523E6B /* FBSDKLoginKit.xcconfig */, - 62AA5AFD1D7438053DE8446F795803E7 /* FBSDKLoginKit-Private.xcconfig */, - F25867AF7B57AE5CAFF6A7A97011505E /* FBSDKLoginKit-dummy.m */, - 7F1DE529D81212E5BBBD7F41CE5139A8 /* FBSDKLoginKit-prefix.pch */, + D61C8185B740497218D477F278420CDD /* FBSDKCoreKit.xcconfig */, + 9201ECF588FA8BB08DDBF3C8E4CD31A3 /* FBSDKCoreKit-Private.xcconfig */, + C934943D7A25BDE5AA3C99D0D0E2D06A /* FBSDKCoreKit-dummy.m */, + 10D75599B0B083CB8DA9B5FE832071BA /* FBSDKCoreKit-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/FBSDKLoginKit"; + path = "../Target Support Files/FBSDKCoreKit"; sourceTree = ""; }; - D2411A5FE7F7A004607BED49990C37F4 /* Targets Support Files */ = { + F4AE91E31AD3333C57E7E667D8F1BD22 /* Pods */ = { isa = PBXGroup; children = ( - 952EEBFAF8F7E620423C9F156F25A506 /* Pods */, + AE002A940239A1B74390C75CA4E5964B /* Bolts */, + 506CAA494D3B21DBBAD983F4BAED119F /* FBSDKCoreKit */, + 967F8C1FA14C7E8AE26DDAE9AEC18626 /* FBSDKLoginKit */, + 660F7FA41B8491B7303D71C44F4D78C2 /* FBSDKShareKit */, + 951E09E60F9BEE2200DA298DB53FB98B /* Parse */, ); - name = "Targets Support Files"; + name = Pods; sourceTree = ""; }; - EDEFDFAD0452B1B8E9B99C0F36D15BE7 /* FBSDKCoreKit */ = { + F7B367CB58EC1993BB803642898AA53B /* Support Files */ = { isa = PBXGroup; children = ( - 94585C70170894290F826E0D09791A8E /* Support Files */, - 885A2BF9367C2A3CF8D74CD10FD14D4A /* arc */, - 0CCA37610B869AEE4F26E4D94532229F /* no-arc */, + D278AD7FDD5A46F106410E751FA6B672 /* Parse.xcconfig */, + FAD786BC4ACCD93AEF869C440819A61D /* Parse-Private.xcconfig */, + 1660A7818BE658914CAD0B03854799AF /* Parse-dummy.m */, + 9CB6162708CA811C045FC48276E533AC /* Parse-prefix.pch */, ); - path = FBSDKCoreKit; + name = "Support Files"; + path = "../Target Support Files/Parse"; + sourceTree = ""; + }; + F9400E82BDA8E39AA40BABDC6CB12014 /* iOS */ = { + isa = PBXGroup; + children = ( + 281C73120A87B602C8A007845677FA4B /* AudioToolbox.framework */, + 70A2ACBCF37165DCF827CE708D6D4C9E /* CFNetwork.framework */, + C97DF3988890CAEF8564FB45FDC77191 /* CoreGraphics.framework */, + 992BF67D0574DEFDA7B5A5DA35227955 /* CoreLocation.framework */, + 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */, + ED97321AD7E6EF7BB46B7C26AFD43451 /* QuartzCore.framework */, + 61EC245B07BF5B2B8DAB7F7D13FF56EB /* Security.framework */, + 83550267DCC8A2C04DD26DBA885C6379 /* StoreKit.framework */, + 47F6D008CDDC192BF994FAA0B8B41043 /* SystemConfiguration.framework */, + ); + name = iOS; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 1A19916C2132F3208272B8CEB94A68DE /* Headers */ = { + 04B8CBA2668FA29112DD7DD832E8D275 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 0ECE24B940F9019FF559DF6435234863 /* FBSDKAppGroupAddDialog.h in Headers */, - EDC74CD08B6D32181CD98A3DE1A2DD7F /* FBSDKAppGroupContent.h in Headers */, - C5E4AF06F8FC98D2C53F1F553EC49DE7 /* FBSDKAppGroupJoinDialog.h in Headers */, - EE1E0445D5539A5A83D898095665B993 /* FBSDKAppInviteContent.h in Headers */, - 5E1E334836A0290430ED7B0F88616D18 /* FBSDKAppInviteDialog.h in Headers */, - 07729073627D94E620F85E370167BE72 /* FBSDKCheckmarkIcon.h in Headers */, - 82C4EF653777E50D349F845C3A147749 /* FBSDKGameRequestContent.h in Headers */, - 89A9445D0396D959926D55E3FC6CA06A /* FBSDKGameRequestDialog.h in Headers */, - EBBB2E68E5C2BB4A392A6B52AAB6A65D /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */, - 82A86E910E3E517AEFA5E72CFF5712AD /* FBSDKLikeActionController.h in Headers */, - 93169A6D1E97B3A5CD2CF6DD1AFA5EF0 /* FBSDKLikeActionControllerCache.h in Headers */, - 37A2F9456A8F405373ACBFAE17371CB6 /* FBSDKLikeBoxBorderView.h in Headers */, - 635D4231CBC6EB7F6F55E68F921AE7DA /* FBSDKLikeBoxView.h in Headers */, - DCCBA89A8A2710FF7E054F69EC964911 /* FBSDKLikeButton+Internal.h in Headers */, - 9C22E4B97819BA5E83843C8385CB00E4 /* FBSDKLikeButton.h in Headers */, - A72BFDB0F5E6B612043D662F38375CD5 /* FBSDKLikeButtonPopWAV.h in Headers */, - 54734BA378F71909763FE9B12579CC3F /* FBSDKLikeControl+Internal.h in Headers */, - 63871AB3E42751D51363EE4D42324D94 /* FBSDKLikeControl.h in Headers */, - B9BFA96DA9A7417DBF08E05811F7608B /* FBSDKLikeDialog.h in Headers */, - 326E6464B5D07DD06BF0AC33528A6272 /* FBSDKLikeObjectType.h in Headers */, - D8F8C8278B94951DD5F0C4C70DB4E454 /* FBSDKLiking.h in Headers */, - 8E43998099C63D2A9D3B8069D52D81DE /* FBSDKMessageDialog.h in Headers */, - 599A60532E54BFFD2ACBF2723F447DFA /* FBSDKMessengerIcon.h in Headers */, - 56AE9578D5A1EE4FE77E255E49E364FF /* FBSDKSendButton.h in Headers */, - 64489CCAD159DF9E9E7A54E2FE713EF2 /* FBSDKShareAPI.h in Headers */, - 467C3ABFCF99EFCEF7FAE6A1B80F12C5 /* FBSDKShareButton.h in Headers */, - D05BD8665A0A93538E3C451535DFE58E /* FBSDKShareConstants.h in Headers */, - 8EB23BAAD63A613F57DF8CD3C72B7259 /* FBSDKShareDefines.h in Headers */, - BCA75F0A9F1A771DC78B1F8EF1EA3A3B /* FBSDKShareDialog.h in Headers */, - BC3A05425B4E79ED86788327BEE3A453 /* FBSDKShareDialogMode.h in Headers */, - 59E5F7CFD14C3487F37C1D17EFAB8016 /* FBSDKShareError.h in Headers */, - B52EA95F5243B523B317DF9FEE9F1E22 /* FBSDKShareKit+Internal.h in Headers */, - 66B869BCC4227C5BE116BF12FDCD8E13 /* FBSDKShareKit.h in Headers */, - CAE9DB888185C6931D53C05745B82E5D /* FBSDKShareLinkContent+Internal.h in Headers */, - F794A07C3CF58F784345DCEA85E814BA /* FBSDKShareLinkContent.h in Headers */, - C26467C6BEB73B1CA99181DCC5BFB515 /* FBSDKShareOpenGraphAction.h in Headers */, - 9AD2C1B0B5D075843F4A50DA2F7A54EA /* FBSDKShareOpenGraphContent.h in Headers */, - 086A67663ECD9FDD0F048DC84683E298 /* FBSDKShareOpenGraphObject.h in Headers */, - BED6A27BF7072DDE75C15ECDEC54865C /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */, - 8E85C6D1BA82C015543BF6647AB81363 /* FBSDKShareOpenGraphValueContainer.h in Headers */, - BDE3E86FAB8FAEB7B9A4E8ACB002CF0A /* FBSDKSharePhoto.h in Headers */, - 95C048BCA333A52658C95DB524B70428 /* FBSDKSharePhotoContent.h in Headers */, - 1AA02F1D34B3617DE8A640A0CE1DACEB /* FBSDKShareUtility.h in Headers */, - 7153C03C230E494E41AF946C8FE45A4B /* FBSDKShareVideo.h in Headers */, - 76C0743B4B421043366A6302A19A16B3 /* FBSDKShareVideoContent.h in Headers */, - 02967D3BF0AE64AAED377E0BD9F0111B /* FBSDKSharing.h in Headers */, - AFF31C168316FFEA345DCCB873752DB0 /* FBSDKSharingButton.h in Headers */, - 5C20FD4ED2A23F07C999818F3BA49E71 /* FBSDKSharingContent.h in Headers */, + CF79198C14BBBD2D665382664838FDC3 /* FBSDKAppGroupAddDialog.h in Headers */, + 5ECA82DED51AAEC5914651A1DC5F4AA8 /* FBSDKAppGroupContent.h in Headers */, + A21EAD6DC6E64D1DDEC818E884B8681C /* FBSDKAppGroupJoinDialog.h in Headers */, + C93EF9E7AB322844B44D91A7417C7677 /* FBSDKAppInviteContent.h in Headers */, + A9BEF137DF5768708869D3256BFAD63D /* FBSDKAppInviteDialog.h in Headers */, + 603CD1A9757748FFDF36F25F1442BFEE /* FBSDKCheckmarkIcon.h in Headers */, + AF5359F040D97FC805477208E7911018 /* FBSDKGameRequestContent.h in Headers */, + FD874685C537E5A0F3A6CEF0752C4BE2 /* FBSDKGameRequestDialog.h in Headers */, + 024F2F6E7B359E16D430507777D2A23A /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */, + 90ADE70B8B9EE69E84421A5C857638E2 /* FBSDKLikeActionController.h in Headers */, + 5EBE74F7A1A99B390EA1D0880AF631D4 /* FBSDKLikeActionControllerCache.h in Headers */, + 8856F450B33FE10B5CDDBB7075D13156 /* FBSDKLikeBoxBorderView.h in Headers */, + EBF174B3526DA204542A9E7EDDA420C0 /* FBSDKLikeBoxView.h in Headers */, + C76BFBC54AB29A882AFF2B93FABC02D9 /* FBSDKLikeButton+Internal.h in Headers */, + 3A53D0DFE7A5184D13FF5E9FEEB545DE /* FBSDKLikeButton.h in Headers */, + 049098E1C6C7C462769F96568DA8D72F /* FBSDKLikeButtonPopWAV.h in Headers */, + E95A35CACF79B5613E435793A12C3B12 /* FBSDKLikeControl+Internal.h in Headers */, + EF3BF6324C7416A119E5B4501ECA0243 /* FBSDKLikeControl.h in Headers */, + 23589C8FDD1C654F9B5ABD21EBB44F14 /* FBSDKLikeDialog.h in Headers */, + 8A015CCBBB5F889F2666DB3E0DEC8AD5 /* FBSDKLikeObjectType.h in Headers */, + 733822208BEBE0C468B43F2DD6DD56FA /* FBSDKLiking.h in Headers */, + 9D4B4179D22A7E72ADC746BC9867F19F /* FBSDKMessageDialog.h in Headers */, + ABC7A9122C527CC454683E0F3003AC5E /* FBSDKMessengerIcon.h in Headers */, + 754D8A2093AC1500714A7A3C741F0DD2 /* FBSDKSendButton.h in Headers */, + A086C2615B2785D481DA7C4D34F4E624 /* FBSDKShareAPI.h in Headers */, + 1C4CCD5145FFC73BBD93BD34AF80DC26 /* FBSDKShareButton.h in Headers */, + 5CAD289DD87697AD723F4E09479CB0D3 /* FBSDKShareConstants.h in Headers */, + 3A7F1B841F623E917E9A93108963F45F /* FBSDKShareDefines.h in Headers */, + 25700FC04D9595410BB668AC6D95B2C8 /* FBSDKShareDialog.h in Headers */, + 7DBCC0E643223DE9DBA754562F5134E4 /* FBSDKShareDialogMode.h in Headers */, + 6AC7277FB240777B01E8635E9A416979 /* FBSDKShareError.h in Headers */, + 7CC48DD2498D412BB8502EF9D7D0F144 /* FBSDKShareKit+Internal.h in Headers */, + 8189451E0D572A123365625A27B40734 /* FBSDKShareKit.h in Headers */, + 57D012204E6B29DD1581D7C1EEF0B976 /* FBSDKShareLinkContent+Internal.h in Headers */, + 07B3F93C12DD63838C00EA94CD93B27D /* FBSDKShareLinkContent.h in Headers */, + 559B49348B7EB3F4BF4BB0984CF73CC7 /* FBSDKShareOpenGraphAction.h in Headers */, + 2407AF3DC659F4D82509D57974CB2CEB /* FBSDKShareOpenGraphContent.h in Headers */, + DB976377ECFE3DCDC7A39A70EFDCB66A /* FBSDKShareOpenGraphObject.h in Headers */, + F397C996AC39BBA073D32D6B15E6DB54 /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */, + 3CDA0EFB1390A868EEB6A3DB196F882C /* FBSDKShareOpenGraphValueContainer.h in Headers */, + 578E66E718A1020A82FFEEC24E7D65BE /* FBSDKSharePhoto.h in Headers */, + B2A40C992E571AFD66738150516F47EF /* FBSDKSharePhotoContent.h in Headers */, + F6F20F1577D517829A60E3C7524A3FB2 /* FBSDKShareUtility.h in Headers */, + 0D1BF3A32608EED521199FC7756F2A2C /* FBSDKShareVideo.h in Headers */, + 115282FAD689F856C602E20DADA1D9BB /* FBSDKShareVideoContent.h in Headers */, + 2504C2D803E69F8AD5242FE200CAC89C /* FBSDKSharing.h in Headers */, + E0AF7C8E6312712C90E14832F43A36B1 /* FBSDKSharingButton.h in Headers */, + 9B860FF944EF4A439B373EB2E80B97F3 /* FBSDKSharingContent.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3E02813C30D26A6F02927C79F5D7D255 /* Headers */ = { + 1C1CFC19EEFD59FB7CA7916BF561B779 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4BFB9EC48CD7CE6C71367B494F82D892 /* BFAppLink.h in Headers */, - 2CC98680408DDD432D1394C212FAE776 /* BFAppLinkNavigation.h in Headers */, - CDC7BB2EB9E1AFF7F11E4B7E057E4EDD /* BFAppLinkResolving.h in Headers */, - CF397493647953A85CDF077F0F1F4817 /* BFAppLinkReturnToRefererController.h in Headers */, - DCBAE86037E81F1497936455B43C9065 /* BFAppLinkReturnToRefererView.h in Headers */, - 783DDF2DD53195D9AC1863EB6095BA29 /* BFAppLinkReturnToRefererView_Internal.h in Headers */, - 1D9B660498B96AFADC6BD055D94E6269 /* BFAppLinkTarget.h in Headers */, - AEB99931D89BD7370042412945D4667C /* BFAppLink_Internal.h in Headers */, - A5BAA576C0CEE292FA3962B08F236DDF /* BFCancellationToken.h in Headers */, - 67604095ED041F533A408815BB02A6E2 /* BFCancellationTokenRegistration.h in Headers */, - 3DDC0185933F124931CE4962AABAB04E /* BFCancellationTokenSource.h in Headers */, - 6C8783ED1C88B44C9E3D1790CFE41826 /* BFDefines.h in Headers */, - 46907396399AC7ABE8902C4415F298F6 /* BFExecutor.h in Headers */, - 64775268853C467B962519877F2B4849 /* BFMeasurementEvent.h in Headers */, - 1CD8D6D26B1EC48DA95F1E213A68B8C9 /* BFMeasurementEvent_Internal.h in Headers */, - 943E672E2E8964259A108CFCA62618E4 /* BFTask.h in Headers */, - 35D34BFAFCB107B8A052AF1C7546E661 /* BFTaskCompletionSource.h in Headers */, - EB23E339DBA43E1DA3185BB324CEA54B /* BFURL.h in Headers */, - 9DF452BA99BA653723EF19F53745D85C /* BFURL_Internal.h in Headers */, - 5ECB96604E6A661FABCDF90186CFAB9F /* BFWebViewAppLinkResolver.h in Headers */, - 5E56B197B3451E124FB0B19972703BD1 /* Bolts.h in Headers */, - 4CD7334521294D0CB39186630A7B34DF /* BoltsVersion.h in Headers */, + 0F5681D4155EF404B63B22B18C1AF88F /* BFAppLink.h in Headers */, + 46EB4B43C3D20732F946864A047F91F6 /* BFAppLinkNavigation.h in Headers */, + ADCBD1E21EE29D29239129FD8025C57B /* BFAppLinkResolving.h in Headers */, + 6FD0C9E25E96D683FF939A03F5ADBB6B /* BFAppLinkReturnToRefererController.h in Headers */, + 5D13A3534EAC4E005CA23818980CBE9E /* BFAppLinkReturnToRefererView.h in Headers */, + 576D18D63A70D92387FB45A0464F20CB /* BFAppLinkReturnToRefererView_Internal.h in Headers */, + D35E29B5D9FC142022E8427B40FC3D2B /* BFAppLinkTarget.h in Headers */, + 2CDE62281BF30CDC37D9B4C4AD493EC7 /* BFAppLink_Internal.h in Headers */, + 837E9C27712156BDE9D280EE4545D276 /* BFCancellationToken.h in Headers */, + 69BF53C7FCB3B725A3810153DFC4EA79 /* BFCancellationTokenRegistration.h in Headers */, + BD3CE6F36B20865EAA4F5E6AD2FE7B9B /* BFCancellationTokenSource.h in Headers */, + 056D1A2F30304795BCF119D77F6A3444 /* BFDefines.h in Headers */, + 3D7B8490714964BABCD5A24305DB8F11 /* BFExecutor.h in Headers */, + DA945F0026584B08173CD60DA7C25EAC /* BFMeasurementEvent.h in Headers */, + 4C3F4B69F870FEF1F364EE745DB32219 /* BFMeasurementEvent_Internal.h in Headers */, + AC12EBE82E427B9B5608A32FBE398FE5 /* BFTask.h in Headers */, + B9D665C1FFEA8087E6977A029EC9F109 /* BFTaskCompletionSource.h in Headers */, + 0A1FC44863CD4AD27EB4078FE4A8234E /* BFURL.h in Headers */, + 8A0A3B0961EA769D2720A9B3FE94AE94 /* BFURL_Internal.h in Headers */, + B90A724A9A95499F9B46EC9E4124E2CE /* BFWebViewAppLinkResolver.h in Headers */, + 9DBD52A2A42B56822E76A986EA118AEA /* Bolts.h in Headers */, + 7AE9B5B1B9C84FD8D5B6D314F73888A8 /* BoltsVersion.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 75EC6E4BB111633BED714695B117A909 /* Headers */ = { + 4F1C8D7D6225C287FDC9497697EA0A15 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 7B2C42E4C07416AF7B0B47A94C5D449B /* FBSDKAccessToken.h in Headers */, - 0D33D8B56477808D44FB51F1B5178A16 /* FBSDKAccessTokenCache.h in Headers */, - 0DF6A2FF0C411278A2A3F34AF834CD77 /* FBSDKAccessTokenCacheV3.h in Headers */, - 1B87820A977924BF9D822310F62C317F /* FBSDKAccessTokenCacheV3_17.h in Headers */, - B058FE7A182DC5347E8F65FD5DB9AC2C /* FBSDKAccessTokenCacheV3_21.h in Headers */, - D72A3BEA9AD7CB2D4C025CD197D7D39C /* FBSDKAccessTokenCacheV4.h in Headers */, - 6E447AD7EC572B2C26DEB819F352E8FB /* FBSDKAccessTokenCaching.h in Headers */, - 2A6467F8C1AAB711191D5206AF4565D8 /* FBSDKAppEvents+Internal.h in Headers */, - 0B53C42D59A3930785AFF339A0CAF0D9 /* FBSDKAppEvents.h in Headers */, - 3B495133DCFC7C6770A66ABD657A3759 /* FBSDKAppEventsDeviceInfo.h in Headers */, - E6D9CE27BE4674CF7755B9F82B1E58AA /* FBSDKAppEventsState.h in Headers */, - 37866BE47097F3430E848333A7DC7C52 /* FBSDKAppEventsStateManager.h in Headers */, - DCFE87B61173D909B11DDAA4F71788DE /* FBSDKAppEventsUtility.h in Headers */, - F9021083802664367043208DEFB7E6EA /* FBSDKAppLinkResolver.h in Headers */, - E725B8B6F2DBEEA2C8106229737D91AC /* FBSDKAppLinkUtility.h in Headers */, - 532F567B13329D5E08A1B4CD0E0CF948 /* FBSDKApplicationDelegate+Internal.h in Headers */, - 64F899D82FC4BB6ECB8532DC080A6F50 /* FBSDKApplicationDelegate.h in Headers */, - 3F7EC364751F75C1A0A04250BFED217A /* FBSDKAudioResourceLoader.h in Headers */, - 7CE6D5210A69563E538E075CF0C96C83 /* FBSDKBase64.h in Headers */, - CFCB25F51BCA1DEA91F87F71B10504EA /* FBSDKBoltsMeasurementEventListener.h in Headers */, - 3F64A64ACBA4C6FD46BCFBC3AD4F8727 /* FBSDKBridgeAPICrypto.h in Headers */, - 5116B8A961D5089C882E9AC987F2ADE9 /* FBSDKBridgeAPIProtocol.h in Headers */, - 3A6FC29C2DC181498FC8CD8DFA062A04 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */, - C6C1716C620893DE14E8439744E41BB8 /* FBSDKBridgeAPIProtocolType.h in Headers */, - FF6874A3553124FB49AD0FC2F3B15150 /* FBSDKBridgeAPIProtocolWebV1.h in Headers */, - CA7C818918D88860E2609BC9106C9810 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */, - 6397F66C8ACEC3576BA93356FE55A070 /* FBSDKBridgeAPIRequest+Private.h in Headers */, - 94E2FC6A422448963CEAE61D410E16FD /* FBSDKBridgeAPIRequest.h in Headers */, - 3DAA93F17722BDE26B1EF1720449F883 /* FBSDKBridgeAPIResponse.h in Headers */, - 5CEF0D94936D45B939E630AF012A65CF /* FBSDKButton+Subclass.h in Headers */, - E1F83DC0FE5A3C7C03561FA9CE7FE6A1 /* FBSDKButton.h in Headers */, - 253008BA1D1380B9F00039AD006DC5E9 /* FBSDKCloseIcon.h in Headers */, - B58593A4A44DC201302965C4E75E3EA0 /* FBSDKColor.h in Headers */, - 41B9DD20AD35BD9BBAB55C2B9B09BF80 /* FBSDKConstants.h in Headers */, - 822DB121B5BA73535DE85FCC300706BC /* FBSDKContainerViewController.h in Headers */, - A8D3E43445F3B76B2EF512055E638984 /* FBSDKCopying.h in Headers */, - B53892E01BE831E973296B75B7EA7822 /* FBSDKCoreKit+Internal.h in Headers */, - 10285394D2429F0345EEAE31AA791DE8 /* FBSDKCoreKit.h in Headers */, - 1B7595D44BBEF7C62FC58770579051DA /* FBSDKCrypto.h in Headers */, - F8C1154884436F4CDA773DBDD5B4B224 /* FBSDKDialogConfiguration.h in Headers */, - 5C333A12F6DEE056AAE24F1F3ECD1AEB /* FBSDKDynamicFrameworkLoader.h in Headers */, - 4669B1FD4393A31136FECE7E33E2E615 /* FBSDKError.h in Headers */, - E7B50434828FA042869D78C54A58AF90 /* FBSDKErrorConfiguration.h in Headers */, - B7CE8A07ECC3C3F0994183B658C1FBB6 /* FBSDKErrorRecoveryAttempter.h in Headers */, - 530CEAF78868367987ABD76335D3CC8A /* FBSDKErrorRecoveryConfiguration.h in Headers */, - 5D00B3FD1E10CA8314EE7B2E6F639AB7 /* FBSDKGraphErrorRecoveryProcessor.h in Headers */, - 172CB4824EAF09637FD6F2DB40BB2D40 /* FBSDKGraphRequest+Internal.h in Headers */, - 73A8CB489961CC597812CB33A21E25EB /* FBSDKGraphRequest.h in Headers */, - BF8FA8030BF4A7E7C81C845DBF9F66E2 /* FBSDKGraphRequestBody.h in Headers */, - E72B8ECC477EE9195AD7F41392B4CE7B /* FBSDKGraphRequestConnection+Internal.h in Headers */, - EBB4A13CEE376C95546B2347E2D7250E /* FBSDKGraphRequestConnection.h in Headers */, - 76D582E94A30659780B659442279237E /* FBSDKGraphRequestDataAttachment.h in Headers */, - 7F63B791432A0A4F438C96CD7E0CD9BC /* FBSDKGraphRequestMetadata.h in Headers */, - 6ADEB932DF2052B403A8081F7F6FB6FD /* FBSDKGraphRequestPiggybackManager.h in Headers */, - FF337FC6A01267CFC462853F3EDF379B /* FBSDKIcon.h in Headers */, - A05B7BAC0ADC16FE809F6DCABEBEC818 /* FBSDKInternalUtility.h in Headers */, - 06F3235CA26951EF727E3C1FDA0A06A7 /* FBSDKKeychainStore.h in Headers */, - D374EC2D04FBBA8C2FFB7E58174FCFE1 /* FBSDKKeychainStoreViaBundleID.h in Headers */, - AD5D1D2FA4043A5E2F4A7125384450C4 /* FBSDKLogger.h in Headers */, - D033A089BB2224AA3A0156A72B49B3FB /* FBSDKLogo.h in Headers */, - D5453B795872AF7A76DA1F01795E5B36 /* FBSDKMacros.h in Headers */, - 1E252EBF9D39E9E6C2AAA46DDD8A58EE /* FBSDKMaleSilhouetteIcon.h in Headers */, - 0465F0E4BECA2CE5C64F1251A7BA1922 /* FBSDKMath.h in Headers */, - C4810A644FD861EFB3501D98E71DC4CA /* FBSDKMonotonicTime.h in Headers */, - FB04BF441608674C807973A587CC5963 /* FBSDKMutableCopying.h in Headers */, - 15CB8B5F3E5C004528DF130D5F74280E /* FBSDKPaymentObserver.h in Headers */, - 17E9812BBA8F1D9195470696536D49E1 /* FBSDKProfile+Internal.h in Headers */, - 1812C122239FADE20B76682591144642 /* FBSDKProfile.h in Headers */, - 167B40D0426290E0222F4E484A61847C /* FBSDKProfilePictureView.h in Headers */, - B9765A071F255916280A2E79F0720FA5 /* FBSDKServerConfiguration+Internal.h in Headers */, - CA5018821A0E860850A7A0664134B997 /* FBSDKServerConfiguration.h in Headers */, - 43FE98D2FD3B83F90B0066D11CC7468A /* FBSDKServerConfigurationManager+Internal.h in Headers */, - 700CAB9C03DEBA19C44BD5E8D0F2A3C4 /* FBSDKServerConfigurationManager.h in Headers */, - 6F5B7115A39E3C475866B1EA0D5AD5AF /* FBSDKSettings+Internal.h in Headers */, - 73B2935A00AEA602158F897267556E86 /* FBSDKSettings.h in Headers */, - 7EE7F793B552F7D4781DBEBB3FA9A422 /* FBSDKSystemAccountStoreAdapter.h in Headers */, - 048C3C60838C918CC1E9EDA7A39FEADB /* FBSDKTestUsersManager.h in Headers */, - 63CC62BCC070A6BF1BDEC844E6E201FC /* FBSDKTimeSpentData.h in Headers */, - 556B4BEE4477186865CB420D799EEB56 /* FBSDKTriStateBOOL.h in Headers */, - 98592F12C4012F47B2A972CA886D054E /* FBSDKTypeUtility.h in Headers */, - FE176F860A032686AA09D6C366D2C9EC /* FBSDKUIUtility.h in Headers */, - 762A6D233F9ECF033FF6A93EE8D1B312 /* FBSDKURLConnection.h in Headers */, - C1E2EE58E2EA7629E26E8CCB79BB17D6 /* FBSDKURLOpening.h in Headers */, - 542A4EDD600F5D4F80E88E64F8348755 /* FBSDKUtility.h in Headers */, - 7667B428B685BFA7941575697E3FD591 /* FBSDKViewImpressionTracker.h in Headers */, - 1932B23ECC778C829EA995A6F74F5D5B /* FBSDKWebDialog.h in Headers */, - 02CE817C10D60DB802D528770AECDD02 /* FBSDKWebDialogView.h in Headers */, - 8B622D2B8F97CB71EE1273AD81A43343 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */, + E273FCC56D19EBC9CB8F6C43CE0530C3 /* FBSDKLoginButton.h in Headers */, + 29F51D242E42CD214C63CED9501DA333 /* FBSDKLoginCompletion+Internal.h in Headers */, + 1FFD190681463306C97ABCD802238795 /* FBSDKLoginCompletion.h in Headers */, + EE922301DF435B008CD36FBBEBCE2013 /* FBSDKLoginConstants.h in Headers */, + C222EBE352FA0160CB53093ECB765D23 /* FBSDKLoginError.h in Headers */, + 81CFB279DD69C8D328DF48AE00E8A1F6 /* FBSDKLoginKit+Internal.h in Headers */, + 1A87FA679C6F8FB9E1635F2D327D498F /* FBSDKLoginKit.h in Headers */, + 0D781A587B6C90E1684F0E9881312466 /* FBSDKLoginManager+Internal.h in Headers */, + AB2143E64A033D3593F4B6798DB0947E /* FBSDKLoginManager.h in Headers */, + 8552B06A7BF3E6F606D6D44E22C7D940 /* FBSDKLoginManagerLogger.h in Headers */, + 4AEEEAA20163C1AD6C08AEB1BB090269 /* FBSDKLoginManagerLoginResult+Internal.h in Headers */, + 45BE13346C1088632046978C8150B515 /* FBSDKLoginManagerLoginResult.h in Headers */, + 694761A5588259C7DF1DA6DA014F5CBE /* FBSDKLoginTooltipView.h in Headers */, + C4A82D2592849F48EFC21967D4D816C1 /* FBSDKLoginUtility.h in Headers */, + 99E5BF53E83D7C3F6928CD8A16ABAF21 /* FBSDKTooltipView.h in Headers */, + 9CE0C07218A736188343B4DA20DA39FD /* _FBSDKLoginRecoveryAttempter.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - DACD2E7B73C5EAFB38585823CC5A8D64 /* Headers */ = { + 6D814384C4DBFEA192E22E0DE55574EA /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - FC8DF4009AA07E88871E128E58986C8A /* FBSDKLoginButton.h in Headers */, - 1E8B8261F4EAD05CD057F4714125D009 /* FBSDKLoginCompletion+Internal.h in Headers */, - 1A7EA98C986EAC775428C6F2E3CF145B /* FBSDKLoginCompletion.h in Headers */, - 3E8C87F48E3786E177DE28E61F4E57AB /* FBSDKLoginConstants.h in Headers */, - 71C5F8270B32558033282502BC3D8A42 /* FBSDKLoginError.h in Headers */, - 9446F878E86942E6AF0487891E865A03 /* FBSDKLoginKit+Internal.h in Headers */, - EAFC5D6DFE023A9DA433BDEFAD30C6E8 /* FBSDKLoginKit.h in Headers */, - F2AA769C78097E16F72E050AB93DE00D /* FBSDKLoginManager+Internal.h in Headers */, - 6515776E0BD305B2124402129A1C1B20 /* FBSDKLoginManager.h in Headers */, - 751995A70FBC691A9848C197D354D3F9 /* FBSDKLoginManagerLogger.h in Headers */, - 423330C6B01AD37FF96720AC2767E01A /* FBSDKLoginManagerLoginResult+Internal.h in Headers */, - 0E4C46F8ADD580C0AFE225BBDBA64D83 /* FBSDKLoginManagerLoginResult.h in Headers */, - 66521FE3823C4D51B4803BEDB1B6569F /* FBSDKLoginTooltipView.h in Headers */, - C1D984D893C9B2F151CD01FA53F38FC1 /* FBSDKLoginUtility.h in Headers */, - B0175E1CC830A5A82913B4A7F0152C0F /* FBSDKTooltipView.h in Headers */, - D886FDCCE6C9D581FB54D0279553BC46 /* _FBSDKLoginRecoveryAttempter.h in Headers */, + 38C6A63050CD48EB4AFD4BB80A9E748E /* FBSDKAccessToken.h in Headers */, + CE04A9D2777511F219923DC8A7E456FA /* FBSDKAccessTokenCache.h in Headers */, + 9E5B04ABE2C83DB36FCBDF9DE6F924FF /* FBSDKAccessTokenCacheV3.h in Headers */, + 95A8EA311AE92357D4704E6B640C5AB6 /* FBSDKAccessTokenCacheV3_17.h in Headers */, + F1D1E127FD70AF059457961F7B76C5E4 /* FBSDKAccessTokenCacheV3_21.h in Headers */, + 1A7B34868636A1A11E07B9685E7BE9B8 /* FBSDKAccessTokenCacheV4.h in Headers */, + 358E6D3F04CDD76CE5217B415314B0D4 /* FBSDKAccessTokenCaching.h in Headers */, + 8700477C4DEE150BBA6B87EEE9528A44 /* FBSDKAppEvents+Internal.h in Headers */, + 9CAEA2F3FC5A259EC3F12BDECB612EBC /* FBSDKAppEvents.h in Headers */, + 96BF60A7CC6C1DA5E3150C952FD663E4 /* FBSDKAppEventsDeviceInfo.h in Headers */, + 5F41CFDB8779912A50ABD6A631A2B4B1 /* FBSDKAppEventsState.h in Headers */, + 27D5286B2C57AD201EFD862B24BAFBD7 /* FBSDKAppEventsStateManager.h in Headers */, + 8FCAFC45A1ED8A43375A66D15276E686 /* FBSDKAppEventsUtility.h in Headers */, + 91B0FB2808205072D601D935ADC386BE /* FBSDKAppLinkResolver.h in Headers */, + 1B89B03D72EA7E5B78F08041D807F24E /* FBSDKAppLinkUtility.h in Headers */, + 62D2342808F35C1D75528BB879DCD079 /* FBSDKApplicationDelegate+Internal.h in Headers */, + F7C0DBA5EF54C0DD2928E293D97F4317 /* FBSDKApplicationDelegate.h in Headers */, + 165411C8E35D734155064C1D5B7A7E95 /* FBSDKAudioResourceLoader.h in Headers */, + A4335A60A42ACE37E88A5ED18002F7CC /* FBSDKBase64.h in Headers */, + 1F1670F7DFA0E47562CD51956E793600 /* FBSDKBoltsMeasurementEventListener.h in Headers */, + DA143DD613C9371DF58294B6C5EFD2B4 /* FBSDKBridgeAPICrypto.h in Headers */, + 84E80F23894171F4A76DF54F420398E1 /* FBSDKBridgeAPIProtocol.h in Headers */, + 9F23B3D99743F33A718A80E8A6C3C7B6 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */, + BDC94B58683F8564C61B5217AA9D8CF3 /* FBSDKBridgeAPIProtocolType.h in Headers */, + 7588F6295488C1FF35A36B4D597B0291 /* FBSDKBridgeAPIProtocolWebV1.h in Headers */, + 537F504A45AB0B342AB6A227E76F8857 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */, + 0076F8848D3C0862138855C15B8969F6 /* FBSDKBridgeAPIRequest+Private.h in Headers */, + 1CFCB3D3ED8F0D7F95ED1F62F2989787 /* FBSDKBridgeAPIRequest.h in Headers */, + 806BADC3119A86AF66B04B8C7AD36832 /* FBSDKBridgeAPIResponse.h in Headers */, + F7A01ABECB87107C0D949ABBDA1A3F6A /* FBSDKButton+Subclass.h in Headers */, + D5D8352542CA6A2CFA802B75632E6586 /* FBSDKButton.h in Headers */, + 41ADBDD587FCD69FA0E67FA5D01D1D24 /* FBSDKCloseIcon.h in Headers */, + 74E62FDCD9AC705781E45A9B7B851B2E /* FBSDKColor.h in Headers */, + 139836449D1FF9389BDF1A25AAE9550A /* FBSDKConstants.h in Headers */, + 0CFA690393172E2727762B65A2CDABC2 /* FBSDKContainerViewController.h in Headers */, + D417241C7870B27AAB51410A98A0F475 /* FBSDKCopying.h in Headers */, + 5B05A51BDC32718348A42347B24047AC /* FBSDKCoreKit+Internal.h in Headers */, + E1B74F3B3D829F2B22CBE7E78FED4A94 /* FBSDKCoreKit.h in Headers */, + FA16E9DD7604ECBFEA94DCE63C71F718 /* FBSDKCrypto.h in Headers */, + 1627ABDB622C7AA22401EFBC45268DC0 /* FBSDKDialogConfiguration.h in Headers */, + 949E9BF062D5BD5F99F83D574EE7350C /* FBSDKDynamicFrameworkLoader.h in Headers */, + B30588470800ED65039D4154015DDD6B /* FBSDKError.h in Headers */, + 7C702D387E65E1ECA41D75A1AB059FAB /* FBSDKErrorConfiguration.h in Headers */, + B7E4BEE543CE921D3E8EA19F745A4840 /* FBSDKErrorRecoveryAttempter.h in Headers */, + 65B09E455DF352D9F9870A3D64BF6EDD /* FBSDKErrorRecoveryConfiguration.h in Headers */, + CFF394E02CD69EA682C7AD26E4A6580E /* FBSDKGraphErrorRecoveryProcessor.h in Headers */, + FC741D511C021CB157AE1A996FCFB3D5 /* FBSDKGraphRequest+Internal.h in Headers */, + 4DB17B4ECC016AB59E509AC962A6B8D3 /* FBSDKGraphRequest.h in Headers */, + 204DDADC01B3E9C60F94B73B1DA02D78 /* FBSDKGraphRequestBody.h in Headers */, + E56A71F9DCE03E0D3A23C186BC549398 /* FBSDKGraphRequestConnection+Internal.h in Headers */, + DC95621B201A1643FEDCA0D4B8F9F8AE /* FBSDKGraphRequestConnection.h in Headers */, + 33C2196F168DB4DADADB70A0F821A923 /* FBSDKGraphRequestDataAttachment.h in Headers */, + BE81BB3D49E3317002BEE498E3D5DA50 /* FBSDKGraphRequestMetadata.h in Headers */, + 2175F55C5F40FFAE2164E17849FF158D /* FBSDKGraphRequestPiggybackManager.h in Headers */, + 2CA9451A1DF7FD5448467C2E46D8B709 /* FBSDKIcon.h in Headers */, + EB863E147B32EC3C3B48045F1C88FA94 /* FBSDKInternalUtility.h in Headers */, + 9D78ACDBFEA0C1BE2E92617B281FBA83 /* FBSDKKeychainStore.h in Headers */, + 812E20ED57C5B81B34AB5CC8BA24441D /* FBSDKKeychainStoreViaBundleID.h in Headers */, + F6B1B2E35E2A2F8DD6C246B5EDA59478 /* FBSDKLogger.h in Headers */, + F80DA427D9B4EFC30775898E17772FBD /* FBSDKLogo.h in Headers */, + D181D054976B047917CE654092F55A0D /* FBSDKMacros.h in Headers */, + AEFB1B90E74FD8578D51CC4A5107313F /* FBSDKMaleSilhouetteIcon.h in Headers */, + 3216502FBE7540ECD129D15528EC0A1B /* FBSDKMath.h in Headers */, + F22D730AF7C810CEC8F093F249E164B9 /* FBSDKMonotonicTime.h in Headers */, + EB0104D47F39544F712F75BB8B3DCEAE /* FBSDKMutableCopying.h in Headers */, + 995DC7CA4C2115CC77A9458E848D53F4 /* FBSDKPaymentObserver.h in Headers */, + 654A88020DDA963F33B82DC810141C97 /* FBSDKProfile+Internal.h in Headers */, + 962AF9D2ECAFBB82577BC5870B99A5AC /* FBSDKProfile.h in Headers */, + F68578BB7CC74D30FAB7AE569B031F1F /* FBSDKProfilePictureView.h in Headers */, + FE61940A58EB4C4C8D2559C46F7C0FE4 /* FBSDKServerConfiguration+Internal.h in Headers */, + 2ABACE5B5D7D1688A1D1F8BE1224F574 /* FBSDKServerConfiguration.h in Headers */, + A54FE2B3F69ED6C33AC71A8B49360D44 /* FBSDKServerConfigurationManager+Internal.h in Headers */, + 8D474DFB1ECB14E03F575ACFE0B26538 /* FBSDKServerConfigurationManager.h in Headers */, + 8FB0A448CF0BE75E167A5B4C4E353D90 /* FBSDKSettings+Internal.h in Headers */, + E3DAA3FD4277840AC125CD26EE72A61B /* FBSDKSettings.h in Headers */, + BBAE76F290141486645F6885DA829A55 /* FBSDKSystemAccountStoreAdapter.h in Headers */, + CC6774347838445871178181BC28620A /* FBSDKTestUsersManager.h in Headers */, + B503F98EF155E568AAFF59237046DD90 /* FBSDKTimeSpentData.h in Headers */, + 09B5027EB6E9E85497A98ED58C0AA9F2 /* FBSDKTriStateBOOL.h in Headers */, + 7B518BDCB9857C22C76D89C15E4571D8 /* FBSDKTypeUtility.h in Headers */, + 389B345C717A5E21578570628297DE0C /* FBSDKUIUtility.h in Headers */, + 455E7B4B376DA91E5E9FED7A9C668D3F /* FBSDKURLConnection.h in Headers */, + EAEB1AFFEF75396CA12351C6D85EFD54 /* FBSDKURLOpening.h in Headers */, + 49B0E1ADABDDA3C73B2C2A457223BC2C /* FBSDKUtility.h in Headers */, + D539A64059405A192DA4DD93A1819502 /* FBSDKViewImpressionTracker.h in Headers */, + 7E7BB5AD7A49C149712AFC678C255451 /* FBSDKWebDialog.h in Headers */, + 359E55D720B39F54548BBE07AA3BBB48 /* FBSDKWebDialogView.h in Headers */, + BB0147FB69D9824B3084835C05ED2D96 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7B8E2A49149A02800D6DFC8B1ED1EDBC /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B59666CE66E901154A8239073431C260 /* BFTask+Private.h in Headers */, + 35582974E5D8C37C5E69CB967330B7F6 /* PFACL.h in Headers */, + 255F8174747BEE4E1DBA228D6B91F7DE /* PFACLPrivate.h in Headers */, + C48038B4840E38D6CC3CEB1604944E87 /* PFACLState.h in Headers */, + E027ECC5E4F105AAA36189986EC6E3A3 /* PFACLState_Private.h in Headers */, + 4574F0728D51C1DB6F88E0238ECCD638 /* PFAlertView.h in Headers */, + D03F806B3D48F7003CC1DCAAE0D7F7AD /* PFAnalytics.h in Headers */, + 8FF05DB71CAB42D4094135A93E77060C /* PFAnalyticsController.h in Headers */, + 18137F7F403B447DCC10865DB6B08485 /* PFAnalyticsUtilities.h in Headers */, + 7247C89530C6427A67956C925B68F4D8 /* PFAnalytics_Private.h in Headers */, + 1A091BE8B5581EDAFE2E8C884AB2F9FB /* PFAnonymousAuthenticationProvider.h in Headers */, + F3E0AC37722D619B98C8F59B2F79F7EE /* PFAnonymousUtils.h in Headers */, + B3573F43A0E654ED6253ED7CEB106C44 /* PFAnonymousUtils_Private.h in Headers */, + DFE76642360EFF066C3CC145468E4BC2 /* PFApplication.h in Headers */, + 36A1B6147DA2DD394552DDB51C37DFAA /* PFAssert.h in Headers */, + 7DC6C578F01533E6B939916438FCF022 /* PFAsyncTaskQueue.h in Headers */, + C5977D81D3310AC9F8ED1BBE8D297D3F /* PFBase64Encoder.h in Headers */, + 1FFBD1EEC0E90F3FE1279B2D4828F84E /* PFBaseState.h in Headers */, + F1F29611141F8144413F5980024BCDE7 /* PFCachedQueryController.h in Headers */, + D10CDE3288CBAECCB4870B578BA26A96 /* PFCategoryLoader.h in Headers */, + B703741B0A21A1DB2F89EC7414A8FA26 /* PFCloud.h in Headers */, + CE21ACAE8CD2E1F05A6878D3B2482ABB /* PFCloudCodeController.h in Headers */, + A73836C245FAD1D78661404A365F13A4 /* PFCommandCache.h in Headers */, + 1FCDA4DAD6F25814BF8EB9DFB98A9798 /* PFCommandCache_Private.h in Headers */, + 0455144463BABE9F7588B14858F7FBD9 /* PFCommandResult.h in Headers */, + 0600F71A1A6C706F958DA903B2474602 /* PFCommandRunning.h in Headers */, + 96C0654FF3DA4CA52E8645F5906D7A4F /* PFCommandRunningConstants.h in Headers */, + 78F3C290F4ABB6382D55AC7EDDB85873 /* PFCommandURLRequestConstructor.h in Headers */, + CC8D510E3D7EF751A5E55F13A2071D87 /* PFConfig.h in Headers */, + 3E132B5FEEBF0FAC1F709354042C6181 /* PFConfigController.h in Headers */, + 45C370F777F372C29E152959C44D825E /* PFConfig_Private.h in Headers */, + 6D8069186AA68903B3B1E3A9FE645FC7 /* PFConstants.h in Headers */, + 6B7131E140E2CDB8DE40B439FA26D657 /* PFCoreDataProvider.h in Headers */, + AE7D44B9963E439D25BA557117AAB3FC /* PFCoreManager.h in Headers */, + 0FD6F7DC809A014C513B088D3EC9DC6B /* PFCurrentConfigController.h in Headers */, + 4C192107186E7E1C8AE7BEB83BA0E24A /* PFCurrentInstallationController.h in Headers */, + A92D8896D37E1D574BA51B6B4762E648 /* PFCurrentObjectControlling.h in Headers */, + F58687BA4A3BE0B69DF85C2CED642104 /* PFCurrentUserController.h in Headers */, + 4E1E288E9B60710885CB7D0D34371D28 /* PFDataProvider.h in Headers */, + E51BE51D61BD89C6F13645CE46F0E87B /* PFDateFormatter.h in Headers */, + 9C23BE6854C26A25FF7BD9A4212C6D31 /* PFDecoder.h in Headers */, + 3B1B1F2120C6124502241F7475BF4A34 /* PFDefaultACLController.h in Headers */, + 6695A079915118627BA77F70911E243C /* PFDevice.h in Headers */, + 165198337F3D88ED8D13950D042243F3 /* PFEncoder.h in Headers */, + EFC9DC66A1415A8C54AF1D0F6BCB5FF3 /* PFErrorUtilities.h in Headers */, + 15C5CEA7AE66D7CCBBC99C533A80856B /* PFEventuallyPin.h in Headers */, + 83BD07623A7905682A5066B1C1CEDA26 /* PFEventuallyQueue.h in Headers */, + 0240D5556E070D570A97669B5550C3DC /* PFEventuallyQueue_Private.h in Headers */, + D41DB6CD0DFFE0F06736B971FF6E40DA /* PFFieldOperation.h in Headers */, + 7FCD4FF353DB6DE536D86717C65C0204 /* PFFieldOperationDecoder.h in Headers */, + 696C35B2099E61F0EEA8AA1B1F998C1C /* PFFile.h in Headers */, + D74F2E810DA974E4D08A2873A84D1A9C /* PFFileController.h in Headers */, + AA6E969F0ACDA126C12E755EA39EAAC3 /* PFFileDataStream.h in Headers */, + 1FDD51E9AB8FE7FC5D2629B19426C4A2 /* PFFileManager.h in Headers */, + 0DE4FD1C506CB317481F942614CFE432 /* PFFileStagingController.h in Headers */, + 8ADDFE574B996E273961DAA1620E9613 /* PFFileState.h in Headers */, + E27A9C15F3D333CE44838FC62A07DCD0 /* PFFileState_Private.h in Headers */, + 54F586403DA2EFA3BAA583BD615F96C4 /* PFFile_Private.h in Headers */, + D9850B00148639B256BDE5F3F23C8A0F /* PFGeoPoint.h in Headers */, + 76B02A59FD2C1AECC0387DB93BCC94EF /* PFGeoPointPrivate.h in Headers */, + 6CDB057F1E455322CF133BEBDBD26FC9 /* PFHTTPRequest.h in Headers */, + 58F1B6573F9C8D331A70BD1B3FD3F894 /* PFHTTPURLRequestConstructor.h in Headers */, + A9B1A69195737600121B362FF71C4482 /* PFHash.h in Headers */, + F2AF88887A99A5F17A7C1006F78D0754 /* PFInstallation.h in Headers */, + 8ABEC82F977A95FF8798858A869CEDC8 /* PFInstallationConstants.h in Headers */, + 1388690C4046C715B129CBE4F501C410 /* PFInstallationController.h in Headers */, + AA25FED1F75847E0B88021010EA77F7E /* PFInstallationIdentifierStore.h in Headers */, + 664A8B6A7BF211DA84A48A07F78A73C0 /* PFInstallationIdentifierStore_Private.h in Headers */, + 847247B05193D07DE43AF03B10C8F65D /* PFInstallationPrivate.h in Headers */, + 279BC3A66039DA564403BDB1A3466D92 /* PFInternalUtils.h in Headers */, + 93A3540505C0BE9A4983E4015D5CACBA /* PFJSONSerialization.h in Headers */, + 459FB122AFB2F2790C0397A0A1100517 /* PFKeyValueCache.h in Headers */, + D2607228CAE8BB301CB8263391ABCDCB /* PFKeyValueCache_Private.h in Headers */, + 01EAB8D957945D4CE9D3A81888EC6AFD /* PFKeychainStore.h in Headers */, + E63BBF78198C05D1B345C98DE621F745 /* PFLocationManager.h in Headers */, + 0031093FE01CA0F995D38F14E0786CE5 /* PFLogger.h in Headers */, + 906E067419EAFC22D23DA657F3CF9693 /* PFLogging.h in Headers */, + E3ADD077F80CC1DD43ECE53F10FA20E6 /* PFMacros.h in Headers */, + 8C6A3E1F148F5CEAD72A1BBF59B974C1 /* PFMultiProcessFileLock.h in Headers */, + 2039DF3542A81321E4BC68F087EFB01F /* PFMultiProcessFileLockController.h in Headers */, + 7DE52253AC3B77AD116C7B85E50C7C19 /* PFMulticastDelegate.h in Headers */, + D426F78D685F292D750DDAE27B542951 /* PFMutableACLState.h in Headers */, + 14ED5D2A2E45EDFAC58F338BB275BB27 /* PFMutableFileState.h in Headers */, + C4A0B3AE8DE75263B4F77C7A56761C61 /* PFMutableObjectState.h in Headers */, + E0ACC93E5EA8EBCAB60DB71BEF5C1693 /* PFMutablePushState.h in Headers */, + 391C0FB05028B2080F37A8AF4931A664 /* PFMutableQueryState.h in Headers */, + 4B2A23038CB7A3FEA1B0818BCC5681B2 /* PFMutableRelationState.h in Headers */, + 769DB7E377D5E818B5EB613CC5E902C9 /* PFMutableUserState.h in Headers */, + 824352FF2399FD1CDC6D6D817685FA33 /* PFNetworkActivityIndicatorManager.h in Headers */, + FAD2F3F163BE5C8ADB49265D238A0A88 /* PFNetworkCommand.h in Headers */, + 6B4E4936DD042805436D14527E7B083D /* PFNullability.h in Headers */, + E7D61730878DC04A66A7F4C7F4E46A5D /* PFObject+Subclass.h in Headers */, + 6431A5828DAF7B2CFC0A1757F76E5C48 /* PFObject.h in Headers */, + 823183722B03E811E5B712BF5182521D /* PFObjectBatchController.h in Headers */, + 099BAF1AD4D80C3814E83CB96A7F9ED2 /* PFObjectConstants.h in Headers */, + 9200159DC5F8143B827C1F843DF2B710 /* PFObjectController.h in Headers */, + 62508475BB6D02884B6F40E981B30FB0 /* PFObjectController_Private.h in Headers */, + EEC92256C2CE4D6A71D7BEBCB59FA596 /* PFObjectControlling.h in Headers */, + E1810D26E4FC22372B19063A3CEA743E /* PFObjectEstimatedData.h in Headers */, + E501C70A3F56D91E2FD2E2135A1EC469 /* PFObjectFileCoder.h in Headers */, + 7F55E76E58B983036FF0856D12318766 /* PFObjectFileCodingLogic.h in Headers */, + 0F900FFCB72D81E50A554D642CBB8885 /* PFObjectFilePersistenceController.h in Headers */, + E75B88CF9855E0AE3BF0E5D2E262D062 /* PFObjectLocalIdStore.h in Headers */, + 2E7C5E79D1A09338147DF84B8A9EA400 /* PFObjectPrivate.h in Headers */, + ACF041AF7954A94B73F36771017E1433 /* PFObjectState.h in Headers */, + 0C6BC3E49CBD68FA2DF9587848F59916 /* PFObjectState_Private.h in Headers */, + B3B89D2A7B994E378A344B620ADCA35E /* PFObjectSubclassInfo.h in Headers */, + F0A8AEAA9CA105D255B698A63E916966 /* PFObjectSubclassingController.h in Headers */, + 5C41141CD7D1FAC5C9B739AC0E3FE876 /* PFObjectUtilities.h in Headers */, + 5676B33310A2A718632F8EB4599082F3 /* PFOfflineObjectController.h in Headers */, + 3F8B0AD29B9B4773DE22580FEAF3E52D /* PFOfflineQueryController.h in Headers */, + B50CAA3D21A9C93DFC9017CB1C1A6520 /* PFOfflineQueryLogic.h in Headers */, + A0A59E60CF207E84E074F3AC90546799 /* PFOfflineStore.h in Headers */, + DF8EBECA6B580DBD79CB044E25D8D25F /* PFOperationSet.h in Headers */, + 25A70766920D6C0A260636FDE527A851 /* PFPaymentTransactionObserver.h in Headers */, + CDCA058527BCAAC5DAC3C538DBDC6855 /* PFPaymentTransactionObserver_Private.h in Headers */, + 86E29A0B163945AD1202BBBA3B932D9A /* PFPin.h in Headers */, + EEA05A7718D37867B32667CBD6D71B51 /* PFPinningEventuallyQueue.h in Headers */, + EE600F90E43CBFE4E16F3AF3E3FCD24A /* PFPinningObjectStore.h in Headers */, + FA492C9CAE233569C4240CBE669CCC18 /* PFProduct+Private.h in Headers */, + 8ADE524A64AB7D81516BBFCC74B49351 /* PFProduct.h in Headers */, + 5363AC9672DB64C9118CB994E4A7BC2D /* PFProductsRequestHandler.h in Headers */, + 4AB15B4CCF41C8A354FBC5E810F6F9DE /* PFPropertyInfo.h in Headers */, + A7C11E5DBBF673F5014C251AA00BB71B /* PFPropertyInfo_Private.h in Headers */, + 1C30161F5CCDE877911BBF4E37C668AB /* PFPropertyInfo_Runtime.h in Headers */, + F8776BBAA1C27717D2D5D893A232EE64 /* PFPurchase.h in Headers */, + 92A1C24F9EDE76ED654923B58AFEC34E /* PFPurchaseController.h in Headers */, + 1001DEFE89CB83044A7A1B3AE42C0F66 /* PFPush.h in Headers */, + D1E97F4708237AC9D9EE8F0DC21C7B64 /* PFPushChannelsController.h in Headers */, + 7FEC1DED15AE9E52C32A206F1BE40115 /* PFPushController.h in Headers */, + 8AC64D13C6DE5D63254570F33C7B7C7F /* PFPushManager.h in Headers */, + 148878B5B97134968A610F4A0BD27E8B /* PFPushPrivate.h in Headers */, + 581F100F4AA60AB4541967C135D9DBD6 /* PFPushState.h in Headers */, + 10E5693130E9DBC6DD16809E06484C4C /* PFPushState_Private.h in Headers */, + 20A9F089A7FD34F0A52109F66A201BE8 /* PFPushUtilities.h in Headers */, + 3FC326BA0AD90AB0A54AA0C84106CA4C /* PFQuery.h in Headers */, + C4B4503F43EC426C4289493879FCB0E8 /* PFQueryController.h in Headers */, + D97458B299708EC25990B63810465D97 /* PFQueryPrivate.h in Headers */, + F7AA085613E075E8E5C9624051D73C40 /* PFQueryState.h in Headers */, + 49B25AC78150B8692A15271678A5E544 /* PFQueryState_Private.h in Headers */, + 6AAEAA9C1568F984F7340E7E66CC9EF9 /* PFQueryUtilities.h in Headers */, + F9B29220D46F9601E53EAC2960053F8E /* PFRESTAnalyticsCommand.h in Headers */, + DA8E9CB7BC799826B6986C010360E359 /* PFRESTCloudCommand.h in Headers */, + 491495DF4B5CFE183633BB819E705184 /* PFRESTCommand.h in Headers */, + 0490862CDB776C815363CFC351F1F3A1 /* PFRESTCommand_Private.h in Headers */, + 3123E5228CAF40E9B6D9E6BC745611D8 /* PFRESTConfigCommand.h in Headers */, + DDA5BB61D5FDA34A2F4DA088708BFF07 /* PFRESTFileCommand.h in Headers */, + FA655EAE8BB4D9B2C519FE4B4E257FC0 /* PFRESTObjectBatchCommand.h in Headers */, + 2F7CEA1D8FB71E86849259929F76AAB1 /* PFRESTObjectCommand.h in Headers */, + 2F1D9D6FAE731109B9B920E1C136B4F5 /* PFRESTPushCommand.h in Headers */, + 2BA6D9AB7D2AAD271967A17F3F924663 /* PFRESTQueryCommand.h in Headers */, + 56C1BCFCD84D90290B05C0A3874FA0A7 /* PFRESTSessionCommand.h in Headers */, + 0534960921332F24B285B5A2DF46AEEA /* PFRESTUserCommand.h in Headers */, + 1A7028D0D1252E883696DA49D7F51E52 /* PFReachability.h in Headers */, + 8188B7DDD81BFD211F628D8EFEF3C300 /* PFRelation.h in Headers */, + CC2ABE5C8F67B4B91BD62C41634F456C /* PFRelationPrivate.h in Headers */, + 5FE50967209C8A609F2755E712C18CFD /* PFRelationState.h in Headers */, + FE05CC6A81AEDA51F7B8BFFDAC3A3C33 /* PFRelationState_Private.h in Headers */, + 1466ADD5C1C9064B71781241B2AC887D /* PFRole.h in Headers */, + 76BE06A3ACC6F8D20AECC3C947176E57 /* PFSQLiteDatabase.h in Headers */, + F5D3F433965CBC07523BF8B52A4CFD0D /* PFSQLiteDatabaseController.h in Headers */, + 1D2DBAC1F882B01E611F87B197AE52C7 /* PFSQLiteDatabaseResult.h in Headers */, + FC49C19B4A93B84BFCD85C648FFEDDB1 /* PFSQLiteDatabase_Private.h in Headers */, + E9AA2204628D9753A4A5EB1AC368ABF7 /* PFSQLiteStatement.h in Headers */, + 5B36F8CEF9561B1BBC50AE696901B039 /* PFSession.h in Headers */, + 0F43A45B89B58E00B1FE0F97BBC073E6 /* PFSessionController.h in Headers */, + 8587D45B790E4579166CA011B18A0083 /* PFSessionUtilities.h in Headers */, + C7E8486D1F67A49434500098CC8DB323 /* PFSession_Private.h in Headers */, + B093EFF1E2ECE82CDA6B6B9B1E8A0B66 /* PFSubclassing.h in Headers */, + 96C59365E57E7DC8F92C37E3FCC8664B /* PFTaskQueue.h in Headers */, + CAB7052056C21EFFD46860D32FE256B7 /* PFThreadsafety.h in Headers */, + F2262E4714D619DFE966A76A7871E8C0 /* PFURLConstructor.h in Headers */, + CB6E04CE7A2D8908A3E3D529DB7F5061 /* PFURLSession.h in Headers */, + 2F30FD14654236C2AB6410924BAD50F3 /* PFURLSessionCommandRunner.h in Headers */, + 23DDE6D9EB01F5BCF7FA3B95E0962D0D /* PFURLSessionCommandRunner_Private.h in Headers */, + 05CD7BC5729091AECA9F16F650E89EFB /* PFURLSessionDataTaskDelegate.h in Headers */, + EB727D0AC97D5FF6566CE2138A73F2BF /* PFURLSessionDataTaskDelegate_Private.h in Headers */, + E9D6CE3222E0BA71F2A6417D9096F495 /* PFURLSessionFileDownloadTaskDelegate.h in Headers */, + 63368804039E7C1DD02EE36D4132FECB /* PFURLSessionJSONDataTaskDelegate.h in Headers */, + 786E305F1780B943C505B7034C654FC0 /* PFURLSessionUploadTaskDelegate.h in Headers */, + B77C09C30F319B9914148050FE53A842 /* PFURLSession_Private.h in Headers */, + 347444A5012AA92268504F167C1A9BE8 /* PFUser.h in Headers */, + 5DFAE3F0BCBCA31DF32FEF4DF7083137 /* PFUserAuthenticationController.h in Headers */, + 4C0A7707981C891E0EAB882E66D9D7DB /* PFUserAuthenticationDelegate.h in Headers */, + 9C64E7360A956C3AEEAA371F1F48A572 /* PFUserConstants.h in Headers */, + F01956C5A64FDF6066764555830C417B /* PFUserController.h in Headers */, + 5254D905261CECDD104D077E9EC0FAF4 /* PFUserFileCodingLogic.h in Headers */, + 43B53D52EF9B54815FB801838A053E1A /* PFUserPrivate.h in Headers */, + 63D7567007CCC845EDDFCE115D1923B3 /* PFUserState.h in Headers */, + D58BA1D2025529F819D6E423F0C7DD6A /* PFUserState_Private.h in Headers */, + 5D2753286AEEB426BF28716E486B50E1 /* PFWeakValue.h in Headers */, + 1E7CC04F13ABFE73058CD7DF69C9812B /* Parse.h in Headers */, + F76B7A3DCC976CFA0702A75323201FFC /* ParseInternal.h in Headers */, + 99CE3270C4F73E2A162321E133F2F19C /* ParseManager.h in Headers */, + 94C2E9AB52E39C8B5DAC91BADA725ED5 /* ParseModule.h in Headers */, + 16679D0607E9A53098AB211571CE9999 /* Parse_Private.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 228A8DE101DBB992D8BCEC1E4FD9FFB7 /* FBSDKLoginKit */ = { + 52CB7F68BF709EBC0E9FFA4144EE1B03 /* Pods */ = { isa = PBXNativeTarget; - buildConfigurationList = 008AF45A7DCEC840A23CB8A8F28940B5 /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */; + buildConfigurationList = CDF5B94A1AD23341CC8912A155000168 /* Build configuration list for PBXNativeTarget "Pods" */; buildPhases = ( - 52A557D9D6AD36B9EE87EC5D7D2B9F16 /* Sources */, - 40AC19B3F8E01DF016229112D2367F46 /* Frameworks */, - DACD2E7B73C5EAFB38585823CC5A8D64 /* Headers */, + B26D5C7B40825F0680D99F821074236C /* Sources */, + 93050DA4590BB3C69121F66E0613EF97 /* Frameworks */, ); buildRules = ( ); dependencies = ( - 498553B7AB02C22E1DDAEC22B3A757E5 /* PBXTargetDependency */, + 83340A961B88FA5D84F0ACFEE8ED29F1 /* PBXTargetDependency */, + 168FDC441C5ED325FB25195E8F588905 /* PBXTargetDependency */, + 4769649AD55AD9CB56E1B6B272FE63A7 /* PBXTargetDependency */, + 21153761B975767074D4C03E7BFB1A5F /* PBXTargetDependency */, + 2D708019954A38BA2635EC665543F5C0 /* PBXTargetDependency */, ); - name = FBSDKLoginKit; - productName = FBSDKLoginKit; - productReference = DC219C5A4D9CF2E73465E5137C2B9ADC /* libFBSDKLoginKit.a */; + name = Pods; + productName = Pods; + productReference = 5FB626B7387C990243FEC9C3854CBAD8 /* libPods.a */; productType = "com.apple.product-type.library.static"; }; - 3BCD0D10E30222706C12D7C3102FA893 /* FBSDKShareKit */ = { + 7F26E33CF29862A805138C68D09DFFD9 /* Parse */ = { isa = PBXNativeTarget; - buildConfigurationList = F1929F0DB463DFC558DC2ACC6C8BB716 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */; + buildConfigurationList = 7E13494350C0FC498BF645C868B122FF /* Build configuration list for PBXNativeTarget "Parse" */; buildPhases = ( - 33364A72F9A20C06C4CE43992252DF26 /* Sources */, - A14B9249809C06A9D3AEFBA9B23EA350 /* Frameworks */, - 1A19916C2132F3208272B8CEB94A68DE /* Headers */, + A744DAE075D3A364F804338FDC50D99E /* Sources */, + D97E53C2B2D248D6179FE56627FD0227 /* Frameworks */, + 7B8E2A49149A02800D6DFC8B1ED1EDBC /* Headers */, ); buildRules = ( ); dependencies = ( - 94EE6831D03FF605E8D58953481383B1 /* PBXTargetDependency */, + CFAB7ED8904A8A0AF23967A80AB156F5 /* PBXTargetDependency */, ); - name = FBSDKShareKit; - productName = FBSDKShareKit; - productReference = 687D294ACB2FA8374173C7BB1EBD1D0B /* libFBSDKShareKit.a */; + name = Parse; + productName = Parse; + productReference = B71C430B59468A7C97039EC40E16D99C /* libParse.a */; productType = "com.apple.product-type.library.static"; }; - 5D317E2C239D207CE072A2C1FE79D30A /* Bolts */ = { + 87F49B89DFA2EDF98E9D8C6CB50976BF /* FBSDKLoginKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 508AC5ACB7A2105F131E3E1DF5F1A124 /* Build configuration list for PBXNativeTarget "Bolts" */; + buildConfigurationList = 17DD4B0EAD5E9153182F758DFC55773C /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */; buildPhases = ( - B5F6CCCA510D0D147183CDBAD7F9738A /* Sources */, - 563EEC817F4B39196257BF87E9BAF65B /* Frameworks */, - 3E02813C30D26A6F02927C79F5D7D255 /* Headers */, + FAF70D5E5995F0AC85A56F2D3A5F19E3 /* Sources */, + D376342DD6A10F6488BB2E42F69AC518 /* Frameworks */, + 4F1C8D7D6225C287FDC9497697EA0A15 /* Headers */, ); buildRules = ( ); dependencies = ( + 274F0E48B913EFEBE53D20780E4BB8EC /* PBXTargetDependency */, ); - name = Bolts; - productName = Bolts; - productReference = 1276BE5A9F1D39331198580AAA4221EB /* libBolts.a */; + name = FBSDKLoginKit; + productName = FBSDKLoginKit; + productReference = FB0644F2C0DBFC0141F618380733B87C /* libFBSDKLoginKit.a */; + productType = "com.apple.product-type.library.static"; + }; + 8ADAD2264B57B834BB67514D536FB7E3 /* FBSDKShareKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3603EDDAAE405DC809528E455AF69D7B /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */; + buildPhases = ( + A8DFD12571AC8473B88B20A031B81332 /* Sources */, + 52B566C3F38D88DAE6CB3B0099A0DB2D /* Frameworks */, + 04B8CBA2668FA29112DD7DD832E8D275 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 7D049BC297DCB49CA53EFA534D202258 /* PBXTargetDependency */, + ); + name = FBSDKShareKit; + productName = FBSDKShareKit; + productReference = DAAE63B311691BDD6651032E86A8597B /* libFBSDKShareKit.a */; productType = "com.apple.product-type.library.static"; }; - 7514A5BBFEA8726C550640239F35CF9F /* FBSDKCoreKit */ = { + A510D2CCD10E1ACAF039EB42370EECE9 /* FBSDKCoreKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 318D64157D92C3305C44018C69F6714D /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */; + buildConfigurationList = 6B61B0CA93D49C3907B87A762AC584B0 /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */; buildPhases = ( - 02D5247A5861926B03B9815A1BBD8978 /* Sources */, - 1E72EB589808F87950D233F18FFBBD2E /* Frameworks */, - 75EC6E4BB111633BED714695B117A909 /* Headers */, + 4D1D5315CF943DC90283715F1CE73F30 /* Sources */, + C30A5B56F2EB2A290FA16DA8E83058C3 /* Frameworks */, + 6D814384C4DBFEA192E22E0DE55574EA /* Headers */, ); buildRules = ( ); dependencies = ( - E956503DD1B5D1958CD15106C3FCA103 /* PBXTargetDependency */, + 31E3F3487AE06970184CBCDE791FAD18 /* PBXTargetDependency */, ); name = FBSDKCoreKit; productName = FBSDKCoreKit; - productReference = B6B4D633C955BC761C6FFA1EF8A98580 /* libFBSDKCoreKit.a */; + productReference = 7431B6B9B7E1DFEF929BB54553B5676F /* libFBSDKCoreKit.a */; productType = "com.apple.product-type.library.static"; }; - A063F697CC37CD18346F0404AED11874 /* Pods */ = { + E017A37450D026E9D888F3645A58C436 /* Bolts */ = { isa = PBXNativeTarget; - buildConfigurationList = 3860FF88C80D2DA6686687257F735AD1 /* Build configuration list for PBXNativeTarget "Pods" */; + buildConfigurationList = D03813A2C1491FAB09CEC4572528E261 /* Build configuration list for PBXNativeTarget "Bolts" */; buildPhases = ( - 428E3CDA6242B355796622DBAA26DD29 /* Sources */, - 1C1DD4BE9A8F7C910DF0F3E77BF7C62D /* Frameworks */, + 04F916F03CC6C84D27C0C169FC85A363 /* Sources */, + 5931A939FDAB18C661EC31929DC88491 /* Frameworks */, + 1C1CFC19EEFD59FB7CA7916BF561B779 /* Headers */, ); buildRules = ( ); dependencies = ( - 54884D0DF003C3460B42231FCBA904C0 /* PBXTargetDependency */, - 1154ED62C9EBAFBFBEE5E01C23702978 /* PBXTargetDependency */, - A8C11B55DBA1CE791C24C8C9232EED47 /* PBXTargetDependency */, - 6943C731F6F55D5EA7D991FAAE3835C7 /* PBXTargetDependency */, ); - name = Pods; - productName = Pods; - productReference = AE1FBE172796B6EE66C9CE028F91A9D6 /* libPods.a */; + name = Bolts; + productName = Bolts; + productReference = 46D403D3185FA87D018A34BBD7A76FC0 /* libBolts.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -1566,235 +2913,436 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 5D317E2C239D207CE072A2C1FE79D30A /* Bolts */, - 7514A5BBFEA8726C550640239F35CF9F /* FBSDKCoreKit */, - 228A8DE101DBB992D8BCEC1E4FD9FFB7 /* FBSDKLoginKit */, - 3BCD0D10E30222706C12D7C3102FA893 /* FBSDKShareKit */, - A063F697CC37CD18346F0404AED11874 /* Pods */, + E017A37450D026E9D888F3645A58C436 /* Bolts */, + A510D2CCD10E1ACAF039EB42370EECE9 /* FBSDKCoreKit */, + 87F49B89DFA2EDF98E9D8C6CB50976BF /* FBSDKLoginKit */, + 8ADAD2264B57B834BB67514D536FB7E3 /* FBSDKShareKit */, + 7F26E33CF29862A805138C68D09DFFD9 /* Parse */, + 52CB7F68BF709EBC0E9FFA4144EE1B03 /* Pods */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 02D5247A5861926B03B9815A1BBD8978 /* Sources */ = { + 04F916F03CC6C84D27C0C169FC85A363 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5E4C8F31597A078F0C354AB8710A0E08 /* BFAppLink.m in Sources */, + 1130B0AEE5F9BD63B55C152BAF5106DC /* BFAppLinkNavigation.m in Sources */, + 35118B7E36A74239A4477C8E27A33FEE /* BFAppLinkReturnToRefererController.m in Sources */, + C9A04A5564AD93F2D29EB2A7E0B4A9DB /* BFAppLinkReturnToRefererView.m in Sources */, + 3C2B301A7BCE209D2D1C8E06F9EC8D37 /* BFAppLinkTarget.m in Sources */, + 8E07A844FBC59F8B9D73FAE12E02750B /* BFCancellationToken.m in Sources */, + 6106389848B734829466DFE8F59D4902 /* BFCancellationTokenRegistration.m in Sources */, + FEE736B607EBEDA1D87C97B7A60C056C /* BFCancellationTokenSource.m in Sources */, + 1E2206097284965CFD9DFE4426467D67 /* BFExecutor.m in Sources */, + E0B1DB6ADFD698DA60717627A946015E /* BFMeasurementEvent.m in Sources */, + 627E13AAD8DEE6700D48E5D62A19E006 /* BFTask.m in Sources */, + 53B43D61079878D9F3D459CDEEEE0C39 /* BFTaskCompletionSource.m in Sources */, + C19D9ECB5B4495B5218A40256135FF82 /* BFURL.m in Sources */, + B2BDC7947CCD674D3AB2E9C362FF6D7C /* BFWebViewAppLinkResolver.m in Sources */, + 6CBF07685287382B192F73AF43D9072D /* Bolts-dummy.m in Sources */, + EDC9073C2528E8A4C94343F4F3AB7FEF /* Bolts.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4D1D5315CF943DC90283715F1CE73F30 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F8C616C859912B70A4CD872EA8F7A23E /* FBSDKAccessToken.m in Sources */, - BD53A7AA25C4819BD49089938C6C18B3 /* FBSDKAccessTokenCache.m in Sources */, - 36B027BFBD5E91EBA7EBE9B430CAEBAE /* FBSDKAccessTokenCacheV3.m in Sources */, - B6FF39AE12B24C61E4E63F63329AD042 /* FBSDKAccessTokenCacheV3_17.m in Sources */, - 72AC09070892237ADC0AE8C2876565AA /* FBSDKAccessTokenCacheV3_21.m in Sources */, - D4401D7CDC50F868125D07720EE0080D /* FBSDKAccessTokenCacheV4.m in Sources */, - 965BA8F00CE3D6909531A1A75CECA2B4 /* FBSDKAppEvents.m in Sources */, - 91C2251DF36023609ABFDE929F850422 /* FBSDKAppEventsDeviceInfo.m in Sources */, - 83E613CF96D388F4BAB48941647A294A /* FBSDKAppEventsState.m in Sources */, - 509F398D211295351837BB6AC960D4FA /* FBSDKAppEventsStateManager.m in Sources */, - 63FA668AF7EEB9D054D1B49A2B6C7FD7 /* FBSDKAppEventsUtility.m in Sources */, - C4C1A3B4D31942461B566C5930B08591 /* FBSDKAppLinkResolver.m in Sources */, - 2D9204953A03CF4E39CDAB8A7D98F4EB /* FBSDKAppLinkUtility.m in Sources */, - 2A4F558F44525BAC6EE6F823DB600240 /* FBSDKApplicationDelegate.m in Sources */, - 27482D67BFDB88CDD0E7668C5328EDCC /* FBSDKAudioResourceLoader.m in Sources */, - 76CE6EAA24A997F35EE30A2085F5B4A5 /* FBSDKBase64.m in Sources */, - 948272BE3CAE53C5DDA5000B8A51AEDD /* FBSDKBoltsMeasurementEventListener.m in Sources */, - 86CD43D3731553C5A3ABACC389FC1E0C /* FBSDKBridgeAPICrypto.m in Sources */, - C176728EB7BE2514A1A18D95EF59B9FA /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */, - 6445E957696C984621418F36BC830C57 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */, - 5B646A14E78903975331A483A9491A61 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */, - F1CA949069BA75B782FA550701EFF48F /* FBSDKBridgeAPIRequest.m in Sources */, - 2F5B65C786B12D97BF3FEB32ECEC8057 /* FBSDKBridgeAPIResponse.m in Sources */, - ECD065627810DD77F59266E24A503AA9 /* FBSDKButton.m in Sources */, - F4F5599031266758C5A6EE7027DF6BD8 /* FBSDKCloseIcon.m in Sources */, - 8BC46BEC754DD9900B8B3F76317A3244 /* FBSDKColor.m in Sources */, - 26A5469794638EF2972A7F3D6B0A0E36 /* FBSDKConstants.m in Sources */, - 9BBEAB67727DCFD56D431780FE44F80B /* FBSDKContainerViewController.m in Sources */, - 39C5C564C02CF5ABB08BE513AFBF9C1F /* FBSDKCoreKit-dummy.m in Sources */, - B3F0AFB7BC6557C56B58AF827C0B5484 /* FBSDKCrypto.m in Sources */, - B32F7CCC98EB822CCF21FE7303F43841 /* FBSDKDialogConfiguration.m in Sources */, - 00FA0FE05D9A1D51D0B9DAB959758414 /* FBSDKDynamicFrameworkLoader.m in Sources */, - 8226E400E3E52E1D55BFA73458A980E7 /* FBSDKError.m in Sources */, - E74D71AE166349C35C42F3D5ABD5B1C9 /* FBSDKErrorConfiguration.m in Sources */, - D5290C47C521C3B4E98DD520A05354FE /* FBSDKErrorRecoveryAttempter.m in Sources */, - 76AD1FAA34AD4CA2BD3F7C18911BFC30 /* FBSDKErrorRecoveryConfiguration.m in Sources */, - 8C9FDE665A8D5B02FC558942B7782E56 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */, - 5750590682AA775047A6F7793463BADE /* FBSDKGraphRequest.m in Sources */, - BE291760D3E5058139FBA34F1168E703 /* FBSDKGraphRequestBody.m in Sources */, - A5D658E4E7750FE8C4DB6C940440D6C5 /* FBSDKGraphRequestConnection.m in Sources */, - 8FB2338CD7F58B919C02EAC4A23417B2 /* FBSDKGraphRequestDataAttachment.m in Sources */, - 4420194CD9E598D9E8831F5F1E471CC1 /* FBSDKGraphRequestMetadata.m in Sources */, - 7E169254B8EFFB64AE77877D4ACC5752 /* FBSDKGraphRequestPiggybackManager.m in Sources */, - F976D265D4CAA37B54A9444E072C4934 /* FBSDKIcon.m in Sources */, - 9821757B5F4E33C440DFC1403937F61D /* FBSDKInternalUtility.m in Sources */, - E610D8D46F5B853A640B9EB01EB105D8 /* FBSDKKeychainStore.m in Sources */, - 09062BEA7F9F32BA8461FCB10A833BBA /* FBSDKKeychainStoreViaBundleID.m in Sources */, - A28F374AB5DF6E8893BD0AC3EDB38AD2 /* FBSDKLogger.m in Sources */, - 37ECBAB9AF588A5875B245828942E9EB /* FBSDKLogo.m in Sources */, - 41FDC6A65A60AEEDE0F52ACCE1C8B6AC /* FBSDKMaleSilhouetteIcon.m in Sources */, - 622B46A901E22E5D91BB3C90DE9CDFCC /* FBSDKMath.m in Sources */, - 86E1F443BB682D0F2A9FCE4C3D4F6B6F /* FBSDKMonotonicTime.m in Sources */, - 22F938415D14269663488FFF723F5D8D /* FBSDKPaymentObserver.m in Sources */, - 74E5BDDFB7CB47CA66A9A0C5A80BC104 /* FBSDKProfile.m in Sources */, - 959259BB92C987851AD969FC45E45406 /* FBSDKProfilePictureView.m in Sources */, - B3BE0C9C5D12D46FF7986661A1F9A875 /* FBSDKServerConfiguration.m in Sources */, - 29DE01B3141EC629AF9F713E96A78805 /* FBSDKServerConfigurationManager.m in Sources */, - 83224CF6EA0FE34F75744507ADF75FD2 /* FBSDKSettings.m in Sources */, - F9DD490313C1A34374EB935EA6F504E7 /* FBSDKSystemAccountStoreAdapter.m in Sources */, - 27B5C50C845CB0944C503B035D6011DF /* FBSDKTestUsersManager.m in Sources */, - 538C67D301EE9960A461E12E29DC104C /* FBSDKTimeSpentData.m in Sources */, - 6212E3FF00DD6A2AA02CE34D9BD2334D /* FBSDKTriStateBOOL.m in Sources */, - CA9558AD7F6AC94824C9C9EF39E0C01B /* FBSDKTypeUtility.m in Sources */, - 6E8B990B944235DC3ECAC6D925DB2C8C /* FBSDKURLConnection.m in Sources */, - A81B6899E45E0474D72759E0671E3EEA /* FBSDKUtility.m in Sources */, - C71ADB1D792D37972836F49970FF7F56 /* FBSDKViewImpressionTracker.m in Sources */, - 931164E42CFCA82B5C9CED43CC769D37 /* FBSDKWebDialog.m in Sources */, - 5A40CA30F0B7BDCE37E9F1FAF3296215 /* FBSDKWebDialogView.m in Sources */, - E8280DA9138A9950C934A0F13A7A2DA5 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */, + 4C1A4B84FC9C07E0C03CF560175A8765 /* FBSDKAccessToken.m in Sources */, + F10A986E0C7986EEB092D621957E9A35 /* FBSDKAccessTokenCache.m in Sources */, + 557732BF5412A367CA63E4CC0C8E1231 /* FBSDKAccessTokenCacheV3.m in Sources */, + 2F11E320BB3B775D097764E76EAAFFEF /* FBSDKAccessTokenCacheV3_17.m in Sources */, + 35D4C9D681C02CE17416BCC6C82CC37B /* FBSDKAccessTokenCacheV3_21.m in Sources */, + A4A60E33AFF6B461A043C413D1B9D4E4 /* FBSDKAccessTokenCacheV4.m in Sources */, + 9E63D3D328F8688E3A110A7471A76EE0 /* FBSDKAppEvents.m in Sources */, + 7E9FC7FDDDB432095AF34F79FCFCE9CE /* FBSDKAppEventsDeviceInfo.m in Sources */, + 0295896A65DEFA556020FAF30366DF0C /* FBSDKAppEventsState.m in Sources */, + 933C5D203D10D0FB3205B0FC2DD744F1 /* FBSDKAppEventsStateManager.m in Sources */, + 1EE9A8EC40D092820419E7A7DAAB79F6 /* FBSDKAppEventsUtility.m in Sources */, + 6FBA55245D921C73581CD3B4058073CB /* FBSDKAppLinkResolver.m in Sources */, + 75F6BB7AACADCF0FDF54458E1FDBF6C4 /* FBSDKAppLinkUtility.m in Sources */, + D5650C90FF89446F265AB92F128B696F /* FBSDKApplicationDelegate.m in Sources */, + 22E996525BF371CEA7503656391231B6 /* FBSDKAudioResourceLoader.m in Sources */, + 24CDB698465EC154FCDAB969C4DB41EF /* FBSDKBase64.m in Sources */, + 55D902D3ACA8F967C1F72B51756E26F7 /* FBSDKBoltsMeasurementEventListener.m in Sources */, + 2A45C81A059350612A5BED9F330A14AA /* FBSDKBridgeAPICrypto.m in Sources */, + E8B019228FF069E4A1B1A07AB1AC2B3A /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */, + 12808509E4ABFDF7030A7C6ABAA68616 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */, + 7DD39755BB6F240522A6235B4E218DF0 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */, + 29FBBB45CB7F81B05EABA6C9DCACCB25 /* FBSDKBridgeAPIRequest.m in Sources */, + D2B4AAB5308342E98196868D0B732FA1 /* FBSDKBridgeAPIResponse.m in Sources */, + E1325F398C34BEA93CD9321ADFDB74BE /* FBSDKButton.m in Sources */, + 29166D4DAACA9E28F26B324BCDA69382 /* FBSDKCloseIcon.m in Sources */, + 359A4B46CD1A246979E24F1A1D45449D /* FBSDKColor.m in Sources */, + DC2C432ADD7B9BF3E341DF74E3FE1558 /* FBSDKConstants.m in Sources */, + DC464A1128A701A7CF13E46185475091 /* FBSDKContainerViewController.m in Sources */, + 06E66A4FCDA7BE84ABB7212E5D346452 /* FBSDKCoreKit-dummy.m in Sources */, + 785EF8A13CF87CF8086D4653B1CE826E /* FBSDKCrypto.m in Sources */, + 8C157133D56BF238386C33CF523E7D47 /* FBSDKDialogConfiguration.m in Sources */, + 1040D99E9461517B77C9B50A96E91A7B /* FBSDKDynamicFrameworkLoader.m in Sources */, + BD15875D09A6E6126333EA8200F3CED3 /* FBSDKError.m in Sources */, + 2446F1673C3F111AE5544C5D612F983D /* FBSDKErrorConfiguration.m in Sources */, + 79366269D4BA5E9EC208D0AFC2C43E99 /* FBSDKErrorRecoveryAttempter.m in Sources */, + 6B7F38B71431FCAE3FF85C68745E73F5 /* FBSDKErrorRecoveryConfiguration.m in Sources */, + B9DCE0A35921E1DAFB1C063EC254E6A6 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */, + 4B04059FB01CB2A896E9DC7BCD426A07 /* FBSDKGraphRequest.m in Sources */, + 2E1BA71176C94E1755B7182A3B0DC8BC /* FBSDKGraphRequestBody.m in Sources */, + 9EBDAE34F4A8CB5649E184EE8DA92133 /* FBSDKGraphRequestConnection.m in Sources */, + DAAE0B37F5BE0DA84A8932C0643484ED /* FBSDKGraphRequestDataAttachment.m in Sources */, + D3134BF37E80DB532CB93325997FB927 /* FBSDKGraphRequestMetadata.m in Sources */, + C872275F11CC8962B2FAD03A3B9B13D6 /* FBSDKGraphRequestPiggybackManager.m in Sources */, + BAEC1C6ADE3E2E0B4B8BC1E58DC4E9B1 /* FBSDKIcon.m in Sources */, + 297DB3DE5178B2FA2A6A10EF99454A09 /* FBSDKInternalUtility.m in Sources */, + F226BC6EF2861BE54054C5A0E1508BC0 /* FBSDKKeychainStore.m in Sources */, + B292958ED03BC952956FD8A4ED79E0DD /* FBSDKKeychainStoreViaBundleID.m in Sources */, + C74F0797B7B9DC9ED903076DAAB112C1 /* FBSDKLogger.m in Sources */, + 081A0C2B9D647B6B157889DE9300036D /* FBSDKLogo.m in Sources */, + 4BE274866F02B07D87B61B50A405E766 /* FBSDKMaleSilhouetteIcon.m in Sources */, + 30FD4EF0B6E65062C47B435ABC219900 /* FBSDKMath.m in Sources */, + 925B485469CF179340D855CB22857291 /* FBSDKMonotonicTime.m in Sources */, + 6F1007ED622C28520AD82DE65F64804B /* FBSDKPaymentObserver.m in Sources */, + 7BA68DEE96B757C492E6BD77B94620B7 /* FBSDKProfile.m in Sources */, + 86249EC7787535A0B0ECEC25B48D8635 /* FBSDKProfilePictureView.m in Sources */, + AA1E39ADA454257B308C615115763491 /* FBSDKServerConfiguration.m in Sources */, + 2EDEF8FFB620FBD7083DDDE379A09698 /* FBSDKServerConfigurationManager.m in Sources */, + FFBEDB74DCA016F287B966EECFA6F909 /* FBSDKSettings.m in Sources */, + B32B1CA0020B31D043806BC3FEB9A0D5 /* FBSDKSystemAccountStoreAdapter.m in Sources */, + 77229C67477828C6DBC3AD1BF1962BEB /* FBSDKTestUsersManager.m in Sources */, + 1848DA8D90C5B65BBAE55E0F5C277645 /* FBSDKTimeSpentData.m in Sources */, + D99E0E47569B3EA08DD354582883AA97 /* FBSDKTriStateBOOL.m in Sources */, + E213A5926DFA7791DCA2621FFC3C37EB /* FBSDKTypeUtility.m in Sources */, + F435C8D6A784B176C8528DC2C90E53D9 /* FBSDKURLConnection.m in Sources */, + 3A6A18C3954C1B80604F12E048173F89 /* FBSDKUtility.m in Sources */, + 887427914859D11CACBBC4A0C9858A42 /* FBSDKViewImpressionTracker.m in Sources */, + 151E6C369136D436BB51A4DDF2DB9719 /* FBSDKWebDialog.m in Sources */, + 10D67968048D274197D4CD9F02D7664D /* FBSDKWebDialogView.m in Sources */, + 4429798D21F62121D2D8BD3009BC590D /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 33364A72F9A20C06C4CE43992252DF26 /* Sources */ = { + A744DAE075D3A364F804338FDC50D99E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 80E5B1D10F29D06CA8F17EC6D8D3F5AA /* FBSDKAppGroupAddDialog.m in Sources */, - 6BB2309BEFAB49815750D7EFA142AD47 /* FBSDKAppGroupContent.m in Sources */, - 9D9BFBBA2F59972D7E86515C53035F98 /* FBSDKAppGroupJoinDialog.m in Sources */, - EA426EC658ED2A630090136BCBDCF8F8 /* FBSDKAppInviteContent.m in Sources */, - FFD2A3A9288445D4A3992F29769A080C /* FBSDKAppInviteDialog.m in Sources */, - F1FC725A6D5E9E16D3824E4521668E1D /* FBSDKCheckmarkIcon.m in Sources */, - 752DE38A344B49BBAEB857E0EB978743 /* FBSDKGameRequestContent.m in Sources */, - BA99E18915E6D55C1DDEFAB80BB4ED98 /* FBSDKGameRequestDialog.m in Sources */, - A770DF35E61B676731FA5870E67A812C /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */, - 6334BBBF5DFE71A39F4B78F452EB3B16 /* FBSDKLikeActionController.m in Sources */, - 1AC335060DAA36EE9CC7A9C8FA74CFFE /* FBSDKLikeActionControllerCache.m in Sources */, - 3E3A02D5AA0C2AA0E5C6BAB31A195D91 /* FBSDKLikeBoxBorderView.m in Sources */, - 173FD61B3C3D86AD287305F713A7FD1B /* FBSDKLikeBoxView.m in Sources */, - A1DE168A12031E69C57F6DC684EFA0D5 /* FBSDKLikeButton.m in Sources */, - 7B85EF9B84423C92EE09DC21CDFAE27C /* FBSDKLikeButtonPopWAV.m in Sources */, - 16163FA266DAD8321C75374755AA940B /* FBSDKLikeControl.m in Sources */, - 1B1E8C274800F7ADFE4498580F6799DE /* FBSDKLikeDialog.m in Sources */, - 195D0B36E067E6836525EC864989DCFF /* FBSDKLikeObjectType.m in Sources */, - B8AD4E788B27F8C035AF410B1C3EB827 /* FBSDKMessageDialog.m in Sources */, - 5E711151377B9E5382ABE8C714008139 /* FBSDKMessengerIcon.m in Sources */, - AA4717F942CA25B414201C18A46FD237 /* FBSDKSendButton.m in Sources */, - FB2D03E9EF1F1437B211F991DA80C472 /* FBSDKShareAPI.m in Sources */, - 8ACE7F123E09ED0A01F95357C99AE282 /* FBSDKShareButton.m in Sources */, - 349A7C474005969BC5798E2D96B54429 /* FBSDKShareConstants.m in Sources */, - 240F2B6D6C9E9D561598B3B5DC5E0D47 /* FBSDKShareDialog.m in Sources */, - 8D36023B3040CF604EE9B5E9AB1488D2 /* FBSDKShareDialogMode.m in Sources */, - D1256713DD24A7275D5802A27C631F14 /* FBSDKShareError.m in Sources */, - AD65F98FB86F1F2D102A08AEA878EC72 /* FBSDKShareKit-dummy.m in Sources */, - 890B1F7156ADB0AB7BE1FA6A95575362 /* FBSDKShareLinkContent.m in Sources */, - 1D6728A1DEC389747A8495B24C4A672D /* FBSDKShareOpenGraphAction.m in Sources */, - A1D3061933F687CC2D4732CE09FAB63F /* FBSDKShareOpenGraphContent.m in Sources */, - FBB381337318019A66613990BA4267B2 /* FBSDKShareOpenGraphObject.m in Sources */, - 961126493126A68DF7656A6C12611CFE /* FBSDKShareOpenGraphValueContainer.m in Sources */, - 786FCC431FF021DE2922004A00A4ABCA /* FBSDKSharePhoto.m in Sources */, - C4F6B361F13A14F17531B0DF4C589D66 /* FBSDKSharePhotoContent.m in Sources */, - D4150F08DACC0D4D7D2E2D42E3E1FC00 /* FBSDKShareUtility.m in Sources */, - 22D8E54CF9C32947CE1B898D398B9960 /* FBSDKShareVideo.m in Sources */, - D40807D0CD676A9F3013821A756B7743 /* FBSDKShareVideoContent.m in Sources */, + D69677EA0874C8A641C3EAC1650B0F83 /* BFTask+Private.m in Sources */, + 2CD4B86CFAF9CB721F853A29189581FF /* PFACL.m in Sources */, + FE76285FB50562EE5B0A1CE546E43737 /* PFACLState.m in Sources */, + 16FAF341ED8A49E3144EEB1B5E3E10C0 /* PFAlertView.m in Sources */, + 6695FCAF935A626AB8BD9FA286B781A9 /* PFAnalytics.m in Sources */, + 1A3A538509B4785B7B6623CA76004593 /* PFAnalyticsController.m in Sources */, + 267A2D6F3E72601A59294D6C8B35904C /* PFAnalyticsUtilities.m in Sources */, + 17119C973C7223A310050A3C641406EC /* PFAnonymousAuthenticationProvider.m in Sources */, + ACB80FF5C9696C3897C2DD20D18FB650 /* PFAnonymousUtils.m in Sources */, + E0DD1B663B6833D565CFFCD640E525CA /* PFApplication.m in Sources */, + 6D9129F858C5DA6A5809DACF615D023F /* PFAsyncTaskQueue.m in Sources */, + F04A246C6AF48B1F4E0AAA59AB263887 /* PFBase64Encoder.m in Sources */, + 0563FB0BD1A8121457AF6417A3F3877B /* PFBaseState.m in Sources */, + B9CAF300C714025446DBD3D170DE7380 /* PFCachedQueryController.m in Sources */, + DA176B90A87EC91233E2508B4F5D141B /* PFCategoryLoader.m in Sources */, + FAA724BD8C2E9812D6E8DB5AE75187FD /* PFCloud.m in Sources */, + 52B04DF7AA6B9EFCAEF5EFE94BD54941 /* PFCloudCodeController.m in Sources */, + 117BBCDE4D34AAAE0F3B7C9BB5D9254E /* PFCommandCache.m in Sources */, + BBEDC1B0186EE3BDCFD52D33F5019B73 /* PFCommandResult.m in Sources */, + 6AF8B6F00562BF454E2CD5A10EC0B489 /* PFCommandRunning.m in Sources */, + 06E216A82A4557C2F6C948A602A4B9B4 /* PFCommandRunningConstants.m in Sources */, + 200945BE8422160937BE875D2DC3A012 /* PFCommandURLRequestConstructor.m in Sources */, + 8ACD828FAC9F8124538B1B6E6671E248 /* PFConfig.m in Sources */, + B3149A88B5EF9D591100060E4577FFEC /* PFConfigController.m in Sources */, + 29995A9A0D5FFA5515CED4BEB70AF54A /* PFConstants.m in Sources */, + 4A359027CE24E02E2258B07BCFA195E0 /* PFCoreManager.m in Sources */, + 57057BB02C2E71110491AE84B3F7B091 /* PFCurrentConfigController.m in Sources */, + 84245166731C1ADAFC84852A605AA4DC /* PFCurrentInstallationController.m in Sources */, + B08B8E79E38086479F6B2202EE6E67B7 /* PFCurrentUserController.m in Sources */, + 226B5499EFB78CE822793F57B7F5D338 /* PFDateFormatter.m in Sources */, + 2140AB24A57365D2C212F506BCB07580 /* PFDecoder.m in Sources */, + AD9E637F9642485C7EAB40ED17FFD6EA /* PFDefaultACLController.m in Sources */, + 2E810A5D78C5F0A509A666DF78DCB27D /* PFDevice.m in Sources */, + 4FDA2085E5E26B257AB67C19AE7FA00F /* PFEncoder.m in Sources */, + 71AE845ED581E71888B1FDDD5D697A2D /* PFErrorUtilities.m in Sources */, + 8CD66ADBF206FA36EEC1BB63D4052E13 /* PFEventuallyPin.m in Sources */, + E30F6ED3C9433E9C224E934F86526DFB /* PFEventuallyQueue.m in Sources */, + 8E6C7B0C25223EBDB7C6604C6A2D3BCF /* PFFieldOperation.m in Sources */, + C6E485332A5CCC5526ABD9E70052981C /* PFFieldOperationDecoder.m in Sources */, + 0115290BBAE8D8A26CBB67DBB296B5E7 /* PFFile.m in Sources */, + 6B0AA4AFE73F485E0C620DF214D82351 /* PFFileController.m in Sources */, + 96118F82F75A07742E95B976664396A1 /* PFFileDataStream.m in Sources */, + 58ED4561BD7135E9B4531E236A8CAE11 /* PFFileManager.m in Sources */, + 217CDE795AD5E36334974C7974839D93 /* PFFileStagingController.m in Sources */, + D5EF482B2E3D57F3FD95D49EDB459A23 /* PFFileState.m in Sources */, + 1234B7A56D643EEFC32AD7B3D707F3A8 /* PFGeoPoint.m in Sources */, + 6EC3D0CE07BC83907B8AB131C6FEA9A1 /* PFHTTPURLRequestConstructor.m in Sources */, + A6D342C48B8AA4EBF44869A4F34C4209 /* PFHash.m in Sources */, + 2898D3157017DB142DBF3E00E0BD102F /* PFInstallation.m in Sources */, + A178F9052CF04F9A910455EC7A7ADB93 /* PFInstallationConstants.m in Sources */, + 343D8C1473045CEACF4BD1DA5FEEAB84 /* PFInstallationController.m in Sources */, + D24F4135A2908F8F44653B3B9285C687 /* PFInstallationIdentifierStore.m in Sources */, + 711828A478DCB7D32EFC732598558216 /* PFInternalUtils.m in Sources */, + F97E8AEA2BF089005DDFA63D975BBB4A /* PFJSONSerialization.m in Sources */, + A0626297F5A1CC35F90FD5E3051C2133 /* PFKeyValueCache.m in Sources */, + E1A1DEE33F2B917512C43A63737EB794 /* PFKeychainStore.m in Sources */, + BEEC9448DF823C0F80F5D35464DFDBB1 /* PFLocationManager.m in Sources */, + A850527F1ABF982385E234283E348456 /* PFLogger.m in Sources */, + F078C36EAE42D363446021B148D01DBA /* PFMultiProcessFileLock.m in Sources */, + 225847BA0FD2D6E5B0C7FC331BA7CCD1 /* PFMultiProcessFileLockController.m in Sources */, + 8ED4BE044EF21C643B3E79E21ECBC6A4 /* PFMulticastDelegate.m in Sources */, + AEF25B93963113F53E8832A09D77B905 /* PFMutableACLState.m in Sources */, + 9003C22E2E869AAE17A8ED51D8FD8D80 /* PFMutableFileState.m in Sources */, + 5CAC17E117B95FACAC405917DB40049E /* PFMutableObjectState.m in Sources */, + 16568C7F23CDF1C2617CDA1A62325092 /* PFMutablePushState.m in Sources */, + 75FC76263B96684BE311B778C695D7A8 /* PFMutableQueryState.m in Sources */, + 5470F6CE6D56D2390A1A04B25B7709FE /* PFMutableRelationState.m in Sources */, + 9BC3D340FB7797EA087856FB677E10CA /* PFMutableUserState.m in Sources */, + 730F6107E3FB55439CBF055292FD1211 /* PFNetworkActivityIndicatorManager.m in Sources */, + 13A1C4E2418AFCB69A8A061CDABEDF58 /* PFObject.m in Sources */, + 3FA6DA7F2D09FE5A2E518AA9288302EC /* PFObjectBatchController.m in Sources */, + 015B1B15761CFB91D536917CD1FBED3E /* PFObjectConstants.m in Sources */, + 57EC6FF906A92AEA56DD92EA8C662CCB /* PFObjectController.m in Sources */, + 79A776D0DC41D257DA6823D978C535E0 /* PFObjectEstimatedData.m in Sources */, + 59FEF86CD32941CBFFA63D5F4693AE3A /* PFObjectFileCoder.m in Sources */, + A1C73296132580A14556BA586F455433 /* PFObjectFileCodingLogic.m in Sources */, + 63591C49938B5E342974E37126F214D7 /* PFObjectFilePersistenceController.m in Sources */, + D0144F5341D9037D37D9446DA8745BD1 /* PFObjectLocalIdStore.m in Sources */, + A62FFF4A04995FA43CC038DBE8DB7979 /* PFObjectState.m in Sources */, + 6B1BF7C8DA973C86CF960C233B5B1B21 /* PFObjectSubclassInfo.m in Sources */, + D532A655317AE37BD7AC500809F5DE09 /* PFObjectSubclassingController.m in Sources */, + D0D743C0E98198942EE41BFBA24950FA /* PFObjectUtilities.m in Sources */, + 045968C599579171BF784B3516F8B2A1 /* PFOfflineObjectController.m in Sources */, + 00A070B61019CED58251933B64DCD204 /* PFOfflineQueryController.m in Sources */, + 80FB4A5ECD5FCA885D5EF27C6A1E3FC8 /* PFOfflineQueryLogic.m in Sources */, + 6B79C2AC728C350EDD9926A18D2E650F /* PFOfflineStore.m in Sources */, + 462CCA389937F980A7A1FFE8C27193A2 /* PFOperationSet.m in Sources */, + 240569949C2FF9453095CAD95D627B02 /* PFPaymentTransactionObserver.m in Sources */, + C51B459816A37F9471FD39AABAE78521 /* PFPin.m in Sources */, + F5B59A63E1A5DF6A06D293B7F6D6AAFC /* PFPinningEventuallyQueue.m in Sources */, + 1EA5DBD371A19F75A226BF25CA31469C /* PFPinningObjectStore.m in Sources */, + 974DCD6881C74FDEAB446E947479EF47 /* PFProduct.m in Sources */, + 382CAEAD6DA2082FEEF4801B7D083210 /* PFProductsRequestHandler.m in Sources */, + EFF70AE917CE096804329270000B30CA /* PFPropertyInfo.m in Sources */, + F56C1A008897709131994E8408F6A3F6 /* PFPropertyInfo_Runtime.m in Sources */, + 9F9D41E0CF8CAD2AC465F6C4FFCE1CA7 /* PFPurchase.m in Sources */, + 1E695458610F698BBCF35377CDF28FF3 /* PFPurchaseController.m in Sources */, + F9E320C0B05AE66F5CD2C49B891CDAD7 /* PFPush.m in Sources */, + 025140DE78DC4DE2EADAAA64E7382F27 /* PFPushChannelsController.m in Sources */, + 705709FDEDB3A24F1833B641E9D87460 /* PFPushController.m in Sources */, + 3706025C91B4BB38EAF348E815FD0EAF /* PFPushManager.m in Sources */, + C02E3465BA70AD28DCD5390996FB6AF6 /* PFPushState.m in Sources */, + C8E9F8ABFEE1F8C017714E754C5D8279 /* PFPushUtilities.m in Sources */, + 5E2F5A4FC20F2B6F8EBA66D864FBE351 /* PFQuery.m in Sources */, + B3E66A59EA04548C918BD8E9CC72613A /* PFQueryController.m in Sources */, + 189096427AF5BB709D1D1FFAEE25264E /* PFQueryState.m in Sources */, + AD80993512EDCDB6BB0D8F2B45D8EBBE /* PFQueryUtilities.m in Sources */, + 26862DDAADC74DA962C7D181E23CA54D /* PFRESTAnalyticsCommand.m in Sources */, + 116721C51B12DAABBC7095E284DD8EBB /* PFRESTCloudCommand.m in Sources */, + F039DF3F73126E9A4879323F015AEED5 /* PFRESTCommand.m in Sources */, + 24191EF742D65921D5B8BCD975149375 /* PFRESTConfigCommand.m in Sources */, + 69E21A2908DA39DCE37C40108E4785F0 /* PFRESTFileCommand.m in Sources */, + 9E5D86931310C44A629DA4BC6BF87A3B /* PFRESTObjectBatchCommand.m in Sources */, + D08EDD7023EA483E0FCC806B743AB8C8 /* PFRESTObjectCommand.m in Sources */, + 9B026B617E683F9C03E8BD29B6F424D3 /* PFRESTPushCommand.m in Sources */, + 07AC4C46B69255EBF0737753110703F6 /* PFRESTQueryCommand.m in Sources */, + 9E7E70AC3527DE4F9E286082227EF521 /* PFRESTSessionCommand.m in Sources */, + 7853E04B2781F9D5247FE36F97DB369F /* PFRESTUserCommand.m in Sources */, + 12D70D555B750473FDFD4444E07114DF /* PFReachability.m in Sources */, + 2712D02D098539CDB3E3F8E60D5E07E7 /* PFRelation.m in Sources */, + 4E6C905511C88BA4E3B5B12D8BF1D049 /* PFRelationState.m in Sources */, + 6C4BDD9625C03F8ED09938E299167C1D /* PFRole.m in Sources */, + 21FDA2BBB4A2B144AE336A2017002A45 /* PFSQLiteDatabase.m in Sources */, + 3F7CB366D8B55004DB4320681DABC0D7 /* PFSQLiteDatabaseController.m in Sources */, + D869A0A06F7092BB38061BE822D5F0BD /* PFSQLiteDatabaseResult.m in Sources */, + A1A51D34B7F1ACAD09DB4C718A4848CB /* PFSQLiteStatement.m in Sources */, + 684F06D3A55F610E508358633DEAF98F /* PFSession.m in Sources */, + 94D0BE43FF35618240E63C0D74C781CB /* PFSessionController.m in Sources */, + 9B122332AEED13957E029A90E6674FA2 /* PFSessionUtilities.m in Sources */, + 0119725155E71EC7F6CBCEAB5FC19DC5 /* PFTaskQueue.m in Sources */, + 670C180263184D1D8F68896C964AEE22 /* PFThreadsafety.m in Sources */, + 7763AB0E9ED90508B19469D1BE4E1E5D /* PFURLConstructor.m in Sources */, + 26F99FB90BCE2289002832D28389E430 /* PFURLSession.m in Sources */, + 1041460BCE68A200AF08B5D81DB28C1D /* PFURLSessionCommandRunner.m in Sources */, + 2A2CD77D6E2E7F12B9F3D890A3C9BC0A /* PFURLSessionDataTaskDelegate.m in Sources */, + CD9D2216FD81D025B9F8A044BC727B4A /* PFURLSessionFileDownloadTaskDelegate.m in Sources */, + 52CEE12D512539188DC4951C8466D238 /* PFURLSessionJSONDataTaskDelegate.m in Sources */, + DB4F10499FD9AE1571DF6D24F3D059A4 /* PFURLSessionUploadTaskDelegate.m in Sources */, + 1B63A4BB0D67684AA1278326F09BF4E3 /* PFUser.m in Sources */, + 3DE049023FC2163B1D8617B4956CDB32 /* PFUserAuthenticationController.m in Sources */, + 6FA12986ECFD54D5A141EC98D1C3E2A9 /* PFUserConstants.m in Sources */, + 5B72C7E51B86A4689017B9B075AD180B /* PFUserController.m in Sources */, + A4C607C623C9CA43A597968B0DA3A72C /* PFUserFileCodingLogic.m in Sources */, + 2296792F99964BC4DB7A70EA2AE3191C /* PFUserState.m in Sources */, + 8AEC4F3B27211DC55A16547DA586384B /* PFWeakValue.m in Sources */, + 3968209E908099601F60991D5DE829F0 /* Parse-dummy.m in Sources */, + EE59ED1C743DB6D311ED072D908A63CD /* Parse.m in Sources */, + 94AFC2671530505C987790F5F3FA99FC /* ParseManager.m in Sources */, + 2B2B4D270B2E4878DE1E753C46D2A366 /* ParseModule.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 428E3CDA6242B355796622DBAA26DD29 /* Sources */ = { + A8DFD12571AC8473B88B20A031B81332 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - EC76783DEC44B62526E83D829C71D18C /* Pods-dummy.m in Sources */, + 8B0114F4A39914DDCDB3C472DB61C1F9 /* FBSDKAppGroupAddDialog.m in Sources */, + D473EBF593E8962DC51188AD7CA7A26C /* FBSDKAppGroupContent.m in Sources */, + 1855A22A1DFC12DB655772510147D6E5 /* FBSDKAppGroupJoinDialog.m in Sources */, + 6C46FDF8859806CA78AD521B2365C5A0 /* FBSDKAppInviteContent.m in Sources */, + 1B214B8DA84AF3D339A4A5173F84B7CE /* FBSDKAppInviteDialog.m in Sources */, + 3E2734C06AF6883C3CAE5DD479C2D493 /* FBSDKCheckmarkIcon.m in Sources */, + 01F6CEC2F048AD473BBDAA8FFA196488 /* FBSDKGameRequestContent.m in Sources */, + DD580DFD2330BC82FF3CC6AE0673D23C /* FBSDKGameRequestDialog.m in Sources */, + E1CB2BA40EE5A3FE0F3317FE718EB52E /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */, + 4A50F2B0E4CB78265EAC673D309DB615 /* FBSDKLikeActionController.m in Sources */, + DE27B30E8B84C46EFE4214A8F1DF4CA1 /* FBSDKLikeActionControllerCache.m in Sources */, + B93C621EA6D9A186BD1743F6B1E5D134 /* FBSDKLikeBoxBorderView.m in Sources */, + 7CD74FEC73EFB3EEDE052E5444DE4DE7 /* FBSDKLikeBoxView.m in Sources */, + 8453AD5FDEE1A34114BC10032F7A8278 /* FBSDKLikeButton.m in Sources */, + B7CD16BA3FCFCD0304E41FD626F2ADB3 /* FBSDKLikeButtonPopWAV.m in Sources */, + 0CF0CA6113E52DCB32C33183A1B726F2 /* FBSDKLikeControl.m in Sources */, + D66601DBFBB39851657F90C29134F86A /* FBSDKLikeDialog.m in Sources */, + 011E9F4783EC67957F40FF6CFD1BF3B3 /* FBSDKLikeObjectType.m in Sources */, + 413A19D796947A6E9E28E6026D41E2CD /* FBSDKMessageDialog.m in Sources */, + A05B16705DD63CA337527EC7129CC5EC /* FBSDKMessengerIcon.m in Sources */, + 07C07BAC99463E00A00664BABE73C8E9 /* FBSDKSendButton.m in Sources */, + 54D0B032B4FC86688CE6A288A3D2819A /* FBSDKShareAPI.m in Sources */, + 33BE00722C951BA132EE6CED6B5E97CA /* FBSDKShareButton.m in Sources */, + 495E25F21F1F487E62F73D709FCF5477 /* FBSDKShareConstants.m in Sources */, + B124A8929C4F461DBC3D5043685F2401 /* FBSDKShareDialog.m in Sources */, + 84868D53AABF24975E37AACB96FBA295 /* FBSDKShareDialogMode.m in Sources */, + 2830B7C4D04072D1398E6B5573AEB518 /* FBSDKShareError.m in Sources */, + 4DFA2BD02F94F030FC91411B297A09F3 /* FBSDKShareKit-dummy.m in Sources */, + 16E18968E369451E339FFD342156CCA4 /* FBSDKShareLinkContent.m in Sources */, + A923C01A3CCA7B26A0756D7BAF9E0D3A /* FBSDKShareOpenGraphAction.m in Sources */, + E8FE4AEF06AE75668686A795E35987E9 /* FBSDKShareOpenGraphContent.m in Sources */, + 738653101EF3E4FD4A8E2B42B20E1913 /* FBSDKShareOpenGraphObject.m in Sources */, + D17EA2C542316E553796A54137DB2BA2 /* FBSDKShareOpenGraphValueContainer.m in Sources */, + 398449323354D2CFD6F71B61806B0B13 /* FBSDKSharePhoto.m in Sources */, + 4BBE91F980C399FB90C6D8336639D55F /* FBSDKSharePhotoContent.m in Sources */, + BAFC86D712FD60393400E6F37005C10E /* FBSDKShareUtility.m in Sources */, + A1C17F0CCAFF80E954A67A06B623F1D3 /* FBSDKShareVideo.m in Sources */, + 7D2D3C0A68A7EF6E5A1148C34C24413B /* FBSDKShareVideoContent.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 52A557D9D6AD36B9EE87EC5D7D2B9F16 /* Sources */ = { + B26D5C7B40825F0680D99F821074236C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - EB7D5269252876FDD8FB3D3DFE42C73D /* FBSDKLoginButton.m in Sources */, - 344F402E97A64E44A868FFD3911E6110 /* FBSDKLoginCompletion.m in Sources */, - BEA74841C7130B61431B7FCC1DC9A187 /* FBSDKLoginConstants.m in Sources */, - 4A3C09FA15FA477592FD19B04B6DAA54 /* FBSDKLoginError.m in Sources */, - 18C647BF58293362753766B94268A2E7 /* FBSDKLoginKit-dummy.m in Sources */, - 514394EE53FCBE06133BEB1BD924B935 /* FBSDKLoginManager.m in Sources */, - 111DE8B9C2B39A3118005168EE06ED40 /* FBSDKLoginManagerLogger.m in Sources */, - 81147666D0A1B53CF71F2DEDC9D6A067 /* FBSDKLoginManagerLoginResult.m in Sources */, - 8C6EFE905F15BE56E8408B5D5D6EF4A3 /* FBSDKLoginTooltipView.m in Sources */, - 25D0C4FA0F58B2B6E3388737FDA80322 /* FBSDKLoginUtility.m in Sources */, - 2F446E6B70E9AD1399F977B2FCA41645 /* FBSDKTooltipView.m in Sources */, - 1A9540242875568483F093F9024171FC /* _FBSDKLoginRecoveryAttempter.m in Sources */, + 8B0281F30C94CC8589630EAF4D28A680 /* Pods-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B5F6CCCA510D0D147183CDBAD7F9738A /* Sources */ = { + FAF70D5E5995F0AC85A56F2D3A5F19E3 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D51AB8E965DECEFDC39A02A1140A342E /* BFAppLink.m in Sources */, - 96686EA3DB6DD21C52CE24586DED9641 /* BFAppLinkNavigation.m in Sources */, - 4C70CDE945E9DA71BF1C90DFC59F57F7 /* BFAppLinkReturnToRefererController.m in Sources */, - 4AEAD0A6D5815DF782ADCCD822D99082 /* BFAppLinkReturnToRefererView.m in Sources */, - 06A5A17665E162F635DACD2B0625299A /* BFAppLinkTarget.m in Sources */, - B23D927BF8F18FEF89C82761FA2B4BA4 /* BFCancellationToken.m in Sources */, - 7969A4428697F074353829C5125C0B0E /* BFCancellationTokenRegistration.m in Sources */, - 88CF8FD178995FC2DA3F5D289D6F0873 /* BFCancellationTokenSource.m in Sources */, - D00BF86E482A580D2A97CFC92154F79E /* BFExecutor.m in Sources */, - 855A62F1C870083E9CD8136DAF729168 /* BFMeasurementEvent.m in Sources */, - 407FB0E1E5BB584D59B0E4BECAE1EA17 /* BFTask.m in Sources */, - D2E51D4190852D64BB0AA2B49E619BA8 /* BFTaskCompletionSource.m in Sources */, - AE08232806308393A562E4908555BA97 /* BFURL.m in Sources */, - 46BEA5AD8A3D422A96D95DC0E4257939 /* BFWebViewAppLinkResolver.m in Sources */, - 910E7E8C68D3382BBF53091BE45E408D /* Bolts-dummy.m in Sources */, - 31E2E831EB0D5CCEB51B9C1F3D62C9AA /* Bolts.m in Sources */, + EC1AFF0BEAF765300970650A44FEC23E /* FBSDKLoginButton.m in Sources */, + 63A4E5F2E629AEBF6CF597AF608DD3DD /* FBSDKLoginCompletion.m in Sources */, + D6C47ED862055985196D9325E3121EF0 /* FBSDKLoginConstants.m in Sources */, + CCBD5FF1E39126AED1F8DD92F8DCFD82 /* FBSDKLoginError.m in Sources */, + 1B7AD2E885D25E8F20DFA5F22348968D /* FBSDKLoginKit-dummy.m in Sources */, + A87116EDAB375BCF34DC687F08B51081 /* FBSDKLoginManager.m in Sources */, + 816A183678595D414E0D7F57F291CA7C /* FBSDKLoginManagerLogger.m in Sources */, + B5AD392A076CFADF6041F94414478DCD /* FBSDKLoginManagerLoginResult.m in Sources */, + 738BE7380719F5A074B833B92FB64E83 /* FBSDKLoginTooltipView.m in Sources */, + 3830CBF1147D74E5E5E625F57E7F9D44 /* FBSDKLoginUtility.m in Sources */, + 902F3630EB8D3ABB9D7755CCDC17152D /* FBSDKTooltipView.m in Sources */, + 84D8529D8524E39A936AED30BDD14522 /* _FBSDKLoginRecoveryAttempter.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 1154ED62C9EBAFBFBEE5E01C23702978 /* PBXTargetDependency */ = { + 168FDC441C5ED325FB25195E8F588905 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FBSDKCoreKit; - target = 7514A5BBFEA8726C550640239F35CF9F /* FBSDKCoreKit */; - targetProxy = 104DD7E0D1D1835D2025676C12BB1E68 /* PBXContainerItemProxy */; + target = A510D2CCD10E1ACAF039EB42370EECE9 /* FBSDKCoreKit */; + targetProxy = 10A4DB144F041A4C0CED43BED0C4C30D /* PBXContainerItemProxy */; }; - 498553B7AB02C22E1DDAEC22B3A757E5 /* PBXTargetDependency */ = { + 21153761B975767074D4C03E7BFB1A5F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKShareKit; + target = 8ADAD2264B57B834BB67514D536FB7E3 /* FBSDKShareKit */; + targetProxy = 8246EE16CFB95F2B8C2F8EFCE4E5AEEB /* PBXContainerItemProxy */; + }; + 274F0E48B913EFEBE53D20780E4BB8EC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FBSDKCoreKit; - target = 7514A5BBFEA8726C550640239F35CF9F /* FBSDKCoreKit */; - targetProxy = F24C2706B41E2A13115DC189DD607DE7 /* PBXContainerItemProxy */; + target = A510D2CCD10E1ACAF039EB42370EECE9 /* FBSDKCoreKit */; + targetProxy = 806CFFFB7BFBB520E7EC73DACD16B3B9 /* PBXContainerItemProxy */; + }; + 2D708019954A38BA2635EC665543F5C0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Parse; + target = 7F26E33CF29862A805138C68D09DFFD9 /* Parse */; + targetProxy = 29FA9B94F4438EAED67FA3A30ECF56D1 /* PBXContainerItemProxy */; }; - 54884D0DF003C3460B42231FCBA904C0 /* PBXTargetDependency */ = { + 31E3F3487AE06970184CBCDE791FAD18 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Bolts; - target = 5D317E2C239D207CE072A2C1FE79D30A /* Bolts */; - targetProxy = 0770907D46486483AE4C3B044B98D06B /* PBXContainerItemProxy */; + target = E017A37450D026E9D888F3645A58C436 /* Bolts */; + targetProxy = F89E89A6938252AB3114DB944787C18D /* PBXContainerItemProxy */; }; - 6943C731F6F55D5EA7D991FAAE3835C7 /* PBXTargetDependency */ = { + 4769649AD55AD9CB56E1B6B272FE63A7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKShareKit; - target = 3BCD0D10E30222706C12D7C3102FA893 /* FBSDKShareKit */; - targetProxy = 95BFFB90564EE4DDCCFB7443059C97A9 /* PBXContainerItemProxy */; + name = FBSDKLoginKit; + target = 87F49B89DFA2EDF98E9D8C6CB50976BF /* FBSDKLoginKit */; + targetProxy = CA158329B7B558180C68B74E1C44ECC8 /* PBXContainerItemProxy */; }; - 94EE6831D03FF605E8D58953481383B1 /* PBXTargetDependency */ = { + 7D049BC297DCB49CA53EFA534D202258 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FBSDKCoreKit; - target = 7514A5BBFEA8726C550640239F35CF9F /* FBSDKCoreKit */; - targetProxy = 2D3ADA04FE0BE10C39EE7B0F01C2D544 /* PBXContainerItemProxy */; + target = A510D2CCD10E1ACAF039EB42370EECE9 /* FBSDKCoreKit */; + targetProxy = 1B7477DE69B98AC8F4EBB4F78AC36BB1 /* PBXContainerItemProxy */; }; - A8C11B55DBA1CE791C24C8C9232EED47 /* PBXTargetDependency */ = { + 83340A961B88FA5D84F0ACFEE8ED29F1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKLoginKit; - target = 228A8DE101DBB992D8BCEC1E4FD9FFB7 /* FBSDKLoginKit */; - targetProxy = 0A5B9E7B7B98C2DBA5746494B769F468 /* PBXContainerItemProxy */; + name = Bolts; + target = E017A37450D026E9D888F3645A58C436 /* Bolts */; + targetProxy = 66720104A3642E5CC2B35163BABF39C6 /* PBXContainerItemProxy */; }; - E956503DD1B5D1958CD15106C3FCA103 /* PBXTargetDependency */ = { + CFAB7ED8904A8A0AF23967A80AB156F5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Bolts; - target = 5D317E2C239D207CE072A2C1FE79D30A /* Bolts */; - targetProxy = 5E12961A62642C4FC8A1B794B732A1CF /* PBXContainerItemProxy */; + target = E017A37450D026E9D888F3645A58C436 /* Bolts */; + targetProxy = 0ABD3F822E95796533DB652545AF5E24 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 4BC8CA5614726907F96B0210B6F61894 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FAD786BC4ACCD93AEF869C440819A61D /* Parse-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 4EB3DEF398E90C9E4E7F117E9340643F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9201ECF588FA8BB08DDBF3C8E4CD31A3 /* FBSDKCoreKit-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; 5CE5176205D06FF3FFE3DDDA9291E44B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1834,6 +3382,38 @@ }; name = Debug; }; + 5FEC0404D2AB689EEE6AF903F1B1CE03 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F8F8D92E9BF54CF0325CDBF3A13F511C /* Pods.release.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 6A25EBB98E50612A77661AD5232399BB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0556ABAC4F9D071C431F5D3711FDE1E9 /* Pods.debug.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; 74857149DC1E0D599B8A01A78349A926 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1868,28 +3448,28 @@ }; name = Release; }; - 7D9E9201BFDC23768E911083692B55E1 /* Debug */ = { + 93BC004E2D1DBCB3FA76431627BE9715 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3121BA645E578829C4840BA0F5D2F2FB /* Bolts-Private.xcconfig */; + baseConfigurationReference = FAD786BC4ACCD93AEF869C440819A61D /* Parse-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; - 82C290B3162C1322E3E86577236D1796 /* Debug */ = { + BA9493B459CAEE252102EB57FC232F89 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 62AA5AFD1D7438053DE8446F795803E7 /* FBSDKLoginKit-Private.xcconfig */; + baseConfigurationReference = 5292F6C0B6F153791486694C6FF45617 /* Bolts-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; @@ -1900,76 +3480,60 @@ }; name = Debug; }; - 933F2BF14711CB82E0B76182782927AA /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 45B79D0956F6A1351479E569B774EE64 /* Pods.release.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; - 9A9EFCE82257D8FFFC89F4207122EDBB /* Debug */ = { + CCEB8AF8E302FC8AAA4F7A241B033D88 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EA48C5EE3CE4DF057217B99A5A223606 /* Pods.debug.xcconfig */; + baseConfigurationReference = 3E718F82F8FAFE696738E00DEA95B1BE /* FBSDKShareKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Debug; }; - A0F389A6B6FDA9C4BA3CD4650B9E1F83 /* Debug */ = { + E07228267540D3FFED5EC05DEFD3E279 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7F322F6ACF68AF56AF896EB667A4EE12 /* FBSDKShareKit-Private.xcconfig */; + baseConfigurationReference = 5292F6C0B6F153791486694C6FF45617 /* Bolts-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; - C0A63F2A119B46BF5C50A9692A816E97 /* Release */ = { + ED83EE4CF3AF0585D42C2B087C74E924 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 62AA5AFD1D7438053DE8446F795803E7 /* FBSDKLoginKit-Private.xcconfig */; + baseConfigurationReference = 06B9B52AD9A3CF756611E7DAA22CE383 /* FBSDKLoginKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Release; + name = Debug; }; - CE0B3F2161711C6E9EFB7F7C90C7F382 /* Release */ = { + F004B44D201C63FABF64AD216BB5CE4F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3121BA645E578829C4840BA0F5D2F2FB /* Bolts-Private.xcconfig */; + baseConfigurationReference = 3E718F82F8FAFE696738E00DEA95B1BE /* FBSDKShareKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -1980,12 +3544,12 @@ }; name = Release; }; - E2ECE642E988862B9DD796919EC2C9C3 /* Release */ = { + F3AFD5BCEEC6A892EC48AF4845812F2B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0BD5813C82F4D56A56445BCBF651D1D /* FBSDKCoreKit-Private.xcconfig */; + baseConfigurationReference = 06B9B52AD9A3CF756611E7DAA22CE383 /* FBSDKLoginKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -1996,9 +3560,9 @@ }; name = Release; }; - E6580B95274214F7F26F334B6A6D4BE0 /* Debug */ = { + F74A84292C3811566C1E43F636D68522 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0BD5813C82F4D56A56445BCBF651D1D /* FBSDKCoreKit-Private.xcconfig */; + baseConfigurationReference = 9201ECF588FA8BB08DDBF3C8E4CD31A3 /* FBSDKCoreKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; @@ -2012,30 +3576,14 @@ }; name = Debug; }; - EC41C35068509A47AAAE44BE89EBFCAC /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7F322F6ACF68AF56AF896EB667A4EE12 /* FBSDKShareKit-Private.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 008AF45A7DCEC840A23CB8A8F28940B5 /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */ = { + 17DD4B0EAD5E9153182F758DFC55773C /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 82C290B3162C1322E3E86577236D1796 /* Debug */, - C0A63F2A119B46BF5C50A9692A816E97 /* Release */, + ED83EE4CF3AF0585D42C2B087C74E924 /* Debug */, + F3AFD5BCEEC6A892EC48AF4845812F2B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -2049,38 +3597,47 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 318D64157D92C3305C44018C69F6714D /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */ = { + 3603EDDAAE405DC809528E455AF69D7B /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CCEB8AF8E302FC8AAA4F7A241B033D88 /* Debug */, + F004B44D201C63FABF64AD216BB5CE4F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6B61B0CA93D49C3907B87A762AC584B0 /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - E6580B95274214F7F26F334B6A6D4BE0 /* Debug */, - E2ECE642E988862B9DD796919EC2C9C3 /* Release */, + F74A84292C3811566C1E43F636D68522 /* Debug */, + 4EB3DEF398E90C9E4E7F117E9340643F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 3860FF88C80D2DA6686687257F735AD1 /* Build configuration list for PBXNativeTarget "Pods" */ = { + 7E13494350C0FC498BF645C868B122FF /* Build configuration list for PBXNativeTarget "Parse" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9A9EFCE82257D8FFFC89F4207122EDBB /* Debug */, - 933F2BF14711CB82E0B76182782927AA /* Release */, + 4BC8CA5614726907F96B0210B6F61894 /* Debug */, + 93BC004E2D1DBCB3FA76431627BE9715 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 508AC5ACB7A2105F131E3E1DF5F1A124 /* Build configuration list for PBXNativeTarget "Bolts" */ = { + CDF5B94A1AD23341CC8912A155000168 /* Build configuration list for PBXNativeTarget "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 7D9E9201BFDC23768E911083692B55E1 /* Debug */, - CE0B3F2161711C6E9EFB7F7C90C7F382 /* Release */, + 6A25EBB98E50612A77661AD5232399BB /* Debug */, + 5FEC0404D2AB689EEE6AF903F1B1CE03 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F1929F0DB463DFC558DC2ACC6C8BB716 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */ = { + D03813A2C1491FAB09CEC4572528E261 /* Build configuration list for PBXNativeTarget "Bolts" */ = { isa = XCConfigurationList; buildConfigurations = ( - A0F389A6B6FDA9C4BA3CD4650B9E1F83 /* Debug */, - EC41C35068509A47AAAE44BE89EBFCAC /* Release */, + BA9493B459CAEE252102EB57FC232F89 /* Debug */, + E07228267540D3FFED5EC05DEFD3E279 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig index 983f1f6..c6ddd1a 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig @@ -1,5 +1,5 @@ #include "Bolts.xcconfig" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Bolts" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Bolts" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/Parse" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig index 218f70c..524a008 100644 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig @@ -1,6 +1,6 @@ #include "FBSDKCoreKit.xcconfig" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppLink" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Base64" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Cryptography" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ErrorRecovery" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/WebDialog" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppLink" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Base64" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Cryptography" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ErrorRecovery" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/WebDialog" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/Parse" OTHER_LDFLAGS = ${FBSDKCOREKIT_OTHER_LDFLAGS} PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig index 49181d4..370ecba 100644 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig @@ -1,6 +1,6 @@ #include "FBSDKLoginKit.xcconfig" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/Parse" OTHER_LDFLAGS = ${FBSDKLOGINKIT_OTHER_LDFLAGS} PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig index 363228e..1e30173 100644 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig @@ -1,6 +1,6 @@ #include "FBSDKShareKit.xcconfig" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKShareKit" "${PODS_ROOT}/Headers/Private/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKShareKit" "${PODS_ROOT}/Headers/Private/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/Parse" OTHER_LDFLAGS = ${FBSDKSHAREKIT_OTHER_LDFLAGS} PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown index 631b33a..02f590b 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown @@ -96,4 +96,8 @@ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +## Parse + +See https://www.parse.com/about/terms Generated by CocoaPods - http://cocoapods.org diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist index dcfc908..63a4584 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist @@ -124,6 +124,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Type PSGroupSpecifier + + FooterText + See https://www.parse.com/about/terms + Title + Parse + Type + PSGroupSpecifier + FooterText Generated by CocoaPods - http://cocoapods.org diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-resources.sh b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-resources.sh index ea685a2..a0fbc2e 100755 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-resources.sh +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-resources.sh @@ -57,6 +57,12 @@ install_resource() ;; esac } +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_resource "Parse/Parse/Resources/en.lproj" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_resource "Parse/Parse/Resources/en.lproj" +fi mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig index 3ba869d..b7ac3fa 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" -OTHER_LDFLAGS = $(inherited) -ObjC -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/Parse" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/Parse" +OTHER_LDFLAGS = $(inherited) -ObjC -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -l"Parse" -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig index 3ba869d..b7ac3fa 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" -OTHER_LDFLAGS = $(inherited) -ObjC -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/Parse" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/Parse" +OTHER_LDFLAGS = $(inherited) -ObjC -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -l"Parse" -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 2203b61..a867457 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -7,6 +7,9 @@ objects = { /* Begin PBXBuildFile section */ + 5A50331A1BC8D0E4001CBA5C /* MainTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A5033191BC8D0E4001CBA5C /* MainTableViewController.m */; settings = {ASSET_TAGS = (); }; }; + 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331C1BC8D99D001CBA5C /* LoginViewController.m */; settings = {ASSET_TAGS = (); }; }; + 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331F1BC8D9B5001CBA5C /* SignUpViewController.m */; settings = {ASSET_TAGS = (); }; }; 617F8769EFBE79517A02E6D0 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAF24AD380284C55768010A2 /* libPods.a */; }; 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC2E1BC84BF200E880D3 /* main.m */; }; 9A2FFC321BC84BF200E880D3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC311BC84BF200E880D3 /* AppDelegate.m */; }; @@ -20,6 +23,12 @@ /* Begin PBXFileReference section */ 1F41A29CEEC52ED6A148CCE5 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; 2BC0A6490F88476E5C31E3B1 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; + 5A5033181BC8D0E4001CBA5C /* MainTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainTableViewController.h; sourceTree = ""; }; + 5A5033191BC8D0E4001CBA5C /* MainTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainTableViewController.m; sourceTree = ""; }; + 5A50331B1BC8D99D001CBA5C /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = ""; }; + 5A50331C1BC8D99D001CBA5C /* LoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = ""; }; + 5A50331E1BC8D9B5001CBA5C /* SignUpViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SignUpViewController.h; sourceTree = ""; }; + 5A50331F1BC8D9B5001CBA5C /* SignUpViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SignUpViewController.m; sourceTree = ""; }; 9A2FFC2A1BC84BF200E880D3 /* Unit-2-Journal.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Unit-2-Journal.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 9A2FFC2E1BC84BF200E880D3 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 9A2FFC301BC84BF200E880D3 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; @@ -63,6 +72,17 @@ name = Pods; sourceTree = ""; }; + 5AE224801BC8BB4D004AEB77 /* Login/SignUp */ = { + isa = PBXGroup; + children = ( + 5A50331B1BC8D99D001CBA5C /* LoginViewController.h */, + 5A50331C1BC8D99D001CBA5C /* LoginViewController.m */, + 5A50331E1BC8D9B5001CBA5C /* SignUpViewController.h */, + 5A50331F1BC8D9B5001CBA5C /* SignUpViewController.m */, + ); + name = Login/SignUp; + sourceTree = ""; + }; 9A2FFC211BC84BF100E880D3 = { isa = PBXGroup; children = ( @@ -84,11 +104,14 @@ 9A2FFC2C1BC84BF200E880D3 /* Unit-2-Journal */ = { isa = PBXGroup; children = ( + 5AE224801BC8BB4D004AEB77 /* Login/SignUp */, 9A2FFC301BC84BF200E880D3 /* AppDelegate.h */, 9A2FFC311BC84BF200E880D3 /* AppDelegate.m */, 9A2FFC331BC84BF200E880D3 /* ViewController.h */, 9A2FFC341BC84BF200E880D3 /* ViewController.m */, 9A2FFC361BC84BF200E880D3 /* Main.storyboard */, + 5A5033181BC8D0E4001CBA5C /* MainTableViewController.h */, + 5A5033191BC8D0E4001CBA5C /* MainTableViewController.m */, 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */, 9A2FFC3E1BC84BF200E880D3 /* LaunchScreen.storyboard */, 9A2FFC411BC84BF200E880D3 /* Info.plist */, @@ -214,7 +237,10 @@ files = ( 9A2FFC351BC84BF200E880D3 /* ViewController.m in Sources */, 9A2FFC321BC84BF200E880D3 /* AppDelegate.m in Sources */, + 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */, 9A2FFC3B1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld in Sources */, + 5A50331A1BC8D0E4001CBA5C /* MainTableViewController.m in Sources */, + 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */, 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m index 64acfdb..e75c8af 100644 --- a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m +++ b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m @@ -9,6 +9,7 @@ #import "AppDelegate.h" #import #import +#import @interface AppDelegate () @@ -16,11 +17,23 @@ @interface AppDelegate () @implementation AppDelegate +//- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +//{ +// [Parse setApplicationId:@"huGlqbY2KVINDuFfqju1fN0eB2QVANcqqHP0NVpY" +// clientKey:@"aohlSqEhCwaXtZbji5us0j97GNzemWqq3m3EJqwG"]; +// return YES; +//} - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - return [[FBSDKApplicationDelegate sharedInstance] application:application - didFinishLaunchingWithOptions:launchOptions];; + [[FBSDKApplicationDelegate sharedInstance] application:application + didFinishLaunchingWithOptions:launchOptions];; + + [Parse setApplicationId:@"huGlqbY2KVINDuFfqju1fN0eB2QVANcqqHP0NVpY" + clientKey:@"aohlSqEhCwaXtZbji5us0j97GNzemWqq3m3EJqwG"]; + + + return YES; } - (void)applicationWillResignActive:(UIApplication *)application { diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard index f2afbe5..900bc17 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard @@ -1,7 +1,6 @@ - diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index f56d2f3..bdff9a9 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,25 +1,205 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Unit-2-Journal/Unit-2-Journal/LoginViewController.h b/Unit-2-Journal/Unit-2-Journal/LoginViewController.h new file mode 100644 index 0000000..da4cd09 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/LoginViewController.h @@ -0,0 +1,13 @@ +// +// LoginViewController.h +// Unit-2-Journal +// +// Created by Brian Blanco on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import + +@interface LoginViewController : UIViewController + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/LoginViewController.m b/Unit-2-Journal/Unit-2-Journal/LoginViewController.m new file mode 100644 index 0000000..4d53657 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/LoginViewController.m @@ -0,0 +1,37 @@ +// +// LoginViewController.m +// Unit-2-Journal +// +// Created by Brian Blanco on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "LoginViewController.h" + +@interface LoginViewController () + +@end + +@implementation LoginViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/MainTableViewController.h b/Unit-2-Journal/Unit-2-Journal/MainTableViewController.h new file mode 100644 index 0000000..6484b56 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/MainTableViewController.h @@ -0,0 +1,13 @@ +// +// MainTableViewController.h +// Unit-2-Journal +// +// Created by Brian Blanco on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import + +@interface MainTableViewController : UITableViewController + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/MainTableViewController.m b/Unit-2-Journal/Unit-2-Journal/MainTableViewController.m new file mode 100644 index 0000000..0a42a22 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/MainTableViewController.m @@ -0,0 +1,43 @@ +// +// MainTableViewController.m +// Unit-2-Journal +// +// Created by Brian Blanco on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "MainTableViewController.h" +#import + +@interface MainTableViewController () + +@end + +@implementation MainTableViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + + PFObject *testObject = [PFObject objectWithClassName:@"TestObject"]; + testObject[@"foo"] = @"bar"; + [testObject saveInBackground]; + + [self performSegueWithIdentifier:@"showLogin" sender:self]; +} + + + +#pragma mark - Table view data source + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + + return 0; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + + return 0; +} + + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/SignUpViewController.h b/Unit-2-Journal/Unit-2-Journal/SignUpViewController.h new file mode 100644 index 0000000..c10572b --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/SignUpViewController.h @@ -0,0 +1,13 @@ +// +// SignUpViewController.h +// Unit-2-Journal +// +// Created by Brian Blanco on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import + +@interface SignUpViewController : UIViewController + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/SignUpViewController.m b/Unit-2-Journal/Unit-2-Journal/SignUpViewController.m new file mode 100644 index 0000000..36a4608 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/SignUpViewController.m @@ -0,0 +1,37 @@ +// +// SignUpViewController.m +// Unit-2-Journal +// +// Created by Brian Blanco on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "SignUpViewController.h" + +@interface SignUpViewController () + +@end + +@implementation SignUpViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/ViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewController.m index 6baf6dc..da924c0 100644 --- a/Unit-2-Journal/Unit-2-Journal/ViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/ViewController.m @@ -9,6 +9,7 @@ #import "ViewController.h" #import #import +#import @interface ViewController () @@ -18,6 +19,11 @@ @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; + PFObject *testObject = [PFObject objectWithClassName:@"TestObject"]; + testObject[@"foo"] = @"bar"; + + [testObject saveInBackground]; + FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init]; loginButton.center = self.view.center; [self.view addSubview:loginButton]; From d158861f2467f3fc8d94cb5cb12c3102fb065f43 Mon Sep 17 00:00:00 2001 From: Brian Date: Sat, 10 Oct 2015 12:55:42 -0400 Subject: [PATCH 03/86] setup Parse & added RESTKit --- Unit-2-Journal/Podfile | 1 + Unit-2-Journal/Podfile.lock | 26 + Unit-2-Journal/Pods/Manifest.lock | 26 + .../Pods/Pods.xcodeproj/project.pbxproj | 7398 ++++++++++------- .../Bolts/Bolts-Private.xcconfig | 2 +- .../FBSDKCoreKit-Private.xcconfig | 2 +- .../FBSDKLoginKit-Private.xcconfig | 2 +- .../FBSDKShareKit-Private.xcconfig | 2 +- .../Pods/Pods-acknowledgements.markdown | 1031 +++ .../Pods/Pods-acknowledgements.plist | 1055 +++ .../Pods/Pods.debug.xcconfig | 6 +- .../Pods/Pods.release.xcconfig | 6 +- 12 files changed, 6588 insertions(+), 2969 deletions(-) diff --git a/Unit-2-Journal/Podfile b/Unit-2-Journal/Podfile index cfe4ed8..587cd9d 100644 --- a/Unit-2-Journal/Podfile +++ b/Unit-2-Journal/Podfile @@ -2,3 +2,4 @@ pod 'FBSDKCoreKit', '~> 4.7' pod 'FBSDKShareKit', '~> 4.7' pod 'FBSDKLoginKit', '~> 4.7' pod 'Parse' +pod 'RestKit/Testing', '~> 0.24.0' diff --git a/Unit-2-Journal/Podfile.lock b/Unit-2-Journal/Podfile.lock index ed88401..4f021dd 100644 --- a/Unit-2-Journal/Podfile.lock +++ b/Unit-2-Journal/Podfile.lock @@ -1,4 +1,5 @@ PODS: + - AFNetworking (1.3.4) - Bolts (1.3.0): - Bolts/AppLinks (= 1.3.0) - Bolts/Tasks (= 1.3.0) @@ -18,20 +19,45 @@ PODS: - FBSDKCoreKit - FBSDKShareKit (4.7.0): - FBSDKCoreKit + - ISO8601DateFormatterValueTransformer (0.6.1): + - RKValueTransformers (~> 1.1.0) - Parse (1.9.0): - Bolts/Tasks (>= 1.3.0) + - RestKit/Network (0.24.1): + - AFNetworking (~> 1.3.0) + - RestKit/ObjectMapping + - RestKit/Support + - SOCKit + - RestKit/ObjectMapping (0.24.1): + - ISO8601DateFormatterValueTransformer (~> 0.6.0) + - RestKit/Support + - RKValueTransformers (~> 1.1.0) + - RestKit/Support (0.24.1): + - TransitionKit (~> 2.1.0) + - RestKit/Testing (0.24.1): + - RestKit/Network + - RKValueTransformers (1.1.2) + - SOCKit (1.1) + - TransitionKit (2.1.1) DEPENDENCIES: - FBSDKCoreKit (~> 4.7) - FBSDKLoginKit (~> 4.7) - FBSDKShareKit (~> 4.7) - Parse + - RestKit/Testing (~> 0.24.0) SPEC CHECKSUMS: + AFNetworking: cf8e418e16f0c9c7e5c3150d019a3c679d015018 Bolts: 805a4a87413e49d4a0c2b7d469084cbc46b09342 FBSDKCoreKit: eb580bfc2040ad44f4c0b4f4d0befb1d35bce59c FBSDKLoginKit: 01bce8dd3f3a26a023b0ba4ffdde7ef5062889fe FBSDKShareKit: 1f927bb05e4d36a99d5d5bf2f4b1ff294ce3e15c + ISO8601DateFormatterValueTransformer: 52da467d6ec899d6aedda8e48280ac92e8ee97e6 Parse: 712efbc476d4f47b0f96b70db7e53101575753aa + RestKit: 1987b5efef289c6b27bd980714d6ca48d3871b78 + RKValueTransformers: 66ac5e4f077fdbe3496e792d89eeff4c3eb67701 + SOCKit: c7376ac262bea9115b8f749358f762522a47d392 + TransitionKit: 3a14b6acc7cf2d1dd3e454e24dbad1cfab9a1ef1 COCOAPODS: 0.38.2 diff --git a/Unit-2-Journal/Pods/Manifest.lock b/Unit-2-Journal/Pods/Manifest.lock index ed88401..4f021dd 100644 --- a/Unit-2-Journal/Pods/Manifest.lock +++ b/Unit-2-Journal/Pods/Manifest.lock @@ -1,4 +1,5 @@ PODS: + - AFNetworking (1.3.4) - Bolts (1.3.0): - Bolts/AppLinks (= 1.3.0) - Bolts/Tasks (= 1.3.0) @@ -18,20 +19,45 @@ PODS: - FBSDKCoreKit - FBSDKShareKit (4.7.0): - FBSDKCoreKit + - ISO8601DateFormatterValueTransformer (0.6.1): + - RKValueTransformers (~> 1.1.0) - Parse (1.9.0): - Bolts/Tasks (>= 1.3.0) + - RestKit/Network (0.24.1): + - AFNetworking (~> 1.3.0) + - RestKit/ObjectMapping + - RestKit/Support + - SOCKit + - RestKit/ObjectMapping (0.24.1): + - ISO8601DateFormatterValueTransformer (~> 0.6.0) + - RestKit/Support + - RKValueTransformers (~> 1.1.0) + - RestKit/Support (0.24.1): + - TransitionKit (~> 2.1.0) + - RestKit/Testing (0.24.1): + - RestKit/Network + - RKValueTransformers (1.1.2) + - SOCKit (1.1) + - TransitionKit (2.1.1) DEPENDENCIES: - FBSDKCoreKit (~> 4.7) - FBSDKLoginKit (~> 4.7) - FBSDKShareKit (~> 4.7) - Parse + - RestKit/Testing (~> 0.24.0) SPEC CHECKSUMS: + AFNetworking: cf8e418e16f0c9c7e5c3150d019a3c679d015018 Bolts: 805a4a87413e49d4a0c2b7d469084cbc46b09342 FBSDKCoreKit: eb580bfc2040ad44f4c0b4f4d0befb1d35bce59c FBSDKLoginKit: 01bce8dd3f3a26a023b0ba4ffdde7ef5062889fe FBSDKShareKit: 1f927bb05e4d36a99d5d5bf2f4b1ff294ce3e15c + ISO8601DateFormatterValueTransformer: 52da467d6ec899d6aedda8e48280ac92e8ee97e6 Parse: 712efbc476d4f47b0f96b70db7e53101575753aa + RestKit: 1987b5efef289c6b27bd980714d6ca48d3871b78 + RKValueTransformers: 66ac5e4f077fdbe3496e792d89eeff4c3eb67701 + SOCKit: c7376ac262bea9115b8f749358f762522a47d392 + TransitionKit: 3a14b6acc7cf2d1dd3e454e24dbad1cfab9a1ef1 COCOAPODS: 0.38.2 diff --git a/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj b/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj index 484cf93..f0f7053 100644 --- a/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj @@ -7,2236 +7,2739 @@ objects = { /* Begin PBXBuildFile section */ - 0031093FE01CA0F995D38F14E0786CE5 /* PFLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = D45D3E81C27909856D36BC8D34806CF3 /* PFLogger.h */; }; - 0076F8848D3C0862138855C15B8969F6 /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE1C285AB595843D879319E54ED6E95 /* FBSDKBridgeAPIRequest+Private.h */; }; - 00A070B61019CED58251933B64DCD204 /* PFOfflineQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 805A9C7F80B24B7D43C26816704C0E61 /* PFOfflineQueryController.m */; }; - 0115290BBAE8D8A26CBB67DBB296B5E7 /* PFFile.m in Sources */ = {isa = PBXBuildFile; fileRef = BDA465E9443323180CC1815D1C87C705 /* PFFile.m */; }; - 0119725155E71EC7F6CBCEAB5FC19DC5 /* PFTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = E4DE147989205694AE9667AACA7AECD9 /* PFTaskQueue.m */; }; - 011E9F4783EC67957F40FF6CFD1BF3B3 /* FBSDKLikeObjectType.m in Sources */ = {isa = PBXBuildFile; fileRef = 00AA046AB84056772E21CE43C551AAAE /* FBSDKLikeObjectType.m */; }; - 015B1B15761CFB91D536917CD1FBED3E /* PFObjectConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 9820DB142515E9FE68F1635778CDF436 /* PFObjectConstants.m */; }; - 01EAB8D957945D4CE9D3A81888EC6AFD /* PFKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = E166AD26497D5B00C94E0891C82C6BD3 /* PFKeychainStore.h */; }; - 01F6CEC2F048AD473BBDAA8FFA196488 /* FBSDKGameRequestContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C3130D692EFBD2F3FA5A396FF19871E /* FBSDKGameRequestContent.m */; }; - 0240D5556E070D570A97669B5550C3DC /* PFEventuallyQueue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 28938733DD441FACFA78DCA04FC186C4 /* PFEventuallyQueue_Private.h */; }; - 024F2F6E7B359E16D430507777D2A23A /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 71207309A4BF5422B709A558661FB9DD /* FBSDKGameRequestFrictionlessRecipientCache.h */; }; - 025140DE78DC4DE2EADAAA64E7382F27 /* PFPushChannelsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 46C04343C64E76EC67462AD59BFCEAA3 /* PFPushChannelsController.m */; }; - 0295896A65DEFA556020FAF30366DF0C /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = 306334793F42597A58A4BA17738769A8 /* FBSDKAppEventsState.m */; }; - 0455144463BABE9F7588B14858F7FBD9 /* PFCommandResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 3723B220F505C587A732C7DDB88DA222 /* PFCommandResult.h */; }; - 045968C599579171BF784B3516F8B2A1 /* PFOfflineObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = 59E56D9E5ED9372FE9F67EE8F685C3DB /* PFOfflineObjectController.m */; }; - 0490862CDB776C815363CFC351F1F3A1 /* PFRESTCommand_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFBAEBF5E6EDC57B0F60C53E56D90FE /* PFRESTCommand_Private.h */; }; - 049098E1C6C7C462769F96568DA8D72F /* FBSDKLikeButtonPopWAV.h in Headers */ = {isa = PBXBuildFile; fileRef = 695B20B39C65A0F70AF9F9C9D54CDC02 /* FBSDKLikeButtonPopWAV.h */; }; - 0534960921332F24B285B5A2DF46AEEA /* PFRESTUserCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = AB89D35DE0F5C32E58B215882C35703A /* PFRESTUserCommand.h */; }; - 0563FB0BD1A8121457AF6417A3F3877B /* PFBaseState.m in Sources */ = {isa = PBXBuildFile; fileRef = BBE9E1940BF9CB7CB79EEC68691D7CC7 /* PFBaseState.m */; }; - 056D1A2F30304795BCF119D77F6A3444 /* BFDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A2D949315D757A2D3EB973286C11836 /* BFDefines.h */; }; - 05CD7BC5729091AECA9F16F650E89EFB /* PFURLSessionDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5701B935661FE2B2D953052CE58E255F /* PFURLSessionDataTaskDelegate.h */; }; - 0600F71A1A6C706F958DA903B2474602 /* PFCommandRunning.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B99F25C004D2B7579CC0ED827FDD52C /* PFCommandRunning.h */; }; - 06E216A82A4557C2F6C948A602A4B9B4 /* PFCommandRunningConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FC21711E96478983E21D14A7248B1C0 /* PFCommandRunningConstants.m */; }; - 06E66A4FCDA7BE84ABB7212E5D346452 /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C934943D7A25BDE5AA3C99D0D0E2D06A /* FBSDKCoreKit-dummy.m */; }; - 07AC4C46B69255EBF0737753110703F6 /* PFRESTQueryCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 91A20DEF4E05121BC0D3BA0B95057690 /* PFRESTQueryCommand.m */; }; - 07B3F93C12DD63838C00EA94CD93B27D /* FBSDKShareLinkContent.h in Headers */ = {isa = PBXBuildFile; fileRef = AA723A00866BEEDAE1A8E099DFE0C01C /* FBSDKShareLinkContent.h */; }; - 07C07BAC99463E00A00664BABE73C8E9 /* FBSDKSendButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 279F58DF900F5886BE441B7000DE90AF /* FBSDKSendButton.m */; }; - 081A0C2B9D647B6B157889DE9300036D /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = 578C1B0AB298F33880AF7743E63A09A6 /* FBSDKLogo.m */; }; - 099BAF1AD4D80C3814E83CB96A7F9ED2 /* PFObjectConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 983F35D2D34ACB272BCEEEC6040DDF33 /* PFObjectConstants.h */; }; - 09B5027EB6E9E85497A98ED58C0AA9F2 /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = 56DB0C886738CB142BFF8D6C68BDC124 /* FBSDKTriStateBOOL.h */; }; - 0A1FC44863CD4AD27EB4078FE4A8234E /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 60FF9CABF05ED49D7A2F6C7414459E8F /* BFURL.h */; }; - 0C6BC3E49CBD68FA2DF9587848F59916 /* PFObjectState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = AA3F835F4861D394CDA474F016B68DF3 /* PFObjectState_Private.h */; }; - 0CF0CA6113E52DCB32C33183A1B726F2 /* FBSDKLikeControl.m in Sources */ = {isa = PBXBuildFile; fileRef = F7D6DF824B91053634D56B3A1DE837EF /* FBSDKLikeControl.m */; }; - 0CFA690393172E2727762B65A2CDABC2 /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1247DC0FBCBA3414C6BFB88ECA3ADA8D /* FBSDKContainerViewController.h */; }; - 0D1BF3A32608EED521199FC7756F2A2C /* FBSDKShareVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = D47FDBAD7CB049CA85F42858313FA486 /* FBSDKShareVideo.h */; }; - 0D781A587B6C90E1684F0E9881312466 /* FBSDKLoginManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 36C87C6A0D356709A30FBC0A3D13EA86 /* FBSDKLoginManager+Internal.h */; }; - 0DE4FD1C506CB317481F942614CFE432 /* PFFileStagingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 89833C3688D20D27A921CD52CBF04258 /* PFFileStagingController.h */; }; - 0F43A45B89B58E00B1FE0F97BBC073E6 /* PFSessionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 11895677202537B8F1FA94B44D23ACFD /* PFSessionController.h */; }; - 0F5681D4155EF404B63B22B18C1AF88F /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B1E05B566A858D61F1885B32B64AF7 /* BFAppLink.h */; }; - 0F900FFCB72D81E50A554D642CBB8885 /* PFObjectFilePersistenceController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C247169039B75E0BFB4A9F4811F5A7D /* PFObjectFilePersistenceController.h */; }; - 0FD6F7DC809A014C513B088D3EC9DC6B /* PFCurrentConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = C69C77ABF5CBDE6FAEA65F67DC68806A /* PFCurrentConfigController.h */; }; - 1001DEFE89CB83044A7A1B3AE42C0F66 /* PFPush.h in Headers */ = {isa = PBXBuildFile; fileRef = 0175D7D3E9C314F1D72F51BB23D70137 /* PFPush.h */; }; - 1040D99E9461517B77C9B50A96E91A7B /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = C4850C360C9673CBE290A0841176FD78 /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 1041460BCE68A200AF08B5D81DB28C1D /* PFURLSessionCommandRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 5587C60D4A8E123E1C1112734C3FD4A8 /* PFURLSessionCommandRunner.m */; }; - 10D67968048D274197D4CD9F02D7664D /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = F5599187F396820DE7700A6E7F6E43A9 /* FBSDKWebDialogView.m */; }; - 10E5693130E9DBC6DD16809E06484C4C /* PFPushState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B1E5184AF7DB35882426974C6E4F54D /* PFPushState_Private.h */; }; - 1130B0AEE5F9BD63B55C152BAF5106DC /* BFAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 10F366B82EB075ED6CFE0882D1B87BBA /* BFAppLinkNavigation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 115282FAD689F856C602E20DADA1D9BB /* FBSDKShareVideoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BD705FB6C7BC580C655F9EB6061B436 /* FBSDKShareVideoContent.h */; }; - 116721C51B12DAABBC7095E284DD8EBB /* PFRESTCloudCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 05274B2C48957E129DCADF7E7BB272C1 /* PFRESTCloudCommand.m */; }; - 117BBCDE4D34AAAE0F3B7C9BB5D9254E /* PFCommandCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 08A5F9DDBE312E2B39D52155B7463DA8 /* PFCommandCache.m */; }; - 1234B7A56D643EEFC32AD7B3D707F3A8 /* PFGeoPoint.m in Sources */ = {isa = PBXBuildFile; fileRef = 7591F734161565C8587390742A1ED783 /* PFGeoPoint.m */; }; - 12808509E4ABFDF7030A7C6ABAA68616 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 91A3C081AA893B7C7E3C720BDD0B87AA /* FBSDKBridgeAPIProtocolWebV1.m */; }; - 12D70D555B750473FDFD4444E07114DF /* PFReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 99BD86550F9CEEAFE247409114E419D3 /* PFReachability.m */; }; - 1388690C4046C715B129CBE4F501C410 /* PFInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = ED29B572533174091A28FE94F7BBC738 /* PFInstallationController.h */; }; - 139836449D1FF9389BDF1A25AAE9550A /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 567F41DC5BE80C8E3FAD7E42124F6A1D /* FBSDKConstants.h */; }; - 13A1C4E2418AFCB69A8A061CDABEDF58 /* PFObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 96DEB41D236F2F957F542803B7242485 /* PFObject.m */; }; - 1466ADD5C1C9064B71781241B2AC887D /* PFRole.h in Headers */ = {isa = PBXBuildFile; fileRef = E47AEA771CADAF0F7E1A8716B513852F /* PFRole.h */; }; - 148878B5B97134968A610F4A0BD27E8B /* PFPushPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 33E340B3658DAFF8B960E00C876976B1 /* PFPushPrivate.h */; }; - 14ED5D2A2E45EDFAC58F338BB275BB27 /* PFMutableFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = 66C1B850FF8F72C651A98CCB78DB0E42 /* PFMutableFileState.h */; }; - 14F1171052248FD2C9252B38F4081977 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */; }; - 151E6C369136D436BB51A4DDF2DB9719 /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CAFF3BEDD8F0042F6050C5859DE2A0E /* FBSDKWebDialog.m */; }; - 15C5CEA7AE66D7CCBBC99C533A80856B /* PFEventuallyPin.h in Headers */ = {isa = PBXBuildFile; fileRef = EDF5AD225C15738985A7A4FFD5F486C9 /* PFEventuallyPin.h */; }; - 1627ABDB622C7AA22401EFBC45268DC0 /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = E2B84A286CDFEFD476C028DA645FE8B7 /* FBSDKDialogConfiguration.h */; }; - 165198337F3D88ED8D13950D042243F3 /* PFEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 92219F3882F82E7756711A802C7F34EA /* PFEncoder.h */; }; - 165411C8E35D734155064C1D5B7A7E95 /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 280B92F20BB7309511EA9EFC8DF7AB87 /* FBSDKAudioResourceLoader.h */; }; - 16568C7F23CDF1C2617CDA1A62325092 /* PFMutablePushState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CE057D872493F57174963C4F6B50DC4 /* PFMutablePushState.m */; }; - 16679D0607E9A53098AB211571CE9999 /* Parse_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 729D6D653BE34D23C8D053B85CDD5E97 /* Parse_Private.h */; }; - 16E18968E369451E339FFD342156CCA4 /* FBSDKShareLinkContent.m in Sources */ = {isa = PBXBuildFile; fileRef = A3F681072693C690033F636D1262450F /* FBSDKShareLinkContent.m */; }; - 16FAF341ED8A49E3144EEB1B5E3E10C0 /* PFAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F40CD0B016860B2BBC25B6EBBE9E284 /* PFAlertView.m */; }; - 17119C973C7223A310050A3C641406EC /* PFAnonymousAuthenticationProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 8858E00C3002371F0FAF9914734C5FD8 /* PFAnonymousAuthenticationProvider.m */; }; - 18137F7F403B447DCC10865DB6B08485 /* PFAnalyticsUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 0862B411E359C83CBD18E519CEF6D94C /* PFAnalyticsUtilities.h */; }; - 1848DA8D90C5B65BBAE55E0F5C277645 /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = 7442E5ADF75557556E523DE6A1E3BE3E /* FBSDKTimeSpentData.m */; }; - 1855A22A1DFC12DB655772510147D6E5 /* FBSDKAppGroupJoinDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4490BD8F1600D89FDE4126EAF678E35C /* FBSDKAppGroupJoinDialog.m */; }; - 189096427AF5BB709D1D1FFAEE25264E /* PFQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = DF9A789A3EB2E9881006021046DBA3A5 /* PFQueryState.m */; }; - 1A091BE8B5581EDAFE2E8C884AB2F9FB /* PFAnonymousAuthenticationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B2175B028A34E81F071193394F373B5 /* PFAnonymousAuthenticationProvider.h */; }; - 1A3A538509B4785B7B6623CA76004593 /* PFAnalyticsController.m in Sources */ = {isa = PBXBuildFile; fileRef = AADB13268569ACD428CA718A38894A49 /* PFAnalyticsController.m */; }; - 1A7028D0D1252E883696DA49D7F51E52 /* PFReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 282E7F3B29E9E0666DC2F0DD9E9BC196 /* PFReachability.h */; }; - 1A7B34868636A1A11E07B9685E7BE9B8 /* FBSDKAccessTokenCacheV4.h in Headers */ = {isa = PBXBuildFile; fileRef = F4EC35BFE04E1EB232697BD6C033CA73 /* FBSDKAccessTokenCacheV4.h */; }; - 1A87FA679C6F8FB9E1635F2D327D498F /* FBSDKLoginKit.h in Headers */ = {isa = PBXBuildFile; fileRef = A588ADAFB9768AED4B3BA282F6561A68 /* FBSDKLoginKit.h */; }; - 1B214B8DA84AF3D339A4A5173F84B7CE /* FBSDKAppInviteDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 23F24FEF2A5474160AA9AD33E508D81E /* FBSDKAppInviteDialog.m */; }; - 1B63A4BB0D67684AA1278326F09BF4E3 /* PFUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F19786B895155DF0DBA51BE5462CDCA /* PFUser.m */; }; - 1B7AD2E885D25E8F20DFA5F22348968D /* FBSDKLoginKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2EE36FA36A8C91403AF93CAE6EDA4A1B /* FBSDKLoginKit-dummy.m */; }; - 1B89B03D72EA7E5B78F08041D807F24E /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = B22590D9365E880F05CFC1DC1066B067 /* FBSDKAppLinkUtility.h */; }; - 1C30161F5CCDE877911BBF4E37C668AB /* PFPropertyInfo_Runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 64E64C3C1EBC666F4CF3A2893F8DB8F1 /* PFPropertyInfo_Runtime.h */; }; - 1C4CCD5145FFC73BBD93BD34AF80DC26 /* FBSDKShareButton.h in Headers */ = {isa = PBXBuildFile; fileRef = DFFDFF65FE7476F1D6C9313962B686E7 /* FBSDKShareButton.h */; }; - 1CFCB3D3ED8F0D7F95ED1F62F2989787 /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 157F73E38A3EEBACD7E9F322201C0A4A /* FBSDKBridgeAPIRequest.h */; }; - 1D2DBAC1F882B01E611F87B197AE52C7 /* PFSQLiteDatabaseResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 3652FCED3441641775C14E6FD5BC06D1 /* PFSQLiteDatabaseResult.h */; }; - 1E2206097284965CFD9DFE4426467D67 /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA9DC4FB2F1D4B30FF6F4D47961DEC2 /* BFExecutor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 1E695458610F698BBCF35377CDF28FF3 /* PFPurchaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCC05D6904CB78C337D61B1211C5BC6F /* PFPurchaseController.m */; }; - 1E7CC04F13ABFE73058CD7DF69C9812B /* Parse.h in Headers */ = {isa = PBXBuildFile; fileRef = 997EE9B33EDCEA687B122C5D12D9A6E2 /* Parse.h */; }; - 1EA5DBD371A19F75A226BF25CA31469C /* PFPinningObjectStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 582D21818FB0E31756573C0CEAC6A8B4 /* PFPinningObjectStore.m */; }; - 1EE9A8EC40D092820419E7A7DAAB79F6 /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = B0F4434611B4FFD948A3FA3E177D8791 /* FBSDKAppEventsUtility.m */; }; - 1F1670F7DFA0E47562CD51956E793600 /* FBSDKBoltsMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D36D6965ABDC70928CD459FE8BC3B89 /* FBSDKBoltsMeasurementEventListener.h */; }; - 1FCDA4DAD6F25814BF8EB9DFB98A9798 /* PFCommandCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 92C9EF435D1A1B30A324A3863E2CB1CB /* PFCommandCache_Private.h */; }; - 1FDD51E9AB8FE7FC5D2629B19426C4A2 /* PFFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 77E53941D7D46C602DD11044D3718DE6 /* PFFileManager.h */; }; - 1FFBD1EEC0E90F3FE1279B2D4828F84E /* PFBaseState.h in Headers */ = {isa = PBXBuildFile; fileRef = EF274E7B9BD70039B6C19D59B6817F3C /* PFBaseState.h */; }; - 1FFD190681463306C97ABCD802238795 /* FBSDKLoginCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = E921A833B36DAA6D8087D3841D15FC40 /* FBSDKLoginCompletion.h */; }; - 200945BE8422160937BE875D2DC3A012 /* PFCommandURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 32E03031E4F6C80A832AC26957F2BD66 /* PFCommandURLRequestConstructor.m */; }; - 2039DF3542A81321E4BC68F087EFB01F /* PFMultiProcessFileLockController.h in Headers */ = {isa = PBXBuildFile; fileRef = E7B7004292F62F0BBD9D137660B5648B /* PFMultiProcessFileLockController.h */; }; - 204DDADC01B3E9C60F94B73B1DA02D78 /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = 10FB754E7CB98525F95328FAD2C2D788 /* FBSDKGraphRequestBody.h */; }; - 20A9F089A7FD34F0A52109F66A201BE8 /* PFPushUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 26127A113C8DE5D855C538CEEE818097 /* PFPushUtilities.h */; }; - 2140AB24A57365D2C212F506BCB07580 /* PFDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F9593DC6B40D6FF814A1A143B4F1192 /* PFDecoder.m */; }; - 2175F55C5F40FFAE2164E17849FF158D /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C038B21BF92B30435A80432688533E05 /* FBSDKGraphRequestPiggybackManager.h */; }; - 217CDE795AD5E36334974C7974839D93 /* PFFileStagingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 927A4EF5B8ED82ABCB709942CC242E06 /* PFFileStagingController.m */; }; - 21FDA2BBB4A2B144AE336A2017002A45 /* PFSQLiteDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 30AEFC89FB4F53E87A31D13E8D1108FC /* PFSQLiteDatabase.m */; }; - 225847BA0FD2D6E5B0C7FC331BA7CCD1 /* PFMultiProcessFileLockController.m in Sources */ = {isa = PBXBuildFile; fileRef = ACC07E15FC2CA7D185BFF1F84D565D3F /* PFMultiProcessFileLockController.m */; }; - 226B5499EFB78CE822793F57B7F5D338 /* PFDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 395A40E6ED210F9F655AE3ED00AB6CCE /* PFDateFormatter.m */; }; - 2296792F99964BC4DB7A70EA2AE3191C /* PFUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = 8350BE6813045E1E683091FF4C71539B /* PFUserState.m */; }; - 22E996525BF371CEA7503656391231B6 /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E2155DA6D3D13D23A2BE2F0CBAFE632 /* FBSDKAudioResourceLoader.m */; }; - 23589C8FDD1C654F9B5ABD21EBB44F14 /* FBSDKLikeDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F58C09538CC735A9D6E6B2036FA8A43 /* FBSDKLikeDialog.h */; }; - 23DDE6D9EB01F5BCF7FA3B95E0962D0D /* PFURLSessionCommandRunner_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = AC0B78FA41B62305BA8AB5B5C9C0EF51 /* PFURLSessionCommandRunner_Private.h */; }; - 240569949C2FF9453095CAD95D627B02 /* PFPaymentTransactionObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 41CAAD93B8E8E5A2F8F2F8297FFE95AC /* PFPaymentTransactionObserver.m */; }; - 2407AF3DC659F4D82509D57974CB2CEB /* FBSDKShareOpenGraphContent.h in Headers */ = {isa = PBXBuildFile; fileRef = A0E7F189FF9BF3307F3E7363608DBD81 /* FBSDKShareOpenGraphContent.h */; }; - 24191EF742D65921D5B8BCD975149375 /* PFRESTConfigCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A972AC76383DCF37E7008206794C8F /* PFRESTConfigCommand.m */; }; - 2446F1673C3F111AE5544C5D612F983D /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = A0AA88C65C641FBD65F890D8F0AB8026 /* FBSDKErrorConfiguration.m */; }; - 24CDB698465EC154FCDAB969C4DB41EF /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 35EAA5B4750A741B6F6FB63B5EF161F6 /* FBSDKBase64.m */; }; - 2504C2D803E69F8AD5242FE200CAC89C /* FBSDKSharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 1223A0C9FC36B8E26592679DCD48B8ED /* FBSDKSharing.h */; }; - 255F8174747BEE4E1DBA228D6B91F7DE /* PFACLPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F1FF6BF9EE55B7EAA6650EA4BA611F /* PFACLPrivate.h */; }; - 25700FC04D9595410BB668AC6D95B2C8 /* FBSDKShareDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = C7971F18FB6165E37A0B729145BD2CE0 /* FBSDKShareDialog.h */; }; - 25A70766920D6C0A260636FDE527A851 /* PFPaymentTransactionObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EE4677B561DC6EB86FA8571CEE64AF1 /* PFPaymentTransactionObserver.h */; }; - 267A2D6F3E72601A59294D6C8B35904C /* PFAnalyticsUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = FB20A82F1DA5086B118A419F8A505588 /* PFAnalyticsUtilities.m */; }; - 26862DDAADC74DA962C7D181E23CA54D /* PFRESTAnalyticsCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = E9A152C5D066C52D0A1CFF6EA97C0303 /* PFRESTAnalyticsCommand.m */; }; - 26F99FB90BCE2289002832D28389E430 /* PFURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 0462A31AED64616A9EA07AE370D6A31B /* PFURLSession.m */; }; - 2712D02D098539CDB3E3F8E60D5E07E7 /* PFRelation.m in Sources */ = {isa = PBXBuildFile; fileRef = 7809BA66D5768E97BE3CB53E36ECAC4D /* PFRelation.m */; }; - 279BC3A66039DA564403BDB1A3466D92 /* PFInternalUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 80376EBD200672DDD3336480C347B3E5 /* PFInternalUtils.h */; }; - 27D5286B2C57AD201EFD862B24BAFBD7 /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A750B8C4CABD71000E78BA2523A93FE /* FBSDKAppEventsStateManager.h */; }; - 2830B7C4D04072D1398E6B5573AEB518 /* FBSDKShareError.m in Sources */ = {isa = PBXBuildFile; fileRef = DFFD8020EDD3222D365D682FB9C69978 /* FBSDKShareError.m */; }; - 2898D3157017DB142DBF3E00E0BD102F /* PFInstallation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5251FD21A849AFCBA7D4CFF66A674774 /* PFInstallation.m */; }; - 28D77B1E40AF92C0A748B126296A1BC8 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 281C73120A87B602C8A007845677FA4B /* AudioToolbox.framework */; }; - 29166D4DAACA9E28F26B324BCDA69382 /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 871A5A6C8E91EC01AA7DE9ACD7C59412 /* FBSDKCloseIcon.m */; }; - 297DB3DE5178B2FA2A6A10EF99454A09 /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 13314419869A5B70A3A44B8807BA61CF /* FBSDKInternalUtility.m */; }; - 29995A9A0D5FFA5515CED4BEB70AF54A /* PFConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = F31EC4849CD16E6B48A237BDBB0954FA /* PFConstants.m */; }; - 29F51D242E42CD214C63CED9501DA333 /* FBSDKLoginCompletion+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A3A2CA15348284F196D703170DDC0118 /* FBSDKLoginCompletion+Internal.h */; }; - 29FBBB45CB7F81B05EABA6C9DCACCB25 /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 2701725284D1AF7F14D88A53E152A451 /* FBSDKBridgeAPIRequest.m */; }; - 2A2CD77D6E2E7F12B9F3D890A3C9BC0A /* PFURLSessionDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F85984F43D0AE4CBF449F432430888C /* PFURLSessionDataTaskDelegate.m */; }; - 2A45C81A059350612A5BED9F330A14AA /* FBSDKBridgeAPICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 058D4B861CA7EDC7CCC4C7CA51C1EEB8 /* FBSDKBridgeAPICrypto.m */; }; - 2ABACE5B5D7D1688A1D1F8BE1224F574 /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB946FBB5587B0F326E668F21F73F3B /* FBSDKServerConfiguration.h */; }; - 2B2B4D270B2E4878DE1E753C46D2A366 /* ParseModule.m in Sources */ = {isa = PBXBuildFile; fileRef = BAEDA41B80675DA1345DAF6D8F0D4632 /* ParseModule.m */; }; - 2BA6D9AB7D2AAD271967A17F3F924663 /* PFRESTQueryCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = E557E21B22E0695434EA0A8BF54D2A5D /* PFRESTQueryCommand.h */; }; - 2CA9451A1DF7FD5448467C2E46D8B709 /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E1B52EE3E2E3E51117F76E0A815856 /* FBSDKIcon.h */; }; - 2CD4B86CFAF9CB721F853A29189581FF /* PFACL.m in Sources */ = {isa = PBXBuildFile; fileRef = 3065F7EE96D178C185A3FDEA83907DD7 /* PFACL.m */; }; - 2CDE62281BF30CDC37D9B4C4AD493EC7 /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2315D6063FC476611A25D1D15DDAD009 /* BFAppLink_Internal.h */; }; - 2E1BA71176C94E1755B7182A3B0DC8BC /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = C68D370A7D08931EEB8E723D7B8F35E9 /* FBSDKGraphRequestBody.m */; }; - 2E7C5E79D1A09338147DF84B8A9EA400 /* PFObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 35F6EDACB4373C69CDD53204DEFA7B7F /* PFObjectPrivate.h */; }; - 2E810A5D78C5F0A509A666DF78DCB27D /* PFDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = EC5B7EA9E38C9FBEE69F5B9C0BC4A0E0 /* PFDevice.m */; }; - 2EDEF8FFB620FBD7083DDDE379A09698 /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 405EFED49FCFF2D26196C7FDF11D924D /* FBSDKServerConfigurationManager.m */; }; - 2F11E320BB3B775D097764E76EAAFFEF /* FBSDKAccessTokenCacheV3_17.m in Sources */ = {isa = PBXBuildFile; fileRef = 70AE4640E658912F8EA7EB2D84532E59 /* FBSDKAccessTokenCacheV3_17.m */; }; - 2F1D9D6FAE731109B9B920E1C136B4F5 /* PFRESTPushCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 191B469630ED03845A82C1836CBDDF7A /* PFRESTPushCommand.h */; }; - 2F30FD14654236C2AB6410924BAD50F3 /* PFURLSessionCommandRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = 7919FE3E34E4A4E8FA40E5EF771D417F /* PFURLSessionCommandRunner.h */; }; - 2F7CEA1D8FB71E86849259929F76AAB1 /* PFRESTObjectCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 88A728EC723990EFB69B861995E74ECC /* PFRESTObjectCommand.h */; }; - 30FD4EF0B6E65062C47B435ABC219900 /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E36424AEF035DA22DC2D4053D625671 /* FBSDKMath.m */; }; - 3123E5228CAF40E9B6D9E6BC745611D8 /* PFRESTConfigCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B5440ED9524EB35C55FB414229EDA986 /* PFRESTConfigCommand.h */; }; - 3216502FBE7540ECD129D15528EC0A1B /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E92731E3FF7A77ABF62EC441D94D3BF /* FBSDKMath.h */; }; - 33BE00722C951BA132EE6CED6B5E97CA /* FBSDKShareButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D5060E67D251FD6C07A6C8127F60BC3 /* FBSDKShareButton.m */; }; - 33C2196F168DB4DADADB70A0F821A923 /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = F7A8AFB90B055F7CA759BA8AC799303F /* FBSDKGraphRequestDataAttachment.h */; }; - 343D8C1473045CEACF4BD1DA5FEEAB84 /* PFInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 61F77E151A38F4FE7CA5F80B9415A1AA /* PFInstallationController.m */; }; - 347444A5012AA92268504F167C1A9BE8 /* PFUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 766CE3F27E11129F0EFA11C60884ECFC /* PFUser.h */; }; - 35118B7E36A74239A4477C8E27A33FEE /* BFAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB9A90D939500BE1CEC8324CA790C85 /* BFAppLinkReturnToRefererController.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 35582974E5D8C37C5E69CB967330B7F6 /* PFACL.h in Headers */ = {isa = PBXBuildFile; fileRef = EA1EA428E9AD65BC84701D2503ACC121 /* PFACL.h */; }; - 358E6D3F04CDD76CE5217B415314B0D4 /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 14615E83480751392A8DA9C806B52B9A /* FBSDKAccessTokenCaching.h */; }; - 359A4B46CD1A246979E24F1A1D45449D /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 028707090FDF1694249FBC4759635D31 /* FBSDKColor.m */; }; - 359E55D720B39F54548BBE07AA3BBB48 /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = CE802EE1D42445FFBD68FDC5F1B53019 /* FBSDKWebDialogView.h */; }; - 35D4C9D681C02CE17416BCC6C82CC37B /* FBSDKAccessTokenCacheV3_21.m in Sources */ = {isa = PBXBuildFile; fileRef = 610C8660482AAF6DF1ED051F56BA7AAE /* FBSDKAccessTokenCacheV3_21.m */; }; - 36A1B6147DA2DD394552DDB51C37DFAA /* PFAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 71B258E245FD3703F42B32A176062FDB /* PFAssert.h */; }; - 3706025C91B4BB38EAF348E815FD0EAF /* PFPushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = EC749D5306636F8078256E3AD6AEF7C7 /* PFPushManager.m */; }; - 382CAEAD6DA2082FEEF4801B7D083210 /* PFProductsRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F782BE969B5510EDD8EC6903FD236BE /* PFProductsRequestHandler.m */; }; - 3830CBF1147D74E5E5E625F57E7F9D44 /* FBSDKLoginUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 99849B37667DE2EF2F45DD8C3C4E1188 /* FBSDKLoginUtility.m */; }; - 389B345C717A5E21578570628297DE0C /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 13F8602E2C5A9AB96363E1F7B1EFEED6 /* FBSDKUIUtility.h */; }; - 38C6A63050CD48EB4AFD4BB80A9E748E /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = C6E3A3B7C704403CB94D4FEFBBEEF1B0 /* FBSDKAccessToken.h */; }; - 391C0FB05028B2080F37A8AF4931A664 /* PFMutableQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C5C69B84F7FCD1066173E02E04716CE /* PFMutableQueryState.h */; }; - 3968209E908099601F60991D5DE829F0 /* Parse-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1660A7818BE658914CAD0B03854799AF /* Parse-dummy.m */; }; - 398449323354D2CFD6F71B61806B0B13 /* FBSDKSharePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 31A3C807180B3E37B45206DDBBC18002 /* FBSDKSharePhoto.m */; }; - 3A53D0DFE7A5184D13FF5E9FEEB545DE /* FBSDKLikeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D70B316B602A15A89952D1C307A9D90 /* FBSDKLikeButton.h */; }; - 3A6A18C3954C1B80604F12E048173F89 /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 95D6DC3AAED48153E982E7B6CE2ACBF2 /* FBSDKUtility.m */; }; - 3A7F1B841F623E917E9A93108963F45F /* FBSDKShareDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 82DD9C04E2048B93470902C1B226313D /* FBSDKShareDefines.h */; }; - 3B1B1F2120C6124502241F7475BF4A34 /* PFDefaultACLController.h in Headers */ = {isa = PBXBuildFile; fileRef = 84FAF19E9FE280B8C4A65B70B825CD58 /* PFDefaultACLController.h */; }; - 3C2B301A7BCE209D2D1C8E06F9EC8D37 /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = B98993B6CB83A0F4F6836BA48CB8855E /* BFAppLinkTarget.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3CDA0EFB1390A868EEB6A3DB196F882C /* FBSDKShareOpenGraphValueContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 31B2F765DDFA36C75E4D5C6A387B8EF2 /* FBSDKShareOpenGraphValueContainer.h */; }; - 3D7B8490714964BABCD5A24305DB8F11 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = ED7E4C6BDA278A2EACB4205CFC9A3840 /* BFExecutor.h */; }; - 3DE049023FC2163B1D8617B4956CDB32 /* PFUserAuthenticationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F15A1AA5F5C733E8B06847912B9D6C2 /* PFUserAuthenticationController.m */; }; - 3E132B5FEEBF0FAC1F709354042C6181 /* PFConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = CE5A89927105D9819003581D0C8DD06F /* PFConfigController.h */; }; - 3E2734C06AF6883C3CAE5DD479C2D493 /* FBSDKCheckmarkIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = ABD0C19409CB1F24FD1AFB365E60C99F /* FBSDKCheckmarkIcon.m */; }; - 3F7CB366D8B55004DB4320681DABC0D7 /* PFSQLiteDatabaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = F060686A92FC706C2AC04A14E7348F4D /* PFSQLiteDatabaseController.m */; }; - 3F8B0AD29B9B4773DE22580FEAF3E52D /* PFOfflineQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2590AA5D13156556306B9B8ED6AD2D74 /* PFOfflineQueryController.h */; }; - 3FA6DA7F2D09FE5A2E518AA9288302EC /* PFObjectBatchController.m in Sources */ = {isa = PBXBuildFile; fileRef = CCEC1C29226031242E5C3329E7913386 /* PFObjectBatchController.m */; }; - 3FC326BA0AD90AB0A54AA0C84106CA4C /* PFQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = AA6155E47D6756DC20B676A1E6799081 /* PFQuery.h */; }; - 413A19D796947A6E9E28E6026D41E2CD /* FBSDKMessageDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BCF6D36AAFB2D3DDD6EC1074B3664A8 /* FBSDKMessageDialog.m */; }; - 41ADBDD587FCD69FA0E67FA5D01D1D24 /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 62433B094D7197450919571030C74B07 /* FBSDKCloseIcon.h */; }; - 43B53D52EF9B54815FB801838A053E1A /* PFUserPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F20CDC41B5A71F131F228EA1F49FAE29 /* PFUserPrivate.h */; }; - 4429798D21F62121D2D8BD3009BC590D /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1164BD18616ED3B6D9FECCCA99F68888 /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; - 442B88BF438088AE02DEEE713216D7FE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */; }; - 455E7B4B376DA91E5E9FED7A9C668D3F /* FBSDKURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DFAA71E4A500F993C066198D2F6B141 /* FBSDKURLConnection.h */; }; - 4574F0728D51C1DB6F88E0238ECCD638 /* PFAlertView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F4BCC79A27562D8BCE24A7A8DDEB17E /* PFAlertView.h */; }; - 459FB122AFB2F2790C0397A0A1100517 /* PFKeyValueCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D91A3470D21870EAF9AE6AF9B98A8CAA /* PFKeyValueCache.h */; }; - 45BE13346C1088632046978C8150B515 /* FBSDKLoginManagerLoginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = F10C958A391650BD6ABEE08D4D0EF8D8 /* FBSDKLoginManagerLoginResult.h */; }; - 45C370F777F372C29E152959C44D825E /* PFConfig_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D6D13D12D3B1AC6E70E2C85B780DA659 /* PFConfig_Private.h */; }; - 462CCA389937F980A7A1FFE8C27193A2 /* PFOperationSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 75D753CB65D28E2B39894FBCB517D0A3 /* PFOperationSet.m */; }; - 46EB4B43C3D20732F946864A047F91F6 /* BFAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 32F98A56A6F6C88E819D8937E418E312 /* BFAppLinkNavigation.h */; }; - 491495DF4B5CFE183633BB819E705184 /* PFRESTCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 70137F33147D3F372FC44F6E67E63899 /* PFRESTCommand.h */; }; - 495E25F21F1F487E62F73D709FCF5477 /* FBSDKShareConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 10135E293A34F093B13620EB7118F0EC /* FBSDKShareConstants.m */; }; - 49B0E1ADABDDA3C73B2C2A457223BC2C /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = BD030BCD3379D3A583CB4E1BF4757DAE /* FBSDKUtility.h */; }; - 49B25AC78150B8692A15271678A5E544 /* PFQueryState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 880EC96BB6771023E9A8E3DF31FD9310 /* PFQueryState_Private.h */; }; - 4A359027CE24E02E2258B07BCFA195E0 /* PFCoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C839088F1464046F38572AEA46F43237 /* PFCoreManager.m */; }; - 4A50F2B0E4CB78265EAC673D309DB615 /* FBSDKLikeActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = A1D336D237B3B30BCE04A43FD371473E /* FBSDKLikeActionController.m */; }; - 4AB15B4CCF41C8A354FBC5E810F6F9DE /* PFPropertyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = E82368CA082B92ADBB3B0DA8C9D29791 /* PFPropertyInfo.h */; }; - 4AEEEAA20163C1AD6C08AEB1BB090269 /* FBSDKLoginManagerLoginResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B38B03E5392BB79AE3F31D3346D7A1F /* FBSDKLoginManagerLoginResult+Internal.h */; }; - 4B04059FB01CB2A896E9DC7BCD426A07 /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 60D3605114807AAF6515D9AEE323E75B /* FBSDKGraphRequest.m */; }; - 4B2A23038CB7A3FEA1B0818BCC5681B2 /* PFMutableRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 059EBF24A2AB19E48A0FE457DA504A78 /* PFMutableRelationState.h */; }; - 4BBE91F980C399FB90C6D8336639D55F /* FBSDKSharePhotoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E4D2B2CBD42ED6EEDC6C535E15CDB74 /* FBSDKSharePhotoContent.m */; }; - 4BE274866F02B07D87B61B50A405E766 /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = B0708AC2D79933D1B00549B5767FE60C /* FBSDKMaleSilhouetteIcon.m */; }; - 4C0A7707981C891E0EAB882E66D9D7DB /* PFUserAuthenticationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8248A75015CEDF0E471BD2919921A0FA /* PFUserAuthenticationDelegate.h */; }; - 4C192107186E7E1C8AE7BEB83BA0E24A /* PFCurrentInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D30480B8CCEEB19D1DDA7BA271A3BD7 /* PFCurrentInstallationController.h */; }; - 4C1A4B84FC9C07E0C03CF560175A8765 /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = B24C9F82AA8C193E9B823CF102B19AB2 /* FBSDKAccessToken.m */; }; - 4C3F4B69F870FEF1F364EE745DB32219 /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BFBAFABD8F6AE7D797021761B45B56BF /* BFMeasurementEvent_Internal.h */; }; - 4DB17B4ECC016AB59E509AC962A6B8D3 /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 152E9CDD4624FDDC8186CF180C5EFED9 /* FBSDKGraphRequest.h */; }; - 4DFA2BD02F94F030FC91411B297A09F3 /* FBSDKShareKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 99AD28F109954C4513A2B73C3775C971 /* FBSDKShareKit-dummy.m */; }; - 4E07076710363106C424577587997DC3 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61EC245B07BF5B2B8DAB7F7D13FF56EB /* Security.framework */; }; - 4E1E288E9B60710885CB7D0D34371D28 /* PFDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = CD7F12FF98C15CB2FB25F62797543E56 /* PFDataProvider.h */; }; - 4E6C905511C88BA4E3B5B12D8BF1D049 /* PFRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = B524B63009EE535EBA7977E07F2F824F /* PFRelationState.m */; }; - 4FDA2085E5E26B257AB67C19AE7FA00F /* PFEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6424FD719BE7F330C61F5BF5C1214B13 /* PFEncoder.m */; }; - 5254D905261CECDD104D077E9EC0FAF4 /* PFUserFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = EB012283833C25F7392F7395A1DD2D26 /* PFUserFileCodingLogic.h */; }; - 52B04DF7AA6B9EFCAEF5EFE94BD54941 /* PFCloudCodeController.m in Sources */ = {isa = PBXBuildFile; fileRef = 62F86AE15FCDD3BDB2B1432E3A970BAE /* PFCloudCodeController.m */; }; - 52CEE12D512539188DC4951C8466D238 /* PFURLSessionJSONDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 183EE46003EBA5A7639B3EC6AC265522 /* PFURLSessionJSONDataTaskDelegate.m */; }; - 5363AC9672DB64C9118CB994E4A7BC2D /* PFProductsRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 6771448442ACE74CF1DA8462E84FE3C1 /* PFProductsRequestHandler.h */; }; - 537F504A45AB0B342AB6A227E76F8857 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = 7865EEF23330A2B2953AF4D3772DDB3F /* FBSDKBridgeAPIProtocolWebV2.h */; }; - 53B43D61079878D9F3D459CDEEEE0C39 /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = F1386E668F6D9A1E7CF872A02649E498 /* BFTaskCompletionSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 5470F6CE6D56D2390A1A04B25B7709FE /* PFMutableRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = 38A085262915DEFB26BD203072DD601B /* PFMutableRelationState.m */; }; - 54D0B032B4FC86688CE6A288A3D2819A /* FBSDKShareAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 819F604AC9E7F0671221BC885460C546 /* FBSDKShareAPI.m */; }; - 54F586403DA2EFA3BAA583BD615F96C4 /* PFFile_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D131706344B44D723C0EDC00AD04D9B9 /* PFFile_Private.h */; }; - 55549127D15D4850D669B0176FD188AE /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED97321AD7E6EF7BB46B7C26AFD43451 /* QuartzCore.framework */; }; - 557732BF5412A367CA63E4CC0C8E1231 /* FBSDKAccessTokenCacheV3.m in Sources */ = {isa = PBXBuildFile; fileRef = 36275B6CAF874F0A77AECB1185D90A1F /* FBSDKAccessTokenCacheV3.m */; }; - 559B49348B7EB3F4BF4BB0984CF73CC7 /* FBSDKShareOpenGraphAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 88EFF331F662FFFA9E548EA3F9CF8BD9 /* FBSDKShareOpenGraphAction.h */; }; - 55D902D3ACA8F967C1F72B51756E26F7 /* FBSDKBoltsMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 19BCCC920CFF89CFA88D6CDFD23D5044 /* FBSDKBoltsMeasurementEventListener.m */; }; - 5676B33310A2A718632F8EB4599082F3 /* PFOfflineObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CFCFDB608A66C522ECD909465A4CDFD /* PFOfflineObjectController.h */; }; - 56C1BCFCD84D90290B05C0A3874FA0A7 /* PFRESTSessionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 909527AB697DC5F602A8BEE088B28420 /* PFRESTSessionCommand.h */; }; - 57057BB02C2E71110491AE84B3F7B091 /* PFCurrentConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AEC1733825D5A2ABD8D47EE37DC9FEC /* PFCurrentConfigController.m */; }; - 576D18D63A70D92387FB45A0464F20CB /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = EDD5CE9B3424920B0391E833E095927E /* BFAppLinkReturnToRefererView_Internal.h */; }; - 578E66E718A1020A82FFEEC24E7D65BE /* FBSDKSharePhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = B1AF0EAA010A2243D3B652627909B1E0 /* FBSDKSharePhoto.h */; }; - 57D012204E6B29DD1581D7C1EEF0B976 /* FBSDKShareLinkContent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C50076788F9D1661F6F38C60F88F2E1 /* FBSDKShareLinkContent+Internal.h */; }; - 57EC6FF906A92AEA56DD92EA8C662CCB /* PFObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = B23B2A450DD924145ECEEBCAF9F9DE49 /* PFObjectController.m */; }; - 581F100F4AA60AB4541967C135D9DBD6 /* PFPushState.h in Headers */ = {isa = PBXBuildFile; fileRef = DDC74E76E8D8BB53B2921A4D81230691 /* PFPushState.h */; }; - 5838BA1EB3A53944C6789E9DB9D23428 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */; }; - 58ED4561BD7135E9B4531E236A8CAE11 /* PFFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7768B39DF4B1F1A7BFD05D306CAB1BDD /* PFFileManager.m */; }; - 58F1B6573F9C8D331A70BD1B3FD3F894 /* PFHTTPURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = D81D0AFDE6434123DE6ED1DC6F6BB145 /* PFHTTPURLRequestConstructor.h */; }; - 59FEF86CD32941CBFFA63D5F4693AE3A /* PFObjectFileCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D1061A294A0D25A3BFAB4FF7B35C1A9C /* PFObjectFileCoder.m */; }; - 5B05A51BDC32718348A42347B24047AC /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CD6F1D91AE76D53924F066A9E871A4E9 /* FBSDKCoreKit+Internal.h */; }; - 5B36F8CEF9561B1BBC50AE696901B039 /* PFSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BDEBE5111524FC2428EBDDD195197C8 /* PFSession.h */; }; - 5B72C7E51B86A4689017B9B075AD180B /* PFUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 465813B1FEEE434D921E2CE4F2EE3F87 /* PFUserController.m */; }; - 5C41141CD7D1FAC5C9B739AC0E3FE876 /* PFObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = DDB5F6DBCF6A420FE4A916EF00D431E9 /* PFObjectUtilities.h */; }; - 5CAC17E117B95FACAC405917DB40049E /* PFMutableObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = F814D3C39AD10478EC573697C25159A8 /* PFMutableObjectState.m */; }; - 5CAD289DD87697AD723F4E09479CB0D3 /* FBSDKShareConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AF0D88FB66A75671BB0F620D0569032 /* FBSDKShareConstants.h */; }; - 5D13A3534EAC4E005CA23818980CBE9E /* BFAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = 90C4E8263D7D7018E90CB006AE5285EA /* BFAppLinkReturnToRefererView.h */; }; - 5D2753286AEEB426BF28716E486B50E1 /* PFWeakValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EFB00044A9A987E6150AACA4DD28233 /* PFWeakValue.h */; }; - 5DFAE3F0BCBCA31DF32FEF4DF7083137 /* PFUserAuthenticationController.h in Headers */ = {isa = PBXBuildFile; fileRef = D3B177B3970048B89F03D66264703FDA /* PFUserAuthenticationController.h */; }; - 5E2F5A4FC20F2B6F8EBA66D864FBE351 /* PFQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 33749F5083DAFA1A1E3A782C771A1569 /* PFQuery.m */; }; - 5E4C8F31597A078F0C354AB8710A0E08 /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 2198309D71CC7402D65F16A43667E437 /* BFAppLink.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 5EBE74F7A1A99B390EA1D0880AF631D4 /* FBSDKLikeActionControllerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 12585EA0DD81C8296E71552C34E29D15 /* FBSDKLikeActionControllerCache.h */; }; - 5ECA82DED51AAEC5914651A1DC5F4AA8 /* FBSDKAppGroupContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 139C145BDD122109F513A0E27ABD2054 /* FBSDKAppGroupContent.h */; }; - 5F41CFDB8779912A50ABD6A631A2B4B1 /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = 05F2D63CC787EE0E5D2D0F0A73BAF4FB /* FBSDKAppEventsState.h */; }; - 5FE50967209C8A609F2755E712C18CFD /* PFRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 89BE488D5FB2949B04C3B2078CB54ACE /* PFRelationState.h */; }; - 603CD1A9757748FFDF36F25F1442BFEE /* FBSDKCheckmarkIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = ECDD4925923774BEB4574763291AC558 /* FBSDKCheckmarkIcon.h */; }; - 6106389848B734829466DFE8F59D4902 /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 117EE18D9FE3C52EFB3FC22C9026769B /* BFCancellationTokenRegistration.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 62460A52E60F539997171BABD1A6408C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */; }; - 62508475BB6D02884B6F40E981B30FB0 /* PFObjectController_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 284898C95718E6C68579D4FE3FE4B5BA /* PFObjectController_Private.h */; }; - 627E13AAD8DEE6700D48E5D62A19E006 /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = D35218557707E188346D1B5F07861524 /* BFTask.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 62D2342808F35C1D75528BB879DCD079 /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC26A40586455BB8DD6BA95710C3486D /* FBSDKApplicationDelegate+Internal.h */; }; - 63368804039E7C1DD02EE36D4132FECB /* PFURLSessionJSONDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = A9EC065D9C7FD03E63A29BCF6F3A428C /* PFURLSessionJSONDataTaskDelegate.h */; }; - 63591C49938B5E342974E37126F214D7 /* PFObjectFilePersistenceController.m in Sources */ = {isa = PBXBuildFile; fileRef = BE5646EAD6FEC69BB2B3C73D922BED8E /* PFObjectFilePersistenceController.m */; }; - 63A4E5F2E629AEBF6CF597AF608DD3DD /* FBSDKLoginCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = 86858E70734ECDA22030AA8DC8467710 /* FBSDKLoginCompletion.m */; }; - 63D7567007CCC845EDDFCE115D1923B3 /* PFUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = 59024F193667AEB7E18165A249D687E7 /* PFUserState.h */; }; - 6431A5828DAF7B2CFC0A1757F76E5C48 /* PFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E60E681E3152FF31E45D14307138A1F0 /* PFObject.h */; }; - 654A88020DDA963F33B82DC810141C97 /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F213A888C3CDCF3160CB878D06CDFD7B /* FBSDKProfile+Internal.h */; }; - 65B09E455DF352D9F9870A3D64BF6EDD /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = B7F77AE462F767DFBBE7AE020EC34F77 /* FBSDKErrorRecoveryConfiguration.h */; }; - 664A8B6A7BF211DA84A48A07F78A73C0 /* PFInstallationIdentifierStore_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 01653FEFDB182B8F87FD9FA72A320331 /* PFInstallationIdentifierStore_Private.h */; }; - 6695A079915118627BA77F70911E243C /* PFDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B5990F0ACF5AC91C7955E37265F1135 /* PFDevice.h */; }; - 6695FCAF935A626AB8BD9FA286B781A9 /* PFAnalytics.m in Sources */ = {isa = PBXBuildFile; fileRef = 836A8F74A8C94C26BFF6CE7C96CDBB29 /* PFAnalytics.m */; }; - 670C180263184D1D8F68896C964AEE22 /* PFThreadsafety.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B5B7577FF23FD60A87A8C05EA2652E3 /* PFThreadsafety.m */; }; - 684F06D3A55F610E508358633DEAF98F /* PFSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D2B6CA8A26E1A54057C96806C92CBB2 /* PFSession.m */; }; - 694761A5588259C7DF1DA6DA014F5CBE /* FBSDKLoginTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2144DB6EA4F8D23EDA85ED9E54139327 /* FBSDKLoginTooltipView.h */; }; - 696C35B2099E61F0EEA8AA1B1F998C1C /* PFFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 28039FB8496FC037CD115B9256200393 /* PFFile.h */; }; - 69BF53C7FCB3B725A3810153DFC4EA79 /* BFCancellationTokenRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 58081944456413D3F0B0A33BCF9415F7 /* BFCancellationTokenRegistration.h */; }; - 69E21A2908DA39DCE37C40108E4785F0 /* PFRESTFileCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EDAD3C1FD06B798BC04244B0271C9ED /* PFRESTFileCommand.m */; }; - 6AAEAA9C1568F984F7340E7E66CC9EF9 /* PFQueryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 23A2C3297FA5C533D7041CCE18A98771 /* PFQueryUtilities.h */; }; - 6AC7277FB240777B01E8635E9A416979 /* FBSDKShareError.h in Headers */ = {isa = PBXBuildFile; fileRef = 73A2CAB8C0CB0FB451E60B3C35C23B4C /* FBSDKShareError.h */; }; - 6AF8B6F00562BF454E2CD5A10EC0B489 /* PFCommandRunning.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A9CE0394A88D885474139DCEB0E2D2D /* PFCommandRunning.m */; }; - 6B0AA4AFE73F485E0C620DF214D82351 /* PFFileController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4812BF72649E3FB3CABBD5BEE63A124A /* PFFileController.m */; }; - 6B1BF7C8DA973C86CF960C233B5B1B21 /* PFObjectSubclassInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F9F7B355F7CD6C75C1B6D99445E1702 /* PFObjectSubclassInfo.m */; }; - 6B4E4936DD042805436D14527E7B083D /* PFNullability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C9C1D9FAA0AB4875FD3710EBA7C5926 /* PFNullability.h */; }; - 6B7131E140E2CDB8DE40B439FA26D657 /* PFCoreDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = EE30E5F951BC779939012BAD6E3C5693 /* PFCoreDataProvider.h */; }; - 6B79C2AC728C350EDD9926A18D2E650F /* PFOfflineStore.m in Sources */ = {isa = PBXBuildFile; fileRef = BA3BE979C7C897206FAB369D2B6BE3BB /* PFOfflineStore.m */; }; - 6B7F38B71431FCAE3FF85C68745E73F5 /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 19ACD332B62F67CAEE524FC72B49A909 /* FBSDKErrorRecoveryConfiguration.m */; }; - 6C46FDF8859806CA78AD521B2365C5A0 /* FBSDKAppInviteContent.m in Sources */ = {isa = PBXBuildFile; fileRef = E9AE56E8A69F187F40367169FB36AEC6 /* FBSDKAppInviteContent.m */; }; - 6C4BDD9625C03F8ED09938E299167C1D /* PFRole.m in Sources */ = {isa = PBXBuildFile; fileRef = 7127C42346F2C6E7C6852278A7D91999 /* PFRole.m */; }; - 6CBF07685287382B192F73AF43D9072D /* Bolts-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CC6FCED7A91E155259651DBC0B5262D /* Bolts-dummy.m */; }; - 6CDB057F1E455322CF133BEBDBD26FC9 /* PFHTTPRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 57991A4FD66FFD7B27890292A9F881D8 /* PFHTTPRequest.h */; }; - 6D8069186AA68903B3B1E3A9FE645FC7 /* PFConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 831FFA276E384FF81912831665D2ACD1 /* PFConstants.h */; }; - 6D9129F858C5DA6A5809DACF615D023F /* PFAsyncTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = C6FDA527EF165EC2D2CA5E44A20F1D00 /* PFAsyncTaskQueue.m */; }; - 6EC3D0CE07BC83907B8AB131C6FEA9A1 /* PFHTTPURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 55EDB925355F44E5F4CD0589A4D15596 /* PFHTTPURLRequestConstructor.m */; }; - 6F1007ED622C28520AD82DE65F64804B /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 8918E95EAEEA3883B0958070A6D63E5B /* FBSDKPaymentObserver.m */; }; - 6FA12986ECFD54D5A141EC98D1C3E2A9 /* PFUserConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 89771FED47F0BB242E7B85A73CCEEE3A /* PFUserConstants.m */; }; - 6FBA55245D921C73581CD3B4058073CB /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = B739AEBEEECA5F2836D6FDE87E7DAD2C /* FBSDKAppLinkResolver.m */; }; - 6FD0C9E25E96D683FF939A03F5ADBB6B /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = B152B331790608828B3D3221EF8BB3FA /* BFAppLinkReturnToRefererController.h */; }; - 705709FDEDB3A24F1833B641E9D87460 /* PFPushController.m in Sources */ = {isa = PBXBuildFile; fileRef = E40D5277A9FEE4394113FE40E8457989 /* PFPushController.m */; }; - 711828A478DCB7D32EFC732598558216 /* PFInternalUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 92F1167BDB41D6566E2A2BD962A7D42F /* PFInternalUtils.m */; }; - 71AE845ED581E71888B1FDDD5D697A2D /* PFErrorUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = D76C0DEC86D6F664834D44A8082E5A6D /* PFErrorUtilities.m */; }; - 7247C89530C6427A67956C925B68F4D8 /* PFAnalytics_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 298BE9F2710D86C3196C6850E44C968A /* PFAnalytics_Private.h */; }; - 730F6107E3FB55439CBF055292FD1211 /* PFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 862C4A36A947B7610B400462C749359A /* PFNetworkActivityIndicatorManager.m */; }; - 733822208BEBE0C468B43F2DD6DD56FA /* FBSDKLiking.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AFCCD081D365FBB6E1CF56D2CB3AF34 /* FBSDKLiking.h */; }; - 738653101EF3E4FD4A8E2B42B20E1913 /* FBSDKShareOpenGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 1630835145A45B1AE1B5731F89DE41E1 /* FBSDKShareOpenGraphObject.m */; }; - 738BE7380719F5A074B833B92FB64E83 /* FBSDKLoginTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = A59F5C8E499F158AF013FD0A4D779E33 /* FBSDKLoginTooltipView.m */; }; - 74E62FDCD9AC705781E45A9B7B851B2E /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B08BB513ADF56CF82CFFF7B821CEAB4 /* FBSDKColor.h */; }; - 754D8A2093AC1500714A7A3C741F0DD2 /* FBSDKSendButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B56BC63A46E0C60E1F65E1E43FF3D2B /* FBSDKSendButton.h */; }; - 7588F6295488C1FF35A36B4D597B0291 /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 74F31D0EDF2CF7E7AAD77F746837D59A /* FBSDKBridgeAPIProtocolWebV1.h */; }; - 75F6BB7AACADCF0FDF54458E1FDBF6C4 /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = E7679EFCB871C367D45B87FF04498A5E /* FBSDKAppLinkUtility.m */; }; - 75FC76263B96684BE311B778C695D7A8 /* PFMutableQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = 6959DDF11EB0DBA886C8071FA6536544 /* PFMutableQueryState.m */; }; - 769DB7E377D5E818B5EB613CC5E902C9 /* PFMutableUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = 7312C6904E7BD6A83FF99B8A93855A01 /* PFMutableUserState.h */; }; - 76B02A59FD2C1AECC0387DB93BCC94EF /* PFGeoPointPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = E91945A365E97AE157FD90FB6032742D /* PFGeoPointPrivate.h */; }; - 76BE06A3ACC6F8D20AECC3C947176E57 /* PFSQLiteDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 442BC9945073FD644D98DC6A0BDCD0D1 /* PFSQLiteDatabase.h */; }; - 77229C67477828C6DBC3AD1BF1962BEB /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 985038F14FE8FC23678ED1F7DDCF796A /* FBSDKTestUsersManager.m */; }; - 7763AB0E9ED90508B19469D1BE4E1E5D /* PFURLConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = DACF075638B9FC0CD730644C26FB71E5 /* PFURLConstructor.m */; }; - 7853E04B2781F9D5247FE36F97DB369F /* PFRESTUserCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 11EFC989CAB132B6D48E25A50D67FBC9 /* PFRESTUserCommand.m */; }; - 785EF8A13CF87CF8086D4653B1CE826E /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 722DD6778B0569325E2893B96510468D /* FBSDKCrypto.m */; }; - 786E305F1780B943C505B7034C654FC0 /* PFURLSessionUploadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 98FE22DC82B2E9780B8345DD11E25245 /* PFURLSessionUploadTaskDelegate.h */; }; - 78F3C290F4ABB6382D55AC7EDDB85873 /* PFCommandURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A2EC2506D904AB39ACE6AC2490368BC6 /* PFCommandURLRequestConstructor.h */; }; - 79366269D4BA5E9EC208D0AFC2C43E99 /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = B674C021D7D553529D1868DE6724ACF5 /* FBSDKErrorRecoveryAttempter.m */; }; - 79A776D0DC41D257DA6823D978C535E0 /* PFObjectEstimatedData.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E0284BB2426357ED603C689888DD262 /* PFObjectEstimatedData.m */; }; - 7AE9B5B1B9C84FD8D5B6D314F73888A8 /* BoltsVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AE219E0D5DA9BEAD01E3B7B78A5B608 /* BoltsVersion.h */; }; - 7B518BDCB9857C22C76D89C15E4571D8 /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 73DFE94251B23509786E450651A48B90 /* FBSDKTypeUtility.h */; }; - 7BA68DEE96B757C492E6BD77B94620B7 /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BD744AF804A9F5355C68DFD41621893 /* FBSDKProfile.m */; }; - 7C702D387E65E1ECA41D75A1AB059FAB /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E0D7EF42282EAA7CA554AA254D0F09A /* FBSDKErrorConfiguration.h */; }; - 7CC48DD2498D412BB8502EF9D7D0F144 /* FBSDKShareKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F882D75C1CCE50E50D3030EB284FF29 /* FBSDKShareKit+Internal.h */; }; - 7CD74FEC73EFB3EEDE052E5444DE4DE7 /* FBSDKLikeBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 47A4C203E7867764F3E284630A0268FD /* FBSDKLikeBoxView.m */; }; - 7D2D3C0A68A7EF6E5A1148C34C24413B /* FBSDKShareVideoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 69B7181C6F142ED4F0C684EC984A9CFC /* FBSDKShareVideoContent.m */; }; - 7DBCC0E643223DE9DBA754562F5134E4 /* FBSDKShareDialogMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B567AC8F39B4A53D38DEA73D3B7AD4C /* FBSDKShareDialogMode.h */; }; - 7DC6C578F01533E6B939916438FCF022 /* PFAsyncTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 46CF33218A1E3A8EEBA12DF120858641 /* PFAsyncTaskQueue.h */; }; - 7DD39755BB6F240522A6235B4E218DF0 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D7982BBC669B81B73D2DCE2C8D509E /* FBSDKBridgeAPIProtocolWebV2.m */; }; - 7DE52253AC3B77AD116C7B85E50C7C19 /* PFMulticastDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B1F0581CF330D76A0A76C63A642DD8E /* PFMulticastDelegate.h */; }; - 7E7BB5AD7A49C149712AFC678C255451 /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = AE6E4E1A35E5A1578967DF2865545D99 /* FBSDKWebDialog.h */; }; - 7E9FC7FDDDB432095AF34F79FCFCE9CE /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 94DCA4C48ED2DED1795550D3340FAB93 /* FBSDKAppEventsDeviceInfo.m */; }; - 7F55E76E58B983036FF0856D12318766 /* PFObjectFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = D20A9EB54DFD244FBACB2A29830F5CC3 /* PFObjectFileCodingLogic.h */; }; - 7FCD4FF353DB6DE536D86717C65C0204 /* PFFieldOperationDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F4F3195CA169976EFA27638B5893094 /* PFFieldOperationDecoder.h */; }; - 7FEC1DED15AE9E52C32A206F1BE40115 /* PFPushController.h in Headers */ = {isa = PBXBuildFile; fileRef = F496DCF5311E5B908DE4C4911C062A01 /* PFPushController.h */; }; - 806BADC3119A86AF66B04B8C7AD36832 /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = CDD73DC7AE87074EAEDF09FACACF5104 /* FBSDKBridgeAPIResponse.h */; }; - 80FB4A5ECD5FCA885D5EF27C6A1E3FC8 /* PFOfflineQueryLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = B49C8BAF9D69B1E6568421F922FD8F3A /* PFOfflineQueryLogic.m */; }; - 812E20ED57C5B81B34AB5CC8BA24441D /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = 0817A1706D8DF4000848B118C9DEE924 /* FBSDKKeychainStoreViaBundleID.h */; }; - 816A183678595D414E0D7F57F291CA7C /* FBSDKLoginManagerLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = B0E053D50F29084CF7D3D802F1517C70 /* FBSDKLoginManagerLogger.m */; }; - 8188B7DDD81BFD211F628D8EFEF3C300 /* PFRelation.h in Headers */ = {isa = PBXBuildFile; fileRef = F409B315AFACD2CDD448DFD6401146FC /* PFRelation.h */; }; - 8189451E0D572A123365625A27B40734 /* FBSDKShareKit.h in Headers */ = {isa = PBXBuildFile; fileRef = E0B83933AD135BA53C1F2A1BD657DA5A /* FBSDKShareKit.h */; }; - 81CFB279DD69C8D328DF48AE00E8A1F6 /* FBSDKLoginKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DEDE777646928ECFED937EF0600521E /* FBSDKLoginKit+Internal.h */; }; - 823183722B03E811E5B712BF5182521D /* PFObjectBatchController.h in Headers */ = {isa = PBXBuildFile; fileRef = B02C63468CE0F7F2C99C5865466B0C19 /* PFObjectBatchController.h */; }; - 824352FF2399FD1CDC6D6D817685FA33 /* PFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D62A4BDE3836C5D2CBA3510FF1F7F03 /* PFNetworkActivityIndicatorManager.h */; }; - 837E9C27712156BDE9D280EE4545D276 /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = F7D4CB9368BD8EF802C21EAB26119104 /* BFCancellationToken.h */; }; - 83BD07623A7905682A5066B1C1CEDA26 /* PFEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = CD984CB60274EFFD2FC6F488DBADE377 /* PFEventuallyQueue.h */; }; - 84245166731C1ADAFC84852A605AA4DC /* PFCurrentInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 316A644BD3E063F9A440F7F164000FB8 /* PFCurrentInstallationController.m */; }; - 8453AD5FDEE1A34114BC10032F7A8278 /* FBSDKLikeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = DD84DEFBFCE10B1818486E633AFAADD3 /* FBSDKLikeButton.m */; }; - 847247B05193D07DE43AF03B10C8F65D /* PFInstallationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A4845D88BBD0E2BF9238DBAC29792FF /* PFInstallationPrivate.h */; }; - 84868D53AABF24975E37AACB96FBA295 /* FBSDKShareDialogMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 6634E8525E51E4FF70C26E49F54493FC /* FBSDKShareDialogMode.m */; }; - 848D32C1394A874780205EE7808526BD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */; }; - 84D8529D8524E39A936AED30BDD14522 /* _FBSDKLoginRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 27330F2C59009D2CCAFFFB3332D30BE4 /* _FBSDKLoginRecoveryAttempter.m */; }; - 84E80F23894171F4A76DF54F420398E1 /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F7C92F85D64501768D125A46270422E /* FBSDKBridgeAPIProtocol.h */; }; - 8552B06A7BF3E6F606D6D44E22C7D940 /* FBSDKLoginManagerLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F5245D9C22CC21BB136BDC2AC4955ED /* FBSDKLoginManagerLogger.h */; }; - 8587D45B790E4579166CA011B18A0083 /* PFSessionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 81FCF70E549275BAA5747573A561C836 /* PFSessionUtilities.h */; }; - 86249EC7787535A0B0ECEC25B48D8635 /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = C5C45B89F5B6C19209EDAD31A79E371D /* FBSDKProfilePictureView.m */; }; - 86E29A0B163945AD1202BBBA3B932D9A /* PFPin.h in Headers */ = {isa = PBXBuildFile; fileRef = 279CEB44F83E8E0913B50FCE426C934D /* PFPin.h */; }; - 8700477C4DEE150BBA6B87EEE9528A44 /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = DE7C9DBCE49E309207C0F6DBBD2FC077 /* FBSDKAppEvents+Internal.h */; }; - 8856F450B33FE10B5CDDBB7075D13156 /* FBSDKLikeBoxBorderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FC77C0223C08FEC9F0BF799243D8F4C /* FBSDKLikeBoxBorderView.h */; }; - 887427914859D11CACBBC4A0C9858A42 /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = 260655407F577D163F7D60F3E66F4979 /* FBSDKViewImpressionTracker.m */; }; - 8A015CCBBB5F889F2666DB3E0DEC8AD5 /* FBSDKLikeObjectType.h in Headers */ = {isa = PBXBuildFile; fileRef = B410DB6A268571CB00AE7C7B191AFC4F /* FBSDKLikeObjectType.h */; }; - 8A0A3B0961EA769D2720A9B3FE94AE94 /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DDD6BD25FFFCF1D98AD2C5B68EED6B5 /* BFURL_Internal.h */; }; - 8ABEC82F977A95FF8798858A869CEDC8 /* PFInstallationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 02460856BC3622AAE8075AE3E3FC91A1 /* PFInstallationConstants.h */; }; - 8AC64D13C6DE5D63254570F33C7B7C7F /* PFPushManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7631CDE057643A0E17ACCC4DAF8BBF13 /* PFPushManager.h */; }; - 8ACD828FAC9F8124538B1B6E6671E248 /* PFConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = BDD02728E44328FBED3ACBA8A76F69A2 /* PFConfig.m */; }; - 8ADDFE574B996E273961DAA1620E9613 /* PFFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EA792EC53DF7A8B5DA6169AC702E322 /* PFFileState.h */; }; - 8ADE524A64AB7D81516BBFCC74B49351 /* PFProduct.h in Headers */ = {isa = PBXBuildFile; fileRef = 991B6A74EED7A47CCB0295E345AE6B36 /* PFProduct.h */; }; - 8AEC4F3B27211DC55A16547DA586384B /* PFWeakValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 786CD905662A5B821B7FBD479582CBCD /* PFWeakValue.m */; }; - 8B0114F4A39914DDCDB3C472DB61C1F9 /* FBSDKAppGroupAddDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 45C436A6EE477BC43DFD0B674BD6F99C /* FBSDKAppGroupAddDialog.m */; }; - 8B0281F30C94CC8589630EAF4D28A680 /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C6A832BE98AC2513DCF0311F799732F /* Pods-dummy.m */; }; - 8C157133D56BF238386C33CF523E7D47 /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = FA75267D4B40F3809876DEBF3F4D299B /* FBSDKDialogConfiguration.m */; }; - 8C6A3E1F148F5CEAD72A1BBF59B974C1 /* PFMultiProcessFileLock.h in Headers */ = {isa = PBXBuildFile; fileRef = C04006B24886DEDB86D8AA796A957464 /* PFMultiProcessFileLock.h */; }; - 8CD66ADBF206FA36EEC1BB63D4052E13 /* PFEventuallyPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 44B6337C2B9832B7597DF729DE1D5419 /* PFEventuallyPin.m */; }; - 8D474DFB1ECB14E03F575ACFE0B26538 /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BCC4C05D309B44EE5FE3BCBCEF29FF9 /* FBSDKServerConfigurationManager.h */; }; - 8E07A844FBC59F8B9D73FAE12E02750B /* BFCancellationToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 93A5F67195E8183EE3FC797F98DC5956 /* BFCancellationToken.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 8E6C7B0C25223EBDB7C6604C6A2D3BCF /* PFFieldOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E85B0B9859FBCA9E74C55E1211ACE9A /* PFFieldOperation.m */; }; - 8ED4BE044EF21C643B3E79E21ECBC6A4 /* PFMulticastDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = FB4DE0ABD27878F01E20805AF9C9D6FC /* PFMulticastDelegate.m */; }; - 8FB0A448CF0BE75E167A5B4C4E353D90 /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CF8B294E2A7B44762772B83EB5F37585 /* FBSDKSettings+Internal.h */; }; - 8FCAFC45A1ED8A43375A66D15276E686 /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = E8E7C875C6D9ECD9F2B37DCBDFC9B2CD /* FBSDKAppEventsUtility.h */; }; - 8FF05DB71CAB42D4094135A93E77060C /* PFAnalyticsController.h in Headers */ = {isa = PBXBuildFile; fileRef = E8397C0E16E68CA9A74B4BBDED56C9C4 /* PFAnalyticsController.h */; }; - 9003C22E2E869AAE17A8ED51D8FD8D80 /* PFMutableFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C44C18F2ACA338C07999CAF4BDA46E4 /* PFMutableFileState.m */; }; - 902F3630EB8D3ABB9D7755CCDC17152D /* FBSDKTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 042A2244DF3B5F5C519B2D9711580B50 /* FBSDKTooltipView.m */; }; - 906E067419EAFC22D23DA657F3CF9693 /* PFLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = E2BB5322373C1D0A089D6447434E2F01 /* PFLogging.h */; }; - 90ADE70B8B9EE69E84421A5C857638E2 /* FBSDKLikeActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = ADEBB6BE4E6B7E95DBD5EA0F8198E2A6 /* FBSDKLikeActionController.h */; }; - 91B0FB2808205072D601D935ADC386BE /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 31A715898F55241C3204E5E8C95A3963 /* FBSDKAppLinkResolver.h */; }; - 9200159DC5F8143B827C1F843DF2B710 /* PFObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 76C526DD236D0ABDBBDEEE2285B501CC /* PFObjectController.h */; }; - 925B485469CF179340D855CB22857291 /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = BB64BAB52FC9332856CA17F5ECED7115 /* FBSDKMonotonicTime.m */; }; - 92A1C24F9EDE76ED654923B58AFEC34E /* PFPurchaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D0BD04081C3A718EFB63F79C43FA7C0 /* PFPurchaseController.h */; }; - 933C5D203D10D0FB3205B0FC2DD744F1 /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 284C3412CE156CA93B1FBA2AB890B118 /* FBSDKAppEventsStateManager.m */; }; - 93A3540505C0BE9A4983E4015D5CACBA /* PFJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AF90E9A2D2424F9A61BF41682FAB99A /* PFJSONSerialization.h */; }; - 949E9BF062D5BD5F99F83D574EE7350C /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = FD0EBED5DD6CD15CFA67F054ABDCDD72 /* FBSDKDynamicFrameworkLoader.h */; }; - 94AFC2671530505C987790F5F3FA99FC /* ParseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A4FA890C6CF8DCC5C56BF4D23B3D4EC0 /* ParseManager.m */; }; - 94C2E9AB52E39C8B5DAC91BADA725ED5 /* ParseModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 9826F9EF99C989F23C8760ECCF731EB0 /* ParseModule.h */; }; - 94D0BE43FF35618240E63C0D74C781CB /* PFSessionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 48E607B7C98F48C601E0A8EADDB4199E /* PFSessionController.m */; }; - 95A8EA311AE92357D4704E6B640C5AB6 /* FBSDKAccessTokenCacheV3_17.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B229FDD88B02BA431226CF6F4C2C557 /* FBSDKAccessTokenCacheV3_17.h */; }; - 96118F82F75A07742E95B976664396A1 /* PFFileDataStream.m in Sources */ = {isa = PBXBuildFile; fileRef = CA713D1D956929857B5573815E8B700A /* PFFileDataStream.m */; }; - 962AF9D2ECAFBB82577BC5870B99A5AC /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = D200CBDECE639A7FCC23CBA4AA40C197 /* FBSDKProfile.h */; }; - 96BF60A7CC6C1DA5E3150C952FD663E4 /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = EF543883C6E0CD2FC7B4528B2C70C269 /* FBSDKAppEventsDeviceInfo.h */; }; - 96C0654FF3DA4CA52E8645F5906D7A4F /* PFCommandRunningConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AE3A1E847A23D89FFD2AA9F7A96D994 /* PFCommandRunningConstants.h */; }; - 96C59365E57E7DC8F92C37E3FCC8664B /* PFTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 55D18B6A42464EFB5D7AC64708485ECF /* PFTaskQueue.h */; }; - 974DCD6881C74FDEAB446E947479EF47 /* PFProduct.m in Sources */ = {isa = PBXBuildFile; fileRef = 0368EC0DFD738EA132782A0111A76AD6 /* PFProduct.m */; }; - 995DC7CA4C2115CC77A9458E848D53F4 /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 25820261B6FF28709163579438BE7D8E /* FBSDKPaymentObserver.h */; }; - 99CE3270C4F73E2A162321E133F2F19C /* ParseManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C923F6FD789CB2C9F384405DEACE388F /* ParseManager.h */; }; - 99E5BF53E83D7C3F6928CD8A16ABAF21 /* FBSDKTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = C7984134808FC31A9208D31DFE42B6AF /* FBSDKTooltipView.h */; }; - 9B026B617E683F9C03E8BD29B6F424D3 /* PFRESTPushCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EB6555F0750836E4B76B0C08567E4F7 /* PFRESTPushCommand.m */; }; - 9B122332AEED13957E029A90E6674FA2 /* PFSessionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = EB6A4EB9D35740998C6D23740E612D5C /* PFSessionUtilities.m */; }; - 9B860FF944EF4A439B373EB2E80B97F3 /* FBSDKSharingContent.h in Headers */ = {isa = PBXBuildFile; fileRef = AE99A458700FBFED7B17F712111F6238 /* FBSDKSharingContent.h */; }; - 9BC3D340FB7797EA087856FB677E10CA /* PFMutableUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = FD87D91BF55E5388FB9F03A3ADE8B577 /* PFMutableUserState.m */; }; - 9C23BE6854C26A25FF7BD9A4212C6D31 /* PFDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DE4686D573E489CA8763A9AFF69E884 /* PFDecoder.h */; }; - 9C64E7360A956C3AEEAA371F1F48A572 /* PFUserConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 492800396C7B66131BE664D3B6D93D67 /* PFUserConstants.h */; }; - 9CAEA2F3FC5A259EC3F12BDECB612EBC /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = E5071678A9FFE38B25984E1DE154CA86 /* FBSDKAppEvents.h */; }; - 9CE0C07218A736188343B4DA20DA39FD /* _FBSDKLoginRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C899258C0EA110D85E7B48171B6432 /* _FBSDKLoginRecoveryAttempter.h */; }; - 9D4B4179D22A7E72ADC746BC9867F19F /* FBSDKMessageDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 00317664E706475AA83526A30F2CC298 /* FBSDKMessageDialog.h */; }; - 9D78ACDBFEA0C1BE2E92617B281FBA83 /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = A4776CCEC32BF011FC6F64F822052FDC /* FBSDKKeychainStore.h */; }; - 9DBD52A2A42B56822E76A986EA118AEA /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = 870C15BDFACBF06245D3E708FB7C0973 /* Bolts.h */; }; - 9E5B04ABE2C83DB36FCBDF9DE6F924FF /* FBSDKAccessTokenCacheV3.h in Headers */ = {isa = PBXBuildFile; fileRef = E5DAF6DF08F79AABABEB6DCD99347D5A /* FBSDKAccessTokenCacheV3.h */; }; - 9E5D86931310C44A629DA4BC6BF87A3B /* PFRESTObjectBatchCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 068DBD6F64C945AE062AA96733338643 /* PFRESTObjectBatchCommand.m */; }; - 9E63D3D328F8688E3A110A7471A76EE0 /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ADDE928DDF753FD23E0044BC7A4C15B /* FBSDKAppEvents.m */; }; - 9E7E70AC3527DE4F9E286082227EF521 /* PFRESTSessionCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 11CEF84C21F6B2D0803987B5694F5F14 /* PFRESTSessionCommand.m */; }; - 9EBDAE34F4A8CB5649E184EE8DA92133 /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F4B36F14A355821D7E2FB123300DDCD /* FBSDKGraphRequestConnection.m */; }; - 9F23B3D99743F33A718A80E8A6C3C7B6 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = EDB642C66D82496889ED7B13E6DBA70B /* FBSDKBridgeAPIProtocolNativeV1.h */; }; - 9F9D41E0CF8CAD2AC465F6C4FFCE1CA7 /* PFPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E6F860380815B6D4EE77B3B136F98BB /* PFPurchase.m */; }; - A05B16705DD63CA337527EC7129CC5EC /* FBSDKMessengerIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 43C58CE6DD6DD31ACA6BE1B0D257427E /* FBSDKMessengerIcon.m */; }; - A0626297F5A1CC35F90FD5E3051C2133 /* PFKeyValueCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B1F9A5CCDA0552CD62CAD6A9C8018543 /* PFKeyValueCache.m */; }; - A086C2615B2785D481DA7C4D34F4E624 /* FBSDKShareAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CF322B34A45C7374C6ACB86C793A0977 /* FBSDKShareAPI.h */; }; - A0A59E60CF207E84E074F3AC90546799 /* PFOfflineStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 6510524988D56D1E9B8FC5C067C04B9A /* PFOfflineStore.h */; }; - A178F9052CF04F9A910455EC7A7ADB93 /* PFInstallationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = FF936D8AE384A20B5E843F162679EC85 /* PFInstallationConstants.m */; }; - A1A51D34B7F1ACAD09DB4C718A4848CB /* PFSQLiteStatement.m in Sources */ = {isa = PBXBuildFile; fileRef = 34AD764CE1E3CBCA034D21A0B4EDFC69 /* PFSQLiteStatement.m */; }; - A1C17F0CCAFF80E954A67A06B623F1D3 /* FBSDKShareVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A6FA7C694C6B40F59512851C968703D /* FBSDKShareVideo.m */; }; - A1C73296132580A14556BA586F455433 /* PFObjectFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 40FC928384A8D2A945845B0EB6281D6C /* PFObjectFileCodingLogic.m */; }; - A21EAD6DC6E64D1DDEC818E884B8681C /* FBSDKAppGroupJoinDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F95877AC2E55BE1D53E55F4938D652C /* FBSDKAppGroupJoinDialog.h */; }; - A4335A60A42ACE37E88A5ED18002F7CC /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = EC5644397B97AA444E77A9EB9CFC10E5 /* FBSDKBase64.h */; }; - A4A60E33AFF6B461A043C413D1B9D4E4 /* FBSDKAccessTokenCacheV4.m in Sources */ = {isa = PBXBuildFile; fileRef = 3708EBED7F7E311067B7CCF801145621 /* FBSDKAccessTokenCacheV4.m */; }; - A4C607C623C9CA43A597968B0DA3A72C /* PFUserFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 19D77D49AB34F2DECC9C970A88D920DE /* PFUserFileCodingLogic.m */; }; - A54FE2B3F69ED6C33AC71A8B49360D44 /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 93BC124A0CB4D829CA7468516B1F1877 /* FBSDKServerConfigurationManager+Internal.h */; }; - A62FFF4A04995FA43CC038DBE8DB7979 /* PFObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = 583552D355C9486BC5473CB54B561686 /* PFObjectState.m */; }; - A6D342C48B8AA4EBF44869A4F34C4209 /* PFHash.m in Sources */ = {isa = PBXBuildFile; fileRef = 03E70A5437B075C14B5508D5BFCEEB28 /* PFHash.m */; }; - A73836C245FAD1D78661404A365F13A4 /* PFCommandCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A9B29CACB66253CAD26C692CD8B3617 /* PFCommandCache.h */; }; - A7C11E5DBBF673F5014C251AA00BB71B /* PFPropertyInfo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BC74937463C566796639512770F35CC /* PFPropertyInfo_Private.h */; }; - A850527F1ABF982385E234283E348456 /* PFLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 071B86E1C2AAD3B5091748D714423E5B /* PFLogger.m */; }; - A87116EDAB375BCF34DC687F08B51081 /* FBSDKLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D1AB96A6A99AA8FC62B50D926542778 /* FBSDKLoginManager.m */; }; - A923C01A3CCA7B26A0756D7BAF9E0D3A /* FBSDKShareOpenGraphAction.m in Sources */ = {isa = PBXBuildFile; fileRef = D6C799561791E9883CE1451D688B8D98 /* FBSDKShareOpenGraphAction.m */; }; - A92D8896D37E1D574BA51B6B4762E648 /* PFCurrentObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = E195893EFAF6B4D88041C06F7BD32C88 /* PFCurrentObjectControlling.h */; }; - A9B1A69195737600121B362FF71C4482 /* PFHash.h in Headers */ = {isa = PBXBuildFile; fileRef = AAD6D82FB30E66F727F7DF8841439C41 /* PFHash.h */; }; - A9BEF137DF5768708869D3256BFAD63D /* FBSDKAppInviteDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = ED36E7E1EEBAAFFA740A30B12242CA27 /* FBSDKAppInviteDialog.h */; }; - AA1E39ADA454257B308C615115763491 /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B91208A301E53477B2B4CCCF31C14AB /* FBSDKServerConfiguration.m */; }; - AA25FED1F75847E0B88021010EA77F7E /* PFInstallationIdentifierStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 32CCE778F285747138A0725BD9D1B019 /* PFInstallationIdentifierStore.h */; }; - AA6E969F0ACDA126C12E755EA39EAAC3 /* PFFileDataStream.h in Headers */ = {isa = PBXBuildFile; fileRef = FC1407E7292FD644B5484C9433F82629 /* PFFileDataStream.h */; }; - AB2143E64A033D3593F4B6798DB0947E /* FBSDKLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9390C92F1CE8467A8432506858B8172F /* FBSDKLoginManager.h */; }; - ABC7A9122C527CC454683E0F3003AC5E /* FBSDKMessengerIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 860483D9361D7525A3473BBEBF3BE90A /* FBSDKMessengerIcon.h */; }; - AC12EBE82E427B9B5608A32FBE398FE5 /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = B2B529CF2F3BA08A19036180A7792FD5 /* BFTask.h */; }; - ACB80FF5C9696C3897C2DD20D18FB650 /* PFAnonymousUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0773FB1AEB768DE82BEE27A777B659A1 /* PFAnonymousUtils.m */; }; - ACF041AF7954A94B73F36771017E1433 /* PFObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = A4C16395183819CC55902C187BBF3588 /* PFObjectState.h */; }; - AD80993512EDCDB6BB0D8F2B45D8EBBE /* PFQueryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B302392664E4BE2747A482E82F65D97 /* PFQueryUtilities.m */; }; - AD9E637F9642485C7EAB40ED17FFD6EA /* PFDefaultACLController.m in Sources */ = {isa = PBXBuildFile; fileRef = BE9F0035470C161A4516449709B0853A /* PFDefaultACLController.m */; }; - ADCBD1E21EE29D29239129FD8025C57B /* BFAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = AC06B3B87B029CEA32581C7CEB6C05B0 /* BFAppLinkResolving.h */; }; - AE7D44B9963E439D25BA557117AAB3FC /* PFCoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FEB5063ADD4EFE8EFFAD97BD5C4D8CF /* PFCoreManager.h */; }; - AEF25B93963113F53E8832A09D77B905 /* PFMutableACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = B5B0B7503DC660F1E57F478887AA177E /* PFMutableACLState.m */; }; - AEFB1B90E74FD8578D51CC4A5107313F /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CB8B17646606A4BA50309E5B9768E26 /* FBSDKMaleSilhouetteIcon.h */; }; - AF5359F040D97FC805477208E7911018 /* FBSDKGameRequestContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 37E59CBA1B5E09F3A99384CDBF968875 /* FBSDKGameRequestContent.h */; }; - B08B8E79E38086479F6B2202EE6E67B7 /* PFCurrentUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4612BDFDA5045AC0EE6F998D18D57F77 /* PFCurrentUserController.m */; }; - B093EFF1E2ECE82CDA6B6B9B1E8A0B66 /* PFSubclassing.h in Headers */ = {isa = PBXBuildFile; fileRef = ECBD1659924D8AA95D83F0EDE40C2614 /* PFSubclassing.h */; }; - B124A8929C4F461DBC3D5043685F2401 /* FBSDKShareDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 396620E59D63358DFBB3310A8B068287 /* FBSDKShareDialog.m */; }; - B292958ED03BC952956FD8A4ED79E0DD /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BF0534631608C66AF55C61D37D30B11 /* FBSDKKeychainStoreViaBundleID.m */; }; - B2A40C992E571AFD66738150516F47EF /* FBSDKSharePhotoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = AE6F6B94AFE361FD0E18CCB6B75A0DE3 /* FBSDKSharePhotoContent.h */; }; - B2BDC7947CCD674D3AB2E9C362FF6D7C /* BFWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = D5255CB6CDF2850371E17AAA2A1AB6D7 /* BFWebViewAppLinkResolver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B30588470800ED65039D4154015DDD6B /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = B8734BB39E4CEA7D82E5591EDFECB01E /* FBSDKError.h */; }; - B3149A88B5EF9D591100060E4577FFEC /* PFConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = C4D9795941DB7420B09A2A295B29310C /* PFConfigController.m */; }; - B32B1CA0020B31D043806BC3FEB9A0D5 /* FBSDKSystemAccountStoreAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9278C0A565B9938261216A43EA0177CA /* FBSDKSystemAccountStoreAdapter.m */; }; - B3573F43A0E654ED6253ED7CEB106C44 /* PFAnonymousUtils_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 33AA341F9AFBBCA79F1F6E89A0571479 /* PFAnonymousUtils_Private.h */; }; - B3B89D2A7B994E378A344B620ADCA35E /* PFObjectSubclassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = D24D2A9A2A00617641EB1C9DAF8E5BD9 /* PFObjectSubclassInfo.h */; }; - B3E66A59EA04548C918BD8E9CC72613A /* PFQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = D13DEF1A34A6346D0D141BE69B48222B /* PFQueryController.m */; }; - B503F98EF155E568AAFF59237046DD90 /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C943F70CC022BD45D5BC6C312618A47 /* FBSDKTimeSpentData.h */; }; - B50CAA3D21A9C93DFC9017CB1C1A6520 /* PFOfflineQueryLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = E7FFCEEBB5EF7D5A28D81A02BAD268FD /* PFOfflineQueryLogic.h */; }; - B59666CE66E901154A8239073431C260 /* BFTask+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B9D0ABFE846D51BADE9E86A6F8E48989 /* BFTask+Private.h */; }; - B5AD392A076CFADF6041F94414478DCD /* FBSDKLoginManagerLoginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B4D99B79C54CE4DF16ED8030ABCA255 /* FBSDKLoginManagerLoginResult.m */; }; - B703741B0A21A1DB2F89EC7414A8FA26 /* PFCloud.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E7104272D9C49EA366374D7591B69BC /* PFCloud.h */; }; - B725979258522519ED96E2704A869932 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 992BF67D0574DEFDA7B5A5DA35227955 /* CoreLocation.framework */; }; - B77C09C30F319B9914148050FE53A842 /* PFURLSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C2398FB910D7AF39F3C66C51408D84D5 /* PFURLSession_Private.h */; }; - B7CD16BA3FCFCD0304E41FD626F2ADB3 /* FBSDKLikeButtonPopWAV.m in Sources */ = {isa = PBXBuildFile; fileRef = A16681B3380FF1CBA89E6E2F276422AA /* FBSDKLikeButtonPopWAV.m */; }; - B7E4BEE543CE921D3E8EA19F745A4840 /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ED733F365A4B7276A584251EDEE13D3 /* FBSDKErrorRecoveryAttempter.h */; }; - B90A724A9A95499F9B46EC9E4124E2CE /* BFWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 2221BF7B944E3A928C21F480C8CCE6A6 /* BFWebViewAppLinkResolver.h */; }; - B93C621EA6D9A186BD1743F6B1E5D134 /* FBSDKLikeBoxBorderView.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E4838EB0ACA07B884CA93AFAD23B44 /* FBSDKLikeBoxBorderView.m */; }; - B9CAF300C714025446DBD3D170DE7380 /* PFCachedQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 778B2BB152B3C76A56D9A45B5E01AC3E /* PFCachedQueryController.m */; }; - B9D665C1FFEA8087E6977A029EC9F109 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 24E017A99C1D0B48564CB40E5B2422A8 /* BFTaskCompletionSource.h */; }; - B9DCE0A35921E1DAFB1C063EC254E6A6 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = EE40A18D405EDF0DDC2E9EB039576D21 /* FBSDKGraphErrorRecoveryProcessor.m */; }; - BAEC1C6ADE3E2E0B4B8BC1E58DC4E9B1 /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 60BBB09A1AF30CA3EF9CB3294AA8A5F9 /* FBSDKIcon.m */; }; - BAFC86D712FD60393400E6F37005C10E /* FBSDKShareUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 2278812C83EFF9DAF44E37BDB2014B3F /* FBSDKShareUtility.m */; }; - BB0147FB69D9824B3084835C05ED2D96 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E52BB93D7804BC50FDA99B9B59EB044 /* _FBSDKTemporaryErrorRecoveryAttempter.h */; }; - BBAE76F290141486645F6885DA829A55 /* FBSDKSystemAccountStoreAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 15A55E8ABB2D9F00C4D7E5B591503FC7 /* FBSDKSystemAccountStoreAdapter.h */; }; - BBEDC1B0186EE3BDCFD52D33F5019B73 /* PFCommandResult.m in Sources */ = {isa = PBXBuildFile; fileRef = FB8484337705B68B729961116D8780FF /* PFCommandResult.m */; }; - BD15875D09A6E6126333EA8200F3CED3 /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C38CB3F5B5846CA53D031EA7F63E697 /* FBSDKError.m */; }; - BD3CE6F36B20865EAA4F5E6AD2FE7B9B /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = ADC7A4E7F1BB2DAD519028D6DD15357F /* BFCancellationTokenSource.h */; }; - BDC94B58683F8564C61B5217AA9D8CF3 /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = ED57766F65BFA4FA25D7090346C97F28 /* FBSDKBridgeAPIProtocolType.h */; }; - BE81BB3D49E3317002BEE498E3D5DA50 /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = C394ED14B3FB109EF6BFAA2414984518 /* FBSDKGraphRequestMetadata.h */; }; - BEB5FEB51FB1A12140DA5E683C2FE8CD /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83550267DCC8A2C04DD26DBA885C6379 /* StoreKit.framework */; }; - BEEC9448DF823C0F80F5D35464DFDBB1 /* PFLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = FCC45D5098F99503478D96062E9B86BB /* PFLocationManager.m */; }; - C02E3465BA70AD28DCD5390996FB6AF6 /* PFPushState.m in Sources */ = {isa = PBXBuildFile; fileRef = D6B6858EBB4F2461F279E542CA9305EF /* PFPushState.m */; }; - C19D9ECB5B4495B5218A40256135FF82 /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = FE64BADD703C143B203FA8E00FD8FAD4 /* BFURL.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - C222EBE352FA0160CB53093ECB765D23 /* FBSDKLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = CAE37334F4838571A1A3347478DDBD93 /* FBSDKLoginError.h */; }; - C48038B4840E38D6CC3CEB1604944E87 /* PFACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = BAD153B7AF61CF6B398EB3FE2E5C2C7D /* PFACLState.h */; }; - C4A0B3AE8DE75263B4F77C7A56761C61 /* PFMutableObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = ECFFDF4EED9136970053D3F87C287A38 /* PFMutableObjectState.h */; }; - C4A82D2592849F48EFC21967D4D816C1 /* FBSDKLoginUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 690DD19198EE8D5F0127BA29BE0469C5 /* FBSDKLoginUtility.h */; }; - C4B4503F43EC426C4289493879FCB0E8 /* PFQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4954F834F6DA1CCC4DE29F801E8E6A52 /* PFQueryController.h */; }; - C51B459816A37F9471FD39AABAE78521 /* PFPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 12D6C59ACE08BC3F7440AFA3074159F7 /* PFPin.m */; }; - C5977D81D3310AC9F8ED1BBE8D297D3F /* PFBase64Encoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FCC6B0A52F1073866F5045115232A56 /* PFBase64Encoder.h */; }; - C6E485332A5CCC5526ABD9E70052981C /* PFFieldOperationDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = F64699881A4C5A9980C295DDA013D4DA /* PFFieldOperationDecoder.m */; }; - C74F0797B7B9DC9ED903076DAAB112C1 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = B0FEAD05D23D395F290529EE5DB73F6C /* FBSDKLogger.m */; }; - C76BFBC54AB29A882AFF2B93FABC02D9 /* FBSDKLikeButton+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 055D613FCAF2DEE454B4D55F922EE234 /* FBSDKLikeButton+Internal.h */; }; - C7E8486D1F67A49434500098CC8DB323 /* PFSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 19768BDA094897981754F254573AA405 /* PFSession_Private.h */; }; - C872275F11CC8962B2FAD03A3B9B13D6 /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F02776DDFE76E235B5AF885797A8F4B7 /* FBSDKGraphRequestPiggybackManager.m */; }; - C8E9F8ABFEE1F8C017714E754C5D8279 /* PFPushUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = F0B0CDDA729281358070EBBED9C52BB7 /* PFPushUtilities.m */; }; - C9199F1600296856F0A68EB34DE06DC0 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70A2ACBCF37165DCF827CE708D6D4C9E /* CFNetwork.framework */; }; - C93EF9E7AB322844B44D91A7417C7677 /* FBSDKAppInviteContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DEDEA8104363CAC7A0792A26668948A /* FBSDKAppInviteContent.h */; }; - C9A04A5564AD93F2D29EB2A7E0B4A9DB /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 32BA9072F15BE4F0B32F6D4CBC36210A /* BFAppLinkReturnToRefererView.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - CAB7052056C21EFFD46860D32FE256B7 /* PFThreadsafety.h in Headers */ = {isa = PBXBuildFile; fileRef = DEF1EA4E1F9251BFCF197D8CF0D4A299 /* PFThreadsafety.h */; }; - CB6E04CE7A2D8908A3E3D529DB7F5061 /* PFURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = E381E7C31CC253F19B9DBADD0D0C49A6 /* PFURLSession.h */; }; - CC2ABE5C8F67B4B91BD62C41634F456C /* PFRelationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D1936061C906ACCF7096B33BC0F8B8D5 /* PFRelationPrivate.h */; }; - CC6774347838445871178181BC28620A /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7679ACE8F1FCAA1786579B614C35BAC0 /* FBSDKTestUsersManager.h */; }; - CC8D510E3D7EF751A5E55F13A2071D87 /* PFConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B5E087C87BE017FB0C382DC023EA4BE /* PFConfig.h */; }; - CCBD5FF1E39126AED1F8DD92F8DCFD82 /* FBSDKLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F06057C5FB4F34C78273C6773FE934A /* FBSDKLoginError.m */; }; - CD9D2216FD81D025B9F8A044BC727B4A /* PFURLSessionFileDownloadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EF85D0CB5A209F611DBE0B95DD6E0937 /* PFURLSessionFileDownloadTaskDelegate.m */; }; - CDCA058527BCAAC5DAC3C538DBDC6855 /* PFPaymentTransactionObserver_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CC1532E55E3DE39D552270CFBD839CF6 /* PFPaymentTransactionObserver_Private.h */; }; - CE04A9D2777511F219923DC8A7E456FA /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F9DB8A88D120EF79B711A6D9A60C9735 /* FBSDKAccessTokenCache.h */; }; - CE21ACAE8CD2E1F05A6878D3B2482ABB /* PFCloudCodeController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2022F0B4ED20CCE9260B4E160964B9D8 /* PFCloudCodeController.h */; }; - CF79198C14BBBD2D665382664838FDC3 /* FBSDKAppGroupAddDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 175A1AE7E5CD7E7816C852D51957E66A /* FBSDKAppGroupAddDialog.h */; }; - CFF394E02CD69EA682C7AD26E4A6580E /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C91A1662596A108F805EA72954D11C /* FBSDKGraphErrorRecoveryProcessor.h */; }; - D0144F5341D9037D37D9446DA8745BD1 /* PFObjectLocalIdStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D32532031A1C89062D9473123DC3B2 /* PFObjectLocalIdStore.m */; }; - D03F806B3D48F7003CC1DCAAE0D7F7AD /* PFAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = D72924A89C6D36425031B7EB8C451C49 /* PFAnalytics.h */; }; - D08EDD7023EA483E0FCC806B743AB8C8 /* PFRESTObjectCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 8018CD5321B09E6AA082BFED9506705E /* PFRESTObjectCommand.m */; }; - D0D743C0E98198942EE41BFBA24950FA /* PFObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD21F178D79A8CCA228342BF2E4B2 /* PFObjectUtilities.m */; }; - D10CDE3288CBAECCB4870B578BA26A96 /* PFCategoryLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AAB126C87821E766861FC4022C4E248 /* PFCategoryLoader.h */; }; - D17EA2C542316E553796A54137DB2BA2 /* FBSDKShareOpenGraphValueContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A3E0823C5C63DCBFFF51F3DAA930F7E /* FBSDKShareOpenGraphValueContainer.m */; }; - D181D054976B047917CE654092F55A0D /* FBSDKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = A07F69889F21865BABF7494B7A375A53 /* FBSDKMacros.h */; }; - D1E97F4708237AC9D9EE8F0DC21C7B64 /* PFPushChannelsController.h in Headers */ = {isa = PBXBuildFile; fileRef = A2B0C52AADDA52456790576546FCC99D /* PFPushChannelsController.h */; }; - D24F4135A2908F8F44653B3B9285C687 /* PFInstallationIdentifierStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 18DA781E03A5FEF86B0ADEA14D9E9E63 /* PFInstallationIdentifierStore.m */; }; - D2607228CAE8BB301CB8263391ABCDCB /* PFKeyValueCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6997FDD65FC84CBE9C0B1F06A436C49C /* PFKeyValueCache_Private.h */; }; - D2B4AAB5308342E98196868D0B732FA1 /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 41094B5E693D24C0D940E39D86E35B98 /* FBSDKBridgeAPIResponse.m */; }; - D2FA4F91B4B66C579FAB1CB3BB8D1CBB /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47F6D008CDDC192BF994FAA0B8B41043 /* SystemConfiguration.framework */; }; - D3134BF37E80DB532CB93325997FB927 /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 8827063A0A317BDA830C5A1CBEC3F03F /* FBSDKGraphRequestMetadata.m */; }; - D35E29B5D9FC142022E8427B40FC3D2B /* BFAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 041D6BFA828C5A1E9512BEEFEC8F8283 /* BFAppLinkTarget.h */; }; - D417241C7870B27AAB51410A98A0F475 /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = D388F363F30D7354C0DD6EF934AEF405 /* FBSDKCopying.h */; }; - D41DB6CD0DFFE0F06736B971FF6E40DA /* PFFieldOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C0625656720CAD50DBE306C724DADC69 /* PFFieldOperation.h */; }; - D426F78D685F292D750DDAE27B542951 /* PFMutableACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = 25F9E5B91126E490040E4C142BE17D7C /* PFMutableACLState.h */; }; - D473EBF593E8962DC51188AD7CA7A26C /* FBSDKAppGroupContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B212E7E5891AA33B35F56D833F69EF4D /* FBSDKAppGroupContent.m */; }; - D532A655317AE37BD7AC500809F5DE09 /* PFObjectSubclassingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B8C83CAC30A6E627FC4C625FE78664C /* PFObjectSubclassingController.m */; }; - D539A64059405A192DA4DD93A1819502 /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B0A0F292A52A1B2A4F4BBA76248ED29 /* FBSDKViewImpressionTracker.h */; }; - D5650C90FF89446F265AB92F128B696F /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F83E67F4212B6068698963474A88BBC6 /* FBSDKApplicationDelegate.m */; }; - D58BA1D2025529F819D6E423F0C7DD6A /* PFUserState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 945E0E4F9730840B5671665F5AE4F8C6 /* PFUserState_Private.h */; }; - D5D8352542CA6A2CFA802B75632E6586 /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A8D4366E635D41E68C80330D1D6303 /* FBSDKButton.h */; }; - D5EF482B2E3D57F3FD95D49EDB459A23 /* PFFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C9D0DC652ECEB0AC847D646E33E3762 /* PFFileState.m */; }; - D66601DBFBB39851657F90C29134F86A /* FBSDKLikeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 75CAD372C74E8529A061E6EB2818F982 /* FBSDKLikeDialog.m */; }; - D69677EA0874C8A641C3EAC1650B0F83 /* BFTask+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A19F56E0F8C29946A8608B76F3A49F4 /* BFTask+Private.m */; }; - D6C47ED862055985196D9325E3121EF0 /* FBSDKLoginConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 9764C114535D7CCF89F76AD383D000DF /* FBSDKLoginConstants.m */; }; - D74F2E810DA974E4D08A2873A84D1A9C /* PFFileController.h in Headers */ = {isa = PBXBuildFile; fileRef = D03015A70D44B37A63401618F5BAE8D3 /* PFFileController.h */; }; - D869A0A06F7092BB38061BE822D5F0BD /* PFSQLiteDatabaseResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 81D6701BAB69FFA1D5E976AA8AE47D90 /* PFSQLiteDatabaseResult.m */; }; - D97458B299708EC25990B63810465D97 /* PFQueryPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D97F582E69FFF8BC67A3DB17D398C9C5 /* PFQueryPrivate.h */; }; - D9850B00148639B256BDE5F3F23C8A0F /* PFGeoPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = F1EF1E16E02ADB82F94F4A9757F01077 /* PFGeoPoint.h */; }; - D99E0E47569B3EA08DD354582883AA97 /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = 897397ACC5D65221928DE26C756E60EC /* FBSDKTriStateBOOL.m */; }; - DA143DD613C9371DF58294B6C5EFD2B4 /* FBSDKBridgeAPICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EBCBD93200C3A10C234267D819C7E09 /* FBSDKBridgeAPICrypto.h */; }; - DA176B90A87EC91233E2508B4F5D141B /* PFCategoryLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C119E76B1739D418563786A3535A586 /* PFCategoryLoader.m */; }; - DA8E9CB7BC799826B6986C010360E359 /* PFRESTCloudCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FEF83ED93FDFDDF9C57D5020D1F5EB6 /* PFRESTCloudCommand.h */; }; - DA945F0026584B08173CD60DA7C25EAC /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D1F353DA75094169460F4E178D67879F /* BFMeasurementEvent.h */; }; - DAAE0B37F5BE0DA84A8932C0643484ED /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 5942BB14DE3948BBEF602394405639FE /* FBSDKGraphRequestDataAttachment.m */; }; - DB4F10499FD9AE1571DF6D24F3D059A4 /* PFURLSessionUploadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 87B2FEF6137A22119E9C4BF5999B87A1 /* PFURLSessionUploadTaskDelegate.m */; }; - DB976377ECFE3DCDC7A39A70EFDCB66A /* FBSDKShareOpenGraphObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 629A496B7FB2D5E3C39FF55136A1EEE4 /* FBSDKShareOpenGraphObject.h */; }; - DC2C432ADD7B9BF3E341DF74E3FE1558 /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 31B2F7D2FA080E49146AA5468986A493 /* FBSDKConstants.m */; }; - DC464A1128A701A7CF13E46185475091 /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9908DE4518F24CDCE9DEBFBD8AAF7A5E /* FBSDKContainerViewController.m */; }; - DC95621B201A1643FEDCA0D4B8F9F8AE /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F7F02E2032B63EE2D9E989373528958 /* FBSDKGraphRequestConnection.h */; }; - DCC1ABB0688AAFDD2FA307053A70B667 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */; }; - DD580DFD2330BC82FF3CC6AE0673D23C /* FBSDKGameRequestDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DED363DFEDD926102B4745A17AA358A /* FBSDKGameRequestDialog.m */; }; - DDA5BB61D5FDA34A2F4DA088708BFF07 /* PFRESTFileCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F1129A22D3FF953177EDA6105319682 /* PFRESTFileCommand.h */; }; - DE27B30E8B84C46EFE4214A8F1DF4CA1 /* FBSDKLikeActionControllerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A1EE50D31E951A4463F312FC9BF343D5 /* FBSDKLikeActionControllerCache.m */; }; - DF8EBECA6B580DBD79CB044E25D8D25F /* PFOperationSet.h in Headers */ = {isa = PBXBuildFile; fileRef = E5CCD914EAF1670C15EFE26F755C80A1 /* PFOperationSet.h */; }; - DFE76642360EFF066C3CC145468E4BC2 /* PFApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C2DF1B80261AAA9B73D7187A3623941 /* PFApplication.h */; }; - E027ECC5E4F105AAA36189986EC6E3A3 /* PFACLState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C71D2C477F3399D3AD1EFD4F9A866DB3 /* PFACLState_Private.h */; }; - E0ACC93E5EA8EBCAB60DB71BEF5C1693 /* PFMutablePushState.h in Headers */ = {isa = PBXBuildFile; fileRef = 6925CDA0BCBCFF149619E0E29A35A3DF /* PFMutablePushState.h */; }; - E0AF7C8E6312712C90E14832F43A36B1 /* FBSDKSharingButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 2456CB46EED1A00126E3F3CD460B8E39 /* FBSDKSharingButton.h */; }; - E0B1DB6ADFD698DA60717627A946015E /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 993A21CE56E830A28F273FBEE71237B7 /* BFMeasurementEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E0DD1B663B6833D565CFFCD640E525CA /* PFApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = A2151507558FB08E11B302809C4679D5 /* PFApplication.m */; }; - E1325F398C34BEA93CD9321ADFDB74BE /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 5217066CC765E38FC661DB8DD6390679 /* FBSDKButton.m */; }; - E1810D26E4FC22372B19063A3CEA743E /* PFObjectEstimatedData.h in Headers */ = {isa = PBXBuildFile; fileRef = C316ACA67E163041176B415E9B6CD9DD /* PFObjectEstimatedData.h */; }; - E1A1DEE33F2B917512C43A63737EB794 /* PFKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDADE6B03CF289BAE3BBAE839E354B5 /* PFKeychainStore.m */; }; - E1B74F3B3D829F2B22CBE7E78FED4A94 /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A7F97E5324275ECE8A2DB0BB11F4382 /* FBSDKCoreKit.h */; }; - E1CB2BA40EE5A3FE0F3317FE718EB52E /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A128707E58E6F7FD7C1268992BEFD2C5 /* FBSDKGameRequestFrictionlessRecipientCache.m */; }; - E213A5926DFA7791DCA2621FFC3C37EB /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AC0AE8CCB6A9AA9E28BD0E07607467 /* FBSDKTypeUtility.m */; }; - E273FCC56D19EBC9CB8F6C43CE0530C3 /* FBSDKLoginButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F598868B799F457865DCE7BA2139460 /* FBSDKLoginButton.h */; }; - E27A9C15F3D333CE44838FC62A07DCD0 /* PFFileState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B519F2BE42EA935C61C49611DFDE3111 /* PFFileState_Private.h */; }; - E30F6ED3C9433E9C224E934F86526DFB /* PFEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = D950227B3A59DCF16242E75918DC221C /* PFEventuallyQueue.m */; }; - E3ADD077F80CC1DD43ECE53F10FA20E6 /* PFMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 183A69494B93ED3701B335D4754CDE51 /* PFMacros.h */; }; - E3DAA3FD4277840AC125CD26EE72A61B /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = E39D48341F0F70D7E687A32C109136F4 /* FBSDKSettings.h */; }; - E501C70A3F56D91E2FD2E2135A1EC469 /* PFObjectFileCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 61EFCD5D7B14809002EECB4A73721FD4 /* PFObjectFileCoder.h */; }; - E51BE51D61BD89C6F13645CE46F0E87B /* PFDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB3B7F4B8D4BBB3AF4CFE483FA32924 /* PFDateFormatter.h */; }; - E56A71F9DCE03E0D3A23C186BC549398 /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 178E1657CE29AD06224A9CDAE2FF258D /* FBSDKGraphRequestConnection+Internal.h */; }; - E63BBF78198C05D1B345C98DE621F745 /* PFLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 73A9A2B2C84C359AC796978E67B9549D /* PFLocationManager.h */; }; - E75B88CF9855E0AE3BF0E5D2E262D062 /* PFObjectLocalIdStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 611ADAF0571A733561852B6D6D73901A /* PFObjectLocalIdStore.h */; }; - E7D61730878DC04A66A7F4C7F4E46A5D /* PFObject+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = 621186073ECC02598EFBC30E0D60F6A4 /* PFObject+Subclass.h */; }; - E8B019228FF069E4A1B1A07AB1AC2B3A /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = C61DC81C824307F112DA576783266C8B /* FBSDKBridgeAPIProtocolNativeV1.m */; }; - E8FE4AEF06AE75668686A795E35987E9 /* FBSDKShareOpenGraphContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 18A1F36B919BB4094769DA9141FA13B4 /* FBSDKShareOpenGraphContent.m */; }; - E95A35CACF79B5613E435793A12C3B12 /* FBSDKLikeControl+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F82DC5081D723743511B666306BC567 /* FBSDKLikeControl+Internal.h */; }; - E9AA2204628D9753A4A5EB1AC368ABF7 /* PFSQLiteStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = 671C93F34B25F0E2D951C18DF74FBE1C /* PFSQLiteStatement.h */; }; - E9D6CE3222E0BA71F2A6417D9096F495 /* PFURLSessionFileDownloadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 163419D898E7F370D581B4668E1A8F90 /* PFURLSessionFileDownloadTaskDelegate.h */; }; - EAEB1AFFEF75396CA12351C6D85EFD54 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = E6BB98CFA5D8A318326528AF33DF0BEC /* FBSDKURLOpening.h */; }; - EB0104D47F39544F712F75BB8B3DCEAE /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = A4AD7609287338B0BF2365DE061D4525 /* FBSDKMutableCopying.h */; }; - EB727D0AC97D5FF6566CE2138A73F2BF /* PFURLSessionDataTaskDelegate_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CA7489220D6C75107468852C7C0A0D03 /* PFURLSessionDataTaskDelegate_Private.h */; }; - EB863E147B32EC3C3B48045F1C88FA94 /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C0C4E8FFB7B46EAF4E88536FB6D05C9 /* FBSDKInternalUtility.h */; }; - EBF174B3526DA204542A9E7EDDA420C0 /* FBSDKLikeBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = D686AFA6A1B571DB6379798EEC41A114 /* FBSDKLikeBoxView.h */; }; - EC1AFF0BEAF765300970650A44FEC23E /* FBSDKLoginButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B12F7845B8017EA22B0E0EEF0B3B56A /* FBSDKLoginButton.m */; }; - EDC9073C2528E8A4C94343F4F3AB7FEF /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = FACF0C560352F6EA75B7CEE63BCB2793 /* Bolts.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - EE59ED1C743DB6D311ED072D908A63CD /* Parse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D93203DD4AFE0B35B1D82EF027EE2E3 /* Parse.m */; }; - EE600F90E43CBFE4E16F3AF3E3FCD24A /* PFPinningObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 89FA1CDB34FC6A266A0CB85649B29BAD /* PFPinningObjectStore.h */; }; - EE922301DF435B008CD36FBBEBCE2013 /* FBSDKLoginConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = C438E8586D1D6C401A986F82E9815270 /* FBSDKLoginConstants.h */; }; - EEA05A7718D37867B32667CBD6D71B51 /* PFPinningEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = DFD9CDB1EB349CA71F08124AACE22058 /* PFPinningEventuallyQueue.h */; }; - EEC92256C2CE4D6A71D7BEBCB59FA596 /* PFObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = CDFD024CF43A4AE623C0F5C4BDF1A912 /* PFObjectControlling.h */; }; - EF3BF6324C7416A119E5B4501ECA0243 /* FBSDKLikeControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 17D097F39B59CDB7D0438128AF2166D6 /* FBSDKLikeControl.h */; }; - EFC9DC66A1415A8C54AF1D0F6BCB5FF3 /* PFErrorUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = BDD8F3D065CF416DD92F0BB5DE7ADF01 /* PFErrorUtilities.h */; }; - EFF70AE917CE096804329270000B30CA /* PFPropertyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4991C6D1D1F1E90244D63C683726742E /* PFPropertyInfo.m */; }; - F01956C5A64FDF6066764555830C417B /* PFUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C4B1918D6C2748B708FBA9010D47C59 /* PFUserController.h */; }; - F039DF3F73126E9A4879323F015AEED5 /* PFRESTCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 11AECB6BCE686A69BECE7B35B96E410A /* PFRESTCommand.m */; }; - F04A246C6AF48B1F4E0AAA59AB263887 /* PFBase64Encoder.m in Sources */ = {isa = PBXBuildFile; fileRef = F1AF1463AFA83AA08F43ABCD39BF6FFB /* PFBase64Encoder.m */; }; - F078C36EAE42D363446021B148D01DBA /* PFMultiProcessFileLock.m in Sources */ = {isa = PBXBuildFile; fileRef = 2623540305AAB0140A287E371F61E55C /* PFMultiProcessFileLock.m */; }; - F0A8AEAA9CA105D255B698A63E916966 /* PFObjectSubclassingController.h in Headers */ = {isa = PBXBuildFile; fileRef = BD39191E0A16426B7F816A902E3ED1A2 /* PFObjectSubclassingController.h */; }; - F10A986E0C7986EEB092D621957E9A35 /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = FD462163039488768F58B0E9E27E6C43 /* FBSDKAccessTokenCache.m */; }; - F1D1E127FD70AF059457961F7B76C5E4 /* FBSDKAccessTokenCacheV3_21.h in Headers */ = {isa = PBXBuildFile; fileRef = D61E6CD1DA3114DB0F3E65D1FD361D36 /* FBSDKAccessTokenCacheV3_21.h */; }; - F1F29611141F8144413F5980024BCDE7 /* PFCachedQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 887593F0DEE8EFD5BDC3F6E96A7AF9C2 /* PFCachedQueryController.h */; }; - F2262E4714D619DFE966A76A7871E8C0 /* PFURLConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 037AABBBCA13696A48290F5766CC10B4 /* PFURLConstructor.h */; }; - F226BC6EF2861BE54054C5A0E1508BC0 /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 33370AFC4AF7E1BD533B19E83C86384C /* FBSDKKeychainStore.m */; }; - F22D730AF7C810CEC8F093F249E164B9 /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 96619AD29A8E305120281298BB9C2117 /* FBSDKMonotonicTime.h */; }; - F2AF88887A99A5F17A7C1006F78D0754 /* PFInstallation.h in Headers */ = {isa = PBXBuildFile; fileRef = B571E0FEC01D103B7151ECA4A256D9BE /* PFInstallation.h */; }; - F397C996AC39BBA073D32D6B15E6DB54 /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 08D5478EDC1981B91D3B2EE8042C45EE /* FBSDKShareOpenGraphValueContainer+Internal.h */; }; - F3E0AC37722D619B98C8F59B2F79F7EE /* PFAnonymousUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = BD01BA2811FF01AC721F5BD747249BB4 /* PFAnonymousUtils.h */; }; - F435C8D6A784B176C8528DC2C90E53D9 /* FBSDKURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = FBE9B1CE32D01F9E50A891EA8A4513A7 /* FBSDKURLConnection.m */; }; - F56C1A008897709131994E8408F6A3F6 /* PFPropertyInfo_Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = E0856F90FBBE3E20ACD8BC2DC4D7936A /* PFPropertyInfo_Runtime.m */; }; - F58687BA4A3BE0B69DF85C2CED642104 /* PFCurrentUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 994D05614D1EDF257C36EB9774BC9F9E /* PFCurrentUserController.h */; }; - F5B59A63E1A5DF6A06D293B7F6D6AAFC /* PFPinningEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 5015295E9D9B6BD11C70E85285B15C0C /* PFPinningEventuallyQueue.m */; }; - F5D3F433965CBC07523BF8B52A4CFD0D /* PFSQLiteDatabaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = E543FA1FAC8FAA14119B1F575299C209 /* PFSQLiteDatabaseController.h */; }; - F68578BB7CC74D30FAB7AE569B031F1F /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D9A54A95B795541832AC67B6AD76BE /* FBSDKProfilePictureView.h */; }; - F6B1B2E35E2A2F8DD6C246B5EDA59478 /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = E77CF83F87413203B1BFCA6ED0238DAC /* FBSDKLogger.h */; }; - F6B2BAA1EB859F859E12AD8449D6A172 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C97DF3988890CAEF8564FB45FDC77191 /* CoreGraphics.framework */; }; - F6F20F1577D517829A60E3C7524A3FB2 /* FBSDKShareUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 633199AB2B8E7F8DD87937157D733647 /* FBSDKShareUtility.h */; }; - F76B7A3DCC976CFA0702A75323201FFC /* ParseInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = D605E91ED4E689A9CCE862F2F178290D /* ParseInternal.h */; }; - F7A01ABECB87107C0D949ABBDA1A3F6A /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = ADC11EA5CCDB563EF63FECBB82F1809E /* FBSDKButton+Subclass.h */; }; - F7AA085613E075E8E5C9624051D73C40 /* PFQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = C9AFF24120C438CE8768D912A12FE069 /* PFQueryState.h */; }; - F7C0DBA5EF54C0DD2928E293D97F4317 /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = EB7DACF210125B509F4D6887A2B2D027 /* FBSDKApplicationDelegate.h */; }; - F80DA427D9B4EFC30775898E17772FBD /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = 21118A1801B385E14793771E3E2EB3DD /* FBSDKLogo.h */; }; - F8776BBAA1C27717D2D5D893A232EE64 /* PFPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8690C66AA184BBA764246933C2A4A354 /* PFPurchase.h */; }; - F97E8AEA2BF089005DDFA63D975BBB4A /* PFJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 42DC5A6ADC1D96FFC19B5446CC236649 /* PFJSONSerialization.m */; }; - F9B29220D46F9601E53EAC2960053F8E /* PFRESTAnalyticsCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F5F8B13BF4255AFCED026AC6B211C8 /* PFRESTAnalyticsCommand.h */; }; - F9E320C0B05AE66F5CD2C49B891CDAD7 /* PFPush.m in Sources */ = {isa = PBXBuildFile; fileRef = 02F00ACE2DBD4B299DE97EDC74368855 /* PFPush.m */; }; - FA16E9DD7604ECBFEA94DCE63C71F718 /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F767B7B637099477E518FC655BBFC0A /* FBSDKCrypto.h */; }; - FA492C9CAE233569C4240CBE669CCC18 /* PFProduct+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A13F1B5B057D95AEB199BD0AC1569C85 /* PFProduct+Private.h */; }; - FA655EAE8BB4D9B2C519FE4B4E257FC0 /* PFRESTObjectBatchCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F91500B4545DAA6F7241732589F388A /* PFRESTObjectBatchCommand.h */; }; - FAA724BD8C2E9812D6E8DB5AE75187FD /* PFCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = A2EE1BEF00118C9B86DED80D8E9F78E5 /* PFCloud.m */; }; - FAD2F3F163BE5C8ADB49265D238A0A88 /* PFNetworkCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B13CC16593686DB265856434BBFC4594 /* PFNetworkCommand.h */; }; - FC49C19B4A93B84BFCD85C648FFEDDB1 /* PFSQLiteDatabase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E6CC90C5C183BC584DAC5A06F3B7AB7 /* PFSQLiteDatabase_Private.h */; }; - FC741D511C021CB157AE1A996FCFB3D5 /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B122B4FE33C8E68A4C66FCFE7DC77AF7 /* FBSDKGraphRequest+Internal.h */; }; - FD874685C537E5A0F3A6CEF0752C4BE2 /* FBSDKGameRequestDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 590B72F042F883DF5EACA245CBD92A25 /* FBSDKGameRequestDialog.h */; }; - FE05CC6A81AEDA51F7B8BFFDAC3A3C33 /* PFRelationState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 53680AD3533A53E841E40B971C980E33 /* PFRelationState_Private.h */; }; - FE61940A58EB4C4C8D2559C46F7C0FE4 /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = EE07970368BAD29465F0F84B9B1BBF89 /* FBSDKServerConfiguration+Internal.h */; }; - FE76285FB50562EE5B0A1CE546E43737 /* PFACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = E1339B136ECA6BA809535B109308BBE8 /* PFACLState.m */; }; - FEE736B607EBEDA1D87C97B7A60C056C /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 174428FB6ED93BFAE36DC2D84B429C3F /* BFCancellationTokenSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - FFBEDB74DCA016F287B966EECFA6F909 /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = D94AA448EE0BB8B639F08787CE1F8480 /* FBSDKSettings.m */; }; + 01B6E1BCF76B786BA17501AA97D0A2FD /* PFLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 6370C00129F042A303CF8C41BCC8048F /* PFLogger.h */; }; + 0248D52572AD490C9F0E6E0E16C899F4 /* PFSQLiteStatement.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E2E9BC6F467A47EC23C62B07767BBD1 /* PFSQLiteStatement.m */; }; + 0249DD298C4521858041ED1ABD27B4EB /* RKPathMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CFD6F4F94AD214D7B9CEF3544854F4D /* RKPathMatcher.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 02510F8446BAA50DDF30A10F1ECA9A6D /* RKTestNotificationObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = D497D888360D61A9F64F2DBB2A1FC8F0 /* RKTestNotificationObserver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 031FFF4BFC8E7F50200A78A83ACE12F2 /* PFObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A15492EE8BDE4E1840F2F29AA9B3A5 /* PFObjectControlling.h */; }; + 035585A2DE484628EA30E8E63294D4C4 /* PFCategoryLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = EDDDD080107F9241868C257E03522C93 /* PFCategoryLoader.h */; }; + 0383C08E8381E50C4D99F27563219095 /* PFURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = B64334E646B39ABAFB0CC58791A45045 /* PFURLSession.h */; }; + 03C3301144E96541DD8695E57AD95EDC /* AFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = F13165336A9173E2A3C4790AB7CC7975 /* AFURLConnectionOperation.h */; }; + 040E8CD5FB35E08270AA9BC8C424E068 /* PFUserAuthenticationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 046383C54AB907710018AAD4CBD3C3E8 /* PFUserAuthenticationDelegate.h */; }; + 0438ACC4040FF8EB5AA1A51F1D3E9A4A /* PFAnalyticsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 335CD23D95285D1C44A95A3A178AAEF8 /* PFAnalyticsController.m */; }; + 0451EE3ECD50A13211C7FF98A7E505AE /* AFJSONRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 97715D178022674A0792C3C3180E1132 /* AFJSONRequestOperation.h */; }; + 04DE3864BDD52DB342049EFB3EECB75E /* PFInstallationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 18FD24EF1379B71A3998D456EAF6CE07 /* PFInstallationConstants.m */; }; + 054CF88416097C84057A6427691FE0DA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 062E34675281829E6C309C6099D0CD9D /* PFPushChannelsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C1DC34229B831B07F4F2C955050094A /* PFPushChannelsController.m */; }; + 0637FA7A30F03B2B44FE3843BDEB55D4 /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = C8EEE74C77FC0E8CCF6F9BF61F91F077 /* FBSDKBridgeAPIProtocolWebV1.h */; }; + 06837C373EBCF2BE9F24B84D2495661D /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 82DEAB301EC606D81DDB79F260128939 /* FBSDKServerConfiguration.m */; }; + 0722E90FFB0E0659D82D8E560CA2D2F1 /* TKStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = 4391678EE65327EC09710A2246AE3738 /* TKStateMachine.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 07287065D4777E1A383C96927EEFD816 /* FBSDKLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = C565C7D7E5AC00E6AB9CDCF110BC3C25 /* FBSDKLoginError.m */; }; + 0827E8FF507012241427EA254F0B9C86 /* PFObjectFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = 76A196B0C50AE07AE79DC05159C2DF21 /* PFObjectFileCodingLogic.h */; }; + 0899727B95CE0A9B8FB7646F3F1E84D8 /* PFMutableFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F55A6C36C32F11B3417387E0AE06AB1 /* PFMutableFileState.m */; }; + 09219068B5A97176CB293592657A1C1F /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E541C23946CA00EF697F8FA44AB271F6 /* Security.framework */; }; + 092EAB1784E30E1179D39200F489EE56 /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = E5B4019C9415D7F5E3578EB347E6428C /* FBSDKKeychainStore.m */; }; + 096ECB92C0E8A0012A979F498F805D7A /* FBSDKShareButton.m in Sources */ = {isa = PBXBuildFile; fileRef = FC75AD2CED5E67E206316FE8FCE7F2E8 /* FBSDKShareButton.m */; }; + 0A24AF592599665BBA61B0592CE2D779 /* PFConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = 237D0660F2210DBDAA12CCD66B659E6C /* PFConfigController.h */; }; + 0A3B5EA35B0E5C9620B5247CBE3F2FD9 /* FBSDKShareVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = D65F4C0A6ED3ABC94426B9A2AFEA2790 /* FBSDKShareVideo.h */; }; + 0A404B050E501F4897A0F0E48E261D02 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = 61F8017FEF232B21270544D23BE67BBF /* FBSDKURLOpening.h */; }; + 0A4CDCF83EC9FBDE9EC13F7874D5FFAE /* FBSDKShareKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C8A64817A3F904FC394ADA0E162D3FCF /* FBSDKShareKit-dummy.m */; }; + 0B81E419526111EA3E0BBBBAA5737C8C /* PFRESTUserCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = CF467117B925DD3A53A0AD66F813DD90 /* PFRESTUserCommand.h */; }; + 0BF5D62B21185C974403236E5B12BB47 /* FBSDKAppGroupJoinDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = D99237E043D8D55F742E4FFCE42D91BF /* FBSDKAppGroupJoinDialog.m */; }; + 0C36B88BBA60864543814D356AD0A3F1 /* FBSDKLoginButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 132DA86A6F8F171F7FC7130F078FFCE1 /* FBSDKLoginButton.h */; }; + 0C97A38957A54E356CBD2066CE04133E /* PFObject+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B538D8071AB6432B658069378DCA381 /* PFObject+Subclass.h */; }; + 0CE4944C400ACFDAF62ACE7BE9D296B7 /* FBSDKShareDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 95C3B6319C8BEC9A72589989076B040E /* FBSDKShareDialog.m */; }; + 0CF6CBBCBFD055C8F98940C7D12E3BAE /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 2EBD9E78DE2BF6EF77A771D225D5E591 /* FBSDKAppEvents.m */; }; + 0D38DDBFF8647BFBAC5D5819120866AF /* PFObjectSubclassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 78ED1DE48AC6FAA521E9D1B0A15B2F0E /* PFObjectSubclassInfo.h */; }; + 0DA0DFD7ADBEE6B5BD582CA7D93DA573 /* PFOfflineQueryLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = E170DFE0763897F12B0B3762F62DFCAD /* PFOfflineQueryLogic.m */; }; + 0DEB3FF3257E2710E17602028B4ADCBF /* FBSDKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BBDCAE31F786B578147D2A338A29E5B /* FBSDKMacros.h */; }; + 0E0632D6D28316A2A4CC00E6CCAFB98C /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E874B0F3891D0BC5E6EE724082760D1 /* Bolts.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 0E2C819942449D83510F76BE41B000AB /* Network.h in Headers */ = {isa = PBXBuildFile; fileRef = F6235B81BCC7427EC393417D0676C7DD /* Network.h */; }; + 0F3D53E5F079F4B1A2EBB4210908CFB7 /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 65A4F7F6E3DD2EA0621A632278E51E25 /* FBSDKAccessTokenCaching.h */; }; + 0FD22CC68EB137F144F30A3A882E6B78 /* RKMappingOperationDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EE325AB5D11F8E0314EC1A65AFC915A /* RKMappingOperationDataSource.h */; }; + 0FEB198320552E0ED018F62418915FF2 /* PFRESTObjectCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = F94D8E2DD631C64B847B40AEA78E1AA0 /* PFRESTObjectCommand.h */; }; + 103EEFB51B885B053EE5C3BA2B9F5B71 /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = CCB66A62E1727B274EBDAE6A324F1EF1 /* FBSDKInternalUtility.h */; }; + 104F33CA0D4A2D153078B7E86F19F26A /* PFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFE14B9E600B66B7CAFD3D9A64F4B3D /* PFNetworkActivityIndicatorManager.m */; }; + 1082989B937B299059AA17B02EFB11C3 /* PFRESTConfigCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 7176C54BE83AD8B924C0239573D8C14D /* PFRESTConfigCommand.h */; }; + 10B9DF916653B140AD9B5F3F0A0573CF /* PFCurrentConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = CB54CB2CBAE86A6D529C60250C8243A7 /* PFCurrentConfigController.m */; }; + 10BE8D457AFBCCD2D0AF53C57A7CF8AD /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = D4BBD3B141794583886966E10E9DE885 /* BFAppLink.h */; }; + 115B682879CBE79C7CD8FF29E967EB08 /* PFPaymentTransactionObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = B83DA40998833B6F48A316FA1BA26DF0 /* PFPaymentTransactionObserver.h */; }; + 1167C7893F088AF78C53D93AEEDEA696 /* PFConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DBF2FEDE564A16DD0584A1A4B48DB5E /* PFConfig.m */; }; + 119DCD23DA3C1E22777BF1F97BE3E170 /* FBSDKLikeControl.h in Headers */ = {isa = PBXBuildFile; fileRef = A17C481C0F1C64EB4AB1CFBAF183C08E /* FBSDKLikeControl.h */; }; + 11A6050774C74E9CE6C2F5F4583307A3 /* PFEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = CF5556B51CED2BB029915A1874EE32A9 /* PFEventuallyQueue.m */; }; + 11E6895F2673F1D69CC3F6623019E969 /* PFProduct+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A8FE4F334B2A94F5AC2AA3FBAF7627F8 /* PFProduct+Private.h */; }; + 11EA198AD6FEA828E599CF4EFBE3C08F /* RKISO8601DateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 28FC8B75B37315B6FEDFAC246BEDB597 /* RKISO8601DateFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1234595A0A3952AF80B9D7B2A706D42C /* lcl_RK.m in Sources */ = {isa = PBXBuildFile; fileRef = E11FE2BB216DD98CBF3928F8E5E9A85B /* lcl_RK.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 12A3F71BC200B34A3DDCD2F4EE241EEF /* PFPush.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F6AC6F0CC343C3396887A99F63C9782 /* PFPush.m */; }; + 1311EB6B3ABE7AEBCAE47A46ED073054 /* PFRole.m in Sources */ = {isa = PBXBuildFile; fileRef = 155D2AB8BF53B4A09062475713E1C814 /* PFRole.m */; }; + 134A0D3E2B08F588C5212E330CC519ED /* FBSDKSharePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EEA34DB3E95971CAA4099B9C4DD8C74 /* FBSDKSharePhoto.m */; }; + 13AF98BD29E32EEAB0C7E25345182F63 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = F21D0FB2302BFB55563A040B9162207A /* FBSDKBridgeAPIProtocolNativeV1.h */; }; + 141089B7D752020855F211BD890A4D3C /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1124CA6C3A9CDC4513ADC2393C447BE8 /* _FBSDKTemporaryErrorRecoveryAttempter.h */; }; + 1419B8B6680E4CE92EECD5657926320D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 147EE652AA4CED9F96AC291100513BBA /* PFUserAuthenticationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 5325291642047AF9E650B7590ACC6254 /* PFUserAuthenticationController.h */; }; + 162784BAD212B53DA133219EA676ECD6 /* RKHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F33AA92E57D33A8DE7D71147E3BBDD3 /* RKHTTPRequestOperation.h */; }; + 1669A58CB3E81C88673C6DDFE52665D6 /* PFCurrentConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A0306DBED132EEB7F48CCF5885EADEB /* PFCurrentConfigController.h */; }; + 16A3DD222EB47C7F95A50C5CA137F259 /* RKTestFixture.h in Headers */ = {isa = PBXBuildFile; fileRef = E51BB433D7AADF8C023202546330704A /* RKTestFixture.h */; }; + 16AD66178FB1BFEF1C8E27AC7FEF05FD /* FBSDKTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = E54E8701407F893752653C4221AF069C /* FBSDKTooltipView.h */; }; + 16B1EE9A2C419506D63026622C13EFF1 /* PFSQLiteDatabaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD931B78D3EAD28BF5F58F187AEABB9 /* PFSQLiteDatabaseController.m */; }; + 17A60DE752CD6B98B110ED27EC596403 /* PFOfflineQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 41D4AFB79D025DDA3EF311ED8B830DC9 /* PFOfflineQueryController.h */; }; + 17D1E18D8FE2FA636689AE5F11FF745B /* PFUser.h in Headers */ = {isa = PBXBuildFile; fileRef = D744AFD793804AF3C84822508F5A5B1F /* PFUser.h */; }; + 18CF12E7C98D66CE94DBE82619460126 /* RKOperationStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = 103E4A41DD6EB7EE5C4377711291077A /* RKOperationStateMachine.h */; }; + 18D19D961B9AB9C6B471F9768C507607 /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 98E26BE57B0986BD287273920656152C /* FBSDKCloseIcon.h */; }; + 18D96E233E2B72D021830D100071A88F /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = EE91C76BB85C4E576878A7495046B128 /* FBSDKAccessToken.m */; }; + 19131ECD97988C2E0A7D828C1C3133E7 /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = C2C5BFAAE603122C4F742787E40F1FA8 /* FBSDKApplicationDelegate.h */; }; + 194040F9162AC4370EA2207CAFB4F385 /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 04DEAAD70B0460B7272FDFBAD65C2F1A /* FBSDKAppEvents.h */; }; + 198D036092702E8AF646271064ABB639 /* PFURLSessionUploadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A5E5E8ED6BA6053BE27E35F8E7B4BEEE /* PFURLSessionUploadTaskDelegate.m */; }; + 19FF72C0A165707AD00B46F3535BF306 /* PFCommandURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F21EA2F4A5DDD76A519682036295D1A /* PFCommandURLRequestConstructor.h */; }; + 1A074041FA5308016DBEE2905C5EB2A5 /* RKNSJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = AA62DC87D5F1898752152729F580A3A0 /* RKNSJSONSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1A875C4481102F49D5ECE0EA0B06145E /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FFDF70586FE4143304DC181DA940A51 /* AFNetworking-dummy.m */; }; + 1AA3A74D556CBAC2478A4F9990BFEC08 /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DEC313363BCD979A9C39D7B1E66A2755 /* FBSDKTestUsersManager.h */; }; + 1AE22B14B900081E3F50FBA27C496913 /* PFEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CC8DE7490D76AE8614531D09B7CFA9D /* PFEncoder.h */; }; + 1C33F11DE5031EC30BC119B6B13B39DD /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B4CB8ECB1CC3450C6965777EB3C8B67 /* AudioToolbox.framework */; }; + 1CAB6029272599FE06ACBC43D39F0C49 /* ParseModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 392B81F3F69ACC5FDB7A16EFD49EC5CC /* ParseModule.h */; }; + 1CEF5F47B78C3B1F4FC3DC2A3043281C /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 637C1162277BA70B8FC486099BA5E68A /* FBSDKBridgeAPIResponse.m */; }; + 1CFEE22022532C92122574E140CB27BA /* FBSDKLikeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = DC31DCE7EACED0F72777050473D30EFC /* FBSDKLikeButton.m */; }; + 1D1D4A63CA7E7C9C93B672370E9261F6 /* FBSDKAppInviteContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 0072CE5DF3D9990F609BD5035548F5B9 /* FBSDKAppInviteContent.m */; }; + 1D25F16E42245E7F9ED399E79A782AF8 /* PFCommandRunningConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = CBBCDC44D6533386C15445A8DA75780F /* PFCommandRunningConstants.m */; }; + 1DC7F45A1971D9D7595B4DF9D5AE1487 /* BFWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FD3846A7DAFF7196AF5C2F45BCD8A5A /* BFWebViewAppLinkResolver.h */; }; + 1DD44AE9322BF5C38003687F763A49B0 /* PFInternalUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 11E9E6138AF7E67248A1C931ACA660C3 /* PFInternalUtils.m */; }; + 1DF304873442F38920E1691BCD46E4C9 /* PFUserAuthenticationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 00BEC727AA03A29C964A4BB55F65EC55 /* PFUserAuthenticationController.m */; }; + 1E06D1E8ABA58B1F8D93AC474933AED6 /* PFSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 92093FA98E5C9EFD88FDF61A6A4E6451 /* PFSession.h */; }; + 1E2B7478F9A071679BAD0B2B90203C58 /* PFInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FF60E0CE99104F46FC615B3C7403E91 /* PFInstallationController.m */; }; + 1EEA52E11250AE7F891BEAB357430C95 /* BoltsVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = B1C7ADB3EE2B383850B9230A7B460906 /* BoltsVersion.h */; }; + 1EFDE74434A6084134CFBBF5FBA37331 /* PFRESTPushCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CB2A1FCA55FB8C6D0C65EF34A7E0C1A /* PFRESTPushCommand.h */; }; + 1F4C9368105876D7EE4EBDB3C73369CA /* FBSDKShareLinkContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B6DB762A22230B1B2984E7A10A6D4431 /* FBSDKShareLinkContent.m */; }; + 1FA13C3A4A2F8C73655A15942B256594 /* FBSDKLoginKit.h in Headers */ = {isa = PBXBuildFile; fileRef = E29A4EC1C5F11EA0A4FDAD2152F177FA /* FBSDKLoginKit.h */; }; + 1FA37DC1F9BA323A9E932A24AA6B3FEF /* PFReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 6277470164DD2F4D1FC49886CF94D214 /* PFReachability.h */; }; + 1FA415C3205971578745EE767632508E /* PFPurchaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C73B2D9D4B827BC0A14F34532E43F41 /* PFPurchaseController.m */; }; + 1FAAB738BDBFD14A7B2E1C9FE9F7CA82 /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601718FD0C0CFCF5DA762D153DB3279 /* BFTaskCompletionSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1FE020448F48D06DB2F2AF2187DC70D1 /* PFRESTCloudCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = A31F406B4BFF1949AF98275105F6457A /* PFRESTCloudCommand.h */; }; + 209D7DF631C4A5C22409B0709A1CF706 /* PFMultiProcessFileLockController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E3ED96EE4D0B9F695BE889B00DE6407 /* PFMultiProcessFileLockController.m */; }; + 20BBD79A31D823666D0B3A0CFAE82214 /* FBSDKShareConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F6C04F3A381B95E747E5867DB4C81EE /* FBSDKShareConstants.h */; }; + 20FA43FA68DF7B3AA0C3287CEB16B45F /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BF338323FECE8F074D22D8BD870DF10 /* FBSDKGameRequestFrictionlessRecipientCache.m */; }; + 2156E59F1188BA47E18D0F81D6AC802D /* PFCommandCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EEE62E07048808E1B20ADEC99B4B70FD /* PFCommandCache_Private.h */; }; + 215FD68C4117116C45B35634DEC57934 /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 80D80DCE3A20EC46EAAB66B362677E30 /* AFHTTPClient.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 216960B1853453C77581F1F43F292D25 /* PFEventuallyPin.h in Headers */ = {isa = PBXBuildFile; fileRef = 55B85002DD908349F1000F7996455DE1 /* PFEventuallyPin.h */; }; + 219C3827432B312C5FB04AEAA9C26E16 /* PFMutableACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = A6C3BBB9984F7D2959A0E80137315CF3 /* PFMutableACLState.m */; }; + 2207E71C6E656FFF704F6A458FFD9750 /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E373E20F8B2B8C3F9D13CB19C365A5B /* FBSDKAccessToken.h */; }; + 220E6346EEF271DD5FBA360A7E076851 /* FBSDKGameRequestDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DFB97640F65DA922830BFCD6E8BAE3F /* FBSDKGameRequestDialog.h */; }; + 222738C7317F7C959B8136CAC0C41697 /* PFObjectLocalIdStore.m in Sources */ = {isa = PBXBuildFile; fileRef = DE8B4CF37AFF88C9FFCC3ECBFB68A45B /* PFObjectLocalIdStore.m */; }; + 22285085488C28F72D4A8E6FE597C3F4 /* PFAnonymousUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = CE5437B74A760E4237FFB7AD86EA7AF5 /* PFAnonymousUtils.h */; }; + 222BC73BB2DCC1670840CBF0C7918219 /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 449D2F1679AC195C51DC348284B99B77 /* FBSDKSettings+Internal.h */; }; + 22EEC676AC4EE23B3D39371191826420 /* FBSDKLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A7CF9343BE7F2F1B6FB78E1A12A6B72 /* FBSDKLoginManager.h */; }; + 2362DD22CB38548C38463877211F2AD3 /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 2002E8422D89C583334968262BDCE8E7 /* FBSDKWebDialog.h */; }; + 23F64C0DEB9100774DC815861B20FF24 /* RKObjectParameterization.h in Headers */ = {isa = PBXBuildFile; fileRef = FFEAA8C456F1D711FDBADC3559935B4B /* RKObjectParameterization.h */; }; + 2442532FBCA5707E5217A68EA0594E96 /* PFErrorUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = EF3885FD8EAFFBF7986ADCB2A2DE77DF /* PFErrorUtilities.m */; }; + 24C7BBC40CF0B023B820E9B81B4DA070 /* PFPin.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A69674A69ED07E630171FC8E7DE679B /* PFPin.h */; }; + 24CB2B8CDC5F16CD9E14DA26DB83DDFA /* PFPropertyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DB137E8A7C92A13BD6EB1FE46FAD717 /* PFPropertyInfo.h */; }; + 2515D00EB9ED2D21B6A1D2A019CA407F /* PFThreadsafety.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A43F656D15828E22D2934C2706AC1BF /* PFThreadsafety.h */; }; + 251789CABCBADBA6608A463D8B43327B /* FBSDKURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = D2C830B4D9FDB6DA319A8D346A942692 /* FBSDKURLConnection.m */; }; + 2564365FB5C724F430D231922B775D60 /* RKPathMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 2109F27F00016BC697F3694A3C8A4EF0 /* RKPathMatcher.h */; }; + 2571CBB40950A47C696F3166573C2E03 /* PFInstallationIdentifierStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 279B027B17D8D0512BA90F26313978F2 /* PFInstallationIdentifierStore.h */; }; + 25C107A17D548A434206897795BDE83F /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = 5765993E55A9BEF96BE2124E9CC1E550 /* FBSDKTriStateBOOL.m */; }; + 2640A12FB3BBEFFE06930194C91A3D0C /* PFRESTCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = B7B64451F8A6E1AC2BADE39B3C1CABF8 /* PFRESTCommand.m */; }; + 264D7F2AB36480290C7CE960CA5D049B /* PFConfig_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F1C624B7EAFBBBECE836A2F4331DB5A /* PFConfig_Private.h */; }; + 26CA0B5BAAD13B57BEE6231A9404024A /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 45498ABE1A6B5EAA74C26A43CF36BFB7 /* BFURL_Internal.h */; }; + 27329EF5BB7C0D6973A2A6B02AAB96EC /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C21952B82AFD2B07F65F1B3D08202AE /* BFURL.h */; }; + 274A8966A2797D607CBBC96CEC3D6A12 /* PFOfflineQueryLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = F15AA0B0FAA03DD30C07E23D2030823C /* PFOfflineQueryLogic.h */; }; + 2771126CEE0ED676666F21E9A617ECE3 /* PFDefaultACLController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06C7256FA983EDE2D306A89B041DEB9 /* PFDefaultACLController.m */; }; + 27CB1B6BD10BBF2C8B1581E3C2A67020 /* RKBenchmark.h in Headers */ = {isa = PBXBuildFile; fileRef = B3430C5AC8208C2B671B4D7823955F60 /* RKBenchmark.h */; }; + 282284A3A26A1D0B38FB88FAD808EE87 /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CAD9C68AAF00E405CF6AAA2841B7C73 /* FBSDKWebDialogView.m */; }; + 282F90745F7864ABC8C81BFE6D755924 /* lcl_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D97C25717E3E4851FE4EFE780A45434 /* lcl_RK.h */; }; + 289440F037321298F6CFAE462EAB2708 /* PFJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C10D8C3B24FB7B0FC1A118A6F1B04FB /* PFJSONSerialization.h */; }; + 28EC0BC1DCF43CDD52A475B165A8FD73 /* FBSDKLikeControl+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7078C0E27AB4BBE276699BEA6B6332B4 /* FBSDKLikeControl+Internal.h */; }; + 2912A7D737F750A67C5DBB6C94E21B08 /* PFSessionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6F5C52DD8416B5F436BA714F2292F6 /* PFSessionController.h */; }; + 2A090259083345B82C50D513C268C552 /* PFAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = BB0CA4DECDBC711B22322A480B4D2DB0 /* PFAssert.h */; }; + 2A34C2128A8898FD3560B05FE8AEC6E6 /* _FBSDKLoginRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = B306BF5D4F5F8F5EDE605D550B1C60E4 /* _FBSDKLoginRecoveryAttempter.m */; }; + 2B03BE59ECF8AB8DB61087F8F4853534 /* RKDictionaryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = F008693162E318C7C2752AD302CFB95E /* RKDictionaryUtilities.h */; }; + 2B96436D95914F65C562C78AB09B64A9 /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = CF7DFB4A5A35BCE03D459F72C536D132 /* FBSDKProfilePictureView.h */; }; + 2C82478070852B2BFF637238B76D1102 /* RKManagedObjectRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 773B71C6DCFE021055288283663560C9 /* RKManagedObjectRequestOperation.h */; }; + 2CD1ECA00B5641FC62A5681022C698F8 /* RKObjectManager.h in Headers */ = {isa = PBXBuildFile; fileRef = ECBDBCED6B21C2F082743CDE93ECBC76 /* RKObjectManager.h */; }; + 2CD8A153F9E6D040F47CB488191B4675 /* RKDynamicMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 98D59999C2F13A02F8927597F85000C8 /* RKDynamicMapping.h */; }; + 2CDDB7A231AE639E1F1988F2F0DA00DC /* PFPropertyInfo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 83ECAB9F08AFED3BB4204FD83415518B /* PFPropertyInfo_Private.h */; }; + 2D9E2BCFF95F68987970E71AF56BA281 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 2E001B9E32766B89D068E48697778482 /* RKMIMETypes.h in Headers */ = {isa = PBXBuildFile; fileRef = E7C4A5E56ABED18C3E81AB6301A8CB78 /* RKMIMETypes.h */; }; + 2E3687F32FC0947D85010A0575E153D7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 2ECC223575FB09382C21927D1077E5E0 /* FBSDKBoltsMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E79911FE858017F50A495D51DA3DE5D /* FBSDKBoltsMeasurementEventListener.h */; }; + 2F0466053F46CDA3975A8F0B2C973555 /* PFRESTObjectBatchCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 04C0F1EBAB58CF7749671D83B4E420E1 /* PFRESTObjectBatchCommand.m */; }; + 2F83FE38563565221965FB1F72C8D8E4 /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E0932D59414A78A0F565507651988C6E /* FBSDKAppEventsDeviceInfo.m */; }; + 30152EEA6C1FB5F3A46B5E6D9E1866FC /* PFInstallation.m in Sources */ = {isa = PBXBuildFile; fileRef = 542D17E28458EBE4D318648EEB3B381B /* PFInstallation.m */; }; + 3056984029600254636E6C7BCB7068B4 /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = B44F9A0151A29D7133BB6B1A3BBFA048 /* FBSDKBridgeAPIRequest.h */; }; + 308248C696569BF007E57C2520B8194C /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = C7249D4C5D5FE59893DC804D17C271BD /* FBSDKTypeUtility.m */; }; + 3096466F4630E924DB0B97E337933B26 /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 1955631553D95C0ED5688DA6F29CC8E6 /* FBSDKConstants.m */; }; + 3127CF609B257C5A3A30B4ADC3D3A7E3 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A51EB7786397F5EFF35AB3BD9CEF4F08 /* MobileCoreServices.framework */; }; + 314069A93A029213626B93EB93610079 /* RKMIMETypeSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = F43593C0DC2EA028CFDED6E93DD31EBD /* RKMIMETypeSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3174730BF077E855590518B3457069F8 /* FBSDKShareError.m in Sources */ = {isa = PBXBuildFile; fileRef = 234BE7352A8ED0F63714ADF373DC4713 /* FBSDKShareError.m */; }; + 3179B1591E9D904EC929C13B9670DD79 /* ParseManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E2BB3CB62DEEB960D69BA58C987EF78C /* ParseManager.h */; }; + 317DFD4D6FFBC372F352C1D28E1BF585 /* PFLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 02577CE0CCF20FCB28AE72A1BA70963E /* PFLocationManager.h */; }; + 31E03BBD64B8193A5A9C6C7FF049CDE3 /* RKDynamicMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = A0426D7149778C1DBF70DD5B3253A081 /* RKDynamicMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3214374F6CE47D604F5D0A6E41C5DCFF /* FBSDKMessageDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D3EBBEF6D5B4018AA707132922DC9B4 /* FBSDKMessageDialog.h */; }; + 3242ACAE66A3D0C3A348362AE7EB96EB /* RKTestNotificationObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = D483D1D469EA00BF8839FA7029495D60 /* RKTestNotificationObserver.h */; }; + 32A1FA10137D497E941428136267CA6E /* PFFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 26648E7CE5BE1B08B80D3B2DAF2A53C7 /* PFFileManager.m */; }; + 3342E425FE281AB7323D6706237A2FDD /* PFWeakValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 763AC253EC0FD55889EFD9499486FE4D /* PFWeakValue.h */; }; + 335D7BCABF70FFC8383F8A0611246675 /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 749C7452D497A9A10B0021891AC18286 /* FBSDKErrorConfiguration.h */; }; + 336DDE9C1339B3E1C10A65C1ADC3ED5A /* PFCloudCodeController.h in Headers */ = {isa = PBXBuildFile; fileRef = 33244990175A48516182AFDCEDA52E66 /* PFCloudCodeController.h */; }; + 338AC89A56557B049850D4C9BBD3FC7F /* PFSession.m in Sources */ = {isa = PBXBuildFile; fileRef = DE5E904CC7ED8533B3A17E70BFCCDB42 /* PFSession.m */; }; + 343F80499D58275C98B2A493E79CA832 /* PFMutableObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DB2691909F8F7F08DD7D43B4054114B /* PFMutableObjectState.h */; }; + 347B3C92362CDFCAAA3F0D16BB79DD75 /* PFFieldOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 26A65996250E9A6E0A45799C5C80A4D6 /* PFFieldOperation.m */; }; + 34C22BBABD69A8D88FD8DFBDBEC7892E /* PFApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7DE1AA020492D010862FA4F2FBC7C6 /* PFApplication.m */; }; + 34D4E13D2EF2F56D363822822A206D07 /* PFObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FC310BBD6C8CF36F6B10AEF4AE850E3 /* PFObjectController.m */; }; + 351E6DA5E99D075F0A6EBFBB4B8C246D /* PFQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = D7B4BAE18CF4FF92FDA44D8959B272B0 /* PFQueryState.m */; }; + 3521883602EE9F7D16DF3A5DA7876F6B /* BFAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = ABF0B6755B46A73A4D5A66DC91176994 /* BFAppLinkTarget.h */; }; + 3521C3A0492CE669FF3994A3B9092698 /* PFEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = ADD502BDCA2209045FB7EE614931BD10 /* PFEventuallyQueue.h */; }; + 352F099A847CDF8860CCC2DF4C2DBA99 /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 1779F15C59809673515A3EBCF2C22457 /* FBSDKPaymentObserver.m */; }; + 3564BDE7D6AC43505B004147D0F3F96A /* FBSDKShareUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 22736BBB7E29843BFD25AF6EA526FD54 /* FBSDKShareUtility.h */; }; + 35C74ADE21E53C1A980B0F09B6A69441 /* PFObjectState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D3AB2BDF8EB2BCD1EDB0AE62B5E7FE1 /* PFObjectState_Private.h */; }; + 35CBB8FDE995DF721CBB0CDFE012C9D8 /* FBSDKLoginManagerLoginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = AA6AE3659CB5F993D0249F89C25AD457 /* FBSDKLoginManagerLoginResult.m */; }; + 3604341EAD3633433B487305A3D71A76 /* PFCommandResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 129FC7A2DDACFE1328825F6A865367F5 /* PFCommandResult.m */; }; + 3609521E7B4772D67132F8DD9DAD0EEB /* PFObjectSubclassingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AE7D5E655DFEA88C846CA2F49FD7F27 /* PFObjectSubclassingController.m */; }; + 360E0335AFBE716BC449DC5AE274EEEC /* FBSDKShareLinkContent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 46CD7CED669BB2E7D7C29361322568D4 /* FBSDKShareLinkContent+Internal.h */; }; + 36B07F714856EEB15D38BE6949CE4ECA /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 4943E9CC3F93FDF967E81314D76CC855 /* FBSDKGraphErrorRecoveryProcessor.h */; }; + 36C509AB4E714B60F207DCDFD4F6E76B /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D76BC349DBB9D1197FFC7ED4732AAA /* FBSDKAppEventsState.m */; }; + 375BA2E48BF70455B6F5124A7AB5DD9F /* FBSDKShareAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = AF0E2DA4583C19DA08D84DBF506EC7F3 /* FBSDKShareAPI.m */; }; + 3784B93C592189DD7641DD0C055EE510 /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 73DF5CF1E91847F2BBD8BC5574BE7A24 /* FBSDKApplicationDelegate.m */; }; + 3793FECEA3A6BE4D02C5F7852EE3F7B4 /* PFProductsRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B176B4F560C96F25001CAAEF4C24496 /* PFProductsRequestHandler.m */; }; + 37A8328CAC5B9F9B21F4E0F7F7F88C90 /* PFObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = A07FB85A098FAF188DB71104131A46B2 /* PFObjectUtilities.h */; }; + 37DC8354ABF030C71775008A29B0E4E3 /* lcl_config_extensions_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = B83F7B501488845012B0097456793ED7 /* lcl_config_extensions_RK.h */; }; + 38DA7CBB8D5C6233F7777A13CAAB2333 /* FBSDKLoginManagerLoginResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B4DD5861C8879004366D84A43D21E0EB /* FBSDKLoginManagerLoginResult+Internal.h */; }; + 38E002CAE70208D67028CA130CBC8B13 /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = A1DAFA76443338477CB91F2DC0FEDC9E /* FBSDKMonotonicTime.m */; }; + 39D5FA61F8BC6306CEB6FD0040846723 /* PFQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2850C6A23236DBC93BCD286061735858 /* PFQueryController.h */; }; + 39FD00E726ED2D451932BC6D5173231B /* PFOperationSet.h in Headers */ = {isa = PBXBuildFile; fileRef = DCCA1D25CC0F8A31965C4458FA970C52 /* PFOperationSet.h */; }; + 39FE6E18FF223B1EDE632A6B84889BCC /* PFPushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A0F3D060245CFF4C9AD4E4E4B1FE443 /* PFPushManager.m */; }; + 3A04E842AA18A356259934EF2599629D /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B8D0C5A6A7DDEE013D14931B007DA4 /* BFAppLinkTarget.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3A3008F77AD2EA8D8F372EC10733B00E /* PFRESTUserCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D225D38EBD061B9B317B5F017A8DB8 /* PFRESTUserCommand.m */; }; + 3AE80C219B4B8E1118C4032D8A203C36 /* RKRoute.h in Headers */ = {isa = PBXBuildFile; fileRef = 82F4CF881DD119649C8445AB7AD1733A /* RKRoute.h */; }; + 3B16D2CF7B1C7C98DF560E1208D45CEE /* RKTestFixture.m in Sources */ = {isa = PBXBuildFile; fileRef = 4294F692EAF153601A3A4B780A9C0668 /* RKTestFixture.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3B59099B7FF527F1699FD79F0CD6F217 /* PFRESTSessionCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 66C2AD35A6E51D88EA4ECC24C43ABA8C /* PFRESTSessionCommand.m */; }; + 3B7EBA7886CB6F28D8C9BF552955CE2F /* RKRouteSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B949380B0A36EE9DCE1BE3DD205872D /* RKRouteSet.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3B80CE07A2168B1C91BACCCAED54E24A /* lcl_config_logger_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = B96FAE035A72F2B9E4745AA2941D21DC /* lcl_config_logger_RK.h */; }; + 3B98740FB38A404583CB8E2504C36BB0 /* PFPinningEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = D5D5CF2EDCF3EFE196B7789A29C02031 /* PFPinningEventuallyQueue.h */; }; + 3C1DC8F3C0D0C2D975C5256111A23858 /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = A794CC4D4A2C1FBA46304C8A08FBBF13 /* FBSDKAppLinkUtility.h */; }; + 3C8B562089BB841438C603BABE32632A /* FBSDKShareConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = D20725012BA649DB28A11E8B87CB03B2 /* FBSDKShareConstants.m */; }; + 3CDB89F3725ED26B768FE843D82396EF /* RKRouter.m in Sources */ = {isa = PBXBuildFile; fileRef = D145E83E2215C35E1D66DCFD70095EAE /* RKRouter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3D17F603F3AA75993A5871AA88E82EA8 /* FBSDKShareVideoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CEB2F6C3776B2FAA2762E5C908FA891 /* FBSDKShareVideoContent.h */; }; + 3D5474C1E69D04F528875AC3F12BC26B /* RKErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 3954F2A0287065523FE93833957D805D /* RKErrors.h */; }; + 3D67F027014DB141F5CD6820ED830BA2 /* RKBenchmark.m in Sources */ = {isa = PBXBuildFile; fileRef = 8430E4A0A4791DC7D0F9CE485D860A00 /* RKBenchmark.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3D72D32F4B1A08F0DE53710D9B65D45A /* RKObjectMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DE47CA373FCE248BB502DF421F6B2A3 /* RKObjectMapping.h */; }; + 3DA7C9EC3F83FAF0FB19DC783FBBF412 /* RKPathUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 259C735ED2FFC41359586661CE813736 /* RKPathUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3E0E763F67DFDDA31AF5DBDEAAA1207E /* RKLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BADEB18E715ADFCC4E321048C18D8CF /* RKLog.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3E923BE69D091AC983DF766EB1703F92 /* PFPush.h in Headers */ = {isa = PBXBuildFile; fileRef = 40739D148D4DAE664411F3F2DBE4D3F8 /* PFPush.h */; }; + 3E9373D4AA88F97BD38272875738D398 /* PFProduct.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E23F80B85568CE234F07C36444A8868 /* PFProduct.h */; }; + 3E997FD51BB27FF148B9D243F6804D23 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 3EA794DCFF7259995465393C2F8F2F3F /* PFObjectBatchController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4116573287BF306C8EC05DBF93BD549B /* PFObjectBatchController.m */; }; + 3EE409808915A90F0D75948C1371C47B /* PFObjectFilePersistenceController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8998D38349136ED287AD6B1F81B2A2C3 /* PFObjectFilePersistenceController.m */; }; + 3F4D16C2F94D67B739CFFCB65181A7C0 /* RKResponseDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 22BCAB2ABFBB3566EC2E7ED45706F704 /* RKResponseDescriptor.h */; }; + 401C0CBB692B03B532B658368BD5C4FB /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5243AD5D9D864456CBD961BC945843F /* SystemConfiguration.framework */; }; + 40C67CAE468EABF931B98B2E88DEE324 /* PFSQLiteDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 02F8999A03E5DEA16BE168121A32E180 /* PFSQLiteDatabase.h */; }; + 413DB25BECD1AA25EF0D2EE95263DD20 /* AFXMLRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AA3D565456E290589B27357D512E69F /* AFXMLRequestOperation.h */; }; + 41CBA3A465424FF859B076C2D5E4428E /* PFAnalytics_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E82158333A26FE08F2D24FE0960BB5B0 /* PFAnalytics_Private.h */; }; + 4248DC99938BB7DEC770F5C5387EE00A /* BFDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = EF76AEC2726221DE7C0236DFE4624164 /* BFDefines.h */; }; + 4333AE53D9FC43FFDF43A95B64249697 /* PFQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E3986BD59BF447A1F15BD4527B7D366 /* PFQueryController.m */; }; + 436FF1E87CE8508ADEA80DA9F5A7FDD7 /* PFKeyValueCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B5B3E3A409593357C8EDDEDDC0651EA /* PFKeyValueCache.m */; }; + 439602F2414CDEB8A062B5FD625BAFD9 /* PFACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = 675939A97597CD2EA04CD4995460A6C7 /* PFACLState.m */; }; + 43C62E1AD429F5F56736CCB4B27ED1D4 /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 193263D0A1C4B4903D81B084F3616AC7 /* FBSDKProfile+Internal.h */; }; + 43D53A63A6745A1A21A201B36BC07974 /* PFPaymentTransactionObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = CA8AF7DF58F69854AA20C03B140C8802 /* PFPaymentTransactionObserver.m */; }; + 441148A00F86CF3ED1C359BC30D9802B /* FBSDKSharePhotoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 796C03163B04A83EF5A5417BD0C59CA0 /* FBSDKSharePhotoContent.h */; }; + 442868FA6C128D7763F07031469240DE /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71AB35520DC69025479E89EC80D0D204 /* CoreGraphics.framework */; }; + 443C1CF5A54599280435A5764BC7AD29 /* Parse.h in Headers */ = {isa = PBXBuildFile; fileRef = 942A952E1E39A725636E8BEF6FDDA9F9 /* Parse.h */; }; + 4443DA164C04807EF22B9E2FE3A40CEE /* TKEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 02B4ADB1ECAC920122E657AE18B10BFE /* TKEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 446BA59388843F27C4A3C3C28A81F12A /* PFAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = B8C98D684B355E8344D062BD7BF8315F /* PFAnalytics.h */; }; + 446CC1EE67B0B5F1F80B6FEA0F5A7ED0 /* FBSDKTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C5C8164C6C45E75534AA683EB3EE80B /* FBSDKTooltipView.m */; }; + 44D117C3BBC98D344847AC726EFAC590 /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D87F51C610B0FE64B3895D47FCAF2B6 /* FBSDKLogo.m */; }; + 44D58C838E846275EC8A27ECBF29DA9F /* PFObjectFileCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EB0814787ECF1B4820F7A3680530AC3 /* PFObjectFileCoder.h */; }; + 44E7B7009635960A4666322CC9C335A8 /* PFAnalyticsUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = CB2EAD42AB8183945FC7A12E3FAE1960 /* PFAnalyticsUtilities.h */; }; + 44EEBB71B919C890EC133515DAADA53E /* SOCKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A98B34414903617DDCC4DD35D0ACC8 /* SOCKit.h */; }; + 4575524940A028F968811F18C428000F /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 42C79B025767C1D9A3147013CE056436 /* FBSDKGraphRequestDataAttachment.m */; }; + 46460A40566EB1CB1E4FB515B21AD4A2 /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 91D0862B2FAC5E1E4D6ACAB14BE40FD0 /* FBSDKTestUsersManager.m */; }; + 464F5DBB26E86201503ED7F5BB400525 /* FBSDKLoginTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = AEFD765B313DFFD0B0729C789E148EF3 /* FBSDKLoginTooltipView.h */; }; + 46BB12DCC0CAA3F0D2EFEE605A586F04 /* PFSessionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 99BAAC5484715BACEF4A330F55A4DCA0 /* PFSessionController.m */; }; + 474B4FE2195F0D3786209EF09EDA13BD /* PFPushController.m in Sources */ = {isa = PBXBuildFile; fileRef = D13A070075F2FA180B529D107DC47AA7 /* PFPushController.m */; }; + 477136AEEC963924B48D90D694471B15 /* PFSQLiteDatabase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D51A7F9937E1B2641CDCF758F76D7BB /* PFSQLiteDatabase_Private.h */; }; + 47FD83E4A59AD7BEBC4C334A10AE3124 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = 056454EF3FADBB01D32D7C28A920E5D6 /* FBSDKBridgeAPIProtocolWebV2.m */; }; + 4832276DBBFF9C8DA658EEED23908675 /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CBA80D14BCC38865278570CF75FD31B /* BFMeasurementEvent_Internal.h */; }; + 48D8E5B295450D8E1F726BB6AB4757F6 /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = E2590DB19BEB23E0CD50EA9B430C4328 /* BFMeasurementEvent.h */; }; + 48ECB9C2569B303EBABBDDDB3BE18152 /* FBSDKLoginManagerLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A56A201096D2EE5931E4024DA7419 /* FBSDKLoginManagerLogger.m */; }; + 492DCBE9081F45A8B617B971A5B76263 /* FBSDKShareOpenGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 14B70CCCA8DFFB7FFCA35AC2170FF307 /* FBSDKShareOpenGraphObject.m */; }; + 497CA357D4C9F558EC1A7F893BCF0DF0 /* PFSQLiteDatabaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = FF1FEA7B2F9CA31ED6080705A2EA6A8C /* PFSQLiteDatabaseController.h */; }; + 49B57E58230D81AEC7332255C98C3BF1 /* PFInstallationIdentifierStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 83C71B61CCF71858F87CFEBB94CFFB11 /* PFInstallationIdentifierStore.m */; }; + 49D87368E080534F2829BDFFFD26D68D /* PFMutableRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = BDDDC367C4FFD9B99B16C912DD808CBE /* PFMutableRelationState.m */; }; + 49EF6FAA143F4116D84703093AB0550F /* FBSDKShareOpenGraphContent.h in Headers */ = {isa = PBXBuildFile; fileRef = C53B22331817009F0D1E49A90BC5F35C /* FBSDKShareOpenGraphContent.h */; }; + 49F9B4E6A12B39F724C8BEA9F47429F0 /* PFPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 271F7EB07DABBEBBC72C435841D5B7B9 /* PFPin.m */; }; + 4B0728E23CBBDB6147793AD950A6863B /* FBSDKMessengerIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 1127B3C5AFB734B232FDDA51D4E340BE /* FBSDKMessengerIcon.m */; }; + 4BAED37A971E944FAA282D905CC0B69E /* PFPaymentTransactionObserver_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6949E72AFCB7848487C6B092E8E7CC63 /* PFPaymentTransactionObserver_Private.h */; }; + 4BEC5A582E14C9CAF7FF2064863B7C31 /* RKMappingTest.h in Headers */ = {isa = PBXBuildFile; fileRef = A67A7F1AF95165EBD3C0D8E0060DB526 /* RKMappingTest.h */; }; + 4C2EB05C82A1FA468ADAE73953ADCB07 /* PFCachedQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = D14ECFF1D93FDFE7D398C60C541D4D42 /* PFCachedQueryController.m */; }; + 4C33830BE3C170E4CB6375A78A271CC9 /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = 839CDF95C7EB745D855A1D1CD5E90C77 /* FBSDKWebDialogView.h */; }; + 4C8EF69C1B7610ADC270ADF5C27A92E3 /* RKTestHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = D587648C0089A8E5FF455C97FF2B368E /* RKTestHelpers.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 4D1C9613370AE44FEF79C3C6AA5BBD20 /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CBCE8C9C024E2B9BFFE1FA847AB1076D /* FBSDKContainerViewController.m */; }; + 4E0D12CEB233090E07A3EC12601898E9 /* PFFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DD054F75FE35DC95593292D3F5E3384 /* PFFileState.m */; }; + 4E564D425B4E8F7E80F8FF529F31CC9B /* FBSDKLoginKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DBE3A827C4CAF42FAF19063819A6576 /* FBSDKLoginKit+Internal.h */; }; + 4E6EF8C32E62178152875A0EF231C225 /* RKObjectMappingMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EFB8D910130BB4CE5DC011047B4653B /* RKObjectMappingMatcher.h */; }; + 4F0980C558B7B9DA53CE0BD0B6B37226 /* PFDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FCEE0AD84EC6A5CA5478A717BEBA01 /* PFDecoder.m */; }; + 4F3F335C20656E97A48104D33B6AD423 /* PFDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = DA7FDF51B3213CFC74F679CD912F8009 /* PFDecoder.h */; }; + 4F743B762B11CF3C497E0FD4CBDD1441 /* PFURLSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CF2D6AC00B5B6213CA5BA66D3473AF9 /* PFURLSession_Private.h */; }; + 4F78698666F5DD22A6B8C251C8B4FFE6 /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7353118F412B2CA3124108B64BE5533C /* FBSDKProfilePictureView.m */; }; + 4FBEA800074B2BCDC593781BACCE5269 /* RestKit.h in Headers */ = {isa = PBXBuildFile; fileRef = D68740C3275B619CD6272922B9616689 /* RestKit.h */; }; + 500A75B09A88C5CB9A8BCF236F9ADE5B /* PFUserState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 828E3502653848562DD0814140A92CCF /* PFUserState_Private.h */; }; + 507B7C7F3E30F50FF9BAE6C907ECE626 /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 502CF173BC61117E6EE98B0AECE5CB5F /* BFURL.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 512E2D4FEED38C66EC4923DBFB185CEF /* RKStringTokenizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 99CE24FEF0EA1F2943A8DFF00388C985 /* RKStringTokenizer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5134DC1ED5C368631B703B48F3FA51FD /* FBSDKLikeBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = 94B2708249CC1A4C374BE0BE9A5C2161 /* FBSDKLikeBoxView.h */; }; + 51897443D225A1A7146CDD7EA9C07E89 /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = E15937F78BA7C53854BA468EA624BF4A /* FBSDKMutableCopying.h */; }; + 51CA3523EC5FB24F89754DB0488FE893 /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = EB1F007AC472787A75B816C5E983D202 /* FBSDKAccessTokenCache.m */; }; + 52493A2D9336CF921C2D109844F373CC /* FBSDKShareOpenGraphAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C1ADD04949F1ABA82756CBA171DA5EB /* FBSDKShareOpenGraphAction.m */; }; + 528A1E3338AEA0BA99B630E0376E73A9 /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D5B659F40540D61E87428BFCB17AF51 /* FBSDKDialogConfiguration.h */; }; + 52B61A08963CBBA0FB4C125E56151F0E /* PFCurrentInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = A8F0EEC1700298FC5555BA0A53F82E9D /* PFCurrentInstallationController.h */; }; + 530C3054D34C5772D012A7791BEBD97B /* RKMappingResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 757FF14AABAC587C4E6F945A1E8D4472 /* RKMappingResult.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 535C072BDDE463B138751F6BA58018A4 /* PFMutablePushState.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BA13D9D4803FA88A8E6FC6E687D0706 /* PFMutablePushState.m */; }; + 5365C637C63F02E1973E66076518F5CB /* PFRESTQueryCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D2D7ECC712E5A988D37CECB9069F554 /* PFRESTQueryCommand.m */; }; + 537DF62CE12445EB1DAD955A6C6ACC97 /* RKMapperOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DD2F082EFF4A90CEA1BD4B18821FD489 /* RKMapperOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 53DCFF27646D832B660564172ACF94DF /* ISO8601DateFormatterValueTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 76B3B4CCA7886CC75FFCF9656D10AD03 /* ISO8601DateFormatterValueTransformer.h */; }; + 548B9E86168DD8A2E659F23EC4F7A8A7 /* PFCommandResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A7CE6F0005C413065B0AE390477019B /* PFCommandResult.h */; }; + 54F855E7EE9AA06C6EBC3DD74EB75358 /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3C2F4799E92C0B65ADDB13C693731F /* FBSDKConstants.h */; }; + 54F88F11E5AE02A0FF195F47B85C9434 /* PFDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F103B2A584D088B481C2F591B22CB95 /* PFDateFormatter.m */; }; + 556EAD29F7AF6293692B8916CFDCF6AB /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 172810485903145DA5B543BCCDD9710D /* FBSDKServerConfigurationManager.m */; }; + 55794719E57DB7A1DF7B6754190815AC /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = B21B66CA9B865C30407C0033E5E77A5C /* UIImageView+AFNetworking.h */; }; + 5587584620C8F74140437B4EAFDBD15E /* ObjectMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = D6264AE68EC2461B52D7BC087CC60C51 /* ObjectMapping.h */; }; + 55AF31B2E7E52507E13E3EE489CAB42F /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C8452D720D17A4AE9F49D703F4456F4 /* BFAppLink.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 55FFD3A79CC2E66E1F29049972C1CF0A /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EA7DD3F8E2A43DDC4BC7D78D495BE88 /* FBSDKTimeSpentData.m */; }; + 5613B583F78B27E46AA80D7B08593345 /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = E01BDF8B06C7ABC8B0E2C8198B12534E /* FBSDKKeychainStoreViaBundleID.m */; }; + 56363899CDB4F14B74BF72FCFB6AE93D /* FBSDKShareKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 875545166E1B56B37A2E9CEAE067A11D /* FBSDKShareKit+Internal.h */; }; + 569DC6FEB3DDA40D5164D32DA9586867 /* PFEventuallyQueue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ABF154F3CA9CA7655A27F36B3AFD46A /* PFEventuallyQueue_Private.h */; }; + 5705EC9203CFCFFF63B71242D0218340 /* PFRESTObjectBatchCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = E7D83C6103A3717409D4E3BC0251FEE2 /* PFRESTObjectBatchCommand.h */; }; + 584ACB2EF83394FF9A7483F2CF1D3F35 /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 42C4A6EF402B488E5D8EDE80F1F34D3B /* BFCancellationTokenSource.h */; }; + 589E7BF0D65495B04585FA32A0E8CEF0 /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = 506B72DC5629AC3D911C7391ADADB54E /* FBSDKAppEventsState.h */; }; + 58D1F31CBBC230379743A7DCD682B0DF /* PFReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 73923DB118610C08A35942208D9A3213 /* PFReachability.m */; }; + 5903553075A49047E0950C6E0A84D9B1 /* FBSDKLikeButton+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 57633529551BBEE1B15067746D4C1A0F /* FBSDKLikeButton+Internal.h */; }; + 59126DFA8930D70443CEE591F1758298 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B63B03172CDA0B6BED2BB6710B8DF38 /* AFNetworking.h */; }; + 59AE70B21BE3010125B5A4C289D581AE /* PFObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = AEFB5A16335CA052F7F8EF7BD6899979 /* PFObjectState.h */; }; + 59F177028361FDDB97A781AAE29E9B82 /* RKRoute.m in Sources */ = {isa = PBXBuildFile; fileRef = CDABF5602F0E0D707DDD4224CB032D0E /* RKRoute.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 59F4057F341FE5BAF86C9ED8FFEF7964 /* RKLumberjackLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 81C8A7F71F4AB5ED22FA83E37837CA80 /* RKLumberjackLogger.h */; }; + 5ABFF30DE688A485DC7D42DC3D152083 /* RKConnectionTestExpectation.h in Headers */ = {isa = PBXBuildFile; fileRef = 85C3C7141AE8131AC8868EF3F853AD3A /* RKConnectionTestExpectation.h */; }; + 5AD718CF19228CE250EE9C5942ED28FB /* RKHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B31ADE78BF2D9A37DCAF22E2F0D53AC /* RKHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5B5C0205B731E56B6A725E13CA098243 /* PFFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4258F79C649680EAAA4724050C5400A2 /* PFFileState.h */; }; + 5BD0E9128E6F8FE37C92C8C77F11425F /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 82F4B771C010B07B8269F863B9D5E124 /* FBSDKIcon.h */; }; + 5C9809AF07DD032F9FD021A863E7C136 /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 90EF6645B1C52A9102DE489C1AEB98C0 /* FBSDKButton.m */; }; + 5CC98BA3E4146174EB3FBC5D20DC1CE5 /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BCD6FD3DADE66AF00AD766F8C7CAAEE /* BFAppLinkReturnToRefererView.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5D4398B1A4E91318D99351BFA35100D2 /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 09F505C5912DBB85A144A4BB9A39B321 /* AFJSONRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5D7131C252349A6120D8813EB747D742 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5243AD5D9D864456CBD961BC945843F /* SystemConfiguration.framework */; }; + 5DA9A28E3169B2A7B8A809BAAD3E86C8 /* RKRelationshipMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = AD6755DF1120CF7F9CE51A66D317FC9F /* RKRelationshipMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5E84BECEB0443C8B9B3FD0B994EDAEA5 /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = E331A609413384712D37CBCA13A36822 /* FBSDKCloseIcon.m */; }; + 5F0ACB3F15BC23105DBC60FA6F67CCF3 /* PFUserConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 857A31726A217BC7AAB96D91A7951102 /* PFUserConstants.m */; }; + 5F81AF91BD80BAB47165BEA17CA38ACF /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FBEBBBD069AC4F0A63136014F0C9C54 /* FBSDKGraphRequestPiggybackManager.m */; }; + 5F8207F4644833736B306F1F57A1CC08 /* PFKeyValueCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6532B39D03DA6402CDE0AF5FAA88CB85 /* PFKeyValueCache_Private.h */; }; + 5FE0DCADFDD3F32A59E544CF98BBA273 /* PFRESTSessionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = FB33D66AAC9C445AC92D82EBA294DB85 /* PFRESTSessionCommand.h */; }; + 6090EF83E9D0597E4EAA8A2A3E551181 /* BFCancellationTokenRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FCD65509A86CB6A3CBDE7E5FCB1384A /* BFCancellationTokenRegistration.h */; }; + 60B56FC16B23506CC79857255E8F43F7 /* PFURLSessionJSONDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 82DAD225DA2EF99D509E1DCD251CF1E0 /* PFURLSessionJSONDataTaskDelegate.h */; }; + 60CEA0885C29CCA93BF6358AD042F3FA /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = FAE0A480CEB462BDB4902AA2752B2A92 /* FBSDKAudioResourceLoader.h */; }; + 60F38A25DFDB6310A8E294B230FE8B6B /* RKRequestDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = C5BAEE02437FF882C669F3417F738447 /* RKRequestDescriptor.h */; }; + 611039D2BE3210BC332D787307D5DD21 /* PFCoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D95D996872847740808B245E124F33D4 /* PFCoreManager.m */; }; + 6133962C287FD9B396459F292C4CA3E2 /* RKObjectManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E94E46525AFB5C84058140D261543E17 /* RKObjectManager.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 6176AD2985531B49564230661B07EE33 /* RKDictionaryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = D72FC75ED7ED1ECBB9A34AC1705CE17D /* RKDictionaryUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 621B1B7D0F592DB1DD7961731C2EC9AA /* PFAnalytics.m in Sources */ = {isa = PBXBuildFile; fileRef = C2050A5F83DE9760D514859F3A7AC930 /* PFAnalytics.m */; }; + 6274057AA5C456BF9DBCC15ED39BDF7D /* Testing.h in Headers */ = {isa = PBXBuildFile; fileRef = 778D4E4A3B190B10F0AEFE08CC88F279 /* Testing.h */; }; + 6282DAB78EB9EF693393423B89E303A5 /* FBSDKShareVideoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D324B0F0C1603B017A0A195535F6737 /* FBSDKShareVideoContent.m */; }; + 62AC03AAA3E1A91085682875387057F0 /* BFTask+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EF991FB054D4075F98BB9A0E7C563C58 /* BFTask+Private.h */; }; + 6368AB2E120D6F8FC48F58970DFF6766 /* FBSDKShareOpenGraphAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 26E851E7927031416617D440DC5A8D91 /* FBSDKShareOpenGraphAction.h */; }; + 63F64CEFFA730AB5E3433162A7AE3C1A /* FBSDKLiking.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BFF0A5FD4D4F15BC52A5CF35AA8BD33 /* FBSDKLiking.h */; }; + 643204253D2ED23DBD900DC6DCC12556 /* PFURLSessionCommandRunner_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E89B0E24A3183435D4E3C9EDCC51EDD1 /* PFURLSessionCommandRunner_Private.h */; }; + 64786C3E2471FFB18C54491B958F6A30 /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 4312B7DA20D0FDC68E026677B16FB93B /* FBSDKAppEventsUtility.h */; }; + 64B6FCD7B4520F2588FEE0287247349A /* PFPropertyInfo_Runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EEFB0F3823FCEF4E5F3012C82EF7AB2 /* PFPropertyInfo_Runtime.h */; }; + 64C6C42AFFA02CC4E53836226E5C4219 /* PFConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CB667B15CA6726CE1EA77BBAC4BC7FD /* PFConstants.m */; }; + 65471025DA624297CC0E4AFA9F0A9606 /* FBSDKLoginCompletion+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AC358011ABD9D6C4C840D2F2EAA419 /* FBSDKLoginCompletion+Internal.h */; }; + 655154BFD72359BFDA301C638AEB234A /* RKTestConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 55C9501B071548071B0C87CDA9D032F8 /* RKTestConstants.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 655A0B669A924B4AE31129D70784FB93 /* RKMIMETypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 52EBAC1E14508349697276F8E0C80479 /* RKMIMETypes.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 65C5B97B362C88A9C677573B3D03B693 /* PFGeoPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B10539AD7B65940ECDF70BE96FD7FE9 /* PFGeoPoint.h */; }; + 65F55F45327059D9F88AF2CCFF2BC61F /* FBSDKAccessTokenCacheV3_21.m in Sources */ = {isa = PBXBuildFile; fileRef = BB1463FA77383563F1C437523A44E1A7 /* FBSDKAccessTokenCacheV3_21.m */; }; + 6630D0D212E7B8AE5D69DEBC4909AAF5 /* RKManagedObjectRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = EC0A8BE947E2CBB52F80DE18D474CE39 /* RKManagedObjectRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 66B00B5F004324612C1724CE19F19752 /* PFMutableQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = 986A0B2FB090467DD63D523D111D637B /* PFMutableQueryState.m */; }; + 66BB85211EFD612B854906B7996059FA /* PFJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E6A5B35F3A36DB58FE56540BA6EEDBE /* PFJSONSerialization.m */; }; + 680644EF47F01A73A7365AAB594B867F /* PFDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 3911B9D2BBD5CBF1337C009F5F541534 /* PFDevice.h */; }; + 684A5251290479C9ACDB4475F2940FC0 /* FBSDKLikeButtonPopWAV.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AF33E0422D0D6894776A47D9A815993 /* FBSDKLikeButtonPopWAV.m */; }; + 684FB04B26908341179D771F44CE924A /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A37F6B69937BDBBB1A609C50E20359F /* FBSDKUtility.m */; }; + 686756C4CEC0B00FB743AF14B40E8682 /* PFHTTPURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8438C8930C259D5374088068EDEF11A2 /* PFHTTPURLRequestConstructor.m */; }; + 6869D7F49C98AACB83CD2D8941B5024F /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3367B0B681D943417FA5E440D899F4CC /* FBSDKAppEventsStateManager.m */; }; + 68E70C026EDCB8239875BEA879AAC286 /* PFPropertyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AFF4BBCD87A80EBBD6ABEB24467DD92 /* PFPropertyInfo.m */; }; + 690EE192DCB7F5FD1C72C0A7630D3230 /* PFPushState.h in Headers */ = {isa = PBXBuildFile; fileRef = E4A2A7B215D83EE4A1A7A17F363D6C87 /* PFPushState.h */; }; + 697A7506A45ABEB2E388ADA4C925840C /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = D4EDDE3B74C6C46CB945C40C67C4412A /* FBSDKErrorRecoveryConfiguration.h */; }; + 69809238B0561FABDE611AF677BCA475 /* PFLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 895926AE9851CE1F765F43CBEEDBAFBC /* PFLogger.m */; }; + 69A9A1FBEE8290A0146EC75F9958ACBE /* RKAttributeMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 49EA15DA07E51D9C44D29EF7BFB6F1E2 /* RKAttributeMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 6A5CA197C96A6CC6EE167A495A05B09F /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B1C44F7812C72D0C7AF70AF7E3582BA /* AFPropertyListRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 6AA162E7D86F127BA1A7945A64AA0981 /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 12DB62145E101EECBBF2B0ECBD3625D6 /* FBSDKInternalUtility.m */; }; + 6AF334EF4BBC6A6FD3346EA40D5CA725 /* RKObjectMappingOperationDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7143CA35B7DBC71915BDD3C8FFA6F17B /* RKObjectMappingOperationDataSource.h */; }; + 6B49C041DD1CA69CEE38844A46FC981E /* FBSDKLoginConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = F86021BC8DF5012821F54BBFC611409E /* FBSDKLoginConstants.h */; }; + 6B963CD2BF2D0F02D03CD5F67CC0F05B /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C11C508533F23B09A4472C54933C508 /* FBSDKSettings.h */; }; + 6B998B80ABD013DEB4D37A0DF9BB29D2 /* FBSDKShareAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F5B4BDBF3900CA5DDAB9B63E2EE063C /* FBSDKShareAPI.h */; }; + 6BE2110CA4CBCE143965789B832BA330 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 6C4BDAB5F2BED6A17CF575686DA25BAB /* PFDefaultACLController.h in Headers */ = {isa = PBXBuildFile; fileRef = D769A22F6A1292EAFD89F93A0686D653 /* PFDefaultACLController.h */; }; + 6C4D644320BDE1BC6A397D502701163F /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B96A479BB821E005E1541AE443F5296 /* FBSDKProfile.m */; }; + 6C8B8CB55A10C85B31BF0B735C30E0B1 /* PFMulticastDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D78F45D0B07841FAAA5A3283859049 /* PFMulticastDelegate.h */; }; + 6DE52973839454F2DE410A85A425CDCE /* PFAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F0CAB54CFC8BCC345F4138A1EC4D771 /* PFAlertView.m */; }; + 6DE851C2AAF88503F245F250A5351AAE /* PFAnalyticsController.h in Headers */ = {isa = PBXBuildFile; fileRef = EFC051FCD89B2186BB961E6FB8B61530 /* PFAnalyticsController.h */; }; + 6DFA75B508E7E9072ED9E07A19191C5D /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E541C23946CA00EF697F8FA44AB271F6 /* Security.framework */; }; + 6E70C3CB52C461296A5B3187273D7C33 /* FBSDKShareDialogMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F9AAC2C6FF818D6EC48169DC75AF8C0 /* FBSDKShareDialogMode.m */; }; + 6E7DC3D8EDD49882956585EDB0A9C13F /* FBSDKShareOpenGraphValueContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = BADE0370EA2CCD1D36599137E9D79FB3 /* FBSDKShareOpenGraphValueContainer.m */; }; + 6F11DA82F7AF6C9C4BB737C602C973F9 /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AD287C54F7CB5375C2852F3503334A8 /* FBSDKGraphRequest.h */; }; + 6F538A8D204627652A295F762C5F1FC5 /* Support.h in Headers */ = {isa = PBXBuildFile; fileRef = 243B9EEDBFD73BC0E48417E798EB7D49 /* Support.h */; }; + 6F7AEB8231ADCAD9FC73D5392A7529A2 /* FBSDKAccessTokenCacheV4.m in Sources */ = {isa = PBXBuildFile; fileRef = 551D1565F536116924C965E8BC843AEC /* FBSDKAccessTokenCacheV4.m */; }; + 6FC52428542CBDD5AA17FD45E3EE5AA0 /* RKRouteSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 341EA091B57F44C4DE7AEFBD627D722D /* RKRouteSet.h */; }; + 6FCB36E2C0955F23A84EA23D75EC8F8F /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = B9DD727DB3D3919B717CCB2FAE4F0055 /* FBSDKBase64.h */; }; + 7034BA3B00EECFA6B092EDF9E296DF2F /* Parse_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D17108F7FF6F90BEA80F4639A3F398E4 /* Parse_Private.h */; }; + 70531F77925054688B5A2863B2209C32 /* RKPaginator.m in Sources */ = {isa = PBXBuildFile; fileRef = CAAEEA7D83368AA927E7EBCBA6F4E80E /* RKPaginator.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 70B06200154E453E2F8B8452DC00F355 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71AB35520DC69025479E89EC80D0D204 /* CoreGraphics.framework */; }; + 70B6B8575F6F54B1324C1457BEB8BD05 /* RKSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EB160597E8E862ED9A4D2CDE6C5ECBB /* RKSerialization.h */; }; + 711457D4A4EBE9E4AE7F0F81B9137929 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = 677452C3A3BE7F10BDD609C3AF5DA93A /* Bolts.h */; }; + 714BE1AC2526B3BC1562109C08F4A495 /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = 88B6008DB095748E5DD60D4357F1130E /* FBSDKGraphRequestBody.h */; }; + 714C65274187114E32C9796DB3A2EB68 /* PFFileController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CB9E435A8D7599B6B0049E6AFE5304E /* PFFileController.h */; }; + 7155F162641F1D6675833714D700B403 /* RKObjectMappingMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 635550F96E6CB4B30D674CA6B3D59AAA /* RKObjectMappingMatcher.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 72207B02452AB0EDDF0FE5AC43B794DF /* FBSDKLoginTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9EBC7480ED94D3BDC49F07CF67845245 /* FBSDKLoginTooltipView.m */; }; + 724481CBB3913C75C37AA3B614532854 /* FBSDKSystemAccountStoreAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 520097C3241654D444726517A1906AD9 /* FBSDKSystemAccountStoreAdapter.h */; }; + 73FD34365A5B80EC64B0B5A8E99AF46E /* TKState.h in Headers */ = {isa = PBXBuildFile; fileRef = A4F85A759F06DA2C165FC5F9C67479D9 /* TKState.h */; }; + 741ED5F4DFCF51FA348982153375412A /* PFOfflineObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 50352378D38EB15E7B7D74FD48D20236 /* PFOfflineObjectController.h */; }; + 745C38783C1053304B73F0386AFA906C /* RKTestFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = BD77162D04BA4533037493C3BE145CFF /* RKTestFactory.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 74671B80F66F8C7A04D96DADF1722860 /* PFMutableUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = 64E66272745DD74DB658E76BF786B334 /* PFMutableUserState.m */; }; + 747072A3816272600F4B853AC2D43A12 /* PFMutablePushState.h in Headers */ = {isa = PBXBuildFile; fileRef = E8F3BB2B68E1034BACF1F5A876795E78 /* PFMutablePushState.h */; }; + 74994CD76F26EB7B7CF319BA58A0630A /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 84E51A0ADCB24DAC5F16586A7E22A679 /* BFAppLinkReturnToRefererView_Internal.h */; }; + 74D2C3271439D8096ECF2A76DF7BA064 /* PFOperationSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 80BA04F02821688944482E0FB8D4D623 /* PFOperationSet.m */; }; + 75DDD7E7ABEC5725E7B5CDE1AE6D770B /* PFURLConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = A5247A1DF4C0D6237EA1C24BBC7A2C7D /* PFURLConstructor.m */; }; + 76300DBE702A80CC961739A23493D82D /* PFSQLiteStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = BD31E37E459C5578892A42ACCD8A7C99 /* PFSQLiteStatement.h */; }; + 773271EF07F93255CD92F40F5D4CDAA7 /* PFRESTAnalyticsCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 9502680C2A5812E3B95B583AB378FCA2 /* PFRESTAnalyticsCommand.m */; }; + 77AB0018DA45275B3E7BFCDC94D8AABD /* FBSDKShareOpenGraphContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CA70E2AE68629BDED8957B97443D682 /* FBSDKShareOpenGraphContent.m */; }; + 77EC8FF856687110A3538AB69DC07FF5 /* PFDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = C061A6821D5496664B815D95E9686638 /* PFDevice.m */; }; + 780B558D9C23324A76E2300EB403708E /* FBSDKShareVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A451A543F61480DA16C5AF92075E754 /* FBSDKShareVideo.m */; }; + 78A2871CE000B8987FA26F2507F0C5A6 /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E10BAEA96BC88D721B89668384A854DF /* FBSDKGraphRequest+Internal.h */; }; + 78C867C3E7EC565C35E4BC95FC265B34 /* PFGeoPoint.m in Sources */ = {isa = PBXBuildFile; fileRef = 121F69A49C07670028BD2BB1285A2CE9 /* PFGeoPoint.m */; }; + 7908444C47D45F63B7D6E3AB107C9CC5 /* FBSDKCheckmarkIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = D7084EA8F2963F3F4F4C3902295FC9E8 /* FBSDKCheckmarkIcon.m */; }; + 7941DC7315CDE26D59CD0EB217D43023 /* PFBaseState.m in Sources */ = {isa = PBXBuildFile; fileRef = C2709A1DF844E63FBEB934E9A24FAA66 /* PFBaseState.m */; }; + 7953CB89C3F59D4885F3C6DCB7A28A01 /* PFOfflineQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 735762C7D17E4364E90ADAFD2E9C139A /* PFOfflineQueryController.m */; }; + 7970953EEBB8E9B8D59CF92B5ECA9C1E /* PFUserConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A18F7AE2E1FACC4C6227EFE5C4B86A4 /* PFUserConstants.h */; }; + 797CEAA0B00AE0F2FFC971030A142841 /* PFUserFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = 776CD45C316A4D526A9482D3D6C0F72C /* PFUserFileCodingLogic.h */; }; + 79D9CB35E338D0CB12C68AEBCFCC933D /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 64DC079156B1C3D9892D30F49E7CF06A /* FBSDKErrorConfiguration.m */; }; + 7A28B8AD07B76AB3DB44F8CDFE744A7B /* FBSDKAppInviteDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D80A7028E913FB27600E32FE2F0D0D0 /* FBSDKAppInviteDialog.h */; }; + 7A4D2EC16BADC3EDB9E7C60072007D63 /* PFRelationState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A193B521725B41DCBB47C98E8384558 /* PFRelationState_Private.h */; }; + 7A54902B9E0B3ACB2A7B1EFECADF357E /* PFAnonymousUtils_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 12F1636D729AD4B6DCCEF11891F28113 /* PFAnonymousUtils_Private.h */; }; + 7B9EBA366015D5B457AD1B325E92046F /* PFQueryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = B4A4BC05632F91AFEF2CA8594E359431 /* PFQueryUtilities.m */; }; + 7BF055BCBD30254D2FD0ACB56D208D6C /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 66C559E290710757C262E9572627F8BA /* FBSDKContainerViewController.h */; }; + 7C2952F516B00045113908BBF7DC0E99 /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 2281F1087FCCD198F1FD69A1A5036483 /* FBSDKDialogConfiguration.m */; }; + 7C68061FCD10D87488EB98414D244611 /* RKMIMETypeSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = CC80DEFA3FC6190520C4E802B4E816FE /* RKMIMETypeSerialization.h */; }; + 7C8620E50070963E07EAF88D8CF4A37D /* RKAttributeMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = B563402F32E620824AD23105E63019A7 /* RKAttributeMapping.h */; }; + 7CB8D2616D83001B8A93141CA2BF13A1 /* FBSDKLoginManagerLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 932E74B6527148FA6780C77E8DBF2ED5 /* FBSDKLoginManagerLogger.h */; }; + 7CE5FA614C65D51023461EFEDA3F35D2 /* FBSDKAppGroupAddDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 238732EAA8097AAF32A176A68CD82F76 /* FBSDKAppGroupAddDialog.m */; }; + 7D1DF1DAE2CCE5B8852F7715A228B086 /* FBSDKLikeControl.m in Sources */ = {isa = PBXBuildFile; fileRef = C928A35FC17069C2883652CB9DFD6587 /* FBSDKLikeControl.m */; }; + 7DE0147BFAAC8C52F531763BDCACB2C4 /* FBSDKSendButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 844E60D98084AFA1C1191666646A744B /* FBSDKSendButton.m */; }; + 7DF59E1435A9B5FF6E0527FDB56ECD09 /* RKPropertyMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CA7D87557CA7C23E2FD33B16F7B4A87 /* RKPropertyMapping.h */; }; + 7E851432216D305D68D5E8D984712692 /* FBSDKGameRequestContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 80F8EAC3DBA16F147C2EED3D1B93D248 /* FBSDKGameRequestContent.m */; }; + 7EB608B728A52AD779DFCDAF20CC3A26 /* PFFileStagingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B3DCF9225B393FBEC5AF6CCD9267797 /* PFFileStagingController.m */; }; + 7ED3B5AB200513A4177AD21D83E939C7 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = B6707D507E40761A2A3DB33A5EBE648E /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; + 7F266AA9EE266D339D49A0E969988BD8 /* PFACL.h in Headers */ = {isa = PBXBuildFile; fileRef = 36292F1577420FAA6A00FC1B269D609D /* PFACL.h */; }; + 7F26EBAAB782422E0EA8A850890A77F2 /* PFAsyncTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 45870028D12B4C716DCD60DD091B5320 /* PFAsyncTaskQueue.m */; }; + 7F50192A3B43FB6E622F35F32B18BC9C /* PFURLSessionCommandRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DB20E84DFDB8DA61BA09324BEFBFF7C /* PFURLSessionCommandRunner.m */; }; + 7F624540F82068E3C8ED3762BAC27C7C /* RKValueTransformers.m in Sources */ = {isa = PBXBuildFile; fileRef = FA90F3562F16E440E91FA13E29FED87A /* RKValueTransformers.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 7FA1C89D6080BEE224852C72C13D6D5E /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 3732A1AC8F240E488FC16C8707FF1E6C /* FBSDKLogger.h */; }; + 7FC7C69A340784091CA09F04F2C4D983 /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 555A1DB7FA628753475F8E0C531D7624 /* AFXMLRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 7FC91DE6C51609D920E6AE9EF00BC4D4 /* PFTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FE1B46AC0005B96FC3513ECA03CF73 /* PFTaskQueue.m */; }; + 8034ED89D1720CA1553C063505243D16 /* PFCommandRunning.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BC26D7366B9BCFCED00BA2443EC3F02 /* PFCommandRunning.h */; }; + 80407D8CFD66E00DA2C42634D57FEB65 /* PFCurrentObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = 48FB82823746BF27BE7130F2353BC212 /* PFCurrentObjectControlling.h */; }; + 805B5C7F8601EFF4AC20A141A8920907 /* PFFileDataStream.m in Sources */ = {isa = PBXBuildFile; fileRef = D9F3737F5623A34BD5AFA78E4B1901AB /* PFFileDataStream.m */; }; + 80B7EFF63B21D70D7D03657A25AA7759 /* FBSDKShareOpenGraphObject.h in Headers */ = {isa = PBXBuildFile; fileRef = D3C4E0A343874015ABB97CF3BB6C0347 /* FBSDKShareOpenGraphObject.h */; }; + 81124E46F1A8D5CDD47880430ABCFE5B /* PFSQLiteDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 38A77616F3D6A593F41C5A9E9C1A53EF /* PFSQLiteDatabase.m */; }; + 811EAC8E6D816492BA4DD630B64B6E08 /* PFCommandCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C32A41D38BC842721FE9A96A699B1AD /* PFCommandCache.m */; }; + 815B91D3A7A855B5E6EB0DB6D4C49A76 /* FBSDKAppGroupContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8960D7D3ED69E1B3DCCEB842BB3727DD /* FBSDKAppGroupContent.h */; }; + 816C8741A372E6B0B343B9C2979B2F8E /* PFFieldOperationDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E58CBB93F5E241E8F3C398FB06283B5 /* PFFieldOperationDecoder.h */; }; + 820F763472037E53E4796360BAF8DAF0 /* FBSDKLikeObjectType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DC7FE94FD4993099292F9042265623F /* FBSDKLikeObjectType.h */; }; + 82484FB028F71C2A18DA9A687708C6EC /* PFRESTCloudCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = CC83F9AD4B07940AAE2F264DD04DD1BF /* PFRESTCloudCommand.m */; }; + 83571B5C25D75A372990FB58F775031D /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C56FB7EA3918F4E9420A03CBD1DD4C8 /* FBSDKBridgeAPIProtocolWebV2.h */; }; + 8367F497608E4E978AC85C9201057F28 /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = D5CFF5109E2B6B4C6F5E6087969F25B2 /* BFExecutor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 83A2308F1A820A9AE24A2A0C0696F262 /* BFAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 23780D118CBD55B9811B664EAE111A4F /* BFAppLinkNavigation.h */; }; + 83B200A2264FABAAADBBBE3355B988BD /* PFURLSessionDataTaskDelegate_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C9DA1DBC1BE40D87F0CDE1566117504D /* PFURLSessionDataTaskDelegate_Private.h */; }; + 849D48E2B21EB1B116FFF0C4F686DAE7 /* PFURLSessionDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3295D89852F84111A5FF8AB168AD2F73 /* PFURLSessionDataTaskDelegate.m */; }; + 8526C9EF4EE664BFA507C921AFACEF23 /* TransitionKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A3CCA72533E35C4376B1E8AECC9627F /* TransitionKit.h */; }; + 8528AF353C87A568A36A67CC4107AABE /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = B177AF318ABF25BE42BEEE03E5A4504D /* FBSDKKeychainStoreViaBundleID.h */; }; + 855CEE1F6BCF1084074BCC8AC4A4409F /* PFURLSessionUploadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = BD986CE8B13B8A0C1F133579BB44D141 /* PFURLSessionUploadTaskDelegate.h */; }; + 859358B83393C54648A62C9CDA04C46D /* RKRequestDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 323152BA48F777D5C406ED5AE427B1AA /* RKRequestDescriptor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 86070D62F7C25EA41C85CACBB8DF1BF9 /* PFObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E3B7FA2A6E0A7ED2742EE5D84DB12A8 /* PFObjectUtilities.m */; }; + 867DB320DD4CB050839389A1BB0555C9 /* PFObjectFilePersistenceController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E78B233EDC284D3081B128801711498 /* PFObjectFilePersistenceController.h */; }; + 8699AAC67CF8535D11120991726B3A5E /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 4533001C2D55630F9C37C6627CA516F3 /* FBSDKKeychainStore.h */; }; + 86C24EAC707FA2133160C7AA132F4716 /* FBSDKURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = D6D2578CC6CCBAA314053520BEEDFC51 /* FBSDKURLConnection.h */; }; + 86D39A49BE6E82211B15687264F9503D /* PFURLSessionFileDownloadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B5452F12D849665274EB43110F07EE1 /* PFURLSessionFileDownloadTaskDelegate.m */; }; + 875B19B2C5F755ED6266F7E8BD9F0116 /* PFRESTObjectCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = DB12D985E758C1B2AC5996A8F052C26D /* PFRESTObjectCommand.m */; }; + 87668BEB2644459D0714A1D916BD3EBC /* RKObjectParameterization.m in Sources */ = {isa = PBXBuildFile; fileRef = 585CBEC762B0BA2C71CFB9F0E84E8B1C /* RKObjectParameterization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 87B8F0D199620CF95AB1FC249403F368 /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = 8268565FACDED1D6C7B9BE1728B7EC67 /* FBSDKError.h */; }; + 87BB678058E30D83A780091B5FF6FED4 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83F2B1D939804694C73E7FCD9AAF4090 /* CFNetwork.framework */; }; + 887C6E013DF079EB8EF5B6F72BCDD256 /* PFEventuallyPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B7B00924E5C1CE262E21FBE11F0636 /* PFEventuallyPin.m */; }; + 88FA83A761B810A90340002D57EFD576 /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F9AB8D84FEE2E48AF3B9F9658D5BE35 /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 899BD0168D0879A433B3E24D881E071C /* PFDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B4DDE724F0C79DF04632181A3641990 /* PFDateFormatter.h */; }; + 89DCEEBB7F2531565138924B9051515D /* FBSDKLoginUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 691DE4C572928B4D4009AA95D722D4C0 /* FBSDKLoginUtility.m */; }; + 89E610C03C0AB4A658E6FD92A3FC7AA6 /* FBSDKLoginManagerLoginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 82E686107E1090E17BFD23A272EE10CA /* FBSDKLoginManagerLoginResult.h */; }; + 89F559D7BE8FC96E8C092B31F5E63841 /* ISO8601DateFormatterValueTransformer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AE08EB61DD10B80E244E727952C0B579 /* ISO8601DateFormatterValueTransformer-dummy.m */; }; + 8A0F2CECD9DDD91A54E8B7B4DB24E6B6 /* FBSDKLoginConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EB6F1445D886E9B17EB6D384EE6DF8F /* FBSDKLoginConstants.m */; }; + 8A5A5D950DE30D7796F24D41F725D731 /* PFMutableFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = DDFFCC76652A57F8AC82219E905AF11A /* PFMutableFileState.h */; }; + 8AAF4E0737895C4A6F96AD130EB41A76 /* BFAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = BD6248F1913A738A21279EA50BBFB18E /* BFAppLinkReturnToRefererController.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 8AD06EFB5A8B1FA75F88414D6A51AD10 /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = F00F8677E748167A500D4089850612F1 /* BFCancellationTokenRegistration.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 8AD10194BE6135D5C73D85DC985209CD /* BFTask+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDEA5FDB2DF43C329614190E12D5AC8 /* BFTask+Private.m */; }; + 8AE18E3F5FB9E121377E758896FDC5E9 /* AFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 36C94BDCD3271399C249A6BF6A0A9530 /* AFHTTPRequestOperation.h */; }; + 8B0C038931DB9E37C4E93AD16106BD26 /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE2369D45F007102130145D672D47C7 /* FBSDKTimeSpentData.h */; }; + 8B250CC7E95C824D1E75461C4C141765 /* RKPropertyInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AA98567E44F5A893A264AAAA201DC0A /* RKPropertyInspector.h */; }; + 8B2A9AD38EC87DE7B7D039BDF5F81B6A /* PFPinningEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 512C3E738619CA90805009D1B56BFDE7 /* PFPinningEventuallyQueue.m */; }; + 8B3551C3785FF40691325863A18E92FA /* RKMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = DC32DADD67B93D4C8A1DC5D924364B07 /* RKMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 8B602196288517BC69973428574180A3 /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 45488E198C9CA5E2D83FDDD1A6F2C741 /* FBSDKGraphRequestConnection+Internal.h */; }; + 8BCDE8B6759FB747A67EC91CA12C6B80 /* FBSDKSystemAccountStoreAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = C487CF8BD9293F62ADC3EC7ED11DF7E2 /* FBSDKSystemAccountStoreAdapter.m */; }; + 8BF3DC4F915897B5B26F59D30BBECBA7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 8D163CF90227676C66E59AC9C29C49A2 /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FD7126F63E44E22CF5C50BA6B03A193 /* FBSDKCoreKit+Internal.h */; }; + 8D34E8CC2BE98E98B00C3A7BD7744D34 /* RKResponseDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = AE1F88C360ED32A2DC0B77A0FB64F684 /* RKResponseDescriptor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 8E194598BA9FA104EBD9F40A911BFDFE /* FBSDKLikeBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 12807CE1156EF23D621FBB87101DEF6D /* FBSDKLikeBoxView.m */; }; + 8E517F1FC5970B63D155F6B6F00AA93F /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = FD42CC4829F51D2B45C0EDB14E79F901 /* FBSDKBridgeAPIRequest.m */; }; + 8E6728F63DC431E34F799F06DDF1CB8F /* PFPushChannelsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 17453FC905983BE633680D64EBDF6BF7 /* PFPushChannelsController.h */; }; + 8F19A51AABD48FA736496786775A4540 /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 32087D68AA15B65193CE803974E093B2 /* FBSDKDynamicFrameworkLoader.h */; }; + 8F2B536B7C3E12F8A089703A8E184EE3 /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 15FDA819E4A67B0052C5B32B6C6BC32C /* FBSDKAppEventsDeviceInfo.h */; }; + 8F318B41E49C31FF2E6C13F6F120FD15 /* PFMultiProcessFileLock.m in Sources */ = {isa = PBXBuildFile; fileRef = 21B3BED0A995DF74C8CE5AFBA1C4F804 /* PFMultiProcessFileLock.m */; }; + 8F358510B4BFC7E8344D34A8155B42DA /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B4EC6E2C9E5D654933455F7EE946B3 /* FBSDKBridgeAPIRequest+Private.h */; }; + 8F7DF91175CD7B9E257D396EB87DBDDD /* PFFile_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 090D1B6F36F0C028C8CB3219A3BEF8C2 /* PFFile_Private.h */; }; + 8F9A675846DC2C23572CCD8E4FFBDB93 /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CCE9BE6DF0576998191D1D52675A3EF /* Pods-dummy.m */; }; + 8FE5788EF14F6E44BD11EA5B8C3C1587 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 910591F473539420F32B53EFC561747F /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C3209F7B3A0C5594C5382D2E17A02B97 /* FBSDKShareOpenGraphValueContainer+Internal.h */; }; + 91262C7FCFFF6CB8C7510EC21277BDC4 /* PFEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BEB822204CBB8DAC8FF4C04AEFCF729 /* PFEncoder.m */; }; + 914774948471B0AB22200646BE0F480F /* RKLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 95B10AC59C183D139DF676CDC2DEF1B0 /* RKLog.h */; }; + 91F44367C597D2BDFF225A8BD754BBD0 /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = A54DE73C817619BCCC8C09FEBFAAE717 /* FBSDKGraphRequestConnection.h */; }; + 9222B3822E8B00EFBEFD4AD8317E09BC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 923EDFEA8185C3A4D6F5F36FC9B5DACB /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = ED9EAFA1C9FBC36E305EEEA43B7A8CE6 /* AFURLConnectionOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 92F90206D520B6FFB926F518E7F78A6A /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AFCC4FD732944B15943D675B7BBD73 /* FBSDKServerConfigurationManager+Internal.h */; }; + 9327A80A4578297BCC18961FAF29D852 /* PFMutableUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = C1DF7803D01DBA25AC3A304B97A1450B /* PFMutableUserState.h */; }; + 937A4633A64BC5208E9324E323AD8129 /* PFSessionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B74DFFD00FD194924436581B996AF728 /* PFSessionUtilities.h */; }; + 9394144BAB18709A82FDB2B282A05380 /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = B45B64C4D463C82AD88669B314F94E5E /* FBSDKBridgeAPIResponse.h */; }; + 93A9D4AC38D1D5391929155E05F83D2E /* PFConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = 65EE60D7B2AE8D7AF7FC37A1DED26D53 /* PFConfigController.m */; }; + 9503242D0ABD828C67CE6E9E87FCF808 /* FBSDKLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AD87F2B55AE1CC46DE21D8EC71A1A65 /* FBSDKLoginError.h */; }; + 952263BF4DA2641DE73612C67BFE318B /* PFObjectController_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A3D1CC8FD8C924BEC03EAE7B7D1A957B /* PFObjectController_Private.h */; }; + 9526FC617DC03EB2394A82C62562094E /* RKMappingResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 905ADB423401F79FA90F610A1CEB29F1 /* RKMappingResult.h */; }; + 960C0ACF45C879E5B798E0208677C283 /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = F5A2FEDDD4FAA9868A664F18973566D7 /* FBSDKAppLinkResolver.h */; }; + 9691F0B4875AF918D9307643CCB6F345 /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D4B932F8281FFA4CACCD488B25D8399 /* FBSDKErrorRecoveryAttempter.m */; }; + 96C7851DA44AD1224A1111E622B90017 /* PFInstallation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A982F733776ECB9F974B94BB7AA8825 /* PFInstallation.h */; }; + 96FA8252F3AA140AB10B644BC9A9D5C7 /* PFPinningObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = A8B7D4881DB5E38BB4A3D779E6BB690D /* PFPinningObjectStore.h */; }; + 9713B6D2036DE8FE79A48B9BED3D6B25 /* PFCurrentInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 748E23C1428DC283BAB8E03D0CE9A770 /* PFCurrentInstallationController.m */; }; + 97742173F7783B44F0986230885A4260 /* ParseModule.m in Sources */ = {isa = PBXBuildFile; fileRef = C6AF838FA7C570391A36438E785BD121 /* ParseModule.m */; }; + 9782069796E4CFFFB4A28BF5DFA57F85 /* PFSessionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = A87CDFB3EFD9FF97386971977129FF4F /* PFSessionUtilities.m */; }; + 97C333E846C6F051D032E8EECF06012B /* PFPushUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 072E4E053796CCB0B198E0D81722FD94 /* PFPushUtilities.h */; }; + 98624ADCF17E525E7753E01E2282CF79 /* PFConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F06181DC24313ECF2DBF2D575D36DC9 /* PFConfig.h */; }; + 98B5BFC65638844B3AF600A7AC6486D2 /* RKHTTPUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D15AFCABB51E916BD6FFE6D663CCBED /* RKHTTPUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 99698707B82BBB47C3392E7E47C94CEB /* PFQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = BD1C10F7430E7917BD4A2D320618E8FE /* PFQueryState.h */; }; + 99B95FDB465ACC34C5C97139218A4D54 /* PFCloudCodeController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE0F82547915413E8FA3F4BD68D24DD /* PFCloudCodeController.m */; }; + 99CF212BAA3933341FF49D3902823477 /* BFCancellationToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A7BE134FD15E0D4AD4050F4AF57B457 /* BFCancellationToken.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 99F06B5F06814E413CF9BFD708985DC1 /* PFMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = C139C86AEBB76931A158BC183F46D15F /* PFMacros.h */; }; + 99F872BB5976264AD7648F8F8252D8B5 /* TKTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = F0CB4E3EC1ACD76F2309A54B490DF091 /* TKTransition.h */; }; + 9A1AE31B803BD2B8CF59FB3983F9A51C /* FBSDKAccessTokenCacheV3.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AF7D10C408FD6D8AB132E00A1837154 /* FBSDKAccessTokenCacheV3.m */; }; + 9A4443483F57345BB06E660DB76AB29A /* PFKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF590EFC23393E18AB1CB35CBED4270 /* PFKeychainStore.m */; }; + 9B0B6DE875E130F30CEEB69A79037FA1 /* PFFieldOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E4B8ABE7430971B5249A46A558AD57 /* PFFieldOperation.h */; }; + 9B23BA6F2581561FB25680304A6B9073 /* PFURLSessionDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E4597D072E258E34336B3F35C0F419D /* PFURLSessionDataTaskDelegate.h */; }; + 9BA4897B11673A7E3BEA0A4801C041A3 /* PFURLSessionFileDownloadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 045C613BE82C1C475C7BD0F490B49AAE /* PFURLSessionFileDownloadTaskDelegate.h */; }; + 9BE301315D30B57920E32F058B66D98D /* PFOfflineObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B9DBF11D74F42EAFF80AF44ABE2B00E /* PFOfflineObjectController.m */; }; + 9BEFB20B75AA77C91D5D82E13069504E /* PFPinningObjectStore.m in Sources */ = {isa = PBXBuildFile; fileRef = F3ABB736CD9D5E94B6350679B5554ED2 /* PFPinningObjectStore.m */; }; + 9C174E63607360CD339FECB3BFA37F4E /* FBSDKLikeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 2623CB720FCCE67AE1CCB1219F214621 /* FBSDKLikeDialog.m */; }; + 9CB8FB8E4DFBCA73F23A0767CC00C9F9 /* PFFieldOperationDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = FA96D6D6ED3962673257FD4308045B34 /* PFFieldOperationDecoder.m */; }; + 9D7FA3822D5504762ECA314C8A00DB7C /* RKPropertyMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 905A2264F8751CFD5E0FFE6C92CE7462 /* RKPropertyMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 9D9BFD2275092031EF50133F849831C1 /* RKISO8601DateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = EC2DB7FD65BD1EA61BB08642939C3DDC /* RKISO8601DateFormatter.h */; }; + 9E1D4FDD251DA92C2D1388ED45B720A7 /* PFObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CF42D72A1AF3A7182B9021C56CAF888 /* PFObjectState.m */; }; + 9E757C484BA1AAE97BE4C2409B6FD0A2 /* FBSDKLoginButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F747176FC803B53FE0AC39C84633F516 /* FBSDKLoginButton.m */; }; + 9E80147EBF6B2588ED1ACE1EF8C08856 /* RKDotNetDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = D344D9A38E931E18FB1095D2364E21E6 /* RKDotNetDateFormatter.h */; }; + 9ED5478F4952488EFF6485BF5E50ACAF /* FBSDKLoginKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3666E0447FCD05578684BF0E8B8507E2 /* FBSDKLoginKit-dummy.m */; }; + 9F1F36C174E8643569FAAE58E3B87DC7 /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AD3DE9B80F57FA325D62663B4BFF9A0 /* FBSDKSettings.m */; }; + 9F551AF880BB9256C4C291F5CCFB11BF /* PFFileStagingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C105E35C96EB4B380048F9D08BEED1A /* PFFileStagingController.h */; }; + 9FA6A1361778101C92CC23F66D82E995 /* PFCommandRunningConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = F9D22C63BFA5923A93E8E8A351BB6819 /* PFCommandRunningConstants.h */; }; + 9FB6030B98DECB9D62879EE2AE5E6D9E /* PFConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = FFBF77D48AFB428DB4B14BBA73842CB2 /* PFConstants.h */; }; + A0C0D93BDD1650DA3FBAF7308D8D8F6B /* PFRESTCommand_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 885480E76DF09EE4E69F631228FF4859 /* PFRESTCommand_Private.h */; }; + A2263CD966D196A5CE37ED110C62EE57 /* RKMappingErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = A47788042F4DC03B2F9C830BA9EA5567 /* RKMappingErrors.h */; }; + A2312679DCFADD5575064A07984B4BF5 /* PFQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A4611534D2F6FE37840471AE6EE6B04 /* PFQuery.m */; }; + A236FA4A4D8D428BCF2799A6D87D96DB /* Bolts-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A4A2624694E7E459F481284E18872D0 /* Bolts-dummy.m */; }; + A249BCCF84DBA88982F537AE0C883BB3 /* PFRESTQueryCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 03C41F440C6257C38CBA6D08B490B043 /* PFRESTQueryCommand.h */; }; + A298A5BDF576E579A48B535BF82CC397 /* PFRole.h in Headers */ = {isa = PBXBuildFile; fileRef = 828C7F88A0E2BCBEB7B6A32EE8D36F4B /* PFRole.h */; }; + A2A8FA3EF7C62775D279A5B32E06B37E /* RKLumberjackLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 97E6EC52D54228978DD7489F931C7015 /* RKLumberjackLogger.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + A2C3E711AF53081DECBBB754EF81FBFD /* PFUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0050807933AECE8D25A707F975203C5E /* PFUserController.m */; }; + A2C6C3878CD7696272669C76E2B95F3A /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 47437D5AB702C3D4165C272B390FADA7 /* AFNetworkActivityIndicatorManager.h */; }; + A2FB35C43BD300FF3D0FC5D2C21A8EA0 /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = AA8D4BA554A6B6C1B406BECC4D387E3F /* FBSDKCoreKit.h */; }; + A3BDEBD652C5B97ADDAD62F68E695BAB /* PFObjectConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 14DC7569B23924F725356C7D875B9264 /* PFObjectConstants.m */; }; + A3E8BEB5BDB0DB91D73F3B750F881671 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E7F4A2F3E63A394F39CDBFEF74FFB35 /* FBSDKGameRequestFrictionlessRecipientCache.h */; }; + A4796D08180059B617D5CD6D74EC4820 /* PFPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0861457C7F36148ED273E55B6BD5AB36 /* PFPurchase.m */; }; + A5075FCC7996C7241A1AC88BD454CEDC /* PFPushState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 66AE3952E127CEAA503A87FD111FCBEA /* PFPushState_Private.h */; }; + A52D62A00F5C3CC6C77BFCC174883EC5 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = D58141339BD4E1AD139F6D8757D818ED /* FBSDKLogger.m */; }; + A63B7B71D5BD6F713B1F2645904FAB0A /* PFAsyncTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = E1030CCC0775734985138AF667D21E88 /* PFAsyncTaskQueue.h */; }; + A6431E60D053D9BA7610CC73F2CDB276 /* PFProduct.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C13CE56C415F93B1A3921AB6358B990 /* PFProduct.m */; }; + A68DEE427107DDDECE7CD0FD00B4C42F /* AFHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE092C23A177A30D41277E3E2532CFE /* AFHTTPClient.h */; }; + A6F8D0423D730B09FF2B44142A470FFB /* PFRelation.m in Sources */ = {isa = PBXBuildFile; fileRef = 17EBDD0D3F6CA772ACD223D47BC6606F /* PFRelation.m */; }; + A745E81424A0ECF3E504C2027C5DF4D7 /* FBSDKShareKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3863A24C8545BD8471114044940471D0 /* FBSDKShareKit.h */; }; + A754C4958F744E68B858C4D0F1601B43 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + A75D8C6B1C911CCF9285B67A64D88168 /* FBSDKShareLinkContent.h in Headers */ = {isa = PBXBuildFile; fileRef = F0030B71A6DC75CE9672B5AFBC38BCF4 /* FBSDKShareLinkContent.h */; }; + A777CFCF539A3F513A8C5F7FE13BB5B1 /* FBSDKLikeActionControllerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 64092AE7CD9ED392CE2C1C98A9D583BA /* FBSDKLikeActionControllerCache.h */; }; + A77FCB7E7A55AEE91A979C9826E453AB /* BFAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = FF2F36415F8EDA1603770F277D605DAC /* BFAppLinkReturnToRefererView.h */; }; + A7CA431377D4C785A52B31FF0CF83996 /* PFUser.m in Sources */ = {isa = PBXBuildFile; fileRef = FDA229BC6CB4CA9634C3016F0381557F /* PFUser.m */; }; + A7DF5029703C62DBC546E07E0FE68779 /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F812EB07D870BBFD5F42E05E17C7391 /* FBSDKMaleSilhouetteIcon.m */; }; + A85D40790F9D7EBE017FD8B069C2C6E0 /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B5E002FD0140DA26430A35510C313F8 /* FBSDKAppEventsUtility.m */; }; + A8BC3147665EFE52F3B865F75BA23479 /* PFObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F0A3A60E696009D78F7AD078F9E343C /* PFObject.m */; }; + A8D8E3DEAFABD7D676AF9512F9300E5D /* RKMappingOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0401D69DFE749735649FE64519D6905B /* RKMappingOperation.h */; }; + A9029EFD1C14F062F13C517D8E88863A /* PFObjectConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = A789217CA6DED8D71FBD896F412AD6A4 /* PFObjectConstants.h */; }; + AA2CA1664E0724EDB51E06EABE450CFB /* PFCachedQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 118801D377E51EA29C240E0C19C227D2 /* PFCachedQueryController.h */; }; + AA35FAD12964ABE7D0E88E0E1D65B4D4 /* PFDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A7B8336A363D3DD83ED3A4E4BDB5F0E /* PFDataProvider.h */; }; + AA6DB4FD502FE0EBE40728B7F13E749D /* PFFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 927F616936E0C7308D11300E5B788429 /* PFFile.m */; }; + AA9B525437E1E7B7D2BF539AACA6C8C2 /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = 36BFEC5CD6E83BF4C00AC37F0AFF0C3F /* FBSDKMath.m */; }; + AAAACC905C1BD976C1B46FF1E96D29C8 /* PFObjectLocalIdStore.h in Headers */ = {isa = PBXBuildFile; fileRef = BFEEFBE1C37274DCC4828D82311AF40C /* PFObjectLocalIdStore.h */; }; + AAB0B8BD8FEDBC51DC6FC0D6A589AFC6 /* FBSDKLikeBoxBorderView.m in Sources */ = {isa = PBXBuildFile; fileRef = EE70C5E8CCF28AFCC633F82542872D63 /* FBSDKLikeBoxBorderView.m */; }; + AAE115E50155948641D97F4C4782327B /* TKEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 40C40C0517D7C210D4A32215DEB225C1 /* TKEvent.h */; }; + AAFC2366E62DD2348A58310FCB9CDCB2 /* PFCoreDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = AB09AD9EF87210D905F74E1C8DFF532C /* PFCoreDataProvider.h */; }; + AB64F843B89251A4F54B7E8811C2AD5A /* RKPaginator.h in Headers */ = {isa = PBXBuildFile; fileRef = EEC81F732F4810E132758A0C613E431B /* RKPaginator.h */; }; + AC209E9605FAF1609539975FC17E2443 /* Parse.m in Sources */ = {isa = PBXBuildFile; fileRef = 430C3FA8EA2C3E2BB22ACBE65DA6AC89 /* Parse.m */; }; + AC3660E82309B97BC9F36F249A31936F /* RKObjectRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9863ED0E0DE0D5BD0D54D80394E2278E /* RKObjectRequestOperation.h */; }; + AC4077514D5E7D8D685B477929CD1EEB /* FBSDKLikeBoxBorderView.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B17C271B89B911A8934903A0081DAB /* FBSDKLikeBoxBorderView.h */; }; + AC49657D3C3E9041AF727A806BDA4B91 /* ParseInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = ACE0AE2BDDDC07FCC86BAD0AD53C4E89 /* ParseInternal.h */; }; + AC8705200765C036C92BA3510DDF381C /* PFNullability.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D9010B3F716FD1490351E8CB8BB8840 /* PFNullability.h */; }; + ACB2D6E5C8741DE88A68AE240837344F /* PFAnonymousUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = BF4B15119AA437DFDE6F525A227EEEA5 /* PFAnonymousUtils.m */; }; + AD140B8CB4ED9EE47ECA355BBC49D8D0 /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C21A8ADE7B5A34350D10B56CD7A8761D /* FBSDKAppEvents+Internal.h */; }; + AD42E75F3FB722607BC393109C580249 /* RKErrorMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 45B3E4226F866D5C78E3AE4441683829 /* RKErrorMessage.h */; }; + ADD2AA8D146F25FFD8BA1D4376F263B7 /* PFInternalUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 6983D73EF0F3315F55A0E4A3B5CDB1CA /* PFInternalUtils.h */; }; + AED780AA3103CE272620ABA5144C7EB9 /* RKObjectRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = A771288DA627C1035D810FE2E4D30B4D /* RKObjectRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + AED7DD46159F1525CBAED2B765B6FBB2 /* SOCKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FE09EB1BAFD6593655A66644AD9F2C0 /* SOCKit-dummy.m */; }; + AEF152DEB9D69B47F9BBF7E427E90A0E /* TKStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = C7A3C431941CA5458B46FDA87ADD17E9 /* TKStateMachine.h */; }; + AF05B25B63B0981E9B51311FB1C7FBA2 /* PFErrorUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 8252E3628FCD0DD24332FF33C10A559A /* PFErrorUtilities.h */; }; + AF7F585D873E31A4CA37FF5C3E6F6818 /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B84882EEBE825A5C543B49CE80D4F1 /* FBSDKAppLinkUtility.m */; }; + AFD06D4B1D7FC7846C523BAF45DE28F4 /* PFKeyValueCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CB0A624CCA1DF78752962F81F06BF119 /* PFKeyValueCache.h */; }; + AFF7143C45D4D0CC1DFE3E0BCA02F77A /* PFPushPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = BAD0E25E939779D3CB767BDACE17F6F7 /* PFPushPrivate.h */; }; + B03FF153F1F75E2ADB673B98C7879532 /* PFAnalyticsUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CE8D7CE43C005885F4A5981957F20A1 /* PFAnalyticsUtilities.m */; }; + B09ADD46335ADB6E340FE94F12EA2A7E /* PFInstallationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3268179096664214C41900456AEC9D52 /* PFInstallationPrivate.h */; }; + B0E57247D491FAA4B3F4B137595AD3E2 /* RKMappingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BAB7DDAE6FE91E089EBA417E69790BB /* RKMappingTest.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B0E5D758FA09DBF05C5A27C53D9EC1DF /* RKDotNetDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 079E082DB0D5553BF25A89DDB3AF9428 /* RKDotNetDateFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B0FEC135BF9D6D4B7A607FDD74C18A8C /* PFCategoryLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = A08562E12462CC984D8E3FDD78C62842 /* PFCategoryLoader.m */; }; + B15373F23FB7B5D41A62CA92BBDD567C /* FBSDKLikeObjectType.m in Sources */ = {isa = PBXBuildFile; fileRef = F492164F566E8CFCD2E106F61A435A12 /* FBSDKLikeObjectType.m */; }; + B157A3081D8AD9514467DEBBD55548BA /* PFFileDataStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 864FC7E084B3C08400F30878D1F110FE /* PFFileDataStream.h */; }; + B17929E1C88665A99445109C8F92D122 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + B1F19F69BC6BE89750CDE81D08ECE259 /* PFMutableRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = A2DB5E0FF2D801AE5355483A207C2316 /* PFMutableRelationState.h */; }; + B245EEC679161A0C25552C1AA06F3EC4 /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 49B32C446E230AF54905CEEA3305D3DB /* FBSDKUtility.h */; }; + B2588A9E069571F52CD24483884A4AE1 /* PFNetworkCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93A85BABE61F3728712E0E5208270B19 /* PFNetworkCommand.h */; }; + B26EA1195C31C123334CE61F105FE393 /* PFRelationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0830AA4DD7D7479876C01AF8CAC79CE3 /* PFRelationPrivate.h */; }; + B27D97B8AB65C9259475002C793F08CD /* PFObjectFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = AF18B2AD10D7C8A2EBA61B5AB51D00BD /* PFObjectFileCodingLogic.m */; }; + B2879C1150D1DB443CFCD96DDDB49E45 /* PFFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 67108DAD07BBED97E0992E85B0D42C85 /* PFFileManager.h */; }; + B2B049AE4A156340F9AC769AE6A8E779 /* FBSDKSharingContent.h in Headers */ = {isa = PBXBuildFile; fileRef = E07CBEB86CA06BB0017BCA02C44A2757 /* FBSDKSharingContent.h */; }; + B378D082DD674BA3C9DF87ED99FDBE4F /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ABB8ADA56E3C960C54BA1289E7ECB2E5 /* FBSDKCoreKit-dummy.m */; }; + B39DAC4258721979718AF68CFFDF2F74 /* BFAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B9375688AA4B17E0481C9DEF5E1CDC7 /* BFAppLinkNavigation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B47819184E10C7AAB004E897ED18EF54 /* PFCommandRunning.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CB8F4A546D9EAEA058287BFFA939C49 /* PFCommandRunning.m */; }; + B47B62F95C9E76C01E70EABA2BA467E5 /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = DD19C370DA2FF7DD5B14BFC2239460EC /* FBSDKCrypto.h */; }; + B49E65590447C056177C4650F8276BA7 /* FBSDKAppGroupJoinDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = D2FD3D5C2EE761325B9883A907C8BC4E /* FBSDKAppGroupJoinDialog.h */; }; + B519F723811EEC0DAD613CEBFE109F92 /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = A633AA451BBF3810EF096AFCD04B189D /* FBSDKBase64.m */; }; + B57D2233586CE946A5305009412BCBAF /* FBSDKLoginManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 99FE17414C621D6F3A13235F179D4CB8 /* FBSDKLoginManager+Internal.h */; }; + B588C9394F86C1AC804378104F746AAE /* PFTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = AD7E73D7FC8878A9DBB9C6C91A6EF948 /* PFTaskQueue.h */; }; + B5E5FB68DB75A0C066EE77B2D470BE2C /* PFACL.m in Sources */ = {isa = PBXBuildFile; fileRef = DC4F66E6A3F1DC8F241BBC37BD38824F /* PFACL.m */; }; + B64274ADB723090A619329059E5367B1 /* FBSDKShareUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 83106886E9A710F3579F2BBF35D8C99C /* FBSDKShareUtility.m */; }; + B66711307BD952379D6E1E973D233DD7 /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 29BDAC347646877BAF67F12CBA39BDB2 /* FBSDKAccessTokenCache.h */; }; + B6BF8650AC031C390261566634596617 /* RKObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A7897D08498CE169C9E0F8BA5015E80 /* RKObjectUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B7FEE49B9428B57AEBB3A3ECFE8EEB59 /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E1C86507B3C7A9D987C1EE846A6E40F /* FBSDKGraphRequestMetadata.h */; }; + B7FFAEE017ADB38FE772A10494491305 /* PFCurrentUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A1B35A988D4E5D81E613F216581696 /* PFCurrentUserController.h */; }; + B8291EBC0CA538454602E54BDA92A1B7 /* TransitionKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 15854EBB45118A734AE77C8EFB408F10 /* TransitionKit-dummy.m */; }; + B867985361289320989E515B5ADFB9D3 /* PFObjectEstimatedData.m in Sources */ = {isa = PBXBuildFile; fileRef = 76138EE2803A9EEC58C7D5AB7744121F /* PFObjectEstimatedData.m */; }; + B8981DC6E7D7A4BDA55AAAA0A0DADF7A /* PFAnonymousAuthenticationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D4DD0CA2C38FD64FC4C4C5AC5AA6EF /* PFAnonymousAuthenticationProvider.h */; }; + B91017DCA447D4FE665DFBD4F534207B /* RKPathUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 27D73CCE08122C37FC401A9805E8033F /* RKPathUtilities.h */; }; + B9825AB10AEC3548EC0716A1880B163C /* RKMappingOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E201DE8EA287BAFA4B7303204B5FE3C9 /* RKMappingOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + BA652EEC470ACC0671819D24AEE64FEE /* RKValueTransformers-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8343EFF681B40307ADDC80DDE71AA45E /* RKValueTransformers-dummy.m */; }; + BA989D0DD52B618B74EC629A3B011787 /* PFObjectBatchController.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D414278778C63DB1AB1454092428F09 /* PFObjectBatchController.h */; }; + BAAFB1BC360F105F6FDAEBF3E19F8195 /* RKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = CC29231A76F0E95942D3AC8EE9C06770 /* RKMacros.h */; }; + BAC969FD3E5FCC80C60299CD3FDE217B /* PFMultiProcessFileLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 06CE7699540EF590425A414A8CB424CE /* PFMultiProcessFileLock.h */; }; + BAD3634DD55B62F98958378C48C5B4E0 /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 205D68C9BFE7AFE003B0D6E31B36DF5C /* BFCancellationToken.h */; }; + BAE6222F2912EBD93ADE0E92604AE75F /* PFQueryPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CC527AF2B9F34C2E793791D4F3AE0A4 /* PFQueryPrivate.h */; }; + BB0C549E6C0EFCCA6A834D5C796E604F /* PFSQLiteDatabaseResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 653FCEE976AC25D86C5BD4646F8893B3 /* PFSQLiteDatabaseResult.m */; }; + BB45519DC0D5AD108FD74D6FCA9E30C3 /* PFURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = D2121C834D82A31D9AC3183B2DCB31BB /* PFURLSession.m */; }; + BC7868CFACD5A90AF4539B10B0C530DC /* FBSDKMessengerIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = D06E4D2A257CB23AD3B3C24D65250338 /* FBSDKMessengerIcon.h */; }; + BD1266880C3D947593D65CCDF3FA2F04 /* RKStringTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CB0738F082CD21988DD84404C1406E6 /* RKStringTokenizer.h */; }; + BD853F3F44E8E1D611FC0223EEC51FF6 /* FBSDKBridgeAPICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 39EA90D4F4D435F351B6F8488F1F81CF /* FBSDKBridgeAPICrypto.h */; }; + BD99460B57092B0D6787EC27F99FEB62 /* PFMutableACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D63F2855FC61EC1E5A671306404454E /* PFMutableACLState.h */; }; + BE86AE3D6076FE73FA922D2531C8B894 /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B83052F7D6EDB1CBA5F3BE48FE41B542 /* AFImageRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + BEFA1BB782F90B9B3A3F263F7E5A4F45 /* RKMapperOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15EE98D2719FAA6A81AAB54A7E471D /* RKMapperOperation.h */; }; + BF2FDD475712B1686040E596399FA9F9 /* PFPushUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 6775409B0E8C0788D2E094C7C5218464 /* PFPushUtilities.m */; }; + BF687234E9B46A43074E882CC6D8C4C6 /* FBSDKLikeDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 40D041AA460AE7AD2009874357D2204A /* FBSDKLikeDialog.h */; }; + BF7783BA3CF0BE676356BAA176D27708 /* FBSDKLoginCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = B9254F90896402000DEE03CA2001F4A0 /* FBSDKLoginCompletion.m */; }; + BF858895504CDB8D3AB4361E782EA8C8 /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 62463AED6B63FD1BFCF534909E594242 /* FBSDKWebDialog.m */; }; + BF89FBCCE7066221E7F2A987DD4E84CD /* FBSDKShareOpenGraphValueContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D657474E403B993C149CC1F51629EB2 /* FBSDKShareOpenGraphValueContainer.h */; }; + BF9082656BF7F73899B73A2ACD3B64B8 /* FBSDKShareError.h in Headers */ = {isa = PBXBuildFile; fileRef = BA24326AC3CD75BD5A00788CED0B32FC /* FBSDKShareError.h */; }; + BF9F546490AA5AC45DE849AA0A5AACC4 /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 249868FBCC4788A742D8CFD87310BE9C /* FBSDKErrorRecoveryAttempter.h */; }; + BFD3B90B0754D38A0C16EAD8AB8C40AC /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 20C0209C7621AD4E7C7E895393FEEAAE /* FBSDKGraphRequestPiggybackManager.h */; }; + BFF27D79C3F860E354C5009D58D8716C /* AFImageRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FE0AA3631AA8F7CFF57EB3EDC6CB5D1 /* AFImageRequestOperation.h */; }; + C03056C7F18562A2E8DAD4A98F668F95 /* FBSDKShareDialogMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2210879128FAFD55EE381E85138A6E97 /* FBSDKShareDialogMode.h */; }; + C078740598701CAAD4A763C78B3F6CC6 /* PFApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = A513E815CB0531AC54B80FD774351B67 /* PFApplication.h */; }; + C090E9788C1AAE44F019D971AF5CE896 /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = E4FFF0B95027627ED5EBB9BE910229E5 /* FBSDKButton.h */; }; + C1940E183A577F58BCCE1C9477D12874 /* PFFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DE04FB62AD4572A1EF2E388614A2906 /* PFFile.h */; }; + C1CDC0DE66D93D988EF14107C6FFEA66 /* PFQueryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B996498C593C09462CB17300BB0EA209 /* PFQueryUtilities.h */; }; + C1E6782A28C64F9F738190329D22EBAA /* FBSDKAccessTokenCacheV4.h in Headers */ = {isa = PBXBuildFile; fileRef = 36625BA3EB692FB9405C776E41327F85 /* FBSDKAccessTokenCacheV4.h */; }; + C2406F161CC120D07B885E6D8D930DB3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + C2503B39C1C2D967300A807F22D1E892 /* RKMapperOperation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BA732D4BA53C90B93834949CEB41543 /* RKMapperOperation_Private.h */; }; + C2859D56FBEAF9577EB7E8FF91E9B087 /* FBSDKSendButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AA098F387A57A706C7677CC210587E7 /* FBSDKSendButton.h */; }; + C2882692DD474D2AFD75B8B04749F85E /* PFKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 177385813576F961AC0390A29802236F /* PFKeychainStore.h */; }; + C2EC239FDD7C6CD0C21A9DCC052F67C8 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = F651120BBA44138D57BED00C2ED1EF68 /* FBSDKBridgeAPIProtocolWebV1.m */; }; + C2FEDEEB9C729E257CC014D75F58C3CA /* AFPropertyListRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 45863B73565B4D9E4E17BBFFEA8FF6B4 /* AFPropertyListRequestOperation.h */; }; + C306BCCDD560BCE285958E022D4ECFC3 /* FBSDKAppGroupAddDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 0604B97C12B3337FD1CACD5908DADF8F /* FBSDKAppGroupAddDialog.h */; }; + C343BA12ACC7E8A1AC5463DA206136D1 /* RKObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F840FB713741211963007A36C4C972B /* RKObjectUtilities.h */; }; + C46D5F22B6391A33D7AC02797B5EA6B8 /* PFRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = C8ABE6E22040D86F536BA83C9995342B /* PFRelationState.m */; }; + C47010D70B05E89ACDFB064C72E502A6 /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = 0801E5E29361C01869760055DF9A576B /* FBSDKButton+Subclass.h */; }; + C55588B6E21DC2DEB96428E8085987B8 /* ParseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 09458C192035B62F6C206BA8051E7C08 /* ParseManager.m */; }; + C560005F785CD4166BE55BAA01D3F544 /* PFPushController.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B61A09FCB4522CC4CD9D7C2BA8A566 /* PFPushController.h */; }; + C5E6B7F61C259BD6D3FA842E34D77C05 /* PFInstallationIdentifierStore_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 12090BC886A58C9962169A136F7BBD2A /* PFInstallationIdentifierStore_Private.h */; }; + C6056E64ADBD421AE12B55FB83E44322 /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C61DC5A959A8218D355C33FFDD05395 /* FBSDKTriStateBOOL.h */; }; + C6882967064B59E981B552B8B73F478D /* PFCloud.h in Headers */ = {isa = PBXBuildFile; fileRef = A2F1242F1927A230F84F0CBB923D800D /* PFCloud.h */; }; + C69BE12C115BDBAD55BE9669643B5231 /* FBSDKSharingButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B0819CE19B7C8DFC00BC735593D2EBA /* FBSDKSharingButton.h */; }; + C7621E1B2201C72E1A47178CB0FB6F9C /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F34EDF50D35D822209224F910D198B22 /* FBSDKAppEventsStateManager.h */; }; + C7AAFF985AB1FDF2B886321D84074282 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E541C23946CA00EF697F8FA44AB271F6 /* Security.framework */; }; + C8DF6DD47EDBF3FDBF944F075FBC6C05 /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 63D0078344D4783DAE24EA204C2F2B76 /* FBSDKGraphRequest.m */; }; + C9151DCB3166821A4E47D74D40728411 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F79376118E5A7FF02BC96514483BD1A /* CoreLocation.framework */; }; + C933A60476A5EBDB9A82574B7BFDAE6D /* RKOperationStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = A397240CB17A369FA7286D7ED09FBDD2 /* RKOperationStateMachine.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + CA4B00CC15344D45D5A3F1589AE8DE04 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 3893550463B3F2896DA11E95A24787C5 /* FBSDKGraphErrorRecoveryProcessor.m */; }; + CA6B9AA9F5B228BA5B3E3789A0BB0D0B /* PFUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = 00362EC9E1B6EFC1EED72CCE1F5C6C63 /* PFUserState.h */; }; + CB383B20C6379A28C46A6B5AEC5EFC6A /* PFACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = 65C562DA788CB34774AC6A956A6F1D40 /* PFACLState.h */; }; + CB7D55A007ED7936F349A5E63C7503C0 /* PFURLConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 260ACD6713EAF6AF8913E567E5D000B1 /* PFURLConstructor.h */; }; + CBCEDE735334E3E1E16E45A245C96E3C /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = C8E979B43D80A6C9E821A1BD3B0C7F51 /* BFExecutor.h */; }; + CC2BB71E5443EDCBB2E5F4EAC24ED987 /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = 2890440E42FDEC4C76D4C02BC10E1DD4 /* FBSDKError.m */; }; + CCF4B724BE469464F638A4DF640C7238 /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = B7200C42FD7821618E5C729A6715D406 /* FBSDKGraphRequestMetadata.m */; }; + CE991245FC044DFF4588087784AF09C5 /* PFCoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C807E842A64AA6E448D999BD0EA2744 /* PFCoreManager.h */; }; + CF1E4ADCDBB95E4626548A4EED8E955F /* PFInstallationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 27B54F6FA7D889D22C88195CA1B1EA1E /* PFInstallationConstants.h */; }; + CF2D29BB657128E16D30D1A8626D5A88 /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = D5F4A79DAE04667AB0D76DAE48003BF2 /* FBSDKAppLinkResolver.m */; }; + CF85133D70F60133609BD2CA91585CD7 /* FBSDKSharePhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EE9FF43D6D45C08905B6D53343591FA /* FBSDKSharePhoto.h */; }; + D04FDE92822D348AECB997E83FC68F16 /* BFWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 79E1D204CE90D1BA1A7B1CE8E631A4A8 /* BFWebViewAppLinkResolver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + D0B4AD24608D2218B257F4C549DC71C5 /* FBSDKAppInviteContent.h in Headers */ = {isa = PBXBuildFile; fileRef = B9DDC28C55F77A12AE9ED00D59C5CDF6 /* FBSDKAppInviteContent.h */; }; + D1301D79ABEC0BF7196AE13B6607A522 /* PFCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = 27E46D6B718D04CD81F500D08BDCA779 /* PFCloud.m */; }; + D213984A523601FD6D41B52BFE1ECF87 /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BBEEA079EE2C1E3F7FCF0D4A242F3338 /* FBSDKServerConfiguration+Internal.h */; }; + D219581FED0361CDF8034A264783166F /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 2166AF7026817E78A1616576AA382EE3 /* FBSDKServerConfiguration.h */; }; + D26DAD2583E28F0B6448456E3DD375B0 /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = FBD4CF261D1D2C204727792A7FD59D0D /* FBSDKCopying.h */; }; + D2A8C4B9A699BBD20DB117AC788C589A /* FBSDKAccessTokenCacheV3_21.h in Headers */ = {isa = PBXBuildFile; fileRef = 386296E81D7A932F1BD2EAE4210CD7B3 /* FBSDKAccessTokenCacheV3_21.h */; }; + D2E8BB454506B4D5C4FEA27852E0DE9D /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DBD4C55AA3FFD740DBC08F5C47D6E0C /* FBSDKGraphRequestBody.m */; }; + D312B0F84468E555BC85724BA429E0A0 /* FBSDKSharing.h in Headers */ = {isa = PBXBuildFile; fileRef = A153B9B34087207BF3F8415D46B5F822 /* FBSDKSharing.h */; }; + D443B04560E387EB30A0602FD6FFD975 /* FBSDKAccessTokenCacheV3_17.h in Headers */ = {isa = PBXBuildFile; fileRef = EAF2E74037EC3A295A7DD2A670A1D20C /* FBSDKAccessTokenCacheV3_17.h */; }; + D47FB87AFAA9EAC94A8EDA555CE8B7D3 /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E5BFC99B4A9E8CFC77CB440E5B6A68F /* FBSDKIcon.m */; }; + D4830E7DE681EE028A47000F46DA3E1A /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = BC87F50A886AA4FC59C239579C59B23A /* FBSDKProfile.h */; }; + D4C629703F45ACEF8834A74261A24F16 /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C357F8599ACB541583E1B55372A148 /* FBSDKGraphRequestConnection.m */; }; + D4F8178AF98C8C6E22AB9A281869B5DB /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DA277D34C0546D8D8E80D99DCCD844A /* UIImageView+AFNetworking.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + D51EBFB6E359281876FAC27C321A4EF5 /* FBSDKShareButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 547B33431DB5136808EDC0F26EC4181E /* FBSDKShareButton.h */; }; + D566CA65A0BD5EDD393D418D0E38F785 /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EF29D84C9187AAE24AA165B2347ACAD /* FBSDKGraphRequestDataAttachment.h */; }; + D56AF31D9DF6EB1FC56376F94A42BAB7 /* FBSDKLoginUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A4672908B1FD7E4D44907A16C893880 /* FBSDKLoginUtility.h */; }; + D586EF4534B4B9C1ED860C49F9FFE6C9 /* RKTestHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 30E24C0CC2F297CA249BC9496B1273BA /* RKTestHelpers.h */; }; + D5B4AE6ADA1FF6A8D501EF34E5B70DEC /* PFLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 423474460E489D78FEE63988A287BF8A /* PFLogging.h */; }; + D5E50E373823D2CBA317B52A85ECDB46 /* RKPropertyMappingTestExpectation.m in Sources */ = {isa = PBXBuildFile; fileRef = B34970E9607C4D5CA7FD440A0E9D4EB0 /* RKPropertyMappingTestExpectation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + D5E8CC2522D67F9FC020020915970752 /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D3DE4E8FCBBE262C58F8AC13C7DF4FC0 /* FBSDKBridgeAPIProtocol.h */; }; + D63769571B44F6368498F025AF61C6CE /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 1860C6036F41AF4136B179EC2D9939E3 /* FBSDKColor.h */; }; + D64745B64981C4B58B41BFB0EB34FB0B /* PFWeakValue.m in Sources */ = {isa = PBXBuildFile; fileRef = A10620A1377EB7153ECCFC2F048B5505 /* PFWeakValue.m */; }; + D6877C6A4340DF5855F0877E79BD04A4 /* BFAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FC8E6958F515A1458DD253105E635AB /* BFAppLinkResolving.h */; }; + D69CEB9559FB7BE948DE3EE9DB288229 /* FBSDKLikeButtonPopWAV.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B6D5A9ACB11850D607ADB4A0BF03613 /* FBSDKLikeButtonPopWAV.h */; }; + D79F33AADF3DDB22BE6620959F4DE590 /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = E067CA9E21A26662DA824DAC1A521DD1 /* FBSDKViewImpressionTracker.m */; }; + D7FC6F2D8013CF365A7349C989177E95 /* PFRESTFileCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = E42493F5FC02B368E66187F7D3E72719 /* PFRESTFileCommand.h */; }; + D809B69DE077C62C993DF9DB223DB660 /* PFPurchaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = 20B30A30703B653252AC6D15C630DA1D /* PFPurchaseController.h */; }; + D8A25C09072F307F29FE9F7B6A13D9F9 /* FBSDKAccessTokenCacheV3.h in Headers */ = {isa = PBXBuildFile; fileRef = FF8B340E1E07288B43D2125E1C95D71E /* FBSDKAccessTokenCacheV3.h */; }; + D8F65E1A75771DEFD76C1D5E67DE252D /* PFHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 39AE3319F220425568181E51340F50AE /* PFHash.h */; }; + D936A464317E7189D4808D81F719F27E /* RKConnectionTestExpectation.m in Sources */ = {isa = PBXBuildFile; fileRef = DEF44C93EA8108B4B9EFC4B4644446CF /* RKConnectionTestExpectation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + D9780F783321D6762F05A3703DCCCAE3 /* PFRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 04FFB1F6F919106E7BC4541DF614C595 /* PFRelationState.h */; }; + DA2BAF58CBAF597A7E6562226C6A40BC /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A51EB7786397F5EFF35AB3BD9CEF4F08 /* MobileCoreServices.framework */; }; + DA38887565FDAA6178FDA0EE1B279815 /* PFObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B450C5571097E288C9CFF740CE3FA5F /* PFObjectPrivate.h */; }; + DA6FEF39DE15D4138126AC5AB7118A35 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5243AD5D9D864456CBD961BC945843F /* SystemConfiguration.framework */; }; + DAA4EAED7C7A73C4124FBB17C2E2D07F /* RKURLEncodedSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C16B289C2694A9F01E5AC4A40F5BBC5 /* RKURLEncodedSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + DABCBF2D85FD3680A4CA2867353DB56B /* PFCommandURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BC8CA549338879E1C908751DD3FD1C0 /* PFCommandURLRequestConstructor.m */; }; + DB2762412635FEA4B77C5E751F091473 /* PFBase64Encoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 34395EA09EF6FAFFB300C19081748EEE /* PFBase64Encoder.m */; }; + DB85C33A007936865BE9DB308E27B35E /* RKRouter.h in Headers */ = {isa = PBXBuildFile; fileRef = 596492B6CEEB060FE00A87B8565F380A /* RKRouter.h */; }; + DBD290D5C0A24237D2BD5BD12D51421D /* FBSDKLikeActionControllerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 986BA44834A1379FA62C25B6BA8F688C /* FBSDKLikeActionControllerCache.m */; }; + DBE3962D47DB31811D05E5FC7F16CF72 /* PFRESTFileCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = DB3CBBE18B7CB09688F235F3EB9C71FD /* PFRESTFileCommand.m */; }; + DBEA4B61BB4FCA89E6DEBF42D257395F /* RKResponseMapperOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E574880420D8D97A424642A6B5F02579 /* RKResponseMapperOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + DC21562627003B525B645FC276D91E79 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 232ECC729A95758C447EC817E24A8382 /* AFHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + DC72EEA9A5F723B2B90C73F66A942266 /* PFMutableQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = 73E78AAF48CC66F5329D231011EC9F0E /* PFMutableQueryState.h */; }; + DCC043007FBCC58468B29C60D3A74EF3 /* RKRelationshipMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = F9A46E7E5599417031AAC9FDEE8F6162 /* RKRelationshipMapping.h */; }; + DD4DBFC5F42DE1932644DB163B5972E6 /* PFBaseState.h in Headers */ = {isa = PBXBuildFile; fileRef = FAE37FC3EE513E9BA389914278408CEE /* PFBaseState.h */; }; + DD59BAFBAAEBD356F83FE7462D564E6E /* FBSDKGameRequestContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D4096B259A00B3CA7AFD492984A10BA /* FBSDKGameRequestContent.h */; }; + DD77D691697B0B6BA6F852B46C6E8151 /* PFOfflineStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B6F6FC45E0A6A809CFB5D64AB572F12 /* PFOfflineStore.m */; }; + DDC4F19F342E938AC97A32F890220035 /* PFCurrentUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 64585A3E416254970223EB883C168C06 /* PFCurrentUserController.m */; }; + DDD5AA6C8761E89C7F5C663B1CD13E32 /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B38BFE99240E2343065A81810BCD299 /* BFAppLink_Internal.h */; }; + DDDFDB764CD1AE11F3AABCA125923E06 /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = DFA8A38F2CAE4CCC62494E192CD68C97 /* FBSDKUIUtility.h */; }; + DDEA53C797DA53F468DC760C6AFF395E /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = C18CECEFC7124D4D8DB78DDCA56F3E73 /* FBSDKPaymentObserver.h */; }; + DDF12781498D7466B17FABB0F7B09EEA /* RKTestFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A04D42ACCA3BD87E3584E6ACC4F56E6 /* RKTestFactory.h */; }; + DE20A5E7464643352B7CBC57AA18AD28 /* RKMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = BE80753CE5B8297DCAAA5C864D7D7A5B /* RKMapping.h */; }; + DE465F00C7D94B02E5130CAB91FE315A /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 36A148580114BC82A5E01A2432F549D8 /* FBSDKServerConfigurationManager.h */; }; + DE7DCACAE6E02AD31161B263E7DE3B53 /* PFURLSessionJSONDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F6A9C4685A290C880CDE1428A25FAC30 /* PFURLSessionJSONDataTaskDelegate.m */; }; + DEBEBBF633B726A9FDBBDE85788DA3A3 /* PFURLSessionCommandRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = 73D64DAEAFFF3B4456A0ECB82E2D4CA6 /* PFURLSessionCommandRunner.h */; }; + DF9D24EA75DCAD6E4EABE77BB82C729C /* FBSDKLikeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 191B64353A25EF72E4466B2F6B9EBEE3 /* FBSDKLikeButton.h */; }; + E008D78D62D60C24A58DEBC9350DD553 /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 13771E6540FA0D1373C61F3F5618DE1D /* BFTask.h */; }; + E01E6B307A5E4AC49DFFFE15D7AB3419 /* PFSQLiteDatabaseResult.h in Headers */ = {isa = PBXBuildFile; fileRef = A194EB7C47C1754479482D96E62282D1 /* PFSQLiteDatabaseResult.h */; }; + E06BD0AF1D3248CA82CEBFEB3A8B737D /* _FBSDKLoginRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 184AA3B1233A04E41BF6626A6B9D8891 /* _FBSDKLoginRecoveryAttempter.h */; }; + E0EA33785A5F59E57513492FB49468A6 /* PFAnonymousAuthenticationProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 63853C304B3512C921051F6F4C1AA1D8 /* PFAnonymousAuthenticationProvider.m */; }; + E0EE720B924E4F4B4B269F9BFF9BEE6E /* RKErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = 0704D1A252C21153AADCFF76B76A34C8 /* RKErrors.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + E137CB80B75D378FCEA9B7E03B1CD381 /* FBSDKShareDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D760F3CA5FB942A7E23EA61A3C62A7 /* FBSDKShareDialog.h */; }; + E159D9561B3F15E9433F18184C3572FD /* RKNSJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = EF5B4118C2BC93EF32D39A9E3A70073F /* RKNSJSONSerialization.h */; }; + E1DE390E8E60E0B867407C70A2829CA8 /* RKObjectMappingOperationDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C12D518D08748E88B0F70890764B8CD /* RKObjectMappingOperationDataSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + E29BC3C544BF38C2F30CB4B2AAD45B41 /* FBSDKAppInviteDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1592F16F5E573F913E7D111CEB121A50 /* FBSDKAppInviteDialog.m */; }; + E2F18A04EB1C973F5D6E14BB41CCD4BF /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = 1011B8135A3EB4DCC7EF201AE71B3FC8 /* FBSDKBridgeAPIProtocolType.h */; }; + E315649B8C0329ABBE715331EC1105D3 /* FBSDKLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BB557FE6B9E9C5D59E6A3DEB4AB7846E /* FBSDKLoginManager.m */; }; + E35CC681B027B9A4DDD50E2732FDB1A2 /* PFProductsRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = AF8EEF265F3D9C4630F4ACCFBA1A315F /* PFProductsRequestHandler.h */; }; + E3A082B2A0A8612B107247EC76E801BD /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83F2B1D939804694C73E7FCD9AAF4090 /* CFNetwork.framework */; }; + E3A2B3F9AA361620648CBD92EF4F4874 /* PFOfflineStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 33B37F8486EF0E3980BE534DE830918D /* PFOfflineStore.h */; }; + E3B5EAD8212CDE114D7D75603964B728 /* RKResponseMapperOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = CB3C48DDBE655AE51D1A39695796468E /* RKResponseMapperOperation.h */; }; + E3F370210A4F6B15CCB06AD6E0E48597 /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 86D941FDEEC92E2EA2835097C2161C04 /* FBSDKCrypto.m */; }; + E4CB7EBEF04D906BB2400E1CB9EE6A7E /* PFUserFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A96182B63D95AA7512F0B4BF891B823 /* PFUserFileCodingLogic.m */; }; + E4EBE0695A4E89A25BA0DCBB7A37C8C4 /* FBSDKGameRequestDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 33BBC7950FBFD8EC38A39966E30603F6 /* FBSDKGameRequestDialog.m */; }; + E4FBC21224FF5A25AAE72F6E25111FD5 /* FBSDKSharePhotoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 141ACE54E47BD21C3F91FE031C2F27A4 /* FBSDKSharePhotoContent.m */; }; + E530D88B0E0091515A6C8A8E1AA22B21 /* FBSDKMessageDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EAC1A8028073BA5B4C512B18244EBE8 /* FBSDKMessageDialog.m */; }; + E539C7D052036F12A6FACEB6BAAAB7CD /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = C5558E780E37E74781BB1613EF8D6F1A /* BFAppLinkReturnToRefererController.h */; }; + E63519CA8D7880BB295B7EA51A8166B6 /* RKPropertyInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = E85C8888E5F1BB8E85DC368D6DB18999 /* RKPropertyInspector.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + E6FC5CAFFFFFED64538C2A6AF8CC7A32 /* PFUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = 973BCDCA8F5D929A3B0146540D22266B /* PFUserState.m */; }; + E7F96D6D14A008F31D440E9A3B4DEBFA /* PFRelation.h in Headers */ = {isa = PBXBuildFile; fileRef = FFF54AC023F4C0A168EAB14AF0DF8197 /* PFRelation.h */; }; + E86C60547909B9FF602F7A10BA1B4140 /* PFHTTPRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 13FF6F02AD00C0AE6A8450F567534E23 /* PFHTTPRequest.h */; }; + E964FA7D6A20CC33A8F95DBDE547740D /* PFGeoPointPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDB9F88EE4CF34E81AA150F326D12F8 /* PFGeoPointPrivate.h */; }; + E96561D1A7687F5C6116F3A1DB698EDC /* PFUserPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B6B535332BF062ED196F088A04E6A5C /* PFUserPrivate.h */; }; + E9E5B34C82D3E41A4ADCD1ABD9769103 /* FBSDKBoltsMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 985451595F8F27101D95712CABD99D9C /* FBSDKBoltsMeasurementEventListener.m */; }; + EA302B51E65C00DBCF5E18601D139475 /* PFCommandCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 176FB6F42987293FB1E182C230B96F21 /* PFCommandCache.h */; }; + EA4678DA9F19A5881A07ECC62861D055 /* FBSDKShareDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = F73ADC2CD4C8BD33E777C07D6362654C /* FBSDKShareDefines.h */; }; + EABAE5228ACD4A5BE6F30A53F80B9C1E /* TKTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A2306F062D21537BCCD17B8E1265AE8 /* TKTransition.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + EAF55F96FD4B1A30DDF547F52CFD5E3A /* PFRESTAnalyticsCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B5844358C456A94A62A07CB206B23CB9 /* PFRESTAnalyticsCommand.h */; }; + EB26C70637F1B9D2A32A96C3D7297B75 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 749EB4AB41C2B5F71BA37ABB24CEE668 /* BFTaskCompletionSource.h */; }; + EB3A2464318287F2605FE3FB96F28028 /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 94241AC9E14ADC6F4BF3A74F37C7443B /* FBSDKMath.h */; }; + EB73AF4C9D61D61F7B1BB0F6C573118D /* SOCKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 89622454B6309852AD9687B0820C02B0 /* SOCKit.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + EBC0F7CF2A827BE595ECF66D3042385B /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F1964D552EA65831BBC604C32B2ED59 /* FBSDKViewImpressionTracker.h */; }; + EC6ED18CFB8C6AD69DACFDCA9DE8A178 /* PFMulticastDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F6D944F1DD0E0308EA2EEB932E7DD509 /* PFMulticastDelegate.m */; }; + ECD947EB7209C18C0ED5B62B55EDAF5C /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = AD669A1EAE15893820BD4F03CDCE9EDE /* FBSDKMaleSilhouetteIcon.h */; }; + ED30F1C009785C03A95CE897DADE2FE3 /* PFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E595FE8D26A832FC9181FB8DCFDE506B /* PFNetworkActivityIndicatorManager.h */; }; + EDAE21A43BCE3B2704A63517EB4AB1AB /* PFObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 00923F2734FCE8DC39F906E40B67C73C /* PFObjectController.h */; }; + EDBFDC230E9792C5B794EB33FC97B481 /* RKValueTransformers.h in Headers */ = {isa = PBXBuildFile; fileRef = 4839C0B94DA359E603C96FAAF9707D62 /* RKValueTransformers.h */; }; + EE4BB2CB0021BADEC7E1B08A32107181 /* PFAlertView.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F69195C66DCE1ED23AFBCC251BA4C3 /* PFAlertView.h */; }; + EE8D5B9C1B8641F1C9454AC533EBA663 /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = A061230EB53B9A3D0D74C5E8D62680CA /* FBSDKMonotonicTime.h */; }; + EEB87A351E1B32FD3CA32811E998135E /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = FDF516C0EA3056B223310D7DB2C26681 /* BFTask.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + EEF20312B4111CDCF4165EC2CB7B5C54 /* lcl_config_components_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F73B326076ED018A7156E4BFED6A5EA /* lcl_config_components_RK.h */; }; + EF1E3A4A56864ED9872326A1591C526B /* PFSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 283697319377A707827BA6D72CD7F2B7 /* PFSession_Private.h */; }; + EF52CCC8678558CD77AF0992B2ED2B85 /* RKObjectMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B29A50B713DB33904E5298D3E082CA5 /* RKObjectMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + EF9B72EBED962989301AC194E32BF945 /* RKPropertyMappingTestExpectation.h in Headers */ = {isa = PBXBuildFile; fileRef = 056B8AC3C068967E144E9912F4D082E4 /* RKPropertyMappingTestExpectation.h */; }; + F05664371A3DD0AD0F099C58F3DE4B5C /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = FE7E4B7205CCF39AB7DC993A7C496D35 /* FBSDKLogo.h */; }; + F0C42F245FC0594E061713A97D2F24C7 /* PFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 59AA32CF592A1CE163B2F901B0892AD8 /* PFObject.h */; }; + F102D7610DBFCBFE859773DD03FF8408 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67E415550BFBF0D438FF517138639DE1 /* QuartzCore.framework */; }; + F154E24ECE8D63E143C5DE657270F9CF /* PFACLState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EFEED10CE7DA52BCCBBE06BCDFF31654 /* PFACLState_Private.h */; }; + F1F9CEDCC428750CAF8C5CA8129E8F1D /* RKObjectRequestOperationSubclass.h in Headers */ = {isa = PBXBuildFile; fileRef = E22F95FAB4E982B3ABA1D6CB8C422794 /* RKObjectRequestOperationSubclass.h */; }; + F21580621D3E8689A8B9B1DA63A24927 /* FBSDKCheckmarkIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 02FC7E859C916A1DBF3665CCB705934E /* FBSDKCheckmarkIcon.h */; }; + F27AFE96B8CC62E50BFFA4512890BED3 /* FBSDKLoginCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = 72D0BB4387B18BC30B9E1DFA837849CF /* FBSDKLoginCompletion.h */; }; + F294FEB022DDEC737B565FA9ADBB17B6 /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A8C0790E53BC4B6EA94B51E24532E88 /* FBSDKAudioResourceLoader.m */; }; + F2B72E543329E82CCE7A2EE0B0D5C785 /* PFACLPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0017DC9D1BC027BEB92D7D8697443DF9 /* PFACLPrivate.h */; }; + F2CDB8E6D9A013D37FD7054A5A1E2C7D /* FBSDKAppGroupContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A3F937AE0B76FE001B1424707650BE3 /* FBSDKAppGroupContent.m */; }; + F3797EC3467D8CBF8183D6886A03E954 /* PFRESTConfigCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D523D243E8C98CFFB31356A63463C00 /* PFRESTConfigCommand.m */; }; + F3832E2E17428F4750115D59A0CB9E85 /* PFObjectSubclassingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D6D55B44BD8ADC5AE8F8AC715416614 /* PFObjectSubclassingController.h */; }; + F3AAE34F51DB2120DD7F9AF2769DE2F8 /* Parse-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E4620C81A01480F3991F76D4DE7BE37 /* Parse-dummy.m */; }; + F3D640522B893DA5A057FDDE31D7CBBC /* PFRESTPushCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A2CBA1A14A6AA1202E7B5CCEFA3C2B /* PFRESTPushCommand.m */; }; + F3F2C56A77D4DB0D486E7A35E5C939ED /* ISO8601DateFormatterValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = EA6CB7DF499DDA0B9313150859AD14F0 /* ISO8601DateFormatterValueTransformer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + F404DE0BD76A827A59FED7ACEC84C4A7 /* PFInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 608429EE6E38CCBC432367E7CB93B400 /* PFInstallationController.h */; }; + F4A8397144034C66C1FA123D2A946D30 /* PFObjectEstimatedData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EB0B04EC3F753FD50885C2850A18879 /* PFObjectEstimatedData.h */; }; + F4E3C825FDDF691C8620167D62C36527 /* FBSDKLikeActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4123C94C7948B9704563A505B3014AB6 /* FBSDKLikeActionController.h */; }; + F4ECDBA32F1169CB260D49D001F2C224 /* PFSubclassing.h in Headers */ = {isa = PBXBuildFile; fileRef = AA8507DB72E8E2555EB649E141F80B46 /* PFSubclassing.h */; }; + F51372F07EC1E8663574DC8FF2B69C88 /* PFHash.m in Sources */ = {isa = PBXBuildFile; fileRef = 52728CC48A8F9EFF86FD0353377E776D /* PFHash.m */; }; + F55E8C555D5B76B49744594745E769B6 /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 58F67B018A57B934A2029E1BB32BFEB5 /* FBSDKApplicationDelegate+Internal.h */; }; + F590EEE9964BFBBF5271ABE294EA8DF9 /* PFBase64Encoder.h in Headers */ = {isa = PBXBuildFile; fileRef = DE504CDBAE4E729CE6138680BEA8131C /* PFBase64Encoder.h */; }; + F59241FB57F2005FBFECC2326048D075 /* PFObjectFileCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D2CCB0DEA880EFF0D0EF2B11C7E41029 /* PFObjectFileCoder.m */; }; + F5EF0EC23E27DCEA92A486E79EFD7997 /* PFThreadsafety.m in Sources */ = {isa = PBXBuildFile; fileRef = 57C4523433B4764C517C9034002FD449 /* PFThreadsafety.m */; }; + F6139C136AF1688A0C4D97D886180CCE /* PFObjectSubclassInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3810817360404E4967AF028144ECC497 /* PFObjectSubclassInfo.m */; }; + F72D54F2ED68E52F818FD3E109C865D0 /* PFMutableObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E3D6E7602874F770FF747226169660D /* PFMutableObjectState.m */; }; + F7C4193FCE1335CF78388CB131A8D6AA /* PFPropertyInfo_Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = FF73D26B160755CAA42F2FFC56C91E1E /* PFPropertyInfo_Runtime.m */; }; + F7E107F9266E165419F09F357851FF94 /* PFUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 25258821C0218CE36A9415CFB0D9F151 /* PFUserController.h */; }; + F81F1B7980F2983071D0EC660BE54CE3 /* PFPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A78ADE0C1383A85403BCEAA01789B6C /* PFPurchase.h */; }; + F83612B741AE8F04DD7367C0069652FF /* RKErrorMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D726415722488F38181C0A46AB22051 /* RKErrorMessage.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + F84EA9DE6AC9F7156F8830E3128E0368 /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 093F04A337062D005B479463914EBC72 /* FBSDKBridgeAPIProtocolNativeV1.m */; }; + F8A1E96B099B167A0FDC8B928B6B9F11 /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C0A1A0341B691B932463C02DCAFDDC0 /* FBSDKErrorRecoveryConfiguration.m */; }; + F91731D3FF9F75DEA9DF7BAF4D0EFF10 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8200C4FB4CDD0C6152EE150BDEFC6675 /* StoreKit.framework */; }; + F93E8FA12A89E3DEC9D885480933388C /* PFMultiProcessFileLockController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D77C3FB04FA7AD4241A39452337BF48 /* PFMultiProcessFileLockController.h */; }; + F9F2A396D8596900DA5C2D3DE9B96EBE /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = EE4A34C51200E57B9DBB1BE412048AE7 /* FBSDKTypeUtility.h */; }; + FA58F7FC3EC9BFFFCCCF855E5884803F /* RKURLEncodedSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = E2775131C0FDB72FDE0A1D5A4A819778 /* RKURLEncodedSerialization.h */; }; + FAA66334C3CBCD5DEE89DF6639CA4939 /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = A89DBD55CC24CC46C0835D3E92056BAF /* FBSDKColor.m */; }; + FABCB5C3C522BD3BD90E520F858E9D90 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = D5E9B76418458E7F379CF5FBBC3F3B16 /* BFCancellationTokenSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + FB3B2D6BC1B9F48598E1471CA886802D /* PFRESTCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = ADBBD204C9399AB147FC3FB9386FBA68 /* PFRESTCommand.h */; }; + FB49939C983F644539F4E3BD68498309 /* PFFileController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C2DBEA1B558F22849ADDB4522563836 /* PFFileController.m */; }; + FB65F22A1E1B12694C1E7DA1BF4332AD /* PFFileState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E4FA331249E6517075CC9318DC72A95 /* PFFileState_Private.h */; }; + FBF30755BBEC3C5FBA7D5463CCBBA04F /* RestKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FD329036B04DED5ACADFC2A64E1A81E3 /* RestKit-dummy.m */; }; + FBF860C80EF28CB36A9D92DF462DF9FA /* PFHTTPURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BDD575E014B1E668BA1B9894C948067E /* PFHTTPURLRequestConstructor.h */; }; + FC46D5340A6EEE1D53E43468AAB8E8AE /* PFLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 03367350D97367D351BF7432EEB86476 /* PFLocationManager.m */; }; + FC80B648D04C0C24045319E648B2A3BC /* RKHTTPUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FAEC79833DB40A28030BB60070264FC /* RKHTTPUtilities.h */; }; + FCF7B5A60C9D80BB8ED81E71C7AC8626 /* FBSDKLikeActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = F9D67943D4B100689C01F858F4E29E79 /* FBSDKLikeActionController.m */; }; + FD2144C4BC84FA87FB99AF5DF4A659D4 /* TKState.m in Sources */ = {isa = PBXBuildFile; fileRef = 9936ED8D363FA6B09EA60941182E9F3B /* TKState.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + FD7D810A80E4DE1BBDD59AFA587AD339 /* PFQueryState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6802793E8C624630B319D30FBB7BE7A2 /* PFQueryState_Private.h */; }; + FD854AA80D142379CA38FEFC40926EF2 /* PFPushState.m in Sources */ = {isa = PBXBuildFile; fileRef = D5F1C1D5F2030DAAB3B584BA7D15297F /* PFPushState.m */; }; + FD9E790BDBDA3FF44CE35A7B8A5C8E45 /* FBSDKBridgeAPICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 099E18F815C1869B7833BD3221BA0636 /* FBSDKBridgeAPICrypto.m */; }; + FDB04831594240B98C5A985E5E559096 /* FBSDKAccessTokenCacheV3_17.m in Sources */ = {isa = PBXBuildFile; fileRef = 35A73E0B40DC10C4D7D7B780D2C67F00 /* FBSDKAccessTokenCacheV3_17.m */; }; + FE2F61A9BF88B14639C597A77478638B /* PFQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = 94EC2DDBDD9F074B0353114A4386A277 /* PFQuery.h */; }; + FE482065A069005611AF4B036E7DDCED /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 20904F67CBBE7208D5F1E68654CE0F20 /* BFMeasurementEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + FE82D78EAC4F3D46EEE5C2A3C97A12D9 /* PFPushManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 936E53085AB59399AE3E6F0458D49941 /* PFPushManager.h */; }; + FEF08B955C1019BC8165006939B7078A /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 07CDAECDB40A9B34C6E06521F65F757A /* AFNetworkActivityIndicatorManager.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0ABD3F822E95796533DB652545AF5E24 /* PBXContainerItemProxy */ = { + 093C2AC3C5E237ACED621AA6B7D73B6D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = E017A37450D026E9D888F3645A58C436; + remoteGlobalIDString = C4D8ECA2F5CC610D055AC7FA148E43D2; + remoteInfo = ISO8601DateFormatterValueTransformer; + }; + 1536105EABB17B75368B8845D8A8A1A0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5A89C7736981130B2EEED27805B7A855; + remoteInfo = RestKit; + }; + 239D716A3732545F57F6ED90CA59DDB3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = C9CF1C271EB58F682F0F38C8C35BAB4C; + remoteInfo = AFNetworking; + }; + 23F28E4F9E5A50D4AF27D1F08804D853 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8466032D91D4D9DB26BAB2973DE4580C; + remoteInfo = FBSDKShareKit; + }; + 31F1FB5DB979090B7765B885014DAD55 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6C88FB013486FDFB342E31070F055B7D; + remoteInfo = RKValueTransformers; + }; + 39053682DD570F5383CFAFDFA822127C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = CDF1F15921EAF837BFD0B27099E8329A; remoteInfo = Bolts; }; - 10A4DB144F041A4C0CED43BED0C4C30D /* PBXContainerItemProxy */ = { + 508B59BE547C282F52F9DF11BE75503E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = A510D2CCD10E1ACAF039EB42370EECE9; - remoteInfo = FBSDKCoreKit; + remoteGlobalIDString = 158117D77AED03B83733E51D2D22983B; + remoteInfo = TransitionKit; }; - 1B7477DE69B98AC8F4EBB4F78AC36BB1 /* PBXContainerItemProxy */ = { + 5563D6248C22BD4C3E0FFE34C535469A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = A510D2CCD10E1ACAF039EB42370EECE9; + remoteGlobalIDString = 25B614D6ADBCB106DEE01D64514A1810; remoteInfo = FBSDKCoreKit; }; - 29FA9B94F4438EAED67FA3A30ECF56D1 /* PBXContainerItemProxy */ = { + 57E12F0F504016B2C065B8034ECE2D59 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 7F26E33CF29862A805138C68D09DFFD9; - remoteInfo = Parse; + remoteGlobalIDString = 158117D77AED03B83733E51D2D22983B; + remoteInfo = TransitionKit; }; - 66720104A3642E5CC2B35163BABF39C6 /* PBXContainerItemProxy */ = { + 84C3283C4EAF19219F77EF955EEAC0A9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = E017A37450D026E9D888F3645A58C436; + remoteGlobalIDString = CDF1F15921EAF837BFD0B27099E8329A; remoteInfo = Bolts; }; - 806CFFFB7BFBB520E7EC73DACD16B3B9 /* PBXContainerItemProxy */ = { + 90B03C8EA96A90ABB289AE1E7B8CB4E8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = A510D2CCD10E1ACAF039EB42370EECE9; - remoteInfo = FBSDKCoreKit; + remoteGlobalIDString = A2770197345BCE1622568AECE6B8E824; + remoteInfo = SOCKit; }; - 8246EE16CFB95F2B8C2F8EFCE4E5AEEB /* PBXContainerItemProxy */ = { + 9B70D042ADE9795273832351FFFB8CFE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 8ADAD2264B57B834BB67514D536FB7E3; - remoteInfo = FBSDKShareKit; + remoteGlobalIDString = C4D8ECA2F5CC610D055AC7FA148E43D2; + remoteInfo = ISO8601DateFormatterValueTransformer; + }; + 9DC04E6E78FC23637B6657E249590718 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6C88FB013486FDFB342E31070F055B7D; + remoteInfo = RKValueTransformers; + }; + AE639A41EDE660124BE148F0E8E7394E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 63CC4B4092B896F9AACC389383233974; + remoteInfo = Parse; + }; + B16B0202933CE8F18E60DCCD208B1597 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = A2770197345BCE1622568AECE6B8E824; + remoteInfo = SOCKit; + }; + B7D088F9D52456E09D8B301F2AE6E793 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 25B614D6ADBCB106DEE01D64514A1810; + remoteInfo = FBSDKCoreKit; }; - CA158329B7B558180C68B74E1C44ECC8 /* PBXContainerItemProxy */ = { + C3F27F08CCA705703E82EEFC33DC50B8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 87F49B89DFA2EDF98E9D8C6CB50976BF; + remoteGlobalIDString = 9E227047A8538838626AF4BBABC0B0F8; remoteInfo = FBSDKLoginKit; }; - F89E89A6938252AB3114DB944787C18D /* PBXContainerItemProxy */ = { + CBF10CAFC2EFE98D4A25364E19BF1C82 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6C88FB013486FDFB342E31070F055B7D; + remoteInfo = RKValueTransformers; + }; + D782CEA6DA0EBB775C10DD584216C744 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = E017A37450D026E9D888F3645A58C436; + remoteGlobalIDString = CDF1F15921EAF837BFD0B27099E8329A; remoteInfo = Bolts; }; + DCB8E09559E74DD3DFE0FD33CA8EF96B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 25B614D6ADBCB106DEE01D64514A1810; + remoteInfo = FBSDKCoreKit; + }; + E30C7FB51D911920237559D43F5B7B23 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = C9CF1C271EB58F682F0F38C8C35BAB4C; + remoteInfo = AFNetworking; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00317664E706475AA83526A30F2CC298 /* FBSDKMessageDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessageDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h; sourceTree = ""; }; - 00AA046AB84056772E21CE43C551AAAE /* FBSDKLikeObjectType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeObjectType.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m; sourceTree = ""; }; - 01653FEFDB182B8F87FD9FA72A320331 /* PFInstallationIdentifierStore_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore_Private.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore_Private.h; sourceTree = ""; }; - 0175D7D3E9C314F1D72F51BB23D70137 /* PFPush.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPush.h; path = Parse/PFPush.h; sourceTree = ""; }; - 02460856BC3622AAE8075AE3E3FC91A1 /* PFInstallationConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationConstants.h; path = Parse/Internal/Installation/Constants/PFInstallationConstants.h; sourceTree = ""; }; - 028707090FDF1694249FBC4759635D31 /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = ""; }; - 02F00ACE2DBD4B299DE97EDC74368855 /* PFPush.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPush.m; path = Parse/PFPush.m; sourceTree = ""; }; - 0368EC0DFD738EA132782A0111A76AD6 /* PFProduct.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProduct.m; path = Parse/PFProduct.m; sourceTree = ""; }; - 037AABBBCA13696A48290F5766CC10B4 /* PFURLConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLConstructor.h; path = Parse/Internal/HTTPRequest/PFURLConstructor.h; sourceTree = ""; }; - 03E70A5437B075C14B5508D5BFCEEB28 /* PFHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHash.m; path = Parse/Internal/PFHash.m; sourceTree = ""; }; - 041D6BFA828C5A1E9512BEEFEC8F8283 /* BFAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkTarget.h; path = Bolts/iOS/BFAppLinkTarget.h; sourceTree = ""; }; - 042A2244DF3B5F5C519B2D9711580B50 /* FBSDKTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m; sourceTree = ""; }; - 0462A31AED64616A9EA07AE370D6A31B /* PFURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSession.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.m; sourceTree = ""; }; - 0468C80564B418DC62D6A06C75D47E20 /* Bolts.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bolts.xcconfig; sourceTree = ""; }; - 05274B2C48957E129DCADF7E7BB272C1 /* PFRESTCloudCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCloudCommand.m; path = Parse/Internal/Commands/PFRESTCloudCommand.m; sourceTree = ""; }; - 0556ABAC4F9D071C431F5D3711FDE1E9 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.debug.xcconfig; sourceTree = ""; }; - 055D613FCAF2DEE454B4D55F922EE234 /* FBSDKLikeButton+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeButton+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h"; sourceTree = ""; }; - 058D4B861CA7EDC7CCC4C7CA51C1EEB8 /* FBSDKBridgeAPICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPICrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m; sourceTree = ""; }; - 059EBF24A2AB19E48A0FE457DA504A78 /* PFMutableRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableRelationState.h; path = Parse/Internal/Relation/State/PFMutableRelationState.h; sourceTree = ""; }; - 05F2D63CC787EE0E5D2D0F0A73BAF4FB /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h; sourceTree = ""; }; - 068DBD6F64C945AE062AA96733338643 /* PFRESTObjectBatchCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectBatchCommand.m; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.m; sourceTree = ""; }; - 06B9B52AD9A3CF756611E7DAA22CE383 /* FBSDKLoginKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKLoginKit-Private.xcconfig"; sourceTree = ""; }; - 071B86E1C2AAD3B5091748D714423E5B /* PFLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLogger.m; path = Parse/Internal/PFLogger.m; sourceTree = ""; }; - 0773FB1AEB768DE82BEE27A777B659A1 /* PFAnonymousUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousUtils.m; path = Parse/PFAnonymousUtils.m; sourceTree = ""; }; - 07D32532031A1C89062D9473123DC3B2 /* PFObjectLocalIdStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectLocalIdStore.m; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.m; sourceTree = ""; }; - 07D7982BBC669B81B73D2DCE2C8D509E /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = ""; }; - 0817A1706D8DF4000848B118C9DEE924 /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = ""; }; - 0862B411E359C83CBD18E519CEF6D94C /* PFAnalyticsUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsUtilities.h; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.h; sourceTree = ""; }; - 08A5F9DDBE312E2B39D52155B7463DA8 /* PFCommandCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandCache.m; path = Parse/Internal/PFCommandCache.m; sourceTree = ""; }; - 08D5478EDC1981B91D3B2EE8042C45EE /* FBSDKShareOpenGraphValueContainer+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareOpenGraphValueContainer+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h"; sourceTree = ""; }; - 0A2D949315D757A2D3EB973286C11836 /* BFDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFDefines.h; path = Bolts/Common/BFDefines.h; sourceTree = ""; }; - 0A9B29CACB66253CAD26C692CD8B3617 /* PFCommandCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache.h; path = Parse/Internal/PFCommandCache.h; sourceTree = ""; }; - 0B5E087C87BE017FB0C382DC023EA4BE /* PFConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig.h; path = Parse/PFConfig.h; sourceTree = ""; }; - 0BC74937463C566796639512770F35CC /* PFPropertyInfo_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Private.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Private.h; sourceTree = ""; }; - 0BD744AF804A9F5355C68DFD41621893 /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = ""; }; - 0CFCFDB608A66C522ECD909465A4CDFD /* PFOfflineObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineObjectController.h; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.h; sourceTree = ""; }; - 0D30480B8CCEEB19D1DDA7BA271A3BD7 /* PFCurrentInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentInstallationController.h; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.h; sourceTree = ""; }; - 0DEDEA8104363CAC7A0792A26668948A /* FBSDKAppInviteContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h; sourceTree = ""; }; - 0EFB00044A9A987E6150AACA4DD28233 /* PFWeakValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFWeakValue.h; path = Parse/Internal/PFWeakValue.h; sourceTree = ""; }; - 0F7F02E2032B63EE2D9E989373528958 /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = ""; }; - 10135E293A34F093B13620EB7118F0EC /* FBSDKShareConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareConstants.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m; sourceTree = ""; }; - 10D75599B0B083CB8DA9B5FE832071BA /* FBSDKCoreKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKCoreKit-prefix.pch"; sourceTree = ""; }; - 10F366B82EB075ED6CFE0882D1B87BBA /* BFAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkNavigation.m; path = Bolts/iOS/BFAppLinkNavigation.m; sourceTree = ""; }; - 10FB754E7CB98525F95328FAD2C2D788 /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = ""; }; - 1164BD18616ED3B6D9FECCCA99F68888 /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = ""; }; - 117EE18D9FE3C52EFB3FC22C9026769B /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = ""; }; - 11895677202537B8F1FA94B44D23ACFD /* PFSessionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionController.h; path = Parse/Internal/Session/Controller/PFSessionController.h; sourceTree = ""; }; - 11AECB6BCE686A69BECE7B35B96E410A /* PFRESTCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCommand.m; path = Parse/Internal/Commands/PFRESTCommand.m; sourceTree = ""; }; - 11CEF84C21F6B2D0803987B5694F5F14 /* PFRESTSessionCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTSessionCommand.m; path = Parse/Internal/Commands/PFRESTSessionCommand.m; sourceTree = ""; }; - 11EFC989CAB132B6D48E25A50D67FBC9 /* PFRESTUserCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTUserCommand.m; path = Parse/Internal/Commands/PFRESTUserCommand.m; sourceTree = ""; }; - 1223A0C9FC36B8E26592679DCD48B8ED /* FBSDKSharing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharing.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h; sourceTree = ""; }; - 1247DC0FBCBA3414C6BFB88ECA3ADA8D /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = ""; }; - 12585EA0DD81C8296E71552C34E29D15 /* FBSDKLikeActionControllerCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionControllerCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h; sourceTree = ""; }; - 12D6C59ACE08BC3F7440AFA3074159F7 /* PFPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPin.m; path = Parse/Internal/LocalDataStore/Pin/PFPin.m; sourceTree = ""; }; - 13314419869A5B70A3A44B8807BA61CF /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = ""; }; - 139C145BDD122109F513A0E27ABD2054 /* FBSDKAppGroupContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h; sourceTree = ""; }; - 13F8602E2C5A9AB96363E1F7B1EFEED6 /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = ""; }; - 14615E83480751392A8DA9C806B52B9A /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = ""; }; - 152E9CDD4624FDDC8186CF180C5EFED9 /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = ""; }; - 157F73E38A3EEBACD7E9F322201C0A4A /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = ""; }; + 0017DC9D1BC027BEB92D7D8697443DF9 /* PFACLPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLPrivate.h; path = Parse/Internal/ACL/PFACLPrivate.h; sourceTree = ""; }; + 00362EC9E1B6EFC1EED72CCE1F5C6C63 /* PFUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState.h; path = Parse/Internal/User/State/PFUserState.h; sourceTree = ""; }; + 0050807933AECE8D25A707F975203C5E /* PFUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserController.m; path = Parse/Internal/User/Controller/PFUserController.m; sourceTree = ""; }; + 0072CE5DF3D9990F609BD5035548F5B9 /* FBSDKAppInviteContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m; sourceTree = ""; }; + 00923F2734FCE8DC39F906E40B67C73C /* PFObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController.h; path = Parse/Internal/Object/Controller/PFObjectController.h; sourceTree = ""; }; + 00BEC727AA03A29C964A4BB55F65EC55 /* PFUserAuthenticationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserAuthenticationController.m; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m; sourceTree = ""; }; + 02577CE0CCF20FCB28AE72A1BA70963E /* PFLocationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLocationManager.h; path = Parse/Internal/PFLocationManager.h; sourceTree = ""; }; + 02B4ADB1ECAC920122E657AE18B10BFE /* TKEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKEvent.m; path = Code/TKEvent.m; sourceTree = ""; }; + 02F8999A03E5DEA16BE168121A32E180 /* PFSQLiteDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.h; sourceTree = ""; }; + 02FC7E859C916A1DBF3665CCB705934E /* FBSDKCheckmarkIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCheckmarkIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h; sourceTree = ""; }; + 03367350D97367D351BF7432EEB86476 /* PFLocationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLocationManager.m; path = Parse/Internal/PFLocationManager.m; sourceTree = ""; }; + 03C41F440C6257C38CBA6D08B490B043 /* PFRESTQueryCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTQueryCommand.h; path = Parse/Internal/Commands/PFRESTQueryCommand.h; sourceTree = ""; }; + 0401D69DFE749735649FE64519D6905B /* RKMappingOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingOperation.h; path = Code/ObjectMapping/RKMappingOperation.h; sourceTree = ""; }; + 045C613BE82C1C475C7BD0F490B49AAE /* PFURLSessionFileDownloadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionFileDownloadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.h; sourceTree = ""; }; + 046383C54AB907710018AAD4CBD3C3E8 /* PFUserAuthenticationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationDelegate.h; path = Parse/PFUserAuthenticationDelegate.h; sourceTree = ""; }; + 04C0F1EBAB58CF7749671D83B4E420E1 /* PFRESTObjectBatchCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectBatchCommand.m; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.m; sourceTree = ""; }; + 04DEAAD70B0460B7272FDFBAD65C2F1A /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h; sourceTree = ""; }; + 04FFB1F6F919106E7BC4541DF614C595 /* PFRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState.h; path = Parse/Internal/Relation/State/PFRelationState.h; sourceTree = ""; }; + 056454EF3FADBB01D32D7C28A920E5D6 /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = ""; }; + 056B8AC3C068967E144E9912F4D082E4 /* RKPropertyMappingTestExpectation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyMappingTestExpectation.h; path = Code/Testing/RKPropertyMappingTestExpectation.h; sourceTree = ""; }; + 0604B97C12B3337FD1CACD5908DADF8F /* FBSDKAppGroupAddDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupAddDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h; sourceTree = ""; }; + 06CE7699540EF590425A414A8CB424CE /* PFMultiProcessFileLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLock.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.h; sourceTree = ""; }; + 0704D1A252C21153AADCFF76B76A34C8 /* RKErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKErrors.m; path = Code/Support/RKErrors.m; sourceTree = ""; }; + 072E4E053796CCB0B198E0D81722FD94 /* PFPushUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushUtilities.h; path = Parse/Internal/Push/Utilites/PFPushUtilities.h; sourceTree = ""; }; + 079E082DB0D5553BF25A89DDB3AF9428 /* RKDotNetDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDotNetDateFormatter.m; path = Code/Support/RKDotNetDateFormatter.m; sourceTree = ""; }; + 07B7B00924E5C1CE262E21FBE11F0636 /* PFEventuallyPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyPin.m; path = Parse/Internal/PFEventuallyPin.m; sourceTree = ""; }; + 07CDAECDB40A9B34C6E06521F65F757A /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = AFNetworking/AFNetworkActivityIndicatorManager.m; sourceTree = ""; }; + 0801E5E29361C01869760055DF9A576B /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = ""; }; + 0830AA4DD7D7479876C01AF8CAC79CE3 /* PFRelationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationPrivate.h; path = Parse/Internal/Relation/PFRelationPrivate.h; sourceTree = ""; }; + 0861457C7F36148ED273E55B6BD5AB36 /* PFPurchase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchase.m; path = Parse/PFPurchase.m; sourceTree = ""; }; + 08FE1B46AC0005B96FC3513ECA03CF73 /* PFTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFTaskQueue.m; path = Parse/Internal/PFTaskQueue.m; sourceTree = ""; }; + 090D1B6F36F0C028C8CB3219A3BEF8C2 /* PFFile_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile_Private.h; path = Parse/Internal/File/PFFile_Private.h; sourceTree = ""; }; + 093F04A337062D005B479463914EBC72 /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = ""; }; + 09458C192035B62F6C206BA8051E7C08 /* ParseManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseManager.m; path = Parse/Internal/ParseManager.m; sourceTree = ""; }; + 099E18F815C1869B7833BD3221BA0636 /* FBSDKBridgeAPICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPICrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m; sourceTree = ""; }; + 09F505C5912DBB85A144A4BB9A39B321 /* AFJSONRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFJSONRequestOperation.m; path = AFNetworking/AFJSONRequestOperation.m; sourceTree = ""; }; + 0A04D42ACCA3BD87E3584E6ACC4F56E6 /* RKTestFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestFactory.h; path = Code/Testing/RKTestFactory.h; sourceTree = ""; }; + 0AA098F387A57A706C7677CC210587E7 /* FBSDKSendButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSendButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h; sourceTree = ""; }; + 0AD287C54F7CB5375C2852F3503334A8 /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = ""; }; + 0AD87F2B55AE1CC46DE21D8EC71A1A65 /* FBSDKLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h; sourceTree = ""; }; + 0B24226F7C8491F1AB37ED40AB15E909 /* TransitionKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "TransitionKit-prefix.pch"; sourceTree = ""; }; + 0B6D5A9ACB11850D607ADB4A0BF03613 /* FBSDKLikeButtonPopWAV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButtonPopWAV.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h; sourceTree = ""; }; + 0B6F6FC45E0A6A809CFB5D64AB572F12 /* PFOfflineStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineStore.m; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m; sourceTree = ""; }; + 0BC26D7366B9BCFCED00BA2443EC3F02 /* PFCommandRunning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunning.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.h; sourceTree = ""; }; + 0C0A1A0341B691B932463C02DCAFDDC0 /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = ""; }; + 0C10D8C3B24FB7B0FC1A118A6F1B04FB /* PFJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFJSONSerialization.h; path = Parse/Internal/PFJSONSerialization.h; sourceTree = ""; }; + 0D6D55B44BD8ADC5AE8F8AC715416614 /* PFObjectSubclassingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassingController.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.h; sourceTree = ""; }; + 0D726415722488F38181C0A46AB22051 /* RKErrorMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKErrorMessage.m; path = Code/ObjectMapping/RKErrorMessage.m; sourceTree = ""; }; + 0DB2691909F8F7F08DD7D43B4054114B /* PFMutableObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableObjectState.h; path = Parse/Internal/Object/State/PFMutableObjectState.h; sourceTree = ""; }; + 0DBE3A827C4CAF42FAF19063819A6576 /* FBSDKLoginKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginKit+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h"; sourceTree = ""; }; + 0E1C86507B3C7A9D987C1EE846A6E40F /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = ""; }; + 0E3D6E7602874F770FF747226169660D /* PFMutableObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableObjectState.m; path = Parse/Internal/Object/State/PFMutableObjectState.m; sourceTree = ""; }; + 0E4597D072E258E34336B3F35C0F419D /* PFURLSessionDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.h; sourceTree = ""; }; + 0E78B233EDC284D3081B128801711498 /* PFObjectFilePersistenceController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFilePersistenceController.h; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.h; sourceTree = ""; }; + 0E874B0F3891D0BC5E6EE724082760D1 /* Bolts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Bolts.m; path = Bolts/Common/Bolts.m; sourceTree = ""; }; + 0F1C624B7EAFBBBECE836A2F4331DB5A /* PFConfig_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig_Private.h; path = Parse/Internal/Config/PFConfig_Private.h; sourceTree = ""; }; + 0FE0AA3631AA8F7CFF57EB3EDC6CB5D1 /* AFImageRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageRequestOperation.h; path = AFNetworking/AFImageRequestOperation.h; sourceTree = ""; }; + 1011B8135A3EB4DCC7EF201AE71B3FC8 /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = ""; }; + 101AA17C537653FDA61829C8AB7E5153 /* Bolts-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Bolts-Private.xcconfig"; sourceTree = ""; }; + 103E4A41DD6EB7EE5C4377711291077A /* RKOperationStateMachine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKOperationStateMachine.h; path = Code/Support/RKOperationStateMachine.h; sourceTree = ""; }; + 1124CA6C3A9CDC4513ADC2393C447BE8 /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = ""; }; + 1127B3C5AFB734B232FDDA51D4E340BE /* FBSDKMessengerIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessengerIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m; sourceTree = ""; }; + 115AC32B7B718A94B00F763F6051128C /* libISO8601DateFormatterValueTransformer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libISO8601DateFormatterValueTransformer.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 118801D377E51EA29C240E0C19C227D2 /* PFCachedQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCachedQueryController.h; path = Parse/Internal/Query/Controller/PFCachedQueryController.h; sourceTree = ""; }; + 11E9E6138AF7E67248A1C931ACA660C3 /* PFInternalUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInternalUtils.m; path = Parse/Internal/PFInternalUtils.m; sourceTree = ""; }; + 12090BC886A58C9962169A136F7BBD2A /* PFInstallationIdentifierStore_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore_Private.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore_Private.h; sourceTree = ""; }; + 121F69A49C07670028BD2BB1285A2CE9 /* PFGeoPoint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFGeoPoint.m; path = Parse/PFGeoPoint.m; sourceTree = ""; }; + 12807CE1156EF23D621FBB87101DEF6D /* FBSDKLikeBoxView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m; sourceTree = ""; }; + 129FC7A2DDACFE1328825F6A865367F5 /* PFCommandResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandResult.m; path = Parse/Internal/PFCommandResult.m; sourceTree = ""; }; + 12DB62145E101EECBBF2B0ECBD3625D6 /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = ""; }; + 12F1636D729AD4B6DCCEF11891F28113 /* PFAnonymousUtils_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils_Private.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousUtils_Private.h; sourceTree = ""; }; + 132DA86A6F8F171F7FC7130F078FFCE1 /* FBSDKLoginButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginButton.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h; sourceTree = ""; }; + 13771E6540FA0D1373C61F3F5618DE1D /* BFTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTask.h; path = Bolts/Common/BFTask.h; sourceTree = ""; }; + 13FF6F02AD00C0AE6A8450F567534E23 /* PFHTTPRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPRequest.h; path = Parse/Internal/HTTPRequest/PFHTTPRequest.h; sourceTree = ""; }; + 141ACE54E47BD21C3F91FE031C2F27A4 /* FBSDKSharePhotoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhotoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m; sourceTree = ""; }; + 149E15962A38A8DACF6A9781F4A92F22 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 14B70CCCA8DFFB7FFCA35AC2170FF307 /* FBSDKShareOpenGraphObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphObject.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m; sourceTree = ""; }; + 14DC7569B23924F725356C7D875B9264 /* PFObjectConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectConstants.m; path = Parse/Internal/Object/Constants/PFObjectConstants.m; sourceTree = ""; }; + 155D2AB8BF53B4A09062475713E1C814 /* PFRole.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRole.m; path = Parse/PFRole.m; sourceTree = ""; }; + 15854EBB45118A734AE77C8EFB408F10 /* TransitionKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "TransitionKit-dummy.m"; sourceTree = ""; }; + 1592F16F5E573F913E7D111CEB121A50 /* FBSDKAppInviteDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m; sourceTree = ""; }; 15A529C27057E4A57D259CBC6E6CE49C /* Pods-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-acknowledgements.markdown"; sourceTree = ""; }; - 15A55E8ABB2D9F00C4D7E5B591503FC7 /* FBSDKSystemAccountStoreAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSystemAccountStoreAdapter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h; sourceTree = ""; }; - 1630835145A45B1AE1B5731F89DE41E1 /* FBSDKShareOpenGraphObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphObject.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m; sourceTree = ""; }; - 163419D898E7F370D581B4668E1A8F90 /* PFURLSessionFileDownloadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionFileDownloadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.h; sourceTree = ""; }; - 1660A7818BE658914CAD0B03854799AF /* Parse-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Parse-dummy.m"; sourceTree = ""; }; - 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 174428FB6ED93BFAE36DC2D84B429C3F /* BFCancellationTokenSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenSource.m; path = Bolts/Common/BFCancellationTokenSource.m; sourceTree = ""; }; - 175A1AE7E5CD7E7816C852D51957E66A /* FBSDKAppGroupAddDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupAddDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h; sourceTree = ""; }; - 178E1657CE29AD06224A9CDAE2FF258D /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = ""; }; - 17B1E05B566A858D61F1885B32B64AF7 /* BFAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink.h; path = Bolts/iOS/BFAppLink.h; sourceTree = ""; }; - 17D097F39B59CDB7D0438128AF2166D6 /* FBSDKLikeControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeControl.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h; sourceTree = ""; }; - 183A69494B93ED3701B335D4754CDE51 /* PFMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMacros.h; path = Parse/Internal/PFMacros.h; sourceTree = ""; }; - 183EE46003EBA5A7639B3EC6AC265522 /* PFURLSessionJSONDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionJSONDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m; sourceTree = ""; }; - 18A1F36B919BB4094769DA9141FA13B4 /* FBSDKShareOpenGraphContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m; sourceTree = ""; }; - 18DA781E03A5FEF86B0ADEA14D9E9E63 /* PFInstallationIdentifierStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationIdentifierStore.m; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.m; sourceTree = ""; }; - 191B469630ED03845A82C1836CBDDF7A /* PFRESTPushCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTPushCommand.h; path = Parse/Internal/Commands/PFRESTPushCommand.h; sourceTree = ""; }; - 19768BDA094897981754F254573AA405 /* PFSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession_Private.h; path = Parse/Internal/Session/PFSession_Private.h; sourceTree = ""; }; - 19ACD332B62F67CAEE524FC72B49A909 /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = ""; }; - 19BCCC920CFF89CFA88D6CDFD23D5044 /* FBSDKBoltsMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBoltsMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m; sourceTree = ""; }; - 19D77D49AB34F2DECC9C970A88D920DE /* PFUserFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserFileCodingLogic.m; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.m; sourceTree = ""; }; - 1A9CE0394A88D885474139DCEB0E2D2D /* PFCommandRunning.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunning.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.m; sourceTree = ""; }; - 1BCC4C05D309B44EE5FE3BCBCEF29FF9 /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = ""; }; - 1BCF6D36AAFB2D3DDD6EC1074B3664A8 /* FBSDKMessageDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessageDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m; sourceTree = ""; }; - 1C0C4E8FFB7B46EAF4E88536FB6D05C9 /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = ""; }; - 1C5C69B84F7FCD1066173E02E04716CE /* PFMutableQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableQueryState.h; path = Parse/Internal/Query/State/PFMutableQueryState.h; sourceTree = ""; }; - 1CC6FCED7A91E155259651DBC0B5262D /* Bolts-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Bolts-dummy.m"; sourceTree = ""; }; - 1D62A4BDE3836C5D2CBA3510FF1F7F03 /* PFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkActivityIndicatorManager.h; path = Parse/PFNetworkActivityIndicatorManager.h; sourceTree = ""; }; - 1D70B316B602A15A89952D1C307A9D90 /* FBSDKLikeButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h; sourceTree = ""; }; - 1DED363DFEDD926102B4745A17AA358A /* FBSDKGameRequestDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m; sourceTree = ""; }; - 1E6F860380815B6D4EE77B3B136F98BB /* PFPurchase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchase.m; path = Parse/PFPurchase.m; sourceTree = ""; }; - 1ED733F365A4B7276A584251EDEE13D3 /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = ""; }; - 1F15A1AA5F5C733E8B06847912B9D6C2 /* PFUserAuthenticationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserAuthenticationController.m; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m; sourceTree = ""; }; - 1F4BCC79A27562D8BCE24A7A8DDEB17E /* PFAlertView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAlertView.h; path = Parse/Internal/PFAlertView.h; sourceTree = ""; }; - 1F7C92F85D64501768D125A46270422E /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = ""; }; - 1F85984F43D0AE4CBF449F432430888C /* PFURLSessionDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.m; sourceTree = ""; }; - 2022F0B4ED20CCE9260B4E160964B9D8 /* PFCloudCodeController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloudCodeController.h; path = Parse/Internal/CloudCode/PFCloudCodeController.h; sourceTree = ""; }; - 21118A1801B385E14793771E3E2EB3DD /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = ""; }; - 2144DB6EA4F8D23EDA85ED9E54139327 /* FBSDKLoginTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h; sourceTree = ""; }; - 2198309D71CC7402D65F16A43667E437 /* BFAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLink.m; path = Bolts/iOS/BFAppLink.m; sourceTree = ""; }; - 2221BF7B944E3A928C21F480C8CCE6A6 /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFWebViewAppLinkResolver.h; path = Bolts/iOS/BFWebViewAppLinkResolver.h; sourceTree = ""; }; - 2278812C83EFF9DAF44E37BDB2014B3F /* FBSDKShareUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m; sourceTree = ""; }; - 2315D6063FC476611A25D1D15DDAD009 /* BFAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink_Internal.h; path = Bolts/iOS/BFAppLink_Internal.h; sourceTree = ""; }; - 23A2C3297FA5C533D7041CCE18A98771 /* PFQueryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryUtilities.h; path = Parse/Internal/Query/Utilities/PFQueryUtilities.h; sourceTree = ""; }; - 23F24FEF2A5474160AA9AD33E508D81E /* FBSDKAppInviteDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m; sourceTree = ""; }; - 2456CB46EED1A00126E3F3CD460B8E39 /* FBSDKSharingButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h; sourceTree = ""; }; - 24E017A99C1D0B48564CB40E5B2422A8 /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTaskCompletionSource.h; path = Bolts/Common/BFTaskCompletionSource.h; sourceTree = ""; }; - 25820261B6FF28709163579438BE7D8E /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h; sourceTree = ""; }; - 2590AA5D13156556306B9B8ED6AD2D74 /* PFOfflineQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryController.h; path = Parse/Internal/Query/Controller/PFOfflineQueryController.h; sourceTree = ""; }; - 25F9E5B91126E490040E4C142BE17D7C /* PFMutableACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableACLState.h; path = Parse/Internal/ACL/State/PFMutableACLState.h; sourceTree = ""; }; - 260655407F577D163F7D60F3E66F4979 /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = ""; }; - 26127A113C8DE5D855C538CEEE818097 /* PFPushUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushUtilities.h; path = Parse/Internal/Push/Utilites/PFPushUtilities.h; sourceTree = ""; }; - 2623540305AAB0140A287E371F61E55C /* PFMultiProcessFileLock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLock.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.m; sourceTree = ""; }; - 2701725284D1AF7F14D88A53E152A451 /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = ""; }; - 27330F2C59009D2CCAFFFB3332D30BE4 /* _FBSDKLoginRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKLoginRecoveryAttempter.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m; sourceTree = ""; }; - 279CEB44F83E8E0913B50FCE426C934D /* PFPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPin.h; path = Parse/Internal/LocalDataStore/Pin/PFPin.h; sourceTree = ""; }; - 279F58DF900F5886BE441B7000DE90AF /* FBSDKSendButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSendButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m; sourceTree = ""; }; - 27AAD21F178D79A8CCA228342BF2E4B2 /* PFObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectUtilities.m; path = Parse/Internal/Object/Utilities/PFObjectUtilities.m; sourceTree = ""; }; - 28039FB8496FC037CD115B9256200393 /* PFFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile.h; path = Parse/PFFile.h; sourceTree = ""; }; - 280B92F20BB7309511EA9EFC8DF7AB87 /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = ""; }; - 281C73120A87B602C8A007845677FA4B /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; - 282E7F3B29E9E0666DC2F0DD9E9BC196 /* PFReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFReachability.h; path = Parse/Internal/PFReachability.h; sourceTree = ""; }; - 284898C95718E6C68579D4FE3FE4B5BA /* PFObjectController_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController_Private.h; path = Parse/Internal/Object/Controller/PFObjectController_Private.h; sourceTree = ""; }; - 284C3412CE156CA93B1FBA2AB890B118 /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m; sourceTree = ""; }; - 28938733DD441FACFA78DCA04FC186C4 /* PFEventuallyQueue_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue_Private.h; path = Parse/Internal/PFEventuallyQueue_Private.h; sourceTree = ""; }; - 298BE9F2710D86C3196C6850E44C968A /* PFAnalytics_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics_Private.h; path = Parse/Internal/Analytics/PFAnalytics_Private.h; sourceTree = ""; }; - 2AF0D88FB66A75671BB0F620D0569032 /* FBSDKShareConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareConstants.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h; sourceTree = ""; }; - 2B302392664E4BE2747A482E82F65D97 /* PFQueryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryUtilities.m; path = Parse/Internal/Query/Utilities/PFQueryUtilities.m; sourceTree = ""; }; - 2B91208A301E53477B2B4CCCF31C14AB /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = ""; }; - 2CB8B17646606A4BA50309E5B9768E26 /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = ""; }; - 2D2B6CA8A26E1A54057C96806C92CBB2 /* PFSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSession.m; path = Parse/PFSession.m; sourceTree = ""; }; - 2DDD6BD25FFFCF1D98AD2C5B68EED6B5 /* BFURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL_Internal.h; path = Bolts/iOS/BFURL_Internal.h; sourceTree = ""; }; - 2E0D7EF42282EAA7CA554AA254D0F09A /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = ""; }; - 2EE36FA36A8C91403AF93CAE6EDA4A1B /* FBSDKLoginKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKLoginKit-dummy.m"; sourceTree = ""; }; - 2F4F3195CA169976EFA27638B5893094 /* PFFieldOperationDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperationDecoder.h; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.h; sourceTree = ""; }; - 2F9593DC6B40D6FF814A1A143B4F1192 /* PFDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDecoder.m; path = Parse/Internal/PFDecoder.m; sourceTree = ""; }; - 2FC77C0223C08FEC9F0BF799243D8F4C /* FBSDKLikeBoxBorderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxBorderView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h; sourceTree = ""; }; - 2FEB5063ADD4EFE8EFFAD97BD5C4D8CF /* PFCoreManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreManager.h; path = Parse/Internal/PFCoreManager.h; sourceTree = ""; }; - 306334793F42597A58A4BA17738769A8 /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m; sourceTree = ""; }; - 3065F7EE96D178C185A3FDEA83907DD7 /* PFACL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACL.m; path = Parse/PFACL.m; sourceTree = ""; }; - 30AEFC89FB4F53E87A31D13E8D1108FC /* PFSQLiteDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabase.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m; sourceTree = ""; }; - 316A644BD3E063F9A440F7F164000FB8 /* PFCurrentInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentInstallationController.m; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.m; sourceTree = ""; }; - 31A3C807180B3E37B45206DDBBC18002 /* FBSDKSharePhoto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhoto.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m; sourceTree = ""; }; - 31A715898F55241C3204E5E8C95A3963 /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h; sourceTree = ""; }; - 31B2F765DDFA36C75E4D5C6A387B8EF2 /* FBSDKShareOpenGraphValueContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphValueContainer.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h; sourceTree = ""; }; - 31B2F7D2FA080E49146AA5468986A493 /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = ""; }; - 32BA9072F15BE4F0B32F6D4CBC36210A /* BFAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererView.m; path = Bolts/iOS/BFAppLinkReturnToRefererView.m; sourceTree = ""; }; - 32CCE778F285747138A0725BD9D1B019 /* PFInstallationIdentifierStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.h; sourceTree = ""; }; - 32E03031E4F6C80A832AC26957F2BD66 /* PFCommandURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandURLRequestConstructor.m; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.m; sourceTree = ""; }; - 32F98A56A6F6C88E819D8937E418E312 /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkNavigation.h; path = Bolts/iOS/BFAppLinkNavigation.h; sourceTree = ""; }; - 33370AFC4AF7E1BD533B19E83C86384C /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = ""; }; - 33749F5083DAFA1A1E3A782C771A1569 /* PFQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQuery.m; path = Parse/PFQuery.m; sourceTree = ""; }; - 33AA341F9AFBBCA79F1F6E89A0571479 /* PFAnonymousUtils_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils_Private.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousUtils_Private.h; sourceTree = ""; }; - 33E340B3658DAFF8B960E00C876976B1 /* PFPushPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushPrivate.h; path = Parse/Internal/Push/PFPushPrivate.h; sourceTree = ""; }; - 34AD764CE1E3CBCA034D21A0B4EDFC69 /* PFSQLiteStatement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteStatement.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.m; sourceTree = ""; }; - 35E1B52EE3E2E3E51117F76E0A815856 /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = ""; }; - 35EAA5B4750A741B6F6FB63B5EF161F6 /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = ""; }; - 35F6EDACB4373C69CDD53204DEFA7B7F /* PFObjectPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectPrivate.h; path = Parse/Internal/Object/PFObjectPrivate.h; sourceTree = ""; }; - 36275B6CAF874F0A77AECB1185D90A1F /* FBSDKAccessTokenCacheV3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m; sourceTree = ""; }; - 3652FCED3441641775C14E6FD5BC06D1 /* PFSQLiteDatabaseResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseResult.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.h; sourceTree = ""; }; - 36C87C6A0D356709A30FBC0A3D13EA86 /* FBSDKLoginManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManager+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h"; sourceTree = ""; }; - 3708EBED7F7E311067B7CCF801145621 /* FBSDKAccessTokenCacheV4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV4.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m; sourceTree = ""; }; - 3723B220F505C587A732C7DDB88DA222 /* PFCommandResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandResult.h; path = Parse/Internal/PFCommandResult.h; sourceTree = ""; }; - 37E59CBA1B5E09F3A99384CDBF968875 /* FBSDKGameRequestContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h; sourceTree = ""; }; - 38A085262915DEFB26BD203072DD601B /* PFMutableRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableRelationState.m; path = Parse/Internal/Relation/State/PFMutableRelationState.m; sourceTree = ""; }; - 395A40E6ED210F9F655AE3ED00AB6CCE /* PFDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDateFormatter.m; path = Parse/Internal/PFDateFormatter.m; sourceTree = ""; }; - 396620E59D63358DFBB3310A8B068287 /* FBSDKShareDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m; sourceTree = ""; }; - 3A6FA7C694C6B40F59512851C968703D /* FBSDKShareVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideo.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m; sourceTree = ""; }; - 3AAB126C87821E766861FC4022C4E248 /* PFCategoryLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCategoryLoader.h; path = Parse/Internal/PFCategoryLoader.h; sourceTree = ""; }; - 3AB3B7F4B8D4BBB3AF4CFE483FA32924 /* PFDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDateFormatter.h; path = Parse/Internal/PFDateFormatter.h; sourceTree = ""; }; - 3ADDE928DDF753FD23E0044BC7A4C15B /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m; sourceTree = ""; }; - 3B0A0F292A52A1B2A4F4BBA76248ED29 /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = ""; }; - 3B38B03E5392BB79AE3F31D3346D7A1F /* FBSDKLoginManagerLoginResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManagerLoginResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h"; sourceTree = ""; }; - 3B567AC8F39B4A53D38DEA73D3B7AD4C /* FBSDKShareDialogMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialogMode.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h; sourceTree = ""; }; - 3CB9A90D939500BE1CEC8324CA790C85 /* BFAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererController.m; path = Bolts/iOS/BFAppLinkReturnToRefererController.m; sourceTree = ""; }; - 3D36D6965ABDC70928CD459FE8BC3B89 /* FBSDKBoltsMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBoltsMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h; sourceTree = ""; }; - 3DEDE777646928ECFED937EF0600521E /* FBSDKLoginKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginKit+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h"; sourceTree = ""; }; - 3E0284BB2426357ED603C689888DD262 /* PFObjectEstimatedData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectEstimatedData.m; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.m; sourceTree = ""; }; - 3E52BB93D7804BC50FDA99B9B59EB044 /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = ""; }; - 3E718F82F8FAFE696738E00DEA95B1BE /* FBSDKShareKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKShareKit-Private.xcconfig"; sourceTree = ""; }; - 3E85B0B9859FBCA9E74C55E1211ACE9A /* PFFieldOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperation.m; path = Parse/Internal/FieldOperation/PFFieldOperation.m; sourceTree = ""; }; - 3F782BE969B5510EDD8EC6903FD236BE /* PFProductsRequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProductsRequestHandler.m; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.m; sourceTree = ""; }; - 3F882D75C1CCE50E50D3030EB284FF29 /* FBSDKShareKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareKit+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h"; sourceTree = ""; }; - 405EFED49FCFF2D26196C7FDF11D924D /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = ""; }; - 40FC928384A8D2A945845B0EB6281D6C /* PFObjectFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCodingLogic.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.m; sourceTree = ""; }; - 41094B5E693D24C0D940E39D86E35B98 /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = ""; }; - 41CAAD93B8E8E5A2F8F2F8297FFE95AC /* PFPaymentTransactionObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPaymentTransactionObserver.m; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.m; sourceTree = ""; }; - 42DC5A6ADC1D96FFC19B5446CC236649 /* PFJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFJSONSerialization.m; path = Parse/Internal/PFJSONSerialization.m; sourceTree = ""; }; - 43A8D4366E635D41E68C80330D1D6303 /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = ""; }; - 43C58CE6DD6DD31ACA6BE1B0D257427E /* FBSDKMessengerIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessengerIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m; sourceTree = ""; }; - 442BC9945073FD644D98DC6A0BDCD0D1 /* PFSQLiteDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.h; sourceTree = ""; }; - 4490BD8F1600D89FDE4126EAF678E35C /* FBSDKAppGroupJoinDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupJoinDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m; sourceTree = ""; }; - 44AC0AE8CCB6A9AA9E28BD0E07607467 /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m; sourceTree = ""; }; - 44B6337C2B9832B7597DF729DE1D5419 /* PFEventuallyPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyPin.m; path = Parse/Internal/PFEventuallyPin.m; sourceTree = ""; }; - 45C436A6EE477BC43DFD0B674BD6F99C /* FBSDKAppGroupAddDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupAddDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m; sourceTree = ""; }; - 4612BDFDA5045AC0EE6F998D18D57F77 /* PFCurrentUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentUserController.m; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.m; sourceTree = ""; }; - 465813B1FEEE434D921E2CE4F2EE3F87 /* PFUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserController.m; path = Parse/Internal/User/Controller/PFUserController.m; sourceTree = ""; }; - 46C04343C64E76EC67462AD59BFCEAA3 /* PFPushChannelsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushChannelsController.m; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.m; sourceTree = ""; }; - 46CF33218A1E3A8EEBA12DF120858641 /* PFAsyncTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAsyncTaskQueue.h; path = Parse/Internal/PFAsyncTaskQueue.h; sourceTree = ""; }; - 46D403D3185FA87D018A34BBD7A76FC0 /* libBolts.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBolts.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 47A4C203E7867764F3E284630A0268FD /* FBSDKLikeBoxView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m; sourceTree = ""; }; - 47F6D008CDDC192BF994FAA0B8B41043 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; - 4812BF72649E3FB3CABBD5BEE63A124A /* PFFileController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileController.m; path = Parse/Internal/File/Controller/PFFileController.m; sourceTree = ""; }; - 48E607B7C98F48C601E0A8EADDB4199E /* PFSessionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionController.m; path = Parse/Internal/Session/Controller/PFSessionController.m; sourceTree = ""; }; - 492800396C7B66131BE664D3B6D93D67 /* PFUserConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserConstants.h; path = Parse/Internal/User/Constants/PFUserConstants.h; sourceTree = ""; }; - 4954F834F6DA1CCC4DE29F801E8E6A52 /* PFQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryController.h; path = Parse/Internal/Query/Controller/PFQueryController.h; sourceTree = ""; }; - 4991C6D1D1F1E90244D63C683726742E /* PFPropertyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo.m; sourceTree = ""; }; - 4AF90E9A2D2424F9A61BF41682FAB99A /* PFJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFJSONSerialization.h; path = Parse/Internal/PFJSONSerialization.h; sourceTree = ""; }; - 4BDEBE5111524FC2428EBDDD195197C8 /* PFSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession.h; path = Parse/PFSession.h; sourceTree = ""; }; - 4CAFF3BEDD8F0042F6050C5859DE2A0E /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = ""; }; - 4D1AB96A6A99AA8FC62B50D926542778 /* FBSDKLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m; sourceTree = ""; }; - 4D5060E67D251FD6C07A6C8127F60BC3 /* FBSDKShareButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m; sourceTree = ""; }; - 4D93203DD4AFE0B35B1D82EF027EE2E3 /* Parse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Parse.m; path = Parse/Parse.m; sourceTree = ""; }; - 4E2155DA6D3D13D23A2BE2F0CBAFE632 /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = ""; }; - 4E7104272D9C49EA366374D7591B69BC /* PFCloud.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloud.h; path = Parse/PFCloud.h; sourceTree = ""; }; - 4F58C09538CC735A9D6E6B2036FA8A43 /* FBSDKLikeDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeDialog.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h; sourceTree = ""; }; - 4F598868B799F457865DCE7BA2139460 /* FBSDKLoginButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginButton.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h; sourceTree = ""; }; - 4FEF83ED93FDFDDF9C57D5020D1F5EB6 /* PFRESTCloudCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCloudCommand.h; path = Parse/Internal/Commands/PFRESTCloudCommand.h; sourceTree = ""; }; - 5015295E9D9B6BD11C70E85285B15C0C /* PFPinningEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningEventuallyQueue.m; path = Parse/Internal/PFPinningEventuallyQueue.m; sourceTree = ""; }; - 51F1FF6BF9EE55B7EAA6650EA4BA611F /* PFACLPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLPrivate.h; path = Parse/Internal/ACL/PFACLPrivate.h; sourceTree = ""; }; - 5217066CC765E38FC661DB8DD6390679 /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = ""; }; - 5251FD21A849AFCBA7D4CFF66A674774 /* PFInstallation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallation.m; path = Parse/PFInstallation.m; sourceTree = ""; }; - 5292F6C0B6F153791486694C6FF45617 /* Bolts-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Bolts-Private.xcconfig"; sourceTree = ""; }; - 53680AD3533A53E841E40B971C980E33 /* PFRelationState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState_Private.h; path = Parse/Internal/Relation/State/PFRelationState_Private.h; sourceTree = ""; }; - 5587C60D4A8E123E1C1112734C3FD4A8 /* PFURLSessionCommandRunner.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionCommandRunner.m; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.m; sourceTree = ""; }; - 55D18B6A42464EFB5D7AC64708485ECF /* PFTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFTaskQueue.h; path = Parse/Internal/PFTaskQueue.h; sourceTree = ""; }; - 55EDB925355F44E5F4CD0589A4D15596 /* PFHTTPURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHTTPURLRequestConstructor.m; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.m; sourceTree = ""; }; - 567F41DC5BE80C8E3FAD7E42124F6A1D /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = ""; }; - 56DB0C886738CB142BFF8D6C68BDC124 /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = ""; }; - 5701B935661FE2B2D953052CE58E255F /* PFURLSessionDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.h; sourceTree = ""; }; - 578C1B0AB298F33880AF7743E63A09A6 /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = ""; }; - 57991A4FD66FFD7B27890292A9F881D8 /* PFHTTPRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPRequest.h; path = Parse/Internal/HTTPRequest/PFHTTPRequest.h; sourceTree = ""; }; - 58081944456413D3F0B0A33BCF9415F7 /* BFCancellationTokenRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenRegistration.h; path = Bolts/Common/BFCancellationTokenRegistration.h; sourceTree = ""; }; - 582D21818FB0E31756573C0CEAC6A8B4 /* PFPinningObjectStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningObjectStore.m; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.m; sourceTree = ""; }; - 583552D355C9486BC5473CB54B561686 /* PFObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectState.m; path = Parse/Internal/Object/State/PFObjectState.m; sourceTree = ""; }; - 59024F193667AEB7E18165A249D687E7 /* PFUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState.h; path = Parse/Internal/User/State/PFUserState.h; sourceTree = ""; }; - 590B72F042F883DF5EACA245CBD92A25 /* FBSDKGameRequestDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h; sourceTree = ""; }; - 5942BB14DE3948BBEF602394405639FE /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = ""; }; - 59E56D9E5ED9372FE9F67EE8F685C3DB /* PFOfflineObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineObjectController.m; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m; sourceTree = ""; }; - 5AE219E0D5DA9BEAD01E3B7B78A5B608 /* BoltsVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BoltsVersion.h; path = Bolts/Common/BoltsVersion.h; sourceTree = ""; }; - 5AFCCD081D365FBB6E1CF56D2CB3AF34 /* FBSDKLiking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLiking.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h; sourceTree = ""; }; - 5B1F0581CF330D76A0A76C63A642DD8E /* PFMulticastDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMulticastDelegate.h; path = Parse/Internal/PFMulticastDelegate.h; sourceTree = ""; }; - 5B5990F0ACF5AC91C7955E37265F1135 /* PFDevice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDevice.h; path = Parse/Internal/PFDevice.h; sourceTree = ""; }; - 5BF0534631608C66AF55C61D37D30B11 /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = ""; }; - 5C119E76B1739D418563786A3535A586 /* PFCategoryLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCategoryLoader.m; path = Parse/Internal/PFCategoryLoader.m; sourceTree = ""; }; - 5C9C1D9FAA0AB4875FD3710EBA7C5926 /* PFNullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNullability.h; path = Parse/PFNullability.h; sourceTree = ""; }; - 5CE057D872493F57174963C4F6B50DC4 /* PFMutablePushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutablePushState.m; path = Parse/Internal/Push/State/PFMutablePushState.m; sourceTree = ""; }; - 5E92731E3FF7A77ABF62EC441D94D3BF /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = ""; }; - 5EA792EC53DF7A8B5DA6169AC702E322 /* PFFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState.h; path = Parse/Internal/File/State/PFFileState.h; sourceTree = ""; }; - 5F06057C5FB4F34C78273C6773FE934A /* FBSDKLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m; sourceTree = ""; }; - 5F40CD0B016860B2BBC25B6EBBE9E284 /* PFAlertView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAlertView.m; path = Parse/Internal/PFAlertView.m; sourceTree = ""; }; - 5F767B7B637099477E518FC655BBFC0A /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = ""; }; - 5F9F7B355F7CD6C75C1B6D99445E1702 /* PFObjectSubclassInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassInfo.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.m; sourceTree = ""; }; - 5FB626B7387C990243FEC9C3854CBAD8 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 60BBB09A1AF30CA3EF9CB3294AA8A5F9 /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = ""; }; - 60D3605114807AAF6515D9AEE323E75B /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = ""; }; - 60FF9CABF05ED49D7A2F6C7414459E8F /* BFURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL.h; path = Bolts/iOS/BFURL.h; sourceTree = ""; }; - 610C8660482AAF6DF1ED051F56BA7AAE /* FBSDKAccessTokenCacheV3_21.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_21.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m; sourceTree = ""; }; - 611ADAF0571A733561852B6D6D73901A /* PFObjectLocalIdStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectLocalIdStore.h; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h; sourceTree = ""; }; - 61EC245B07BF5B2B8DAB7F7D13FF56EB /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; - 61EFCD5D7B14809002EECB4A73721FD4 /* PFObjectFileCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCoder.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.h; sourceTree = ""; }; - 61F77E151A38F4FE7CA5F80B9415A1AA /* PFInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationController.m; path = Parse/Internal/Installation/Controller/PFInstallationController.m; sourceTree = ""; }; - 621186073ECC02598EFBC30E0D60F6A4 /* PFObject+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFObject+Subclass.h"; path = "Parse/PFObject+Subclass.h"; sourceTree = ""; }; - 62433B094D7197450919571030C74B07 /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = ""; }; - 629A496B7FB2D5E3C39FF55136A1EEE4 /* FBSDKShareOpenGraphObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphObject.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h; sourceTree = ""; }; - 62F86AE15FCDD3BDB2B1432E3A970BAE /* PFCloudCodeController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloudCodeController.m; path = Parse/Internal/CloudCode/PFCloudCodeController.m; sourceTree = ""; }; - 633199AB2B8E7F8DD87937157D733647 /* FBSDKShareUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h; sourceTree = ""; }; + 15FDA819E4A67B0052C5B32B6C6BC32C /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h; sourceTree = ""; }; + 172810485903145DA5B543BCCDD9710D /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = ""; }; + 17453FC905983BE633680D64EBDF6BF7 /* PFPushChannelsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushChannelsController.h; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.h; sourceTree = ""; }; + 176FB6F42987293FB1E182C230B96F21 /* PFCommandCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache.h; path = Parse/Internal/PFCommandCache.h; sourceTree = ""; }; + 177385813576F961AC0390A29802236F /* PFKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeychainStore.h; path = Parse/Internal/PFKeychainStore.h; sourceTree = ""; }; + 1779F15C59809673515A3EBCF2C22457 /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m; sourceTree = ""; }; + 17EBDD0D3F6CA772ACD223D47BC6606F /* PFRelation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelation.m; path = Parse/PFRelation.m; sourceTree = ""; }; + 184AA3B1233A04E41BF6626A6B9D8891 /* _FBSDKLoginRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKLoginRecoveryAttempter.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h; sourceTree = ""; }; + 1860C6036F41AF4136B179EC2D9939E3 /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = ""; }; + 18FD24EF1379B71A3998D456EAF6CE07 /* PFInstallationConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationConstants.m; path = Parse/Internal/Installation/Constants/PFInstallationConstants.m; sourceTree = ""; }; + 191B64353A25EF72E4466B2F6B9EBEE3 /* FBSDKLikeButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h; sourceTree = ""; }; + 193263D0A1C4B4903D81B084F3616AC7 /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = ""; }; + 1955631553D95C0ED5688DA6F29CC8E6 /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = ""; }; + 1A7CF9343BE7F2F1B6FB78E1A12A6B72 /* FBSDKLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h; sourceTree = ""; }; + 1A982F733776ECB9F974B94BB7AA8825 /* PFInstallation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallation.h; path = Parse/PFInstallation.h; sourceTree = ""; }; + 1AD3DE9B80F57FA325D62663B4BFF9A0 /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = ""; }; + 1B0819CE19B7C8DFC00BC735593D2EBA /* FBSDKSharingButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h; sourceTree = ""; }; + 1B176B4F560C96F25001CAAEF4C24496 /* PFProductsRequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProductsRequestHandler.m; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.m; sourceTree = ""; }; + 1B949380B0A36EE9DCE1BE3DD205872D /* RKRouteSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRouteSet.m; path = Code/Network/RKRouteSet.m; sourceTree = ""; }; + 1BA732D4BA53C90B93834949CEB41543 /* RKMapperOperation_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapperOperation_Private.h; path = Code/ObjectMapping/RKMapperOperation_Private.h; sourceTree = ""; }; + 1BC8CA549338879E1C908751DD3FD1C0 /* PFCommandURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandURLRequestConstructor.m; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.m; sourceTree = ""; }; + 1BF338323FECE8F074D22D8BD870DF10 /* FBSDKGameRequestFrictionlessRecipientCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestFrictionlessRecipientCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m; sourceTree = ""; }; + 1C1DC34229B831B07F4F2C955050094A /* PFPushChannelsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushChannelsController.m; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.m; sourceTree = ""; }; + 1CAD9C68AAF00E405CF6AAA2841B7C73 /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = ""; }; + 1CB2A1FCA55FB8C6D0C65EF34A7E0C1A /* PFRESTPushCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTPushCommand.h; path = Parse/Internal/Commands/PFRESTPushCommand.h; sourceTree = ""; }; + 1D3AB2BDF8EB2BCD1EDB0AE62B5E7FE1 /* PFObjectState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState_Private.h; path = Parse/Internal/Object/State/PFObjectState_Private.h; sourceTree = ""; }; + 1DBD4C55AA3FFD740DBC08F5C47D6E0C /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = ""; }; + 1E2E9BC6F467A47EC23C62B07767BBD1 /* PFSQLiteStatement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteStatement.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.m; sourceTree = ""; }; + 1E4620C81A01480F3991F76D4DE7BE37 /* Parse-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Parse-dummy.m"; sourceTree = ""; }; + 1EE0F82547915413E8FA3F4BD68D24DD /* PFCloudCodeController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloudCodeController.m; path = Parse/Internal/CloudCode/PFCloudCodeController.m; sourceTree = ""; }; + 1F9AAC2C6FF818D6EC48169DC75AF8C0 /* FBSDKShareDialogMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialogMode.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m; sourceTree = ""; }; + 1FAEC79833DB40A28030BB60070264FC /* RKHTTPUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKHTTPUtilities.h; path = Code/ObjectMapping/RKHTTPUtilities.h; sourceTree = ""; }; + 2002E8422D89C583334968262BDCE8E7 /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = ""; }; + 205D68C9BFE7AFE003B0D6E31B36DF5C /* BFCancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationToken.h; path = Bolts/Common/BFCancellationToken.h; sourceTree = ""; }; + 20904F67CBBE7208D5F1E68654CE0F20 /* BFMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFMeasurementEvent.m; path = Bolts/iOS/BFMeasurementEvent.m; sourceTree = ""; }; + 20B30A30703B653252AC6D15C630DA1D /* PFPurchaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchaseController.h; path = Parse/Internal/Purchase/Controller/PFPurchaseController.h; sourceTree = ""; }; + 20C0209C7621AD4E7C7E895393FEEAAE /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = ""; }; + 2109F27F00016BC697F3694A3C8A4EF0 /* RKPathMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPathMatcher.h; path = Code/Network/RKPathMatcher.h; sourceTree = ""; }; + 2166AF7026817E78A1616576AA382EE3 /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = ""; }; + 21B3BED0A995DF74C8CE5AFBA1C4F804 /* PFMultiProcessFileLock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLock.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.m; sourceTree = ""; }; + 2210879128FAFD55EE381E85138A6E97 /* FBSDKShareDialogMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialogMode.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h; sourceTree = ""; }; + 22736BBB7E29843BFD25AF6EA526FD54 /* FBSDKShareUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h; sourceTree = ""; }; + 2281F1087FCCD198F1FD69A1A5036483 /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = ""; }; + 22BCAB2ABFBB3566EC2E7ED45706F704 /* RKResponseDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKResponseDescriptor.h; path = Code/Network/RKResponseDescriptor.h; sourceTree = ""; }; + 232ECC729A95758C447EC817E24A8382 /* AFHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPRequestOperation.m; path = AFNetworking/AFHTTPRequestOperation.m; sourceTree = ""; }; + 234BE7352A8ED0F63714ADF373DC4713 /* FBSDKShareError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareError.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m; sourceTree = ""; }; + 23780D118CBD55B9811B664EAE111A4F /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkNavigation.h; path = Bolts/iOS/BFAppLinkNavigation.h; sourceTree = ""; }; + 237D0660F2210DBDAA12CCD66B659E6C /* PFConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfigController.h; path = Parse/Internal/Config/Controller/PFConfigController.h; sourceTree = ""; }; + 238732EAA8097AAF32A176A68CD82F76 /* FBSDKAppGroupAddDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupAddDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m; sourceTree = ""; }; + 243B9EEDBFD73BC0E48417E798EB7D49 /* Support.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Support.h; path = Code/Support.h; sourceTree = ""; }; + 249868FBCC4788A742D8CFD87310BE9C /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = ""; }; + 25258821C0218CE36A9415CFB0D9F151 /* PFUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserController.h; path = Parse/Internal/User/Controller/PFUserController.h; sourceTree = ""; }; + 259C735ED2FFC41359586661CE813736 /* RKPathUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPathUtilities.m; path = Code/Support/RKPathUtilities.m; sourceTree = ""; }; + 260ACD6713EAF6AF8913E567E5D000B1 /* PFURLConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLConstructor.h; path = Parse/Internal/HTTPRequest/PFURLConstructor.h; sourceTree = ""; }; + 2623CB720FCCE67AE1CCB1219F214621 /* FBSDKLikeDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeDialog.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m; sourceTree = ""; }; + 265CD502B435E47078A0F18F014D4A2C /* SOCKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SOCKit-prefix.pch"; sourceTree = ""; }; + 26648E7CE5BE1B08B80D3B2DAF2A53C7 /* PFFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileManager.m; path = Parse/Internal/PFFileManager.m; sourceTree = ""; }; + 26A65996250E9A6E0A45799C5C80A4D6 /* PFFieldOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperation.m; path = Parse/Internal/FieldOperation/PFFieldOperation.m; sourceTree = ""; }; + 26E851E7927031416617D440DC5A8D91 /* FBSDKShareOpenGraphAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphAction.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h; sourceTree = ""; }; + 271F7EB07DABBEBBC72C435841D5B7B9 /* PFPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPin.m; path = Parse/Internal/LocalDataStore/Pin/PFPin.m; sourceTree = ""; }; + 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 279B027B17D8D0512BA90F26313978F2 /* PFInstallationIdentifierStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.h; sourceTree = ""; }; + 27B54F6FA7D889D22C88195CA1B1EA1E /* PFInstallationConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationConstants.h; path = Parse/Internal/Installation/Constants/PFInstallationConstants.h; sourceTree = ""; }; + 27D73CCE08122C37FC401A9805E8033F /* RKPathUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPathUtilities.h; path = Code/Support/RKPathUtilities.h; sourceTree = ""; }; + 27E46D6B718D04CD81F500D08BDCA779 /* PFCloud.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloud.m; path = Parse/PFCloud.m; sourceTree = ""; }; + 283697319377A707827BA6D72CD7F2B7 /* PFSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession_Private.h; path = Parse/Internal/Session/PFSession_Private.h; sourceTree = ""; }; + 2850C6A23236DBC93BCD286061735858 /* PFQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryController.h; path = Parse/Internal/Query/Controller/PFQueryController.h; sourceTree = ""; }; + 2890440E42FDEC4C76D4C02BC10E1DD4 /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = ""; }; + 28D3D49C022C268585679D13BC5BFC4B /* FBSDKLoginKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKLoginKit-Private.xcconfig"; sourceTree = ""; }; + 28D76BC349DBB9D1197FFC7ED4732AAA /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m; sourceTree = ""; }; + 28FC8B75B37315B6FEDFAC246BEDB597 /* RKISO8601DateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKISO8601DateFormatter.m; path = Code/RKISO8601DateFormatter.m; sourceTree = ""; }; + 29BDAC347646877BAF67F12CBA39BDB2 /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = ""; }; + 2A2306F062D21537BCCD17B8E1265AE8 /* TKTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKTransition.m; path = Code/TKTransition.m; sourceTree = ""; }; + 2A451A543F61480DA16C5AF92075E754 /* FBSDKShareVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideo.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m; sourceTree = ""; }; + 2AFF4BBCD87A80EBBD6ABEB24467DD92 /* PFPropertyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo.m; sourceTree = ""; }; + 2B10539AD7B65940ECDF70BE96FD7FE9 /* PFGeoPoint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPoint.h; path = Parse/PFGeoPoint.h; sourceTree = ""; }; + 2B1C44F7812C72D0C7AF70AF7E3582BA /* AFPropertyListRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFPropertyListRequestOperation.m; path = AFNetworking/AFPropertyListRequestOperation.m; sourceTree = ""; }; + 2B4DDE724F0C79DF04632181A3641990 /* PFDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDateFormatter.h; path = Parse/Internal/PFDateFormatter.h; sourceTree = ""; }; + 2B9375688AA4B17E0481C9DEF5E1CDC7 /* BFAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkNavigation.m; path = Bolts/iOS/BFAppLinkNavigation.m; sourceTree = ""; }; + 2BCD6FD3DADE66AF00AD766F8C7CAAEE /* BFAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererView.m; path = Bolts/iOS/BFAppLinkReturnToRefererView.m; sourceTree = ""; }; + 2C16B289C2694A9F01E5AC4A40F5BBC5 /* RKURLEncodedSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKURLEncodedSerialization.m; path = Code/Support/RKURLEncodedSerialization.m; sourceTree = ""; }; + 2CBA80D14BCC38865278570CF75FD31B /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent_Internal.h; path = Bolts/iOS/BFMeasurementEvent_Internal.h; sourceTree = ""; }; + 2D51A7F9937E1B2641CDCF758F76D7BB /* PFSQLiteDatabase_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase_Private.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase_Private.h; sourceTree = ""; }; + 2D582428208099E80BE466E2940ED2D0 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.debug.xcconfig; sourceTree = ""; }; + 2D63F2855FC61EC1E5A671306404454E /* PFMutableACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableACLState.h; path = Parse/Internal/ACL/State/PFMutableACLState.h; sourceTree = ""; }; + 2DD054F75FE35DC95593292D3F5E3384 /* PFFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileState.m; path = Parse/Internal/File/State/PFFileState.m; sourceTree = ""; }; + 2DE04FB62AD4572A1EF2E388614A2906 /* PFFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile.h; path = Parse/PFFile.h; sourceTree = ""; }; + 2EBD9E78DE2BF6EF77A771D225D5E591 /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m; sourceTree = ""; }; + 2EE325AB5D11F8E0314EC1A65AFC915A /* RKMappingOperationDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingOperationDataSource.h; path = Code/ObjectMapping/RKMappingOperationDataSource.h; sourceTree = ""; }; + 2EEFB0F3823FCEF4E5F3012C82EF7AB2 /* PFPropertyInfo_Runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Runtime.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h; sourceTree = ""; }; + 2F1964D552EA65831BBC604C32B2ED59 /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = ""; }; + 2FC310BBD6C8CF36F6B10AEF4AE850E3 /* PFObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectController.m; path = Parse/Internal/Object/Controller/PFObjectController.m; sourceTree = ""; }; + 2FD7126F63E44E22CF5C50BA6B03A193 /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = ""; }; + 30E24C0CC2F297CA249BC9496B1273BA /* RKTestHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestHelpers.h; path = Code/Testing/RKTestHelpers.h; sourceTree = ""; }; + 31FC85622F6B1B2EE86B878CA3F2FDC7 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "ISO8601DateFormatterValueTransformer-Private.xcconfig"; sourceTree = ""; }; + 32087D68AA15B65193CE803974E093B2 /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = ""; }; + 323152BA48F777D5C406ED5AE427B1AA /* RKRequestDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRequestDescriptor.m; path = Code/Network/RKRequestDescriptor.m; sourceTree = ""; }; + 3268179096664214C41900456AEC9D52 /* PFInstallationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationPrivate.h; path = Parse/Internal/Installation/PFInstallationPrivate.h; sourceTree = ""; }; + 3295D89852F84111A5FF8AB168AD2F73 /* PFURLSessionDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.m; sourceTree = ""; }; + 33244990175A48516182AFDCEDA52E66 /* PFCloudCodeController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloudCodeController.h; path = Parse/Internal/CloudCode/PFCloudCodeController.h; sourceTree = ""; }; + 335CD23D95285D1C44A95A3A178AAEF8 /* PFAnalyticsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsController.m; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.m; sourceTree = ""; }; + 3367B0B681D943417FA5E440D899F4CC /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m; sourceTree = ""; }; + 33B37F8486EF0E3980BE534DE830918D /* PFOfflineStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineStore.h; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.h; sourceTree = ""; }; + 33BBC7950FBFD8EC38A39966E30603F6 /* FBSDKGameRequestDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m; sourceTree = ""; }; + 341EA091B57F44C4DE7AEFBD627D722D /* RKRouteSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRouteSet.h; path = Code/Network/RKRouteSet.h; sourceTree = ""; }; + 34395EA09EF6FAFFB300C19081748EEE /* PFBase64Encoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBase64Encoder.m; path = Parse/Internal/PFBase64Encoder.m; sourceTree = ""; }; + 35A73E0B40DC10C4D7D7B780D2C67F00 /* FBSDKAccessTokenCacheV3_17.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_17.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m; sourceTree = ""; }; + 35AF2ED07EF17B28DEF0B55966C47D4B /* AFNetworking-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "AFNetworking-Private.xcconfig"; sourceTree = ""; }; + 35D4DD0CA2C38FD64FC4C4C5AC5AA6EF /* PFAnonymousAuthenticationProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousAuthenticationProvider.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.h; sourceTree = ""; }; + 36292F1577420FAA6A00FC1B269D609D /* PFACL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACL.h; path = Parse/PFACL.h; sourceTree = ""; }; + 36625BA3EB692FB9405C776E41327F85 /* FBSDKAccessTokenCacheV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV4.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h; sourceTree = ""; }; + 3666E0447FCD05578684BF0E8B8507E2 /* FBSDKLoginKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKLoginKit-dummy.m"; sourceTree = ""; }; + 36A148580114BC82A5E01A2432F549D8 /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = ""; }; + 36BFEC5CD6E83BF4C00AC37F0AFF0C3F /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = ""; }; + 36C94BDCD3271399C249A6BF6A0A9530 /* AFHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPRequestOperation.h; path = AFNetworking/AFHTTPRequestOperation.h; sourceTree = ""; }; + 3732A1AC8F240E488FC16C8707FF1E6C /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = ""; }; + 3810817360404E4967AF028144ECC497 /* PFObjectSubclassInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassInfo.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.m; sourceTree = ""; }; + 386296E81D7A932F1BD2EAE4210CD7B3 /* FBSDKAccessTokenCacheV3_21.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_21.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h; sourceTree = ""; }; + 3863A24C8545BD8471114044940471D0 /* FBSDKShareKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareKit.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h; sourceTree = ""; }; + 3893550463B3F2896DA11E95A24787C5 /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = ""; }; + 38A77616F3D6A593F41C5A9E9C1A53EF /* PFSQLiteDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabase.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m; sourceTree = ""; }; + 3911B9D2BBD5CBF1337C009F5F541534 /* PFDevice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDevice.h; path = Parse/Internal/PFDevice.h; sourceTree = ""; }; + 392B81F3F69ACC5FDB7A16EFD49EC5CC /* ParseModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseModule.h; path = Parse/Internal/ParseModule.h; sourceTree = ""; }; + 3954F2A0287065523FE93833957D805D /* RKErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKErrors.h; path = Code/Support/RKErrors.h; sourceTree = ""; }; + 39AE3319F220425568181E51340F50AE /* PFHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHash.h; path = Parse/Internal/PFHash.h; sourceTree = ""; }; + 39EA90D4F4D435F351B6F8488F1F81CF /* FBSDKBridgeAPICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPICrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h; sourceTree = ""; }; + 3A0F3D060245CFF4C9AD4E4E4B1FE443 /* PFPushManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushManager.m; path = Parse/Internal/Push/Manager/PFPushManager.m; sourceTree = ""; }; + 3A43F656D15828E22D2934C2706AC1BF /* PFThreadsafety.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFThreadsafety.h; path = Parse/Internal/ThreadSafety/PFThreadsafety.h; sourceTree = ""; }; + 3A8C0790E53BC4B6EA94B51E24532E88 /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = ""; }; + 3AA3D565456E290589B27357D512E69F /* AFXMLRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFXMLRequestOperation.h; path = AFNetworking/AFXMLRequestOperation.h; sourceTree = ""; }; + 3AE7D5E655DFEA88C846CA2F49FD7F27 /* PFObjectSubclassingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassingController.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.m; sourceTree = ""; }; + 3B29A50B713DB33904E5298D3E082CA5 /* RKObjectMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMapping.m; path = Code/ObjectMapping/RKObjectMapping.m; sourceTree = ""; }; + 3B538D8071AB6432B658069378DCA381 /* PFObject+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFObject+Subclass.h"; path = "Parse/PFObject+Subclass.h"; sourceTree = ""; }; + 3B63B03172CDA0B6BED2BB6710B8DF38 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; + 3BA13D9D4803FA88A8E6FC6E687D0706 /* PFMutablePushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutablePushState.m; path = Parse/Internal/Push/State/PFMutablePushState.m; sourceTree = ""; }; + 3C15EE98D2719FAA6A81AAB54A7E471D /* RKMapperOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapperOperation.h; path = Code/ObjectMapping/RKMapperOperation.h; sourceTree = ""; }; + 3C21952B82AFD2B07F65F1B3D08202AE /* BFURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL.h; path = Bolts/iOS/BFURL.h; sourceTree = ""; }; + 3CAC9E985D7035114C36728704534B05 /* RestKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "RestKit-Private.xcconfig"; sourceTree = ""; }; + 3D2D7ECC712E5A988D37CECB9069F554 /* PFRESTQueryCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTQueryCommand.m; path = Parse/Internal/Commands/PFRESTQueryCommand.m; sourceTree = ""; }; + 3D3EBBEF6D5B4018AA707132922DC9B4 /* FBSDKMessageDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessageDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h; sourceTree = ""; }; + 3E6A5B35F3A36DB58FE56540BA6EEDBE /* PFJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFJSONSerialization.m; path = Parse/Internal/PFJSONSerialization.m; sourceTree = ""; }; + 3F812EB07D870BBFD5F42E05E17C7391 /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = ""; }; + 3FF60E0CE99104F46FC615B3C7403E91 /* PFInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationController.m; path = Parse/Internal/Installation/Controller/PFInstallationController.m; sourceTree = ""; }; + 40739D148D4DAE664411F3F2DBE4D3F8 /* PFPush.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPush.h; path = Parse/PFPush.h; sourceTree = ""; }; + 40C40C0517D7C210D4A32215DEB225C1 /* TKEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKEvent.h; path = Code/TKEvent.h; sourceTree = ""; }; + 40D041AA460AE7AD2009874357D2204A /* FBSDKLikeDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeDialog.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h; sourceTree = ""; }; + 4116573287BF306C8EC05DBF93BD549B /* PFObjectBatchController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectBatchController.m; path = Parse/Internal/Object/BatchController/PFObjectBatchController.m; sourceTree = ""; }; + 4123C94C7948B9704563A505B3014AB6 /* FBSDKLikeActionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionController.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h; sourceTree = ""; }; + 41BA0CE95AB03F346F54CA27DB00DE30 /* FBSDKLoginKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKLoginKit-prefix.pch"; sourceTree = ""; }; + 41D4AFB79D025DDA3EF311ED8B830DC9 /* PFOfflineQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryController.h; path = Parse/Internal/Query/Controller/PFOfflineQueryController.h; sourceTree = ""; }; + 423474460E489D78FEE63988A287BF8A /* PFLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogging.h; path = Parse/Internal/PFLogging.h; sourceTree = ""; }; + 4258F79C649680EAAA4724050C5400A2 /* PFFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState.h; path = Parse/Internal/File/State/PFFileState.h; sourceTree = ""; }; + 4294F692EAF153601A3A4B780A9C0668 /* RKTestFixture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestFixture.m; path = Code/Testing/RKTestFixture.m; sourceTree = ""; }; + 42C4A6EF402B488E5D8EDE80F1F34D3B /* BFCancellationTokenSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenSource.h; path = Bolts/Common/BFCancellationTokenSource.h; sourceTree = ""; }; + 42C79B025767C1D9A3147013CE056436 /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = ""; }; + 430C3FA8EA2C3E2BB22ACBE65DA6AC89 /* Parse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Parse.m; path = Parse/Parse.m; sourceTree = ""; }; + 4312B7DA20D0FDC68E026677B16FB93B /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h; sourceTree = ""; }; + 4391678EE65327EC09710A2246AE3738 /* TKStateMachine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKStateMachine.m; path = Code/TKStateMachine.m; sourceTree = ""; }; + 449D2F1679AC195C51DC348284B99B77 /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = ""; }; + 44AC358011ABD9D6C4C840D2F2EAA419 /* FBSDKLoginCompletion+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginCompletion+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h"; sourceTree = ""; }; + 44AFCC4FD732944B15943D675B7BBD73 /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = ""; }; + 4533001C2D55630F9C37C6627CA516F3 /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = ""; }; + 45488E198C9CA5E2D83FDDD1A6F2C741 /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = ""; }; + 45498ABE1A6B5EAA74C26A43CF36BFB7 /* BFURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL_Internal.h; path = Bolts/iOS/BFURL_Internal.h; sourceTree = ""; }; + 45863B73565B4D9E4E17BBFFEA8FF6B4 /* AFPropertyListRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFPropertyListRequestOperation.h; path = AFNetworking/AFPropertyListRequestOperation.h; sourceTree = ""; }; + 45870028D12B4C716DCD60DD091B5320 /* PFAsyncTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAsyncTaskQueue.m; path = Parse/Internal/PFAsyncTaskQueue.m; sourceTree = ""; }; + 45B3E4226F866D5C78E3AE4441683829 /* RKErrorMessage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKErrorMessage.h; path = Code/ObjectMapping/RKErrorMessage.h; sourceTree = ""; }; + 46CD7CED669BB2E7D7C29361322568D4 /* FBSDKShareLinkContent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareLinkContent+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h"; sourceTree = ""; }; + 47437D5AB702C3D4165C272B390FADA7 /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = AFNetworking/AFNetworkActivityIndicatorManager.h; sourceTree = ""; }; + 4839C0B94DA359E603C96FAAF9707D62 /* RKValueTransformers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKValueTransformers.h; path = Code/RKValueTransformers.h; sourceTree = ""; }; + 48D9F0444140EC888D96942489E879B4 /* libAFNetworking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAFNetworking.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 48FB82823746BF27BE7130F2353BC212 /* PFCurrentObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentObjectControlling.h; path = Parse/Internal/Object/CurrentController/PFCurrentObjectControlling.h; sourceTree = ""; }; + 4943E9CC3F93FDF967E81314D76CC855 /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = ""; }; + 49B32C446E230AF54905CEEA3305D3DB /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = ""; }; + 49EA15DA07E51D9C44D29EF7BFB6F1E2 /* RKAttributeMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKAttributeMapping.m; path = Code/ObjectMapping/RKAttributeMapping.m; sourceTree = ""; }; + 4AA98567E44F5A893A264AAAA201DC0A /* RKPropertyInspector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyInspector.h; path = Code/ObjectMapping/RKPropertyInspector.h; sourceTree = ""; }; + 4B3DCF9225B393FBEC5AF6CCD9267797 /* PFFileStagingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileStagingController.m; path = Parse/Internal/File/Controller/PFFileStagingController.m; sourceTree = ""; }; + 4B4CB8ECB1CC3450C6965777EB3C8B67 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; + 4B9DBF11D74F42EAFF80AF44ABE2B00E /* PFOfflineObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineObjectController.m; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m; sourceTree = ""; }; + 4BAB7DDAE6FE91E089EBA417E69790BB /* RKMappingTest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingTest.m; path = Code/Testing/RKMappingTest.m; sourceTree = ""; }; + 4BADEB18E715ADFCC4E321048C18D8CF /* RKLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKLog.m; path = Code/Support/RKLog.m; sourceTree = ""; }; + 4C105E35C96EB4B380048F9D08BEED1A /* PFFileStagingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileStagingController.h; path = Parse/Internal/File/Controller/PFFileStagingController.h; sourceTree = ""; }; + 4C11C508533F23B09A4472C54933C508 /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = ""; }; + 4C13CE56C415F93B1A3921AB6358B990 /* PFProduct.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProduct.m; path = Parse/PFProduct.m; sourceTree = ""; }; + 4CEB2F6C3776B2FAA2762E5C908FA891 /* FBSDKShareVideoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h; sourceTree = ""; }; + 4D15AFCABB51E916BD6FFE6D663CCBED /* RKHTTPUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKHTTPUtilities.m; path = Code/ObjectMapping/RKHTTPUtilities.m; sourceTree = ""; }; + 4E373E20F8B2B8C3F9D13CB19C365A5B /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = ""; }; + 4E37F47F8B8CC9C91B39061A7536E3E9 /* libTransitionKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libTransitionKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 4E3B7FA2A6E0A7ED2742EE5D84DB12A8 /* PFObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectUtilities.m; path = Parse/Internal/Object/Utilities/PFObjectUtilities.m; sourceTree = ""; }; + 4E4FA331249E6517075CC9318DC72A95 /* PFFileState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState_Private.h; path = Parse/Internal/File/State/PFFileState_Private.h; sourceTree = ""; }; + 4E79911FE858017F50A495D51DA3DE5D /* FBSDKBoltsMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBoltsMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h; sourceTree = ""; }; + 4EAC1A8028073BA5B4C512B18244EBE8 /* FBSDKMessageDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessageDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m; sourceTree = ""; }; + 4EB0B04EC3F753FD50885C2850A18879 /* PFObjectEstimatedData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectEstimatedData.h; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.h; sourceTree = ""; }; + 4EEA34DB3E95971CAA4099B9C4DD8C74 /* FBSDKSharePhoto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhoto.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m; sourceTree = ""; }; + 4F6AC6F0CC343C3396887A99F63C9782 /* PFPush.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPush.m; path = Parse/PFPush.m; sourceTree = ""; }; + 4F6C04F3A381B95E747E5867DB4C81EE /* FBSDKShareConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareConstants.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h; sourceTree = ""; }; + 4F79376118E5A7FF02BC96514483BD1A /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreLocation.framework; sourceTree = DEVELOPER_DIR; }; + 4FE09EB1BAFD6593655A66644AD9F2C0 /* SOCKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SOCKit-dummy.m"; sourceTree = ""; }; + 502CF173BC61117E6EE98B0AECE5CB5F /* BFURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFURL.m; path = Bolts/iOS/BFURL.m; sourceTree = ""; }; + 50352378D38EB15E7B7D74FD48D20236 /* PFOfflineObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineObjectController.h; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.h; sourceTree = ""; }; + 506B72DC5629AC3D911C7391ADADB54E /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h; sourceTree = ""; }; + 512C3E738619CA90805009D1B56BFDE7 /* PFPinningEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningEventuallyQueue.m; path = Parse/Internal/PFPinningEventuallyQueue.m; sourceTree = ""; }; + 51B4EC6E2C9E5D654933455F7EE946B3 /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = ""; }; + 51E4B8ABE7430971B5249A46A558AD57 /* PFFieldOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperation.h; path = Parse/Internal/FieldOperation/PFFieldOperation.h; sourceTree = ""; }; + 520097C3241654D444726517A1906AD9 /* FBSDKSystemAccountStoreAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSystemAccountStoreAdapter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h; sourceTree = ""; }; + 52728CC48A8F9EFF86FD0353377E776D /* PFHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHash.m; path = Parse/Internal/PFHash.m; sourceTree = ""; }; + 52EBAC1E14508349697276F8E0C80479 /* RKMIMETypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMIMETypes.m; path = Code/Support/RKMIMETypes.m; sourceTree = ""; }; + 5325291642047AF9E650B7590ACC6254 /* PFUserAuthenticationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationController.h; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.h; sourceTree = ""; }; + 542D17E28458EBE4D318648EEB3B381B /* PFInstallation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallation.m; path = Parse/PFInstallation.m; sourceTree = ""; }; + 547B33431DB5136808EDC0F26EC4181E /* FBSDKShareButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h; sourceTree = ""; }; + 551D1565F536116924C965E8BC843AEC /* FBSDKAccessTokenCacheV4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV4.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m; sourceTree = ""; }; + 555A1DB7FA628753475F8E0C531D7624 /* AFXMLRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFXMLRequestOperation.m; path = AFNetworking/AFXMLRequestOperation.m; sourceTree = ""; }; + 55B85002DD908349F1000F7996455DE1 /* PFEventuallyPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyPin.h; path = Parse/Internal/PFEventuallyPin.h; sourceTree = ""; }; + 55C9501B071548071B0C87CDA9D032F8 /* RKTestConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestConstants.m; path = Code/Testing/RKTestConstants.m; sourceTree = ""; }; + 57633529551BBEE1B15067746D4C1A0F /* FBSDKLikeButton+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeButton+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h"; sourceTree = ""; }; + 5765993E55A9BEF96BE2124E9CC1E550 /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = ""; }; + 57C4523433B4764C517C9034002FD449 /* PFThreadsafety.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFThreadsafety.m; path = Parse/Internal/ThreadSafety/PFThreadsafety.m; sourceTree = ""; }; + 585CBEC762B0BA2C71CFB9F0E84E8B1C /* RKObjectParameterization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectParameterization.m; path = Code/Network/RKObjectParameterization.m; sourceTree = ""; }; + 58B8D0C5A6A7DDEE013D14931B007DA4 /* BFAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkTarget.m; path = Bolts/iOS/BFAppLinkTarget.m; sourceTree = ""; }; + 58F67B018A57B934A2029E1BB32BFEB5 /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = ""; }; + 596492B6CEEB060FE00A87B8565F380A /* RKRouter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRouter.h; path = Code/Network/RKRouter.h; sourceTree = ""; }; + 59AA32CF592A1CE163B2F901B0892AD8 /* PFObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObject.h; path = Parse/PFObject.h; sourceTree = ""; }; + 5A4672908B1FD7E4D44907A16C893880 /* FBSDKLoginUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginUtility.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h; sourceTree = ""; }; + 5A69674A69ED07E630171FC8E7DE679B /* PFPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPin.h; path = Parse/Internal/LocalDataStore/Pin/PFPin.h; sourceTree = ""; }; + 5B5452F12D849665274EB43110F07EE1 /* PFURLSessionFileDownloadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionFileDownloadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m; sourceTree = ""; }; + 5B5B3E3A409593357C8EDDEDDC0651EA /* PFKeyValueCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeyValueCache.m; path = Parse/Internal/KeyValueCache/PFKeyValueCache.m; sourceTree = ""; }; + 5B5E002FD0140DA26430A35510C313F8 /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m; sourceTree = ""; }; + 5BD931B78D3EAD28BF5F58F187AEABB9 /* PFSQLiteDatabaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseController.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.m; sourceTree = ""; }; + 5BFF0A5FD4D4F15BC52A5CF35AA8BD33 /* FBSDKLiking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLiking.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h; sourceTree = ""; }; + 5CA7D87557CA7C23E2FD33B16F7B4A87 /* RKPropertyMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyMapping.h; path = Code/ObjectMapping/RKPropertyMapping.h; sourceTree = ""; }; + 5CCF2B1914047A6A115AD8CAF5B6D70E /* FBSDKShareKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKShareKit-Private.xcconfig"; sourceTree = ""; }; + 5CE8D7CE43C005885F4A5981957F20A1 /* PFAnalyticsUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsUtilities.m; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.m; sourceTree = ""; }; + 5D4096B259A00B3CA7AFD492984A10BA /* FBSDKGameRequestContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h; sourceTree = ""; }; + 5D414278778C63DB1AB1454092428F09 /* PFObjectBatchController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectBatchController.h; path = Parse/Internal/Object/BatchController/PFObjectBatchController.h; sourceTree = ""; }; + 5D523D243E8C98CFFB31356A63463C00 /* PFRESTConfigCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTConfigCommand.m; path = Parse/Internal/Commands/PFRESTConfigCommand.m; sourceTree = ""; }; + 5D97C25717E3E4851FE4EFE780A45434 /* lcl_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_RK.h; path = Vendor/LibComponentLogging/Core/lcl_RK.h; sourceTree = ""; }; + 5DB20E84DFDB8DA61BA09324BEFBFF7C /* PFURLSessionCommandRunner.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionCommandRunner.m; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.m; sourceTree = ""; }; + 5DC7FE94FD4993099292F9042265623F /* FBSDKLikeObjectType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeObjectType.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h; sourceTree = ""; }; + 5EA7DD3F8E2A43DDC4BC7D78D495BE88 /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m; sourceTree = ""; }; + 5EB0814787ECF1B4820F7A3680530AC3 /* PFObjectFileCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCoder.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.h; sourceTree = ""; }; + 5EB160597E8E862ED9A4D2CDE6C5ECBB /* RKSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKSerialization.h; path = Code/Support/RKSerialization.h; sourceTree = ""; }; + 5EE9FF43D6D45C08905B6D53343591FA /* FBSDKSharePhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhoto.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h; sourceTree = ""; }; + 5F06181DC24313ECF2DBF2D575D36DC9 /* PFConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig.h; path = Parse/PFConfig.h; sourceTree = ""; }; + 5F0A3A60E696009D78F7AD078F9E343C /* PFObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObject.m; path = Parse/PFObject.m; sourceTree = ""; }; + 5F0CAB54CFC8BCC345F4138A1EC4D771 /* PFAlertView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAlertView.m; path = Parse/Internal/PFAlertView.m; sourceTree = ""; }; + 5F55A6C36C32F11B3417387E0AE06AB1 /* PFMutableFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableFileState.m; path = Parse/Internal/File/State/PFMutableFileState.m; sourceTree = ""; }; + 608429EE6E38CCBC432367E7CB93B400 /* PFInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationController.h; path = Parse/Internal/Installation/Controller/PFInstallationController.h; sourceTree = ""; }; + 61F8017FEF232B21270544D23BE67BBF /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = ""; }; + 62463AED6B63FD1BFCF534909E594242 /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = ""; }; + 6277470164DD2F4D1FC49886CF94D214 /* PFReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFReachability.h; path = Parse/Internal/PFReachability.h; sourceTree = ""; }; + 635550F96E6CB4B30D674CA6B3D59AAA /* RKObjectMappingMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMappingMatcher.m; path = Code/ObjectMapping/RKObjectMappingMatcher.m; sourceTree = ""; }; + 6370C00129F042A303CF8C41BCC8048F /* PFLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogger.h; path = Parse/Internal/PFLogger.h; sourceTree = ""; }; + 637C1162277BA70B8FC486099BA5E68A /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = ""; }; + 63853C304B3512C921051F6F4C1AA1D8 /* PFAnonymousAuthenticationProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousAuthenticationProvider.m; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.m; sourceTree = ""; }; + 63D0078344D4783DAE24EA204C2F2B76 /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = ""; }; + 64092AE7CD9ED392CE2C1C98A9D583BA /* FBSDKLikeActionControllerCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionControllerCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h; sourceTree = ""; }; 641AE05DD55E5E6AC1590CD7B4A18F97 /* Pods-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-resources.sh"; sourceTree = ""; }; - 6424FD719BE7F330C61F5BF5C1214B13 /* PFEncoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEncoder.m; path = Parse/Internal/PFEncoder.m; sourceTree = ""; }; - 64E64C3C1EBC666F4CF3A2893F8DB8F1 /* PFPropertyInfo_Runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Runtime.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h; sourceTree = ""; }; - 6510524988D56D1E9B8FC5C067C04B9A /* PFOfflineStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineStore.h; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.h; sourceTree = ""; }; - 6634E8525E51E4FF70C26E49F54493FC /* FBSDKShareDialogMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialogMode.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m; sourceTree = ""; }; - 66C1B850FF8F72C651A98CCB78DB0E42 /* PFMutableFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableFileState.h; path = Parse/Internal/File/State/PFMutableFileState.h; sourceTree = ""; }; - 671C93F34B25F0E2D951C18DF74FBE1C /* PFSQLiteStatement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteStatement.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.h; sourceTree = ""; }; - 6771448442ACE74CF1DA8462E84FE3C1 /* PFProductsRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProductsRequestHandler.h; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.h; sourceTree = ""; }; - 690DD19198EE8D5F0127BA29BE0469C5 /* FBSDKLoginUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginUtility.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h; sourceTree = ""; }; - 6925CDA0BCBCFF149619E0E29A35A3DF /* PFMutablePushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutablePushState.h; path = Parse/Internal/Push/State/PFMutablePushState.h; sourceTree = ""; }; - 6959DDF11EB0DBA886C8071FA6536544 /* PFMutableQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableQueryState.m; path = Parse/Internal/Query/State/PFMutableQueryState.m; sourceTree = ""; }; - 695B20B39C65A0F70AF9F9C9D54CDC02 /* FBSDKLikeButtonPopWAV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButtonPopWAV.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h; sourceTree = ""; }; - 6997FDD65FC84CBE9C0B1F06A436C49C /* PFKeyValueCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache_Private.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache_Private.h; sourceTree = ""; }; - 69B7181C6F142ED4F0C684EC984A9CFC /* FBSDKShareVideoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m; sourceTree = ""; }; - 6A19F56E0F8C29946A8608B76F3A49F4 /* BFTask+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "BFTask+Private.m"; path = "Parse/Internal/BFTask+Private.m"; sourceTree = ""; }; - 6A750B8C4CABD71000E78BA2523A93FE /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h; sourceTree = ""; }; - 6B12F7845B8017EA22B0E0EEF0B3B56A /* FBSDKLoginButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginButton.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m; sourceTree = ""; }; - 6C3130D692EFBD2F3FA5A396FF19871E /* FBSDKGameRequestContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m; sourceTree = ""; }; - 6C44C18F2ACA338C07999CAF4BDA46E4 /* PFMutableFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableFileState.m; path = Parse/Internal/File/State/PFMutableFileState.m; sourceTree = ""; }; - 6C943F70CC022BD45D5BC6C312618A47 /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h; sourceTree = ""; }; - 6C9D0DC652ECEB0AC847D646E33E3762 /* PFFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileState.m; path = Parse/Internal/File/State/PFFileState.m; sourceTree = ""; }; - 6D0BD04081C3A718EFB63F79C43FA7C0 /* PFPurchaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchaseController.h; path = Parse/Internal/Purchase/Controller/PFPurchaseController.h; sourceTree = ""; }; - 6DE4686D573E489CA8763A9AFF69E884 /* PFDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDecoder.h; path = Parse/Internal/PFDecoder.h; sourceTree = ""; }; - 6EB6555F0750836E4B76B0C08567E4F7 /* PFRESTPushCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTPushCommand.m; path = Parse/Internal/Commands/PFRESTPushCommand.m; sourceTree = ""; }; - 6EE4677B561DC6EB86FA8571CEE64AF1 /* PFPaymentTransactionObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.h; sourceTree = ""; }; - 6F5245D9C22CC21BB136BDC2AC4955ED /* FBSDKLoginManagerLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLogger.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h; sourceTree = ""; }; - 6F95877AC2E55BE1D53E55F4938D652C /* FBSDKAppGroupJoinDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupJoinDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h; sourceTree = ""; }; - 70137F33147D3F372FC44F6E67E63899 /* PFRESTCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand.h; path = Parse/Internal/Commands/PFRESTCommand.h; sourceTree = ""; }; - 70A2ACBCF37165DCF827CE708D6D4C9E /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; - 70AE4640E658912F8EA7EB2D84532E59 /* FBSDKAccessTokenCacheV3_17.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_17.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m; sourceTree = ""; }; - 71207309A4BF5422B709A558661FB9DD /* FBSDKGameRequestFrictionlessRecipientCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestFrictionlessRecipientCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h; sourceTree = ""; }; - 7127C42346F2C6E7C6852278A7D91999 /* PFRole.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRole.m; path = Parse/PFRole.m; sourceTree = ""; }; - 71B258E245FD3703F42B32A176062FDB /* PFAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAssert.h; path = Parse/Internal/PFAssert.h; sourceTree = ""; }; - 722DD6778B0569325E2893B96510468D /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = ""; }; - 729D6D653BE34D23C8D053B85CDD5E97 /* Parse_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse_Private.h; path = Parse/Internal/Parse_Private.h; sourceTree = ""; }; - 7312C6904E7BD6A83FF99B8A93855A01 /* PFMutableUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableUserState.h; path = Parse/Internal/User/State/PFMutableUserState.h; sourceTree = ""; }; - 73A2CAB8C0CB0FB451E60B3C35C23B4C /* FBSDKShareError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareError.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h; sourceTree = ""; }; - 73A9A2B2C84C359AC796978E67B9549D /* PFLocationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLocationManager.h; path = Parse/Internal/PFLocationManager.h; sourceTree = ""; }; - 73DFE94251B23509786E450651A48B90 /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h; sourceTree = ""; }; - 7431B6B9B7E1DFEF929BB54553B5676F /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 7442E5ADF75557556E523DE6A1E3BE3E /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m; sourceTree = ""; }; - 74A9C6AFAD90897450936AE0813C80E2 /* FBSDKShareKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKShareKit-prefix.pch"; sourceTree = ""; }; - 74F31D0EDF2CF7E7AAD77F746837D59A /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = ""; }; - 7591F734161565C8587390742A1ED783 /* PFGeoPoint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFGeoPoint.m; path = Parse/PFGeoPoint.m; sourceTree = ""; }; - 75CAD372C74E8529A061E6EB2818F982 /* FBSDKLikeDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeDialog.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m; sourceTree = ""; }; - 75D753CB65D28E2B39894FBCB517D0A3 /* PFOperationSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOperationSet.m; path = Parse/Internal/Object/OperationSet/PFOperationSet.m; sourceTree = ""; }; - 7631CDE057643A0E17ACCC4DAF8BBF13 /* PFPushManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushManager.h; path = Parse/Internal/Push/Manager/PFPushManager.h; sourceTree = ""; }; - 766CE3F27E11129F0EFA11C60884ECFC /* PFUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUser.h; path = Parse/PFUser.h; sourceTree = ""; }; - 7679ACE8F1FCAA1786579B614C35BAC0 /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = ""; }; - 76C526DD236D0ABDBBDEEE2285B501CC /* PFObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController.h; path = Parse/Internal/Object/Controller/PFObjectController.h; sourceTree = ""; }; - 7768B39DF4B1F1A7BFD05D306CAB1BDD /* PFFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileManager.m; path = Parse/Internal/PFFileManager.m; sourceTree = ""; }; - 778B2BB152B3C76A56D9A45B5E01AC3E /* PFCachedQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCachedQueryController.m; path = Parse/Internal/Query/Controller/PFCachedQueryController.m; sourceTree = ""; }; - 77E53941D7D46C602DD11044D3718DE6 /* PFFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileManager.h; path = Parse/Internal/PFFileManager.h; sourceTree = ""; }; - 7809BA66D5768E97BE3CB53E36ECAC4D /* PFRelation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelation.m; path = Parse/PFRelation.m; sourceTree = ""; }; - 7865EEF23330A2B2953AF4D3772DDB3F /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = ""; }; - 786CD905662A5B821B7FBD479582CBCD /* PFWeakValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFWeakValue.m; path = Parse/Internal/PFWeakValue.m; sourceTree = ""; }; - 7919FE3E34E4A4E8FA40E5EF771D417F /* PFURLSessionCommandRunner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.h; sourceTree = ""; }; - 7A3E0823C5C63DCBFFF51F3DAA930F7E /* FBSDKShareOpenGraphValueContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphValueContainer.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m; sourceTree = ""; }; - 7A7F97E5324275ECE8A2DB0BB11F4382 /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = ""; }; - 7B1E5184AF7DB35882426974C6E4F54D /* PFPushState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState_Private.h; path = Parse/Internal/Push/State/PFPushState_Private.h; sourceTree = ""; }; - 7B2175B028A34E81F071193394F373B5 /* PFAnonymousAuthenticationProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousAuthenticationProvider.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.h; sourceTree = ""; }; - 7B8C83CAC30A6E627FC4C625FE78664C /* PFObjectSubclassingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassingController.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.m; sourceTree = ""; }; - 7BD705FB6C7BC580C655F9EB6061B436 /* FBSDKShareVideoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h; sourceTree = ""; }; - 7C38CB3F5B5846CA53D031EA7F63E697 /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = ""; }; - 7C50076788F9D1661F6F38C60F88F2E1 /* FBSDKShareLinkContent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareLinkContent+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h"; sourceTree = ""; }; - 7C6A832BE98AC2513DCF0311F799732F /* Pods-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-dummy.m"; sourceTree = ""; }; - 7E4D2B2CBD42ED6EEDC6C535E15CDB74 /* FBSDKSharePhotoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhotoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m; sourceTree = ""; }; - 7E6CC90C5C183BC584DAC5A06F3B7AB7 /* PFSQLiteDatabase_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase_Private.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase_Private.h; sourceTree = ""; }; - 7EBCBD93200C3A10C234267D819C7E09 /* FBSDKBridgeAPICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPICrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h; sourceTree = ""; }; - 7FC21711E96478983E21D14A7248B1C0 /* PFCommandRunningConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunningConstants.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.m; sourceTree = ""; }; - 8018CD5321B09E6AA082BFED9506705E /* PFRESTObjectCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectCommand.m; path = Parse/Internal/Commands/PFRESTObjectCommand.m; sourceTree = ""; }; - 80376EBD200672DDD3336480C347B3E5 /* PFInternalUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInternalUtils.h; path = Parse/Internal/PFInternalUtils.h; sourceTree = ""; }; - 805A9C7F80B24B7D43C26816704C0E61 /* PFOfflineQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryController.m; path = Parse/Internal/Query/Controller/PFOfflineQueryController.m; sourceTree = ""; }; - 819F604AC9E7F0671221BC885460C546 /* FBSDKShareAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareAPI.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m; sourceTree = ""; }; - 81D6701BAB69FFA1D5E976AA8AE47D90 /* PFSQLiteDatabaseResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseResult.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.m; sourceTree = ""; }; - 81FCF70E549275BAA5747573A561C836 /* PFSessionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionUtilities.h; path = Parse/Internal/Session/Utilities/PFSessionUtilities.h; sourceTree = ""; }; - 8248A75015CEDF0E471BD2919921A0FA /* PFUserAuthenticationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationDelegate.h; path = Parse/PFUserAuthenticationDelegate.h; sourceTree = ""; }; - 82DD9C04E2048B93470902C1B226313D /* FBSDKShareDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDefines.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h; sourceTree = ""; }; - 831FFA276E384FF81912831665D2ACD1 /* PFConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConstants.h; path = Parse/PFConstants.h; sourceTree = ""; }; - 8350BE6813045E1E683091FF4C71539B /* PFUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserState.m; path = Parse/Internal/User/State/PFUserState.m; sourceTree = ""; }; - 83550267DCC8A2C04DD26DBA885C6379 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; - 836A8F74A8C94C26BFF6CE7C96CDBB29 /* PFAnalytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalytics.m; path = Parse/PFAnalytics.m; sourceTree = ""; }; - 84FAF19E9FE280B8C4A65B70B825CD58 /* PFDefaultACLController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDefaultACLController.h; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.h; sourceTree = ""; }; - 860483D9361D7525A3473BBEBF3BE90A /* FBSDKMessengerIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessengerIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h; sourceTree = ""; }; - 862C4A36A947B7610B400462C749359A /* PFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFNetworkActivityIndicatorManager.m; path = Parse/PFNetworkActivityIndicatorManager.m; sourceTree = ""; }; - 86858E70734ECDA22030AA8DC8467710 /* FBSDKLoginCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginCompletion.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m; sourceTree = ""; }; - 8690C66AA184BBA764246933C2A4A354 /* PFPurchase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchase.h; path = Parse/PFPurchase.h; sourceTree = ""; }; - 86A4C332D9CCAF6221388ED57676952A /* Bolts-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Bolts-prefix.pch"; sourceTree = ""; }; - 870C15BDFACBF06245D3E708FB7C0973 /* Bolts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bolts.h; path = Bolts/Common/Bolts.h; sourceTree = ""; }; - 871A5A6C8E91EC01AA7DE9ACD7C59412 /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = ""; }; - 87B2FEF6137A22119E9C4BF5999B87A1 /* PFURLSessionUploadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionUploadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.m; sourceTree = ""; }; - 880EC96BB6771023E9A8E3DF31FD9310 /* PFQueryState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState_Private.h; path = Parse/Internal/Query/State/PFQueryState_Private.h; sourceTree = ""; }; - 8827063A0A317BDA830C5A1CBEC3F03F /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = ""; }; - 8858E00C3002371F0FAF9914734C5FD8 /* PFAnonymousAuthenticationProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousAuthenticationProvider.m; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.m; sourceTree = ""; }; - 887593F0DEE8EFD5BDC3F6E96A7AF9C2 /* PFCachedQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCachedQueryController.h; path = Parse/Internal/Query/Controller/PFCachedQueryController.h; sourceTree = ""; }; - 88A728EC723990EFB69B861995E74ECC /* PFRESTObjectCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectCommand.h; path = Parse/Internal/Commands/PFRESTObjectCommand.h; sourceTree = ""; }; - 88EFF331F662FFFA9E548EA3F9CF8BD9 /* FBSDKShareOpenGraphAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphAction.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h; sourceTree = ""; }; - 8918E95EAEEA3883B0958070A6D63E5B /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m; sourceTree = ""; }; - 897397ACC5D65221928DE26C756E60EC /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = ""; }; - 89771FED47F0BB242E7B85A73CCEEE3A /* PFUserConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserConstants.m; path = Parse/Internal/User/Constants/PFUserConstants.m; sourceTree = ""; }; - 89833C3688D20D27A921CD52CBF04258 /* PFFileStagingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileStagingController.h; path = Parse/Internal/File/Controller/PFFileStagingController.h; sourceTree = ""; }; - 89BE488D5FB2949B04C3B2078CB54ACE /* PFRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState.h; path = Parse/Internal/Relation/State/PFRelationState.h; sourceTree = ""; }; - 89FA1CDB34FC6A266A0CB85649B29BAD /* PFPinningObjectStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningObjectStore.h; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.h; sourceTree = ""; }; - 8B229FDD88B02BA431226CF6F4C2C557 /* FBSDKAccessTokenCacheV3_17.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_17.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h; sourceTree = ""; }; - 8B4D99B79C54CE4DF16ED8030ABCA255 /* FBSDKLoginManagerLoginResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLoginResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m; sourceTree = ""; }; - 8B99F25C004D2B7579CC0ED827FDD52C /* PFCommandRunning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunning.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.h; sourceTree = ""; }; - 8C2DF1B80261AAA9B73D7187A3623941 /* PFApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFApplication.h; path = Parse/Internal/PFApplication.h; sourceTree = ""; }; - 8DFAA71E4A500F993C066198D2F6B141 /* FBSDKURLConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h; sourceTree = ""; }; - 8E36424AEF035DA22DC2D4053D625671 /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = ""; }; - 8EDAD3C1FD06B798BC04244B0271C9ED /* PFRESTFileCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTFileCommand.m; path = Parse/Internal/Commands/PFRESTFileCommand.m; sourceTree = ""; }; - 8F1129A22D3FF953177EDA6105319682 /* PFRESTFileCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTFileCommand.h; path = Parse/Internal/Commands/PFRESTFileCommand.h; sourceTree = ""; }; - 8F19786B895155DF0DBA51BE5462CDCA /* PFUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUser.m; path = Parse/PFUser.m; sourceTree = ""; }; - 8FCC6B0A52F1073866F5045115232A56 /* PFBase64Encoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBase64Encoder.h; path = Parse/Internal/PFBase64Encoder.h; sourceTree = ""; }; - 909527AB697DC5F602A8BEE088B28420 /* PFRESTSessionCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTSessionCommand.h; path = Parse/Internal/Commands/PFRESTSessionCommand.h; sourceTree = ""; }; - 90C4E8263D7D7018E90CB006AE5285EA /* BFAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView.h; path = Bolts/iOS/BFAppLinkReturnToRefererView.h; sourceTree = ""; }; - 91A20DEF4E05121BC0D3BA0B95057690 /* PFRESTQueryCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTQueryCommand.m; path = Parse/Internal/Commands/PFRESTQueryCommand.m; sourceTree = ""; }; - 91A3C081AA893B7C7E3C720BDD0B87AA /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = ""; }; - 9201ECF588FA8BB08DDBF3C8E4CD31A3 /* FBSDKCoreKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKCoreKit-Private.xcconfig"; sourceTree = ""; }; - 92219F3882F82E7756711A802C7F34EA /* PFEncoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEncoder.h; path = Parse/Internal/PFEncoder.h; sourceTree = ""; }; - 9278C0A565B9938261216A43EA0177CA /* FBSDKSystemAccountStoreAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSystemAccountStoreAdapter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m; sourceTree = ""; }; - 927A4EF5B8ED82ABCB709942CC242E06 /* PFFileStagingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileStagingController.m; path = Parse/Internal/File/Controller/PFFileStagingController.m; sourceTree = ""; }; - 92C9EF435D1A1B30A324A3863E2CB1CB /* PFCommandCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache_Private.h; path = Parse/Internal/PFCommandCache_Private.h; sourceTree = ""; }; - 92F1167BDB41D6566E2A2BD962A7D42F /* PFInternalUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInternalUtils.m; path = Parse/Internal/PFInternalUtils.m; sourceTree = ""; }; - 9390C92F1CE8467A8432506858B8172F /* FBSDKLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h; sourceTree = ""; }; - 93A5F67195E8183EE3FC797F98DC5956 /* BFCancellationToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationToken.m; path = Bolts/Common/BFCancellationToken.m; sourceTree = ""; }; - 93BC124A0CB4D829CA7468516B1F1877 /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = ""; }; - 945E0E4F9730840B5671665F5AE4F8C6 /* PFUserState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState_Private.h; path = Parse/Internal/User/State/PFUserState_Private.h; sourceTree = ""; }; - 94DCA4C48ED2DED1795550D3340FAB93 /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m; sourceTree = ""; }; - 95D6DC3AAED48153E982E7B6CE2ACBF2 /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = ""; }; - 96619AD29A8E305120281298BB9C2117 /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = ""; }; - 96DEB41D236F2F957F542803B7242485 /* PFObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObject.m; path = Parse/PFObject.m; sourceTree = ""; }; - 9764C114535D7CCF89F76AD383D000DF /* FBSDKLoginConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginConstants.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m; sourceTree = ""; }; - 9820DB142515E9FE68F1635778CDF436 /* PFObjectConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectConstants.m; path = Parse/Internal/Object/Constants/PFObjectConstants.m; sourceTree = ""; }; - 9826F9EF99C989F23C8760ECCF731EB0 /* ParseModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseModule.h; path = Parse/Internal/ParseModule.h; sourceTree = ""; }; - 983F35D2D34ACB272BCEEEC6040DDF33 /* PFObjectConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectConstants.h; path = Parse/Internal/Object/Constants/PFObjectConstants.h; sourceTree = ""; }; - 985038F14FE8FC23678ED1F7DDCF796A /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = ""; }; - 98FE22DC82B2E9780B8345DD11E25245 /* PFURLSessionUploadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionUploadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.h; sourceTree = ""; }; - 9908DE4518F24CDCE9DEBFBD8AAF7A5E /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = ""; }; - 991B6A74EED7A47CCB0295E345AE6B36 /* PFProduct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProduct.h; path = Parse/PFProduct.h; sourceTree = ""; }; - 992BF67D0574DEFDA7B5A5DA35227955 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreLocation.framework; sourceTree = DEVELOPER_DIR; }; - 993A21CE56E830A28F273FBEE71237B7 /* BFMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFMeasurementEvent.m; path = Bolts/iOS/BFMeasurementEvent.m; sourceTree = ""; }; - 994D05614D1EDF257C36EB9774BC9F9E /* PFCurrentUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentUserController.h; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.h; sourceTree = ""; }; - 997EE9B33EDCEA687B122C5D12D9A6E2 /* Parse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse.h; path = Parse/Parse.h; sourceTree = ""; }; - 99849B37667DE2EF2F45DD8C3C4E1188 /* FBSDKLoginUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginUtility.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m; sourceTree = ""; }; - 99AD28F109954C4513A2B73C3775C971 /* FBSDKShareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKShareKit-dummy.m"; sourceTree = ""; }; - 99BD86550F9CEEAFE247409114E419D3 /* PFReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFReachability.m; path = Parse/Internal/PFReachability.m; sourceTree = ""; }; - 9A4845D88BBD0E2BF9238DBAC29792FF /* PFInstallationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationPrivate.h; path = Parse/Internal/Installation/PFInstallationPrivate.h; sourceTree = ""; }; - 9AE3A1E847A23D89FFD2AA9F7A96D994 /* PFCommandRunningConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunningConstants.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h; sourceTree = ""; }; - 9AEC1733825D5A2ABD8D47EE37DC9FEC /* PFCurrentConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentConfigController.m; path = Parse/Internal/Config/Controller/PFCurrentConfigController.m; sourceTree = ""; }; - 9B08BB513ADF56CF82CFFF7B821CEAB4 /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = ""; }; - 9B56BC63A46E0C60E1F65E1E43FF3D2B /* FBSDKSendButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSendButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h; sourceTree = ""; }; - 9B5B7577FF23FD60A87A8C05EA2652E3 /* PFThreadsafety.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFThreadsafety.m; path = Parse/Internal/ThreadSafety/PFThreadsafety.m; sourceTree = ""; }; - 9BA9DC4FB2F1D4B30FF6F4D47961DEC2 /* BFExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFExecutor.m; path = Bolts/Common/BFExecutor.m; sourceTree = ""; }; - 9C247169039B75E0BFB4A9F4811F5A7D /* PFObjectFilePersistenceController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFilePersistenceController.h; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.h; sourceTree = ""; }; - 9C4B1918D6C2748B708FBA9010D47C59 /* PFUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserController.h; path = Parse/Internal/User/Controller/PFUserController.h; sourceTree = ""; }; - 9CB6162708CA811C045FC48276E533AC /* Parse-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Parse-prefix.pch"; sourceTree = ""; }; - 9F4B36F14A355821D7E2FB123300DDCD /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = ""; }; - 9F82DC5081D723743511B666306BC567 /* FBSDKLikeControl+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeControl+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h"; sourceTree = ""; }; - 9F91500B4545DAA6F7241732589F388A /* PFRESTObjectBatchCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectBatchCommand.h; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.h; sourceTree = ""; }; - A07F69889F21865BABF7494B7A375A53 /* FBSDKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h; sourceTree = ""; }; - A0AA88C65C641FBD65F890D8F0AB8026 /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = ""; }; - A0C91A1662596A108F805EA72954D11C /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = ""; }; - A0E7F189FF9BF3307F3E7363608DBD81 /* FBSDKShareOpenGraphContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h; sourceTree = ""; }; - A0F5F8B13BF4255AFCED026AC6B211C8 /* PFRESTAnalyticsCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTAnalyticsCommand.h; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.h; sourceTree = ""; }; - A128707E58E6F7FD7C1268992BEFD2C5 /* FBSDKGameRequestFrictionlessRecipientCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestFrictionlessRecipientCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m; sourceTree = ""; }; - A13F1B5B057D95AEB199BD0AC1569C85 /* PFProduct+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFProduct+Private.h"; path = "Parse/Internal/Product/PFProduct+Private.h"; sourceTree = ""; }; - A16681B3380FF1CBA89E6E2F276422AA /* FBSDKLikeButtonPopWAV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButtonPopWAV.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m; sourceTree = ""; }; - A1D336D237B3B30BCE04A43FD371473E /* FBSDKLikeActionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionController.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m; sourceTree = ""; }; - A1EE50D31E951A4463F312FC9BF343D5 /* FBSDKLikeActionControllerCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionControllerCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m; sourceTree = ""; }; - A2151507558FB08E11B302809C4679D5 /* PFApplication.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFApplication.m; path = Parse/Internal/PFApplication.m; sourceTree = ""; }; - A2B0C52AADDA52456790576546FCC99D /* PFPushChannelsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushChannelsController.h; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.h; sourceTree = ""; }; - A2EC2506D904AB39ACE6AC2490368BC6 /* PFCommandURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandURLRequestConstructor.h; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.h; sourceTree = ""; }; - A2EE1BEF00118C9B86DED80D8E9F78E5 /* PFCloud.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloud.m; path = Parse/PFCloud.m; sourceTree = ""; }; - A3A2CA15348284F196D703170DDC0118 /* FBSDKLoginCompletion+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginCompletion+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h"; sourceTree = ""; }; - A3F681072693C690033F636D1262450F /* FBSDKShareLinkContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareLinkContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m; sourceTree = ""; }; - A4776CCEC32BF011FC6F64F822052FDC /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = ""; }; - A4AD7609287338B0BF2365DE061D4525 /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = ""; }; - A4C16395183819CC55902C187BBF3588 /* PFObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState.h; path = Parse/Internal/Object/State/PFObjectState.h; sourceTree = ""; }; - A4FA890C6CF8DCC5C56BF4D23B3D4EC0 /* ParseManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseManager.m; path = Parse/Internal/ParseManager.m; sourceTree = ""; }; - A588ADAFB9768AED4B3BA282F6561A68 /* FBSDKLoginKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginKit.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h; sourceTree = ""; }; - A59F5C8E499F158AF013FD0A4D779E33 /* FBSDKLoginTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m; sourceTree = ""; }; - A6A972AC76383DCF37E7008206794C8F /* PFRESTConfigCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTConfigCommand.m; path = Parse/Internal/Commands/PFRESTConfigCommand.m; sourceTree = ""; }; - A9C899258C0EA110D85E7B48171B6432 /* _FBSDKLoginRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKLoginRecoveryAttempter.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h; sourceTree = ""; }; - A9EC065D9C7FD03E63A29BCF6F3A428C /* PFURLSessionJSONDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionJSONDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.h; sourceTree = ""; }; - AA3F835F4861D394CDA474F016B68DF3 /* PFObjectState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState_Private.h; path = Parse/Internal/Object/State/PFObjectState_Private.h; sourceTree = ""; }; - AA6155E47D6756DC20B676A1E6799081 /* PFQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQuery.h; path = Parse/PFQuery.h; sourceTree = ""; }; - AA723A00866BEEDAE1A8E099DFE0C01C /* FBSDKShareLinkContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareLinkContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h; sourceTree = ""; }; - AAD6D82FB30E66F727F7DF8841439C41 /* PFHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHash.h; path = Parse/Internal/PFHash.h; sourceTree = ""; }; - AADB13268569ACD428CA718A38894A49 /* PFAnalyticsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsController.m; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.m; sourceTree = ""; }; - AB89D35DE0F5C32E58B215882C35703A /* PFRESTUserCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTUserCommand.h; path = Parse/Internal/Commands/PFRESTUserCommand.h; sourceTree = ""; }; - ABD0C19409CB1F24FD1AFB365E60C99F /* FBSDKCheckmarkIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCheckmarkIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m; sourceTree = ""; }; - AC06B3B87B029CEA32581C7CEB6C05B0 /* BFAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkResolving.h; path = Bolts/iOS/BFAppLinkResolving.h; sourceTree = ""; }; - AC0B78FA41B62305BA8AB5B5C9C0EF51 /* PFURLSessionCommandRunner_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner_Private.h; sourceTree = ""; }; - ACC07E15FC2CA7D185BFF1F84D565D3F /* PFMultiProcessFileLockController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLockController.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.m; sourceTree = ""; }; - ADC11EA5CCDB563EF63FECBB82F1809E /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = ""; }; - ADC7A4E7F1BB2DAD519028D6DD15357F /* BFCancellationTokenSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenSource.h; path = Bolts/Common/BFCancellationTokenSource.h; sourceTree = ""; }; - ADEBB6BE4E6B7E95DBD5EA0F8198E2A6 /* FBSDKLikeActionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionController.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h; sourceTree = ""; }; - AE6E4E1A35E5A1578967DF2865545D99 /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = ""; }; - AE6F6B94AFE361FD0E18CCB6B75A0DE3 /* FBSDKSharePhotoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhotoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h; sourceTree = ""; }; - AE99A458700FBFED7B17F712111F6238 /* FBSDKSharingContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h; sourceTree = ""; }; - AEDADE6B03CF289BAE3BBAE839E354B5 /* PFKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeychainStore.m; path = Parse/Internal/PFKeychainStore.m; sourceTree = ""; }; - B02C63468CE0F7F2C99C5865466B0C19 /* PFObjectBatchController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectBatchController.h; path = Parse/Internal/Object/BatchController/PFObjectBatchController.h; sourceTree = ""; }; - B0708AC2D79933D1B00549B5767FE60C /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = ""; }; - B0E053D50F29084CF7D3D802F1517C70 /* FBSDKLoginManagerLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLogger.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m; sourceTree = ""; }; - B0F4434611B4FFD948A3FA3E177D8791 /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m; sourceTree = ""; }; - B0FEAD05D23D395F290529EE5DB73F6C /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = ""; }; - B122B4FE33C8E68A4C66FCFE7DC77AF7 /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = ""; }; - B13CC16593686DB265856434BBFC4594 /* PFNetworkCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkCommand.h; path = Parse/Internal/PFNetworkCommand.h; sourceTree = ""; }; - B152B331790608828B3D3221EF8BB3FA /* BFAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererController.h; path = Bolts/iOS/BFAppLinkReturnToRefererController.h; sourceTree = ""; }; - B1AF0EAA010A2243D3B652627909B1E0 /* FBSDKSharePhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhoto.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h; sourceTree = ""; }; - B1F9A5CCDA0552CD62CAD6A9C8018543 /* PFKeyValueCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeyValueCache.m; path = Parse/Internal/KeyValueCache/PFKeyValueCache.m; sourceTree = ""; }; - B212E7E5891AA33B35F56D833F69EF4D /* FBSDKAppGroupContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m; sourceTree = ""; }; - B22590D9365E880F05CFC1DC1066B067 /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h; sourceTree = ""; }; - B23B2A450DD924145ECEEBCAF9F9DE49 /* PFObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectController.m; path = Parse/Internal/Object/Controller/PFObjectController.m; sourceTree = ""; }; - B24C9F82AA8C193E9B823CF102B19AB2 /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = ""; }; - B2B529CF2F3BA08A19036180A7792FD5 /* BFTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTask.h; path = Bolts/Common/BFTask.h; sourceTree = ""; }; - B410DB6A268571CB00AE7C7B191AFC4F /* FBSDKLikeObjectType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeObjectType.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h; sourceTree = ""; }; - B49C8BAF9D69B1E6568421F922FD8F3A /* PFOfflineQueryLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryLogic.m; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m; sourceTree = ""; }; - B519F2BE42EA935C61C49611DFDE3111 /* PFFileState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState_Private.h; path = Parse/Internal/File/State/PFFileState_Private.h; sourceTree = ""; }; - B524B63009EE535EBA7977E07F2F824F /* PFRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelationState.m; path = Parse/Internal/Relation/State/PFRelationState.m; sourceTree = ""; }; - B5440ED9524EB35C55FB414229EDA986 /* PFRESTConfigCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTConfigCommand.h; path = Parse/Internal/Commands/PFRESTConfigCommand.h; sourceTree = ""; }; - B571E0FEC01D103B7151ECA4A256D9BE /* PFInstallation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallation.h; path = Parse/PFInstallation.h; sourceTree = ""; }; - B5B0B7503DC660F1E57F478887AA177E /* PFMutableACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableACLState.m; path = Parse/Internal/ACL/State/PFMutableACLState.m; sourceTree = ""; }; - B674C021D7D553529D1868DE6724ACF5 /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = ""; }; - B71C430B59468A7C97039EC40E16D99C /* libParse.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libParse.a; sourceTree = BUILT_PRODUCTS_DIR; }; - B739AEBEEECA5F2836D6FDE87E7DAD2C /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m; sourceTree = ""; }; - B7F77AE462F767DFBBE7AE020EC34F77 /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = ""; }; - B8734BB39E4CEA7D82E5591EDFECB01E /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = ""; }; - B98993B6CB83A0F4F6836BA48CB8855E /* BFAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkTarget.m; path = Bolts/iOS/BFAppLinkTarget.m; sourceTree = ""; }; - B9D0ABFE846D51BADE9E86A6F8E48989 /* BFTask+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BFTask+Private.h"; path = "Parse/Internal/BFTask+Private.h"; sourceTree = ""; }; - BA3BE979C7C897206FAB369D2B6BE3BB /* PFOfflineStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineStore.m; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m; sourceTree = ""; }; + 6448EFCEA795D12938825D3F8D395848 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = en.lproj; path = Parse/Resources/en.lproj; sourceTree = ""; }; + 64585A3E416254970223EB883C168C06 /* PFCurrentUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentUserController.m; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.m; sourceTree = ""; }; + 64DC079156B1C3D9892D30F49E7CF06A /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = ""; }; + 64E66272745DD74DB658E76BF786B334 /* PFMutableUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableUserState.m; path = Parse/Internal/User/State/PFMutableUserState.m; sourceTree = ""; }; + 6532B39D03DA6402CDE0AF5FAA88CB85 /* PFKeyValueCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache_Private.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache_Private.h; sourceTree = ""; }; + 653FCEE976AC25D86C5BD4646F8893B3 /* PFSQLiteDatabaseResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseResult.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.m; sourceTree = ""; }; + 65A4F7F6E3DD2EA0621A632278E51E25 /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = ""; }; + 65C562DA788CB34774AC6A956A6F1D40 /* PFACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState.h; path = Parse/Internal/ACL/State/PFACLState.h; sourceTree = ""; }; + 65EE60D7B2AE8D7AF7FC37A1DED26D53 /* PFConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfigController.m; path = Parse/Internal/Config/Controller/PFConfigController.m; sourceTree = ""; }; + 66AE3952E127CEAA503A87FD111FCBEA /* PFPushState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState_Private.h; path = Parse/Internal/Push/State/PFPushState_Private.h; sourceTree = ""; }; + 66C2AD35A6E51D88EA4ECC24C43ABA8C /* PFRESTSessionCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTSessionCommand.m; path = Parse/Internal/Commands/PFRESTSessionCommand.m; sourceTree = ""; }; + 66C559E290710757C262E9572627F8BA /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = ""; }; + 66FE320ED85B83804D275B29BFCDDCFF /* AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.xcconfig; sourceTree = ""; }; + 67108DAD07BBED97E0992E85B0D42C85 /* PFFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileManager.h; path = Parse/Internal/PFFileManager.h; sourceTree = ""; }; + 675939A97597CD2EA04CD4995460A6C7 /* PFACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACLState.m; path = Parse/Internal/ACL/State/PFACLState.m; sourceTree = ""; }; + 677452C3A3BE7F10BDD609C3AF5DA93A /* Bolts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bolts.h; path = Bolts/Common/Bolts.h; sourceTree = ""; }; + 6775409B0E8C0788D2E094C7C5218464 /* PFPushUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushUtilities.m; path = Parse/Internal/Push/Utilites/PFPushUtilities.m; sourceTree = ""; }; + 67E415550BFBF0D438FF517138639DE1 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + 6802793E8C624630B319D30FBB7BE7A2 /* PFQueryState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState_Private.h; path = Parse/Internal/Query/State/PFQueryState_Private.h; sourceTree = ""; }; + 691DE4C572928B4D4009AA95D722D4C0 /* FBSDKLoginUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginUtility.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m; sourceTree = ""; }; + 6930BA637A283F95CB5BE9E7F530E97C /* RestKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RestKit.xcconfig; sourceTree = ""; }; + 6949E72AFCB7848487C6B092E8E7CC63 /* PFPaymentTransactionObserver_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver_Private.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h; sourceTree = ""; }; + 6983D73EF0F3315F55A0E4A3B5CDB1CA /* PFInternalUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInternalUtils.h; path = Parse/Internal/PFInternalUtils.h; sourceTree = ""; }; + 69BA2E95DE6DD4BD8CCD5C2F04F31412 /* libParse.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libParse.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 6A0306DBED132EEB7F48CCF5885EADEB /* PFCurrentConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentConfigController.h; path = Parse/Internal/Config/Controller/PFCurrentConfigController.h; sourceTree = ""; }; + 6A193B521725B41DCBB47C98E8384558 /* PFRelationState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState_Private.h; path = Parse/Internal/Relation/State/PFRelationState_Private.h; sourceTree = ""; }; + 6A37F6B69937BDBBB1A609C50E20359F /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = ""; }; + 6A78ADE0C1383A85403BCEAA01789B6C /* PFPurchase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchase.h; path = Parse/PFPurchase.h; sourceTree = ""; }; + 6A7BE134FD15E0D4AD4050F4AF57B457 /* BFCancellationToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationToken.m; path = Bolts/Common/BFCancellationToken.m; sourceTree = ""; }; + 6AF7D10C408FD6D8AB132E00A1837154 /* FBSDKAccessTokenCacheV3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m; sourceTree = ""; }; + 6B38BFE99240E2343065A81810BCD299 /* BFAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink_Internal.h; path = Bolts/iOS/BFAppLink_Internal.h; sourceTree = ""; }; + 6C12D518D08748E88B0F70890764B8CD /* RKObjectMappingOperationDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMappingOperationDataSource.m; path = Code/ObjectMapping/RKObjectMappingOperationDataSource.m; sourceTree = ""; }; + 6C32A41D38BC842721FE9A96A699B1AD /* PFCommandCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandCache.m; path = Parse/Internal/PFCommandCache.m; sourceTree = ""; }; + 6C56FB7EA3918F4E9420A03CBD1DD4C8 /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = ""; }; + 6C8452D720D17A4AE9F49D703F4456F4 /* BFAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLink.m; path = Bolts/iOS/BFAppLink.m; sourceTree = ""; }; + 6CB8F4A546D9EAEA058287BFFA939C49 /* PFCommandRunning.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunning.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.m; sourceTree = ""; }; + 6CFD6F4F94AD214D7B9CEF3544854F4D /* RKPathMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPathMatcher.m; path = Code/Network/RKPathMatcher.m; sourceTree = ""; }; + 6D324B0F0C1603B017A0A195535F6737 /* FBSDKShareVideoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m; sourceTree = ""; }; + 6D4B932F8281FFA4CACCD488B25D8399 /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = ""; }; + 6D5B659F40540D61E87428BFCB17AF51 /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = ""; }; + 6D80A7028E913FB27600E32FE2F0D0D0 /* FBSDKAppInviteDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h; sourceTree = ""; }; + 6DBF2FEDE564A16DD0584A1A4B48DB5E /* PFConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfig.m; path = Parse/PFConfig.m; sourceTree = ""; }; + 6DFB97640F65DA922830BFCD6E8BAE3F /* FBSDKGameRequestDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h; sourceTree = ""; }; + 6E3986BD59BF447A1F15BD4527B7D366 /* PFQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryController.m; path = Parse/Internal/Query/Controller/PFQueryController.m; sourceTree = ""; }; + 6E3C2F4799E92C0B65ADDB13C693731F /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = ""; }; + 6E5BFC99B4A9E8CFC77CB440E5B6A68F /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = ""; }; + 6E7F4A2F3E63A394F39CDBFEF74FFB35 /* FBSDKGameRequestFrictionlessRecipientCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestFrictionlessRecipientCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h; sourceTree = ""; }; + 6F103B2A584D088B481C2F591B22CB95 /* PFDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDateFormatter.m; path = Parse/Internal/PFDateFormatter.m; sourceTree = ""; }; + 6F5B4BDBF3900CA5DDAB9B63E2EE063C /* FBSDKShareAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareAPI.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h; sourceTree = ""; }; + 6F9AB8D84FEE2E48AF3B9F9658D5BE35 /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m; sourceTree = ""; }; + 6FFDF70586FE4143304DC181DA940A51 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; + 7078C0E27AB4BBE276699BEA6B6332B4 /* FBSDKLikeControl+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeControl+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h"; sourceTree = ""; }; + 7143CA35B7DBC71915BDD3C8FFA6F17B /* RKObjectMappingOperationDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMappingOperationDataSource.h; path = Code/ObjectMapping/RKObjectMappingOperationDataSource.h; sourceTree = ""; }; + 7176C54BE83AD8B924C0239573D8C14D /* PFRESTConfigCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTConfigCommand.h; path = Parse/Internal/Commands/PFRESTConfigCommand.h; sourceTree = ""; }; + 71AB35520DC69025479E89EC80D0D204 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + 72D0BB4387B18BC30B9E1DFA837849CF /* FBSDKLoginCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginCompletion.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h; sourceTree = ""; }; + 7353118F412B2CA3124108B64BE5533C /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = ""; }; + 735762C7D17E4364E90ADAFD2E9C139A /* PFOfflineQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryController.m; path = Parse/Internal/Query/Controller/PFOfflineQueryController.m; sourceTree = ""; }; + 73923DB118610C08A35942208D9A3213 /* PFReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFReachability.m; path = Parse/Internal/PFReachability.m; sourceTree = ""; }; + 73D64DAEAFFF3B4456A0ECB82E2D4CA6 /* PFURLSessionCommandRunner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.h; sourceTree = ""; }; + 73DF5CF1E91847F2BBD8BC5574BE7A24 /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = ""; }; + 73E78AAF48CC66F5329D231011EC9F0E /* PFMutableQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableQueryState.h; path = Parse/Internal/Query/State/PFMutableQueryState.h; sourceTree = ""; }; + 748E23C1428DC283BAB8E03D0CE9A770 /* PFCurrentInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentInstallationController.m; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.m; sourceTree = ""; }; + 749C7452D497A9A10B0021891AC18286 /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = ""; }; + 749EB4AB41C2B5F71BA37ABB24CEE668 /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTaskCompletionSource.h; path = Bolts/Common/BFTaskCompletionSource.h; sourceTree = ""; }; + 74D75C3A4E2A26AFDC39E1FAB71F6A80 /* FBSDKShareKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKShareKit-prefix.pch"; sourceTree = ""; }; + 757FF14AABAC587C4E6F945A1E8D4472 /* RKMappingResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingResult.m; path = Code/ObjectMapping/RKMappingResult.m; sourceTree = ""; }; + 76138EE2803A9EEC58C7D5AB7744121F /* PFObjectEstimatedData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectEstimatedData.m; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.m; sourceTree = ""; }; + 763AC253EC0FD55889EFD9499486FE4D /* PFWeakValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFWeakValue.h; path = Parse/Internal/PFWeakValue.h; sourceTree = ""; }; + 76A196B0C50AE07AE79DC05159C2DF21 /* PFObjectFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCodingLogic.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.h; sourceTree = ""; }; + 76B3B4CCA7886CC75FFCF9656D10AD03 /* ISO8601DateFormatterValueTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ISO8601DateFormatterValueTransformer.h; path = Code/ISO8601DateFormatterValueTransformer.h; sourceTree = ""; }; + 773B71C6DCFE021055288283663560C9 /* RKManagedObjectRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKManagedObjectRequestOperation.h; path = Code/Network/RKManagedObjectRequestOperation.h; sourceTree = ""; }; + 776CD45C316A4D526A9482D3D6C0F72C /* PFUserFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserFileCodingLogic.h; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.h; sourceTree = ""; }; + 778D4E4A3B190B10F0AEFE08CC88F279 /* Testing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Testing.h; path = Code/Testing.h; sourceTree = ""; }; + 78ED1DE48AC6FAA521E9D1B0A15B2F0E /* PFObjectSubclassInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassInfo.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.h; sourceTree = ""; }; + 796C03163B04A83EF5A5417BD0C59CA0 /* FBSDKSharePhotoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhotoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h; sourceTree = ""; }; + 79E1D204CE90D1BA1A7B1CE8E631A4A8 /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFWebViewAppLinkResolver.m; path = Bolts/iOS/BFWebViewAppLinkResolver.m; sourceTree = ""; }; + 7A3F937AE0B76FE001B1424707650BE3 /* FBSDKAppGroupContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m; sourceTree = ""; }; + 7A7B8336A363D3DD83ED3A4E4BDB5F0E /* PFDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDataProvider.h; path = Parse/Internal/PFDataProvider.h; sourceTree = ""; }; + 7B450C5571097E288C9CFF740CE3FA5F /* PFObjectPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectPrivate.h; path = Parse/Internal/Object/PFObjectPrivate.h; sourceTree = ""; }; + 7B96A479BB821E005E1541AE443F5296 /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = ""; }; + 7BEB822204CBB8DAC8FF4C04AEFCF729 /* PFEncoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEncoder.m; path = Parse/Internal/PFEncoder.m; sourceTree = ""; }; + 7C807E842A64AA6E448D999BD0EA2744 /* PFCoreManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreManager.h; path = Parse/Internal/PFCoreManager.h; sourceTree = ""; }; + 7CA70E2AE68629BDED8957B97443D682 /* FBSDKShareOpenGraphContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m; sourceTree = ""; }; + 7CB0738F082CD21988DD84404C1406E6 /* RKStringTokenizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKStringTokenizer.h; path = Code/Support/RKStringTokenizer.h; sourceTree = ""; }; + 7CB667B15CA6726CE1EA77BBAC4BC7FD /* PFConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConstants.m; path = Parse/PFConstants.m; sourceTree = ""; }; + 7CC8DE7490D76AE8614531D09B7CFA9D /* PFEncoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEncoder.h; path = Parse/Internal/PFEncoder.h; sourceTree = ""; }; + 7CF42D72A1AF3A7182B9021C56CAF888 /* PFObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectState.m; path = Parse/Internal/Object/State/PFObjectState.m; sourceTree = ""; }; + 7D657474E403B993C149CC1F51629EB2 /* FBSDKShareOpenGraphValueContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphValueContainer.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h; sourceTree = ""; }; + 7D77C3FB04FA7AD4241A39452337BF48 /* PFMultiProcessFileLockController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLockController.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.h; sourceTree = ""; }; + 7E3ED96EE4D0B9F695BE889B00DE6407 /* PFMultiProcessFileLockController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLockController.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.m; sourceTree = ""; }; + 7EFB8D910130BB4CE5DC011047B4653B /* RKObjectMappingMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMappingMatcher.h; path = Code/ObjectMapping/RKObjectMappingMatcher.h; sourceTree = ""; }; + 7F33AA92E57D33A8DE7D71147E3BBDD3 /* RKHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKHTTPRequestOperation.h; path = Code/Network/RKHTTPRequestOperation.h; sourceTree = ""; }; + 7FBEBBBD069AC4F0A63136014F0C9C54 /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = ""; }; + 7FCD65509A86CB6A3CBDE7E5FCB1384A /* BFCancellationTokenRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenRegistration.h; path = Bolts/Common/BFCancellationTokenRegistration.h; sourceTree = ""; }; + 7FD3846A7DAFF7196AF5C2F45BCD8A5A /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFWebViewAppLinkResolver.h; path = Bolts/iOS/BFWebViewAppLinkResolver.h; sourceTree = ""; }; + 80BA04F02821688944482E0FB8D4D623 /* PFOperationSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOperationSet.m; path = Parse/Internal/Object/OperationSet/PFOperationSet.m; sourceTree = ""; }; + 80D80DCE3A20EC46EAAB66B362677E30 /* AFHTTPClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPClient.m; path = AFNetworking/AFHTTPClient.m; sourceTree = ""; }; + 80F8EAC3DBA16F147C2EED3D1B93D248 /* FBSDKGameRequestContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m; sourceTree = ""; }; + 81C8A7F71F4AB5ED22FA83E37837CA80 /* RKLumberjackLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKLumberjackLogger.h; path = Code/Support/RKLumberjackLogger.h; sourceTree = ""; }; + 8200C4FB4CDD0C6152EE150BDEFC6675 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; + 8252E3628FCD0DD24332FF33C10A559A /* PFErrorUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFErrorUtilities.h; path = Parse/Internal/PFErrorUtilities.h; sourceTree = ""; }; + 8268565FACDED1D6C7B9BE1728B7EC67 /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = ""; }; + 828C7F88A0E2BCBEB7B6A32EE8D36F4B /* PFRole.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRole.h; path = Parse/PFRole.h; sourceTree = ""; }; + 828E3502653848562DD0814140A92CCF /* PFUserState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState_Private.h; path = Parse/Internal/User/State/PFUserState_Private.h; sourceTree = ""; }; + 82DAD225DA2EF99D509E1DCD251CF1E0 /* PFURLSessionJSONDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionJSONDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.h; sourceTree = ""; }; + 82DEAB301EC606D81DDB79F260128939 /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = ""; }; + 82E1375889C85A75C3D50613909984E7 /* Parse-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Parse-prefix.pch"; sourceTree = ""; }; + 82E686107E1090E17BFD23A272EE10CA /* FBSDKLoginManagerLoginResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLoginResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h; sourceTree = ""; }; + 82F4B771C010B07B8269F863B9D5E124 /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = ""; }; + 82F4CF881DD119649C8445AB7AD1733A /* RKRoute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRoute.h; path = Code/Network/RKRoute.h; sourceTree = ""; }; + 83106886E9A710F3579F2BBF35D8C99C /* FBSDKShareUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m; sourceTree = ""; }; + 8343EFF681B40307ADDC80DDE71AA45E /* RKValueTransformers-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RKValueTransformers-dummy.m"; sourceTree = ""; }; + 839CDF95C7EB745D855A1D1CD5E90C77 /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = ""; }; + 83C71B61CCF71858F87CFEBB94CFFB11 /* PFInstallationIdentifierStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationIdentifierStore.m; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.m; sourceTree = ""; }; + 83ECAB9F08AFED3BB4204FD83415518B /* PFPropertyInfo_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Private.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Private.h; sourceTree = ""; }; + 83F2B1D939804694C73E7FCD9AAF4090 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; + 8430E4A0A4791DC7D0F9CE485D860A00 /* RKBenchmark.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKBenchmark.m; path = Code/Testing/RKBenchmark.m; sourceTree = ""; }; + 8438C8930C259D5374088068EDEF11A2 /* PFHTTPURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHTTPURLRequestConstructor.m; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.m; sourceTree = ""; }; + 844E60D98084AFA1C1191666646A744B /* FBSDKSendButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSendButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m; sourceTree = ""; }; + 84B84882EEBE825A5C543B49CE80D4F1 /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m; sourceTree = ""; }; + 84D78F45D0B07841FAAA5A3283859049 /* PFMulticastDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMulticastDelegate.h; path = Parse/Internal/PFMulticastDelegate.h; sourceTree = ""; }; + 84E51A0ADCB24DAC5F16586A7E22A679 /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView_Internal.h; path = Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h; sourceTree = ""; }; + 84F69195C66DCE1ED23AFBCC251BA4C3 /* PFAlertView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAlertView.h; path = Parse/Internal/PFAlertView.h; sourceTree = ""; }; + 857A31726A217BC7AAB96D91A7951102 /* PFUserConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserConstants.m; path = Parse/Internal/User/Constants/PFUserConstants.m; sourceTree = ""; }; + 85C3C7141AE8131AC8868EF3F853AD3A /* RKConnectionTestExpectation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKConnectionTestExpectation.h; path = Code/Testing/RKConnectionTestExpectation.h; sourceTree = ""; }; + 864FC7E084B3C08400F30878D1F110FE /* PFFileDataStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileDataStream.h; path = Parse/Internal/File/FileDataStream/PFFileDataStream.h; sourceTree = ""; }; + 86D941FDEEC92E2EA2835097C2161C04 /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = ""; }; + 875545166E1B56B37A2E9CEAE067A11D /* FBSDKShareKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareKit+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h"; sourceTree = ""; }; + 885480E76DF09EE4E69F631228FF4859 /* PFRESTCommand_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand_Private.h; path = Parse/Internal/Commands/PFRESTCommand_Private.h; sourceTree = ""; }; + 88B6008DB095748E5DD60D4357F1130E /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = ""; }; + 895926AE9851CE1F765F43CBEEDBAFBC /* PFLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLogger.m; path = Parse/Internal/PFLogger.m; sourceTree = ""; }; + 8960D7D3ED69E1B3DCCEB842BB3727DD /* FBSDKAppGroupContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h; sourceTree = ""; }; + 89622454B6309852AD9687B0820C02B0 /* SOCKit.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SOCKit.m; sourceTree = ""; }; + 8998D38349136ED287AD6B1F81B2A2C3 /* PFObjectFilePersistenceController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFilePersistenceController.m; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.m; sourceTree = ""; }; + 8A3CCA72533E35C4376B1E8AECC9627F /* TransitionKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TransitionKit.h; path = Code/TransitionKit.h; sourceTree = ""; }; + 8A96182B63D95AA7512F0B4BF891B823 /* PFUserFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserFileCodingLogic.m; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.m; sourceTree = ""; }; + 8B31ADE78BF2D9A37DCAF22E2F0D53AC /* RKHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKHTTPRequestOperation.m; path = Code/Network/RKHTTPRequestOperation.m; sourceTree = ""; }; + 8BBDCAE31F786B578147D2A338A29E5B /* FBSDKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h; sourceTree = ""; }; + 8C1ADD04949F1ABA82756CBA171DA5EB /* FBSDKShareOpenGraphAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphAction.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m; sourceTree = ""; }; + 8C5C8164C6C45E75534AA683EB3EE80B /* FBSDKTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m; sourceTree = ""; }; + 8C61DC5A959A8218D355C33FFDD05395 /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = ""; }; + 8CB9E435A8D7599B6B0049E6AFE5304E /* PFFileController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileController.h; path = Parse/Internal/File/Controller/PFFileController.h; sourceTree = ""; }; + 8CCE9BE6DF0576998191D1D52675A3EF /* Pods-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-dummy.m"; sourceTree = ""; }; + 8DA277D34C0546D8D8E80D99DCCD844A /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; + 8DE47CA373FCE248BB502DF421F6B2A3 /* RKObjectMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMapping.h; path = Code/ObjectMapping/RKObjectMapping.h; sourceTree = ""; }; + 8E23F80B85568CE234F07C36444A8868 /* PFProduct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProduct.h; path = Parse/PFProduct.h; sourceTree = ""; }; + 8E58CBB93F5E241E8F3C398FB06283B5 /* PFFieldOperationDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperationDecoder.h; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.h; sourceTree = ""; }; + 8EB6F1445D886E9B17EB6D384EE6DF8F /* FBSDKLoginConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginConstants.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m; sourceTree = ""; }; + 8F21EA2F4A5DDD76A519682036295D1A /* PFCommandURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandURLRequestConstructor.h; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.h; sourceTree = ""; }; + 8F5ED0372250818DCE119C3430AB9B9C /* FBSDKCoreKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKCoreKit.xcconfig; sourceTree = ""; }; + 8F6F5C52DD8416B5F436BA714F2292F6 /* PFSessionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionController.h; path = Parse/Internal/Session/Controller/PFSessionController.h; sourceTree = ""; }; + 8F840FB713741211963007A36C4C972B /* RKObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectUtilities.h; path = Code/ObjectMapping/RKObjectUtilities.h; sourceTree = ""; }; + 8FC8E6958F515A1458DD253105E635AB /* BFAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkResolving.h; path = Bolts/iOS/BFAppLinkResolving.h; sourceTree = ""; }; + 8FD1B81D44C9140C9CB6A7AE15FD008A /* FBSDKCoreKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKCoreKit-Private.xcconfig"; sourceTree = ""; }; + 8FE2369D45F007102130145D672D47C7 /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h; sourceTree = ""; }; + 905A2264F8751CFD5E0FFE6C92CE7462 /* RKPropertyMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyMapping.m; path = Code/ObjectMapping/RKPropertyMapping.m; sourceTree = ""; }; + 905ADB423401F79FA90F610A1CEB29F1 /* RKMappingResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingResult.h; path = Code/ObjectMapping/RKMappingResult.h; sourceTree = ""; }; + 90EF6645B1C52A9102DE489C1AEB98C0 /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = ""; }; + 91D0862B2FAC5E1E4D6ACAB14BE40FD0 /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = ""; }; + 92093FA98E5C9EFD88FDF61A6A4E6451 /* PFSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession.h; path = Parse/PFSession.h; sourceTree = ""; }; + 927F616936E0C7308D11300E5B788429 /* PFFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFile.m; path = Parse/PFFile.m; sourceTree = ""; }; + 932E74B6527148FA6780C77E8DBF2ED5 /* FBSDKLoginManagerLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLogger.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h; sourceTree = ""; }; + 936E53085AB59399AE3E6F0458D49941 /* PFPushManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushManager.h; path = Parse/Internal/Push/Manager/PFPushManager.h; sourceTree = ""; }; + 93A85BABE61F3728712E0E5208270B19 /* PFNetworkCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkCommand.h; path = Parse/Internal/PFNetworkCommand.h; sourceTree = ""; }; + 94241AC9E14ADC6F4BF3A74F37C7443B /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = ""; }; + 942A952E1E39A725636E8BEF6FDDA9F9 /* Parse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse.h; path = Parse/Parse.h; sourceTree = ""; }; + 94B2708249CC1A4C374BE0BE9A5C2161 /* FBSDKLikeBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h; sourceTree = ""; }; + 94EC2DDBDD9F074B0353114A4386A277 /* PFQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQuery.h; path = Parse/PFQuery.h; sourceTree = ""; }; + 9502680C2A5812E3B95B583AB378FCA2 /* PFRESTAnalyticsCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTAnalyticsCommand.m; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.m; sourceTree = ""; }; + 95ACACF8D7E55EF8FE0FEF697597C3D3 /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; + 95B10AC59C183D139DF676CDC2DEF1B0 /* RKLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKLog.h; path = Code/Support/RKLog.h; sourceTree = ""; }; + 95C3B6319C8BEC9A72589989076B040E /* FBSDKShareDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m; sourceTree = ""; }; + 9601718FD0C0CFCF5DA762D153DB3279 /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTaskCompletionSource.m; path = Bolts/Common/BFTaskCompletionSource.m; sourceTree = ""; }; + 96A98B34414903617DDCC4DD35D0ACC8 /* SOCKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SOCKit.h; sourceTree = ""; }; + 973BCDCA8F5D929A3B0146540D22266B /* PFUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserState.m; path = Parse/Internal/User/State/PFUserState.m; sourceTree = ""; }; + 97715D178022674A0792C3C3180E1132 /* AFJSONRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFJSONRequestOperation.h; path = AFNetworking/AFJSONRequestOperation.h; sourceTree = ""; }; + 97E6EC52D54228978DD7489F931C7015 /* RKLumberjackLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKLumberjackLogger.m; path = Code/Support/RKLumberjackLogger.m; sourceTree = ""; }; + 985451595F8F27101D95712CABD99D9C /* FBSDKBoltsMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBoltsMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m; sourceTree = ""; }; + 9863ED0E0DE0D5BD0D54D80394E2278E /* RKObjectRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectRequestOperation.h; path = Code/Network/RKObjectRequestOperation.h; sourceTree = ""; }; + 986A0B2FB090467DD63D523D111D637B /* PFMutableQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableQueryState.m; path = Parse/Internal/Query/State/PFMutableQueryState.m; sourceTree = ""; }; + 986BA44834A1379FA62C25B6BA8F688C /* FBSDKLikeActionControllerCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionControllerCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m; sourceTree = ""; }; + 98D59999C2F13A02F8927597F85000C8 /* RKDynamicMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDynamicMapping.h; path = Code/ObjectMapping/RKDynamicMapping.h; sourceTree = ""; }; + 98E26BE57B0986BD287273920656152C /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = ""; }; + 991823AD655E78B8754FB6DE31C15928 /* libRKValueTransformers.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRKValueTransformers.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 9936ED8D363FA6B09EA60941182E9F3B /* TKState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKState.m; path = Code/TKState.m; sourceTree = ""; }; + 99BAAC5484715BACEF4A330F55A4DCA0 /* PFSessionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionController.m; path = Parse/Internal/Session/Controller/PFSessionController.m; sourceTree = ""; }; + 99CE24FEF0EA1F2943A8DFF00388C985 /* RKStringTokenizer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKStringTokenizer.m; path = Code/Support/RKStringTokenizer.m; sourceTree = ""; }; + 99FE17414C621D6F3A13235F179D4CB8 /* FBSDKLoginManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManager+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h"; sourceTree = ""; }; + 9A18F7AE2E1FACC4C6227EFE5C4B86A4 /* PFUserConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserConstants.h; path = Parse/Internal/User/Constants/PFUserConstants.h; sourceTree = ""; }; + 9A4611534D2F6FE37840471AE6EE6B04 /* PFQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQuery.m; path = Parse/PFQuery.m; sourceTree = ""; }; + 9A4A2624694E7E459F481284E18872D0 /* Bolts-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Bolts-dummy.m"; sourceTree = ""; }; + 9A7897D08498CE169C9E0F8BA5015E80 /* RKObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectUtilities.m; path = Code/ObjectMapping/RKObjectUtilities.m; sourceTree = ""; }; + 9A7CE6F0005C413065B0AE390477019B /* PFCommandResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandResult.h; path = Parse/Internal/PFCommandResult.h; sourceTree = ""; }; + 9ABF154F3CA9CA7655A27F36B3AFD46A /* PFEventuallyQueue_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue_Private.h; path = Parse/Internal/PFEventuallyQueue_Private.h; sourceTree = ""; }; + 9AF33E0422D0D6894776A47D9A815993 /* FBSDKLikeButtonPopWAV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButtonPopWAV.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m; sourceTree = ""; }; + 9B6B535332BF062ED196F088A04E6A5C /* PFUserPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserPrivate.h; path = Parse/Internal/User/PFUserPrivate.h; sourceTree = ""; }; + 9B7DE1AA020492D010862FA4F2FBC7C6 /* PFApplication.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFApplication.m; path = Parse/Internal/PFApplication.m; sourceTree = ""; }; + 9C2DBEA1B558F22849ADDB4522563836 /* PFFileController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileController.m; path = Parse/Internal/File/Controller/PFFileController.m; sourceTree = ""; }; + 9C73B2D9D4B827BC0A14F34532E43F41 /* PFPurchaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchaseController.m; path = Parse/Internal/Purchase/Controller/PFPurchaseController.m; sourceTree = ""; }; + 9CC527AF2B9F34C2E793791D4F3AE0A4 /* PFQueryPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryPrivate.h; path = Parse/Internal/Query/PFQueryPrivate.h; sourceTree = ""; }; + 9CF2D6AC00B5B6213CA5BA66D3473AF9 /* PFURLSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession_Private.h; sourceTree = ""; }; + 9D3A56A201096D2EE5931E4024DA7419 /* FBSDKLoginManagerLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLogger.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m; sourceTree = ""; }; + 9D87F51C610B0FE64B3895D47FCAF2B6 /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = ""; }; + 9D9010B3F716FD1490351E8CB8BB8840 /* PFNullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNullability.h; path = Parse/PFNullability.h; sourceTree = ""; }; + 9DB137E8A7C92A13BD6EB1FE46FAD717 /* PFPropertyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo.h; sourceTree = ""; }; + 9DF590EFC23393E18AB1CB35CBED4270 /* PFKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeychainStore.m; path = Parse/Internal/PFKeychainStore.m; sourceTree = ""; }; + 9EBC7480ED94D3BDC49F07CF67845245 /* FBSDKLoginTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m; sourceTree = ""; }; + 9EC619ED9963ABF73BFCE22527769210 /* libFBSDKShareKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKShareKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 9EF29D84C9187AAE24AA165B2347ACAD /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = ""; }; + 9F73B326076ED018A7156E4BFED6A5EA /* lcl_config_components_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_components_RK.h; path = Code/Support/lcl_config_components_RK.h; sourceTree = ""; }; + A0426D7149778C1DBF70DD5B3253A081 /* RKDynamicMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDynamicMapping.m; path = Code/ObjectMapping/RKDynamicMapping.m; sourceTree = ""; }; + A061230EB53B9A3D0D74C5E8D62680CA /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = ""; }; + A07FB85A098FAF188DB71104131A46B2 /* PFObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectUtilities.h; path = Parse/Internal/Object/Utilities/PFObjectUtilities.h; sourceTree = ""; }; + A08562E12462CC984D8E3FDD78C62842 /* PFCategoryLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCategoryLoader.m; path = Parse/Internal/PFCategoryLoader.m; sourceTree = ""; }; + A10620A1377EB7153ECCFC2F048B5505 /* PFWeakValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFWeakValue.m; path = Parse/Internal/PFWeakValue.m; sourceTree = ""; }; + A153B9B34087207BF3F8415D46B5F822 /* FBSDKSharing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharing.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h; sourceTree = ""; }; + A17C481C0F1C64EB4AB1CFBAF183C08E /* FBSDKLikeControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeControl.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h; sourceTree = ""; }; + A194EB7C47C1754479482D96E62282D1 /* PFSQLiteDatabaseResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseResult.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.h; sourceTree = ""; }; + A1DAFA76443338477CB91F2DC0FEDC9E /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = ""; }; + A2DB5E0FF2D801AE5355483A207C2316 /* PFMutableRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableRelationState.h; path = Parse/Internal/Relation/State/PFMutableRelationState.h; sourceTree = ""; }; + A2F1242F1927A230F84F0CBB923D800D /* PFCloud.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloud.h; path = Parse/PFCloud.h; sourceTree = ""; }; + A31F406B4BFF1949AF98275105F6457A /* PFRESTCloudCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCloudCommand.h; path = Parse/Internal/Commands/PFRESTCloudCommand.h; sourceTree = ""; }; + A397240CB17A369FA7286D7ED09FBDD2 /* RKOperationStateMachine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKOperationStateMachine.m; path = Code/Support/RKOperationStateMachine.m; sourceTree = ""; }; + A3D1CC8FD8C924BEC03EAE7B7D1A957B /* PFObjectController_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController_Private.h; path = Parse/Internal/Object/Controller/PFObjectController_Private.h; sourceTree = ""; }; + A4365F0D13404D6A5A7FA5FE5156F9E2 /* libBolts.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBolts.a; sourceTree = BUILT_PRODUCTS_DIR; }; + A47788042F4DC03B2F9C830BA9EA5567 /* RKMappingErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingErrors.h; path = Code/ObjectMapping/RKMappingErrors.h; sourceTree = ""; }; + A4F85A759F06DA2C165FC5F9C67479D9 /* TKState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKState.h; path = Code/TKState.h; sourceTree = ""; }; + A513E815CB0531AC54B80FD774351B67 /* PFApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFApplication.h; path = Parse/Internal/PFApplication.h; sourceTree = ""; }; + A51EB7786397F5EFF35AB3BD9CEF4F08 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; + A5247A1DF4C0D6237EA1C24BBC7A2C7D /* PFURLConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLConstructor.m; path = Parse/Internal/HTTPRequest/PFURLConstructor.m; sourceTree = ""; }; + A54BA714770BA8ED007819BC352FEB7C /* libSOCKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSOCKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + A54DE73C817619BCCC8C09FEBFAAE717 /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = ""; }; + A5E5E8ED6BA6053BE27E35F8E7B4BEEE /* PFURLSessionUploadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionUploadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.m; sourceTree = ""; }; + A633AA451BBF3810EF096AFCD04B189D /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = ""; }; + A67A7F1AF95165EBD3C0D8E0060DB526 /* RKMappingTest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingTest.h; path = Code/Testing/RKMappingTest.h; sourceTree = ""; }; + A6C3BBB9984F7D2959A0E80137315CF3 /* PFMutableACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableACLState.m; path = Parse/Internal/ACL/State/PFMutableACLState.m; sourceTree = ""; }; + A73E1A20457CEF5005A485BBF4301935 /* Bolts-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Bolts-prefix.pch"; sourceTree = ""; }; + A771288DA627C1035D810FE2E4D30B4D /* RKObjectRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectRequestOperation.m; path = Code/Network/RKObjectRequestOperation.m; sourceTree = ""; }; + A789217CA6DED8D71FBD896F412AD6A4 /* PFObjectConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectConstants.h; path = Parse/Internal/Object/Constants/PFObjectConstants.h; sourceTree = ""; }; + A794CC4D4A2C1FBA46304C8A08FBBF13 /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h; sourceTree = ""; }; + A87CDFB3EFD9FF97386971977129FF4F /* PFSessionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionUtilities.m; path = Parse/Internal/Session/Utilities/PFSessionUtilities.m; sourceTree = ""; }; + A89DBD55CC24CC46C0835D3E92056BAF /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = ""; }; + A8B7D4881DB5E38BB4A3D779E6BB690D /* PFPinningObjectStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningObjectStore.h; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.h; sourceTree = ""; }; + A8F0EEC1700298FC5555BA0A53F82E9D /* PFCurrentInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentInstallationController.h; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.h; sourceTree = ""; }; + A8FA5F2052C43B6E4060DAF60265E858 /* SOCKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "SOCKit-Private.xcconfig"; sourceTree = ""; }; + A8FE4F334B2A94F5AC2AA3FBAF7627F8 /* PFProduct+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFProduct+Private.h"; path = "Parse/Internal/Product/PFProduct+Private.h"; sourceTree = ""; }; + A9E3691FF1A7CEBD5D9EFA1195090078 /* ISO8601DateFormatterValueTransformer.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ISO8601DateFormatterValueTransformer.xcconfig; sourceTree = ""; }; + AA62DC87D5F1898752152729F580A3A0 /* RKNSJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKNSJSONSerialization.m; path = Code/Support/RKNSJSONSerialization.m; sourceTree = ""; }; + AA6AE3659CB5F993D0249F89C25AD457 /* FBSDKLoginManagerLoginResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLoginResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m; sourceTree = ""; }; + AA8507DB72E8E2555EB649E141F80B46 /* PFSubclassing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSubclassing.h; path = Parse/PFSubclassing.h; sourceTree = ""; }; + AA8D4BA554A6B6C1B406BECC4D387E3F /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = ""; }; + AB09AD9EF87210D905F74E1C8DFF532C /* PFCoreDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreDataProvider.h; path = Parse/Internal/PFCoreDataProvider.h; sourceTree = ""; }; + AB5F89C2FF338EB3D8A14F31581D0B13 /* TransitionKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "TransitionKit-Private.xcconfig"; sourceTree = ""; }; + ABB8ADA56E3C960C54BA1289E7ECB2E5 /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = ""; }; + ABF0B6755B46A73A4D5A66DC91176994 /* BFAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkTarget.h; path = Bolts/iOS/BFAppLinkTarget.h; sourceTree = ""; }; + ACE0AE2BDDDC07FCC86BAD0AD53C4E89 /* ParseInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseInternal.h; path = Parse/Internal/ParseInternal.h; sourceTree = ""; }; + AD669A1EAE15893820BD4F03CDCE9EDE /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = ""; }; + AD6755DF1120CF7F9CE51A66D317FC9F /* RKRelationshipMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRelationshipMapping.m; path = Code/ObjectMapping/RKRelationshipMapping.m; sourceTree = ""; }; + AD7E73D7FC8878A9DBB9C6C91A6EF948 /* PFTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFTaskQueue.h; path = Parse/Internal/PFTaskQueue.h; sourceTree = ""; }; + ADBBD204C9399AB147FC3FB9386FBA68 /* PFRESTCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand.h; path = Parse/Internal/Commands/PFRESTCommand.h; sourceTree = ""; }; + ADD502BDCA2209045FB7EE614931BD10 /* PFEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue.h; path = Parse/Internal/PFEventuallyQueue.h; sourceTree = ""; }; + AE08EB61DD10B80E244E727952C0B579 /* ISO8601DateFormatterValueTransformer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ISO8601DateFormatterValueTransformer-dummy.m"; sourceTree = ""; }; + AE1F88C360ED32A2DC0B77A0FB64F684 /* RKResponseDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKResponseDescriptor.m; path = Code/Network/RKResponseDescriptor.m; sourceTree = ""; }; + AEDE84F08919A050F7554C588C364506 /* TransitionKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = TransitionKit.xcconfig; sourceTree = ""; }; + AEFB5A16335CA052F7F8EF7BD6899979 /* PFObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState.h; path = Parse/Internal/Object/State/PFObjectState.h; sourceTree = ""; }; + AEFD765B313DFFD0B0729C789E148EF3 /* FBSDKLoginTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h; sourceTree = ""; }; + AF0E2DA4583C19DA08D84DBF506EC7F3 /* FBSDKShareAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareAPI.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m; sourceTree = ""; }; + AF18B2AD10D7C8A2EBA61B5AB51D00BD /* PFObjectFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCodingLogic.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.m; sourceTree = ""; }; + AF8EEF265F3D9C4630F4ACCFBA1A315F /* PFProductsRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProductsRequestHandler.h; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.h; sourceTree = ""; }; + B0F9682AC6A9C5259D9F3D4BCCD455B1 /* libRestKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRestKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B177AF318ABF25BE42BEEE03E5A4504D /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = ""; }; + B1C7ADB3EE2B383850B9230A7B460906 /* BoltsVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BoltsVersion.h; path = Bolts/Common/BoltsVersion.h; sourceTree = ""; }; + B21B66CA9B865C30407C0033E5E77A5C /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; + B2B61F565ACF0CDFAAE4247A1F8D4A5C /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B306BF5D4F5F8F5EDE605D550B1C60E4 /* _FBSDKLoginRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKLoginRecoveryAttempter.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m; sourceTree = ""; }; + B3430C5AC8208C2B671B4D7823955F60 /* RKBenchmark.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKBenchmark.h; path = Code/Testing/RKBenchmark.h; sourceTree = ""; }; + B34970E9607C4D5CA7FD440A0E9D4EB0 /* RKPropertyMappingTestExpectation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyMappingTestExpectation.m; path = Code/Testing/RKPropertyMappingTestExpectation.m; sourceTree = ""; }; + B3FCEE0AD84EC6A5CA5478A717BEBA01 /* PFDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDecoder.m; path = Parse/Internal/PFDecoder.m; sourceTree = ""; }; + B44F9A0151A29D7133BB6B1A3BBFA048 /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = ""; }; + B45B64C4D463C82AD88669B314F94E5E /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = ""; }; + B4A4BC05632F91AFEF2CA8594E359431 /* PFQueryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryUtilities.m; path = Parse/Internal/Query/Utilities/PFQueryUtilities.m; sourceTree = ""; }; + B4DD5861C8879004366D84A43D21E0EB /* FBSDKLoginManagerLoginResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManagerLoginResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h"; sourceTree = ""; }; + B563402F32E620824AD23105E63019A7 /* RKAttributeMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKAttributeMapping.h; path = Code/ObjectMapping/RKAttributeMapping.h; sourceTree = ""; }; + B5844358C456A94A62A07CB206B23CB9 /* PFRESTAnalyticsCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTAnalyticsCommand.h; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.h; sourceTree = ""; }; + B64334E646B39ABAFB0CC58791A45045 /* PFURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.h; sourceTree = ""; }; + B6707D507E40761A2A3DB33A5EBE648E /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = ""; }; + B6DB762A22230B1B2984E7A10A6D4431 /* FBSDKShareLinkContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareLinkContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m; sourceTree = ""; }; + B7200C42FD7821618E5C729A6715D406 /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = ""; }; + B74DFFD00FD194924436581B996AF728 /* PFSessionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionUtilities.h; path = Parse/Internal/Session/Utilities/PFSessionUtilities.h; sourceTree = ""; }; + B76A09E201EAD10D07E2C151D7EC5F26 /* FBSDKCoreKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKCoreKit-prefix.pch"; sourceTree = ""; }; + B7B64451F8A6E1AC2BADE39B3C1CABF8 /* PFRESTCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCommand.m; path = Parse/Internal/Commands/PFRESTCommand.m; sourceTree = ""; }; + B7D225D38EBD061B9B317B5F017A8DB8 /* PFRESTUserCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTUserCommand.m; path = Parse/Internal/Commands/PFRESTUserCommand.m; sourceTree = ""; }; + B83052F7D6EDB1CBA5F3BE48FE41B542 /* AFImageRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageRequestOperation.m; path = AFNetworking/AFImageRequestOperation.m; sourceTree = ""; }; + B83DA40998833B6F48A316FA1BA26DF0 /* PFPaymentTransactionObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.h; sourceTree = ""; }; + B83F7B501488845012B0097456793ED7 /* lcl_config_extensions_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_extensions_RK.h; path = Code/Support/lcl_config_extensions_RK.h; sourceTree = ""; }; + B8409E3E09BE30CB9E0DB516F89ED930 /* SOCKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SOCKit.xcconfig; sourceTree = ""; }; + B8C98D684B355E8344D062BD7BF8315F /* PFAnalytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics.h; path = Parse/PFAnalytics.h; sourceTree = ""; }; + B9254F90896402000DEE03CA2001F4A0 /* FBSDKLoginCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginCompletion.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m; sourceTree = ""; }; + B96FAE035A72F2B9E4745AA2941D21DC /* lcl_config_logger_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_logger_RK.h; path = Code/Support/lcl_config_logger_RK.h; sourceTree = ""; }; + B996498C593C09462CB17300BB0EA209 /* PFQueryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryUtilities.h; path = Parse/Internal/Query/Utilities/PFQueryUtilities.h; sourceTree = ""; }; + B9A15492EE8BDE4E1840F2F29AA9B3A5 /* PFObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectControlling.h; path = Parse/Internal/Object/Controller/PFObjectControlling.h; sourceTree = ""; }; + B9DD727DB3D3919B717CCB2FAE4F0055 /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = ""; }; + B9DDC28C55F77A12AE9ED00D59C5CDF6 /* FBSDKAppInviteContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h; sourceTree = ""; }; + BA24326AC3CD75BD5A00788CED0B32FC /* FBSDKShareError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareError.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h; sourceTree = ""; }; BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - BAD153B7AF61CF6B398EB3FE2E5C2C7D /* PFACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState.h; path = Parse/Internal/ACL/State/PFACLState.h; sourceTree = ""; }; - BAEDA41B80675DA1345DAF6D8F0D4632 /* ParseModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseModule.m; path = Parse/Internal/ParseModule.m; sourceTree = ""; }; - BB64BAB52FC9332856CA17F5ECED7115 /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = ""; }; - BBE9E1940BF9CB7CB79EEC68691D7CC7 /* PFBaseState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBaseState.m; path = Parse/Internal/PFBaseState.m; sourceTree = ""; }; - BC26A40586455BB8DD6BA95710C3486D /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = ""; }; - BCC05D6904CB78C337D61B1211C5BC6F /* PFPurchaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchaseController.m; path = Parse/Internal/Purchase/Controller/PFPurchaseController.m; sourceTree = ""; }; - BD01BA2811FF01AC721F5BD747249BB4 /* PFAnonymousUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils.h; path = Parse/PFAnonymousUtils.h; sourceTree = ""; }; - BD030BCD3379D3A583CB4E1BF4757DAE /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = ""; }; - BD39191E0A16426B7F816A902E3ED1A2 /* PFObjectSubclassingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassingController.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.h; sourceTree = ""; }; - BDA465E9443323180CC1815D1C87C705 /* PFFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFile.m; path = Parse/PFFile.m; sourceTree = ""; }; - BDD02728E44328FBED3ACBA8A76F69A2 /* PFConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfig.m; path = Parse/PFConfig.m; sourceTree = ""; }; - BDD8F3D065CF416DD92F0BB5DE7ADF01 /* PFErrorUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFErrorUtilities.h; path = Parse/Internal/PFErrorUtilities.h; sourceTree = ""; }; - BE5646EAD6FEC69BB2B3C73D922BED8E /* PFObjectFilePersistenceController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFilePersistenceController.m; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.m; sourceTree = ""; }; - BE9F0035470C161A4516449709B0853A /* PFDefaultACLController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDefaultACLController.m; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.m; sourceTree = ""; }; + BAD0E25E939779D3CB767BDACE17F6F7 /* PFPushPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushPrivate.h; path = Parse/Internal/Push/PFPushPrivate.h; sourceTree = ""; }; + BADE0370EA2CCD1D36599137E9D79FB3 /* FBSDKShareOpenGraphValueContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphValueContainer.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m; sourceTree = ""; }; + BB00D6E02A224030D5BDFAF952816C36 /* libFBSDKLoginKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKLoginKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + BB0CA4DECDBC711B22322A480B4D2DB0 /* PFAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAssert.h; path = Parse/Internal/PFAssert.h; sourceTree = ""; }; + BB1463FA77383563F1C437523A44E1A7 /* FBSDKAccessTokenCacheV3_21.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_21.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m; sourceTree = ""; }; + BB557FE6B9E9C5D59E6A3DEB4AB7846E /* FBSDKLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m; sourceTree = ""; }; + BBEEA079EE2C1E3F7FCF0D4A242F3338 /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = ""; }; + BC87F50A886AA4FC59C239579C59B23A /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = ""; }; + BD1C10F7430E7917BD4A2D320618E8FE /* PFQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState.h; path = Parse/Internal/Query/State/PFQueryState.h; sourceTree = ""; }; + BD31E37E459C5578892A42ACCD8A7C99 /* PFSQLiteStatement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteStatement.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.h; sourceTree = ""; }; + BD6248F1913A738A21279EA50BBFB18E /* BFAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererController.m; path = Bolts/iOS/BFAppLinkReturnToRefererController.m; sourceTree = ""; }; + BD77162D04BA4533037493C3BE145CFF /* RKTestFactory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestFactory.m; path = Code/Testing/RKTestFactory.m; sourceTree = ""; }; + BD986CE8B13B8A0C1F133579BB44D141 /* PFURLSessionUploadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionUploadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.h; sourceTree = ""; }; + BDD575E014B1E668BA1B9894C948067E /* PFHTTPURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPURLRequestConstructor.h; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.h; sourceTree = ""; }; + BDDDC367C4FFD9B99B16C912DD808CBE /* PFMutableRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableRelationState.m; path = Parse/Internal/Relation/State/PFMutableRelationState.m; sourceTree = ""; }; + BE80753CE5B8297DCAAA5C864D7D7A5B /* RKMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapping.h; path = Code/ObjectMapping/RKMapping.h; sourceTree = ""; }; + BF4B15119AA437DFDE6F525A227EEEA5 /* PFAnonymousUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousUtils.m; path = Parse/PFAnonymousUtils.m; sourceTree = ""; }; BF59BC15D23E1E1912C8F334E7236813 /* Pods-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-acknowledgements.plist"; sourceTree = ""; }; - BFBAFABD8F6AE7D797021761B45B56BF /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent_Internal.h; path = Bolts/iOS/BFMeasurementEvent_Internal.h; sourceTree = ""; }; - C038B21BF92B30435A80432688533E05 /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = ""; }; - C04006B24886DEDB86D8AA796A957464 /* PFMultiProcessFileLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLock.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.h; sourceTree = ""; }; - C0625656720CAD50DBE306C724DADC69 /* PFFieldOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperation.h; path = Parse/Internal/FieldOperation/PFFieldOperation.h; sourceTree = ""; }; - C2398FB910D7AF39F3C66C51408D84D5 /* PFURLSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession_Private.h; sourceTree = ""; }; - C316ACA67E163041176B415E9B6CD9DD /* PFObjectEstimatedData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectEstimatedData.h; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.h; sourceTree = ""; }; - C394ED14B3FB109EF6BFAA2414984518 /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = ""; }; - C438E8586D1D6C401A986F82E9815270 /* FBSDKLoginConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginConstants.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h; sourceTree = ""; }; - C4850C360C9673CBE290A0841176FD78 /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m; sourceTree = ""; }; - C4D9795941DB7420B09A2A295B29310C /* PFConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfigController.m; path = Parse/Internal/Config/Controller/PFConfigController.m; sourceTree = ""; }; - C5C45B89F5B6C19209EDAD31A79E371D /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = ""; }; - C61DC81C824307F112DA576783266C8B /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = ""; }; - C68D370A7D08931EEB8E723D7B8F35E9 /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = ""; }; - C69C77ABF5CBDE6FAEA65F67DC68806A /* PFCurrentConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentConfigController.h; path = Parse/Internal/Config/Controller/PFCurrentConfigController.h; sourceTree = ""; }; - C6E3A3B7C704403CB94D4FEFBBEEF1B0 /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = ""; }; - C6FDA527EF165EC2D2CA5E44A20F1D00 /* PFAsyncTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAsyncTaskQueue.m; path = Parse/Internal/PFAsyncTaskQueue.m; sourceTree = ""; }; - C71D2C477F3399D3AD1EFD4F9A866DB3 /* PFACLState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState_Private.h; path = Parse/Internal/ACL/State/PFACLState_Private.h; sourceTree = ""; }; - C7971F18FB6165E37A0B729145BD2CE0 /* FBSDKShareDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h; sourceTree = ""; }; - C7984134808FC31A9208D31DFE42B6AF /* FBSDKTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h; sourceTree = ""; }; - C839088F1464046F38572AEA46F43237 /* PFCoreManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCoreManager.m; path = Parse/Internal/PFCoreManager.m; sourceTree = ""; }; - C923F6FD789CB2C9F384405DEACE388F /* ParseManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseManager.h; path = Parse/Internal/ParseManager.h; sourceTree = ""; }; - C934943D7A25BDE5AA3C99D0D0E2D06A /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = ""; }; - C97DF3988890CAEF8564FB45FDC77191 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - C9AFF24120C438CE8768D912A12FE069 /* PFQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState.h; path = Parse/Internal/Query/State/PFQueryState.h; sourceTree = ""; }; - C9E4838EB0ACA07B884CA93AFAD23B44 /* FBSDKLikeBoxBorderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxBorderView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m; sourceTree = ""; }; - CA713D1D956929857B5573815E8B700A /* PFFileDataStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileDataStream.m; path = Parse/Internal/File/FileDataStream/PFFileDataStream.m; sourceTree = ""; }; - CA7489220D6C75107468852C7C0A0D03 /* PFURLSessionDataTaskDelegate_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate_Private.h; sourceTree = ""; }; - CAE37334F4838571A1A3347478DDBD93 /* FBSDKLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h; sourceTree = ""; }; - CC1532E55E3DE39D552270CFBD839CF6 /* PFPaymentTransactionObserver_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver_Private.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h; sourceTree = ""; }; - CCEC1C29226031242E5C3329E7913386 /* PFObjectBatchController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectBatchController.m; path = Parse/Internal/Object/BatchController/PFObjectBatchController.m; sourceTree = ""; }; - CD6F1D91AE76D53924F066A9E871A4E9 /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = ""; }; - CD7F12FF98C15CB2FB25F62797543E56 /* PFDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDataProvider.h; path = Parse/Internal/PFDataProvider.h; sourceTree = ""; }; - CD984CB60274EFFD2FC6F488DBADE377 /* PFEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue.h; path = Parse/Internal/PFEventuallyQueue.h; sourceTree = ""; }; - CDD73DC7AE87074EAEDF09FACACF5104 /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = ""; }; - CDFD024CF43A4AE623C0F5C4BDF1A912 /* PFObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectControlling.h; path = Parse/Internal/Object/Controller/PFObjectControlling.h; sourceTree = ""; }; - CE5A89927105D9819003581D0C8DD06F /* PFConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfigController.h; path = Parse/Internal/Config/Controller/PFConfigController.h; sourceTree = ""; }; - CE802EE1D42445FFBD68FDC5F1B53019 /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = ""; }; - CF322B34A45C7374C6ACB86C793A0977 /* FBSDKShareAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareAPI.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h; sourceTree = ""; }; - CF8B294E2A7B44762772B83EB5F37585 /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = ""; }; - CF97A4EB4D2F59FF601E2BE734C11228 /* FBSDKLoginKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKLoginKit-prefix.pch"; sourceTree = ""; }; - D03015A70D44B37A63401618F5BAE8D3 /* PFFileController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileController.h; path = Parse/Internal/File/Controller/PFFileController.h; sourceTree = ""; }; - D1061A294A0D25A3BFAB4FF7B35C1A9C /* PFObjectFileCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCoder.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.m; sourceTree = ""; }; - D131706344B44D723C0EDC00AD04D9B9 /* PFFile_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile_Private.h; path = Parse/Internal/File/PFFile_Private.h; sourceTree = ""; }; - D13DEF1A34A6346D0D141BE69B48222B /* PFQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryController.m; path = Parse/Internal/Query/Controller/PFQueryController.m; sourceTree = ""; }; - D1936061C906ACCF7096B33BC0F8B8D5 /* PFRelationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationPrivate.h; path = Parse/Internal/Relation/PFRelationPrivate.h; sourceTree = ""; }; - D1F353DA75094169460F4E178D67879F /* BFMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent.h; path = Bolts/iOS/BFMeasurementEvent.h; sourceTree = ""; }; - D200CBDECE639A7FCC23CBA4AA40C197 /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = ""; }; - D20A9EB54DFD244FBACB2A29830F5CC3 /* PFObjectFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCodingLogic.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.h; sourceTree = ""; }; - D22A81EE72C8AF87FA5165920160A541 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = en.lproj; path = Parse/Resources/en.lproj; sourceTree = ""; }; - D24D2A9A2A00617641EB1C9DAF8E5BD9 /* PFObjectSubclassInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassInfo.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.h; sourceTree = ""; }; - D278AD7FDD5A46F106410E751FA6B672 /* Parse.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Parse.xcconfig; sourceTree = ""; }; - D35218557707E188346D1B5F07861524 /* BFTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTask.m; path = Bolts/Common/BFTask.m; sourceTree = ""; }; - D388F363F30D7354C0DD6EF934AEF405 /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = ""; }; - D3B177B3970048B89F03D66264703FDA /* PFUserAuthenticationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationController.h; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.h; sourceTree = ""; }; - D45D3E81C27909856D36BC8D34806CF3 /* PFLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogger.h; path = Parse/Internal/PFLogger.h; sourceTree = ""; }; - D47FDBAD7CB049CA85F42858313FA486 /* FBSDKShareVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideo.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h; sourceTree = ""; }; - D5255CB6CDF2850371E17AAA2A1AB6D7 /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFWebViewAppLinkResolver.m; path = Bolts/iOS/BFWebViewAppLinkResolver.m; sourceTree = ""; }; - D605E91ED4E689A9CCE862F2F178290D /* ParseInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseInternal.h; path = Parse/Internal/ParseInternal.h; sourceTree = ""; }; - D61C8185B740497218D477F278420CDD /* FBSDKCoreKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKCoreKit.xcconfig; sourceTree = ""; }; - D61E6CD1DA3114DB0F3E65D1FD361D36 /* FBSDKAccessTokenCacheV3_21.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_21.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h; sourceTree = ""; }; - D686AFA6A1B571DB6379798EEC41A114 /* FBSDKLikeBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h; sourceTree = ""; }; - D6B6858EBB4F2461F279E542CA9305EF /* PFPushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushState.m; path = Parse/Internal/Push/State/PFPushState.m; sourceTree = ""; }; - D6C799561791E9883CE1451D688B8D98 /* FBSDKShareOpenGraphAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphAction.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m; sourceTree = ""; }; - D6D13D12D3B1AC6E70E2C85B780DA659 /* PFConfig_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig_Private.h; path = Parse/Internal/Config/PFConfig_Private.h; sourceTree = ""; }; - D72924A89C6D36425031B7EB8C451C49 /* PFAnalytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics.h; path = Parse/PFAnalytics.h; sourceTree = ""; }; - D76C0DEC86D6F664834D44A8082E5A6D /* PFErrorUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFErrorUtilities.m; path = Parse/Internal/PFErrorUtilities.m; sourceTree = ""; }; - D81D0AFDE6434123DE6ED1DC6F6BB145 /* PFHTTPURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPURLRequestConstructor.h; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.h; sourceTree = ""; }; - D8814D734B55D0B745B301CCCD84E999 /* FBSDKLoginKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKLoginKit.xcconfig; sourceTree = ""; }; - D91A3470D21870EAF9AE6AF9B98A8CAA /* PFKeyValueCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache.h; sourceTree = ""; }; - D94AA448EE0BB8B639F08787CE1F8480 /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = ""; }; - D950227B3A59DCF16242E75918DC221C /* PFEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyQueue.m; path = Parse/Internal/PFEventuallyQueue.m; sourceTree = ""; }; - D97F582E69FFF8BC67A3DB17D398C9C5 /* PFQueryPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryPrivate.h; path = Parse/Internal/Query/PFQueryPrivate.h; sourceTree = ""; }; - DAAE1F4A9A0A5F773B133BE2D859DCA6 /* FBSDKShareKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKShareKit.xcconfig; sourceTree = ""; }; - DAAE63B311691BDD6651032E86A8597B /* libFBSDKShareKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKShareKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - DACF075638B9FC0CD730644C26FB71E5 /* PFURLConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLConstructor.m; path = Parse/Internal/HTTPRequest/PFURLConstructor.m; sourceTree = ""; }; - DBFBAEBF5E6EDC57B0F60C53E56D90FE /* PFRESTCommand_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand_Private.h; path = Parse/Internal/Commands/PFRESTCommand_Private.h; sourceTree = ""; }; - DD84DEFBFCE10B1818486E633AFAADD3 /* FBSDKLikeButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m; sourceTree = ""; }; - DDB5F6DBCF6A420FE4A916EF00D431E9 /* PFObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectUtilities.h; path = Parse/Internal/Object/Utilities/PFObjectUtilities.h; sourceTree = ""; }; - DDC74E76E8D8BB53B2921A4D81230691 /* PFPushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState.h; path = Parse/Internal/Push/State/PFPushState.h; sourceTree = ""; }; - DE7C9DBCE49E309207C0F6DBBD2FC077 /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h"; sourceTree = ""; }; - DEF1EA4E1F9251BFCF197D8CF0D4A299 /* PFThreadsafety.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFThreadsafety.h; path = Parse/Internal/ThreadSafety/PFThreadsafety.h; sourceTree = ""; }; - DF9A789A3EB2E9881006021046DBA3A5 /* PFQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryState.m; path = Parse/Internal/Query/State/PFQueryState.m; sourceTree = ""; }; - DFB946FBB5587B0F326E668F21F73F3B /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = ""; }; - DFD9CDB1EB349CA71F08124AACE22058 /* PFPinningEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningEventuallyQueue.h; path = Parse/Internal/PFPinningEventuallyQueue.h; sourceTree = ""; }; - DFFD8020EDD3222D365D682FB9C69978 /* FBSDKShareError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareError.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m; sourceTree = ""; }; - DFFDFF65FE7476F1D6C9313962B686E7 /* FBSDKShareButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h; sourceTree = ""; }; - E0856F90FBBE3E20ACD8BC2DC4D7936A /* PFPropertyInfo_Runtime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo_Runtime.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.m; sourceTree = ""; }; - E0B83933AD135BA53C1F2A1BD657DA5A /* FBSDKShareKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareKit.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h; sourceTree = ""; }; - E1339B136ECA6BA809535B109308BBE8 /* PFACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACLState.m; path = Parse/Internal/ACL/State/PFACLState.m; sourceTree = ""; }; - E166AD26497D5B00C94E0891C82C6BD3 /* PFKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeychainStore.h; path = Parse/Internal/PFKeychainStore.h; sourceTree = ""; }; - E195893EFAF6B4D88041C06F7BD32C88 /* PFCurrentObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentObjectControlling.h; path = Parse/Internal/Object/CurrentController/PFCurrentObjectControlling.h; sourceTree = ""; }; - E2B84A286CDFEFD476C028DA645FE8B7 /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = ""; }; - E2BB5322373C1D0A089D6447434E2F01 /* PFLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogging.h; path = Parse/Internal/PFLogging.h; sourceTree = ""; }; - E381E7C31CC253F19B9DBADD0D0C49A6 /* PFURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.h; sourceTree = ""; }; - E39D48341F0F70D7E687A32C109136F4 /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = ""; }; - E40D5277A9FEE4394113FE40E8457989 /* PFPushController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushController.m; path = Parse/Internal/Push/Controller/PFPushController.m; sourceTree = ""; }; - E47AEA771CADAF0F7E1A8716B513852F /* PFRole.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRole.h; path = Parse/PFRole.h; sourceTree = ""; }; - E4D9A54A95B795541832AC67B6AD76BE /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = ""; }; - E4DE147989205694AE9667AACA7AECD9 /* PFTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFTaskQueue.m; path = Parse/Internal/PFTaskQueue.m; sourceTree = ""; }; - E5071678A9FFE38B25984E1DE154CA86 /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h; sourceTree = ""; }; - E543FA1FAC8FAA14119B1F575299C209 /* PFSQLiteDatabaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseController.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.h; sourceTree = ""; }; - E557E21B22E0695434EA0A8BF54D2A5D /* PFRESTQueryCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTQueryCommand.h; path = Parse/Internal/Commands/PFRESTQueryCommand.h; sourceTree = ""; }; - E5CCD914EAF1670C15EFE26F755C80A1 /* PFOperationSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOperationSet.h; path = Parse/Internal/Object/OperationSet/PFOperationSet.h; sourceTree = ""; }; - E5DAF6DF08F79AABABEB6DCD99347D5A /* FBSDKAccessTokenCacheV3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h; sourceTree = ""; }; - E60E681E3152FF31E45D14307138A1F0 /* PFObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObject.h; path = Parse/PFObject.h; sourceTree = ""; }; - E6BB98CFA5D8A318326528AF33DF0BEC /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = ""; }; - E7679EFCB871C367D45B87FF04498A5E /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m; sourceTree = ""; }; - E77CF83F87413203B1BFCA6ED0238DAC /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = ""; }; - E7B7004292F62F0BBD9D137660B5648B /* PFMultiProcessFileLockController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLockController.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.h; sourceTree = ""; }; - E7FFCEEBB5EF7D5A28D81A02BAD268FD /* PFOfflineQueryLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryLogic.h; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.h; sourceTree = ""; }; - E82368CA082B92ADBB3B0DA8C9D29791 /* PFPropertyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo.h; sourceTree = ""; }; - E8397C0E16E68CA9A74B4BBDED56C9C4 /* PFAnalyticsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsController.h; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.h; sourceTree = ""; }; - E8E7C875C6D9ECD9F2B37DCBDFC9B2CD /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h; sourceTree = ""; }; - E91945A365E97AE157FD90FB6032742D /* PFGeoPointPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPointPrivate.h; path = Parse/Internal/PFGeoPointPrivate.h; sourceTree = ""; }; - E921A833B36DAA6D8087D3841D15FC40 /* FBSDKLoginCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginCompletion.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h; sourceTree = ""; }; - E9A152C5D066C52D0A1CFF6EA97C0303 /* PFRESTAnalyticsCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTAnalyticsCommand.m; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.m; sourceTree = ""; }; - E9AE56E8A69F187F40367169FB36AEC6 /* FBSDKAppInviteContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m; sourceTree = ""; }; - EA1EA428E9AD65BC84701D2503ACC121 /* PFACL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACL.h; path = Parse/PFACL.h; sourceTree = ""; }; - EAE1C285AB595843D879319E54ED6E95 /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = ""; }; - EB012283833C25F7392F7395A1DD2D26 /* PFUserFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserFileCodingLogic.h; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.h; sourceTree = ""; }; - EB6A4EB9D35740998C6D23740E612D5C /* PFSessionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionUtilities.m; path = Parse/Internal/Session/Utilities/PFSessionUtilities.m; sourceTree = ""; }; - EB7DACF210125B509F4D6887A2B2D027 /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = ""; }; - EC5644397B97AA444E77A9EB9CFC10E5 /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = ""; }; - EC5B7EA9E38C9FBEE69F5B9C0BC4A0E0 /* PFDevice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDevice.m; path = Parse/Internal/PFDevice.m; sourceTree = ""; }; - EC749D5306636F8078256E3AD6AEF7C7 /* PFPushManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushManager.m; path = Parse/Internal/Push/Manager/PFPushManager.m; sourceTree = ""; }; - ECBD1659924D8AA95D83F0EDE40C2614 /* PFSubclassing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSubclassing.h; path = Parse/PFSubclassing.h; sourceTree = ""; }; - ECDD4925923774BEB4574763291AC558 /* FBSDKCheckmarkIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCheckmarkIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h; sourceTree = ""; }; - ECFFDF4EED9136970053D3F87C287A38 /* PFMutableObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableObjectState.h; path = Parse/Internal/Object/State/PFMutableObjectState.h; sourceTree = ""; }; - ED29B572533174091A28FE94F7BBC738 /* PFInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationController.h; path = Parse/Internal/Installation/Controller/PFInstallationController.h; sourceTree = ""; }; - ED36E7E1EEBAAFFA740A30B12242CA27 /* FBSDKAppInviteDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h; sourceTree = ""; }; - ED57766F65BFA4FA25D7090346C97F28 /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = ""; }; - ED7E4C6BDA278A2EACB4205CFC9A3840 /* BFExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFExecutor.h; path = Bolts/Common/BFExecutor.h; sourceTree = ""; }; - ED97321AD7E6EF7BB46B7C26AFD43451 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - EDB642C66D82496889ED7B13E6DBA70B /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = ""; }; - EDD5CE9B3424920B0391E833E095927E /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView_Internal.h; path = Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h; sourceTree = ""; }; - EDF5AD225C15738985A7A4FFD5F486C9 /* PFEventuallyPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyPin.h; path = Parse/Internal/PFEventuallyPin.h; sourceTree = ""; }; - EE07970368BAD29465F0F84B9B1BBF89 /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = ""; }; - EE30E5F951BC779939012BAD6E3C5693 /* PFCoreDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreDataProvider.h; path = Parse/Internal/PFCoreDataProvider.h; sourceTree = ""; }; - EE40A18D405EDF0DDC2E9EB039576D21 /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = ""; }; - EF274E7B9BD70039B6C19D59B6817F3C /* PFBaseState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBaseState.h; path = Parse/Internal/PFBaseState.h; sourceTree = ""; }; - EF543883C6E0CD2FC7B4528B2C70C269 /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h; sourceTree = ""; }; - EF85D0CB5A209F611DBE0B95DD6E0937 /* PFURLSessionFileDownloadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionFileDownloadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m; sourceTree = ""; }; - F02776DDFE76E235B5AF885797A8F4B7 /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = ""; }; - F060686A92FC706C2AC04A14E7348F4D /* PFSQLiteDatabaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseController.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.m; sourceTree = ""; }; - F0B0CDDA729281358070EBBED9C52BB7 /* PFPushUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushUtilities.m; path = Parse/Internal/Push/Utilites/PFPushUtilities.m; sourceTree = ""; }; - F10C958A391650BD6ABEE08D4D0EF8D8 /* FBSDKLoginManagerLoginResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLoginResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h; sourceTree = ""; }; - F1386E668F6D9A1E7CF872A02649E498 /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTaskCompletionSource.m; path = Bolts/Common/BFTaskCompletionSource.m; sourceTree = ""; }; - F1AF1463AFA83AA08F43ABCD39BF6FFB /* PFBase64Encoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBase64Encoder.m; path = Parse/Internal/PFBase64Encoder.m; sourceTree = ""; }; - F1EF1E16E02ADB82F94F4A9757F01077 /* PFGeoPoint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPoint.h; path = Parse/PFGeoPoint.h; sourceTree = ""; }; - F20CDC41B5A71F131F228EA1F49FAE29 /* PFUserPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserPrivate.h; path = Parse/Internal/User/PFUserPrivate.h; sourceTree = ""; }; - F213A888C3CDCF3160CB878D06CDFD7B /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = ""; }; - F31EC4849CD16E6B48A237BDBB0954FA /* PFConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConstants.m; path = Parse/PFConstants.m; sourceTree = ""; }; - F409B315AFACD2CDD448DFD6401146FC /* PFRelation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelation.h; path = Parse/PFRelation.h; sourceTree = ""; }; - F496DCF5311E5B908DE4C4911C062A01 /* PFPushController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushController.h; path = Parse/Internal/Push/Controller/PFPushController.h; sourceTree = ""; }; - F4EC35BFE04E1EB232697BD6C033CA73 /* FBSDKAccessTokenCacheV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV4.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h; sourceTree = ""; }; - F5599187F396820DE7700A6E7F6E43A9 /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = ""; }; - F64699881A4C5A9980C295DDA013D4DA /* PFFieldOperationDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperationDecoder.m; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.m; sourceTree = ""; }; - F7A8AFB90B055F7CA759BA8AC799303F /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = ""; }; - F7D4CB9368BD8EF802C21EAB26119104 /* BFCancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationToken.h; path = Bolts/Common/BFCancellationToken.h; sourceTree = ""; }; - F7D6DF824B91053634D56B3A1DE837EF /* FBSDKLikeControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeControl.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m; sourceTree = ""; }; - F814D3C39AD10478EC573697C25159A8 /* PFMutableObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableObjectState.m; path = Parse/Internal/Object/State/PFMutableObjectState.m; sourceTree = ""; }; - F83E67F4212B6068698963474A88BBC6 /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = ""; }; - F8F8D92E9BF54CF0325CDBF3A13F511C /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.release.xcconfig; sourceTree = ""; }; - F9DB8A88D120EF79B711A6D9A60C9735 /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = ""; }; - FA75267D4B40F3809876DEBF3F4D299B /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = ""; }; - FACF0C560352F6EA75B7CEE63BCB2793 /* Bolts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Bolts.m; path = Bolts/Common/Bolts.m; sourceTree = ""; }; - FAD786BC4ACCD93AEF869C440819A61D /* Parse-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Parse-Private.xcconfig"; sourceTree = ""; }; - FB0644F2C0DBFC0141F618380733B87C /* libFBSDKLoginKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKLoginKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - FB20A82F1DA5086B118A419F8A505588 /* PFAnalyticsUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsUtilities.m; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.m; sourceTree = ""; }; - FB4DE0ABD27878F01E20805AF9C9D6FC /* PFMulticastDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMulticastDelegate.m; path = Parse/Internal/PFMulticastDelegate.m; sourceTree = ""; }; - FB8484337705B68B729961116D8780FF /* PFCommandResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandResult.m; path = Parse/Internal/PFCommandResult.m; sourceTree = ""; }; - FBE9B1CE32D01F9E50A891EA8A4513A7 /* FBSDKURLConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m; sourceTree = ""; }; - FC1407E7292FD644B5484C9433F82629 /* PFFileDataStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileDataStream.h; path = Parse/Internal/File/FileDataStream/PFFileDataStream.h; sourceTree = ""; }; - FCC45D5098F99503478D96062E9B86BB /* PFLocationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLocationManager.m; path = Parse/Internal/PFLocationManager.m; sourceTree = ""; }; - FD0EBED5DD6CD15CFA67F054ABDCDD72 /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = ""; }; - FD462163039488768F58B0E9E27E6C43 /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = ""; }; - FD87D91BF55E5388FB9F03A3ADE8B577 /* PFMutableUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableUserState.m; path = Parse/Internal/User/State/PFMutableUserState.m; sourceTree = ""; }; - FE64BADD703C143B203FA8E00FD8FAD4 /* BFURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFURL.m; path = Bolts/iOS/BFURL.m; sourceTree = ""; }; - FF936D8AE384A20B5E843F162679EC85 /* PFInstallationConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationConstants.m; path = Parse/Internal/Installation/Constants/PFInstallationConstants.m; sourceTree = ""; }; + BFEEFBE1C37274DCC4828D82311AF40C /* PFObjectLocalIdStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectLocalIdStore.h; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h; sourceTree = ""; }; + C01586B6345CA4AB19014D467EAE9DBA /* Parse-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Parse-Private.xcconfig"; sourceTree = ""; }; + C061A6821D5496664B815D95E9686638 /* PFDevice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDevice.m; path = Parse/Internal/PFDevice.m; sourceTree = ""; }; + C139C86AEBB76931A158BC183F46D15F /* PFMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMacros.h; path = Parse/Internal/PFMacros.h; sourceTree = ""; }; + C18CECEFC7124D4D8DB78DDCA56F3E73 /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h; sourceTree = ""; }; + C1DF7803D01DBA25AC3A304B97A1450B /* PFMutableUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableUserState.h; path = Parse/Internal/User/State/PFMutableUserState.h; sourceTree = ""; }; + C2050A5F83DE9760D514859F3A7AC930 /* PFAnalytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalytics.m; path = Parse/PFAnalytics.m; sourceTree = ""; }; + C21A8ADE7B5A34350D10B56CD7A8761D /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h"; sourceTree = ""; }; + C2709A1DF844E63FBEB934E9A24FAA66 /* PFBaseState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBaseState.m; path = Parse/Internal/PFBaseState.m; sourceTree = ""; }; + C2C5BFAAE603122C4F742787E40F1FA8 /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = ""; }; + C3209F7B3A0C5594C5382D2E17A02B97 /* FBSDKShareOpenGraphValueContainer+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareOpenGraphValueContainer+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h"; sourceTree = ""; }; + C45A766C3A6755202AD9BF0DD47F95E9 /* RKValueTransformers.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RKValueTransformers.xcconfig; sourceTree = ""; }; + C487CF8BD9293F62ADC3EC7ED11DF7E2 /* FBSDKSystemAccountStoreAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSystemAccountStoreAdapter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m; sourceTree = ""; }; + C4B17C271B89B911A8934903A0081DAB /* FBSDKLikeBoxBorderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxBorderView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h; sourceTree = ""; }; + C4B61A09FCB4522CC4CD9D7C2BA8A566 /* PFPushController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushController.h; path = Parse/Internal/Push/Controller/PFPushController.h; sourceTree = ""; }; + C53B22331817009F0D1E49A90BC5F35C /* FBSDKShareOpenGraphContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h; sourceTree = ""; }; + C5558E780E37E74781BB1613EF8D6F1A /* BFAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererController.h; path = Bolts/iOS/BFAppLinkReturnToRefererController.h; sourceTree = ""; }; + C565C7D7E5AC00E6AB9CDCF110BC3C25 /* FBSDKLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m; sourceTree = ""; }; + C5BAEE02437FF882C669F3417F738447 /* RKRequestDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRequestDescriptor.h; path = Code/Network/RKRequestDescriptor.h; sourceTree = ""; }; + C6A1B35A988D4E5D81E613F216581696 /* PFCurrentUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentUserController.h; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.h; sourceTree = ""; }; + C6AF838FA7C570391A36438E785BD121 /* ParseModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseModule.m; path = Parse/Internal/ParseModule.m; sourceTree = ""; }; + C6D760F3CA5FB942A7E23EA61A3C62A7 /* FBSDKShareDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h; sourceTree = ""; }; + C7249D4C5D5FE59893DC804D17C271BD /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m; sourceTree = ""; }; + C7A3C431941CA5458B46FDA87ADD17E9 /* TKStateMachine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKStateMachine.h; path = Code/TKStateMachine.h; sourceTree = ""; }; + C8A64817A3F904FC394ADA0E162D3FCF /* FBSDKShareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKShareKit-dummy.m"; sourceTree = ""; }; + C8ABE6E22040D86F536BA83C9995342B /* PFRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelationState.m; path = Parse/Internal/Relation/State/PFRelationState.m; sourceTree = ""; }; + C8E979B43D80A6C9E821A1BD3B0C7F51 /* BFExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFExecutor.h; path = Bolts/Common/BFExecutor.h; sourceTree = ""; }; + C8EEE74C77FC0E8CCF6F9BF61F91F077 /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = ""; }; + C928A35FC17069C2883652CB9DFD6587 /* FBSDKLikeControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeControl.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m; sourceTree = ""; }; + C9DA1DBC1BE40D87F0CDE1566117504D /* PFURLSessionDataTaskDelegate_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate_Private.h; sourceTree = ""; }; + CA8AF7DF58F69854AA20C03B140C8802 /* PFPaymentTransactionObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPaymentTransactionObserver.m; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.m; sourceTree = ""; }; + CAAEEA7D83368AA927E7EBCBA6F4E80E /* RKPaginator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPaginator.m; path = Code/Network/RKPaginator.m; sourceTree = ""; }; + CB0A624CCA1DF78752962F81F06BF119 /* PFKeyValueCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache.h; sourceTree = ""; }; + CB2EAD42AB8183945FC7A12E3FAE1960 /* PFAnalyticsUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsUtilities.h; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.h; sourceTree = ""; }; + CB3C48DDBE655AE51D1A39695796468E /* RKResponseMapperOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKResponseMapperOperation.h; path = Code/Network/RKResponseMapperOperation.h; sourceTree = ""; }; + CB54CB2CBAE86A6D529C60250C8243A7 /* PFCurrentConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentConfigController.m; path = Parse/Internal/Config/Controller/PFCurrentConfigController.m; sourceTree = ""; }; + CBBCDC44D6533386C15445A8DA75780F /* PFCommandRunningConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunningConstants.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.m; sourceTree = ""; }; + CBCE8C9C024E2B9BFFE1FA847AB1076D /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = ""; }; + CC29231A76F0E95942D3AC8EE9C06770 /* RKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMacros.h; path = Code/Support/RKMacros.h; sourceTree = ""; }; + CC80DEFA3FC6190520C4E802B4E816FE /* RKMIMETypeSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMIMETypeSerialization.h; path = Code/Support/RKMIMETypeSerialization.h; sourceTree = ""; }; + CC83F9AD4B07940AAE2F264DD04DD1BF /* PFRESTCloudCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCloudCommand.m; path = Parse/Internal/Commands/PFRESTCloudCommand.m; sourceTree = ""; }; + CCB66A62E1727B274EBDAE6A324F1EF1 /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = ""; }; + CDABF5602F0E0D707DDD4224CB032D0E /* RKRoute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRoute.m; path = Code/Network/RKRoute.m; sourceTree = ""; }; + CE5437B74A760E4237FFB7AD86EA7AF5 /* PFAnonymousUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils.h; path = Parse/PFAnonymousUtils.h; sourceTree = ""; }; + CF467117B925DD3A53A0AD66F813DD90 /* PFRESTUserCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTUserCommand.h; path = Parse/Internal/Commands/PFRESTUserCommand.h; sourceTree = ""; }; + CF5556B51CED2BB029915A1874EE32A9 /* PFEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyQueue.m; path = Parse/Internal/PFEventuallyQueue.m; sourceTree = ""; }; + CF7DFB4A5A35BCE03D459F72C536D132 /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = ""; }; + D06E4D2A257CB23AD3B3C24D65250338 /* FBSDKMessengerIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessengerIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h; sourceTree = ""; }; + D13A070075F2FA180B529D107DC47AA7 /* PFPushController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushController.m; path = Parse/Internal/Push/Controller/PFPushController.m; sourceTree = ""; }; + D145E83E2215C35E1D66DCFD70095EAE /* RKRouter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRouter.m; path = Code/Network/RKRouter.m; sourceTree = ""; }; + D14ECFF1D93FDFE7D398C60C541D4D42 /* PFCachedQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCachedQueryController.m; path = Parse/Internal/Query/Controller/PFCachedQueryController.m; sourceTree = ""; }; + D17108F7FF6F90BEA80F4639A3F398E4 /* Parse_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse_Private.h; path = Parse/Internal/Parse_Private.h; sourceTree = ""; }; + D20725012BA649DB28A11E8B87CB03B2 /* FBSDKShareConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareConstants.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m; sourceTree = ""; }; + D2121C834D82A31D9AC3183B2DCB31BB /* PFURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSession.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.m; sourceTree = ""; }; + D2C830B4D9FDB6DA319A8D346A942692 /* FBSDKURLConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m; sourceTree = ""; }; + D2CCB0DEA880EFF0D0EF2B11C7E41029 /* PFObjectFileCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCoder.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.m; sourceTree = ""; }; + D2FD3D5C2EE761325B9883A907C8BC4E /* FBSDKAppGroupJoinDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupJoinDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h; sourceTree = ""; }; + D344D9A38E931E18FB1095D2364E21E6 /* RKDotNetDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDotNetDateFormatter.h; path = Code/Support/RKDotNetDateFormatter.h; sourceTree = ""; }; + D3C357F8599ACB541583E1B55372A148 /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = ""; }; + D3C4E0A343874015ABB97CF3BB6C0347 /* FBSDKShareOpenGraphObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphObject.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h; sourceTree = ""; }; + D3DE4E8FCBBE262C58F8AC13C7DF4FC0 /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = ""; }; + D483D1D469EA00BF8839FA7029495D60 /* RKTestNotificationObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestNotificationObserver.h; path = Code/Testing/RKTestNotificationObserver.h; sourceTree = ""; }; + D497D888360D61A9F64F2DBB2A1FC8F0 /* RKTestNotificationObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestNotificationObserver.m; path = Code/Testing/RKTestNotificationObserver.m; sourceTree = ""; }; + D4BBD3B141794583886966E10E9DE885 /* BFAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink.h; path = Bolts/iOS/BFAppLink.h; sourceTree = ""; }; + D4EDDE3B74C6C46CB945C40C67C4412A /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = ""; }; + D58141339BD4E1AD139F6D8757D818ED /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = ""; }; + D587648C0089A8E5FF455C97FF2B368E /* RKTestHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestHelpers.m; path = Code/Testing/RKTestHelpers.m; sourceTree = ""; }; + D5CFF5109E2B6B4C6F5E6087969F25B2 /* BFExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFExecutor.m; path = Bolts/Common/BFExecutor.m; sourceTree = ""; }; + D5D5CF2EDCF3EFE196B7789A29C02031 /* PFPinningEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningEventuallyQueue.h; path = Parse/Internal/PFPinningEventuallyQueue.h; sourceTree = ""; }; + D5E9B76418458E7F379CF5FBBC3F3B16 /* BFCancellationTokenSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenSource.m; path = Bolts/Common/BFCancellationTokenSource.m; sourceTree = ""; }; + D5F1C1D5F2030DAAB3B584BA7D15297F /* PFPushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushState.m; path = Parse/Internal/Push/State/PFPushState.m; sourceTree = ""; }; + D5F4A79DAE04667AB0D76DAE48003BF2 /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m; sourceTree = ""; }; + D6264AE68EC2461B52D7BC087CC60C51 /* ObjectMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ObjectMapping.h; path = Code/ObjectMapping.h; sourceTree = ""; }; + D65F4C0A6ED3ABC94426B9A2AFEA2790 /* FBSDKShareVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideo.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h; sourceTree = ""; }; + D68740C3275B619CD6272922B9616689 /* RestKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RestKit.h; path = Code/RestKit.h; sourceTree = ""; }; + D6D2578CC6CCBAA314053520BEEDFC51 /* FBSDKURLConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h; sourceTree = ""; }; + D7084EA8F2963F3F4F4C3902295FC9E8 /* FBSDKCheckmarkIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCheckmarkIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m; sourceTree = ""; }; + D72FC75ED7ED1ECBB9A34AC1705CE17D /* RKDictionaryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDictionaryUtilities.m; path = Code/Support/RKDictionaryUtilities.m; sourceTree = ""; }; + D744AFD793804AF3C84822508F5A5B1F /* PFUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUser.h; path = Parse/PFUser.h; sourceTree = ""; }; + D769A22F6A1292EAFD89F93A0686D653 /* PFDefaultACLController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDefaultACLController.h; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.h; sourceTree = ""; }; + D7B4BAE18CF4FF92FDA44D8959B272B0 /* PFQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryState.m; path = Parse/Internal/Query/State/PFQueryState.m; sourceTree = ""; }; + D87881EF697A62AD256CC2A668F12186 /* FBSDKShareKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKShareKit.xcconfig; sourceTree = ""; }; + D8BDF9D0A4444BAF6AB702315EC72D13 /* Parse.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Parse.xcconfig; sourceTree = ""; }; + D95D996872847740808B245E124F33D4 /* PFCoreManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCoreManager.m; path = Parse/Internal/PFCoreManager.m; sourceTree = ""; }; + D99237E043D8D55F742E4FFCE42D91BF /* FBSDKAppGroupJoinDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupJoinDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m; sourceTree = ""; }; + D9F3737F5623A34BD5AFA78E4B1901AB /* PFFileDataStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileDataStream.m; path = Parse/Internal/File/FileDataStream/PFFileDataStream.m; sourceTree = ""; }; + DA7FDF51B3213CFC74F679CD912F8009 /* PFDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDecoder.h; path = Parse/Internal/PFDecoder.h; sourceTree = ""; }; + DB12D985E758C1B2AC5996A8F052C26D /* PFRESTObjectCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectCommand.m; path = Parse/Internal/Commands/PFRESTObjectCommand.m; sourceTree = ""; }; + DB3CBBE18B7CB09688F235F3EB9C71FD /* PFRESTFileCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTFileCommand.m; path = Parse/Internal/Commands/PFRESTFileCommand.m; sourceTree = ""; }; + DC31DCE7EACED0F72777050473D30EFC /* FBSDKLikeButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m; sourceTree = ""; }; + DC32DADD67B93D4C8A1DC5D924364B07 /* RKMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMapping.m; path = Code/ObjectMapping/RKMapping.m; sourceTree = ""; }; + DC4F66E6A3F1DC8F241BBC37BD38824F /* PFACL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACL.m; path = Parse/PFACL.m; sourceTree = ""; }; + DCCA1D25CC0F8A31965C4458FA970C52 /* PFOperationSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOperationSet.h; path = Parse/Internal/Object/OperationSet/PFOperationSet.h; sourceTree = ""; }; + DD19C370DA2FF7DD5B14BFC2239460EC /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = ""; }; + DD2F082EFF4A90CEA1BD4B18821FD489 /* RKMapperOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMapperOperation.m; path = Code/ObjectMapping/RKMapperOperation.m; sourceTree = ""; }; + DDDB9F88EE4CF34E81AA150F326D12F8 /* PFGeoPointPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPointPrivate.h; path = Parse/Internal/PFGeoPointPrivate.h; sourceTree = ""; }; + DDFFCC76652A57F8AC82219E905AF11A /* PFMutableFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableFileState.h; path = Parse/Internal/File/State/PFMutableFileState.h; sourceTree = ""; }; + DE504CDBAE4E729CE6138680BEA8131C /* PFBase64Encoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBase64Encoder.h; path = Parse/Internal/PFBase64Encoder.h; sourceTree = ""; }; + DE5E904CC7ED8533B3A17E70BFCCDB42 /* PFSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSession.m; path = Parse/PFSession.m; sourceTree = ""; }; + DE8B4CF37AFF88C9FFCC3ECBFB68A45B /* PFObjectLocalIdStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectLocalIdStore.m; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.m; sourceTree = ""; }; + DEC313363BCD979A9C39D7B1E66A2755 /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = ""; }; + DEF44C93EA8108B4B9EFC4B4644446CF /* RKConnectionTestExpectation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKConnectionTestExpectation.m; path = Code/Testing/RKConnectionTestExpectation.m; sourceTree = ""; }; + DFA8A38F2CAE4CCC62494E192CD68C97 /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = ""; }; + E01BDF8B06C7ABC8B0E2C8198B12534E /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = ""; }; + E067CA9E21A26662DA824DAC1A521DD1 /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = ""; }; + E06C7256FA983EDE2D306A89B041DEB9 /* PFDefaultACLController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDefaultACLController.m; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.m; sourceTree = ""; }; + E07CBEB86CA06BB0017BCA02C44A2757 /* FBSDKSharingContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h; sourceTree = ""; }; + E0932D59414A78A0F565507651988C6E /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m; sourceTree = ""; }; + E0CC0033498B3D96CF358C75CCE120A9 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.release.xcconfig; sourceTree = ""; }; + E1030CCC0775734985138AF667D21E88 /* PFAsyncTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAsyncTaskQueue.h; path = Parse/Internal/PFAsyncTaskQueue.h; sourceTree = ""; }; + E10BAEA96BC88D721B89668384A854DF /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = ""; }; + E11FE2BB216DD98CBF3928F8E5E9A85B /* lcl_RK.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = lcl_RK.m; path = Vendor/LibComponentLogging/Core/lcl_RK.m; sourceTree = ""; }; + E15937F78BA7C53854BA468EA624BF4A /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = ""; }; + E170DFE0763897F12B0B3762F62DFCAD /* PFOfflineQueryLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryLogic.m; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m; sourceTree = ""; }; + E201DE8EA287BAFA4B7303204B5FE3C9 /* RKMappingOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingOperation.m; path = Code/ObjectMapping/RKMappingOperation.m; sourceTree = ""; }; + E22F95FAB4E982B3ABA1D6CB8C422794 /* RKObjectRequestOperationSubclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectRequestOperationSubclass.h; path = Code/Network/RKObjectRequestOperationSubclass.h; sourceTree = ""; }; + E2590DB19BEB23E0CD50EA9B430C4328 /* BFMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent.h; path = Bolts/iOS/BFMeasurementEvent.h; sourceTree = ""; }; + E2775131C0FDB72FDE0A1D5A4A819778 /* RKURLEncodedSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKURLEncodedSerialization.h; path = Code/Support/RKURLEncodedSerialization.h; sourceTree = ""; }; + E29A4EC1C5F11EA0A4FDAD2152F177FA /* FBSDKLoginKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginKit.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h; sourceTree = ""; }; + E2BB3CB62DEEB960D69BA58C987EF78C /* ParseManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseManager.h; path = Parse/Internal/ParseManager.h; sourceTree = ""; }; + E331A609413384712D37CBCA13A36822 /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = ""; }; + E42493F5FC02B368E66187F7D3E72719 /* PFRESTFileCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTFileCommand.h; path = Parse/Internal/Commands/PFRESTFileCommand.h; sourceTree = ""; }; + E4437BD232D035D19C87DFB253692F24 /* Bolts.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bolts.xcconfig; sourceTree = ""; }; + E4A2A7B215D83EE4A1A7A17F363D6C87 /* PFPushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState.h; path = Parse/Internal/Push/State/PFPushState.h; sourceTree = ""; }; + E4FFF0B95027627ED5EBB9BE910229E5 /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = ""; }; + E51BB433D7AADF8C023202546330704A /* RKTestFixture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestFixture.h; path = Code/Testing/RKTestFixture.h; sourceTree = ""; }; + E541C23946CA00EF697F8FA44AB271F6 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; + E54E8701407F893752653C4221AF069C /* FBSDKTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h; sourceTree = ""; }; + E574880420D8D97A424642A6B5F02579 /* RKResponseMapperOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKResponseMapperOperation.m; path = Code/Network/RKResponseMapperOperation.m; sourceTree = ""; }; + E595FE8D26A832FC9181FB8DCFDE506B /* PFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkActivityIndicatorManager.h; path = Parse/PFNetworkActivityIndicatorManager.h; sourceTree = ""; }; + E5B4019C9415D7F5E3578EB347E6428C /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = ""; }; + E6A2CBA1A14A6AA1202E7B5CCEFA3C2B /* PFRESTPushCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTPushCommand.m; path = Parse/Internal/Commands/PFRESTPushCommand.m; sourceTree = ""; }; + E7C4A5E56ABED18C3E81AB6301A8CB78 /* RKMIMETypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMIMETypes.h; path = Code/Support/RKMIMETypes.h; sourceTree = ""; }; + E7D83C6103A3717409D4E3BC0251FEE2 /* PFRESTObjectBatchCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectBatchCommand.h; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.h; sourceTree = ""; }; + E82158333A26FE08F2D24FE0960BB5B0 /* PFAnalytics_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics_Private.h; path = Parse/Internal/Analytics/PFAnalytics_Private.h; sourceTree = ""; }; + E85C8888E5F1BB8E85DC368D6DB18999 /* RKPropertyInspector.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyInspector.m; path = Code/ObjectMapping/RKPropertyInspector.m; sourceTree = ""; }; + E89B0E24A3183435D4E3C9EDCC51EDD1 /* PFURLSessionCommandRunner_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner_Private.h; sourceTree = ""; }; + E8F3BB2B68E1034BACF1F5A876795E78 /* PFMutablePushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutablePushState.h; path = Parse/Internal/Push/State/PFMutablePushState.h; sourceTree = ""; }; + E94E46525AFB5C84058140D261543E17 /* RKObjectManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectManager.m; path = Code/Network/RKObjectManager.m; sourceTree = ""; }; + EA6CB7DF499DDA0B9313150859AD14F0 /* ISO8601DateFormatterValueTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ISO8601DateFormatterValueTransformer.m; path = Code/ISO8601DateFormatterValueTransformer.m; sourceTree = ""; }; + EAE092C23A177A30D41277E3E2532CFE /* AFHTTPClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPClient.h; path = AFNetworking/AFHTTPClient.h; sourceTree = ""; }; + EAF2E74037EC3A295A7DD2A670A1D20C /* FBSDKAccessTokenCacheV3_17.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_17.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h; sourceTree = ""; }; + EB1F007AC472787A75B816C5E983D202 /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = ""; }; + EC0A8BE947E2CBB52F80DE18D474CE39 /* RKManagedObjectRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKManagedObjectRequestOperation.m; path = Code/Network/RKManagedObjectRequestOperation.m; sourceTree = ""; }; + EC2DB7FD65BD1EA61BB08642939C3DDC /* RKISO8601DateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKISO8601DateFormatter.h; path = Code/RKISO8601DateFormatter.h; sourceTree = ""; }; + ECBDBCED6B21C2F082743CDE93ECBC76 /* RKObjectManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectManager.h; path = Code/Network/RKObjectManager.h; sourceTree = ""; }; + ECFE14B9E600B66B7CAFD3D9A64F4B3D /* PFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFNetworkActivityIndicatorManager.m; path = Parse/PFNetworkActivityIndicatorManager.m; sourceTree = ""; }; + ED23ACC2E4D25AF32F09735D7343AC88 /* RestKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RestKit-prefix.pch"; sourceTree = ""; }; + ED9EAFA1C9FBC36E305EEEA43B7A8CE6 /* AFURLConnectionOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLConnectionOperation.m; path = AFNetworking/AFURLConnectionOperation.m; sourceTree = ""; }; + EDDDD080107F9241868C257E03522C93 /* PFCategoryLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCategoryLoader.h; path = Parse/Internal/PFCategoryLoader.h; sourceTree = ""; }; + EE4A34C51200E57B9DBB1BE412048AE7 /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h; sourceTree = ""; }; + EE70C5E8CCF28AFCC633F82542872D63 /* FBSDKLikeBoxBorderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxBorderView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m; sourceTree = ""; }; + EE91C76BB85C4E576878A7495046B128 /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = ""; }; + EEC81F732F4810E132758A0C613E431B /* RKPaginator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPaginator.h; path = Code/Network/RKPaginator.h; sourceTree = ""; }; + EEE62E07048808E1B20ADEC99B4B70FD /* PFCommandCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache_Private.h; path = Parse/Internal/PFCommandCache_Private.h; sourceTree = ""; }; + EF3885FD8EAFFBF7986ADCB2A2DE77DF /* PFErrorUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFErrorUtilities.m; path = Parse/Internal/PFErrorUtilities.m; sourceTree = ""; }; + EF5B4118C2BC93EF32D39A9E3A70073F /* RKNSJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKNSJSONSerialization.h; path = Code/Support/RKNSJSONSerialization.h; sourceTree = ""; }; + EF76AEC2726221DE7C0236DFE4624164 /* BFDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFDefines.h; path = Bolts/Common/BFDefines.h; sourceTree = ""; }; + EF991FB054D4075F98BB9A0E7C563C58 /* BFTask+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BFTask+Private.h"; path = "Parse/Internal/BFTask+Private.h"; sourceTree = ""; }; + EFC051FCD89B2186BB961E6FB8B61530 /* PFAnalyticsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsController.h; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.h; sourceTree = ""; }; + EFDEA5FDB2DF43C329614190E12D5AC8 /* BFTask+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "BFTask+Private.m"; path = "Parse/Internal/BFTask+Private.m"; sourceTree = ""; }; + EFEED10CE7DA52BCCBBE06BCDFF31654 /* PFACLState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState_Private.h; path = Parse/Internal/ACL/State/PFACLState_Private.h; sourceTree = ""; }; + F0030B71A6DC75CE9672B5AFBC38BCF4 /* FBSDKShareLinkContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareLinkContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h; sourceTree = ""; }; + F008693162E318C7C2752AD302CFB95E /* RKDictionaryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDictionaryUtilities.h; path = Code/Support/RKDictionaryUtilities.h; sourceTree = ""; }; + F00F8677E748167A500D4089850612F1 /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = ""; }; + F0CB4E3EC1ACD76F2309A54B490DF091 /* TKTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKTransition.h; path = Code/TKTransition.h; sourceTree = ""; }; + F13165336A9173E2A3C4790AB7CC7975 /* AFURLConnectionOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLConnectionOperation.h; path = AFNetworking/AFURLConnectionOperation.h; sourceTree = ""; }; + F15AA0B0FAA03DD30C07E23D2030823C /* PFOfflineQueryLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryLogic.h; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.h; sourceTree = ""; }; + F21D0FB2302BFB55563A040B9162207A /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = ""; }; + F34EDF50D35D822209224F910D198B22 /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h; sourceTree = ""; }; + F3ABB736CD9D5E94B6350679B5554ED2 /* PFPinningObjectStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningObjectStore.m; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.m; sourceTree = ""; }; + F43593C0DC2EA028CFDED6E93DD31EBD /* RKMIMETypeSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMIMETypeSerialization.m; path = Code/Support/RKMIMETypeSerialization.m; sourceTree = ""; }; + F492164F566E8CFCD2E106F61A435A12 /* FBSDKLikeObjectType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeObjectType.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m; sourceTree = ""; }; + F49F7453B2E504EC63FDF48EFAA54EEA /* ISO8601DateFormatterValueTransformer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ISO8601DateFormatterValueTransformer-prefix.pch"; sourceTree = ""; }; + F5243AD5D9D864456CBD961BC945843F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; + F5A2FEDDD4FAA9868A664F18973566D7 /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h; sourceTree = ""; }; + F5BD02FE7C99C9BD2CBC566B75BB0558 /* RKValueTransformers-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RKValueTransformers-prefix.pch"; sourceTree = ""; }; + F6235B81BCC7427EC393417D0676C7DD /* Network.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Network.h; path = Code/Network.h; sourceTree = ""; }; + F651120BBA44138D57BED00C2ED1EF68 /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = ""; }; + F6A9C4685A290C880CDE1428A25FAC30 /* PFURLSessionJSONDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionJSONDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m; sourceTree = ""; }; + F6D944F1DD0E0308EA2EEB932E7DD509 /* PFMulticastDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMulticastDelegate.m; path = Parse/Internal/PFMulticastDelegate.m; sourceTree = ""; }; + F73ADC2CD4C8BD33E777C07D6362654C /* FBSDKShareDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDefines.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h; sourceTree = ""; }; + F747176FC803B53FE0AC39C84633F516 /* FBSDKLoginButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginButton.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m; sourceTree = ""; }; + F86021BC8DF5012821F54BBFC611409E /* FBSDKLoginConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginConstants.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h; sourceTree = ""; }; + F94D8E2DD631C64B847B40AEA78E1AA0 /* PFRESTObjectCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectCommand.h; path = Parse/Internal/Commands/PFRESTObjectCommand.h; sourceTree = ""; }; + F9A46E7E5599417031AAC9FDEE8F6162 /* RKRelationshipMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRelationshipMapping.h; path = Code/ObjectMapping/RKRelationshipMapping.h; sourceTree = ""; }; + F9D22C63BFA5923A93E8E8A351BB6819 /* PFCommandRunningConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunningConstants.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h; sourceTree = ""; }; + F9D67943D4B100689C01F858F4E29E79 /* FBSDKLikeActionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionController.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m; sourceTree = ""; }; + FA90F3562F16E440E91FA13E29FED87A /* RKValueTransformers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKValueTransformers.m; path = Code/RKValueTransformers.m; sourceTree = ""; }; + FA96D6D6ED3962673257FD4308045B34 /* PFFieldOperationDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperationDecoder.m; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.m; sourceTree = ""; }; + FAE0A480CEB462BDB4902AA2752B2A92 /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = ""; }; + FAE37FC3EE513E9BA389914278408CEE /* PFBaseState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBaseState.h; path = Parse/Internal/PFBaseState.h; sourceTree = ""; }; + FAF5EBA356BB1361627763A0C3E4FBA8 /* RKValueTransformers-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "RKValueTransformers-Private.xcconfig"; sourceTree = ""; }; + FB33D66AAC9C445AC92D82EBA294DB85 /* PFRESTSessionCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTSessionCommand.h; path = Parse/Internal/Commands/PFRESTSessionCommand.h; sourceTree = ""; }; + FBD4CF261D1D2C204727792A7FD59D0D /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = ""; }; + FBEDC82BBD883110BC94F1B62D5DCF07 /* FBSDKLoginKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKLoginKit.xcconfig; sourceTree = ""; }; + FC75AD2CED5E67E206316FE8FCE7F2E8 /* FBSDKShareButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m; sourceTree = ""; }; + FD329036B04DED5ACADFC2A64E1A81E3 /* RestKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RestKit-dummy.m"; sourceTree = ""; }; + FD42CC4829F51D2B45C0EDB14E79F901 /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = ""; }; + FDA229BC6CB4CA9634C3016F0381557F /* PFUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUser.m; path = Parse/PFUser.m; sourceTree = ""; }; + FDF516C0EA3056B223310D7DB2C26681 /* BFTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTask.m; path = Bolts/Common/BFTask.m; sourceTree = ""; }; + FE7E4B7205CCF39AB7DC993A7C496D35 /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = ""; }; + FF1FEA7B2F9CA31ED6080705A2EA6A8C /* PFSQLiteDatabaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseController.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.h; sourceTree = ""; }; + FF2F36415F8EDA1603770F277D605DAC /* BFAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView.h; path = Bolts/iOS/BFAppLinkReturnToRefererView.h; sourceTree = ""; }; + FF73D26B160755CAA42F2FFC56C91E1E /* PFPropertyInfo_Runtime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo_Runtime.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.m; sourceTree = ""; }; + FF8B340E1E07288B43D2125E1C95D71E /* FBSDKAccessTokenCacheV3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h; sourceTree = ""; }; + FFBF77D48AFB428DB4B14BBA73842CB2 /* PFConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConstants.h; path = Parse/PFConstants.h; sourceTree = ""; }; + FFEAA8C456F1D711FDBADC3559935B4B /* RKObjectParameterization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectParameterization.h; path = Code/Network/RKObjectParameterization.h; sourceTree = ""; }; + FFF54AC023F4C0A168EAB14AF0DF8197 /* PFRelation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelation.h; path = Parse/PFRelation.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 52B566C3F38D88DAE6CB3B0099A0DB2D /* Frameworks */ = { + 1352CC7061D4378F37147BC6CBF04E73 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2D9E2BCFF95F68987970E71AF56BA281 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1762E4D7A46B35D56224AE0D4FAC1493 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8BF3DC4F915897B5B26F59D30BBECBA7 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 21C9FCE1B1B99AF519B601587E641B0E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E997FD51BB27FF148B9D243F6804D23 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2BE89E273AB15E7411F78FE25B729E46 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1C33F11DE5031EC30BC119B6B13B39DD /* AudioToolbox.framework in Frameworks */, + 87BB678058E30D83A780091B5FF6FED4 /* CFNetwork.framework in Frameworks */, + 442868FA6C128D7763F07031469240DE /* CoreGraphics.framework in Frameworks */, + C9151DCB3166821A4E47D74D40728411 /* CoreLocation.framework in Frameworks */, + 1419B8B6680E4CE92EECD5657926320D /* Foundation.framework in Frameworks */, + F102D7610DBFCBFE859773DD03FF8408 /* QuartzCore.framework in Frameworks */, + C7AAFF985AB1FDF2B886321D84074282 /* Security.framework in Frameworks */, + F91731D3FF9F75DEA9DF7BAF4D0EFF10 /* StoreKit.framework in Frameworks */, + 5D7131C252349A6120D8813EB747D742 /* SystemConfiguration.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5972652DA8E3CB6256417EE7BCB541BA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DCC1ABB0688AAFDD2FA307053A70B667 /* Foundation.framework in Frameworks */, + C2406F161CC120D07B885E6D8D930DB3 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5931A939FDAB18C661EC31929DC88491 /* Frameworks */ = { + 5994B286A6EC267C5FAEC812F8098E60 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 14F1171052248FD2C9252B38F4081977 /* Foundation.framework in Frameworks */, + B17929E1C88665A99445109C8F92D122 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 93050DA4590BB3C69121F66E0613EF97 /* Frameworks */ = { + 677EAF3CA8C9E0CED61D9E6EFCCE8FDF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 442B88BF438088AE02DEEE713216D7FE /* Foundation.framework in Frameworks */, + E3A082B2A0A8612B107247EC76E801BD /* CFNetwork.framework in Frameworks */, + A754C4958F744E68B858C4D0F1601B43 /* Foundation.framework in Frameworks */, + DA2BAF58CBAF597A7E6562226C6A40BC /* MobileCoreServices.framework in Frameworks */, + 09219068B5A97176CB293592657A1C1F /* Security.framework in Frameworks */, + DA6FEF39DE15D4138126AC5AB7118A35 /* SystemConfiguration.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - C30A5B56F2EB2A290FA16DA8E83058C3 /* Frameworks */ = { + 67CFF8AD8DC741D9FD2BA13A98B8BEF0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 848D32C1394A874780205EE7808526BD /* Foundation.framework in Frameworks */, + 8FE5788EF14F6E44BD11EA5B8C3C1587 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D376342DD6A10F6488BB2E42F69AC518 /* Frameworks */ = { + 967922C4FD7DDAAB49F89A798597354F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5838BA1EB3A53944C6789E9DB9D23428 /* Foundation.framework in Frameworks */, + 9222B3822E8B00EFBEFD4AD8317E09BC /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D97E53C2B2D248D6179FE56627FD0227 /* Frameworks */ = { + 9DDD7991E61142C3AB90621D1CB423EE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 28D77B1E40AF92C0A748B126296A1BC8 /* AudioToolbox.framework in Frameworks */, - C9199F1600296856F0A68EB34DE06DC0 /* CFNetwork.framework in Frameworks */, - F6B2BAA1EB859F859E12AD8449D6A172 /* CoreGraphics.framework in Frameworks */, - B725979258522519ED96E2704A869932 /* CoreLocation.framework in Frameworks */, - 62460A52E60F539997171BABD1A6408C /* Foundation.framework in Frameworks */, - 55549127D15D4850D669B0176FD188AE /* QuartzCore.framework in Frameworks */, - 4E07076710363106C424577587997DC3 /* Security.framework in Frameworks */, - BEB5FEB51FB1A12140DA5E683C2FE8CD /* StoreKit.framework in Frameworks */, - D2FA4F91B4B66C579FAB1CB3BB8D1CBB /* SystemConfiguration.framework in Frameworks */, + 70B06200154E453E2F8B8452DC00F355 /* CoreGraphics.framework in Frameworks */, + 054CF88416097C84057A6427691FE0DA /* Foundation.framework in Frameworks */, + 3127CF609B257C5A3A30B4ADC3D3A7E3 /* MobileCoreServices.framework in Frameworks */, + 6DFA75B508E7E9072ED9E07A19191C5D /* Security.framework in Frameworks */, + 401C0CBB692B03B532B658368BD5C4FB /* SystemConfiguration.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D1EBA5986C45E47299F610E43AEB16C4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6BE2110CA4CBCE143965789B832BA330 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F048AD6BAD593C1E21D93163454F1D6F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2E3687F32FC0947D85010A0575E153D7 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1E0D3B5AF7A67EA2BD6761F1E9EAC65E /* no-arc */ = { + 0130513E0255D02467FEFD0F582D89F7 /* FBSDKCoreKit */ = { + isa = PBXGroup; + children = ( + 25C2C3F30E3A330D39A55F4B043B9186 /* Support Files */, + DB7767554DE90C6D7F4BD0C504716532 /* arc */, + 315BCA9F4FC37F26FCA0A241609C1D8C /* no-arc */, + ); + path = FBSDKCoreKit; + sourceTree = ""; + }; + 02F7B739B92EB301B3782F121C4BA83E /* Parse */ = { + isa = PBXGroup; + children = ( + EF991FB054D4075F98BB9A0E7C563C58 /* BFTask+Private.h */, + EFDEA5FDB2DF43C329614190E12D5AC8 /* BFTask+Private.m */, + 36292F1577420FAA6A00FC1B269D609D /* PFACL.h */, + DC4F66E6A3F1DC8F241BBC37BD38824F /* PFACL.m */, + 0017DC9D1BC027BEB92D7D8697443DF9 /* PFACLPrivate.h */, + 65C562DA788CB34774AC6A956A6F1D40 /* PFACLState.h */, + 675939A97597CD2EA04CD4995460A6C7 /* PFACLState.m */, + EFEED10CE7DA52BCCBBE06BCDFF31654 /* PFACLState_Private.h */, + 84F69195C66DCE1ED23AFBCC251BA4C3 /* PFAlertView.h */, + 5F0CAB54CFC8BCC345F4138A1EC4D771 /* PFAlertView.m */, + B8C98D684B355E8344D062BD7BF8315F /* PFAnalytics.h */, + C2050A5F83DE9760D514859F3A7AC930 /* PFAnalytics.m */, + EFC051FCD89B2186BB961E6FB8B61530 /* PFAnalyticsController.h */, + 335CD23D95285D1C44A95A3A178AAEF8 /* PFAnalyticsController.m */, + CB2EAD42AB8183945FC7A12E3FAE1960 /* PFAnalyticsUtilities.h */, + 5CE8D7CE43C005885F4A5981957F20A1 /* PFAnalyticsUtilities.m */, + E82158333A26FE08F2D24FE0960BB5B0 /* PFAnalytics_Private.h */, + 35D4DD0CA2C38FD64FC4C4C5AC5AA6EF /* PFAnonymousAuthenticationProvider.h */, + 63853C304B3512C921051F6F4C1AA1D8 /* PFAnonymousAuthenticationProvider.m */, + CE5437B74A760E4237FFB7AD86EA7AF5 /* PFAnonymousUtils.h */, + BF4B15119AA437DFDE6F525A227EEEA5 /* PFAnonymousUtils.m */, + 12F1636D729AD4B6DCCEF11891F28113 /* PFAnonymousUtils_Private.h */, + A513E815CB0531AC54B80FD774351B67 /* PFApplication.h */, + 9B7DE1AA020492D010862FA4F2FBC7C6 /* PFApplication.m */, + BB0CA4DECDBC711B22322A480B4D2DB0 /* PFAssert.h */, + E1030CCC0775734985138AF667D21E88 /* PFAsyncTaskQueue.h */, + 45870028D12B4C716DCD60DD091B5320 /* PFAsyncTaskQueue.m */, + DE504CDBAE4E729CE6138680BEA8131C /* PFBase64Encoder.h */, + 34395EA09EF6FAFFB300C19081748EEE /* PFBase64Encoder.m */, + FAE37FC3EE513E9BA389914278408CEE /* PFBaseState.h */, + C2709A1DF844E63FBEB934E9A24FAA66 /* PFBaseState.m */, + 118801D377E51EA29C240E0C19C227D2 /* PFCachedQueryController.h */, + D14ECFF1D93FDFE7D398C60C541D4D42 /* PFCachedQueryController.m */, + EDDDD080107F9241868C257E03522C93 /* PFCategoryLoader.h */, + A08562E12462CC984D8E3FDD78C62842 /* PFCategoryLoader.m */, + A2F1242F1927A230F84F0CBB923D800D /* PFCloud.h */, + 27E46D6B718D04CD81F500D08BDCA779 /* PFCloud.m */, + 33244990175A48516182AFDCEDA52E66 /* PFCloudCodeController.h */, + 1EE0F82547915413E8FA3F4BD68D24DD /* PFCloudCodeController.m */, + 176FB6F42987293FB1E182C230B96F21 /* PFCommandCache.h */, + 6C32A41D38BC842721FE9A96A699B1AD /* PFCommandCache.m */, + EEE62E07048808E1B20ADEC99B4B70FD /* PFCommandCache_Private.h */, + 9A7CE6F0005C413065B0AE390477019B /* PFCommandResult.h */, + 129FC7A2DDACFE1328825F6A865367F5 /* PFCommandResult.m */, + 0BC26D7366B9BCFCED00BA2443EC3F02 /* PFCommandRunning.h */, + 6CB8F4A546D9EAEA058287BFFA939C49 /* PFCommandRunning.m */, + F9D22C63BFA5923A93E8E8A351BB6819 /* PFCommandRunningConstants.h */, + CBBCDC44D6533386C15445A8DA75780F /* PFCommandRunningConstants.m */, + 8F21EA2F4A5DDD76A519682036295D1A /* PFCommandURLRequestConstructor.h */, + 1BC8CA549338879E1C908751DD3FD1C0 /* PFCommandURLRequestConstructor.m */, + 5F06181DC24313ECF2DBF2D575D36DC9 /* PFConfig.h */, + 6DBF2FEDE564A16DD0584A1A4B48DB5E /* PFConfig.m */, + 237D0660F2210DBDAA12CCD66B659E6C /* PFConfigController.h */, + 65EE60D7B2AE8D7AF7FC37A1DED26D53 /* PFConfigController.m */, + 0F1C624B7EAFBBBECE836A2F4331DB5A /* PFConfig_Private.h */, + FFBF77D48AFB428DB4B14BBA73842CB2 /* PFConstants.h */, + 7CB667B15CA6726CE1EA77BBAC4BC7FD /* PFConstants.m */, + AB09AD9EF87210D905F74E1C8DFF532C /* PFCoreDataProvider.h */, + 7C807E842A64AA6E448D999BD0EA2744 /* PFCoreManager.h */, + D95D996872847740808B245E124F33D4 /* PFCoreManager.m */, + 6A0306DBED132EEB7F48CCF5885EADEB /* PFCurrentConfigController.h */, + CB54CB2CBAE86A6D529C60250C8243A7 /* PFCurrentConfigController.m */, + A8F0EEC1700298FC5555BA0A53F82E9D /* PFCurrentInstallationController.h */, + 748E23C1428DC283BAB8E03D0CE9A770 /* PFCurrentInstallationController.m */, + 48FB82823746BF27BE7130F2353BC212 /* PFCurrentObjectControlling.h */, + C6A1B35A988D4E5D81E613F216581696 /* PFCurrentUserController.h */, + 64585A3E416254970223EB883C168C06 /* PFCurrentUserController.m */, + 7A7B8336A363D3DD83ED3A4E4BDB5F0E /* PFDataProvider.h */, + 2B4DDE724F0C79DF04632181A3641990 /* PFDateFormatter.h */, + 6F103B2A584D088B481C2F591B22CB95 /* PFDateFormatter.m */, + DA7FDF51B3213CFC74F679CD912F8009 /* PFDecoder.h */, + B3FCEE0AD84EC6A5CA5478A717BEBA01 /* PFDecoder.m */, + D769A22F6A1292EAFD89F93A0686D653 /* PFDefaultACLController.h */, + E06C7256FA983EDE2D306A89B041DEB9 /* PFDefaultACLController.m */, + 3911B9D2BBD5CBF1337C009F5F541534 /* PFDevice.h */, + C061A6821D5496664B815D95E9686638 /* PFDevice.m */, + 7CC8DE7490D76AE8614531D09B7CFA9D /* PFEncoder.h */, + 7BEB822204CBB8DAC8FF4C04AEFCF729 /* PFEncoder.m */, + 8252E3628FCD0DD24332FF33C10A559A /* PFErrorUtilities.h */, + EF3885FD8EAFFBF7986ADCB2A2DE77DF /* PFErrorUtilities.m */, + 55B85002DD908349F1000F7996455DE1 /* PFEventuallyPin.h */, + 07B7B00924E5C1CE262E21FBE11F0636 /* PFEventuallyPin.m */, + ADD502BDCA2209045FB7EE614931BD10 /* PFEventuallyQueue.h */, + CF5556B51CED2BB029915A1874EE32A9 /* PFEventuallyQueue.m */, + 9ABF154F3CA9CA7655A27F36B3AFD46A /* PFEventuallyQueue_Private.h */, + 51E4B8ABE7430971B5249A46A558AD57 /* PFFieldOperation.h */, + 26A65996250E9A6E0A45799C5C80A4D6 /* PFFieldOperation.m */, + 8E58CBB93F5E241E8F3C398FB06283B5 /* PFFieldOperationDecoder.h */, + FA96D6D6ED3962673257FD4308045B34 /* PFFieldOperationDecoder.m */, + 2DE04FB62AD4572A1EF2E388614A2906 /* PFFile.h */, + 927F616936E0C7308D11300E5B788429 /* PFFile.m */, + 8CB9E435A8D7599B6B0049E6AFE5304E /* PFFileController.h */, + 9C2DBEA1B558F22849ADDB4522563836 /* PFFileController.m */, + 864FC7E084B3C08400F30878D1F110FE /* PFFileDataStream.h */, + D9F3737F5623A34BD5AFA78E4B1901AB /* PFFileDataStream.m */, + 67108DAD07BBED97E0992E85B0D42C85 /* PFFileManager.h */, + 26648E7CE5BE1B08B80D3B2DAF2A53C7 /* PFFileManager.m */, + 4C105E35C96EB4B380048F9D08BEED1A /* PFFileStagingController.h */, + 4B3DCF9225B393FBEC5AF6CCD9267797 /* PFFileStagingController.m */, + 4258F79C649680EAAA4724050C5400A2 /* PFFileState.h */, + 2DD054F75FE35DC95593292D3F5E3384 /* PFFileState.m */, + 4E4FA331249E6517075CC9318DC72A95 /* PFFileState_Private.h */, + 090D1B6F36F0C028C8CB3219A3BEF8C2 /* PFFile_Private.h */, + 2B10539AD7B65940ECDF70BE96FD7FE9 /* PFGeoPoint.h */, + 121F69A49C07670028BD2BB1285A2CE9 /* PFGeoPoint.m */, + DDDB9F88EE4CF34E81AA150F326D12F8 /* PFGeoPointPrivate.h */, + 13FF6F02AD00C0AE6A8450F567534E23 /* PFHTTPRequest.h */, + BDD575E014B1E668BA1B9894C948067E /* PFHTTPURLRequestConstructor.h */, + 8438C8930C259D5374088068EDEF11A2 /* PFHTTPURLRequestConstructor.m */, + 39AE3319F220425568181E51340F50AE /* PFHash.h */, + 52728CC48A8F9EFF86FD0353377E776D /* PFHash.m */, + 1A982F733776ECB9F974B94BB7AA8825 /* PFInstallation.h */, + 542D17E28458EBE4D318648EEB3B381B /* PFInstallation.m */, + 27B54F6FA7D889D22C88195CA1B1EA1E /* PFInstallationConstants.h */, + 18FD24EF1379B71A3998D456EAF6CE07 /* PFInstallationConstants.m */, + 608429EE6E38CCBC432367E7CB93B400 /* PFInstallationController.h */, + 3FF60E0CE99104F46FC615B3C7403E91 /* PFInstallationController.m */, + 279B027B17D8D0512BA90F26313978F2 /* PFInstallationIdentifierStore.h */, + 83C71B61CCF71858F87CFEBB94CFFB11 /* PFInstallationIdentifierStore.m */, + 12090BC886A58C9962169A136F7BBD2A /* PFInstallationIdentifierStore_Private.h */, + 3268179096664214C41900456AEC9D52 /* PFInstallationPrivate.h */, + 6983D73EF0F3315F55A0E4A3B5CDB1CA /* PFInternalUtils.h */, + 11E9E6138AF7E67248A1C931ACA660C3 /* PFInternalUtils.m */, + 0C10D8C3B24FB7B0FC1A118A6F1B04FB /* PFJSONSerialization.h */, + 3E6A5B35F3A36DB58FE56540BA6EEDBE /* PFJSONSerialization.m */, + CB0A624CCA1DF78752962F81F06BF119 /* PFKeyValueCache.h */, + 5B5B3E3A409593357C8EDDEDDC0651EA /* PFKeyValueCache.m */, + 6532B39D03DA6402CDE0AF5FAA88CB85 /* PFKeyValueCache_Private.h */, + 177385813576F961AC0390A29802236F /* PFKeychainStore.h */, + 9DF590EFC23393E18AB1CB35CBED4270 /* PFKeychainStore.m */, + 02577CE0CCF20FCB28AE72A1BA70963E /* PFLocationManager.h */, + 03367350D97367D351BF7432EEB86476 /* PFLocationManager.m */, + 6370C00129F042A303CF8C41BCC8048F /* PFLogger.h */, + 895926AE9851CE1F765F43CBEEDBAFBC /* PFLogger.m */, + 423474460E489D78FEE63988A287BF8A /* PFLogging.h */, + C139C86AEBB76931A158BC183F46D15F /* PFMacros.h */, + 06CE7699540EF590425A414A8CB424CE /* PFMultiProcessFileLock.h */, + 21B3BED0A995DF74C8CE5AFBA1C4F804 /* PFMultiProcessFileLock.m */, + 7D77C3FB04FA7AD4241A39452337BF48 /* PFMultiProcessFileLockController.h */, + 7E3ED96EE4D0B9F695BE889B00DE6407 /* PFMultiProcessFileLockController.m */, + 84D78F45D0B07841FAAA5A3283859049 /* PFMulticastDelegate.h */, + F6D944F1DD0E0308EA2EEB932E7DD509 /* PFMulticastDelegate.m */, + 2D63F2855FC61EC1E5A671306404454E /* PFMutableACLState.h */, + A6C3BBB9984F7D2959A0E80137315CF3 /* PFMutableACLState.m */, + DDFFCC76652A57F8AC82219E905AF11A /* PFMutableFileState.h */, + 5F55A6C36C32F11B3417387E0AE06AB1 /* PFMutableFileState.m */, + 0DB2691909F8F7F08DD7D43B4054114B /* PFMutableObjectState.h */, + 0E3D6E7602874F770FF747226169660D /* PFMutableObjectState.m */, + E8F3BB2B68E1034BACF1F5A876795E78 /* PFMutablePushState.h */, + 3BA13D9D4803FA88A8E6FC6E687D0706 /* PFMutablePushState.m */, + 73E78AAF48CC66F5329D231011EC9F0E /* PFMutableQueryState.h */, + 986A0B2FB090467DD63D523D111D637B /* PFMutableQueryState.m */, + A2DB5E0FF2D801AE5355483A207C2316 /* PFMutableRelationState.h */, + BDDDC367C4FFD9B99B16C912DD808CBE /* PFMutableRelationState.m */, + C1DF7803D01DBA25AC3A304B97A1450B /* PFMutableUserState.h */, + 64E66272745DD74DB658E76BF786B334 /* PFMutableUserState.m */, + E595FE8D26A832FC9181FB8DCFDE506B /* PFNetworkActivityIndicatorManager.h */, + ECFE14B9E600B66B7CAFD3D9A64F4B3D /* PFNetworkActivityIndicatorManager.m */, + 93A85BABE61F3728712E0E5208270B19 /* PFNetworkCommand.h */, + 9D9010B3F716FD1490351E8CB8BB8840 /* PFNullability.h */, + 59AA32CF592A1CE163B2F901B0892AD8 /* PFObject.h */, + 5F0A3A60E696009D78F7AD078F9E343C /* PFObject.m */, + 3B538D8071AB6432B658069378DCA381 /* PFObject+Subclass.h */, + 5D414278778C63DB1AB1454092428F09 /* PFObjectBatchController.h */, + 4116573287BF306C8EC05DBF93BD549B /* PFObjectBatchController.m */, + A789217CA6DED8D71FBD896F412AD6A4 /* PFObjectConstants.h */, + 14DC7569B23924F725356C7D875B9264 /* PFObjectConstants.m */, + 00923F2734FCE8DC39F906E40B67C73C /* PFObjectController.h */, + 2FC310BBD6C8CF36F6B10AEF4AE850E3 /* PFObjectController.m */, + A3D1CC8FD8C924BEC03EAE7B7D1A957B /* PFObjectController_Private.h */, + B9A15492EE8BDE4E1840F2F29AA9B3A5 /* PFObjectControlling.h */, + 4EB0B04EC3F753FD50885C2850A18879 /* PFObjectEstimatedData.h */, + 76138EE2803A9EEC58C7D5AB7744121F /* PFObjectEstimatedData.m */, + 5EB0814787ECF1B4820F7A3680530AC3 /* PFObjectFileCoder.h */, + D2CCB0DEA880EFF0D0EF2B11C7E41029 /* PFObjectFileCoder.m */, + 76A196B0C50AE07AE79DC05159C2DF21 /* PFObjectFileCodingLogic.h */, + AF18B2AD10D7C8A2EBA61B5AB51D00BD /* PFObjectFileCodingLogic.m */, + 0E78B233EDC284D3081B128801711498 /* PFObjectFilePersistenceController.h */, + 8998D38349136ED287AD6B1F81B2A2C3 /* PFObjectFilePersistenceController.m */, + BFEEFBE1C37274DCC4828D82311AF40C /* PFObjectLocalIdStore.h */, + DE8B4CF37AFF88C9FFCC3ECBFB68A45B /* PFObjectLocalIdStore.m */, + 7B450C5571097E288C9CFF740CE3FA5F /* PFObjectPrivate.h */, + AEFB5A16335CA052F7F8EF7BD6899979 /* PFObjectState.h */, + 7CF42D72A1AF3A7182B9021C56CAF888 /* PFObjectState.m */, + 1D3AB2BDF8EB2BCD1EDB0AE62B5E7FE1 /* PFObjectState_Private.h */, + 78ED1DE48AC6FAA521E9D1B0A15B2F0E /* PFObjectSubclassInfo.h */, + 3810817360404E4967AF028144ECC497 /* PFObjectSubclassInfo.m */, + 0D6D55B44BD8ADC5AE8F8AC715416614 /* PFObjectSubclassingController.h */, + 3AE7D5E655DFEA88C846CA2F49FD7F27 /* PFObjectSubclassingController.m */, + A07FB85A098FAF188DB71104131A46B2 /* PFObjectUtilities.h */, + 4E3B7FA2A6E0A7ED2742EE5D84DB12A8 /* PFObjectUtilities.m */, + 50352378D38EB15E7B7D74FD48D20236 /* PFOfflineObjectController.h */, + 4B9DBF11D74F42EAFF80AF44ABE2B00E /* PFOfflineObjectController.m */, + 41D4AFB79D025DDA3EF311ED8B830DC9 /* PFOfflineQueryController.h */, + 735762C7D17E4364E90ADAFD2E9C139A /* PFOfflineQueryController.m */, + F15AA0B0FAA03DD30C07E23D2030823C /* PFOfflineQueryLogic.h */, + E170DFE0763897F12B0B3762F62DFCAD /* PFOfflineQueryLogic.m */, + 33B37F8486EF0E3980BE534DE830918D /* PFOfflineStore.h */, + 0B6F6FC45E0A6A809CFB5D64AB572F12 /* PFOfflineStore.m */, + DCCA1D25CC0F8A31965C4458FA970C52 /* PFOperationSet.h */, + 80BA04F02821688944482E0FB8D4D623 /* PFOperationSet.m */, + B83DA40998833B6F48A316FA1BA26DF0 /* PFPaymentTransactionObserver.h */, + CA8AF7DF58F69854AA20C03B140C8802 /* PFPaymentTransactionObserver.m */, + 6949E72AFCB7848487C6B092E8E7CC63 /* PFPaymentTransactionObserver_Private.h */, + 5A69674A69ED07E630171FC8E7DE679B /* PFPin.h */, + 271F7EB07DABBEBBC72C435841D5B7B9 /* PFPin.m */, + D5D5CF2EDCF3EFE196B7789A29C02031 /* PFPinningEventuallyQueue.h */, + 512C3E738619CA90805009D1B56BFDE7 /* PFPinningEventuallyQueue.m */, + A8B7D4881DB5E38BB4A3D779E6BB690D /* PFPinningObjectStore.h */, + F3ABB736CD9D5E94B6350679B5554ED2 /* PFPinningObjectStore.m */, + 8E23F80B85568CE234F07C36444A8868 /* PFProduct.h */, + 4C13CE56C415F93B1A3921AB6358B990 /* PFProduct.m */, + A8FE4F334B2A94F5AC2AA3FBAF7627F8 /* PFProduct+Private.h */, + AF8EEF265F3D9C4630F4ACCFBA1A315F /* PFProductsRequestHandler.h */, + 1B176B4F560C96F25001CAAEF4C24496 /* PFProductsRequestHandler.m */, + 9DB137E8A7C92A13BD6EB1FE46FAD717 /* PFPropertyInfo.h */, + 2AFF4BBCD87A80EBBD6ABEB24467DD92 /* PFPropertyInfo.m */, + 83ECAB9F08AFED3BB4204FD83415518B /* PFPropertyInfo_Private.h */, + 2EEFB0F3823FCEF4E5F3012C82EF7AB2 /* PFPropertyInfo_Runtime.h */, + FF73D26B160755CAA42F2FFC56C91E1E /* PFPropertyInfo_Runtime.m */, + 6A78ADE0C1383A85403BCEAA01789B6C /* PFPurchase.h */, + 0861457C7F36148ED273E55B6BD5AB36 /* PFPurchase.m */, + 20B30A30703B653252AC6D15C630DA1D /* PFPurchaseController.h */, + 9C73B2D9D4B827BC0A14F34532E43F41 /* PFPurchaseController.m */, + 40739D148D4DAE664411F3F2DBE4D3F8 /* PFPush.h */, + 4F6AC6F0CC343C3396887A99F63C9782 /* PFPush.m */, + 17453FC905983BE633680D64EBDF6BF7 /* PFPushChannelsController.h */, + 1C1DC34229B831B07F4F2C955050094A /* PFPushChannelsController.m */, + C4B61A09FCB4522CC4CD9D7C2BA8A566 /* PFPushController.h */, + D13A070075F2FA180B529D107DC47AA7 /* PFPushController.m */, + 936E53085AB59399AE3E6F0458D49941 /* PFPushManager.h */, + 3A0F3D060245CFF4C9AD4E4E4B1FE443 /* PFPushManager.m */, + BAD0E25E939779D3CB767BDACE17F6F7 /* PFPushPrivate.h */, + E4A2A7B215D83EE4A1A7A17F363D6C87 /* PFPushState.h */, + D5F1C1D5F2030DAAB3B584BA7D15297F /* PFPushState.m */, + 66AE3952E127CEAA503A87FD111FCBEA /* PFPushState_Private.h */, + 072E4E053796CCB0B198E0D81722FD94 /* PFPushUtilities.h */, + 6775409B0E8C0788D2E094C7C5218464 /* PFPushUtilities.m */, + 94EC2DDBDD9F074B0353114A4386A277 /* PFQuery.h */, + 9A4611534D2F6FE37840471AE6EE6B04 /* PFQuery.m */, + 2850C6A23236DBC93BCD286061735858 /* PFQueryController.h */, + 6E3986BD59BF447A1F15BD4527B7D366 /* PFQueryController.m */, + 9CC527AF2B9F34C2E793791D4F3AE0A4 /* PFQueryPrivate.h */, + BD1C10F7430E7917BD4A2D320618E8FE /* PFQueryState.h */, + D7B4BAE18CF4FF92FDA44D8959B272B0 /* PFQueryState.m */, + 6802793E8C624630B319D30FBB7BE7A2 /* PFQueryState_Private.h */, + B996498C593C09462CB17300BB0EA209 /* PFQueryUtilities.h */, + B4A4BC05632F91AFEF2CA8594E359431 /* PFQueryUtilities.m */, + B5844358C456A94A62A07CB206B23CB9 /* PFRESTAnalyticsCommand.h */, + 9502680C2A5812E3B95B583AB378FCA2 /* PFRESTAnalyticsCommand.m */, + A31F406B4BFF1949AF98275105F6457A /* PFRESTCloudCommand.h */, + CC83F9AD4B07940AAE2F264DD04DD1BF /* PFRESTCloudCommand.m */, + ADBBD204C9399AB147FC3FB9386FBA68 /* PFRESTCommand.h */, + B7B64451F8A6E1AC2BADE39B3C1CABF8 /* PFRESTCommand.m */, + 885480E76DF09EE4E69F631228FF4859 /* PFRESTCommand_Private.h */, + 7176C54BE83AD8B924C0239573D8C14D /* PFRESTConfigCommand.h */, + 5D523D243E8C98CFFB31356A63463C00 /* PFRESTConfigCommand.m */, + E42493F5FC02B368E66187F7D3E72719 /* PFRESTFileCommand.h */, + DB3CBBE18B7CB09688F235F3EB9C71FD /* PFRESTFileCommand.m */, + E7D83C6103A3717409D4E3BC0251FEE2 /* PFRESTObjectBatchCommand.h */, + 04C0F1EBAB58CF7749671D83B4E420E1 /* PFRESTObjectBatchCommand.m */, + F94D8E2DD631C64B847B40AEA78E1AA0 /* PFRESTObjectCommand.h */, + DB12D985E758C1B2AC5996A8F052C26D /* PFRESTObjectCommand.m */, + 1CB2A1FCA55FB8C6D0C65EF34A7E0C1A /* PFRESTPushCommand.h */, + E6A2CBA1A14A6AA1202E7B5CCEFA3C2B /* PFRESTPushCommand.m */, + 03C41F440C6257C38CBA6D08B490B043 /* PFRESTQueryCommand.h */, + 3D2D7ECC712E5A988D37CECB9069F554 /* PFRESTQueryCommand.m */, + FB33D66AAC9C445AC92D82EBA294DB85 /* PFRESTSessionCommand.h */, + 66C2AD35A6E51D88EA4ECC24C43ABA8C /* PFRESTSessionCommand.m */, + CF467117B925DD3A53A0AD66F813DD90 /* PFRESTUserCommand.h */, + B7D225D38EBD061B9B317B5F017A8DB8 /* PFRESTUserCommand.m */, + 6277470164DD2F4D1FC49886CF94D214 /* PFReachability.h */, + 73923DB118610C08A35942208D9A3213 /* PFReachability.m */, + FFF54AC023F4C0A168EAB14AF0DF8197 /* PFRelation.h */, + 17EBDD0D3F6CA772ACD223D47BC6606F /* PFRelation.m */, + 0830AA4DD7D7479876C01AF8CAC79CE3 /* PFRelationPrivate.h */, + 04FFB1F6F919106E7BC4541DF614C595 /* PFRelationState.h */, + C8ABE6E22040D86F536BA83C9995342B /* PFRelationState.m */, + 6A193B521725B41DCBB47C98E8384558 /* PFRelationState_Private.h */, + 828C7F88A0E2BCBEB7B6A32EE8D36F4B /* PFRole.h */, + 155D2AB8BF53B4A09062475713E1C814 /* PFRole.m */, + 02F8999A03E5DEA16BE168121A32E180 /* PFSQLiteDatabase.h */, + 38A77616F3D6A593F41C5A9E9C1A53EF /* PFSQLiteDatabase.m */, + FF1FEA7B2F9CA31ED6080705A2EA6A8C /* PFSQLiteDatabaseController.h */, + 5BD931B78D3EAD28BF5F58F187AEABB9 /* PFSQLiteDatabaseController.m */, + A194EB7C47C1754479482D96E62282D1 /* PFSQLiteDatabaseResult.h */, + 653FCEE976AC25D86C5BD4646F8893B3 /* PFSQLiteDatabaseResult.m */, + 2D51A7F9937E1B2641CDCF758F76D7BB /* PFSQLiteDatabase_Private.h */, + BD31E37E459C5578892A42ACCD8A7C99 /* PFSQLiteStatement.h */, + 1E2E9BC6F467A47EC23C62B07767BBD1 /* PFSQLiteStatement.m */, + 92093FA98E5C9EFD88FDF61A6A4E6451 /* PFSession.h */, + DE5E904CC7ED8533B3A17E70BFCCDB42 /* PFSession.m */, + 8F6F5C52DD8416B5F436BA714F2292F6 /* PFSessionController.h */, + 99BAAC5484715BACEF4A330F55A4DCA0 /* PFSessionController.m */, + B74DFFD00FD194924436581B996AF728 /* PFSessionUtilities.h */, + A87CDFB3EFD9FF97386971977129FF4F /* PFSessionUtilities.m */, + 283697319377A707827BA6D72CD7F2B7 /* PFSession_Private.h */, + AA8507DB72E8E2555EB649E141F80B46 /* PFSubclassing.h */, + AD7E73D7FC8878A9DBB9C6C91A6EF948 /* PFTaskQueue.h */, + 08FE1B46AC0005B96FC3513ECA03CF73 /* PFTaskQueue.m */, + 3A43F656D15828E22D2934C2706AC1BF /* PFThreadsafety.h */, + 57C4523433B4764C517C9034002FD449 /* PFThreadsafety.m */, + 260ACD6713EAF6AF8913E567E5D000B1 /* PFURLConstructor.h */, + A5247A1DF4C0D6237EA1C24BBC7A2C7D /* PFURLConstructor.m */, + B64334E646B39ABAFB0CC58791A45045 /* PFURLSession.h */, + D2121C834D82A31D9AC3183B2DCB31BB /* PFURLSession.m */, + 73D64DAEAFFF3B4456A0ECB82E2D4CA6 /* PFURLSessionCommandRunner.h */, + 5DB20E84DFDB8DA61BA09324BEFBFF7C /* PFURLSessionCommandRunner.m */, + E89B0E24A3183435D4E3C9EDCC51EDD1 /* PFURLSessionCommandRunner_Private.h */, + 0E4597D072E258E34336B3F35C0F419D /* PFURLSessionDataTaskDelegate.h */, + 3295D89852F84111A5FF8AB168AD2F73 /* PFURLSessionDataTaskDelegate.m */, + C9DA1DBC1BE40D87F0CDE1566117504D /* PFURLSessionDataTaskDelegate_Private.h */, + 045C613BE82C1C475C7BD0F490B49AAE /* PFURLSessionFileDownloadTaskDelegate.h */, + 5B5452F12D849665274EB43110F07EE1 /* PFURLSessionFileDownloadTaskDelegate.m */, + 82DAD225DA2EF99D509E1DCD251CF1E0 /* PFURLSessionJSONDataTaskDelegate.h */, + F6A9C4685A290C880CDE1428A25FAC30 /* PFURLSessionJSONDataTaskDelegate.m */, + BD986CE8B13B8A0C1F133579BB44D141 /* PFURLSessionUploadTaskDelegate.h */, + A5E5E8ED6BA6053BE27E35F8E7B4BEEE /* PFURLSessionUploadTaskDelegate.m */, + 9CF2D6AC00B5B6213CA5BA66D3473AF9 /* PFURLSession_Private.h */, + D744AFD793804AF3C84822508F5A5B1F /* PFUser.h */, + FDA229BC6CB4CA9634C3016F0381557F /* PFUser.m */, + 5325291642047AF9E650B7590ACC6254 /* PFUserAuthenticationController.h */, + 00BEC727AA03A29C964A4BB55F65EC55 /* PFUserAuthenticationController.m */, + 046383C54AB907710018AAD4CBD3C3E8 /* PFUserAuthenticationDelegate.h */, + 9A18F7AE2E1FACC4C6227EFE5C4B86A4 /* PFUserConstants.h */, + 857A31726A217BC7AAB96D91A7951102 /* PFUserConstants.m */, + 25258821C0218CE36A9415CFB0D9F151 /* PFUserController.h */, + 0050807933AECE8D25A707F975203C5E /* PFUserController.m */, + 776CD45C316A4D526A9482D3D6C0F72C /* PFUserFileCodingLogic.h */, + 8A96182B63D95AA7512F0B4BF891B823 /* PFUserFileCodingLogic.m */, + 9B6B535332BF062ED196F088A04E6A5C /* PFUserPrivate.h */, + 00362EC9E1B6EFC1EED72CCE1F5C6C63 /* PFUserState.h */, + 973BCDCA8F5D929A3B0146540D22266B /* PFUserState.m */, + 828E3502653848562DD0814140A92CCF /* PFUserState_Private.h */, + 763AC253EC0FD55889EFD9499486FE4D /* PFWeakValue.h */, + A10620A1377EB7153ECCFC2F048B5505 /* PFWeakValue.m */, + 942A952E1E39A725636E8BEF6FDDA9F9 /* Parse.h */, + 430C3FA8EA2C3E2BB22ACBE65DA6AC89 /* Parse.m */, + ACE0AE2BDDDC07FCC86BAD0AD53C4E89 /* ParseInternal.h */, + E2BB3CB62DEEB960D69BA58C987EF78C /* ParseManager.h */, + 09458C192035B62F6C206BA8051E7C08 /* ParseManager.m */, + 392B81F3F69ACC5FDB7A16EFD49EC5CC /* ParseModule.h */, + C6AF838FA7C570391A36438E785BD121 /* ParseModule.m */, + D17108F7FF6F90BEA80F4639A3F398E4 /* Parse_Private.h */, + 3262FA25CACCB75652ABE94C6AAE0895 /* Resources */, + 6E1FE4EB7D0D493F9F1D1977F4A35013 /* Support Files */, + ); + path = Parse; + sourceTree = ""; + }; + 0E03188E9A4BF5C7937C9A2A68F675D0 /* Tasks */ = { + isa = PBXGroup; + children = ( + 205D68C9BFE7AFE003B0D6E31B36DF5C /* BFCancellationToken.h */, + 6A7BE134FD15E0D4AD4050F4AF57B457 /* BFCancellationToken.m */, + 7FCD65509A86CB6A3CBDE7E5FCB1384A /* BFCancellationTokenRegistration.h */, + F00F8677E748167A500D4089850612F1 /* BFCancellationTokenRegistration.m */, + 42C4A6EF402B488E5D8EDE80F1F34D3B /* BFCancellationTokenSource.h */, + D5E9B76418458E7F379CF5FBBC3F3B16 /* BFCancellationTokenSource.m */, + EF76AEC2726221DE7C0236DFE4624164 /* BFDefines.h */, + C8E979B43D80A6C9E821A1BD3B0C7F51 /* BFExecutor.h */, + D5CFF5109E2B6B4C6F5E6087969F25B2 /* BFExecutor.m */, + 13771E6540FA0D1373C61F3F5618DE1D /* BFTask.h */, + FDF516C0EA3056B223310D7DB2C26681 /* BFTask.m */, + 749EB4AB41C2B5F71BA37ABB24CEE668 /* BFTaskCompletionSource.h */, + 9601718FD0C0CFCF5DA762D153DB3279 /* BFTaskCompletionSource.m */, + 677452C3A3BE7F10BDD609C3AF5DA93A /* Bolts.h */, + 0E874B0F3891D0BC5E6EE724082760D1 /* Bolts.m */, + B1C7ADB3EE2B383850B9230A7B460906 /* BoltsVersion.h */, + ); + name = Tasks; + sourceTree = ""; + }; + 1440A3238D63F76B4474109B3C960C81 /* Support Files */ = { + isa = PBXGroup; + children = ( + C45A766C3A6755202AD9BF0DD47F95E9 /* RKValueTransformers.xcconfig */, + FAF5EBA356BB1361627763A0C3E4FBA8 /* RKValueTransformers-Private.xcconfig */, + 8343EFF681B40307ADDC80DDE71AA45E /* RKValueTransformers-dummy.m */, + F5BD02FE7C99C9BD2CBC566B75BB0558 /* RKValueTransformers-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/RKValueTransformers"; + sourceTree = ""; + }; + 20C6A3B1763BEF1D2A45847DA52F6720 /* iOS */ = { + isa = PBXGroup; + children = ( + 4B4CB8ECB1CC3450C6965777EB3C8B67 /* AudioToolbox.framework */, + 83F2B1D939804694C73E7FCD9AAF4090 /* CFNetwork.framework */, + 71AB35520DC69025479E89EC80D0D204 /* CoreGraphics.framework */, + 4F79376118E5A7FF02BC96514483BD1A /* CoreLocation.framework */, + 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */, + A51EB7786397F5EFF35AB3BD9CEF4F08 /* MobileCoreServices.framework */, + 67E415550BFBF0D438FF517138639DE1 /* QuartzCore.framework */, + E541C23946CA00EF697F8FA44AB271F6 /* Security.framework */, + 8200C4FB4CDD0C6152EE150BDEFC6675 /* StoreKit.framework */, + F5243AD5D9D864456CBD961BC945843F /* SystemConfiguration.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 25C2C3F30E3A330D39A55F4B043B9186 /* Support Files */ = { + isa = PBXGroup; + children = ( + 8F5ED0372250818DCE119C3430AB9B9C /* FBSDKCoreKit.xcconfig */, + 8FD1B81D44C9140C9CB6A7AE15FD008A /* FBSDKCoreKit-Private.xcconfig */, + ABB8ADA56E3C960C54BA1289E7ECB2E5 /* FBSDKCoreKit-dummy.m */, + B76A09E201EAD10D07E2C151D7EC5F26 /* FBSDKCoreKit-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/FBSDKCoreKit"; + sourceTree = ""; + }; + 30B8E8FB632D39C4AD04195963D8DD50 /* Support Files */ = { + isa = PBXGroup; + children = ( + A9E3691FF1A7CEBD5D9EFA1195090078 /* ISO8601DateFormatterValueTransformer.xcconfig */, + 31FC85622F6B1B2EE86B878CA3F2FDC7 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */, + AE08EB61DD10B80E244E727952C0B579 /* ISO8601DateFormatterValueTransformer-dummy.m */, + F49F7453B2E504EC63FDF48EFAA54EEA /* ISO8601DateFormatterValueTransformer-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/ISO8601DateFormatterValueTransformer"; + sourceTree = ""; + }; + 315BCA9F4FC37F26FCA0A241609C1D8C /* no-arc */ = { isa = PBXGroup; children = ( - C4850C360C9673CBE290A0841176FD78 /* FBSDKDynamicFrameworkLoader.m */, + 6F9AB8D84FEE2E48AF3B9F9658D5BE35 /* FBSDKDynamicFrameworkLoader.m */, ); name = "no-arc"; sourceTree = ""; }; - 24002A6670E6882ECD6250D3E60F9CB2 /* Frameworks */ = { + 3262FA25CACCB75652ABE94C6AAE0895 /* Resources */ = { isa = PBXGroup; children = ( - F9400E82BDA8E39AA40BABDC6CB12014 /* iOS */, + 6448EFCEA795D12938825D3F8D395848 /* en.lproj */, ); - name = Frameworks; + name = Resources; + sourceTree = ""; + }; + 3469EB0551979288C3680B8569507614 /* Support Files */ = { + isa = PBXGroup; + children = ( + FBEDC82BBD883110BC94F1B62D5DCF07 /* FBSDKLoginKit.xcconfig */, + 28D3D49C022C268585679D13BC5BFC4B /* FBSDKLoginKit-Private.xcconfig */, + 3666E0447FCD05578684BF0E8B8507E2 /* FBSDKLoginKit-dummy.m */, + 41BA0CE95AB03F346F54CA27DB00DE30 /* FBSDKLoginKit-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/FBSDKLoginKit"; sourceTree = ""; }; - 252E87DA7170BD6566BD06E26674A007 /* Support Files */ = { + 355216D0B68C5F751E356F16CC39393B /* AFNetworking */ = { isa = PBXGroup; children = ( - DAAE1F4A9A0A5F773B133BE2D859DCA6 /* FBSDKShareKit.xcconfig */, - 3E718F82F8FAFE696738E00DEA95B1BE /* FBSDKShareKit-Private.xcconfig */, - 99AD28F109954C4513A2B73C3775C971 /* FBSDKShareKit-dummy.m */, - 74A9C6AFAD90897450936AE0813C80E2 /* FBSDKShareKit-prefix.pch */, + EAE092C23A177A30D41277E3E2532CFE /* AFHTTPClient.h */, + 80D80DCE3A20EC46EAAB66B362677E30 /* AFHTTPClient.m */, + 36C94BDCD3271399C249A6BF6A0A9530 /* AFHTTPRequestOperation.h */, + 232ECC729A95758C447EC817E24A8382 /* AFHTTPRequestOperation.m */, + 0FE0AA3631AA8F7CFF57EB3EDC6CB5D1 /* AFImageRequestOperation.h */, + B83052F7D6EDB1CBA5F3BE48FE41B542 /* AFImageRequestOperation.m */, + 97715D178022674A0792C3C3180E1132 /* AFJSONRequestOperation.h */, + 09F505C5912DBB85A144A4BB9A39B321 /* AFJSONRequestOperation.m */, + 47437D5AB702C3D4165C272B390FADA7 /* AFNetworkActivityIndicatorManager.h */, + 07CDAECDB40A9B34C6E06521F65F757A /* AFNetworkActivityIndicatorManager.m */, + 3B63B03172CDA0B6BED2BB6710B8DF38 /* AFNetworking.h */, + 45863B73565B4D9E4E17BBFFEA8FF6B4 /* AFPropertyListRequestOperation.h */, + 2B1C44F7812C72D0C7AF70AF7E3582BA /* AFPropertyListRequestOperation.m */, + F13165336A9173E2A3C4790AB7CC7975 /* AFURLConnectionOperation.h */, + ED9EAFA1C9FBC36E305EEEA43B7A8CE6 /* AFURLConnectionOperation.m */, + 3AA3D565456E290589B27357D512E69F /* AFXMLRequestOperation.h */, + 555A1DB7FA628753475F8E0C531D7624 /* AFXMLRequestOperation.m */, + B21B66CA9B865C30407C0033E5E77A5C /* UIImageView+AFNetworking.h */, + 8DA277D34C0546D8D8E80D99DCCD844A /* UIImageView+AFNetworking.m */, + 58D63C29FC12061DC6628DE00FFC3251 /* Support Files */, + ); + path = AFNetworking; + sourceTree = ""; + }; + 3C56505E72D2FE8EBB1539F6D52CDF90 /* Support Files */ = { + isa = PBXGroup; + children = ( + D87881EF697A62AD256CC2A668F12186 /* FBSDKShareKit.xcconfig */, + 5CCF2B1914047A6A115AD8CAF5B6D70E /* FBSDKShareKit-Private.xcconfig */, + C8A64817A3F904FC394ADA0E162D3FCF /* FBSDKShareKit-dummy.m */, + 74D75C3A4E2A26AFDC39E1FAB71F6A80 /* FBSDKShareKit-prefix.pch */, ); name = "Support Files"; path = "../Target Support Files/FBSDKShareKit"; sourceTree = ""; }; - 381EF370C8F09BA2E6F4C9CD17E0BABA /* Tasks */ = { + 3D11579387DAC97787D951FD267B9902 /* TransitionKit */ = { isa = PBXGroup; children = ( - F7D4CB9368BD8EF802C21EAB26119104 /* BFCancellationToken.h */, - 93A5F67195E8183EE3FC797F98DC5956 /* BFCancellationToken.m */, - 58081944456413D3F0B0A33BCF9415F7 /* BFCancellationTokenRegistration.h */, - 117EE18D9FE3C52EFB3FC22C9026769B /* BFCancellationTokenRegistration.m */, - ADC7A4E7F1BB2DAD519028D6DD15357F /* BFCancellationTokenSource.h */, - 174428FB6ED93BFAE36DC2D84B429C3F /* BFCancellationTokenSource.m */, - 0A2D949315D757A2D3EB973286C11836 /* BFDefines.h */, - ED7E4C6BDA278A2EACB4205CFC9A3840 /* BFExecutor.h */, - 9BA9DC4FB2F1D4B30FF6F4D47961DEC2 /* BFExecutor.m */, - B2B529CF2F3BA08A19036180A7792FD5 /* BFTask.h */, - D35218557707E188346D1B5F07861524 /* BFTask.m */, - 24E017A99C1D0B48564CB40E5B2422A8 /* BFTaskCompletionSource.h */, - F1386E668F6D9A1E7CF872A02649E498 /* BFTaskCompletionSource.m */, - 870C15BDFACBF06245D3E708FB7C0973 /* Bolts.h */, - FACF0C560352F6EA75B7CEE63BCB2793 /* Bolts.m */, - 5AE219E0D5DA9BEAD01E3B7B78A5B608 /* BoltsVersion.h */, + 40C40C0517D7C210D4A32215DEB225C1 /* TKEvent.h */, + 02B4ADB1ECAC920122E657AE18B10BFE /* TKEvent.m */, + A4F85A759F06DA2C165FC5F9C67479D9 /* TKState.h */, + 9936ED8D363FA6B09EA60941182E9F3B /* TKState.m */, + C7A3C431941CA5458B46FDA87ADD17E9 /* TKStateMachine.h */, + 4391678EE65327EC09710A2246AE3738 /* TKStateMachine.m */, + F0CB4E3EC1ACD76F2309A54B490DF091 /* TKTransition.h */, + 2A2306F062D21537BCCD17B8E1265AE8 /* TKTransition.m */, + 8A3CCA72533E35C4376B1E8AECC9627F /* TransitionKit.h */, + 67AF22CFECD20E6348CB8AB93DD93EE0 /* Support Files */, ); - name = Tasks; + path = TransitionKit; sourceTree = ""; }; - 506CAA494D3B21DBBAD983F4BAED119F /* FBSDKCoreKit */ = { + 419D143B243406657CF78820DB7B76BD /* Support Files */ = { isa = PBXGroup; children = ( - E46A0832738AC01F481C0A1AC7761E0C /* Support Files */, - 6853153E7E440E7AC078111AEF0891C2 /* arc */, - 1E0D3B5AF7A67EA2BD6761F1E9EAC65E /* no-arc */, + B8409E3E09BE30CB9E0DB516F89ED930 /* SOCKit.xcconfig */, + A8FA5F2052C43B6E4060DAF60265E858 /* SOCKit-Private.xcconfig */, + 4FE09EB1BAFD6593655A66644AD9F2C0 /* SOCKit-dummy.m */, + 265CD502B435E47078A0F18F014D4A2C /* SOCKit-prefix.pch */, ); - path = FBSDKCoreKit; + name = "Support Files"; + path = "../Target Support Files/SOCKit"; sourceTree = ""; }; - 63A5D4C13A14A38F2A436EDF181C19F0 /* Resources */ = { + 43BA83142E3B59FFFBF477B5A1309DB9 /* Testing */ = { isa = PBXGroup; children = ( - D22A81EE72C8AF87FA5165920160A541 /* en.lproj */, + B3430C5AC8208C2B671B4D7823955F60 /* RKBenchmark.h */, + 8430E4A0A4791DC7D0F9CE485D860A00 /* RKBenchmark.m */, + 85C3C7141AE8131AC8868EF3F853AD3A /* RKConnectionTestExpectation.h */, + DEF44C93EA8108B4B9EFC4B4644446CF /* RKConnectionTestExpectation.m */, + A67A7F1AF95165EBD3C0D8E0060DB526 /* RKMappingTest.h */, + 4BAB7DDAE6FE91E089EBA417E69790BB /* RKMappingTest.m */, + 056B8AC3C068967E144E9912F4D082E4 /* RKPropertyMappingTestExpectation.h */, + B34970E9607C4D5CA7FD440A0E9D4EB0 /* RKPropertyMappingTestExpectation.m */, + 55C9501B071548071B0C87CDA9D032F8 /* RKTestConstants.m */, + 0A04D42ACCA3BD87E3584E6ACC4F56E6 /* RKTestFactory.h */, + BD77162D04BA4533037493C3BE145CFF /* RKTestFactory.m */, + E51BB433D7AADF8C023202546330704A /* RKTestFixture.h */, + 4294F692EAF153601A3A4B780A9C0668 /* RKTestFixture.m */, + 30E24C0CC2F297CA249BC9496B1273BA /* RKTestHelpers.h */, + D587648C0089A8E5FF455C97FF2B368E /* RKTestHelpers.m */, + D483D1D469EA00BF8839FA7029495D60 /* RKTestNotificationObserver.h */, + D497D888360D61A9F64F2DBB2A1FC8F0 /* RKTestNotificationObserver.m */, + 778D4E4A3B190B10F0AEFE08CC88F279 /* Testing.h */, ); - name = Resources; + name = Testing; sourceTree = ""; }; - 660F7FA41B8491B7303D71C44F4D78C2 /* FBSDKShareKit */ = { + 551C7C3268E07F208322331004B7AB9D /* Support */ = { isa = PBXGroup; children = ( - 175A1AE7E5CD7E7816C852D51957E66A /* FBSDKAppGroupAddDialog.h */, - 45C436A6EE477BC43DFD0B674BD6F99C /* FBSDKAppGroupAddDialog.m */, - 139C145BDD122109F513A0E27ABD2054 /* FBSDKAppGroupContent.h */, - B212E7E5891AA33B35F56D833F69EF4D /* FBSDKAppGroupContent.m */, - 6F95877AC2E55BE1D53E55F4938D652C /* FBSDKAppGroupJoinDialog.h */, - 4490BD8F1600D89FDE4126EAF678E35C /* FBSDKAppGroupJoinDialog.m */, - 0DEDEA8104363CAC7A0792A26668948A /* FBSDKAppInviteContent.h */, - E9AE56E8A69F187F40367169FB36AEC6 /* FBSDKAppInviteContent.m */, - ED36E7E1EEBAAFFA740A30B12242CA27 /* FBSDKAppInviteDialog.h */, - 23F24FEF2A5474160AA9AD33E508D81E /* FBSDKAppInviteDialog.m */, - ECDD4925923774BEB4574763291AC558 /* FBSDKCheckmarkIcon.h */, - ABD0C19409CB1F24FD1AFB365E60C99F /* FBSDKCheckmarkIcon.m */, - 37E59CBA1B5E09F3A99384CDBF968875 /* FBSDKGameRequestContent.h */, - 6C3130D692EFBD2F3FA5A396FF19871E /* FBSDKGameRequestContent.m */, - 590B72F042F883DF5EACA245CBD92A25 /* FBSDKGameRequestDialog.h */, - 1DED363DFEDD926102B4745A17AA358A /* FBSDKGameRequestDialog.m */, - 71207309A4BF5422B709A558661FB9DD /* FBSDKGameRequestFrictionlessRecipientCache.h */, - A128707E58E6F7FD7C1268992BEFD2C5 /* FBSDKGameRequestFrictionlessRecipientCache.m */, - ADEBB6BE4E6B7E95DBD5EA0F8198E2A6 /* FBSDKLikeActionController.h */, - A1D336D237B3B30BCE04A43FD371473E /* FBSDKLikeActionController.m */, - 12585EA0DD81C8296E71552C34E29D15 /* FBSDKLikeActionControllerCache.h */, - A1EE50D31E951A4463F312FC9BF343D5 /* FBSDKLikeActionControllerCache.m */, - 2FC77C0223C08FEC9F0BF799243D8F4C /* FBSDKLikeBoxBorderView.h */, - C9E4838EB0ACA07B884CA93AFAD23B44 /* FBSDKLikeBoxBorderView.m */, - D686AFA6A1B571DB6379798EEC41A114 /* FBSDKLikeBoxView.h */, - 47A4C203E7867764F3E284630A0268FD /* FBSDKLikeBoxView.m */, - 1D70B316B602A15A89952D1C307A9D90 /* FBSDKLikeButton.h */, - DD84DEFBFCE10B1818486E633AFAADD3 /* FBSDKLikeButton.m */, - 055D613FCAF2DEE454B4D55F922EE234 /* FBSDKLikeButton+Internal.h */, - 695B20B39C65A0F70AF9F9C9D54CDC02 /* FBSDKLikeButtonPopWAV.h */, - A16681B3380FF1CBA89E6E2F276422AA /* FBSDKLikeButtonPopWAV.m */, - 17D097F39B59CDB7D0438128AF2166D6 /* FBSDKLikeControl.h */, - F7D6DF824B91053634D56B3A1DE837EF /* FBSDKLikeControl.m */, - 9F82DC5081D723743511B666306BC567 /* FBSDKLikeControl+Internal.h */, - 4F58C09538CC735A9D6E6B2036FA8A43 /* FBSDKLikeDialog.h */, - 75CAD372C74E8529A061E6EB2818F982 /* FBSDKLikeDialog.m */, - B410DB6A268571CB00AE7C7B191AFC4F /* FBSDKLikeObjectType.h */, - 00AA046AB84056772E21CE43C551AAAE /* FBSDKLikeObjectType.m */, - 5AFCCD081D365FBB6E1CF56D2CB3AF34 /* FBSDKLiking.h */, - 00317664E706475AA83526A30F2CC298 /* FBSDKMessageDialog.h */, - 1BCF6D36AAFB2D3DDD6EC1074B3664A8 /* FBSDKMessageDialog.m */, - 860483D9361D7525A3473BBEBF3BE90A /* FBSDKMessengerIcon.h */, - 43C58CE6DD6DD31ACA6BE1B0D257427E /* FBSDKMessengerIcon.m */, - 9B56BC63A46E0C60E1F65E1E43FF3D2B /* FBSDKSendButton.h */, - 279F58DF900F5886BE441B7000DE90AF /* FBSDKSendButton.m */, - CF322B34A45C7374C6ACB86C793A0977 /* FBSDKShareAPI.h */, - 819F604AC9E7F0671221BC885460C546 /* FBSDKShareAPI.m */, - DFFDFF65FE7476F1D6C9313962B686E7 /* FBSDKShareButton.h */, - 4D5060E67D251FD6C07A6C8127F60BC3 /* FBSDKShareButton.m */, - 2AF0D88FB66A75671BB0F620D0569032 /* FBSDKShareConstants.h */, - 10135E293A34F093B13620EB7118F0EC /* FBSDKShareConstants.m */, - 82DD9C04E2048B93470902C1B226313D /* FBSDKShareDefines.h */, - C7971F18FB6165E37A0B729145BD2CE0 /* FBSDKShareDialog.h */, - 396620E59D63358DFBB3310A8B068287 /* FBSDKShareDialog.m */, - 3B567AC8F39B4A53D38DEA73D3B7AD4C /* FBSDKShareDialogMode.h */, - 6634E8525E51E4FF70C26E49F54493FC /* FBSDKShareDialogMode.m */, - 73A2CAB8C0CB0FB451E60B3C35C23B4C /* FBSDKShareError.h */, - DFFD8020EDD3222D365D682FB9C69978 /* FBSDKShareError.m */, - E0B83933AD135BA53C1F2A1BD657DA5A /* FBSDKShareKit.h */, - 3F882D75C1CCE50E50D3030EB284FF29 /* FBSDKShareKit+Internal.h */, - AA723A00866BEEDAE1A8E099DFE0C01C /* FBSDKShareLinkContent.h */, - A3F681072693C690033F636D1262450F /* FBSDKShareLinkContent.m */, - 7C50076788F9D1661F6F38C60F88F2E1 /* FBSDKShareLinkContent+Internal.h */, - 88EFF331F662FFFA9E548EA3F9CF8BD9 /* FBSDKShareOpenGraphAction.h */, - D6C799561791E9883CE1451D688B8D98 /* FBSDKShareOpenGraphAction.m */, - A0E7F189FF9BF3307F3E7363608DBD81 /* FBSDKShareOpenGraphContent.h */, - 18A1F36B919BB4094769DA9141FA13B4 /* FBSDKShareOpenGraphContent.m */, - 629A496B7FB2D5E3C39FF55136A1EEE4 /* FBSDKShareOpenGraphObject.h */, - 1630835145A45B1AE1B5731F89DE41E1 /* FBSDKShareOpenGraphObject.m */, - 31B2F765DDFA36C75E4D5C6A387B8EF2 /* FBSDKShareOpenGraphValueContainer.h */, - 7A3E0823C5C63DCBFFF51F3DAA930F7E /* FBSDKShareOpenGraphValueContainer.m */, - 08D5478EDC1981B91D3B2EE8042C45EE /* FBSDKShareOpenGraphValueContainer+Internal.h */, - B1AF0EAA010A2243D3B652627909B1E0 /* FBSDKSharePhoto.h */, - 31A3C807180B3E37B45206DDBBC18002 /* FBSDKSharePhoto.m */, - AE6F6B94AFE361FD0E18CCB6B75A0DE3 /* FBSDKSharePhotoContent.h */, - 7E4D2B2CBD42ED6EEDC6C535E15CDB74 /* FBSDKSharePhotoContent.m */, - 633199AB2B8E7F8DD87937157D733647 /* FBSDKShareUtility.h */, - 2278812C83EFF9DAF44E37BDB2014B3F /* FBSDKShareUtility.m */, - D47FDBAD7CB049CA85F42858313FA486 /* FBSDKShareVideo.h */, - 3A6FA7C694C6B40F59512851C968703D /* FBSDKShareVideo.m */, - 7BD705FB6C7BC580C655F9EB6061B436 /* FBSDKShareVideoContent.h */, - 69B7181C6F142ED4F0C684EC984A9CFC /* FBSDKShareVideoContent.m */, - 1223A0C9FC36B8E26592679DCD48B8ED /* FBSDKSharing.h */, - 2456CB46EED1A00126E3F3CD460B8E39 /* FBSDKSharingButton.h */, - AE99A458700FBFED7B17F712111F6238 /* FBSDKSharingContent.h */, - 252E87DA7170BD6566BD06E26674A007 /* Support Files */, + F008693162E318C7C2752AD302CFB95E /* RKDictionaryUtilities.h */, + D72FC75ED7ED1ECBB9A34AC1705CE17D /* RKDictionaryUtilities.m */, + D344D9A38E931E18FB1095D2364E21E6 /* RKDotNetDateFormatter.h */, + 079E082DB0D5553BF25A89DDB3AF9428 /* RKDotNetDateFormatter.m */, + 3954F2A0287065523FE93833957D805D /* RKErrors.h */, + 0704D1A252C21153AADCFF76B76A34C8 /* RKErrors.m */, + 95B10AC59C183D139DF676CDC2DEF1B0 /* RKLog.h */, + 4BADEB18E715ADFCC4E321048C18D8CF /* RKLog.m */, + 81C8A7F71F4AB5ED22FA83E37837CA80 /* RKLumberjackLogger.h */, + 97E6EC52D54228978DD7489F931C7015 /* RKLumberjackLogger.m */, + CC80DEFA3FC6190520C4E802B4E816FE /* RKMIMETypeSerialization.h */, + F43593C0DC2EA028CFDED6E93DD31EBD /* RKMIMETypeSerialization.m */, + E7C4A5E56ABED18C3E81AB6301A8CB78 /* RKMIMETypes.h */, + 52EBAC1E14508349697276F8E0C80479 /* RKMIMETypes.m */, + CC29231A76F0E95942D3AC8EE9C06770 /* RKMacros.h */, + EF5B4118C2BC93EF32D39A9E3A70073F /* RKNSJSONSerialization.h */, + AA62DC87D5F1898752152729F580A3A0 /* RKNSJSONSerialization.m */, + 103E4A41DD6EB7EE5C4377711291077A /* RKOperationStateMachine.h */, + A397240CB17A369FA7286D7ED09FBDD2 /* RKOperationStateMachine.m */, + 27D73CCE08122C37FC401A9805E8033F /* RKPathUtilities.h */, + 259C735ED2FFC41359586661CE813736 /* RKPathUtilities.m */, + 5EB160597E8E862ED9A4D2CDE6C5ECBB /* RKSerialization.h */, + 7CB0738F082CD21988DD84404C1406E6 /* RKStringTokenizer.h */, + 99CE24FEF0EA1F2943A8DFF00388C985 /* RKStringTokenizer.m */, + E2775131C0FDB72FDE0A1D5A4A819778 /* RKURLEncodedSerialization.h */, + 2C16B289C2694A9F01E5AC4A40F5BBC5 /* RKURLEncodedSerialization.m */, + D68740C3275B619CD6272922B9616689 /* RestKit.h */, + 243B9EEDBFD73BC0E48417E798EB7D49 /* Support.h */, + 5D97C25717E3E4851FE4EFE780A45434 /* lcl_RK.h */, + E11FE2BB216DD98CBF3928F8E5E9A85B /* lcl_RK.m */, + 9F73B326076ED018A7156E4BFED6A5EA /* lcl_config_components_RK.h */, + B83F7B501488845012B0097456793ED7 /* lcl_config_extensions_RK.h */, + B96FAE035A72F2B9E4745AA2941D21DC /* lcl_config_logger_RK.h */, ); - path = FBSDKShareKit; + name = Support; sourceTree = ""; }; - 6853153E7E440E7AC078111AEF0891C2 /* arc */ = { + 58D63C29FC12061DC6628DE00FFC3251 /* Support Files */ = { isa = PBXGroup; children = ( - C6E3A3B7C704403CB94D4FEFBBEEF1B0 /* FBSDKAccessToken.h */, - B24C9F82AA8C193E9B823CF102B19AB2 /* FBSDKAccessToken.m */, - F9DB8A88D120EF79B711A6D9A60C9735 /* FBSDKAccessTokenCache.h */, - FD462163039488768F58B0E9E27E6C43 /* FBSDKAccessTokenCache.m */, - E5DAF6DF08F79AABABEB6DCD99347D5A /* FBSDKAccessTokenCacheV3.h */, - 36275B6CAF874F0A77AECB1185D90A1F /* FBSDKAccessTokenCacheV3.m */, - 8B229FDD88B02BA431226CF6F4C2C557 /* FBSDKAccessTokenCacheV3_17.h */, - 70AE4640E658912F8EA7EB2D84532E59 /* FBSDKAccessTokenCacheV3_17.m */, - D61E6CD1DA3114DB0F3E65D1FD361D36 /* FBSDKAccessTokenCacheV3_21.h */, - 610C8660482AAF6DF1ED051F56BA7AAE /* FBSDKAccessTokenCacheV3_21.m */, - F4EC35BFE04E1EB232697BD6C033CA73 /* FBSDKAccessTokenCacheV4.h */, - 3708EBED7F7E311067B7CCF801145621 /* FBSDKAccessTokenCacheV4.m */, - 14615E83480751392A8DA9C806B52B9A /* FBSDKAccessTokenCaching.h */, - E5071678A9FFE38B25984E1DE154CA86 /* FBSDKAppEvents.h */, - 3ADDE928DDF753FD23E0044BC7A4C15B /* FBSDKAppEvents.m */, - DE7C9DBCE49E309207C0F6DBBD2FC077 /* FBSDKAppEvents+Internal.h */, - EF543883C6E0CD2FC7B4528B2C70C269 /* FBSDKAppEventsDeviceInfo.h */, - 94DCA4C48ED2DED1795550D3340FAB93 /* FBSDKAppEventsDeviceInfo.m */, - 05F2D63CC787EE0E5D2D0F0A73BAF4FB /* FBSDKAppEventsState.h */, - 306334793F42597A58A4BA17738769A8 /* FBSDKAppEventsState.m */, - 6A750B8C4CABD71000E78BA2523A93FE /* FBSDKAppEventsStateManager.h */, - 284C3412CE156CA93B1FBA2AB890B118 /* FBSDKAppEventsStateManager.m */, - E8E7C875C6D9ECD9F2B37DCBDFC9B2CD /* FBSDKAppEventsUtility.h */, - B0F4434611B4FFD948A3FA3E177D8791 /* FBSDKAppEventsUtility.m */, - 31A715898F55241C3204E5E8C95A3963 /* FBSDKAppLinkResolver.h */, - B739AEBEEECA5F2836D6FDE87E7DAD2C /* FBSDKAppLinkResolver.m */, - B22590D9365E880F05CFC1DC1066B067 /* FBSDKAppLinkUtility.h */, - E7679EFCB871C367D45B87FF04498A5E /* FBSDKAppLinkUtility.m */, - EB7DACF210125B509F4D6887A2B2D027 /* FBSDKApplicationDelegate.h */, - F83E67F4212B6068698963474A88BBC6 /* FBSDKApplicationDelegate.m */, - BC26A40586455BB8DD6BA95710C3486D /* FBSDKApplicationDelegate+Internal.h */, - 280B92F20BB7309511EA9EFC8DF7AB87 /* FBSDKAudioResourceLoader.h */, - 4E2155DA6D3D13D23A2BE2F0CBAFE632 /* FBSDKAudioResourceLoader.m */, - EC5644397B97AA444E77A9EB9CFC10E5 /* FBSDKBase64.h */, - 35EAA5B4750A741B6F6FB63B5EF161F6 /* FBSDKBase64.m */, - 3D36D6965ABDC70928CD459FE8BC3B89 /* FBSDKBoltsMeasurementEventListener.h */, - 19BCCC920CFF89CFA88D6CDFD23D5044 /* FBSDKBoltsMeasurementEventListener.m */, - 7EBCBD93200C3A10C234267D819C7E09 /* FBSDKBridgeAPICrypto.h */, - 058D4B861CA7EDC7CCC4C7CA51C1EEB8 /* FBSDKBridgeAPICrypto.m */, - 1F7C92F85D64501768D125A46270422E /* FBSDKBridgeAPIProtocol.h */, - EDB642C66D82496889ED7B13E6DBA70B /* FBSDKBridgeAPIProtocolNativeV1.h */, - C61DC81C824307F112DA576783266C8B /* FBSDKBridgeAPIProtocolNativeV1.m */, - ED57766F65BFA4FA25D7090346C97F28 /* FBSDKBridgeAPIProtocolType.h */, - 74F31D0EDF2CF7E7AAD77F746837D59A /* FBSDKBridgeAPIProtocolWebV1.h */, - 91A3C081AA893B7C7E3C720BDD0B87AA /* FBSDKBridgeAPIProtocolWebV1.m */, - 7865EEF23330A2B2953AF4D3772DDB3F /* FBSDKBridgeAPIProtocolWebV2.h */, - 07D7982BBC669B81B73D2DCE2C8D509E /* FBSDKBridgeAPIProtocolWebV2.m */, - 157F73E38A3EEBACD7E9F322201C0A4A /* FBSDKBridgeAPIRequest.h */, - 2701725284D1AF7F14D88A53E152A451 /* FBSDKBridgeAPIRequest.m */, - EAE1C285AB595843D879319E54ED6E95 /* FBSDKBridgeAPIRequest+Private.h */, - CDD73DC7AE87074EAEDF09FACACF5104 /* FBSDKBridgeAPIResponse.h */, - 41094B5E693D24C0D940E39D86E35B98 /* FBSDKBridgeAPIResponse.m */, - 43A8D4366E635D41E68C80330D1D6303 /* FBSDKButton.h */, - 5217066CC765E38FC661DB8DD6390679 /* FBSDKButton.m */, - ADC11EA5CCDB563EF63FECBB82F1809E /* FBSDKButton+Subclass.h */, - 62433B094D7197450919571030C74B07 /* FBSDKCloseIcon.h */, - 871A5A6C8E91EC01AA7DE9ACD7C59412 /* FBSDKCloseIcon.m */, - 9B08BB513ADF56CF82CFFF7B821CEAB4 /* FBSDKColor.h */, - 028707090FDF1694249FBC4759635D31 /* FBSDKColor.m */, - 567F41DC5BE80C8E3FAD7E42124F6A1D /* FBSDKConstants.h */, - 31B2F7D2FA080E49146AA5468986A493 /* FBSDKConstants.m */, - 1247DC0FBCBA3414C6BFB88ECA3ADA8D /* FBSDKContainerViewController.h */, - 9908DE4518F24CDCE9DEBFBD8AAF7A5E /* FBSDKContainerViewController.m */, - D388F363F30D7354C0DD6EF934AEF405 /* FBSDKCopying.h */, - 7A7F97E5324275ECE8A2DB0BB11F4382 /* FBSDKCoreKit.h */, - CD6F1D91AE76D53924F066A9E871A4E9 /* FBSDKCoreKit+Internal.h */, - 5F767B7B637099477E518FC655BBFC0A /* FBSDKCrypto.h */, - 722DD6778B0569325E2893B96510468D /* FBSDKCrypto.m */, - E2B84A286CDFEFD476C028DA645FE8B7 /* FBSDKDialogConfiguration.h */, - FA75267D4B40F3809876DEBF3F4D299B /* FBSDKDialogConfiguration.m */, - FD0EBED5DD6CD15CFA67F054ABDCDD72 /* FBSDKDynamicFrameworkLoader.h */, - B8734BB39E4CEA7D82E5591EDFECB01E /* FBSDKError.h */, - 7C38CB3F5B5846CA53D031EA7F63E697 /* FBSDKError.m */, - 2E0D7EF42282EAA7CA554AA254D0F09A /* FBSDKErrorConfiguration.h */, - A0AA88C65C641FBD65F890D8F0AB8026 /* FBSDKErrorConfiguration.m */, - 1ED733F365A4B7276A584251EDEE13D3 /* FBSDKErrorRecoveryAttempter.h */, - B674C021D7D553529D1868DE6724ACF5 /* FBSDKErrorRecoveryAttempter.m */, - B7F77AE462F767DFBBE7AE020EC34F77 /* FBSDKErrorRecoveryConfiguration.h */, - 19ACD332B62F67CAEE524FC72B49A909 /* FBSDKErrorRecoveryConfiguration.m */, - A0C91A1662596A108F805EA72954D11C /* FBSDKGraphErrorRecoveryProcessor.h */, - EE40A18D405EDF0DDC2E9EB039576D21 /* FBSDKGraphErrorRecoveryProcessor.m */, - 152E9CDD4624FDDC8186CF180C5EFED9 /* FBSDKGraphRequest.h */, - 60D3605114807AAF6515D9AEE323E75B /* FBSDKGraphRequest.m */, - B122B4FE33C8E68A4C66FCFE7DC77AF7 /* FBSDKGraphRequest+Internal.h */, - 10FB754E7CB98525F95328FAD2C2D788 /* FBSDKGraphRequestBody.h */, - C68D370A7D08931EEB8E723D7B8F35E9 /* FBSDKGraphRequestBody.m */, - 0F7F02E2032B63EE2D9E989373528958 /* FBSDKGraphRequestConnection.h */, - 9F4B36F14A355821D7E2FB123300DDCD /* FBSDKGraphRequestConnection.m */, - 178E1657CE29AD06224A9CDAE2FF258D /* FBSDKGraphRequestConnection+Internal.h */, - F7A8AFB90B055F7CA759BA8AC799303F /* FBSDKGraphRequestDataAttachment.h */, - 5942BB14DE3948BBEF602394405639FE /* FBSDKGraphRequestDataAttachment.m */, - C394ED14B3FB109EF6BFAA2414984518 /* FBSDKGraphRequestMetadata.h */, - 8827063A0A317BDA830C5A1CBEC3F03F /* FBSDKGraphRequestMetadata.m */, - C038B21BF92B30435A80432688533E05 /* FBSDKGraphRequestPiggybackManager.h */, - F02776DDFE76E235B5AF885797A8F4B7 /* FBSDKGraphRequestPiggybackManager.m */, - 35E1B52EE3E2E3E51117F76E0A815856 /* FBSDKIcon.h */, - 60BBB09A1AF30CA3EF9CB3294AA8A5F9 /* FBSDKIcon.m */, - 1C0C4E8FFB7B46EAF4E88536FB6D05C9 /* FBSDKInternalUtility.h */, - 13314419869A5B70A3A44B8807BA61CF /* FBSDKInternalUtility.m */, - A4776CCEC32BF011FC6F64F822052FDC /* FBSDKKeychainStore.h */, - 33370AFC4AF7E1BD533B19E83C86384C /* FBSDKKeychainStore.m */, - 0817A1706D8DF4000848B118C9DEE924 /* FBSDKKeychainStoreViaBundleID.h */, - 5BF0534631608C66AF55C61D37D30B11 /* FBSDKKeychainStoreViaBundleID.m */, - E77CF83F87413203B1BFCA6ED0238DAC /* FBSDKLogger.h */, - B0FEAD05D23D395F290529EE5DB73F6C /* FBSDKLogger.m */, - 21118A1801B385E14793771E3E2EB3DD /* FBSDKLogo.h */, - 578C1B0AB298F33880AF7743E63A09A6 /* FBSDKLogo.m */, - A07F69889F21865BABF7494B7A375A53 /* FBSDKMacros.h */, - 2CB8B17646606A4BA50309E5B9768E26 /* FBSDKMaleSilhouetteIcon.h */, - B0708AC2D79933D1B00549B5767FE60C /* FBSDKMaleSilhouetteIcon.m */, - 5E92731E3FF7A77ABF62EC441D94D3BF /* FBSDKMath.h */, - 8E36424AEF035DA22DC2D4053D625671 /* FBSDKMath.m */, - 96619AD29A8E305120281298BB9C2117 /* FBSDKMonotonicTime.h */, - BB64BAB52FC9332856CA17F5ECED7115 /* FBSDKMonotonicTime.m */, - A4AD7609287338B0BF2365DE061D4525 /* FBSDKMutableCopying.h */, - 25820261B6FF28709163579438BE7D8E /* FBSDKPaymentObserver.h */, - 8918E95EAEEA3883B0958070A6D63E5B /* FBSDKPaymentObserver.m */, - D200CBDECE639A7FCC23CBA4AA40C197 /* FBSDKProfile.h */, - 0BD744AF804A9F5355C68DFD41621893 /* FBSDKProfile.m */, - F213A888C3CDCF3160CB878D06CDFD7B /* FBSDKProfile+Internal.h */, - E4D9A54A95B795541832AC67B6AD76BE /* FBSDKProfilePictureView.h */, - C5C45B89F5B6C19209EDAD31A79E371D /* FBSDKProfilePictureView.m */, - DFB946FBB5587B0F326E668F21F73F3B /* FBSDKServerConfiguration.h */, - 2B91208A301E53477B2B4CCCF31C14AB /* FBSDKServerConfiguration.m */, - EE07970368BAD29465F0F84B9B1BBF89 /* FBSDKServerConfiguration+Internal.h */, - 1BCC4C05D309B44EE5FE3BCBCEF29FF9 /* FBSDKServerConfigurationManager.h */, - 405EFED49FCFF2D26196C7FDF11D924D /* FBSDKServerConfigurationManager.m */, - 93BC124A0CB4D829CA7468516B1F1877 /* FBSDKServerConfigurationManager+Internal.h */, - E39D48341F0F70D7E687A32C109136F4 /* FBSDKSettings.h */, - D94AA448EE0BB8B639F08787CE1F8480 /* FBSDKSettings.m */, - CF8B294E2A7B44762772B83EB5F37585 /* FBSDKSettings+Internal.h */, - 15A55E8ABB2D9F00C4D7E5B591503FC7 /* FBSDKSystemAccountStoreAdapter.h */, - 9278C0A565B9938261216A43EA0177CA /* FBSDKSystemAccountStoreAdapter.m */, - 7679ACE8F1FCAA1786579B614C35BAC0 /* FBSDKTestUsersManager.h */, - 985038F14FE8FC23678ED1F7DDCF796A /* FBSDKTestUsersManager.m */, - 6C943F70CC022BD45D5BC6C312618A47 /* FBSDKTimeSpentData.h */, - 7442E5ADF75557556E523DE6A1E3BE3E /* FBSDKTimeSpentData.m */, - 56DB0C886738CB142BFF8D6C68BDC124 /* FBSDKTriStateBOOL.h */, - 897397ACC5D65221928DE26C756E60EC /* FBSDKTriStateBOOL.m */, - 73DFE94251B23509786E450651A48B90 /* FBSDKTypeUtility.h */, - 44AC0AE8CCB6A9AA9E28BD0E07607467 /* FBSDKTypeUtility.m */, - 13F8602E2C5A9AB96363E1F7B1EFEED6 /* FBSDKUIUtility.h */, - 8DFAA71E4A500F993C066198D2F6B141 /* FBSDKURLConnection.h */, - FBE9B1CE32D01F9E50A891EA8A4513A7 /* FBSDKURLConnection.m */, - E6BB98CFA5D8A318326528AF33DF0BEC /* FBSDKURLOpening.h */, - BD030BCD3379D3A583CB4E1BF4757DAE /* FBSDKUtility.h */, - 95D6DC3AAED48153E982E7B6CE2ACBF2 /* FBSDKUtility.m */, - 3B0A0F292A52A1B2A4F4BBA76248ED29 /* FBSDKViewImpressionTracker.h */, - 260655407F577D163F7D60F3E66F4979 /* FBSDKViewImpressionTracker.m */, - AE6E4E1A35E5A1578967DF2865545D99 /* FBSDKWebDialog.h */, - 4CAFF3BEDD8F0042F6050C5859DE2A0E /* FBSDKWebDialog.m */, - CE802EE1D42445FFBD68FDC5F1B53019 /* FBSDKWebDialogView.h */, - F5599187F396820DE7700A6E7F6E43A9 /* FBSDKWebDialogView.m */, - 3E52BB93D7804BC50FDA99B9B59EB044 /* _FBSDKTemporaryErrorRecoveryAttempter.h */, - 1164BD18616ED3B6D9FECCCA99F68888 /* _FBSDKTemporaryErrorRecoveryAttempter.m */, + 66FE320ED85B83804D275B29BFCDDCFF /* AFNetworking.xcconfig */, + 35AF2ED07EF17B28DEF0B55966C47D4B /* AFNetworking-Private.xcconfig */, + 6FFDF70586FE4143304DC181DA940A51 /* AFNetworking-dummy.m */, + 95ACACF8D7E55EF8FE0FEF697597C3D3 /* AFNetworking-prefix.pch */, ); - name = arc; + name = "Support Files"; + path = "../Target Support Files/AFNetworking"; sourceTree = ""; }; - 7C3BC2426BF03CF0C6EE58DAC886DC2F /* Support Files */ = { + 614979C883124F8704942FAF0E455380 /* Support Files */ = { isa = PBXGroup; children = ( - 0468C80564B418DC62D6A06C75D47E20 /* Bolts.xcconfig */, - 5292F6C0B6F153791486694C6FF45617 /* Bolts-Private.xcconfig */, - 1CC6FCED7A91E155259651DBC0B5262D /* Bolts-dummy.m */, - 86A4C332D9CCAF6221388ED57676952A /* Bolts-prefix.pch */, + E4437BD232D035D19C87DFB253692F24 /* Bolts.xcconfig */, + 101AA17C537653FDA61829C8AB7E5153 /* Bolts-Private.xcconfig */, + 9A4A2624694E7E459F481284E18872D0 /* Bolts-dummy.m */, + A73E1A20457CEF5005A485BBF4301935 /* Bolts-prefix.pch */, ); name = "Support Files"; path = "../Target Support Files/Bolts"; sourceTree = ""; }; - 7D3053D38CB358506E523E685B3B2235 /* Support Files */ = { + 67AF22CFECD20E6348CB8AB93DD93EE0 /* Support Files */ = { isa = PBXGroup; children = ( - D8814D734B55D0B745B301CCCD84E999 /* FBSDKLoginKit.xcconfig */, - 06B9B52AD9A3CF756611E7DAA22CE383 /* FBSDKLoginKit-Private.xcconfig */, - 2EE36FA36A8C91403AF93CAE6EDA4A1B /* FBSDKLoginKit-dummy.m */, - CF97A4EB4D2F59FF601E2BE734C11228 /* FBSDKLoginKit-prefix.pch */, + AEDE84F08919A050F7554C588C364506 /* TransitionKit.xcconfig */, + AB5F89C2FF338EB3D8A14F31581D0B13 /* TransitionKit-Private.xcconfig */, + 15854EBB45118A734AE77C8EFB408F10 /* TransitionKit-dummy.m */, + 0B24226F7C8491F1AB37ED40AB15E909 /* TransitionKit-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/FBSDKLoginKit"; + path = "../Target Support Files/TransitionKit"; + sourceTree = ""; + }; + 6E1FE4EB7D0D493F9F1D1977F4A35013 /* Support Files */ = { + isa = PBXGroup; + children = ( + D8BDF9D0A4444BAF6AB702315EC72D13 /* Parse.xcconfig */, + C01586B6345CA4AB19014D467EAE9DBA /* Parse-Private.xcconfig */, + 1E4620C81A01480F3991F76D4DE7BE37 /* Parse-dummy.m */, + 82E1375889C85A75C3D50613909984E7 /* Parse-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/Parse"; + sourceTree = ""; + }; + 70DD5CAFF1569E609E264EB069CCDCBD /* Network */ = { + isa = PBXGroup; + children = ( + F6235B81BCC7427EC393417D0676C7DD /* Network.h */, + 7F33AA92E57D33A8DE7D71147E3BBDD3 /* RKHTTPRequestOperation.h */, + 8B31ADE78BF2D9A37DCAF22E2F0D53AC /* RKHTTPRequestOperation.m */, + 773B71C6DCFE021055288283663560C9 /* RKManagedObjectRequestOperation.h */, + EC0A8BE947E2CBB52F80DE18D474CE39 /* RKManagedObjectRequestOperation.m */, + ECBDBCED6B21C2F082743CDE93ECBC76 /* RKObjectManager.h */, + E94E46525AFB5C84058140D261543E17 /* RKObjectManager.m */, + FFEAA8C456F1D711FDBADC3559935B4B /* RKObjectParameterization.h */, + 585CBEC762B0BA2C71CFB9F0E84E8B1C /* RKObjectParameterization.m */, + 9863ED0E0DE0D5BD0D54D80394E2278E /* RKObjectRequestOperation.h */, + A771288DA627C1035D810FE2E4D30B4D /* RKObjectRequestOperation.m */, + E22F95FAB4E982B3ABA1D6CB8C422794 /* RKObjectRequestOperationSubclass.h */, + EEC81F732F4810E132758A0C613E431B /* RKPaginator.h */, + CAAEEA7D83368AA927E7EBCBA6F4E80E /* RKPaginator.m */, + 2109F27F00016BC697F3694A3C8A4EF0 /* RKPathMatcher.h */, + 6CFD6F4F94AD214D7B9CEF3544854F4D /* RKPathMatcher.m */, + C5BAEE02437FF882C669F3417F738447 /* RKRequestDescriptor.h */, + 323152BA48F777D5C406ED5AE427B1AA /* RKRequestDescriptor.m */, + 22BCAB2ABFBB3566EC2E7ED45706F704 /* RKResponseDescriptor.h */, + AE1F88C360ED32A2DC0B77A0FB64F684 /* RKResponseDescriptor.m */, + CB3C48DDBE655AE51D1A39695796468E /* RKResponseMapperOperation.h */, + E574880420D8D97A424642A6B5F02579 /* RKResponseMapperOperation.m */, + 82F4CF881DD119649C8445AB7AD1733A /* RKRoute.h */, + CDABF5602F0E0D707DDD4224CB032D0E /* RKRoute.m */, + 341EA091B57F44C4DE7AEFBD627D722D /* RKRouteSet.h */, + 1B949380B0A36EE9DCE1BE3DD205872D /* RKRouteSet.m */, + 596492B6CEEB060FE00A87B8565F380A /* RKRouter.h */, + D145E83E2215C35E1D66DCFD70095EAE /* RKRouter.m */, + ); + name = Network; + sourceTree = ""; + }; + 7490A55B722705CF9527A1ABFF0F0686 /* Pods */ = { + isa = PBXGroup; + children = ( + 355216D0B68C5F751E356F16CC39393B /* AFNetworking */, + A44DF63067E2F57A156F6F26E4E8FDB6 /* Bolts */, + 0130513E0255D02467FEFD0F582D89F7 /* FBSDKCoreKit */, + D8FA314E92C275EA40D64B30C667D251 /* FBSDKLoginKit */, + F479732DA6868638434BB551820FE0FD /* FBSDKShareKit */, + 86234D7B88F187C4500B915C24222CCD /* ISO8601DateFormatterValueTransformer */, + 02F7B739B92EB301B3782F121C4BA83E /* Parse */, + BF85FC055E4FBCDB6CE766DACB11B064 /* RKValueTransformers */, + 7ED1743B44F7B4BD32819FDFD269E1A9 /* RestKit */, + 85378FF92E4A77A8725650504F513C26 /* SOCKit */, + 3D11579387DAC97787D951FD267B9902 /* TransitionKit */, + ); + name = Pods; sourceTree = ""; }; 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, - 24002A6670E6882ECD6250D3E60F9CB2 /* Frameworks */, - F4AE91E31AD3333C57E7E667D8F1BD22 /* Pods */, + 876F80F8AFD1240ED0B7B9EA9C5BFAD8 /* Frameworks */, + 7490A55B722705CF9527A1ABFF0F0686 /* Pods */, CCA510CFBEA2D207524CDA0D73C3B561 /* Products */, D2411A5FE7F7A004607BED49990C37F4 /* Targets Support Files */, ); sourceTree = ""; }; - 89794D4255CC3FB783978193B2E5DA10 /* AppLinks */ = { + 7ED1743B44F7B4BD32819FDFD269E1A9 /* RestKit */ = { isa = PBXGroup; children = ( - 17B1E05B566A858D61F1885B32B64AF7 /* BFAppLink.h */, - 2198309D71CC7402D65F16A43667E437 /* BFAppLink.m */, - 32F98A56A6F6C88E819D8937E418E312 /* BFAppLinkNavigation.h */, - 10F366B82EB075ED6CFE0882D1B87BBA /* BFAppLinkNavigation.m */, - AC06B3B87B029CEA32581C7CEB6C05B0 /* BFAppLinkResolving.h */, - B152B331790608828B3D3221EF8BB3FA /* BFAppLinkReturnToRefererController.h */, - 3CB9A90D939500BE1CEC8324CA790C85 /* BFAppLinkReturnToRefererController.m */, - 90C4E8263D7D7018E90CB006AE5285EA /* BFAppLinkReturnToRefererView.h */, - 32BA9072F15BE4F0B32F6D4CBC36210A /* BFAppLinkReturnToRefererView.m */, - EDD5CE9B3424920B0391E833E095927E /* BFAppLinkReturnToRefererView_Internal.h */, - 041D6BFA828C5A1E9512BEEFEC8F8283 /* BFAppLinkTarget.h */, - B98993B6CB83A0F4F6836BA48CB8855E /* BFAppLinkTarget.m */, - 2315D6063FC476611A25D1D15DDAD009 /* BFAppLink_Internal.h */, - D1F353DA75094169460F4E178D67879F /* BFMeasurementEvent.h */, - 993A21CE56E830A28F273FBEE71237B7 /* BFMeasurementEvent.m */, - BFBAFABD8F6AE7D797021761B45B56BF /* BFMeasurementEvent_Internal.h */, - 60FF9CABF05ED49D7A2F6C7414459E8F /* BFURL.h */, - FE64BADD703C143B203FA8E00FD8FAD4 /* BFURL.m */, - 2DDD6BD25FFFCF1D98AD2C5B68EED6B5 /* BFURL_Internal.h */, - 2221BF7B944E3A928C21F480C8CCE6A6 /* BFWebViewAppLinkResolver.h */, - D5255CB6CDF2850371E17AAA2A1AB6D7 /* BFWebViewAppLinkResolver.m */, + 70DD5CAFF1569E609E264EB069CCDCBD /* Network */, + 9C8C714211C016387ACB6DEC4E72E5FC /* ObjectMapping */, + 551C7C3268E07F208322331004B7AB9D /* Support */, + F948C552CF9EFB5B5DF8C06A725EEA7A /* Support Files */, + 43BA83142E3B59FFFBF477B5A1309DB9 /* Testing */, ); - name = AppLinks; + path = RestKit; sourceTree = ""; }; - 951E09E60F9BEE2200DA298DB53FB98B /* Parse */ = { + 85378FF92E4A77A8725650504F513C26 /* SOCKit */ = { isa = PBXGroup; children = ( - B9D0ABFE846D51BADE9E86A6F8E48989 /* BFTask+Private.h */, - 6A19F56E0F8C29946A8608B76F3A49F4 /* BFTask+Private.m */, - EA1EA428E9AD65BC84701D2503ACC121 /* PFACL.h */, - 3065F7EE96D178C185A3FDEA83907DD7 /* PFACL.m */, - 51F1FF6BF9EE55B7EAA6650EA4BA611F /* PFACLPrivate.h */, - BAD153B7AF61CF6B398EB3FE2E5C2C7D /* PFACLState.h */, - E1339B136ECA6BA809535B109308BBE8 /* PFACLState.m */, - C71D2C477F3399D3AD1EFD4F9A866DB3 /* PFACLState_Private.h */, - 1F4BCC79A27562D8BCE24A7A8DDEB17E /* PFAlertView.h */, - 5F40CD0B016860B2BBC25B6EBBE9E284 /* PFAlertView.m */, - D72924A89C6D36425031B7EB8C451C49 /* PFAnalytics.h */, - 836A8F74A8C94C26BFF6CE7C96CDBB29 /* PFAnalytics.m */, - E8397C0E16E68CA9A74B4BBDED56C9C4 /* PFAnalyticsController.h */, - AADB13268569ACD428CA718A38894A49 /* PFAnalyticsController.m */, - 0862B411E359C83CBD18E519CEF6D94C /* PFAnalyticsUtilities.h */, - FB20A82F1DA5086B118A419F8A505588 /* PFAnalyticsUtilities.m */, - 298BE9F2710D86C3196C6850E44C968A /* PFAnalytics_Private.h */, - 7B2175B028A34E81F071193394F373B5 /* PFAnonymousAuthenticationProvider.h */, - 8858E00C3002371F0FAF9914734C5FD8 /* PFAnonymousAuthenticationProvider.m */, - BD01BA2811FF01AC721F5BD747249BB4 /* PFAnonymousUtils.h */, - 0773FB1AEB768DE82BEE27A777B659A1 /* PFAnonymousUtils.m */, - 33AA341F9AFBBCA79F1F6E89A0571479 /* PFAnonymousUtils_Private.h */, - 8C2DF1B80261AAA9B73D7187A3623941 /* PFApplication.h */, - A2151507558FB08E11B302809C4679D5 /* PFApplication.m */, - 71B258E245FD3703F42B32A176062FDB /* PFAssert.h */, - 46CF33218A1E3A8EEBA12DF120858641 /* PFAsyncTaskQueue.h */, - C6FDA527EF165EC2D2CA5E44A20F1D00 /* PFAsyncTaskQueue.m */, - 8FCC6B0A52F1073866F5045115232A56 /* PFBase64Encoder.h */, - F1AF1463AFA83AA08F43ABCD39BF6FFB /* PFBase64Encoder.m */, - EF274E7B9BD70039B6C19D59B6817F3C /* PFBaseState.h */, - BBE9E1940BF9CB7CB79EEC68691D7CC7 /* PFBaseState.m */, - 887593F0DEE8EFD5BDC3F6E96A7AF9C2 /* PFCachedQueryController.h */, - 778B2BB152B3C76A56D9A45B5E01AC3E /* PFCachedQueryController.m */, - 3AAB126C87821E766861FC4022C4E248 /* PFCategoryLoader.h */, - 5C119E76B1739D418563786A3535A586 /* PFCategoryLoader.m */, - 4E7104272D9C49EA366374D7591B69BC /* PFCloud.h */, - A2EE1BEF00118C9B86DED80D8E9F78E5 /* PFCloud.m */, - 2022F0B4ED20CCE9260B4E160964B9D8 /* PFCloudCodeController.h */, - 62F86AE15FCDD3BDB2B1432E3A970BAE /* PFCloudCodeController.m */, - 0A9B29CACB66253CAD26C692CD8B3617 /* PFCommandCache.h */, - 08A5F9DDBE312E2B39D52155B7463DA8 /* PFCommandCache.m */, - 92C9EF435D1A1B30A324A3863E2CB1CB /* PFCommandCache_Private.h */, - 3723B220F505C587A732C7DDB88DA222 /* PFCommandResult.h */, - FB8484337705B68B729961116D8780FF /* PFCommandResult.m */, - 8B99F25C004D2B7579CC0ED827FDD52C /* PFCommandRunning.h */, - 1A9CE0394A88D885474139DCEB0E2D2D /* PFCommandRunning.m */, - 9AE3A1E847A23D89FFD2AA9F7A96D994 /* PFCommandRunningConstants.h */, - 7FC21711E96478983E21D14A7248B1C0 /* PFCommandRunningConstants.m */, - A2EC2506D904AB39ACE6AC2490368BC6 /* PFCommandURLRequestConstructor.h */, - 32E03031E4F6C80A832AC26957F2BD66 /* PFCommandURLRequestConstructor.m */, - 0B5E087C87BE017FB0C382DC023EA4BE /* PFConfig.h */, - BDD02728E44328FBED3ACBA8A76F69A2 /* PFConfig.m */, - CE5A89927105D9819003581D0C8DD06F /* PFConfigController.h */, - C4D9795941DB7420B09A2A295B29310C /* PFConfigController.m */, - D6D13D12D3B1AC6E70E2C85B780DA659 /* PFConfig_Private.h */, - 831FFA276E384FF81912831665D2ACD1 /* PFConstants.h */, - F31EC4849CD16E6B48A237BDBB0954FA /* PFConstants.m */, - EE30E5F951BC779939012BAD6E3C5693 /* PFCoreDataProvider.h */, - 2FEB5063ADD4EFE8EFFAD97BD5C4D8CF /* PFCoreManager.h */, - C839088F1464046F38572AEA46F43237 /* PFCoreManager.m */, - C69C77ABF5CBDE6FAEA65F67DC68806A /* PFCurrentConfigController.h */, - 9AEC1733825D5A2ABD8D47EE37DC9FEC /* PFCurrentConfigController.m */, - 0D30480B8CCEEB19D1DDA7BA271A3BD7 /* PFCurrentInstallationController.h */, - 316A644BD3E063F9A440F7F164000FB8 /* PFCurrentInstallationController.m */, - E195893EFAF6B4D88041C06F7BD32C88 /* PFCurrentObjectControlling.h */, - 994D05614D1EDF257C36EB9774BC9F9E /* PFCurrentUserController.h */, - 4612BDFDA5045AC0EE6F998D18D57F77 /* PFCurrentUserController.m */, - CD7F12FF98C15CB2FB25F62797543E56 /* PFDataProvider.h */, - 3AB3B7F4B8D4BBB3AF4CFE483FA32924 /* PFDateFormatter.h */, - 395A40E6ED210F9F655AE3ED00AB6CCE /* PFDateFormatter.m */, - 6DE4686D573E489CA8763A9AFF69E884 /* PFDecoder.h */, - 2F9593DC6B40D6FF814A1A143B4F1192 /* PFDecoder.m */, - 84FAF19E9FE280B8C4A65B70B825CD58 /* PFDefaultACLController.h */, - BE9F0035470C161A4516449709B0853A /* PFDefaultACLController.m */, - 5B5990F0ACF5AC91C7955E37265F1135 /* PFDevice.h */, - EC5B7EA9E38C9FBEE69F5B9C0BC4A0E0 /* PFDevice.m */, - 92219F3882F82E7756711A802C7F34EA /* PFEncoder.h */, - 6424FD719BE7F330C61F5BF5C1214B13 /* PFEncoder.m */, - BDD8F3D065CF416DD92F0BB5DE7ADF01 /* PFErrorUtilities.h */, - D76C0DEC86D6F664834D44A8082E5A6D /* PFErrorUtilities.m */, - EDF5AD225C15738985A7A4FFD5F486C9 /* PFEventuallyPin.h */, - 44B6337C2B9832B7597DF729DE1D5419 /* PFEventuallyPin.m */, - CD984CB60274EFFD2FC6F488DBADE377 /* PFEventuallyQueue.h */, - D950227B3A59DCF16242E75918DC221C /* PFEventuallyQueue.m */, - 28938733DD441FACFA78DCA04FC186C4 /* PFEventuallyQueue_Private.h */, - C0625656720CAD50DBE306C724DADC69 /* PFFieldOperation.h */, - 3E85B0B9859FBCA9E74C55E1211ACE9A /* PFFieldOperation.m */, - 2F4F3195CA169976EFA27638B5893094 /* PFFieldOperationDecoder.h */, - F64699881A4C5A9980C295DDA013D4DA /* PFFieldOperationDecoder.m */, - 28039FB8496FC037CD115B9256200393 /* PFFile.h */, - BDA465E9443323180CC1815D1C87C705 /* PFFile.m */, - D03015A70D44B37A63401618F5BAE8D3 /* PFFileController.h */, - 4812BF72649E3FB3CABBD5BEE63A124A /* PFFileController.m */, - FC1407E7292FD644B5484C9433F82629 /* PFFileDataStream.h */, - CA713D1D956929857B5573815E8B700A /* PFFileDataStream.m */, - 77E53941D7D46C602DD11044D3718DE6 /* PFFileManager.h */, - 7768B39DF4B1F1A7BFD05D306CAB1BDD /* PFFileManager.m */, - 89833C3688D20D27A921CD52CBF04258 /* PFFileStagingController.h */, - 927A4EF5B8ED82ABCB709942CC242E06 /* PFFileStagingController.m */, - 5EA792EC53DF7A8B5DA6169AC702E322 /* PFFileState.h */, - 6C9D0DC652ECEB0AC847D646E33E3762 /* PFFileState.m */, - B519F2BE42EA935C61C49611DFDE3111 /* PFFileState_Private.h */, - D131706344B44D723C0EDC00AD04D9B9 /* PFFile_Private.h */, - F1EF1E16E02ADB82F94F4A9757F01077 /* PFGeoPoint.h */, - 7591F734161565C8587390742A1ED783 /* PFGeoPoint.m */, - E91945A365E97AE157FD90FB6032742D /* PFGeoPointPrivate.h */, - 57991A4FD66FFD7B27890292A9F881D8 /* PFHTTPRequest.h */, - D81D0AFDE6434123DE6ED1DC6F6BB145 /* PFHTTPURLRequestConstructor.h */, - 55EDB925355F44E5F4CD0589A4D15596 /* PFHTTPURLRequestConstructor.m */, - AAD6D82FB30E66F727F7DF8841439C41 /* PFHash.h */, - 03E70A5437B075C14B5508D5BFCEEB28 /* PFHash.m */, - B571E0FEC01D103B7151ECA4A256D9BE /* PFInstallation.h */, - 5251FD21A849AFCBA7D4CFF66A674774 /* PFInstallation.m */, - 02460856BC3622AAE8075AE3E3FC91A1 /* PFInstallationConstants.h */, - FF936D8AE384A20B5E843F162679EC85 /* PFInstallationConstants.m */, - ED29B572533174091A28FE94F7BBC738 /* PFInstallationController.h */, - 61F77E151A38F4FE7CA5F80B9415A1AA /* PFInstallationController.m */, - 32CCE778F285747138A0725BD9D1B019 /* PFInstallationIdentifierStore.h */, - 18DA781E03A5FEF86B0ADEA14D9E9E63 /* PFInstallationIdentifierStore.m */, - 01653FEFDB182B8F87FD9FA72A320331 /* PFInstallationIdentifierStore_Private.h */, - 9A4845D88BBD0E2BF9238DBAC29792FF /* PFInstallationPrivate.h */, - 80376EBD200672DDD3336480C347B3E5 /* PFInternalUtils.h */, - 92F1167BDB41D6566E2A2BD962A7D42F /* PFInternalUtils.m */, - 4AF90E9A2D2424F9A61BF41682FAB99A /* PFJSONSerialization.h */, - 42DC5A6ADC1D96FFC19B5446CC236649 /* PFJSONSerialization.m */, - D91A3470D21870EAF9AE6AF9B98A8CAA /* PFKeyValueCache.h */, - B1F9A5CCDA0552CD62CAD6A9C8018543 /* PFKeyValueCache.m */, - 6997FDD65FC84CBE9C0B1F06A436C49C /* PFKeyValueCache_Private.h */, - E166AD26497D5B00C94E0891C82C6BD3 /* PFKeychainStore.h */, - AEDADE6B03CF289BAE3BBAE839E354B5 /* PFKeychainStore.m */, - 73A9A2B2C84C359AC796978E67B9549D /* PFLocationManager.h */, - FCC45D5098F99503478D96062E9B86BB /* PFLocationManager.m */, - D45D3E81C27909856D36BC8D34806CF3 /* PFLogger.h */, - 071B86E1C2AAD3B5091748D714423E5B /* PFLogger.m */, - E2BB5322373C1D0A089D6447434E2F01 /* PFLogging.h */, - 183A69494B93ED3701B335D4754CDE51 /* PFMacros.h */, - C04006B24886DEDB86D8AA796A957464 /* PFMultiProcessFileLock.h */, - 2623540305AAB0140A287E371F61E55C /* PFMultiProcessFileLock.m */, - E7B7004292F62F0BBD9D137660B5648B /* PFMultiProcessFileLockController.h */, - ACC07E15FC2CA7D185BFF1F84D565D3F /* PFMultiProcessFileLockController.m */, - 5B1F0581CF330D76A0A76C63A642DD8E /* PFMulticastDelegate.h */, - FB4DE0ABD27878F01E20805AF9C9D6FC /* PFMulticastDelegate.m */, - 25F9E5B91126E490040E4C142BE17D7C /* PFMutableACLState.h */, - B5B0B7503DC660F1E57F478887AA177E /* PFMutableACLState.m */, - 66C1B850FF8F72C651A98CCB78DB0E42 /* PFMutableFileState.h */, - 6C44C18F2ACA338C07999CAF4BDA46E4 /* PFMutableFileState.m */, - ECFFDF4EED9136970053D3F87C287A38 /* PFMutableObjectState.h */, - F814D3C39AD10478EC573697C25159A8 /* PFMutableObjectState.m */, - 6925CDA0BCBCFF149619E0E29A35A3DF /* PFMutablePushState.h */, - 5CE057D872493F57174963C4F6B50DC4 /* PFMutablePushState.m */, - 1C5C69B84F7FCD1066173E02E04716CE /* PFMutableQueryState.h */, - 6959DDF11EB0DBA886C8071FA6536544 /* PFMutableQueryState.m */, - 059EBF24A2AB19E48A0FE457DA504A78 /* PFMutableRelationState.h */, - 38A085262915DEFB26BD203072DD601B /* PFMutableRelationState.m */, - 7312C6904E7BD6A83FF99B8A93855A01 /* PFMutableUserState.h */, - FD87D91BF55E5388FB9F03A3ADE8B577 /* PFMutableUserState.m */, - 1D62A4BDE3836C5D2CBA3510FF1F7F03 /* PFNetworkActivityIndicatorManager.h */, - 862C4A36A947B7610B400462C749359A /* PFNetworkActivityIndicatorManager.m */, - B13CC16593686DB265856434BBFC4594 /* PFNetworkCommand.h */, - 5C9C1D9FAA0AB4875FD3710EBA7C5926 /* PFNullability.h */, - E60E681E3152FF31E45D14307138A1F0 /* PFObject.h */, - 96DEB41D236F2F957F542803B7242485 /* PFObject.m */, - 621186073ECC02598EFBC30E0D60F6A4 /* PFObject+Subclass.h */, - B02C63468CE0F7F2C99C5865466B0C19 /* PFObjectBatchController.h */, - CCEC1C29226031242E5C3329E7913386 /* PFObjectBatchController.m */, - 983F35D2D34ACB272BCEEEC6040DDF33 /* PFObjectConstants.h */, - 9820DB142515E9FE68F1635778CDF436 /* PFObjectConstants.m */, - 76C526DD236D0ABDBBDEEE2285B501CC /* PFObjectController.h */, - B23B2A450DD924145ECEEBCAF9F9DE49 /* PFObjectController.m */, - 284898C95718E6C68579D4FE3FE4B5BA /* PFObjectController_Private.h */, - CDFD024CF43A4AE623C0F5C4BDF1A912 /* PFObjectControlling.h */, - C316ACA67E163041176B415E9B6CD9DD /* PFObjectEstimatedData.h */, - 3E0284BB2426357ED603C689888DD262 /* PFObjectEstimatedData.m */, - 61EFCD5D7B14809002EECB4A73721FD4 /* PFObjectFileCoder.h */, - D1061A294A0D25A3BFAB4FF7B35C1A9C /* PFObjectFileCoder.m */, - D20A9EB54DFD244FBACB2A29830F5CC3 /* PFObjectFileCodingLogic.h */, - 40FC928384A8D2A945845B0EB6281D6C /* PFObjectFileCodingLogic.m */, - 9C247169039B75E0BFB4A9F4811F5A7D /* PFObjectFilePersistenceController.h */, - BE5646EAD6FEC69BB2B3C73D922BED8E /* PFObjectFilePersistenceController.m */, - 611ADAF0571A733561852B6D6D73901A /* PFObjectLocalIdStore.h */, - 07D32532031A1C89062D9473123DC3B2 /* PFObjectLocalIdStore.m */, - 35F6EDACB4373C69CDD53204DEFA7B7F /* PFObjectPrivate.h */, - A4C16395183819CC55902C187BBF3588 /* PFObjectState.h */, - 583552D355C9486BC5473CB54B561686 /* PFObjectState.m */, - AA3F835F4861D394CDA474F016B68DF3 /* PFObjectState_Private.h */, - D24D2A9A2A00617641EB1C9DAF8E5BD9 /* PFObjectSubclassInfo.h */, - 5F9F7B355F7CD6C75C1B6D99445E1702 /* PFObjectSubclassInfo.m */, - BD39191E0A16426B7F816A902E3ED1A2 /* PFObjectSubclassingController.h */, - 7B8C83CAC30A6E627FC4C625FE78664C /* PFObjectSubclassingController.m */, - DDB5F6DBCF6A420FE4A916EF00D431E9 /* PFObjectUtilities.h */, - 27AAD21F178D79A8CCA228342BF2E4B2 /* PFObjectUtilities.m */, - 0CFCFDB608A66C522ECD909465A4CDFD /* PFOfflineObjectController.h */, - 59E56D9E5ED9372FE9F67EE8F685C3DB /* PFOfflineObjectController.m */, - 2590AA5D13156556306B9B8ED6AD2D74 /* PFOfflineQueryController.h */, - 805A9C7F80B24B7D43C26816704C0E61 /* PFOfflineQueryController.m */, - E7FFCEEBB5EF7D5A28D81A02BAD268FD /* PFOfflineQueryLogic.h */, - B49C8BAF9D69B1E6568421F922FD8F3A /* PFOfflineQueryLogic.m */, - 6510524988D56D1E9B8FC5C067C04B9A /* PFOfflineStore.h */, - BA3BE979C7C897206FAB369D2B6BE3BB /* PFOfflineStore.m */, - E5CCD914EAF1670C15EFE26F755C80A1 /* PFOperationSet.h */, - 75D753CB65D28E2B39894FBCB517D0A3 /* PFOperationSet.m */, - 6EE4677B561DC6EB86FA8571CEE64AF1 /* PFPaymentTransactionObserver.h */, - 41CAAD93B8E8E5A2F8F2F8297FFE95AC /* PFPaymentTransactionObserver.m */, - CC1532E55E3DE39D552270CFBD839CF6 /* PFPaymentTransactionObserver_Private.h */, - 279CEB44F83E8E0913B50FCE426C934D /* PFPin.h */, - 12D6C59ACE08BC3F7440AFA3074159F7 /* PFPin.m */, - DFD9CDB1EB349CA71F08124AACE22058 /* PFPinningEventuallyQueue.h */, - 5015295E9D9B6BD11C70E85285B15C0C /* PFPinningEventuallyQueue.m */, - 89FA1CDB34FC6A266A0CB85649B29BAD /* PFPinningObjectStore.h */, - 582D21818FB0E31756573C0CEAC6A8B4 /* PFPinningObjectStore.m */, - 991B6A74EED7A47CCB0295E345AE6B36 /* PFProduct.h */, - 0368EC0DFD738EA132782A0111A76AD6 /* PFProduct.m */, - A13F1B5B057D95AEB199BD0AC1569C85 /* PFProduct+Private.h */, - 6771448442ACE74CF1DA8462E84FE3C1 /* PFProductsRequestHandler.h */, - 3F782BE969B5510EDD8EC6903FD236BE /* PFProductsRequestHandler.m */, - E82368CA082B92ADBB3B0DA8C9D29791 /* PFPropertyInfo.h */, - 4991C6D1D1F1E90244D63C683726742E /* PFPropertyInfo.m */, - 0BC74937463C566796639512770F35CC /* PFPropertyInfo_Private.h */, - 64E64C3C1EBC666F4CF3A2893F8DB8F1 /* PFPropertyInfo_Runtime.h */, - E0856F90FBBE3E20ACD8BC2DC4D7936A /* PFPropertyInfo_Runtime.m */, - 8690C66AA184BBA764246933C2A4A354 /* PFPurchase.h */, - 1E6F860380815B6D4EE77B3B136F98BB /* PFPurchase.m */, - 6D0BD04081C3A718EFB63F79C43FA7C0 /* PFPurchaseController.h */, - BCC05D6904CB78C337D61B1211C5BC6F /* PFPurchaseController.m */, - 0175D7D3E9C314F1D72F51BB23D70137 /* PFPush.h */, - 02F00ACE2DBD4B299DE97EDC74368855 /* PFPush.m */, - A2B0C52AADDA52456790576546FCC99D /* PFPushChannelsController.h */, - 46C04343C64E76EC67462AD59BFCEAA3 /* PFPushChannelsController.m */, - F496DCF5311E5B908DE4C4911C062A01 /* PFPushController.h */, - E40D5277A9FEE4394113FE40E8457989 /* PFPushController.m */, - 7631CDE057643A0E17ACCC4DAF8BBF13 /* PFPushManager.h */, - EC749D5306636F8078256E3AD6AEF7C7 /* PFPushManager.m */, - 33E340B3658DAFF8B960E00C876976B1 /* PFPushPrivate.h */, - DDC74E76E8D8BB53B2921A4D81230691 /* PFPushState.h */, - D6B6858EBB4F2461F279E542CA9305EF /* PFPushState.m */, - 7B1E5184AF7DB35882426974C6E4F54D /* PFPushState_Private.h */, - 26127A113C8DE5D855C538CEEE818097 /* PFPushUtilities.h */, - F0B0CDDA729281358070EBBED9C52BB7 /* PFPushUtilities.m */, - AA6155E47D6756DC20B676A1E6799081 /* PFQuery.h */, - 33749F5083DAFA1A1E3A782C771A1569 /* PFQuery.m */, - 4954F834F6DA1CCC4DE29F801E8E6A52 /* PFQueryController.h */, - D13DEF1A34A6346D0D141BE69B48222B /* PFQueryController.m */, - D97F582E69FFF8BC67A3DB17D398C9C5 /* PFQueryPrivate.h */, - C9AFF24120C438CE8768D912A12FE069 /* PFQueryState.h */, - DF9A789A3EB2E9881006021046DBA3A5 /* PFQueryState.m */, - 880EC96BB6771023E9A8E3DF31FD9310 /* PFQueryState_Private.h */, - 23A2C3297FA5C533D7041CCE18A98771 /* PFQueryUtilities.h */, - 2B302392664E4BE2747A482E82F65D97 /* PFQueryUtilities.m */, - A0F5F8B13BF4255AFCED026AC6B211C8 /* PFRESTAnalyticsCommand.h */, - E9A152C5D066C52D0A1CFF6EA97C0303 /* PFRESTAnalyticsCommand.m */, - 4FEF83ED93FDFDDF9C57D5020D1F5EB6 /* PFRESTCloudCommand.h */, - 05274B2C48957E129DCADF7E7BB272C1 /* PFRESTCloudCommand.m */, - 70137F33147D3F372FC44F6E67E63899 /* PFRESTCommand.h */, - 11AECB6BCE686A69BECE7B35B96E410A /* PFRESTCommand.m */, - DBFBAEBF5E6EDC57B0F60C53E56D90FE /* PFRESTCommand_Private.h */, - B5440ED9524EB35C55FB414229EDA986 /* PFRESTConfigCommand.h */, - A6A972AC76383DCF37E7008206794C8F /* PFRESTConfigCommand.m */, - 8F1129A22D3FF953177EDA6105319682 /* PFRESTFileCommand.h */, - 8EDAD3C1FD06B798BC04244B0271C9ED /* PFRESTFileCommand.m */, - 9F91500B4545DAA6F7241732589F388A /* PFRESTObjectBatchCommand.h */, - 068DBD6F64C945AE062AA96733338643 /* PFRESTObjectBatchCommand.m */, - 88A728EC723990EFB69B861995E74ECC /* PFRESTObjectCommand.h */, - 8018CD5321B09E6AA082BFED9506705E /* PFRESTObjectCommand.m */, - 191B469630ED03845A82C1836CBDDF7A /* PFRESTPushCommand.h */, - 6EB6555F0750836E4B76B0C08567E4F7 /* PFRESTPushCommand.m */, - E557E21B22E0695434EA0A8BF54D2A5D /* PFRESTQueryCommand.h */, - 91A20DEF4E05121BC0D3BA0B95057690 /* PFRESTQueryCommand.m */, - 909527AB697DC5F602A8BEE088B28420 /* PFRESTSessionCommand.h */, - 11CEF84C21F6B2D0803987B5694F5F14 /* PFRESTSessionCommand.m */, - AB89D35DE0F5C32E58B215882C35703A /* PFRESTUserCommand.h */, - 11EFC989CAB132B6D48E25A50D67FBC9 /* PFRESTUserCommand.m */, - 282E7F3B29E9E0666DC2F0DD9E9BC196 /* PFReachability.h */, - 99BD86550F9CEEAFE247409114E419D3 /* PFReachability.m */, - F409B315AFACD2CDD448DFD6401146FC /* PFRelation.h */, - 7809BA66D5768E97BE3CB53E36ECAC4D /* PFRelation.m */, - D1936061C906ACCF7096B33BC0F8B8D5 /* PFRelationPrivate.h */, - 89BE488D5FB2949B04C3B2078CB54ACE /* PFRelationState.h */, - B524B63009EE535EBA7977E07F2F824F /* PFRelationState.m */, - 53680AD3533A53E841E40B971C980E33 /* PFRelationState_Private.h */, - E47AEA771CADAF0F7E1A8716B513852F /* PFRole.h */, - 7127C42346F2C6E7C6852278A7D91999 /* PFRole.m */, - 442BC9945073FD644D98DC6A0BDCD0D1 /* PFSQLiteDatabase.h */, - 30AEFC89FB4F53E87A31D13E8D1108FC /* PFSQLiteDatabase.m */, - E543FA1FAC8FAA14119B1F575299C209 /* PFSQLiteDatabaseController.h */, - F060686A92FC706C2AC04A14E7348F4D /* PFSQLiteDatabaseController.m */, - 3652FCED3441641775C14E6FD5BC06D1 /* PFSQLiteDatabaseResult.h */, - 81D6701BAB69FFA1D5E976AA8AE47D90 /* PFSQLiteDatabaseResult.m */, - 7E6CC90C5C183BC584DAC5A06F3B7AB7 /* PFSQLiteDatabase_Private.h */, - 671C93F34B25F0E2D951C18DF74FBE1C /* PFSQLiteStatement.h */, - 34AD764CE1E3CBCA034D21A0B4EDFC69 /* PFSQLiteStatement.m */, - 4BDEBE5111524FC2428EBDDD195197C8 /* PFSession.h */, - 2D2B6CA8A26E1A54057C96806C92CBB2 /* PFSession.m */, - 11895677202537B8F1FA94B44D23ACFD /* PFSessionController.h */, - 48E607B7C98F48C601E0A8EADDB4199E /* PFSessionController.m */, - 81FCF70E549275BAA5747573A561C836 /* PFSessionUtilities.h */, - EB6A4EB9D35740998C6D23740E612D5C /* PFSessionUtilities.m */, - 19768BDA094897981754F254573AA405 /* PFSession_Private.h */, - ECBD1659924D8AA95D83F0EDE40C2614 /* PFSubclassing.h */, - 55D18B6A42464EFB5D7AC64708485ECF /* PFTaskQueue.h */, - E4DE147989205694AE9667AACA7AECD9 /* PFTaskQueue.m */, - DEF1EA4E1F9251BFCF197D8CF0D4A299 /* PFThreadsafety.h */, - 9B5B7577FF23FD60A87A8C05EA2652E3 /* PFThreadsafety.m */, - 037AABBBCA13696A48290F5766CC10B4 /* PFURLConstructor.h */, - DACF075638B9FC0CD730644C26FB71E5 /* PFURLConstructor.m */, - E381E7C31CC253F19B9DBADD0D0C49A6 /* PFURLSession.h */, - 0462A31AED64616A9EA07AE370D6A31B /* PFURLSession.m */, - 7919FE3E34E4A4E8FA40E5EF771D417F /* PFURLSessionCommandRunner.h */, - 5587C60D4A8E123E1C1112734C3FD4A8 /* PFURLSessionCommandRunner.m */, - AC0B78FA41B62305BA8AB5B5C9C0EF51 /* PFURLSessionCommandRunner_Private.h */, - 5701B935661FE2B2D953052CE58E255F /* PFURLSessionDataTaskDelegate.h */, - 1F85984F43D0AE4CBF449F432430888C /* PFURLSessionDataTaskDelegate.m */, - CA7489220D6C75107468852C7C0A0D03 /* PFURLSessionDataTaskDelegate_Private.h */, - 163419D898E7F370D581B4668E1A8F90 /* PFURLSessionFileDownloadTaskDelegate.h */, - EF85D0CB5A209F611DBE0B95DD6E0937 /* PFURLSessionFileDownloadTaskDelegate.m */, - A9EC065D9C7FD03E63A29BCF6F3A428C /* PFURLSessionJSONDataTaskDelegate.h */, - 183EE46003EBA5A7639B3EC6AC265522 /* PFURLSessionJSONDataTaskDelegate.m */, - 98FE22DC82B2E9780B8345DD11E25245 /* PFURLSessionUploadTaskDelegate.h */, - 87B2FEF6137A22119E9C4BF5999B87A1 /* PFURLSessionUploadTaskDelegate.m */, - C2398FB910D7AF39F3C66C51408D84D5 /* PFURLSession_Private.h */, - 766CE3F27E11129F0EFA11C60884ECFC /* PFUser.h */, - 8F19786B895155DF0DBA51BE5462CDCA /* PFUser.m */, - D3B177B3970048B89F03D66264703FDA /* PFUserAuthenticationController.h */, - 1F15A1AA5F5C733E8B06847912B9D6C2 /* PFUserAuthenticationController.m */, - 8248A75015CEDF0E471BD2919921A0FA /* PFUserAuthenticationDelegate.h */, - 492800396C7B66131BE664D3B6D93D67 /* PFUserConstants.h */, - 89771FED47F0BB242E7B85A73CCEEE3A /* PFUserConstants.m */, - 9C4B1918D6C2748B708FBA9010D47C59 /* PFUserController.h */, - 465813B1FEEE434D921E2CE4F2EE3F87 /* PFUserController.m */, - EB012283833C25F7392F7395A1DD2D26 /* PFUserFileCodingLogic.h */, - 19D77D49AB34F2DECC9C970A88D920DE /* PFUserFileCodingLogic.m */, - F20CDC41B5A71F131F228EA1F49FAE29 /* PFUserPrivate.h */, - 59024F193667AEB7E18165A249D687E7 /* PFUserState.h */, - 8350BE6813045E1E683091FF4C71539B /* PFUserState.m */, - 945E0E4F9730840B5671665F5AE4F8C6 /* PFUserState_Private.h */, - 0EFB00044A9A987E6150AACA4DD28233 /* PFWeakValue.h */, - 786CD905662A5B821B7FBD479582CBCD /* PFWeakValue.m */, - 997EE9B33EDCEA687B122C5D12D9A6E2 /* Parse.h */, - 4D93203DD4AFE0B35B1D82EF027EE2E3 /* Parse.m */, - D605E91ED4E689A9CCE862F2F178290D /* ParseInternal.h */, - C923F6FD789CB2C9F384405DEACE388F /* ParseManager.h */, - A4FA890C6CF8DCC5C56BF4D23B3D4EC0 /* ParseManager.m */, - 9826F9EF99C989F23C8760ECCF731EB0 /* ParseModule.h */, - BAEDA41B80675DA1345DAF6D8F0D4632 /* ParseModule.m */, - 729D6D653BE34D23C8D053B85CDD5E97 /* Parse_Private.h */, - 63A5D4C13A14A38F2A436EDF181C19F0 /* Resources */, - F7B367CB58EC1993BB803642898AA53B /* Support Files */, + 96A98B34414903617DDCC4DD35D0ACC8 /* SOCKit.h */, + 89622454B6309852AD9687B0820C02B0 /* SOCKit.m */, + 419D143B243406657CF78820DB7B76BD /* Support Files */, ); - path = Parse; + path = SOCKit; + sourceTree = ""; + }; + 86234D7B88F187C4500B915C24222CCD /* ISO8601DateFormatterValueTransformer */ = { + isa = PBXGroup; + children = ( + 76B3B4CCA7886CC75FFCF9656D10AD03 /* ISO8601DateFormatterValueTransformer.h */, + EA6CB7DF499DDA0B9313150859AD14F0 /* ISO8601DateFormatterValueTransformer.m */, + EC2DB7FD65BD1EA61BB08642939C3DDC /* RKISO8601DateFormatter.h */, + 28FC8B75B37315B6FEDFAC246BEDB597 /* RKISO8601DateFormatter.m */, + 30B8E8FB632D39C4AD04195963D8DD50 /* Support Files */, + ); + path = ISO8601DateFormatterValueTransformer; + sourceTree = ""; + }; + 876F80F8AFD1240ED0B7B9EA9C5BFAD8 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 20C6A3B1763BEF1D2A45847DA52F6720 /* iOS */, + ); + name = Frameworks; sourceTree = ""; }; 952EEBFAF8F7E620423C9F156F25A506 /* Pods */ = { @@ -2244,69 +2747,91 @@ children = ( 15A529C27057E4A57D259CBC6E6CE49C /* Pods-acknowledgements.markdown */, BF59BC15D23E1E1912C8F334E7236813 /* Pods-acknowledgements.plist */, - 7C6A832BE98AC2513DCF0311F799732F /* Pods-dummy.m */, + 8CCE9BE6DF0576998191D1D52675A3EF /* Pods-dummy.m */, 641AE05DD55E5E6AC1590CD7B4A18F97 /* Pods-resources.sh */, - 0556ABAC4F9D071C431F5D3711FDE1E9 /* Pods.debug.xcconfig */, - F8F8D92E9BF54CF0325CDBF3A13F511C /* Pods.release.xcconfig */, + 2D582428208099E80BE466E2940ED2D0 /* Pods.debug.xcconfig */, + E0CC0033498B3D96CF358C75CCE120A9 /* Pods.release.xcconfig */, ); name = Pods; path = "Target Support Files/Pods"; sourceTree = ""; }; - 967F8C1FA14C7E8AE26DDAE9AEC18626 /* FBSDKLoginKit */ = { + 9C8C714211C016387ACB6DEC4E72E5FC /* ObjectMapping */ = { isa = PBXGroup; children = ( - 4F598868B799F457865DCE7BA2139460 /* FBSDKLoginButton.h */, - 6B12F7845B8017EA22B0E0EEF0B3B56A /* FBSDKLoginButton.m */, - E921A833B36DAA6D8087D3841D15FC40 /* FBSDKLoginCompletion.h */, - 86858E70734ECDA22030AA8DC8467710 /* FBSDKLoginCompletion.m */, - A3A2CA15348284F196D703170DDC0118 /* FBSDKLoginCompletion+Internal.h */, - C438E8586D1D6C401A986F82E9815270 /* FBSDKLoginConstants.h */, - 9764C114535D7CCF89F76AD383D000DF /* FBSDKLoginConstants.m */, - CAE37334F4838571A1A3347478DDBD93 /* FBSDKLoginError.h */, - 5F06057C5FB4F34C78273C6773FE934A /* FBSDKLoginError.m */, - A588ADAFB9768AED4B3BA282F6561A68 /* FBSDKLoginKit.h */, - 3DEDE777646928ECFED937EF0600521E /* FBSDKLoginKit+Internal.h */, - 9390C92F1CE8467A8432506858B8172F /* FBSDKLoginManager.h */, - 4D1AB96A6A99AA8FC62B50D926542778 /* FBSDKLoginManager.m */, - 36C87C6A0D356709A30FBC0A3D13EA86 /* FBSDKLoginManager+Internal.h */, - 6F5245D9C22CC21BB136BDC2AC4955ED /* FBSDKLoginManagerLogger.h */, - B0E053D50F29084CF7D3D802F1517C70 /* FBSDKLoginManagerLogger.m */, - F10C958A391650BD6ABEE08D4D0EF8D8 /* FBSDKLoginManagerLoginResult.h */, - 8B4D99B79C54CE4DF16ED8030ABCA255 /* FBSDKLoginManagerLoginResult.m */, - 3B38B03E5392BB79AE3F31D3346D7A1F /* FBSDKLoginManagerLoginResult+Internal.h */, - 2144DB6EA4F8D23EDA85ED9E54139327 /* FBSDKLoginTooltipView.h */, - A59F5C8E499F158AF013FD0A4D779E33 /* FBSDKLoginTooltipView.m */, - 690DD19198EE8D5F0127BA29BE0469C5 /* FBSDKLoginUtility.h */, - 99849B37667DE2EF2F45DD8C3C4E1188 /* FBSDKLoginUtility.m */, - C7984134808FC31A9208D31DFE42B6AF /* FBSDKTooltipView.h */, - 042A2244DF3B5F5C519B2D9711580B50 /* FBSDKTooltipView.m */, - A9C899258C0EA110D85E7B48171B6432 /* _FBSDKLoginRecoveryAttempter.h */, - 27330F2C59009D2CCAFFFB3332D30BE4 /* _FBSDKLoginRecoveryAttempter.m */, - 7D3053D38CB358506E523E685B3B2235 /* Support Files */, + D6264AE68EC2461B52D7BC087CC60C51 /* ObjectMapping.h */, + B563402F32E620824AD23105E63019A7 /* RKAttributeMapping.h */, + 49EA15DA07E51D9C44D29EF7BFB6F1E2 /* RKAttributeMapping.m */, + 98D59999C2F13A02F8927597F85000C8 /* RKDynamicMapping.h */, + A0426D7149778C1DBF70DD5B3253A081 /* RKDynamicMapping.m */, + 45B3E4226F866D5C78E3AE4441683829 /* RKErrorMessage.h */, + 0D726415722488F38181C0A46AB22051 /* RKErrorMessage.m */, + 1FAEC79833DB40A28030BB60070264FC /* RKHTTPUtilities.h */, + 4D15AFCABB51E916BD6FFE6D663CCBED /* RKHTTPUtilities.m */, + 3C15EE98D2719FAA6A81AAB54A7E471D /* RKMapperOperation.h */, + DD2F082EFF4A90CEA1BD4B18821FD489 /* RKMapperOperation.m */, + 1BA732D4BA53C90B93834949CEB41543 /* RKMapperOperation_Private.h */, + BE80753CE5B8297DCAAA5C864D7D7A5B /* RKMapping.h */, + DC32DADD67B93D4C8A1DC5D924364B07 /* RKMapping.m */, + A47788042F4DC03B2F9C830BA9EA5567 /* RKMappingErrors.h */, + 0401D69DFE749735649FE64519D6905B /* RKMappingOperation.h */, + E201DE8EA287BAFA4B7303204B5FE3C9 /* RKMappingOperation.m */, + 2EE325AB5D11F8E0314EC1A65AFC915A /* RKMappingOperationDataSource.h */, + 905ADB423401F79FA90F610A1CEB29F1 /* RKMappingResult.h */, + 757FF14AABAC587C4E6F945A1E8D4472 /* RKMappingResult.m */, + 8DE47CA373FCE248BB502DF421F6B2A3 /* RKObjectMapping.h */, + 3B29A50B713DB33904E5298D3E082CA5 /* RKObjectMapping.m */, + 7EFB8D910130BB4CE5DC011047B4653B /* RKObjectMappingMatcher.h */, + 635550F96E6CB4B30D674CA6B3D59AAA /* RKObjectMappingMatcher.m */, + 7143CA35B7DBC71915BDD3C8FFA6F17B /* RKObjectMappingOperationDataSource.h */, + 6C12D518D08748E88B0F70890764B8CD /* RKObjectMappingOperationDataSource.m */, + 8F840FB713741211963007A36C4C972B /* RKObjectUtilities.h */, + 9A7897D08498CE169C9E0F8BA5015E80 /* RKObjectUtilities.m */, + 4AA98567E44F5A893A264AAAA201DC0A /* RKPropertyInspector.h */, + E85C8888E5F1BB8E85DC368D6DB18999 /* RKPropertyInspector.m */, + 5CA7D87557CA7C23E2FD33B16F7B4A87 /* RKPropertyMapping.h */, + 905A2264F8751CFD5E0FFE6C92CE7462 /* RKPropertyMapping.m */, + F9A46E7E5599417031AAC9FDEE8F6162 /* RKRelationshipMapping.h */, + AD6755DF1120CF7F9CE51A66D317FC9F /* RKRelationshipMapping.m */, ); - path = FBSDKLoginKit; + name = ObjectMapping; sourceTree = ""; }; - AE002A940239A1B74390C75CA4E5964B /* Bolts */ = { + A44DF63067E2F57A156F6F26E4E8FDB6 /* Bolts */ = { isa = PBXGroup; children = ( - 89794D4255CC3FB783978193B2E5DA10 /* AppLinks */, - 7C3BC2426BF03CF0C6EE58DAC886DC2F /* Support Files */, - 381EF370C8F09BA2E6F4C9CD17E0BABA /* Tasks */, + EFF0EAAC511F6D20942CACAD5560A527 /* AppLinks */, + 614979C883124F8704942FAF0E455380 /* Support Files */, + 0E03188E9A4BF5C7937C9A2A68F675D0 /* Tasks */, ); path = Bolts; sourceTree = ""; }; + BF85FC055E4FBCDB6CE766DACB11B064 /* RKValueTransformers */ = { + isa = PBXGroup; + children = ( + 4839C0B94DA359E603C96FAAF9707D62 /* RKValueTransformers.h */, + FA90F3562F16E440E91FA13E29FED87A /* RKValueTransformers.m */, + 1440A3238D63F76B4474109B3C960C81 /* Support Files */, + ); + path = RKValueTransformers; + sourceTree = ""; + }; CCA510CFBEA2D207524CDA0D73C3B561 /* Products */ = { isa = PBXGroup; children = ( - 46D403D3185FA87D018A34BBD7A76FC0 /* libBolts.a */, - 7431B6B9B7E1DFEF929BB54553B5676F /* libFBSDKCoreKit.a */, - FB0644F2C0DBFC0141F618380733B87C /* libFBSDKLoginKit.a */, - DAAE63B311691BDD6651032E86A8597B /* libFBSDKShareKit.a */, - B71C430B59468A7C97039EC40E16D99C /* libParse.a */, - 5FB626B7387C990243FEC9C3854CBAD8 /* libPods.a */, + 48D9F0444140EC888D96942489E879B4 /* libAFNetworking.a */, + A4365F0D13404D6A5A7FA5FE5156F9E2 /* libBolts.a */, + B2B61F565ACF0CDFAAE4247A1F8D4A5C /* libFBSDKCoreKit.a */, + BB00D6E02A224030D5BDFAF952816C36 /* libFBSDKLoginKit.a */, + 9EC619ED9963ABF73BFCE22527769210 /* libFBSDKShareKit.a */, + 115AC32B7B718A94B00F763F6051128C /* libISO8601DateFormatterValueTransformer.a */, + 69BA2E95DE6DD4BD8CCD5C2F04F31412 /* libParse.a */, + 149E15962A38A8DACF6A9781F4A92F22 /* libPods.a */, + 991823AD655E78B8754FB6DE31C15928 /* libRKValueTransformers.a */, + B0F9682AC6A9C5259D9F3D4BCCD455B1 /* libRestKit.a */, + A54BA714770BA8ED007819BC352FEB7C /* libSOCKit.a */, + 4E37F47F8B8CC9C91B39061A7536E3E9 /* libTransitionKit.a */, ); name = Products; sourceTree = ""; @@ -2319,569 +2844,1085 @@ name = "Targets Support Files"; sourceTree = ""; }; - E46A0832738AC01F481C0A1AC7761E0C /* Support Files */ = { + D8FA314E92C275EA40D64B30C667D251 /* FBSDKLoginKit */ = { isa = PBXGroup; children = ( - D61C8185B740497218D477F278420CDD /* FBSDKCoreKit.xcconfig */, - 9201ECF588FA8BB08DDBF3C8E4CD31A3 /* FBSDKCoreKit-Private.xcconfig */, - C934943D7A25BDE5AA3C99D0D0E2D06A /* FBSDKCoreKit-dummy.m */, - 10D75599B0B083CB8DA9B5FE832071BA /* FBSDKCoreKit-prefix.pch */, + 132DA86A6F8F171F7FC7130F078FFCE1 /* FBSDKLoginButton.h */, + F747176FC803B53FE0AC39C84633F516 /* FBSDKLoginButton.m */, + 72D0BB4387B18BC30B9E1DFA837849CF /* FBSDKLoginCompletion.h */, + B9254F90896402000DEE03CA2001F4A0 /* FBSDKLoginCompletion.m */, + 44AC358011ABD9D6C4C840D2F2EAA419 /* FBSDKLoginCompletion+Internal.h */, + F86021BC8DF5012821F54BBFC611409E /* FBSDKLoginConstants.h */, + 8EB6F1445D886E9B17EB6D384EE6DF8F /* FBSDKLoginConstants.m */, + 0AD87F2B55AE1CC46DE21D8EC71A1A65 /* FBSDKLoginError.h */, + C565C7D7E5AC00E6AB9CDCF110BC3C25 /* FBSDKLoginError.m */, + E29A4EC1C5F11EA0A4FDAD2152F177FA /* FBSDKLoginKit.h */, + 0DBE3A827C4CAF42FAF19063819A6576 /* FBSDKLoginKit+Internal.h */, + 1A7CF9343BE7F2F1B6FB78E1A12A6B72 /* FBSDKLoginManager.h */, + BB557FE6B9E9C5D59E6A3DEB4AB7846E /* FBSDKLoginManager.m */, + 99FE17414C621D6F3A13235F179D4CB8 /* FBSDKLoginManager+Internal.h */, + 932E74B6527148FA6780C77E8DBF2ED5 /* FBSDKLoginManagerLogger.h */, + 9D3A56A201096D2EE5931E4024DA7419 /* FBSDKLoginManagerLogger.m */, + 82E686107E1090E17BFD23A272EE10CA /* FBSDKLoginManagerLoginResult.h */, + AA6AE3659CB5F993D0249F89C25AD457 /* FBSDKLoginManagerLoginResult.m */, + B4DD5861C8879004366D84A43D21E0EB /* FBSDKLoginManagerLoginResult+Internal.h */, + AEFD765B313DFFD0B0729C789E148EF3 /* FBSDKLoginTooltipView.h */, + 9EBC7480ED94D3BDC49F07CF67845245 /* FBSDKLoginTooltipView.m */, + 5A4672908B1FD7E4D44907A16C893880 /* FBSDKLoginUtility.h */, + 691DE4C572928B4D4009AA95D722D4C0 /* FBSDKLoginUtility.m */, + E54E8701407F893752653C4221AF069C /* FBSDKTooltipView.h */, + 8C5C8164C6C45E75534AA683EB3EE80B /* FBSDKTooltipView.m */, + 184AA3B1233A04E41BF6626A6B9D8891 /* _FBSDKLoginRecoveryAttempter.h */, + B306BF5D4F5F8F5EDE605D550B1C60E4 /* _FBSDKLoginRecoveryAttempter.m */, + 3469EB0551979288C3680B8569507614 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/FBSDKCoreKit"; + path = FBSDKLoginKit; sourceTree = ""; }; - F4AE91E31AD3333C57E7E667D8F1BD22 /* Pods */ = { + DB7767554DE90C6D7F4BD0C504716532 /* arc */ = { isa = PBXGroup; children = ( - AE002A940239A1B74390C75CA4E5964B /* Bolts */, - 506CAA494D3B21DBBAD983F4BAED119F /* FBSDKCoreKit */, - 967F8C1FA14C7E8AE26DDAE9AEC18626 /* FBSDKLoginKit */, - 660F7FA41B8491B7303D71C44F4D78C2 /* FBSDKShareKit */, - 951E09E60F9BEE2200DA298DB53FB98B /* Parse */, + 4E373E20F8B2B8C3F9D13CB19C365A5B /* FBSDKAccessToken.h */, + EE91C76BB85C4E576878A7495046B128 /* FBSDKAccessToken.m */, + 29BDAC347646877BAF67F12CBA39BDB2 /* FBSDKAccessTokenCache.h */, + EB1F007AC472787A75B816C5E983D202 /* FBSDKAccessTokenCache.m */, + FF8B340E1E07288B43D2125E1C95D71E /* FBSDKAccessTokenCacheV3.h */, + 6AF7D10C408FD6D8AB132E00A1837154 /* FBSDKAccessTokenCacheV3.m */, + EAF2E74037EC3A295A7DD2A670A1D20C /* FBSDKAccessTokenCacheV3_17.h */, + 35A73E0B40DC10C4D7D7B780D2C67F00 /* FBSDKAccessTokenCacheV3_17.m */, + 386296E81D7A932F1BD2EAE4210CD7B3 /* FBSDKAccessTokenCacheV3_21.h */, + BB1463FA77383563F1C437523A44E1A7 /* FBSDKAccessTokenCacheV3_21.m */, + 36625BA3EB692FB9405C776E41327F85 /* FBSDKAccessTokenCacheV4.h */, + 551D1565F536116924C965E8BC843AEC /* FBSDKAccessTokenCacheV4.m */, + 65A4F7F6E3DD2EA0621A632278E51E25 /* FBSDKAccessTokenCaching.h */, + 04DEAAD70B0460B7272FDFBAD65C2F1A /* FBSDKAppEvents.h */, + 2EBD9E78DE2BF6EF77A771D225D5E591 /* FBSDKAppEvents.m */, + C21A8ADE7B5A34350D10B56CD7A8761D /* FBSDKAppEvents+Internal.h */, + 15FDA819E4A67B0052C5B32B6C6BC32C /* FBSDKAppEventsDeviceInfo.h */, + E0932D59414A78A0F565507651988C6E /* FBSDKAppEventsDeviceInfo.m */, + 506B72DC5629AC3D911C7391ADADB54E /* FBSDKAppEventsState.h */, + 28D76BC349DBB9D1197FFC7ED4732AAA /* FBSDKAppEventsState.m */, + F34EDF50D35D822209224F910D198B22 /* FBSDKAppEventsStateManager.h */, + 3367B0B681D943417FA5E440D899F4CC /* FBSDKAppEventsStateManager.m */, + 4312B7DA20D0FDC68E026677B16FB93B /* FBSDKAppEventsUtility.h */, + 5B5E002FD0140DA26430A35510C313F8 /* FBSDKAppEventsUtility.m */, + F5A2FEDDD4FAA9868A664F18973566D7 /* FBSDKAppLinkResolver.h */, + D5F4A79DAE04667AB0D76DAE48003BF2 /* FBSDKAppLinkResolver.m */, + A794CC4D4A2C1FBA46304C8A08FBBF13 /* FBSDKAppLinkUtility.h */, + 84B84882EEBE825A5C543B49CE80D4F1 /* FBSDKAppLinkUtility.m */, + C2C5BFAAE603122C4F742787E40F1FA8 /* FBSDKApplicationDelegate.h */, + 73DF5CF1E91847F2BBD8BC5574BE7A24 /* FBSDKApplicationDelegate.m */, + 58F67B018A57B934A2029E1BB32BFEB5 /* FBSDKApplicationDelegate+Internal.h */, + FAE0A480CEB462BDB4902AA2752B2A92 /* FBSDKAudioResourceLoader.h */, + 3A8C0790E53BC4B6EA94B51E24532E88 /* FBSDKAudioResourceLoader.m */, + B9DD727DB3D3919B717CCB2FAE4F0055 /* FBSDKBase64.h */, + A633AA451BBF3810EF096AFCD04B189D /* FBSDKBase64.m */, + 4E79911FE858017F50A495D51DA3DE5D /* FBSDKBoltsMeasurementEventListener.h */, + 985451595F8F27101D95712CABD99D9C /* FBSDKBoltsMeasurementEventListener.m */, + 39EA90D4F4D435F351B6F8488F1F81CF /* FBSDKBridgeAPICrypto.h */, + 099E18F815C1869B7833BD3221BA0636 /* FBSDKBridgeAPICrypto.m */, + D3DE4E8FCBBE262C58F8AC13C7DF4FC0 /* FBSDKBridgeAPIProtocol.h */, + F21D0FB2302BFB55563A040B9162207A /* FBSDKBridgeAPIProtocolNativeV1.h */, + 093F04A337062D005B479463914EBC72 /* FBSDKBridgeAPIProtocolNativeV1.m */, + 1011B8135A3EB4DCC7EF201AE71B3FC8 /* FBSDKBridgeAPIProtocolType.h */, + C8EEE74C77FC0E8CCF6F9BF61F91F077 /* FBSDKBridgeAPIProtocolWebV1.h */, + F651120BBA44138D57BED00C2ED1EF68 /* FBSDKBridgeAPIProtocolWebV1.m */, + 6C56FB7EA3918F4E9420A03CBD1DD4C8 /* FBSDKBridgeAPIProtocolWebV2.h */, + 056454EF3FADBB01D32D7C28A920E5D6 /* FBSDKBridgeAPIProtocolWebV2.m */, + B44F9A0151A29D7133BB6B1A3BBFA048 /* FBSDKBridgeAPIRequest.h */, + FD42CC4829F51D2B45C0EDB14E79F901 /* FBSDKBridgeAPIRequest.m */, + 51B4EC6E2C9E5D654933455F7EE946B3 /* FBSDKBridgeAPIRequest+Private.h */, + B45B64C4D463C82AD88669B314F94E5E /* FBSDKBridgeAPIResponse.h */, + 637C1162277BA70B8FC486099BA5E68A /* FBSDKBridgeAPIResponse.m */, + E4FFF0B95027627ED5EBB9BE910229E5 /* FBSDKButton.h */, + 90EF6645B1C52A9102DE489C1AEB98C0 /* FBSDKButton.m */, + 0801E5E29361C01869760055DF9A576B /* FBSDKButton+Subclass.h */, + 98E26BE57B0986BD287273920656152C /* FBSDKCloseIcon.h */, + E331A609413384712D37CBCA13A36822 /* FBSDKCloseIcon.m */, + 1860C6036F41AF4136B179EC2D9939E3 /* FBSDKColor.h */, + A89DBD55CC24CC46C0835D3E92056BAF /* FBSDKColor.m */, + 6E3C2F4799E92C0B65ADDB13C693731F /* FBSDKConstants.h */, + 1955631553D95C0ED5688DA6F29CC8E6 /* FBSDKConstants.m */, + 66C559E290710757C262E9572627F8BA /* FBSDKContainerViewController.h */, + CBCE8C9C024E2B9BFFE1FA847AB1076D /* FBSDKContainerViewController.m */, + FBD4CF261D1D2C204727792A7FD59D0D /* FBSDKCopying.h */, + AA8D4BA554A6B6C1B406BECC4D387E3F /* FBSDKCoreKit.h */, + 2FD7126F63E44E22CF5C50BA6B03A193 /* FBSDKCoreKit+Internal.h */, + DD19C370DA2FF7DD5B14BFC2239460EC /* FBSDKCrypto.h */, + 86D941FDEEC92E2EA2835097C2161C04 /* FBSDKCrypto.m */, + 6D5B659F40540D61E87428BFCB17AF51 /* FBSDKDialogConfiguration.h */, + 2281F1087FCCD198F1FD69A1A5036483 /* FBSDKDialogConfiguration.m */, + 32087D68AA15B65193CE803974E093B2 /* FBSDKDynamicFrameworkLoader.h */, + 8268565FACDED1D6C7B9BE1728B7EC67 /* FBSDKError.h */, + 2890440E42FDEC4C76D4C02BC10E1DD4 /* FBSDKError.m */, + 749C7452D497A9A10B0021891AC18286 /* FBSDKErrorConfiguration.h */, + 64DC079156B1C3D9892D30F49E7CF06A /* FBSDKErrorConfiguration.m */, + 249868FBCC4788A742D8CFD87310BE9C /* FBSDKErrorRecoveryAttempter.h */, + 6D4B932F8281FFA4CACCD488B25D8399 /* FBSDKErrorRecoveryAttempter.m */, + D4EDDE3B74C6C46CB945C40C67C4412A /* FBSDKErrorRecoveryConfiguration.h */, + 0C0A1A0341B691B932463C02DCAFDDC0 /* FBSDKErrorRecoveryConfiguration.m */, + 4943E9CC3F93FDF967E81314D76CC855 /* FBSDKGraphErrorRecoveryProcessor.h */, + 3893550463B3F2896DA11E95A24787C5 /* FBSDKGraphErrorRecoveryProcessor.m */, + 0AD287C54F7CB5375C2852F3503334A8 /* FBSDKGraphRequest.h */, + 63D0078344D4783DAE24EA204C2F2B76 /* FBSDKGraphRequest.m */, + E10BAEA96BC88D721B89668384A854DF /* FBSDKGraphRequest+Internal.h */, + 88B6008DB095748E5DD60D4357F1130E /* FBSDKGraphRequestBody.h */, + 1DBD4C55AA3FFD740DBC08F5C47D6E0C /* FBSDKGraphRequestBody.m */, + A54DE73C817619BCCC8C09FEBFAAE717 /* FBSDKGraphRequestConnection.h */, + D3C357F8599ACB541583E1B55372A148 /* FBSDKGraphRequestConnection.m */, + 45488E198C9CA5E2D83FDDD1A6F2C741 /* FBSDKGraphRequestConnection+Internal.h */, + 9EF29D84C9187AAE24AA165B2347ACAD /* FBSDKGraphRequestDataAttachment.h */, + 42C79B025767C1D9A3147013CE056436 /* FBSDKGraphRequestDataAttachment.m */, + 0E1C86507B3C7A9D987C1EE846A6E40F /* FBSDKGraphRequestMetadata.h */, + B7200C42FD7821618E5C729A6715D406 /* FBSDKGraphRequestMetadata.m */, + 20C0209C7621AD4E7C7E895393FEEAAE /* FBSDKGraphRequestPiggybackManager.h */, + 7FBEBBBD069AC4F0A63136014F0C9C54 /* FBSDKGraphRequestPiggybackManager.m */, + 82F4B771C010B07B8269F863B9D5E124 /* FBSDKIcon.h */, + 6E5BFC99B4A9E8CFC77CB440E5B6A68F /* FBSDKIcon.m */, + CCB66A62E1727B274EBDAE6A324F1EF1 /* FBSDKInternalUtility.h */, + 12DB62145E101EECBBF2B0ECBD3625D6 /* FBSDKInternalUtility.m */, + 4533001C2D55630F9C37C6627CA516F3 /* FBSDKKeychainStore.h */, + E5B4019C9415D7F5E3578EB347E6428C /* FBSDKKeychainStore.m */, + B177AF318ABF25BE42BEEE03E5A4504D /* FBSDKKeychainStoreViaBundleID.h */, + E01BDF8B06C7ABC8B0E2C8198B12534E /* FBSDKKeychainStoreViaBundleID.m */, + 3732A1AC8F240E488FC16C8707FF1E6C /* FBSDKLogger.h */, + D58141339BD4E1AD139F6D8757D818ED /* FBSDKLogger.m */, + FE7E4B7205CCF39AB7DC993A7C496D35 /* FBSDKLogo.h */, + 9D87F51C610B0FE64B3895D47FCAF2B6 /* FBSDKLogo.m */, + 8BBDCAE31F786B578147D2A338A29E5B /* FBSDKMacros.h */, + AD669A1EAE15893820BD4F03CDCE9EDE /* FBSDKMaleSilhouetteIcon.h */, + 3F812EB07D870BBFD5F42E05E17C7391 /* FBSDKMaleSilhouetteIcon.m */, + 94241AC9E14ADC6F4BF3A74F37C7443B /* FBSDKMath.h */, + 36BFEC5CD6E83BF4C00AC37F0AFF0C3F /* FBSDKMath.m */, + A061230EB53B9A3D0D74C5E8D62680CA /* FBSDKMonotonicTime.h */, + A1DAFA76443338477CB91F2DC0FEDC9E /* FBSDKMonotonicTime.m */, + E15937F78BA7C53854BA468EA624BF4A /* FBSDKMutableCopying.h */, + C18CECEFC7124D4D8DB78DDCA56F3E73 /* FBSDKPaymentObserver.h */, + 1779F15C59809673515A3EBCF2C22457 /* FBSDKPaymentObserver.m */, + BC87F50A886AA4FC59C239579C59B23A /* FBSDKProfile.h */, + 7B96A479BB821E005E1541AE443F5296 /* FBSDKProfile.m */, + 193263D0A1C4B4903D81B084F3616AC7 /* FBSDKProfile+Internal.h */, + CF7DFB4A5A35BCE03D459F72C536D132 /* FBSDKProfilePictureView.h */, + 7353118F412B2CA3124108B64BE5533C /* FBSDKProfilePictureView.m */, + 2166AF7026817E78A1616576AA382EE3 /* FBSDKServerConfiguration.h */, + 82DEAB301EC606D81DDB79F260128939 /* FBSDKServerConfiguration.m */, + BBEEA079EE2C1E3F7FCF0D4A242F3338 /* FBSDKServerConfiguration+Internal.h */, + 36A148580114BC82A5E01A2432F549D8 /* FBSDKServerConfigurationManager.h */, + 172810485903145DA5B543BCCDD9710D /* FBSDKServerConfigurationManager.m */, + 44AFCC4FD732944B15943D675B7BBD73 /* FBSDKServerConfigurationManager+Internal.h */, + 4C11C508533F23B09A4472C54933C508 /* FBSDKSettings.h */, + 1AD3DE9B80F57FA325D62663B4BFF9A0 /* FBSDKSettings.m */, + 449D2F1679AC195C51DC348284B99B77 /* FBSDKSettings+Internal.h */, + 520097C3241654D444726517A1906AD9 /* FBSDKSystemAccountStoreAdapter.h */, + C487CF8BD9293F62ADC3EC7ED11DF7E2 /* FBSDKSystemAccountStoreAdapter.m */, + DEC313363BCD979A9C39D7B1E66A2755 /* FBSDKTestUsersManager.h */, + 91D0862B2FAC5E1E4D6ACAB14BE40FD0 /* FBSDKTestUsersManager.m */, + 8FE2369D45F007102130145D672D47C7 /* FBSDKTimeSpentData.h */, + 5EA7DD3F8E2A43DDC4BC7D78D495BE88 /* FBSDKTimeSpentData.m */, + 8C61DC5A959A8218D355C33FFDD05395 /* FBSDKTriStateBOOL.h */, + 5765993E55A9BEF96BE2124E9CC1E550 /* FBSDKTriStateBOOL.m */, + EE4A34C51200E57B9DBB1BE412048AE7 /* FBSDKTypeUtility.h */, + C7249D4C5D5FE59893DC804D17C271BD /* FBSDKTypeUtility.m */, + DFA8A38F2CAE4CCC62494E192CD68C97 /* FBSDKUIUtility.h */, + D6D2578CC6CCBAA314053520BEEDFC51 /* FBSDKURLConnection.h */, + D2C830B4D9FDB6DA319A8D346A942692 /* FBSDKURLConnection.m */, + 61F8017FEF232B21270544D23BE67BBF /* FBSDKURLOpening.h */, + 49B32C446E230AF54905CEEA3305D3DB /* FBSDKUtility.h */, + 6A37F6B69937BDBBB1A609C50E20359F /* FBSDKUtility.m */, + 2F1964D552EA65831BBC604C32B2ED59 /* FBSDKViewImpressionTracker.h */, + E067CA9E21A26662DA824DAC1A521DD1 /* FBSDKViewImpressionTracker.m */, + 2002E8422D89C583334968262BDCE8E7 /* FBSDKWebDialog.h */, + 62463AED6B63FD1BFCF534909E594242 /* FBSDKWebDialog.m */, + 839CDF95C7EB745D855A1D1CD5E90C77 /* FBSDKWebDialogView.h */, + 1CAD9C68AAF00E405CF6AAA2841B7C73 /* FBSDKWebDialogView.m */, + 1124CA6C3A9CDC4513ADC2393C447BE8 /* _FBSDKTemporaryErrorRecoveryAttempter.h */, + B6707D507E40761A2A3DB33A5EBE648E /* _FBSDKTemporaryErrorRecoveryAttempter.m */, ); - name = Pods; + name = arc; sourceTree = ""; }; - F7B367CB58EC1993BB803642898AA53B /* Support Files */ = { + EFF0EAAC511F6D20942CACAD5560A527 /* AppLinks */ = { isa = PBXGroup; children = ( - D278AD7FDD5A46F106410E751FA6B672 /* Parse.xcconfig */, - FAD786BC4ACCD93AEF869C440819A61D /* Parse-Private.xcconfig */, - 1660A7818BE658914CAD0B03854799AF /* Parse-dummy.m */, - 9CB6162708CA811C045FC48276E533AC /* Parse-prefix.pch */, + D4BBD3B141794583886966E10E9DE885 /* BFAppLink.h */, + 6C8452D720D17A4AE9F49D703F4456F4 /* BFAppLink.m */, + 23780D118CBD55B9811B664EAE111A4F /* BFAppLinkNavigation.h */, + 2B9375688AA4B17E0481C9DEF5E1CDC7 /* BFAppLinkNavigation.m */, + 8FC8E6958F515A1458DD253105E635AB /* BFAppLinkResolving.h */, + C5558E780E37E74781BB1613EF8D6F1A /* BFAppLinkReturnToRefererController.h */, + BD6248F1913A738A21279EA50BBFB18E /* BFAppLinkReturnToRefererController.m */, + FF2F36415F8EDA1603770F277D605DAC /* BFAppLinkReturnToRefererView.h */, + 2BCD6FD3DADE66AF00AD766F8C7CAAEE /* BFAppLinkReturnToRefererView.m */, + 84E51A0ADCB24DAC5F16586A7E22A679 /* BFAppLinkReturnToRefererView_Internal.h */, + ABF0B6755B46A73A4D5A66DC91176994 /* BFAppLinkTarget.h */, + 58B8D0C5A6A7DDEE013D14931B007DA4 /* BFAppLinkTarget.m */, + 6B38BFE99240E2343065A81810BCD299 /* BFAppLink_Internal.h */, + E2590DB19BEB23E0CD50EA9B430C4328 /* BFMeasurementEvent.h */, + 20904F67CBBE7208D5F1E68654CE0F20 /* BFMeasurementEvent.m */, + 2CBA80D14BCC38865278570CF75FD31B /* BFMeasurementEvent_Internal.h */, + 3C21952B82AFD2B07F65F1B3D08202AE /* BFURL.h */, + 502CF173BC61117E6EE98B0AECE5CB5F /* BFURL.m */, + 45498ABE1A6B5EAA74C26A43CF36BFB7 /* BFURL_Internal.h */, + 7FD3846A7DAFF7196AF5C2F45BCD8A5A /* BFWebViewAppLinkResolver.h */, + 79E1D204CE90D1BA1A7B1CE8E631A4A8 /* BFWebViewAppLinkResolver.m */, ); - name = "Support Files"; - path = "../Target Support Files/Parse"; + name = AppLinks; sourceTree = ""; }; - F9400E82BDA8E39AA40BABDC6CB12014 /* iOS */ = { + F479732DA6868638434BB551820FE0FD /* FBSDKShareKit */ = { isa = PBXGroup; children = ( - 281C73120A87B602C8A007845677FA4B /* AudioToolbox.framework */, - 70A2ACBCF37165DCF827CE708D6D4C9E /* CFNetwork.framework */, - C97DF3988890CAEF8564FB45FDC77191 /* CoreGraphics.framework */, - 992BF67D0574DEFDA7B5A5DA35227955 /* CoreLocation.framework */, - 16C1BE08E656F2DF06A77D8D3034093C /* Foundation.framework */, - ED97321AD7E6EF7BB46B7C26AFD43451 /* QuartzCore.framework */, - 61EC245B07BF5B2B8DAB7F7D13FF56EB /* Security.framework */, - 83550267DCC8A2C04DD26DBA885C6379 /* StoreKit.framework */, - 47F6D008CDDC192BF994FAA0B8B41043 /* SystemConfiguration.framework */, + 0604B97C12B3337FD1CACD5908DADF8F /* FBSDKAppGroupAddDialog.h */, + 238732EAA8097AAF32A176A68CD82F76 /* FBSDKAppGroupAddDialog.m */, + 8960D7D3ED69E1B3DCCEB842BB3727DD /* FBSDKAppGroupContent.h */, + 7A3F937AE0B76FE001B1424707650BE3 /* FBSDKAppGroupContent.m */, + D2FD3D5C2EE761325B9883A907C8BC4E /* FBSDKAppGroupJoinDialog.h */, + D99237E043D8D55F742E4FFCE42D91BF /* FBSDKAppGroupJoinDialog.m */, + B9DDC28C55F77A12AE9ED00D59C5CDF6 /* FBSDKAppInviteContent.h */, + 0072CE5DF3D9990F609BD5035548F5B9 /* FBSDKAppInviteContent.m */, + 6D80A7028E913FB27600E32FE2F0D0D0 /* FBSDKAppInviteDialog.h */, + 1592F16F5E573F913E7D111CEB121A50 /* FBSDKAppInviteDialog.m */, + 02FC7E859C916A1DBF3665CCB705934E /* FBSDKCheckmarkIcon.h */, + D7084EA8F2963F3F4F4C3902295FC9E8 /* FBSDKCheckmarkIcon.m */, + 5D4096B259A00B3CA7AFD492984A10BA /* FBSDKGameRequestContent.h */, + 80F8EAC3DBA16F147C2EED3D1B93D248 /* FBSDKGameRequestContent.m */, + 6DFB97640F65DA922830BFCD6E8BAE3F /* FBSDKGameRequestDialog.h */, + 33BBC7950FBFD8EC38A39966E30603F6 /* FBSDKGameRequestDialog.m */, + 6E7F4A2F3E63A394F39CDBFEF74FFB35 /* FBSDKGameRequestFrictionlessRecipientCache.h */, + 1BF338323FECE8F074D22D8BD870DF10 /* FBSDKGameRequestFrictionlessRecipientCache.m */, + 4123C94C7948B9704563A505B3014AB6 /* FBSDKLikeActionController.h */, + F9D67943D4B100689C01F858F4E29E79 /* FBSDKLikeActionController.m */, + 64092AE7CD9ED392CE2C1C98A9D583BA /* FBSDKLikeActionControllerCache.h */, + 986BA44834A1379FA62C25B6BA8F688C /* FBSDKLikeActionControllerCache.m */, + C4B17C271B89B911A8934903A0081DAB /* FBSDKLikeBoxBorderView.h */, + EE70C5E8CCF28AFCC633F82542872D63 /* FBSDKLikeBoxBorderView.m */, + 94B2708249CC1A4C374BE0BE9A5C2161 /* FBSDKLikeBoxView.h */, + 12807CE1156EF23D621FBB87101DEF6D /* FBSDKLikeBoxView.m */, + 191B64353A25EF72E4466B2F6B9EBEE3 /* FBSDKLikeButton.h */, + DC31DCE7EACED0F72777050473D30EFC /* FBSDKLikeButton.m */, + 57633529551BBEE1B15067746D4C1A0F /* FBSDKLikeButton+Internal.h */, + 0B6D5A9ACB11850D607ADB4A0BF03613 /* FBSDKLikeButtonPopWAV.h */, + 9AF33E0422D0D6894776A47D9A815993 /* FBSDKLikeButtonPopWAV.m */, + A17C481C0F1C64EB4AB1CFBAF183C08E /* FBSDKLikeControl.h */, + C928A35FC17069C2883652CB9DFD6587 /* FBSDKLikeControl.m */, + 7078C0E27AB4BBE276699BEA6B6332B4 /* FBSDKLikeControl+Internal.h */, + 40D041AA460AE7AD2009874357D2204A /* FBSDKLikeDialog.h */, + 2623CB720FCCE67AE1CCB1219F214621 /* FBSDKLikeDialog.m */, + 5DC7FE94FD4993099292F9042265623F /* FBSDKLikeObjectType.h */, + F492164F566E8CFCD2E106F61A435A12 /* FBSDKLikeObjectType.m */, + 5BFF0A5FD4D4F15BC52A5CF35AA8BD33 /* FBSDKLiking.h */, + 3D3EBBEF6D5B4018AA707132922DC9B4 /* FBSDKMessageDialog.h */, + 4EAC1A8028073BA5B4C512B18244EBE8 /* FBSDKMessageDialog.m */, + D06E4D2A257CB23AD3B3C24D65250338 /* FBSDKMessengerIcon.h */, + 1127B3C5AFB734B232FDDA51D4E340BE /* FBSDKMessengerIcon.m */, + 0AA098F387A57A706C7677CC210587E7 /* FBSDKSendButton.h */, + 844E60D98084AFA1C1191666646A744B /* FBSDKSendButton.m */, + 6F5B4BDBF3900CA5DDAB9B63E2EE063C /* FBSDKShareAPI.h */, + AF0E2DA4583C19DA08D84DBF506EC7F3 /* FBSDKShareAPI.m */, + 547B33431DB5136808EDC0F26EC4181E /* FBSDKShareButton.h */, + FC75AD2CED5E67E206316FE8FCE7F2E8 /* FBSDKShareButton.m */, + 4F6C04F3A381B95E747E5867DB4C81EE /* FBSDKShareConstants.h */, + D20725012BA649DB28A11E8B87CB03B2 /* FBSDKShareConstants.m */, + F73ADC2CD4C8BD33E777C07D6362654C /* FBSDKShareDefines.h */, + C6D760F3CA5FB942A7E23EA61A3C62A7 /* FBSDKShareDialog.h */, + 95C3B6319C8BEC9A72589989076B040E /* FBSDKShareDialog.m */, + 2210879128FAFD55EE381E85138A6E97 /* FBSDKShareDialogMode.h */, + 1F9AAC2C6FF818D6EC48169DC75AF8C0 /* FBSDKShareDialogMode.m */, + BA24326AC3CD75BD5A00788CED0B32FC /* FBSDKShareError.h */, + 234BE7352A8ED0F63714ADF373DC4713 /* FBSDKShareError.m */, + 3863A24C8545BD8471114044940471D0 /* FBSDKShareKit.h */, + 875545166E1B56B37A2E9CEAE067A11D /* FBSDKShareKit+Internal.h */, + F0030B71A6DC75CE9672B5AFBC38BCF4 /* FBSDKShareLinkContent.h */, + B6DB762A22230B1B2984E7A10A6D4431 /* FBSDKShareLinkContent.m */, + 46CD7CED669BB2E7D7C29361322568D4 /* FBSDKShareLinkContent+Internal.h */, + 26E851E7927031416617D440DC5A8D91 /* FBSDKShareOpenGraphAction.h */, + 8C1ADD04949F1ABA82756CBA171DA5EB /* FBSDKShareOpenGraphAction.m */, + C53B22331817009F0D1E49A90BC5F35C /* FBSDKShareOpenGraphContent.h */, + 7CA70E2AE68629BDED8957B97443D682 /* FBSDKShareOpenGraphContent.m */, + D3C4E0A343874015ABB97CF3BB6C0347 /* FBSDKShareOpenGraphObject.h */, + 14B70CCCA8DFFB7FFCA35AC2170FF307 /* FBSDKShareOpenGraphObject.m */, + 7D657474E403B993C149CC1F51629EB2 /* FBSDKShareOpenGraphValueContainer.h */, + BADE0370EA2CCD1D36599137E9D79FB3 /* FBSDKShareOpenGraphValueContainer.m */, + C3209F7B3A0C5594C5382D2E17A02B97 /* FBSDKShareOpenGraphValueContainer+Internal.h */, + 5EE9FF43D6D45C08905B6D53343591FA /* FBSDKSharePhoto.h */, + 4EEA34DB3E95971CAA4099B9C4DD8C74 /* FBSDKSharePhoto.m */, + 796C03163B04A83EF5A5417BD0C59CA0 /* FBSDKSharePhotoContent.h */, + 141ACE54E47BD21C3F91FE031C2F27A4 /* FBSDKSharePhotoContent.m */, + 22736BBB7E29843BFD25AF6EA526FD54 /* FBSDKShareUtility.h */, + 83106886E9A710F3579F2BBF35D8C99C /* FBSDKShareUtility.m */, + D65F4C0A6ED3ABC94426B9A2AFEA2790 /* FBSDKShareVideo.h */, + 2A451A543F61480DA16C5AF92075E754 /* FBSDKShareVideo.m */, + 4CEB2F6C3776B2FAA2762E5C908FA891 /* FBSDKShareVideoContent.h */, + 6D324B0F0C1603B017A0A195535F6737 /* FBSDKShareVideoContent.m */, + A153B9B34087207BF3F8415D46B5F822 /* FBSDKSharing.h */, + 1B0819CE19B7C8DFC00BC735593D2EBA /* FBSDKSharingButton.h */, + E07CBEB86CA06BB0017BCA02C44A2757 /* FBSDKSharingContent.h */, + 3C56505E72D2FE8EBB1539F6D52CDF90 /* Support Files */, ); - name = iOS; + path = FBSDKShareKit; + sourceTree = ""; + }; + F948C552CF9EFB5B5DF8C06A725EEA7A /* Support Files */ = { + isa = PBXGroup; + children = ( + 6930BA637A283F95CB5BE9E7F530E97C /* RestKit.xcconfig */, + 3CAC9E985D7035114C36728704534B05 /* RestKit-Private.xcconfig */, + FD329036B04DED5ACADFC2A64E1A81E3 /* RestKit-dummy.m */, + ED23ACC2E4D25AF32F09735D7343AC88 /* RestKit-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/RestKit"; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 04B8CBA2668FA29112DD7DD832E8D275 /* Headers */ = { + 1D36BC931AD498CF9B9A0BEF59933AD4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C36B88BBA60864543814D356AD0A3F1 /* FBSDKLoginButton.h in Headers */, + 65471025DA624297CC0E4AFA9F0A9606 /* FBSDKLoginCompletion+Internal.h in Headers */, + F27AFE96B8CC62E50BFFA4512890BED3 /* FBSDKLoginCompletion.h in Headers */, + 6B49C041DD1CA69CEE38844A46FC981E /* FBSDKLoginConstants.h in Headers */, + 9503242D0ABD828C67CE6E9E87FCF808 /* FBSDKLoginError.h in Headers */, + 4E564D425B4E8F7E80F8FF529F31CC9B /* FBSDKLoginKit+Internal.h in Headers */, + 1FA13C3A4A2F8C73655A15942B256594 /* FBSDKLoginKit.h in Headers */, + B57D2233586CE946A5305009412BCBAF /* FBSDKLoginManager+Internal.h in Headers */, + 22EEC676AC4EE23B3D39371191826420 /* FBSDKLoginManager.h in Headers */, + 7CB8D2616D83001B8A93141CA2BF13A1 /* FBSDKLoginManagerLogger.h in Headers */, + 38DA7CBB8D5C6233F7777A13CAAB2333 /* FBSDKLoginManagerLoginResult+Internal.h in Headers */, + 89E610C03C0AB4A658E6FD92A3FC7AA6 /* FBSDKLoginManagerLoginResult.h in Headers */, + 464F5DBB26E86201503ED7F5BB400525 /* FBSDKLoginTooltipView.h in Headers */, + D56AF31D9DF6EB1FC56376F94A42BAB7 /* FBSDKLoginUtility.h in Headers */, + 16AD66178FB1BFEF1C8E27AC7FEF05FD /* FBSDKTooltipView.h in Headers */, + E06BD0AF1D3248CA82CEBFEB3A8B737D /* _FBSDKLoginRecoveryAttempter.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 529CFAAEC66CAA1C5E41A5E836F8BA11 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + EDBFDC230E9792C5B794EB33FC97B481 /* RKValueTransformers.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AAB5C9C35D21E7DE9BABB9F3AE359CA /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 44EEBB71B919C890EC133515DAADA53E /* SOCKit.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 963888F5333B9CE4EC14DA4678E04378 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A68DEE427107DDDECE7CD0FD00B4C42F /* AFHTTPClient.h in Headers */, + 8AE18E3F5FB9E121377E758896FDC5E9 /* AFHTTPRequestOperation.h in Headers */, + BFF27D79C3F860E354C5009D58D8716C /* AFImageRequestOperation.h in Headers */, + 0451EE3ECD50A13211C7FF98A7E505AE /* AFJSONRequestOperation.h in Headers */, + A2C6C3878CD7696272669C76E2B95F3A /* AFNetworkActivityIndicatorManager.h in Headers */, + 59126DFA8930D70443CEE591F1758298 /* AFNetworking.h in Headers */, + C2FEDEEB9C729E257CC014D75F58C3CA /* AFPropertyListRequestOperation.h in Headers */, + 03C3301144E96541DD8695E57AD95EDC /* AFURLConnectionOperation.h in Headers */, + 413DB25BECD1AA25EF0D2EE95263DD20 /* AFXMLRequestOperation.h in Headers */, + 55794719E57DB7A1DF7B6754190815AC /* UIImageView+AFNetworking.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9BB099983C685F1488B532614064A264 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 53DCFF27646D832B660564172ACF94DF /* ISO8601DateFormatterValueTransformer.h in Headers */, + 9D9BFD2275092031EF50133F849831C1 /* RKISO8601DateFormatter.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BC8D8EE96B9BD1053950B9537233B9C1 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - CF79198C14BBBD2D665382664838FDC3 /* FBSDKAppGroupAddDialog.h in Headers */, - 5ECA82DED51AAEC5914651A1DC5F4AA8 /* FBSDKAppGroupContent.h in Headers */, - A21EAD6DC6E64D1DDEC818E884B8681C /* FBSDKAppGroupJoinDialog.h in Headers */, - C93EF9E7AB322844B44D91A7417C7677 /* FBSDKAppInviteContent.h in Headers */, - A9BEF137DF5768708869D3256BFAD63D /* FBSDKAppInviteDialog.h in Headers */, - 603CD1A9757748FFDF36F25F1442BFEE /* FBSDKCheckmarkIcon.h in Headers */, - AF5359F040D97FC805477208E7911018 /* FBSDKGameRequestContent.h in Headers */, - FD874685C537E5A0F3A6CEF0752C4BE2 /* FBSDKGameRequestDialog.h in Headers */, - 024F2F6E7B359E16D430507777D2A23A /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */, - 90ADE70B8B9EE69E84421A5C857638E2 /* FBSDKLikeActionController.h in Headers */, - 5EBE74F7A1A99B390EA1D0880AF631D4 /* FBSDKLikeActionControllerCache.h in Headers */, - 8856F450B33FE10B5CDDBB7075D13156 /* FBSDKLikeBoxBorderView.h in Headers */, - EBF174B3526DA204542A9E7EDDA420C0 /* FBSDKLikeBoxView.h in Headers */, - C76BFBC54AB29A882AFF2B93FABC02D9 /* FBSDKLikeButton+Internal.h in Headers */, - 3A53D0DFE7A5184D13FF5E9FEEB545DE /* FBSDKLikeButton.h in Headers */, - 049098E1C6C7C462769F96568DA8D72F /* FBSDKLikeButtonPopWAV.h in Headers */, - E95A35CACF79B5613E435793A12C3B12 /* FBSDKLikeControl+Internal.h in Headers */, - EF3BF6324C7416A119E5B4501ECA0243 /* FBSDKLikeControl.h in Headers */, - 23589C8FDD1C654F9B5ABD21EBB44F14 /* FBSDKLikeDialog.h in Headers */, - 8A015CCBBB5F889F2666DB3E0DEC8AD5 /* FBSDKLikeObjectType.h in Headers */, - 733822208BEBE0C468B43F2DD6DD56FA /* FBSDKLiking.h in Headers */, - 9D4B4179D22A7E72ADC746BC9867F19F /* FBSDKMessageDialog.h in Headers */, - ABC7A9122C527CC454683E0F3003AC5E /* FBSDKMessengerIcon.h in Headers */, - 754D8A2093AC1500714A7A3C741F0DD2 /* FBSDKSendButton.h in Headers */, - A086C2615B2785D481DA7C4D34F4E624 /* FBSDKShareAPI.h in Headers */, - 1C4CCD5145FFC73BBD93BD34AF80DC26 /* FBSDKShareButton.h in Headers */, - 5CAD289DD87697AD723F4E09479CB0D3 /* FBSDKShareConstants.h in Headers */, - 3A7F1B841F623E917E9A93108963F45F /* FBSDKShareDefines.h in Headers */, - 25700FC04D9595410BB668AC6D95B2C8 /* FBSDKShareDialog.h in Headers */, - 7DBCC0E643223DE9DBA754562F5134E4 /* FBSDKShareDialogMode.h in Headers */, - 6AC7277FB240777B01E8635E9A416979 /* FBSDKShareError.h in Headers */, - 7CC48DD2498D412BB8502EF9D7D0F144 /* FBSDKShareKit+Internal.h in Headers */, - 8189451E0D572A123365625A27B40734 /* FBSDKShareKit.h in Headers */, - 57D012204E6B29DD1581D7C1EEF0B976 /* FBSDKShareLinkContent+Internal.h in Headers */, - 07B3F93C12DD63838C00EA94CD93B27D /* FBSDKShareLinkContent.h in Headers */, - 559B49348B7EB3F4BF4BB0984CF73CC7 /* FBSDKShareOpenGraphAction.h in Headers */, - 2407AF3DC659F4D82509D57974CB2CEB /* FBSDKShareOpenGraphContent.h in Headers */, - DB976377ECFE3DCDC7A39A70EFDCB66A /* FBSDKShareOpenGraphObject.h in Headers */, - F397C996AC39BBA073D32D6B15E6DB54 /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */, - 3CDA0EFB1390A868EEB6A3DB196F882C /* FBSDKShareOpenGraphValueContainer.h in Headers */, - 578E66E718A1020A82FFEEC24E7D65BE /* FBSDKSharePhoto.h in Headers */, - B2A40C992E571AFD66738150516F47EF /* FBSDKSharePhotoContent.h in Headers */, - F6F20F1577D517829A60E3C7524A3FB2 /* FBSDKShareUtility.h in Headers */, - 0D1BF3A32608EED521199FC7756F2A2C /* FBSDKShareVideo.h in Headers */, - 115282FAD689F856C602E20DADA1D9BB /* FBSDKShareVideoContent.h in Headers */, - 2504C2D803E69F8AD5242FE200CAC89C /* FBSDKSharing.h in Headers */, - E0AF7C8E6312712C90E14832F43A36B1 /* FBSDKSharingButton.h in Headers */, - 9B860FF944EF4A439B373EB2E80B97F3 /* FBSDKSharingContent.h in Headers */, + 10BE8D457AFBCCD2D0AF53C57A7CF8AD /* BFAppLink.h in Headers */, + 83A2308F1A820A9AE24A2A0C0696F262 /* BFAppLinkNavigation.h in Headers */, + D6877C6A4340DF5855F0877E79BD04A4 /* BFAppLinkResolving.h in Headers */, + E539C7D052036F12A6FACEB6BAAAB7CD /* BFAppLinkReturnToRefererController.h in Headers */, + A77FCB7E7A55AEE91A979C9826E453AB /* BFAppLinkReturnToRefererView.h in Headers */, + 74994CD76F26EB7B7CF319BA58A0630A /* BFAppLinkReturnToRefererView_Internal.h in Headers */, + 3521883602EE9F7D16DF3A5DA7876F6B /* BFAppLinkTarget.h in Headers */, + DDD5AA6C8761E89C7F5C663B1CD13E32 /* BFAppLink_Internal.h in Headers */, + BAD3634DD55B62F98958378C48C5B4E0 /* BFCancellationToken.h in Headers */, + 6090EF83E9D0597E4EAA8A2A3E551181 /* BFCancellationTokenRegistration.h in Headers */, + 584ACB2EF83394FF9A7483F2CF1D3F35 /* BFCancellationTokenSource.h in Headers */, + 4248DC99938BB7DEC770F5C5387EE00A /* BFDefines.h in Headers */, + CBCEDE735334E3E1E16E45A245C96E3C /* BFExecutor.h in Headers */, + 48D8E5B295450D8E1F726BB6AB4757F6 /* BFMeasurementEvent.h in Headers */, + 4832276DBBFF9C8DA658EEED23908675 /* BFMeasurementEvent_Internal.h in Headers */, + E008D78D62D60C24A58DEBC9350DD553 /* BFTask.h in Headers */, + EB26C70637F1B9D2A32A96C3D7297B75 /* BFTaskCompletionSource.h in Headers */, + 27329EF5BB7C0D6973A2A6B02AAB96EC /* BFURL.h in Headers */, + 26CA0B5BAAD13B57BEE6231A9404024A /* BFURL_Internal.h in Headers */, + 1DC7F45A1971D9D7595B4DF9D5AE1487 /* BFWebViewAppLinkResolver.h in Headers */, + 711457D4A4EBE9E4AE7F0F81B9137929 /* Bolts.h in Headers */, + 1EEA52E11250AE7F891BEAB357430C95 /* BoltsVersion.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1C1CFC19EEFD59FB7CA7916BF561B779 /* Headers */ = { + C60C7916A98E6FDD68F924105FAE29C6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 0F5681D4155EF404B63B22B18C1AF88F /* BFAppLink.h in Headers */, - 46EB4B43C3D20732F946864A047F91F6 /* BFAppLinkNavigation.h in Headers */, - ADCBD1E21EE29D29239129FD8025C57B /* BFAppLinkResolving.h in Headers */, - 6FD0C9E25E96D683FF939A03F5ADBB6B /* BFAppLinkReturnToRefererController.h in Headers */, - 5D13A3534EAC4E005CA23818980CBE9E /* BFAppLinkReturnToRefererView.h in Headers */, - 576D18D63A70D92387FB45A0464F20CB /* BFAppLinkReturnToRefererView_Internal.h in Headers */, - D35E29B5D9FC142022E8427B40FC3D2B /* BFAppLinkTarget.h in Headers */, - 2CDE62281BF30CDC37D9B4C4AD493EC7 /* BFAppLink_Internal.h in Headers */, - 837E9C27712156BDE9D280EE4545D276 /* BFCancellationToken.h in Headers */, - 69BF53C7FCB3B725A3810153DFC4EA79 /* BFCancellationTokenRegistration.h in Headers */, - BD3CE6F36B20865EAA4F5E6AD2FE7B9B /* BFCancellationTokenSource.h in Headers */, - 056D1A2F30304795BCF119D77F6A3444 /* BFDefines.h in Headers */, - 3D7B8490714964BABCD5A24305DB8F11 /* BFExecutor.h in Headers */, - DA945F0026584B08173CD60DA7C25EAC /* BFMeasurementEvent.h in Headers */, - 4C3F4B69F870FEF1F364EE745DB32219 /* BFMeasurementEvent_Internal.h in Headers */, - AC12EBE82E427B9B5608A32FBE398FE5 /* BFTask.h in Headers */, - B9D665C1FFEA8087E6977A029EC9F109 /* BFTaskCompletionSource.h in Headers */, - 0A1FC44863CD4AD27EB4078FE4A8234E /* BFURL.h in Headers */, - 8A0A3B0961EA769D2720A9B3FE94AE94 /* BFURL_Internal.h in Headers */, - B90A724A9A95499F9B46EC9E4124E2CE /* BFWebViewAppLinkResolver.h in Headers */, - 9DBD52A2A42B56822E76A986EA118AEA /* Bolts.h in Headers */, - 7AE9B5B1B9C84FD8D5B6D314F73888A8 /* BoltsVersion.h in Headers */, + 2207E71C6E656FFF704F6A458FFD9750 /* FBSDKAccessToken.h in Headers */, + B66711307BD952379D6E1E973D233DD7 /* FBSDKAccessTokenCache.h in Headers */, + D8A25C09072F307F29FE9F7B6A13D9F9 /* FBSDKAccessTokenCacheV3.h in Headers */, + D443B04560E387EB30A0602FD6FFD975 /* FBSDKAccessTokenCacheV3_17.h in Headers */, + D2A8C4B9A699BBD20DB117AC788C589A /* FBSDKAccessTokenCacheV3_21.h in Headers */, + C1E6782A28C64F9F738190329D22EBAA /* FBSDKAccessTokenCacheV4.h in Headers */, + 0F3D53E5F079F4B1A2EBB4210908CFB7 /* FBSDKAccessTokenCaching.h in Headers */, + AD140B8CB4ED9EE47ECA355BBC49D8D0 /* FBSDKAppEvents+Internal.h in Headers */, + 194040F9162AC4370EA2207CAFB4F385 /* FBSDKAppEvents.h in Headers */, + 8F2B536B7C3E12F8A089703A8E184EE3 /* FBSDKAppEventsDeviceInfo.h in Headers */, + 589E7BF0D65495B04585FA32A0E8CEF0 /* FBSDKAppEventsState.h in Headers */, + C7621E1B2201C72E1A47178CB0FB6F9C /* FBSDKAppEventsStateManager.h in Headers */, + 64786C3E2471FFB18C54491B958F6A30 /* FBSDKAppEventsUtility.h in Headers */, + 960C0ACF45C879E5B798E0208677C283 /* FBSDKAppLinkResolver.h in Headers */, + 3C1DC8F3C0D0C2D975C5256111A23858 /* FBSDKAppLinkUtility.h in Headers */, + F55E8C555D5B76B49744594745E769B6 /* FBSDKApplicationDelegate+Internal.h in Headers */, + 19131ECD97988C2E0A7D828C1C3133E7 /* FBSDKApplicationDelegate.h in Headers */, + 60CEA0885C29CCA93BF6358AD042F3FA /* FBSDKAudioResourceLoader.h in Headers */, + 6FCB36E2C0955F23A84EA23D75EC8F8F /* FBSDKBase64.h in Headers */, + 2ECC223575FB09382C21927D1077E5E0 /* FBSDKBoltsMeasurementEventListener.h in Headers */, + BD853F3F44E8E1D611FC0223EEC51FF6 /* FBSDKBridgeAPICrypto.h in Headers */, + D5E8CC2522D67F9FC020020915970752 /* FBSDKBridgeAPIProtocol.h in Headers */, + 13AF98BD29E32EEAB0C7E25345182F63 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */, + E2F18A04EB1C973F5D6E14BB41CCD4BF /* FBSDKBridgeAPIProtocolType.h in Headers */, + 0637FA7A30F03B2B44FE3843BDEB55D4 /* FBSDKBridgeAPIProtocolWebV1.h in Headers */, + 83571B5C25D75A372990FB58F775031D /* FBSDKBridgeAPIProtocolWebV2.h in Headers */, + 8F358510B4BFC7E8344D34A8155B42DA /* FBSDKBridgeAPIRequest+Private.h in Headers */, + 3056984029600254636E6C7BCB7068B4 /* FBSDKBridgeAPIRequest.h in Headers */, + 9394144BAB18709A82FDB2B282A05380 /* FBSDKBridgeAPIResponse.h in Headers */, + C47010D70B05E89ACDFB064C72E502A6 /* FBSDKButton+Subclass.h in Headers */, + C090E9788C1AAE44F019D971AF5CE896 /* FBSDKButton.h in Headers */, + 18D19D961B9AB9C6B471F9768C507607 /* FBSDKCloseIcon.h in Headers */, + D63769571B44F6368498F025AF61C6CE /* FBSDKColor.h in Headers */, + 54F855E7EE9AA06C6EBC3DD74EB75358 /* FBSDKConstants.h in Headers */, + 7BF055BCBD30254D2FD0ACB56D208D6C /* FBSDKContainerViewController.h in Headers */, + D26DAD2583E28F0B6448456E3DD375B0 /* FBSDKCopying.h in Headers */, + 8D163CF90227676C66E59AC9C29C49A2 /* FBSDKCoreKit+Internal.h in Headers */, + A2FB35C43BD300FF3D0FC5D2C21A8EA0 /* FBSDKCoreKit.h in Headers */, + B47B62F95C9E76C01E70EABA2BA467E5 /* FBSDKCrypto.h in Headers */, + 528A1E3338AEA0BA99B630E0376E73A9 /* FBSDKDialogConfiguration.h in Headers */, + 8F19A51AABD48FA736496786775A4540 /* FBSDKDynamicFrameworkLoader.h in Headers */, + 87B8F0D199620CF95AB1FC249403F368 /* FBSDKError.h in Headers */, + 335D7BCABF70FFC8383F8A0611246675 /* FBSDKErrorConfiguration.h in Headers */, + BF9F546490AA5AC45DE849AA0A5AACC4 /* FBSDKErrorRecoveryAttempter.h in Headers */, + 697A7506A45ABEB2E388ADA4C925840C /* FBSDKErrorRecoveryConfiguration.h in Headers */, + 36B07F714856EEB15D38BE6949CE4ECA /* FBSDKGraphErrorRecoveryProcessor.h in Headers */, + 78A2871CE000B8987FA26F2507F0C5A6 /* FBSDKGraphRequest+Internal.h in Headers */, + 6F11DA82F7AF6C9C4BB737C602C973F9 /* FBSDKGraphRequest.h in Headers */, + 714BE1AC2526B3BC1562109C08F4A495 /* FBSDKGraphRequestBody.h in Headers */, + 8B602196288517BC69973428574180A3 /* FBSDKGraphRequestConnection+Internal.h in Headers */, + 91F44367C597D2BDFF225A8BD754BBD0 /* FBSDKGraphRequestConnection.h in Headers */, + D566CA65A0BD5EDD393D418D0E38F785 /* FBSDKGraphRequestDataAttachment.h in Headers */, + B7FEE49B9428B57AEBB3A3ECFE8EEB59 /* FBSDKGraphRequestMetadata.h in Headers */, + BFD3B90B0754D38A0C16EAD8AB8C40AC /* FBSDKGraphRequestPiggybackManager.h in Headers */, + 5BD0E9128E6F8FE37C92C8C77F11425F /* FBSDKIcon.h in Headers */, + 103EEFB51B885B053EE5C3BA2B9F5B71 /* FBSDKInternalUtility.h in Headers */, + 8699AAC67CF8535D11120991726B3A5E /* FBSDKKeychainStore.h in Headers */, + 8528AF353C87A568A36A67CC4107AABE /* FBSDKKeychainStoreViaBundleID.h in Headers */, + 7FA1C89D6080BEE224852C72C13D6D5E /* FBSDKLogger.h in Headers */, + F05664371A3DD0AD0F099C58F3DE4B5C /* FBSDKLogo.h in Headers */, + 0DEB3FF3257E2710E17602028B4ADCBF /* FBSDKMacros.h in Headers */, + ECD947EB7209C18C0ED5B62B55EDAF5C /* FBSDKMaleSilhouetteIcon.h in Headers */, + EB3A2464318287F2605FE3FB96F28028 /* FBSDKMath.h in Headers */, + EE8D5B9C1B8641F1C9454AC533EBA663 /* FBSDKMonotonicTime.h in Headers */, + 51897443D225A1A7146CDD7EA9C07E89 /* FBSDKMutableCopying.h in Headers */, + DDEA53C797DA53F468DC760C6AFF395E /* FBSDKPaymentObserver.h in Headers */, + 43C62E1AD429F5F56736CCB4B27ED1D4 /* FBSDKProfile+Internal.h in Headers */, + D4830E7DE681EE028A47000F46DA3E1A /* FBSDKProfile.h in Headers */, + 2B96436D95914F65C562C78AB09B64A9 /* FBSDKProfilePictureView.h in Headers */, + D213984A523601FD6D41B52BFE1ECF87 /* FBSDKServerConfiguration+Internal.h in Headers */, + D219581FED0361CDF8034A264783166F /* FBSDKServerConfiguration.h in Headers */, + 92F90206D520B6FFB926F518E7F78A6A /* FBSDKServerConfigurationManager+Internal.h in Headers */, + DE465F00C7D94B02E5130CAB91FE315A /* FBSDKServerConfigurationManager.h in Headers */, + 222BC73BB2DCC1670840CBF0C7918219 /* FBSDKSettings+Internal.h in Headers */, + 6B963CD2BF2D0F02D03CD5F67CC0F05B /* FBSDKSettings.h in Headers */, + 724481CBB3913C75C37AA3B614532854 /* FBSDKSystemAccountStoreAdapter.h in Headers */, + 1AA3A74D556CBAC2478A4F9990BFEC08 /* FBSDKTestUsersManager.h in Headers */, + 8B0C038931DB9E37C4E93AD16106BD26 /* FBSDKTimeSpentData.h in Headers */, + C6056E64ADBD421AE12B55FB83E44322 /* FBSDKTriStateBOOL.h in Headers */, + F9F2A396D8596900DA5C2D3DE9B96EBE /* FBSDKTypeUtility.h in Headers */, + DDDFDB764CD1AE11F3AABCA125923E06 /* FBSDKUIUtility.h in Headers */, + 86C24EAC707FA2133160C7AA132F4716 /* FBSDKURLConnection.h in Headers */, + 0A404B050E501F4897A0F0E48E261D02 /* FBSDKURLOpening.h in Headers */, + B245EEC679161A0C25552C1AA06F3EC4 /* FBSDKUtility.h in Headers */, + EBC0F7CF2A827BE595ECF66D3042385B /* FBSDKViewImpressionTracker.h in Headers */, + 2362DD22CB38548C38463877211F2AD3 /* FBSDKWebDialog.h in Headers */, + 4C33830BE3C170E4CB6375A78A271CC9 /* FBSDKWebDialogView.h in Headers */, + 141089B7D752020855F211BD890A4D3C /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4F1C8D7D6225C287FDC9497697EA0A15 /* Headers */ = { + D20BF03AA59C506A4D5AA6791C98E606 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - E273FCC56D19EBC9CB8F6C43CE0530C3 /* FBSDKLoginButton.h in Headers */, - 29F51D242E42CD214C63CED9501DA333 /* FBSDKLoginCompletion+Internal.h in Headers */, - 1FFD190681463306C97ABCD802238795 /* FBSDKLoginCompletion.h in Headers */, - EE922301DF435B008CD36FBBEBCE2013 /* FBSDKLoginConstants.h in Headers */, - C222EBE352FA0160CB53093ECB765D23 /* FBSDKLoginError.h in Headers */, - 81CFB279DD69C8D328DF48AE00E8A1F6 /* FBSDKLoginKit+Internal.h in Headers */, - 1A87FA679C6F8FB9E1635F2D327D498F /* FBSDKLoginKit.h in Headers */, - 0D781A587B6C90E1684F0E9881312466 /* FBSDKLoginManager+Internal.h in Headers */, - AB2143E64A033D3593F4B6798DB0947E /* FBSDKLoginManager.h in Headers */, - 8552B06A7BF3E6F606D6D44E22C7D940 /* FBSDKLoginManagerLogger.h in Headers */, - 4AEEEAA20163C1AD6C08AEB1BB090269 /* FBSDKLoginManagerLoginResult+Internal.h in Headers */, - 45BE13346C1088632046978C8150B515 /* FBSDKLoginManagerLoginResult.h in Headers */, - 694761A5588259C7DF1DA6DA014F5CBE /* FBSDKLoginTooltipView.h in Headers */, - C4A82D2592849F48EFC21967D4D816C1 /* FBSDKLoginUtility.h in Headers */, - 99E5BF53E83D7C3F6928CD8A16ABAF21 /* FBSDKTooltipView.h in Headers */, - 9CE0C07218A736188343B4DA20DA39FD /* _FBSDKLoginRecoveryAttempter.h in Headers */, + AAE115E50155948641D97F4C4782327B /* TKEvent.h in Headers */, + 73FD34365A5B80EC64B0B5A8E99AF46E /* TKState.h in Headers */, + AEF152DEB9D69B47F9BBF7E427E90A0E /* TKStateMachine.h in Headers */, + 99F872BB5976264AD7648F8F8252D8B5 /* TKTransition.h in Headers */, + 8526C9EF4EE664BFA507C921AFACEF23 /* TransitionKit.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6D814384C4DBFEA192E22E0DE55574EA /* Headers */ = { + D9F933FB4C402CBFD29FBBB0594B37AE /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 38C6A63050CD48EB4AFD4BB80A9E748E /* FBSDKAccessToken.h in Headers */, - CE04A9D2777511F219923DC8A7E456FA /* FBSDKAccessTokenCache.h in Headers */, - 9E5B04ABE2C83DB36FCBDF9DE6F924FF /* FBSDKAccessTokenCacheV3.h in Headers */, - 95A8EA311AE92357D4704E6B640C5AB6 /* FBSDKAccessTokenCacheV3_17.h in Headers */, - F1D1E127FD70AF059457961F7B76C5E4 /* FBSDKAccessTokenCacheV3_21.h in Headers */, - 1A7B34868636A1A11E07B9685E7BE9B8 /* FBSDKAccessTokenCacheV4.h in Headers */, - 358E6D3F04CDD76CE5217B415314B0D4 /* FBSDKAccessTokenCaching.h in Headers */, - 8700477C4DEE150BBA6B87EEE9528A44 /* FBSDKAppEvents+Internal.h in Headers */, - 9CAEA2F3FC5A259EC3F12BDECB612EBC /* FBSDKAppEvents.h in Headers */, - 96BF60A7CC6C1DA5E3150C952FD663E4 /* FBSDKAppEventsDeviceInfo.h in Headers */, - 5F41CFDB8779912A50ABD6A631A2B4B1 /* FBSDKAppEventsState.h in Headers */, - 27D5286B2C57AD201EFD862B24BAFBD7 /* FBSDKAppEventsStateManager.h in Headers */, - 8FCAFC45A1ED8A43375A66D15276E686 /* FBSDKAppEventsUtility.h in Headers */, - 91B0FB2808205072D601D935ADC386BE /* FBSDKAppLinkResolver.h in Headers */, - 1B89B03D72EA7E5B78F08041D807F24E /* FBSDKAppLinkUtility.h in Headers */, - 62D2342808F35C1D75528BB879DCD079 /* FBSDKApplicationDelegate+Internal.h in Headers */, - F7C0DBA5EF54C0DD2928E293D97F4317 /* FBSDKApplicationDelegate.h in Headers */, - 165411C8E35D734155064C1D5B7A7E95 /* FBSDKAudioResourceLoader.h in Headers */, - A4335A60A42ACE37E88A5ED18002F7CC /* FBSDKBase64.h in Headers */, - 1F1670F7DFA0E47562CD51956E793600 /* FBSDKBoltsMeasurementEventListener.h in Headers */, - DA143DD613C9371DF58294B6C5EFD2B4 /* FBSDKBridgeAPICrypto.h in Headers */, - 84E80F23894171F4A76DF54F420398E1 /* FBSDKBridgeAPIProtocol.h in Headers */, - 9F23B3D99743F33A718A80E8A6C3C7B6 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */, - BDC94B58683F8564C61B5217AA9D8CF3 /* FBSDKBridgeAPIProtocolType.h in Headers */, - 7588F6295488C1FF35A36B4D597B0291 /* FBSDKBridgeAPIProtocolWebV1.h in Headers */, - 537F504A45AB0B342AB6A227E76F8857 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */, - 0076F8848D3C0862138855C15B8969F6 /* FBSDKBridgeAPIRequest+Private.h in Headers */, - 1CFCB3D3ED8F0D7F95ED1F62F2989787 /* FBSDKBridgeAPIRequest.h in Headers */, - 806BADC3119A86AF66B04B8C7AD36832 /* FBSDKBridgeAPIResponse.h in Headers */, - F7A01ABECB87107C0D949ABBDA1A3F6A /* FBSDKButton+Subclass.h in Headers */, - D5D8352542CA6A2CFA802B75632E6586 /* FBSDKButton.h in Headers */, - 41ADBDD587FCD69FA0E67FA5D01D1D24 /* FBSDKCloseIcon.h in Headers */, - 74E62FDCD9AC705781E45A9B7B851B2E /* FBSDKColor.h in Headers */, - 139836449D1FF9389BDF1A25AAE9550A /* FBSDKConstants.h in Headers */, - 0CFA690393172E2727762B65A2CDABC2 /* FBSDKContainerViewController.h in Headers */, - D417241C7870B27AAB51410A98A0F475 /* FBSDKCopying.h in Headers */, - 5B05A51BDC32718348A42347B24047AC /* FBSDKCoreKit+Internal.h in Headers */, - E1B74F3B3D829F2B22CBE7E78FED4A94 /* FBSDKCoreKit.h in Headers */, - FA16E9DD7604ECBFEA94DCE63C71F718 /* FBSDKCrypto.h in Headers */, - 1627ABDB622C7AA22401EFBC45268DC0 /* FBSDKDialogConfiguration.h in Headers */, - 949E9BF062D5BD5F99F83D574EE7350C /* FBSDKDynamicFrameworkLoader.h in Headers */, - B30588470800ED65039D4154015DDD6B /* FBSDKError.h in Headers */, - 7C702D387E65E1ECA41D75A1AB059FAB /* FBSDKErrorConfiguration.h in Headers */, - B7E4BEE543CE921D3E8EA19F745A4840 /* FBSDKErrorRecoveryAttempter.h in Headers */, - 65B09E455DF352D9F9870A3D64BF6EDD /* FBSDKErrorRecoveryConfiguration.h in Headers */, - CFF394E02CD69EA682C7AD26E4A6580E /* FBSDKGraphErrorRecoveryProcessor.h in Headers */, - FC741D511C021CB157AE1A996FCFB3D5 /* FBSDKGraphRequest+Internal.h in Headers */, - 4DB17B4ECC016AB59E509AC962A6B8D3 /* FBSDKGraphRequest.h in Headers */, - 204DDADC01B3E9C60F94B73B1DA02D78 /* FBSDKGraphRequestBody.h in Headers */, - E56A71F9DCE03E0D3A23C186BC549398 /* FBSDKGraphRequestConnection+Internal.h in Headers */, - DC95621B201A1643FEDCA0D4B8F9F8AE /* FBSDKGraphRequestConnection.h in Headers */, - 33C2196F168DB4DADADB70A0F821A923 /* FBSDKGraphRequestDataAttachment.h in Headers */, - BE81BB3D49E3317002BEE498E3D5DA50 /* FBSDKGraphRequestMetadata.h in Headers */, - 2175F55C5F40FFAE2164E17849FF158D /* FBSDKGraphRequestPiggybackManager.h in Headers */, - 2CA9451A1DF7FD5448467C2E46D8B709 /* FBSDKIcon.h in Headers */, - EB863E147B32EC3C3B48045F1C88FA94 /* FBSDKInternalUtility.h in Headers */, - 9D78ACDBFEA0C1BE2E92617B281FBA83 /* FBSDKKeychainStore.h in Headers */, - 812E20ED57C5B81B34AB5CC8BA24441D /* FBSDKKeychainStoreViaBundleID.h in Headers */, - F6B1B2E35E2A2F8DD6C246B5EDA59478 /* FBSDKLogger.h in Headers */, - F80DA427D9B4EFC30775898E17772FBD /* FBSDKLogo.h in Headers */, - D181D054976B047917CE654092F55A0D /* FBSDKMacros.h in Headers */, - AEFB1B90E74FD8578D51CC4A5107313F /* FBSDKMaleSilhouetteIcon.h in Headers */, - 3216502FBE7540ECD129D15528EC0A1B /* FBSDKMath.h in Headers */, - F22D730AF7C810CEC8F093F249E164B9 /* FBSDKMonotonicTime.h in Headers */, - EB0104D47F39544F712F75BB8B3DCEAE /* FBSDKMutableCopying.h in Headers */, - 995DC7CA4C2115CC77A9458E848D53F4 /* FBSDKPaymentObserver.h in Headers */, - 654A88020DDA963F33B82DC810141C97 /* FBSDKProfile+Internal.h in Headers */, - 962AF9D2ECAFBB82577BC5870B99A5AC /* FBSDKProfile.h in Headers */, - F68578BB7CC74D30FAB7AE569B031F1F /* FBSDKProfilePictureView.h in Headers */, - FE61940A58EB4C4C8D2559C46F7C0FE4 /* FBSDKServerConfiguration+Internal.h in Headers */, - 2ABACE5B5D7D1688A1D1F8BE1224F574 /* FBSDKServerConfiguration.h in Headers */, - A54FE2B3F69ED6C33AC71A8B49360D44 /* FBSDKServerConfigurationManager+Internal.h in Headers */, - 8D474DFB1ECB14E03F575ACFE0B26538 /* FBSDKServerConfigurationManager.h in Headers */, - 8FB0A448CF0BE75E167A5B4C4E353D90 /* FBSDKSettings+Internal.h in Headers */, - E3DAA3FD4277840AC125CD26EE72A61B /* FBSDKSettings.h in Headers */, - BBAE76F290141486645F6885DA829A55 /* FBSDKSystemAccountStoreAdapter.h in Headers */, - CC6774347838445871178181BC28620A /* FBSDKTestUsersManager.h in Headers */, - B503F98EF155E568AAFF59237046DD90 /* FBSDKTimeSpentData.h in Headers */, - 09B5027EB6E9E85497A98ED58C0AA9F2 /* FBSDKTriStateBOOL.h in Headers */, - 7B518BDCB9857C22C76D89C15E4571D8 /* FBSDKTypeUtility.h in Headers */, - 389B345C717A5E21578570628297DE0C /* FBSDKUIUtility.h in Headers */, - 455E7B4B376DA91E5E9FED7A9C668D3F /* FBSDKURLConnection.h in Headers */, - EAEB1AFFEF75396CA12351C6D85EFD54 /* FBSDKURLOpening.h in Headers */, - 49B0E1ADABDDA3C73B2C2A457223BC2C /* FBSDKUtility.h in Headers */, - D539A64059405A192DA4DD93A1819502 /* FBSDKViewImpressionTracker.h in Headers */, - 7E7BB5AD7A49C149712AFC678C255451 /* FBSDKWebDialog.h in Headers */, - 359E55D720B39F54548BBE07AA3BBB48 /* FBSDKWebDialogView.h in Headers */, - BB0147FB69D9824B3084835C05ED2D96 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */, + 62AC03AAA3E1A91085682875387057F0 /* BFTask+Private.h in Headers */, + 7F266AA9EE266D339D49A0E969988BD8 /* PFACL.h in Headers */, + F2B72E543329E82CCE7A2EE0B0D5C785 /* PFACLPrivate.h in Headers */, + CB383B20C6379A28C46A6B5AEC5EFC6A /* PFACLState.h in Headers */, + F154E24ECE8D63E143C5DE657270F9CF /* PFACLState_Private.h in Headers */, + EE4BB2CB0021BADEC7E1B08A32107181 /* PFAlertView.h in Headers */, + 446BA59388843F27C4A3C3C28A81F12A /* PFAnalytics.h in Headers */, + 6DE851C2AAF88503F245F250A5351AAE /* PFAnalyticsController.h in Headers */, + 44E7B7009635960A4666322CC9C335A8 /* PFAnalyticsUtilities.h in Headers */, + 41CBA3A465424FF859B076C2D5E4428E /* PFAnalytics_Private.h in Headers */, + B8981DC6E7D7A4BDA55AAAA0A0DADF7A /* PFAnonymousAuthenticationProvider.h in Headers */, + 22285085488C28F72D4A8E6FE597C3F4 /* PFAnonymousUtils.h in Headers */, + 7A54902B9E0B3ACB2A7B1EFECADF357E /* PFAnonymousUtils_Private.h in Headers */, + C078740598701CAAD4A763C78B3F6CC6 /* PFApplication.h in Headers */, + 2A090259083345B82C50D513C268C552 /* PFAssert.h in Headers */, + A63B7B71D5BD6F713B1F2645904FAB0A /* PFAsyncTaskQueue.h in Headers */, + F590EEE9964BFBBF5271ABE294EA8DF9 /* PFBase64Encoder.h in Headers */, + DD4DBFC5F42DE1932644DB163B5972E6 /* PFBaseState.h in Headers */, + AA2CA1664E0724EDB51E06EABE450CFB /* PFCachedQueryController.h in Headers */, + 035585A2DE484628EA30E8E63294D4C4 /* PFCategoryLoader.h in Headers */, + C6882967064B59E981B552B8B73F478D /* PFCloud.h in Headers */, + 336DDE9C1339B3E1C10A65C1ADC3ED5A /* PFCloudCodeController.h in Headers */, + EA302B51E65C00DBCF5E18601D139475 /* PFCommandCache.h in Headers */, + 2156E59F1188BA47E18D0F81D6AC802D /* PFCommandCache_Private.h in Headers */, + 548B9E86168DD8A2E659F23EC4F7A8A7 /* PFCommandResult.h in Headers */, + 8034ED89D1720CA1553C063505243D16 /* PFCommandRunning.h in Headers */, + 9FA6A1361778101C92CC23F66D82E995 /* PFCommandRunningConstants.h in Headers */, + 19FF72C0A165707AD00B46F3535BF306 /* PFCommandURLRequestConstructor.h in Headers */, + 98624ADCF17E525E7753E01E2282CF79 /* PFConfig.h in Headers */, + 0A24AF592599665BBA61B0592CE2D779 /* PFConfigController.h in Headers */, + 264D7F2AB36480290C7CE960CA5D049B /* PFConfig_Private.h in Headers */, + 9FB6030B98DECB9D62879EE2AE5E6D9E /* PFConstants.h in Headers */, + AAFC2366E62DD2348A58310FCB9CDCB2 /* PFCoreDataProvider.h in Headers */, + CE991245FC044DFF4588087784AF09C5 /* PFCoreManager.h in Headers */, + 1669A58CB3E81C88673C6DDFE52665D6 /* PFCurrentConfigController.h in Headers */, + 52B61A08963CBBA0FB4C125E56151F0E /* PFCurrentInstallationController.h in Headers */, + 80407D8CFD66E00DA2C42634D57FEB65 /* PFCurrentObjectControlling.h in Headers */, + B7FFAEE017ADB38FE772A10494491305 /* PFCurrentUserController.h in Headers */, + AA35FAD12964ABE7D0E88E0E1D65B4D4 /* PFDataProvider.h in Headers */, + 899BD0168D0879A433B3E24D881E071C /* PFDateFormatter.h in Headers */, + 4F3F335C20656E97A48104D33B6AD423 /* PFDecoder.h in Headers */, + 6C4BDAB5F2BED6A17CF575686DA25BAB /* PFDefaultACLController.h in Headers */, + 680644EF47F01A73A7365AAB594B867F /* PFDevice.h in Headers */, + 1AE22B14B900081E3F50FBA27C496913 /* PFEncoder.h in Headers */, + AF05B25B63B0981E9B51311FB1C7FBA2 /* PFErrorUtilities.h in Headers */, + 216960B1853453C77581F1F43F292D25 /* PFEventuallyPin.h in Headers */, + 3521C3A0492CE669FF3994A3B9092698 /* PFEventuallyQueue.h in Headers */, + 569DC6FEB3DDA40D5164D32DA9586867 /* PFEventuallyQueue_Private.h in Headers */, + 9B0B6DE875E130F30CEEB69A79037FA1 /* PFFieldOperation.h in Headers */, + 816C8741A372E6B0B343B9C2979B2F8E /* PFFieldOperationDecoder.h in Headers */, + C1940E183A577F58BCCE1C9477D12874 /* PFFile.h in Headers */, + 714C65274187114E32C9796DB3A2EB68 /* PFFileController.h in Headers */, + B157A3081D8AD9514467DEBBD55548BA /* PFFileDataStream.h in Headers */, + B2879C1150D1DB443CFCD96DDDB49E45 /* PFFileManager.h in Headers */, + 9F551AF880BB9256C4C291F5CCFB11BF /* PFFileStagingController.h in Headers */, + 5B5C0205B731E56B6A725E13CA098243 /* PFFileState.h in Headers */, + FB65F22A1E1B12694C1E7DA1BF4332AD /* PFFileState_Private.h in Headers */, + 8F7DF91175CD7B9E257D396EB87DBDDD /* PFFile_Private.h in Headers */, + 65C5B97B362C88A9C677573B3D03B693 /* PFGeoPoint.h in Headers */, + E964FA7D6A20CC33A8F95DBDE547740D /* PFGeoPointPrivate.h in Headers */, + E86C60547909B9FF602F7A10BA1B4140 /* PFHTTPRequest.h in Headers */, + FBF860C80EF28CB36A9D92DF462DF9FA /* PFHTTPURLRequestConstructor.h in Headers */, + D8F65E1A75771DEFD76C1D5E67DE252D /* PFHash.h in Headers */, + 96C7851DA44AD1224A1111E622B90017 /* PFInstallation.h in Headers */, + CF1E4ADCDBB95E4626548A4EED8E955F /* PFInstallationConstants.h in Headers */, + F404DE0BD76A827A59FED7ACEC84C4A7 /* PFInstallationController.h in Headers */, + 2571CBB40950A47C696F3166573C2E03 /* PFInstallationIdentifierStore.h in Headers */, + C5E6B7F61C259BD6D3FA842E34D77C05 /* PFInstallationIdentifierStore_Private.h in Headers */, + B09ADD46335ADB6E340FE94F12EA2A7E /* PFInstallationPrivate.h in Headers */, + ADD2AA8D146F25FFD8BA1D4376F263B7 /* PFInternalUtils.h in Headers */, + 289440F037321298F6CFAE462EAB2708 /* PFJSONSerialization.h in Headers */, + AFD06D4B1D7FC7846C523BAF45DE28F4 /* PFKeyValueCache.h in Headers */, + 5F8207F4644833736B306F1F57A1CC08 /* PFKeyValueCache_Private.h in Headers */, + C2882692DD474D2AFD75B8B04749F85E /* PFKeychainStore.h in Headers */, + 317DFD4D6FFBC372F352C1D28E1BF585 /* PFLocationManager.h in Headers */, + 01B6E1BCF76B786BA17501AA97D0A2FD /* PFLogger.h in Headers */, + D5B4AE6ADA1FF6A8D501EF34E5B70DEC /* PFLogging.h in Headers */, + 99F06B5F06814E413CF9BFD708985DC1 /* PFMacros.h in Headers */, + BAC969FD3E5FCC80C60299CD3FDE217B /* PFMultiProcessFileLock.h in Headers */, + F93E8FA12A89E3DEC9D885480933388C /* PFMultiProcessFileLockController.h in Headers */, + 6C8B8CB55A10C85B31BF0B735C30E0B1 /* PFMulticastDelegate.h in Headers */, + BD99460B57092B0D6787EC27F99FEB62 /* PFMutableACLState.h in Headers */, + 8A5A5D950DE30D7796F24D41F725D731 /* PFMutableFileState.h in Headers */, + 343F80499D58275C98B2A493E79CA832 /* PFMutableObjectState.h in Headers */, + 747072A3816272600F4B853AC2D43A12 /* PFMutablePushState.h in Headers */, + DC72EEA9A5F723B2B90C73F66A942266 /* PFMutableQueryState.h in Headers */, + B1F19F69BC6BE89750CDE81D08ECE259 /* PFMutableRelationState.h in Headers */, + 9327A80A4578297BCC18961FAF29D852 /* PFMutableUserState.h in Headers */, + ED30F1C009785C03A95CE897DADE2FE3 /* PFNetworkActivityIndicatorManager.h in Headers */, + B2588A9E069571F52CD24483884A4AE1 /* PFNetworkCommand.h in Headers */, + AC8705200765C036C92BA3510DDF381C /* PFNullability.h in Headers */, + 0C97A38957A54E356CBD2066CE04133E /* PFObject+Subclass.h in Headers */, + F0C42F245FC0594E061713A97D2F24C7 /* PFObject.h in Headers */, + BA989D0DD52B618B74EC629A3B011787 /* PFObjectBatchController.h in Headers */, + A9029EFD1C14F062F13C517D8E88863A /* PFObjectConstants.h in Headers */, + EDAE21A43BCE3B2704A63517EB4AB1AB /* PFObjectController.h in Headers */, + 952263BF4DA2641DE73612C67BFE318B /* PFObjectController_Private.h in Headers */, + 031FFF4BFC8E7F50200A78A83ACE12F2 /* PFObjectControlling.h in Headers */, + F4A8397144034C66C1FA123D2A946D30 /* PFObjectEstimatedData.h in Headers */, + 44D58C838E846275EC8A27ECBF29DA9F /* PFObjectFileCoder.h in Headers */, + 0827E8FF507012241427EA254F0B9C86 /* PFObjectFileCodingLogic.h in Headers */, + 867DB320DD4CB050839389A1BB0555C9 /* PFObjectFilePersistenceController.h in Headers */, + AAAACC905C1BD976C1B46FF1E96D29C8 /* PFObjectLocalIdStore.h in Headers */, + DA38887565FDAA6178FDA0EE1B279815 /* PFObjectPrivate.h in Headers */, + 59AE70B21BE3010125B5A4C289D581AE /* PFObjectState.h in Headers */, + 35C74ADE21E53C1A980B0F09B6A69441 /* PFObjectState_Private.h in Headers */, + 0D38DDBFF8647BFBAC5D5819120866AF /* PFObjectSubclassInfo.h in Headers */, + F3832E2E17428F4750115D59A0CB9E85 /* PFObjectSubclassingController.h in Headers */, + 37A8328CAC5B9F9B21F4E0F7F7F88C90 /* PFObjectUtilities.h in Headers */, + 741ED5F4DFCF51FA348982153375412A /* PFOfflineObjectController.h in Headers */, + 17A60DE752CD6B98B110ED27EC596403 /* PFOfflineQueryController.h in Headers */, + 274A8966A2797D607CBBC96CEC3D6A12 /* PFOfflineQueryLogic.h in Headers */, + E3A2B3F9AA361620648CBD92EF4F4874 /* PFOfflineStore.h in Headers */, + 39FD00E726ED2D451932BC6D5173231B /* PFOperationSet.h in Headers */, + 115B682879CBE79C7CD8FF29E967EB08 /* PFPaymentTransactionObserver.h in Headers */, + 4BAED37A971E944FAA282D905CC0B69E /* PFPaymentTransactionObserver_Private.h in Headers */, + 24C7BBC40CF0B023B820E9B81B4DA070 /* PFPin.h in Headers */, + 3B98740FB38A404583CB8E2504C36BB0 /* PFPinningEventuallyQueue.h in Headers */, + 96FA8252F3AA140AB10B644BC9A9D5C7 /* PFPinningObjectStore.h in Headers */, + 11E6895F2673F1D69CC3F6623019E969 /* PFProduct+Private.h in Headers */, + 3E9373D4AA88F97BD38272875738D398 /* PFProduct.h in Headers */, + E35CC681B027B9A4DDD50E2732FDB1A2 /* PFProductsRequestHandler.h in Headers */, + 24CB2B8CDC5F16CD9E14DA26DB83DDFA /* PFPropertyInfo.h in Headers */, + 2CDDB7A231AE639E1F1988F2F0DA00DC /* PFPropertyInfo_Private.h in Headers */, + 64B6FCD7B4520F2588FEE0287247349A /* PFPropertyInfo_Runtime.h in Headers */, + F81F1B7980F2983071D0EC660BE54CE3 /* PFPurchase.h in Headers */, + D809B69DE077C62C993DF9DB223DB660 /* PFPurchaseController.h in Headers */, + 3E923BE69D091AC983DF766EB1703F92 /* PFPush.h in Headers */, + 8E6728F63DC431E34F799F06DDF1CB8F /* PFPushChannelsController.h in Headers */, + C560005F785CD4166BE55BAA01D3F544 /* PFPushController.h in Headers */, + FE82D78EAC4F3D46EEE5C2A3C97A12D9 /* PFPushManager.h in Headers */, + AFF7143C45D4D0CC1DFE3E0BCA02F77A /* PFPushPrivate.h in Headers */, + 690EE192DCB7F5FD1C72C0A7630D3230 /* PFPushState.h in Headers */, + A5075FCC7996C7241A1AC88BD454CEDC /* PFPushState_Private.h in Headers */, + 97C333E846C6F051D032E8EECF06012B /* PFPushUtilities.h in Headers */, + FE2F61A9BF88B14639C597A77478638B /* PFQuery.h in Headers */, + 39D5FA61F8BC6306CEB6FD0040846723 /* PFQueryController.h in Headers */, + BAE6222F2912EBD93ADE0E92604AE75F /* PFQueryPrivate.h in Headers */, + 99698707B82BBB47C3392E7E47C94CEB /* PFQueryState.h in Headers */, + FD7D810A80E4DE1BBDD59AFA587AD339 /* PFQueryState_Private.h in Headers */, + C1CDC0DE66D93D988EF14107C6FFEA66 /* PFQueryUtilities.h in Headers */, + EAF55F96FD4B1A30DDF547F52CFD5E3A /* PFRESTAnalyticsCommand.h in Headers */, + 1FE020448F48D06DB2F2AF2187DC70D1 /* PFRESTCloudCommand.h in Headers */, + FB3B2D6BC1B9F48598E1471CA886802D /* PFRESTCommand.h in Headers */, + A0C0D93BDD1650DA3FBAF7308D8D8F6B /* PFRESTCommand_Private.h in Headers */, + 1082989B937B299059AA17B02EFB11C3 /* PFRESTConfigCommand.h in Headers */, + D7FC6F2D8013CF365A7349C989177E95 /* PFRESTFileCommand.h in Headers */, + 5705EC9203CFCFFF63B71242D0218340 /* PFRESTObjectBatchCommand.h in Headers */, + 0FEB198320552E0ED018F62418915FF2 /* PFRESTObjectCommand.h in Headers */, + 1EFDE74434A6084134CFBBF5FBA37331 /* PFRESTPushCommand.h in Headers */, + A249BCCF84DBA88982F537AE0C883BB3 /* PFRESTQueryCommand.h in Headers */, + 5FE0DCADFDD3F32A59E544CF98BBA273 /* PFRESTSessionCommand.h in Headers */, + 0B81E419526111EA3E0BBBBAA5737C8C /* PFRESTUserCommand.h in Headers */, + 1FA37DC1F9BA323A9E932A24AA6B3FEF /* PFReachability.h in Headers */, + E7F96D6D14A008F31D440E9A3B4DEBFA /* PFRelation.h in Headers */, + B26EA1195C31C123334CE61F105FE393 /* PFRelationPrivate.h in Headers */, + D9780F783321D6762F05A3703DCCCAE3 /* PFRelationState.h in Headers */, + 7A4D2EC16BADC3EDB9E7C60072007D63 /* PFRelationState_Private.h in Headers */, + A298A5BDF576E579A48B535BF82CC397 /* PFRole.h in Headers */, + 40C67CAE468EABF931B98B2E88DEE324 /* PFSQLiteDatabase.h in Headers */, + 497CA357D4C9F558EC1A7F893BCF0DF0 /* PFSQLiteDatabaseController.h in Headers */, + E01E6B307A5E4AC49DFFFE15D7AB3419 /* PFSQLiteDatabaseResult.h in Headers */, + 477136AEEC963924B48D90D694471B15 /* PFSQLiteDatabase_Private.h in Headers */, + 76300DBE702A80CC961739A23493D82D /* PFSQLiteStatement.h in Headers */, + 1E06D1E8ABA58B1F8D93AC474933AED6 /* PFSession.h in Headers */, + 2912A7D737F750A67C5DBB6C94E21B08 /* PFSessionController.h in Headers */, + 937A4633A64BC5208E9324E323AD8129 /* PFSessionUtilities.h in Headers */, + EF1E3A4A56864ED9872326A1591C526B /* PFSession_Private.h in Headers */, + F4ECDBA32F1169CB260D49D001F2C224 /* PFSubclassing.h in Headers */, + B588C9394F86C1AC804378104F746AAE /* PFTaskQueue.h in Headers */, + 2515D00EB9ED2D21B6A1D2A019CA407F /* PFThreadsafety.h in Headers */, + CB7D55A007ED7936F349A5E63C7503C0 /* PFURLConstructor.h in Headers */, + 0383C08E8381E50C4D99F27563219095 /* PFURLSession.h in Headers */, + DEBEBBF633B726A9FDBBDE85788DA3A3 /* PFURLSessionCommandRunner.h in Headers */, + 643204253D2ED23DBD900DC6DCC12556 /* PFURLSessionCommandRunner_Private.h in Headers */, + 9B23BA6F2581561FB25680304A6B9073 /* PFURLSessionDataTaskDelegate.h in Headers */, + 83B200A2264FABAAADBBBE3355B988BD /* PFURLSessionDataTaskDelegate_Private.h in Headers */, + 9BA4897B11673A7E3BEA0A4801C041A3 /* PFURLSessionFileDownloadTaskDelegate.h in Headers */, + 60B56FC16B23506CC79857255E8F43F7 /* PFURLSessionJSONDataTaskDelegate.h in Headers */, + 855CEE1F6BCF1084074BCC8AC4A4409F /* PFURLSessionUploadTaskDelegate.h in Headers */, + 4F743B762B11CF3C497E0FD4CBDD1441 /* PFURLSession_Private.h in Headers */, + 17D1E18D8FE2FA636689AE5F11FF745B /* PFUser.h in Headers */, + 147EE652AA4CED9F96AC291100513BBA /* PFUserAuthenticationController.h in Headers */, + 040E8CD5FB35E08270AA9BC8C424E068 /* PFUserAuthenticationDelegate.h in Headers */, + 7970953EEBB8E9B8D59CF92B5ECA9C1E /* PFUserConstants.h in Headers */, + F7E107F9266E165419F09F357851FF94 /* PFUserController.h in Headers */, + 797CEAA0B00AE0F2FFC971030A142841 /* PFUserFileCodingLogic.h in Headers */, + E96561D1A7687F5C6116F3A1DB698EDC /* PFUserPrivate.h in Headers */, + CA6B9AA9F5B228BA5B3E3789A0BB0D0B /* PFUserState.h in Headers */, + 500A75B09A88C5CB9A8BCF236F9ADE5B /* PFUserState_Private.h in Headers */, + 3342E425FE281AB7323D6706237A2FDD /* PFWeakValue.h in Headers */, + 443C1CF5A54599280435A5764BC7AD29 /* Parse.h in Headers */, + AC49657D3C3E9041AF727A806BDA4B91 /* ParseInternal.h in Headers */, + 3179B1591E9D904EC929C13B9670DD79 /* ParseManager.h in Headers */, + 1CAB6029272599FE06ACBC43D39F0C49 /* ParseModule.h in Headers */, + 7034BA3B00EECFA6B092EDF9E296DF2F /* Parse_Private.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7B8E2A49149A02800D6DFC8B1ED1EDBC /* Headers */ = { + F4BD1AB2FD8D0BB7241C2F997A0D3F60 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B59666CE66E901154A8239073431C260 /* BFTask+Private.h in Headers */, - 35582974E5D8C37C5E69CB967330B7F6 /* PFACL.h in Headers */, - 255F8174747BEE4E1DBA228D6B91F7DE /* PFACLPrivate.h in Headers */, - C48038B4840E38D6CC3CEB1604944E87 /* PFACLState.h in Headers */, - E027ECC5E4F105AAA36189986EC6E3A3 /* PFACLState_Private.h in Headers */, - 4574F0728D51C1DB6F88E0238ECCD638 /* PFAlertView.h in Headers */, - D03F806B3D48F7003CC1DCAAE0D7F7AD /* PFAnalytics.h in Headers */, - 8FF05DB71CAB42D4094135A93E77060C /* PFAnalyticsController.h in Headers */, - 18137F7F403B447DCC10865DB6B08485 /* PFAnalyticsUtilities.h in Headers */, - 7247C89530C6427A67956C925B68F4D8 /* PFAnalytics_Private.h in Headers */, - 1A091BE8B5581EDAFE2E8C884AB2F9FB /* PFAnonymousAuthenticationProvider.h in Headers */, - F3E0AC37722D619B98C8F59B2F79F7EE /* PFAnonymousUtils.h in Headers */, - B3573F43A0E654ED6253ED7CEB106C44 /* PFAnonymousUtils_Private.h in Headers */, - DFE76642360EFF066C3CC145468E4BC2 /* PFApplication.h in Headers */, - 36A1B6147DA2DD394552DDB51C37DFAA /* PFAssert.h in Headers */, - 7DC6C578F01533E6B939916438FCF022 /* PFAsyncTaskQueue.h in Headers */, - C5977D81D3310AC9F8ED1BBE8D297D3F /* PFBase64Encoder.h in Headers */, - 1FFBD1EEC0E90F3FE1279B2D4828F84E /* PFBaseState.h in Headers */, - F1F29611141F8144413F5980024BCDE7 /* PFCachedQueryController.h in Headers */, - D10CDE3288CBAECCB4870B578BA26A96 /* PFCategoryLoader.h in Headers */, - B703741B0A21A1DB2F89EC7414A8FA26 /* PFCloud.h in Headers */, - CE21ACAE8CD2E1F05A6878D3B2482ABB /* PFCloudCodeController.h in Headers */, - A73836C245FAD1D78661404A365F13A4 /* PFCommandCache.h in Headers */, - 1FCDA4DAD6F25814BF8EB9DFB98A9798 /* PFCommandCache_Private.h in Headers */, - 0455144463BABE9F7588B14858F7FBD9 /* PFCommandResult.h in Headers */, - 0600F71A1A6C706F958DA903B2474602 /* PFCommandRunning.h in Headers */, - 96C0654FF3DA4CA52E8645F5906D7A4F /* PFCommandRunningConstants.h in Headers */, - 78F3C290F4ABB6382D55AC7EDDB85873 /* PFCommandURLRequestConstructor.h in Headers */, - CC8D510E3D7EF751A5E55F13A2071D87 /* PFConfig.h in Headers */, - 3E132B5FEEBF0FAC1F709354042C6181 /* PFConfigController.h in Headers */, - 45C370F777F372C29E152959C44D825E /* PFConfig_Private.h in Headers */, - 6D8069186AA68903B3B1E3A9FE645FC7 /* PFConstants.h in Headers */, - 6B7131E140E2CDB8DE40B439FA26D657 /* PFCoreDataProvider.h in Headers */, - AE7D44B9963E439D25BA557117AAB3FC /* PFCoreManager.h in Headers */, - 0FD6F7DC809A014C513B088D3EC9DC6B /* PFCurrentConfigController.h in Headers */, - 4C192107186E7E1C8AE7BEB83BA0E24A /* PFCurrentInstallationController.h in Headers */, - A92D8896D37E1D574BA51B6B4762E648 /* PFCurrentObjectControlling.h in Headers */, - F58687BA4A3BE0B69DF85C2CED642104 /* PFCurrentUserController.h in Headers */, - 4E1E288E9B60710885CB7D0D34371D28 /* PFDataProvider.h in Headers */, - E51BE51D61BD89C6F13645CE46F0E87B /* PFDateFormatter.h in Headers */, - 9C23BE6854C26A25FF7BD9A4212C6D31 /* PFDecoder.h in Headers */, - 3B1B1F2120C6124502241F7475BF4A34 /* PFDefaultACLController.h in Headers */, - 6695A079915118627BA77F70911E243C /* PFDevice.h in Headers */, - 165198337F3D88ED8D13950D042243F3 /* PFEncoder.h in Headers */, - EFC9DC66A1415A8C54AF1D0F6BCB5FF3 /* PFErrorUtilities.h in Headers */, - 15C5CEA7AE66D7CCBBC99C533A80856B /* PFEventuallyPin.h in Headers */, - 83BD07623A7905682A5066B1C1CEDA26 /* PFEventuallyQueue.h in Headers */, - 0240D5556E070D570A97669B5550C3DC /* PFEventuallyQueue_Private.h in Headers */, - D41DB6CD0DFFE0F06736B971FF6E40DA /* PFFieldOperation.h in Headers */, - 7FCD4FF353DB6DE536D86717C65C0204 /* PFFieldOperationDecoder.h in Headers */, - 696C35B2099E61F0EEA8AA1B1F998C1C /* PFFile.h in Headers */, - D74F2E810DA974E4D08A2873A84D1A9C /* PFFileController.h in Headers */, - AA6E969F0ACDA126C12E755EA39EAAC3 /* PFFileDataStream.h in Headers */, - 1FDD51E9AB8FE7FC5D2629B19426C4A2 /* PFFileManager.h in Headers */, - 0DE4FD1C506CB317481F942614CFE432 /* PFFileStagingController.h in Headers */, - 8ADDFE574B996E273961DAA1620E9613 /* PFFileState.h in Headers */, - E27A9C15F3D333CE44838FC62A07DCD0 /* PFFileState_Private.h in Headers */, - 54F586403DA2EFA3BAA583BD615F96C4 /* PFFile_Private.h in Headers */, - D9850B00148639B256BDE5F3F23C8A0F /* PFGeoPoint.h in Headers */, - 76B02A59FD2C1AECC0387DB93BCC94EF /* PFGeoPointPrivate.h in Headers */, - 6CDB057F1E455322CF133BEBDBD26FC9 /* PFHTTPRequest.h in Headers */, - 58F1B6573F9C8D331A70BD1B3FD3F894 /* PFHTTPURLRequestConstructor.h in Headers */, - A9B1A69195737600121B362FF71C4482 /* PFHash.h in Headers */, - F2AF88887A99A5F17A7C1006F78D0754 /* PFInstallation.h in Headers */, - 8ABEC82F977A95FF8798858A869CEDC8 /* PFInstallationConstants.h in Headers */, - 1388690C4046C715B129CBE4F501C410 /* PFInstallationController.h in Headers */, - AA25FED1F75847E0B88021010EA77F7E /* PFInstallationIdentifierStore.h in Headers */, - 664A8B6A7BF211DA84A48A07F78A73C0 /* PFInstallationIdentifierStore_Private.h in Headers */, - 847247B05193D07DE43AF03B10C8F65D /* PFInstallationPrivate.h in Headers */, - 279BC3A66039DA564403BDB1A3466D92 /* PFInternalUtils.h in Headers */, - 93A3540505C0BE9A4983E4015D5CACBA /* PFJSONSerialization.h in Headers */, - 459FB122AFB2F2790C0397A0A1100517 /* PFKeyValueCache.h in Headers */, - D2607228CAE8BB301CB8263391ABCDCB /* PFKeyValueCache_Private.h in Headers */, - 01EAB8D957945D4CE9D3A81888EC6AFD /* PFKeychainStore.h in Headers */, - E63BBF78198C05D1B345C98DE621F745 /* PFLocationManager.h in Headers */, - 0031093FE01CA0F995D38F14E0786CE5 /* PFLogger.h in Headers */, - 906E067419EAFC22D23DA657F3CF9693 /* PFLogging.h in Headers */, - E3ADD077F80CC1DD43ECE53F10FA20E6 /* PFMacros.h in Headers */, - 8C6A3E1F148F5CEAD72A1BBF59B974C1 /* PFMultiProcessFileLock.h in Headers */, - 2039DF3542A81321E4BC68F087EFB01F /* PFMultiProcessFileLockController.h in Headers */, - 7DE52253AC3B77AD116C7B85E50C7C19 /* PFMulticastDelegate.h in Headers */, - D426F78D685F292D750DDAE27B542951 /* PFMutableACLState.h in Headers */, - 14ED5D2A2E45EDFAC58F338BB275BB27 /* PFMutableFileState.h in Headers */, - C4A0B3AE8DE75263B4F77C7A56761C61 /* PFMutableObjectState.h in Headers */, - E0ACC93E5EA8EBCAB60DB71BEF5C1693 /* PFMutablePushState.h in Headers */, - 391C0FB05028B2080F37A8AF4931A664 /* PFMutableQueryState.h in Headers */, - 4B2A23038CB7A3FEA1B0818BCC5681B2 /* PFMutableRelationState.h in Headers */, - 769DB7E377D5E818B5EB613CC5E902C9 /* PFMutableUserState.h in Headers */, - 824352FF2399FD1CDC6D6D817685FA33 /* PFNetworkActivityIndicatorManager.h in Headers */, - FAD2F3F163BE5C8ADB49265D238A0A88 /* PFNetworkCommand.h in Headers */, - 6B4E4936DD042805436D14527E7B083D /* PFNullability.h in Headers */, - E7D61730878DC04A66A7F4C7F4E46A5D /* PFObject+Subclass.h in Headers */, - 6431A5828DAF7B2CFC0A1757F76E5C48 /* PFObject.h in Headers */, - 823183722B03E811E5B712BF5182521D /* PFObjectBatchController.h in Headers */, - 099BAF1AD4D80C3814E83CB96A7F9ED2 /* PFObjectConstants.h in Headers */, - 9200159DC5F8143B827C1F843DF2B710 /* PFObjectController.h in Headers */, - 62508475BB6D02884B6F40E981B30FB0 /* PFObjectController_Private.h in Headers */, - EEC92256C2CE4D6A71D7BEBCB59FA596 /* PFObjectControlling.h in Headers */, - E1810D26E4FC22372B19063A3CEA743E /* PFObjectEstimatedData.h in Headers */, - E501C70A3F56D91E2FD2E2135A1EC469 /* PFObjectFileCoder.h in Headers */, - 7F55E76E58B983036FF0856D12318766 /* PFObjectFileCodingLogic.h in Headers */, - 0F900FFCB72D81E50A554D642CBB8885 /* PFObjectFilePersistenceController.h in Headers */, - E75B88CF9855E0AE3BF0E5D2E262D062 /* PFObjectLocalIdStore.h in Headers */, - 2E7C5E79D1A09338147DF84B8A9EA400 /* PFObjectPrivate.h in Headers */, - ACF041AF7954A94B73F36771017E1433 /* PFObjectState.h in Headers */, - 0C6BC3E49CBD68FA2DF9587848F59916 /* PFObjectState_Private.h in Headers */, - B3B89D2A7B994E378A344B620ADCA35E /* PFObjectSubclassInfo.h in Headers */, - F0A8AEAA9CA105D255B698A63E916966 /* PFObjectSubclassingController.h in Headers */, - 5C41141CD7D1FAC5C9B739AC0E3FE876 /* PFObjectUtilities.h in Headers */, - 5676B33310A2A718632F8EB4599082F3 /* PFOfflineObjectController.h in Headers */, - 3F8B0AD29B9B4773DE22580FEAF3E52D /* PFOfflineQueryController.h in Headers */, - B50CAA3D21A9C93DFC9017CB1C1A6520 /* PFOfflineQueryLogic.h in Headers */, - A0A59E60CF207E84E074F3AC90546799 /* PFOfflineStore.h in Headers */, - DF8EBECA6B580DBD79CB044E25D8D25F /* PFOperationSet.h in Headers */, - 25A70766920D6C0A260636FDE527A851 /* PFPaymentTransactionObserver.h in Headers */, - CDCA058527BCAAC5DAC3C538DBDC6855 /* PFPaymentTransactionObserver_Private.h in Headers */, - 86E29A0B163945AD1202BBBA3B932D9A /* PFPin.h in Headers */, - EEA05A7718D37867B32667CBD6D71B51 /* PFPinningEventuallyQueue.h in Headers */, - EE600F90E43CBFE4E16F3AF3E3FCD24A /* PFPinningObjectStore.h in Headers */, - FA492C9CAE233569C4240CBE669CCC18 /* PFProduct+Private.h in Headers */, - 8ADE524A64AB7D81516BBFCC74B49351 /* PFProduct.h in Headers */, - 5363AC9672DB64C9118CB994E4A7BC2D /* PFProductsRequestHandler.h in Headers */, - 4AB15B4CCF41C8A354FBC5E810F6F9DE /* PFPropertyInfo.h in Headers */, - A7C11E5DBBF673F5014C251AA00BB71B /* PFPropertyInfo_Private.h in Headers */, - 1C30161F5CCDE877911BBF4E37C668AB /* PFPropertyInfo_Runtime.h in Headers */, - F8776BBAA1C27717D2D5D893A232EE64 /* PFPurchase.h in Headers */, - 92A1C24F9EDE76ED654923B58AFEC34E /* PFPurchaseController.h in Headers */, - 1001DEFE89CB83044A7A1B3AE42C0F66 /* PFPush.h in Headers */, - D1E97F4708237AC9D9EE8F0DC21C7B64 /* PFPushChannelsController.h in Headers */, - 7FEC1DED15AE9E52C32A206F1BE40115 /* PFPushController.h in Headers */, - 8AC64D13C6DE5D63254570F33C7B7C7F /* PFPushManager.h in Headers */, - 148878B5B97134968A610F4A0BD27E8B /* PFPushPrivate.h in Headers */, - 581F100F4AA60AB4541967C135D9DBD6 /* PFPushState.h in Headers */, - 10E5693130E9DBC6DD16809E06484C4C /* PFPushState_Private.h in Headers */, - 20A9F089A7FD34F0A52109F66A201BE8 /* PFPushUtilities.h in Headers */, - 3FC326BA0AD90AB0A54AA0C84106CA4C /* PFQuery.h in Headers */, - C4B4503F43EC426C4289493879FCB0E8 /* PFQueryController.h in Headers */, - D97458B299708EC25990B63810465D97 /* PFQueryPrivate.h in Headers */, - F7AA085613E075E8E5C9624051D73C40 /* PFQueryState.h in Headers */, - 49B25AC78150B8692A15271678A5E544 /* PFQueryState_Private.h in Headers */, - 6AAEAA9C1568F984F7340E7E66CC9EF9 /* PFQueryUtilities.h in Headers */, - F9B29220D46F9601E53EAC2960053F8E /* PFRESTAnalyticsCommand.h in Headers */, - DA8E9CB7BC799826B6986C010360E359 /* PFRESTCloudCommand.h in Headers */, - 491495DF4B5CFE183633BB819E705184 /* PFRESTCommand.h in Headers */, - 0490862CDB776C815363CFC351F1F3A1 /* PFRESTCommand_Private.h in Headers */, - 3123E5228CAF40E9B6D9E6BC745611D8 /* PFRESTConfigCommand.h in Headers */, - DDA5BB61D5FDA34A2F4DA088708BFF07 /* PFRESTFileCommand.h in Headers */, - FA655EAE8BB4D9B2C519FE4B4E257FC0 /* PFRESTObjectBatchCommand.h in Headers */, - 2F7CEA1D8FB71E86849259929F76AAB1 /* PFRESTObjectCommand.h in Headers */, - 2F1D9D6FAE731109B9B920E1C136B4F5 /* PFRESTPushCommand.h in Headers */, - 2BA6D9AB7D2AAD271967A17F3F924663 /* PFRESTQueryCommand.h in Headers */, - 56C1BCFCD84D90290B05C0A3874FA0A7 /* PFRESTSessionCommand.h in Headers */, - 0534960921332F24B285B5A2DF46AEEA /* PFRESTUserCommand.h in Headers */, - 1A7028D0D1252E883696DA49D7F51E52 /* PFReachability.h in Headers */, - 8188B7DDD81BFD211F628D8EFEF3C300 /* PFRelation.h in Headers */, - CC2ABE5C8F67B4B91BD62C41634F456C /* PFRelationPrivate.h in Headers */, - 5FE50967209C8A609F2755E712C18CFD /* PFRelationState.h in Headers */, - FE05CC6A81AEDA51F7B8BFFDAC3A3C33 /* PFRelationState_Private.h in Headers */, - 1466ADD5C1C9064B71781241B2AC887D /* PFRole.h in Headers */, - 76BE06A3ACC6F8D20AECC3C947176E57 /* PFSQLiteDatabase.h in Headers */, - F5D3F433965CBC07523BF8B52A4CFD0D /* PFSQLiteDatabaseController.h in Headers */, - 1D2DBAC1F882B01E611F87B197AE52C7 /* PFSQLiteDatabaseResult.h in Headers */, - FC49C19B4A93B84BFCD85C648FFEDDB1 /* PFSQLiteDatabase_Private.h in Headers */, - E9AA2204628D9753A4A5EB1AC368ABF7 /* PFSQLiteStatement.h in Headers */, - 5B36F8CEF9561B1BBC50AE696901B039 /* PFSession.h in Headers */, - 0F43A45B89B58E00B1FE0F97BBC073E6 /* PFSessionController.h in Headers */, - 8587D45B790E4579166CA011B18A0083 /* PFSessionUtilities.h in Headers */, - C7E8486D1F67A49434500098CC8DB323 /* PFSession_Private.h in Headers */, - B093EFF1E2ECE82CDA6B6B9B1E8A0B66 /* PFSubclassing.h in Headers */, - 96C59365E57E7DC8F92C37E3FCC8664B /* PFTaskQueue.h in Headers */, - CAB7052056C21EFFD46860D32FE256B7 /* PFThreadsafety.h in Headers */, - F2262E4714D619DFE966A76A7871E8C0 /* PFURLConstructor.h in Headers */, - CB6E04CE7A2D8908A3E3D529DB7F5061 /* PFURLSession.h in Headers */, - 2F30FD14654236C2AB6410924BAD50F3 /* PFURLSessionCommandRunner.h in Headers */, - 23DDE6D9EB01F5BCF7FA3B95E0962D0D /* PFURLSessionCommandRunner_Private.h in Headers */, - 05CD7BC5729091AECA9F16F650E89EFB /* PFURLSessionDataTaskDelegate.h in Headers */, - EB727D0AC97D5FF6566CE2138A73F2BF /* PFURLSessionDataTaskDelegate_Private.h in Headers */, - E9D6CE3222E0BA71F2A6417D9096F495 /* PFURLSessionFileDownloadTaskDelegate.h in Headers */, - 63368804039E7C1DD02EE36D4132FECB /* PFURLSessionJSONDataTaskDelegate.h in Headers */, - 786E305F1780B943C505B7034C654FC0 /* PFURLSessionUploadTaskDelegate.h in Headers */, - B77C09C30F319B9914148050FE53A842 /* PFURLSession_Private.h in Headers */, - 347444A5012AA92268504F167C1A9BE8 /* PFUser.h in Headers */, - 5DFAE3F0BCBCA31DF32FEF4DF7083137 /* PFUserAuthenticationController.h in Headers */, - 4C0A7707981C891E0EAB882E66D9D7DB /* PFUserAuthenticationDelegate.h in Headers */, - 9C64E7360A956C3AEEAA371F1F48A572 /* PFUserConstants.h in Headers */, - F01956C5A64FDF6066764555830C417B /* PFUserController.h in Headers */, - 5254D905261CECDD104D077E9EC0FAF4 /* PFUserFileCodingLogic.h in Headers */, - 43B53D52EF9B54815FB801838A053E1A /* PFUserPrivate.h in Headers */, - 63D7567007CCC845EDDFCE115D1923B3 /* PFUserState.h in Headers */, - D58BA1D2025529F819D6E423F0C7DD6A /* PFUserState_Private.h in Headers */, - 5D2753286AEEB426BF28716E486B50E1 /* PFWeakValue.h in Headers */, - 1E7CC04F13ABFE73058CD7DF69C9812B /* Parse.h in Headers */, - F76B7A3DCC976CFA0702A75323201FFC /* ParseInternal.h in Headers */, - 99CE3270C4F73E2A162321E133F2F19C /* ParseManager.h in Headers */, - 94C2E9AB52E39C8B5DAC91BADA725ED5 /* ParseModule.h in Headers */, - 16679D0607E9A53098AB211571CE9999 /* Parse_Private.h in Headers */, + 0E2C819942449D83510F76BE41B000AB /* Network.h in Headers */, + 5587584620C8F74140437B4EAFDBD15E /* ObjectMapping.h in Headers */, + 7C8620E50070963E07EAF88D8CF4A37D /* RKAttributeMapping.h in Headers */, + 27CB1B6BD10BBF2C8B1581E3C2A67020 /* RKBenchmark.h in Headers */, + 5ABFF30DE688A485DC7D42DC3D152083 /* RKConnectionTestExpectation.h in Headers */, + 2B03BE59ECF8AB8DB61087F8F4853534 /* RKDictionaryUtilities.h in Headers */, + 9E80147EBF6B2588ED1ACE1EF8C08856 /* RKDotNetDateFormatter.h in Headers */, + 2CD8A153F9E6D040F47CB488191B4675 /* RKDynamicMapping.h in Headers */, + AD42E75F3FB722607BC393109C580249 /* RKErrorMessage.h in Headers */, + 3D5474C1E69D04F528875AC3F12BC26B /* RKErrors.h in Headers */, + 162784BAD212B53DA133219EA676ECD6 /* RKHTTPRequestOperation.h in Headers */, + FC80B648D04C0C24045319E648B2A3BC /* RKHTTPUtilities.h in Headers */, + 914774948471B0AB22200646BE0F480F /* RKLog.h in Headers */, + 59F4057F341FE5BAF86C9ED8FFEF7964 /* RKLumberjackLogger.h in Headers */, + 7C68061FCD10D87488EB98414D244611 /* RKMIMETypeSerialization.h in Headers */, + 2E001B9E32766B89D068E48697778482 /* RKMIMETypes.h in Headers */, + BAAFB1BC360F105F6FDAEBF3E19F8195 /* RKMacros.h in Headers */, + 2C82478070852B2BFF637238B76D1102 /* RKManagedObjectRequestOperation.h in Headers */, + BEFA1BB782F90B9B3A3F263F7E5A4F45 /* RKMapperOperation.h in Headers */, + C2503B39C1C2D967300A807F22D1E892 /* RKMapperOperation_Private.h in Headers */, + DE20A5E7464643352B7CBC57AA18AD28 /* RKMapping.h in Headers */, + A2263CD966D196A5CE37ED110C62EE57 /* RKMappingErrors.h in Headers */, + A8D8E3DEAFABD7D676AF9512F9300E5D /* RKMappingOperation.h in Headers */, + 0FD22CC68EB137F144F30A3A882E6B78 /* RKMappingOperationDataSource.h in Headers */, + 9526FC617DC03EB2394A82C62562094E /* RKMappingResult.h in Headers */, + 4BEC5A582E14C9CAF7FF2064863B7C31 /* RKMappingTest.h in Headers */, + E159D9561B3F15E9433F18184C3572FD /* RKNSJSONSerialization.h in Headers */, + 2CD1ECA00B5641FC62A5681022C698F8 /* RKObjectManager.h in Headers */, + 3D72D32F4B1A08F0DE53710D9B65D45A /* RKObjectMapping.h in Headers */, + 4E6EF8C32E62178152875A0EF231C225 /* RKObjectMappingMatcher.h in Headers */, + 6AF334EF4BBC6A6FD3346EA40D5CA725 /* RKObjectMappingOperationDataSource.h in Headers */, + 23F64C0DEB9100774DC815861B20FF24 /* RKObjectParameterization.h in Headers */, + AC3660E82309B97BC9F36F249A31936F /* RKObjectRequestOperation.h in Headers */, + F1F9CEDCC428750CAF8C5CA8129E8F1D /* RKObjectRequestOperationSubclass.h in Headers */, + C343BA12ACC7E8A1AC5463DA206136D1 /* RKObjectUtilities.h in Headers */, + 18CF12E7C98D66CE94DBE82619460126 /* RKOperationStateMachine.h in Headers */, + AB64F843B89251A4F54B7E8811C2AD5A /* RKPaginator.h in Headers */, + 2564365FB5C724F430D231922B775D60 /* RKPathMatcher.h in Headers */, + B91017DCA447D4FE665DFBD4F534207B /* RKPathUtilities.h in Headers */, + 8B250CC7E95C824D1E75461C4C141765 /* RKPropertyInspector.h in Headers */, + 7DF59E1435A9B5FF6E0527FDB56ECD09 /* RKPropertyMapping.h in Headers */, + EF9B72EBED962989301AC194E32BF945 /* RKPropertyMappingTestExpectation.h in Headers */, + DCC043007FBCC58468B29C60D3A74EF3 /* RKRelationshipMapping.h in Headers */, + 60F38A25DFDB6310A8E294B230FE8B6B /* RKRequestDescriptor.h in Headers */, + 3F4D16C2F94D67B739CFFCB65181A7C0 /* RKResponseDescriptor.h in Headers */, + E3B5EAD8212CDE114D7D75603964B728 /* RKResponseMapperOperation.h in Headers */, + 3AE80C219B4B8E1118C4032D8A203C36 /* RKRoute.h in Headers */, + 6FC52428542CBDD5AA17FD45E3EE5AA0 /* RKRouteSet.h in Headers */, + DB85C33A007936865BE9DB308E27B35E /* RKRouter.h in Headers */, + 70B6B8575F6F54B1324C1457BEB8BD05 /* RKSerialization.h in Headers */, + BD1266880C3D947593D65CCDF3FA2F04 /* RKStringTokenizer.h in Headers */, + DDF12781498D7466B17FABB0F7B09EEA /* RKTestFactory.h in Headers */, + 16A3DD222EB47C7F95A50C5CA137F259 /* RKTestFixture.h in Headers */, + D586EF4534B4B9C1ED860C49F9FFE6C9 /* RKTestHelpers.h in Headers */, + 3242ACAE66A3D0C3A348362AE7EB96EB /* RKTestNotificationObserver.h in Headers */, + FA58F7FC3EC9BFFFCCCF855E5884803F /* RKURLEncodedSerialization.h in Headers */, + 4FBEA800074B2BCDC593781BACCE5269 /* RestKit.h in Headers */, + 6F538A8D204627652A295F762C5F1FC5 /* Support.h in Headers */, + 6274057AA5C456BF9DBCC15ED39BDF7D /* Testing.h in Headers */, + 282F90745F7864ABC8C81BFE6D755924 /* lcl_RK.h in Headers */, + EEF20312B4111CDCF4165EC2CB7B5C54 /* lcl_config_components_RK.h in Headers */, + 37DC8354ABF030C71775008A29B0E4E3 /* lcl_config_extensions_RK.h in Headers */, + 3B80CE07A2168B1C91BACCCAED54E24A /* lcl_config_logger_RK.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F713D2DAAE3958113D98DA32B364B4CE /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + C306BCCDD560BCE285958E022D4ECFC3 /* FBSDKAppGroupAddDialog.h in Headers */, + 815B91D3A7A855B5E6EB0DB6D4C49A76 /* FBSDKAppGroupContent.h in Headers */, + B49E65590447C056177C4650F8276BA7 /* FBSDKAppGroupJoinDialog.h in Headers */, + D0B4AD24608D2218B257F4C549DC71C5 /* FBSDKAppInviteContent.h in Headers */, + 7A28B8AD07B76AB3DB44F8CDFE744A7B /* FBSDKAppInviteDialog.h in Headers */, + F21580621D3E8689A8B9B1DA63A24927 /* FBSDKCheckmarkIcon.h in Headers */, + DD59BAFBAAEBD356F83FE7462D564E6E /* FBSDKGameRequestContent.h in Headers */, + 220E6346EEF271DD5FBA360A7E076851 /* FBSDKGameRequestDialog.h in Headers */, + A3E8BEB5BDB0DB91D73F3B750F881671 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */, + F4E3C825FDDF691C8620167D62C36527 /* FBSDKLikeActionController.h in Headers */, + A777CFCF539A3F513A8C5F7FE13BB5B1 /* FBSDKLikeActionControllerCache.h in Headers */, + AC4077514D5E7D8D685B477929CD1EEB /* FBSDKLikeBoxBorderView.h in Headers */, + 5134DC1ED5C368631B703B48F3FA51FD /* FBSDKLikeBoxView.h in Headers */, + 5903553075A49047E0950C6E0A84D9B1 /* FBSDKLikeButton+Internal.h in Headers */, + DF9D24EA75DCAD6E4EABE77BB82C729C /* FBSDKLikeButton.h in Headers */, + D69CEB9559FB7BE948DE3EE9DB288229 /* FBSDKLikeButtonPopWAV.h in Headers */, + 28EC0BC1DCF43CDD52A475B165A8FD73 /* FBSDKLikeControl+Internal.h in Headers */, + 119DCD23DA3C1E22777BF1F97BE3E170 /* FBSDKLikeControl.h in Headers */, + BF687234E9B46A43074E882CC6D8C4C6 /* FBSDKLikeDialog.h in Headers */, + 820F763472037E53E4796360BAF8DAF0 /* FBSDKLikeObjectType.h in Headers */, + 63F64CEFFA730AB5E3433162A7AE3C1A /* FBSDKLiking.h in Headers */, + 3214374F6CE47D604F5D0A6E41C5DCFF /* FBSDKMessageDialog.h in Headers */, + BC7868CFACD5A90AF4539B10B0C530DC /* FBSDKMessengerIcon.h in Headers */, + C2859D56FBEAF9577EB7E8FF91E9B087 /* FBSDKSendButton.h in Headers */, + 6B998B80ABD013DEB4D37A0DF9BB29D2 /* FBSDKShareAPI.h in Headers */, + D51EBFB6E359281876FAC27C321A4EF5 /* FBSDKShareButton.h in Headers */, + 20BBD79A31D823666D0B3A0CFAE82214 /* FBSDKShareConstants.h in Headers */, + EA4678DA9F19A5881A07ECC62861D055 /* FBSDKShareDefines.h in Headers */, + E137CB80B75D378FCEA9B7E03B1CD381 /* FBSDKShareDialog.h in Headers */, + C03056C7F18562A2E8DAD4A98F668F95 /* FBSDKShareDialogMode.h in Headers */, + BF9082656BF7F73899B73A2ACD3B64B8 /* FBSDKShareError.h in Headers */, + 56363899CDB4F14B74BF72FCFB6AE93D /* FBSDKShareKit+Internal.h in Headers */, + A745E81424A0ECF3E504C2027C5DF4D7 /* FBSDKShareKit.h in Headers */, + 360E0335AFBE716BC449DC5AE274EEEC /* FBSDKShareLinkContent+Internal.h in Headers */, + A75D8C6B1C911CCF9285B67A64D88168 /* FBSDKShareLinkContent.h in Headers */, + 6368AB2E120D6F8FC48F58970DFF6766 /* FBSDKShareOpenGraphAction.h in Headers */, + 49EF6FAA143F4116D84703093AB0550F /* FBSDKShareOpenGraphContent.h in Headers */, + 80B7EFF63B21D70D7D03657A25AA7759 /* FBSDKShareOpenGraphObject.h in Headers */, + 910591F473539420F32B53EFC561747F /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */, + BF89FBCCE7066221E7F2A987DD4E84CD /* FBSDKShareOpenGraphValueContainer.h in Headers */, + CF85133D70F60133609BD2CA91585CD7 /* FBSDKSharePhoto.h in Headers */, + 441148A00F86CF3ED1C359BC30D9802B /* FBSDKSharePhotoContent.h in Headers */, + 3564BDE7D6AC43505B004147D0F3F96A /* FBSDKShareUtility.h in Headers */, + 0A3B5EA35B0E5C9620B5247CBE3F2FD9 /* FBSDKShareVideo.h in Headers */, + 3D17F603F3AA75993A5871AA88E82EA8 /* FBSDKShareVideoContent.h in Headers */, + D312B0F84468E555BC85724BA429E0A0 /* FBSDKSharing.h in Headers */, + C69BE12C115BDBAD55BE9669643B5231 /* FBSDKSharingButton.h in Headers */, + B2B049AE4A156340F9AC769AE6A8E779 /* FBSDKSharingContent.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 52CB7F68BF709EBC0E9FFA4144EE1B03 /* Pods */ = { + 146F659281512C0B5FB603D6893AD31E /* Pods */ = { isa = PBXNativeTarget; - buildConfigurationList = CDF5B94A1AD23341CC8912A155000168 /* Build configuration list for PBXNativeTarget "Pods" */; + buildConfigurationList = 683CE3AABFE44522F37E2A109C346787 /* Build configuration list for PBXNativeTarget "Pods" */; buildPhases = ( - B26D5C7B40825F0680D99F821074236C /* Sources */, - 93050DA4590BB3C69121F66E0613EF97 /* Frameworks */, + 6D2B8A8A757FB427940FBB3F122854B2 /* Sources */, + 1762E4D7A46B35D56224AE0D4FAC1493 /* Frameworks */, ); buildRules = ( ); dependencies = ( - 83340A961B88FA5D84F0ACFEE8ED29F1 /* PBXTargetDependency */, - 168FDC441C5ED325FB25195E8F588905 /* PBXTargetDependency */, - 4769649AD55AD9CB56E1B6B272FE63A7 /* PBXTargetDependency */, - 21153761B975767074D4C03E7BFB1A5F /* PBXTargetDependency */, - 2D708019954A38BA2635EC665543F5C0 /* PBXTargetDependency */, + 69397930DED2D381C7EA26305507C2AC /* PBXTargetDependency */, + 4B5C01E548595779A34A8BABB27D0AD1 /* PBXTargetDependency */, + F393612E768E24CA90A7BAE57E7C3205 /* PBXTargetDependency */, + 153CCB3DBDC780B040D06C23CE57E22E /* PBXTargetDependency */, + 8952ED3D382F1A6B068B207FD8E9957B /* PBXTargetDependency */, + 610D35C9298F1590C611DAFAAFB7F0BF /* PBXTargetDependency */, + 76F3D42CA8B3F4B496EB7C44DB22C60A /* PBXTargetDependency */, + C2B16C4EC465BF81E7C7C0F9993CDDC2 /* PBXTargetDependency */, + FD57A738DE10B9F1A42639DD55F519B3 /* PBXTargetDependency */, + 5F35481F1296EA3D5771D17405B15B43 /* PBXTargetDependency */, + D2B995F840A42ABCB35C02C4FEC373AC /* PBXTargetDependency */, ); name = Pods; productName = Pods; - productReference = 5FB626B7387C990243FEC9C3854CBAD8 /* libPods.a */; + productReference = 149E15962A38A8DACF6A9781F4A92F22 /* libPods.a */; productType = "com.apple.product-type.library.static"; }; - 7F26E33CF29862A805138C68D09DFFD9 /* Parse */ = { + 158117D77AED03B83733E51D2D22983B /* TransitionKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 7E13494350C0FC498BF645C868B122FF /* Build configuration list for PBXNativeTarget "Parse" */; + buildConfigurationList = EC5884D823C95D73657B127F496ED2E3 /* Build configuration list for PBXNativeTarget "TransitionKit" */; buildPhases = ( - A744DAE075D3A364F804338FDC50D99E /* Sources */, - D97E53C2B2D248D6179FE56627FD0227 /* Frameworks */, - 7B8E2A49149A02800D6DFC8B1ED1EDBC /* Headers */, + 3F093A1EE91BCE92AFC73A3B72540240 /* Sources */, + 67CFF8AD8DC741D9FD2BA13A98B8BEF0 /* Frameworks */, + D20BF03AA59C506A4D5AA6791C98E606 /* Headers */, ); buildRules = ( ); dependencies = ( - CFAB7ED8904A8A0AF23967A80AB156F5 /* PBXTargetDependency */, ); - name = Parse; - productName = Parse; - productReference = B71C430B59468A7C97039EC40E16D99C /* libParse.a */; + name = TransitionKit; + productName = TransitionKit; + productReference = 4E37F47F8B8CC9C91B39061A7536E3E9 /* libTransitionKit.a */; productType = "com.apple.product-type.library.static"; }; - 87F49B89DFA2EDF98E9D8C6CB50976BF /* FBSDKLoginKit */ = { + 25B614D6ADBCB106DEE01D64514A1810 /* FBSDKCoreKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 17DD4B0EAD5E9153182F758DFC55773C /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */; + buildConfigurationList = AD40A852228370388396799020B6ECCB /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */; buildPhases = ( - FAF70D5E5995F0AC85A56F2D3A5F19E3 /* Sources */, - D376342DD6A10F6488BB2E42F69AC518 /* Frameworks */, - 4F1C8D7D6225C287FDC9497697EA0A15 /* Headers */, + A26EE2CA4252E388C674FDAB319F3A92 /* Sources */, + D1EBA5986C45E47299F610E43AEB16C4 /* Frameworks */, + C60C7916A98E6FDD68F924105FAE29C6 /* Headers */, ); buildRules = ( ); dependencies = ( - 274F0E48B913EFEBE53D20780E4BB8EC /* PBXTargetDependency */, + 29F703097FD38326D0B1AA3F0FF99627 /* PBXTargetDependency */, ); - name = FBSDKLoginKit; - productName = FBSDKLoginKit; - productReference = FB0644F2C0DBFC0141F618380733B87C /* libFBSDKLoginKit.a */; + name = FBSDKCoreKit; + productName = FBSDKCoreKit; + productReference = B2B61F565ACF0CDFAAE4247A1F8D4A5C /* libFBSDKCoreKit.a */; productType = "com.apple.product-type.library.static"; }; - 8ADAD2264B57B834BB67514D536FB7E3 /* FBSDKShareKit */ = { + 5A89C7736981130B2EEED27805B7A855 /* RestKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 3603EDDAAE405DC809528E455AF69D7B /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */; + buildConfigurationList = 5F01894250044CF47766C321EA913C84 /* Build configuration list for PBXNativeTarget "RestKit" */; buildPhases = ( - A8DFD12571AC8473B88B20A031B81332 /* Sources */, - 52B566C3F38D88DAE6CB3B0099A0DB2D /* Frameworks */, - 04B8CBA2668FA29112DD7DD832E8D275 /* Headers */, + 09D794CED70B7E37F4246A92E1B6EB12 /* Sources */, + 677EAF3CA8C9E0CED61D9E6EFCCE8FDF /* Frameworks */, + F4BD1AB2FD8D0BB7241C2F997A0D3F60 /* Headers */, ); buildRules = ( ); dependencies = ( - 7D049BC297DCB49CA53EFA534D202258 /* PBXTargetDependency */, + 1D6E64BC964904907700014CA96C7F74 /* PBXTargetDependency */, + 6EB34B92CCF89CBBFB27599DDE9A632B /* PBXTargetDependency */, + E4737F0598EB8D7357880B052025EEBB /* PBXTargetDependency */, + 860FAF17332CD1740B2A11DC21BFB2AF /* PBXTargetDependency */, + 01A09D5CAB510AFF5EAE0B04999D4CBE /* PBXTargetDependency */, ); - name = FBSDKShareKit; - productName = FBSDKShareKit; - productReference = DAAE63B311691BDD6651032E86A8597B /* libFBSDKShareKit.a */; + name = RestKit; + productName = RestKit; + productReference = B0F9682AC6A9C5259D9F3D4BCCD455B1 /* libRestKit.a */; productType = "com.apple.product-type.library.static"; }; - A510D2CCD10E1ACAF039EB42370EECE9 /* FBSDKCoreKit */ = { + 63CC4B4092B896F9AACC389383233974 /* Parse */ = { isa = PBXNativeTarget; - buildConfigurationList = 6B61B0CA93D49C3907B87A762AC584B0 /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */; + buildConfigurationList = 8A697DC1496FE3D429E1CFF02BD30ED3 /* Build configuration list for PBXNativeTarget "Parse" */; buildPhases = ( - 4D1D5315CF943DC90283715F1CE73F30 /* Sources */, - C30A5B56F2EB2A290FA16DA8E83058C3 /* Frameworks */, - 6D814384C4DBFEA192E22E0DE55574EA /* Headers */, + 35A914A6F70E981559E67D4E38DDE40D /* Sources */, + 2BE89E273AB15E7411F78FE25B729E46 /* Frameworks */, + D9F933FB4C402CBFD29FBBB0594B37AE /* Headers */, ); buildRules = ( ); dependencies = ( - 31E3F3487AE06970184CBCDE791FAD18 /* PBXTargetDependency */, + 1AF8EB47E48D7C1CFA7614ACB3F9C64E /* PBXTargetDependency */, ); - name = FBSDKCoreKit; - productName = FBSDKCoreKit; - productReference = 7431B6B9B7E1DFEF929BB54553B5676F /* libFBSDKCoreKit.a */; + name = Parse; + productName = Parse; + productReference = 69BA2E95DE6DD4BD8CCD5C2F04F31412 /* libParse.a */; + productType = "com.apple.product-type.library.static"; + }; + 6C88FB013486FDFB342E31070F055B7D /* RKValueTransformers */ = { + isa = PBXNativeTarget; + buildConfigurationList = F2360F7C13D81C174408D22905743FF4 /* Build configuration list for PBXNativeTarget "RKValueTransformers" */; + buildPhases = ( + C3FCA0C9FC07157CA1C60B02DB2BF7B3 /* Sources */, + F048AD6BAD593C1E21D93163454F1D6F /* Frameworks */, + 529CFAAEC66CAA1C5E41A5E836F8BA11 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RKValueTransformers; + productName = RKValueTransformers; + productReference = 991823AD655E78B8754FB6DE31C15928 /* libRKValueTransformers.a */; + productType = "com.apple.product-type.library.static"; + }; + 8466032D91D4D9DB26BAB2973DE4580C /* FBSDKShareKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 465F5EE40464137B8E18CF1E3B4F0A88 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */; + buildPhases = ( + 290DA60611F13F06041A000E6D8A98F8 /* Sources */, + 21C9FCE1B1B99AF519B601587E641B0E /* Frameworks */, + F713D2DAAE3958113D98DA32B364B4CE /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 1B98D50D03158FC43F851D07680931C5 /* PBXTargetDependency */, + ); + name = FBSDKShareKit; + productName = FBSDKShareKit; + productReference = 9EC619ED9963ABF73BFCE22527769210 /* libFBSDKShareKit.a */; + productType = "com.apple.product-type.library.static"; + }; + 9E227047A8538838626AF4BBABC0B0F8 /* FBSDKLoginKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = C3987B318B7564B87ABA70296462F73F /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */; + buildPhases = ( + 16B2E1DF506AC974E86E530E7E8B6C30 /* Sources */, + 5994B286A6EC267C5FAEC812F8098E60 /* Frameworks */, + 1D36BC931AD498CF9B9A0BEF59933AD4 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + D596BD6B3C54E3E9B5E021ABCCC4908B /* PBXTargetDependency */, + ); + name = FBSDKLoginKit; + productName = FBSDKLoginKit; + productReference = BB00D6E02A224030D5BDFAF952816C36 /* libFBSDKLoginKit.a */; + productType = "com.apple.product-type.library.static"; + }; + A2770197345BCE1622568AECE6B8E824 /* SOCKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = BE9B407615E85CA189C0133A977CB6E4 /* Build configuration list for PBXNativeTarget "SOCKit" */; + buildPhases = ( + 3B27D6A53A40DB67B708280465D0F21C /* Sources */, + 5972652DA8E3CB6256417EE7BCB541BA /* Frameworks */, + 8AAB5C9C35D21E7DE9BABB9F3AE359CA /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SOCKit; + productName = SOCKit; + productReference = A54BA714770BA8ED007819BC352FEB7C /* libSOCKit.a */; + productType = "com.apple.product-type.library.static"; + }; + C4D8ECA2F5CC610D055AC7FA148E43D2 /* ISO8601DateFormatterValueTransformer */ = { + isa = PBXNativeTarget; + buildConfigurationList = 85B8C76F6B34886DBFD27254F0AD599A /* Build configuration list for PBXNativeTarget "ISO8601DateFormatterValueTransformer" */; + buildPhases = ( + 6769FA2C88490E7D5C625662DB14220F /* Sources */, + 1352CC7061D4378F37147BC6CBF04E73 /* Frameworks */, + 9BB099983C685F1488B532614064A264 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 7E86B9FE2E0B008AFB152287F6BACD0A /* PBXTargetDependency */, + ); + name = ISO8601DateFormatterValueTransformer; + productName = ISO8601DateFormatterValueTransformer; + productReference = 115AC32B7B718A94B00F763F6051128C /* libISO8601DateFormatterValueTransformer.a */; productType = "com.apple.product-type.library.static"; }; - E017A37450D026E9D888F3645A58C436 /* Bolts */ = { + C9CF1C271EB58F682F0F38C8C35BAB4C /* AFNetworking */ = { isa = PBXNativeTarget; - buildConfigurationList = D03813A2C1491FAB09CEC4572528E261 /* Build configuration list for PBXNativeTarget "Bolts" */; + buildConfigurationList = F7FDAE37636FE3CB2EC4D023EBFA0B16 /* Build configuration list for PBXNativeTarget "AFNetworking" */; buildPhases = ( - 04F916F03CC6C84D27C0C169FC85A363 /* Sources */, - 5931A939FDAB18C661EC31929DC88491 /* Frameworks */, - 1C1CFC19EEFD59FB7CA7916BF561B779 /* Headers */, + 5CD892F05B21BD98CE742B66FDBDA819 /* Sources */, + 9DDD7991E61142C3AB90621D1CB423EE /* Frameworks */, + 963888F5333B9CE4EC14DA4678E04378 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = AFNetworking; + productName = AFNetworking; + productReference = 48D9F0444140EC888D96942489E879B4 /* libAFNetworking.a */; + productType = "com.apple.product-type.library.static"; + }; + CDF1F15921EAF837BFD0B27099E8329A /* Bolts */ = { + isa = PBXNativeTarget; + buildConfigurationList = DF16688DE4059476DF270CAE8D816A68 /* Build configuration list for PBXNativeTarget "Bolts" */; + buildPhases = ( + 07D3BAD91006172DF57E0666D28846BB /* Sources */, + 967922C4FD7DDAAB49F89A798597354F /* Frameworks */, + BC8D8EE96B9BD1053950B9537233B9C1 /* Headers */, ); buildRules = ( ); @@ -2889,7 +3930,7 @@ ); name = Bolts; productName = Bolts; - productReference = 46D403D3185FA87D018A34BBD7A76FC0 /* libBolts.a */; + productReference = A4365F0D13404D6A5A7FA5FE5156F9E2 /* libBolts.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -2913,411 +3954,700 @@ projectDirPath = ""; projectRoot = ""; targets = ( - E017A37450D026E9D888F3645A58C436 /* Bolts */, - A510D2CCD10E1ACAF039EB42370EECE9 /* FBSDKCoreKit */, - 87F49B89DFA2EDF98E9D8C6CB50976BF /* FBSDKLoginKit */, - 8ADAD2264B57B834BB67514D536FB7E3 /* FBSDKShareKit */, - 7F26E33CF29862A805138C68D09DFFD9 /* Parse */, - 52CB7F68BF709EBC0E9FFA4144EE1B03 /* Pods */, + C9CF1C271EB58F682F0F38C8C35BAB4C /* AFNetworking */, + CDF1F15921EAF837BFD0B27099E8329A /* Bolts */, + 25B614D6ADBCB106DEE01D64514A1810 /* FBSDKCoreKit */, + 9E227047A8538838626AF4BBABC0B0F8 /* FBSDKLoginKit */, + 8466032D91D4D9DB26BAB2973DE4580C /* FBSDKShareKit */, + C4D8ECA2F5CC610D055AC7FA148E43D2 /* ISO8601DateFormatterValueTransformer */, + 63CC4B4092B896F9AACC389383233974 /* Parse */, + 146F659281512C0B5FB603D6893AD31E /* Pods */, + 6C88FB013486FDFB342E31070F055B7D /* RKValueTransformers */, + 5A89C7736981130B2EEED27805B7A855 /* RestKit */, + A2770197345BCE1622568AECE6B8E824 /* SOCKit */, + 158117D77AED03B83733E51D2D22983B /* TransitionKit */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 04F916F03CC6C84D27C0C169FC85A363 /* Sources */ = { + 07D3BAD91006172DF57E0666D28846BB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 55AF31B2E7E52507E13E3EE489CAB42F /* BFAppLink.m in Sources */, + B39DAC4258721979718AF68CFFDF2F74 /* BFAppLinkNavigation.m in Sources */, + 8AAF4E0737895C4A6F96AD130EB41A76 /* BFAppLinkReturnToRefererController.m in Sources */, + 5CC98BA3E4146174EB3FBC5D20DC1CE5 /* BFAppLinkReturnToRefererView.m in Sources */, + 3A04E842AA18A356259934EF2599629D /* BFAppLinkTarget.m in Sources */, + 99CF212BAA3933341FF49D3902823477 /* BFCancellationToken.m in Sources */, + 8AD06EFB5A8B1FA75F88414D6A51AD10 /* BFCancellationTokenRegistration.m in Sources */, + FABCB5C3C522BD3BD90E520F858E9D90 /* BFCancellationTokenSource.m in Sources */, + 8367F497608E4E978AC85C9201057F28 /* BFExecutor.m in Sources */, + FE482065A069005611AF4B036E7DDCED /* BFMeasurementEvent.m in Sources */, + EEB87A351E1B32FD3CA32811E998135E /* BFTask.m in Sources */, + 1FAAB738BDBFD14A7B2E1C9FE9F7CA82 /* BFTaskCompletionSource.m in Sources */, + 507B7C7F3E30F50FF9BAE6C907ECE626 /* BFURL.m in Sources */, + D04FDE92822D348AECB997E83FC68F16 /* BFWebViewAppLinkResolver.m in Sources */, + A236FA4A4D8D428BCF2799A6D87D96DB /* Bolts-dummy.m in Sources */, + 0E0632D6D28316A2A4CC00E6CCAFB98C /* Bolts.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09D794CED70B7E37F4246A92E1B6EB12 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 69A9A1FBEE8290A0146EC75F9958ACBE /* RKAttributeMapping.m in Sources */, + 3D67F027014DB141F5CD6820ED830BA2 /* RKBenchmark.m in Sources */, + D936A464317E7189D4808D81F719F27E /* RKConnectionTestExpectation.m in Sources */, + 6176AD2985531B49564230661B07EE33 /* RKDictionaryUtilities.m in Sources */, + B0E5D758FA09DBF05C5A27C53D9EC1DF /* RKDotNetDateFormatter.m in Sources */, + 31E03BBD64B8193A5A9C6C7FF049CDE3 /* RKDynamicMapping.m in Sources */, + F83612B741AE8F04DD7367C0069652FF /* RKErrorMessage.m in Sources */, + E0EE720B924E4F4B4B269F9BFF9BEE6E /* RKErrors.m in Sources */, + 5AD718CF19228CE250EE9C5942ED28FB /* RKHTTPRequestOperation.m in Sources */, + 98B5BFC65638844B3AF600A7AC6486D2 /* RKHTTPUtilities.m in Sources */, + 3E0E763F67DFDDA31AF5DBDEAAA1207E /* RKLog.m in Sources */, + A2A8FA3EF7C62775D279A5B32E06B37E /* RKLumberjackLogger.m in Sources */, + 314069A93A029213626B93EB93610079 /* RKMIMETypeSerialization.m in Sources */, + 655A0B669A924B4AE31129D70784FB93 /* RKMIMETypes.m in Sources */, + 6630D0D212E7B8AE5D69DEBC4909AAF5 /* RKManagedObjectRequestOperation.m in Sources */, + 537DF62CE12445EB1DAD955A6C6ACC97 /* RKMapperOperation.m in Sources */, + 8B3551C3785FF40691325863A18E92FA /* RKMapping.m in Sources */, + B9825AB10AEC3548EC0716A1880B163C /* RKMappingOperation.m in Sources */, + 530C3054D34C5772D012A7791BEBD97B /* RKMappingResult.m in Sources */, + B0E57247D491FAA4B3F4B137595AD3E2 /* RKMappingTest.m in Sources */, + 1A074041FA5308016DBEE2905C5EB2A5 /* RKNSJSONSerialization.m in Sources */, + 6133962C287FD9B396459F292C4CA3E2 /* RKObjectManager.m in Sources */, + EF52CCC8678558CD77AF0992B2ED2B85 /* RKObjectMapping.m in Sources */, + 7155F162641F1D6675833714D700B403 /* RKObjectMappingMatcher.m in Sources */, + E1DE390E8E60E0B867407C70A2829CA8 /* RKObjectMappingOperationDataSource.m in Sources */, + 87668BEB2644459D0714A1D916BD3EBC /* RKObjectParameterization.m in Sources */, + AED780AA3103CE272620ABA5144C7EB9 /* RKObjectRequestOperation.m in Sources */, + B6BF8650AC031C390261566634596617 /* RKObjectUtilities.m in Sources */, + C933A60476A5EBDB9A82574B7BFDAE6D /* RKOperationStateMachine.m in Sources */, + 70531F77925054688B5A2863B2209C32 /* RKPaginator.m in Sources */, + 0249DD298C4521858041ED1ABD27B4EB /* RKPathMatcher.m in Sources */, + 3DA7C9EC3F83FAF0FB19DC783FBBF412 /* RKPathUtilities.m in Sources */, + E63519CA8D7880BB295B7EA51A8166B6 /* RKPropertyInspector.m in Sources */, + 9D7FA3822D5504762ECA314C8A00DB7C /* RKPropertyMapping.m in Sources */, + D5E50E373823D2CBA317B52A85ECDB46 /* RKPropertyMappingTestExpectation.m in Sources */, + 5DA9A28E3169B2A7B8A809BAAD3E86C8 /* RKRelationshipMapping.m in Sources */, + 859358B83393C54648A62C9CDA04C46D /* RKRequestDescriptor.m in Sources */, + 8D34E8CC2BE98E98B00C3A7BD7744D34 /* RKResponseDescriptor.m in Sources */, + DBEA4B61BB4FCA89E6DEBF42D257395F /* RKResponseMapperOperation.m in Sources */, + 59F177028361FDDB97A781AAE29E9B82 /* RKRoute.m in Sources */, + 3B7EBA7886CB6F28D8C9BF552955CE2F /* RKRouteSet.m in Sources */, + 3CDB89F3725ED26B768FE843D82396EF /* RKRouter.m in Sources */, + 512E2D4FEED38C66EC4923DBFB185CEF /* RKStringTokenizer.m in Sources */, + 655154BFD72359BFDA301C638AEB234A /* RKTestConstants.m in Sources */, + 745C38783C1053304B73F0386AFA906C /* RKTestFactory.m in Sources */, + 3B16D2CF7B1C7C98DF560E1208D45CEE /* RKTestFixture.m in Sources */, + 4C8EF69C1B7610ADC270ADF5C27A92E3 /* RKTestHelpers.m in Sources */, + 02510F8446BAA50DDF30A10F1ECA9A6D /* RKTestNotificationObserver.m in Sources */, + DAA4EAED7C7A73C4124FBB17C2E2D07F /* RKURLEncodedSerialization.m in Sources */, + FBF30755BBEC3C5FBA7D5463CCBBA04F /* RestKit-dummy.m in Sources */, + 1234595A0A3952AF80B9D7B2A706D42C /* lcl_RK.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 16B2E1DF506AC974E86E530E7E8B6C30 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9E757C484BA1AAE97BE4C2409B6FD0A2 /* FBSDKLoginButton.m in Sources */, + BF7783BA3CF0BE676356BAA176D27708 /* FBSDKLoginCompletion.m in Sources */, + 8A0F2CECD9DDD91A54E8B7B4DB24E6B6 /* FBSDKLoginConstants.m in Sources */, + 07287065D4777E1A383C96927EEFD816 /* FBSDKLoginError.m in Sources */, + 9ED5478F4952488EFF6485BF5E50ACAF /* FBSDKLoginKit-dummy.m in Sources */, + E315649B8C0329ABBE715331EC1105D3 /* FBSDKLoginManager.m in Sources */, + 48ECB9C2569B303EBABBDDDB3BE18152 /* FBSDKLoginManagerLogger.m in Sources */, + 35CBB8FDE995DF721CBB0CDFE012C9D8 /* FBSDKLoginManagerLoginResult.m in Sources */, + 72207B02452AB0EDDF0FE5AC43B794DF /* FBSDKLoginTooltipView.m in Sources */, + 89DCEEBB7F2531565138924B9051515D /* FBSDKLoginUtility.m in Sources */, + 446CC1EE67B0B5F1F80B6FEA0F5A7ED0 /* FBSDKTooltipView.m in Sources */, + 2A34C2128A8898FD3560B05FE8AEC6E6 /* _FBSDKLoginRecoveryAttempter.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 290DA60611F13F06041A000E6D8A98F8 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5E4C8F31597A078F0C354AB8710A0E08 /* BFAppLink.m in Sources */, - 1130B0AEE5F9BD63B55C152BAF5106DC /* BFAppLinkNavigation.m in Sources */, - 35118B7E36A74239A4477C8E27A33FEE /* BFAppLinkReturnToRefererController.m in Sources */, - C9A04A5564AD93F2D29EB2A7E0B4A9DB /* BFAppLinkReturnToRefererView.m in Sources */, - 3C2B301A7BCE209D2D1C8E06F9EC8D37 /* BFAppLinkTarget.m in Sources */, - 8E07A844FBC59F8B9D73FAE12E02750B /* BFCancellationToken.m in Sources */, - 6106389848B734829466DFE8F59D4902 /* BFCancellationTokenRegistration.m in Sources */, - FEE736B607EBEDA1D87C97B7A60C056C /* BFCancellationTokenSource.m in Sources */, - 1E2206097284965CFD9DFE4426467D67 /* BFExecutor.m in Sources */, - E0B1DB6ADFD698DA60717627A946015E /* BFMeasurementEvent.m in Sources */, - 627E13AAD8DEE6700D48E5D62A19E006 /* BFTask.m in Sources */, - 53B43D61079878D9F3D459CDEEEE0C39 /* BFTaskCompletionSource.m in Sources */, - C19D9ECB5B4495B5218A40256135FF82 /* BFURL.m in Sources */, - B2BDC7947CCD674D3AB2E9C362FF6D7C /* BFWebViewAppLinkResolver.m in Sources */, - 6CBF07685287382B192F73AF43D9072D /* Bolts-dummy.m in Sources */, - EDC9073C2528E8A4C94343F4F3AB7FEF /* Bolts.m in Sources */, + 7CE5FA614C65D51023461EFEDA3F35D2 /* FBSDKAppGroupAddDialog.m in Sources */, + F2CDB8E6D9A013D37FD7054A5A1E2C7D /* FBSDKAppGroupContent.m in Sources */, + 0BF5D62B21185C974403236E5B12BB47 /* FBSDKAppGroupJoinDialog.m in Sources */, + 1D1D4A63CA7E7C9C93B672370E9261F6 /* FBSDKAppInviteContent.m in Sources */, + E29BC3C544BF38C2F30CB4B2AAD45B41 /* FBSDKAppInviteDialog.m in Sources */, + 7908444C47D45F63B7D6E3AB107C9CC5 /* FBSDKCheckmarkIcon.m in Sources */, + 7E851432216D305D68D5E8D984712692 /* FBSDKGameRequestContent.m in Sources */, + E4EBE0695A4E89A25BA0DCBB7A37C8C4 /* FBSDKGameRequestDialog.m in Sources */, + 20FA43FA68DF7B3AA0C3287CEB16B45F /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */, + FCF7B5A60C9D80BB8ED81E71C7AC8626 /* FBSDKLikeActionController.m in Sources */, + DBD290D5C0A24237D2BD5BD12D51421D /* FBSDKLikeActionControllerCache.m in Sources */, + AAB0B8BD8FEDBC51DC6FC0D6A589AFC6 /* FBSDKLikeBoxBorderView.m in Sources */, + 8E194598BA9FA104EBD9F40A911BFDFE /* FBSDKLikeBoxView.m in Sources */, + 1CFEE22022532C92122574E140CB27BA /* FBSDKLikeButton.m in Sources */, + 684A5251290479C9ACDB4475F2940FC0 /* FBSDKLikeButtonPopWAV.m in Sources */, + 7D1DF1DAE2CCE5B8852F7715A228B086 /* FBSDKLikeControl.m in Sources */, + 9C174E63607360CD339FECB3BFA37F4E /* FBSDKLikeDialog.m in Sources */, + B15373F23FB7B5D41A62CA92BBDD567C /* FBSDKLikeObjectType.m in Sources */, + E530D88B0E0091515A6C8A8E1AA22B21 /* FBSDKMessageDialog.m in Sources */, + 4B0728E23CBBDB6147793AD950A6863B /* FBSDKMessengerIcon.m in Sources */, + 7DE0147BFAAC8C52F531763BDCACB2C4 /* FBSDKSendButton.m in Sources */, + 375BA2E48BF70455B6F5124A7AB5DD9F /* FBSDKShareAPI.m in Sources */, + 096ECB92C0E8A0012A979F498F805D7A /* FBSDKShareButton.m in Sources */, + 3C8B562089BB841438C603BABE32632A /* FBSDKShareConstants.m in Sources */, + 0CE4944C400ACFDAF62ACE7BE9D296B7 /* FBSDKShareDialog.m in Sources */, + 6E70C3CB52C461296A5B3187273D7C33 /* FBSDKShareDialogMode.m in Sources */, + 3174730BF077E855590518B3457069F8 /* FBSDKShareError.m in Sources */, + 0A4CDCF83EC9FBDE9EC13F7874D5FFAE /* FBSDKShareKit-dummy.m in Sources */, + 1F4C9368105876D7EE4EBDB3C73369CA /* FBSDKShareLinkContent.m in Sources */, + 52493A2D9336CF921C2D109844F373CC /* FBSDKShareOpenGraphAction.m in Sources */, + 77AB0018DA45275B3E7BFCDC94D8AABD /* FBSDKShareOpenGraphContent.m in Sources */, + 492DCBE9081F45A8B617B971A5B76263 /* FBSDKShareOpenGraphObject.m in Sources */, + 6E7DC3D8EDD49882956585EDB0A9C13F /* FBSDKShareOpenGraphValueContainer.m in Sources */, + 134A0D3E2B08F588C5212E330CC519ED /* FBSDKSharePhoto.m in Sources */, + E4FBC21224FF5A25AAE72F6E25111FD5 /* FBSDKSharePhotoContent.m in Sources */, + B64274ADB723090A619329059E5367B1 /* FBSDKShareUtility.m in Sources */, + 780B558D9C23324A76E2300EB403708E /* FBSDKShareVideo.m in Sources */, + 6282DAB78EB9EF693393423B89E303A5 /* FBSDKShareVideoContent.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4D1D5315CF943DC90283715F1CE73F30 /* Sources */ = { + 35A914A6F70E981559E67D4E38DDE40D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4C1A4B84FC9C07E0C03CF560175A8765 /* FBSDKAccessToken.m in Sources */, - F10A986E0C7986EEB092D621957E9A35 /* FBSDKAccessTokenCache.m in Sources */, - 557732BF5412A367CA63E4CC0C8E1231 /* FBSDKAccessTokenCacheV3.m in Sources */, - 2F11E320BB3B775D097764E76EAAFFEF /* FBSDKAccessTokenCacheV3_17.m in Sources */, - 35D4C9D681C02CE17416BCC6C82CC37B /* FBSDKAccessTokenCacheV3_21.m in Sources */, - A4A60E33AFF6B461A043C413D1B9D4E4 /* FBSDKAccessTokenCacheV4.m in Sources */, - 9E63D3D328F8688E3A110A7471A76EE0 /* FBSDKAppEvents.m in Sources */, - 7E9FC7FDDDB432095AF34F79FCFCE9CE /* FBSDKAppEventsDeviceInfo.m in Sources */, - 0295896A65DEFA556020FAF30366DF0C /* FBSDKAppEventsState.m in Sources */, - 933C5D203D10D0FB3205B0FC2DD744F1 /* FBSDKAppEventsStateManager.m in Sources */, - 1EE9A8EC40D092820419E7A7DAAB79F6 /* FBSDKAppEventsUtility.m in Sources */, - 6FBA55245D921C73581CD3B4058073CB /* FBSDKAppLinkResolver.m in Sources */, - 75F6BB7AACADCF0FDF54458E1FDBF6C4 /* FBSDKAppLinkUtility.m in Sources */, - D5650C90FF89446F265AB92F128B696F /* FBSDKApplicationDelegate.m in Sources */, - 22E996525BF371CEA7503656391231B6 /* FBSDKAudioResourceLoader.m in Sources */, - 24CDB698465EC154FCDAB969C4DB41EF /* FBSDKBase64.m in Sources */, - 55D902D3ACA8F967C1F72B51756E26F7 /* FBSDKBoltsMeasurementEventListener.m in Sources */, - 2A45C81A059350612A5BED9F330A14AA /* FBSDKBridgeAPICrypto.m in Sources */, - E8B019228FF069E4A1B1A07AB1AC2B3A /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */, - 12808509E4ABFDF7030A7C6ABAA68616 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */, - 7DD39755BB6F240522A6235B4E218DF0 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */, - 29FBBB45CB7F81B05EABA6C9DCACCB25 /* FBSDKBridgeAPIRequest.m in Sources */, - D2B4AAB5308342E98196868D0B732FA1 /* FBSDKBridgeAPIResponse.m in Sources */, - E1325F398C34BEA93CD9321ADFDB74BE /* FBSDKButton.m in Sources */, - 29166D4DAACA9E28F26B324BCDA69382 /* FBSDKCloseIcon.m in Sources */, - 359A4B46CD1A246979E24F1A1D45449D /* FBSDKColor.m in Sources */, - DC2C432ADD7B9BF3E341DF74E3FE1558 /* FBSDKConstants.m in Sources */, - DC464A1128A701A7CF13E46185475091 /* FBSDKContainerViewController.m in Sources */, - 06E66A4FCDA7BE84ABB7212E5D346452 /* FBSDKCoreKit-dummy.m in Sources */, - 785EF8A13CF87CF8086D4653B1CE826E /* FBSDKCrypto.m in Sources */, - 8C157133D56BF238386C33CF523E7D47 /* FBSDKDialogConfiguration.m in Sources */, - 1040D99E9461517B77C9B50A96E91A7B /* FBSDKDynamicFrameworkLoader.m in Sources */, - BD15875D09A6E6126333EA8200F3CED3 /* FBSDKError.m in Sources */, - 2446F1673C3F111AE5544C5D612F983D /* FBSDKErrorConfiguration.m in Sources */, - 79366269D4BA5E9EC208D0AFC2C43E99 /* FBSDKErrorRecoveryAttempter.m in Sources */, - 6B7F38B71431FCAE3FF85C68745E73F5 /* FBSDKErrorRecoveryConfiguration.m in Sources */, - B9DCE0A35921E1DAFB1C063EC254E6A6 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */, - 4B04059FB01CB2A896E9DC7BCD426A07 /* FBSDKGraphRequest.m in Sources */, - 2E1BA71176C94E1755B7182A3B0DC8BC /* FBSDKGraphRequestBody.m in Sources */, - 9EBDAE34F4A8CB5649E184EE8DA92133 /* FBSDKGraphRequestConnection.m in Sources */, - DAAE0B37F5BE0DA84A8932C0643484ED /* FBSDKGraphRequestDataAttachment.m in Sources */, - D3134BF37E80DB532CB93325997FB927 /* FBSDKGraphRequestMetadata.m in Sources */, - C872275F11CC8962B2FAD03A3B9B13D6 /* FBSDKGraphRequestPiggybackManager.m in Sources */, - BAEC1C6ADE3E2E0B4B8BC1E58DC4E9B1 /* FBSDKIcon.m in Sources */, - 297DB3DE5178B2FA2A6A10EF99454A09 /* FBSDKInternalUtility.m in Sources */, - F226BC6EF2861BE54054C5A0E1508BC0 /* FBSDKKeychainStore.m in Sources */, - B292958ED03BC952956FD8A4ED79E0DD /* FBSDKKeychainStoreViaBundleID.m in Sources */, - C74F0797B7B9DC9ED903076DAAB112C1 /* FBSDKLogger.m in Sources */, - 081A0C2B9D647B6B157889DE9300036D /* FBSDKLogo.m in Sources */, - 4BE274866F02B07D87B61B50A405E766 /* FBSDKMaleSilhouetteIcon.m in Sources */, - 30FD4EF0B6E65062C47B435ABC219900 /* FBSDKMath.m in Sources */, - 925B485469CF179340D855CB22857291 /* FBSDKMonotonicTime.m in Sources */, - 6F1007ED622C28520AD82DE65F64804B /* FBSDKPaymentObserver.m in Sources */, - 7BA68DEE96B757C492E6BD77B94620B7 /* FBSDKProfile.m in Sources */, - 86249EC7787535A0B0ECEC25B48D8635 /* FBSDKProfilePictureView.m in Sources */, - AA1E39ADA454257B308C615115763491 /* FBSDKServerConfiguration.m in Sources */, - 2EDEF8FFB620FBD7083DDDE379A09698 /* FBSDKServerConfigurationManager.m in Sources */, - FFBEDB74DCA016F287B966EECFA6F909 /* FBSDKSettings.m in Sources */, - B32B1CA0020B31D043806BC3FEB9A0D5 /* FBSDKSystemAccountStoreAdapter.m in Sources */, - 77229C67477828C6DBC3AD1BF1962BEB /* FBSDKTestUsersManager.m in Sources */, - 1848DA8D90C5B65BBAE55E0F5C277645 /* FBSDKTimeSpentData.m in Sources */, - D99E0E47569B3EA08DD354582883AA97 /* FBSDKTriStateBOOL.m in Sources */, - E213A5926DFA7791DCA2621FFC3C37EB /* FBSDKTypeUtility.m in Sources */, - F435C8D6A784B176C8528DC2C90E53D9 /* FBSDKURLConnection.m in Sources */, - 3A6A18C3954C1B80604F12E048173F89 /* FBSDKUtility.m in Sources */, - 887427914859D11CACBBC4A0C9858A42 /* FBSDKViewImpressionTracker.m in Sources */, - 151E6C369136D436BB51A4DDF2DB9719 /* FBSDKWebDialog.m in Sources */, - 10D67968048D274197D4CD9F02D7664D /* FBSDKWebDialogView.m in Sources */, - 4429798D21F62121D2D8BD3009BC590D /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */, + 8AD10194BE6135D5C73D85DC985209CD /* BFTask+Private.m in Sources */, + B5E5FB68DB75A0C066EE77B2D470BE2C /* PFACL.m in Sources */, + 439602F2414CDEB8A062B5FD625BAFD9 /* PFACLState.m in Sources */, + 6DE52973839454F2DE410A85A425CDCE /* PFAlertView.m in Sources */, + 621B1B7D0F592DB1DD7961731C2EC9AA /* PFAnalytics.m in Sources */, + 0438ACC4040FF8EB5AA1A51F1D3E9A4A /* PFAnalyticsController.m in Sources */, + B03FF153F1F75E2ADB673B98C7879532 /* PFAnalyticsUtilities.m in Sources */, + E0EA33785A5F59E57513492FB49468A6 /* PFAnonymousAuthenticationProvider.m in Sources */, + ACB2D6E5C8741DE88A68AE240837344F /* PFAnonymousUtils.m in Sources */, + 34C22BBABD69A8D88FD8DFBDBEC7892E /* PFApplication.m in Sources */, + 7F26EBAAB782422E0EA8A850890A77F2 /* PFAsyncTaskQueue.m in Sources */, + DB2762412635FEA4B77C5E751F091473 /* PFBase64Encoder.m in Sources */, + 7941DC7315CDE26D59CD0EB217D43023 /* PFBaseState.m in Sources */, + 4C2EB05C82A1FA468ADAE73953ADCB07 /* PFCachedQueryController.m in Sources */, + B0FEC135BF9D6D4B7A607FDD74C18A8C /* PFCategoryLoader.m in Sources */, + D1301D79ABEC0BF7196AE13B6607A522 /* PFCloud.m in Sources */, + 99B95FDB465ACC34C5C97139218A4D54 /* PFCloudCodeController.m in Sources */, + 811EAC8E6D816492BA4DD630B64B6E08 /* PFCommandCache.m in Sources */, + 3604341EAD3633433B487305A3D71A76 /* PFCommandResult.m in Sources */, + B47819184E10C7AAB004E897ED18EF54 /* PFCommandRunning.m in Sources */, + 1D25F16E42245E7F9ED399E79A782AF8 /* PFCommandRunningConstants.m in Sources */, + DABCBF2D85FD3680A4CA2867353DB56B /* PFCommandURLRequestConstructor.m in Sources */, + 1167C7893F088AF78C53D93AEEDEA696 /* PFConfig.m in Sources */, + 93A9D4AC38D1D5391929155E05F83D2E /* PFConfigController.m in Sources */, + 64C6C42AFFA02CC4E53836226E5C4219 /* PFConstants.m in Sources */, + 611039D2BE3210BC332D787307D5DD21 /* PFCoreManager.m in Sources */, + 10B9DF916653B140AD9B5F3F0A0573CF /* PFCurrentConfigController.m in Sources */, + 9713B6D2036DE8FE79A48B9BED3D6B25 /* PFCurrentInstallationController.m in Sources */, + DDC4F19F342E938AC97A32F890220035 /* PFCurrentUserController.m in Sources */, + 54F88F11E5AE02A0FF195F47B85C9434 /* PFDateFormatter.m in Sources */, + 4F0980C558B7B9DA53CE0BD0B6B37226 /* PFDecoder.m in Sources */, + 2771126CEE0ED676666F21E9A617ECE3 /* PFDefaultACLController.m in Sources */, + 77EC8FF856687110A3538AB69DC07FF5 /* PFDevice.m in Sources */, + 91262C7FCFFF6CB8C7510EC21277BDC4 /* PFEncoder.m in Sources */, + 2442532FBCA5707E5217A68EA0594E96 /* PFErrorUtilities.m in Sources */, + 887C6E013DF079EB8EF5B6F72BCDD256 /* PFEventuallyPin.m in Sources */, + 11A6050774C74E9CE6C2F5F4583307A3 /* PFEventuallyQueue.m in Sources */, + 347B3C92362CDFCAAA3F0D16BB79DD75 /* PFFieldOperation.m in Sources */, + 9CB8FB8E4DFBCA73F23A0767CC00C9F9 /* PFFieldOperationDecoder.m in Sources */, + AA6DB4FD502FE0EBE40728B7F13E749D /* PFFile.m in Sources */, + FB49939C983F644539F4E3BD68498309 /* PFFileController.m in Sources */, + 805B5C7F8601EFF4AC20A141A8920907 /* PFFileDataStream.m in Sources */, + 32A1FA10137D497E941428136267CA6E /* PFFileManager.m in Sources */, + 7EB608B728A52AD779DFCDAF20CC3A26 /* PFFileStagingController.m in Sources */, + 4E0D12CEB233090E07A3EC12601898E9 /* PFFileState.m in Sources */, + 78C867C3E7EC565C35E4BC95FC265B34 /* PFGeoPoint.m in Sources */, + 686756C4CEC0B00FB743AF14B40E8682 /* PFHTTPURLRequestConstructor.m in Sources */, + F51372F07EC1E8663574DC8FF2B69C88 /* PFHash.m in Sources */, + 30152EEA6C1FB5F3A46B5E6D9E1866FC /* PFInstallation.m in Sources */, + 04DE3864BDD52DB342049EFB3EECB75E /* PFInstallationConstants.m in Sources */, + 1E2B7478F9A071679BAD0B2B90203C58 /* PFInstallationController.m in Sources */, + 49B57E58230D81AEC7332255C98C3BF1 /* PFInstallationIdentifierStore.m in Sources */, + 1DD44AE9322BF5C38003687F763A49B0 /* PFInternalUtils.m in Sources */, + 66BB85211EFD612B854906B7996059FA /* PFJSONSerialization.m in Sources */, + 436FF1E87CE8508ADEA80DA9F5A7FDD7 /* PFKeyValueCache.m in Sources */, + 9A4443483F57345BB06E660DB76AB29A /* PFKeychainStore.m in Sources */, + FC46D5340A6EEE1D53E43468AAB8E8AE /* PFLocationManager.m in Sources */, + 69809238B0561FABDE611AF677BCA475 /* PFLogger.m in Sources */, + 8F318B41E49C31FF2E6C13F6F120FD15 /* PFMultiProcessFileLock.m in Sources */, + 209D7DF631C4A5C22409B0709A1CF706 /* PFMultiProcessFileLockController.m in Sources */, + EC6ED18CFB8C6AD69DACFDCA9DE8A178 /* PFMulticastDelegate.m in Sources */, + 219C3827432B312C5FB04AEAA9C26E16 /* PFMutableACLState.m in Sources */, + 0899727B95CE0A9B8FB7646F3F1E84D8 /* PFMutableFileState.m in Sources */, + F72D54F2ED68E52F818FD3E109C865D0 /* PFMutableObjectState.m in Sources */, + 535C072BDDE463B138751F6BA58018A4 /* PFMutablePushState.m in Sources */, + 66B00B5F004324612C1724CE19F19752 /* PFMutableQueryState.m in Sources */, + 49D87368E080534F2829BDFFFD26D68D /* PFMutableRelationState.m in Sources */, + 74671B80F66F8C7A04D96DADF1722860 /* PFMutableUserState.m in Sources */, + 104F33CA0D4A2D153078B7E86F19F26A /* PFNetworkActivityIndicatorManager.m in Sources */, + A8BC3147665EFE52F3B865F75BA23479 /* PFObject.m in Sources */, + 3EA794DCFF7259995465393C2F8F2F3F /* PFObjectBatchController.m in Sources */, + A3BDEBD652C5B97ADDAD62F68E695BAB /* PFObjectConstants.m in Sources */, + 34D4E13D2EF2F56D363822822A206D07 /* PFObjectController.m in Sources */, + B867985361289320989E515B5ADFB9D3 /* PFObjectEstimatedData.m in Sources */, + F59241FB57F2005FBFECC2326048D075 /* PFObjectFileCoder.m in Sources */, + B27D97B8AB65C9259475002C793F08CD /* PFObjectFileCodingLogic.m in Sources */, + 3EE409808915A90F0D75948C1371C47B /* PFObjectFilePersistenceController.m in Sources */, + 222738C7317F7C959B8136CAC0C41697 /* PFObjectLocalIdStore.m in Sources */, + 9E1D4FDD251DA92C2D1388ED45B720A7 /* PFObjectState.m in Sources */, + F6139C136AF1688A0C4D97D886180CCE /* PFObjectSubclassInfo.m in Sources */, + 3609521E7B4772D67132F8DD9DAD0EEB /* PFObjectSubclassingController.m in Sources */, + 86070D62F7C25EA41C85CACBB8DF1BF9 /* PFObjectUtilities.m in Sources */, + 9BE301315D30B57920E32F058B66D98D /* PFOfflineObjectController.m in Sources */, + 7953CB89C3F59D4885F3C6DCB7A28A01 /* PFOfflineQueryController.m in Sources */, + 0DA0DFD7ADBEE6B5BD582CA7D93DA573 /* PFOfflineQueryLogic.m in Sources */, + DD77D691697B0B6BA6F852B46C6E8151 /* PFOfflineStore.m in Sources */, + 74D2C3271439D8096ECF2A76DF7BA064 /* PFOperationSet.m in Sources */, + 43D53A63A6745A1A21A201B36BC07974 /* PFPaymentTransactionObserver.m in Sources */, + 49F9B4E6A12B39F724C8BEA9F47429F0 /* PFPin.m in Sources */, + 8B2A9AD38EC87DE7B7D039BDF5F81B6A /* PFPinningEventuallyQueue.m in Sources */, + 9BEFB20B75AA77C91D5D82E13069504E /* PFPinningObjectStore.m in Sources */, + A6431E60D053D9BA7610CC73F2CDB276 /* PFProduct.m in Sources */, + 3793FECEA3A6BE4D02C5F7852EE3F7B4 /* PFProductsRequestHandler.m in Sources */, + 68E70C026EDCB8239875BEA879AAC286 /* PFPropertyInfo.m in Sources */, + F7C4193FCE1335CF78388CB131A8D6AA /* PFPropertyInfo_Runtime.m in Sources */, + A4796D08180059B617D5CD6D74EC4820 /* PFPurchase.m in Sources */, + 1FA415C3205971578745EE767632508E /* PFPurchaseController.m in Sources */, + 12A3F71BC200B34A3DDCD2F4EE241EEF /* PFPush.m in Sources */, + 062E34675281829E6C309C6099D0CD9D /* PFPushChannelsController.m in Sources */, + 474B4FE2195F0D3786209EF09EDA13BD /* PFPushController.m in Sources */, + 39FE6E18FF223B1EDE632A6B84889BCC /* PFPushManager.m in Sources */, + FD854AA80D142379CA38FEFC40926EF2 /* PFPushState.m in Sources */, + BF2FDD475712B1686040E596399FA9F9 /* PFPushUtilities.m in Sources */, + A2312679DCFADD5575064A07984B4BF5 /* PFQuery.m in Sources */, + 4333AE53D9FC43FFDF43A95B64249697 /* PFQueryController.m in Sources */, + 351E6DA5E99D075F0A6EBFBB4B8C246D /* PFQueryState.m in Sources */, + 7B9EBA366015D5B457AD1B325E92046F /* PFQueryUtilities.m in Sources */, + 773271EF07F93255CD92F40F5D4CDAA7 /* PFRESTAnalyticsCommand.m in Sources */, + 82484FB028F71C2A18DA9A687708C6EC /* PFRESTCloudCommand.m in Sources */, + 2640A12FB3BBEFFE06930194C91A3D0C /* PFRESTCommand.m in Sources */, + F3797EC3467D8CBF8183D6886A03E954 /* PFRESTConfigCommand.m in Sources */, + DBE3962D47DB31811D05E5FC7F16CF72 /* PFRESTFileCommand.m in Sources */, + 2F0466053F46CDA3975A8F0B2C973555 /* PFRESTObjectBatchCommand.m in Sources */, + 875B19B2C5F755ED6266F7E8BD9F0116 /* PFRESTObjectCommand.m in Sources */, + F3D640522B893DA5A057FDDE31D7CBBC /* PFRESTPushCommand.m in Sources */, + 5365C637C63F02E1973E66076518F5CB /* PFRESTQueryCommand.m in Sources */, + 3B59099B7FF527F1699FD79F0CD6F217 /* PFRESTSessionCommand.m in Sources */, + 3A3008F77AD2EA8D8F372EC10733B00E /* PFRESTUserCommand.m in Sources */, + 58D1F31CBBC230379743A7DCD682B0DF /* PFReachability.m in Sources */, + A6F8D0423D730B09FF2B44142A470FFB /* PFRelation.m in Sources */, + C46D5F22B6391A33D7AC02797B5EA6B8 /* PFRelationState.m in Sources */, + 1311EB6B3ABE7AEBCAE47A46ED073054 /* PFRole.m in Sources */, + 81124E46F1A8D5CDD47880430ABCFE5B /* PFSQLiteDatabase.m in Sources */, + 16B1EE9A2C419506D63026622C13EFF1 /* PFSQLiteDatabaseController.m in Sources */, + BB0C549E6C0EFCCA6A834D5C796E604F /* PFSQLiteDatabaseResult.m in Sources */, + 0248D52572AD490C9F0E6E0E16C899F4 /* PFSQLiteStatement.m in Sources */, + 338AC89A56557B049850D4C9BBD3FC7F /* PFSession.m in Sources */, + 46BB12DCC0CAA3F0D2EFEE605A586F04 /* PFSessionController.m in Sources */, + 9782069796E4CFFFB4A28BF5DFA57F85 /* PFSessionUtilities.m in Sources */, + 7FC91DE6C51609D920E6AE9EF00BC4D4 /* PFTaskQueue.m in Sources */, + F5EF0EC23E27DCEA92A486E79EFD7997 /* PFThreadsafety.m in Sources */, + 75DDD7E7ABEC5725E7B5CDE1AE6D770B /* PFURLConstructor.m in Sources */, + BB45519DC0D5AD108FD74D6FCA9E30C3 /* PFURLSession.m in Sources */, + 7F50192A3B43FB6E622F35F32B18BC9C /* PFURLSessionCommandRunner.m in Sources */, + 849D48E2B21EB1B116FFF0C4F686DAE7 /* PFURLSessionDataTaskDelegate.m in Sources */, + 86D39A49BE6E82211B15687264F9503D /* PFURLSessionFileDownloadTaskDelegate.m in Sources */, + DE7DCACAE6E02AD31161B263E7DE3B53 /* PFURLSessionJSONDataTaskDelegate.m in Sources */, + 198D036092702E8AF646271064ABB639 /* PFURLSessionUploadTaskDelegate.m in Sources */, + A7CA431377D4C785A52B31FF0CF83996 /* PFUser.m in Sources */, + 1DF304873442F38920E1691BCD46E4C9 /* PFUserAuthenticationController.m in Sources */, + 5F0ACB3F15BC23105DBC60FA6F67CCF3 /* PFUserConstants.m in Sources */, + A2C3E711AF53081DECBBB754EF81FBFD /* PFUserController.m in Sources */, + E4CB7EBEF04D906BB2400E1CB9EE6A7E /* PFUserFileCodingLogic.m in Sources */, + E6FC5CAFFFFFED64538C2A6AF8CC7A32 /* PFUserState.m in Sources */, + D64745B64981C4B58B41BFB0EB34FB0B /* PFWeakValue.m in Sources */, + F3AAE34F51DB2120DD7F9AF2769DE2F8 /* Parse-dummy.m in Sources */, + AC209E9605FAF1609539975FC17E2443 /* Parse.m in Sources */, + C55588B6E21DC2DEB96428E8085987B8 /* ParseManager.m in Sources */, + 97742173F7783B44F0986230885A4260 /* ParseModule.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A744DAE075D3A364F804338FDC50D99E /* Sources */ = { + 3B27D6A53A40DB67B708280465D0F21C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D69677EA0874C8A641C3EAC1650B0F83 /* BFTask+Private.m in Sources */, - 2CD4B86CFAF9CB721F853A29189581FF /* PFACL.m in Sources */, - FE76285FB50562EE5B0A1CE546E43737 /* PFACLState.m in Sources */, - 16FAF341ED8A49E3144EEB1B5E3E10C0 /* PFAlertView.m in Sources */, - 6695FCAF935A626AB8BD9FA286B781A9 /* PFAnalytics.m in Sources */, - 1A3A538509B4785B7B6623CA76004593 /* PFAnalyticsController.m in Sources */, - 267A2D6F3E72601A59294D6C8B35904C /* PFAnalyticsUtilities.m in Sources */, - 17119C973C7223A310050A3C641406EC /* PFAnonymousAuthenticationProvider.m in Sources */, - ACB80FF5C9696C3897C2DD20D18FB650 /* PFAnonymousUtils.m in Sources */, - E0DD1B663B6833D565CFFCD640E525CA /* PFApplication.m in Sources */, - 6D9129F858C5DA6A5809DACF615D023F /* PFAsyncTaskQueue.m in Sources */, - F04A246C6AF48B1F4E0AAA59AB263887 /* PFBase64Encoder.m in Sources */, - 0563FB0BD1A8121457AF6417A3F3877B /* PFBaseState.m in Sources */, - B9CAF300C714025446DBD3D170DE7380 /* PFCachedQueryController.m in Sources */, - DA176B90A87EC91233E2508B4F5D141B /* PFCategoryLoader.m in Sources */, - FAA724BD8C2E9812D6E8DB5AE75187FD /* PFCloud.m in Sources */, - 52B04DF7AA6B9EFCAEF5EFE94BD54941 /* PFCloudCodeController.m in Sources */, - 117BBCDE4D34AAAE0F3B7C9BB5D9254E /* PFCommandCache.m in Sources */, - BBEDC1B0186EE3BDCFD52D33F5019B73 /* PFCommandResult.m in Sources */, - 6AF8B6F00562BF454E2CD5A10EC0B489 /* PFCommandRunning.m in Sources */, - 06E216A82A4557C2F6C948A602A4B9B4 /* PFCommandRunningConstants.m in Sources */, - 200945BE8422160937BE875D2DC3A012 /* PFCommandURLRequestConstructor.m in Sources */, - 8ACD828FAC9F8124538B1B6E6671E248 /* PFConfig.m in Sources */, - B3149A88B5EF9D591100060E4577FFEC /* PFConfigController.m in Sources */, - 29995A9A0D5FFA5515CED4BEB70AF54A /* PFConstants.m in Sources */, - 4A359027CE24E02E2258B07BCFA195E0 /* PFCoreManager.m in Sources */, - 57057BB02C2E71110491AE84B3F7B091 /* PFCurrentConfigController.m in Sources */, - 84245166731C1ADAFC84852A605AA4DC /* PFCurrentInstallationController.m in Sources */, - B08B8E79E38086479F6B2202EE6E67B7 /* PFCurrentUserController.m in Sources */, - 226B5499EFB78CE822793F57B7F5D338 /* PFDateFormatter.m in Sources */, - 2140AB24A57365D2C212F506BCB07580 /* PFDecoder.m in Sources */, - AD9E637F9642485C7EAB40ED17FFD6EA /* PFDefaultACLController.m in Sources */, - 2E810A5D78C5F0A509A666DF78DCB27D /* PFDevice.m in Sources */, - 4FDA2085E5E26B257AB67C19AE7FA00F /* PFEncoder.m in Sources */, - 71AE845ED581E71888B1FDDD5D697A2D /* PFErrorUtilities.m in Sources */, - 8CD66ADBF206FA36EEC1BB63D4052E13 /* PFEventuallyPin.m in Sources */, - E30F6ED3C9433E9C224E934F86526DFB /* PFEventuallyQueue.m in Sources */, - 8E6C7B0C25223EBDB7C6604C6A2D3BCF /* PFFieldOperation.m in Sources */, - C6E485332A5CCC5526ABD9E70052981C /* PFFieldOperationDecoder.m in Sources */, - 0115290BBAE8D8A26CBB67DBB296B5E7 /* PFFile.m in Sources */, - 6B0AA4AFE73F485E0C620DF214D82351 /* PFFileController.m in Sources */, - 96118F82F75A07742E95B976664396A1 /* PFFileDataStream.m in Sources */, - 58ED4561BD7135E9B4531E236A8CAE11 /* PFFileManager.m in Sources */, - 217CDE795AD5E36334974C7974839D93 /* PFFileStagingController.m in Sources */, - D5EF482B2E3D57F3FD95D49EDB459A23 /* PFFileState.m in Sources */, - 1234B7A56D643EEFC32AD7B3D707F3A8 /* PFGeoPoint.m in Sources */, - 6EC3D0CE07BC83907B8AB131C6FEA9A1 /* PFHTTPURLRequestConstructor.m in Sources */, - A6D342C48B8AA4EBF44869A4F34C4209 /* PFHash.m in Sources */, - 2898D3157017DB142DBF3E00E0BD102F /* PFInstallation.m in Sources */, - A178F9052CF04F9A910455EC7A7ADB93 /* PFInstallationConstants.m in Sources */, - 343D8C1473045CEACF4BD1DA5FEEAB84 /* PFInstallationController.m in Sources */, - D24F4135A2908F8F44653B3B9285C687 /* PFInstallationIdentifierStore.m in Sources */, - 711828A478DCB7D32EFC732598558216 /* PFInternalUtils.m in Sources */, - F97E8AEA2BF089005DDFA63D975BBB4A /* PFJSONSerialization.m in Sources */, - A0626297F5A1CC35F90FD5E3051C2133 /* PFKeyValueCache.m in Sources */, - E1A1DEE33F2B917512C43A63737EB794 /* PFKeychainStore.m in Sources */, - BEEC9448DF823C0F80F5D35464DFDBB1 /* PFLocationManager.m in Sources */, - A850527F1ABF982385E234283E348456 /* PFLogger.m in Sources */, - F078C36EAE42D363446021B148D01DBA /* PFMultiProcessFileLock.m in Sources */, - 225847BA0FD2D6E5B0C7FC331BA7CCD1 /* PFMultiProcessFileLockController.m in Sources */, - 8ED4BE044EF21C643B3E79E21ECBC6A4 /* PFMulticastDelegate.m in Sources */, - AEF25B93963113F53E8832A09D77B905 /* PFMutableACLState.m in Sources */, - 9003C22E2E869AAE17A8ED51D8FD8D80 /* PFMutableFileState.m in Sources */, - 5CAC17E117B95FACAC405917DB40049E /* PFMutableObjectState.m in Sources */, - 16568C7F23CDF1C2617CDA1A62325092 /* PFMutablePushState.m in Sources */, - 75FC76263B96684BE311B778C695D7A8 /* PFMutableQueryState.m in Sources */, - 5470F6CE6D56D2390A1A04B25B7709FE /* PFMutableRelationState.m in Sources */, - 9BC3D340FB7797EA087856FB677E10CA /* PFMutableUserState.m in Sources */, - 730F6107E3FB55439CBF055292FD1211 /* PFNetworkActivityIndicatorManager.m in Sources */, - 13A1C4E2418AFCB69A8A061CDABEDF58 /* PFObject.m in Sources */, - 3FA6DA7F2D09FE5A2E518AA9288302EC /* PFObjectBatchController.m in Sources */, - 015B1B15761CFB91D536917CD1FBED3E /* PFObjectConstants.m in Sources */, - 57EC6FF906A92AEA56DD92EA8C662CCB /* PFObjectController.m in Sources */, - 79A776D0DC41D257DA6823D978C535E0 /* PFObjectEstimatedData.m in Sources */, - 59FEF86CD32941CBFFA63D5F4693AE3A /* PFObjectFileCoder.m in Sources */, - A1C73296132580A14556BA586F455433 /* PFObjectFileCodingLogic.m in Sources */, - 63591C49938B5E342974E37126F214D7 /* PFObjectFilePersistenceController.m in Sources */, - D0144F5341D9037D37D9446DA8745BD1 /* PFObjectLocalIdStore.m in Sources */, - A62FFF4A04995FA43CC038DBE8DB7979 /* PFObjectState.m in Sources */, - 6B1BF7C8DA973C86CF960C233B5B1B21 /* PFObjectSubclassInfo.m in Sources */, - D532A655317AE37BD7AC500809F5DE09 /* PFObjectSubclassingController.m in Sources */, - D0D743C0E98198942EE41BFBA24950FA /* PFObjectUtilities.m in Sources */, - 045968C599579171BF784B3516F8B2A1 /* PFOfflineObjectController.m in Sources */, - 00A070B61019CED58251933B64DCD204 /* PFOfflineQueryController.m in Sources */, - 80FB4A5ECD5FCA885D5EF27C6A1E3FC8 /* PFOfflineQueryLogic.m in Sources */, - 6B79C2AC728C350EDD9926A18D2E650F /* PFOfflineStore.m in Sources */, - 462CCA389937F980A7A1FFE8C27193A2 /* PFOperationSet.m in Sources */, - 240569949C2FF9453095CAD95D627B02 /* PFPaymentTransactionObserver.m in Sources */, - C51B459816A37F9471FD39AABAE78521 /* PFPin.m in Sources */, - F5B59A63E1A5DF6A06D293B7F6D6AAFC /* PFPinningEventuallyQueue.m in Sources */, - 1EA5DBD371A19F75A226BF25CA31469C /* PFPinningObjectStore.m in Sources */, - 974DCD6881C74FDEAB446E947479EF47 /* PFProduct.m in Sources */, - 382CAEAD6DA2082FEEF4801B7D083210 /* PFProductsRequestHandler.m in Sources */, - EFF70AE917CE096804329270000B30CA /* PFPropertyInfo.m in Sources */, - F56C1A008897709131994E8408F6A3F6 /* PFPropertyInfo_Runtime.m in Sources */, - 9F9D41E0CF8CAD2AC465F6C4FFCE1CA7 /* PFPurchase.m in Sources */, - 1E695458610F698BBCF35377CDF28FF3 /* PFPurchaseController.m in Sources */, - F9E320C0B05AE66F5CD2C49B891CDAD7 /* PFPush.m in Sources */, - 025140DE78DC4DE2EADAAA64E7382F27 /* PFPushChannelsController.m in Sources */, - 705709FDEDB3A24F1833B641E9D87460 /* PFPushController.m in Sources */, - 3706025C91B4BB38EAF348E815FD0EAF /* PFPushManager.m in Sources */, - C02E3465BA70AD28DCD5390996FB6AF6 /* PFPushState.m in Sources */, - C8E9F8ABFEE1F8C017714E754C5D8279 /* PFPushUtilities.m in Sources */, - 5E2F5A4FC20F2B6F8EBA66D864FBE351 /* PFQuery.m in Sources */, - B3E66A59EA04548C918BD8E9CC72613A /* PFQueryController.m in Sources */, - 189096427AF5BB709D1D1FFAEE25264E /* PFQueryState.m in Sources */, - AD80993512EDCDB6BB0D8F2B45D8EBBE /* PFQueryUtilities.m in Sources */, - 26862DDAADC74DA962C7D181E23CA54D /* PFRESTAnalyticsCommand.m in Sources */, - 116721C51B12DAABBC7095E284DD8EBB /* PFRESTCloudCommand.m in Sources */, - F039DF3F73126E9A4879323F015AEED5 /* PFRESTCommand.m in Sources */, - 24191EF742D65921D5B8BCD975149375 /* PFRESTConfigCommand.m in Sources */, - 69E21A2908DA39DCE37C40108E4785F0 /* PFRESTFileCommand.m in Sources */, - 9E5D86931310C44A629DA4BC6BF87A3B /* PFRESTObjectBatchCommand.m in Sources */, - D08EDD7023EA483E0FCC806B743AB8C8 /* PFRESTObjectCommand.m in Sources */, - 9B026B617E683F9C03E8BD29B6F424D3 /* PFRESTPushCommand.m in Sources */, - 07AC4C46B69255EBF0737753110703F6 /* PFRESTQueryCommand.m in Sources */, - 9E7E70AC3527DE4F9E286082227EF521 /* PFRESTSessionCommand.m in Sources */, - 7853E04B2781F9D5247FE36F97DB369F /* PFRESTUserCommand.m in Sources */, - 12D70D555B750473FDFD4444E07114DF /* PFReachability.m in Sources */, - 2712D02D098539CDB3E3F8E60D5E07E7 /* PFRelation.m in Sources */, - 4E6C905511C88BA4E3B5B12D8BF1D049 /* PFRelationState.m in Sources */, - 6C4BDD9625C03F8ED09938E299167C1D /* PFRole.m in Sources */, - 21FDA2BBB4A2B144AE336A2017002A45 /* PFSQLiteDatabase.m in Sources */, - 3F7CB366D8B55004DB4320681DABC0D7 /* PFSQLiteDatabaseController.m in Sources */, - D869A0A06F7092BB38061BE822D5F0BD /* PFSQLiteDatabaseResult.m in Sources */, - A1A51D34B7F1ACAD09DB4C718A4848CB /* PFSQLiteStatement.m in Sources */, - 684F06D3A55F610E508358633DEAF98F /* PFSession.m in Sources */, - 94D0BE43FF35618240E63C0D74C781CB /* PFSessionController.m in Sources */, - 9B122332AEED13957E029A90E6674FA2 /* PFSessionUtilities.m in Sources */, - 0119725155E71EC7F6CBCEAB5FC19DC5 /* PFTaskQueue.m in Sources */, - 670C180263184D1D8F68896C964AEE22 /* PFThreadsafety.m in Sources */, - 7763AB0E9ED90508B19469D1BE4E1E5D /* PFURLConstructor.m in Sources */, - 26F99FB90BCE2289002832D28389E430 /* PFURLSession.m in Sources */, - 1041460BCE68A200AF08B5D81DB28C1D /* PFURLSessionCommandRunner.m in Sources */, - 2A2CD77D6E2E7F12B9F3D890A3C9BC0A /* PFURLSessionDataTaskDelegate.m in Sources */, - CD9D2216FD81D025B9F8A044BC727B4A /* PFURLSessionFileDownloadTaskDelegate.m in Sources */, - 52CEE12D512539188DC4951C8466D238 /* PFURLSessionJSONDataTaskDelegate.m in Sources */, - DB4F10499FD9AE1571DF6D24F3D059A4 /* PFURLSessionUploadTaskDelegate.m in Sources */, - 1B63A4BB0D67684AA1278326F09BF4E3 /* PFUser.m in Sources */, - 3DE049023FC2163B1D8617B4956CDB32 /* PFUserAuthenticationController.m in Sources */, - 6FA12986ECFD54D5A141EC98D1C3E2A9 /* PFUserConstants.m in Sources */, - 5B72C7E51B86A4689017B9B075AD180B /* PFUserController.m in Sources */, - A4C607C623C9CA43A597968B0DA3A72C /* PFUserFileCodingLogic.m in Sources */, - 2296792F99964BC4DB7A70EA2AE3191C /* PFUserState.m in Sources */, - 8AEC4F3B27211DC55A16547DA586384B /* PFWeakValue.m in Sources */, - 3968209E908099601F60991D5DE829F0 /* Parse-dummy.m in Sources */, - EE59ED1C743DB6D311ED072D908A63CD /* Parse.m in Sources */, - 94AFC2671530505C987790F5F3FA99FC /* ParseManager.m in Sources */, - 2B2B4D270B2E4878DE1E753C46D2A366 /* ParseModule.m in Sources */, + AED7DD46159F1525CBAED2B765B6FBB2 /* SOCKit-dummy.m in Sources */, + EB73AF4C9D61D61F7B1BB0F6C573118D /* SOCKit.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A8DFD12571AC8473B88B20A031B81332 /* Sources */ = { + 3F093A1EE91BCE92AFC73A3B72540240 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8B0114F4A39914DDCDB3C472DB61C1F9 /* FBSDKAppGroupAddDialog.m in Sources */, - D473EBF593E8962DC51188AD7CA7A26C /* FBSDKAppGroupContent.m in Sources */, - 1855A22A1DFC12DB655772510147D6E5 /* FBSDKAppGroupJoinDialog.m in Sources */, - 6C46FDF8859806CA78AD521B2365C5A0 /* FBSDKAppInviteContent.m in Sources */, - 1B214B8DA84AF3D339A4A5173F84B7CE /* FBSDKAppInviteDialog.m in Sources */, - 3E2734C06AF6883C3CAE5DD479C2D493 /* FBSDKCheckmarkIcon.m in Sources */, - 01F6CEC2F048AD473BBDAA8FFA196488 /* FBSDKGameRequestContent.m in Sources */, - DD580DFD2330BC82FF3CC6AE0673D23C /* FBSDKGameRequestDialog.m in Sources */, - E1CB2BA40EE5A3FE0F3317FE718EB52E /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */, - 4A50F2B0E4CB78265EAC673D309DB615 /* FBSDKLikeActionController.m in Sources */, - DE27B30E8B84C46EFE4214A8F1DF4CA1 /* FBSDKLikeActionControllerCache.m in Sources */, - B93C621EA6D9A186BD1743F6B1E5D134 /* FBSDKLikeBoxBorderView.m in Sources */, - 7CD74FEC73EFB3EEDE052E5444DE4DE7 /* FBSDKLikeBoxView.m in Sources */, - 8453AD5FDEE1A34114BC10032F7A8278 /* FBSDKLikeButton.m in Sources */, - B7CD16BA3FCFCD0304E41FD626F2ADB3 /* FBSDKLikeButtonPopWAV.m in Sources */, - 0CF0CA6113E52DCB32C33183A1B726F2 /* FBSDKLikeControl.m in Sources */, - D66601DBFBB39851657F90C29134F86A /* FBSDKLikeDialog.m in Sources */, - 011E9F4783EC67957F40FF6CFD1BF3B3 /* FBSDKLikeObjectType.m in Sources */, - 413A19D796947A6E9E28E6026D41E2CD /* FBSDKMessageDialog.m in Sources */, - A05B16705DD63CA337527EC7129CC5EC /* FBSDKMessengerIcon.m in Sources */, - 07C07BAC99463E00A00664BABE73C8E9 /* FBSDKSendButton.m in Sources */, - 54D0B032B4FC86688CE6A288A3D2819A /* FBSDKShareAPI.m in Sources */, - 33BE00722C951BA132EE6CED6B5E97CA /* FBSDKShareButton.m in Sources */, - 495E25F21F1F487E62F73D709FCF5477 /* FBSDKShareConstants.m in Sources */, - B124A8929C4F461DBC3D5043685F2401 /* FBSDKShareDialog.m in Sources */, - 84868D53AABF24975E37AACB96FBA295 /* FBSDKShareDialogMode.m in Sources */, - 2830B7C4D04072D1398E6B5573AEB518 /* FBSDKShareError.m in Sources */, - 4DFA2BD02F94F030FC91411B297A09F3 /* FBSDKShareKit-dummy.m in Sources */, - 16E18968E369451E339FFD342156CCA4 /* FBSDKShareLinkContent.m in Sources */, - A923C01A3CCA7B26A0756D7BAF9E0D3A /* FBSDKShareOpenGraphAction.m in Sources */, - E8FE4AEF06AE75668686A795E35987E9 /* FBSDKShareOpenGraphContent.m in Sources */, - 738653101EF3E4FD4A8E2B42B20E1913 /* FBSDKShareOpenGraphObject.m in Sources */, - D17EA2C542316E553796A54137DB2BA2 /* FBSDKShareOpenGraphValueContainer.m in Sources */, - 398449323354D2CFD6F71B61806B0B13 /* FBSDKSharePhoto.m in Sources */, - 4BBE91F980C399FB90C6D8336639D55F /* FBSDKSharePhotoContent.m in Sources */, - BAFC86D712FD60393400E6F37005C10E /* FBSDKShareUtility.m in Sources */, - A1C17F0CCAFF80E954A67A06B623F1D3 /* FBSDKShareVideo.m in Sources */, - 7D2D3C0A68A7EF6E5A1148C34C24413B /* FBSDKShareVideoContent.m in Sources */, + 4443DA164C04807EF22B9E2FE3A40CEE /* TKEvent.m in Sources */, + FD2144C4BC84FA87FB99AF5DF4A659D4 /* TKState.m in Sources */, + 0722E90FFB0E0659D82D8E560CA2D2F1 /* TKStateMachine.m in Sources */, + EABAE5228ACD4A5BE6F30A53F80B9C1E /* TKTransition.m in Sources */, + B8291EBC0CA538454602E54BDA92A1B7 /* TransitionKit-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B26D5C7B40825F0680D99F821074236C /* Sources */ = { + 5CD892F05B21BD98CE742B66FDBDA819 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8B0281F30C94CC8589630EAF4D28A680 /* Pods-dummy.m in Sources */, + 215FD68C4117116C45B35634DEC57934 /* AFHTTPClient.m in Sources */, + DC21562627003B525B645FC276D91E79 /* AFHTTPRequestOperation.m in Sources */, + BE86AE3D6076FE73FA922D2531C8B894 /* AFImageRequestOperation.m in Sources */, + 5D4398B1A4E91318D99351BFA35100D2 /* AFJSONRequestOperation.m in Sources */, + FEF08B955C1019BC8165006939B7078A /* AFNetworkActivityIndicatorManager.m in Sources */, + 1A875C4481102F49D5ECE0EA0B06145E /* AFNetworking-dummy.m in Sources */, + 6A5CA197C96A6CC6EE167A495A05B09F /* AFPropertyListRequestOperation.m in Sources */, + 923EDFEA8185C3A4D6F5F36FC9B5DACB /* AFURLConnectionOperation.m in Sources */, + 7FC7C69A340784091CA09F04F2C4D983 /* AFXMLRequestOperation.m in Sources */, + D4F8178AF98C8C6E22AB9A281869B5DB /* UIImageView+AFNetworking.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - FAF70D5E5995F0AC85A56F2D3A5F19E3 /* Sources */ = { + 6769FA2C88490E7D5C625662DB14220F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - EC1AFF0BEAF765300970650A44FEC23E /* FBSDKLoginButton.m in Sources */, - 63A4E5F2E629AEBF6CF597AF608DD3DD /* FBSDKLoginCompletion.m in Sources */, - D6C47ED862055985196D9325E3121EF0 /* FBSDKLoginConstants.m in Sources */, - CCBD5FF1E39126AED1F8DD92F8DCFD82 /* FBSDKLoginError.m in Sources */, - 1B7AD2E885D25E8F20DFA5F22348968D /* FBSDKLoginKit-dummy.m in Sources */, - A87116EDAB375BCF34DC687F08B51081 /* FBSDKLoginManager.m in Sources */, - 816A183678595D414E0D7F57F291CA7C /* FBSDKLoginManagerLogger.m in Sources */, - B5AD392A076CFADF6041F94414478DCD /* FBSDKLoginManagerLoginResult.m in Sources */, - 738BE7380719F5A074B833B92FB64E83 /* FBSDKLoginTooltipView.m in Sources */, - 3830CBF1147D74E5E5E625F57E7F9D44 /* FBSDKLoginUtility.m in Sources */, - 902F3630EB8D3ABB9D7755CCDC17152D /* FBSDKTooltipView.m in Sources */, - 84D8529D8524E39A936AED30BDD14522 /* _FBSDKLoginRecoveryAttempter.m in Sources */, + 89F559D7BE8FC96E8C092B31F5E63841 /* ISO8601DateFormatterValueTransformer-dummy.m in Sources */, + F3F2C56A77D4DB0D486E7A35E5C939ED /* ISO8601DateFormatterValueTransformer.m in Sources */, + 11EA198AD6FEA828E599CF4EFBE3C08F /* RKISO8601DateFormatter.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6D2B8A8A757FB427940FBB3F122854B2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8F9A675846DC2C23572CCD8E4FFBDB93 /* Pods-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A26EE2CA4252E388C674FDAB319F3A92 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 18D96E233E2B72D021830D100071A88F /* FBSDKAccessToken.m in Sources */, + 51CA3523EC5FB24F89754DB0488FE893 /* FBSDKAccessTokenCache.m in Sources */, + 9A1AE31B803BD2B8CF59FB3983F9A51C /* FBSDKAccessTokenCacheV3.m in Sources */, + FDB04831594240B98C5A985E5E559096 /* FBSDKAccessTokenCacheV3_17.m in Sources */, + 65F55F45327059D9F88AF2CCFF2BC61F /* FBSDKAccessTokenCacheV3_21.m in Sources */, + 6F7AEB8231ADCAD9FC73D5392A7529A2 /* FBSDKAccessTokenCacheV4.m in Sources */, + 0CF6CBBCBFD055C8F98940C7D12E3BAE /* FBSDKAppEvents.m in Sources */, + 2F83FE38563565221965FB1F72C8D8E4 /* FBSDKAppEventsDeviceInfo.m in Sources */, + 36C509AB4E714B60F207DCDFD4F6E76B /* FBSDKAppEventsState.m in Sources */, + 6869D7F49C98AACB83CD2D8941B5024F /* FBSDKAppEventsStateManager.m in Sources */, + A85D40790F9D7EBE017FD8B069C2C6E0 /* FBSDKAppEventsUtility.m in Sources */, + CF2D29BB657128E16D30D1A8626D5A88 /* FBSDKAppLinkResolver.m in Sources */, + AF7F585D873E31A4CA37FF5C3E6F6818 /* FBSDKAppLinkUtility.m in Sources */, + 3784B93C592189DD7641DD0C055EE510 /* FBSDKApplicationDelegate.m in Sources */, + F294FEB022DDEC737B565FA9ADBB17B6 /* FBSDKAudioResourceLoader.m in Sources */, + B519F723811EEC0DAD613CEBFE109F92 /* FBSDKBase64.m in Sources */, + E9E5B34C82D3E41A4ADCD1ABD9769103 /* FBSDKBoltsMeasurementEventListener.m in Sources */, + FD9E790BDBDA3FF44CE35A7B8A5C8E45 /* FBSDKBridgeAPICrypto.m in Sources */, + F84EA9DE6AC9F7156F8830E3128E0368 /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */, + C2EC239FDD7C6CD0C21A9DCC052F67C8 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */, + 47FD83E4A59AD7BEBC4C334A10AE3124 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */, + 8E517F1FC5970B63D155F6B6F00AA93F /* FBSDKBridgeAPIRequest.m in Sources */, + 1CEF5F47B78C3B1F4FC3DC2A3043281C /* FBSDKBridgeAPIResponse.m in Sources */, + 5C9809AF07DD032F9FD021A863E7C136 /* FBSDKButton.m in Sources */, + 5E84BECEB0443C8B9B3FD0B994EDAEA5 /* FBSDKCloseIcon.m in Sources */, + FAA66334C3CBCD5DEE89DF6639CA4939 /* FBSDKColor.m in Sources */, + 3096466F4630E924DB0B97E337933B26 /* FBSDKConstants.m in Sources */, + 4D1C9613370AE44FEF79C3C6AA5BBD20 /* FBSDKContainerViewController.m in Sources */, + B378D082DD674BA3C9DF87ED99FDBE4F /* FBSDKCoreKit-dummy.m in Sources */, + E3F370210A4F6B15CCB06AD6E0E48597 /* FBSDKCrypto.m in Sources */, + 7C2952F516B00045113908BBF7DC0E99 /* FBSDKDialogConfiguration.m in Sources */, + 88FA83A761B810A90340002D57EFD576 /* FBSDKDynamicFrameworkLoader.m in Sources */, + CC2BB71E5443EDCBB2E5F4EAC24ED987 /* FBSDKError.m in Sources */, + 79D9CB35E338D0CB12C68AEBCFCC933D /* FBSDKErrorConfiguration.m in Sources */, + 9691F0B4875AF918D9307643CCB6F345 /* FBSDKErrorRecoveryAttempter.m in Sources */, + F8A1E96B099B167A0FDC8B928B6B9F11 /* FBSDKErrorRecoveryConfiguration.m in Sources */, + CA4B00CC15344D45D5A3F1589AE8DE04 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */, + C8DF6DD47EDBF3FDBF944F075FBC6C05 /* FBSDKGraphRequest.m in Sources */, + D2E8BB454506B4D5C4FEA27852E0DE9D /* FBSDKGraphRequestBody.m in Sources */, + D4C629703F45ACEF8834A74261A24F16 /* FBSDKGraphRequestConnection.m in Sources */, + 4575524940A028F968811F18C428000F /* FBSDKGraphRequestDataAttachment.m in Sources */, + CCF4B724BE469464F638A4DF640C7238 /* FBSDKGraphRequestMetadata.m in Sources */, + 5F81AF91BD80BAB47165BEA17CA38ACF /* FBSDKGraphRequestPiggybackManager.m in Sources */, + D47FB87AFAA9EAC94A8EDA555CE8B7D3 /* FBSDKIcon.m in Sources */, + 6AA162E7D86F127BA1A7945A64AA0981 /* FBSDKInternalUtility.m in Sources */, + 092EAB1784E30E1179D39200F489EE56 /* FBSDKKeychainStore.m in Sources */, + 5613B583F78B27E46AA80D7B08593345 /* FBSDKKeychainStoreViaBundleID.m in Sources */, + A52D62A00F5C3CC6C77BFCC174883EC5 /* FBSDKLogger.m in Sources */, + 44D117C3BBC98D344847AC726EFAC590 /* FBSDKLogo.m in Sources */, + A7DF5029703C62DBC546E07E0FE68779 /* FBSDKMaleSilhouetteIcon.m in Sources */, + AA9B525437E1E7B7D2BF539AACA6C8C2 /* FBSDKMath.m in Sources */, + 38E002CAE70208D67028CA130CBC8B13 /* FBSDKMonotonicTime.m in Sources */, + 352F099A847CDF8860CCC2DF4C2DBA99 /* FBSDKPaymentObserver.m in Sources */, + 6C4D644320BDE1BC6A397D502701163F /* FBSDKProfile.m in Sources */, + 4F78698666F5DD22A6B8C251C8B4FFE6 /* FBSDKProfilePictureView.m in Sources */, + 06837C373EBCF2BE9F24B84D2495661D /* FBSDKServerConfiguration.m in Sources */, + 556EAD29F7AF6293692B8916CFDCF6AB /* FBSDKServerConfigurationManager.m in Sources */, + 9F1F36C174E8643569FAAE58E3B87DC7 /* FBSDKSettings.m in Sources */, + 8BCDE8B6759FB747A67EC91CA12C6B80 /* FBSDKSystemAccountStoreAdapter.m in Sources */, + 46460A40566EB1CB1E4FB515B21AD4A2 /* FBSDKTestUsersManager.m in Sources */, + 55FFD3A79CC2E66E1F29049972C1CF0A /* FBSDKTimeSpentData.m in Sources */, + 25C107A17D548A434206897795BDE83F /* FBSDKTriStateBOOL.m in Sources */, + 308248C696569BF007E57C2520B8194C /* FBSDKTypeUtility.m in Sources */, + 251789CABCBADBA6608A463D8B43327B /* FBSDKURLConnection.m in Sources */, + 684FB04B26908341179D771F44CE924A /* FBSDKUtility.m in Sources */, + D79F33AADF3DDB22BE6620959F4DE590 /* FBSDKViewImpressionTracker.m in Sources */, + BF858895504CDB8D3AB4361E782EA8C8 /* FBSDKWebDialog.m in Sources */, + 282284A3A26A1D0B38FB88FAD808EE87 /* FBSDKWebDialogView.m in Sources */, + 7ED3B5AB200513A4177AD21D83E939C7 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C3FCA0C9FC07157CA1C60B02DB2BF7B3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BA652EEC470ACC0671819D24AEE64FEE /* RKValueTransformers-dummy.m in Sources */, + 7F624540F82068E3C8ED3762BAC27C7C /* RKValueTransformers.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 168FDC441C5ED325FB25195E8F588905 /* PBXTargetDependency */ = { + 01A09D5CAB510AFF5EAE0B04999D4CBE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKCoreKit; - target = A510D2CCD10E1ACAF039EB42370EECE9 /* FBSDKCoreKit */; - targetProxy = 10A4DB144F041A4C0CED43BED0C4C30D /* PBXContainerItemProxy */; + name = TransitionKit; + target = 158117D77AED03B83733E51D2D22983B /* TransitionKit */; + targetProxy = 508B59BE547C282F52F9DF11BE75503E /* PBXContainerItemProxy */; }; - 21153761B975767074D4C03E7BFB1A5F /* PBXTargetDependency */ = { + 153CCB3DBDC780B040D06C23CE57E22E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKShareKit; - target = 8ADAD2264B57B834BB67514D536FB7E3 /* FBSDKShareKit */; - targetProxy = 8246EE16CFB95F2B8C2F8EFCE4E5AEEB /* PBXContainerItemProxy */; + name = FBSDKLoginKit; + target = 9E227047A8538838626AF4BBABC0B0F8 /* FBSDKLoginKit */; + targetProxy = C3F27F08CCA705703E82EEFC33DC50B8 /* PBXContainerItemProxy */; + }; + 1AF8EB47E48D7C1CFA7614ACB3F9C64E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Bolts; + target = CDF1F15921EAF837BFD0B27099E8329A /* Bolts */; + targetProxy = 84C3283C4EAF19219F77EF955EEAC0A9 /* PBXContainerItemProxy */; }; - 274F0E48B913EFEBE53D20780E4BB8EC /* PBXTargetDependency */ = { + 1B98D50D03158FC43F851D07680931C5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FBSDKCoreKit; - target = A510D2CCD10E1ACAF039EB42370EECE9 /* FBSDKCoreKit */; - targetProxy = 806CFFFB7BFBB520E7EC73DACD16B3B9 /* PBXContainerItemProxy */; + target = 25B614D6ADBCB106DEE01D64514A1810 /* FBSDKCoreKit */; + targetProxy = DCB8E09559E74DD3DFE0FD33CA8EF96B /* PBXContainerItemProxy */; }; - 2D708019954A38BA2635EC665543F5C0 /* PBXTargetDependency */ = { + 1D6E64BC964904907700014CA96C7F74 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Parse; - target = 7F26E33CF29862A805138C68D09DFFD9 /* Parse */; - targetProxy = 29FA9B94F4438EAED67FA3A30ECF56D1 /* PBXContainerItemProxy */; + name = AFNetworking; + target = C9CF1C271EB58F682F0F38C8C35BAB4C /* AFNetworking */; + targetProxy = E30C7FB51D911920237559D43F5B7B23 /* PBXContainerItemProxy */; }; - 31E3F3487AE06970184CBCDE791FAD18 /* PBXTargetDependency */ = { + 29F703097FD38326D0B1AA3F0FF99627 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Bolts; - target = E017A37450D026E9D888F3645A58C436 /* Bolts */; - targetProxy = F89E89A6938252AB3114DB944787C18D /* PBXContainerItemProxy */; + target = CDF1F15921EAF837BFD0B27099E8329A /* Bolts */; + targetProxy = D782CEA6DA0EBB775C10DD584216C744 /* PBXContainerItemProxy */; }; - 4769649AD55AD9CB56E1B6B272FE63A7 /* PBXTargetDependency */ = { + 4B5C01E548595779A34A8BABB27D0AD1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKLoginKit; - target = 87F49B89DFA2EDF98E9D8C6CB50976BF /* FBSDKLoginKit */; - targetProxy = CA158329B7B558180C68B74E1C44ECC8 /* PBXContainerItemProxy */; + name = Bolts; + target = CDF1F15921EAF837BFD0B27099E8329A /* Bolts */; + targetProxy = 39053682DD570F5383CFAFDFA822127C /* PBXContainerItemProxy */; + }; + 5F35481F1296EA3D5771D17405B15B43 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SOCKit; + target = A2770197345BCE1622568AECE6B8E824 /* SOCKit */; + targetProxy = B16B0202933CE8F18E60DCCD208B1597 /* PBXContainerItemProxy */; + }; + 610D35C9298F1590C611DAFAAFB7F0BF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ISO8601DateFormatterValueTransformer; + target = C4D8ECA2F5CC610D055AC7FA148E43D2 /* ISO8601DateFormatterValueTransformer */; + targetProxy = 9B70D042ADE9795273832351FFFB8CFE /* PBXContainerItemProxy */; + }; + 69397930DED2D381C7EA26305507C2AC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AFNetworking; + target = C9CF1C271EB58F682F0F38C8C35BAB4C /* AFNetworking */; + targetProxy = 239D716A3732545F57F6ED90CA59DDB3 /* PBXContainerItemProxy */; + }; + 6EB34B92CCF89CBBFB27599DDE9A632B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ISO8601DateFormatterValueTransformer; + target = C4D8ECA2F5CC610D055AC7FA148E43D2 /* ISO8601DateFormatterValueTransformer */; + targetProxy = 093C2AC3C5E237ACED621AA6B7D73B6D /* PBXContainerItemProxy */; + }; + 76F3D42CA8B3F4B496EB7C44DB22C60A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Parse; + target = 63CC4B4092B896F9AACC389383233974 /* Parse */; + targetProxy = AE639A41EDE660124BE148F0E8E7394E /* PBXContainerItemProxy */; + }; + 7E86B9FE2E0B008AFB152287F6BACD0A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RKValueTransformers; + target = 6C88FB013486FDFB342E31070F055B7D /* RKValueTransformers */; + targetProxy = 9DC04E6E78FC23637B6657E249590718 /* PBXContainerItemProxy */; + }; + 860FAF17332CD1740B2A11DC21BFB2AF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SOCKit; + target = A2770197345BCE1622568AECE6B8E824 /* SOCKit */; + targetProxy = 90B03C8EA96A90ABB289AE1E7B8CB4E8 /* PBXContainerItemProxy */; + }; + 8952ED3D382F1A6B068B207FD8E9957B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKShareKit; + target = 8466032D91D4D9DB26BAB2973DE4580C /* FBSDKShareKit */; + targetProxy = 23F28E4F9E5A50D4AF27D1F08804D853 /* PBXContainerItemProxy */; + }; + C2B16C4EC465BF81E7C7C0F9993CDDC2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RKValueTransformers; + target = 6C88FB013486FDFB342E31070F055B7D /* RKValueTransformers */; + targetProxy = 31F1FB5DB979090B7765B885014DAD55 /* PBXContainerItemProxy */; + }; + D2B995F840A42ABCB35C02C4FEC373AC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = TransitionKit; + target = 158117D77AED03B83733E51D2D22983B /* TransitionKit */; + targetProxy = 57E12F0F504016B2C065B8034ECE2D59 /* PBXContainerItemProxy */; }; - 7D049BC297DCB49CA53EFA534D202258 /* PBXTargetDependency */ = { + D596BD6B3C54E3E9B5E021ABCCC4908B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FBSDKCoreKit; - target = A510D2CCD10E1ACAF039EB42370EECE9 /* FBSDKCoreKit */; - targetProxy = 1B7477DE69B98AC8F4EBB4F78AC36BB1 /* PBXContainerItemProxy */; + target = 25B614D6ADBCB106DEE01D64514A1810 /* FBSDKCoreKit */; + targetProxy = B7D088F9D52456E09D8B301F2AE6E793 /* PBXContainerItemProxy */; }; - 83340A961B88FA5D84F0ACFEE8ED29F1 /* PBXTargetDependency */ = { + E4737F0598EB8D7357880B052025EEBB /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Bolts; - target = E017A37450D026E9D888F3645A58C436 /* Bolts */; - targetProxy = 66720104A3642E5CC2B35163BABF39C6 /* PBXContainerItemProxy */; + name = RKValueTransformers; + target = 6C88FB013486FDFB342E31070F055B7D /* RKValueTransformers */; + targetProxy = CBF10CAFC2EFE98D4A25364E19BF1C82 /* PBXContainerItemProxy */; }; - CFAB7ED8904A8A0AF23967A80AB156F5 /* PBXTargetDependency */ = { + F393612E768E24CA90A7BAE57E7C3205 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Bolts; - target = E017A37450D026E9D888F3645A58C436 /* Bolts */; - targetProxy = 0ABD3F822E95796533DB652545AF5E24 /* PBXContainerItemProxy */; + name = FBSDKCoreKit; + target = 25B614D6ADBCB106DEE01D64514A1810 /* FBSDKCoreKit */; + targetProxy = 5563D6248C22BD4C3E0FFE34C535469A /* PBXContainerItemProxy */; + }; + FD57A738DE10B9F1A42639DD55F519B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RestKit; + target = 5A89C7736981130B2EEED27805B7A855 /* RestKit */; + targetProxy = 1536105EABB17B75368B8845D8A8A1A0 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 4BC8CA5614726907F96B0210B6F61894 /* Debug */ = { + 062F6E0FF7EF17C19EABA35DE8FA45D7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3CAC9E985D7035114C36728704534B05 /* RestKit-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/RestKit/RestKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 0EAA57C8ED064B75269184B301B80F7B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FAF5EBA356BB1361627763A0C3E4FBA8 /* RKValueTransformers-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 142B3CBF0351F15763EE76DB0357F3D5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 28D3D49C022C268585679D13BC5BFC4B /* FBSDKLoginKit-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 1613D299E6C12EC750981F72447F2D39 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AB5F89C2FF338EB3D8A14F31581D0B13 /* TransitionKit-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/TransitionKit/TransitionKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 19AABD15633FC9421206A24F8F334609 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FAD786BC4ACCD93AEF869C440819A61D /* Parse-Private.xcconfig */; + baseConfigurationReference = C01586B6345CA4AB19014D467EAE9DBA /* Parse-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 2696A842650CE6E5A2005A5191ADB0AC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 101AA17C537653FDA61829C8AB7E5153 /* Bolts-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 333B06E1723BA0A42B65C296B8E8BB1B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 35AF2ED07EF17B28DEF0B55966C47D4B /* AFNetworking-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; @@ -3327,22 +4657,70 @@ }; name = Debug; }; - 4EB3DEF398E90C9E4E7F117E9340643F /* Release */ = { + 3D963DCA1C8E5E9A700B01CE59190CCF /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9201ECF588FA8BB08DDBF3C8E4CD31A3 /* FBSDKCoreKit-Private.xcconfig */; + baseConfigurationReference = 8FD1B81D44C9140C9CB6A7AE15FD008A /* FBSDKCoreKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 3EC9E1A9512F9D544D5BDC1096E61BFA /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E0CC0033498B3D96CF358C75CCE120A9 /* Pods.release.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Release; }; + 50CBBC9F4BB647FC710D838B24C8CCD5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5CCF2B1914047A6A115AD8CAF5B6D70E /* FBSDKShareKit-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 57E301D7C33C28BED6841389AB36D92F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AB5F89C2FF338EB3D8A14F31581D0B13 /* TransitionKit-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/TransitionKit/TransitionKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; 5CE5176205D06FF3FFE3DDDA9291E44B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3382,13 +4760,13 @@ }; name = Debug; }; - 5FEC0404D2AB689EEE6AF903F1B1CE03 /* Release */ = { + 6072A1D28F5C8475C056B0CEDF5B764B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F8F8D92E9BF54CF0325CDBF3A13F511C /* Pods.release.xcconfig */; + baseConfigurationReference = 2D582428208099E80BE466E2940ED2D0 /* Pods.debug.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -3396,18 +4774,34 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Release; + name = Debug; }; - 6A25EBB98E50612A77661AD5232399BB /* Debug */ = { + 65BAFCAE1AED085E5AE0FFFC7BFB89AF /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0556ABAC4F9D071C431F5D3711FDE1E9 /* Pods.debug.xcconfig */; + baseConfigurationReference = 28D3D49C022C268585679D13BC5BFC4B /* FBSDKLoginKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 744C22F884B6425E59AA0CA4491A618F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 31FC85622F6B1B2EE86B878CA3F2FDC7 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -3448,12 +4842,28 @@ }; name = Release; }; - 93BC004E2D1DBCB3FA76431627BE9715 /* Release */ = { + 76CC7D06EE9F3344B775E7CBFB3B7A0B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FAD786BC4ACCD93AEF869C440819A61D /* Parse-Private.xcconfig */; + baseConfigurationReference = 3CAC9E985D7035114C36728704534B05 /* RestKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/RestKit/RestKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 7755A5B9233C093AEBB142E77971273D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5CCF2B1914047A6A115AD8CAF5B6D70E /* FBSDKShareKit-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -3464,41 +4874,41 @@ }; name = Release; }; - BA9493B459CAEE252102EB57FC232F89 /* Debug */ = { + 8AEEECDDE44089ECD222736B188254DA /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5292F6C0B6F153791486694C6FF45617 /* Bolts-Private.xcconfig */; + baseConfigurationReference = 8FD1B81D44C9140C9CB6A7AE15FD008A /* FBSDKCoreKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; - CCEB8AF8E302FC8AAA4F7A241B033D88 /* Debug */ = { + AF884464F76736BEDE0A89B165BE53FB /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3E718F82F8FAFE696738E00DEA95B1BE /* FBSDKShareKit-Private.xcconfig */; + baseConfigurationReference = 35AF2ED07EF17B28DEF0B55966C47D4B /* AFNetworking-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; - E07228267540D3FFED5EC05DEFD3E279 /* Release */ = { + AF9E12C3EE4D4CC2F07D7A3BBD68B0F9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5292F6C0B6F153791486694C6FF45617 /* Bolts-Private.xcconfig */; + baseConfigurationReference = 101AA17C537653FDA61829C8AB7E5153 /* Bolts-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; @@ -3512,28 +4922,28 @@ }; name = Release; }; - ED83EE4CF3AF0585D42C2B087C74E924 /* Debug */ = { + B52B389BD882B64CB84681783B7C0542 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 06B9B52AD9A3CF756611E7DAA22CE383 /* FBSDKLoginKit-Private.xcconfig */; + baseConfigurationReference = 31FC85622F6B1B2EE86B878CA3F2FDC7 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; - F004B44D201C63FABF64AD216BB5CE4F /* Release */ = { + C85D73546CD52F1C1A52C397E1178D3F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3E718F82F8FAFE696738E00DEA95B1BE /* FBSDKShareKit-Private.xcconfig */; + baseConfigurationReference = A8FA5F2052C43B6E4060DAF60265E858 /* SOCKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/SOCKit/SOCKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -3544,28 +4954,44 @@ }; name = Release; }; - F3AFD5BCEEC6A892EC48AF4845812F2B /* Release */ = { + CE20A88E51F0CFB70BA2EC15CD9FEED2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 06B9B52AD9A3CF756611E7DAA22CE383 /* FBSDKLoginKit-Private.xcconfig */; + baseConfigurationReference = FAF5EBA356BB1361627763A0C3E4FBA8 /* RKValueTransformers-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Release; + name = Debug; }; - F74A84292C3811566C1E43F636D68522 /* Debug */ = { + CF3A527F185607546641C5490F6977B2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9201ECF588FA8BB08DDBF3C8E4CD31A3 /* FBSDKCoreKit-Private.xcconfig */; + baseConfigurationReference = A8FA5F2052C43B6E4060DAF60265E858 /* SOCKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/SOCKit/SOCKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + E01526FFF2B4BDD553457766AA5D5A62 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C01586B6345CA4AB19014D467EAE9DBA /* Parse-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; @@ -3579,65 +5005,119 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 17DD4B0EAD5E9153182F758DFC55773C /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */ = { + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - ED83EE4CF3AF0585D42C2B087C74E924 /* Debug */, - F3AFD5BCEEC6A892EC48AF4845812F2B /* Release */, + 5CE5176205D06FF3FFE3DDDA9291E44B /* Debug */, + 74857149DC1E0D599B8A01A78349A926 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 465F5EE40464137B8E18CF1E3B4F0A88 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 5CE5176205D06FF3FFE3DDDA9291E44B /* Debug */, - 74857149DC1E0D599B8A01A78349A926 /* Release */, + 50CBBC9F4BB647FC710D838B24C8CCD5 /* Debug */, + 7755A5B9233C093AEBB142E77971273D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5F01894250044CF47766C321EA913C84 /* Build configuration list for PBXNativeTarget "RestKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 76CC7D06EE9F3344B775E7CBFB3B7A0B /* Debug */, + 062F6E0FF7EF17C19EABA35DE8FA45D7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 683CE3AABFE44522F37E2A109C346787 /* Build configuration list for PBXNativeTarget "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6072A1D28F5C8475C056B0CEDF5B764B /* Debug */, + 3EC9E1A9512F9D544D5BDC1096E61BFA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 85B8C76F6B34886DBFD27254F0AD599A /* Build configuration list for PBXNativeTarget "ISO8601DateFormatterValueTransformer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 744C22F884B6425E59AA0CA4491A618F /* Debug */, + B52B389BD882B64CB84681783B7C0542 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8A697DC1496FE3D429E1CFF02BD30ED3 /* Build configuration list for PBXNativeTarget "Parse" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E01526FFF2B4BDD553457766AA5D5A62 /* Debug */, + 19AABD15633FC9421206A24F8F334609 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + AD40A852228370388396799020B6ECCB /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D963DCA1C8E5E9A700B01CE59190CCF /* Debug */, + 8AEEECDDE44089ECD222736B188254DA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + BE9B407615E85CA189C0133A977CB6E4 /* Build configuration list for PBXNativeTarget "SOCKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CF3A527F185607546641C5490F6977B2 /* Debug */, + C85D73546CD52F1C1A52C397E1178D3F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 3603EDDAAE405DC809528E455AF69D7B /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */ = { + C3987B318B7564B87ABA70296462F73F /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - CCEB8AF8E302FC8AAA4F7A241B033D88 /* Debug */, - F004B44D201C63FABF64AD216BB5CE4F /* Release */, + 65BAFCAE1AED085E5AE0FFFC7BFB89AF /* Debug */, + 142B3CBF0351F15763EE76DB0357F3D5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6B61B0CA93D49C3907B87A762AC584B0 /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */ = { + DF16688DE4059476DF270CAE8D816A68 /* Build configuration list for PBXNativeTarget "Bolts" */ = { isa = XCConfigurationList; buildConfigurations = ( - F74A84292C3811566C1E43F636D68522 /* Debug */, - 4EB3DEF398E90C9E4E7F117E9340643F /* Release */, + 2696A842650CE6E5A2005A5191ADB0AC /* Debug */, + AF9E12C3EE4D4CC2F07D7A3BBD68B0F9 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 7E13494350C0FC498BF645C868B122FF /* Build configuration list for PBXNativeTarget "Parse" */ = { + EC5884D823C95D73657B127F496ED2E3 /* Build configuration list for PBXNativeTarget "TransitionKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4BC8CA5614726907F96B0210B6F61894 /* Debug */, - 93BC004E2D1DBCB3FA76431627BE9715 /* Release */, + 57E301D7C33C28BED6841389AB36D92F /* Debug */, + 1613D299E6C12EC750981F72447F2D39 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - CDF5B94A1AD23341CC8912A155000168 /* Build configuration list for PBXNativeTarget "Pods" */ = { + F2360F7C13D81C174408D22905743FF4 /* Build configuration list for PBXNativeTarget "RKValueTransformers" */ = { isa = XCConfigurationList; buildConfigurations = ( - 6A25EBB98E50612A77661AD5232399BB /* Debug */, - 5FEC0404D2AB689EEE6AF903F1B1CE03 /* Release */, + CE20A88E51F0CFB70BA2EC15CD9FEED2 /* Debug */, + 0EAA57C8ED064B75269184B301B80F7B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D03813A2C1491FAB09CEC4572528E261 /* Build configuration list for PBXNativeTarget "Bolts" */ = { + F7FDAE37636FE3CB2EC4D023EBFA0B16 /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { isa = XCConfigurationList; buildConfigurations = ( - BA9493B459CAEE252102EB57FC232F89 /* Debug */, - E07228267540D3FFED5EC05DEFD3E279 /* Release */, + 333B06E1723BA0A42B65C296B8E8BB1B /* Debug */, + AF884464F76736BEDE0A89B165BE53FB /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig index c6ddd1a..ec077d8 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig @@ -1,5 +1,5 @@ #include "Bolts.xcconfig" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Bolts" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/Parse" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Bolts" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig index 524a008..dacd8fe 100644 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig @@ -1,6 +1,6 @@ #include "FBSDKCoreKit.xcconfig" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppLink" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Base64" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Cryptography" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ErrorRecovery" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/WebDialog" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/Parse" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppLink" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Base64" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Cryptography" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ErrorRecovery" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/WebDialog" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" OTHER_LDFLAGS = ${FBSDKCOREKIT_OTHER_LDFLAGS} PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig index 370ecba..209d18a 100644 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig @@ -1,6 +1,6 @@ #include "FBSDKLoginKit.xcconfig" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/Parse" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" OTHER_LDFLAGS = ${FBSDKLOGINKIT_OTHER_LDFLAGS} PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig index 1e30173..163b98e 100644 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig @@ -1,6 +1,6 @@ #include "FBSDKShareKit.xcconfig" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKShareKit" "${PODS_ROOT}/Headers/Private/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/Parse" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKShareKit" "${PODS_ROOT}/Headers/Private/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" OTHER_LDFLAGS = ${FBSDKSHAREKIT_OTHER_LDFLAGS} PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown index 02f590b..3bdf30d 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown @@ -1,6 +1,29 @@ # Acknowledgements This application makes use of the following third party libraries: +## AFNetworking + +Copyright (c) 2013-2014 AFNetworking (http://afnetworking.com/) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + ## Bolts BSD License @@ -97,7 +120,1015 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## ISO8601DateFormatterValueTransformer + +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: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +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 +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. + + ## Parse See https://www.parse.com/about/terms + +## RKValueTransformers + +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: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +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 +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. + + +## RestKit + + + 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 2009-2012 The RestKit Project + + 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. + + +## SOCKit + + + 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. + + +## TransitionKit + + + 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 2009-2012 The RestKit Project + + 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. + Generated by CocoaPods - http://cocoapods.org diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist index 63a4584..b0fd20a 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist @@ -12,6 +12,33 @@ Type PSGroupSpecifier + + FooterText + Copyright (c) 2013-2014 AFNetworking (http://afnetworking.com/) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + Title + AFNetworking + Type + PSGroupSpecifier + FooterText BSD License @@ -124,6 +151,205 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 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: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +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 +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. + + Title + ISO8601DateFormatterValueTransformer + Type + PSGroupSpecifier + FooterText See https://www.parse.com/about/terms @@ -132,6 +358,835 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 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: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +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 +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. + + Title + RKValueTransformers + 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 2009-2012 The RestKit Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Title + RestKit + 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 + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Title + SOCKit + 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 2009-2012 The RestKit Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Title + TransitionKit + Type + PSGroupSpecifier + FooterText Generated by CocoaPods - http://cocoapods.org diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig index b7ac3fa..a160052 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/Parse" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/Parse" -OTHER_LDFLAGS = $(inherited) -ObjC -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -l"Parse" -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" -isystem "${PODS_ROOT}/Headers/Public/Parse" -isystem "${PODS_ROOT}/Headers/Public/RKValueTransformers" -isystem "${PODS_ROOT}/Headers/Public/RestKit" -isystem "${PODS_ROOT}/Headers/Public/RestKit/Network" -isystem "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" -isystem "${PODS_ROOT}/Headers/Public/RestKit/Support" -isystem "${PODS_ROOT}/Headers/Public/RestKit/Testing" -isystem "${PODS_ROOT}/Headers/Public/SOCKit" -isystem "${PODS_ROOT}/Headers/Public/TransitionKit" -isystem "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -l"ISO8601DateFormatterValueTransformer" -l"Parse" -l"RKValueTransformers" -l"RestKit" -l"SOCKit" -l"TransitionKit" -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig index b7ac3fa..a160052 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/Parse" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/Parse" -OTHER_LDFLAGS = $(inherited) -ObjC -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -l"Parse" -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" -isystem "${PODS_ROOT}/Headers/Public/Parse" -isystem "${PODS_ROOT}/Headers/Public/RKValueTransformers" -isystem "${PODS_ROOT}/Headers/Public/RestKit" -isystem "${PODS_ROOT}/Headers/Public/RestKit/Network" -isystem "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" -isystem "${PODS_ROOT}/Headers/Public/RestKit/Support" -isystem "${PODS_ROOT}/Headers/Public/RestKit/Testing" -isystem "${PODS_ROOT}/Headers/Public/SOCKit" -isystem "${PODS_ROOT}/Headers/Public/TransitionKit" -isystem "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -l"ISO8601DateFormatterValueTransformer" -l"Parse" -l"RKValueTransformers" -l"RestKit" -l"SOCKit" -l"TransitionKit" -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file From 3079de73b2b1e0b12b01d9fbd5980299345ef013 Mon Sep 17 00:00:00 2001 From: shenayoshida Date: Sat, 10 Oct 2015 13:04:56 -0400 Subject: [PATCH 04/86] test message --- .DS_Store | Bin 6148 -> 6148 bytes Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/ViewController.m | 2 ++ 3 files changed, 2 insertions(+) diff --git a/.DS_Store b/.DS_Store index e7b37ff808e56420c0ad9e2fcd00489bed336a1f..15dac3218ec952ab632b90eb6d20c38cc3cab49b 100644 GIT binary patch delta 39 vcmZoMXfc@J&&atkU^g=(=Vl%jS0>Js;^ds9{QMlo&4z4i88@?Y{N)D#>W2&G delta 32 ocmZoMXfc@J&&aVcU^g=($7UWDSEkKXY`u&V8#FhwbNuB80HQMq>;M1& diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 3fa84147aa08f30bf4ee41ed40c97fd629f863c7..41439c3d8d1824bf43e30bb7f72d6ae271849bd1 100644 GIT binary patch delta 299 zcmZoMXfc=|#>B!ku~2NHo+2aP#(>?7izhHMG4gHZVUlH>e3QvgBq!Z4I5|JJfB_70 zjDeKIf|sz`z7D Ka&v^p8fE~}{!Lf_ delta 75 zcmZoMXfc=|#>B)qu~2NHo+2aL#(>?7jBJ~ESY#O|r?Q()&SR6`EXE #import From 2cd75e812d242ce255400c96c349261c155e4718 Mon Sep 17 00:00:00 2001 From: shenayoshida Date: Sat, 10 Oct 2015 15:02:21 -0400 Subject: [PATCH 05/86] collection view set up --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../AFNetworking/AFNetworking/AFHTTPClient.h | 641 ++ .../AFNetworking/AFNetworking/AFHTTPClient.m | 1403 ++++ .../AFNetworking/AFHTTPRequestOperation.h | 133 + .../AFNetworking/AFHTTPRequestOperation.m | 327 + .../AFNetworking/AFImageRequestOperation.h | 113 + .../AFNetworking/AFImageRequestOperation.m | 321 + .../AFNetworking/AFJSONRequestOperation.h | 71 + .../AFNetworking/AFJSONRequestOperation.m | 150 + .../AFNetworkActivityIndicatorManager.h | 75 + .../AFNetworkActivityIndicatorManager.m | 157 + .../AFNetworking/AFNetworking/AFNetworking.h | 43 + .../AFPropertyListRequestOperation.h | 68 + .../AFPropertyListRequestOperation.m | 143 + .../AFNetworking/AFURLConnectionOperation.h | 370 + .../AFNetworking/AFURLConnectionOperation.m | 862 +++ .../AFNetworking/AFXMLRequestOperation.h | 89 + .../AFNetworking/AFXMLRequestOperation.m | 167 + .../AFNetworking/UIImageView+AFNetworking.h | 78 + .../AFNetworking/UIImageView+AFNetworking.m | 191 + Unit-2-Journal/Pods/AFNetworking/LICENSE | 19 + Unit-2-Journal/Pods/AFNetworking/README.md | 206 + .../Private/AFNetworking/AFHTTPClient.h | 1 + .../AFNetworking/AFHTTPRequestOperation.h | 1 + .../AFNetworking/AFImageRequestOperation.h | 1 + .../AFNetworking/AFJSONRequestOperation.h | 1 + .../AFNetworkActivityIndicatorManager.h | 1 + .../Private/AFNetworking/AFNetworking.h | 1 + .../AFPropertyListRequestOperation.h | 1 + .../AFNetworking/AFURLConnectionOperation.h | 1 + .../AFNetworking/AFXMLRequestOperation.h | 1 + .../AFNetworking/UIImageView+AFNetworking.h | 1 + .../ISO8601DateFormatterValueTransformer.h | 1 + .../RKISO8601DateFormatter.h | 1 + .../Headers/Private/Parse/BFTask+Private.h | 1 + .../Pods/Headers/Private/Parse/PFACL.h | 1 + .../Pods/Headers/Private/Parse/PFACLPrivate.h | 1 + .../Pods/Headers/Private/Parse/PFACLState.h | 1 + .../Private/Parse/PFACLState_Private.h | 1 + .../Pods/Headers/Private/Parse/PFAlertView.h | 1 + .../Pods/Headers/Private/Parse/PFAnalytics.h | 1 + .../Private/Parse/PFAnalyticsController.h | 1 + .../Private/Parse/PFAnalyticsUtilities.h | 1 + .../Private/Parse/PFAnalytics_Private.h | 1 + .../Parse/PFAnonymousAuthenticationProvider.h | 1 + .../Headers/Private/Parse/PFAnonymousUtils.h | 1 + .../Private/Parse/PFAnonymousUtils_Private.h | 1 + .../Headers/Private/Parse/PFApplication.h | 1 + .../Pods/Headers/Private/Parse/PFAssert.h | 1 + .../Headers/Private/Parse/PFAsyncTaskQueue.h | 1 + .../Headers/Private/Parse/PFBase64Encoder.h | 1 + .../Pods/Headers/Private/Parse/PFBaseState.h | 1 + .../Private/Parse/PFCachedQueryController.h | 1 + .../Headers/Private/Parse/PFCategoryLoader.h | 1 + .../Pods/Headers/Private/Parse/PFCloud.h | 1 + .../Private/Parse/PFCloudCodeController.h | 1 + .../Headers/Private/Parse/PFCommandCache.h | 1 + .../Private/Parse/PFCommandCache_Private.h | 1 + .../Headers/Private/Parse/PFCommandResult.h | 1 + .../Headers/Private/Parse/PFCommandRunning.h | 1 + .../Private/Parse/PFCommandRunningConstants.h | 1 + .../Parse/PFCommandURLRequestConstructor.h | 1 + .../Pods/Headers/Private/Parse/PFConfig.h | 1 + .../Private/Parse/PFConfigController.h | 1 + .../Headers/Private/Parse/PFConfig_Private.h | 1 + .../Pods/Headers/Private/Parse/PFConstants.h | 1 + .../Private/Parse/PFCoreDataProvider.h | 1 + .../Headers/Private/Parse/PFCoreManager.h | 1 + .../Private/Parse/PFCurrentConfigController.h | 1 + .../Parse/PFCurrentInstallationController.h | 1 + .../Parse/PFCurrentObjectControlling.h | 1 + .../Private/Parse/PFCurrentUserController.h | 1 + .../Headers/Private/Parse/PFDataProvider.h | 1 + .../Headers/Private/Parse/PFDateFormatter.h | 1 + .../Pods/Headers/Private/Parse/PFDecoder.h | 1 + .../Private/Parse/PFDefaultACLController.h | 1 + .../Pods/Headers/Private/Parse/PFDevice.h | 1 + .../Pods/Headers/Private/Parse/PFEncoder.h | 1 + .../Headers/Private/Parse/PFErrorUtilities.h | 1 + .../Headers/Private/Parse/PFEventuallyPin.h | 1 + .../Headers/Private/Parse/PFEventuallyQueue.h | 1 + .../Private/Parse/PFEventuallyQueue_Private.h | 1 + .../Headers/Private/Parse/PFFieldOperation.h | 1 + .../Private/Parse/PFFieldOperationDecoder.h | 1 + .../Pods/Headers/Private/Parse/PFFile.h | 1 + .../Headers/Private/Parse/PFFileController.h | 1 + .../Headers/Private/Parse/PFFileDataStream.h | 1 + .../Headers/Private/Parse/PFFileManager.h | 1 + .../Private/Parse/PFFileStagingController.h | 1 + .../Pods/Headers/Private/Parse/PFFileState.h | 1 + .../Private/Parse/PFFileState_Private.h | 1 + .../Headers/Private/Parse/PFFile_Private.h | 1 + .../Pods/Headers/Private/Parse/PFGeoPoint.h | 1 + .../Headers/Private/Parse/PFGeoPointPrivate.h | 1 + .../Headers/Private/Parse/PFHTTPRequest.h | 1 + .../Parse/PFHTTPURLRequestConstructor.h | 1 + .../Pods/Headers/Private/Parse/PFHash.h | 1 + .../Headers/Private/Parse/PFInstallation.h | 1 + .../Private/Parse/PFInstallationConstants.h | 1 + .../Private/Parse/PFInstallationController.h | 1 + .../Parse/PFInstallationIdentifierStore.h | 1 + .../PFInstallationIdentifierStore_Private.h | 1 + .../Private/Parse/PFInstallationPrivate.h | 1 + .../Headers/Private/Parse/PFInternalUtils.h | 1 + .../Private/Parse/PFJSONSerialization.h | 1 + .../Headers/Private/Parse/PFKeyValueCache.h | 1 + .../Private/Parse/PFKeyValueCache_Private.h | 1 + .../Headers/Private/Parse/PFKeychainStore.h | 1 + .../Headers/Private/Parse/PFLocationManager.h | 1 + .../Pods/Headers/Private/Parse/PFLogger.h | 1 + .../Pods/Headers/Private/Parse/PFLogging.h | 1 + .../Pods/Headers/Private/Parse/PFMacros.h | 1 + .../Private/Parse/PFMultiProcessFileLock.h | 1 + .../Parse/PFMultiProcessFileLockController.h | 1 + .../Private/Parse/PFMulticastDelegate.h | 1 + .../Headers/Private/Parse/PFMutableACLState.h | 1 + .../Private/Parse/PFMutableFileState.h | 1 + .../Private/Parse/PFMutableObjectState.h | 1 + .../Private/Parse/PFMutablePushState.h | 1 + .../Private/Parse/PFMutableQueryState.h | 1 + .../Private/Parse/PFMutableRelationState.h | 1 + .../Private/Parse/PFMutableUserState.h | 1 + .../Parse/PFNetworkActivityIndicatorManager.h | 1 + .../Headers/Private/Parse/PFNetworkCommand.h | 1 + .../Headers/Private/Parse/PFNullability.h | 1 + .../Headers/Private/Parse/PFObject+Subclass.h | 1 + .../Pods/Headers/Private/Parse/PFObject.h | 1 + .../Private/Parse/PFObjectBatchController.h | 1 + .../Headers/Private/Parse/PFObjectConstants.h | 1 + .../Private/Parse/PFObjectController.h | 1 + .../Parse/PFObjectController_Private.h | 1 + .../Private/Parse/PFObjectControlling.h | 1 + .../Private/Parse/PFObjectEstimatedData.h | 1 + .../Headers/Private/Parse/PFObjectFileCoder.h | 1 + .../Private/Parse/PFObjectFileCodingLogic.h | 1 + .../Parse/PFObjectFilePersistenceController.h | 1 + .../Private/Parse/PFObjectLocalIdStore.h | 1 + .../Headers/Private/Parse/PFObjectPrivate.h | 1 + .../Headers/Private/Parse/PFObjectState.h | 1 + .../Private/Parse/PFObjectState_Private.h | 1 + .../Private/Parse/PFObjectSubclassInfo.h | 1 + .../Parse/PFObjectSubclassingController.h | 1 + .../Headers/Private/Parse/PFObjectUtilities.h | 1 + .../Private/Parse/PFOfflineObjectController.h | 1 + .../Private/Parse/PFOfflineQueryController.h | 1 + .../Private/Parse/PFOfflineQueryLogic.h | 1 + .../Headers/Private/Parse/PFOfflineStore.h | 1 + .../Headers/Private/Parse/PFOperationSet.h | 1 + .../Parse/PFPaymentTransactionObserver.h | 1 + .../PFPaymentTransactionObserver_Private.h | 1 + .../Pods/Headers/Private/Parse/PFPin.h | 1 + .../Private/Parse/PFPinningEventuallyQueue.h | 1 + .../Private/Parse/PFPinningObjectStore.h | 1 + .../Headers/Private/Parse/PFProduct+Private.h | 1 + .../Pods/Headers/Private/Parse/PFProduct.h | 1 + .../Private/Parse/PFProductsRequestHandler.h | 1 + .../Headers/Private/Parse/PFPropertyInfo.h | 1 + .../Private/Parse/PFPropertyInfo_Private.h | 1 + .../Private/Parse/PFPropertyInfo_Runtime.h | 1 + .../Pods/Headers/Private/Parse/PFPurchase.h | 1 + .../Private/Parse/PFPurchaseController.h | 1 + .../Pods/Headers/Private/Parse/PFPush.h | 1 + .../Private/Parse/PFPushChannelsController.h | 1 + .../Headers/Private/Parse/PFPushController.h | 1 + .../Headers/Private/Parse/PFPushManager.h | 1 + .../Headers/Private/Parse/PFPushPrivate.h | 1 + .../Pods/Headers/Private/Parse/PFPushState.h | 1 + .../Private/Parse/PFPushState_Private.h | 1 + .../Headers/Private/Parse/PFPushUtilities.h | 1 + .../Pods/Headers/Private/Parse/PFQuery.h | 1 + .../Headers/Private/Parse/PFQueryController.h | 1 + .../Headers/Private/Parse/PFQueryPrivate.h | 1 + .../Pods/Headers/Private/Parse/PFQueryState.h | 1 + .../Private/Parse/PFQueryState_Private.h | 1 + .../Headers/Private/Parse/PFQueryUtilities.h | 1 + .../Private/Parse/PFRESTAnalyticsCommand.h | 1 + .../Private/Parse/PFRESTCloudCommand.h | 1 + .../Headers/Private/Parse/PFRESTCommand.h | 1 + .../Private/Parse/PFRESTCommand_Private.h | 1 + .../Private/Parse/PFRESTConfigCommand.h | 1 + .../Headers/Private/Parse/PFRESTFileCommand.h | 1 + .../Private/Parse/PFRESTObjectBatchCommand.h | 1 + .../Private/Parse/PFRESTObjectCommand.h | 1 + .../Headers/Private/Parse/PFRESTPushCommand.h | 1 + .../Private/Parse/PFRESTQueryCommand.h | 1 + .../Private/Parse/PFRESTSessionCommand.h | 1 + .../Headers/Private/Parse/PFRESTUserCommand.h | 1 + .../Headers/Private/Parse/PFReachability.h | 1 + .../Pods/Headers/Private/Parse/PFRelation.h | 1 + .../Headers/Private/Parse/PFRelationPrivate.h | 1 + .../Headers/Private/Parse/PFRelationState.h | 1 + .../Private/Parse/PFRelationState_Private.h | 1 + .../Pods/Headers/Private/Parse/PFRole.h | 1 + .../Headers/Private/Parse/PFSQLiteDatabase.h | 1 + .../Parse/PFSQLiteDatabaseController.h | 1 + .../Private/Parse/PFSQLiteDatabaseResult.h | 1 + .../Private/Parse/PFSQLiteDatabase_Private.h | 1 + .../Headers/Private/Parse/PFSQLiteStatement.h | 1 + .../Pods/Headers/Private/Parse/PFSession.h | 1 + .../Private/Parse/PFSessionController.h | 1 + .../Private/Parse/PFSessionUtilities.h | 1 + .../Headers/Private/Parse/PFSession_Private.h | 1 + .../Headers/Private/Parse/PFSubclassing.h | 1 + .../Pods/Headers/Private/Parse/PFTaskQueue.h | 1 + .../Headers/Private/Parse/PFThreadsafety.h | 1 + .../Headers/Private/Parse/PFURLConstructor.h | 1 + .../Pods/Headers/Private/Parse/PFURLSession.h | 1 + .../Private/Parse/PFURLSessionCommandRunner.h | 1 + .../Parse/PFURLSessionCommandRunner_Private.h | 1 + .../Parse/PFURLSessionDataTaskDelegate.h | 1 + .../PFURLSessionDataTaskDelegate_Private.h | 1 + .../PFURLSessionFileDownloadTaskDelegate.h | 1 + .../Parse/PFURLSessionJSONDataTaskDelegate.h | 1 + .../Parse/PFURLSessionUploadTaskDelegate.h | 1 + .../Private/Parse/PFURLSession_Private.h | 1 + .../Pods/Headers/Private/Parse/PFUser.h | 1 + .../Parse/PFUserAuthenticationController.h | 1 + .../Parse/PFUserAuthenticationDelegate.h | 1 + .../Headers/Private/Parse/PFUserConstants.h | 1 + .../Headers/Private/Parse/PFUserController.h | 1 + .../Private/Parse/PFUserFileCodingLogic.h | 1 + .../Headers/Private/Parse/PFUserPrivate.h | 1 + .../Pods/Headers/Private/Parse/PFUserState.h | 1 + .../Private/Parse/PFUserState_Private.h | 1 + .../Pods/Headers/Private/Parse/PFWeakValue.h | 1 + .../Pods/Headers/Private/Parse/Parse.h | 1 + .../Headers/Private/Parse/ParseInternal.h | 1 + .../Pods/Headers/Private/Parse/ParseManager.h | 1 + .../Pods/Headers/Private/Parse/ParseModule.h | 1 + .../Headers/Private/Parse/Parse_Private.h | 1 + .../RKValueTransformers/RKValueTransformers.h | 1 + .../Pods/Headers/Private/RestKit/Network.h | 1 + .../RestKit/Network/RKHTTPRequestOperation.h | 1 + .../Network/RKManagedObjectRequestOperation.h | 1 + .../Private/RestKit/Network/RKObjectManager.h | 1 + .../Network/RKObjectParameterization.h | 1 + .../Network/RKObjectRequestOperation.h | 1 + .../RKObjectRequestOperationSubclass.h | 1 + .../Private/RestKit/Network/RKPaginator.h | 1 + .../Private/RestKit/Network/RKPathMatcher.h | 1 + .../RestKit/Network/RKRequestDescriptor.h | 1 + .../RestKit/Network/RKResponseDescriptor.h | 1 + .../Network/RKResponseMapperOperation.h | 1 + .../Headers/Private/RestKit/Network/RKRoute.h | 1 + .../Private/RestKit/Network/RKRouteSet.h | 1 + .../Private/RestKit/Network/RKRouter.h | 1 + .../Headers/Private/RestKit/ObjectMapping.h | 1 + .../ObjectMapping/RKAttributeMapping.h | 1 + .../RestKit/ObjectMapping/RKDynamicMapping.h | 1 + .../RestKit/ObjectMapping/RKErrorMessage.h | 1 + .../RestKit/ObjectMapping/RKHTTPUtilities.h | 1 + .../RestKit/ObjectMapping/RKMapperOperation.h | 1 + .../ObjectMapping/RKMapperOperation_Private.h | 1 + .../Private/RestKit/ObjectMapping/RKMapping.h | 1 + .../RestKit/ObjectMapping/RKMappingErrors.h | 1 + .../ObjectMapping/RKMappingOperation.h | 1 + .../RKMappingOperationDataSource.h | 1 + .../RestKit/ObjectMapping/RKMappingResult.h | 1 + .../RestKit/ObjectMapping/RKObjectMapping.h | 1 + .../ObjectMapping/RKObjectMappingMatcher.h | 1 + .../RKObjectMappingOperationDataSource.h | 1 + .../RestKit/ObjectMapping/RKObjectUtilities.h | 1 + .../ObjectMapping/RKPropertyInspector.h | 1 + .../RestKit/ObjectMapping/RKPropertyMapping.h | 1 + .../ObjectMapping/RKRelationshipMapping.h | 1 + .../Pods/Headers/Private/RestKit/RestKit.h | 1 + .../Pods/Headers/Private/RestKit/Support.h | 1 + .../RestKit/Support/RKDictionaryUtilities.h | 1 + .../RestKit/Support/RKDotNetDateFormatter.h | 1 + .../Private/RestKit/Support/RKErrors.h | 1 + .../Headers/Private/RestKit/Support/RKLog.h | 1 + .../RestKit/Support/RKLumberjackLogger.h | 1 + .../RestKit/Support/RKMIMETypeSerialization.h | 1 + .../Private/RestKit/Support/RKMIMETypes.h | 1 + .../Private/RestKit/Support/RKMacros.h | 1 + .../RestKit/Support/RKNSJSONSerialization.h | 1 + .../RestKit/Support/RKOperationStateMachine.h | 1 + .../Private/RestKit/Support/RKPathUtilities.h | 1 + .../Private/RestKit/Support/RKSerialization.h | 1 + .../RestKit/Support/RKStringTokenizer.h | 1 + .../Support/RKURLEncodedSerialization.h | 1 + .../Support/lcl_config_components_RK.h | 1 + .../Support/lcl_config_extensions_RK.h | 1 + .../RestKit/Support/lcl_config_logger_RK.h | 1 + .../Pods/Headers/Private/RestKit/Testing.h | 1 + .../Private/RestKit/Testing/RKBenchmark.h | 1 + .../Testing/RKConnectionTestExpectation.h | 1 + .../Private/RestKit/Testing/RKMappingTest.h | 1 + .../RKPropertyMappingTestExpectation.h | 1 + .../Private/RestKit/Testing/RKTestFactory.h | 1 + .../Private/RestKit/Testing/RKTestFixture.h | 1 + .../Private/RestKit/Testing/RKTestHelpers.h | 1 + .../Testing/RKTestNotificationObserver.h | 1 + .../Pods/Headers/Private/SOCKit/SOCKit.h | 1 + .../Headers/Private/TransitionKit/TKEvent.h | 1 + .../Headers/Private/TransitionKit/TKState.h | 1 + .../Private/TransitionKit/TKStateMachine.h | 1 + .../Private/TransitionKit/TKTransition.h | 1 + .../Private/TransitionKit/TransitionKit.h | 1 + .../Vendor/LibComponentLogging/Core/lcl_RK.h | 1 + .../Public/AFNetworking/AFHTTPClient.h | 1 + .../AFNetworking/AFHTTPRequestOperation.h | 1 + .../AFNetworking/AFImageRequestOperation.h | 1 + .../AFNetworking/AFJSONRequestOperation.h | 1 + .../AFNetworkActivityIndicatorManager.h | 1 + .../Public/AFNetworking/AFNetworking.h | 1 + .../AFPropertyListRequestOperation.h | 1 + .../AFNetworking/AFURLConnectionOperation.h | 1 + .../AFNetworking/AFXMLRequestOperation.h | 1 + .../AFNetworking/UIImageView+AFNetworking.h | 1 + .../ISO8601DateFormatterValueTransformer.h | 1 + .../RKISO8601DateFormatter.h | 1 + .../Pods/Headers/Public/Parse/PFACL.h | 1 + .../Pods/Headers/Public/Parse/PFAnalytics.h | 1 + .../Headers/Public/Parse/PFAnonymousUtils.h | 1 + .../Pods/Headers/Public/Parse/PFCloud.h | 1 + .../Pods/Headers/Public/Parse/PFConfig.h | 1 + .../Pods/Headers/Public/Parse/PFConstants.h | 1 + .../Pods/Headers/Public/Parse/PFFile.h | 1 + .../Pods/Headers/Public/Parse/PFGeoPoint.h | 1 + .../Headers/Public/Parse/PFInstallation.h | 1 + .../Parse/PFNetworkActivityIndicatorManager.h | 1 + .../Pods/Headers/Public/Parse/PFNullability.h | 1 + .../Headers/Public/Parse/PFObject+Subclass.h | 1 + .../Pods/Headers/Public/Parse/PFObject.h | 1 + .../Pods/Headers/Public/Parse/PFProduct.h | 1 + .../Pods/Headers/Public/Parse/PFPurchase.h | 1 + .../Pods/Headers/Public/Parse/PFPush.h | 1 + .../Pods/Headers/Public/Parse/PFQuery.h | 1 + .../Pods/Headers/Public/Parse/PFRelation.h | 1 + .../Pods/Headers/Public/Parse/PFRole.h | 1 + .../Pods/Headers/Public/Parse/PFSession.h | 1 + .../Pods/Headers/Public/Parse/PFSubclassing.h | 1 + .../Pods/Headers/Public/Parse/PFUser.h | 1 + .../Parse/PFUserAuthenticationDelegate.h | 1 + .../Pods/Headers/Public/Parse/Parse.h | 1 + .../RKValueTransformers/RKValueTransformers.h | 1 + .../Pods/Headers/Public/RestKit/Network.h | 1 + .../RestKit/Network/RKHTTPRequestOperation.h | 1 + .../Network/RKManagedObjectRequestOperation.h | 1 + .../Public/RestKit/Network/RKObjectManager.h | 1 + .../Network/RKObjectParameterization.h | 1 + .../Network/RKObjectRequestOperation.h | 1 + .../RKObjectRequestOperationSubclass.h | 1 + .../Public/RestKit/Network/RKPaginator.h | 1 + .../Public/RestKit/Network/RKPathMatcher.h | 1 + .../RestKit/Network/RKRequestDescriptor.h | 1 + .../RestKit/Network/RKResponseDescriptor.h | 1 + .../Network/RKResponseMapperOperation.h | 1 + .../Headers/Public/RestKit/Network/RKRoute.h | 1 + .../Public/RestKit/Network/RKRouteSet.h | 1 + .../Headers/Public/RestKit/Network/RKRouter.h | 1 + .../Headers/Public/RestKit/ObjectMapping.h | 1 + .../ObjectMapping/RKAttributeMapping.h | 1 + .../RestKit/ObjectMapping/RKDynamicMapping.h | 1 + .../RestKit/ObjectMapping/RKErrorMessage.h | 1 + .../RestKit/ObjectMapping/RKHTTPUtilities.h | 1 + .../RestKit/ObjectMapping/RKMapperOperation.h | 1 + .../ObjectMapping/RKMapperOperation_Private.h | 1 + .../Public/RestKit/ObjectMapping/RKMapping.h | 1 + .../RestKit/ObjectMapping/RKMappingErrors.h | 1 + .../ObjectMapping/RKMappingOperation.h | 1 + .../RKMappingOperationDataSource.h | 1 + .../RestKit/ObjectMapping/RKMappingResult.h | 1 + .../RestKit/ObjectMapping/RKObjectMapping.h | 1 + .../ObjectMapping/RKObjectMappingMatcher.h | 1 + .../RKObjectMappingOperationDataSource.h | 1 + .../RestKit/ObjectMapping/RKObjectUtilities.h | 1 + .../ObjectMapping/RKPropertyInspector.h | 1 + .../RestKit/ObjectMapping/RKPropertyMapping.h | 1 + .../ObjectMapping/RKRelationshipMapping.h | 1 + .../Pods/Headers/Public/RestKit/RestKit.h | 1 + .../Pods/Headers/Public/RestKit/Support.h | 1 + .../RestKit/Support/RKDictionaryUtilities.h | 1 + .../RestKit/Support/RKDotNetDateFormatter.h | 1 + .../Headers/Public/RestKit/Support/RKErrors.h | 1 + .../Headers/Public/RestKit/Support/RKLog.h | 1 + .../RestKit/Support/RKLumberjackLogger.h | 1 + .../RestKit/Support/RKMIMETypeSerialization.h | 1 + .../Public/RestKit/Support/RKMIMETypes.h | 1 + .../Headers/Public/RestKit/Support/RKMacros.h | 1 + .../RestKit/Support/RKNSJSONSerialization.h | 1 + .../RestKit/Support/RKOperationStateMachine.h | 1 + .../Public/RestKit/Support/RKPathUtilities.h | 1 + .../Public/RestKit/Support/RKSerialization.h | 1 + .../RestKit/Support/RKStringTokenizer.h | 1 + .../Support/RKURLEncodedSerialization.h | 1 + .../Support/lcl_config_components_RK.h | 1 + .../Support/lcl_config_extensions_RK.h | 1 + .../RestKit/Support/lcl_config_logger_RK.h | 1 + .../Pods/Headers/Public/RestKit/Testing.h | 1 + .../Public/RestKit/Testing/RKBenchmark.h | 1 + .../Testing/RKConnectionTestExpectation.h | 1 + .../Public/RestKit/Testing/RKMappingTest.h | 1 + .../RKPropertyMappingTestExpectation.h | 1 + .../Public/RestKit/Testing/RKTestFactory.h | 1 + .../Public/RestKit/Testing/RKTestFixture.h | 1 + .../Public/RestKit/Testing/RKTestHelpers.h | 1 + .../Testing/RKTestNotificationObserver.h | 1 + .../Pods/Headers/Public/SOCKit/SOCKit.h | 1 + .../Headers/Public/TransitionKit/TKEvent.h | 1 + .../Headers/Public/TransitionKit/TKState.h | 1 + .../Public/TransitionKit/TKStateMachine.h | 1 + .../Public/TransitionKit/TKTransition.h | 1 + .../Public/TransitionKit/TransitionKit.h | 1 + .../Vendor/LibComponentLogging/Core/lcl_RK.h | 1 + .../ISO8601DateFormatterValueTransformer.h | 34 + .../ISO8601DateFormatterValueTransformer.m | 55 + .../Code/RKISO8601DateFormatter.h | 93 + .../Code/RKISO8601DateFormatter.m | 912 +++ .../LICENSE | 191 + .../README.md | 51 + Unit-2-Journal/Pods/Parse/LICENSE | 30 + .../PFDefaultACLController.h | 52 + .../PFDefaultACLController.m | 99 + .../Parse/Parse/Internal/ACL/PFACLPrivate.h | 42 + .../Parse/Internal/ACL/State/PFACLState.h | 42 + .../Parse/Internal/ACL/State/PFACLState.m | 87 + .../Internal/ACL/State/PFACLState_Private.h | 21 + .../Internal/ACL/State/PFMutableACLState.h | 17 + .../Internal/ACL/State/PFMutableACLState.m | 32 + .../Controller/PFAnalyticsController.h | 61 + .../Controller/PFAnalyticsController.m | 100 + .../Internal/Analytics/PFAnalytics_Private.h | 17 + .../Utilities/PFAnalyticsUtilities.h | 28 + .../Utilities/PFAnalyticsUtilities.m | 38 + .../Parse/Parse/Internal/BFTask+Private.h | 71 + .../Parse/Parse/Internal/BFTask+Private.m | 130 + .../CloudCode/PFCloudCodeController.h | 47 + .../CloudCode/PFCloudCodeController.m | 66 + .../Commands/CommandRunner/PFCommandRunning.h | 96 + .../Commands/CommandRunner/PFCommandRunning.m | 12 + .../CommandRunner/PFCommandRunningConstants.h | 35 + .../CommandRunner/PFCommandRunningConstants.m | 23 + .../PFCommandURLRequestConstructor.h | 50 + .../PFCommandURLRequestConstructor.m | 149 + .../URLSession/PFURLSessionCommandRunner.h | 22 + .../URLSession/PFURLSessionCommandRunner.m | 286 + .../PFURLSessionCommandRunner_Private.h | 29 + .../URLSession/Session/PFURLSession.h | 73 + .../URLSession/Session/PFURLSession.m | 264 + .../URLSession/Session/PFURLSession_Private.h | 24 + .../PFURLSessionDataTaskDelegate.h | 37 + .../PFURLSessionDataTaskDelegate.m | 180 + .../PFURLSessionDataTaskDelegate_Private.h | 34 + .../PFURLSessionFileDownloadTaskDelegate.h | 35 + .../PFURLSessionFileDownloadTaskDelegate.m | 101 + .../PFURLSessionJSONDataTaskDelegate.h | 20 + .../PFURLSessionJSONDataTaskDelegate.m | 90 + .../PFURLSessionUploadTaskDelegate.h | 29 + .../PFURLSessionUploadTaskDelegate.m | 56 + .../Commands/PFRESTAnalyticsCommand.h | 31 + .../Commands/PFRESTAnalyticsCommand.m | 61 + .../Internal/Commands/PFRESTCloudCommand.h | 22 + .../Internal/Commands/PFRESTCloudCommand.m | 27 + .../Parse/Internal/Commands/PFRESTCommand.h | 45 + .../Parse/Internal/Commands/PFRESTCommand.m | 230 + .../Internal/Commands/PFRESTCommand_Private.h | 25 + .../Internal/Commands/PFRESTConfigCommand.h | 22 + .../Internal/Commands/PFRESTConfigCommand.m | 33 + .../Internal/Commands/PFRESTFileCommand.h | 21 + .../Internal/Commands/PFRESTFileCommand.m | 29 + .../Commands/PFRESTObjectBatchCommand.h | 22 + .../Commands/PFRESTObjectBatchCommand.m | 42 + .../Internal/Commands/PFRESTObjectCommand.h | 36 + .../Internal/Commands/PFRESTObjectCommand.m | 77 + .../Internal/Commands/PFRESTPushCommand.h | 25 + .../Internal/Commands/PFRESTPushCommand.m | 57 + .../Internal/Commands/PFRESTQueryCommand.h | 57 + .../Internal/Commands/PFRESTQueryCommand.m | 200 + .../Internal/Commands/PFRESTSessionCommand.h | 20 + .../Internal/Commands/PFRESTSessionCommand.m | 23 + .../Internal/Commands/PFRESTUserCommand.h | 56 + .../Internal/Commands/PFRESTUserCommand.m | 132 + .../Config/Controller/PFConfigController.h | 48 + .../Config/Controller/PFConfigController.m | 95 + .../Controller/PFCurrentConfigController.h | 43 + .../Controller/PFCurrentConfigController.m | 109 + .../Parse/Internal/Config/PFConfig_Private.h | 22 + .../FieldOperation/PFFieldOperation.h | 168 + .../FieldOperation/PFFieldOperation.m | 552 ++ .../FieldOperation/PFFieldOperationDecoder.h | 39 + .../FieldOperation/PFFieldOperationDecoder.m | 126 + .../File/Controller/PFFileController.h | 99 + .../File/Controller/PFFileController.m | 269 + .../File/Controller/PFFileStagingController.h | 74 + .../File/Controller/PFFileStagingController.m | 96 + .../File/FileDataStream/PFFileDataStream.h | 31 + .../File/FileDataStream/PFFileDataStream.m | 112 + .../Parse/Internal/File/PFFile_Private.h | 29 + .../Parse/Internal/File/State/PFFileState.h | 35 + .../Parse/Internal/File/State/PFFileState.m | 106 + .../Internal/File/State/PFFileState_Private.h | 22 + .../Internal/File/State/PFMutableFileState.h | 22 + .../Internal/File/State/PFMutableFileState.m | 18 + .../Internal/HTTPRequest/PFHTTPRequest.h | 24 + .../HTTPRequest/PFHTTPURLRequestConstructor.h | 19 + .../HTTPRequest/PFHTTPURLRequestConstructor.m | 52 + .../Internal/HTTPRequest/PFURLConstructor.h | 22 + .../Internal/HTTPRequest/PFURLConstructor.m | 33 + .../Constants/PFInstallationConstants.h | 22 + .../Constants/PFInstallationConstants.m | 22 + .../Controller/PFInstallationController.h | 31 + .../Controller/PFInstallationController.m | 105 + .../PFCurrentInstallationController.h | 52 + .../PFCurrentInstallationController.m | 289 + .../PFInstallationIdentifierStore.h | 39 + .../PFInstallationIdentifierStore.m | 118 + .../PFInstallationIdentifierStore_Private.h | 19 + .../Installation/PFInstallationPrivate.h | 28 + .../Internal/KeyValueCache/PFKeyValueCache.h | 47 + .../Internal/KeyValueCache/PFKeyValueCache.m | 336 + .../KeyValueCache/PFKeyValueCache_Private.h | 66 + .../OfflineQueryLogic/PFOfflineQueryLogic.h | 79 + .../OfflineQueryLogic/PFOfflineQueryLogic.m | 918 +++ .../OfflineStore/PFOfflineStore.h | 201 + .../OfflineStore/PFOfflineStore.m | 1067 +++ .../Parse/Internal/LocalDataStore/Pin/PFPin.h | 33 + .../Parse/Internal/LocalDataStore/Pin/PFPin.m | 81 + .../LocalDataStore/SQLite/PFSQLiteDatabase.h | 115 + .../LocalDataStore/SQLite/PFSQLiteDatabase.m | 339 + .../SQLite/PFSQLiteDatabaseController.h | 49 + .../SQLite/PFSQLiteDatabaseController.m | 79 + .../SQLite/PFSQLiteDatabaseResult.h | 70 + .../SQLite/PFSQLiteDatabaseResult.m | 168 + .../SQLite/PFSQLiteDatabase_Private.h | 20 + .../LocalDataStore/SQLite/PFSQLiteStatement.h | 30 + .../LocalDataStore/SQLite/PFSQLiteStatement.m | 49 + .../MultiProcessLock/PFMultiProcessFileLock.h | 26 + .../MultiProcessLock/PFMultiProcessFileLock.m | 105 + .../PFMultiProcessFileLockController.h | 36 + .../PFMultiProcessFileLockController.m | 88 + .../BatchController/PFObjectBatchController.h | 55 + .../BatchController/PFObjectBatchController.m | 229 + .../Object/Coder/File/PFObjectFileCoder.h | 38 + .../Object/Coder/File/PFObjectFileCoder.m | 44 + .../Coder/File/PFObjectFileCodingLogic.h | 33 + .../Coder/File/PFObjectFileCodingLogic.m | 58 + .../Object/Constants/PFObjectConstants.h | 23 + .../Object/Constants/PFObjectConstants.m | 22 + .../PFOfflineObjectController.h | 27 + .../PFOfflineObjectController.m | 86 + .../Object/Controller/PFObjectController.h | 35 + .../Object/Controller/PFObjectController.m | 126 + .../Controller/PFObjectController_Private.h | 22 + .../Object/Controller/PFObjectControlling.h | 58 + .../PFCurrentObjectControlling.h | 37 + .../EstimatedData/PFObjectEstimatedData.h | 44 + .../EstimatedData/PFObjectEstimatedData.m | 86 + .../PFObjectFilePersistenceController.h | 55 + .../PFObjectFilePersistenceController.m | 98 + .../LocalIdStore/PFObjectLocalIdStore.h | 49 + .../LocalIdStore/PFObjectLocalIdStore.m | 291 + .../Object/OperationSet/PFOperationSet.h | 70 + .../Object/OperationSet/PFOperationSet.m | 196 + .../Parse/Internal/Object/PFObjectPrivate.h | 306 + .../PinningStore/PFPinningObjectStore.h | 84 + .../PinningStore/PFPinningObjectStore.m | 163 + .../Object/State/PFMutableObjectState.h | 45 + .../Object/State/PFMutableObjectState.m | 61 + .../Internal/Object/State/PFObjectState.h | 60 + .../Internal/Object/State/PFObjectState.m | 179 + .../Object/State/PFObjectState_Private.h | 57 + .../Object/Subclassing/PFObjectSubclassInfo.h | 25 + .../Object/Subclassing/PFObjectSubclassInfo.m | 203 + .../PFObjectSubclassingController.h | 40 + .../PFObjectSubclassingController.m | 317 + .../Object/Utilities/PFObjectUtilities.h | 36 + .../Object/Utilities/PFObjectUtilities.m | 48 + .../Pods/Parse/Parse/Internal/PFAlertView.h | 23 + .../Pods/Parse/Parse/Internal/PFAlertView.m | 109 + .../Pods/Parse/Parse/Internal/PFApplication.h | 38 + .../Pods/Parse/Parse/Internal/PFApplication.m | 93 + .../Pods/Parse/Parse/Internal/PFAssert.h | 94 + .../Parse/Parse/Internal/PFAsyncTaskQueue.h | 24 + .../Parse/Parse/Internal/PFAsyncTaskQueue.m | 70 + .../Parse/Parse/Internal/PFBase64Encoder.h | 17 + .../Parse/Parse/Internal/PFBase64Encoder.m | 28 + .../Pods/Parse/Parse/Internal/PFBaseState.h | 76 + .../Pods/Parse/Parse/Internal/PFBaseState.m | 267 + .../Parse/Parse/Internal/PFCategoryLoader.h | 16 + .../Parse/Parse/Internal/PFCategoryLoader.m | 20 + .../Parse/Parse/Internal/PFCommandCache.h | 52 + .../Parse/Parse/Internal/PFCommandCache.m | 330 + .../Parse/Internal/PFCommandCache_Private.h | 16 + .../Parse/Parse/Internal/PFCommandResult.h | 34 + .../Parse/Parse/Internal/PFCommandResult.m | 43 + .../Parse/Parse/Internal/PFCoreDataProvider.h | 101 + .../Pods/Parse/Parse/Internal/PFCoreManager.h | 78 + .../Pods/Parse/Parse/Internal/PFCoreManager.m | 447 ++ .../Parse/Parse/Internal/PFDataProvider.h | 90 + .../Parse/Parse/Internal/PFDateFormatter.h | 55 + .../Parse/Parse/Internal/PFDateFormatter.m | 118 + .../Pods/Parse/Parse/Internal/PFDecoder.h | 49 + .../Pods/Parse/Parse/Internal/PFDecoder.m | 194 + .../Pods/Parse/Parse/Internal/PFDevice.h | 24 + .../Pods/Parse/Parse/Internal/PFDevice.m | 134 + .../Pods/Parse/Parse/Internal/PFEncoder.h | 67 + .../Pods/Parse/Parse/Internal/PFEncoder.m | 250 + .../Parse/Parse/Internal/PFErrorUtilities.h | 45 + .../Parse/Parse/Internal/PFErrorUtilities.m | 48 + .../Parse/Parse/Internal/PFEventuallyPin.h | 76 + .../Parse/Parse/Internal/PFEventuallyPin.m | 188 + .../Parse/Parse/Internal/PFEventuallyQueue.h | 94 + .../Parse/Parse/Internal/PFEventuallyQueue.m | 503 ++ .../Internal/PFEventuallyQueue_Private.h | 133 + .../Pods/Parse/Parse/Internal/PFFileManager.h | 77 + .../Pods/Parse/Parse/Internal/PFFileManager.m | 367 + .../Parse/Parse/Internal/PFGeoPointPrivate.h | 33 + .../Pods/Parse/Parse/Internal/PFHash.h | 21 + .../Pods/Parse/Parse/Internal/PFHash.m | 76 + .../Parse/Parse/Internal/PFInternalUtils.h | 76 + .../Parse/Parse/Internal/PFInternalUtils.m | 298 + .../Parse/Internal/PFJSONSerialization.h | 65 + .../Parse/Internal/PFJSONSerialization.m | 72 + .../Parse/Parse/Internal/PFKeychainStore.h | 37 + .../Parse/Parse/Internal/PFKeychainStore.m | 200 + .../Parse/Parse/Internal/PFLocationManager.h | 56 + .../Parse/Parse/Internal/PFLocationManager.m | 153 + .../Pods/Parse/Parse/Internal/PFLogger.h | 47 + .../Pods/Parse/Parse/Internal/PFLogger.m | 105 + .../Pods/Parse/Parse/Internal/PFLogging.h | 40 + .../Pods/Parse/Parse/Internal/PFMacros.h | 137 + .../Parse/Internal/PFMulticastDelegate.h | 31 + .../Parse/Internal/PFMulticastDelegate.m | 39 + .../Parse/Parse/Internal/PFNetworkCommand.h | 47 + .../Parse/Internal/PFPinningEventuallyQueue.h | 22 + .../Parse/Internal/PFPinningEventuallyQueue.m | 327 + .../Parse/Parse/Internal/PFReachability.h | 61 + .../Parse/Parse/Internal/PFReachability.m | 213 + .../Pods/Parse/Parse/Internal/PFTaskQueue.h | 29 + .../Pods/Parse/Parse/Internal/PFTaskQueue.m | 50 + .../Pods/Parse/Parse/Internal/PFWeakValue.h | 18 + .../Pods/Parse/Parse/Internal/PFWeakValue.m | 26 + .../Pods/Parse/Parse/Internal/ParseInternal.h | 31 + .../Pods/Parse/Parse/Internal/ParseManager.h | 101 + .../Pods/Parse/Parse/Internal/ParseManager.m | 466 ++ .../Pods/Parse/Parse/Internal/ParseModule.h | 26 + .../Pods/Parse/Parse/Internal/ParseModule.m | 134 + .../Pods/Parse/Parse/Internal/Parse_Private.h | 25 + .../Internal/Product/PFProduct+Private.h | 46 + .../PFProductsRequestHandler.h | 37 + .../PFProductsRequestHandler.m | 92 + .../Internal/PropertyInfo/PFPropertyInfo.h | 50 + .../Internal/PropertyInfo/PFPropertyInfo.m | 212 + .../PropertyInfo/PFPropertyInfo_Private.h | 25 + .../PropertyInfo/PFPropertyInfo_Runtime.h | 44 + .../PropertyInfo/PFPropertyInfo_Runtime.m | 122 + .../Controller/PFPurchaseController.h | 62 + .../Controller/PFPurchaseController.m | 241 + .../PFPaymentTransactionObserver.h | 29 + .../PFPaymentTransactionObserver.m | 105 + .../PFPaymentTransactionObserver_Private.h | 19 + .../PFPushChannelsController.h | 47 + .../PFPushChannelsController.m | 120 + .../Push/Controller/PFPushController.h | 49 + .../Push/Controller/PFPushController.m | 57 + .../Internal/Push/Manager/PFPushManager.h | 43 + .../Internal/Push/Manager/PFPushManager.m | 95 + .../Parse/Parse/Internal/Push/PFPushPrivate.h | 43 + .../Internal/Push/State/PFMutablePushState.h | 32 + .../Internal/Push/State/PFMutablePushState.m | 34 + .../Parse/Internal/Push/State/PFPushState.h | 39 + .../Parse/Internal/Push/State/PFPushState.m | 60 + .../Internal/Push/State/PFPushState_Private.h | 26 + .../Internal/Push/Utilites/PFPushUtilities.h | 20 + .../Internal/Push/Utilites/PFPushUtilities.m | 91 + .../Controller/PFCachedQueryController.h | 25 + .../Controller/PFCachedQueryController.m | 208 + .../Controller/PFOfflineQueryController.h | 31 + .../Controller/PFOfflineQueryController.m | 180 + .../Query/Controller/PFQueryController.h | 104 + .../Query/Controller/PFQueryController.m | 160 + .../Parse/Internal/Query/PFQueryPrivate.h | 56 + .../Query/State/PFMutableQueryState.h | 81 + .../Query/State/PFMutableQueryState.m | 177 + .../Parse/Internal/Query/State/PFQueryState.h | 65 + .../Parse/Internal/Query/State/PFQueryState.m | 88 + .../Query/State/PFQueryState_Private.h | 61 + .../Query/Utilities/PFQueryUtilities.h | 42 + .../Query/Utilities/PFQueryUtilities.m | 530 ++ .../Internal/Relation/PFRelationPrivate.h | 27 + .../Relation/State/PFMutableRelationState.h | 19 + .../Relation/State/PFMutableRelationState.m | 62 + .../Internal/Relation/State/PFRelationState.h | 30 + .../Internal/Relation/State/PFRelationState.m | 65 + .../Relation/State/PFRelationState_Private.h | 28 + .../Session/Controller/PFSessionController.h | 40 + .../Session/Controller/PFSessionController.m | 60 + .../Internal/Session/PFSession_Private.h | 24 + .../Session/Utilities/PFSessionUtilities.h | 24 + .../Session/Utilities/PFSessionUtilities.m | 22 + .../Internal/ThreadSafety/PFThreadsafety.h | 13 + .../Internal/ThreadSafety/PFThreadsafety.m | 33 + .../PFUserAuthenticationController.h | 61 + .../PFUserAuthenticationController.m | 171 + .../PFAnonymousAuthenticationProvider.h | 27 + .../PFAnonymousAuthenticationProvider.m | 36 + .../Anonymous/PFAnonymousUtils_Private.h | 22 + .../User/Coder/File/PFUserFileCodingLogic.h | 18 + .../User/Coder/File/PFUserFileCodingLogic.m | 60 + .../Internal/User/Constants/PFUserConstants.h | 15 + .../Internal/User/Constants/PFUserConstants.m | 15 + .../User/Controller/PFUserController.h | 61 + .../User/Controller/PFUserController.m | 164 + .../PFCurrentUserController.h | 59 + .../PFCurrentUserController.m | 364 + .../Parse/Parse/Internal/User/PFUserPrivate.h | 79 + .../Internal/User/State/PFMutableUserState.h | 19 + .../Internal/User/State/PFMutableUserState.m | 20 + .../Parse/Internal/User/State/PFUserState.h | 26 + .../Parse/Internal/User/State/PFUserState.m | 64 + .../Internal/User/State/PFUserState_Private.h | 25 + Unit-2-Journal/Pods/Parse/Parse/PFACL.h | 264 + Unit-2-Journal/Pods/Parse/Parse/PFACL.m | 363 + Unit-2-Journal/Pods/Parse/Parse/PFAnalytics.h | 167 + Unit-2-Journal/Pods/Parse/Parse/PFAnalytics.m | 91 + .../Pods/Parse/Parse/PFAnonymousUtils.h | 82 + .../Pods/Parse/Parse/PFAnonymousUtils.m | 91 + Unit-2-Journal/Pods/Parse/Parse/PFCloud.h | 91 + Unit-2-Journal/Pods/Parse/Parse/PFCloud.m | 58 + Unit-2-Journal/Pods/Parse/Parse/PFConfig.h | 106 + Unit-2-Journal/Pods/Parse/Parse/PFConfig.m | 113 + Unit-2-Journal/Pods/Parse/Parse/PFConstants.h | 509 ++ Unit-2-Journal/Pods/Parse/Parse/PFConstants.m | 32 + Unit-2-Journal/Pods/Parse/Parse/PFFile.h | 446 ++ Unit-2-Journal/Pods/Parse/Parse/PFFile.m | 546 ++ Unit-2-Journal/Pods/Parse/Parse/PFGeoPoint.h | 114 + Unit-2-Journal/Pods/Parse/Parse/PFGeoPoint.m | 193 + .../Pods/Parse/Parse/PFInstallation.h | 113 + .../Pods/Parse/Parse/PFInstallation.m | 342 + .../Parse/PFNetworkActivityIndicatorManager.h | 70 + .../Parse/PFNetworkActivityIndicatorManager.m | 165 + .../Pods/Parse/Parse/PFNullability.h | 47 + .../Pods/Parse/Parse/PFObject+Subclass.h | 125 + Unit-2-Journal/Pods/Parse/Parse/PFObject.h | 1429 ++++ Unit-2-Journal/Pods/Parse/Parse/PFObject.m | 2770 +++++++ Unit-2-Journal/Pods/Parse/Parse/PFProduct.h | 70 + Unit-2-Journal/Pods/Parse/Parse/PFProduct.m | 48 + Unit-2-Journal/Pods/Parse/Parse/PFPurchase.h | 98 + Unit-2-Journal/Pods/Parse/Parse/PFPurchase.m | 89 + Unit-2-Journal/Pods/Parse/Parse/PFPush.h | 532 ++ Unit-2-Journal/Pods/Parse/Parse/PFPush.m | 464 ++ Unit-2-Journal/Pods/Parse/Parse/PFQuery.h | 892 +++ Unit-2-Journal/Pods/Parse/Parse/PFQuery.m | 1136 +++ Unit-2-Journal/Pods/Parse/Parse/PFRelation.h | 58 + Unit-2-Journal/Pods/Parse/Parse/PFRelation.m | 236 + Unit-2-Journal/Pods/Parse/Parse/PFRole.h | 100 + Unit-2-Journal/Pods/Parse/Parse/PFRole.m | 91 + Unit-2-Journal/Pods/Parse/Parse/PFSession.h | 52 + Unit-2-Journal/Pods/Parse/Parse/PFSession.m | 106 + .../Pods/Parse/Parse/PFSubclassing.h | 87 + Unit-2-Journal/Pods/Parse/Parse/PFUser.h | 519 ++ Unit-2-Journal/Pods/Parse/Parse/PFUser.m | 1225 ++++ .../Parse/PFUserAuthenticationDelegate.h | 36 + Unit-2-Journal/Pods/Parse/Parse/Parse.h | 195 + Unit-2-Journal/Pods/Parse/Parse/Parse.m | 235 + .../Parse/Resources/en.lproj/Parse.strings | Bin 0 -> 122 bytes Unit-2-Journal/Pods/Parse/README.md | 106 + .../Pods/Pods.xcodeproj/project.pbxproj | 6476 ++++++++--------- .../Code/RKValueTransformers.h | 373 + .../Code/RKValueTransformers.m | 912 +++ .../Pods/RKValueTransformers/LICENSE | 191 + .../Pods/RKValueTransformers/README.md | 209 + Unit-2-Journal/Pods/RestKit/Code/Network.h | 34 + .../Code/Network/RKHTTPRequestOperation.h | 60 + .../Code/Network/RKHTTPRequestOperation.m | 139 + .../Network/RKManagedObjectRequestOperation.h | 209 + .../Network/RKManagedObjectRequestOperation.m | 905 +++ .../RestKit/Code/Network/RKObjectManager.h | 892 +++ .../RestKit/Code/Network/RKObjectManager.m | 1018 +++ .../Code/Network/RKObjectParameterization.h | 44 + .../Code/Network/RKObjectParameterization.m | 151 + .../Code/Network/RKObjectRequestOperation.h | 238 + .../Code/Network/RKObjectRequestOperation.m | 645 ++ .../RKObjectRequestOperationSubclass.h | 45 + .../Pods/RestKit/Code/Network/RKPaginator.h | 280 + .../Pods/RestKit/Code/Network/RKPaginator.m | 329 + .../Pods/RestKit/Code/Network/RKPathMatcher.h | 132 + .../Pods/RestKit/Code/Network/RKPathMatcher.m | 154 + .../Code/Network/RKRequestDescriptor.h | 110 + .../Code/Network/RKRequestDescriptor.m | 118 + .../Code/Network/RKResponseDescriptor.h | 181 + .../Code/Network/RKResponseDescriptor.m | 211 + .../Code/Network/RKResponseMapperOperation.h | 265 + .../Code/Network/RKResponseMapperOperation.m | 531 ++ .../Pods/RestKit/Code/Network/RKRoute.h | 141 + .../Pods/RestKit/Code/Network/RKRoute.m | 169 + .../Pods/RestKit/Code/Network/RKRouteSet.h | 159 + .../Pods/RestKit/Code/Network/RKRouteSet.m | 212 + .../Pods/RestKit/Code/Network/RKRouter.h | 118 + .../Pods/RestKit/Code/Network/RKRouter.m | 85 + .../Pods/RestKit/Code/ObjectMapping.h | 28 + .../Code/ObjectMapping/RKAttributeMapping.h | 60 + .../Code/ObjectMapping/RKAttributeMapping.m | 39 + .../Code/ObjectMapping/RKDynamicMapping.h | 115 + .../Code/ObjectMapping/RKDynamicMapping.m | 119 + .../Code/ObjectMapping/RKErrorMessage.h | 44 + .../Code/ObjectMapping/RKErrorMessage.m | 30 + .../Code/ObjectMapping/RKHTTPUtilities.h | 159 + .../Code/ObjectMapping/RKHTTPUtilities.m | 548 ++ .../Code/ObjectMapping/RKMapperOperation.h | 256 + .../Code/ObjectMapping/RKMapperOperation.m | 446 ++ .../ObjectMapping/RKMapperOperation_Private.h | 28 + .../RestKit/Code/ObjectMapping/RKMapping.h | 62 + .../RestKit/Code/ObjectMapping/RKMapping.m | 22 + .../Code/ObjectMapping/RKMappingErrors.h | 37 + .../Code/ObjectMapping/RKMappingOperation.h | 390 + .../Code/ObjectMapping/RKMappingOperation.m | 1260 ++++ .../RKMappingOperationDataSource.h | 110 + .../Code/ObjectMapping/RKMappingResult.h | 91 + .../Code/ObjectMapping/RKMappingResult.m | 81 + .../Code/ObjectMapping/RKObjectMapping.h | 528 ++ .../Code/ObjectMapping/RKObjectMapping.m | 616 ++ .../ObjectMapping/RKObjectMappingMatcher.h | 112 + .../ObjectMapping/RKObjectMappingMatcher.m | 273 + .../RKObjectMappingOperationDataSource.h | 27 + .../RKObjectMappingOperationDataSource.m | 48 + .../Code/ObjectMapping/RKObjectUtilities.h | 113 + .../Code/ObjectMapping/RKObjectUtilities.m | 148 + .../Code/ObjectMapping/RKPropertyInspector.h | 117 + .../Code/ObjectMapping/RKPropertyInspector.m | 207 + .../Code/ObjectMapping/RKPropertyMapping.h | 84 + .../Code/ObjectMapping/RKPropertyMapping.m | 77 + .../ObjectMapping/RKRelationshipMapping.h | 95 + .../ObjectMapping/RKRelationshipMapping.m | 70 + Unit-2-Journal/Pods/RestKit/Code/RestKit.h | 50 + Unit-2-Journal/Pods/RestKit/Code/Support.h | 31 + .../Code/Support/RKDictionaryUtilities.h | 46 + .../Code/Support/RKDictionaryUtilities.m | 44 + .../Code/Support/RKDotNetDateFormatter.h | 73 + .../Code/Support/RKDotNetDateFormatter.m | 115 + .../Pods/RestKit/Code/Support/RKErrors.h | 59 + .../Pods/RestKit/Code/Support/RKErrors.m | 28 + .../Pods/RestKit/Code/Support/RKLog.h | 248 + .../Pods/RestKit/Code/Support/RKLog.m | 213 + .../RestKit/Code/Support/RKLumberjackLogger.h | 17 + .../RestKit/Code/Support/RKLumberjackLogger.m | 107 + .../Code/Support/RKMIMETypeSerialization.h | 97 + .../Code/Support/RKMIMETypeSerialization.m | 182 + .../Pods/RestKit/Code/Support/RKMIMETypes.h | 52 + .../Pods/RestKit/Code/Support/RKMIMETypes.m | 44 + .../Pods/RestKit/Code/Support/RKMacros.h | 51 + .../Code/Support/RKNSJSONSerialization.h | 29 + .../Code/Support/RKNSJSONSerialization.m | 35 + .../Code/Support/RKOperationStateMachine.h | 158 + .../Code/Support/RKOperationStateMachine.m | 209 + .../RestKit/Code/Support/RKPathUtilities.h | 62 + .../RestKit/Code/Support/RKPathUtilities.m | 153 + .../RestKit/Code/Support/RKSerialization.h | 54 + .../RestKit/Code/Support/RKStringTokenizer.h | 51 + .../RestKit/Code/Support/RKStringTokenizer.m | 42 + .../Code/Support/RKURLEncodedSerialization.h | 74 + .../Code/Support/RKURLEncodedSerialization.m | 190 + .../Code/Support/lcl_config_components_RK.h | 62 + .../Code/Support/lcl_config_extensions_RK.h | 20 + .../Code/Support/lcl_config_logger_RK.h | 53 + Unit-2-Journal/Pods/RestKit/Code/Testing.h | 31 + .../Pods/RestKit/Code/Testing/RKBenchmark.h | 111 + .../Pods/RestKit/Code/Testing/RKBenchmark.m | 129 + .../Testing/RKConnectionTestExpectation.h | 87 + .../Testing/RKConnectionTestExpectation.m | 69 + .../Pods/RestKit/Code/Testing/RKMappingTest.h | 219 + .../Pods/RestKit/Code/Testing/RKMappingTest.m | 523 ++ .../RKPropertyMappingTestExpectation.h | 121 + .../RKPropertyMappingTestExpectation.m | 94 + .../RestKit/Code/Testing/RKTestConstants.m | 30 + .../Pods/RestKit/Code/Testing/RKTestFactory.h | 231 + .../Pods/RestKit/Code/Testing/RKTestFactory.m | 303 + .../Pods/RestKit/Code/Testing/RKTestFixture.h | 87 + .../Pods/RestKit/Code/Testing/RKTestFixture.m | 98 + .../Pods/RestKit/Code/Testing/RKTestHelpers.h | 123 + .../Pods/RestKit/Code/Testing/RKTestHelpers.m | 150 + .../Code/Testing/RKTestNotificationObserver.h | 98 + .../Code/Testing/RKTestNotificationObserver.m | 110 + Unit-2-Journal/Pods/RestKit/LICENSE | 202 + Unit-2-Journal/Pods/RestKit/README.md | 629 ++ .../Vendor/LibComponentLogging/Core/lcl_RK.h | 388 + .../Vendor/LibComponentLogging/Core/lcl_RK.m | 176 + Unit-2-Journal/Pods/SOCKit/LICENSE | 202 + Unit-2-Journal/Pods/SOCKit/README.mdown | 94 + Unit-2-Journal/Pods/SOCKit/SOCKit.h | 214 + Unit-2-Journal/Pods/SOCKit/SOCKit.m | 543 ++ .../AFNetworking-Private.xcconfig | 6 + .../AFNetworking/AFNetworking-dummy.m | 5 + .../AFNetworking/AFNetworking-prefix.pch | 15 + .../AFNetworking/AFNetworking.xcconfig | 1 + ...FormatterValueTransformer-Private.xcconfig | 5 + ...O8601DateFormatterValueTransformer-dummy.m | 5 + ...01DateFormatterValueTransformer-prefix.pch | 4 + ...8601DateFormatterValueTransformer.xcconfig | 0 .../Parse/Parse-Private.xcconfig | 6 + .../Target Support Files/Parse/Parse-dummy.m | 5 + .../Parse/Parse-prefix.pch | 4 + .../Target Support Files/Parse/Parse.xcconfig | 1 + .../RKValueTransformers-Private.xcconfig | 5 + .../RKValueTransformers-dummy.m | 5 + .../RKValueTransformers-prefix.pch | 4 + .../RKValueTransformers.xcconfig | 0 .../RestKit/RestKit-Private.xcconfig | 6 + .../RestKit/RestKit-dummy.m | 5 + .../RestKit/RestKit-prefix.pch | 20 + .../RestKit/RestKit.xcconfig | 1 + .../SOCKit/SOCKit-Private.xcconfig | 5 + .../SOCKit/SOCKit-dummy.m | 5 + .../SOCKit/SOCKit-prefix.pch | 4 + .../SOCKit/SOCKit.xcconfig | 0 .../TransitionKit-Private.xcconfig | 5 + .../TransitionKit/TransitionKit-dummy.m | 5 + .../TransitionKit/TransitionKit-prefix.pch | 4 + .../TransitionKit/TransitionKit.xcconfig | 0 .../Pods/TransitionKit/Code/TKEvent.h | 89 + .../Pods/TransitionKit/Code/TKEvent.m | 101 + .../Pods/TransitionKit/Code/TKState.h | 83 + .../Pods/TransitionKit/Code/TKState.m | 77 + .../Pods/TransitionKit/Code/TKStateMachine.h | 245 + .../Pods/TransitionKit/Code/TKStateMachine.m | 304 + .../Pods/TransitionKit/Code/TKTransition.h | 73 + .../Pods/TransitionKit/Code/TKTransition.m | 49 + .../Pods/TransitionKit/Code/TransitionKit.h | 29 + Unit-2-Journal/Pods/TransitionKit/LICENSE | 202 + Unit-2-Journal/Pods/TransitionKit/README.md | 126 + .../Unit-2-Journal.xcodeproj/project.pbxproj | 52 +- Unit-2-Journal/Unit-2-Journal/.DS_Store | Bin 0 -> 6148 bytes .../Base.lproj/LaunchScreen.storyboard | 2 +- .../Unit-2-Journal/Base.lproj/Main.storyboard | 100 +- .../JournalMainCollectionViewController.h | 17 + .../JournalMainCollectionViewController.m | 115 + .../Unit-2-Journal/ViewController.h | 15 - .../Unit-2-Journal/ViewController.m | 39 - .../Unit-2-Journal/big_nerd_ranch.png | Bin 0 -> 586089 bytes Unit-2-Journal/Unit-2-Journal/destroyer.png | Bin 0 -> 111830 bytes Unit-2-Journal/Unit-2-Journal/drake.png | Bin 0 -> 124450 bytes .../Unit-2-Journal/lean_startup.png | Bin 0 -> 1090468 bytes .../Unit-2-Journal/run_the_jewels.png | Bin 0 -> 136994 bytes .../Unit-2-Journal/sleater_kinney.png | Bin 0 -> 197582 bytes .../Unit-2-Journal/talking_heads.png | Bin 0 -> 382223 bytes .../Unit-2-Journal/true_detective.png | Bin 0 -> 1426497 bytes Unit-2-Journal/Unit-2-Journal/x-files.png | Bin 0 -> 2160176 bytes 939 files changed, 77748 insertions(+), 3304 deletions(-) create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPClient.h create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPClient.m create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFNetworking.h create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h create mode 100644 Unit-2-Journal/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m create mode 100644 Unit-2-Journal/Pods/AFNetworking/LICENSE create mode 100644 Unit-2-Journal/Pods/AFNetworking/README.md create mode 120000 Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFHTTPClient.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFImageRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFJSONRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFNetworking.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFPropertyListRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFXMLRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/ISO8601DateFormatterValueTransformer/RKISO8601DateFormatter.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/BFTask+Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFACL.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFACLPrivate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFACLState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFACLState_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFAlertView.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalytics.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalyticsController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalyticsUtilities.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalytics_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFAnonymousAuthenticationProvider.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFAnonymousUtils.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFAnonymousUtils_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFApplication.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFAssert.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFAsyncTaskQueue.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFBase64Encoder.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFBaseState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCachedQueryController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCategoryLoader.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCloud.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCloudCodeController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandCache.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandCache_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandResult.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandRunning.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandRunningConstants.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandURLRequestConstructor.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFConfig.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFConfigController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFConfig_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFConstants.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCoreDataProvider.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCoreManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentConfigController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentInstallationController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentObjectControlling.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentUserController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFDataProvider.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFDateFormatter.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFDecoder.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFDefaultACLController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFDevice.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFEncoder.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFErrorUtilities.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFEventuallyPin.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFEventuallyQueue.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFEventuallyQueue_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFFieldOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFFieldOperationDecoder.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFFile.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFFileController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFFileDataStream.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFFileManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFFileStagingController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFFileState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFFileState_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFFile_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFGeoPoint.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFGeoPointPrivate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFHTTPRequest.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFHTTPURLRequestConstructor.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFHash.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationConstants.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationIdentifierStore.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationIdentifierStore_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationPrivate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFInternalUtils.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFJSONSerialization.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFKeyValueCache.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFKeyValueCache_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFKeychainStore.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFLocationManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFLogger.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFLogging.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFMacros.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFMultiProcessFileLock.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFMultiProcessFileLockController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFMulticastDelegate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableACLState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableFileState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableObjectState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFMutablePushState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableQueryState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableRelationState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableUserState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFNetworkActivityIndicatorManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFNetworkCommand.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFNullability.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObject+Subclass.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObject.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectBatchController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectConstants.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectController_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectControlling.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectEstimatedData.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectFileCoder.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectFileCodingLogic.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectFilePersistenceController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectLocalIdStore.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectPrivate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectState_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectSubclassInfo.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectSubclassingController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectUtilities.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineObjectController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineQueryController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineQueryLogic.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineStore.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFOperationSet.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPaymentTransactionObserver.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPaymentTransactionObserver_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPin.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPinningEventuallyQueue.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPinningObjectStore.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFProduct+Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFProduct.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFProductsRequestHandler.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPropertyInfo.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPropertyInfo_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPropertyInfo_Runtime.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPurchase.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPurchaseController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPush.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPushChannelsController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPushController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPushManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPushPrivate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPushState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPushState_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFPushUtilities.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFQuery.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryPrivate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryState_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryUtilities.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTAnalyticsCommand.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTCloudCommand.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTCommand.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTCommand_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTConfigCommand.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTFileCommand.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTObjectBatchCommand.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTObjectCommand.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTPushCommand.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTQueryCommand.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTSessionCommand.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTUserCommand.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFReachability.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRelation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRelationPrivate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRelationState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRelationState_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFRole.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabase.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabaseController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabaseResult.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabase_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteStatement.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFSession.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFSessionController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFSessionUtilities.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFSession_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFSubclassing.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFTaskQueue.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFThreadsafety.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFURLConstructor.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSession.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionCommandRunner.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionCommandRunner_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionDataTaskDelegate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionDataTaskDelegate_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionFileDownloadTaskDelegate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionJSONDataTaskDelegate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionUploadTaskDelegate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSession_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFUser.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFUserAuthenticationController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFUserAuthenticationDelegate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFUserConstants.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFUserController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFUserFileCodingLogic.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFUserPrivate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFUserState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFUserState_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/PFWeakValue.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/Parse.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/ParseInternal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/ParseManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/ParseModule.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Parse/Parse_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RKValueTransformers/RKValueTransformers.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKHTTPRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKManagedObjectRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectParameterization.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectRequestOperationSubclass.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKPaginator.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKPathMatcher.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRequestDescriptor.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKResponseDescriptor.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKResponseMapperOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRoute.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRouteSet.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRouter.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKAttributeMapping.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKDynamicMapping.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKErrorMessage.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKHTTPUtilities.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMapperOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMapperOperation_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMapping.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingErrors.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingOperationDataSource.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingResult.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectMapping.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectMappingMatcher.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectMappingOperationDataSource.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectUtilities.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKPropertyInspector.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKPropertyMapping.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKRelationshipMapping.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/RestKit.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKDictionaryUtilities.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKDotNetDateFormatter.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKErrors.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKLog.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKLumberjackLogger.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKMIMETypeSerialization.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKMIMETypes.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKMacros.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKNSJSONSerialization.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKOperationStateMachine.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKPathUtilities.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKSerialization.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKStringTokenizer.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKURLEncodedSerialization.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/lcl_config_components_RK.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/lcl_config_extensions_RK.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Support/lcl_config_logger_RK.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Testing.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKBenchmark.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKConnectionTestExpectation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKMappingTest.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKPropertyMappingTestExpectation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestFactory.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestFixture.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestHelpers.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestNotificationObserver.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/SOCKit/SOCKit.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKEvent.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKState.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKStateMachine.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKTransition.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/TransitionKit/TransitionKit.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/Vendor/LibComponentLogging/Core/lcl_RK.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFHTTPClient.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFImageRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFJSONRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFNetworking.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFPropertyListRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFXMLRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/ISO8601DateFormatterValueTransformer/RKISO8601DateFormatter.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFACL.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFAnalytics.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFAnonymousUtils.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFCloud.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFConfig.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFConstants.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFFile.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFGeoPoint.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFInstallation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFNetworkActivityIndicatorManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFNullability.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFObject+Subclass.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFObject.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFProduct.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFPurchase.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFPush.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFQuery.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFRelation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFRole.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFSession.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFSubclassing.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFUser.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/PFUserAuthenticationDelegate.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Parse/Parse.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RKValueTransformers/RKValueTransformers.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKHTTPRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKManagedObjectRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectManager.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectParameterization.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectRequestOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectRequestOperationSubclass.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKPaginator.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKPathMatcher.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRequestDescriptor.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKResponseDescriptor.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKResponseMapperOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRoute.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRouteSet.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRouter.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKAttributeMapping.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKDynamicMapping.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKErrorMessage.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKHTTPUtilities.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMapperOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMapperOperation_Private.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMapping.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingErrors.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingOperation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingOperationDataSource.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingResult.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectMapping.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectMappingMatcher.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectMappingOperationDataSource.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectUtilities.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKPropertyInspector.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKPropertyMapping.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKRelationshipMapping.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/RestKit.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKDictionaryUtilities.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKDotNetDateFormatter.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKErrors.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKLog.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKLumberjackLogger.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKMIMETypeSerialization.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKMIMETypes.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKMacros.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKNSJSONSerialization.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKOperationStateMachine.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKPathUtilities.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKSerialization.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKStringTokenizer.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKURLEncodedSerialization.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/lcl_config_components_RK.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/lcl_config_extensions_RK.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Support/lcl_config_logger_RK.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Testing.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKBenchmark.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKConnectionTestExpectation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKMappingTest.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKPropertyMappingTestExpectation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestFactory.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestFixture.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestHelpers.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestNotificationObserver.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/SOCKit/SOCKit.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKEvent.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKState.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKStateMachine.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKTransition.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/TransitionKit/TransitionKit.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/Vendor/LibComponentLogging/Core/lcl_RK.h create mode 100644 Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/ISO8601DateFormatterValueTransformer.h create mode 100644 Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/ISO8601DateFormatterValueTransformer.m create mode 100644 Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/RKISO8601DateFormatter.h create mode 100644 Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/RKISO8601DateFormatter.m create mode 100644 Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/LICENSE create mode 100644 Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/README.md create mode 100644 Unit-2-Journal/Pods/Parse/LICENSE create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/PFACLPrivate.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFACLState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFACLState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFACLState_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFMutableACLState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFMutableACLState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Controller/PFAnalyticsController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Controller/PFAnalyticsController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/PFAnalytics_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/BFTask+Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/BFTask+Private.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/CloudCode/PFCloudCodeController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/CloudCode/PFCloudCodeController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunning.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunning.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTAnalyticsCommand.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTAnalyticsCommand.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCloudCommand.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCloudCommand.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCommand.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCommand.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCommand_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTConfigCommand.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTConfigCommand.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTFileCommand.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTFileCommand.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectBatchCommand.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectBatchCommand.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectCommand.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectCommand.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTPushCommand.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTPushCommand.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTQueryCommand.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTQueryCommand.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTSessionCommand.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTSessionCommand.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTUserCommand.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTUserCommand.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFConfigController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFConfigController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFCurrentConfigController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFCurrentConfigController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Config/PFConfig_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperation.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperation.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperationDecoder.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperationDecoder.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileStagingController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileStagingController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/File/FileDataStream/PFFileDataStream.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/File/FileDataStream/PFFileDataStream.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/File/PFFile_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFFileState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFFileState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFFileState_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFMutableFileState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFMutableFileState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFHTTPRequest.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFURLConstructor.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFURLConstructor.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Constants/PFInstallationConstants.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Constants/PFInstallationConstants.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Controller/PFInstallationController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Controller/PFInstallationController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/PFInstallationPrivate.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/KeyValueCache/PFKeyValueCache.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/KeyValueCache/PFKeyValueCache.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/KeyValueCache/PFKeyValueCache_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/Pin/PFPin.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/Pin/PFPin.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/BatchController/PFObjectBatchController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/BatchController/PFObjectBatchController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCoder.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCoder.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Constants/PFObjectConstants.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Constants/PFObjectConstants.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectController_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectControlling.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/CurrentController/PFCurrentObjectControlling.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/OperationSet/PFOperationSet.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/OperationSet/PFOperationSet.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/PFObjectPrivate.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/PinningStore/PFPinningObjectStore.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/PinningStore/PFPinningObjectStore.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFMutableObjectState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFMutableObjectState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFObjectState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFObjectState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFObjectState_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassingController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassingController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Utilities/PFObjectUtilities.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Utilities/PFObjectUtilities.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFAlertView.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFAlertView.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFApplication.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFApplication.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFAssert.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFAsyncTaskQueue.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFAsyncTaskQueue.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFBase64Encoder.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFBase64Encoder.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFBaseState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFBaseState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFCategoryLoader.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFCategoryLoader.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandCache.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandCache.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandCache_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandResult.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandResult.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFCoreDataProvider.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFCoreManager.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFCoreManager.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFDataProvider.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFDateFormatter.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFDateFormatter.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFDecoder.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFDecoder.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFDevice.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFDevice.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFEncoder.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFEncoder.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFErrorUtilities.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFErrorUtilities.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyPin.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyPin.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyQueue.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyQueue.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyQueue_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFFileManager.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFFileManager.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFGeoPointPrivate.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFHash.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFHash.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFInternalUtils.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFInternalUtils.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFJSONSerialization.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFJSONSerialization.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFKeychainStore.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFKeychainStore.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFLocationManager.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFLocationManager.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFLogger.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFLogger.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFLogging.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFMacros.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFMulticastDelegate.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFMulticastDelegate.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFNetworkCommand.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFPinningEventuallyQueue.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFPinningEventuallyQueue.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFReachability.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFReachability.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFTaskQueue.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFTaskQueue.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFWeakValue.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PFWeakValue.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ParseInternal.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ParseManager.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ParseManager.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ParseModule.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ParseModule.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Parse_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Product/PFProduct+Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/Controller/PFPurchaseController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/Controller/PFPurchaseController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Push/ChannelsController/PFPushChannelsController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Push/ChannelsController/PFPushChannelsController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Controller/PFPushController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Controller/PFPushController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Manager/PFPushManager.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Manager/PFPushManager.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Push/PFPushPrivate.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFMutablePushState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFMutablePushState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFPushState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFPushState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFPushState_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Utilites/PFPushUtilities.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Utilites/PFPushUtilities.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFCachedQueryController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFCachedQueryController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFOfflineQueryController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFOfflineQueryController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFQueryController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFQueryController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Query/PFQueryPrivate.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFMutableQueryState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFMutableQueryState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFQueryState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFQueryState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFQueryState_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Utilities/PFQueryUtilities.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Utilities/PFQueryUtilities.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/PFRelationPrivate.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFMutableRelationState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFMutableRelationState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFRelationState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFRelationState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFRelationState_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Controller/PFSessionController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Controller/PFSessionController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Session/PFSession_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Utilities/PFSessionUtilities.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Utilities/PFSessionUtilities.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ThreadSafety/PFThreadsafety.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/ThreadSafety/PFThreadsafety.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousUtils_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/Coder/File/PFUserFileCodingLogic.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/Coder/File/PFUserFileCodingLogic.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/Constants/PFUserConstants.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/Constants/PFUserConstants.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/Controller/PFUserController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/Controller/PFUserController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/CurrentUserController/PFCurrentUserController.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/PFUserPrivate.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFMutableUserState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFMutableUserState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFUserState.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFUserState.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFUserState_Private.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFACL.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFACL.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFAnalytics.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFAnalytics.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFAnonymousUtils.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFAnonymousUtils.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFCloud.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFCloud.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFConfig.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFConfig.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFConstants.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFConstants.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFFile.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFFile.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFGeoPoint.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFGeoPoint.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFInstallation.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFInstallation.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFNetworkActivityIndicatorManager.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFNetworkActivityIndicatorManager.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFNullability.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFObject+Subclass.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFObject.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFObject.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFProduct.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFProduct.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFPurchase.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFPurchase.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFPush.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFPush.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFQuery.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFQuery.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFRelation.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFRelation.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFRole.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFRole.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFSession.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFSession.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFSubclassing.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFUser.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFUser.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/PFUserAuthenticationDelegate.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Parse.h create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Parse.m create mode 100644 Unit-2-Journal/Pods/Parse/Parse/Resources/en.lproj/Parse.strings create mode 100644 Unit-2-Journal/Pods/Parse/README.md create mode 100644 Unit-2-Journal/Pods/RKValueTransformers/Code/RKValueTransformers.h create mode 100644 Unit-2-Journal/Pods/RKValueTransformers/Code/RKValueTransformers.m create mode 100644 Unit-2-Journal/Pods/RKValueTransformers/LICENSE create mode 100644 Unit-2-Journal/Pods/RKValueTransformers/README.md create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKHTTPRequestOperation.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKHTTPRequestOperation.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKManagedObjectRequestOperation.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKManagedObjectRequestOperation.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectManager.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectManager.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectParameterization.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectParameterization.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectRequestOperation.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectRequestOperation.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectRequestOperationSubclass.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKPaginator.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKPaginator.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKPathMatcher.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKPathMatcher.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKRequestDescriptor.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKRequestDescriptor.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseDescriptor.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseDescriptor.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseMapperOperation.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseMapperOperation.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKRoute.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKRoute.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKRouteSet.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKRouteSet.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKRouter.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Network/RKRouter.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKAttributeMapping.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKAttributeMapping.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKDynamicMapping.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKDynamicMapping.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKErrorMessage.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKErrorMessage.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKHTTPUtilities.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKHTTPUtilities.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapperOperation.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapperOperation.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapperOperation_Private.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapping.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapping.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingErrors.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingOperation.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingOperation.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingOperationDataSource.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingResult.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingResult.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMapping.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMapping.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingMatcher.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingMatcher.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingOperationDataSource.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingOperationDataSource.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectUtilities.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectUtilities.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyInspector.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyInspector.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyMapping.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyMapping.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKRelationshipMapping.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKRelationshipMapping.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/RestKit.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKDictionaryUtilities.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKDictionaryUtilities.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKDotNetDateFormatter.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKDotNetDateFormatter.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKErrors.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKErrors.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKLog.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKLog.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKLumberjackLogger.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKLumberjackLogger.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypeSerialization.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypeSerialization.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypes.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypes.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKMacros.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKNSJSONSerialization.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKNSJSONSerialization.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKOperationStateMachine.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKOperationStateMachine.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKPathUtilities.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKPathUtilities.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKSerialization.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKStringTokenizer.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKStringTokenizer.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKURLEncodedSerialization.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/RKURLEncodedSerialization.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/lcl_config_components_RK.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/lcl_config_extensions_RK.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Support/lcl_config_logger_RK.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKBenchmark.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKBenchmark.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKConnectionTestExpectation.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKConnectionTestExpectation.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKMappingTest.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKMappingTest.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKPropertyMappingTestExpectation.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKPropertyMappingTestExpectation.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestConstants.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFactory.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFactory.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFixture.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFixture.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestHelpers.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestHelpers.m create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestNotificationObserver.h create mode 100644 Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestNotificationObserver.m create mode 100644 Unit-2-Journal/Pods/RestKit/LICENSE create mode 100644 Unit-2-Journal/Pods/RestKit/README.md create mode 100644 Unit-2-Journal/Pods/RestKit/Vendor/LibComponentLogging/Core/lcl_RK.h create mode 100644 Unit-2-Journal/Pods/RestKit/Vendor/LibComponentLogging/Core/lcl_RK.m create mode 100644 Unit-2-Journal/Pods/SOCKit/LICENSE create mode 100644 Unit-2-Journal/Pods/SOCKit/README.mdown create mode 100644 Unit-2-Journal/Pods/SOCKit/SOCKit.h create mode 100644 Unit-2-Journal/Pods/SOCKit/SOCKit.m create mode 100644 Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-Private.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-dummy.m create mode 100644 Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-prefix.pch create mode 100644 Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-Private.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-dummy.m create mode 100644 Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch create mode 100644 Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/Parse/Parse-Private.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/Parse/Parse-dummy.m create mode 100644 Unit-2-Journal/Pods/Target Support Files/Parse/Parse-prefix.pch create mode 100644 Unit-2-Journal/Pods/Target Support Files/Parse/Parse.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-Private.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-dummy.m create mode 100644 Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch create mode 100644 Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-Private.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-dummy.m create mode 100644 Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-prefix.pch create mode 100644 Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-Private.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-dummy.m create mode 100644 Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-prefix.pch create mode 100644 Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-Private.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-dummy.m create mode 100644 Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-prefix.pch create mode 100644 Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit.xcconfig create mode 100644 Unit-2-Journal/Pods/TransitionKit/Code/TKEvent.h create mode 100644 Unit-2-Journal/Pods/TransitionKit/Code/TKEvent.m create mode 100644 Unit-2-Journal/Pods/TransitionKit/Code/TKState.h create mode 100644 Unit-2-Journal/Pods/TransitionKit/Code/TKState.m create mode 100644 Unit-2-Journal/Pods/TransitionKit/Code/TKStateMachine.h create mode 100644 Unit-2-Journal/Pods/TransitionKit/Code/TKStateMachine.m create mode 100644 Unit-2-Journal/Pods/TransitionKit/Code/TKTransition.h create mode 100644 Unit-2-Journal/Pods/TransitionKit/Code/TKTransition.m create mode 100644 Unit-2-Journal/Pods/TransitionKit/Code/TransitionKit.h create mode 100644 Unit-2-Journal/Pods/TransitionKit/LICENSE create mode 100644 Unit-2-Journal/Pods/TransitionKit/README.md create mode 100644 Unit-2-Journal/Unit-2-Journal/.DS_Store create mode 100644 Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h create mode 100644 Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m delete mode 100644 Unit-2-Journal/Unit-2-Journal/ViewController.h delete mode 100644 Unit-2-Journal/Unit-2-Journal/ViewController.m create mode 100644 Unit-2-Journal/Unit-2-Journal/big_nerd_ranch.png create mode 100644 Unit-2-Journal/Unit-2-Journal/destroyer.png create mode 100644 Unit-2-Journal/Unit-2-Journal/drake.png create mode 100644 Unit-2-Journal/Unit-2-Journal/lean_startup.png create mode 100644 Unit-2-Journal/Unit-2-Journal/run_the_jewels.png create mode 100644 Unit-2-Journal/Unit-2-Journal/sleater_kinney.png create mode 100644 Unit-2-Journal/Unit-2-Journal/talking_heads.png create mode 100644 Unit-2-Journal/Unit-2-Journal/true_detective.png create mode 100644 Unit-2-Journal/Unit-2-Journal/x-files.png diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 41439c3d8d1824bf43e30bb7f72d6ae271849bd1..19c55b9d771e492e8bd96c9d2114b04e8540ec3f 100644 GIT binary patch delta 76 zcmZoMXffE3!OB!?I(Z$d+2jSRoXqwd`zC*2HRH?8PjN{pElFlzxC9Y$Vcak|k==4~ d9$ONV_ru9j>{gR`*yk`NOe~Ds%+B$b9{}WM8QlN? delta 76 zcmZoMXffE3!OE0lJb4|f+2jSRoXmD#o=yJ1YQ~qFpW>2IT9VAba0w#h!nj~^BD>|} dJhmhz^&OL?*sUh>u+L$1m{=IMnVsV=KL9!=8*=~v diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPClient.h b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPClient.h new file mode 100644 index 0000000..3826b6f --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPClient.h @@ -0,0 +1,641 @@ +// AFHTTPClient.h +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import "AFURLConnectionOperation.h" + +#import + +/** + `AFHTTPClient` captures the common patterns of communicating with an web application over HTTP. It encapsulates information like base URL, authorization credentials, and HTTP headers, and uses them to construct and manage the execution of HTTP request operations. + + ## Automatic Content Parsing + + Instances of `AFHTTPClient` may specify which types of requests it expects and should handle by registering HTTP operation classes for automatic parsing. Registered classes will determine whether they can handle a particular request, and then construct a request operation accordingly in `enqueueHTTPRequestOperationWithRequest:success:failure`. + + ## Subclassing Notes + + In most cases, one should create an `AFHTTPClient` subclass for each website or web application that your application communicates with. It is often useful, also, to define a class method that returns a singleton shared HTTP client in each subclass, that persists authentication credentials and other configuration across the entire application. + + ## Methods to Override + + To change the behavior of all url request construction for an `AFHTTPClient` subclass, override `requestWithMethod:path:parameters`. + + To change the behavior of all request operation construction for an `AFHTTPClient` subclass, override `HTTPRequestOperationWithRequest:success:failure`. + + ## Default Headers + + By default, `AFHTTPClient` sets the following HTTP headers: + + - `Accept-Language: (comma-delimited preferred languages), en-us;q=0.8` + - `User-Agent: (generated user agent)` + + You can override these HTTP headers or define new ones using `setDefaultHeader:value:`. + + ## URL Construction Using Relative Paths + + Both `-requestWithMethod:path:parameters:` and `-multipartFormRequestWithMethod:path:parameters:constructingBodyWithBlock:` construct URLs from the path relative to the `-baseURL`, using `NSURL +URLWithString:relativeToURL:`. Below are a few examples of how `baseURL` and relative paths interact: + + NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"]; + [NSURL URLWithString:@"foo" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL]; // http://example.com/v1/foo?bar=baz + [NSURL URLWithString:@"/foo" relativeToURL:baseURL]; // http://example.com/foo + [NSURL URLWithString:@"foo/" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"/foo/" relativeToURL:baseURL]; // http://example.com/foo/ + [NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/ + + Also important to note is that a trailing slash will be added to any `baseURL` without one, which would otherwise cause unexpected behavior when constructing URLs using paths without a leading slash. + + ## NSCoding / NSCopying Conformance + + `AFHTTPClient` conforms to the `NSCoding` and `NSCopying` protocols, allowing operations to be archived to disk, and copied in memory, respectively. There are a few minor caveats to keep in mind, however: + + - Archives and copies of HTTP clients will be initialized with an empty operation queue. + - NSCoding cannot serialize / deserialize block properties, so an archive of an HTTP client will not include any reachability callback block that may be set. + */ + +#ifdef _SYSTEMCONFIGURATION_H +typedef enum { + AFNetworkReachabilityStatusUnknown = -1, + AFNetworkReachabilityStatusNotReachable = 0, + AFNetworkReachabilityStatusReachableViaWWAN = 1, + AFNetworkReachabilityStatusReachableViaWiFi = 2, +} AFNetworkReachabilityStatus; +#else +#pragma message("SystemConfiguration framework not found in project, or not included in precompiled header. Network reachability functionality will not be available.") +#endif + +#ifndef __UTTYPE__ +#if __IPHONE_OS_VERSION_MIN_REQUIRED +#pragma message("MobileCoreServices framework not found in project, or not included in precompiled header. Automatic MIME type detection when uploading files in multipart requests will not be available.") +#else +#pragma message("CoreServices framework not found in project, or not included in precompiled header. Automatic MIME type detection when uploading files in multipart requests will not be available.") +#endif +#endif + +typedef enum { + AFFormURLParameterEncoding, + AFJSONParameterEncoding, + AFPropertyListParameterEncoding, +} AFHTTPClientParameterEncoding; + +@class AFHTTPRequestOperation; +@protocol AFMultipartFormData; + +@interface AFHTTPClient : NSObject + +///--------------------------------------- +/// @name Accessing HTTP Client Properties +///--------------------------------------- + +/** + The url used as the base for paths specified in methods such as `getPath:parameters:success:failure` + */ +@property (readonly, nonatomic, strong) NSURL *baseURL; + +/** + The string encoding used in constructing url requests. This is `NSUTF8StringEncoding` by default. + */ +@property (nonatomic, assign) NSStringEncoding stringEncoding; + +/** + The `AFHTTPClientParameterEncoding` value corresponding to how parameters are encoded into a request body for request methods other than `GET`, `HEAD` or `DELETE`. This is `AFFormURLParameterEncoding` by default. + + @warning Some nested parameter structures, such as a keyed array of hashes containing inconsistent keys (i.e. `@{@"": @[@{@"a" : @(1)}, @{@"b" : @(2)}]}`), cannot be unambiguously represented in query strings. It is strongly recommended that an unambiguous encoding, such as `AFJSONParameterEncoding`, is used when posting complicated or nondeterministic parameter structures. + */ +@property (nonatomic, assign) AFHTTPClientParameterEncoding parameterEncoding; + +/** + The operation queue which manages operations enqueued by the HTTP client. + */ +@property (readonly, nonatomic, strong) NSOperationQueue *operationQueue; + +/** + The reachability status from the device to the current `baseURL` of the `AFHTTPClient`. + + @warning This property requires the `SystemConfiguration` framework. Add it in the active target's "Link Binary With Library" build phase, and add `#import ` to the header prefix of the project (`Prefix.pch`). + */ +#ifdef _SYSTEMCONFIGURATION_H +@property (readonly, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus; +#endif + +/** + Default SSL pinning mode for each `AFHTTPRequestOperation` created by `HTTPRequestOperationWithRequest:success:failure:`. + */ +@property (nonatomic, assign) AFURLConnectionOperationSSLPinningMode defaultSSLPinningMode; + +/** + Whether each `AFHTTPRequestOperation` created by `HTTPRequestOperationWithRequest:success:failure:` should accept an invalid SSL certificate. + + If `_AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_` is set, this property defaults to `YES` for backwards compatibility. Otherwise, this property defaults to `NO`. + */ +@property (nonatomic, assign) BOOL allowsInvalidSSLCertificate; + +///--------------------------------------------- +/// @name Creating and Initializing HTTP Clients +///--------------------------------------------- + +/** + Creates and initializes an `AFHTTPClient` object with the specified base URL. + + @param url The base URL for the HTTP client. This argument must not be `nil`. + + @return The newly-initialized HTTP client + */ ++ (instancetype)clientWithBaseURL:(NSURL *)url; + +/** + Initializes an `AFHTTPClient` object with the specified base URL. + + This is the designated initializer. + + @param url The base URL for the HTTP client. This argument must not be `nil`. + + @return The newly-initialized HTTP client + */ +- (id)initWithBaseURL:(NSURL *)url; + +///----------------------------------- +/// @name Managing Reachability Status +///----------------------------------- + +/** + Sets a callback to be executed when the network availability of the `baseURL` host changes. + + @param block A block object to be executed when the network availability of the `baseURL` host changes.. This block has no return value and takes a single argument which represents the various reachability states from the device to the `baseURL`. + + @warning This method requires the `SystemConfiguration` framework. Add it in the active target's "Link Binary With Library" build phase, and add `#import ` to the header prefix of the project (`Prefix.pch`). + */ +#ifdef _SYSTEMCONFIGURATION_H +- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block; +#endif + +///------------------------------- +/// @name Managing HTTP Operations +///------------------------------- + +/** + Attempts to register a subclass of `AFHTTPRequestOperation`, adding it to a chain to automatically generate request operations from a URL request. + + When `enqueueHTTPRequestOperationWithRequest:success:failure` is invoked, each registered class is consulted in turn to see if it can handle the specific request. The first class to return `YES` when sent a `canProcessRequest:` message is used to create an operation using `initWithURLRequest:` and do `setCompletionBlockWithSuccess:failure:`. There is no guarantee that all registered classes will be consulted. Classes are consulted in the reverse order of their registration. Attempting to register an already-registered class will move it to the top of the list. + + @param operationClass The subclass of `AFHTTPRequestOperation` to register + + @return `YES` if the registration is successful, `NO` otherwise. The only failure condition is if `operationClass` is not a subclass of `AFHTTPRequestOperation`. + */ +- (BOOL)registerHTTPOperationClass:(Class)operationClass; + +/** + Unregisters the specified subclass of `AFHTTPRequestOperation` from the chain of classes consulted when `-requestWithMethod:path:parameters` is called. + + @param operationClass The subclass of `AFHTTPRequestOperation` to register + */ +- (void)unregisterHTTPOperationClass:(Class)operationClass; + +///---------------------------------- +/// @name Managing HTTP Header Values +///---------------------------------- + +/** + Returns the value for the HTTP headers set in request objects created by the HTTP client. + + @param header The HTTP header to return the default value for + + @return The default value for the HTTP header, or `nil` if unspecified + */ +- (NSString *)defaultValueForHeader:(NSString *)header; + +/** + Sets the value for the HTTP headers set in request objects made by the HTTP client. If `nil`, removes the existing value for that header. + + @param header The HTTP header to set a default value for + @param value The value set as default for the specified header, or `nil + */ +- (void)setDefaultHeader:(NSString *)header + value:(NSString *)value; + +/** + Sets the "Authorization" HTTP header set in request objects made by the HTTP client to a basic authentication value with Base64-encoded username and password. This overwrites any existing value for this header. + + @param username The HTTP basic auth username + @param password The HTTP basic auth password + */ +- (void)setAuthorizationHeaderWithUsername:(NSString *)username + password:(NSString *)password; + +/** + Sets the "Authorization" HTTP header set in request objects made by the HTTP client to a token-based authentication value, such as an OAuth access token. This overwrites any existing value for this header. + + @param token The authentication token + */ +- (void)setAuthorizationHeaderWithToken:(NSString *)token; + + +/** + Clears any existing value for the "Authorization" HTTP header. + */ +- (void)clearAuthorizationHeader; + +///------------------------------- +/// @name Managing URL Credentials +///------------------------------- + +/** + Set the default URL credential to be set for request operations. + + @param credential The URL credential + */ +- (void)setDefaultCredential:(NSURLCredential *)credential; + +///------------------------------- +/// @name Creating Request Objects +///------------------------------- + +/** + Creates an `NSMutableURLRequest` object with the specified HTTP method and path. + + If the HTTP method is `GET`, `HEAD`, or `DELETE`, the parameters will be used to construct a url-encoded query string that is appended to the request's URL. Otherwise, the parameters will be encoded according to the value of the `parameterEncoding` property, and set as the request body. + + @param method The HTTP method for the request, such as `GET`, `POST`, `PUT`, or `DELETE`. This parameter must not be `nil`. + @param path The path to be appended to the HTTP client's base URL and used as the request URL. If `nil`, no path will be appended to the base URL. + @param parameters The parameters to be either set as a query string for `GET` requests, or the request HTTP body. + + @return An `NSMutableURLRequest` object + */ +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method + path:(NSString *)path + parameters:(NSDictionary *)parameters; + +/** + Creates an `NSMutableURLRequest` object with the specified HTTP method and path, and constructs a `multipart/form-data` HTTP body, using the specified parameters and multipart form data block. See http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2 + + Multipart form requests are automatically streamed, reading files directly from disk along with in-memory data in a single HTTP body. The resulting `NSMutableURLRequest` object has an `HTTPBodyStream` property, so refrain from setting `HTTPBodyStream` or `HTTPBody` on this request object, as it will clear out the multipart form body stream. + + @param method The HTTP method for the request. This parameter must not be `GET` or `HEAD`, or `nil`. + @param path The path to be appended to the HTTP client's base URL and used as the request URL. + @param parameters The parameters to be encoded and set in the request HTTP body. + @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. This can be used to upload files, encode HTTP body as JSON or XML, or specify multiple values for the same parameter, as one might for array values. + + @return An `NSMutableURLRequest` object + */ +- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method + path:(NSString *)path + parameters:(NSDictionary *)parameters + constructingBodyWithBlock:(void (^)(id formData))block; + +///------------------------------- +/// @name Creating HTTP Operations +///------------------------------- + +/** + Creates an `AFHTTPRequestOperation`. + + In order to determine what kind of operation is created, each registered subclass conforming to the `AFHTTPClient` protocol is consulted (in reverse order of when they were specified) to see if it can handle the specific request. The first class to return `YES` when sent a `canProcessRequest:` message is used to generate an operation using `HTTPRequestOperationWithRequest:success:failure:`. + + @param urlRequest The request object to be loaded asynchronously during execution of the operation. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the created request operation and the object created from the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. + */ +- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +///---------------------------------------- +/// @name Managing Enqueued HTTP Operations +///---------------------------------------- + +/** + Enqueues an `AFHTTPRequestOperation` to the HTTP client's operation queue. + + @param operation The HTTP request operation to be enqueued. + */ +- (void)enqueueHTTPRequestOperation:(AFHTTPRequestOperation *)operation; + +/** + Cancels all operations in the HTTP client's operation queue whose URLs match the specified HTTP method and path. + + This method only cancels `AFHTTPRequestOperations` whose request URL matches the HTTP client base URL with the path appended. For complete control over the lifecycle of enqueued operations, you can access the `operationQueue` property directly, which allows you to, for instance, cancel operations filtered by a predicate, or simply use `-cancelAllRequests`. Note that the operation queue may include non-HTTP operations, so be sure to check the type before attempting to directly introspect an operation's `request` property. + + @param method The HTTP method to match for the cancelled requests, such as `GET`, `POST`, `PUT`, or `DELETE`. If `nil`, all request operations with URLs matching the path will be cancelled. + @param path The path appended to the HTTP client base URL to match against the cancelled requests. If `nil`, no path will be appended to the base URL. + */ +- (void)cancelAllHTTPOperationsWithMethod:(NSString *)method path:(NSString *)path; + +///--------------------------------------- +/// @name Batching HTTP Request Operations +///--------------------------------------- + +/** + Creates and enqueues an `AFHTTPRequestOperation` to the HTTP client's operation queue for each specified request object into a batch. When each request operation finishes, the specified progress block is executed, until all of the request operations have finished, at which point the completion block also executes. + + Operations are created by passing the specified `NSURLRequest` objects in `requests`, using `-HTTPRequestOperationWithRequest:success:failure:`, with `nil` for both the `success` and `failure` parameters. + + @param urlRequests The `NSURLRequest` objects used to create and enqueue operations. + @param progressBlock A block object to be executed upon the completion of each request operation in the batch. This block has no return value and takes two arguments: the number of operations that have already finished execution, and the total number of operations. + @param completionBlock A block object to be executed upon the completion of all of the request operations in the batch. This block has no return value and takes a single argument: the batched request operations. + */ +- (void)enqueueBatchOfHTTPRequestOperationsWithRequests:(NSArray *)urlRequests + progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock + completionBlock:(void (^)(NSArray *operations))completionBlock; + +/** + Enqueues the specified request operations into a batch. When each request operation finishes, the specified progress block is executed, until all of the request operations have finished, at which point the completion block also executes. + + @param operations The request operations used to be batched and enqueued. + @param progressBlock A block object to be executed upon the completion of each request operation in the batch. This block has no return value and takes two arguments: the number of operations that have already finished execution, and the total number of operations. + @param completionBlock A block object to be executed upon the completion of all of the request operations in the batch. This block has no return value and takes a single argument: the batched request operations. + */ +- (void)enqueueBatchOfHTTPRequestOperations:(NSArray *)operations + progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock + completionBlock:(void (^)(NSArray *operations))completionBlock; + +///--------------------------- +/// @name Making HTTP Requests +///--------------------------- + +/** + Creates an `AFHTTPRequestOperation` with a `GET` request, and enqueues it to the HTTP client's operation queue. + + @param path The path to be appended to the HTTP client's base URL and used as the request URL. + @param parameters The parameters to be encoded and appended as the query string for the request URL. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the created request operation and the object created from the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes two arguments: the created request operation and the `NSError` object describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (void)getPath:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates an `AFHTTPRequestOperation` with a `POST` request, and enqueues it to the HTTP client's operation queue. + + @param path The path to be appended to the HTTP client's base URL and used as the request URL. + @param parameters The parameters to be encoded and set in the request HTTP body. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the created request operation and the object created from the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes two arguments: the created request operation and the `NSError` object describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (void)postPath:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates an `AFHTTPRequestOperation` with a `PUT` request, and enqueues it to the HTTP client's operation queue. + + @param path The path to be appended to the HTTP client's base URL and used as the request URL. + @param parameters The parameters to be encoded and set in the request HTTP body. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the created request operation and the object created from the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes two arguments: the created request operation and the `NSError` object describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (void)putPath:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates an `AFHTTPRequestOperation` with a `DELETE` request, and enqueues it to the HTTP client's operation queue. + + @param path The path to be appended to the HTTP client's base URL and used as the request URL. + @param parameters The parameters to be encoded and appended as the query string for the request URL. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the created request operation and the object created from the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes two arguments: the created request operation and the `NSError` object describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (void)deletePath:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates an `AFHTTPRequestOperation` with a `PATCH` request, and enqueues it to the HTTP client's operation queue. + + @param path The path to be appended to the HTTP client's base URL and used as the request URL. + @param parameters The parameters to be encoded and set in the request HTTP body. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the created request operation and the object created from the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes two arguments: the created request operation and the `NSError` object describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (void)patchPath:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; +@end + +///---------------- +/// @name Constants +///---------------- + +/** + ## Network Reachability + + The following constants are provided by `AFHTTPClient` as possible network reachability statuses. + + enum { + AFNetworkReachabilityStatusUnknown, + AFNetworkReachabilityStatusNotReachable, + AFNetworkReachabilityStatusReachableViaWWAN, + AFNetworkReachabilityStatusReachableViaWiFi, + } + + `AFNetworkReachabilityStatusUnknown` + The `baseURL` host reachability is not known. + + `AFNetworkReachabilityStatusNotReachable` + The `baseURL` host cannot be reached. + + `AFNetworkReachabilityStatusReachableViaWWAN` + The `baseURL` host can be reached via a cellular connection, such as EDGE or GPRS. + + `AFNetworkReachabilityStatusReachableViaWiFi` + The `baseURL` host can be reached via a Wi-Fi connection. + + ### Keys for Notification UserInfo Dictionary + + Strings that are used as keys in a `userInfo` dictionary in a network reachability status change notification. + + `AFNetworkingReachabilityNotificationStatusItem` + A key in the userInfo dictionary in a `AFNetworkingReachabilityDidChangeNotification` notification. + The corresponding value is an `NSNumber` object representing the `AFNetworkReachabilityStatus` value for the current reachability status. + + ## Parameter Encoding + + The following constants are provided by `AFHTTPClient` as possible methods for serializing parameters into query string or message body values. + + enum { + AFFormURLParameterEncoding, + AFJSONParameterEncoding, + AFPropertyListParameterEncoding, + } + + `AFFormURLParameterEncoding` + Parameters are encoded into field/key pairs in the URL query string for `GET` `HEAD` and `DELETE` requests, and in the message body otherwise. Dictionary keys are sorted with the `caseInsensitiveCompare:` selector of their description, in order to mitigate the possibility of ambiguous query strings being generated non-deterministically. See the warning for the `parameterEncoding` property for additional information. + + `AFJSONParameterEncoding` + Parameters are encoded into JSON in the message body. + + `AFPropertyListParameterEncoding` + Parameters are encoded into a property list in the message body. + */ + +///---------------- +/// @name Functions +///---------------- + +/** + Returns a query string constructed by a set of parameters, using the specified encoding. + + Query strings are constructed by collecting each key-value pair, percent escaping a string representation of the key-value pair, and then joining the pairs with "&". + + If a query string pair has a an `NSArray` for its value, each member of the array will be represented in the format `field[]=value1&field[]value2`. Otherwise, the pair will be formatted as "field=value". String representations of both keys and values are derived using the `-description` method. The constructed query string does not include the ? character used to delimit the query component. + + @param parameters The parameters used to construct the query string + @param encoding The encoding to use in constructing the query string. If you are uncertain of the correct encoding, you should use UTF-8 (`NSUTF8StringEncoding`), which is the encoding designated by RFC 3986 as the correct encoding for use in URLs. + + @return A percent-escaped query string + */ +extern NSString * AFQueryStringFromParametersWithEncoding(NSDictionary *parameters, NSStringEncoding encoding); + +///-------------------- +/// @name Notifications +///-------------------- + +/** + Posted when network reachability changes. + This notification assigns no notification object. The `userInfo` dictionary contains an `NSNumber` object under the `AFNetworkingReachabilityNotificationStatusItem` key, representing the `AFNetworkReachabilityStatus` value for the current network reachability. + + @warning In order for network reachability to be monitored, include the `SystemConfiguration` framework in the active target's "Link Binary With Library" build phase, and add `#import ` to the header prefix of the project (`Prefix.pch`). + */ +#ifdef _SYSTEMCONFIGURATION_H +extern NSString * const AFNetworkingReachabilityDidChangeNotification; +extern NSString * const AFNetworkingReachabilityNotificationStatusItem; +#endif + +#pragma mark - + +extern NSUInteger const kAFUploadStream3GSuggestedPacketSize; +extern NSTimeInterval const kAFUploadStream3GSuggestedDelay; + +/** + The `AFMultipartFormData` protocol defines the methods supported by the parameter in the block argument of `AFHTTPClient -multipartFormRequestWithMethod:path:parameters:constructingBodyWithBlock:`. + */ +@protocol AFMultipartFormData + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{generated filename}; name=#{name}"` and `Content-Type: #{generated mimeType}`, followed by the encoded file data and the multipart form boundary. + + The filename and MIME type for this data in the form will be automatically generated, using the last path component of the `fileURL` and system associated MIME type for the `fileURL` extension, respectively. + + @param fileURL The URL corresponding to the file whose content will be appended to the form. This parameter must not be `nil`. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + @param error If an error occurs, upon return contains an `NSError` object that describes the problem. + + @return `YES` if the file data was successfully appended, otherwise `NO`. + */ +- (BOOL)appendPartWithFileURL:(NSURL *)fileURL + name:(NSString *)name + error:(NSError * __autoreleasing *)error; + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the encoded file data and the multipart form boundary. + + @param fileURL The URL corresponding to the file whose content will be appended to the form. This parameter must not be `nil`. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + @param fileName The file name to be used in the `Content-Disposition` header. This parameter must not be `nil`. + @param mimeType The declared MIME type of the file data. This parameter must not be `nil`. + @param error If an error occurs, upon return contains an `NSError` object that describes the problem. + + @return `YES` if the file data was successfully appended otherwise `NO`. + */ +- (BOOL)appendPartWithFileURL:(NSURL *)fileURL + name:(NSString *)name + fileName:(NSString *)fileName + mimeType:(NSString *)mimeType + error:(NSError * __autoreleasing *)error; + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the data from the input stream and the multipart form boundary. + + @param inputStream The input stream to be appended to the form data + @param name The name to be associated with the specified input stream. This parameter must not be `nil`. + @param fileName The filename to be associated with the specified input stream. This parameter must not be `nil`. + @param length The length of the specified input stream in bytes. + @param mimeType The MIME type of the specified data. (For example, the MIME type for a JPEG image is image/jpeg.) For a list of valid MIME types, see http://www.iana.org/assignments/media-types/. This parameter must not be `nil`. + */ +- (void)appendPartWithInputStream:(NSInputStream *)inputStream + name:(NSString *)name + fileName:(NSString *)fileName + length:(unsigned long long)length + mimeType:(NSString *)mimeType; + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the encoded file data and the multipart form boundary. + + @param data The data to be encoded and appended to the form data. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + @param fileName The filename to be associated with the specified data. This parameter must not be `nil`. + @param mimeType The MIME type of the specified data. (For example, the MIME type for a JPEG image is image/jpeg.) For a list of valid MIME types, see http://www.iana.org/assignments/media-types/. This parameter must not be `nil`. + */ +- (void)appendPartWithFileData:(NSData *)data + name:(NSString *)name + fileName:(NSString *)fileName + mimeType:(NSString *)mimeType; + +/** + Appends the HTTP headers `Content-Disposition: form-data; name=#{name}"`, followed by the encoded data and the multipart form boundary. + + @param data The data to be encoded and appended to the form data. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + */ + +- (void)appendPartWithFormData:(NSData *)data + name:(NSString *)name; + + +/** + Appends HTTP headers, followed by the encoded data and the multipart form boundary. + + @param headers The HTTP headers to be appended to the form data. + @param body The data to be encoded and appended to the form data. + */ +- (void)appendPartWithHeaders:(NSDictionary *)headers + body:(NSData *)body; + +/** + Throttles request bandwidth by limiting the packet size and adding a delay for each chunk read from the upload stream. + + When uploading over a 3G or EDGE connection, requests may fail with "request body stream exhausted". Setting a maximum packet size and delay according to the recommended values (`kAFUploadStream3GSuggestedPacketSize` and `kAFUploadStream3GSuggestedDelay`) lowers the risk of the input stream exceeding its allocated bandwidth. Unfortunately, as of iOS 6, there is no definite way to distinguish between a 3G, EDGE, or LTE connection. As such, it is not recommended that you throttle bandwidth based solely on network reachability. Instead, you should consider checking for the "request body stream exhausted" in a failure block, and then retrying the request with throttled bandwidth. + + @param numberOfBytes Maximum packet size, in number of bytes. The default packet size for an input stream is 32kb. + @param delay Duration of delay each time a packet is read. By default, no delay is set. + */ +- (void)throttleBandwidthWithPacketSize:(NSUInteger)numberOfBytes + delay:(NSTimeInterval)delay; + +@end diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPClient.m b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPClient.m new file mode 100644 index 0000000..2902e77 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPClient.m @@ -0,0 +1,1403 @@ +// AFHTTPClient.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#import "AFHTTPClient.h" +#import "AFHTTPRequestOperation.h" + +#import + +#ifdef _SYSTEMCONFIGURATION_H +#import +#import +#import +#import +#import +#endif + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import +#endif + +#ifdef _SYSTEMCONFIGURATION_H +NSString * const AFNetworkingReachabilityDidChangeNotification = @"com.alamofire.networking.reachability.change"; +NSString * const AFNetworkingReachabilityNotificationStatusItem = @"AFNetworkingReachabilityNotificationStatusItem"; + +typedef SCNetworkReachabilityRef AFNetworkReachabilityRef; +typedef void (^AFNetworkReachabilityStatusBlock)(AFNetworkReachabilityStatus status); +#else +typedef id AFNetworkReachabilityRef; +#endif + +typedef void (^AFCompletionBlock)(void); + +static NSString * AFBase64EncodedStringFromString(NSString *string) { + NSData *data = [NSData dataWithBytes:[string UTF8String] length:[string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]]; + NSUInteger length = [data length]; + NSMutableData *mutableData = [NSMutableData dataWithLength:((length + 2) / 3) * 4]; + + uint8_t *input = (uint8_t *)[data bytes]; + uint8_t *output = (uint8_t *)[mutableData mutableBytes]; + + for (NSUInteger i = 0; i < length; i += 3) { + NSUInteger value = 0; + for (NSUInteger j = i; j < (i + 3); j++) { + value <<= 8; + if (j < length) { + value |= (0xFF & input[j]); + } + } + + static uint8_t const kAFBase64EncodingTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + + NSUInteger idx = (i / 3) * 4; + output[idx + 0] = kAFBase64EncodingTable[(value >> 18) & 0x3F]; + output[idx + 1] = kAFBase64EncodingTable[(value >> 12) & 0x3F]; + output[idx + 2] = (i + 1) < length ? kAFBase64EncodingTable[(value >> 6) & 0x3F] : '='; + output[idx + 3] = (i + 2) < length ? kAFBase64EncodingTable[(value >> 0) & 0x3F] : '='; + } + + return [[NSString alloc] initWithData:mutableData encoding:NSASCIIStringEncoding]; +} + +static NSString * const kAFCharactersToBeEscapedInQueryString = @":/?&=;+!@#$()',*"; + +static NSString * AFPercentEscapedQueryStringKeyFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { + static NSString * const kAFCharactersToLeaveUnescapedInQueryStringPairKey = @"[]."; + + return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, (__bridge CFStringRef)kAFCharactersToLeaveUnescapedInQueryStringPairKey, (__bridge CFStringRef)kAFCharactersToBeEscapedInQueryString, CFStringConvertNSStringEncodingToEncoding(encoding)); +} + +static NSString * AFPercentEscapedQueryStringValueFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { + return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, NULL, (__bridge CFStringRef)kAFCharactersToBeEscapedInQueryString, CFStringConvertNSStringEncodingToEncoding(encoding)); +} + +#pragma mark - + +@interface AFQueryStringPair : NSObject +@property (readwrite, nonatomic, strong) id field; +@property (readwrite, nonatomic, strong) id value; + +- (id)initWithField:(id)field value:(id)value; + +- (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding; +@end + +@implementation AFQueryStringPair +@synthesize field = _field; +@synthesize value = _value; + +- (id)initWithField:(id)field value:(id)value { + self = [super init]; + if (!self) { + return nil; + } + + self.field = field; + self.value = value; + + return self; +} + +- (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding { + if (!self.value || [self.value isEqual:[NSNull null]]) { + return AFPercentEscapedQueryStringKeyFromStringWithEncoding([self.field description], stringEncoding); + } else { + return [NSString stringWithFormat:@"%@=%@", AFPercentEscapedQueryStringKeyFromStringWithEncoding([self.field description], stringEncoding), AFPercentEscapedQueryStringValueFromStringWithEncoding([self.value description], stringEncoding)]; + } +} + +@end + +#pragma mark - + +extern NSArray * AFQueryStringPairsFromDictionary(NSDictionary *dictionary); +extern NSArray * AFQueryStringPairsFromKeyAndValue(NSString *key, id value); + +NSString * AFQueryStringFromParametersWithEncoding(NSDictionary *parameters, NSStringEncoding stringEncoding) { + NSMutableArray *mutablePairs = [NSMutableArray array]; + for (AFQueryStringPair *pair in AFQueryStringPairsFromDictionary(parameters)) { + [mutablePairs addObject:[pair URLEncodedStringValueWithEncoding:stringEncoding]]; + } + + return [mutablePairs componentsJoinedByString:@"&"]; +} + +NSArray * AFQueryStringPairsFromDictionary(NSDictionary *dictionary) { + return AFQueryStringPairsFromKeyAndValue(nil, dictionary); +} + +NSArray * AFQueryStringPairsFromKeyAndValue(NSString *key, id value) { + NSMutableArray *mutableQueryStringComponents = [NSMutableArray array]; + + if ([value isKindOfClass:[NSDictionary class]]) { + NSDictionary *dictionary = value; + // Sort dictionary keys to ensure consistent ordering in query string, which is important when deserializing potentially ambiguous sequences, such as an array of dictionaries + NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES selector:@selector(caseInsensitiveCompare:)]; + for (id nestedKey in [dictionary.allKeys sortedArrayUsingDescriptors:@[ sortDescriptor ]]) { + id nestedValue = [dictionary objectForKey:nestedKey]; + if (nestedValue) { + [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue((key ? [NSString stringWithFormat:@"%@[%@]", key, nestedKey] : nestedKey), nestedValue)]; + } + } + } else if ([value isKindOfClass:[NSArray class]]) { + NSArray *array = value; + for (id nestedValue in array) { + [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue([NSString stringWithFormat:@"%@[]", key], nestedValue)]; + } + } else if ([value isKindOfClass:[NSSet class]]) { + NSSet *set = value; + for (id obj in set) { + [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue(key, obj)]; + } + } else { + [mutableQueryStringComponents addObject:[[AFQueryStringPair alloc] initWithField:key value:value]]; + } + + return mutableQueryStringComponents; +} + +@interface AFStreamingMultipartFormData : NSObject +- (id)initWithURLRequest:(NSMutableURLRequest *)urlRequest + stringEncoding:(NSStringEncoding)encoding; + +- (NSMutableURLRequest *)requestByFinalizingMultipartFormData; +@end + +#pragma mark - + +@interface AFHTTPClient () +@property (readwrite, nonatomic, strong) NSURL *baseURL; +@property (readwrite, nonatomic, strong) NSMutableArray *registeredHTTPOperationClassNames; +@property (readwrite, nonatomic, strong) NSMutableDictionary *defaultHeaders; +@property (readwrite, nonatomic, strong) NSURLCredential *defaultCredential; +@property (readwrite, nonatomic, strong) NSOperationQueue *operationQueue; +#ifdef _SYSTEMCONFIGURATION_H +@property (readwrite, nonatomic, assign) AFNetworkReachabilityRef networkReachability; +@property (readwrite, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus; +@property (readwrite, nonatomic, copy) AFNetworkReachabilityStatusBlock networkReachabilityStatusBlock; +#endif + +#ifdef _SYSTEMCONFIGURATION_H +- (void)startMonitoringNetworkReachability; +- (void)stopMonitoringNetworkReachability; +#endif +@end + +@implementation AFHTTPClient +@synthesize baseURL = _baseURL; +@synthesize stringEncoding = _stringEncoding; +@synthesize parameterEncoding = _parameterEncoding; +@synthesize registeredHTTPOperationClassNames = _registeredHTTPOperationClassNames; +@synthesize defaultHeaders = _defaultHeaders; +@synthesize defaultCredential = _defaultCredential; +@synthesize operationQueue = _operationQueue; +#ifdef _SYSTEMCONFIGURATION_H +@synthesize networkReachability = _networkReachability; +@synthesize networkReachabilityStatus = _networkReachabilityStatus; +@synthesize networkReachabilityStatusBlock = _networkReachabilityStatusBlock; +#endif +@synthesize defaultSSLPinningMode = _defaultSSLPinningMode; +@synthesize allowsInvalidSSLCertificate = _allowsInvalidSSLCertificate; + ++ (instancetype)clientWithBaseURL:(NSURL *)url { + return [[self alloc] initWithBaseURL:url]; +} + +- (id)init { + @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:[NSString stringWithFormat:@"%@ Failed to call designated initializer. Invoke `initWithBaseURL:` instead.", NSStringFromClass([self class])] userInfo:nil]; +} + +- (id)initWithBaseURL:(NSURL *)url { + NSParameterAssert(url); + + self = [super init]; + if (!self) { + return nil; + } + + // Ensure terminal slash for baseURL path, so that NSURL +URLWithString:relativeToURL: works as expected + if ([[url path] length] > 0 && ![[url absoluteString] hasSuffix:@"/"]) { + url = [url URLByAppendingPathComponent:@""]; + } + + self.baseURL = url; + + self.stringEncoding = NSUTF8StringEncoding; + self.parameterEncoding = AFFormURLParameterEncoding; + + self.registeredHTTPOperationClassNames = [NSMutableArray array]; + + self.defaultHeaders = [NSMutableDictionary dictionary]; + + // Accept-Language HTTP Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4 + NSMutableArray *acceptLanguagesComponents = [NSMutableArray array]; + [[NSLocale preferredLanguages] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + float q = 1.0f - (idx * 0.1f); + [acceptLanguagesComponents addObject:[NSString stringWithFormat:@"%@;q=%0.1g", obj, q]]; + *stop = q <= 0.5f; + }]; + [self setDefaultHeader:@"Accept-Language" value:[acceptLanguagesComponents componentsJoinedByString:@", "]]; + + NSString *userAgent = nil; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + // User-Agent Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 + userAgent = [NSString stringWithFormat:@"%@/%@ (%@; iOS %@; Scale/%0.2f)", [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleExecutableKey] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleIdentifierKey], (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey) ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleVersionKey], [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion], ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] ? [[UIScreen mainScreen] scale] : 1.0f)]; +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) + userAgent = [NSString stringWithFormat:@"%@/%@ (Mac OS X %@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleExecutableKey] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleIdentifierKey], [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleVersionKey], [[NSProcessInfo processInfo] operatingSystemVersionString]]; +#endif +#pragma clang diagnostic pop + if (userAgent) { + if (![userAgent canBeConvertedToEncoding:NSASCIIStringEncoding]) { + NSMutableString *mutableUserAgent = [userAgent mutableCopy]; + if (CFStringTransform((__bridge CFMutableStringRef)(mutableUserAgent), NULL, kCFStringTransformToLatin, false)) { + userAgent = mutableUserAgent; + } + } + [self setDefaultHeader:@"User-Agent" value:userAgent]; + } + +#ifdef _SYSTEMCONFIGURATION_H + self.networkReachabilityStatus = AFNetworkReachabilityStatusUnknown; + [self startMonitoringNetworkReachability]; +#endif + + self.operationQueue = [[NSOperationQueue alloc] init]; + [self.operationQueue setMaxConcurrentOperationCount:NSOperationQueueDefaultMaxConcurrentOperationCount]; + + // #ifdef included for backwards-compatibility +#ifdef _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_ + self.allowsInvalidSSLCertificate = YES; +#endif + + return self; +} + +- (void)dealloc { +#ifdef _SYSTEMCONFIGURATION_H + [self stopMonitoringNetworkReachability]; +#endif +} + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, baseURL: %@, defaultHeaders: %@, registeredOperationClasses: %@, operationQueue: %@>", NSStringFromClass([self class]), self, [self.baseURL absoluteString], self.defaultHeaders, self.registeredHTTPOperationClassNames, self.operationQueue]; +} + +#pragma mark - + +#ifdef _SYSTEMCONFIGURATION_H +static BOOL AFURLHostIsIPAddress(NSURL *url) { + struct sockaddr_in sa_in; + struct sockaddr_in6 sa_in6; + + return [url host] && (inet_pton(AF_INET, [[url host] UTF8String], &sa_in) == 1 || inet_pton(AF_INET6, [[url host] UTF8String], &sa_in6) == 1); +} + +static AFNetworkReachabilityStatus AFNetworkReachabilityStatusForFlags(SCNetworkReachabilityFlags flags) { + BOOL isReachable = ((flags & kSCNetworkReachabilityFlagsReachable) != 0); + BOOL needsConnection = ((flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0); + BOOL canConnectionAutomatically = (((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) || ((flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0)); + BOOL canConnectWithoutUserInteraction = (canConnectionAutomatically && (flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0); + BOOL isNetworkReachable = (isReachable && (!needsConnection || canConnectWithoutUserInteraction)); + + AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusUnknown; + if (isNetworkReachable == NO) { + status = AFNetworkReachabilityStatusNotReachable; + } +#if TARGET_OS_IPHONE + else if ((flags & kSCNetworkReachabilityFlagsIsWWAN) != 0) { + status = AFNetworkReachabilityStatusReachableViaWWAN; + } +#endif + else { + status = AFNetworkReachabilityStatusReachableViaWiFi; + } + + return status; +} + +static void AFNetworkReachabilityCallback(SCNetworkReachabilityRef __unused target, SCNetworkReachabilityFlags flags, void *info) { + AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags); + AFNetworkReachabilityStatusBlock block = (__bridge AFNetworkReachabilityStatusBlock)info; + if (block) { + block(status); + } + + dispatch_async(dispatch_get_main_queue(), ^{ + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + [notificationCenter postNotificationName:AFNetworkingReachabilityDidChangeNotification object:nil userInfo:[NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:status] forKey:AFNetworkingReachabilityNotificationStatusItem]]; + }); +} + +static const void * AFNetworkReachabilityRetainCallback(const void *info) { + return Block_copy(info); +} + +static void AFNetworkReachabilityReleaseCallback(const void *info) { + if (info) { + Block_release(info); + } +} + +- (void)startMonitoringNetworkReachability { + [self stopMonitoringNetworkReachability]; + + if (!self.baseURL) { + return; + } + + self.networkReachability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, [[self.baseURL host] UTF8String]); + + if (!self.networkReachability) { + return; + } + + __weak __typeof(&*self)weakSelf = self; + AFNetworkReachabilityStatusBlock callback = ^(AFNetworkReachabilityStatus status) { + __strong __typeof(&*weakSelf)strongSelf = weakSelf; + if (!strongSelf) { + return; + } + + strongSelf.networkReachabilityStatus = status; + if (strongSelf.networkReachabilityStatusBlock) { + strongSelf.networkReachabilityStatusBlock(status); + } + }; + + SCNetworkReachabilityContext context = {0, (__bridge void *)callback, AFNetworkReachabilityRetainCallback, AFNetworkReachabilityReleaseCallback, NULL}; + SCNetworkReachabilitySetCallback(self.networkReachability, AFNetworkReachabilityCallback, &context); + + /* Network reachability monitoring does not establish a baseline for IP addresses as it does for hostnames, so if the base URL host is an IP address, the initial reachability callback is manually triggered. + */ + if (AFURLHostIsIPAddress(self.baseURL)) { + SCNetworkReachabilityFlags flags; + SCNetworkReachabilityGetFlags(self.networkReachability, &flags); + dispatch_async(dispatch_get_main_queue(), ^{ + AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags); + callback(status); + }); + } + + SCNetworkReachabilityScheduleWithRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); +} + +- (void)stopMonitoringNetworkReachability { + if (self.networkReachability) { + SCNetworkReachabilityUnscheduleFromRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); + + CFRelease(_networkReachability); + _networkReachability = NULL; + } +} + +- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block { + self.networkReachabilityStatusBlock = block; +} +#endif + +#pragma mark - + +- (BOOL)registerHTTPOperationClass:(Class)operationClass { + if (![operationClass isSubclassOfClass:[AFHTTPRequestOperation class]]) { + return NO; + } + + NSString *className = NSStringFromClass(operationClass); + [self.registeredHTTPOperationClassNames removeObject:className]; + [self.registeredHTTPOperationClassNames insertObject:className atIndex:0]; + + return YES; +} + +- (void)unregisterHTTPOperationClass:(Class)operationClass { + NSString *className = NSStringFromClass(operationClass); + [self.registeredHTTPOperationClassNames removeObject:className]; +} + +#pragma mark - + +- (NSString *)defaultValueForHeader:(NSString *)header { + return [self.defaultHeaders valueForKey:header]; +} + +- (void)setDefaultHeader:(NSString *)header value:(NSString *)value { + [self.defaultHeaders setValue:value forKey:header]; +} + +- (void)setAuthorizationHeaderWithUsername:(NSString *)username password:(NSString *)password { + NSString *basicAuthCredentials = [NSString stringWithFormat:@"%@:%@", username, password]; + [self setDefaultHeader:@"Authorization" value:[NSString stringWithFormat:@"Basic %@", AFBase64EncodedStringFromString(basicAuthCredentials)]]; +} + +- (void)setAuthorizationHeaderWithToken:(NSString *)token { + [self setDefaultHeader:@"Authorization" value:[NSString stringWithFormat:@"Token token=\"%@\"", token]]; +} + +- (void)clearAuthorizationHeader { + [self.defaultHeaders removeObjectForKey:@"Authorization"]; +} + +#pragma mark - + +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method + path:(NSString *)path + parameters:(NSDictionary *)parameters +{ + NSParameterAssert(method); + + if (!path) { + path = @""; + } + + NSURL *url = [NSURL URLWithString:path relativeToURL:self.baseURL]; + NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; + [request setHTTPMethod:method]; + [request setAllHTTPHeaderFields:self.defaultHeaders]; + + if (parameters) { + if ([method isEqualToString:@"GET"] || [method isEqualToString:@"HEAD"] || [method isEqualToString:@"DELETE"]) { + url = [NSURL URLWithString:[[url absoluteString] stringByAppendingFormat:[path rangeOfString:@"?"].location == NSNotFound ? @"?%@" : @"&%@", AFQueryStringFromParametersWithEncoding(parameters, self.stringEncoding)]]; + [request setURL:url]; + } else { + NSString *charset = (__bridge NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(self.stringEncoding)); + NSError *error = nil; + + switch (self.parameterEncoding) { + case AFFormURLParameterEncoding:; + [request setValue:[NSString stringWithFormat:@"application/x-www-form-urlencoded; charset=%@", charset] forHTTPHeaderField:@"Content-Type"]; + [request setHTTPBody:[AFQueryStringFromParametersWithEncoding(parameters, self.stringEncoding) dataUsingEncoding:self.stringEncoding]]; + break; + case AFJSONParameterEncoding:; + [request setValue:[NSString stringWithFormat:@"application/json; charset=%@", charset] forHTTPHeaderField:@"Content-Type"]; + [request setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:(NSJSONWritingOptions)0 error:&error]]; + break; + case AFPropertyListParameterEncoding:; + [request setValue:[NSString stringWithFormat:@"application/x-plist; charset=%@", charset] forHTTPHeaderField:@"Content-Type"]; + [request setHTTPBody:[NSPropertyListSerialization dataWithPropertyList:parameters format:NSPropertyListXMLFormat_v1_0 options:0 error:&error]]; + break; + } + + if (error) { + NSLog(@"%@ %@: %@", [self class], NSStringFromSelector(_cmd), error); + } + } + } + + return request; +} + +- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method + path:(NSString *)path + parameters:(NSDictionary *)parameters + constructingBodyWithBlock:(void (^)(id formData))block +{ + NSParameterAssert(method); + NSParameterAssert(![method isEqualToString:@"GET"] && ![method isEqualToString:@"HEAD"]); + + NSMutableURLRequest *request = [self requestWithMethod:method path:path parameters:nil]; + + __block AFStreamingMultipartFormData *formData = [[AFStreamingMultipartFormData alloc] initWithURLRequest:request stringEncoding:self.stringEncoding]; + + if (parameters) { + for (AFQueryStringPair *pair in AFQueryStringPairsFromDictionary(parameters)) { + NSData *data = nil; + if ([pair.value isKindOfClass:[NSData class]]) { + data = pair.value; + } else if ([pair.value isEqual:[NSNull null]]) { + data = [NSData data]; + } else { + data = [[pair.value description] dataUsingEncoding:self.stringEncoding]; + } + + if (data) { + [formData appendPartWithFormData:data name:[pair.field description]]; + } + } + } + + if (block) { + block(formData); + } + + return [formData requestByFinalizingMultipartFormData]; +} + +- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = nil; + + for (NSString *className in self.registeredHTTPOperationClassNames) { + Class operationClass = NSClassFromString(className); + if (operationClass && [operationClass canProcessRequest:urlRequest]) { + operation = [(AFHTTPRequestOperation *)[operationClass alloc] initWithRequest:urlRequest]; + break; + } + } + + if (!operation) { + operation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; + } + + [operation setCompletionBlockWithSuccess:success failure:failure]; + + operation.credential = self.defaultCredential; + operation.SSLPinningMode = self.defaultSSLPinningMode; + operation.allowsInvalidSSLCertificate = self.allowsInvalidSSLCertificate; + + return operation; +} + +#pragma mark - + +- (void)enqueueHTTPRequestOperation:(AFHTTPRequestOperation *)operation { + [self.operationQueue addOperation:operation]; +} + +- (void)cancelAllHTTPOperationsWithMethod:(NSString *)method + path:(NSString *)path +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + NSString *pathToBeMatched = [[[self requestWithMethod:(method ?: @"GET") path:path parameters:nil] URL] path]; +#pragma clang diagnostic pop + + for (NSOperation *operation in [self.operationQueue operations]) { + if (![operation isKindOfClass:[AFHTTPRequestOperation class]]) { + continue; + } + + BOOL hasMatchingMethod = !method || [method isEqualToString:[[(AFHTTPRequestOperation *)operation request] HTTPMethod]]; + BOOL hasMatchingPath = [[[[(AFHTTPRequestOperation *)operation request] URL] path] isEqual:pathToBeMatched]; + + if (hasMatchingMethod && hasMatchingPath) { + [operation cancel]; + } + } +} + +- (void)enqueueBatchOfHTTPRequestOperationsWithRequests:(NSArray *)urlRequests + progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock + completionBlock:(void (^)(NSArray *operations))completionBlock +{ + NSMutableArray *mutableOperations = [NSMutableArray array]; + for (NSURLRequest *request in urlRequests) { + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:nil failure:nil]; + [mutableOperations addObject:operation]; + } + + [self enqueueBatchOfHTTPRequestOperations:mutableOperations progressBlock:progressBlock completionBlock:completionBlock]; +} + +- (void)enqueueBatchOfHTTPRequestOperations:(NSArray *)operations + progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock + completionBlock:(void (^)(NSArray *operations))completionBlock +{ + __block dispatch_group_t dispatchGroup = dispatch_group_create(); + NSBlockOperation *batchedOperation = [NSBlockOperation blockOperationWithBlock:^{ + dispatch_group_notify(dispatchGroup, dispatch_get_main_queue(), ^{ + if (completionBlock) { + completionBlock(operations); + } + }); +#if !OS_OBJECT_USE_OBJC + dispatch_release(dispatchGroup); +#endif + }]; + + for (AFHTTPRequestOperation *operation in operations) { + AFCompletionBlock originalCompletionBlock = [operation.completionBlock copy]; + __weak __typeof(&*operation)weakOperation = operation; + operation.completionBlock = ^{ + __strong __typeof(&*weakOperation)strongOperation = weakOperation; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + dispatch_queue_t queue = strongOperation.successCallbackQueue ?: dispatch_get_main_queue(); +#pragma clang diagnostic pop + dispatch_group_async(dispatchGroup, queue, ^{ + if (originalCompletionBlock) { + originalCompletionBlock(); + } + + NSUInteger numberOfFinishedOperations = [[operations indexesOfObjectsPassingTest:^BOOL(id op, NSUInteger __unused idx, BOOL __unused *stop) { + return [op isFinished]; + }] count]; + + if (progressBlock) { + progressBlock(numberOfFinishedOperations, [operations count]); + } + + dispatch_group_leave(dispatchGroup); + }); + }; + + dispatch_group_enter(dispatchGroup); + [batchedOperation addDependency:operation]; + } + [self.operationQueue addOperations:operations waitUntilFinished:NO]; + [self.operationQueue addOperation:batchedOperation]; +} + +#pragma mark - + +- (void)getPath:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + NSURLRequest *request = [self requestWithMethod:@"GET" path:path parameters:parameters]; + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; + [self enqueueHTTPRequestOperation:operation]; +} + +- (void)postPath:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + NSURLRequest *request = [self requestWithMethod:@"POST" path:path parameters:parameters]; + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; + [self enqueueHTTPRequestOperation:operation]; +} + +- (void)putPath:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + NSURLRequest *request = [self requestWithMethod:@"PUT" path:path parameters:parameters]; + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; + [self enqueueHTTPRequestOperation:operation]; +} + +- (void)deletePath:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + NSURLRequest *request = [self requestWithMethod:@"DELETE" path:path parameters:parameters]; + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; + [self enqueueHTTPRequestOperation:operation]; +} + +- (void)patchPath:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + NSURLRequest *request = [self requestWithMethod:@"PATCH" path:path parameters:parameters]; + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; + [self enqueueHTTPRequestOperation:operation]; +} + +#pragma mark - NSCoding + +- (id)initWithCoder:(NSCoder *)aDecoder { + NSURL *baseURL = [aDecoder decodeObjectForKey:@"baseURL"]; + + self = [self initWithBaseURL:baseURL]; + if (!self) { + return nil; + } + + self.stringEncoding = [aDecoder decodeIntegerForKey:@"stringEncoding"]; + self.parameterEncoding = (AFHTTPClientParameterEncoding) [aDecoder decodeIntegerForKey:@"parameterEncoding"]; + self.registeredHTTPOperationClassNames = [aDecoder decodeObjectForKey:@"registeredHTTPOperationClassNames"]; + self.defaultHeaders = [aDecoder decodeObjectForKey:@"defaultHeaders"]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:self.baseURL forKey:@"baseURL"]; + [aCoder encodeInteger:(NSInteger)self.stringEncoding forKey:@"stringEncoding"]; + [aCoder encodeInteger:self.parameterEncoding forKey:@"parameterEncoding"]; + [aCoder encodeObject:self.registeredHTTPOperationClassNames forKey:@"registeredHTTPOperationClassNames"]; + [aCoder encodeObject:self.defaultHeaders forKey:@"defaultHeaders"]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFHTTPClient *HTTPClient = [[[self class] allocWithZone:zone] initWithBaseURL:self.baseURL]; + + HTTPClient.stringEncoding = self.stringEncoding; + HTTPClient.parameterEncoding = self.parameterEncoding; + HTTPClient.registeredHTTPOperationClassNames = [self.registeredHTTPOperationClassNames mutableCopyWithZone:zone]; + HTTPClient.defaultHeaders = [self.defaultHeaders mutableCopyWithZone:zone]; +#ifdef _SYSTEMCONFIGURATION_H + HTTPClient.networkReachabilityStatusBlock = self.networkReachabilityStatusBlock; +#endif + return HTTPClient; +} + +@end + +#pragma mark - + +static NSString * AFCreateMultipartFormBoundary() { + return [NSString stringWithFormat:@"Boundary+%08X%08X", arc4random(), arc4random()]; +} + +static NSString * const kAFMultipartFormCRLF = @"\r\n"; + +static inline NSString * AFMultipartFormInitialBoundary(NSString *boundary) { + return [NSString stringWithFormat:@"--%@%@", boundary, kAFMultipartFormCRLF]; +} + +static inline NSString * AFMultipartFormEncapsulationBoundary(NSString *boundary) { + return [NSString stringWithFormat:@"%@--%@%@", kAFMultipartFormCRLF, boundary, kAFMultipartFormCRLF]; +} + +static inline NSString * AFMultipartFormFinalBoundary(NSString *boundary) { + return [NSString stringWithFormat:@"%@--%@--%@", kAFMultipartFormCRLF, boundary, kAFMultipartFormCRLF]; +} + +static inline NSString * AFContentTypeForPathExtension(NSString *extension) { +#ifdef __UTTYPE__ + NSString *UTI = (__bridge_transfer NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)extension, NULL); + NSString *contentType = (__bridge_transfer NSString *)UTTypeCopyPreferredTagWithClass((__bridge CFStringRef)UTI, kUTTagClassMIMEType); + if (!contentType) { + return @"application/octet-stream"; + } else { + return contentType; + } +#else + return @"application/octet-stream"; +#endif +} + +NSUInteger const kAFUploadStream3GSuggestedPacketSize = 1024 * 16; +NSTimeInterval const kAFUploadStream3GSuggestedDelay = 0.2; + +@interface AFHTTPBodyPart : NSObject +@property (nonatomic, assign) NSStringEncoding stringEncoding; +@property (nonatomic, strong) NSDictionary *headers; +@property (nonatomic, strong) id body; +@property (nonatomic, assign) unsigned long long bodyContentLength; +@property (nonatomic, strong) NSInputStream *inputStream; + +@property (nonatomic, copy) NSString *boundary; +@property (nonatomic, assign) BOOL hasInitialBoundary; +@property (nonatomic, assign) BOOL hasFinalBoundary; + +@property (nonatomic, readonly, getter = hasBytesAvailable) BOOL bytesAvailable; +@property (nonatomic, readonly) unsigned long long contentLength; + +- (NSInteger)read:(uint8_t *)buffer + maxLength:(NSUInteger)length; +@end + +@interface AFMultipartBodyStream : NSInputStream +@property (nonatomic, assign) NSUInteger numberOfBytesInPacket; +@property (nonatomic, assign) NSTimeInterval delay; +@property (nonatomic, strong) NSInputStream *inputStream; +@property (nonatomic, readonly) unsigned long long contentLength; +@property (nonatomic, readonly, getter = isEmpty) BOOL empty; + +- (id)initWithStringEncoding:(NSStringEncoding)encoding; +- (void)setInitialAndFinalBoundaries; +- (void)appendHTTPBodyPart:(AFHTTPBodyPart *)bodyPart; +@end + +#pragma mark - + +@interface AFStreamingMultipartFormData () +@property (readwrite, nonatomic, copy) NSMutableURLRequest *request; +@property (nonatomic, copy) NSString *boundary; +@property (readwrite, nonatomic, strong) AFMultipartBodyStream *bodyStream; +@property (readwrite, nonatomic, assign) NSStringEncoding stringEncoding; +@end + +@implementation AFStreamingMultipartFormData +@synthesize request = _request; +@synthesize bodyStream = _bodyStream; +@synthesize stringEncoding = _stringEncoding; + +- (id)initWithURLRequest:(NSMutableURLRequest *)urlRequest + stringEncoding:(NSStringEncoding)encoding +{ + self = [super init]; + if (!self) { + return nil; + } + + self.request = urlRequest; + self.stringEncoding = encoding; + self.boundary = AFCreateMultipartFormBoundary(); + self.bodyStream = [[AFMultipartBodyStream alloc] initWithStringEncoding:encoding]; + + return self; +} + +- (BOOL)appendPartWithFileURL:(NSURL *)fileURL + name:(NSString *)name + error:(NSError * __autoreleasing *)error +{ + NSParameterAssert(fileURL); + NSParameterAssert(name); + + NSString *fileName = [fileURL lastPathComponent]; + NSString *mimeType = AFContentTypeForPathExtension([fileURL pathExtension]); + + return [self appendPartWithFileURL:fileURL name:name fileName:fileName mimeType:mimeType error:error]; +} + +- (BOOL)appendPartWithFileURL:(NSURL *)fileURL + name:(NSString *)name + fileName:(NSString *)fileName + mimeType:(NSString *)mimeType + error:(NSError * __autoreleasing *)error +{ + NSParameterAssert(fileURL); + NSParameterAssert(name); + NSParameterAssert(fileName); + NSParameterAssert(mimeType); + + if (![fileURL isFileURL]) { + NSDictionary *userInfo = [NSDictionary dictionaryWithObject:NSLocalizedStringFromTable(@"Expected URL to be a file URL", @"AFNetworking", nil) forKey:NSLocalizedFailureReasonErrorKey]; + if (error != NULL) { + *error = [[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorBadURL userInfo:userInfo]; + } + + return NO; + } else if ([fileURL checkResourceIsReachableAndReturnError:error] == NO) { + NSDictionary *userInfo = [NSDictionary dictionaryWithObject:NSLocalizedStringFromTable(@"File URL not reachable.", @"AFNetworking", nil) forKey:NSLocalizedFailureReasonErrorKey]; + if (error != NULL) { + *error = [[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorBadURL userInfo:userInfo]; + } + + return NO; + } + + NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; + [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"; filename=\"%@\"", name, fileName] forKey:@"Content-Disposition"]; + [mutableHeaders setValue:mimeType forKey:@"Content-Type"]; + + AFHTTPBodyPart *bodyPart = [[AFHTTPBodyPart alloc] init]; + bodyPart.stringEncoding = self.stringEncoding; + bodyPart.headers = mutableHeaders; + bodyPart.boundary = self.boundary; + bodyPart.body = fileURL; + + NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[fileURL path] error:nil]; + bodyPart.bodyContentLength = [[fileAttributes objectForKey:NSFileSize] unsignedLongLongValue]; + + [self.bodyStream appendHTTPBodyPart:bodyPart]; + + return YES; +} + + +- (void)appendPartWithInputStream:(NSInputStream *)inputStream + name:(NSString *)name + fileName:(NSString *)fileName + length:(unsigned long long)length + mimeType:(NSString *)mimeType +{ + NSParameterAssert(name); + NSParameterAssert(fileName); + NSParameterAssert(mimeType); + + NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; + [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"; filename=\"%@\"", name, fileName] forKey:@"Content-Disposition"]; + [mutableHeaders setValue:mimeType forKey:@"Content-Type"]; + + + AFHTTPBodyPart *bodyPart = [[AFHTTPBodyPart alloc] init]; + bodyPart.stringEncoding = self.stringEncoding; + bodyPart.headers = mutableHeaders; + bodyPart.boundary = self.boundary; + bodyPart.body = inputStream; + + bodyPart.bodyContentLength = length; + + [self.bodyStream appendHTTPBodyPart:bodyPart]; +} + +- (void)appendPartWithFileData:(NSData *)data + name:(NSString *)name + fileName:(NSString *)fileName + mimeType:(NSString *)mimeType +{ + NSParameterAssert(name); + NSParameterAssert(fileName); + NSParameterAssert(mimeType); + + NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; + [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"; filename=\"%@\"", name, fileName] forKey:@"Content-Disposition"]; + [mutableHeaders setValue:mimeType forKey:@"Content-Type"]; + + [self appendPartWithHeaders:mutableHeaders body:data]; +} + +- (void)appendPartWithFormData:(NSData *)data + name:(NSString *)name +{ + NSParameterAssert(name); + + NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; + [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"", name] forKey:@"Content-Disposition"]; + + [self appendPartWithHeaders:mutableHeaders body:data]; +} + +- (void)appendPartWithHeaders:(NSDictionary *)headers + body:(NSData *)body +{ + NSParameterAssert(body); + + AFHTTPBodyPart *bodyPart = [[AFHTTPBodyPart alloc] init]; + bodyPart.stringEncoding = self.stringEncoding; + bodyPart.headers = headers; + bodyPart.boundary = self.boundary; + bodyPart.bodyContentLength = [body length]; + bodyPart.body = body; + + [self.bodyStream appendHTTPBodyPart:bodyPart]; +} + +- (void)throttleBandwidthWithPacketSize:(NSUInteger)numberOfBytes + delay:(NSTimeInterval)delay +{ + self.bodyStream.numberOfBytesInPacket = numberOfBytes; + self.bodyStream.delay = delay; +} + +- (NSMutableURLRequest *)requestByFinalizingMultipartFormData { + if ([self.bodyStream isEmpty]) { + return self.request; + } + + // Reset the initial and final boundaries to ensure correct Content-Length + [self.bodyStream setInitialAndFinalBoundaries]; + + [self.request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", self.boundary] forHTTPHeaderField:@"Content-Type"]; + [self.request setValue:[NSString stringWithFormat:@"%llu", [self.bodyStream contentLength]] forHTTPHeaderField:@"Content-Length"]; + [self.request setHTTPBodyStream:self.bodyStream]; + + return self.request; +} + +@end + +#pragma mark - + +@interface AFMultipartBodyStream () +@property (nonatomic, assign) NSStreamStatus streamStatus; +@property (nonatomic, strong) NSError *streamError; +@property (nonatomic, assign) NSStringEncoding stringEncoding; +@property (nonatomic, strong) NSMutableArray *HTTPBodyParts; +@property (nonatomic, strong) NSEnumerator *HTTPBodyPartEnumerator; +@property (nonatomic, strong) AFHTTPBodyPart *currentHTTPBodyPart; +@property (nonatomic, strong) NSOutputStream *outputStream; +@property (nonatomic, strong) NSMutableData *buffer; +@end + +@implementation AFMultipartBodyStream +@synthesize streamStatus = _streamStatus; +@synthesize streamError = _streamError; +@synthesize stringEncoding = _stringEncoding; +@synthesize HTTPBodyParts = _HTTPBodyParts; +@synthesize HTTPBodyPartEnumerator = _HTTPBodyPartEnumerator; +@synthesize currentHTTPBodyPart = _currentHTTPBodyPart; +@synthesize inputStream = _inputStream; +@synthesize outputStream = _outputStream; +@synthesize buffer = _buffer; +@synthesize numberOfBytesInPacket = _numberOfBytesInPacket; +@synthesize delay = _delay; + +- (id)initWithStringEncoding:(NSStringEncoding)encoding { + self = [super init]; + if (!self) { + return nil; + } + + self.stringEncoding = encoding; + self.HTTPBodyParts = [NSMutableArray array]; + self.numberOfBytesInPacket = NSIntegerMax; + + return self; +} + +- (void)setInitialAndFinalBoundaries { + if ([self.HTTPBodyParts count] > 0) { + for (AFHTTPBodyPart *bodyPart in self.HTTPBodyParts) { + bodyPart.hasInitialBoundary = NO; + bodyPart.hasFinalBoundary = NO; + } + + [[self.HTTPBodyParts objectAtIndex:0] setHasInitialBoundary:YES]; + [[self.HTTPBodyParts lastObject] setHasFinalBoundary:YES]; + } +} + +- (void)appendHTTPBodyPart:(AFHTTPBodyPart *)bodyPart { + [self.HTTPBodyParts addObject:bodyPart]; +} + +- (BOOL)isEmpty { + return [self.HTTPBodyParts count] == 0; +} + +#pragma mark - NSInputStream + +- (NSInteger)read:(uint8_t *)buffer + maxLength:(NSUInteger)length +{ + if ([self streamStatus] == NSStreamStatusClosed) { + return 0; + } + + NSInteger totalNumberOfBytesRead = 0; + + while ((NSUInteger)totalNumberOfBytesRead < MIN(length, self.numberOfBytesInPacket)) { + if (!self.currentHTTPBodyPart || ![self.currentHTTPBodyPart hasBytesAvailable]) { + if (!(self.currentHTTPBodyPart = [self.HTTPBodyPartEnumerator nextObject])) { + break; + } + } else { + NSUInteger maxLength = length - (NSUInteger)totalNumberOfBytesRead; + NSInteger numberOfBytesRead = [self.currentHTTPBodyPart read:&buffer[totalNumberOfBytesRead] maxLength:maxLength]; + if (numberOfBytesRead == -1) { + self.streamError = self.currentHTTPBodyPart.inputStream.streamError; + break; + } else { + totalNumberOfBytesRead += numberOfBytesRead; + + if (self.delay > 0.0f) { + [NSThread sleepForTimeInterval:self.delay]; + } + } + } + } + + return totalNumberOfBytesRead; +} + +- (BOOL)getBuffer:(__unused uint8_t **)buffer + length:(__unused NSUInteger *)len +{ + return NO; +} + +- (BOOL)hasBytesAvailable { + return [self streamStatus] == NSStreamStatusOpen; +} + +#pragma mark - NSStream + +- (void)open { + if (self.streamStatus == NSStreamStatusOpen) { + return; + } + + self.streamStatus = NSStreamStatusOpen; + + [self setInitialAndFinalBoundaries]; + self.HTTPBodyPartEnumerator = [self.HTTPBodyParts objectEnumerator]; +} + +- (void)close { + self.streamStatus = NSStreamStatusClosed; +} + +- (id)propertyForKey:(__unused NSString *)key { + return nil; +} + +- (BOOL)setProperty:(__unused id)property + forKey:(__unused NSString *)key +{ + return NO; +} + +- (void)scheduleInRunLoop:(__unused NSRunLoop *)aRunLoop + forMode:(__unused NSString *)mode +{} + +- (void)removeFromRunLoop:(__unused NSRunLoop *)aRunLoop + forMode:(__unused NSString *)mode +{} + +- (unsigned long long)contentLength { + unsigned long long length = 0; + for (AFHTTPBodyPart *bodyPart in self.HTTPBodyParts) { + length += [bodyPart contentLength]; + } + + return length; +} + +#pragma mark - Undocumented CFReadStream Bridged Methods + +- (void)_scheduleInCFRunLoop:(__unused CFRunLoopRef)aRunLoop + forMode:(__unused CFStringRef)aMode +{} + +- (void)_unscheduleFromCFRunLoop:(__unused CFRunLoopRef)aRunLoop + forMode:(__unused CFStringRef)aMode +{} + +- (BOOL)_setCFClientFlags:(__unused CFOptionFlags)inFlags + callback:(__unused CFReadStreamClientCallBack)inCallback + context:(__unused CFStreamClientContext *)inContext { + return NO; +} + +#pragma mark - NSCopying + +-(id)copyWithZone:(NSZone *)zone { + AFMultipartBodyStream *bodyStreamCopy = [[[self class] allocWithZone:zone] initWithStringEncoding:self.stringEncoding]; + + for (AFHTTPBodyPart *bodyPart in self.HTTPBodyParts) { + [bodyStreamCopy appendHTTPBodyPart:[bodyPart copy]]; + } + + [bodyStreamCopy setInitialAndFinalBoundaries]; + + return bodyStreamCopy; +} + +@end + +#pragma mark - + +typedef enum { + AFEncapsulationBoundaryPhase = 1, + AFHeaderPhase = 2, + AFBodyPhase = 3, + AFFinalBoundaryPhase = 4, +} AFHTTPBodyPartReadPhase; + +@interface AFHTTPBodyPart () { + AFHTTPBodyPartReadPhase _phase; + NSInputStream *_inputStream; + unsigned long long _phaseReadOffset; +} + +- (BOOL)transitionToNextPhase; +- (NSInteger)readData:(NSData *)data + intoBuffer:(uint8_t *)buffer + maxLength:(NSUInteger)length; +@end + +@implementation AFHTTPBodyPart +@synthesize stringEncoding = _stringEncoding; +@synthesize headers = _headers; +@synthesize body = _body; +@synthesize bodyContentLength = _bodyContentLength; +@synthesize inputStream = _inputStream; +@synthesize hasInitialBoundary = _hasInitialBoundary; +@synthesize hasFinalBoundary = _hasFinalBoundary; + +- (id)init { + self = [super init]; + if (!self) { + return nil; + } + + [self transitionToNextPhase]; + + return self; +} + +- (void)dealloc { + if (_inputStream) { + [_inputStream close]; + _inputStream = nil; + } +} + +- (NSInputStream *)inputStream { + if (!_inputStream) { + if ([self.body isKindOfClass:[NSData class]]) { + _inputStream = [NSInputStream inputStreamWithData:self.body]; + } else if ([self.body isKindOfClass:[NSURL class]]) { + _inputStream = [NSInputStream inputStreamWithURL:self.body]; + } else if ([self.body isKindOfClass:[NSInputStream class]]) { + _inputStream = self.body; + } + } + + return _inputStream; +} + +- (NSString *)stringForHeaders { + NSMutableString *headerString = [NSMutableString string]; + for (NSString *field in [self.headers allKeys]) { + [headerString appendString:[NSString stringWithFormat:@"%@: %@%@", field, [self.headers valueForKey:field], kAFMultipartFormCRLF]]; + } + [headerString appendString:kAFMultipartFormCRLF]; + + return [NSString stringWithString:headerString]; +} + +- (unsigned long long)contentLength { + unsigned long long length = 0; + + NSData *encapsulationBoundaryData = [([self hasInitialBoundary] ? AFMultipartFormInitialBoundary(self.boundary) : AFMultipartFormEncapsulationBoundary(self.boundary)) dataUsingEncoding:self.stringEncoding]; + length += [encapsulationBoundaryData length]; + + NSData *headersData = [[self stringForHeaders] dataUsingEncoding:self.stringEncoding]; + length += [headersData length]; + + length += _bodyContentLength; + + NSData *closingBoundaryData = ([self hasFinalBoundary] ? [AFMultipartFormFinalBoundary(self.boundary) dataUsingEncoding:self.stringEncoding] : [NSData data]); + length += [closingBoundaryData length]; + + return length; +} + +- (BOOL)hasBytesAvailable { + // Allows `read:maxLength:` to be called again if `AFMultipartFormFinalBoundary` doesn't fit into the available buffer + if (_phase == AFFinalBoundaryPhase) { + return YES; + } + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" + switch (self.inputStream.streamStatus) { + case NSStreamStatusNotOpen: + case NSStreamStatusOpening: + case NSStreamStatusOpen: + case NSStreamStatusReading: + case NSStreamStatusWriting: + return YES; + case NSStreamStatusAtEnd: + case NSStreamStatusClosed: + case NSStreamStatusError: + default: + return NO; + } +#pragma clang diagnostic pop +} + +- (NSInteger)read:(uint8_t *)buffer + maxLength:(NSUInteger)length +{ + NSUInteger totalNumberOfBytesRead = 0; + + if (_phase == AFEncapsulationBoundaryPhase) { + NSData *encapsulationBoundaryData = [([self hasInitialBoundary] ? AFMultipartFormInitialBoundary(self.boundary) : AFMultipartFormEncapsulationBoundary(self.boundary)) dataUsingEncoding:self.stringEncoding]; + totalNumberOfBytesRead += [self readData:encapsulationBoundaryData intoBuffer:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; + } + + if (_phase == AFHeaderPhase) { + NSData *headersData = [[self stringForHeaders] dataUsingEncoding:self.stringEncoding]; + totalNumberOfBytesRead += [self readData:headersData intoBuffer:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; + } + + if (_phase == AFBodyPhase) { + NSInteger numberOfBytesRead = 0; + + numberOfBytesRead = [self.inputStream read:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; + if (numberOfBytesRead == -1) { + return -1; + } else { + totalNumberOfBytesRead += numberOfBytesRead; + + if ([self.inputStream streamStatus] >= NSStreamStatusAtEnd) { + [self transitionToNextPhase]; + } + } + } + + if (_phase == AFFinalBoundaryPhase) { + NSData *closingBoundaryData = ([self hasFinalBoundary] ? [AFMultipartFormFinalBoundary(self.boundary) dataUsingEncoding:self.stringEncoding] : [NSData data]); + totalNumberOfBytesRead += [self readData:closingBoundaryData intoBuffer:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; + } + + return totalNumberOfBytesRead; +} + +- (NSInteger)readData:(NSData *)data + intoBuffer:(uint8_t *)buffer + maxLength:(NSUInteger)length +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + NSRange range = NSMakeRange((NSUInteger)_phaseReadOffset, MIN([data length] - ((NSUInteger)_phaseReadOffset), length)); + [data getBytes:buffer range:range]; +#pragma clang diagnostic pop + + _phaseReadOffset += range.length; + + if (((NSUInteger)_phaseReadOffset) >= [data length]) { + [self transitionToNextPhase]; + } + + return (NSInteger)range.length; +} + +- (BOOL)transitionToNextPhase { + if (![[NSThread currentThread] isMainThread]) { + [self performSelectorOnMainThread:@selector(transitionToNextPhase) withObject:nil waitUntilDone:YES]; + return YES; + } + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" + switch (_phase) { + case AFEncapsulationBoundaryPhase: + _phase = AFHeaderPhase; + break; + case AFHeaderPhase: + [self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; + [self.inputStream open]; + _phase = AFBodyPhase; + break; + case AFBodyPhase: + [self.inputStream close]; + _phase = AFFinalBoundaryPhase; + break; + case AFFinalBoundaryPhase: + default: + _phase = AFEncapsulationBoundaryPhase; + break; + } + _phaseReadOffset = 0; +#pragma clang diagnostic pop + + return YES; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFHTTPBodyPart *bodyPart = [[[self class] allocWithZone:zone] init]; + + bodyPart.stringEncoding = self.stringEncoding; + bodyPart.headers = self.headers; + bodyPart.bodyContentLength = self.bodyContentLength; + bodyPart.body = self.body; + + return bodyPart; +} + +@end diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h new file mode 100644 index 0000000..b40e3d5 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h @@ -0,0 +1,133 @@ +// AFHTTPRequestOperation.h +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import "AFURLConnectionOperation.h" + +/** + `AFHTTPRequestOperation` is a subclass of `AFURLConnectionOperation` for requests using the HTTP or HTTPS protocols. It encapsulates the concept of acceptable status codes and content types, which determine the success or failure of a request. + */ +@interface AFHTTPRequestOperation : AFURLConnectionOperation + +///---------------------------------------------- +/// @name Getting HTTP URL Connection Information +///---------------------------------------------- + +/** + The last HTTP response received by the operation's connection. + */ +@property (readonly, nonatomic, strong) NSHTTPURLResponse *response; + +///---------------------------------------------------------- +/// @name Managing And Checking For Acceptable HTTP Responses +///---------------------------------------------------------- + +/** + A Boolean value that corresponds to whether the status code of the response is within the specified set of acceptable status codes. Returns `YES` if `acceptableStatusCodes` is `nil`. + */ +@property (nonatomic, readonly) BOOL hasAcceptableStatusCode; + +/** + A Boolean value that corresponds to whether the MIME type of the response is among the specified set of acceptable content types. Returns `YES` if `acceptableContentTypes` is `nil`. + */ +@property (nonatomic, readonly) BOOL hasAcceptableContentType; + +/** + The callback dispatch queue on success. If `NULL` (default), the main queue is used. + */ +@property (nonatomic, assign) dispatch_queue_t successCallbackQueue; + +/** + The callback dispatch queue on failure. If `NULL` (default), the main queue is used. + */ +@property (nonatomic, assign) dispatch_queue_t failureCallbackQueue; + +///------------------------------------------------------------ +/// @name Managing Acceptable HTTP Status Codes & Content Types +///------------------------------------------------------------ + +/** + Returns an `NSIndexSet` object containing the ranges of acceptable HTTP status codes. When non-`nil`, the operation will set the `error` property to an error in `AFErrorDomain`. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html + + By default, this is the range 200 to 299, inclusive. + */ ++ (NSIndexSet *)acceptableStatusCodes; + +/** + Adds status codes to the set of acceptable HTTP status codes returned by `+acceptableStatusCodes` in subsequent calls by this class and its descendants. + + @param statusCodes The status codes to be added to the set of acceptable HTTP status codes + */ ++ (void)addAcceptableStatusCodes:(NSIndexSet *)statusCodes; + +/** + Returns an `NSSet` object containing the acceptable MIME types. When non-`nil`, the operation will set the `error` property to an error in `AFErrorDomain`. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17 + + By default, this is `nil`. + */ ++ (NSSet *)acceptableContentTypes; + +/** + Adds content types to the set of acceptable MIME types returned by `+acceptableContentTypes` in subsequent calls by this class and its descendants. + + @param contentTypes The content types to be added to the set of acceptable MIME types + */ ++ (void)addAcceptableContentTypes:(NSSet *)contentTypes; + + +///----------------------------------------------------- +/// @name Determining Whether A Request Can Be Processed +///----------------------------------------------------- + +/** + A Boolean value determining whether or not the class can process the specified request. For example, `AFJSONRequestOperation` may check to make sure the content type was `application/json` or the URL path extension was `.json`. + + @param urlRequest The request that is determined to be supported or not supported for this class. + */ ++ (BOOL)canProcessRequest:(NSURLRequest *)urlRequest; + +///----------------------------------------------------------- +/// @name Setting Completion Block Success / Failure Callbacks +///----------------------------------------------------------- + +/** + Sets the `completionBlock` property with a block that executes either the specified success or failure block, depending on the state of the request on completion. If `error` returns a value, which can be caused by an unacceptable status code or content type, then `failure` is executed. Otherwise, `success` is executed. + + This method should be overridden in subclasses in order to specify the response object passed into the success block. + + @param success The block to be executed on the completion of a successful request. This block has no return value and takes two arguments: the receiver operation and the object constructed from the response data of the request. + @param failure The block to be executed on the completion of an unsuccessful request. This block has no return value and takes two arguments: the receiver operation and the error that occurred during the request. + */ +- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +@end + +///---------------- +/// @name Functions +///---------------- + +/** + Returns a set of MIME types detected in an HTTP `Accept` or `Content-Type` header. + */ +extern NSSet * AFContentTypesFromHTTPHeader(NSString *string); + diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m new file mode 100644 index 0000000..940b6e7 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m @@ -0,0 +1,327 @@ +// AFHTTPRequestOperation.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFHTTPRequestOperation.h" +#import + +// Workaround for change in imp_implementationWithBlock() with Xcode 4.5 +#if defined(__IPHONE_6_0) || defined(__MAC_10_8) +#define AF_CAST_TO_BLOCK id +#else +#define AF_CAST_TO_BLOCK __bridge void * +#endif + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wstrict-selector-match" + +NSSet * AFContentTypesFromHTTPHeader(NSString *string) { + if (!string) { + return nil; + } + + NSArray *mediaRanges = [string componentsSeparatedByString:@","]; + NSMutableSet *mutableContentTypes = [NSMutableSet setWithCapacity:mediaRanges.count]; + + [mediaRanges enumerateObjectsUsingBlock:^(NSString *mediaRange, __unused NSUInteger idx, __unused BOOL *stop) { + NSRange parametersRange = [mediaRange rangeOfString:@";"]; + if (parametersRange.location != NSNotFound) { + mediaRange = [mediaRange substringToIndex:parametersRange.location]; + } + + mediaRange = [mediaRange stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + + if (mediaRange.length > 0) { + [mutableContentTypes addObject:mediaRange]; + } + }]; + + return [NSSet setWithSet:mutableContentTypes]; +} + +static void AFGetMediaTypeAndSubtypeWithString(NSString *string, NSString **type, NSString **subtype) { + if (!string) { + return; + } + + NSScanner *scanner = [NSScanner scannerWithString:string]; + [scanner setCharactersToBeSkipped:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + [scanner scanUpToString:@"/" intoString:type]; + [scanner scanString:@"/" intoString:nil]; + [scanner scanUpToString:@";" intoString:subtype]; +} + +static NSString * AFStringFromIndexSet(NSIndexSet *indexSet) { + NSMutableString *string = [NSMutableString string]; + + NSRange range = NSMakeRange([indexSet firstIndex], 1); + while (range.location != NSNotFound) { + NSUInteger nextIndex = [indexSet indexGreaterThanIndex:range.location]; + while (nextIndex == range.location + range.length) { + range.length++; + nextIndex = [indexSet indexGreaterThanIndex:nextIndex]; + } + + if (string.length) { + [string appendString:@","]; + } + + if (range.length == 1) { + [string appendFormat:@"%lu", (long)range.location]; + } else { + NSUInteger firstIndex = range.location; + NSUInteger lastIndex = firstIndex + range.length - 1; + [string appendFormat:@"%lu-%lu", (long)firstIndex, (long)lastIndex]; + } + + range.location = nextIndex; + range.length = 1; + } + + return string; +} + +static void AFSwizzleClassMethodWithClassAndSelectorUsingBlock(Class klass, SEL selector, id block) { + Method originalMethod = class_getClassMethod(klass, selector); + IMP implementation = imp_implementationWithBlock((AF_CAST_TO_BLOCK)block); + class_replaceMethod(objc_getMetaClass([NSStringFromClass(klass) UTF8String]), selector, implementation, method_getTypeEncoding(originalMethod)); +} + +#pragma mark - + +@interface AFHTTPRequestOperation () +@property (readwrite, nonatomic, strong) NSURLRequest *request; +@property (readwrite, nonatomic, strong) NSHTTPURLResponse *response; +@property (readwrite, nonatomic, strong) NSError *HTTPError; +@property (readwrite, nonatomic, strong) NSRecursiveLock *lock; +@end + +@implementation AFHTTPRequestOperation +@synthesize HTTPError = _HTTPError; +@synthesize successCallbackQueue = _successCallbackQueue; +@synthesize failureCallbackQueue = _failureCallbackQueue; +@dynamic lock; +@dynamic request; +@dynamic response; + +- (void)dealloc { + if (_successCallbackQueue) { +#if !OS_OBJECT_USE_OBJC + dispatch_release(_successCallbackQueue); +#endif + _successCallbackQueue = NULL; + } + + if (_failureCallbackQueue) { +#if !OS_OBJECT_USE_OBJC + dispatch_release(_failureCallbackQueue); +#endif + _failureCallbackQueue = NULL; + } +} + +- (NSError *)error { + [self.lock lock]; + if (!self.HTTPError && self.response) { + if (![self hasAcceptableStatusCode] || ![self hasAcceptableContentType]) { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + [userInfo setValue:self.responseString forKey:NSLocalizedRecoverySuggestionErrorKey]; + [userInfo setValue:[self.request URL] forKey:NSURLErrorFailingURLErrorKey]; + [userInfo setValue:self.request forKey:AFNetworkingOperationFailingURLRequestErrorKey]; + [userInfo setValue:self.response forKey:AFNetworkingOperationFailingURLResponseErrorKey]; + + if (![self hasAcceptableStatusCode]) { + NSInteger statusCode = ([self.response isKindOfClass:[NSHTTPURLResponse class]]) ? [self.response statusCode] : 200; + [userInfo setValue:[NSString stringWithFormat:NSLocalizedStringFromTable(@"Expected status code in (%@), got %ld", @"AFNetworking", nil), AFStringFromIndexSet([[self class] acceptableStatusCodes]), (long)statusCode] forKey:NSLocalizedDescriptionKey]; + self.HTTPError = [[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorBadServerResponse userInfo:userInfo]; + } else if (![self hasAcceptableContentType]) { + // Don't invalidate content type if there is no content + if ([self.responseData length] > 0) { + [userInfo setValue:[NSString stringWithFormat:NSLocalizedStringFromTable(@"Expected content type %@, got %@", @"AFNetworking", nil), [[self class] acceptableContentTypes], [self.response MIMEType]] forKey:NSLocalizedDescriptionKey]; + self.HTTPError = [[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:userInfo]; + } + } + } + } + [self.lock unlock]; + + if (self.HTTPError) { + return self.HTTPError; + } else { + return [super error]; + } +} + +- (NSStringEncoding)responseStringEncoding { + // When no explicit charset parameter is provided by the sender, media subtypes of the "text" type are defined to have a default charset value of "ISO-8859-1" when received via HTTP. Data in character sets other than "ISO-8859-1" or its subsets MUST be labeled with an appropriate charset value. + // See http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.4.1 + if (self.response && !self.response.textEncodingName && self.responseData && [self.response respondsToSelector:@selector(allHeaderFields)]) { + NSString *type = nil; + AFGetMediaTypeAndSubtypeWithString([[self.response allHeaderFields] valueForKey:@"Content-Type"], &type, nil); + + if ([type isEqualToString:@"text"]) { + return NSISOLatin1StringEncoding; + } + } + + return [super responseStringEncoding]; +} + +- (void)pause { + unsigned long long offset = 0; + if ([self.outputStream propertyForKey:NSStreamFileCurrentOffsetKey]) { + offset = [[self.outputStream propertyForKey:NSStreamFileCurrentOffsetKey] unsignedLongLongValue]; + } else { + offset = [[self.outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey] length]; + } + + NSMutableURLRequest *mutableURLRequest = [self.request mutableCopy]; + if ([self.response respondsToSelector:@selector(allHeaderFields)] && [[self.response allHeaderFields] valueForKey:@"ETag"]) { + [mutableURLRequest setValue:[[self.response allHeaderFields] valueForKey:@"ETag"] forHTTPHeaderField:@"If-Range"]; + } + [mutableURLRequest setValue:[NSString stringWithFormat:@"bytes=%llu-", offset] forHTTPHeaderField:@"Range"]; + self.request = mutableURLRequest; + + [super pause]; +} + +- (BOOL)hasAcceptableStatusCode { + if (!self.response) { + return NO; + } + + NSUInteger statusCode = ([self.response isKindOfClass:[NSHTTPURLResponse class]]) ? (NSUInteger)[self.response statusCode] : 200; + return ![[self class] acceptableStatusCodes] || [[[self class] acceptableStatusCodes] containsIndex:statusCode]; +} + +- (BOOL)hasAcceptableContentType { + if (!self.response) { + return NO; + } + + // Any HTTP/1.1 message containing an entity-body SHOULD include a Content-Type header field defining the media type of that body. If and only if the media type is not given by a Content-Type field, the recipient MAY attempt to guess the media type via inspection of its content and/or the name extension(s) of the URI used to identify the resource. If the media type remains unknown, the recipient SHOULD treat it as type "application/octet-stream". + // See http://www.w3.org/Protocols/rfc2616/rfc2616-sec7.html + NSString *contentType = [self.response MIMEType]; + if (!contentType) { + contentType = @"application/octet-stream"; + } + + return ![[self class] acceptableContentTypes] || [[[self class] acceptableContentTypes] containsObject:contentType]; +} + +- (void)setSuccessCallbackQueue:(dispatch_queue_t)successCallbackQueue { + if (successCallbackQueue != _successCallbackQueue) { + if (_successCallbackQueue) { +#if !OS_OBJECT_USE_OBJC + dispatch_release(_successCallbackQueue); +#endif + _successCallbackQueue = NULL; + } + + if (successCallbackQueue) { +#if !OS_OBJECT_USE_OBJC + dispatch_retain(successCallbackQueue); +#endif + _successCallbackQueue = successCallbackQueue; + } + } +} + +- (void)setFailureCallbackQueue:(dispatch_queue_t)failureCallbackQueue { + if (failureCallbackQueue != _failureCallbackQueue) { + if (_failureCallbackQueue) { +#if !OS_OBJECT_USE_OBJC + dispatch_release(_failureCallbackQueue); +#endif + _failureCallbackQueue = NULL; + } + + if (failureCallbackQueue) { +#if !OS_OBJECT_USE_OBJC + dispatch_retain(failureCallbackQueue); +#endif + _failureCallbackQueue = failureCallbackQueue; + } + } +} + +- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + // completionBlock is manually nilled out in AFURLConnectionOperation to break the retain cycle. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-retain-cycles" +#pragma clang diagnostic ignored "-Wgnu" + self.completionBlock = ^{ + if (self.error) { + if (failure) { + dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ + failure(self, self.error); + }); + } + } else { + if (success) { + dispatch_async(self.successCallbackQueue ?: dispatch_get_main_queue(), ^{ + success(self, self.responseData); + }); + } + } + }; +#pragma clang diagnostic pop +} + +#pragma mark - AFHTTPRequestOperation + ++ (NSIndexSet *)acceptableStatusCodes { + return [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(200, 100)]; +} + ++ (void)addAcceptableStatusCodes:(NSIndexSet *)statusCodes { + NSMutableIndexSet *mutableStatusCodes = [[NSMutableIndexSet alloc] initWithIndexSet:[self acceptableStatusCodes]]; + [mutableStatusCodes addIndexes:statusCodes]; + AFSwizzleClassMethodWithClassAndSelectorUsingBlock([self class], @selector(acceptableStatusCodes), ^(__unused id _self) { + return mutableStatusCodes; + }); +} + ++ (NSSet *)acceptableContentTypes { + return nil; +} + ++ (void)addAcceptableContentTypes:(NSSet *)contentTypes { + NSMutableSet *mutableContentTypes = [[NSMutableSet alloc] initWithSet:[self acceptableContentTypes] copyItems:YES]; + [mutableContentTypes unionSet:contentTypes]; + AFSwizzleClassMethodWithClassAndSelectorUsingBlock([self class], @selector(acceptableContentTypes), ^(__unused id _self) { + return mutableContentTypes; + }); +} + ++ (BOOL)canProcessRequest:(NSURLRequest *)request { + if ([[self class] isEqual:[AFHTTPRequestOperation class]]) { + return YES; + } + + return [[self acceptableContentTypes] intersectsSet:AFContentTypesFromHTTPHeader([request valueForHTTPHeaderField:@"Accept"])]; +} + +@end + +#pragma clang diagnostic pop diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h new file mode 100644 index 0000000..d5e6596 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h @@ -0,0 +1,113 @@ +// AFImageRequestOperation.h +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import "AFHTTPRequestOperation.h" + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) +#import +#endif + +/** + `AFImageRequestOperation` is a subclass of `AFHTTPRequestOperation` for downloading and processing images. + + ## Acceptable Content Types + + By default, `AFImageRequestOperation` accepts the following MIME types, which correspond to the image formats supported by UIImage or NSImage: + + - `image/tiff` + - `image/jpeg` + - `image/gif` + - `image/png` + - `image/ico` + - `image/x-icon` + - `image/bmp` + - `image/x-bmp` + - `image/x-xbitmap` + - `image/x-win-bitmap` + */ +@interface AFImageRequestOperation : AFHTTPRequestOperation + +/** + An image constructed from the response data. If an error occurs during the request, `nil` will be returned, and the `error` property will be set to the error. + */ +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +@property (readonly, nonatomic, strong) UIImage *responseImage; +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) +@property (readonly, nonatomic, strong) NSImage *responseImage; +#endif + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +/** + The scale factor used when interpreting the image data to construct `responseImage`. Specifying a scale factor of 1.0 results in an image whose size matches the pixel-based dimensions of the image. Applying a different scale factor changes the size of the image as reported by the size property. This is set to the value of scale of the main screen by default, which automatically scales images for retina displays, for instance. + */ +@property (nonatomic, assign) CGFloat imageScale; + +/** + Whether to automatically inflate response image data for compressed formats (such as PNG or JPEG). Enabling this can significantly improve drawing performance on iOS when used with `setCompletionBlockWithSuccess:failure:`, as it allows a bitmap representation to be constructed in the background rather than on the main thread. `YES` by default. + */ +@property (nonatomic, assign) BOOL automaticallyInflatesResponseImage; +#endif + +/** + Creates and returns an `AFImageRequestOperation` object and sets the specified success callback. + + @param urlRequest The request object to be loaded asynchronously during execution of the operation. + @param success A block object to be executed when the request finishes successfully. This block has no return value and takes a single argument, the image created from the response data of the request. + + @return A new image request operation + */ +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) ++ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(UIImage *image))success; +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) ++ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(NSImage *image))success; +#endif + +/** + Creates and returns an `AFImageRequestOperation` object and sets the specified success callback. + + @param urlRequest The request object to be loaded asynchronously during execution of the operation. + @param imageProcessingBlock A block object to be executed after the image request finishes successfully, but before the image is returned in the `success` block. This block takes a single argument, the image loaded from the response body, and returns the processed image. + @param success A block object to be executed when the request finishes successfully, with a status code in the 2xx range, and with an acceptable content type (e.g. `image/png`). This block has no return value and takes three arguments: the request object of the operation, the response for the request, and the image created from the response data. + @param failure A block object to be executed when the request finishes unsuccessfully. This block has no return value and takes three arguments: the request object of the operation, the response for the request, and the error associated with the cause for the unsuccessful operation. + + @return A new image request operation + */ +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) ++ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest + imageProcessingBlock:(UIImage *(^)(UIImage *image))imageProcessingBlock + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure; +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) ++ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest + imageProcessingBlock:(NSImage *(^)(NSImage *image))imageProcessingBlock + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSImage *image))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure; +#endif + +@end diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m new file mode 100644 index 0000000..7023b37 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m @@ -0,0 +1,321 @@ +// AFImageRequestOperation.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFImageRequestOperation.h" + +static dispatch_queue_t image_request_operation_processing_queue() { + static dispatch_queue_t af_image_request_operation_processing_queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_image_request_operation_processing_queue = dispatch_queue_create("com.alamofire.networking.image-request.processing", DISPATCH_QUEUE_CONCURRENT); + }); + + return af_image_request_operation_processing_queue; +} + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import + +static UIImage * AFImageWithDataAtScale(NSData *data, CGFloat scale) { + UIImage *image = [[UIImage alloc] initWithData:data]; + + return [[UIImage alloc] initWithCGImage:[image CGImage] scale:scale orientation:image.imageOrientation]; +} + +static UIImage * AFInflatedImageFromResponseWithDataAtScale(NSHTTPURLResponse *response, NSData *data, CGFloat scale) { + if (!data || [data length] == 0) { + return nil; + } + + UIImage *image = AFImageWithDataAtScale(data, scale); + if (image.images) { + return image; + } + + CGImageRef imageRef = nil; + CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data); + + if ([response.MIMEType isEqualToString:@"image/png"]) { + imageRef = CGImageCreateWithPNGDataProvider(dataProvider, NULL, true, kCGRenderingIntentDefault); + } else if ([response.MIMEType isEqualToString:@"image/jpeg"]) { + imageRef = CGImageCreateWithJPEGDataProvider(dataProvider, NULL, true, kCGRenderingIntentDefault); + } + + if (!imageRef) { + imageRef = CGImageCreateCopy([image CGImage]); + + if (!imageRef) { + CGDataProviderRelease(dataProvider); + return image; + } + } + + CGDataProviderRelease(dataProvider); + + size_t width = CGImageGetWidth(imageRef); + size_t height = CGImageGetHeight(imageRef); + size_t bitsPerComponent = CGImageGetBitsPerComponent(imageRef); + size_t bytesPerRow = 0; // CGImageGetBytesPerRow() calculates incorrectly in iOS 5.0, so defer to CGBitmapContextCreate() + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef); + + if (CGColorSpaceGetNumberOfComponents(colorSpace) == 3) { + int alpha = (bitmapInfo & kCGBitmapAlphaInfoMask); + if (alpha == kCGImageAlphaNone) { + bitmapInfo &= ~kCGBitmapAlphaInfoMask; + bitmapInfo |= kCGImageAlphaNoneSkipFirst; + } else if (!(alpha == kCGImageAlphaNoneSkipFirst || alpha == kCGImageAlphaNoneSkipLast)) { + bitmapInfo &= ~kCGBitmapAlphaInfoMask; + bitmapInfo |= kCGImageAlphaPremultipliedFirst; + } + } + + CGContextRef context = CGBitmapContextCreate(NULL, width, height, bitsPerComponent, bytesPerRow, colorSpace, bitmapInfo); + + CGColorSpaceRelease(colorSpace); + + if (!context) { + CGImageRelease(imageRef); + + return image; + } + + CGRect rect = CGRectMake(0.0f, 0.0f, width, height); + CGContextDrawImage(context, rect, imageRef); + CGImageRef inflatedImageRef = CGBitmapContextCreateImage(context); + CGContextRelease(context); + + UIImage *inflatedImage = [[UIImage alloc] initWithCGImage:inflatedImageRef scale:scale orientation:image.imageOrientation]; + CGImageRelease(inflatedImageRef); + CGImageRelease(imageRef); + + return inflatedImage; +} +#endif + +@interface AFImageRequestOperation () +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +@property (readwrite, nonatomic, strong) UIImage *responseImage; +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) +@property (readwrite, nonatomic, strong) NSImage *responseImage; +#endif +@end + +@implementation AFImageRequestOperation +@synthesize responseImage = _responseImage; +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +@synthesize imageScale = _imageScale; +#endif + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) ++ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(UIImage *image))success +{ + return [self imageRequestOperationWithRequest:urlRequest imageProcessingBlock:nil success:^(NSURLRequest __unused *request, NSHTTPURLResponse __unused *response, UIImage *image) { + if (success) { + success(image); + } + } failure:nil]; +} +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) ++ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(NSImage *image))success +{ + return [self imageRequestOperationWithRequest:urlRequest imageProcessingBlock:nil success:^(NSURLRequest __unused *request, NSHTTPURLResponse __unused *response, NSImage *image) { + if (success) { + success(image); + } + } failure:nil]; +} +#endif + + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) ++ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest + imageProcessingBlock:(UIImage *(^)(UIImage *))imageProcessingBlock + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure +{ + AFImageRequestOperation *requestOperation = [(AFImageRequestOperation *)[self alloc] initWithRequest:urlRequest]; + [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + if (success) { + UIImage *image = responseObject; + if (imageProcessingBlock) { + dispatch_async(image_request_operation_processing_queue(), ^(void) { + UIImage *processedImage = imageProcessingBlock(image); +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + dispatch_async(operation.successCallbackQueue ?: dispatch_get_main_queue(), ^(void) { + success(operation.request, operation.response, processedImage); + }); +#pragma clang diagnostic pop + }); + } else { + success(operation.request, operation.response, image); + } + } + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + if (failure) { + failure(operation.request, operation.response, error); + } + }]; + + + return requestOperation; +} +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) ++ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest + imageProcessingBlock:(NSImage *(^)(NSImage *))imageProcessingBlock + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSImage *image))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure +{ + AFImageRequestOperation *requestOperation = [(AFImageRequestOperation *)[self alloc] initWithRequest:urlRequest]; + [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + if (success) { + NSImage *image = responseObject; + if (imageProcessingBlock) { + dispatch_async(image_request_operation_processing_queue(), ^(void) { + NSImage *processedImage = imageProcessingBlock(image); + + dispatch_async(operation.successCallbackQueue ?: dispatch_get_main_queue(), ^(void) { + success(operation.request, operation.response, processedImage); + }); + }); + } else { + success(operation.request, operation.response, image); + } + } + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + if (failure) { + failure(operation.request, operation.response, error); + } + }]; + + return requestOperation; +} +#endif + +- (id)initWithRequest:(NSURLRequest *)urlRequest { + self = [super initWithRequest:urlRequest]; + if (!self) { + return nil; + } + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + self.imageScale = [[UIScreen mainScreen] scale]; + self.automaticallyInflatesResponseImage = YES; +#endif + + return self; +} + + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +- (UIImage *)responseImage { + if (!_responseImage && [self.responseData length] > 0 && [self isFinished]) { + if (self.automaticallyInflatesResponseImage) { + self.responseImage = AFInflatedImageFromResponseWithDataAtScale(self.response, self.responseData, self.imageScale); + } else { + self.responseImage = AFImageWithDataAtScale(self.responseData, self.imageScale); + } + } + + return _responseImage; +} + +- (void)setImageScale:(CGFloat)imageScale { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wfloat-equal" + if (imageScale == _imageScale) { + return; + } +#pragma clang diagnostic pop + + _imageScale = imageScale; + + self.responseImage = nil; +} +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) +- (NSImage *)responseImage { + if (!_responseImage && [self.responseData length] > 0 && [self isFinished]) { + // Ensure that the image is set to it's correct pixel width and height + NSBitmapImageRep *bitimage = [[NSBitmapImageRep alloc] initWithData:self.responseData]; + self.responseImage = [[NSImage alloc] initWithSize:NSMakeSize([bitimage pixelsWide], [bitimage pixelsHigh])]; + [self.responseImage addRepresentation:bitimage]; + } + + return _responseImage; +} +#endif + +#pragma mark - AFHTTPRequestOperation + ++ (NSSet *)acceptableContentTypes { + return [NSSet setWithObjects:@"image/tiff", @"image/jpeg", @"image/gif", @"image/png", @"image/ico", @"image/x-icon", @"image/bmp", @"image/x-bmp", @"image/x-xbitmap", @"image/x-win-bitmap", nil]; +} + ++ (BOOL)canProcessRequest:(NSURLRequest *)request { + static NSSet * _acceptablePathExtension = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _acceptablePathExtension = [[NSSet alloc] initWithObjects:@"tif", @"tiff", @"jpg", @"jpeg", @"gif", @"png", @"ico", @"bmp", @"cur", nil]; + }); + + return [_acceptablePathExtension containsObject:[[request URL] pathExtension]] || [super canProcessRequest:request]; +} + +- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-retain-cycles" +#pragma clang diagnostic ignored "-Wgnu" + + self.completionBlock = ^ { + dispatch_async(image_request_operation_processing_queue(), ^(void) { + if (self.error) { + if (failure) { + dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ + failure(self, self.error); + }); + } + } else { + if (success) { +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + UIImage *image = nil; +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) + NSImage *image = nil; +#endif + + image = self.responseImage; + + dispatch_async(self.successCallbackQueue ?: dispatch_get_main_queue(), ^{ + success(self, image); + }); + } + } + }); + }; +#pragma clang diagnostic pop +} + +@end diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h new file mode 100644 index 0000000..5493a40 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h @@ -0,0 +1,71 @@ +// AFJSONRequestOperation.h +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import "AFHTTPRequestOperation.h" + +/** + `AFJSONRequestOperation` is a subclass of `AFHTTPRequestOperation` for downloading and working with JSON response data. + + ## Acceptable Content Types + + By default, `AFJSONRequestOperation` accepts the following MIME types, which includes the official standard, `application/json`, as well as other commonly-used types: + + - `application/json` + - `text/json` + + @warning JSON parsing will use the built-in `NSJSONSerialization` class. + */ +@interface AFJSONRequestOperation : AFHTTPRequestOperation + +///---------------------------- +/// @name Getting Response Data +///---------------------------- + +/** + A JSON object constructed from the response data. If an error occurs while parsing, `nil` will be returned, and the `error` property will be set to the error. + */ +@property (readonly, nonatomic, strong) id responseJSON; + +/** + Options for reading the response JSON data and creating the Foundation objects. For possible values, see the `NSJSONSerialization` documentation section "NSJSONReadingOptions". + */ +@property (nonatomic, assign) NSJSONReadingOptions JSONReadingOptions; + +///---------------------------------- +/// @name Creating Request Operations +///---------------------------------- + +/** + Creates and returns an `AFJSONRequestOperation` object and sets the specified success and failure callbacks. + + @param urlRequest The request object to be loaded asynchronously during execution of the operation + @param success A block object to be executed when the operation finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the JSON object created from the response data of request. + @param failure A block object to be executed when the operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data as JSON. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the error describing the network or parsing error that occurred. + + @return A new JSON request operation + */ ++ (instancetype)JSONRequestOperationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, id JSON))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON))failure; + +@end diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m new file mode 100644 index 0000000..fffc60c --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m @@ -0,0 +1,150 @@ +// AFJSONRequestOperation.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFJSONRequestOperation.h" + +static dispatch_queue_t json_request_operation_processing_queue() { + static dispatch_queue_t af_json_request_operation_processing_queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_json_request_operation_processing_queue = dispatch_queue_create("com.alamofire.networking.json-request.processing", DISPATCH_QUEUE_CONCURRENT); + }); + + return af_json_request_operation_processing_queue; +} + +@interface AFJSONRequestOperation () +@property (readwrite, nonatomic, strong) id responseJSON; +@property (readwrite, nonatomic, strong) NSError *JSONError; +@property (readwrite, nonatomic, strong) NSRecursiveLock *lock; +@end + +@implementation AFJSONRequestOperation +@synthesize responseJSON = _responseJSON; +@synthesize JSONReadingOptions = _JSONReadingOptions; +@synthesize JSONError = _JSONError; +@dynamic lock; + ++ (instancetype)JSONRequestOperationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, id JSON))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON))failure +{ + AFJSONRequestOperation *requestOperation = [(AFJSONRequestOperation *)[self alloc] initWithRequest:urlRequest]; + [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + if (success) { + success(operation.request, operation.response, responseObject); + } + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + if (failure) { + failure(operation.request, operation.response, error, [(AFJSONRequestOperation *)operation responseJSON]); + } + }]; + + return requestOperation; +} + + +- (id)responseJSON { + [self.lock lock]; + if (!_responseJSON && [self.responseData length] > 0 && [self isFinished] && !self.JSONError) { + NSError *error = nil; + + // Workaround for behavior of Rails to return a single space for `head :ok` (a workaround for a bug in Safari), which is not interpreted as valid input by NSJSONSerialization. + // See https://github.com/rails/rails/issues/1742 + if (self.responseString && ![self.responseString isEqualToString:@" "]) { + // Workaround for a bug in NSJSONSerialization when Unicode character escape codes are used instead of the actual character + // See http://stackoverflow.com/a/12843465/157142 + NSData *data = [self.responseString dataUsingEncoding:NSUTF8StringEncoding]; + + if (data) { + self.responseJSON = [NSJSONSerialization JSONObjectWithData:data options:self.JSONReadingOptions error:&error]; + } else { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + [userInfo setValue:@"Operation responseData failed decoding as a UTF-8 string" forKey:NSLocalizedDescriptionKey]; + [userInfo setValue:[NSString stringWithFormat:@"Could not decode string: %@", self.responseString] forKey:NSLocalizedFailureReasonErrorKey]; + error = [[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:userInfo]; + } + } + + self.JSONError = error; + } + [self.lock unlock]; + + return _responseJSON; +} + +- (NSError *)error { + if (_JSONError) { + return _JSONError; + } else { + return [super error]; + } +} + +#pragma mark - AFHTTPRequestOperation + ++ (NSSet *)acceptableContentTypes { + return [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil]; +} + ++ (BOOL)canProcessRequest:(NSURLRequest *)request { + return [[[request URL] pathExtension] isEqualToString:@"json"] || [super canProcessRequest:request]; +} + +- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-retain-cycles" +#pragma clang diagnostic ignored "-Wgnu" + + self.completionBlock = ^ { + if (self.error) { + if (failure) { + dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ + failure(self, self.error); + }); + } + } else { + dispatch_async(json_request_operation_processing_queue(), ^{ + id JSON = self.responseJSON; + + if (self.error) { + if (failure) { + dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ + failure(self, self.error); + }); + } + } else { + if (success) { + dispatch_async(self.successCallbackQueue ?: dispatch_get_main_queue(), ^{ + success(self, JSON); + }); + } + } + }); + } + }; +#pragma clang diagnostic pop +} + +@end diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h new file mode 100644 index 0000000..714193b --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h @@ -0,0 +1,75 @@ +// AFNetworkActivityIndicatorManager.h +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import + +/** + `AFNetworkActivityIndicatorManager` manages the state of the network activity indicator in the status bar. When enabled, it will listen for notifications indicating that a network request operation has started or finished, and start or stop animating the indicator accordingly. The number of active requests is incremented and decremented much like a stack or a semaphore, and the activity indicator will animate so long as that number is greater than zero. + + You should enable the shared instance of `AFNetworkActivityIndicatorManager` when your application finishes launching. In `AppDelegate application:didFinishLaunchingWithOptions:` you can do so with the following code: + + [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES]; + + By setting `isNetworkActivityIndicatorVisible` to `YES` for `sharedManager`, the network activity indicator will show and hide automatically as requests start and finish. You should not ever need to call `incrementActivityCount` or `decrementActivityCount` yourself. + + See the Apple Human Interface Guidelines section about the Network Activity Indicator for more information: + http://developer.apple.com/library/iOS/#documentation/UserExperience/Conceptual/MobileHIG/UIElementGuidelines/UIElementGuidelines.html#//apple_ref/doc/uid/TP40006556-CH13-SW44 + */ +@interface AFNetworkActivityIndicatorManager : NSObject + +/** + A Boolean value indicating whether the manager is enabled. + + If YES, the manager will change status bar network activity indicator according to network operation notifications it receives. The default value is NO. + */ +@property (nonatomic, assign, getter = isEnabled) BOOL enabled; + +/** + A Boolean value indicating whether the network activity indicator is currently displayed in the status bar. + */ +@property (readonly, nonatomic, assign) BOOL isNetworkActivityIndicatorVisible; + +/** + Returns the shared network activity indicator manager object for the system. + + @return The systemwide network activity indicator manager. + */ ++ (instancetype)sharedManager; + +/** + Increments the number of active network requests. If this number was zero before incrementing, this will start animating the status bar network activity indicator. + */ +- (void)incrementActivityCount; + +/** + Decrements the number of active network requests. If this number becomes zero before decrementing, this will stop animating the status bar network activity indicator. + */ +- (void)decrementActivityCount; + +@end + +#endif diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m new file mode 100644 index 0000000..68cbd33 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m @@ -0,0 +1,157 @@ +// AFNetworkActivityIndicatorManager.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFNetworkActivityIndicatorManager.h" + +#import "AFHTTPRequestOperation.h" + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +static NSTimeInterval const kAFNetworkActivityIndicatorInvisibilityDelay = 0.17; + +@interface AFNetworkActivityIndicatorManager () +@property (readwrite, nonatomic, assign) NSInteger activityCount; +@property (readwrite, nonatomic, strong) NSTimer *activityIndicatorVisibilityTimer; +@property (readonly, nonatomic, getter = isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible; + +- (void)updateNetworkActivityIndicatorVisibility; +- (void)updateNetworkActivityIndicatorVisibilityDelayed; +@end + +@implementation AFNetworkActivityIndicatorManager +@synthesize activityCount = _activityCount; +@synthesize activityIndicatorVisibilityTimer = _activityIndicatorVisibilityTimer; +@synthesize enabled = _enabled; +@dynamic networkActivityIndicatorVisible; + ++ (instancetype)sharedManager { + static AFNetworkActivityIndicatorManager *_sharedManager = nil; + static dispatch_once_t oncePredicate; + dispatch_once(&oncePredicate, ^{ + _sharedManager = [[self alloc] init]; + }); + + return _sharedManager; +} + ++ (NSSet *)keyPathsForValuesAffectingIsNetworkActivityIndicatorVisible { + return [NSSet setWithObject:@"activityCount"]; +} + +- (id)init { + self = [super init]; + if (!self) { + return nil; + } + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkingOperationDidStart:) name:AFNetworkingOperationDidStartNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkingOperationDidFinish:) name:AFNetworkingOperationDidFinishNotification object:nil]; + + return self; +} + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [_activityIndicatorVisibilityTimer invalidate]; + +} + +- (void)updateNetworkActivityIndicatorVisibilityDelayed { + if (self.enabled) { + // Delay hiding of activity indicator for a short interval, to avoid flickering + if (![self isNetworkActivityIndicatorVisible]) { + [self.activityIndicatorVisibilityTimer invalidate]; + self.activityIndicatorVisibilityTimer = [NSTimer timerWithTimeInterval:kAFNetworkActivityIndicatorInvisibilityDelay target:self selector:@selector(updateNetworkActivityIndicatorVisibility) userInfo:nil repeats:NO]; + [[NSRunLoop mainRunLoop] addTimer:self.activityIndicatorVisibilityTimer forMode:NSRunLoopCommonModes]; + } else { + [self performSelectorOnMainThread:@selector(updateNetworkActivityIndicatorVisibility) withObject:nil waitUntilDone:NO modes:[NSArray arrayWithObject:NSRunLoopCommonModes]]; + } + } +} + +- (BOOL)isNetworkActivityIndicatorVisible { + return _activityCount > 0; +} + +- (void)updateNetworkActivityIndicatorVisibility { + [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:[self isNetworkActivityIndicatorVisible]]; +} + +// Not exposed, but used if activityCount is set via KVC. +- (NSInteger)activityCount { + return _activityCount; +} + +- (void)setActivityCount:(NSInteger)activityCount { + @synchronized(self) { + _activityCount = activityCount; + } + + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateNetworkActivityIndicatorVisibilityDelayed]; + }); +} + +- (void)incrementActivityCount { + [self willChangeValueForKey:@"activityCount"]; + @synchronized(self) { + _activityCount++; + } + [self didChangeValueForKey:@"activityCount"]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateNetworkActivityIndicatorVisibilityDelayed]; + }); +} + +- (void)decrementActivityCount { + [self willChangeValueForKey:@"activityCount"]; + @synchronized(self) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + _activityCount = MAX(_activityCount - 1, 0); +#pragma clang diagnostic pop + } + [self didChangeValueForKey:@"activityCount"]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateNetworkActivityIndicatorVisibilityDelayed]; + }); +} + +- (void)networkingOperationDidStart:(NSNotification *)notification { + AFURLConnectionOperation *connectionOperation = [notification object]; + if (connectionOperation.request.URL) { + [self incrementActivityCount]; + } +} + +- (void)networkingOperationDidFinish:(NSNotification *)notification { + AFURLConnectionOperation *connectionOperation = [notification object]; + if (connectionOperation.request.URL) { + [self decrementActivityCount]; + } +} + +@end + +#endif diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFNetworking.h b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFNetworking.h new file mode 100644 index 0000000..b8f840b --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFNetworking.h @@ -0,0 +1,43 @@ +// AFNetworking.h +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import + +#ifndef _AFNETWORKING_ + #define _AFNETWORKING_ + + #import "AFURLConnectionOperation.h" + + #import "AFHTTPRequestOperation.h" + #import "AFJSONRequestOperation.h" + #import "AFXMLRequestOperation.h" + #import "AFPropertyListRequestOperation.h" + #import "AFHTTPClient.h" + + #import "AFImageRequestOperation.h" + + #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + #import "AFNetworkActivityIndicatorManager.h" + #import "UIImageView+AFNetworking.h" + #endif +#endif /* _AFNETWORKING_ */ diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h new file mode 100644 index 0000000..9ebb605 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h @@ -0,0 +1,68 @@ +// AFPropertyListRequestOperation.h +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import "AFHTTPRequestOperation.h" + +/** + `AFPropertyListRequestOperation` is a subclass of `AFHTTPRequestOperation` for downloading and deserializing objects with property list (plist) response data. + + ## Acceptable Content Types + + By default, `AFPropertyListRequestOperation` accepts the following MIME types: + + - `application/x-plist` + */ +@interface AFPropertyListRequestOperation : AFHTTPRequestOperation + +///---------------------------- +/// @name Getting Response Data +///---------------------------- + +/** + An object deserialized from a plist constructed using the response data. + */ +@property (readonly, nonatomic) id responsePropertyList; + +///-------------------------------------- +/// @name Managing Property List Behavior +///-------------------------------------- + +/** + One of the `NSPropertyListMutabilityOptions` options, specifying the mutability of objects deserialized from the property list. By default, this is `NSPropertyListImmutable`. + */ +@property (nonatomic, assign) NSPropertyListReadOptions propertyListReadOptions; + +/** + Creates and returns an `AFPropertyListRequestOperation` object and sets the specified success and failure callbacks. + + @param urlRequest The request object to be loaded asynchronously during execution of the operation + @param success A block object to be executed when the operation finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the object deserialized from a plist constructed using the response data. + @param failure A block object to be executed when the operation finishes unsuccessfully, or that finishes successfully, but encountered an error while deserializing the object from a property list. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the error describing the network or parsing error that occurred. + + @return A new property list request operation + */ ++ (instancetype)propertyListRequestOperationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, id propertyList))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id propertyList))failure; + +@end diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m new file mode 100644 index 0000000..370e12b --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m @@ -0,0 +1,143 @@ +// AFPropertyListRequestOperation.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFPropertyListRequestOperation.h" + +static dispatch_queue_t property_list_request_operation_processing_queue() { + static dispatch_queue_t af_property_list_request_operation_processing_queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_property_list_request_operation_processing_queue = dispatch_queue_create("com.alamofire.networking.property-list-request.processing", DISPATCH_QUEUE_CONCURRENT); + }); + + return af_property_list_request_operation_processing_queue; +} + +@interface AFPropertyListRequestOperation () +@property (readwrite, nonatomic) id responsePropertyList; +@property (readwrite, nonatomic, assign) NSPropertyListFormat propertyListFormat; +@property (readwrite, nonatomic) NSError *propertyListError; +@end + +@implementation AFPropertyListRequestOperation +@synthesize responsePropertyList = _responsePropertyList; +@synthesize propertyListReadOptions = _propertyListReadOptions; +@synthesize propertyListFormat = _propertyListFormat; +@synthesize propertyListError = _propertyListError; + ++ (instancetype)propertyListRequestOperationWithRequest:(NSURLRequest *)request + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, id propertyList))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id propertyList))failure +{ + AFPropertyListRequestOperation *requestOperation = [(AFPropertyListRequestOperation *)[self alloc] initWithRequest:request]; + [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + if (success) { + success(operation.request, operation.response, responseObject); + } + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + if (failure) { + failure(operation.request, operation.response, error, [(AFPropertyListRequestOperation *)operation responsePropertyList]); + } + }]; + + return requestOperation; +} + +- (id)initWithRequest:(NSURLRequest *)urlRequest { + self = [super initWithRequest:urlRequest]; + if (!self) { + return nil; + } + + self.propertyListReadOptions = NSPropertyListImmutable; + + return self; +} + + +- (id)responsePropertyList { + if (!_responsePropertyList && [self.responseData length] > 0 && [self isFinished]) { + NSPropertyListFormat format; + NSError *error = nil; + self.responsePropertyList = [NSPropertyListSerialization propertyListWithData:self.responseData options:self.propertyListReadOptions format:&format error:&error]; + self.propertyListFormat = format; + self.propertyListError = error; + } + + return _responsePropertyList; +} + +- (NSError *)error { + if (_propertyListError) { + return _propertyListError; + } else { + return [super error]; + } +} + +#pragma mark - AFHTTPRequestOperation + ++ (NSSet *)acceptableContentTypes { + return [NSSet setWithObjects:@"application/x-plist", nil]; +} + ++ (BOOL)canProcessRequest:(NSURLRequest *)request { + return [[[request URL] pathExtension] isEqualToString:@"plist"] || [super canProcessRequest:request]; +} + +- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-retain-cycles" +#pragma clang diagnostic ignored "-Wgnu" + self.completionBlock = ^ { + if (self.error) { + if (failure) { + dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ + failure(self, self.error); + }); + } + } else { + dispatch_async(property_list_request_operation_processing_queue(), ^(void) { + id propertyList = self.responsePropertyList; + + if (self.propertyListError) { + if (failure) { + dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ + failure(self, self.error); + }); + } + } else { + if (success) { + dispatch_async(self.successCallbackQueue ?: dispatch_get_main_queue(), ^{ + success(self, propertyList); + }); + } + } + }); + } + }; +#pragma clang diagnostic pop +} + +@end diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h new file mode 100644 index 0000000..0ac9e10 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h @@ -0,0 +1,370 @@ +// AFURLConnectionOperation.h +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#import + +/** + `AFURLConnectionOperation` is a subclass of `NSOperation` that implements `NSURLConnection` delegate methods. + + ## Subclassing Notes + + This is the base class of all network request operations. You may wish to create your own subclass in order to implement additional `NSURLConnection` delegate methods (see "`NSURLConnection` Delegate Methods" below), or to provide additional properties and/or class constructors. + + If you are creating a subclass that communicates over the HTTP or HTTPS protocols, you may want to consider subclassing `AFHTTPRequestOperation` instead, as it supports specifying acceptable content types or status codes. + + ## NSURLConnection Delegate Methods + + `AFURLConnectionOperation` implements the following `NSURLConnection` delegate methods: + + - `connection:didReceiveResponse:` + - `connection:didReceiveData:` + - `connectionDidFinishLoading:` + - `connection:didFailWithError:` + - `connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:` + - `connection:willCacheResponse:` + - `connectionShouldUseCredentialStorage:` + - `connection:willSendRequestForAuthenticationChallenge:` + + If any of these methods are overridden in a subclass, they _must_ call the `super` implementation first. + + ## Class Constructors + + Class constructors, or methods that return an unowned instance, are the preferred way for subclasses to encapsulate any particular logic for handling the setup or parsing of response data. For instance, `AFJSONRequestOperation` provides `JSONRequestOperationWithRequest:success:failure:`, which takes block arguments, whose parameter on for a successful request is the JSON object initialized from the `response data`. + + ## Callbacks and Completion Blocks + + The built-in `completionBlock` provided by `NSOperation` allows for custom behavior to be executed after the request finishes. It is a common pattern for class constructors in subclasses to take callback block parameters, and execute them conditionally in the body of its `completionBlock`. Make sure to handle cancelled operations appropriately when setting a `completionBlock` (i.e. returning early before parsing response data). See the implementation of any of the `AFHTTPRequestOperation` subclasses for an example of this. + + Subclasses are strongly discouraged from overriding `setCompletionBlock:`, as `AFURLConnectionOperation`'s implementation includes a workaround to mitigate retain cycles, and what Apple rather ominously refers to as ["The Deallocation Problem"](http://developer.apple.com/library/ios/#technotes/tn2109/). + + ## SSL Pinning + + Relying on the CA trust model to validate SSL certificates exposes your app to security vulnerabilities, such as man-in-the-middle attacks. For applications that connect to known servers, SSL certificate pinning provides an increased level of security, by checking server certificate validity against those specified in the app bundle. + + SSL with certificate pinning is strongly recommended for any application that transmits sensitive information to an external webservice. + + When `defaultSSLPinningMode` is defined on `AFHTTPClient` and the Security framework is linked, connections will be validated on all matching certificates with a `.cer` extension in the bundle root. + + ## NSCoding & NSCopying Conformance + + `AFURLConnectionOperation` conforms to the `NSCoding` and `NSCopying` protocols, allowing operations to be archived to disk, and copied in memory, respectively. However, because of the intrinsic limitations of capturing the exact state of an operation at a particular moment, there are some important caveats to keep in mind: + + ### NSCoding Caveats + + - Encoded operations do not include any block or stream properties. Be sure to set `completionBlock`, `outputStream`, and any callback blocks as necessary when using `-initWithCoder:` or `NSKeyedUnarchiver`. + - Operations are paused on `encodeWithCoder:`. If the operation was encoded while paused or still executing, its archived state will return `YES` for `isReady`. Otherwise, the state of an operation when encoding will remain unchanged. + + ### NSCopying Caveats + + - `-copy` and `-copyWithZone:` return a new operation with the `NSURLRequest` of the original. So rather than an exact copy of the operation at that particular instant, the copying mechanism returns a completely new instance, which can be useful for retrying operations. + - A copy of an operation will not include the `outputStream` of the original. + - Operation copies do not include `completionBlock`. `completionBlock` often strongly captures a reference to `self`, which would otherwise have the unintuitive side-effect of pointing to the _original_ operation when copied. + */ + +typedef enum { + AFSSLPinningModeNone, + AFSSLPinningModePublicKey, + AFSSLPinningModeCertificate, +} AFURLConnectionOperationSSLPinningMode; + +@interface AFURLConnectionOperation : NSOperation = 50000) || \ + (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080) +NSURLConnectionDataDelegate, +#endif +NSCoding, NSCopying> + +///------------------------------- +/// @name Accessing Run Loop Modes +///------------------------------- + +/** + The run loop modes in which the operation will run on the network thread. By default, this is a single-member set containing `NSRunLoopCommonModes`. + */ +@property (nonatomic, strong) NSSet *runLoopModes; + +///----------------------------------------- +/// @name Getting URL Connection Information +///----------------------------------------- + +/** + The request used by the operation's connection. + */ +@property (readonly, nonatomic, strong) NSURLRequest *request; + +/** + The last response received by the operation's connection. + */ +@property (readonly, nonatomic, strong) NSURLResponse *response; + +/** + The error, if any, that occurred in the lifecycle of the request. + */ +@property (readonly, nonatomic, strong) NSError *error; + +/** + Whether the connection should accept an invalid SSL certificate. + + If `_AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_` is set, this property defaults to `YES` for backwards compatibility. Otherwise, this property defaults to `NO`. + */ +@property (nonatomic, assign) BOOL allowsInvalidSSLCertificate; + +///---------------------------- +/// @name Getting Response Data +///---------------------------- + +/** + The data received during the request. + */ +@property (readonly, nonatomic, strong) NSData *responseData; + +/** + The string representation of the response data. + */ +@property (readonly, nonatomic, copy) NSString *responseString; + +/** + The string encoding of the response. + + If the response does not specify a valid string encoding, `responseStringEncoding` will return `NSUTF8StringEncoding`. + */ +@property (readonly, nonatomic, assign) NSStringEncoding responseStringEncoding; + +///------------------------------- +/// @name Managing URL Credentials +///------------------------------- + +/** + Whether the URL connection should consult the credential storage for authenticating the connection. `YES` by default. + + This is the value that is returned in the `NSURLConnectionDelegate` method `-connectionShouldUseCredentialStorage:`. + */ +@property (nonatomic, assign) BOOL shouldUseCredentialStorage; + +/** + The credential used for authentication challenges in `-connection:didReceiveAuthenticationChallenge:`. + + This will be overridden by any shared credentials that exist for the username or password of the request URL, if present. + */ +@property (nonatomic, strong) NSURLCredential *credential; + +/** + The pinning mode which will be used for SSL connections. `AFSSLPinningModePublicKey` by default. + + SSL Pinning requires that the Security framework is linked with the binary. See the "SSL Pinning" section in the `AFURLConnectionOperation`" header for more information. + */ +@property (nonatomic, assign) AFURLConnectionOperationSSLPinningMode SSLPinningMode; + +///------------------------ +/// @name Accessing Streams +///------------------------ + +/** + The input stream used to read data to be sent during the request. + + This property acts as a proxy to the `HTTPBodyStream` property of `request`. + */ +@property (nonatomic, strong) NSInputStream *inputStream; + +/** + The output stream that is used to write data received until the request is finished. + + By default, data is accumulated into a buffer that is stored into `responseData` upon completion of the request. When `outputStream` is set, the data will not be accumulated into an internal buffer, and as a result, the `responseData` property of the completed request will be `nil`. The output stream will be scheduled in the network thread runloop upon being set. + */ +@property (nonatomic, strong) NSOutputStream *outputStream; + +///--------------------------------------------- +/// @name Managing Request Operation Information +///--------------------------------------------- + +/** + The user info dictionary for the receiver. + */ +@property (nonatomic, strong) NSDictionary *userInfo; + +///------------------------------------------------------ +/// @name Initializing an AFURLConnectionOperation Object +///------------------------------------------------------ + +/** + Initializes and returns a newly allocated operation object with a url connection configured with the specified url request. + + This is the designated initializer. + + @param urlRequest The request object to be used by the operation connection. + */ +- (id)initWithRequest:(NSURLRequest *)urlRequest; + +///---------------------------------- +/// @name Pausing / Resuming Requests +///---------------------------------- + +/** + Pauses the execution of the request operation. + + A paused operation returns `NO` for `-isReady`, `-isExecuting`, and `-isFinished`. As such, it will remain in an `NSOperationQueue` until it is either cancelled or resumed. Pausing a finished, cancelled, or paused operation has no effect. + */ +- (void)pause; + +/** + Whether the request operation is currently paused. + + @return `YES` if the operation is currently paused, otherwise `NO`. + */ +- (BOOL)isPaused; + +/** + Resumes the execution of the paused request operation. + + Pause/Resume behavior varies depending on the underlying implementation for the operation class. In its base implementation, resuming a paused requests restarts the original request. However, since HTTP defines a specification for how to request a specific content range, `AFHTTPRequestOperation` will resume downloading the request from where it left off, instead of restarting the original request. + */ +- (void)resume; + +///---------------------------------------------- +/// @name Configuring Backgrounding Task Behavior +///---------------------------------------------- + +/** + Specifies that the operation should continue execution after the app has entered the background, and the expiration handler for that background task. + + @param handler A handler to be called shortly before the application’s remaining background time reaches 0. The handler is wrapped in a block that cancels the operation, and cleans up and marks the end of execution, unlike the `handler` parameter in `UIApplication -beginBackgroundTaskWithExpirationHandler:`, which expects this to be done in the handler itself. The handler is called synchronously on the main thread, thus blocking the application’s suspension momentarily while the application is notified. + */ +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +- (void)setShouldExecuteAsBackgroundTaskWithExpirationHandler:(void (^)(void))handler; +#endif + +///--------------------------------- +/// @name Setting Progress Callbacks +///--------------------------------- + +/** + Sets a callback to be called when an undetermined number of bytes have been uploaded to the server. + + @param block A block object to be called when an undetermined number of bytes have been uploaded to the server. This block has no return value and takes three arguments: the number of bytes written since the last time the upload progress block was called, the total bytes written, and the total bytes expected to be written during the request, as initially determined by the length of the HTTP body. This block may be called multiple times, and will execute on the main thread. + */ +- (void)setUploadProgressBlock:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))block; + +/** + Sets a callback to be called when an undetermined number of bytes have been downloaded from the server. + + @param block A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the main thread. + */ +- (void)setDownloadProgressBlock:(void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead))block; + +///------------------------------------------------- +/// @name Setting NSURLConnection Delegate Callbacks +///------------------------------------------------- + +/** + Sets a block to be executed when the connection will authenticate a challenge in order to download its request, as handled by the `NSURLConnectionDelegate` method `connection:willSendRequestForAuthenticationChallenge:`. + + @param block A block object to be executed when the connection will authenticate a challenge in order to download its request. The block has no return type and takes two arguments: the URL connection object, and the challenge that must be authenticated. This block must invoke one of the challenge-responder methods (NSURLAuthenticationChallengeSender protocol). + + If `allowsInvalidSSLCertificate` is set to YES, `connection:willSendRequestForAuthenticationChallenge:` will attempt to have the challenge sender use credentials with invalid SSL certificates. + */ +- (void)setWillSendRequestForAuthenticationChallengeBlock:(void (^)(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge))block; + +/** + Sets a block to be executed when the server redirects the request from one URL to another URL, or when the request URL changed by the `NSURLProtocol` subclass handling the request in order to standardize its format, as handled by the `NSURLConnectionDelegate` method `connection:willSendRequest:redirectResponse:`. + + @param block A block object to be executed when the request URL was changed. The block returns an `NSURLRequest` object, the URL request to redirect, and takes three arguments: the URL connection object, the the proposed redirected request, and the URL response that caused the redirect. + */ +- (void)setRedirectResponseBlock:(NSURLRequest * (^)(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse))block; + +/** + Sets a block to be executed to modify the response a connection will cache, if any, as handled by the `NSURLConnectionDelegate` method `connection:willCacheResponse:`. + + @param block A block object to be executed to determine what response a connection will cache, if any. The block returns an `NSCachedURLResponse` object, the cached response to store in memory or `nil` to prevent the response from being cached, and takes two arguments: the URL connection object, and the cached response provided for the request. + */ +- (void)setCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse))block; + +@end + +///---------------- +/// @name Constants +///---------------- + +/** + ## SSL Pinning Options + + The following constants are provided by `AFURLConnectionOperation` as possible SSL Pinning options. + + enum { + AFSSLPinningModeNone, + AFSSLPinningModePublicKey, + AFSSLPinningModeCertificate, + } + + `AFSSLPinningModeNone` + Do not pin SSL connections + + `AFSSLPinningModePublicKey` + Pin SSL connections to certificate public key (SPKI). + + `AFSSLPinningModeCertificate` + Pin SSL connections to exact certificate. This may cause problems when your certificate expires and needs re-issuance. + + ## User info dictionary keys + + These keys may exist in the user info dictionary, in addition to those defined for NSError. + + - `NSString * const AFNetworkingOperationFailingURLRequestErrorKey` + - `NSString * const AFNetworkingOperationFailingURLResponseErrorKey` + + ### Constants + + `AFNetworkingOperationFailingURLRequestErrorKey` + The corresponding value is an `NSURLRequest` containing the request of the operation associated with an error. This key is only present in the `AFNetworkingErrorDomain`. + + `AFNetworkingOperationFailingURLResponseErrorKey` + The corresponding value is an `NSURLResponse` containing the response of the operation associated with an error. This key is only present in the `AFNetworkingErrorDomain`. + + ## Error Domains + + The following error domain is predefined. + + - `NSString * const AFNetworkingErrorDomain` + + ### Constants + + `AFNetworkingErrorDomain` + AFNetworking errors. Error codes for `AFNetworkingErrorDomain` correspond to codes in `NSURLErrorDomain`. + */ +extern NSString * const AFNetworkingErrorDomain; +extern NSString * const AFNetworkingOperationFailingURLRequestErrorKey; +extern NSString * const AFNetworkingOperationFailingURLResponseErrorKey; + +///-------------------- +/// @name Notifications +///-------------------- + +/** + Posted when an operation begins executing. + */ +extern NSString * const AFNetworkingOperationDidStartNotification; + +/** + Posted when an operation finishes. + */ +extern NSString * const AFNetworkingOperationDidFinishNotification; diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m new file mode 100644 index 0000000..5885369 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m @@ -0,0 +1,862 @@ +// AFURLConnectionOperation.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFURLConnectionOperation.h" + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import +#endif + +#if !__has_feature(objc_arc) +#error AFNetworking must be built with ARC. +// You can turn on ARC for only AFNetworking files by adding -fobjc-arc to the build phase for each of its files. +#endif + +typedef enum { + AFOperationPausedState = -1, + AFOperationReadyState = 1, + AFOperationExecutingState = 2, + AFOperationFinishedState = 3, +} _AFOperationState; + +typedef signed short AFOperationState; + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +typedef UIBackgroundTaskIdentifier AFBackgroundTaskIdentifier; +#else +typedef id AFBackgroundTaskIdentifier; +#endif + +static NSString * const kAFNetworkingLockName = @"com.alamofire.networking.operation.lock"; + +NSString * const AFNetworkingErrorDomain = @"AFNetworkingErrorDomain"; +NSString * const AFNetworkingOperationFailingURLRequestErrorKey = @"AFNetworkingOperationFailingURLRequestErrorKey"; +NSString * const AFNetworkingOperationFailingURLResponseErrorKey = @"AFNetworkingOperationFailingURLResponseErrorKey"; + +NSString * const AFNetworkingOperationDidStartNotification = @"com.alamofire.networking.operation.start"; +NSString * const AFNetworkingOperationDidFinishNotification = @"com.alamofire.networking.operation.finish"; + +typedef void (^AFURLConnectionOperationProgressBlock)(NSUInteger bytes, long long totalBytes, long long totalBytesExpected); +typedef void (^AFURLConnectionOperationAuthenticationChallengeBlock)(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge); +typedef NSCachedURLResponse * (^AFURLConnectionOperationCacheResponseBlock)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse); +typedef NSURLRequest * (^AFURLConnectionOperationRedirectResponseBlock)(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse); + +static inline NSString * AFKeyPathFromOperationState(AFOperationState state) { + switch (state) { + case AFOperationReadyState: + return @"isReady"; + case AFOperationExecutingState: + return @"isExecuting"; + case AFOperationFinishedState: + return @"isFinished"; + case AFOperationPausedState: + return @"isPaused"; + default: + return @"state"; + } +} + +static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperationState toState, BOOL isCancelled) { + switch (fromState) { + case AFOperationReadyState: + switch (toState) { + case AFOperationPausedState: + case AFOperationExecutingState: + return YES; + case AFOperationFinishedState: + return isCancelled; + default: + return NO; + } + case AFOperationExecutingState: + switch (toState) { + case AFOperationPausedState: + case AFOperationFinishedState: + return YES; + default: + return NO; + } + case AFOperationFinishedState: + return NO; + case AFOperationPausedState: + return toState == AFOperationReadyState; + default: + return YES; + } +} + +#if !defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +static NSData *AFSecKeyGetData(SecKeyRef key) { + CFDataRef data = NULL; + +#if defined(NS_BLOCK_ASSERTIONS) + SecItemExport(key, kSecFormatUnknown, kSecItemPemArmour, NULL, &data); +#else + OSStatus status = SecItemExport(key, kSecFormatUnknown, kSecItemPemArmour, NULL, &data); + NSCAssert(status == errSecSuccess, @"SecItemExport error: %ld", (long int)status); +#endif + + NSCParameterAssert(data); + + return (__bridge_transfer NSData *)data; +} +#endif + +static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + return [(__bridge id)key1 isEqual:(__bridge id)key2]; +#else + return [AFSecKeyGetData(key1) isEqual:AFSecKeyGetData(key2)]; +#endif +} + +@interface AFURLConnectionOperation () +@property (readwrite, nonatomic, assign) AFOperationState state; +@property (readwrite, nonatomic, assign, getter = isCancelled) BOOL cancelled; +@property (readwrite, nonatomic, strong) NSRecursiveLock *lock; +@property (readwrite, nonatomic, strong) NSURLConnection *connection; +@property (readwrite, nonatomic, strong) NSURLRequest *request; +@property (readwrite, nonatomic, strong) NSURLResponse *response; +@property (readwrite, nonatomic, strong) NSError *error; +@property (readwrite, nonatomic, strong) NSData *responseData; +@property (readwrite, nonatomic, copy) NSString *responseString; +@property (readwrite, nonatomic, assign) NSStringEncoding responseStringEncoding; +@property (readwrite, nonatomic, assign) long long totalBytesRead; +@property (readwrite, nonatomic, assign) AFBackgroundTaskIdentifier backgroundTaskIdentifier; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationProgressBlock uploadProgress; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationProgressBlock downloadProgress; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationAuthenticationChallengeBlock authenticationChallenge; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationCacheResponseBlock cacheResponse; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationRedirectResponseBlock redirectResponse; + +- (void)operationDidStart; +- (void)finish; +- (void)cancelConnection; +@end + +@implementation AFURLConnectionOperation +@synthesize state = _state; +@synthesize cancelled = _cancelled; +@synthesize connection = _connection; +@synthesize runLoopModes = _runLoopModes; +@synthesize request = _request; +@synthesize response = _response; +@synthesize error = _error; +@synthesize allowsInvalidSSLCertificate = _allowsInvalidSSLCertificate; +@synthesize responseData = _responseData; +@synthesize responseString = _responseString; +@synthesize responseStringEncoding = _responseStringEncoding; +@synthesize totalBytesRead = _totalBytesRead; +@dynamic inputStream; +@synthesize outputStream = _outputStream; +@synthesize credential = _credential; +@synthesize SSLPinningMode = _SSLPinningMode; +@synthesize shouldUseCredentialStorage = _shouldUseCredentialStorage; +@synthesize userInfo = _userInfo; +@synthesize backgroundTaskIdentifier = _backgroundTaskIdentifier; +@synthesize uploadProgress = _uploadProgress; +@synthesize downloadProgress = _downloadProgress; +@synthesize authenticationChallenge = _authenticationChallenge; +@synthesize cacheResponse = _cacheResponse; +@synthesize redirectResponse = _redirectResponse; +@synthesize lock = _lock; + ++ (void)networkRequestThreadEntryPoint:(id __unused)object { + @autoreleasepool { + [[NSThread currentThread] setName:@"AFNetworking"]; + + NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; + [runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode]; + [runLoop run]; + } +} + ++ (NSThread *)networkRequestThread { + static NSThread *_networkRequestThread = nil; + static dispatch_once_t oncePredicate; + dispatch_once(&oncePredicate, ^{ + _networkRequestThread = [[NSThread alloc] initWithTarget:self selector:@selector(networkRequestThreadEntryPoint:) object:nil]; + [_networkRequestThread start]; + }); + + return _networkRequestThread; +} + ++ (NSArray *)pinnedCertificates { + static NSArray *_pinnedCertificates = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSBundle *bundle = [NSBundle mainBundle]; + NSArray *paths = [bundle pathsForResourcesOfType:@"cer" inDirectory:@"."]; + + NSMutableArray *certificates = [NSMutableArray arrayWithCapacity:[paths count]]; + for (NSString *path in paths) { + NSData *certificateData = [NSData dataWithContentsOfFile:path]; + [certificates addObject:certificateData]; + } + + _pinnedCertificates = [[NSArray alloc] initWithArray:certificates]; + }); + + return _pinnedCertificates; +} + ++ (NSArray *)pinnedPublicKeys { + static NSArray *_pinnedPublicKeys = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSArray *pinnedCertificates = [self pinnedCertificates]; + NSMutableArray *publicKeys = [NSMutableArray arrayWithCapacity:[pinnedCertificates count]]; + + for (NSData *data in pinnedCertificates) { + SecCertificateRef allowedCertificate = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)data); + NSParameterAssert(allowedCertificate); + + SecCertificateRef allowedCertificates[] = {allowedCertificate}; + CFArrayRef certificates = CFArrayCreate(NULL, (const void **)allowedCertificates, 1, NULL); + + SecPolicyRef policy = SecPolicyCreateBasicX509(); + SecTrustRef allowedTrust = NULL; + OSStatus status = SecTrustCreateWithCertificates(certificates, policy, &allowedTrust); + NSAssert(status == errSecSuccess, @"SecTrustCreateWithCertificates error: %ld", (long int)status); + if (status == errSecSuccess && allowedTrust) { + SecTrustResultType result = 0; + status = SecTrustEvaluate(allowedTrust, &result); + NSAssert(status == errSecSuccess, @"SecTrustEvaluate error: %ld", (long int)status); + if (status == errSecSuccess) { + SecKeyRef allowedPublicKey = SecTrustCopyPublicKey(allowedTrust); + NSParameterAssert(allowedPublicKey); + if (allowedPublicKey) { + [publicKeys addObject:(__bridge_transfer id)allowedPublicKey]; + } + } + + CFRelease(allowedTrust); + } + + CFRelease(policy); + CFRelease(certificates); + CFRelease(allowedCertificate); + } + + _pinnedPublicKeys = [[NSArray alloc] initWithArray:publicKeys]; + }); + + return _pinnedPublicKeys; +} + +- (id)initWithRequest:(NSURLRequest *)urlRequest { + NSParameterAssert(urlRequest); + + self = [super init]; + if (!self) { + return nil; + } + + self.lock = [[NSRecursiveLock alloc] init]; + self.lock.name = kAFNetworkingLockName; + + self.runLoopModes = [NSSet setWithObject:NSRunLoopCommonModes]; + + self.request = urlRequest; + + self.shouldUseCredentialStorage = YES; + + // #ifdef included for backwards-compatibility +#ifdef _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_ + self.allowsInvalidSSLCertificate = YES; +#endif + + self.state = AFOperationReadyState; + + return self; +} + +- (void)dealloc { + if (_outputStream) { + [_outputStream close]; + _outputStream = nil; + } + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + if (_backgroundTaskIdentifier) { + [[UIApplication sharedApplication] endBackgroundTask:_backgroundTaskIdentifier]; + _backgroundTaskIdentifier = UIBackgroundTaskInvalid; + } +#endif +} + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, state: %@, cancelled: %@ request: %@, response: %@>", NSStringFromClass([self class]), self, AFKeyPathFromOperationState(self.state), ([self isCancelled] ? @"YES" : @"NO"), self.request, self.response]; +} + +- (void)setCompletionBlock:(void (^)(void))block { + [self.lock lock]; + if (!block) { + [super setCompletionBlock:nil]; + } else { + __weak __typeof(&*self)weakSelf = self; + [super setCompletionBlock:^ { + __strong __typeof(&*weakSelf)strongSelf = weakSelf; + + block(); + [strongSelf setCompletionBlock:nil]; + }]; + } + [self.lock unlock]; +} + +- (NSInputStream *)inputStream { + return self.request.HTTPBodyStream; +} + +- (void)setInputStream:(NSInputStream *)inputStream { + [self willChangeValueForKey:@"inputStream"]; + NSMutableURLRequest *mutableRequest = [self.request mutableCopy]; + mutableRequest.HTTPBodyStream = inputStream; + self.request = mutableRequest; + [self didChangeValueForKey:@"inputStream"]; +} + +- (NSOutputStream *)outputStream { + if (!_outputStream) { + self.outputStream = [NSOutputStream outputStreamToMemory]; + } + + return _outputStream; +} + +- (void)setOutputStream:(NSOutputStream *)outputStream { + [self.lock lock]; + if (outputStream != _outputStream) { + [self willChangeValueForKey:@"outputStream"]; + if (_outputStream) { + [_outputStream close]; + } + _outputStream = outputStream; + [self didChangeValueForKey:@"outputStream"]; + } + [self.lock unlock]; +} + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +- (void)setShouldExecuteAsBackgroundTaskWithExpirationHandler:(void (^)(void))handler { + [self.lock lock]; + if (!self.backgroundTaskIdentifier) { + UIApplication *application = [UIApplication sharedApplication]; + __weak __typeof(&*self)weakSelf = self; + self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{ + __strong __typeof(&*weakSelf)strongSelf = weakSelf; + + if (handler) { + handler(); + } + + if (strongSelf) { + [strongSelf cancel]; + + [application endBackgroundTask:strongSelf.backgroundTaskIdentifier]; + strongSelf.backgroundTaskIdentifier = UIBackgroundTaskInvalid; + } + }]; + } + [self.lock unlock]; +} +#endif + +- (void)setUploadProgressBlock:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))block { + self.uploadProgress = block; +} + +- (void)setDownloadProgressBlock:(void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead))block { + self.downloadProgress = block; +} + +- (void)setWillSendRequestForAuthenticationChallengeBlock:(void (^)(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge))block { + self.authenticationChallenge = block; +} + +- (void)setCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse))block { + self.cacheResponse = block; +} + +- (void)setRedirectResponseBlock:(NSURLRequest * (^)(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse))block { + self.redirectResponse = block; +} + +- (void)setState:(AFOperationState)state { + if (!AFStateTransitionIsValid(self.state, state, [self isCancelled])) { + return; + } + + [self.lock lock]; + NSString *oldStateKey = AFKeyPathFromOperationState(self.state); + NSString *newStateKey = AFKeyPathFromOperationState(state); + + [self willChangeValueForKey:newStateKey]; + [self willChangeValueForKey:oldStateKey]; + _state = state; + [self didChangeValueForKey:oldStateKey]; + [self didChangeValueForKey:newStateKey]; + [self.lock unlock]; +} + +- (NSString *)responseString { + [self.lock lock]; + if (!_responseString && self.response && self.responseData) { + self.responseString = [[NSString alloc] initWithData:self.responseData encoding:self.responseStringEncoding]; + } + [self.lock unlock]; + + return _responseString; +} + +- (NSStringEncoding)responseStringEncoding { + [self.lock lock]; + if (!_responseStringEncoding && self.response) { + NSStringEncoding stringEncoding = NSUTF8StringEncoding; + if (self.response.textEncodingName) { + CFStringEncoding IANAEncoding = CFStringConvertIANACharSetNameToEncoding((__bridge CFStringRef)self.response.textEncodingName); + if (IANAEncoding != kCFStringEncodingInvalidId) { + stringEncoding = CFStringConvertEncodingToNSStringEncoding(IANAEncoding); + } + } + + self.responseStringEncoding = stringEncoding; + } + [self.lock unlock]; + + return _responseStringEncoding; +} + +- (void)pause { + if ([self isPaused] || [self isFinished] || [self isCancelled]) { + return; + } + + [self.lock lock]; + + if ([self isExecuting]) { + [self.connection performSelector:@selector(cancel) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; + + dispatch_async(dispatch_get_main_queue(), ^{ + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + [notificationCenter postNotificationName:AFNetworkingOperationDidFinishNotification object:self]; + }); + } + + self.state = AFOperationPausedState; + + [self.lock unlock]; +} + +- (BOOL)isPaused { + return self.state == AFOperationPausedState; +} + +- (void)resume { + if (![self isPaused]) { + return; + } + + [self.lock lock]; + self.state = AFOperationReadyState; + + [self start]; + [self.lock unlock]; +} + +#pragma mark - NSOperation + +- (BOOL)isReady { + return self.state == AFOperationReadyState && [super isReady]; +} + +- (BOOL)isExecuting { + return self.state == AFOperationExecutingState; +} + +- (BOOL)isFinished { + return self.state == AFOperationFinishedState; +} + +- (BOOL)isConcurrent { + return YES; +} + +- (void)start { + [self.lock lock]; + if ([self isReady]) { + self.state = AFOperationExecutingState; + + [self performSelector:@selector(operationDidStart) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; + } + [self.lock unlock]; +} + +- (void)operationDidStart { + [self.lock lock]; + if (![self isCancelled]) { + self.connection = [[NSURLConnection alloc] initWithRequest:self.request delegate:self startImmediately:NO]; + + NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; + for (NSString *runLoopMode in self.runLoopModes) { + [self.connection scheduleInRunLoop:runLoop forMode:runLoopMode]; + [self.outputStream scheduleInRunLoop:runLoop forMode:runLoopMode]; + } + + [self.connection start]; + } + [self.lock unlock]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingOperationDidStartNotification object:self]; + }); + + if ([self isCancelled]) { + NSDictionary *userInfo = nil; + if ([self.request URL]) { + userInfo = [NSDictionary dictionaryWithObject:[self.request URL] forKey:NSURLErrorFailingURLErrorKey]; + } + self.error = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCancelled userInfo:userInfo]; + + [self finish]; + } +} + +- (void)finish { + self.state = AFOperationFinishedState; + + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingOperationDidFinishNotification object:self]; + }); +} + +- (void)cancel { + [self.lock lock]; + if (![self isFinished] && ![self isCancelled]) { + [self willChangeValueForKey:@"isCancelled"]; + _cancelled = YES; + [super cancel]; + [self didChangeValueForKey:@"isCancelled"]; + + // Cancel the connection on the thread it runs on to prevent race conditions + [self performSelector:@selector(cancelConnection) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; + } + [self.lock unlock]; +} + +- (void)cancelConnection { + NSDictionary *userInfo = nil; + if ([self.request URL]) { + userInfo = [NSDictionary dictionaryWithObject:[self.request URL] forKey:NSURLErrorFailingURLErrorKey]; + } + NSError *error = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCancelled userInfo:userInfo]; + + if (![self isFinished] && self.connection) { + [self.connection cancel]; + [self performSelector:@selector(connection:didFailWithError:) withObject:self.connection withObject:error]; + } +} + +#pragma mark - NSURLConnectionDelegate + +- (void)connection:(NSURLConnection *)connection +willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge +{ + if (self.authenticationChallenge) { + self.authenticationChallenge(connection, challenge); + return; + } + + if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { + SecTrustRef serverTrust = challenge.protectionSpace.serverTrust; + + SecPolicyRef policy = SecPolicyCreateBasicX509(); + SecTrustEvaluate(serverTrust, NULL); + CFIndex certificateCount = SecTrustGetCertificateCount(serverTrust); + NSMutableArray *trustChain = [NSMutableArray arrayWithCapacity:certificateCount]; + + for (CFIndex i = 0; i < certificateCount; i++) { + SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, i); + + if (self.SSLPinningMode == AFSSLPinningModeCertificate) { + [trustChain addObject:(__bridge_transfer NSData *)SecCertificateCopyData(certificate)]; + } else if (self.SSLPinningMode == AFSSLPinningModePublicKey) { + SecCertificateRef someCertificates[] = {certificate}; + CFArrayRef certificates = CFArrayCreate(NULL, (const void **)someCertificates, 1, NULL); + + SecTrustRef trust = NULL; + + OSStatus status = SecTrustCreateWithCertificates(certificates, policy, &trust); + NSAssert(status == errSecSuccess, @"SecTrustCreateWithCertificates error: %ld", (long int)status); + if (status == errSecSuccess && trust) { + SecTrustResultType result; + status = SecTrustEvaluate(trust, &result); + NSAssert(status == errSecSuccess, @"SecTrustEvaluate error: %ld", (long int)status); + if (status == errSecSuccess) { + [trustChain addObject:(__bridge_transfer id)SecTrustCopyPublicKey(trust)]; + } + + CFRelease(trust); + } + + CFRelease(certificates); + } + } + + CFRelease(policy); + + switch (self.SSLPinningMode) { + case AFSSLPinningModePublicKey: { + NSArray *pinnedPublicKeys = [self.class pinnedPublicKeys]; + NSAssert([pinnedPublicKeys count] > 0, @"AFSSLPinningModePublicKey needs at least one key file in the application bundle"); + + for (id publicKey in trustChain) { + for (id pinnedPublicKey in pinnedPublicKeys) { + if (AFSecKeyIsEqualToKey((__bridge SecKeyRef)publicKey, (__bridge SecKeyRef)pinnedPublicKey)) { + NSURLCredential *credential = [NSURLCredential credentialForTrust:serverTrust]; + [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; + return; + } + } + } + + NSLog(@"Error: Unknown Public Key during Pinning operation"); + [[challenge sender] cancelAuthenticationChallenge:challenge]; + break; + } + case AFSSLPinningModeCertificate: { + NSAssert([[self.class pinnedCertificates] count] > 0, @"AFSSLPinningModeCertificate needs at least one certificate file in the application bundle"); + for (id serverCertificateData in trustChain) { + if ([[self.class pinnedCertificates] containsObject:serverCertificateData]) { + NSURLCredential *credential = [NSURLCredential credentialForTrust:serverTrust]; + [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; + return; + } + } + + NSLog(@"Error: Unknown Certificate during Pinning operation"); + [[challenge sender] cancelAuthenticationChallenge:challenge]; + break; + } + case AFSSLPinningModeNone: { + if (self.allowsInvalidSSLCertificate){ + NSURLCredential *credential = [NSURLCredential credentialForTrust:serverTrust]; + [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; + } else { + SecTrustResultType result = 0; + OSStatus status = SecTrustEvaluate(serverTrust, &result); + NSAssert(status == errSecSuccess, @"SecTrustEvaluate error: %ld", (long int)status); + + if (status == errSecSuccess && (result == kSecTrustResultUnspecified || result == kSecTrustResultProceed)) { + NSURLCredential *credential = [NSURLCredential credentialForTrust:serverTrust]; + [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; + } else { + [[challenge sender] cancelAuthenticationChallenge:challenge]; + } + } + break; + } + } + } else { + if ([challenge previousFailureCount] == 0) { + if (self.credential) { + [[challenge sender] useCredential:self.credential forAuthenticationChallenge:challenge]; + } else { + [[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge]; + } + } else { + [[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge]; + } + } +} + +- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection __unused *)connection { + return self.shouldUseCredentialStorage; +} + +- (NSURLRequest *)connection:(NSURLConnection *)connection + willSendRequest:(NSURLRequest *)request + redirectResponse:(NSURLResponse *)redirectResponse +{ + if (self.redirectResponse) { + return self.redirectResponse(connection, request, redirectResponse); + } else { + return request; + } +} + +- (void)connection:(NSURLConnection __unused *)connection + didSendBodyData:(NSInteger)bytesWritten + totalBytesWritten:(NSInteger)totalBytesWritten +totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite +{ + if (self.uploadProgress) { + dispatch_async(dispatch_get_main_queue(), ^{ + self.uploadProgress((NSUInteger)bytesWritten, totalBytesWritten, totalBytesExpectedToWrite); + }); + } +} + +- (void)connection:(NSURLConnection __unused *)connection +didReceiveResponse:(NSURLResponse *)response +{ + self.response = response; + + [self.outputStream open]; +} + +- (void)connection:(NSURLConnection __unused *)connection + didReceiveData:(NSData *)data +{ + NSUInteger length = [data length]; + while (YES) { + NSUInteger totalNumberOfBytesWritten = 0; + if ([self.outputStream hasSpaceAvailable]) { + const uint8_t *dataBuffer = (uint8_t *)[data bytes]; + + NSInteger numberOfBytesWritten = 0; + while (totalNumberOfBytesWritten < length) { + numberOfBytesWritten = [self.outputStream write:&dataBuffer[0] maxLength:length]; + if (numberOfBytesWritten == -1) { + break; + } + + totalNumberOfBytesWritten += numberOfBytesWritten; + } + + break; + } + + if (self.outputStream.streamError) { + [self.connection cancel]; + [self performSelector:@selector(connection:didFailWithError:) withObject:self.connection withObject:self.outputStream.streamError]; + return; + } + } + + dispatch_async(dispatch_get_main_queue(), ^{ + self.totalBytesRead += length; + + if (self.downloadProgress) { + self.downloadProgress(length, self.totalBytesRead, self.response.expectedContentLength); + } + }); +} + +- (void)connectionDidFinishLoading:(NSURLConnection __unused *)connection { + self.responseData = [self.outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; + + [self.outputStream close]; + + [self finish]; + + self.connection = nil; +} + +- (void)connection:(NSURLConnection __unused *)connection + didFailWithError:(NSError *)error +{ + self.error = error; + + [self.outputStream close]; + + [self finish]; + + self.connection = nil; +} + +- (NSCachedURLResponse *)connection:(NSURLConnection *)connection + willCacheResponse:(NSCachedURLResponse *)cachedResponse +{ + if (self.cacheResponse) { + return self.cacheResponse(connection, cachedResponse); + } else { + if ([self isCancelled]) { + return nil; + } + + return cachedResponse; + } +} + +#pragma mark - NSCoding + +- (id)initWithCoder:(NSCoder *)aDecoder { + NSURLRequest *request = [aDecoder decodeObjectForKey:@"request"]; + + self = [self initWithRequest:request]; + if (!self) { + return nil; + } + + self.state = (AFOperationState)[aDecoder decodeIntegerForKey:@"state"]; + self.cancelled = [aDecoder decodeBoolForKey:@"isCancelled"]; + self.response = [aDecoder decodeObjectForKey:@"response"]; + self.error = [aDecoder decodeObjectForKey:@"error"]; + self.responseData = [aDecoder decodeObjectForKey:@"responseData"]; + self.totalBytesRead = [[aDecoder decodeObjectForKey:@"totalBytesRead"] longLongValue]; + self.allowsInvalidSSLCertificate = [[aDecoder decodeObjectForKey:@"allowsInvalidSSLCertificate"] boolValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [self pause]; + + [aCoder encodeObject:self.request forKey:@"request"]; + + switch (self.state) { + case AFOperationExecutingState: + case AFOperationPausedState: + [aCoder encodeInteger:AFOperationReadyState forKey:@"state"]; + break; + default: + [aCoder encodeInteger:self.state forKey:@"state"]; + break; + } + + [aCoder encodeBool:[self isCancelled] forKey:@"isCancelled"]; + [aCoder encodeObject:self.response forKey:@"response"]; + [aCoder encodeObject:self.error forKey:@"error"]; + [aCoder encodeObject:self.responseData forKey:@"responseData"]; + [aCoder encodeObject:[NSNumber numberWithLongLong:self.totalBytesRead] forKey:@"totalBytesRead"]; + [aCoder encodeObject:[NSNumber numberWithBool:self.allowsInvalidSSLCertificate] forKey:@"allowsInvalidSSLCertificate"]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFURLConnectionOperation *operation = [(AFURLConnectionOperation *)[[self class] allocWithZone:zone] initWithRequest:self.request]; + + operation.uploadProgress = self.uploadProgress; + operation.downloadProgress = self.downloadProgress; + operation.authenticationChallenge = self.authenticationChallenge; + operation.cacheResponse = self.cacheResponse; + operation.redirectResponse = self.redirectResponse; + operation.allowsInvalidSSLCertificate = self.allowsInvalidSSLCertificate; + + return operation; +} + +@end diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h new file mode 100644 index 0000000..4130932 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h @@ -0,0 +1,89 @@ +// AFXMLRequestOperation.h +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import "AFHTTPRequestOperation.h" + +#import + +/** + `AFXMLRequestOperation` is a subclass of `AFHTTPRequestOperation` for downloading and working with XML response data. + + ## Acceptable Content Types + + By default, `AFXMLRequestOperation` accepts the following MIME types, which includes the official standard, `application/xml`, as well as other commonly-used types: + + - `application/xml` + - `text/xml` + + ## Use With AFHTTPClient + + When `AFXMLRequestOperation` is registered with `AFHTTPClient`, the response object in the success callback of `HTTPRequestOperationWithRequest:success:failure:` will be an instance of `NSXMLParser`. On platforms that support `NSXMLDocument`, you have the option to ignore the response object, and simply use the `responseXMLDocument` property of the operation argument of the callback. + */ +@interface AFXMLRequestOperation : AFHTTPRequestOperation + +///---------------------------- +/// @name Getting Response Data +///---------------------------- + +/** + An `NSXMLParser` object constructed from the response data. + */ +@property (readonly, nonatomic, strong) NSXMLParser *responseXMLParser; + +#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED +/** + An `NSXMLDocument` object constructed from the response data. If an error occurs while parsing, `nil` will be returned, and the `error` property will be set to the error. + */ +@property (readonly, nonatomic, strong) NSXMLDocument *responseXMLDocument; +#endif + +/** + Creates and returns an `AFXMLRequestOperation` object and sets the specified success and failure callbacks. + + @param urlRequest The request object to be loaded asynchronously during execution of the operation + @param success A block object to be executed when the operation finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the XML parser constructed with the response data of request. + @param failure A block object to be executed when the operation finishes unsuccessfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the error describing the network error that occurred. + + @return A new XML request operation + */ ++ (instancetype)XMLParserRequestOperationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser))failure; + + +#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED +/** + Creates and returns an `AFXMLRequestOperation` object and sets the specified success and failure callbacks. + + @param urlRequest The request object to be loaded asynchronously during execution of the operation + @param success A block object to be executed when the operation finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the XML document created from the response data of request. + @param failure A block object to be executed when the operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data as XML. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the error describing the network or parsing error that occurred. + + @return A new XML request operation + */ ++ (instancetype)XMLDocumentRequestOperationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLDocument *document))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLDocument *document))failure; +#endif + +@end diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m new file mode 100644 index 0000000..a97cd88 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m @@ -0,0 +1,167 @@ +// AFXMLRequestOperation.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFXMLRequestOperation.h" + +#include + +static dispatch_queue_t xml_request_operation_processing_queue() { + static dispatch_queue_t af_xml_request_operation_processing_queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_xml_request_operation_processing_queue = dispatch_queue_create("com.alamofire.networking.xml-request.processing", DISPATCH_QUEUE_CONCURRENT); + }); + + return af_xml_request_operation_processing_queue; +} + +@interface AFXMLRequestOperation () +@property (readwrite, nonatomic, strong) NSXMLParser *responseXMLParser; +#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED +@property (readwrite, nonatomic, strong) NSXMLDocument *responseXMLDocument; +#endif +@property (readwrite, nonatomic, strong) NSError *XMLError; +@end + +@implementation AFXMLRequestOperation +@synthesize responseXMLParser = _responseXMLParser; +#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED +@synthesize responseXMLDocument = _responseXMLDocument; +#endif +@synthesize XMLError = _XMLError; + ++ (instancetype)XMLParserRequestOperationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser))failure +{ + AFXMLRequestOperation *requestOperation = [(AFXMLRequestOperation *)[self alloc] initWithRequest:urlRequest]; + [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + if (success) { + success(operation.request, operation.response, responseObject); + } + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + if (failure) { + failure(operation.request, operation.response, error, [(AFXMLRequestOperation *)operation responseXMLParser]); + } + }]; + + return requestOperation; +} + +#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED ++ (instancetype)XMLDocumentRequestOperationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLDocument *document))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLDocument *document))failure +{ + AFXMLRequestOperation *requestOperation = [[self alloc] initWithRequest:urlRequest]; + [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, __unused id responseObject) { + if (success) { + NSXMLDocument *XMLDocument = [(AFXMLRequestOperation *)operation responseXMLDocument]; + success(operation.request, operation.response, XMLDocument); + } + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + if (failure) { + NSXMLDocument *XMLDocument = [(AFXMLRequestOperation *)operation responseXMLDocument]; + failure(operation.request, operation.response, error, XMLDocument); + } + }]; + + return requestOperation; +} +#endif + + +- (NSXMLParser *)responseXMLParser { + if (!_responseXMLParser && [self.responseData length] > 0 && [self isFinished]) { + self.responseXMLParser = [[NSXMLParser alloc] initWithData:self.responseData]; + } + + return _responseXMLParser; +} + +#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED +- (NSXMLDocument *)responseXMLDocument { + if (!_responseXMLDocument && [self.responseData length] > 0 && [self isFinished]) { + NSError *error = nil; + self.responseXMLDocument = [[NSXMLDocument alloc] initWithData:self.responseData options:0 error:&error]; + self.XMLError = error; + } + + return _responseXMLDocument; +} +#endif + +- (NSError *)error { + if (_XMLError) { + return _XMLError; + } else { + return [super error]; + } +} + +#pragma mark - NSOperation + +- (void)cancel { + [super cancel]; + + self.responseXMLParser.delegate = nil; +} + +#pragma mark - AFHTTPRequestOperation + ++ (NSSet *)acceptableContentTypes { + return [NSSet setWithObjects:@"application/xml", @"text/xml", nil]; +} + ++ (BOOL)canProcessRequest:(NSURLRequest *)request { + return [[[request URL] pathExtension] isEqualToString:@"xml"] || [super canProcessRequest:request]; +} + +- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-retain-cycles" +#pragma clang diagnostic ignored "-Wgnu" + self.completionBlock = ^ { + dispatch_async(xml_request_operation_processing_queue(), ^(void) { + NSXMLParser *XMLParser = self.responseXMLParser; + + if (self.error) { + if (failure) { + dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ + failure(self, self.error); + }); + } + } else { + if (success) { + dispatch_async(self.successCallbackQueue ?: dispatch_get_main_queue(), ^{ + success(self, XMLParser); + }); + } + } + }); + }; +#pragma clang diagnostic pop +} + +@end diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h new file mode 100644 index 0000000..bafb790 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h @@ -0,0 +1,78 @@ +// UIImageView+AFNetworking.h +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import "AFImageRequestOperation.h" + +#import + +#if __IPHONE_OS_VERSION_MIN_REQUIRED +#import + +/** + This category adds methods to the UIKit framework's `UIImageView` class. The methods in this category provide support for loading remote images asynchronously from a URL. + */ +@interface UIImageView (AFNetworking) + +/** + Creates and enqueues an image request operation, which asynchronously downloads the image from the specified URL, and sets it the request is finished. Any previous image request for the receiver will be cancelled. If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + By default, URL requests have a cache policy of `NSURLCacheStorageAllowed` and a timeout interval of 30 seconds, and are set not handle cookies. To configure URL requests differently, use `setImageWithURLRequest:placeholderImage:success:failure:` + + @param url The URL used for the image request. + */ +- (void)setImageWithURL:(NSURL *)url; + +/** + Creates and enqueues an image request operation, which asynchronously downloads the image from the specified URL. Any previous image request for the receiver will be cancelled. If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + By default, URL requests have a cache policy of `NSURLCacheStorageAllowed` and a timeout interval of 30 seconds, and are set not handle cookies. To configure URL requests differently, use `setImageWithURLRequest:placeholderImage:success:failure:` + + @param url The URL used for the image request. + @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the image view will not change its image until the image request finishes. + */ +- (void)setImageWithURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage; + +/** + Creates and enqueues an image request operation, which asynchronously downloads the image with the specified URL request object. Any previous image request for the receiver will be cancelled. If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + If a success block is specified, it is the responsibility of the block to set the image of the image view before returning. If no success block is specified, the default behavior of setting the image with `self.image = image` is executed. + + @param urlRequest The URL request used for the image request. + @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the image view will not change its image until the image request finishes. + @param success A block to be executed when the image request operation finishes successfully, with a status code in the 2xx range, and with an acceptable content type (e.g. `image/png`). This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the image created from the response data of request. If the image was returned from cache, the request and response parameters will be `nil`. + @param failure A block object to be executed when the image request operation finishes unsuccessfully, or that finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the error object describing the network or parsing error that occurred. + */ +- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(UIImage *)placeholderImage + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure; + +/** + Cancels any executing image request operation for the receiver, if one exists. + */ +- (void)cancelImageRequestOperation; + +@end + +#endif diff --git a/Unit-2-Journal/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m new file mode 100644 index 0000000..839a2b8 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m @@ -0,0 +1,191 @@ +// UIImageView+AFNetworking.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import "UIImageView+AFNetworking.h" + +@interface AFImageCache : NSCache +- (UIImage *)cachedImageForRequest:(NSURLRequest *)request; +- (void)cacheImage:(UIImage *)image + forRequest:(NSURLRequest *)request; +@end + +#pragma mark - + +static char kAFImageRequestOperationObjectKey; + +@interface UIImageView (_AFNetworking) +@property (readwrite, nonatomic, strong, setter = af_setImageRequestOperation:) AFImageRequestOperation *af_imageRequestOperation; +@end + +@implementation UIImageView (_AFNetworking) +@dynamic af_imageRequestOperation; +@end + +#pragma mark - + +@implementation UIImageView (AFNetworking) + +- (AFHTTPRequestOperation *)af_imageRequestOperation { + return (AFHTTPRequestOperation *)objc_getAssociatedObject(self, &kAFImageRequestOperationObjectKey); +} + +- (void)af_setImageRequestOperation:(AFImageRequestOperation *)imageRequestOperation { + objc_setAssociatedObject(self, &kAFImageRequestOperationObjectKey, imageRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + ++ (NSOperationQueue *)af_sharedImageRequestOperationQueue { + static NSOperationQueue *_af_imageRequestOperationQueue = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _af_imageRequestOperationQueue = [[NSOperationQueue alloc] init]; + [_af_imageRequestOperationQueue setMaxConcurrentOperationCount:NSOperationQueueDefaultMaxConcurrentOperationCount]; + }); + + return _af_imageRequestOperationQueue; +} + ++ (AFImageCache *)af_sharedImageCache { + static AFImageCache *_af_imageCache = nil; + static dispatch_once_t oncePredicate; + dispatch_once(&oncePredicate, ^{ + _af_imageCache = [[AFImageCache alloc] init]; + }); + + return _af_imageCache; +} + +#pragma mark - + +- (void)setImageWithURL:(NSURL *)url { + [self setImageWithURL:url placeholderImage:nil]; +} + +- (void)setImageWithURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage +{ + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; + [request addValue:@"image/*" forHTTPHeaderField:@"Accept"]; + + [self setImageWithURLRequest:request placeholderImage:placeholderImage success:nil failure:nil]; +} + +- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(UIImage *)placeholderImage + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure +{ + [self cancelImageRequestOperation]; + + UIImage *cachedImage = [[[self class] af_sharedImageCache] cachedImageForRequest:urlRequest]; + if (cachedImage) { + self.af_imageRequestOperation = nil; + + if (success) { + success(nil, nil, cachedImage); + } else { + self.image = cachedImage; + } + } else { + if (placeholderImage) { + self.image = placeholderImage; + } + + AFImageRequestOperation *requestOperation = [[AFImageRequestOperation alloc] initWithRequest:urlRequest]; + +#ifdef _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_ + requestOperation.allowsInvalidSSLCertificate = YES; +#endif + + [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + if ([urlRequest isEqual:[self.af_imageRequestOperation request]]) { + if (self.af_imageRequestOperation == operation) { + self.af_imageRequestOperation = nil; + } + + if (success) { + success(operation.request, operation.response, responseObject); + } else if (responseObject) { + self.image = responseObject; + } + } + + [[[self class] af_sharedImageCache] cacheImage:responseObject forRequest:urlRequest]; + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + if ([urlRequest isEqual:[self.af_imageRequestOperation request]]) { + if (self.af_imageRequestOperation == operation) { + self.af_imageRequestOperation = nil; + } + + if (failure) { + failure(operation.request, operation.response, error); + } + } + }]; + + self.af_imageRequestOperation = requestOperation; + + [[[self class] af_sharedImageRequestOperationQueue] addOperation:self.af_imageRequestOperation]; + } +} + +- (void)cancelImageRequestOperation { + [self.af_imageRequestOperation cancel]; + self.af_imageRequestOperation = nil; +} + +@end + +#pragma mark - + +static inline NSString * AFImageCacheKeyFromURLRequest(NSURLRequest *request) { + return [[request URL] absoluteString]; +} + +@implementation AFImageCache + +- (UIImage *)cachedImageForRequest:(NSURLRequest *)request { + switch ([request cachePolicy]) { + case NSURLRequestReloadIgnoringCacheData: + case NSURLRequestReloadIgnoringLocalAndRemoteCacheData: + return nil; + default: + break; + } + + return [self objectForKey:AFImageCacheKeyFromURLRequest(request)]; +} + +- (void)cacheImage:(UIImage *)image + forRequest:(NSURLRequest *)request +{ + if (image && request) { + [self setObject:image forKey:AFImageCacheKeyFromURLRequest(request)]; + } +} + +@end + +#endif diff --git a/Unit-2-Journal/Pods/AFNetworking/LICENSE b/Unit-2-Journal/Pods/AFNetworking/LICENSE new file mode 100644 index 0000000..0616192 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2013-2014 AFNetworking (http://afnetworking.com/) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Unit-2-Journal/Pods/AFNetworking/README.md b/Unit-2-Journal/Pods/AFNetworking/README.md new file mode 100644 index 0000000..da30989 --- /dev/null +++ b/Unit-2-Journal/Pods/AFNetworking/README.md @@ -0,0 +1,206 @@ +

+ AFNetworking +

+ +AFNetworking is a delightful networking library for iOS and Mac OS X. It's built on top of [NSURLConnection](http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/Reference/Reference.html), [NSOperation](http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSOperation_class/Reference/Reference.html), and other familiar Foundation technologies. It has a modular architecture with well-designed, feature-rich APIs that are a joy to use. For example, here's how easy it is to get JSON from a URL: + +```objective-c +NSURL *url = [NSURL URLWithString:@"https://alpha-api.app.net/stream/0/posts/stream/global"]; +NSURLRequest *request = [NSURLRequest requestWithURL:url]; +AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { + NSLog(@"App.net Global Stream: %@", JSON); +} failure:nil]; +[operation start]; +``` + +Perhaps the most important feature of all, however, is the amazing community of developers who use and contribute to AFNetworking every day. AFNetworking powers some of the most popular and critically-acclaimed apps on the iPhone, iPad, and Mac. + +Choose AFNetworking for your next project, or migrate over your existing projects—you'll be happy you did! + +## How To Get Started + +- [Download AFNetworking](https://github.com/AFNetworking/AFNetworking/zipball/master) and try out the included Mac and iPhone example apps +- Read the ["Getting Started" guide](https://github.com/AFNetworking/AFNetworking/wiki/Getting-Started-with-AFNetworking), [FAQ](https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ), or [other articles in the wiki](https://github.com/AFNetworking/AFNetworking/wiki) +- Check out the [complete documentation](http://cocoadocs.org/docsets/AFNetworking/) for a comprehensive look at the APIs available in AFNetworking +- Watch the [NSScreencast episode about AFNetworking](http://nsscreencast.com/episodes/6-afnetworking) for a quick introduction to how to use it in your application +- Questions? [Stack Overflow](http://stackoverflow.com/questions/tagged/afnetworking) is the best place to find answers + +## Overview + +AFNetworking is architected to be as small and modular as possible, in order to make it simple to use and extend. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Core
AFURLConnectionOperationAn NSOperation that implements the NSURLConnection delegate methods.
HTTP Requests
AFHTTPRequestOperationA subclass of AFURLConnectionOperation for requests using the HTTP or HTTPS protocols. It encapsulates the concept of acceptable status codes and content types, which determine the success or failure of a request.
AFJSONRequestOperationA subclass of AFHTTPRequestOperation for downloading and working with JSON response data.
AFXMLRequestOperationA subclass of AFHTTPRequestOperation for downloading and working with XML response data.
AFPropertyListRequestOperationA subclass of AFHTTPRequestOperation for downloading and deserializing objects with property list response data.
HTTP Client
AFHTTPClient + Captures the common patterns of communicating with an web application over HTTP, including: + +
    +
  • Making requests from relative paths of a base URL
  • +
  • Setting HTTP headers to be added automatically to requests
  • +
  • Authenticating requests with HTTP Basic credentials or an OAuth token
  • +
  • Managing an NSOperationQueue for requests made by the client
  • +
  • Generating query strings or HTTP bodies from an NSDictionary
  • +
  • Constructing multipart form requests
  • +
  • Automatically parsing HTTP response data into its corresponding object representation
  • +
  • Monitoring and responding to changes in network reachability
  • +
+
Images
AFImageRequestOperationA subclass of AFHTTPRequestOperation for downloading and processing images.
UIImageView+AFNetworkingAdds methods to UIImageView for loading remote images asynchronously from a URL.
+ +## Example Usage + +### XML Request + +```objective-c +NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://api.flickr.com/services/rest/?method=flickr.groups.browse&api_key=b6300e17ad3c506e706cb0072175d047&cat_id=34427469792%40N01&format=rest"]]; +AFXMLRequestOperation *operation = [AFXMLRequestOperation XMLParserRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) { + XMLParser.delegate = self; + [XMLParser parse]; +} failure:nil]; +[operation start]; +``` + +### Image Request + +```objective-c +UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)]; +[imageView setImageWithURL:[NSURL URLWithString:@"http://i.imgur.com/r4uwx.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder-avatar"]]; +``` + +### API Client Request + +```objective-c +// AFAppDotNetAPIClient is a subclass of AFHTTPClient, which defines the base URL and default HTTP headers for NSURLRequests it creates +[[AFAppDotNetAPIClient sharedClient] getPath:@"stream/0/posts/stream/global" parameters:nil success:^(AFHTTPRequestOperation *operation, id JSON) { + NSLog(@"App.net Global Stream: %@", JSON); +} failure:nil]; +``` + +### File Upload with Progress Callback + +```objective-c +NSURL *url = [NSURL URLWithString:@"http://api-base-url.com"]; +AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; +NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"avatar.jpg"], 0.5); +NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/upload" parameters:nil constructingBodyWithBlock: ^(id formData) { + [formData appendPartWithFileData:imageData name:@"avatar" fileName:@"avatar.jpg" mimeType:@"image/jpeg"]; +}]; + +AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; +[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { + NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite); +}]; +[httpClient enqueueHTTPRequestOperation:operation]; +``` + +### Streaming Request + +```objective-c +NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost:8080/encode"]]; + +AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; +operation.inputStream = [NSInputStream inputStreamWithFileAtPath:[[NSBundle mainBundle] pathForResource:@"large-image" ofType:@"tiff"]]; +operation.outputStream = [NSOutputStream outputStreamToMemory]; +[operation start]; +``` + +## Requirements + +AFNetworking 1.0 and higher requires either [iOS 5.0](http://developer.apple.com/library/ios/#releasenotes/General/WhatsNewIniPhoneOS/Articles/iPhoneOS4.html) and above, or [Mac OS 10.7](http://developer.apple.com/library/mac/#releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_6.html#//apple_ref/doc/uid/TP40008898-SW7) ([64-bit with modern Cocoa runtime](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtVersionsPlatforms.html)) and above. + +For compatibility with iOS 4.3, use the latest 0.10.x release. + +### ARC + +AFNetworking uses ARC as of its 1.0 release. + +If you are using AFNetworking 1.0 in your non-arc project, you will need to set a `-fobjc-arc` compiler flag on all of the AFNetworking source files. Conversely, if you are adding a pre-1.0 version of AFNetworking, you will need to set a `-fno-objc-arc` compiler flag. + +To set a compiler flag in Xcode, go to your active target and select the "Build Phases" tab. Now select all AFNetworking source files, press Enter, insert `-fobjc-arc` or `-fno-objc-arc` and then "Done" to enable or disable ARC for AFNetworking. + +## Unit Tests + +AFNetworking includes a suite of unit tests within the Tests subdirectory. In order to run the unit tests, you must install the testing dependencies via CocoaPods. To do so: + + $ gem install cocoapods # If necessary + $ cd Tests + $ pod install + +Once CocoaPods has finished the installation, you can execute the test suite via the 'iOS Tests' and 'OS X Tests' schemes within Xcode. + +### Test Logging + +By default, the unit tests do not emit any output during execution. For debugging purposes, it can be useful to enable logging of the requests and responses. Logging support is provided by the [AFHTTPRequestOperationLogger](https://github.com/AFNetworking/AFHTTPRequestOperationLogger) extension, which is installed via CocoaPods into the test targets. To enable logging, edit the test Scheme and add an environment variable named `AFTestsLoggingEnabled` with a value of `YES`. + +### Using xctool + +If you wish to execute the tests from the command line or within a continuous integration environment, you will need to install [xctool](https://github.com/facebook/xctool). The recommended installation method is [Homebrew](http://mxcl.github.io/homebrew/). + +To install the commandline testing support via Homebrew: + + $ brew update + $ brew install xctool --HEAD + +Once xctool is installed, you can execute the suite via `rake test`. + +## Credits + +AFNetworking was created by [Scott Raymond](https://github.com/sco/) and [Mattt Thompson](https://github.com/mattt/) in the development of [Gowalla for iPhone](http://en.wikipedia.org/wiki/Gowalla). + +AFNetworking's logo was designed by [Alan Defibaugh](http://www.alandefibaugh.com/). + +And most of all, thanks to AFNetworking's [growing list of contributors](https://github.com/AFNetworking/AFNetworking/contributors). + +## Contact + +Follow AFNetworking on Twitter ([@AFNetworking](https://twitter.com/AFNetworking)) + +### Creators + +[Mattt Thompson](http://github.com/mattt) +[@mattt](https://twitter.com/mattt) + +[Scott Raymond](http://github.com/sco) +[@sco](https://twitter.com/sco) + +## License + +AFNetworking is available under the MIT license. See the LICENSE file for more info. diff --git a/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFHTTPClient.h b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFHTTPClient.h new file mode 120000 index 0000000..aee081b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFHTTPClient.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPClient.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h new file mode 120000 index 0000000..ac762c8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFImageRequestOperation.h b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFImageRequestOperation.h new file mode 120000 index 0000000..c1fccfd --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFImageRequestOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFImageRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFJSONRequestOperation.h b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFJSONRequestOperation.h new file mode 120000 index 0000000..9f2188e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFJSONRequestOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFJSONRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h new file mode 120000 index 0000000..f454e54 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFNetworking.h b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFNetworking.h new file mode 120000 index 0000000..a5a38da --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFNetworking.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFPropertyListRequestOperation.h b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFPropertyListRequestOperation.h new file mode 120000 index 0000000..4b04bd2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFPropertyListRequestOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFPropertyListRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h new file mode 120000 index 0000000..d9b35fb --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLConnectionOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFXMLRequestOperation.h b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFXMLRequestOperation.h new file mode 120000 index 0000000..9b01587 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/AFXMLRequestOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFXMLRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h new file mode 120000 index 0000000..20b48f1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/UIImageView+AFNetworking.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.h b/Unit-2-Journal/Pods/Headers/Private/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.h new file mode 120000 index 0000000..932a9db --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.h @@ -0,0 +1 @@ +../../../ISO8601DateFormatterValueTransformer/Code/ISO8601DateFormatterValueTransformer.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/ISO8601DateFormatterValueTransformer/RKISO8601DateFormatter.h b/Unit-2-Journal/Pods/Headers/Private/ISO8601DateFormatterValueTransformer/RKISO8601DateFormatter.h new file mode 120000 index 0000000..79788f6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/ISO8601DateFormatterValueTransformer/RKISO8601DateFormatter.h @@ -0,0 +1 @@ +../../../ISO8601DateFormatterValueTransformer/Code/RKISO8601DateFormatter.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/BFTask+Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/BFTask+Private.h new file mode 120000 index 0000000..10159b2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/BFTask+Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/BFTask+Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFACL.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFACL.h new file mode 120000 index 0000000..7c3c14f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFACL.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFACL.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFACLPrivate.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFACLPrivate.h new file mode 120000 index 0000000..2879692 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFACLPrivate.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/ACL/PFACLPrivate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFACLState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFACLState.h new file mode 120000 index 0000000..d3b8d9b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFACLState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/ACL/State/PFACLState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFACLState_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFACLState_Private.h new file mode 120000 index 0000000..d9dd502 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFACLState_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/ACL/State/PFACLState_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFAlertView.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAlertView.h new file mode 120000 index 0000000..85018b0 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAlertView.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFAlertView.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalytics.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalytics.h new file mode 120000 index 0000000..7751f45 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalytics.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFAnalytics.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalyticsController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalyticsController.h new file mode 120000 index 0000000..e1fc43f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalyticsController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Analytics/Controller/PFAnalyticsController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalyticsUtilities.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalyticsUtilities.h new file mode 120000 index 0000000..b383f8f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalyticsUtilities.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalytics_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalytics_Private.h new file mode 120000 index 0000000..defa006 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnalytics_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Analytics/PFAnalytics_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnonymousAuthenticationProvider.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnonymousAuthenticationProvider.h new file mode 120000 index 0000000..14cb5b3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnonymousAuthenticationProvider.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnonymousUtils.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnonymousUtils.h new file mode 120000 index 0000000..7b9b437 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnonymousUtils.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFAnonymousUtils.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnonymousUtils_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnonymousUtils_Private.h new file mode 120000 index 0000000..8b4fcef --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAnonymousUtils_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousUtils_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFApplication.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFApplication.h new file mode 120000 index 0000000..b0d8ee6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFApplication.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFApplication.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFAssert.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAssert.h new file mode 120000 index 0000000..370352c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAssert.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFAssert.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFAsyncTaskQueue.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAsyncTaskQueue.h new file mode 120000 index 0000000..87cce9d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFAsyncTaskQueue.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFAsyncTaskQueue.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFBase64Encoder.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFBase64Encoder.h new file mode 120000 index 0000000..adae939 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFBase64Encoder.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFBase64Encoder.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFBaseState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFBaseState.h new file mode 120000 index 0000000..6c1b489 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFBaseState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFBaseState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCachedQueryController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCachedQueryController.h new file mode 120000 index 0000000..0712e6e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCachedQueryController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Query/Controller/PFCachedQueryController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCategoryLoader.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCategoryLoader.h new file mode 120000 index 0000000..7dedc13 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCategoryLoader.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFCategoryLoader.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCloud.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCloud.h new file mode 120000 index 0000000..4070bb1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCloud.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFCloud.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCloudCodeController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCloudCodeController.h new file mode 120000 index 0000000..38ca262 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCloudCodeController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/CloudCode/PFCloudCodeController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandCache.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandCache.h new file mode 120000 index 0000000..b9d3183 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandCache.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFCommandCache.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandCache_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandCache_Private.h new file mode 120000 index 0000000..aafb22b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandCache_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFCommandCache_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandResult.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandResult.h new file mode 120000 index 0000000..2f1114a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandResult.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFCommandResult.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandRunning.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandRunning.h new file mode 120000 index 0000000..f2d7c78 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandRunning.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunning.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandRunningConstants.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandRunningConstants.h new file mode 120000 index 0000000..3a73786 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandRunningConstants.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandURLRequestConstructor.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandURLRequestConstructor.h new file mode 120000 index 0000000..bb68366 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCommandURLRequestConstructor.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFConfig.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFConfig.h new file mode 120000 index 0000000..919b834 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFConfig.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFConfig.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFConfigController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFConfigController.h new file mode 120000 index 0000000..354d1e5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFConfigController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Config/Controller/PFConfigController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFConfig_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFConfig_Private.h new file mode 120000 index 0000000..64be7b4 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFConfig_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Config/PFConfig_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFConstants.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFConstants.h new file mode 120000 index 0000000..3b96186 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFConstants.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFConstants.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCoreDataProvider.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCoreDataProvider.h new file mode 120000 index 0000000..738cd66 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCoreDataProvider.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFCoreDataProvider.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCoreManager.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCoreManager.h new file mode 120000 index 0000000..c856497 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCoreManager.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFCoreManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentConfigController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentConfigController.h new file mode 120000 index 0000000..aa2f13d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentConfigController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Config/Controller/PFCurrentConfigController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentInstallationController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentInstallationController.h new file mode 120000 index 0000000..c935649 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentInstallationController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentObjectControlling.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentObjectControlling.h new file mode 120000 index 0000000..0d5e144 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentObjectControlling.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/CurrentController/PFCurrentObjectControlling.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentUserController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentUserController.h new file mode 120000 index 0000000..4c70eaa --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFCurrentUserController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/User/CurrentUserController/PFCurrentUserController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFDataProvider.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFDataProvider.h new file mode 120000 index 0000000..52db407 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFDataProvider.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFDataProvider.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFDateFormatter.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFDateFormatter.h new file mode 120000 index 0000000..14af49b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFDateFormatter.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFDateFormatter.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFDecoder.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFDecoder.h new file mode 120000 index 0000000..e8ca6e2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFDecoder.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFDecoder.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFDefaultACLController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFDefaultACLController.h new file mode 120000 index 0000000..28ee2d0 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFDefaultACLController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFDevice.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFDevice.h new file mode 120000 index 0000000..45f3174 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFDevice.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFDevice.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFEncoder.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFEncoder.h new file mode 120000 index 0000000..ccfe72c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFEncoder.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFEncoder.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFErrorUtilities.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFErrorUtilities.h new file mode 120000 index 0000000..6cc92b4 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFErrorUtilities.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFErrorUtilities.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFEventuallyPin.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFEventuallyPin.h new file mode 120000 index 0000000..d7914fd --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFEventuallyPin.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFEventuallyPin.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFEventuallyQueue.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFEventuallyQueue.h new file mode 120000 index 0000000..93c4119 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFEventuallyQueue.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFEventuallyQueue.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFEventuallyQueue_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFEventuallyQueue_Private.h new file mode 120000 index 0000000..b7d09c4 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFEventuallyQueue_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFEventuallyQueue_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFFieldOperation.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFieldOperation.h new file mode 120000 index 0000000..f0a3bab --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFieldOperation.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/FieldOperation/PFFieldOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFFieldOperationDecoder.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFieldOperationDecoder.h new file mode 120000 index 0000000..2cd60fe --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFieldOperationDecoder.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/FieldOperation/PFFieldOperationDecoder.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFFile.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFile.h new file mode 120000 index 0000000..05ca154 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFile.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFFile.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileController.h new file mode 120000 index 0000000..8c0f296 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/File/Controller/PFFileController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileDataStream.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileDataStream.h new file mode 120000 index 0000000..54cbb17 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileDataStream.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/File/FileDataStream/PFFileDataStream.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileManager.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileManager.h new file mode 120000 index 0000000..09a9757 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileManager.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFFileManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileStagingController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileStagingController.h new file mode 120000 index 0000000..af38d1e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileStagingController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/File/Controller/PFFileStagingController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileState.h new file mode 120000 index 0000000..f70310a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/File/State/PFFileState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileState_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileState_Private.h new file mode 120000 index 0000000..fd636fa --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFileState_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/File/State/PFFileState_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFFile_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFile_Private.h new file mode 120000 index 0000000..53b4a61 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFFile_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/File/PFFile_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFGeoPoint.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFGeoPoint.h new file mode 120000 index 0000000..e9079fe --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFGeoPoint.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFGeoPoint.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFGeoPointPrivate.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFGeoPointPrivate.h new file mode 120000 index 0000000..f151ab9 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFGeoPointPrivate.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFGeoPointPrivate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFHTTPRequest.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFHTTPRequest.h new file mode 120000 index 0000000..578b9f2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFHTTPRequest.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/HTTPRequest/PFHTTPRequest.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFHTTPURLRequestConstructor.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFHTTPURLRequestConstructor.h new file mode 120000 index 0000000..f2e4304 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFHTTPURLRequestConstructor.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFHash.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFHash.h new file mode 120000 index 0000000..ecea29b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFHash.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFHash.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallation.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallation.h new file mode 120000 index 0000000..1f2d37a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallation.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFInstallation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationConstants.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationConstants.h new file mode 120000 index 0000000..a4ca8a6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationConstants.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Installation/Constants/PFInstallationConstants.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationController.h new file mode 120000 index 0000000..530f6c2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Installation/Controller/PFInstallationController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationIdentifierStore.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationIdentifierStore.h new file mode 120000 index 0000000..827fb6c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationIdentifierStore.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationIdentifierStore_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationIdentifierStore_Private.h new file mode 120000 index 0000000..acff66f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationIdentifierStore_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationPrivate.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationPrivate.h new file mode 120000 index 0000000..fc6ac83 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFInstallationPrivate.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Installation/PFInstallationPrivate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFInternalUtils.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFInternalUtils.h new file mode 120000 index 0000000..a0e19bf --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFInternalUtils.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFInternalUtils.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFJSONSerialization.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFJSONSerialization.h new file mode 120000 index 0000000..786edd6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFJSONSerialization.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFJSONSerialization.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFKeyValueCache.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFKeyValueCache.h new file mode 120000 index 0000000..f68af04 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFKeyValueCache.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/KeyValueCache/PFKeyValueCache.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFKeyValueCache_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFKeyValueCache_Private.h new file mode 120000 index 0000000..d971da7 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFKeyValueCache_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/KeyValueCache/PFKeyValueCache_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFKeychainStore.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFKeychainStore.h new file mode 120000 index 0000000..1609762 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFKeychainStore.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFKeychainStore.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFLocationManager.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFLocationManager.h new file mode 120000 index 0000000..c534560 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFLocationManager.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFLocationManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFLogger.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFLogger.h new file mode 120000 index 0000000..f100f88 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFLogger.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFLogger.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFLogging.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFLogging.h new file mode 120000 index 0000000..0957f9c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFLogging.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFLogging.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFMacros.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMacros.h new file mode 120000 index 0000000..be0a4a8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMacros.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFMacros.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFMultiProcessFileLock.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMultiProcessFileLock.h new file mode 120000 index 0000000..d40b109 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMultiProcessFileLock.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFMultiProcessFileLockController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMultiProcessFileLockController.h new file mode 120000 index 0000000..8e59276 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMultiProcessFileLockController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFMulticastDelegate.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMulticastDelegate.h new file mode 120000 index 0000000..c731e9b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMulticastDelegate.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFMulticastDelegate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableACLState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableACLState.h new file mode 120000 index 0000000..05bf135 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableACLState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/ACL/State/PFMutableACLState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableFileState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableFileState.h new file mode 120000 index 0000000..d08ab4a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableFileState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/File/State/PFMutableFileState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableObjectState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableObjectState.h new file mode 120000 index 0000000..e715fb4 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableObjectState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/State/PFMutableObjectState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutablePushState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutablePushState.h new file mode 120000 index 0000000..3fe0c5d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutablePushState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Push/State/PFMutablePushState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableQueryState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableQueryState.h new file mode 120000 index 0000000..8e8c7a5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableQueryState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Query/State/PFMutableQueryState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableRelationState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableRelationState.h new file mode 120000 index 0000000..13a1999 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableRelationState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Relation/State/PFMutableRelationState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableUserState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableUserState.h new file mode 120000 index 0000000..d5dbab7 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFMutableUserState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/User/State/PFMutableUserState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFNetworkActivityIndicatorManager.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFNetworkActivityIndicatorManager.h new file mode 120000 index 0000000..1ae2fdb --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFNetworkActivityIndicatorManager.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFNetworkActivityIndicatorManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFNetworkCommand.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFNetworkCommand.h new file mode 120000 index 0000000..2c8a391 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFNetworkCommand.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFNetworkCommand.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFNullability.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFNullability.h new file mode 120000 index 0000000..d3b6c2e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFNullability.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFNullability.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObject+Subclass.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObject+Subclass.h new file mode 120000 index 0000000..ccbad16 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObject+Subclass.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFObject+Subclass.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObject.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObject.h new file mode 120000 index 0000000..b00d5bb --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObject.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFObject.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectBatchController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectBatchController.h new file mode 120000 index 0000000..ed0585f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectBatchController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/BatchController/PFObjectBatchController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectConstants.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectConstants.h new file mode 120000 index 0000000..2834ef6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectConstants.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/Constants/PFObjectConstants.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectController.h new file mode 120000 index 0000000..19d572b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/Controller/PFObjectController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectController_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectController_Private.h new file mode 120000 index 0000000..3df14b2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectController_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/Controller/PFObjectController_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectControlling.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectControlling.h new file mode 120000 index 0000000..facfd09 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectControlling.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/Controller/PFObjectControlling.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectEstimatedData.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectEstimatedData.h new file mode 120000 index 0000000..2627e92 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectEstimatedData.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectFileCoder.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectFileCoder.h new file mode 120000 index 0000000..4d9fc61 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectFileCoder.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/Coder/File/PFObjectFileCoder.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectFileCodingLogic.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectFileCodingLogic.h new file mode 120000 index 0000000..c5bb3c6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectFileCodingLogic.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectFilePersistenceController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectFilePersistenceController.h new file mode 120000 index 0000000..b2f5bb6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectFilePersistenceController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectLocalIdStore.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectLocalIdStore.h new file mode 120000 index 0000000..e2cbdf8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectLocalIdStore.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectPrivate.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectPrivate.h new file mode 120000 index 0000000..849167d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectPrivate.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/PFObjectPrivate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectState.h new file mode 120000 index 0000000..8835423 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/State/PFObjectState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectState_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectState_Private.h new file mode 120000 index 0000000..0068676 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectState_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/State/PFObjectState_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectSubclassInfo.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectSubclassInfo.h new file mode 120000 index 0000000..f408e73 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectSubclassInfo.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectSubclassingController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectSubclassingController.h new file mode 120000 index 0000000..6f54ea8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectSubclassingController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassingController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectUtilities.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectUtilities.h new file mode 120000 index 0000000..ca1e591 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFObjectUtilities.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/Utilities/PFObjectUtilities.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineObjectController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineObjectController.h new file mode 120000 index 0000000..2450581 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineObjectController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineQueryController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineQueryController.h new file mode 120000 index 0000000..61522e9 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineQueryController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Query/Controller/PFOfflineQueryController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineQueryLogic.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineQueryLogic.h new file mode 120000 index 0000000..51de493 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineQueryLogic.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineStore.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineStore.h new file mode 120000 index 0000000..e2a28d5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFOfflineStore.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFOperationSet.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFOperationSet.h new file mode 120000 index 0000000..b62dded --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFOperationSet.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/OperationSet/PFOperationSet.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPaymentTransactionObserver.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPaymentTransactionObserver.h new file mode 120000 index 0000000..0cf1120 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPaymentTransactionObserver.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPaymentTransactionObserver_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPaymentTransactionObserver_Private.h new file mode 120000 index 0000000..80578e3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPaymentTransactionObserver_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPin.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPin.h new file mode 120000 index 0000000..a7301b9 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPin.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/LocalDataStore/Pin/PFPin.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPinningEventuallyQueue.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPinningEventuallyQueue.h new file mode 120000 index 0000000..5481dca --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPinningEventuallyQueue.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFPinningEventuallyQueue.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPinningObjectStore.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPinningObjectStore.h new file mode 120000 index 0000000..5ac2044 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPinningObjectStore.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Object/PinningStore/PFPinningObjectStore.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFProduct+Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFProduct+Private.h new file mode 120000 index 0000000..d698072 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFProduct+Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Product/PFProduct+Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFProduct.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFProduct.h new file mode 120000 index 0000000..f4f4940 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFProduct.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFProduct.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFProductsRequestHandler.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFProductsRequestHandler.h new file mode 120000 index 0000000..b06ea1d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFProductsRequestHandler.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPropertyInfo.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPropertyInfo.h new file mode 120000 index 0000000..3571a7e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPropertyInfo.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PropertyInfo/PFPropertyInfo.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPropertyInfo_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPropertyInfo_Private.h new file mode 120000 index 0000000..3568406 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPropertyInfo_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPropertyInfo_Runtime.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPropertyInfo_Runtime.h new file mode 120000 index 0000000..6c7c2b3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPropertyInfo_Runtime.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPurchase.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPurchase.h new file mode 120000 index 0000000..8d7cb4a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPurchase.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFPurchase.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPurchaseController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPurchaseController.h new file mode 120000 index 0000000..91f42f4 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPurchaseController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Purchase/Controller/PFPurchaseController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPush.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPush.h new file mode 120000 index 0000000..930cb47 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPush.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFPush.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushChannelsController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushChannelsController.h new file mode 120000 index 0000000..84a2d30 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushChannelsController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Push/ChannelsController/PFPushChannelsController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushController.h new file mode 120000 index 0000000..3f11f0e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Push/Controller/PFPushController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushManager.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushManager.h new file mode 120000 index 0000000..04cbb0d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushManager.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Push/Manager/PFPushManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushPrivate.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushPrivate.h new file mode 120000 index 0000000..d25e5ff --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushPrivate.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Push/PFPushPrivate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushState.h new file mode 120000 index 0000000..686f491 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Push/State/PFPushState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushState_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushState_Private.h new file mode 120000 index 0000000..87e61e5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushState_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Push/State/PFPushState_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushUtilities.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushUtilities.h new file mode 120000 index 0000000..e6460a3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFPushUtilities.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Push/Utilites/PFPushUtilities.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFQuery.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFQuery.h new file mode 120000 index 0000000..1ea0442 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFQuery.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFQuery.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryController.h new file mode 120000 index 0000000..5635d68 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Query/Controller/PFQueryController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryPrivate.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryPrivate.h new file mode 120000 index 0000000..2f1bf2f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryPrivate.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Query/PFQueryPrivate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryState.h new file mode 120000 index 0000000..381352e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Query/State/PFQueryState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryState_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryState_Private.h new file mode 120000 index 0000000..97a6657 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryState_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Query/State/PFQueryState_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryUtilities.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryUtilities.h new file mode 120000 index 0000000..f5c92e2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFQueryUtilities.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Query/Utilities/PFQueryUtilities.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTAnalyticsCommand.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTAnalyticsCommand.h new file mode 120000 index 0000000..6fe355e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTAnalyticsCommand.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/PFRESTAnalyticsCommand.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTCloudCommand.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTCloudCommand.h new file mode 120000 index 0000000..46f5e1f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTCloudCommand.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/PFRESTCloudCommand.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTCommand.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTCommand.h new file mode 120000 index 0000000..4fe070b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTCommand.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/PFRESTCommand.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTCommand_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTCommand_Private.h new file mode 120000 index 0000000..df23738 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTCommand_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/PFRESTCommand_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTConfigCommand.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTConfigCommand.h new file mode 120000 index 0000000..f671a72 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTConfigCommand.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/PFRESTConfigCommand.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTFileCommand.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTFileCommand.h new file mode 120000 index 0000000..e31ba58 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTFileCommand.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/PFRESTFileCommand.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTObjectBatchCommand.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTObjectBatchCommand.h new file mode 120000 index 0000000..828b203 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTObjectBatchCommand.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/PFRESTObjectBatchCommand.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTObjectCommand.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTObjectCommand.h new file mode 120000 index 0000000..7de026d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTObjectCommand.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/PFRESTObjectCommand.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTPushCommand.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTPushCommand.h new file mode 120000 index 0000000..d2a676e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTPushCommand.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/PFRESTPushCommand.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTQueryCommand.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTQueryCommand.h new file mode 120000 index 0000000..82f2793 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTQueryCommand.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/PFRESTQueryCommand.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTSessionCommand.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTSessionCommand.h new file mode 120000 index 0000000..e3651cb --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTSessionCommand.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/PFRESTSessionCommand.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTUserCommand.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTUserCommand.h new file mode 120000 index 0000000..9a13083 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRESTUserCommand.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/PFRESTUserCommand.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFReachability.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFReachability.h new file mode 120000 index 0000000..ac4e8fa --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFReachability.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFReachability.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRelation.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRelation.h new file mode 120000 index 0000000..a3e8444 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRelation.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFRelation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRelationPrivate.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRelationPrivate.h new file mode 120000 index 0000000..0115a6f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRelationPrivate.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Relation/PFRelationPrivate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRelationState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRelationState.h new file mode 120000 index 0000000..f2659be --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRelationState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Relation/State/PFRelationState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRelationState_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRelationState_Private.h new file mode 120000 index 0000000..ac2cfe1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRelationState_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Relation/State/PFRelationState_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFRole.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRole.h new file mode 120000 index 0000000..26cd86c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFRole.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFRole.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabase.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabase.h new file mode 120000 index 0000000..787b1e8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabase.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabaseController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabaseController.h new file mode 120000 index 0000000..37b616f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabaseController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabaseResult.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabaseResult.h new file mode 120000 index 0000000..a2c98a3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabaseResult.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabase_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabase_Private.h new file mode 120000 index 0000000..3165b80 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteDatabase_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteStatement.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteStatement.h new file mode 120000 index 0000000..3ef2050 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSQLiteStatement.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFSession.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSession.h new file mode 120000 index 0000000..4c43360 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSession.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFSession.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFSessionController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSessionController.h new file mode 120000 index 0000000..19acd46 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSessionController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Session/Controller/PFSessionController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFSessionUtilities.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSessionUtilities.h new file mode 120000 index 0000000..13ac6c5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSessionUtilities.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Session/Utilities/PFSessionUtilities.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFSession_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSession_Private.h new file mode 120000 index 0000000..077e55a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSession_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Session/PFSession_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFSubclassing.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSubclassing.h new file mode 120000 index 0000000..901cadc --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFSubclassing.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFSubclassing.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFTaskQueue.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFTaskQueue.h new file mode 120000 index 0000000..d7ccda7 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFTaskQueue.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFTaskQueue.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFThreadsafety.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFThreadsafety.h new file mode 120000 index 0000000..d670b07 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFThreadsafety.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/ThreadSafety/PFThreadsafety.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLConstructor.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLConstructor.h new file mode 120000 index 0000000..6760b55 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLConstructor.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/HTTPRequest/PFURLConstructor.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSession.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSession.h new file mode 120000 index 0000000..767bbbf --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSession.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionCommandRunner.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionCommandRunner.h new file mode 120000 index 0000000..a5bcf23 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionCommandRunner.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionCommandRunner_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionCommandRunner_Private.h new file mode 120000 index 0000000..4079814 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionCommandRunner_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionDataTaskDelegate.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionDataTaskDelegate.h new file mode 120000 index 0000000..c0c5ccb --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionDataTaskDelegate.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionDataTaskDelegate_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionDataTaskDelegate_Private.h new file mode 120000 index 0000000..8d6abcf --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionDataTaskDelegate_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionFileDownloadTaskDelegate.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionFileDownloadTaskDelegate.h new file mode 120000 index 0000000..61d5d80 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionFileDownloadTaskDelegate.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionJSONDataTaskDelegate.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionJSONDataTaskDelegate.h new file mode 120000 index 0000000..1933d5b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionJSONDataTaskDelegate.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionUploadTaskDelegate.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionUploadTaskDelegate.h new file mode 120000 index 0000000..5327ead --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSessionUploadTaskDelegate.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSession_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSession_Private.h new file mode 120000 index 0000000..d3c1649 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFURLSession_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFUser.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUser.h new file mode 120000 index 0000000..01e4199 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUser.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFUser.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserAuthenticationController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserAuthenticationController.h new file mode 120000 index 0000000..3b222ff --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserAuthenticationController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserAuthenticationDelegate.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserAuthenticationDelegate.h new file mode 120000 index 0000000..3b6b473 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserAuthenticationDelegate.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFUserAuthenticationDelegate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserConstants.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserConstants.h new file mode 120000 index 0000000..2ad9193 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserConstants.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/User/Constants/PFUserConstants.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserController.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserController.h new file mode 120000 index 0000000..ed6c494 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserController.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/User/Controller/PFUserController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserFileCodingLogic.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserFileCodingLogic.h new file mode 120000 index 0000000..ca0302d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserFileCodingLogic.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/User/Coder/File/PFUserFileCodingLogic.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserPrivate.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserPrivate.h new file mode 120000 index 0000000..114e09a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserPrivate.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/User/PFUserPrivate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserState.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserState.h new file mode 120000 index 0000000..f18a548 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserState.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/User/State/PFUserState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserState_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserState_Private.h new file mode 120000 index 0000000..b5b0d81 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFUserState_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/User/State/PFUserState_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/PFWeakValue.h b/Unit-2-Journal/Pods/Headers/Private/Parse/PFWeakValue.h new file mode 120000 index 0000000..7cc66d2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/PFWeakValue.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/PFWeakValue.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/Parse.h b/Unit-2-Journal/Pods/Headers/Private/Parse/Parse.h new file mode 120000 index 0000000..699c11c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/Parse.h @@ -0,0 +1 @@ +../../../Parse/Parse/Parse.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/ParseInternal.h b/Unit-2-Journal/Pods/Headers/Private/Parse/ParseInternal.h new file mode 120000 index 0000000..96a779a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/ParseInternal.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/ParseInternal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/ParseManager.h b/Unit-2-Journal/Pods/Headers/Private/Parse/ParseManager.h new file mode 120000 index 0000000..1644f32 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/ParseManager.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/ParseManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/ParseModule.h b/Unit-2-Journal/Pods/Headers/Private/Parse/ParseModule.h new file mode 120000 index 0000000..9f00abd --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/ParseModule.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/ParseModule.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Parse/Parse_Private.h b/Unit-2-Journal/Pods/Headers/Private/Parse/Parse_Private.h new file mode 120000 index 0000000..c149580 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Parse/Parse_Private.h @@ -0,0 +1 @@ +../../../Parse/Parse/Internal/Parse_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RKValueTransformers/RKValueTransformers.h b/Unit-2-Journal/Pods/Headers/Private/RKValueTransformers/RKValueTransformers.h new file mode 120000 index 0000000..7768a97 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RKValueTransformers/RKValueTransformers.h @@ -0,0 +1 @@ +../../../RKValueTransformers/Code/RKValueTransformers.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network.h new file mode 120000 index 0000000..5210a78 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network.h @@ -0,0 +1 @@ +../../../RestKit/Code/Network.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKHTTPRequestOperation.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKHTTPRequestOperation.h new file mode 120000 index 0000000..2b63c3c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKHTTPRequestOperation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKHTTPRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKManagedObjectRequestOperation.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKManagedObjectRequestOperation.h new file mode 120000 index 0000000..c5f5677 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKManagedObjectRequestOperation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKManagedObjectRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectManager.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectManager.h new file mode 120000 index 0000000..f67267f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectManager.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKObjectManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectParameterization.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectParameterization.h new file mode 120000 index 0000000..73e232c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectParameterization.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKObjectParameterization.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectRequestOperation.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectRequestOperation.h new file mode 120000 index 0000000..e4dbe06 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectRequestOperation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKObjectRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectRequestOperationSubclass.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectRequestOperationSubclass.h new file mode 120000 index 0000000..d0ca904 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKObjectRequestOperationSubclass.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKObjectRequestOperationSubclass.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKPaginator.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKPaginator.h new file mode 120000 index 0000000..35b421e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKPaginator.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKPaginator.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKPathMatcher.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKPathMatcher.h new file mode 120000 index 0000000..73ab1e6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKPathMatcher.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKPathMatcher.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRequestDescriptor.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRequestDescriptor.h new file mode 120000 index 0000000..7f8e8b3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRequestDescriptor.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKRequestDescriptor.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKResponseDescriptor.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKResponseDescriptor.h new file mode 120000 index 0000000..4981d9a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKResponseDescriptor.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKResponseDescriptor.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKResponseMapperOperation.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKResponseMapperOperation.h new file mode 120000 index 0000000..a2e1586 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKResponseMapperOperation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKResponseMapperOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRoute.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRoute.h new file mode 120000 index 0000000..39eb2cb --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRoute.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKRoute.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRouteSet.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRouteSet.h new file mode 120000 index 0000000..a702bdc --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRouteSet.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKRouteSet.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRouter.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRouter.h new file mode 120000 index 0000000..7187f17 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Network/RKRouter.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKRouter.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping.h new file mode 120000 index 0000000..9ca1b53 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping.h @@ -0,0 +1 @@ +../../../RestKit/Code/ObjectMapping.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKAttributeMapping.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKAttributeMapping.h new file mode 120000 index 0000000..b196d35 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKAttributeMapping.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKAttributeMapping.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKDynamicMapping.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKDynamicMapping.h new file mode 120000 index 0000000..67a1caf --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKDynamicMapping.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKDynamicMapping.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKErrorMessage.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKErrorMessage.h new file mode 120000 index 0000000..6d6996d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKErrorMessage.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKErrorMessage.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKHTTPUtilities.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKHTTPUtilities.h new file mode 120000 index 0000000..318d5c2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKHTTPUtilities.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKHTTPUtilities.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMapperOperation.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMapperOperation.h new file mode 120000 index 0000000..59e87e2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMapperOperation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKMapperOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMapperOperation_Private.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMapperOperation_Private.h new file mode 120000 index 0000000..bd32976 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMapperOperation_Private.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKMapperOperation_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMapping.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMapping.h new file mode 120000 index 0000000..6aaec37 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMapping.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKMapping.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingErrors.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingErrors.h new file mode 120000 index 0000000..68e3925 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingErrors.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKMappingErrors.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingOperation.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingOperation.h new file mode 120000 index 0000000..6b4d1bf --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingOperation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKMappingOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingOperationDataSource.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingOperationDataSource.h new file mode 120000 index 0000000..d463834 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingOperationDataSource.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKMappingOperationDataSource.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingResult.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingResult.h new file mode 120000 index 0000000..03618d2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKMappingResult.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKMappingResult.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectMapping.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectMapping.h new file mode 120000 index 0000000..d38ebca --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectMapping.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKObjectMapping.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectMappingMatcher.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectMappingMatcher.h new file mode 120000 index 0000000..2664bd7 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectMappingMatcher.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKObjectMappingMatcher.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectMappingOperationDataSource.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectMappingOperationDataSource.h new file mode 120000 index 0000000..cdac049 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectMappingOperationDataSource.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKObjectMappingOperationDataSource.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectUtilities.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectUtilities.h new file mode 120000 index 0000000..1ee01f3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKObjectUtilities.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKObjectUtilities.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKPropertyInspector.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKPropertyInspector.h new file mode 120000 index 0000000..a3e2a9d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKPropertyInspector.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKPropertyInspector.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKPropertyMapping.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKPropertyMapping.h new file mode 120000 index 0000000..db4bc5c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKPropertyMapping.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKPropertyMapping.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKRelationshipMapping.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKRelationshipMapping.h new file mode 120000 index 0000000..32b9847 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/ObjectMapping/RKRelationshipMapping.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKRelationshipMapping.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/RestKit.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/RestKit.h new file mode 120000 index 0000000..49e183c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/RestKit.h @@ -0,0 +1 @@ +../../../RestKit/Code/RestKit.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support.h new file mode 120000 index 0000000..06fa6db --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support.h @@ -0,0 +1 @@ +../../../RestKit/Code/Support.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKDictionaryUtilities.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKDictionaryUtilities.h new file mode 120000 index 0000000..f4e0175 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKDictionaryUtilities.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKDictionaryUtilities.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKDotNetDateFormatter.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKDotNetDateFormatter.h new file mode 120000 index 0000000..44ee028 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKDotNetDateFormatter.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKDotNetDateFormatter.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKErrors.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKErrors.h new file mode 120000 index 0000000..7319216 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKErrors.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKErrors.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKLog.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKLog.h new file mode 120000 index 0000000..6a428cb --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKLog.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKLog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKLumberjackLogger.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKLumberjackLogger.h new file mode 120000 index 0000000..b8d134c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKLumberjackLogger.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKLumberjackLogger.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKMIMETypeSerialization.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKMIMETypeSerialization.h new file mode 120000 index 0000000..b77b8b3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKMIMETypeSerialization.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKMIMETypeSerialization.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKMIMETypes.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKMIMETypes.h new file mode 120000 index 0000000..71b36c8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKMIMETypes.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKMIMETypes.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKMacros.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKMacros.h new file mode 120000 index 0000000..f1d842d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKMacros.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKMacros.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKNSJSONSerialization.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKNSJSONSerialization.h new file mode 120000 index 0000000..537580d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKNSJSONSerialization.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKNSJSONSerialization.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKOperationStateMachine.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKOperationStateMachine.h new file mode 120000 index 0000000..1391329 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKOperationStateMachine.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKOperationStateMachine.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKPathUtilities.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKPathUtilities.h new file mode 120000 index 0000000..2ef3a20 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKPathUtilities.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKPathUtilities.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKSerialization.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKSerialization.h new file mode 120000 index 0000000..b66ce92 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKSerialization.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKSerialization.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKStringTokenizer.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKStringTokenizer.h new file mode 120000 index 0000000..6535c08 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKStringTokenizer.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKStringTokenizer.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKURLEncodedSerialization.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKURLEncodedSerialization.h new file mode 120000 index 0000000..ea62327 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/RKURLEncodedSerialization.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKURLEncodedSerialization.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/lcl_config_components_RK.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/lcl_config_components_RK.h new file mode 120000 index 0000000..7902c5b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/lcl_config_components_RK.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/lcl_config_components_RK.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/lcl_config_extensions_RK.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/lcl_config_extensions_RK.h new file mode 120000 index 0000000..eff8ca5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/lcl_config_extensions_RK.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/lcl_config_extensions_RK.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/lcl_config_logger_RK.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/lcl_config_logger_RK.h new file mode 120000 index 0000000..39088b8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Support/lcl_config_logger_RK.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/lcl_config_logger_RK.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing.h new file mode 120000 index 0000000..1404cdc --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing.h @@ -0,0 +1 @@ +../../../RestKit/Code/Testing.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKBenchmark.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKBenchmark.h new file mode 120000 index 0000000..e5a9bfd --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKBenchmark.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKBenchmark.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKConnectionTestExpectation.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKConnectionTestExpectation.h new file mode 120000 index 0000000..6a690f0 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKConnectionTestExpectation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKConnectionTestExpectation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKMappingTest.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKMappingTest.h new file mode 120000 index 0000000..8bdd3be --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKMappingTest.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKMappingTest.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKPropertyMappingTestExpectation.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKPropertyMappingTestExpectation.h new file mode 120000 index 0000000..13cdab9 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKPropertyMappingTestExpectation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKPropertyMappingTestExpectation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestFactory.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestFactory.h new file mode 120000 index 0000000..145b1f0 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestFactory.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKTestFactory.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestFixture.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestFixture.h new file mode 120000 index 0000000..26226cd --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestFixture.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKTestFixture.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestHelpers.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestHelpers.h new file mode 120000 index 0000000..44a0b44 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestHelpers.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKTestHelpers.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestNotificationObserver.h b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestNotificationObserver.h new file mode 120000 index 0000000..d8ed687 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/RestKit/Testing/RKTestNotificationObserver.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKTestNotificationObserver.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/SOCKit/SOCKit.h b/Unit-2-Journal/Pods/Headers/Private/SOCKit/SOCKit.h new file mode 120000 index 0000000..72c5afc --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/SOCKit/SOCKit.h @@ -0,0 +1 @@ +../../../SOCKit/SOCKit.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKEvent.h b/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKEvent.h new file mode 120000 index 0000000..e0febb8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKEvent.h @@ -0,0 +1 @@ +../../../TransitionKit/Code/TKEvent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKState.h b/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKState.h new file mode 120000 index 0000000..6dbd8d3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKState.h @@ -0,0 +1 @@ +../../../TransitionKit/Code/TKState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKStateMachine.h b/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKStateMachine.h new file mode 120000 index 0000000..cfbbd7f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKStateMachine.h @@ -0,0 +1 @@ +../../../TransitionKit/Code/TKStateMachine.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKTransition.h b/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKTransition.h new file mode 120000 index 0000000..d83dc2c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TKTransition.h @@ -0,0 +1 @@ +../../../TransitionKit/Code/TKTransition.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TransitionKit.h b/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TransitionKit.h new file mode 120000 index 0000000..d5b6768 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/TransitionKit/TransitionKit.h @@ -0,0 +1 @@ +../../../TransitionKit/Code/TransitionKit.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/Vendor/LibComponentLogging/Core/lcl_RK.h b/Unit-2-Journal/Pods/Headers/Private/Vendor/LibComponentLogging/Core/lcl_RK.h new file mode 120000 index 0000000..d94e2d3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/Vendor/LibComponentLogging/Core/lcl_RK.h @@ -0,0 +1 @@ +../../../../../RestKit/Vendor/LibComponentLogging/Core/lcl_RK.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFHTTPClient.h b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFHTTPClient.h new file mode 120000 index 0000000..aee081b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFHTTPClient.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPClient.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h new file mode 120000 index 0000000..ac762c8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFImageRequestOperation.h b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFImageRequestOperation.h new file mode 120000 index 0000000..c1fccfd --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFImageRequestOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFImageRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFJSONRequestOperation.h b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFJSONRequestOperation.h new file mode 120000 index 0000000..9f2188e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFJSONRequestOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFJSONRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h new file mode 120000 index 0000000..f454e54 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFNetworking.h b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFNetworking.h new file mode 120000 index 0000000..a5a38da --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFNetworking.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFPropertyListRequestOperation.h b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFPropertyListRequestOperation.h new file mode 120000 index 0000000..4b04bd2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFPropertyListRequestOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFPropertyListRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h new file mode 120000 index 0000000..d9b35fb --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLConnectionOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFXMLRequestOperation.h b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFXMLRequestOperation.h new file mode 120000 index 0000000..9b01587 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/AFXMLRequestOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFXMLRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h new file mode 120000 index 0000000..20b48f1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/UIImageView+AFNetworking.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.h b/Unit-2-Journal/Pods/Headers/Public/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.h new file mode 120000 index 0000000..932a9db --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.h @@ -0,0 +1 @@ +../../../ISO8601DateFormatterValueTransformer/Code/ISO8601DateFormatterValueTransformer.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/ISO8601DateFormatterValueTransformer/RKISO8601DateFormatter.h b/Unit-2-Journal/Pods/Headers/Public/ISO8601DateFormatterValueTransformer/RKISO8601DateFormatter.h new file mode 120000 index 0000000..79788f6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/ISO8601DateFormatterValueTransformer/RKISO8601DateFormatter.h @@ -0,0 +1 @@ +../../../ISO8601DateFormatterValueTransformer/Code/RKISO8601DateFormatter.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFACL.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFACL.h new file mode 120000 index 0000000..7c3c14f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFACL.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFACL.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFAnalytics.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFAnalytics.h new file mode 120000 index 0000000..7751f45 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFAnalytics.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFAnalytics.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFAnonymousUtils.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFAnonymousUtils.h new file mode 120000 index 0000000..7b9b437 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFAnonymousUtils.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFAnonymousUtils.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFCloud.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFCloud.h new file mode 120000 index 0000000..4070bb1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFCloud.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFCloud.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFConfig.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFConfig.h new file mode 120000 index 0000000..919b834 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFConfig.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFConfig.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFConstants.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFConstants.h new file mode 120000 index 0000000..3b96186 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFConstants.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFConstants.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFFile.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFFile.h new file mode 120000 index 0000000..05ca154 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFFile.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFFile.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFGeoPoint.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFGeoPoint.h new file mode 120000 index 0000000..e9079fe --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFGeoPoint.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFGeoPoint.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFInstallation.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFInstallation.h new file mode 120000 index 0000000..1f2d37a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFInstallation.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFInstallation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFNetworkActivityIndicatorManager.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFNetworkActivityIndicatorManager.h new file mode 120000 index 0000000..1ae2fdb --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFNetworkActivityIndicatorManager.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFNetworkActivityIndicatorManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFNullability.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFNullability.h new file mode 120000 index 0000000..d3b6c2e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFNullability.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFNullability.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFObject+Subclass.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFObject+Subclass.h new file mode 120000 index 0000000..ccbad16 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFObject+Subclass.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFObject+Subclass.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFObject.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFObject.h new file mode 120000 index 0000000..b00d5bb --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFObject.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFObject.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFProduct.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFProduct.h new file mode 120000 index 0000000..f4f4940 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFProduct.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFProduct.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFPurchase.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFPurchase.h new file mode 120000 index 0000000..8d7cb4a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFPurchase.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFPurchase.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFPush.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFPush.h new file mode 120000 index 0000000..930cb47 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFPush.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFPush.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFQuery.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFQuery.h new file mode 120000 index 0000000..1ea0442 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFQuery.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFQuery.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFRelation.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFRelation.h new file mode 120000 index 0000000..a3e8444 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFRelation.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFRelation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFRole.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFRole.h new file mode 120000 index 0000000..26cd86c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFRole.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFRole.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFSession.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFSession.h new file mode 120000 index 0000000..4c43360 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFSession.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFSession.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFSubclassing.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFSubclassing.h new file mode 120000 index 0000000..901cadc --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFSubclassing.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFSubclassing.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFUser.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFUser.h new file mode 120000 index 0000000..01e4199 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFUser.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFUser.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/PFUserAuthenticationDelegate.h b/Unit-2-Journal/Pods/Headers/Public/Parse/PFUserAuthenticationDelegate.h new file mode 120000 index 0000000..3b6b473 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/PFUserAuthenticationDelegate.h @@ -0,0 +1 @@ +../../../Parse/Parse/PFUserAuthenticationDelegate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Parse/Parse.h b/Unit-2-Journal/Pods/Headers/Public/Parse/Parse.h new file mode 120000 index 0000000..699c11c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Parse/Parse.h @@ -0,0 +1 @@ +../../../Parse/Parse/Parse.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RKValueTransformers/RKValueTransformers.h b/Unit-2-Journal/Pods/Headers/Public/RKValueTransformers/RKValueTransformers.h new file mode 120000 index 0000000..7768a97 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RKValueTransformers/RKValueTransformers.h @@ -0,0 +1 @@ +../../../RKValueTransformers/Code/RKValueTransformers.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network.h new file mode 120000 index 0000000..5210a78 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network.h @@ -0,0 +1 @@ +../../../RestKit/Code/Network.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKHTTPRequestOperation.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKHTTPRequestOperation.h new file mode 120000 index 0000000..2b63c3c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKHTTPRequestOperation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKHTTPRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKManagedObjectRequestOperation.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKManagedObjectRequestOperation.h new file mode 120000 index 0000000..c5f5677 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKManagedObjectRequestOperation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKManagedObjectRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectManager.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectManager.h new file mode 120000 index 0000000..f67267f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectManager.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKObjectManager.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectParameterization.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectParameterization.h new file mode 120000 index 0000000..73e232c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectParameterization.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKObjectParameterization.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectRequestOperation.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectRequestOperation.h new file mode 120000 index 0000000..e4dbe06 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectRequestOperation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKObjectRequestOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectRequestOperationSubclass.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectRequestOperationSubclass.h new file mode 120000 index 0000000..d0ca904 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKObjectRequestOperationSubclass.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKObjectRequestOperationSubclass.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKPaginator.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKPaginator.h new file mode 120000 index 0000000..35b421e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKPaginator.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKPaginator.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKPathMatcher.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKPathMatcher.h new file mode 120000 index 0000000..73ab1e6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKPathMatcher.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKPathMatcher.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRequestDescriptor.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRequestDescriptor.h new file mode 120000 index 0000000..7f8e8b3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRequestDescriptor.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKRequestDescriptor.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKResponseDescriptor.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKResponseDescriptor.h new file mode 120000 index 0000000..4981d9a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKResponseDescriptor.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKResponseDescriptor.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKResponseMapperOperation.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKResponseMapperOperation.h new file mode 120000 index 0000000..a2e1586 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKResponseMapperOperation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKResponseMapperOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRoute.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRoute.h new file mode 120000 index 0000000..39eb2cb --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRoute.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKRoute.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRouteSet.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRouteSet.h new file mode 120000 index 0000000..a702bdc --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRouteSet.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKRouteSet.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRouter.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRouter.h new file mode 120000 index 0000000..7187f17 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Network/RKRouter.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Network/RKRouter.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping.h new file mode 120000 index 0000000..9ca1b53 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping.h @@ -0,0 +1 @@ +../../../RestKit/Code/ObjectMapping.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKAttributeMapping.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKAttributeMapping.h new file mode 120000 index 0000000..b196d35 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKAttributeMapping.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKAttributeMapping.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKDynamicMapping.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKDynamicMapping.h new file mode 120000 index 0000000..67a1caf --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKDynamicMapping.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKDynamicMapping.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKErrorMessage.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKErrorMessage.h new file mode 120000 index 0000000..6d6996d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKErrorMessage.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKErrorMessage.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKHTTPUtilities.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKHTTPUtilities.h new file mode 120000 index 0000000..318d5c2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKHTTPUtilities.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKHTTPUtilities.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMapperOperation.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMapperOperation.h new file mode 120000 index 0000000..59e87e2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMapperOperation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKMapperOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMapperOperation_Private.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMapperOperation_Private.h new file mode 120000 index 0000000..bd32976 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMapperOperation_Private.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKMapperOperation_Private.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMapping.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMapping.h new file mode 120000 index 0000000..6aaec37 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMapping.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKMapping.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingErrors.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingErrors.h new file mode 120000 index 0000000..68e3925 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingErrors.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKMappingErrors.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingOperation.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingOperation.h new file mode 120000 index 0000000..6b4d1bf --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingOperation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKMappingOperation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingOperationDataSource.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingOperationDataSource.h new file mode 120000 index 0000000..d463834 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingOperationDataSource.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKMappingOperationDataSource.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingResult.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingResult.h new file mode 120000 index 0000000..03618d2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKMappingResult.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKMappingResult.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectMapping.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectMapping.h new file mode 120000 index 0000000..d38ebca --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectMapping.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKObjectMapping.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectMappingMatcher.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectMappingMatcher.h new file mode 120000 index 0000000..2664bd7 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectMappingMatcher.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKObjectMappingMatcher.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectMappingOperationDataSource.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectMappingOperationDataSource.h new file mode 120000 index 0000000..cdac049 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectMappingOperationDataSource.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKObjectMappingOperationDataSource.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectUtilities.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectUtilities.h new file mode 120000 index 0000000..1ee01f3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKObjectUtilities.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKObjectUtilities.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKPropertyInspector.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKPropertyInspector.h new file mode 120000 index 0000000..a3e2a9d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKPropertyInspector.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKPropertyInspector.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKPropertyMapping.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKPropertyMapping.h new file mode 120000 index 0000000..db4bc5c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKPropertyMapping.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKPropertyMapping.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKRelationshipMapping.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKRelationshipMapping.h new file mode 120000 index 0000000..32b9847 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/ObjectMapping/RKRelationshipMapping.h @@ -0,0 +1 @@ +../../../../RestKit/Code/ObjectMapping/RKRelationshipMapping.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/RestKit.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/RestKit.h new file mode 120000 index 0000000..49e183c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/RestKit.h @@ -0,0 +1 @@ +../../../RestKit/Code/RestKit.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support.h new file mode 120000 index 0000000..06fa6db --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support.h @@ -0,0 +1 @@ +../../../RestKit/Code/Support.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKDictionaryUtilities.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKDictionaryUtilities.h new file mode 120000 index 0000000..f4e0175 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKDictionaryUtilities.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKDictionaryUtilities.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKDotNetDateFormatter.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKDotNetDateFormatter.h new file mode 120000 index 0000000..44ee028 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKDotNetDateFormatter.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKDotNetDateFormatter.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKErrors.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKErrors.h new file mode 120000 index 0000000..7319216 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKErrors.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKErrors.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKLog.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKLog.h new file mode 120000 index 0000000..6a428cb --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKLog.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKLog.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKLumberjackLogger.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKLumberjackLogger.h new file mode 120000 index 0000000..b8d134c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKLumberjackLogger.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKLumberjackLogger.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKMIMETypeSerialization.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKMIMETypeSerialization.h new file mode 120000 index 0000000..b77b8b3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKMIMETypeSerialization.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKMIMETypeSerialization.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKMIMETypes.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKMIMETypes.h new file mode 120000 index 0000000..71b36c8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKMIMETypes.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKMIMETypes.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKMacros.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKMacros.h new file mode 120000 index 0000000..f1d842d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKMacros.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKMacros.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKNSJSONSerialization.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKNSJSONSerialization.h new file mode 120000 index 0000000..537580d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKNSJSONSerialization.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKNSJSONSerialization.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKOperationStateMachine.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKOperationStateMachine.h new file mode 120000 index 0000000..1391329 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKOperationStateMachine.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKOperationStateMachine.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKPathUtilities.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKPathUtilities.h new file mode 120000 index 0000000..2ef3a20 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKPathUtilities.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKPathUtilities.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKSerialization.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKSerialization.h new file mode 120000 index 0000000..b66ce92 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKSerialization.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKSerialization.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKStringTokenizer.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKStringTokenizer.h new file mode 120000 index 0000000..6535c08 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKStringTokenizer.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKStringTokenizer.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKURLEncodedSerialization.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKURLEncodedSerialization.h new file mode 120000 index 0000000..ea62327 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/RKURLEncodedSerialization.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/RKURLEncodedSerialization.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/lcl_config_components_RK.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/lcl_config_components_RK.h new file mode 120000 index 0000000..7902c5b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/lcl_config_components_RK.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/lcl_config_components_RK.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/lcl_config_extensions_RK.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/lcl_config_extensions_RK.h new file mode 120000 index 0000000..eff8ca5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/lcl_config_extensions_RK.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/lcl_config_extensions_RK.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/lcl_config_logger_RK.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/lcl_config_logger_RK.h new file mode 120000 index 0000000..39088b8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Support/lcl_config_logger_RK.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Support/lcl_config_logger_RK.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing.h new file mode 120000 index 0000000..1404cdc --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing.h @@ -0,0 +1 @@ +../../../RestKit/Code/Testing.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKBenchmark.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKBenchmark.h new file mode 120000 index 0000000..e5a9bfd --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKBenchmark.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKBenchmark.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKConnectionTestExpectation.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKConnectionTestExpectation.h new file mode 120000 index 0000000..6a690f0 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKConnectionTestExpectation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKConnectionTestExpectation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKMappingTest.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKMappingTest.h new file mode 120000 index 0000000..8bdd3be --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKMappingTest.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKMappingTest.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKPropertyMappingTestExpectation.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKPropertyMappingTestExpectation.h new file mode 120000 index 0000000..13cdab9 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKPropertyMappingTestExpectation.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKPropertyMappingTestExpectation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestFactory.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestFactory.h new file mode 120000 index 0000000..145b1f0 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestFactory.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKTestFactory.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestFixture.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestFixture.h new file mode 120000 index 0000000..26226cd --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestFixture.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKTestFixture.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestHelpers.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestHelpers.h new file mode 120000 index 0000000..44a0b44 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestHelpers.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKTestHelpers.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestNotificationObserver.h b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestNotificationObserver.h new file mode 120000 index 0000000..d8ed687 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/RestKit/Testing/RKTestNotificationObserver.h @@ -0,0 +1 @@ +../../../../RestKit/Code/Testing/RKTestNotificationObserver.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/SOCKit/SOCKit.h b/Unit-2-Journal/Pods/Headers/Public/SOCKit/SOCKit.h new file mode 120000 index 0000000..72c5afc --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/SOCKit/SOCKit.h @@ -0,0 +1 @@ +../../../SOCKit/SOCKit.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKEvent.h b/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKEvent.h new file mode 120000 index 0000000..e0febb8 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKEvent.h @@ -0,0 +1 @@ +../../../TransitionKit/Code/TKEvent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKState.h b/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKState.h new file mode 120000 index 0000000..6dbd8d3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKState.h @@ -0,0 +1 @@ +../../../TransitionKit/Code/TKState.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKStateMachine.h b/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKStateMachine.h new file mode 120000 index 0000000..cfbbd7f --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKStateMachine.h @@ -0,0 +1 @@ +../../../TransitionKit/Code/TKStateMachine.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKTransition.h b/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKTransition.h new file mode 120000 index 0000000..d83dc2c --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TKTransition.h @@ -0,0 +1 @@ +../../../TransitionKit/Code/TKTransition.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TransitionKit.h b/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TransitionKit.h new file mode 120000 index 0000000..d5b6768 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/TransitionKit/TransitionKit.h @@ -0,0 +1 @@ +../../../TransitionKit/Code/TransitionKit.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/Vendor/LibComponentLogging/Core/lcl_RK.h b/Unit-2-Journal/Pods/Headers/Public/Vendor/LibComponentLogging/Core/lcl_RK.h new file mode 120000 index 0000000..d94e2d3 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/Vendor/LibComponentLogging/Core/lcl_RK.h @@ -0,0 +1 @@ +../../../../../RestKit/Vendor/LibComponentLogging/Core/lcl_RK.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/ISO8601DateFormatterValueTransformer.h b/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/ISO8601DateFormatterValueTransformer.h new file mode 100644 index 0000000..7a758e4 --- /dev/null +++ b/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/ISO8601DateFormatterValueTransformer.h @@ -0,0 +1,34 @@ +// +// ISO8601DateFormatterValueTransformer.h +// RestKit +// +// Created by Blake Watters on 9/11/13. +// Copyright (c) 2013 RestKit. All rights reserved. +// +// 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 "RKValueTransformers.h" +#import "RKISO8601DateFormatter.h" + +/** + The `RKValueTransformers` category extends ISO8601DateFormatter to support the `RKValueTransforming` interface, making it usable with the RestKit value transformation architecture. + */ +@interface RKISO8601DateFormatter (RKValueTransformers) + +/** + Returns an ISO 8601 date formatter configured to strictly parse times into `NSDate` instances with the UTC time zone and `en_US_POSIX` locale. + */ ++ (instancetype)defaultISO8601DateFormatter; + +@end diff --git a/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/ISO8601DateFormatterValueTransformer.m b/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/ISO8601DateFormatterValueTransformer.m new file mode 100644 index 0000000..fd42686 --- /dev/null +++ b/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/ISO8601DateFormatterValueTransformer.m @@ -0,0 +1,55 @@ +// +// ISO8601DateFormatterValueTransformer.m +// RestKit +// +// Created by Blake Watters on 9/11/13. +// Copyright (c) 2013 RestKit. All rights reserved. +// +// 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 "ISO8601DateFormatterValueTransformer.h" + +@implementation RKISO8601DateFormatter (RKValueTransformers) + ++ (instancetype)defaultISO8601DateFormatter +{ + RKISO8601DateFormatter *iso8601DateFormatter = [RKISO8601DateFormatter new]; + iso8601DateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; + iso8601DateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; + iso8601DateFormatter.includeTime = YES; + iso8601DateFormatter.parsesStrictly = YES; + return iso8601DateFormatter; +} + +- (BOOL)validateTransformationFromClass:(Class)inputValueClass toClass:(Class)outputValueClass +{ + return (([inputValueClass isSubclassOfClass:[NSDate class]] && [outputValueClass isSubclassOfClass:[NSString class]]) || + ([inputValueClass isSubclassOfClass:[NSString class]] && [outputValueClass isSubclassOfClass:[NSDate class]])); +} + +- (BOOL)transformValue:(id)inputValue toValue:(id *)outputValue ofClass:(Class)outputValueClass error:(NSError **)error +{ + RKValueTransformerTestInputValueIsKindOfClass(inputValue, (@[ [NSString class], [NSDate class] ]), error); + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, (@[ [NSString class], [NSDate class] ]), error); + if ([inputValue isKindOfClass:[NSString class]]) { + NSString *errorDescription = nil; + BOOL success = [self getObjectValue:outputValue forString:inputValue errorDescription:&errorDescription]; + RKValueTransformerTestTransformation(success, error, @"%@", errorDescription); + } else if ([inputValue isKindOfClass:[NSDate class]]) { + *outputValue = [self stringFromDate:inputValue]; + } + return YES; +} + +@end diff --git a/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/RKISO8601DateFormatter.h b/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/RKISO8601DateFormatter.h new file mode 100644 index 0000000..f4cc12a --- /dev/null +++ b/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/RKISO8601DateFormatter.h @@ -0,0 +1,93 @@ +// This is a forked copy of the ISO8601DateFormatter + +/*ISO8601DateFormatter.h + * + *Created by Peter Hosey on 2009-04-11. + *Copyright 2009 Peter Hosey. All rights reserved. + */ + +#import + +/*This class converts dates to and from ISO 8601 strings. A good introduction to ISO 8601: + * + *Parsing can be done strictly, or not. When you parse loosely, leading whitespace is ignored, as is anything after the date. + *The loose parser will return an NSDate for this string: @" \t\r\n\f\t 2006-03-02!!!" + *Leading non-whitespace will not be ignored; the string will be rejected, and nil returned. See the README that came with this addition. + * + *The strict parser will only accept a string if the date is the entire string. The above string would be rejected immediately, solely on these grounds. + *Also, the loose parser provides some extensions that the strict parser doesn't. + *For example, the standard says for "-DDD" (an ordinal date in the implied year) that the logical representation (meaning, hierarchically) would be "--DDD", but because that extra hyphen is "superfluous", it was omitted. + *The loose parser will accept the extra hyphen; the strict parser will not. + *A full list of these extensions is in the README file. + */ + +/*The format to either expect or produce. + *Calendar format is YYYY-MM-DD. + *Ordinal format is YYYY-DDD, where DDD ranges from 1 to 366; for example, 2009-32 is 2009-02-01. + *Week format is YYYY-Www-D, where ww ranges from 1 to 53 (the 'W' is literal) and D ranges from 1 to 7; for example, 2009-W05-07. + */ +enum { + RKISO8601DateFormatCalendar, + RKISO8601DateFormatOrdinal, + RKISO8601DateFormatWeek, +}; +typedef NSUInteger RKISO8601DateFormat; + +@interface RKISO8601DateFormatter: NSFormatter + +/** + The time zone for tge formatter. + + **Default:** `[NSTimeZone defaultTimeZone]` + */ +@property (nonatomic, strong) NSTimeZone *timeZone; + +/** + The locale for the formatter. + + **Default:** `[NSLocale currentLocale]` + */ +@property (nonatomic, strong) NSLocale *locale; + +#pragma mark Parsing + +/** + A Boolean value that determines if the receiver parses strictly. + + **Default**: `NO` + */ +@property (nonatomic, assign) BOOL parsesStrictly; + +- (NSDateComponents *)dateComponentsFromString:(NSString *)string; +- (NSDate *)dateFromString:(NSString *)string; + +#pragma mark Unparsing + +/** + **Default**: `RKISO8601DateFormatCalendar` + */ +@property (nonatomic, assign) RKISO8601DateFormat format; + +/** + A Boolean value that specifies if time should be included in the formatted strings. + + **Default**: `NO` + */ +@property (nonatomic, assign) BOOL includeTime; + +/** + The separator character to use between time components. + + **Default**: `':'` + */ +@property (nonatomic, assign) unichar timeSeparator; + +/** + Returns an ISO-8601 string representation of the given date. + + @param date The date to be formatted into a string. + @return An ISO-8601 formatted string representation of the date. + */ +- (NSString *)stringFromDate:(NSDate *)date; + +@end diff --git a/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/RKISO8601DateFormatter.m b/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/RKISO8601DateFormatter.m new file mode 100644 index 0000000..2079593 --- /dev/null +++ b/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/Code/RKISO8601DateFormatter.m @@ -0,0 +1,912 @@ +// This is a forked copy of the ISO8601DateFormatter + +/*ISO8601DateFormatter.m + * + *Created by Peter Hosey on 2009-04-11. + *Copyright 2009 Peter Hosey. All rights reserved. + */ + +#import +#import "RKISO8601DateFormatter.h" + +// Set Logging Component +#undef RKLogComponent +#define RKLogComponent RKlcl_cRestKitSupport + +unichar RKISO8601DefaultTimeSeparatorCharacter = ':'; + +// Unicode date formats. +#define RK_ISOCALENDAR_DATE_FORMAT @"yyyy-MM-dd" +#define RK_ISOORDINAL_DATE_FORMAT @"yyyy-DDD" +#define RK_ISOTIME_FORMAT @"HH:mm:ss" +#define RK_ISOTIME_WITH_TIMEZONE_FORMAT RK_ISOTIME_FORMAT @"Z" + +// printf formats. +#define RK_ISOTIMEZONE_UTC_FORMAT @"Z" +#define RK_ISOTIMEZONE_OFFSET_FORMAT @"%+.2ld%.2ld" + +#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && (__IPHONE_OS_VERSION_MAX_ALLOWED < 70000)) || \ + (defined(MAC_OS_X_VERSION_MAX_ALLOWED) && (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_9)) +#define NSCalendarUnitYear NSYearCalendarUnit +#define NSCalendarUnitMonth NSMonthCalendarUnit +#define NSCalendarUnitDay NSDayCalendarUnit +#define NSCalendarUnitWeekday NSWeekdayCalendarUnit +#define NSCalendarIdentifierGregorian NSGregorianCalendar +#endif + +#define RK_CALENDAR_UNIT_YEAR NSCalendarUnitYear +#define RK_CALENDAR_UNIT_MONTH NSCalendarUnitMonth +#define RK_CALENDAR_UNIT_DAY NSCalendarUnitDay +#define RK_CALENDAR_UNIT_WEEKDAY NSCalendarUnitWeekday +#define RK_CALENDAR_IDENTIFIER_GREGORIAN NSCalendarIdentifierGregorian + +// Parsing Helpers +static NSUInteger read_segment(const unsigned char *str, const unsigned char **next, NSUInteger *out_num_digits); +static NSUInteger read_segment_4digits(const unsigned char *str, const unsigned char **next, NSUInteger *out_num_digits); +static NSUInteger read_segment_2digits(const unsigned char *str, const unsigned char **next); +static double read_double(const unsigned char *str, const unsigned char **next); +static BOOL is_leap_year(NSUInteger year); + +@interface RKISO8601DateFormatter(UnparsingPrivate) + +- (NSString *)replaceColonsInString:(NSString *)timeFormat withTimeSeparator:(unichar)timeSep; +- (NSString *)stringFromDate:(NSDate *)date formatString:(NSString *)dateFormat timeZone:(NSTimeZone *)timeZone; +- (NSString *)weekDateStringForDate:(NSDate *)date timeZone:(NSTimeZone *)timeZone; + +@end + +static NSMutableDictionary *timeZonesByOffset; + +@interface RKISO8601DateFormatter () +@property (nonatomic, strong) NSCalendar *parsingCalendar; +@property (nonatomic, strong) NSCalendar *unparsingCalendar; +@property (nonatomic, strong) NSDateFormatter *unparsingFormatter; +@property (nonatomic, copy) NSString *lastUsedFormatString; +@end + +@implementation RKISO8601DateFormatter + ++ (void)initialize +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + timeZonesByOffset = [[NSMutableDictionary alloc] init]; + }); +} + +- (id)init +{ + self = [super init]; + if (self) { + self.timeZone = [NSTimeZone defaultTimeZone]; + self.locale = [NSLocale currentLocale]; + + self.parsingCalendar = [self newCalendar]; + self.unparsingCalendar = [self newCalendar]; + + self.format = RKISO8601DateFormatCalendar; + self.timeSeparator = RKISO8601DefaultTimeSeparatorCharacter; + self.includeTime = NO; + self.parsesStrictly = NO; + } + return self; +} + +- (NSCalendar *)newCalendar +{ + NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:RK_CALENDAR_IDENTIFIER_GREGORIAN]; + calendar.firstWeekday = 2; //Monday + calendar.timeZone = self.timeZone; + calendar.locale = self.locale; + return calendar; +} + +- (void)setTimeZone:(NSTimeZone *)timeZone +{ + if (_timeZone != timeZone) { + _timeZone = timeZone; + _unparsingCalendar.timeZone = timeZone; + _unparsingFormatter.timeZone = timeZone; + } +} + +- (void)setLocale:(NSLocale *)locale +{ + if (_locale != locale) { + _locale = locale; + _unparsingCalendar.locale = locale; + _unparsingFormatter.locale = locale; + } +} + +#pragma mark Parsing + +/*Valid ISO 8601 date formats: + * + *YYYYMMDD + *YYYY-MM-DD + *YYYY-MM + *YYYY + *YY //century + * //Implied century: YY is 00-99 + * YYMMDD + * YY-MM-DD + * -YYMM + * -YY-MM + * -YY + * //Implied year + * --MMDD + * --MM-DD + * --MM + * //Implied year and month + * ---DD + * //Ordinal dates: DDD is the number of the day in the year (1-366) + *YYYYDDD + *YYYY-DDD + * YYDDD + * YY-DDD + * -DDD + * //Week-based dates: ww is the number of the week, and d is the number (1-7) of the day in the week + *yyyyWwwd + *yyyy-Www-d + *yyyyWww + *yyyy-Www + *yyWwwd + *yy-Www-d + *yyWww + *yy-Www + * //Year of the implied decade + *-yWwwd + *-y-Www-d + *-yWww + *-y-Www + * //Week and day of implied year + * -Wwwd + * -Www-d + * //Week only of implied year + * -Www + * //Day only of implied week + * -W-d + */ + +- (NSDateComponents *) dateComponentsFromString:(NSString *)string +{ + return [self dateComponentsFromString:string timeZone:NULL]; +} + +- (NSDateComponents *) dateComponentsFromString:(NSString *)string timeZone:(out NSTimeZone **)outTimeZone +{ + return [self dateComponentsFromString:string timeZone:outTimeZone range:NULL]; +} + +- (NSDateComponents *) dateComponentsFromString:(NSString *)string timeZone:(out NSTimeZone **)outTimeZone range:(out NSRange *)outRange +{ + // We don't support ISO-8601 intervals so bail if the string contains a slash delimiter + if ([string rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"/"]].location != NSNotFound) return nil; + + NSDate *now = [NSDate date]; + + NSDateComponents *components = [[NSDateComponents alloc] init]; + NSDateComponents *nowComponents = [self.parsingCalendar components:(RK_CALENDAR_UNIT_YEAR | RK_CALENDAR_UNIT_MONTH | RK_CALENDAR_UNIT_DAY) fromDate:now]; + + NSUInteger + //Date + year, + month_or_week = 0U, + day = 0U, + //Time + hour = 0U; + NSTimeInterval + minute = 0.0, + second = 0.0; + //Time zone + NSInteger tz_hour = 0; + NSInteger tz_minute = 0; + + enum { + monthAndDate, + week, + dateOnly + } dateSpecification = monthAndDate; + + BOOL strict = self.parsesStrictly; + unichar timeSep = self.timeSeparator; + + if (strict) timeSep = RKISO8601DefaultTimeSeparatorCharacter; + NSAssert(timeSep != '\0', @"Time separator must not be NUL."); + + BOOL isValidDate = ([string length] > 0U); + NSTimeZone *timeZone = nil; + + const unsigned char *ch = (const unsigned char *)[string UTF8String]; + + NSRange range = { 0U, 0U }; + const unsigned char *start_of_date = NULL; + if (strict && isspace(*ch)) { + range.location = NSNotFound; + isValidDate = NO; + } else { + //Skip leading whitespace. + NSUInteger i = 0U; + for(NSUInteger len = strlen((const char *)ch); i < len; ++i) { + if (!isspace(ch[i])) + break; + } + + range.location = i; + ch += i; + start_of_date = ch; + + NSUInteger segment; + NSUInteger num_leading_hyphens = 0U, num_digits = 0U; + + if (*ch == 'T') { + //There is no date here, only a time. Set the date to now; then we'll parse the time. + isValidDate = isdigit(*++ch); + + year = nowComponents.year; + month_or_week = nowComponents.month; + day = nowComponents.day; + } else { + while(*ch == '-') { + ++num_leading_hyphens; + ++ch; + } + + segment = read_segment(ch, &ch, &num_digits); + switch(num_digits) { + case 0: + if (*ch == 'W') { + if ((ch[1] == '-') && isdigit(ch[2]) && ((num_leading_hyphens == 1U) || ((num_leading_hyphens == 2U) && !strict))) { + year = nowComponents.year; + month_or_week = 1U; + ch += 2; + goto parseDayAfterWeek; + } else if (num_leading_hyphens == 1U) { + year = nowComponents.year; + goto parseWeekAndDay; + } else + isValidDate = NO; + } else + isValidDate = NO; + break; + + case 8: //YYYY MM DD + if (num_leading_hyphens > 0U) + isValidDate = NO; + else { + day = segment % 100U; + segment /= 100U; + month_or_week = segment % 100U; + year = segment / 100U; + } + break; + + case 6: //YYMMDD (implicit century) + if (num_leading_hyphens > 0U) + isValidDate = NO; + else { + day = segment % 100U; + segment /= 100U; + month_or_week = segment % 100U; + year = nowComponents.year; + year -= (year % 100U); + year += segment / 100U; + } + break; + + case 4: + switch(num_leading_hyphens) { + case 0: //YYYY + year = segment; + + if (*ch == '-') ++ch; + + if (!isdigit(*ch)) { + if (*ch == 'W') + goto parseWeekAndDay; + else + month_or_week = day = 1U; + } else { + segment = read_segment(ch, &ch, &num_digits); + switch(num_digits) { + case 4: //MMDD + day = segment % 100U; + month_or_week = segment / 100U; + break; + + case 2: //MM + month_or_week = segment; + + if (*ch == '-') ++ch; + if (!isdigit(*ch)) + day = 1U; + else + day = read_segment(ch, &ch, NULL); + break; + + case 3: //DDD + day = segment % 1000U; + dateSpecification = dateOnly; + if (strict && (day > (365U + is_leap_year(year)))) + isValidDate = NO; + break; + + default: + isValidDate = NO; + } + } + break; + + case 1: //YYMM + month_or_week = segment % 100U; + year = segment / 100U; + + if (*ch == '-') ++ch; + if (!isdigit(*ch)) + day = 1U; + else + day = read_segment(ch, &ch, NULL); + + break; + + case 2: //MMDD + day = segment % 100U; + month_or_week = segment / 100U; + year = nowComponents.year; + + break; + + default: + isValidDate = NO; + } //switch(num_leading_hyphens) (4 digits) + break; + + case 1: + if (strict) { + //Two digits only - never just one. + if (num_leading_hyphens == 1U) { + if (*ch == '-') ++ch; + if (*++ch == 'W') { + year = nowComponents.year; + year -= (year % 10U); + year += segment; + goto parseWeekAndDay; + } else + isValidDate = NO; + } else + isValidDate = NO; + break; + } + case 2: + switch(num_leading_hyphens) { + case 0: + if (*ch == '-') { + //Implicit century + year = nowComponents.year; + year -= (year % 100U); + year += segment; + + if (*++ch == 'W') + goto parseWeekAndDay; + else if (!isdigit(*ch)) { + goto centuryOnly; + } else { + //Get month and/or date. + segment = read_segment_4digits(ch, &ch, &num_digits); + switch(num_digits) { + case 4: //YY-MMDD + day = segment % 100U; + month_or_week = segment / 100U; + break; + + case 1: //YY-M; YY-M-DD (extension) + if (strict) { + isValidDate = NO; + break; + } + case 2: //YY-MM; YY-MM-DD + month_or_week = segment; + if (*ch == '-') { + if (isdigit(*++ch)) + day = read_segment_2digits(ch, &ch); + else + day = 1U; + } else + day = 1U; + break; + + case 3: //Ordinal date. + day = segment; + dateSpecification = dateOnly; + break; + } + } + } else if (*ch == 'W') { + year = nowComponents.year; + year -= (year % 100U); + year += segment; + + parseWeekAndDay: //*ch should be 'W' here. + if (!isdigit(*++ch)) { + //Not really a week-based date; just a year followed by '-W'. + if (strict) + isValidDate = NO; + else + month_or_week = day = 1U; + } else { + month_or_week = read_segment_2digits(ch, &ch); + if (*ch == '-') ++ch; + parseDayAfterWeek: + day = isdigit(*ch) ? read_segment_2digits(ch, &ch) : 1U; + dateSpecification = week; + } + } else { + //Century only. Assume current year. + centuryOnly: + year = segment * 100U + nowComponents.year % 100U; + month_or_week = day = 1U; + } + break; + + case 1:; //-YY; -YY-MM (implicit century) + NSUInteger current_year = nowComponents.year; + NSUInteger current_century = (current_year % 100U); + year = segment + (current_year - current_century); + if (num_digits == 1U) //implied decade + year += current_century - (current_year % 10U); + + if (*ch == '-') { + ++ch; + month_or_week = read_segment_2digits(ch, &ch); + } + + day = 1U; + break; + + case 2: //--MM; --MM-DD + year = nowComponents.year; + month_or_week = segment; + if (*ch == '-') { + ++ch; + day = read_segment_2digits(ch, &ch); + } + break; + + case 3: //---DD + year = nowComponents.year; + month_or_week = nowComponents.month; + day = segment; + break; + + default: + isValidDate = NO; + } //switch(num_leading_hyphens) (2 digits) + break; + + case 7: //YYYY DDD (ordinal date) + if (num_leading_hyphens > 0U) + isValidDate = NO; + else { + day = segment % 1000U; + year = segment / 1000U; + dateSpecification = dateOnly; + if (strict && (day > (365U + is_leap_year(year)))) + isValidDate = NO; + } + break; + + case 3: //--DDD (ordinal date, implicit year) + //Technically, the standard only allows one hyphen. But it says that two hyphens is the logical implementation, and one was dropped for brevity. So I have chosen to allow the missing hyphen. + if ((num_leading_hyphens < 1U) || ((num_leading_hyphens > 2U) && !strict)) + isValidDate = NO; + else { + day = segment; + year = nowComponents.year; + dateSpecification = dateOnly; + if (strict && (day > (365U + is_leap_year(year)))) + isValidDate = NO; + } + break; + + default: + isValidDate = NO; + } + } + + if (isValidDate) { + if (isspace(*ch) || (*ch == 'T')) ++ch; + + if (isdigit(*ch)) { + hour = read_segment_2digits(ch, &ch); + if (*ch == timeSep) { + ++ch; + if ((timeSep == ',') || (timeSep == '.')) { + //We can't do fractional minutes when '.' is the segment separator. + //Only allow whole minutes and whole seconds. + minute = read_segment_2digits(ch, &ch); + if (*ch == timeSep) { + ++ch; + second = read_segment_2digits(ch, &ch); + } + } else { + //Allow a fractional minute. + //If we don't get a fraction, look for a seconds segment. + //Otherwise, the fraction of a minute is the seconds. + minute = read_double(ch, &ch); + second = modf(minute, &minute); + if (second > DBL_EPSILON) + second *= 60.0; //Convert fraction (e.g. .5) into seconds (e.g. 30). + else if (*ch == timeSep) { + ++ch; + second = read_double(ch, &ch); + } + } + } + + if (!strict) { + if (isspace(*ch)) ++ch; + } + + switch(*ch) { + case 'Z': + timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; + break; + + case '+': + case '-':; + BOOL negative = (*ch == '-'); + if (isdigit(*++ch)) { + //Read hour offset. + segment = *ch - '0'; + if (isdigit(*++ch)) { + segment *= 10U; + segment += *(ch++) - '0'; + } + tz_hour = (NSInteger)segment; + if (negative) tz_hour = -tz_hour; + + //Optional separator. + if (*ch == timeSep) ++ch; + + if (isdigit(*ch)) { + //Read minute offset. + segment = *ch - '0'; + if (isdigit(*++ch)) { + segment *= 10U; + segment += *ch - '0'; + } + tz_minute = segment; + if (negative) tz_minute = -tz_minute; + } + + NSTimeInterval timeZoneOffset = (tz_hour * 3600) + (tz_minute * 60); + NSNumber *offsetNum = [NSNumber numberWithDouble:timeZoneOffset]; + timeZone = [timeZonesByOffset objectForKey:offsetNum]; + if (!timeZone) { + timeZone = [NSTimeZone timeZoneForSecondsFromGMT:timeZoneOffset]; + if (timeZone) + [timeZonesByOffset setObject:timeZone forKey:offsetNum]; + } + } + } + } + } + + if (isValidDate) { + components.year = year; + components.day = day; + components.hour = hour; + components.minute = (NSInteger)minute; + components.second = (NSInteger)second; + + switch(dateSpecification) { + case monthAndDate: + components.month = month_or_week; + break; + + case week:; + //Adapted from . + //This works by converting the week date into an ordinal date, then letting the next case handle it. + NSUInteger prevYear = year - 1U; + NSUInteger YY = prevYear % 100U; + NSUInteger C = prevYear - YY; + NSUInteger G = YY + YY / 4U; + NSUInteger isLeapYear = (((C / 100U) % 4U) * 5U); + NSUInteger Jan1Weekday = (isLeapYear + G) % 7U; + enum { monday, tuesday, wednesday, thursday/*, friday, saturday, sunday*/ }; + components.day = ((8U - Jan1Weekday) + (7U * (Jan1Weekday > thursday))) + (day - 1U) + (7U * (month_or_week - 2)); + + case dateOnly: //An "ordinal date". + break; + } + } + } //if (!(strict && isdigit(ch[0]))) + + if (outRange) { + if (isValidDate) + range.length = ch - start_of_date; + else + range.location = NSNotFound; + + *outRange = range; + } + if (outTimeZone) { + *outTimeZone = timeZone; + } + + return isValidDate ? components : nil; +} + +- (NSDate *)dateFromString:(NSString *)string +{ + return [self dateFromString:string timeZone:NULL]; +} + +- (NSDate *)dateFromString:(NSString *)string timeZone:(out NSTimeZone **)outTimeZone +{ + return [self dateFromString:string timeZone:outTimeZone range:NULL]; +} + +- (NSDate *)dateFromString:(NSString *)string timeZone:(out NSTimeZone **)outTimeZone range:(out NSRange *)outRange { + NSTimeZone *timeZone = nil; + NSDateComponents *components = [self dateComponentsFromString:string timeZone:&timeZone range:outRange]; + if (! components) return nil; + if (outTimeZone) + *outTimeZone = timeZone; + self.parsingCalendar.timeZone = timeZone ?: self.timeZone; + return [self.parsingCalendar dateFromComponents:components]; +} + +- (BOOL)getObjectValue:(id *)outValue forString:(NSString *)string errorDescription:(NSString **)error +{ + NSDate *date = [self dateFromString:string]; + if (outValue) + *outValue = date; + return (date != nil); +} + +#pragma mark Unparsing + +- (NSString *) replaceColonsInString:(NSString *)timeFormat withTimeSeparator:(unichar)timeSep +{ + if (timeSep != ':') { + NSMutableString *timeFormatMutable = [timeFormat mutableCopy]; + [timeFormatMutable replaceOccurrencesOfString:@":" + withString:[NSString stringWithCharacters:&timeSep length:1U] + options:NSBackwardsSearch | NSLiteralSearch + range:(NSRange){ 0UL, [timeFormat length] }]; + timeFormat = timeFormatMutable; + } + return timeFormat; +} + +- (NSString *)stringFromDate:(NSDate *)date +{ + switch (self.format) { + case RKISO8601DateFormatCalendar: + return [self stringFromDate:date formatString:RK_ISOCALENDAR_DATE_FORMAT]; + case RKISO8601DateFormatWeek: + return [self weekDateStringForDate:date timeZone:self.timeZone]; + case RKISO8601DateFormatOrdinal: + return [self stringFromDate:date formatString:RK_ISOORDINAL_DATE_FORMAT]; + default: + [NSException raise:NSInternalInconsistencyException format:@"self.format was %ld, not calendar (%d), week (%d), or ordinal (%d)", (unsigned long) self.format, RKISO8601DateFormatCalendar, RKISO8601DateFormatWeek, RKISO8601DateFormatOrdinal]; + return nil; + } +} + +- (NSString *)stringFromDate:(NSDate *)date formatString:(NSString *)dateFormat +{ + if (self.includeTime) dateFormat = [dateFormat stringByAppendingFormat:@"'T'%@", [self replaceColonsInString:RK_ISOTIME_FORMAT withTimeSeparator:self.timeSeparator]]; + + if (! [dateFormat isEqualToString:self.lastUsedFormatString]) { + self.unparsingFormatter = nil; + self.lastUsedFormatString = dateFormat; + } + + if (!self.unparsingFormatter) { + self.unparsingFormatter = [[NSDateFormatter alloc] init]; + self.unparsingFormatter.formatterBehavior = NSDateFormatterBehavior10_4; + self.unparsingFormatter.dateFormat = dateFormat; + self.unparsingFormatter.calendar = self.unparsingCalendar; + self.unparsingFormatter.timeZone = self.timeZone; + self.unparsingFormatter.locale = self.locale; + } + + NSString *str = [self.unparsingFormatter stringForObjectValue:date]; + if (self.includeTime) { + NSInteger offset = [self.timeZone secondsFromGMT]; + offset /= 60; //bring down to minutes + if (offset == 0) + str = [str stringByAppendingString:RK_ISOTIMEZONE_UTC_FORMAT]; + else + str = [str stringByAppendingFormat:RK_ISOTIMEZONE_OFFSET_FORMAT, (long) (offset / 60), (long) (offset % 60)]; + } + + return str; +} + +- (NSString *)stringForObjectValue:(id)value +{ + NSParameterAssert([value isKindOfClass:[NSDate class]]); + return [self stringFromDate:(NSDate *)value]; +} + +/*Adapted from: + * Algorithm for Converting Gregorian Dates to ISO 8601 Week Date + * Rick McCarty, 1999 + * http://personal.ecu.edu/mccartyr/ISOwdALG.txt + */ +- (NSString *)weekDateStringForDate:(NSDate *)date +{ + self.unparsingCalendar.timeZone = self.timeZone; + self.unparsingCalendar.locale = self.locale; + NSDateComponents *components = [self.unparsingCalendar components:RK_CALENDAR_UNIT_YEAR | RK_CALENDAR_UNIT_WEEKDAY | RK_CALENDAR_UNIT_DAY fromDate:date]; + + //Determine the ordinal date. + NSDateComponents *startOfYearComponents = [self.unparsingCalendar components:RK_CALENDAR_UNIT_YEAR fromDate:date]; + startOfYearComponents.month = 1; + startOfYearComponents.day = 1; + NSDateComponents *ordinalComponents = [self.unparsingCalendar components:RK_CALENDAR_UNIT_DAY fromDate:[self.unparsingCalendar dateFromComponents:startOfYearComponents] toDate:date options:0]; + ordinalComponents.day += 1; + + enum { + monday, tuesday, wednesday, thursday, friday, saturday, sunday + }; + enum { + january = 1, february, march, + april, may, june, + july, august, september, + october, november, december + }; + + NSInteger year = components.year; + NSInteger week = 0; + //The old unparser added 6 to [calendarDate dayOfWeek], which was zero-based; components.weekday is one-based, so we now add only 5. + NSInteger dayOfWeek = (components.weekday + 5) % 7; + NSInteger dayOfYear = ordinalComponents.day; + + NSInteger prevYear = year - 1; + + BOOL yearIsLeapYear = is_leap_year(year); + BOOL prevYearIsLeapYear = is_leap_year(prevYear); + + NSInteger YY = prevYear % 100; + NSInteger C = prevYear - YY; + NSInteger G = YY + YY / 4; + NSInteger Jan1Weekday = (((((C / 100) % 4) * 5) + G) % 7); + + NSInteger weekday = ((dayOfYear + Jan1Weekday) - 1) % 7; + + if ((dayOfYear <= (7 - Jan1Weekday)) && (Jan1Weekday > thursday)) { + week = 52 + ((Jan1Weekday == friday) || ((Jan1Weekday == saturday) && prevYearIsLeapYear)); + --year; + } else { + NSInteger lengthOfYear = 365 + yearIsLeapYear; + if ((lengthOfYear - dayOfYear) < (thursday - weekday)) { + ++year; + week = 1; + } else { + NSInteger J = dayOfYear + (sunday - weekday) + Jan1Weekday; + week = J / 7 - (Jan1Weekday > thursday); + } + } + + NSString *timeString; + if (self.includeTime) { + NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; + unichar timeSep = self.timeSeparator; + if (!timeSep) timeSep = RKISO8601DefaultTimeSeparatorCharacter; + formatter.dateFormat = [self replaceColonsInString:RK_ISOTIME_WITH_TIMEZONE_FORMAT withTimeSeparator:timeSep]; + + timeString = [formatter stringForObjectValue:date]; + } else + timeString = @""; + + return [NSString stringWithFormat:@"%lu-W%02lu-%02lu%@", (unsigned long)year, (unsigned long)week, ((unsigned long)dayOfWeek) + 1U, timeString]; +} + +@end + +static NSUInteger read_segment(const unsigned char *str, const unsigned char **next, NSUInteger *out_num_digits) { + NSUInteger num_digits = 0U; + NSUInteger value = 0U; + + while(isdigit(*str)) { + value *= 10U; + value += *str - '0'; + ++num_digits; + ++str; + } + + if (next) *next = str; + if (out_num_digits) *out_num_digits = num_digits; + + return value; +} +static NSUInteger read_segment_4digits(const unsigned char *str, const unsigned char **next, NSUInteger *out_num_digits) { + NSUInteger num_digits = 0U; + NSUInteger value = 0U; + + if (isdigit(*str)) { + value += *(str++) - '0'; + ++num_digits; + } + + if (isdigit(*str)) { + value *= 10U; + value += *(str++) - '0'; + ++num_digits; + } + + if (isdigit(*str)) { + value *= 10U; + value += *(str++) - '0'; + ++num_digits; + } + + if (isdigit(*str)) { + value *= 10U; + value += *(str++) - '0'; + ++num_digits; + } + + if (next) *next = str; + if (out_num_digits) *out_num_digits = num_digits; + + return value; +} +static NSUInteger read_segment_2digits(const unsigned char *str, const unsigned char **next) { + NSUInteger value = 0U; + + if (isdigit(*str)) + value += *str - '0'; + + if (isdigit(*++str)) { + value *= 10U; + value += *(str++) - '0'; + } + + if (next) *next = str; + + return value; +} + +//strtod doesn't support ',' as a separator. This does. +static double read_double(const unsigned char *str, const unsigned char **next) { + double value = 0.0; + + if (str) { + NSUInteger int_value = 0; + + while(isdigit(*str)) { + int_value *= 10U; + int_value += (*(str++) - '0'); + } + value = int_value; + + if (((*str == ',') || (*str == '.'))) { + ++str; + + register double multiplier, multiplier_multiplier; + multiplier = multiplier_multiplier = 0.1; + + while(isdigit(*str)) { + value += (*(str++) - '0') * multiplier; + multiplier *= multiplier_multiplier; + } + } + } + + if (next) *next = str; + + return value; +} + +static BOOL is_leap_year(NSUInteger year) { + return \ + ((year % 4U) == 0U) + && (((year % 100U) != 0U) + || ((year % 400U) == 0U)); +} diff --git a/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/LICENSE b/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/LICENSE new file mode 100644 index 0000000..37ec93a --- /dev/null +++ b/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/LICENSE @@ -0,0 +1,191 @@ +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: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +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 +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/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/README.md b/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/README.md new file mode 100644 index 0000000..c08cf6d --- /dev/null +++ b/Unit-2-Journal/Pods/ISO8601DateFormatterValueTransformer/README.md @@ -0,0 +1,51 @@ +ISO8601DateFormatterValueTransformer +==================================== + +A small Objective-C library that integrates Peter Hosey's [ISO8601DateFormatter](https://github.com/boredzo/iso-8601-date-formatter) +with [RKValueTransformers](https://github.com/RestKit/RKValueTransformers). + +The implementation is done by adding `RKValueTransforming` conformance to the `ISO8601DateFormatter` via a category. + +## Examples + +### Usage + +Basic usage is identical to all other `RKValueTransforming` classes. + +```objc +#import "ISO8601DateValueTransformer.h" + +RKISO8601DateFormatter *dateFormatter = [RKISO8601DateFormatter defaultISO8601DateFormatter]; + +// Transforming NSDate -> String +NSString *dateString = nil; +NSError *error = nil; +BOOL success = [dateFormatter transformValue:[NSDate date] toValue:&dateString ofClass:[NSDate class] error:&error]; + +// Transforming NSString -> NSDate +NSDate *date = nil; +success = [dateFormatter transformValue:@"2013-09-12T07:24:56-04:00" toValue:&dateString ofClass:[NSDate class] error:&error]; +``` + +### Configuration as Default Date Transformer + +Adding the date formatter to the default value transformer at position 0 ensures that it is used ahead of all other `NSString` <-> `NSDate` value transformers. + +```objc +#import "ISO8601DateValueTransformer.h" + +RKISO8601DateFormatter *dateFormatter = [RKISO8601DateFormatter defaultISO8601DateFormatter]; +[[RKValueTransformer defaultValueTransformer] insertValueTransformer:dateFormatter atIndex:0]; +``` + +## Credits + +Blake Watters + +- http://github.com/blakewatters +- http://twitter.com/blakewatters +- blakewatters@gmail.com + +## License + +ISO8601DateFormatterValueTransformer is available under the Apache 2 License. See the LICENSE file for more info. diff --git a/Unit-2-Journal/Pods/Parse/LICENSE b/Unit-2-Journal/Pods/Parse/LICENSE new file mode 100644 index 0000000..d98b0e0 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/LICENSE @@ -0,0 +1,30 @@ +BSD License + +For Parse iOS/OSX SDK software + +Copyright (c) 2015-present, Parse, LLC. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Parse nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.h new file mode 100644 index 0000000..cff7a3e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.h @@ -0,0 +1,52 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFACL; + +NS_ASSUME_NONNULL_BEGIN + +@interface PFDefaultACLController : NSObject + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +// TODO: (nlutsenko, richardross) Make it not terrible aka don't have singletons ++ (instancetype)defaultController; ++ (void)clearDefaultController; + +///-------------------------------------- +/// @name Default ACL +///-------------------------------------- + +/*! + Get the default ACL managed by this controller. + + @return A task that returns the ACL encapsulated by this controller. + */ +- (BFTask *)getDefaultACLAsync; + +/*! + Set the new default default ACL to be encapsulated in this controller. + + @param acl The new ACL. Will be copied. + @param accessForCurrentUser Whether or not we should add special access for the current user on this ACL. + + @return A task that returns the new (copied) ACL now encapsulated in this controller. + */ +- (BFTask *)setDefaultACLAsync:(PFACL *)acl withCurrentUserAccess:(BOOL)accessForCurrentUser; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.m new file mode 100644 index 0000000..82bd638 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.m @@ -0,0 +1,99 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFDefaultACLController.h" + +#import + +#import "PFACLPrivate.h" +#import "PFAsyncTaskQueue.h" +#import "PFCoreManager.h" +#import "PFCurrentUserController.h" +#import "Parse_Private.h" + +@implementation PFDefaultACLController { + PFAsyncTaskQueue *_taskQueue; + + PFACL *_defaultACL; + BOOL _useCurrentUser; + + PFUser *_lastCurrentUser; + PFACL *_defaultACLWithCurrentUser; +} + +static PFDefaultACLController *defaultController_; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + ++ (instancetype)defaultController { + if (!defaultController_) { + defaultController_ = [[self alloc] init]; + } + return defaultController_; +} + ++ (void)clearDefaultController { + defaultController_ = nil; +} + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _taskQueue = [[PFAsyncTaskQueue alloc] init]; + + return self; +} + +///-------------------------------------- +#pragma mark - ACL +///-------------------------------------- + +- (BFTask PF_GENERIC(PFACL *)*)getDefaultACLAsync { + return [_taskQueue enqueue:^id(BFTask *task) { + if (!_defaultACL || !_useCurrentUser) { + return _defaultACL; + } + + PFCurrentUserController *currentUserController = [Parse _currentManager].coreManager.currentUserController; + return [[currentUserController getCurrentObjectAsync] continueWithBlock:^id(BFTask *task) { + PFUser *currentUser = task.result; + if (!currentUser) { + return _defaultACL; + } + + if (currentUser != _lastCurrentUser) { + _defaultACLWithCurrentUser = [_defaultACL createUnsharedCopy]; + [_defaultACLWithCurrentUser setShared:YES]; + [_defaultACLWithCurrentUser setReadAccess:YES forUser:currentUser]; + [_defaultACLWithCurrentUser setWriteAccess:YES forUser:currentUser]; + _lastCurrentUser = currentUser; + } + return _defaultACLWithCurrentUser; + }]; + }]; +} + +- (BFTask PF_GENERIC(PFACL *)*)setDefaultACLAsync:(PFACL *)acl withCurrentUserAccess:(BOOL)accessForCurrentUser { + return [_taskQueue enqueue:^id(BFTask *task) { + _defaultACLWithCurrentUser = nil; + _lastCurrentUser = nil; + + _defaultACL = [acl createUnsharedCopy]; + [_defaultACL setShared:YES]; + + _useCurrentUser = accessForCurrentUser; + + return _defaultACL; + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/PFACLPrivate.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/PFACLPrivate.h new file mode 100644 index 0000000..6a641d6 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/PFACLPrivate.h @@ -0,0 +1,42 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFACL.h" + +@class PFUser; + +@interface PFACL (Private) + +// Internal commands + +/* + Gets the encoded format for an ACL. + */ +- (NSDictionary *)encodeIntoDictionary; + +/* + Creates a new ACL object from an existing dictionary. + */ +- (instancetype)initWithDictionary:(NSDictionary *)dictionary; + +/*! + Creates an ACL from its encoded format. + */ ++ (instancetype)ACLWithDictionary:(NSDictionary *)dictionary; + +- (void)setShared:(BOOL)shared; +- (BOOL)isShared; +- (instancetype)createUnsharedCopy; +- (BOOL)hasUnresolvedUser; + ++ (instancetype)defaultACL; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFACLState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFACLState.h new file mode 100644 index 0000000..90e06af --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFACLState.h @@ -0,0 +1,42 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFBaseState.h" + +NS_ASSUME_NONNULL_BEGIN + +@class PFMutableACLState; + +typedef void (^PFACLStateMutationBlock)(PFMutableACLState *); + +@interface PFACLState : PFBaseState + +@property (nonatomic, copy, readonly) NSDictionary *permissions; +@property (nonatomic, assign, readonly, getter=isShared) BOOL shared; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithState:(PFACLState *)otherState NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithState:(PFACLState *)otherState mutatingBlock:(PFACLStateMutationBlock)mutatingBlock; + ++ (instancetype)stateWithState:(PFACLState *)otherState; ++ (instancetype)stateWithState:(PFACLState *)otherState mutatingBlock:(PFACLStateMutationBlock)mutatingBlock; + +///-------------------------------------- +/// @name Mutating +///-------------------------------------- + +- (instancetype)copyByMutatingWithBlock:(PFACLStateMutationBlock)mutatingBlock NS_RETURNS_RETAINED; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFACLState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFACLState.m new file mode 100644 index 0000000..a80649e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFACLState.m @@ -0,0 +1,87 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFACLState_Private.h" + +#import "PFMutableACLState.h" + +@implementation PFACLState + +///-------------------------------------- +#pragma mark - PFBaseStateSubclass +///-------------------------------------- + ++ (NSDictionary *)propertyAttributes { + return @{ + @"permissions": [PFPropertyAttributes attributes], + @"shared": [PFPropertyAttributes attributes], + }; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _permissions = [NSDictionary dictionary]; + _shared = NO; + + return self; +} + +- (instancetype)initWithState:(PFACLState *)otherState { + return [super initWithState:otherState]; +} + +- (instancetype)initWithState:(PFACLState *)otherState mutatingBlock:(PFACLStateMutationBlock)mutatingBlock { + self = [self initWithState:otherState]; + if (!self) return nil; + + // Make permissions mutable for the duration of the block. + _permissions = [_permissions mutableCopy]; + + mutatingBlock((PFMutableACLState *)self); + + _permissions = [_permissions copy]; + + return self; +} + ++ (instancetype)stateWithState:(PFACLState *)otherState { + return [super stateWithState:otherState]; +} + ++ (instancetype)stateWithState:(PFACLState *)otherState mutatingBlock:(PFACLStateMutationBlock)mutatingBlock { + return [[self alloc] initWithState:otherState mutatingBlock:mutatingBlock]; +} + +///-------------------------------------- +#pragma mark - Copying +///-------------------------------------- + +- (instancetype)copyWithZone:(NSZone *)zone { + return [[PFACLState allocWithZone:zone] initWithState:self]; +} + +- (instancetype)mutableCopyWithZone:(NSZone *)zone { + return [[PFMutableACLState allocWithZone:zone] initWithState:self]; +} + +///-------------------------------------- +#pragma mark - Mutating +///-------------------------------------- + +- (instancetype)copyByMutatingWithBlock:(PFACLStateMutationBlock)mutationsBlock { + return [[PFACLState alloc] initWithState:self mutatingBlock:mutationsBlock]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFACLState_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFACLState_Private.h new file mode 100644 index 0000000..a3ed153 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFACLState_Private.h @@ -0,0 +1,21 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFACLState.h" + +@interface PFACLState () { +@protected + NSDictionary *_permissions; + BOOL _shared; +} + +@property (nonatomic, copy, readwrite) NSDictionary *permissions; +@property (nonatomic, assign, readwrite, getter=isShared) BOOL shared; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFMutableACLState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFMutableACLState.h new file mode 100644 index 0000000..d2bda0c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFMutableACLState.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFACLState.h" + +@interface PFMutableACLState : PFACLState + +@property (nonatomic, copy, readwrite) NSMutableDictionary *permissions; +@property (nonatomic, assign, readwrite, getter=isShared) BOOL shared; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFMutableACLState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFMutableACLState.m new file mode 100644 index 0000000..5361b8d --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ACL/State/PFMutableACLState.m @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFMutableACLState.h" + +#import "PFACLState_Private.h" + +@implementation PFMutableACLState + +@dynamic permissions; +@dynamic shared; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _permissions = [NSMutableDictionary dictionary]; + + return self; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Controller/PFAnalyticsController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Controller/PFAnalyticsController.h new file mode 100644 index 0000000..0681ec4 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Controller/PFAnalyticsController.h @@ -0,0 +1,61 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFDataProvider.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); + +@interface PFAnalyticsController : NSObject + +@property (nonatomic, weak, readonly) id dataSource; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; + ++ (instancetype)controllerWithDataSource:(id)dataSource; + +///-------------------------------------- +/// @name Track Event +///-------------------------------------- + +/*! + @abstract Tracks this application being launched. If this happened as the result of the + user opening a push notification, this method sends along information to + correlate this open with that push. + + @param payload The Remote Notification payload. + @param sessionToken Current user session token. + + @returns `BFTask` with result set to `@YES`. + */ +- (BFTask *)trackAppOpenedEventAsyncWithRemoteNotificationPayload:(NSDictionary *)payload + sessionToken:(NSString *)sessionToken; + +/*! + @abstract Tracks the occurrence of a custom event with additional dimensions. + + @param name Event name. + @param dimensions `NSDictionary` of information by which to segment this event. + @param sessionToken Current user session token. + + @returns `BFTask` with result set to `@YES`. + */ +- (BFTask *)trackEventAsyncWithName:(NSString *)name + dimensions:(NSDictionary *)dimensions + sessionToken:(NSString *)sessionToken; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Controller/PFAnalyticsController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Controller/PFAnalyticsController.m new file mode 100644 index 0000000..b77eba6 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Controller/PFAnalyticsController.m @@ -0,0 +1,100 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFAnalyticsController.h" + +#import "BFTask+Private.h" +#import "PFAnalyticsUtilities.h" +#import "PFAssert.h" +#import "PFEventuallyQueue.h" +#import "PFRESTAnalyticsCommand.h" + +@interface PFAnalyticsController () + +@property (nonatomic, weak, readonly) PFEventuallyQueue *eventuallyQueue; + +@end + +@implementation PFAnalyticsController + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithDataSource:(id)dataSource { + self = [super init]; + if (!self) return nil; + + _dataSource = dataSource; + + return self; +} + ++ (instancetype)controllerWithDataSource:(id)dataSource { + return [[self alloc] initWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - Track Event +///-------------------------------------- + +- (BFTask *)trackAppOpenedEventAsyncWithRemoteNotificationPayload:(NSDictionary *)payload + sessionToken:(NSString *)sessionToken { + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + // If the Remote Notification payload had a message sent along with it, make + // sure to send that along so the server can identify "app opened from push" + // instead. + id alert = payload[@"aps"][@"alert"]; + NSString *pushDigest = (alert ? [PFAnalyticsUtilities md5DigestFromPushPayload:alert] : nil); + + PFRESTCommand *command = [PFRESTAnalyticsCommand trackAppOpenedEventCommandWithPushHash:pushDigest + sessionToken:sessionToken]; + return [self.eventuallyQueue enqueueCommandInBackground:command]; + }] continueWithSuccessResult:@YES]; +} + +- (BFTask *)trackEventAsyncWithName:(NSString *)name + dimensions:(NSDictionary *)dimensions + sessionToken:(NSString *)sessionToken { + PFParameterAssert([[name stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length], + @"A name for the custom event must be provided."); + + if (dimensions) { + [dimensions enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + PFParameterAssert([key isKindOfClass:[NSString class]] && [obj isKindOfClass:[NSString class]], + @"trackEvent dimensions expect keys and values of type NSString."); + }]; + } + + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + NSDictionary *encodedDimensions = [[PFNoObjectEncoder objectEncoder] encodeObject:dimensions]; + PFRESTCommand *command = [PFRESTAnalyticsCommand trackEventCommandWithEventName:name + dimensions:encodedDimensions + sessionToken:sessionToken]; + return [self.eventuallyQueue enqueueCommandInBackground:command]; + }] continueWithSuccessResult:@YES]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (PFEventuallyQueue *)eventuallyQueue { + return self.dataSource.eventuallyQueue; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/PFAnalytics_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/PFAnalytics_Private.h new file mode 100644 index 0000000..d001798 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/PFAnalytics_Private.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +/*! + Predefined events - AppOpened, CrashReport + Coming soon - Log, ... + */ +extern NSString *const PFAnalyticsEventAppOpened; +extern NSString *const PFAnalyticsEventCrashReport; diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.h new file mode 100644 index 0000000..69f581f --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.h @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@interface PFAnalyticsUtilities : NSObject + +/*! + Serializes and hexdigests an alert payload into a "push_hash" identifier + for use in Analytics. + Limitedly flexible - the payload is the value under the "alert" key in the + "aps" hash of a remote notification, so we can reasonably assume that the + complexity of its structure is limited to that accepted by Apple (in its + "The Notification Payload" docs) + + @param payload `alert` value from a push notification. + + @returns md5 identifier. + */ ++ (NSString *)md5DigestFromPushPayload:(id)payload; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.m new file mode 100644 index 0000000..9107d18 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.m @@ -0,0 +1,38 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFAnalyticsUtilities.h" + +#import "PFHash.h" + +@implementation PFAnalyticsUtilities + ++ (NSString *)md5DigestFromPushPayload:(id)payload { + if (!payload || payload == [NSNull null]) { + payload = @""; + } else if ([payload isKindOfClass:[NSDictionary class]]) { + NSDictionary *dict = payload; + NSArray *keys = [[dict allKeys] sortedArrayUsingSelector:@selector(compare:)]; + NSMutableArray *components = [NSMutableArray arrayWithCapacity:[dict count] * 2]; + [keys enumerateObjectsUsingBlock:^(id key, NSUInteger idx, BOOL *stop) { + [components addObject:key]; + + // alert[@"loc-args"] can be an NSArray + id value = [dict objectForKey:key]; + if ([value isKindOfClass:[NSArray class]]) { + value = [value componentsJoinedByString:@""]; + } + [components addObject:value]; + }]; + payload = [components componentsJoinedByString:@""]; + } + return PFMD5HashFromString([payload description]); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/BFTask+Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/BFTask+Private.h new file mode 100644 index 0000000..0d01c82 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/BFTask+Private.h @@ -0,0 +1,71 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import +#import + +#import "PFInternalUtils.h" + +@interface BFExecutor (Background) + ++ (instancetype)defaultPriorityBackgroundExecutor; + +@end + +@interface BFTask (Private) + +- (instancetype)continueAsyncWithBlock:(BFContinuationBlock)block; +- (instancetype)continueAsyncWithSuccessBlock:(BFContinuationBlock)block; + +- (instancetype)continueWithResult:(id)result; +- (instancetype)continueWithSuccessResult:(id)result; + +- (instancetype)continueWithMainThreadResultBlock:(PFIdResultBlock)resultBlock + executeIfCancelled:(BOOL)executeIfCancelled; +- (instancetype)continueWithMainThreadBooleanResultBlock:(PFBooleanResultBlock)resultBlock + executeIfCancelled:(BOOL)executeIfCancelled; + +/*! + Adds a continuation to the task that will run the given block on the main + thread sometime after this task has finished. If the task was cancelled, + the block will never be called. If the task had an exception, the exception + will be throw on the main thread instead of running the block. Otherwise, + the block will be given the result and error of this task. + @returns A new task that will be finished once the block has run. + */ +- (BFTask *)thenCallBackOnMainThreadAsync:(void(^)(id result, NSError *error))block; + +/*! + Identical to thenCallBackOnMainThreadAsync:, except that the result of a successful + task will be converted to a BOOL using the boolValue method, and that will + be passed to the block instead of the original result. + */ +- (BFTask *)thenCallBackOnMainThreadWithBoolValueAsync:(void(^)(BOOL result, NSError *error))block; + +/*! + Same as `waitForResult:error withMainThreadWarning:YES` + */ +- (id)waitForResult:(NSError **)error; + +/*! + Waits until this operation is completed, then returns its value. + This method is inefficient and consumes a thread resource while its running. + + @param error If an error occurs, upon return contains an `NSError` object that describes the problem. + @param warningEnabled `BOOL` value that + + @return Returns a `self.result` if task completed. `nil` - if cancelled. + */ +- (id)waitForResult:(NSError **)error withMainThreadWarning:(BOOL)warningEnabled; + +@end + +extern void forceLoadCategory_BFTask_Private(); diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/BFTask+Private.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/BFTask+Private.m new file mode 100644 index 0000000..5ed4959 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/BFTask+Private.m @@ -0,0 +1,130 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "BFTask+Private.h" + +#import +#import + +#import "PFLogging.h" + +@implementation BFExecutor (Background) + ++ (instancetype)defaultPriorityBackgroundExecutor { + static BFExecutor *executor; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + executor = [BFExecutor executorWithDispatchQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)]; + }); + return executor; +} + +@end + +@implementation BFTask (Private) + +- (instancetype)continueAsyncWithBlock:(BFContinuationBlock)block { + return [self continueWithExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:block]; +} + +- (instancetype)continueAsyncWithSuccessBlock:(BFContinuationBlock)block { + return [self continueWithExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withSuccessBlock:block]; +} + +- (instancetype)continueWithResult:(id)result { + return [self continueWithBlock:^id(BFTask *task) { + return result; + }]; +} + +- (instancetype)continueWithSuccessResult:(id)result { + return [self continueWithSuccessBlock:^id(BFTask *task) { + return result; + }]; +} + +- (instancetype)continueWithMainThreadResultBlock:(PFIdResultBlock)resultBlock + executeIfCancelled:(BOOL)executeIfCancelled { + if (!resultBlock) { + return self; + } + return [self continueWithExecutor:[BFExecutor mainThreadExecutor] + withBlock:^id(BFTask *task) { + BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; + + @try { + if (self.exception) { + //TODO: (nlutsenko) Add more context, by passing a `_cmd` from the caller method + PFLogException(self.exception); + @throw self.exception; + } + + if (!self.cancelled || executeIfCancelled) { + resultBlock(self.result, self.error); + } + } @finally { + tcs.result = nil; + } + + return tcs.task; + }]; +} + +- (instancetype)continueWithMainThreadBooleanResultBlock:(PFBooleanResultBlock)resultBlock + executeIfCancelled:(BOOL)executeIfCancelled { + return [self continueWithMainThreadResultBlock:^(id object, NSError *error) { + resultBlock([object boolValue], error); + } executeIfCancelled:executeIfCancelled]; +} + +- (BFTask *)thenCallBackOnMainThreadAsync:(void(^)(id result, NSError *error))block { + return [self continueWithMainThreadResultBlock:block executeIfCancelled:NO]; +} + +- (BFTask *)thenCallBackOnMainThreadWithBoolValueAsync:(void(^)(BOOL result, NSError *error))block { + if (!block) { + return self; + } + return [self thenCallBackOnMainThreadAsync:^(id blockResult, NSError *blockError) { + block([blockResult boolValue], blockError); + }]; +} + +- (id)waitForResult:(NSError **)error { + return [self waitForResult:error withMainThreadWarning:YES]; +} + +- (id)waitForResult:(NSError **)error withMainThreadWarning:(BOOL)warningEnabled { + if (warningEnabled) { + [self waitUntilFinished]; + } else { + dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); + [self continueWithBlock:^id(BFTask *task) { + dispatch_semaphore_signal(semaphore); + return nil; + }]; + dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); + } + if (self.cancelled) { + return nil; + } else if (self.exception) { + @throw self.exception; + } + if (self.error && error) { + *error = self.error; + } + return self.result; +} + +@end + +void forceLoadCategory_BFTask_Private() { + NSString *string = nil; + [string description]; +} diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/CloudCode/PFCloudCodeController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/CloudCode/PFCloudCodeController.h new file mode 100644 index 0000000..8532572 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/CloudCode/PFCloudCodeController.h @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@protocol PFCommandRunning; + +@interface PFCloudCodeController : NSObject + +@property (nonatomic, strong, readonly) id commandRunner; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithCommandRunner:(id)commandRunner NS_DESIGNATED_INITIALIZER; + ++ (instancetype)controllerWithCommandRunner:(id)commandRunner; + +///-------------------------------------- +/// @name Cloud Functions +///-------------------------------------- + +/*! + Calls a Cloud Code function and returns a result of it's execution. + + @param functionName Function name to call. + @param parameters Parameters to pass. (can't be nil). + @param sessionToken Session token to use. + + @returns `BFTask` with a result set to a result of Cloud Function. + */ +- (BFTask *)callCloudCodeFunctionAsync:(NSString *)functionName + withParameters:(NSDictionary *)parameters + sessionToken:(NSString *)sessionToken; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/CloudCode/PFCloudCodeController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/CloudCode/PFCloudCodeController.m new file mode 100644 index 0000000..212e47a --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/CloudCode/PFCloudCodeController.m @@ -0,0 +1,66 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFCloudCodeController.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFCommandRunning.h" +#import "PFDecoder.h" +#import "PFEncoder.h" +#import "PFInternalUtils.h" +#import "PFRESTCloudCommand.h" + +@implementation PFCloudCodeController + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithCommandRunner:(id)commandRunner { + self = [super init]; + if (!self) return nil; + + _commandRunner = commandRunner; + + return self; +} + ++ (instancetype)controllerWithCommandRunner:(id)commandRunner { + return [[self alloc] initWithCommandRunner:commandRunner]; +} + +///-------------------------------------- +#pragma mark - Cloud Functions +///-------------------------------------- + +- (BFTask *)callCloudCodeFunctionAsync:(NSString *)functionName + withParameters:(NSDictionary *)parameters + sessionToken:(NSString *)sessionToken { + @weakify(self); + return [[[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + NSDictionary *encodedParameters = [[PFNoObjectEncoder objectEncoder] encodeObject:parameters]; + PFRESTCloudCommand *command = [PFRESTCloudCommand commandForFunction:functionName + withParameters:encodedParameters + sessionToken:sessionToken]; + return [self.commandRunner runCommandAsync:command withOptions:PFCommandRunningOptionRetryIfFailed]; + }] continueWithSuccessBlock:^id(BFTask *task) { + return ((PFCommandResult *)(task.result)).result[@"result"]; + }] continueWithSuccessBlock:^id(BFTask *task) { + return [[PFDecoder objectDecoder] decodeObject:task.result]; + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunning.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunning.h new file mode 100644 index 0000000..c07f754 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunning.h @@ -0,0 +1,96 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFDataProvider.h" + +@class BFCancellationToken; +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFCommandResult; +@class PFRESTCommand; +@protocol PFNetworkCommand; + +typedef NS_OPTIONS(NSUInteger, PFCommandRunningOptions) { + PFCommandRunningOptionRetryIfFailed = 1 << 0, +}; + +extern NSTimeInterval const PFCommandRunningDefaultRetryDelay; + +NS_ASSUME_NONNULL_BEGIN + +@protocol PFCommandRunning + +@property (nonatomic, weak, readonly) id dataSource; + +@property (nonatomic, copy, readonly) NSString *applicationId; +@property (nonatomic, copy, readonly) NSString *clientKey; + +@property (nonatomic, assign) NSTimeInterval initialRetryDelay; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)initWithDataSource:(id)dataSource + applicationId:(NSString *)applicationId + clientKey:(NSString *)clientKey; ++ (instancetype)commandRunnerWithDataSource:(id)dataSource + applicationId:(NSString *)applicationId + clientKey:(NSString *)clientKey; + +///-------------------------------------- +/// @name Data Commands +///-------------------------------------- + +/*! + Run command. + + @param command Command to run. + @param options Options to use to run command. + + @returns `BFTask` with result set to `PFCommandResult`. + */ +- (BFTask *)runCommandAsync:(PFRESTCommand *)command + withOptions:(PFCommandRunningOptions)options; + +/*! + Run command. + + @param command Command to run. + @param options Options to use to run command. + @param cancellationToken Operation to use as a cancellation token. + + @returns `BFTask` with result set to `PFCommandResult`. + */ +- (BFTask *)runCommandAsync:(PFRESTCommand *)command + withOptions:(PFCommandRunningOptions)options + cancellationToken:(nullable BFCancellationToken *)cancellationToken; + +///-------------------------------------- +/// @name File Commands +///-------------------------------------- + +- (BFTask *)runFileUploadCommandAsync:(PFRESTCommand *)command + withContentType:(NSString *)contentType + contentSourceFilePath:(NSString *)sourceFilePath + options:(PFCommandRunningOptions)options + cancellationToken:(nullable BFCancellationToken *)cancellationToken + progressBlock:(nullable PFProgressBlock)progressBlock; + +- (BFTask *)runFileDownloadCommandAsyncWithFileURL:(NSURL *)url + targetFilePath:(NSString *)filePath + cancellationToken:(nullable BFCancellationToken *)cancellationToken + progressBlock:(nullable PFProgressBlock)progressBlock; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunning.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunning.m new file mode 100644 index 0000000..6b0c49f --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunning.m @@ -0,0 +1,12 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFCommandRunning.h" + +NSTimeInterval const PFCommandRunningDefaultRetryDelay = 1.0; diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h new file mode 100644 index 0000000..7531fde --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h @@ -0,0 +1,35 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +///-------------------------------------- +/// @name Running +///-------------------------------------- + +extern uint8_t const PFCommandRunningDefaultMaxAttemptsCount; + +///-------------------------------------- +/// @name Headers +///-------------------------------------- + +extern NSString *const PFCommandHeaderNameApplicationId; +extern NSString *const PFCommandHeaderNameClientKey; +extern NSString *const PFCommandHeaderNameClientVersion; +extern NSString *const PFCommandHeaderNameInstallationId; +extern NSString *const PFCommandHeaderNameAppBuildVersion; +extern NSString *const PFCommandHeaderNameAppDisplayVersion; +extern NSString *const PFCommandHeaderNameOSVersion; +extern NSString *const PFCommandHeaderNameSessionToken; + +///-------------------------------------- +/// @name HTTP Method Override +///-------------------------------------- + +extern NSString *const PFCommandParameterNameMethodOverride; diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.m new file mode 100644 index 0000000..3ea747f --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.m @@ -0,0 +1,23 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFCommandRunningConstants.h" + +uint8_t const PFCommandRunningDefaultMaxAttemptsCount = 5; + +NSString *const PFCommandHeaderNameApplicationId = @"X-Parse-Application-Id"; +NSString *const PFCommandHeaderNameClientKey = @"X-Parse-Client-Key"; +NSString *const PFCommandHeaderNameClientVersion = @"X-Parse-Client-Version"; +NSString *const PFCommandHeaderNameInstallationId = @"X-Parse-Installation-Id"; +NSString *const PFCommandHeaderNameAppBuildVersion = @"X-Parse-App-Build-Version"; +NSString *const PFCommandHeaderNameAppDisplayVersion = @"X-Parse-App-Display-Version"; +NSString *const PFCommandHeaderNameOSVersion = @"X-Parse-OS-Version"; +NSString *const PFCommandHeaderNameSessionToken = @"X-Parse-Session-Token"; + +NSString *const PFCommandParameterNameMethodOverride = @"_method"; diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.h new file mode 100644 index 0000000..6583f5b --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.h @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFDataProvider.h" + +@class PFRESTCommand; + +@interface PFCommandURLRequestConstructor : NSObject + +@property (nonatomic, weak, readonly) id dataSource; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; ++ (instancetype)constructorWithDataSource:(id)dataSource; + +///-------------------------------------- +/// @name Data +///-------------------------------------- + +- (NSURLRequest *)dataURLRequestForCommand:(PFRESTCommand *)command; + +///-------------------------------------- +/// @name File Upload +///-------------------------------------- + +- (NSURLRequest *)fileUploadURLRequestForCommand:(PFRESTCommand *)command + withContentType:(NSString *)contentType + contentSourceFilePath:(NSString *)contentFilePath; + +///-------------------------------------- +/// @name Headers +///-------------------------------------- + ++ (NSDictionary *)defaultURLRequestHeadersForApplicationId:(NSString *)applicationId + clientKey:(NSString *)clientKey + bundle:(NSBundle *)bundle; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.m new file mode 100644 index 0000000..b489704 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.m @@ -0,0 +1,149 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFCommandURLRequestConstructor.h" + +#import "PFAssert.h" +#import "PFCommandRunningConstants.h" +#import "PFDevice.h" +#import "PFHTTPRequest.h" +#import "PFHTTPURLRequestConstructor.h" +#import "PFInstallationIdentifierStore.h" +#import "PFInternalUtils.h" +#import "PFRESTCommand.h" +#import "PFURLConstructor.h" +#import "Parse_Private.h" + +@implementation PFCommandURLRequestConstructor + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithDataSource:(id)dataSource { + self = [super init]; + if (!self) return nil; + + _dataSource = dataSource; + + return self; +} + ++ (instancetype)constructorWithDataSource:(id)dataSource { + return [[self alloc] initWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - Data +///-------------------------------------- + +- (NSURLRequest *)dataURLRequestForCommand:(PFRESTCommand *)command { + NSURL *url = [PFURLConstructor URLFromAbsoluteString:[PFInternalUtils parseServerURLString] + path:[NSString stringWithFormat:@"/1/%@", command.httpPath] + query:nil]; + NSDictionary *headers = [self _URLRequestHeadersForCommand:command]; + + NSString *requestMethod = command.httpMethod; + NSDictionary *requestParameters = nil; + if (command.parameters) { + NSDictionary *parameters = nil; + + // The request URI may be too long to include parameters in the URI. + // To avoid this problem we send the parameters in a POST request json-encoded body + // and add a custom parameter that overrides the method in a request. + if ([requestMethod isEqualToString:PFHTTPRequestMethodGET] || + [requestMethod isEqualToString:PFHTTPRequestMethodHEAD] || + [requestMethod isEqualToString:PFHTTPRequestMethodDELETE]) { + NSMutableDictionary *mutableParameters = [command.parameters mutableCopy]; + mutableParameters[PFCommandParameterNameMethodOverride] = command.httpMethod; + + requestMethod = PFHTTPRequestMethodPOST; + parameters = [mutableParameters copy]; + } else { + parameters = command.parameters; + } + requestParameters = [[PFPointerObjectEncoder objectEncoder] encodeObject:parameters]; + } + + return [PFHTTPURLRequestConstructor urlRequestWithURL:url + httpMethod:requestMethod + httpHeaders:headers + parameters:requestParameters]; +} + +///-------------------------------------- +#pragma mark - File +///-------------------------------------- + +- (NSURLRequest *)fileUploadURLRequestForCommand:(PFRESTCommand *)command + withContentType:(NSString *)contentType + contentSourceFilePath:(NSString *)contentFilePath { + NSMutableURLRequest *request = [[self dataURLRequestForCommand:command] mutableCopy]; + + if (contentType) { + [request setValue:contentType forHTTPHeaderField:PFHTTPRequestHeaderNameContentType]; + } + + //TODO (nlutsenko): Check for error here. + NSNumber *fileSize = [PFInternalUtils fileSizeOfFileAtPath:contentFilePath error:nil]; + [request setValue:[fileSize stringValue] forHTTPHeaderField:PFHTTPRequestHeaderNameContentLength]; + + return request; +} + +///-------------------------------------- +#pragma mark - Headers +///-------------------------------------- + ++ (NSDictionary *)defaultURLRequestHeadersForApplicationId:(NSString *)applicationId + clientKey:(NSString *)clientKey + bundle:(NSBundle *)bundle { +#if TARGET_OS_IPHONE + NSString *versionPrefix = @"i"; +#else + NSString *versionPrefix = @"osx"; +#endif + + NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; + + mutableHeaders[PFCommandHeaderNameApplicationId] = applicationId; + mutableHeaders[PFCommandHeaderNameClientKey] = clientKey; + + mutableHeaders[PFCommandHeaderNameClientVersion] = [versionPrefix stringByAppendingString:PARSE_VERSION]; + mutableHeaders[PFCommandHeaderNameOSVersion] = [PFDevice currentDevice].operatingSystemFullVersion; + + // Bundle Version and Display Version can be null, when running tests + NSString *bundleVersion = [bundle objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey]; + if (bundleVersion) { + mutableHeaders[PFCommandHeaderNameAppBuildVersion] = bundleVersion; + } + NSString *displayVersion = [bundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; + if (displayVersion) { + mutableHeaders[PFCommandHeaderNameAppDisplayVersion] = displayVersion; + } + + return [mutableHeaders copy]; +} + +- (NSDictionary *)_URLRequestHeadersForCommand:(PFRESTCommand *)command { + NSMutableDictionary *headers = [NSMutableDictionary dictionary]; + [headers addEntriesFromDictionary:command.additionalRequestHeaders]; + PFInstallationIdentifierStore *installationIdentifierStore = self.dataSource.installationIdentifierStore; + headers[PFCommandHeaderNameInstallationId] = installationIdentifierStore.installationIdentifier; + if (command.sessionToken) { + headers[PFCommandHeaderNameSessionToken] = command.sessionToken; + } + return [headers copy]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.h new file mode 100644 index 0000000..7f75dfd --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFCommandRunning.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFURLSessionCommandRunner : NSObject + +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.m new file mode 100644 index 0000000..d504980 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.m @@ -0,0 +1,286 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFURLSessionCommandRunner.h" +#import "PFURLSessionCommandRunner_Private.h" + +#import + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFCommandRunningConstants.h" +#import "PFCommandURLRequestConstructor.h" +#import "PFConstants.h" +#import "PFDevice.h" +#import "PFEncoder.h" +#import "PFHTTPRequest.h" +#import "PFHTTPURLRequestConstructor.h" +#import "PFInstallationIdentifierStore.h" +#import "PFInternalUtils.h" +#import "PFLogging.h" +#import "PFMacros.h" +#import "PFRESTCommand.h" +#import "PFURLConstructor.h" +#import "PFURLSession.h" + +@interface PFURLSessionCommandRunner () + +@property (nonatomic, strong) NSNotificationCenter *notificationCenter; + +@end + +@implementation PFURLSessionCommandRunner + +@synthesize applicationId = _applicationId; +@synthesize clientKey = _clientKey; +@synthesize initialRetryDelay = _initialRetryDelay; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithDataSource:(id)dataSource + applicationId:(NSString *)applicationId + clientKey:(NSString *)clientKey { + NSURLSessionConfiguration *configuration = [[self class] _urlSessionConfigurationForApplicationId:applicationId + clientKey:clientKey]; + PFURLSession *session = [PFURLSession sessionWithConfiguration:configuration delegate:self]; + PFCommandURLRequestConstructor *constructor = [PFCommandURLRequestConstructor constructorWithDataSource:dataSource]; + self = [self initWithDataSource:dataSource + session:session + requestConstructor:constructor + notificationCenter:[NSNotificationCenter defaultCenter]]; + if (!self) return nil; + + _applicationId = [applicationId copy]; + _clientKey = [clientKey copy]; + + return self; +} + +- (instancetype)initWithDataSource:(id)dataSource + session:(PFURLSession *)session + requestConstructor:(PFCommandURLRequestConstructor *)requestConstructor + notificationCenter:(NSNotificationCenter *)notificationCenter { + self = [super init]; + if (!self) return nil; + + _initialRetryDelay = PFCommandRunningDefaultRetryDelay; + + _requestConstructor = requestConstructor; + _session = session; + _notificationCenter = notificationCenter; + + return self; +} + ++ (instancetype)commandRunnerWithDataSource:(id)dataSource + applicationId:(NSString *)applicationId + clientKey:(NSString *)clientKey { + return [[self alloc] initWithDataSource:dataSource applicationId:applicationId clientKey:clientKey]; +} + +///-------------------------------------- +#pragma mark - Dealloc +///-------------------------------------- + +- (void)dealloc { + // This is required to call, since session will continue to be present in memory and running otherwise. + [_session invalidateAndCancel]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (id)dataSource { + return _requestConstructor.dataSource; +} + +///-------------------------------------- +#pragma mark - Data Commands +///-------------------------------------- + +- (BFTask PF_GENERIC(PFCommandResult *)*)runCommandAsync:(PFRESTCommand *)command withOptions:(PFCommandRunningOptions)options { + return [self runCommandAsync:command withOptions:options cancellationToken:nil]; +} + +- (BFTask PF_GENERIC(PFCommandResult *)*)runCommandAsync:(PFRESTCommand *)command + withOptions:(PFCommandRunningOptions)options + cancellationToken:(BFCancellationToken *)cancellationToken { + return [self _performCommandRunningBlock:^id { + [command resolveLocalIds]; + NSURLRequest *request = [self.requestConstructor dataURLRequestForCommand:command]; + return [_session performDataURLRequestAsync:request forCommand:command cancellationToken:cancellationToken]; + } withOptions:options cancellationToken:cancellationToken]; +} + +///-------------------------------------- +#pragma mark - File Commands +///-------------------------------------- + +- (BFTask PF_GENERIC(PFCommandResult *)*)runFileUploadCommandAsync:(PFRESTCommand *)command + withContentType:(NSString *)contentType + contentSourceFilePath:(NSString *)sourceFilePath + options:(PFCommandRunningOptions)options + cancellationToken:(nullable BFCancellationToken *)cancellationToken + progressBlock:(nullable PFProgressBlock)progressBlock { + @weakify(self); + return [self _performCommandRunningBlock:^id { + @strongify(self); + + [command resolveLocalIds]; + NSURLRequest *request = [self.requestConstructor fileUploadURLRequestForCommand:command + withContentType:contentType + contentSourceFilePath:sourceFilePath]; + return [_session performFileUploadURLRequestAsync:request + forCommand:command + withContentSourceFilePath:sourceFilePath + cancellationToken:cancellationToken + progressBlock:progressBlock]; + + } withOptions:options cancellationToken:cancellationToken]; +} + +- (BFTask PF_GENERIC(PFCommandResult *)*)runFileDownloadCommandAsyncWithFileURL:(NSURL *)url + targetFilePath:(NSString *)filePath + cancellationToken:(nullable BFCancellationToken *)cancellationToken + progressBlock:(nullable PFProgressBlock)progressBlock { + return [self _performCommandRunningBlock:^id { + NSURLRequest *request = [NSURLRequest requestWithURL:url]; + return [_session performFileDownloadURLRequestAsync:request + toFileAtPath:filePath + withCancellationToken:cancellationToken + progressBlock:progressBlock]; + } withOptions:PFCommandRunningOptionRetryIfFailed + cancellationToken:cancellationToken]; +} + +///-------------------------------------- +#pragma mark - Retrying +///-------------------------------------- + +- (BFTask *)_performCommandRunningBlock:(nonnull id (^)())block + withOptions:(PFCommandRunningOptions)options + cancellationToken:(BFCancellationToken *)cancellationToken { + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + if (!(options & PFCommandRunningOptionRetryIfFailed)) { + return block(); + } + + NSTimeInterval delay = self.initialRetryDelay; // Delay (secs) of next retry attempt + + // Set the initial delay to something between 1 and 2 seconds. We want it to be + // random so that clients that fail simultaneously don't retry on simultaneous + // intervals. + delay += self.initialRetryDelay * ((double)(arc4random() & 0x0FFFF) / (double)0x0FFFF); + return [self _performCommandRunningBlock:block + withCancellationToken:cancellationToken + delay:delay + forAttempts:PFCommandRunningDefaultMaxAttemptsCount]; +} + +- (BFTask *)_performCommandRunningBlock:(nonnull id (^)())block + withCancellationToken:(BFCancellationToken *)cancellationToken + delay:(NSTimeInterval)delay + forAttempts:(NSUInteger)attempts { + @weakify(self); + return [block() continueWithBlock:^id(BFTask *task) { + @strongify(self); + if (task.cancelled) { + return task; + } + + if ([[task.error userInfo][@"temporary"] boolValue] && attempts > 1) { + PFLogError(PFLoggingTagCommon, + @"Network connection failed. Making attempt %lu after sleeping for %f seconds.", + (unsigned long)(PFCommandRunningDefaultMaxAttemptsCount - attempts + 1), (double)delay); + + return [[BFTask taskWithDelay:(int)(delay * 1000)] continueWithBlock:^id(BFTask *task) { + return [self _performCommandRunningBlock:block + withCancellationToken:cancellationToken + delay:delay * 2.0 + forAttempts:attempts - 1]; + } cancellationToken:cancellationToken]; + } + return task; + } cancellationToken:cancellationToken]; +} + +///-------------------------------------- +#pragma mark - NSURLSessionConfiguration +///-------------------------------------- + ++ (NSURLSessionConfiguration *)_urlSessionConfigurationForApplicationId:(NSString *)applicationId + clientKey:(NSString *)clientKey { + NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; + + // No cookies, they are bad for you. + configuration.HTTPCookieAcceptPolicy = NSHTTPCookieAcceptPolicyNever; + configuration.HTTPShouldSetCookies = NO; + + // Completely disable caching of responses for security reasons. + configuration.URLCache = [[NSURLCache alloc] initWithMemoryCapacity:[NSURLCache sharedURLCache].memoryCapacity + diskCapacity:0 + diskPath:nil]; + + NSBundle *bundle = [NSBundle mainBundle]; + NSDictionary *headers = [PFCommandURLRequestConstructor defaultURLRequestHeadersForApplicationId:applicationId + clientKey:clientKey + bundle:bundle]; + configuration.HTTPAdditionalHeaders = headers; + + return configuration; +} + +///-------------------------------------- +#pragma mark - PFURLSessionDelegate +///-------------------------------------- + +- (void)urlSession:(PFURLSession *)session willPerformURLRequest:(NSURLRequest *)request { + [[BFExecutor defaultPriorityBackgroundExecutor] execute:^{ + NSDictionary *userInfo = ([PFLogger sharedLogger].logLevel == PFLogLevelDebug ? + @{ PFNetworkNotificationURLRequestUserInfoKey : request } : nil); + [self.notificationCenter postNotificationName:PFNetworkWillSendURLRequestNotification + object:self + userInfo:userInfo]; + }]; +} + +- (void)urlSession:(PFURLSession *)session +didPerformURLRequest:(NSURLRequest *)request + withURLResponse:(nullable NSURLResponse *)response + responseString:(nullable NSString *)responseString { + [[BFExecutor defaultPriorityBackgroundExecutor] execute:^{ + NSMutableDictionary *userInfo = nil; + if ([PFLogger sharedLogger].logLevel == PFLogLevelDebug) { + userInfo = [NSMutableDictionary dictionaryWithObject:request + forKey:PFNetworkNotificationURLRequestUserInfoKey]; + if (response) { + userInfo[PFNetworkNotificationURLResponseUserInfoKey] = response; + } + if (responseString) { + userInfo[PFNetworkNotificationURLResponseBodyUserInfoKey] = responseString; + } + } + [self.notificationCenter postNotificationName:PFNetworkDidReceiveURLResponseNotification + object:self + userInfo:userInfo]; + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner_Private.h new file mode 100644 index 0000000..e10c6f1 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner_Private.h @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFURLSessionCommandRunner.h" + +@class PFCommandURLRequestConstructor; +@class PFURLSession; + +NS_ASSUME_NONNULL_BEGIN + +@interface PFURLSessionCommandRunner () + +@property (nonatomic, strong, readonly) PFURLSession *session; +@property (nonatomic, strong, readonly) PFCommandURLRequestConstructor *requestConstructor; + +- (instancetype)initWithDataSource:(id)dataSource + session:(PFURLSession *)session + requestConstructor:(PFCommandURLRequestConstructor *)requestConstructor + notificationCenter:(NSNotificationCenter *)notificationCenter NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.h new file mode 100644 index 0000000..ff53d22 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.h @@ -0,0 +1,73 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@class BFCancellationToken; + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFRESTCommand; + +NS_ASSUME_NONNULL_BEGIN + +@class PFURLSession; + +@protocol PFURLSessionDelegate + +- (void)urlSession:(PFURLSession *)session willPerformURLRequest:(NSURLRequest *)request; + +- (void)urlSession:(PFURLSession *)session didPerformURLRequest:(NSURLRequest *)request withURLResponse:(nullable NSURLResponse *)response responseString:(nullable NSString *)string; + +@end + +@interface PFURLSession : NSObject + +@property (nonatomic, weak, readonly) id delegate; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithConfiguration:(NSURLSessionConfiguration *)configuration + delegate:(id)delegate NS_DESIGNATED_INITIALIZER; + ++ (instancetype)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration + delegate:(id)delegate; + +///-------------------------------------- +/// @name Teardown +///-------------------------------------- + +- (void)invalidateAndCancel; + +///-------------------------------------- +/// @name Network Requests +///-------------------------------------- + +- (BFTask *)performDataURLRequestAsync:(NSURLRequest *)request + forCommand:(PFRESTCommand *)command + cancellationToken:(nullable BFCancellationToken *)cancellationToken; + +- (BFTask *)performFileUploadURLRequestAsync:(NSURLRequest *)request + forCommand:(PFRESTCommand *)command + withContentSourceFilePath:(NSString *)sourceFilePath + cancellationToken:(nullable BFCancellationToken *)cancellationToken + progressBlock:(nullable PFProgressBlock)progressBlock; + +- (BFTask *)performFileDownloadURLRequestAsync:(NSURLRequest *)request + toFileAtPath:(NSString *)filePath + withCancellationToken:(nullable BFCancellationToken *)cancellationToken + progressBlock:(nullable PFProgressBlock)progressBlock; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.m new file mode 100644 index 0000000..9934f47 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.m @@ -0,0 +1,264 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFURLSession.h" +#import "PFURLSession_Private.h" + +#import + +#import "BFTask+Private.h" +#import "PFCommandResult.h" +#import "PFMacros.h" +#import "PFAssert.h" +#import "PFURLSessionJSONDataTaskDelegate.h" +#import "PFURLSessionUploadTaskDelegate.h" +#import "PFURLSessionFileDownloadTaskDelegate.h" + +typedef void (^PFURLSessionTaskCompletionHandler)(NSData *data, NSURLResponse *response, NSError *error); + +@interface PFURLSession () { + dispatch_queue_t _sessionTaskQueue; + NSURLSession *_urlSession; + NSMutableDictionary *_delegatesDictionary; + dispatch_queue_t _delegatesAccessQueue; +} + +@end + +@implementation PFURLSession + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithConfiguration:(NSURLSessionConfiguration *)configuration + delegate:(id)delegate { + // NOTE: cast to id suppresses warning about designated initializer. + return [(id)self initWithURLSession:[NSURLSession sessionWithConfiguration:configuration + delegate:self + delegateQueue:nil] + delegate:delegate]; +} + +- (instancetype)initWithURLSession:(NSURLSession *)session + delegate:(id)delegate { + self = [super init]; + if (!self) return nil; + + _delegate = delegate; + _urlSession = session; + + _sessionTaskQueue = dispatch_queue_create("com.parse.urlSession.tasks", DISPATCH_QUEUE_SERIAL); + + _delegatesDictionary = [NSMutableDictionary dictionary]; + _delegatesAccessQueue = dispatch_queue_create("com.parse.urlSession.delegates", DISPATCH_QUEUE_CONCURRENT); + + return self; +} + ++ (instancetype)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration + delegate:(id)delegate { + return [[self alloc] initWithConfiguration:configuration delegate:delegate]; +} + ++ (instancetype)sessionWithURLSession:(nonnull NSURLSession *)session + delegate:(id)delegate { + return [[self alloc] initWithURLSession:session delegate:delegate]; +} + +///-------------------------------------- +#pragma mark - Teardown +///-------------------------------------- + +- (void)invalidateAndCancel { + [_urlSession invalidateAndCancel]; +} + +///-------------------------------------- +#pragma mark - Network Requests +///-------------------------------------- + +- (BFTask *)performDataURLRequestAsync:(NSURLRequest *)request + forCommand:(PFRESTCommand *)command + cancellationToken:(BFCancellationToken *)cancellationToken { + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + @weakify(self); + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + __block NSURLSessionDataTask *task = nil; + dispatch_sync(_sessionTaskQueue, ^{ + task = [_urlSession dataTaskWithRequest:request]; + }); + PFURLSessionDataTaskDelegate *delegate = [PFURLSessionJSONDataTaskDelegate taskDelegateForDataTask:task + withCancellationToken:cancellationToken]; + return [self _performDataTask:task withDelegate:delegate]; + }]; +} + +- (BFTask *)performFileUploadURLRequestAsync:(NSURLRequest *)request + forCommand:(PFRESTCommand *)command + withContentSourceFilePath:(NSString *)sourceFilePath + cancellationToken:(BFCancellationToken *)cancellationToken + progressBlock:(PFProgressBlock)progressBlock { + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + @weakify(self); + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + __block NSURLSessionDataTask *task = nil; + dispatch_sync(_sessionTaskQueue, ^{ + task = [_urlSession uploadTaskWithRequest:request fromFile:[NSURL fileURLWithPath:sourceFilePath]]; + }); + PFURLSessionUploadTaskDelegate *delegate = [PFURLSessionUploadTaskDelegate taskDelegateForDataTask:task + withCancellationToken:cancellationToken + uploadProgressBlock:progressBlock]; + return [self _performDataTask:task withDelegate:delegate]; + }]; +} + +- (BFTask *)performFileDownloadURLRequestAsync:(NSURLRequest *)request + toFileAtPath:(NSString *)filePath + withCancellationToken:(nullable BFCancellationToken *)cancellationToken + progressBlock:(nullable PFProgressBlock)progressBlock { + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + @weakify(self); + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + __block NSURLSessionDataTask *task = nil; + dispatch_sync(_sessionTaskQueue, ^{ + task = [_urlSession dataTaskWithRequest:request]; + }); + PFURLSessionFileDownloadTaskDelegate *delegate = [PFURLSessionFileDownloadTaskDelegate taskDelegateForDataTask:task + withCancellationToken:cancellationToken + targetFilePath:filePath + progressBlock:progressBlock]; + return [self _performDataTask:task withDelegate:delegate]; + }]; +} + +- (BFTask *)_performDataTask:(NSURLSessionDataTask *)dataTask withDelegate:(PFURLSessionDataTaskDelegate *)delegate { + [self.delegate urlSession:self willPerformURLRequest:dataTask.originalRequest]; + + @weakify(self); + return [BFTask taskFromExecutor:[BFExecutor defaultExecutor] withBlock:^id{ + @strongify(self); + NSNumber *taskIdentifier = @(dataTask.taskIdentifier); + [self setDelegate:delegate forDataTask:dataTask]; + + BFTask *resultTask = [delegate.resultTask continueWithBlock:^id(BFTask *task) { + @strongify(self); + [self.delegate urlSession:self + didPerformURLRequest:dataTask.originalRequest + withURLResponse:delegate.response + responseString:delegate.responseString]; + + [self _removeDelegateForTaskWithIdentifier:taskIdentifier]; + return task; + }]; + [dataTask resume]; + + return resultTask; + }]; +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + +- (PFURLSessionDataTaskDelegate *)_taskDelegateForDataTask:(NSURLSessionDataTask *)task { + __block PFURLSessionDataTaskDelegate *delegate = nil; + dispatch_sync(_delegatesAccessQueue, ^{ + delegate = _delegatesDictionary[@(task.taskIdentifier)]; + }); + return delegate; +} + +- (void)setDelegate:(PFURLSessionDataTaskDelegate *)delegate forDataTask:(NSURLSessionDataTask *)task { + dispatch_barrier_async(_delegatesAccessQueue, ^{ + _delegatesDictionary[@(task.taskIdentifier)] = delegate; + }); +} + +- (void)_removeDelegateForTaskWithIdentifier:(NSNumber *)identifier { + dispatch_barrier_async(_delegatesAccessQueue, ^{ + [_delegatesDictionary removeObjectForKey:identifier]; + }); +} + +///-------------------------------------- +#pragma mark - NSURLSessionTaskDelegate +///-------------------------------------- + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionDataTask *)task + didSendBodyData:(int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent +totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { + PFURLSessionDataTaskDelegate *delegate = [self _taskDelegateForDataTask:task]; + [delegate URLSession:session + task:task + didSendBodyData:bytesSent + totalBytesSent:totalBytesSent +totalBytesExpectedToSend:totalBytesExpectedToSend]; +} + +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionDataTask *)task didCompleteWithError:(NSError *)error { + PFURLSessionDataTaskDelegate *delegate = [self _taskDelegateForDataTask:task]; + [delegate URLSession:session task:task didCompleteWithError:error]; +} + +///-------------------------------------- +#pragma mark - NSURLSessionDataDelegate +///-------------------------------------- + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask +didReceiveResponse:(NSURLResponse *)response + completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler { + PFURLSessionDataTaskDelegate *delegate = [self _taskDelegateForDataTask:dataTask]; + [delegate URLSession:session dataTask:dataTask didReceiveResponse:response completionHandler:completionHandler]; +} + +- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { + PFURLSessionDataTaskDelegate *delegate = [self _taskDelegateForDataTask:dataTask]; + [delegate URLSession:session dataTask:dataTask didReceiveData:data]; +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask + willCacheResponse:(NSCachedURLResponse *)proposedResponse + completionHandler:(void (^)(NSCachedURLResponse *cachedResponse))completionHandler { + completionHandler(nil); // Prevent any caching for security reasons +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession_Private.h new file mode 100644 index 0000000..1f047ac --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession_Private.h @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFURLSession.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFURLSession () + +- (instancetype)initWithURLSession:(NSURLSession *)session + delegate:(id)delegate NS_DESIGNATED_INITIALIZER; + ++ (instancetype)sessionWithURLSession:(NSURLSession *)session + delegate:(id)delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.h new file mode 100644 index 0000000..a1f8ca9 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.h @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@class BFCancellationToken; + +@class BFTask PF_GENERIC(__covariant BFGenericType); + +NS_ASSUME_NONNULL_BEGIN + +@interface PFURLSessionDataTaskDelegate : NSObject + +@property (nonatomic, strong, readonly) NSURLSessionDataTask *dataTask; +@property (nonatomic, strong, readonly) BFTask *resultTask; + +@property (nonatomic, strong, readonly) NSHTTPURLResponse *response; +@property (nullable, nonatomic, copy, readonly) NSString *responseString; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initForDataTask:(NSURLSessionDataTask *)dataTask + withCancellationToken:(nullable BFCancellationToken *)cancellationToken NS_DESIGNATED_INITIALIZER; + ++ (instancetype)taskDelegateForDataTask:(NSURLSessionDataTask *)dataTask + withCancellationToken:(nullable BFCancellationToken *)cancellationToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.m new file mode 100644 index 0000000..f81e9d6 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.m @@ -0,0 +1,180 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFURLSessionDataTaskDelegate.h" +#import "PFURLSessionDataTaskDelegate_Private.h" + +#import +#import + +#import "PFAssert.h" +#import "PFMacros.h" + +@interface PFURLSessionDataTaskDelegate () { + BFTaskCompletionSource *_taskCompletionSource; +} + +@end + +@implementation PFURLSessionDataTaskDelegate + +@synthesize dataOutputStream = _dataOutputStream; +@synthesize downloadedBytes = _downloadedBytes; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initForDataTask:(NSURLSessionDataTask *)dataTask + withCancellationToken:(BFCancellationToken *)cancellationToken { + self = [super init]; + if (!self) return nil; + + _taskCompletionSource = [BFTaskCompletionSource taskCompletionSource]; + + _dataTask = dataTask; + @weakify(self); + [cancellationToken registerCancellationObserverWithBlock:^{ + @strongify(self); + [self _cancel]; + }]; + + return self; +} + ++ (instancetype)taskDelegateForDataTask:(NSURLSessionDataTask *)dataTask + withCancellationToken:(nullable BFCancellationToken *)cancellationToken { + return [[self alloc] initForDataTask:dataTask withCancellationToken:cancellationToken]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (BFTask *)resultTask { + return _taskCompletionSource.task; +} + +- (NSOutputStream *)dataOutputStream { + if (!_dataOutputStream) { + _dataOutputStream = [NSOutputStream outputStreamToMemory]; + } + return _dataOutputStream; +} + +///-------------------------------------- +#pragma mark - Task +///-------------------------------------- + +- (void)_taskDidFinish { + [self _closeDataOutputStream]; + if (self.error) { + [_taskCompletionSource trySetError:self.error]; + } else { + [_taskCompletionSource trySetResult:self.result]; + } +} + +- (void)_taskDidCancel { + [self _closeDataOutputStream]; + [_taskCompletionSource trySetCancelled]; +} + +- (void)_cancel { + [self.dataTask cancel]; +} + +///-------------------------------------- +#pragma mark - Stream +///-------------------------------------- + +- (void)_openDataOutputStream { + [self.dataOutputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; + [self.dataOutputStream open]; +} + +- (void)_writeDataOutputStreamData:(NSData *)data { + NSInteger length = [data length]; + while (YES) { + NSInteger bytesWritten = 0; + if ([self.dataOutputStream hasSpaceAvailable]) { + const uint8_t *dataBuffer = (uint8_t *)[data bytes]; + + NSInteger numberOfBytesWritten = 0; + while (bytesWritten < length) { + numberOfBytesWritten = [self.dataOutputStream write:&dataBuffer[bytesWritten] + maxLength:(length - bytesWritten)]; + if (numberOfBytesWritten == -1) { + break; + } + + bytesWritten += numberOfBytesWritten; + } + break; + } + + if (self.dataOutputStream.streamError) { + [self.dataTask cancel]; + self.error = self.dataOutputStream.streamError; + // Don't finish the delegate here, as we will finish when NSURLSessionTask calls back about cancellation. + return; + } + } + _downloadedBytes += length; +} + +- (void)_closeDataOutputStream { + [self.dataOutputStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; + [self.dataOutputStream close]; +} + +///-------------------------------------- +#pragma mark - NSURLSessionTaskDelegate +///-------------------------------------- + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + didSendBodyData:(int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent +totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { + // No-op, we don't care about progress here. +} + +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { + if ([error.domain isEqualToString:NSURLErrorDomain] && error.code == NSURLErrorCancelled) { + [self _taskDidCancel]; + } else { + self.error = self.error ?: error; + [self _taskDidFinish]; + } +} + +///-------------------------------------- +#pragma mark - NSURLSessionDataDelegate +///-------------------------------------- + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask +didReceiveResponse:(NSURLResponse *)response + completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler { + _response = (NSHTTPURLResponse *)response; + [self _openDataOutputStream]; + + completionHandler(NSURLSessionResponseAllow); +} + +- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { + [self _writeDataOutputStreamData:data]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate_Private.h new file mode 100644 index 0000000..030d4f0 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate_Private.h @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFURLSessionDataTaskDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFURLSessionDataTaskDelegate () + +@property (nonatomic, strong, readonly) dispatch_queue_t dataQueue; + +/*! + @abstract Defaults to to-memory output stream if not overwritten. + */ +@property (nonatomic, strong, readonly) NSOutputStream *dataOutputStream; +@property (nonatomic, assign, readonly) uint64_t downloadedBytes; + +@property (nullable, nonatomic, strong) id result; +@property (nullable, nonatomic, strong) NSError *error; + +@property (nullable, nonatomic, copy, readwrite) NSString *responseString; + +- (void)_taskDidFinish NS_REQUIRES_SUPER; +- (void)_taskDidCancel NS_REQUIRES_SUPER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.h new file mode 100644 index 0000000..918e1b5 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.h @@ -0,0 +1,35 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFURLSessionDataTaskDelegate.h" + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PFURLSessionFileDownloadTaskDelegate : PFURLSessionDataTaskDelegate + +@property (nonatomic, copy, readonly) NSString *targetFilePath; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initForDataTask:(NSURLSessionDataTask *)dataTask + withCancellationToken:(nullable BFCancellationToken *)cancellationToken + targetFilePath:(NSString *)targetFilePath + progressBlock:(nullable PFProgressBlock)progressBlock; ++ (instancetype)taskDelegateForDataTask:(NSURLSessionDataTask *)dataTask + withCancellationToken:(nullable BFCancellationToken *)cancellationToken + targetFilePath:(NSString *)targetFilePath + progressBlock:(nullable PFProgressBlock)progressBlock; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m new file mode 100644 index 0000000..d770267 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m @@ -0,0 +1,101 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFURLSessionFileDownloadTaskDelegate.h" + +#import "PFErrorUtilities.h" +#import "PFHash.h" +#import "PFURLSessionDataTaskDelegate_Private.h" + +@interface PFURLSessionFileDownloadTaskDelegate () { + NSOutputStream *_fileDataOutputStream; + PFProgressBlock _progressBlock; +} + +@end + +@implementation PFURLSessionFileDownloadTaskDelegate + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initForDataTask:(NSURLSessionDataTask *)dataTask + withCancellationToken:(BFCancellationToken *)cancellationToken + targetFilePath:(NSString *)targetFilePath + progressBlock:(PFProgressBlock)progressBlock { + self = [super initForDataTask:dataTask withCancellationToken:cancellationToken]; + if (!self) return nil; + + _targetFilePath = targetFilePath; + _fileDataOutputStream = [NSOutputStream outputStreamToFileAtPath:_targetFilePath append:NO]; + _progressBlock = progressBlock; + + return self; +} + ++ (instancetype)taskDelegateForDataTask:(NSURLSessionDataTask *)dataTask + withCancellationToken:(BFCancellationToken *)cancellationToken + targetFilePath:(NSString *)targetFilePath + progressBlock:(PFProgressBlock)progressBlock { + return [[self alloc] initForDataTask:dataTask + withCancellationToken:cancellationToken + targetFilePath:targetFilePath + progressBlock:progressBlock]; +} + +///-------------------------------------- +#pragma mark - Progress +///-------------------------------------- + +- (void)_reportProgress { + if (!_progressBlock) { + return; + } + + int progress = (int)(self.downloadedBytes / (CGFloat)self.response.expectedContentLength * 100); + _progressBlock(progress); +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (NSOutputStream *)dataOutputStream { + return _fileDataOutputStream; +} + +///-------------------------------------- +#pragma mark - Task +///-------------------------------------- + +- (void)_taskDidFinish { + if (self.error) { + // TODO: (nlutsenko) Unify this with code from PFURLSessionJSONDataTaskDelegate + NSMutableDictionary *errorDictionary = [NSMutableDictionary dictionary]; + errorDictionary[@"code"] = @(kPFErrorConnectionFailed); + errorDictionary[@"error"] = [self.error localizedDescription]; + errorDictionary[@"originalError"] = self.error; + errorDictionary[NSUnderlyingErrorKey] = self.error; + errorDictionary[@"temporary"] = @(self.response.statusCode >= 500 || self.response.statusCode < 400); + self.error = [PFErrorUtilities errorFromResult:errorDictionary]; + } + [super _taskDidFinish]; +} + +///-------------------------------------- +#pragma mark - NSURLSessionDataDelegate +///-------------------------------------- + +- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { + [super URLSession:session dataTask:dataTask didReceiveData:data]; + [self _reportProgress]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.h new file mode 100644 index 0000000..66a06d1 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.h @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFURLSessionDataTaskDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFURLSessionJSONDataTaskDelegate : PFURLSessionDataTaskDelegate + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m new file mode 100644 index 0000000..f10eac3 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m @@ -0,0 +1,90 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFURLSessionJSONDataTaskDelegate.h" + +#import +#import +#import + +#import "PFCommandResult.h" +#import "PFConstants.h" +#import "PFErrorUtilities.h" +#import "PFMacros.h" +#import "PFURLSessionDataTaskDelegate_Private.h" + +@interface PFURLSessionJSONDataTaskDelegate () + +@end + +@implementation PFURLSessionJSONDataTaskDelegate + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + +- (void)_taskDidFinish { + NSData *data = [self.dataOutputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; + + id result = nil; + + NSError *jsonError = nil; + if (data) { + self.responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + result = [NSJSONSerialization JSONObjectWithData:data + options:0 + error:&jsonError]; + + if (jsonError && !self.error) { + self.error = jsonError; + [super _taskDidFinish]; + return; + } + } + + if (self.error) { + NSMutableDictionary *errorDictionary = [NSMutableDictionary dictionary]; + errorDictionary[@"code"] = @(kPFErrorConnectionFailed); + errorDictionary[@"originalError"] = self.error; + errorDictionary[NSUnderlyingErrorKey] = self.error; + errorDictionary[@"temporary"] = @(self.response.statusCode >= 500 || self.response.statusCode < 400); + + NSString *description = [self.error localizedDescription] ?: [self.error localizedFailureReason]; + if (description) { + errorDictionary[@"error"] = description; + } + + self.error = [PFErrorUtilities errorFromResult:errorDictionary]; + [super _taskDidFinish]; + return; + } + + if (self.response.statusCode >= 200) { + if (self.response.statusCode < 400) { + PFCommandResult *commandResult = [PFCommandResult commandResultWithResult:result + resultString:self.responseString + httpResponse:self.response]; + self.result = commandResult; + } else if ([result isKindOfClass:[NSDictionary class]]) { + NSDictionary *resultDictionary = (NSDictionary *)result; + if (resultDictionary[@"error"]) { + NSMutableDictionary *errorDictionary = [NSMutableDictionary dictionaryWithDictionary:resultDictionary]; + errorDictionary[@"temporary"] = @(self.response.statusCode >= 500 || self.response.statusCode < 400); + self.error = [PFErrorUtilities errorFromResult:errorDictionary]; + } + } + } + + if (!self.result && !self.error) { + self.error = [PFErrorUtilities errorWithCode:kPFErrorInternalServer message:self.responseString]; + } + [super _taskDidFinish]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.h new file mode 100644 index 0000000..d08225f --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.h @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFURLSessionJSONDataTaskDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFURLSessionUploadTaskDelegate : PFURLSessionJSONDataTaskDelegate + +- (instancetype)initForDataTask:(NSURLSessionDataTask *)dataTask + withCancellationToken:(nullable BFCancellationToken *)cancellationToken + uploadProgressBlock:(nullable PFProgressBlock)progressBlock; ++ (instancetype)taskDelegateForDataTask:(NSURLSessionDataTask *)dataTask + withCancellationToken:(nullable BFCancellationToken *)cancellationToken + uploadProgressBlock:(nullable PFProgressBlock)progressBlock; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.m new file mode 100644 index 0000000..8cf9698 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.m @@ -0,0 +1,56 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFURLSessionUploadTaskDelegate.h" + +@implementation PFURLSessionUploadTaskDelegate { + __nullable PFProgressBlock _progressBlock; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initForDataTask:(NSURLSessionDataTask *)dataTask + withCancellationToken:(nullable BFCancellationToken *)cancellationToken + uploadProgressBlock:(nullable PFProgressBlock)progressBlock { + self = [self initForDataTask:dataTask withCancellationToken:cancellationToken]; + if (!self) return nil; + + _progressBlock = [progressBlock copy]; + + return self; +} + ++ (instancetype)taskDelegateForDataTask:(NSURLSessionDataTask *)dataTask + withCancellationToken:(nullable BFCancellationToken *)cancellationToken + uploadProgressBlock:(nullable PFProgressBlock)progressBlock { + return [[self alloc] initForDataTask:dataTask + withCancellationToken:cancellationToken + uploadProgressBlock:progressBlock]; +} + +///-------------------------------------- +#pragma mark - NSURLSessionTaskDelegate +///-------------------------------------- + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + didSendBodyData:(int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent +totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { + int progress = (int)round(totalBytesSent / (CGFloat)totalBytesExpectedToSend * 100); + dispatch_async(dispatch_get_main_queue(), ^{ + if (_progressBlock) { + _progressBlock(progress); + } + }); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTAnalyticsCommand.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTAnalyticsCommand.h new file mode 100644 index 0000000..585b141 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTAnalyticsCommand.h @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTCommand.h" + +NS_ASSUME_NONNULL_BEGIN + +extern NSString *const PFRESTAnalyticsEventNameAppOpened; +extern NSString *const PFRESTAnalyticsEventNameCrashReport; + +@interface PFRESTAnalyticsCommand : PFRESTCommand + ++ (instancetype)trackAppOpenedEventCommandWithPushHash:(nullable NSString *)pushHash + sessionToken:(nullable NSString *)sessionToken; + ++ (instancetype)trackEventCommandWithEventName:(NSString *)eventName + dimensions:(nullable NSDictionary *)dimensions + sessionToken:(nullable NSString *)sessionToken; + ++ (instancetype)trackCrashReportCommandWithBreakpadDumpParameters:(NSDictionary *)parameters + sessionToken:(nullable NSString *)sessionToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTAnalyticsCommand.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTAnalyticsCommand.m new file mode 100644 index 0000000..6badd35 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTAnalyticsCommand.m @@ -0,0 +1,61 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTAnalyticsCommand.h" + +#import "PFHTTPRequest.h" + +/** + * Predefined events - AppOpened, CrashReport + * Coming soon - Log, ... + */ +NSString *const PFRESTAnalyticsEventNameAppOpened = @"AppOpened"; +NSString *const PFRESTAnalyticsEventNameCrashReport = @"_CrashReport"; + +@implementation PFRESTAnalyticsCommand + ++ (instancetype)trackAppOpenedEventCommandWithPushHash:(NSString *)pushHash + sessionToken:(NSString *)sessionToken { + NSDictionary *parameters = (pushHash ? @{ @"push_hash" : pushHash } : nil); + return [self _trackEventCommandWithEventName:PFRESTAnalyticsEventNameAppOpened + parameters:parameters + sessionToken:sessionToken]; +} + ++ (instancetype)trackEventCommandWithEventName:(NSString *)eventName + dimensions:(NSDictionary *)dimensions + sessionToken:(NSString *)sessionToken { + NSDictionary *parameters = (dimensions ? @{ @"dimensions" : dimensions } : nil); + return [self _trackEventCommandWithEventName:eventName parameters:parameters sessionToken:sessionToken]; +} + ++ (instancetype)trackCrashReportCommandWithBreakpadDumpParameters:(NSDictionary *)parameters + sessionToken:(NSString *)sessionToken { + return [self _trackEventCommandWithEventName:PFRESTAnalyticsEventNameCrashReport + parameters:@{ @"breakpadDump" : parameters } + sessionToken:sessionToken]; +} + ++ (instancetype)_trackEventCommandWithEventName:(NSString *)eventName + parameters:(NSDictionary *)parameters + sessionToken:(NSString *)sessionToken { + NSString *httpPath = [NSString stringWithFormat:@"events/%@", eventName]; + + NSMutableDictionary *dictionary = (parameters ? [parameters mutableCopy] : [NSMutableDictionary dictionary]); + if (!dictionary[@"at"]) { + dictionary[@"at"] = [NSDate date]; + } + + return [self commandWithHTTPPath:httpPath + httpMethod:PFHTTPRequestMethodPOST + parameters:dictionary + sessionToken:sessionToken]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCloudCommand.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCloudCommand.h new file mode 100644 index 0000000..b15bf7a --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCloudCommand.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTCommand.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFRESTCloudCommand : PFRESTCommand + ++ (instancetype)commandForFunction:(NSString *)function + withParameters:(nullable NSDictionary *)parameters + sessionToken:(nullable NSString *)sessionToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCloudCommand.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCloudCommand.m new file mode 100644 index 0000000..5bd85a9 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCloudCommand.m @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTCloudCommand.h" + +#import "PFAssert.h" +#import "PFHTTPRequest.h" + +@implementation PFRESTCloudCommand + ++ (instancetype)commandForFunction:(NSString *)function + withParameters:(NSDictionary *)parameters + sessionToken:(NSString *)sessionToken { + NSString *path = [NSString stringWithFormat:@"functions/%@", function]; + return [self commandWithHTTPPath:path + httpMethod:PFHTTPRequestMethodPOST + parameters:parameters + sessionToken:sessionToken]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCommand.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCommand.h new file mode 100644 index 0000000..0e6ad3e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCommand.h @@ -0,0 +1,45 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFNetworkCommand.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFRESTCommand : NSObject + +@property (nonatomic, copy, readonly) NSString *httpPath; +@property (nonatomic, copy, readonly) NSString *httpMethod; + +@property (nullable, nonatomic, copy, readonly) NSDictionary *parameters; +@property (nullable, nonatomic, copy) NSDictionary *additionalRequestHeaders; + +@property (nonatomic, copy, readonly) NSString *cacheKey; + +@property (nullable, nonatomic, copy) NSString *localId; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + ++ (instancetype)commandWithHTTPPath:(NSString *)path + httpMethod:(NSString *)httpMethod + parameters:(nullable NSDictionary *)parameters + sessionToken:(nullable NSString *)sessionToken; + ++ (instancetype)commandWithHTTPPath:(NSString *)path + httpMethod:(NSString *)httpMethod + parameters:(nullable NSDictionary *)parameters + operationSetUUID:(nullable NSString *)operationSetIdentifier + sessionToken:(nullable NSString *)sessionToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCommand.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCommand.m new file mode 100644 index 0000000..b9460fa --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCommand.m @@ -0,0 +1,230 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTCommand.h" +#import "PFRESTCommand_Private.h" + +#import "PFAssert.h" +#import "PFCoreManager.h" +#import "PFFieldOperation.h" +#import "PFHTTPRequest.h" +#import "PFHash.h" +#import "PFInternalUtils.h" +#import "PFObjectLocalIdStore.h" +#import "PFObjectPrivate.h" +#import "Parse_Private.h" + +static NSString *const PFRESTCommandHTTPPathEncodingKey = @"httpPath"; +static NSString *const PFRESTCommandHTTPMethodEncodingKey = @"httpMethod"; +static NSString *const PFRESTCommandParametersEncodingKey = @"parameters"; +static NSString *const PFRESTCommandSessionTokenEncodingKey = @"sessionToken"; +static NSString *const PFRESTCommandLocalIdEncodingKey = @"localId"; + +// Increment this when you change the format of cache values. +static const int PFRESTCommandCacheKeyVersion = 1; + +@implementation PFRESTCommand + +@synthesize sessionToken = _sessionToken; +@synthesize operationSetUUID = _operationSetUUID; +@synthesize localId = _localId; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + ++ (instancetype)commandWithHTTPPath:(NSString *)path + httpMethod:(NSString *)httpMethod + parameters:(NSDictionary *)parameters + sessionToken:(NSString *)sessionToken { + return [self commandWithHTTPPath:path + httpMethod:httpMethod + parameters:parameters + operationSetUUID:nil + sessionToken:sessionToken]; +} + ++ (instancetype)commandWithHTTPPath:(NSString *)path + httpMethod:(NSString *)httpMethod + parameters:(NSDictionary *)parameters + operationSetUUID:(NSString *)operationSetIdentifier + sessionToken:(NSString *)sessionToken { + PFRESTCommand *command = [[self alloc] init]; + command.httpPath = path; + command.httpMethod = httpMethod; + command.parameters = parameters; + command.operationSetUUID = operationSetIdentifier; + command.sessionToken = sessionToken; + return command; +} + +///-------------------------------------- +#pragma mark - CacheKey +///-------------------------------------- + +- (NSString *)cacheKey { + if (_cacheKey) { + return _cacheKey; + } + + NSMutableDictionary *cacheParameters = [NSMutableDictionary dictionaryWithCapacity:2]; + if (self.parameters) { + cacheParameters[PFRESTCommandParametersEncodingKey] = self.parameters; + } + if (self.sessionToken) { + cacheParameters[PFRESTCommandSessionTokenEncodingKey] = self.sessionToken; + } + + NSString *parametersCacheKey = [PFInternalUtils cacheKeyForObject:cacheParameters]; + + _cacheKey = [NSString stringWithFormat:@"PFRESTCommand.%i.%@.%@.%ld.%@", + PFRESTCommandCacheKeyVersion, self.httpMethod, PFMD5HashFromString(self.httpPath), + // We use MD5 instead of native hash because it collides too much. + (long)PARSE_API_VERSION, PFMD5HashFromString(parametersCacheKey)]; + return _cacheKey; +} + +///-------------------------------------- +#pragma mark - PFNetworkCommand +///-------------------------------------- + +#pragma mark Encoding/Decoding + ++ (instancetype)commandFromDictionaryRepresentation:(NSDictionary *)dictionary { + if (![self isValidDictionaryRepresentation:dictionary]) { + return nil; + } + + PFRESTCommand *command = [self commandWithHTTPPath:dictionary[PFRESTCommandHTTPPathEncodingKey] + httpMethod:dictionary[PFRESTCommandHTTPMethodEncodingKey] + parameters:dictionary[PFRESTCommandParametersEncodingKey] + sessionToken:dictionary[PFRESTCommandSessionTokenEncodingKey]]; + command.localId = dictionary[PFRESTCommandLocalIdEncodingKey]; + return command; +} + +- (NSDictionary *)dictionaryRepresentation { + NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; + if (self.httpPath) { + dictionary[PFRESTCommandHTTPPathEncodingKey] = self.httpPath; + } + if (self.httpMethod) { + dictionary[PFRESTCommandHTTPMethodEncodingKey] = self.httpMethod; + } + if (self.parameters) { + NSDictionary *parameters = [[PFPointerOrLocalIdObjectEncoder objectEncoder] encodeObject:self.parameters]; + dictionary[PFRESTCommandParametersEncodingKey] = parameters; + } + if (self.sessionToken) { + dictionary[PFRESTCommandSessionTokenEncodingKey] = self.sessionToken; + } + if (self.localId) { + dictionary[PFRESTCommandLocalIdEncodingKey] = self.localId; + } + return [dictionary copy]; +} + ++ (BOOL)isValidDictionaryRepresentation:(NSDictionary *)dictionary { + return dictionary[PFRESTCommandHTTPPathEncodingKey] != nil; +} + +#pragma mark Local Identifiers + +/*! + If this was the second save on a new object while offline, then its objectId + wasn't yet set when the command was created, so it would have been considered a + "create". But if the first save succeeded, then there is an objectId now, and it + will be mapped to the localId for this command's result. If so, change the + "create" operation to an "update", and add the objectId to the command. + */ +- (void)maybeChangeServerOperation { + if (self.localId) { + NSString *objectId = [[Parse _currentManager].coreManager.objectLocalIdStore objectIdForLocalId:self.localId]; + if (objectId) { + self.localId = nil; + + NSArray *components = [self.httpPath pathComponents]; + if ([components count] == 2) { + self.httpPath = [NSString pathWithComponents:[components arrayByAddingObject:objectId]]; + } + + if ([self.httpPath hasPrefix:@"classes"] && + [self.httpMethod isEqualToString:PFHTTPRequestMethodPOST]) { + self.httpMethod = PFHTTPRequestMethodPUT; + } + } + + PFConsistencyAssert(![self.httpMethod isEqualToString:PFHTTPRequestMethodDELETE] || objectId, + @"Attempt to delete non-existent object."); + } +} + ++ (BOOL)forEachLocalIdIn:(id)object doBlock:(BOOL(^)(PFObject *pointer))block { + __block BOOL modified = NO; + + // If this is a Pointer with a local id, try to resolve it. + if ([object isKindOfClass:[PFObject class]] && !((PFObject *)object).objectId) { + return block(object); + } + + if ([object isKindOfClass:[NSDictionary class]]) { + [object enumerateKeysAndObjectsUsingBlock:^(NSString *key, id obj, BOOL *stop) { + if ([[self class] forEachLocalIdIn:obj doBlock:block]) { + modified = YES; + } + }]; + } else if ([object isKindOfClass:[NSArray class]]) { + for (id value in object) { + if ([[self class] forEachLocalIdIn:value doBlock:block]) { + modified = YES; + } + } + } else if ([object isKindOfClass:[PFAddOperation class]]) { + for (id value in ((PFAddOperation *)object).objects) { + if ([[self class] forEachLocalIdIn:value doBlock:block]) { + modified = YES; + } + } + } else if ([object isKindOfClass:[PFAddUniqueOperation class]]) { + for (id value in ((PFAddUniqueOperation *)object).objects) { + if ([[self class] forEachLocalIdIn:value doBlock:block]) { + modified = YES; + } + } + } else if ([object isKindOfClass:[PFRemoveOperation class]]) { + for (id value in ((PFRemoveOperation *)object).objects) { + if ([[self class] forEachLocalIdIn:value doBlock:block]) { + modified = YES; + } + } + } + + return modified; +} + +- (void)forEachLocalId:(BOOL(^)(PFObject *pointer))block { + NSDictionary *data = [[PFDecoder objectDecoder] decodeObject:self.parameters]; + if (!data) { + return; + } + + if ([[self class] forEachLocalIdIn:data doBlock:block]) { + self.parameters = [[PFPointerOrLocalIdObjectEncoder objectEncoder] encodeObject:data]; + } +} + +- (void)resolveLocalIds { + [self forEachLocalId:^(PFObject *pointer) { + [pointer resolveLocalId]; + return YES; + }]; + [self maybeChangeServerOperation]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCommand_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCommand_Private.h new file mode 100644 index 0000000..f3d1e4e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTCommand_Private.h @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTCommand.h" + +@interface PFRESTCommand () + +@property (nonatomic, copy, readwrite) NSString *sessionToken; + +@property (nonatomic, copy, readwrite) NSString *httpPath; +@property (nonatomic, copy, readwrite) NSString *httpMethod; + +@property (nonatomic, copy, readwrite) NSDictionary *parameters; + +@property (nonatomic, copy, readwrite) NSString *cacheKey; + +@property (nonatomic, copy, readwrite) NSString *operationSetUUID; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTConfigCommand.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTConfigCommand.h new file mode 100644 index 0000000..7b52307 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTConfigCommand.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTCommand.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFRESTConfigCommand : PFRESTCommand + ++ (instancetype)configFetchCommandWithSessionToken:(nullable NSString *)sessionToken; ++ (instancetype)configUpdateCommandWithConfigParameters:(NSDictionary *)parameters + sessionToken:(nullable NSString *)sessionToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTConfigCommand.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTConfigCommand.m new file mode 100644 index 0000000..6709990 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTConfigCommand.m @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTConfigCommand.h" + +#import "PFAssert.h" +#import "PFHTTPRequest.h" + +@implementation PFRESTConfigCommand + ++ (instancetype)configFetchCommandWithSessionToken:(NSString *)sessionToken { + return [self commandWithHTTPPath:@"config" + httpMethod:PFHTTPRequestMethodGET + parameters:nil + sessionToken:sessionToken]; +} + ++ (instancetype)configUpdateCommandWithConfigParameters:(NSDictionary *)parameters + sessionToken:(NSString *)sessionToken { + NSDictionary *commandParameters = @{ @"params" : parameters }; + return [self commandWithHTTPPath:@"config" + httpMethod:PFHTTPRequestMethodPUT + parameters:commandParameters + sessionToken:sessionToken]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTFileCommand.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTFileCommand.h new file mode 100644 index 0000000..770b258 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTFileCommand.h @@ -0,0 +1,21 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTCommand.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFRESTFileCommand : PFRESTCommand + ++ (instancetype)uploadCommandForFileWithName:(NSString *)fileName + sessionToken:(nullable NSString *)sessionToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTFileCommand.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTFileCommand.m new file mode 100644 index 0000000..1de7cc9 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTFileCommand.m @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTFileCommand.h" + +#import "PFAssert.h" +#import "PFHTTPRequest.h" + +@implementation PFRESTFileCommand + ++ (instancetype)uploadCommandForFileWithName:(NSString *)fileName + sessionToken:(NSString *)sessionToken { + NSMutableString *httpPath = [@"files/" mutableCopy]; + if (fileName) { + [httpPath appendString:fileName]; + } + return [self commandWithHTTPPath:httpPath + httpMethod:PFHTTPRequestMethodPOST + parameters:nil + sessionToken:sessionToken]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectBatchCommand.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectBatchCommand.h new file mode 100644 index 0000000..8b28e34 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectBatchCommand.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTCommand.h" + +extern NSUInteger const PFRESTObjectBatchCommandSubcommandsLimit; + +NS_ASSUME_NONNULL_BEGIN + +@interface PFRESTObjectBatchCommand : PFRESTCommand + ++ (instancetype)batchCommandWithCommands:(NSArray *)commands sessionToken:(nullable NSString *)sessionToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectBatchCommand.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectBatchCommand.m new file mode 100644 index 0000000..7aa407f --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectBatchCommand.m @@ -0,0 +1,42 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTObjectBatchCommand.h" + +#import "PFAssert.h" +#import "PFHTTPRequest.h" + +NSUInteger const PFRESTObjectBatchCommandSubcommandsLimit = 50; + +@implementation PFRESTObjectBatchCommand + ++ (nonnull instancetype)batchCommandWithCommands:(NSArray *)commands + sessionToken:(NSString *)sessionToken { + PFParameterAssert([commands count] <= PFRESTObjectBatchCommandSubcommandsLimit, + @"Max of %d commands are allowed in a single batch command", + (int)PFRESTObjectBatchCommandSubcommandsLimit); + + NSMutableArray *requests = [NSMutableArray arrayWithCapacity:[commands count]]; + for (PFRESTCommand *command in commands) { + NSMutableDictionary *requestDictionary = [@{ @"method" : command.httpMethod, + @"path" : [NSString stringWithFormat:@"/1/%@", command.httpPath] + } mutableCopy]; + if (command.parameters) { + requestDictionary[@"body"] = command.parameters; + } + + [requests addObject:requestDictionary]; + } + return [self commandWithHTTPPath:@"batch" + httpMethod:PFHTTPRequestMethodPOST + parameters:@{ @"requests" : requests } + sessionToken:sessionToken]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectCommand.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectCommand.h new file mode 100644 index 0000000..67a8ff4 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectCommand.h @@ -0,0 +1,36 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTCommand.h" + +NS_ASSUME_NONNULL_BEGIN + +@class PFObjectState; + +@interface PFRESTObjectCommand : PFRESTCommand + ++ (instancetype)fetchObjectCommandForObjectState:(PFObjectState *)state + withSessionToken:(nullable NSString *)sessionToken; + ++ (instancetype)createObjectCommandForObjectState:(PFObjectState *)state + changes:(nullable NSDictionary *)changes + operationSetUUID:(nullable NSString *)operationSetIdentifier + sessionToken:(nullable NSString *)sessionToken; + ++ (instancetype)updateObjectCommandForObjectState:(PFObjectState *)state + changes:(nullable NSDictionary *)changes + operationSetUUID:(nullable NSString *)operationSetIdentifier + sessionToken:(nullable NSString *)sessionToken; + ++ (instancetype)deleteObjectCommandForObjectState:(PFObjectState *)state + withSessionToken:(nullable NSString *)sessionToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectCommand.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectCommand.m new file mode 100644 index 0000000..964273e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTObjectCommand.m @@ -0,0 +1,77 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTObjectCommand.h" + +#import "PFAssert.h" +#import "PFHTTPRequest.h" +#import "PFObjectState.h" + +@implementation PFRESTObjectCommand + ++ (instancetype)fetchObjectCommandForObjectState:(PFObjectState *)state + withSessionToken:(NSString *)sessionToken { + PFParameterAssert(state.objectId.length, @"objectId should be non nil"); + PFParameterAssert(state.parseClassName.length, @"Class name should be non nil"); + + NSString *httpPath = [NSString stringWithFormat:@"classes/%@/%@", state.parseClassName, state.objectId]; + PFRESTObjectCommand *command = [self commandWithHTTPPath:httpPath + httpMethod:PFHTTPRequestMethodGET + parameters:nil + sessionToken:sessionToken]; + return command; +} + ++ (instancetype)createObjectCommandForObjectState:(PFObjectState *)state + changes:(NSDictionary *)changes + operationSetUUID:(NSString *)operationSetIdentifier + sessionToken:(NSString *)sessionToken { + PFParameterAssert(state.parseClassName.length, @"Class name should be non nil"); + + NSString *httpPath = [NSString stringWithFormat:@"classes/%@", state.parseClassName]; + PFRESTObjectCommand *command = [self commandWithHTTPPath:httpPath + httpMethod:PFHTTPRequestMethodPOST + parameters:changes + operationSetUUID:operationSetIdentifier + sessionToken:sessionToken]; + return command; +} + ++ (instancetype)updateObjectCommandForObjectState:(PFObjectState *)state + changes:(NSDictionary *)changes + operationSetUUID:(NSString *)operationSetIdentifier + sessionToken:(NSString *)sessionToken { + PFParameterAssert(state.parseClassName.length, @"Class name should be non nil"); + PFParameterAssert(state.objectId.length, @"objectId should be non nil"); + + NSString *httpPath = [NSString stringWithFormat:@"classes/%@/%@", state.parseClassName, state.objectId]; + PFRESTObjectCommand *command = [self commandWithHTTPPath:httpPath + httpMethod:PFHTTPRequestMethodPUT + parameters:changes + operationSetUUID:operationSetIdentifier + sessionToken:sessionToken]; + return command; +} + ++ (instancetype)deleteObjectCommandForObjectState:(PFObjectState *)state + withSessionToken:(NSString *)sessionToken { + PFParameterAssert(state.parseClassName.length, @"Class name should be non nil"); + + NSMutableString *httpPath = [NSMutableString stringWithFormat:@"classes/%@", state.parseClassName]; + if (state.objectId) { + [httpPath appendFormat:@"/%@", state.objectId]; + } + PFRESTObjectCommand *command = [self commandWithHTTPPath:httpPath + httpMethod:PFHTTPRequestMethodDELETE + parameters:nil + sessionToken:sessionToken]; + return command; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTPushCommand.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTPushCommand.h new file mode 100644 index 0000000..d58965d --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTPushCommand.h @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTCommand.h" + +#import + +@class PFPushState; + +NS_ASSUME_NONNULL_BEGIN + +PF_WATCH_UNAVAILABLE @interface PFRESTPushCommand : PFRESTCommand + ++ (instancetype)sendPushCommandWithPushState:(PFPushState *)state + sessionToken:(nullable NSString *)sessionToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTPushCommand.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTPushCommand.m new file mode 100644 index 0000000..2f7601e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTPushCommand.m @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTPushCommand.h" + +#import "PFAssert.h" +#import "PFDateFormatter.h" +#import "PFHTTPRequest.h" +#import "PFInternalUtils.h" +#import "PFPushState.h" +#import "PFQueryState.h" +#import "PFRESTQueryCommand.h" + +@implementation PFRESTPushCommand + ++ (instancetype)sendPushCommandWithPushState:(PFPushState *)state + sessionToken:(NSString *)sessionToken { + NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; + + if (state.queryState) { + NSDictionary *queryParameters = [PFRESTQueryCommand findCommandParametersForQueryState:state.queryState]; + parameters[@"where"] = queryParameters[@"where"]; + } else { + if (state.channels) { + parameters[@"channels"] = [state.channels allObjects]; + } + } + + // If there are no conditions set, then push to everyone by specifying empty query conditions. + if ([parameters count] == 0) { + parameters[@"where"] = @{}; + } + + if (state.expirationDate) { + parameters[@"expiration_time"] = [[PFDateFormatter sharedFormatter] preciseStringFromDate:state.expirationDate]; + } else if (state.expirationTimeInterval) { + parameters[@"expiration_interval"] = state.expirationTimeInterval; + } + + // TODO (nlutsenko): Probably we need an assert here, as there is no reason to send push without message + if (state.payload) { + parameters[@"data"] = state.payload; + } + + return [self commandWithHTTPPath:@"push" + httpMethod:PFHTTPRequestMethodPOST + parameters:parameters + sessionToken:sessionToken]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTQueryCommand.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTQueryCommand.h new file mode 100644 index 0000000..a77a66f --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTQueryCommand.h @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTCommand.h" + +@class PFQueryState; + +NS_ASSUME_NONNULL_BEGIN + +@interface PFRESTQueryCommand : PFRESTCommand + +///-------------------------------------- +/// @name Find +///-------------------------------------- + ++ (instancetype)findCommandForQueryState:(PFQueryState *)queryState withSessionToken:(nullable NSString *)sessionToken; + ++ (instancetype)findCommandForClassWithName:(NSString *)className + order:(nullable NSString *)order + conditions:(nullable NSDictionary *)conditions + selectedKeys:(nullable NSSet *)selectedKeys + includedKeys:(nullable NSSet *)includedKeys + limit:(NSInteger)limit + skip:(NSInteger)skip + extraOptions:(nullable NSDictionary *)extraOptions + tracingEnabled:(BOOL)trace + sessionToken:(nullable NSString *)sessionToken; + +///-------------------------------------- +/// @name Count +///-------------------------------------- + ++ (instancetype)countCommandFromFindCommand:(PFRESTQueryCommand *)findCommand; + +///-------------------------------------- +/// @name Parameters +///-------------------------------------- + ++ (NSDictionary *)findCommandParametersForQueryState:(PFQueryState *)queryState; ++ (NSDictionary *)findCommandParametersWithOrder:(nullable NSString *)order + conditions:(nullable NSDictionary *)conditions + selectedKeys:(nullable NSSet *)selectedKeys + includedKeys:(nullable NSSet *)includedKeys + limit:(NSInteger)limit + skip:(NSInteger)skip + extraOptions:(nullable NSDictionary *)extraOptions + tracingEnabled:(BOOL)trace; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTQueryCommand.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTQueryCommand.m new file mode 100644 index 0000000..bf90f49 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTQueryCommand.m @@ -0,0 +1,200 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTQueryCommand.h" + +#import "PFAssert.h" +#import "PFEncoder.h" +#import "PFHTTPRequest.h" +#import "PFQueryPrivate.h" +#import "PFQueryState.h" + +@implementation PFRESTQueryCommand + +///-------------------------------------- +#pragma mark - Find +///-------------------------------------- + ++ (instancetype)findCommandForQueryState:(PFQueryState *)queryState withSessionToken:(NSString *)sessionToken { + NSDictionary *parameters = [self findCommandParametersForQueryState:queryState]; + return [self _findCommandForClassWithName:queryState.parseClassName + parameters:parameters + sessionToken:sessionToken]; +} + ++ (instancetype)findCommandForClassWithName:(NSString *)className + order:(NSString *)order + conditions:(NSDictionary *)conditions + selectedKeys:(NSSet *)selectedKeys + includedKeys:(NSSet *)includedKeys + limit:(NSInteger)limit + skip:(NSInteger)skip + extraOptions:(NSDictionary *)extraOptions + tracingEnabled:(BOOL)trace + sessionToken:(NSString *)sessionToken { + NSDictionary *parameters = [self findCommandParametersWithOrder:order + conditions:conditions + selectedKeys:selectedKeys + includedKeys:includedKeys + limit:limit + skip:skip + extraOptions:extraOptions + tracingEnabled:trace]; + return [self _findCommandForClassWithName:className + parameters:parameters + sessionToken:sessionToken]; +} + ++ (instancetype)_findCommandForClassWithName:(NSString *)className + parameters:(NSDictionary *)parameters + sessionToken:(NSString *)sessionToken { + NSString *httpPath = [NSString stringWithFormat:@"classes/%@", className]; + PFRESTQueryCommand *command = [self commandWithHTTPPath:httpPath + httpMethod:PFHTTPRequestMethodGET + parameters:parameters + sessionToken:sessionToken]; + return command; +} + +///-------------------------------------- +#pragma mark - Count +///-------------------------------------- + ++ (instancetype)countCommandFromFindCommand:(PFRESTQueryCommand *)findCommand { + NSMutableDictionary *parameters = [findCommand.parameters mutableCopy]; + parameters[@"count"] = @"1"; + parameters[@"limit"] = @"0"; // Set the limit to 0, as we are not interested in results at all. + [parameters removeObjectForKey:@"skip"]; + + return [self commandWithHTTPPath:findCommand.httpPath + httpMethod:findCommand.httpMethod + parameters:[parameters copy] + sessionToken:findCommand.sessionToken]; +} + +///-------------------------------------- +#pragma mark - Parameters +///-------------------------------------- + ++ (NSDictionary *)findCommandParametersForQueryState:(PFQueryState *)queryState { + return [self findCommandParametersWithOrder:queryState.sortOrderString + conditions:queryState.conditions + selectedKeys:queryState.selectedKeys + includedKeys:queryState.includedKeys + limit:queryState.limit + skip:queryState.skip + extraOptions:queryState.extraOptions + tracingEnabled:queryState.trace]; +} + ++ (NSDictionary *)findCommandParametersWithOrder:(NSString *)order + conditions:(NSDictionary *)conditions + selectedKeys:(NSSet *)selectedKeys + includedKeys:(NSSet *)includedKeys + limit:(NSInteger)limit + skip:(NSInteger)skip + extraOptions:(NSDictionary *)extraOptions + tracingEnabled:(BOOL)trace { + NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; + + if ([order length]) { + parameters[@"order"] = order; + } + if (selectedKeys != nil) { + parameters[@"keys"] = [[selectedKeys allObjects] componentsJoinedByString:@","]; + } + if ([includedKeys count] > 0) { + parameters[@"include"] = [[includedKeys allObjects] componentsJoinedByString:@","]; + } + if (limit >= 0) { + parameters[@"limit"] = [NSString stringWithFormat:@"%d", (int)limit]; + } + if (skip > 0) { + parameters[@"skip"] = [NSString stringWithFormat:@"%d", (int)skip]; + } + if (trace) { + // TODO: (nlutsenko) Double check that tracing still works. Maybe create test for it. + parameters[@"trace"] = @"1"; + } + [extraOptions enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + parameters[key] = obj; + }]; + + if ([conditions count] > 0) { + NSMutableDictionary *whereData = [[NSMutableDictionary alloc] init]; + [conditions enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + if ([key isEqualToString:@"$or"]) { + NSArray *array = (NSArray *)obj; + NSMutableArray *newArray = [NSMutableArray array]; + for (PFQuery *subquery in array) { + // TODO: (nlutsenko) Move this validation into PFQuery/PFQueryState. + PFParameterAssert(subquery.state.limit < 0, @"OR queries do not support sub queries with limits"); + PFParameterAssert(subquery.state.skip == 0, @"OR queries do not support sub queries with skip"); + PFParameterAssert(subquery.state.sortKeys.count == 0, @"OR queries do not support sub queries with order"); + PFParameterAssert(subquery.state.includedKeys.count == 0, @"OR queries do not support sub-queries with includes"); + PFParameterAssert(subquery.state.selectedKeys == nil, @"OR queries do not support sub-queries with selectKeys"); + + NSDictionary *queryDict = [self findCommandParametersWithOrder:subquery.state.sortOrderString + conditions:subquery.state.conditions + selectedKeys:subquery.state.selectedKeys + includedKeys:subquery.state.includedKeys + limit:subquery.state.limit + skip:subquery.state.skip + extraOptions:nil + tracingEnabled:NO]; + + queryDict = queryDict[@"where"]; + if ([queryDict count] > 0) { + [newArray addObject:queryDict]; + } else { + [newArray addObject:[NSDictionary dictionary]]; + } + } + whereData[key] = newArray; + } else { + id object = [self _encodeSubqueryIfNeeded:obj]; + whereData[key] = [[PFPointerObjectEncoder objectEncoder] encodeObject:object]; + } + }]; + + parameters[@"where"] = whereData; + } + + return parameters; +} + ++ (id)_encodeSubqueryIfNeeded:(id)object { + if (![object isKindOfClass:[NSDictionary class]]) { + return object; + } + + NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithCapacity:[object count]]; + [object enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + if ([obj isKindOfClass:[PFQuery class]]) { + PFQuery *subquery = (PFQuery *)obj; + NSMutableDictionary *subqueryParameters = [[self findCommandParametersWithOrder:subquery.state.sortOrderString + conditions:subquery.state.conditions + selectedKeys:subquery.state.selectedKeys + includedKeys:subquery.state.includedKeys + limit:subquery.state.limit + skip:subquery.state.skip + extraOptions:subquery.state.extraOptions + tracingEnabled:NO] mutableCopy]; + subqueryParameters[@"className"] = subquery.parseClassName; + obj = subqueryParameters; + } else if ([obj isKindOfClass:[NSDictionary class]]) { + obj = [self _encodeSubqueryIfNeeded:obj]; + } + + parameters[key] = obj; + }]; + return parameters; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTSessionCommand.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTSessionCommand.h new file mode 100644 index 0000000..d777b04 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTSessionCommand.h @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTCommand.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFRESTSessionCommand : PFRESTCommand + ++ (instancetype)getCurrentSessionCommandWithSessionToken:(nullable NSString *)sessionToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTSessionCommand.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTSessionCommand.m new file mode 100644 index 0000000..c38bd1c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTSessionCommand.m @@ -0,0 +1,23 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTSessionCommand.h" + +#import "PFHTTPRequest.h" + +@implementation PFRESTSessionCommand + ++ (instancetype)getCurrentSessionCommandWithSessionToken:(nullable NSString *)sessionToken { + return [self commandWithHTTPPath:@"sessions/me" + httpMethod:PFHTTPRequestMethodGET + parameters:nil + sessionToken:sessionToken]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTUserCommand.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTUserCommand.h new file mode 100644 index 0000000..93c81db --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTUserCommand.h @@ -0,0 +1,56 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTCommand.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFRESTUserCommand : PFRESTCommand + +@property (nonatomic, assign, readonly) BOOL revocableSessionEnabled; + +///-------------------------------------- +/// @name Log In +///-------------------------------------- + ++ (instancetype)logInUserCommandWithUsername:(NSString *)username + password:(NSString *)password + revocableSession:(BOOL)revocableSessionEnabled; ++ (instancetype)serviceLoginUserCommandWithAuthenticationType:(NSString *)authenticationType + authenticationData:(NSDictionary *)authenticationData + revocableSession:(BOOL)revocableSessionEnabled; ++ (instancetype)serviceLoginUserCommandWithParameters:(NSDictionary *)parameters + revocableSession:(BOOL)revocableSessionEnabled + sessionToken:(nullable NSString *)sessionToken; + +///-------------------------------------- +/// @name Sign Up +///-------------------------------------- + ++ (instancetype)signUpUserCommandWithParameters:(NSDictionary *)parameters + revocableSession:(BOOL)revocableSessionEnabled + sessionToken:(nullable NSString *)sessionToken; + +///-------------------------------------- +/// @name Current User +///-------------------------------------- + ++ (instancetype)getCurrentUserCommandWithSessionToken:(NSString *)sessionToken; ++ (instancetype)upgradeToRevocableSessionCommandWithSessionToken:(NSString *)sessionToken; ++ (instancetype)logOutUserCommandWithSessionToken:(NSString *)sessionToken; + +///-------------------------------------- +/// @name Password Rest +///-------------------------------------- + ++ (instancetype)resetPasswordCommandForUserWithEmail:(NSString *)email; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTUserCommand.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTUserCommand.m new file mode 100644 index 0000000..190a5d5 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Commands/PFRESTUserCommand.m @@ -0,0 +1,132 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRESTUserCommand.h" + +#import "PFAssert.h" +#import "PFHTTPRequest.h" + +static NSString *const PFRESTUserCommandRevocableSessionHeader = @"X-Parse-Revocable-Session"; +static NSString *const PFRESTUserCommandRevocableSessionHeaderEnabledValue = @"1"; + +@interface PFRESTUserCommand () + +@property (nonatomic, assign, readwrite) BOOL revocableSessionEnabled; + +@end + +@implementation PFRESTUserCommand + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + ++ (instancetype)_commandWithHTTPPath:(NSString *)path + httpMethod:(NSString *)httpMethod + parameters:(NSDictionary *)parameters + sessionToken:(NSString *)sessionToken + revocableSession:(BOOL)revocableSessionEnabled { + PFRESTUserCommand *command = [self commandWithHTTPPath:path + httpMethod:httpMethod + parameters:parameters + sessionToken:sessionToken]; + if (revocableSessionEnabled) { + command.additionalRequestHeaders = @{ PFRESTUserCommandRevocableSessionHeader : + PFRESTUserCommandRevocableSessionHeaderEnabledValue}; + } + command.revocableSessionEnabled = revocableSessionEnabled; + return command; +} + +///-------------------------------------- +#pragma mark - Log In +///-------------------------------------- + ++ (instancetype)logInUserCommandWithUsername:(NSString *)username + password:(NSString *)password + revocableSession:(BOOL)revocableSessionEnabled { + NSDictionary *parameters = @{ @"username" : username, + @"password" : password }; + return [self _commandWithHTTPPath:@"login" + httpMethod:PFHTTPRequestMethodGET + parameters:parameters + sessionToken:nil + revocableSession:revocableSessionEnabled]; +} + ++ (instancetype)serviceLoginUserCommandWithAuthenticationType:(NSString *)authenticationType + authenticationData:(NSDictionary *)authenticationData + revocableSession:(BOOL)revocableSessionEnabled { + NSDictionary *parameters = @{ @"authData" : @{ authenticationType : authenticationData } }; + return [self serviceLoginUserCommandWithParameters:parameters + revocableSession:revocableSessionEnabled + sessionToken:nil]; +} + ++ (instancetype)serviceLoginUserCommandWithParameters:(NSDictionary *)parameters + revocableSession:(BOOL)revocableSessionEnabled + sessionToken:(NSString *)sessionToken { + return [self _commandWithHTTPPath:@"users" + httpMethod:PFHTTPRequestMethodPOST + parameters:parameters + sessionToken:sessionToken + revocableSession:revocableSessionEnabled]; +} + +///-------------------------------------- +#pragma mark - Sign Up +///-------------------------------------- + ++ (instancetype)signUpUserCommandWithParameters:(NSDictionary *)parameters + revocableSession:(BOOL)revocableSessionEnabled + sessionToken:(NSString *)sessionToken { + return [self _commandWithHTTPPath:@"users" + httpMethod:PFHTTPRequestMethodPOST + parameters:parameters + sessionToken:sessionToken + revocableSession:revocableSessionEnabled]; +} + +///-------------------------------------- +#pragma mark - Current User +///-------------------------------------- + ++ (instancetype)getCurrentUserCommandWithSessionToken:(NSString *)sessionToken { + return [self commandWithHTTPPath:@"users/me" + httpMethod:PFHTTPRequestMethodGET + parameters:nil + sessionToken:sessionToken]; +} + ++ (instancetype)upgradeToRevocableSessionCommandWithSessionToken:(NSString *)sessionToken { + return [self commandWithHTTPPath:@"upgradeToRevocableSession" + httpMethod:PFHTTPRequestMethodPOST + parameters:nil + sessionToken:sessionToken]; +} + ++ (instancetype)logOutUserCommandWithSessionToken:(NSString *)sessionToken { + return [self commandWithHTTPPath:@"logout" + httpMethod:PFHTTPRequestMethodPOST + parameters:nil + sessionToken:sessionToken]; +} + +///-------------------------------------- +#pragma mark - Additional User Commands +///-------------------------------------- + ++ (instancetype)resetPasswordCommandForUserWithEmail:(NSString *)email { + return [self commandWithHTTPPath:@"requestPasswordReset" + httpMethod:PFHTTPRequestMethodPOST + parameters:@{ @"email" : email } + sessionToken:nil]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFConfigController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFConfigController.h new file mode 100644 index 0000000..1333849 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFConfigController.h @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFConfig; +@class PFCurrentConfigController; +@class PFFileManager; +@protocol PFCommandRunning; + +@interface PFConfigController : NSObject + +@property (nonatomic, strong, readonly) PFFileManager *fileManager; +@property (nonatomic, strong, readonly) id commandRunner; + +@property (nonatomic, strong, readonly) PFCurrentConfigController *currentConfigController; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithFileManager:(PFFileManager *)fileManager + commandRunner:(id)commandRunner NS_DESIGNATED_INITIALIZER; + +///-------------------------------------- +/// @name Fetch +///-------------------------------------- + +/*! + Fetches current config from network async. + + @param sessionToken Current user session token. + + @returns `BFTask` with result set to `PFConfig`. + */ +- (BFTask *)fetchConfigAsyncWithSessionToken:(NSString *)sessionToken; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFConfigController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFConfigController.m new file mode 100644 index 0000000..ec26b5b --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFConfigController.m @@ -0,0 +1,95 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFConfigController.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFCommandRunning.h" +#import "PFConfig_Private.h" +#import "PFCurrentConfigController.h" +#import "PFDecoder.h" +#import "PFRESTConfigCommand.h" + +@interface PFConfigController () +{ + dispatch_queue_t _dataAccessQueue; + dispatch_queue_t _networkQueue; + BFExecutor *_networkExecutor; +} + +@end + +@implementation PFConfigController + +@synthesize currentConfigController = _currentConfigController; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithFileManager:(PFFileManager *)fileManager + commandRunner:(id)commandRunner { + self = [super init]; + if (!self) return nil; + + _fileManager = fileManager; + _commandRunner = commandRunner; + + _dataAccessQueue = dispatch_queue_create("com.parse.config.access", DISPATCH_QUEUE_SERIAL); + + _networkQueue = dispatch_queue_create("com.parse.config.network", DISPATCH_QUEUE_SERIAL); + _networkExecutor = [BFExecutor executorWithDispatchQueue:_networkQueue]; + + return self; +} + +///-------------------------------------- +#pragma mark - Fetch +///-------------------------------------- + +- (BFTask *)fetchConfigAsyncWithSessionToken:(NSString *)sessionToken { + @weakify(self); + return [BFTask taskFromExecutor:_networkExecutor withBlock:^id{ + @strongify(self); + PFRESTCommand *command = [PFRESTConfigCommand configFetchCommandWithSessionToken:sessionToken]; + return [[[self.commandRunner runCommandAsync:command + withOptions:PFCommandRunningOptionRetryIfFailed] + continueWithSuccessBlock:^id(BFTask *task) { + PFCommandResult *result = task.result; + NSDictionary *fetchedConfig = [[PFDecoder objectDecoder] decodeObject:result.result]; + return [[PFConfig alloc] initWithFetchedConfig:fetchedConfig]; + }] continueWithSuccessBlock:^id(BFTask *task) { + // Roll-forward the config. + return [[self.currentConfigController setCurrentConfigAsync:task.result] continueWithResult:task.result]; + }]; + }]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (PFCurrentConfigController *)currentConfigController { + __block PFCurrentConfigController *controller = nil; + dispatch_sync(_dataAccessQueue, ^{ + if (!_currentConfigController) { + _currentConfigController = [[PFCurrentConfigController alloc] initWithFileManager:self.fileManager]; + } + controller = _currentConfigController; + }); + return controller; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFCurrentConfigController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFCurrentConfigController.h new file mode 100644 index 0000000..0c947c8 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFCurrentConfigController.h @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFMacros.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFConfig; +@class PFFileManager; + +@interface PFCurrentConfigController : NSObject + +@property (nonatomic, strong, readonly) PFFileManager *fileManager; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithFileManager:(PFFileManager *)fileManager NS_DESIGNATED_INITIALIZER; + ++ (instancetype)controllerWithFileManager:(PFFileManager *)fileManager; + +///-------------------------------------- +/// @name Accessors +///-------------------------------------- + +- (BFTask *)getCurrentConfigAsync; +- (BFTask *)setCurrentConfigAsync:(PFConfig *)config; + +- (BFTask *)clearCurrentConfigAsync; +- (BFTask *)clearMemoryCachedCurrentConfigAsync; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFCurrentConfigController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFCurrentConfigController.m new file mode 100644 index 0000000..1378520 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/Controller/PFCurrentConfigController.m @@ -0,0 +1,109 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFCurrentConfigController.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFConfig_Private.h" +#import "PFDecoder.h" +#import "PFFileManager.h" +#import "PFJSONSerialization.h" + +static NSString *const PFConfigCurrentConfigFileName_ = @"config"; + +@interface PFCurrentConfigController () { + dispatch_queue_t _dataQueue; + BFExecutor *_dataExecutor; + PFConfig *_currentConfig; +} + +@property (nonatomic, copy, readonly) NSString *configFilePath; + +@end + +@implementation PFCurrentConfigController + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithFileManager:(PFFileManager *)fileManager { + self = [super init]; + if (!self) return nil; + + _dataQueue = dispatch_queue_create("com.parse.config.current", DISPATCH_QUEUE_SERIAL); + _dataExecutor = [BFExecutor executorWithDispatchQueue:_dataQueue]; + + _fileManager = fileManager; + + return self; +} + ++ (instancetype)controllerWithFileManager:(PFFileManager *)fileManager { + return [[self alloc] initWithFileManager:fileManager]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (BFTask *)getCurrentConfigAsync { + return [BFTask taskFromExecutor:_dataExecutor withBlock:^id{ + if (!_currentConfig) { + NSDictionary *dictionary = [PFJSONSerialization JSONObjectFromFileAtPath:self.configFilePath]; + if (dictionary) { + NSDictionary *decodedDictionary = [[PFDecoder objectDecoder] decodeObject:dictionary]; + _currentConfig = [[PFConfig alloc] initWithFetchedConfig:decodedDictionary]; + } else { + _currentConfig = [[PFConfig alloc] init]; + } + } + return _currentConfig; + }]; +} + +- (BFTask *)setCurrentConfigAsync:(PFConfig *)config { + @weakify(self); + return [BFTask taskFromExecutor:_dataExecutor withBlock:^id{ + @strongify(self); + _currentConfig = config; + + NSDictionary *configParameters = @{ PFConfigParametersRESTKey : (config.parametersDictionary ?: @{}) }; + id encodedObject = [[PFPointerObjectEncoder objectEncoder] encodeObject:configParameters]; + NSData *jsonData = [PFJSONSerialization dataFromJSONObject:encodedObject]; + return [PFFileManager writeDataAsync:jsonData toFile:self.configFilePath]; + }]; +} + +- (BFTask *)clearCurrentConfigAsync { + @weakify(self); + return [BFTask taskFromExecutor:_dataExecutor withBlock:^id{ + @strongify(self); + _currentConfig = nil; + return [PFFileManager removeItemAtPathAsync:self.configFilePath]; + }]; +} + +- (BFTask *)clearMemoryCachedCurrentConfigAsync { + return [BFTask taskFromExecutor:_dataExecutor withBlock:^id{ + _currentConfig = nil; + return nil; + }]; +} + +- (NSString *)configFilePath { + return [self.fileManager parseDataItemPathForPathComponent:PFConfigCurrentConfigFileName_]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/PFConfig_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/PFConfig_Private.h new file mode 100644 index 0000000..8ea452f --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Config/PFConfig_Private.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +extern NSString *const PFConfigParametersRESTKey; + +@interface PFConfig (Private) + +@property (atomic, copy, readonly) NSDictionary *parametersDictionary; + +- (instancetype)initWithFetchedConfig:(NSDictionary *)config; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperation.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperation.h new file mode 100644 index 0000000..519353d --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperation.h @@ -0,0 +1,168 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFEncoder.h" + +@class PFDecoder; +@class PFObject; + +///-------------------------------------- +#pragma mark - PFFieldOperation +///-------------------------------------- + +/*! + A PFFieldOperation represents a modification to a value in a PFObject. + For example, setting, deleting, or incrementing a value are all different + kinds of PFFieldOperations. PFFieldOperations themselves can be considered + to be immutable. + */ +@interface PFFieldOperation : NSObject + +/*! + Converts the PFFieldOperation to a data structure (typically an NSDictionary) + that can be converted to JSON and sent to Parse as part of a save operation. + + @param objectEncoder encoder that will be used to encode the object. + @returns An object to be jsonified. + */ +- (id)encodeWithObjectEncoder:(PFEncoder *)objectEncoder; + +/*! + Returns a field operation that is composed of a previous operation followed by + this operation. This will not mutate either operation. However, it may return + self if the current operation is not affected by previous changes. For example: + [{increment by 2} mergeWithPrevious:{set to 5}] -> {set to 7} + [{set to 5} mergeWithPrevious:{increment by 2}] -> {set to 5} + [{add "foo"} mergeWithPrevious:{delete}] -> {set to ["foo"]} + [{delete} mergeWithPrevious:{add "foo"}] -> {delete} + + @param previous The most recent operation on the field, or nil if none. + @returns A new PFFieldOperation or self. + */ +- (PFFieldOperation *)mergeWithPrevious:(PFFieldOperation *)previous; + +/*! + Returns a new estimated value based on a previous value and this operation. This + value is not intended to be sent to Parse, but it used locally on the client to + inspect the most likely current value for a field. + + The key and object are used solely for PFRelation to be able to construct objects + that refer back to its parent. + + @param oldValue The previous value for the field. + @param key The key that this value is for. + + @returns The new value for the field. + */ +- (id)applyToValue:(id)oldValue forKey:(NSString *)key; + +@end + +///-------------------------------------- +#pragma mark - Independent Operations +///-------------------------------------- + +/*! + An operation where a field is set to a given value regardless of + its previous value. + */ +@interface PFSetOperation : PFFieldOperation + +@property (nonatomic, strong, readonly) id value; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithValue:(id)value NS_DESIGNATED_INITIALIZER; ++ (instancetype)setWithValue:(id)value; + +@end + +/*! + An operation where a field is deleted from the object. + */ +@interface PFDeleteOperation : PFFieldOperation + ++ (instancetype)operation; + +@end + +///-------------------------------------- +#pragma mark - Numeric Operations +///-------------------------------------- + +/*! + An operation that increases a numeric field's value by a given amount. + */ +@interface PFIncrementOperation : PFFieldOperation + +@property (nonatomic, strong, readonly) NSNumber *amount; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithAmount:(NSNumber *)amount NS_DESIGNATED_INITIALIZER; ++ (instancetype)incrementWithAmount:(NSNumber *)amount; + +@end + +///-------------------------------------- +#pragma mark - Array Operations +///-------------------------------------- + +/*! + An operation that adds a new element to an array field. + */ +@interface PFAddOperation : PFFieldOperation + +@property (nonatomic, strong, readonly) NSArray *objects; + ++ (instancetype)addWithObjects:(NSArray *)array; + +@end + +/*! + An operation that adds a new element to an array field, + only if it wasn't already present. + */ +@interface PFAddUniqueOperation : PFFieldOperation + +@property (nonatomic, strong, readonly) NSArray *objects; + ++ (instancetype)addUniqueWithObjects:(NSArray *)array; + +@end + +/*! + An operation that removes every instance of an element from + an array field. + */ +@interface PFRemoveOperation : PFFieldOperation + +@property (nonatomic, strong, readonly) NSArray *objects; + ++ (instancetype)removeWithObjects:(NSArray *)array; + +@end + +///-------------------------------------- +#pragma mark - Relation Operations +///-------------------------------------- + +/*! + An operation where a PFRelation's value is modified. + */ +@interface PFRelationOperation : PFFieldOperation + +@property (nonatomic, copy) NSString *targetClass; +@property (nonatomic, strong) NSMutableSet *relationsToAdd; +@property (nonatomic, strong) NSMutableSet *relationsToRemove; + ++ (instancetype)addRelationToObjects:(NSArray *)targets; ++ (instancetype)removeRelationToObjects:(NSArray *)targets; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperation.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperation.m new file mode 100644 index 0000000..780347f --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperation.m @@ -0,0 +1,552 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFFieldOperation.h" + +#import "PFAssert.h" +#import "PFDecoder.h" +#import "PFInternalUtils.h" +#import "PFObject.h" +#import "PFOfflineStore.h" +#import "PFRelation.h" +#import "PFRelationPrivate.h" + +///-------------------------------------- +#pragma mark - PFFieldOperation +///-------------------------------------- + +// PFFieldOperation and its subclasses encapsulate operations that can be done on a field. +@implementation PFFieldOperation + +- (id)encodeWithObjectEncoder:(PFEncoder *)objectEncoder { + PFConsistencyAssert(NO, @"Operation is invalid."); + return nil; +} + +- (PFFieldOperation *)mergeWithPrevious:(PFFieldOperation *)previous { + PFConsistencyAssert(NO, @"Operation is invalid."); + return nil; +} + +- (id)applyToValue:(id)oldValue forKey:(NSString *)key { + PFConsistencyAssert(NO, @"Operation is invalid."); + return nil; +} + +@end + +///-------------------------------------- +#pragma mark - Independent Operations +///-------------------------------------- + +@implementation PFSetOperation + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithValue:(id)value { + self = [super init]; + if (!self) return nil; + + PFParameterAssert(value, @"Cannot set a nil value in a PFObject."); + _value = value; + + return self; +} + ++ (id)setWithValue:(id)newValue { + return [[self alloc] initWithValue:newValue]; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"set to %@", self.value]; +} + +- (id)encodeWithObjectEncoder:(PFEncoder *)objectEncoder { + return [objectEncoder encodeObject:self.value]; +} + +- (PFSetOperation *)mergeWithPrevious:(PFFieldOperation *)previous { + return self; +} + +- (id)applyToValue:(id)oldValue forKey:(NSString *)key { + return self.value; +} + +@end + +@implementation PFDeleteOperation + ++ (instancetype)operation { + return [[self alloc] init]; +} + +- (NSString *)description { + return @"delete"; +} + +- (id)encodeWithObjectEncoder:(PFEncoder *)objectEncoder { + return @{ @"__op" : @"Delete" }; +} + +- (PFFieldOperation *)mergeWithPrevious:(PFFieldOperation *)previous { + return self; +} + +- (id)applyToValue:(id)oldValue forKey:(NSString *)key { + return nil; +} + +@end + +///-------------------------------------- +#pragma mark - Numeric Operations +///-------------------------------------- + +@implementation PFIncrementOperation + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithAmount:(NSNumber *)amount { + self = [super init]; + if (!self) return nil; + + _amount = amount; + + return self; +} + ++ (instancetype)incrementWithAmount:(NSNumber *)newAmount { + return [[self alloc] initWithAmount:newAmount]; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"increment by %@", self.amount]; +} + +- (id)encodeWithObjectEncoder:(PFEncoder *)objectEncoder { + return @{ @"__op" : @"Increment", + @"amount" : self.amount }; +} + +- (PFFieldOperation *)mergeWithPrevious:(PFFieldOperation *)previous { + if (!previous) { + return self; + } else if ([previous isKindOfClass:[PFDeleteOperation class]]) { + return [PFSetOperation setWithValue:self.amount]; + } else if ([previous isKindOfClass:[PFSetOperation class]]) { + id oldValue = ((PFSetOperation *)previous).value; + PFParameterAssert([oldValue isKindOfClass:[NSNumber class]], @"You cannot increment a non-number."); + return [PFSetOperation setWithValue:[PFInternalUtils addNumber:self.amount withNumber:oldValue]]; + } else if ([previous isKindOfClass:[PFIncrementOperation class]]) { + NSNumber *newAmount = [PFInternalUtils addNumber:self.amount + withNumber:((PFIncrementOperation *)previous).amount]; + return [PFIncrementOperation incrementWithAmount:newAmount]; + } + [NSException raise:NSInternalInconsistencyException format:@"Operation is invalid after previous operation."]; + return nil; +} + +- (id)applyToValue:(id)oldValue forKey:(NSString *)key { + if (!oldValue) { + return self.amount; + } + + PFParameterAssert([oldValue isKindOfClass:[NSNumber class]], @"You cannot increment a non-number."); + return [PFInternalUtils addNumber:self.amount withNumber:oldValue]; +} + +@end + +///-------------------------------------- +#pragma mark - Array Operations +///-------------------------------------- + +@implementation PFAddOperation + +- (instancetype)initWithObjects:(NSArray *)array { + self = [super init]; + if (!self) return nil; + + _objects = array; + + return self; +} + ++ (instancetype)addWithObjects:(NSArray *)objects { + return [(PFAddOperation *)[self alloc] initWithObjects:objects]; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"add %@", self.objects]; +} + +- (id)encodeWithObjectEncoder:(PFEncoder *)objectEncoder { + NSMutableArray *encodedObjects = [objectEncoder encodeObject:self.objects]; + return @{ @"__op" : @"Add", + @"objects" : encodedObjects }; +} + +- (PFFieldOperation *)mergeWithPrevious:(PFFieldOperation *)previous { + if (!previous) { + return self; + } else if ([previous isKindOfClass:[PFDeleteOperation class]]) { + return [PFSetOperation setWithValue:self.objects]; + } else if ([previous isKindOfClass:[PFSetOperation class]]) { + if ([((PFSetOperation *)previous).value isKindOfClass:[NSArray class]]) { + NSArray *oldArray = (NSArray *)(((PFSetOperation *)previous).value); + NSArray *newArray = [oldArray arrayByAddingObjectsFromArray:self.objects]; + return [PFSetOperation setWithValue:newArray]; + } else { + [NSException raise:NSInternalInconsistencyException format:@"You can't add an item to a non-array."]; + return nil; + } + } else if ([previous isKindOfClass:[PFAddOperation class]]) { + NSMutableArray *newObjects = [((PFAddOperation *)previous).objects mutableCopy]; + [newObjects addObjectsFromArray:self.objects]; + return [[self class] addWithObjects:newObjects]; + } + [NSException raise:NSInternalInconsistencyException format:@"Operation is invalid after previous operation."]; + return nil; +} + +- (id)applyToValue:(id)oldValue forKey:(NSString *)key { + if (!oldValue) { + return [self.objects mutableCopy]; + } else if ([oldValue isKindOfClass:[NSArray class]]) { + return [((NSArray *)oldValue)arrayByAddingObjectsFromArray:self.objects]; + } + [NSException raise:NSInternalInconsistencyException format:@"Operation is invalid after previous operation."]; + return nil; +} + +@end + +@implementation PFAddUniqueOperation + +- (instancetype)initWithObjects:(NSArray *)array { + self = [super init]; + if (!self) return nil; + + _objects = [[NSSet setWithArray:array] allObjects]; + + return self; +} + ++ (instancetype)addUniqueWithObjects:(NSArray *)objects { + return [(PFAddUniqueOperation *)[self alloc] initWithObjects:objects]; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"addToSet %@", self.objects]; +} + +- (id)encodeWithObjectEncoder:(PFEncoder *)objectEncoder { + NSMutableArray *encodedObjects = [objectEncoder encodeObject:self.objects]; + return @{ @"__op" : @"AddUnique", + @"objects" : encodedObjects }; +} + +- (PFFieldOperation *)mergeWithPrevious:(PFFieldOperation *)previous { + if (!previous) { + return self; + } else if ([previous isKindOfClass:[PFDeleteOperation class]]) { + return [PFSetOperation setWithValue:self.objects]; + } else if ([previous isKindOfClass:[PFSetOperation class]]) { + if ([((PFSetOperation *)previous).value isKindOfClass:[NSArray class]]) { + NSArray *oldArray = (((PFSetOperation *)previous).value); + return [PFSetOperation setWithValue:[self applyToValue:oldArray forKey:nil]]; + } else { + [NSException raise:NSInternalInconsistencyException format:@"You can't add an item to a non-array."]; + return nil; + } + } else if ([previous isKindOfClass:[PFAddUniqueOperation class]]) { + NSArray *previousObjects = ((PFAddUniqueOperation *)previous).objects; + return [[self class] addUniqueWithObjects:[self applyToValue:previousObjects forKey:nil]]; + } + [NSException raise:NSInternalInconsistencyException format:@"Operation is invalid after previous operation."]; + return nil; +} + +- (id)applyToValue:(id)oldValue forKey:(NSString *)key { + if (!oldValue) { + return [self.objects mutableCopy]; + } else if ([oldValue isKindOfClass:[NSArray class]]) { + NSMutableArray *newValue = [oldValue mutableCopy]; + for (id objectToAdd in self.objects) { + if ([objectToAdd isKindOfClass:[PFObject class]] && [objectToAdd objectId]) { + // Check uniqueness by objectId instead of equality. If the PFObject + // already exists in the array, replace it with the newer one. + NSUInteger index = [newValue indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { + return [obj isKindOfClass:[PFObject class]] && + [[obj objectId] isEqualToString:[objectToAdd objectId]]; + }]; + if (index == NSNotFound) { + [newValue addObject:objectToAdd]; + } else { + [newValue replaceObjectAtIndex:index withObject:objectToAdd]; + } + } else if (![newValue containsObject:objectToAdd]) { + [newValue addObject:objectToAdd]; + } + } + return newValue; + } + [NSException raise:NSInternalInconsistencyException format:@"Operation is invalid after previous operation."]; + return nil; +} + +@end + +@implementation PFRemoveOperation + +- (instancetype)initWithObjects:(NSArray *)array { + self = [super init]; + + _objects = array; + + return self; +} + ++ (id)removeWithObjects:(NSArray *)objects { + return [(PFRemoveOperation *)[self alloc] initWithObjects:objects]; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"remove %@", self.objects]; +} + +- (id)encodeWithObjectEncoder:(PFEncoder *)objectEncoder { + NSMutableArray *encodedObjects = [objectEncoder encodeObject:self.objects]; + return @{ @"__op" : @"Remove", + @"objects" : encodedObjects }; +} + +- (PFFieldOperation *)mergeWithPrevious:(PFFieldOperation *)previous { + if (!previous) { + return self; + } else if ([previous isKindOfClass:[PFDeleteOperation class]]) { + [NSException raise:NSInternalInconsistencyException format:@"You can't remove items from a deleted array."]; + return nil; + } else if ([previous isKindOfClass:[PFSetOperation class]]) { + if ([((PFSetOperation *)previous).value isKindOfClass:[NSArray class]]) { + NSArray *oldArray = ((PFSetOperation *)previous).value; + return [PFSetOperation setWithValue:[self applyToValue:oldArray forKey:nil]]; + } else { + [NSException raise:NSInternalInconsistencyException format:@"You can't add an item to a non-array."]; + return nil; + } + } else if ([previous isKindOfClass:[PFRemoveOperation class]]) { + NSArray *newObjects = [((PFRemoveOperation *)previous).objects arrayByAddingObjectsFromArray:self.objects]; + return [PFRemoveOperation removeWithObjects:newObjects]; + } + + [NSException raise:NSInternalInconsistencyException format:@"Operation is invalid after previous operation."]; + return nil; +} + +- (id)applyToValue:(id)oldValue forKey:(NSString *)key { + if (!oldValue) { + return [self.objects mutableCopy]; + } else if ([oldValue isKindOfClass:[NSArray class]]) { + NSMutableArray *newValue = [((NSArray *)oldValue)mutableCopy]; + [newValue removeObjectsInArray:self.objects]; + + // Remove the removed objects from objectsToBeRemoved -- the items + // remaining should be ones that weren't removed by object equality. + NSMutableArray *objectsToBeRemoved = [self.objects mutableCopy]; + [objectsToBeRemoved removeObjectsInArray:newValue]; + for (id objectToRemove in objectsToBeRemoved) { + if ([objectToRemove isKindOfClass:[PFObject class]] && [objectToRemove objectId]) { + NSIndexSet *indexes = [newValue indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { + return ([obj isKindOfClass:[PFObject class]] && + [[obj objectId] isEqualToString:[objectToRemove objectId]]); + }]; + if ([indexes count] != 0) { + [newValue removeObjectsAtIndexes:indexes]; + } + } + } + return newValue; + } + [NSException raise:NSInternalInconsistencyException format:@"Operation is invalid after previous operation."]; + return nil; +} + +@end + +///-------------------------------------- +#pragma mark - Relation Operations +///-------------------------------------- + +@implementation PFRelationOperation +@synthesize targetClass; + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _relationsToAdd = [NSMutableSet set]; + _relationsToRemove = [NSMutableSet set]; + + return self; +} + ++ (instancetype)addRelationToObjects:(NSArray *)targets { + PFRelationOperation *op = [[self alloc] init]; + if (targets.count > 0) { + op.targetClass = [[targets firstObject] parseClassName]; + } + + for (PFObject *target in targets) { + PFParameterAssert([target.parseClassName isEqualToString:op.targetClass], + @"All objects in a relation must be of the same class."); + [op.relationsToAdd addObject:target]; + } + + return op; +} + ++ (instancetype)removeRelationToObjects:(NSArray *)targets { + PFRelationOperation *operation = [[self alloc] init]; + if (targets.count > 0) { + operation.targetClass = [[targets objectAtIndex:0] parseClassName]; + } + + for (PFObject *target in targets) { + PFParameterAssert([target.parseClassName isEqualToString:operation.targetClass], + @"All objects in a relation must be of the same class."); + [operation.relationsToRemove addObject:target]; + } + + return operation; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"PFRelationOperation<%@> add:%@ remove:%@", + self.targetClass, + self.relationsToAdd, + self.relationsToRemove]; +} + +- (NSArray *)_convertToArrayInSet:(NSSet *)set withObjectEncoder:(PFEncoder *)objectEncoder { + NSMutableArray *array = [NSMutableArray arrayWithCapacity:set.count]; + for (PFObject *object in set) { + id encodedDict = [objectEncoder encodeObject:object]; + [array addObject:encodedDict]; + } + return array; +} + +- (id)encodeWithObjectEncoder:(PFEncoder *)objectEncoder { + NSDictionary *addDict = nil; + NSDictionary *removeDict = nil; + if (self.relationsToAdd.count > 0) { + NSArray *array = [self _convertToArrayInSet:self.relationsToAdd withObjectEncoder:objectEncoder]; + addDict = @{ @"__op" : @"AddRelation", + @"objects" : array }; + } + if (self.relationsToRemove.count > 0) { + NSArray *array = [self _convertToArrayInSet:self.relationsToRemove withObjectEncoder:objectEncoder]; + removeDict = @{ @"__op" : @"RemoveRelation", + @"objects" : array }; + } + + if (addDict && removeDict) { + return @{ @"__op" : @"Batch", + @"ops" : @[ addDict, removeDict ] }; + } + + if (addDict) { + return addDict; + } + + if (removeDict) { + return removeDict; + } + + [NSException raise:NSInternalInconsistencyException format:@"A PFRelationOperation was created without any data."]; + return nil; +} + +- (PFFieldOperation *)mergeWithPrevious:(PFFieldOperation *)previous { + if (!previous) { + return self; + } + + PFConsistencyAssert(![previous isKindOfClass:[PFDeleteOperation class]], @"You can't modify a relation after deleting it"); + PFConsistencyAssert([previous isKindOfClass:[PFRelationOperation class]], @"Operation is invalid after previous operation"); + + PFRelationOperation *previousOperation = (PFRelationOperation *)previous; + + PFParameterAssert(!previousOperation.targetClass || [previousOperation.targetClass isEqualToString:self.targetClass], + @"Related object object must be of class %@, but %@ was passed in", + previousOperation.targetClass, self.targetClass); + + //TODO: (nlutsenko) This logic seems to be messed up. We should return a new operation here, also merging logic seems funky. + NSSet *newRelationsToAdd = [self.relationsToAdd copy]; + NSSet *newRelationsToRemove = [self.relationsToRemove copy]; + [self.relationsToAdd removeAllObjects]; + [self.relationsToRemove removeAllObjects]; + + for (NSString *objectId in previousOperation.relationsToAdd) { + [self.relationsToRemove removeObject:objectId]; + [self.relationsToAdd addObject:objectId]; + } + for (NSString *objectId in previousOperation.relationsToRemove) { + [self.relationsToRemove removeObject:objectId]; + [self.relationsToRemove addObject:objectId]; + } + + for (NSString *objectId in newRelationsToAdd) { + [self.relationsToRemove removeObject:objectId]; + [self.relationsToAdd addObject:objectId]; + } + for (NSString *objectId in newRelationsToRemove) { + [self.relationsToRemove removeObject:objectId]; + [self.relationsToRemove addObject:objectId]; + } + return self; +} + +- (id)applyToValue:(id)oldValue forKey:(NSString *)key { + PFRelation *relation = nil; + if (!oldValue) { + relation = [PFRelation relationWithTargetClass:self.targetClass]; + } else if ([oldValue isKindOfClass:[PFRelation class]]) { + relation = oldValue; + if (self.targetClass) { + if (relation.targetClass) { + PFParameterAssert([relation.targetClass isEqualToString:targetClass], + @"Related object object must be of class %@, but %@ was passed in", + relation.targetClass, self.targetClass); + } else { + relation.targetClass = self.targetClass; + } + } + } else { + [NSException raise:NSInternalInconsistencyException format:@"Operation is invalid after previous operation."]; + return nil; + } + + for (PFObject *object in self.relationsToAdd) { + [relation _addKnownObject:object]; + } + for (PFObject *object in self.relationsToRemove) { + [relation _removeKnownObject:object]; + } + + return relation; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperationDecoder.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperationDecoder.h new file mode 100644 index 0000000..831418a --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperationDecoder.h @@ -0,0 +1,39 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@class PFDecoder; +@class PFFieldOperation; + +NS_ASSUME_NONNULL_BEGIN + +@interface PFFieldOperationDecoder : NSObject + +///-------------------------------------- +/// @name Init +///-------------------------------------- + ++ (instancetype)defaultDecoder; + +///-------------------------------------- +/// @name Decoding +///-------------------------------------- + +/*! + Converts a parsed JSON object into a PFFieldOperation. + + @param encoded An NSDictionary containing an __op field. + @returns An NSObject that conforms to PFFieldOperation. + */ +- (PFFieldOperation *)decode:(NSDictionary *)encoded withDecoder:(PFDecoder *)decoder; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperationDecoder.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperationDecoder.m new file mode 100644 index 0000000..1c5a303 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/FieldOperation/PFFieldOperationDecoder.m @@ -0,0 +1,126 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFFieldOperationDecoder.h" + +#import "PFAssert.h" +#import "PFDecoder.h" +#import "PFFieldOperation.h" + +@interface PFFieldOperationDecoder () { + NSMutableDictionary *_operationDecoders; +} + +@end + +typedef PFFieldOperation * (^PFFieldOperationDecodingBlock_)(NSDictionary *encoded, PFDecoder *decoder); + +@implementation PFFieldOperationDecoder + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _operationDecoders = [NSMutableDictionary dictionary]; + [self _registerDefaultOperationDecoders]; + + return self; +} + ++ (instancetype)defaultDecoder { + static PFFieldOperationDecoder *decoder; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + decoder = [[self alloc] init]; + }); + return decoder; +} + +///-------------------------------------- +#pragma mark - Setup +///-------------------------------------- + +- (void)_registerDecoderForOperationWithName:(NSString *)name block:(PFFieldOperationDecodingBlock_)block { + _operationDecoders[name] = [block copy]; +} + +- (void)_registerDefaultOperationDecoders { + @weakify(self); + [self _registerDecoderForOperationWithName:@"Batch" block:^(NSDictionary *encoded, PFDecoder *decoder) { + @strongify(self); + PFFieldOperation *op = nil; + NSArray *ops = encoded[@"ops"]; + for (id maybeEncodedNextOp in ops) { + PFFieldOperation *nextOp = nil; + if ([maybeEncodedNextOp isKindOfClass:[PFFieldOperation class]]) { + nextOp = maybeEncodedNextOp; + } else { + nextOp = [self decode:maybeEncodedNextOp withDecoder:decoder]; + } + op = [nextOp mergeWithPrevious:op]; + } + return op; + }]; + + [self _registerDecoderForOperationWithName:@"Delete" block:^(NSDictionary *encoded, PFDecoder *decoder) { + // Deleting has no state, so it can be a singleton. + static PFDeleteOperation *deleteOperation = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + deleteOperation = [[PFDeleteOperation alloc] init]; + }); + return deleteOperation; + }]; + + [self _registerDecoderForOperationWithName:@"Increment" block:^(NSDictionary *encoded, PFDecoder *decoder) { + return [PFIncrementOperation incrementWithAmount:encoded[@"amount"]]; + }]; + + [self _registerDecoderForOperationWithName:@"Add" block:^(NSDictionary *encoded, PFDecoder *decoder) { + NSArray *objects = [decoder decodeObject:encoded[@"objects"]]; + return [PFAddOperation addWithObjects:objects]; + }]; + + [self _registerDecoderForOperationWithName:@"AddUnique" block:^(NSDictionary *encoded, PFDecoder *decoder) { + NSArray *objects = [decoder decodeObject:encoded[@"objects"]]; + return [PFAddUniqueOperation addUniqueWithObjects:objects]; + }]; + + [self _registerDecoderForOperationWithName:@"Remove" block:^(NSDictionary *encoded, PFDecoder *decoder) { + NSArray *objects = [decoder decodeObject:encoded[@"objects"]]; + return [PFRemoveOperation removeWithObjects:objects]; + }]; + + [self _registerDecoderForOperationWithName:@"AddRelation" block:^(NSDictionary *encoded, PFDecoder *decoder) { + NSArray *objects = [decoder decodeObject:encoded[@"objects"]]; + return [PFRelationOperation addRelationToObjects:objects]; + }]; + + [self _registerDecoderForOperationWithName:@"RemoveRelation" block:^(NSDictionary *encoded, PFDecoder *decoder) { + NSArray *objects = [decoder decodeObject:encoded[@"objects"]]; + return [PFRelationOperation removeRelationToObjects:objects]; + }]; +} + +///-------------------------------------- +#pragma mark - Decoding +///-------------------------------------- + +- (PFFieldOperation *)decode:(NSDictionary *)encoded withDecoder:(PFDecoder *)decoder { + NSString *operationName = encoded[@"__op"]; + PFFieldOperationDecodingBlock_ block = _operationDecoders[operationName]; + PFConsistencyAssert(block, @"Unable to decode operation of type %@.", operationName); + return block(encoded, decoder); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileController.h new file mode 100644 index 0000000..dd12a2c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileController.h @@ -0,0 +1,99 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFDataProvider.h" +#import "PFMacros.h" + +@class BFCancellationToken; +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFFileState; +@class PFFileStagingController; + +@interface PFFileController : NSObject + +@property (nonatomic, weak, readonly) id dataSource; + +@property (nonatomic, strong, readonly) PFFileStagingController *fileStagingController; + +@property (nonatomic, copy, readonly) NSString *cacheFilesDirectoryPath; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; + ++ (instancetype)controllerWithDataSource:(id)dataSource; + + +///-------------------------------------- +/// @name Download +///-------------------------------------- + +/*! + Downloads a file asynchronously with a given state. + + @param fileState File state to download the file for. + @param cancellationToken Cancellation token. + @param progressBlock Progress block to call (optional). + + @returns `BFTask` with a result set to `nil`. + */ +- (BFTask *)downloadFileAsyncWithState:(PFFileState *)fileState + cancellationToken:(BFCancellationToken *)cancellationToken + progressBlock:(PFProgressBlock)progressBlock; + +/*! + Downloads a file asynchronously with a given state and yields a stream to the live download of that file. + + @param fileState File state to download the file for. + @param cancellationToken Cancellation token. + @param progressBlock Progress block to call (optional). + + @return `BFTask` with a result set to live `NSInputStream` of the file. + */ +- (BFTask *)downloadFileStreamAsyncWithState:(PFFileState *)fileState + cancellationToken:(BFCancellationToken *)cancellationToken + progressBlock:(PFProgressBlock)progressBlock; + +///-------------------------------------- +/// @name Upload +///-------------------------------------- + +/*! + Uploads a file asynchronously from file path for a given file state. + + @param fileState File state to upload the file for. + @param sourceFilePath Source file path. + @param sessionToken Session token to use. + @param cancellationToken Cancellation token. + @param progressBlock Progress block to call (optional). + + @returns `BFTask` with a result set to `PFFileState` of uploaded file. + */ +- (BFTask *)uploadFileAsyncWithState:(PFFileState *)fileState + sourceFilePath:(NSString *)sourceFilePath + sessionToken:(NSString *)sessionToken + cancellationToken:(BFCancellationToken *)cancellationToken + progressBlock:(PFProgressBlock)progressBlock; + +///-------------------------------------- +/// @name Cache +///-------------------------------------- + +- (BFTask *)clearFileCacheAsync; + +- (NSString *)cachedFilePathForFileState:(PFFileState *)fileState; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileController.m new file mode 100644 index 0000000..d9b2a51 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileController.m @@ -0,0 +1,269 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFFileController.h" + +#import +#import + +#import "BFTask+Private.h" +#import "PFFileDataStream.h" +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFCommandRunning.h" +#import "PFFileManager.h" +#import "PFFileStagingController.h" +#import "PFFileState.h" +#import "PFHash.h" +#import "PFMacros.h" +#import "PFRESTFileCommand.h" + +static NSString *const PFFileControllerCacheDirectoryName_ = @"PFFileCache"; + +@interface PFFileController () { + NSMutableDictionary *_downloadTasks; // { "urlString" : BFTask } + NSMutableDictionary *_downloadProgressBlocks; // { "urlString" : [ block1, block2 ] } + dispatch_queue_t _downloadDataAccessQueue; + dispatch_queue_t _fileStagingControllerAccessQueue; +} + +@end + +@implementation PFFileController + +@synthesize fileStagingController = _fileStagingController; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithDataSource:(id)dataSource { + self = [super init]; + if (!self) return nil; + + _dataSource = dataSource; + + _downloadTasks = [NSMutableDictionary dictionary]; + _downloadProgressBlocks = [NSMutableDictionary dictionary]; + _downloadDataAccessQueue = dispatch_queue_create("com.parse.fileController.download", DISPATCH_QUEUE_SERIAL); + _fileStagingControllerAccessQueue = dispatch_queue_create("com.parse.filestaging.controller.access", DISPATCH_QUEUE_SERIAL); + + return self; +} + ++ (instancetype)controllerWithDataSource:(id)dataSource { + return [[self alloc] initWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - Properties +///-------------------------------------- + +- (PFFileStagingController *)fileStagingController { + __block PFFileStagingController *result = nil; + dispatch_sync(_fileStagingControllerAccessQueue, ^{ + if (!_fileStagingController) { + _fileStagingController = [PFFileStagingController controllerWithDataSource:self.dataSource]; + } + result = _fileStagingController; + }); + return result; +} + +///-------------------------------------- +#pragma mark - Download +///-------------------------------------- + +- (BFTask *)downloadFileAsyncWithState:(PFFileState *)fileState + cancellationToken:(BFCancellationToken *)cancellationToken + progressBlock:(PFProgressBlock)progressBlock { + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + @weakify(self); + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + [self _addFileDownloadProgressBlock:progressBlock forFileWithState:fileState]; + + BFTask *resultTask = [self _fileDownloadResultTaskForFileWithState:fileState]; + if (!resultTask) { + NSURL *url = [NSURL URLWithString:fileState.secureURLString]; + NSString *temporaryPath = [self _temporaryFileDownloadPathForFileState:fileState]; + + PFProgressBlock unifyingProgressBlock = [self _fileDownloadUnifyingProgressBlockForFileState:fileState]; + resultTask = [self.dataSource.commandRunner runFileDownloadCommandAsyncWithFileURL:url + targetFilePath:temporaryPath + cancellationToken:cancellationToken + progressBlock:unifyingProgressBlock]; + resultTask = [[resultTask continueWithSuccessBlock:^id(BFTask *task) { + return [[PFFileManager moveItemAsyncAtPath:temporaryPath + toPath:[self cachedFilePathForFileState:fileState]] continueWithBlock:^id(BFTask *task) { + // Ignore the error if file exists. + if (task.error && task.error.code == NSFileWriteFileExistsError) { + return nil; + } + return task; + }]; + }] continueWithBlock:^id(BFTask *task) { + dispatch_barrier_async(_downloadDataAccessQueue, ^{ + [_downloadTasks removeObjectForKey:fileState.secureURLString]; + [_downloadProgressBlocks removeObjectForKey:fileState.secureURLString]; + }); + return task; + }]; + dispatch_barrier_async(_downloadDataAccessQueue, ^{ + _downloadTasks[fileState.secureURLString] = resultTask; + }); + } + return resultTask; + }]; +} + +- (BFTask *)downloadFileStreamAsyncWithState:(PFFileState *)fileState + cancellationToken:(BFCancellationToken *)cancellationToken + progressBlock:(PFProgressBlock)progressBlock { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + BFTaskCompletionSource *taskCompletionSource = [BFTaskCompletionSource taskCompletionSource]; + NSString *filePath = [self _temporaryFileDownloadPathForFileState:fileState]; + PFFileDataStream *stream = [[PFFileDataStream alloc] initWithFileAtPath:filePath]; + [[self downloadFileAsyncWithState:fileState + cancellationToken:cancellationToken + progressBlock:^(int percentDone) { + [taskCompletionSource trySetResult:stream]; + + if (progressBlock) { + progressBlock(percentDone); + } + }] continueWithBlock:^id(BFTask *task) { + [stream stopBlocking]; + return task; + }]; + return taskCompletionSource.task; + }]; +} + +- (BFTask *)_fileDownloadResultTaskForFileWithState:(PFFileState *)state { + __block BFTask *resultTask = nil; + dispatch_sync(_downloadDataAccessQueue, ^{ + resultTask = _downloadTasks[state.secureURLString]; + }); + return resultTask; +} + +- (PFProgressBlock)_fileDownloadUnifyingProgressBlockForFileState:(PFFileState *)fileState { + return ^(int progress) { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + __block NSArray *blocks = nil; + dispatch_sync(_downloadDataAccessQueue, ^{ + blocks = [_downloadProgressBlocks[fileState.secureURLString] copy]; + }); + if (blocks.count != 0) { + dispatch_async(dispatch_get_main_queue(), ^{ + for (PFProgressBlock block in blocks) { + block(progress); + } + }); + } + }); + }; +} + +- (void)_addFileDownloadProgressBlock:(PFProgressBlock)block forFileWithState:(PFFileState *)state { + if (!block) { + return; + } + + dispatch_barrier_async(_downloadDataAccessQueue, ^{ + NSMutableArray *progressBlocks = _downloadProgressBlocks[state.secureURLString]; + if (!progressBlocks) { + progressBlocks = [NSMutableArray arrayWithObject:block]; + _downloadProgressBlocks[state.secureURLString] = progressBlocks; + } else { + [progressBlocks addObject:block]; + } + }); +} + +- (NSString *)_temporaryFileDownloadPathForFileState:(PFFileState *)fileState { + return [NSTemporaryDirectory() stringByAppendingPathComponent:PFMD5HashFromString(fileState.secureURLString)]; +} + +///-------------------------------------- +#pragma mark - Upload +///-------------------------------------- + +- (BFTask *)uploadFileAsyncWithState:(PFFileState *)fileState + sourceFilePath:(NSString *)sourceFilePath + sessionToken:(NSString *)sessionToken + cancellationToken:(BFCancellationToken *)cancellationToken + progressBlock:(PFProgressBlock)progressBlock { + PFRESTFileCommand *command = [PFRESTFileCommand uploadCommandForFileWithName:fileState.name + sessionToken:sessionToken]; + + @weakify(self); + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + return [[[self.dataSource.commandRunner runFileUploadCommandAsync:command + withContentType:fileState.mimeType + contentSourceFilePath:sourceFilePath + options:PFCommandRunningOptionRetryIfFailed + cancellationToken:cancellationToken + progressBlock:progressBlock] continueWithSuccessBlock:^id(BFTask *task) { + PFCommandResult *result = task.result; + PFFileState *fileState = [[PFFileState alloc] initWithName:result.result[@"name"] + urlString:result.result[@"url"] + mimeType:nil]; + return fileState; + }] continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + + NSString *finalPath = [self cachedFilePathForFileState:task.result]; + NSError *error = nil; + [[NSFileManager defaultManager] moveItemAtPath:sourceFilePath + toPath:finalPath + error:&error]; + if (error) { + return [BFTask taskWithError:error]; + } + return task; + }]; +} + +///-------------------------------------- +#pragma mark - Cache +///-------------------------------------- + +- (NSString *)cachedFilePathForFileState:(PFFileState *)fileState { + if (!fileState.secureURLString) { + return nil; + } + + NSString *filename = [fileState.secureURLString lastPathComponent]; + NSString *path = [self.cacheFilesDirectoryPath stringByAppendingPathComponent:filename]; + return path; +} + +- (NSString *)cacheFilesDirectoryPath { + NSString *path = [self.dataSource.fileManager parseCacheItemPathForPathComponent:PFFileControllerCacheDirectoryName_]; + [[PFFileManager createDirectoryIfNeededAsyncAtPath:path] waitForResult:nil withMainThreadWarning:NO]; + return path; +} + +- (BFTask *)clearFileCacheAsync { + NSString *path = [self cacheFilesDirectoryPath]; + return [PFFileManager removeDirectoryContentsAsyncAtPath:path]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileStagingController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileStagingController.h new file mode 100644 index 0000000..15ee8d7 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileStagingController.h @@ -0,0 +1,74 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@class BFTask PF_GENERIC(__covariant BFGenericType); + +NS_ASSUME_NONNULL_BEGIN + +@protocol PFFileManagerProvider; + +@interface PFFileStagingController : NSObject + +@property (nonatomic, weak, readonly) id dataSource; + +@property (nonatomic, copy, readonly) NSString *stagedFilesDirectoryPath; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; + ++ (instancetype)controllerWithDataSource:(id)dataSource; + +///-------------------------------------- +/// @name Staging +///-------------------------------------- + +/*! + Moves a file from the specified path to the staging directory based off of the name and unique ID passed in. + + @param filePath The source path to stage + @param name The name of the file to stage + @param uniqueId A unique ID for this file to be used when differentiating between files with the same name. + + @return A task, which yields the path of the staged file on disk. + */ +- (BFTask *)stageFileAsyncAtPath:(NSString *)filePath name:(NSString *)name uniqueId:(uint64_t)uniqueId; + +/*! + Creates a file from the specified data and places it into the staging directory based off of the name and unique + ID passed in. + + @param fileData The data to stage + @param name The name of the file to stage + @param uniqueId The unique ID for this file to be used when differentiating between files with the same name. + + @return A task, which yields the path of the staged file on disk. + */ +- (BFTask *)stageFileAsyncWithData:(NSData *)fileData name:(NSString *)name uniqueId:(uint64_t)uniqueId; + +/*! + Get the staged directory path for a file with the specified name and unique ID. + + @param name The name of the staged file + @param uniqueId The unique ID of the staged file + + @return The path in the staged directory folder which contains the contents of the requested file. + */ +- (NSString *)stagedFilePathForFileWithName:(NSString *)name uniqueId:(uint64_t)uniqueId; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileStagingController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileStagingController.m new file mode 100644 index 0000000..fb13749 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/Controller/PFFileStagingController.m @@ -0,0 +1,96 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFFileStagingController.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFAsyncTaskQueue.h" +#import "PFDataProvider.h" +#import "PFFileManager.h" +#import "PFLogging.h" + +static NSString *const PFFileStagingControllerDirectoryName_ = @"PFFileStaging"; + +@implementation PFFileStagingController { + PFAsyncTaskQueue *_taskQueue; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithDataSource:(id)dataSource { + self = [super init]; + if (!self) return nil; + + _dataSource = dataSource; + _taskQueue = [PFAsyncTaskQueue taskQueue]; + + [self _clearStagedFilesAsync]; + + return self; +} + ++ (instancetype)controllerWithDataSource:(id)dataSource { + return [[self alloc] initWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - Properties +///-------------------------------------- + +- (NSString *)stagedFilesDirectoryPath { + NSString *folderPath = [self.dataSource.fileManager parseLocalSandboxDataDirectoryPath]; + return [folderPath stringByAppendingPathComponent:PFFileStagingControllerDirectoryName_]; +} + +///-------------------------------------- +#pragma mark - Staging +///-------------------------------------- + +- (BFTask *)stageFileAsyncAtPath:(NSString *)filePath name:(NSString *)name uniqueId:(uint64_t)uniqueId { + return [_taskQueue enqueue:^id(BFTask *task) { + return [[PFFileManager createDirectoryIfNeededAsyncAtPath:[self stagedFilesDirectoryPath]] continueWithBlock:^id(BFTask *task) { + NSString *destinationPath = [self stagedFilePathForFileWithName:name uniqueId:uniqueId]; + return [[PFFileManager copyItemAsyncAtPath:filePath toPath:destinationPath] continueWithSuccessResult:destinationPath]; + }]; + }]; +} + +- (BFTask *)stageFileAsyncWithData:(NSData *)fileData name:(NSString *)name uniqueId:(uint64_t)uniqueId { + return [_taskQueue enqueue:^id(BFTask *task) { + return [[PFFileManager createDirectoryIfNeededAsyncAtPath:[self stagedFilesDirectoryPath]] continueWithBlock:^id(BFTask *task) { + NSString *destinationPath = [self stagedFilePathForFileWithName:name uniqueId:uniqueId]; + return [[PFFileManager writeDataAsync:fileData toFile:destinationPath] continueWithSuccessResult:destinationPath]; + }]; + }]; +} + +- (NSString *)stagedFilePathForFileWithName:(NSString *)name uniqueId:(uint64_t)uniqueId { + NSString *fileName = [NSString stringWithFormat:@"%llX_%@", uniqueId, name]; + return [[self stagedFilesDirectoryPath] stringByAppendingPathComponent:fileName]; +} + +///-------------------------------------- +#pragma mark - Clearing +///-------------------------------------- + +- (BFTask *)_clearStagedFilesAsync { + return [_taskQueue enqueue:^id(BFTask *task) { + NSString *stagedFilesDirectoryPath = [self stagedFilesDirectoryPath]; + return [PFFileManager removeItemAtPathAsync:stagedFilesDirectoryPath]; + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/File/FileDataStream/PFFileDataStream.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/FileDataStream/PFFileDataStream.h new file mode 100644 index 0000000..fa86bc6 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/FileDataStream/PFFileDataStream.h @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/*! + PFFileDataStream is an NSStream proxy which won't read the last byte of a file until the downlaod has finished. + + When downloading a file stream via `-[PFFile getDataDownloadStreamInBackground]`, we need to be able to read and write + to the same file on disk concurrently. + + NSInputStream closes itself as soon as it hits EOF, so this class wraps an underlying NSInputStream and stops the + stream from closing until after writing has finished. + */ +@interface PFFileDataStream : NSProxy + +- (instancetype)initWithFileAtPath:(NSString *)path; + +- (void)stopBlocking; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/File/FileDataStream/PFFileDataStream.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/FileDataStream/PFFileDataStream.m new file mode 100644 index 0000000..ac03501 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/FileDataStream/PFFileDataStream.m @@ -0,0 +1,112 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFFileDataStream.h" + +#import +#import + +@interface PFFileDataStream() { + NSString *_path; + NSInputStream *_inputStream; + + int _fd; + BOOL _finished; + + __weak id _delegate; +} + +@end + +@implementation PFFileDataStream + +- (instancetype)initWithFileAtPath:(NSString *)path { + _finished = NO; + + _path = path; + _inputStream = [NSInputStream inputStreamWithFileAtPath:path]; + _inputStream.delegate = self; + + return self; +} + +- (void)stopBlocking { + _finished = YES; + + [self stream:_inputStream handleEvent:NSStreamEventHasBytesAvailable]; +} + +///-------------------------------------- +#pragma mark - NSProxy methods +///-------------------------------------- + +- (NSMethodSignature *)methodSignatureForSelector:(SEL)sel { + return [_inputStream methodSignatureForSelector:sel]; +} + +- (void)forwardInvocation:(NSInvocation *)invocation { + [invocation invokeWithTarget:_inputStream]; +} + +- (BOOL)respondsToSelector:(SEL)aSelector { + Method implementation = class_getInstanceMethod([self class], aSelector); + return implementation ? YES : [_inputStream respondsToSelector:aSelector]; +} + +///-------------------------------------- +#pragma mark - NSInputStream methods +///-------------------------------------- + +- (void)setDelegate:(id)delegate { + _delegate = delegate; +} + +- (id)delegate { + return _delegate; +} + +- (void)open { + _fd = open([_path UTF8String], O_RDONLY | O_NONBLOCK); + [_inputStream open]; +} + +- (void)close { + [_inputStream close]; + close(_fd); +} + +- (NSInteger)read:(uint8_t *)buffer maxLength:(NSUInteger)len { + if (!_finished) { + off_t currentOffset = [[_inputStream propertyForKey:NSStreamFileCurrentOffsetKey] unsignedLongLongValue]; + off_t fileSize = lseek(_fd, 0, SEEK_END); + + len = (NSUInteger)MIN(len, ((fileSize - currentOffset) - 1)); + } + + // Reading 0 bytes from an NSInputStream causes this strange undocumented behavior: it marks the stream as 'at end', + // regardless of whether more bytes are available or not. lolwut? + if (len == 0) { + return 0; + } + + return [_inputStream read:buffer maxLength:len]; +} + +///-------------------------------------- +#pragma mark - NSStreamDelegate +///-------------------------------------- + +- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode { + id delegate = _delegate; + if ([delegate respondsToSelector:@selector(stream:handleEvent:)]) { + [delegate stream:(NSInputStream *)self handleEvent:eventCode]; + } +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/File/PFFile_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/PFFile_Private.h new file mode 100644 index 0000000..43fe6cc --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/PFFile_Private.h @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import +#import + +#import "PFFileState.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFFile (Private) + +@property (nonatomic, strong, readonly) PFFileState *state; + ++ (instancetype)fileWithName:(nullable NSString *)name url:(nullable NSString *)url; + +- (nullable NSString *)_cachedFilePath; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFFileState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFFileState.h new file mode 100644 index 0000000..8088ae9 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFFileState.h @@ -0,0 +1,35 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFBaseState.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFFileState : PFBaseState + +@property (nonatomic, copy, readonly) NSString *name; +@property (nullable, nonatomic, copy, readonly) NSString *urlString; +@property (nullable, nonatomic, copy, readonly) NSString *secureURLString; + +@property (nullable, nonatomic, copy, readonly) NSString *mimeType; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)initWithState:(PFFileState *)state; +- (instancetype)initWithName:(nullable NSString *)name + urlString:(nullable NSString *)urlString + mimeType:(nullable NSString *)mimeType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFFileState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFFileState.m new file mode 100644 index 0000000..3a0e4e8 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFFileState.m @@ -0,0 +1,106 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFFileState.h" +#import "PFFileState_Private.h" + +#import "PFMutableFileState.h" +#import "PFPropertyInfo.h" + +static NSString *const _PFFileStateSecureDomain = @"files.parsetfss.com"; + +@interface PFFileState () + +@property (nonatomic, copy, readwrite) NSString *secureURLString; + +@end + +@implementation PFFileState + +///-------------------------------------- +#pragma mark - PFBaseStateSubclass +///-------------------------------------- + ++ (NSDictionary *)propertyAttributes { + return @{ + @"name" : [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + @"urlString" : [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + @"mimeType" : [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + }; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithState:(PFFileState *)state { + return [super initWithState:state]; +} + +- (instancetype)initWithName:(NSString *)name urlString:(NSString *)urlString mimeType:(NSString *)mimeType { + self = [super init]; + if (!self) return nil; + + _name = (name ? [name copy] : @"file"); + _urlString = [urlString copy]; + _mimeType = [mimeType copy]; + + return self; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (void)setUrlString:(NSString *)urlString { + if (self.urlString != urlString) { + _urlString = [urlString copy]; + _secureURLString = nil; // Invalidate variable cache + } +} + +- (NSString *)secureURLString { + if (_secureURLString) { + return _secureURLString; + } + + if (!self.urlString) { + return nil; + } + + NSURLComponents *components = [NSURLComponents componentsWithString:self.urlString]; + if (!components) { + return self.urlString; + } + + NSString *scheme = [components scheme]; + if (![scheme isEqualToString:@"http"]) { + return self.urlString; + } + + if ([[components host] isEqualToString:_PFFileStateSecureDomain]) { + components.scheme = @"https"; + } + _secureURLString = [[components URL] absoluteString]; + return _secureURLString; +} + +///-------------------------------------- +#pragma mark - Mutable Copying +///-------------------------------------- + +- (id)copyWithZone:(NSZone *)zone { + return [[PFFileState allocWithZone:zone] initWithState:self]; +} + +- (instancetype)mutableCopyWithZone:(NSZone *)zone { + return [[PFMutableFileState allocWithZone:zone] initWithState:self]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFFileState_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFFileState_Private.h new file mode 100644 index 0000000..5114fef --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFFileState_Private.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFFileState.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFFileState () + +@property (nonatomic, copy, readwrite) NSString *name; +@property (nullable, nonatomic, copy, readwrite) NSString *urlString; +@property (nullable, nonatomic, copy, readwrite) NSString *mimeType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFMutableFileState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFMutableFileState.h new file mode 100644 index 0000000..1d33fa8 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFMutableFileState.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFFileState.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFMutableFileState : PFFileState + +@property (nonatomic, copy, readwrite) NSString *name; +@property (nullable, nonatomic, copy, readwrite) NSString *urlString; +@property (nullable, nonatomic, copy, readwrite) NSString *mimeType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFMutableFileState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFMutableFileState.m new file mode 100644 index 0000000..53db52c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/File/State/PFMutableFileState.m @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFMutableFileState.h" + +@implementation PFMutableFileState + +@dynamic name; +@dynamic urlString; +@dynamic mimeType; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFHTTPRequest.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFHTTPRequest.h new file mode 100644 index 0000000..e6394e4 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFHTTPRequest.h @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#ifndef Parse_PFHTTPRequest_h +#define Parse_PFHTTPRequest_h + +#import + +static NSString *const PFHTTPRequestMethodGET = @"GET"; +static NSString *const PFHTTPRequestMethodHEAD = @"HEAD"; +static NSString *const PFHTTPRequestMethodDELETE = @"DELETE"; +static NSString *const PFHTTPRequestMethodPOST = @"POST"; +static NSString *const PFHTTPRequestMethodPUT = @"PUT"; + +static NSString *const PFHTTPRequestHeaderNameContentType = @"Content-Type"; +static NSString *const PFHTTPRequestHeaderNameContentLength = @"Content-Length"; + +#endif diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.h new file mode 100644 index 0000000..b3bfb70 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.h @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@interface PFHTTPURLRequestConstructor : NSObject + ++ (NSMutableURLRequest *)urlRequestWithURL:(NSURL *)url + httpMethod:(NSString *)httpMethod + httpHeaders:(NSDictionary *)httpHeaders + parameters:(NSDictionary *)parameters; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.m new file mode 100644 index 0000000..e948c3d --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.m @@ -0,0 +1,52 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFHTTPURLRequestConstructor.h" + +#import "PFAssert.h" +#import "PFHTTPRequest.h" +#import "PFURLConstructor.h" + +static NSString *const PFHTTPURLRequestContentTypeJSON = @"application/json; charset=utf8"; + +@implementation PFHTTPURLRequestConstructor + +///-------------------------------------- +#pragma mark - Public +///-------------------------------------- + ++ (NSMutableURLRequest *)urlRequestWithURL:(NSURL *)url + httpMethod:(NSString *)httpMethod + httpHeaders:(NSDictionary *)httpHeaders + parameters:(NSDictionary *)parameters { + NSParameterAssert(url != nil); + NSParameterAssert(httpMethod != nil); + + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; + + request.HTTPMethod = httpMethod; + request.allHTTPHeaderFields = httpHeaders; + + if (parameters != nil) { + PFConsistencyAssert([httpMethod isEqualToString:PFHTTPRequestMethodPOST] || + [httpMethod isEqualToString:PFHTTPRequestMethodPUT], + @"Can't create %@ request with json body.", httpMethod); + + [request setValue:PFHTTPURLRequestContentTypeJSON forHTTPHeaderField:PFHTTPRequestHeaderNameContentType]; + + NSError *error = nil; + [request setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters + options:(NSJSONWritingOptions)0 + error:&error]]; + PFConsistencyAssert(error == nil, @"Failed to serialize JSON with error = %@", error); + } + return request; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFURLConstructor.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFURLConstructor.h new file mode 100644 index 0000000..19f7e26 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFURLConstructor.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PFURLConstructor : NSObject + ++ (NSURL *)URLFromAbsoluteString:(NSString *)string + path:(nullable NSString *)path + query:(nullable NSString *)query; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFURLConstructor.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFURLConstructor.m new file mode 100644 index 0000000..7e0dd24 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/HTTPRequest/PFURLConstructor.m @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFURLConstructor.h" + +#import "PFAssert.h" + +@implementation PFURLConstructor + +///-------------------------------------- +#pragma mark - Basic +///-------------------------------------- + ++ (NSURL *)URLFromAbsoluteString:(NSString *)string + path:(nullable NSString *)path + query:(nullable NSString *)query { + NSURLComponents *components = [NSURLComponents componentsWithString:string]; + if (components.path) { + components.path = path; + } + if (query) { + components.query = query; + } + return components.URL; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Constants/PFInstallationConstants.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Constants/PFInstallationConstants.h new file mode 100644 index 0000000..29ef544 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Constants/PFInstallationConstants.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +extern NSString *const PFInstallationKeyParseVersion; +extern NSString *const PFInstallationKeyDeviceType; +extern NSString *const PFInstallationKeyInstallationId; +extern NSString *const PFInstallationKeyDeviceToken; +extern NSString *const PFInstallationKeyAppName; +extern NSString *const PFInstallationKeyAppVersion; +extern NSString *const PFInstallationKeyAppIdentifier; +extern NSString *const PFInstallationKeyTimeZone; +extern NSString *const PFInstallationKeyLocaleIdentifier; +extern NSString *const PFInstallationKeyBadge; +extern NSString *const PFInstallationKeyChannels; diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Constants/PFInstallationConstants.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Constants/PFInstallationConstants.m new file mode 100644 index 0000000..19f2565 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Constants/PFInstallationConstants.m @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFInstallationConstants.h" + +NSString *const PFInstallationKeyParseVersion = @"parseVersion"; +NSString *const PFInstallationKeyDeviceType = @"deviceType"; +NSString *const PFInstallationKeyInstallationId = @"installationId"; +NSString *const PFInstallationKeyDeviceToken = @"deviceToken"; +NSString *const PFInstallationKeyAppName = @"appName"; +NSString *const PFInstallationKeyAppVersion = @"appVersion"; +NSString *const PFInstallationKeyAppIdentifier = @"appIdentifier"; +NSString *const PFInstallationKeyTimeZone = @"timeZone"; +NSString *const PFInstallationKeyLocaleIdentifier = @"localeIdentifier"; +NSString *const PFInstallationKeyBadge = @"badge"; +NSString *const PFInstallationKeyChannels = @"channels"; diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Controller/PFInstallationController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Controller/PFInstallationController.h new file mode 100644 index 0000000..75573b9 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Controller/PFInstallationController.h @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFCoreDataProvider.h" +#import "PFObjectControlling.h" + +NS_ASSUME_NONNULL_BEGIN + +PF_WATCH_UNAVAILABLE @interface PFInstallationController : NSObject + +@property (nonatomic, weak, readonly) id dataSource; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithDataSource:(id)dataSource; ++ (instancetype)controllerWithDataSource:(id)dataSource; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Controller/PFInstallationController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Controller/PFInstallationController.m new file mode 100644 index 0000000..66d09cc --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/Controller/PFInstallationController.m @@ -0,0 +1,105 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFInstallationController.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCurrentInstallationController.h" +#import "PFInstallationPrivate.h" +#import "PFObjectController.h" +#import "PFObjectPrivate.h" + +@implementation PFInstallationController + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithDataSource:(id)dataSource { + self = [super init]; + if (!self) return nil; + + _dataSource = dataSource; + + return self; +} + ++ (instancetype)controllerWithDataSource:(id)dataSource { + return [[self alloc] initWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - Fetch +///-------------------------------------- + +- (BFTask *)fetchObjectAsync:(PFInstallation *)object withSessionToken:(nullable NSString *)sessionToken { + @weakify(self); + return [[[self.objectController fetchObjectAsync:object + withSessionToken:sessionToken] continueWithBlock:^id(BFTask *task) { + @strongify(self); + + // Do not attempt to resave an object if LDS is enabled, since changing objectId is not allowed. + if (self.currentInstallationController.storageType == PFCurrentObjectStorageTypeOfflineStore) { + return task; + } + + if (task.faulted && task.error.code == kPFErrorObjectNotFound) { + @synchronized (object.lock) { + // Retry the fetch as a save operation because this Installation was deleted on the server. + // We always want [currentInstallation fetch] to succeed. + object.objectId = nil; + [object _markAllFieldsDirty]; + return [[object saveAsync:nil] continueWithSuccessResult:object]; + } + } + return task; + }] continueWithBlock:^id(BFTask *task) { + @strongify(self); + // Roll-forward the previous task. + return [[self.currentInstallationController saveCurrentObjectAsync:object] continueWithResult:task]; + }]; +} + +- (BFTask *)processFetchResultAsync:(NSDictionary *)result forObject:(PFInstallation *)object { + @weakify(self); + return [[self.objectController processFetchResultAsync:result forObject:object] continueWithBlock:^id(BFTask *task) { + @strongify(self); + // Roll-forward the previous task. + return [[self.currentInstallationController saveCurrentObjectAsync:object] continueWithResult:task]; + }]; +} + +///-------------------------------------- +#pragma mark - Delete +///-------------------------------------- + +- (BFTask *)deleteObjectAsync:(PFObject *)object withSessionToken:(nullable NSString *)sessionToken { + PFConsistencyAssert(NO, @"Installations cannot be deleted."); + return nil; +} + +- (BFTask *)processDeleteResultAsync:(nullable NSDictionary *)result forObject:(PFObject *)object { + PFConsistencyAssert(NO, @"Installations cannot be deleted."); + return nil; +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + +- (id)objectController { + return self.dataSource.objectController; +} + +- (PFCurrentInstallationController *)currentInstallationController { + return self.dataSource.currentInstallationController; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.h new file mode 100644 index 0000000..b51f996 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.h @@ -0,0 +1,52 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFCoreDataProvider.h" +#import "PFCurrentObjectControlling.h" +#import "PFDataProvider.h" +#import "PFMacros.h" + +extern NSString *const PFCurrentInstallationFileName; +extern NSString *const PFCurrentInstallationPinName; + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFInstallation; + +PF_WATCH_UNAVAILABLE @interface PFCurrentInstallationController : NSObject + +@property (nonatomic, weak, readonly) id commonDataSource; +@property (nonatomic, weak, readonly) id coreDataSource; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithStorageType:(PFCurrentObjectStorageType)dataStorageType + commonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource; + ++ (instancetype)controllerWithStorageType:(PFCurrentObjectStorageType)dataStorageType + commonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource; + +///-------------------------------------- +/// @name Installation +///-------------------------------------- + +@property (nonatomic, strong, readonly) PFInstallation *memoryCachedCurrentInstallation; + +- (BFTask *)clearCurrentInstallationAsync; +- (BFTask *)clearMemoryCachedCurrentInstallationAsync; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.m new file mode 100644 index 0000000..f716106 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.m @@ -0,0 +1,289 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFCurrentInstallationController.h" + +#import "BFTask+Private.h" +#import "PFAsyncTaskQueue.h" +#import "PFFileManager.h" +#import "PFInstallationIdentifierStore.h" +#import "PFInstallationPrivate.h" +#import "PFMacros.h" +#import "PFObjectFilePersistenceController.h" +#import "PFObjectPrivate.h" +#import "PFPushPrivate.h" +#import "PFQuery.h" + +NSString *const PFCurrentInstallationFileName = @"currentInstallation"; +NSString *const PFCurrentInstallationPinName = @"_currentInstallation"; + +@interface PFCurrentInstallationController () { + dispatch_queue_t _dataQueue; + PFAsyncTaskQueue *_dataTaskQueue; +} + +@property (nonatomic, strong, readonly) PFFileManager *fileManager; +@property (nonatomic, strong, readonly) PFInstallationIdentifierStore *installationIdentifierStore; + +@property (nonatomic, strong) PFInstallation *currentInstallation; +@property (nonatomic, assign) BOOL currentInstallationMatchesDisk; + +@end + +@implementation PFCurrentInstallationController + +@synthesize storageType = _storageType; + +@synthesize currentInstallation = _currentInstallation; +@synthesize currentInstallationMatchesDisk = _currentInstallationMatchesDisk; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithStorageType:(PFCurrentObjectStorageType)storageType + commonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource { + self = [super init]; + if (!self) return nil; + + _dataQueue = dispatch_queue_create("com.parse.installation.current", DISPATCH_QUEUE_CONCURRENT); + _dataTaskQueue = [[PFAsyncTaskQueue alloc] init]; + + _storageType = storageType; + _commonDataSource = commonDataSource; + _coreDataSource = coreDataSource; + + return self; +} + ++ (instancetype)controllerWithStorageType:(PFCurrentObjectStorageType)storageType + commonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource { + return [[self alloc] initWithStorageType:storageType + commonDataSource:commonDataSource + coreDataSource:coreDataSource]; +} + +///-------------------------------------- +#pragma mark - PFCurrentObjectControlling +///-------------------------------------- + +- (BFTask *)getCurrentObjectAsync { + @weakify(self); + return [_dataTaskQueue enqueue:^BFTask *(BFTask *unused) { + return [[[BFTask taskFromExecutor:[BFExecutor defaultExecutor] withBlock:^id { + @strongify(self); + if (self.currentInstallation) { + return self.currentInstallation; + } + + if (!self.currentInstallationMatchesDisk) { + return [[self _loadCurrentInstallationFromDiskAsync] continueWithBlock:^id(BFTask *task) { + PFInstallation *installation = task.result; + if (installation) { + // If there is no objectId, but there is some data + // it means that the data wasn't yet saved to the server + // so we should mark everything as dirty + if (!installation.objectId && [[installation allKeys] count]) { + [installation _markAllFieldsDirty]; + } + } + return task; + }]; + } + return nil; + }] continueWithBlock:^id(BFTask *task) { + @strongify(self); + if (task.faulted) { + return task; + } + + PFInstallation *installation = task.result; + NSString *installationId = self.installationIdentifierStore.installationIdentifier; + installationId = [installationId lowercaseString]; + if (!installation || ![installationId isEqualToString:installation.installationId]) { + // If there's no installation object, or the object's installation + // ID doesn't match this device's installation ID, create a new + // installation. Try to keep track of the previously stored device + // token: if there was an installation already stored just re-use + // its device token, otherwise try loading from the keychain (where + // old SDKs stored the token). Discard the old installation. + NSString *oldDeviceToken = nil; + if (installation) { + oldDeviceToken = installation.deviceToken; + } else { + oldDeviceToken = [[PFPush pushInternalUtilClass] getDeviceTokenFromKeychain]; + } + + installation = [PFInstallation object]; + installation.deviceType = kPFDeviceType; + installation.installationId = installationId; + if (oldDeviceToken) { + installation.deviceToken = oldDeviceToken; + } + } + + return installation; + }] continueWithBlock:^id(BFTask *task) { + dispatch_barrier_sync(_dataQueue, ^{ + _currentInstallation = task.result; + _currentInstallationMatchesDisk = !task.faulted; + }); + return task; + }]; + }]; +} + +- (BFTask *)saveCurrentObjectAsync:(PFInstallation *)installation { + @weakify(self); + return [_dataTaskQueue enqueue:^BFTask *(BFTask *unused) { + @strongify(self); + + if (installation != self.currentInstallation) { + return nil; + } + return [[self _saveCurrentInstallationToDiskAsync:installation] continueWithBlock:^id(BFTask *task) { + self.currentInstallationMatchesDisk = (!task.faulted && !task.cancelled); + return nil; + }]; + }]; +} + +///-------------------------------------- +#pragma mark - Installation +///-------------------------------------- + +- (PFInstallation *)memoryCachedCurrentInstallation { + return self.currentInstallation; +} + +- (BFTask *)clearCurrentInstallationAsync { + @weakify(self); + return [_dataTaskQueue enqueue:^BFTask *(BFTask *unused) { + @strongify(self); + + dispatch_barrier_sync(_dataQueue, ^{ + _currentInstallation = nil; + _currentInstallationMatchesDisk = NO; + }); + + NSMutableArray *tasks = [NSMutableArray arrayWithCapacity:2]; + if (self.storageType == PFCurrentObjectStorageTypeOfflineStore) { + BFTask *unpinTask = [PFObject unpinAllObjectsInBackgroundWithName:PFCurrentInstallationPinName]; + [tasks addObject:unpinTask]; + } + + NSString *path = [self.fileManager parseDataItemPathForPathComponent:PFCurrentInstallationFileName]; + BFTask *fileTask = [PFFileManager removeItemAtPathAsync:path]; + [tasks addObject:fileTask]; + + return [BFTask taskForCompletionOfAllTasks:tasks]; + }]; +} + +- (BFTask *)clearMemoryCachedCurrentInstallationAsync { + return [_dataTaskQueue enqueue:^BFTask *(BFTask *unused) { + self.currentInstallation = nil; + self.currentInstallationMatchesDisk = NO; + + return nil; + }]; +} + +///-------------------------------------- +#pragma mark - Data Storage +///-------------------------------------- + +- (BFTask *)_loadCurrentInstallationFromDiskAsync { + if (self.storageType == PFCurrentObjectStorageTypeOfflineStore) { + // Try loading from OfflineStore + PFQuery *query = [[[PFQuery queryWithClassName:[PFInstallation parseClassName]] + fromPinWithName:PFCurrentInstallationPinName] ignoreACLs]; + + return [[query findObjectsInBackground] continueWithSuccessBlock:^id(BFTask *task) { + NSArray *results = task.result; + if ([results count] == 1) { + return [BFTask taskWithResult:[results firstObject]]; + } else if ([results count] != 0) { + return [[PFObject unpinAllObjectsInBackgroundWithName:PFCurrentInstallationPinName] + continueWithSuccessResult:nil]; + } + + // Backward compatibility if we previously have non-LDS currentInstallation. + return [PFObject _migrateObjectInBackgroundFromFile:PFCurrentInstallationFileName + toPin:PFCurrentInstallationPinName]; + }]; + } + + PFObjectFilePersistenceController *controller = self.objectFilePersistenceController; + return [controller loadPersistentObjectAsyncForKey:PFCurrentInstallationFileName]; +} + +- (BFTask *)_saveCurrentInstallationToDiskAsync:(PFInstallation *)installation { + if (self.storageType == PFCurrentObjectStorageTypeOfflineStore) { + BFTask *task = [PFObject unpinAllObjectsInBackgroundWithName:PFCurrentInstallationPinName]; + return [task continueWithBlock:^id(BFTask *task) { + // Make sure to not pin children of PFInstallation automatically, as it can create problems + // if any of the children are of Installation class. + return [installation _pinInBackgroundWithName:PFCurrentInstallationPinName includeChildren:NO]; + }]; + } + + PFObjectFilePersistenceController *controller = self.objectFilePersistenceController; + return [controller persistObjectAsync:installation forKey:PFCurrentInstallationFileName]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (PFFileManager *)fileManager { + return self.commonDataSource.fileManager; +} + +- (PFObjectFilePersistenceController *)objectFilePersistenceController { + return self.coreDataSource.objectFilePersistenceController; +} + +- (PFInstallationIdentifierStore *)installationIdentifierStore { + return self.commonDataSource.installationIdentifierStore; +} + +- (PFInstallation *)currentInstallation { + __block PFInstallation *installation = nil; + dispatch_sync(_dataQueue, ^{ + installation = _currentInstallation; + }); + return installation; +} + +- (void)setCurrentInstallation:(PFInstallation *)currentInstallation { + dispatch_barrier_sync(_dataQueue, ^{ + if (_currentInstallation != currentInstallation) { + _currentInstallation = currentInstallation; + } + }); +} + +- (BOOL)currentInstallationMatchesDisk { + __block BOOL matches = NO; + dispatch_sync(_dataQueue, ^{ + matches = _currentInstallationMatchesDisk; + }); + return matches; +} + +- (void)setCurrentInstallationMatchesDisk:(BOOL)currentInstallationMatchesDisk { + dispatch_barrier_sync(_dataQueue, ^{ + _currentInstallationMatchesDisk = currentInstallationMatchesDisk; + }); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.h new file mode 100644 index 0000000..3e7becb --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.h @@ -0,0 +1,39 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@class PFFileManager; + +@interface PFInstallationIdentifierStore : NSObject + +/*! + Returns a cached installationId or creates a new one, saves it to disk and returns it. + + @returns `NSString` representation of current installationId. + */ +@property (nonatomic, copy, readonly) NSString *installationIdentifier; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithFileManager:(PFFileManager *)fileManager NS_DESIGNATED_INITIALIZER; + +///-------------------------------------- +/// @name Clear +///-------------------------------------- + +/*! + Clears installation identifier on disk and in-memory. + */ +- (void)clearInstallationIdentifier; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.m new file mode 100644 index 0000000..af7fac5 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.m @@ -0,0 +1,118 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFInstallationIdentifierStore.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFFileManager.h" +#import "PFInternalUtils.h" +#import "PFMacros.h" +#import "PFMultiProcessFileLockController.h" +#import "Parse_Private.h" + +static NSString *const PFInstallationIdentifierFileName = @"installationId"; + +@interface PFInstallationIdentifierStore () { + dispatch_queue_t _synchronizationQueue; + PFFileManager *_fileManager; +} + +@property (nonatomic, copy, readwrite) NSString *installationIdentifier; +@property (nonatomic, copy, readonly) NSString *installationIdentifierFilePath; + +@end + +@implementation PFInstallationIdentifierStore + +@synthesize installationIdentifier = _installationIdentifier; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithFileManager:(PFFileManager *)fileManager { + self = [super init]; + if (!self) return nil; + + _synchronizationQueue = dispatch_queue_create("com.parse.installationIdentifier", DISPATCH_QUEUE_SERIAL); + PFMarkDispatchQueue(_synchronizationQueue); + + _fileManager = fileManager; + + return self; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (NSString *)installationIdentifier { + __block NSString *identifier = nil; + dispatch_sync(_synchronizationQueue, ^{ + if (!_installationIdentifier) { + [self _loadInstallationIdentifier]; + } + + identifier = _installationIdentifier; + }); + return identifier; +} + +- (void)setInstallationIdentifier:(NSString *)installationIdentifier { + PFAssertIsOnDispatchQueue(_synchronizationQueue); + if (_installationIdentifier != installationIdentifier) { + _installationIdentifier = [installationIdentifier copy]; + } +} + +- (void)clearInstallationIdentifier { + dispatch_sync(_synchronizationQueue, ^{ + NSString *filePath = self.installationIdentifierFilePath; + [[PFFileManager removeItemAtPathAsync:filePath] waitForResult:nil withMainThreadWarning:NO]; + + self.installationIdentifier = nil; + }); +} + +///-------------------------------------- +#pragma mark - Disk Operations +///-------------------------------------- + +- (void)_loadInstallationIdentifier { + PFAssertIsOnDispatchQueue(_synchronizationQueue); + + NSString *filePath = self.installationIdentifierFilePath; + [[PFMultiProcessFileLockController sharedController] beginLockedContentAccessForFileAtPath:filePath]; + + NSString *identifier = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; + if (!identifier) { + identifier = [[[NSUUID UUID] UUIDString] lowercaseString]; + [[PFFileManager writeStringAsync:identifier toFile:filePath] waitForResult:nil withMainThreadWarning:NO]; + } + self.installationIdentifier = identifier; + + [[PFMultiProcessFileLockController sharedController] endLockedContentAccessForFileAtPath:filePath]; +} + +- (void)_clearCachedInstallationIdentifier { + dispatch_sync(_synchronizationQueue, ^{ + self.installationIdentifier = nil; + }); +} + +- (NSString *)installationIdentifierFilePath { + return [_fileManager parseDataItemPathForPathComponent:PFInstallationIdentifierFileName]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore_Private.h new file mode 100644 index 0000000..f84b36b --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore_Private.h @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFInstallationIdentifierStore.h" + +@interface PFInstallationIdentifierStore (Private) + +/*! + Clears in-memory cached installation identifier, if any. + */ +- (void)_clearCachedInstallationIdentifier; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/PFInstallationPrivate.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/PFInstallationPrivate.h new file mode 100644 index 0000000..0e24f86 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Installation/PFInstallationPrivate.h @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@interface PFInstallation (Private) + +- (void)_clearDeviceToken; +- (void)_markAllFieldsDirty; + +@end + +@interface PFInstallation () + +// Private read-write declarations of publicly-readonly fields. +@property (nonatomic, copy, readwrite) NSString *deviceType; +@property (nonatomic, copy, readwrite) NSString *installationId; +@property (nonatomic, copy, readwrite) NSString *timeZone; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/KeyValueCache/PFKeyValueCache.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/KeyValueCache/PFKeyValueCache.h new file mode 100644 index 0000000..e2518de --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/KeyValueCache/PFKeyValueCache.h @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PFKeyValueCache : NSObject + +@property (nonatomic, copy, readonly) NSString *cacheDirectoryPath; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithCacheDirectoryPath:(NSString *)path; + +///-------------------------------------- +/// @name Setting +///-------------------------------------- + +- (void)setObject:(NSString *)object forKey:(NSString *)key; +- (void)setObject:(NSString *)object forKeyedSubscript:(NSString *)key; + +///-------------------------------------- +/// @name Getting +///-------------------------------------- + +- (NSString *)objectForKey:(NSString *)key maxAge:(NSTimeInterval)age; + +///-------------------------------------- +/// @name Removing +///-------------------------------------- + +- (void)removeObjectForKey:(NSString *)key; +- (void)removeAllObjects; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/KeyValueCache/PFKeyValueCache.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/KeyValueCache/PFKeyValueCache.m new file mode 100644 index 0000000..f2ee85f --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/KeyValueCache/PFKeyValueCache.m @@ -0,0 +1,336 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFKeyValueCache_Private.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFConstants.h" +#import "PFFileManager.h" +#import "PFInternalUtils.h" +#import "PFLogging.h" + +static const NSUInteger PFKeyValueCacheDefaultDiskCacheSize = 10 << 20; +static const NSUInteger PFKeyValueCacheDefaultDiskCacheRecords = 1000; +static const NSUInteger PFKeyValueCacheDefaultMemoryCacheRecordSize = 1 << 20; +static const NSTimeInterval PFKeyValueCacheDiskCacheTimeResolution = 1; // HFS+ stores only second level accuracy. + +static NSString *const PFKeyValueCacheDiskCachePathKey = @"path"; + +@interface PFKeyValueCacheEntry () + +// We need to generate a setter that's atomic to safely clear the value. +@property (nullable, atomic, readwrite, copy) NSString *value; + +@end + +@implementation PFKeyValueCacheEntry + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithValue:(NSString *)value { + return [self initWithValue:value creationTime:[NSDate date]]; +} + +- (instancetype)initWithValue:(NSString *)value creationTime:(NSDate *)creationTime { + self = [super init]; + if (!self) return nil; + + _value = [value copy]; + _creationTime = creationTime; + + return self; +} + ++ (instancetype)cacheEntryWithValue:(NSString *)value { + return [[self alloc] initWithValue:value]; +} + ++ (instancetype)cacheEntryWithValue:(NSString *)value creationTime:(NSDate *)creationTime { + return [[self alloc] initWithValue:value creationTime:creationTime]; +} + +@end + +@implementation PFKeyValueCache { + NSURL *_cacheDirectoryURL; + dispatch_queue_t _diskCacheQueue; + + NSDate *_lastDiskCacheModDate; + NSUInteger _lastDiskCacheSize; + NSMutableArray *_lastDiskCacheAttributes; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithCacheDirectoryPath:(NSString *)path { + return [self initWithCacheDirectoryURL:[NSURL fileURLWithPath:path] + fileManager:[NSFileManager defaultManager] + memoryCache:[[NSCache alloc] init]]; +} + +- (instancetype)initWithCacheDirectoryURL:(NSURL *)url + fileManager:(NSFileManager *)fileManager + memoryCache:(NSCache *)cache { + self = [super init]; + if (!self) return nil; + + _cacheDirectoryURL = url; + _fileManager = fileManager; + _memoryCache = cache; + + _diskCacheQueue = dispatch_queue_create("com.parse.keyvaluecache.disk", DISPATCH_QUEUE_SERIAL); + + _maxDiskCacheBytes = PFKeyValueCacheDefaultDiskCacheSize; + _maxDiskCacheRecords = PFKeyValueCacheDefaultDiskCacheRecords; + _maxMemoryCacheBytesPerRecord = PFKeyValueCacheDefaultMemoryCacheRecordSize; + + return self; +} + +///-------------------------------------- +#pragma mark - Property Accessors +///-------------------------------------- + +- (NSString *)cacheDirectoryPath { + [_fileManager createDirectoryAtURL:_cacheDirectoryURL withIntermediateDirectories:YES attributes:nil error:NULL]; + return _cacheDirectoryURL.path; +} + +///-------------------------------------- +#pragma mark - Public +///-------------------------------------- + +- (void)setObject:(NSString *)object forKeyedSubscript:(NSString *)key { + [self setObject:object forKey:key]; +} + +- (void)setObject:(NSString *)value forKey:(NSString *)key { + NSUInteger keyBytes = [key maximumLengthOfBytesUsingEncoding:[key fastestEncoding]]; + NSUInteger valueBytes = [value maximumLengthOfBytesUsingEncoding:[value fastestEncoding]]; + + if ((keyBytes + valueBytes) < self.maxMemoryCacheBytesPerRecord) { + [self.memoryCache setObject:[PFKeyValueCacheEntry cacheEntryWithValue:value] forKey:key]; + } else { + [self.memoryCache removeObjectForKey:key]; + } + + dispatch_async(_diskCacheQueue, ^{ + [self _createDiskCacheEntry:value atURL:[self _cacheURLForKey:key]]; + [self _compactDiskCache]; + }); +} + +- (NSString *)objectForKey:(NSString *)key maxAge:(NSTimeInterval)maxAge { + NSURL *cacheURL = [self _cacheURLForKey:key]; + PFKeyValueCacheEntry *cacheEntry = [self.memoryCache objectForKey:key]; + + if (cacheEntry) { + if ([[NSDate date] timeIntervalSinceDate:cacheEntry.creationTime] > maxAge) { + // We know the cache to be too old in both copies. + // Save space, remove this key from disk, and it's value from the memory cache. + [self removeObjectForKey:key]; + return nil; + } + + dispatch_async(_diskCacheQueue, ^{ + [self _updateModificationDateAtURL:cacheURL]; + }); + + return cacheEntry.value; + } + + // Wait for all outstanding disk operations before continuing, as another thread could be in the process of + // Writing a value to disk right now. + __block NSString *value = nil; + dispatch_sync(_diskCacheQueue, ^{ + NSDate *modificationDate = [self _modificationDateOfCacheEntryAtURL:cacheURL]; + if ([[NSDate date] timeIntervalSinceDate:modificationDate] > maxAge) { + [self removeObjectForKey:key]; + return; + } + + // Cache misses here (e.g. creationDate and value are both nil) should still be put into the memory cache. + value = [self _diskCacheEntryForURL:cacheURL]; + [self.memoryCache setObject:[PFKeyValueCacheEntry cacheEntryWithValue:value creationTime:modificationDate] + forKey:key]; + }); + + return value; +} + +- (void)removeObjectForKey:(NSString *)key { + [self.memoryCache removeObjectForKey:key]; + + dispatch_async(_diskCacheQueue, ^{ + [self.fileManager removeItemAtURL:[self _cacheURLForKey:key] error:NULL]; + }); +} + +- (void)removeAllObjects { + [self.memoryCache removeAllObjects]; + + dispatch_sync(_diskCacheQueue, ^{ + // Directory will be automatically recreated the next time 'cacheDir' is accessed. + [self.fileManager removeItemAtURL:_cacheDirectoryURL error:NULL]; + }); +} + +- (void)waitForOutstandingOperations { + dispatch_sync(_diskCacheQueue, ^{ + // Wait, do nothing + }); +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + +- (NSURL *)_cacheURLForKey:(NSString *)key { + return [_cacheDirectoryURL URLByAppendingPathComponent:key]; +} + +- (void)_updateModificationDateAtURL:(NSURL *)url { + [self.fileManager setAttributes:@{ NSFileModificationDate: [NSDate date] } ofItemAtPath:url.path error:NULL]; +} + +- (NSDate *)_modificationDateOfCacheEntryAtURL:(NSURL *)url { + return [self.fileManager attributesOfItemAtPath:url.path error:NULL][NSFileModificationDate]; +} + +///-------------------------------------- +#pragma mark - Disk Cache +///-------------------------------------- + +- (NSString *)_diskCacheEntryForURL:(NSURL *)url { + NSData *bytes = [self.fileManager contentsAtPath:[url path]]; + if (!bytes) { + return nil; + } + + [self _updateModificationDateAtURL:url]; + return [[NSString alloc] initWithData:bytes encoding:NSUTF8StringEncoding]; +} + +- (void)_createDiskCacheEntry:(NSString *)value atURL:(NSURL *)url { + NSString *path = [url path]; + NSData *bytes = [value dataUsingEncoding:NSUTF8StringEncoding]; + NSDate *creationDate = [NSDate date]; + + BOOL isDirty = [self _isDiskCacheDirty]; + + [_fileManager createDirectoryAtURL:_cacheDirectoryURL withIntermediateDirectories:YES attributes:nil error:NULL]; + [self.fileManager createFileAtPath:path + contents:bytes + attributes:@{ NSFileCreationDate: creationDate, NSFileModificationDate: creationDate }]; + + if (!isDirty) { + _lastDiskCacheModDate = creationDate; + _lastDiskCacheSize += bytes.length; + + [self _addToDiskCacheDictionary:path + modificationDate:creationDate + size:bytes.length]; + } else { + [self _invalidateDiskCache]; + } +} + +- (BOOL)_isDiskCacheDirty { + if (!_lastDiskCacheModDate) { + return YES; + } + + NSDate *modificationDate = [self _modificationDateOfCacheEntryAtURL:_cacheDirectoryURL]; + NSTimeInterval knownInterval = [_lastDiskCacheModDate timeIntervalSinceReferenceDate]; + NSTimeInterval actualInterval = [modificationDate timeIntervalSinceReferenceDate]; + + // NOTE: Most file systems (HFS) can only store up to 1 second of precision, whereas NSDate is super high resolution + // Yes, this is actually really bad to have hard coded, as this does give some window where we can get unwanted + // entries in the cache. However, that chance of another process touching this directory is greatly outweighed by + // the performance gained by using this technique. Plus, in the case of concurrent modification, we will never over- + // agressively remove something from the cache, we just might go a little bit over our limit. + return (actualInterval - knownInterval) >= PFKeyValueCacheDiskCacheTimeResolution; +} + +- (void)_invalidateDiskCache { + _lastDiskCacheModDate = nil; + _lastDiskCacheSize = 0; + _lastDiskCacheAttributes = nil; +} + +- (void)_recreateDiskCache { + NSDictionary *cacheDirectoryAttributes = [self.fileManager attributesOfItemAtPath:_cacheDirectoryURL.path error:NULL]; + + _lastDiskCacheModDate = cacheDirectoryAttributes[NSFileModificationDate]; + _lastDiskCacheSize = 0; + _lastDiskCacheAttributes = [[NSMutableArray alloc] init]; + + NSDirectoryEnumerator *enumerator = [self.fileManager enumeratorAtPath:[_cacheDirectoryURL path]]; + NSString *path = nil; + + while ((path = [enumerator nextObject]) != nil) { + [enumerator skipDescendants]; + + NSDictionary *attributes = enumerator.fileAttributes; + NSUInteger size = [attributes[NSFileSize] unsignedIntegerValue]; + + _lastDiskCacheSize += size; + + // NOTE: Do not use -copy here, as fileAttributes are lazily-loaded, we would run into issues with a lot of + // syscalls all at once here. + [self _addToDiskCacheDictionary:path + modificationDate:attributes[NSFileModificationDate] + size:size]; + } +} + +- (void)_addToDiskCacheDictionary:(NSString *)path modificationDate:(NSDate *)modificationDate size:(NSUInteger)size { + NSDictionary *entry = @{ + PFKeyValueCacheDiskCachePathKey: path, + NSFileModificationDate: modificationDate, + NSFileSize: @(size) + }; + + NSInteger insertionIndex = [_lastDiskCacheAttributes indexOfObject:entry + inSortedRange:NSMakeRange(0, _lastDiskCacheAttributes.count) + options:NSBinarySearchingInsertionIndex + usingComparator:^NSComparisonResult(id obj1, id obj2) { + return [obj1[NSFileModificationDate] compare:obj2[NSFileModificationDate]]; + }]; + + [_lastDiskCacheAttributes insertObject:entry atIndex:insertionIndex]; +} + +- (void)_compactDiskCache { + if ([self _isDiskCacheDirty]) { + [self _recreateDiskCache]; + } + + while (_lastDiskCacheAttributes.count > _maxDiskCacheRecords || _lastDiskCacheSize > _maxDiskCacheBytes) { + NSDictionary *attributes = [_lastDiskCacheAttributes firstObject]; + NSString *toRemove = attributes[PFKeyValueCacheDiskCachePathKey]; + NSNumber *fileSize = attributes[NSFileSize]; + + [self.fileManager removeItemAtURL:[self _cacheURLForKey:toRemove] error:NULL]; + _lastDiskCacheSize -= [fileSize unsignedIntegerValue]; + + [_lastDiskCacheAttributes removeObjectAtIndex:0]; + } +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/KeyValueCache/PFKeyValueCache_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/KeyValueCache/PFKeyValueCache_Private.h new file mode 100644 index 0000000..6c45b6d --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/KeyValueCache/PFKeyValueCache_Private.h @@ -0,0 +1,66 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFKeyValueCache.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFKeyValueCache () + +///-------------------------------------- +/// @name Properties +///-------------------------------------- + +@property (nullable, nonatomic, strong, readwrite) NSFileManager *fileManager; +@property (nullable, nonatomic, strong, readwrite) NSCache *memoryCache; + +@property (nonatomic, assign) NSUInteger maxDiskCacheBytes; +@property (nonatomic, assign) NSUInteger maxDiskCacheRecords; +@property (nonatomic, assign) NSUInteger maxMemoryCacheBytesPerRecord; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)initWithCacheDirectoryURL:(nullable NSURL *)url + fileManager:(nullable NSFileManager *)fileManager + memoryCache:(nullable NSCache *)cache NS_DESIGNATED_INITIALIZER; + +///-------------------------------------- +/// @name Waiting +///-------------------------------------- + +- (void)waitForOutstandingOperations; + +@end + +@interface PFKeyValueCacheEntry : NSObject + +///-------------------------------------- +/// @name Properties +///-------------------------------------- + +@property (atomic, copy, readonly) NSString *value; +@property (atomic, strong, readonly) NSDate *creationTime; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + ++ (instancetype)cacheEntryWithValue:(NSString *)value; ++ (instancetype)cacheEntryWithValue:(NSString *)value creationTime:(NSDate *)creationTime; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithValue:(NSString *)value; +- (instancetype)initWithValue:(NSString *)value + creationTime:(NSDate *)creationTime NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.h new file mode 100644 index 0000000..ff8bfa2 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.h @@ -0,0 +1,79 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFMacros.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFObject; +@class PFOfflineStore; +@class PFQueryState; +@class PFSQLiteDatabase; +@class PFUser; + +typedef BFTask PF_GENERIC(NSNumber *)* (^PFConstraintMatcherBlock)(PFObject *object, PFSQLiteDatabase *database); + +typedef NS_OPTIONS(uint8_t, PFOfflineQueryOption) { + PFOfflineQueryOptionOrder = 1 << 0, + PFOfflineQueryOptionLimit = 1 << 1, + PFOfflineQueryOptionSkip = 1 << 2, +}; + +@interface PFOfflineQueryLogic : NSObject + +/*! + Initialize an `PFOfflineQueryLogic` instance with `PFOfflineStore` instance. + `PFOfflineStore` is needed for subQuery, inQuery and fetch. + */ +- (instancetype)initWithOfflineStore:(PFOfflineStore *)offlineStore; + +/*! + @returns YES iff the object is visible based on its read ACL and the given user objectId. + */ ++ (BOOL)userHasReadAccess:(PFUser *)user ofObject:(PFObject *)object; + +/*! + @returns YES iff the object is visible based on its read ACL and the given user objectId. + */ ++ (BOOL)userHasWriteAccess:(PFUser *)user ofObject:(PFObject *)object; + +/*! + Returns a PFConstraintMatcherBlock that returns true iff the object matches the given + query's constraints. This takes in a PFSQLiteDatabase connection because SQLite is finicky + about nesting connections, so we want to reuse them whenever possible. + */ +- (PFConstraintMatcherBlock)createMatcherForQueryState:(PFQueryState *)queryState user:(PFUser *)user; + +/*! + Sort given array with given `PFQuery` constraint. + + @returns sorted result. + */ +- (NSArray *)resultsByApplyingOptions:(PFOfflineQueryOption)options + ofQueryState:(PFQueryState *)queryState + toResults:(NSArray *)results; + +/*! + Make sure all of the objects included by the given query get fetched. + */ +- (BFTask *)fetchIncludesAsyncForResults:(NSArray *)results + ofQueryState:(PFQueryState *)queryState + inDatabase:(PFSQLiteDatabase *)database; + +/*! + Make sure all of the objects included by the given query get fetched. + */ +- (BFTask *)fetchIncludesForObjectAsync:(PFObject *)object + queryState:(PFQueryState *)queryState + database:(PFSQLiteDatabase *)database; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m new file mode 100644 index 0000000..63168ce --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m @@ -0,0 +1,918 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFOfflineQueryLogic.h" + +#import + +#import "PFACL.h" +#import "PFAssert.h" +#import "PFConstants.h" +#import "PFDateFormatter.h" +#import "PFDecoder.h" +#import "PFEncoder.h" +#import "PFErrorUtilities.h" +#import "PFGeoPoint.h" +#import "PFOfflineStore.h" +#import "PFQueryPrivate.h" +#import "PFRelation.h" +#import "PFRelationPrivate.h" + +typedef BOOL (^PFComparatorDeciderBlock)(id value, id constraint); +typedef BOOL (^PFSubQueryMatcherBlock)(id object, NSArray *results); + +/*! + A query to be used in $inQuery, $notInQuery, $select and $dontSelect + */ +@interface PFSubQueryMatcher : NSObject + +@property (nonatomic, strong, readonly) PFQuery *subQuery; +@property (nonatomic, strong) BFTask *subQueryResults; +@property (nonatomic, strong, readonly) PFOfflineStore *offlineStore; + +@end + +@implementation PFSubQueryMatcher + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithSubQuery:(PFQuery *)query offlineStore:(PFOfflineStore *)offlineStore { + if ((self = [super init]) != nil) { + _subQuery = query; + _offlineStore = offlineStore; + } + + return self; +} + +///-------------------------------------- +#pragma mark - SubQuery Matcher Creator +///-------------------------------------- + +- (PFConstraintMatcherBlock)createMatcherWithSubQueryMatcherBlock:(PFSubQueryMatcherBlock)block user:(PFUser *)user { + return ^BFTask *(PFObject *object, PFSQLiteDatabase *database) { + if (self.subQueryResults == nil) { + self.subQueryResults = [self.offlineStore findAsyncForQueryState:self.subQuery.state + user:user + pin:nil + isCount:NO + database:database]; + } + return [self.subQueryResults continueWithSuccessBlock:^id(BFTask *task) { + return @(block(object, task.result)); + }]; + }; +} + +@end + +@interface PFOfflineQueryLogic () + +@property (nonatomic, weak) PFOfflineStore *offlineStore; + +@end + +@implementation PFOfflineQueryLogic + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithOfflineStore:(PFOfflineStore *)offlineStore { + if ((self = [super init]) != nil) { + _offlineStore = offlineStore; + } + return self; +} + +///-------------------------------------- +#pragma mark - Value Getter +///-------------------------------------- + +- (id)valueForContainer:(id)container + key:(NSString *)key { + return [self valueForContainer:container key:key depth:0]; +} + +- (id)valueForContainer:(id)container + key:(NSString *)key + depth:(int)depth { + if ([key rangeOfString:@"."].location != NSNotFound) { + NSArray *parts = [key componentsSeparatedByString:@"."]; + + NSString *firstKey = [parts firstObject]; + NSString *rest = nil; + if ([parts count] > 1) { + NSRange range = NSMakeRange(1, [parts count] - 1); + rest = [[parts subarrayWithRange:range] componentsJoinedByString:@"."]; + } + id value = [self valueForContainer:container key:firstKey depth:depth + 1]; + // Only NSDictionary can be dotted into for getting values, so we should reject + // anything like ParseObjects and arrays. + if (!(value == nil || [value isKindOfClass:[NSDictionary class]])) { + if (depth > 0) { + id restFormat = [[PFPointerObjectEncoder objectEncoder] encodeObject:value]; + if ([restFormat isKindOfClass:[NSDictionary class]]) { + return [self valueForContainer:restFormat key:rest depth:depth + 1]; + } + } + [NSException raise:NSInvalidArgumentException format:@"Key %@ is invalid", key]; + } + return [self valueForContainer:value key:rest depth:depth + 1]; + } + + if ([container isKindOfClass:[PFObject class]]) { + PFObject *object = (PFObject *)container; + + // The object needs to have been fetched already if we are going to sort by one of its field. + PFParameterAssert(object.isDataAvailable, @"Bad key %@", key); + + // Handle special keys for PFObject. + if ([key isEqualToString:@"objectId"]) { + return object.objectId; + } else if ([key isEqualToString:@"createdAt"] || [key isEqualToString:@"_created_at"]) { + return object.createdAt; + } else if ([key isEqualToString:@"updatedAt"] || [key isEqualToString:@"_updated_at"]) { + return object.updatedAt; + } else { + return object[key]; + } + } else if ([container isKindOfClass:[NSDictionary class]]) { + return ((NSDictionary *)container)[key]; + } else if (container == nil) { + return nil; + } else { + [NSException raise:NSInvalidArgumentException format:@"Bad key %@", key]; + // Shouldn't reach here. + return nil; + } +} + +///-------------------------------------- +#pragma mark - Matcher With Decider +///-------------------------------------- + +/*! + Returns YES if decider returns YES for any value in the given array. + */ ++ (BOOL)matchesArray:(NSArray *)array + constraint:(id)constraint + withDecider:(PFComparatorDeciderBlock)decider { + for (id value in array) { + if (decider(value, constraint)) { + return YES; + } + } + return NO; +} + +/*! + Returns YES if decider returns YES for any value in the given array. + */ ++ (BOOL)matchesValue:(id)value + constraint:(id)constraint + withDecider:(PFComparatorDeciderBlock)decider { + if ([value isKindOfClass:[NSArray class]]) { + return [self matchesArray:value constraint:constraint withDecider:decider]; + } else { + return decider(value, constraint); + } +} + +///-------------------------------------- +#pragma mark - Matcher +///-------------------------------------- + +/*! + Implements simple equality constraints. This emulates Mongo's behavior where "equals" can mean array containment. + */ ++ (BOOL)matchesValue:(id)value + equalTo:(id)constraint { + return [self matchesValue:value constraint:constraint withDecider:^BOOL (id value, id constraint) { + // Do custom matching for dates to make sure we have proper precision. + if ([value isKindOfClass:[NSDate class]] && + [constraint isKindOfClass:[NSDate class]]) { + PFDateFormatter *dateFormatter = [PFDateFormatter sharedFormatter]; + NSString *valueString = [dateFormatter preciseStringFromDate:value]; + NSString *constraintString = [dateFormatter preciseStringFromDate:constraint]; + return [valueString isEqual:constraintString]; + } + + if ([value isKindOfClass:[PFRelation class]]) { + return [value isEqual:constraint] || [value _hasKnownObject:constraint]; + } + + return [value isEqual:constraint]; + }]; +} + +/*! + Matches $ne constraints. + */ ++ (BOOL)matchesValue:(id)value + notEqualTo:(id)constraint { + return ![self matchesValue:value equalTo:constraint]; +} + +/*! + Matches $lt constraints. + */ ++ (BOOL)matchesValue:(id)value + lessThan:(id)constraint { + return [self matchesValue:value constraint:constraint withDecider:^BOOL (id value, id constraint) { + if (value == nil || value == [NSNull null]) { + return NO; + } + NSComparisonResult comparisonResult = [value compare:constraint]; + return comparisonResult == NSOrderedAscending; + }]; +} + +/*! + Matches $lte constraints. + */ ++ (BOOL)matchesValue:(id)value + lessThanOrEqualTo:(id)constraint { + return [self matchesValue:value constraint:constraint withDecider:^BOOL (id value, id constraint) { + if (value == nil || value == [NSNull null]) { + return NO; + } + NSComparisonResult comparisonResult = [value compare:constraint]; + return (comparisonResult == NSOrderedAscending) || (comparisonResult == NSOrderedSame); + }]; +} + +/*! + Matches $gt constraints. + */ ++ (BOOL)matchesValue:(id)value + greaterThan:(id)constraint { + return [self matchesValue:value constraint:constraint withDecider:^BOOL (id value, id constraint) { + if (value == nil || value == [NSNull null]) { + return NO; + } + NSComparisonResult comparisonResult = [value compare:constraint]; + return comparisonResult == NSOrderedDescending; + }]; +} + +/*! + Matches $gte constraints. + */ ++ (BOOL)matchesValue:(id)value +greaterThanOrEqualTo:(id)constraint { + return [self matchesValue:value constraint:constraint withDecider:^BOOL (id value, id constraint) { + if (value == nil || value == [NSNull null]) { + return NO; + } + NSComparisonResult comparisonResult = [value compare:constraint]; + return (comparisonResult == NSOrderedDescending) || (comparisonResult == NSOrderedSame); + }]; +} + +/*! + Matches $in constraints. + $in returns YES if the intersection of value and constraint is not an empty set. + */ ++ (BOOL)matchesValue:(id)value + containedIn:(id)constraint { + if (constraint == nil || constraint == [NSNull null]) { + return NO; + } + + PFParameterAssert([constraint isKindOfClass:[NSArray class]], @"Constraint type not supported for $in queries"); + + for (id requiredItem in (NSArray *)constraint) { + if ([self matchesValue:value equalTo:requiredItem]) { + return YES; + } + } + return NO; +} + +/*! + Matches $nin constraints. + */ ++ (BOOL)matchesValue:(id)value + notContainedIn:(id)constraint { + return ![self matchesValue:value containedIn:constraint]; +} + +/*! + Matches $all constraints. + */ ++ (BOOL)matchesValue:(id)value containsAllObjectsInArray:(id)constraints { + PFParameterAssert([constraints isKindOfClass:[NSArray class]], @"Constraint type not supported for $all queries"); + PFParameterAssert([value isKindOfClass:[NSArray class]], @"Value type not supported for $all queries"); + + for (id requiredItem in (NSArray *)constraints) { + if (![self matchesValue:value equalTo:requiredItem]) { + return NO; + } + } + return YES; +} + +/*! + Matches $regex constraints. + */ ++ (BOOL)matchesValue:(id)value + regex:(id)constraint + withOptions:(NSString *)options { + if (value == nil || value == [NSNull null]) { + return NO; + } + + if (options == nil) { + options = @""; + } + + PFParameterAssert([options rangeOfString:@"^[imxs]*$" options:NSRegularExpressionSearch].location != NSNotFound, + @"Invalid regex options %@", options); + + NSRegularExpressionOptions flags = 0; + if ([options rangeOfString:@"i"].location != NSNotFound) { + flags = flags | NSRegularExpressionCaseInsensitive; + } + if ([options rangeOfString:@"m"].location != NSNotFound) { + flags = flags | NSRegularExpressionAnchorsMatchLines; + } + if ([options rangeOfString:@"x"].location != NSNotFound) { + flags = flags | NSRegularExpressionAllowCommentsAndWhitespace; + } + if ([options rangeOfString:@"s"].location != NSNotFound) { + flags = flags | NSRegularExpressionDotMatchesLineSeparators; + } + + NSError *error = nil; + NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:constraint + options:flags + error:&error]; + NSArray *matches = [regex matchesInString:value options:0 range:NSMakeRange(0, [value length])]; + return matches.count > 0; +} + +/*! + Matches $exists constraints. + */ ++ (BOOL)matchesValue:(id)value + exists:(id)constraint { + if (constraint != nil && [constraint boolValue]) { + return value != nil && value != [NSNull null]; + } + + return value == nil || value == [NSNull null]; +} + +/*! + Matches $nearSphere constraints. + */ ++ (BOOL)matchesValue:(id)value + nearSphere:(id)constraint + maxDistance:(NSNumber *)maxDistance { + if (value == nil || value == [NSNull null]) { + return NO; + } + if (maxDistance == nil) { + return YES; + } + PFGeoPoint *point1 = constraint; + PFGeoPoint *point2 = value; + return [point1 distanceInRadiansTo:point2] <= [maxDistance doubleValue]; +} + +/*! + Matches $within constraints. + */ ++ (BOOL)matchesValue:(id)value + within:(id)constraint { + NSDictionary *constraintDictionary = (NSDictionary *)constraint; + NSArray *box = constraintDictionary[PFQueryOptionKeyBox]; + PFGeoPoint *southWest = box[0]; + PFGeoPoint *northEast = box[1]; + PFGeoPoint *target = (PFGeoPoint *)value; + + PFParameterAssert(northEast.longitude >= southWest.longitude, + @"whereWithinGeoBox queries cannot cross the International Date Line."); + PFParameterAssert(northEast.latitude >= southWest.latitude, + @"The southwest corner of a geo box must be south of the northeast corner."); + PFParameterAssert((northEast.longitude - southWest.longitude) <= 180, + @"Geo box queries larger than 180 degrees in longitude are not supported." + @"Please check point order."); + + return (target.latitude >= southWest.latitude && + target.latitude <= northEast.latitude && + target.longitude >= southWest.longitude && + target.longitude <= northEast.longitude); +} + +/*! + Returns YES iff the given value matches the given operator and constraint. + Raise NSInvalidArgumentException if the operator is not one this function can handle + */ ++ (BOOL)matchesValue:(id)value + constraint:(id)constraint + operator:(NSString *)operator + allKeyConstraints:(NSDictionary *)allKeyConstraints { + if ([operator isEqualToString:PFQueryKeyNotEqualTo]) { + return [self matchesValue:value notEqualTo:constraint]; + } else if ([operator isEqualToString:PFQueryKeyLessThan]) { + return [self matchesValue:value lessThan:constraint]; + } else if ([operator isEqualToString:PFQueryKeyLessThanEqualTo]) { + return [self matchesValue:value lessThanOrEqualTo:constraint]; + } else if ([operator isEqualToString:PFQueryKeyGreaterThan]) { + return [self matchesValue:value greaterThan:constraint]; + } else if ([operator isEqualToString:PFQueryKeyGreaterThanOrEqualTo]) { + return [self matchesValue:value greaterThanOrEqualTo:constraint]; + } else if ([operator isEqualToString:PFQueryKeyContainedIn]) { + return [self matchesValue:value containedIn:constraint]; + } else if ([operator isEqualToString:PFQueryKeyNotContainedIn]) { + return [self matchesValue:value notContainedIn:constraint]; + } else if ([operator isEqualToString:PFQueryKeyContainsAll]) { + return [self matchesValue:value containsAllObjectsInArray:constraint]; + } else if ([operator isEqualToString:PFQueryKeyRegex]) { + return [self matchesValue:value regex:constraint withOptions:allKeyConstraints[PFQueryOptionKeyRegexOptions]]; + } else if ([operator isEqualToString:PFQueryOptionKeyRegexOptions]) { + // No need to do anything. This is handled by $regex. + return YES; + } else if ([operator isEqualToString:PFQueryKeyExists]) { + return [self matchesValue:value exists:constraint]; + } else if ([operator isEqualToString:PFQueryKeyNearSphere]) { + return [self matchesValue:value + nearSphere:constraint + maxDistance:allKeyConstraints[PFQueryOptionKeyMaxDistance]]; + } else if ([operator isEqualToString:PFQueryOptionKeyMaxDistance]) { + // No need to do anything. This is handled by $nearSphere. + return YES; + } else if ([operator isEqualToString:PFQueryKeyWithin]) { + return [self matchesValue:value within:constraint]; + } + + [NSException raise:NSInvalidArgumentException + format:@"The offline store does not yet support %@ operator.", operator]; + // Shouldn't reach here + return YES; +} + +/*! + Creates a matcher that handles $inQuery constraints. + */ +- (PFConstraintMatcherBlock)createMatcherForKey:(NSString *)key + inQuery:(id)constraints + user:(PFUser *)user { + PFQuery *query = (PFQuery *)constraints; + PFSubQueryMatcher *subQueryMatcher = [[PFSubQueryMatcher alloc] initWithSubQuery:query + offlineStore:self.offlineStore]; + return [subQueryMatcher createMatcherWithSubQueryMatcherBlock:^BOOL(id object, NSArray *results) { + id value = [self valueForContainer:object key:key]; + return [[self class] matchesValue:value containedIn:results]; + } user:user]; +} + +/*! + Creates a matcher that handles $notInQuery constraints. + */ +- (PFConstraintMatcherBlock)createMatcherForKey:(NSString *)key + notInQuery:(id)constraints + user:(PFUser *)user { + PFConstraintMatcherBlock inQueryMatcher = [self createMatcherForKey:key inQuery:constraints user:user]; + return ^BFTask *(PFObject *object, PFSQLiteDatabase *database) { + return [inQueryMatcher(object, database) continueWithSuccessBlock:^id(BFTask *task) { + return @(![task.result boolValue]); + }]; + }; +} + +/*! + Creates a matcher that handles $select constraints. + */ +- (PFConstraintMatcherBlock)createMatcherForKey:(NSString *)key + select:(id)constraints + user:(PFUser *)user { + NSDictionary *constraintDictionary = (NSDictionary *)constraints; + PFQuery *query = (PFQuery *)constraintDictionary[PFQueryKeyQuery]; + NSString *resultKey = (NSString *)constraintDictionary[PFQueryKeyKey]; + PFSubQueryMatcher *subQueryMatcher = [[PFSubQueryMatcher alloc] initWithSubQuery:query + offlineStore:self.offlineStore]; + return [subQueryMatcher createMatcherWithSubQueryMatcherBlock:^BOOL(id object, NSArray *results) { + id value = [self valueForContainer:object key:key]; + for (id result in results) { + id resultValue = [self valueForContainer:result key:resultKey]; + if ([[self class] matchesValue:resultValue equalTo:value]) { + return YES; + } + } + return NO; + } user:user]; +} + +/*! + Creates a matcher that handles $dontSelect constraints. + */ +- (PFConstraintMatcherBlock)createMatcherForKey:(NSString *)key + dontSelect:(id)constraints + user:(PFUser *)user { + PFConstraintMatcherBlock selectMatcher = [self createMatcherForKey:key select:constraints user:user]; + return ^BFTask *(PFObject *object, PFSQLiteDatabase *database) { + return [selectMatcher(object, database) continueWithSuccessBlock:^id(BFTask *task) { + return @(![task.result boolValue]); + }]; + }; +} + +/*! + Creates a matcher for a particular constraint operator. + */ +- (PFConstraintMatcherBlock)createMatcherWithOperator:(NSString *)operator + constraints:(id)constraint + key:(NSString *)key + allKeyConstraints:(NSDictionary *)allKeyConstraints + user:(PFUser *)user { + if ([operator isEqualToString:PFQueryKeyInQuery]) { + return [self createMatcherForKey:key inQuery:constraint user:user]; + } else if ([operator isEqualToString:PFQueryKeyNotInQuery]) { + return [self createMatcherForKey:key notInQuery:constraint user:user]; + } else if ([operator isEqualToString:PFQueryKeySelect]) { + return [self createMatcherForKey:key select:constraint user:user]; + } else if ([operator isEqualToString:PFQueryKeyDontSelect]) { + return [self createMatcherForKey:key dontSelect:constraint user:user]; + } else { + return ^BFTask *(PFObject *object, PFSQLiteDatabase *database) { + id value = [self valueForContainer:object key:key]; + BOOL matchesValue = [[self class] matchesValue:value + constraint:constraint + operator:operator + allKeyConstraints:allKeyConstraints]; + return [BFTask taskWithResult:@(matchesValue)]; + }; + } +} + +/*! + Handles $or queries. + */ +- (PFConstraintMatcherBlock)createOrMatcherForQueries:(NSArray *)queries user:(PFUser *)user { + NSMutableArray *matchers = [NSMutableArray array]; + for (PFQuery *query in queries) { + PFConstraintMatcherBlock matcher = [self createMatcherWithQueryConstraints:query.state.conditions user:user]; + [matchers addObject:matcher]; + } + + // Now OR together the constraints for each query. + return ^BFTask *(PFObject *object, PFSQLiteDatabase *database) { + BFTask *task = [BFTask taskWithResult:@NO]; + for (PFConstraintMatcherBlock matcher in matchers) { + task = [task continueWithSuccessBlock:^id(BFTask *task) { + if ([task.result boolValue]) { + return task; + } + return matcher(object, database); + }]; + } + return task; + }; +} + +/*! + Returns a PFConstraintMatcherBlock that return true iff the object matches queryConstraints. This + takes in a SQLiteDatabase connection because SQLite is finicky about nesting connections, so we + want to reuse them whenever possible. + */ +- (PFConstraintMatcherBlock)createMatcherWithQueryConstraints:(NSDictionary *)queryConstraints user:(PFUser *)user { + NSMutableArray *matchers = [[NSMutableArray alloc] init]; + [queryConstraints enumerateKeysAndObjectsUsingBlock:^(id key, id queryConstraintValue, BOOL *stop) { + if ([key isEqualToString:PFQueryKeyOr]) { + // A set of queries to be OR-ed together + PFConstraintMatcherBlock matcher = [self createOrMatcherForQueries:queryConstraintValue user:user]; + [matchers addObject:matcher]; + } else if ([key isEqualToString:PFQueryKeyRelatedTo]) { + PFConstraintMatcherBlock matcher = ^BFTask *(PFObject *object, PFSQLiteDatabase *database) { + PFObject *parent = queryConstraintValue[PFQueryKeyObject]; + NSString *relationKey = queryConstraintValue[PFQueryKeyKey]; + PFRelation *relation = parent[relationKey]; + + return [BFTask taskWithResult:@([relation _hasKnownObject:object])]; + }; + [matchers addObject:matcher]; + } else if ([queryConstraintValue isKindOfClass:[NSDictionary class]]) { + // If it's a set of constraints that should be AND-ed together + NSDictionary *keyConstraints = (NSDictionary *)queryConstraintValue; + [keyConstraints enumerateKeysAndObjectsUsingBlock:^(id operator, id keyConstraintValue, BOOL *stop) { + PFConstraintMatcherBlock matcher = [self createMatcherWithOperator:operator + constraints:keyConstraintValue + key:key + allKeyConstraints:keyConstraints + user:user]; + [matchers addObject:matcher]; + }]; + } else { + // It's not a set of constraints, so it's just a value to compare against. + PFConstraintMatcherBlock matcher = ^BFTask *(PFObject *object, PFSQLiteDatabase *database) { + id objectValue = [self valueForContainer:object key:key]; + BOOL matches = [[self class] matchesValue:objectValue equalTo:queryConstraintValue]; + return [BFTask taskWithResult:@(matches)]; + }; + [matchers addObject:matcher]; + } + }]; + + // Now AND together the constraints for each key + return ^BFTask *(PFObject *object, PFSQLiteDatabase *database) { + BFTask *task = [BFTask taskWithResult:@YES]; + for (PFConstraintMatcherBlock matcher in matchers) { + task = [task continueWithSuccessBlock:^id(BFTask *task) { + if (![task.result boolValue]) { + return task; + } + @try { + return matcher(object, database); + } @catch (NSException *exception) { + // Promote to error to keep the same behavior as online. + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorInvalidQuery + message:exception.reason + shouldLog:NO]; + return [BFTask taskWithError:error]; + } + }]; + } + return task; + }; +} + +///-------------------------------------- +#pragma mark - Fetch +///-------------------------------------- + +- (BFTask *)fetchIncludeAsync:(NSString *)include + container:(id)container + database:(PFSQLiteDatabase *)database { + if (container == nil) { + return [BFTask taskWithResult:nil]; + } + + if ([container isKindOfClass:[NSArray class]]) { + NSArray *array = (NSArray *)container; + // We do the fetches in series because it makes it easier to fail on the first error. + BFTask *task = [BFTask taskWithResult:nil]; + for (id item in array) { + task = [task continueWithSuccessBlock:^id(BFTask *task) { + return [self fetchIncludeAsync:include container:item database:database]; + }]; + } + return task; + } + + // If we've reached the end of include, then actually do the fetch. + if (include == nil) { + if ([container isKindOfClass:[PFObject class]]) { + PFObject *object = (PFObject *)container; + return [self.offlineStore fetchObjectLocallyAsync:object database:database]; + } else if (container == [NSNull null]) { + // Accept NSNull value in included field. We swallow it silently instead of + // throwing an exception. + return nil; + } + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorInvalidNestedKey + message:@"include is invalid for non-ParseObjects"]; + return [BFTask taskWithError:error]; + } + + // Descend into the container and try again + NSArray *parts = [include componentsSeparatedByString:@"."]; + + NSString *key = [parts firstObject]; + NSString *rest = nil; + if ([parts count] > 1) { + NSRange range = NSMakeRange(1, [parts count] - 1); + rest = [[parts subarrayWithRange:range] componentsJoinedByString:@"."]; + } + + return [[[BFTask taskWithResult:nil] continueWithBlock:^id(BFTask *task) { + if ([container isKindOfClass:[PFObject class]]) { + BFTask *fetchTask = [self fetchIncludeAsync:nil container:container database:database]; + return [fetchTask continueWithSuccessBlock:^id(BFTask *task) { + return ((PFObject *)container)[key]; + }]; + } else if ([container isKindOfClass:[NSDictionary class]]) { + return ((NSDictionary *)container)[key]; + } else if (container == [NSNull null]) { + // Accept NSNull value in included field. We swallow it silently instead of + // throwing an exception. + return nil; + } + NSException *exception = [NSException exceptionWithName:NSInternalInconsistencyException + reason:@"include is invalid" + userInfo:nil]; + return [BFTask taskWithException:exception]; + }] continueWithSuccessBlock:^id(BFTask *task) { + return [self fetchIncludeAsync:rest container:task.result database:database]; + }]; +} + +///-------------------------------------- +#pragma mark - User Access +///-------------------------------------- + ++ (BOOL)userHasReadAccess:(PFUser *)user ofObject:(PFObject *)object { + if (user == object) { + return YES; + } + + PFACL *acl = [object ACL]; + if (acl == nil) { + return YES; + } + if ([acl getPublicReadAccess]) { + return YES; + } + if (user != nil && [acl getReadAccessForUser:user]) { + return YES; + } + + // TODO (hallucinogen): Implement roles + return NO; +} + ++ (BOOL)userHasWriteAccess:(PFUser *)user ofObject:(PFObject *)object { + if (user == object) { + return YES; + } + + PFACL *acl = [object ACL]; + if (acl == nil) { + return YES; + } + if ([acl getPublicWriteAccess]) { + return YES; + } + if (user != nil && [acl getWriteAccessForUser:user]) { + return YES; + } + + // TODO (hallucinogen): Implement roles + return NO; +} + +///-------------------------------------- +#pragma mark - Internal Public Methods +///-------------------------------------- + +- (PFConstraintMatcherBlock)createMatcherForQueryState:(PFQueryState *)queryState user:(PFUser *)user { + PFConstraintMatcherBlock constraintMatcher = [self createMatcherWithQueryConstraints:queryState.conditions + user:user]; + // Capture ignoreACLs before the block since it might be modified between matchings. + BOOL shouldIgnoreACLs = queryState.shouldIgnoreACLs; + + return ^BFTask *(PFObject *object, PFSQLiteDatabase *database) { + // TODO (hallucinogen): revisit this whether we should check query and object parseClassname equality + if (!shouldIgnoreACLs && ![[self class] userHasReadAccess:user ofObject:object]) { + return [BFTask taskWithResult:@NO]; + } + return constraintMatcher(object, database); + }; +} + +///-------------------------------------- +#pragma mark - Query Options +///-------------------------------------- + +- (NSArray *)resultsByApplyingOptions:(PFOfflineQueryOption)options + ofQueryState:(PFQueryState *)queryState + toResults:(NSArray *)results { + // No results or empty options. + if (results.count == 0 || options == 0) { + return results; + } + + NSMutableArray *mutableResults = [results mutableCopy]; + if (options & PFOfflineQueryOptionOrder) { + [self _sortResults:mutableResults ofQueryState:queryState]; + } + if (options & PFOfflineQueryOptionSkip) { + NSInteger skip = queryState.skip; + if (skip > 0) { + skip = MIN(skip, results.count); + [mutableResults removeObjectsInRange:NSMakeRange(0, skip)]; + } + } + if (options & PFOfflineQueryOptionLimit) { + NSInteger limit = queryState.limit; + if (limit >= 0 && mutableResults.count > limit) { + [mutableResults removeObjectsInRange:NSMakeRange(limit, mutableResults.count - limit)]; + } + } + + return [mutableResults copy]; +} + +- (void)_sortResults:(NSMutableArray *)results ofQueryState:(PFQueryState *)queryState { + NSArray *keys = queryState.sortKeys; + [keys enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + NSString *key = (NSString *)obj; + if ([key rangeOfString:@"^-?[A-Za-z][A-Za-z0-9_]*$" options:NSRegularExpressionSearch].location == NSNotFound) { + PFConsistencyAssert([@"_created_at" isEqualToString:key] || [@"_updated_at" isEqualToString:key], + @"Invalid key name: %@", key); + } + }]; + + __block NSString *nearSphereKey = nil; + __block PFGeoPoint *nearSphereValue = nil; + [queryState.conditions enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + if ([obj isKindOfClass:[NSDictionary class]]) { + NSDictionary *keyConstraints = (NSDictionary *)obj; + if (keyConstraints[PFQueryKeyNearSphere]) { + nearSphereKey = [key copy]; + nearSphereValue = keyConstraints[PFQueryKeyNearSphere]; + } + } + }]; + + // If there's nothing to sort based on, then don't do anything. + if (keys.count == 0 && nearSphereKey == nil) { + return; + } + + [results sortUsingComparator:^NSComparisonResult(id lhs, id rhs) { + if (nearSphereKey != nil) { + PFGeoPoint *lhsPoint = [self valueForContainer:lhs key:nearSphereKey]; + PFGeoPoint *rhsPoint = [self valueForContainer:rhs key:nearSphereKey]; + + double lhsDistance = [lhsPoint distanceInRadiansTo:nearSphereValue]; + double rhsDistance = [rhsPoint distanceInRadiansTo:nearSphereValue]; + if (lhsDistance != rhsDistance) { + return (lhsDistance - rhsDistance < 0) ? NSOrderedAscending : NSOrderedDescending; + } + } + + for (int i = 0; i < keys.count; ++i) { + NSString *key = keys[i]; + BOOL descending = NO; + if ([key hasPrefix:@"-"]) { + descending = YES; + key = [key substringFromIndex:1]; + } + + id lhsValue = [self valueForContainer:lhs key:key]; + id rhsValue = [self valueForContainer:rhs key:key]; + + NSComparisonResult result = NSOrderedSame; + if (lhsValue != nil && rhsValue == nil) { + result = NSOrderedAscending; + } else if (lhsValue == nil && rhsValue != nil) { + result = NSOrderedDescending; + } else if (lhsValue == nil && rhsValue == nil) { + result = NSOrderedSame; + } else { + result = [lhsValue compare:rhsValue]; + } + + if (result != 0) { + return descending ? -result : result; + } + + } + + return NSOrderedSame; + }]; +} + +- (BFTask *)fetchIncludesAsyncForResults:(NSArray *)results + ofQueryState:(PFQueryState *)queryState + inDatabase:(PFSQLiteDatabase *)database { + BFTask *fetchTask = [BFTask taskWithResult:nil]; + for (PFObject *object in results) { + @weakify(self); + fetchTask = [fetchTask continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + return [self fetchIncludesForObjectAsync:object + queryState:queryState + database:database]; + }]; + } + return fetchTask; +} + +- (BFTask *)fetchIncludesForObjectAsync:(PFObject *)object + queryState:(PFQueryState *)queryState + database:(PFSQLiteDatabase *)database { + NSSet *includes = queryState.includedKeys; + // We do the fetches in series because it makes it easier to fail on first error. + BFTask *task = [BFTask taskWithResult:nil]; + for (NSString *include in includes) { + // We do the fetches in series because it makes it easier to fail on the first error. + task = [task continueWithSuccessBlock:^id(BFTask *task) { + return [self fetchIncludeAsync:include container:object database:database]; + }]; + } + return task; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.h new file mode 100644 index 0000000..b8f1c69 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.h @@ -0,0 +1,201 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFMacros.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFFileManager; +@class PFObject; +@class PFPin; +@class PFQueryState; +@class PFSQLiteDatabase; +@class PFUser; + +typedef NS_OPTIONS(uint8_t, PFOfflineStoreOptions) +{ + PFOfflineStoreOptionAlwaysFetchFromSQLite = 1 << 0, +}; + +//TODO: (nlutsenko) Bring this header up to standard with @name, method comments, etc... +@interface PFOfflineStore : NSObject + +@property (nonatomic, assign, readonly) PFOfflineStoreOptions options; +@property (nonatomic, strong, readonly) PFFileManager *fileManager; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithFileManager:(PFFileManager *)fileManager + options:(PFOfflineStoreOptions)options NS_DESIGNATED_INITIALIZER; + +///-------------------------------------- +/// @name Fetch +///-------------------------------------- + +- (BFTask *)fetchObjectLocallyAsync:(PFObject *)object; + +/*! + Gets the data for the given object from the offline database. Returns a task that will be + completed if data for the object was available. If the object is not in the cache, the task + will be faulted, with a CACHE_MISS error. + + @param object The object to fetch. + @param database A database connection to use. + */ +- (BFTask *)fetchObjectLocallyAsync:(PFObject *)object database:(PFSQLiteDatabase *)database; + +///-------------------------------------- +/// @name Save +///-------------------------------------- + +//TODO: (nlutsenko) Remove `includChildren` method, replace with PFLocalStore that wraps OfflineStore + Pin. +- (BFTask *)saveObjectLocallyAsync:(PFObject *)object includeChildren:(BOOL)includeChildren; +- (BFTask *)saveObjectLocallyAsync:(PFObject *)object withChildren:(NSArray *)children; + +/*! + Stores an object (and optionally, every object it points to recursively) in the local database. + If any of the objects have not been fetched from Parse, they will not be stored. However, if + they have changed data, the data will be retained. To get the objects back later, you can use a + ParseQuery with a cache policy that uses the local cache, or you can create an unfetched + pointer with ParseObject.createWithoutData() and then call fetchFromLocalDatastore() on it. + If you modify the object after saving it locally, such as by fetching it or saving it, + those changes will automatically be applied to the cache. + + @param object The root of the objects to save. + @param children If non-empty - these children will be saved to LDS as well. + @param database A database connection to use. + */ +- (BFTask *)saveObjectLocallyAsync:(PFObject *)object + withChildren:(NSArray *)children + database:(PFSQLiteDatabase *)database; + +///-------------------------------------- +/// @name Find +///-------------------------------------- + +/*! + Runs a PFQueryState against the store's contents. + + @returns The objects that match the query's constraint. + */ +- (BFTask *)findAsyncForQueryState:(PFQueryState *)queryState + user:(PFUser *)user + pin:(PFPin *)pin; + +/*! + Runs a PFQueryState against the store's contents. + + @returns The count of objects that match the query's constraint. + */ +- (BFTask *)countAsyncForQueryState:(PFQueryState *)queryState + user:(PFUser *)user + pin:(PFPin *)pin; + +/*! + Runs a PFQueryState against the store's contents. + + @returns The objects that match the query's constraint. + */ +- (BFTask *)findAsyncForQueryState:(PFQueryState *)queryState + user:(PFUser *)user + pin:(PFPin *)pin + isCount:(BOOL)isCount; + +/*! + Runs a PFQueryState against the store's contents. May cause any instances of the object to get fetched from + offline database. (TODO (hallucinogen): should we consider objects in memory but not in Offline Store?) + + @param queryState The query. + @param user The user making the query. + @param pin (Optional) The pin we're querying across. If null, all pins. + @param isCount YES if we're doing count. + @param database The PFSQLiteDatabase + + @returns The objects that match the query's constraint. + */ +- (BFTask *)findAsyncForQueryState:(PFQueryState *)queryState + user:(PFUser *)user + pin:(PFPin *)pin + isCount:(BOOL)isCount + database:(PFSQLiteDatabase *)database; + +///-------------------------------------- +/// @name Update Internal State +///-------------------------------------- + +/*! + Takes an object that has been fetched from the database before and updates it with whatever + data is in memory. This will only be used when data comes back from the server after a fetch + or a save. + */ +- (BFTask *)updateDataForObjectAsync:(PFObject *)object; + +///-------------------------------------- +/// @name Delete +///-------------------------------------- + +/*! + Deletes the given object from Offline Store's pins + */ +- (BFTask *)deleteDataForObjectAsync:(PFObject *)object; + +///-------------------------------------- +/// @name Unpin +///-------------------------------------- + +- (BFTask *)unpinObjectAsync:(PFObject *)object; + +///-------------------------------------- +/// @name Internal Helper Methods +///-------------------------------------- + +/*! + Gets the UUID for the given object, if it has one. Otherwise, creates a new UUID for the object + and adds a new row to the database for the object with no data. + */ +- (BFTask *)getOrCreateUUIDAsyncForObject:(PFObject *)object + database:(PFSQLiteDatabase *)database; + +/*! + This should only be called from `PFObject.objectWithoutDataWithClassName`. + + @returns an object from OfflineStore cache. If nil is returned the object is not found in the cache. + */ +- (PFObject *)getOrCreateObjectWithoutDataWithClassName:(NSString *)className + objectId:(NSString *)objectId; + +/*! + When an object is finished saving, it gets an objectId. Then it should call this method to + clean up the bookeeping around ids. + */ +- (void)updateObjectIdForObject:(PFObject *)object + oldObjectId:(NSString *)oldObjectId + newObjectId:(NSString *)newObjectId; + +///-------------------------------------- +/// @name Unit Test Helper Methods +///-------------------------------------- + +/*! + Used in unit testing only. Clears all in-memory caches so that data must be retrieved from disk. + */ +- (void)simulateReboot; + +/*! + Used in unit testing only. Clears the database on disk. + */ +- (void)clearDatabase; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m new file mode 100644 index 0000000..d90e373 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m @@ -0,0 +1,1067 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFOfflineStore.h" + +#import + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFDecoder.h" +#import "PFEncoder.h" +#import "PFErrorUtilities.h" +#import "PFFileManager.h" +#import "PFJSONSerialization.h" +#import "PFObjectPrivate.h" +#import "PFOfflineQueryLogic.h" +#import "PFPin.h" +#import "PFQueryPrivate.h" +#import "PFSQLiteDatabase.h" +#import "PFSQLiteDatabaseController.h" +#import "PFSQLiteDatabaseResult.h" +#import "PFUser.h" +#import "PFWeakValue.h" +#import "Parse_Private.h" + +typedef BFTask *(^PFOfflineStoreDatabaseExecutionBlock)(PFSQLiteDatabase *database); + +NSString *const PFOfflineStoreDatabaseName = @"ParseOfflineStore"; + +NSString *const PFOfflineStoreTableOfObjects = @"ParseObjects"; +NSString *const PFOfflineStoreKeyOfClassName = @"className"; +NSString *const PFOfflineStoreKeyOfIsDeletingEventually = @"isDeletingEventually"; +NSString *const PFOfflineStoreKeyOfJSON = @"json"; +NSString *const PFOfflineStoreKeyOfObjectId = @"objectId"; +NSString *const PFOfflineStoreKeyOfUUID = @"uuid"; + +NSString *const PFOfflineStoreTableOfDependencies = @"Dependencies"; +NSString *const PFOfflineStoreKeyOfKey = @"key"; + +int const PFOfflineStoreMaximumSQLVariablesCount = 999; + +@interface PFOfflineStore () + +@property (nonatomic, assign, readwrite) PFOfflineStoreOptions options; + +@property (nonatomic, strong, readonly) NSObject *lock; + +/*! + In-memory map of (className, objectId) to ParseObject. This is used so that we can + always return the same instance for a given object. Objects in this map may or may + not be in the database. + */ +@property (nonatomic, strong, readonly) NSMapTable *classNameAndObjectIdToObjectMap; + +/*! + In-memory set of ParseObjects that have been fetched from local database already. + If the object is in the map, a fetch of it has been started. If the value is a + finished task, then the fetch was completed. + */ +@property (nonatomic, strong, readonly) NSMapTable *fetchedObjects; + +/*! + In-memory map of ParseObject to UUID. This is used so that we can always return + the same instance for a given object. Objects in this map may or may not be in the + database. + */ +@property (nonatomic, strong, readonly) NSMapTable *objectToUUIDMap; + +/*! + In-memory map of UUID to ParseObject. This is used so we can always return + the same instance for a given object. The only objects in this map are ones that + are in database. + */ +@property (nonatomic, strong, readonly) NSMapTable *UUIDToObjectMap; + +@property (nonatomic, strong, readonly) PFOfflineQueryLogic *offlineQueryLogic; + +@property (nonatomic, strong, readonly) PFSQLiteDatabaseController *databaseController; + +@end + +@implementation PFOfflineStore + +@synthesize offlineQueryLogic = _offlineQueryLogic; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithFileManager:(PFFileManager *)fileManager options:(PFOfflineStoreOptions)options { + self = [super init]; + if (!self) return nil; + + _options = options; + _fileManager = fileManager; + _databaseController = [PFSQLiteDatabaseController controllerWithFileManager:_fileManager]; + _lock = [[NSObject alloc] init]; + _classNameAndObjectIdToObjectMap = [NSMapTable strongToWeakObjectsMapTable]; + _fetchedObjects = [NSMapTable weakToStrongObjectsMapTable]; + // This is a bit different from what we have in Android. The reason is because the object is quickly + // retained by the OS and we depend on this MapTable to fetch the `uuidTask` of the object. + _objectToUUIDMap = [NSMapTable weakToStrongObjectsMapTable]; + _UUIDToObjectMap = [NSMapTable strongToWeakObjectsMapTable]; + + [[self class] _initializeTablesInBackgroundWithDatabaseController:_databaseController]; + + return self; +} + +///-------------------------------------- +#pragma mark - Fetch +///-------------------------------------- + +- (BFTask *)fetchObjectLocallyAsync:(PFObject *)object { + __block BFTask *fetchTask = nil; + return [[self _performDatabaseOperationAsyncWithBlock:^BFTask *(PFSQLiteDatabase *database) { + // We need this to return the result of `fetchObjectLocallyAsync` instead of returning the + // result of `[database closeAsync]` + fetchTask = [self fetchObjectLocallyAsync:object database:database]; + return fetchTask; + }] continueWithBlock:^id(BFTask *task) { + return fetchTask; + }]; +} + +- (BFTask *)fetchObjectLocallyAsync:(PFObject *)object database:(PFSQLiteDatabase *)database { + BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; + BFTask *uuidTask = nil; + + @synchronized (self.lock) { + BFTask *fetchTask = [self.fetchedObjects objectForKey:object]; + if (fetchTask && !(self.options & PFOfflineStoreOptionAlwaysFetchFromSQLite)) { + // The object has been fetched from offline store, so any data that's in there + // is already reflected in the in-memory version. There's nothing more to do. + return [fetchTask continueWithBlock:^id(BFTask *task) { + return [BFTask taskWithResult:[task.result weakObject]]; + }]; + } + + // Put a placeholder so that anyone else who attempts to fetch this object will just + // wait for this call to finish doing it. + [self.fetchedObjects setObject:[tcs.task continueWithBlock:^id(BFTask *task) { + return [BFTask taskWithResult:[PFWeakValue valueWithWeakObject:task.result]]; + }] forKey:object]; + uuidTask = [self.objectToUUIDMap objectForKey:object]; + } + NSString *className = [object parseClassName]; + NSString *objectId = [object objectId]; + + // If this gets set, then it will contain data from offline store that need to be merged + // into existing object in memory + BFTask *jsonStringTask = [BFTask taskWithResult:nil]; + __block NSString *uuid = nil; + + if (objectId == nil) { + // This object has never been saved to Parse + if (uuidTask == nil) { + // This object was not pulled from the datastore or previously saved to it. + // There's nothing that can be fetched from it. This isn't an error, because it's + // really convenient to try to fetch objects from offline store just to make sure + // they're up-to-date, and we shouldn't force developers to specially handle this case. + } else { + // This object is a new ParseObject that is known to the datastore, but hasn't been + // fetched. The only way this could happen is if the object had previously been stored + // in the offline store, then the object was removed from memory (maybe by rebooting), + // and then an object with a pointer to it was fetched, so we only created the pointer. + // We need to pull the data out of the database using UUID. + + jsonStringTask = [[uuidTask continueWithSuccessBlock:^id(BFTask *task) { + uuid = task.result; + NSString *query = [NSString stringWithFormat:@"SELECT %@ FROM %@ WHERE %@ = ?;", + PFOfflineStoreKeyOfJSON, PFOfflineStoreTableOfObjects, PFOfflineStoreKeyOfUUID]; + return [database executeQueryAsync:query + withArgumentsInArray:[NSArray arrayWithObjects:uuid, nil]]; + }] continueWithSuccessBlock:^id(BFTask *task) { + PFSQLiteDatabaseResult *result = task.result; + if (![result next]) { + [result close]; + [NSException raise:NSInternalInconsistencyException + format:@"Attempted to find non-existent uuid %@.", uuid]; + } + NSString *jsonString = [result stringForColumnIndex:0]; + [result close]; + + return jsonString; + }]; + } + } else { + if (uuidTask && !(self.options & PFOfflineStoreOptionAlwaysFetchFromSQLite)) { + // This object is an existing ParseObject, and we must've already pulled its data + // out of the offline store, or else we wouldn't know its UUID. This should never happen. + NSString *message = @"Object must have already been fetched but isn't marked as fetched."; + [tcs setException:[NSException exceptionWithName:NSInternalInconsistencyException + reason:message + userInfo:nil]]; + + @synchronized (self.lock) { + [self.fetchedObjects removeObjectForKey:object]; + } + return tcs.task; + } + + // We've got a pointer to an existing ParseObject, but we've never pulled its data out of + // the offline store. Since fetching from the server forces a fetch from the offline + // store, that means this is a pointer. We need to try to find any existing entry for this + // object in the database. + NSString *query = [NSString stringWithFormat:@"SELECT %@, %@ FROM %@ WHERE %@ = ? AND %@ = ?;", + PFOfflineStoreKeyOfJSON, PFOfflineStoreKeyOfUUID, + PFOfflineStoreTableOfObjects, PFOfflineStoreKeyOfClassName, + PFOfflineStoreKeyOfObjectId]; + NSArray *args = @[ className, objectId ]; + jsonStringTask = [[database executeQueryAsync:query + withArgumentsInArray:args] continueWithSuccessBlock:^id(BFTask *task) { + PFSQLiteDatabaseResult *result = task.result; + if (![result next]) { + NSString *errorMessage = @"This object is not available in the offline cache."; + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorCacheMiss + message:errorMessage + shouldLog:NO]; + [result close]; + return [BFTask taskWithError:error]; + } + + NSString *jsonString = [result stringForColumnIndex:0]; + NSString *newUUID = [result stringForColumnIndex:1]; + [result close]; + + @synchronized (self.lock) { + // It's okay to put this object into the uuid map. No one will try to fetch it, + // because it's already in the fetchedObjects map. And no one will try to save it + // without fetching it first, so everything should be fine. + [self.objectToUUIDMap setObject:[BFTask taskWithResult:newUUID] forKey:object]; + [self.UUIDToObjectMap setObject:object forKey:newUUID]; + } + return jsonString; + }]; + } + + return [[jsonStringTask continueWithSuccessBlock:^id(BFTask *task) { + NSString *jsonString = task.result; + if (jsonString == nil) { + // This means we tried to fetch from the database that was never actually saved + // locally. This probably means that its parent object was saved locally and we + // just created a pointer to this object. This should be considered cache miss. + + NSString *errorMessage = @"Attempted to fetch and object offline which was never " + @"saved to the offline cache"; + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorCacheMiss + message:errorMessage + shouldLog:NO]; + return [BFTask taskWithError:error]; + } + id parsedJson = [PFJSONSerialization JSONObjectFromString:jsonString]; + NSMutableDictionary *offlineObjects = [[NSMutableDictionary alloc] init]; + [PFInternalUtils traverseObject:parsedJson usingBlock:^id(id object) { + // Omit root and PFObject + if ([object isKindOfClass:[NSDictionary class]] && + [((NSDictionary *)object)[@"__type"] isEqualToString:@"OfflineObject"] && + object != parsedJson) { + NSString *uuid = ((NSDictionary *)object)[@"uuid"]; + offlineObjects[uuid] = [self _getPointerAsyncWithUUID:uuid database:database]; + } + return object; + }]; + + NSArray *objectValues = [offlineObjects allValues]; + return [[BFTask taskForCompletionOfAllTasks:objectValues] continueWithSuccessBlock:^id(BFTask *task) { + PFDecoder *decoder = [PFOfflineDecoder decoderWithOfflineObjects:offlineObjects]; + [object mergeFromRESTDictionary:parsedJson withDecoder:decoder]; + return [BFTask taskWithResult:nil]; + }]; + }] continueWithBlock:^id(BFTask *task) { + if (task.isCancelled) { + [tcs cancel]; + } else if (task.error != nil) { + [tcs setError:task.error]; + } else if (task.exception != nil) { + [tcs setException:task.exception]; + } else { + [tcs setResult:object]; + } + return tcs.task; + }]; +} + +///-------------------------------------- +#pragma mark - Save +///-------------------------------------- + +- (BFTask *)saveObjectLocallyAsync:(PFObject *)object includeChildren:(BOOL)includeChildren { + //TODO: (nlutsenko) Remove this method, replace with LocalStore implementation that wraps OfflineStore + Pin. + return [self _performDatabaseTransactionAsyncWithBlock:^BFTask *(PFSQLiteDatabase *database) { + return [self saveObjectLocallyAsync:object includeChildren:includeChildren database:database]; + }]; +} + +- (BFTask *)saveObjectLocallyAsync:(PFObject *)object withChildren:(NSArray *)children { + return [self _performDatabaseTransactionAsyncWithBlock:^BFTask *(PFSQLiteDatabase *database) { + return [self saveObjectLocallyAsync:object withChildren:children database:database]; + }]; +} + +- (BFTask *)saveObjectLocallyAsync:(PFObject *)object + includeChildren:(BOOL)includeChildren + database:(PFSQLiteDatabase *)database { + //TODO: (nlutsenko) Remove this method, replace with LocalStore implementation that wraps OfflineStore + Pin. + NSMutableArray *children = nil; + if (includeChildren) { + children = [NSMutableArray array]; + [PFInternalUtils traverseObject:object usingBlock:^id(id traversedObject) { + if ([traversedObject isKindOfClass:[PFObject class]]) { + [children addObject:traversedObject]; + } + return traversedObject; + }]; + } + return [self saveObjectLocallyAsync:object withChildren:children database:database]; +} + +- (BFTask *)saveObjectLocallyAsync:(PFObject *)object + withChildren:(NSArray *)children + database:(PFSQLiteDatabase *)database { + //TODO (nlutsenko): Add assert that checks whether all children are actually children of an object. + NSMutableArray *objectsInTree = nil; + if (children == nil) { + objectsInTree = [NSMutableArray arrayWithObject:object]; + } else { + objectsInTree = [children mutableCopy]; + if (![objectsInTree containsObject:object]) { + [objectsInTree addObject:object]; + } + } + + // Call saveObjectLocallyAsync for each of them individually + NSMutableArray *tasks = [[NSMutableArray alloc] init]; + for (PFObject *objInTree in objectsInTree) { + [tasks addObject:[self fetchObjectLocallyAsync:objInTree database:database]]; + } + + return [[[[[BFTask taskForCompletionOfAllTasks:tasks] continueWithBlock:^id(BFTask *task) { + return [self.objectToUUIDMap objectForKey:object]; + }] continueWithSuccessBlock:^id(BFTask *task) { + NSString *uuid = task.result; + if (uuid == nil) { + // The root object was never stored in offline store, so nothing unpin. + return [BFTask taskWithResult:nil]; + } + + // Delete all objects locally corresponding to the key we're trying to use in case it was + // used before (overwrite) + return [self _unpinKeyAsync:uuid database:database]; + }] continueWithSuccessBlock:^id(BFTask *task) { + return [self getOrCreateUUIDAsyncForObject:object database:database]; + }] continueWithSuccessBlock:^id(BFTask *task) { + NSString *uuid = task.result; + + NSMutableArray *tasks = [[NSMutableArray alloc] init]; + for (PFObject *object in objectsInTree) { + [tasks addObject:[self saveObjectLocallyAsync:object key:uuid database:database]]; + } + + return [BFTask taskForCompletionOfAllTasks:tasks]; + }]; +} + +- (BFTask *)saveObjectLocallyAsync:(PFObject *)object + key:(NSString *)key + database:(PFSQLiteDatabase *)database { + if ([object objectId] != nil && ![object isDataAvailable] && + ![object _hasChanges] && ![object _hasOutstandingOperations]) { + return [BFTask taskWithResult:nil]; + } + + __block NSString *uuid = nil; + __block id encoded = nil; + return [[[[BFTask taskFromExecutor:[BFExecutor defaultExecutor] withBlock:^id{ + // Make sure we have UUID for the object to be saved. + return [self getOrCreateUUIDAsyncForObject:object database:database]; + }] continueWithSuccessBlock:^id(BFTask *task) { + uuid = task.result; + + // Encode the object, and wait for the UUIDs in its pointers to get encoded. + PFOfflineObjectEncoder *encoder = [PFOfflineObjectEncoder objectEncoderWithOfflineStore:self database:database]; + // We don't care about operationSetUUIDs here + NSArray *operationSetUUIDs = nil; + encoded = [object RESTDictionaryWithObjectEncoder:encoder operationSetUUIDs:&operationSetUUIDs]; + return [encoder encodeFinished]; + }] continueWithSuccessBlock:^id(BFTask *task) { + // Time to actually save the object + NSString *className = [object parseClassName]; + NSString *objectId = [object objectId]; + NSString *encodedString = [PFJSONSerialization stringFromJSONObject:encoded]; + NSString *updateFields = nil; + NSArray *queryParams = nil; + + if (objectId != nil) { + updateFields = [NSString stringWithFormat:@"%@ = ?, %@ = ?, %@ = ?", + PFOfflineStoreKeyOfClassName, PFOfflineStoreKeyOfJSON, + PFOfflineStoreKeyOfObjectId]; + queryParams = @[className, encodedString, objectId, uuid]; + } else { + updateFields = [NSString stringWithFormat:@"%@ = ?, %@ = ?", + PFOfflineStoreKeyOfClassName, PFOfflineStoreKeyOfJSON]; + queryParams = @[className, encodedString, uuid]; + } + + NSString *sql = [NSString stringWithFormat:@"UPDATE %@ SET %@ WHERE %@ = ?", + PFOfflineStoreTableOfObjects, updateFields, + PFOfflineStoreKeyOfUUID]; + return [database executeSQLAsync:sql withArgumentsInArray:queryParams]; + }] continueWithSuccessBlock:^id(BFTask *task) { + NSString *sql = [NSString stringWithFormat:@"INSERT OR IGNORE INTO %@(%@, %@) VALUES (?, ?)", + PFOfflineStoreTableOfDependencies, PFOfflineStoreKeyOfKey, + PFOfflineStoreKeyOfUUID]; + return [database executeSQLAsync:sql withArgumentsInArray:@[key, uuid]]; + }]; +} + +///-------------------------------------- +#pragma mark - Find +///-------------------------------------- + +- (BFTask *)findAsyncForQueryState:(PFQueryState *)queryState + user:(PFUser *)user + pin:(PFPin *)pin { + return [self findAsyncForQueryState:queryState user:user pin:pin isCount:NO]; +} + +- (BFTask *)countAsyncForQueryState:(PFQueryState *)queryState + user:(PFUser *)user + pin:(PFPin *)pin { + return [[self findAsyncForQueryState:queryState + user:user + pin:pin + isCount:YES] continueWithSuccessBlock:^id(BFTask *task) { + if (!task.cancelled && !task.error && !task.exception) { + NSArray *result = task.result; + return @(result.count); + } + return task; + }]; +} + +- (BFTask *)findAsyncForQueryState:(PFQueryState *)queryState + user:(PFUser *)user + pin:(PFPin *)pin + isCount:(BOOL)isCount { + __block BFTask *resultTask = nil; + return [[self _performDatabaseOperationAsyncWithBlock:^BFTask *(PFSQLiteDatabase *database) { + resultTask = [self findAsyncForQueryState:queryState user:user pin:pin isCount:isCount database:database]; + return resultTask; + }] continueWithBlock:^id(BFTask *ignored) { + // We need this to return the result of `findQuery` instead of returning the + // result of `[database closeAsync]` + return resultTask; + }]; +} + +- (BFTask *)findAsyncForQueryState:(PFQueryState *)queryState + user:(PFUser *)user + pin:(PFPin *)pin + isCount:(BOOL)isCount + database:(PFSQLiteDatabase *)database { + __block NSMutableArray *mutableResults = [NSMutableArray array]; + BFTask *queryTask = nil; + BOOL includeIsDeletingEventually = queryState.shouldIncludeDeletingEventually; + + if (pin == nil) { + NSString *isDeletingEventuallyQuery = @""; + if (!includeIsDeletingEventually) { + isDeletingEventuallyQuery = [NSString stringWithFormat:@"AND %@ = 0", + PFOfflineStoreKeyOfIsDeletingEventually]; + } + NSString *queryString = [NSString stringWithFormat:@"SELECT %@ FROM %@ WHERE %@ = ? %@;", + PFOfflineStoreKeyOfUUID, PFOfflineStoreTableOfObjects, + PFOfflineStoreKeyOfClassName, isDeletingEventuallyQuery]; + queryTask = [database executeQueryAsync:queryString withArgumentsInArray:@[ queryState.parseClassName ]]; + } else { + BFTask *uuidTask = [self.objectToUUIDMap objectForKey:pin]; + if (uuidTask == nil) { + // Pin was never saved locally, therefore there won't be any results. + return [BFTask taskWithResult:mutableResults]; + } + + queryTask = [uuidTask continueWithSuccessBlock:^id(BFTask *task) { + NSString *uuid = task.result; + NSString *isDeletingEventuallyQuery = @""; + if (!includeIsDeletingEventually) { + isDeletingEventuallyQuery = [NSString stringWithFormat:@"AND %@ = 0", + PFOfflineStoreKeyOfIsDeletingEventually]; + } + NSString *queryString = [NSString stringWithFormat:@"SELECT A.%@ FROM %@ A " + @"INNER JOIN %@ B ON A.%@ = B.%@ WHERE %@ = ? AND %@ = ? %@;", + PFOfflineStoreKeyOfUUID, PFOfflineStoreTableOfObjects, + PFOfflineStoreTableOfDependencies, PFOfflineStoreKeyOfUUID, + PFOfflineStoreKeyOfUUID, PFOfflineStoreKeyOfClassName, + PFOfflineStoreKeyOfKey, isDeletingEventuallyQuery]; + + return [database executeQueryAsync:queryString + withArgumentsInArray:@[ queryState.parseClassName, uuid ]]; + }]; + } + + @weakify(self); + return [[queryTask continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + PFSQLiteDatabaseResult *result = task.result; + + PFConstraintMatcherBlock matcherBlock = [self.offlineQueryLogic createMatcherForQueryState:queryState + user:user]; + + BFTask *checkAllObjectsTask = [BFTask taskWithResult:nil]; + while ([result next]) { + NSString *uuid = [result stringForColumnIndex:0]; + __block PFObject *object = nil; + + checkAllObjectsTask = [[[[checkAllObjectsTask continueWithSuccessBlock:^id(BFTask *task) { + return [self _getPointerAsyncWithUUID:uuid database:database]; + }] continueWithSuccessBlock:^id(BFTask *task) { + object = task.result; + return [self fetchObjectLocallyAsync:object database:database]; + }] continueWithSuccessBlock:^id(BFTask *task) { + if (!object.isDataAvailable) { + return [BFTask taskWithResult:@NO]; + } + return matcherBlock(object, database); + }] continueWithSuccessBlock:^id(BFTask *task) { + if ([task.result boolValue]) { + [mutableResults addObject:object]; + } + return [BFTask taskWithResult:nil]; + }]; + } + [result close]; + + return checkAllObjectsTask; + }] continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + + // Sort, Apply Skip and Limit + + PFOfflineQueryOption queryOptions = 0; + if (!isCount) { + queryOptions = PFOfflineQueryOptionOrder | PFOfflineQueryOptionSkip | PFOfflineQueryOptionLimit; + } + NSArray *results = [self.offlineQueryLogic resultsByApplyingOptions:queryOptions + ofQueryState:queryState + toResults:mutableResults]; + + // Fetch includes + BFTask *fetchIncludesTask = [self.offlineQueryLogic fetchIncludesAsyncForResults:results + ofQueryState:queryState + inDatabase:database]; + + return [fetchIncludesTask continueWithSuccessBlock:^id(BFTask *task) { + return results; + }]; + }]; +} + +///-------------------------------------- +#pragma mark - Update +///-------------------------------------- + +- (BFTask *)updateDataForObjectAsync:(PFObject *)object { + BFTask *fetchTask = nil; + + @synchronized (self.lock) { + fetchTask = [self.fetchedObjects objectForKey:object]; + if (!fetchTask) { + NSException *exception = [NSException exceptionWithName:NSInternalInconsistencyException + reason:@"An object cannot be updated if it wasn't fetched" + userInfo:nil]; + return [BFTask taskWithException:exception]; + } + } + return [fetchTask continueWithBlock:^id(BFTask *task) { + if (task.error != nil) { + // Catch CACHE_MISS errors and ignore them. + if (task.error.code == kPFErrorCacheMiss) { + return [BFTask taskWithResult:nil]; + } + return [BFTask taskWithResult:[task.result weakObject]]; + } + + return [self _performDatabaseTransactionAsyncWithBlock:^BFTask *(PFSQLiteDatabase *database) { + return [self _updateDataForObjectAsync:object inDatabase:database]; + }]; + }]; +} + +- (BFTask *)_updateDataForObjectAsync:(PFObject *)object inDatabase:(PFSQLiteDatabase *)database { + BFTask *uuidTask = nil; + @synchronized (self.lock) { + uuidTask = [self.objectToUUIDMap objectForKey:object]; + if (!uuidTask) { + // It was fetched, but it has no UUID. That must mean it isn't actually in the database. + return [BFTask taskWithResult:nil]; + } + } + + __block NSString *uuid = nil; + __block NSDictionary *dataDictionary = nil; + return [[uuidTask continueWithSuccessBlock:^id(BFTask *task) { + uuid = task.result; + + PFOfflineObjectEncoder *encoder = [PFOfflineObjectEncoder objectEncoderWithOfflineStore:self + database:database]; + NSArray *operationSetUUIDs = nil; + dataDictionary = [object RESTDictionaryWithObjectEncoder:encoder operationSetUUIDs:&operationSetUUIDs]; + return [encoder encodeFinished]; + }] continueWithSuccessBlock:^id(BFTask *task) { + // Put it in database + NSString *className = object.parseClassName; + NSString *objectId = object.objectId; + NSString *encodedDataDictionary = [PFJSONSerialization stringFromJSONObject:dataDictionary]; + NSNumber *deletingEventually = dataDictionary[PFOfflineStoreKeyOfIsDeletingEventually]; + + NSString *updateParams = nil; + NSArray *updateArguments = nil; + if (objectId != nil) { + updateParams = [NSString stringWithFormat:@"%@ = ?, %@ = ?, %@ = ?, %@ = ?", + PFOfflineStoreKeyOfClassName, PFOfflineStoreKeyOfJSON, + PFOfflineStoreKeyOfIsDeletingEventually, PFOfflineStoreKeyOfObjectId]; + updateArguments = @[ className, encodedDataDictionary, deletingEventually, objectId, uuid ]; + } else { + updateParams = [NSString stringWithFormat:@"%@ = ?, %@ = ?, %@ = ?", + PFOfflineStoreKeyOfClassName, PFOfflineStoreKeyOfJSON, + PFOfflineStoreKeyOfIsDeletingEventually]; + updateArguments = @[ className, encodedDataDictionary, deletingEventually, uuid ]; + } + + NSString *sql = [NSString stringWithFormat:@"UPDATE %@ SET %@ WHERE %@ = ?", + PFOfflineStoreTableOfObjects, updateParams, PFOfflineStoreKeyOfUUID]; + + return [database executeSQLAsync:sql withArgumentsInArray:updateArguments]; + }]; +} + +///-------------------------------------- +#pragma mark - Delete +///-------------------------------------- + +- (BFTask *)deleteDataForObjectAsync:(PFObject *)object { + return [self _performDatabaseTransactionAsyncWithBlock:^BFTask *(PFSQLiteDatabase *database) { + return [self deleteDataForObjectAsync:object database:database]; + }]; +} + +- (BFTask *)deleteDataForObjectAsync:(PFObject *)object database:(PFSQLiteDatabase *)database { + __block NSString *uuid = nil; + + // Make sure the object has a UUID. + BFTask *uuidTask = nil; + @synchronized (self.lock) { + uuidTask = [self.objectToUUIDMap objectForKey:object]; + if (!uuidTask) { + // It was fetched, but it has no UUID. That must mean it isn't actually in the database. + return [BFTask taskWithResult:nil]; + } + } + + uuidTask = [uuidTask continueWithSuccessBlock:^id(BFTask *task) { + uuid = task.result; + return task; + }]; + + // If the object was the root of a pin, unpin it. + BFTask *unpinTask = [[uuidTask continueWithSuccessBlock:^id(BFTask *task) { + // Find all the roots for this object. + NSString *sql = [NSString stringWithFormat:@"SELECT %@ FROM %@ WHERE %@ = ?", + PFOfflineStoreKeyOfKey, PFOfflineStoreTableOfDependencies, + PFOfflineStoreKeyOfUUID]; + return [database executeQueryAsync:sql withArgumentsInArray:@[ uuid ]]; + }] continueWithSuccessBlock:^id(BFTask *task) { + // Try to unpin this object from the pin label if it's a root of the PFPin. + PFSQLiteDatabaseResult *result = task.result; + NSMutableArray *tasks = [NSMutableArray array]; + + while (result.next) { + NSString *objectUUID = [result stringForColumnIndex:0]; + + BFTask *getPointerTask = [self _getPointerAsyncWithUUID:objectUUID database:database]; + BFTask *objectUnpinTask = [[getPointerTask continueWithSuccessBlock:^id(BFTask *task) { + PFPin *pin = task.result; + return [self fetchObjectLocallyAsync:pin database:database]; + }] continueWithBlock:^id(BFTask *task) { + PFPin *pin = task.result; + + NSMutableArray *modified = pin.objects; + if (modified == nil || ![modified containsObject:object]) { + return task; + } + + [modified removeObject:object]; + if (modified.count == 0) { + return [self _unpinKeyAsync:objectUUID database:database]; + } + pin.objects = modified; + + return [self saveObjectLocallyAsync:pin includeChildren:YES database:database]; + }]; + [tasks addObject:objectUnpinTask]; + } + [result close]; + + return [BFTask taskForCompletionOfAllTasks:tasks]; + }]; + + return [[[unpinTask continueWithSuccessBlock:^id(BFTask *task) { + NSString *sql = [NSString stringWithFormat:@"DELETE FROM %@ WHERE %@ = ?", + PFOfflineStoreTableOfDependencies, PFOfflineStoreKeyOfUUID]; + return [database executeSQLAsync:sql withArgumentsInArray:@[ uuid ]]; + }] continueWithSuccessBlock:^id(BFTask *task) { + NSString *sql = [NSString stringWithFormat:@"DELETE FROM %@ WHERE %@ = ?", + PFOfflineStoreTableOfObjects, PFOfflineStoreKeyOfUUID]; + return [database executeSQLAsync:sql withArgumentsInArray:@[ uuid ]]; + }] continueWithSuccessBlock:^id(BFTask *task) { + // Delete the object from memory cache. + // (or else `PFObject.objectWithoutDataWithClassName` will return a valid object) + @synchronized (self.lock) { + // TODO (hallucinogen): we should probably clean up UUIDToObjectMap and objectToUUIDMap + // but getting the uuid requires a task and things might get a little funky... + if (object.objectId != nil) { + NSString *key = [self _generateKeyForClassName:object.parseClassName objectId:object.objectId]; + [self.classNameAndObjectIdToObjectMap removeObjectForKey:key]; + } + [self.fetchedObjects removeObjectForKey:object]; + } + return task; + }]; +} + +///-------------------------------------- +#pragma mark - Unpin +///-------------------------------------- + +- (BFTask *)unpinObjectAsync:(PFObject *)object { + BFTask *uuidTask = [self.objectToUUIDMap objectForKey:object]; + return [uuidTask continueWithBlock:^id(BFTask *task) { + NSString *uuid = task.result; + if (!uuid) { + // The root object was never stored in the offline store, so nothing to unpin. + return [BFTask taskWithResult:nil]; + } + return [self _unpinKeyAsync:uuid]; + }]; +} + +- (BFTask *)_unpinKeyAsync:(NSString *)key { + return [self _performDatabaseTransactionAsyncWithBlock:^BFTask *(PFSQLiteDatabase *database) { + return [self _unpinKeyAsync:key database:database]; + }]; +} + +- (BFTask *)_unpinKeyAsync:(NSString *)key database:(PFSQLiteDatabase *)database { + NSMutableArray *uuidsToDelete = [NSMutableArray array]; + // Fetch all uuids from Dependencies for key=? grouped by uuid having a count of 1 + NSString *query = [NSString stringWithFormat:@"SELECT %@ FROM %@ WHERE %@ = ? AND %@ IN " + @"(SELECT %@ FROM %@ GROUP BY %@ HAVING COUNT(%@) = 1);", + PFOfflineStoreKeyOfUUID, PFOfflineStoreTableOfDependencies, + PFOfflineStoreKeyOfKey, PFOfflineStoreKeyOfUUID, PFOfflineStoreKeyOfUUID, + PFOfflineStoreTableOfDependencies, PFOfflineStoreKeyOfUUID, + PFOfflineStoreKeyOfUUID]; + return [[[[database executeQueryAsync:query + withArgumentsInArray:@[ key ]] continueWithSuccessBlock:^id(BFTask *task) { + // DELETE FROM Objects + PFSQLiteDatabaseResult *result = task.result; + while (result.next) { + [uuidsToDelete addObject:[result stringForColumnIndex:0]]; + } + [result close]; + + return [self _deleteObjectsWithUUIDs:uuidsToDelete database:database]; + }] continueWithSuccessBlock:^id(BFTask *task) { + // DELETE FROM Dependencies + NSString *sql = [NSString stringWithFormat:@"DELETE FROM %@ WHERE %@ = ?", + PFOfflineStoreTableOfDependencies, PFOfflineStoreKeyOfKey]; + return [database executeSQLAsync:sql withArgumentsInArray:@[ key ]]; + }] continueWithSuccessBlock:^id(BFTask *task) { + @synchronized (self.lock) { + // Remove uuids from memory + for (NSString *uuid in uuidsToDelete) { + PFObject *object = [self.UUIDToObjectMap objectForKey:uuid]; + if (object != nil) { + [self.objectToUUIDMap removeObjectForKey:object]; + [self.UUIDToObjectMap removeObjectForKey:uuid]; + } + } + } + return [BFTask taskWithResult:nil]; + }]; +} + +- (BFTask *)_deleteObjectsWithUUIDs:(NSArray *)uuids database:(PFSQLiteDatabase *)database { + if (uuids.count <= 0) { + return [BFTask taskWithResult:nil]; + } + + if (uuids.count > PFOfflineStoreMaximumSQLVariablesCount) { + NSRange range = NSMakeRange(0, PFOfflineStoreMaximumSQLVariablesCount); + return [[self _deleteObjectsWithUUIDs:[uuids subarrayWithRange:range] + database:database] continueWithSuccessBlock:^id(BFTask *task) { + unsigned long includedCount = uuids.count - PFOfflineStoreMaximumSQLVariablesCount; + NSRange range = NSMakeRange(PFOfflineStoreMaximumSQLVariablesCount, includedCount); + return [self _deleteObjectsWithUUIDs:[uuids subarrayWithRange:range] database:database]; + }]; + } + + NSMutableArray *placeholders = [NSMutableArray array]; + for (int i = 0; i < uuids.count; ++i) { + [placeholders addObject:@"?"]; + } + NSString *sql = [NSString stringWithFormat:@"DELETE FROM %@ WHERE %@ IN (%@);", + PFOfflineStoreTableOfObjects, PFOfflineStoreKeyOfUUID, + [placeholders componentsJoinedByString:@","]]; + return [database executeSQLAsync:sql withArgumentsInArray:uuids]; +} + +///-------------------------------------- +#pragma mark - Internal Helper Methods +///-------------------------------------- + +- (BFTask *)getOrCreateUUIDAsyncForObject:(PFObject *)object + database:(PFSQLiteDatabase *)database { + NSString *newUUID = [[NSUUID UUID] UUIDString]; + BFTaskCompletionSource *tcs = [BFTaskCompletionSource taskCompletionSource]; + + @synchronized (self.lock) { + BFTask *uuidTask = [self.objectToUUIDMap objectForKey:object]; + if (uuidTask != nil) { + // Return existing task. + return uuidTask; + } + + // The object doesn't have UUID yet, so we're gonna have to make one + [self.objectToUUIDMap setObject:tcs.task forKey:object]; + [self.UUIDToObjectMap setObject:object forKey:newUUID]; + + __weak id weakObject = object; + [self.fetchedObjects setObject:[tcs.task continueWithSuccessBlock:^id(BFTask *task) { + return [PFWeakValue valueWithWeakObject:weakObject]; + }] forKey:object]; + } + + // We need to put a placeholder row in the database so that later on the save can be just + // an update. This could be a pointer to an object that itself never gets saved offline, + // in which case the consumer will just have to deal with that. + NSString *query = [NSString stringWithFormat:@"INSERT INTO %@(%@, %@) VALUES(?, ?);", + PFOfflineStoreTableOfObjects, PFOfflineStoreKeyOfUUID, PFOfflineStoreKeyOfClassName]; + [[database executeSQLAsync:query + withArgumentsInArray:@[ newUUID, [object parseClassName]]] continueWithSuccessBlock:^id(BFTask *task) { + [tcs setResult:newUUID]; + return [BFTask taskWithResult:nil]; + }]; + + return tcs.task; +} + +/*! + Gets an unfetched pointer to an object in the database, based on its uuid. The object may or may + not be in memory, but it must be in database. If it is already in memory, the instance will be + returned. Since this is only for creating pointers to objects that are referenced by other objects + in the datastore, it's a fair assumption. + + @param uuid The UUID of the object to retrieve. + @param database The database instance to retrieve from. + @returns The object with that UUID. + */ +- (BFTask *)_getPointerAsyncWithUUID:(NSString *)uuid + database:(PFSQLiteDatabase *)database { + @synchronized (self.lock) { + PFObject *existing = [self.UUIDToObjectMap objectForKey:uuid]; + if (existing != nil) { + return [BFTask taskWithResult:existing]; + } + } + + // We only want the pointer, but we have to look in the database to know if there's something + // with this classname and object id already. + NSString *query = [NSString stringWithFormat:@"SELECT %@, %@ FROM %@ WHERE %@ = ?;", + PFOfflineStoreKeyOfClassName, PFOfflineStoreKeyOfObjectId, + PFOfflineStoreTableOfObjects, PFOfflineStoreKeyOfUUID]; + return [[database executeQueryAsync:query + withArgumentsInArray:@[ uuid ]] continueWithSuccessBlock:^id(BFTask *task) { + PFSQLiteDatabaseResult *result = task.result; + if (![result next]) { + [result close]; + [NSException raise:NSInternalInconsistencyException + format:@"Attempted to find non-existent uuid %@", uuid]; + } + + @synchronized (self.lock) { + PFObject *existing = [self.UUIDToObjectMap objectForKey:uuid]; + if (existing != nil) { + [result close]; + return existing; + } + + NSString *className = [result stringForColumnIndex:0]; + NSString *objectId = [result stringForColumnIndex:1]; + [result close]; + + PFObject *pointer = [PFObject objectWithoutDataWithClassName:className objectId:objectId]; + + // If it doesn't have objectId, we don't really need the UUID, and this simplifies some + // other logic elsewhere if we only update the map for new objects. + if (objectId == nil) { + [self.UUIDToObjectMap setObject:pointer forKey:uuid]; + [self.objectToUUIDMap setObject:[BFTask taskWithResult:uuid] forKey:pointer]; + } + return pointer; + } + }]; +} + +- (PFObject *)getOrCreateObjectWithoutDataWithClassName:(NSString *)className + objectId:(NSString *)objectId { + PFParameterAssert(objectId, @"objectId cannot be nil."); + + PFObject *object = nil; + @synchronized (self.lock) { + NSString *key = [self _generateKeyForClassName:className objectId:objectId]; + object = [self.classNameAndObjectIdToObjectMap objectForKey:key]; + if (!object) { + object = [PFObject objectWithClassName:className objectId:objectId completeData:NO]; + [self updateObjectIdForObject:object oldObjectId:nil newObjectId:objectId]; + } + } + return object; +} + +- (void)updateObjectIdForObject:(PFObject *)object + oldObjectId:(NSString *)oldObjectId + newObjectId:(NSString *)newObjectId { + if (oldObjectId != nil) { + PFConsistencyAssert([oldObjectId isEqualToString:newObjectId], @"objectIds cannot be changed in offline mode."); + return; + } + + NSString *className = object.parseClassName; + NSString *key = [self _generateKeyForClassName:className objectId:newObjectId]; + + @synchronized (self.lock) { + // See if there's already an entry for new objectId. + PFObject *existing = [self.classNameAndObjectIdToObjectMap objectForKey:key]; + PFConsistencyAssert(existing == nil || existing == object, + @"Attempted to change an objectId to one that's already known to the OfflineStore."); + + // Okay, all clear to add the new reference. + [self.classNameAndObjectIdToObjectMap setObject:object forKey:key]; + } +} + +- (NSString *)_generateKeyForClassName:(NSString *)className + objectId:(NSString *)objectId { + return [NSString stringWithFormat:@"%@:%@", className, objectId]; +} + +// TODO (hallucinogen): is this the right way to store the schema? ++ (NSString *)PFOfflineStoreParseObjectsTableSchema { + return [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS %@ (" + @"%@ TEXT PRIMARY KEY, " + @"%@ TEXT NOT NULL, " + @"%@ TEXT, " + @"%@ TEXT, " + @"%@ INTEGER DEFAULT 0, " + @"UNIQUE(%@, %@));", PFOfflineStoreTableOfObjects, PFOfflineStoreKeyOfUUID, + PFOfflineStoreKeyOfClassName, PFOfflineStoreKeyOfObjectId, PFOfflineStoreKeyOfJSON, + PFOfflineStoreKeyOfIsDeletingEventually, PFOfflineStoreKeyOfClassName, + PFOfflineStoreKeyOfObjectId]; +} + ++ (NSString *)PFOfflineStoreDependenciesTableSchema { + return [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS %@ (" + @"%@ TEXT NOT NULL, " + @"%@ TEXT NOT NULL, " + @"PRIMARY KEY(%@, %@));", PFOfflineStoreTableOfDependencies, PFOfflineStoreKeyOfKey, + PFOfflineStoreKeyOfUUID, PFOfflineStoreKeyOfKey, PFOfflineStoreKeyOfUUID]; +} + ++ (BFTask *)_initializeTablesInBackgroundWithDatabaseController:(PFSQLiteDatabaseController *)databaseController { + return [[databaseController openDatabaseWithNameAsync:PFOfflineStoreDatabaseName] continueWithBlock:^id(BFTask *task) { + PFSQLiteDatabase *database = task.result; + return [[[[[database beginTransactionAsync] continueWithSuccessBlock:^id(BFTask *task) { + return [database executeSQLAsync:[self PFOfflineStoreParseObjectsTableSchema] withArgumentsInArray:nil]; + }] continueWithSuccessBlock:^id(BFTask *task) { + return [database executeSQLAsync:[self PFOfflineStoreDependenciesTableSchema] withArgumentsInArray:nil]; + }] continueWithSuccessBlock:^id(BFTask *task) { + return [database commitAsync]; + }] continueWithBlock:^id(BFTask *task) { + return [database closeAsync]; + }]; + }]; +} + +///-------------------------------------- +#pragma mark - Database Helpers +///-------------------------------------- + +- (BFTask *)_performDatabaseTransactionAsyncWithBlock:(PFOfflineStoreDatabaseExecutionBlock)block { + return [self _performDatabaseOperationAsyncWithBlock:^BFTask *(PFSQLiteDatabase *database) { + BFTask *task = [database beginTransactionAsync]; + task = [task continueWithSuccessBlock:^id(BFTask *task) { + return block(database); + }]; + return [task continueWithSuccessBlock:^id(BFTask *task) { + return [database commitAsync]; + }]; + }]; +} + +- (BFTask *)_performDatabaseOperationAsyncWithBlock:(PFOfflineStoreDatabaseExecutionBlock)block { + return [[self.databaseController openDatabaseWithNameAsync:PFOfflineStoreDatabaseName] continueWithBlock:^id(BFTask *task) { + PFSQLiteDatabase *database = task.result; + return [block(database) continueWithBlock:^id(BFTask *task) { + return [database closeAsync]; + }]; + }]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (PFOfflineQueryLogic *)offlineQueryLogic { + @synchronized (self.lock) { + if (!_offlineQueryLogic) { + _offlineQueryLogic = [[PFOfflineQueryLogic alloc] initWithOfflineStore:self]; + } + return _offlineQueryLogic; + } +} + +///-------------------------------------- +#pragma mark - Unit Test helper +///-------------------------------------- + +- (void)simulateReboot { + @synchronized (self.lock) { + [self.UUIDToObjectMap removeAllObjects]; + [self.objectToUUIDMap removeAllObjects]; + [self.classNameAndObjectIdToObjectMap removeAllObjects]; + [self.fetchedObjects removeAllObjects]; + } +} + +- (void)clearDatabase { + // Delete DB file + NSString *filePath = [self.fileManager parseDataItemPathForPathComponent:PFOfflineStoreDatabaseName]; + [[PFFileManager removeItemAtPathAsync:filePath] waitForResult:nil withMainThreadWarning:NO]; + + // Reinitialize tables + [PFOfflineStore _initializeTablesInBackgroundWithDatabaseController:self.databaseController]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/Pin/PFPin.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/Pin/PFPin.h new file mode 100644 index 0000000..745baf6 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/Pin/PFPin.h @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import +#import + +extern NSString *const PFPinKeyName; +extern NSString *const PFPinKeyObjects; + +/*! + PFPin represent internal pin implementation of PFObject's `pin`. + */ +@interface PFPin : PFObject + +@property (nonatomic, copy) NSString *name; +@property (nonatomic, strong) NSMutableArray *objects; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)initWithName:(NSString *)name; ++ (instancetype)pinWithName:(NSString *)name; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/Pin/PFPin.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/Pin/PFPin.m new file mode 100644 index 0000000..3519b47 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/Pin/PFPin.m @@ -0,0 +1,81 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPin.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFObject+Subclass.h" +#import "PFObjectPrivate.h" +#import "PFOfflineStore.h" +#import "PFQueryPrivate.h" +#import "Parse_Private.h" + +NSString *const PFPinKeyName = @"_name"; +NSString *const PFPinKeyObjects = @"_objects"; + +@implementation PFPin + +///-------------------------------------- +#pragma mark - PFSubclassing +///-------------------------------------- + ++ (NSString *)parseClassName { + return @"_Pin"; +} + +// Validates a class name. We override this to only allow the pin class name. ++ (void)_assertValidInstanceClassName:(NSString *)className { + PFParameterAssert([className isEqualToString:[self parseClassName]], + @"Cannot initialize a PFPin with a custom class name."); +} + +- (BOOL)needsDefaultACL { + return NO; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithName:(NSString *)name { + self = [super init]; + if (!self) return nil; + + // Use property accessor, as there is no ivar here for `name`. + self.name = name; + + return self; +} + ++ (instancetype)pinWithName:(NSString *)name { + return [[self alloc] initWithName:name]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (NSString *)name { + return self[PFPinKeyName]; +} + +- (void)setName:(NSString *)name { + self[PFPinKeyName] = [name copy]; +} + +- (NSMutableArray *)objects { + return self[PFPinKeyObjects]; +} + +- (void)setObjects:(NSMutableArray *)objects { + self[PFPinKeyObjects] = [objects mutableCopy]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.h new file mode 100644 index 0000000..fc37993 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.h @@ -0,0 +1,115 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFMacros.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFFileManager; +@class PFSQLiteDatabaseResult; + +/*! + Argument count given in executeSQLAsync or executeQueryAsync is invalid. + */ +extern int const PFSQLiteDatabaseInvalidArgumenCountErrorCode; + +/*! + Method `executeSQL` cannot execute SELECT. Use `executeQuery` instead. + */ +extern int const PFSQLiteDatabaseInvalidSQL; + +/*! + Database is opened already. + */ +extern int const PFSQLiteDatabaseDatabaseAlreadyOpened; + +/*! + Database is closed already. + */ +extern int const PFSQLiteDatabaseDatabaseAlreadyClosed; + +NS_ASSUME_NONNULL_BEGIN + +@interface PFSQLiteDatabase : NSObject + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)initWithPath:(NSString *)path; + +///-------------------------------------- +/// @name Database Creation +///-------------------------------------- + ++ (instancetype)databaseWithPath:(NSString *)path; + +///-------------------------------------- +/// @name Connection +///-------------------------------------- + +/*! + @returns A `BFTask` that resolves to `YES` if the database is open. + */ +- (BFTask *)isOpenAsync; + +/*! + Opens database. Database is one time use. Open > Close > Open is forbidden. + */ +- (BFTask *)openAsync; + +/*! + Closes the database connection. + */ +- (BFTask *)closeAsync; + +///-------------------------------------- +/// @name Transaction +///-------------------------------------- + +/*! + Begins a database transaction in EXCLUSIVE mode. + */ +- (BFTask *)beginTransactionAsync; + +/*! + Commits running transaction. + */ +- (BFTask *)commitAsync; + +/*! + Rollbacks running transaction. + */ +- (BFTask *)rollbackAsync; + +///-------------------------------------- +/// @name Query Methods +///-------------------------------------- + +/*! + Runs a single SQL statement which return result (SELECT). + */ +- (BFTask *)executeQueryAsync:(NSString *)sql withArgumentsInArray:(nullable NSArray *)args; + +/*! + Runs a single SQL statement, while caching the resulting statement for future use. + */ +- (BFTask *)executeCachedQueryAsync:(NSString *)sql withArgumentsInArray:(nullable NSArray *)args; + +/*! + Runs a single SQL statement which doesn't return result (UPDATE/INSERT/DELETE). + */ +- (BFTask *)executeSQLAsync:(NSString *)sql withArgumentsInArray:(nullable NSArray *)args; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m new file mode 100644 index 0000000..9c46fa3 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m @@ -0,0 +1,339 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFSQLiteDatabase.h" +#import "PFSQLiteDatabase_Private.h" + +#import + +#import +#import + +#import "BFTask+Private.h" +#import "PFFileManager.h" +#import "PFInternalUtils.h" +#import "PFMacros.h" +#import "PFMultiProcessFileLockController.h" +#import "PFSQLiteDatabaseResult.h" +#import "PFSQLiteStatement.h" +#import "Parse_Private.h" + +NSString *const PFSQLiteDatabaseBeginExclusiveOperationCommand = @"BEGIN EXCLUSIVE"; +NSString *const PFSQLiteDatabaseCommitOperationCommand = @"COMMIT"; +NSString *const PFSQLiteDatabaseRollbackOperationCommand = @"ROLLBACK"; + +NSString *const PFSQLiteDatabaseErrorSQLiteDomain = @"SQLite"; +NSString *const PFSQLiteDatabaseErrorPFSQLiteDatabaseDomain = @"PFSQLiteDatabase"; + +int const PFSQLiteDatabaseInvalidArgumenCountErrorCode = 1; +int const PFSQLiteDatabaseInvalidSQL = 2; +int const PFSQLiteDatabaseDatabaseAlreadyOpened = 3; +int const PFSQLiteDatabaseDatabaseAlreadyClosed = 4; + +@interface PFSQLiteDatabase () { + BFTaskCompletionSource *_databaseClosedTaskCompletionSource; + dispatch_queue_t _databaseQueue; + BFExecutor *_databaseExecutor; + NSMutableDictionary *_cachedStatements; +} + +/*! + Database instance + */ +@property (nonatomic, assign) sqlite3 *database; + +/*! + Database path + */ +@property (nonatomic, copy) NSString *databasePath; + +@end + +@implementation PFSQLiteDatabase + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithPath:(NSString *)path { + self = [super init]; + if (!self) return nil; + + _databaseClosedTaskCompletionSource = [[BFTaskCompletionSource alloc] init]; + _databasePath = [path copy]; + _databaseQueue = dispatch_queue_create("com.parse.sqlite.db.queue", DISPATCH_QUEUE_SERIAL); + _databaseExecutor = [BFExecutor executorWithDispatchQueue:_databaseQueue]; + _cachedStatements = [[NSMutableDictionary alloc] init]; + + return self; +} + ++ (instancetype)databaseWithPath:(NSString *)path { + return [[self alloc] initWithPath:path]; +} + +///-------------------------------------- +#pragma mark - Connection +///-------------------------------------- + +- (BFTask *)isOpenAsync { + return [BFTask taskFromExecutor:_databaseExecutor withBlock:^id { + return @(self.database != nil); + }]; +} + +- (BFTask *)openAsync { + return [BFTask taskFromExecutor:_databaseExecutor withBlock:^id { + if (self.database) { + NSError *error = [self _errorWithErrorCode:PFSQLiteDatabaseDatabaseAlreadyOpened + errorMessage:@"Database is opened already." + domain:PFSQLiteDatabaseErrorPFSQLiteDatabaseDomain]; + return [BFTask taskWithError:error]; + } + + // Check if this database have already been opened before. + if (_databaseClosedTaskCompletionSource.task.completed) { + NSError *error = [self _errorWithErrorCode:PFSQLiteDatabaseDatabaseAlreadyClosed + errorMessage:@"Closed database cannot be reopen." + domain:PFSQLiteDatabaseErrorPFSQLiteDatabaseDomain]; + return [BFTask taskWithError:error]; + } + + // Lock the file to avoid multi-process access. + [[PFMultiProcessFileLockController sharedController] beginLockedContentAccessForFileAtPath:self.databasePath]; + + sqlite3 *db; + int resultCode = sqlite3_open([self.databasePath UTF8String], &db); + if (resultCode != SQLITE_OK) { + return [BFTask taskWithError:[self _errorWithErrorCode:resultCode]]; + } + + self.database = db; + return [BFTask taskWithResult:nil]; + }]; +} + +- (BFTask *)closeAsync { + return [BFTask taskFromExecutor:_databaseExecutor withBlock:^id { + if (!self.database) { + NSError *error = [self _errorWithErrorCode:PFSQLiteDatabaseDatabaseAlreadyClosed + errorMessage:@"Database is closed already." + domain:PFSQLiteDatabaseErrorPFSQLiteDatabaseDomain]; + return [BFTask taskWithError:error]; + } + + [self _clearCachedStatements]; + int resultCode = sqlite3_close(self.database); + + [[PFMultiProcessFileLockController sharedController] endLockedContentAccessForFileAtPath:self.databasePath]; + + if (resultCode == SQLITE_OK) { + + self.database = nil; + [_databaseClosedTaskCompletionSource setResult:nil]; + } else { + // Returns error + [_databaseClosedTaskCompletionSource setError:[self _errorWithErrorCode:resultCode]]; + } + return _databaseClosedTaskCompletionSource.task; + }]; +} + +///-------------------------------------- +#pragma mark - Transaction +///-------------------------------------- + +- (BFTask *)beginTransactionAsync { + return [self executeSQLAsync:PFSQLiteDatabaseBeginExclusiveOperationCommand + withArgumentsInArray:nil]; +} + +- (BFTask *)commitAsync { + return [self executeSQLAsync:PFSQLiteDatabaseCommitOperationCommand + withArgumentsInArray:nil]; +} + +- (BFTask *)rollbackAsync { + return [self executeSQLAsync:PFSQLiteDatabaseRollbackOperationCommand + withArgumentsInArray:nil]; +} + +///-------------------------------------- +#pragma mark - Query Methods +///-------------------------------------- + +- (BFTask *)_executeQueryAsync:(NSString *)sql withArgumentsInArray:(NSArray *)args cachingEnabled:(BOOL)enableCaching { + int resultCode = 0; + PFSQLiteStatement *statement = enableCaching ? [self _cachedStatementForQuery:sql] : nil; + if (!statement) { + sqlite3_stmt *sqliteStatement = nil; + resultCode = sqlite3_prepare_v2(self.database, [sql UTF8String], -1, &sqliteStatement, 0); + if (resultCode != SQLITE_OK) { + sqlite3_finalize(sqliteStatement); + return [BFTask taskWithError:[self _errorWithErrorCode:resultCode]]; + } + statement = [[PFSQLiteStatement alloc] initWithStatement:sqliteStatement]; + + if (enableCaching) { + [self _cacheStatement:statement forQuery:sql]; + } + } else { + [statement reset]; + } + + // Make parameter + int queryCount = sqlite3_bind_parameter_count([statement sqliteStatement]); + int argumentCount = (int)[args count]; + if (queryCount != argumentCount) { + if (!enableCaching) { + [statement close]; + } + + NSError *error = [self _errorWithErrorCode:PFSQLiteDatabaseInvalidArgumenCountErrorCode + errorMessage:@"Statement arguments count doesn't match " + @"given arguments count." + domain:NSStringFromClass([self class])]; + return [BFTask taskWithError:error]; + } + + for (int idx = 0; idx < queryCount; ++idx) { + [self _bindObject:args[idx] toColumn:(idx + 1) inStatement:statement]; + } + + PFSQLiteDatabaseResult *result = [[PFSQLiteDatabaseResult alloc] initWithStatement:statement]; + return [BFTask taskWithResult:result]; +} + +- (BFTask *)executeCachedQueryAsync:(NSString *)sql withArgumentsInArray:(NSArray *)args { + return [BFTask taskFromExecutor:_databaseExecutor withBlock:^id { + return [self _executeQueryAsync:sql withArgumentsInArray:args cachingEnabled:YES]; + }]; +} + +- (BFTask *)executeQueryAsync:(NSString *)sql withArgumentsInArray:(NSArray *)args { + return [BFTask taskFromExecutor:_databaseExecutor withBlock:^id { + return [self _executeQueryAsync:sql withArgumentsInArray:args cachingEnabled:NO]; + }]; +} + +- (BFTask *)executeSQLAsync:(NSString *)sql withArgumentsInArray:(NSArray *)args { + return [BFTask taskFromExecutor:_databaseExecutor withBlock:^id { + return [[self _executeQueryAsync:sql + withArgumentsInArray:args + cachingEnabled:NO] continueWithExecutor:[BFExecutor immediateExecutor] withSuccessBlock:^id(BFTask *task) { + PFSQLiteDatabaseResult *databaseResult = task.result; + int sqliteResultCode = [databaseResult step]; + [databaseResult close]; + + switch (sqliteResultCode) { + case SQLITE_DONE: { + return [BFTask taskWithResult:nil]; + } + case SQLITE_ROW: { + NSError *error = [self _errorWithErrorCode:PFSQLiteDatabaseInvalidSQL + errorMessage:@"Cannot SELECT on executeSQLAsync." + @"Please use executeQueryAsync." + domain:NSStringFromClass([self class])]; + return [BFTask taskWithError:error]; + } + default: { + return [BFTask taskWithError:[self _errorWithErrorCode:sqliteResultCode]]; + } + } + }]; + }]; +} + +/*! + bindObject will bind any object supported by PFSQLiteDatabase to query statement. + Note: sqlite3 query index binding is one-based, while querying result is zero-based. + */ +- (void)_bindObject:(id)obj toColumn:(int)idx inStatement:(PFSQLiteStatement *)statement { + if ((!obj) || ((NSNull *)obj == [NSNull null])) { + sqlite3_bind_null([statement sqliteStatement], idx); + } else if ([obj isKindOfClass:[NSData class]]) { + const void *bytes = [obj bytes]; + if (!bytes) { + // It's an empty NSData object, aka [NSData data]. + // Don't pass a NULL pointer, or sqlite will bind a SQL null instead of a blob. + bytes = ""; + } + sqlite3_bind_blob([statement sqliteStatement], idx, bytes, (int)[obj length], SQLITE_TRANSIENT); + } else if ([obj isKindOfClass:[NSDate class]]) { + sqlite3_bind_double([statement sqliteStatement], idx, [obj timeIntervalSince1970]); + } else if ([obj isKindOfClass:[NSNumber class]]) { + if (CFNumberIsFloatType((__bridge CFNumberRef)obj)) { + sqlite3_bind_double([statement sqliteStatement], idx, [obj doubleValue]); + } else { + sqlite3_bind_int64([statement sqliteStatement], idx, [obj longLongValue]); + } + } else { + sqlite3_bind_text([statement sqliteStatement], idx, [[obj description] UTF8String], -1, SQLITE_TRANSIENT); + } +} + +///-------------------------------------- +#pragma mark - Cached Statements +///-------------------------------------- + +- (void)_clearCachedStatements { + for (PFSQLiteStatement *statement in [_cachedStatements allValues]) { + [statement close]; + } + + [_cachedStatements removeAllObjects]; +} + +- (PFSQLiteStatement *)_cachedStatementForQuery:(NSString *)query { + return _cachedStatements[query]; +} + +- (void)_cacheStatement:(PFSQLiteStatement *)statement forQuery:(NSString *)query { + _cachedStatements[query] = statement; +} + +///-------------------------------------- +#pragma mark - Errors +///-------------------------------------- + +/*! + Generates SQLite error. The details of the error code can be seen in: www.sqlite.org/c3ref/errcode.html + */ +- (NSError *)_errorWithErrorCode:(int)errorCode { + return [self _errorWithErrorCode:errorCode + errorMessage:[NSString stringWithUTF8String:sqlite3_errmsg(self.database)]]; +} + +- (NSError *)_errorWithErrorCode:(int)errorCode errorMessage:(NSString *)errorMessage { + return [self _errorWithErrorCode:errorCode + errorMessage:errorMessage + domain:PFSQLiteDatabaseErrorSQLiteDomain]; +} + +/*! + Generates SQLite/PFSQLiteDatabase error. + */ +- (NSError *)_errorWithErrorCode:(int)errorCode + errorMessage:(NSString *)errorMessage + domain:(NSString *)domain { + NSMutableDictionary *result = [NSMutableDictionary dictionary]; + result[@"code"] = @(errorCode); + result[@"error"] = errorMessage; + return [[NSError alloc] initWithDomain:domain code:errorCode userInfo:result]; +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + +- (BFTask *)databaseClosedTask { + return _databaseClosedTaskCompletionSource.task; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.h new file mode 100644 index 0000000..d1a0f8c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.h @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFFileManager; +@class PFSQLiteDatabase; + +NS_ASSUME_NONNULL_BEGIN + +@interface PFSQLiteDatabaseController : NSObject + +@property (nonatomic, strong, readonly) PFFileManager *fileManager; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithFileManager:(PFFileManager *)fileManager NS_DESIGNATED_INITIALIZER; ++ (instancetype)controllerWithFileManager:(PFFileManager *)fileManager; + +///-------------------------------------- +/// @name Opening +///-------------------------------------- + +/*! + @abstract Asynchronously opens a database connection to the database with the name specified. + @note Only one database can be actively open at a time. + + @param name The name of the database to open. + + @return A task, which yields a `PFSQLiteDatabase`, with the open database. + When the database is closed, a new database connection can be opened. + */ +- (BFTask *)openDatabaseWithNameAsync:(NSString *)name; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.m new file mode 100644 index 0000000..d971ea4 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.m @@ -0,0 +1,79 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFSQLiteDatabaseController.h" + +#import +#import + +#import "PFAssert.h" +#import "PFAsyncTaskQueue.h" +#import "PFFileManager.h" +#import "PFSQLiteDatabase_Private.h" + +@implementation PFSQLiteDatabaseController { + PFAsyncTaskQueue *_openDatabaseQueue; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithFileManager:(PFFileManager *)fileManager { + self = [super init]; + if (!self) return nil; + + _fileManager = fileManager; + _openDatabaseQueue = [[PFAsyncTaskQueue alloc] init]; + + return self; +} + ++ (instancetype)controllerWithFileManager:(PFFileManager *)fileManager { + return [[self alloc] initWithFileManager:fileManager]; +} + +///-------------------------------------- +#pragma mark - Opening +///-------------------------------------- + +// TODO: (richardross) Implement connection pooling using NSCache or similar mechanism. +- (BFTask *)openDatabaseWithNameAsync:(NSString *)name { + BFTaskCompletionSource *taskCompletionSource = [BFTaskCompletionSource taskCompletionSource]; + [_openDatabaseQueue enqueue:^id(BFTask *task) { + NSString *databasePath = [self.fileManager parseDataItemPathForPathComponent:name]; + PFSQLiteDatabase *sqliteDatabase = [PFSQLiteDatabase databaseWithPath:databasePath]; + [[sqliteDatabase openAsync] continueWithBlock:^id(BFTask *task) { + if (task.faulted) { + NSError *error = task.error; + if (error) { + [taskCompletionSource trySetError:error]; + } else { + [taskCompletionSource trySetException:task.exception]; + } + } else if (task.cancelled) { + [taskCompletionSource trySetCancelled]; + } else { + [taskCompletionSource trySetResult:sqliteDatabase]; + } + + return nil; + }]; + + return sqliteDatabase.databaseClosedTask; + }]; + + return taskCompletionSource.task; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.h new file mode 100644 index 0000000..d63d36f --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.h @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@class PFSQLiteStatement; + +NS_ASSUME_NONNULL_BEGIN + +@interface PFSQLiteDatabaseResult : NSObject + +- (instancetype)initWithStatement:(PFSQLiteStatement *)statement; + +/*! + Move current result to next row. Returns true if next result exists. False if current result + is the end of result set. + */ +- (BOOL)next; + +/*! + Move the current result to next row, and returns the raw SQLite return code for the cursor. + Useful for detecting end of cursor vs. error. + */ +- (int)step; + +/*! + Closes the database result. + */ +- (BOOL)close; + +///-------------------------------------- +/// @name Get Column Value +///-------------------------------------- + +- (int)intForColumn:(NSString *)columnName; +- (int)intForColumnIndex:(int)columnIndex; + +- (long)longForColumn:(NSString *)columnName; +- (long)longForColumnIndex:(int)columnIndex; + +- (BOOL)boolForColumn:(NSString *)columnName; +- (BOOL)boolForColumnIndex:(int)columnIndex; + +- (double)doubleForColumn:(NSString *)columnName; +- (double)doubleForColumnIndex:(int)columnIndex; + +- (nullable NSString *)stringForColumn:(NSString *)columnName; +- (nullable NSString *)stringForColumnIndex:(int)columnIndex; + +- (nullable NSDate *)dateForColumn:(NSString *)columnName; +- (nullable NSDate *)dateForColumnIndex:(int)columnIndex; + +- (nullable NSData *)dataForColumn:(NSString *)columnName; +- (nullable NSData *)dataForColumnIndex:(int)columnIndex; + +- (nullable id)objectForColumn:(NSString *)columnName; +- (nullable id)objectForColumnIndex:(int)columnIndex; + +- (BOOL)columnIsNull:(NSString *)columnName; +- (BOOL)columnIndexIsNull:(int)columnIndex; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.m new file mode 100644 index 0000000..cdbeb0e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.m @@ -0,0 +1,168 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFSQLiteDatabaseResult.h" + +#import + +#import "PFSQLiteStatement.h" + +@interface PFSQLiteDatabaseResult () + +@property (nonatomic, copy, readonly) NSDictionary *columnNameToIndexMap; +@property (nonatomic, strong, readonly) PFSQLiteStatement *statement; + +@end + +@implementation PFSQLiteDatabaseResult + +@synthesize columnNameToIndexMap = _columnNameToIndexMap; + +- (instancetype)initWithStatement:(PFSQLiteStatement *)stmt { + if ((self = [super init])) { + _statement = stmt; + } + return self; +} + +- (BOOL)next { + return [self step] == SQLITE_ROW; +} + +- (int)step { + return sqlite3_step([self.statement sqliteStatement]); +} + +- (BOOL)close { + return [self.statement close]; +} + +- (int)intForColumn:(NSString *)columnName { + return [self intForColumnIndex:[self columnIndexForName:columnName]]; +} + +- (int)intForColumnIndex:(int)columnIndex { + return sqlite3_column_int([self.statement sqliteStatement], columnIndex); +} + +- (long)longForColumn:(NSString *)columnName { + return [self longForColumnIndex:[self columnIndexForName:columnName]]; +} + +- (long)longForColumnIndex:(int)columnIndex { + return (long)sqlite3_column_int64([self.statement sqliteStatement], columnIndex); +} + +- (BOOL)boolForColumn:(NSString *)columnName { + return [self boolForColumnIndex:[self columnIndexForName:columnName]]; +} + +- (BOOL)boolForColumnIndex:(int)columnIndex { + return ([self intForColumnIndex:columnIndex] != 0); +} + +- (double)doubleForColumn:(NSString *)columnName { + return [self doubleForColumnIndex:[self columnIndexForName:columnName]]; +} + +- (double)doubleForColumnIndex:(int)columnIndex { + return sqlite3_column_double([self.statement sqliteStatement], columnIndex); +} + +- (NSString *)stringForColumn:(NSString *)columnName { + return [self stringForColumnIndex:[self columnIndexForName:columnName]]; +} + +- (NSString *)stringForColumnIndex:(int)columnIndex { + if ([self columnIndexIsNull:columnIndex]) { + return nil; + } + + const char *str = (const char *)sqlite3_column_text([self.statement sqliteStatement], columnIndex); + if (!str) { + return nil; + } + return [NSString stringWithUTF8String:str]; +} + +- (NSDate *)dateForColumn:(NSString *)columnName { + return [self dateForColumnIndex:[self columnIndexForName:columnName]]; +} + +- (NSDate *)dateForColumnIndex:(int)columnIndex { + // TODO: (nlutsenko) probably use formatter + return [NSDate dateWithTimeIntervalSince1970:[self doubleForColumnIndex:columnIndex]]; +} + +- (NSData *)dataForColumn:(NSString *)columnName { + return [self dataForColumnIndex:[self columnIndexForName:columnName]]; +} + +- (NSData *)dataForColumnIndex:(int)columnIndex { + if ([self columnIndexIsNull:columnIndex]) { + return nil; + } + + int size = sqlite3_column_bytes([self.statement sqliteStatement], columnIndex); + const char *buffer = sqlite3_column_blob([self.statement sqliteStatement], columnIndex); + if (buffer == nil) { + return nil; + } + return [NSData dataWithBytes:buffer length:size]; +} + +- (id)objectForColumn:(NSString *)columnName { + return [self objectForColumnIndex:[self columnIndexForName:columnName]]; +} + +- (id)objectForColumnIndex:(int)columnIndex { + int columnType = sqlite3_column_type([self.statement sqliteStatement], columnIndex); + switch (columnType) { + case SQLITE_INTEGER: + return @([self longForColumnIndex:columnIndex]); + case SQLITE_FLOAT: + return @([self doubleForColumnIndex:columnIndex]); + case SQLITE_BLOB: + return [self dataForColumnIndex:columnIndex]; + default: + return [self stringForColumnIndex:columnIndex]; + } +} + +- (BOOL)columnIsNull:(NSString *)columnName { + return [self columnIndexIsNull:[self columnIndexForName:columnName]]; +} + +- (BOOL)columnIndexIsNull:(int)columnIndex { + return (sqlite3_column_type([self.statement sqliteStatement], columnIndex) == SQLITE_NULL); +} + +- (int)columnIndexForName:(NSString *)columnName { + NSNumber *index = self.columnNameToIndexMap[[columnName lowercaseString]]; + if (index) { + return [index intValue]; + } + // not found + return -1; +} + +- (NSDictionary *)columnNameToIndexMap { + if (!_columnNameToIndexMap) { + int columnCount = sqlite3_column_count([self.statement sqliteStatement]); + NSMutableDictionary *mutableColumnNameToIndexMap = [[NSMutableDictionary alloc] initWithCapacity:columnCount]; + for (int i = 0; i < columnCount; ++i) { + NSString *key = [NSString stringWithUTF8String:sqlite3_column_name([self.statement sqliteStatement], i)]; + mutableColumnNameToIndexMap[[key lowercaseString]] = @(i); + } + _columnNameToIndexMap = mutableColumnNameToIndexMap; + } + return _columnNameToIndexMap; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase_Private.h new file mode 100644 index 0000000..5db0366 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase_Private.h @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFSQLiteDatabase.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFSQLiteDatabase () + +@property (nonatomic, strong, readonly) BFTask *databaseClosedTask; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.h new file mode 100644 index 0000000..04e181c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.h @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/*! + PFSQLiteStatement is sqlite3_stmt wrapper class. + */ +typedef struct sqlite3_stmt sqlite3_stmt; + +@interface PFSQLiteStatement : NSObject + +@property (atomic, assign, readonly) sqlite3_stmt *sqliteStatement; + +- (instancetype)initWithStatement:(sqlite3_stmt *)stmt; + +- (BOOL)close; +- (BOOL)reset; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.m new file mode 100644 index 0000000..03f31b6 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.m @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFSQLiteStatement.h" + +#import + +@implementation PFSQLiteStatement + +- (instancetype)initWithStatement:(sqlite3_stmt *)stmt { + self = [super init]; + if (!stmt || !self) return nil; + + _sqliteStatement = stmt; + + return self; +} + +- (void)dealloc { + [self close]; +} + +- (BOOL)close { + if (!_sqliteStatement) { + return YES; + } + + int resultCode = sqlite3_finalize(_sqliteStatement); + _sqliteStatement = nil; + + return (resultCode == SQLITE_OK || resultCode == SQLITE_DONE); +} + +- (BOOL)reset { + if (!_sqliteStatement) { + return YES; + } + + int resultCode = sqlite3_reset(_sqliteStatement); + return (resultCode == SQLITE_OK || resultCode == SQLITE_DONE); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.h new file mode 100644 index 0000000..da1ad89 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.h @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +//TODO: (nlutsenko) Add unit tests for this class. +@interface PFMultiProcessFileLock : NSObject + +@property (nonatomic, copy, readonly) NSString *filePath; +@property (nonatomic, copy, readonly) NSString *lockFilePath; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initForFileWithPath:(NSString *)path NS_DESIGNATED_INITIALIZER; ++ (instancetype)lockForFileWithPath:(NSString *)path; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.m new file mode 100644 index 0000000..2c02cea --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.m @@ -0,0 +1,105 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFMultiProcessFileLock.h" + +#import "PFAssert.h" +#import "PFMacros.h" + +static const NSTimeInterval PFMultiProcessLockAttemptsDelay = 0.001; + +@interface PFMultiProcessFileLock () { + dispatch_queue_t _synchronizationQueue; + int _fileDescriptor; +} + +@property (nonatomic, copy, readwrite) NSString *filePath; +@property (nonatomic, copy, readwrite) NSString *lockFilePath; + +@end + +@implementation PFMultiProcessFileLock + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initForFileWithPath:(NSString *)path { + self = [super init]; + if (!self) return nil; + + _filePath = [path copy]; + _lockFilePath = [path stringByAppendingPathExtension:@"pflock"]; + + NSString *queueName = [NSString stringWithFormat:@"com.parse.multiprocess.%@", + [[path lastPathComponent] stringByDeletingPathExtension]]; + _synchronizationQueue = dispatch_queue_create([queueName UTF8String], DISPATCH_QUEUE_SERIAL); + + return self; +} + ++ (instancetype)lockForFileWithPath:(NSString *)path { + return [[self alloc] initForFileWithPath:path]; +} + +- (void)dealloc { + [self unlock]; +} + +///-------------------------------------- +#pragma mark - NSLocking +///-------------------------------------- + +- (void)lock { + dispatch_sync(_synchronizationQueue, ^{ + // Greater than zero means that the lock was already succesfully acquired. + if (_fileDescriptor > 0) { + return; + } + + BOOL locked = NO; + while (!locked) @autoreleasepool { + locked = [self _tryLock]; + if (!locked) { + [NSThread sleepForTimeInterval:PFMultiProcessLockAttemptsDelay]; + } + } + }); +} + +- (void)unlock { + dispatch_sync(_synchronizationQueue, ^{ + // Only descriptor that is greater than zero is going to be open. + if (_fileDescriptor <= 0) { + return; + } + + close(_fileDescriptor); + _fileDescriptor = 0; + }); +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + +- (BOOL)_tryLock { + const char *filePath = [self.lockFilePath fileSystemRepresentation]; + + // Atomically create a lock file if it doesn't exist and acquire the lock. + _fileDescriptor = open(filePath, (O_RDWR | O_CREAT | O_EXLOCK), + ((S_IRUSR | S_IWUSR | S_IXUSR) | (S_IRGRP | S_IWGRP | S_IXGRP) | (S_IROTH | S_IWOTH | S_IXOTH))); + return (_fileDescriptor > 0); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.h new file mode 100644 index 0000000..098b01a --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.h @@ -0,0 +1,36 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +//TODO: (nlutsenko) Add unit tests for this class. +@interface PFMultiProcessFileLockController : NSObject + +//TODO: (nlutsenko) Re-consider using singleton here. ++ (instancetype)sharedController; + +/*! + Increments the content access counter by 1. + If the count was 0 - this will try to acquire the file lock first. + + @param filePath Path to a file to lock access to. + */ +- (void)beginLockedContentAccessForFileAtPath:(NSString *)filePath; + +/*! + Decrements the content access counter by 1. + If the count reaches 0 - the lock is going to be released. + + @param filePath Path to a file to lock access to. + */ +- (void)endLockedContentAccessForFileAtPath:(NSString *)filePath; + +- (NSUInteger)lockedContentAccessCountForFileAtPath:(NSString *)filePath; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.m new file mode 100644 index 0000000..be10da9 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.m @@ -0,0 +1,88 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFMultiProcessFileLockController.h" + +#import "PFMultiProcessFileLock.h" + +@interface PFMultiProcessFileLockController () { + dispatch_queue_t _synchronizationQueue; + NSMutableDictionary *_locksDictionary; + NSMutableDictionary *_contentAccessDictionary; +} + +@end + +@implementation PFMultiProcessFileLockController + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _synchronizationQueue = dispatch_queue_create("com.parse.multiprocesslock.controller", DISPATCH_QUEUE_CONCURRENT); + + _locksDictionary = [NSMutableDictionary dictionary]; + _contentAccessDictionary = [NSMutableDictionary dictionary]; + + return self; +} + ++ (instancetype)sharedController { + static PFMultiProcessFileLockController *controller; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + controller = [[self alloc] init]; + }); + return controller; +} + +///-------------------------------------- +#pragma mark - Public +///-------------------------------------- + +- (void)beginLockedContentAccessForFileAtPath:(NSString *)filePath { + dispatch_barrier_sync(_synchronizationQueue, ^{ + PFMultiProcessFileLock *fileLock = _locksDictionary[filePath]; + if (!fileLock) { + fileLock = [PFMultiProcessFileLock lockForFileWithPath:filePath]; + _locksDictionary[filePath] = fileLock; + } + + [fileLock lock]; + + NSUInteger contentAccess = [_contentAccessDictionary[filePath] unsignedIntegerValue]; + _contentAccessDictionary[filePath] = @(contentAccess + 1); + }); +} + +- (void)endLockedContentAccessForFileAtPath:(NSString *)filePath { + dispatch_barrier_sync(_synchronizationQueue, ^{ + PFMultiProcessFileLock *fileLock = _locksDictionary[filePath]; + [fileLock unlock]; + + if (fileLock && [_contentAccessDictionary[filePath] unsignedIntegerValue] == 0) { + [_locksDictionary removeObjectForKey:filePath]; + [_contentAccessDictionary removeObjectForKey:filePath]; + } + }); +} + +- (NSUInteger)lockedContentAccessCountForFileAtPath:(NSString *)filePath { + __block NSUInteger value = 0; + dispatch_sync(_synchronizationQueue, ^{ + value = [_contentAccessDictionary[filePath] unsignedIntegerValue]; + }); + return value; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/BatchController/PFObjectBatchController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/BatchController/PFObjectBatchController.h new file mode 100644 index 0000000..a513f6d --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/BatchController/PFObjectBatchController.h @@ -0,0 +1,55 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFDataProvider.h" +#import "PFMacros.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFObject; + +NS_ASSUME_NONNULL_BEGIN + +@interface PFObjectBatchController : NSObject + +@property (nonatomic, weak, readonly) id dataSource; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; ++ (instancetype)controllerWithDataSource:(id)dataSource; + +///-------------------------------------- +/// @name Fetch +///-------------------------------------- + +- (BFTask *)fetchObjectsAsync:(nullable NSArray *)objects withSessionToken:(nullable NSString *)sessionToken; + +///-------------------------------------- +/// @name Delete +///-------------------------------------- + +- (BFTask *)deleteObjectsAsync:(nullable NSArray *)objects withSessionToken:(nullable NSString *)sessionToken; + +///-------------------------------------- +/// @name Utilities +///-------------------------------------- + ++ (nullable NSArray *)uniqueObjectsArrayFromArray:(nullable NSArray *)objects omitObjectsWithData:(BOOL)omitFetched; ++ (NSArray *)uniqueObjectsArrayFromArray:(NSArray *)objects usingFilter:(BOOL (^)(PFObject *object))filter; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/BatchController/PFObjectBatchController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/BatchController/PFObjectBatchController.m new file mode 100644 index 0000000..5ad34ca --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/BatchController/PFObjectBatchController.m @@ -0,0 +1,229 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectBatchController.h" + +#import + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFCommandRunning.h" +#import "PFErrorUtilities.h" +#import "PFMacros.h" +#import "PFObjectController.h" +#import "PFObjectPrivate.h" +#import "PFQueryPrivate.h" +#import "PFRESTQueryCommand.h" +#import "PFRESTObjectCommand.h" +#import "PFRESTObjectBatchCommand.h" + +@implementation PFObjectBatchController + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithDataSource:(id)dataSource { + self = [super init]; + if (!self) return nil; + + _dataSource = dataSource; + + return self; +} + ++ (instancetype)controllerWithDataSource:(id)dataSource { + return [[self alloc] initWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - Fetch +///-------------------------------------- + +- (BFTask *)fetchObjectsAsync:(NSArray *)objects withSessionToken:(NSString *)sessionToken { + if (objects.count == 0) { + return [BFTask taskWithResult:objects]; + } + + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + PFRESTCommand *command = [self _fetchCommandForObjects:objects withSessionToken:sessionToken]; + return [self.dataSource.commandRunner runCommandAsync:command + withOptions:PFCommandRunningOptionRetryIfFailed]; + }] continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + PFCommandResult *result = task.result; + return [self _processFetchResultAsync:result.result forObjects:objects]; + }]; +} + +- (PFRESTCommand *)_fetchCommandForObjects:(NSArray *)objects withSessionToken:(NSString *)sessionToken { + NSArray *objectIds = [objects valueForKey:@keypath(PFObject, objectId)]; + PFQuery *query = [PFQuery queryWithClassName:[objects.firstObject parseClassName]]; + [query whereKey:@keypath(PFObject, objectId) containedIn:objectIds]; + query.limit = objectIds.count; + return [PFRESTQueryCommand findCommandForQueryState:query.state withSessionToken:sessionToken]; +} + +- (BFTask *)_processFetchResultAsync:(NSDictionary *)result forObjects:(NSArray *)objects { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + NSArray *results = result[@"results"]; // TODO: (nlutsenko) Move this logic into command itself? + NSArray *objectIds = [results valueForKey:@keypath(PFObject, objectId)]; + NSDictionary *objectResults = [NSDictionary dictionaryWithObjects:results forKeys:objectIds]; + + NSMutableArray *tasks = [NSMutableArray arrayWithCapacity:objects.count]; + for (PFObject *object in objects) { + PFObjectController *controller = [[object class] objectController]; + NSDictionary *objectResult = objectResults[object.objectId]; + + BFTask *task = nil; + if (objectResult) { + task = [controller processFetchResultAsync:objectResult forObject:object]; + } else { + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorObjectNotFound + message:@"Object not found on the server."]; + task = [BFTask taskWithError:error]; + } + [tasks addObject:task]; + } + return [BFTask taskForCompletionOfAllTasks:tasks]; + }]; +} + +///-------------------------------------- +#pragma mark - Delete +///-------------------------------------- + +- (BFTask *)deleteObjectsAsync:(NSArray *)objects withSessionToken:(NSString *)sessionToken { + if (objects.count == 0) { + return [BFTask taskWithResult:objects]; + } + + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + NSArray *objectBatches = [PFInternalUtils arrayBySplittingArray:objects + withMaximumComponentsPerSegment:PFRESTObjectBatchCommandSubcommandsLimit]; + NSMutableArray *tasks = [NSMutableArray arrayWithCapacity:objectBatches.count]; + for (NSArray *batch in objectBatches) { + PFRESTCommand *command = [self _deleteCommandForObjects:batch withSessionToken:sessionToken]; + BFTask *task = [[self.dataSource.commandRunner runCommandAsync:command + withOptions:PFCommandRunningOptionRetryIfFailed] continueWithSuccessBlock:^id(BFTask *task) { + PFCommandResult *result = task.result; + return [self _processDeleteResultsAsync:[result result] forObjects:batch]; + }]; + [tasks addObject:task]; + } + return [[BFTask taskForCompletionOfAllTasks:tasks] continueWithBlock:^id(BFTask *task) { + NSError *taskError = task.error; + if (taskError && [taskError.domain isEqualToString:BFTaskErrorDomain]) { + NSArray *taskErrors = taskError.userInfo[@"errors"]; + NSMutableArray *errors = [NSMutableArray array]; + for (NSError *error in taskErrors) { + if ([error.domain isEqualToString:BFTaskErrorDomain]) { + [errors addObjectsFromArray:error.userInfo[@"errors"]]; + } else { + [errors addObject:error]; + } + } + return [BFTask taskWithError:[NSError errorWithDomain:BFTaskErrorDomain + code:kBFMultipleErrorsError + userInfo:@{ @"errors" : errors }]]; + } + return task; + }]; + }] continueWithSuccessResult:objects]; +} + +- (PFRESTCommand *)_deleteCommandForObjects:(NSArray *)objects withSessionToken:(NSString *)sessionToken { + NSMutableArray *commands = [NSMutableArray arrayWithCapacity:objects.count]; + for (PFObject *object in objects) { + PFRESTCommand *deleteCommand = [PFRESTObjectCommand deleteObjectCommandForObjectState:object._state + withSessionToken:sessionToken]; + [commands addObject:deleteCommand]; + } + return [PFRESTObjectBatchCommand batchCommandWithCommands:commands sessionToken:sessionToken]; +} + +- (BFTask *)_processDeleteResultsAsync:(NSArray *)results forObjects:(NSArray *)objects { + NSMutableArray *tasks = [NSMutableArray arrayWithCapacity:results.count]; + [results enumerateObjectsUsingBlock:^(NSDictionary *result, NSUInteger idx, BOOL *stop) { + PFObject *object = objects[idx]; + NSDictionary *errorResult = result[@"error"]; + NSDictionary *successResult = result[@"success"]; + + id controller = [[object class] objectController]; + BFTask *task = [controller processDeleteResultAsync:successResult forObject:object]; + if (errorResult) { + task = [task continueWithBlock:^id(BFTask *task) { + return [BFTask taskWithError:[PFErrorUtilities errorFromResult:errorResult]]; + }]; + } + [tasks addObject:task]; + }]; + return [BFTask taskForCompletionOfAllTasks:tasks]; +} + +///-------------------------------------- +#pragma mark - Utilities +///-------------------------------------- + +//TODO: (nlutsenko) Convert to use `uniqueObjectsArrayFromArray:usingFilter:` ++ (NSArray *)uniqueObjectsArrayFromArray:(NSArray *)objects omitObjectsWithData:(BOOL)omitFetched { + if (objects.count == 0) { + return objects; + } + + NSMutableSet *set = [NSMutableSet setWithCapacity:[objects count]]; + NSString *className = [objects.firstObject parseClassName]; + for (PFObject *object in objects) { + @synchronized (object.lock) { + if (omitFetched && [object isDataAvailable]) { + continue; + } + + //TODO: (nlutsenko) Convert to using errors instead of assertions. + PFParameterAssert([className isEqualToString:object.parseClassName], + @"All object should be in the same class."); + PFParameterAssert(object.objectId != nil, + @"All objects must exist on the server."); + + [set addObject:object]; + } + } + return [set allObjects]; +} + ++ (NSArray *)uniqueObjectsArrayFromArray:(NSArray *)objects usingFilter:(BOOL (^)(PFObject *object))filter { + if (objects.count == 0) { + return objects; + } + + NSMutableDictionary *uniqueObjects = [NSMutableDictionary dictionary]; + for (PFObject *object in objects) { + if (!filter(object)) { + continue; + } + + // Use stringWithFormat: in case objectId or parseClassName are nil. + NSString *objectIdentifier = [NSString stringWithFormat:@"%@%@", object.parseClassName, object.objectId]; + if (!uniqueObjects[objectIdentifier]) { + uniqueObjects[objectIdentifier] = object; + } + } + return [uniqueObjects allValues]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCoder.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCoder.h new file mode 100644 index 0000000..371acc1 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCoder.h @@ -0,0 +1,38 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@class PFDecoder; +@class PFEncoder; +@class PFObject; + +NS_ASSUME_NONNULL_BEGIN + +/*! + Handles encoding/decoding of `PFObject`s into a /2 JSON format. + /2 format is only used for persisting `currentUser`, `currentInstallation` to disk when LDS is not enabled. + */ +@interface PFObjectFileCoder : NSObject + +///-------------------------------------- +/// @name Encode +///-------------------------------------- + ++ (NSData *)dataFromObject:(PFObject *)object usingEncoder:(PFEncoder *)encoder; + +///-------------------------------------- +/// @name Decode +///-------------------------------------- + ++ (PFObject *)objectFromData:(NSData *)data usingDecoder:(PFDecoder *)decoder; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCoder.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCoder.m new file mode 100644 index 0000000..75bc197 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCoder.m @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectFileCoder.h" + +#import "PFJSONSerialization.h" +#import "PFObjectFileCodingLogic.h" +#import "PFObjectPrivate.h" +#import "PFObjectState.h" + +@implementation PFObjectFileCoder + +///-------------------------------------- +#pragma mark - Encode +///-------------------------------------- + ++ (NSData *)dataFromObject:(PFObject *)object usingEncoder:(PFEncoder *)encoder { + NSMutableDictionary *result = [NSMutableDictionary dictionary]; + result[@"classname"] = object._state.parseClassName; + result[@"data"] = [object._state dictionaryRepresentationWithObjectEncoder:encoder]; + return [PFJSONSerialization dataFromJSONObject:result]; +} + +///-------------------------------------- +#pragma mark - Decode +///-------------------------------------- + ++ (PFObject *)objectFromData:(NSData *)data usingDecoder:(PFDecoder *)decoder { + NSDictionary *dictionary = [PFJSONSerialization JSONObjectFromData:data]; + NSString *className = dictionary[@"classname"] ?: dictionary[@"className"]; + NSString *objectId = dictionary[@"data"][@"objectId"] ?: dictionary[@"id"]; + + PFObject *object = [PFObject objectWithoutDataWithClassName:className objectId:objectId]; + [[[object class] objectFileCodingLogic] updateObject:object fromDictionary:dictionary usingDecoder:decoder]; + return object; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.h new file mode 100644 index 0000000..c9ce66c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.h @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@class PFDecoder; +@class PFObject; + +NS_ASSUME_NONNULL_BEGIN + +@interface PFObjectFileCodingLogic : NSObject + +///-------------------------------------- +/// @name Init +///-------------------------------------- + ++ (instancetype)codingLogic; + +///-------------------------------------- +/// @name Logic +///-------------------------------------- + +- (void)updateObject:(PFObject *)object fromDictionary:(NSDictionary *)dictionary usingDecoder:(PFDecoder *)decoder; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.m new file mode 100644 index 0000000..f5955f1 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.m @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectFileCodingLogic.h" + +#import "PFMutableObjectState.h" +#import "PFObjectPrivate.h" + +@implementation PFObjectFileCodingLogic + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + ++ (instancetype)codingLogic { + return [[self alloc] init]; +} + +///-------------------------------------- +#pragma mark - Logic +///-------------------------------------- + +- (void)updateObject:(PFObject *)object fromDictionary:(NSDictionary *)dictionary usingDecoder:(PFDecoder *)decoder { + PFMutableObjectState *state = [object._state mutableCopy]; + NSString *newObjectId = dictionary[@"id"]; + if (newObjectId) { + state.objectId = newObjectId; + } + NSString *createdAtString = dictionary[@"created_at"]; + if (createdAtString) { + [state setCreatedAtFromString:createdAtString]; + } + NSString *updatedAtString = dictionary[@"updated_at"]; + if (updatedAtString) { + [state setUpdatedAtFromString:updatedAtString]; + } + object._state = state; + + NSDictionary *newPointers = dictionary[@"pointers"]; + NSMutableDictionary *pointersDictionary = [NSMutableDictionary dictionaryWithCapacity:newPointers.count]; + [newPointers enumerateKeysAndObjectsUsingBlock:^(id key, NSArray *pointerArray, BOOL *stop) { + PFObject *pointer = [PFObject objectWithoutDataWithClassName:[pointerArray firstObject] + objectId:[pointerArray lastObject]]; + pointersDictionary[key] = pointer; + }]; + + NSMutableDictionary *dataDictionary = [NSMutableDictionary dictionaryWithDictionary:dictionary[@"data"]]; + [dataDictionary addEntriesFromDictionary:pointersDictionary]; + [object _mergeAfterFetchWithResult:dataDictionary decoder:decoder completeData:YES]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Constants/PFObjectConstants.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Constants/PFObjectConstants.h new file mode 100644 index 0000000..524078c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Constants/PFObjectConstants.h @@ -0,0 +1,23 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +// REST Key magic strings +extern NSString *const PFObjectCompleteRESTKey; +extern NSString *const PFObjectOperationsRESTKey; +extern NSString *const PFObjectTypeRESTKey; +extern NSString *const PFObjectObjectIdRESTKey; +extern NSString *const PFObjectUpdatedAtRESTKey; +extern NSString *const PFObjectCreatedAtRESTKey; +extern NSString *const PFObjectIsDeletingEventuallyRESTKey; +extern NSString *const PFObjectClassNameRESTKey; +extern NSString *const PFObjectACLRESTKey; + +extern NSString *const PFObjectDefaultPin; diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Constants/PFObjectConstants.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Constants/PFObjectConstants.m new file mode 100644 index 0000000..76047ec --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Constants/PFObjectConstants.m @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectConstants.h" + +NSString *const PFObjectCompleteRESTKey = @"__complete"; +NSString *const PFObjectOperationsRESTKey = @"__operations"; +NSString *const PFObjectTypeRESTKey = @"__type"; +NSString *const PFObjectObjectIdRESTKey = @"objectId"; +NSString *const PFObjectUpdatedAtRESTKey = @"updatedAt"; +NSString *const PFObjectCreatedAtRESTKey = @"createdAt"; +NSString *const PFObjectIsDeletingEventuallyRESTKey = @"isDeletingEventually"; +NSString *const PFObjectClassNameRESTKey = @"className"; +NSString *const PFObjectACLRESTKey = @"ACL"; + +NSString *const PFObjectDefaultPin = @"_default"; diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.h new file mode 100644 index 0000000..27dd6dd --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.h @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFOfflineObjectController : PFObjectController + +@property (nonatomic, weak, readonly) id dataSource; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)initWithDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; ++ (instancetype)controllerWithDataSource:(id)dataSource; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m new file mode 100644 index 0000000..e9cefc3 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m @@ -0,0 +1,86 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFOfflineObjectController.h" + +#import "BFTask+Private.h" +#import "PFMacros.h" +#import "PFObjectController_Private.h" +#import "PFObjectPrivate.h" +#import "PFObjectState.h" +#import "PFOfflineStore.h" + +@interface PFOfflineObjectController () + +@property (nonatomic, strong, readonly) PFOfflineStore *offlineStore; + +@end + +@implementation PFOfflineObjectController + +@dynamic dataSource; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithDataSource:(id)dataSource { + return [super initWithDataSource:dataSource]; +} + ++ (instancetype)controllerWithDataSource:(id)dataSource { + return [super controllerWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - PFObjectController +///-------------------------------------- + +- (BFTask *)processFetchResultAsync:(NSDictionary *)result forObject:(PFObject *)object { + return [[[[self.offlineStore fetchObjectLocallyAsync:object] continueWithBlock:^id(BFTask *task) { + // Catch CacheMiss error and ignore it. + if ([task.error.domain isEqualToString:PFParseErrorDomain] && + task.error.code == kPFErrorCacheMiss) { + return nil; + } + return task; + }] continueWithBlock:^id(BFTask *task) { + return [super processFetchResultAsync:result forObject:object]; + }] continueWithBlock:^id(BFTask *task) { + return [[self.offlineStore updateDataForObjectAsync:object] continueWithBlock:^id(BFTask *task) { + // Catch CACHE_MISS and ignore it. + if ([task.error.domain isEqualToString:PFParseErrorDomain] && + task.error.code == kPFErrorCacheMiss) { + return [BFTask taskWithResult:nil]; + } + return task; + }]; + }]; +} + +- (BFTask *)processDeleteResultAsync:(nullable NSDictionary *)result forObject:(PFObject *)object { + @weakify(self); + return [[super processDeleteResultAsync:result forObject:object] continueWithBlock:^id(BFTask *task) { + @strongify(self); + if (object._state.deleted) { + return [self.offlineStore deleteDataForObjectAsync:object]; + } + return [self.offlineStore updateDataForObjectAsync:object]; + }]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (PFOfflineStore *)offlineStore { + return self.dataSource.offlineStore; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectController.h new file mode 100644 index 0000000..44a8ac6 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectController.h @@ -0,0 +1,35 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFDataProvider.h" +#import "PFObjectControlling.h" + + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFObject; + +NS_ASSUME_NONNULL_BEGIN + +@interface PFObjectController : NSObject + +@property (nonatomic, weak, readonly) id dataSource; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; ++ (instancetype)controllerWithDataSource:(id)dataSource; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectController.m new file mode 100644 index 0000000..ec5d45b --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectController.m @@ -0,0 +1,126 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectController.h" +#import "PFObjectController_Private.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFCommandRunning.h" +#import "PFErrorUtilities.h" +#import "PFMacros.h" +#import "PFObjectPrivate.h" +#import "PFObjectState.h" +#import "PFRESTObjectCommand.h" +#import "PFTaskQueue.h" + +@implementation PFObjectController + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithDataSource:(id)dataSource { + self = [super init]; + if (!self) return nil; + + _dataSource = dataSource; + + return self; +} + ++ (instancetype)controllerWithDataSource:(id)dataSource { + return [[self alloc] initWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - PFObjectControlling +///-------------------------------------- + +#pragma mark Fetch + +- (BFTask *)fetchObjectAsync:(PFObject *)object withSessionToken:(NSString *)sessionToken { + @weakify(self); + return [[[[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + return [object _validateFetchAsync]; + }] continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + PFRESTCommand *command = [PFRESTObjectCommand fetchObjectCommandForObjectState:[object._state copy] + withSessionToken:sessionToken]; + return [self _runFetchCommand:command forObject:object]; + }] continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + PFCommandResult *result = task.result; + return [self processFetchResultAsync:result.result forObject:object]; + }] continueWithSuccessResult:object]; +} + +- (BFTask *)_runFetchCommand:(PFRESTCommand *)command forObject:(PFObject *)object { + return [self.dataSource.commandRunner runCommandAsync:command withOptions:PFCommandRunningOptionRetryIfFailed]; +} + +- (BFTask *)processFetchResultAsync:(NSDictionary *)result forObject:(PFObject *)object { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + NSDictionary *fetchedObjects = [object _collectFetchedObjects]; + @synchronized (object.lock) { + PFKnownParseObjectDecoder *decoder = [PFKnownParseObjectDecoder decoderWithFetchedObjects:fetchedObjects]; + [object _mergeAfterFetchWithResult:result decoder:decoder completeData:YES]; + } + return nil; + }]; +} + +#pragma mark Delete + +- (BFTask *)deleteObjectAsync:(PFObject *)object withSessionToken:(nullable NSString *)sessionToken { + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + return [object _validateDeleteAsync]; + }] continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + PFObjectState *state = [object._state copy]; + if (!state.objectId) { + return nil; + } + + PFRESTCommand *command = [PFRESTObjectCommand deleteObjectCommandForObjectState:state + withSessionToken:sessionToken]; + return [[self _runDeleteCommand:command forObject:object] continueWithBlock:^id(BFTask *fetchTask) { + @strongify(self); + PFCommandResult *result = fetchTask.result; + return [[self processDeleteResultAsync:result.result forObject:object] continueWithBlock:^id(BFTask *task) { + // Propagate the result of network task if it's faulted, cancelled. + if (fetchTask.faulted || fetchTask.cancelled) { + return fetchTask; + } + // Propagate the result of processDeleteResult otherwise. + return task; + }]; + }]; + }]; +} + +- (BFTask *)_runDeleteCommand:(PFRESTCommand *)command forObject:(PFObject *)object { + return [self.dataSource.commandRunner runCommandAsync:command withOptions:PFCommandRunningOptionRetryIfFailed]; +} + +- (BFTask *)processDeleteResultAsync:(NSDictionary *)result forObject:(PFObject *)object { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + BOOL deleted = (result != nil); + [object _setDeleted:deleted]; + return nil; + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectController_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectController_Private.h new file mode 100644 index 0000000..7ca5abc --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectController_Private.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectController.h" + +@class PFRESTCommand; + +@interface PFObjectController () + +///-------------------------------------- +/// @name Fetch +///-------------------------------------- + +- (BFTask *)_runFetchCommand:(PFRESTCommand *)command forObject:(PFObject *)object; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectControlling.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectControlling.h new file mode 100644 index 0000000..e57a645 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Controller/PFObjectControlling.h @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFMacros.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFObject; + +NS_ASSUME_NONNULL_BEGIN + +@protocol PFObjectControlling + +///-------------------------------------- +/// @name Fetch +///-------------------------------------- + +/*! + Fetches an object asynchronously. + + @param object Object to fetch. + @param sessionToken Session token to use. + + @returns `BFTask` with result set to `PFObject`. + */ +- (BFTask *)fetchObjectAsync:(PFObject *)object withSessionToken:(nullable NSString *)sessionToken; + +- (BFTask *)processFetchResultAsync:(NSDictionary *)result forObject:(PFObject *)object; + +///-------------------------------------- +/// @name Delete +///-------------------------------------- + +/*! + Deletes an object asynchronously. + + @param object Object to fetch. + @param sessionToken Session token to use. + + @returns `BFTask` with result set to `nil`. + */ +- (BFTask *)deleteObjectAsync:(PFObject *)object withSessionToken:(nullable NSString *)sessionToken; + +//TODO: (nlutsenko) This needs removal, figure out how to kill it. +- (BFTask *)processDeleteResultAsync:(nullable NSDictionary *)result forObject:(PFObject *)object; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/CurrentController/PFCurrentObjectControlling.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/CurrentController/PFCurrentObjectControlling.h new file mode 100644 index 0000000..9cbd1b0 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/CurrentController/PFCurrentObjectControlling.h @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFObject; + +typedef NS_ENUM(NSUInteger, PFCurrentObjectStorageType) { + PFCurrentObjectStorageTypeFile = 1, + PFCurrentObjectStorageTypeOfflineStore, +}; + +@protocol PFCurrentObjectControlling + +@property (nonatomic, assign, readonly) PFCurrentObjectStorageType storageType; + +///-------------------------------------- +/// @name Current +///-------------------------------------- + +- (BFTask *)getCurrentObjectAsync; +- (BFTask *)saveCurrentObjectAsync:(PFObject *)object; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.h new file mode 100644 index 0000000..b507e8a --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.h @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@class PFFieldOperation; +@class PFOperationSet; + +@interface PFObjectEstimatedData : NSObject + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)initWithServerData:(NSDictionary *)serverData + operationSetQueue:(NSArray *)operationSetQueue; ++ (instancetype)estimatedDataFromServerData:(NSDictionary *)serverData + operationSetQueue:(NSArray *)operationSetQueue; + +///-------------------------------------- +/// @name Read +///-------------------------------------- + +- (id)objectForKey:(NSString *)key; +- (id)objectForKeyedSubscript:(NSString *)keyedSubscript; + +- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(NSString *key, id obj, BOOL *stop))block; + +@property (nonatomic, copy, readonly) NSArray *allKeys; +@property (nonatomic, copy, readonly) NSDictionary *dictionaryRepresentation; + +///-------------------------------------- +/// @name Write +///-------------------------------------- + +- (id)applyFieldOperation:(PFFieldOperation *)operation forKey:(NSString *)key; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.m new file mode 100644 index 0000000..7fb5df5 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.m @@ -0,0 +1,86 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectEstimatedData.h" + +#import "PFObjectUtilities.h" + +@interface PFObjectEstimatedData () { + NSMutableDictionary *_dataDictionary; +} + +@end + +@implementation PFObjectEstimatedData + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _dataDictionary = [NSMutableDictionary dictionary]; + + return self; +} + +- (instancetype)initWithServerData:(NSDictionary *)serverData + operationSetQueue:(NSArray *)operationSetQueue { + self = [super init]; + if (!self) return nil; + + // Don't use mutableCopy to make sure we never initialize _dataDictionary to `nil`. + _dataDictionary = [NSMutableDictionary dictionaryWithDictionary:serverData]; + for (PFOperationSet *operationSet in operationSetQueue) { + [PFObjectUtilities applyOperationSet:operationSet toDictionary:_dataDictionary]; + } + + return self; +} + ++ (instancetype)estimatedDataFromServerData:(NSDictionary *)serverData + operationSetQueue:(NSArray *)operationSetQueue { + return [[self alloc] initWithServerData:serverData operationSetQueue:operationSetQueue]; +} + +///-------------------------------------- +#pragma mark - Read +///-------------------------------------- + +- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(NSString *key, id obj, BOOL *stop))block { + [_dataDictionary enumerateKeysAndObjectsUsingBlock:block]; +} + +- (id)objectForKey:(NSString *)key { + return [_dataDictionary objectForKey:key]; +} + +- (id)objectForKeyedSubscript:(NSString *)keyedSubscript { + return [_dataDictionary objectForKeyedSubscript:keyedSubscript]; +} + +- (NSArray *)allKeys { + return [_dataDictionary allKeys]; +} + +- (NSDictionary *)dictionaryRepresentation { + return [_dataDictionary copy]; +} + +///-------------------------------------- +#pragma mark - Write +///-------------------------------------- + +- (id)applyFieldOperation:(PFFieldOperation *)operation forKey:(NSString *)key { + return [PFObjectUtilities newValueByApplyingFieldOperation:operation toDictionary:_dataDictionary forKey:key]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.h new file mode 100644 index 0000000..8537ddf --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.h @@ -0,0 +1,55 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFDataProvider.h" +#import "PFMacros.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFObject; + +@interface PFObjectFilePersistenceController : NSObject + +@property (nonatomic, weak, readonly) id dataSource; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; ++ (instancetype)controllerWithDataSource:(id)dataSource; + +///-------------------------------------- +/// @name Objects +///-------------------------------------- + +/*! + Loads and creates a PFObject from file. + + @param key File name to use. + + @returns `BFTask` with `PFObject` or `nil` result. + */ +- (BFTask *)loadPersistentObjectAsyncForKey:(NSString *)key; + +/*! + Saves a given object to a file with name. + + @param object Object to save. + @param key File name to use. + + @returns `BFTask` with `nil` result. + */ +- (BFTask *)persistObjectAsync:(PFObject *)object forKey:(NSString *)key; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.m new file mode 100644 index 0000000..38fdcd1 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.m @@ -0,0 +1,98 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectFilePersistenceController.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFFileManager.h" +#import "PFJSONSerialization.h" +#import "PFMacros.h" +#import "PFMultiProcessFileLockController.h" +#import "PFObjectFileCoder.h" +#import "PFObjectPrivate.h" + +@implementation PFObjectFilePersistenceController + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithDataSource:(id)dataSource { + self = [super init]; + if (!self) return nil; + + _dataSource = dataSource; + + return self; +} + ++ (instancetype)controllerWithDataSource:(id)dataSource { + return [[self alloc] initWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - Objects +///-------------------------------------- + +- (BFTask *)loadPersistentObjectAsyncForKey:(NSString *)key { + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + + NSString *path = [self.dataSource.fileManager parseDataItemPathForPathComponent:key]; + [[PFMultiProcessFileLockController sharedController] beginLockedContentAccessForFileAtPath:path]; + if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { + [[PFMultiProcessFileLockController sharedController] endLockedContentAccessForFileAtPath:path]; + return nil; + } + + NSError *error = nil; + NSData *jsonData = [NSData dataWithContentsOfFile:path + options:NSDataReadingMappedIfSafe + error:&error]; + [[PFMultiProcessFileLockController sharedController] endLockedContentAccessForFileAtPath:path]; + + if (error) { + return [BFTask taskWithError:error]; + } + return jsonData; + }] continueWithSuccessBlock:^id(BFTask *task) { + NSData *jsonData = task.result; + if (jsonData) { + PFObject *object = [PFObjectFileCoder objectFromData:jsonData usingDecoder:[PFDecoder objectDecoder]]; + return object; + } + + return nil; + }]; +} + +- (BFTask *)persistObjectAsync:(PFObject *)object forKey:(NSString *)key { + @weakify(self); + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + + NSData *data = [PFObjectFileCoder dataFromObject:object usingEncoder:[PFPointerObjectEncoder objectEncoder]]; + + NSString *filePath = [self.dataSource.fileManager parseDataItemPathForPathComponent:key]; + [[PFMultiProcessFileLockController sharedController] beginLockedContentAccessForFileAtPath:filePath]; + + return [[PFFileManager writeDataAsync:data toFile:filePath] continueWithBlock:^id(BFTask *task) { + [[PFMultiProcessFileLockController sharedController] endLockedContentAccessForFileAtPath:filePath]; + return nil; + }]; + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h new file mode 100644 index 0000000..541056b --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFDataProvider.h" + +/*! + A disk-based map of local ids to global Parse objectIds. Every entry in this + map has a retain count, and the entry will be removed from the map if the + retain count reaches 0. Every time a localId is written out to disk, its retain + count should be incremented. When the reference on disk is deleted, it should + be decremented. Some entries in this map may not have an object id yet. + This class is thread-safe. + */ +@interface PFObjectLocalIdStore : NSObject + +@property (nonatomic, weak, readonly) id dataSource; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; ++ (instancetype)storeWithDataSource:(id)dataSource; + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (NSString *)createLocalId; +- (void)retainLocalIdOnDisk:(NSString *)localId; +- (void)releaseLocalIdOnDisk:(NSString *)localId; + +- (void)setObjectId:(NSString *)objectId forLocalId:(NSString *)localId; +- (NSString *)objectIdForLocalId:(NSString *)localId; + +// For testing only. +- (BOOL)clear; +- (void)clearInMemoryCache; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.m new file mode 100644 index 0000000..7c88c3e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.m @@ -0,0 +1,291 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectLocalIdStore.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFFileManager.h" +#import "PFInternalUtils.h" +#import "PFJSONSerialization.h" +#import "PFLogging.h" +#import "Parse_Private.h" + +static NSString *const _PFObjectLocalIdStoreDiskFolderPath = @"LocalId"; + +///-------------------------------------- +#pragma mark - PFObjectLocalIdStoreMapEntry +///-------------------------------------- + +/*! + * Internal class representing all the information we know about a local id. + */ +@interface PFObjectLocalIdStoreMapEntry : NSObject + +@property (nonatomic, strong) NSString *objectId; +@property (atomic, assign) int referenceCount; + +- (instancetype)init NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithFile:(NSString *)filePath; + +@end + +@implementation PFObjectLocalIdStoreMapEntry + +- (instancetype)init { + return [super init]; +} + +- (instancetype)initWithFile:(NSString *)filePath { + self = [self init]; + if (!self) return nil; + + NSData *jsonData = [NSData dataWithContentsOfFile:filePath]; + NSDictionary *dictionary = [PFJSONSerialization JSONObjectFromData:jsonData]; + + _objectId = [dictionary[@"objectId"] copy]; + _referenceCount = [dictionary[@"referenceCount"] intValue]; + + return self; +} + +- (void)writeToFile:(NSString *)filePath { + NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; + dictionary[@"referenceCount"] = @(self.referenceCount); + if (self.objectId) { + dictionary[@"objectId"] = self.objectId; + } + + NSData *jsonData = [PFJSONSerialization dataFromJSONObject:dictionary]; + [[PFFileManager writeDataAsync:jsonData toFile:filePath] waitForResult:nil withMainThreadWarning:NO]; +} + +@end + +///-------------------------------------- +#pragma mark - PFObjectLocalIdStore +///-------------------------------------- + +@interface PFObjectLocalIdStore () { + NSString *_diskPath; + NSObject *_lock; + NSMutableDictionary *_inMemoryCache; +} + +@end + +@implementation PFObjectLocalIdStore + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +/*! + * Creates a new LocalIdManager with default options. + */ +- (instancetype)initWithDataSource:(id)dataSource { + self = [super init]; + if (!self) return nil; + + _dataSource = dataSource; + + _lock = [[NSObject alloc] init]; + _inMemoryCache = [NSMutableDictionary dictionary]; + + // Construct the path to the disk storage directory. + _diskPath = [[Parse _currentManager].fileManager parseDataItemPathForPathComponent:_PFObjectLocalIdStoreDiskFolderPath]; + + NSError *error = nil; + [[PFFileManager createDirectoryIfNeededAsyncAtPath:_diskPath] waitForResult:&error withMainThreadWarning:NO]; + if (error) { + PFLogError(PFLoggingTagCommon, @"Unable to create directories for local id storage with error: %@", error); + } + + return self; +} + ++ (instancetype)storeWithDataSource:(id)dataSource { + return [[self alloc] initWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +/*! + * Returns Yes if localId has the right basic format for a local id. + */ ++ (BOOL)isLocalId:(NSString *)localId { + if ([localId length] != 22U) { + return NO; + } + if (![localId hasPrefix:@"local_"]) { + return NO; + } + for (int i = 6; i < [localId length]; ++i) { + if (!ishexnumber([localId characterAtIndex:i])) { + return NO; + } + } + return YES; +} + +/*! + * Grabs one entry in the local id map off the disk. + */ +- (PFObjectLocalIdStoreMapEntry *)getMapEntry:(NSString *)localId { + PFConsistencyAssert([[self class] isLocalId:localId], @"Tried to get invalid local id: \"%@\".", localId); + + PFObjectLocalIdStoreMapEntry *entry = nil; + + NSString *file = [_diskPath stringByAppendingPathComponent:localId]; + if (![[NSFileManager defaultManager] isReadableFileAtPath:file]) { + entry = [[PFObjectLocalIdStoreMapEntry alloc] init]; + } else { + entry = [[PFObjectLocalIdStoreMapEntry alloc] initWithFile:file]; + } + + // If there's an objectId in memory, make sure it matches the one in the + // file. This is in case the id was retained on disk *after* it was resolved. + if (!entry.objectId) { + NSString *objectId = [_inMemoryCache objectForKey:localId]; + if (objectId) { + entry.objectId = objectId; + if (entry.referenceCount > 0) { + [self putMapEntry:entry forLocalId:localId]; + } + } + } + + return entry; +} + +/*! + * Writes one entry to the local id map on disk. + */ +- (void)putMapEntry:(PFObjectLocalIdStoreMapEntry *)entry forLocalId:(NSString *)localId { + PFConsistencyAssert([[self class] isLocalId:localId], @"Tried to get invalid local id: \"%@\".", localId); + + NSString *file = [_diskPath stringByAppendingPathComponent:localId]; + [entry writeToFile:file]; +} + +/*! + * Removes an entry from the local id map on disk. + */ +- (void)removeMapEntry:(NSString *)localId { + PFConsistencyAssert([[self class] isLocalId:localId], @"Tried to get invalid local id: \"%@\".", localId); + + NSString *file = [_diskPath stringByAppendingPathComponent:localId]; + [[NSFileManager defaultManager] removeItemAtPath:file error:nil]; +} + +/*! + * Creates a new local id in the map. + */ +- (NSString *)createLocalId { + @synchronized (_lock) { + // Generate a new random string of upper and lower case letters. + + // Start by generating a number. It will be the localId as a base-52 number. + // It has to be a uint64_t because log256(52^10) ~= 7.13 bytes. + uint64_t localIdNumber = (((uint64_t)arc4random()) << 32) | ((uint64_t)arc4random()); + NSString *localId = [NSString stringWithFormat:@"local_%016llx", localIdNumber]; + + PFConsistencyAssert([[self class] isLocalId:localId], @"Generated an invalid local id: \"%@\".", localId); + + return localId; + } +} + +/*! + * Increments the retain count of a local id on disk. + */ +- (void)retainLocalIdOnDisk:(NSString *)localId { + @synchronized (_lock) { + PFObjectLocalIdStoreMapEntry *entry = [self getMapEntry:localId]; + entry.referenceCount++; + [self putMapEntry:entry forLocalId:localId]; + } +} + +/*! + * Decrements the retain count of a local id on disk. + * If the retain count hits zero, the id is forgotten forever. + */ +- (void)releaseLocalIdOnDisk:(NSString *)localId { + @synchronized (_lock) { + PFObjectLocalIdStoreMapEntry *entry = [self getMapEntry:localId]; + if (--entry.referenceCount > 0) { + [self putMapEntry:entry forLocalId:localId]; + } else { + [self removeMapEntry:localId]; + } + } +} + +/*! + * Sets the objectId associated with a given local id. + */ +- (void)setObjectId:(NSString *)objectId forLocalId:(NSString *)localId { + @synchronized (_lock) { + PFObjectLocalIdStoreMapEntry *entry = [self getMapEntry:localId]; + if (entry.referenceCount > 0) { + entry.objectId = objectId; + [self putMapEntry:entry forLocalId:localId]; + } + [_inMemoryCache setObject:objectId forKey:localId]; + } +} + +/*! + * Returns the objectId associated with a given local id. + * Returns nil if no objectId is yet known for the lcoal id. + */ +- (NSString *)objectIdForLocalId:(NSString *)localId { + @synchronized (_lock) { + NSString *objectId = [_inMemoryCache objectForKey:localId]; + if (objectId) { + return objectId; + } + + PFObjectLocalIdStoreMapEntry *entry = [self getMapEntry:localId]; + return entry.objectId; + } +} + +/*! + * Removes all local ids from the disk and memory caches. + */ +- (BOOL)clear { + @synchronized (_lock) { + [self clearInMemoryCache]; + + BOOL empty = ([[[[NSFileManager defaultManager] enumeratorAtPath:_diskPath] allObjects] count] == 0); + + [[NSFileManager defaultManager] removeItemAtPath:_diskPath error:nil]; + + [[NSFileManager defaultManager] createDirectoryAtPath:_diskPath + withIntermediateDirectories:YES + attributes:nil + error:nil]; + return !empty; + } +} + +/*! + * Removes all local ids from the memory cache. + */ +- (void)clearInMemoryCache { + @synchronized (_lock) { + [_inMemoryCache removeAllObjects]; + } +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/OperationSet/PFOperationSet.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/OperationSet/PFOperationSet.h new file mode 100644 index 0000000..5456ffa --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/OperationSet/PFOperationSet.h @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@class PFDecoder; +@class PFEncoder; +@class PFFieldOperation; + +/*! + A set of field-level operations that can be performed on an object, corresponding to one + command. For example, all the data for a single call to save() will be packaged here. It is + assumed that the PFObject that owns the operations handles thread-safety. + */ +@interface PFOperationSet : NSObject + +/*! + Returns true if this set corresponds to a call to saveEventually. + */ +@property (nonatomic, assign, getter=isSaveEventually) BOOL saveEventually; + +/*! + A unique id for this operation set. + */ +@property (nonatomic, copy, readonly) NSString *uuid; + +@property (nonatomic, copy) NSDate *updatedAt; + +/*! + Merges the changes from the given operation set into this one. Most typically, this is what + happens when a save fails and changes need to be rolled into the next save. + */ +- (void)mergeOperationSet:(PFOperationSet *)other; + +/*! + Converts this operation set into its REST format for serializing to the pinning store + */ +- (NSDictionary *)RESTDictionaryUsingObjectEncoder:(PFEncoder *)objectEncoder + operationSetUUIDs:(NSArray **)operationSetUUIDs; + +/*! + The inverse of RESTDictionaryUsingObjectEncoder. + Creates a new OperationSet from the given NSDictionary + */ ++ (PFOperationSet *)operationSetFromRESTDictionary:(NSDictionary *)data + usingDecoder:(PFDecoder *)decoder; + +///-------------------------------------- +/// @name Accessors +///-------------------------------------- + +- (id)objectForKey:(id)aKey; +- (id)objectForKeyedSubscript:(id)aKey; +- (NSUInteger)count; +- (NSEnumerator *)keyEnumerator; + +- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(NSString *key, PFFieldOperation *operation, BOOL *stop))block; + +- (void)setObject:(id)anObject forKey:(id)aKey; +- (void)setObject:(id)anObject forKeyedSubscript:(id)aKey; +- (void)removeObjectForKey:(id)aKey; +- (void)removeAllObjects; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/OperationSet/PFOperationSet.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/OperationSet/PFOperationSet.m new file mode 100644 index 0000000..f1df813 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/OperationSet/PFOperationSet.m @@ -0,0 +1,196 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFOperationSet.h" + +#import "PFACL.h" +#import "PFACLPrivate.h" +#import "PFDecoder.h" +#import "PFEncoder.h" +#import "PFFieldOperation.h" +#import "PFInternalUtils.h" + +NSString *const PFOperationSetKeyUUID = @"__uuid"; +NSString *const PFOperationSetKeyIsSaveEventually = @"__isSaveEventually"; +NSString *const PFOperationSetKeyUpdatedAt = @"__updatedAt"; +NSString *const PFOperationSetKeyACL = @"ACL"; + +@interface PFOperationSet() + +@property (nonatomic, strong) NSMutableDictionary *dictionary; + +@end + +@implementation PFOperationSet + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + return [self initWithUUID:[[NSUUID UUID] UUIDString]]; +} + +- (instancetype)initWithUUID:(NSString *)uuid { + self = [super init]; + if (!self) return nil; + + _dictionary = [NSMutableDictionary dictionary]; + _uuid = [uuid copy]; + + _updatedAt = [NSDate date]; + + return self; +} + +///-------------------------------------- +#pragma mark - Merge +///-------------------------------------- + +- (void)mergeOperationSet:(PFOperationSet *)other { + [other.dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + PFFieldOperation *localOperation = self.dictionary[key]; + PFFieldOperation *remoteOperation = other.dictionary[key]; + if (localOperation != nil) { + localOperation = [localOperation mergeWithPrevious:remoteOperation]; + self.dictionary[key] = localOperation; + } else { + self.dictionary[key] = remoteOperation; + } + }]; + self.updatedAt = [NSDate date]; +} + +///-------------------------------------- +#pragma mark - Encoding +///-------------------------------------- + +- (NSDictionary *)RESTDictionaryUsingObjectEncoder:(PFEncoder *)objectEncoder + operationSetUUIDs:(NSArray **)operationSetUUIDs { + NSMutableDictionary *operationSetResult = [[NSMutableDictionary alloc] init]; + [self.dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + operationSetResult[key] = [obj encodeWithObjectEncoder:objectEncoder]; + }]; + + operationSetResult[PFOperationSetKeyUUID] = self.uuid; + operationSetResult[PFOperationSetKeyUpdatedAt] = [objectEncoder encodeObject:self.updatedAt]; + + if (self.saveEventually) { + operationSetResult[PFOperationSetKeyIsSaveEventually] = @YES; + } + *operationSetUUIDs = @[ self.uuid ]; + return operationSetResult; +} + ++ (PFOperationSet *)operationSetFromRESTDictionary:(NSDictionary *)data + usingDecoder:(PFDecoder *)decoder { + NSMutableDictionary *mutableData = [data mutableCopy]; + NSString *inputUUID = mutableData[PFOperationSetKeyUUID]; + [mutableData removeObjectForKey:PFOperationSetKeyUUID]; + PFOperationSet *operationSet = nil; + if (inputUUID == nil) { + operationSet = [[PFOperationSet alloc] init]; + } else { + operationSet = [[PFOperationSet alloc] initWithUUID:inputUUID]; + } + + NSNumber *saveEventuallyFlag = mutableData[PFOperationSetKeyIsSaveEventually]; + if (saveEventuallyFlag) { + operationSet.saveEventually = [saveEventuallyFlag boolValue]; + [mutableData removeObjectForKey:PFOperationSetKeyIsSaveEventually]; + } + + NSDate *updatedAt = mutableData[PFOperationSetKeyUpdatedAt]; + [mutableData removeObjectForKey:PFOperationSetKeyUpdatedAt]; + + [mutableData enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + id value = [decoder decodeObject:obj]; + PFFieldOperation *fieldOperation = nil; + if ([key isEqualToString:PFOperationSetKeyACL]) { + // TODO (hallucinogen): where to use the decoder? + value = [PFACL ACLWithDictionary:obj]; + } + if ([value isKindOfClass:[PFFieldOperation class]]) { + fieldOperation = value; + } else { + fieldOperation = [PFSetOperation setWithValue:value]; + } + operationSet[key] = fieldOperation; + }]; + operationSet.updatedAt = updatedAt ? [decoder decodeObject:updatedAt] : nil; + + return operationSet; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (id)objectForKey:(id)aKey { + return self.dictionary[aKey]; +} + +- (id)objectForKeyedSubscript:(id)aKey { + return [self objectForKey:aKey]; +} + +- (NSUInteger)count { + return [self.dictionary count]; +} + +- (NSEnumerator *)keyEnumerator { + return [self.dictionary keyEnumerator]; +} + +- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(NSString *key, PFFieldOperation *operation, BOOL *stop))block { + [self.dictionary enumerateKeysAndObjectsUsingBlock:block]; +} + +- (void)setObject:(id)anObject forKey:(id)aKey { + self.dictionary[aKey] = anObject; + self.updatedAt = [NSDate date]; +} + +- (void)setObject:(id)anObject forKeyedSubscript:(id)key { + [self setObject:anObject forKey:key]; +} + +- (void)removeObjectForKey:(id)key { + [self.dictionary removeObjectForKey:key]; + self.updatedAt = [NSDate date]; +} + +- (void)removeAllObjects { + [self.dictionary removeAllObjects]; + self.updatedAt = [NSDate date]; +} + +///-------------------------------------- +#pragma mark - NSFastEnumeration +///-------------------------------------- + +- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state + objects:(id __unsafe_unretained [])buffer + count:(NSUInteger)len { + return [self.dictionary countByEnumeratingWithState:state objects:buffer count:len]; +} + +///-------------------------------------- +#pragma mark - NSCopying +///-------------------------------------- + +- (instancetype)copyWithZone:(NSZone *)zone { + PFOperationSet *operationSet = [[[self class] allocWithZone:zone] initWithUUID:self.uuid]; + operationSet.dictionary = [self.dictionary mutableCopy]; + operationSet.updatedAt = [self.updatedAt copy]; + operationSet.saveEventually = self.saveEventually; + return operationSet; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/PFObjectPrivate.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/PFObjectPrivate.h new file mode 100644 index 0000000..949e589 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/PFObjectPrivate.h @@ -0,0 +1,306 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import + +#import "PFDecoder.h" +#import "PFEncoder.h" +#import "PFMulticastDelegate.h" +#import "PFObjectControlling.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFCurrentUserController; +@class PFFieldOperation; +@class PFJSONCacheItem; +@class PFMultiCommand; +@class PFObjectEstimatedData; +@class PFObjectFileCodingLogic; +@class PFObjectState; +@class PFObjectSubclassingController; +@class PFOperationSet; +@class PFPinningObjectStore; +@class PFRESTCommand; +@class PFTaskQueue; + +///-------------------------------------- +#pragma mark - PFObjectPrivateSubclass +///-------------------------------------- + +@protocol PFObjectPrivateSubclass + +@required + +///-------------------------------------- +/// @name State +///-------------------------------------- + ++ (PFObjectState *)_newObjectStateWithParseClassName:(NSString *)className + objectId:(NSString *)objectId + isComplete:(BOOL)complete; + +@optional + +///-------------------------------------- +/// @name Before Save +///-------------------------------------- + +/*! + Called before an object is going to be saved. Called in a context of object lock. + Subclasses can override this method to do any custom updates before an object gets saved. + */ +- (void)_objectWillSave; + +@end + +///-------------------------------------- +#pragma mark - PFObject +///-------------------------------------- + +// Extension for property methods. +@interface PFObject () + +/*! + @returns Current object state. + */ +@property (nonatomic, copy) PFObjectState *_state; +@property (nonatomic, copy) NSMutableSet *_availableKeys; + +- (instancetype)initWithObjectState:(PFObjectState *)state; ++ (instancetype)objectWithClassName:(NSString *)className + objectId:(NSString *)objectid + completeData:(BOOL)completeData; ++ (instancetype)objectWithoutDataWithClassName:(NSString *)className localId:(NSString *)localId; + +- (PFTaskQueue *)taskQueue; + +- (PFObjectEstimatedData *)_estimatedData; + +#if PARSE_OSX_ONLY +// Not available publicly, but available for testing + +- (instancetype)refresh; +- (instancetype)refresh:(NSError **)error; +- (void)refreshInBackgroundWithBlock:(PFObjectResultBlock)block; +- (void)refreshInBackgroundWithTarget:(id)target selector:(SEL)selector; + +#endif + +///-------------------------------------- +/// @name Validation +///-------------------------------------- + +- (BFTask PF_GENERIC(PFVoid) *)_validateFetchAsync NS_REQUIRES_SUPER; +- (BFTask PF_GENERIC(PFVoid) *)_validateDeleteAsync NS_REQUIRES_SUPER; + +/*! + Validate the save eventually operation with the current state. + The result of this task is ignored. The error/cancellation/exception will prevent `saveEventually`. + + @returns Task that encapsulates the validation. + */ +- (BFTask PF_GENERIC(PFVoid) *)_validateSaveEventuallyAsync NS_REQUIRES_SUPER; + +///-------------------------------------- +/// @name Pin +///-------------------------------------- +- (BFTask *)_pinInBackgroundWithName:(NSString *)name includeChildren:(BOOL)includeChildren; ++ (BFTask *)_pinAllInBackground:(NSArray *)objects withName:(NSString *)name includeChildren:(BOOL)includeChildren; + ++ (PFPinningObjectStore *)pinningObjectStore; ++ (id)objectController; ++ (PFObjectFileCodingLogic *)objectFileCodingLogic; ++ (PFCurrentUserController *)currentUserController; + +///-------------------------------------- +#pragma mark - Subclassing +///-------------------------------------- + ++ (PFObjectSubclassingController *)subclassingController; + +@end + +@interface PFObject (Private) + +/*! + Returns the object that should be used to synchronize all internal data access. + */ +- (NSObject *)lock; + +/*! + Blocks until all outstanding operations have completed. + */ +- (void)waitUntilFinished; + +- (NSDictionary *)_collectFetchedObjects; + +///-------------------------------------- +#pragma mark - Static methods for Subclassing +///-------------------------------------- + +/*! + Unregisters a class registered using registerSubclass: + If we ever expose thsi method publicly, we must change the underlying implementation + to have stack behavior. Currently unregistering a custom class for a built-in will + leave the built-in unregistered as well. + @param subclass the subclass + */ ++ (void)unregisterSubclass:(Class)subclass; + +///-------------------------------------- +#pragma mark - Children helpers +///-------------------------------------- +- (BFTask *)_saveChildrenInBackgroundWithCurrentUser:(PFUser *)currentUser sessionToken:(NSString *)sessionToken; + +///-------------------------------------- +#pragma mark - Dirtiness helpers +///-------------------------------------- +- (BOOL)isDirty:(BOOL)considerChildren; +- (void)_setDirty:(BOOL)dirty; + +- (void)performOperation:(PFFieldOperation *)operation forKey:(NSString *)key; +- (void)setHasBeenFetched:(BOOL)fetched; +- (void)_setDeleted:(BOOL)deleted; + +- (BOOL)isDataAvailableForKey:(NSString *)key; + +- (BOOL)_hasChanges; +- (BOOL)_hasOutstandingOperations; +- (PFOperationSet *)unsavedChanges; + +///-------------------------------------- +#pragma mark - Validations +///-------------------------------------- +- (void)_checkSaveParametersWithCurrentUser:(PFUser *)currentUser; +/*! + Checks if Parse class name could be used to initialize a given instance of PFObject or it's subclass. + */ ++ (void)_assertValidInstanceClassName:(NSString *)className; + +///-------------------------------------- +#pragma mark - Serialization helpers +///-------------------------------------- +- (NSString *)getOrCreateLocalId; +- (void)resolveLocalId; + ++ (id)_objectFromDictionary:(NSDictionary *)dictionary + defaultClassName:(NSString *)defaultClassName + completeData:(BOOL)completeData; + ++ (id)_objectFromDictionary:(NSDictionary *)dictionary + defaultClassName:(NSString *)defaultClassName + selectedKeys:(NSArray *)selectedKeys; + ++ (id)_objectFromDictionary:(NSDictionary *)dictionary + defaultClassName:(NSString *)defaultClassName + completeData:(BOOL)completeData + decoder:(PFDecoder *)decoder; ++ (BFTask *)_migrateObjectInBackgroundFromFile:(NSString *)fileName toPin:(NSString *)pinName; ++ (BFTask *)_migrateObjectInBackgroundFromFile:(NSString *)fileName + toPin:(NSString *)pinName + usingMigrationBlock:(BFContinuationBlock)block; + +- (NSMutableDictionary *)_convertToDictionaryForSaving:(PFOperationSet *)changes + withObjectEncoder:(PFEncoder *)encoder; + +///-------------------------------------- +#pragma mark - REST operations +///-------------------------------------- +- (NSDictionary *)RESTDictionaryWithObjectEncoder:(PFEncoder *)objectEncoder + operationSetUUIDs:(NSArray **)operationSetUUIDs; +- (NSDictionary *)RESTDictionaryWithObjectEncoder:(PFEncoder *)objectEncoder + operationSetUUIDs:(NSArray **)operationSetUUIDs + state:(PFObjectState *)state + operationSetQueue:(NSArray *)operationSetQueue; + +- (void)mergeFromRESTDictionary:(NSDictionary *)object + withDecoder:(PFDecoder *)decoder; + +///-------------------------------------- +#pragma mark - Data helpers +///-------------------------------------- +- (void)checkForChangesToMutableContainers; +- (void)rebuildEstimatedData; + +///-------------------------------------- +#pragma mark - Command handlers +///-------------------------------------- +- (PFObject *)mergeFromObject:(PFObject *)other; + +- (void)_mergeAfterSaveWithResult:(NSDictionary *)result decoder:(PFDecoder *)decoder; +- (void)_mergeAfterFetchWithResult:(NSDictionary *)result decoder:(PFDecoder *)decoder completeData:(BOOL)completeData; +- (void)_mergeFromServerWithResult:(NSDictionary *)result decoder:(PFDecoder *)decoder completeData:(BOOL)completeData; + +- (BFTask *)handleSaveResultAsync:(NSDictionary *)result; + +///-------------------------------------- +#pragma mark - Asynchronous operations +///-------------------------------------- +- (void)startSave; +- (BFTask *)_enqueueSaveEventuallyWithChildren:(BOOL)saveChildren; +- (BFTask *)saveAsync:(BFTask *)toAwait; +- (BFTask *)fetchAsync:(BFTask *)toAwait; +- (BFTask *)deleteAsync:(BFTask *)toAwait; + +///-------------------------------------- +#pragma mark - Command constructors +///-------------------------------------- +- (PFRESTCommand *)_constructSaveCommandForChanges:(PFOperationSet *)changes + sessionToken:(NSString *)sessionToken + objectEncoder:(PFEncoder *)encoder; +- (PFRESTCommand *)_currentDeleteCommandWithSessionToken:(NSString *)sessionToken; + +///-------------------------------------- +#pragma mark - Misc helpers +///-------------------------------------- +- (NSString *)displayClassName; +- (NSString *)displayObjectId; + +- (void)registerSaveListener:(void (^)(id result, NSError *error))callback; +- (void)unregisterSaveListener:(void (^)(id result, NSError *error))callback; +- (PFACL *)ACLWithoutCopying; + +///-------------------------------------- +#pragma mark - Get and set +///-------------------------------------- + +- (void)_setObject:(id)object + forKey:(NSString *)key + onlyIfDifferent:(BOOL)onlyIfDifferent; + +///-------------------------------------- +#pragma mark - Subclass Helpers +///-------------------------------------- + +/*! + This method is called by -[PFObject init]; changes made to the object during this + method will not mark the object as dirty. PFObject uses this method to to apply the + default ACL; subclasses which override this method shold be sure to call the super + implementation if they want to honor the default ACL. + */ +- (void)setDefaultValues; + +/*! + This method allows subclasses to determine whether a default ACL should be applied + to new instances. + */ +- (BOOL)needsDefaultACL; + +@end + +@interface PFObject () { + PFMulticastDelegate *saveDelegate; +} + +@property (nonatomic, strong) PFMulticastDelegate *saveDelegate; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/PinningStore/PFPinningObjectStore.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/PinningStore/PFPinningObjectStore.h new file mode 100644 index 0000000..66950c7 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/PinningStore/PFPinningObjectStore.h @@ -0,0 +1,84 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFDataProvider.h" + +NS_ASSUME_NONNULL_BEGIN + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFPin; + +@interface PFPinningObjectStore : NSObject + +@property (nonatomic, weak, readonly) id dataSource; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; ++ (instancetype)storeWithDataSource:(id)dataSource; + +///-------------------------------------- +/// @name Pin +///-------------------------------------- + +/*! + Gets pin with name equals to given name. + + @param name Pin Name. + + @returns `BFTask` with `PFPin` result if pinning succeeds. + */ +- (BFTask *)fetchPinAsyncWithName:(NSString *)name; + +/*! + Pins given objects to the pin. Creates new pin if the pin with such name is not found. + + @param objects Array of `PFObject`s to pin. + @param name Pin Name. + @param includeChildren Whether children of `objects` should be pinned as well. + + @returns `BFTask` with `@YES` result. + */ +- (BFTask *)pinObjectsAsync:(nullable NSArray *)objects + withPinName:(NSString *)name + includeChildren:(BOOL)includeChildren; + +///-------------------------------------- +/// @name Unpin +///-------------------------------------- + +/*! + Unpins given array of objects from the pin. + + @param objects Objects to unpin. + @param name Pin name. + + @returns `BFTask` with `@YES` result. + */ +- (BFTask *)unpinObjectsAsync:(nullable NSArray *)objects withPinName:(NSString *)name; + +/*! + Unpins all objects from the pin. + + @param name Pin name. + + @returns `BFTask` with `YES` result. + */ +- (BFTask *)unpinAllObjectsAsyncWithPinName:(NSString *)name; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/PinningStore/PFPinningObjectStore.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/PinningStore/PFPinningObjectStore.m new file mode 100644 index 0000000..b731df1 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/PinningStore/PFPinningObjectStore.m @@ -0,0 +1,163 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPinningObjectStore.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFMacros.h" +#import "PFOfflineStore.h" +#import "PFPin.h" +#import "PFQueryPrivate.h" + +@interface PFPinningObjectStore () { + NSMapTable *_pinCacheTable; + dispatch_queue_t _pinCacheAccessQueue; + BFExecutor *_pinCacheAccessExecutor; +} + +@end + +@implementation PFPinningObjectStore + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithDataSource:(id)dataSource { + self = [super init]; + if (!self) return nil; + + _pinCacheTable = [NSMapTable strongToWeakObjectsMapTable]; + _pinCacheAccessQueue = dispatch_queue_create("com.parse.object.pin.cache", DISPATCH_QUEUE_SERIAL); + _pinCacheAccessExecutor = [BFExecutor executorWithDispatchQueue:_pinCacheAccessQueue]; + + _dataSource = dataSource; + + return self; +} + ++ (instancetype)storeWithDataSource:(id)dataSource { + return [[self alloc] initWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - Pin +///-------------------------------------- + +- (BFTask *)fetchPinAsyncWithName:(NSString *)name { + @weakify(self); + return [BFTask taskFromExecutor:_pinCacheAccessExecutor withBlock:^id{ + BFTask *cachedTask = [_pinCacheTable objectForKey:name] ?: [BFTask taskWithResult:nil]; + // We need to call directly to OfflineStore since we don't want/need a user to query for ParsePins + cachedTask = [cachedTask continueWithBlock:^id(BFTask *task) { + @strongify(self); + PFQuery *query = [[PFPin query] whereKey:PFPinKeyName equalTo:name]; + PFOfflineStore *store = self.dataSource.offlineStore; + return [[store findAsyncForQueryState:query.state + user:nil + pin:nil] continueWithSuccessBlock:^id(BFTask *task) { + NSArray *result = task.result; + // TODO (hallucinogen): What do we do if there are more than 1 result? + PFPin *pin = (result.count != 0 ? result.firstObject : [PFPin pinWithName:name]); + return pin; + }]; + }]; + // Put the task back into the cache. + [_pinCacheTable setObject:cachedTask forKey:name]; + return cachedTask; + }]; +} + +- (BFTask *)pinObjectsAsync:(NSArray *)objects withPinName:(NSString *)name includeChildren:(BOOL)includeChildren { + if (objects.count == 0) { + return [BFTask taskWithResult:@YES]; + } + + @weakify(self); + return [[[self fetchPinAsyncWithName:name] continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + PFPin *pin = task.result; + PFOfflineStore *store = self.dataSource.offlineStore; + //TODO (hallucinogen): some stuff @grantland mentioned can't be done maybe needs to be done here + //TODO (grantland): change to use relations. currently the related PO are only getting saved + //TODO (grantland): can't add and then remove + + // Hack to store collection in a pin + NSMutableArray *modified = pin.objects; + if (modified == nil) { + modified = [objects mutableCopy]; + } else { + for (PFObject *object in objects) { + if (![modified containsObject:object]) { + [modified addObject:object]; + } + } + } + pin.objects = modified; + + BFTask *saveTask = nil; + if (includeChildren) { + saveTask = [store saveObjectLocallyAsync:pin includeChildren:YES]; + } else { + saveTask = [store saveObjectLocallyAsync:pin withChildren:pin.objects]; + } + return saveTask; + }] continueWithSuccessResult:@YES]; +} + +///-------------------------------------- +#pragma mark - Unpin +///-------------------------------------- + +- (BFTask *)unpinObjectsAsync:(NSArray *)objects withPinName:(NSString *)name { + if (objects.count == 0) { + return [BFTask taskWithResult:@YES]; + } + + @weakify(self); + return [[[self fetchPinAsyncWithName:name] continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + PFPin *pin = task.result; + NSMutableArray *modified = pin.objects; + if (!modified) { + // Nothing to unpin + return task; + } + + //TODO (hallucinogen): some stuff @grantland mentioned can't be done maybe needs to be done here + //TODO (grantland): change to use relations. currently the related PO are only getting saved + //TODO (grantland): can't add and then remove + + PFOfflineStore *store = self.dataSource.offlineStore; + + [modified removeObjectsInArray:objects]; + if (modified.count == 0) { + return [store unpinObjectAsync:pin]; + } + pin.objects = modified; + + return [store saveObjectLocallyAsync:pin includeChildren:YES]; + }] continueWithSuccessResult:@YES]; +} + +- (BFTask *)unpinAllObjectsAsyncWithPinName:(NSString *)name { + @weakify(self); + return [[self fetchPinAsyncWithName:name] continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + PFPin *pin = task.result; + return [[self.dataSource.offlineStore unpinObjectAsync:pin] continueWithSuccessResult:@YES]; + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFMutableObjectState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFMutableObjectState.h new file mode 100644 index 0000000..70cae09 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFMutableObjectState.h @@ -0,0 +1,45 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectState.h" + +@class PFOperationSet; + +@interface PFMutableObjectState : PFObjectState + +@property (nonatomic, copy, readwrite) NSString *parseClassName; +@property (nonatomic, copy, readwrite) NSString *objectId; + +@property (nonatomic, strong, readwrite) NSDate *createdAt; +@property (nonatomic, strong, readwrite) NSDate *updatedAt; + +@property (nonatomic, copy, readwrite) NSDictionary *serverData; + +@property (nonatomic, assign, readwrite, getter=isComplete) BOOL complete; +@property (nonatomic, assign, readwrite, getter=isDeleted) BOOL deleted; + +///-------------------------------------- +/// @name Accessors +///-------------------------------------- + +- (void)setServerDataObject:(id)object forKey:(NSString *)key; +- (void)removeServerDataObjectForKey:(NSString *)key; +- (void)removeServerDataObjectsForKeys:(NSArray *)keys; + +- (void)setCreatedAtFromString:(NSString *)string; +- (void)setUpdatedAtFromString:(NSString *)string; + +///-------------------------------------- +/// @name Apply +///-------------------------------------- + +- (void)applyState:(PFObjectState *)state; +- (void)applyOperationSet:(PFOperationSet *)operationSet; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFMutableObjectState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFMutableObjectState.m new file mode 100644 index 0000000..edfd652 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFMutableObjectState.m @@ -0,0 +1,61 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFMutableObjectState.h" + +#import "PFDateFormatter.h" +#import "PFObjectState_Private.h" + +@implementation PFMutableObjectState + +@dynamic parseClassName; +@dynamic objectId; +@dynamic createdAt; +@dynamic updatedAt; +@dynamic serverData; +@dynamic complete; +@dynamic deleted; + +///-------------------------------------- +#pragma mark - PFMutableObjectState +///-------------------------------------- + +#pragma mark Accessors + +- (void)setServerDataObject:(id)object forKey:(NSString *)key { + [super setServerDataObject:object forKey:key]; +} + +- (void)removeServerDataObjectForKey:(NSString *)key { + [super removeServerDataObjectForKey:key]; +} + +- (void)removeServerDataObjectsForKeys:(NSArray *)keys { + [super removeServerDataObjectsForKeys:keys]; +} + +- (void)setCreatedAtFromString:(NSString *)string { + [super setCreatedAtFromString:string]; +} + +- (void)setUpdatedAtFromString:(NSString *)string { + [super setUpdatedAtFromString:string]; +} + +#pragma mark Apply + +- (void)applyState:(PFObjectState *)state { + [super applyState:state]; +} + +- (void)applyOperationSet:(PFOperationSet *)operationSet { + [super applyOperationSet:operationSet]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFObjectState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFObjectState.h new file mode 100644 index 0000000..a7d9744 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFObjectState.h @@ -0,0 +1,60 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@class PFEncoder; + +@interface PFObjectState : NSObject + +@property (nonatomic, copy, readonly) NSString *parseClassName; +@property (nonatomic, copy, readonly) NSString *objectId; + +@property (nonatomic, strong, readonly) NSDate *createdAt; +@property (nonatomic, strong, readonly) NSDate *updatedAt; + +@property (nonatomic, copy, readonly) NSDictionary *serverData; + +@property (nonatomic, assign, readonly, getter=isComplete) BOOL complete; +@property (nonatomic, assign, readonly, getter=isDeleted) BOOL deleted; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_DESIGNATED_INITIALIZER; + +- (instancetype)initWithState:(PFObjectState *)state NS_REQUIRES_SUPER; +- (instancetype)initWithParseClassName:(NSString *)parseClassName; +- (instancetype)initWithParseClassName:(NSString *)parseClassName + objectId:(NSString *)objectId + isComplete:(BOOL)complete; + ++ (instancetype)stateWithState:(PFObjectState *)state NS_REQUIRES_SUPER; ++ (instancetype)stateWithParseClassName:(NSString *)parseClassName; ++ (instancetype)stateWithParseClassName:(NSString *)parseClassName + objectId:(NSString *)objectId + isComplete:(BOOL)complete; + +///-------------------------------------- +/// @name Coding +///-------------------------------------- + +/*! + Encodes all fields in `serverData`, `objectId`, `createdAt` and `updatedAt` into objects suitable for JSON/Persistence. + + @note `parseClassName` isn't automatically added to the dictionary. + + @param objectEncoder Encoder to use to encode custom objects. + + @returns `NSDictionary` instance representing object state. + */ +- (NSDictionary *)dictionaryRepresentationWithObjectEncoder:(PFEncoder *)objectEncoder NS_REQUIRES_SUPER; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFObjectState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFObjectState.m new file mode 100644 index 0000000..fec73f4 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFObjectState.m @@ -0,0 +1,179 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectState.h" +#import "PFObjectState_Private.h" + +#import "PFDateFormatter.h" +#import "PFEncoder.h" +#import "PFMutableObjectState.h" +#import "PFObjectConstants.h" +#import "PFObjectUtilities.h" + +@implementation PFObjectState + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _serverData = [NSMutableDictionary dictionary]; + + return [super init]; +} + +- (instancetype)initWithState:(PFObjectState *)state { + self = [self init]; + if (!self) return nil; + + _parseClassName = [state.parseClassName copy]; + _objectId = [state.objectId copy]; + + _updatedAt = state.updatedAt; + _createdAt = state.createdAt; + + _serverData = [state.serverData mutableCopy] ?: [NSMutableDictionary dictionary]; + + _complete = state.complete; + _deleted = state.deleted; + + return self; +} + +- (instancetype)initWithParseClassName:(NSString *)parseClassName { + return [self initWithParseClassName:parseClassName objectId:nil isComplete:NO]; +} + +- (instancetype)initWithParseClassName:(NSString *)parseClassName + objectId:(NSString *)objectId + isComplete:(BOOL)complete { + self = [self init]; + if (!self) return nil; + + _parseClassName = [parseClassName copy]; + _objectId = [objectId copy]; + _complete = complete; + + return self; +} + ++ (instancetype)stateWithState:(PFObjectState *)state { + return [[self alloc] initWithState:state]; +} + ++ (instancetype)stateWithParseClassName:(NSString *)parseClassName { + return [[self alloc] initWithParseClassName:parseClassName]; +} + ++ (instancetype)stateWithParseClassName:(NSString *)parseClassName + objectId:(NSString *)objectId + isComplete:(BOOL)complete { + return [[self alloc] initWithParseClassName:parseClassName + objectId:objectId + isComplete:complete]; +} + +///-------------------------------------- +#pragma mark - Accessors +///--------------------------------------s + +- (void)setServerData:(NSDictionary *)serverData { + if (self.serverData != serverData) { + _serverData = [serverData mutableCopy]; + } +} + +///-------------------------------------- +#pragma mark - Coding +///-------------------------------------- + +- (NSDictionary *)dictionaryRepresentationWithObjectEncoder:(PFEncoder *)objectEncoder { + NSMutableDictionary *result = [NSMutableDictionary dictionary]; + if (self.objectId) { + result[PFObjectObjectIdRESTKey] = self.objectId; + } + if (self.createdAt) { + result[PFObjectCreatedAtRESTKey] = [[PFDateFormatter sharedFormatter] preciseStringFromDate:self.createdAt]; + } + if (self.updatedAt) { + result[PFObjectUpdatedAtRESTKey] = [[PFDateFormatter sharedFormatter] preciseStringFromDate:self.updatedAt]; + } + [self.serverData enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + result[key] = [objectEncoder encodeObject:obj]; + }]; + return [result copy]; +} + +///-------------------------------------- +#pragma mark - PFObjectState (Mutable) +///-------------------------------------- + +#pragma mark Accessors + +- (void)setServerDataObject:(id)object forKey:(NSString *)key { + _serverData[key] = object; +} + +- (void)removeServerDataObjectForKey:(NSString *)key { + [_serverData removeObjectForKey:key]; +} + +- (void)removeServerDataObjectsForKeys:(NSArray *)keys { + [_serverData removeObjectsForKeys:keys]; +} + +- (void)setCreatedAtFromString:(NSString *)string { + self.createdAt = [[PFDateFormatter sharedFormatter] dateFromString:string]; +} + +- (void)setUpdatedAtFromString:(NSString *)string { + self.updatedAt = [[PFDateFormatter sharedFormatter] dateFromString:string]; +} + +#pragma mark Apply + +- (void)applyState:(PFObjectState *)state { + if (state.objectId) { + self.objectId = state.objectId; + } + if (state.createdAt) { + self.createdAt = state.createdAt; + } + if (state.updatedAt) { + self.updatedAt = state.updatedAt; + } + [_serverData addEntriesFromDictionary:state.serverData]; + + self.complete |= state.complete; +} + +- (void)applyOperationSet:(PFOperationSet *)operationSet { + [PFObjectUtilities applyOperationSet:operationSet toDictionary:_serverData]; +} + +///-------------------------------------- +#pragma mark - NSCopying +///-------------------------------------- + +- (id)copyWithZone:(NSZone *)zone { + return [[PFObjectState allocWithZone:zone] initWithState:self]; +} + +///-------------------------------------- +#pragma mark - NSMutableCopying +///-------------------------------------- + +- (id)mutableCopyWithZone:(NSZone *)zone { + return [[PFMutableObjectState allocWithZone:zone] initWithState:self]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFObjectState_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFObjectState_Private.h new file mode 100644 index 0000000..d5f8d63 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/State/PFObjectState_Private.h @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectState.h" + +@class PFOperationSet; + +@interface PFObjectState () { +@protected + NSString *_parseClassName; + NSString *_objectId; + NSDate *_createdAt; + NSDate *_updatedAt; + NSMutableDictionary *_serverData; + + BOOL _complete; + BOOL _deleted; +} + +@property (nonatomic, copy, readwrite) NSString *parseClassName; +@property (nonatomic, copy, readwrite) NSString *objectId; +@property (nonatomic, strong, readwrite) NSDate *createdAt; +@property (nonatomic, strong, readwrite) NSDate *updatedAt; +@property (nonatomic, copy, readwrite) NSMutableDictionary *serverData; + +@property (nonatomic, assign, readwrite, getter=isComplete) BOOL complete; +@property (nonatomic, assign, readwrite, getter=isDeleted) BOOL deleted; + +@end + +@interface PFObjectState (Mutable) + +///-------------------------------------- +/// @name Accessors +///-------------------------------------- + +- (void)setServerDataObject:(id)object forKey:(NSString *)key; +- (void)removeServerDataObjectForKey:(NSString *)key; +- (void)removeServerDataObjectsForKeys:(NSArray *)keys; + +- (void)setCreatedAtFromString:(NSString *)string; +- (void)setUpdatedAtFromString:(NSString *)string; + +///-------------------------------------- +/// @name Apply +///-------------------------------------- + +- (void)applyState:(PFObjectState *)state NS_REQUIRES_SUPER; +- (void)applyOperationSet:(PFOperationSet *)operationSet NS_REQUIRES_SUPER; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.h new file mode 100644 index 0000000..3db23d7 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.h @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@class PFPropertyInfo; + +@interface PFObjectSubclassInfo : NSObject + +@property (atomic, strong) Class subclass; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithSubclass:(Class)kls NS_DESIGNATED_INITIALIZER; ++ (instancetype)subclassInfoWithSubclass:(Class)kls; + +- (PFPropertyInfo *)propertyInfoForSelector:(SEL)cmd isSetter:(BOOL *)isSetter; +- (NSMethodSignature *)forwardingMethodSignatureForSelector:(SEL)cmd; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.m new file mode 100644 index 0000000..8005b1a --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.m @@ -0,0 +1,203 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectSubclassInfo.h" + +#import + +#import "PFAssert.h" +#import "PFLogging.h" +#import "PFMacros.h" +#import "PFPropertyInfo_Private.h" + +///-------------------------------------- +#pragma mark - Helper +///-------------------------------------- + +static BOOL startsWith(const char *string, const char *prefix) { + // Keep iterating in lockstep. If we run out of prefix letters first, + // this is a valid prefix. + for (; *string && *prefix && *prefix == *string; ++string, ++prefix) + ; + return !*prefix; +} + +// This method helps us get our bearings regardless of whether we were passed +// setFoo: or foo. We'll always exit this method by setting outPair to +// [accessor, mutator] and returns the property they correspond to. If the +// property cannot be found, returns NULL and outPair is undefined. +// An objc_property_t is an opaque struct pointer containing a SEL name and char * +// type information which follows a DSL explained in the Objective-C Runtime Reference. +static objc_property_t getAccessorMutatorPair(Class klass, SEL sel, SEL outPair[2]) { + const char *selName = sel_getName(sel); + ptrdiff_t selNameByteLen = strlen(selName) + 1; + char temp[selNameByteLen + 4]; + + if (startsWith(selName, "set")) { + outPair[1] = sel; + memcpy(temp, selName + 3, selNameByteLen - 3); + temp[0] -= 'A' - 'a'; + + temp[selNameByteLen - 5] = 0; // drop ':' + outPair[0] = sel_registerName(temp); + } else { + outPair[0] = sel; + sprintf(temp, "set%s:", selName); + if (selName[0] >= 'a' && selName[0] <= 'z') { + temp[3] += 'A' - 'a'; + } + outPair[1] = sel_registerName(temp); + } + + const char *propName = sel_getName(outPair[0]); + objc_property_t property = class_getProperty(klass, propName); + if (!property) { + // The user could have broken convention and declared an upper case property. + memcpy(temp, propName, strlen(propName) + 1); + temp[0] += 'A' - 'a'; + outPair[0] = sel_registerName(temp); + property = class_getProperty(klass, temp); + } + return property; +} + +@implementation PFObjectSubclassInfo { + dispatch_queue_t _dataAccessQueue; + NSMutableDictionary *_knownProperties; + NSMutableDictionary *_knownMethodSignatures; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithSubclass:(Class)kls { + self = [super init]; + if (!self) return nil; + + _dataAccessQueue = dispatch_queue_create("com.parse.object.subclassing.data.access", DISPATCH_QUEUE_SERIAL); + _subclass = kls; + + _knownProperties = [NSMutableDictionary dictionary]; + _knownMethodSignatures = [NSMutableDictionary dictionary]; + + return self; +} + ++ (instancetype)subclassInfoWithSubclass:(Class)kls { + return [[self alloc] initWithSubclass:kls]; +} + +///-------------------------------------- +#pragma mark - Public +///-------------------------------------- + +- (PFPropertyInfo *)propertyInfoForSelector:(SEL)cmd isSetter:(BOOL *)isSetter { + __block PFPropertyInfo *result = nil; + dispatch_sync(_dataAccessQueue, ^{ + result = [self _rawPropertyInfoForSelector:cmd]; + }); + + if (isSetter) { + *isSetter = (cmd == result.setterSelector); + } + + return result; +} + +- (NSMethodSignature *)forwardingMethodSignatureForSelector:(SEL)cmd { + __block NSMethodSignature *result = nil; + NSString *selectorString = NSStringFromSelector(cmd); + + // NSMethodSignature can be fairly heavyweight, so let's agressively cache this here. + dispatch_sync(_dataAccessQueue, ^{ + result = _knownMethodSignatures[selectorString]; + if (result) { + return; + } + + PFPropertyInfo *propertyInfo = [self _rawPropertyInfoForSelector:cmd]; + if (!propertyInfo) { + return; + } + + BOOL isSetter = (cmd == propertyInfo.setterSelector); + NSString *typeEncoding = propertyInfo.typeEncoding; + + // Property type encoding includes the class name as well. + // This is fine, except for the fact that NSMethodSignature hates that. + NSUInteger startLocation = [typeEncoding rangeOfString:@"\"" options:0].location; + NSUInteger endLocation = [typeEncoding rangeOfString:@"\"" + options:NSBackwardsSearch | NSAnchoredSearch].location; + + if (startLocation != NSNotFound && endLocation != NSNotFound) { + typeEncoding = [typeEncoding substringToIndex:startLocation]; + } + + NSString *objcTypes = ([NSString stringWithFormat:(isSetter ? @"v@:%@" : @"%@@:"), typeEncoding]); + result = [NSMethodSignature signatureWithObjCTypes:[objcTypes UTF8String]]; + + _knownMethodSignatures[selectorString] = result; + }); + + return result; +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + +- (PFPropertyInfo *)_rawPropertyInfoForSelector:(SEL)cmd { + PFPropertyInfo *result = nil; + NSString *selectorString = NSStringFromSelector(cmd); + result = _knownProperties[selectorString]; + if (result) { + return result; + } + + SEL propertySelectors[2]; + objc_property_t property = getAccessorMutatorPair(self.subclass, cmd, propertySelectors); + if (!property) { + return nil; + } + + // Check if we've registered this property with a different name. + NSString *propertyName = @(property_getName(property)); + result = _knownProperties[propertyName]; + if (result) { + // Re-register it with the name we just searched for for faster future lookup. + _knownProperties[selectorString] = result; + return result; + } + + const char *attributes = property_getAttributes(property); + if (strstr(attributes, "T@\"PFRelation\",") == attributes && !strstr(attributes, ",R")) { + PFLogWarning(PFLoggingTagCommon, + @"PFRelation properties are always readonly, but %@.%@ was declared otherwise.", + self.subclass, selectorString); + } + + result = [PFPropertyInfo propertyInfoWithClass:self.subclass name:propertyName]; + + _knownProperties[result.name] = result; + if (result.getterSelector) { + _knownProperties[NSStringFromSelector(result.getterSelector)] = result; + } + if (result.setterSelector) { + _knownProperties[NSStringFromSelector(result.setterSelector)] = result; + } + + return result; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassingController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassingController.h new file mode 100644 index 0000000..ef7977b --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassingController.h @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@class PFObject; +@protocol PFSubclassing; + +@interface PFObjectSubclassingController : NSObject + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +//TODO: (nlutsenko, richardross) Make it not terrible aka don't have singletons. ++ (instancetype)defaultController; ++ (void)clearDefaultController; + +///-------------------------------------- +/// @name Registration +///-------------------------------------- + +- (Class)subclassForParseClassName:(NSString *)parseClassName; +- (void)registerSubclass:(Class)kls; +- (void)unregisterSubclass:(Class)kls; + +///-------------------------------------- +/// @name Forwarding +///-------------------------------------- + +- (NSMethodSignature *)forwardingMethodSignatureForSelector:(SEL)cmd ofClass:(Class)kls; +- (BOOL)forwardObjectInvocation:(NSInvocation *)invocation withObject:(PFObject *)object; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassingController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassingController.m new file mode 100644 index 0000000..878a816 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassingController.m @@ -0,0 +1,317 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectSubclassingController.h" + +#import + +#import "PFAssert.h" +#import "PFMacros.h" +#import "PFObject.h" +#import "PFObjectSubclassInfo.h" +#import "PFPropertyInfo_Private.h" +#import "PFPropertyInfo_Runtime.h" +#import "PFSubclassing.h" + +// CFNumber does not use number type 0, we take advantage of that here. +#define kCFNumberTypeUnknown 0 + +static CFNumberType PFNumberTypeForObjCType(const char *encodedType) { +// To save anyone in the future from some major headaches, sanity check here. +#if kCFNumberTypeMax > UINT8_MAX +#error kCFNumberTypeMax has been changed! This solution will no longer work. +#endif + + // Organizing the table this way makes it nicely fit into two cache lines. This makes lookups nearly free, even more + // so if repeated. + static uint8_t types[128] = { + // Core types. + ['c'] = kCFNumberCharType, + ['i'] = kCFNumberIntType, + ['s'] = kCFNumberShortType, + ['l'] = kCFNumberLongType, + ['q'] = kCFNumberLongLongType, + + // CFNumber (and NSNumber, actually) does not store unsigned types. + // This may cause some strange issues when dealing with values near the max for that type. + // We should investigate this if it becomes a problem. + ['C'] = kCFNumberCharType, + ['I'] = kCFNumberIntType, + ['S'] = kCFNumberShortType, + ['L'] = kCFNumberLongType, + ['Q'] = kCFNumberLongLongType, + + // Floating point + ['f'] = kCFNumberFloatType, + ['d'] = kCFNumberDoubleType, + + // C99 & CXX boolean. We are keeping this here for decoding, as you can safely use CFNumberGetBytes on a + // CFBoolean, and extract it into a char. + ['B'] = kCFNumberCharType, + }; + + return (CFNumberType)types[encodedType[0]]; +} + +static NSNumber *PFNumberCreateSafe(const char *typeEncoding, const void *bytes) { + // NOTE: This is required because NSJSONSerialization treats all NSNumbers with the 'char' type as numbers, not + // booleans. As such, we must treat any and all boolean type encodings as explicit booleans, otherwise we will + // send '1' and '0' to the api server rather than 'true' and 'false'. + // + // TODO (richardross): When we drop support for 10.9/iOS 7, remove the 'c' encoding and only use the new 'B' + // encoding. + if (typeEncoding[0] == 'B' || typeEncoding[0] == 'c') { + return [NSNumber numberWithBool:*(BOOL *)bytes]; + } + + CFNumberType numberType = PFNumberTypeForObjCType(typeEncoding); + PFConsistencyAssert(numberType != kCFNumberTypeUnknown, @"Unsupported type encoding %s!", typeEncoding); + return (__bridge_transfer NSNumber *)CFNumberCreate(NULL, numberType, bytes); +} + +@implementation PFObjectSubclassingController { + dispatch_queue_t _registeredSubclassesAccessQueue; + NSMutableDictionary *_registeredSubclasses; + NSMutableDictionary *_unregisteredSubclasses; +} + +static PFObjectSubclassingController *defaultController_; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _registeredSubclassesAccessQueue = dispatch_queue_create("com.parse.object.subclassing", DISPATCH_QUEUE_SERIAL); + _registeredSubclasses = [NSMutableDictionary dictionary]; + _unregisteredSubclasses = [NSMutableDictionary dictionary]; + + return self; +} + ++ (instancetype)defaultController { + if (!defaultController_) { + defaultController_ = [[PFObjectSubclassingController alloc] init]; + } + return defaultController_; +} + ++ (void)clearDefaultController { + defaultController_ = nil; +} + +///-------------------------------------- +#pragma mark - Public +///-------------------------------------- + +- (Class)subclassForParseClassName:(NSString *)parseClassName { + __block Class result = nil; + pf_sync_with_throw(_registeredSubclassesAccessQueue, ^{ + result = [_registeredSubclasses[parseClassName] subclass]; + }); + return result; +} + +- (void)registerSubclass:(Class)kls { + pf_sync_with_throw(_registeredSubclassesAccessQueue, ^{ + [self _rawRegisterSubclass:kls]; + }); +} + +- (void)unregisterSubclass:(Class)class { + pf_sync_with_throw(_registeredSubclassesAccessQueue, ^{ + NSString *parseClassName = [class parseClassName]; + Class registeredClass = [_registeredSubclasses[parseClassName] subclass]; + + // Make it a no-op if the class itself is not registered or + // if there is another class registered under the same name. + if (registeredClass == nil || + ![registeredClass isEqual:class]) { + return; + } + + [_registeredSubclasses removeObjectForKey:parseClassName]; + }); +} + +- (BOOL)forwardObjectInvocation:(NSInvocation *)invocation withObject:(PFObject *)object { + PFObjectSubclassInfo *subclassInfo = [self _subclassInfoForClass:[object class]]; + + BOOL isSetter = NO; + PFPropertyInfo *propertyInfo = [subclassInfo propertyInfoForSelector:invocation.selector isSetter:&isSetter]; + if (!propertyInfo) { + return NO; + } + + if (isSetter) { + [self _forwardSetterInvocation:invocation forProperty:propertyInfo withObject:object]; + } else { + [self _forwardGetterInvocation:invocation forProperty:propertyInfo withObject:object]; + } + return YES; +} + +- (NSMethodSignature *)forwardingMethodSignatureForSelector:(SEL)cmd ofClass:(Class)kls { + PFObjectSubclassInfo *subclassInfo = [self _subclassInfoForClass:kls]; + return [subclassInfo forwardingMethodSignatureForSelector:cmd]; +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + +- (void)_forwardGetterInvocation:(NSInvocation *)invocation + forProperty:(PFPropertyInfo *)propertyInfo + withObject:(PFObject *)object { + PFConsistencyAssert(invocation.methodSignature.numberOfArguments == 2, @"Getter should take no arguments!"); + PFConsistencyAssert(invocation.methodSignature.methodReturnType[0] != 'v', @"A getter cannot return void!"); + + const char *methodReturnType = [invocation.methodSignature methodReturnType]; + void *returnValueBytes = alloca([invocation.methodSignature methodReturnLength]); + + if (propertyInfo.ivar) { + object_getIvarValue_safe(object, propertyInfo.ivar, returnValueBytes, propertyInfo.associationType); + } else { + __autoreleasing id dictionaryValue = nil; + if ([propertyInfo.typeEncoding isEqualToString:@"@\"PFRelation\""]) { + dictionaryValue = [object relationForKey:propertyInfo.name]; + } else { + dictionaryValue = object[propertyInfo.name]; + + // TODO: (richardross) Investigate why we were orignally copying the result of -objectForKey, + // as this doens't seem right. + if (propertyInfo.associationType == PFPropertyInfoAssociationTypeCopy) { + dictionaryValue = [dictionaryValue copy]; + } + } + + if (dictionaryValue == nil || [dictionaryValue isKindOfClass:[NSNull class]]) { + memset(returnValueBytes, 0, invocation.methodSignature.methodReturnLength); + } else if (methodReturnType[0] == '@') { + memcpy(returnValueBytes, (void *) &dictionaryValue, sizeof(id)); + } else if ([dictionaryValue isKindOfClass:[NSNumber class]]) { + CFNumberGetValue((__bridge CFNumberRef) dictionaryValue, + PFNumberTypeForObjCType(methodReturnType), + returnValueBytes); + } else { + // TODO:(richardross)Support C-style structs that automatically convert to JSON via NSValue? + PFConsistencyAssert(false, @"Unsupported type encoding %s!", methodReturnType); + } + } + + [invocation setReturnValue:returnValueBytes]; +} + +- (void)_forwardSetterInvocation:(NSInvocation *)invocation + forProperty:(PFPropertyInfo *)propertyInfo + withObject:(PFObject *)object { + PFConsistencyAssert(invocation.methodSignature.numberOfArguments == 3, @"Setter should only take 1 argument!"); + + PFObject *sourceObject = object; + const char *argumentType = [invocation.methodSignature getArgumentTypeAtIndex:2]; + + NSUInteger argumentValueSize = 0; + NSGetSizeAndAlignment(argumentType, &argumentValueSize, NULL); + + void *argumentValueBytes = alloca(argumentValueSize); + [invocation getArgument:argumentValueBytes atIndex:2]; + + if (propertyInfo.ivar) { + object_setIvarValue_safe(sourceObject, propertyInfo.ivar, argumentValueBytes, propertyInfo.associationType); + } else { + id dictionaryValue = nil; + + if (argumentType[0] == '@') { + dictionaryValue = *(__unsafe_unretained id *)argumentValueBytes; + + if (propertyInfo.associationType == PFPropertyInfoAssociationTypeCopy) { + dictionaryValue = [dictionaryValue copy]; + } + } else { + dictionaryValue = PFNumberCreateSafe(argumentType, argumentValueBytes); + } + + if (dictionaryValue == nil) { + [sourceObject removeObjectForKey:propertyInfo.name]; + } else { + sourceObject[propertyInfo.name] = dictionaryValue; + } + } +} + +- (PFObjectSubclassInfo *)_subclassInfoForClass:(Class)kls { + __block PFObjectSubclassInfo *result = nil; + pf_sync_with_throw(_registeredSubclassesAccessQueue, ^{ + if (class_respondsToSelector(object_getClass(kls), @selector(parseClassName))) { + result = _registeredSubclasses[[kls parseClassName]]; + } + + // TODO: (nlutsenko, richardross) Don't let unregistered subclasses have dynamic property resolution. + if (!result) { + result = [PFObjectSubclassInfo subclassInfoWithSubclass:kls]; + _unregisteredSubclasses[NSStringFromClass(kls)] = result; + } + }); + return result; +} + +// Reverse compatibility note: many people may have built PFObject subclasses before +// we officially supported them. Our implementation can do cool stuff, but requires +// the parseClassName class method. +- (void)_rawRegisterSubclass:(Class)kls { + PFConsistencyAssert([kls conformsToProtocol:@protocol(PFSubclassing)], + @"Can only call +registerSubclass on subclasses conforming to PFSubclassing."); + + NSString *parseClassName = [kls parseClassName]; + + // Bug detection: don't allow subclasses of subclasses (i.e. custom user classes) + // to change the value of +parseClassName + if ([kls superclass] != [PFObject class]) { + // We compare Method definitions against the PFObject version witout invoking it + // because that Method could throw on an intermediary class which is + // not meant for direct use. + Method baseImpl = class_getClassMethod([PFObject class], @selector(parseClassName)); + Method superImpl = class_getClassMethod([kls superclass], @selector(parseClassName)); + + PFConsistencyAssert(superImpl == baseImpl || + [parseClassName isEqualToString:[[kls superclass] parseClassName]], + @"Subclasses of subclasses may not have separate +parseClassName " + "definitions. %@ should inherit +parseClassName from %@.", + kls, [kls superclass]); + } + + Class current = [_registeredSubclasses[parseClassName] subclass]; + if (current && current != kls) { + // We've already registered a more specific subclass (i.e. we're calling + // registerSubclass:PFUser after MYUser + if ([current isSubclassOfClass:kls]) { + return; + } + + PFConsistencyAssert([kls isSubclassOfClass:current], + @"Tried to register both %@ and %@ as the native PFObject subclass " + "of %@. Cannot determine the right class to use because neither " + "inherits from the other.", current, kls, parseClassName); + } + + // Move the subclass info from unregisteredSubclasses dictionary to registered ones, or create if it doesn't exist. + NSString *className = NSStringFromClass(kls); + PFObjectSubclassInfo *subclassInfo = _unregisteredSubclasses[className]; + if (subclassInfo) { + [_unregisteredSubclasses removeObjectForKey:className]; + } else { + subclassInfo = [PFObjectSubclassInfo subclassInfoWithSubclass:kls]; + } + _registeredSubclasses[[kls parseClassName]] = subclassInfo; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Utilities/PFObjectUtilities.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Utilities/PFObjectUtilities.h new file mode 100644 index 0000000..a94952d --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Utilities/PFObjectUtilities.h @@ -0,0 +1,36 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class PFFieldOperation; +@class PFOperationSet; + +@interface PFObjectUtilities : NSObject + +///-------------------------------------- +/// @name Operations +///-------------------------------------- + ++ (id)newValueByApplyingFieldOperation:(PFFieldOperation *)operation + toDictionary:(NSMutableDictionary *)dictionary + forKey:(NSString *)key; ++ (void)applyOperationSet:(PFOperationSet *)operationSet toDictionary:(NSMutableDictionary *)dictionary; + +///-------------------------------------- +/// @name Equality +///-------------------------------------- + ++ (BOOL)isObject:(nullable id)objectA equalToObject:(nullable id)objectB; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Utilities/PFObjectUtilities.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Utilities/PFObjectUtilities.m new file mode 100644 index 0000000..9b5f1e1 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Object/Utilities/PFObjectUtilities.m @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectUtilities.h" + +#import "PFFieldOperation.h" +#import "PFOperationSet.h" + +@implementation PFObjectUtilities + +///-------------------------------------- +#pragma mark - Operations +///-------------------------------------- + ++ (id)newValueByApplyingFieldOperation:(PFFieldOperation *)operation + toDictionary:(NSMutableDictionary *)dictionary + forKey:(NSString *)key { + id oldValue = dictionary[key]; + id newValue = [operation applyToValue:oldValue forKey:key]; + if (newValue) { + dictionary[key] = newValue; + } else { + [dictionary removeObjectForKey:key]; + } + return newValue; +} + ++ (void)applyOperationSet:(PFOperationSet *)operationSet toDictionary:(NSMutableDictionary *)dictionary { + [operationSet enumerateKeysAndObjectsUsingBlock:^(NSString *key, PFFieldOperation *obj, BOOL *stop) { + [self newValueByApplyingFieldOperation:obj toDictionary:dictionary forKey:key]; + }]; +} + +///-------------------------------------- +#pragma mark - Equality +///-------------------------------------- + ++ (BOOL)isObject:(id)objectA equalToObject:(id)objectB { + return (objectA == objectB || (objectA != nil && [objectA isEqual:objectB])); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAlertView.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAlertView.h new file mode 100644 index 0000000..bddaf30 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAlertView.h @@ -0,0 +1,23 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import +#import + +typedef void(^PFAlertViewCompletion)(NSUInteger selectedOtherButtonIndex); + +@interface PFAlertView : NSObject + ++ (void)showAlertWithTitle:(NSString *)title + message:(NSString *)message + cancelButtonTitle:(NSString *)cancelButtonTitle + otherButtonTitles:(NSArray *)otherButtonTitles + completion:(PFAlertViewCompletion)completion NS_EXTENSION_UNAVAILABLE_IOS(""); + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAlertView.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAlertView.m new file mode 100644 index 0000000..e17fa6d --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAlertView.m @@ -0,0 +1,109 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFAlertView.h" + +@interface PFAlertView () + +@property (nonatomic, copy) PFAlertViewCompletion completion; + +@end + +@implementation PFAlertView + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + ++ (void)showAlertWithTitle:(NSString *)title + message:(NSString *)message + cancelButtonTitle:(NSString *)cancelButtonTitle + otherButtonTitles:(NSArray *)otherButtonTitles + completion:(PFAlertViewCompletion)completion { + if ([UIAlertController class] != nil) { + __block UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title + message:message + preferredStyle:UIAlertControllerStyleAlert]; + + void (^alertActionHandler)(UIAlertAction *) = [^(UIAlertAction *action) { + if (completion) { + // This block intentionally retains alertController, and releases it afterwards. + if (action.style == UIAlertActionStyleCancel) { + completion(NSNotFound); + } else { + NSUInteger index = [alertController.actions indexOfObject:action]; + completion(index - 1); + } + } + alertController = nil; + } copy]; + + [alertController addAction:[UIAlertAction actionWithTitle:cancelButtonTitle + style:UIAlertActionStyleCancel + handler:alertActionHandler]]; + + for (NSString *buttonTitle in otherButtonTitles) { + [alertController addAction:[UIAlertAction actionWithTitle:buttonTitle + style:UIAlertActionStyleDefault + handler:alertActionHandler]]; + } + + UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; + UIViewController *viewController = keyWindow.rootViewController; + while (viewController.presentedViewController) { + viewController = viewController.presentedViewController; + } + + [viewController presentViewController:alertController animated:YES completion:nil]; + } else { +#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_8_0 + __block PFAlertView *pfAlertView = [[self alloc] init]; + UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title + message:message + delegate:nil + cancelButtonTitle:cancelButtonTitle + otherButtonTitles:nil]; + + for (NSString *buttonTitle in otherButtonTitles) { + [alertView addButtonWithTitle:buttonTitle]; + } + + pfAlertView.completion = ^(NSUInteger index) { + if (completion) { + completion(index); + } + + pfAlertView = nil; + }; + + alertView.delegate = pfAlertView; + [alertView show]; +#endif + } +} + +#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_8_0 + +///-------------------------------------- +#pragma mark - UIAlertViewDelegate +///-------------------------------------- + +- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { + if (self.completion) { + if (buttonIndex == alertView.cancelButtonIndex) { + self.completion(NSNotFound); + } else { + self.completion(buttonIndex - 1); + } + } +} + +#endif + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFApplication.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFApplication.h new file mode 100644 index 0000000..7bf1c24 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFApplication.h @@ -0,0 +1,38 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#if TARGET_OS_IOS +#import +#elif TARGET_OS_WATCH +@class UIApplication; +#elif TARGET_OS_MAC +#import +@compatibility_alias UIApplication NSApplication; +#endif + +/*! + `PFApplication` class provides a centralized way to get the information about the current application, + or the environment it's running in. Please note, that all device specific things - should go to . + */ +@interface PFApplication : NSObject + +@property (nonatomic, strong, readonly) UIApplication *systemApplication; + +@property (nonatomic, assign, readonly, getter=isAppStoreEnvironment) BOOL appStoreEnvironment; +@property (nonatomic, assign, readonly, getter=isExtensionEnvironment) BOOL extensionEnvironment; + +@property (nonatomic, assign) NSInteger iconBadgeNumber; + ++ (instancetype)currentApplication; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFApplication.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFApplication.m new file mode 100644 index 0000000..a602fa1 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFApplication.m @@ -0,0 +1,93 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFApplication.h" + +#if TARGET_OS_IOS +#import +#elif !TARGET_OS_WATCH && TARGET_OS_MAC +#import +#endif + +@implementation PFApplication + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + ++ (instancetype)currentApplication { + static PFApplication *application; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + application = [[self alloc] init]; + }); + return application; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (BOOL)isAppStoreEnvironment { +#if TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR + return ([[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"] == nil); +#endif + + return NO; +} + +- (BOOL)isExtensionEnvironment { + return [[[NSBundle mainBundle] bundlePath] hasSuffix:@".appex"]; +} + +- (NSInteger)iconBadgeNumber { +#if TARGET_OS_WATCH + return 0; +#elif TARGET_OS_IOS + return self.systemApplication.applicationIconBadgeNumber; +#elif TARGET_OS_MAC + // Make sure not to use `NSApp` here, because it doesn't work sometimes, + // `NSApplication +sharedApplication` does though. + NSString *badgeLabel = [[NSApplication sharedApplication] dockTile].badgeLabel; + if (badgeLabel.length == 0) { + return 0; + } + + NSScanner *scanner = [NSScanner localizedScannerWithString:badgeLabel]; + + NSInteger number = 0; + [scanner scanInteger:&number]; + if (scanner.scanLocation != badgeLabel.length) { + return 0; + } + + return number; +#endif +} + +- (void)setIconBadgeNumber:(NSInteger)iconBadgeNumber { + if (self.iconBadgeNumber != iconBadgeNumber) { +#if TARGET_OS_IOS + self.systemApplication.applicationIconBadgeNumber = iconBadgeNumber; +#elif !TARGET_OS_WATCH + [[NSApplication sharedApplication] dockTile].badgeLabel = [@(iconBadgeNumber) stringValue]; +#endif + } +} + +- (UIApplication *)systemApplication { +#if TARGET_OS_WATCH + return nil; +#else + // Workaround to make `sharedApplication` still be called even if compiling for App Extensions or WatchKit apps. + return [UIApplication performSelector:@selector(sharedApplication)]; +#endif +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAssert.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAssert.h new file mode 100644 index 0000000..35277e0 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAssert.h @@ -0,0 +1,94 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFMacros.h" + +#ifndef Parse_PFAssert_h +#define Parse_PFAssert_h + +/*! + Raises an `NSInvalidArgumentException` if the `condition` does not pass. + Use `description` to supply the way to fix the exception. + */ +#define PFParameterAssert(condition, description, ...) \ + do {\ + if (!(condition)) { \ + [NSException raise:NSInvalidArgumentException \ + format:description, ##__VA_ARGS__]; \ + } \ + } while(0) + +/*! + Raises an `NSRangeException` if the `condition` does not pass. + Use `description` to supply the way to fix the exception. + */ +#define PFRangeAssert(condition, description, ...) \ + do {\ + if (!(condition)) { \ + [NSException raise:NSRangeException \ + format:description, ##__VA_ARGS__]; \ + } \ +} while(0) + +/*! + Raises an `NSInternalInconsistencyException` if the `condition` does not pass. + Use `description` to supply the way to fix the exception. + */ +#define PFConsistencyAssert(condition, description, ...) \ + do { \ + if (!(condition)) { \ + [NSException raise:NSInternalInconsistencyException \ + format:description, ##__VA_ARGS__]; \ + } \ + } while(0) + +/*! + Always raises `NSInternalInconsistencyException` with details + about the method used and class that received the message + */ +#define PFNotDesignatedInitializer() \ +do { \ + PFConsistencyAssert(NO, \ + @"%@ is not the designated initializer for instances of %@.", \ + NSStringFromSelector(_cmd), \ + NSStringFromClass([self class])); \ + return nil; \ +} while (0) + +/*! + Raises `NSInternalInconsistencyException` if current thread is not main thread. + */ +#define PFAssertMainThread() \ +do { \ + PFConsistencyAssert([NSThread isMainThread], @"This method must be called on the main thread."); \ +} while (0) + +/*! + Raises `NSInternalInconsistencyException` if current thread is not the required one. + */ +#define PFAssertIsOnThread(thread) \ +do { \ + PFConsistencyAssert([NSThread currentThread] == thread, \ + @"This method must be called only on thread: %@.", thread); \ +} while (0) + +/*! + Raises `NSInternalInconsistencyException` if the current queue + is not the same as the queue provided. + Make sure you mark the queue first via `PFMarkDispatchQueue` + */ +#define PFAssertIsOnDispatchQueue(queue) \ +do { \ + void *mark = PFOSObjectPointer(queue); \ + PFConsistencyAssert(dispatch_get_specific(mark) == mark, \ + @"%s must be executed on %s", \ + __PRETTY_FUNCTION__, dispatch_queue_get_label(queue)); \ +} while (0) + +#endif diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAsyncTaskQueue.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAsyncTaskQueue.h new file mode 100644 index 0000000..45da5dc --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAsyncTaskQueue.h @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PFAsyncTaskQueue : NSObject + ++ (instancetype)taskQueue; + +- (BFTask *)enqueue:(BFContinuationBlock)block; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAsyncTaskQueue.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAsyncTaskQueue.m new file mode 100644 index 0000000..2dae167 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFAsyncTaskQueue.m @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFAsyncTaskQueue.h" + +#import + +#import "BFTask+Private.h" + +@interface PFAsyncTaskQueue() + +@property (nonatomic, strong) dispatch_queue_t syncQueue; +@property (nonatomic, strong) BFTask *tail; + +@end + +@implementation PFAsyncTaskQueue + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _tail = [BFTask taskWithResult:nil]; + _syncQueue = dispatch_queue_create("com.parse.asynctaskqueue.sync", DISPATCH_QUEUE_SERIAL); + + return self; +} + ++ (instancetype)taskQueue { + return [[self alloc] init]; +} + +///-------------------------------------- +#pragma mark - Enqueue +///-------------------------------------- + +- (BFTask *)enqueue:(BFContinuationBlock)block { + BFTaskCompletionSource *source = [BFTaskCompletionSource taskCompletionSource]; + dispatch_async(_syncQueue, ^{ + _tail = [_tail continueAsyncWithBlock:block]; + [_tail continueAsyncWithBlock:^id(BFTask *task) { + if (task.faulted) { + NSError *error = task.error; + if (error) { + [source trySetError:error]; + } else { + [source trySetException:task.exception]; + } + } else if (task.cancelled) { + [source trySetCancelled]; + } else { + [source trySetResult:task.result]; + } + return task; + }]; + }); + return source.task; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFBase64Encoder.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFBase64Encoder.h new file mode 100644 index 0000000..4a7d44f --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFBase64Encoder.h @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@interface PFBase64Encoder : NSObject + ++ (NSData *)dataFromBase64String:(NSString *)string; ++ (NSString *)base64StringFromData:(NSData *)data; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFBase64Encoder.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFBase64Encoder.m new file mode 100644 index 0000000..07fb5d0 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFBase64Encoder.m @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFBase64Encoder.h" + +@implementation PFBase64Encoder + ++ (NSData *)dataFromBase64String:(NSString *)string { + if (!string) { + return [NSData data]; + } + return [[NSData alloc] initWithBase64EncodedString:string options:NSDataBase64DecodingIgnoreUnknownCharacters]; +} + ++ (NSString *)base64StringFromData:(NSData *)data { + if (!data) { + return [NSString string]; + } + return [data base64EncodedStringWithOptions:0]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFBaseState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFBaseState.h new file mode 100644 index 0000000..535403c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFBaseState.h @@ -0,0 +1,76 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +typedef NS_ENUM(uint8_t, PFPropertyInfoAssociationType) { + PFPropertyInfoAssociationTypeDefault, // Assign for c-types, strong for objc-types. + PFPropertyInfoAssociationTypeAssign, + PFPropertyInfoAssociationTypeStrong, + PFPropertyInfoAssociationTypeWeak, + PFPropertyInfoAssociationTypeCopy, + PFPropertyInfoAssociationTypeMutableCopy, +}; + +@interface PFPropertyAttributes : NSObject + +@property (nonatomic, assign, readonly) PFPropertyInfoAssociationType associationType; + +- (instancetype)initWithAssociationType:(PFPropertyInfoAssociationType)associationType NS_DESIGNATED_INITIALIZER; + ++ (instancetype)attributes; ++ (instancetype)attributesWithAssociationType:(PFPropertyInfoAssociationType)associationType; + +@end + +@protocol PFBaseStateSubclass + +/*! + This is the list of properties that should be used automatically for the methods implemented by PFBaseState. + + It should be a dictionary in the format of @{ @"<#property name#>": [PFPropertyAttributes attributes] } + This will be automatically cached by PFBaseState, no need for you to cache it yourself. + + @return a dictionary of property attributes + */ ++ (NSDictionary *)propertyAttributes; + +@end + +/*! + Shared base class for all state objects. + Implements -init, -description, -debugDescription, -hash, -isEqual:, -compareTo:, etc. for you. + */ +@interface PFBaseState : NSObject + +- (instancetype)initWithState:(PFBaseState *)otherState; ++ (instancetype)stateWithState:(PFBaseState *)otherState; + +- (NSComparisonResult)compare:(PFBaseState *)other; + +/*! + Returns a dictionary representation of this object. + + Essentially, it takes the values for the keys of this object, and stuffs them in the dictionary. + It will call -dictionaryRepresentation on any objects it contains, in order to handle base states + contained in this base state. + + If a value is `nil`, it will be replaced with [NSNull null], to ensure all keys exist in the dictionary. + + If you don't like this behavior, you can overwrite the method + -nilValueForProperty:(NSString *) property + to return either nil to skip the key, or a value to use in it's place. + + @return A dictionary representation of this object state. + */ +- (NSDictionary *)dictionaryRepresentation; + +- (id)debugQuickLookObject; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFBaseState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFBaseState.m new file mode 100644 index 0000000..dc6af22 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFBaseState.m @@ -0,0 +1,267 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFBaseState.h" + +#import +#import + +#import "PFAssert.h" +#import "PFHash.h" +#import "PFMacros.h" +#import "PFPropertyInfo.h" + +///-------------------------------------- +#pragma mark - Helpers +///-------------------------------------- + +@implementation PFPropertyAttributes + +- (instancetype)init { + return [self initWithAssociationType:PFPropertyInfoAssociationTypeDefault]; +} + +- (instancetype)initWithAssociationType:(PFPropertyInfoAssociationType)associationType { + self = [super init]; + if (!self) return nil; + + _associationType = associationType; + + return self; +} + ++ (instancetype)attributes { + return [[self alloc] init]; +} + ++ (instancetype)attributesWithAssociationType:(PFPropertyInfoAssociationType)associationType { + return [[self alloc] initWithAssociationType:associationType]; +} + +@end + +@interface PFBaseState () { + BOOL _initializing; +} + +@end + +@implementation PFBaseState + +///-------------------------------------- +#pragma mark - Property Info +///-------------------------------------- + ++ (NSSet *)_propertyInfo { + static void *_propertyMapKey = &_propertyMapKey; + static dispatch_queue_t queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + queue = dispatch_queue_create("com.parse.basestate.propertyinfo", DISPATCH_QUEUE_SERIAL); + }); + + __block NSMutableSet *results = nil; + dispatch_sync(queue, ^{ + results = objc_getAssociatedObject(self, _propertyMapKey); + if (results) { + return; + } + + NSDictionary *attributesMap = [(id)self propertyAttributes]; + results = [[NSMutableSet alloc] initWithCapacity:attributesMap.count]; + + [attributesMap enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + [results addObject:[PFPropertyInfo propertyInfoWithClass:self + name:key + associationType:[obj associationType]]]; + }]; + + objc_setAssociatedObject(self, _propertyMapKey, results, OBJC_ASSOCIATION_RETAIN); + }); + + return results; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + // To prevent a recursive init function. + if (_initializing) { + return [super init]; + } + + _initializing = YES; + return [self initWithState:nil]; +} + +- (instancetype)initWithState:(id)otherState { + if (!_initializing) { + _initializing = YES; + + self = [self init]; + if (!self) return nil; + } + + NSSet *ourProperties = [[self class] _propertyInfo]; + NSSet *theirProperties = [[otherState class] _propertyInfo]; + + NSMutableSet *shared = [ourProperties mutableCopy]; + [shared intersectSet:theirProperties]; + + for (PFPropertyInfo *property in shared) { + [property takeValueFrom:otherState toObject:self]; + } + + return self; +} + ++ (instancetype)stateWithState:(PFBaseState *)otherState { + return [[self alloc] initWithState:otherState]; +} + +///-------------------------------------- +#pragma mark - Hashing +///-------------------------------------- + +- (NSUInteger)hash { + NSUInteger result = 0; + + for (PFPropertyInfo *property in [[self class] _propertyInfo]) { + result = PFIntegerPairHash(result, [[property getWrappedValueFrom:self] hash]); + } + + return result; +} + +///-------------------------------------- +#pragma mark - Comparison +///-------------------------------------- + +- (NSComparisonResult)compare:(PFBaseState *)other { + PFParameterAssert([other isKindOfClass:[PFBaseState class]], + @"Cannot compatre to an object that isn't a PFBaseState"); + + NSSet *ourProperties = [[self class] _propertyInfo]; + NSSet *theirProperties = [[other class] _propertyInfo]; + + NSMutableSet *shared = [ourProperties mutableCopy]; + [shared intersectSet:theirProperties]; + + for (PFPropertyInfo *info in shared) { + id ourValue = [info getWrappedValueFrom:self]; + id theirValue = [info getWrappedValueFrom:other]; + + if (![ourValue respondsToSelector:@selector(compare:)]) { + continue; + } + + NSComparisonResult result = [ourValue compare:theirValue]; + if (result != NSOrderedSame) { + return result; + } + } + + return NSOrderedSame; +} + +///-------------------------------------- +#pragma mark - Equality +///-------------------------------------- + +- (BOOL)isEqual:(id)other { + if (self == other) { + return YES; + } + + if (![other isKindOfClass:[PFBaseState class]]) { + return NO; + } + + NSSet *ourProperties = [[self class] _propertyInfo]; + NSSet *theirProperties = [[other class] _propertyInfo]; + + NSMutableSet *shared = [ourProperties mutableCopy]; + [shared intersectSet:theirProperties]; + + for (PFPropertyInfo *info in shared) { + id ourValue = [info getWrappedValueFrom:self]; + id theirValue = [info getWrappedValueFrom:other]; + + if (ourValue != theirValue && ![ourValue isEqual:theirValue]) { + return NO; + } + } + + return YES; +} + +///-------------------------------------- +#pragma mark - Description +///-------------------------------------- + +// This allows us to easily use the same implementation for description and debugDescription +- (NSString *)descriptionWithValueSelector:(SEL)toPerform { + NSMutableString *results = [NSMutableString stringWithFormat:@"<%@: %p", [self class], self]; + + for (PFPropertyInfo *property in [[self class] _propertyInfo]) { + id propertyValue = [property getWrappedValueFrom:self]; + NSString *propertyDescription = objc_msgSend_safe(NSString *)(propertyValue, toPerform); + + [results appendFormat:@", %@: %@", property.name, propertyDescription]; + } + + [results appendString:@">"]; + return results; +} + +- (NSString *)description { + return [self descriptionWithValueSelector:_cmd]; +} + +- (NSString *)debugDescription { + return [self descriptionWithValueSelector:_cmd]; +} + +///-------------------------------------- +#pragma mark - Dictionary/QuickLook representation +///-------------------------------------- + +- (id)nilValueForProperty:(NSString *)propertyName { + return [NSNull null]; +} + +// Implementation detail - this returns a mutable dictionary with mutable leaves. +- (NSDictionary *)dictionaryRepresentation { + NSSet *properties = [[self class] _propertyInfo]; + NSMutableDictionary *results = [[NSMutableDictionary alloc] initWithCapacity:properties.count]; + + for (PFPropertyInfo *info in properties) { + id value = [info getWrappedValueFrom:self]; + + if (value == nil) { + value = [self nilValueForProperty:info.name]; + + if (value == nil) { + continue; + } + } + + results[info.name] = value; + } + + return results; +} + +- (id)debugQuickLookObject { + return [[self dictionaryRepresentation] description]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCategoryLoader.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCategoryLoader.h new file mode 100644 index 0000000..9c298e2 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCategoryLoader.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@interface PFCategoryLoader : NSObject + ++ (void)loadPrivateCategories; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCategoryLoader.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCategoryLoader.m new file mode 100644 index 0000000..1a38f40 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCategoryLoader.m @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFCategoryLoader.h" + +#import "BFTask+Private.h" + +@implementation PFCategoryLoader + ++ (void)loadPrivateCategories { + forceLoadCategory_BFTask_Private(); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandCache.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandCache.h new file mode 100644 index 0000000..4d780cf --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandCache.h @@ -0,0 +1,52 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFEventuallyQueue.h" + +@class PFCommandCacheTestHelper; +@class PFObject; + +/*! + ParseCommandCache manages an on-disk cache of commands to be executed, and a thread with a standard run loop + that executes the commands. There should only ever be one instance of this class, because multiple instances + would be running separate threads trying to read and execute the same commands. + */ +@interface PFCommandCache : PFEventuallyQueue + +@property (nonatomic, copy, readonly) NSString *diskCachePath; +@property (nonatomic, assign, readonly) unsigned long long diskCacheSize; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +/*! + Creates the command cache object for all ParseObjects with default configuration. + This command cache is used to locally store save commands created by the [PFObject saveEventually]. + When a PFCommandCache is instantiated, it will begin running its run loop, + which will start by processing any commands already stored in the on-disk queue. + */ ++ (instancetype)newDefaultCommandCacheWithCommandRunner:(id)commandRunner + cacheFolderPath:(NSString *)cacheFolderPath; + +- (instancetype)initWithCommandRunner:(id)commandRunner + maxAttemptsCount:(NSUInteger)attemptsCount + retryInterval:(NSTimeInterval)retryInterval NS_UNAVAILABLE; + +- (instancetype)initWithCommandRunner:(id)commandRunner + maxAttemptsCount:(NSUInteger)attemptsCount + retryInterval:(NSTimeInterval)retryInterval + diskCachePath:(NSString *)diskCachePath + diskCacheSize:(unsigned long long)diskCacheSize NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandCache.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandCache.m new file mode 100644 index 0000000..6889964 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandCache.m @@ -0,0 +1,330 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFCommandCache.h" + +#include +#include + +#import +#import + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFCoreManager.h" +#import "PFErrorUtilities.h" +#import "PFEventuallyQueue_Private.h" +#import "PFFileManager.h" +#import "PFLogging.h" +#import "PFMacros.h" +#import "PFMultiProcessFileLockController.h" +#import "PFObject.h" +#import "PFObjectLocalIdStore.h" +#import "PFObjectPrivate.h" +#import "PFRESTCommand.h" +#import "Parse_Private.h" + +static NSString *const _PFCommandCacheDiskCacheDirectoryName = @"Command Cache"; + +static const NSString *PFCommandCachePrefixString = @"Command"; +static unsigned long long const PFCommandCacheDefaultDiskCacheSize = 10 * 1024 * 1024; // 10 MB + +@interface PFCommandCache () { + unsigned int _fileCounter; +} + +@property (nonatomic, assign, readwrite, setter=_setDiskCacheSize:) unsigned long long diskCacheSize; + +@end + +@implementation PFCommandCache + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + ++ (instancetype)newDefaultCommandCacheWithCommandRunner:(id)commandRunner + cacheFolderPath:(NSString *)cacheFolderPath { + NSString *diskCachePath = [cacheFolderPath stringByAppendingPathComponent:_PFCommandCacheDiskCacheDirectoryName]; + diskCachePath = [diskCachePath stringByStandardizingPath]; + PFCommandCache *cache = [[PFCommandCache alloc] initWithCommandRunner:commandRunner + maxAttemptsCount:PFEventuallyQueueDefaultMaxAttemptsCount + retryInterval:PFEventuallyQueueDefaultTimeoutRetryInterval + diskCachePath:diskCachePath + diskCacheSize:PFCommandCacheDefaultDiskCacheSize]; + [cache start]; + return cache; +} + +- (instancetype)initWithCommandRunner:(id)commandRunner + maxAttemptsCount:(NSUInteger)attemptsCount + retryInterval:(NSTimeInterval)retryInterval { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithCommandRunner:(id)commandRunner + maxAttemptsCount:(NSUInteger)attemptsCount + retryInterval:(NSTimeInterval)retryInterval + diskCachePath:(NSString *)diskCachePath + diskCacheSize:(unsigned long long)diskCacheSize { + self = [super initWithCommandRunner:commandRunner maxAttemptsCount:attemptsCount retryInterval:retryInterval]; + if (!self) return nil; + + _diskCachePath = diskCachePath; + _diskCacheSize = diskCacheSize; + _fileCounter = 0; + + [self _createDiskCachePathIfNeeded]; + + return self; +} + +///-------------------------------------- +#pragma mark - Controlling Queue +///-------------------------------------- + +- (void)removeAllCommands { + [self pause]; + + [super removeAllCommands]; + + NSArray *commandIdentifiers = [self _pendingCommandIdentifiers]; + NSMutableArray *tasks = [NSMutableArray arrayWithCapacity:[commandIdentifiers count]]; + + for (NSString *identifier in commandIdentifiers) { + BFTask *task = [self _removeFileForCommandWithIdentifier:identifier]; + [tasks addObject:task]; + } + + [[BFTask taskForCompletionOfAllTasks:tasks] waitUntilFinished]; + + [self resume]; +} + +///-------------------------------------- +#pragma mark - PFEventuallyQueue +///-------------------------------------- + +- (void)_simulateReboot { + [super _simulateReboot]; + [self _createDiskCachePathIfNeeded]; +} + +///-------------------------------------- +#pragma mark - PFEventuallyQueueSubclass +///-------------------------------------- + +- (NSString *)_newIdentifierForCommand:(id)command { + // Start with current time - so we can sort identifiers and get the oldest one first. + return [NSString stringWithFormat:@"%@-%016qx-%08x-%@", + PFCommandCachePrefixString, + (unsigned long long)[NSDate timeIntervalSinceReferenceDate], + _fileCounter++, + [[NSUUID UUID] UUIDString]]; +} + +- (NSArray *)_pendingCommandIdentifiers { + NSArray *result = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:self.diskCachePath error:nil]; + // Only accept files that starts with "Command" since sometimes the directory is filled with garbage + // e.g.: https://phab.parse.com/file/info/PHID-FILE-qgbwk7sm7kcyaks6n4j7/ + result = [result filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF BEGINSWITH %@", PFCommandCachePrefixString]]; + + return [result sortedArrayUsingSelector:@selector(compare:)]; +} + +- (id)_commandWithIdentifier:(NSString *)identifier error:(NSError **)error { + [[PFMultiProcessFileLockController sharedController] beginLockedContentAccessForFileAtPath:self.diskCachePath]; + + NSError *innerError = nil; + NSData *jsonData = [NSData dataWithContentsOfFile:[self _filePathForCommandWithIdentifier:identifier] + options:NSDataReadingUncached + error:&innerError]; + + [[PFMultiProcessFileLockController sharedController] endLockedContentAccessForFileAtPath:self.diskCachePath]; + + if (innerError || !jsonData) { + NSString *message = [NSString stringWithFormat:@"Failed to read command from cache. %@", + innerError ? [innerError localizedDescription] : @""]; + innerError = [PFErrorUtilities errorWithCode:kPFErrorInternalServer + message:message]; + if (error) { + *error = innerError; + } + return nil; + } + + id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData + options:0 + error:&innerError]; + if (innerError) { + NSString *message = [NSString stringWithFormat:@"Failed to deserialiaze command from cache. %@", + [innerError localizedDescription]]; + innerError = [PFErrorUtilities errorWithCode:kPFErrorInternalServer + message:message]; + } else { + if ([PFRESTCommand isValidDictionaryRepresentation:jsonObject]) { + return [PFRESTCommand commandFromDictionaryRepresentation:jsonObject]; + } + innerError = [PFErrorUtilities errorWithCode:kPFErrorInternalServer + message:@"Failed to construct eventually command from cache." + shouldLog:NO]; + } + if (innerError && error) { + *error = innerError; + } + + return nil; +} + +- (BFTask *)_enqueueCommandInBackground:(id)command + object:(PFObject *)object + identifier:(NSString *)identifier { + return [self _saveCommandToCacheInBackground:command object:object identifier:identifier]; +} + +- (BFTask *)_didFinishRunningCommand:(id)command + withIdentifier:(NSString *)identifier + resultTask:(BFTask *)resultTask { + // Get the new objectId and mark the new localId so it can be resolved. + if (command.localId) { + NSDictionary *dictionaryResult = nil; + if ([resultTask.result isKindOfClass:[NSDictionary class]]) { + dictionaryResult = resultTask.result; + } else if ([resultTask.result isKindOfClass:[PFCommandResult class]]) { + PFCommandResult *commandResult = resultTask.result; + dictionaryResult = commandResult.result; + } + + if (dictionaryResult != nil) { + NSString *objectId = dictionaryResult[@"objectId"]; + if (objectId) { + [[Parse _currentManager].coreManager.objectLocalIdStore setObjectId:objectId forLocalId:command.localId]; + } + } + } + + [[self _removeFileForCommandWithIdentifier:identifier] waitUntilFinished]; + return [super _didFinishRunningCommand:command withIdentifier:identifier resultTask:resultTask]; +} + +- (BFTask *)_waitForOperationSet:(PFOperationSet *)operationSet eventuallyPin:(PFEventuallyPin *)eventuallyPin { + // Do nothing. This is only relevant in PFPinningEventuallyQueue. Looks super hacky you said? Yes it is! + return [BFTask taskWithResult:nil]; +} + +///-------------------------------------- +#pragma mark - Disk Cache +///-------------------------------------- + +- (BFTask *)_cleanupDiskCacheWithRequiredFreeSize:(NSUInteger)requiredSize { + return [BFTask taskFromExecutor:[BFExecutor defaultExecutor] withBlock:^id{ + NSUInteger size = requiredSize; + + NSMutableDictionary *commandSizes = [NSMutableDictionary dictionary]; + + [[PFMultiProcessFileLockController sharedController] beginLockedContentAccessForFileAtPath:self.diskCachePath]; + NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager] enumeratorAtPath:self.diskCachePath]; + + NSString *identifier = nil; + while ((identifier = [enumerator nextObject])) { + NSNumber *fileSize = [enumerator fileAttributes][NSFileSize]; + if (fileSize) { + commandSizes[identifier] = fileSize; + size += [fileSize unsignedIntegerValue]; + } + } + + [[PFMultiProcessFileLockController sharedController] endLockedContentAccessForFileAtPath:self.diskCachePath]; + + if (size > self.diskCacheSize) { + // Get identifiers and sort them to remove oldest commands first + NSArray *identifiers = [[commandSizes allKeys] sortedArrayUsingSelector:@selector(compare:)]; + for (NSString *identifier in identifiers) @autoreleasepool { + [self _removeFileForCommandWithIdentifier:identifier]; + size -= [commandSizes[identifier] unsignedIntegerValue]; + + if (size <= self.diskCacheSize) { + break; + } + [commandSizes removeObjectForKey:identifier]; + } + } + + return [BFTask taskWithResult:nil]; + }]; +} + +- (void)_setDiskCacheSize:(unsigned long long)diskCacheSize { + _diskCacheSize = diskCacheSize; +} + +///-------------------------------------- +#pragma mark - Files +///-------------------------------------- + +- (BFTask *)_saveCommandToCacheInBackground:(id)command + object:(PFObject *)object + identifier:(NSString *)identifier { + if (object != nil && object.objectId == nil) { + command.localId = [object getOrCreateLocalId]; + } + + @weakify(self); + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + + NSError *error = nil; + NSData *data = [NSJSONSerialization dataWithJSONObject:[command dictionaryRepresentation] + options:0 + error:&error]; + NSUInteger commandSize = [data length]; + if (commandSize > self.diskCacheSize) { + error = [PFErrorUtilities errorWithCode:kPFErrorInternalServer + message:@"Failed to run command, because it's too big."]; + } else if (commandSize == 0) { + error = [PFErrorUtilities errorWithCode:kPFErrorInternalServer + message:@"Failed to run command, because it's empty."]; + } + + if (error) { + return [BFTask taskWithError:error]; + } + + [[PFMultiProcessFileLockController sharedController] beginLockedContentAccessForFileAtPath:self.diskCachePath]; + return [[[self _cleanupDiskCacheWithRequiredFreeSize:commandSize] continueWithBlock:^id(BFTask *task) { + NSString *filePath = [self _filePathForCommandWithIdentifier:identifier]; + return [PFFileManager writeDataAsync:data toFile:filePath]; + }] continueWithBlock:^id(BFTask *task) { + [[PFMultiProcessFileLockController sharedController] endLockedContentAccessForFileAtPath:self.diskCachePath]; + return task; + }]; + }]; +} + +- (BFTask *)_removeFileForCommandWithIdentifier:(NSString *)identifier { + NSString *filePath = [self _filePathForCommandWithIdentifier:identifier]; + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + [[PFMultiProcessFileLockController sharedController] beginLockedContentAccessForFileAtPath:self.diskCachePath]; + return [PFFileManager removeItemAtPathAsync:filePath withFileLock:NO]; + }] continueWithBlock:^id(BFTask *task) { + [[PFMultiProcessFileLockController sharedController] endLockedContentAccessForFileAtPath:self.diskCachePath]; + return task; // Roll-forward the previous task. + }]; +} + +- (NSString *)_filePathForCommandWithIdentifier:(NSString *)identifier { + return [self.diskCachePath stringByAppendingPathComponent:identifier]; +} + +- (void)_createDiskCachePathIfNeeded { + [[PFFileManager createDirectoryIfNeededAsyncAtPath:_diskCachePath] waitForResult:nil withMainThreadWarning:NO]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandCache_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandCache_Private.h new file mode 100644 index 0000000..869ce66 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandCache_Private.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFCommandCache.h" + +@interface PFCommandCache () + +- (void)_setDiskCacheSize:(unsigned long long)diskCacheSize; + +@end; diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandResult.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandResult.h new file mode 100644 index 0000000..a87d667 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandResult.h @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PFCommandResult : NSObject + +@property (nonatomic, strong, readonly) id result; +@property (nullable, nonatomic, copy, readonly) NSString *resultString; +@property (nullable, nonatomic, strong, readonly) NSHTTPURLResponse *httpResponse; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithResult:(NSDictionary *)result + resultString:(nullable NSString *)resultString + httpResponse:(nullable NSHTTPURLResponse *)response NS_DESIGNATED_INITIALIZER; ++ (instancetype)commandResultWithResult:(NSDictionary *)result + resultString:(nullable NSString *)resultString + httpResponse:(nullable NSHTTPURLResponse *)response; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandResult.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandResult.m new file mode 100644 index 0000000..e83f2c3 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCommandResult.m @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFCommandResult.h" + +#import "PFAssert.h" + +@implementation PFCommandResult + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithResult:(NSDictionary *)result + resultString:(NSString *)resultString + httpResponse:(NSHTTPURLResponse *)response { + self = [super init]; + if (!self) return nil; + + _result = result; + _resultString = [resultString copy]; + _httpResponse = response; + + return self; +} + ++ (instancetype)commandResultWithResult:(NSDictionary *)result + resultString:(NSString *)resultString + httpResponse:(NSHTTPURLResponse *)response { + return [[self alloc] initWithResult:result resultString:resultString httpResponse:response]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCoreDataProvider.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCoreDataProvider.h new file mode 100644 index 0000000..021e974 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCoreDataProvider.h @@ -0,0 +1,101 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#ifndef Parse_PFCoreDataProvider_h +#define Parse_PFCoreDataProvider_h + +NS_ASSUME_NONNULL_BEGIN + +///-------------------------------------- +/// @name Object +///-------------------------------------- + +@class PFObjectController; + +@protocol PFObjectControllerProvider + +@property (nonatomic, strong) PFObjectController *objectController; + +@end + +@class PFObjectBatchController; + +@protocol PFObjectBatchController + +@property (nonatomic, strong, readonly) PFObjectBatchController *objectBatchController; + +@end + +@class PFObjectFilePersistenceController; + +@protocol PFObjectFilePersistenceControllerProvider + +@property (nonatomic, strong, readonly) PFObjectFilePersistenceController *objectFilePersistenceController; + +@end + +@class PFObjectLocalIdStore; + +@protocol PFObjectLocalIdStoreProvider + +@property (nonatomic, strong) PFObjectLocalIdStore *objectLocalIdStore; + +@end + +///-------------------------------------- +/// @name User +///-------------------------------------- + +@class PFUserAuthenticationController; + +@protocol PFUserAuthenticationControllerProvider + +@property (nonatomic, strong) PFUserAuthenticationController *userAuthenticationController; + +@end + +@class PFCurrentUserController; + +@protocol PFCurrentUserControllerProvider + +@property (nonatomic, strong) PFCurrentUserController *currentUserController; + +@end + +@class PFUserController; + +@protocol PFUserControllerProvider + +@property (nonatomic, strong) PFUserController *userController; + +@end + +///-------------------------------------- +/// @name Installation +///-------------------------------------- + +@class PFCurrentInstallationController; + +@protocol PFCurrentInstallationControllerProvider + +@property (nonatomic, strong) PFCurrentInstallationController *currentInstallationController; + +@end + +@class PFInstallationController; + +@protocol PFInstallationControllerProvider + +@property (nonatomic, strong) PFInstallationController *installationController; + +@end + +#endif + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCoreManager.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCoreManager.h new file mode 100644 index 0000000..19e2fca --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCoreManager.h @@ -0,0 +1,78 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFCoreDataProvider.h" +#import "PFDataProvider.h" + +@class PFInstallationIdentifierStore; + +NS_ASSUME_NONNULL_BEGIN + +@protocol PFCoreManagerDataSource + + +@property (nonatomic, strong, readonly) PFInstallationIdentifierStore *installationIdentifierStore; + +@end + +@class PFCloudCodeController; +@class PFConfigController; +@class PFFileController; +@class PFObjectFilePersistenceController; +@class PFObjectSubclassingController; +@class PFPinningObjectStore; +@class PFQueryController; +@class PFSessionController; + +@interface PFCoreManager : NSObject + + +@property (nonatomic, weak, readonly) id dataSource; + +@property (nonatomic, strong) PFQueryController *queryController; +@property (nonatomic, strong) PFFileController *fileController; +@property (nonatomic, strong) PFCloudCodeController *cloudCodeController; +@property (nonatomic, strong) PFConfigController *configController; +@property (nonatomic, strong) PFSessionController *sessionController; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; + ++ (instancetype)managerWithDataSource:(id)dataSource; + +///-------------------------------------- +/// @name ObjectFilePersistenceController +///-------------------------------------- + +- (void)unloadObjectFilePersistenceController; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCoreManager.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCoreManager.m new file mode 100644 index 0000000..c2b02dc --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFCoreManager.m @@ -0,0 +1,447 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFCoreManager.h" + +#import "PFAssert.h" +#import "PFCachedQueryController.h" +#import "PFCloudCodeController.h" +#import "PFConfigController.h" +#import "PFCurrentInstallationController.h" +#import "PFCurrentUserController.h" +#import "PFFileController.h" +#import "PFInstallationController.h" +#import "PFLocationManager.h" +#import "PFMacros.h" +#import "PFObjectBatchController.h" +#import "PFObjectController.h" +#import "PFObjectFilePersistenceController.h" +#import "PFObjectLocalIdStore.h" +#import "PFObjectSubclassingController.h" +#import "PFOfflineObjectController.h" +#import "PFOfflineQueryController.h" +#import "PFPinningObjectStore.h" +#import "PFSessionController.h" +#import "PFUserAuthenticationController.h" +#import "PFUserController.h" + +@interface PFCoreManager () { + dispatch_queue_t _locationManagerAccessQueue; + dispatch_queue_t _controllerAccessQueue; + dispatch_queue_t _objectLocalIdStoreAccessQueue; +} + +@end + +@implementation PFCoreManager + +@synthesize locationManager = _locationManager; + +@synthesize queryController = _queryController; +@synthesize fileController = _fileController; +@synthesize cloudCodeController = _cloudCodeController; +@synthesize configController = _configController; +@synthesize objectController = _objectController; +@synthesize objectBatchController = _objectBatchController; +@synthesize objectFilePersistenceController = _objectFilePersistenceController; +@synthesize objectLocalIdStore = _objectLocalIdStore; +@synthesize pinningObjectStore = _pinningObjectStore; +@synthesize userAuthenticationController = _userAuthenticationController; +@synthesize sessionController = _sessionController; +@synthesize currentInstallationController = _currentInstallationController; +@synthesize currentUserController = _currentUserController; +@synthesize userController = _userController; +@synthesize installationController = _installationController; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithDataSource:(id)dataSource { + self = [super init]; + if (!self) return nil; + + _dataSource = dataSource; + + _locationManagerAccessQueue = dispatch_queue_create("com.parse.core.locationManager", DISPATCH_QUEUE_SERIAL); + _controllerAccessQueue = dispatch_queue_create("com.parse.core.controller.accessQueue", DISPATCH_QUEUE_SERIAL); + _objectLocalIdStoreAccessQueue = dispatch_queue_create("com.parse.core.object.localIdStore", DISPATCH_QUEUE_SERIAL); + + return self; +} + ++ (instancetype)managerWithDataSource:(id)dataSource { + return [[self alloc] initWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - LocationManager +///-------------------------------------- + +- (PFLocationManager *)locationManager { + __block PFLocationManager *manager; + dispatch_sync(_locationManagerAccessQueue, ^{ + if (!_locationManager) { + _locationManager = [[PFLocationManager alloc] init]; + } + manager = _locationManager; + }); + return manager; +} + +///-------------------------------------- +#pragma mark - QueryController +///-------------------------------------- + +- (PFQueryController *)queryController { + __block PFQueryController *queryController; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_queryController) { + id dataSource = self.dataSource; + if (dataSource.offlineStoreLoaded) { + _queryController = [PFOfflineQueryController controllerWithCommonDataSource:dataSource + coreDataSource:self]; + } else { + _queryController = [PFCachedQueryController controllerWithCommonDataSource:dataSource]; + } + } + queryController = _queryController; + }); + return queryController; +} + +- (void)setQueryController:(PFQueryController *)queryController { + dispatch_sync(_controllerAccessQueue, ^{ + _queryController = queryController; + }); +} + +///-------------------------------------- +#pragma mark - FileController +///-------------------------------------- + +- (PFFileController *)fileController { + __block PFFileController *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_fileController) { + _fileController = [PFFileController controllerWithDataSource:self.dataSource]; + } + controller = _fileController; + }); + return controller; +} + +- (void)setFileController:(PFFileController *)fileController { + dispatch_sync(_controllerAccessQueue, ^{ + _fileController = fileController; + }); +} + +///-------------------------------------- +#pragma mark - CloudCodeController +///-------------------------------------- + +- (PFCloudCodeController *)cloudCodeController { + __block PFCloudCodeController *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_cloudCodeController) { + _cloudCodeController = [[PFCloudCodeController alloc] initWithCommandRunner:self.dataSource.commandRunner]; + } + controller = _cloudCodeController; + }); + return controller; +} + +- (void)setCloudCodeController:(PFCloudCodeController *)cloudCodeController { + dispatch_sync(_controllerAccessQueue, ^{ + _cloudCodeController = cloudCodeController; + }); +} + +///-------------------------------------- +#pragma mark - ConfigController +///-------------------------------------- + +- (PFConfigController *)configController { + __block PFConfigController *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_configController) { + id dataSource = self.dataSource; + _configController = [[PFConfigController alloc] initWithFileManager:dataSource.fileManager + commandRunner:dataSource.commandRunner]; + } + controller = _configController; + }); + return controller; +} + +- (void)setConfigController:(PFConfigController *)configController { + dispatch_sync(_controllerAccessQueue, ^{ + _configController = configController; + }); +} + +///-------------------------------------- +#pragma mark - ObjectController +///-------------------------------------- + +- (PFObjectController *)objectController { + __block PFObjectController *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_objectController) { + id dataSource = self.dataSource; + if (dataSource.offlineStoreLoaded) { + _objectController = [PFOfflineObjectController controllerWithDataSource:dataSource]; + } else { + _objectController = [PFObjectController controllerWithDataSource:dataSource]; + } + } + controller = _objectController; + }); + return controller; +} + +- (void)setObjectController:(PFObjectController *)controller { + dispatch_sync(_controllerAccessQueue, ^{ + _objectController = controller; + }); +} + +///-------------------------------------- +#pragma mark - ObjectBatchController +///-------------------------------------- + +- (PFObjectBatchController *)objectBatchController { + __block PFObjectBatchController *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_objectBatchController) { + _objectBatchController = [PFObjectBatchController controllerWithDataSource:self.dataSource]; + } + controller = _objectBatchController; + }); + return controller; +} + +///-------------------------------------- +#pragma mark - ObjectFilePersistenceController +///-------------------------------------- + +- (PFObjectFilePersistenceController *)objectFilePersistenceController { + __block PFObjectFilePersistenceController *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_objectFilePersistenceController) { + _objectFilePersistenceController = [PFObjectFilePersistenceController controllerWithDataSource:self.dataSource]; + } + controller = _objectFilePersistenceController; + }); + return controller; +} + +- (void)unloadObjectFilePersistenceController { + dispatch_sync(_controllerAccessQueue, ^{ + _objectFilePersistenceController = nil; + }); +} + +///-------------------------------------- +#pragma mark - Pinning Object Store +///-------------------------------------- + +- (PFPinningObjectStore *)pinningObjectStore { + __block PFPinningObjectStore *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_pinningObjectStore) { + _pinningObjectStore = [PFPinningObjectStore storeWithDataSource:self.dataSource]; + } + controller = _pinningObjectStore; + }); + return controller; +} + +- (void)setPinningObjectStore:(PFPinningObjectStore *)pinningObjectStore { + dispatch_sync(_controllerAccessQueue, ^{ + _pinningObjectStore = pinningObjectStore; + }); +} + +///-------------------------------------- +#pragma mark - Object LocalId Store +///-------------------------------------- + +- (PFObjectLocalIdStore *)objectLocalIdStore { + __block PFObjectLocalIdStore *store = nil; + @weakify(self); + dispatch_sync(_objectLocalIdStoreAccessQueue, ^{ + @strongify(self); + if (!_objectLocalIdStore) { + _objectLocalIdStore = [[PFObjectLocalIdStore alloc] initWithDataSource:self.dataSource]; + } + store = _objectLocalIdStore; + }); + return store; +} + +- (void)setObjectLocalIdStore:(PFObjectLocalIdStore *)objectLocalIdStore { + dispatch_sync(_objectLocalIdStoreAccessQueue, ^{ + _objectLocalIdStore = objectLocalIdStore; + }); +} + +///-------------------------------------- +#pragma mark - UserAuthenticationController +///-------------------------------------- + +- (PFUserAuthenticationController *)userAuthenticationController { + __block PFUserAuthenticationController *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_userAuthenticationController) { + _userAuthenticationController = [PFUserAuthenticationController controllerWithDataSource:self]; + } + controller = _userAuthenticationController; + }); + return controller; +} + +- (void)setUserAuthenticationController:(PFUserAuthenticationController *)userAuthenticationController { + dispatch_sync(_controllerAccessQueue, ^{ + _userAuthenticationController = userAuthenticationController; + }); +} + +///-------------------------------------- +#pragma mark - SessionController +///-------------------------------------- + +- (PFSessionController *)sessionController { + __block PFSessionController *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_sessionController) { + _sessionController = [PFSessionController controllerWithDataSource:self.dataSource]; + } + controller = _sessionController; + }); + return controller; +} + +- (void)setSessionController:(PFSessionController *)sessionController { + dispatch_sync(_controllerAccessQueue, ^{ + _sessionController = sessionController; + }); +} + +#if !TARGET_OS_WATCH + +///-------------------------------------- +#pragma mark - Current Installation Controller +///-------------------------------------- + +- (PFCurrentInstallationController *)currentInstallationController { + __block PFCurrentInstallationController *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_currentInstallationController) { + id dataSource = self.dataSource; + PFCurrentObjectStorageType storageType = (dataSource.offlineStore ? + PFCurrentObjectStorageTypeOfflineStore : + PFCurrentObjectStorageTypeFile); + _currentInstallationController = [PFCurrentInstallationController controllerWithStorageType:storageType + commonDataSource:dataSource + coreDataSource:self]; + } + controller = _currentInstallationController; + }); + return controller; +} + +- (void)setCurrentInstallationController:(PFCurrentInstallationController *)controller { + dispatch_sync(_controllerAccessQueue, ^{ + _currentInstallationController = controller; + }); +} + +#endif + +///-------------------------------------- +#pragma mark - Current User Controller +///-------------------------------------- + +- (PFCurrentUserController *)currentUserController { + __block PFCurrentUserController *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_currentUserController) { + id dataSource = self.dataSource; + PFCurrentObjectStorageType storageType = (dataSource.offlineStore ? + PFCurrentObjectStorageTypeOfflineStore : + PFCurrentObjectStorageTypeFile); + _currentUserController = [PFCurrentUserController controllerWithStorageType:storageType + commonDataSource:dataSource + coreDataSource:self]; + } + controller = _currentUserController; + }); + return controller; +} + +- (void)setCurrentUserController:(PFCurrentUserController *)currentUserController { + dispatch_sync(_controllerAccessQueue, ^{ + _currentUserController = currentUserController; + }); +} + +#if !TARGET_OS_WATCH + +///-------------------------------------- +#pragma mark - Installation Controller +///-------------------------------------- + +- (PFInstallationController *)installationController { + __block PFInstallationController *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_installationController) { + _installationController = [PFInstallationController controllerWithDataSource:self]; + } + controller = _installationController; + }); + return controller; +} + +- (void)setInstallationController:(PFInstallationController *)installationController { + dispatch_sync(_controllerAccessQueue, ^{ + _installationController = installationController; + }); +} + +#endif + +///-------------------------------------- +#pragma mark - User Controller +///-------------------------------------- + +- (PFUserController *)userController { + __block PFUserController *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_userController) { + _userController = [PFUserController controllerWithCommonDataSource:self.dataSource + coreDataSource:self]; + } + controller = _userController; + }); + return controller; +} + +- (void)setUserController:(PFUserController *)userController { + dispatch_sync(_controllerAccessQueue, ^{ + _userController = userController; + }); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDataProvider.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDataProvider.h new file mode 100644 index 0000000..3813c4d --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDataProvider.h @@ -0,0 +1,90 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#ifndef Parse_PFDataProviders_h +#define Parse_PFDataProviders_h + +NS_ASSUME_NONNULL_BEGIN + +@protocol PFCommandRunning; + +@protocol PFCommandRunnerProvider + +@property (nonatomic, strong, readonly) id commandRunner; + +@end + +@class PFFileManager; + +@protocol PFFileManagerProvider + +@property (nonatomic, strong, readonly) PFFileManager *fileManager; + +@end + +@class PFOfflineStore; + +@protocol PFOfflineStoreProvider + +@property (nullable, nonatomic, strong) PFOfflineStore *offlineStore; +@property (nonatomic, assign, readonly, getter=isOfflineStoreLoaded) BOOL offlineStoreLoaded; + +@end + +@class PFEventuallyQueue; + +@protocol PFEventuallyQueueProvider + +@property (nonatomic, strong, readonly) PFEventuallyQueue *eventuallyQueue; + +@end + +@class PFKeychainStore; + +@protocol PFKeychainStoreProvider + +@property (nonatomic, strong, readonly) PFKeychainStore *keychainStore; + +@end + +@class PFKeyValueCache; + +@protocol PFKeyValueCacheProvider + +@property (nonatomic, strong, readonly) PFKeyValueCache *keyValueCache; + +@end + +@class PFLocationManager; + +@protocol PFLocationManagerProvider + +@property (nonatomic, strong, readonly) PFLocationManager *locationManager; + +@end + +@class PFPinningObjectStore; + +@protocol PFPinningObjectStoreProvider + +@property (nonatomic, strong) PFPinningObjectStore *pinningObjectStore; + +@end + +@class PFInstallationIdentifierStore; + +@protocol PFInstallationIdentifierStoreProvider + +@property (nonatomic, strong, readonly) PFInstallationIdentifierStore *installationIdentifierStore; + +@end + +#endif + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDateFormatter.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDateFormatter.h new file mode 100644 index 0000000..d258e76 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDateFormatter.h @@ -0,0 +1,55 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PFDateFormatter : NSObject + ++ (instancetype)sharedFormatter; + +///-------------------------------------- +/// @name String from Date +///-------------------------------------- + +/*! + Converts `NSDate` into `NSString` representation using the following format: yyyy-MM-dd'T'HH:mm:ss.SSS'Z' + + @param date `NSDate` to convert. + + @returns Formatted `NSString` representation. + */ +- (NSString *)preciseStringFromDate:(NSDate *)date; + +///-------------------------------------- +/// @name Date from String +///-------------------------------------- + +/*! + Converts `NSString` representation of a date into `NSDate` object. + + @discussion Following date formats are supported: + YYYY-MM-DD + YYYY-MM-DD HH:MM'Z' + YYYY-MM-DD HH:MM:SS'Z' + YYYY-MM-DD HH:MM:SS.SSS'Z' + YYYY-MM-DDTHH:MM'Z' + YYYY-MM-DDTHH:MM:SS'Z' + YYYY-MM-DDTHH:MM:SS.SSS'Z' + + @param string `NSString` representation to convert. + + @returns `NSDate` incapsulating the date. + */ +- (NSDate *)dateFromString:(NSString *)string; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDateFormatter.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDateFormatter.m new file mode 100644 index 0000000..c4a6ba2 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDateFormatter.m @@ -0,0 +1,118 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFDateFormatter.h" + +#import + +@interface PFDateFormatter () { + dispatch_queue_t _synchronizationQueue; + + sqlite3 *_sqliteDatabase; + sqlite3_stmt *_stringToDateStatement; +} + +@property (nonatomic, strong, readonly) NSDateFormatter *preciseDateFormatter; + +@end + +@implementation PFDateFormatter + +@synthesize preciseDateFormatter = _preciseDateFormatter; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + ++ (instancetype)sharedFormatter { + static PFDateFormatter *formatter; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + formatter = [[self alloc] init]; + }); + return formatter; +} + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _synchronizationQueue = dispatch_queue_create("com.parse.dateFormatter", DISPATCH_QUEUE_SERIAL); + + //TODO: (nlutsenko) Check for error here. + sqlite3_open(":memory:", &_sqliteDatabase); + sqlite3_prepare_v2(_sqliteDatabase, + "SELECT strftime('%s', ?), strftime('%f', ?);", + -1, + &_stringToDateStatement, + NULL); + + return self; +} + +- (void)dealloc { + sqlite3_finalize(_stringToDateStatement); + sqlite3_close(_sqliteDatabase); +} + +///-------------------------------------- +#pragma mark - Date Formatters +///-------------------------------------- + +- (NSDateFormatter *)preciseDateFormatter { + if (!_preciseDateFormatter) { + _preciseDateFormatter = [[NSDateFormatter alloc] init]; + _preciseDateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; + _preciseDateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; + _preciseDateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; + } + return _preciseDateFormatter; +} + +///-------------------------------------- +#pragma mark - String from Date +///-------------------------------------- + +- (NSString *)preciseStringFromDate:(NSDate *)date { + __block NSString *string = nil; + dispatch_sync(_synchronizationQueue, ^{ + string = [self.preciseDateFormatter stringFromDate:date]; + }); + return string; +} + +///-------------------------------------- +#pragma mark - Date from String +///-------------------------------------- + +- (NSDate *)dateFromString:(NSString *)string { + __block sqlite3_int64 interval = 0; + __block double seconds = 0.0; + dispatch_sync(_synchronizationQueue, ^{ + const char *utf8String = [string UTF8String]; + + sqlite3_bind_text(_stringToDateStatement, 1, utf8String, -1, SQLITE_STATIC); + sqlite3_bind_text(_stringToDateStatement, 2, utf8String, -1, SQLITE_STATIC); + + if (sqlite3_step(_stringToDateStatement) == SQLITE_ROW) { + interval = sqlite3_column_int64(_stringToDateStatement, 0); + seconds = sqlite3_column_double(_stringToDateStatement, 1); + } + + sqlite3_reset(_stringToDateStatement); + sqlite3_clear_bindings(_stringToDateStatement); + }); + // Extract the fraction component of the seconds + double sintegral = 0.0; + double sfraction = modf(seconds, &sintegral); + + return [NSDate dateWithTimeIntervalSince1970:(double)interval + sfraction]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDecoder.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDecoder.h new file mode 100644 index 0000000..b0e5074 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDecoder.h @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PFDecoder : NSObject + +/*! + Globally available shared instance of PFDecoder. + */ ++ (PFDecoder *)objectDecoder; + +/*! + Takes a complex object that was deserialized and converts encoded + dictionaries into the proper Parse types. This is the inverse of + encodeObject:allowUnsaved:allowObjects:seenObjects:. + */ +- (nullable id)decodeObject:(nullable id)object; + +@end + +/*! + Extends the normal JSON to PFObject decoding to also deal with placeholders for new objects + that have been saved offline. + */ +@interface PFOfflineDecoder : PFDecoder + ++ (instancetype)decoderWithOfflineObjects:(nullable NSDictionary *)offlineObjects; + +@end + +/*! + A subclass of PFDecoder which can keep PFObject that has been fetched instead of creating a new instance. + */ +@interface PFKnownParseObjectDecoder : PFDecoder + ++ (instancetype)decoderWithFetchedObjects:(nullable NSDictionary *)fetchedObjects; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDecoder.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDecoder.m new file mode 100644 index 0000000..9cd045a --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDecoder.m @@ -0,0 +1,194 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFDecoder.h" + +#import "PFBase64Encoder.h" +#import "PFDateFormatter.h" +#import "PFFieldOperation.h" +#import "PFFieldOperationDecoder.h" +#import "PFFile_Private.h" +#import "PFGeoPointPrivate.h" +#import "PFInternalUtils.h" +#import "PFMacros.h" +#import "PFObjectPrivate.h" +#import "PFRelationPrivate.h" + +///-------------------------------------- +#pragma mark - PFDecoder +///-------------------------------------- + +@implementation PFDecoder + +#pragma mark Init + ++ (PFDecoder *)objectDecoder { + static PFDecoder *decoder; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + decoder = [[PFDecoder alloc] init]; + }); + return decoder; +} + +#pragma mark Decode + +- (id)decodeDictionary:(NSDictionary *)dictionary { + NSString *op = dictionary[@"__op"]; + if (op) { + return [[PFFieldOperationDecoder defaultDecoder] decode:dictionary withDecoder:self]; + } + + NSString *type = dictionary[@"__type"]; + if (type) { + if ([type isEqualToString:@"Date"]) { + return [[PFDateFormatter sharedFormatter] dateFromString:dictionary[@"iso"]]; + + } else if ([type isEqualToString:@"Bytes"]) { + return [PFBase64Encoder dataFromBase64String:dictionary[@"base64"]]; + + } else if ([type isEqualToString:@"GeoPoint"]) { + return [PFGeoPoint geoPointWithDictionary:dictionary]; + + } else if ([type isEqualToString:@"Relation"]) { + return [PFRelation relationFromDictionary:dictionary withDecoder:self]; + + } else if ([type isEqualToString:@"File"]) { + return [PFFile fileWithName:dictionary[@"name"] + url:dictionary[@"url"]]; + + } else if ([type isEqualToString:@"Pointer"]) { + NSString *objectId = dictionary[@"objectId"]; + NSString *localId = dictionary[@"localId"]; + NSString *className = dictionary[@"className"]; + if (localId) { + // This is a PFObject deserialized off the local disk, which has a localId + // that will need to be resolved before the object can be sent over the network. + // Its localId should be known to PFObjectLocalIdStore. + return [self _decodePointerForClassName:className localId:localId]; + } else { + return [self _decodePointerForClassName:className objectId:objectId]; + } + + } else if ([type isEqualToString:@"Object"]) { + NSString *className = dictionary[@"className"]; + + NSMutableDictionary *data = [dictionary mutableCopy]; + [data removeObjectForKey:@"__type"]; + [data removeObjectForKey:@"className"]; + NSDictionary *result = [self decodeDictionary:data]; + + return [PFObject _objectFromDictionary:result + defaultClassName:className + completeData:YES + decoder:self]; + + } else { + // We don't know how to decode this, so just leave it as a dictionary. + return dictionary; + } + } + + NSMutableDictionary *newDictionary = [NSMutableDictionary dictionaryWithCapacity:[dictionary count]]; + [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + newDictionary[key] = [self decodeObject:obj]; + }]; + return newDictionary; +} + +- (id)_decodePointerForClassName:(NSString *)className objectId:(NSString *)objectId { + return [PFObject objectWithoutDataWithClassName:className objectId:objectId]; +} + +- (id)_decodePointerForClassName:(NSString *)className localId:(NSString *)localId { + return [PFObject objectWithoutDataWithClassName:className localId:localId]; +} + +- (id)decodeArray:(NSArray *)array { + NSMutableArray *newArray = [NSMutableArray arrayWithCapacity:array.count]; + for (id value in array) { + [newArray addObject:[self decodeObject:value]]; + } + return newArray; +} + +- (id)decodeObject:(id)object { + if ([object isKindOfClass:[NSDictionary class]]) { + return [self decodeDictionary:object]; + } else if ([object isKindOfClass:[NSArray class]]) { + return [self decodeArray:object]; + } + return object; +} + +@end + +///-------------------------------------- +#pragma mark - PFOfflineDecoder +///-------------------------------------- + +@interface PFOfflineDecoder () + +/*! + A map of UUID to Task that will be finished once the given PFObject is loaded. + The Tasks should all be finished before decode is called. + */ +@property (nonatomic, copy) NSDictionary *offlineObjects; + +@end + +@implementation PFOfflineDecoder + ++ (instancetype)decoderWithOfflineObjects:(NSDictionary *)offlineObjects { + PFOfflineDecoder *decoder = [[self alloc] init]; + decoder.offlineObjects = offlineObjects; + return decoder; +} + +#pragma mark PFDecoder + +- (id)decodeObject:(id)object { + if ([object isKindOfClass:[NSDictionary class]] && + [((NSDictionary *)object)[@"__type"] isEqualToString:@"OfflineObject"]) { + NSString *uuid = ((NSDictionary *)object)[@"uuid"]; + return ((BFTask *)self.offlineObjects[uuid]).result; + } + + // Embedded objects can't show up here, because we never stored them that way offline. + return [super decodeObject:object]; +} + +@end + +///-------------------------------------- +#pragma mark - PFKnownParseObjectDecoder +///-------------------------------------- + +@interface PFKnownParseObjectDecoder () + +@property (nonatomic, copy) NSDictionary *fetchedObjects; + +@end + +@implementation PFKnownParseObjectDecoder + ++ (instancetype)decoderWithFetchedObjects:(NSDictionary *)fetchedObjects { + PFKnownParseObjectDecoder *decoder = [[self alloc] init]; + decoder.fetchedObjects = fetchedObjects; + return decoder; +} + +- (id)_decodePointerForClassName:(NSString *)className objectId:(NSString *)objectId { + if (_fetchedObjects != nil && _fetchedObjects[objectId]) { + return _fetchedObjects[objectId]; + } + return [super _decodePointerForClassName:className objectId:objectId]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDevice.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDevice.h new file mode 100644 index 0000000..6e62a3c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDevice.h @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@interface PFDevice : NSObject + +@property (nonatomic, copy, readonly) NSString *detailedModel; + +@property (nonatomic, copy, readonly) NSString *operatingSystemFullVersion; +@property (nonatomic, copy, readonly) NSString *operatingSystemVersion; +@property (nonatomic, copy, readonly) NSString *operatingSystemBuild; + +@property (nonatomic, assign, readonly, getter=isJailbroken) BOOL jailbroken; + ++ (instancetype)currentDevice; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDevice.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDevice.m new file mode 100644 index 0000000..b918012 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFDevice.m @@ -0,0 +1,134 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFDevice.h" + +#import + +#if TARGET_OS_WATCH +#import +#elif TARGET_OS_IOS +#import +#elif TARGET_OS_MAC +#import +#endif + +#include +#include +#include + +static NSString *PFDeviceSysctlByName(NSString *name) { + const char *charName = [name UTF8String]; + + size_t size; + sysctlbyname(charName, NULL, &size, NULL, 0); + char *answer = (char*)malloc(size); + + if (answer == NULL) { + return nil; + } + + sysctlbyname(charName, answer, &size, NULL, 0); + NSString *string = [NSString stringWithUTF8String:answer]; + free(answer); + + return string; +} + +@implementation PFDevice + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + ++ (instancetype)currentDevice { + static PFDevice *device; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + device = [[self alloc] init]; + }); + return device; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (NSString *)detailedModel { + NSString *name = PFDeviceSysctlByName(@"hw.machine"); + if (!name) { +#if TARGET_OS_WATCH + name = [WKInterfaceDevice currentDevice].model; +#elif TARGET_OS_IOS + name = [UIDevice currentDevice].model; +#elif TARGET_OS_MAC + name = @"Mac"; +#endif + } + return name; +} + +- (NSString *)operatingSystemFullVersion { + NSString *version = self.operatingSystemVersion; + NSString *build = self.operatingSystemBuild; + if (build.length) { + version = [version stringByAppendingFormat:@" (%@)", build]; + } + return version; +} +- (NSString *)operatingSystemVersion { +#if TARGET_OS_IOS + return [UIDevice currentDevice].systemVersion; +#elif TARGET_OS_WATCH + NSOperatingSystemVersion version = [NSProcessInfo processInfo].operatingSystemVersion; + return [NSString stringWithFormat:@"%d.%d.%d", + (int)version.majorVersion, + (int)version.minorVersion, + (int)version.patchVersion]; +#elif TARGET_OS_MAC + NSProcessInfo *info = [NSProcessInfo processInfo]; + if ([info respondsToSelector:@selector(operatingSystemVersion)]) { + NSOperatingSystemVersion version = info.operatingSystemVersion; + return [NSString stringWithFormat:@"%d.%d.%d", + (int)version.majorVersion, + (int)version.minorVersion, + (int)version.patchVersion]; + } else { + // TODO: (nlutsenko) Remove usage of this method, when we drop support for OSX 10.9 +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + SInt32 major, minor, bugfix; + if (Gestalt(gestaltSystemVersionMajor, &major) == noErr && + Gestalt(gestaltSystemVersionMinor, &minor) == noErr && + Gestalt(gestaltSystemVersionBugFix, &bugfix) == noErr) { + return [NSString stringWithFormat:@"%d.%d.%d", major, minor, bugfix]; + } +#pragma clang diagnostic pop + return [[NSProcessInfo processInfo] operatingSystemVersionString]; + } +#endif +} + +- (NSString *)operatingSystemBuild { + return PFDeviceSysctlByName(@"kern.osversion"); +} + +- (BOOL)isJailbroken { + BOOL jailbroken = NO; +#if TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR + DIR *dir = opendir("/"); + if (dir != NULL) { + jailbroken = YES; + closedir(dir); + } +#endif + return jailbroken; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEncoder.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEncoder.h new file mode 100644 index 0000000..9482755 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEncoder.h @@ -0,0 +1,67 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFMacros.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFObject; +@class PFOfflineStore; +@class PFSQLiteDatabase; + +///-------------------------------------- +/// @name Encoders +///-------------------------------------- + +@interface PFEncoder : NSObject + ++ (instancetype)objectEncoder; + +- (id)encodeObject:(id)object; +- (id)encodeParseObject:(PFObject *)object; + +@end + +/*! + Encoding strategy that rejects PFObject. + */ +@interface PFNoObjectEncoder : PFEncoder + +@end + +/*! + Encoding strategy that encodes PFObject to PFPointer with objectId or with localId. + */ +@interface PFPointerOrLocalIdObjectEncoder : PFEncoder + +@end + +/*! + Encoding strategy that encodes PFObject to PFPointer with objectId and rejects + unsaved PFObject. + */ +@interface PFPointerObjectEncoder : PFPointerOrLocalIdObjectEncoder + +@end + +/*! + Encoding strategy that can encode objects that are available offline. After using this encoder, + you must call encodeFinished and wait for its result to be finished before the results of the + encoding will be valid. + */ +@interface PFOfflineObjectEncoder : PFEncoder + ++ (instancetype)objectEncoderWithOfflineStore:(PFOfflineStore *)store database:(PFSQLiteDatabase *)database; + +- (BFTask *)encodeFinished; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEncoder.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEncoder.m new file mode 100644 index 0000000..6f9ce64 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEncoder.m @@ -0,0 +1,250 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFEncoder.h" + +#import "PFACLPrivate.h" +#import "PFAssert.h" +#import "PFBase64Encoder.h" +#import "PFDateFormatter.h" +#import "PFFieldOperation.h" +#import "PFFile_Private.h" +#import "PFGeoPointPrivate.h" +#import "PFObjectPrivate.h" +#import "PFOfflineStore.h" +#import "PFRelationPrivate.h" + +@implementation PFEncoder + ++ (instancetype)objectEncoder { + static PFEncoder *encoder; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + encoder = [[PFEncoder alloc] init]; + }); + return encoder; +} + +- (id)encodeObject:(id)object { + if ([object isKindOfClass:[PFObject class]]) { + return [self encodeParseObject:object]; + } else if ([object isKindOfClass:[NSData class]]) { + return @{ + @"__type" : @"Bytes", + @"base64" : [PFBase64Encoder base64StringFromData:object] + }; + + } else if ([object isKindOfClass:[NSDate class]]) { + return @{ + @"__type" : @"Date", + @"iso" : [[PFDateFormatter sharedFormatter] preciseStringFromDate:object] + }; + + } else if ([object isKindOfClass:[PFFile class]]) { + if (((PFFile *)object).isDirty) { + // TODO: (nlutsenko) Figure out what to do with things like an unsaved file + // in a mutable container, where we don't normally want to allow serializing + // such a thing inside an object. + // + // Returning this empty object is strictly wrong, but we have to have *something* + // to put into an object's mutable container cache, and this is just about the + // best we can do right now. + // + // [NSException raise:NSInternalInconsistencyException + // format:@"Tried to serialize an unsaved file."]; + return @{ @"__type" : @"File" }; + } + return @{ + @"__type" : @"File", + @"url" : ((PFFile *)object).state.urlString, + @"name" : ((PFFile *)object).name + }; + + } else if ([object isKindOfClass:[PFFieldOperation class]]) { + // Always encode PFFieldOperation with PFPointerOrLocalId + return [object encodeWithObjectEncoder:[PFPointerOrLocalIdObjectEncoder objectEncoder]]; + } else if ([object isKindOfClass:[PFACL class]]) { + // TODO (hallucinogen): pass object encoder here + return [object encodeIntoDictionary]; + + } else if ([object isKindOfClass:[PFGeoPoint class]]) { + // TODO (hallucinogen): pass object encoder here + return [object encodeIntoDictionary]; + + } else if ([object isKindOfClass:[PFRelation class]]) { + // TODO (hallucinogen): pass object encoder here + return [object encodeIntoDictionary]; + + } else if ([object isKindOfClass:[NSArray class]]) { + NSMutableArray *newArray = [NSMutableArray arrayWithCapacity:[object count]]; + for (id elem in object) { + [newArray addObject:[self encodeObject:elem]]; + } + return newArray; + + } else if ([object isKindOfClass:[NSDictionary class]]) { + NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:[object count]]; + [object enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + dict[key] = [self encodeObject:obj]; + }]; + return dict; + } + + return object; +} + +- (id)encodeParseObject:(PFObject *)object { + // Do nothing here + return nil; +} + +@end + +///-------------------------------------- +#pragma mark - PFNoObjectEncoder +///-------------------------------------- + +@implementation PFNoObjectEncoder + ++ (instancetype)objectEncoder { + static PFNoObjectEncoder *encoder; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + encoder = [[PFNoObjectEncoder alloc] init]; + }); + return encoder; +} + +- (id)encodeParseObject:(PFObject *)object { + [NSException raise:NSInternalInconsistencyException format:@"PFObjects are not allowed here."]; + return nil; +} + +@end + +///-------------------------------------- +#pragma mark - PFPointerOrLocalIdObjectEncoder +///-------------------------------------- + +@implementation PFPointerOrLocalIdObjectEncoder + ++ (instancetype)objectEncoder { + static PFPointerOrLocalIdObjectEncoder *instance = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + instance = [[PFPointerOrLocalIdObjectEncoder alloc] init]; + }); + return instance; +} + +- (id)encodeParseObject:(PFObject *)object { + if (object.objectId) { + return @{ + @"__type" : @"Pointer", + @"objectId" : object.objectId, + @"className" : object.parseClassName + }; + } + return @{ + @"__type" : @"Pointer", + @"localId" : [object getOrCreateLocalId], + @"className" : object.parseClassName + }; +} + +@end + +///-------------------------------------- +#pragma mark - PFPointerObjectEncoder +///-------------------------------------- + +@implementation PFPointerObjectEncoder + ++ (instancetype)objectEncoder { + static PFPointerObjectEncoder *encoder; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + encoder = [[self alloc] init]; + }); + return encoder; +} + +- (id)encodeParseObject:(PFObject *)object { + PFConsistencyAssert(object.objectId, @"Tried to save an object with a new, unsaved child."); + return [super encodeParseObject:object]; +} + +@end + +///-------------------------------------- +#pragma mark - PFOfflineObjectEncoder +///-------------------------------------- + +@interface PFOfflineObjectEncoder () + +@property (nonatomic, assign) PFOfflineStore *store; +@property (nonatomic, assign) PFSQLiteDatabase *database; +@property (nonatomic, strong) NSMutableArray *tasks; +@property (nonatomic, strong) NSObject *tasksLock; // TODO: (nlutsenko) Avoid using @synchronized + +@end + +@implementation PFOfflineObjectEncoder + ++ (instancetype)objectEncoder { + PFNotDesignatedInitializer(); + return nil; +} + ++ (instancetype)objectEncoderWithOfflineStore:(PFOfflineStore *)store database:(PFSQLiteDatabase *)database { + PFOfflineObjectEncoder *encoder = [[self alloc] init]; + encoder.store = store; + encoder.database = database; + encoder.tasks = [NSMutableArray array]; + encoder.tasksLock = [[NSObject alloc] init]; + return encoder; +} + +- (id)encodeParseObject:(PFObject *)object { + if (object.objectId) { + return @{ + @"__type" : @"Pointer", + @"objectId" : object.objectId, + @"className" : object.parseClassName + }; + } else { + NSMutableDictionary *result = [@{ @"__type" : @"OfflineObject" } mutableCopy]; + @synchronized(self.tasksLock) { + BFTask *uuidTask = [self.store getOrCreateUUIDAsyncForObject:object database:self.database]; + [uuidTask continueWithSuccessBlock:^id(BFTask *task) { + result[@"uuid"] = task.result; + return nil; + }]; + [self.tasks addObject:uuidTask]; + } + return result; + } +} + +- (BFTask *)encodeFinished { + return [[BFTask taskForCompletionOfAllTasks:self.tasks] continueWithBlock:^id(BFTask *ignore) { + @synchronized (self.tasksLock) { + // TODO (hallucinogen) It might be better to return an aggregate error here + for (BFTask *task in self.tasks) { + if (task.cancelled || task.error != nil) { + return task; + } + } + [self.tasks removeAllObjects]; + return [BFTask taskWithResult:nil]; + } + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFErrorUtilities.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFErrorUtilities.h new file mode 100644 index 0000000..a5656f6 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFErrorUtilities.h @@ -0,0 +1,45 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PFErrorUtilities : NSObject + +/*! + Construct an error object from a code and a message. + + @description Note that this logs all errors given to it. + You should use `errorWithCode:message:shouldLog:` to explicitly control whether it logs. + + @param code Parse Error Code + @param message Error description + + @return Instance of `NSError` or `nil`. + */ ++ (nullable NSError *)errorWithCode:(NSInteger)code message:(NSString *)message; ++ (nullable NSError *)errorWithCode:(NSInteger)code message:(NSString *)message shouldLog:(BOOL)shouldLog; + +/*! + Construct an error object from a result dictionary the API returned. + + @description Note that this logs all errors given to it. + You should use `errorFromResult:shouldLog:` to explicitly control whether it logs. + + @param result Network command result. + + @return Instance of `NSError` or `nil`. + */ ++ (nullable NSError *)errorFromResult:(NSDictionary *)result; ++ (nullable NSError *)errorFromResult:(NSDictionary *)result shouldLog:(BOOL)shouldLog; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFErrorUtilities.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFErrorUtilities.m new file mode 100644 index 0000000..a3f060d --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFErrorUtilities.m @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFErrorUtilities.h" + +#import "PFConstants.h" +#import "PFLogging.h" + +@implementation PFErrorUtilities + ++ (NSError *)errorWithCode:(NSInteger)code message:(NSString *)message { + return [self errorWithCode:code message:message shouldLog:YES]; +} + ++ (NSError *)errorWithCode:(NSInteger)code message:(NSString *)message shouldLog:(BOOL)shouldLog { + NSDictionary *result = @{ @"code" : @(code), + @"error" : message }; + return [self errorFromResult:result shouldLog:shouldLog]; +} + ++ (NSError *)errorFromResult:(NSDictionary *)result { + return [self errorFromResult:result shouldLog:YES]; +} + ++ (NSError *)errorFromResult:(NSDictionary *)result shouldLog:(BOOL)shouldLog { + NSInteger errorCode = [[result objectForKey:@"code"] integerValue]; + + NSString *errorExplanation = [result objectForKey:@"error"]; + + if (shouldLog) { + PFLogError(PFLoggingTagCommon, + @"%@ (Code: %ld, Version: %@)", errorExplanation, (long)errorCode, PARSE_VERSION); + } + + NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:result]; + if (errorExplanation) { + userInfo[NSLocalizedDescriptionKey] = errorExplanation; + } + return [NSError errorWithDomain:PFParseErrorDomain code:errorCode userInfo:userInfo]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyPin.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyPin.h new file mode 100644 index 0000000..de6e754 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyPin.h @@ -0,0 +1,76 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFObject.h" +#import "PFSubclassing.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@protocol PFNetworkCommand; + +extern NSString *const PFEventuallyPinPinName; + +// Cache policies +typedef NS_ENUM(NSUInteger, PFEventuallyPinType) { + PFEventuallyPinTypeSave = 1, + PFEventuallyPinTypeDelete, + PFEventuallyPinTypeCommand +}; + +/*! + PFEventuallyPin represents PFCommand that's save locally so that it can be executed eventually. + + Properties of PFEventuallyPin: + - time + Used for sort order when querying for all EventuallyPins. + - type + PFEventuallyPinTypeSave or PFEventuallyPinTypeDelete. + - object + The object the operation should notify when complete. + - operationSetUUID + The operationSet to be completed. + - sessionToken + The user that instantiated the operation. + */ +@interface PFEventuallyPin : PFObject + +@property (nonatomic, copy, readonly) NSString *uuid; + +@property (nonatomic, assign, readonly) PFEventuallyPinType type; + +@property (nonatomic, strong, readonly) PFObject *object; + +@property (nonatomic, copy, readonly) NSString *operationSetUUID; + +@property (nonatomic, copy, readonly) NSString *sessionToken; + +@property (nonatomic, strong, readonly) id command; + +///-------------------------------------- +#pragma mark - Eventually Pin +///-------------------------------------- + +/*! + Wrap given PFObject and PFCommand in a PFEventuallyPin with auto-generated UUID. + */ ++ (BFTask *)pinEventually:(PFObject *)object forCommand:(id)command; + +/*! + Wrap given PFObject and PFCommand in a PFEventuallyPin with given UUID. + */ ++ (BFTask *)pinEventually:(PFObject *)object forCommand:(id)command withUUID:(NSString *)uuid; + ++ (BFTask *)findAllEventuallyPin; + ++ (BFTask *)findAllEventuallyPinWithExcludeUUIDs:(NSArray *)excludeUUIDs; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyPin.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyPin.m new file mode 100644 index 0000000..aa9e0d4 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyPin.m @@ -0,0 +1,188 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFEventuallyPin.h" + +#import + +#import "PFAssert.h" +#import "PFHTTPRequest.h" +#import "PFInternalUtils.h" +#import "PFObject+Subclass.h" +#import "PFObjectPrivate.h" +#import "PFOfflineStore.h" +#import "PFQuery.h" +#import "PFRESTCommand.h" + +NSString *const PFEventuallyPinPinName = @"_eventuallyPin"; + +NSString *const PFEventuallyPinKeyUUID = @"uuid"; +NSString *const PFEventuallyPinKeyTime = @"time"; +NSString *const PFEventuallyPinKeyType = @"type"; +NSString *const PFEventuallyPinKeyObject = @"object"; +NSString *const PFEventuallyPinKeyOperationSetUUID = @"operationSetUUID"; +NSString *const PFEventuallyPinKeySessionToken = @"sessionToken"; +NSString *const PFEventuallyPinKeyCommand = @"command"; + +@implementation PFEventuallyPin + +///-------------------------------------- +#pragma mark - PFSubclassing +///-------------------------------------- + ++ (NSString *)parseClassName { + return @"_EventuallyPin"; +} + +// Validates a class name. We override this to only allow the pin class name. ++ (void)_assertValidInstanceClassName:(NSString *)className { + PFParameterAssert([className isEqualToString:[self parseClassName]], + @"Cannot initialize a PFEventuallyPin with a custom class name."); +} + +- (BOOL)needsDefaultACL { + return NO; +} + +///-------------------------------------- +#pragma mark - Getter +///-------------------------------------- + +- (NSString *)uuid { + return self[PFEventuallyPinKeyUUID]; +} + +- (PFEventuallyPinType)type { + return [self[PFEventuallyPinKeyType] intValue]; +} + +- (PFObject *)object { + return self[PFEventuallyPinKeyObject]; +} + +- (NSString *)operationSetUUID { + return self[PFEventuallyPinKeyOperationSetUUID]; +} + +- (NSString *)sessionToken { + return self[PFEventuallyPinKeySessionToken]; +} + +- (id)command { + NSDictionary *dictionary = self[PFEventuallyPinKeyCommand]; + if ([PFRESTCommand isValidDictionaryRepresentation:dictionary]) { + return [PFRESTCommand commandFromDictionaryRepresentation:dictionary]; + } + return nil; +} + +///-------------------------------------- +#pragma mark - Eventually Pin +///-------------------------------------- + ++ (BFTask *)pinEventually:(PFObject *)object forCommand:(id)command { + return [self pinEventually:object forCommand:command withUUID:[[NSUUID UUID] UUIDString]]; +} + ++ (BFTask *)pinEventually:(PFObject *)object forCommand:(id)command withUUID:(NSString *)uuid { + PFEventuallyPinType type = [self _pinTypeForCommand:command]; + NSDictionary *commandDictionary = (type == PFEventuallyPinTypeCommand ? [command dictionaryRepresentation] : nil); + return [self _pinEventually:object + type:type + uuid:uuid + operationSetUUID:command.operationSetUUID + sessionToken:command.sessionToken + commandDictionary:commandDictionary]; +} + ++ (BFTask *)findAllEventuallyPin { + return [self findAllEventuallyPinWithExcludeUUIDs:nil]; +} + ++ (BFTask *)findAllEventuallyPinWithExcludeUUIDs:(NSArray *)excludeUUIDs { + PFQuery *query = [PFQuery queryWithClassName:self.parseClassName]; + [query fromPinWithName:PFEventuallyPinPinName]; + [query orderByAscending:PFEventuallyPinKeyTime]; + + if (excludeUUIDs != nil) { + [query whereKey:PFEventuallyPinKeyUUID notContainedIn:excludeUUIDs]; + } + + return [[query findObjectsInBackground] continueWithBlock:^id(BFTask *task) { + NSArray *pins = task.result; + NSMutableArray *fetchTasks = [NSMutableArray array]; + + for (PFEventuallyPin *pin in pins) { + PFObject *object = pin.object; + if (object != nil) { + [fetchTasks addObject:[object fetchFromLocalDatastoreInBackground]]; + } + } + + return [[BFTask taskForCompletionOfAllTasks:fetchTasks] continueWithBlock:^id(BFTask *task) { + return [BFTask taskWithResult:pins]; + }]; + }]; +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + ++ (BFTask *)_pinEventually:(PFObject *)object + type:(PFEventuallyPinType)type + uuid:(NSString *)uuid + operationSetUUID:(NSString *)operationSetUUID + sessionToken:(NSString *)sessionToken + commandDictionary:(NSDictionary *)commandDictionary { + PFEventuallyPin *pin = [[PFEventuallyPin alloc] init]; + pin[PFEventuallyPinKeyUUID] = uuid; + pin[PFEventuallyPinKeyTime] = [NSDate date]; + pin[PFEventuallyPinKeyType] = @(type); + if (object != nil) { + pin[PFEventuallyPinKeyObject] = object; + } + if (operationSetUUID != nil) { + pin[PFEventuallyPinKeyOperationSetUUID] = operationSetUUID; + } + if (sessionToken != nil) { + pin[PFEventuallyPinKeySessionToken] = sessionToken; + } + if (commandDictionary != nil) { + pin[PFEventuallyPinKeyCommand] = commandDictionary; + } + + // NOTE: This is needed otherwise ARC releases the pins before we have a chance to persist the new ones to disk, + // Which means we'd lose any columns on objects in eventually pins not currently in memory. + __block NSArray *existingPins = nil; + return [[[self findAllEventuallyPin] continueWithSuccessBlock:^id(BFTask *task) { + existingPins = task.result; + return [pin pinInBackgroundWithName:PFEventuallyPinPinName]; + }] continueWithSuccessBlock:^id(BFTask *task) { + existingPins = nil; + return pin; + }]; +} + ++ (PFEventuallyPinType)_pinTypeForCommand:(id)command { + PFEventuallyPinType type = PFEventuallyPinTypeCommand; + NSString *path = [(PFRESTCommand *)command httpPath]; + NSString *method = [(PFRESTCommand *)command httpMethod]; + if ([path hasPrefix:@"classes"]) { + if ([method isEqualToString:PFHTTPRequestMethodPOST] || + [method isEqualToString:PFHTTPRequestMethodPUT]) { + type = PFEventuallyPinTypeSave; + } else if ([method isEqualToString:PFHTTPRequestMethodDELETE]) { + type = PFEventuallyPinTypeDelete; + } + } + return type; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyQueue.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyQueue.h new file mode 100644 index 0000000..0ac4ea1 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyQueue.h @@ -0,0 +1,94 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFMacros.h" +#import "PFNetworkCommand.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFEventuallyPin; +@class PFEventuallyQueueTestHelper; +@class PFObject; +@protocol PFCommandRunning; + +extern NSUInteger const PFEventuallyQueueDefaultMaxAttemptsCount; +extern NSTimeInterval const PFEventuallyQueueDefaultTimeoutRetryInterval; + +@interface PFEventuallyQueue : NSObject + +@property (nonatomic, strong, readonly) id commandRunner; + +@property (nonatomic, assign, readonly) NSUInteger maxAttemptsCount; +@property (nonatomic, assign, readonly) NSTimeInterval retryInterval; + +@property (nonatomic, assign, readonly) NSUInteger commandCount; + +/*! + Controls whether the queue should monitor network reachability and pause itself when there is no connection. + Default: `YES`. + */ +@property (atomic, assign, readonly) BOOL monitorsReachability PF_WATCH_UNAVAILABLE; +@property (nonatomic, assign, readonly, getter=isConnected) BOOL connected; + +// Gets notifications of various events happening in the command cache, so that tests can be synchronized. +@property (nonatomic, strong, readonly) PFEventuallyQueueTestHelper *testHelper; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithCommandRunner:(id)commandRunner + maxAttemptsCount:(NSUInteger)attemptsCount + retryInterval:(NSTimeInterval)retryInterval NS_DESIGNATED_INITIALIZER; + +///-------------------------------------- +/// @name Running Commands +///-------------------------------------- + +- (BFTask *)enqueueCommandInBackground:(id)command; +- (BFTask *)enqueueCommandInBackground:(id)command withObject:(PFObject *)object; + +///-------------------------------------- +/// @name Controlling Queue +///-------------------------------------- + +- (void)start NS_REQUIRES_SUPER; +- (void)resume NS_REQUIRES_SUPER; +- (void)pause NS_REQUIRES_SUPER; + +- (void)removeAllCommands NS_REQUIRES_SUPER; + +@end + +typedef enum { + PFEventuallyQueueEventCommandEnqueued, // A command was placed into the queue. + PFEventuallyQueueEventCommandNotEnqueued, // A command could not be placed into the queue. + + PFEventuallyQueueEventCommandSucceded, // A command has successfully running on the server. + PFEventuallyQueueEventCommandFailed, // A command has failed on the server. + + PFEventuallyQueueEventObjectUpdated, // An object's data was updated after a command completed. + PFEventuallyQueueEventObjectRemoved, // An object was removed because it was deleted before creation. + + PFEventuallyQueueEventCount // The total number of items in this enum. +} PFEventuallyQueueTestHelperEvent; + +@interface PFEventuallyQueueTestHelper : NSObject { + dispatch_semaphore_t events[PFEventuallyQueueEventCount]; +} + +- (void)clear; +- (void)notify:(PFEventuallyQueueTestHelperEvent)event; +- (BOOL)waitFor:(PFEventuallyQueueTestHelperEvent)event; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyQueue.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyQueue.m new file mode 100644 index 0000000..80e025d --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyQueue.m @@ -0,0 +1,503 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFEventuallyQueue.h" +#import "PFEventuallyQueue_Private.h" + +#import +#import + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFCommandRunning.h" +#import "PFErrorUtilities.h" +#import "PFLogging.h" +#import "PFMacros.h" +#import "PFRESTCommand.h" +#import "PFReachability.h" +#import "PFTaskQueue.h" + +NSUInteger const PFEventuallyQueueDefaultMaxAttemptsCount = 5; +NSTimeInterval const PFEventuallyQueueDefaultTimeoutRetryInterval = 600.0f; + +@interface PFEventuallyQueue () +#if !TARGET_OS_WATCH + +#endif + +@property (atomic, assign, readwrite) BOOL monitorsReachability; +@property (atomic, assign, getter=isRunning) BOOL running; + +@end + +@implementation PFEventuallyQueue + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithCommandRunner:(id)commandRunner + maxAttemptsCount:(NSUInteger)attemptsCount + retryInterval:(NSTimeInterval)retryInterval { + self = [super init]; + if (!self) return nil; + + _commandRunner = commandRunner; + _maxAttemptsCount = attemptsCount; + _retryInterval = retryInterval; + + // Set up all the queues + NSString *queueBaseLabel = [NSString stringWithFormat:@"com.parse.%@", NSStringFromClass([self class])]; + + _synchronizationQueue = dispatch_queue_create([[NSString stringWithFormat:@"%@.synchronization", + queueBaseLabel] UTF8String], + DISPATCH_QUEUE_SERIAL); + PFMarkDispatchQueue(_synchronizationQueue); + _synchronizationExecutor = [BFExecutor executorWithDispatchQueue:_synchronizationQueue]; + + _processingQueue = dispatch_queue_create([[NSString stringWithFormat:@"%@.processing", + queueBaseLabel] UTF8String], + DISPATCH_QUEUE_SERIAL); + PFMarkDispatchQueue(_processingQueue); + + _processingQueueSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_DATA_ADD, 0, 0, _processingQueue); + + _commandEnqueueTaskQueue = [[PFTaskQueue alloc] init]; + + _taskCompletionSources = [NSMutableDictionary dictionary]; + _testHelper = [[PFEventuallyQueueTestHelper alloc] init]; + + [self _startMonitoringNetworkReachability]; + + return self; +} + +- (void)dealloc { + [self _stopMonitoringNetworkReachability]; +} + +///-------------------------------------- +#pragma mark - Enqueueing Commands +///-------------------------------------- + +- (BFTask *)enqueueCommandInBackground:(id)command { + return [self enqueueCommandInBackground:command withObject:nil]; +} + +- (BFTask *)enqueueCommandInBackground:(id)command withObject:(PFObject *)object { + PFParameterAssert(command, @"Cannot enqueue nil command."); + + BFTaskCompletionSource *taskCompletionSource = [BFTaskCompletionSource taskCompletionSource]; + + @weakify(self); + [_commandEnqueueTaskQueue enqueue:^BFTask *(BFTask *toAwait) { + return [toAwait continueAsyncWithBlock:^id(BFTask *task) { + @strongify(self); + + NSString *identifier = [self _newIdentifierForCommand:command]; + return [[[self _enqueueCommandInBackground:command + object:object + identifier:identifier] continueWithBlock:^id(BFTask *task) { + if (task.error || task.exception || task.cancelled) { + [self.testHelper notify:PFEventuallyQueueEventCommandNotEnqueued]; + if (task.error) { + taskCompletionSource.error = task.error; + } else if (task.exception) { + taskCompletionSource.exception = task.exception; + } else if (task.cancelled) { + [taskCompletionSource cancel]; + } + } else { + [self.testHelper notify:PFEventuallyQueueEventCommandEnqueued]; + } + + return task; + }] continueWithExecutor:_synchronizationExecutor withSuccessBlock:^id(BFTask *task) { + [self _didEnqueueCommand:command withIdentifier:identifier taskCompletionSource:taskCompletionSource]; + return nil; + }]; + }]; + }]; + + return taskCompletionSource.task; +} + +- (BFTask *)_enqueueCommandInBackground:(id)command + object:(PFObject *)object + identifier:(NSString *)identifier { + // This enforces implementing this method in subclasses + [self doesNotRecognizeSelector:_cmd]; + return nil; +} + +- (void)_didEnqueueCommand:(id)command + withIdentifier:(NSString *)identifier + taskCompletionSource:(BFTaskCompletionSource *)taskCompletionSource { + PFAssertIsOnDispatchQueue(_synchronizationQueue); + + _taskCompletionSources[identifier] = taskCompletionSource; + dispatch_source_merge_data(_processingQueueSource, 1); + + if (_retryingSemaphore) { + dispatch_semaphore_signal(_retryingSemaphore); + } +} + +///-------------------------------------- +#pragma mark - Pending Commands +///-------------------------------------- + +- (NSArray *)_pendingCommandIdentifiers { + return nil; +} + +- (id)_commandWithIdentifier:(NSString *)identifier error:(NSError **)error { + return nil; +} + +- (NSString *)_newIdentifierForCommand:(id)command { + return nil; +} + +- (NSUInteger)commandCount { + return [[self _pendingCommandIdentifiers] count]; +} + +///-------------------------------------- +#pragma mark - Controlling Queue +///-------------------------------------- + +- (void)start { + dispatch_source_set_event_handler(_processingQueueSource, ^{ + [self _runCommands]; + }); + [self resume]; +} + +- (void)resume { + if (self.running) { + return; + } + self.running = YES; + dispatch_resume(_processingQueueSource); + dispatch_source_merge_data(_processingQueueSource, 1); +} + +- (void)pause { + if (!self.running) { + return; + } + self.running = NO; + dispatch_suspend(_processingQueueSource); +} + +- (void)removeAllCommands { + dispatch_sync(_synchronizationQueue, ^{ + [_taskCompletionSources removeAllObjects]; + }); +} + +///-------------------------------------- +#pragma mark - Running Commands +///-------------------------------------- + +- (void)_runCommands { + PFAssertIsOnDispatchQueue(_processingQueue); + + [self _runCommandsWithRetriesCount:self.maxAttemptsCount]; +} + +- (void)_runCommandsWithRetriesCount:(NSUInteger)retriesCount { + PFAssertIsOnDispatchQueue(_processingQueue); + + if (!self.running || !self.connected) { + return; + } + + // Expect sorted result from _pendingCommandIdentifiers + NSArray *commandIdentifiers = [self _pendingCommandIdentifiers]; + BOOL shouldRetry = NO; + for (NSString *identifier in commandIdentifiers) { + NSError *error = nil; + id command = [self _commandWithIdentifier:identifier error:&error]; + if (!command || error) { + if (!error) { + error = [PFErrorUtilities errorWithCode:kPFErrorInternalServer + message:@"Failed to dequeue an eventually command." + shouldLog:NO]; + } + BFTask *task = [BFTask taskWithError:error]; + [self _didFinishRunningCommand:command withIdentifier:identifier resultTask:task]; + continue; + } + + __block BFTaskCompletionSource *taskCompletionSource = nil; + dispatch_sync(_synchronizationQueue, ^{ + taskCompletionSource = _taskCompletionSources[identifier]; + }); + + BFTask *resultTask = nil; + PFCommandResult *result = nil; + @try { + resultTask = [self _runCommand:command withIdentifier:identifier]; + result = [resultTask waitForResult:&error]; + } + @catch (NSException *exception) { + error = [NSError errorWithDomain:PFParseErrorDomain + code:kPFErrorInvalidPointer + userInfo:@{ @"message" : @"Failed to run an eventually command.", + @"exception" : exception }]; + resultTask = [BFTask taskWithError:error]; + } + + if (error) { + BOOL permanent = (![error.userInfo[@"temporary"] boolValue] && + ([[error domain] isEqualToString:PFParseErrorDomain] || + [error code] != kPFErrorConnectionFailed)); + + if (!permanent) { + PFLogWarning(PFLoggingTagCommon, + @"Attempt at runEventually command timed out. Waiting %f seconds. %d retries remaining.", + self.retryInterval, + (int)retriesCount); + + __block dispatch_semaphore_t semaphore = NULL; + dispatch_sync(_synchronizationQueue, ^{ + _retryingSemaphore = dispatch_semaphore_create(0); + semaphore = _retryingSemaphore; + }); + + dispatch_time_t timeoutTime = dispatch_time(DISPATCH_TIME_NOW, + (int64_t)(self.retryInterval * NSEC_PER_SEC)); + + long waitResult = dispatch_semaphore_wait(semaphore, timeoutTime); + dispatch_sync(_synchronizationQueue, ^{ + _retryingSemaphore = NULL; + }); + + if (waitResult == 0) { + // We haven't waited long enough, but if we lost the connection, or should stop, just quit. + return; + } + + // We need to go out of the loop. + if (retriesCount > 0) { + shouldRetry = YES; + break; + } + } + + PFLogError(PFLoggingTagCommon, @"Failed to run command eventually with error: %@", error); + } + + // Post processing shouldn't make the queue retry the command. + resultTask = [self _didFinishRunningCommand:command withIdentifier:identifier resultTask:resultTask]; + [resultTask waitForResult:nil]; + + // Notify anyone waiting that the operation is completed. + if (resultTask.error) { + taskCompletionSource.error = resultTask.error; + } else if (resultTask.exception) { + taskCompletionSource.exception = resultTask.exception; + } else if (resultTask.cancelled) { + [taskCompletionSource cancel]; + } else { + taskCompletionSource.result = resultTask.result; + } + } + + // Retry here so that we're in cleaner state. + if (shouldRetry) { + return [self _runCommandsWithRetriesCount:(retriesCount - 1)]; + } +} + +- (BFTask *)_runCommand:(id)command withIdentifier:(NSString *)identifier { + if ([command isKindOfClass:[PFRESTCommand class]]) { + return [self.commandRunner runCommandAsync:(PFRESTCommand *)command withOptions:0]; + } + + NSString *reason = [NSString stringWithFormat:@"Can't find a compatible runner for command %@.", command]; + NSException *exception = [NSException exceptionWithName:NSInternalInconsistencyException + reason:reason + userInfo:nil]; + return [BFTask taskWithException:exception]; +} + +- (BFTask *)_didFinishRunningCommand:(id)command + withIdentifier:(NSString *)identifier + resultTask:(BFTask *)resultTask { + PFConsistencyAssert(resultTask.completed, @"Task should be completed."); + + dispatch_sync(_synchronizationQueue, ^{ + [_taskCompletionSources removeObjectForKey:identifier]; + }); + + if (resultTask.exception || resultTask.error || resultTask.cancelled) { + [self.testHelper notify:PFEventuallyQueueEventCommandFailed]; + } else { + [self.testHelper notify:PFEventuallyQueueEventCommandSucceded]; + } + + return resultTask; +} + +- (BFTask *)_waitForOperationSet:(PFOperationSet *)operationSet + eventuallyPin:(PFEventuallyPin *)eventuallyPin { + return [BFTask taskWithResult:nil]; +} + +///-------------------------------------- +#pragma mark - Reachability +///-------------------------------------- + +- (void)_startMonitoringNetworkReachability { +#if TARGET_OS_WATCH + self.connected = YES; +#else + if (self.monitorsReachability) { + return; + } + self.monitorsReachability = YES; + + [[PFReachability sharedParseReachability] addListener:self]; + + // Set the initial connected status + self.connected = ([PFReachability sharedParseReachability].currentState != PFReachabilityStateNotReachable); +#endif +} + +- (void)_stopMonitoringNetworkReachability { +#if !TARGET_OS_WATCH + if (!self.monitorsReachability) { + return; + } + + [[PFReachability sharedParseReachability] removeListener:self]; + + self.monitorsReachability = NO; + self.connected = YES; +#endif +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +/*! Manually sets the network connection status. */ +- (void)setConnected:(BOOL)connected { + BFTaskCompletionSource *barrier = [BFTaskCompletionSource taskCompletionSource]; + dispatch_async(_processingQueue, ^{ + dispatch_sync(_synchronizationQueue, ^{ + if (self.connected != connected) { + _connected = connected; + if (connected) { + dispatch_source_merge_data(_processingQueueSource, 1); + } + } + }); + barrier.result = nil; + }); + if (connected) { + dispatch_async(_synchronizationQueue, ^{ + if (_retryingSemaphore) { + dispatch_semaphore_signal(_retryingSemaphore); + } + }); + } + [barrier.task waitForResult:nil]; +} + +///-------------------------------------- +#pragma mark - Test Helper Method +///-------------------------------------- + +/*! Makes this command cache forget all the state it keeps during a single run of the app. */ +- (void)_simulateReboot { + // Make sure there is no command pending enqueuing + [[[[_commandEnqueueTaskQueue enqueue:^BFTask *(BFTask *toAwait) { + return toAwait; + }] continueWithExecutor:_synchronizationExecutor withBlock:^id(BFTask *task) { + // Remove all state task completion sources + [_taskCompletionSources removeAllObjects]; + return nil; + }] continueWithExecutor:[BFExecutor executorWithDispatchQueue:_processingQueue] withBlock:^id(BFTask *task) { + // Let all operations in the queue run at least once + return nil; + }] waitUntilFinished]; +} + +/*! Test helper to return how many commands are being retained in memory by the cache. */ +- (int)_commandsInMemory { + return (int)[_taskCompletionSources count]; +} + +/*! Called by PFObject whenever an object has been updated after a saveEventually. */ +- (void)_notifyTestHelperObjectUpdated { + [self.testHelper notify:PFEventuallyQueueEventObjectUpdated]; +} + +- (void)_setMaxAttemptsCount:(NSUInteger)attemptsCount { + _maxAttemptsCount = attemptsCount; +} + +- (void)_setRetryInterval:(NSTimeInterval)retryInterval { + _retryInterval = retryInterval; +} + +#if !TARGET_OS_WATCH + +///-------------------------------------- +#pragma mark - Reachability +///-------------------------------------- + +- (void)reachability:(PFReachability *)reachability didChangeReachabilityState:(PFReachabilityState)state { + if (self.monitorsReachability) { + self.connected = (state != PFReachabilityStateNotReachable); + } +} + +#endif + +@end + +// PFEventuallyQueueTestHelper gets notifications of various events happening in the command cache, +// so that tests can be synchronized. See CommandTests.m for examples of how to use this. + +@implementation PFEventuallyQueueTestHelper + +- (instancetype)init { + self = [super init]; + if (self) { + [self clear]; + } + return self; +} + +- (void)clear { + for (int i = 0; i < PFEventuallyQueueEventCount; ++i) { + events[i] = dispatch_semaphore_create(0); + } +} + +- (void)notify:(PFEventuallyQueueTestHelperEvent)event { + dispatch_semaphore_signal(events[event]); +} + +- (BOOL)waitFor:(PFEventuallyQueueTestHelperEvent)event { + // Wait 1 second for a permit from the semaphore. + return (dispatch_semaphore_wait(events[event], dispatch_time(DISPATCH_TIME_NOW, 10LL * NSEC_PER_SEC)) == 0); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyQueue_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyQueue_Private.h new file mode 100644 index 0000000..3e576f3 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFEventuallyQueue_Private.h @@ -0,0 +1,133 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFEventuallyQueue.h" + +@class BFExecutor; +@class PFEventuallyPin; +@class PFObject; +@class PFOperationSet; +@class PFTaskQueue; + +extern NSUInteger const PFEventuallyQueueDefaultMaxAttemptsCount; +extern NSTimeInterval const PFEventuallyQueueDefaultTimeoutRetryInterval; + +@class BFTaskCompletionSource; + +@interface PFEventuallyQueue () +{ +@protected + BFExecutor *_synchronizationExecutor; + dispatch_queue_t _synchronizationQueue; + +@private + dispatch_queue_t _processingQueue; + dispatch_source_t _processingQueueSource; + + dispatch_semaphore_t _retryingSemaphore; + + NSMutableDictionary *_taskCompletionSources; + + /*! + Task queue that will enqueue command enqueueing task so that we enqueue the command + one at a time. + */ + PFTaskQueue *_commandEnqueueTaskQueue; +} + +@property (nonatomic, assign, readwrite, getter=isConnected) BOOL connected; + +/*! + This method is used to do some work after the command is finished running and + either succeeded or dropped from queue with error/exception. + + @param command Command that was run. + @param identifier Unique identifier of the command + @param resultTask Task that represents the result of running a command. + @returns A continuation task in case the EventuallyQueue need to do something. + Typically this will return back given resultTask. + */ +- (BFTask *)_didFinishRunningCommand:(id)command + withIdentifier:(NSString *)identifier + resultTask:(BFTask *)resultTask; + +///-------------------------------------- +/// @name Reachability +///-------------------------------------- + +- (void)_startMonitoringNetworkReachability; +- (void)_stopMonitoringNetworkReachability; + +///-------------------------------------- +/// @name Test Helper +///-------------------------------------- + +- (void)_setMaxAttemptsCount:(NSUInteger)attemptsCount; + +- (void)_setRetryInterval:(NSTimeInterval)retryInterval; + +- (void)_simulateReboot NS_REQUIRES_SUPER; + +- (int)_commandsInMemory; + +- (void)_notifyTestHelperObjectUpdated; + +@end + +@protocol PFEventuallyQueueSubclass + +///-------------------------------------- +/// @name Pending Commands +///-------------------------------------- + + +/*! + Generates a new identifier for a command so that it can be sorted later by this identifier. + */ +- (NSString *)_newIdentifierForCommand:(id)command; + +/*! + This method is triggered on batch processing of the queue. + It will capture the identifiers and use them to execute commands. + + @returns An array of identifiers of all commands that are pending sorted by the order they're enqueued. + */ +- (NSArray *)_pendingCommandIdentifiers; + +/*! + This method should return a command for a given identifier. + + @param identifier An identifier of a command, that was in array returned by <_pendingCommandIdentifiers> + @param error Pointer to `NSError *` that should be set if the method failed to construct/retrieve a command. + + @returns A command that needs to be run, or `nil` if there was an error. + */ +- (id)_commandWithIdentifier:(NSString *)identifier error:(NSError **)error; + +///-------------------------------------- +/// @name Running Commands +///-------------------------------------- + +/*! + This method serves as a way to do any kind of work to enqueue a command properly. + If the task fails with an error/exception or is cancelled - execution won't start. + + @param command Command that needs to be enqueued + @param object The object on which the command is run against. + @param identifier Unique identifier used to represent a command. + @returns Task that is resolved when the command is complete enqueueing. + */ +- (BFTask *)_enqueueCommandInBackground:(id)command + object:(PFObject *)object + identifier:(NSString *)identifier; + +- (BFTask *)_waitForOperationSet:(PFOperationSet *)operationSet + eventuallyPin:(PFEventuallyPin *)eventuallyPin; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFFileManager.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFFileManager.h new file mode 100644 index 0000000..91e5700 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFFileManager.h @@ -0,0 +1,77 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFMacros.h" + +@class BFExecutor; +@class BFTask PF_GENERIC(__covariant BFGenericType); + +typedef NS_OPTIONS(uint8_t, PFFileManagerOptions) { + PFFileManagerOptionSkipBackup = 1 << 0, +}; + +@interface PFFileManager : NSObject + +///-------------------------------------- +/// @name Class +///-------------------------------------- + ++ (BOOL)isApplicationGroupContainerReachableForGroupIdentifier:(NSString *)applicationGroup; + ++ (BFTask *)createDirectoryIfNeededAsyncAtPath:(NSString *)path; ++ (BFTask *)createDirectoryIfNeededAsyncAtPath:(NSString *)path + withOptions:(PFFileManagerOptions)options + executor:(BFExecutor *)executor; + ++ (BFTask *)writeStringAsync:(NSString *)string toFile:(NSString *)filePath; ++ (BFTask *)writeDataAsync:(NSData *)data toFile:(NSString *)filePath; + ++ (BFTask *)copyItemAsyncAtPath:(NSString *)fromPath toPath:(NSString *)toPath; ++ (BFTask *)moveItemAsyncAtPath:(NSString *)fromPath toPath:(NSString *)toPath; + ++ (BFTask *)moveContentsOfDirectoryAsyncAtPath:(NSString *)fromPath + toDirectoryAtPath:(NSString *)toPath + executor:(BFExecutor *)executor; + ++ (BFTask *)removeItemAtPathAsync:(NSString *)path; ++ (BFTask *)removeItemAtPathAsync:(NSString *)path withFileLock:(BOOL)useFileLock; ++ (BFTask *)removeDirectoryContentsAsyncAtPath:(NSString *)path; + +///-------------------------------------- +/// @name Instance +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithApplicationIdentifier:(NSString *)applicationIdentifier + applicationGroupIdentifier:(NSString *)applicationGroupIdentifier NS_DESIGNATED_INITIALIZER; + +/*! + Returns /Library/Private Documents/Parse + for non-user generated data that shouldn't be deleted by iOS, such as "offline data". + + See https://developer.apple.com/library/ios/#qa/qa1699/_index.html + */ +- (NSString *)parseDefaultDataDirectoryPath; +- (NSString *)parseLocalSandboxDataDirectoryPath; +- (NSString *)parseDataDirectoryPath_DEPRECATED; + +/*! + The path including directories that we save data to for a given filename. + If the file isn't found in the new "Private Documents" location, but is in the old "Documents" location, + moves it and returns the new location. + */ +- (NSString *)parseDataItemPathForPathComponent:(NSString *)pathComponent; + +- (NSString *)parseCacheItemPathForPathComponent:(NSString *)component; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFFileManager.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFFileManager.m new file mode 100644 index 0000000..a48a6c8 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFFileManager.m @@ -0,0 +1,367 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFFileManager.h" + +#import + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFLogging.h" +#import "PFMultiProcessFileLockController.h" + +static NSString *const _PFFileManagerParseDirectoryName = @"Parse"; + +static NSDictionary *_PFFileManagerDefaultDirectoryFileAttributes() { +#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR + return @{ NSFileProtectionKey : NSFileProtectionCompleteUntilFirstUserAuthentication }; +#else + return nil; +#endif +} + +static NSDataWritingOptions _PFFileManagerDefaultDataWritingOptions() { + NSDataWritingOptions options = NSDataWritingAtomic; +#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR + options |= NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication; +#endif + return options; +} + +@interface PFFileManager () + +@property (nonatomic, copy) NSString *applicationIdentifier; +@property (nonatomic, copy) NSString *applicationGroupIdentifier; + +@end + +@implementation PFFileManager + +///-------------------------------------- +#pragma mark - Class +///-------------------------------------- + ++ (BOOL)isApplicationGroupContainerReachableForGroupIdentifier:(NSString *)applicationGroup { + return ([[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:applicationGroup] != nil); +} + ++ (BFTask *)writeStringAsync:(NSString *)string toFile:(NSString *)filePath { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; + return [self writeDataAsync:data toFile:filePath]; + }]; +} + ++ (BFTask *)writeDataAsync:(NSData *)data toFile:(NSString *)filePath { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + NSError *error = nil; + [data writeToFile:filePath + options:_PFFileManagerDefaultDataWritingOptions() + error:&error]; + if (error) { + return [BFTask taskWithError:error]; + } + return nil; + }]; +} + ++ (BFTask *)createDirectoryIfNeededAsyncAtPath:(NSString *)path { + return [self createDirectoryIfNeededAsyncAtPath:path + withOptions:PFFileManagerOptionSkipBackup + executor:[BFExecutor defaultPriorityBackgroundExecutor]]; +} + ++ (BFTask *)createDirectoryIfNeededAsyncAtPath:(NSString *)path + withOptions:(PFFileManagerOptions)options + executor:(BFExecutor *)executor { + return [BFTask taskFromExecutor:executor withBlock:^id{ + if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { + NSError *error = nil; + [[NSFileManager defaultManager] createDirectoryAtPath:path + withIntermediateDirectories:YES + attributes:_PFFileManagerDefaultDirectoryFileAttributes() + error:&error]; + if (error) { + return [BFTask taskWithError:error]; + } + } + +#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR + if (options & PFFileManagerOptionSkipBackup) { + [self _skipBackupOnPath:path]; + } +#endif + return nil; + }]; +} + ++ (BFTask *)copyItemAsyncAtPath:(NSString *)fromPath toPath:(NSString *)toPath { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + NSError *error = nil; + [[NSFileManager defaultManager] copyItemAtPath:fromPath toPath:toPath error:&error]; + if (error) { + return [BFTask taskWithError:error]; + } + return nil; + }]; +} + ++ (BFTask *)moveItemAsyncAtPath:(NSString *)fromPath toPath:(NSString *)toPath { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + NSError *error = nil; + [[NSFileManager defaultManager] moveItemAtPath:fromPath toPath:toPath error:&error]; + if (error) { + return [BFTask taskWithError:error]; + } + return nil; + }]; +} + ++ (BFTask *)moveContentsOfDirectoryAsyncAtPath:(NSString *)fromPath + toDirectoryAtPath:(NSString *)toPath + executor:(BFExecutor *)executor { + if ([fromPath isEqualToString:toPath]) { + return [BFTask taskWithResult:nil]; + } + + return [[[self createDirectoryIfNeededAsyncAtPath:toPath + withOptions:PFFileManagerOptionSkipBackup + executor:executor] continueWithSuccessBlock:^id(BFTask *task) { + NSError *error = nil; + NSArray *contents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:fromPath + error:&error]; + if (error) { + return [BFTask taskWithError:error]; + } + return contents; + }] continueWithSuccessBlock:^id(BFTask *task) { + NSArray *contents = task.result; + if ([contents count] == 0) { + return nil; + } + + NSMutableArray *tasks = [NSMutableArray arrayWithCapacity:[contents count]]; + for (NSString *path in contents) { + BFTask *task = [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + NSError *error = nil; + NSString *fromFilePath = [fromPath stringByAppendingPathComponent:path]; + NSString *toFilePath = [toPath stringByAppendingPathComponent:path]; + [[NSFileManager defaultManager] moveItemAtPath:fromFilePath + toPath:toFilePath + error:&error]; + if (error) { + return [BFTask taskWithError:error]; + } + return nil; + }]; + [tasks addObject:task]; + } + return [BFTask taskForCompletionOfAllTasks:tasks]; + }]; +} + ++ (BFTask *)removeDirectoryContentsAsyncAtPath:(NSString *)path { + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + [[PFMultiProcessFileLockController sharedController] beginLockedContentAccessForFileAtPath:path]; + + NSFileManager *fileManager = [NSFileManager defaultManager]; + + NSError *error = nil; + NSArray *fileNames = [fileManager contentsOfDirectoryAtPath:path error:&error]; + if (error) { + PFLogError(PFLoggingTagCommon, @"Failed to list directory: %@", path); + return [BFTask taskWithError:error]; + } + + NSMutableArray *fileTasks = [NSMutableArray array]; + for (NSString *fileName in fileNames) { + NSString *filePath = [path stringByAppendingPathComponent:fileName]; + BFTask *fileTask = [[self removeItemAtPathAsync:filePath withFileLock:NO] continueWithBlock:^id(BFTask *task) { + if (task.faulted) { + PFLogError(PFLoggingTagCommon, @"Failed to delete file: %@ with error: %@", filePath, task.error); + } + return task; + }]; + [fileTasks addObject:fileTask]; + } + return [BFTask taskForCompletionOfAllTasks:fileTasks]; + }] continueWithBlock:^id(BFTask *task) { + [[PFMultiProcessFileLockController sharedController] endLockedContentAccessForFileAtPath:path]; + return task; + }]; +} + ++ (BFTask *)removeItemAtPathAsync:(NSString *)path { + return [self removeItemAtPathAsync:path withFileLock:YES]; +} + ++ (BFTask *)removeItemAtPathAsync:(NSString *)path withFileLock:(BOOL)useFileLock { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + if (useFileLock) { + [[PFMultiProcessFileLockController sharedController] beginLockedContentAccessForFileAtPath:path]; + } + NSFileManager *fileManager = [NSFileManager defaultManager]; + if ([fileManager fileExistsAtPath:path]) { + NSError *error = nil; + [[NSFileManager defaultManager] removeItemAtPath:path error:&error]; + if (error) { + if (useFileLock) { + [[PFMultiProcessFileLockController sharedController] endLockedContentAccessForFileAtPath:path]; + } + return [BFTask taskWithError:error]; + } + } + if (useFileLock) { + [[PFMultiProcessFileLockController sharedController] endLockedContentAccessForFileAtPath:path]; + } + return nil; + }]; +} + +///-------------------------------------- +#pragma mark - Instance +///-------------------------------------- + +#pragma mark Init + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithApplicationIdentifier:(NSString *)applicationIdentifier + applicationGroupIdentifier:(NSString *)applicationGroupIdentifier { + self = [super init]; + if (!self) return nil; + + _applicationIdentifier = [applicationIdentifier copy]; + _applicationGroupIdentifier = [applicationGroupIdentifier copy]; + + return self; +} + +#pragma mark Public + +- (NSString *)parseDefaultDataDirectoryPath { + // NSHomeDirectory: Returns the path to either the user's or application's + // home directory, depending on the platform. Sandboxed by default on iOS. +#if PARSE_IOS_ONLY + NSString *directoryPath = nil; + if (self.applicationGroupIdentifier) { + NSURL *containerPath = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:self.applicationGroupIdentifier]; + directoryPath = [[containerPath path] stringByAppendingPathComponent:_PFFileManagerParseDirectoryName]; + directoryPath = [directoryPath stringByAppendingPathComponent:self.applicationIdentifier]; + } else { + return [self parseLocalSandboxDataDirectoryPath]; + } +#else + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); + NSString *directoryPath = [paths firstObject]; + directoryPath = [directoryPath stringByAppendingPathComponent:_PFFileManagerParseDirectoryName]; + directoryPath = [directoryPath stringByAppendingPathComponent:self.applicationIdentifier]; +#endif + + BFTask *createDirectoryTask = [[self class] createDirectoryIfNeededAsyncAtPath:directoryPath + withOptions:PFFileManagerOptionSkipBackup + executor:[BFExecutor immediateExecutor]]; + [createDirectoryTask waitForResult:nil withMainThreadWarning:NO]; + + return directoryPath; +} + +- (NSString *)parseLocalSandboxDataDirectoryPath { +#if TARGET_OS_IPHONE + NSString *library = [NSHomeDirectory() stringByAppendingPathComponent:@"Library"]; + NSString *privateDocuments = [library stringByAppendingPathComponent:@"Private Documents"]; + NSString *directoryPath = [privateDocuments stringByAppendingPathComponent:_PFFileManagerParseDirectoryName]; + BFTask *createDirectoryTask = [[self class] createDirectoryIfNeededAsyncAtPath:directoryPath + withOptions:PFFileManagerOptionSkipBackup + executor:[BFExecutor immediateExecutor]]; + [createDirectoryTask waitForResult:nil withMainThreadWarning:NO]; + + return directoryPath; +#else + return [self parseDefaultDataDirectoryPath]; +#endif +} + +- (NSString *)parseDataDirectoryPath_DEPRECATED { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder + NSString *parseDirPath = [documentsDirectory stringByAppendingPathComponent:_PFFileManagerParseDirectoryName]; + + // If this old directory is still on disk, but empty, delete it. + if ([[NSFileManager defaultManager] fileExistsAtPath:parseDirPath]) { + NSError *error = nil; + NSArray *contents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:parseDirPath error:&error]; + if (error == nil && [contents count] == 0) { + [[NSFileManager defaultManager] removeItemAtPath:parseDirPath error:nil]; + } + } + + return parseDirPath; +} + +- (NSString *)parseDataItemPathForPathComponent:(NSString *)pathComponent { + NSFileManager *fileManager = [NSFileManager defaultManager]; + + NSString *currentLocation = [[self parseDefaultDataDirectoryPath] stringByAppendingPathComponent:pathComponent]; + if (![fileManager fileExistsAtPath:currentLocation]) { + NSString *deprecatedDir = [self parseDataDirectoryPath_DEPRECATED]; + NSString *deprecatedLocation = [deprecatedDir stringByAppendingPathComponent:pathComponent]; + if ([fileManager fileExistsAtPath:deprecatedLocation]) { + [fileManager moveItemAtPath:deprecatedLocation toPath:currentLocation error:nil]; + // If the deprecated dir is still on disk, delete it. + if ([fileManager fileExistsAtPath:deprecatedDir]) { + NSError *error = nil; + NSArray *contents = [fileManager contentsOfDirectoryAtPath:deprecatedDir error:&error]; + if (!error && [contents count] == 0) { + [fileManager removeItemAtPath:deprecatedDir error:nil]; + } + } + } + } + return currentLocation; +} + +- (NSString *)parseCacheItemPathForPathComponent:(NSString *)component { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); + NSString *folderPath = [paths firstObject]; + folderPath = [folderPath stringByAppendingPathComponent:_PFFileManagerParseDirectoryName]; +#if !TARGET_OS_IPHONE + // We append the applicationId in case the OS X application isn't sandboxed, + // to avoid collisions in the generic ~/Library/Caches/Parse/------ dir. + folderPath = [folderPath stringByAppendingPathComponent:self.applicationIdentifier]; +#endif + folderPath = [folderPath stringByAppendingPathComponent:component]; + return [folderPath stringByStandardizingPath]; +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + +// Skips all backups on the provided path. ++ (BOOL)_skipBackupOnPath:(NSString *)path { + if (path == nil) { + return NO; + } + + NSError *error = nil; + + NSURL *url = [NSURL fileURLWithPath:path]; + BOOL success = [url setResourceValue:@YES forKey:NSURLIsExcludedFromBackupKey error:&error]; + if (!success) { + PFLogError(PFLoggingTagCommon, + @"Unable to exclude %@ from backup with error: %@", [url lastPathComponent], error); + } + + return success; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFGeoPointPrivate.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFGeoPointPrivate.h new file mode 100644 index 0000000..7883ef9 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFGeoPointPrivate.h @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +# import + +extern const double EARTH_RADIUS_MILES; +extern const double EARTH_RADIUS_KILOMETERS; + +@class PFGeoPoint; + +@interface PFGeoPoint (Private) + +// Internal commands + +/* + Gets the encoded format for an GeoPoint. + */ +- (NSDictionary *)encodeIntoDictionary; + +/*! + Creates an GeoPoint from its encoded format. + */ ++ (instancetype)geoPointWithDictionary:(NSDictionary *)dictionary; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFHash.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFHash.h new file mode 100644 index 0000000..e97af69 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFHash.h @@ -0,0 +1,21 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +extern NSUInteger PFIntegerPairHash(NSUInteger a, NSUInteger b); + +extern NSUInteger PFDoublePairHash(double a, double b); + +extern NSUInteger PFDoubleHash(double d); + +extern NSUInteger PFLongHash(unsigned long long l); + +extern NSString *PFMD5HashFromData(NSData *data); +extern NSString *PFMD5HashFromString(NSString *string); diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFHash.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFHash.m new file mode 100644 index 0000000..4fb33f8 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFHash.m @@ -0,0 +1,76 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFHash.h" + +#import + +// +// Thank you Thomas Wang for 32/64 bit mix hash +// http://www.concentric.net/~Ttwang/tech/inthash.htm +// +// Above link is now dead, please visit +// http://web.archive.org/web/20121102023700/http://www.concentric.net/~Ttwang/tech/inthash.htm +// + +extern NSUInteger PFIntegerPairHash(NSUInteger a, NSUInteger b) { + return PFLongHash(((unsigned long long)a) << 32 | b); +} + +extern NSUInteger PFDoublePairHash(double a, double b) { + return PFIntegerPairHash(PFDoubleHash(a), PFDoubleHash(b)); +} + +extern NSUInteger PFDoubleHash(double d) { + union { + double key; + uint64_t bits; + } u; + u.key = d; + return PFLongHash(u.bits); +} + +extern NSUInteger PFLongHash(unsigned long long l) { + l = (~l) + (l << 18); // key = (key << 18) - key - 1; + l ^= (l >> 31); + l *= 21; // key = (key + (key << 2)) + (key << 4); + l ^= (l >> 11); + l += (l << 6); + l ^= (l >> 22); + return (NSUInteger)l; +} + +extern NSString *PFMD5HashFromData(NSData *data) { + unsigned char md[CC_MD5_DIGEST_LENGTH]; + + // NOTE: `__block` variables of a struct type seem to be bugged. The compiler emits instructions to read + // from the stack past where they're supposed to exist. This fixes that, by only using a traditional pointer. + CC_MD5_CTX ctx_val = { 0 }; + CC_MD5_CTX *ctx_ptr = &ctx_val; + CC_MD5_Init(ctx_ptr); + [data enumerateByteRangesUsingBlock:^(const void *bytes, NSRange byteRange, BOOL *stop) { + CC_MD5_Update(ctx_ptr , bytes, (CC_LONG)byteRange.length); + }]; + CC_MD5_Final(md, ctx_ptr); + + NSString *string = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", + md[0], md[1], + md[2], md[3], + md[4], md[5], + md[6], md[7], + md[8], md[9], + md[10], md[11], + md[12], md[13], + md[14], md[15]]; + return string; +} + +extern NSString *PFMD5HashFromString(NSString *string) { + return PFMD5HashFromData([string dataUsingEncoding:NSUTF8StringEncoding]); +} diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFInternalUtils.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFInternalUtils.h new file mode 100644 index 0000000..eedf09e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFInternalUtils.h @@ -0,0 +1,76 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFEncoder.h" + +@class PFFileManager; +@class PFKeychainStore; +@class PFNetworkCommand; + +@interface PFInternalUtils : NSObject + ++ (NSString *)parseServerURLString; ++ (void)setParseServer:(NSString *)server; + ++ (NSNumber *)fileSizeOfFileAtPath:(NSString *)filePath error:(NSError **)error; + +/** + Clears system time zone cache, gets the name of the time zone + and caches it. This method is completely thread-safe. + */ ++ (NSString *)currentSystemTimeZoneName; + +/** + * Performs selector on the target, only if the target and selector are non-nil, + * as well as target responds to selector + */ ++ (void)safePerformSelector:(SEL)selector withTarget:(id)target object:(id)object object:(id)anotherObject; + ++ (NSNumber *)addNumber:(NSNumber *)first withNumber:(NSNumber *)second; + +// +// Given an NSDictionary/NSArray/NSNumber/NSString even nested ones +// Generates a cache key that can be used to identify this object ++ (NSString *)cacheKeyForObject:(id)object; + +/**! + * Does a deep traversal of every item in object, calling block on every one. + * @param object The object or array to traverse deeply. + * @param block The block to call for every item. It will be passed the item + * as an argument. If it returns a truthy value, that value will replace the + * item in its parent container. + * @return The result of calling block on the top-level object itself. + **/ ++ (id)traverseObject:(id)object usingBlock:(id (^)(id object))block; + +/*! + This method will split an array into multiple arrays, each with up to maximum components count. + + @param array Array to split. + @param components Number of components that should be used as a max per each subarray. + + @return Array of arrays constructed by splitting the array. + */ ++ (NSArray *)arrayBySplittingArray:(NSArray *)array withMaximumComponentsPerSegment:(NSUInteger)components; + ++ (id)_stringWithFormat:(NSString *)format arguments:(NSArray *)arguments; +@end + +@interface PFJSONCacheItem : NSObject + +@property (nonatomic, copy, readonly) NSString *hashValue; + +- (instancetype)initWithObject:(id)object; ++ (PFJSONCacheItem *)cacheFromObject:(id)object; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFInternalUtils.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFInternalUtils.m new file mode 100644 index 0000000..0b585bb --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFInternalUtils.m @@ -0,0 +1,298 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFInternalUtils.h" + +#include +#include + +#import + +#import "PFACLPrivate.h" +#import "PFAssert.h" +#import "PFDateFormatter.h" +#import "BFTask+Private.h" +#import "PFFieldOperation.h" +#import "PFFile_Private.h" +#import "PFGeoPointPrivate.h" +#import "PFKeyValueCache.h" +#import "PFKeychainStore.h" +#import "PFLogging.h" +#import "PFEncoder.h" +#import "PFObjectPrivate.h" +#import "PFRelationPrivate.h" +#import "PFUserPrivate.h" +#import "Parse.h" +#import "PFFileManager.h" +#import "PFJSONSerialization.h" +#import "PFMultiProcessFileLockController.h" +#import "PFHash.h" + +#if TARGET_OS_IOS +#import "PFProduct.h" +#endif + +static NSString *parseServer_; + +@implementation PFInternalUtils + ++ (void)initialize { + if (self == [PFInternalUtils class]) { + [self setParseServer:kPFParseServer]; + } +} + ++ (NSString *)parseServerURLString { + return parseServer_; +} + +// Useful for testing. +// Beware of race conditions if you call setParseServer while something else may be using +// httpClient. ++ (void)setParseServer:(NSString *)server { + parseServer_ = [server copy]; +} + ++ (NSString *)currentSystemTimeZoneName { + static NSLock *methodLock; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + methodLock = [[NSLock alloc] init]; + }); + + [methodLock lock]; + [NSTimeZone resetSystemTimeZone]; + NSString *systemTimeZoneName = [[NSTimeZone systemTimeZone].name copy]; + [methodLock unlock]; + + return systemTimeZoneName; +} + ++ (void)safePerformSelector:(SEL)selector withTarget:(id)target object:(id)object object:(id)anotherObject { + if (target == nil || selector == nil || ![target respondsToSelector:selector]) { + return; + } + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-performSelector-leaks" + [target performSelector:selector withObject:object withObject:anotherObject]; +#pragma clang diagnostic pop +} + ++ (NSNumber *)fileSizeOfFileAtPath:(NSString *)filePath error:(NSError **)error { + NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath + error:error]; + return attributes[NSFileSize]; +} + +///-------------------------------------- +#pragma mark - Serialization +///-------------------------------------- + ++ (NSNumber *)addNumber:(NSNumber *)first withNumber:(NSNumber *)second { + const char *objcType = [first objCType]; + + if (strcmp(objcType, @encode(BOOL)) == 0) { + return @([first boolValue] + [second boolValue]); + } else if (strcmp(objcType, @encode(char)) == 0) { + return @([first charValue] + [second charValue]); + } else if (strcmp(objcType, @encode(double)) == 0) { + return @([first doubleValue] + [second doubleValue]); + } else if (strcmp(objcType, @encode(float)) == 0) { + return @([first floatValue] + [second floatValue]); + } else if (strcmp(objcType, @encode(int)) == 0) { + return @([first intValue] + [second intValue]); + } else if (strcmp(objcType, @encode(long)) == 0) { + return @([first longValue] + [second longValue]); + } else if (strcmp(objcType, @encode(long long)) == 0) { + return @([first longLongValue] + [second longLongValue]); + } else if (strcmp(objcType, @encode(short)) == 0) { + return @([first shortValue] + [second shortValue]); + } else if (strcmp(objcType, @encode(unsigned char)) == 0) { + return @([first unsignedCharValue] + [second unsignedCharValue]); + } else if (strcmp(objcType, @encode(unsigned int)) == 0) { + return @([first unsignedIntValue] + [second unsignedIntValue]); + } else if (strcmp(objcType, @encode(unsigned long)) == 0) { + return @([first unsignedLongValue] + [second unsignedLongValue]); + } else if (strcmp(objcType, @encode(unsigned long long)) == 0) { + return @([first unsignedLongLongValue] + [second unsignedLongLongValue]); + } else if (strcmp(objcType, @encode(unsigned short)) == 0) { + return @([first unsignedShortValue] + [second unsignedShortValue]); + } + + // Fall back to int? + return @([first intValue] + [second intValue]); +} + +///-------------------------------------- +#pragma mark - CacheKey +///-------------------------------------- + +#pragma mark Public + ++ (NSString *)cacheKeyForObject:(id)object { + NSMutableString *string = [NSMutableString string]; + [self appendObject:object toString:string]; + return string; +} + +#pragma mark Private + ++ (void)appendObject:(id)object toString:(NSMutableString *)string { + if ([object isKindOfClass:[NSDictionary class]]) { + [self appendDictionary:object toString:string]; + } else if ([object isKindOfClass:[NSArray class]]) { + [self appendArray:object toString:string]; + } else if ([object isKindOfClass:[NSString class]]) { + [string appendFormat:@"\"%@\"", object]; + } else if ([object isKindOfClass:[NSNumber class]]) { + [self appendNumber:object toString:string]; + } else if ([object isKindOfClass:[NSNull class]]) { + [self appendNullToString:string]; + } else { + [NSException raise:NSInvalidArgumentException + format:@"Couldn't create cache key from %@", object]; + } +} + ++ (void)appendDictionary:(NSDictionary *)dictionary toString:(NSMutableString *)string { + [string appendString:@"{"]; + + NSArray *keys = [[dictionary allKeys] sortedArrayUsingSelector:@selector(compare:)]; + for (NSString *key in keys) { + [string appendFormat:@"%@:", key]; + + id value = [dictionary objectForKey:key]; + [self appendObject:value toString:string]; + + [string appendString:@","]; + } + + [string appendString:@"}"]; +} + ++ (void)appendArray:(NSArray *)array toString:(NSMutableString *)string { + [string appendString:@"["]; + for (id object in array) { + [self appendObject:object toString:string]; + [string appendString:@","]; + } + [string appendString:@"]"]; +} + ++ (void)appendNumber:(NSNumber *)number toString:(NSMutableString *)string { + [string appendFormat:@"%@", [number stringValue]]; +} + ++ (void)appendNullToString:(NSMutableString *)string { + [string appendString:@"null"]; +} + ++ (id)traverseObject:(id)object usingBlock:(id (^)(id object))block seenObjects:(NSMutableSet *)seen { + if ([object isKindOfClass:[PFObject class]]) { + if ([seen containsObject:object]) { + // We've already visited this object in this call. + return object; + } + [seen addObject:object]; + + for (NSString *key in [(PFObject *)object allKeys]) { + [self traverseObject:object[key] usingBlock:block seenObjects:seen]; + } + + return block(object); + } else if ([object isKindOfClass:[NSArray class]]) { + NSMutableArray *newArray = [object mutableCopy]; + [object enumerateObjectsUsingBlock:^(id child, NSUInteger idx, BOOL *stop) { + id newChild = [self traverseObject:child usingBlock:block seenObjects:seen]; + if (newChild) { + newArray[idx] = newChild; + } + }]; + return block(newArray); + } else if ([object isKindOfClass:[NSDictionary class]]) { + NSMutableDictionary *newDictionary = [object mutableCopy]; + [object enumerateKeysAndObjectsUsingBlock:^(id key, id child, BOOL *stop) { + id newChild = [self traverseObject:child usingBlock:block seenObjects:seen]; + if (newChild) { + newDictionary[key] = newChild; + } + }]; + return block(newDictionary); + } + + return block(object); +} + ++ (id)traverseObject:(id)object usingBlock:(id (^)(id object))block { + NSMutableSet *seen = [[NSMutableSet alloc] init]; + id result = [self traverseObject:object usingBlock:block seenObjects:seen]; + return result; +} + ++ (NSArray *)arrayBySplittingArray:(NSArray *)array withMaximumComponentsPerSegment:(NSUInteger)components { + if ([array count] <= components) { + return @[ array ]; + } + + NSMutableArray *splitArray = [NSMutableArray array]; + NSInteger index = 0; + + while (index < [array count]) { + NSInteger length = MIN([array count] - index, components); + + NSArray *subarray = [array subarrayWithRange:NSMakeRange(index, length)]; + [splitArray addObject:subarray]; + + index += length; + } + + return splitArray; +} + ++ (id)_stringWithFormat:(NSString *)format arguments:(NSArray *)arguments { + // We cannot reliably construct a va_list for 64-bit, so hard code up to N args. + const int maxNumArgs = 10; + PFRangeAssert(arguments.count <= maxNumArgs, @"Maximum of %d format args allowed", maxNumArgs); + NSMutableArray *args = [arguments mutableCopy]; + for (NSUInteger i = arguments.count; i < maxNumArgs; i++) { + [args addObject:@""]; + } + return [NSString stringWithFormat:format, + args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]]; +} + +@end + +// A PFJSONCacheItem is a pairing of a json string with its hash value. +// This is used by our mutable container checking. +@implementation PFJSONCacheItem + +- (instancetype)initWithObject:(id)object { + if (self = [super init]) { + NSObject *encoded = [[PFPointerOrLocalIdObjectEncoder objectEncoder] encodeObject:object]; + NSData *jsonData = [PFJSONSerialization dataFromJSONObject:encoded]; + _hashValue = PFMD5HashFromData(jsonData); + } + return self; +} + +- (BOOL)isEqual:(id)otherCache { + if (![otherCache isKindOfClass:[PFJSONCacheItem class]]) { + return NO; + } + + return [self.hashValue isEqualToString:[otherCache hashValue]]; +} + ++ (PFJSONCacheItem *)cacheFromObject:(id)object { + return [[PFJSONCacheItem alloc] initWithObject:object]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFJSONSerialization.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFJSONSerialization.h new file mode 100644 index 0000000..e6fb16c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFJSONSerialization.h @@ -0,0 +1,65 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PFJSONSerialization : NSObject + +/*! + The object passed in must be one of: + * NSString + * NSNumber + * NSDictionary + * NSArray + * NSNull + + @returns NSData of JSON representing the passed in object. + */ ++ (nullable NSData *)dataFromJSONObject:(id)object; + +/*! + The object passed in must be one of: + * NSString + * NSNumber + * NSDictionary + * NSArray + * NSNull + + @returns NSString of JSON representing the passed in object. + */ ++ (nullable NSString *)stringFromJSONObject:(id)object; + +/*! + Takes a JSON string and returns the NSDictionaries and NSArrays in it. + You should still call decodeObject if you want Parse types. + */ ++ (nullable id)JSONObjectFromData:(NSData *)data; + +/*! + Takes a JSON string and returns the NSDictionaries and NSArrays in it. + You should still call decodeObject if you want Parse types. + */ ++ (nullable id)JSONObjectFromString:(NSString *)string; + +/*! + @abstract Takes a file path to json file and returns the NSDictionaries and NSArrays in it. + + @description You should still call decodeObject if you want Parse types. + + @param filePath File path to a file. + + @return Decoded object. + */ ++ (nullable id)JSONObjectFromFileAtPath:(NSString *)filePath; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFJSONSerialization.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFJSONSerialization.m new file mode 100644 index 0000000..c2c72fe --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFJSONSerialization.m @@ -0,0 +1,72 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFJSONSerialization.h" + +#import "PFAssert.h" +#import "PFLogging.h" + +@implementation PFJSONSerialization + ++ (NSData *)dataFromJSONObject:(id)object { + NSError *error = nil; + NSData *data = [NSJSONSerialization dataWithJSONObject:object options:0 error:&error]; + PFParameterAssert(data && !error, @"PFObject values must be serializable to JSON"); + + return data; +} + ++ (NSString *)stringFromJSONObject:(id)object { + NSData *data = [self dataFromJSONObject:object]; + return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; +} + ++ (id)JSONObjectFromData:(NSData *)data { + NSError *error = nil; + id object = [NSJSONSerialization JSONObjectWithData:data + options:0 + error:&error]; + if (!object || error != nil) { + PFLogError(PFLoggingTagCommon, @"JSON deserialization failed with error: %@", [error description]); + } + + return object; +} + ++ (id)JSONObjectFromString:(NSString *)string { + return [self JSONObjectFromData:[string dataUsingEncoding:NSUTF8StringEncoding]]; +} + ++ (id)JSONObjectFromFileAtPath:(NSString *)filePath { + NSInputStream *stream = [NSInputStream inputStreamWithFileAtPath:filePath]; + if (!stream) { + return nil; + } + + [stream open]; + + NSError *streamError = stream.streamError; + // Check if stream failed to open, because there is no such file. + if (streamError && [streamError.domain isEqualToString:NSPOSIXErrorDomain] && streamError.code == ENOENT) { + [stream close]; // Still close the stream. + return nil; + } + + NSError *error = nil; + id object = [NSJSONSerialization JSONObjectWithStream:stream options:0 error:&error]; + if (!object || error) { + PFLogError(PFLoggingTagCommon, @"JSON deserialization failed with error: %@", error.description); + } + + [stream close]; + + return object; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFKeychainStore.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFKeychainStore.h new file mode 100644 index 0000000..3d7c06e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFKeychainStore.h @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +extern NSString *const PFKeychainStoreDefaultService; + +/*! + PFKeychainStore is NSUserDefaults-like wrapper on top of Keychain. + It supports any object, with NSCoding support. Every object is serialized using NSKeyedArchiver. + + All objects are available after the first device unlock and are not backed up. + */ +@interface PFKeychainStore : NSObject + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithService:(NSString *)service NS_DESIGNATED_INITIALIZER; + +- (nullable id)objectForKey:(NSString *)key; +- (nullable id)objectForKeyedSubscript:(NSString *)key; + +- (BOOL)setObject:(nullable id)object forKey:(NSString *)key; +- (BOOL)setObject:(nullable id)object forKeyedSubscript:(NSString *)key; +- (BOOL)removeObjectForKey:(NSString *)key; +- (BOOL)removeAllObjects; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFKeychainStore.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFKeychainStore.m new file mode 100644 index 0000000..747ff10 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFKeychainStore.m @@ -0,0 +1,200 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFKeychainStore.h" + +#import "PFAssert.h" +#import "PFLogging.h" +#import "PFMacros.h" +#import "Parse.h" + +NSString *const PFKeychainStoreDefaultService = @"com.parse.sdk"; + +@interface PFKeychainStore () { + dispatch_queue_t _synchronizationQueue; +} + +@property (nonatomic, copy, readonly) NSString *service; +@property (nonatomic, copy, readonly) NSDictionary *keychainQueryTemplate; + +@end + +@implementation PFKeychainStore + +///-------------------------------------- +#pragma mark - Class +///-------------------------------------- + ++ (NSDictionary *)_keychainQueryTemplateForService:(NSString *)service { + NSMutableDictionary *query = [NSMutableDictionary dictionary]; + if ([service length]) { + query[(__bridge NSString *)kSecAttrService] = service; + } + query[(__bridge NSString *)kSecClass] = (__bridge id)kSecClassGenericPassword; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wtautological-pointer-compare" + if (&kSecAttrAccessible != nil) { + query[(__bridge id)kSecAttrAccessible] = (__bridge id)kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly; + } +#pragma clang diagnostic pop + + return [query copy]; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithService:(NSString *)service { + self = [super init]; + if (!self) return nil; + + _service = service; + _keychainQueryTemplate = [[self class] _keychainQueryTemplateForService:service]; + + NSString *queueLabel = [NSString stringWithFormat:@"com.parse.keychain.%@", service]; + _synchronizationQueue = dispatch_queue_create([queueLabel UTF8String], DISPATCH_QUEUE_CONCURRENT); + PFMarkDispatchQueue(_synchronizationQueue); + + return self; +} + +///-------------------------------------- +#pragma mark - Read +///-------------------------------------- + +- (id)objectForKey:(NSString *)key { + __block NSData *data = nil; + dispatch_sync(_synchronizationQueue, ^{ + data = [self _dataForKey:key]; + }); + + if (data) { + id object = nil; + @try { + object = [NSKeyedUnarchiver unarchiveObjectWithData:data]; + } + @catch (NSException *exception) {} + + return object; + } + return nil; +} + +- (id)objectForKeyedSubscript:(NSString *)key { + return [self objectForKey:key]; +} + +- (NSData *)_dataForKey:(NSString *)key { + NSMutableDictionary *query = [self.keychainQueryTemplate mutableCopy]; + + query[(__bridge NSString *)kSecAttrAccount] = key; + query[(__bridge NSString *)kSecMatchLimit] = (__bridge id)kSecMatchLimitOne; + query[(__bridge NSString *)kSecReturnData] = (__bridge id)kCFBooleanTrue; + + //recover data + CFDataRef data = NULL; + OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef *)&data); + if (status != errSecSuccess && status != errSecItemNotFound) { + PFLogError(PFLoggingTagCommon, + @"PFKeychainStore failed to get object for key '%@', with error: %ld", key, (long)status); + } + return CFBridgingRelease(data); +} + +///-------------------------------------- +#pragma mark - Write +///-------------------------------------- + +- (BOOL)setObject:(id)object forKey:(NSString *)key { + NSParameterAssert(key != nil); + + if (!object) { + return [self removeObjectForKey:key]; + } + + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:object]; + if (!data) { + return NO; + } + + NSMutableDictionary *query = [self.keychainQueryTemplate mutableCopy]; + query[(__bridge NSString *)kSecAttrAccount] = key; + + NSDictionary *update = @{ (__bridge NSString *)kSecValueData : data }; + + __block OSStatus status = errSecSuccess; + dispatch_barrier_sync(_synchronizationQueue,^{ + if ([self _dataForKey:key]) { + status = SecItemUpdate((__bridge CFDictionaryRef)query, (__bridge CFDictionaryRef)update); + } else { + [query addEntriesFromDictionary:update]; + status = SecItemAdd((__bridge CFDictionaryRef)query, NULL); + } + }); + + if (status != errSecSuccess) { + PFLogError(PFLoggingTagCommon, + @"PFKeychainStore failed to set object for key '%@', with error: %ld", key, (long)status); + } + + return (status == errSecSuccess); +} + +- (BOOL)setObject:(id)object forKeyedSubscript:(NSString *)key { + return [self setObject:object forKey:key]; +} + +- (BOOL)removeObjectForKey:(NSString *)key { + __block BOOL value = NO; + dispatch_barrier_sync(_synchronizationQueue, ^{ + value = [self _removeObjectForKey:key]; + }); + return value; +} + +- (BOOL)_removeObjectForKey:(NSString *)key { + PFAssertIsOnDispatchQueue(_synchronizationQueue); + NSMutableDictionary *query = [self.keychainQueryTemplate mutableCopy]; + query[(__bridge NSString *)kSecAttrAccount] = key; + + OSStatus status = SecItemDelete((__bridge CFDictionaryRef)query); + return (status == errSecSuccess); +} + +- (BOOL)removeAllObjects { + NSMutableDictionary *query = [self.keychainQueryTemplate mutableCopy]; + query[(__bridge id)kSecReturnAttributes] = (__bridge id)kCFBooleanTrue; + query[(__bridge id)kSecMatchLimit] = (__bridge id)kSecMatchLimitAll; + + __block BOOL value = YES; + dispatch_barrier_sync(_synchronizationQueue, ^{ + CFArrayRef result = NULL; + OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef *)&result); + if (status != errSecSuccess) { + return; + } + + for (NSDictionary *item in CFBridgingRelease(result)) { + NSString *key = item[(__bridge id)kSecAttrAccount]; + value = [self _removeObjectForKey:key]; + if (!value) { + return; + } + } + }); + return value; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLocationManager.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLocationManager.h new file mode 100644 index 0000000..b1f115c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLocationManager.h @@ -0,0 +1,56 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@class CLLocation; +@class CLLocationManager; + +#if TARGET_OS_IPHONE + +@class UIApplication; + +#endif + +typedef void(^PFLocationManagerLocationUpdateBlock)(CLLocation *location, NSError *error); + +/*! + PFLocationManager is an internal class which wraps a CLLocationManager and + returns an updated CLLocation via the provided block. + + When -addBlockForCurrentLocation is called, the CLLocationManager's + -startUpdatingLocations is called, and upon CLLocationManagerDelegate callback + (either success or failure), any handlers that were passed to this class will + be called _once_ with the updated location, then removed. The CLLocationManager + stopsUpdatingLocation upon a single failure or success case, so that the next + location request is guaranteed a speedily returned CLLocation. + */ +@interface PFLocationManager : NSObject + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithSystemLocationManager:(CLLocationManager *)manager; + +#if TARGET_OS_IPHONE + +- (instancetype)initWithSystemLocationManager:(CLLocationManager *)manager + application:(UIApplication *)application + bundle:(NSBundle *)bundle NS_DESIGNATED_INITIALIZER; + +#endif + +///-------------------------------------- +#pragma mark - Current Location +///-------------------------------------- + +- (void)addBlockForCurrentLocation:(PFLocationManagerLocationUpdateBlock)handler; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLocationManager.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLocationManager.m new file mode 100644 index 0000000..82286bc --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLocationManager.m @@ -0,0 +1,153 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFLocationManager.h" + +#import + +#import "PFConstants.h" +#import "PFGeoPoint.h" +#import "PFApplication.h" + +@interface PFLocationManager () + +@property (nonatomic, strong) CLLocationManager *locationManager; +@property (nonatomic, strong) NSBundle *bundle; +@property (nonatomic, strong) UIApplication *application; + +// We use blocks and not BFTasks because Tasks don't gain us much - we still +// have to manually hold onto them so that they can be resolved in the +// CLLocationManager callback. +@property (nonatomic, strong) NSMutableSet *blockSet; + +@end + +@implementation PFLocationManager + +///-------------------------------------- +#pragma mark - CLLocationManager +///-------------------------------------- + ++ (CLLocationManager *)_newSystemLocationManager { + __block CLLocationManager *manager = nil; + + // CLLocationManager should be created only on main thread, as it needs a run loop to serve delegate callbacks + dispatch_block_t block = ^{ + manager = [[CLLocationManager alloc] init]; + }; + if ([[NSThread currentThread] isMainThread]) { + block(); + } else { + dispatch_sync(dispatch_get_main_queue(), block); + } + return manager; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + CLLocationManager *manager = [[self class] _newSystemLocationManager]; + return [self initWithSystemLocationManager:manager]; +} + +- (instancetype)initWithSystemLocationManager:(CLLocationManager *)manager { + return [self initWithSystemLocationManager:manager + application:[PFApplication currentApplication].systemApplication + bundle:[NSBundle mainBundle]]; +} + +- (instancetype)initWithSystemLocationManager:(CLLocationManager *)manager + application:(UIApplication *)application + bundle:(NSBundle *)bundle { + self = [super init]; + if (!self) return nil; + + _blockSet = [NSMutableSet setWithCapacity:1]; + _locationManager = manager; + _locationManager.delegate = self; + _bundle = bundle; + _application = application; + + return self; +} + +///-------------------------------------- +#pragma mark - Dealloc +///-------------------------------------- + +- (void)dealloc { + _locationManager.delegate = nil; +} + +///-------------------------------------- +#pragma mark - Public +///-------------------------------------- + +- (void)addBlockForCurrentLocation:(PFLocationManagerLocationUpdateBlock)handler { + @synchronized (self.blockSet) { + [self.blockSet addObject:[handler copy]]; + } + +#if TARGET_OS_WATCH + if ([self.bundle objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"] != nil) { + [self.locationManager requestWhenInUseAuthorization]; + } else { + [self.locationManager requestAlwaysAuthorization]; + } + [self.locationManager requestLocation]; +#elif TARGET_OS_IOS + if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) { + if (self.application.applicationState != UIApplicationStateBackground && + [self.bundle objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"] != nil) { + [self.locationManager requestWhenInUseAuthorization]; + } else { + [self.locationManager requestAlwaysAuthorization]; + } + } + [self.locationManager startUpdatingLocation]; +#elif TARGET_OS_MAC + [self.locationManager startUpdatingLocation]; +#endif +} + +///-------------------------------------- +#pragma mark - CLLocationManagerDelegate +///-------------------------------------- + +- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { + CLLocation *location = [locations lastObject]; + + [manager stopUpdatingLocation]; + + NSMutableSet *callbacks = [NSMutableSet setWithCapacity:1]; + @synchronized (self.blockSet) { + [callbacks setSet:self.blockSet]; + [self.blockSet removeAllObjects]; + } + for (PFLocationManagerLocationUpdateBlock block in callbacks) { + block(location, nil); + } +} + +- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { + [manager stopUpdatingLocation]; + + NSMutableSet *callbacks = nil; + @synchronized (self.blockSet) { + callbacks = [self.blockSet copy]; + [self.blockSet removeAllObjects]; + } + for (PFLocationManagerLocationUpdateBlock block in callbacks) { + block(nil, error); + } +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLogger.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLogger.h new file mode 100644 index 0000000..2a8858e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLogger.h @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +# import + +typedef uint8_t PFLoggingTag; + +@interface PFLogger : NSObject + +@property (atomic, assign) PFLogLevel logLevel; + +///-------------------------------------- +/// @name Shared Logger +///-------------------------------------- + +/*! +A shared instance of `PFLogger` that should be used for all logging. + +@returns An shared singleton instance of `PFLogger`. +*/ ++ (instancetype)sharedLogger; //TODO: (nlutsenko) Convert to use an instance everywhere instead of a shared singleton. + +///-------------------------------------- +/// @name Logging Messages +///-------------------------------------- + +/*! + Logs a message at a specific level for a tag. + If current logging level doesn't include this level - this method does nothing. + + @param level Logging Level + @param tag Logging Tag + @param format Format to use for the log message. + */ +- (void)logMessageWithLevel:(PFLogLevel)level + tag:(PFLoggingTag)tag + format:(NSString *)format, ... NS_FORMAT_FUNCTION(3, 4); + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLogger.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLogger.m new file mode 100644 index 0000000..d309096 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLogger.m @@ -0,0 +1,105 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFLogger.h" + +#import "PFApplication.h" +#import "PFLogging.h" + +@implementation PFLogger + +///-------------------------------------- +#pragma mark - Class +///-------------------------------------- + ++ (NSString *)_descriptionForLoggingTag:(PFLoggingTag)tag { + NSString *description = nil; + switch (tag) { + case PFLoggingTagCommon: + break; + case PFLoggingTagCrashReporting: + description = @"Crash Reporting"; + break; + default: + break; + } + return description; +} + ++ (NSString *)_descriptionForLogLevel:(PFLogLevel)logLevel { + NSString *description = nil; + switch (logLevel) { + case PFLogLevelNone: + break; + case PFLogLevelError: + description = @"Error"; + break; + case PFLogLevelWarning: + description = @"Warning"; + break; + case PFLogLevelInfo: + description = @"Info"; + break; + default: + break; + } + return description; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + ++ (instancetype)sharedLogger { + static PFLogger *logger; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + logger = [[PFLogger alloc] init]; + }); + return logger; +} + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _logLevel = ([PFApplication currentApplication].appStoreEnvironment ? PFLogLevelNone : PFLogLevelWarning); + + return self; +} + +///-------------------------------------- +#pragma mark - Logging Messages +///-------------------------------------- + +- (void)logMessageWithLevel:(PFLogLevel)level + tag:(PFLoggingTag)tag + format:(NSString *)format, ... NS_FORMAT_FUNCTION(3, 4) { + if (level > self.logLevel || level == PFLogLevelNone || !format) { + return; + } + + va_list args; + va_start(args, format); + + NSMutableString *message = [NSMutableString stringWithFormat:@"[%@]", [[self class] _descriptionForLogLevel:level]]; + + NSString *tagDescription = [[self class] _descriptionForLoggingTag:tag]; + if (tagDescription) { + [message appendFormat:@"[%@]", tagDescription]; + } + + [message appendFormat:@": %@", format]; + + NSLogv(message, args); + + va_end(args); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLogging.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLogging.h new file mode 100644 index 0000000..90a4410 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFLogging.h @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#ifndef Parse_PFLogging_h +#define Parse_PFLogging_h + +# import + +#import "PFLogger.h" + +static const PFLoggingTag PFLoggingTagCommon = 0; +static const PFLoggingTag PFLoggingTagCrashReporting = 100; + +#define PFLog(level, loggingTag, frmt, ...) \ +[[PFLogger sharedLogger] logMessageWithLevel:level tag:loggingTag format:(frmt), ##__VA_ARGS__] + +#define PFLogError(tag, frmt, ...) \ +PFLog(PFLogLevelError, (tag), (frmt), ##__VA_ARGS__) + +#define PFLogWarning(tag, frmt, ...) \ +PFLog(PFLogLevelWarning, (tag), (frmt), ##__VA_ARGS__) + +#define PFLogInfo(tag, frmt, ...) \ +PFLog(PFLogLevelInfo, (tag), (frmt), ##__VA_ARGS__) + +#define PFLogDebug(tag, frmt, ...) \ +PFLog(PFLogLevelDebug, (tag), (frmt), ##__VA_ARGS__) + +#define PFLogException(exception) \ +PFLogError(PFLoggingTagCommon, @"Caught \"%@\" with reason \"%@\"%@", \ +exception.name, exception, \ +[exception callStackSymbols] ? [NSString stringWithFormat:@":\n%@.", [exception callStackSymbols]] : @"") + +#endif diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFMacros.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFMacros.h new file mode 100644 index 0000000..4f53214 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFMacros.h @@ -0,0 +1,137 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import +#import + +#ifndef Parse_PFMacros_h +#define Parse_PFMacros_h + +/*! + This macro allows to create NSSet via subscript. + */ +#define PF_SET(...) [NSSet setWithObjects:__VA_ARGS__, nil] + +/*! + This macro is a handy thing for converting libSystem objects to (void *) pointers. + If you are targeting OSX 10.8+ and iOS 6.0+ - this is no longer required. + */ +#if OS_OBJECT_USE_OBJC + #define PFOSObjectPointer(object) \ + (__bridge void *)(object) +#else + #define PFOSObjectPointer(object) \ + (void *)(object) +#endif + +/*! + Mark a queue in order to be able to check PFAssertIsOnMarkedQueue. + */ +#define PFMarkDispatchQueue(queue) \ +dispatch_queue_set_specific((queue), \ + PFOSObjectPointer(queue), \ + PFOSObjectPointer(queue), \ + NULL) + +///-------------------------------------- +/// @name Memory Management +/// +/// The following macros are influenced and include portions of libextobjc. +///-------------------------------------- + +/*! + Creates a __weak version of the variable provided, + which can later be safely used or converted into strong variable via @strongify. + */ +#define weakify(var) \ +try {} @catch (...) {} \ +__weak __typeof__(var) var ## _weak = var; + +/*! + Creates a strong shadow reference of the variable provided. + Variable must have previously been passed to @weakify. + */ +#define strongify(var) \ +try {} @catch (...) {} \ +__strong __typeof__(var) var = var ## _weak; + +///-------------------------------------- +/// @name KVC +///-------------------------------------- + +/*! + This macro ensures that object.key exists at compile time. + It can accept a chained key path. + */ +#define keypath(TYPE, PATH) \ +(((void)(NO && ((void)((TYPE *)(nil)).PATH, NO)), # PATH)) + +///-------------------------------------- +/// @name Runtime +///-------------------------------------- + +/*! + Using objc_msgSend directly is bad, very bad. Doing so without casting could result in stack-smashing on architectures + (*cough* x86 *cough*) that use strange methods of returning values of different types. + + The objc_msgSend_safe macro ensures that we properly cast the function call to use the right conventions when passing + parameters and getting return values. This also fixes some issues with ARC and objc_msgSend directly, though strange + things can happen when receiving values from NS_RETURNS_RETAINED methods. + */ +#define objc_msgSend(...) _Pragma("GCC error \"Use objc_msgSend_safe() instead!\"") +#define objc_msgSend_safe(returnType, argTypes...) ((returnType (*)(id, SEL, ##argTypes))(objc_msgSend)) + +/*! + This exists because if we throw an exception from dispatch_sync, it doesn't 'bubble up' to the calling thread. + This simply wraps dispatch_sync and properly throws the exception back to the calling thread, not the thread that + the exception was originally raised on. + + @param queue The queue to execute on + @param block The block to execute + + @see dispatch_sync + */ +#define pf_sync_with_throw(queue, block) \ + do { \ + __block NSException *caught = nil; \ + dispatch_sync(queue, ^{ \ + @try { block(); } \ + @catch (NSException *ex) { \ + caught = ex; \ + } \ + }); \ + if (caught) @throw caught; \ + } while (0) + +/*! + To prevent retain cycles by OCMock, this macro allows us to capture a weak reference to return from a stubbed method. + */ +#define andReturnWeak(variable) _andDo( \ + ({ \ + __weak typeof(variable) variable ## _weak = (variable); \ + ^(NSInvocation *invocation) { \ + __autoreleasing typeof(variable) variable ## _block = variable ## _weak; \ + [invocation setReturnValue:&(variable ## _block)]; \ + }; \ + }) \ +) + +/*! + This exists to use along with bolts generic tasks. Instead of returning a BFTask with no generic type, or a generic + type of 'NSNull' when there is no usable result from a task, we use the type 'PFVoid', which will always have a value + of 'nil'. + + This allows us to more easily descern between methods that have not yet updated the return type of their tasks, as well + as provide a more enforced API contract to the caller (as sending any message to PFVoid will result in a compile time + error). + */ +@class _PFVoid_Nonexistant; +typedef _PFVoid_Nonexistant *PFVoid; + +#endif diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFMulticastDelegate.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFMulticastDelegate.h new file mode 100644 index 0000000..7a54dc3 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFMulticastDelegate.h @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +/*! + Represents an event that can be subscribed to by multiple observers. + */ +@interface PFMulticastDelegate : NSObject { +@private + NSMutableArray *callbacks; +} + +/*! + Subscribes a block for callback. + + Important: if you ever plan to be able to unsubscribe the block, you must copy the block + before passing it to subscribe, and use the same instance for unsubscribe. + */ +- (void)subscribe:(void(^)(id result, NSError *error))block; +- (void)unsubscribe:(void(^)(id result, NSError *error))block; +- (void)invoke:(id)result error:(NSError *)error; +- (void)clear; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFMulticastDelegate.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFMulticastDelegate.m new file mode 100644 index 0000000..9d49fa8 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFMulticastDelegate.m @@ -0,0 +1,39 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFMulticastDelegate.h" + +@implementation PFMulticastDelegate + +- (instancetype)init { + if (self = [super init]) { + callbacks = [[NSMutableArray alloc] init]; + } + return self; +} + +- (void)subscribe:(void(^)(id result, NSError *error))block { + [callbacks addObject:block]; +} + +- (void)unsubscribe:(void(^)(id result, NSError *error))block { + [callbacks removeObject:block]; +} + +- (void)invoke:(id)result error:(NSError *)error { + NSArray *callbackCopy = [callbacks copy]; + for (void (^block)(id result, NSError *error) in callbackCopy) { + block(result, error); + } +} +- (void)clear { + [callbacks removeAllObjects]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFNetworkCommand.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFNetworkCommand.h new file mode 100644 index 0000000..6502923 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFNetworkCommand.h @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@protocol PFNetworkCommand + +///-------------------------------------- +/// @name Properties +///-------------------------------------- + +@property (nonatomic, copy, readonly) NSString *sessionToken; +@property (nonatomic, copy, readonly) NSString *operationSetUUID; + +// If this command creates an object that is referenced by some other command, +// then this localId will be updated with the new objectId that is returned. +@property (nonatomic, copy) NSString *localId; + +///-------------------------------------- +/// @name Encoding/Decoding +///-------------------------------------- + ++ (instancetype)commandFromDictionaryRepresentation:(NSDictionary *)dictionary; +- (NSDictionary *)dictionaryRepresentation; + ++ (BOOL)isValidDictionaryRepresentation:(NSDictionary *)dictionary; + +///-------------------------------------- +/// @name Local Identifiers +///-------------------------------------- + +/*! + Replaces all local ids in this command with the correct objectId for that object. + This should be called before sending the command over the network, so that there + are no local ids sent to the Parse Cloud. If any local id refers to an object that + has not yet been saved, and thus has no objectId, then this method raises an + exception. + */ +- (void)resolveLocalIds; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFPinningEventuallyQueue.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFPinningEventuallyQueue.h new file mode 100644 index 0000000..17a0499 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFPinningEventuallyQueue.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFEventuallyQueue.h" + +@interface PFPinningEventuallyQueue : PFEventuallyQueue + +///-------------------------------------- +/// @name Init +///-------------------------------------- + ++ (instancetype)newDefaultPinningEventuallyQueueWithCommandRunner:(id)commandRunner; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFPinningEventuallyQueue.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFPinningEventuallyQueue.m new file mode 100644 index 0000000..0d039d2 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFPinningEventuallyQueue.m @@ -0,0 +1,327 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPinningEventuallyQueue.h" + +#import +#import + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFErrorUtilities.h" +#import "PFEventuallyPin.h" +#import "PFEventuallyQueue_Private.h" +#import "PFMacros.h" +#import "PFObjectPrivate.h" +#import "PFOperationSet.h" +#import "PFRESTCommand.h" +#import "PFTaskQueue.h" + +@interface PFPinningEventuallyQueue () { + /*! + Queue for reading/writing eventually operations from LDS. Makes all reads/writes atomic + operations. + */ + PFTaskQueue *_taskQueue; + + /*! + List of `PFEventuallyPin.uuid` that are currently queued in `_processingQueue`. This contains + uuid of PFEventuallyPin that's enqueued. + */ + NSMutableArray *_eventuallyPinUUIDQueue; + + /*! + Map of eventually operation UUID to matching PFEventuallyPin. This contains PFEventuallyPin + that's enqueued. + */ + NSMutableDictionary *_uuidToEventuallyPin; + + /*! + Map OperationSetUUID to PFOperationSet + */ + NSMutableDictionary *_operationSetUUIDToOperationSet; + + /*! + Map OperationSetUUID to PFEventuallyPin + */ + NSMutableDictionary *_operationSetUUIDToEventuallyPin; +} + +@end + +@implementation PFPinningEventuallyQueue + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + ++ (instancetype)newDefaultPinningEventuallyQueueWithCommandRunner:(id)commandRunner { + PFPinningEventuallyQueue *queue = [[self alloc] initWithCommandRunner:commandRunner + maxAttemptsCount:PFEventuallyQueueDefaultMaxAttemptsCount + retryInterval:PFEventuallyQueueDefaultTimeoutRetryInterval]; + [queue start]; + return queue; +} + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithCommandRunner:(id)commandRunner + maxAttemptsCount:(NSUInteger)attemptsCount + retryInterval:(NSTimeInterval)retryInterval { + self = [super initWithCommandRunner:commandRunner maxAttemptsCount:attemptsCount retryInterval:retryInterval]; + if (!self) return nil; + + _taskQueue = [[PFTaskQueue alloc] init]; + + dispatch_sync(_synchronizationQueue, ^{ + _eventuallyPinUUIDQueue = [NSMutableArray array]; + _uuidToEventuallyPin = [NSMutableDictionary dictionary]; + _operationSetUUIDToOperationSet = [NSMutableDictionary dictionary]; + _operationSetUUIDToEventuallyPin = [NSMutableDictionary dictionary]; + }); + + // Populate Eventually Pin to make sure we pre-loaded any existing data. + [self _populateEventuallyPinAsync]; + + return self; +} + +///-------------------------------------- +#pragma mark - Controlling Queue +///-------------------------------------- + +- (void)removeAllCommands { + [super removeAllCommands]; + + BFTask *removeTask = [_taskQueue enqueue:^BFTask *(BFTask *toAwait) { + return [toAwait continueWithBlock:^id(BFTask *task) { + return [[PFEventuallyPin findAllEventuallyPin] continueWithSuccessBlock:^id(BFTask *task) { + NSArray *eventuallyPins = task.result; + NSMutableArray *unpinTasks = [NSMutableArray array]; + + for (PFEventuallyPin *eventuallyPin in eventuallyPins) { + [unpinTasks addObject:[eventuallyPin unpinInBackgroundWithName:PFEventuallyPinPinName]]; + } + + return [BFTask taskForCompletionOfAllTasks:unpinTasks]; + }]; + }]; + }]; + + [removeTask waitForResult:nil]; + // Clear in-memory data + dispatch_sync(_synchronizationQueue, ^{ + [_eventuallyPinUUIDQueue removeAllObjects]; + [_uuidToEventuallyPin removeAllObjects]; + [_operationSetUUIDToEventuallyPin removeAllObjects]; + [_operationSetUUIDToOperationSet removeAllObjects]; + }); +} + +- (void)_simulateReboot { + [super _simulateReboot]; + + [_eventuallyPinUUIDQueue removeAllObjects]; + [_uuidToEventuallyPin removeAllObjects]; + [_operationSetUUIDToEventuallyPin removeAllObjects]; + [_operationSetUUIDToOperationSet removeAllObjects]; + + [self _populateEventuallyPinAsync]; +} + +///-------------------------------------- +#pragma mark - PFEventuallyQueueSubclass +///-------------------------------------- + +- (NSString *)_newIdentifierForCommand:(id)command { + return [[NSUUID UUID] UUIDString]; +} + +- (NSArray *)_pendingCommandIdentifiers { + [[self _populateEventuallyPinAsync] waitForResult:nil]; + + NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) { + PFEventuallyPin *pin = _uuidToEventuallyPin[evaluatedObject]; + // Filter out all pins that don't have `operationSet` data ready yet + // to make sure we send the command with all the changes. + if (pin.operationSetUUID) { + return (_operationSetUUIDToEventuallyPin[pin.operationSetUUID] != nil); + } + return YES; + }]; + return [_eventuallyPinUUIDQueue filteredArrayUsingPredicate:predicate]; +} + +- (id)_commandWithIdentifier:(NSString *)identifier error:(NSError **)error { + // Should be populated by `_pendingCommandIdentifiers` + PFEventuallyPin *eventuallyPin = _uuidToEventuallyPin[identifier]; + + // TODO (hallucinogen): this is a temporary hack. We need to change this to match the Android one. + // We need to construct the command just right when we want to execute it. Or else it will ask for localId + // when there's unsaved child. + switch (eventuallyPin.type) { + case PFEventuallyPinTypeSave: { + PFOperationSet *operationSet = _operationSetUUIDToOperationSet[eventuallyPin.operationSetUUID]; + return [eventuallyPin.object _constructSaveCommandForChanges:operationSet + sessionToken:eventuallyPin.sessionToken + objectEncoder:[PFPointerObjectEncoder objectEncoder]]; + } + case PFEventuallyPinTypeDelete: + return [eventuallyPin.object _currentDeleteCommandWithSessionToken:eventuallyPin.sessionToken]; + default: + break; + } + + id command = eventuallyPin.command; + if (!command && error) { + *error = [PFErrorUtilities errorWithCode:kPFErrorInternalServer + message:@"Failed to construct eventually command from cache." + shouldLog:NO]; + } + return command; +} + +- (BFTask *)_enqueueCommandInBackground:(id)command + object:(PFObject *)object + identifier:(NSString *)identifier { + return [_taskQueue enqueue:^BFTask *(BFTask *toAwait) { + return [toAwait continueAsyncWithBlock:^id(BFTask *task){ + return [PFEventuallyPin pinEventually:object forCommand:command withUUID:identifier]; + }]; + }]; +} + +- (BFTask *)_didFinishRunningCommand:(id)command + withIdentifier:(NSString *)identifier + resultTask:(BFTask *)resultTask { + // Delete the commands regardless, even if it failed. Otherwise we'll just keep trying it forever. + // We don't need to wait for taskQueue since it will not be queued again since this + // PFEventuallyPin is still in `_eventuallyPinUUIDQueue` + PFEventuallyPin *eventuallyPin = _uuidToEventuallyPin[identifier]; + BFTask *unpinTask = [eventuallyPin unpinInBackgroundWithName:PFEventuallyPinPinName]; + unpinTask = [unpinTask continueWithBlock:^id(BFTask *task) { + // Remove data from memory. + dispatch_sync(_synchronizationQueue, ^{ + [_uuidToEventuallyPin removeObjectForKey:identifier]; + [_eventuallyPinUUIDQueue removeObject:identifier]; + }); + + if (resultTask.cancelled || resultTask.exception || resultTask.error) { + return resultTask; + } + + if (eventuallyPin.operationSetUUID) { + // Remove only if the operation succeeded + dispatch_sync(_synchronizationQueue, ^{ + [_operationSetUUIDToOperationSet removeObjectForKey:eventuallyPin.operationSetUUID]; + [_operationSetUUIDToEventuallyPin removeObjectForKey:eventuallyPin.operationSetUUID]; + }); + } + + PFCommandResult *commandResult = resultTask.result; + switch (eventuallyPin.type) { + case PFEventuallyPinTypeSave: { + + task = [task continueWithBlock:^id(BFTask *task) { + return [eventuallyPin.object handleSaveResultAsync:commandResult.result]; + }]; + break; + } + + case PFEventuallyPinTypeDelete: { + task = [task continueWithBlock:^id(BFTask *task) { + PFObject *object = eventuallyPin.object; + id controller = [[object class] objectController]; + return [controller processDeleteResultAsync:commandResult.result forObject:object]; + }]; + break; + } + + default:break; + } + + return task; + }]; + + // Notify event listener that we finished running. + return [[super _didFinishRunningCommand:command + withIdentifier:identifier + resultTask:resultTask] continueWithBlock:^id(BFTask *task) { + return unpinTask; + }]; +} + +/*! + Synchronizes PFObject taskQueue (Many) and PFPinningEventuallyQueue taskQueue (None). Each queue will be held + until both are ready, matched on operationSetUUID. Once both are ready, the eventually task will run. + */ +- (BFTask *)_waitForOperationSet:(PFOperationSet *)operationSet eventuallyPin:(PFEventuallyPin *)eventuallyPin { + if (eventuallyPin != nil && eventuallyPin.type != PFEventuallyPinTypeSave) { + // If not save, then we don't have to do anything special. + return [BFTask taskWithResult:nil]; + } + + // TODO (hallucinogen): actually wait for PFObject taskQueue and PFPinningEventually taskQueue + + __block NSString *uuid = nil; + dispatch_sync(_synchronizationQueue, ^{ + if (operationSet != nil) { + uuid = operationSet.uuid; + _operationSetUUIDToOperationSet[uuid] = operationSet; + } + if (eventuallyPin != nil) { + uuid = eventuallyPin.operationSetUUID; + _operationSetUUIDToEventuallyPin[uuid] = eventuallyPin; + } + }); + if (uuid == nil) { + NSException *exception = [NSException exceptionWithName:NSInternalInconsistencyException + reason:@"Either operationSet or eventuallyPin must be set" + userInfo:nil]; + return [BFTask taskWithException:exception]; + } + return [BFTask taskWithResult:nil]; +} + +///-------------------------------------- +#pragma mark - Eventually Pin +///-------------------------------------- + +- (BFTask *)_populateEventuallyPinAsync { + return [_taskQueue enqueue:^BFTask *(BFTask *toAwait) { + return [[toAwait continueWithBlock:^id(BFTask *task) { + return [PFEventuallyPin findAllEventuallyPinWithExcludeUUIDs:_eventuallyPinUUIDQueue]; + }] continueWithSuccessBlock:^id(BFTask *task) { + NSArray *eventuallyPins = task.result; + + for (PFEventuallyPin *eventuallyPin in eventuallyPins) { + // If it's enqueued already, we don't need to run it again. + if ([_eventuallyPinUUIDQueue containsObject:eventuallyPin.operationSetUUID]) { + continue; + } + + // Make sure the data is in memory. + dispatch_sync(_synchronizationQueue, ^{ + [_eventuallyPinUUIDQueue addObject:eventuallyPin.uuid]; + _uuidToEventuallyPin[eventuallyPin.uuid] = eventuallyPin; + }); + + // For now we don't care whether this will fail or not. + [[self _waitForOperationSet:nil eventuallyPin:eventuallyPin] waitForResult:nil]; + } + + return task; + }]; + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFReachability.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFReachability.h new file mode 100644 index 0000000..8e6242a --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFReachability.h @@ -0,0 +1,61 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@class PFReachability; + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(uint8_t, PFReachabilityState) { + PFReachabilityStateNotReachable, + PFReachabilityStateReachableViaWiFi, + PFReachabilityStateReachableViaCell, +}; + +@protocol PFReachabilityListener + +- (void)reachability:(PFReachability *)reachability didChangeReachabilityState:(PFReachabilityState)state; + +@end + +PF_WATCH_UNAVAILABLE @interface PFReachability : NSObject + +@property (nonatomic, assign, readonly) PFReachabilityState currentState; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithURL:(NSURL *)url NS_DESIGNATED_INITIALIZER; + +/* + Returns a shared singleton instance, + that could be used to check if Parse is reachable + */ ++ (instancetype)sharedParseReachability; + +/* + Adds a weak reference to the listener, + callbacks are executed on the main thread when status or flags change. + */ +- (void)addListener:(id)listener; + +/* + Removes weak reference to the listener. + */ +- (void)removeListener:(id)listener; + +/* + Removes all references to all listener objects. + */ +- (void)removeAllListeners; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFReachability.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFReachability.m new file mode 100644 index 0000000..b14c7e0 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFReachability.m @@ -0,0 +1,213 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFReachability.h" + +#import + +#import "PFAssert.h" +#import "PFConstants.h" +#import "PFLogging.h" +#import "PFMacros.h" +#import "PFWeakValue.h" + +@interface PFReachability () { + dispatch_queue_t _synchronizationQueue; + NSMutableArray *_listenersArray; + + SCNetworkReachabilityRef _networkReachability; +} + +@property (nonatomic, assign, readwrite) SCNetworkReachabilityFlags flags; + +@end + +static void _reachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void *info) { + NSCAssert(info != NULL, @"info was NULL in ReachabilityCallback"); + PFReachability *reachability = (__bridge PFReachability *)info; + reachability.flags = flags; +} + +@implementation PFReachability + +@synthesize flags = _flags; + +///-------------------------------------- +#pragma mark - Class +///-------------------------------------- + ++ (BOOL)_reachabilityStateForFlags:(SCNetworkConnectionFlags)flags { + PFReachabilityState reachabilityState = PFReachabilityStateNotReachable; + + if ((flags & kSCNetworkReachabilityFlagsReachable) == 0) { + // if target host is not reachable + return reachabilityState; + } + + if ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0) { + // if target host is reachable and no connection is required + // then we'll assume (for now) that your on Wi-Fi + reachabilityState = PFReachabilityStateReachableViaWiFi; + } + if ((((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) || + (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0)) { + // ... and the connection is on-demand (or on-traffic) if the + // calling application is using the CFSocketStream or higher APIs + if ((flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0) { + // ... and no [user] intervention is needed + reachabilityState = PFReachabilityStateReachableViaWiFi; + } + } + +#if TARGET_OS_IPHONE + if (((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN) && + ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0)) { + // ... but WWAN connections are OK if the calling application + // is using the CFNetwork (CFSocketStream?) APIs. + // ... and a network connection is not required (kSCNetworkReachabilityFlagsConnectionRequired) + // which could be et w/connection flag (e.g. IsWWAN) indicating type of connection required. + reachabilityState = PFReachabilityStateReachableViaCell; + } +#endif + + return reachabilityState; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithURL:(NSURL *)url { + self = [super init]; + if (!self) return nil; + + _synchronizationQueue = dispatch_queue_create("com.parse.reachability", DISPATCH_QUEUE_CONCURRENT); + _listenersArray = [NSMutableArray array]; + [self _startMonitoringReachabilityWithURL:url]; + + return self; +} + ++ (instancetype)sharedParseReachability { + static PFReachability *reachability; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSString *serverUrlAsString = [NSString stringWithFormat:@"%@/%ld", kPFParseServer, (long)PARSE_API_VERSION]; + NSURL *serverUrl = [NSURL URLWithString:serverUrlAsString]; + reachability = [[self alloc] initWithURL:serverUrl]; + }); + return reachability; +} + +///-------------------------------------- +#pragma mark - Dealloc +///-------------------------------------- + +- (void)dealloc { + if (_networkReachability != NULL) { + SCNetworkReachabilitySetCallback(_networkReachability, NULL, NULL); + SCNetworkReachabilitySetDispatchQueue(_networkReachability, NULL); + CFRelease(_networkReachability); + _networkReachability = NULL; + } +} + +///-------------------------------------- +#pragma mark - Listeners +///-------------------------------------- + +- (void)addListener:(id)listener { + PFWeakValue *value = [PFWeakValue valueWithWeakObject:listener]; + dispatch_barrier_sync(_synchronizationQueue, ^{ + [_listenersArray addObject:value]; + }); +} + +- (void)removeListener:(id)listener { + dispatch_barrier_sync(_synchronizationQueue, ^{ + [_listenersArray filterUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) { + id weakObject = [evaluatedObject weakObject]; + return (weakObject == nil || weakObject == listener); + }]]; + }); +} + +- (void)removeAllListeners { + dispatch_barrier_sync(_synchronizationQueue, ^{ + [_listenersArray removeAllObjects]; + }); +} + +- (void)_notifyAllListeners { + @weakify(self); + dispatch_async(_synchronizationQueue, ^{ + @strongify(self); + PFReachabilityState state = [[self class] _reachabilityStateForFlags:_flags]; + for (PFWeakValue *value in _listenersArray) { + [value.weakObject reachability:self didChangeReachabilityState:state]; + } + + dispatch_barrier_async(_synchronizationQueue, ^{ + [_listenersArray filterUsingPredicate:[NSPredicate predicateWithFormat:@"SELf.weakObject != nil"]]; + }); + }); +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (void)setFlags:(SCNetworkReachabilityFlags)flags { + dispatch_barrier_async(_synchronizationQueue, ^{ + _flags = flags; + [self _notifyAllListeners]; + }); +} + +- (SCNetworkReachabilityFlags)flags { + __block SCNetworkReachabilityFlags flags; + dispatch_sync(_synchronizationQueue, ^{ + flags = _flags; + }); + return flags; +} + +- (PFReachabilityState)currentState { + return [[self class] _reachabilityStateForFlags:self.flags]; +} + +///-------------------------------------- +#pragma mark - Reachability +///-------------------------------------- + +- (void)_startMonitoringReachabilityWithURL:(NSURL *)url { + dispatch_barrier_async(_synchronizationQueue, ^{ + _networkReachability = SCNetworkReachabilityCreateWithName(NULL, [[url host] UTF8String]); + if (_networkReachability != NULL) { + // Set the initial flags + SCNetworkReachabilityFlags flags; + SCNetworkReachabilityGetFlags(_networkReachability, &flags); + self.flags = flags; + + // Set up notification for changes in reachability. + SCNetworkReachabilityContext context = {0, (__bridge void *)(self), NULL, NULL, NULL}; + if (SCNetworkReachabilitySetCallback(_networkReachability, _reachabilityCallback, &context)) { + if (!SCNetworkReachabilitySetDispatchQueue(_networkReachability, _synchronizationQueue)) { + PFLogError(PFLoggingTagCommon, @"Unable to start listening for network connectivity status."); + } + } + } + }); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFTaskQueue.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFTaskQueue.h new file mode 100644 index 0000000..c2a9a3e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFTaskQueue.h @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@class BFTask PF_GENERIC(__covariant BFGenericType); + +@interface PFTaskQueue : NSObject + +// The lock for this task queue. +@property (nonatomic, strong, readonly) NSObject *mutex; + +/*! + Enqueues a task created by the given block. Then block is given a task to + await once state is snapshotted (e.g. after capturing session tokens at the + time of the save call. Awaiting this task will wait for the created task's + turn in the queue. + */ +- (BFTask *)enqueue:(BFTask *(^)(BFTask *toAwait))taskStart; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFTaskQueue.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFTaskQueue.m new file mode 100644 index 0000000..fb6d111 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFTaskQueue.m @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFTaskQueue.h" + +#import + +@interface PFTaskQueue () + +@property (nonatomic, strong, readwrite) BFTask *tail; +@property (nonatomic, strong, readwrite) NSObject *mutex; + +@end + +@implementation PFTaskQueue + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + self.mutex = [[NSObject alloc] init]; + + return self; +} + +- (BFTask *)enqueue:(BFTask *(^)(BFTask *toAwait))taskStart { + @synchronized (self.mutex) { + BFTask *oldTail = self.tail ?: [BFTask taskWithResult:nil]; + + // The task created by taskStart is responsible for waiting on the + // task passed to it before doing its work. This gives it an opportunity + // to do startup work or save state before waiting for its turn in the queue. + BFTask *task = taskStart(oldTail); + + // The tail task should be dependent on the old tail as well as the newly-created + // task. This prevents cancellation of the new task from causing the queue to run + // out of order. + self.tail = [BFTask taskForCompletionOfAllTasks:@[oldTail, task]]; + + return task; + } +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFWeakValue.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFWeakValue.h new file mode 100644 index 0000000..2ff1e47 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFWeakValue.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@interface PFWeakValue : NSObject + +@property (nonatomic, weak, readonly) id weakObject; + ++ (instancetype)valueWithWeakObject:(id)object; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PFWeakValue.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFWeakValue.m new file mode 100644 index 0000000..a129202 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PFWeakValue.m @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFWeakValue.h" + +@interface PFWeakValue () + +@property (nonatomic, weak, readwrite) id weakObject; + +@end + +@implementation PFWeakValue + ++ (instancetype)valueWithWeakObject:(id)object { + PFWeakValue *value = [[self alloc] init]; + value.weakObject = object; + return value; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseInternal.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseInternal.h new file mode 100644 index 0000000..58e17fc --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseInternal.h @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +# import + +#import "PFAssert.h" +#import "PFCommandCache.h" +#import "PFEventuallyQueue.h" +#import "PFFieldOperation.h" +#import "PFGeoPointPrivate.h" +#import "PFInternalUtils.h" +#import "PFKeyValueCache.h" +#import "PFObjectPrivate.h" +#import "PFUserPrivate.h" +#import "ParseModule.h" + +@interface Parse (ParseModules) + ++ (void)enableParseModule:(id)module; ++ (void)disableParseModule:(id)module; ++ (BOOL)isModuleEnabled:(id)module; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseManager.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseManager.h new file mode 100644 index 0000000..67328ab --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseManager.h @@ -0,0 +1,101 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFDataProvider.h" +#import "PFOfflineStore.h" +#import "PFMacros.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFAnalyticsController; +@class PFCoreManager; +@class PFInstallationIdentifierStore; +@class PFKeychainStore; +@class PFPurchaseController; +@class PFPushManager; + +@interface ParseManager : NSObject + +@property (nonatomic, copy, readonly) NSString *applicationId; +@property (nonatomic, copy, readonly) NSString *clientKey; + +@property (nonatomic, copy, readonly) NSString *applicationGroupIdentifier; +@property (nonatomic, copy, readonly) NSString *containingApplicationIdentifier; + +@property (nonatomic, strong, readonly) PFCoreManager *coreManager; +@property (nonatomic, strong) PFPushManager *pushManager; + +@property (nonatomic, strong) PFAnalyticsController *analyticsController; + +#if TARGET_OS_IOS +@property (nonatomic, strong) PFPurchaseController *purchaseController; +#endif + +///-------------------------------------- +/// @name Initialization +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; + +/*! + Initializes an instance of ParseManager class. + + @param applicationId ApplicationId of Parse app. + @param clientKey ClientKey of Parse app. + + @returns `ParseManager` instance. + */ +- (instancetype)initWithApplicationId:(NSString *)applicationId + clientKey:(NSString *)clientKey NS_DESIGNATED_INITIALIZER; + +/*! + Configures ParseManager with specified properties. + + @param applicationGroupIdentifier Shared AppGroup container identifier. + @param containingApplicationIdentifier Containg application bundle identifier (for extensions). + @param localDataStoreEnabled `BOOL` flag to enable local datastore or not. + */ +- (void)configureWithApplicationGroupIdentifier:(NSString *)applicationGroupIdentifier + containingApplicationIdentifier:(NSString *)containingApplicationIdentifier + enabledLocalDataStore:(BOOL)localDataStoreEnabled; + +///-------------------------------------- +/// @name Offline Store +///-------------------------------------- + +- (void)loadOfflineStoreWithOptions:(PFOfflineStoreOptions)options; + +///-------------------------------------- +/// @name Eventually Queue +///-------------------------------------- + +- (void)clearEventuallyQueue; + +///-------------------------------------- +/// @name Core Manager +///-------------------------------------- + +- (void)unloadCoreManager; + +///-------------------------------------- +/// @name Preloading +///-------------------------------------- + +- (BFTask *)preloadDiskObjectsToMemoryAsync; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseManager.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseManager.m new file mode 100644 index 0000000..74756c3 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseManager.m @@ -0,0 +1,466 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "ParseManager.h" + +#import + +#import "BFTask+Private.h" +#import "PFAnalyticsController.h" +#import "PFAssert.h" +#import "PFCommandCache.h" +#import "PFConfig.h" +#import "PFCoreManager.h" +#import "PFFileManager.h" +#import "PFInstallationIdentifierStore.h" +#import "PFKeyValueCache.h" +#import "PFKeychainStore.h" +#import "PFLogging.h" +#import "PFMultiProcessFileLockController.h" +#import "PFPinningEventuallyQueue.h" +#import "PFPushManager.h" +#import "PFUser.h" +#import "PFURLSessionCommandRunner.h" + +#if !TARGET_OS_WATCH +#import "PFInstallation.h" +#endif + +#if TARGET_OS_IOS +#import "PFPurchaseController.h" +#import "PFProduct.h" +#endif + +static NSString *const _ParseApplicationIdFileName = @"applicationId"; + +@interface ParseManager () +{ + dispatch_queue_t _offlineStoreAccessQueue; + dispatch_queue_t _eventuallyQueueAccessQueue; + dispatch_queue_t _keychainStoreAccessQueue; + dispatch_queue_t _fileManagerAccessQueue; + dispatch_queue_t _installationIdentifierStoreAccessQueue; + dispatch_queue_t _commandRunnerAccessQueue; + dispatch_queue_t _keyValueCacheAccessQueue; + dispatch_queue_t _coreManagerAccessQueue; + dispatch_queue_t _pushManagerAccessQueue; + dispatch_queue_t _controllerAccessQueue; + + dispatch_queue_t _preloadQueue; +} + +@end + +@implementation ParseManager + +@synthesize keychainStore = _keychainStore; +@synthesize fileManager = _fileManager; +@synthesize offlineStore = _offlineStore; +@synthesize eventuallyQueue = _eventuallyQueue; +@synthesize installationIdentifierStore = _installationIdentifierStore; +@synthesize commandRunner = _commandRunner; +@synthesize keyValueCache = _keyValueCache; +@synthesize coreManager = _coreManager; +@synthesize analyticsController = _analyticsController; +@synthesize pushManager = _pushManager; +#if TARGET_OS_IOS +@synthesize purchaseController = _purchaseController; +#endif + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithApplicationId:(NSString *)applicationId clientKey:(NSString *)clientKey { + self = [super init]; + if (!self) return nil; + + _offlineStoreAccessQueue = dispatch_queue_create("com.parse.offlinestore.access", DISPATCH_QUEUE_CONCURRENT); + _eventuallyQueueAccessQueue = dispatch_queue_create("com.parse.eventuallyqueue.access", DISPATCH_QUEUE_SERIAL); + _keychainStoreAccessQueue = dispatch_queue_create("com.parse.keychainstore.access", DISPATCH_QUEUE_SERIAL); + _fileManagerAccessQueue = dispatch_queue_create("com.parse.filemanager.access", DISPATCH_QUEUE_SERIAL); + _installationIdentifierStoreAccessQueue = dispatch_queue_create("com.parse.installationidentifierstore.access", + DISPATCH_QUEUE_SERIAL); + _commandRunnerAccessQueue = dispatch_queue_create("com.parse.commandrunner.access", DISPATCH_QUEUE_SERIAL); + _keyValueCacheAccessQueue = dispatch_queue_create("com.parse.keyvaluecache.access", DISPATCH_QUEUE_SERIAL); + _coreManagerAccessQueue = dispatch_queue_create("com.parse.coreManager.access", DISPATCH_QUEUE_SERIAL); + _pushManagerAccessQueue = dispatch_queue_create("com.parse.pushManager.access", DISPATCH_QUEUE_SERIAL); + _controllerAccessQueue = dispatch_queue_create("com.parse.controller.access", DISPATCH_QUEUE_SERIAL); + _preloadQueue = dispatch_queue_create("com.parse.preload", DISPATCH_QUEUE_SERIAL); + + _applicationId = [applicationId copy]; + _clientKey = [clientKey copy]; + + return self; +} + +- (void)configureWithApplicationGroupIdentifier:(NSString *)applicationGroupIdentifier + containingApplicationIdentifier:(NSString *)containingApplicationIdentifier + enabledLocalDataStore:(BOOL)localDataStoreEnabled { + _applicationGroupIdentifier = [applicationGroupIdentifier copy]; + _containingApplicationIdentifier = [containingApplicationIdentifier copy]; + + // Migrate any data if it's required. + [self _migrateSandboxDataToApplicationGroupContainerIfNeeded]; + + // Make sure the data on disk for Parse is for the current application. + [self _checkApplicationId]; + + if (localDataStoreEnabled) { + PFOfflineStoreOptions options = (_applicationGroupIdentifier ? + PFOfflineStoreOptionAlwaysFetchFromSQLite : 0); + [self loadOfflineStoreWithOptions:options]; + } +} + +///-------------------------------------- +#pragma mark - Offline Store +///-------------------------------------- + +- (void)loadOfflineStoreWithOptions:(PFOfflineStoreOptions)options { + PFConsistencyAssert(!_offlineStore, @"Can't load offline store more than once."); + dispatch_barrier_sync(_offlineStoreAccessQueue, ^{ + _offlineStore = [[PFOfflineStore alloc] initWithFileManager:self.fileManager options:options]; + }); +} + +- (void)setOfflineStore:(PFOfflineStore *)offlineStore { + dispatch_barrier_sync(_offlineStoreAccessQueue, ^{ + _offlineStore = offlineStore; + }); +} + +- (PFOfflineStore *)offlineStore { + __block PFOfflineStore *offlineStore = nil; + dispatch_sync(_offlineStoreAccessQueue, ^{ + offlineStore = _offlineStore; + }); + return offlineStore; +} + +- (BOOL)isOfflineStoreLoaded { + return (self.offlineStore != nil); +} + +///-------------------------------------- +#pragma mark - Eventually Queue +///-------------------------------------- + +- (PFEventuallyQueue *)eventuallyQueue { + __block PFEventuallyQueue *queue = nil; + dispatch_sync(_eventuallyQueueAccessQueue, ^{ + if (!_eventuallyQueue || + (self.offlineStoreLoaded && [_eventuallyQueue isKindOfClass:[PFCommandCache class]]) || + (!self.offlineStoreLoaded && [_eventuallyQueue isKindOfClass:[PFPinningEventuallyQueue class]])) { + + id commandRunner = self.commandRunner; + + PFCommandCache *commandCache = [self _newCommandCache]; + _eventuallyQueue = (self.offlineStoreLoaded ? + [PFPinningEventuallyQueue newDefaultPinningEventuallyQueueWithCommandRunner:commandRunner] + : + commandCache); + + // We still need to clear out the old command cache even if we're using Pinning in case + // anything is left over when the user upgraded. Checking number of pending and then + // clearing should be enough. + if (self.offlineStoreLoaded && commandCache.commandCount > 0) { + [commandCache removeAllCommands]; + } + } + queue = _eventuallyQueue; + }); + return queue; +} + +- (PFCommandCache *)_newCommandCache { + // Construct the path to the cache directory in /Library/Private Documents/Parse/Command Cache + // This isn't in the "Library/Caches" directory because we don't want the OS clearing it for us. + // It falls under the category of "offline data". + // See https://developer.apple.com/library/ios/#qa/qa1699/_index.html + NSString *folderPath = [self.fileManager parseDefaultDataDirectoryPath]; + return [PFCommandCache newDefaultCommandCacheWithCommandRunner:self.commandRunner cacheFolderPath:folderPath]; +} + +- (void)clearEventuallyQueue { + dispatch_sync(_preloadQueue, ^{ + dispatch_sync(_eventuallyQueueAccessQueue, ^{ + [_eventuallyQueue removeAllCommands]; + [_eventuallyQueue pause]; + _eventuallyQueue = nil; + }); + }); +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +#pragma mark KeychainStore + +- (PFKeychainStore *)keychainStore { + __block PFKeychainStore *store = nil; + dispatch_sync(_keychainStoreAccessQueue, ^{ + if (!_keychainStore) { + NSString *bundleIdentifier = (_containingApplicationIdentifier ?: [[NSBundle mainBundle] bundleIdentifier]); + NSString *service = [NSString stringWithFormat:@"%@.%@", bundleIdentifier, PFKeychainStoreDefaultService]; + _keychainStore = [[PFKeychainStore alloc] initWithService:service]; + } + store = _keychainStore; + }); + return store; +} + +#pragma mark FileManager + +- (PFFileManager *)fileManager { + __block PFFileManager *fileManager = nil; + dispatch_sync(_fileManagerAccessQueue, ^{ + if (!_fileManager) { + _fileManager = [[PFFileManager alloc] initWithApplicationIdentifier:self.applicationId + applicationGroupIdentifier:self.applicationGroupIdentifier]; + } + fileManager = _fileManager; + }); + return fileManager; +} + +#pragma mark InstallationIdentifierStore + +- (PFInstallationIdentifierStore *)installationIdentifierStore { + __block PFInstallationIdentifierStore *store = nil; + dispatch_sync(_installationIdentifierStoreAccessQueue, ^{ + if (!_installationIdentifierStore) { + _installationIdentifierStore = [[PFInstallationIdentifierStore alloc] initWithFileManager:self.fileManager]; + } + store = _installationIdentifierStore; + }); + return store; +} + +#pragma mark CommandRunner + +- (id)commandRunner { + __block id runner = nil; + dispatch_sync(_commandRunnerAccessQueue, ^{ + if (!_commandRunner) { + _commandRunner = [PFURLSessionCommandRunner commandRunnerWithDataSource:self + applicationId:self.applicationId + clientKey:self.clientKey]; + } + runner = _commandRunner; + }); + return runner; +} + +#pragma mark KeyValueCache + +- (PFKeyValueCache *)keyValueCache { + __block PFKeyValueCache *cache = nil; + dispatch_sync(_keyValueCacheAccessQueue, ^{ + if (!_keyValueCache) { + NSString *path = [self.fileManager parseCacheItemPathForPathComponent:@"../ParseKeyValueCache/"]; + _keyValueCache = [[PFKeyValueCache alloc] initWithCacheDirectoryPath:path]; + } + cache = _keyValueCache; + }); + return cache; +} + +#pragma mark CoreManager + +- (PFCoreManager *)coreManager { + __block PFCoreManager *manager = nil; + dispatch_sync(_coreManagerAccessQueue, ^{ + if (!_coreManager) { + _coreManager = [PFCoreManager managerWithDataSource:self]; + } + manager = _coreManager; + }); + return manager; +} + +- (void)unloadCoreManager { + dispatch_sync(_coreManagerAccessQueue, ^{ + _coreManager = nil; + }); +} + +#if !TARGET_OS_WATCH + +#pragma mark PushManager + +- (PFPushManager *)pushManager { + __block PFPushManager *manager = nil; + dispatch_sync(_pushManagerAccessQueue, ^{ + if (!_pushManager) { + _pushManager = [PFPushManager managerWithCommonDataSource:self coreDataSource:self.coreManager]; + } + manager = _pushManager; + }); + return manager; +} + +- (void)setPushManager:(PFPushManager *)pushManager { + dispatch_sync(_pushManagerAccessQueue, ^{ + _pushManager = pushManager; + }); +} + +#endif + +#pragma mark AnalyticsController + +- (PFAnalyticsController *)analyticsController { + __block PFAnalyticsController *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_analyticsController) { + _analyticsController = [[PFAnalyticsController alloc] initWithDataSource:self]; + } + controller = _analyticsController; + }); + return controller; +} + +- (void)setAnalyticsController:(PFAnalyticsController *)analyticsController { + dispatch_sync(_controllerAccessQueue, ^{ + if (_analyticsController != analyticsController) { + _analyticsController = analyticsController; + } + }); +} + +#if TARGET_OS_IOS + +#pragma mark PurchaseController + +- (PFPurchaseController *)purchaseController { + __block PFPurchaseController *controller = nil; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_purchaseController) { + _purchaseController = [PFPurchaseController controllerWithCommandRunner:self.commandRunner + fileManager:self.fileManager + bundle:[NSBundle mainBundle]]; + } + controller = _purchaseController; + }); + return controller; +} + +- (void)setPurchaseController:(PFPurchaseController *)purchaseController { + dispatch_sync(_controllerAccessQueue, ^{ + _purchaseController = purchaseController; + }); +} + +#endif + +///-------------------------------------- +#pragma mark - Preloading +///-------------------------------------- + +- (BFTask *)preloadDiskObjectsToMemoryAsync { + @weakify(self); + return [BFTask taskFromExecutor:[BFExecutor executorWithDispatchQueue:_preloadQueue] withBlock:^id{ + @strongify(self); + [PFUser currentUser]; + [PFConfig currentConfig]; +#if !TARGET_OS_WATCH + [PFInstallation currentInstallation]; +#endif + + [self eventuallyQueue]; + + return nil; + }]; +} + +///-------------------------------------- +#pragma mark - ApplicationId +///-------------------------------------- + +/*! + Verifies that the data stored on disk for Parse was generated using the same application that is running now. + */ +- (void)_checkApplicationId { + NSFileManager *systemFileManager = [NSFileManager defaultManager]; + + // Make sure the current version of the cache is for this application id. + NSString *applicationIdFile = [self.fileManager parseDataItemPathForPathComponent:_ParseApplicationIdFileName]; + [[PFMultiProcessFileLockController sharedController] beginLockedContentAccessForFileAtPath:applicationIdFile]; + + if ([systemFileManager fileExistsAtPath:applicationIdFile]) { + NSError *error = nil; + NSString *applicationId = [NSString stringWithContentsOfFile:applicationIdFile + encoding:NSUTF8StringEncoding + error:&error]; + if (!error && ![applicationId isEqualToString:self.applicationId]) { + // The application id has changed, so everything on disk is invalid. + [self.keychainStore removeAllObjects]; + [self.keyValueCache removeAllObjects]; + + NSArray *tasks = @[ + // Remove the contents only, but don't delete the folder. + [PFFileManager removeDirectoryContentsAsyncAtPath:[self.fileManager parseDefaultDataDirectoryPath]], + // Completely remove everything in deprecated folder. + [PFFileManager removeItemAtPathAsync:[self.fileManager parseDataDirectoryPath_DEPRECATED]] + ]; + [[BFTask taskForCompletionOfAllTasks:tasks] waitForResult:nil withMainThreadWarning:NO]; + } + } + + if (![systemFileManager fileExistsAtPath:applicationIdFile]) { + NSError *error = nil; + BFTask *writeTask = [PFFileManager writeStringAsync:self.applicationId toFile:applicationIdFile]; + [writeTask waitForResult:&error withMainThreadWarning:NO]; + if (error) { + PFLogError(PFLoggingTagCommon, @"Unable to create applicationId file with error: %@", error); + } + } + + [[PFMultiProcessFileLockController sharedController] endLockedContentAccessForFileAtPath:applicationIdFile]; +} + +///-------------------------------------- +#pragma mark - Data Sharing +///-------------------------------------- + +- (void)_migrateSandboxDataToApplicationGroupContainerIfNeeded { + // There is no need to migrate anything on OSX, since we are using globally available folder. +#if TARGET_OS_IOS + // Do nothing if there is no application group container or containing application is specified. + if (!self.applicationGroupIdentifier || self.containingApplicationIdentifier) { + return; + } + + NSString *localSandboxDataPath = [self.fileManager parseLocalSandboxDataDirectoryPath]; + NSString *dataPath = [self.fileManager parseDefaultDataDirectoryPath]; + NSArray *contents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:localSandboxDataPath error:nil]; + if ([contents count] != 0) { + // If moving files fails - just log the error, but don't fail. + NSError *error = nil; + [[PFFileManager moveContentsOfDirectoryAsyncAtPath:localSandboxDataPath + toDirectoryAtPath:dataPath + executor:[BFExecutor immediateExecutor]] waitForResult:&error]; + if (error) { + PFLogError(PFLoggingTagCommon, + @"Failed to migrate local sandbox data to shared container with error %@", + [error localizedDescription]); + } else { + [[PFFileManager removeItemAtPathAsync:localSandboxDataPath withFileLock:NO] waitForResult:nil]; + } + } +#endif +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseModule.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseModule.h new file mode 100644 index 0000000..a9a1a49 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseModule.h @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@protocol ParseModule + +- (void)parseDidInitializeWithApplicationId:(NSString *)applicationId clientKey:(NSString *)clientKey; + +@end + +@interface ParseModuleCollection : NSObject + +- (void)addParseModule:(id)module; +- (void)removeParseModule:(id)module; + +- (BOOL)containsModule:(id)module; +- (NSUInteger)modulesCount; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseModule.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseModule.m new file mode 100644 index 0000000..5167762 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ParseModule.m @@ -0,0 +1,134 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "ParseModule.h" + +///-------------------------------------- +#pragma mark - ParseModuleCollection +///-------------------------------------- + +typedef void (^ParseModuleEnumerationBlock)(id module, BOOL *stop, BOOL *remove); + +@interface ParseModuleCollection () + +@property (atomic, strong) dispatch_queue_t collectionQueue; +@property (atomic, strong) NSPointerArray *modules; + +@end + +@implementation ParseModuleCollection + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + self = [super init]; + if (self) { + _collectionQueue = dispatch_queue_create("com.parse.ParseModuleCollection", DISPATCH_QUEUE_SERIAL); + _modules = [NSPointerArray weakObjectsPointerArray]; + } + return self; +} + +///-------------------------------------- +#pragma mark - Collection +///-------------------------------------- + +- (void)addParseModule:(id)module { + if (module == nil) { + return; + } + + [self performCollectionAccessBlock:^{ + [self.modules addPointer:(__bridge void *)module]; + }]; +} + +- (void)removeParseModule:(id)module { + if (module == nil) { + return; + } + + [self enumerateModulesWithBlock:^(id enumeratedModule, BOOL *stop, BOOL *remove) { + *remove = (module == enumeratedModule); + }]; +} + +- (BOOL)containsModule:(id)module { + __block BOOL retValue = NO; + [self enumerateModulesWithBlock:^(id enumeratedModule, BOOL *stop, BOOL *remove) { + if (module == enumeratedModule) { + retValue = YES; + *stop = YES; + } + }]; + return retValue; +} + +- (NSUInteger)modulesCount { + return [self.modules count]; +} + +///-------------------------------------- +#pragma mark - ParseModule +///-------------------------------------- + +- (void)parseDidInitializeWithApplicationId:(NSString *)applicationId clientKey:(NSString *)clientKey { + [self enumerateModulesWithBlock:^(id module, BOOL *stop, BOOL *remove) { + dispatch_async(dispatch_get_main_queue(), ^{ + [module parseDidInitializeWithApplicationId:applicationId clientKey:clientKey]; + }); + }]; +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + +- (void)performCollectionAccessBlock:(dispatch_block_t)block { + dispatch_sync(self.collectionQueue, block); +} + +/*! + Enumerates all existing modules in this collection. + + NOTE: This **will modify the contents of the collection** if any of the modules were deallocated since last loop. + + @param block the block to enumerate with. + */ +- (void)enumerateModulesWithBlock:(ParseModuleEnumerationBlock)block { + [self performCollectionAccessBlock:^{ + NSMutableIndexSet *toRemove = [[NSMutableIndexSet alloc] init]; + + NSUInteger index = 0; + BOOL stop = NO; + + for (__strong id module in self.modules) { + BOOL remove = module == nil; + if (!remove) { + block(module, &stop, &remove); + } + + if (remove) { + [toRemove addIndex:index]; + } + + if (stop) break; + index++; + } + + // NSPointerArray doesn't have a -removeObjectsAtIndexes:... WHY!?!? + for (index = toRemove.firstIndex; index != NSNotFound; index = [toRemove indexGreaterThanIndex:index]) { + [self.modules removePointerAtIndex:index]; + } + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Parse_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Parse_Private.h new file mode 100644 index 0000000..176dd1f --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Parse_Private.h @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "ParseManager.h" + +@class PFEventuallyQueue; + +@interface Parse () + ++ (void)_resetDataSharingIdentifiers; + ++ (ParseManager *)_currentManager; ++ (void)_clearCurrentManager; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Product/PFProduct+Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Product/PFProduct+Private.h new file mode 100644 index 0000000..af69e41 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Product/PFProduct+Private.h @@ -0,0 +1,46 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFProduct.h" + +typedef enum { + PFProductDownloadStateStart, + PFProductDownloadStateDownloading, + PFProductDownloadStateDownloaded +} PFProductDownloadState; + +@interface PFProduct () { + NSDecimalNumber *price; + NSLocale *priceLocale; + NSInteger progress; + NSString *contentPath; +} + +/// The properties below are transient properties, not stored on Parse's server. +/*! + The price of the product, discovered via iTunes Connect. + */ +@property (nonatomic, strong) NSDecimalNumber *price; + +/*! + The price locale of the product. + */ +@property (nonatomic, strong) NSLocale *priceLocale; + +/*! + The progress of the download, if one is in progress. It's an integer between 0 and 100. + */ +@property (nonatomic, assign) NSInteger progress; + +/*! + The content path of the download. + */ +@property (nonatomic, strong) NSString *contentPath; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.h new file mode 100644 index 0000000..2c9c3da --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.h @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import +#import + +#import + +@class BFTask PF_GENERIC(__covariant BFGenericType); + +PF_WATCH_UNAVAILABLE @interface PFProductsRequestResult : NSObject + +@property (nonatomic, copy, readonly) NSSet *validProducts; +@property (nonatomic, copy, readonly) NSSet *invalidProductIdentifiers; + +- (instancetype)initWithProductsResponse:(SKProductsResponse *)response; + +@end + +/*! + * This class is responsible for handling the first part of an IAP handshake. + * It sends a request to iTunes Connect with a set of product identifiers, and iTunes returns + * with a list of valid and invalid products. The class then proceeds to call the completion block passed in. + */ +@interface PFProductsRequestHandler : NSObject + +- (instancetype)initWithProductsRequest:(SKProductsRequest *)request; + +- (BFTask *)findProductsAsync; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.m new file mode 100644 index 0000000..4dbce94 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.m @@ -0,0 +1,92 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFProductsRequestHandler.h" + +#import +#import + +@implementation PFProductsRequestResult + +- (instancetype)initWithProductsResponse:(SKProductsResponse *)response { + self = [super init]; + if (!self) return nil; + + _validProducts = [NSSet setWithArray:response.products]; + _invalidProductIdentifiers = [NSSet setWithArray:response.invalidProductIdentifiers]; + + return self; +} + +@end + +@interface PFProductsRequestHandler () + +@property (nonatomic, strong) BFTaskCompletionSource *taskCompletionSource; +@property (nonatomic, strong) SKProductsRequest *productsRequest; + +@end + +@implementation PFProductsRequestHandler + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithProductsRequest:(SKProductsRequest *)request { + self = [super init]; + if (!self) return nil; + + _productsRequest = request; + _productsRequest.delegate = self; + + return self; +} + +///-------------------------------------- +#pragma mark - Dealloc +///-------------------------------------- + +- (void)dealloc { + // Clear the delegate, as it's still an `assign`, instead of `weak` + _productsRequest.delegate = nil; +} + +///-------------------------------------- +#pragma mark - Find +///-------------------------------------- + +- (BFTask *)findProductsAsync { + _taskCompletionSource = [BFTaskCompletionSource taskCompletionSource]; + [_productsRequest start]; + return _taskCompletionSource.task; +} + +///-------------------------------------- +#pragma mark - SKProductsRequestDelegate +///-------------------------------------- + +- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { + PFProductsRequestResult *result = [[PFProductsRequestResult alloc] initWithProductsResponse:response]; + [self.taskCompletionSource trySetResult:result]; +} + +- (void)request:(SKRequest *)request didFailWithError:(NSError *)error { + [self.taskCompletionSource trySetError:error]; + + // according to documentation, this method does not call requestDidFinish + request.delegate = nil; +} + +- (void)requestDidFinish:(SKRequest *)request { + // the documentation assures that this is the point safe to get rid of the request + request.delegate = nil; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo.h new file mode 100644 index 0000000..efd4c17 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo.h @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFBaseState.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFPropertyInfo : NSObject + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithClass:(Class)kls + name:(NSString *)propertyName; + +- (instancetype)initWithClass:(Class)kls + name:(NSString *)propertyName + associationType:(PFPropertyInfoAssociationType)associationType NS_DESIGNATED_INITIALIZER; + ++ (instancetype)propertyInfoWithClass:(Class)kls + name:(NSString *)propertyName; + ++ (instancetype)propertyInfoWithClass:(Class)kls + name:(NSString *)propertyName + associationType:(PFPropertyInfoAssociationType)associationType; + +@property (nonatomic, copy, readonly) NSString *name; +@property (nonatomic, readonly) PFPropertyInfoAssociationType associationType; + +/*! + Returns the value of this property, + properly wrapped from the target object. + When possible, just invokes the property. + When not, uses -valueForKey:. + */ +- (nullable id)getWrappedValueFrom:(id)object; +- (void)setWrappedValue:(nullable id)value forObject:(id)object; + +// Moves the value from one object to the other, based on the association type given. +- (void)takeValueFrom:(id)one toObject:(id)two; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo.m new file mode 100644 index 0000000..9d1273c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo.m @@ -0,0 +1,212 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPropertyInfo_Private.h" + +#import + +#import "PFAssert.h" +#import "PFMacros.h" +#import "PFPropertyInfo_Runtime.h" + +static inline NSString *safeStringWithPropertyAttributeValue(objc_property_t property, const char *attribute) { + char *value = property_copyAttributeValue(property, attribute); + if (!value) + return nil; + + // NSString initWithBytesNoCopy doesn't seem to work, so fall back to the CF counterpart. + return (__bridge_transfer NSString *)CFStringCreateWithCStringNoCopy(NULL, + value, + kCFStringEncodingUTF8, + kCFAllocatorMalloc); +} + +static inline NSString *stringByCapitalizingFirstCharacter(NSString *string) { + return [NSString stringWithFormat:@"%C%@", + (unichar)toupper([string characterAtIndex:0]), + [string substringFromIndex:1]]; +} + +@implementation PFPropertyInfo + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithClass:(Class)kls name:(NSString *)propertyName { + return [self initWithClass:kls name:propertyName associationType:_associationType]; +} + +- (instancetype)initWithClass:(Class)kls name:(NSString *)propertyName + associationType:(PFPropertyInfoAssociationType)associationType { + self = [super init]; + if (!self) return nil; + + _sourceClass = kls; + _name = [propertyName copy]; + _associationType = associationType; + + objc_property_t objcProperty = class_getProperty(kls, [_name UTF8String]); + + do { + _ivar = class_getInstanceVariable(kls, [safeStringWithPropertyAttributeValue(objcProperty, "V") UTF8String]); + if (_ivar) break; + + // Walk the superclass heirarchy for the property definition. Because property attributes are not inherited + // (but property definitions *are*), we must be careful to ensure that the variable was never actually + // implemented and synthesized in a superclass. Note if the same property is synthesized in multiple classes + // with different iVars, we take the class furthest from the root class as the 'source of truth'. + Class superClass = class_getSuperclass(kls); + while (superClass) { + objc_property_t superProperty = class_getProperty(superClass, [_name UTF8String]); + if (!superProperty) break; + + _ivar = class_getInstanceVariable(superClass, [safeStringWithPropertyAttributeValue(superProperty, "V") UTF8String]); + if (_ivar) break; + + superClass = class_getSuperclass(superClass); + } + + if (_ivar) break; + + // Attempt to infer the variable name. + _ivar = class_getInstanceVariable(kls, [[@"_" stringByAppendingString:_name] UTF8String]); + if (_ivar) break; + + _ivar = class_getInstanceVariable(kls, [_name UTF8String]); + } while (0); + + _typeEncoding = safeStringWithPropertyAttributeValue(objcProperty, "T"); + _object = [_typeEncoding hasPrefix:@"@"]; + + NSString *propertyGetter = safeStringWithPropertyAttributeValue(objcProperty, "G") ?: _name; + _getterSelector = NSSelectorFromString(propertyGetter); + + BOOL readonly = safeStringWithPropertyAttributeValue(objcProperty, "R") != nil; + NSString *propertySetter = safeStringWithPropertyAttributeValue(objcProperty, "S"); + if (propertySetter == nil && !readonly) { + propertySetter = [NSString stringWithFormat:@"set%@:", stringByCapitalizingFirstCharacter(_name)]; + } + + _setterSelector = NSSelectorFromString(propertySetter); + + if (_associationType == PFPropertyInfoAssociationTypeDefault) { + BOOL isCopy = safeStringWithPropertyAttributeValue(objcProperty, "C") != nil; + BOOL isWeak = safeStringWithPropertyAttributeValue(objcProperty, "W") != nil; + BOOL isRetain = safeStringWithPropertyAttributeValue(objcProperty, "&") != nil; + + if (isWeak) { + _associationType = PFPropertyInfoAssociationTypeWeak; + } else if (isCopy) { + _associationType = PFPropertyInfoAssociationTypeCopy; + } else if (isRetain) { + _associationType = PFPropertyInfoAssociationTypeStrong; + } else { + _associationType = PFPropertyInfoAssociationTypeAssign; + } + } + + return self; +} + ++ (instancetype)propertyInfoWithClass:(Class)kls name:(NSString *)propertyName { + return [[self alloc] initWithClass:kls name:propertyName]; +} + ++ (instancetype)propertyInfoWithClass:(Class)kls name:(NSString *)propertyName + associationType:(PFPropertyInfoAssociationType)associationType { + return [[self alloc] initWithClass:kls name:propertyName associationType:associationType]; +} + +///-------------------------------------- +#pragma mark - Wrapping +///-------------------------------------- + +- (id)getWrappedValueFrom:(id)object { + if (self.object) { + return objc_msgSend_safe(id)(object, self.getterSelector); + } + + return [object valueForKey:self.name]; +} + +- (void)setWrappedValue:(id)value forObject:(id)object { + if (self.object && self.setterSelector) { + objc_msgSend_safe(void, id)(object, self.setterSelector, value); + return; + } + + [object setValue:value forKey:self.name]; +} + +///-------------------------------------- +#pragma mark - Taking +///-------------------------------------- + +- (void)takeValueFrom:(id)one toObject:(id)two { + if (!self.ivar) { + id wrappedValue = [self getWrappedValueFrom:one]; + [self setWrappedValue:wrappedValue forObject:two]; + + return; + } + + NSUInteger size = 0; + NSGetSizeAndAlignment(ivar_getTypeEncoding(self.ivar), &size, NULL); + + char valuePtr[size]; + bzero(valuePtr, size); + + NSInvocation *invocation = nil; + + // TODO: (richardross) Cache the method signatures, as those are fairly slow to calculate. + if (one && [one respondsToSelector:self.getterSelector]) { + NSMethodSignature *methodSignature = [one methodSignatureForSelector:self.getterSelector]; + invocation = [NSInvocation invocationWithMethodSignature:methodSignature]; + + [invocation setTarget:one]; + [invocation setSelector:self.getterSelector]; + } + + [invocation invoke]; + [invocation getReturnValue:valuePtr]; + + object_setIvarValue_safe(two, self.ivar, valuePtr, self.associationType); +} + +///-------------------------------------- +#pragma mark - Equality +///-------------------------------------- + +- (NSUInteger)hash { + return 0; +} + +- (BOOL)isEqual:(id)object { + if (self == object) { + return YES; + } + + if (![object isKindOfClass:[self class]]) { + return NO; + } + + PFPropertyInfo *other = object; + + // If they're the same property and one of them subclasses the other, do no further checking. + return [self.name isEqual:other.name] && + ([self.sourceClass isSubclassOfClass:other.sourceClass] || + [other.sourceClass isSubclassOfClass:self.sourceClass]); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Private.h new file mode 100644 index 0000000..db9ebea --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Private.h @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFPropertyInfo.h" + +@interface PFPropertyInfo () + +@property (atomic, assign, readonly) Class sourceClass; +@property (atomic, assign, readonly, getter=isObject) BOOL object; + +@property (atomic, copy, readonly) NSString *typeEncoding; +@property (atomic, assign, readonly) Ivar ivar; + +@property (atomic, assign, readonly) SEL getterSelector; +@property (atomic, assign, readonly) SEL setterSelector; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h new file mode 100644 index 0000000..bc1b59e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPropertyInfo.h" + +#import + +/*! + @abstract Safely sets an object's instance variable to the variable in the specified address. + @discussion The Objective-C runtime's built-in methods for setting instance variables (`object_setIvar`) and + (`object_setInstanceVariable`), are both terrible. They never read any more than a single pointer, so they + fail for structs, as well as 64 bit numbers on 32 bit platforms. Because of this, we need a solution to allow us to + safely set instance variable values whose sizes may be significantly more than a pointer. + + @note Like most Objective-C runtime methods, this WILL fail if you try and set a bitfield, so please don't do that. + + @param obj The object to operate on. + @param ivar The ivar to set the new value for. + @param fromMemory The **address** of the new value to set. + @param associationType The association type of the new value. One of PFPropertyInfoAssociationType. + */ +extern void object_setIvarValue_safe(__unsafe_unretained id obj, Ivar ivar, void *fromMemory, uint8_t associationType); + +/*! + @abstract Safely gets an object's instance variable and puts it into the specified address. + @discussion The Objective-C runtime's built-in methods for getting instance variables (`object_getIvar`) and + (`object_getInstanceVariable`), are both terrible. They never read any more than a single pointer, so they + fail for structs, as well as 64 bit numbers on 32 bit platforms. Because of this, we need a solution to allow us to + safely get instance variable values whose sizes may be significantly more than a pointer. + + @note Like most Objective-C runtime methods, this WILL fail if you try and set a bitfield, so please don't do that. + + @param obj The object to operate on. + @param ivar The ivar to get the value from. + @param toMemory The address to copy the value into. + @param associationType The assocation type of the new value. One of PFPrropertyInfoAssocationType. + */ +extern void object_getIvarValue_safe(__unsafe_unretained id obj, Ivar ivar, void *toMemory, uint8_t associationType); diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.m new file mode 100644 index 0000000..a2071f1 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.m @@ -0,0 +1,122 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPropertyInfo_Runtime.h" + +#import +#import + +/*! + This macro is really interesting. Because ARC will insert implicit retains, releases and other memory managment code + that we don't want here, we have to basically trick ARC into treating the functions we want as functions with type + `void *`. The way we do that is actually via the linker - instead of coming up with some crazy macro to forward all + arguments along to the correct function, especially when some of these functions aren't in any public headers. + + They are, however, well defined, according to the clang official ARC runtime support document: + http://clang.llvm.org/docs/AutomaticReferenceCounting.html#id55 + + That means this is unlikely to ever break. + + The weakref attribute is documented here: + https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes + + And we use this to make sure our type-invariant functions actually call the proper underlying ones. + */ +#define NO_TYPECHECK_SYMBOL(ret, fn, args...) static ret fn ## _noTypeCheck (args) __attribute__((weakref(#fn))); +#define OBJECT_GETOFFSET_PTR(obj, offset) (void *) ((uintptr_t)obj + offset) + +NO_TYPECHECK_SYMBOL(void *, objc_loadWeak, void **); + +NO_TYPECHECK_SYMBOL(void *, objc_storeWeak, void **, void *); +NO_TYPECHECK_SYMBOL(void *, objc_storeStrong, void **, void *); + +NO_TYPECHECK_SYMBOL(void *, objc_autorelease, void *); +NO_TYPECHECK_SYMBOL(void *, objc_retainAutorelease, void *); + +void object_getIvarValue_safe(__unsafe_unretained id obj, Ivar ivar, void *toMemory, uint8_t associationType) { + ptrdiff_t offset = ivar_getOffset(ivar); + void *location = OBJECT_GETOFFSET_PTR(obj, offset); + + switch (associationType) { + case PFPropertyInfoAssociationTypeDefault: + [NSException raise:NSInvalidArgumentException format:@"Invalid association type Default!"]; + break; + + case PFPropertyInfoAssociationTypeAssign: { + NSUInteger size = 0; + NSGetSizeAndAlignment(ivar_getTypeEncoding(ivar), &size, NULL); + + memcpy(toMemory, location, size); + break; + } + + case PFPropertyInfoAssociationTypeWeak: { + void *results = objc_loadWeak_noTypeCheck(location); + + memcpy(toMemory, &results, sizeof(id)); + break; + } + + case PFPropertyInfoAssociationTypeStrong: + case PFPropertyInfoAssociationTypeCopy: + case PFPropertyInfoAssociationTypeMutableCopy: { + void *objectValue = *(void **)location; + objectValue = objc_retainAutorelease_noTypeCheck(objectValue); + + memcpy(toMemory, &objectValue, sizeof(id)); + break; + } + } +} + +void object_setIvarValue_safe(__unsafe_unretained id obj, Ivar ivar, void *fromMemory, uint8_t associationType) { + ptrdiff_t offset = ivar_getOffset(ivar); + void *location = OBJECT_GETOFFSET_PTR(obj, offset); + + NSUInteger size = 0; + NSGetSizeAndAlignment(ivar_getTypeEncoding(ivar), &size, NULL); + + void *newValue = NULL; + + switch (associationType) { + case PFPropertyInfoAssociationTypeDefault: + [NSException raise:NSInvalidArgumentException format:@"Invalid association type Default!"]; + return; + + case PFPropertyInfoAssociationTypeAssign: { + memcpy(location, fromMemory, size); + return; + } + + case PFPropertyInfoAssociationTypeWeak: { + objc_storeWeak_noTypeCheck(location, *(void **)fromMemory); + return; + } + + case PFPropertyInfoAssociationTypeStrong: + newValue = *(void **)fromMemory; + break; + + case PFPropertyInfoAssociationTypeCopy: + case PFPropertyInfoAssociationTypeMutableCopy: { + SEL command = (associationType == PFPropertyInfoAssociationTypeCopy) ? @selector(copy) + : @selector(mutableCopy); + + + void *(*objc_msgSend_casted)(void *, SEL) = (void *)objc_msgSend; + void *oldValue = *(void **)fromMemory; + + newValue = objc_msgSend_casted(oldValue, command); + newValue = objc_autorelease_noTypeCheck(newValue); + break; + } + } + + objc_storeStrong_noTypeCheck(location, newValue); +} diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/Controller/PFPurchaseController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/Controller/PFPurchaseController.h new file mode 100644 index 0000000..dcd1e04 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/Controller/PFPurchaseController.h @@ -0,0 +1,62 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFMacros.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFFileManager; +@class PFPaymentTransactionObserver; +@class PFProductsRequestResult; + +@protocol PFCommandRunning; +@class SKPaymentQueue; +@class SKPaymentTransaction; + +PF_WATCH_UNAVAILABLE @interface PFPurchaseController : NSObject + +@property (nonatomic, strong, readonly) id commandRunner; +@property (nonatomic, strong, readonly) PFFileManager *fileManager; +@property (nonatomic, strong, readonly) NSBundle *bundle; + +@property (nonatomic, strong) SKPaymentQueue *paymentQueue; +@property (nonatomic, strong, readonly) PFPaymentTransactionObserver *transactionObserver; + +@property (nonatomic, assign) Class productsRequestClass; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithCommandRunner:(id)commandRunner + fileManager:(PFFileManager *)fileManager + bundle:(NSBundle *)bundle NS_DESIGNATED_INITIALIZER; + ++ (instancetype)controllerWithCommandRunner:(id)commandRunner + fileManager:(PFFileManager *)fileManager + bundle:(NSBundle *)bundle; + +///-------------------------------------- +/// @name Products +///-------------------------------------- + +- (BFTask *)findProductsAsyncWithIdentifiers:(NSSet *)productIdentifiers; +- (BFTask *)buyProductAsyncWithIdentifier:(NSString *)productIdentifier; +- (BFTask *)downloadAssetAsyncForTransaction:(SKPaymentTransaction *)transaction + withProgressBlock:(PFProgressBlock)progressBlock + sessionToken:(NSString *)sessionToken; + +- (NSString *)assetContentPathForProductWithIdentifier:(NSString *)identifier fileName:(NSString *)fileName; +- (BOOL)canPurchase; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/Controller/PFPurchaseController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/Controller/PFPurchaseController.m new file mode 100644 index 0000000..58f2110 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/Controller/PFPurchaseController.m @@ -0,0 +1,241 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPurchaseController.h" + +#import + +#import + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFCommandRunning.h" +#import "PFConstants.h" +#import "PFDecoder.h" +#import "PFFileManager.h" +#import "PFFile_Private.h" +#import "PFHTTPRequest.h" +#import "PFMacros.h" +#import "PFPaymentTransactionObserver.h" +#import "PFProductsRequestHandler.h" +#import "PFRESTCommand.h" + +@interface PFPurchaseController () { + PFProductsRequestHandler *_currentProductsRequestHandler; +} + +@end + +@implementation PFPurchaseController + +@synthesize paymentQueue = _paymentQueue; +@synthesize transactionObserver = _transactionObserver; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithCommandRunner:(id)commandRunner + fileManager:(PFFileManager *)fileManager + bundle:(NSBundle *)bundle { + self = [super init]; + if (!self) return nil; + + _commandRunner = commandRunner; + _fileManager = fileManager; + _bundle = bundle; + + return self; +} + ++ (instancetype)controllerWithCommandRunner:(id)commandRunner + fileManager:(PFFileManager *)fileManager + bundle:(NSBundle *)bundle { + return [[self alloc] initWithCommandRunner:commandRunner fileManager:fileManager bundle:bundle]; +} + +///-------------------------------------- +#pragma mark - Dealloc +///-------------------------------------- + +- (void)dealloc { + if (_paymentQueue && _transactionObserver) { + [_paymentQueue removeTransactionObserver:_transactionObserver]; + } +} + +///-------------------------------------- +#pragma mark - Products +///-------------------------------------- + +- (BFTask *)findProductsAsyncWithIdentifiers:(NSSet *)productIdentifiers { + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id { + @strongify(self); + Class requestClass = self.productsRequestClass ?: [SKProductsRequest class]; + SKProductsRequest *request = [[requestClass alloc] initWithProductIdentifiers:productIdentifiers]; + _currentProductsRequestHandler = [[PFProductsRequestHandler alloc] initWithProductsRequest:request]; + return [_currentProductsRequestHandler findProductsAsync]; + }] continueWithSuccessBlock:^id(BFTask *task) { + _currentProductsRequestHandler = nil; + return task; + }]; +} + +- (BFTask *)buyProductAsyncWithIdentifier:(NSString *)productIdentifier { + PFParameterAssert(productIdentifier, @"You must pass in a valid product identifier."); + + if (![self canPurchase]) { + NSError *error = [NSError errorWithDomain:PFParseErrorDomain + code:kPFErrorPaymentDisabled + userInfo:nil]; + return [BFTask taskWithError:error]; + } + NSSet *identifiers = PF_SET(productIdentifier); + @weakify(self); + return [[self findProductsAsyncWithIdentifiers:identifiers] continueWithSuccessBlock:^id(BFTask *task) { + PFProductsRequestResult *result = task.result; + @strongify(self); + + for (NSString *invalidIdentifier in result.invalidProductIdentifiers) { + if ([invalidIdentifier isEqualToString:productIdentifier]) { + return [BFTask taskWithError:[NSError errorWithDomain:PFParseErrorDomain + code:kPFErrorInvalidProductIdentifier + userInfo:nil]]; + } + } + + for (SKProduct *product in result.validProducts) { + if ([product.productIdentifier isEqualToString:productIdentifier]) { + BFTaskCompletionSource *source = [BFTaskCompletionSource taskCompletionSource]; + [self.transactionObserver handle:productIdentifier runOnceBlock:^(NSError *error) { + if (error) { + [source trySetError:error]; + } else { + [source trySetResult:nil]; + } + }]; + SKPayment *payment = [SKPayment paymentWithProduct:product]; + [self.paymentQueue addPayment:payment]; + return source.task; + } + } + + return [BFTask taskWithError:[NSError errorWithDomain:PFParseErrorDomain + code:kPFErrorProductNotFoundInAppStore + userInfo:nil]]; + }]; +} + +- (BFTask *)downloadAssetAsyncForTransaction:(SKPaymentTransaction *)transaction + withProgressBlock:(PFProgressBlock)progressBlock + sessionToken:(NSString *)sessionToken { + NSString *productIdentifier = transaction.payment.productIdentifier; + NSURL *appStoreReceiptURL = [self.bundle appStoreReceiptURL]; + if (!productIdentifier || !appStoreReceiptURL) { + return [BFTask taskWithError:[NSError errorWithDomain:PFParseErrorDomain + code:kPFErrorReceiptMissing + userInfo:nil]]; + } + + NSError *error = nil; + NSData *appStoreReceipt = [NSData dataWithContentsOfURL:appStoreReceiptURL + options:NSDataReadingMappedIfSafe + error:&error]; + if (!appStoreReceipt || error) { + NSDictionary *userInfo = nil; + if (error) { + userInfo = @{ NSUnderlyingErrorKey : error }; + } + return [BFTask taskWithError:[NSError errorWithDomain:PFParseErrorDomain + code:kPFErrorReceiptMissing + userInfo:userInfo]]; + } + + NSDictionary *params = [[PFEncoder objectEncoder] encodeObject:@{ @"receipt" : appStoreReceipt, + @"productIdentifier" : productIdentifier }]; + PFRESTCommand *command = [PFRESTCommand commandWithHTTPPath:@"validate_purchase" + httpMethod:PFHTTPRequestMethodPOST + parameters:params + sessionToken:sessionToken]; + BFTask *task = [self.commandRunner runCommandAsync:command withOptions:PFCommandRunningOptionRetryIfFailed]; + @weakify(self); + return [task continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + + PFCommandResult *result = task.result; + PFFile *file = [[PFDecoder objectDecoder] decodeObject:result.result]; + if (![file isKindOfClass:[PFFile class]]) { + return [BFTask taskWithError:[NSError errorWithDomain:PFParseErrorDomain + code:kPFErrorInvalidPurchaseReceipt + userInfo:result.result]]; + } + + NSString *finalFilePath = [self assetContentPathForProductWithIdentifier:transaction.payment.productIdentifier + fileName:file.name]; + NSString *directoryPath = [finalFilePath stringByDeletingLastPathComponent]; + return [[[[[PFFileManager createDirectoryIfNeededAsyncAtPath:directoryPath] continueWithBlock:^id(BFTask *task) { + if (task.faulted) { + return [BFTask taskWithError:[NSError errorWithDomain:PFParseErrorDomain + code:kPFErrorProductDownloadFileSystemFailure + userInfo:nil]]; + } + return file; + }] continueWithSuccessBlock:^id(BFTask *task) { + return [file getDataStreamInBackgroundWithProgressBlock:progressBlock]; + }] continueWithSuccessBlock:^id(BFTask *task) { + NSString *cachedFilePath = [file _cachedFilePath]; + return [[PFFileManager copyItemAsyncAtPath:cachedFilePath + toPath:finalFilePath] continueWithBlock:^id(BFTask *task) { + // No-op file exists error. + if (task.error.code == NSFileWriteFileExistsError) { + return nil; + } + return task; + }]; + }] continueWithSuccessResult:finalFilePath]; + }]; +} + +- (NSString *)assetContentPathForProductWithIdentifier:(NSString *)identifier fileName:(NSString *)fileName { + // We store files locally at (ParsePrivateDir)/(ProductIdentifier)/filename + NSString *filePath = [self.fileManager parseDataItemPathForPathComponent:identifier]; + filePath = [filePath stringByAppendingPathComponent:fileName]; + return filePath; +} + +- (BOOL)canPurchase { + return [[self.paymentQueue class] canMakePayments]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (SKPaymentQueue *)paymentQueue { + if (!_paymentQueue) { + _paymentQueue = [SKPaymentQueue defaultQueue]; + } + return _paymentQueue; +} + +- (PFPaymentTransactionObserver *)transactionObserver { + if (!_transactionObserver) { + _transactionObserver = [[PFPaymentTransactionObserver alloc] init]; + [self.paymentQueue addTransactionObserver:_transactionObserver]; + } + return _transactionObserver; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.h new file mode 100644 index 0000000..db0e43c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.h @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import +#import + +#import + +/*! + * The PFPaymentTransactionObserver listens to the payment queue, processes a payment by running business logic, + * and completes the transaction. It's a complex interaction and best explained as follows: + * 1) an observer object is created and added to the payment queue, typically before IAP happens (but not necessarily), + * 2) PFPurchase creates a payment and adds it to the payment queue, + * 3) when the observer sees this payment, it runs the business logic associated with this payment, + * 4) when the business logic finishes, the observer completes the transaction. If the business logic does not finish, the transaction is not completed, which means the user does not get charged, + * 5) after the transaction finishes, custom UI logic is run. + */ +PF_WATCH_UNAVAILABLE @interface PFPaymentTransactionObserver : NSObject + +- (void)handle:(NSString *)productIdentifier block:(void (^)(SKPaymentTransaction *))block; +- (void)handle:(NSString *)productIdentifier runOnceBlock:(void (^)(NSError *))block; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.m new file mode 100644 index 0000000..100750d --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.m @@ -0,0 +1,105 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPaymentTransactionObserver_Private.h" + +#import "PFAssert.h" + +@implementation PFPaymentTransactionObserver + +@synthesize blocks; +@synthesize runOnceBlocks; +@synthesize lockObj; +@synthesize runOnceLockObj; + +///-------------------------------------- +#pragma mark - NSObject +///-------------------------------------- + +- (instancetype)init { + if (self = [super init]) { + blocks = [[NSMutableDictionary alloc] init]; + runOnceBlocks = [[NSMutableDictionary alloc] init]; + lockObj = [[NSObject alloc] init]; + runOnceLockObj = [[NSObject alloc] init]; + } + return self; +} + +///-------------------------------------- +#pragma mark - SKPaymentTransactionObserver +///-------------------------------------- + +- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { + for (SKPaymentTransaction *transaction in transactions) { + switch (transaction.transactionState) { + case SKPaymentTransactionStatePurchased: + case SKPaymentTransactionStateFailed: + case SKPaymentTransactionStateRestored: + [self completeTransaction:transaction fromPaymentQueue:queue]; + break; + default: + break; + } + } +} + +///-------------------------------------- +#pragma mark - PFPaymentTransactionObserver +///-------------------------------------- + +- (void)completeTransaction:(SKPaymentTransaction *)transaction fromPaymentQueue:(SKPaymentQueue *)queue { + NSString *productIdentifier = transaction.payment.productIdentifier; + + @synchronized(lockObj) { + void(^completion)(SKPaymentTransaction *) = self.blocks[productIdentifier]; + if (!transaction.error && completion) { + completion(transaction); + } + } + + @synchronized(runOnceLockObj) { + void(^runOnceBlock)(NSError *) = (void(^)(NSError *))[self.runOnceBlocks objectForKey:productIdentifier]; + if (runOnceBlock) { + runOnceBlock(transaction.error); + [self.runOnceBlocks removeObjectForKey:productIdentifier]; + } + } + + // Calling finish:transaction here prevents the user from registering another observer to handle this transaction. + [queue finishTransaction:transaction]; +} + +///-------------------------------------- +#pragma mark - Public +///-------------------------------------- + +- (void)handle:(NSString *)productIdentifier block:(void(^)(SKPaymentTransaction *))block { + @synchronized(lockObj) { + self.blocks[productIdentifier] = block; + } +} + +- (void)handle:(NSString *)productIdentifier runOnceBlock:(void(^)(NSError *))block { + @synchronized(runOnceLockObj) { + PFConsistencyAssert(self.runOnceBlocks[productIdentifier] == nil, + @"You cannot purchase a product that is in the process of being purchased."); + + if (!block) { + // Create a no-op action so that we can store it in the dictionary, + // this is useful because we use the existence of this block to test if + // the same product is being purchased at the time. + block = ^(NSError *error) { + }; + } + self.runOnceBlocks[productIdentifier] = block; + } +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h new file mode 100644 index 0000000..268af07 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPaymentTransactionObserver.h" + +@interface PFPaymentTransactionObserver () + +@property (nonatomic, strong) NSMutableDictionary *blocks; +@property (nonatomic, strong) NSMutableDictionary *runOnceBlocks; +@property (nonatomic, strong) NSObject *lockObj; +@property (nonatomic, strong) NSObject *runOnceLockObj; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/ChannelsController/PFPushChannelsController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/ChannelsController/PFPushChannelsController.h new file mode 100644 index 0000000..95bea76 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/ChannelsController/PFPushChannelsController.h @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFCoreDataProvider.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); + +NS_ASSUME_NONNULL_BEGIN + +PF_WATCH_UNAVAILABLE @interface PFPushChannelsController : NSObject + +@property (nonatomic, weak, readonly) id dataSource; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; ++ (instancetype)controllerWithDataSource:(id)dataSource; + +///-------------------------------------- +/// @name Get +///-------------------------------------- + +- (BFTask *)getSubscribedChannelsAsync; + +///-------------------------------------- +/// @name Subscribe +///-------------------------------------- + +- (BFTask *)subscribeToChannelAsyncWithName:(NSString *)name; +- (BFTask *)unsubscribeFromChannelAsyncWithName:(NSString *)name; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/ChannelsController/PFPushChannelsController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/ChannelsController/PFPushChannelsController.m new file mode 100644 index 0000000..e8d3d8e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/ChannelsController/PFPushChannelsController.m @@ -0,0 +1,120 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPushChannelsController.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCurrentInstallationController.h" +#import "PFErrorUtilities.h" +#import "PFInstallation.h" + +@interface PFPushChannelsController () + +@property (nonatomic, strong, readonly) PFCurrentInstallationController *currentInstallationController; + +@end + +@implementation PFPushChannelsController + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithDataSource:(nonnull id)dataSource { + self = [super init]; + if (!self) return nil; + + _dataSource = dataSource; + + return self; +} + ++ (instancetype)controllerWithDataSource:(nonnull id)dataSource { + return [[self alloc] initWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - Get +///-------------------------------------- + +- (BFTask *)getSubscribedChannelsAsync { + return [[self _getCurrentObjectAsync] continueWithSuccessBlock:^id(BFTask *task) { + PFInstallation *installation = task.result; + + BFTask *installationTask = (installation.objectId + ? (BFTask *)[installation fetchInBackground] + : (BFTask *)[installation saveInBackground]); + + return [installationTask continueWithSuccessBlock:^id(BFTask *task) { + return [NSSet setWithArray:installation.channels]; + }]; + }]; +} + +///-------------------------------------- +#pragma mark - Subscribe +///-------------------------------------- + +- (BFTask *)subscribeToChannelAsyncWithName:(nonnull NSString *)name { + return [[self _getCurrentObjectAsync] continueWithSuccessBlock:^id(BFTask *task) { + PFInstallation *installation = task.result; + if ([installation.channels containsObject:name] && + ![installation isDirtyForKey:@"channels"]) { + return @YES; + } + + [installation addUniqueObject:name forKey:@"channels"]; + return [installation saveInBackground]; + }]; +} + +- (BFTask *)unsubscribeFromChannelAsyncWithName:(nonnull NSString *)name { + return [[self _getCurrentObjectAsync] continueWithSuccessBlock:^id(BFTask *task) { + PFInstallation *installation = task.result; + if (name.length != 0 && + ![installation.channels containsObject:name] && + ![installation isDirtyForKey:@"channels"]) { + return @YES; + } + [installation removeObject:name forKey:@"channels"]; + return [installation saveInBackground]; + }]; +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + +- (BFTask *)_getCurrentObjectAsync { + return [[self.currentInstallationController getCurrentObjectAsync] continueWithSuccessBlock:^id(BFTask *task) { + PFInstallation *installation = task.result; + if (!installation.deviceToken) { + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorPushMisconfigured + message:@"There is no device token stored yet."]; + return [BFTask taskWithError:error]; + } + + return task; + }]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (PFCurrentInstallationController *)currentInstallationController { + return self.dataSource.currentInstallationController; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Controller/PFPushController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Controller/PFPushController.h new file mode 100644 index 0000000..0f66b42 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Controller/PFPushController.h @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFPushState; +@protocol PFCommandRunning; + +NS_ASSUME_NONNULL_BEGIN + +PF_WATCH_UNAVAILABLE @interface PFPushController : NSObject + +@property (nonatomic, strong, readonly) id commandRunner; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithCommandRunner:(id)commandRunner NS_DESIGNATED_INITIALIZER; + ++ (instancetype)controllerWithCommandRunner:(id)commandRunner; + +///-------------------------------------- +/// @name Sending Push +///-------------------------------------- + +/*! + Requests push notification to be sent for a given state. + + @param state State to use to send notifications. + @param sessionToken Current user session token. + + @returns `BFTask` with result set to `NSNumber` with `BOOL` identifying whether the request succeeded. + */ +- (BFTask *)sendPushNotificationAsyncWithState:(PFPushState *)state sessionToken:(nullable NSString *)sessionToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Controller/PFPushController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Controller/PFPushController.m new file mode 100644 index 0000000..36472de --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Controller/PFPushController.m @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPushController.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCommandRunning.h" +#import "PFMacros.h" +#import "PFRESTPushCommand.h" + +@implementation PFPushController + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithCommandRunner:(id)commandRunner { + self = [super init]; + if (!self) return nil; + + _commandRunner = commandRunner; + + return self; +} + ++ (instancetype)controllerWithCommandRunner:(id)commandRunner { + return [[self alloc] initWithCommandRunner:commandRunner]; +} + +///-------------------------------------- +#pragma mark - Sending Push +///-------------------------------------- + +- (BFTask *)sendPushNotificationAsyncWithState:(PFPushState *)state + sessionToken:(NSString *)sessionToken { + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + PFRESTCommand *command = [PFRESTPushCommand sendPushCommandWithPushState:state sessionToken:sessionToken]; + return [self.commandRunner runCommandAsync:command withOptions:PFCommandRunningOptionRetryIfFailed]; + }] continueWithSuccessBlock:^id(BFTask *task) { + return @(task.result != nil); + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Manager/PFPushManager.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Manager/PFPushManager.h new file mode 100644 index 0000000..9d2878a --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Manager/PFPushManager.h @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFCoreDataProvider.h" +#import "PFDataProvider.h" + +@class PFPushChannelsController; +@class PFPushController; + +NS_ASSUME_NONNULL_BEGIN + +PF_WATCH_UNAVAILABLE @interface PFPushManager : NSObject + +@property (nonatomic, weak, readonly) id commonDataSource; +@property (nonatomic, weak, readonly) id coreDataSource; + +@property (nonatomic, strong) PFPushController *pushController; +@property (nonatomic, strong) PFPushChannelsController *channelsController; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithCommonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource NS_DESIGNATED_INITIALIZER; + ++ (instancetype)managerWithCommonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Manager/PFPushManager.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Manager/PFPushManager.m new file mode 100644 index 0000000..d02f681 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Manager/PFPushManager.m @@ -0,0 +1,95 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPushManager.h" + +#import "PFAssert.h" +#import "PFMacros.h" +#import "PFPushChannelsController.h" +#import "PFPushController.h" + +@interface PFPushManager () { + dispatch_queue_t _controllerAccessQueue; +} + +@end + +@implementation PFPushManager + +@synthesize pushController = _pushController; +@synthesize channelsController = _channelsController; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithCommonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource { + self = [super init]; + if (!self) return nil; + + _commonDataSource = commonDataSource; + _coreDataSource = coreDataSource; + _controllerAccessQueue = dispatch_queue_create("com.parse.push.controller.accessQueue", DISPATCH_QUEUE_SERIAL); + + return self; +} + ++ (instancetype)managerWithCommonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource { + return [[self alloc] initWithCommonDataSource:commonDataSource coreDataSource:coreDataSource]; +} + +///-------------------------------------- +#pragma mark - PushController +///-------------------------------------- + +- (PFPushController *)pushController { + __block PFPushController *controller; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_pushController) { + _pushController = [PFPushController controllerWithCommandRunner:self.commonDataSource.commandRunner]; + } + controller = _pushController; + }); + return controller; +} + +- (void)setPushController:(PFPushController *)pushController { + dispatch_sync(_controllerAccessQueue, ^{ + _pushController = pushController; + }); +} + +///-------------------------------------- +#pragma mark - Channels Controller +///-------------------------------------- + +- (PFPushChannelsController *)channelsController { + __block PFPushChannelsController *controller; + dispatch_sync(_controllerAccessQueue, ^{ + if (!_channelsController) { + _channelsController = [PFPushChannelsController controllerWithDataSource:self.coreDataSource]; + } + controller = _channelsController; + }); + return controller; +} + +- (void)setChannelsController:(PFPushChannelsController *)channelsController { + dispatch_sync(_controllerAccessQueue, ^{ + _channelsController = channelsController; + }); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/PFPushPrivate.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/PFPushPrivate.h new file mode 100644 index 0000000..d45d114 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/PFPushPrivate.h @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFMacros.h" + +NS_ASSUME_NONNULL_BEGIN + +@protocol PFPushInternalUtils + +@optional ++ (NSString *)convertDeviceTokenToString:(id)deviceToken; ++ (nullable NSString *)getDeviceTokenFromKeychain; ++ (void)clearDeviceToken; + +#if TARGET_OS_IPHONE + ++ (void)showAlertViewWithTitle:(nullable NSString *)title message:(nullable NSString *)message NS_EXTENSION_UNAVAILABLE_IOS(""); ++ (void)playVibrate; ++ (void)playAudioWithName:(nullable NSString *)audioName; + +#endif + +@end + +@interface PFPush (Private) + +// For unit testability ++ (Class)pushInternalUtilClass; ++ (void)setPushInternalUtilClass:(nullable Class)utilClass; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFMutablePushState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFMutablePushState.h new file mode 100644 index 0000000..3adab09 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFMutablePushState.h @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPushState.h" + +NS_ASSUME_NONNULL_BEGIN + +PF_WATCH_UNAVAILABLE @interface PFMutablePushState : PFPushState + +@property (nullable, nonatomic, copy, readwrite) NSSet *channels; +@property (nullable, nonatomic, copy, readwrite) PFQueryState *queryState; + +@property (nullable, nonatomic, strong, readwrite) NSDate *expirationDate; +@property (nullable, nonatomic, copy, readwrite) NSNumber *expirationTimeInterval; + +@property (nullable, nonatomic, copy, readwrite) NSDictionary *payload; + +///-------------------------------------- +/// @name Payload +///-------------------------------------- + +- (void)setPayloadWithMessage:(nullable NSString *)message; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFMutablePushState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFMutablePushState.m new file mode 100644 index 0000000..998f75b --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFMutablePushState.m @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFMutablePushState.h" + +#import "PFPushState_Private.h" + +@implementation PFMutablePushState + +@dynamic channels; +@dynamic queryState; +@dynamic expirationDate; +@dynamic expirationTimeInterval; +@dynamic payload; + +///-------------------------------------- +#pragma mark - Payload +///-------------------------------------- + +- (void)setPayloadWithMessage:(NSString *)message { + if (!message) { + self.payload = nil; + } else { + self.payload = @{ @"alert" : [message copy] }; + } +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFPushState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFPushState.h new file mode 100644 index 0000000..147756f --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFPushState.h @@ -0,0 +1,39 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFBaseState.h" + +@class PFQueryState; + +NS_ASSUME_NONNULL_BEGIN + +PF_WATCH_UNAVAILABLE @interface PFPushState : PFBaseState + +@property (nullable, nonatomic, copy, readonly) NSSet *channels; +@property (nullable, nonatomic, copy, readonly) PFQueryState *queryState; + +@property (nullable, nonatomic, strong, readonly) NSDate *expirationDate; +@property (nullable, nonatomic, copy, readonly) NSNumber *expirationTimeInterval; + +@property (nullable, nonatomic, copy, readonly) NSDictionary *payload; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)initWithState:(nullable PFPushState *)state; ++ (instancetype)stateWithState:(nullable PFPushState *)state; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFPushState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFPushState.m new file mode 100644 index 0000000..6eaa245 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFPushState.m @@ -0,0 +1,60 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPushState.h" +#import "PFPushState_Private.h" + +#import "PFMutablePushState.h" +#import "PFQueryState.h" + +@implementation PFPushState + +///-------------------------------------- +#pragma mark - PFBaseStateSubclass +///-------------------------------------- + ++ (NSDictionary *)propertyAttributes { + return @{ + @"channels": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + @"queryState": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + @"expirationDate": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeStrong], + @"expirationTimeInterval": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeStrong], + @"payload": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy] + }; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithState:(PFPushState *)state { + return [super initWithState:state]; +} + ++ (instancetype)stateWithState:(PFPushState *)state { + return [super stateWithState:state]; +} + +///-------------------------------------- +#pragma mark - NSCopying +///-------------------------------------- + +- (id)copyWithZone:(NSZone *)zone { + return [[PFPushState allocWithZone:zone] initWithState:self]; +} + +///-------------------------------------- +#pragma mark - NSMutableCopying +///-------------------------------------- + +- (id)mutableCopyWithZone:(NSZone *)zone { + return [[PFMutablePushState allocWithZone:zone] initWithState:self]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFPushState_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFPushState_Private.h new file mode 100644 index 0000000..33e1570 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/State/PFPushState_Private.h @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPushState.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFPushState () + +@property (nullable, nonatomic, copy, readwrite) NSSet *channels; +@property (nullable, nonatomic, copy, readwrite) PFQueryState *queryState; + +@property (nullable, nonatomic, strong, readwrite) NSDate *expirationDate; +@property (nullable, nonatomic, copy, readwrite) NSNumber *expirationTimeInterval; + +@property (nullable, nonatomic, copy, readwrite) NSDictionary *payload; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Utilites/PFPushUtilities.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Utilites/PFPushUtilities.h new file mode 100644 index 0000000..e47c90e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Utilites/PFPushUtilities.h @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFPushPrivate.h" + +NS_ASSUME_NONNULL_BEGIN + +PF_WATCH_UNAVAILABLE @interface PFPushUtilities : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Utilites/PFPushUtilities.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Utilites/PFPushUtilities.m new file mode 100644 index 0000000..39b3ba7 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Push/Utilites/PFPushUtilities.m @@ -0,0 +1,91 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPushUtilities.h" + +#import + +#if TARGET_OS_IOS +#import + +#import "PFAlertView.h" +#endif + +#import "PFInstallationPrivate.h" +#import "PFKeychainStore.h" +#import "PFLogging.h" +#import "PFMacros.h" + +@implementation PFPushUtilities + +///-------------------------------------- +#pragma mark - PFPushInternalUtils +///-------------------------------------- + ++ (NSString *)convertDeviceTokenToString:(id)deviceToken { + if ([deviceToken isKindOfClass:[NSString class]]) { + return deviceToken; + } else { + NSMutableString *hexString = [NSMutableString string]; + const unsigned char *bytes = [deviceToken bytes]; + for (int i = 0; i < [deviceToken length]; i++) { + [hexString appendFormat:@"%02x", bytes[i]]; + } + return [NSString stringWithString:hexString]; + } +} + ++ (NSString *)getDeviceTokenFromKeychain { + // Used the first time we construct the currentInstallation, + // for backward compability with older SDKs. + PFKeychainStore *store = [[PFKeychainStore alloc] initWithService:@"ParsePush"]; + return store[@"ParsePush"]; +} + ++ (void)clearDeviceToken { + // Used in test case setup. + [[PFInstallation currentInstallation] _clearDeviceToken]; + [[[PFKeychainStore alloc] initWithService:@"ParsePush"] removeObjectForKey:@"ParsePush"]; +} + +#if TARGET_OS_IPHONE + ++ (void)showAlertViewWithTitle:(NSString *)title message:(NSString *)message { + NSString *cancelButtonTitle = NSLocalizedStringFromTableInBundle(@"OK", @"Parse", + [NSBundle bundleForClass:[self class]], + @"Default alert view cancel button title."); + [PFAlertView showAlertWithTitle:title + message:message + cancelButtonTitle:cancelButtonTitle + otherButtonTitles:nil + completion:nil]; +} + ++ (void)playAudioWithName:(NSString *)audioFileName { + SystemSoundID soundId = -1; + + if (audioFileName) { + NSURL *bundlePath = [[NSBundle mainBundle] URLForResource:[audioFileName stringByDeletingPathExtension] + withExtension:[audioFileName pathExtension]]; + + AudioServicesCreateSystemSoundID((__bridge CFURLRef)bundlePath, &soundId); + } + + if (soundId != -1) { + AudioServicesPlaySystemSound(soundId); + } +} + ++ (void)playVibrate { + AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); +} + +#endif + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFCachedQueryController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFCachedQueryController.h new file mode 100644 index 0000000..db0c057 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFCachedQueryController.h @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFQueryController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFCachedQueryController : PFQueryController + +@property (nonatomic, weak, readonly) id commonDataSource; + +- (instancetype)initWithCommonDataSource:(id)dataSource; ++ (instancetype)controllerWithCommonDataSource:(id)dataSource; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFCachedQueryController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFCachedQueryController.m new file mode 100644 index 0000000..d89a928 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFCachedQueryController.m @@ -0,0 +1,208 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFCachedQueryController.h" + +#import + +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFCommandRunning.h" +#import "PFDecoder.h" +#import "PFErrorUtilities.h" +#import "PFJSONSerialization.h" +#import "PFKeyValueCache.h" +#import "PFMacros.h" +#import "PFQueryState.h" +#import "PFRESTCommand.h" +#import "PFRESTQueryCommand.h" +#import "PFUser.h" + +@implementation PFCachedQueryController + +@dynamic commonDataSource; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithCommonDataSource:(id)dataSource { + return [super initWithCommonDataSource:dataSource]; +} + ++ (instancetype)controllerWithCommonDataSource:(id)dataSource { + return [super controllerWithCommonDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - PFQueryControllerSubclass +///-------------------------------------- + +- (BFTask *)runNetworkCommandAsync:(PFRESTCommand *)command + withCancellationToken:(BFCancellationToken *)cancellationToken + forQueryState:(PFQueryState *)queryState { + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + switch (queryState.cachePolicy) { + case kPFCachePolicyIgnoreCache: + { + return [self _runNetworkCommandAsync:command + withCancellationToken:cancellationToken + forQueryState:queryState]; + } + break; + case kPFCachePolicyNetworkOnly: + { + return [[self _runNetworkCommandAsync:command + withCancellationToken:cancellationToken + forQueryState:queryState] continueWithSuccessBlock:^id(BFTask *task) { + return [self _saveCommandResultAsync:task.result forCommandCacheKey:command.cacheKey]; + } cancellationToken:cancellationToken]; + } + break; + case kPFCachePolicyCacheOnly: + { + return [self _runNetworkCommandAsyncFromCache:command + withCancellationToken:cancellationToken + forQueryState:queryState]; + } + break; + case kPFCachePolicyNetworkElseCache: { + // Don't retry for network-else-cache, because it just slows things down. + BFTask *networkTask = [self _runNetworkCommandAsync:command + withCancellationToken:cancellationToken + forQueryState:queryState]; + @weakify(self); + return [networkTask continueWithBlock:^id(BFTask *task) { + @strongify(self); + if (task.cancelled || task.exception) { + return task; + } else if (task.error) { + return [self _runNetworkCommandAsyncFromCache:command + withCancellationToken:cancellationToken + forQueryState:queryState]; + } + return [self _saveCommandResultAsync:task.result forCommandCacheKey:command.cacheKey]; + } cancellationToken:cancellationToken]; + } + break; + case kPFCachePolicyCacheElseNetwork: + { + BFTask *cacheTask = [self _runNetworkCommandAsyncFromCache:command + withCancellationToken:cancellationToken + forQueryState:queryState]; + @weakify(self); + return [cacheTask continueWithBlock:^id(BFTask *task) { + @strongify(self); + if (task.error) { + return [self _runNetworkCommandAsync:command + withCancellationToken:cancellationToken + forQueryState:queryState]; + } + return task; + } cancellationToken:cancellationToken]; + } + break; + case kPFCachePolicyCacheThenNetwork: + PFConsistencyAssert(NO, @"kPFCachePolicyCacheThenNetwork is not implemented as a runner."); + break; + default: + PFConsistencyAssert(NO, @"Unrecognized cache policy: %d", queryState.cachePolicy); + break; + } + return nil; +} + +- (BFTask *)_runNetworkCommandAsync:(PFRESTCommand *)command + withCancellationToken:(BFCancellationToken *)cancellationToken + forQueryState:(PFQueryState *)queryState { + PFCommandRunningOptions options = 0; + // We don't want retries on NetworkElseCache, but rather instantly back-off to cache. + if (queryState.cachePolicy != kPFCachePolicyNetworkElseCache) { + options = PFCommandRunningOptionRetryIfFailed; + } + BFTask *networkTask = [self.commonDataSource.commandRunner runCommandAsync:command + withOptions:options + cancellationToken:cancellationToken]; + return [networkTask continueWithSuccessBlock:^id(BFTask *task) { + if (queryState.cachePolicy == kPFCachePolicyNetworkOnly || + queryState.cachePolicy == kPFCachePolicyNetworkElseCache || + queryState.cachePolicy == kPFCachePolicyCacheElseNetwork) { + return [self _saveCommandResultAsync:task.result forCommandCacheKey:command.cacheKey]; + } + // Roll-forward the original result. + return task; + } cancellationToken:cancellationToken]; +} + +///-------------------------------------- +#pragma mark - Cache +///-------------------------------------- + +- (NSString *)cacheKeyForQueryState:(PFQueryState *)queryState sessionToken:(NSString *)sessionToken { + return [PFRESTQueryCommand findCommandForQueryState:queryState withSessionToken:sessionToken].cacheKey; +} + +- (BOOL)hasCachedResultForQueryState:(PFQueryState *)queryState sessionToken:(NSString *)sessionToken { + // TODO: (nlutsenko) Once there is caching for `count`, the results for that command should also be checked. + // TODO: (nlutsenko) We should cache this result. + + NSString *cacheKey = [self cacheKeyForQueryState:queryState sessionToken:sessionToken]; + return ([self.commonDataSource.keyValueCache objectForKey:cacheKey maxAge:queryState.maxCacheAge] != nil); +} + +- (void)clearCachedResultForQueryState:(PFQueryState *)queryState sessionToken:(NSString *)sessionToken { + // TODO: (nlutsenko) Once there is caching for `count`, the results for that command should also be cleared. + NSString *cacheKey = [self cacheKeyForQueryState:queryState sessionToken:sessionToken]; + [self.commonDataSource.keyValueCache removeObjectForKey:cacheKey]; +} + +- (void)clearAllCachedResults { + [self.commonDataSource.keyValueCache removeAllObjects]; +} + +- (BFTask *)_runNetworkCommandAsyncFromCache:(PFRESTCommand *)command + withCancellationToken:(BFCancellationToken *)cancellationToken + forQueryState:(PFQueryState *)queryState { + NSString *jsonString = [self.commonDataSource.keyValueCache objectForKey:command.cacheKey + maxAge:queryState.maxCacheAge]; + if (!jsonString) { + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorCacheMiss + message:@"Cache miss." + shouldLog:NO]; + return [BFTask taskWithError:error]; + } + + NSDictionary *object = [PFJSONSerialization JSONObjectFromString:jsonString]; + if (!object) { + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorCacheMiss + message:@"Cache contains corrupted JSON."]; + return [BFTask taskWithError:error]; + } + + NSDictionary *decodedObject = [[PFDecoder objectDecoder] decodeObject:object]; + + PFCommandResult *result = [PFCommandResult commandResultWithResult:decodedObject + resultString:jsonString + httpResponse:nil]; + return [BFTask taskWithResult:result]; +} + +- (BFTask *)_saveCommandResultAsync:(PFCommandResult *)result forCommandCacheKey:(NSString *)cacheKey { + NSString *resultString = result.resultString; + if (resultString) { + [self.commonDataSource.keyValueCache setObject:resultString forKey:cacheKey]; + } + // Roll-forward the original result. + return [BFTask taskWithResult:result]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFOfflineQueryController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFOfflineQueryController.h new file mode 100644 index 0000000..a7f0241 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFOfflineQueryController.h @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFQueryController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFOfflineQueryController : PFQueryController + +@property (nonatomic, weak, readonly) id commonDataSource; +@property (nonatomic, weak, readonly) id coreDataSource; + +- (instancetype)initWithCommonDataSource:(id)dataSource NS_UNAVAILABLE; ++ (instancetype)controllerWithCommonDataSource:(id)dataSource NS_UNAVAILABLE; + +- (instancetype)initWithCommonDataSource:(id)dataSource + coreDataSource:(id)coreDataSource NS_DESIGNATED_INITIALIZER; ++ (instancetype)controllerWithCommonDataSource:(id)dataSource + coreDataSource:(id)coreDataSource; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFOfflineQueryController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFOfflineQueryController.m new file mode 100644 index 0000000..edca5d5 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFOfflineQueryController.m @@ -0,0 +1,180 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFOfflineQueryController.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCommandRunning.h" +#import "PFObjectPrivate.h" +#import "PFOfflineStore.h" +#import "PFPin.h" +#import "PFPinningObjectStore.h" +#import "PFQueryState.h" +#import "PFRESTCommand.h" +#import "PFRelationPrivate.h" + +@interface PFOfflineQueryController () { + PFOfflineStore *_offlineStore; // TODO: (nlutsenko) Lazy-load this via self.dataSource. +} + +@end + +@implementation PFOfflineQueryController + +@dynamic commonDataSource; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithCommonDataSource:(id)dataSource { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithCommonDataSource:(id)dataSource + coreDataSource:(id)coreDataSource { + self = [super initWithCommonDataSource:dataSource]; + if (!self) return nil; + + _offlineStore = dataSource.offlineStore; + _coreDataSource = coreDataSource; + + return self; +} + ++ (instancetype)controllerWithCommonDataSource:(id)dataSource + coreDataSource:(id)coreDataSource { + return [[self alloc] initWithCommonDataSource:dataSource coreDataSource:coreDataSource]; +} + +///-------------------------------------- +#pragma mark - Find +///-------------------------------------- + +- (BFTask *)findObjectsAsyncForQueryState:(PFQueryState *)queryState + withCancellationToken:(BFCancellationToken *)cancellationToken + user:(PFUser *)user { + if (queryState.queriesLocalDatastore) { + return [self _findObjectsFromLocalDatastoreAsyncForQueryState:queryState + withCancellationToken:cancellationToken + user:user]; + } + + NSDictionary *relationCondition = queryState.conditions[@"$relatedTo"]; + if (relationCondition) { + PFObject *object = relationCondition[@"object"]; + NSString *key = relationCondition[@"key"]; + if ([object isDataAvailableForKey:key]) { + PFRelation *relation = object[key]; + return [self _findObjectsAsyncInRelation:relation + ofObject:object + forQueryState:queryState + withCancellationToken:cancellationToken + user:user]; + } + } + + return [super findObjectsAsyncForQueryState:queryState withCancellationToken:cancellationToken user:user]; +} + +- (BFTask *)_findObjectsAsyncInRelation:(PFRelation *)relation + ofObject:(PFObject *)parentObject + forQueryState:(PFQueryState *)queryState + withCancellationToken:(BFCancellationToken *)cancellationToken + user:(PFUser *)user { + return [[super findObjectsAsyncForQueryState:queryState + withCancellationToken:cancellationToken + user:user] continueWithSuccessBlock:^id(BFTask *fetchTask) { + + NSArray *objects = fetchTask.result; + for (PFObject *object in objects) { + [relation _addKnownObject:object]; + } + + return [[_offlineStore updateDataForObjectAsync:parentObject] continueWithBlock:^id(BFTask *task) { + // Roll-forward the result of find task instead of a result of update task. + return fetchTask; + } cancellationToken:cancellationToken]; + } cancellationToken:cancellationToken]; +} + + +- (BFTask *)_findObjectsFromLocalDatastoreAsyncForQueryState:(PFQueryState *)queryState + withCancellationToken:(BFCancellationToken *)cancellationToken + user:(PFUser *)user { + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + NSString *pinName = queryState.localDatastorePinName; + if (pinName) { + PFPinningObjectStore *objectStore = self.coreDataSource.pinningObjectStore; + return [objectStore fetchPinAsyncWithName:pinName]; + } + return nil; + }] continueWithSuccessBlock:^id(BFTask *task) { + PFPin *pin = task.result; + return [_offlineStore findAsyncForQueryState:queryState user:user pin:pin]; + } cancellationToken:cancellationToken]; +} + +///-------------------------------------- +#pragma mark - Count +///-------------------------------------- + +- (BFTask *)countObjectsAsyncForQueryState:(PFQueryState *)queryState + withCancellationToken:(BFCancellationToken *)cancellationToken + user:(PFUser *)user { + if (queryState.queriesLocalDatastore) { + return [self _countObjectsFromLocalDatastoreAsyncForQueryState:queryState + withCancellationToken:cancellationToken + user:user]; + } + return [super countObjectsAsyncForQueryState:queryState withCancellationToken:cancellationToken user:user]; +} + +- (BFTask *)_countObjectsFromLocalDatastoreAsyncForQueryState:(PFQueryState *)queryState + withCancellationToken:(BFCancellationToken *)cancellationToken + user:(PFUser *)user { + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + NSString *pinName = queryState.localDatastorePinName; + if (pinName) { + PFPinningObjectStore *controller = self.coreDataSource.pinningObjectStore; + return [controller fetchPinAsyncWithName:pinName]; + } + return nil; + }] continueWithSuccessBlock:^id(BFTask *task) { + PFPin *pin = task.result; + return [_offlineStore countAsyncForQueryState:queryState user:user pin:pin]; + } cancellationToken:cancellationToken]; +} + +///-------------------------------------- +#pragma mark - PFQueryControllerSubclass +///-------------------------------------- + +- (BFTask *)runNetworkCommandAsync:(PFRESTCommand *)command + withCancellationToken:(BFCancellationToken *)cancellationToken + forQueryState:(PFQueryState *)queryState { + return [self.commonDataSource.commandRunner runCommandAsync:command + withOptions:PFCommandRunningOptionRetryIfFailed + cancellationToken:cancellationToken]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFQueryController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFQueryController.h new file mode 100644 index 0000000..8c95ecb --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFQueryController.h @@ -0,0 +1,104 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFDataProvider.h" + +@class BFCancellationToken; + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFQueryState; +@class PFRESTCommand; +@class PFCommandResult; +@class PFUser; + +NS_ASSUME_NONNULL_BEGIN + +@interface PFQueryController : NSObject + +@property (nonatomic, weak, readonly) id commonDataSource; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithCommonDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; + ++ (instancetype)controllerWithCommonDataSource:(id)dataSource; + +///-------------------------------------- +/// @name Find +///-------------------------------------- + +/*! + Finds objects from network or LDS for any given query state. + Supports cancellation and ACLed changes for a specific user. + + @param queryState Query state to use. + @param cancellationToken Cancellation token or `nil`. + @param user `user` to use for ACLs or `nil`. + + @returns Task that resolves to `NSArray` of `PFObject`s. + */ +- (BFTask *)findObjectsAsyncForQueryState:(PFQueryState *)queryState + withCancellationToken:(nullable BFCancellationToken *)cancellationToken + user:(nullable PFUser *)user; // TODO: (nlutsenko) Pass `PFUserState` instead of user. + +///-------------------------------------- +/// @name Count +///-------------------------------------- + +/*! + Counts objects from network or LDS for any given query state. + Supports cancellation and ACLed changes for a specific user. + + @param queryState Query state to use. + @param cancellationToken Cancellation token or `nil`. + @param user `user` to use for ACLs or `nil`. + + @returns Task that resolves to `NSNumber` with a count of results. + */ +- (BFTask *)countObjectsAsyncForQueryState:(PFQueryState *)queryState + withCancellationToken:(nullable BFCancellationToken *)cancellationToken + user:(nullable PFUser *)user; // TODO: (nlutsenko) Pass `PFUserState` instead of user. + +///-------------------------------------- +/// @name Caching +///-------------------------------------- + +- (NSString *)cacheKeyForQueryState:(PFQueryState *)queryState sessionToken:(nullable NSString *)sessionToken; +- (BOOL)hasCachedResultForQueryState:(PFQueryState *)queryState sessionToken:(nullable NSString *)sessionToken; + +- (void)clearCachedResultForQueryState:(PFQueryState *)queryState sessionToken:(nullable NSString *)sessionToken; +- (void)clearAllCachedResults; + +@end + +@protocol PFQueryControllerSubclass + +/*! + Implementation should run a command on a network runner. + + @param command Command to run. + @param cancellationToken Cancellation token. + @param queryState Query state to run command for. + + @returns `BFTask` instance with result of `PFCommandResult`. + */ +- (BFTask *)runNetworkCommandAsync:(PFRESTCommand *)command + withCancellationToken:(nullable BFCancellationToken *)cancellationToken + forQueryState:(PFQueryState *)queryState; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFQueryController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFQueryController.m new file mode 100644 index 0000000..9b6c494 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Controller/PFQueryController.m @@ -0,0 +1,160 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFQueryController.h" + +#import + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFCommandRunning.h" +#import "PFObjectPrivate.h" +#import "PFOfflineStore.h" +#import "PFPin.h" +#import "PFQueryState.h" +#import "PFRESTQueryCommand.h" +#import "PFUser.h" +#import "Parse_Private.h" + +@interface PFQueryController () + +@end + +@implementation PFQueryController + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithCommonDataSource:(id)dataSource { + self = [super init]; + if (!self) return nil; + + _commonDataSource = dataSource; + + return self; +} + ++ (instancetype)controllerWithCommonDataSource:(id)dataSource { + return [[self alloc] initWithCommonDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - Find +///-------------------------------------- + +- (BFTask *)findObjectsAsyncForQueryState:(PFQueryState *)queryState + withCancellationToken:(BFCancellationToken *)cancellationToken + user:(PFUser *)user { + NSDate *queryStart = (queryState.trace ? [NSDate date] : nil); + __block NSDate *querySent = nil; + + NSString *sessionToken = user.sessionToken; + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + PFRESTCommand *command = [PFRESTQueryCommand findCommandForQueryState:queryState withSessionToken:sessionToken]; + querySent = (queryState.trace ? [NSDate date] : nil); + return [self runNetworkCommandAsync:command + withCancellationToken:cancellationToken + forQueryState:queryState]; + }] continueWithSuccessBlock:^id(BFTask *task) { + PFCommandResult *result = task.result; + NSDate *queryReceived = (queryState.trace ? [NSDate date] : nil); + + NSArray *resultObjects = result.result[@"results"]; + NSMutableArray *foundObjects = [NSMutableArray arrayWithCapacity:resultObjects.count]; + if (resultObjects != nil) { + NSString *resultClassName = result.result[@"className"]; + if (!resultClassName) { + resultClassName = queryState.parseClassName; + } + NSArray *selectedKeys = queryState.selectedKeys.allObjects; + for (NSDictionary *resultObject in resultObjects) { + PFObject *object = [PFObject _objectFromDictionary:resultObject + defaultClassName:resultClassName + selectedKeys:selectedKeys]; + [foundObjects addObject:object]; + } + } + + NSString *traceLog = [result.result objectForKey:@"trace"]; + if (traceLog != nil) { + NSLog(@"Pre-processing took %f seconds\n%@Client side parsing took %f seconds", + [querySent timeIntervalSinceDate:queryStart], traceLog, + [queryReceived timeIntervalSinceNow]); + } + + return foundObjects; + } cancellationToken:cancellationToken]; +} + +///-------------------------------------- +#pragma mark - Count +///-------------------------------------- + +- (BFTask *)countObjectsAsyncForQueryState:(PFQueryState *)queryState + withCancellationToken:(BFCancellationToken *)cancellationToken + user:(PFUser *)user { + NSString *sessionToken = user.sessionToken; + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + PFRESTQueryCommand *findCommand = [PFRESTQueryCommand findCommandForQueryState:queryState + withSessionToken:sessionToken]; + PFRESTCommand *countCommand = [PFRESTQueryCommand countCommandFromFindCommand:findCommand]; + return [self runNetworkCommandAsync:countCommand + withCancellationToken:cancellationToken + forQueryState:queryState]; + }] continueWithSuccessBlock:^id(BFTask *task) { + PFCommandResult *result = task.result; + return result.result[@"count"]; + } cancellationToken:cancellationToken]; +} + +///-------------------------------------- +#pragma mark - Caching +///-------------------------------------- + +- (NSString *)cacheKeyForQueryState:(PFQueryState *)queryState sessionToken:(NSString *)sessionToken { + return nil; +} + +- (BOOL)hasCachedResultForQueryState:(PFQueryState *)queryState sessionToken:(NSString *)sessionToken { + return NO; +} + +- (void)clearCachedResultForQueryState:(PFQueryState *)queryState sessionToken:(NSString *)sessionToken { +} + +- (void)clearAllCachedResults { +} + +///-------------------------------------- +#pragma mark - PFQueryControllerSubclass +///-------------------------------------- + +- (BFTask *)runNetworkCommandAsync:(PFRESTCommand *)command + withCancellationToken:(BFCancellationToken *)cancellationToken + forQueryState:(PFQueryState *)queryState { + return [self.commonDataSource.commandRunner runCommandAsync:command + withOptions:PFCommandRunningOptionRetryIfFailed + cancellationToken:cancellationToken]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/PFQueryPrivate.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/PFQueryPrivate.h new file mode 100644 index 0000000..149386e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/PFQueryPrivate.h @@ -0,0 +1,56 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFQueryState.h" + +extern NSString *const PFQueryKeyNotEqualTo; +extern NSString *const PFQueryKeyLessThan; +extern NSString *const PFQueryKeyLessThanEqualTo; +extern NSString *const PFQueryKeyGreaterThan; +extern NSString *const PFQueryKeyGreaterThanOrEqualTo; +extern NSString *const PFQueryKeyContainedIn; +extern NSString *const PFQueryKeyNotContainedIn; +extern NSString *const PFQueryKeyContainsAll; +extern NSString *const PFQueryKeyNearSphere; +extern NSString *const PFQueryKeyWithin; +extern NSString *const PFQueryKeyRegex; +extern NSString *const PFQueryKeyExists; +extern NSString *const PFQueryKeyInQuery; +extern NSString *const PFQueryKeyNotInQuery; +extern NSString *const PFQueryKeySelect; +extern NSString *const PFQueryKeyDontSelect; +extern NSString *const PFQueryKeyRelatedTo; +extern NSString *const PFQueryKeyOr; +extern NSString *const PFQueryKeyQuery; +extern NSString *const PFQueryKeyKey; +extern NSString *const PFQueryKeyObject; + +extern NSString *const PFQueryOptionKeyMaxDistance; +extern NSString *const PFQueryOptionKeyBox; +extern NSString *const PFQueryOptionKeyRegexOptions; + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFObject; + +@interface PFQuery () + +@property (nonatomic, strong, readonly) PFQueryState *state; + +@end + +@interface PFQuery (Private) + +- (instancetype)whereRelatedToObject:(PFObject *)parent fromKey:(NSString *)key; +- (void)redirectClassNameForKey:(NSString *)key; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFMutableQueryState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFMutableQueryState.h new file mode 100644 index 0000000..e54a13c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFMutableQueryState.h @@ -0,0 +1,81 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFQueryState.h" + +@interface PFMutableQueryState : PFQueryState + +@property (nonatomic, copy, readwrite) NSString *parseClassName; + +@property (nonatomic, assign, readwrite) NSInteger limit; +@property (nonatomic, assign, readwrite) NSInteger skip; + +///-------------------------------------- +/// @name Remote + Caching Options +///-------------------------------------- + +@property (nonatomic, assign, readwrite) PFCachePolicy cachePolicy; +@property (nonatomic, assign, readwrite) NSTimeInterval maxCacheAge; + +@property (nonatomic, assign, readwrite) BOOL trace; + +///-------------------------------------- +/// @name Local Datastore Options +///-------------------------------------- + +@property (nonatomic, assign, readwrite) BOOL shouldIgnoreACLs; +@property (nonatomic, assign, readwrite) BOOL shouldIncludeDeletingEventually; +@property (nonatomic, assign, readwrite) BOOL queriesLocalDatastore; +@property (nonatomic, copy, readwrite) NSString *localDatastorePinName; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)initWithParseClassName:(NSString *)className; ++ (instancetype)stateWithParseClassName:(NSString *)className; + +///-------------------------------------- +/// @name Conditions +///-------------------------------------- + +- (void)setConditionType:(NSString *)type withObject:(id)object forKey:(NSString *)key; + +- (void)setEqualityConditionWithObject:(id)object forKey:(NSString *)key; +- (void)setRelationConditionWithObject:(id)object forKey:(NSString *)key; + +- (void)removeAllConditions; + +///-------------------------------------- +/// @name Sort +///-------------------------------------- + +- (void)sortByKey:(NSString *)key ascending:(BOOL)ascending; +- (void)addSortKey:(NSString *)key ascending:(BOOL)ascending; +- (void)addSortKeysFromSortDescriptors:(NSArray *)sortDescriptors; + +///-------------------------------------- +/// @name Includes +///-------------------------------------- + +- (void)includeKey:(NSString *)key; + +///-------------------------------------- +/// @name Selected Keys +///-------------------------------------- + +- (void)selectKeys:(NSArray *)keys; + +///-------------------------------------- +/// @name Redirect +///-------------------------------------- + +- (void)redirectClassNameForKey:(NSString *)key; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFMutableQueryState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFMutableQueryState.m new file mode 100644 index 0000000..3ac9be9 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFMutableQueryState.m @@ -0,0 +1,177 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFMutableQueryState.h" + +#import "PFQueryState_Private.h" + +@interface PFMutableQueryState () { + NSMutableDictionary *_conditions; + NSMutableArray *_sortKeys; + NSMutableSet *_includedKeys; + NSMutableDictionary *_extraOptions; +} + +@end + +@implementation PFMutableQueryState + +@synthesize conditions = _conditions; +@synthesize sortKeys = _sortKeys; +@synthesize includedKeys = _includedKeys; +@synthesize extraOptions = _extraOptions; + +@dynamic parseClassName; +@dynamic selectedKeys; +@dynamic limit; +@dynamic skip; +@dynamic cachePolicy; +@dynamic maxCacheAge; +@dynamic trace; +@dynamic shouldIgnoreACLs; +@dynamic shouldIncludeDeletingEventually; +@dynamic queriesLocalDatastore; +@dynamic localDatastorePinName; + +///-------------------------------------- +#pragma mark - Property Attributes +///-------------------------------------- + ++ (NSDictionary *)propertyAttributes { + NSMutableDictionary *attributes = [[super propertyAttributes] mutableCopy]; + + attributes[@"conditions"] = [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeMutableCopy]; + attributes[@"sortKeys"] = [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeMutableCopy]; + attributes[@"includedKeys"] = [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeMutableCopy]; + attributes[@"extraOptions"] = [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeMutableCopy]; + + return attributes; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithParseClassName:(NSString *)className { + self = [self init]; + if (!self) return nil; + + _parseClassName = [className copy]; + + return self; +} + ++ (instancetype)stateWithParseClassName:(NSString *)className { + return [[self alloc] initWithParseClassName:className]; +} + +///-------------------------------------- +#pragma mark - Conditions +///-------------------------------------- + +- (void)setConditionType:(NSString *)type withObject:(id)object forKey:(NSString *)key { + NSMutableDictionary *conditionObject = nil; + + // Check if we already have some sort of condition + id existingCondition = _conditions[key]; + if ([existingCondition isKindOfClass:[NSMutableDictionary class]]) { + conditionObject = existingCondition; + } + if (!conditionObject) { + conditionObject = [NSMutableDictionary dictionary]; + } + conditionObject[type] = object; + + [self setEqualityConditionWithObject:conditionObject forKey:key]; +} + +- (void)setEqualityConditionWithObject:(id)object forKey:(NSString *)key { + if (!_conditions) { + _conditions = [NSMutableDictionary dictionary]; + } + _conditions[key] = object; +} + +- (void)setRelationConditionWithObject:(id)object forKey:(NSString *)key { + // We need to force saved PFObject here. + NSMutableDictionary *condition = [NSMutableDictionary dictionaryWithCapacity:2]; + condition[@"object"] = object; + condition[@"key"] = key; + [self setEqualityConditionWithObject:condition forKey:@"$relatedTo"]; +} + +- (void)removeAllConditions { + [_conditions removeAllObjects]; +} + +///-------------------------------------- +#pragma mark - Sort +///-------------------------------------- + +- (void)sortByKey:(NSString *)key ascending:(BOOL)ascending { + [_sortKeys removeAllObjects]; + [self addSortKey:key ascending:ascending]; +} + +- (void)addSortKey:(NSString *)key ascending:(BOOL)ascending { + if (!key) { + return; + } + + NSString *sortKey = (ascending ? key : [NSString stringWithFormat:@"-%@", key]); + if (!_sortKeys) { + _sortKeys = [NSMutableArray arrayWithObject:sortKey]; + } else { + [_sortKeys addObject:sortKey]; + } +} + +- (void)addSortKeysFromSortDescriptors:(NSArray *)sortDescriptors { + [_sortKeys removeAllObjects]; + for (NSSortDescriptor *sortDescriptor in sortDescriptors) { + [self addSortKey:sortDescriptor.key ascending:sortDescriptor.ascending]; + } +} + +///-------------------------------------- +#pragma mark - Includes +///-------------------------------------- + +- (void)includeKey:(NSString *)key { + if (!_includedKeys) { + _includedKeys = [NSMutableSet setWithObject:key]; + } else { + [_includedKeys addObject:key]; + } +} + +///-------------------------------------- +#pragma mark - Selected Keys +///-------------------------------------- + +- (void)selectKeys:(NSArray *)keys { + if (keys) { + _selectedKeys = (_selectedKeys ? [_selectedKeys setByAddingObjectsFromArray:keys] : [NSSet setWithArray:keys]); + } else { + _selectedKeys = nil; + } +} + +///-------------------------------------- +#pragma mark - Redirect +///-------------------------------------- + +- (void)redirectClassNameForKey:(NSString *)key { + if (!_extraOptions) { + _extraOptions = [NSMutableDictionary dictionary]; + } + _extraOptions[@"redirectClassNameForKey"] = key; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFQueryState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFQueryState.h new file mode 100644 index 0000000..c97ff58 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFQueryState.h @@ -0,0 +1,65 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFBaseState.h" + +@interface PFQueryState : PFBaseState + +@property (nonatomic, copy, readonly) NSString *parseClassName; + +@property (nonatomic, copy, readonly) NSDictionary *conditions; + +@property (nonatomic, copy, readonly) NSArray *sortKeys; +@property (nonatomic, copy, readonly) NSString *sortOrderString; + +@property (nonatomic, copy, readonly) NSSet *includedKeys; +@property (nonatomic, copy, readonly) NSSet *selectedKeys; +@property (nonatomic, copy, readonly) NSDictionary *extraOptions; + +@property (nonatomic, assign, readonly) NSInteger limit; +@property (nonatomic, assign, readonly) NSInteger skip; + +///-------------------------------------- +/// @name Remote + Caching Options +///-------------------------------------- + +@property (nonatomic, assign, readonly) PFCachePolicy cachePolicy; +@property (nonatomic, assign, readonly) NSTimeInterval maxCacheAge; + +@property (nonatomic, assign, readonly) BOOL trace; + +///-------------------------------------- +/// @name Local Datastore Options +///-------------------------------------- + +/*! + If ignoreACLs is enabled, we don't check ACLs when querying from LDS. We also don't grab + `PFUser currentUser` since it's unnecessary when ignoring ACLs. + */ +@property (nonatomic, assign, readonly) BOOL shouldIgnoreACLs; +/*! + This is currently unused, but is here to allow future querying across objects that are in the + process of being deleted eventually. + */ +@property (nonatomic, assign, readonly) BOOL shouldIncludeDeletingEventually; +@property (nonatomic, assign, readonly) BOOL queriesLocalDatastore; +@property (nonatomic, copy, readonly) NSString *localDatastorePinName; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)initWithState:(PFQueryState *)state; ++ (instancetype)stateWithState:(PFQueryState *)state; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFQueryState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFQueryState.m new file mode 100644 index 0000000..d5da258 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFQueryState.m @@ -0,0 +1,88 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFQueryState.h" +#import "PFQueryState_Private.h" + +#import "PFMutableQueryState.h" +#import "PFPropertyInfo.h" + +@implementation PFQueryState + +///-------------------------------------- +#pragma mark - PFBaseStateSubclass +///-------------------------------------- + ++ (NSDictionary *)propertyAttributes { + return @{ + @"parseClassName": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + @"conditions": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + @"sortKeys": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + @"includedKeys": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + @"selectedKeys": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + @"extraOptions": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + + @"limit": [PFPropertyAttributes attributes], + @"skip": [PFPropertyAttributes attributes], + @"cachePolicy": [PFPropertyAttributes attributes], + @"maxCacheAge": [PFPropertyAttributes attributes], + + @"trace": [PFPropertyAttributes attributes], + @"shouldIgnoreACLs": [PFPropertyAttributes attributes], + @"shouldIncludeDeletingEventually": [PFPropertyAttributes attributes], + @"queriesLocalDatastore": [PFPropertyAttributes attributes], + + @"localDatastorePinName": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy] + }; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _cachePolicy = kPFCachePolicyIgnoreCache; + _maxCacheAge = INFINITY; + _limit = -1; + + return self; +} + +- (instancetype)initWithState:(PFQueryState *)state { + return [super initWithState:state]; +} + ++ (instancetype)stateWithState:(PFQueryState *)state { + return [super stateWithState:state]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (NSString *)sortOrderString { + return [self.sortKeys componentsJoinedByString:@","]; +} + +///-------------------------------------- +#pragma mark - Mutable Copying +///-------------------------------------- + +- (id)copyWithZone:(NSZone *)zone { + return [[PFQueryState allocWithZone:zone] initWithState:self]; +} + +- (instancetype)mutableCopyWithZone:(NSZone *)zone { + return [[PFMutableQueryState allocWithZone:zone] initWithState:self]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFQueryState_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFQueryState_Private.h new file mode 100644 index 0000000..006d3c2 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/State/PFQueryState_Private.h @@ -0,0 +1,61 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFQueryState.h" + +@interface PFQueryState () { +@protected + NSString *_parseClassName; + + NSDictionary *_conditions; + + NSArray *_sortKeys; + + NSSet *_includedKeys; + NSSet *_selectedKeys; + NSDictionary *_extraOptions; + + NSInteger _limit; + NSInteger _skip; + + PFCachePolicy _cachePolicy; + NSTimeInterval _maxCacheAge; + + BOOL _trace; + + BOOL _shouldIgnoreACLs; + BOOL _shouldIncludeDeletingEventually; + BOOL _queriesLocalDatastore; + NSString *_localDatastorePinName; +} + +@property (nonatomic, copy, readwrite) NSString *parseClassName; + +@property (nonatomic, assign, readwrite) NSInteger limit; +@property (nonatomic, assign, readwrite) NSInteger skip; + +///-------------------------------------- +/// @name Remote + Caching Options +///-------------------------------------- + +@property (nonatomic, assign, readwrite) PFCachePolicy cachePolicy; +@property (nonatomic, assign, readwrite) NSTimeInterval maxCacheAge; + +@property (nonatomic, assign, readwrite) BOOL trace; + +///-------------------------------------- +/// @name Local Datastore Options +///-------------------------------------- + +@property (nonatomic, assign, readwrite) BOOL shouldIgnoreACLs; +@property (nonatomic, assign, readwrite) BOOL shouldIncludeDeletingEventually; +@property (nonatomic, assign, readwrite) BOOL queriesLocalDatastore; +@property (nonatomic, copy, readwrite) NSString *localDatastorePinName; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Utilities/PFQueryUtilities.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Utilities/PFQueryUtilities.h new file mode 100644 index 0000000..59276df --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Utilities/PFQueryUtilities.h @@ -0,0 +1,42 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@interface PFQueryUtilities : NSObject + +///-------------------------------------- +/// @name Predicate +///-------------------------------------- + +/*! + Takes an arbitrary predicate and normalizes it to a form that can easily be converted to a `PFQuery`. + */ ++ (NSPredicate *)predicateByNormalizingPredicate:(NSPredicate *)predicate; + +///-------------------------------------- +/// @name Regex +///-------------------------------------- + +/*! + Converts a string into a regex that matches it. + + @param string String to convert from. + + @returns Query regex string from a string. + */ ++ (NSString *)regexStringForString:(NSString *)string; + +///-------------------------------------- +/// @name Errors +///-------------------------------------- + ++ (NSError *)objectNotFoundError; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Utilities/PFQueryUtilities.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Utilities/PFQueryUtilities.m new file mode 100644 index 0000000..5e9b717 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Query/Utilities/PFQueryUtilities.m @@ -0,0 +1,530 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFQueryUtilities.h" + +#import "PFAssert.h" +#import "PFConstants.h" +#import "PFErrorUtilities.h" + +@implementation PFQueryUtilities + +///-------------------------------------- +#pragma mark - Predicate +///-------------------------------------- + ++ (NSPredicate *)predicateByNormalizingPredicate:(NSPredicate *)predicate { + return [self _hoistCommonPredicates:[self _normalizeToDNF:predicate]]; +} + +/*! + Traverses over all of the subpredicates in the given predicate, calling the given blocks to + transform any instances of NSPredicate. + */ ++ (NSPredicate *)_mapPredicate:(NSPredicate *)predicate + compoundBlock:(NSPredicate *(^)(NSCompoundPredicate *))compoundBlock + comparisonBlock:(NSPredicate *(^)(NSComparisonPredicate *predicate))comparisonBlock { + if ([predicate isKindOfClass:[NSCompoundPredicate class]]) { + if (compoundBlock) { + return compoundBlock((NSCompoundPredicate *)predicate); + } else { + NSCompoundPredicate *compound = (NSCompoundPredicate *)predicate; + + NSMutableArray *newSubpredicates = [NSMutableArray arrayWithCapacity:compound.subpredicates.count]; + for (NSPredicate *subPredicate in compound.subpredicates) { + [newSubpredicates addObject:[self _mapPredicate:subPredicate + compoundBlock:compoundBlock + comparisonBlock:comparisonBlock]]; + } + + NSCompoundPredicateType type = compound.compoundPredicateType; + return [[NSCompoundPredicate alloc] initWithType:type subpredicates:newSubpredicates]; + } + } + + if ([predicate isKindOfClass:[NSComparisonPredicate class]]) { + if (comparisonBlock) { + return comparisonBlock((NSComparisonPredicate *)predicate); + } else { + return predicate; + } + } + + [NSException raise:NSInternalInconsistencyException format:@"NSExpression predicates are not supported."]; + return nil; +} + +/*! + Returns a predicate that is the negation of the input predicate, or throws on error. + */ ++ (NSPredicate *)_negatePredicate:(NSPredicate *)predicate { + return [self _mapPredicate:predicate + compoundBlock:^NSPredicate *(NSCompoundPredicate *compound) { + switch (compound.compoundPredicateType) { + case NSNotPredicateType: { + return [compound.subpredicates objectAtIndex:0]; + } + case NSAndPredicateType: { + NSMutableArray *newSubpredicates = + [NSMutableArray arrayWithCapacity:compound.subpredicates.count]; + for (NSPredicate *subpredicate in compound.subpredicates) { + [newSubpredicates addObject:[self _negatePredicate:subpredicate]]; + } + return [NSCompoundPredicate orPredicateWithSubpredicates:newSubpredicates]; + } + case NSOrPredicateType: { + NSMutableArray *newSubpredicates = + [NSMutableArray arrayWithCapacity:compound.subpredicates.count]; + for (NSPredicate *subpredicate in compound.subpredicates) { + [newSubpredicates addObject:[self _negatePredicate:subpredicate]]; + } + return [NSCompoundPredicate andPredicateWithSubpredicates:newSubpredicates]; + } + default: { + [NSException raise:NSInternalInconsistencyException + format:@"This compound predicate cannot be negated. (%zd)", + compound.compoundPredicateType]; + return nil; + } + } + } comparisonBlock:^NSPredicate *(NSComparisonPredicate *comparison) { + NSPredicateOperatorType newType; + NSComparisonPredicateModifier newModifier = comparison.comparisonPredicateModifier; + SEL customSelector; + + switch (comparison.predicateOperatorType) { + case NSEqualToPredicateOperatorType: { + newType = NSNotEqualToPredicateOperatorType; + break; + } + case NSNotEqualToPredicateOperatorType: { + newType = NSEqualToPredicateOperatorType; + break; + } + case NSInPredicateOperatorType: { + newType = NSCustomSelectorPredicateOperatorType; + customSelector = NSSelectorFromString(@"notContainedIn:"); + break; + } + case NSLessThanPredicateOperatorType: { + newType = NSGreaterThanOrEqualToPredicateOperatorType; + break; + } + case NSLessThanOrEqualToPredicateOperatorType: { + newType = NSGreaterThanPredicateOperatorType; + break; + } + case NSGreaterThanPredicateOperatorType: { + newType = NSLessThanOrEqualToPredicateOperatorType; + break; + } + case NSGreaterThanOrEqualToPredicateOperatorType: { + newType = NSLessThanPredicateOperatorType; + break; + } + case NSBetweenPredicateOperatorType: { + [NSException raise:NSInternalInconsistencyException + format:@"A BETWEEN predicate was found after they should have been removed."]; + } + case NSMatchesPredicateOperatorType: + case NSLikePredicateOperatorType: + case NSBeginsWithPredicateOperatorType: + case NSEndsWithPredicateOperatorType: + case NSContainsPredicateOperatorType: + case NSCustomSelectorPredicateOperatorType: + default: { + [NSException raise:NSInternalInconsistencyException + format:@"This comparison predicate cannot be negated. (%@)", comparison]; + return nil; + } + } + + if (newType == NSCustomSelectorPredicateOperatorType) { + return [NSComparisonPredicate predicateWithLeftExpression:comparison.leftExpression + rightExpression:comparison.rightExpression + customSelector:customSelector]; + } else { + return [NSComparisonPredicate predicateWithLeftExpression:comparison.leftExpression + rightExpression:comparison.rightExpression + modifier:newModifier + type:newType + options:comparison.options]; + } + }]; +} + +/*! + Returns a version of the given predicate that contains no NSNotPredicateType compound predicates. + This greatly simplifies the diversity of predicates we have to handle later in the pipeline. + */ ++ (NSPredicate *)removeNegation:(NSPredicate *)predicate { + return [self _mapPredicate:predicate + compoundBlock:^NSPredicate *(NSCompoundPredicate *compound) { + // Remove negation from any subpredicates. + NSMutableArray *newSubpredicates = + [NSMutableArray arrayWithCapacity:compound.subpredicates.count]; + for (NSPredicate *subPredicate in [compound subpredicates]) { + [newSubpredicates addObject:[self removeNegation:subPredicate]]; + } + + // If this is a NOT predicate, return the negation of the subpredicate. + // Otherwise, just pass it on. + if (compound.compoundPredicateType == NSNotPredicateType) { + return [self _negatePredicate:[newSubpredicates objectAtIndex:0]]; + } else { + return [[NSCompoundPredicate alloc] initWithType:compound.compoundPredicateType + subpredicates:newSubpredicates]; + } + } comparisonBlock:nil]; +} + +/*! + Returns a version of the given predicate that contains no NSBetweenPredicateOperatorType predicates. + (A BETWEEN {C, D}) gets converted to (A >= C AND A <= D). + */ ++ (NSPredicate *)removeBetween:(NSPredicate *)predicate { + return [self _mapPredicate:predicate + compoundBlock:nil + comparisonBlock:^NSPredicate *(NSComparisonPredicate *predicate) { + if ([predicate predicateOperatorType] == NSBetweenPredicateOperatorType) { + NSComparisonPredicate *between = (NSComparisonPredicate *)predicate; + NSExpression *rhs = between.rightExpression; + + PFConsistencyAssert(rhs.expressionType == NSConstantValueExpressionType || + rhs.expressionType == NSAggregateExpressionType, + @"The right-hand side of a BETWEEN operation must be a value or literal."); + + PFConsistencyAssert([rhs.constantValue isKindOfClass:[NSArray class]], + @"The right-hand side of a BETWEEN operation must be an array."); + + NSArray *array = rhs.constantValue; + PFConsistencyAssert(array.count == 2, @"The right-hand side of a BETWEEN operation must have 2 items."); + + id minValue = array[0]; + id maxValue = array[1]; + + NSExpression *minExpression = ([minValue isKindOfClass:[NSExpression class]] + ? minValue + : [NSExpression expressionForConstantValue:minValue]); + NSExpression *maxExpression = ([maxValue isKindOfClass:[NSExpression class]] + ? maxValue + : [NSExpression expressionForConstantValue:maxValue]); + + return [NSCompoundPredicate andPredicateWithSubpredicates: + @[ [NSComparisonPredicate predicateWithLeftExpression:between.leftExpression + rightExpression:minExpression + modifier:between.comparisonPredicateModifier + type:NSGreaterThanOrEqualToPredicateOperatorType + options:between.options], + [NSComparisonPredicate predicateWithLeftExpression:between.leftExpression + rightExpression:maxExpression + modifier:between.comparisonPredicateModifier + type:NSLessThanOrEqualToPredicateOperatorType + options:between.options] + ]]; + } + return predicate; + }]; +} + +/*! + Returns a version of the given predicate that contains no Yoda conditions. + A Yoda condition is one where there's a constant on the LHS, such as (3 <= X). + The predicate returned by this method will instead have (X >= 3). + */ ++ (NSPredicate *)reverseYodaConditions:(NSPredicate *)predicate { + return [self _mapPredicate:predicate + compoundBlock:nil + comparisonBlock:^NSPredicate *(NSComparisonPredicate *comparison) { + if (comparison.leftExpression.expressionType == NSConstantValueExpressionType && + comparison.rightExpression.expressionType == NSKeyPathExpressionType) { + // This is a Yoda condition. + NSPredicateOperatorType newType; + switch ([comparison predicateOperatorType]) { + case NSEqualToPredicateOperatorType: { + newType = NSEqualToPredicateOperatorType; + break; + } + case NSNotEqualToPredicateOperatorType: { + newType = NSNotEqualToPredicateOperatorType; + break; + } + case NSLessThanPredicateOperatorType: { + newType = NSGreaterThanPredicateOperatorType; + break; + } + case NSLessThanOrEqualToPredicateOperatorType: { + newType = NSGreaterThanOrEqualToPredicateOperatorType; + break; + } + case NSGreaterThanPredicateOperatorType: { + newType = NSLessThanPredicateOperatorType; + break; + } + case NSGreaterThanOrEqualToPredicateOperatorType: { + newType = NSLessThanOrEqualToPredicateOperatorType; + break; + } + case NSInPredicateOperatorType: { + // This is like "5 IN X" where X is an array. + // Mongo handles this with syntax like "X = 5". + newType = NSEqualToPredicateOperatorType; + break; + } + case NSContainsPredicateOperatorType: + case NSMatchesPredicateOperatorType: + case NSLikePredicateOperatorType: + case NSBeginsWithPredicateOperatorType: + case NSEndsWithPredicateOperatorType: + case NSCustomSelectorPredicateOperatorType: + case NSBetweenPredicateOperatorType: + default: { + // We don't know how to reverse this Yoda condition, but maybe that's okay. + return predicate; + } + } + return [NSComparisonPredicate predicateWithLeftExpression:comparison.rightExpression + rightExpression:comparison.leftExpression + modifier:comparison.comparisonPredicateModifier + type:newType + options:comparison.options]; + } + return comparison; + }]; +} + +/*! + Returns a version of the given predicate converted to disjunctive normal form (DNF). + Unlike normalizeToDNF:error:, this method only accepts compound predicates, and assumes that + removeNegation:error: has already been applied to the given predicate. + */ ++ (NSPredicate *)asOrOfAnds:(NSCompoundPredicate *)compound { + // Convert the sub-predicates to DNF. + NSMutableArray *dnfSubpredicates = [NSMutableArray arrayWithCapacity:compound.subpredicates.count]; + for (NSPredicate *subpredicate in compound.subpredicates) { + if ([subpredicate isKindOfClass:[NSCompoundPredicate class]]) { + [dnfSubpredicates addObject:[self asOrOfAnds:(NSCompoundPredicate *)subpredicate]]; + } else { + [dnfSubpredicates addObject:subpredicate]; + } + } + + if (compound.compoundPredicateType == NSOrPredicateType) { + // We just need to flatten any child ORs into this OR. + NSMutableArray *newSubpredicates = [NSMutableArray arrayWithCapacity:dnfSubpredicates.count]; + for (NSPredicate *subpredicate in dnfSubpredicates) { + if ([subpredicate isKindOfClass:[NSCompoundPredicate class]] && + ((NSCompoundPredicate *)subpredicate).compoundPredicateType == NSOrPredicateType) { + for (NSPredicate *grandchild in ((NSCompoundPredicate *)subpredicate).subpredicates) { + [newSubpredicates addObject:grandchild]; + } + } else { + [newSubpredicates addObject:subpredicate]; + } + } + // There's no reason to wrap a single predicate in an OR. + if (newSubpredicates.count == 1) { + return newSubpredicates.lastObject; + } + return [NSCompoundPredicate orPredicateWithSubpredicates:newSubpredicates]; + } + + if (compound.compoundPredicateType == NSAndPredicateType) { + // This is tough. We need to take the cross product of all the subpredicates. + NSMutableArray *disjunction = [NSMutableArray arrayWithObject:@[]]; + for (NSPredicate *subpredicate in dnfSubpredicates) { + NSMutableArray *newDisjunction = [NSMutableArray array]; + if ([subpredicate isKindOfClass:[NSCompoundPredicate class]]) { + NSCompoundPredicate *subcompound = (NSCompoundPredicate *)subpredicate; + if (subcompound.compoundPredicateType == NSOrPredicateType) { + // We have to add every item in the OR to every AND list we have. + for (NSArray *conjunction in disjunction) { + for (NSPredicate *grandchild in subcompound.subpredicates) { + [newDisjunction addObject:[conjunction arrayByAddingObject:grandchild]]; + } + } + + } else if (subcompound.compoundPredicateType == NSAndPredicateType) { + // Just add all these conditions to all the conjunctions in progress. + for (NSArray *conjunction in disjunction) { + NSArray *grandchildren = subcompound.subpredicates; + [newDisjunction addObject:[conjunction arrayByAddingObjectsFromArray:grandchildren]]; + } + + } else { + [NSException raise:NSInternalInconsistencyException + format:@"[PFQuery asOrOfAnds:] found a compound query that wasn't OR or AND."]; + } + } else { + // Just add this condition to all the conjunctions in progress. + for (NSArray *conjunction in disjunction) { + [newDisjunction addObject:[conjunction arrayByAddingObject:subpredicate]]; + } + } + disjunction = newDisjunction; + } + + // Now disjunction contains an OR of ANDs. We just need to convert it to NSPredicates. + NSMutableArray *andPredicates = [NSMutableArray arrayWithCapacity:disjunction.count]; + for (NSArray *conjunction in disjunction) { + if (conjunction.count > 0) { + if (conjunction.count == 1) { + [andPredicates addObject:conjunction.lastObject]; + } else { + [andPredicates addObject:[NSCompoundPredicate + andPredicateWithSubpredicates:conjunction]]; + } + } + } + if (andPredicates.count == 1) { + return andPredicates.lastObject; + } else { + return [NSCompoundPredicate orPredicateWithSubpredicates:andPredicates]; + } + } + + [NSException raise:NSInternalInconsistencyException + format:@"[PFQuery asOrOfAnds:] was passed a compound query that wasn't OR or AND."]; + + return nil; +} + +/*! + Throws an exception if any comparison predicate inside this predicate has any modifiers, such as ANY, EVERY, etc. + */ ++ (void)assertNoPredicateModifiers:(NSPredicate *)predicate { + [self _mapPredicate:predicate + compoundBlock:nil + comparisonBlock:^NSPredicate *(NSComparisonPredicate *comparison) { + PFConsistencyAssert(comparison.comparisonPredicateModifier == NSDirectPredicateModifier, + @"Unsupported comparison predicate modifier %zd.", + comparison.comparisonPredicateModifier); + return comparison; + }]; +} + +/*! + Returns a version of the given predicate converted to disjunctive normal form (DNF), + known colloqially as an "or of ands", the only form of query that PFQuery accepts. + */ ++ (NSPredicate *)_normalizeToDNF:(NSPredicate *)predicate { + // Make sure they didn't use ANY, EVERY, etc. + [self assertNoPredicateModifiers:predicate]; + + // Change any BETWEEN operators to a conjunction. + predicate = [self removeBetween:predicate]; + + // Change any backwards (3 <= X) to the standardized (X >= 3). + predicate = [self reverseYodaConditions:predicate]; + + // Push any negation into the leaves. + predicate = [self removeNegation:predicate]; + + // Any comparison predicate is trivially DNF. + if (![predicate isKindOfClass:[NSCompoundPredicate class]]) { + return predicate; + } + + // It must be a compound predicate. Convert it to an OR of ANDs. + return [self asOrOfAnds:(NSCompoundPredicate *)predicate]; +} + +/*! + Takes a predicate like ((A AND B) OR (A AND C)) and rewrites it as the more efficient (A AND (B OR C)). + Assumes the input predicate is already in DNF. + // TODO: (nlutsenko): Move this logic into the server and remove it from here. + */ ++ (NSPredicate *)_hoistCommonPredicates:(NSPredicate *)predicate { + // This only makes sense for queries with a top-level OR. + if (!([predicate isKindOfClass:[NSCompoundPredicate class]] && + ((NSCompoundPredicate *)predicate).compoundPredicateType == NSOrPredicateType)) { + return predicate; + } + + // Find the set of predicates that are included in every branch of this OR. + NSArray *andPredicates = ((NSCompoundPredicate *)predicate).subpredicates; + NSMutableSet *common = nil; + for (NSPredicate *andPredicate in andPredicates) { + NSMutableSet *comparisonPredicates = nil; + if ([andPredicate isKindOfClass:[NSComparisonPredicate class]]) { + comparisonPredicates = [NSMutableSet setWithObject:andPredicate]; + } else { + comparisonPredicates = + [NSMutableSet setWithArray:((NSCompoundPredicate *)andPredicate).subpredicates]; + } + + if (!common) { + common = comparisonPredicates; + } else { + [common intersectSet:comparisonPredicates]; + } + } + + if (!common.count) { + return predicate; + } + + NSMutableArray *newAndPredicates = [NSMutableArray array]; + + // Okay, there were common sub-predicates. Hoist them up to this one. + for (NSPredicate *andPredicate in andPredicates) { + NSMutableSet *comparisonPredicates = nil; + if ([andPredicate isKindOfClass:[NSComparisonPredicate class]]) { + comparisonPredicates = [NSMutableSet setWithObject:andPredicate]; + } else { + comparisonPredicates = + [NSMutableSet setWithArray:((NSCompoundPredicate *)andPredicate).subpredicates]; + } + + for (NSPredicate *comparisonPredicate in common) { + [comparisonPredicates removeObject:comparisonPredicate]; + } + + if (comparisonPredicates.count == 0) { + // One of the OR predicates reduces to TRUE, so just return the hoisted part. + return [NSCompoundPredicate andPredicateWithSubpredicates:common.allObjects]; + } else if (comparisonPredicates.count == 1) { + [newAndPredicates addObject:comparisonPredicates.allObjects.lastObject]; + } else { + NSPredicate *newAndPredicate = + [NSCompoundPredicate andPredicateWithSubpredicates:comparisonPredicates.allObjects]; + [newAndPredicates addObject:newAndPredicate]; + } + } + + // Make an AND of the hoisted predicates and the OR of the modified subpredicates. + NSPredicate *newOrPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:newAndPredicates]; + NSArray *newPredicates = [@[ newOrPredicate ] arrayByAddingObjectsFromArray:common.allObjects]; + return [NSCompoundPredicate andPredicateWithSubpredicates:newPredicates]; +} + +///-------------------------------------- +#pragma mark - Regex +///-------------------------------------- + +/*! + This is used to create a regex string to match the input string. By using Q and E flags to match, we can do this + without requiring super expensive rewrites, but me must be careful to escape existing \E flags in the input string. + By replacing it with `\E\\E\Q`, the regex engine will end the old literal block, put in the user's `\E` string, and + Begin another literal block. + */ ++ (NSString *)regexStringForString:(NSString *)string { + return [NSString stringWithFormat:@"\\Q%@\\E", [string stringByReplacingOccurrencesOfString:@"\\E" + withString:@"\\E\\\\E\\Q"]]; +} + +///-------------------------------------- +#pragma mark - Errors +///-------------------------------------- + ++ (NSError *)objectNotFoundError { + return [PFErrorUtilities errorWithCode:kPFErrorObjectNotFound message:@"No results matched the query."]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/PFRelationPrivate.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/PFRelationPrivate.h new file mode 100644 index 0000000..26d26fd --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/PFRelationPrivate.h @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@class PFDecoder; + +@interface PFRelation (Private) + ++ (PFRelation *)relationForObject:(PFObject *)parent forKey:(NSString *)key; ++ (PFRelation *)relationWithTargetClass:(NSString *)targetClass; ++ (PFRelation *)relationFromDictionary:(NSDictionary *)dictionary withDecoder:(PFDecoder *)decoder; +- (void)ensureParentIs:(PFObject *)someParent andKeyIs:(NSString *)someKey; +- (NSDictionary *)encodeIntoDictionary; +- (BOOL)_hasKnownObject:(PFObject *)object; +- (void)_addKnownObject:(PFObject *)object; +- (void)_removeKnownObject:(PFObject *)object; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFMutableRelationState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFMutableRelationState.h new file mode 100644 index 0000000..3fd99ed --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFMutableRelationState.h @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRelationState.h" + +@interface PFMutableRelationState : PFRelationState + +@property (nonatomic, weak, readwrite) PFObject *parent; +@property (nonatomic, copy, readwrite) NSString *targetClass; +@property (nonatomic, copy, readwrite) NSMutableSet *knownObjects; +@property (nonatomic, copy, readwrite) NSString *key; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFMutableRelationState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFMutableRelationState.m new file mode 100644 index 0000000..6a92279 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFMutableRelationState.m @@ -0,0 +1,62 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFMutableRelationState.h" + +#import "PFObject.h" +#import "PFRelationState_Private.h" + +@implementation PFMutableRelationState + +@dynamic parent; +@dynamic parentObjectId; +@dynamic parentClassName; +@dynamic targetClass; +@dynamic knownObjects; +@dynamic key; + +///-------------------------------------- +#pragma mark - PFBaseStateSubclass +///-------------------------------------- + ++ (NSDictionary *)propertyAttributes { + NSMutableDictionary *parentAttributes = [[super propertyAttributes] mutableCopy]; + + parentAttributes[@"knownObjects"] = [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeMutableCopy]; + + return parentAttributes; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _knownObjects = [[NSMutableSet alloc] init]; + + return self; +} + +///-------------------------------------- +#pragma mark - Properties +///-------------------------------------- + +- (void)setParent:(PFObject *)parent { + if (_parent != parent || ![self.parentClassName isEqualToString:parent.parseClassName] || + ![self.parentObjectId isEqualToString:parent.objectId]) { + _parent = parent; + _parentClassName = [[parent parseClassName] copy]; + _parentObjectId = [[parent objectId] copy]; + } +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFRelationState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFRelationState.h new file mode 100644 index 0000000..3ce8e80 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFRelationState.h @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFBaseState.h" + +@class PFObject; + +@interface PFRelationState : PFBaseState + +@property (nonatomic, weak, readonly) PFObject *parent; +@property (nonatomic, copy, readonly) NSString *parentClassName; +@property (nonatomic, copy, readonly) NSString *parentObjectId; +@property (nonatomic, copy, readonly) NSString *targetClass; +@property (nonatomic, copy, readonly) NSSet *knownObjects; +@property (nonatomic, copy, readonly) NSString *key; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithState:(PFRelationState *)otherState; ++ (instancetype)stateWithState:(PFRelationState *)otherState; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFRelationState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFRelationState.m new file mode 100644 index 0000000..bdf36c6 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFRelationState.m @@ -0,0 +1,65 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRelationState.h" +#import "PFRelationState_Private.h" + +#import "PFMutableRelationState.h" + +@implementation PFRelationState + +///-------------------------------------- +#pragma mark - PFBaseStateSubclass +///-------------------------------------- + ++ (NSDictionary *)propertyAttributes { + return @{ + @"parent": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeWeak], + @"parentClassName": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + @"parentObjectId": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + @"targetClass": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + @"knownObjects": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + @"key": [PFPropertyAttributes attributesWithAssociationType:PFPropertyInfoAssociationTypeCopy], + }; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _knownObjects = [[NSSet alloc] init]; + + return self; +} + +- (instancetype)initWithState:(PFRelationState *)otherState { + return [super initWithState:otherState]; +} + ++ (instancetype)stateWithState:(PFRelationState *)otherState { + return [super stateWithState:otherState]; +} + +///-------------------------------------- +#pragma mark - Copying +///-------------------------------------- + +- (instancetype)copyWithZone:(NSZone *)zone { + return [[PFRelationState allocWithZone:zone] initWithState:self]; +} + +- (instancetype)mutableCopyWithZone:(NSZone *)zone { + return [[PFMutableRelationState allocWithZone:zone] initWithState:self]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFRelationState_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFRelationState_Private.h new file mode 100644 index 0000000..bf13b9e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Relation/State/PFRelationState_Private.h @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRelationState.h" + +@interface PFRelationState() { +@protected + __weak PFObject *_parent; + NSString *_parentClassName; + NSString *_parentObjectId; + NSSet *_knownObjects; + NSString *_key; +} + +@property (nonatomic, weak, readwrite) PFObject *parent; +@property (nonatomic, copy, readwrite) NSString *parentClassName; +@property (nonatomic, copy, readwrite) NSString *parentObjectId; +@property (nonatomic, copy, readwrite) NSString *targetClass; +@property (nonatomic, copy, readwrite) NSSet *knownObjects; +@property (nonatomic, copy, readwrite) NSString *key; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Controller/PFSessionController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Controller/PFSessionController.h new file mode 100644 index 0000000..83d06e4 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Controller/PFSessionController.h @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFDataProvider.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFSession; + +NS_ASSUME_NONNULL_BEGIN + +@interface PFSessionController : NSObject + +@property (nonatomic, weak, readonly) id dataSource; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)initWithDataSource:(id)dataSource; ++ (instancetype)controllerWithDataSource:(id)dataSource; + +///-------------------------------------- +/// @name Current Session +///-------------------------------------- + +- (BFTask *)getCurrentSessionAsyncWithSessionToken:(nullable NSString *)sessionToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Controller/PFSessionController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Controller/PFSessionController.m new file mode 100644 index 0000000..7abe535 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Controller/PFSessionController.m @@ -0,0 +1,60 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFSessionController.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFCommandRunning.h" +#import "PFObjectPrivate.h" +#import "PFRESTSessionCommand.h" +#import "PFSession.h" + +@implementation PFSessionController + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithDataSource:(id)dataSource { + self = [super init]; + if (!self) return nil; + + _dataSource = dataSource; + + return self; +} + ++ (instancetype)controllerWithDataSource:(id)dataSource { + return [[self alloc] initWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - Current Session +///-------------------------------------- + +- (BFTask *)getCurrentSessionAsyncWithSessionToken:(NSString *)sessionToken { + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + PFRESTCommand *command = [PFRESTSessionCommand getCurrentSessionCommandWithSessionToken:sessionToken]; + return [self.dataSource.commandRunner runCommandAsync:command + withOptions:PFCommandRunningOptionRetryIfFailed]; + }] continueWithSuccessBlock:^id(BFTask *task) { + PFCommandResult *result = task.result; + NSDictionary *dictionary = result.result; + PFSession *session = [PFSession _objectFromDictionary:dictionary + defaultClassName:[PFSession parseClassName] + completeData:YES]; + return session; + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/PFSession_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/PFSession_Private.h new file mode 100644 index 0000000..b647585 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/PFSession_Private.h @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@class PFSessionController; + +@interface PFSession () + +///-------------------------------------- +/// @name Session Controller +///-------------------------------------- + ++ (PFSessionController *)sessionController; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Utilities/PFSessionUtilities.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Utilities/PFSessionUtilities.h new file mode 100644 index 0000000..806d7da --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Utilities/PFSessionUtilities.h @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PFSessionUtilities : NSObject + +///-------------------------------------- +/// @name Session Token +///-------------------------------------- + ++ (BOOL)isSessionTokenRevocable:(nullable NSString *)sessionToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Utilities/PFSessionUtilities.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Utilities/PFSessionUtilities.m new file mode 100644 index 0000000..4dff476 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/Session/Utilities/PFSessionUtilities.m @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFSessionUtilities.h" + +@implementation PFSessionUtilities + +///-------------------------------------- +#pragma mark - Session Token +///-------------------------------------- + ++ (BOOL)isSessionTokenRevocable:(NSString *)sessionToken { + return (sessionToken && [sessionToken rangeOfString:@"r:"].location != NSNotFound); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ThreadSafety/PFThreadsafety.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/ThreadSafety/PFThreadsafety.h new file mode 100644 index 0000000..7ca2a64 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ThreadSafety/PFThreadsafety.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +extern dispatch_queue_t PFThreadsafetyCreateQueueForObject(id object); +extern void PFThreadsafetySafeDispatchSync(dispatch_queue_t queue, dispatch_block_t block); diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/ThreadSafety/PFThreadsafety.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/ThreadSafety/PFThreadsafety.m new file mode 100644 index 0000000..e78f547 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/ThreadSafety/PFThreadsafety.m @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFThreadsafety.h" + +static void *const PFThreadsafetyQueueIDKey = (void *)&PFThreadsafetyQueueIDKey; + +dispatch_queue_t PFThreadsafetyCreateQueueForObject(id object) { + NSString *label = [NSStringFromClass([object class]) stringByAppendingString:@".synchronizationQueue"]; + dispatch_queue_t queue = dispatch_queue_create([label UTF8String], DISPATCH_QUEUE_SERIAL); + + void *uuid = calloc(1, sizeof(uuid)); + dispatch_queue_set_specific(queue, PFThreadsafetyQueueIDKey, uuid, free); + + return queue; +} + +void PFThreadsafetySafeDispatchSync(dispatch_queue_t queue, dispatch_block_t block) { + void *uuidMine = dispatch_get_specific(PFThreadsafetyQueueIDKey); + void *uuidOther = dispatch_queue_get_specific(queue, PFThreadsafetyQueueIDKey); + + if (uuidMine == uuidOther) { + block(); + } else { + dispatch_sync(queue, block); + } +} diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.h new file mode 100644 index 0000000..746c247 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.h @@ -0,0 +1,61 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import +#import + +#import "PFCoreDataProvider.h" + +NS_ASSUME_NONNULL_BEGIN + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFUser; + +@interface PFUserAuthenticationController : NSObject + +@property (nonatomic, weak, readonly) id dataSource; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +- (instancetype)initWithDataSource:(id)dataSource; ++ (instancetype)controllerWithDataSource:(id)dataSource; + +///-------------------------------------- +/// @name Authentication Providers +///-------------------------------------- + +- (void)registerAuthenticationDelegate:(id)delegate forAuthType:(NSString *)authType; +- (void)unregisterAuthenticationDelegateForAuthType:(NSString *)authType; + +- (id)authenticationDelegateForAuthType:(NSString *)authType; + +///-------------------------------------- +/// @name Authentication +///-------------------------------------- + +- (BFTask PF_GENERIC(NSNumber *) *)restoreAuthenticationAsyncWithAuthData:(nullable NSDictionary *)authData + forAuthType:(NSString *)authType; +- (BFTask PF_GENERIC(NSNumber *) *)deauthenticateAsyncWithAuthType:(NSString *)authType; + +///-------------------------------------- +/// @name Log In +///-------------------------------------- + +- (BFTask *)logInUserAsyncWithAuthType:(NSString *)authType authData:(NSDictionary *)authData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m new file mode 100644 index 0000000..2f50838 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m @@ -0,0 +1,171 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFUserAuthenticationController.h" + +#import "BFTask+Private.h" +#import "PFMacros.h" +#import "PFUserPrivate.h" +#import "PFObjectPrivate.h" +#import "PFAnonymousUtils.h" +#import "PFAnonymousAuthenticationProvider.h" +#import "PFUserController.h" +#import "PFCurrentUserController.h" +#import "PFAssert.h" + +@interface PFUserAuthenticationController () { + dispatch_queue_t _dataAccessQueue; + NSMutableDictionary PF_GENERIC(NSString *, id) *_authenticationDelegates; +} + +@end + +@implementation PFUserAuthenticationController + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithDataSource:(id)dataSource { + self = [super init]; + if (!self) return nil; + + _dataSource = dataSource; + _dataAccessQueue = dispatch_queue_create("com.parse.user.authenticationManager", DISPATCH_QUEUE_SERIAL); + _authenticationDelegates = [NSMutableDictionary dictionary]; + + return self; +} + ++ (instancetype)controllerWithDataSource:(id)dataSource { + return [[self alloc] initWithDataSource:dataSource]; +} + +///-------------------------------------- +#pragma mark - Authentication Providers +///-------------------------------------- + +- (void)registerAuthenticationDelegate:(id)delegate forAuthType:(NSString *)authType { + PFParameterAssert(delegate, @"Authentication delegate can't be `nil`."); + PFParameterAssert(authType, @"`authType` can't be `nil`."); + PFConsistencyAssert(![self authenticationDelegateForAuthType:authType], + @"Authentication delegate already registered for authType `%@`.", authType); + + dispatch_sync(_dataAccessQueue, ^{ + _authenticationDelegates[authType] = delegate; + }); + + // TODO: (nlutsenko) Decouple this further. + [[self.dataSource.currentUserController getCurrentUserAsyncWithOptions:0] continueWithSuccessBlock:^id(BFTask *task) { + PFUser *user = task.result; + [user synchronizeAuthDataWithAuthType:authType]; + return nil; + }]; +} + +- (void)unregisterAuthenticationDelegateForAuthType:(NSString *)authType { + if (!authType) { + return; + } + dispatch_sync(_dataAccessQueue, ^{ + [_authenticationDelegates removeObjectForKey:authType]; + }); +} + +- (id)authenticationDelegateForAuthType:(NSString *)authType { + if (!authType) { + return nil; + } + + __block id delegate = nil; + dispatch_sync(_dataAccessQueue, ^{ + delegate = _authenticationDelegates[authType]; + }); + return delegate; +} + +///-------------------------------------- +#pragma mark - Authentication +///-------------------------------------- + +- (BFTask PF_GENERIC(NSNumber *)*)restoreAuthenticationAsyncWithAuthData:(nullable NSDictionary *)authData + forAuthType:(NSString *)authType { + id provider = [self authenticationDelegateForAuthType:authType]; + if (!provider) { + return [BFTask taskWithResult:@YES]; + } + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id { + return [BFTask taskWithResult:@([provider restoreAuthenticationWithAuthData:authData])]; + }]; +} + +- (BFTask PF_GENERIC(NSNumber *)*)deauthenticateAsyncWithAuthType:(NSString *)authType { + return [self restoreAuthenticationAsyncWithAuthData:nil forAuthType:authType]; +} + +///-------------------------------------- +#pragma mark - Log In +///-------------------------------------- + +- (BFTask *)logInUserAsyncWithAuthType:(NSString *)authType authData:(NSDictionary *)authData { + //TODO: (nlutsenko) Make it fully async. + //TODO: (nlutsenko) Inject `PFUserController` here. + PFUser *currentUser = [PFUser currentUser]; + if (currentUser && [PFAnonymousUtils isLinkedWithUser:currentUser]) { + if ([currentUser isLazy]) { + PFUser *user = currentUser; + BFTask *resolveLaziness = nil; + NSDictionary *oldAnonymousData = nil; + @synchronized(user.lock) { + oldAnonymousData = user.authData[PFAnonymousUserAuthenticationType]; + + // Replace any anonymity with the new linked authData + [user stripAnonymity]; + + [user.authData setObject:authData forKey:authType]; + [user.linkedServiceNames addObject:authType]; + + resolveLaziness = [user resolveLazinessAsync:[BFTask taskWithResult:nil]]; + } + + return [resolveLaziness continueAsyncWithBlock:^id(BFTask *task) { + if (task.isCancelled || task.exception || task.error) { + [user.authData removeObjectForKey:authType]; + [user.linkedServiceNames removeObject:authType]; + [user restoreAnonymity:oldAnonymousData]; + return task; + } + return task.result; + }]; + } else { + return [[currentUser linkWithAuthTypeInBackground:authType + authData:authData] continueAsyncWithBlock:^id(BFTask *task) { + NSError *error = task.error; + if (error) { + if (error.code == kPFErrorAccountAlreadyLinked) { + // An account that's linked to the given authData already exists, + // so log in instead of trying to claim. + return [[PFUser userController] logInCurrentUserAsyncWithAuthType:authType + authData:authData + revocableSession:[PFUser _isRevocableSessionEnabled]]; + } else { + return task; + } + } + + return [BFTask taskWithResult:currentUser]; + }]; + } + } + return [[PFUser userController] logInCurrentUserAsyncWithAuthType:authType + authData:authData + revocableSession:[PFUser _isRevocableSessionEnabled]]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.h new file mode 100644 index 0000000..d906dd1 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.h @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +extern NSString *const PFAnonymousUserAuthenticationType; + +@interface PFAnonymousAuthenticationProvider : NSObject + +/*! + Gets auth data with a fresh UUID. + */ +@property (nonatomic, copy, readonly) NSDictionary *authData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.m new file mode 100644 index 0000000..e338151 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.m @@ -0,0 +1,36 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFAnonymousAuthenticationProvider.h" + +#import + +NSString *const PFAnonymousUserAuthenticationType = @"anonymous"; + +@implementation PFAnonymousAuthenticationProvider + +///-------------------------------------- +#pragma mark - PFAnonymousAuthenticationProvider +///-------------------------------------- + +- (BOOL)restoreAuthenticationWithAuthData:(NSDictionary *)authData { + return YES; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (NSDictionary *)authData { + NSString *uuidString = [NSUUID UUID].UUIDString; + uuidString = [uuidString lowercaseString]; + return @{ @"id" : uuidString }; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousUtils_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousUtils_Private.h new file mode 100644 index 0000000..6d966f3 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousUtils_Private.h @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@class PFAnonymousAuthenticationProvider; +@class PFUser; + +@interface PFAnonymousUtils (Private) + ++ (PFAnonymousAuthenticationProvider *)_authenticationProvider; ++ (void)_clearAuthenticationProvider; + ++ (PFUser *)_lazyLogIn; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Coder/File/PFUserFileCodingLogic.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Coder/File/PFUserFileCodingLogic.h new file mode 100644 index 0000000..4ccbf77 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Coder/File/PFUserFileCodingLogic.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectFileCodingLogic.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFUserFileCodingLogic : PFObjectFileCodingLogic + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Coder/File/PFUserFileCodingLogic.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Coder/File/PFUserFileCodingLogic.m new file mode 100644 index 0000000..d459bc2 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Coder/File/PFUserFileCodingLogic.m @@ -0,0 +1,60 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFUserFileCodingLogic.h" + +#import "PFDecoder.h" +#import "PFMutableUserState.h" +#import "PFObjectPrivate.h" +#import "PFUserConstants.h" +#import "PFUserPrivate.h" + +@interface PFUserFileCodingLogic () + +@end + +@implementation PFUserFileCodingLogic + +///-------------------------------------- +#pragma mark - Coding +///-------------------------------------- + +- (void)updateObject:(PFObject *)object fromDictionary:(NSDictionary *)dictionary usingDecoder:(PFDecoder *)decoder { + PFUser *user = (PFUser *)object; + + NSString *newSessionToken = dictionary[@"session_token"] ?: dictionary[PFUserSessionTokenRESTKey]; + if (newSessionToken) { + PFMutableUserState *state = [user._state mutableCopy]; + state.sessionToken = newSessionToken; + user._state = state; + } + + // Merge the linked service metadata + NSDictionary *newAuthData = dictionary[@"auth_data"] ?: dictionary[PFUserAuthDataRESTKey]; + newAuthData = [decoder decodeObject:newAuthData]; + if (newAuthData) { + [user.authData removeAllObjects]; + [user.linkedServiceNames removeAllObjects]; + [newAuthData enumerateKeysAndObjectsUsingBlock:^(id key, id linkData, BOOL *stop) { + if (linkData != [NSNull null]) { + user.authData[key] = linkData; + [user.linkedServiceNames addObject:key]; + [user synchronizeAuthDataWithAuthType:key]; + } else { + [user.authData removeObjectForKey:key]; + [user.linkedServiceNames removeObject:key]; + [user synchronizeAuthDataWithAuthType:key]; + } + }]; + } + + [super updateObject:user fromDictionary:dictionary usingDecoder:decoder]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Constants/PFUserConstants.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Constants/PFUserConstants.h new file mode 100644 index 0000000..f8da41e --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Constants/PFUserConstants.h @@ -0,0 +1,15 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +extern NSString *const PFUserUsernameRESTKey; +extern NSString *const PFUserPasswordRESTKey; +extern NSString *const PFUserSessionTokenRESTKey; +extern NSString *const PFUserAuthDataRESTKey; diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Constants/PFUserConstants.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Constants/PFUserConstants.m new file mode 100644 index 0000000..ecccaf1 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Constants/PFUserConstants.m @@ -0,0 +1,15 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFUserConstants.h" + +NSString *const PFUserUsernameRESTKey = @"username"; +NSString *const PFUserPasswordRESTKey = @"password"; +NSString *const PFUserSessionTokenRESTKey = @"sessionToken"; +NSString *const PFUserAuthDataRESTKey = @"authData"; diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Controller/PFUserController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Controller/PFUserController.h new file mode 100644 index 0000000..4ff2208 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Controller/PFUserController.h @@ -0,0 +1,61 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "PFCoreDataProvider.h" +#import "PFDataProvider.h" +#import "PFObjectControlling.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PFUserController : NSObject + +@property (nonatomic, weak, readonly) id commonDataSource; +@property (nonatomic, weak, readonly) id coreDataSource; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithCommonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource; ++ (instancetype)controllerWithCommonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource; + +///-------------------------------------- +/// @name Log In +///-------------------------------------- + +- (BFTask *)logInCurrentUserAsyncWithSessionToken:(NSString *)sessionToken; +- (BFTask *)logInCurrentUserAsyncWithUsername:(NSString *)username + password:(NSString *)password + revocableSession:(BOOL)revocableSession; + +//TODO: (nlutsenko) Move this method into PFUserAuthenticationController after PFUser is decoupled further. +- (BFTask *)logInCurrentUserAsyncWithAuthType:(NSString *)authType + authData:(NSDictionary *)authData + revocableSession:(BOOL)revocableSession; + +///-------------------------------------- +/// @name Reset Password +///-------------------------------------- + +- (BFTask *)requestPasswordResetAsyncForEmail:(NSString *)email; + +///-------------------------------------- +/// @name Log Out +///-------------------------------------- + +- (BFTask *)logOutUserAsyncWithSessionToken:(NSString *)sessionToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Controller/PFUserController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Controller/PFUserController.m new file mode 100644 index 0000000..cebeb52 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/Controller/PFUserController.m @@ -0,0 +1,164 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFUserController.h" + +#import "BFTask+Private.h" +#import "PFCommandResult.h" +#import "PFCommandRunning.h" +#import "PFCurrentUserController.h" +#import "PFErrorUtilities.h" +#import "PFMacros.h" +#import "PFObjectPrivate.h" +#import "PFRESTUserCommand.h" +#import "PFUserPrivate.h" + +@implementation PFUserController + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithCommonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource { + self = [super init]; + if (!self) return nil; + + _commonDataSource = commonDataSource; + _coreDataSource = coreDataSource; + + return self; +} + ++ (instancetype)controllerWithCommonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource { + return [[self alloc] initWithCommonDataSource:commonDataSource + coreDataSource:coreDataSource]; +} + +///-------------------------------------- +#pragma mark - Log In +///-------------------------------------- + +- (BFTask *)logInCurrentUserAsyncWithSessionToken:(NSString *)sessionToken { + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + PFRESTCommand *command = [PFRESTUserCommand getCurrentUserCommandWithSessionToken:sessionToken]; + return [self.commonDataSource.commandRunner runCommandAsync:command + withOptions:PFCommandRunningOptionRetryIfFailed]; + }] continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + PFCommandResult *result = task.result; + NSDictionary *dictionary = result.result; + + // We test for a null object, if it isn't, we can use the response to create a PFUser. + if ([dictionary isKindOfClass:[NSNull class]] || !dictionary) { + return [BFTask taskWithError:[PFErrorUtilities errorWithCode:kPFErrorObjectNotFound + message:@"Invalid Session Token."]]; + } + + PFUser *user = [PFUser _objectFromDictionary:dictionary + defaultClassName:[PFUser parseClassName] + completeData:YES]; + // Serialize the object to disk so we can later access it via currentUser + PFCurrentUserController *controller = self.coreDataSource.currentUserController; + return [[controller saveCurrentObjectAsync:user] continueWithBlock:^id(BFTask *task) { + return user; + }]; + }]; +} + +- (BFTask *)logInCurrentUserAsyncWithUsername:(NSString *)username + password:(NSString *)password + revocableSession:(BOOL)revocableSession { + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + PFRESTCommand *command = [PFRESTUserCommand logInUserCommandWithUsername:username + password:password + revocableSession:revocableSession]; + return [self.commonDataSource.commandRunner runCommandAsync:command + withOptions:PFCommandRunningOptionRetryIfFailed]; + }] continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + PFCommandResult *result = task.result; + NSDictionary *dictionary = result.result; + + // We test for a null object, if it isn't, we can use the response to create a PFUser. + if ([dictionary isKindOfClass:[NSNull class]] || !dictionary) { + return [BFTask taskWithError:[PFErrorUtilities errorWithCode:kPFErrorObjectNotFound + message:@"Invalid login credentials."]]; + } + + PFUser *user = [PFUser _objectFromDictionary:dictionary + defaultClassName:[PFUser parseClassName] + completeData:YES]; + + // Serialize the object to disk so we can later access it via currentUser + PFCurrentUserController *controller = self.coreDataSource.currentUserController; + return [[controller saveCurrentObjectAsync:user] continueWithBlock:^id(BFTask *task) { + return user; + }]; + }]; +} + +- (BFTask *)logInCurrentUserAsyncWithAuthType:(NSString *)authType + authData:(NSDictionary *)authData + revocableSession:(BOOL)revocableSession { + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + PFRESTCommand *command = [PFRESTUserCommand serviceLoginUserCommandWithAuthenticationType:authType + authenticationData:authData + revocableSession:revocableSession]; + return [self.commonDataSource.commandRunner runCommandAsync:command + withOptions:PFCommandRunningOptionRetryIfFailed]; + }] continueWithSuccessBlock:^id(BFTask *task) { + PFCommandResult *result = task.result; + PFUser *user = [PFUser _objectFromDictionary:result.result + defaultClassName:[PFUser parseClassName] + completeData:YES]; + @synchronized ([user lock]) { + user.authData[authType] = authData; + [user.linkedServiceNames addObject:authType]; + [user startSave]; + return [user _handleServiceLoginCommandResult:result]; + } + }]; +} + +///-------------------------------------- +#pragma mark - Reset Password +///-------------------------------------- + +- (BFTask *)requestPasswordResetAsyncForEmail:(NSString *)email { + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + PFRESTCommand *command = [PFRESTUserCommand resetPasswordCommandForUserWithEmail:email]; + return [self.commonDataSource.commandRunner runCommandAsync:command + withOptions:PFCommandRunningOptionRetryIfFailed]; + }] continueWithSuccessResult:nil]; +} + +///-------------------------------------- +#pragma mark - Log Out +///-------------------------------------- + +- (BFTask *)logOutUserAsyncWithSessionToken:(NSString *)sessionToken { + @weakify(self); + return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @strongify(self); + PFRESTCommand *command = [PFRESTUserCommand logOutUserCommandWithSessionToken:sessionToken]; + return [self.commonDataSource.commandRunner runCommandAsync:command + withOptions:PFCommandRunningOptionRetryIfFailed]; + }] continueWithSuccessResult:nil]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/CurrentUserController/PFCurrentUserController.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/CurrentUserController/PFCurrentUserController.h new file mode 100644 index 0000000..15b8e99 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/CurrentUserController/PFCurrentUserController.h @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFCoreDataProvider.h" +#import "PFCurrentObjectControlling.h" +#import "PFDataProvider.h" +#import "PFMacros.h" + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFUser; + +typedef NS_OPTIONS(NSUInteger, PFCurrentUserLoadingOptions) { + PFCurrentUserLoadingOptionCreateLazyIfNotAvailable = 1 << 0, +}; + +@interface PFCurrentUserController : NSObject + +@property (nonatomic, weak, readonly) id commonDataSource; +@property (nonatomic, weak, readonly) id coreDataSource; + +@property (atomic, assign) BOOL automaticUsersEnabled; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithStorageType:(PFCurrentObjectStorageType)storageType + commonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource NS_DESIGNATED_INITIALIZER; ++ (instancetype)controllerWithStorageType:(PFCurrentObjectStorageType)storageType + commonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource; + +///-------------------------------------- +/// @name User +///-------------------------------------- + +- (BFTask *)getCurrentUserAsyncWithOptions:(PFCurrentUserLoadingOptions)options; + +- (BFTask *)logOutCurrentUserAsync; + +///-------------------------------------- +/// @name Session Token +///-------------------------------------- + +- (BFTask *)getCurrentUserSessionTokenAsync; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m new file mode 100644 index 0000000..098b4e6 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m @@ -0,0 +1,364 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFCurrentUserController.h" + +#import + +#import "BFTask+Private.h" +#import "PFAnonymousUtils_Private.h" +#import "PFAssert.h" +#import "PFAsyncTaskQueue.h" +#import "PFFileManager.h" +#import "PFKeychainStore.h" +#import "PFMutableUserState.h" +#import "PFObjectFilePersistenceController.h" +#import "PFObjectPrivate.h" +#import "PFQuery.h" +#import "PFUserConstants.h" +#import "PFUserPrivate.h" + +@interface PFCurrentUserController () { + dispatch_queue_t _dataQueue; + PFAsyncTaskQueue *_dataTaskQueue; + + PFUser *_currentUser; + BOOL _currentUserMatchesDisk; +} + +@end + +@implementation PFCurrentUserController + +@synthesize storageType = _storageType; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + PFNotDesignatedInitializer(); +} + +- (instancetype)initWithStorageType:(PFCurrentObjectStorageType)storageType + commonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource { + self = [super init]; + if (!self) return nil; + + _dataQueue = dispatch_queue_create("com.parse.currentUser.controller", DISPATCH_QUEUE_CONCURRENT); + _dataTaskQueue = [PFAsyncTaskQueue taskQueue]; + + _storageType = storageType; + _commonDataSource = commonDataSource; + _coreDataSource = coreDataSource; + + return self; +} + ++ (instancetype)controllerWithStorageType:(PFCurrentObjectStorageType)dataStorageType + commonDataSource:(id)commonDataSource + coreDataSource:(id)coreDataSource { + return [[self alloc] initWithStorageType:dataStorageType + commonDataSource:commonDataSource + coreDataSource:coreDataSource]; +} + +///-------------------------------------- +#pragma mark - PFCurrentObjectControlling +///-------------------------------------- + +- (BFTask *)getCurrentObjectAsync { + PFCurrentUserLoadingOptions options = 0; + if (self.automaticUsersEnabled) { + options |= PFCurrentUserLoadingOptionCreateLazyIfNotAvailable; + } + return [self getCurrentUserAsyncWithOptions:options]; +} + +- (BFTask *)saveCurrentObjectAsync:(PFUser *)object { + return [_dataTaskQueue enqueue:^id(BFTask *task) { + return [self _saveCurrentUserAsync:object]; + }]; +} + +///-------------------------------------- +#pragma mark - User +///-------------------------------------- + +- (BFTask *)getCurrentUserAsyncWithOptions:(PFCurrentUserLoadingOptions)options { + return [_dataTaskQueue enqueue:^id(BFTask *task) { + return [self _getCurrentUserAsyncWithOptions:options]; + }]; +} + +- (BFTask *)_getCurrentUserAsyncWithOptions:(PFCurrentUserLoadingOptions)options { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + __block BOOL matchesDisk = NO; + __block PFUser *currentUser = nil; + dispatch_sync(_dataQueue, ^{ + matchesDisk = _currentUserMatchesDisk; + currentUser = _currentUser; + }); + if (currentUser) { + return currentUser; + } + + if (matchesDisk) { + if (options & PFCurrentUserLoadingOptionCreateLazyIfNotAvailable) { + return [self _lazyLogInUser]; + } + return nil; + } + + return [[[[self _loadCurrentUserFromDiskAsync] continueWithSuccessBlock:^id(BFTask *task) { + PFUser *user = task.result; + // If the object was not yet saved, but is already linked with AnonymousUtils - it means it is lazy. + // So mark it's state as `isLazy` and make it `dirty` + if (!user.objectId && [PFAnonymousUtils isLinkedWithUser:user]) { + user.isLazy = YES; + [user _setDirty:YES]; + } + return user; + }] continueWithBlock:^id(BFTask *task) { + dispatch_barrier_sync(_dataQueue, ^{ + _currentUser = task.result; + _currentUserMatchesDisk = !task.faulted; + }); + return task; + }] continueWithBlock:^id(BFTask *task) { + // If there's no user and automatic user is enabled, do lazy login. + if (!task.result && (options & PFCurrentUserLoadingOptionCreateLazyIfNotAvailable)) { + return [self _lazyLogInUser]; + } + return task; + }]; + }]; +} + +- (BFTask *)_saveCurrentUserAsync:(PFUser *)user { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + __block PFUser *currentUser = nil; + dispatch_sync(_dataQueue, ^{ + currentUser = _currentUser; + }); + + BFTask *task = [BFTask taskWithResult:nil]; + // Check for objectId equality to not logout in case we are saving another instance of the same user. + if (currentUser != nil && currentUser != user && ![user.objectId isEqualToString:currentUser.objectId]) { + task = [task continueWithBlock:^id(BFTask *task) { + return [currentUser _logOutAsync]; + }]; + } + return [[task continueWithBlock:^id(BFTask *task) { + @synchronized (user.lock) { + [user setIsCurrentUser:YES]; + [user synchronizeAllAuthData]; + } + return [self _saveCurrentUserToDiskAsync:user]; + }] continueWithBlock:^id(BFTask *task) { + dispatch_barrier_sync(_dataQueue, ^{ + _currentUser = user; + _currentUserMatchesDisk = !task.faulted && !task.cancelled; + }); + return user; + }]; + }]; +} + +- (BFTask *)logOutCurrentUserAsync { + return [_dataTaskQueue enqueue:^id(BFTask *task) { + return [[self _getCurrentUserAsyncWithOptions:0] continueWithBlock:^id(BFTask *task) { + BFTask *userLogoutTask = nil; + + PFUser *user = task.result; + if (user) { + userLogoutTask = [user _logOutAsync]; + } else { + userLogoutTask = [BFTask taskWithResult:nil]; + } + + NSString *filePath = [self.commonDataSource.fileManager parseDataItemPathForPathComponent:PFUserCurrentUserFileName]; + BFTask *fileTask = [PFFileManager removeItemAtPathAsync:filePath]; + BFTask *unpinTask = nil; + + if (self.storageType == PFCurrentObjectStorageTypeOfflineStore) { + unpinTask = [PFObject unpinAllObjectsInBackgroundWithName:PFUserCurrentUserPinName]; + } else { + unpinTask = [BFTask taskWithResult:nil]; + } + + [self _deleteSensitiveUserDataFromKeychainWithItemName:PFUserCurrentUserFileName]; + + BFTask *logoutTask = [[BFTask taskForCompletionOfAllTasks:@[ fileTask, unpinTask ]] continueWithBlock:^id(BFTask *task) { + dispatch_barrier_sync(_dataQueue, ^{ + _currentUser = nil; + _currentUserMatchesDisk = YES; + }); + return nil; + }]; + return [BFTask taskForCompletionOfAllTasks:@[ userLogoutTask, logoutTask ]]; + }]; + }]; +} + +///-------------------------------------- +#pragma mark - Data Storage +///-------------------------------------- + +- (BFTask *)_loadCurrentUserFromDiskAsync { + BFTask *task = nil; + if (self.storageType == PFCurrentObjectStorageTypeOfflineStore) { + // Try loading from OfflineStore + PFQuery *query = [[[PFQuery queryWithClassName:[PFUser parseClassName]] + fromPinWithName:PFUserCurrentUserPinName] + // We need to ignoreACLs here because right now we don't have currentUser. + ignoreACLs]; + + // Silence the warning if we are loading from LDS + task = [[query findObjectsInBackground] continueWithSuccessBlock:^id(BFTask *task) { + NSArray *results = task.result; + if ([results count] == 1) { + return [BFTask taskWithResult:results.firstObject]; + } else if ([results count] != 0) { + return [[PFObject unpinAllObjectsInBackgroundWithName:PFUserCurrentUserPinName] + continueWithSuccessResult:nil]; + } + + // Backward compatibility if we previously have non-LDS currentUser. + return [PFObject _migrateObjectInBackgroundFromFile:PFUserCurrentUserFileName toPin:PFUserCurrentUserPinName usingMigrationBlock:^id(BFTask *task) { + PFUser *user = task.result; + // Only migrate session token to Keychain if it was loaded from Data File. + if (user.sessionToken) { + return [self _saveSensitiveUserDataAsync:user + toKeychainItemWithName:PFUserCurrentUserKeychainItemName]; + } + return nil; + }]; + }]; + } else { + PFObjectFilePersistenceController *controller = self.coreDataSource.objectFilePersistenceController; + task = [controller loadPersistentObjectAsyncForKey:PFUserCurrentUserFileName]; + } + return [task continueWithSuccessBlock:^id(BFTask *task) { + PFUser *user = task.result; + [user setIsCurrentUser:YES]; + return [[self _loadSensitiveUserDataAsync:user + fromKeychainItemWithName:PFUserCurrentUserKeychainItemName] continueWithSuccessResult:user]; + }]; +} + +- (BFTask *)_saveCurrentUserToDiskAsync:(PFUser *)user { + if (self.storageType == PFCurrentObjectStorageTypeOfflineStore) { + return [[[PFObject unpinAllObjectsInBackgroundWithName:PFUserCurrentUserPinName] continueWithSuccessBlock:^id(BFTask *task) { + return [self _saveSensitiveUserDataAsync:user toKeychainItemWithName:PFUserCurrentUserKeychainItemName]; + }] continueWithSuccessBlock:^id(BFTask *task) { + // We don't want to include children of `currentUser` automatically. + return [user _pinInBackgroundWithName:PFUserCurrentUserPinName includeChildren:NO]; + }]; + } + + return [[self _saveSensitiveUserDataAsync:user + toKeychainItemWithName:PFUserCurrentUserKeychainItemName] continueWithBlock:^id(BFTask *task) { + PFObjectFilePersistenceController *controller = self.coreDataSource.objectFilePersistenceController; + return [controller persistObjectAsync:user forKey:PFUserCurrentUserFileName]; + }]; +} + +///-------------------------------------- +#pragma mark - Sensitive Data +///-------------------------------------- + +- (BFTask *)_loadSensitiveUserDataAsync:(PFUser *)user fromKeychainItemWithName:(NSString *)itemName { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + NSDictionary *userData = self.commonDataSource.keychainStore[itemName]; + @synchronized (user.lock) { + if (userData) { + PFMutableUserState *state = [user._state mutableCopy]; + + NSString *sessionToken = userData[PFUserSessionTokenRESTKey] ?: userData[@"session_token"]; + if (sessionToken) { + state.sessionToken = sessionToken; + } + + user._state = state; + + NSDictionary *newAuthData = userData[PFUserAuthDataRESTKey] ?: userData[@"auth_data"]; + [newAuthData enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + user.authData[key] = obj; + if (obj != nil) { + [user.linkedServiceNames addObject:key]; + } + [user synchronizeAuthDataWithAuthType:key]; + }]; + } + } + return nil; + }]; +} + +- (BFTask *)_saveSensitiveUserDataAsync:(PFUser *)user toKeychainItemWithName:(NSString *)itemName { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + NSMutableDictionary *userData = [NSMutableDictionary dictionaryWithCapacity:2]; + @synchronized (user.lock) { + if (user.sessionToken) { + userData[PFUserSessionTokenRESTKey] = [user.sessionToken copy]; + } + if ([user.authData count]) { + userData[PFUserAuthDataRESTKey] = [user.authData copy]; + } + } + self.commonDataSource.keychainStore[itemName] = userData; + + return nil; + }]; +} + +- (void)_deleteSensitiveUserDataFromKeychainWithItemName:(NSString *)itemName { + [self.commonDataSource.keychainStore removeObjectForKey:itemName]; +} + +///-------------------------------------- +#pragma mark - Session Token +///-------------------------------------- + +- (BFTask *)getCurrentUserSessionTokenAsync { + return [[self getCurrentUserAsyncWithOptions:0] continueWithSuccessBlock:^id(BFTask *task) { + PFUser *user = task.result; + return user.sessionToken; + }]; +} + +///-------------------------------------- +#pragma mark - Lazy Login +///-------------------------------------- + +- (BFTask *)_lazyLogInUser { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + PFUser *user = [PFAnonymousUtils _lazyLogIn]; + + // When LDS is enabled, we will immediately save the anon user to LDS. When LDS is disabled, we + // will create the anon user, but will lazily save it to Parse on an object save that has this + // user in its ACL. + // The main differences here would be that non-LDS may have different anon users in different + // sessions until an object is saved and LDS will persist the same anon user. This shouldn't be a + // big deal... + if (self.storageType == PFCurrentObjectStorageTypeOfflineStore) { + return [[self _saveCurrentUserAsync:user] continueWithSuccessResult:user]; + } + + dispatch_barrier_sync(_dataQueue, ^{ + _currentUser = user; + _currentUserMatchesDisk = YES; + }); + return user; + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/PFUserPrivate.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/PFUserPrivate.h new file mode 100644 index 0000000..4dfebd4 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/PFUserPrivate.h @@ -0,0 +1,79 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import "PFMacros.h" + +extern NSString *const PFUserCurrentUserFileName; +extern NSString *const PFUserCurrentUserPinName; +extern NSString *const PFUserCurrentUserKeychainItemName; + +@class BFTask PF_GENERIC(__covariant BFGenericType); +@class PFCommandResult; +@class PFUserController; + +@interface PFUser (Private) + +///-------------------------------------- +/// @name Current User +///-------------------------------------- ++ (BFTask *)_getCurrentUserSessionTokenAsync; ++ (NSString *)currentSessionToken; + +- (void)synchronizeAllAuthData; + +- (BFTask *)_handleServiceLoginCommandResult:(PFCommandResult *)result; + +- (void)synchronizeAuthDataWithAuthType:(NSString *)authType; + ++ (PFUser *)logInLazyUserWithAuthType:(NSString *)authType authData:(NSDictionary *)authData; +- (BFTask *)resolveLazinessAsync:(BFTask *)toAwait; +- (void)stripAnonymity; +- (void)restoreAnonymity:(id)data; + +///-------------------------------------- +/// @name Revocable Session +///-------------------------------------- ++ (BOOL)_isRevocableSessionEnabled; ++ (void)_setRevocableSessionEnabled:(BOOL)enabled; + ++ (PFUserController *)userController; + +@end + +// Private Properties +@interface PFUser () { + BOOL isCurrentUser; + NSMutableDictionary *authData; + NSMutableSet *linkedServiceNames; + BOOL isLazy; +} + +// This earmarks the user as being an "identity" user. This will make saves write through +// to the currentUser singleton and disk object +@property (nonatomic, assign) BOOL isCurrentUser; + +@property (nonatomic, strong, readonly) NSMutableDictionary *authData; +@property (nonatomic, strong, readonly) NSMutableSet *linkedServiceNames; +@property (nonatomic, assign) BOOL isLazy; + +- (BOOL)_isAuthenticatedWithCurrentUser:(PFUser *)currentUser; + +- (BFTask *)_logOutAsync; + +///-------------------------------------- +/// @name Third-party Authentication (Private) +///-------------------------------------- + ++ (void)_unregisterAuthenticationDelegateForAuthType:(NSString *)authType; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFMutableUserState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFMutableUserState.h new file mode 100644 index 0000000..43e8f2d --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFMutableUserState.h @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFUserState.h" + +@interface PFMutableUserState : PFUserState + +@property (nonatomic, copy, readwrite) NSString *sessionToken; +@property (nonatomic, copy, readwrite) NSDictionary *authData; + +@property (nonatomic, assign, readwrite) BOOL isNew; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFMutableUserState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFMutableUserState.m new file mode 100644 index 0000000..255265b --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFMutableUserState.m @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFMutableUserState.h" + +#import "PFUserState_Private.h" + +@implementation PFMutableUserState + +@dynamic sessionToken; +@dynamic authData; +@dynamic isNew; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFUserState.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFUserState.h new file mode 100644 index 0000000..72fa098 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFUserState.h @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObjectState.h" + +@interface PFUserState : PFObjectState + +@property (nonatomic, copy, readonly) NSString *sessionToken; +@property (nonatomic, copy, readonly) NSDictionary *authData; + +@property (nonatomic, assign, readonly) BOOL isNew; + +///-------------------------------------- +/// @name Init +///-------------------------------------- + +- (instancetype)initWithState:(PFUserState *)state; ++ (instancetype)stateWithState:(PFUserState *)state; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFUserState.m b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFUserState.m new file mode 100644 index 0000000..2c50485 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFUserState.m @@ -0,0 +1,64 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFUserState.h" +#import "PFUserState_Private.h" + +#import "PFMutableUserState.h" +#import "PFObjectState_Private.h" +#import "PFUserConstants.h" + +@implementation PFUserState + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithState:(PFUserState *)state { + self = [super initWithState:state]; + if (!self) return nil; + + _sessionToken = [state.sessionToken copy]; + _authData = [state.authData copy]; + _isNew = state.isNew; + + return self; +} + ++ (instancetype)stateWithState:(PFUserState *)state { + return [super stateWithState:state]; +} + +///-------------------------------------- +#pragma mark - Serialization +///-------------------------------------- + +- (NSDictionary *)dictionaryRepresentationWithObjectEncoder:(PFEncoder *)objectEncoder { + NSMutableDictionary *dictionary = [[super dictionaryRepresentationWithObjectEncoder:objectEncoder] mutableCopy]; + [dictionary removeObjectForKey:PFUserPasswordRESTKey]; + return dictionary; +} + +///-------------------------------------- +#pragma mark - NSCopying +///-------------------------------------- + +- (id)copyWithZone:(NSZone *)zone { + return [[PFUserState allocWithZone:zone] initWithState:self]; +} + +///-------------------------------------- +#pragma mark - NSMutableCopying +///-------------------------------------- + +- (id)mutableCopyWithZone:(NSZone *)zone { + return [[PFMutableUserState allocWithZone:zone] initWithState:self]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFUserState_Private.h b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFUserState_Private.h new file mode 100644 index 0000000..c305f76 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Internal/User/State/PFUserState_Private.h @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFUserState.h" + +@interface PFUserState () { +@protected + NSString *_sessionToken; + NSDictionary *_authData; + + BOOL _isNew; +} + +@property (nonatomic, copy, readwrite) NSString *sessionToken; +@property (nonatomic, copy, readwrite) NSDictionary *authData; + +@property (nonatomic, assign, readwrite) BOOL isNew; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFACL.h b/Unit-2-Journal/Pods/Parse/Parse/PFACL.h new file mode 100644 index 0000000..a952585 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFACL.h @@ -0,0 +1,264 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +PF_ASSUME_NONNULL_BEGIN + +@class PFRole; +@class PFUser; + +/*! + The `PFACL` class is used to control which users can access or modify a particular object. + Each can have its own `PFACL`. You can grant read and write permissions separately to specific users, + to groups of users that belong to roles, or you can grant permissions to "the public" so that, + for example, any user could read a particular object but only a particular set of users could write to that object. + */ +@interface PFACL : NSObject + +///-------------------------------------- +/// @name Creating an ACL +///-------------------------------------- + +/*! + @abstract Creates an ACL with no permissions granted. + + @returns Returns a new `PFACL`. + */ ++ (instancetype)ACL; + +/*! + @abstract Creates an ACL where only the provided user has access. + + @param user The user to assign access. + */ ++ (instancetype)ACLWithUser:(PFUser *)user; + +///-------------------------------------- +/// @name Controlling Public Access +///-------------------------------------- + +/*! + @abstract Set whether the public is allowed to read this object. + + @param allowed Whether the public can read this object. + */ +- (void)setPublicReadAccess:(BOOL)allowed; + +/*! + @abstract Gets whether the public is allowed to read this object. + + @returns `YES` if the public read access is enabled, otherwise `NO`. + */ +- (BOOL)getPublicReadAccess; + +/*! + @abstract Set whether the public is allowed to write this object. + + @param allowed Whether the public can write this object. + */ +- (void)setPublicWriteAccess:(BOOL)allowed; + +/*! + @abstract Gets whether the public is allowed to write this object. + + @returns `YES` if the public write access is enabled, otherwise `NO`. + */ +- (BOOL)getPublicWriteAccess; + +///-------------------------------------- +/// @name Controlling Access Per-User +///-------------------------------------- + +/*! + @abstract Set whether the given user id is allowed to read this object. + + @param allowed Whether the given user can write this object. + @param userId The <[PFObject objectId]> of the user to assign access. + */ +- (void)setReadAccess:(BOOL)allowed forUserId:(NSString *)userId; + +/*! + @abstract Gets whether the given user id is *explicitly* allowed to read this object. + Even if this returns `NO`, the user may still be able to access it if returns `YES` + or if the user belongs to a role that has access. + + @param userId The <[PFObject objectId]> of the user for which to retrive access. + + @returns `YES` if the user with this `objectId` has *explicit* read access, otherwise `NO`. + */ +- (BOOL)getReadAccessForUserId:(NSString *)userId; + +/*! + @abstract Set whether the given user id is allowed to write this object. + + @param allowed Whether the given user can read this object. + @param userId The `objectId` of the user to assign access. + */ +- (void)setWriteAccess:(BOOL)allowed forUserId:(NSString *)userId; + +/*! + @abstract Gets whether the given user id is *explicitly* allowed to write this object. + Even if this returns NO, the user may still be able to write it if returns `YES` + or if the user belongs to a role that has access. + + @param userId The <[PFObject objectId]> of the user for which to retrive access. + + @returns `YES` if the user with this `objectId` has *explicit* write access, otherwise `NO`. + */ +- (BOOL)getWriteAccessForUserId:(NSString *)userId; + +/*! + @abstract Set whether the given user is allowed to read this object. + + @param allowed Whether the given user can read this object. + @param user The user to assign access. + */ +- (void)setReadAccess:(BOOL)allowed forUser:(PFUser *)user; + +/*! + @abstract Gets whether the given user is *explicitly* allowed to read this object. + Even if this returns `NO`, the user may still be able to access it if returns `YES` + or if the user belongs to a role that has access. + + @param user The user for which to retrive access. + + @returns `YES` if the user has *explicit* read access, otherwise `NO`. + */ +- (BOOL)getReadAccessForUser:(PFUser *)user; + +/*! + @abstract Set whether the given user is allowed to write this object. + + @param allowed Whether the given user can write this object. + @param user The user to assign access. + */ +- (void)setWriteAccess:(BOOL)allowed forUser:(PFUser *)user; + +/*! + @abstract Gets whether the given user is *explicitly* allowed to write this object. + Even if this returns `NO`, the user may still be able to write it if returns `YES` + or if the user belongs to a role that has access. + + @param user The user for which to retrive access. + + @returns `YES` if the user has *explicit* write access, otherwise `NO`. + */ +- (BOOL)getWriteAccessForUser:(PFUser *)user; + +///-------------------------------------- +/// @name Controlling Access Per-Role +///-------------------------------------- + +/*! + @abstract Get whether users belonging to the role with the given name are allowed to read this object. + Even if this returns `NO`, the role may still be able to read it if a parent role has read access. + + @param name The name of the role. + + @returns `YES` if the role has read access, otherwise `NO`. + */ +- (BOOL)getReadAccessForRoleWithName:(NSString *)name; + +/*! + @abstract Set whether users belonging to the role with the given name are allowed to read this object. + + @param allowed Whether the given role can read this object. + @param name The name of the role. + */ +- (void)setReadAccess:(BOOL)allowed forRoleWithName:(NSString *)name; + +/*! + @abstract Get whether users belonging to the role with the given name are allowed to write this object. + Even if this returns `NO`, the role may still be able to write it if a parent role has write access. + + @param name The name of the role. + + @returns `YES` if the role has read access, otherwise `NO`. + */ +- (BOOL)getWriteAccessForRoleWithName:(NSString *)name; + +/*! + @abstract Set whether users belonging to the role with the given name are allowed to write this object. + + @param allowed Whether the given role can write this object. + @param name The name of the role. + */ +- (void)setWriteAccess:(BOOL)allowed forRoleWithName:(NSString *)name; + +/*! + @abstract Get whether users belonging to the given role are allowed to read this object. + Even if this returns `NO`, the role may still be able to read it if a parent role has read access. + + @discussion The role must already be saved on the server and + it's data must have been fetched in order to use this method. + + @param role The name of the role. + + @returns `YES` if the role has read access, otherwise `NO`. + */ +- (BOOL)getReadAccessForRole:(PFRole *)role; + +/*! + @abstract Set whether users belonging to the given role are allowed to read this object. + + @discussion The role must already be saved on the server and + it's data must have been fetched in order to use this method. + + @param allowed Whether the given role can read this object. + @param role The role to assign access. + */ +- (void)setReadAccess:(BOOL)allowed forRole:(PFRole *)role; + +/*! + @abstract Get whether users belonging to the given role are allowed to write this object. + Even if this returns `NO`, the role may still be able to write it if a parent role has write access. + + @discussion The role must already be saved on the server and + it's data must have been fetched in order to use this method. + + @param role The name of the role. + + @returns `YES` if the role has write access, otherwise `NO`. + */ +- (BOOL)getWriteAccessForRole:(PFRole *)role; + +/*! + @abstract Set whether users belonging to the given role are allowed to write this object. + + @discussion The role must already be saved on the server and + it's data must have been fetched in order to use this method. + + @param allowed Whether the given role can write this object. + @param role The role to assign access. + */ +- (void)setWriteAccess:(BOOL)allowed forRole:(PFRole *)role; + +///-------------------------------------- +/// @name Setting Access Defaults +///-------------------------------------- + +/*! + @abstract Sets a default ACL that will be applied to all instances of when they are created. + + @param acl The ACL to use as a template for all instance of created after this method has been called. + This value will be copied and used as a template for the creation of new ACLs, so changes to the + instance after this method has been called will not be reflected in new instance of . + @param currentUserAccess - If `YES`, the `PFACL` that is applied to newly-created instance of will + provide read and write access to the <[PFUser currentUser]> at the time of creation. + - If `NO`, the provided `acl` will be used without modification. + - If `acl` is `nil`, this value is ignored. + */ ++ (void)setDefaultACL:(PF_NULLABLE PFACL *)acl withAccessForCurrentUser:(BOOL)currentUserAccess; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFACL.m b/Unit-2-Journal/Pods/Parse/Parse/PFACL.m new file mode 100644 index 0000000..59190f9 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFACL.m @@ -0,0 +1,363 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFACL.h" +#import "PFACLPrivate.h" + +#import "BFTask+Private.h" +#import "PFACLState.h" +#import "PFAssert.h" +#import "PFDefaultACLController.h" +#import "PFMacros.h" +#import "PFMutableACLState.h" +#import "PFObjectPrivate.h" +#import "PFObjectUtilities.h" +#import "PFRole.h" +#import "PFUser.h" +#import "PFUserPrivate.h" + +static NSString *const PFACLPublicKey_ = @"*"; +static NSString *const PFACLUnresolvedKey_ = @"*unresolved"; +static NSString *const PFACLCodingDataKey_ = @"ACL"; + +@interface PFACL () + +@property (atomic, strong, readwrite) PFACLState *state; + +@end + +@implementation PFACL { + PFUser *unresolvedUser; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _state = [[PFACLState alloc] init]; + + return self; +} + +///-------------------------------------- +#pragma mark - Default ACL +///-------------------------------------- + ++ (instancetype)ACL { + return [[self alloc] init]; +} + ++ (instancetype)ACLWithUser:(PFUser *)user { + PFACL *acl = [self ACL]; + [acl setReadAccess:YES forUser:user]; + [acl setWriteAccess:YES forUser:user]; + return acl; +} + ++ (instancetype)ACLWithDictionary:(NSDictionary *)dictionary { + return [[self alloc] initWithDictionary:dictionary]; +} + ++ (PFACL *)defaultACL { + return [[[PFDefaultACLController defaultController] getDefaultACLAsync] waitForResult:NULL + withMainThreadWarning:NO]; +} + ++ (void)setDefaultACL:(PFACL *)acl withAccessForCurrentUser:(BOOL)currentUserAccess { + [[PFDefaultACLController defaultController] setDefaultACLAsync:acl withCurrentUserAccess:currentUserAccess]; +} + +- (void)setShared:(BOOL)newShared { + self.state = [self.state copyByMutatingWithBlock:^(PFMutableACLState *newState) { + newState.shared = newShared; + }]; +} + +- (BOOL)isShared { + return self.state.shared; +} + +- (instancetype)createUnsharedCopy { + PFACL *newACL = [[self class] ACLWithDictionary:self.state.permissions]; + if (unresolvedUser) { + [newACL setReadAccess:[self getReadAccessForUser:unresolvedUser] forUser:unresolvedUser]; + [newACL setWriteAccess:[self getWriteAccessForUser:unresolvedUser] forUser:unresolvedUser]; + } + return newACL; +} + +- (void)resolveUser:(PFUser *)user { + if (user != unresolvedUser) { + return; + } + NSMutableDictionary *unresolvedPermissions = self.state.permissions[PFACLUnresolvedKey_]; + if (unresolvedPermissions) { + self.state = [self.state copyByMutatingWithBlock:^(PFMutableACLState *newState) { + newState.permissions[user.objectId] = unresolvedPermissions; + [newState.permissions removeObjectForKey:PFACLUnresolvedKey_]; + }]; + } + unresolvedUser = nil; +} + +- (BOOL)hasUnresolvedUser { + return unresolvedUser != nil; +} + +- (void)setAccess:(NSString *)accessType to:(BOOL)allowed forUserId:(NSString *)userId { + NSDictionary *permissions = self.state.permissions[userId]; + + // No change needed. + if ([permissions[accessType] boolValue] == allowed) { + return; + } + + NSMutableDictionary *newPermissions = [NSMutableDictionary dictionaryWithDictionary:permissions]; + if (allowed) { + newPermissions[accessType] = @YES; + } else { + [newPermissions removeObjectForKey:accessType]; + } + + self.state = [self.state copyByMutatingWithBlock:^(PFMutableACLState *newState) { + if (newPermissions.count) { + newState.permissions[userId] = [newPermissions copy]; + } else { + [newState.permissions removeObjectForKey:userId]; + } + }]; +} + +- (BOOL)getAccess:(NSString *)accessType forUserId:(NSString *)userId { + return [self.state.permissions[userId][accessType] boolValue]; +} + +- (instancetype)initWithDictionary:(NSDictionary *)dictionary { + self = [self init]; + if (!self) return nil; + + // We iterate over the input ACL rather than just copying to + // permissionsById so that we can ensure it is the right format. + [dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *userId, NSDictionary *permissions, BOOL *stop) { + [permissions enumerateKeysAndObjectsUsingBlock:^(NSString *accessType, id obj, BOOL *stop) { + [self setAccess:accessType to:[obj boolValue] forUserId:userId]; + }]; + }]; + + return self; +} + +- (void)setReadAccess:(BOOL)allowed forUserId:(NSString *)userId { + PFParameterAssert(userId, @"Can't setReadAccess for nil userId."); + [self setAccess:@"read" to:allowed forUserId:userId]; +} + +- (BOOL)getReadAccessForUserId:(NSString *)userId { + PFParameterAssert(userId, @"Can't getReadAccessForUserId for nil userId."); + return [self getAccess:@"read" forUserId:userId]; +} + +- (void)setWriteAccess:(BOOL)allowed forUserId:(NSString *)userId { + PFParameterAssert(userId, @"Can't setWriteAccess for nil userId."); + [self setAccess:@"write" to:allowed forUserId:userId]; +} + +- (BOOL)getWriteAccessForUserId:(NSString *)userId { + PFParameterAssert(userId, @"Can't getWriteAccessForUserId for nil userId."); + return [self getAccess:@"write" forUserId:userId]; +} + +- (void)setPublicReadAccess:(BOOL)allowed { + [self setReadAccess:allowed forUserId:PFACLPublicKey_]; +} + +- (BOOL)getPublicReadAccess { + return [self getReadAccessForUserId:PFACLPublicKey_]; +} + +- (void)setPublicWriteAccess:(BOOL)allowed { + [self setWriteAccess:allowed forUserId:PFACLPublicKey_]; +} + +- (BOOL)getPublicWriteAccess { + return [self getWriteAccessForUserId:PFACLPublicKey_]; +} + +- (BOOL)getReadAccessForRoleWithName:(NSString *)name { + PFParameterAssert(name, @"Can't get read access for nil role name."); + return [self getReadAccessForUserId:[@"role:" stringByAppendingString:name]]; +} + +- (void)setReadAccess:(BOOL)allowed forRoleWithName:(NSString *)name { + PFParameterAssert(name, @"Can't set read access for nil role name."); + [self setReadAccess:allowed forUserId:[@"role:" stringByAppendingString:name]]; +} + +- (BOOL)getWriteAccessForRoleWithName:(NSString *)name { + PFParameterAssert(name, @"Can't get write access for nil role name."); + return [self getWriteAccessForUserId:[@"role:" stringByAppendingString:name]]; +} + +- (void)setWriteAccess:(BOOL)allowed forRoleWithName:(NSString *)name { + PFParameterAssert(name, @"Can't set write access for nil role name."); + [self setWriteAccess:allowed forUserId:[@"role:" stringByAppendingString:name]]; +} + +- (void)validateRoleState:(PFRole *)role { + // Validates that a role has already been saved to the server, and thus can be used in an ACL. + PFParameterAssert(role.objectId, @"Roles must be saved to the server before they can be used in an ACL."); +} + +- (BOOL)getReadAccessForRole:(PFRole *)role { + [self validateRoleState:role]; + return [self getReadAccessForRoleWithName:role.name]; +} + +- (void)setReadAccess:(BOOL)allowed forRole:(PFRole *)role { + [self validateRoleState:role]; + [self setReadAccess:allowed forRoleWithName:role.name]; +} + +- (BOOL)getWriteAccessForRole:(PFRole *)role { + [self validateRoleState:role]; + return [self getWriteAccessForRoleWithName:role.name]; +} + +- (void)setWriteAccess:(BOOL)allowed forRole:(PFRole *)role { + [self validateRoleState:role]; + [self setWriteAccess:allowed forRoleWithName:role.name]; +} + +- (void)prepareUnresolvedUser:(PFUser *)user { + // TODO: (nlutsenko) Consider making @synchronized. + if (unresolvedUser != user) { + // If the unresolved user changed, register the save listener on the new user. This listener + // will call resolveUser with the user. + self.state = [self.state copyByMutatingWithBlock:^(PFMutableACLState *newState) { + [newState.permissions removeObjectForKey:PFACLUnresolvedKey_]; + }]; + + unresolvedUser = user; + + // Note: callback is a reference back to the same block so that it can unregister itself. + @weakify(self); + __weak __block void (^weakCallback)(id result, NSError *error) = nil; + __block void (^callback)(id result, NSError *error) = [^(id result, NSError *error) { + @strongify(self); + [self resolveUser:result]; + [result unregisterSaveListener:weakCallback]; + } copy]; + weakCallback = callback; + [user registerSaveListener:callback]; + } +} + +- (void)setUnresolvedReadAccess:(BOOL)allowed forUser:(PFUser *)user { + [self prepareUnresolvedUser:user]; + [self setReadAccess:allowed forUserId:PFACLUnresolvedKey_]; +} + +- (void)setReadAccess:(BOOL)allowed forUser:(PFUser *)user { + NSString *objectId = user.objectId; + if (!objectId) { + if ([user isLazy]) { + [self setUnresolvedReadAccess:allowed forUser:user]; + return; + } + PFParameterAssert(objectId, @"Can't setReadAcccess for unsaved user."); + } + [self setReadAccess:allowed forUserId:objectId]; +} + +- (BOOL)getReadAccessForUser:(PFUser *)user { + if (user == unresolvedUser) { + return [self getReadAccessForUserId:PFACLUnresolvedKey_]; + } + NSString *objectId = user.objectId; + PFParameterAssert(objectId, @"Can't getReadAccessForUser who isn't saved."); + return [self getReadAccessForUserId:objectId]; +} + +- (void)setUnresolvedWriteAccess:(BOOL)allowed forUser:(PFUser *)user { + [self prepareUnresolvedUser:user]; + [self setWriteAccess:allowed forUserId:PFACLUnresolvedKey_]; +} + +- (void)setWriteAccess:(BOOL)allowed forUser:(PFUser *)user { + NSString *objectId = user.objectId; + if (!objectId) { + if ([user isLazy]) { + [self setUnresolvedWriteAccess:allowed forUser:user]; + return; + } + PFParameterAssert(objectId, @"Can't setWriteAccess for unsaved user."); + } + [self setWriteAccess:allowed forUserId:objectId]; +} + +- (BOOL)getWriteAccessForUser:(PFUser *)user { + if (user == unresolvedUser) { + return [self getWriteAccessForUserId:PFACLUnresolvedKey_]; + } + NSString *objectId = user.objectId; + PFParameterAssert(objectId, @"Can't getWriteAccessForUser who isn't saved."); + return [self getWriteAccessForUserId:objectId]; +} + +- (NSDictionary *)encodeIntoDictionary { + return self.state.permissions; +} + +///-------------------------------------- +#pragma mark - NSObject +///-------------------------------------- + +- (BOOL)isEqual:(id)object { + if (object == self) { + return YES; + } + if (![object isKindOfClass:[PFACL class]]) { + return NO; + } + + PFACL *acl = (PFACL *)object; + return [self.state isEqual:acl.state] && [PFObjectUtilities isObject:self->unresolvedUser + equalToObject:acl->unresolvedUser]; +} + +- (NSUInteger)hash { + return [self.state hash] ^ [unresolvedUser hash]; +} + +///-------------------------------------- +#pragma mark - NSCopying +///-------------------------------------- + +- (instancetype)copyWithZone:(NSZone *)zone { + return [[PFACL allocWithZone:zone] initWithDictionary:self.state.permissions]; +} + +///-------------------------------------- +#pragma mark - NSCoding +///-------------------------------------- + +- (instancetype)initWithCoder:(NSCoder *)coder { + NSDictionary *dictionary = [coder decodeObjectForKey:PFACLCodingDataKey_]; + return [self initWithDictionary:dictionary]; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [coder encodeObject:[self encodeIntoDictionary] forKey:PFACLCodingDataKey_]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFAnalytics.h b/Unit-2-Journal/Pods/Parse/Parse/PFAnalytics.h new file mode 100644 index 0000000..7655e8f --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFAnalytics.h @@ -0,0 +1,167 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import + +PF_ASSUME_NONNULL_BEGIN + +/*! + `PFAnalytics` provides an interface to Parse's logging and analytics backend. + + Methods will return immediately and cache the request (+ timestamp) to be + handled "eventually." That is, the request will be sent immediately if possible + or the next time a network connection is available. + */ +@interface PFAnalytics : NSObject + +///-------------------------------------- +/// @name App-Open / Push Analytics +///-------------------------------------- + +/*! + @abstract Tracks this application being launched. If this happened as the result of the + user opening a push notification, this method sends along information to + correlate this open with that push. + + @discussion Pass in `nil` to track a standard "application opened" event. + + @param launchOptions The `NSDictionary` indicating the reason the application was + launched, if any. This value can be found as a parameter to various + `UIApplicationDelegate` methods, and can be empty or `nil`. + + @returns Returns the task encapsulating the work being done. + */ ++ (BFTask PF_GENERIC(NSNumber *)*)trackAppOpenedWithLaunchOptions:(PF_NULLABLE NSDictionary *)launchOptions; + +/*! + @abstract Tracks this application being launched. + If this happened as the result of the user opening a push notification, + this method sends along information to correlate this open with that push. + + @discussion Pass in `nil` to track a standard "application opened" event. + + @param launchOptions The dictionary indicating the reason the application was + launched, if any. This value can be found as a parameter to various + `UIApplicationDelegate` methods, and can be empty or `nil`. + @param block The block to execute on server response. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)` + */ ++ (void)trackAppOpenedWithLaunchOptionsInBackground:(PF_NULLABLE NSDictionary *)launchOptions + block:(PF_NULLABLE PFBooleanResultBlock)block; + +/*! + @abstract Tracks this application being launched. If this happened as the result of the + user opening a push notification, this method sends along information to + correlate this open with that push. + + @param userInfo The Remote Notification payload, if any. This value can be + found either under `UIApplicationLaunchOptionsRemoteNotificationKey` on `launchOptions`, + or as a parameter to `application:didReceiveRemoteNotification:`. + This can be empty or `nil`. + + @returns Returns the task encapsulating the work being done. + */ ++ (BFTask PF_GENERIC(NSNumber *)*)trackAppOpenedWithRemoteNotificationPayload:(PF_NULLABLE NSDictionary *)userInfo; + +/*! + @abstract Tracks this application being launched. If this happened as the result of the + user opening a push notification, this method sends along information to + correlate this open with that push. + + @param userInfo The Remote Notification payload, if any. This value can be + found either under `UIApplicationLaunchOptionsRemoteNotificationKey` on `launchOptions`, + or as a parameter to `application:didReceiveRemoteNotification:`. This can be empty or `nil`. + @param block The block to execute on server response. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)` + */ ++ (void)trackAppOpenedWithRemoteNotificationPayloadInBackground:(PF_NULLABLE NSDictionary *)userInfo + block:(PF_NULLABLE PFBooleanResultBlock)block; + +///-------------------------------------- +/// @name Custom Analytics +///-------------------------------------- + +/*! + @abstract Tracks the occurrence of a custom event. + + @discussion Parse will store a data point at the time of invocation with the given event name. + + @param name The name of the custom event to report to Parse as having happened. + + @returns Returns the task encapsulating the work being done. + */ ++ (BFTask PF_GENERIC(NSNumber *)*)trackEvent:(NSString *)name; + +/*! + @abstract Tracks the occurrence of a custom event. Parse will store a data point at the + time of invocation with the given event name. The event will be sent at some + unspecified time in the future, even if Parse is currently inaccessible. + + @param name The name of the custom event to report to Parse as having happened. + @param block The block to execute on server response. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)` + */ ++ (void)trackEventInBackground:(NSString *)name block:(PF_NULLABLE PFBooleanResultBlock)block; + +/*! + @abstract Tracks the occurrence of a custom event with additional dimensions. Parse will + store a data point at the time of invocation with the given event name. + + @discussion Dimensions will allow segmentation of the occurrences of this custom event. + Keys and values should be NSStrings, and will throw otherwise. + + To track a user signup along with additional metadata, consider the following: + + NSDictionary *dimensions = @{ @"gender": @"m", + @"source": @"web", + @"dayType": @"weekend" }; + [PFAnalytics trackEvent:@"signup" dimensions:dimensions]; + + @warning There is a default limit of 8 dimensions per event tracked. + + @param name The name of the custom event to report to Parse as having happened. + @param dimensions The `NSDictionary` of information by which to segment this event. + + @returns Returns the task encapsulating the work being done. + */ ++ (BFTask PF_GENERIC(NSNumber *)*)trackEvent:(NSString *)name + dimensions:(PF_NULLABLE NSDictionary PF_GENERIC(NSString *, NSString *)*)dimensions; + +/*! + @abstract Tracks the occurrence of a custom event with additional dimensions. Parse will + store a data point at the time of invocation with the given event name. The + event will be sent at some unspecified time in the future, even if Parse is currently inaccessible. + + @discussionDimensions will allow segmentation of the occurrences of this custom event. + Keys and values should be NSStrings, and will throw otherwise. + + To track a user signup along with additional metadata, consider the following: + NSDictionary *dimensions = @{ @"gender": @"m", + @"source": @"web", + @"dayType": @"weekend" }; + [PFAnalytics trackEvent:@"signup" dimensions:dimensions]; + + There is a default limit of 8 dimensions per event tracked. + + @param name The name of the custom event to report to Parse as having happened. + @param dimensions The `NSDictionary` of information by which to segment this event. + @param block The block to execute on server response. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)` + */ ++ (void)trackEventInBackground:(NSString *)name + dimensions:(PF_NULLABLE NSDictionary PF_GENERIC(NSString *, NSString *)*)dimensions + block:(PF_NULLABLE PFBooleanResultBlock)block; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFAnalytics.m b/Unit-2-Journal/Pods/Parse/Parse/PFAnalytics.m new file mode 100644 index 0000000..514095a --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFAnalytics.m @@ -0,0 +1,91 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFAnalytics.h" +#import "PFAnalytics_Private.h" + +#import "BFTask+Private.h" +#import "PFAnalyticsController.h" +#import "PFAssert.h" +#import "PFEncoder.h" +#import "PFEventuallyQueue.h" +#import "PFUserPrivate.h" +#import "Parse_Private.h" + +@implementation PFAnalytics + +///-------------------------------------- +#pragma mark - App-Open / Push Analytics +///-------------------------------------- + ++ (BFTask PF_GENERIC(NSNumber *)*)trackAppOpenedWithLaunchOptions:(PF_NULLABLE NSDictionary *)launchOptions { +#if TARGET_OS_WATCH + NSDictionary *userInfo = nil; +#elif TARGET_OS_IOS + NSDictionary *userInfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]; +#elif PF_TARGET_OS_OSX + NSDictionary *userInfo = launchOptions[NSApplicationLaunchUserNotificationKey]; +#endif + + return [self trackAppOpenedWithRemoteNotificationPayload:userInfo]; +} + ++ (void)trackAppOpenedWithLaunchOptionsInBackground:(PF_NULLABLE NSDictionary *)launchOptions + block:(PF_NULLABLE PFBooleanResultBlock)block { + [[self trackAppOpenedWithLaunchOptions:launchOptions] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + ++ (BFTask PF_GENERIC(NSNumber *)*)trackAppOpenedWithRemoteNotificationPayload:(PF_NULLABLE NSDictionary *)userInfo { + return [[[PFUser _getCurrentUserSessionTokenAsync] continueWithBlock:^id(BFTask *task) { + NSString *sessionToken = task.result; + PFAnalyticsController *controller = [Parse _currentManager].analyticsController; + return [controller trackAppOpenedEventAsyncWithRemoteNotificationPayload:userInfo sessionToken:sessionToken]; + }] continueWithSuccessResult:@YES]; +} + ++ (void)trackAppOpenedWithRemoteNotificationPayloadInBackground:(PF_NULLABLE NSDictionary *)userInfo + block:(PF_NULLABLE PFBooleanResultBlock)block { + [[self trackAppOpenedWithRemoteNotificationPayload:userInfo] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +///-------------------------------------- +#pragma mark - Custom Analytics +///-------------------------------------- + ++ (BFTask PF_GENERIC(NSNumber *)*)trackEvent:(NSString *)name { + return [self trackEvent:name dimensions:nil]; +} + ++ (void)trackEventInBackground:(NSString *)name block:(PF_NULLABLE PFBooleanResultBlock)block { + [self trackEventInBackground:name dimensions:nil block:block]; +} + ++ (BFTask PF_GENERIC(NSNumber *)*)trackEvent:(NSString *)name + dimensions:(PF_NULLABLE NSDictionary PF_GENERIC(NSString *, NSString *) *)dimensions { + PFParameterAssert([[name stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length], + @"A name for the custom event must be provided."); + [dimensions enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + PFParameterAssert([key isKindOfClass:[NSString class]] && [obj isKindOfClass:[NSString class]], + @"trackEvent dimensions expect keys and values of type NSString."); + }]; + + return [[[PFUser _getCurrentUserSessionTokenAsync] continueWithBlock:^id(BFTask *task) { + NSString *sessionToken = task.result; + PFAnalyticsController *controller = [Parse _currentManager].analyticsController; + return [controller trackEventAsyncWithName:name dimensions:dimensions sessionToken:sessionToken]; + }] continueWithSuccessResult:@YES]; +} + ++ (void)trackEventInBackground:(NSString *)name + dimensions:(PF_NULLABLE NSDictionary PF_GENERIC(NSString *, NSString *) *)dimensions + block:(PF_NULLABLE PFBooleanResultBlock)block { + [[self trackEvent:name dimensions:dimensions] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFAnonymousUtils.h b/Unit-2-Journal/Pods/Parse/Parse/PFAnonymousUtils.h new file mode 100644 index 0000000..ff9ed8b --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFAnonymousUtils.h @@ -0,0 +1,82 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import +#import + +PF_ASSUME_NONNULL_BEGIN + +/*! + Provides utility functions for working with Anonymously logged-in users. + Anonymous users have some unique characteristics: + + - Anonymous users don't need a user name or password. + - Once logged out, an anonymous user cannot be recovered. + - When the current user is anonymous, the following methods can be used to switch + to a different user or convert the anonymous user into a regular one: + - signUp converts an anonymous user to a standard user with the given username and password. + Data associated with the anonymous user is retained. + - logIn switches users without converting the anonymous user. + Data associated with the anonymous user will be lost. + - Service logIn (e.g. Facebook, Twitter) will attempt to convert + the anonymous user into a standard user by linking it to the service. + If a user already exists that is linked to the service, it will instead switch to the existing user. + - Service linking (e.g. Facebook, Twitter) will convert the anonymous user + into a standard user by linking it to the service. + */ +@interface PFAnonymousUtils : NSObject + +///-------------------------------------- +/// @name Creating an Anonymous User +///-------------------------------------- + +/*! + @abstract Creates an anonymous user asynchronously and sets as a result to `BFTask`. + + @returns The task, that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(PFUser *)*)logInInBackground; + +/*! + @abstract Creates an anonymous user. + + @param block The block to execute when anonymous user creation is complete. + It should have the following argument signature: `^(PFUser *user, NSError *error)`. + */ ++ (void)logInWithBlock:(PF_NULLABLE PFUserResultBlock)block; + +/* + @abstract Creates an anonymous user. + + @param target Target object for the selector. + @param selector The selector that will be called when the asynchronous request is complete. + It should have the following signature: `(void)callbackWithUser:(PFUser *)user error:(NSError *)error`. + */ ++ (void)logInWithTarget:(PF_NULLABLE_S id)target selector:(PF_NULLABLE_S SEL)selector; + +///-------------------------------------- +/// @name Determining Whether a User is Anonymous +///-------------------------------------- + +/*! + @abstract Whether the object is logged in anonymously. + + @param user object to check for anonymity. The user must be logged in on this device. + + @returns `YES` if the user is anonymous. `NO` if the user is not the current user or is not anonymous. + */ ++ (BOOL)isLinkedWithUser:(PF_NULLABLE PFUser *)user; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFAnonymousUtils.m b/Unit-2-Journal/Pods/Parse/Parse/PFAnonymousUtils.m new file mode 100644 index 0000000..073e525 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFAnonymousUtils.m @@ -0,0 +1,91 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFAnonymousUtils.h" +#import "PFAnonymousUtils_Private.h" + +#import "BFTask+Private.h" +#import "PFAnonymousAuthenticationProvider.h" +#import "PFInternalUtils.h" +#import "PFUserPrivate.h" + +@implementation PFAnonymousUtils + +///-------------------------------------- +#pragma mark - Log In +///-------------------------------------- + ++ (BFTask *)logInInBackground { + PFAnonymousAuthenticationProvider *provider = [self _authenticationProvider]; + return [PFUser logInWithAuthTypeInBackground:PFAnonymousUserAuthenticationType authData:provider.authData]; +} + ++ (void)logInWithBlock:(PFUserResultBlock)block { + [[self logInInBackground] thenCallBackOnMainThreadAsync:block]; +} + ++ (void)logInWithTarget:(id)target selector:(SEL)selector { + [self logInWithBlock:^(PFUser *user, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:user object:error]; + }]; +} + +///-------------------------------------- +#pragma mark - Link +///-------------------------------------- + ++ (BOOL)isLinkedWithUser:(PFUser *)user { + return [user isLinkedWithAuthType:PFAnonymousUserAuthenticationType]; +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + +static PFAnonymousAuthenticationProvider *authenticationProvider_; + ++ (dispatch_queue_t)_providerAccessQueue { + static dispatch_queue_t queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + queue = dispatch_queue_create("com.parse.anonymousUtils.provider.access", DISPATCH_QUEUE_SERIAL); + }); + return queue; +} + ++ (PFAnonymousAuthenticationProvider *)_authenticationProvider { + __block PFAnonymousAuthenticationProvider *provider = nil; + dispatch_sync([self _providerAccessQueue], ^{ + provider = authenticationProvider_; + if (!provider) { + provider = [[PFAnonymousAuthenticationProvider alloc] init]; + [PFUser registerAuthenticationDelegate:provider forAuthType:PFAnonymousUserAuthenticationType]; + authenticationProvider_ = provider; + } + }); + return provider; +} + ++ (void)_clearAuthenticationProvider { + [PFUser _unregisterAuthenticationDelegateForAuthType:PFAnonymousUserAuthenticationType]; + dispatch_sync([self _providerAccessQueue], ^{ + authenticationProvider_ = nil; + }); +} + +///-------------------------------------- +#pragma mark - Lazy Login +///-------------------------------------- + ++ (PFUser *)_lazyLogIn { + PFAnonymousAuthenticationProvider *provider = [self _authenticationProvider]; + return [PFUser logInLazyUserWithAuthType:PFAnonymousUserAuthenticationType authData:provider.authData]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFCloud.h b/Unit-2-Journal/Pods/Parse/Parse/PFCloud.h new file mode 100644 index 0000000..b807b75 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFCloud.h @@ -0,0 +1,91 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import + +PF_ASSUME_NONNULL_BEGIN + +/*! + The `PFCloud` class provides methods for interacting with Parse Cloud Functions. + */ +@interface PFCloud : NSObject + +/*! + @abstract Calls the given cloud function *synchronously* with the parameters provided. + + @param function The function name to call. + @param parameters The parameters to send to the function. + + @returns The response from the cloud function. + */ ++ (PF_NULLABLE_S id)callFunction:(NSString *)function + withParameters:(PF_NULLABLE NSDictionary *)parameters PF_SWIFT_UNAVAILABLE; + +/*! + @abstract Calls the given cloud function *synchronously* with the parameters provided and + sets the error if there is one. + + @param function The function name to call. + @param parameters The parameters to send to the function. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns The response from the cloud function. + This result could be a `NSDictionary`, an `NSArray`, `NSNumber` or `NSString`. + */ ++ (PF_NULLABLE_S id)callFunction:(NSString *)function + withParameters:(PF_NULLABLE NSDictionary *)parameters + error:(NSError **)error; + +/*! + @abstract Calls the given cloud function *asynchronously* with the parameters provided. + + @param function The function name to call. + @param parameters The parameters to send to the function. + + @returns The task, that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(id) *)callFunctionInBackground:(NSString *)function + withParameters:(PF_NULLABLE NSDictionary *)parameters; + +/*! + @abstract Calls the given cloud function *asynchronously* with the parameters provided + and executes the given block when it is done. + + @param function The function name to call. + @param parameters The parameters to send to the function. + @param block The block to execute when the function call finished. + It should have the following argument signature: `^(id result, NSError *error)`. + */ ++ (void)callFunctionInBackground:(NSString *)function + withParameters:(PF_NULLABLE NSDictionary *)parameters + block:(PF_NULLABLE PFIdResultBlock)block; + +/* + @abstract Calls the given cloud function *asynchronously* with the parameters provided + and then executes the given selector when it is done. + + @param function The function name to call. + @param parameters The parameters to send to the function. + @param target The object to call the selector on. + @param selector The selector to call when the function call finished. + It should have the following signature: `(void)callbackWithResult:(id)result error:(NSError *)error`. + Result will be `nil` if error is set and vice versa. + */ ++ (void)callFunctionInBackground:(NSString *)function + withParameters:(PF_NULLABLE NSDictionary *)parameters + target:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFCloud.m b/Unit-2-Journal/Pods/Parse/Parse/PFCloud.m new file mode 100644 index 0000000..bb019ae --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFCloud.m @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFCloud.h" + +#import "BFTask+Private.h" +#import "PFCloudCodeController.h" +#import "PFCommandResult.h" +#import "PFCoreManager.h" +#import "PFUserPrivate.h" +#import "Parse_Private.h" + +@implementation PFCloud + +///-------------------------------------- +#pragma mark - Public +///-------------------------------------- + ++ (id)callFunction:(NSString *)function withParameters:(NSDictionary *)parameters { + return [self callFunction:function withParameters:parameters error:nil]; +} + ++ (id)callFunction:(NSString *)function withParameters:(NSDictionary *)parameters error:(NSError **)error { + return [[self callFunctionInBackground:function withParameters:parameters] waitForResult:error]; +} + ++ (BFTask *)callFunctionInBackground:(NSString *)functionName withParameters:(NSDictionary *)parameters { + return [[PFUser _getCurrentUserSessionTokenAsync] continueWithBlock:^id(BFTask *task) { + NSString *sessionToken = task.result; + PFCloudCodeController *controller = [Parse _currentManager].coreManager.cloudCodeController; + return [controller callCloudCodeFunctionAsync:functionName + withParameters:parameters + sessionToken:sessionToken]; + }]; +} + ++ (void)callFunctionInBackground:(NSString *)function + withParameters:(NSDictionary *)parameters + target:(id)target + selector:(SEL)selector { + [self callFunctionInBackground:function withParameters:parameters block:^(id results, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:results object:error]; + }]; +} + ++ (void)callFunctionInBackground:(NSString *)function + withParameters:(NSDictionary *)parameters + block:(PFIdResultBlock)block { + [[self callFunctionInBackground:function withParameters:parameters] thenCallBackOnMainThreadAsync:block]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFConfig.h b/Unit-2-Journal/Pods/Parse/Parse/PFConfig.h new file mode 100644 index 0000000..7420692 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFConfig.h @@ -0,0 +1,106 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import +#import + +PF_ASSUME_NONNULL_BEGIN + +@class PFConfig; + +typedef void(^PFConfigResultBlock)(PFConfig *PF_NULLABLE_S config, NSError *PF_NULLABLE_S error); + +/*! + `PFConfig` is a representation of the remote configuration object. + It enables you to add things like feature gating, a/b testing or simple "Message of the day". + */ +@interface PFConfig : NSObject + +///-------------------------------------- +/// @name Current Config +///-------------------------------------- + +/*! + @abstract Returns the most recently fetched config. + + @discussion If there was no config fetched - this method will return an empty instance of `PFConfig`. + + @returns Current, last fetched instance of PFConfig. + */ ++ (PFConfig *)currentConfig; + +///-------------------------------------- +/// @name Retrieving Config +///-------------------------------------- + +/*! + @abstract Gets the `PFConfig` object *synchronously* from the server. + + @returns Instance of `PFConfig` if the operation succeeded, otherwise `nil`. + */ ++ (PF_NULLABLE PFConfig *)getConfig PF_SWIFT_UNAVAILABLE; + +/*! + @abstract Gets the `PFConfig` object *synchronously* from the server and sets an error if it occurs. + + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Instance of PFConfig if the operation succeeded, otherwise `nil`. + */ ++ (PF_NULLABLE PFConfig *)getConfig:(NSError **)error; + +/*! + @abstract Gets the `PFConfig` *asynchronously* and sets it as a result of a task. + + @returns The task, that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(PFConfig *)*)getConfigInBackground; + +/*! + @abstract Gets the `PFConfig` *asynchronously* and executes the given callback block. + + @param block The block to execute. + It should have the following argument signature: `^(PFConfig *config, NSError *error)`. + */ ++ (void)getConfigInBackgroundWithBlock:(PF_NULLABLE PFConfigResultBlock)block; + +///-------------------------------------- +/// @name Parameters +///-------------------------------------- + +/*! + @abstract Returns the object associated with a given key. + + @param key The key for which to return the corresponding configuration value. + + @returns The value associated with `key`, or `nil` if there is no such value. + */ +- (PF_NULLABLE_S id)objectForKey:(NSString *)key; + +/*! + @abstract Returns the object associated with a given key. + + @discussion This method enables usage of literal syntax on `PFConfig`. + E.g. `NSString *value = config[@"key"];` + + @see objectForKey: + + @param keyedSubscript The keyed subscript for which to return the corresponding configuration value. + + @returns The value associated with `key`, or `nil` if there is no such value. + */ +- (PF_NULLABLE_S id)objectForKeyedSubscript:(NSString *)keyedSubscript; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFConfig.m b/Unit-2-Journal/Pods/Parse/Parse/PFConfig.m new file mode 100644 index 0000000..b4d1655 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFConfig.m @@ -0,0 +1,113 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFConfig.h" + +#import "BFTask+Private.h" +#import "PFConfigController.h" +#import "PFCoreManager.h" +#import "PFCurrentConfigController.h" +#import "PFCurrentUserController.h" +#import "PFInternalUtils.h" +#import "PFUserPrivate.h" +#import "Parse_Private.h" + +NSString *const PFConfigParametersRESTKey = @"params"; + +@interface PFConfig () + +@property (atomic, copy, readwrite) NSDictionary *parametersDictionary; + +@end + +@implementation PFConfig + +///-------------------------------------- +#pragma mark - Class +///-------------------------------------- + ++ (PFConfigController *)_configController { + return [Parse _currentManager].coreManager.configController; +} + +#pragma mark Public + ++ (PFConfig *)currentConfig { + return [[[self _configController].currentConfigController getCurrentConfigAsync] waitForResult:nil + withMainThreadWarning:NO]; +} + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithFetchedConfig:(NSDictionary *)resultDictionary { + self = [self init]; + if (!self) return nil; + + _parametersDictionary = resultDictionary[PFConfigParametersRESTKey]; + + return self; +} + +///-------------------------------------- +#pragma mark - Fetch +///-------------------------------------- + ++ (PFConfig *)getConfig { + return [self getConfig:nil]; +} + ++ (PFConfig *)getConfig:(NSError **)error { + return [[self getConfigInBackground] waitForResult:error]; +} + ++ (BFTask *)getConfigInBackground { + PFCurrentUserController *controller = [Parse _currentManager].coreManager.currentUserController; + return [[controller getCurrentUserSessionTokenAsync] continueWithBlock:^id(BFTask *task) { + NSString *sessionToken = task.result; + return [[self _configController] fetchConfigAsyncWithSessionToken:sessionToken]; + }]; +} + ++ (void)getConfigInBackgroundWithBlock:(PFConfigResultBlock)block { + [[self getConfigInBackground] thenCallBackOnMainThreadAsync:block]; +} + +///-------------------------------------- +#pragma mark - Getting Values +///-------------------------------------- + +- (id)objectForKey:(NSString *)key { + return _parametersDictionary[key]; +} + +- (id)objectForKeyedSubscript:(NSString *)keyedSubscript { + return _parametersDictionary[keyedSubscript]; +} + +#pragma mark Equality Testing + +- (NSUInteger)hash { + return [_parametersDictionary hash]; +} + +- (BOOL)isEqual:(id)object { + if ([object isKindOfClass:[PFConfig class]]) { + PFConfig *other = object; + + // Compare pointers first, to account for nil dictionary + return self.parametersDictionary == other.parametersDictionary || + [self.parametersDictionary isEqual:other.parametersDictionary]; + } + + return NO; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFConstants.h b/Unit-2-Journal/Pods/Parse/Parse/PFConstants.h new file mode 100644 index 0000000..c46eab0 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFConstants.h @@ -0,0 +1,509 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@class PFObject; +@class PFUser; + +///-------------------------------------- +/// @name Version +///-------------------------------------- + +#define PARSE_VERSION @"1.9.0" + +extern NSInteger const PARSE_API_VERSION; + +///-------------------------------------- +/// @name Platform +///-------------------------------------- + +#define PARSE_IOS_ONLY (TARGET_OS_IPHONE) +#define PARSE_OSX_ONLY (TARGET_OS_MAC && !(TARGET_OS_IPHONE)) + +extern NSString *const PF_NONNULL_S kPFDeviceType; + +#if PARSE_IOS_ONLY +#import +#else +#import +#endif + +///-------------------------------------- +/// @name Server +///-------------------------------------- + +extern NSString *const PF_NONNULL_S kPFParseServer; + +///-------------------------------------- +/// @name Cache Policies +///-------------------------------------- + +/*! + `PFCachePolicy` specifies different caching policies that could be used with . + + This lets you show data when the user's device is offline, + or when the app has just started and network requests have not yet had time to complete. + Parse takes care of automatically flushing the cache when it takes up too much space. + + @warning Cache policy could only be set when Local Datastore is not enabled. + + @see PFQuery + */ +typedef NS_ENUM(uint8_t, PFCachePolicy) { + /*! + @abstract The query does not load from the cache or save results to the cache. + This is the default cache policy. + */ + kPFCachePolicyIgnoreCache = 0, + /*! + @abstract The query only loads from the cache, ignoring the network. + If there are no cached results, this causes a `NSError` with `kPFErrorCacheMiss` code. + */ + kPFCachePolicyCacheOnly, + /*! + @abstract The query does not load from the cache, but it will save results to the cache. + */ + kPFCachePolicyNetworkOnly, + /*! + @abstract The query first tries to load from the cache, but if that fails, it loads results from the network. + If there are no cached results, this causes a `NSError` with `kPFErrorCacheMiss` code. + */ + kPFCachePolicyCacheElseNetwork, + /*! + @abstract The query first tries to load from the network, but if that fails, it loads results from the cache. + If there are no cached results, this causes a `NSError` with `kPFErrorCacheMiss` code. + */ + kPFCachePolicyNetworkElseCache, + /*! + @abstract The query first loads from the cache, then loads from the network. + The callback will be called twice - first with the cached results, then with the network results. + Since it returns two results at different times, this cache policy cannot be used with synchronous or task methods. + */ + kPFCachePolicyCacheThenNetwork +}; + +///-------------------------------------- +/// @name Logging Levels +///-------------------------------------- + +/*! + `PFLogLevel` enum specifies different levels of logging that could be used to limit or display more messages in logs. + + @see [Parse setLogLevel:] + @see [Parse logLevel] + */ +typedef NS_ENUM(uint8_t, PFLogLevel) { + /*! + Log level that disables all logging. + */ + PFLogLevelNone = 0, + /*! + Log level that if set is going to output error messages to the log. + */ + PFLogLevelError = 1, + /*! + Log level that if set is going to output the following messages to log: + - Errors + - Warnings + */ + PFLogLevelWarning = 2, + /*! + Log level that if set is going to output the following messages to log: + - Errors + - Warnings + - Informational messages + */ + PFLogLevelInfo = 3, + /*! + Log level that if set is going to output the following messages to log: + - Errors + - Warnings + - Informational messages + - Debug messages + */ + PFLogLevelDebug = 4 +}; + +///-------------------------------------- +/// @name Errors +///-------------------------------------- + +extern NSString *const PF_NONNULL_S PFParseErrorDomain; + +/*! + `PFErrorCode` enum contains all custom error codes that are used as `code` for `NSError` for callbacks on all classes. + + These codes are used when `domain` of `NSError` that you receive is set to `PFParseErrorDomain`. + */ +typedef NS_ENUM(NSInteger, PFErrorCode) { + /*! + @abstract Internal server error. No information available. + */ + kPFErrorInternalServer = 1, + /*! + @abstract The connection to the Parse servers failed. + */ + kPFErrorConnectionFailed = 100, + /*! + @abstract Object doesn't exist, or has an incorrect password. + */ + kPFErrorObjectNotFound = 101, + /*! + @abstract You tried to find values matching a datatype that doesn't + support exact database matching, like an array or a dictionary. + */ + kPFErrorInvalidQuery = 102, + /*! + @abstract Missing or invalid classname. Classnames are case-sensitive. + They must start with a letter, and `a-zA-Z0-9_` are the only valid characters. + */ + kPFErrorInvalidClassName = 103, + /*! + @abstract Missing object id. + */ + kPFErrorMissingObjectId = 104, + /*! + @abstract Invalid key name. Keys are case-sensitive. + They must start with a letter, and `a-zA-Z0-9_` are the only valid characters. + */ + kPFErrorInvalidKeyName = 105, + /*! + @abstract Malformed pointer. Pointers must be arrays of a classname and an object id. + */ + kPFErrorInvalidPointer = 106, + /*! + @abstract Malformed json object. A json dictionary is expected. + */ + kPFErrorInvalidJSON = 107, + /*! + @abstract Tried to access a feature only available internally. + */ + kPFErrorCommandUnavailable = 108, + /*! + @abstract Field set to incorrect type. + */ + kPFErrorIncorrectType = 111, + /*! + @abstract Invalid channel name. A channel name is either an empty string (the broadcast channel) + or contains only `a-zA-Z0-9_` characters and starts with a letter. + */ + kPFErrorInvalidChannelName = 112, + /*! + @abstract Invalid device token. + */ + kPFErrorInvalidDeviceToken = 114, + /*! + @abstract Push is misconfigured. See details to find out how. + */ + kPFErrorPushMisconfigured = 115, + /*! + @abstract The object is too large. + */ + kPFErrorObjectTooLarge = 116, + /*! + @abstract That operation isn't allowed for clients. + */ + kPFErrorOperationForbidden = 119, + /*! + @abstract The results were not found in the cache. + */ + kPFErrorCacheMiss = 120, + /*! + @abstract Keys in `NSDictionary` values may not include `$` or `.`. + */ + kPFErrorInvalidNestedKey = 121, + /*! + @abstract Invalid file name. + A file name can contain only `a-zA-Z0-9_.` characters and should be between 1 and 36 characters. + */ + kPFErrorInvalidFileName = 122, + /*! + @abstract Invalid ACL. An ACL with an invalid format was saved. This should not happen if you use . + */ + kPFErrorInvalidACL = 123, + /*! + @abstract The request timed out on the server. Typically this indicates the request is too expensive. + */ + kPFErrorTimeout = 124, + /*! + @abstract The email address was invalid. + */ + kPFErrorInvalidEmailAddress = 125, + /*! + A unique field was given a value that is already taken. + */ + kPFErrorDuplicateValue = 137, + /*! + @abstract Role's name is invalid. + */ + kPFErrorInvalidRoleName = 139, + /*! + @abstract Exceeded an application quota. Upgrade to resolve. + */ + kPFErrorExceededQuota = 140, + /*! + @abstract Cloud Code script had an error. + */ + kPFScriptError = 141, + /*! + @abstract Cloud Code validation failed. + */ + kPFValidationError = 142, + /*! + @abstract Product purchase receipt is missing. + */ + kPFErrorReceiptMissing = 143, + /*! + @abstract Product purchase receipt is invalid. + */ + kPFErrorInvalidPurchaseReceipt = 144, + /*! + @abstract Payment is disabled on this device. + */ + kPFErrorPaymentDisabled = 145, + /*! + @abstract The product identifier is invalid. + */ + kPFErrorInvalidProductIdentifier = 146, + /*! + @abstract The product is not found in the App Store. + */ + kPFErrorProductNotFoundInAppStore = 147, + /*! + @abstract The Apple server response is not valid. + */ + kPFErrorInvalidServerResponse = 148, + /*! + @abstract Product fails to download due to file system error. + */ + kPFErrorProductDownloadFileSystemFailure = 149, + /*! + @abstract Fail to convert data to image. + */ + kPFErrorInvalidImageData = 150, + /*! + @abstract Unsaved file. + */ + kPFErrorUnsavedFile = 151, + /*! + @abstract Fail to delete file. + */ + kPFErrorFileDeleteFailure = 153, + /*! + @abstract Application has exceeded its request limit. + */ + kPFErrorRequestLimitExceeded = 155, + /*! + @abstract Invalid event name. + */ + kPFErrorInvalidEventName = 160, + /*! + @abstract Username is missing or empty. + */ + kPFErrorUsernameMissing = 200, + /*! + @abstract Password is missing or empty. + */ + kPFErrorUserPasswordMissing = 201, + /*! + @abstract Username has already been taken. + */ + kPFErrorUsernameTaken = 202, + /*! + @abstract Email has already been taken. + */ + kPFErrorUserEmailTaken = 203, + /*! + @abstract The email is missing, and must be specified. + */ + kPFErrorUserEmailMissing = 204, + /*! + @abstract A user with the specified email was not found. + */ + kPFErrorUserWithEmailNotFound = 205, + /*! + @abstract The user cannot be altered by a client without the session. + */ + kPFErrorUserCannotBeAlteredWithoutSession = 206, + /*! + @abstract Users can only be created through sign up. + */ + kPFErrorUserCanOnlyBeCreatedThroughSignUp = 207, + /*! + @abstract An existing Facebook account already linked to another user. + */ + kPFErrorFacebookAccountAlreadyLinked = 208, + /*! + @abstract An existing account already linked to another user. + */ + kPFErrorAccountAlreadyLinked = 208, + /*! + Error code indicating that the current session token is invalid. + */ + kPFErrorInvalidSessionToken = 209, + kPFErrorUserIdMismatch = 209, + /*! + @abstract Facebook id missing from request. + */ + kPFErrorFacebookIdMissing = 250, + /*! + @abstract Linked id missing from request. + */ + kPFErrorLinkedIdMissing = 250, + /*! + @abstract Invalid Facebook session. + */ + kPFErrorFacebookInvalidSession = 251, + /*! + @abstract Invalid linked session. + */ + kPFErrorInvalidLinkedSession = 251, +}; + +///-------------------------------------- +/// @name Blocks +///-------------------------------------- + +typedef void (^PFBooleanResultBlock)(BOOL succeeded, NSError *PF_NULLABLE_S error); +typedef void (^PFIntegerResultBlock)(int number, NSError *PF_NULLABLE_S error); +typedef void (^PFArrayResultBlock)(NSArray *PF_NULLABLE_S objects, NSError *PF_NULLABLE_S error); +typedef void (^PFObjectResultBlock)(PFObject *PF_NULLABLE_S object, NSError *PF_NULLABLE_S error); +typedef void (^PFSetResultBlock)(NSSet *PF_NULLABLE_S channels, NSError *PF_NULLABLE_S error); +typedef void (^PFUserResultBlock)(PFUser *PF_NULLABLE_S user, NSError *PF_NULLABLE_S error); +typedef void (^PFDataResultBlock)(NSData *PF_NULLABLE_S data, NSError *PF_NULLABLE_S error); +typedef void (^PFDataStreamResultBlock)(NSInputStream *PF_NULLABLE_S stream, NSError *PF_NULLABLE_S error); +typedef void (^PFFilePathResultBlock)(NSString *PF_NULLABLE_S filePath, NSError *PF_NULLABLE_S error); +typedef void (^PFStringResultBlock)(NSString *PF_NULLABLE_S string, NSError *PF_NULLABLE_S error); +typedef void (^PFIdResultBlock)(PF_NULLABLE_S id object, NSError *PF_NULLABLE_S error); +typedef void (^PFProgressBlock)(int percentDone); + +///-------------------------------------- +/// @name Network Notifications +///-------------------------------------- + +/*! + @abstract The name of the notification that is going to be sent before any URL request is sent. + */ +extern NSString *const PF_NONNULL_S PFNetworkWillSendURLRequestNotification; + +/*! + @abstract The name of the notification that is going to be sent after any URL response is received. + */ +extern NSString *const PF_NONNULL_S PFNetworkDidReceiveURLResponseNotification; + +/*! + @abstract The key of request(NSURLRequest) in the userInfo dictionary of a notification. + @note This key is populated in userInfo, only if `PFLogLevel` on `Parse` is set to `PFLogLevelDebug`. + */ +extern NSString *const PF_NONNULL_S PFNetworkNotificationURLRequestUserInfoKey; + +/*! + @abstract The key of response(NSHTTPURLResponse) in the userInfo dictionary of a notification. + @note This key is populated in userInfo, only if `PFLogLevel` on `Parse` is set to `PFLogLevelDebug`. + */ +extern NSString *const PF_NONNULL_S PFNetworkNotificationURLResponseUserInfoKey; + +/*! + @abstract The key of repsonse body (usually `NSString` with JSON) in the userInfo dictionary of a notification. + @note This key is populated in userInfo, only if `PFLogLevel` on `Parse` is set to `PFLogLevelDebug`. + */ +extern NSString *const PF_NONNULL_S PFNetworkNotificationURLResponseBodyUserInfoKey; + + +///-------------------------------------- +/// @name Deprecated Macros +///-------------------------------------- + +#ifndef PARSE_DEPRECATED +# ifdef __deprecated_msg +# define PARSE_DEPRECATED(_MSG) __deprecated_msg(_MSG) +# else +# ifdef __deprecated +# define PARSE_DEPRECATED(_MSG) __attribute__((deprecated)) +# else +# define PARSE_DEPRECATED(_MSG) +# endif +# endif +#endif + +///-------------------------------------- +/// @name Extensions Macros +///-------------------------------------- + +#ifndef PF_EXTENSION_UNAVAILABLE +# if PARSE_IOS_ONLY +# ifdef NS_EXTENSION_UNAVAILABLE_IOS +# define PF_EXTENSION_UNAVAILABLE(_msg) NS_EXTENSION_UNAVAILABLE_IOS(_msg) +# else +# define PF_EXTENSION_UNAVAILABLE(_msg) +# endif +# else +# ifdef NS_EXTENSION_UNAVAILABLE_MAC +# define PF_EXTENSION_UNAVAILABLE(_msg) NS_EXTENSION_UNAVAILABLE_MAC(_msg) +# else +# define PF_EXTENSION_UNAVAILABLE(_msg) +# endif +# endif +#endif + +///-------------------------------------- +/// @name Swift Macros +///-------------------------------------- + +#ifndef PF_SWIFT_UNAVAILABLE +# ifdef NS_SWIFT_UNAVAILABLE +# define PF_SWIFT_UNAVAILABLE NS_SWIFT_UNAVAILABLE("") +# else +# define PF_SWIFT_UNAVAILABLE +# endif +#endif + +///-------------------------------------- +/// @name Obj-C Generics Macros +///-------------------------------------- + +#if __has_feature(objc_generics) || __has_extension(objc_generics) +# define PF_GENERIC(...) <__VA_ARGS__> +#else +# define PF_GENERIC(...) +# define PFGenericObject PFObject * +#endif + +///-------------------------------------- +/// @name Platform Availability Defines +///-------------------------------------- + +#ifndef TARGET_OS_IOS +# define TARGET_OS_IOS TARGET_OS_IPHONE +#endif +#ifndef TARGET_OS_WATCH +# define TARGET_OS_WATCH 0 +#endif +#ifndef TARGET_OS_TV +# define TARGET_OS_TV 0 +#endif + +#ifndef PF_TARGET_OS_OSX +# define PF_TARGET_OS_OSX TARGET_OS_MAC && !TARGET_OS_IOS && !TARGET_OS_WATCH && !TARGET_OS_TV +#endif + +///-------------------------------------- +/// @name Avaiability Macros +///-------------------------------------- + +#ifndef PF_WATCH_UNAVAILABLE +# ifdef __WATCHOS_UNAVAILABLE +# define PF_WATCH_UNAVAILABLE __WATCHOS_UNAVAILABLE +# else +# define PF_WATCH_UNAVAILABLE +# endif +#endif diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFConstants.m b/Unit-2-Journal/Pods/Parse/Parse/PFConstants.m new file mode 100644 index 0000000..174b5a7 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFConstants.m @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFConstants.h" + +NSInteger const PARSE_API_VERSION = 2; + +#if PARSE_IOS_ONLY +NSString *const kPFDeviceType = @"ios"; +#else +NSString *const kPFDeviceType = @"osx"; +#endif + +NSString *const kPFParseServer = @"https://api.parse.com"; + +NSString *const PFParseErrorDomain = @"Parse"; + +///-------------------------------------- +#pragma mark - Network Notifications +///-------------------------------------- + +NSString *const PFNetworkWillSendURLRequestNotification = @"PFNetworkWillSendURLRequestNotification"; +NSString *const PFNetworkDidReceiveURLResponseNotification = @"PFNetworkDidReceiveURLResponseNotification"; +NSString *const PFNetworkNotificationURLRequestUserInfoKey = @"PFNetworkNotificationURLRequestUserInfoKey"; +NSString *const PFNetworkNotificationURLResponseUserInfoKey = @"PFNetworkNotificationURLResponseUserInfoKey"; +NSString *const PFNetworkNotificationURLResponseBodyUserInfoKey = @"PFNetworkNotificationURLResponseBodyUserInfoKey"; diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFFile.h b/Unit-2-Journal/Pods/Parse/Parse/PFFile.h new file mode 100644 index 0000000..c2313cc --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFFile.h @@ -0,0 +1,446 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import + +PF_ASSUME_NONNULL_BEGIN + +/*! + `PFFile` representes a file of binary data stored on the Parse servers. + This can be a image, video, or anything else that an application needs to reference in a non-relational way. + */ +@interface PFFile : NSObject + +///-------------------------------------- +/// @name Creating a PFFile +///-------------------------------------- + +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + +/*! + @abstract Creates a file with given data. A name will be assigned to it by the server. + + @param data The contents of the new `PFFile`. + + @returns A new `PFFile`. + */ ++ (PF_NULLABLE instancetype)fileWithData:(NSData *)data; + +/*! + @abstract Creates a file with given data and name. + + @param name The name of the new PFFile. The file name must begin with and + alphanumeric character, and consist of alphanumeric characters, periods, + spaces, underscores, or dashes. + @param data The contents of the new `PFFile`. + + @returns A new `PFFile` object. + */ ++ (PF_NULLABLE instancetype)fileWithName:(PF_NULLABLE NSString *)name data:(NSData *)data; + +/*! + @abstract Creates a file with the contents of another file. + + @warning This method raises an exception if the file at path is not accessible + or if there is not enough disk space left. + + @param name The name of the new `PFFile`. The file name must begin with and alphanumeric character, + and consist of alphanumeric characters, periods, spaces, underscores, or dashes. + @param path The path to the file that will be uploaded to Parse. + + @returns A new `PFFile` instance. + */ ++ (PF_NULLABLE instancetype)fileWithName:(PF_NULLABLE NSString *)name + contentsAtPath:(NSString *)path PF_SWIFT_UNAVAILABLE; + +/*! + @abstract Creates a file with the contents of another file. + + @param name The name of the new `PFFile`. The file name must begin with and alphanumeric character, + and consist of alphanumeric characters, periods, spaces, underscores, or dashes. + @param path The path to the file that will be uploaded to Parse. + @param error On input, a pointer to an error object. + If an error occurs, this pointer is set to an actual error object containing the error information. + You may specify `nil` for this parameter if you do not want the error information. + + @returns A new `PFFile` instance or `nil` if the error occured. + */ ++ (PF_NULLABLE instancetype)fileWithName:(PF_NULLABLE NSString *)name + contentsAtPath:(NSString *)path + error:(NSError **)error; + +/*! + @abstract Creates a file with given data, name and content type. + + @warning This method raises an exception if the data supplied is not accessible or could not be saved. + + @param name The name of the new `PFFile`. The file name must begin with and alphanumeric character, + and consist of alphanumeric characters, periods, spaces, underscores, or dashes. + @param data The contents of the new `PFFile`. + @param contentType Represents MIME type of the data. + + @returns A new `PFFile` instance. + */ ++ (PF_NULLABLE instancetype)fileWithName:(PF_NULLABLE NSString *)name + data:(NSData *)data + contentType:(PF_NULLABLE NSString *)contentType PF_SWIFT_UNAVAILABLE; + +/*! + @abstract Creates a file with given data, name and content type. + + @param name The name of the new `PFFile`. The file name must begin with and alphanumeric character, + and consist of alphanumeric characters, periods, spaces, underscores, or dashes. + @param data The contents of the new `PFFile`. + @param contentType Represents MIME type of the data. + @param error On input, a pointer to an error object. + If an error occurs, this pointer is set to an actual error object containing the error information. + You may specify `nil` for this parameter if you do not want the error information. + + @returns A new `PFFile` instance or `nil` if the error occured. + */ ++ (PF_NULLABLE instancetype)fileWithName:(PF_NULLABLE NSString *)name + data:(NSData *)data + contentType:(PF_NULLABLE NSString *)contentType + error:(NSError **)error; + +/*! + @abstract Creates a file with given data and content type. + + @param data The contents of the new `PFFile`. + @param contentType Represents MIME type of the data. + + @returns A new `PFFile` object. + */ ++ (instancetype)fileWithData:(NSData *)data contentType:(PF_NULLABLE NSString *)contentType; + +///-------------------------------------- +/// @name File Properties +///-------------------------------------- + +/*! + @abstract The name of the file. + + @discussion Before the file is saved, this is the filename given by + the user. After the file is saved, that name gets prefixed with a unique + identifier. + */ +@property (nonatomic, copy, readonly) NSString *name; + +/*! + @abstract The url of the file. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, copy, readonly) NSString *url; + +/*! + @abstract Whether the file has been uploaded for the first time. + */ +@property (nonatomic, assign, readonly) BOOL isDirty; + +///-------------------------------------- +/// @name Storing Data with Parse +///-------------------------------------- + +/*! + @abstract Saves the file *synchronously*. + + @returns Returns whether the save succeeded. + */ +- (BOOL)save PF_SWIFT_UNAVAILABLE; + +/*! + @abstract Saves the file *synchronously* and sets an error if it occurs. + + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the save succeeded. + */ +- (BOOL)save:(NSError **)error; + +/*! + @abstract Saves the file *asynchronously*. + + @returns The task, that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(NSNumber *)*)saveInBackground; + +/*! + @abstract Saves the file *asynchronously* + + @param progressBlock The block should have the following argument signature: `^(int percentDone)` + + @returns The task, that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(NSNumber *)*)saveInBackgroundWithProgressBlock:(PF_NULLABLE PFProgressBlock)progressBlock; + +/*! + @abstract Saves the file *asynchronously* and executes the given block. + + @param block The block should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + */ +- (void)saveInBackgroundWithBlock:(PF_NULLABLE PFBooleanResultBlock)block; + +/*! + @abstract Saves the file *asynchronously* and executes the given block. + + @discussion This method will execute the progressBlock periodically with the percent progress. + `progressBlock` will get called with `100` before `resultBlock` is called. + + @param block The block should have the following argument signature: `^(BOOL succeeded, NSError *error)` + @param progressBlock The block should have the following argument signature: `^(int percentDone)` + */ +- (void)saveInBackgroundWithBlock:(PF_NULLABLE PFBooleanResultBlock)block + progressBlock:(PF_NULLABLE PFProgressBlock)progressBlock; + +/* + @abstract Saves the file *asynchronously* and calls the given callback. + + @param target The object to call selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSNumber *)result error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `[result boolValue]` will tell you whether the call succeeded or not. + */ +- (void)saveInBackgroundWithTarget:(PF_NULLABLE_S id)target selector:(PF_NULLABLE_S SEL)selector; + +///-------------------------------------- +/// @name Getting Data from Parse +///-------------------------------------- + +/*! + @abstract Whether the data is available in memory or needs to be downloaded. + */ +@property (assign, readonly) BOOL isDataAvailable; + +/*! + @abstract *Synchronously* gets the data from cache if available or fetches its contents from the network. + + @returns The `NSData` object containing file data. Returns `nil` if there was an error in fetching. + */ +- (PF_NULLABLE NSData *)getData PF_SWIFT_UNAVAILABLE; + +/*! + @abstract This method is like but avoids ever holding the entire `PFFile` contents in memory at once. + + @discussion This can help applications with many large files avoid memory warnings. + + @returns A stream containing the data. Returns `nil` if there was an error in fetching. + */ +- (PF_NULLABLE NSInputStream *)getDataStream PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* gets the data from cache if available or fetches its contents from the network. + Sets an error if it occurs. + + @param error Pointer to an `NSError` that will be set if necessary. + + @returns The `NSData` object containing file data. Returns `nil` if there was an error in fetching. + */ +- (PF_NULLABLE NSData *)getData:(NSError **)error; + +/*! + @abstract This method is like but avoids ever holding the entire `PFFile` contents in memory at once. + + @param error Pointer to an `NSError` that will be set if necessary. + + @returns A stream containing the data. Returns nil if there was an error in + fetching. + */ +- (PF_NULLABLE NSInputStream *)getDataStream:(NSError **)error; + +/*! + @abstract This method is like but it fetches asynchronously to avoid blocking the current thread. + + @see getData + + @returns The task, that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(NSData *)*)getDataInBackground; + +/*! + @abstract This method is like but it fetches asynchronously to avoid blocking the current thread. + + @discussion This can help applications with many large files avoid memory warnings. + + @see getData + + @param progressBlock The block should have the following argument signature: ^(int percentDone) + + @returns The task, that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(NSData *)*)getDataInBackgroundWithProgressBlock:(PF_NULLABLE PFProgressBlock)progressBlock; + +/*! + @abstract This method is like but avoids + ever holding the entire `PFFile` contents in memory at once. + + @discussion This can help applications with many large files avoid memory warnings. + + @returns The task, that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(NSInputStream *)*)getDataStreamInBackground; + +/*! + @abstract This method is like , but yields a live-updating stream. + + @discussion Instead of , which yields a stream that can be read from only after the request has + completed, this method gives you a stream directly written to by the HTTP session. As this stream is not pre-buffered, + it is strongly advised to use the `NSStreamDelegate` methods, in combination with a run loop, to consume the data in + the stream, to do proper async file downloading. + + @note You MUST open this stream before reading from it. + @note Do NOT call on this task from the main thread. It may result in a deadlock. + + @returns A task that produces a *live* stream that is being written to with the data from the server. + */ +- (BFTask PF_GENERIC(NSInputStream *)*)getDataDownloadStreamInBackground; + +/*! + @abstract This method is like but avoids + ever holding the entire `PFFile` contents in memory at once. + + @discussion This can help applications with many large files avoid memory warnings. + @param progressBlock The block should have the following argument signature: ^(int percentDone) + + @returns The task, that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(NSInputStream *)*)getDataStreamInBackgroundWithProgressBlock:(PF_NULLABLE PFProgressBlock)progressBlock; + +/*! + @abstract This method is like , but yields a live-updating stream. + + @discussion Instead of , which yields a stream that can be read from only after the request has + completed, this method gives you a stream directly written to by the HTTP session. As this stream is not pre-buffered, + it is strongly advised to use the `NSStreamDelegate` methods, in combination with a run loop, to consume the data in + the stream, to do proper async file downloading. + + @note You MUST open this stream before reading from it. + @note Do NOT call on this task from the main thread. It may result in a deadlock. + + @param progressBlock The block should have the following argument signature: `^(int percentDone)` + + @returns A task that produces a *live* stream that is being written to with the data from the server. + */ +- (BFTask PF_GENERIC(NSInputStream *)*)getDataDownloadStreamInBackgroundWithProgressBlock:(PF_NULLABLE PFProgressBlock)progressBlock; + +/*! + @abstract *Asynchronously* gets the data from cache if available or fetches its contents from the network. + + @param block The block should have the following argument signature: `^(NSData *result, NSError *error)` + */ +- (void)getDataInBackgroundWithBlock:(PF_NULLABLE PFDataResultBlock)block; + +/*! + @abstract This method is like but avoids + ever holding the entire `PFFile` contents in memory at once. + + @discussion This can help applications with many large files avoid memory warnings. + + @param block The block should have the following argument signature: `(NSInputStream *result, NSError *error)` + */ +- (void)getDataStreamInBackgroundWithBlock:(PF_NULLABLE PFDataStreamResultBlock)block; + +/*! + @abstract *Asynchronously* gets the data from cache if available or fetches its contents from the network. + + @discussion This method will execute the progressBlock periodically with the percent progress. + `progressBlock` will get called with `100` before `resultBlock` is called. + + @param resultBlock The block should have the following argument signature: ^(NSData *result, NSError *error) + @param progressBlock The block should have the following argument signature: ^(int percentDone) + */ +- (void)getDataInBackgroundWithBlock:(PF_NULLABLE PFDataResultBlock)resultBlock + progressBlock:(PF_NULLABLE PFProgressBlock)progressBlock; + +/*! + @abstract This method is like but avoids + ever holding the entire `PFFile` contents in memory at once. + + @discussion This can help applications with many large files avoid memory warnings. + + @param resultBlock The block should have the following argument signature: `^(NSInputStream *result, NSError *error)`. + @param progressBlock The block should have the following argument signature: `^(int percentDone)`. + */ +- (void)getDataStreamInBackgroundWithBlock:(PF_NULLABLE PFDataStreamResultBlock)resultBlock + progressBlock:(PF_NULLABLE PFProgressBlock)progressBlock; + +/* + @abstract *Asynchronously* gets the data from cache if available or fetches its contents from the network. + + @param target The object to call selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSData *)result error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + */ +- (void)getDataInBackgroundWithTarget:(PF_NULLABLE_S id)target selector:(PF_NULLABLE_S SEL)selector; + +/*! + @abstract *Asynchronously* gets the file path for file from cache if available or fetches its contents from the network. + + @note The file path may change between versions of SDK. + @note If you overwrite the contents of the file at returned path it will persist those change + until the file cache is cleared. + + @returns The task, with the result set to `NSString` representation of a file path. + */ +- (BFTask PF_GENERIC(NSString *)*)getFilePathInBackground; + +/*! + @abstract *Asynchronously* gets the file path for file from cache if available or fetches its contents from the network. + + @note The file path may change between versions of SDK. + @note If you overwrite the contents of the file at returned path it will persist those change + until the file cache is cleared. + + @param progressBlock The block should have the following argument signature: `^(int percentDone)`. + + @returns The task, with the result set to `NSString` representation of a file path. + */ +- (BFTask PF_GENERIC(NSString *)*)getFilePathInBackgroundWithProgressBlock:(PF_NULLABLE PFProgressBlock)progressBlock; + +/*! + @abstract *Asynchronously* gets the file path for file from cache if available or fetches its contents from the network. + + @note The file path may change between versions of SDK. + @note If you overwrite the contents of the file at returned path it will persist those change + until the file cache is cleared. + + @param block The block should have the following argument signature: `^(NSString *filePath, NSError *error)`. + */ +- (void)getFilePathInBackgroundWithBlock:(PF_NULLABLE PFFilePathResultBlock)block; + +/*! + @abstract *Asynchronously* gets the file path for file from cache if available or fetches its contents from the network. + + @note The file path may change between versions of SDK. + @note If you overwrite the contents of the file at returned path it will persist those change + until the file cache is cleared. + + @param block The block should have the following argument signature: `^(NSString *filePath, NSError *error)`. + @param progressBlock The block should have the following argument signature: `^(int percentDone)`. + */ +- (void)getFilePathInBackgroundWithBlock:(PF_NULLABLE PFFilePathResultBlock)block + progressBlock:(PF_NULLABLE PFProgressBlock)progressBlock; + +///-------------------------------------- +/// @name Interrupting a Transfer +///-------------------------------------- + +/*! + @abstract Cancels the current request (upload or download of file). + */ +- (void)cancel; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFFile.m b/Unit-2-Journal/Pods/Parse/Parse/PFFile.m new file mode 100644 index 0000000..26fcda3 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFFile.m @@ -0,0 +1,546 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFFile.h" +#import "PFFile_Private.h" + +#import + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFAsyncTaskQueue.h" +#import "PFCommandResult.h" +#import "PFCoreManager.h" +#import "PFErrorUtilities.h" +#import "PFFileController.h" +#import "PFFileManager.h" +#import "PFFileStagingController.h" +#import "PFInternalUtils.h" +#import "PFMacros.h" +#import "PFMutableFileState.h" +#import "PFRESTFileCommand.h" +#import "PFThreadsafety.h" +#import "PFUserPrivate.h" +#import "Parse_Private.h" + +static const unsigned long long PFFileMaxFileSize = 10 * 1024 * 1024; // 10 MB + +@interface PFFile () { + dispatch_queue_t _synchronizationQueue; +} + +@property (nonatomic, strong, readwrite) PFFileState *state; +@property (nonatomic, copy, readonly) NSString *stagedFilePath; +@property (nonatomic, assign, readonly, getter=isDirty) BOOL dirty; + +// +// Private +@property (nonatomic, strong) PFAsyncTaskQueue *taskQueue; +@property (nonatomic, strong) BFCancellationTokenSource *cancellationTokenSource; + +@end + +@implementation PFFile + +@synthesize stagedFilePath = _stagedFilePath; + +///-------------------------------------- +#pragma mark - Public +///-------------------------------------- + +#pragma mark Init + ++ (instancetype)fileWithData:(NSData *)data { + return [self fileWithName:nil data:data contentType:nil]; +} + ++ (instancetype)fileWithName:(NSString *)name data:(NSData *)data { + return [self fileWithName:name data:data contentType:nil]; +} + ++ (instancetype)fileWithName:(NSString *)name contentsAtPath:(NSString *)path { + NSError *error = nil; + PFFile *file = [self fileWithName:name contentsAtPath:path error:&error]; + PFParameterAssert(!error, @"Could not access file at %@: %@", path, error); + return file; +} + ++ (instancetype)fileWithName:(NSString *)name contentsAtPath:(NSString *)path error:(NSError **)error { + NSFileManager *fileManager = [NSFileManager defaultManager]; + BOOL directory = NO; + + if (![fileManager fileExistsAtPath:path isDirectory:&directory] || directory) { + NSString *message = [NSString stringWithFormat:@"Failed to create PFFile at path '%@': " + "file does not exist.", path]; + if (error) { + *error = [NSError errorWithDomain:NSCocoaErrorDomain + code:NSFileNoSuchFileError + userInfo:@{ NSLocalizedDescriptionKey: message }]; + } + return nil; + } + + NSDictionary *attributes = [fileManager attributesOfItemAtPath:path error:nil]; + unsigned long long length = [attributes[NSFileSize] unsignedLongValue]; + if (length > PFFileMaxFileSize) { + NSString *message = [NSString stringWithFormat:@"Failed to create PFFile at path '%@': " + "file is larger than %lluMB.", path, (PFFileMaxFileSize >> 20)]; + if (error) { + *error = [NSError errorWithDomain:NSCocoaErrorDomain + code:NSFileReadTooLargeError + userInfo:@{ NSLocalizedDescriptionKey: message }]; + } + return nil; + } + + PFFile *file = [self fileWithName:name url:nil]; + if (![file _stageWithPath:path error:error]) { + return nil; + } + return file; +} + ++ (instancetype)fileWithName:(NSString *)name + data:(NSData *)data + contentType:(NSString *)contentType { + NSError *error = nil; + PFFile *file = [self fileWithName:name data:data contentType:contentType error:&error]; + PFConsistencyAssert(!error, @"Could not save file data for %@ : %@", name, error); + return file; +} + ++ (instancetype)fileWithName:(NSString *)name + data:(NSData *)data + contentType:(NSString *)contentType + error:(NSError **)error { + if (!data) { + NSString *message = @"Cannot create a PFFile with nil data."; + if (error) { + *error = [NSError errorWithDomain:NSCocoaErrorDomain + code:NSFileNoSuchFileError + userInfo:@{ NSLocalizedDescriptionKey: message }]; + } + return nil; + } + + if ([data length] > PFFileMaxFileSize) { + NSString *message = [NSString stringWithFormat:@"Failed to create PFFile with data: " + "data is larger than %lluMB.", (PFFileMaxFileSize >> 20)]; + if (error) { + *error = [NSError errorWithDomain:NSCocoaErrorDomain + code:NSFileReadTooLargeError + userInfo:@{ NSLocalizedDescriptionKey: message }]; + } + return nil; + } + + PFFile *file = [[self alloc] initWithName:name urlString:nil mimeType:contentType]; + if (![file _stageWithData:data error:error]) { + return nil; + } + return file; +} + ++ (instancetype)fileWithData:(NSData *)data contentType:(NSString *)contentType { + return [self fileWithName:nil data:data contentType:contentType]; +} + +#pragma mark Uploading + +- (BOOL)save { + return [self save:nil]; +} + +- (BOOL)save:(NSError **)error { + return [[[self saveInBackground] waitForResult:error] boolValue]; +} + +- (BFTask *)saveInBackground { + return [self _uploadAsyncWithProgressBlock:nil]; +} + +- (BFTask *)saveInBackgroundWithProgressBlock:(PFProgressBlock)progressBlock { + return [self _uploadAsyncWithProgressBlock:progressBlock]; +} + +- (void)saveInBackgroundWithBlock:(PFBooleanResultBlock)block { + [[self saveInBackground] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +- (void)saveInBackgroundWithBlock:(PFBooleanResultBlock)block + progressBlock:(PFProgressBlock)progressBlock { + [[self _uploadAsyncWithProgressBlock:progressBlock] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +- (void)saveInBackgroundWithTarget:(id)target selector:(SEL)selector { + [self saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:@(succeeded) object:error]; + }]; +} + +#pragma mark Downloading + +- (NSData *)getData { + return [self getData:nil]; +} + +- (NSInputStream *)getDataStream { + return [self getDataStream:nil]; +} + +- (NSData *)getData:(NSError **)error { + return [[self getDataInBackground] waitForResult:error]; +} + +- (NSInputStream *)getDataStream:(NSError **)error { + return [[self getDataStreamInBackground] waitForResult:error]; +} + +- (BFTask *)getDataInBackground { + return [self _getDataAsyncWithProgressBlock:nil]; +} + +- (BFTask *)getDataInBackgroundWithProgressBlock:(PFProgressBlock)progressBlock { + return [self _getDataAsyncWithProgressBlock:progressBlock]; +} + +- (BFTask *)getDataStreamInBackground { + return [self _getDataStreamAsyncWithProgressBlock:nil]; +} + +- (BFTask *)getDataStreamInBackgroundWithProgressBlock:(PFProgressBlock)progressBlock { + return [self _getDataStreamAsyncWithProgressBlock:progressBlock]; +} + +- (BFTask *)getDataDownloadStreamInBackground { + return [self getDataDownloadStreamInBackgroundWithProgressBlock:nil]; +} + +- (BFTask *)getDataDownloadStreamInBackgroundWithProgressBlock:(PFProgressBlock)progressBlock { + return [self _downloadStreamAsyncWithProgressBlock:progressBlock]; +} + +- (void)getDataInBackgroundWithBlock:(PFDataResultBlock)block { + [self getDataInBackgroundWithBlock:block progressBlock:nil]; +} + +- (void)getDataStreamInBackgroundWithBlock:(PFDataStreamResultBlock)block { + [self getDataStreamInBackgroundWithBlock:block progressBlock:nil]; +} + +- (void)getDataInBackgroundWithBlock:(PFDataResultBlock)resultBlock + progressBlock:(PFProgressBlock)progressBlock { + [[self _getDataAsyncWithProgressBlock:progressBlock] thenCallBackOnMainThreadAsync:resultBlock]; +} + +- (void)getDataStreamInBackgroundWithBlock:(PFDataStreamResultBlock)resultBlock + progressBlock:(PFProgressBlock)progressBlock { + [[self _getDataStreamAsyncWithProgressBlock:progressBlock] thenCallBackOnMainThreadAsync:resultBlock]; +} + +- (void)getDataInBackgroundWithTarget:(id)target selector:(SEL)selector { + [self getDataInBackgroundWithBlock:^(NSData *data, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:data object:error]; + }]; +} + +- (BFTask PF_GENERIC(NSString *) *)getFilePathInBackground { + return [self getFilePathInBackgroundWithProgressBlock:nil]; +} + +- (BFTask PF_GENERIC(NSString *)*)getFilePathInBackgroundWithProgressBlock:(PFProgressBlock)progressBlock { + return [[self _downloadAsyncWithProgressBlock:progressBlock] continueWithSuccessBlock:^id(BFTask *task) { + if (self.dirty) { + return self.stagedFilePath; + } + return [[[self class] fileController] cachedFilePathForFileState:self.state]; + }]; +} + +- (void)getFilePathInBackgroundWithBlock:(PF_NULLABLE PFFilePathResultBlock)block { + [[self getFilePathInBackground] thenCallBackOnMainThreadAsync:block]; +} + +- (void)getFilePathInBackgroundWithBlock:(PF_NULLABLE PFFilePathResultBlock)block + progressBlock:(PF_NULLABLE PFProgressBlock)progressBlock { + [[self getFilePathInBackgroundWithProgressBlock:progressBlock] thenCallBackOnMainThreadAsync:block]; +} + +#pragma mark Interrupting + +- (void)cancel { + [self _performDataAccessBlock:^{ + [self.cancellationTokenSource cancel]; + self.cancellationTokenSource = nil; + }]; +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + +#pragma mark Init + +- (instancetype)initWithName:(NSString *)name urlString:(NSString *)url mimeType:(NSString *)mimeType { + self = [super init]; + if (!self) return nil; + + _taskQueue = [[PFAsyncTaskQueue alloc] init]; + _synchronizationQueue = PFThreadsafetyCreateQueueForObject(self); + + _state = [[PFFileState alloc] initWithName:name urlString:url mimeType:mimeType]; + + return self; +} + ++ (instancetype)fileWithName:(NSString *)name url:(NSString *)url { + return [[self alloc] initWithName:name urlString:url mimeType:nil]; +} + +#pragma mark Upload + +- (BFTask *)_uploadAsyncWithProgressBlock:(PFProgressBlock)progressBlock { + @weakify(self); + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id { + @strongify(self); + + __block BFCancellationToken *cancellationToken = nil; + [self _performDataAccessBlock:^{ + if (!self.cancellationTokenSource || self.cancellationTokenSource.cancellationRequested) { + self.cancellationTokenSource = [BFCancellationTokenSource cancellationTokenSource]; + } + cancellationToken = self.cancellationTokenSource.token; + }]; + + return [[[PFUser _getCurrentUserSessionTokenAsync] continueWithBlock:^id(BFTask *task) { + NSString *sessionToken = task.result; + return [self.taskQueue enqueue:^id(BFTask *task) { + if (!self.dirty) { + [self _performProgressBlockAsync:progressBlock withProgress:100]; + return [BFTask taskWithResult:nil]; + } + + return [self _uploadFileAsyncWithSessionToken:sessionToken + cancellationToken:cancellationToken + progressBlock:progressBlock]; + }]; + }] continueWithSuccessResult:@YES]; + }]; +} + +- (BFTask *)_uploadFileAsyncWithSessionToken:(NSString *)sessionToken + cancellationToken:(BFCancellationToken *)cancellationToken + progressBlock:(PFProgressBlock)progressBlock { + if (cancellationToken.cancellationRequested) { + return [BFTask cancelledTask]; + } + + PFFileController *controller = [[self class] fileController]; + NSString *sourceFilePath = self.stagedFilePath; + @weakify(self); + return [[[controller uploadFileAsyncWithState:[self _fileState] + sourceFilePath:sourceFilePath + sessionToken:sessionToken + cancellationToken:cancellationToken + progressBlock:progressBlock] continueWithSuccessBlock:^id(BFTask *task) { + @strongify(self); + [self _performDataAccessBlock:^{ + self.state = [task.result copy]; + }]; + return nil; + } cancellationToken:cancellationToken] continueWithBlock:^id(BFTask *task) { + @strongify(self); + [self _performDataAccessBlock:^{ + self.cancellationTokenSource = nil; + }]; + return task; + }]; +} + +#pragma mark Download + +- (BFTask *)_getDataAsyncWithProgressBlock:(PFProgressBlock)progressBlock { + return [[self _downloadAsyncWithProgressBlock:progressBlock] continueWithSuccessBlock:^id(BFTask *task) { + return [self _cachedData]; + }]; +} + +- (BFTask *)_getDataStreamAsyncWithProgressBlock:(PFProgressBlock)progressBlock { + return [[self _downloadAsyncWithProgressBlock:progressBlock] continueWithSuccessBlock:^id(BFTask *task) { + return [self _cachedDataStream]; + }]; +} + +- (BFTask *)_downloadAsyncWithProgressBlock:(PFProgressBlock)progressBlock { + __block BFCancellationToken *cancellationToken = nil; + [self _performDataAccessBlock:^{ + if (!self.cancellationTokenSource || self.cancellationTokenSource.cancellationRequested) { + self.cancellationTokenSource = [BFCancellationTokenSource cancellationTokenSource]; + } + cancellationToken = self.cancellationTokenSource.token; + }]; + + @weakify(self); + return [self.taskQueue enqueue:^id(BFTask *task) { + @strongify(self); + if (self.isDataAvailable) { + [self _performProgressBlockAsync:progressBlock withProgress:100]; + return [BFTask taskWithResult:nil]; + } + + PFFileController *controller = [[self class] fileController]; + return [[controller downloadFileAsyncWithState:[self _fileState] + cancellationToken:cancellationToken + progressBlock:progressBlock] continueWithBlock:^id(BFTask *task) { + [self _performDataAccessBlock:^{ + self.cancellationTokenSource = nil; + }]; + return task; + }]; + }]; +} + +- (BFTask *)_downloadStreamAsyncWithProgressBlock:(PFProgressBlock)progressBlock { + __block BFCancellationToken *cancellationToken = nil; + [self _performDataAccessBlock:^{ + if (!self.cancellationTokenSource || self.cancellationTokenSource.cancellationRequested) { + self.cancellationTokenSource = [BFCancellationTokenSource cancellationTokenSource]; + } + cancellationToken = self.cancellationTokenSource.token; + }]; + + @weakify(self); + return [self.taskQueue enqueue:^id(BFTask *task) { + @strongify(self); + if (self.isDataAvailable) { + [self _performProgressBlockAsync:progressBlock withProgress:100]; + return [self _cachedDataStream]; + } + + PFFileController *controller = [[self class] fileController]; + return [[controller downloadFileStreamAsyncWithState:[self _fileState] + cancellationToken:cancellationToken + progressBlock:progressBlock] continueWithBlock:^id(BFTask *task) { + [self _performDataAccessBlock:^{ + self.cancellationTokenSource = nil; + }]; + return task; + }]; + }]; +} + +#pragma mark Caching + +- (NSString *)_cachedFilePath { + return [[[self class] fileController] cachedFilePathForFileState:self.state]; +} + +- (NSData *)_cachedData { + NSString *filePath = (self.dirty ? self.stagedFilePath : [self _cachedFilePath]); + return [NSData dataWithContentsOfFile:filePath options:NSDataReadingMappedIfSafe error:NULL]; +} + +- (NSInputStream *)_cachedDataStream { + NSString *filePath = (self.dirty ? self.stagedFilePath : [[[self class] fileController] cachedFilePathForFileState:self.state]); + return [NSInputStream inputStreamWithFileAtPath:filePath]; +} + +///-------------------------------------- +#pragma mark - Staging +///-------------------------------------- + +- (BOOL)_stageWithData:(NSData *)data error:(NSError **)error { + __block BOOL result = NO; + [self _performDataAccessBlock:^{ + _stagedFilePath = [[[[self class] fileController].fileStagingController stageFileAsyncWithData:data + name:self.state.name + uniqueId:(uintptr_t)self] + waitForResult:error withMainThreadWarning:NO]; + + result = (_stagedFilePath != nil); + }]; + return result; +} + +- (BOOL)_stageWithPath:(NSString *)path error:(NSError **)error { + __block BOOL result = NO; + [self _performDataAccessBlock:^{ + _stagedFilePath = [[[[self class] fileController].fileStagingController stageFileAsyncAtPath:path + name:self.state.name + uniqueId:(uintptr_t)self] + waitForResult:error withMainThreadWarning:NO]; + + result = (_stagedFilePath != nil); + }]; + return result; +} + +#pragma mark Data Access + +- (NSString *)name { + __block NSString *name = nil; + [self _performDataAccessBlock:^{ + name = self.state.name; + }]; + return name; +} + +- (NSString *)url { + __block NSString *url = nil; + [self _performDataAccessBlock:^{ + url = self.state.secureURLString; + }]; + return url; +} + +- (BOOL)isDirty { + return !self.url; +} + +- (BOOL)isDataAvailable { + __block BOOL available = NO; + [self _performDataAccessBlock:^{ + available = self.dirty || [[NSFileManager defaultManager] fileExistsAtPath:[self _cachedFilePath]]; + }]; + return available; +} + +- (void)_performDataAccessBlock:(dispatch_block_t)block { + PFThreadsafetySafeDispatchSync(_synchronizationQueue, block); +} + +- (PFFileState *)_fileState { + __block PFFileState *state = nil; + [self _performDataAccessBlock:^{ + state = self.state; + }]; + return state; +} + +#pragma mark Progress + +- (void)_performProgressBlockAsync:(PFProgressBlock)block withProgress:(int)progress { + if (!block) { + return; + } + + dispatch_async(dispatch_get_main_queue(), ^{ + block(progress); + }); +} + +///-------------------------------------- +#pragma mark - FileController +///-------------------------------------- + ++ (PFFileController *)fileController { + return [Parse _currentManager].coreManager.fileController; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFGeoPoint.h b/Unit-2-Journal/Pods/Parse/Parse/PFGeoPoint.h new file mode 100644 index 0000000..37d3bb0 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFGeoPoint.h @@ -0,0 +1,114 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import +#import + +#import + +PF_ASSUME_NONNULL_BEGIN + +@class PFGeoPoint; + +typedef void(^PFGeoPointResultBlock)(PFGeoPoint *PF_NULLABLE_S geoPoint, NSError *PF_NULLABLE_S error); + +/*! + `PFGeoPoint` may be used to embed a latitude / longitude point as the value for a key in a . + It could be used to perform queries in a geospatial manner using <[PFQuery whereKey:nearGeoPoint:]>. + + Currently, instances of may only have one key associated with a `PFGeoPoint` type. + */ +@interface PFGeoPoint : NSObject + +///-------------------------------------- +/// @name Creating a Geo Point +///-------------------------------------- + +/*! + @abstract Create a PFGeoPoint object. Latitude and longitude are set to `0.0`. + + @returns Returns a new `PFGeoPoint`. + */ ++ (instancetype)geoPoint; + +/*! + @abstract Creates a new `PFGeoPoint` object for the given `CLLocation`, set to the location's coordinates. + + @param location Instace of `CLLocation`, with set latitude and longitude. + + @returns Returns a new PFGeoPoint at specified location. + */ ++ (instancetype)geoPointWithLocation:(PF_NULLABLE CLLocation *)location; + +/*! + @abstract Create a new `PFGeoPoint` object with the specified latitude and longitude. + + @param latitude Latitude of point in degrees. + @param longitude Longitude of point in degrees. + + @returns New point object with specified latitude and longitude. + */ ++ (instancetype)geoPointWithLatitude:(double)latitude longitude:(double)longitude; + +/*! + @abstract Fetches the current device location and executes a block with a new `PFGeoPoint` object. + + @param resultBlock A block which takes the newly created `PFGeoPoint` as an argument. + It should have the following argument signature: `^(PFGeoPoint *geoPoint, NSError *error)` + */ ++ (void)geoPointForCurrentLocationInBackground:(PF_NULLABLE PFGeoPointResultBlock)resultBlock; + +///-------------------------------------- +/// @name Controlling Position +///-------------------------------------- + +/*! + @abstract Latitude of point in degrees. Valid range is from `-90.0` to `90.0`. + */ +@property (nonatomic, assign) double latitude; + +/*! + @abstract Longitude of point in degrees. Valid range is from `-180.0` to `180.0`. + */ +@property (nonatomic, assign) double longitude; + +///-------------------------------------- +/// @name Calculating Distance +///-------------------------------------- + +/*! + @abstract Get distance in radians from this point to specified point. + + @param point `PFGeoPoint` that represents the location of other point. + + @returns Distance in radians between the receiver and `point`. + */ +- (double)distanceInRadiansTo:(PF_NULLABLE PFGeoPoint *)point; + +/*! + @abstract Get distance in miles from this point to specified point. + + @param point `PFGeoPoint` that represents the location of other point. + + @returns Distance in miles between the receiver and `point`. + */ +- (double)distanceInMilesTo:(PF_NULLABLE PFGeoPoint *)point; + +/*! + @abstract Get distance in kilometers from this point to specified point. + + @param point `PFGeoPoint` that represents the location of other point. + + @returns Distance in kilometers between the receiver and `point`. + */ +- (double)distanceInKilometersTo:(PF_NULLABLE PFGeoPoint *)point; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFGeoPoint.m b/Unit-2-Journal/Pods/Parse/Parse/PFGeoPoint.m new file mode 100644 index 0000000..5912bff --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFGeoPoint.m @@ -0,0 +1,193 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFGeoPoint.h" + +#import + +#import "PFAssert.h" +#import "PFCoreManager.h" +#import "PFHash.h" +#import "PFLocationManager.h" +#import "Parse_Private.h" + +const double EARTH_RADIUS_MILES = 3958.8; +const double EARTH_RADIUS_KILOMETERS = 6371.0; + +@implementation PFGeoPoint + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + ++ (instancetype)geoPoint { + return [[self alloc] init]; +} + ++ (instancetype)geoPointWithLocation:(CLLocation *)location { + return [self geoPointWithLatitude:location.coordinate.latitude + longitude:location.coordinate.longitude]; +} + ++ (instancetype)geoPointWithLatitude:(double)latitude longitude:(double)longitude { + PFGeoPoint *gpt = [self geoPoint]; + gpt.latitude = latitude; + gpt.longitude = longitude; + return gpt; +} + ++ (void)geoPointForCurrentLocationInBackground:(PFGeoPointResultBlock)resultBlock { + if (!resultBlock) { + return; + } + + void(^locationHandler)(CLLocation *, NSError *) = ^(CLLocation *location, NSError *error) { + PFGeoPoint *newGeoPoint = [PFGeoPoint geoPointWithLocation:location]; + resultBlock(newGeoPoint, error); + }; + [[Parse _currentManager].coreManager.locationManager addBlockForCurrentLocation:locationHandler]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (void)setLatitude:(double)latitude { + PFParameterAssert(latitude >= -90.0 && latitude <= 90.0, + @"`latitude` is out of range [-90.0, 90.0]: %f", latitude); + _latitude = latitude; +} + +- (void)setLongitude:(double)longitude { + PFParameterAssert(longitude >= -180.0 && longitude <= 180.0, + @"`longitude` is out of range [-180.0, 180.0]: %f", longitude); + _longitude = longitude; +} + +- (double)distanceInRadiansTo:(PFGeoPoint *)point { + double d2r = M_PI / 180.0; // radian conversion factor + double lat1rad = self.latitude * d2r; + double long1rad = self.longitude * d2r; + double lat2rad = [point latitude] * d2r; + double long2rad = [point longitude] * d2r; + double deltaLat = lat1rad - lat2rad; + double deltaLong = long1rad - long2rad; + double sinDeltaLatDiv2 = sin(deltaLat / 2.); + double sinDeltaLongDiv2 = sin(deltaLong / 2.); + // Square of half the straight line chord distance between both points. [0.0, 1.0] + double a = sinDeltaLatDiv2 * sinDeltaLatDiv2 + + cos(lat1rad) * cos(lat2rad) * sinDeltaLongDiv2 * sinDeltaLongDiv2; + a = fmin(1.0, a); + return 2. * asin(sqrt(a)); +} + +- (double)distanceInMilesTo:(PFGeoPoint *)point { + return [self distanceInRadiansTo:point] * EARTH_RADIUS_MILES; +} + +- (double)distanceInKilometersTo:(PFGeoPoint *)point { + return [self distanceInRadiansTo:point] * EARTH_RADIUS_KILOMETERS; +} + +///-------------------------------------- +#pragma mark - Encoding +///-------------------------------------- + +static NSString *const PFGeoPointCodingTypeKey = @"__type"; +static NSString *const PFGeoPointCodingLatitudeKey = @"latitude"; +static NSString *const PFGeoPointCodingLongitudeKey = @"longitude"; + +- (NSDictionary *)encodeIntoDictionary { + return @{ + PFGeoPointCodingTypeKey : @"GeoPoint", + PFGeoPointCodingLatitudeKey : @(self.latitude), + PFGeoPointCodingLongitudeKey : @(self.longitude) + }; +} + ++ (instancetype)geoPointWithDictionary:(NSDictionary *)dictionary { + return [[self alloc] initWithEncodedDictionary:dictionary]; +} + +- (instancetype)initWithEncodedDictionary:(NSDictionary *)dictionary { + self = [self init]; + if (!self) return nil; + + id latObj = dictionary[PFGeoPointCodingLatitudeKey]; + PFParameterAssert([latObj isKindOfClass:[NSNumber class]], @"Invalid latitude type passed: %@", latObj); + + id longObj = dictionary[PFGeoPointCodingLongitudeKey]; + PFParameterAssert([longObj isKindOfClass:[NSNumber class]], @"Invalid longitude type passed: %@", longObj); + + _latitude = [latObj doubleValue]; + _longitude = [longObj doubleValue]; + + return self; +} + +///-------------------------------------- +#pragma mark - NSObject +///-------------------------------------- + +- (BOOL)isEqual:(id)object { + if (self == object) { + return YES; + } + + if (![object isKindOfClass:[PFGeoPoint class]]) { + return NO; + } + + PFGeoPoint *geoPoint = object; + + return (self.latitude == geoPoint.latitude && + self.longitude == geoPoint.longitude); +} + +- (NSUInteger)hash { + return PFDoublePairHash(self.latitude, self.longitude); +} + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, latitude: %f, longitude: %f>", + [self class], + self, + self.latitude, + self.longitude]; +} + +///-------------------------------------- +#pragma mark - NSCopying +///-------------------------------------- + +- (instancetype)copyWithZone:(NSZone *)zone { + PFGeoPoint *geoPoint = [[self class] geoPointWithLatitude:self.latitude longitude:self.longitude]; + return geoPoint; +} + +///-------------------------------------- +#pragma mark - NSCoding +///-------------------------------------- + +- (instancetype)initWithCoder:(NSCoder *)coder { + NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; + dictionary[PFGeoPointCodingTypeKey] = [coder decodeObjectForKey:PFGeoPointCodingTypeKey]; + dictionary[PFGeoPointCodingLatitudeKey] = [coder decodeObjectForKey:PFGeoPointCodingLatitudeKey]; + dictionary[PFGeoPointCodingLongitudeKey] = [coder decodeObjectForKey:PFGeoPointCodingLongitudeKey]; + return [self initWithEncodedDictionary:dictionary]; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + NSDictionary *dictionary = [self encodeIntoDictionary]; + [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + [coder encodeObject:obj forKey:key]; + }]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFInstallation.h b/Unit-2-Journal/Pods/Parse/Parse/PFInstallation.h new file mode 100644 index 0000000..3b1c042 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFInstallation.h @@ -0,0 +1,113 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import +#import +#import + +PF_ASSUME_NONNULL_BEGIN + +/*! + A Parse Framework Installation Object that is a local representation of an + installation persisted to the Parse cloud. This class is a subclass of a + , and retains the same functionality of a PFObject, but also extends + it with installation-specific fields and related immutability and validity + checks. + + A valid `PFInstallation` can only be instantiated via + <[PFInstallation currentInstallation]> because the required identifier fields + are readonly. The and fields are also readonly properties which + are automatically updated to match the device's time zone and application badge + when the `PFInstallation` is saved, thus these fields might not reflect the + latest device state if the installation has not recently been saved. + + `PFInstallation` objects which have a valid and are saved to + the Parse cloud can be used to target push notifications. + */ + +PF_WATCH_UNAVAILABLE @interface PFInstallation : PFObject + +///-------------------------------------- +/// @name Accessing the Current Installation +///-------------------------------------- + +/*! + @abstract Gets the currently-running installation from disk and returns an instance of it. + + @discussion If this installation is not stored on disk, returns a `PFInstallation` + with and fields set to those of the + current installation. + + @result Returns a `PFInstallation` that represents the currently-running installation. + */ ++ (instancetype)currentInstallation; + +///-------------------------------------- +/// @name Installation Properties +///-------------------------------------- + +/*! + @abstract The device type for the `PFInstallation`. + */ +@property (nonatomic, copy, readonly) NSString *deviceType; + +/*! + @abstract The installationId for the `PFInstallation`. + */ +@property (nonatomic, copy, readonly) NSString *installationId; + +/*! + @abstract The device token for the `PFInstallation`. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, copy) NSString *deviceToken; + +/*! + @abstract The badge for the `PFInstallation`. + */ +@property (nonatomic, assign) NSInteger badge; + +/*! + @abstract The name of the time zone for the `PFInstallation`. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, copy, readonly) NSString *timeZone; + +/*! + @abstract The channels for the `PFInstallation`. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, copy) NSArray *channels; + +/*! + @abstract Sets the device token string property from an `NSData`-encoded token. + + @param deviceTokenData A token that identifies the device. + */ +- (void)setDeviceTokenFromData:(PF_NULLABLE NSData *)deviceTokenData; + +///-------------------------------------- +/// @name Querying for Installations +///-------------------------------------- + +/*! + @abstract Creates a for `PFInstallation` objects. + + @discussion Only the following types of queries are allowed for installations: + + - `[query getObjectWithId:]` + - `[query whereKey:@"installationId" equalTo:]` + - `[query whereKey:@"installationId" matchesKey: inQuery:]` + + You can add additional query conditions, but one of the above must appear as a top-level `AND` clause in the query. + */ ++ (PF_NULLABLE PFQuery *)query; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFInstallation.m b/Unit-2-Journal/Pods/Parse/Parse/PFInstallation.m new file mode 100644 index 0000000..2536d64 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFInstallation.m @@ -0,0 +1,342 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFInstallation.h" +#import "PFInstallationPrivate.h" + +#import "BFTask+Private.h" +#import "PFApplication.h" +#import "PFAssert.h" +#import "PFCoreManager.h" +#import "PFCurrentInstallationController.h" +#import "PFFileManager.h" +#import "PFInstallationConstants.h" +#import "PFInstallationController.h" +#import "PFInstallationIdentifierStore.h" +#import "PFInternalUtils.h" +#import "PFObject+Subclass.h" +#import "PFObjectEstimatedData.h" +#import "PFObjectPrivate.h" +#import "PFOfflineStore.h" +#import "PFPushPrivate.h" +#import "PFQueryPrivate.h" +#import "Parse_Private.h" +#import "PFErrorUtilities.h" + +@implementation PFInstallation (Private) + +static NSSet *protectedKeys; + ++ (void)initialize { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + protectedKeys = PF_SET(PFInstallationKeyDeviceType, + PFInstallationKeyInstallationId, + PFInstallationKeyTimeZone, + PFInstallationKeyLocaleIdentifier, + PFInstallationKeyParseVersion, + PFInstallationKeyAppVersion, + PFInstallationKeyAppName, + PFInstallationKeyAppIdentifier); + }); +} + +// Clear device token. Used for testing. +- (void)_clearDeviceToken { + [super removeObjectForKey:PFInstallationKeyDeviceToken]; +} + +- (BFTask PF_GENERIC(PFVoid) *)_validateDeleteAsync { + return [[super _validateDeleteAsync] continueWithSuccessBlock:^id(BFTask PF_GENERIC(PFVoid) *task) { + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorCommandUnavailable + message:@"Installation cannot be deleted"]; + return [BFTask taskWithError:error]; + }]; +} + +// Validates a class name. We override this to only allow the installation class name. ++ (void)_assertValidInstanceClassName:(NSString *)className { + PFParameterAssert([className isEqualToString:[PFInstallation parseClassName]], + @"Cannot initialize a PFInstallation with a custom class name."); +} + +- (BOOL)_isCurrentInstallation { + return (self == [[self class] _currentInstallationController].memoryCachedCurrentInstallation); +} + +- (void)_markAllFieldsDirty { + @synchronized(self.lock) { + NSDictionary *estimatedData = self._estimatedData.dictionaryRepresentation; + [estimatedData enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + [super setObject:obj forKey:key]; + }]; + } +} + +- (NSString *)displayClassName { + return NSStringFromClass([PFInstallation class]); +} + +///-------------------------------------- +#pragma mark - Command Handlers +///-------------------------------------- + +- (BFTask *)handleSaveResultAsync:(NSDictionary *)result { + @weakify(self); + return [[super handleSaveResultAsync:result] continueWithBlock:^id(BFTask *task) { + @strongify(self); + BFTask *saveTask = [[[self class] _currentInstallationController] saveCurrentObjectAsync:self]; + return [saveTask continueWithResult:task]; + }]; +} + +///-------------------------------------- +#pragma mark - Current Installation Controller +///-------------------------------------- + ++ (PFCurrentInstallationController *)_currentInstallationController { + return [Parse _currentManager].coreManager.currentInstallationController; +} + +@end + +@implementation PFInstallation + +@dynamic deviceType; +@dynamic installationId; +@dynamic deviceToken; +@dynamic timeZone; +@dynamic channels; +@dynamic badge; + +///-------------------------------------- +#pragma mark - PFSubclassing +///-------------------------------------- + ++ (NSString *)parseClassName { + return @"_Installation"; +} + ++ (PFQuery *)query { + return [super query]; +} + +///-------------------------------------- +#pragma mark - Current Installation +///-------------------------------------- + ++ (instancetype)currentInstallation { + BFTask *task = [[self _currentInstallationController] getCurrentObjectAsync]; + return [task waitForResult:nil withMainThreadWarning:NO]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (id)objectForKey:(NSString *)key { + if ([key isEqualToString:PFInstallationKeyBadge] && [self _isCurrentInstallation]) { + // Update the data dictionary badge value from the device. + [self _updateBadgeFromDevice]; + } + + return [super objectForKey:key]; +} + +- (void)setObject:(id)object forKey:(NSString *)key { + PFParameterAssert(![protectedKeys containsObject:key], + @"Can't change the '%@' field of a PFInstallation.", key); + + if ([key isEqualToString:PFInstallationKeyBadge]) { + // Set the application badge and update the badge value in the data dictionary. + NSInteger badge = [object integerValue]; + PFParameterAssert(badge >= 0, @"Can't set the badge to less than zero."); + + [PFApplication currentApplication].iconBadgeNumber = badge; + [super setObject:@(badge) forKey:PFInstallationKeyBadge]; + } + + [super setObject:object forKey:key]; +} + +- (void)incrementKey:(NSString *)key byAmount:(NSNumber *)amount { + PFParameterAssert(![key isEqualToString:PFInstallationKeyBadge], + @"Can't atomically increment the 'badge' field of a PFInstallation."); + + [super incrementKey:key byAmount:amount]; +} + +- (void)removeObjectForKey:(NSString *)key { + PFParameterAssert(![protectedKeys containsObject:key], + @"Can't remove the '%@' field of a PFInstallation.", key); + PFParameterAssert(![key isEqualToString:PFInstallationKeyBadge], + @"Can't remove the 'badge' field of a PFInstallation."); + [super removeObjectForKey:key]; +} + +// Internal mutators override the dynamic accessor and use super to avoid +// read-only checks on automatic fields. +- (void)setDeviceType:(NSString *)deviceType { + [self _setObject:deviceType forKey:PFInstallationKeyDeviceType onlyIfDifferent:YES]; +} + +- (void)setInstallationId:(NSString *)installationId { + [self _setObject:installationId forKey:PFInstallationKeyInstallationId onlyIfDifferent:YES]; +} + +- (void)setDeviceToken:(NSString *)deviceToken { + [self _setObject:deviceToken forKey:PFInstallationKeyDeviceToken onlyIfDifferent:YES]; +} + +- (void)setDeviceTokenFromData:(NSData *)deviceTokenData { + [self _setObject:[[PFPush pushInternalUtilClass] convertDeviceTokenToString:deviceTokenData] + forKey:PFInstallationKeyDeviceToken + onlyIfDifferent:YES]; +} + +- (void)setTimeZone:(NSString *)timeZone { + [self _setObject:timeZone forKey:PFInstallationKeyTimeZone onlyIfDifferent:YES]; +} + +- (void)setLocaleIdentifier:(NSString *)localeIdentifier { + [self _setObject:localeIdentifier + forKey:PFInstallationKeyLocaleIdentifier + onlyIfDifferent:YES]; +} + +- (void)setChannels:(NSArray *)channels { + [self _setObject:channels forKey:PFInstallationKeyChannels onlyIfDifferent:YES]; +} + +///-------------------------------------- +#pragma mark - PFObject +///-------------------------------------- + +- (BFTask *)saveAsync:(BFTask *)toAwait { + return [[super saveAsync:toAwait] continueWithBlock:^id(BFTask *task) { + // Do not attempt to resave an object if LDS is enabled, since changing objectId is not allowed. + if ([Parse _currentManager].offlineStoreLoaded) { + return task; + } + + if (task.error.code == kPFErrorObjectNotFound) { + @synchronized (self.lock) { + // Retry the fetch as a save operation because this Installation was deleted on the server. + // We always want [currentInstallation save] to succeed. + self.objectId = nil; + [self _markAllFieldsDirty]; + return [super saveAsync:nil]; + } + } + return task; + }]; +} + +- (BOOL)needsDefaultACL { + return NO; +} + +///-------------------------------------- +#pragma mark - Automatic Info +///-------------------------------------- + +- (void)_objectWillSave { + if ([self _isCurrentInstallation]) { + @synchronized(self.lock) { + [self _updateTimeZoneFromDevice]; + [self _updateBadgeFromDevice]; + [self _updateVersionInfoFromDevice]; + [self _updateLocaleIdentifierFromDevice]; + } + } +} + +- (void)_updateTimeZoneFromDevice { + // Get the system time zone (after clearing the cached value) and update + // the installation if necessary. + NSString *systemTimeZoneName = [PFInternalUtils currentSystemTimeZoneName]; + if (![systemTimeZoneName isEqualToString:self.timeZone]) { + self.timeZone = systemTimeZoneName; + } +} + +- (void)_updateBadgeFromDevice { + // Get the application icon and update the installation if necessary. + NSNumber *applicationBadge = @([PFApplication currentApplication].iconBadgeNumber); + NSNumber *installationBadge = [super objectForKey:PFInstallationKeyBadge]; + if (installationBadge == nil || ![applicationBadge isEqualToNumber:installationBadge]) { + [super setObject:applicationBadge forKey:PFInstallationKeyBadge]; + } +} + +- (void)_updateVersionInfoFromDevice { + NSDictionary *appInfo = [[NSBundle mainBundle] infoDictionary]; + NSString *appName = appInfo[(__bridge NSString *)kCFBundleNameKey]; + NSString *appVersion = appInfo[(__bridge NSString *)kCFBundleVersionKey]; + NSString *appIdentifier = appInfo[(__bridge NSString *)kCFBundleIdentifierKey]; + // It's possible that the app was created without an info.plist and we just + // cannot get the data we need. + // Note: it's important to make the possibly nil string the message receptor for + // nil propegation instead of a BAD_ACCESS + if (appName && ![self[PFInstallationKeyAppName] isEqualToString:appName]) { + [super setObject:appName forKey:PFInstallationKeyAppName]; + } + if (appVersion && ![self[PFInstallationKeyAppVersion] isEqualToString:appVersion]) { + [super setObject:appVersion forKey:PFInstallationKeyAppVersion]; + } + if (appIdentifier && ![self[PFInstallationKeyAppIdentifier] isEqualToString:appIdentifier]) { + [super setObject:appIdentifier forKey:PFInstallationKeyAppIdentifier]; + } + if (![self[PFInstallationKeyParseVersion] isEqualToString:PARSE_VERSION]) { + [super setObject:PARSE_VERSION forKey:PFInstallationKeyParseVersion]; + } +} + +/*! + @abstract Save localeIdentifier in the following format: [language code]-[COUNTRY CODE]. + + @discussion The language codes are two-letter lowercase ISO language codes (such as "en") as defined by + ISO 639-1. + The country codes are two-letter uppercase ISO country codes (such as "US") as defined by + ISO 3166-1. + + Many iOS locale identifiers don't contain the country code -> inconsistencies with Android/Windows Phone. + */ +- (void)_updateLocaleIdentifierFromDevice { + NSLocale *currentLocale = [NSLocale currentLocale]; + NSString *language = [currentLocale objectForKey:NSLocaleLanguageCode]; + NSString *countryCode = [currentLocale objectForKey:NSLocaleCountryCode]; + + if (language.length == 0) { + return; + } + + NSString *localeIdentifier = nil; + if (countryCode.length > 0) { + localeIdentifier = [NSString stringWithFormat:@"%@-%@", language, countryCode]; + } else { + localeIdentifier = language; + } + + NSString *currentLocaleIdentifier = self[PFInstallationKeyLocaleIdentifier]; + if (localeIdentifier.length > 0 && ![localeIdentifier isEqualToString:currentLocaleIdentifier]) { + // Call into super to avoid checking on protected keys. + [super setObject:localeIdentifier forKey:PFInstallationKeyLocaleIdentifier]; + } +} + +///-------------------------------------- +#pragma mark - Data Source +///-------------------------------------- + ++ (id)objectController { + return [Parse _currentManager].coreManager.installationController; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFNetworkActivityIndicatorManager.h b/Unit-2-Journal/Pods/Parse/Parse/PFNetworkActivityIndicatorManager.h new file mode 100644 index 0000000..d5b376a --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFNetworkActivityIndicatorManager.h @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import +#import + +#import + +PF_ASSUME_NONNULL_BEGIN + +/*! + `PFNetworkActivityIndicatorManager` manages the state of the network activity indicator in the status bar. + When enabled, it will start managing the network activity indicator in the status bar, + according to the network operations that are performed by Parse SDK. + + The number of active requests is incremented or decremented like a stack or a semaphore, + the activity indicator will animate, as long as the number is greater than zero. + */ +@interface PFNetworkActivityIndicatorManager : NSObject + +/*! + A Boolean value indicating whether the manager is enabled. + If `YES` - the manager will start managing the status bar network activity indicator, + according to the network operations that are performed by Parse SDK. + The default value is `YES`. + */ +@property (nonatomic, assign, getter = isEnabled) BOOL enabled; + +/*! + A Boolean value indicating whether the network activity indicator is currently displayed in the status bar. + */ +@property (nonatomic, assign, readonly, getter = isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible; + +/*! + The value that indicates current network activities count. + */ +@property (nonatomic, assign, readonly) NSUInteger networkActivityCount; + +/*! + @abstract Returns the shared network activity indicator manager object for the system. + + @returns The systemwide network activity indicator manager. + */ ++ (instancetype)sharedManager; + +/*! + @abstract Increments the number of active network requests. + + @discussion If this number was zero before incrementing, + this will start animating network activity indicator in the status bar. + */ +- (void)incrementActivityCount; + +/*! + @abstract Decrements the number of active network requests. + + @discussion If this number becomes zero after decrementing, + this will stop animating network activity indicator in the status bar. + */ +- (void)decrementActivityCount; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFNetworkActivityIndicatorManager.m b/Unit-2-Journal/Pods/Parse/Parse/PFNetworkActivityIndicatorManager.m new file mode 100644 index 0000000..c8d9e6a --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFNetworkActivityIndicatorManager.m @@ -0,0 +1,165 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFNetworkActivityIndicatorManager.h" + +#import + +#import "PFApplication.h" +#import "PFCommandRunningConstants.h" + +static NSTimeInterval const PFNetworkActivityIndicatorVisibilityDelay = 0.17; + +@interface PFNetworkActivityIndicatorManager () { + dispatch_queue_t _networkActivityAccessQueue; +} + +@property (nonatomic, assign, readwrite) NSUInteger networkActivityCount; + +@property (nonatomic, strong) NSTimer *activityIndicatorVisibilityTimer; + +@end + +@implementation PFNetworkActivityIndicatorManager + +@synthesize enabled = _enabled; +@synthesize networkActivityCount = _networkActivityCount; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + ++ (instancetype)sharedManager { + static PFNetworkActivityIndicatorManager *manager; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + manager = [[self alloc] init]; + manager.enabled = YES; + }); + return manager; +} + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _networkActivityAccessQueue = dispatch_queue_create("com.parse.networkActivityIndicatorManager", + DISPATCH_QUEUE_SERIAL); + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(_handleWillSendURLRequestNotification:) + name:PFNetworkWillSendURLRequestNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(_handleDidReceiveURLResponseNotification:) + name:PFNetworkDidReceiveURLResponseNotification + object:nil]; + + return self; +} + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [_activityIndicatorVisibilityTimer invalidate]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (void)setNetworkActivityCount:(NSUInteger)networkActivityCount { + dispatch_sync(_networkActivityAccessQueue, ^{ + _networkActivityCount = networkActivityCount; + }); + dispatch_async(dispatch_get_main_queue(), ^{ + [self _updateNetworkActivityIndicatorVisibilityAfterDelay]; + }); +} + +- (NSUInteger)networkActivityCount { + __block NSUInteger count = 0; + dispatch_sync(_networkActivityAccessQueue, ^{ + count = _networkActivityCount; + }); + return count; +} + +- (BOOL)isNetworkActivityIndicatorVisible { + return self.networkActivityCount > 0; +} + +///-------------------------------------- +#pragma mark - Counts +///-------------------------------------- + +- (void)incrementActivityCount { + dispatch_sync(_networkActivityAccessQueue, ^{ + _networkActivityCount++; + }); + dispatch_async(dispatch_get_main_queue(), ^{ + [self _updateNetworkActivityIndicatorVisibilityAfterDelay]; + }); +} + +- (void)decrementActivityCount { + dispatch_sync(_networkActivityAccessQueue, ^{ + _networkActivityCount = MAX(_networkActivityCount - 1, 0); + }); + dispatch_async(dispatch_get_main_queue(), ^{ + [self _updateNetworkActivityIndicatorVisibilityAfterDelay]; + }); +} + +///-------------------------------------- +#pragma mark - Network Activity Indicator +///-------------------------------------- + +- (void)_updateNetworkActivityIndicatorVisibilityAfterDelay { + if (self.enabled) { + // Delay hiding of activity indicator for a short interval, to avoid flickering + if (![self isNetworkActivityIndicatorVisible]) { + [self.activityIndicatorVisibilityTimer invalidate]; + + NSTimeInterval timeInterval = PFNetworkActivityIndicatorVisibilityDelay; + SEL selector = @selector(_updateNetworkActivityIndicatorVisibility); + self.activityIndicatorVisibilityTimer = [NSTimer timerWithTimeInterval:timeInterval + target:self + selector:selector + userInfo:nil + repeats:NO]; + [[NSRunLoop mainRunLoop] addTimer:self.activityIndicatorVisibilityTimer + forMode:NSRunLoopCommonModes]; + } else { + [self performSelectorOnMainThread:@selector(_updateNetworkActivityIndicatorVisibility) + withObject:nil + waitUntilDone:NO + modes:@[ NSRunLoopCommonModes ]]; + } + } +} + +- (void)_updateNetworkActivityIndicatorVisibility NS_EXTENSION_UNAVAILABLE_IOS("") { + if (![PFApplication currentApplication].extensionEnvironment) { + [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:self.networkActivityIndicatorVisible]; + } +} + +///-------------------------------------- +#pragma mark - Command Running +///-------------------------------------- + +- (void)_handleWillSendURLRequestNotification:(NSNotification *)notification { + [self incrementActivityCount]; +} + +- (void)_handleDidReceiveURLResponseNotification:(NSNotification *)notification { + [self decrementActivityCount]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFNullability.h b/Unit-2-Journal/Pods/Parse/Parse/PFNullability.h new file mode 100644 index 0000000..8c1b958 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFNullability.h @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#ifndef Parse_PFNullability_h +#define Parse_PFNullability_h + +///-------------------------------------- +/// @name Nullability Annotation Support +///-------------------------------------- + +#if __has_feature(nullability) +# define PF_NONNULL nonnull +# define PF_NONNULL_S __nonnull +# define PF_NULLABLE nullable +# define PF_NULLABLE_S __nullable +# define PF_NULLABLE_PROPERTY nullable, +#else +# define PF_NONNULL +# define PF_NONNULL_S +# define PF_NULLABLE +# define PF_NULLABLE_S +# define PF_NULLABLE_PROPERTY +#endif + +#if __has_feature(assume_nonnull) +# ifdef NS_ASSUME_NONNULL_BEGIN +# define PF_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN +# else +# define PF_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin") +# endif +# ifdef NS_ASSUME_NONNULL_END +# define PF_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END +# else +# define PF_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end") +# endif +#else +# define PF_ASSUME_NONNULL_BEGIN +# define PF_ASSUME_NONNULL_END +#endif + +#endif diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFObject+Subclass.h b/Unit-2-Journal/Pods/Parse/Parse/PFObject+Subclass.h new file mode 100644 index 0000000..585d5c1 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFObject+Subclass.h @@ -0,0 +1,125 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import +#import + +@class PFQuery PF_GENERIC(PFGenericObject : PFObject *); + +PF_ASSUME_NONNULL_BEGIN + +/*! + ### Subclassing Notes + + Developers can subclass `PFObject` for a more native object-oriented class structure. + Strongly-typed subclasses of `PFObject` must conform to the protocol + and must call before <[Parse setApplicationId:clientKey:]> is called. + After this it will be returned by and other `PFObject` factories. + + All methods in except for <[PFSubclassing parseClassName]> + are already implemented in the `PFObject+Subclass` category. + + Including `PFObject+Subclass.h` in your implementation file provides these implementations automatically. + + Subclasses support simpler initializers, query syntax, and dynamic synthesizers. + The following shows an example subclass: + + \@interface MYGame : PFObject + + // Accessing this property is the same as objectForKey:@"title" + @property (nonatomic, copy) NSString *title; + + + (NSString *)parseClassName; + + @end + + + @implementation MYGame + + @dynamic title; + + + (NSString *)parseClassName { + return @"Game"; + } + + @end + + + MYGame *game = [[MYGame alloc] init]; + game.title = @"Bughouse"; + [game saveInBackground]; + */ +@interface PFObject (Subclass) + +///-------------------------------------- +/// @name Methods for Subclasses +///-------------------------------------- + +/*! + @abstract Creates an instance of the registered subclass with this class's . + + @discussion This helps a subclass ensure that it can be subclassed itself. + For example, `[PFUser object]` will return a `MyUser` object if `MyUser` is a registered subclass of `PFUser`. + For this reason, `[MyClass object]` is preferred to `[[MyClass alloc] init]`. + This method can only be called on subclasses which conform to `PFSubclassing`. + A default implementation is provided by `PFObject` which should always be sufficient. + */ ++ (instancetype)object; + +/*! + @abstract Creates a reference to an existing `PFObject` for use in creating associations between `PFObjects`. + + @discussion Calling on this object will return `NO` until or has been called. + This method can only be called on subclasses which conform to . + A default implementation is provided by `PFObject` which should always be sufficient. + No network request will be made. + + @param objectId The object id for the referenced object. + + @returns An instance of `PFObject` without data. + */ ++ (instancetype)objectWithoutDataWithObjectId:(PF_NULLABLE NSString *)objectId; + +/*! + @abstract Registers an Objective-C class for Parse to use for representing a given Parse class. + + @discussion Once this is called on a `PFObject` subclass, any `PFObject` Parse creates with a class name + that matches `[self parseClassName]` will be an instance of subclass. + This method can only be called on subclasses which conform to . + A default implementation is provided by `PFObject` which should always be sufficient. + */ ++ (void)registerSubclass; + +/*! + @abstract Returns a query for objects of type . + + @discussion This method can only be called on subclasses which conform to . + A default implementation is provided by which should always be sufficient. + */ ++ (PF_NULLABLE PFQuery *)query; + +/*! + @abstract Returns a query for objects of type with a given predicate. + + @discussion A default implementation is provided by which should always be sufficient. + @warning This method can only be called on subclasses which conform to . + + @param predicate The predicate to create conditions from. + + @returns An instance of . + + @see [PFQuery queryWithClassName:predicate:] + */ ++ (PF_NULLABLE PFQuery *)queryWithPredicate:(PF_NULLABLE NSPredicate *)predicate; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFObject.h b/Unit-2-Journal/Pods/Parse/Parse/PFObject.h new file mode 100644 index 0000000..aeb51c7 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFObject.h @@ -0,0 +1,1429 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import +#import + +PF_ASSUME_NONNULL_BEGIN + +@protocol PFSubclassing; +@class PFRelation; + +/*! + The name of the default pin that for PFObject local data store. + */ +extern NSString *const PFObjectDefaultPin; + +/*! + The `PFObject` class is a local representation of data persisted to the Parse cloud. + This is the main class that is used to interact with objects in your app. + */ +NS_REQUIRES_PROPERTY_DEFINITIONS +@interface PFObject : NSObject { + BOOL dirty; + + // An array of NSDictionary of NSString -> PFFieldOperation. + // Each dictionary has a subset of the object's keys as keys, and the + // changes to the value for that key as its value. + // There is always at least one dictionary of pending operations. + // Every time a save is started, a new dictionary is added to the end. + // Whenever a save completes, the new data is put into fetchedData, and + // a dictionary is removed from the start. + NSMutableArray *PF_NULLABLE_S operationSetQueue; +} + +///-------------------------------------- +/// @name Creating a PFObject +///-------------------------------------- + +/*! + @abstract Initializes a new empty `PFObject` instance with a class name. + + @param newClassName A class name can be any alphanumeric string that begins with a letter. + It represents an object in your app, like a 'User' or a 'Document'. + + @returns Returns the object that is instantiated with the given class name. + */ +- (instancetype)initWithClassName:(NSString *)newClassName; + +/*! + @abstract Creates a new PFObject with a class name. + + @param className A class name can be any alphanumeric string that begins with a letter. + It represents an object in your app, like a 'User' or a 'Document'. + + @returns Returns the object that is instantiated with the given class name. + */ ++ (instancetype)objectWithClassName:(NSString *)className; + +/*! + @abstract Creates a new `PFObject` with a class name, initialized with data + constructed from the specified set of objects and keys. + + @param className The object's class. + @param dictionary An `NSDictionary` of keys and objects to set on the new `PFObject`. + + @returns A PFObject with the given class name and set with the given data. + */ ++ (instancetype)objectWithClassName:(NSString *)className dictionary:(PF_NULLABLE NSDictionary PF_GENERIC(NSString *, id)*)dictionary; + +/*! + @abstract Creates a reference to an existing PFObject for use in creating associations between PFObjects. + + @discussion Calling on this object will return `NO` until has been called. + No network request will be made. + + @param className The object's class. + @param objectId The object id for the referenced object. + + @returns A `PFObject` instance without data. + */ ++ (instancetype)objectWithoutDataWithClassName:(NSString *)className objectId:(PF_NULLABLE NSString *)objectId; + +///-------------------------------------- +/// @name Managing Object Properties +///-------------------------------------- + +/*! + @abstract The class name of the object. + */ +@property (strong, readonly) NSString *parseClassName; + +/*! + @abstract The id of the object. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, strong) NSString *objectId; + +/*! + @abstract When the object was last updated. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, strong, readonly) NSDate *updatedAt; + +/*! + @abstract When the object was created. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, strong, readonly) NSDate *createdAt; + +/*! + @abstract The ACL for this object. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, strong) PFACL *ACL; + +/*! + @abstract Returns an array of the keys contained in this object. + + @discussion This does not include `createdAt`, `updatedAt`, `authData`, or `objectId`. + It does include things like username and ACL. + */ +- (NSArray PF_GENERIC(NSString *)*)allKeys; + +///-------------------------------------- +/// @name Accessors +///-------------------------------------- + +/*! + @abstract Returns the value associated with a given key. + + @param key The key for which to return the corresponding value. + */ +- (PF_NULLABLE_S id)objectForKey:(NSString *)key; + +/*! + @abstract Sets the object associated with a given key. + + @param object The object for `key`. A strong reference to the object is maintained by PFObject. + Raises an `NSInvalidArgumentException` if `object` is `nil`. + If you need to represent a `nil` value - use `NSNull`. + @param key The key for `object`. + Raises an `NSInvalidArgumentException` if `key` is `nil`. + + @see setObject:forKeyedSubscript: + */ +- (void)setObject:(id)object forKey:(NSString *)key; + +/*! + @abstract Unsets a key on the object. + + @param key The key. + */ +- (void)removeObjectForKey:(NSString *)key; + +/*! + @abstract Returns the value associated with a given key. + + @discussion This method enables usage of literal syntax on `PFObject`. + E.g. `NSString *value = object[@"key"];` + + @param key The key for which to return the corresponding value. + + @see objectForKey: + */ +- (PF_NULLABLE_S id)objectForKeyedSubscript:(NSString *)key; + +/*! + @abstract Returns the value associated with a given key. + + @discussion This method enables usage of literal syntax on `PFObject`. + E.g. `object[@"key"] = @"value";` + + @param object The object for `key`. A strong reference to the object is maintained by PFObject. + Raises an `NSInvalidArgumentException` if `object` is `nil`. + If you need to represent a `nil` value - use `NSNull`. + @param key The key for `object`. + Raises an `NSInvalidArgumentException` if `key` is `nil`. + + @see setObject:forKey: + */ +- (void)setObject:(id)object forKeyedSubscript:(NSString *)key; + +/*! + @abstract Returns the relation object associated with the given key. + + @param key The key that the relation is associated with. + */ +- (PFRelation *)relationForKey:(NSString *)key; + +/*! + @abstract Returns the relation object associated with the given key. + + @param key The key that the relation is associated with. + + @deprecated Please use `[PFObject relationForKey:]` instead. + */ +- (PFRelation *)relationforKey:(NSString *)key PARSE_DEPRECATED("Please use -relationForKey: instead."); + +/*! + @abstract Clears any changes to this object made since the last call to save and sets it back to the server state. + */ +- (void)revert; + +/*! + @abstract Clears any changes to this object's key that were done after last successful save and sets it back to the + server state. + + @param key The key to revert changes for. + */ +- (void)revertObjectForKey:(NSString *)key; + +///-------------------------------------- +/// @name Array Accessors +///-------------------------------------- + +/*! + @abstract Adds an object to the end of the array associated with a given key. + + @param object The object to add. + @param key The key. + */ +- (void)addObject:(id)object forKey:(NSString *)key; + +/*! + @abstract Adds the objects contained in another array to the end of the array associated with a given key. + + @param objects The array of objects to add. + @param key The key. + */ +- (void)addObjectsFromArray:(NSArray *)objects forKey:(NSString *)key; + +/*! + @abstract Adds an object to the array associated with a given key, only if it is not already present in the array. + + @discussion The position of the insert is not guaranteed. + + @param object The object to add. + @param key The key. + */ +- (void)addUniqueObject:(id)object forKey:(NSString *)key; + +/*! + @abstract Adds the objects contained in another array to the array associated with a given key, + only adding elements which are not already present in the array. + + @dicsussion The position of the insert is not guaranteed. + + @param objects The array of objects to add. + @param key The key. + */ +- (void)addUniqueObjectsFromArray:(NSArray *)objects forKey:(NSString *)key; + +/*! + @abstract Removes all occurrences of an object from the array associated with a given key. + + @param object The object to remove. + @param key The key. + */ +- (void)removeObject:(id)object forKey:(NSString *)key; + +/*! + @abstract Removes all occurrences of the objects contained in another array from the array associated with a given key. + + @param objects The array of objects to remove. + @param key The key. + */ +- (void)removeObjectsInArray:(NSArray *)objects forKey:(NSString *)key; + +///-------------------------------------- +/// @name Increment +///-------------------------------------- + +/*! + @abstract Increments the given key by `1`. + + @param key The key. + */ +- (void)incrementKey:(NSString *)key; + +/*! + @abstract Increments the given key by a number. + + @param key The key. + @param amount The amount to increment. + */ +- (void)incrementKey:(NSString *)key byAmount:(NSNumber *)amount; + +///-------------------------------------- +/// @name Saving Objects +///-------------------------------------- + +/*! + @abstract *Synchronously* saves the `PFObject`. + + @returns Returns whether the save succeeded. + */ +- (BOOL)save PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* saves the `PFObject` and sets an error if it occurs. + + @param error Pointer to an NSError that will be set if necessary. + + @returns Returns whether the save succeeded. + */ +- (BOOL)save:(NSError **)error; + +/*! + @abstract Saves the `PFObject` *asynchronously*. + + @returns The task that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(NSNumber *)*)saveInBackground; + +/*! + @abstract Saves the `PFObject` *asynchronously* and executes the given callback block. + + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + */ +- (void)saveInBackgroundWithBlock:(PF_NULLABLE PFBooleanResultBlock)block; + +/* + @abstract Saves the `PFObject` asynchronously and calls the given callback. + + @param target The object to call selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSNumber *)result error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `[result boolValue]` will tell you whether the call succeeded or not. + */ +- (void)saveInBackgroundWithTarget:(PF_NULLABLE_S id)target selector:(PF_NULLABLE_S SEL)selector; + +/*! + @abstract Saves this object to the server at some unspecified time in the future, + even if Parse is currently inaccessible. + + @discussion Use this when you may not have a solid network connection, and don't need to know when the save completes. + If there is some problem with the object such that it can't be saved, it will be silently discarded. If the save + completes successfully while the object is still in memory, then callback will be called. + + Objects saved with this method will be stored locally in an on-disk cache until they can be delivered to Parse. + They will be sent immediately if possible. Otherwise, they will be sent the next time a network connection is + available. Objects saved this way will persist even after the app is closed, in which case they will be sent the + next time the app is opened. If more than 10MB of data is waiting to be sent, subsequent calls to + will cause old saves to be silently discarded until the connection can be re-established, and the queued objects + can be saved. + + @returns The task that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(NSNumber *)*)saveEventually PF_WATCH_UNAVAILABLE; + +/*! + @abstract Saves this object to the server at some unspecified time in the future, + even if Parse is currently inaccessible. + + @discussion Use this when you may not have a solid network connection, and don't need to know when the save completes. + If there is some problem with the object such that it can't be saved, it will be silently discarded. If the save + completes successfully while the object is still in memory, then callback will be called. + + Objects saved with this method will be stored locally in an on-disk cache until they can be delivered to Parse. + They will be sent immediately if possible. Otherwise, they will be sent the next time a network connection is + available. Objects saved this way will persist even after the app is closed, in which case they will be sent the + next time the app is opened. If more than 10MB of data is waiting to be sent, subsequent calls to + will cause old saves to be silently discarded until the connection can be re-established, and the queued objects + can be saved. + + @param callback The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + */ +- (void)saveEventually:(PF_NULLABLE PFBooleanResultBlock)callback PF_WATCH_UNAVAILABLE; + +///-------------------------------------- +/// @name Saving Many Objects +///-------------------------------------- + +/*! + @abstract Saves a collection of objects *synchronously all at once. + + @param objects The array of objects to save. + + @returns Returns whether the save succeeded. + */ ++ (BOOL)saveAll:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects PF_SWIFT_UNAVAILABLE; + +/*! + @abstract Saves a collection of objects *synchronously* all at once and sets an error if necessary. + + @param objects The array of objects to save. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the save succeeded. + */ ++ (BOOL)saveAll:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects error:(NSError **)error; + +/*! + @abstract Saves a collection of objects all at once *asynchronously*. + + @param objects The array of objects to save. + + @returns The task that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(NSNumber *)*)saveAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects; + +/*! + @abstract Saves a collection of objects all at once `asynchronously` and executes the block when done. + + @param objects The array of objects to save. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + */ ++ (void)saveAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects + block:(PF_NULLABLE PFBooleanResultBlock)block; + +/* + @abstract Saves a collection of objects all at once *asynchronously* and calls a callback when done. + + @param objects The array of objects to save. + @param target The object to call selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSNumber *)number error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `[result boolValue]` will tell you whether the call succeeded or not. + */ ++ (void)saveAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects + target:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector; + +///-------------------------------------- +/// @name Deleting Many Objects +///-------------------------------------- + +/*! + @abstract *Synchronously* deletes a collection of objects all at once. + + @param objects The array of objects to delete. + + @returns Returns whether the delete succeeded. + */ ++ (BOOL)deleteAll:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* deletes a collection of objects all at once and sets an error if necessary. + + @param objects The array of objects to delete. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the delete succeeded. + */ ++ (BOOL)deleteAll:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects error:(NSError **)error; + +/*! + @abstract Deletes a collection of objects all at once asynchronously. + @param objects The array of objects to delete. + @returns The task that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(NSNumber *)*)deleteAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects; + +/*! + @abstract Deletes a collection of objects all at once *asynchronously* and executes the block when done. + + @param objects The array of objects to delete. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + */ ++ (void)deleteAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects + block:(PF_NULLABLE PFBooleanResultBlock)block; + +/* + @abstract Deletes a collection of objects all at once *asynchronously* and calls a callback when done. + + @param objects The array of objects to delete. + @param target The object to call selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSNumber *)number error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `[result boolValue]` will tell you whether the call succeeded or not. + */ ++ (void)deleteAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects + target:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector; + +///-------------------------------------- +/// @name Getting an Object +///-------------------------------------- + +/*! + @abstract Gets whether the `PFObject` has been fetched. + + @returns `YES` if the PFObject is new or has been fetched or refreshed, otherwise `NO`. + */ +- (BOOL)isDataAvailable; + +#if PARSE_IOS_ONLY + +/*! + @abstract Refreshes the PFObject with the current data from the server. + + @deprecated Please use `-fetch` instead. + */ +- (PF_NULLABLE instancetype)refresh PF_SWIFT_UNAVAILABLE PARSE_DEPRECATED("Please use `-fetch` instead."); + +/*! + @abstract *Synchronously* refreshes the `PFObject` with the current data from the server and sets an error if it occurs. + + @param error Pointer to an `NSError` that will be set if necessary. + + @deprecated Please use `-fetch:` instead. + */ +- (PF_NULLABLE instancetype)refresh:(NSError **)error PARSE_DEPRECATED("Please use `-fetch:` instead."); + +/*! + @abstract *Asynchronously* refreshes the `PFObject` and executes the given callback block. + + @param block The block to execute. + The block should have the following argument signature: `^(PFObject *object, NSError *error)` + + @deprecated Please use `-fetchInBackgroundWithBlock:` instead. + */ +- (void)refreshInBackgroundWithBlock:(PF_NULLABLE PFObjectResultBlock)block PARSE_DEPRECATED("Please use `-fetchInBackgroundWithBlock:` instead."); + +/* + @abstract *Asynchronously* refreshes the `PFObject` and calls the given callback. + + @param target The target on which the selector will be called. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(PFObject *)refreshedObject error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `refreshedObject` will be the `PFObject` with the refreshed data. + + @deprecated Please use `fetchInBackgroundWithTarget:selector:` instead. + */ +- (void)refreshInBackgroundWithTarget:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector PARSE_DEPRECATED("Please use `fetchInBackgroundWithTarget:selector:` instead."); + +#endif + +/*! + @abstract *Synchronously* fetches the PFObject with the current data from the server. + */ +- (PF_NULLABLE instancetype)fetch PF_SWIFT_UNAVAILABLE; +/*! + @abstract *Synchronously* fetches the PFObject with the current data from the server and sets an error if it occurs. + + @param error Pointer to an `NSError` that will be set if necessary. + */ +- (PF_NULLABLE instancetype)fetch:(NSError **)error; + +/*! + @abstract *Synchronously* fetches the `PFObject` data from the server if is `NO`. + */ +- (PF_NULLABLE instancetype)fetchIfNeeded PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* fetches the `PFObject` data from the server if is `NO`. + + @param error Pointer to an `NSError` that will be set if necessary. + */ +- (PF_NULLABLE instancetype)fetchIfNeeded:(NSError **)error; + +/*! + @abstract Fetches the `PFObject` *asynchronously* and sets it as a result for the task. + + @returns The task that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(__kindof PFObject *)*)fetchInBackground; + +/*! + @abstract Fetches the PFObject *asynchronously* and executes the given callback block. + + @param block The block to execute. + It should have the following argument signature: `^(PFObject *object, NSError *error)`. + */ +- (void)fetchInBackgroundWithBlock:(PF_NULLABLE PFObjectResultBlock)block; + +/* + @abstract Fetches the `PFObject *asynchronously* and calls the given callback. + + @param target The target on which the selector will be called. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(PFObject *)refreshedObject error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `refreshedObject` will be the `PFObject` with the refreshed data. + */ +- (void)fetchInBackgroundWithTarget:(PF_NULLABLE_S id)target selector:(PF_NULLABLE_S SEL)selector; + +/*! + @abstract Fetches the `PFObject` data *asynchronously* if isDataAvailable is `NO`, + then sets it as a result for the task. + + @returns The task that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(__kindof PFObject *)*)fetchIfNeededInBackground; + +/*! + @abstract Fetches the `PFObject` data *asynchronously* if is `NO`, then calls the callback block. + + @param block The block to execute. + It should have the following argument signature: `^(PFObject *object, NSError *error)`. + */ +- (void)fetchIfNeededInBackgroundWithBlock:(PF_NULLABLE PFObjectResultBlock)block; + +/* + @abstract Fetches the PFObject's data asynchronously if isDataAvailable is false, then calls the callback. + + @param target The target on which the selector will be called. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(PFObject *)fetchedObject error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `refreshedObject` will be the `PFObject` with the refreshed data. + */ +- (void)fetchIfNeededInBackgroundWithTarget:(PF_NULLABLE_S id)target selector:(PF_NULLABLE_S SEL)selector; + +///-------------------------------------- +/// @name Getting Many Objects +///-------------------------------------- + +/*! + @abstract *Synchronously* fetches all of the `PFObject` objects with the current data from the server. + + @param objects The list of objects to fetch. + */ ++ (PF_NULLABLE NSArray PF_GENERIC(__kindof PFObject *)*)fetchAll:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* fetches all of the `PFObject` objects with the current data from the server + and sets an error if it occurs. + + @param objects The list of objects to fetch. + @param error Pointer to an `NSError` that will be set if necessary. + */ ++ (PF_NULLABLE NSArray PF_GENERIC(__kindof PFObject *)*)fetchAll:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects + error:(NSError **)error; + +/*! + @abstract *Synchronously* fetches all of the `PFObject` objects with the current data from the server. + @param objects The list of objects to fetch. + */ ++ (PF_NULLABLE NSArray PF_GENERIC(__kindof PFObject *)*)fetchAllIfNeeded:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* fetches all of the `PFObject` objects with the current data from the server + and sets an error if it occurs. + + @param objects The list of objects to fetch. + @param error Pointer to an `NSError` that will be set if necessary. + */ ++ (PF_NULLABLE NSArray PF_GENERIC(__kindof PFObject *)*)fetchAllIfNeeded:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects + error:(NSError **)error; + +/*! + @abstract Fetches all of the `PFObject` objects with the current data from the server *asynchronously*. + + @param objects The list of objects to fetch. + + @returns The task that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(NSArray<__kindof PFObject *> *)*)fetchAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects; + +/*! + @abstract Fetches all of the `PFObject` objects with the current data from the server *asynchronously* + and calls the given block. + + @param objects The list of objects to fetch. + @param block The block to execute. + It should have the following argument signature: `^(NSArray *objects, NSError *error)`. + */ ++ (void)fetchAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects + block:(PF_NULLABLE PFArrayResultBlock)block; + +/* + @abstract Fetches all of the `PFObject` objects with the current data from the server *asynchronously* + and calls the given callback. + + @param objects The list of objects to fetch. + @param target The target on which the selector will be called. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSArray *)fetchedObjects error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `fetchedObjects` will the array of `PFObject` objects that were fetched. + */ ++ (void)fetchAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects + target:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector; + +/*! + @abstract Fetches all of the `PFObject` objects with the current data from the server *asynchronously*. + + @param objects The list of objects to fetch. + + @returns The task that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(NSArray<__kindof PFObject *> *)*)fetchAllIfNeededInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects; + +/*! + @abstract Fetches all of the PFObjects with the current data from the server *asynchronously* + and calls the given block. + + @param objects The list of objects to fetch. + @param block The block to execute. + It should have the following argument signature: `^(NSArray *objects, NSError *error)`. + */ ++ (void)fetchAllIfNeededInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects + block:(PF_NULLABLE PFArrayResultBlock)block; + +/* + @abstract Fetches all of the PFObjects with the current data from the server *asynchronously* + and calls the given callback. + + @param objects The list of objects to fetch. + @param target The target on which the selector will be called. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSArray *)fetchedObjects error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `fetchedObjects` will the array of `PFObject` objects that were fetched. + */ ++ (void)fetchAllIfNeededInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects + target:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector; + +///-------------------------------------- +/// @name Fetching From Local Datastore +///-------------------------------------- + +/*! + @abstract *Synchronously* loads data from the local datastore into this object, + if it has not been fetched from the server already. + */ +- (PF_NULLABLE instancetype)fetchFromLocalDatastore PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* loads data from the local datastore into this object, if it has not been fetched + from the server already. + + @discussion If the object is not stored in the local datastore, this `error` will be set to + return kPFErrorCacheMiss. + + @param error Pointer to an `NSError` that will be set if necessary. + */ +- (PF_NULLABLE instancetype)fetchFromLocalDatastore:(NSError **)error; + +/*! + @abstract *Asynchronously* loads data from the local datastore into this object, + if it has not been fetched from the server already. + + @returns The task that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(__kindof PFObject *)*)fetchFromLocalDatastoreInBackground; + +/*! + @abstract *Asynchronously* loads data from the local datastore into this object, + if it has not been fetched from the server already. + + @param block The block to execute. + It should have the following argument signature: `^(PFObject *object, NSError *error)`. + */ +- (void)fetchFromLocalDatastoreInBackgroundWithBlock:(PF_NULLABLE PFObjectResultBlock)block; + +///-------------------------------------- +/// @name Deleting an Object +///-------------------------------------- + +/*! + @abstract *Synchronously* deletes the `PFObject`. + + @returns Returns whether the delete succeeded. + */ +- (BOOL)delete PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* deletes the `PFObject` and sets an error if it occurs. + + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the delete succeeded. + */ +- (BOOL)delete:(NSError **)error; + +/*! + @abstract Deletes the `PFObject` *asynchronously*. + + @returns The task that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(NSNumber *)*)deleteInBackground; + +/*! + @abstract Deletes the `PFObject` *asynchronously* and executes the given callback block. + + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + */ +- (void)deleteInBackgroundWithBlock:(PF_NULLABLE PFBooleanResultBlock)block; + +/* + @abstract Deletes the `PFObject` *asynchronously* and calls the given callback. + + @param target The object to call selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSNumber *)result error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `[result boolValue]` will tell you whether the call succeeded or not. + */ +- (void)deleteInBackgroundWithTarget:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector; + +/*! + @abstract Deletes this object from the server at some unspecified time in the future, + even if Parse is currently inaccessible. + + @discussion Use this when you may not have a solid network connection, + and don't need to know when the delete completes. If there is some problem with the object + such that it can't be deleted, the request will be silently discarded. + + Delete instructions made with this method will be stored locally in an on-disk cache until they can be transmitted + to Parse. They will be sent immediately if possible. Otherwise, they will be sent the next time a network connection + is available. Delete requests will persist even after the app is closed, in which case they will be sent the + next time the app is opened. If more than 10MB of or commands are waiting + to be sent, subsequent calls to or will cause old requests to be silently discarded + until the connection can be re-established, and the queued requests can go through. + + @returns The task that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(NSNumber *)*)deleteEventually PF_WATCH_UNAVAILABLE; + +///-------------------------------------- +/// @name Dirtiness +///-------------------------------------- + +/*! + @abstract Gets whether any key-value pair in this object (or its children) + has been added/updated/removed and not saved yet. + + @returns Returns whether this object has been altered and not saved yet. + */ +- (BOOL)isDirty; + +/*! + @abstract Get whether a value associated with a key has been added/updated/removed and not saved yet. + + @param key The key to check for + + @returns Returns whether this key has been altered and not saved yet. + */ +- (BOOL)isDirtyForKey:(NSString *)key; + +///-------------------------------------- +/// @name Pinning +///-------------------------------------- + +/*! + @abstract *Synchronously* stores the object and every object it points to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + <[PFObject objectWithoutDataWithClassName:objectId:]> and then call on it. + + @returns Returns whether the pin succeeded. + + @see unpin: + @see PFObjectDefaultPin + */ +- (BOOL)pin PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* stores the object and every object it points to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + <[PFObject objectWithoutDataWithClassName:objectId:]> and then call on it. + + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the pin succeeded. + + @see unpin: + @see PFObjectDefaultPin + */ +- (BOOL)pin:(NSError **)error; + +/*! + @abstract *Synchronously* stores the object and every object it points to in the local datastore, recursively. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + <[PFObject objectWithoutDataWithClassName:objectId:]> and then call on it. + + @param name The name of the pin. + + @returns Returns whether the pin succeeded. + + @see unpinWithName: + */ +- (BOOL)pinWithName:(NSString *)name PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* stores the object and every object it points to in the local datastore, recursively. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + <[PFObject objectWithoutDataWithClassName:objectId:]> and then call on it. + + @param name The name of the pin. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the pin succeeded. + + @see unpinWithName: + */ +- (BOOL)pinWithName:(NSString *)name + error:(NSError **)error; + +/*! + @abstract *Asynchronously* stores the object and every object it points to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + <[PFObject objectWithoutDataWithClassName:objectId:]> and then call on it. + + @returns The task that encapsulates the work being done. + + @see unpinInBackground + @see PFObjectDefaultPin + */ +- (BFTask PF_GENERIC(NSNumber *)*)pinInBackground; + +/*! + @abstract *Asynchronously* stores the object and every object it points to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + <[PFObject objectWithoutDataWithClassName:objectId:]> and then call on it. + + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + + @see unpinInBackgroundWithBlock: + @see PFObjectDefaultPin + */ +- (void)pinInBackgroundWithBlock:(PF_NULLABLE PFBooleanResultBlock)block; + +/*! + @abstract *Asynchronously* stores the object and every object it points to in the local datastore, recursively. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + <[PFObject objectWithoutDataWithClassName:objectId:]> and then call on it. + + @param name The name of the pin. + + @returns The task that encapsulates the work being done. + + @see unpinInBackgroundWithName: + */ +- (BFTask PF_GENERIC(NSNumber *)*)pinInBackgroundWithName:(NSString *)name; + +/*! + @abstract *Asynchronously* stores the object and every object it points to in the local datastore, recursively. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + <[PFObject objectWithoutDataWithClassName:objectId:]> and then call on it. + + @param name The name of the pin. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + + @see unpinInBackgroundWithName:block: + */ +- (void)pinInBackgroundWithName:(NSString *)name block:(PF_NULLABLE PFBooleanResultBlock)block; + +///-------------------------------------- +/// @name Pinning Many Objects +///-------------------------------------- + +/*! + @abstract *Synchronously* stores the objects and every object they point to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + `[PFObject objectWithoutDataWithClassName:objectId:]` and then call `fetchFromLocalDatastore:` on it. + + @param objects The objects to be pinned. + + @returns Returns whether the pin succeeded. + + @see unpinAll: + @see PFObjectDefaultPin + */ ++ (BOOL)pinAll:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* stores the objects and every object they point to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + `[PFObject objectWithoutDataWithClassName:objectId:]` and then call `fetchFromLocalDatastore:` on it. + + @param objects The objects to be pinned. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the pin succeeded. + + @see unpinAll:error: + @see PFObjectDefaultPin + */ ++ (BOOL)pinAll:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects error:(NSError **)error; + +/*! + @abstract *Synchronously* stores the objects and every object they point to in the local datastore, recursively. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + `[PFObject objectWithoutDataWithClassName:objectId:]` and then call `fetchFromLocalDatastore:` on it. + + @param objects The objects to be pinned. + @param name The name of the pin. + + @returns Returns whether the pin succeeded. + + @see unpinAll:withName: + */ ++ (BOOL)pinAll:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects withName:(NSString *)name PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* stores the objects and every object they point to in the local datastore, recursively. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + `[PFObject objectWithoutDataWithClassName:objectId:]` and then call `fetchFromLocalDatastore:` on it. + + @param objects The objects to be pinned. + @param name The name of the pin. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the pin succeeded. + + @see unpinAll:withName:error: + */ ++ (BOOL)pinAll:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects + withName:(NSString *)name + error:(NSError **)error; + +/*! + @abstract *Asynchronously* stores the objects and every object they point to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + `[PFObject objectWithoutDataWithClassName:objectId:]` and then call `fetchFromLocalDatastore:` on it. + + @param objects The objects to be pinned. + + @returns The task that encapsulates the work being done. + + @see unpinAllInBackground: + @see PFObjectDefaultPin + */ ++ (BFTask PF_GENERIC(NSNumber *)*)pinAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects; + +/*! + @abstract *Asynchronously* stores the objects and every object they point to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + `[PFObject objectWithoutDataWithClassName:objectId:]` and then call `fetchFromLocalDatastore:` on it. + + @param objects The objects to be pinned. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + + @see unpinAllInBackground:block: + @see PFObjectDefaultPin + */ ++ (void)pinAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects block:(PF_NULLABLE PFBooleanResultBlock)block; + +/*! + @abstract *Asynchronously* stores the objects and every object they point to in the local datastore, recursively. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + `[PFObject objectWithoutDataWithClassName:objectId:]` and then call `fetchFromLocalDatastore:` on it. + + @param objects The objects to be pinned. + @param name The name of the pin. + + @returns The task that encapsulates the work being done. + + @see unpinAllInBackground:withName: + */ ++ (BFTask PF_GENERIC(NSNumber *)*)pinAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects withName:(NSString *)name; + +/*! + @abstract *Asynchronously* stores the objects and every object they point to in the local datastore, recursively. + + @discussion If those other objects have not been fetched from Parse, they will not be stored. However, + if they have changed data, all the changes will be retained. To get the objects back later, you can + use a that uses <[PFQuery fromLocalDatastore]>, or you can create an unfetched pointer with + `[PFObject objectWithoutDataWithClassName:objectId:]` and then call `fetchFromLocalDatastore:` on it. + + @param objects The objects to be pinned. + @param name The name of the pin. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + + @see unpinAllInBackground:withName:block: + */ ++ (void)pinAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects + withName:(NSString *)name + block:(PF_NULLABLE PFBooleanResultBlock)block; + +///-------------------------------------- +/// @name Unpinning +///-------------------------------------- + +/*! + @abstract *Synchronously* removes the object and every object it points to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @returns Returns whether the unpin succeeded. + + @see pin: + @see PFObjectDefaultPin + */ +- (BOOL)unpin PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* removes the object and every object it points to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the unpin succeeded. + + @see pin: + @see PFObjectDefaultPin + */ +- (BOOL)unpin:(NSError **)error; + +/*! + @abstract *Synchronously* removes the object and every object it points to in the local datastore, recursively. + + @param name The name of the pin. + + @returns Returns whether the unpin succeeded. + + @see pinWithName: + */ +- (BOOL)unpinWithName:(NSString *)name PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* removes the object and every object it points to in the local datastore, recursively. + + @param name The name of the pin. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the unpin succeeded. + + @see pinWithName:error: + */ +- (BOOL)unpinWithName:(NSString *)name + error:(NSError **)error; + +/*! + @abstract *Asynchronously* removes the object and every object it points to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @returns The task that encapsulates the work being done. + + @see pinInBackground + @see PFObjectDefaultPin + */ +- (BFTask PF_GENERIC(NSNumber *)*)unpinInBackground; + +/*! + @abstract *Asynchronously* removes the object and every object it points to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + + @see pinInBackgroundWithBlock: + @see PFObjectDefaultPin + */ +- (void)unpinInBackgroundWithBlock:(PF_NULLABLE PFBooleanResultBlock)block; + +/*! + @abstract *Asynchronously* removes the object and every object it points to in the local datastore, recursively. + + @param name The name of the pin. + + @returns The task that encapsulates the work being done. + + @see pinInBackgroundWithName: + */ +- (BFTask PF_GENERIC(NSNumber *)*)unpinInBackgroundWithName:(NSString *)name; + +/*! + @abstract *Asynchronously* removes the object and every object it points to in the local datastore, recursively. + + @param name The name of the pin. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + + @see pinInBackgroundWithName:block: + */ +- (void)unpinInBackgroundWithName:(NSString *)name block:(PF_NULLABLE PFBooleanResultBlock)block; + +///-------------------------------------- +/// @name Unpinning Many Objects +///-------------------------------------- + +/*! + @abstract *Synchronously* removes all objects in the local datastore + using a default pin name: `PFObjectDefaultPin`. + + @returns Returns whether the unpin succeeded. + + @see PFObjectDefaultPin + */ ++ (BOOL)unpinAllObjects PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* removes all objects in the local datastore + using a default pin name: `PFObjectDefaultPin`. + + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the unpin succeeded. + + @see PFObjectDefaultPin + */ ++ (BOOL)unpinAllObjects:(NSError **)error; + +/*! + @abstract *Synchronously* removes all objects with the specified pin name. + + @param name The name of the pin. + + @returns Returns whether the unpin succeeded. + */ ++ (BOOL)unpinAllObjectsWithName:(NSString *)name PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* removes all objects with the specified pin name. + + @param name The name of the pin. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the unpin succeeded. + */ ++ (BOOL)unpinAllObjectsWithName:(NSString *)name + error:(NSError **)error; + +/*! + @abstract *Asynchronously* removes all objects in the local datastore + using a default pin name: `PFObjectDefaultPin`. + + @returns The task that encapsulates the work being done. + + @see PFObjectDefaultPin + */ ++ (BFTask PF_GENERIC(NSNumber *)*)unpinAllObjectsInBackground; + +/*! + @abstract *Asynchronously* removes all objects in the local datastore + using a default pin name: `PFObjectDefaultPin`. + + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + + @see PFObjectDefaultPin + */ ++ (void)unpinAllObjectsInBackgroundWithBlock:(PF_NULLABLE PFBooleanResultBlock)block; + +/*! + @abstract *Asynchronously* removes all objects with the specified pin name. + + @param name The name of the pin. + + @returns The task that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(NSNumber *)*)unpinAllObjectsInBackgroundWithName:(NSString *)name; + +/*! + @abstract *Asynchronously* removes all objects with the specified pin name. + + @param name The name of the pin. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + */ ++ (void)unpinAllObjectsInBackgroundWithName:(NSString *)name block:(PF_NULLABLE PFBooleanResultBlock)block; + +/*! + @abstract *Synchronously* removes the objects and every object they point to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @param objects The objects. + + @returns Returns whether the unpin succeeded. + + @see pinAll: + @see PFObjectDefaultPin + */ ++ (BOOL)unpinAll:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* removes the objects and every object they point to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @param objects The objects. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the unpin succeeded. + + @see pinAll:error: + @see PFObjectDefaultPin + */ ++ (BOOL)unpinAll:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects error:(NSError **)error; + +/*! + @abstract *Synchronously* removes the objects and every object they point to in the local datastore, recursively. + + @param objects The objects. + @param name The name of the pin. + + @returns Returns whether the unpin succeeded. + + @see pinAll:withName: + */ ++ (BOOL)unpinAll:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects withName:(NSString *)name PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* removes the objects and every object they point to in the local datastore, recursively. + + @param objects The objects. + @param name The name of the pin. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the unpin succeeded. + + @see pinAll:withName:error: + */ ++ (BOOL)unpinAll:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects + withName:(NSString *)name + error:(NSError **)error; + +/*! + @abstract *Asynchronously* removes the objects and every object they point to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @param objects The objects. + + @returns The task that encapsulates the work being done. + + @see pinAllInBackground: + @see PFObjectDefaultPin + */ ++ (BFTask PF_GENERIC(NSNumber *)*)unpinAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects; + +/*! + @abstract *Asynchronously* removes the objects and every object they point to in the local datastore, recursively, + using a default pin name: `PFObjectDefaultPin`. + + @param objects The objects. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + + @see pinAllInBackground:block: + @see PFObjectDefaultPin + */ ++ (void)unpinAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects block:(PF_NULLABLE PFBooleanResultBlock)block; + +/*! + @abstract *Asynchronously* removes the objects and every object they point to in the local datastore, recursively. + + @param objects The objects. + @param name The name of the pin. + + @returns The task that encapsulates the work being done. + + @see pinAllInBackground:withName: + */ ++ (BFTask PF_GENERIC(NSNumber *)*)unpinAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects withName:(NSString *)name; + +/*! + @abstract *Asynchronously* removes the objects and every object they point to in the local datastore, recursively. + + @param objects The objects. + @param name The name of the pin. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + + @see pinAllInBackground:withName:block: + */ ++ (void)unpinAllInBackground:(PF_NULLABLE NSArray PF_GENERIC(PFObject *)*)objects + withName:(NSString *)name + block:(PF_NULLABLE PFBooleanResultBlock)block; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFObject.m b/Unit-2-Journal/Pods/Parse/Parse/PFObject.m new file mode 100644 index 0000000..b403694 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFObject.m @@ -0,0 +1,2770 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFObject.h" +#import "PFObject+Subclass.h" +#import "PFObjectSubclassingController.h" + +#import +#import +#import + +#import + +#import "BFTask+Private.h" +#import "PFACLPrivate.h" +#import "PFCommandResult.h" +#import "PFCommandRunning.h" +#import "PFConstants.h" +#import "PFCoreManager.h" +#import "PFCurrentUserController.h" +#import "PFDateFormatter.h" +#import "PFDecoder.h" +#import "PFEncoder.h" +#import "PFErrorUtilities.h" +#import "PFEventuallyQueue_Private.h" +#import "PFFileManager.h" +#import "PFFile_Private.h" +#import "PFJSONSerialization.h" +#import "PFLogging.h" +#import "PFMacros.h" +#import "PFMultiProcessFileLockController.h" +#import "PFMutableObjectState.h" +#import "PFObjectBatchController.h" +#import "PFObjectConstants.h" +#import "PFObjectController.h" +#import "PFObjectEstimatedData.h" +#import "PFObjectFileCodingLogic.h" +#import "PFObjectFilePersistenceController.h" +#import "PFObjectLocalIdStore.h" +#import "PFObjectUtilities.h" +#import "PFOfflineStore.h" +#import "PFOperationSet.h" +#import "PFPin.h" +#import "PFPinningObjectStore.h" +#import "PFQueryPrivate.h" +#import "PFRESTObjectBatchCommand.h" +#import "PFRESTObjectCommand.h" +#import "PFRelation.h" +#import "PFRelationPrivate.h" +#import "PFSubclassing.h" +#import "PFTaskQueue.h" +#import "ParseInternal.h" +#import "Parse_Private.h" + +/*! + Checks if an object can be used as a value for PFObject. + */ +static void PFObjectAssertValueIsKindOfValidClass(id object) { + static NSArray *classes; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + classes = @[ [NSDictionary class], [NSArray class], + [NSString class], [NSNumber class], [NSNull class], [NSDate class], [NSData class], + [PFObject class], [PFFile class], [PFACL class], [PFGeoPoint class] ]; + }); + + for (Class class in classes) { + if ([object isKindOfClass:class]) { + return; + } + } + + PFParameterAssert(NO, @"PFObject values may not have class: %@", [object class]); +} + +/*! + Checks if a class is a of container kind to be used as a value for PFObject. + */ +static BOOL PFObjectValueIsKindOfMutableContainerClass(id object) { + static NSArray *classes; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + classes = @[ [NSDictionary class], [NSArray class], [PFACL class], [PFGeoPoint class] ]; + }); + + for (Class class in classes) { + if ([object isKindOfClass:class]) { + return YES; + } + } + + return NO; +} + +@interface PFObject () { + // A lock for accessing any of the internal state of this object. + // Guards basically all of the variables below. + NSObject *lock; + + PFObjectState *_pfinternal_state; + + PFObjectEstimatedData *_estimatedData; + NSMutableSet *_availableKeys; // TODO: (nlutsenko) Maybe decouple this further. + + // TODO (grantland): Derive this off the EventuallyPins as opposed to +/- count. + int _deletingEventually; + + // A dictionary that maps id (objects) => PFJSONCache + NSMutableDictionary *hashedObjectsCache; + + NSString *localId; + + // This queue is used to guarantee the order of *Eventually commands + // and offload all the work to the background thread + PFTaskQueue *_eventuallyTaskQueue; +} + +@property (nonatomic, strong, readwrite) NSString *localId; + +@property (nonatomic, strong, readwrite) PFTaskQueue *taskQueue; + ++ (void)assertSubclassIsRegistered:(Class)subclass; + +@end + +@implementation PFObject (Private) + ++ (void)unregisterSubclass:(Class)subclass { + [[self subclassingController] unregisterSubclass:subclass]; +} + +/*! + Returns the object that should be used to synchronize all internal data access. + */ +- (NSObject *)lock { + return lock; +} + +/*! + Blocks until all outstanding operations have completed. + */ +- (void)waitUntilFinished { + [[self.taskQueue enqueue:^BFTask *(BFTask *toAwait) { + return toAwait; + }] waitForResult:nil]; +} + +/*! + For operations that need to be put into multiple objects queues, like saveAll + and fetchAll, this method does the nasty work. + @param taskStart - A block that is called when all of the objects are ready. + It can return a promise that all of the queues will then wait on. + @param objects - The objects that this operation affects. + @returns - Returns a promise that is fulfilled once the promise returned by the + block is fulfilled. + */ ++ (BFTask *)_enqueue:(BFTask *(^)(BFTask *toAwait))taskStart forObjects:(NSArray *)objects { + // The task that will be complete when all of the child queues indicate they're ready to start. + BFTaskCompletionSource *readyToStart = [BFTaskCompletionSource taskCompletionSource]; + + // First, we need to lock the mutex for the queue for every object. We have to hold this + // from at least when taskStart() is called to when obj.taskQueue enqueue is called, so + // that saves actually get executed in the order they were setup by taskStart(). + // The locks have to be sorted so that we always acquire them in the same order. + // Otherwise, there's some risk of deadlock. + NSMutableArray *mutexes = [NSMutableArray array]; + for (PFObject *obj in objects) { + [mutexes addObject:obj.taskQueue.mutex]; + } + [mutexes sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { + void *lock1 = (__bridge void *)obj1; + void *lock2 = (__bridge void *)obj2; + return lock1 - lock2; + }]; + for (NSObject *lock in mutexes) { + objc_sync_enter(lock); + } + + @try { + // The task produced by taskStart. By running this immediately, we allow everything prior + // to toAwait to run before waiting for all of the queues on all of the objects. + BFTask *fullTask = taskStart(readyToStart.task); + + // Add fullTask to each of the objects' queues. + NSMutableArray *childTasks = [NSMutableArray array]; + for (PFObject *obj in objects) { + [obj.taskQueue enqueue:^BFTask *(BFTask *toAwait) { + [childTasks addObject:toAwait]; + return fullTask; + }]; + } + + // When all of the objects' queues are ready, signal fullTask that it's ready to go on. + [[BFTask taskForCompletionOfAllTasks:childTasks] continueWithBlock:^id(BFTask *task) { + readyToStart.result = nil; + return nil; + }]; + + return fullTask; + + } @finally { + for (NSObject *lock in mutexes) { + objc_sync_exit(lock); + } + } +} + +///-------------------------------------- +#pragma mark - Children helpers +///-------------------------------------- + +/*! + Finds all of the objects that are reachable from child, including child itself, + and adds them to the given mutable array. It traverses arrays and json objects. + @param node An kind object to search for children. + @param dirtyChildren The array to collect the result into. + @param seen The set of all objects that have already been seen. + @param seenNew The set of new objects that have already been seen since the + last existing object. + */ ++ (void)collectDirtyChildren:(id)node + children:(NSMutableSet *)dirtyChildren + files:(NSMutableSet *)dirtyFiles + seen:(NSSet *)seen + seenNew:(NSSet *)seenNew + currentUser:(PFUser *)currentUser { + if ([node isKindOfClass:[NSArray class]]) { + for (id elem in node) { + @autoreleasepool { + [self collectDirtyChildren:elem + children:dirtyChildren + files:dirtyFiles + seen:seen + seenNew:seenNew + currentUser:currentUser]; + } + } + } else if ([node isKindOfClass:[NSDictionary class]]) { + [node enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + [self collectDirtyChildren:obj + children:dirtyChildren + files:dirtyFiles + seen:seen + seenNew:seenNew + currentUser:currentUser]; + }]; + } else if ([node isKindOfClass:[PFACL class]]) { + PFACL *acl = (PFACL *)node; + if ([acl hasUnresolvedUser]) { + [self collectDirtyChildren:currentUser + children:dirtyChildren + files:dirtyFiles + seen:seen + seenNew:seenNew + currentUser:currentUser]; + } + + } else if ([node isKindOfClass:[PFObject class]]) { + PFObject *object = (PFObject *)node; + NSDictionary *toSearch = nil; + + @synchronized ([object lock]) { + // Check for cycles of new objects. Any such cycle means it will be + // impossible to save this collection of objects, so throw an exception. + if (object.objectId) { + seenNew = [NSSet set]; + } else { + if ([seenNew containsObject:object]) { + [NSException raise:NSInternalInconsistencyException + format:@"Found a circular dependency when saving."]; + } + seenNew = [seenNew setByAddingObject:object]; + } + + // Check for cycles of any object. If this occurs, then there's no + // problem, but we shouldn't recurse any deeper, because it would be + // an infinite recursion. + if ([seen containsObject:object]) { + return; + } + seen = [seen setByAddingObject:object]; + + // Recurse into this object's children looking for dirty children. + // We only need to look at the child object's current estimated data, + // because that's the only data that might need to be saved now. + toSearch = [object->_estimatedData.dictionaryRepresentation copy]; + } + + [self collectDirtyChildren:toSearch + children:dirtyChildren + files:dirtyFiles + seen:seen + seenNew:seenNew + currentUser:currentUser]; + + if ([object isDirty:NO]) { + [dirtyChildren addObject:object]; + } + } else if ([node isKindOfClass:[PFFile class]]) { + PFFile *file = (PFFile *)node; + if (!file.url) { + [dirtyFiles addObject:node]; + } + } +} + +// Helper version of collectDirtyChildren:children:seen:seenNew so that callers +// don't have to add the internally used parameters. ++ (void)collectDirtyChildren:(id)child + children:(NSMutableSet *)dirtyChildren + files:(NSMutableSet *)dirtyFiles + currentUser:(PFUser *)currentUser { + [self collectDirtyChildren:child + children:dirtyChildren + files:dirtyFiles + seen:[NSSet set] + seenNew:[NSSet set] + currentUser:currentUser]; +} + +// Returns YES if the given object can be serialized for saving as a value +// that is pointed to by a PFObject. +// @param value The object we want to serialize as a value. +// @param saved The set of all objects we can assume will be saved before this one. +// @param error The reason why it can't be serialized. ++ (BOOL)canBeSerializedAsValue:(id)value + afterSaving:(NSMutableArray *)saved + error:(NSError **)error { + if ([value isKindOfClass:[PFObject class]]) { + PFObject *object = (PFObject *)value; + if (!object.objectId && ![saved containsObject:object]) { + if (error) { + *error = [PFErrorUtilities errorWithCode:kPFErrorInvalidPointer + message:@"Pointer to an unsaved object."]; + } + return NO; + } + + } else if ([value isKindOfClass:[NSDictionary class]]) { + __block BOOL retValue = YES; + [value enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + if (![[self class] canBeSerializedAsValue:obj + afterSaving:saved + error:error]) { + retValue = NO; + *stop = YES; + } + }]; + return retValue; + } else if ([value isKindOfClass:[NSArray class]]) { + NSArray *array = (NSArray *)value; + for (NSString *item in array) { + if (![[self class] canBeSerializedAsValue:item + afterSaving:saved + error:error]) { + return NO; + } + } + } + + return YES; +} + +// Returns YES if this object can be serialized for saving. +// @param saved A set of objects that we can assume will have been saved. +// @param error The reason why it can't be serialized. +- (BOOL)canBeSerializedAfterSaving:(NSMutableArray *)saved withCurrentUser:(PFUser *)user error:(NSError **)error { + @synchronized (lock) { + // This method is only used for batching sets of objects for saveAll + // and when saving children automatically. Since it's only used to + // determine whether or not save should be called on them, it only + // needs to examine their current values, so we use estimatedData. + if (![[self class] canBeSerializedAsValue:_estimatedData.dictionaryRepresentation + afterSaving:saved + error:error]) { + return NO; + } + + if ([self isDataAvailableForKey:@"ACL"] && + [[self ACLWithoutCopying] hasUnresolvedUser] && + ![saved containsObject:user]) { + if (error) { + *error = [PFErrorUtilities errorWithCode:kPFErrorInvalidACL + message:@"User associated with ACL must be signed up."]; + } + return NO; + } + + return YES; + } +} + +// This saves all of the objects and files reachable from the given object. +// It does its work in multiple waves, saving as many as possible in each wave. +// If there's ever an error, it just gives up, sets error, and returns NO; ++ (BFTask *)_deepSaveAsync:(id)object withCurrentUser:(PFUser *)currentUser sessionToken:(NSString *)sessionToken { + BFTask *task = [BFTask taskWithResult:@YES]; + + NSMutableSet *uniqueObjects = [NSMutableSet set]; + NSMutableSet *uniqueFiles = [NSMutableSet set]; + [self collectDirtyChildren:object children:uniqueObjects files:uniqueFiles currentUser:currentUser]; + for (PFFile *file in uniqueFiles) { + task = [task continueAsyncWithSuccessBlock:^id(BFTask *task) { + return [[file saveInBackground] continueAsyncWithBlock:^id(BFTask *task) { + // This is a stupid hack because our current behavior is to fail file + // saves with an error when a file save inside it is cancelled. + if (task.isCancelled) { + NSError *newError = [PFErrorUtilities errorWithCode:kPFErrorUnsavedFile + message:@"A file save was cancelled."]; + return [BFTask taskWithError:newError]; + } + return task; + }]; + }]; + } + + // TODO: (nlutsenko) Get rid of this once we allow localIds in batches. + NSArray *remaining = [uniqueObjects allObjects]; + NSMutableArray *finished = [NSMutableArray array]; + while ([remaining count] > 0) { + // Partition the objects into two sets: those that can be save immediately, + // and those that rely on other objects to be created first. + NSMutableArray *current = [NSMutableArray array]; + NSMutableArray *nextBatch = [NSMutableArray array]; + for (PFObject *object in remaining) { + if ([object canBeSerializedAfterSaving:finished withCurrentUser:currentUser error:nil]) { + [current addObject:object]; + } else { + [nextBatch addObject:object]; + } + } + remaining = nextBatch; + + if (current.count == 0) { + // We do cycle-detection when building the list of objects passed to this + // function, so this should never get called. But we should check for it + // anyway, so that we get an exception instead of an infinite loop. + [NSException raise:NSInternalInconsistencyException + format:@"Unable to save a PFObject with a relation to a cycle."]; + } + + // If a lazy user is one of the objects in the array, resolve its laziness now and + // remove it from the list of things to save. + // + // This has to happen separately from everything else because there [PFUser save] + // is special-cased to work for lazy users, but new users can't be created by + // PFMultiCommand's regular save. + if ([currentUser isLazy] && [current containsObject:currentUser]) { + task = [task continueAsyncWithSuccessBlock:^id(BFTask *task) { + return [currentUser saveInBackground]; + }]; + + [finished addObject:currentUser]; + [current removeObject:currentUser]; + if (current.count == 0) { + continue; + } + } + + task = [task continueAsyncWithSuccessBlock:^id(BFTask *task) { + // Batch requests have currently a limit of 50 packaged requests per single request + // This splitting will split the overall array into segments of upto 50 requests + // and execute them concurrently with a wrapper task for all of them. + NSArray *objectBatches = [PFInternalUtils arrayBySplittingArray:current + withMaximumComponentsPerSegment:PFRESTObjectBatchCommandSubcommandsLimit]; + NSMutableArray *tasks = [NSMutableArray arrayWithCapacity:[objectBatches count]]; + + for (NSArray *objectBatch in objectBatches) { + BFTask *batchTask = [self _enqueue:^BFTask *(BFTask *toAwait) { + return [toAwait continueAsyncWithBlock:^id(BFTask *task) { + NSMutableArray *commands = [NSMutableArray arrayWithCapacity:[objectBatch count]]; + for (PFObject *object in objectBatch) { + PFRESTCommand *command = nil; + @synchronized ([object lock]) { + [object _objectWillSave]; + [object _checkSaveParametersWithCurrentUser:currentUser]; + command = [object _constructSaveCommandForChanges:[object unsavedChanges] + sessionToken:sessionToken + objectEncoder:[PFPointerObjectEncoder objectEncoder]]; + [object startSave]; + } + [commands addObject:command]; + } + + PFRESTCommand *batchCommand = [PFRESTObjectBatchCommand batchCommandWithCommands:commands + sessionToken:sessionToken]; + return [[[Parse _currentManager].commandRunner runCommandAsync:batchCommand withOptions:0] + continueAsyncWithBlock:^id(BFTask *commandRunnerTask) { + NSArray *results = [commandRunnerTask.result result]; + + NSMutableArray *handleSaveTasks = [NSMutableArray arrayWithCapacity:[objectBatch count]]; + + __block NSError *error = task.error; + [objectBatch enumerateObjectsUsingBlock:^(PFObject *object, NSUInteger idx, BOOL *stop) { + // If the task resulted in an error - don't even bother looking into + // the result of the command, just roll the error further + + BFTask *task = nil; + if (commandRunnerTask.error) { + task = [object handleSaveResultAsync:nil]; + } else { + NSDictionary *commandResult = results[idx]; + + NSDictionary *errorResult = commandResult[@"error"]; + if (errorResult) { + error = [PFErrorUtilities errorFromResult:errorResult]; + task = [[object handleSaveResultAsync:nil] continueWithBlock:^id(BFTask *task) { + return [BFTask taskWithError:error]; + }]; + } else { + NSDictionary *successfulResult = commandResult[@"success"]; + task = [object handleSaveResultAsync:successfulResult]; + } + } + [handleSaveTasks addObject:task]; + }]; + + return [[BFTask taskForCompletionOfAllTasks:handleSaveTasks] continueAsyncWithBlock:^id(BFTask *task) { + if (commandRunnerTask.error || commandRunnerTask.cancelled || commandRunnerTask.exception) { + return commandRunnerTask; + } + + // Reiterate saveAll tasks, return first error. + for (BFTask *handleSaveTask in handleSaveTasks) { + if (handleSaveTask.error || handleSaveTask.exception) { + return handleSaveTask; + } + } + + return @YES; + }]; + }]; + }]; + } forObjects:objectBatch]; + [tasks addObject:batchTask]; + } + + return [[BFTask taskForCompletionOfAllTasks:tasks] continueWithBlock:^id(BFTask *task) { + // Return the first exception, instead of the aggregated one + // for the sake of compatability with old versions + + if ([task.exception.name isEqualToString:BFTaskMultipleExceptionsException]) { + NSException *firstException = [task.exception.userInfo[@"exceptions"] firstObject]; + if (firstException) { + return [BFTask taskWithException:firstException]; + } + } + + if (task.error || task.cancelled || task.exception) { + return task; + } + + return @YES; + }]; + }]; + + [finished addObjectsFromArray:current]; + } + + return task; +} + +// Just like deepSaveAsync, but uses saveEventually instead of saveAsync. +// Because you shouldn't wait for saveEventually calls to complete, this +// does not return any operation. ++ (BFTask *)_enqueueSaveEventuallyChildrenOfObject:(PFObject *)object + currentUser:(PFUser *)currentUser { + return [BFTask taskFromExecutor:[BFExecutor defaultExecutor] withBlock:^id{ + NSMutableSet *uniqueObjects = [NSMutableSet set]; + NSMutableSet *uniqueFiles = [NSMutableSet set]; + [self collectDirtyChildren:object children:uniqueObjects files:uniqueFiles currentUser:currentUser]; + for (PFFile *file in uniqueFiles) { + if (!file.url) { + NSException *exception = [NSException exceptionWithName:NSInternalInconsistencyException + reason:@"Unable to saveEventually a PFObject with a relation to a new, unsaved PFFile." + userInfo:nil]; + return [BFTask taskWithException:exception]; + } + } + + // Remove object from the queue of objects to save as this method should only save children. + [uniqueObjects removeObject:object]; + + NSArray *remaining = [uniqueObjects allObjects]; + NSMutableArray *finished = [NSMutableArray array]; + NSMutableArray *enqueueTasks = [NSMutableArray array]; + while ([remaining count] > 0) { + // Partition the objects into two sets: those that can be save immediately, + // and those that rely on other objects to be created first. + NSMutableArray *current = [NSMutableArray array]; + NSMutableArray *nextBatch = [NSMutableArray array]; + for (PFObject *object in remaining) { + if ([object canBeSerializedAfterSaving:finished withCurrentUser:currentUser error:nil]) { + [current addObject:object]; + } else { + [nextBatch addObject:object]; + } + } + remaining = nextBatch; + + if (current.count == 0) { + // We do cycle-detection when building the list of objects passed to this + // function, so this should never get called. But we should check for it + // anyway, so that we get an exception instead of an infinite loop. + [NSException raise:NSInternalInconsistencyException + format:@"Unable to save a PFObject with a relation to a cycle."]; + } + + // If a lazy user is one of the objects in the array, resolve its laziness now and + // remove it from the list of things to save. + // + // This has to happen separately from everything else because there [PFUser save] + // is special-cased to work for lazy users, but new users can't be created by + // PFMultiCommand's regular save. + // + // Unfortunately, ACLs with lazy users still cannot be saved, because the ACL does + // does not get updated after the user save completes. + // TODO: (nlutsenko) Make the ACL update after the user is saved. + if ([currentUser isLazy] && [current containsObject:currentUser]) { + [enqueueTasks addObject:[currentUser _enqueueSaveEventuallyWithChildren:NO]]; + [finished addObject:currentUser]; + [current removeObject:currentUser]; + if (current.count == 0) { + continue; + } + } + + // TODO: (nlutsenko) Allow batching with saveEventually. + for (PFObject *object in current) { + [enqueueTasks addObject:[object _enqueueSaveEventuallyWithChildren:NO]]; + } + + [finished addObjectsFromArray:current]; + } + return [BFTask taskForCompletionOfAllTasks:enqueueTasks]; + }]; +} + +- (BFTask *)_saveChildrenInBackgroundWithCurrentUser:(PFUser *)currentUser sessionToken:(NSString *)sessionToken { + @synchronized (lock) { + return [[self class] _deepSaveAsync:_estimatedData.dictionaryRepresentation + withCurrentUser:currentUser + sessionToken:sessionToken]; + } +} + +///-------------------------------------- +#pragma mark - Dirtiness helper +///-------------------------------------- + +- (BOOL)isDirty:(BOOL)considerChildren { + @synchronized (lock) { + [self checkForChangesToMutableContainers]; + if (self._state.deleted || dirty || [self _hasChanges]) { + return YES; + } + + if (considerChildren) { + NSMutableSet *seen = [NSMutableSet set]; + return [self _areChildrenDirty:seen]; + } + + return NO; + } +} + +- (void)_setDirty:(BOOL)aDirty { + @synchronized (lock) { + dirty = aDirty; + } +} + +- (BOOL)_areChildrenDirty:(NSMutableSet *)seenObjects { + if ([seenObjects containsObject:self]) { + return NO; + } + [seenObjects addObject:self]; + + @synchronized(lock) { + [self checkpointAllMutableContainers]; + if (self._state.deleted || dirty || [self _hasChanges]) { + return YES; + } + + // We only need to consider the currently estimated children here, + // because they're the only ones that might need to be saved in a + // subsequent call to save, which is the meaning of "dirtiness". + __block BOOL retValue = NO; + [_estimatedData enumerateKeysAndObjectsUsingBlock:^(NSString *key, id obj, BOOL *stop) { + if ([obj isKindOfClass:[PFObject class]] && [obj _areChildrenDirty:seenObjects]) { + retValue = YES; + *stop = YES; + } + }]; + return retValue; + } +} + +///-------------------------------------- +#pragma mark - Mutable container management +///-------------------------------------- + +- (void)checkpointAllMutableContainers { + @synchronized (lock) { + [_estimatedData enumerateKeysAndObjectsUsingBlock:^(NSString *key, id obj, BOOL *stop) { + [self checkpointMutableContainer:obj]; + }]; + } +} + +- (void)checkpointMutableContainer:(id)object { + @synchronized (lock) { + if (PFObjectValueIsKindOfMutableContainerClass(object)) { + [hashedObjectsCache setObject:[PFJSONCacheItem cacheFromObject:object] + forKey:[NSValue valueWithNonretainedObject:object]]; + } + } +} + +- (void)checkForChangesToMutableContainer:(id)object forKey:(NSString *)key { + @synchronized (lock) { + // If this is a mutable container, we should check its contents. + if (PFObjectValueIsKindOfMutableContainerClass(object)) { + PFJSONCacheItem *oldCacheItem = [hashedObjectsCache objectForKey:[NSValue valueWithNonretainedObject:object]]; + if (!oldCacheItem) { + [NSException raise:NSInternalInconsistencyException + format:@"PFObject contains container item that isn't cached."]; + } else { + PFJSONCacheItem *newCacheItem = [PFJSONCacheItem cacheFromObject:object]; + if (![oldCacheItem isEqual:newCacheItem]) { + // A mutable container changed out from under us. Treat it as a set operation. + [self setObject:object forKey:key]; + } + } + } else { + [hashedObjectsCache removeObjectForKey:[NSValue valueWithNonretainedObject:object]]; + } + } +} + +- (void)checkForChangesToMutableContainers { + @synchronized (lock) { + NSMutableArray *unexaminedCacheKeys = [[hashedObjectsCache allKeys] mutableCopy]; + NSDictionary *reachableData = _estimatedData.dictionaryRepresentation; + [reachableData enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + [unexaminedCacheKeys removeObject:[NSValue valueWithNonretainedObject:obj]]; + [self checkForChangesToMutableContainer:obj forKey:key]; + }]; + + // Remove unchecked cache entries. + [hashedObjectsCache removeObjectsForKeys:unexaminedCacheKeys]; + } +} + +///-------------------------------------- +#pragma mark - Data Availability +///-------------------------------------- + +// TODO: (nlutsenko) Remove this when rest of PFObject is decoupled. +- (void)setHasBeenFetched:(BOOL)fetched { + @synchronized (lock) { + if (self._state.complete != fetched) { + PFMutableObjectState *state = [_pfinternal_state mutableCopy]; + state.complete = fetched; + self._state = state; + } + } +} + +- (void)_setDeleted:(BOOL)deleted { + @synchronized (lock) { + if (self._state.deleted != deleted) { + PFMutableObjectState *state = [_pfinternal_state mutableCopy]; + state.deleted = deleted; + self._state = state; + } + } +} + +- (BOOL)isDataAvailableForKey:(NSString *)key { + if (!key) { + return NO; + } + + @synchronized (lock) { + if ([self isDataAvailable]) { + return YES; + } + return [_availableKeys containsObject:key]; + } +} + +///-------------------------------------- +#pragma mark - Validations +///-------------------------------------- + +// Validations that are done on save. For now, there is nothing. +- (void)_checkSaveParametersWithCurrentUser:(PFUser *)currentUser { + return; +} + +/*! + Checks if Parse class name could be used to initialize a given instance of PFObject or it's subclass. + */ ++ (void)_assertValidInstanceClassName:(NSString *)className { + PFParameterAssert(className, @"Class name can't be 'nil'."); + PFParameterAssert(![className hasPrefix:@"_"], @"Invalid class name. Class names cannot start with an underscore."); +} + +///-------------------------------------- +#pragma mark - Serialization helpers +///-------------------------------------- + +- (NSString *)getOrCreateLocalId { + @synchronized(lock) { + if (!self.localId) { + PFConsistencyAssert(!self._state.objectId, + @"A localId should not be created for an object with an objectId."); + self.localId = [[Parse _currentManager].coreManager.objectLocalIdStore createLocalId]; + } + } + return self.localId; +} + +- (void)resolveLocalId { + @synchronized (lock) { + PFConsistencyAssert(self.localId, @"Tried to resolve a localId for an object with no localId."); + NSString *newObjectId = [[Parse _currentManager].coreManager.objectLocalIdStore objectIdForLocalId:self.localId]; + + // If we are resolving local ids, then this object is about to go over the network. + // But if it has local ids that haven't been resolved yet, then that's not going to + // be possible. + if (!newObjectId) { + [NSException raise:NSInternalInconsistencyException + format:@"Tried to save an object with a pointer to a new, unsaved object."]; + } + + // Nil out the localId so that the new objectId won't be saved back to the PFObjectLocalIdStore. + self.localId = nil; + self.objectId = newObjectId; + } +} + ++ (id)_objectFromDictionary:(NSDictionary *)dictionary + defaultClassName:(NSString *)defaultClassName + completeData:(BOOL)completeData { + return [self _objectFromDictionary:dictionary + defaultClassName:defaultClassName + completeData:completeData + decoder:[PFDecoder objectDecoder]]; +} + +// When merging results from a query, ensure that any supplied `selectedKeys` are marked as available. This special +// handling is necessary because keys with an `undefined` value are not guaranteed to be included in the server's +// response data. +// +// See T3336562 ++ (id)_objectFromDictionary:(NSDictionary *)dictionary + defaultClassName:(NSString *)defaultClassName + selectedKeys:(NSArray *)selectedKeys { + PFObject *result = [self _objectFromDictionary:dictionary + defaultClassName:defaultClassName + completeData:(selectedKeys == nil) + decoder:[PFDecoder objectDecoder]]; + [result->_availableKeys addObjectsFromArray:selectedKeys]; + return result; +} + +/*! + Creates a PFObject from a dictionary object. + + @param dictionary Undecoded dictionary. + @param defaultClassName The className of the resulting object if none is given by the dictionary. + @param completeData Whether to use complete data. + @param decoder Decoder used to decode the dictionary. + */ ++ (id)_objectFromDictionary:(NSDictionary *)dictionary + defaultClassName:(NSString *)defaultClassName + completeData:(BOOL)completeData + decoder:(PFDecoder *)decoder { + NSString *objectId = nil; + NSString *className = nil; + if (dictionary != nil) { + objectId = dictionary[@"objectId"]; + className = dictionary[@"className"] ?: defaultClassName; + } + PFObject *object = [PFObject objectWithoutDataWithClassName:className objectId:objectId]; + [object _mergeAfterFetchWithResult:dictionary decoder:decoder completeData:completeData]; + return object; +} + +/*! + When the app was previously a non-LDS app and want to enable LDS, currentUser and currentInstallation + will be discarded if we don't migrate them. This is a helper method to migrate user/installation + from disk to pin. + + @param fileName the file in which the object was saved. + @param pinName the name of the pin in which the object should be stored. + */ ++ (BFTask *)_migrateObjectInBackgroundFromFile:(NSString *)fileName + toPin:(NSString *)pinName { + return [self _migrateObjectInBackgroundFromFile:fileName toPin:pinName usingMigrationBlock:nil]; +} + +/*! + When the app was previously a non-LDS app and want to enable LDS, currentUser and currentInstallation + will be discarded if we don't migrate them. This is a helper method to migrate user/installation + from disk to pin. + + @param fileName the file in which the object was saved. + @param pinName the name of the pin in which the object should be stored. + @param migrationBlock The block that will be called if there is an object on disk and before the object is pinned. + */ ++ (BFTask *)_migrateObjectInBackgroundFromFile:(NSString *)fileName + toPin:(NSString *)pinName + usingMigrationBlock:(BFContinuationBlock)migrationBlock { + PFObjectFilePersistenceController *controller = [Parse _currentManager].coreManager.objectFilePersistenceController; + BFTask *task = [controller loadPersistentObjectAsyncForKey:fileName]; + if (migrationBlock) { + task = [task continueWithSuccessBlock:^id(BFTask *task) { + PFObject *object = task.result; + if (object) { + return [[task continueWithBlock:migrationBlock] continueWithResult:object]; + } + return task; + }]; + } + return [task continueWithSuccessBlock:^id(BFTask *task) { + PFObject *object = task.result; + return [[object _pinInBackgroundWithName:pinName includeChildren:NO] continueWithBlock:^id(BFTask *task) { + BFTask *resultTask = [BFTask taskWithResult:object]; + + // Only delete if we successfully pin it so that it retries the migration next time. + if (!task.error && !task.exception && !task.cancelled) { + NSString *path = [[Parse _currentManager].fileManager parseDataItemPathForPathComponent:fileName]; + return [[PFFileManager removeItemAtPathAsync:path] continueWithBlock:^id(BFTask *task) { + // We don't care if it fails to delete the file, so return the + return resultTask; + }]; + } + return resultTask; + }]; + }]; +} + +///-------------------------------------- +#pragma mark - REST operations +///-------------------------------------- + +/*! + Encodes parse object into NSDictionary suitable for persisting into LDS. + */ +- (NSDictionary *)RESTDictionaryWithObjectEncoder:(PFEncoder *)objectEncoder + operationSetUUIDs:(NSArray **)operationSetUUIDs { + @synchronized (lock) { + [self checkForChangesToMutableContainers]; + PFObjectState *state = self._state; + return [self RESTDictionaryWithObjectEncoder:objectEncoder + operationSetUUIDs:operationSetUUIDs + state:state + operationSetQueue:operationSetQueue]; + } +} + +- (NSDictionary *)RESTDictionaryWithObjectEncoder:(PFEncoder *)objectEncoder + operationSetUUIDs:(NSArray **)operationSetUUIDs + state:(PFObjectState *)state + operationSetQueue:(NSArray *)queue { + NSMutableDictionary *result = [[state dictionaryRepresentationWithObjectEncoder:objectEncoder] mutableCopy]; + result[PFObjectClassNameRESTKey] = state.parseClassName; + result[PFObjectCompleteRESTKey] = @(state.complete); + + result[PFObjectIsDeletingEventuallyRESTKey] = @(_deletingEventually); + + // TODO (hallucinogen): based on some note from Android's toRest, we'll need to put this + // stuff somewhere else + NSMutableArray *operations = [NSMutableArray array]; + NSMutableArray *mutableOperationSetUUIDs = [NSMutableArray array]; + for (PFOperationSet *operation in queue) { + NSArray *ooSetUUIDs = nil; + [operations addObject:[operation RESTDictionaryUsingObjectEncoder:objectEncoder + operationSetUUIDs:&ooSetUUIDs]]; + [mutableOperationSetUUIDs addObjectsFromArray:ooSetUUIDs]; + } + + *operationSetUUIDs = mutableOperationSetUUIDs; + + result[PFObjectOperationsRESTKey] = operations; + return result; +} + +- (void)mergeFromRESTDictionary:(NSDictionary *)object withDecoder:(PFDecoder *)decoder { + @synchronized (lock) { + BOOL mergeServerData = NO; + + PFMutableObjectState *state = [self._state mutableCopy]; + + // If LDS has `updatedAt` and we have it - compare, then if stuff is newer - merge. + // If LDS doesn't have `updatedAt` and we don't have it - merge anyway. + NSString *updatedAtString = object[PFObjectUpdatedAtRESTKey]; + if (updatedAtString) { + NSDate *updatedDate = [[PFDateFormatter sharedFormatter] dateFromString:updatedAtString]; + mergeServerData = ([state.updatedAt compare:updatedDate] != NSOrderedDescending); + } else if (!state.updatedAt) { + mergeServerData = YES; + } + [object enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + if ([key isEqualToString:PFObjectOperationsRESTKey]) { + PFOperationSet *remoteOperationSet = nil; + NSArray *operations = (NSArray *)obj; + if ([operations count] > 0) { + // Add and enqueue any saveEventually operations, roll forward any other + // operations sets (operations sets here are generally failed/incomplete saves). + PFOperationSet *current = nil; + for (id rawOperationSet in operations) { + PFOperationSet *operationSet = [PFOperationSet operationSetFromRESTDictionary:rawOperationSet + usingDecoder:decoder]; + if (operationSet.saveEventually) { + if (current != nil) { + [[self unsavedChanges] mergeOperationSet:current]; + current = nil; + } + + // Check if queue already contains this operation set and discard it if does + if (![self _containsOperationSet:operationSet]) { + // Insert the `saveEventually` operationSet before the last operation set at all times. + NSUInteger index = ([operationSetQueue count] == 0 ? 0 : [operationSetQueue count] - 1); + [operationSetQueue insertObject:operationSet atIndex:index]; + [self _enqueueSaveEventuallyOperationAsync:operationSet]; + } + + continue; + } + + if (current != nil) { + [operationSet mergeOperationSet:current]; + } + current = operationSet; + } + if (current != nil) { + remoteOperationSet = current; + } + } + + PFOperationSet *localOperationSet = [self unsavedChanges]; + if (localOperationSet.updatedAt != nil && + [localOperationSet.updatedAt compare:remoteOperationSet.updatedAt] != NSOrderedAscending) { + [localOperationSet mergeOperationSet:remoteOperationSet]; + } else { + PFConsistencyAssert(remoteOperationSet, @"'remoteOperationSet' should not be nil."); + NSUInteger index = [operationSetQueue indexOfObject:localOperationSet]; + [remoteOperationSet mergeOperationSet:localOperationSet]; + [operationSetQueue replaceObjectAtIndex:index withObject:remoteOperationSet]; + } + + return; + } + + if ([key isEqualToString:PFObjectCompleteRESTKey]) { + // If server data is complete, consider this object to be fetched + state.complete = state.complete || [obj boolValue]; + return; + } + if ([key isEqualToString:PFObjectIsDeletingEventuallyRESTKey]) { + _deletingEventually = [obj intValue]; + return; + } + + [_availableKeys addObject:key]; + + // If server data in dictionary is older - don't merge it. + if (!mergeServerData) { + return; + } + + if ([key isEqualToString:PFObjectTypeRESTKey] || [key isEqualToString:PFObjectClassNameRESTKey]) { + return; + } + if ([key isEqualToString:PFObjectObjectIdRESTKey]) { + state.objectId = obj; + return; + } + if ([key isEqualToString:PFObjectCreatedAtRESTKey]) { + [state setCreatedAtFromString:obj]; + return; + } + if ([key isEqualToString:PFObjectUpdatedAtRESTKey]) { + [state setUpdatedAtFromString:obj]; + return; + } + + if ([key isEqualToString:PFObjectACLRESTKey]) { + PFACL *acl = [PFACL ACLWithDictionary:obj]; + [state setServerDataObject:acl forKey:PFObjectACLRESTKey]; + [self checkpointMutableContainer:acl]; + return; + } + + // Should be decoded + id decodedObject = [decoder decodeObject:obj]; + if (PFObjectValueIsKindOfMutableContainerClass(decodedObject)) { + [self checkpointMutableContainer:decodedObject]; + } + [state setServerDataObject:decodedObject forKey:key]; + }]; + if (state.updatedAt == nil && state.createdAt != nil) { + state.updatedAt = state.createdAt; + } + BOOL previousDirtyState = dirty; + self._state = state; + dirty = previousDirtyState; + + if (mergeServerData) { + if ([object[PFObjectCompleteRESTKey] boolValue]) { + [self removeOldKeysAfterFetch:object]; + } else { + // Unmark the object as fetched, because we merged from incomplete new data. + [self setHasBeenFetched:NO]; + } + } + [self rebuildEstimatedData]; + [self checkpointAllMutableContainers]; + } +} + +///-------------------------------------- +#pragma mark - Eventually Helper +///-------------------------------------- + +/*! + Enqueues saveEventually operation asynchronously. + + @returns A task which result is a saveEventually task. + */ +- (BFTask *)_enqueueSaveEventuallyWithChildren:(BOOL)saveChildren { + return [_eventuallyTaskQueue enqueue:^BFTask *(BFTask *toAwait) { + PFUser *currentUser = [PFUser currentUser]; + NSString *sessionToken = currentUser.sessionToken; + return [[toAwait continueAsyncWithBlock:^id(BFTask *task) { + return [self _validateSaveEventuallyAsync]; + }] continueWithSuccessBlock:^id(BFTask *task) { + @synchronized (lock) { + [self _objectWillSave]; + if (![self isDirty:NO]) { + return [BFTask taskWithResult:@YES]; + } + } + + BFTask *saveChildrenTask = nil; + if (saveChildren) { + saveChildrenTask = [[self class] _enqueueSaveEventuallyChildrenOfObject:self currentUser:currentUser]; + } else { + saveChildrenTask = [BFTask taskWithResult:nil]; + } + + return [saveChildrenTask continueWithSuccessBlock:^id(BFTask *task) { + BFTask *saveTask = nil; + @synchronized (lock) { + // Snapshot the current set of changes, and push a new changeset into the queue. + PFOperationSet *changes = [self unsavedChanges]; + changes.saveEventually = YES; + [self startSave]; + [self _checkSaveParametersWithCurrentUser:currentUser]; + PFRESTCommand *command = [self _constructSaveCommandForChanges:changes + sessionToken:sessionToken + objectEncoder:[PFPointerOrLocalIdObjectEncoder objectEncoder]]; + + // Enqueue the eventually operation! + saveTask = [[Parse _currentManager].eventuallyQueue enqueueCommandInBackground:command withObject:self]; + [self _enqueueSaveEventuallyOperationAsync:changes]; + } + saveTask = [saveTask continueWithBlock:^id(BFTask *task) { + @try { + if (!task.isCancelled && !task.exception && !task.error) { + PFCommandResult *result = task.result; + // PFPinningEventuallyQueue handle save result directly. + if (![Parse _currentManager].offlineStoreLoaded) { + return [self handleSaveResultAsync:result.result]; + } + } + return task; + } @finally { + [[Parse _currentManager].eventuallyQueue _notifyTestHelperObjectUpdated]; + } + }]; + return [BFTask taskWithResult:saveTask]; + }]; + }]; + }]; +} + + +/*! + Enqueues the saveEventually PFOperationSet in PFObject taskQueue + */ +- (BFTask *)_enqueueSaveEventuallyOperationAsync:(PFOperationSet *)operationSet { + if (!operationSet.isSaveEventually) { + NSString *message = @"This should only be used to enqueue saveEventually operation sets"; + NSException *exception = [NSException exceptionWithName:NSInternalInconsistencyException + reason:message + userInfo:nil]; + return [BFTask taskWithException:exception]; + } + + return [self.taskQueue enqueue:^BFTask *(BFTask *toAwait) { + // Use default priority background to break a chain and make sure this operation is truly asynchronous + return [toAwait continueWithExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id(BFTask *task) { + PFEventuallyQueue *queue = [Parse _currentManager].eventuallyQueue; + id queueSubClass = (id)queue; + return [queueSubClass _waitForOperationSet:operationSet eventuallyPin:nil]; + }]; + }]; +} + +///-------------------------------------- +#pragma mark - Data model manipulation +///-------------------------------------- + +- (NSMutableDictionary *)_convertToDictionaryForSaving:(PFOperationSet *)changes + withObjectEncoder:(PFEncoder *)encoder { + @synchronized (lock) { + [self checkForChangesToMutableContainers]; + + NSMutableDictionary *serialized = [NSMutableDictionary dictionary]; + [changes enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + serialized[key] = obj; + }]; + return [encoder encodeObject:serialized]; + } +} + +/*! + performOperation:forKey: is like setObject:forKey, but instead of just taking a + new value, it takes a PFFieldOperation that modifies the value. + */ +- (void)performOperation:(PFFieldOperation *)operation forKey:(NSString *)key { + @synchronized (lock) { + id newValue = [_estimatedData applyFieldOperation:operation forKey:key]; + + PFFieldOperation *oldOperation = [[self unsavedChanges] objectForKey:key]; + PFFieldOperation *newOperation = [operation mergeWithPrevious:oldOperation]; + [[self unsavedChanges] setObject:newOperation forKey:key]; + [self checkpointMutableContainer:newValue]; + [_availableKeys addObject:key]; + } +} + +- (BOOL)_containsOperationSet:(PFOperationSet *)operationSet { + @synchronized (lock) { + for (PFOperationSet *existingOperationSet in operationSetQueue) { + if (existingOperationSet == operationSet || + [existingOperationSet.uuid isEqualToString:operationSet.uuid]) { + return YES; + } + } + } + return NO; +} + +/*! + Returns the set of PFFieldOperations that will be sent in the next save. + */ +- (PFOperationSet *)unsavedChanges { + @synchronized (lock) { + return [operationSetQueue lastObject]; + } +} + +/*! + @returns YES if there's unsaved changes in this object. This complements ivar `dirty` for `isDirty` check. + */ +- (BOOL)_hasChanges { + @synchronized (lock) { + return [[self unsavedChanges] count] > 0; + } +} + +/*! + @returns YES if this PFObject has operations in operationSetQueue that haven't been completed yet, + NO if there are no operations in the operationSetQueue. + */ +- (BOOL)_hasOutstandingOperations { + @synchronized (lock) { + // > 1 since 1 is unsaved changes. + return [operationSetQueue count] > 1; + } +} + +- (void)rebuildEstimatedData { + @synchronized (lock) { + _estimatedData = [PFObjectEstimatedData estimatedDataFromServerData:self._state.serverData + operationSetQueue:operationSetQueue]; + } +} + +- (PFObject *)mergeFromObject:(PFObject *)other { + @synchronized (lock) { + if (self == other) { + // If they point to the same instance, then don't merge. + return self; + } + + PFMutableObjectState *state = [self._state mutableCopy]; + state.objectId = other.objectId; + state.createdAt = other.createdAt; + state.updatedAt = other.updatedAt; + state.serverData = [other._state.serverData mutableCopy]; + self._state = state; + [self checkpointAllMutableContainers]; + + dirty = NO; + + [self rebuildEstimatedData]; + return self; + } +} + +- (void)_mergeAfterFetchWithResult:(NSDictionary *)result decoder:(PFDecoder *)decoder completeData:(BOOL)completeData { + @synchronized (lock) { + [self checkForChangesToMutableContainers]; + [self _mergeFromServerWithResult:result decoder:decoder completeData:completeData]; + if (completeData) { + [self removeOldKeysAfterFetch:result]; + } + [self rebuildEstimatedData]; + [self checkpointAllMutableContainers]; + } +} + +- (void)removeOldKeysAfterFetch:(NSDictionary *)result { + @synchronized (lock) { + PFMutableObjectState *state = [self._state mutableCopy]; + + NSMutableDictionary *removedDictionary = [NSMutableDictionary dictionaryWithDictionary:state.serverData]; + [removedDictionary removeObjectsForKeys:[result allKeys]]; + + NSArray *removedKeys = [removedDictionary allKeys]; + [state removeServerDataObjectsForKeys:removedKeys]; + [_availableKeys minusSet:[NSSet setWithArray:removedKeys]]; + + self._state = state; + } +} + +- (void)_mergeAfterSaveWithResult:(NSDictionary *)result decoder:(PFDecoder *)decoder { + @synchronized (lock) { + PFOperationSet *operationsBeforeSave = operationSetQueue[0]; + [operationSetQueue removeObjectAtIndex:0]; + + if (!result) { + // Merge the data from the failed save into the next save. + PFOperationSet *operationsForNextSave = operationSetQueue[0]; + [operationsForNextSave mergeOperationSet:operationsBeforeSave]; + } else { + // Merge the data from the save and the data from the server into serverData. + [self checkForChangesToMutableContainers]; + + PFMutableObjectState *state = [self._state mutableCopy]; + [state applyOperationSet:operationsBeforeSave]; + self._state = state; + + [self _mergeFromServerWithResult:result decoder:decoder completeData:NO]; + [self rebuildEstimatedData]; + [self checkpointAllMutableContainers]; + } + } +} + +- (void)_mergeFromServerWithResult:(NSDictionary *)result decoder:(PFDecoder *)decoder completeData:(BOOL)completeData { + @synchronized (lock) { + PFMutableObjectState *state = [self._state mutableCopy]; + + // If the server's data is complete, consider this object to be fetched. + state.complete |= completeData; + + [result enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + if ([key isEqualToString:PFObjectObjectIdRESTKey]) { + state.objectId = obj; + } else if ([key isEqualToString:PFObjectCreatedAtRESTKey]) { + // These dates can be passed in as NSDate or as NSString, + // depending on whether they were wrapped inside JSONObject with __type: Date or not. + if ([obj isKindOfClass:[NSDate class]]) { + state.createdAt = obj; + } else { + [state setCreatedAtFromString:obj]; + } + } else if ([key isEqualToString:PFObjectUpdatedAtRESTKey]) { + // These dates can be passed in as NSDate or as NSString, + // depending on whether they were wrapped inside JSONObject with __type: Date or not. + if ([obj isKindOfClass:[NSDate class]]) { + state.updatedAt = obj; + } else { + [state setUpdatedAtFromString:obj]; + } + } else if ([key isEqualToString:PFObjectACLRESTKey]) { + PFACL *acl = [PFACL ACLWithDictionary:obj]; + [state setServerDataObject:acl forKey:key]; + [self checkpointMutableContainer:acl]; + } else { + [state setServerDataObject:[decoder decodeObject:obj] forKey:key]; + } + }]; + if (state.updatedAt == nil && state.createdAt != nil) { + state.updatedAt = state.createdAt; + } + self._state = state; + [_availableKeys addObjectsFromArray:[result allKeys]]; + + dirty = NO; + } +} + +///-------------------------------------- +#pragma mark - Command handlers +///-------------------------------------- + +// We can't get rid of these handlers, because subclasses override them +// to add special actions after operations. + +- (BFTask *)handleSaveResultAsync:(NSDictionary *)result { + BFTask *task = [BFTask taskWithResult:nil]; + + NSDictionary *fetchedObjects = [self _collectFetchedObjects]; + + [task continueWithBlock:^id(BFTask *task) { + PFKnownParseObjectDecoder *decoder = [PFKnownParseObjectDecoder decoderWithFetchedObjects:fetchedObjects]; + @synchronized (self.lock) { + // TODO (hallucinogen): t5611821 we need to make mergeAfterSave that accepts decoder and operationBeforeSave + [self _mergeAfterSaveWithResult:result decoder:decoder]; + } + return nil; + }]; + + PFOfflineStore *store = [Parse _currentManager].offlineStore; + if (store != nil) { + task = [task continueWithBlock:^id(BFTask *task) { + return [store updateDataForObjectAsync:self]; + }]; + } + + return [task continueWithBlock:^id(BFTask *task) { + @synchronized (lock) { + if (self.saveDelegate) { + [self.saveDelegate invoke:self error:nil]; + } + return [BFTask taskWithResult:@(!!result)]; + } + }]; +} + +///-------------------------------------- +#pragma mark - Asynchronous operations +///-------------------------------------- + +- (void)startSave { + @synchronized (lock) { + [operationSetQueue addObject:[[PFOperationSet alloc] init]]; + } +} + +- (BFTask *)saveAsync:(BFTask *)toAwait { + PFCurrentUserController *controller = [[self class] currentUserController]; + return [[controller getCurrentObjectAsync] continueWithBlock:^id(BFTask *task) { + PFUser *currentUser = task.result; + NSString *sessionToken = currentUser.sessionToken; + + BFTask *await = toAwait ?: [BFTask taskWithResult:nil]; + return [[await continueAsyncWithBlock:^id(BFTask *task) { + PFOfflineStore *offlineStore = [Parse _currentManager].offlineStore; + if (offlineStore != nil) { + return [offlineStore fetchObjectLocallyAsync:self]; + } + return nil; + }] continueWithBlock:^id(BFTask *task) { + @synchronized (lock) { + if (![self isDirty:YES]) { + return [BFTask taskWithResult:@YES]; + } + + [self _objectWillSave]; + + // Snapshot the current set of changes, and push a new changeset into the queue. + PFOperationSet *changes = [self unsavedChanges]; + + [self startSave]; + BFTask *childrenTask = [self _saveChildrenInBackgroundWithCurrentUser:currentUser + sessionToken:sessionToken]; + if (!dirty && ![changes count]) { + return childrenTask; + } + return [[childrenTask continueWithSuccessBlock:^id(BFTask *task) { + [self _checkSaveParametersWithCurrentUser:currentUser]; + PFRESTCommand *command = [self _constructSaveCommandForChanges:changes + sessionToken:sessionToken + objectEncoder:[PFPointerObjectEncoder objectEncoder]]; + return [[Parse _currentManager].commandRunner runCommandAsync:command + withOptions:PFCommandRunningOptionRetryIfFailed]; + }] continueAsyncWithBlock:^id(BFTask *task) { + if (task.isCancelled || task.exception || task.error) { + // If there was an error, we want to roll forward the save changes before rethrowing. + BFTask *commandRunnerTask = task; + return [[self handleSaveResultAsync:nil] continueWithBlock:^id(BFTask *task) { + return commandRunnerTask; + }]; + } + PFCommandResult *result = task.result; + return [self handleSaveResultAsync:result.result]; + }]; + } + }]; + }]; +} + +- (BFTask *)fetchAsync:(BFTask *)toAwait { + PFCurrentUserController *controller = [[self class] currentUserController]; + return [[controller getCurrentUserSessionTokenAsync] continueWithBlock:^id(BFTask *task) { + NSString *sessionToken = task.result; + return [toAwait continueAsyncWithBlock:^id(BFTask *task) { + return [[[self class] objectController] fetchObjectAsync:self withSessionToken:sessionToken]; + }]; + }]; +} + +- (BFTask *)deleteAsync:(BFTask *)toAwait { + PFCurrentUserController *controller = [[self class] currentUserController]; + return [[controller getCurrentUserSessionTokenAsync] continueWithBlock:^id(BFTask *task) { + NSString *sessionToken = task.result; + return [toAwait continueAsyncWithBlock:^id(BFTask *task) { + return [[[self class] objectController] deleteObjectAsync:self withSessionToken:sessionToken]; + }]; + }]; +} + +///-------------------------------------- +#pragma mark - Command constructors +///-------------------------------------- + +- (PFRESTCommand *)_constructSaveCommandForChanges:(PFOperationSet *)changes + sessionToken:(NSString *)sessionToken + objectEncoder:(PFEncoder *)encoder { + @synchronized (lock) { + NSDictionary *parameters = [self _convertToDictionaryForSaving:changes withObjectEncoder:encoder]; + + if (self._state.objectId) { + return [PFRESTObjectCommand updateObjectCommandForObjectState:self._state + changes:parameters + operationSetUUID:changes.uuid + sessionToken:sessionToken]; + } + + return [PFRESTObjectCommand createObjectCommandForObjectState:self._state + changes:parameters + operationSetUUID:changes.uuid + sessionToken:sessionToken]; + + } +} + +- (PFRESTCommand *)_currentDeleteCommandWithSessionToken:(NSString *)sessionToken { + return [PFRESTObjectCommand deleteObjectCommandForObjectState:self._state withSessionToken:sessionToken]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (void)_setObject:(id)object forKey:(NSString *)key onlyIfDifferent:(BOOL)onlyIfDifferent { + PFParameterAssert(object != nil && key != nil, + @"Can't use nil for keys or values on PFObject. Use NSNull for values."); + PFParameterAssert([key isKindOfClass:[NSString class]], @"PFObject keys must be NSStrings."); + + if (onlyIfDifferent) { + id currentObject = self[key]; + if (currentObject == object || + [currentObject isEqual:object]) { + return; + } + } + + @synchronized (lock) { + if ([object isKindOfClass:[PFFieldOperation class]]) { + [self performOperation:object forKey:key]; + return; + } + + PFObjectAssertValueIsKindOfValidClass(object); + [self performOperation:[PFSetOperation setWithValue:object] forKey:key]; + } +} + +///-------------------------------------- +#pragma mark - Misc helpers +///-------------------------------------- + +- (NSString *)displayObjectId { + return self._state.objectId ?: @"new"; +} + +- (NSString *)displayClassName { + return self._state.parseClassName; +} + +- (void)registerSaveListener:(void (^)(id result, NSError *error))callback { + @synchronized (lock) { + if (!self.saveDelegate) { + self.saveDelegate = [[PFMulticastDelegate alloc] init]; + } + [self.saveDelegate subscribe:callback]; + } +} + +- (void)unregisterSaveListener:(void (^)(id result, NSError *error))callback { + @synchronized (lock) { + if (!self.saveDelegate) { + self.saveDelegate = [[PFMulticastDelegate alloc] init]; + } + [self.saveDelegate unsubscribe:callback]; + } +} + +- (PFACL *)ACLWithoutCopying { + @synchronized (lock) { + return _estimatedData[@"ACL"]; + } +} + +// Overriden by classes which want to ignore the default ACL. +- (void)setDefaultValues { + if ([self needsDefaultACL]) { + PFACL *defaultACL = [PFACL defaultACL]; + if (defaultACL) { + self.ACL = defaultACL; + } + } +} + +- (BOOL)needsDefaultACL { + return YES; +} + +- (NSDictionary *)_collectFetchedObjects { + NSMutableDictionary *fetchedObjects = [NSMutableDictionary dictionary]; + @synchronized (lock) { + NSDictionary *dictionary = _estimatedData.dictionaryRepresentation; + [PFInternalUtils traverseObject:dictionary usingBlock:^id(id obj) { + if ([obj isKindOfClass:[PFObject class]]) { + PFObject *object = obj; + NSString *objectId = object.objectId; + if (objectId && [object isDataAvailable]) { + fetchedObjects[objectId] = object; + } + } + return obj; + }]; + } + return fetchedObjects; +} + +@end + +@implementation PFObject + +@synthesize _availableKeys = _availableKeys; + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + if (!_pfinternal_state) { + PFConsistencyAssert([self conformsToProtocol:@protocol(PFSubclassing)], + @"Can only call -[PFObject init] on subclasses conforming to PFSubclassing."); + [PFObject assertSubclassIsRegistered:[self class]]; + _pfinternal_state = [[self class] _newObjectStateWithParseClassName:[[self class] parseClassName] + objectId:nil + isComplete:YES]; + } + [[self class] _assertValidInstanceClassName:_pfinternal_state.parseClassName]; + + lock = [[NSObject alloc] init]; + operationSetQueue = [NSMutableArray arrayWithObject:[[PFOperationSet alloc] init]]; + _estimatedData = [PFObjectEstimatedData estimatedDataFromServerData:_pfinternal_state.serverData + operationSetQueue:operationSetQueue]; + _availableKeys = [NSMutableSet set]; + hashedObjectsCache = [[NSMutableDictionary alloc] init]; + self.taskQueue = [[PFTaskQueue alloc] init]; + _eventuallyTaskQueue = [[PFTaskQueue alloc] init]; + + if (_pfinternal_state.complete) { + dirty = YES; + [self setDefaultValues]; + } + + return self; +} + +- (instancetype)initWithClassName:(NSString *)className { + PFObjectState *state = [[self class] _newObjectStateWithParseClassName:className objectId:nil isComplete:YES]; + return [self initWithObjectState:state]; +} + +- (instancetype)initWithObjectState:(PFObjectState *)state { + _pfinternal_state = state; + return [self init]; +} + ++ (instancetype)objectWithClassName:(NSString *)className + objectId:(NSString *)objectId + completeData:(BOOL)completeData { + Class class = [[[self class] subclassingController] subclassForParseClassName:className] ?: [PFObject class]; + PFObjectState *state = [class _newObjectStateWithParseClassName:className objectId:objectId isComplete:completeData]; + PFObject *object = [[class alloc] initWithObjectState:state]; + if (!completeData) { + PFConsistencyAssert(![object _hasChanges], + @"The init method of %@ set values on the object, which is not allowed.", class); + } + return object; +} + ++ (instancetype)objectWithClassName:(NSString *)className { + return [self objectWithClassName:className objectId:nil completeData:YES]; +} + ++ (instancetype)objectWithClassName:(NSString *)className dictionary:(NSDictionary *)dictionary { + PFObject *object = [self objectWithClassName:className]; + [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + object[key] = obj; + }]; + return object; +} + ++ (instancetype)objectWithoutDataWithClassName:(NSString *)className objectId:(NSString *)objectId { + // Try get single instance from OfflineStore + PFOfflineStore *store = [Parse _currentManager].offlineStore; + if (store != nil && objectId != nil) { + PFObject *singleObject = [store getOrCreateObjectWithoutDataWithClassName:className objectId:objectId]; + if (singleObject) { + return singleObject; + } + } + + // Local Datastore is not enabled or cannot found the single instance using objectId, let's use the old way + return [self objectWithClassName:className objectId:objectId completeData:NO]; +} + +#pragma mark Subclassing + ++ (instancetype)object { + PFConsistencyAssert([self conformsToProtocol:@protocol(PFSubclassing)], + @"Can only call +object on subclasses conforming to PFSubclassing"); + NSString *className = [(id)self parseClassName]; + Class class = [[self subclassingController] subclassForParseClassName:className] ?: [PFObject class]; + return [class objectWithClassName:className]; +} + ++ (instancetype)objectWithoutDataWithObjectId:(NSString *)objectId { + PFConsistencyAssert([self conformsToProtocol:@protocol(PFSubclassing)], + @"Can only call objectWithoutDataWithObjectId: on subclasses conforming to PFSubclassing"); + return [self objectWithoutDataWithClassName:[(id)self parseClassName] objectId:objectId]; +} + +#pragma mark Private + ++ (instancetype)objectWithoutDataWithClassName:(NSString *)className localId:(NSString *)localId { + PFObject *object = [self objectWithoutDataWithClassName:className objectId:nil]; + object.localId = localId; + return object; +} + +///-------------------------------------- +#pragma mark - PFObjectPrivateSubclass +///-------------------------------------- + +#pragma mark State + ++ (PFObjectState *)_newObjectStateWithParseClassName:(NSString *)className + objectId:(NSString *)objectId + isComplete:(BOOL)complete { + return [PFObjectState stateWithParseClassName:className objectId:objectId isComplete:complete]; +} + +///-------------------------------------- +#pragma mark - Validation +///-------------------------------------- + +- (BFTask PF_GENERIC(PFVoid) *)_validateFetchAsync { + if (!self._state.objectId) { + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorMissingObjectId + message:@"Can't fetch an object that hasn't been saved to the server."]; + return [BFTask taskWithError:error]; + } + return [BFTask taskWithResult:nil]; +} + +- (BFTask PF_GENERIC(PFVoid) *)_validateDeleteAsync { + return [BFTask taskWithResult:nil]; +} + +- (BFTask PF_GENERIC(PFVoid) *)_validateSaveEventuallyAsync { + return [BFTask taskWithResult:nil]; +} + +#pragma mark Object Will Save + +- (void)_objectWillSave { + // Do nothing. +} + +///-------------------------------------- +#pragma mark - Properties +///-------------------------------------- + +- (void)set_state:(PFObjectState *)state { + @synchronized(lock) { + NSString *oldObjectId = _pfinternal_state.objectId; + if (self._state != state) { + _pfinternal_state = [state copy]; + } + + NSString *newObjectId = _pfinternal_state.objectId; + if (![PFObjectUtilities isObject:oldObjectId equalToObject:newObjectId]) { + [self _notifyObjectIdChangedFrom:oldObjectId toObjectId:newObjectId]; + } + } +} + +- (PFObjectState *)_state { + @synchronized(lock) { + return _pfinternal_state; + } +} + +- (PFObjectEstimatedData *)_estimatedData { + @synchronized (lock) { + return _estimatedData; + } +} + +- (void)setObjectId:(NSString *)objectId { + @synchronized (lock) { + NSString *oldObjectId = self._state.objectId; + if ([PFObjectUtilities isObject:oldObjectId equalToObject:objectId]) { + return; + } + + dirty = YES; + + PFMutableObjectState *state = [self._state mutableCopy]; + state.objectId = objectId; + _pfinternal_state = state; + + [self _notifyObjectIdChangedFrom:oldObjectId toObjectId:objectId]; + } +} + +- (NSString *)objectId { + return self._state.objectId; +} + +- (void)_notifyObjectIdChangedFrom:(NSString *)fromObjectId toObjectId:(NSString *)toObjectId { + @synchronized (self.lock) { + // The OfflineStore might raise exception if this object already had a different objectId. + PFOfflineStore *store = [Parse _currentManager].offlineStore; + if (store != nil) { + [store updateObjectIdForObject:self oldObjectId:fromObjectId newObjectId:toObjectId]; + } + if (self.localId) { + [[Parse _currentManager].coreManager.objectLocalIdStore setObjectId:toObjectId forLocalId:self.localId]; + self.localId = nil; + } + } +} + +- (NSString *)parseClassName { + return self._state.parseClassName; +} + +- (NSDate *)updatedAt { + return self._state.updatedAt; +} + +- (NSDate *)createdAt { + return self._state.createdAt; +} + +- (PFACL *)ACL { + return self[@"ACL"]; +} + +- (void)setACL:(PFACL *)ACL { + if (!ACL) { + [self removeObjectForKey:@"ACL"]; + } else { + self[@"ACL"] = ACL; + } +} + +// PFObject(): +@synthesize localId; +@synthesize taskQueue; + +// PFObject(Private): +@synthesize saveDelegate; + +///-------------------------------------- +#pragma mark - PFObject factory methods for Subclassing +///-------------------------------------- + +// Reverse compatibility note: many people may have built PFObject subclasses before +// we officially supported them. Our implementation can do cool stuff, but requires +// the parseClassName class method. ++ (void)registerSubclass { + [[self subclassingController] registerSubclass:self]; +} + ++ (PFQuery *)query { + PFConsistencyAssert([self conformsToProtocol:@protocol(PFSubclassing)], + @"+[PFObject query] can only be called on subclasses conforming to PFSubclassing."); + [PFObject assertSubclassIsRegistered:self]; + return [PFQuery queryWithClassName:[(id)self parseClassName]]; +} + ++ (PFQuery *)queryWithPredicate:(NSPredicate *)predicate { + PFConsistencyAssert([self conformsToProtocol:@protocol(PFSubclassing)], + @"+[PFObject queryWithPredicate:] can only be called on subclasses conforming to PFSubclassing."); + [PFObject assertSubclassIsRegistered:[self class]]; + return [PFQuery queryWithClassName:[(id)self parseClassName] predicate:predicate]; +} + ++ (void)assertSubclassIsRegistered:(Class)subclass { + // If people hacked their own subclass together before we supported it officially, we shouldn't break their app. + if ([subclass conformsToProtocol:@protocol(PFSubclassing)]) { + Class registration = [[self subclassingController] subclassForParseClassName:[subclass parseClassName]]; + + // It's OK to subclass a subclass (i.e. custom PFUser implementation) + PFConsistencyAssert(registration && (registration == subclass || [registration isSubclassOfClass:subclass]), + @"The class %@ must be registered with registerSubclass before using Parse.", subclass); + } +} + +///-------------------------------------- +#pragma mark - Delete commands +///-------------------------------------- + +- (BOOL)delete { + return [self delete:nil]; +} + +- (BOOL)delete:(NSError **)error { + return [[[self deleteInBackground] waitForResult:error] boolValue]; +} + +- (BFTask *)deleteInBackground { + return [self.taskQueue enqueue:^BFTask *(BFTask *toAwait) { + return [[self deleteAsync:toAwait] continueWithSuccessResult:@YES]; + }]; +} + +- (void)deleteInBackgroundWithTarget:(id)target selector:(SEL)selector { + [self deleteInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:@(succeeded) object:error]; + }]; +} + +- (void)deleteInBackgroundWithBlock:(PFBooleanResultBlock)block { + [[self deleteInBackground] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +///-------------------------------------- +#pragma mark - Save commands +///-------------------------------------- + +- (BOOL)save { + return [self save:nil]; +} + +- (BOOL)save:(NSError **)error { + return [[[self saveInBackground] waitForResult:error] boolValue]; +} + +- (BFTask *)saveInBackground { + return [self.taskQueue enqueue:^BFTask *(BFTask *toAwait) { + return [self saveAsync:toAwait]; + }]; +} + +- (void)saveInBackgroundWithTarget:(id)target selector:(SEL)selector { + [self saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:@(succeeded) object:error]; + }]; +} + +- (void)saveInBackgroundWithBlock:(PFBooleanResultBlock)block { + [[self saveInBackground] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +- (BFTask *)saveEventually { + return [[self _enqueueSaveEventuallyWithChildren:YES] continueWithSuccessBlock:^id(BFTask *task) { + // The result of the previous task will be an instance of BFTask. + // Returning it here will trigger the whole task stack become an actual save task. + return task.result; + }]; +} + +- (void)saveEventually:(PFBooleanResultBlock)block { + [[self saveEventually] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +- (BFTask *)deleteEventually { + return [[[_eventuallyTaskQueue enqueue:^BFTask *(BFTask *toAwait) { + NSString *sessionToken = [PFUser currentSessionToken]; + return [[toAwait continueAsyncWithBlock:^id(BFTask *task) { + return [self _validateDeleteAsync]; + }] continueWithSuccessBlock:^id(BFTask *task) { + @synchronized (lock) { + _deletingEventually += 1; + + PFOfflineStore *store = [Parse _currentManager].offlineStore; + BFTask *updateDataTask = store ? [store updateDataForObjectAsync:self] : [BFTask taskWithResult:nil]; + + PFRESTCommand *command = [self _currentDeleteCommandWithSessionToken:sessionToken]; + BFTask *deleteTask = [updateDataTask continueWithBlock:^id(BFTask *task) { + return [[Parse _currentManager].eventuallyQueue enqueueCommandInBackground:command withObject:self]; + }]; + deleteTask = [deleteTask continueWithSuccessBlock:^id(BFTask *task) { + // PFPinningEventuallyQueue handles delete result directly. + if (![Parse _currentManager].offlineStoreLoaded) { + PFCommandResult *result = task.result; + return [[[self class] objectController] processDeleteResultAsync:result.result forObject:self]; + } + return task; + }]; + return deleteTask; + } + }]; + }] continueWithSuccessBlock:^id(BFTask *task) { + // The result of the previous task will be an instance of BFTask. + // Returning it here will trigger the whole task stack become an actual save task. + return task.result; + }] continueWithSuccessResult:@YES]; +} + +///-------------------------------------- +#pragma mark - Dirtiness +///-------------------------------------- + +- (BOOL)isDirty { + return [self isDirty:YES]; +} + +- (BOOL)isDirtyForKey:(NSString *)key { + @synchronized (lock) { + [self checkForChangesToMutableContainer:_estimatedData[key] forKey:key]; + return !![[self unsavedChanges] objectForKey:key]; + } +} + +///-------------------------------------- +#pragma mark - Fetch +///-------------------------------------- + +- (BOOL)isDataAvailable { + return self._state.complete; +} + +- (instancetype)refresh { + return [self fetch]; +} + +- (instancetype)refresh:(NSError **)error { + return [self fetch:error]; +} + +- (void)refreshInBackgroundWithTarget:(id)target selector:(SEL)selector { + [self fetchInBackgroundWithTarget:target selector:selector]; +} + +- (void)refreshInBackgroundWithBlock:(PFObjectResultBlock)block { + [self fetchInBackgroundWithBlock:block]; +} + +- (instancetype)fetch { + return [self fetch:nil]; +} + +- (instancetype)fetch:(NSError **)error { + return [[self fetchInBackground] waitForResult:error]; +} + +- (BFTask *)fetchInBackground { + if (!self._state.objectId) { + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorMissingObjectId + message:@"Can't refresh an object that hasn't been saved to the server."]; + return [BFTask taskWithError:error]; + } + return [self.taskQueue enqueue:^BFTask *(BFTask *toAwait) { + return [self fetchAsync:toAwait]; + }]; +} + +- (void)fetchInBackgroundWithBlock:(PFObjectResultBlock)block { + [[self fetchInBackground] thenCallBackOnMainThreadAsync:block]; +} + +- (void)fetchInBackgroundWithTarget:(id)target selector:(SEL)selector { + [self fetchInBackgroundWithBlock:^(PFObject *object, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:object object:error]; + }]; +} + +- (instancetype)fetchIfNeeded { + return [self fetchIfNeeded:nil]; +} + +- (instancetype)fetchIfNeeded:(NSError **)error { + return [[self fetchIfNeededInBackground] waitForResult:error]; +} + +- (BFTask *)fetchIfNeededInBackground { + if ([self isDataAvailable]) { + return [BFTask taskWithResult:self]; + } + return [self fetchInBackground]; +} + +- (void)fetchIfNeededInBackgroundWithBlock:(PFObjectResultBlock)block { + [[self fetchIfNeededInBackground] thenCallBackOnMainThreadAsync:block]; +} + +- (void)fetchIfNeededInBackgroundWithTarget:(id)target selector:(SEL)selector { + [self fetchIfNeededInBackgroundWithBlock:^(PFObject *object, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:object object:error]; + }]; +} + +///-------------------------------------- +#pragma mark - Fetching Many Objects +///-------------------------------------- + ++ (NSArray *)fetchAll:(NSArray *)objects { + return [self fetchAll:objects error:nil]; +} + ++ (NSArray *)fetchAllIfNeeded:(NSArray *)objects { + return [self fetchAllIfNeeded:objects error:nil]; +} + ++ (NSArray *)fetchAll:(NSArray *)objects error:(NSError **)error { + return [[self fetchAllInBackground:objects] waitForResult:error]; +} + ++ (NSArray *)fetchAllIfNeeded:(NSArray *)objects error:(NSError **)error { + return [[self fetchAllIfNeededInBackground:objects] waitForResult:error]; +} + ++ (BFTask *)fetchAllInBackground:(NSArray *)objects { + // Snapshot the objects array. + NSArray *fetchObjects = [objects copy]; + + if (fetchObjects.count == 0) { + return [BFTask taskWithResult:fetchObjects]; + } + NSArray *uniqueObjects = [PFObjectBatchController uniqueObjectsArrayFromArray:fetchObjects omitObjectsWithData:NO]; + return [[[[self currentUserController] getCurrentUserSessionTokenAsync] continueWithBlock:^id(BFTask *task) { + NSString *sessionToken = task.result; + return [PFObject _enqueue:^BFTask *(BFTask *toAwait) { + return [toAwait continueAsyncWithBlock:^id(BFTask *task) { + return [[self objectBatchController] fetchObjectsAsync:uniqueObjects withSessionToken:sessionToken]; + }]; + } forObjects:uniqueObjects]; + }] continueWithSuccessResult:fetchObjects]; +} + ++ (void)fetchAllInBackground:(NSArray *)objects target:(id)target selector:(SEL)selector { + [self fetchAllInBackground:objects block:^(NSArray *objects, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:objects object:error]; + }]; +} + ++ (void)fetchAllInBackground:(NSArray *)objects block:(PFArrayResultBlock)block { + [[self fetchAllInBackground:objects] thenCallBackOnMainThreadAsync:block]; +} + ++ (BFTask *)fetchAllIfNeededInBackground:(NSArray *)objects { + NSArray *fetchObjects = [objects copy]; + if (fetchObjects.count == 0) { + return [BFTask taskWithResult:fetchObjects]; + } + NSArray *uniqueObjects = [PFObjectBatchController uniqueObjectsArrayFromArray:fetchObjects omitObjectsWithData:YES]; + return [[[[self currentUserController] getCurrentUserSessionTokenAsync] continueWithBlock:^id(BFTask *task) { + NSString *sessionToken = task.result; + return [PFObject _enqueue:^BFTask *(BFTask *toAwait) { + return [toAwait continueAsyncWithBlock:^id(BFTask *task) { + return [[self objectBatchController] fetchObjectsAsync:uniqueObjects withSessionToken:sessionToken]; + }]; + } forObjects:uniqueObjects]; + }] continueWithSuccessResult:fetchObjects]; +} + ++ (void)fetchAllIfNeededInBackground:(NSArray *)objects target:(id)target selector:(SEL)selector { + [self fetchAllIfNeededInBackground:objects block:^(NSArray *objects, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:objects object:error]; + }]; +} + ++ (void)fetchAllIfNeededInBackground:(NSArray *)objects block:(PFArrayResultBlock)block { + [[self fetchAllIfNeededInBackground:objects] thenCallBackOnMainThreadAsync:block]; +} + +///-------------------------------------- +#pragma mark - Fetch From Local Datastore +///-------------------------------------- + +- (instancetype)fetchFromLocalDatastore { + return [self fetchFromLocalDatastore:nil]; +} + +- (instancetype)fetchFromLocalDatastore:(NSError **)error { + return [[self fetchFromLocalDatastoreInBackground] waitForResult:error]; +} + +- (void)fetchFromLocalDatastoreInBackgroundWithBlock:(PFObjectResultBlock)block { + [[self fetchFromLocalDatastoreInBackground] thenCallBackOnMainThreadAsync:block]; +} + +- (BFTask *)fetchFromLocalDatastoreInBackground { + PFOfflineStore *store = [Parse _currentManager].offlineStore; + PFConsistencyAssert(store != nil, @"You must enable the local datastore before calling fetchFromLocalDatastore()."); + return [store fetchObjectLocallyAsync:self]; +} + +///-------------------------------------- +#pragma mark - Key/Value Accessors +///-------------------------------------- + +- (void)setObject:(id)object forKey:(NSString *)key { + [self _setObject:object forKey:key onlyIfDifferent:NO]; +} + +- (void)setObject:(id)object forKeyedSubscript:(NSString *)key { + [self setObject:object forKey:key]; +} + +- (id)objectForKey:(NSString *)key { + @synchronized (lock) { + PFConsistencyAssert([self isDataAvailableForKey:key], + @"Key \"%@\" has no data. Call fetchIfNeeded before getting its value.", key); + + id result = _estimatedData[key]; + if ([key isEqualToString:PFObjectACLRESTKey] && [result isKindOfClass:[PFACL class]]) { + PFACL *acl = result; + if ([acl isShared]) { + PFACL *copy = [acl createUnsharedCopy]; + self[PFObjectACLRESTKey] = copy; + return copy; + } + } + + // A relation may be deserialized without a parent or key. Either way, make sure it's consistent. + // TODO: (nlutsenko) This should be removable after we clean up the serialization code. + if ([result isKindOfClass:[PFRelation class]]) { + [result ensureParentIs:self andKeyIs:key]; + } + + return result; + } +} + +- (id)objectForKeyedSubscript:(NSString *)key { + return [self objectForKey:key]; +} + +- (void)removeObjectForKey:(NSString *)key { + @synchronized (lock) { + if ([self objectForKey:key]) { + PFDeleteOperation *operation = [[PFDeleteOperation alloc] init]; + [self performOperation:operation forKey:key]; + } + } +} + +- (void)revert { + @synchronized (self.lock) { + if ([self isDirty]) { + NSMutableSet *persistentKeys = [NSMutableSet setWithArray:[self._state.serverData allKeys]]; + + PFOperationSet *unsavedChanges = [self unsavedChanges]; + for (PFOperationSet *operationSet in operationSetQueue) { + if (operationSet != unsavedChanges) { + [persistentKeys addObjectsFromArray:[operationSet.keyEnumerator allObjects]]; + } + } + + [unsavedChanges removeAllObjects]; + [_availableKeys intersectSet:persistentKeys]; + + [self rebuildEstimatedData]; + [self checkpointAllMutableContainers]; + } + } +} + +- (void)revertObjectForKey:(NSString *)key { + @synchronized (self.lock) { + if ([self isDirtyForKey:key]) { + [[self unsavedChanges] removeObjectForKey:key]; + [self rebuildEstimatedData]; + [_availableKeys removeObject:key]; + [self checkpointAllMutableContainers]; + } + } +} + +#pragma mark Relations + +- (PFRelation *)relationforKey:(NSString *)key { + return [self relationForKey:key]; +} + +- (PFRelation *)relationForKey:(NSString *)key { + @synchronized (lock) { + // All the sanity checking is done when addObject or + // removeObject is called on the relation. + PFRelation *relation = [PFRelation relationForObject:self forKey:key]; + + id object = _estimatedData[key]; + if ([object isKindOfClass:[PFRelation class]]) { + relation.targetClass = ((PFRelation *)object).targetClass; + } + return relation; + } +} + +#pragma mark Array + +- (void)addObject:(id)object forKey:(NSString *)key { + [self addObjectsFromArray:@[ object ] forKey:key]; +} + +- (void)addObjectsFromArray:(NSArray *)objects forKey:(NSString *)key { + [self performOperation:[PFAddOperation addWithObjects:objects] forKey:key]; +} + +- (void)addUniqueObject:(id)object forKey:(NSString *)key { + [self addUniqueObjectsFromArray:@[ object ] forKey:key]; +} + +- (void)addUniqueObjectsFromArray:(NSArray *)objects forKey:(NSString *)key { + [self performOperation:[PFAddUniqueOperation addUniqueWithObjects:objects] forKey:key]; +} + +- (void)removeObject:(id)object forKey:(NSString *)key { + [self removeObjectsInArray:@[ object ] forKey:key]; +} + +- (void)removeObjectsInArray:(NSArray *)objects forKey:(NSString *)key { + [self performOperation:[PFRemoveOperation removeWithObjects:objects] forKey:key]; +} + +#pragma mark Increment + +- (void)incrementKey:(NSString *)key { + [self incrementKey:key byAmount:@1]; +} + +- (void)incrementKey:(NSString *)key byAmount:(NSNumber *)amount { + [self performOperation:[PFIncrementOperation incrementWithAmount:amount] forKey:key]; +} + +///-------------------------------------- +#pragma mark - Key Value Coding +///-------------------------------------- + +- (id)valueForUndefinedKey:(NSString *)key { + return self[key]; +} + +- (void)setValue:(id)value forUndefinedKey:(NSString *)key { + self[key] = value; +} + +///-------------------------------------- +#pragma mark - Misc +///-------------------------------------- + +- (NSArray *)allKeys { + @synchronized (lock) { + return [_estimatedData allKeys]; + } +} + +- (NSString *)description { + static NSString *descriptionKey = @"PFObject-PrintingDescription"; + + NSMutableDictionary *threadDictionary = [NSThread currentThread].threadDictionary; + if ([threadDictionary[descriptionKey] boolValue]) { + return [self _flatDescription]; + } + threadDictionary[descriptionKey] = @YES; + NSString *description = [self _recursiveDescription]; + [threadDictionary removeObjectForKey:descriptionKey]; + return description; +} + +- (NSString *)_recursiveDescription { + @synchronized (lock) { + return [NSString stringWithFormat:@"%@ %@", + [self _flatDescription], [_estimatedData.dictionaryRepresentation description]]; + } +} + +- (NSString *)_flatDescription { + @synchronized (lock) { + return [NSString stringWithFormat:@"<%@: %p, objectId: %@, localId: %@>", + self.displayClassName, self, [self displayObjectId], localId]; + } +} + +///-------------------------------------- +#pragma mark - Save all +///-------------------------------------- + ++ (BOOL)saveAll:(NSArray *)objects { + return [PFObject saveAll:objects error:nil]; +} + ++ (BOOL)saveAll:(NSArray *)objects error:(NSError **)error { + return [[[self saveAllInBackground:objects] waitForResult:error] boolValue]; +} + ++ (BFTask *)saveAllInBackground:(NSArray *)objects { + PFCurrentUserController *controller = [[self class] currentUserController]; + return [[controller getCurrentObjectAsync] continueWithBlock:^id(BFTask *task) { + PFUser *currentUser = task.result; + NSString *sessionToken = currentUser.sessionToken; + return [PFObject _deepSaveAsync:objects withCurrentUser:currentUser sessionToken:sessionToken]; + }]; +} + ++ (void)saveAllInBackground:(NSArray *)objects target:(id)target selector:(SEL)selector { + [PFObject saveAllInBackground:objects block:^(BOOL succeeded, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:@(succeeded) object:error]; + }]; +} + ++ (void)saveAllInBackground:(NSArray *)objects block:(PFBooleanResultBlock)block { + [[PFObject saveAllInBackground:objects] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +///-------------------------------------- +#pragma mark - Delete all +///-------------------------------------- + ++ (BOOL)deleteAll:(NSArray *)objects { + return [PFObject deleteAll:objects error:nil]; +} + ++ (BOOL)deleteAll:(NSArray *)objects error:(NSError **)error { + return [[[self deleteAllInBackground:objects] waitForResult:error] boolValue]; +} + ++ (BFTask PF_GENERIC(NSNumber *) *)deleteAllInBackground:(NSArray *)objects { + NSArray *deleteObjects = [objects copy]; // Snapshot the objects. + if (deleteObjects.count == 0) { + return [BFTask PF_GENERIC(NSNumber *) taskWithResult:@YES]; + } + return [[[[self currentUserController] getCurrentUserSessionTokenAsync] continueWithBlock:^id(BFTask *task) { + NSString *sessionToken = task.result; + + NSArray *uniqueObjects = [PFObjectBatchController uniqueObjectsArrayFromArray:deleteObjects usingFilter:^BOOL(PFObject *object) { + return (object.objectId != nil); + }]; + NSMutableArray PF_GENERIC(BFTask *) *validationTasks = [NSMutableArray array]; + for (PFObject *object in uniqueObjects) { + [validationTasks addObject:[object _validateDeleteAsync]]; + } + return [[BFTask taskForCompletionOfAllTasks:validationTasks] continueWithSuccessBlock:^id(BFTask *task) { + return [self _enqueue:^BFTask *(BFTask *toAwait) { + return [toAwait continueAsyncWithBlock:^id(BFTask *task) { + return [[self objectBatchController] deleteObjectsAsync:uniqueObjects + withSessionToken:sessionToken]; + }]; + } forObjects:uniqueObjects]; + }]; + }] continueWithSuccessResult:@YES]; +} + ++ (void)deleteAllInBackground:(NSArray *)objects target:(id)target selector:(SEL)selector { + [PFObject deleteAllInBackground:objects block:^(BOOL succeeded, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:@(succeeded) object:error]; + }]; +} + ++ (void)deleteAllInBackground:(NSArray *)objects block:(PFBooleanResultBlock)block { + [[self deleteAllInBackground:objects] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +///-------------------------------------- +#pragma mark - Dynamic synthesizers +///-------------------------------------- + +// NOTE: The ONLY reason this needs to exist is to support mocking PFObject subclasses. +// +// The reason mocking doesn't work is because OCMClassMock looks for methods that exist on the class already, and will +// not be able to use our dynamic instance-level method resolving. By implementing this, we give this method a signature +// once, and then tell the runtime to forward that message on from there. +// +// Note that by implementing it this way, we no longer need to implement -methodSignatureForSelector: or +// -respondsToSelector:, as the method will be dynamically resolved by the runtime when either of those methods is +// invoked. ++ (BOOL)resolveInstanceMethod:(SEL)sel { + if (self == [PFObject class]) { + return NO; + } + + NSMethodSignature *signature = [[self subclassingController] forwardingMethodSignatureForSelector:sel ofClass:self]; + if (!signature) { + return NO; + } + + // Convert the method signature *back* into a objc type string (sidenote, why isn't this a built in?). + NSMutableString *typeString = [NSMutableString stringWithFormat:@"%s", [signature methodReturnType]]; + for (NSUInteger argumentIndex = 0; argumentIndex < [signature numberOfArguments]; argumentIndex++) { + [typeString appendFormat:@"%s", [signature getArgumentTypeAtIndex:argumentIndex]]; + } + + // TODO: (richardross) Support stret return here (will need to introspect the method signature to do so). + class_addMethod(self, sel, _objc_msgForward, [typeString UTF8String]); + + return YES; +} + +- (void)forwardInvocation:(NSInvocation *)anInvocation { + if (![[[self class] subclassingController] forwardObjectInvocation:anInvocation + withObject:(PFObject *)self]) { + [self doesNotRecognizeSelector:anInvocation.selector]; + } +} + +///-------------------------------------- +#pragma mark - Pinning +///-------------------------------------- + +- (BOOL)pin { + return [self pin:nil]; +} + +- (BOOL)pin:(NSError **)error { + return [self pinWithName:PFObjectDefaultPin error:error]; +} + +- (BFTask *)pinInBackground { + return [self pinInBackgroundWithName:PFObjectDefaultPin]; +} + +- (void)pinInBackgroundWithBlock:(PFBooleanResultBlock)block { + [[self pinInBackground] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +- (BOOL)pinWithName:(NSString *)name { + return [self pinWithName:name error:nil]; +} + +- (BOOL)pinWithName:(NSString *)name error:(NSError **)error { + return [[[self pinInBackgroundWithName:name] waitForResult:error] boolValue]; +} + +- (void)pinInBackgroundWithName:(NSString *)name block:(PFBooleanResultBlock)block { + [[self pinInBackgroundWithName:name] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +- (BFTask *)pinInBackgroundWithName:(NSString *)name { + return [self _pinInBackgroundWithName:name includeChildren:YES]; +} + +- (BFTask *)_pinInBackgroundWithName:(NSString *)name includeChildren:(BOOL)includeChildren { + return [[self class] _pinAllInBackground:@[ self ] withName:name includeChildren:includeChildren]; +} + +///-------------------------------------- +#pragma mark - Pinning Many Objects +///-------------------------------------- + ++ (BOOL)pinAll:(NSArray *)objects { + return [self pinAll:objects error:nil]; +} + ++ (BOOL)pinAll:(NSArray *)objects error:(NSError **)error { + return [self pinAll:objects withName:PFObjectDefaultPin error:error]; +} + ++ (BFTask *)pinAllInBackground:(NSArray *)objects { + return [self pinAllInBackground:objects withName:PFObjectDefaultPin]; +} + ++ (void)pinAllInBackground:(NSArray *)objects + block:(PFBooleanResultBlock)block { + [[self pinAllInBackground:objects] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + ++ (BOOL)pinAll:(NSArray *)objects withName:(NSString *)name { + return [self pinAll:objects withName:name error:nil]; +} + ++ (BOOL)pinAll:(NSArray *)objects withName:(NSString *)name error:(NSError **)error { + return [[[self pinAllInBackground:objects withName:name] waitForResult:error] boolValue]; +} + ++ (BFTask *)pinAllInBackground:(NSArray *)objects withName:(NSString *)name { + return [self _pinAllInBackground:objects withName:name includeChildren:YES]; +} + ++ (void)pinAllInBackground:(NSArray *)objects + withName:(NSString *)name + block:(PFBooleanResultBlock)block { + [[self pinAllInBackground:objects withName:name] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + ++ (BFTask *)_pinAllInBackground:(NSArray *)objects + withName:(NSString *)name + includeChildren:(BOOL)includeChildren { + return [[self pinningObjectStore] pinObjectsAsync:objects + withPinName:name + includeChildren:includeChildren]; +} + +///-------------------------------------- +#pragma mark - Unpinning +///-------------------------------------- + +- (BOOL)unpin { + return [self unpinWithName:PFObjectDefaultPin]; +} + +- (BOOL)unpin:(NSError **)error { + return [self unpinWithName:PFObjectDefaultPin error:error]; +} + +- (BFTask *)unpinInBackground { + return [self unpinInBackgroundWithName:PFObjectDefaultPin]; +} + +- (void)unpinInBackgroundWithBlock:(PFBooleanResultBlock)block { + [[self unpinInBackground] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +- (BOOL)unpinWithName:(NSString *)name { + return [self unpinWithName:name error:nil]; +} + +- (BOOL)unpinWithName:(NSString *)name error:(NSError **)error { + return [[[self unpinInBackgroundWithName:name] waitForResult:error] boolValue]; +} + +- (BFTask *)unpinInBackgroundWithName:(NSString *)name { + return [[self class] unpinAllInBackground:@[ self ] withName:name]; +} + +- (void)unpinInBackgroundWithName:(NSString *)name block:(PFBooleanResultBlock)block { + [[self unpinInBackgroundWithName:name] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +///-------------------------------------- +#pragma mark - Unpinning Many Objects +///-------------------------------------- + ++ (BOOL)unpinAllObjects { + return [self unpinAllObjects:nil]; +} + ++ (BOOL)unpinAllObjects:(NSError **)error { + return [self unpinAllObjectsWithName:PFObjectDefaultPin error:error]; +} + ++ (BFTask *)unpinAllObjectsInBackground { + return [self unpinAllObjectsInBackgroundWithName:PFObjectDefaultPin]; +} + ++ (void)unpinAllObjectsInBackgroundWithBlock:(PFBooleanResultBlock)block { + [[self unpinAllObjectsInBackground] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + ++ (BOOL)unpinAllObjectsWithName:(NSString *)name { + return [self unpinAllObjectsWithName:name error:nil]; +} + ++ (BOOL)unpinAllObjectsWithName:(NSString *)name error:(NSError **)error { + return [[[self unpinAllObjectsInBackgroundWithName:name] waitForResult:error] boolValue]; +} + ++ (void)unpinAllObjectsInBackgroundWithName:(NSString *)name block:(PFBooleanResultBlock)block { + [[self unpinAllObjectsInBackgroundWithName:name] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + ++ (BFTask *)unpinAllObjectsInBackgroundWithName:(NSString *)name { + return [[self pinningObjectStore] unpinAllObjectsAsyncWithPinName:name]; +} + ++ (BOOL)unpinAll:(NSArray *)objects { + return [self unpinAll:objects error:nil]; +} + ++ (BOOL)unpinAll:(NSArray *)objects error:(NSError **)error { + return [self unpinAll:objects withName:PFObjectDefaultPin error:error]; +} + ++ (BFTask *)unpinAllInBackground:(NSArray *)objects { + return [self unpinAllInBackground:objects withName:PFObjectDefaultPin]; +} + ++ (void)unpinAllInBackground:(NSArray *)objects block:(PFBooleanResultBlock)block { + [[self unpinAllInBackground:objects] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + ++ (BOOL)unpinAll:(NSArray *)objects withName:(NSString *)name { + return [self unpinAll:objects withName:name error:nil]; +} + ++ (BOOL)unpinAll:(NSArray *)objects withName:(NSString *)name error:(NSError **)error { + return [[[self unpinAllInBackground:objects withName:name] waitForResult:error] boolValue]; +} + ++ (BFTask *)unpinAllInBackground:(NSArray *)objects withName:(NSString *)name { + return [[self pinningObjectStore] unpinObjectsAsync:objects withPinName:name]; +} + ++ (void)unpinAllInBackground:(NSArray *)objects + withName:(NSString *)name + block:(PFBooleanResultBlock)block { + [[self unpinAllInBackground:objects withName:name] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +///-------------------------------------- +#pragma mark - Data Source +///-------------------------------------- + ++ (id)objectController { + return [Parse _currentManager].coreManager.objectController; +} + ++ (PFObjectFileCodingLogic *)objectFileCodingLogic { + return [PFObjectFileCodingLogic codingLogic]; +} + ++ (PFObjectBatchController *)objectBatchController { + return [Parse _currentManager].coreManager.objectBatchController; +} + ++ (PFPinningObjectStore *)pinningObjectStore { + return [Parse _currentManager].coreManager.pinningObjectStore; +} + ++ (PFCurrentUserController *)currentUserController { + return [Parse _currentManager].coreManager.currentUserController; +} + ++ (PFObjectSubclassingController *)subclassingController { + return [PFObjectSubclassingController defaultController]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFProduct.h b/Unit-2-Journal/Pods/Parse/Parse/PFProduct.h new file mode 100644 index 0000000..e895d6b --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFProduct.h @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import +#import +#import +#import + +PF_ASSUME_NONNULL_BEGIN + +/*! + The `PFProduct` class represents an in-app purchase product on the Parse server. + By default, products can only be created via the Data Browser. Saving a `PFProduct` will result in error. + However, the products' metadata information can be queried and viewed. + + This class is currently for iOS only. + */ +PF_WATCH_UNAVAILABLE @interface PFProduct : PFObject + +///-------------------------------------- +/// @name Product-specific Properties +///-------------------------------------- + +/*! + @abstract The product identifier of the product. + + @discussion This should match the product identifier in iTunes Connect exactly. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, strong) NSString *productIdentifier; + +/*! + @abstract The icon of the product. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, strong) PFFile *icon; + +/*! + @abstract The title of the product. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, strong) NSString *title; + +/*! + @abstract The subtitle of the product. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, strong) NSString *subtitle; + +/*! + @abstract The order in which the product information is displayed in . + + @discussion The product with a smaller order is displayed earlier in the . + */ +@property (PF_NULLABLE_PROPERTY nonatomic, strong) NSNumber *order; + +/*! + @abstract The name of the associated download. + + @discussion If there is no downloadable asset, it should be `nil`. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, strong, readonly) NSString *downloadName; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFProduct.m b/Unit-2-Journal/Pods/Parse/Parse/PFProduct.m new file mode 100644 index 0000000..4eb2f2b --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFProduct.m @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFProduct.h" +#import "PFProduct+Private.h" + +#import "PFAssert.h" +#import "PFObject+Subclass.h" + +@implementation PFProduct + +@dynamic productIdentifier; +@dynamic icon; +@dynamic title; +@dynamic subtitle; +@dynamic order; +@dynamic downloadName; + +///-------------------------------------- +#pragma mark - PFSubclassing +///-------------------------------------- + +// Validates a class name. We override this to only allow the product class name. ++ (void)_assertValidInstanceClassName:(NSString *)className { + PFParameterAssert([className isEqualToString:[PFProduct parseClassName]], + @"Cannot initialize a PFProduct with a custom class name."); +} + ++ (NSString *)parseClassName { + return @"_Product"; +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + +@dynamic price; +@dynamic priceLocale; +@dynamic contentPath; +@dynamic progress; + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFPurchase.h b/Unit-2-Journal/Pods/Parse/Parse/PFPurchase.h new file mode 100644 index 0000000..b681cc1 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFPurchase.h @@ -0,0 +1,98 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import +#import + +#import +#import + +@class PFProduct; + +PF_ASSUME_NONNULL_BEGIN + +typedef void (^PFPurchaseProductObservationBlock)(SKPaymentTransaction *transaction); +typedef void (^PFPurchaseBuyProductResultBlock)(NSError *PF_NULLABLE_S error); +typedef void (^PFPurchaseDownloadAssetResultBlock)(NSString *PF_NULLABLE_S filePath, NSError *PF_NULLABLE_S error); + +/*! + `PFPurchase` provides a set of APIs for working with in-app purchases. + + This class is currently for iOS only. + */ +@interface PFPurchase : NSObject + +/*! + @abstract Add application logic block which is run when buying a product. + + @discussion This method should be called once for each product, and should be called before + calling . All invocations to should happen within + the same method, and on the main thread. It is recommended to place all invocations of this method + in `application:didFinishLaunchingWithOptions:`. + + @param productIdentifier the product identifier + @param block The block to be run when buying a product. + */ ++ (void)addObserverForProduct:(NSString *)productIdentifier block:(PFPurchaseProductObservationBlock)block; + +/*! + @abstract *Asynchronously* initiates the purchase for the product. + + @param productIdentifier the product identifier + @param block the completion block. + */ ++ (void)buyProduct:(NSString *)productIdentifier block:(PFPurchaseBuyProductResultBlock)block; + +/*! + @abstract *Asynchronously* download the purchased asset, which is stored on Parse's server. + + @discussion Parse verifies the receipt with Apple and delivers the content only if the receipt is valid. + + @param transaction the transaction, which contains the receipt. + @param completion the completion block. + */ ++ (void)downloadAssetForTransaction:(SKPaymentTransaction *)transaction + completion:(PFPurchaseDownloadAssetResultBlock)completion; + +/*! + @abstract *Asynchronously* download the purchased asset, which is stored on Parse's server. + + @discussion Parse verifies the receipt with Apple and delivers the content only if the receipt is valid. + + @param transaction the transaction, which contains the receipt. + @param completion the completion block. + @param progress the progress block, which is called multiple times to reveal progress of the download. + */ ++ (void)downloadAssetForTransaction:(SKPaymentTransaction *)transaction + completion:(PFPurchaseDownloadAssetResultBlock)completion + progress:(PF_NULLABLE PFProgressBlock)progress; + +/*! + @abstract *Asynchronously* restore completed transactions for the current user. + + @discussion Only nonconsumable purchases are restored. If observers for the products have been added before + calling this method, invoking the method reruns the application logic associated with the purchase. + + @warning This method is only important to developers who want to preserve purchase states across + different installations of the same app. + */ ++ (void)restore; + +/*! + @abstract Returns a content path of the asset of a product, if it was purchased and downloaded. + + @discussion To download and verify purchases use . + + @warning This method will return `nil`, if the purchase wasn't verified or if the asset was not downloaded. + */ ++ (PF_NULLABLE NSString *)assetContentPathForProduct:(PFProduct *)product; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFPurchase.m b/Unit-2-Journal/Pods/Parse/Parse/PFPurchase.m new file mode 100644 index 0000000..52ee0f8 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFPurchase.m @@ -0,0 +1,89 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPurchase.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFConstants.h" +#import "PFPaymentTransactionObserver.h" +#import "PFProduct.h" +#import "PFPurchaseController.h" +#import "PFUserPrivate.h" +#import "Parse_Private.h" + +@implementation PFPurchase + +///-------------------------------------- +#pragma mark - Public +///-------------------------------------- + ++ (void)addObserverForProduct:(NSString *)productIdentifier block:(PFPurchaseProductObservationBlock)block { + // We require the following method to run on the main thread because we want to add the observer + // *after* all products handlers have been added. Developers might be calling this method multiple + // times; and if the observer is added after the first call, the observer might not know how to + // handle some purchases. + + PFConsistencyAssert([NSThread isMainThread], @"%@ must be called on the main thread.", NSStringFromSelector(_cmd)); + PFParameterAssert(productIdentifier, @"You must pass in a valid product identifier."); + PFParameterAssert(block, @"You must pass in a valid block for the product."); + + [[Parse _currentManager].purchaseController.transactionObserver handle:productIdentifier block:block]; +} + ++ (void)buyProduct:(NSString *)productIdentifier block:(PFPurchaseBuyProductResultBlock)completion { + [[[self _purchaseController] buyProductAsyncWithIdentifier:productIdentifier] continueWithBlock:^id(BFTask *task) { + if (completion) { + completion(task.error); + } + return nil; + }]; +} + ++ (void)restore { + [[self _purchaseController].paymentQueue restoreCompletedTransactions]; +} + ++ (void)downloadAssetForTransaction:(SKPaymentTransaction *)transaction + completion:(PFPurchaseDownloadAssetResultBlock)completion { + [self downloadAssetForTransaction:transaction completion:completion progress:nil]; +} + ++ (void)downloadAssetForTransaction:(SKPaymentTransaction *)transaction + completion:(PFPurchaseDownloadAssetResultBlock)completion + progress:(PFProgressBlock)progress { + @weakify(self); + [[[PFUser _getCurrentUserSessionTokenAsync] continueWithBlock:^id(BFTask *task) { + @strongify(self); + NSString *sessionToken = task.result; + return [[self _purchaseController] downloadAssetAsyncForTransaction:transaction + withProgressBlock:progress + sessionToken:sessionToken]; + }] continueWithMainThreadResultBlock:completion executeIfCancelled:YES]; +} + ++ (NSString *)assetContentPathForProduct:(PFProduct *)product { + NSString *path = [[self _purchaseController] assetContentPathForProductWithIdentifier:product.productIdentifier + fileName:product.downloadName]; + if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { + return path; + } + + return nil; +} + +///-------------------------------------- +#pragma mark - Purchase Controller +///-------------------------------------- + ++ (PFPurchaseController *)_purchaseController { + return [Parse _currentManager].purchaseController; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFPush.h b/Unit-2-Journal/Pods/Parse/Parse/PFPush.h new file mode 100644 index 0000000..6cff85b --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFPush.h @@ -0,0 +1,532 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import +#import + +@class PFQuery PF_GENERIC(PFGenericObject : PFObject *); + +PF_ASSUME_NONNULL_BEGIN + +/*! + The `PFPush` class defines a push notification that can be sent from a client device. + + The preferred way of modifying or retrieving channel subscriptions is to use + the class, instead of the class methods in `PFPush`. + */ +@interface PFPush : NSObject + +///-------------------------------------- +/// @name Creating a Push Notification +///-------------------------------------- + ++ (instancetype)push; + +///-------------------------------------- +/// @name Configuring a Push Notification +///-------------------------------------- + +/*! + @abstract Sets the channel on which this push notification will be sent. + + @param channel The channel to set for this push. + The channel name must start with a letter and contain only letters, numbers, dashes, and underscores. + */ +- (void)setChannel:(PF_NULLABLE NSString *)channel; + +/*! + @abstract Sets the array of channels on which this push notification will be sent. + + @param channels The array of channels to set for this push. + Each channel name must start with a letter and contain only letters, numbers, dashes, and underscores. + */ +- (void)setChannels:(PF_NULLABLE NSArray PF_GENERIC(NSString *) *)channels; + +/*! + @abstract Sets an installation query to which this push notification will be sent. + + @discussion The query should be created via <[PFInstallation query]> and should not specify a skip, limit, or order. + + @param query The installation query to set for this push. + */ +- (void)setQuery:(PF_NULLABLE PFQuery PF_GENERIC(PFInstallation *) *)query; + +/*! + @abstract Sets an alert message for this push notification. + + @warning This will overwrite any data specified in setData. + + @param message The message to send in this push. + */ +- (void)setMessage:(PF_NULLABLE NSString *)message; + +/*! + @abstract Sets an arbitrary data payload for this push notification. + + @discussion See the guide for information about the dictionary structure. + + @warning This will overwrite any data specified in setMessage. + + @param data The data to send in this push. + */ +- (void)setData:(PF_NULLABLE NSDictionary *)data; + +/*! + @abstract Sets whether this push will go to Android devices. + + @param pushToAndroid Whether this push will go to Android devices. + + @deprecated Please use a `[PFInstallation query]` with a constraint on deviceType instead. + */ +- (void)setPushToAndroid:(BOOL)pushToAndroid PARSE_DEPRECATED("Please use a [PFInstallation query] with a constraint on deviceType. This method is deprecated and won't do anything."); + +/*! + @abstract Sets whether this push will go to iOS devices. + + @param pushToIOS Whether this push will go to iOS devices. + + @deprecated Please use a `[PFInstallation query]` with a constraint on deviceType instead. + */ +- (void)setPushToIOS:(BOOL)pushToIOS PARSE_DEPRECATED("Please use a [PFInstallation query] with a constraint on deviceType. This method is deprecated and won't do anything."); + +/*! + @abstract Sets the expiration time for this notification. + + @discussion The notification will be sent to devices which are either online + at the time the notification is sent, or which come online before the expiration time is reached. + Because device clocks are not guaranteed to be accurate, + most applications should instead use . + + @see expireAfterTimeInterval: + + @param date The time at which the notification should expire. + */ +- (void)expireAtDate:(PF_NULLABLE NSDate *)date; + +/*! + @abstract Sets the time interval after which this notification should expire. + + @discussion This notification will be sent to devices which are either online at + the time the notification is sent, or which come online within the given + time interval of the notification being received by Parse's server. + An interval which is less than or equal to zero indicates that the + message should only be sent to devices which are currently online. + + @param timeInterval The interval after which the notification should expire. + */ +- (void)expireAfterTimeInterval:(NSTimeInterval)timeInterval; + +/*! + @abstract Clears both expiration values, indicating that the notification should never expire. + */ +- (void)clearExpiration; + +///-------------------------------------- +/// @name Sending Push Notifications +///-------------------------------------- + +/*! + @abstract *Synchronously* send a push message to a channel. + + @param channel The channel to send to. The channel name must start with + a letter and contain only letters, numbers, dashes, and underscores. + @param message The message to send. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the send succeeded. + */ ++ (BOOL)sendPushMessageToChannel:(NSString *)channel + withMessage:(NSString *)message + error:(NSError **)error; + +/*! + @abstract *Asynchronously* send a push message to a channel. + + @param channel The channel to send to. The channel name must start with + a letter and contain only letters, numbers, dashes, and underscores. + @param message The message to send. + + @returns The task, that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(NSNumber *)*)sendPushMessageToChannelInBackground:(NSString *)channel + withMessage:(NSString *)message; + +/*! + @abstract *Asynchronously* sends a push message to a channel and calls the given block. + + @param channel The channel to send to. The channel name must start with + a letter and contain only letters, numbers, dashes, and underscores. + @param message The message to send. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)` + */ ++ (void)sendPushMessageToChannelInBackground:(NSString *)channel + withMessage:(NSString *)message + block:(PF_NULLABLE PFBooleanResultBlock)block; + +/* + @abstract *Asynchronously* send a push message to a channel. + + @param channel The channel to send to. The channel name must start with + a letter and contain only letters, numbers, dashes, and underscores. + @param message The message to send. + @param target The object to call selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSNumber *)result error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `[result boolValue]` will tell you whether the call succeeded or not. + */ ++ (void)sendPushMessageToChannelInBackground:(NSString *)channel + withMessage:(NSString *)message + target:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector; + +/*! + @abstract Send a push message to a query. + + @param query The query to send to. The query must be a query created with <[PFInstallation query]>. + @param message The message to send. + @param error Pointer to an NSError that will be set if necessary. + + @returns Returns whether the send succeeded. + */ ++ (BOOL)sendPushMessageToQuery:(PFQuery PF_GENERIC(PFInstallation *) *)query + withMessage:(NSString *)message + error:(NSError **)error; + +/*! + @abstract *Asynchronously* send a push message to a query. + + @param query The query to send to. The query must be a query created with <[PFInstallation query]>. + @param message The message to send. + + @returns The task, that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(NSNumber *)*)sendPushMessageToQueryInBackground:(PFQuery PF_GENERIC(PFInstallation *) *)query + withMessage:(NSString *)message; + +/*! + @abstract *Asynchronously* sends a push message to a query and calls the given block. + + @param query The query to send to. The query must be a PFInstallation query + created with [PFInstallation query]. + @param message The message to send. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)` + */ ++ (void)sendPushMessageToQueryInBackground:(PFQuery PF_GENERIC(PFInstallation *) *)query + withMessage:(NSString *)message + block:(PF_NULLABLE PFBooleanResultBlock)block; + +/*! + @abstract *Synchronously* send this push message. + + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the send succeeded. + */ +- (BOOL)sendPush:(NSError **)error; + +/*! + @abstract *Asynchronously* send this push message. + @returns The task, that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(NSNumber *)*)sendPushInBackground; + +/*! + @abstract *Asynchronously* send this push message and executes the given callback block. + + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + */ +- (void)sendPushInBackgroundWithBlock:(PF_NULLABLE PFBooleanResultBlock)block; + +/* + @abstract *Asynchronously* send this push message and calls the given callback. + + @param target The object to call selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSNumber *)result error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `[result boolValue]` will tell you whether the call succeeded or not. + */ +- (void)sendPushInBackgroundWithTarget:(PF_NULLABLE_S id)target selector:(PF_NULLABLE_S SEL)selector; + +/*! + @abstract *Synchronously* send a push message with arbitrary data to a channel. + + @discussion See the guide for information about the dictionary structure. + + @param channel The channel to send to. The channel name must start with + a letter and contain only letters, numbers, dashes, and underscores. + @param data The data to send. + @param error Pointer to an NSError that will be set if necessary. + + @returns Returns whether the send succeeded. + */ ++ (BOOL)sendPushDataToChannel:(NSString *)channel + withData:(NSDictionary *)data + error:(NSError **)error; + +/*! + @abstract *Asynchronously* send a push message with arbitrary data to a channel. + + @discussion See the guide for information about the dictionary structure. + + @param channel The channel to send to. The channel name must start with + a letter and contain only letters, numbers, dashes, and underscores. + @param data The data to send. + + @returns The task, that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(NSNumber *)*)sendPushDataToChannelInBackground:(NSString *)channel + withData:(NSDictionary *)data; + +/*! + @abstract Asynchronously sends a push message with arbitrary data to a channel and calls the given block. + + @discussion See the guide for information about the dictionary structure. + + @param channel The channel to send to. The channel name must start with + a letter and contain only letters, numbers, dashes, and underscores. + @param data The data to send. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + */ ++ (void)sendPushDataToChannelInBackground:(NSString *)channel + withData:(NSDictionary *)data + block:(PF_NULLABLE PFBooleanResultBlock)block; + +/* + @abstract *Asynchronously* send a push message with arbitrary data to a channel. + + @discussion See the guide for information about the dictionary structure. + + @param channel The channel to send to. The channel name must start with + a letter and contain only letters, numbers, dashes, and underscores. + @param data The data to send. + @param target The object to call selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSNumber *)result error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `[result boolValue]` will tell you whether the call succeeded or not. + */ ++ (void)sendPushDataToChannelInBackground:(NSString *)channel + withData:(NSDictionary *)data + target:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector; + +/*! + @abstract *Synchronously* send a push message with arbitrary data to a query. + + @discussion See the guide for information about the dictionary structure. + + @param query The query to send to. The query must be a query + created with <[PFInstallation query]>. + @param data The data to send. + @param error Pointer to an NSError that will be set if necessary. + + @returns Returns whether the send succeeded. + */ ++ (BOOL)sendPushDataToQuery:(PFQuery PF_GENERIC(PFInstallation *) *)query + withData:(NSDictionary *)data + error:(NSError **)error; + +/*! + @abstract Asynchronously send a push message with arbitrary data to a query. + + @discussion See the guide for information about the dictionary structure. + + @param query The query to send to. The query must be a query + created with <[PFInstallation query]>. + @param data The data to send. + + @returns The task, that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(NSNumber *)*)sendPushDataToQueryInBackground:(PFQuery PF_GENERIC(PFInstallation *) *)query + withData:(NSDictionary *)data; + +/*! + @abstract *Asynchronously* sends a push message with arbitrary data to a query and calls the given block. + + @discussion See the guide for information about the dictionary structure. + + @param query The query to send to. The query must be a query + created with <[PFInstallation query]>. + @param data The data to send. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + */ ++ (void)sendPushDataToQueryInBackground:(PFQuery PF_GENERIC(PFInstallation *) *)query + withData:(NSDictionary *)data + block:(PF_NULLABLE PFBooleanResultBlock)block; + +///-------------------------------------- +/// @name Handling Notifications +///-------------------------------------- + +/*! + @abstract A default handler for push notifications while the app is active that + could be used to mimic the behavior of iOS push notifications while the app is backgrounded or not running. + + @discussion Call this from `application:didReceiveRemoteNotification:`. + If push has a dictionary containing loc-key and loc-args in the alert, + we support up to 10 items in loc-args (`NSRangeException` if limit exceeded). + + @warning This method is available only on iOS. + + @param userInfo The userInfo dictionary you get in `appplication:didReceiveRemoteNotification:`. + */ ++ (void)handlePush:(PF_NULLABLE NSDictionary *)userInfo NS_AVAILABLE_IOS(3_0) PF_EXTENSION_UNAVAILABLE(""); + +///-------------------------------------- +/// @name Managing Channel Subscriptions +///-------------------------------------- + +/*! + @abstract Store the device token locally for push notifications. + + @discussion Usually called from you main app delegate's `didRegisterForRemoteNotificationsWithDeviceToken:`. + + @param deviceToken Either as an `NSData` straight from `application:didRegisterForRemoteNotificationsWithDeviceToken:` + or as an `NSString` if you converted it yourself. + */ ++ (void)storeDeviceToken:(id)deviceToken; + +/*! + @abstract *Synchronously* get all the channels that this device is subscribed to. + + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns an `NSSet` containing all the channel names this device is subscribed to. + */ ++ (PF_NULLABLE NSSet *)getSubscribedChannels:(NSError **)error; + +/*! + @abstract *Asynchronously* get all the channels that this device is subscribed to. + + @returns The task, that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(NSSet *)*)getSubscribedChannelsInBackground; + +/*! + @abstract *Asynchronously* get all the channels that this device is subscribed to. + @param block The block to execute. + It should have the following argument signature: `^(NSSet *channels, NSError *error)`. + */ ++ (void)getSubscribedChannelsInBackgroundWithBlock:(PFSetResultBlock)block; + +/* + @abstract *Asynchronously* get all the channels that this device is subscribed to. + + @param target The object to call selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSSet *)result error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + */ ++ (void)getSubscribedChannelsInBackgroundWithTarget:(id)target + selector:(SEL)selector; + +/*! + @abstract *Synchrnously* subscribes the device to a channel of push notifications. + + @param channel The channel to subscribe to. The channel name must start with + a letter and contain only letters, numbers, dashes, and underscores. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the subscribe succeeded. + */ ++ (BOOL)subscribeToChannel:(NSString *)channel error:(NSError **)error; + +/*! + @abstract *Asynchronously* subscribes the device to a channel of push notifications. + + @param channel The channel to subscribe to. The channel name must start with + a letter and contain only letters, numbers, dashes, and underscores. + + @returns The task, that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(NSNumber *)*)subscribeToChannelInBackground:(NSString *)channel; + +/*! + @abstract *Asynchronously* subscribes the device to a channel of push notifications and calls the given block. + + @param channel The channel to subscribe to. The channel name must start with + a letter and contain only letters, numbers, dashes, and underscores. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)` + */ ++ (void)subscribeToChannelInBackground:(NSString *)channel + block:(PF_NULLABLE PFBooleanResultBlock)block; + +/* + @abstract *Asynchronously* subscribes the device to a channel of push notifications and calls the given callback. + + @param channel The channel to subscribe to. The channel name must start with + a letter and contain only letters, numbers, dashes, and underscores. + @param target The object to call selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSNumber *)result error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `[result boolValue]` will tell you whether the call succeeded or not. + */ ++ (void)subscribeToChannelInBackground:(NSString *)channel + target:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector; + +/*! + @abstract *Synchronously* unsubscribes the device to a channel of push notifications. + + @param channel The channel to unsubscribe from. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns whether the unsubscribe succeeded. + */ ++ (BOOL)unsubscribeFromChannel:(NSString *)channel error:(NSError **)error; + +/*! + @abstract *Asynchronously* unsubscribes the device from a channel of push notifications. + + @param channel The channel to unsubscribe from. + + @returns The task, that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(NSNumber *)*)unsubscribeFromChannelInBackground:(NSString *)channel; + +/*! + @abstract *Asynchronously* unsubscribes the device from a channel of push notifications and calls the given block. + + @param channel The channel to unsubscribe from. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + */ ++ (void)unsubscribeFromChannelInBackground:(NSString *)channel + block:(PF_NULLABLE PFBooleanResultBlock)block; + +/* + @abstract *Asynchronously* unsubscribes the device from a channel of push notifications and calls the given callback. + + @param channel The channel to unsubscribe from. + @param target The object to call selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSNumber *)result error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `[result boolValue]` will tell you whether the call succeeded or not. + */ ++ (void)unsubscribeFromChannelInBackground:(NSString *)channel + target:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFPush.m b/Unit-2-Journal/Pods/Parse/Parse/PFPush.m new file mode 100644 index 0000000..e5101dd --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFPush.m @@ -0,0 +1,464 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFPush.h" +#import "PFPushPrivate.h" + +#import + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFEncoder.h" +#import "PFHash.h" +#import "PFInstallationPrivate.h" +#import "PFKeychainStore.h" +#import "PFMacros.h" +#import "PFMutablePushState.h" +#import "PFMutableQueryState.h" +#import "PFPushChannelsController.h" +#import "PFPushController.h" +#import "PFPushManager.h" +#import "PFPushUtilities.h" +#import "PFQueryPrivate.h" +#import "PFUserPrivate.h" +#import "Parse_Private.h" + +static Class _pushInternalUtilClass = nil; + +@interface PFPush () + +@property (nonatomic, strong) PFMutablePushState *state; +@property (nonatomic, strong) PFQuery PF_GENERIC(PFInstallation *) *query; + +@end + +@implementation PFPush (Private) + ++ (Class)pushInternalUtilClass { + return _pushInternalUtilClass ?: [PFPushUtilities class]; +} + ++ (void)setPushInternalUtilClass:(Class)utilClass { + if (utilClass) { + PFParameterAssert([utilClass conformsToProtocol:@protocol(PFPushInternalUtils)], + @"utilClass must conform to PFPushInternalUtils protocol"); + } + _pushInternalUtilClass = utilClass; +} + +@end + +@implementation PFPush + +///-------------------------------------- +#pragma mark - Instance +///-------------------------------------- + +#pragma mark Init + ++ (instancetype)push { + return [[self alloc] init]; +} + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _state = [[PFMutablePushState alloc] init]; + + return self; +} + +#pragma mark Accessors + +- (void)setQuery:(PFQuery *)query { + PFParameterAssert(!self.state.channels || !query, @"Can't set both the query and channel(s) properties."); + _query = query; +} + +- (void)setChannelSet:(NSSet *)channelSet { + PFParameterAssert(!self.query || !channelSet, @"Can't set both the query and channel(s) properties."); + self.state.channels = channelSet; +} + +- (void)setChannel:(NSString *)channel { + self.channelSet = PF_SET(channel); +} + +- (void)setChannels:(NSArray *)channels { + self.channelSet = [NSSet setWithArray:channels]; +} + +- (void)setMessage:(NSString *)message { + [self.state setPayloadWithMessage:message]; +} + +- (void)expireAtDate:(NSDate *)date { + self.state.expirationDate = date; + self.state.expirationTimeInterval = nil; +} + +- (void)expireAfterTimeInterval:(NSTimeInterval)timeInterval { + self.state.expirationDate = nil; + self.state.expirationTimeInterval = @(timeInterval); +} + +- (void)clearExpiration { + self.state.expirationDate = nil; + self.state.expirationTimeInterval = nil; +} + +- (void)setData:(NSDictionary *)data { + self.state.payload = data; +} + +#pragma mark Sending + +- (BOOL)sendPush:(NSError **)error { + return [[[self sendPushInBackground] waitForResult:error] boolValue]; +} + +- (BFTask *)sendPushInBackground { + if (self.query) { + PFParameterAssert(!self.query.state.sortKeys, @"Cannot send push notifications to an ordered query."); + PFParameterAssert(self.query.state.limit == -1, @"Cannot send push notifications to a limit query."); + PFParameterAssert(self.query.state.skip == 0, @"Cannot send push notifications to a skip query."); + } + + // Capture state first. + PFPushController *pushController = [[self class] pushController]; + PFPushState *state = [self _currentStateCopy]; + return [[PFUser _getCurrentUserSessionTokenAsync] continueWithBlock:^id(BFTask *task) { + NSString *sessionToken = task.result; + return [pushController sendPushNotificationAsyncWithState:state sessionToken:sessionToken]; + }]; +} + +- (void)sendPushInBackgroundWithTarget:(id)target selector:(SEL)selector { + [self sendPushInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:@(succeeded) object:error]; + }]; +} + +- (void)sendPushInBackgroundWithBlock:(PFBooleanResultBlock)block { + [[self sendPushInBackground] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + +#pragma mark Command + +- (PFPushState *)_currentStateCopy { + if (self.query) { + PFMutablePushState *state = [self.state mutableCopy]; + state.queryState = self.query.state; + return [state copy]; + } + return [self.state copy]; +} + +///-------------------------------------- +#pragma mark - NSCopying +///-------------------------------------- + +- (instancetype)copyWithZone:(NSZone *)zone { + PFPush *push = [[PFPush allocWithZone:zone] init]; + push.state = [self.state mutableCopy]; + return push; +} + +///-------------------------------------- +#pragma mark - NSObject +///-------------------------------------- + +- (NSUInteger)hash { + return PFIntegerPairHash([self.query hash], [self.state hash]); +} + +- (BOOL)isEqual:(id)object { + if (self == object) { + return YES; + } + + if (![object isKindOfClass:[PFPush class]]) { + return NO; + } + + PFPush *push = (PFPush *)object; + return (((self.query == nil && push.query == nil) || + [self.query isEqual:push.query]) && + [self.state isEqual:push.state]); +} + +///-------------------------------------- +#pragma mark - Sending Push Notifications +///-------------------------------------- + +#pragma mark To Channel + ++ (BOOL)sendPushMessageToChannel:(NSString *)channel + withMessage:(NSString *)message + error:(NSError **)error { + return [[[self sendPushMessageToChannelInBackground:channel withMessage:message] waitForResult:error] boolValue]; +} + ++ (BFTask *)sendPushMessageToChannelInBackground:(NSString *)channel + withMessage:(NSString *)message { + NSDictionary *data = @{ @"alert" : message }; + return [self sendPushDataToChannelInBackground:channel withData:data]; +} + ++ (void)sendPushMessageToChannelInBackground:(NSString *)channel + withMessage:(NSString *)message + block:(PFBooleanResultBlock)block { + [[self sendPushMessageToChannelInBackground:channel + withMessage:message] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + ++ (void)sendPushMessageToChannelInBackground:(NSString *)channel + withMessage:(NSString *)message + target:(id)target + selector:(SEL)selector { + [self sendPushMessageToChannelInBackground:channel withMessage:message block:^(BOOL succeeded, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:@(succeeded) object:error]; + }]; +} + ++ (BOOL)sendPushDataToChannel:(NSString *)channel + withData:(NSDictionary *)data + error:(NSError **)error { + return [[[PFPush sendPushDataToChannelInBackground:channel withData:data] waitForResult:error] boolValue]; +} + ++ (BFTask *)sendPushDataToChannelInBackground:(NSString *)channel withData:(NSDictionary *)data { + PFPush *push = [self push]; + [push setChannel:channel]; + [push setData:data]; + return [push sendPushInBackground]; +} + ++ (void)sendPushDataToChannelInBackground:(NSString *)channel + withData:(NSDictionary *)data + block:(PFBooleanResultBlock)block { + [[self sendPushDataToChannelInBackground:channel withData:data] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + ++ (void)sendPushDataToChannelInBackground:(NSString *)channel + withData:(NSDictionary *)data + target:(id)target + selector:(SEL)selector { + [self sendPushDataToChannelInBackground:channel withData:data block:^(BOOL succeeded, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:@(succeeded) object:error]; + }]; +} + +#pragma mark To Query + ++ (BOOL)sendPushMessageToQuery:(PFQuery *)query + withMessage:(NSString *)message + error:(NSError **)error { + PFPush *push = [PFPush push]; + push.query = query; + push.message = message; + return [push sendPush:error]; +} + ++ (BFTask *)sendPushMessageToQueryInBackground:(PFQuery *)query + withMessage:(NSString *)message { + PFPush *push = [PFPush push]; + push.query = query; + push.message = message; + return [push sendPushInBackground]; +} + ++ (void)sendPushMessageToQueryInBackground:(PFQuery *)query + withMessage:(NSString *)message + block:(PFBooleanResultBlock)block { + PFPush *push = [PFPush push]; + push.query = query; + push.message = message; + [push sendPushInBackgroundWithBlock:block]; +} + + ++ (BOOL)sendPushDataToQuery:(PFQuery *)query + withData:(NSDictionary *)data + error:(NSError **)error { + PFPush *push = [PFPush push]; + push.query = query; + push.data = data; + return [push sendPush:error]; +} + ++ (BFTask *)sendPushDataToQueryInBackground:(PFQuery *)query + withData:(NSDictionary *)data { + PFPush *push = [PFPush push]; + push.query = query; + push.data = data; + return [push sendPushInBackground]; +} + ++ (void)sendPushDataToQueryInBackground:(PFQuery *)query + withData:(NSDictionary *)data + block:(PFBooleanResultBlock)block { + PFPush *push = [PFPush push]; + push.query = query; + push.data = data; + [push sendPushInBackgroundWithBlock:block]; +} + +///-------------------------------------- +#pragma mark - Channels +///-------------------------------------- + +#pragma mark Get + ++ (NSSet *)getSubscribedChannels:(NSError **)error { + return [[self getSubscribedChannelsInBackground] waitForResult:error]; +} + ++ (BFTask *)getSubscribedChannelsInBackground { + return [[self channelsController] getSubscribedChannelsAsync]; +} + ++ (void)getSubscribedChannelsInBackgroundWithBlock:(PFSetResultBlock)block { + [[self getSubscribedChannelsInBackground] thenCallBackOnMainThreadAsync:block]; +} + ++ (void)getSubscribedChannelsInBackgroundWithTarget:(id)target selector:(SEL)selector { + [self getSubscribedChannelsInBackgroundWithBlock:^(NSSet *channels, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:channels object:error]; + }]; +} + +#pragma mark Subscribe + ++ (BOOL)subscribeToChannel:(NSString *)channel error:(NSError **)error { + return [[[self subscribeToChannelInBackground:channel] waitForResult:error] boolValue]; +} + ++ (BFTask *)subscribeToChannelInBackground:(NSString *)channel { + return [[self channelsController] subscribeToChannelAsyncWithName:channel]; +} + ++ (void)subscribeToChannelInBackground:(NSString *)channel block:(PFBooleanResultBlock)block { + [[self subscribeToChannelInBackground:channel] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + ++ (void)subscribeToChannelInBackground:(NSString *)channel target:(id)target selector:(SEL)selector { + [self subscribeToChannelInBackground:channel block:^(BOOL succeeded, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:@(succeeded) object:error]; + }]; +} + +#pragma mark Unsubscribe + ++ (BOOL)unsubscribeFromChannel:(NSString *)channel error:(NSError **)error { + return [[[self unsubscribeFromChannelInBackground:channel] waitForResult:error] boolValue]; +} + ++ (BFTask *)unsubscribeFromChannelInBackground:(NSString *)channel { + return [[self channelsController] unsubscribeFromChannelAsyncWithName:channel]; +} + ++ (void)unsubscribeFromChannelInBackground:(NSString *)channel block:(PFBooleanResultBlock)block { + [[self unsubscribeFromChannelInBackground:channel] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + ++ (void)unsubscribeFromChannelInBackground:(NSString *)channel target:(id)target selector:(SEL)selector { + [self unsubscribeFromChannelInBackground:channel block:^(BOOL succeeded, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:@(succeeded) object:error]; + }]; +} + +///-------------------------------------- +#pragma mark - Handling Notifications +///-------------------------------------- + +#if PARSE_IOS_ONLY ++ (void)handlePush:(NSDictionary *)userInfo { + UIApplication *application = [UIApplication sharedApplication]; + if ([application applicationState] != UIApplicationStateActive) { + return; + } + + NSDictionary *aps = userInfo[@"aps"]; + id alert = aps[@"alert"]; + + if (alert) { + NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:(__bridge NSString *)kCFBundleNameKey]; + NSString *message = nil; + if ([alert isKindOfClass:[NSString class]]) { + message = alert; + } else if ([alert isKindOfClass:[NSDictionary class]]) { + NSDictionary *alertDict = alert; + NSString *locKey = alertDict[@"loc-key"]; + if (locKey) { + NSString *format = [[NSBundle mainBundle] localizedStringForKey:locKey value:@"" table:nil]; + message = [PFInternalUtils _stringWithFormat:format arguments:alertDict[@"loc-args"]]; + } + } + if (message) { + [[self pushInternalUtilClass] showAlertViewWithTitle:appName message:message]; + } + } + + NSNumber *badgeNumber = aps[@"badge"]; + if (badgeNumber) { + NSInteger number = [aps[@"badge"] integerValue]; + [application setApplicationIconBadgeNumber:number]; + } + + NSString *soundName = aps[@"sound"]; + + // Vibrate or play sound only if `sound` is specified. + if ([soundName isKindOfClass:[NSString class]] && soundName.length != 0) { + // Vibrate if the sound is `default`, otherwise - play the sound name. + if ([soundName isEqualToString:@"default"]) { + [[self pushInternalUtilClass] playVibrate]; + } else { + [[self pushInternalUtilClass] playAudioWithName:soundName]; + } + } +} +#endif + +///-------------------------------------- +#pragma mark - Store Token +///-------------------------------------- + ++ (void)storeDeviceToken:(id)deviceToken { + NSString *deviceTokenString = [[self pushInternalUtilClass] convertDeviceTokenToString:deviceToken]; + [PFInstallation currentInstallation].deviceToken = deviceTokenString; +} + +///-------------------------------------- +#pragma mark - Deprecated +///-------------------------------------- + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +- (void)setPushToIOS:(BOOL)pushToIOS { +} + +- (void)setPushToAndroid:(BOOL)pushToAndroid { +} +#pragma clang diagnostic pop + +///-------------------------------------- +#pragma mark - Push Manager +///-------------------------------------- + ++ (PFPushController *)pushController { + return [Parse _currentManager].pushManager.pushController; +} + ++ (PFPushChannelsController *)channelsController { + return [Parse _currentManager].pushManager.channelsController; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFQuery.h b/Unit-2-Journal/Pods/Parse/Parse/PFQuery.h new file mode 100644 index 0000000..661399a --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFQuery.h @@ -0,0 +1,892 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import +#import +#import +#import + +PF_ASSUME_NONNULL_BEGIN + +/*! + The `PFQuery` class defines a query that is used to query for s. + */ +@interface PFQuery PF_GENERIC(PFGenericObject : PFObject *) : NSObject + +///-------------------------------------- +/// @name Blocks +///-------------------------------------- + +typedef void (^PFQueryArrayResultBlock)(NSArray PF_GENERIC(PFGenericObject) * PF_NULLABLE_S objects, NSError * PF_NULLABLE_S error); + +///-------------------------------------- +/// @name Creating a Query for a Class +///-------------------------------------- + +/*! + @abstract Initializes the query with a class name. + + @param className The class name. + */ +- (instancetype)initWithClassName:(NSString *)className; + +/*! + @abstract Returns a `PFQuery` for a given class. + + @param className The class to query on. + + @returns A `PFQuery` object. + */ ++ (instancetype)queryWithClassName:(NSString *)className; + +/*! + @abstract Creates a PFQuery with the constraints given by predicate. + + @discussion The following types of predicates are supported: + + - Simple comparisons such as `=`, `!=`, `<`, `>`, `<=`, `>=`, and `BETWEEN` with a key and a constant. + - Containment predicates, such as `x IN {1, 2, 3}`. + - Key-existence predicates, such as `x IN SELF`. + - BEGINSWITH expressions. + - Compound predicates with `AND`, `OR`, and `NOT`. + - SubQueries with `key IN %@`, subquery. + + The following types of predicates are NOT supported: + + - Aggregate operations, such as `ANY`, `SOME`, `ALL`, or `NONE`. + - Regular expressions, such as `LIKE`, `MATCHES`, `CONTAINS`, or `ENDSWITH`. + - Predicates comparing one key to another. + - Complex predicates with many ORed clauses. + + @param className The class to query on. + @param predicate The predicate to create conditions from. + */ ++ (instancetype)queryWithClassName:(NSString *)className predicate:(PF_NULLABLE NSPredicate *)predicate; + +/*! + The class name to query for. + */ +@property (nonatomic, strong) NSString *parseClassName; + +///-------------------------------------- +/// @name Adding Basic Constraints +///-------------------------------------- + +/*! + @abstract Make the query include PFObjects that have a reference stored at the provided key. + + @discussion This has an effect similar to a join. You can use dot notation to specify which fields in + the included object are also fetch. + + @param key The key to load child s for. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)includeKey:(NSString *)key; + +/*! + @abstract Make the query restrict the fields of the returned s to include only the provided keys. + + @discussion If this is called multiple times, then all of the keys specified in each of the calls will be included. + + @param keys The keys to include in the result. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)selectKeys:(NSArray PF_GENERIC(NSString *) *)keys; + +/*! + @abstract Add a constraint that requires a particular key exists. + + @param key The key that should exist. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKeyExists:(NSString *)key; + +/*! + @abstract Add a constraint that requires a key not exist. + + @param key The key that should not exist. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKeyDoesNotExist:(NSString *)key; + +/*! + @abstract Add a constraint to the query that requires a particular key's object to be equal to the provided object. + + @param key The key to be constrained. + @param object The object that must be equalled. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key equalTo:(id)object; + +/*! + @abstract Add a constraint to the query that requires a particular key's object to be less than the provided object. + + @param key The key to be constrained. + @param object The object that provides an upper bound. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key lessThan:(id)object; + +/*! + @abstract Add a constraint to the query that requires a particular key's object + to be less than or equal to the provided object. + + @param key The key to be constrained. + @param object The object that must be equalled. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key lessThanOrEqualTo:(id)object; + +/*! + @abstract Add a constraint to the query that requires a particular key's object + to be greater than the provided object. + + @param key The key to be constrained. + @param object The object that must be equalled. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key greaterThan:(id)object; + +/*! + @abstract Add a constraint to the query that requires a particular key's + object to be greater than or equal to the provided object. + + @param key The key to be constrained. + @param object The object that must be equalled. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key greaterThanOrEqualTo:(id)object; + +/*! + @abstract Add a constraint to the query that requires a particular key's object + to be not equal to the provided object. + + @param key The key to be constrained. + @param object The object that must not be equalled. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key notEqualTo:(id)object; + +/*! + @abstract Add a constraint to the query that requires a particular key's object + to be contained in the provided array. + + @param key The key to be constrained. + @param array The possible values for the key's object. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key containedIn:(NSArray *)array; + +/*! + @abstract Add a constraint to the query that requires a particular key's object + not be contained in the provided array. + + @param key The key to be constrained. + @param array The list of values the key's object should not be. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key notContainedIn:(NSArray *)array; + +/*! + @abstract Add a constraint to the query that requires a particular key's array + contains every element of the provided array. + + @param key The key to be constrained. + @param array The array of values to search for. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key containsAllObjectsInArray:(NSArray *)array; + +///-------------------------------------- +/// @name Adding Location Constraints +///-------------------------------------- + +/*! + @abstract Add a constraint to the query that requires a particular key's coordinates (specified via ) + be near a reference point. + + @discussion Distance is calculated based on angular distance on a sphere. Results will be sorted by distance + from reference point. + + @param key The key to be constrained. + @param geopoint The reference point represented as a . + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key nearGeoPoint:(PFGeoPoint *)geopoint; + +/*! + @abstract Add a constraint to the query that requires a particular key's coordinates (specified via ) + be near a reference point and within the maximum distance specified (in miles). + + @discussion Distance is calculated based on a spherical coordinate system. + Results will be sorted by distance (nearest to farthest) from the reference point. + + @param key The key to be constrained. + @param geopoint The reference point represented as a . + @param maxDistance Maximum distance in miles. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key + nearGeoPoint:(PFGeoPoint *)geopoint + withinMiles:(double)maxDistance; + +/*! + @abstract Add a constraint to the query that requires a particular key's coordinates (specified via ) + be near a reference point and within the maximum distance specified (in kilometers). + + @discussion Distance is calculated based on a spherical coordinate system. + Results will be sorted by distance (nearest to farthest) from the reference point. + + @param key The key to be constrained. + @param geopoint The reference point represented as a . + @param maxDistance Maximum distance in kilometers. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key + nearGeoPoint:(PFGeoPoint *)geopoint + withinKilometers:(double)maxDistance; + +/*! + Add a constraint to the query that requires a particular key's coordinates (specified via ) be near + a reference point and within the maximum distance specified (in radians). Distance is calculated based on + angular distance on a sphere. Results will be sorted by distance (nearest to farthest) from the reference point. + + @param key The key to be constrained. + @param geopoint The reference point as a . + @param maxDistance Maximum distance in radians. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key + nearGeoPoint:(PFGeoPoint *)geopoint + withinRadians:(double)maxDistance; + +/*! + @abstract Add a constraint to the query that requires a particular key's coordinates (specified via ) be + contained within a given rectangular geographic bounding box. + + @param key The key to be constrained. + @param southwest The lower-left inclusive corner of the box. + @param northeast The upper-right inclusive corner of the box. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key withinGeoBoxFromSouthwest:(PFGeoPoint *)southwest toNortheast:(PFGeoPoint *)northeast; + +///-------------------------------------- +/// @name Adding String Constraints +///-------------------------------------- + +/*! + @abstract Add a regular expression constraint for finding string values that match the provided regular expression. + + @warning This may be slow for large datasets. + + @param key The key that the string to match is stored in. + @param regex The regular expression pattern to match. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key matchesRegex:(NSString *)regex; + +/*! + @abstract Add a regular expression constraint for finding string values that match the provided regular expression. + + @warning This may be slow for large datasets. + + @param key The key that the string to match is stored in. + @param regex The regular expression pattern to match. + @param modifiers Any of the following supported PCRE modifiers: + - `i` - Case insensitive search + - `m` - Search across multiple lines of input + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key + matchesRegex:(NSString *)regex + modifiers:(PF_NULLABLE NSString *)modifiers; + +/*! + @abstract Add a constraint for finding string values that contain a provided substring. + + @warning This will be slow for large datasets. + + @param key The key that the string to match is stored in. + @param substring The substring that the value must contain. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key containsString:(PF_NULLABLE NSString *)substring; + +/*! + @abstract Add a constraint for finding string values that start with a provided prefix. + + @discussion This will use smart indexing, so it will be fast for large datasets. + + @param key The key that the string to match is stored in. + @param prefix The substring that the value must start with. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key hasPrefix:(PF_NULLABLE NSString *)prefix; + +/*! + @abstract Add a constraint for finding string values that end with a provided suffix. + + @warning This will be slow for large datasets. + + @param key The key that the string to match is stored in. + @param suffix The substring that the value must end with. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key hasSuffix:(PF_NULLABLE NSString *)suffix; + +///-------------------------------------- +/// @name Adding Subqueries +///-------------------------------------- + +/*! + Returns a `PFQuery` that is the `or` of the passed in queries. + + @param queries The list of queries to or together. + + @returns An instance of `PFQuery` that is the `or` of the passed in queries. + */ ++ (instancetype)orQueryWithSubqueries:(NSArray PF_GENERIC(PFQuery *) *)queries; + +/*! + @abstract Adds a constraint that requires that a key's value matches a value in another key + in objects returned by a sub query. + + @param key The key that the value is stored. + @param otherKey The key in objects in the returned by the sub query whose value should match. + @param query The query to run. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key + matchesKey:(NSString *)otherKey + inQuery:(PFQuery *)query; + +/*! + @abstract Adds a constraint that requires that a key's value `NOT` match a value in another key + in objects returned by a sub query. + + @param key The key that the value is stored. + @param otherKey The key in objects in the returned by the sub query whose value should match. + @param query The query to run. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key + doesNotMatchKey:(NSString *)otherKey + inQuery:(PFQuery *)query; + +/*! + @abstract Add a constraint that requires that a key's value matches a `PFQuery` constraint. + + @warning This only works where the key's values are s or arrays of s. + + @param key The key that the value is stored in + @param query The query the value should match + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key matchesQuery:(PFQuery *)query; + +/*! + @abstract Add a constraint that requires that a key's value to not match a `PFQuery` constraint. + + @warning This only works where the key's values are s or arrays of s. + + @param key The key that the value is stored in + @param query The query the value should not match + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)whereKey:(NSString *)key doesNotMatchQuery:(PFQuery *)query; + +///-------------------------------------- +/// @name Sorting +///-------------------------------------- + +/*! + @abstract Sort the results in *ascending* order with the given key. + + @param key The key to order by. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)orderByAscending:(NSString *)key; + +/*! + @abstract Additionally sort in *ascending* order by the given key. + + @discussion The previous keys provided will precedence over this key. + + @param key The key to order by. + */ +- (instancetype)addAscendingOrder:(NSString *)key; + +/*! + @abstract Sort the results in *descending* order with the given key. + + @param key The key to order by. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)orderByDescending:(NSString *)key; + +/*! + @abstract Additionally sort in *descending* order by the given key. + + @discussion The previous keys provided will precedence over this key. + + @param key The key to order by. + */ +- (instancetype)addDescendingOrder:(NSString *)key; + +/*! + @abstract Sort the results using a given sort descriptor. + + @warning If a `sortDescriptor` has custom `selector` or `comparator` - they aren't going to be used. + + @param sortDescriptor The `NSSortDescriptor` to use to sort the results of the query. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)orderBySortDescriptor:(NSSortDescriptor *)sortDescriptor; + +/*! + @abstract Sort the results using a given array of sort descriptors. + + @warning If a `sortDescriptor` has custom `selector` or `comparator` - they aren't going to be used. + + @param sortDescriptors An array of `NSSortDescriptor` objects to use to sort the results of the query. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)orderBySortDescriptors:(PF_NULLABLE NSArray PF_GENERIC(NSSortDescriptor *) *)sortDescriptors; + +///-------------------------------------- +/// @name Getting Objects by ID +///-------------------------------------- + +/*! + @abstract Returns a with a given class and id. + + @param objectClass The class name for the object that is being requested. + @param objectId The id of the object that is being requested. + + @returns The if found. Returns `nil` if the object isn't found, or if there was an error. + */ ++ (PF_NULLABLE PFGenericObject)getObjectOfClass:(NSString *)objectClass + objectId:(NSString *)objectId PF_SWIFT_UNAVAILABLE; + +/*! + @abstract Returns a with a given class and id and sets an error if necessary. + + @param objectClass The class name for the object that is being requested. + @param objectId The id of the object that is being requested. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns The if found. Returns `nil` if the object isn't found, or if there was an `error`. + */ ++ (PF_NULLABLE PFGenericObject)getObjectOfClass:(NSString *)objectClass + objectId:(NSString *)objectId + error:(NSError **)error; + +/*! + @abstract Returns a with the given id. + + @warning This method mutates the query. + It will reset limit to `1`, skip to `0` and remove all conditions, leaving only `objectId`. + + @param objectId The id of the object that is being requested. + + @returns The if found. Returns nil if the object isn't found, or if there was an error. + */ +- (PF_NULLABLE PFGenericObject)getObjectWithId:(NSString *)objectId PF_SWIFT_UNAVAILABLE; + +/*! + @abstract Returns a with the given id and sets an error if necessary. + + @warning This method mutates the query. + It will reset limit to `1`, skip to `0` and remove all conditions, leaving only `objectId`. + + @param objectId The id of the object that is being requested. + @param error Pointer to an `NSError` that will be set if necessary. + + @returns The if found. Returns nil if the object isn't found, or if there was an error. + */ +- (PF_NULLABLE PFGenericObject)getObjectWithId:(NSString *)objectId error:(NSError **)error; + +/*! + @abstract Gets a asynchronously and calls the given block with the result. + + @warning This method mutates the query. + It will reset limit to `1`, skip to `0` and remove all conditions, leaving only `objectId`. + + @param objectId The id of the object that is being requested. + + @returns The task, that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(PFGenericObject) *)getObjectInBackgroundWithId:(NSString *)objectId; + +/*! + @abstract Gets a asynchronously and calls the given block with the result. + + @warning This method mutates the query. + It will reset limit to `1`, skip to `0` and remove all conditions, leaving only `objectId`. + + @param objectId The id of the object that is being requested. + @param block The block to execute. + The block should have the following argument signature: `^(NSArray *object, NSError *error)` + */ +- (void)getObjectInBackgroundWithId:(NSString *)objectId + block:(PF_NULLABLE void(^)(PFGenericObject PF_NULLABLE_S object, NSError *PF_NULLABLE_S error))block; + +/* + @abstract Gets a asynchronously. + + This mutates the PFQuery. It will reset limit to `1`, skip to `0` and remove all conditions, leaving only `objectId`. + + @param objectId The id of the object being requested. + @param target The target for the callback selector. + @param selector The selector for the callback. + It should have the following signature: `(void)callbackWithResult:(id)result error:(NSError *)error`. + Result will be `nil` if error is set and vice versa. + */ +- (void)getObjectInBackgroundWithId:(NSString *)objectId + target:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector; + +///-------------------------------------- +/// @name Getting User Objects +///-------------------------------------- + +/*! + @abstract Returns a with a given id. + + @param objectId The id of the object that is being requested. + + @returns The PFUser if found. Returns nil if the object isn't found, or if there was an error. + */ ++ (PF_NULLABLE PFUser *)getUserObjectWithId:(NSString *)objectId PF_SWIFT_UNAVAILABLE; + +/*! + Returns a PFUser with a given class and id and sets an error if necessary. + @param objectId The id of the object that is being requested. + @param error Pointer to an NSError that will be set if necessary. + @result The PFUser if found. Returns nil if the object isn't found, or if there was an error. + */ ++ (PF_NULLABLE PFUser *)getUserObjectWithId:(NSString *)objectId error:(NSError **)error; + +/*! + @deprecated Please use [PFUser query] instead. + */ ++ (instancetype)queryForUser PARSE_DEPRECATED("Use [PFUser query] instead."); + +///-------------------------------------- +/// @name Getting all Matches for a Query +///-------------------------------------- + +/*! + @abstract Finds objects *synchronously* based on the constructed query. + + @returns Returns an array of objects that were found. + */ +- (PF_NULLABLE NSArray PF_GENERIC(PFGenericObject) *)findObjects PF_SWIFT_UNAVAILABLE; + +/*! + @abstract Finds objects *synchronously* based on the constructed query and sets an error if there was one. + + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns an array of objects that were found. + */ +- (PF_NULLABLE NSArray PF_GENERIC(PFGenericObject) *)findObjects:(NSError **)error; + +/*! + @abstract Finds objects *asynchronously* and sets the `NSArray` of objects as a result of the task. + + @returns The task, that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(NSArray *)*)findObjectsInBackground; + +/*! + @abstract Finds objects *asynchronously* and calls the given block with the results. + + @param block The block to execute. + It should have the following argument signature: `^(NSArray *objects, NSError *error)` + */ +- (void)findObjectsInBackgroundWithBlock:(PF_NULLABLE PFQueryArrayResultBlock)block; + +/* + @abstract Finds objects *asynchronously* and calls the given callback with the results. + + @param target The object to call the selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(id)result error:(NSError *)error`. + Result will be `nil` if error is set and vice versa. + */ +- (void)findObjectsInBackgroundWithTarget:(PF_NULLABLE_S id)target selector:(PF_NULLABLE_S SEL)selector; + +///-------------------------------------- +/// @name Getting the First Match in a Query +///-------------------------------------- + +/*! + @abstract Gets an object *synchronously* based on the constructed query. + + @warning This method mutates the query. It will reset the limit to `1`. + + @returns Returns a , or `nil` if none was found. + */ +- (PF_NULLABLE PFGenericObject)getFirstObject PF_SWIFT_UNAVAILABLE; + +/*! + @abstract Gets an object *synchronously* based on the constructed query and sets an error if any occurred. + + @warning This method mutates the query. It will reset the limit to `1`. + + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns a , or `nil` if none was found. + */ +- (PF_NULLABLE PFGenericObject)getFirstObject:(NSError **)error; + +/*! + @abstract Gets an object *asynchronously* and sets it as a result of the task. + + @warning This method mutates the query. It will reset the limit to `1`. + + @returns The task, that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(PFGenericObject) *)getFirstObjectInBackground; + +/*! + @abstract Gets an object *asynchronously* and calls the given block with the result. + + @warning This method mutates the query. It will reset the limit to `1`. + + @param block The block to execute. + It should have the following argument signature: `^(PFObject *object, NSError *error)`. + `result` will be `nil` if `error` is set OR no object was found matching the query. + `error` will be `nil` if `result` is set OR if the query succeeded, but found no results. + */ +- (void)getFirstObjectInBackgroundWithBlock:(PF_NULLABLE void(^)(PFGenericObject PF_NULLABLE_S object, NSError *PF_NULLABLE_S error))block; + +/* + @abstract Gets an object *asynchronously* and calls the given callback with the results. + + @warning This method mutates the query. It will reset the limit to `1`. + + @param target The object to call the selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(PFObject *)result error:(NSError *)error`. + `result` will be `nil` if `error` is set OR no object was found matching the query. + `error` will be `nil` if `result` is set OR if the query succeeded, but found no results. + */ +- (void)getFirstObjectInBackgroundWithTarget:(PF_NULLABLE_S id)target selector:(PF_NULLABLE_S SEL)selector; + +///-------------------------------------- +/// @name Counting the Matches in a Query +///-------------------------------------- + +/*! + @abstract Counts objects *synchronously* based on the constructed query. + + @returns Returns the number of objects that match the query, or `-1` if there is an error. + */ +- (NSInteger)countObjects PF_SWIFT_UNAVAILABLE; + +/*! + @abstract Counts objects *synchronously* based on the constructed query and sets an error if there was one. + + @param error Pointer to an `NSError` that will be set if necessary. + + @returns Returns the number of objects that match the query, or `-1` if there is an error. + */ +- (NSInteger)countObjects:(NSError **)error; + +/*! + @abstract Counts objects *asynchronously* and sets `NSNumber` with count as a result of the task. + + @returns The task, that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(NSNumber *)*)countObjectsInBackground; + +/*! + @abstract Counts objects *asynchronously* and calls the given block with the counts. + + @param block The block to execute. + It should have the following argument signature: `^(int count, NSError *error)` + */ +- (void)countObjectsInBackgroundWithBlock:(PF_NULLABLE PFIntegerResultBlock)block; + +/* + @abstract Counts objects *asynchronously* and calls the given callback with the count. + + @param target The object to call the selector on. + @param selector The selector to call. + It should have the following signature: `(void)callbackWithResult:(NSNumber *)result error:(NSError *)error`. + */ +- (void)countObjectsInBackgroundWithTarget:(PF_NULLABLE_S id)target selector:(PF_NULLABLE_S SEL)selector; + +///-------------------------------------- +/// @name Cancelling a Query +///-------------------------------------- + +/*! + @abstract Cancels the current network request (if any). Ensures that callbacks won't be called. + */ +- (void)cancel; + +///-------------------------------------- +/// @name Paginating Results +///-------------------------------------- + +/*! + @abstract A limit on the number of objects to return. The default limit is `100`, with a + maximum of 1000 results being returned at a time. + + @warning If you are calling `findObjects` with `limit = 1`, you may find it easier to use `getFirst` instead. + */ +@property (nonatomic, assign) NSInteger limit; + +/*! + @abstract The number of objects to skip before returning any. + */ +@property (nonatomic, assign) NSInteger skip; + +///-------------------------------------- +/// @name Controlling Caching Behavior +///-------------------------------------- + +/*! + @abstract The cache policy to use for requests. + + Not allowed when Pinning is enabled. + + @see fromLocalDatastore + @see fromPin + @see fromPinWithName: + */ +@property (assign, readwrite) PFCachePolicy cachePolicy; + +/*! + @abstract The age after which a cached value will be ignored + */ +@property (assign, readwrite) NSTimeInterval maxCacheAge; + +/*! + @abstract Returns whether there is a cached result for this query. + + @result `YES` if there is a cached result for this query, otherwise `NO`. + */ +- (BOOL)hasCachedResult; + +/*! + @abstract Clears the cached result for this query. If there is no cached result, this is a noop. + */ +- (void)clearCachedResult; + +/*! + @abstract Clears the cached results for all queries. + */ ++ (void)clearAllCachedResults; + +///-------------------------------------- +/// @name Query Source +///-------------------------------------- + +/*! + @abstract Change the source of this query to all pinned objects. + + @warning Requires Local Datastore to be enabled. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + + @see cachePolicy + */ +- (instancetype)fromLocalDatastore; + +/*! + @abstract Change the source of this query to the default group of pinned objects. + + @warning Requires Local Datastore to be enabled. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + + @see PFObjectDefaultPin + @see cachePolicy + */ +- (instancetype)fromPin; + +/*! + @abstract Change the source of this query to a specific group of pinned objects. + + @warning Requires Local Datastore to be enabled. + + @param name The pinned group. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + + @see PFObjectDefaultPin + @see cachePolicy + */ +- (instancetype)fromPinWithName:(PF_NULLABLE NSString *)name; + +/*! + @abstract Ignore ACLs when querying from the Local Datastore. + + @discussion This is particularly useful when querying for objects with Role based ACLs set on them. + + @warning Requires Local Datastore to be enabled. + + @returns The same instance of `PFQuery` as the receiver. This allows method chaining. + */ +- (instancetype)ignoreACLs; + +///-------------------------------------- +/// @name Advanced Settings +///-------------------------------------- + +/*! + @abstract Whether or not performance tracing should be done on the query. + + @warning This should not be set to `YES` in most cases. + */ +@property (nonatomic, assign) BOOL trace; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFQuery.m b/Unit-2-Journal/Pods/Parse/Parse/PFQuery.m new file mode 100644 index 0000000..0fb3995 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFQuery.m @@ -0,0 +1,1136 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFQuery.h" + +#import +#import + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFCoreManager.h" +#import "PFCurrentUserController.h" +#import "PFGeoPointPrivate.h" +#import "PFInternalUtils.h" +#import "PFKeyValueCache.h" +#import "PFMutableQueryState.h" +#import "PFObject.h" +#import "PFObjectPrivate.h" +#import "PFOfflineStore.h" +#import "PFPin.h" +#import "PFQueryController.h" +#import "PFQueryUtilities.h" +#import "PFRESTQueryCommand.h" +#import "PFUserPrivate.h" +#import "ParseInternal.h" +#import "Parse_Private.h" + +NSString *const PFQueryKeyNotEqualTo = @"$ne"; +NSString *const PFQueryKeyLessThan = @"$lt"; +NSString *const PFQueryKeyLessThanEqualTo = @"$lte"; +NSString *const PFQueryKeyGreaterThan = @"$gt"; +NSString *const PFQueryKeyGreaterThanOrEqualTo = @"$gte"; +NSString *const PFQueryKeyContainedIn = @"$in"; +NSString *const PFQueryKeyNotContainedIn = @"$nin"; +NSString *const PFQueryKeyContainsAll = @"$all"; +NSString *const PFQueryKeyNearSphere = @"$nearSphere"; +NSString *const PFQueryKeyWithin = @"$within"; +NSString *const PFQueryKeyRegex = @"$regex"; +NSString *const PFQueryKeyExists = @"$exists"; +NSString *const PFQueryKeyInQuery = @"$inQuery"; +NSString *const PFQueryKeyNotInQuery = @"$notInQuery"; +NSString *const PFQueryKeySelect = @"$select"; +NSString *const PFQueryKeyDontSelect = @"$dontSelect"; +NSString *const PFQueryKeyRelatedTo = @"$relatedTo"; +NSString *const PFQueryKeyOr = @"$or"; +NSString *const PFQueryKeyQuery = @"query"; +NSString *const PFQueryKeyKey = @"key"; +NSString *const PFQueryKeyObject = @"object"; + +NSString *const PFQueryOptionKeyMaxDistance = @"$maxDistance"; +NSString *const PFQueryOptionKeyBox = @"$box"; +NSString *const PFQueryOptionKeyRegexOptions = @"$options"; + +/*! + Checks if an object can be used as value for query equality clauses. + */ +static void PFQueryAssertValidEqualityClauseClass(id object) { + static NSArray *classes; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + classes = @[ [NSString class], [NSNumber class], [NSDate class], [NSNull class], + [PFObject class], [PFGeoPoint class] ]; + }); + + for (Class class in classes) { + if ([object isKindOfClass:class]) { + return; + } + } + + PFParameterAssert(NO, @"Cannot do a comparison query for type: %@", [object class]); +} + +/*! + Checks if an object can be used as value for query ordering clauses. + */ +static void PFQueryAssertValidOrderingClauseClass(id object) { + static NSArray *classes; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + classes = @[ [NSString class], [NSNumber class], [NSDate class] ]; + }); + + for (Class class in classes) { + if ([object isKindOfClass:class]) { + return; + } + } + + PFParameterAssert(NO, @"Cannot do a query that requires ordering for type: %@", [object class]); +} + +@interface PFQuery () { + BFCancellationTokenSource *_cancellationTokenSource; +} + +@property (nonatomic, strong, readwrite) PFMutableQueryState *state; + +@end + +@implementation PFQuery + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithState:(PFQueryState *)state { + self = [super init]; + if (!self) return nil; + + _state = [state mutableCopy]; + + return self; +} + +- (instancetype)initWithClassName:(NSString *)className { + self = [super init]; + if (!self) return nil; + + _state = [PFMutableQueryState stateWithParseClassName:className]; + + return self; +} + +///-------------------------------------- +#pragma mark - Public Accessors +///-------------------------------------- + +#pragma mark Basic + +- (NSString *)parseClassName { + return self.state.parseClassName; +} + +- (void)setParseClassName:(NSString *)parseClassName { + [self checkIfCommandIsRunning]; + self.state.parseClassName = parseClassName; +} + +#pragma mark Limit + +- (void)setLimit:(NSInteger)limit { + self.state.limit = limit; +} + +- (NSInteger)limit { + return self.state.limit; +} + +#pragma mark Skip + +- (void)setSkip:(NSInteger)skip { + self.state.skip = skip; +} + +- (NSInteger)skip { + return self.state.skip; +} + +#pragma mark Cache Policy + +- (void)setCachePolicy:(PFCachePolicy)cachePolicy { + [self _checkPinningEnabled:NO]; + [self checkIfCommandIsRunning]; + + self.state.cachePolicy = cachePolicy; +} + +- (PFCachePolicy)cachePolicy { + [self _checkPinningEnabled:NO]; + [self checkIfCommandIsRunning]; + + return self.state.cachePolicy; +} + +#pragma mark Cache Policy + +- (void)setMaxCacheAge:(NSTimeInterval)maxCacheAge { + self.state.maxCacheAge = maxCacheAge; +} + +- (NSTimeInterval)maxCacheAge { + return self.state.maxCacheAge; +} + +#pragma mark Trace + +- (void)setTrace:(BOOL)trace { + self.state.trace = trace; +} + +- (BOOL)trace { + return self.state.trace; +} + +///-------------------------------------- +#pragma mark - Order +///-------------------------------------- + +- (instancetype)orderByAscending:(NSString *)key { + [self checkIfCommandIsRunning]; + [self.state sortByKey:key ascending:YES]; + return self; +} + +- (instancetype)addAscendingOrder:(NSString *)key { + [self checkIfCommandIsRunning]; + [self.state addSortKey:key ascending:YES]; + return self; +} + +- (instancetype)orderByDescending:(NSString *)key { + [self checkIfCommandIsRunning]; + [self.state sortByKey:key ascending:NO]; + return self; +} + +- (instancetype)addDescendingOrder:(NSString *)key { + [self checkIfCommandIsRunning]; + [self.state addSortKey:key ascending:NO]; + return self; +} + +- (instancetype)orderBySortDescriptor:(NSSortDescriptor *)sortDescriptor { + NSString *key = sortDescriptor.key; + if (key) { + if (sortDescriptor.ascending) { + [self orderByAscending:key]; + } else { + [self orderByDescending:key]; + } + } + return self; +} + +- (instancetype)orderBySortDescriptors:(NSArray *)sortDescriptors { + [self.state addSortKeysFromSortDescriptors:sortDescriptors]; + return self; +} + +///-------------------------------------- +#pragma mark - Conditions +///-------------------------------------- + +// Helper for condition queries. +- (instancetype)whereKey:(NSString *)key condition:(NSString *)condition object:(id)object { + [self checkIfCommandIsRunning]; + [self.state setConditionType:condition withObject:object forKey:key]; + return self; +} + +- (instancetype)whereKey:(NSString *)key equalTo:(id)object { + [self checkIfCommandIsRunning]; + PFQueryAssertValidEqualityClauseClass(object); + [self.state setEqualityConditionWithObject:object forKey:key]; + return self; +} + +- (instancetype)whereKey:(NSString *)key greaterThan:(id)object { + PFQueryAssertValidOrderingClauseClass(object); + return [self whereKey:key condition:PFQueryKeyGreaterThan object:object]; +} + +- (instancetype)whereKey:(NSString *)key greaterThanOrEqualTo:(id)object { + PFQueryAssertValidOrderingClauseClass(object); + return [self whereKey:key condition:PFQueryKeyGreaterThanOrEqualTo object:object]; +} + +- (instancetype)whereKey:(NSString *)key lessThan:(id)object { + PFQueryAssertValidOrderingClauseClass(object); + return [self whereKey:key condition:PFQueryKeyLessThan object:object]; +} + +- (instancetype)whereKey:(NSString *)key lessThanOrEqualTo:(id)object { + PFQueryAssertValidOrderingClauseClass(object); + return [self whereKey:key condition:PFQueryKeyLessThanEqualTo object:object]; +} + +- (instancetype)whereKey:(NSString *)key notEqualTo:(id)object { + PFQueryAssertValidEqualityClauseClass(object); + return [self whereKey:key condition:PFQueryKeyNotEqualTo object:object]; +} + +- (instancetype)whereKey:(NSString *)key containedIn:(NSArray *)inArray { + return [self whereKey:key condition:PFQueryKeyContainedIn object:inArray]; +} + +- (instancetype)whereKey:(NSString *)key notContainedIn:(NSArray *)inArray { + return [self whereKey:key condition:PFQueryKeyNotContainedIn object:inArray]; +} + +- (instancetype)whereKey:(NSString *)key containsAllObjectsInArray:(NSArray *)array { + return [self whereKey:key condition:PFQueryKeyContainsAll object:array]; +} + +- (instancetype)whereKey:(NSString *)key nearGeoPoint:(PFGeoPoint *)geopoint { + return [self whereKey:key condition:PFQueryKeyNearSphere object:geopoint]; +} + +- (instancetype)whereKey:(NSString *)key nearGeoPoint:(PFGeoPoint *)geopoint withinRadians:(double)maxDistance { + return [[self whereKey:key condition:PFQueryKeyNearSphere object:geopoint] + whereKey:key condition:PFQueryOptionKeyMaxDistance object:@(maxDistance)]; +} + +- (instancetype)whereKey:(NSString *)key nearGeoPoint:(PFGeoPoint *)geopoint withinMiles:(double)maxDistance { + return [self whereKey:key nearGeoPoint:geopoint withinRadians:(maxDistance/EARTH_RADIUS_MILES)]; +} + +- (instancetype)whereKey:(NSString *)key nearGeoPoint:(PFGeoPoint *)geopoint withinKilometers:(double)maxDistance { + return [self whereKey:key nearGeoPoint:geopoint withinRadians:(maxDistance/EARTH_RADIUS_KILOMETERS)]; +} + +- (instancetype)whereKey:(NSString *)key withinGeoBoxFromSouthwest:(PFGeoPoint *)southwest toNortheast:(PFGeoPoint *)northeast { + NSArray *array = @[ southwest, northeast ]; + NSDictionary *dictionary = @{ PFQueryOptionKeyBox : array }; + return [self whereKey:key condition:PFQueryKeyWithin object:dictionary]; +} + +- (instancetype)whereKey:(NSString *)key matchesRegex:(NSString *)regex { + return [self whereKey:key condition:PFQueryKeyRegex object:regex]; +} + +- (instancetype)whereKey:(NSString *)key matchesRegex:(NSString *)regex modifiers:(NSString *)modifiers { + [self checkIfCommandIsRunning]; + NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:2]; + dictionary[PFQueryKeyRegex] = regex; + if ([modifiers length]) { + dictionary[PFQueryOptionKeyRegexOptions] = modifiers; + } + [self.state setEqualityConditionWithObject:dictionary forKey:key]; + return self; +} + +- (instancetype)whereKey:(NSString *)key containsString:(NSString *)substring { + NSString *regex = [PFQueryUtilities regexStringForString:substring]; + return [self whereKey:key matchesRegex:regex]; +} + +- (instancetype)whereKey:(NSString *)key hasPrefix:(NSString *)prefix { + NSString *regex = [NSString stringWithFormat:@"^%@", [PFQueryUtilities regexStringForString:prefix]]; + return [self whereKey:key matchesRegex:regex]; +} + +- (instancetype)whereKey:(NSString *)key hasSuffix:(NSString *)suffix { + NSString *regex = [NSString stringWithFormat:@"%@$", [PFQueryUtilities regexStringForString:suffix]]; + return [self whereKey:key matchesRegex:regex]; +} + +- (instancetype)whereKeyExists:(NSString *)key { + return [self whereKey:key condition:PFQueryKeyExists object:@YES]; +} + +- (instancetype)whereKeyDoesNotExist:(NSString *)key { + return [self whereKey:key condition:PFQueryKeyExists object:@NO]; +} + +- (instancetype)whereKey:(NSString *)key matchesQuery:(PFQuery *)query { + return [self whereKey:key condition:PFQueryKeyInQuery object:query]; +} + +- (instancetype)whereKey:(NSString *)key doesNotMatchQuery:(PFQuery *)query { + return [self whereKey:key condition:PFQueryKeyNotInQuery object:query]; +} + +- (instancetype)whereKey:(NSString *)key matchesKey:(NSString *)otherKey inQuery:(PFQuery *)query { + NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:2]; + dict[PFQueryKeyQuery] = query; + dict[PFQueryKeyKey] = otherKey; + return [self whereKey:key condition:PFQueryKeySelect object:dict]; +} + +- (instancetype)whereKey:(NSString *)key doesNotMatchKey:(NSString *)otherKey inQuery:(PFQuery *)query { + NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:2]; + dict[PFQueryKeyQuery] = query; + dict[PFQueryKeyKey] = otherKey; + return [self whereKey:key condition:PFQueryKeyDontSelect object:dict]; +} + +- (instancetype)whereRelatedToObject:(PFObject *)parent fromKey:(NSString *)key { + [self.state setRelationConditionWithObject:parent forKey:key]; + return self; +} + +- (void)redirectClassNameForKey:(NSString *)key { + [self.state redirectClassNameForKey:key]; +} + +///-------------------------------------- +#pragma mark - Include +///-------------------------------------- + +- (instancetype)includeKey:(NSString *)key { + [self checkIfCommandIsRunning]; + [self.state includeKey:key]; + return self; +} + +///-------------------------------------- +#pragma mark - Select +///-------------------------------------- + +- (instancetype)selectKeys:(NSArray *)keys { + [self checkIfCommandIsRunning]; + [self.state selectKeys:keys]; + return self; +} + +///-------------------------------------- +#pragma mark - NSPredicate helper methods +///-------------------------------------- + ++ (void)assertKeyPathConstant:(NSComparisonPredicate *)predicate { + PFConsistencyAssert(predicate.leftExpression.expressionType == NSKeyPathExpressionType && + predicate.rightExpression.expressionType == NSConstantValueExpressionType, + @"This predicate must have a key path and a constant. %@", predicate); +} + +// Adds the conditions from an NSComparisonPredicate to a PFQuery. +- (void)whereComparisonPredicate:(NSComparisonPredicate *)predicate { + NSExpression *left = predicate.leftExpression; + NSExpression *right = predicate.rightExpression; + + switch (predicate.predicateOperatorType) { + case NSEqualToPredicateOperatorType: { + [[self class] assertKeyPathConstant:predicate]; + [self whereKey:left.keyPath equalTo:(right.constantValue ?: [NSNull null])]; + return; + } + case NSNotEqualToPredicateOperatorType: { + [[self class] assertKeyPathConstant:predicate]; + [self whereKey:left.keyPath notEqualTo:(right.constantValue ?: [NSNull null])]; + return; + } + case NSLessThanPredicateOperatorType: { + [[self class] assertKeyPathConstant:predicate]; + [self whereKey:left.keyPath lessThan:right.constantValue]; + return; + } + case NSLessThanOrEqualToPredicateOperatorType: { + [[self class] assertKeyPathConstant:predicate]; + [self whereKey:left.keyPath lessThanOrEqualTo:right.constantValue]; + return; + } + case NSGreaterThanPredicateOperatorType: { + [[self class] assertKeyPathConstant:predicate]; + [self whereKey:left.keyPath greaterThan:right.constantValue]; + return; + } + case NSGreaterThanOrEqualToPredicateOperatorType: { + [[self class] assertKeyPathConstant:predicate]; + [self whereKey:left.keyPath greaterThanOrEqualTo:right.constantValue]; + return; + } + case NSInPredicateOperatorType: { + if (left.expressionType == NSKeyPathExpressionType && + right.expressionType == NSConstantValueExpressionType) { + if ([right.constantValue isKindOfClass:[PFQuery class]]) { + // Like "value IN subquery + [self whereKey:left.keyPath matchesQuery:right.constantValue]; + } else { + // Like "value IN %@", @{@1, @2, @3, @4} + [self whereKey:left.keyPath containedIn:right.constantValue]; + } + } else if (left.expressionType == NSKeyPathExpressionType && + right.expressionType == NSAggregateExpressionType && + [right.constantValue isKindOfClass:[NSArray class]]) { + // Like "value IN {1, 2, 3, 4}" + NSArray *constants = right.constantValue; + NSMutableArray *values = [NSMutableArray arrayWithCapacity:constants.count]; + for (NSExpression *expression in constants) { + [values addObject:expression.constantValue]; + } + [self whereKey:left.keyPath containedIn:values]; + } else if (right.expressionType == NSEvaluatedObjectExpressionType && + left.expressionType == NSKeyPathExpressionType) { + // Like "value IN SELF" + [self whereKeyExists:left.keyPath]; + } else { + [NSException raise:NSInternalInconsistencyException + format:@"An IN predicate must have a key path and a constant."]; + } + return; + } + case NSCustomSelectorPredicateOperatorType: { + if (predicate.customSelector != NSSelectorFromString(@"notContainedIn:")) { + [NSException raise:NSInternalInconsistencyException + format:@"Predicates with custom selectors are not supported."]; + } + + if (right.expressionType == NSConstantValueExpressionType && + left.expressionType == NSKeyPathExpressionType) { + if ([right.constantValue isKindOfClass:[PFQuery class]]) { + // Like "NOT (value IN subquery)" + [self whereKey:left.keyPath doesNotMatchQuery:right.constantValue]; + } else { + // Like "NOT (value in %@)", @{@1, @2, @3} + [self whereKey:left.keyPath notContainedIn:right.constantValue]; + } + } else if (left.expressionType == NSKeyPathExpressionType && + right.expressionType == NSAggregateExpressionType && + [right.constantValue isKindOfClass:[NSArray class]]) { + // Like "NOT (value IN {1, 2, 3, 4})" + NSArray *constants = right.constantValue; + NSMutableArray *values = [NSMutableArray arrayWithCapacity:constants.count]; + for (NSExpression *expression in constants) { + [values addObject:expression.constantValue]; + } + [self whereKey:left.keyPath notContainedIn:values]; + } else if (right.expressionType == NSEvaluatedObjectExpressionType && + left.expressionType == NSKeyPathExpressionType) { + // Like "NOT (value IN SELF)" + [self whereKeyDoesNotExist:left.keyPath]; + } else { + [NSException raise:NSInternalInconsistencyException + format:@"A NOT IN predicate must have a key path and a constant array."]; + } + return; + } + case NSBeginsWithPredicateOperatorType: { + [[self class] assertKeyPathConstant:predicate]; + [self whereKey:left.keyPath hasPrefix:right.constantValue]; + return; + } + case NSContainsPredicateOperatorType: { + [NSException raise:NSInternalInconsistencyException + format:@"Regex queries are not supported with " + "[PFQuery queryWithClassName:predicate:]. Please try to structure your " + "data so that you can use an equalTo or containedIn query."]; + } + case NSEndsWithPredicateOperatorType: { + [NSException raise:NSInternalInconsistencyException + format:@"Regex queries are not supported with " + "[PFQuery queryWithClassName:predicate:]. Please try to structure your " + "data so that you can use an equalTo or containedIn query."]; + } + case NSMatchesPredicateOperatorType: { + [NSException raise:NSInternalInconsistencyException + format:@"Regex queries are not supported with " + "[PFQuery queryWithClassName:predicate:]. Please try to structure your " + "data so that you can use an equalTo or containedIn query."]; + } + case NSLikePredicateOperatorType: { + [NSException raise:NSInternalInconsistencyException + format:@"LIKE is not supported by PFQuery."]; + } + default: { + [NSException raise:NSInternalInconsistencyException + format:@"This comparison predicate is not supported. (%zd)", predicate.predicateOperatorType]; + } + } +} + +/*! + Creates a PFQuery with the constraints given by predicate. + This method assumes the predicate has already been normalized. + */ ++ (instancetype)queryWithClassName:(NSString *)className normalizedPredicate:(NSPredicate *)predicate { + if ([predicate isKindOfClass:[NSComparisonPredicate class]]) { + PFQuery *query = [self queryWithClassName:className]; + [query whereComparisonPredicate:(NSComparisonPredicate *)predicate]; + return query; + } else if ([predicate isKindOfClass:[NSCompoundPredicate class]]) { + NSCompoundPredicate *compound = (NSCompoundPredicate *)predicate; + switch (compound.compoundPredicateType) { + case NSAndPredicateType: { + PFQuery *query = nil; + NSMutableArray *subpredicates = [NSMutableArray array]; + // If there's an OR query in here, we'll start with it. + for (NSPredicate *subpredicate in compound.subpredicates) { + if ([subpredicate isKindOfClass:[NSCompoundPredicate class]] && + ((NSCompoundPredicate *)subpredicate).compoundPredicateType == NSOrPredicateType) { + if (query) { + [NSException raise:NSInternalInconsistencyException + format:@"A query had 2 ORs in an AND after normalization. %@", + predicate]; + } + query = [self queryWithClassName:className normalizedPredicate:subpredicate]; + } else { + [subpredicates addObject:subpredicate]; + } + } + // If there was no OR query, then start with an empty query. + if (!query) { + query = [self queryWithClassName:className]; + } + for (NSPredicate *subpredicate in subpredicates) { + if (![subpredicate isKindOfClass:[NSComparisonPredicate class]]) { + // This should never happen. + [NSException raise:NSInternalInconsistencyException + format:@"A predicate had a non-comparison predicate inside an AND " + "after normalization. %@", predicate]; + } + NSComparisonPredicate *comparison = (NSComparisonPredicate *)subpredicate; + [query whereComparisonPredicate:comparison]; + } + return query; + } + case NSOrPredicateType: { + NSMutableArray *subqueries = [NSMutableArray arrayWithCapacity:compound.subpredicates.count]; + if (compound.subpredicates.count > 4) { + [NSException raise:NSInternalInconsistencyException + format:@"This query is too complex. It had an OR with >4 subpredicates " + "after normalization."]; + } + for (NSPredicate *subpredicate in compound.subpredicates) { + [subqueries addObject:[self queryWithClassName:className normalizedPredicate:subpredicate]]; + } + return [self orQueryWithSubqueries:subqueries]; + } + default: { + // This should never happen. + [NSException raise:NSInternalInconsistencyException + format:@"A predicate had a NOT after normalization. %@", predicate]; + return nil; + } + } + } else { + [NSException raise:NSInternalInconsistencyException format:@"Unknown predicate type."]; + return nil; + } +} + +///-------------------------------------- +#pragma mark - Helpers +///-------------------------------------- + +- (void)checkIfCommandIsRunning { + @synchronized (self) { + if (_cancellationTokenSource) { + [NSException raise:NSInternalInconsistencyException + format:@"This query has an outstanding network connection. You have to wait until it's done."]; + } + } +} + +- (void)markAsRunning:(BFCancellationTokenSource *)source { + [self checkIfCommandIsRunning]; + @synchronized (self) { + _cancellationTokenSource = source; + } +} + +///-------------------------------------- +#pragma mark - Constructors +///-------------------------------------- + ++ (instancetype)queryWithClassName:(NSString *)className { + return [[self alloc] initWithClassName:className]; +} + ++ (instancetype)queryWithClassName:(NSString *)className predicate:(NSPredicate *)predicate { + if (!predicate) { + return [self queryWithClassName:className]; + } + + NSPredicate *normalizedPredicate = [PFQueryUtilities predicateByNormalizingPredicate:predicate]; + return [self queryWithClassName:className normalizedPredicate:normalizedPredicate]; +} + ++ (instancetype)orQueryWithSubqueries:(NSArray *)queries { + NSMutableArray *array = [NSMutableArray array]; + NSString *className = nil; + for (id object in queries) { + PFParameterAssert([object isKindOfClass:[PFQuery class]], + @"All elements should be instances of `PFQuery` class."); + + PFQuery *query = (PFQuery *)object; + if (!className) { + className = query.parseClassName; + } else { + PFParameterAssert([query.parseClassName isEqualToString:className], + @"All sub queries of an `or` query should be on the same class."); + } + + [array addObject:query]; + } + PFQuery *query = [self queryWithClassName:className]; + [query.state setEqualityConditionWithObject:array forKey:PFQueryKeyOr]; + return query; +} + +///-------------------------------------- +#pragma mark - Get with objectId +///-------------------------------------- + ++ (PFObject *)getObjectOfClass:(NSString *)objectClass objectId:(NSString *)objectId { + return [self getObjectOfClass:objectClass objectId:objectId error:nil]; +} + ++ (PFObject *)getObjectOfClass:(NSString *)objectClass + objectId:(NSString *)objectId + error:(NSError **)error { + PFQuery *query = [self queryWithClassName:objectClass]; + return [query getObjectWithId:objectId error:error]; +} + +// TODO (hallucinogen): we may want to remove this in 2.0 since we can just use the static counterpart +- (PFObject *)getObjectWithId:(NSString *)objectId { + return [self getObjectWithId:objectId error:nil]; +} + +- (PFObject *)getObjectWithId:(NSString *)objectId error:(NSError **)error { + return [[self getObjectInBackgroundWithId:objectId] waitForResult:error]; +} + +- (BFTask *)getObjectInBackgroundWithId:(NSString *)objectId { + if ([objectId length] == 0) { + return [BFTask taskWithResult:nil]; + } + + PFConsistencyAssert(self.state.cachePolicy != kPFCachePolicyCacheThenNetwork, + @"kPFCachePolicyCacheThenNetwork can only be used with methods that have a callback."); + return [self _getObjectWithIdAsync:objectId cachePolicy:self.state.cachePolicy after:nil]; +} + +- (void)getObjectInBackgroundWithId:(NSString *)objectId block:(PFObjectResultBlock)block { + @synchronized (self) { + if (!self.state.queriesLocalDatastore && self.state.cachePolicy == kPFCachePolicyCacheThenNetwork) { + BFTask *cacheTask = [[self _getObjectWithIdAsync:objectId + cachePolicy:kPFCachePolicyCacheOnly + after:nil] thenCallBackOnMainThreadAsync:block]; + [[self _getObjectWithIdAsync:objectId + cachePolicy:kPFCachePolicyNetworkOnly + after:cacheTask] thenCallBackOnMainThreadAsync:block]; + } else { + [[self getObjectInBackgroundWithId:objectId] thenCallBackOnMainThreadAsync:block]; + } + } +} + +- (void)getObjectInBackgroundWithId:(NSString *)objectId target:(id)target selector:(SEL)selector { + [self getObjectInBackgroundWithId:objectId block:^(PFObject *object, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:object object:error]; + }]; +} + +- (BFTask *)_getObjectWithIdAsync:(NSString *)objectId cachePolicy:(PFCachePolicy)cachePolicy after:(BFTask *)task { + self.limit = 1; + self.skip = 0; + [self.state removeAllConditions]; + [self.state setEqualityConditionWithObject:objectId forKey:@"objectId"]; + + PFQueryState *state = [self _queryStateCopyWithCachePolicy:cachePolicy]; + return [[self _findObjectsAsyncForQueryState:state + after:task] continueWithSuccessBlock:^id(BFTask *task) { + NSArray *objects = task.result; + if (objects.count == 0) { + return [BFTask taskWithError:[PFQueryUtilities objectNotFoundError]]; + } + + return [BFTask taskWithResult:objects.lastObject]; + }]; +} + +///-------------------------------------- +#pragma mark - Get Users (Deprecated) +///-------------------------------------- + ++ (PFUser *)getUserObjectWithId:(NSString *)objectId { + return [self getUserObjectWithId:objectId error:nil]; +} + ++ (PFUser *)getUserObjectWithId:(NSString *)objectId error:(NSError **)error { + PFQuery *query = [PFUser query]; + PFUser *object = (PFUser *)[query getObjectWithId:objectId error:error]; + + return object; +} + ++ (instancetype)queryForUser { + return [PFUser query]; +} + +///-------------------------------------- +#pragma mark - Find Objects +///-------------------------------------- + +- (NSArray *)findObjects { + return [self findObjects:nil]; +} + +- (NSArray *)findObjects:(NSError **)error { + return [[self findObjectsInBackground] waitForResult:error]; +} + +- (BFTask *)findObjectsInBackground { + PFQueryState *state = [self _queryStateCopy]; + + PFConsistencyAssert(state.cachePolicy != kPFCachePolicyCacheThenNetwork, + @"kPFCachePolicyCacheThenNetwork can only be used with methods that have a callback."); + return [self _findObjectsAsyncForQueryState:state after:nil]; +} + +- (void)findObjectsInBackgroundWithBlock:(PFQueryArrayResultBlock)block { + @synchronized (self) { + if (!self.state.queriesLocalDatastore && self.state.cachePolicy == kPFCachePolicyCacheThenNetwork) { + PFQueryState *cacheQueryState = [self _queryStateCopyWithCachePolicy:kPFCachePolicyCacheOnly]; + BFTask *cacheTask = [[self _findObjectsAsyncForQueryState:cacheQueryState + after:nil] thenCallBackOnMainThreadAsync:block]; + + PFQueryState *remoteQueryState = [self _queryStateCopyWithCachePolicy:kPFCachePolicyNetworkOnly]; + [[self _findObjectsAsyncForQueryState:remoteQueryState + after:cacheTask] thenCallBackOnMainThreadAsync:block]; + } else { + [[self findObjectsInBackground] thenCallBackOnMainThreadAsync:block]; + } + } +} + +- (void)findObjectsInBackgroundWithTarget:(id)target selector:(SEL)selector { + [self findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:objects object:error]; + }]; +} + +- (BFTask *)_findObjectsAsyncForQueryState:(PFQueryState *)queryState after:(BFTask *)previous { + BFCancellationTokenSource *cancellationTokenSource = _cancellationTokenSource; + if (!previous) { + cancellationTokenSource = [BFCancellationTokenSource cancellationTokenSource]; + [self markAsRunning:cancellationTokenSource]; + } + + BFTask *start = (previous ?: [BFTask taskWithResult:nil]); + + [self _validateQueryState]; + @weakify(self); + return [[[start continueWithBlock:^id(BFTask *task) { + @strongify(self); + return [[self class] _getCurrentUserForQueryState:queryState]; + }] continueWithBlock:^id(BFTask *task) { + @strongify(self); + PFUser *user = task.result; + return [[[self class] queryController] findObjectsAsyncForQueryState:queryState + withCancellationToken:cancellationTokenSource.token + user:user]; + }] continueWithBlock:^id(BFTask *task) { + @strongify(self); + if (!self) { + return task; + } + @synchronized (self) { + if (_cancellationTokenSource == cancellationTokenSource) { + _cancellationTokenSource = nil; + } + } + return task; + }]; +} + +///-------------------------------------- +#pragma mark - Get Object +///-------------------------------------- + +- (PFObject *)getFirstObject { + return [self getFirstObject:nil]; +} + +- (PFObject *)getFirstObject:(NSError **)error { + return [[self getFirstObjectInBackground] waitForResult:error]; +} + +- (BFTask *)getFirstObjectInBackground { + PFConsistencyAssert(self.state.cachePolicy != kPFCachePolicyCacheThenNetwork, + @"kPFCachePolicyCacheThenNetwork can only be used with methods that have a callback."); + return [self _getFirstObjectAsyncWithCachePolicy:self.state.cachePolicy after:nil]; +} + +- (void)getFirstObjectInBackgroundWithBlock:(PFObjectResultBlock)block { + @synchronized (self) { + if (!self.state.queriesLocalDatastore && self.state.cachePolicy == kPFCachePolicyCacheThenNetwork) { + BFTask *cacheTask = [[self _getFirstObjectAsyncWithCachePolicy:kPFCachePolicyCacheOnly + after:nil] thenCallBackOnMainThreadAsync:block]; + [[self _getFirstObjectAsyncWithCachePolicy:kPFCachePolicyNetworkOnly + after:cacheTask] thenCallBackOnMainThreadAsync:block]; + } else { + [[self getFirstObjectInBackground] thenCallBackOnMainThreadAsync:block]; + } + } +} + +- (void)getFirstObjectInBackgroundWithTarget:(id)target selector:(SEL)selector { + [self getFirstObjectInBackgroundWithBlock:^(PFObject *result, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:result object:error]; + }]; +} + +- (BFTask *)_getFirstObjectAsyncWithCachePolicy:(PFCachePolicy)cachePolicy after:(BFTask *)task { + self.limit = 1; + + PFQueryState *state = [self _queryStateCopyWithCachePolicy:cachePolicy]; + return [[self _findObjectsAsyncForQueryState:state after:task] continueWithSuccessBlock:^id(BFTask *task) { + NSArray *objects = task.result; + if (objects.count == 0) { + return [BFTask taskWithError:[PFQueryUtilities objectNotFoundError]]; + } + + return [BFTask taskWithResult:objects.lastObject]; + }]; +} + +///-------------------------------------- +#pragma mark - Count Objects +///-------------------------------------- + +- (NSInteger)countObjects { + return [self countObjects:nil]; +} + +- (NSInteger)countObjects:(NSError **)error { + NSNumber *count = [[self countObjectsInBackground] waitForResult:error]; + if (!count) { + // TODO: (nlutsenko) It's really weird that we are inconsistent in sync vs async methods. + // Leaving for now since some devs might be relying on this. + return -1; + } + + return [count integerValue]; +} + +- (BFTask *)countObjectsInBackground { + PFConsistencyAssert(self.state.cachePolicy != kPFCachePolicyCacheThenNetwork, + @"kPFCachePolicyCacheThenNetwork can only be used with methods that have a callback."); + return [self _countObjectsAsyncForQueryState:[self _queryStateCopy] after:nil]; +} + +- (void)countObjectsInBackgroundWithTarget:(id)target selector:(SEL)selector { + [self countObjectsInBackgroundWithBlock:^(int number, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:@(number) object:error]; + }]; +} + +- (void)countObjectsInBackgroundWithBlock:(PFIntegerResultBlock)block { + PFIdResultBlock callback = nil; + if (block) { + callback = ^(id result, NSError *error) { + block([result intValue], error); + }; + } + + @synchronized (self) { + if (!self.state.queriesLocalDatastore && self.state.cachePolicy == kPFCachePolicyCacheThenNetwork) { + PFQueryState *cacheQueryState = [self _queryStateCopyWithCachePolicy:kPFCachePolicyCacheOnly]; + BFTask *cacheTask = [[self _countObjectsAsyncForQueryState:cacheQueryState + after:nil] thenCallBackOnMainThreadAsync:callback]; + + PFQueryState *remoteQueryState = [self _queryStateCopyWithCachePolicy:kPFCachePolicyNetworkOnly]; + [[self _countObjectsAsyncForQueryState:remoteQueryState + after:cacheTask] thenCallBackOnMainThreadAsync:callback]; + } else { + [[self countObjectsInBackground] thenCallBackOnMainThreadAsync:callback]; + } + } +} + +- (BFTask *)_countObjectsAsyncForQueryState:(PFQueryState *)queryState after:(BFTask *)previousTask { + BFCancellationTokenSource *cancellationTokenSource = _cancellationTokenSource; + if (!previousTask) { + cancellationTokenSource = [BFCancellationTokenSource cancellationTokenSource]; + [self markAsRunning:cancellationTokenSource]; + } + + BFTask *start = (previousTask ?: [BFTask taskWithResult:nil]); + + [self _validateQueryState]; + @weakify(self); + return [[[start continueWithBlock:^id(BFTask *task) { + return [[self class] _getCurrentUserForQueryState:queryState]; + }] continueWithBlock:^id(BFTask *task) { + @strongify(self); + PFUser *user = task.result; + return [[[self class] queryController] countObjectsAsyncForQueryState:queryState + withCancellationToken:cancellationTokenSource.token + user:user]; + }] continueWithBlock:^id(BFTask *task) { + @synchronized(self) { + if (_cancellationTokenSource == cancellationTokenSource) { + _cancellationTokenSource = nil; + } + } + return task; + }]; +} + +///-------------------------------------- +#pragma mark - Cancel +///-------------------------------------- + +- (void)cancel { + @synchronized (self) { + if (_cancellationTokenSource) { + [_cancellationTokenSource cancel]; + _cancellationTokenSource = nil; + } + } +} + +///-------------------------------------- +#pragma mark - NSCopying +///-------------------------------------- + +- (instancetype)copyWithZone:(NSZone *)zone { + return [[[self class] allocWithZone:zone] initWithState:self.state]; +} + +///-------------------------------------- +#pragma mark NSObject +///-------------------------------------- + +- (NSUInteger)hash { + return [self.state hash]; +} + +- (BOOL)isEqual:(id)object { + if (self == object) { + return YES; + } + + if (![object isKindOfClass:[PFQuery class]]) { + return NO; + } + + return [self.state isEqual:((PFQuery *)object).state]; +} + +///-------------------------------------- +#pragma mark - Caching +///-------------------------------------- + +- (BOOL)hasCachedResult { + return [[[self class] queryController] hasCachedResultForQueryState:self.state + sessionToken:[PFUser currentSessionToken]]; +} + +- (void)clearCachedResult { + [[[self class] queryController] clearCachedResultForQueryState:self.state + sessionToken:[PFUser currentSessionToken]]; +} + ++ (void)clearAllCachedResults { + [[self queryController] clearAllCachedResults]; +} + +///-------------------------------------- +#pragma mark - Check Pinning Status +///-------------------------------------- + +/*! + If `enabled` is YES, raise an exception if OfflineStore is not enabled. If `enabled` is NO, raise + an exception if OfflineStore is enabled. + */ +- (void)_checkPinningEnabled:(BOOL)enabled { + BOOL loaded = [Parse _currentManager].offlineStoreLoaded; + if (enabled) { + PFConsistencyAssert(loaded, @"Method requires Pinning enabled."); + } else { + PFConsistencyAssert(!loaded, @"Method not allowed when Pinning is enabled."); + } +} + +///-------------------------------------- +#pragma mark - Query Source +///-------------------------------------- + +- (instancetype)fromLocalDatastore { + return [self fromPinWithName:nil]; +} + +- (instancetype)fromPin { + return [self fromPinWithName:PFObjectDefaultPin]; +} + +- (instancetype)fromPinWithName:(NSString *)name { + [self _checkPinningEnabled:YES]; + [self checkIfCommandIsRunning]; + + self.state.queriesLocalDatastore = YES; + self.state.localDatastorePinName = [name copy]; + + return self; +} + +- (instancetype)ignoreACLs { + [self _checkPinningEnabled:YES]; + [self checkIfCommandIsRunning]; + + self.state.shouldIgnoreACLs = YES; + + return self; +} + +///-------------------------------------- +#pragma mark - Query State +///-------------------------------------- + +- (PFQueryState *)_queryStateCopy { + return [self.state copy]; +} + +- (PFQueryState *)_queryStateCopyWithCachePolicy:(PFCachePolicy)cachePolicy { + PFMutableQueryState *state = [self.state mutableCopy]; + state.cachePolicy = cachePolicy; + return state; +} + +- (void)_validateQueryState { + PFConsistencyAssert(self.state.queriesLocalDatastore || !self.state.shouldIgnoreACLs, + @"`ignoreACLs` can only be used with Local Datastore queries."); +} + +///-------------------------------------- +#pragma mark - Query Controller +///-------------------------------------- + ++ (PFQueryController *)queryController { + return [Parse _currentManager].coreManager.queryController; +} + +///-------------------------------------- +#pragma mark - User +///-------------------------------------- + ++ (BFTask *)_getCurrentUserForQueryState:(PFQueryState *)state { + if (state.shouldIgnoreACLs) { + return [BFTask taskWithResult:nil]; + } + return [[Parse _currentManager].coreManager.currentUserController getCurrentObjectAsync]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFRelation.h b/Unit-2-Journal/Pods/Parse/Parse/PFRelation.h new file mode 100644 index 0000000..af64ff9 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFRelation.h @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import +#import +#import + +PF_ASSUME_NONNULL_BEGIN + +/*! + The `PFRelation` class that is used to access all of the children of a many-to-many relationship. + Each instance of `PFRelation` is associated with a particular parent object and key. + */ +@interface PFRelation : NSObject + +/*! + @abstract The name of the class of the target child objects. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, copy) NSString *targetClass; + +///-------------------------------------- +/// @name Accessing Objects +///-------------------------------------- + +/*! + @abstract Returns a object that can be used to get objects in this relation. + */ +- (PF_NULLABLE PFQuery *)query; + +///-------------------------------------- +/// @name Modifying Relations +///-------------------------------------- + +/*! + @abstract Adds a relation to the passed in object. + + @param object A object to add relation to. + */ +- (void)addObject:(PFObject *)object; + +/*! + @abstract Removes a relation to the passed in object. + + @param object A object to add relation to. + */ +- (void)removeObject:(PFObject *)object; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFRelation.m b/Unit-2-Journal/Pods/Parse/Parse/PFRelation.m new file mode 100644 index 0000000..a6fdb68 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFRelation.m @@ -0,0 +1,236 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRelation.h" +#import "PFRelationPrivate.h" + +#import + +#import "PFAssert.h" +#import "PFFieldOperation.h" +#import "PFInternalUtils.h" +#import "PFMacros.h" +#import "PFMutableRelationState.h" +#import "PFObjectPrivate.h" +#import "PFQueryPrivate.h" + +NSString *const PFRelationKeyClassName = @"className"; +NSString *const PFRelationKeyType = @"__type"; +NSString *const PFRelationKeyObjects = @"objects"; + +@interface PFRelation () { + // + // Use this queue as follows: + // Because state is defined as an atomic property, there's no need to use the queue if you're only reading from + // self.state once during the method. + // + // If you ever need to use self.state more than once, either take a copy at the top of the function, or use a + // dispatch_sync block. + // + // If you are ever changing the state variable, you should use dispatch_sync. + // + dispatch_queue_t _stateAccessQueue; +} + +@property (atomic, copy) PFMutableRelationState *state; + +@end + +@implementation PFRelation + +@dynamic targetClass; + +- (instancetype)init { + self = [super init]; + if (!self) return nil; + + _stateAccessQueue = dispatch_queue_create("com.parse.relation.state.access", DISPATCH_QUEUE_SERIAL); + _state = [[PFMutableRelationState alloc] init]; + + return self; +} + +- (instancetype)initWithParent:(PFObject *)newParent key:(NSString *)newKey { + self = [self init]; + if (!self) return nil; + + _state.parent = newParent; + _state.key = newKey; + + return self; +} + +- (instancetype)initWithTargetClass:(NSString *)newTargetClass { + self = [self init]; + if (!self) return nil; + + _state.targetClass = newTargetClass; + + return self; +} + +- (instancetype)initFromDictionary:(NSDictionary *)dictionary withDecoder:(PFDecoder *)decoder { + self = [self init]; + if (!self) return nil; + + NSArray *array = dictionary[PFRelationKeyObjects]; + NSMutableSet *known = [[NSMutableSet alloc] initWithCapacity:array.count]; + + // Decode the result + for (id encodedObject in array) { + [known addObject:[decoder decodeObject:encodedObject]]; + } + + _state.targetClass = dictionary[PFRelationKeyClassName]; + [_state.knownObjects setSet:known]; + + return self; +} + ++ (PFRelation *)relationForObject:(PFObject *)parent forKey:(NSString *)key { + return [[PFRelation alloc] initWithParent:parent key:key]; +} + ++ (PFRelation *)relationWithTargetClass:(NSString *)targetClass { + return [[PFRelation alloc] initWithTargetClass:targetClass]; +} + ++ (PFRelation *)relationFromDictionary:(NSDictionary *)dictionary withDecoder:(PFDecoder *)decoder { + return [[PFRelation alloc] initFromDictionary:dictionary withDecoder:decoder]; +} + +- (void)ensureParentIs:(PFObject *)someParent andKeyIs:(NSString *)someKey { + pf_sync_with_throw(_stateAccessQueue, ^{ + __strong PFObject *sparent = self.state.parent; + + if (!sparent) { + sparent = self.state.parent = someParent; + } + + if (!self.state.key) { + self.state.key = someKey; + } + + PFConsistencyAssert(sparent == someParent, + @"Internal error. One PFRelation retrieved from two different PFObjects."); + + PFConsistencyAssert([self.state.key isEqualToString:someKey], + @"Internal error. One PFRelation retrieved from two different keys."); + }); +} + +- (NSString *)description { + PFRelationState *state = [self.state copy]; + + return [NSString stringWithFormat:@"<%@: %p, %p.%@ -> %@>", + [self class], + self, + state.parent, + state.key, + state.targetClass]; +} + +- (PFQuery *)query { + PFRelationState *state = [self.state copy]; + __strong PFObject *sparent = state.parent; + + PFQuery *query = nil; + if (state.targetClass) { + query = [PFQuery queryWithClassName:state.targetClass]; + } else { + query = [PFQuery queryWithClassName:state.parentClassName]; + [query redirectClassNameForKey:state.key]; + } + if (sparent) { + [query whereRelatedToObject:sparent fromKey:state.key]; + } else if (state.parentClassName) { + PFObject *object = [PFObject objectWithoutDataWithClassName:state.parentClassName + objectId:state.parentObjectId]; + [query whereRelatedToObject:object fromKey:state.key]; + } + + return query; +} + +- (NSString *)targetClass { + return self.state.targetClass; +} + +- (void)setTargetClass:(NSString *)targetClass { + dispatch_sync(_stateAccessQueue, ^{ + self.state.targetClass = targetClass; + }); +} + +- (void)addObject:(PFObject *)object { + pf_sync_with_throw(_stateAccessQueue, ^{ + PFRelationState *state = self.state; + + PFRelationOperation *op = [PFRelationOperation addRelationToObjects:@[ object ]]; + [state.parent performOperation:op forKey:state.key]; + + self.state.targetClass = op.targetClass; + [self.state.knownObjects addObject:object]; + }); +} + +- (void)removeObject:(PFObject *)object { + pf_sync_with_throw(_stateAccessQueue, ^{ + PFRelationState *state = self.state; + + PFRelationOperation *op = [PFRelationOperation removeRelationToObjects:@[ object ]]; + [state.parent performOperation:op forKey:state.key]; + + self.state.targetClass = op.targetClass; + [self.state.knownObjects removeObject:object]; + }); +} + +- (NSDictionary *)encodeIntoDictionary { + PFRelationState *state = [self.state copy]; + NSMutableArray *encodedObjects = [NSMutableArray arrayWithCapacity:state.knownObjects.count]; + + for (PFObject *knownObject in state.knownObjects) { + [encodedObjects addObject:[[PFPointerObjectEncoder objectEncoder] encodeObject:knownObject]]; + } + + return @{ + PFRelationKeyType : @"Relation", + PFRelationKeyClassName : state.targetClass, + PFRelationKeyObjects : encodedObjects + }; +} + +/*! + Returns true if and only if this object was ever known to be in the relation. + This is used for offline caching. + */ +- (BOOL)_hasKnownObject:(PFObject *)object { + __block BOOL results = NO; + + dispatch_sync(_stateAccessQueue, ^{ + results = [self.state.knownObjects containsObject:object]; + }); + + return results; +} + +- (void)_addKnownObject:(PFObject *)object { + dispatch_sync(_stateAccessQueue, ^{ + [self.state.knownObjects addObject:object]; + }); +} + +- (void)_removeKnownObject:(PFObject *)object { + dispatch_sync(_stateAccessQueue, ^{ + [self.state.knownObjects removeObject:object]; + }); +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFRole.h b/Unit-2-Journal/Pods/Parse/Parse/PFRole.h new file mode 100644 index 0000000..18d21c9 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFRole.h @@ -0,0 +1,100 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import +#import +#import + +PF_ASSUME_NONNULL_BEGIN + +/*! + The `PFRole` class represents a Role on the Parse server. + `PFRoles` represent groupings of objects for the purposes of granting permissions + (e.g. specifying a for a ). + Roles are specified by their sets of child users and child roles, + all of which are granted any permissions that the parent role has. + + Roles must have a name (which cannot be changed after creation of the role), and must specify an ACL. + */ +@interface PFRole : PFObject + +///-------------------------------------- +/// @name Creating a New Role +///-------------------------------------- + +/*! + @abstract Constructs a new `PFRole` with the given name. + If no default ACL has been specified, you must provide an ACL for the role. + + @param name The name of the Role to create. + */ +- (instancetype)initWithName:(NSString *)name; + +/*! + @abstract Constructs a new `PFRole` with the given name. + + @param name The name of the Role to create. + @param acl The ACL for this role. Roles must have an ACL. + */ +- (instancetype)initWithName:(NSString *)name acl:(PF_NULLABLE PFACL *)acl; + +/*! + @abstract Constructs a new `PFRole` with the given name. + + @discussion If no default ACL has been specified, you must provide an ACL for the role. + + @param name The name of the Role to create. + */ ++ (instancetype)roleWithName:(NSString *)name; + +/*! + @abstract Constructs a new `PFRole` with the given name. + + @param name The name of the Role to create. + @param acl The ACL for this role. Roles must have an ACL. + */ ++ (instancetype)roleWithName:(NSString *)name acl:(PF_NULLABLE PFACL *)acl; + +///-------------------------------------- +/// @name Role-specific Properties +///-------------------------------------- + +/*! + @abstract Gets or sets the name for a role. + + @discussion This value must be set before the role has been saved to the server, + and cannot be set once the role has been saved. + + @warning A role's name can only contain alphanumeric characters, `_`, `-`, and spaces. + */ +@property (nonatomic, copy) NSString *name; + +/*! + @abstract Gets the for the objects that are direct children of this role. + + @discussion These users are granted any privileges that this role has been granted + (e.g. read or write access through ACLs). You can add or remove users from + the role through this relation. + */ +@property (nonatomic, strong, readonly) PFRelation *users; + +/*! + @abstract Gets the for the `PFRole` objects that are direct children of this role. + + @discussion These roles' users are granted any privileges that this role has been granted + (e.g. read or write access through ACLs). You can add or remove child roles + from this role through this relation. + */ +@property (nonatomic, strong, readonly) PFRelation *roles; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFRole.m b/Unit-2-Journal/Pods/Parse/Parse/PFRole.m new file mode 100644 index 0000000..bceec77 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFRole.m @@ -0,0 +1,91 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFRole.h" + +#import + +#import "PFAssert.h" +#import "PFObject+Subclass.h" +#import "PFObjectPrivate.h" +#import "PFQuery.h" + +@implementation PFRole + +///-------------------------------------- +#pragma mark - Init +///-------------------------------------- + +- (instancetype)initWithName:(NSString *)name { + return [self initWithName:name acl:nil]; +} + +- (instancetype)initWithName:(NSString *)name acl:(PFACL *)acl { + self = [super init]; + if (!self) return nil; + + self.name = name; + self.ACL = acl; + + return self; +} + ++ (instancetype)roleWithName:(NSString *)name { + return [[self alloc] initWithName:name]; +} + ++ (instancetype)roleWithName:(NSString *)name acl:(PFACL *)acl { + return [[self alloc] initWithName:name acl:acl]; +} + +///-------------------------------------- +#pragma mark - Role-specific Properties +///-------------------------------------- + +@dynamic name; + +// Dynamic synthesizers would use objectForKey, not relationForKey +- (PFRelation *)roles { + return [self relationForKey:@keypath(PFRole, roles)]; +} + +- (PFRelation *)users { + return [self relationForKey:@keypath(PFRole, users)]; +} + +///-------------------------------------- +#pragma mark - PFObject Overrides +///-------------------------------------- + +- (void)setObject:(id)object forKey:(NSString *)key { + if ([key isEqualToString:@keypath(PFRole, name)]) { + PFConsistencyAssert(!self.objectId, @"A role's name can only be set before it has been saved."); + PFParameterAssert([object isKindOfClass:[NSString class]], @"A role's name must be an NSString."); + PFParameterAssert([object rangeOfString:@"^[0-9a-zA-Z_\\- ]+$" options:NSRegularExpressionSearch].location != NSNotFound, + @"A role's name can only contain alphanumeric characters, _, -, and spaces."); + } + [super setObject:object forKey:key]; +} + +- (BFTask *)saveInBackground { + PFConsistencyAssert(self.objectId || self.name, @"New roles must specify a name."); + return [super saveInBackground]; +} + +// Validates a class name. We override this to only allow the role class name. ++ (void)_assertValidInstanceClassName:(NSString *)className { + PFParameterAssert([className isEqualToString:[self parseClassName]], + @"Cannot initialize a PFRole with a custom class name."); +} + ++ (NSString *)parseClassName { + return @"_Role"; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFSession.h b/Unit-2-Journal/Pods/Parse/Parse/PFSession.h new file mode 100644 index 0000000..3b5c00c --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFSession.h @@ -0,0 +1,52 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import +#import + +PF_ASSUME_NONNULL_BEGIN + +@class PFSession; + +typedef void(^PFSessionResultBlock)(PFSession *PF_NULLABLE_S session, NSError *PF_NULLABLE_S error); + +/*! + `PFSession` is a local representation of a session. + This class is a subclass of a , + and retains the same functionality as any other subclass of . + */ +@interface PFSession : PFObject + +/*! + @abstract The session token string for this session. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, copy, readonly) NSString *sessionToken; + +/*! + *Asynchronously* fetches a `PFSession` object related to the current user. + + @returns A task that is `completed` with an instance of `PFSession` class or is `faulted` if the operation fails. + */ ++ (BFTask PF_GENERIC(PFSession *)*)getCurrentSessionInBackground; + +/*! + *Asynchronously* fetches a `PFSession` object related to the current user. + + @param block The block to execute when the operation completes. + It should have the following argument signature: `^(PFSession *session, NSError *error)`. + */ ++ (void)getCurrentSessionInBackgroundWithBlock:(PF_NULLABLE PFSessionResultBlock)block; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFSession.m b/Unit-2-Journal/Pods/Parse/Parse/PFSession.m new file mode 100644 index 0000000..a4af8e8 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFSession.m @@ -0,0 +1,106 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFSession.h" + +#import "BFTask+Private.h" +#import "PFAssert.h" +#import "PFCoreManager.h" +#import "PFCurrentUserController.h" +#import "PFObject+Subclass.h" +#import "PFObjectPrivate.h" +#import "PFSessionController.h" +#import "PFUserPrivate.h" +#import "Parse_Private.h" + +static BOOL _PFSessionIsWritablePropertyForKey(NSString *key) { + static NSSet *protectedKeys; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + protectedKeys = [NSSet setWithObjects: + @"sessionToken", + @"restricted", + @"createdWith", + @"installationId", + @"user", + @"expiresAt", nil]; + }); + return ![protectedKeys containsObject:key]; +} + +@implementation PFSession + +@dynamic sessionToken; + +///-------------------------------------- +#pragma mark - PFSubclassing +///-------------------------------------- + ++ (NSString *)parseClassName { + return @"_Session"; +} + +- (BOOL)needsDefaultACL { + return NO; +} + +///-------------------------------------- +#pragma mark - Class +///-------------------------------------- + ++ (void)_assertValidInstanceClassName:(NSString *)className { + PFParameterAssert([className isEqualToString:[PFSession parseClassName]], + @"Cannot initialize a PFSession with a custom class name."); +} + +#pragma mark Get Current Session + ++ (BFTask *)getCurrentSessionInBackground { + PFCurrentUserController *controller = [[self class] currentUserController]; + return [[controller getCurrentUserSessionTokenAsync] continueWithBlock:^id(BFTask *task) { + NSString *sessionToken = task.result; + return [[self sessionController] getCurrentSessionAsyncWithSessionToken:sessionToken]; + }]; +} + ++ (void)getCurrentSessionInBackgroundWithBlock:(PFSessionResultBlock)block { + [[self getCurrentSessionInBackground] thenCallBackOnMainThreadAsync:block]; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (void)setObject:(id)object forKey:(NSString *)key { + PFParameterAssert(_PFSessionIsWritablePropertyForKey(key), + @"Can't change the '%@' field of a PFSession.", key); + [super setObject:object forKey:key]; +} + +- (void)removeObjectForKey:(NSString *)key { + PFParameterAssert(_PFSessionIsWritablePropertyForKey(key), + @"Can't remove the '%@' field of a PFSession.", key); + [super removeObjectForKey:key]; +} + +- (void)removeObjectsInArray:(NSArray *)objects forKey:(NSString *)key { + PFParameterAssert(_PFSessionIsWritablePropertyForKey(key), + @"Can't remove any object from '%@' field of a PFSession.", key); + [super removeObjectsInArray:objects forKey:key]; +} + +///-------------------------------------- +#pragma mark - Session Controller +///-------------------------------------- + ++ (PFSessionController *)sessionController { + return [Parse _currentManager].coreManager.sessionController; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFSubclassing.h b/Unit-2-Journal/Pods/Parse/Parse/PFSubclassing.h new file mode 100644 index 0000000..c07743d --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFSubclassing.h @@ -0,0 +1,87 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +@class PFQuery PF_GENERIC(PFGenericObject : PFObject *); + +PF_ASSUME_NONNULL_BEGIN + +/*! + If a subclass of conforms to `PFSubclassing` and calls , + Parse framework will be able to use that class as the native class for a Parse cloud object. + + Classes conforming to this protocol should subclass and + include `PFObject+Subclass.h` in their implementation file. + This ensures the methods in the Subclass category of are exposed in its subclasses only. + */ +@protocol PFSubclassing + +/*! + @abstract Constructs an object of the most specific class known to implement . + + @discussion This method takes care to help subclasses be subclassed themselves. + For example, `[PFUser object]` returns a by default but will return an + object of a registered subclass instead if one is known. + A default implementation is provided by which should always be sufficient. + + @returns Returns the object that is instantiated. + */ ++ (instancetype)object; + +/*! + @abstract Creates a reference to an existing PFObject for use in creating associations between PFObjects. + + @discussion Calling <[PFObject isDataAvailable]> on this object will return `NO` + until <[PFObject fetchIfNeeded]> has been called. No network request will be made. + A default implementation is provided by PFObject which should always be sufficient. + + @param objectId The object id for the referenced object. + + @returns A new without data. + */ ++ (instancetype)objectWithoutDataWithObjectId:(PF_NULLABLE NSString *)objectId; + +/*! + @abstract The name of the class as seen in the REST API. + */ ++ (NSString *)parseClassName; + +/*! + @abstract Create a query which returns objects of this type. + + @discussion A default implementation is provided by which should always be sufficient. + */ ++ (PF_NULLABLE PFQuery *)query; + +/*! + @abstract Returns a query for objects of this type with a given predicate. + + @discussion A default implementation is provided by which should always be sufficient. + + @param predicate The predicate to create conditions from. + + @returns An instance of . + + @see [PFQuery queryWithClassName:predicate:] + */ ++ (PF_NULLABLE PFQuery *)queryWithPredicate:(PF_NULLABLE NSPredicate *)predicate; + +/*! + @abstract Lets Parse know this class should be used to instantiate all objects with class type . + + @warning This method must be called before <[Parse setApplicationId:clientKey:]> + */ ++ (void)registerSubclass; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFUser.h b/Unit-2-Journal/Pods/Parse/Parse/PFUser.h new file mode 100644 index 0000000..3ae63f6 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFUser.h @@ -0,0 +1,519 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +#import +#import +#import + +PF_ASSUME_NONNULL_BEGIN + +typedef void(^PFUserSessionUpgradeResultBlock)(NSError *PF_NULLABLE_S error); +typedef void(^PFUserLogoutResultBlock)(NSError *PF_NULLABLE_S error); + +@class PFQuery PF_GENERIC(PFGenericObject : PFObject *); +@protocol PFUserAuthenticationDelegate; + +/*! + The `PFUser` class is a local representation of a user persisted to the Parse Data. + This class is a subclass of a , and retains the same functionality of a , + but also extends it with various user specific methods, like authentication, signing up, and validation uniqueness. + + Many APIs responsible for linking a `PFUser` with Facebook or Twitter have been deprecated in favor of dedicated + utilities for each social network. See , and for more information. + */ + +@interface PFUser : PFObject + +///-------------------------------------- +/// @name Accessing the Current User +///-------------------------------------- + +/*! + @abstract Gets the currently logged in user from disk and returns an instance of it. + + @returns Returns a `PFUser` that is the currently logged in user. If there is none, returns `nil`. + */ ++ (PF_NULLABLE instancetype)currentUser; + +/*! + @abstract The session token for the `PFUser`. + + @discussion This is set by the server upon successful authentication. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, copy, readonly) NSString *sessionToken; + +/*! + @abstract Whether the `PFUser` was just created from a request. + + @discussion This is only set after a Facebook or Twitter login. + */ +@property (assign, readonly) BOOL isNew; + +/*! + @abstract Whether the user is an authenticated object for the device. + + @discussion An authenticated `PFUser` is one that is obtained via a or method. + An authenticated object is required in order to save (with altered values) or delete it. + + @returns Returns whether the user is authenticated. + */ +- (BOOL)isAuthenticated; + +///-------------------------------------- +/// @name Creating a New User +///-------------------------------------- + +/*! + @abstract Creates a new `PFUser` object. + + @returns Returns a new `PFUser` object. + */ ++ (instancetype)user; + +/*! + @abstract Enables automatic creation of anonymous users. + + @discussion After calling this method, will always have a value. + The user will only be created on the server once the user has been saved, + or once an object with a relation to that user or an ACL that refers to the user has been saved. + + @warning <[PFObject saveEventually]> will not work on if an item being saved has a relation + to an automatic user that has never been saved. + */ ++ (void)enableAutomaticUser; + +/*! + @abstract The username for the `PFUser`. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, strong) NSString *username; + +/**! + @abstract The password for the `PFUser`. + + @discussion This will not be filled in from the server with the password. + It is only meant to be set. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, strong) NSString *password; + +/*! + @abstract The email for the `PFUser`. + */ +@property (PF_NULLABLE_PROPERTY nonatomic, strong) NSString *email; + +/*! + @abstract Signs up the user *synchronously*. + + @discussion This will also enforce that the username isn't already taken. + + @warning Make sure that password and username are set before calling this method. + + @returns Returns `YES` if the sign up was successful, otherwise `NO`. + */ +- (BOOL)signUp PF_SWIFT_UNAVAILABLE; + +/*! + @abstract Signs up the user *synchronously*. + + @discussion This will also enforce that the username isn't already taken. + + @warning Make sure that password and username are set before calling this method. + + @param error Error object to set on error. + + @returns Returns whether the sign up was successful. + */ +- (BOOL)signUp:(NSError **)error; + +/*! + @abstract Signs up the user *asynchronously*. + + @discussion This will also enforce that the username isn't already taken. + + @warning Make sure that password and username are set before calling this method. + + @returns The task, that encapsulates the work being done. + */ +- (BFTask PF_GENERIC(NSNumber *)*)signUpInBackground; + +/*! + @abstract Signs up the user *asynchronously*. + + @discussion This will also enforce that the username isn't already taken. + + @warning Make sure that password and username are set before calling this method. + + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + */ +- (void)signUpInBackgroundWithBlock:(PF_NULLABLE PFBooleanResultBlock)block; + +/*! + @abstract Signs up the user *asynchronously*. + + @discussion This will also enforce that the username isn't already taken. + + @warning Make sure that password and username are set before calling this method. + + @param target Target object for the selector. + @param selector The selector that will be called when the asynchrounous request is complete. + It should have the following signature: `(void)callbackWithResult:(NSNumber *)result error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `[result boolValue]` will tell you whether the call succeeded or not. + */ +- (void)signUpInBackgroundWithTarget:(PF_NULLABLE_S id)target selector:(PF_NULLABLE_S SEL)selector; + +///-------------------------------------- +/// @name Logging In +///-------------------------------------- + +/*! + @abstract Makes a *synchronous* request to login a user with specified credentials. + + @discussion Returns an instance of the successfully logged in `PFUser`. + This also caches the user locally so that calls to will use the latest logged in user. + + @param username The username of the user. + @param password The password of the user. + + @returns Returns an instance of the `PFUser` on success. + If login failed for either wrong password or wrong username, returns `nil`. + */ ++ (PF_NULLABLE instancetype)logInWithUsername:(NSString *)username + password:(NSString *)password PF_SWIFT_UNAVAILABLE; + +/*! + @abstract Makes a *synchronous* request to login a user with specified credentials. + + @discussion Returns an instance of the successfully logged in `PFUser`. + This also caches the user locally so that calls to will use the latest logged in user. + + @param username The username of the user. + @param password The password of the user. + @param error The error object to set on error. + + @returns Returns an instance of the `PFUser` on success. + If login failed for either wrong password or wrong username, returns `nil`. + */ ++ (PF_NULLABLE instancetype)logInWithUsername:(NSString *)username + password:(NSString *)password + error:(NSError **)error; + +/*! + @abstract Makes an *asynchronous* request to login a user with specified credentials. + + @discussion Returns an instance of the successfully logged in `PFUser`. + This also caches the user locally so that calls to will use the latest logged in user. + + @param username The username of the user. + @param password The password of the user. + + @returns The task, that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(__kindof PFUser *)*)logInWithUsernameInBackground:(NSString *)username + password:(NSString *)password; + +/*! + @abstract Makes an *asynchronous* request to login a user with specified credentials. + + @discussion Returns an instance of the successfully logged in `PFUser`. + This also caches the user locally so that calls to will use the latest logged in user. + + @param username The username of the user. + @param password The password of the user. + @param target Target object for the selector. + @param selector The selector that will be called when the asynchrounous request is complete. + It should have the following signature: `(void)callbackWithUser:(PFUser *)user error:(NSError *)error`. + */ ++ (void)logInWithUsernameInBackground:(NSString *)username + password:(NSString *)password + target:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector; + +/*! + @abstract Makes an *asynchronous* request to log in a user with specified credentials. + + @discussion Returns an instance of the successfully logged in `PFUser`. + This also caches the user locally so that calls to will use the latest logged in user. + + @param username The username of the user. + @param password The password of the user. + @param block The block to execute. + It should have the following argument signature: `^(PFUser *user, NSError *error)`. + */ ++ (void)logInWithUsernameInBackground:(NSString *)username + password:(NSString *)password + block:(PF_NULLABLE PFUserResultBlock)block; + +///-------------------------------------- +/// @name Becoming a User +///-------------------------------------- + +/*! + @abstract Makes a *synchronous* request to become a user with the given session token. + + @discussion Returns an instance of the successfully logged in `PFUser`. + This also caches the user locally so that calls to will use the latest logged in user. + + @param sessionToken The session token for the user. + + @returns Returns an instance of the `PFUser` on success. + If becoming a user fails due to incorrect token, it returns `nil`. + */ ++ (PF_NULLABLE instancetype)become:(NSString *)sessionToken PF_SWIFT_UNAVAILABLE; + +/*! + @abstract Makes a *synchronous* request to become a user with the given session token. + + @discussion Returns an instance of the successfully logged in `PFUser`. + This will also cache the user locally so that calls to will use the latest logged in user. + + @param sessionToken The session token for the user. + @param error The error object to set on error. + + @returns Returns an instance of the `PFUser` on success. + If becoming a user fails due to incorrect token, it returns `nil`. + */ ++ (PF_NULLABLE instancetype)become:(NSString *)sessionToken error:(NSError **)error; + +/*! + @abstract Makes an *asynchronous* request to become a user with the given session token. + + @discussion Returns an instance of the successfully logged in `PFUser`. + This also caches the user locally so that calls to will use the latest logged in user. + + @param sessionToken The session token for the user. + + @returns The task, that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(__kindof PFUser *)*)becomeInBackground:(NSString *)sessionToken; + +/*! + @abstract Makes an *asynchronous* request to become a user with the given session token. + + @discussion Returns an instance of the successfully logged in `PFUser`. This also caches the user locally + so that calls to will use the latest logged in user. + + @param sessionToken The session token for the user. + @param block The block to execute. + The block should have the following argument signature: `^(PFUser *user, NSError *error)`. + */ ++ (void)becomeInBackground:(NSString *)sessionToken block:(PF_NULLABLE PFUserResultBlock)block; + +/*! + @abstract Makes an *asynchronous* request to become a user with the given session token. + + @discussion Returns an instance of the successfully logged in `PFUser`. This also caches the user locally + so that calls to will use the latest logged in user. + + @param sessionToken The session token for the user. + @param target Target object for the selector. + @param selector The selector that will be called when the asynchrounous request is complete. + It should have the following signature: `(void)callbackWithUser:(PFUser *)user error:(NSError *)error`. + */ ++ (void)becomeInBackground:(NSString *)sessionToken + target:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector; + +///-------------------------------------- +/// @name Revocable Session +///-------------------------------------- + +/*! + @abstract Enables revocable sessions and migrates the currentUser session token to use revocable session if needed. + + @discussion This method is required if you want to use APIs + and you application's 'Require Revocable Session' setting is turned off on `http://parse.com` app settings. + After returned `BFTask` completes - class and APIs will be available for use. + + @returns An instance of `BFTask` that is completed when revocable + sessions are enabled and currentUser token is migrated. + */ ++ (BFTask *)enableRevocableSessionInBackground; + +/*! + @abstract Enables revocable sessions and upgrades the currentUser session token to use revocable session if needed. + + @discussion This method is required if you want to use APIs + and legacy sessions are enabled in your application settings on `http://parse.com/`. + After returned `BFTask` completes - class and APIs will be available for use. + + @param block Block that will be called when revocable sessions are enabled and currentUser token is migrated. + */ ++ (void)enableRevocableSessionInBackgroundWithBlock:(PF_NULLABLE PFUserSessionUpgradeResultBlock)block; + +///-------------------------------------- +/// @name Logging Out +///-------------------------------------- + +/*! + @abstract *Synchronously* logs out the currently logged in user on disk. + */ ++ (void)logOut; + +/*! + @abstract *Asynchronously* logs out the currently logged in user. + + @discussion This will also remove the session from disk, log out of linked services + and all future calls to will return `nil`. This is preferrable to using , + unless your code is already running from a background thread. + + @returns An instance of `BFTask`, that is resolved with `nil` result when logging out completes. + */ ++ (BFTask *)logOutInBackground; + +/*! + @abstract *Asynchronously* logs out the currently logged in user. + + @discussion This will also remove the session from disk, log out of linked services + and all future calls to will return `nil`. This is preferrable to using , + unless your code is already running from a background thread. + + @param block A block that will be called when logging out completes or fails. + */ ++ (void)logOutInBackgroundWithBlock:(PF_NULLABLE PFUserLogoutResultBlock)block; + +///-------------------------------------- +/// @name Requesting a Password Reset +///-------------------------------------- + +/*! + @abstract *Synchronously* Send a password reset request for a specified email. + + @discussion If a user account exists with that email, an email will be sent to that address + with instructions on how to reset their password. + + @param email Email of the account to send a reset password request. + + @returns Returns `YES` if the reset email request is successful. `NO` - if no account was found for the email address. + */ ++ (BOOL)requestPasswordResetForEmail:(NSString *)email PF_SWIFT_UNAVAILABLE; + +/*! + @abstract *Synchronously* send a password reset request for a specified email and sets an error object. + + @discussion If a user account exists with that email, an email will be sent to that address + with instructions on how to reset their password. + + @param email Email of the account to send a reset password request. + @param error Error object to set on error. + @returns Returns `YES` if the reset email request is successful. `NO` - if no account was found for the email address. + */ ++ (BOOL)requestPasswordResetForEmail:(NSString *)email error:(NSError **)error; + +/*! + @abstract Send a password reset request asynchronously for a specified email and sets an + error object. If a user account exists with that email, an email will be sent to + that address with instructions on how to reset their password. + @param email Email of the account to send a reset password request. + @returns The task, that encapsulates the work being done. + */ ++ (BFTask PF_GENERIC(NSNumber *)*)requestPasswordResetForEmailInBackground:(NSString *)email; + +/*! + @abstract Send a password reset request *asynchronously* for a specified email. + + @discussion If a user account exists with that email, an email will be sent to that address + with instructions on how to reset their password. + + @param email Email of the account to send a reset password request. + @param block The block to execute. + It should have the following argument signature: `^(BOOL succeeded, NSError *error)`. + */ ++ (void)requestPasswordResetForEmailInBackground:(NSString *)email + block:(PF_NULLABLE PFBooleanResultBlock)block; + +/*! + @abstract Send a password reset request *asynchronously* for a specified email and sets an error object. + + @discussion If a user account exists with that email, an email will be sent to that address + with instructions on how to reset their password. + + @param email Email of the account to send a reset password request. + @param target Target object for the selector. + @param selector The selector that will be called when the asynchronous request is complete. + It should have the following signature: `(void)callbackWithResult:(NSNumber *)result error:(NSError *)error`. + `error` will be `nil` on success and set if there was an error. + `[result boolValue]` will tell you whether the call succeeded or not. + */ ++ (void)requestPasswordResetForEmailInBackground:(NSString *)email + target:(PF_NULLABLE_S id)target + selector:(PF_NULLABLE_S SEL)selector; + +///-------------------------------------- +/// @name Third-party Authentication +///-------------------------------------- + +/*! + @abstract Registers a third party authentication delegate. + + @note This method shouldn't be invoked directly unless developing a third party authentication library. + @see PFUserAuthenticationDelegate + + @param delegate The third party authenticaiton delegate to be registered. + @param authType The name of the type of third party authentication source. + */ ++ (void)registerAuthenticationDelegate:(id)delegate forAuthType:(NSString *)authType; + +/*! + @abstract Logs in a user with third party authentication credentials. + + @note This method shouldn't be invoked directly unless developing a third party authentication library. + @see PFUserAuthenticationDelegate + + @param authType The name of the type of third party authentication source. + @param authData The user credentials of the third party authentication source. + + @returns A `BFTask` that is resolved to `PFUser` when logging in completes. + */ ++ (BFTask PF_GENERIC(PFUser *) *)logInWithAuthTypeInBackground:(NSString *)authType authData:(NSDictionary *)authData; + +/*! + @abstract Links this user to a third party authentication library. + + @note This method shouldn't be invoked directly unless developing a third party authentication library. + @see PFUserAuthenticationDelegate + + @param authType The name of the type of third party authentication source. + @param authData The user credentials of the third party authentication source. + + @returns A `BFTask` that is resolved to `@YES` if linking succeeds. + */ +- (BFTask PF_GENERIC(NSNumber *) *)linkWithAuthTypeInBackground:(NSString *)authType authData:(NSDictionary *)authData; + +/*! + @abstract Unlinks this user from a third party authentication library. + + @note This method shouldn't be invoked directly unless developing a third party authentication library. + @see PFUserAuthenticationDelegate + + @param authType The name of the type of third party authentication source. + + @returns A `BFTask` that is resolved to `@YES` if unlinking succeeds. + */ +- (BFTask PF_GENERIC(NSNumber *) *)unlinkWithAuthTypeInBackground:(NSString *)authType; + +/*! + @abstract Indicates whether this user is linked with a third party authentication library of a specific type. + + @note This method shouldn't be invoked directly unless developing a third party authentication library. + @see PFUserAuthenticationDelegate + + @param authType The name of the type of third party authentication source. + + @returns `YES` if the user is linked with a provider, otherwise `NO`. + */ +- (BOOL)isLinkedWithAuthType:(NSString *)authType; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFUser.m b/Unit-2-Journal/Pods/Parse/Parse/PFUser.m new file mode 100644 index 0000000..d7a6eac --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFUser.m @@ -0,0 +1,1225 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "PFUser.h" +#import "PFUserPrivate.h" + +#import +#import + +#import "BFTask+Private.h" +#import "PFACLPrivate.h" +#import "PFAnonymousAuthenticationProvider.h" +#import "PFAnonymousUtils_Private.h" +#import "PFAssert.h" +#import "PFCommandResult.h" +#import "PFCommandRunning.h" +#import "PFCoreManager.h" +#import "PFCurrentUserController.h" +#import "PFDecoder.h" +#import "PFErrorUtilities.h" +#import "PFFileManager.h" +#import "PFKeychainStore.h" +#import "PFMultiProcessFileLockController.h" +#import "PFMutableUserState.h" +#import "PFObject+Subclass.h" +#import "PFObjectConstants.h" +#import "PFObjectFilePersistenceController.h" +#import "PFObjectPrivate.h" +#import "PFOfflineStore.h" +#import "PFOperationSet.h" +#import "PFQueryPrivate.h" +#import "PFRESTUserCommand.h" +#import "PFSessionUtilities.h" +#import "PFTaskQueue.h" +#import "PFUserAuthenticationController.h" +#import "PFUserConstants.h" +#import "PFUserController.h" +#import "PFUserFileCodingLogic.h" +#import "Parse_Private.h" + +NSString *const PFUserCurrentUserFileName = @"currentUser"; +NSString *const PFUserCurrentUserPinName = @"_currentUser"; +NSString *const PFUserCurrentUserKeychainItemName = @"currentUser"; + +static BOOL _PFUserIsWritablePropertyForKey(NSString *key) { + return ![PFUserSessionTokenRESTKey isEqualToString:key]; +} + +static BOOL _PFUserIsRemovablePropertyForKey(NSString *key) { + return _PFUserIsWritablePropertyForKey(key) && ![PFUserUsernameRESTKey isEqualToString:key]; +} + +@interface PFUser () + +@property (nonatomic, copy) PFUserState *_state; + +@end + +@implementation PFUser (Private) + +static BOOL revocableSessionEnabled_; + +- (void)setDefaultValues { + [super setDefaultValues]; + self.isCurrentUser = NO; +} + +- (BOOL)needsDefaultACL { + return NO; +} + +///-------------------------------------- +#pragma mark - Current User +///-------------------------------------- + +// Returns the session token for the current user. ++ (NSString *)currentSessionToken { + return [[self _getCurrentUserSessionTokenAsync] waitForResult:nil withMainThreadWarning:NO]; +} + ++ (BFTask *)_getCurrentUserSessionTokenAsync { + return [[self currentUserController] getCurrentUserSessionTokenAsync]; +} + +///-------------------------------------- +#pragma mark - PFObject +///-------------------------------------- + +#pragma mark Validation + +- (BFTask PF_GENERIC(PFVoid) *)_validateDeleteAsync { + return [[super _validateDeleteAsync] continueWithSuccessBlock:^id(BFTask PF_GENERIC(PFVoid) *task) { + if (!self.isAuthenticated) { + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorUserCannotBeAlteredWithoutSession + message:@"User cannot be deleted unless they have been authenticated."]; + return [BFTask taskWithError:error]; + } + return nil; + }]; +} + +- (BFTask PF_GENERIC(PFVoid) *)_validateSaveEventuallyAsync { + return [[super _validateSaveEventuallyAsync] continueWithSuccessBlock:^id(BFTask PF_GENERIC(PFVoid) *task) { + if ([self isDirtyForKey:PFUserPasswordRESTKey]) { + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorOperationForbidden + message:@"Unable to saveEventually a PFUser with dirty password."]; + return [BFTask taskWithError:error]; + } + return nil; + }]; +} + +#pragma mark Else + +- (NSString *)displayClassName { + if ([self isMemberOfClass:[PFUser class]]) { + return @"PFUser"; + } + return NSStringFromClass([self class]); +} + +// Validates a class name. We override this to only allow the user class name. ++ (void)_assertValidInstanceClassName:(NSString *)className { + PFParameterAssert([className isEqualToString:[PFUser parseClassName]], + @"Cannot initialize a PFUser with a custom class name."); +} + +// Checks the properties on the object before saving. +- (void)_checkSaveParametersWithCurrentUser:(PFUser *)currentUser { + @synchronized ([self lock]) { + PFConsistencyAssert(self.objectId || self.isLazy, + @"User cannot be saved unless they are already signed up. Call signUp first."); + + PFConsistencyAssert([self _isAuthenticatedWithCurrentUser:currentUser] || + [self.objectId isEqualToString:currentUser.objectId], + @"User cannot be saved unless they have been authenticated via logIn or signUp", nil); + } +} + +// Checks the properties on the object before signUp. +- (BFTask *)_validateSignUpAsync { + return [BFTask taskFromExecutor:[BFExecutor defaultExecutor] withBlock:^id{ + NSError *error = nil; + @synchronized (self.lock) { + if (!self.username) { + error = [PFErrorUtilities errorWithCode:kPFErrorUsernameMissing + message:@"Cannot sign up without a username."]; + } else if (!self.password) { + error = [PFErrorUtilities errorWithCode:kPFErrorUserPasswordMissing + message:@"Cannot sign up without a password."]; + } else if (![self isDirty:NO] || self.objectId) { + error = [PFErrorUtilities errorWithCode:kPFErrorUsernameTaken + message:@"Cannot sign up an existing user."]; + } + } + if (error) { + return [BFTask taskWithError:error]; + } + return nil; + }]; +} + +- (NSMutableDictionary *)_convertToDictionaryForSaving:(PFOperationSet *)changes + withObjectEncoder:(PFEncoder *)encoder { + @synchronized ([self lock]) { + NSMutableDictionary *serialized = [super _convertToDictionaryForSaving:changes withObjectEncoder:encoder]; + if ([self.authData count] > 0) { + serialized[PFUserAuthDataRESTKey] = [self.authData copy]; + } + return serialized; + } +} + +- (BFTask *)handleSaveResultAsync:(NSDictionary *)result { + return [[super handleSaveResultAsync:result] continueWithSuccessBlock:^id(BFTask *saveTask) { + if (self.isCurrentUser) { + [self cleanUpAuthData]; + PFCurrentUserController *controller = [[self class] currentUserController]; + return [[controller saveCurrentObjectAsync:self] continueWithBlock:^id(BFTask *task) { + return saveTask.result; + }]; + } + return saveTask; + }]; +} + +///-------------------------------------- +#pragma mark - Sign Up +///-------------------------------------- + +- (PFRESTCommand *)_currentSignUpCommandForChanges:(PFOperationSet *)changes { + @synchronized ([self lock]) { + NSDictionary *parameters = [self _convertToDictionaryForSaving:changes + withObjectEncoder:[PFPointerObjectEncoder objectEncoder]]; + return [PFRESTUserCommand signUpUserCommandWithParameters:parameters + revocableSession:[[self class] _isRevocableSessionEnabled] + sessionToken:self.sessionToken]; + } +} + +///-------------------------------------- +#pragma mark - Service Login +///-------------------------------------- + +// Constructs the command for user_signup_or_login. This is used for Facebook, Twitter, and other linking services. +- (PFRESTCommand *)_currentServiceLoginCommandForChanges:(PFOperationSet *)changes { + @synchronized ([self lock]) { + NSDictionary *parameters = [self _convertToDictionaryForSaving:changes + withObjectEncoder:[PFPointerObjectEncoder objectEncoder]]; + return [PFRESTUserCommand serviceLoginUserCommandWithParameters:parameters + revocableSession:[[self class] _isRevocableSessionEnabled] + sessionToken:self.sessionToken]; + } +} + +- (BFTask *)_handleServiceLoginCommandResult:(PFCommandResult *)result { + return [BFTask taskFromExecutor:[BFExecutor defaultExecutor] withBlock:^id{ + NSDictionary *resultDictionary = result.result; + return [[self handleSaveResultAsync:resultDictionary] continueWithBlock:^id(BFTask *task) { + BOOL new = (result.httpResponse.statusCode == 201); // 201 means Created + @synchronized (self.lock) { + if (self._state.isNew != new) { + PFMutableUserState *state = [self._state mutableCopy]; + state.isNew = new; + self._state = state; + } + if (resultDictionary) { + self.isLazy = NO; + + // Serialize the object to disk so we can later access it via currentUser + PFCurrentUserController *controller = [[self class] currentUserController]; + return [[controller saveCurrentObjectAsync:self] continueAsyncWithBlock:^id(BFTask *task) { + [self.saveDelegate invoke:self error:nil]; + return self; + }]; + } + return [BFTask taskWithResult:self]; + } + }]; + }]; +} + +// Override the save result handling with custom user functionality +- (BFTask *)handleSignUpResultAsync:(BFTask *)task { + @synchronized ([self lock]) { + PFCommandResult *commandResult = task.result; + NSDictionary *result = commandResult.result; + BFTask *signUpTask = task; + + // Bail-out early, but still make sure that super class handled the result + if (task.error || task.cancelled || task.exception) { + return [[super handleSaveResultAsync:nil] continueWithBlock:^id(BFTask *task) { + return signUpTask; + }]; + } + __block BOOL saveResult = NO; + return [[[super handleSaveResultAsync:result] continueWithBlock:^id(BFTask *task) { + saveResult = [task.result boolValue]; + if (saveResult) { + @synchronized (self.lock) { + // Save the session information + PFMutableUserState *state = [self._state mutableCopy]; + state.sessionToken = result[PFUserSessionTokenRESTKey]; + state.isNew = YES; + self._state = state; + self.isLazy = NO; + } + } + return signUpTask; + }] continueWithBlock:^id(BFTask *task) { + PFCurrentUserController *controller = [[self class] currentUserController]; + return [[controller saveCurrentObjectAsync:self] continueWithResult:@(saveResult)]; + }]; + } +} + +- (void)cleanUpAuthData { + @synchronized ([self lock]) { + for (NSString *key in [self.authData copy]) { + id linkData = [self.authData objectForKey:key]; + if (!linkData || linkData == [NSNull null]) { + [self.authData removeObjectForKey:key]; + [self.linkedServiceNames removeObject:key]; + + [[[[self class] authenticationController] restoreAuthenticationAsyncWithAuthData:nil + forAuthType:key] waitForResult:nil withMainThreadWarning:NO]; + } + } + } +} + +/*! + Copies special PFUser fields from another user. + */ +- (PFObject *)mergeFromObject:(PFUser *)other { + @synchronized ([self lock]) { + [super mergeFromObject:other]; + + if (self == other) { + // If they point to the same instance, then don't merge. + return self; + } + + PFMutableUserState *state = [self._state mutableCopy]; + state.sessionToken = other.sessionToken; + state.isNew = other._state.isNew; + self._state = state; + + [self.authData removeAllObjects]; + [self.authData addEntriesFromDictionary:other.authData]; + + [self.linkedServiceNames removeAllObjects]; + [self.linkedServiceNames unionSet:other.linkedServiceNames]; + + return self; + } +} + +/* + Merges custom fields from JSON associated with a PFUser: + { + "session_token": string, + "is_new": boolean, + "auth_data": { + "facebook": { + "id": string, + "access_token": string, + "expiration_date": string (represents date) + } + } + } + */ +- (void)_mergeFromServerWithResult:(NSDictionary *)result decoder:(PFDecoder *)decoder completeData:(BOOL)completeData { + @synchronized ([self lock]) { + // save the session token + + PFMutableUserState *state = [self._state mutableCopy]; + + NSString *newSessionToken = result[PFUserSessionTokenRESTKey]; + if (newSessionToken) { + // Save the session token + state.sessionToken = newSessionToken; + } + + self._state = state; + + // Merge the linked service metadata + NSDictionary *newAuthData = [decoder decodeObject:result[PFUserAuthDataRESTKey]]; + if (newAuthData) { + [self.authData removeAllObjects]; + [self.linkedServiceNames removeAllObjects]; + [newAuthData enumerateKeysAndObjectsUsingBlock:^(id key, id linkData, BOOL *stop) { + if (linkData != [NSNull null]) { + [self.authData setObject:linkData forKey:key]; + [self.linkedServiceNames addObject:key]; + [self synchronizeAuthDataWithAuthType:key]; + } else { + [self.authData removeObjectForKey:key]; + [self.linkedServiceNames removeObject:key]; + [self synchronizeAuthDataWithAuthType:key]; + } + }]; + } + + // Strip authData and sessionToken from the data, as those keys are saved in a custom way + NSMutableDictionary *serverData = [result mutableCopy]; + [serverData removeObjectForKey:PFUserSessionTokenRESTKey]; + [serverData removeObjectForKey:PFUserAuthDataRESTKey]; + + // The public fields are handled by the regular mergeFromServer + [super _mergeFromServerWithResult:serverData decoder:decoder completeData:completeData]; + } +} + +- (void)synchronizeAuthDataWithAuthType:(NSString *)authType { + @synchronized ([self lock]) { + if (!self.isCurrentUser) { + return; + } + + NSDictionary *data = self.authData[authType]; + BFTask *restoreTask = [[[self class] authenticationController] restoreAuthenticationAsyncWithAuthData:data + forAuthType:authType]; + [restoreTask waitForResult:nil withMainThreadWarning:NO]; + if (restoreTask.faulted || ![restoreTask.result boolValue]) { // TODO: (nlutsenko) Maybe chain this method? + [self unlinkWithAuthTypeInBackground:authType]; + } + } +} + +- (void)synchronizeAllAuthData { + @synchronized ([self lock]) { + // Ensures that all auth providers have auth data (e.g. access tokens, etc.) that matches this user. + if (self.authData) { + [self.authData enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + [self synchronizeAuthDataWithAuthType:key]; + }]; + } + } +} + +- (BFTask *)resolveLazinessAsync:(BFTask *)toAwait { + @synchronized ([self lock]) { + if (!self.isLazy) { + return [BFTask taskWithResult:self]; + } + if (self.linkedServiceNames.count == 0) { + // If there are no linked services, treat this like a sign-up. + return [[self signUpAsync:toAwait] continueAsyncWithSuccessBlock:^id(BFTask *task) { + self.isLazy = NO; + return self; + }]; + } + + // Otherwise, treat this as a SignUpOrLogIn + PFRESTCommand *command = [self _currentServiceLoginCommandForChanges:[self unsavedChanges]]; + [self startSave]; + + return [[toAwait continueAsyncWithBlock:^id(BFTask *task) { + return [[Parse _currentManager].commandRunner runCommandAsync:command withOptions:0]; + }] continueAsyncWithBlock:^id(BFTask *task) { + PFCommandResult *result = task.result; + + if (task.error || task.cancelled) { + // If there was an error, we want to roll forward the save changes, but return the original task. + return [[self _handleServiceLoginCommandResult:result] continueAsyncWithBlock:^id(BFTask *unused) { + // Return the original task, instead of the new one (in order to have a proper error) + return task; + }]; + } + + if ([result.httpResponse statusCode] == 201) { + return [self _handleServiceLoginCommandResult:result]; + } else { + // Otherwise, treat this as a fresh login, and switch the current user to the new user. + PFUser *newUser = [[self class] _objectFromDictionary:result.result + defaultClassName:[self parseClassName] + completeData:YES]; + @synchronized ([newUser lock]) { + [newUser startSave]; + return [newUser _handleServiceLoginCommandResult:result]; + } + } + }]; + } +} + +- (BFTask *)_logOutAsyncWithAuthType:(NSString *)authType { + return [[[self class] authenticationController] deauthenticateAsyncWithAuthType:authType]; +} + ++ (instancetype)logInLazyUserWithAuthType:(NSString *)authType authData:(NSDictionary *)authData { + PFUser *user = [self user]; + @synchronized ([user lock]) { + [user setIsCurrentUser:YES]; + user.isLazy = YES; + [user.authData setObject:authData forKey:authType]; + [user.linkedServiceNames addObject:authType]; + } + return user; +} + +- (BFTask *)signUpAsync:(BFTask *)toAwait { + PFUser *currentUser = [[self class] currentUser]; + NSString *token = currentUser.sessionToken; + @synchronized ([self lock]) { + if (self.objectId) { + // For anonymous users, there may be an objectId. Setting the userName + // will have removed the anonymous link and set the value in the authData + // object to [NSNull null], so we can just treat it like a save operation. + if (self.authData[PFAnonymousUserAuthenticationType] == [NSNull null]) { + return [self saveAsync:toAwait]; + } + + // Otherwise, return an error + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorUsernameTaken + message:@"Cannot sign up a user that has already signed up."]; + return [BFTask taskWithError:error]; + } + + // If the operationSetQueue is has operation sets in it, then a save or signUp is in progress. + // If there is a signUp or save already in progress, don't allow another one to start. + if ([self _hasOutstandingOperations]) { + NSError *error = [PFErrorUtilities errorWithCode:kPFErrorUsernameTaken + message:@"Cannot sign up a user that is already signing up."]; + return [BFTask taskWithError:error]; + } + + return [[self _validateSignUpAsync] continueWithSuccessBlock:^id(BFTask *task) { + if (currentUser && [PFAnonymousUtils isLinkedWithUser:currentUser]) { + // self doesn't have any outstanding saves, so we can safely merge its operations + // into the current user. + + PFConsistencyAssert(!isCurrentUser, @"Attempt to merge currentUser with itself."); + + [self checkForChangesToMutableContainers]; + @synchronized ([currentUser lock]) { + NSString *oldUsername = [currentUser.username copy]; + NSString *oldPassword = [currentUser.password copy]; + NSArray *oldAnonymousData = currentUser.authData[PFAnonymousUserAuthenticationType]; + + [currentUser checkForChangesToMutableContainers]; + + // Move the changes to this object over to the currentUser object. + PFOperationSet *selfOperations = operationSetQueue[0]; + [operationSetQueue removeAllObjects]; + [operationSetQueue addObject:[[PFOperationSet alloc] init]]; + for (NSString *key in selfOperations) { + [currentUser setObject:[selfOperations objectForKey:key] forKey:key]; + } + + currentUser->dirty = YES; + currentUser.password = self.password; + currentUser.username = self.username; + + [self rebuildEstimatedData]; + [currentUser rebuildEstimatedData]; + + return [[[[currentUser saveInBackground] continueWithBlock:^id(BFTask *task) { + if (task.error || task.cancelled || task.exception) { + @synchronized ([currentUser lock]) { + if (oldUsername) { + currentUser.username = oldUsername; + } + currentUser.password = oldPassword; + [currentUser restoreAnonymity:oldAnonymousData]; + } + + @synchronized(self.lock) { + [operationSetQueue replaceObjectAtIndex:0 withObject:selfOperations]; + [self rebuildEstimatedData]; + } + } + return task; + }] continueWithSuccessBlock:^id(BFTask *task) { + if ([Parse _currentManager].offlineStoreLoaded) { + return [[Parse _currentManager].offlineStore deleteDataForObjectAsync:currentUser]; + } + return nil; + }] continueWithSuccessBlock:^id(BFTask *task) { + [self mergeFromObject:currentUser]; + PFCurrentUserController *controller = [[self class] currentUserController]; + return [[controller saveCurrentObjectAsync:self] continueWithResult:@YES]; + }]; + } + } + // Use a nil session token for objects saved during a signup. + BFTask *saveChildren = [self _saveChildrenInBackgroundWithCurrentUser:currentUser sessionToken:token]; + PFOperationSet *changes = [self unsavedChanges]; + [self startSave]; + + return [[[toAwait continueWithBlock:^id(BFTask *task) { + return saveChildren; + }] continueWithSuccessBlock:^id(BFTask *task) { + // We need to construct the signup command lazily, because saving the children + // may change the way the object itself is serialized. + PFRESTCommand *command = [self _currentSignUpCommandForChanges:changes]; + return [[Parse _currentManager].commandRunner runCommandAsync:command + withOptions:PFCommandRunningOptionRetryIfFailed]; + }] continueWithBlock:^id(BFTask *task) { + return [self handleSignUpResultAsync:task]; + }]; + }]; + } +} + +- (void)stripAnonymity { + @synchronized ([self lock]) { + if ([PFAnonymousUtils isLinkedWithUser:self]) { + NSString *authType = PFAnonymousUserAuthenticationType; + + [self.linkedServiceNames removeObject:authType]; + + if (self.objectId) { + self.authData[authType] = [NSNull null]; + } else { + [self.authData removeObjectForKey:authType]; + } + dirty = YES; + } + } +} + +- (void)restoreAnonymity:(id)anonymousData { + @synchronized ([self lock]) { + if (anonymousData && anonymousData != [NSNull null]) { + NSString *authType = PFAnonymousUserAuthenticationType; + [self.linkedServiceNames addObject:authType]; + self.authData[authType] = anonymousData; + } + } +} + +///-------------------------------------- +#pragma mark - Saving +///-------------------------------------- + +- (PFRESTCommand *)_constructSaveCommandForChanges:(PFOperationSet *)changes + sessionToken:(NSString *)token + objectEncoder:(PFEncoder *)encoder { + // If we are curent user - use the latest available session token, as it might have been changed since + // this command was enqueued. + if ([self isCurrentUser]) { + token = self.sessionToken; + } + return [super _constructSaveCommandForChanges:changes + sessionToken:token + objectEncoder:encoder]; +} + +///-------------------------------------- +#pragma mark - REST operations +///-------------------------------------- + +- (void)mergeFromRESTDictionary:(NSDictionary *)object withDecoder:(PFDecoder *)decoder { + @synchronized ([self lock]) { + NSMutableDictionary *restDictionary = [object mutableCopy]; + + PFMutableUserState *state = [self._state mutableCopy]; + if (object[PFUserSessionTokenRESTKey] != nil) { + state.sessionToken = object[PFUserSessionTokenRESTKey]; + [restDictionary removeObjectForKey:PFUserSessionTokenRESTKey]; + } + + if (object[PFUserAuthDataRESTKey] != nil) { + NSDictionary *newAuthData = object[PFUserAuthDataRESTKey]; + [newAuthData enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + self.authData[key] = obj; + if (obj != nil) { + [self.linkedServiceNames addObject:key]; + } + [self synchronizeAuthDataWithAuthType:key]; + }]; + + [restDictionary removeObjectForKey:PFUserAuthDataRESTKey]; + } + + self._state = state; + + [super mergeFromRESTDictionary:restDictionary withDecoder:decoder]; + } +} + +- (NSDictionary *)RESTDictionaryWithObjectEncoder:(PFEncoder *)objectEncoder + operationSetUUIDs:(NSArray **)operationSetUUIDs + state:(PFObjectState *)state + operationSetQueue:(NSArray *)queue { + @synchronized (self.lock) { + NSMutableArray *cleanQueue = [queue mutableCopy]; + [queue enumerateObjectsUsingBlock:^(PFOperationSet *operationSet, NSUInteger idx, BOOL *stop) { + // Remove operations for `password` field, to not let it persist to LDS. + if (operationSet[PFUserPasswordRESTKey]) { + operationSet = [operationSet copy]; + [operationSet removeObjectForKey:PFUserPasswordRESTKey]; + + cleanQueue[idx] = operationSet; + } + }]; + return [super RESTDictionaryWithObjectEncoder:objectEncoder + operationSetUUIDs:operationSetUUIDs + state:state + operationSetQueue:cleanQueue]; + } +} + +///-------------------------------------- +#pragma mark - Revocable Session +///-------------------------------------- + ++ (dispatch_queue_t)_revocableSessionSynchronizationQueue { + static dispatch_queue_t queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + queue = dispatch_queue_create("com.parse.user.revocableSession", DISPATCH_QUEUE_CONCURRENT); + }); + return queue; +} + ++ (BOOL)_isRevocableSessionEnabled { + __block BOOL value = NO; + dispatch_sync([self _revocableSessionSynchronizationQueue], ^{ + value = revocableSessionEnabled_; + }); + return value; +} + ++ (void)_setRevocableSessionEnabled:(BOOL)enabled { + dispatch_barrier_sync([self _revocableSessionSynchronizationQueue], ^{ + revocableSessionEnabled_ = enabled; + }); +} + ++ (BFTask *)_upgradeToRevocableSessionInBackground { + PFCurrentUserController *controller = [[self class] currentUserController]; + return [[controller getCurrentUserAsyncWithOptions:0] continueWithSuccessBlock:^id(BFTask *task) { + PFUser *currentUser = task.result; + NSString *sessionToken = currentUser.sessionToken; + + // Bail-out early if session token is already revocable. + if ([PFSessionUtilities isSessionTokenRevocable:sessionToken]) { + return [BFTask taskWithResult:currentUser]; + } + return [currentUser _upgradeToRevocableSessionInBackground]; + }]; +} + +- (BFTask *)_upgradeToRevocableSessionInBackground { + @weakify(self); + return [self.taskQueue enqueue:^BFTask *(BFTask *toAwait) { + return [toAwait continueAsyncWithBlock:^id(BFTask *task) { + @strongify(self); + + NSString *token = nil; + @synchronized(self.lock) { + token = self.sessionToken; + } + + // Check session token here as well, to make sure we didn't upgrade the token in between. + if ([PFSessionUtilities isSessionTokenRevocable:token]) { + return [BFTask taskWithResult:self]; + } + + PFRESTCommand *command = [PFRESTUserCommand upgradeToRevocableSessionCommandWithSessionToken:token]; + return [[[Parse _currentManager].commandRunner runCommandAsync:command + withOptions:0] continueWithSuccessBlock:^id(BFTask *task) { + NSDictionary *dictionary = [task.result result]; + PFSession *session = [PFSession _objectFromDictionary:dictionary + defaultClassName:[PFSession parseClassName] + completeData:YES]; + @synchronized(self.lock) { + PFMutableUserState *state = [self._state mutableCopy]; + state.sessionToken = session.sessionToken; + self._state = state; + } + PFCurrentUserController *controller = [[self class] currentUserController]; + return [controller saveCurrentObjectAsync:self]; + }]; + }]; + }]; +} + +///-------------------------------------- +#pragma mark - Data Source +///-------------------------------------- + ++ (PFObjectFileCodingLogic *)objectFileCodingLogic { + return [PFUserFileCodingLogic codingLogic]; +} + ++ (PFUserAuthenticationController *)authenticationController { + return [Parse _currentManager].coreManager.userAuthenticationController; +} + ++ (PFUserController *)userController { + return [Parse _currentManager].coreManager.userController; +} + +@end + +@implementation PFUser + +@dynamic _state; + +// PFUser: +@dynamic username; +@dynamic email; +@dynamic password; + +// PFUser (Private): +@dynamic authData; +@dynamic linkedServiceNames; +@dynamic isLazy; + ++ (NSString *)parseClassName { + return @"_User"; +} + ++ (instancetype)currentUser { + PFCurrentUserController *controller = [[self class] currentUserController]; + return [[controller getCurrentObjectAsync] waitForResult:nil withMainThreadWarning:NO]; +} + +- (BOOL)isCurrentUser { + @synchronized (self.lock) { + return isCurrentUser; + } +} + +- (void)setIsCurrentUser:(BOOL)aBool { + @synchronized (self.lock) { + isCurrentUser = aBool; + } +} + +///-------------------------------------- +#pragma mark - Log In +///-------------------------------------- + ++ (instancetype)logInWithUsername:(NSString *)username password:(NSString *)password { + return [self logInWithUsername:username password:password error:nil]; +} + ++ (instancetype)logInWithUsername:(NSString *)username password:(NSString *)password error:(NSError **)error { + return [[self logInWithUsernameInBackground:username password:password] waitForResult:error]; +} + ++ (BFTask *)logInWithUsernameInBackground:(NSString *)username password:(NSString *)password { + return [[self userController] logInCurrentUserAsyncWithUsername:username + password:password + revocableSession:[self _isRevocableSessionEnabled]]; +} + ++ (void)logInWithUsernameInBackground:(NSString *)username + password:(NSString *)password + block:(PFUserResultBlock)block { + [[self logInWithUsernameInBackground:username password:password] thenCallBackOnMainThreadAsync:block]; +} + ++ (void)logInWithUsernameInBackground:(NSString *)username + password:(NSString *)password + target:(id)target + selector:(SEL)selector { + [self logInWithUsernameInBackground:username password:password block:^(PFUser *user, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:user object:error]; + }]; +} + +///-------------------------------------- +#pragma mark - Third-party Authentication +///-------------------------------------- + ++ (void)registerAuthenticationDelegate:(id)delegate forAuthType:(NSString *)authType { + [[self authenticationController] registerAuthenticationDelegate:delegate forAuthType:authType]; +} + +#pragma mark Log In + ++ (BFTask *)logInWithAuthTypeInBackground:(NSString *)authType authData:(NSDictionary *)authData { + PFParameterAssert(authType, @"Can't log in without `authType`."); + PFParameterAssert(authData, @"Can't log in without `authData`."); + PFUserAuthenticationController *controller = [self authenticationController]; + PFConsistencyAssert([controller authenticationDelegateForAuthType:authType], + @"No registered authentication delegate found for `%@` authentication type. " + @"Register a delegate first via PFUser.registerAuthenticationDelegate(delegate, forAuthType:)", authType); + return [[self authenticationController] logInUserAsyncWithAuthType:authType authData:authData]; +} + +#pragma mark Link + +- (BFTask *)linkWithAuthTypeInBackground:(NSString *)authType authData:(NSDictionary *)newAuthData { + PFParameterAssert(authType, @"Can't link without `authType`."); + PFParameterAssert(authData, @"Can't link without `authData`."); + PFUserAuthenticationController *controller = [[self class] authenticationController]; + PFConsistencyAssert([controller authenticationDelegateForAuthType:authType], + @"No registered authentication delegate found for `%@` authentication type. " + @"Register a delegate first via PFUser.registerAuthenticationDelegate(delegate, forAuthType:)", authType); + + @weakify(self); + return [self.taskQueue enqueue:^BFTask *(BFTask *toAwait) { + return [toAwait continueWithBlock:^id(BFTask *task) { + @strongify(self); + + NSDictionary *oldAnonymousData = nil; + + @synchronized (self.lock) { + self.authData[authType] = newAuthData; + [self.linkedServiceNames addObject:authType]; + + oldAnonymousData = self.authData[PFAnonymousUserAuthenticationType]; + [self stripAnonymity]; + + dirty = YES; + } + + return [[self saveAsync:nil] continueAsyncWithBlock:^id(BFTask *task) { + if (task.result) { + [self synchronizeAuthDataWithAuthType:authType]; + } else { + @synchronized (self.lock) { + [self.authData removeObjectForKey:authType]; + [self.linkedServiceNames removeObject:authType]; + [self restoreAnonymity:oldAnonymousData]; + } + } + return task; + }]; + }]; + }]; +} + +#pragma mark Unlink + +- (BFTask *)unlinkWithAuthTypeInBackground:(NSString *)authType { + return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{ + @synchronized (self.lock) { + if (self.authData[authType]) { + self.authData[authType] = [NSNull null]; + dirty = YES; + return [self saveInBackground]; + } + } + return @YES; + }]; +} + +#pragma mark Linked + +- (BOOL)isLinkedWithAuthType:(NSString *)authType { + PFParameterAssert(authType, @"Authentication type can't be `nil`."); + @synchronized(self.lock) { + return [self.linkedServiceNames containsObject:authType]; + } +} + +#pragma mark Private + ++ (void)_unregisterAuthenticationDelegateForAuthType:(NSString *)authType { + [[[self class] authenticationController] unregisterAuthenticationDelegateForAuthType:authType]; +} + +///-------------------------------------- +#pragma mark - Become +///-------------------------------------- + ++ (instancetype)become:(NSString *)sessionToken { + return [self become:sessionToken error:nil]; +} + ++ (instancetype)become:(NSString *)sessionToken error:(NSError **)error { + return [[self becomeInBackground:sessionToken] waitForResult:error]; +} + ++ (BFTask *)becomeInBackground:(NSString *)sessionToken { + PFParameterAssert(sessionToken, @"Session Token must be provided for login."); + return [[self userController] logInCurrentUserAsyncWithSessionToken:sessionToken]; +} + ++ (void)becomeInBackground:(NSString *)sessionToken block:(PFUserResultBlock)block { + [[self becomeInBackground:sessionToken] thenCallBackOnMainThreadAsync:block]; +} + ++ (void)becomeInBackground:(NSString *)sessionToken target:(id)target selector:(SEL)selector { + [self becomeInBackground:sessionToken block:^(PFUser *user, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:user object:error]; + }]; +} + +///-------------------------------------- +#pragma mark - Revocable Sessions +///-------------------------------------- + ++ (BFTask *)enableRevocableSessionInBackground { + if ([self _isRevocableSessionEnabled]) { + return [BFTask taskWithResult:nil]; + } + [self _setRevocableSessionEnabled:YES]; + return [self _upgradeToRevocableSessionInBackground]; +} + ++ (void)enableRevocableSessionInBackgroundWithBlock:(PFUserSessionUpgradeResultBlock)block { + [[self enableRevocableSessionInBackground] continueWithBlock:^id(BFTask *task) { + block(task.error); + return nil; + }]; +} + +///-------------------------------------- +#pragma mark - Request Password Reset +///-------------------------------------- + ++ (BOOL)requestPasswordResetForEmail:(NSString *)email { + return [self requestPasswordResetForEmail:email error:nil]; +} + ++ (BOOL)requestPasswordResetForEmail:(NSString *)email error:(NSError **)error { + return [[[self requestPasswordResetForEmailInBackground:email] waitForResult:error] boolValue]; +} + ++ (BFTask *)requestPasswordResetForEmailInBackground:(NSString *)email { + PFParameterAssert(email, @"Email should be provided to request password reset."); + return [[[self userController] requestPasswordResetAsyncForEmail:email] continueWithSuccessResult:@YES]; +} + ++ (void)requestPasswordResetForEmailInBackground:(NSString *)email block:(PFBooleanResultBlock)block { + [[self requestPasswordResetForEmailInBackground:email] thenCallBackOnMainThreadWithBoolValueAsync:block]; +} + ++ (void)requestPasswordResetForEmailInBackground:(NSString *)email target:(id)target selector:(SEL)selector { + [self requestPasswordResetForEmailInBackground:email block:^(BOOL succeeded, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:@(succeeded) object:error]; + }]; +} + +///-------------------------------------- +#pragma mark - Logging out +///-------------------------------------- + ++ (void)logOut { + [[self logOutInBackground] waitForResult:nil withMainThreadWarning:NO]; +} + ++ (BFTask *)logOutInBackground { + PFCurrentUserController *controller = [[self class] currentUserController]; + return [controller logOutCurrentUserAsync]; +} + ++ (void)logOutInBackgroundWithBlock:(PFUserLogoutResultBlock)block { + [[self logOutInBackground] continueWithExecutor:[BFExecutor mainThreadExecutor] withBlock:^id(BFTask *task) { + block(task.error); + return nil; + }]; +} + +- (BFTask *)_logOutAsync { + //TODO: (nlutsenko) Maybe add this to `taskQueue`? + + NSString *token = nil; + NSMutableArray *tasks = [NSMutableArray array]; + @synchronized(self.lock) { + [self.authData enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + BFTask *task = [self _logOutAsyncWithAuthType:key]; + [tasks addObject:task]; + }]; + + self.isCurrentUser = NO; + + token = [self.sessionToken copy]; + + PFMutableUserState *state = [self._state mutableCopy]; + state.sessionToken = nil; + self._state = state; + } + + BFTask *task = [BFTask taskForCompletionOfAllTasks:tasks]; + + if ([PFSessionUtilities isSessionTokenRevocable:token]) { + return [task continueWithExecutor:[BFExecutor defaultExecutor] withBlock:^id(BFTask *task) { + return [[[self class] userController] logOutUserAsyncWithSessionToken:token]; + }]; + } + return task; +} + +///-------------------------------------- +#pragma mark - Accessors +///-------------------------------------- + +- (void)setObject:(id)object forKey:(NSString *)key { + PFParameterAssert(_PFUserIsWritablePropertyForKey(key), + @"Can't remove the '%@' field of a PFUser.", key); + if ([key isEqualToString:PFUserUsernameRESTKey]) { + [self stripAnonymity]; + } + [super setObject:object forKey:key]; +} + +- (void)removeObjectForKey:(NSString *)key { + PFParameterAssert(_PFUserIsRemovablePropertyForKey(key), + @"Can't remove the '%@' field of a PFUser.", key); + [super removeObjectForKey:key]; +} + +- (NSMutableDictionary *)authData { + @synchronized ([self lock]) { + if (!authData) { + authData = [[NSMutableDictionary alloc] init]; + } + } + return authData; +} + +- (NSMutableSet *)linkedServiceNames { + @synchronized ([self lock]) { + if (!linkedServiceNames) { + linkedServiceNames = [[NSMutableSet alloc] init]; + } + } + return linkedServiceNames; +} + ++ (instancetype)user { + return [self object]; +} + +- (BFTask *)saveAsync:(BFTask *)toAwait { + if (!toAwait) { + toAwait = [BFTask taskWithResult:nil]; + } + + // This breaks a rare deadlock scenario where on one thread, user.lock is acquired before taskQueue.lock sometimes, + // but not always. Using continueAsyncWithBlock unlocks from the taskQueue, and solves the proplem. + return [toAwait continueAsyncWithBlock:^id(BFTask *task) { + @synchronized ([self lock]) { + if (self.isLazy) { + return [[self resolveLazinessAsync:toAwait] continueAsyncWithSuccessBlock:^id(BFTask *task) { + return @(!!task.result); + }]; + } + } + + return [super saveAsync:toAwait]; + }]; +} + +- (BFTask *)fetchAsync:(BFTask *)toAwait { + if ([self isLazy]) { + return [BFTask taskWithResult:@YES]; + } + + return [[super fetchAsync:toAwait] continueAsyncWithSuccessBlock:^id(BFTask *fetchAsyncTask) { + if ([self isCurrentUser]) { + [self cleanUpAuthData]; + PFCurrentUserController *controller = [[self class] currentUserController]; + return [[controller saveCurrentObjectAsync:self] continueAsyncWithBlock:^id(BFTask *task) { + return fetchAsyncTask.result; + }]; + } + return fetchAsyncTask.result; + }]; +} + +- (instancetype)fetch:(NSError **)error { + if (self.isLazy) { + return self; + } + return [super fetch:error]; +} + +- (void)fetchInBackgroundWithBlock:(PFObjectResultBlock)block { + if (self.isLazy) { + if (block) { + block(self, nil); + return; + } + } + [super fetchInBackgroundWithBlock:^(PFObject *result, NSError *error) { + if (block) { + block(result, error); + } + }]; +} + +- (BOOL)signUp { + return [self signUp:nil]; +} + +- (BOOL)signUp:(NSError **)error { + return [[[self signUpInBackground] waitForResult:error] boolValue]; +} + +- (BFTask *)signUpInBackground { + return [self.taskQueue enqueue:^BFTask *(BFTask *toAwait) { + return [self signUpAsync:toAwait]; + }]; +} + +- (void)signUpInBackgroundWithTarget:(id)target selector:(SEL)selector { + [self signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { + [PFInternalUtils safePerformSelector:selector withTarget:target object:@(succeeded) object:error]; + }]; +} + +- (BOOL)isAuthenticated { + PFUser *currentUser = [[self class] currentUser]; + return [self _isAuthenticatedWithCurrentUser:currentUser]; +} + +- (BOOL)_isAuthenticatedWithCurrentUser:(PFUser *)currentUser { + @synchronized ([self lock]) { + BOOL authenticated = self.isLazy || self.sessionToken; + if (!authenticated && currentUser != nil) { + authenticated = [self.objectId isEqualToString:currentUser.objectId]; + } else { + authenticated = self.isCurrentUser; + } + return authenticated; + } +} + +- (BOOL)isNew { + return self._state.isNew; +} + +- (NSString *)sessionToken { + return self._state.sessionToken; +} + +- (void)signUpInBackgroundWithBlock:(PFBooleanResultBlock)block { + @synchronized ([self lock]) { + if (self.objectId) { + // For anonymous users, there may be an objectId. Setting the userName + // will have removed the anonymous link and set the value in the authData + // object to [NSNull null], so we can just treat it like a save operation. + if (authData[PFAnonymousUserAuthenticationType] == [NSNull null]) { + [self saveInBackgroundWithBlock:block]; + return; + } + } + [[self signUpInBackground] thenCallBackOnMainThreadWithBoolValueAsync:block]; + } +} + ++ (void)enableAutomaticUser { + [Parse _currentManager].coreManager.currentUserController.automaticUsersEnabled = YES; +} + +///-------------------------------------- +#pragma mark - PFObjectPrivateSubclass +///-------------------------------------- + +#pragma mark State + ++ (PFObjectState *)_newObjectStateWithParseClassName:(NSString *)className + objectId:(NSString *)objectId + isComplete:(BOOL)complete { + return [PFUserState stateWithParseClassName:className objectId:objectId isComplete:complete]; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/PFUserAuthenticationDelegate.h b/Unit-2-Journal/Pods/Parse/Parse/PFUserAuthenticationDelegate.h new file mode 100644 index 0000000..d51c107 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/PFUserAuthenticationDelegate.h @@ -0,0 +1,36 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import + +PF_ASSUME_NONNULL_BEGIN + +/*! + Provides a general interface for delegation of third party authentication with s. + */ +@protocol PFUserAuthenticationDelegate + +/*! + @abstract Called when restoring third party authentication credentials that have been serialized, + such as session keys, user id, etc. + + @note This method will be executed on a background thread. + + @param authData The auth data for the provider. This value may be `nil` when unlinking an account. + + @returns `YES` - if the `authData` was succesfully synchronized, + or `NO` if user should not longer be associated because of bad `authData`. + */ +- (BOOL)restoreAuthenticationWithAuthData:(PF_NULLABLE NSDictionary PF_GENERIC(NSString *, NSString *) *)authData; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Parse.h b/Unit-2-Journal/Pods/Parse/Parse/Parse.h new file mode 100644 index 0000000..52cd000 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Parse.h @@ -0,0 +1,195 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#if !TARGET_OS_WATCH + +#import +#import + +#endif + +#if TARGET_OS_IOS + +#import +#import +#import + +#endif + +PF_ASSUME_NONNULL_BEGIN + +/*! + The `Parse` class contains static functions that handle global configuration for the Parse framework. + */ +@interface Parse : NSObject + +///-------------------------------------- +/// @name Connecting to Parse +///-------------------------------------- + +/*! + @abstract Sets the applicationId and clientKey of your application. + + @param applicationId The application id of your Parse application. + @param clientKey The client key of your Parse application. + */ ++ (void)setApplicationId:(NSString *)applicationId clientKey:(NSString *)clientKey; + +/*! + @abstract The current application id that was used to configure Parse framework. + */ ++ (NSString *)getApplicationId; + +/*! + @abstract The current client key that was used to configure Parse framework. + */ ++ (NSString *)getClientKey; + +///-------------------------------------- +/// @name Enabling Local Datastore +///-------------------------------------- + +/*! + @abstract Enable pinning in your application. This must be called before your application can use + pinning. The recommended way is to call this method before `setApplicationId:clientKey:`. + */ ++ (void)enableLocalDatastore; + +/*! + @abstract Flag that indicates whether Local Datastore is enabled. + + @returns `YES` if Local Datastore is enabled, otherwise `NO`. + */ ++ (BOOL)isLocalDatastoreEnabled; + +///-------------------------------------- +/// @name Enabling Extensions Data Sharing +///-------------------------------------- + +/*! + @abstract Enables data sharing with an application group identifier. + + @discussion After enabling - Local Datastore, `currentUser`, `currentInstallation` and all eventually commands + are going to be available to every application/extension in a group that have the same Parse applicationId. + + @warning This method is required to be called before . + + @param groupIdentifier Application Group Identifier to share data with. + */ ++ (void)enableDataSharingWithApplicationGroupIdentifier:(NSString *)groupIdentifier PF_EXTENSION_UNAVAILABLE("Use `enableDataSharingWithApplicationGroupIdentifier:containingApplication:`.") PF_WATCH_UNAVAILABLE; + +/*! + @abstract Enables data sharing with an application group identifier. + + @discussion After enabling - Local Datastore, `currentUser`, `currentInstallation` and all eventually commands + are going to be available to every application/extension in a group that have the same Parse applicationId. + + @warning This method is required to be called before . + This method can only be used by application extensions. + + @param groupIdentifier Application Group Identifier to share data with. + @param bundleIdentifier Bundle identifier of the containing application. + */ ++ (void)enableDataSharingWithApplicationGroupIdentifier:(NSString *)groupIdentifier + containingApplication:(NSString *)bundleIdentifier PF_WATCH_UNAVAILABLE; + +/*! + @abstract Application Group Identifier for Data Sharing + + @returns `NSString` value if data sharing is enabled, otherwise `nil`. + */ ++ (NSString *)applicationGroupIdentifierForDataSharing PF_WATCH_UNAVAILABLE; + +/*! + @abstract Containing application bundle identifier. + + @returns `NSString` value if data sharing is enabled, otherwise `nil`. + */ ++ (NSString *)containingApplicationBundleIdentifierForDataSharing PF_WATCH_UNAVAILABLE; + +#if PARSE_IOS_ONLY + +///-------------------------------------- +/// @name Configuring UI Settings +///-------------------------------------- + +/*! + @abstract Set whether to show offline messages when using a Parse view or view controller related classes. + + @param enabled Whether a `UIAlertView` should be shown when the device is offline + and network access is required from a view or view controller. + + @deprecated This method has no effect. + */ ++ (void)offlineMessagesEnabled:(BOOL)enabled PARSE_DEPRECATED("This method is deprecated and has no effect."); + +/*! + @abstract Set whether to show an error message when using a Parse view or view controller related classes + and a Parse error was generated via a query. + + @param enabled Whether a `UIAlertView` should be shown when an error occurs. + + @deprecated This method has no effect. + */ ++ (void)errorMessagesEnabled:(BOOL)enabled PARSE_DEPRECATED("This method is deprecated and has no effect."); + +#endif + +///-------------------------------------- +/// @name Logging +///-------------------------------------- + +/*! + @abstract Sets the level of logging to display. + + @discussion By default: + - If running inside an app that was downloaded from iOS App Store - it is set to + - All other cases - it is set to + + @param logLevel Log level to set. + @see PFLogLevel + */ ++ (void)setLogLevel:(PFLogLevel)logLevel; + +/*! + @abstract Log level that will be displayed. + + @discussion By default: + - If running inside an app that was downloaded from iOS App Store - it is set to + - All other cases - it is set to + + @returns A value. + @see PFLogLevel + */ ++ (PFLogLevel)logLevel; + +@end + +PF_ASSUME_NONNULL_END diff --git a/Unit-2-Journal/Pods/Parse/Parse/Parse.m b/Unit-2-Journal/Pods/Parse/Parse/Parse.m new file mode 100644 index 0000000..4bafd45 --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/Parse/Parse.m @@ -0,0 +1,235 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "BFTask+Private.h" +#import "Parse.h" +#import "ParseInternal.h" +#import "ParseManager.h" +#import "PFEventuallyPin.h" +#import "PFObject+Subclass.h" +#import "PFOfflineStore.h" +#import "PFPin.h" +#import "PFPinningEventuallyQueue.h" +#import "PFUserPrivate.h" +#import "PFLogger.h" +#import "PFSession.h" +#import "PFFileManager.h" +#import "PFApplication.h" +#import "PFKeychainStore.h" +#import "PFLogging.h" +#import "PFObjectSubclassingController.h" + +#if !TARGET_OS_WATCH +#import "PFInstallationPrivate.h" +#if TARGET_OS_IOS +#import "PFProduct+Private.h" +#endif +#endif + +#import "PFCategoryLoader.h" + +@implementation Parse + +static ParseManager *currentParseManager_; + +static BOOL shouldEnableLocalDatastore_; + +static NSString *applicationGroupIdentifier_; +static NSString *containingApplicationBundleIdentifier_; + ++ (void)initialize { + if (self == [Parse class]) { + // Load all private categories, that we have... + // Without this call - private categories - will require `-ObjC` in linker flags. + // By explicitly calling empty method - we can avoid that. + [PFCategoryLoader loadPrivateCategories]; + } +} + +///-------------------------------------- +#pragma mark - Connect +///-------------------------------------- + ++ (void)setApplicationId:(NSString *)applicationId clientKey:(NSString *)clientKey { + PFConsistencyAssert([applicationId length], @"'applicationId' should not be nil."); + PFConsistencyAssert([clientKey length], @"'clientKey' should not be nil."); + + // Setup new manager first, so it's 100% ready whenever someone sends a request for anything. + ParseManager *manager = [[ParseManager alloc] initWithApplicationId:applicationId clientKey:clientKey]; + [manager configureWithApplicationGroupIdentifier:applicationGroupIdentifier_ + containingApplicationIdentifier:containingApplicationBundleIdentifier_ + enabledLocalDataStore:shouldEnableLocalDatastore_]; + currentParseManager_ = manager; + + shouldEnableLocalDatastore_ = NO; + + PFObjectSubclassingController *subclassingController = [PFObjectSubclassingController defaultController]; + // Register built-in subclasses of PFObject so they get used. + // We're forced to register subclasses directly this way, in order to prevent a deadlock. + // If we ever switch to bundle scanning, this code can go away. + [subclassingController registerSubclass:[PFUser class]]; + [subclassingController registerSubclass:[PFSession class]]; + [subclassingController registerSubclass:[PFRole class]]; + [subclassingController registerSubclass:[PFPin class]]; + [subclassingController registerSubclass:[PFEventuallyPin class]]; +#if !TARGET_OS_WATCH + [subclassingController registerSubclass:[PFInstallation class]]; +#if TARGET_OS_IOS + [subclassingController registerSubclass:[PFProduct class]]; +#endif +#endif + +#if TARGET_OS_IOS + [PFNetworkActivityIndicatorManager sharedManager].enabled = YES; +#endif + + [currentParseManager_ preloadDiskObjectsToMemoryAsync]; + + [[self parseModulesCollection] parseDidInitializeWithApplicationId:applicationId clientKey:clientKey]; +} + ++ (NSString *)getApplicationId { + PFConsistencyAssert(currentParseManager_, + @"You have to call setApplicationId:clientKey: on Parse to configure Parse."); + return currentParseManager_.applicationId; +} + ++ (NSString *)getClientKey { + PFConsistencyAssert(currentParseManager_, + @"You have to call setApplicationId:clientKey: on Parse to configure Parse."); + return currentParseManager_.clientKey; +} + +///-------------------------------------- +#pragma mark - Extensions Data Sharing +///-------------------------------------- + ++ (void)enableDataSharingWithApplicationGroupIdentifier:(NSString *)groupIdentifier { + PFConsistencyAssert(!currentParseManager_, + @"'enableDataSharingWithApplicationGroupIdentifier:' must be called before 'setApplicationId:clientKey'"); + PFParameterAssert([groupIdentifier length], @"'groupIdentifier' should not be nil."); + PFConsistencyAssert(![PFApplication currentApplication].extensionEnvironment, @"This method cannot be used in application extensions."); + PFConsistencyAssert([PFFileManager isApplicationGroupContainerReachableForGroupIdentifier:groupIdentifier], + @"ApplicationGroupContainer is unreachable. Please double check your Xcode project settings."); + applicationGroupIdentifier_ = [groupIdentifier copy]; +} + ++ (void)enableDataSharingWithApplicationGroupIdentifier:(NSString *)groupIdentifier + containingApplication:(NSString *)bundleIdentifier { + PFConsistencyAssert(!currentParseManager_, + @"'enableDataSharingWithApplicationGroupIdentifier:containingApplication:' must be called before 'setApplicationId:clientKey'"); + PFParameterAssert([groupIdentifier length], @"'groupIdentifier' should not be nil."); + PFParameterAssert([bundleIdentifier length], @"Containing application bundle identifier should not be nil."); + PFConsistencyAssert([PFApplication currentApplication].extensionEnvironment, @"This method can only be used in application extensions."); + PFConsistencyAssert([PFFileManager isApplicationGroupContainerReachableForGroupIdentifier:groupIdentifier], + @"ApplicationGroupContainer is unreachable. Please double check your Xcode project settings."); + + applicationGroupIdentifier_ = groupIdentifier; + containingApplicationBundleIdentifier_ = bundleIdentifier; +} + ++ (NSString *)applicationGroupIdentifierForDataSharing { + return applicationGroupIdentifier_; +} + ++ (NSString *)containingApplicationBundleIdentifierForDataSharing { + return containingApplicationBundleIdentifier_; +} + ++ (void)_resetDataSharingIdentifiers { + applicationGroupIdentifier_ = nil; + containingApplicationBundleIdentifier_ = nil; +} + +///-------------------------------------- +#pragma mark - Local Datastore +///-------------------------------------- + ++ (void)enableLocalDatastore { + PFConsistencyAssert(!currentParseManager_, + @"'enableLocalDataStore' must be called before 'setApplicationId:clientKey:'"); + + // Lazily enableLocalDatastore after init. We can't use ParseModule because + // ParseModule isn't processed in main thread and may cause race condition. + shouldEnableLocalDatastore_ = YES; +} + ++ (BOOL)isLocalDatastoreEnabled { + if (!currentParseManager_) { + return shouldEnableLocalDatastore_; + } + return currentParseManager_.offlineStoreLoaded; +} + +///-------------------------------------- +#pragma mark - User Interface +///-------------------------------------- + +#if PARSE_IOS_ONLY + ++ (void)offlineMessagesEnabled:(BOOL)enabled { + // Deprecated method - shouldn't do anything. +} + ++ (void)errorMessagesEnabled:(BOOL)enabled { + // Deprecated method - shouldn't do anything. +} + +#endif + +///-------------------------------------- +#pragma mark - Logging +///-------------------------------------- + ++ (void)setLogLevel:(PFLogLevel)logLevel { + [PFLogger sharedLogger].logLevel = logLevel; +} + ++ (PFLogLevel)logLevel { + return [PFLogger sharedLogger].logLevel; +} + +///-------------------------------------- +#pragma mark - Private +///-------------------------------------- + ++ (ParseManager *)_currentManager { + return currentParseManager_; +} + ++ (void)_clearCurrentManager { + currentParseManager_ = nil; +} + +///-------------------------------------- +#pragma mark - Modules +///-------------------------------------- + ++ (void)enableParseModule:(id)module { + [[self parseModulesCollection] addParseModule:module]; +} + ++ (void)disableParseModule:(id)module { + [[self parseModulesCollection] removeParseModule:module]; +} + ++ (BOOL)isModuleEnabled:(id)module { + return [[self parseModulesCollection] containsModule:module]; +} + ++ (ParseModuleCollection *)parseModulesCollection { + static ParseModuleCollection *collection; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + collection = [[ParseModuleCollection alloc] init]; + }); + return collection; +} + +@end diff --git a/Unit-2-Journal/Pods/Parse/Parse/Resources/en.lproj/Parse.strings b/Unit-2-Journal/Pods/Parse/Parse/Resources/en.lproj/Parse.strings new file mode 100644 index 0000000000000000000000000000000000000000..c1c3414638244fb653c7afba152e4094c69d44b4 GIT binary patch literal 122 zcmXwwI|_g>5JX>{Q!JJ#^Z;UKXW<#5Lr#-Qu0S(TY~65g*;&Qswi=;_2pBmAyb<9GnI@e~XI literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Pods/Parse/README.md b/Unit-2-Journal/Pods/Parse/README.md new file mode 100644 index 0000000..c8e506b --- /dev/null +++ b/Unit-2-Journal/Pods/Parse/README.md @@ -0,0 +1,106 @@ +# Parse SDK for iOS/OS X + +[![Build Status][build-status-svg]][build-status-link] +[![Coverage Status][coverage-status-svg]][coverage-status-link] +[![Podspec][podspec-svg]][podspec-link] +[![License][license-svg]][license-link] +![Platforms][platforms-svg] +[![Dependencies][dependencies-svg]][dependencies-link] +[![References][references-svg]][references-link] + +A library that gives you access to the powerful Parse cloud platform from your iOS or OS X app. +For more information Parse and its features, see [the website][parse.com] and [getting started][docs]. + +## Other Parse Projects + + - [ParseUI for iOS][parseui-ios-link] + - [Parse SDK for Android][android-sdk-link] + +## Getting Started + +To use parse, head on over to the [releases][releases] page, and download the latest build. +And you're off! Take a look at the public [documentation][docs] and start building. + +**Other Installation Options** + + 1. **CocoaPods** + + Add the following line to your podfile: + + pod 'Parse' + + Run pod install, and you should now have the latest parse release. + + 2. **Compiling for yourself** + + If you want to manually compile the SDK, clone it locally, and run the following commands in the root directory of the repository: + + # To pull in extra dependencies (Bolts and OCMock) + git submodule update --init --recursive + + # To install all the gems + bundle install + + # Build & Package the Frameworks + rake package:frameworks + + Compiled frameworks will be in 2 archives: `Parse-iOS.zip` and `Parse-OSX.zip` inside the `build/release` folder, and you can link them as you'd please. + + 3. **Using Parse as a sub-project** + + You can also include parse as a subproject inside of your application if you'd prefer, although we do not recommend this, as it will increase your indexing time significantly. To do so, just drag and drop the Parse.xcodeproj file into your workspace. Note that unit tests will be unavailable if you use Parse like this, as OCMock will be unable to be found. + +## How Do I Contribute? + +We want to make contributing to this project as easy and transparent as possible. Please refer to the [Contribution Guidelines][contributing]. + +## Dependencies + +We use the following libraries as dependencies inside of Parse: + + - [Bolts][bolts-framework], for task management. + - [OCMock][ocmock-framework], for unit testing. + +## License + +``` +Copyright (c) 2015-present, Parse, LLC. +All rights reserved. + +This source code is licensed under the BSD-style license found in the +LICENSE file in the root directory of this source tree. An additional grant +of patent rights can be found in the PATENTS file in the same directory. +``` + + [parse.com]: https://www.parse.com/products/ios + [docs]: https://www.parse.com/docs/ios/guide + [blog]: https://blog.parse.com/ + + [parseui-ios-link]: https://github.com/ParsePlatform/ParseUI-iOS + [android-sdk-link]: https://github.com/ParsePlatform/Parse-SDK-Android + + [releases]: https://github.com/ParsePlatform/Parse-SDK-iOS-OSX/releases + [contributing]: https://github.com/ParsePlatform/Parse-SDK-iOS-OSX/blob/master/CONTRIBUTING.md + + [bolts-framework]: https://github.com/BoltsFramework/Bolts-iOS + [ocmock-framework]: http://ocmock.org + + [build-status-svg]: https://travis-ci.org/ParsePlatform/Parse-SDK-iOS-OSX.svg + [build-status-link]: https://travis-ci.org/ParsePlatform/Parse-SDK-iOS-OSX/branches + + [coverage-status-svg]: https://codecov.io/github/ParsePlatform/Parse-SDK-iOS-OSX/coverage.svg?branch=master + [coverage-status-link]: https://codecov.io/github/ParsePlatform/Parse-SDK-iOS-OSX?branch=master + + [license-svg]: https://img.shields.io/badge/license-BSD-lightgrey.svg + [license-link]: https://github.com/ParsePlatform/Parse-SDK-iOS-OSX/blob/master/LICENSE + + [podspec-svg]: https://img.shields.io/cocoapods/v/Parse.svg + [podspec-link]: https://cocoapods.org/pods/Parse + + [platforms-svg]: https://img.shields.io/badge/platform-ios%20%7C%20osx-lightgrey.svg + + [dependencies-svg]: https://img.shields.io/badge/dependencies-2-yellowgreen.svg + [dependencies-link]: https://github.com/ParsePlatform/Parse-SDK-iOS-OSX/blob/master/Vendor + + [references-svg]: https://www.versioneye.com/objective-c/parse/reference_badge.svg + [references-link]: https://www.versioneye.com/objective-c/parse/references diff --git a/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj b/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj index f0f7053..8fa11f6 100644 --- a/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj @@ -7,1877 +7,1881 @@ objects = { /* Begin PBXBuildFile section */ - 01B6E1BCF76B786BA17501AA97D0A2FD /* PFLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 6370C00129F042A303CF8C41BCC8048F /* PFLogger.h */; }; - 0248D52572AD490C9F0E6E0E16C899F4 /* PFSQLiteStatement.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E2E9BC6F467A47EC23C62B07767BBD1 /* PFSQLiteStatement.m */; }; + 00535AC2B7EA20D7A306E029CAEC2EF4 /* PFAnalyticsController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB282470029D499E3074A164AABBC66C /* PFAnalyticsController.m */; }; + 006CF96B0EC8D4F5E5898DEE9891E373 /* PFOfflineObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 579EAC1B8D13822158FB03F012D3B85C /* PFOfflineObjectController.h */; }; + 008386D64340118381B5E74976611CFE /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = 49AA101256B7C595F77F9BA67DED0212 /* FBSDKWebDialogView.m */; }; + 00A6585F8ADCE867CC96F03DE0F8722A /* FBSDKAppInviteDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 0315685B7458D2A9C07F1B237F76CFF2 /* FBSDKAppInviteDialog.h */; }; + 00B7078D95685A047C5D6FFEF18D8C62 /* FBSDKLikeControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D3C379231F1FECE1C711149F33EBEFB /* FBSDKLikeControl.m */; }; + 00D7B126423D78CF3936664CEA3AE990 /* FBSDKLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = 06F0EB1FDCF792E30B358C159A66CE09 /* FBSDKLoginError.h */; }; + 018166E30D25E0D13BEA3E349F34A054 /* FBSDKAccessTokenCacheV3_17.h in Headers */ = {isa = PBXBuildFile; fileRef = A52CB1C60BA79230A59E65B9417DBEB7 /* FBSDKAccessTokenCacheV3_17.h */; }; + 01CE9AF82E8EDF5553D6BD60C15788C9 /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E3839692964A8570C65FDBF51FA010CE /* FBSDKGraphRequest+Internal.h */; }; 0249DD298C4521858041ED1ABD27B4EB /* RKPathMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CFD6F4F94AD214D7B9CEF3544854F4D /* RKPathMatcher.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; 02510F8446BAA50DDF30A10F1ECA9A6D /* RKTestNotificationObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = D497D888360D61A9F64F2DBB2A1FC8F0 /* RKTestNotificationObserver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 031FFF4BFC8E7F50200A78A83ACE12F2 /* PFObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A15492EE8BDE4E1840F2F29AA9B3A5 /* PFObjectControlling.h */; }; - 035585A2DE484628EA30E8E63294D4C4 /* PFCategoryLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = EDDDD080107F9241868C257E03522C93 /* PFCategoryLoader.h */; }; - 0383C08E8381E50C4D99F27563219095 /* PFURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = B64334E646B39ABAFB0CC58791A45045 /* PFURLSession.h */; }; - 03C3301144E96541DD8695E57AD95EDC /* AFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = F13165336A9173E2A3C4790AB7CC7975 /* AFURLConnectionOperation.h */; }; - 040E8CD5FB35E08270AA9BC8C424E068 /* PFUserAuthenticationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 046383C54AB907710018AAD4CBD3C3E8 /* PFUserAuthenticationDelegate.h */; }; - 0438ACC4040FF8EB5AA1A51F1D3E9A4A /* PFAnalyticsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 335CD23D95285D1C44A95A3A178AAEF8 /* PFAnalyticsController.m */; }; - 0451EE3ECD50A13211C7FF98A7E505AE /* AFJSONRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 97715D178022674A0792C3C3180E1132 /* AFJSONRequestOperation.h */; }; - 04DE3864BDD52DB342049EFB3EECB75E /* PFInstallationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 18FD24EF1379B71A3998D456EAF6CE07 /* PFInstallationConstants.m */; }; - 054CF88416097C84057A6427691FE0DA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 062E34675281829E6C309C6099D0CD9D /* PFPushChannelsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C1DC34229B831B07F4F2C955050094A /* PFPushChannelsController.m */; }; - 0637FA7A30F03B2B44FE3843BDEB55D4 /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = C8EEE74C77FC0E8CCF6F9BF61F91F077 /* FBSDKBridgeAPIProtocolWebV1.h */; }; - 06837C373EBCF2BE9F24B84D2495661D /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 82DEAB301EC606D81DDB79F260128939 /* FBSDKServerConfiguration.m */; }; + 02B35C6C34045B1BF7204DFB7206A709 /* AFImageRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = BF7E4DF7E707F588FF550CDC66A6F7B7 /* AFImageRequestOperation.h */; }; + 02D6509EB39ED2BFBF6292D674D0C993 /* PFSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A7EE3C6BF7D5145AA91E9DE69EC0268 /* PFSession.m */; }; + 03510AEE10F8AFC7A9426E3FFBD758EE /* FBSDKSendButton.h in Headers */ = {isa = PBXBuildFile; fileRef = DFCBF9D0B251D3EABC70AD75A30E8294 /* FBSDKSendButton.h */; }; + 0417C2D8751D5D954ABBF8750A4DBA41 /* PFRole.m in Sources */ = {isa = PBXBuildFile; fileRef = C44F364C931B164F6223FDD37734D4B3 /* PFRole.m */; }; + 0563F4EED0D395AB1CE1203D89F71AA8 /* FBSDKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = A808BCEC34959F6ECE35E478017AAE04 /* FBSDKMacros.h */; }; + 05D4DCDBCD5FC6951A00E3EC1B772791 /* PFPinningEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 16ECC679D7E6944181A4143EBFFDF2B6 /* PFPinningEventuallyQueue.h */; }; + 05EEE4C30056440EC8E7A2CF218EB8B0 /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 88ED45C6893FA0E82BD12E765DBC00CA /* FBSDKProfile.h */; }; + 064DCF0B2619737983918A9B8B8CDBED /* PFCloud.h in Headers */ = {isa = PBXBuildFile; fileRef = 016D06C44A3331089F9E5A1C6DFB4678 /* PFCloud.h */; }; + 06B5B0BE46804817F2BA234F2F21AB40 /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F8E73E13D56D4420C7C239F8B5BF990 /* FBSDKAppEventsState.h */; }; + 0720845388625ACACFE5E090292E8C43 /* BFWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = F2C4601420612A6E42D46B435019EBC8 /* BFWebViewAppLinkResolver.h */; }; 0722E90FFB0E0659D82D8E560CA2D2F1 /* TKStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = 4391678EE65327EC09710A2246AE3738 /* TKStateMachine.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 07287065D4777E1A383C96927EEFD816 /* FBSDKLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = C565C7D7E5AC00E6AB9CDCF110BC3C25 /* FBSDKLoginError.m */; }; - 0827E8FF507012241427EA254F0B9C86 /* PFObjectFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = 76A196B0C50AE07AE79DC05159C2DF21 /* PFObjectFileCodingLogic.h */; }; - 0899727B95CE0A9B8FB7646F3F1E84D8 /* PFMutableFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F55A6C36C32F11B3417387E0AE06AB1 /* PFMutableFileState.m */; }; - 09219068B5A97176CB293592657A1C1F /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E541C23946CA00EF697F8FA44AB271F6 /* Security.framework */; }; - 092EAB1784E30E1179D39200F489EE56 /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = E5B4019C9415D7F5E3578EB347E6428C /* FBSDKKeychainStore.m */; }; - 096ECB92C0E8A0012A979F498F805D7A /* FBSDKShareButton.m in Sources */ = {isa = PBXBuildFile; fileRef = FC75AD2CED5E67E206316FE8FCE7F2E8 /* FBSDKShareButton.m */; }; - 0A24AF592599665BBA61B0592CE2D779 /* PFConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = 237D0660F2210DBDAA12CCD66B659E6C /* PFConfigController.h */; }; - 0A3B5EA35B0E5C9620B5247CBE3F2FD9 /* FBSDKShareVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = D65F4C0A6ED3ABC94426B9A2AFEA2790 /* FBSDKShareVideo.h */; }; - 0A404B050E501F4897A0F0E48E261D02 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = 61F8017FEF232B21270544D23BE67BBF /* FBSDKURLOpening.h */; }; - 0A4CDCF83EC9FBDE9EC13F7874D5FFAE /* FBSDKShareKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C8A64817A3F904FC394ADA0E162D3FCF /* FBSDKShareKit-dummy.m */; }; - 0B81E419526111EA3E0BBBBAA5737C8C /* PFRESTUserCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = CF467117B925DD3A53A0AD66F813DD90 /* PFRESTUserCommand.h */; }; - 0BF5D62B21185C974403236E5B12BB47 /* FBSDKAppGroupJoinDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = D99237E043D8D55F742E4FFCE42D91BF /* FBSDKAppGroupJoinDialog.m */; }; - 0C36B88BBA60864543814D356AD0A3F1 /* FBSDKLoginButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 132DA86A6F8F171F7FC7130F078FFCE1 /* FBSDKLoginButton.h */; }; - 0C97A38957A54E356CBD2066CE04133E /* PFObject+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B538D8071AB6432B658069378DCA381 /* PFObject+Subclass.h */; }; - 0CE4944C400ACFDAF62ACE7BE9D296B7 /* FBSDKShareDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 95C3B6319C8BEC9A72589989076B040E /* FBSDKShareDialog.m */; }; - 0CF6CBBCBFD055C8F98940C7D12E3BAE /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 2EBD9E78DE2BF6EF77A771D225D5E591 /* FBSDKAppEvents.m */; }; - 0D38DDBFF8647BFBAC5D5819120866AF /* PFObjectSubclassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 78ED1DE48AC6FAA521E9D1B0A15B2F0E /* PFObjectSubclassInfo.h */; }; - 0DA0DFD7ADBEE6B5BD582CA7D93DA573 /* PFOfflineQueryLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = E170DFE0763897F12B0B3762F62DFCAD /* PFOfflineQueryLogic.m */; }; - 0DEB3FF3257E2710E17602028B4ADCBF /* FBSDKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BBDCAE31F786B578147D2A338A29E5B /* FBSDKMacros.h */; }; - 0E0632D6D28316A2A4CC00E6CCAFB98C /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E874B0F3891D0BC5E6EE724082760D1 /* Bolts.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 07B0FBE4D0E350E22E5F76033341F2AE /* ParseModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FFE01FDB1315C89C0A38D8E4378E0DF /* ParseModule.m */; }; + 08EA08F97E9E3BDA10151C17762295C3 /* PFKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 437CBC5E7E1B50CC1E72F15C88FF6AC7 /* PFKeychainStore.h */; }; + 09219068B5A97176CB293592657A1C1F /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C37F0ED993AA0D0D75072F2D2A6865AC /* Security.framework */; }; + 093B3BC924DCC60628EB3C4B02D53072 /* FBSDKTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = F32F686BFA58B3430620EE17161144FE /* FBSDKTooltipView.h */; }; + 095B67BB026AEC6B803356F0357D61B0 /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DF7C4CE6EE936098ABB3AC172D7B2FF1 /* AFImageRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 0978AC4917B7960598D540B0BCB407A4 /* PFPinningObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = E305C7FF3E6F92A0B09870D8A60E8D38 /* PFPinningObjectStore.h */; }; + 099082A1C7FAABBFBA2B4C428FF899F5 /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EB9B4230ED62ACBBFE1640BB61C32F /* BFCancellationToken.h */; }; + 0A6BF9949B8BEF6ED33EBBB89D3733DC /* FBSDKShareLinkContent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 99FF411F081193D28CAB98DD501F9F72 /* FBSDKShareLinkContent+Internal.h */; }; + 0B42591A57B35D10FAE5F939603C105F /* FBSDKAppGroupAddDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = DDE80DA7A434D17F0D915E284F20436A /* FBSDKAppGroupAddDialog.m */; }; + 0B6D9B4A94DAA97E2060C438E2866348 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E156596C9F5FF570264078E49A4643D4 /* AFNetworkActivityIndicatorManager.h */; }; + 0B981311B68BFD9DD86BC7C5598B56DF /* BFCancellationTokenRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 23ED3F16546340CE6D8F500DF0D81FA7 /* BFCancellationTokenRegistration.h */; }; + 0BDD8DFEDF81D4BEF214770B62B2DA74 /* FBSDKShareVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = 19DB73C3D0C75D9D0E53F4111D417C01 /* FBSDKShareVideo.h */; }; + 0C2BF68FAB2FC4C272026B79778040EC /* PFObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 23887764BFA845B70B1FFB0552AC2706 /* PFObjectController.h */; }; + 0CA715FE5F1135697D48CEADCCDF695E /* PFUserConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D47AE11AD48DDD6598E018331299E3 /* PFUserConstants.h */; }; + 0D3178232D43DE91EDF29D61D52D0DEF /* PFHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 010267A36F8E4347A122ABBE2CC67F43 /* PFHash.h */; }; + 0D4B5945A05AB5823580A86F062419DF /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D50D28CFFDB33D36C5123FE9819503C /* FBSDKBridgeAPIRequest.h */; }; + 0D7756638487F105933CDA9F734F7846 /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C58296A347F3D84D11A281BDEFE97B5 /* FBSDKBridgeAPIProtocol.h */; }; + 0DD8321B7E4063220C99652AD25B964C /* PFDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = A0D0E260844C900A61F03ACD640BF515 /* PFDecoder.h */; }; + 0DE5C9C558993B91C4234B0C04AF1E05 /* PFUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = C092CD3F2AEE6BAC465A007801D8D91A /* PFUserState.h */; }; + 0DEE41F44DA5A7BFBE8FE62391313D9D /* PFConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3951D3E423BE2ABCBF9DE0E746CE311B /* PFConfigController.h */; }; 0E2C819942449D83510F76BE41B000AB /* Network.h in Headers */ = {isa = PBXBuildFile; fileRef = F6235B81BCC7427EC393417D0676C7DD /* Network.h */; }; - 0F3D53E5F079F4B1A2EBB4210908CFB7 /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 65A4F7F6E3DD2EA0621A632278E51E25 /* FBSDKAccessTokenCaching.h */; }; + 0E6394122D9ED32FE89BDEFDF03C5562 /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = A029888328B7A6D3EFA37ED1B3C36DAE /* FBSDKAppEventsUtility.h */; }; + 0F3466A31A5A04E235B74EAF5ACFC3F8 /* PFMulticastDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E8F3EA417ABBE16B32E6AD85C0A91E /* PFMulticastDelegate.m */; }; + 0FAB264DFDA1EACC55A0E8E5646B7528 /* PFUserFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E0204ED6BDC62B268724EB7F3257243 /* PFUserFileCodingLogic.h */; }; + 0FABEDED805FF3C8419382ECF57A04E8 /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D0E4808B55472B808C0B84583C9BDD1 /* FBSDKGraphRequestDataAttachment.m */; }; 0FD22CC68EB137F144F30A3A882E6B78 /* RKMappingOperationDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EE325AB5D11F8E0314EC1A65AFC915A /* RKMappingOperationDataSource.h */; }; - 0FEB198320552E0ED018F62418915FF2 /* PFRESTObjectCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = F94D8E2DD631C64B847B40AEA78E1AA0 /* PFRESTObjectCommand.h */; }; - 103EEFB51B885B053EE5C3BA2B9F5B71 /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = CCB66A62E1727B274EBDAE6A324F1EF1 /* FBSDKInternalUtility.h */; }; - 104F33CA0D4A2D153078B7E86F19F26A /* PFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFE14B9E600B66B7CAFD3D9A64F4B3D /* PFNetworkActivityIndicatorManager.m */; }; - 1082989B937B299059AA17B02EFB11C3 /* PFRESTConfigCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 7176C54BE83AD8B924C0239573D8C14D /* PFRESTConfigCommand.h */; }; - 10B9DF916653B140AD9B5F3F0A0573CF /* PFCurrentConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = CB54CB2CBAE86A6D529C60250C8243A7 /* PFCurrentConfigController.m */; }; - 10BE8D457AFBCCD2D0AF53C57A7CF8AD /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = D4BBD3B141794583886966E10E9DE885 /* BFAppLink.h */; }; - 115B682879CBE79C7CD8FF29E967EB08 /* PFPaymentTransactionObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = B83DA40998833B6F48A316FA1BA26DF0 /* PFPaymentTransactionObserver.h */; }; - 1167C7893F088AF78C53D93AEEDEA696 /* PFConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DBF2FEDE564A16DD0584A1A4B48DB5E /* PFConfig.m */; }; - 119DCD23DA3C1E22777BF1F97BE3E170 /* FBSDKLikeControl.h in Headers */ = {isa = PBXBuildFile; fileRef = A17C481C0F1C64EB4AB1CFBAF183C08E /* FBSDKLikeControl.h */; }; - 11A6050774C74E9CE6C2F5F4583307A3 /* PFEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = CF5556B51CED2BB029915A1874EE32A9 /* PFEventuallyQueue.m */; }; - 11E6895F2673F1D69CC3F6623019E969 /* PFProduct+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A8FE4F334B2A94F5AC2AA3FBAF7627F8 /* PFProduct+Private.h */; }; - 11EA198AD6FEA828E599CF4EFBE3C08F /* RKISO8601DateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 28FC8B75B37315B6FEDFAC246BEDB597 /* RKISO8601DateFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 0FD5249BE2888A4A4402696105ED8527 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DDCD516E785CE5AEDF724D7D5383676 /* FBSDKBridgeAPIProtocolWebV1.m */; }; + 0FE13D468968D686BA4AEDE0ED6B2130 /* FBSDKShareVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 73305F9BCF2563CCA2E4C15B8DDCFD68 /* FBSDKShareVideo.m */; }; + 10AABB95160AC54105C043949E1933DC /* PFPinningObjectStore.m in Sources */ = {isa = PBXBuildFile; fileRef = C3ADC7027A54E385AA38C96D3138EFFF /* PFPinningObjectStore.m */; }; + 10C2B5930F1B78F40CD24647D0816C15 /* FBSDKLoginButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A42C8D72C0DD9F94735982945AB06235 /* FBSDKLoginButton.m */; }; + 10E0911E33686C368550FF5884C27A5B /* FBSDKBridgeAPICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = D3FDBE0B0295691A9DA68BB91774B2DF /* FBSDKBridgeAPICrypto.h */; }; + 10EE3AADC2DDD3110F87A3F3A0AF7095 /* PFProductsRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 853ED2ED8383CAC8B42216E034C32866 /* PFProductsRequestHandler.m */; }; 1234595A0A3952AF80B9D7B2A706D42C /* lcl_RK.m in Sources */ = {isa = PBXBuildFile; fileRef = E11FE2BB216DD98CBF3928F8E5E9A85B /* lcl_RK.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 12A3F71BC200B34A3DDCD2F4EE241EEF /* PFPush.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F6AC6F0CC343C3396887A99F63C9782 /* PFPush.m */; }; - 1311EB6B3ABE7AEBCAE47A46ED073054 /* PFRole.m in Sources */ = {isa = PBXBuildFile; fileRef = 155D2AB8BF53B4A09062475713E1C814 /* PFRole.m */; }; - 134A0D3E2B08F588C5212E330CC519ED /* FBSDKSharePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EEA34DB3E95971CAA4099B9C4DD8C74 /* FBSDKSharePhoto.m */; }; - 13AF98BD29E32EEAB0C7E25345182F63 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = F21D0FB2302BFB55563A040B9162207A /* FBSDKBridgeAPIProtocolNativeV1.h */; }; - 141089B7D752020855F211BD890A4D3C /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1124CA6C3A9CDC4513ADC2393C447BE8 /* _FBSDKTemporaryErrorRecoveryAttempter.h */; }; - 1419B8B6680E4CE92EECD5657926320D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 147EE652AA4CED9F96AC291100513BBA /* PFUserAuthenticationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 5325291642047AF9E650B7590ACC6254 /* PFUserAuthenticationController.h */; }; + 12AB053235C6B70B0EB43476DDA2452E /* PFPinningEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AE5F75C04FAC19C4B94C834EC0C4E96 /* PFPinningEventuallyQueue.m */; }; + 12C286C63ABAD25C2339EA0D0A5C5D02 /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 06ED326096FE698B59E6B3A44613D460 /* FBSDKServerConfiguration.h */; }; + 130EDBB373B792D2E24C971FD38312DD /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B407FBFC5F897F4E485E1E0002B506FD /* AFXMLRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 135F87CE326B1BF6A73827E9F6ED971B /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 53DAE1074125BBBF142D3C53E50E06F1 /* FBSDKAppEvents+Internal.h */; }; + 1428029B7410F86E2E8670D8F2757842 /* FBSDKLoginConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = B43EF13062A276FCA06A9386DCA1F36F /* FBSDKLoginConstants.h */; }; + 150E35C95B7ED2A55FADB9990FDB22E9 /* PFFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = 80535C82708945F05047D894446087A4 /* PFFileState.m */; }; + 1559BC15F9F341A9E05942AD706D0833 /* PFMutableACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = F719BD99BA3538CAF974528DD1BA9EAF /* PFMutableACLState.m */; }; + 15978EA5F7C6F2A163C5083229330300 /* FBSDKShareVideoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9605F7221341E3EA07630ABF2DE6BC6F /* FBSDKShareVideoContent.h */; }; + 15A6C192D5AF8B7E13C7446853ECFBAD /* PFBase64Encoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 23D64D6AB75296AE7976248043BC6313 /* PFBase64Encoder.m */; }; + 15EE0A24606B3F4E67CB9D72923B661C /* PFFileController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B92CFB0FD23A754847A9505BDCE2BA5 /* PFFileController.h */; }; 162784BAD212B53DA133219EA676ECD6 /* RKHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F33AA92E57D33A8DE7D71147E3BBDD3 /* RKHTTPRequestOperation.h */; }; - 1669A58CB3E81C88673C6DDFE52665D6 /* PFCurrentConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A0306DBED132EEB7F48CCF5885EADEB /* PFCurrentConfigController.h */; }; + 165AFC43C7723E5B35C8E9DB4A1E119B /* PFFileStagingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DD35C52996E74EF6D68ED8C8CB3C5B1 /* PFFileStagingController.h */; }; 16A3DD222EB47C7F95A50C5CA137F259 /* RKTestFixture.h in Headers */ = {isa = PBXBuildFile; fileRef = E51BB433D7AADF8C023202546330704A /* RKTestFixture.h */; }; - 16AD66178FB1BFEF1C8E27AC7FEF05FD /* FBSDKTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = E54E8701407F893752653C4221AF069C /* FBSDKTooltipView.h */; }; - 16B1EE9A2C419506D63026622C13EFF1 /* PFSQLiteDatabaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD931B78D3EAD28BF5F58F187AEABB9 /* PFSQLiteDatabaseController.m */; }; - 17A60DE752CD6B98B110ED27EC596403 /* PFOfflineQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 41D4AFB79D025DDA3EF311ED8B830DC9 /* PFOfflineQueryController.h */; }; - 17D1E18D8FE2FA636689AE5F11FF745B /* PFUser.h in Headers */ = {isa = PBXBuildFile; fileRef = D744AFD793804AF3C84822508F5A5B1F /* PFUser.h */; }; + 16C27A1CBCD5A7969B2A158858A2CC9B /* FBSDKAppGroupJoinDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 35438CE7344049DBB7B9FFEB80DB1414 /* FBSDKAppGroupJoinDialog.m */; }; + 16CB7796FFD9018113359615F7C4713F /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BE5A10627DC0B9C01F875BD06336D9E /* BFAppLink_Internal.h */; }; + 17BCC234EFBB7A73B92E922E5104E5AE /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AF2FF1B953178FD56002A938919F24E /* BFAppLinkReturnToRefererView.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 18274740107DE9B259B065F47C67FEA7 /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 31B4E41F62E37AA98F6E9D5C10E984D0 /* FBSDKAppEventsDeviceInfo.m */; }; + 182D77EB8C269AD7EDAC680AD93DB72A /* PFCloudCodeController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6C82743CE345D0715A174740BEB724A /* PFCloudCodeController.m */; }; 18CF12E7C98D66CE94DBE82619460126 /* RKOperationStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = 103E4A41DD6EB7EE5C4377711291077A /* RKOperationStateMachine.h */; }; - 18D19D961B9AB9C6B471F9768C507607 /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 98E26BE57B0986BD287273920656152C /* FBSDKCloseIcon.h */; }; - 18D96E233E2B72D021830D100071A88F /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = EE91C76BB85C4E576878A7495046B128 /* FBSDKAccessToken.m */; }; - 19131ECD97988C2E0A7D828C1C3133E7 /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = C2C5BFAAE603122C4F742787E40F1FA8 /* FBSDKApplicationDelegate.h */; }; - 194040F9162AC4370EA2207CAFB4F385 /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 04DEAAD70B0460B7272FDFBAD65C2F1A /* FBSDKAppEvents.h */; }; - 198D036092702E8AF646271064ABB639 /* PFURLSessionUploadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A5E5E8ED6BA6053BE27E35F8E7B4BEEE /* PFURLSessionUploadTaskDelegate.m */; }; - 19FF72C0A165707AD00B46F3535BF306 /* PFCommandURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F21EA2F4A5DDD76A519682036295D1A /* PFCommandURLRequestConstructor.h */; }; + 18FD711698AFD5B3D0EC8082974B4271 /* Parse_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 8188F44B82CFACD44B2AA378C7BEEE4B /* Parse_Private.h */; }; + 19033C9781DE147AFF45BF404A35C4DA /* PFAnalyticsUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = BA77BF64FAFBF3F9E5DB590A4B0FB4A9 /* PFAnalyticsUtilities.h */; }; + 19E8ADBADA6FB3E090DE63349A607C83 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BAAF0724B9090137B718DFDA6EB9C1C7 /* MobileCoreServices.framework */; }; 1A074041FA5308016DBEE2905C5EB2A5 /* RKNSJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = AA62DC87D5F1898752152729F580A3A0 /* RKNSJSONSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 1A875C4481102F49D5ECE0EA0B06145E /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FFDF70586FE4143304DC181DA940A51 /* AFNetworking-dummy.m */; }; - 1AA3A74D556CBAC2478A4F9990BFEC08 /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DEC313363BCD979A9C39D7B1E66A2755 /* FBSDKTestUsersManager.h */; }; - 1AE22B14B900081E3F50FBA27C496913 /* PFEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CC8DE7490D76AE8614531D09B7CFA9D /* PFEncoder.h */; }; - 1C33F11DE5031EC30BC119B6B13B39DD /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B4CB8ECB1CC3450C6965777EB3C8B67 /* AudioToolbox.framework */; }; - 1CAB6029272599FE06ACBC43D39F0C49 /* ParseModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 392B81F3F69ACC5FDB7A16EFD49EC5CC /* ParseModule.h */; }; - 1CEF5F47B78C3B1F4FC3DC2A3043281C /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 637C1162277BA70B8FC486099BA5E68A /* FBSDKBridgeAPIResponse.m */; }; - 1CFEE22022532C92122574E140CB27BA /* FBSDKLikeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = DC31DCE7EACED0F72777050473D30EFC /* FBSDKLikeButton.m */; }; - 1D1D4A63CA7E7C9C93B672370E9261F6 /* FBSDKAppInviteContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 0072CE5DF3D9990F609BD5035548F5B9 /* FBSDKAppInviteContent.m */; }; - 1D25F16E42245E7F9ED399E79A782AF8 /* PFCommandRunningConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = CBBCDC44D6533386C15445A8DA75780F /* PFCommandRunningConstants.m */; }; - 1DC7F45A1971D9D7595B4DF9D5AE1487 /* BFWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FD3846A7DAFF7196AF5C2F45BCD8A5A /* BFWebViewAppLinkResolver.h */; }; - 1DD44AE9322BF5C38003687F763A49B0 /* PFInternalUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 11E9E6138AF7E67248A1C931ACA660C3 /* PFInternalUtils.m */; }; - 1DF304873442F38920E1691BCD46E4C9 /* PFUserAuthenticationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 00BEC727AA03A29C964A4BB55F65EC55 /* PFUserAuthenticationController.m */; }; - 1E06D1E8ABA58B1F8D93AC474933AED6 /* PFSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 92093FA98E5C9EFD88FDF61A6A4E6451 /* PFSession.h */; }; - 1E2B7478F9A071679BAD0B2B90203C58 /* PFInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FF60E0CE99104F46FC615B3C7403E91 /* PFInstallationController.m */; }; - 1EEA52E11250AE7F891BEAB357430C95 /* BoltsVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = B1C7ADB3EE2B383850B9230A7B460906 /* BoltsVersion.h */; }; - 1EFDE74434A6084134CFBBF5FBA37331 /* PFRESTPushCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CB2A1FCA55FB8C6D0C65EF34A7E0C1A /* PFRESTPushCommand.h */; }; - 1F4C9368105876D7EE4EBDB3C73369CA /* FBSDKShareLinkContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B6DB762A22230B1B2984E7A10A6D4431 /* FBSDKShareLinkContent.m */; }; - 1FA13C3A4A2F8C73655A15942B256594 /* FBSDKLoginKit.h in Headers */ = {isa = PBXBuildFile; fileRef = E29A4EC1C5F11EA0A4FDAD2152F177FA /* FBSDKLoginKit.h */; }; - 1FA37DC1F9BA323A9E932A24AA6B3FEF /* PFReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 6277470164DD2F4D1FC49886CF94D214 /* PFReachability.h */; }; - 1FA415C3205971578745EE767632508E /* PFPurchaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C73B2D9D4B827BC0A14F34532E43F41 /* PFPurchaseController.m */; }; - 1FAAB738BDBFD14A7B2E1C9FE9F7CA82 /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601718FD0C0CFCF5DA762D153DB3279 /* BFTaskCompletionSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 1FE020448F48D06DB2F2AF2187DC70D1 /* PFRESTCloudCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = A31F406B4BFF1949AF98275105F6457A /* PFRESTCloudCommand.h */; }; - 209D7DF631C4A5C22409B0709A1CF706 /* PFMultiProcessFileLockController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E3ED96EE4D0B9F695BE889B00DE6407 /* PFMultiProcessFileLockController.m */; }; - 20BBD79A31D823666D0B3A0CFAE82214 /* FBSDKShareConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F6C04F3A381B95E747E5867DB4C81EE /* FBSDKShareConstants.h */; }; - 20FA43FA68DF7B3AA0C3287CEB16B45F /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BF338323FECE8F074D22D8BD870DF10 /* FBSDKGameRequestFrictionlessRecipientCache.m */; }; - 2156E59F1188BA47E18D0F81D6AC802D /* PFCommandCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EEE62E07048808E1B20ADEC99B4B70FD /* PFCommandCache_Private.h */; }; - 215FD68C4117116C45B35634DEC57934 /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 80D80DCE3A20EC46EAAB66B362677E30 /* AFHTTPClient.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 216960B1853453C77581F1F43F292D25 /* PFEventuallyPin.h in Headers */ = {isa = PBXBuildFile; fileRef = 55B85002DD908349F1000F7996455DE1 /* PFEventuallyPin.h */; }; - 219C3827432B312C5FB04AEAA9C26E16 /* PFMutableACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = A6C3BBB9984F7D2959A0E80137315CF3 /* PFMutableACLState.m */; }; - 2207E71C6E656FFF704F6A458FFD9750 /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E373E20F8B2B8C3F9D13CB19C365A5B /* FBSDKAccessToken.h */; }; - 220E6346EEF271DD5FBA360A7E076851 /* FBSDKGameRequestDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DFB97640F65DA922830BFCD6E8BAE3F /* FBSDKGameRequestDialog.h */; }; - 222738C7317F7C959B8136CAC0C41697 /* PFObjectLocalIdStore.m in Sources */ = {isa = PBXBuildFile; fileRef = DE8B4CF37AFF88C9FFCC3ECBFB68A45B /* PFObjectLocalIdStore.m */; }; - 22285085488C28F72D4A8E6FE597C3F4 /* PFAnonymousUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = CE5437B74A760E4237FFB7AD86EA7AF5 /* PFAnonymousUtils.h */; }; - 222BC73BB2DCC1670840CBF0C7918219 /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 449D2F1679AC195C51DC348284B99B77 /* FBSDKSettings+Internal.h */; }; - 22EEC676AC4EE23B3D39371191826420 /* FBSDKLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A7CF9343BE7F2F1B6FB78E1A12A6B72 /* FBSDKLoginManager.h */; }; - 2362DD22CB38548C38463877211F2AD3 /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 2002E8422D89C583334968262BDCE8E7 /* FBSDKWebDialog.h */; }; + 1A09E869300C387E669CD4D45F577CC0 /* PFMutableQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = 10837937B6B53962D8F7B9D3F8E3EE03 /* PFMutableQueryState.m */; }; + 1AC411923BA89287B42855F90F199399 /* PFCommandRunningConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = CA33FED366B628BCA0A5D7DFD91E87D9 /* PFCommandRunningConstants.m */; }; + 1BF120A6893C7F1A47A8B6545D5BDF1A /* PFRESTAnalyticsCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 562E8BAC97316F785846B93E33C496DD /* PFRESTAnalyticsCommand.m */; }; + 1C56EBB47779DB8E4FCF3FA690AD04BE /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = DC2CCF0D50C6CF8EA37A8C6EECE1581E /* BFURL.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1C61916D50D61F450ED07778959FD4EE /* PFCurrentConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D53FBFB124273A95BC60A578E870E0C /* PFCurrentConfigController.h */; }; + 1C798778DB7297C94C49F9B3CB284F50 /* PFRole.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C3140134D0A6A0E556CA3A287EC0FF5 /* PFRole.h */; }; + 1C826C6D676AF5E527AD50D044046E33 /* PFMultiProcessFileLockController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9779A223D892C242F0118CAD43BA556F /* PFMultiProcessFileLockController.m */; }; + 1CC3FC978D22B673543B66F14E3586CE /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = 4241AE7BF35421577B79454BFEF8418F /* FBSDKMath.m */; }; + 1CCC648B56B68EAD6BA5F7616615C0A3 /* PFSQLiteStatement.m in Sources */ = {isa = PBXBuildFile; fileRef = 0614A8CED09956ACEF0CD07B5F13C94F /* PFSQLiteStatement.m */; }; + 1D220DA77D9B24A58DE5F500242C4014 /* BFDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 26E148529A5018FB0DBA0E6E6EF425A7 /* BFDefines.h */; }; + 1D67DA48760D20CA411641C9102136D2 /* FBSDKLiking.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E5EF79FF8D3C83E7DCBD82CE96B138E /* FBSDKLiking.h */; }; + 1E4C78412D3C24B2A1993006925E1517 /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D8623E61A0D98F47738887CE7BE2378 /* FBSDKMutableCopying.h */; }; + 1E8825EF12CDA16FB2E5453FFDBCC311 /* FBSDKURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 818CFC14E623AB5BE69BCA0E501ABFD6 /* FBSDKURLConnection.h */; }; + 1EA875D07292CF4D051DB0E0B9F008DC /* FBSDKLikeDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = E060B56260BC85ECD94761E793A08F02 /* FBSDKLikeDialog.h */; }; + 1FC6D72957CEF9A24C72C4F8DFD41502 /* PFPropertyInfo_Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A2458DB30CB9D1EBB4393A5B3933BDA /* PFPropertyInfo_Runtime.m */; }; + 201C1B5EA1CD292E1B6B811C9D1A765B /* FBSDKLoginCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = F03034CE4131076A48731504480259EB /* FBSDKLoginCompletion.m */; }; + 205B45504EF447096404D53C3E5F07FE /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = A1A84243D8AF41257B228911CE638D24 /* FBSDKMonotonicTime.m */; }; + 20A9B114B37DD905332B7D23EF6F1A5E /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = BBA379404F39E04206E50A2AE079F9AE /* FBSDKBridgeAPIProtocolWebV1.h */; }; + 214D9B21E9B0C005DAA26F13F39C9122 /* Parse.h in Headers */ = {isa = PBXBuildFile; fileRef = E42FE23DCA3EFFB8F6025F9F9A8B3497 /* Parse.h */; }; + 21C047E0236B40B41B98B4AB051559F0 /* FBSDKGameRequestContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 54920BD88D6A715796BB19A547213023 /* FBSDKGameRequestContent.m */; }; + 21D9580410D5D36914C1738EF4824FE5 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE00E564F591F731C2B1E11065E0ACF7 /* CoreGraphics.framework */; }; + 221012772EFFCB2257ABC519107D42D4 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = DFC853444423A2B6AFB3F150BD3A93F8 /* BFCancellationTokenSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 22BC87A9F5080A50780C32CCE2555D4A /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A90605386336758A5E6828DC0AB5D68 /* FBSDKDialogConfiguration.h */; }; + 233A654EC18BADBA2DFBD887A993CFAF /* FBSDKLoginManagerLoginResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 908DBE6B62FE286E8E2B65AB8471172C /* FBSDKLoginManagerLoginResult+Internal.h */; }; + 233B0108145788C73B6DEE12D030FE98 /* PFRESTConfigCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B2BBEF7F76A0A9700A14D2C55164268 /* PFRESTConfigCommand.h */; }; + 2355CEA58CC12AC348752E940F41C856 /* FBSDKLikeBoxBorderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6358EB9DDDA9062C6B886A954CBC76D9 /* FBSDKLikeBoxBorderView.m */; }; + 2362D4F041145FA0576E5E6908705963 /* FBSDKLoginUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = D19C9E56F232605C57E9A412AF3031FA /* FBSDKLoginUtility.m */; }; + 23D8FDFC8CE4359208A7EF38A5FF1035 /* PFPushManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 135CD2563AE865A18CBC5672956D2875 /* PFPushManager.h */; }; + 23F002C90710E0EC3D183E8683FE8765 /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4214851D9461FC93F660FCB73142859E /* FBSDKCoreKit-dummy.m */; }; 23F64C0DEB9100774DC815861B20FF24 /* RKObjectParameterization.h in Headers */ = {isa = PBXBuildFile; fileRef = FFEAA8C456F1D711FDBADC3559935B4B /* RKObjectParameterization.h */; }; - 2442532FBCA5707E5217A68EA0594E96 /* PFErrorUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = EF3885FD8EAFFBF7986ADCB2A2DE77DF /* PFErrorUtilities.m */; }; - 24C7BBC40CF0B023B820E9B81B4DA070 /* PFPin.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A69674A69ED07E630171FC8E7DE679B /* PFPin.h */; }; - 24CB2B8CDC5F16CD9E14DA26DB83DDFA /* PFPropertyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DB137E8A7C92A13BD6EB1FE46FAD717 /* PFPropertyInfo.h */; }; - 2515D00EB9ED2D21B6A1D2A019CA407F /* PFThreadsafety.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A43F656D15828E22D2934C2706AC1BF /* PFThreadsafety.h */; }; - 251789CABCBADBA6608A463D8B43327B /* FBSDKURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = D2C830B4D9FDB6DA319A8D346A942692 /* FBSDKURLConnection.m */; }; + 242C15C9117EAC106F61B34CC69472D1 /* PFFileState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 922185D0977C1F99BFB47CC3EB889F72 /* PFFileState_Private.h */; }; + 243F5CF4634218E9A2B8CB8C58CA5B5C /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = 42849FC04B9D5B542DF3CC22E779A9A1 /* FBSDKTriStateBOOL.m */; }; + 247B8D0D633AEFC395D2B80429B1A91C /* PFPin.h in Headers */ = {isa = PBXBuildFile; fileRef = 587669D43EA945644A3A4CF47F37098B /* PFPin.h */; }; + 253CCABFC921C06E3305CE89A60B9181 /* PFCurrentUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 87B65FF1A2D48D2F1F0BF29F0A571A28 /* PFCurrentUserController.h */; }; 2564365FB5C724F430D231922B775D60 /* RKPathMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 2109F27F00016BC697F3694A3C8A4EF0 /* RKPathMatcher.h */; }; - 2571CBB40950A47C696F3166573C2E03 /* PFInstallationIdentifierStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 279B027B17D8D0512BA90F26313978F2 /* PFInstallationIdentifierStore.h */; }; - 25C107A17D548A434206897795BDE83F /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = 5765993E55A9BEF96BE2124E9CC1E550 /* FBSDKTriStateBOOL.m */; }; - 2640A12FB3BBEFFE06930194C91A3D0C /* PFRESTCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = B7B64451F8A6E1AC2BADE39B3C1CABF8 /* PFRESTCommand.m */; }; - 264D7F2AB36480290C7CE960CA5D049B /* PFConfig_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F1C624B7EAFBBBECE836A2F4331DB5A /* PFConfig_Private.h */; }; - 26CA0B5BAAD13B57BEE6231A9404024A /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 45498ABE1A6B5EAA74C26A43CF36BFB7 /* BFURL_Internal.h */; }; - 27329EF5BB7C0D6973A2A6B02AAB96EC /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C21952B82AFD2B07F65F1B3D08202AE /* BFURL.h */; }; - 274A8966A2797D607CBBC96CEC3D6A12 /* PFOfflineQueryLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = F15AA0B0FAA03DD30C07E23D2030823C /* PFOfflineQueryLogic.h */; }; - 2771126CEE0ED676666F21E9A617ECE3 /* PFDefaultACLController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06C7256FA983EDE2D306A89B041DEB9 /* PFDefaultACLController.m */; }; + 256CEC5BA81F9DF5DDADBCCFBAC3CBBD /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 184E2F2A8FAA80A676143A0D7ED71EA6 /* BFMeasurementEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 25E65D69B09FF84C6B52973D81385EAD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 26352EBD95DA14640C8750C915C72984 /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = 24255CB705666DD05FB446873255ED8B /* FBSDKBridgeAPIProtocolType.h */; }; + 266D1F445295A861003F06F357CAB18B /* PFPushController.m in Sources */ = {isa = PBXBuildFile; fileRef = 83FAF66089BB2B25DAD32F318716E9B5 /* PFPushController.m */; }; + 2676FFF359D8A0EEE5C4B5A999B5B8F8 /* PFRESTQueryCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DE77267B05353B27C048F5B04016566 /* PFRESTQueryCommand.h */; }; + 2694BF27DA873BF154BE842A4638CC6D /* PFOfflineQueryLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D6E9F5DDD85504DE6DDBECF9E39A959 /* PFOfflineQueryLogic.m */; }; + 271E62B60998688EC159938AF3432FDE /* PFMutableObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = AE308F7FD55A37D38ABFDCED9CF0A8B3 /* PFMutableObjectState.h */; }; + 2773A2DA8DBDF9775A0F3853F3032127 /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = A460B6A4FC8055E468FF739FF0D108FE /* FBSDKAppLinkResolver.h */; }; + 27746C9143CAB9F08BA89403D37A40DC /* PFApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = DD1DBE77FAE408E2C2A7ED2A4C1C8A7A /* PFApplication.h */; }; 27CB1B6BD10BBF2C8B1581E3C2A67020 /* RKBenchmark.h in Headers */ = {isa = PBXBuildFile; fileRef = B3430C5AC8208C2B671B4D7823955F60 /* RKBenchmark.h */; }; - 282284A3A26A1D0B38FB88FAD808EE87 /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CAD9C68AAF00E405CF6AAA2841B7C73 /* FBSDKWebDialogView.m */; }; + 282AD9B008CDB7CA432F3F2551B2F38A /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 5923B48367DC6DA262FA7C70FFE94DB0 /* FBSDKTypeUtility.m */; }; 282F90745F7864ABC8C81BFE6D755924 /* lcl_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D97C25717E3E4851FE4EFE780A45434 /* lcl_RK.h */; }; - 289440F037321298F6CFAE462EAB2708 /* PFJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C10D8C3B24FB7B0FC1A118A6F1B04FB /* PFJSONSerialization.h */; }; - 28EC0BC1DCF43CDD52A475B165A8FD73 /* FBSDKLikeControl+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7078C0E27AB4BBE276699BEA6B6332B4 /* FBSDKLikeControl+Internal.h */; }; - 2912A7D737F750A67C5DBB6C94E21B08 /* PFSessionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6F5C52DD8416B5F436BA714F2292F6 /* PFSessionController.h */; }; - 2A090259083345B82C50D513C268C552 /* PFAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = BB0CA4DECDBC711B22322A480B4D2DB0 /* PFAssert.h */; }; - 2A34C2128A8898FD3560B05FE8AEC6E6 /* _FBSDKLoginRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = B306BF5D4F5F8F5EDE605D550B1C60E4 /* _FBSDKLoginRecoveryAttempter.m */; }; + 28CFDEF753D0D6972BAE795E1CF43C2C /* FBSDKAccessTokenCacheV3_21.m in Sources */ = {isa = PBXBuildFile; fileRef = A38B68BCFCED22FDC00C7FD4F3FFA717 /* FBSDKAccessTokenCacheV3_21.m */; }; + 29281066B368FEBFC9897E5C625ABBF0 /* PFURLSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 18307BC0EA14A69F26486ACEC94450C2 /* PFURLSession_Private.h */; }; + 29665B4CBF57ED49FE333D5DA6FE41D7 /* AFHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = B50ED7330E240BB1A16E10047FCC8E37 /* AFHTTPClient.h */; }; + 2A6AE3E4DDEEE593F6653E4A3A2E747E /* FBSDKAccessTokenCacheV3.h in Headers */ = {isa = PBXBuildFile; fileRef = CC2CE8BA55B6B6E6E126D87B37D05550 /* FBSDKAccessTokenCacheV3.h */; }; + 2AAF9F612DA70EAD241A04B84E617778 /* PFLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = D974B883607CC6537A01E19606D22B95 /* PFLogger.h */; }; + 2AB6F30B33BF99DB942666A62EA67837 /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 33AA2846801F30C2C7C711FD553C91A2 /* FBSDKBase64.m */; }; + 2B019E06A434B73512E960B5037F458D /* PFErrorUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D575196CED3C1360574CAC6B7FE08BE /* PFErrorUtilities.m */; }; 2B03BE59ECF8AB8DB61087F8F4853534 /* RKDictionaryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = F008693162E318C7C2752AD302CFB95E /* RKDictionaryUtilities.h */; }; - 2B96436D95914F65C562C78AB09B64A9 /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = CF7DFB4A5A35BCE03D459F72C536D132 /* FBSDKProfilePictureView.h */; }; + 2B15B8C342792ECC98874B1C00037446 /* FBSDKLoginManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A2ACF4A5ED3EA611505A0F4017817898 /* FBSDKLoginManager+Internal.h */; }; + 2C46FF817FBEDF337CE624F0A893F0A6 /* PFFile_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F0211D9EDFAAA5807FCBE1B8C8F4B662 /* PFFile_Private.h */; }; 2C82478070852B2BFF637238B76D1102 /* RKManagedObjectRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 773B71C6DCFE021055288283663560C9 /* RKManagedObjectRequestOperation.h */; }; 2CD1ECA00B5641FC62A5681022C698F8 /* RKObjectManager.h in Headers */ = {isa = PBXBuildFile; fileRef = ECBDBCED6B21C2F082743CDE93ECBC76 /* RKObjectManager.h */; }; 2CD8A153F9E6D040F47CB488191B4675 /* RKDynamicMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 98D59999C2F13A02F8927597F85000C8 /* RKDynamicMapping.h */; }; - 2CDDB7A231AE639E1F1988F2F0DA00DC /* PFPropertyInfo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 83ECAB9F08AFED3BB4204FD83415518B /* PFPropertyInfo_Private.h */; }; - 2D9E2BCFF95F68987970E71AF56BA281 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 2CD9A0FAC248398D39B7BC82F3ED4BF7 /* PFFileDataStream.h in Headers */ = {isa = PBXBuildFile; fileRef = E8E31EEB8DA53180013FB1201C82EE81 /* PFFileDataStream.h */; }; + 2D37F6D243C16B2F3D8961995C27F706 /* FBSDKLoginKit.h in Headers */ = {isa = PBXBuildFile; fileRef = C771ECF49E63DA4D6AD0B964CDA4DC94 /* FBSDKLoginKit.h */; }; 2E001B9E32766B89D068E48697778482 /* RKMIMETypes.h in Headers */ = {isa = PBXBuildFile; fileRef = E7C4A5E56ABED18C3E81AB6301A8CB78 /* RKMIMETypes.h */; }; - 2E3687F32FC0947D85010A0575E153D7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 2ECC223575FB09382C21927D1077E5E0 /* FBSDKBoltsMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E79911FE858017F50A495D51DA3DE5D /* FBSDKBoltsMeasurementEventListener.h */; }; - 2F0466053F46CDA3975A8F0B2C973555 /* PFRESTObjectBatchCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 04C0F1EBAB58CF7749671D83B4E420E1 /* PFRESTObjectBatchCommand.m */; }; - 2F83FE38563565221965FB1F72C8D8E4 /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E0932D59414A78A0F565507651988C6E /* FBSDKAppEventsDeviceInfo.m */; }; - 30152EEA6C1FB5F3A46B5E6D9E1866FC /* PFInstallation.m in Sources */ = {isa = PBXBuildFile; fileRef = 542D17E28458EBE4D318648EEB3B381B /* PFInstallation.m */; }; - 3056984029600254636E6C7BCB7068B4 /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = B44F9A0151A29D7133BB6B1A3BBFA048 /* FBSDKBridgeAPIRequest.h */; }; - 308248C696569BF007E57C2520B8194C /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = C7249D4C5D5FE59893DC804D17C271BD /* FBSDKTypeUtility.m */; }; - 3096466F4630E924DB0B97E337933B26 /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 1955631553D95C0ED5688DA6F29CC8E6 /* FBSDKConstants.m */; }; - 3127CF609B257C5A3A30B4ADC3D3A7E3 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A51EB7786397F5EFF35AB3BD9CEF4F08 /* MobileCoreServices.framework */; }; + 2E10AF5AABE5FF7C918CC397AEEC1C7B /* PFSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EA5A298BA6815375F9BBA4D48B6E32C /* PFSession.h */; }; + 2E2E2877A7093FCC57D39DEEE91F34F1 /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CD896F18B0B8E074D5B6AC246B7278 /* FBSDKProfile.m */; }; + 2E3451E0F9E899B3485E85A091EBCB90 /* FBSDKLoginManagerLoginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF337FAA2E9DD4BA7619CC58CCFEE27 /* FBSDKLoginManagerLoginResult.m */; }; + 2E353986482700CBC86E955C4DDCFA0E /* PFPush.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD7322E2971743B34A65BD010CC3165 /* PFPush.m */; }; + 2E5619D195A0E92BAB39F541E7AD328E /* PFInstallationIdentifierStore_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F97330408CBCB9866B2403F56722EED /* PFInstallationIdentifierStore_Private.h */; }; + 2F3CC7CAE02FD6568812F880AA12E4F3 /* AFJSONRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = FB4066FE555FBBC7224915F81DDF0E65 /* AFJSONRequestOperation.h */; }; + 2F6E21DBD92BD6D98388D97F614B56AD /* PFObjectSubclassingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CE58398E0BE8D266923D16A28663EB6 /* PFObjectSubclassingController.m */; }; + 2F7B41D4DACC8C02B4AE6A30485A3911 /* PFDefaultACLController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E290B1D6DDD48B2FD0139DCD4B3348D /* PFDefaultACLController.h */; }; + 30231E4630A4A71D7311DD4463E21F51 /* PFInternalUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = A3B19063FF0B2F212D30AA107E73EAF3 /* PFInternalUtils.m */; }; + 3098ABDB8CEC8C01686E276C1935E3DE /* FBSDKSystemAccountStoreAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 45A6C38D859E4B8E2327A07A3AD329D0 /* FBSDKSystemAccountStoreAdapter.m */; }; + 30B5221471557DA4D9A2189E52471931 /* FBSDKShareDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F5835DFBC8A6E5D025F957021AE5352 /* FBSDKShareDialog.m */; }; + 3118E1B0367B386FAADF624C65F9668D /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 2651DC8D21016E6D886F1577AAA22972 /* FBSDKGraphErrorRecoveryProcessor.m */; }; 314069A93A029213626B93EB93610079 /* RKMIMETypeSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = F43593C0DC2EA028CFDED6E93DD31EBD /* RKMIMETypeSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3174730BF077E855590518B3457069F8 /* FBSDKShareError.m in Sources */ = {isa = PBXBuildFile; fileRef = 234BE7352A8ED0F63714ADF373DC4713 /* FBSDKShareError.m */; }; - 3179B1591E9D904EC929C13B9670DD79 /* ParseManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E2BB3CB62DEEB960D69BA58C987EF78C /* ParseManager.h */; }; - 317DFD4D6FFBC372F352C1D28E1BF585 /* PFLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 02577CE0CCF20FCB28AE72A1BA70963E /* PFLocationManager.h */; }; 31E03BBD64B8193A5A9C6C7FF049CDE3 /* RKDynamicMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = A0426D7149778C1DBF70DD5B3253A081 /* RKDynamicMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3214374F6CE47D604F5D0A6E41C5DCFF /* FBSDKMessageDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D3EBBEF6D5B4018AA707132922DC9B4 /* FBSDKMessageDialog.h */; }; 3242ACAE66A3D0C3A348362AE7EB96EB /* RKTestNotificationObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = D483D1D469EA00BF8839FA7029495D60 /* RKTestNotificationObserver.h */; }; - 32A1FA10137D497E941428136267CA6E /* PFFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 26648E7CE5BE1B08B80D3B2DAF2A53C7 /* PFFileManager.m */; }; - 3342E425FE281AB7323D6706237A2FDD /* PFWeakValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 763AC253EC0FD55889EFD9499486FE4D /* PFWeakValue.h */; }; - 335D7BCABF70FFC8383F8A0611246675 /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 749C7452D497A9A10B0021891AC18286 /* FBSDKErrorConfiguration.h */; }; - 336DDE9C1339B3E1C10A65C1ADC3ED5A /* PFCloudCodeController.h in Headers */ = {isa = PBXBuildFile; fileRef = 33244990175A48516182AFDCEDA52E66 /* PFCloudCodeController.h */; }; - 338AC89A56557B049850D4C9BBD3FC7F /* PFSession.m in Sources */ = {isa = PBXBuildFile; fileRef = DE5E904CC7ED8533B3A17E70BFCCDB42 /* PFSession.m */; }; - 343F80499D58275C98B2A493E79CA832 /* PFMutableObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DB2691909F8F7F08DD7D43B4054114B /* PFMutableObjectState.h */; }; - 347B3C92362CDFCAAA3F0D16BB79DD75 /* PFFieldOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 26A65996250E9A6E0A45799C5C80A4D6 /* PFFieldOperation.m */; }; - 34C22BBABD69A8D88FD8DFBDBEC7892E /* PFApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7DE1AA020492D010862FA4F2FBC7C6 /* PFApplication.m */; }; - 34D4E13D2EF2F56D363822822A206D07 /* PFObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FC310BBD6C8CF36F6B10AEF4AE850E3 /* PFObjectController.m */; }; - 351E6DA5E99D075F0A6EBFBB4B8C246D /* PFQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = D7B4BAE18CF4FF92FDA44D8959B272B0 /* PFQueryState.m */; }; - 3521883602EE9F7D16DF3A5DA7876F6B /* BFAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = ABF0B6755B46A73A4D5A66DC91176994 /* BFAppLinkTarget.h */; }; - 3521C3A0492CE669FF3994A3B9092698 /* PFEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = ADD502BDCA2209045FB7EE614931BD10 /* PFEventuallyQueue.h */; }; - 352F099A847CDF8860CCC2DF4C2DBA99 /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 1779F15C59809673515A3EBCF2C22457 /* FBSDKPaymentObserver.m */; }; - 3564BDE7D6AC43505B004147D0F3F96A /* FBSDKShareUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 22736BBB7E29843BFD25AF6EA526FD54 /* FBSDKShareUtility.h */; }; - 35C74ADE21E53C1A980B0F09B6A69441 /* PFObjectState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D3AB2BDF8EB2BCD1EDB0AE62B5E7FE1 /* PFObjectState_Private.h */; }; - 35CBB8FDE995DF721CBB0CDFE012C9D8 /* FBSDKLoginManagerLoginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = AA6AE3659CB5F993D0249F89C25AD457 /* FBSDKLoginManagerLoginResult.m */; }; - 3604341EAD3633433B487305A3D71A76 /* PFCommandResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 129FC7A2DDACFE1328825F6A865367F5 /* PFCommandResult.m */; }; - 3609521E7B4772D67132F8DD9DAD0EEB /* PFObjectSubclassingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AE7D5E655DFEA88C846CA2F49FD7F27 /* PFObjectSubclassingController.m */; }; - 360E0335AFBE716BC449DC5AE274EEEC /* FBSDKShareLinkContent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 46CD7CED669BB2E7D7C29361322568D4 /* FBSDKShareLinkContent+Internal.h */; }; - 36B07F714856EEB15D38BE6949CE4ECA /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 4943E9CC3F93FDF967E81314D76CC855 /* FBSDKGraphErrorRecoveryProcessor.h */; }; - 36C509AB4E714B60F207DCDFD4F6E76B /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D76BC349DBB9D1197FFC7ED4732AAA /* FBSDKAppEventsState.m */; }; - 375BA2E48BF70455B6F5124A7AB5DD9F /* FBSDKShareAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = AF0E2DA4583C19DA08D84DBF506EC7F3 /* FBSDKShareAPI.m */; }; - 3784B93C592189DD7641DD0C055EE510 /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 73DF5CF1E91847F2BBD8BC5574BE7A24 /* FBSDKApplicationDelegate.m */; }; - 3793FECEA3A6BE4D02C5F7852EE3F7B4 /* PFProductsRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B176B4F560C96F25001CAAEF4C24496 /* PFProductsRequestHandler.m */; }; - 37A8328CAC5B9F9B21F4E0F7F7F88C90 /* PFObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = A07FB85A098FAF188DB71104131A46B2 /* PFObjectUtilities.h */; }; + 32CADAEC3FC0CA1A4AB2759B8DB02C94 /* FBSDKLoginTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A643D621DB5B92B641E0E85372BA98E /* FBSDKLoginTooltipView.m */; }; + 336423D9526F48480AD694EC196FDCA7 /* PFAsyncTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 00EA57E2C906799ED67EBCFC4089A02C /* PFAsyncTaskQueue.m */; }; + 33C0113BD220073D53AF6158C83E6F35 /* PFQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = E1394AF99EBF307ACCE5AC895EAC2042 /* PFQuery.h */; }; + 33D75FFDA664AF78542007DCBC137A14 /* FBSDKAccessTokenCacheV4.h in Headers */ = {isa = PBXBuildFile; fileRef = ADE2CE2451E917A2482234B50A41DC19 /* FBSDKAccessTokenCacheV4.h */; }; + 34355DB3FC335D6F5F14E2C436E8B880 /* PFPushState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E21E2C6F0AD5061454FF796346F0484 /* PFPushState.h */; }; + 34800A407ADEB815F529E3CD4630210D /* PFConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 90E50367F9BC45C10EACF85808FF75BC /* PFConfig.h */; }; + 34B9717B9BD9E717234A4BA4FA9B23CF /* PFAnalyticsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A71824B576DDC6AD0FCFF11F0B133D6 /* PFAnalyticsController.h */; }; + 35CF2A0AFFFA1D48E9492B395E68BC95 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E46F0E48D76D7792ECCC0237C8E9CF /* _FBSDKTemporaryErrorRecoveryAttempter.h */; }; + 362CDA47E136CC1DFE150611DDCFFC99 /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = AD4EA5AF253C62AF6EE7B3838BE1FE11 /* FBSDKTimeSpentData.m */; }; + 363E8CE74C4DC35B9D68AAC353A116DB /* PFURLSessionDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = CEEDE6F5E4B91DB0462629F30CE2C5D3 /* PFURLSessionDataTaskDelegate.h */; }; + 367ED93EB2EB25B7F6CFC3191AD1ED66 /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 65CF7764149142958978827C966A07B1 /* FBSDKAudioResourceLoader.h */; }; + 36808C750EE4E138E79AC4A52BBBCDA1 /* PFObjectFilePersistenceController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8201C8136FA5647FA6E3D62C4EE1974 /* PFObjectFilePersistenceController.m */; }; + 371A5CF7297B29D0C41BEB53EBF1FED8 /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0820BC8566C53EE58544095722F3A841 /* FBSDKColor.h */; }; + 3722A927AABB3C7CC8B5562C9B42A4B1 /* FBSDKShareButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D3882165793F00E2FD03DD7A903E3AB4 /* FBSDKShareButton.m */; }; + 37C5A5F5F5C16AAF3BB95832F149E67B /* PFConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 09F2C7C83A1343D93FFA99723D546B25 /* PFConstants.m */; }; + 37C5B25DF6BEA25F244D3E1FC4185DDB /* FBSDKLoginCompletion+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C9FEB49ADBD54B9FD7533801BB5380F /* FBSDKLoginCompletion+Internal.h */; }; + 37C638B1F00DC6C36311A62BCD273269 /* FBSDKSharingContent.h in Headers */ = {isa = PBXBuildFile; fileRef = CC65F8627E5C5856896FED7D2BB1CF7B /* FBSDKSharingContent.h */; }; + 37D6C597E2AD01C1BB8B163D369B7AB0 /* FBSDKShareAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F3FAED1517988ED94F54E9B8DA4E0A /* FBSDKShareAPI.h */; }; 37DC8354ABF030C71775008A29B0E4E3 /* lcl_config_extensions_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = B83F7B501488845012B0097456793ED7 /* lcl_config_extensions_RK.h */; }; - 38DA7CBB8D5C6233F7777A13CAAB2333 /* FBSDKLoginManagerLoginResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B4DD5861C8879004366D84A43D21E0EB /* FBSDKLoginManagerLoginResult+Internal.h */; }; - 38E002CAE70208D67028CA130CBC8B13 /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = A1DAFA76443338477CB91F2DC0FEDC9E /* FBSDKMonotonicTime.m */; }; - 39D5FA61F8BC6306CEB6FD0040846723 /* PFQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2850C6A23236DBC93BCD286061735858 /* PFQueryController.h */; }; - 39FD00E726ED2D451932BC6D5173231B /* PFOperationSet.h in Headers */ = {isa = PBXBuildFile; fileRef = DCCA1D25CC0F8A31965C4458FA970C52 /* PFOperationSet.h */; }; - 39FE6E18FF223B1EDE632A6B84889BCC /* PFPushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A0F3D060245CFF4C9AD4E4E4B1FE443 /* PFPushManager.m */; }; - 3A04E842AA18A356259934EF2599629D /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B8D0C5A6A7DDEE013D14931B007DA4 /* BFAppLinkTarget.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3A3008F77AD2EA8D8F372EC10733B00E /* PFRESTUserCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D225D38EBD061B9B317B5F017A8DB8 /* PFRESTUserCommand.m */; }; + 384D12A6756ADD487295CE08615550C1 /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8FC29E783D5AAFA886556B21AFC84E /* FBSDKContainerViewController.h */; }; + 38C42E03CBD6DE6CD7C011646AF8AAE7 /* PFAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = D7C3DDABC4BC501093A232FA20368F5D /* PFAssert.h */; }; + 38CDA66FB02AD0480B135A0E9C4DDD09 /* PFCurrentObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = 55C549F5B8CF223004416FA7639F9E69 /* PFCurrentObjectControlling.h */; }; + 38CDA7AF96061D1CC4F9999F941314A4 /* PFInstallationIdentifierStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 886A664252B9125A43A5E8CDBC0A2C43 /* PFInstallationIdentifierStore.m */; }; + 39D96839924E83EA80B140F589FFCD47 /* PFRESTCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 680D7CAB02E8C5A1DCE74985204D4483 /* PFRESTCommand.m */; }; + 39FC8B6114BDCE13E07EB4160B959A8F /* PFAnonymousUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = A7162605D551027C56A2A37B943994C7 /* PFAnonymousUtils.m */; }; + 3A4E79016E170FCEA906AD959BAD0F4F /* RKISO8601DateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 83A77564DAB70186CD83920566902605 /* RKISO8601DateFormatter.h */; }; + 3A7EAC81C4FB2DAE1ECA0946918B859C /* PFURLSessionUploadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 53873BB442346D140446325544126600 /* PFURLSessionUploadTaskDelegate.m */; }; + 3AE182AECDA6FB112732923A4334D472 /* PFURLSessionCommandRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = E2A3EED08BBE4EF8E35776623B221D96 /* PFURLSessionCommandRunner.h */; }; 3AE80C219B4B8E1118C4032D8A203C36 /* RKRoute.h in Headers */ = {isa = PBXBuildFile; fileRef = 82F4CF881DD119649C8445AB7AD1733A /* RKRoute.h */; }; 3B16D2CF7B1C7C98DF560E1208D45CEE /* RKTestFixture.m in Sources */ = {isa = PBXBuildFile; fileRef = 4294F692EAF153601A3A4B780A9C0668 /* RKTestFixture.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3B59099B7FF527F1699FD79F0CD6F217 /* PFRESTSessionCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 66C2AD35A6E51D88EA4ECC24C43ABA8C /* PFRESTSessionCommand.m */; }; + 3B2AE3090FBEF6A9A0AF03E43A77509A /* PFPropertyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = AED3A36F04E046594F39EA5EB90D97FD /* PFPropertyInfo.m */; }; + 3B3B3B7EADC2C13FBE5A51A8BD80AAD1 /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 72F7D5CD8944B77904BC197DDC8A0487 /* FBSDKAccessToken.m */; }; + 3B753F85E3CBF91C270E9DC07341B708 /* FBSDKSharingButton.h in Headers */ = {isa = PBXBuildFile; fileRef = FE6B1221BB48461DA615B55D5D19370E /* FBSDKSharingButton.h */; }; + 3B76C2CB31039AF1A29C4F595F684F2A /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = D659356F1EF1F1C346376A400B5070E9 /* FBSDKMaleSilhouetteIcon.h */; }; 3B7EBA7886CB6F28D8C9BF552955CE2F /* RKRouteSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B949380B0A36EE9DCE1BE3DD205872D /* RKRouteSet.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; 3B80CE07A2168B1C91BACCCAED54E24A /* lcl_config_logger_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = B96FAE035A72F2B9E4745AA2941D21DC /* lcl_config_logger_RK.h */; }; - 3B98740FB38A404583CB8E2504C36BB0 /* PFPinningEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = D5D5CF2EDCF3EFE196B7789A29C02031 /* PFPinningEventuallyQueue.h */; }; - 3C1DC8F3C0D0C2D975C5256111A23858 /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = A794CC4D4A2C1FBA46304C8A08FBBF13 /* FBSDKAppLinkUtility.h */; }; - 3C8B562089BB841438C603BABE32632A /* FBSDKShareConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = D20725012BA649DB28A11E8B87CB03B2 /* FBSDKShareConstants.m */; }; + 3B885734C80A0A787B7A3FD563A54A99 /* FBSDKShareUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = BE300C64CFEC0B1AF5E5B10FCAD254AB /* FBSDKShareUtility.h */; }; + 3C73A01215B692C7C17F8CC6C7D74BE4 /* PFProduct.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A3A3C984D254DD2D0058DD599EAD348 /* PFProduct.m */; }; 3CDB89F3725ED26B768FE843D82396EF /* RKRouter.m in Sources */ = {isa = PBXBuildFile; fileRef = D145E83E2215C35E1D66DCFD70095EAE /* RKRouter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3D17F603F3AA75993A5871AA88E82EA8 /* FBSDKShareVideoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CEB2F6C3776B2FAA2762E5C908FA891 /* FBSDKShareVideoContent.h */; }; + 3D366280CD3300E954FB9956F50437AD /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = D4FD1E6A7772359C67DC337EEDF88556 /* FBSDKAppEventsState.m */; }; 3D5474C1E69D04F528875AC3F12BC26B /* RKErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 3954F2A0287065523FE93833957D805D /* RKErrors.h */; }; 3D67F027014DB141F5CD6820ED830BA2 /* RKBenchmark.m in Sources */ = {isa = PBXBuildFile; fileRef = 8430E4A0A4791DC7D0F9CE485D860A00 /* RKBenchmark.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; 3D72D32F4B1A08F0DE53710D9B65D45A /* RKObjectMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DE47CA373FCE248BB502DF421F6B2A3 /* RKObjectMapping.h */; }; + 3DA234B60937F780C2D85257BAC8AFEF /* FBSDKLoginManagerLoginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 510604FAF87C394AFADB9A5D564F3AEB /* FBSDKLoginManagerLoginResult.h */; }; 3DA7C9EC3F83FAF0FB19DC783FBBF412 /* RKPathUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 259C735ED2FFC41359586661CE813736 /* RKPathUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3DB2858B25E1C7C00547C227306254BE /* ParseInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 82DE2CCDEF80C1FF02649B195289A931 /* ParseInternal.h */; }; + 3DF26B936A4A112B5B60CE1C3EC8959F /* PFObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F51CD3717AB71F5E10A96BA8B666AACE /* PFObjectPrivate.h */; }; 3E0E763F67DFDDA31AF5DBDEAAA1207E /* RKLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BADEB18E715ADFCC4E321048C18D8CF /* RKLog.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3E923BE69D091AC983DF766EB1703F92 /* PFPush.h in Headers */ = {isa = PBXBuildFile; fileRef = 40739D148D4DAE664411F3F2DBE4D3F8 /* PFPush.h */; }; - 3E9373D4AA88F97BD38272875738D398 /* PFProduct.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E23F80B85568CE234F07C36444A8868 /* PFProduct.h */; }; - 3E997FD51BB27FF148B9D243F6804D23 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 3EA794DCFF7259995465393C2F8F2F3F /* PFObjectBatchController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4116573287BF306C8EC05DBF93BD549B /* PFObjectBatchController.m */; }; - 3EE409808915A90F0D75948C1371C47B /* PFObjectFilePersistenceController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8998D38349136ED287AD6B1F81B2A2C3 /* PFObjectFilePersistenceController.m */; }; + 3EA664BC0A9CB70A6B95DF8A0AEDA68A /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 146309296F3083D07EB7A9F31D3148AB /* FBSDKApplicationDelegate.m */; }; + 3EAE0DAA5517A55E52E5A5D099DB7AA4 /* PFEventuallyQueue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 81D47F8C37692E3865019B411BDAEE3A /* PFEventuallyQueue_Private.h */; }; + 3ED276C208E4C2C431499BD98C10D6AC /* FBSDKShareOpenGraphContent.h in Headers */ = {isa = PBXBuildFile; fileRef = BE9C3BEACE061C48E9A8427C3059F7E5 /* FBSDKShareOpenGraphContent.h */; }; + 3EFA30742A712A0CDDFB5993F762C0EF /* FBSDKGameRequestDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 44335A04DAA32B00C92160838C5E789D /* FBSDKGameRequestDialog.m */; }; + 3F2315BDE91F31DA56D01EF5660DAE6D /* PFFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = FA021E3B9768C5B58BAAFC752622E888 /* PFFileState.h */; }; 3F4D16C2F94D67B739CFFCB65181A7C0 /* RKResponseDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 22BCAB2ABFBB3566EC2E7ED45706F704 /* RKResponseDescriptor.h */; }; - 401C0CBB692B03B532B658368BD5C4FB /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5243AD5D9D864456CBD961BC945843F /* SystemConfiguration.framework */; }; - 40C67CAE468EABF931B98B2E88DEE324 /* PFSQLiteDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 02F8999A03E5DEA16BE168121A32E180 /* PFSQLiteDatabase.h */; }; - 413DB25BECD1AA25EF0D2EE95263DD20 /* AFXMLRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AA3D565456E290589B27357D512E69F /* AFXMLRequestOperation.h */; }; - 41CBA3A465424FF859B076C2D5E4428E /* PFAnalytics_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E82158333A26FE08F2D24FE0960BB5B0 /* PFAnalytics_Private.h */; }; - 4248DC99938BB7DEC770F5C5387EE00A /* BFDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = EF76AEC2726221DE7C0236DFE4624164 /* BFDefines.h */; }; - 4333AE53D9FC43FFDF43A95B64249697 /* PFQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E3986BD59BF447A1F15BD4527B7D366 /* PFQueryController.m */; }; - 436FF1E87CE8508ADEA80DA9F5A7FDD7 /* PFKeyValueCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B5B3E3A409593357C8EDDEDDC0651EA /* PFKeyValueCache.m */; }; - 439602F2414CDEB8A062B5FD625BAFD9 /* PFACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = 675939A97597CD2EA04CD4995460A6C7 /* PFACLState.m */; }; - 43C62E1AD429F5F56736CCB4B27ED1D4 /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 193263D0A1C4B4903D81B084F3616AC7 /* FBSDKProfile+Internal.h */; }; - 43D53A63A6745A1A21A201B36BC07974 /* PFPaymentTransactionObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = CA8AF7DF58F69854AA20C03B140C8802 /* PFPaymentTransactionObserver.m */; }; - 441148A00F86CF3ED1C359BC30D9802B /* FBSDKSharePhotoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 796C03163B04A83EF5A5417BD0C59CA0 /* FBSDKSharePhotoContent.h */; }; - 442868FA6C128D7763F07031469240DE /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71AB35520DC69025479E89EC80D0D204 /* CoreGraphics.framework */; }; - 443C1CF5A54599280435A5764BC7AD29 /* Parse.h in Headers */ = {isa = PBXBuildFile; fileRef = 942A952E1E39A725636E8BEF6FDDA9F9 /* Parse.h */; }; + 3F658F1814712CB2CA55F67CF852048A /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 879994DB9DEDD7064DD1B700F3FF8690 /* FBSDKConstants.h */; }; + 3FE71CD230D88EAD1B31C317695B466E /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = A43FA21715C3B6F62D38DAA843E6E28A /* AFPropertyListRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 402D95BB3E4B49C7E1DF15661C419498 /* FBSDKMessengerIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = ACB0039F3DE0903BD2479336BCB4AAF5 /* FBSDKMessengerIcon.m */; }; + 408F1B35F34DA7A3B64B32935531D02D /* FBSDKShareConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = D58E0BB2015D810A38A6E5641DCBDB8E /* FBSDKShareConstants.m */; }; + 40F9AB573C5837942460DA047E6127C4 /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C88718F1FAACE95C1F6DC1798456734 /* FBSDKErrorRecoveryAttempter.h */; }; + 42378B4C721065E6B0D901898104AE69 /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = B06587D0A22379F4450AB6A83497A7DA /* FBSDKIcon.m */; }; + 42CFF2A1DB5CD41505B76D81DDE5C106 /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 54BEF4E5D47F21E4FC7E996E4AE29C66 /* FBSDKPaymentObserver.h */; }; + 43019C013CEA899E11CFEBB8D60D87D2 /* PFNetworkCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = BDEB88DA6AF7347263BC6911DB8411FE /* PFNetworkCommand.h */; }; + 43A88B5ACE21230C0F2524DB074C8763 /* PFAnalytics_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F8035743B5B17155E2E7D8224603A87B /* PFAnalytics_Private.h */; }; 4443DA164C04807EF22B9E2FE3A40CEE /* TKEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 02B4ADB1ECAC920122E657AE18B10BFE /* TKEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 446BA59388843F27C4A3C3C28A81F12A /* PFAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = B8C98D684B355E8344D062BD7BF8315F /* PFAnalytics.h */; }; - 446CC1EE67B0B5F1F80B6FEA0F5A7ED0 /* FBSDKTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C5C8164C6C45E75534AA683EB3EE80B /* FBSDKTooltipView.m */; }; - 44D117C3BBC98D344847AC726EFAC590 /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D87F51C610B0FE64B3895D47FCAF2B6 /* FBSDKLogo.m */; }; - 44D58C838E846275EC8A27ECBF29DA9F /* PFObjectFileCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EB0814787ECF1B4820F7A3680530AC3 /* PFObjectFileCoder.h */; }; - 44E7B7009635960A4666322CC9C335A8 /* PFAnalyticsUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = CB2EAD42AB8183945FC7A12E3FAE1960 /* PFAnalyticsUtilities.h */; }; + 44711F7187AE62533F10CC3591F92646 /* PFURLSessionFileDownloadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 71EFAC4FE3DE4D635A34BD873A1302F5 /* PFURLSessionFileDownloadTaskDelegate.m */; }; + 44963F3C624EFA6C4A3259B1167EC1AD /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = A01032B0129DF076CF6B8F1997C4BA6F /* FBSDKKeychainStoreViaBundleID.h */; }; 44EEBB71B919C890EC133515DAADA53E /* SOCKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A98B34414903617DDCC4DD35D0ACC8 /* SOCKit.h */; }; - 4575524940A028F968811F18C428000F /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 42C79B025767C1D9A3147013CE056436 /* FBSDKGraphRequestDataAttachment.m */; }; - 46460A40566EB1CB1E4FB515B21AD4A2 /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 91D0862B2FAC5E1E4D6ACAB14BE40FD0 /* FBSDKTestUsersManager.m */; }; - 464F5DBB26E86201503ED7F5BB400525 /* FBSDKLoginTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = AEFD765B313DFFD0B0729C789E148EF3 /* FBSDKLoginTooltipView.h */; }; - 46BB12DCC0CAA3F0D2EFEE605A586F04 /* PFSessionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 99BAAC5484715BACEF4A330F55A4DCA0 /* PFSessionController.m */; }; - 474B4FE2195F0D3786209EF09EDA13BD /* PFPushController.m in Sources */ = {isa = PBXBuildFile; fileRef = D13A070075F2FA180B529D107DC47AA7 /* PFPushController.m */; }; - 477136AEEC963924B48D90D694471B15 /* PFSQLiteDatabase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D51A7F9937E1B2641CDCF758F76D7BB /* PFSQLiteDatabase_Private.h */; }; - 47FD83E4A59AD7BEBC4C334A10AE3124 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = 056454EF3FADBB01D32D7C28A920E5D6 /* FBSDKBridgeAPIProtocolWebV2.m */; }; - 4832276DBBFF9C8DA658EEED23908675 /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CBA80D14BCC38865278570CF75FD31B /* BFMeasurementEvent_Internal.h */; }; - 48D8E5B295450D8E1F726BB6AB4757F6 /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = E2590DB19BEB23E0CD50EA9B430C4328 /* BFMeasurementEvent.h */; }; - 48ECB9C2569B303EBABBDDDB3BE18152 /* FBSDKLoginManagerLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A56A201096D2EE5931E4024DA7419 /* FBSDKLoginManagerLogger.m */; }; - 492DCBE9081F45A8B617B971A5B76263 /* FBSDKShareOpenGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 14B70CCCA8DFFB7FFCA35AC2170FF307 /* FBSDKShareOpenGraphObject.m */; }; - 497CA357D4C9F558EC1A7F893BCF0DF0 /* PFSQLiteDatabaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = FF1FEA7B2F9CA31ED6080705A2EA6A8C /* PFSQLiteDatabaseController.h */; }; - 49B57E58230D81AEC7332255C98C3BF1 /* PFInstallationIdentifierStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 83C71B61CCF71858F87CFEBB94CFFB11 /* PFInstallationIdentifierStore.m */; }; - 49D87368E080534F2829BDFFFD26D68D /* PFMutableRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = BDDDC367C4FFD9B99B16C912DD808CBE /* PFMutableRelationState.m */; }; - 49EF6FAA143F4116D84703093AB0550F /* FBSDKShareOpenGraphContent.h in Headers */ = {isa = PBXBuildFile; fileRef = C53B22331817009F0D1E49A90BC5F35C /* FBSDKShareOpenGraphContent.h */; }; - 49F9B4E6A12B39F724C8BEA9F47429F0 /* PFPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 271F7EB07DABBEBBC72C435841D5B7B9 /* PFPin.m */; }; - 4B0728E23CBBDB6147793AD950A6863B /* FBSDKMessengerIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 1127B3C5AFB734B232FDDA51D4E340BE /* FBSDKMessengerIcon.m */; }; - 4BAED37A971E944FAA282D905CC0B69E /* PFPaymentTransactionObserver_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6949E72AFCB7848487C6B092E8E7CC63 /* PFPaymentTransactionObserver_Private.h */; }; + 452561965CF2A1AF6B261E3B86511A1A /* PFKeyValueCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 47BD5C685318CE8CD9CA1D43C28605B9 /* PFKeyValueCache_Private.h */; }; + 45A12AF03992E1460CE8A8F60E32BFB4 /* PFObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 31EB18FA1114A3D648354CA9461243B5 /* PFObject.m */; }; + 45AAE02BB82AA9DED26A85409DB656A6 /* PFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E102EFF955C784214778B35DA87ECEF /* PFNetworkActivityIndicatorManager.h */; }; + 4625C1214B5DB9343D91257A243125BC /* FBSDKSystemAccountStoreAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6474A77F06A843F81E145096D09D7711 /* FBSDKSystemAccountStoreAdapter.h */; }; + 46F3472C258501F3EB104F0CEFA49EAB /* PFFileController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B85AF138E6CEEDF8291F16978BAEAEC /* PFFileController.m */; }; + 4710D5B167AFEBA84243F46516E78202 /* PFObjectFileCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 53F32875FD8A66082F85E268CB4BC011 /* PFObjectFileCoder.m */; }; + 47260DBBF3AC80EBF7CB97A2F3EB322B /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B5D125F50E0B3A81028AB31CB76BF71 /* AFURLConnectionOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 476019024CC57A5B6C8E2D69E9EB636D /* PFRESTPushCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B83B68F2BA2D8926592978101024F709 /* PFRESTPushCommand.h */; }; + 479B013952E62955F632E5D881392901 /* PFRESTQueryCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 32369FE3517FE0DA85D6AC9113DFC4D4 /* PFRESTQueryCommand.m */; }; + 479E6787348037F3AB0BC2F71B64F8BA /* PFBaseState.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BA6D617D6C18C4F2260EB0CCC8EFBEA /* PFBaseState.m */; }; + 4858697360BC346D2A20761DC49285D2 /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EA7BE6071FB5DACC51089FB613BA39E /* FBSDKButton.h */; }; + 49183D48B7BA396016E94E50E7E508FC /* PFCommandCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A0F952DC35450695E4E710C00DA528 /* PFCommandCache_Private.h */; }; + 492225CAF7397433B1343717CEC233C2 /* PFPushPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F99B6F42887EE972402E88BB751D67A /* PFPushPrivate.h */; }; + 49DAA2044F870155F9BD5B0ECE15912A /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DE49CE008144B7919F76B3E247361EE /* FBSDKWebDialog.h */; }; + 49DFEEF3A4265D9B972B75025BF1EAB4 /* PFSessionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 916C1A84C0A37408A6F76D88348177DD /* PFSessionController.m */; }; + 49F3CD714650FD1C4A5B7388AADA6B34 /* PFURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 98A77CBFC3CB99CB7C20905C88715474 /* PFURLSession.h */; }; 4BEC5A582E14C9CAF7FF2064863B7C31 /* RKMappingTest.h in Headers */ = {isa = PBXBuildFile; fileRef = A67A7F1AF95165EBD3C0D8E0060DB526 /* RKMappingTest.h */; }; - 4C2EB05C82A1FA468ADAE73953ADCB07 /* PFCachedQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = D14ECFF1D93FDFE7D398C60C541D4D42 /* PFCachedQueryController.m */; }; - 4C33830BE3C170E4CB6375A78A271CC9 /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = 839CDF95C7EB745D855A1D1CD5E90C77 /* FBSDKWebDialogView.h */; }; 4C8EF69C1B7610ADC270ADF5C27A92E3 /* RKTestHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = D587648C0089A8E5FF455C97FF2B368E /* RKTestHelpers.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 4D1C9613370AE44FEF79C3C6AA5BBD20 /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CBCE8C9C024E2B9BFFE1FA847AB1076D /* FBSDKContainerViewController.m */; }; - 4E0D12CEB233090E07A3EC12601898E9 /* PFFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DD054F75FE35DC95593292D3F5E3384 /* PFFileState.m */; }; - 4E564D425B4E8F7E80F8FF529F31CC9B /* FBSDKLoginKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DBE3A827C4CAF42FAF19063819A6576 /* FBSDKLoginKit+Internal.h */; }; + 4CC36A73728C42160295B6C06F5C9E1F /* PFConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A603960FAC56B3596B29FEDBED2A1A /* PFConfig.m */; }; + 4D3AE09991081CE12C807E441C9D69E2 /* PFURLSessionCommandRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 25501EDA6B8396052C4721695FA27371 /* PFURLSessionCommandRunner.m */; }; + 4D46CDEAAFB03920B313BDBC2F235570 /* PFObjectEstimatedData.h in Headers */ = {isa = PBXBuildFile; fileRef = FE2ECE2F8FDD3511406B222FD89E37A5 /* PFObjectEstimatedData.h */; }; + 4DEC7B43535FE6D4218B12464ADF8D2C /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = C2D770ED2372F2017C6D6A85DD81705C /* FBSDKButton+Subclass.h */; }; 4E6EF8C32E62178152875A0EF231C225 /* RKObjectMappingMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EFB8D910130BB4CE5DC011047B4653B /* RKObjectMappingMatcher.h */; }; - 4F0980C558B7B9DA53CE0BD0B6B37226 /* PFDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FCEE0AD84EC6A5CA5478A717BEBA01 /* PFDecoder.m */; }; - 4F3F335C20656E97A48104D33B6AD423 /* PFDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = DA7FDF51B3213CFC74F679CD912F8009 /* PFDecoder.h */; }; - 4F743B762B11CF3C497E0FD4CBDD1441 /* PFURLSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CF2D6AC00B5B6213CA5BA66D3473AF9 /* PFURLSession_Private.h */; }; - 4F78698666F5DD22A6B8C251C8B4FFE6 /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7353118F412B2CA3124108B64BE5533C /* FBSDKProfilePictureView.m */; }; + 4E7C7673802993B2D1AFF71028EECB42 /* PFPaymentTransactionObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 46DE20F02F523C0B14736898D3E8BBAC /* PFPaymentTransactionObserver.h */; }; + 4EDD2C991964C1B9BFB9CB3677CB0B0D /* PFSQLiteDatabaseResult.h in Headers */ = {isa = PBXBuildFile; fileRef = B00106BF0B6579DD98D56C67BD575CF0 /* PFSQLiteDatabaseResult.h */; }; + 4F208E8A4607477BA09171C93F9D65F7 /* FBSDKShareButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B0E9CC89B4C9510C51F6F8388E25C21 /* FBSDKShareButton.h */; }; + 4F71A1E65C43A417915F279E8DE8F186 /* PFCategoryLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = B2B9FD0D9C17DD96730E88C3240D975F /* PFCategoryLoader.m */; }; + 4F9695BA0230FA6050195FF6147FDAF2 /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = E00DAE8196002E6DC11BB84AA2B653B0 /* FBSDKAppLinkResolver.m */; }; 4FBEA800074B2BCDC593781BACCE5269 /* RestKit.h in Headers */ = {isa = PBXBuildFile; fileRef = D68740C3275B619CD6272922B9616689 /* RestKit.h */; }; - 500A75B09A88C5CB9A8BCF236F9ADE5B /* PFUserState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 828E3502653848562DD0814140A92CCF /* PFUserState_Private.h */; }; - 507B7C7F3E30F50FF9BAE6C907ECE626 /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 502CF173BC61117E6EE98B0AECE5CB5F /* BFURL.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 4FC26ED4C9894736D998A022CE894DFC /* PFMutablePushState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FAACBCE52471750369D9FA0ECEAEEE1 /* PFMutablePushState.h */; }; + 5002F32A1D34B6240D1C30F38349AD06 /* PFSQLiteStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8341246DF5F52B15F7D490893290D3 /* PFSQLiteStatement.h */; }; + 50FD61393BDAF57A7C8828614E4C04EE /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 63AA0219BE65F798CB2F7604B4733571 /* FBSDKBridgeAPIResponse.h */; }; 512E2D4FEED38C66EC4923DBFB185CEF /* RKStringTokenizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 99CE24FEF0EA1F2943A8DFF00388C985 /* RKStringTokenizer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 5134DC1ED5C368631B703B48F3FA51FD /* FBSDKLikeBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = 94B2708249CC1A4C374BE0BE9A5C2161 /* FBSDKLikeBoxView.h */; }; - 51897443D225A1A7146CDD7EA9C07E89 /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = E15937F78BA7C53854BA468EA624BF4A /* FBSDKMutableCopying.h */; }; - 51CA3523EC5FB24F89754DB0488FE893 /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = EB1F007AC472787A75B816C5E983D202 /* FBSDKAccessTokenCache.m */; }; - 52493A2D9336CF921C2D109844F373CC /* FBSDKShareOpenGraphAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C1ADD04949F1ABA82756CBA171DA5EB /* FBSDKShareOpenGraphAction.m */; }; - 528A1E3338AEA0BA99B630E0376E73A9 /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D5B659F40540D61E87428BFCB17AF51 /* FBSDKDialogConfiguration.h */; }; - 52B61A08963CBBA0FB4C125E56151F0E /* PFCurrentInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = A8F0EEC1700298FC5555BA0A53F82E9D /* PFCurrentInstallationController.h */; }; + 51A265493014DED3E038034A805BC06B /* PFFileStagingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 992AFE5C5E747C1601862BCDAA0A7DD8 /* PFFileStagingController.m */; }; + 52D11AEE6C8D215ABB06624EB6260D37 /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = AEE98356256460D105F89B9C6DE23A69 /* FBSDKLogo.h */; }; + 52E6F3ADE5C66CCE50A4157FF354200D /* PFObjectSubclassInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = A4E495589FA749FBC303F264C9C6B80F /* PFObjectSubclassInfo.m */; }; 530C3054D34C5772D012A7791BEBD97B /* RKMappingResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 757FF14AABAC587C4E6F945A1E8D4472 /* RKMappingResult.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 535C072BDDE463B138751F6BA58018A4 /* PFMutablePushState.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BA13D9D4803FA88A8E6FC6E687D0706 /* PFMutablePushState.m */; }; - 5365C637C63F02E1973E66076518F5CB /* PFRESTQueryCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D2D7ECC712E5A988D37CECB9069F554 /* PFRESTQueryCommand.m */; }; 537DF62CE12445EB1DAD955A6C6ACC97 /* RKMapperOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DD2F082EFF4A90CEA1BD4B18821FD489 /* RKMapperOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 53DCFF27646D832B660564172ACF94DF /* ISO8601DateFormatterValueTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 76B3B4CCA7886CC75FFCF9656D10AD03 /* ISO8601DateFormatterValueTransformer.h */; }; - 548B9E86168DD8A2E659F23EC4F7A8A7 /* PFCommandResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A7CE6F0005C413065B0AE390477019B /* PFCommandResult.h */; }; - 54F855E7EE9AA06C6EBC3DD74EB75358 /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3C2F4799E92C0B65ADDB13C693731F /* FBSDKConstants.h */; }; - 54F88F11E5AE02A0FF195F47B85C9434 /* PFDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F103B2A584D088B481C2F591B22CB95 /* PFDateFormatter.m */; }; - 556EAD29F7AF6293692B8916CFDCF6AB /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 172810485903145DA5B543BCCDD9710D /* FBSDKServerConfigurationManager.m */; }; - 55794719E57DB7A1DF7B6754190815AC /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = B21B66CA9B865C30407C0033E5E77A5C /* UIImageView+AFNetworking.h */; }; + 539B79B777A580A748F4B8A186BCC8F5 /* FBSDKShareDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = DF42A50DA3169ABB374EFAA43DCFDE36 /* FBSDKShareDefines.h */; }; + 545122765F77D3F755A9520AB3028996 /* PFFileDataStream.m in Sources */ = {isa = PBXBuildFile; fileRef = EAA3AE48267B27C576513BFE574F8AF8 /* PFFileDataStream.m */; }; + 5491227F12C974B21D03C53DD7B996C6 /* FBSDKLikeObjectType.m in Sources */ = {isa = PBXBuildFile; fileRef = B6DC44432F551A7E862B5307DF7F040D /* FBSDKLikeObjectType.m */; }; + 54A388B33BFD7BEDB7310245AD9CAD4F /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = EEA9D6955C305B5F1B6C27161FE11070 /* FBSDKTypeUtility.h */; }; + 54F5313BCCE28B89592A59E8729474A6 /* PFUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 051170D8AB31E65A6185350F81C989F8 /* PFUserController.h */; }; + 550329AC1FE186EB5562C870B738D881 /* FBSDKLoginTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 60E9ACA9DCB6DFF036B60A0C51E4A5FF /* FBSDKLoginTooltipView.h */; }; + 554247D0CBC21F3D62833C441D61F642 /* FBSDKLikeButtonPopWAV.m in Sources */ = {isa = PBXBuildFile; fileRef = 8379929D10F949C09F2BE6851EC97373 /* FBSDKLikeButtonPopWAV.m */; }; 5587584620C8F74140437B4EAFDBD15E /* ObjectMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = D6264AE68EC2461B52D7BC087CC60C51 /* ObjectMapping.h */; }; - 55AF31B2E7E52507E13E3EE489CAB42F /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C8452D720D17A4AE9F49D703F4456F4 /* BFAppLink.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 55FFD3A79CC2E66E1F29049972C1CF0A /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EA7DD3F8E2A43DDC4BC7D78D495BE88 /* FBSDKTimeSpentData.m */; }; - 5613B583F78B27E46AA80D7B08593345 /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = E01BDF8B06C7ABC8B0E2C8198B12534E /* FBSDKKeychainStoreViaBundleID.m */; }; - 56363899CDB4F14B74BF72FCFB6AE93D /* FBSDKShareKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 875545166E1B56B37A2E9CEAE067A11D /* FBSDKShareKit+Internal.h */; }; - 569DC6FEB3DDA40D5164D32DA9586867 /* PFEventuallyQueue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ABF154F3CA9CA7655A27F36B3AFD46A /* PFEventuallyQueue_Private.h */; }; - 5705EC9203CFCFFF63B71242D0218340 /* PFRESTObjectBatchCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = E7D83C6103A3717409D4E3BC0251FEE2 /* PFRESTObjectBatchCommand.h */; }; - 584ACB2EF83394FF9A7483F2CF1D3F35 /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 42C4A6EF402B488E5D8EDE80F1F34D3B /* BFCancellationTokenSource.h */; }; - 589E7BF0D65495B04585FA32A0E8CEF0 /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = 506B72DC5629AC3D911C7391ADADB54E /* FBSDKAppEventsState.h */; }; - 58D1F31CBBC230379743A7DCD682B0DF /* PFReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 73923DB118610C08A35942208D9A3213 /* PFReachability.m */; }; - 5903553075A49047E0950C6E0A84D9B1 /* FBSDKLikeButton+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 57633529551BBEE1B15067746D4C1A0F /* FBSDKLikeButton+Internal.h */; }; - 59126DFA8930D70443CEE591F1758298 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B63B03172CDA0B6BED2BB6710B8DF38 /* AFNetworking.h */; }; - 59AE70B21BE3010125B5A4C289D581AE /* PFObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = AEFB5A16335CA052F7F8EF7BD6899979 /* PFObjectState.h */; }; + 5587DF8D7396BB77AECBE77910CB4DA8 /* PFTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = DFEE7E72D7CE52F1A712D597A33B153C /* PFTaskQueue.h */; }; + 55D4453F4098ED3D750DFADEC86A8A3A /* PFTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DD477EE3462803C03920D7EA94FCFF8 /* PFTaskQueue.m */; }; + 55DD89F9A164C6F15D3A0254F67CCFC6 /* PFGeoPointPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 37FB4F3FA6D54D38DE79356A63834230 /* PFGeoPointPrivate.h */; }; + 55F91C3F499DE45EA5B5AB3E27DEE170 /* FBSDKAccessTokenCacheV3.m in Sources */ = {isa = PBXBuildFile; fileRef = C652B9BA4AA5750AC29A27FB796AF725 /* FBSDKAccessTokenCacheV3.m */; }; + 55FAFAB3178952EB789197F3BD7F1EB6 /* PFOfflineQueryLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = D98AA728E2CAF01488250F97004A36A8 /* PFOfflineQueryLogic.h */; }; + 56B354AF9311CAA6CF3E4859B477862D /* PFUserPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D6ED3A53A136BCE4843E32025C76ED9 /* PFUserPrivate.h */; }; + 56CA6CD50DF1F5886E48D96A2D18186C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 56DDC808EA95231C01E95F82452FED13 /* FBSDKAppGroupContent.m in Sources */ = {isa = PBXBuildFile; fileRef = D155C2F3D678574A9479B645207148FB /* FBSDKAppGroupContent.m */; }; + 56E7498A46584C6C8109EAB46069D26D /* PFObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CCED09AA914A9CA2759E1F53B53226E /* PFObjectUtilities.m */; }; + 5726C95C5F7CC6A9F5A4315F05A7705C /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = B8D4E64BEFC88B60711EE57C1834C5F8 /* FBSDKErrorRecoveryAttempter.m */; }; + 573AB04F28243AFEA4E6460438D3A935 /* FBSDKLikeBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 00C31AE91F93FAC03797A08CB87C7EB4 /* FBSDKLikeBoxView.m */; }; + 582CE335157F67A7AC9C4F948C7BFBCB /* PFMutablePushState.m in Sources */ = {isa = PBXBuildFile; fileRef = 047273E0F6F9E9889E073EE49F2755C4 /* PFMutablePushState.m */; }; + 58A6BF39F429E731177F766F2747CCA4 /* PFInternalUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = CFF2742C181ACA4B29372E268153270F /* PFInternalUtils.h */; }; + 590737A2A29757D9B56910E182CE61E0 /* FBSDKAccessTokenCacheV3_21.h in Headers */ = {isa = PBXBuildFile; fileRef = 609E48B1FF82F30564A193C81AB2A1B5 /* FBSDKAccessTokenCacheV3_21.h */; }; + 591C4201A7B3C6EC8D826BBB1D1D5E26 /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B828DC073409B28F4FD2BAE7E834D87 /* FBSDKProfile+Internal.h */; }; + 594D9565A6631A0B899B1388B8E91492 /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = B37E9B2C0FC3DA2D2D135ED6BFBFCDD0 /* FBSDKTriStateBOOL.h */; }; 59F177028361FDDB97A781AAE29E9B82 /* RKRoute.m in Sources */ = {isa = PBXBuildFile; fileRef = CDABF5602F0E0D707DDD4224CB032D0E /* RKRoute.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; 59F4057F341FE5BAF86C9ED8FFEF7964 /* RKLumberjackLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 81C8A7F71F4AB5ED22FA83E37837CA80 /* RKLumberjackLogger.h */; }; + 59FCCEC297EE635331865784CB7C5FA7 /* PFFieldOperationDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = F3E2913672AE575B7293488062F00FD0 /* PFFieldOperationDecoder.h */; }; + 5A7ED655237DCFEE5E211AAED71DD267 /* PFSessionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = CB8C8762838FD01094119D687898F1B3 /* PFSessionUtilities.m */; }; 5ABFF30DE688A485DC7D42DC3D152083 /* RKConnectionTestExpectation.h in Headers */ = {isa = PBXBuildFile; fileRef = 85C3C7141AE8131AC8868EF3F853AD3A /* RKConnectionTestExpectation.h */; }; + 5AC8E19A51D9F4860F4944BAE0DAEC96 /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F79510BB12DF693E6899A336B944ACA /* FBSDKSettings.h */; }; 5AD718CF19228CE250EE9C5942ED28FB /* RKHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B31ADE78BF2D9A37DCAF22E2F0D53AC /* RKHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 5B5C0205B731E56B6A725E13CA098243 /* PFFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4258F79C649680EAAA4724050C5400A2 /* PFFileState.h */; }; - 5BD0E9128E6F8FE37C92C8C77F11425F /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 82F4B771C010B07B8269F863B9D5E124 /* FBSDKIcon.h */; }; - 5C9809AF07DD032F9FD021A863E7C136 /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 90EF6645B1C52A9102DE489C1AEB98C0 /* FBSDKButton.m */; }; - 5CC98BA3E4146174EB3FBC5D20DC1CE5 /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BCD6FD3DADE66AF00AD766F8C7CAAEE /* BFAppLinkReturnToRefererView.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 5D4398B1A4E91318D99351BFA35100D2 /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 09F505C5912DBB85A144A4BB9A39B321 /* AFJSONRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 5D7131C252349A6120D8813EB747D742 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5243AD5D9D864456CBD961BC945843F /* SystemConfiguration.framework */; }; + 5B08DE41E6A3A50C09C167F05DF8F50A /* PFInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CE46AC0E13A1092344C773AC969D749 /* PFInstallationController.h */; }; + 5B57FAB57B310D17F2EA7D85A7227C23 /* PFFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D91308BAD322ECAA4960D4D23C9A2C3 /* PFFile.m */; }; + 5B72DFD5FC0ECD42B595D7DF8797EFD6 /* FBSDKLoginKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C40CADC5F2DEB4D0282F02F7FDF18EF0 /* FBSDKLoginKit-dummy.m */; }; + 5B982F856921827D002F7C5CCE73DDAA /* PFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 874C68CE36C22FDD95A27779257F15A1 /* PFObject.h */; }; + 5CA15F5F3A0EFA7A94D7110E3F1F8137 /* PFPropertyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 85A34FD1B37C88CFB5EFD0D8E6DD8071 /* PFPropertyInfo.h */; }; + 5CE49091B82B4C91FFE7BB7ECB3EF5FF /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = F86C3277131832CC3F71CEDEA893D4D6 /* BFAppLinkTarget.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5CFBEC31582E7093D61B791E3D6A89CE /* FBSDKAppGroupAddDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A369AE523AE5428A6D9F6550614FE9D /* FBSDKAppGroupAddDialog.h */; }; + 5D00DCC382EA0FE45A4A915033BBD326 /* PFRelation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2423DAEF9BB294E6E266E9CC7E5F196D /* PFRelation.m */; }; + 5D0FE10AAE4A7D55349612B668EC5BD3 /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 308B85DD48F9A76C1D714CB80189B6E1 /* FBSDKUIUtility.h */; }; 5DA9A28E3169B2A7B8A809BAAD3E86C8 /* RKRelationshipMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = AD6755DF1120CF7F9CE51A66D317FC9F /* RKRelationshipMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 5E84BECEB0443C8B9B3FD0B994EDAEA5 /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = E331A609413384712D37CBCA13A36822 /* FBSDKCloseIcon.m */; }; - 5F0ACB3F15BC23105DBC60FA6F67CCF3 /* PFUserConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 857A31726A217BC7AAB96D91A7951102 /* PFUserConstants.m */; }; - 5F81AF91BD80BAB47165BEA17CA38ACF /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FBEBBBD069AC4F0A63136014F0C9C54 /* FBSDKGraphRequestPiggybackManager.m */; }; - 5F8207F4644833736B306F1F57A1CC08 /* PFKeyValueCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6532B39D03DA6402CDE0AF5FAA88CB85 /* PFKeyValueCache_Private.h */; }; - 5FE0DCADFDD3F32A59E544CF98BBA273 /* PFRESTSessionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = FB33D66AAC9C445AC92D82EBA294DB85 /* PFRESTSessionCommand.h */; }; - 6090EF83E9D0597E4EAA8A2A3E551181 /* BFCancellationTokenRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FCD65509A86CB6A3CBDE7E5FCB1384A /* BFCancellationTokenRegistration.h */; }; - 60B56FC16B23506CC79857255E8F43F7 /* PFURLSessionJSONDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 82DAD225DA2EF99D509E1DCD251CF1E0 /* PFURLSessionJSONDataTaskDelegate.h */; }; - 60CEA0885C29CCA93BF6358AD042F3FA /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = FAE0A480CEB462BDB4902AA2752B2A92 /* FBSDKAudioResourceLoader.h */; }; + 5E18C27CBCF0F5DBBC749F0C5609544C /* PFDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = C4F10ABEFA5CCF0EC39AA05DC7FCBE4A /* PFDateFormatter.h */; }; + 5E456DF19F8ECEC61FF4D1C3E7AC0278 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB19BCF4582BF9F10ABA1C43D14ED9A /* FBSDKLogger.m */; }; + 5E5C21A949A6A420773112D9DA4D08A9 /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = E016C3CC11A1E2541450703DF5F4DBA9 /* BFCancellationTokenRegistration.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5EE125E8B7346490F3E3FFF8A69B2845 /* PFObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FBFA3525F472811286DDE3A9248666E /* PFObjectUtilities.h */; }; + 5F4B09393C8220183CE1E6DAC0BE9C74 /* RKISO8601DateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8700D74C7E8322F5645810F5DBA692B1 /* RKISO8601DateFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5FAA4777EA70E15098063A2B1B314915 /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B68D5F4D24A36ACF45400FAB8AB23DE /* FBSDKGameRequestFrictionlessRecipientCache.m */; }; + 5FBCE36A6D25A4B44E4C0C9C6EB06093 /* FBSDKLikeActionControllerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B921F27786A108BF382F49799F4ECEFE /* FBSDKLikeActionControllerCache.m */; }; + 604439374F250448FC99A0F77B4CE15F /* PFCurrentInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E09472B01CB2E27BD636136A0066956 /* PFCurrentInstallationController.m */; }; + 60646FC6222FE516DCD6BFA761C57A54 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 52120DE46E6C7C888694B8D9A3F4DEC6 /* UIImageView+AFNetworking.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 60A6E403AFC9A0BA34A1924ED46E7661 /* PFPushState.m in Sources */ = {isa = PBXBuildFile; fileRef = A92BD29643970DCB9C0745A0406AD053 /* PFPushState.m */; }; + 60C5A2D3BE63055B71F68F64563474D0 /* PFDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = FACB310E0E9E78B498E89B7F93B98CBF /* PFDevice.m */; }; 60F38A25DFDB6310A8E294B230FE8B6B /* RKRequestDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = C5BAEE02437FF882C669F3417F738447 /* RKRequestDescriptor.h */; }; - 611039D2BE3210BC332D787307D5DD21 /* PFCoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D95D996872847740808B245E124F33D4 /* PFCoreManager.m */; }; + 612C5CF45F7C8EC9139258A6F1B23DE6 /* PFURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = EFC389DF1344C08739BE3B0D8561FC86 /* PFURLSession.m */; }; 6133962C287FD9B396459F292C4CA3E2 /* RKObjectManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E94E46525AFB5C84058140D261543E17 /* RKObjectManager.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 6155D01C8B51697111A08412A9A15D81 /* BFAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 197B3FB536BC0102E5F4615D92F57286 /* BFAppLinkNavigation.h */; }; 6176AD2985531B49564230661B07EE33 /* RKDictionaryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = D72FC75ED7ED1ECBB9A34AC1705CE17D /* RKDictionaryUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 621B1B7D0F592DB1DD7961731C2EC9AA /* PFAnalytics.m in Sources */ = {isa = PBXBuildFile; fileRef = C2050A5F83DE9760D514859F3A7AC930 /* PFAnalytics.m */; }; + 61870EAC96BBBA435263587CC7F2E48F /* PFObjectFileCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = DD24927EB5C08D76DB2607695C173E2E /* PFObjectFileCoder.h */; }; + 619EC62BA7570655A32E0FD9DE0B81DB /* FBSDKLoginCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = C098C23FB2DF99933279373E8B3D452E /* FBSDKLoginCompletion.h */; }; + 61D3D1A601A46800EC2C2F1BC8AEE2B9 /* PFPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 282B79F0BE2F4372C754A93C4D8D6B3F /* PFPin.m */; }; + 6208EB35E2A3EF808B1C66D4D64C5DF0 /* PFLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 56E54211A06B3807A9F27AD7BEB6DA7C /* PFLogging.h */; }; + 62302556F6AC2F7B62A1E2C3C770FAFB /* PFDefaultACLController.m in Sources */ = {isa = PBXBuildFile; fileRef = FD44A295575FA6E021F34AF62C1FBB39 /* PFDefaultACLController.m */; }; + 625C91C53680F09517E0DC0872450374 /* PFLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = BE7E9FEA0A48E20BEAFE0E04D46D0913 /* PFLogger.m */; }; 6274057AA5C456BF9DBCC15ED39BDF7D /* Testing.h in Headers */ = {isa = PBXBuildFile; fileRef = 778D4E4A3B190B10F0AEFE08CC88F279 /* Testing.h */; }; - 6282DAB78EB9EF693393423B89E303A5 /* FBSDKShareVideoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D324B0F0C1603B017A0A195535F6737 /* FBSDKShareVideoContent.m */; }; - 62AC03AAA3E1A91085682875387057F0 /* BFTask+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EF991FB054D4075F98BB9A0E7C563C58 /* BFTask+Private.h */; }; - 6368AB2E120D6F8FC48F58970DFF6766 /* FBSDKShareOpenGraphAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 26E851E7927031416617D440DC5A8D91 /* FBSDKShareOpenGraphAction.h */; }; - 63F64CEFFA730AB5E3433162A7AE3C1A /* FBSDKLiking.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BFF0A5FD4D4F15BC52A5CF35AA8BD33 /* FBSDKLiking.h */; }; - 643204253D2ED23DBD900DC6DCC12556 /* PFURLSessionCommandRunner_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E89B0E24A3183435D4E3C9EDCC51EDD1 /* PFURLSessionCommandRunner_Private.h */; }; - 64786C3E2471FFB18C54491B958F6A30 /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 4312B7DA20D0FDC68E026677B16FB93B /* FBSDKAppEventsUtility.h */; }; - 64B6FCD7B4520F2588FEE0287247349A /* PFPropertyInfo_Runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EEFB0F3823FCEF4E5F3012C82EF7AB2 /* PFPropertyInfo_Runtime.h */; }; - 64C6C42AFFA02CC4E53836226E5C4219 /* PFConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CB667B15CA6726CE1EA77BBAC4BC7FD /* PFConstants.m */; }; - 65471025DA624297CC0E4AFA9F0A9606 /* FBSDKLoginCompletion+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AC358011ABD9D6C4C840D2F2EAA419 /* FBSDKLoginCompletion+Internal.h */; }; + 629C5E37F422AEAECF2125E1B8954DFA /* FBSDKLikeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 31A09CE6942D32E70D7AF420C0C28F98 /* FBSDKLikeDialog.m */; }; + 62F4B91A78FCE3413CBAC127D5151E2B /* PFObjectSubclassingController.h in Headers */ = {isa = PBXBuildFile; fileRef = CD8B46F21FA110AF5880D0648641BA7A /* PFObjectSubclassingController.h */; }; + 6309045AC92213B2E323792E8F779257 /* PFRESTObjectCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 5242A7AC90141AACB238B67ACEC33ED0 /* PFRESTObjectCommand.h */; }; + 638303B9767AD6CFA4EDD3CC9D438888 /* Bolts-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B76E48E1FD54E0BBE64291059DD0428 /* Bolts-dummy.m */; }; + 64027533F0F5F5E3D76E19A91E7C979A /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 83EED38CF3D996DFEA263619B0B9CBD1 /* FBSDKApplicationDelegate.h */; }; 655154BFD72359BFDA301C638AEB234A /* RKTestConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 55C9501B071548071B0C87CDA9D032F8 /* RKTestConstants.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; 655A0B669A924B4AE31129D70784FB93 /* RKMIMETypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 52EBAC1E14508349697276F8E0C80479 /* RKMIMETypes.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 65C5B97B362C88A9C677573B3D03B693 /* PFGeoPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B10539AD7B65940ECDF70BE96FD7FE9 /* PFGeoPoint.h */; }; - 65F55F45327059D9F88AF2CCFF2BC61F /* FBSDKAccessTokenCacheV3_21.m in Sources */ = {isa = PBXBuildFile; fileRef = BB1463FA77383563F1C437523A44E1A7 /* FBSDKAccessTokenCacheV3_21.m */; }; + 656200477A7F591FCCCC7D6B74802BB9 /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = D069FE63005F6068C36B6B3E8C125E9D /* FBSDKUtility.h */; }; + 6564EACD1F229AC7C76D64958FD2084E /* BFAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5C6C0CB488B2B5EB58A44CB5006846 /* BFAppLinkReturnToRefererController.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 65B86E6A3D00FEE70CBCE039AD72DE43 /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 69DE218A0D590D2C3678DE52CDFAA862 /* FBSDKErrorConfiguration.h */; }; + 65BA644D4E07A43524D0B5B38DAEFF0A /* PFFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2554B79C64ECEFCFEE123612E3C5F6CA /* PFFileManager.m */; }; + 66060F4E52A075B9EF3ED69EAF8C4812 /* PFPaymentTransactionObserver_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CB354A886C3BB7D67D39EB3F5236AB3A /* PFPaymentTransactionObserver_Private.h */; }; 6630D0D212E7B8AE5D69DEBC4909AAF5 /* RKManagedObjectRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = EC0A8BE947E2CBB52F80DE18D474CE39 /* RKManagedObjectRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 66B00B5F004324612C1724CE19F19752 /* PFMutableQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = 986A0B2FB090467DD63D523D111D637B /* PFMutableQueryState.m */; }; - 66BB85211EFD612B854906B7996059FA /* PFJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E6A5B35F3A36DB58FE56540BA6EEDBE /* PFJSONSerialization.m */; }; - 680644EF47F01A73A7365AAB594B867F /* PFDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 3911B9D2BBD5CBF1337C009F5F541534 /* PFDevice.h */; }; - 684A5251290479C9ACDB4475F2940FC0 /* FBSDKLikeButtonPopWAV.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AF33E0422D0D6894776A47D9A815993 /* FBSDKLikeButtonPopWAV.m */; }; - 684FB04B26908341179D771F44CE924A /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A37F6B69937BDBBB1A609C50E20359F /* FBSDKUtility.m */; }; - 686756C4CEC0B00FB743AF14B40E8682 /* PFHTTPURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8438C8930C259D5374088068EDEF11A2 /* PFHTTPURLRequestConstructor.m */; }; - 6869D7F49C98AACB83CD2D8941B5024F /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3367B0B681D943417FA5E440D899F4CC /* FBSDKAppEventsStateManager.m */; }; - 68E70C026EDCB8239875BEA879AAC286 /* PFPropertyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AFF4BBCD87A80EBBD6ABEB24467DD92 /* PFPropertyInfo.m */; }; - 690EE192DCB7F5FD1C72C0A7630D3230 /* PFPushState.h in Headers */ = {isa = PBXBuildFile; fileRef = E4A2A7B215D83EE4A1A7A17F363D6C87 /* PFPushState.h */; }; - 697A7506A45ABEB2E388ADA4C925840C /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = D4EDDE3B74C6C46CB945C40C67C4412A /* FBSDKErrorRecoveryConfiguration.h */; }; - 69809238B0561FABDE611AF677BCA475 /* PFLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 895926AE9851CE1F765F43CBEEDBAFBC /* PFLogger.m */; }; + 664BAAE15CB37598495A1B056695A4C6 /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = DC48544F9CAD4D07227D206EF611973D /* BFURL_Internal.h */; }; + 66F43085D42ED2365237DCA34897DADF /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 277CDEE8DFC2D7DBE20B8F1E0A377FC4 /* FBSDKTestUsersManager.h */; }; + 67891D5D94391676B0DA81592B29101C /* PFSQLiteDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BD061E291C8DA3E18934FCF5E92DC81 /* PFSQLiteDatabase.h */; }; + 67B5CAAE671A5C8A9B817CE3699AF6E3 /* PFFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E39DE60706FCD15CB26738B50295DCD8 /* PFFileManager.h */; }; + 67F70F417D99AB2BD60DC04C04993945 /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = EE1FCC8E5B8DC53DA187352C0FEF6F6D /* FBSDKServerConfigurationManager+Internal.h */; }; + 682E4A7F65C613EF767604374D7A4639 /* PFAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = A3D3B2AE6543B11628B3FD5B32D9E786 /* PFAlertView.m */; }; + 684F6D48516C29D70B837257203CB999 /* PFMulticastDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = EA90B11F9419C1CFB642C076EE6CCA4E /* PFMulticastDelegate.h */; }; + 686D001D6513106185D9F01DB6478979 /* PFAsyncTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 29EE40865F4426262E949C4C302BF226 /* PFAsyncTaskQueue.h */; }; + 69115D83A54F36A4D1BBCC573633632A /* FBSDKLoginManagerLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 48D467EF578B57E2381B95690763CFA8 /* FBSDKLoginManagerLogger.h */; }; + 6919E252E16FC787AD1D9B56375F7011 /* PFPropertyInfo_Runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 9866CB182F7690789F1CE9AC2C89303E /* PFPropertyInfo_Runtime.h */; }; + 6937F426816B16FCD4C8859174159C7E /* PFPropertyInfo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EFF22BC9B76855DF9E2359F492E11A4 /* PFPropertyInfo_Private.h */; }; + 6950392D69B8C200487A284BA5B8D0B3 /* PFRESTAnalyticsCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B3693A56CF492DA3BDAEDDBDA46ADC5D /* PFRESTAnalyticsCommand.h */; }; 69A9A1FBEE8290A0146EC75F9958ACBE /* RKAttributeMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 49EA15DA07E51D9C44D29EF7BFB6F1E2 /* RKAttributeMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 6A5CA197C96A6CC6EE167A495A05B09F /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B1C44F7812C72D0C7AF70AF7E3582BA /* AFPropertyListRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 6AA162E7D86F127BA1A7945A64AA0981 /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 12DB62145E101EECBBF2B0ECBD3625D6 /* FBSDKInternalUtility.m */; }; + 69D20734E1F34055E468363CDA1F14A6 /* PFSessionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E82461A10900C11141F5132C28A7C0B /* PFSessionUtilities.h */; }; + 6A537578E971062D1471E30CAB354803 /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F96B01B6AD0F525E17F2074B2EA1EB1 /* FBSDKGraphRequestBody.m */; }; + 6A7C7334A9A8FCAE1C9E5992882D056E /* PFCategoryLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = CEC4CC0F1E5231E5AE5C1E4101E7CD5F /* PFCategoryLoader.h */; }; + 6A7F2C2C80852EBF6A620AF12E900D24 /* PFObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E8914751B900AC4DEF771BDEB8FE816 /* PFObjectState.h */; }; 6AF334EF4BBC6A6FD3346EA40D5CA725 /* RKObjectMappingOperationDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7143CA35B7DBC71915BDD3C8FFA6F17B /* RKObjectMappingOperationDataSource.h */; }; - 6B49C041DD1CA69CEE38844A46FC981E /* FBSDKLoginConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = F86021BC8DF5012821F54BBFC611409E /* FBSDKLoginConstants.h */; }; - 6B963CD2BF2D0F02D03CD5F67CC0F05B /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C11C508533F23B09A4472C54933C508 /* FBSDKSettings.h */; }; - 6B998B80ABD013DEB4D37A0DF9BB29D2 /* FBSDKShareAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F5B4BDBF3900CA5DDAB9B63E2EE063C /* FBSDKShareAPI.h */; }; - 6BE2110CA4CBCE143965789B832BA330 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 6C4BDAB5F2BED6A17CF575686DA25BAB /* PFDefaultACLController.h in Headers */ = {isa = PBXBuildFile; fileRef = D769A22F6A1292EAFD89F93A0686D653 /* PFDefaultACLController.h */; }; - 6C4D644320BDE1BC6A397D502701163F /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B96A479BB821E005E1541AE443F5296 /* FBSDKProfile.m */; }; - 6C8B8CB55A10C85B31BF0B735C30E0B1 /* PFMulticastDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D78F45D0B07841FAAA5A3283859049 /* PFMulticastDelegate.h */; }; - 6DE52973839454F2DE410A85A425CDCE /* PFAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F0CAB54CFC8BCC345F4138A1EC4D771 /* PFAlertView.m */; }; - 6DE851C2AAF88503F245F250A5351AAE /* PFAnalyticsController.h in Headers */ = {isa = PBXBuildFile; fileRef = EFC051FCD89B2186BB961E6FB8B61530 /* PFAnalyticsController.h */; }; - 6DFA75B508E7E9072ED9E07A19191C5D /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E541C23946CA00EF697F8FA44AB271F6 /* Security.framework */; }; - 6E70C3CB52C461296A5B3187273D7C33 /* FBSDKShareDialogMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F9AAC2C6FF818D6EC48169DC75AF8C0 /* FBSDKShareDialogMode.m */; }; - 6E7DC3D8EDD49882956585EDB0A9C13F /* FBSDKShareOpenGraphValueContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = BADE0370EA2CCD1D36599137E9D79FB3 /* FBSDKShareOpenGraphValueContainer.m */; }; - 6F11DA82F7AF6C9C4BB737C602C973F9 /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AD287C54F7CB5375C2852F3503334A8 /* FBSDKGraphRequest.h */; }; + 6B34BA82691D0C8A7B4F32640D876F94 /* PFURLSessionCommandRunner_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 614A361C74DFD5A28DB5A4DBFAD80EAF /* PFURLSessionCommandRunner_Private.h */; }; + 6B9C6C5B8151AF0FFE0EADD023048BE5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 6BB51C3B2AEE77DE18DCF03B3176F68A /* ParseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AD0F8B79E3BDC24EF65F9BA34E2F1983 /* ParseManager.m */; }; + 6BE26C31629E37691C2026D34EF5FC1F /* FBSDKLikeBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = ADF8EC9446037AA127D75EE89650002F /* FBSDKLikeBoxView.h */; }; + 6C13D116F0AA2A78C4B546E3E0728D09 /* AFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = A3D86DE4F1B3EFCBA205A592DA3CCEFE /* AFURLConnectionOperation.h */; }; + 6C9905FED4C58879E1188A49CC03EC9B /* FBSDKLoginButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 9494BB00014D0192A01360063AA70BE0 /* FBSDKLoginButton.h */; }; + 6C9D7C55CB78713CFBEFB8F6823936DE /* FBSDKShareError.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BF25C2B0ED8E85EC0D52225FEAAF054 /* FBSDKShareError.h */; }; + 6D0555F3AFF71C16C54E98092E4304D3 /* PFACLPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 661148537E08B421366ECAD30B9523D7 /* PFACLPrivate.h */; }; + 6D4838695D90508DA37AFB4E8CEC4EF0 /* PFObjectBatchController.m in Sources */ = {isa = PBXBuildFile; fileRef = AF32577C470A14D1ED63BB4B6492F464 /* PFObjectBatchController.m */; }; + 6D4887AE8E844C608EED1EC8656610E5 /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = B2853B351DB05A9B0740AF256122A30E /* FBSDKBridgeAPIProtocolNativeV1.m */; }; + 6D61146E37009E249059A2813517FFD9 /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B538AE03EC7635223FC2B7353D18B63 /* FBSDKError.h */; }; + 6D82BD254178B3C9EECC246D810632E9 /* PFRESTCommand_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 5698E0F3BFBACA4A2F463DD697916F16 /* PFRESTCommand_Private.h */; }; + 6D8BC7410B446B1A8366CC22E0E1079B /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = F468CD8A34AFAA3F31C0B27B7124A4FF /* FBSDKProfilePictureView.h */; }; + 6DF393B100C28657E21257B71F6D7DB1 /* FBSDKShareOpenGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = CD8DCF741100D5A960D3D87F3F11EC5B /* FBSDKShareOpenGraphObject.m */; }; + 6E3BD44E7ACAEC339555B558F5E9E6F2 /* PFRESTConfigCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 06CCF32425B76D2DCB319BACF4D3874B /* PFRESTConfigCommand.m */; }; + 6E74859E6E9AE4DE6D8C2137C731DA7E /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 27000997EDF8B991F4B6E05E67C67113 /* FBSDKGraphRequestConnection.h */; }; + 6F05C7C3A58618ADF1E7C6672414D524 /* PFAnalytics.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BBF841A16205C45B1396307D83A7373 /* PFAnalytics.m */; }; + 6F322C51FD0B96990A4EE44BBA6275CA /* BoltsVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2F968FC5E9ACF4AC754AB79F42241F /* BoltsVersion.h */; }; 6F538A8D204627652A295F762C5F1FC5 /* Support.h in Headers */ = {isa = PBXBuildFile; fileRef = 243B9EEDBFD73BC0E48417E798EB7D49 /* Support.h */; }; - 6F7AEB8231ADCAD9FC73D5392A7529A2 /* FBSDKAccessTokenCacheV4.m in Sources */ = {isa = PBXBuildFile; fileRef = 551D1565F536116924C965E8BC843AEC /* FBSDKAccessTokenCacheV4.m */; }; + 6FAE65259A4C6DE098E364FB6A55FCB5 /* PFRelationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3661FB21F4391073E8AAC82B6B840E75 /* PFRelationPrivate.h */; }; 6FC52428542CBDD5AA17FD45E3EE5AA0 /* RKRouteSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 341EA091B57F44C4DE7AEFBD627D722D /* RKRouteSet.h */; }; - 6FCB36E2C0955F23A84EA23D75EC8F8F /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = B9DD727DB3D3919B717CCB2FAE4F0055 /* FBSDKBase64.h */; }; - 7034BA3B00EECFA6B092EDF9E296DF2F /* Parse_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D17108F7FF6F90BEA80F4639A3F398E4 /* Parse_Private.h */; }; + 7007DB3DFD0438A84AB08C841722E049 /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = 859C15C373D18E927177F1CA54850FFA /* BFAppLinkReturnToRefererController.h */; }; + 7023F33F30099D075DB99C2AD2DA1289 /* PFCurrentInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 02EDCF1DE69B8C5E506B9C40F67F083F /* PFCurrentInstallationController.h */; }; + 703F8255C8F3F10319E008C37F524F3B /* ParseModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F92059D97E5483DFD850AA95FFE5562 /* ParseModule.h */; }; 70531F77925054688B5A2863B2209C32 /* RKPaginator.m in Sources */ = {isa = PBXBuildFile; fileRef = CAAEEA7D83368AA927E7EBCBA6F4E80E /* RKPaginator.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 70B06200154E453E2F8B8452DC00F355 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71AB35520DC69025479E89EC80D0D204 /* CoreGraphics.framework */; }; 70B6B8575F6F54B1324C1457BEB8BD05 /* RKSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EB160597E8E862ED9A4D2CDE6C5ECBB /* RKSerialization.h */; }; - 711457D4A4EBE9E4AE7F0F81B9137929 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = 677452C3A3BE7F10BDD609C3AF5DA93A /* Bolts.h */; }; - 714BE1AC2526B3BC1562109C08F4A495 /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = 88B6008DB095748E5DD60D4357F1130E /* FBSDKGraphRequestBody.h */; }; - 714C65274187114E32C9796DB3A2EB68 /* PFFileController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CB9E435A8D7599B6B0049E6AFE5304E /* PFFileController.h */; }; + 70E8E54EF340AE0D3D75A21AA31A37F0 /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CF14FE1AA01684F58CFF8617EC29EC7 /* FBSDKAccessTokenCaching.h */; }; + 712A6B5A32B445FE62502B2513745730 /* PFUserAuthenticationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = A083AB389EBB61C1E3AC66B85D0485EE /* PFUserAuthenticationDelegate.h */; }; + 71361F3DBB8A7FAD8040363913431A70 /* PFRESTObjectCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 6144F78DC1C2B2F8A260C15A0B7148BA /* PFRESTObjectCommand.m */; }; + 714FFA7F7570576D0CC3AB2471C2BBF9 /* PFWeakValue.h in Headers */ = {isa = PBXBuildFile; fileRef = FDF7CFCA28382A3A70269FF452DAF6DF /* PFWeakValue.h */; }; 7155F162641F1D6675833714D700B403 /* RKObjectMappingMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 635550F96E6CB4B30D674CA6B3D59AAA /* RKObjectMappingMatcher.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 72207B02452AB0EDDF0FE5AC43B794DF /* FBSDKLoginTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9EBC7480ED94D3BDC49F07CF67845245 /* FBSDKLoginTooltipView.m */; }; - 724481CBB3913C75C37AA3B614532854 /* FBSDKSystemAccountStoreAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 520097C3241654D444726517A1906AD9 /* FBSDKSystemAccountStoreAdapter.h */; }; + 718B74711D901C679047E8E33676F378 /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D80E9A1290BCA30333F7035E22898FD4 /* BFMeasurementEvent.h */; }; + 71952ADC9172B4F79B433C367D5BB740 /* AFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EB0F987B2BFAD674CC1392DB885D94A /* AFHTTPRequestOperation.h */; }; + 71FDAA355554DC3828CB576F2053B15D /* PFObjectFilePersistenceController.h in Headers */ = {isa = PBXBuildFile; fileRef = F9D538F104DE1F531CF0C5A8DAA4E04B /* PFObjectFilePersistenceController.h */; }; + 724E7035BD3905FFA72B386599CE0F3B /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = 983296A9BF9A0D8836E833993EB26598 /* FBSDKLogo.m */; }; + 72FE90A10832697092610577418DDCFD /* PFDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = E09085454F042573BE0A1BCBEF8DAE7A /* PFDataProvider.h */; }; + 73207F1C397A877B01B1F68FF5D8310B /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = 93400D2B380DA1CACA54DEAAFAE23D12 /* FBSDKGraphRequestBody.h */; }; + 735F99AE8538E282317F759241D24669 /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = D8EA6434D262B562E0ABC8F28481403A /* FBSDKAppEventsDeviceInfo.h */; }; + 73C1B903BAB9CD9165C6D8C590C88DBC /* BFTask+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = BA51726FD1AA4091DA126768DFA80EE0 /* BFTask+Private.h */; }; 73FD34365A5B80EC64B0B5A8E99AF46E /* TKState.h in Headers */ = {isa = PBXBuildFile; fileRef = A4F85A759F06DA2C165FC5F9C67479D9 /* TKState.h */; }; - 741ED5F4DFCF51FA348982153375412A /* PFOfflineObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 50352378D38EB15E7B7D74FD48D20236 /* PFOfflineObjectController.h */; }; + 74351DB8FEAB681790B1508D8A128B55 /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = E6E72495A6EA20D898402EC82E0701BB /* FBSDKBase64.h */; }; + 744F76CA2535AE2E3E4749DD1D09AB76 /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F5ADC1E77EC8A29EE990ABF17E8326 /* FBSDKMath.h */; }; 745C38783C1053304B73F0386AFA906C /* RKTestFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = BD77162D04BA4533037493C3BE145CFF /* RKTestFactory.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 74671B80F66F8C7A04D96DADF1722860 /* PFMutableUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = 64E66272745DD74DB658E76BF786B334 /* PFMutableUserState.m */; }; - 747072A3816272600F4B853AC2D43A12 /* PFMutablePushState.h in Headers */ = {isa = PBXBuildFile; fileRef = E8F3BB2B68E1034BACF1F5A876795E78 /* PFMutablePushState.h */; }; - 74994CD76F26EB7B7CF319BA58A0630A /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 84E51A0ADCB24DAC5F16586A7E22A679 /* BFAppLinkReturnToRefererView_Internal.h */; }; - 74D2C3271439D8096ECF2A76DF7BA064 /* PFOperationSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 80BA04F02821688944482E0FB8D4D623 /* PFOperationSet.m */; }; - 75DDD7E7ABEC5725E7B5CDE1AE6D770B /* PFURLConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = A5247A1DF4C0D6237EA1C24BBC7A2C7D /* PFURLConstructor.m */; }; - 76300DBE702A80CC961739A23493D82D /* PFSQLiteStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = BD31E37E459C5578892A42ACCD8A7C99 /* PFSQLiteStatement.h */; }; - 773271EF07F93255CD92F40F5D4CDAA7 /* PFRESTAnalyticsCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 9502680C2A5812E3B95B583AB378FCA2 /* PFRESTAnalyticsCommand.m */; }; - 77AB0018DA45275B3E7BFCDC94D8AABD /* FBSDKShareOpenGraphContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CA70E2AE68629BDED8957B97443D682 /* FBSDKShareOpenGraphContent.m */; }; - 77EC8FF856687110A3538AB69DC07FF5 /* PFDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = C061A6821D5496664B815D95E9686638 /* PFDevice.m */; }; - 780B558D9C23324A76E2300EB403708E /* FBSDKShareVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A451A543F61480DA16C5AF92075E754 /* FBSDKShareVideo.m */; }; - 78A2871CE000B8987FA26F2507F0C5A6 /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E10BAEA96BC88D721B89668384A854DF /* FBSDKGraphRequest+Internal.h */; }; - 78C867C3E7EC565C35E4BC95FC265B34 /* PFGeoPoint.m in Sources */ = {isa = PBXBuildFile; fileRef = 121F69A49C07670028BD2BB1285A2CE9 /* PFGeoPoint.m */; }; - 7908444C47D45F63B7D6E3AB107C9CC5 /* FBSDKCheckmarkIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = D7084EA8F2963F3F4F4C3902295FC9E8 /* FBSDKCheckmarkIcon.m */; }; - 7941DC7315CDE26D59CD0EB217D43023 /* PFBaseState.m in Sources */ = {isa = PBXBuildFile; fileRef = C2709A1DF844E63FBEB934E9A24FAA66 /* PFBaseState.m */; }; - 7953CB89C3F59D4885F3C6DCB7A28A01 /* PFOfflineQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 735762C7D17E4364E90ADAFD2E9C139A /* PFOfflineQueryController.m */; }; - 7970953EEBB8E9B8D59CF92B5ECA9C1E /* PFUserConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A18F7AE2E1FACC4C6227EFE5C4B86A4 /* PFUserConstants.h */; }; - 797CEAA0B00AE0F2FFC971030A142841 /* PFUserFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = 776CD45C316A4D526A9482D3D6C0F72C /* PFUserFileCodingLogic.h */; }; - 79D9CB35E338D0CB12C68AEBCFCC933D /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 64DC079156B1C3D9892D30F49E7CF06A /* FBSDKErrorConfiguration.m */; }; - 7A28B8AD07B76AB3DB44F8CDFE744A7B /* FBSDKAppInviteDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D80A7028E913FB27600E32FE2F0D0D0 /* FBSDKAppInviteDialog.h */; }; - 7A4D2EC16BADC3EDB9E7C60072007D63 /* PFRelationState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A193B521725B41DCBB47C98E8384558 /* PFRelationState_Private.h */; }; - 7A54902B9E0B3ACB2A7B1EFECADF357E /* PFAnonymousUtils_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 12F1636D729AD4B6DCCEF11891F28113 /* PFAnonymousUtils_Private.h */; }; - 7B9EBA366015D5B457AD1B325E92046F /* PFQueryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = B4A4BC05632F91AFEF2CA8594E359431 /* PFQueryUtilities.m */; }; - 7BF055BCBD30254D2FD0ACB56D208D6C /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 66C559E290710757C262E9572627F8BA /* FBSDKContainerViewController.h */; }; - 7C2952F516B00045113908BBF7DC0E99 /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 2281F1087FCCD198F1FD69A1A5036483 /* FBSDKDialogConfiguration.m */; }; + 748865BAC2CF0646028E14F1F901D0F3 /* PFAnonymousAuthenticationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 594B1C1B419F5D05CD82EE8F86518E69 /* PFAnonymousAuthenticationProvider.h */; }; + 75089BEF052080F9C53DD85E3E067A70 /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D2882D92D1796229569A9CC1C6A400 /* BFMeasurementEvent_Internal.h */; }; + 753534EF9F6BA68DDC2C0BB97ABF5595 /* PFKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D9A8A5EA7D67587E22F112968E8FA29 /* PFKeychainStore.m */; }; + 757C64059CB5443093CD909C0DEC74FE /* PFRelation.h in Headers */ = {isa = PBXBuildFile; fileRef = 03C5A44C8CE91BCF8B86912605825A8D /* PFRelation.h */; }; + 7622E77898A5E6339E7108532241FBF4 /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = D74C6F651D26C64847074B31212962B9 /* FBSDKGraphRequestConnection.m */; }; + 766272FA49F9F79139FBC5FDBC39007E /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 7244F71460BF559B73433E28D79F2BFD /* FBSDKButton.m */; }; + 769C8A2A5FD69C9E808BAFEBD91A620D /* FBSDKCheckmarkIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BE29891FEDF3029F65A3606EE7B3D88 /* FBSDKCheckmarkIcon.m */; }; + 7723A818ADD25F8105C149DDB4EE3972 /* PFPushState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 687225D9C30A2354D368E350F8C481FB /* PFPushState_Private.h */; }; + 773EF0868D6F02AD1A64B608F9F534B4 /* PFWeakValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EA794B89AD63BC09D01C4D28AB83FA6 /* PFWeakValue.m */; }; + 77822739473DC952F4F5A5AEAFC0DF35 /* PFObjectSubclassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 7915B369685221642E067005F680B451 /* PFObjectSubclassInfo.h */; }; + 77E441574FD39C4C4993CD33AB6A8DD1 /* PFFieldOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D3E83167931010DA87FD972EABFF257 /* PFFieldOperation.m */; }; + 78C9EE129A8B784811999428280E0BCA /* PFRESTObjectBatchCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = ED1A749E0B29949F6BE6DE5906C56DD6 /* PFRESTObjectBatchCommand.h */; }; + 78D7B0F4E3F947DDA6A98358B2A1C0E2 /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FB89A08C5C8B78FBEBC245FD9B7D1E3 /* BFURL.h */; }; + 796F6AD0A1615AD0072F7DF2F5E1E5D8 /* FBSDKSharePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 98522B603FC459FC9758D1108318CB8C /* FBSDKSharePhoto.m */; }; + 7A5A1F4552152A40E502176B3CD96B1A /* BFAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = 882529F2F51F25982209C54BD8E7C6F4 /* BFAppLinkReturnToRefererView.h */; }; + 7AE4B1EFB5BFFE292E6A983252506D65 /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 9402AA910E3CEEBA2FBF5C33C47593DC /* FBSDKKeychainStore.h */; }; + 7AED011BAA61F2E740F903C7336A780C /* PFFieldOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 556A94A3870C01C3B2634E1838E2D0B6 /* PFFieldOperation.h */; }; + 7C4E7B55808C75F154F7070302DAD51B /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61A8714F3E98EE48AF22222F6082A20E /* AudioToolbox.framework */; }; 7C68061FCD10D87488EB98414D244611 /* RKMIMETypeSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = CC80DEFA3FC6190520C4E802B4E816FE /* RKMIMETypeSerialization.h */; }; 7C8620E50070963E07EAF88D8CF4A37D /* RKAttributeMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = B563402F32E620824AD23105E63019A7 /* RKAttributeMapping.h */; }; - 7CB8D2616D83001B8A93141CA2BF13A1 /* FBSDKLoginManagerLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 932E74B6527148FA6780C77E8DBF2ED5 /* FBSDKLoginManagerLogger.h */; }; - 7CE5FA614C65D51023461EFEDA3F35D2 /* FBSDKAppGroupAddDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 238732EAA8097AAF32A176A68CD82F76 /* FBSDKAppGroupAddDialog.m */; }; - 7D1DF1DAE2CCE5B8852F7715A228B086 /* FBSDKLikeControl.m in Sources */ = {isa = PBXBuildFile; fileRef = C928A35FC17069C2883652CB9DFD6587 /* FBSDKLikeControl.m */; }; - 7DE0147BFAAC8C52F531763BDCACB2C4 /* FBSDKSendButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 844E60D98084AFA1C1191666646A744B /* FBSDKSendButton.m */; }; + 7CF19BC1C67AA7C5AE473611DFA0C772 /* PFGeoPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 29DF82C03CFD45F592C6F19AE103BA06 /* PFGeoPoint.h */; }; 7DF59E1435A9B5FF6E0527FDB56ECD09 /* RKPropertyMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CA7D87557CA7C23E2FD33B16F7B4A87 /* RKPropertyMapping.h */; }; - 7E851432216D305D68D5E8D984712692 /* FBSDKGameRequestContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 80F8EAC3DBA16F147C2EED3D1B93D248 /* FBSDKGameRequestContent.m */; }; - 7EB608B728A52AD779DFCDAF20CC3A26 /* PFFileStagingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B3DCF9225B393FBEC5AF6CCD9267797 /* PFFileStagingController.m */; }; - 7ED3B5AB200513A4177AD21D83E939C7 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = B6707D507E40761A2A3DB33A5EBE648E /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; - 7F266AA9EE266D339D49A0E969988BD8 /* PFACL.h in Headers */ = {isa = PBXBuildFile; fileRef = 36292F1577420FAA6A00FC1B269D609D /* PFACL.h */; }; - 7F26EBAAB782422E0EA8A850890A77F2 /* PFAsyncTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 45870028D12B4C716DCD60DD091B5320 /* PFAsyncTaskQueue.m */; }; - 7F50192A3B43FB6E622F35F32B18BC9C /* PFURLSessionCommandRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DB20E84DFDB8DA61BA09324BEFBFF7C /* PFURLSessionCommandRunner.m */; }; - 7F624540F82068E3C8ED3762BAC27C7C /* RKValueTransformers.m in Sources */ = {isa = PBXBuildFile; fileRef = FA90F3562F16E440E91FA13E29FED87A /* RKValueTransformers.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 7FA1C89D6080BEE224852C72C13D6D5E /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 3732A1AC8F240E488FC16C8707FF1E6C /* FBSDKLogger.h */; }; - 7FC7C69A340784091CA09F04F2C4D983 /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 555A1DB7FA628753475F8E0C531D7624 /* AFXMLRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 7FC91DE6C51609D920E6AE9EF00BC4D4 /* PFTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FE1B46AC0005B96FC3513ECA03CF73 /* PFTaskQueue.m */; }; - 8034ED89D1720CA1553C063505243D16 /* PFCommandRunning.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BC26D7366B9BCFCED00BA2443EC3F02 /* PFCommandRunning.h */; }; - 80407D8CFD66E00DA2C42634D57FEB65 /* PFCurrentObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = 48FB82823746BF27BE7130F2353BC212 /* PFCurrentObjectControlling.h */; }; - 805B5C7F8601EFF4AC20A141A8920907 /* PFFileDataStream.m in Sources */ = {isa = PBXBuildFile; fileRef = D9F3737F5623A34BD5AFA78E4B1901AB /* PFFileDataStream.m */; }; - 80B7EFF63B21D70D7D03657A25AA7759 /* FBSDKShareOpenGraphObject.h in Headers */ = {isa = PBXBuildFile; fileRef = D3C4E0A343874015ABB97CF3BB6C0347 /* FBSDKShareOpenGraphObject.h */; }; - 81124E46F1A8D5CDD47880430ABCFE5B /* PFSQLiteDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 38A77616F3D6A593F41C5A9E9C1A53EF /* PFSQLiteDatabase.m */; }; - 811EAC8E6D816492BA4DD630B64B6E08 /* PFCommandCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C32A41D38BC842721FE9A96A699B1AD /* PFCommandCache.m */; }; - 815B91D3A7A855B5E6EB0DB6D4C49A76 /* FBSDKAppGroupContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8960D7D3ED69E1B3DCCEB842BB3727DD /* FBSDKAppGroupContent.h */; }; - 816C8741A372E6B0B343B9C2979B2F8E /* PFFieldOperationDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E58CBB93F5E241E8F3C398FB06283B5 /* PFFieldOperationDecoder.h */; }; - 820F763472037E53E4796360BAF8DAF0 /* FBSDKLikeObjectType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DC7FE94FD4993099292F9042265623F /* FBSDKLikeObjectType.h */; }; - 82484FB028F71C2A18DA9A687708C6EC /* PFRESTCloudCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = CC83F9AD4B07940AAE2F264DD04DD1BF /* PFRESTCloudCommand.m */; }; - 83571B5C25D75A372990FB58F775031D /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C56FB7EA3918F4E9420A03CBD1DD4C8 /* FBSDKBridgeAPIProtocolWebV2.h */; }; - 8367F497608E4E978AC85C9201057F28 /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = D5CFF5109E2B6B4C6F5E6087969F25B2 /* BFExecutor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 83A2308F1A820A9AE24A2A0C0696F262 /* BFAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 23780D118CBD55B9811B664EAE111A4F /* BFAppLinkNavigation.h */; }; - 83B200A2264FABAAADBBBE3355B988BD /* PFURLSessionDataTaskDelegate_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C9DA1DBC1BE40D87F0CDE1566117504D /* PFURLSessionDataTaskDelegate_Private.h */; }; - 849D48E2B21EB1B116FFF0C4F686DAE7 /* PFURLSessionDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3295D89852F84111A5FF8AB168AD2F73 /* PFURLSessionDataTaskDelegate.m */; }; + 7E2762508F6A1FF99C3EC5ACB2A10FED /* PFErrorUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = A83514721328D0D297D02197D617EB33 /* PFErrorUtilities.h */; }; + 7E30399388BC2602D048AAC96B5BC7CB /* ISO8601DateFormatterValueTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = A16F8952CC048721F5CA32D79E71B653 /* ISO8601DateFormatterValueTransformer.h */; }; + 7E438A7D61F9B7C06F0664B3920EBEB9 /* PFSQLiteDatabase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A13F413DC88512FDA54FE8057A667EAD /* PFSQLiteDatabase_Private.h */; }; + 7EC8DDF3DDAE56746E934F89307D7583 /* PFACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = 2561AF367B0B04A8C83CD5E1C4F0C08E /* PFACLState.m */; }; + 7ED422249D15540B85E10655FE6C988D /* PFMutableRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 28C76500BA7B3265FA9C1FBF8EC034FF /* PFMutableRelationState.h */; }; + 7EE537C6D56046389F1E274A3202A9CB /* FBSDKLikeBoxBorderView.h in Headers */ = {isa = PBXBuildFile; fileRef = B8C2915B7FBC79D5F729A8D454EC471C /* FBSDKLikeBoxBorderView.h */; }; + 7F1FDBA8B63D8F54C26A086D57228EAB /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0329086571C053B994B8FFFEABD553B5 /* FBSDKAppEventsStateManager.h */; }; + 7F31A5308B96FD7D40312D00F7FED8D1 /* PFOfflineQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D74017655C22EAC1CDB43F8CD2B468D /* PFOfflineQueryController.h */; }; + 7F476F4A55E0605F8B1BED1AAED083DB /* PFObjectState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 461D15480309D56D3AA4AFA926B8B93C /* PFObjectState_Private.h */; }; + 7F50BBCBF48D7D538ABB2F8B5C1BD9EA /* Parse.m in Sources */ = {isa = PBXBuildFile; fileRef = 700F2F5BA5994CFBE256028DFF7EC6CC /* Parse.m */; }; + 7F7A98BA075E1FD86DBC637F18F0D582 /* PFCoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A153F0DEB24B9E8B5723EFCB6F33B536 /* PFCoreManager.m */; }; + 7FC64428627661A597A1CE287993D8DD /* PFBase64Encoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E014614141F279B34D0F4EAFD7F4DFD /* PFBase64Encoder.h */; }; + 7FDD9544319E5EE9F6093720244BC5B1 /* FBSDKShareOpenGraphAction.m in Sources */ = {isa = PBXBuildFile; fileRef = DD3B394CF966217416F1237E9D4D804F /* FBSDKShareOpenGraphAction.m */; }; + 8034FE492667425492892E47331F2329 /* PFEventuallyPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 133D805C2313FF465674A3486EA36F90 /* PFEventuallyPin.m */; }; + 80355E0AA0F65BF9BC33663D2D5AAAAE /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 46229044B27E123F58A7778EF094817E /* FBSDKPaymentObserver.m */; }; + 807960496B84272FCA09089BD12D0F4B /* PFGeoPoint.m in Sources */ = {isa = PBXBuildFile; fileRef = 27DA1A860C5602304E507058E4A25B5B /* PFGeoPoint.m */; }; + 80B9F847DAA4DC85162B5CAF50DD8AAC /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 342BC152E1A501D98AA8468B20BC2FBF /* FBSDKWebDialog.m */; }; + 80BBA5295F8F2EDFB289DF9E1E0B5E12 /* ISO8601DateFormatterValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = A0A9019E56BAD1EE29D29A6AEDF3BC1A /* ISO8601DateFormatterValueTransformer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 80D7AE607ED5ABD55BDD03B17E072715 /* PFRESTSessionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 0435A677495AC526E61CDF8F62EC197C /* PFRESTSessionCommand.h */; }; + 811813531632404C8020D453107171DA /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 34DA5ED519561747CB24898F11335A79 /* FBSDKServerConfiguration.m */; }; + 815C939A552E956EFA94CD39E362CB79 /* FBSDKAccessTokenCacheV4.m in Sources */ = {isa = PBXBuildFile; fileRef = 831275D794F272F2349F89FC9BA48F1D /* FBSDKAccessTokenCacheV4.m */; }; + 81622EAF7B59D13198E4CBC0C3D1A714 /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 394002AEF7F5079BD3B473255A1C49AD /* FBSDKAccessTokenCache.h */; }; + 81C0AEE0BDA12DD25B4808A7E6DD9459 /* PFProduct+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E44E35724EFF38F735F8A1ACAD9AC6BA /* PFProduct+Private.h */; }; + 81D2A1174D2AB7C2A85A459309F1C871 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD70BB4643C9BA44BAC707BE6AB39DD /* AFNetworkActivityIndicatorManager.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 81F1E0666FE80C4D88A3B99E120771E4 /* PFProduct.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFFDA63A4181BD3B195487A833CECE4 /* PFProduct.h */; }; + 83C7505E35D5F6721B5600AC74ADAA16 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 845C26A4234F2FFB1203C918A6F64998 /* PFAnalyticsUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EC5BDE29DEA58916F31388DB4B8EE2D /* PFAnalyticsUtilities.m */; }; + 848C43C813771ECA299F1DFBFE42B192 /* FBSDKAppGroupJoinDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = C8A30076FFE0AE4D80EEE9B5F111E0C4 /* FBSDKAppGroupJoinDialog.h */; }; + 84CA51BF867492192A541AD60AB61E40 /* PFQueryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = E4B0E00C3C4BDBCA61E5E8E5A4098711 /* PFQueryUtilities.m */; }; + 852691CBD5FE158C07179096E9DC3590 /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = C691D2172575794DB216679D3693503D /* FBSDKInternalUtility.h */; }; 8526C9EF4EE664BFA507C921AFACEF23 /* TransitionKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A3CCA72533E35C4376B1E8AECC9627F /* TransitionKit.h */; }; - 8528AF353C87A568A36A67CC4107AABE /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = B177AF318ABF25BE42BEEE03E5A4504D /* FBSDKKeychainStoreViaBundleID.h */; }; - 855CEE1F6BCF1084074BCC8AC4A4409F /* PFURLSessionUploadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = BD986CE8B13B8A0C1F133579BB44D141 /* PFURLSessionUploadTaskDelegate.h */; }; + 8533CBAFEDFAD5FBC4ADDEE1BB82F1E2 /* PFQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3448DD0E19AC2C9CA013ACD2BC7AD8C1 /* PFQueryController.m */; }; + 8535B91A7A7E444A84BA5F17C7C45A0B /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = BD4CC2409377CA987A2B2C5C57CEEE70 /* BFTaskCompletionSource.h */; }; 859358B83393C54648A62C9CDA04C46D /* RKRequestDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 323152BA48F777D5C406ED5AE427B1AA /* RKRequestDescriptor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 86070D62F7C25EA41C85CACBB8DF1BF9 /* PFObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E3B7FA2A6E0A7ED2742EE5D84DB12A8 /* PFObjectUtilities.m */; }; - 867DB320DD4CB050839389A1BB0555C9 /* PFObjectFilePersistenceController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E78B233EDC284D3081B128801711498 /* PFObjectFilePersistenceController.h */; }; - 8699AAC67CF8535D11120991726B3A5E /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 4533001C2D55630F9C37C6627CA516F3 /* FBSDKKeychainStore.h */; }; - 86C24EAC707FA2133160C7AA132F4716 /* FBSDKURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = D6D2578CC6CCBAA314053520BEEDFC51 /* FBSDKURLConnection.h */; }; - 86D39A49BE6E82211B15687264F9503D /* PFURLSessionFileDownloadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B5452F12D849665274EB43110F07EE1 /* PFURLSessionFileDownloadTaskDelegate.m */; }; - 875B19B2C5F755ED6266F7E8BD9F0116 /* PFRESTObjectCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = DB12D985E758C1B2AC5996A8F052C26D /* PFRESTObjectCommand.m */; }; + 85ACC60B4C7AEB569CA7A15552DECA2B /* FBSDKShareOpenGraphValueContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = E321A3BE2B4DC782EA81A69D33894C29 /* FBSDKShareOpenGraphValueContainer.h */; }; + 85FF1DA846D0199EBFECFCF6608778E8 /* PFJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = AAFC5698C81D8076342E19ECB0D2E550 /* PFJSONSerialization.m */; }; + 864964DDE4A49AA0C8BA369228DB2F0D /* FBSDKLoginConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = EF50F0DB0BC4C86C22F26686C14E853A /* FBSDKLoginConstants.m */; }; + 86DDE3CA5BB0A9832CC42F7D111A4E50 /* BFCancellationToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E4FE6BADC672C550203DCEEC5EE8020 /* BFCancellationToken.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 87555A986BB8D791D09CC1CF98CB05F0 /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 950203966AB13DB9DD6BF919571BCD7D /* BFExecutor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; 87668BEB2644459D0714A1D916BD3EBC /* RKObjectParameterization.m in Sources */ = {isa = PBXBuildFile; fileRef = 585CBEC762B0BA2C71CFB9F0E84E8B1C /* RKObjectParameterization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 87B8F0D199620CF95AB1FC249403F368 /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = 8268565FACDED1D6C7B9BE1728B7EC67 /* FBSDKError.h */; }; - 87BB678058E30D83A780091B5FF6FED4 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83F2B1D939804694C73E7FCD9AAF4090 /* CFNetwork.framework */; }; - 887C6E013DF079EB8EF5B6F72BCDD256 /* PFEventuallyPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B7B00924E5C1CE262E21FBE11F0636 /* PFEventuallyPin.m */; }; - 88FA83A761B810A90340002D57EFD576 /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F9AB8D84FEE2E48AF3B9F9658D5BE35 /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 899BD0168D0879A433B3E24D881E071C /* PFDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B4DDE724F0C79DF04632181A3641990 /* PFDateFormatter.h */; }; - 89DCEEBB7F2531565138924B9051515D /* FBSDKLoginUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 691DE4C572928B4D4009AA95D722D4C0 /* FBSDKLoginUtility.m */; }; - 89E610C03C0AB4A658E6FD92A3FC7AA6 /* FBSDKLoginManagerLoginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 82E686107E1090E17BFD23A272EE10CA /* FBSDKLoginManagerLoginResult.h */; }; - 89F559D7BE8FC96E8C092B31F5E63841 /* ISO8601DateFormatterValueTransformer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AE08EB61DD10B80E244E727952C0B579 /* ISO8601DateFormatterValueTransformer-dummy.m */; }; - 8A0F2CECD9DDD91A54E8B7B4DB24E6B6 /* FBSDKLoginConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EB6F1445D886E9B17EB6D384EE6DF8F /* FBSDKLoginConstants.m */; }; - 8A5A5D950DE30D7796F24D41F725D731 /* PFMutableFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = DDFFCC76652A57F8AC82219E905AF11A /* PFMutableFileState.h */; }; - 8AAF4E0737895C4A6F96AD130EB41A76 /* BFAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = BD6248F1913A738A21279EA50BBFB18E /* BFAppLinkReturnToRefererController.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 8AD06EFB5A8B1FA75F88414D6A51AD10 /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = F00F8677E748167A500D4089850612F1 /* BFCancellationTokenRegistration.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 8AD10194BE6135D5C73D85DC985209CD /* BFTask+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDEA5FDB2DF43C329614190E12D5AC8 /* BFTask+Private.m */; }; - 8AE18E3F5FB9E121377E758896FDC5E9 /* AFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 36C94BDCD3271399C249A6BF6A0A9530 /* AFHTTPRequestOperation.h */; }; - 8B0C038931DB9E37C4E93AD16106BD26 /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE2369D45F007102130145D672D47C7 /* FBSDKTimeSpentData.h */; }; + 87C94373458C4511D89CF78EA0CF5B50 /* PFPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = D7F2E197DB454125A7957FE4881AD932 /* PFPurchase.m */; }; + 889A0ADF8C008FD622BB2611917818AB /* _FBSDKLoginRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CEDED5603A9C216D88239CD22DAD12F /* _FBSDKLoginRecoveryAttempter.m */; }; + 88AEFFFCE8B5D10A029F8591B492C4B6 /* PFCoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 975F4BA7752243B51CF71A4F5AF85FBB /* PFCoreManager.h */; }; + 890348D946DE9E11805D0184309D1414 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 660799EF24CF28527054B3FA6E25BE2A /* FBSDKBridgeAPIProtocolNativeV1.h */; }; + 8933370B0D400B59134BF817F36355D1 /* PFAnonymousUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9450452DCB495F010C9799C19CEDC25 /* PFAnonymousUtils.h */; }; + 89CAA391879710F0A18AA9983F1AAB9B /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F6E04668789EA254AADF60D794FE065E /* FBSDKApplicationDelegate+Internal.h */; }; + 89FFA572F2CF83E1771CCC8901980550 /* PFThreadsafety.h in Headers */ = {isa = PBXBuildFile; fileRef = BAFC73046A893C097CD25A41014D48A0 /* PFThreadsafety.h */; }; + 8A5D5875FC065737EB8E0B6C6E340C90 /* PFQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = B40C676461A3B7148111BB04D891F399 /* PFQueryState.m */; }; + 8AC9E8395C32554D980DB74ED4B0A3A1 /* AFPropertyListRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5917BAC53F580A1C1176F5DD749556A9 /* AFPropertyListRequestOperation.h */; }; + 8AD697C3CC37B002B3D24F61B96E3774 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CCC11B45A7E2D9A95182BA1D01D60F9 /* SystemConfiguration.framework */; }; + 8B02A33743FFEA58A1A3FAB553DA0113 /* PFAnonymousUtils_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C69E58A7811CD06105D466195B801328 /* PFAnonymousUtils_Private.h */; }; 8B250CC7E95C824D1E75461C4C141765 /* RKPropertyInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AA98567E44F5A893A264AAAA201DC0A /* RKPropertyInspector.h */; }; - 8B2A9AD38EC87DE7B7D039BDF5F81B6A /* PFPinningEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 512C3E738619CA90805009D1B56BFDE7 /* PFPinningEventuallyQueue.m */; }; 8B3551C3785FF40691325863A18E92FA /* RKMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = DC32DADD67B93D4C8A1DC5D924364B07 /* RKMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 8B602196288517BC69973428574180A3 /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 45488E198C9CA5E2D83FDDD1A6F2C741 /* FBSDKGraphRequestConnection+Internal.h */; }; - 8BCDE8B6759FB747A67EC91CA12C6B80 /* FBSDKSystemAccountStoreAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = C487CF8BD9293F62ADC3EC7ED11DF7E2 /* FBSDKSystemAccountStoreAdapter.m */; }; + 8B3E804859E5836A2204786E380B6996 /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2827FE6F0B040DD6EE347F254F0F17BB /* FBSDKGraphRequestPiggybackManager.h */; }; + 8B4A50CAB930AB9204EA6685CD51B1FB /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 94EDA6573DFD479F710386D53249C2EF /* FBSDKAppEventsUtility.m */; }; + 8BB62BE3D07ABABBEED035063D38A628 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BE2D580E317F0D1965AC68793F7AEBB /* FBSDKBridgeAPIProtocolWebV2.h */; }; 8BF3DC4F915897B5B26F59D30BBECBA7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 8D163CF90227676C66E59AC9C29C49A2 /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FD7126F63E44E22CF5C50BA6B03A193 /* FBSDKCoreKit+Internal.h */; }; + 8C2E0348444B4CCD4A79B4F0B7E2C680 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + 8C80FAB2A1E33AB58F5A17B43E7E4610 /* PFUserConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 50A981FEAE41634E8F3C3CCF8AC56259 /* PFUserConstants.m */; }; + 8CF36F02672717CD65CA145BF33C8E99 /* FBSDKShareError.m in Sources */ = {isa = PBXBuildFile; fileRef = E3D7CAFA467CC207516594F8CA235BE1 /* FBSDKShareError.m */; }; 8D34E8CC2BE98E98B00C3A7BD7744D34 /* RKResponseDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = AE1F88C360ED32A2DC0B77A0FB64F684 /* RKResponseDescriptor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 8E194598BA9FA104EBD9F40A911BFDFE /* FBSDKLikeBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 12807CE1156EF23D621FBB87101DEF6D /* FBSDKLikeBoxView.m */; }; - 8E517F1FC5970B63D155F6B6F00AA93F /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = FD42CC4829F51D2B45C0EDB14E79F901 /* FBSDKBridgeAPIRequest.m */; }; - 8E6728F63DC431E34F799F06DDF1CB8F /* PFPushChannelsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 17453FC905983BE633680D64EBDF6BF7 /* PFPushChannelsController.h */; }; - 8F19A51AABD48FA736496786775A4540 /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 32087D68AA15B65193CE803974E093B2 /* FBSDKDynamicFrameworkLoader.h */; }; - 8F2B536B7C3E12F8A089703A8E184EE3 /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 15FDA819E4A67B0052C5B32B6C6BC32C /* FBSDKAppEventsDeviceInfo.h */; }; - 8F318B41E49C31FF2E6C13F6F120FD15 /* PFMultiProcessFileLock.m in Sources */ = {isa = PBXBuildFile; fileRef = 21B3BED0A995DF74C8CE5AFBA1C4F804 /* PFMultiProcessFileLock.m */; }; - 8F358510B4BFC7E8344D34A8155B42DA /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B4EC6E2C9E5D654933455F7EE946B3 /* FBSDKBridgeAPIRequest+Private.h */; }; - 8F7DF91175CD7B9E257D396EB87DBDDD /* PFFile_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 090D1B6F36F0C028C8CB3219A3BEF8C2 /* PFFile_Private.h */; }; + 8D805E15087E4663C5274FC437B3D934 /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 120D59FB9C748DAA660CEDCF7C419164 /* FBSDKAccessTokenCache.m */; }; + 8DA8A753958D9E0D7C75532C0F108B6B /* FBSDKBridgeAPICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = E67D4E4FAAA111F401888720828746B0 /* FBSDKBridgeAPICrypto.m */; }; + 8EEA92CFB0319DC52DB310A78F1E4B09 /* PFObjectConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 457C5AA079BF304DBA165DC39799AC62 /* PFObjectConstants.m */; }; 8F9A675846DC2C23572CCD8E4FFBDB93 /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CCE9BE6DF0576998191D1D52675A3EF /* Pods-dummy.m */; }; + 8FCF54FD9CEA3E07B0C913783C0B95A0 /* FBSDKAppInviteContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 73F2E6274BAD1AD8D9324B3838256FB6 /* FBSDKAppInviteContent.m */; }; 8FE5788EF14F6E44BD11EA5B8C3C1587 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 910591F473539420F32B53EFC561747F /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C3209F7B3A0C5594C5382D2E17A02B97 /* FBSDKShareOpenGraphValueContainer+Internal.h */; }; - 91262C7FCFFF6CB8C7510EC21277BDC4 /* PFEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BEB822204CBB8DAC8FF4C04AEFCF729 /* PFEncoder.m */; }; + 9006A9F90EE85EAC328A7CA6B21A74E0 /* FBSDKLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EA68C5837BA086C1AB0730D5D664A75 /* FBSDKLoginManager.m */; }; + 9047EED945F054752070AE2C7FD84036 /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F27E2022C1FBC9A8EF59AF5A0635F1 /* UIImageView+AFNetworking.h */; }; + 904E9698791C4696CD82E78D1D525A5A /* PFCommandRunning.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CA449F861B70FFB8296D4B48C050FBE /* PFCommandRunning.h */; }; + 90DF7AFB3CDCC7BDF91701989F51605E /* PFMutableUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = 20A09146C96CD4735D748F3A404D0813 /* PFMutableUserState.h */; }; + 90EC0380FEBB7E27ADAD47E582C3D580 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 46012E85A00B1012C8DE6CB3D5CC0DFB /* AFNetworking-dummy.m */; }; 914774948471B0AB22200646BE0F480F /* RKLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 95B10AC59C183D139DF676CDC2DEF1B0 /* RKLog.h */; }; - 91F44367C597D2BDFF225A8BD754BBD0 /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = A54DE73C817619BCCC8C09FEBFAAE717 /* FBSDKGraphRequestConnection.h */; }; - 9222B3822E8B00EFBEFD4AD8317E09BC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 923EDFEA8185C3A4D6F5F36FC9B5DACB /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = ED9EAFA1C9FBC36E305EEEA43B7A8CE6 /* AFURLConnectionOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 92F90206D520B6FFB926F518E7F78A6A /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AFCC4FD732944B15943D675B7BBD73 /* FBSDKServerConfigurationManager+Internal.h */; }; - 9327A80A4578297BCC18961FAF29D852 /* PFMutableUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = C1DF7803D01DBA25AC3A304B97A1450B /* PFMutableUserState.h */; }; - 937A4633A64BC5208E9324E323AD8129 /* PFSessionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B74DFFD00FD194924436581B996AF728 /* PFSessionUtilities.h */; }; - 9394144BAB18709A82FDB2B282A05380 /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = B45B64C4D463C82AD88669B314F94E5E /* FBSDKBridgeAPIResponse.h */; }; - 93A9D4AC38D1D5391929155E05F83D2E /* PFConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = 65EE60D7B2AE8D7AF7FC37A1DED26D53 /* PFConfigController.m */; }; - 9503242D0ABD828C67CE6E9E87FCF808 /* FBSDKLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AD87F2B55AE1CC46DE21D8EC71A1A65 /* FBSDKLoginError.h */; }; - 952263BF4DA2641DE73612C67BFE318B /* PFObjectController_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A3D1CC8FD8C924BEC03EAE7B7D1A957B /* PFObjectController_Private.h */; }; + 9158101B59990CB0ECE0851B57A3A86B /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8886812D5A18522530AA7A0B5774BB0A /* FBSDKProfilePictureView.m */; }; + 918020D013ED8C98F9A3A541854321D6 /* PFOperationSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D9FA4BADE605736317EE1596FAAD3B1 /* PFOperationSet.h */; }; + 923010B8F3329953E0A79793C8647EE1 /* PFQueryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = C45D1154E82FBFB1AEFB90141DBACC29 /* PFQueryUtilities.h */; }; + 9290D750E87E3578B9115CFB7E07A1EC /* PFRESTObjectBatchCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C4E9EF227BA506792955288087E82F /* PFRESTObjectBatchCommand.m */; }; + 92AE88B8C0C5A81DB777F447227395CD /* PFCurrentUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = C74E4DFE39D451AE68F6CB856DEF1D8B /* PFCurrentUserController.m */; }; + 92E9F455D701E6FAABAB2C36DB4B4BDF /* FBSDKLikeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 0133F272E02689C37483595FA9CE6B21 /* FBSDKLikeButton.m */; }; + 93D454B41C475DD7053A9F84BC1CB745 /* PFPurchaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A2F1425F21ABB04C1E959E932C6F415 /* PFPurchaseController.m */; }; + 9417E9466CCAACBCB2ABE8E77D01AAB9 /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = A558554954AE61057C9CF3B86E31AAF1 /* FBSDKKeychainStore.m */; }; + 94CE1B567D82681A537F32DF3DC5E515 /* PFUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EDBC476683341C63522CBC88AF10401 /* PFUser.m */; }; 9526FC617DC03EB2394A82C62562094E /* RKMappingResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 905ADB423401F79FA90F610A1CEB29F1 /* RKMappingResult.h */; }; - 960C0ACF45C879E5B798E0208677C283 /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = F5A2FEDDD4FAA9868A664F18973566D7 /* FBSDKAppLinkResolver.h */; }; - 9691F0B4875AF918D9307643CCB6F345 /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D4B932F8281FFA4CACCD488B25D8399 /* FBSDKErrorRecoveryAttempter.m */; }; - 96C7851DA44AD1224A1111E622B90017 /* PFInstallation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A982F733776ECB9F974B94BB7AA8825 /* PFInstallation.h */; }; - 96FA8252F3AA140AB10B644BC9A9D5C7 /* PFPinningObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = A8B7D4881DB5E38BB4A3D779E6BB690D /* PFPinningObjectStore.h */; }; - 9713B6D2036DE8FE79A48B9BED3D6B25 /* PFCurrentInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 748E23C1428DC283BAB8E03D0CE9A770 /* PFCurrentInstallationController.m */; }; - 97742173F7783B44F0986230885A4260 /* ParseModule.m in Sources */ = {isa = PBXBuildFile; fileRef = C6AF838FA7C570391A36438E785BD121 /* ParseModule.m */; }; - 9782069796E4CFFFB4A28BF5DFA57F85 /* PFSessionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = A87CDFB3EFD9FF97386971977129FF4F /* PFSessionUtilities.m */; }; - 97C333E846C6F051D032E8EECF06012B /* PFPushUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 072E4E053796CCB0B198E0D81722FD94 /* PFPushUtilities.h */; }; - 98624ADCF17E525E7753E01E2282CF79 /* PFConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F06181DC24313ECF2DBF2D575D36DC9 /* PFConfig.h */; }; + 957B6B2AFA1B7311B98BC4ECA2D3A0E6 /* FBSDKShareAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C8807B3161750EADE6E8BD164724CE6 /* FBSDKShareAPI.m */; }; + 9586E7884852EFE6A87AA1FA26AAEAFD /* PFUser.h in Headers */ = {isa = PBXBuildFile; fileRef = E7E88640AA3150B82CBAC9BE5E95A136 /* PFUser.h */; }; + 95A30E62D31A893BCB37B77FD0ED25F7 /* PFSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A7133DBE9772758CC46F930B640FA577 /* PFSession_Private.h */; }; + 96142816EC1AA2045DFF5E56EA30F07D /* PFObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = F1E2800D7ABD0182A48B7D71B414FD92 /* PFObjectState.m */; }; + 98243A9B61B05CAD50CD1C18E5EB33EF /* BFWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 363004150CBDDD99121ED1C9FEE4CE8C /* BFWebViewAppLinkResolver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; 98B5BFC65638844B3AF600A7AC6486D2 /* RKHTTPUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D15AFCABB51E916BD6FFE6D663CCBED /* RKHTTPUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 99698707B82BBB47C3392E7E47C94CEB /* PFQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = BD1C10F7430E7917BD4A2D320618E8FE /* PFQueryState.h */; }; - 99B95FDB465ACC34C5C97139218A4D54 /* PFCloudCodeController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE0F82547915413E8FA3F4BD68D24DD /* PFCloudCodeController.m */; }; - 99CF212BAA3933341FF49D3902823477 /* BFCancellationToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A7BE134FD15E0D4AD4050F4AF57B457 /* BFCancellationToken.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 99F06B5F06814E413CF9BFD708985DC1 /* PFMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = C139C86AEBB76931A158BC183F46D15F /* PFMacros.h */; }; + 98F7D66B579B9C528F943E154A0DA118 /* PFRelationState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C2775986B8C8F3CC41C05FD3B939FF81 /* PFRelationState_Private.h */; }; + 9946DA29569182E4051D4F20EBCF389A /* FBSDKShareKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 225675EE77126480507353150E5D4EF3 /* FBSDKShareKit.h */; }; 99F872BB5976264AD7648F8F8252D8B5 /* TKTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = F0CB4E3EC1ACD76F2309A54B490DF091 /* TKTransition.h */; }; - 9A1AE31B803BD2B8CF59FB3983F9A51C /* FBSDKAccessTokenCacheV3.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AF7D10C408FD6D8AB132E00A1837154 /* FBSDKAccessTokenCacheV3.m */; }; - 9A4443483F57345BB06E660DB76AB29A /* PFKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF590EFC23393E18AB1CB35CBED4270 /* PFKeychainStore.m */; }; - 9B0B6DE875E130F30CEEB69A79037FA1 /* PFFieldOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E4B8ABE7430971B5249A46A558AD57 /* PFFieldOperation.h */; }; - 9B23BA6F2581561FB25680304A6B9073 /* PFURLSessionDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E4597D072E258E34336B3F35C0F419D /* PFURLSessionDataTaskDelegate.h */; }; - 9BA4897B11673A7E3BEA0A4801C041A3 /* PFURLSessionFileDownloadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 045C613BE82C1C475C7BD0F490B49AAE /* PFURLSessionFileDownloadTaskDelegate.h */; }; - 9BE301315D30B57920E32F058B66D98D /* PFOfflineObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B9DBF11D74F42EAFF80AF44ABE2B00E /* PFOfflineObjectController.m */; }; - 9BEFB20B75AA77C91D5D82E13069504E /* PFPinningObjectStore.m in Sources */ = {isa = PBXBuildFile; fileRef = F3ABB736CD9D5E94B6350679B5554ED2 /* PFPinningObjectStore.m */; }; - 9C174E63607360CD339FECB3BFA37F4E /* FBSDKLikeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 2623CB720FCCE67AE1CCB1219F214621 /* FBSDKLikeDialog.m */; }; - 9CB8FB8E4DFBCA73F23A0767CC00C9F9 /* PFFieldOperationDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = FA96D6D6ED3962673257FD4308045B34 /* PFFieldOperationDecoder.m */; }; + 9A2BEF19F863F33E38EBFAD7EA9701CB /* PFConfig_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 91F0975F1A27413EC0622237C3680849 /* PFConfig_Private.h */; }; + 9ACE7DB11559893303A60C131C1C651A /* PFObjectLocalIdStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 894852C03388A8B63E64B0E4307DA4C4 /* PFObjectLocalIdStore.h */; }; + 9B20CB3ED72C1E4476D8EC5896D6EE25 /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BC5A2D868E11F3896499C4C384C1057 /* BFTask.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 9B9FB5405327F50538A416EA24675972 /* FBSDKAccessTokenCacheV3_17.m in Sources */ = {isa = PBXBuildFile; fileRef = EBB7426F9BCC68E345009243DF01C283 /* FBSDKAccessTokenCacheV3_17.m */; }; + 9BC4B4C5BE92BABC56261D0983597C6D /* PFObjectController_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 63C834523FBD7AC3D226D67DBCAB0F4C /* PFObjectController_Private.h */; }; + 9C2018D3236C7170BE9FC1AFA36AE55E /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A3A0AEECB03ACB2C625D6A5BDD230FC /* Bolts.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 9C4AB8907669D2B957962CC3FEB63853 /* PFQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = 10E904E302F7D7767F91F58889C20F5A /* PFQueryState.h */; }; 9D7FA3822D5504762ECA314C8A00DB7C /* RKPropertyMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 905A2264F8751CFD5E0FFE6C92CE7462 /* RKPropertyMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 9D9BFD2275092031EF50133F849831C1 /* RKISO8601DateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = EC2DB7FD65BD1EA61BB08642939C3DDC /* RKISO8601DateFormatter.h */; }; - 9E1D4FDD251DA92C2D1388ED45B720A7 /* PFObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CF42D72A1AF3A7182B9021C56CAF888 /* PFObjectState.m */; }; - 9E757C484BA1AAE97BE4C2409B6FD0A2 /* FBSDKLoginButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F747176FC803B53FE0AC39C84633F516 /* FBSDKLoginButton.m */; }; + 9E495012585497CA83EBB7D85B66DE18 /* PFInstallation.h in Headers */ = {isa = PBXBuildFile; fileRef = 05D04D86B15EAD72ACA964052E4E5C94 /* PFInstallation.h */; }; 9E80147EBF6B2588ED1ACE1EF8C08856 /* RKDotNetDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = D344D9A38E931E18FB1095D2364E21E6 /* RKDotNetDateFormatter.h */; }; - 9ED5478F4952488EFF6485BF5E50ACAF /* FBSDKLoginKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3666E0447FCD05578684BF0E8B8507E2 /* FBSDKLoginKit-dummy.m */; }; - 9F1F36C174E8643569FAAE58E3B87DC7 /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AD3DE9B80F57FA325D62663B4BFF9A0 /* FBSDKSettings.m */; }; - 9F551AF880BB9256C4C291F5CCFB11BF /* PFFileStagingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C105E35C96EB4B380048F9D08BEED1A /* PFFileStagingController.h */; }; - 9FA6A1361778101C92CC23F66D82E995 /* PFCommandRunningConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = F9D22C63BFA5923A93E8E8A351BB6819 /* PFCommandRunningConstants.h */; }; - 9FB6030B98DECB9D62879EE2AE5E6D9E /* PFConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = FFBF77D48AFB428DB4B14BBA73842CB2 /* PFConstants.h */; }; - A0C0D93BDD1650DA3FBAF7308D8D8F6B /* PFRESTCommand_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 885480E76DF09EE4E69F631228FF4859 /* PFRESTCommand_Private.h */; }; + 9EB092E53EFD259C48531526018114D1 /* FBSDKMessageDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 71B842D80B25BEB8AE3A797A724D7CC5 /* FBSDKMessageDialog.h */; }; + 9EB9B579CE8B4A1750DFE203B0A4F013 /* PFDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D1520ADAF247AF6031216CDA841A5E1 /* PFDateFormatter.m */; }; + 9F0967492995CB98973A21AA30AFFC7F /* PFPushUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CE5F1B200B8D4F57C6A85199C9969FE /* PFPushUtilities.m */; }; + 9F4936D9F122DA751E92AEBFC0EE497F /* PFObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = 73A13DAF02B6E8A824568229C50FBBD3 /* PFObjectController.m */; }; + 9F4D529EEC0834DDEAC016EB49BB5AB2 /* FBSDKLikeControl.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A665A78A257570FD4F9CE8A2EF5694 /* FBSDKLikeControl.h */; }; + 9F564465F5C2681769FF253EC488E005 /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = FA5ECFC11F48F3DA152D886DDA9845D1 /* FBSDKBridgeAPIRequest.m */; }; + 9F705191F53966733FBA503F27BD14ED /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 279536DCCF7BB43F3A2CAF27A31B5C57 /* BFAppLinkReturnToRefererView_Internal.h */; }; + 9F8F9CAAF474967CD794E0BD4D083C24 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = DFC2DC00FAF97B8C741ADA0CE734750A /* BFExecutor.h */; }; + A07428954F0ECE2812C099F99EEBDCF9 /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AF0ABAFA5AB51B0A0101D5CBF73791F /* BFCancellationTokenSource.h */; }; + A0CB7D3DED639DB995CBBC511D37BF63 /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 249C09A58FE9BB84BAC197A821EC4678 /* FBSDKConstants.m */; }; + A0EF1086FDB0062AAE995ED6B69B7EB5 /* PFConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CA7CE3E5F98F41F8574F6D183CE2263 /* PFConfigController.m */; }; + A1EC89637E89B1A927B64A88D846F37C /* BFAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = BECD89C94556181D2DC5E1EC956F6551 /* BFAppLinkNavigation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; A2263CD966D196A5CE37ED110C62EE57 /* RKMappingErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = A47788042F4DC03B2F9C830BA9EA5567 /* RKMappingErrors.h */; }; - A2312679DCFADD5575064A07984B4BF5 /* PFQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A4611534D2F6FE37840471AE6EE6B04 /* PFQuery.m */; }; - A236FA4A4D8D428BCF2799A6D87D96DB /* Bolts-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A4A2624694E7E459F481284E18872D0 /* Bolts-dummy.m */; }; - A249BCCF84DBA88982F537AE0C883BB3 /* PFRESTQueryCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 03C41F440C6257C38CBA6D08B490B043 /* PFRESTQueryCommand.h */; }; - A298A5BDF576E579A48B535BF82CC397 /* PFRole.h in Headers */ = {isa = PBXBuildFile; fileRef = 828C7F88A0E2BCBEB7B6A32EE8D36F4B /* PFRole.h */; }; + A2575C4641D3633910C02BC08860000C /* PFCommandRunning.m in Sources */ = {isa = PBXBuildFile; fileRef = 445422ACF05285D68F70D3C51879712A /* PFCommandRunning.m */; }; + A26DC0F983CC9217FBFCBAC0F78FD6F0 /* PFCloudCodeController.h in Headers */ = {isa = PBXBuildFile; fileRef = 62F4D5228E2384499C80602BA6C921F4 /* PFCloudCodeController.h */; }; + A2779E72E6F4F89BC10E9D187395B8BA /* FBSDKGameRequestDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 520663893D6DE2A86D1D57299989DD21 /* FBSDKGameRequestDialog.h */; }; A2A8FA3EF7C62775D279A5B32E06B37E /* RKLumberjackLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 97E6EC52D54228978DD7489F931C7015 /* RKLumberjackLogger.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - A2C3E711AF53081DECBBB754EF81FBFD /* PFUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0050807933AECE8D25A707F975203C5E /* PFUserController.m */; }; - A2C6C3878CD7696272669C76E2B95F3A /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 47437D5AB702C3D4165C272B390FADA7 /* AFNetworkActivityIndicatorManager.h */; }; - A2FB35C43BD300FF3D0FC5D2C21A8EA0 /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = AA8D4BA554A6B6C1B406BECC4D387E3F /* FBSDKCoreKit.h */; }; - A3BDEBD652C5B97ADDAD62F68E695BAB /* PFObjectConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 14DC7569B23924F725356C7D875B9264 /* PFObjectConstants.m */; }; - A3E8BEB5BDB0DB91D73F3B750F881671 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E7F4A2F3E63A394F39CDBFEF74FFB35 /* FBSDKGameRequestFrictionlessRecipientCache.h */; }; - A4796D08180059B617D5CD6D74EC4820 /* PFPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0861457C7F36148ED273E55B6BD5AB36 /* PFPurchase.m */; }; - A5075FCC7996C7241A1AC88BD454CEDC /* PFPushState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 66AE3952E127CEAA503A87FD111FCBEA /* PFPushState_Private.h */; }; - A52D62A00F5C3CC6C77BFCC174883EC5 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = D58141339BD4E1AD139F6D8757D818ED /* FBSDKLogger.m */; }; - A63B7B71D5BD6F713B1F2645904FAB0A /* PFAsyncTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = E1030CCC0775734985138AF667D21E88 /* PFAsyncTaskQueue.h */; }; - A6431E60D053D9BA7610CC73F2CDB276 /* PFProduct.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C13CE56C415F93B1A3921AB6358B990 /* PFProduct.m */; }; - A68DEE427107DDDECE7CD0FD00B4C42F /* AFHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE092C23A177A30D41277E3E2532CFE /* AFHTTPClient.h */; }; - A6F8D0423D730B09FF2B44142A470FFB /* PFRelation.m in Sources */ = {isa = PBXBuildFile; fileRef = 17EBDD0D3F6CA772ACD223D47BC6606F /* PFRelation.m */; }; - A745E81424A0ECF3E504C2027C5DF4D7 /* FBSDKShareKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3863A24C8545BD8471114044940471D0 /* FBSDKShareKit.h */; }; + A34464F1C2086A0692D5226C2EE6248A /* FBSDKShareOpenGraphContent.m in Sources */ = {isa = PBXBuildFile; fileRef = C0ACB6CAB80A7E3DC5CFFE36AC450565 /* FBSDKShareOpenGraphContent.m */; }; + A3829D2453619B3142F601B79951DEDD /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = BA4DA1672A2EE0D0650B35B2EE788AF2 /* FBSDKTimeSpentData.h */; }; + A3F8A0B84AE7493B8726F577B6E98134 /* PFSQLiteDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = B95FB2E5D926288C9E55B3572315CEE5 /* PFSQLiteDatabase.m */; }; + A48A2777BF06EEFBC6370A833DD677CD /* PFInstallationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 379C2A4AD2DFCF269463822AE535090C /* PFInstallationPrivate.h */; }; + A4DCD9C49CAF596816118268E0B6EACE /* FBSDKURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D859BEB9EC0DAF7A490519CC6ACB7D2 /* FBSDKURLConnection.m */; }; + A4E81B9C9078BC0F5D1113D16C8D1F42 /* PFQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = B43206E9EAB8BE07EDDF2DD6510F74C8 /* PFQuery.m */; }; + A4FE6309DFBFDAF52061F44861DF298C /* PFURLSessionJSONDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = EEBF3BA14A17CDD666F87ADB7FD612C9 /* PFURLSessionJSONDataTaskDelegate.h */; }; + A5EE9A504202A028AE4D6D43657078E6 /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A6880AAFC8F7351294B649E15B6AD7F /* FBSDKServerConfigurationManager.h */; }; + A6F08ED05A5539A09A9E61B403A990AF /* ISO8601DateFormatterValueTransformer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D9449B7AA0958A37C738C3F3113E6F86 /* ISO8601DateFormatterValueTransformer-dummy.m */; }; A754C4958F744E68B858C4D0F1601B43 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - A75D8C6B1C911CCF9285B67A64D88168 /* FBSDKShareLinkContent.h in Headers */ = {isa = PBXBuildFile; fileRef = F0030B71A6DC75CE9672B5AFBC38BCF4 /* FBSDKShareLinkContent.h */; }; - A777CFCF539A3F513A8C5F7FE13BB5B1 /* FBSDKLikeActionControllerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 64092AE7CD9ED392CE2C1C98A9D583BA /* FBSDKLikeActionControllerCache.h */; }; - A77FCB7E7A55AEE91A979C9826E453AB /* BFAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = FF2F36415F8EDA1603770F277D605DAC /* BFAppLinkReturnToRefererView.h */; }; - A7CA431377D4C785A52B31FF0CF83996 /* PFUser.m in Sources */ = {isa = PBXBuildFile; fileRef = FDA229BC6CB4CA9634C3016F0381557F /* PFUser.m */; }; - A7DF5029703C62DBC546E07E0FE68779 /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F812EB07D870BBFD5F42E05E17C7391 /* FBSDKMaleSilhouetteIcon.m */; }; - A85D40790F9D7EBE017FD8B069C2C6E0 /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B5E002FD0140DA26430A35510C313F8 /* FBSDKAppEventsUtility.m */; }; - A8BC3147665EFE52F3B865F75BA23479 /* PFObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F0A3A60E696009D78F7AD078F9E343C /* PFObject.m */; }; + A767E96A6CE480E5FA45CC5E4EC95039 /* FBSDKShareOpenGraphObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B1DBB7A5A5EE9B44DE86876D074207E /* FBSDKShareOpenGraphObject.h */; }; + A793DA615575121ABF52B15F879ED84C /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83F2B1D939804694C73E7FCD9AAF4090 /* CFNetwork.framework */; }; + A7C100D8A127E28B765E732D8FECE0CF /* PFRESTSessionCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 880D1361F22BDCDCF4A160F7DC4D54E5 /* PFRESTSessionCommand.m */; }; + A81EAB16D5FC59CD05962E2FC522F0B2 /* PFInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95864D7FD5998A21194F9D8966583E5 /* PFInstallationController.m */; }; + A8309002BE3C8CB4B12C239A5946538C /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CB4A5DFDF0DD0D7EA9036EDB4D3554F2 /* FBSDKContainerViewController.m */; }; + A83BC9FF2850C219FA5FC77FF4111CBF /* PFObjectBatchController.h in Headers */ = {isa = PBXBuildFile; fileRef = A6AE518E9BB5E93989AFB92589707FBA /* PFObjectBatchController.h */; }; + A8993E29255743428F03B37112AA10F2 /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D8D1722F7CFA8E2CC3AE2D1CE6B99CF /* FBSDKSettings+Internal.h */; }; + A8BCAA6D6A877FBD2678E40ECE7689F4 /* PFMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = FBC88190F20BFFBCE3E07DD0D3914E48 /* PFMacros.h */; }; A8D8E3DEAFABD7D676AF9512F9300E5D /* RKMappingOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0401D69DFE749735649FE64519D6905B /* RKMappingOperation.h */; }; - A9029EFD1C14F062F13C517D8E88863A /* PFObjectConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = A789217CA6DED8D71FBD896F412AD6A4 /* PFObjectConstants.h */; }; - AA2CA1664E0724EDB51E06EABE450CFB /* PFCachedQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 118801D377E51EA29C240E0C19C227D2 /* PFCachedQueryController.h */; }; - AA35FAD12964ABE7D0E88E0E1D65B4D4 /* PFDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A7B8336A363D3DD83ED3A4E4BDB5F0E /* PFDataProvider.h */; }; - AA6DB4FD502FE0EBE40728B7F13E749D /* PFFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 927F616936E0C7308D11300E5B788429 /* PFFile.m */; }; - AA9B525437E1E7B7D2BF539AACA6C8C2 /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = 36BFEC5CD6E83BF4C00AC37F0AFF0C3F /* FBSDKMath.m */; }; - AAAACC905C1BD976C1B46FF1E96D29C8 /* PFObjectLocalIdStore.h in Headers */ = {isa = PBXBuildFile; fileRef = BFEEFBE1C37274DCC4828D82311AF40C /* PFObjectLocalIdStore.h */; }; - AAB0B8BD8FEDBC51DC6FC0D6A589AFC6 /* FBSDKLikeBoxBorderView.m in Sources */ = {isa = PBXBuildFile; fileRef = EE70C5E8CCF28AFCC633F82542872D63 /* FBSDKLikeBoxBorderView.m */; }; + A8F268C9D52AC5573CA492C2F7E03B39 /* PFQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 63E89B2BE05AE41A084F3E0FA21250FA /* PFQueryController.h */; }; + A92DC8F6936BA258AE90BBD122B20E32 /* PFMutableFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = C1B00FE95A9B3F0051AAD3A5D6CE141D /* PFMutableFileState.m */; }; + A95E8A958E2B5FFE3CADAC891086BAD1 /* FBSDKShareVideoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 93C724D27975298397EBCBA024D076F2 /* FBSDKShareVideoContent.m */; }; + A9701262143DCEE268B962B9BFE490E5 /* PFURLSessionJSONDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 526321DDA0F9E9326B772985013A71DB /* PFURLSessionJSONDataTaskDelegate.m */; }; + A979FB0DFC6A823D22D18A7D0D37811D /* PFMutableObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = B009D5CAE876F03463C42923FD1BF780 /* PFMutableObjectState.m */; }; + AA27404CA04AC54AA9E61738546F037A /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = F8C129748EFBA2068A762010AD12AEAD /* FBSDKMaleSilhouetteIcon.m */; }; + AA6CA5E4490EFC5A8BC390DF50314B88 /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D597043658824DCA8FDD8CFFEE3BC6D /* FBSDKIcon.h */; }; + AA903B5AC7C383473DD981318E286C33 /* PFRESTUserCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = BD7AF50148F7E85655300B88C68AEFF3 /* PFRESTUserCommand.h */; }; AAE115E50155948641D97F4C4782327B /* TKEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 40C40C0517D7C210D4A32215DEB225C1 /* TKEvent.h */; }; - AAFC2366E62DD2348A58310FCB9CDCB2 /* PFCoreDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = AB09AD9EF87210D905F74E1C8DFF532C /* PFCoreDataProvider.h */; }; + AB24D4CAE762B51189295267F8E37C9A /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CD1576A49CCA998DA56187764ACAF229 /* FBSDKBridgeAPIRequest+Private.h */; }; AB64F843B89251A4F54B7E8811C2AD5A /* RKPaginator.h in Headers */ = {isa = PBXBuildFile; fileRef = EEC81F732F4810E132758A0C613E431B /* RKPaginator.h */; }; - AC209E9605FAF1609539975FC17E2443 /* Parse.m in Sources */ = {isa = PBXBuildFile; fileRef = 430C3FA8EA2C3E2BB22ACBE65DA6AC89 /* Parse.m */; }; AC3660E82309B97BC9F36F249A31936F /* RKObjectRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9863ED0E0DE0D5BD0D54D80394E2278E /* RKObjectRequestOperation.h */; }; - AC4077514D5E7D8D685B477929CD1EEB /* FBSDKLikeBoxBorderView.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B17C271B89B911A8934903A0081DAB /* FBSDKLikeBoxBorderView.h */; }; - AC49657D3C3E9041AF727A806BDA4B91 /* ParseInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = ACE0AE2BDDDC07FCC86BAD0AD53C4E89 /* ParseInternal.h */; }; - AC8705200765C036C92BA3510DDF381C /* PFNullability.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D9010B3F716FD1490351E8CB8BB8840 /* PFNullability.h */; }; - ACB2D6E5C8741DE88A68AE240837344F /* PFAnonymousUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = BF4B15119AA437DFDE6F525A227EEEA5 /* PFAnonymousUtils.m */; }; - AD140B8CB4ED9EE47ECA355BBC49D8D0 /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C21A8ADE7B5A34350D10B56CD7A8761D /* FBSDKAppEvents+Internal.h */; }; + AC568C3C40A675F03EAD39239E53BABC /* PFURLSessionDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F59D7CF8A402E68851985B96EE643B89 /* PFURLSessionDataTaskDelegate.m */; }; + ACA1A7271082155E745CD2B20E95ECA1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + ACB5EAF24E694839F813720C515B3BEF /* _FBSDKLoginRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 450E74CFABCD4AC3721543ED32395800 /* _FBSDKLoginRecoveryAttempter.h */; }; + AD1992ABEB845EEFCEAA32C8DF7D4115 /* FBSDKMessengerIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = CDD888F1AE46F190163FFB9C51D7BF06 /* FBSDKMessengerIcon.h */; }; AD42E75F3FB722607BC393109C580249 /* RKErrorMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 45B3E4226F866D5C78E3AE4441683829 /* RKErrorMessage.h */; }; - ADD2AA8D146F25FFD8BA1D4376F263B7 /* PFInternalUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 6983D73EF0F3315F55A0E4A3B5CDB1CA /* PFInternalUtils.h */; }; + ADB578FAF8C812D1521EF9D710A77A84 /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = A9CC220B3BB7353C4CE25F3392EC1458 /* FBSDKInternalUtility.m */; }; + AE78806AE38207F244401AB17528DD86 /* PFReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 8148FF7EFD96C224279A35AB3C828BC8 /* PFReachability.m */; }; AED780AA3103CE272620ABA5144C7EB9 /* RKObjectRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = A771288DA627C1035D810FE2E4D30B4D /* RKObjectRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; AED7DD46159F1525CBAED2B765B6FBB2 /* SOCKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FE09EB1BAFD6593655A66644AD9F2C0 /* SOCKit-dummy.m */; }; AEF152DEB9D69B47F9BBF7E427E90A0E /* TKStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = C7A3C431941CA5458B46FDA87ADD17E9 /* TKStateMachine.h */; }; - AF05B25B63B0981E9B51311FB1C7FBA2 /* PFErrorUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 8252E3628FCD0DD24332FF33C10A559A /* PFErrorUtilities.h */; }; - AF7F585D873E31A4CA37FF5C3E6F6818 /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B84882EEBE825A5C543B49CE80D4F1 /* FBSDKAppLinkUtility.m */; }; - AFD06D4B1D7FC7846C523BAF45DE28F4 /* PFKeyValueCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CB0A624CCA1DF78752962F81F06BF119 /* PFKeyValueCache.h */; }; - AFF7143C45D4D0CC1DFE3E0BCA02F77A /* PFPushPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = BAD0E25E939779D3CB767BDACE17F6F7 /* PFPushPrivate.h */; }; - B03FF153F1F75E2ADB673B98C7879532 /* PFAnalyticsUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CE8D7CE43C005885F4A5981957F20A1 /* PFAnalyticsUtilities.m */; }; - B09ADD46335ADB6E340FE94F12EA2A7E /* PFInstallationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3268179096664214C41900456AEC9D52 /* PFInstallationPrivate.h */; }; + AEFB17E8179A42AC76C5C46678A1E984 /* PFMultiProcessFileLockController.h in Headers */ = {isa = PBXBuildFile; fileRef = CE9E97FF37E3D5E9F5A1F4E619520D56 /* PFMultiProcessFileLockController.h */; }; + AF0AB1770B1B73163384947DA948E4C5 /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 241D1E7CB01A87C87C02CE0340F5DF83 /* FBSDKErrorRecoveryConfiguration.m */; }; + AF5D4AA78614DEC968FD73B77E1DCA9F /* FBSDKAppGroupContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 309C5A18E36D89DDB6DB309BFFB3A074 /* FBSDKAppGroupContent.h */; }; + AF6EF01D6DE6C310DB3AC87B40F61750 /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = 4606174FBA2263954939C4357F44E377 /* FBSDKSettings.m */; }; + AFE0272593838261A88EF7BD17E68888 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C37F0ED993AA0D0D75072F2D2A6865AC /* Security.framework */; }; + AFE365CE206F3E6364AAC8BD50C0AACA /* FBSDKShareLinkContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D03DAC12EBD0056CB252F2F287B6402 /* FBSDKShareLinkContent.h */; }; + B0804AA5BB8D7B57D52A32F72AB5ECBB /* PFUserAuthenticationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 739CA807E35A38705E95A5061E4DB05F /* PFUserAuthenticationController.m */; }; + B0988D5E960A95FFD910D24D11B59AB1 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = 20D0533465677FE2928E4C7429447F7E /* FBSDKBridgeAPIProtocolWebV2.m */; }; B0E57247D491FAA4B3F4B137595AD3E2 /* RKMappingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BAB7DDAE6FE91E089EBA417E69790BB /* RKMappingTest.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; B0E5D758FA09DBF05C5A27C53D9EC1DF /* RKDotNetDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 079E082DB0D5553BF25A89DDB3AF9428 /* RKDotNetDateFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B0FEC135BF9D6D4B7A607FDD74C18A8C /* PFCategoryLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = A08562E12462CC984D8E3FDD78C62842 /* PFCategoryLoader.m */; }; - B15373F23FB7B5D41A62CA92BBDD567C /* FBSDKLikeObjectType.m in Sources */ = {isa = PBXBuildFile; fileRef = F492164F566E8CFCD2E106F61A435A12 /* FBSDKLikeObjectType.m */; }; - B157A3081D8AD9514467DEBBD55548BA /* PFFileDataStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 864FC7E084B3C08400F30878D1F110FE /* PFFileDataStream.h */; }; - B17929E1C88665A99445109C8F92D122 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - B1F19F69BC6BE89750CDE81D08ECE259 /* PFMutableRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = A2DB5E0FF2D801AE5355483A207C2316 /* PFMutableRelationState.h */; }; - B245EEC679161A0C25552C1AA06F3EC4 /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 49B32C446E230AF54905CEEA3305D3DB /* FBSDKUtility.h */; }; - B2588A9E069571F52CD24483884A4AE1 /* PFNetworkCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93A85BABE61F3728712E0E5208270B19 /* PFNetworkCommand.h */; }; - B26EA1195C31C123334CE61F105FE393 /* PFRelationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0830AA4DD7D7479876C01AF8CAC79CE3 /* PFRelationPrivate.h */; }; - B27D97B8AB65C9259475002C793F08CD /* PFObjectFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = AF18B2AD10D7C8A2EBA61B5AB51D00BD /* PFObjectFileCodingLogic.m */; }; - B2879C1150D1DB443CFCD96DDDB49E45 /* PFFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 67108DAD07BBED97E0992E85B0D42C85 /* PFFileManager.h */; }; - B2B049AE4A156340F9AC769AE6A8E779 /* FBSDKSharingContent.h in Headers */ = {isa = PBXBuildFile; fileRef = E07CBEB86CA06BB0017BCA02C44A2757 /* FBSDKSharingContent.h */; }; - B378D082DD674BA3C9DF87ED99FDBE4F /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ABB8ADA56E3C960C54BA1289E7ECB2E5 /* FBSDKCoreKit-dummy.m */; }; - B39DAC4258721979718AF68CFFDF2F74 /* BFAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B9375688AA4B17E0481C9DEF5E1CDC7 /* BFAppLinkNavigation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B47819184E10C7AAB004E897ED18EF54 /* PFCommandRunning.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CB8F4A546D9EAEA058287BFFA939C49 /* PFCommandRunning.m */; }; - B47B62F95C9E76C01E70EABA2BA467E5 /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = DD19C370DA2FF7DD5B14BFC2239460EC /* FBSDKCrypto.h */; }; - B49E65590447C056177C4650F8276BA7 /* FBSDKAppGroupJoinDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = D2FD3D5C2EE761325B9883A907C8BC4E /* FBSDKAppGroupJoinDialog.h */; }; - B519F723811EEC0DAD613CEBFE109F92 /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = A633AA451BBF3810EF096AFCD04B189D /* FBSDKBase64.m */; }; - B57D2233586CE946A5305009412BCBAF /* FBSDKLoginManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 99FE17414C621D6F3A13235F179D4CB8 /* FBSDKLoginManager+Internal.h */; }; - B588C9394F86C1AC804378104F746AAE /* PFTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = AD7E73D7FC8878A9DBB9C6C91A6EF948 /* PFTaskQueue.h */; }; - B5E5FB68DB75A0C066EE77B2D470BE2C /* PFACL.m in Sources */ = {isa = PBXBuildFile; fileRef = DC4F66E6A3F1DC8F241BBC37BD38824F /* PFACL.m */; }; - B64274ADB723090A619329059E5367B1 /* FBSDKShareUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 83106886E9A710F3579F2BBF35D8C99C /* FBSDKShareUtility.m */; }; - B66711307BD952379D6E1E973D233DD7 /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 29BDAC347646877BAF67F12CBA39BDB2 /* FBSDKAccessTokenCache.h */; }; + B12CD120D83F1BD943F435B1A23C520F /* PFLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 482DBED41E33C8058B42A4F92B753528 /* PFLocationManager.m */; }; + B19A97DC943FB4E19F93DDBA191CB207 /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BCB5525ABC0E01EC9A5E1CE8D86FA7E /* FBSDKAudioResourceLoader.m */; }; + B2C6E37E2C065FC66826699D97C5D1ED /* FBSDKAppInviteContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 705296E1BAA1CCE01D2761F16F9A39F9 /* FBSDKAppInviteContent.h */; }; + B2D1BE493F82C5FA62ACB829C637A9FD /* PFURLSessionFileDownloadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = D4AAA8F6AD3E666763DAE1F0E91D3778 /* PFURLSessionFileDownloadTaskDelegate.h */; }; + B2E3C4EDB24F3AB1FBA90FD0BE64084D /* FBSDKShareDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = E7626F8EE9D02540ADF0E346CC475FD9 /* FBSDKShareDialog.h */; }; + B3172572E215E917E15B5D1F66848737 /* FBSDKShareDialogMode.h in Headers */ = {isa = PBXBuildFile; fileRef = AA6E69D0F5432BE35E8DA343DA6002CE /* FBSDKShareDialogMode.h */; }; + B34BA7C37D5734BADFB67559C697D4C6 /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B33E74020A598273E33D945062DA71 /* FBSDKGraphRequest.m */; }; + B38FB84EF934643476AD18AC3DC7795F /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 56EBCB94D96659853670372C2E4764EA /* BFAppLink.h */; }; + B39FA2BABE548E38CAED91EA3521722A /* FBSDKLikeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 58D0E28B48A7E32F9FF7005DEE64C416 /* FBSDKLikeButton.h */; }; + B3C71031709F94AA5745619C081ECC54 /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BA219A4F7C2E6E8A63E64A02CF33B649 /* FBSDKGraphRequestConnection+Internal.h */; }; + B40E3C07ABC858EDE2640EC014401187 /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = F05A809941BD13C88B6FA6CFB232C9FA /* FBSDKAppLinkUtility.h */; }; + B4275D37EB15EE59E93DD5EC6E51B9D4 /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = AE305CCADD2010E8C1E698C4DAC84DDB /* FBSDKGraphErrorRecoveryProcessor.h */; }; + B4EE6797178E18BDEFC03A41CF458AF1 /* PFEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 4077DBC410381FA11AC51C618CB81140 /* PFEventuallyQueue.m */; }; + B557BEE7C912C3A6C487A2FA3912A871 /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 87E3F9DDEC8ABB74E9B0B828E43E6A50 /* FBSDKGraphRequestMetadata.h */; }; + B636B7948DCCB21E44E36BE91F1E0AB4 /* PFEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CFDCCA1B3C5C08CF8E7EE0036580FCA /* PFEventuallyQueue.h */; }; B6BF8650AC031C390261566634596617 /* RKObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A7897D08498CE169C9E0F8BA5015E80 /* RKObjectUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B7FEE49B9428B57AEBB3A3ECFE8EEB59 /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E1C86507B3C7A9D987C1EE846A6E40F /* FBSDKGraphRequestMetadata.h */; }; - B7FFAEE017ADB38FE772A10494491305 /* PFCurrentUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A1B35A988D4E5D81E613F216581696 /* PFCurrentUserController.h */; }; + B6F7BF2A4B571A2A96D44A9E3D428C14 /* PFCommandURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B3BA8EBCD60ED1F31A2098334DB3278 /* PFCommandURLRequestConstructor.h */; }; + B6F9832AD636177E140EC01E3DC164B3 /* RKValueTransformers-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DD18A5D9607E9AB948A055344CD3E4C /* RKValueTransformers-dummy.m */; }; + B70D423A46D26F002B8E7833DD868993 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BF466CB1A2B08C6FD3F60694F3E8D34 /* AFHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B7AD629446C47B305E6630373410BFC2 /* FBSDKLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = A32731565F3850539FE9BBB6231B50DE /* FBSDKLoginError.m */; }; + B7D7114D6E9CBC710116992C71349DB2 /* PFRESTPushCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 9161913CD82800463279FFB15D5628FD /* PFRESTPushCommand.m */; }; + B7D722B63D54738AE3DFDE260A5EA8B1 /* PFObjectFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = C9335D1EB92B88713E8308C849C0EDF6 /* PFObjectFileCodingLogic.h */; }; + B81C208B8B66805EFD26D6173026AC2C /* PFACL.h in Headers */ = {isa = PBXBuildFile; fileRef = E9AD71E14E72EA9FB548AA268856C2EE /* PFACL.h */; }; B8291EBC0CA538454602E54BDA92A1B7 /* TransitionKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 15854EBB45118A734AE77C8EFB408F10 /* TransitionKit-dummy.m */; }; - B867985361289320989E515B5ADFB9D3 /* PFObjectEstimatedData.m in Sources */ = {isa = PBXBuildFile; fileRef = 76138EE2803A9EEC58C7D5AB7744121F /* PFObjectEstimatedData.m */; }; - B8981DC6E7D7A4BDA55AAAA0A0DADF7A /* PFAnonymousAuthenticationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D4DD0CA2C38FD64FC4C4C5AC5AA6EF /* PFAnonymousAuthenticationProvider.h */; }; B91017DCA447D4FE665DFBD4F534207B /* RKPathUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 27D73CCE08122C37FC401A9805E8033F /* RKPathUtilities.h */; }; + B93DA9F9AAAC90B3CF0D7E92863E1E1A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; B9825AB10AEC3548EC0716A1880B163C /* RKMappingOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E201DE8EA287BAFA4B7303204B5FE3C9 /* RKMappingOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - BA652EEC470ACC0671819D24AEE64FEE /* RKValueTransformers-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8343EFF681B40307ADDC80DDE71AA45E /* RKValueTransformers-dummy.m */; }; - BA989D0DD52B618B74EC629A3B011787 /* PFObjectBatchController.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D414278778C63DB1AB1454092428F09 /* PFObjectBatchController.h */; }; + B9C0CE43FCAFA07D17732462A67DF31E /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DB6831426CD60ECF9EBFBFE5472A43A /* FBSDKAppLinkUtility.m */; }; + B9D14F6B67015F967B4F523B6669BB54 /* PFPushChannelsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 10A45B9F776F2A6EE5C3BE2ADD460FE3 /* PFPushChannelsController.h */; }; + BA5CC6A82E079E00AF7E360718D52E02 /* BFTask+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = F82017D76300F1C06DB5151CF37A726B /* BFTask+Private.m */; }; BAAFB1BC360F105F6FDAEBF3E19F8195 /* RKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = CC29231A76F0E95942D3AC8EE9C06770 /* RKMacros.h */; }; - BAC969FD3E5FCC80C60299CD3FDE217B /* PFMultiProcessFileLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 06CE7699540EF590425A414A8CB424CE /* PFMultiProcessFileLock.h */; }; - BAD3634DD55B62F98958378C48C5B4E0 /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 205D68C9BFE7AFE003B0D6E31B36DF5C /* BFCancellationToken.h */; }; - BAE6222F2912EBD93ADE0E92604AE75F /* PFQueryPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CC527AF2B9F34C2E793791D4F3AE0A4 /* PFQueryPrivate.h */; }; - BB0C549E6C0EFCCA6A834D5C796E604F /* PFSQLiteDatabaseResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 653FCEE976AC25D86C5BD4646F8893B3 /* PFSQLiteDatabaseResult.m */; }; - BB45519DC0D5AD108FD74D6FCA9E30C3 /* PFURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = D2121C834D82A31D9AC3183B2DCB31BB /* PFURLSession.m */; }; - BC7868CFACD5A90AF4539B10B0C530DC /* FBSDKMessengerIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = D06E4D2A257CB23AD3B3C24D65250338 /* FBSDKMessengerIcon.h */; }; + BB0C27D3702176E45994721057D7E9D2 /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = F65CAB845C91DF90E658BF037D025845 /* FBSDKBridgeAPIResponse.m */; }; + BB1475554304D738587A02F9B98E3D56 /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = FBE8E68D5C283727E833E0BB6BFC38D2 /* FBSDKCrypto.h */; }; + BB222C1527603C41557CA526BDCADD00 /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E20B6D6E904DDB31FF4F6654458B9DE0 /* FBSDKAppEventsStateManager.m */; }; + BB36C49D67D82E942DB0A83D4DFEE962 /* PFThreadsafety.m in Sources */ = {isa = PBXBuildFile; fileRef = E754D1AA7F49F27BDF54A28A7335AC74 /* PFThreadsafety.m */; }; + BBAFA237B5759EDF4ED29549B8B7B434 /* ParseManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 610CAB8E8825EC6BC293F21E90DD6315 /* ParseManager.h */; }; + BC4E7DE5246BF5D9DA0FAF8D6A8C86B6 /* PFCommandCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C7FC38C024D78EC53EEDA5E5B3C97E1 /* PFCommandCache.m */; }; + BC7941F946ADB340B252C6406E2DA921 /* PFSQLiteDatabaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = 453E27BE733413CA48A57B257194DA21 /* PFSQLiteDatabaseController.h */; }; + BCAAC8E1D0770BFFBC24DC2255F5110E /* FBSDKLikeControl+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A3B0127A1E076EFFEE0400BFD1119C /* FBSDKLikeControl+Internal.h */; }; BD1266880C3D947593D65CCDF3FA2F04 /* RKStringTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CB0738F082CD21988DD84404C1406E6 /* RKStringTokenizer.h */; }; - BD853F3F44E8E1D611FC0223EEC51FF6 /* FBSDKBridgeAPICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 39EA90D4F4D435F351B6F8488F1F81CF /* FBSDKBridgeAPICrypto.h */; }; - BD99460B57092B0D6787EC27F99FEB62 /* PFMutableACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D63F2855FC61EC1E5A671306404454E /* PFMutableACLState.h */; }; - BE86AE3D6076FE73FA922D2531C8B894 /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B83052F7D6EDB1CBA5F3BE48FE41B542 /* AFImageRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + BDF22FED7BDF2A1AC98DA87785F4990B /* PFEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = C4FECFD27C3DF785E2765FF781CE87C6 /* PFEncoder.m */; }; BEFA1BB782F90B9B3A3F263F7E5A4F45 /* RKMapperOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15EE98D2719FAA6A81AAB54A7E471D /* RKMapperOperation.h */; }; - BF2FDD475712B1686040E596399FA9F9 /* PFPushUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 6775409B0E8C0788D2E094C7C5218464 /* PFPushUtilities.m */; }; - BF687234E9B46A43074E882CC6D8C4C6 /* FBSDKLikeDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 40D041AA460AE7AD2009874357D2204A /* FBSDKLikeDialog.h */; }; - BF7783BA3CF0BE676356BAA176D27708 /* FBSDKLoginCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = B9254F90896402000DEE03CA2001F4A0 /* FBSDKLoginCompletion.m */; }; - BF858895504CDB8D3AB4361E782EA8C8 /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 62463AED6B63FD1BFCF534909E594242 /* FBSDKWebDialog.m */; }; - BF89FBCCE7066221E7F2A987DD4E84CD /* FBSDKShareOpenGraphValueContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D657474E403B993C149CC1F51629EB2 /* FBSDKShareOpenGraphValueContainer.h */; }; - BF9082656BF7F73899B73A2ACD3B64B8 /* FBSDKShareError.h in Headers */ = {isa = PBXBuildFile; fileRef = BA24326AC3CD75BD5A00788CED0B32FC /* FBSDKShareError.h */; }; - BF9F546490AA5AC45DE849AA0A5AACC4 /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 249868FBCC4788A742D8CFD87310BE9C /* FBSDKErrorRecoveryAttempter.h */; }; - BFD3B90B0754D38A0C16EAD8AB8C40AC /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 20C0209C7621AD4E7C7E895393FEEAAE /* FBSDKGraphRequestPiggybackManager.h */; }; - BFF27D79C3F860E354C5009D58D8716C /* AFImageRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FE0AA3631AA8F7CFF57EB3EDC6CB5D1 /* AFImageRequestOperation.h */; }; - C03056C7F18562A2E8DAD4A98F668F95 /* FBSDKShareDialogMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2210879128FAFD55EE381E85138A6E97 /* FBSDKShareDialogMode.h */; }; - C078740598701CAAD4A763C78B3F6CC6 /* PFApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = A513E815CB0531AC54B80FD774351B67 /* PFApplication.h */; }; - C090E9788C1AAE44F019D971AF5CE896 /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = E4FFF0B95027627ED5EBB9BE910229E5 /* FBSDKButton.h */; }; - C1940E183A577F58BCCE1C9477D12874 /* PFFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DE04FB62AD4572A1EF2E388614A2906 /* PFFile.h */; }; - C1CDC0DE66D93D988EF14107C6FFEA66 /* PFQueryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B996498C593C09462CB17300BB0EA209 /* PFQueryUtilities.h */; }; - C1E6782A28C64F9F738190329D22EBAA /* FBSDKAccessTokenCacheV4.h in Headers */ = {isa = PBXBuildFile; fileRef = 36625BA3EB692FB9405C776E41327F85 /* FBSDKAccessTokenCacheV4.h */; }; + BF1C6799D780ADDDCDA7D058104CE7B7 /* FBSDKLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 31DC2BEB54C59BD2AC3FFC21BDBB71E5 /* FBSDKLoginManager.h */; }; + BF9D0B0AC5B64450EF283AD7DBF7BECB /* PFURLConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 814BAB5BB856170E11D9DFE9E26A888C /* PFURLConstructor.h */; }; + BFE2F9CF01E7E57239C3A42BFD1E94FA /* PFOfflineObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = F04D615547733AD44304C987C2896316 /* PFOfflineObjectController.m */; }; + BFFAFE33C8F059284278D6CE3904FA10 /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 746403A7CAF94F397758C55ECC719138 /* FBSDKServerConfigurationManager.m */; }; + C040AE49A4F217651810F5F139C425CD /* PFRESTCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 16784EC95D6273ED6752D7B64213E746 /* PFRESTCommand.h */; }; + C1B85ABD14ED49BA35A4D5265DEB7122 /* PFMutableUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = 81DB7CA7AE90A4BA6CA4297DF013CBB2 /* PFMutableUserState.m */; }; + C1DCBB421C9D9B70A11D5B59DF9021A7 /* FBSDKSendButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 23EF53286E86923DB4C02DDCCA3A21CA /* FBSDKSendButton.m */; }; + C1F4CDAC9CA5FE6D7CB0081CA2C324AA /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = FADD5491782A7EB7B850FCCD70452A0E /* BFAppLink.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + C2109470083A011CBF0F9E49068D88B1 /* FBSDKTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = F094D3053EC8059B43C8FDE85B6CC097 /* FBSDKTooltipView.m */; }; C2406F161CC120D07B885E6D8D930DB3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; C2503B39C1C2D967300A807F22D1E892 /* RKMapperOperation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BA732D4BA53C90B93834949CEB41543 /* RKMapperOperation_Private.h */; }; - C2859D56FBEAF9577EB7E8FF91E9B087 /* FBSDKSendButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AA098F387A57A706C7677CC210587E7 /* FBSDKSendButton.h */; }; - C2882692DD474D2AFD75B8B04749F85E /* PFKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 177385813576F961AC0390A29802236F /* PFKeychainStore.h */; }; - C2EC239FDD7C6CD0C21A9DCC052F67C8 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = F651120BBA44138D57BED00C2ED1EF68 /* FBSDKBridgeAPIProtocolWebV1.m */; }; - C2FEDEEB9C729E257CC014D75F58C3CA /* AFPropertyListRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 45863B73565B4D9E4E17BBFFEA8FF6B4 /* AFPropertyListRequestOperation.h */; }; - C306BCCDD560BCE285958E022D4ECFC3 /* FBSDKAppGroupAddDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 0604B97C12B3337FD1CACD5908DADF8F /* FBSDKAppGroupAddDialog.h */; }; + C2974D56740D2B143BA77AA3509AC10F /* PFObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = AE094855CA351D584BD24BBC12AFB3F8 /* PFObjectControlling.h */; }; + C329A2C3C249A90EDB60FC6A339EF9E7 /* PFSQLiteDatabaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB98FB4B596C25CC1243E4E50B93731A /* PFSQLiteDatabaseController.m */; }; C343BA12ACC7E8A1AC5463DA206136D1 /* RKObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F840FB713741211963007A36C4C972B /* RKObjectUtilities.h */; }; - C46D5F22B6391A33D7AC02797B5EA6B8 /* PFRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = C8ABE6E22040D86F536BA83C9995342B /* PFRelationState.m */; }; - C47010D70B05E89ACDFB064C72E502A6 /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = 0801E5E29361C01869760055DF9A576B /* FBSDKButton+Subclass.h */; }; - C55588B6E21DC2DEB96428E8085987B8 /* ParseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 09458C192035B62F6C206BA8051E7C08 /* ParseManager.m */; }; - C560005F785CD4166BE55BAA01D3F544 /* PFPushController.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B61A09FCB4522CC4CD9D7C2BA8A566 /* PFPushController.h */; }; - C5E6B7F61C259BD6D3FA842E34D77C05 /* PFInstallationIdentifierStore_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 12090BC886A58C9962169A136F7BBD2A /* PFInstallationIdentifierStore_Private.h */; }; - C6056E64ADBD421AE12B55FB83E44322 /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C61DC5A959A8218D355C33FFDD05395 /* FBSDKTriStateBOOL.h */; }; - C6882967064B59E981B552B8B73F478D /* PFCloud.h in Headers */ = {isa = PBXBuildFile; fileRef = A2F1242F1927A230F84F0CBB923D800D /* PFCloud.h */; }; - C69BE12C115BDBAD55BE9669643B5231 /* FBSDKSharingButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B0819CE19B7C8DFC00BC735593D2EBA /* FBSDKSharingButton.h */; }; - C7621E1B2201C72E1A47178CB0FB6F9C /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F34EDF50D35D822209224F910D198B22 /* FBSDKAppEventsStateManager.h */; }; - C7AAFF985AB1FDF2B886321D84074282 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E541C23946CA00EF697F8FA44AB271F6 /* Security.framework */; }; - C8DF6DD47EDBF3FDBF944F075FBC6C05 /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 63D0078344D4783DAE24EA204C2F2B76 /* FBSDKGraphRequest.m */; }; - C9151DCB3166821A4E47D74D40728411 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F79376118E5A7FF02BC96514483BD1A /* CoreLocation.framework */; }; + C3508C617AD42C6C7408ADD4A07E4676 /* RKValueTransformers.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B6C7232F24CC263AED71695EF279E34 /* RKValueTransformers.h */; }; + C3B1E6F9F461A3253BF8E3430905C0C2 /* PFMutableQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = 623C2B3361739718CF09561BA4D026B7 /* PFMutableQueryState.h */; }; + C3F55093F84D852D9EA113F49D7A45B2 /* AFXMLRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D2CAB276E3575E9D3DF2E0990BE0F69 /* AFXMLRequestOperation.h */; }; + C4EE4B4647BA408211F27846E6200FE3 /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 377BAEED2390B90A3A797FBF573227C9 /* AFJSONRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + C5172C7357A4F357EDE4944A55EB4799 /* PFURLConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 917E881A4D1DE9E99ED3B7606F09E16B /* PFURLConstructor.m */; }; + C53105DD999BE471CFE79E49C78876E4 /* PFJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EAF15F0F0DEC2E2FEC93095CB96203C /* PFJSONSerialization.h */; }; + C5393F0246F98DAE25615EC3DD478518 /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = CD2EA7078774EF7F78C945F81FD00274 /* FBSDKWebDialogView.h */; }; + C568E296A558287E14B65E5E078CB870 /* PFSessionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AEFD9424D0770F6E0BC692CE0AEE27B /* PFSessionController.h */; }; + C57EEF06E76A210624FE97692F3569DF /* PFObject+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = C26C64018F45E6E09F72163E759ED45B /* PFObject+Subclass.h */; }; + C5925266C50DA857D903C5BEB587E7F0 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */ = {isa = PBXBuildFile; fileRef = EDF463E3926C635EC2862C35B35EF0C0 /* FBSDKGameRequestFrictionlessRecipientCache.h */; }; + C5B1AF644B631A4EFD9F5906174E5580 /* FBSDKShareKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A2200960479E4759E2409514013ECE9 /* FBSDKShareKit+Internal.h */; }; + C65CB0D6735491709C9373251CB51613 /* PFDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 99E458C281E7B58FB283CD3DD6EC7CC7 /* PFDevice.h */; }; + C6643189C3F72B706900C785D63D1260 /* FBSDKSharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 433C981127868BA24B0F88745E7CB575 /* FBSDKSharing.h */; }; + C6F3BD5EC9F02F543DC1AE79F35DBDD2 /* FBSDKCheckmarkIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 81F2926280C12B9767563CFF770FAF7B /* FBSDKCheckmarkIcon.h */; }; + C7211D3C98D5D275A3598C792B879C2A /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = A49E03FC7C84FA3293B38677DC681CCE /* FBSDKErrorRecoveryConfiguration.h */; }; + C81E336F8975161708D61907D4BECB52 /* PFCommandURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC4419E8BD5B8ADC92BB34FE1D6FC78 /* PFCommandURLRequestConstructor.m */; }; + C8F19E6DFE73A0B5BCE6E47ED67E4904 /* PFSubclassing.h in Headers */ = {isa = PBXBuildFile; fileRef = 7329F4C215D23C5B157437CD3ED3DC86 /* PFSubclassing.h */; }; C933A60476A5EBDB9A82574B7BFDAE6D /* RKOperationStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = A397240CB17A369FA7286D7ED09FBDD2 /* RKOperationStateMachine.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - CA4B00CC15344D45D5A3F1589AE8DE04 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 3893550463B3F2896DA11E95A24787C5 /* FBSDKGraphErrorRecoveryProcessor.m */; }; - CA6B9AA9F5B228BA5B3E3789A0BB0D0B /* PFUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = 00362EC9E1B6EFC1EED72CCE1F5C6C63 /* PFUserState.h */; }; - CB383B20C6379A28C46A6B5AEC5EFC6A /* PFACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = 65C562DA788CB34774AC6A956A6F1D40 /* PFACLState.h */; }; - CB7D55A007ED7936F349A5E63C7503C0 /* PFURLConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 260ACD6713EAF6AF8913E567E5D000B1 /* PFURLConstructor.h */; }; - CBCEDE735334E3E1E16E45A245C96E3C /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = C8E979B43D80A6C9E821A1BD3B0C7F51 /* BFExecutor.h */; }; - CC2BB71E5443EDCBB2E5F4EAC24ED987 /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = 2890440E42FDEC4C76D4C02BC10E1DD4 /* FBSDKError.m */; }; - CCF4B724BE469464F638A4DF640C7238 /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = B7200C42FD7821618E5C729A6715D406 /* FBSDKGraphRequestMetadata.m */; }; - CE991245FC044DFF4588087784AF09C5 /* PFCoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C807E842A64AA6E448D999BD0EA2744 /* PFCoreManager.h */; }; - CF1E4ADCDBB95E4626548A4EED8E955F /* PFInstallationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 27B54F6FA7D889D22C88195CA1B1EA1E /* PFInstallationConstants.h */; }; - CF2D29BB657128E16D30D1A8626D5A88 /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = D5F4A79DAE04667AB0D76DAE48003BF2 /* FBSDKAppLinkResolver.m */; }; - CF85133D70F60133609BD2CA91585CD7 /* FBSDKSharePhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EE9FF43D6D45C08905B6D53343591FA /* FBSDKSharePhoto.h */; }; - D04FDE92822D348AECB997E83FC68F16 /* BFWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 79E1D204CE90D1BA1A7B1CE8E631A4A8 /* BFWebViewAppLinkResolver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D0B4AD24608D2218B257F4C549DC71C5 /* FBSDKAppInviteContent.h in Headers */ = {isa = PBXBuildFile; fileRef = B9DDC28C55F77A12AE9ED00D59C5CDF6 /* FBSDKAppInviteContent.h */; }; - D1301D79ABEC0BF7196AE13B6607A522 /* PFCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = 27E46D6B718D04CD81F500D08BDCA779 /* PFCloud.m */; }; - D213984A523601FD6D41B52BFE1ECF87 /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BBEEA079EE2C1E3F7FCF0D4A242F3338 /* FBSDKServerConfiguration+Internal.h */; }; - D219581FED0361CDF8034A264783166F /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 2166AF7026817E78A1616576AA382EE3 /* FBSDKServerConfiguration.h */; }; - D26DAD2583E28F0B6448456E3DD375B0 /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = FBD4CF261D1D2C204727792A7FD59D0D /* FBSDKCopying.h */; }; - D2A8C4B9A699BBD20DB117AC788C589A /* FBSDKAccessTokenCacheV3_21.h in Headers */ = {isa = PBXBuildFile; fileRef = 386296E81D7A932F1BD2EAE4210CD7B3 /* FBSDKAccessTokenCacheV3_21.h */; }; - D2E8BB454506B4D5C4FEA27852E0DE9D /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DBD4C55AA3FFD740DBC08F5C47D6E0C /* FBSDKGraphRequestBody.m */; }; - D312B0F84468E555BC85724BA429E0A0 /* FBSDKSharing.h in Headers */ = {isa = PBXBuildFile; fileRef = A153B9B34087207BF3F8415D46B5F822 /* FBSDKSharing.h */; }; - D443B04560E387EB30A0602FD6FFD975 /* FBSDKAccessTokenCacheV3_17.h in Headers */ = {isa = PBXBuildFile; fileRef = EAF2E74037EC3A295A7DD2A670A1D20C /* FBSDKAccessTokenCacheV3_17.h */; }; - D47FB87AFAA9EAC94A8EDA555CE8B7D3 /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E5BFC99B4A9E8CFC77CB440E5B6A68F /* FBSDKIcon.m */; }; - D4830E7DE681EE028A47000F46DA3E1A /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = BC87F50A886AA4FC59C239579C59B23A /* FBSDKProfile.h */; }; - D4C629703F45ACEF8834A74261A24F16 /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C357F8599ACB541583E1B55372A148 /* FBSDKGraphRequestConnection.m */; }; - D4F8178AF98C8C6E22AB9A281869B5DB /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DA277D34C0546D8D8E80D99DCCD844A /* UIImageView+AFNetworking.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D51EBFB6E359281876FAC27C321A4EF5 /* FBSDKShareButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 547B33431DB5136808EDC0F26EC4181E /* FBSDKShareButton.h */; }; - D566CA65A0BD5EDD393D418D0E38F785 /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EF29D84C9187AAE24AA165B2347ACAD /* FBSDKGraphRequestDataAttachment.h */; }; - D56AF31D9DF6EB1FC56376F94A42BAB7 /* FBSDKLoginUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A4672908B1FD7E4D44907A16C893880 /* FBSDKLoginUtility.h */; }; + C971A3D41DB725E39B62BB285C71C602 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = FA8008ED57F2E69D54C3AEA23F96BA4C /* Bolts.h */; }; + C9AAD787079AB91D540B2756E1EF5ACB /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8288294A4CE8FE42A9FED3E1514725 /* FBSDKDynamicFrameworkLoader.h */; }; + CA1C8CD372D64F4E529A6A9C938CE543 /* PFHTTPURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = C0F87532434A412B133BDCA0E76634EA /* PFHTTPURLRequestConstructor.m */; }; + CAD3986F778DBCF207A2C0FFCA781B8F /* RKValueTransformers.m in Sources */ = {isa = PBXBuildFile; fileRef = 704C843E9911E15531BA4307B0AB6D03 /* RKValueTransformers.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + CAFEF18BDA8E890B2A34E2F062ED481D /* PFMultiProcessFileLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EC7D96BC9F20D61C8C0611234289492 /* PFMultiProcessFileLock.h */; }; + CC4ABE41A3D33815B2E5D706EE5EB7A7 /* PFHTTPRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D56D65949ED50DA5A35630E0B93DDB5 /* PFHTTPRequest.h */; }; + CC991729BDA464C7B9795D7AAC0A8F49 /* PFRESTCloudCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = D47B3859C74BA3AE467FE98CFA3EF2A7 /* PFRESTCloudCommand.m */; }; + CD078679449BAC5362C1E6A7EC58D0F6 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C37F0ED993AA0D0D75072F2D2A6865AC /* Security.framework */; }; + CD0D8051BB45134BC9996732E8943B71 /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D2DCC014C9FB0F4706377719D5E23C9 /* FBSDKAppEvents.h */; }; + CD11060540E1FD78F974E30302AE395A /* PFKeyValueCache.h in Headers */ = {isa = PBXBuildFile; fileRef = FF82E57178981723142A0A7CBC372284 /* PFKeyValueCache.h */; }; + CDCDC39FD4BD597F9171D1C12AFEC71B /* PFOperationSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 2515970C08E7445D9A26AC8952E7FE41 /* PFOperationSet.m */; }; + CDF1776F197A349F242D0418BA069855 /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B98304BCBDE12F2AE18BD8F746580A4 /* FBSDKColor.m */; }; + CF3C3F13840C14F05C1855797B0B2E5E /* FBSDKSharePhotoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E52C541820F569B77A87A851D648583 /* FBSDKSharePhotoContent.m */; }; + CF40CA510403A77414543BB76DFE4884 /* FBSDKLikeActionControllerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 335878EBC1626AF73529ED5CDC829E08 /* FBSDKLikeActionControllerCache.h */; }; + D1840F29C46B62C16A3A6D9AD6989746 /* PFAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = CDD6D2BC7E281738DA57375BE59728C9 /* PFAnalytics.h */; }; + D18B21176DA8F8A2169AA06636F7D2FF /* PFSQLiteDatabaseResult.m in Sources */ = {isa = PBXBuildFile; fileRef = D4BD0B686B0EF4B81ABCF468BE4F3F99 /* PFSQLiteDatabaseResult.m */; }; + D1AF91CB46215FCCEA2F679CF6667F16 /* PFRESTFileCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 225CE2C43ADC4EF1A17EA9FF67B4F977 /* PFRESTFileCommand.h */; }; + D2B2D34B0D45985A59E6D8E0323DFEF3 /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 778AD9DB2CF0543C914F6BD394974650 /* FBSDKShareOpenGraphValueContainer+Internal.h */; }; + D2E9272E48AC9EE46E077B11011DD71E /* PFLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 26871A94013EE429FE6FE9F7ABF2A9A2 /* PFLocationManager.h */; }; + D2EAB48F7E5D4DD2A120803D4B599772 /* PFProductsRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E16BBB83C9F9B91092969D2266317F0 /* PFProductsRequestHandler.h */; }; + D348092A1C02C27E402FD7E5CE9DA7B1 /* PFPaymentTransactionObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 8786F55C6BCF0316006C8213CA9340CE /* PFPaymentTransactionObserver.m */; }; + D3493E749B7820B9A78BA0BCFF41952D /* PFFieldOperationDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FFC8DCDDC208CBB816476EDF7085EDB /* PFFieldOperationDecoder.m */; }; + D3B63387E28EC3AC74C36A14C22334D6 /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EDB6A316CDD5D018128E1D3136DFC1B /* FBSDKGraphRequestDataAttachment.h */; }; + D3D9D375FCD71243C619C6EF5026A26F /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 78FBD963927DF94B45B5FF19AAEDDEC0 /* FBSDKCloseIcon.m */; }; + D3F62AE3F95B41661AF77F4CB967EC60 /* PFRESTUserCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = C73D0298550B4AE265F9F155D23B10D7 /* PFRESTUserCommand.m */; }; + D4824EEE4046BDAF6F5A1C824CB8CD69 /* PFObjectEstimatedData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C6660D91D6167EB784831B0571E2F52 /* PFObjectEstimatedData.m */; }; + D4CE914F5ED7216451DEB5D5B9DCF76E /* FBSDKLikeObjectType.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C2E4681A2F967A6C4E522E08078ADC0 /* FBSDKLikeObjectType.h */; }; D586EF4534B4B9C1ED860C49F9FFE6C9 /* RKTestHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 30E24C0CC2F297CA249BC9496B1273BA /* RKTestHelpers.h */; }; - D5B4AE6ADA1FF6A8D501EF34E5B70DEC /* PFLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 423474460E489D78FEE63988A287BF8A /* PFLogging.h */; }; + D59A0303B864AF244B2644CFCBE81A58 /* PFReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D488D8E4B776014CDEE5E6EF762C08E /* PFReachability.h */; }; + D5A92CFE08A253A3C62DD4F37C8DDE86 /* PFOfflineStore.m in Sources */ = {isa = PBXBuildFile; fileRef = CC5344A37B8F373E012354E281A66841 /* PFOfflineStore.m */; }; + D5CEC5EAAA7E87EAFEF9CC6698EB64AF /* PFMutableRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D37164FA87C3325903A708109C92A81 /* PFMutableRelationState.m */; }; D5E50E373823D2CBA317B52A85ECDB46 /* RKPropertyMappingTestExpectation.m in Sources */ = {isa = PBXBuildFile; fileRef = B34970E9607C4D5CA7FD440A0E9D4EB0 /* RKPropertyMappingTestExpectation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D5E8CC2522D67F9FC020020915970752 /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D3DE4E8FCBBE262C58F8AC13C7DF4FC0 /* FBSDKBridgeAPIProtocol.h */; }; - D63769571B44F6368498F025AF61C6CE /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 1860C6036F41AF4136B179EC2D9939E3 /* FBSDKColor.h */; }; - D64745B64981C4B58B41BFB0EB34FB0B /* PFWeakValue.m in Sources */ = {isa = PBXBuildFile; fileRef = A10620A1377EB7153ECCFC2F048B5505 /* PFWeakValue.m */; }; - D6877C6A4340DF5855F0877E79BD04A4 /* BFAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FC8E6958F515A1458DD253105E635AB /* BFAppLinkResolving.h */; }; - D69CEB9559FB7BE948DE3EE9DB288229 /* FBSDKLikeButtonPopWAV.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B6D5A9ACB11850D607ADB4A0BF03613 /* FBSDKLikeButtonPopWAV.h */; }; - D79F33AADF3DDB22BE6620959F4DE590 /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = E067CA9E21A26662DA824DAC1A521DD1 /* FBSDKViewImpressionTracker.m */; }; - D7FC6F2D8013CF365A7349C989177E95 /* PFRESTFileCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = E42493F5FC02B368E66187F7D3E72719 /* PFRESTFileCommand.h */; }; - D809B69DE077C62C993DF9DB223DB660 /* PFPurchaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = 20B30A30703B653252AC6D15C630DA1D /* PFPurchaseController.h */; }; - D8A25C09072F307F29FE9F7B6A13D9F9 /* FBSDKAccessTokenCacheV3.h in Headers */ = {isa = PBXBuildFile; fileRef = FF8B340E1E07288B43D2125E1C95D71E /* FBSDKAccessTokenCacheV3.h */; }; - D8F65E1A75771DEFD76C1D5E67DE252D /* PFHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 39AE3319F220425568181E51340F50AE /* PFHash.h */; }; + D640F592E8B89903E1F007453508AF11 /* PFInstallation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C3E03A90536DD5330B859DFE31570B6 /* PFInstallation.m */; }; + D645D7ECDB737643D71DFDC7D0EF51DC /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 323A920BBC78CC4F32DC36633840DF3E /* FBSDKCoreKit.h */; }; + D68C66187F69D3C94DECAD1721706031 /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = 49ECF8C520F56BF1EE925AEC28EE0110 /* FBSDKKeychainStoreViaBundleID.m */; }; + D68FAFBD744D9F40FBAF34C3ABBE57F9 /* PFCommandResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EB95732F4D4CA886A89094CFD467D4E /* PFCommandResult.h */; }; + D6AE65B5B0C104A53AFEBA40EE56BF0B /* FBSDKSharePhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = 63188CFF04051D2C52F225740A033D43 /* FBSDKSharePhoto.h */; }; + D77E4511F8389515B0EEC62D96418311 /* PFPushChannelsController.m in Sources */ = {isa = PBXBuildFile; fileRef = C45F387672BF56893F587F1601A4A671 /* PFPushChannelsController.m */; }; + D8393532E1BCB8F5A241FBD6B5915143 /* FBSDKLikeButton+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 38A6D9AA344FD2AE5B4D70FAD5062AB4 /* FBSDKLikeButton+Internal.h */; }; + D8731A50BC6E296EF8910706907303AC /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C961228BEA0830266F67F826D8BD866B /* FBSDKServerConfiguration+Internal.h */; }; + D88C209C8E7E7DE5ADA119895BE96C8D /* PFCoreDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A58330FB326FE4593BBBA3411078B43 /* PFCoreDataProvider.h */; }; + D8DD521788B7FF5F0F3DBD9D8A44BE4D /* FBSDKLoginUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DFCEA97612DEB2723DF40E6FFFC5D26 /* FBSDKLoginUtility.h */; }; + D913F5B9A2D6A81B047DC2805ACB7F91 /* PFPushUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CAACEFFE369BA8C9440D6CD08EC7727 /* PFPushUtilities.h */; }; D936A464317E7189D4808D81F719F27E /* RKConnectionTestExpectation.m in Sources */ = {isa = PBXBuildFile; fileRef = DEF44C93EA8108B4B9EFC4B4644446CF /* RKConnectionTestExpectation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D9780F783321D6762F05A3703DCCCAE3 /* PFRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 04FFB1F6F919106E7BC4541DF614C595 /* PFRelationState.h */; }; - DA2BAF58CBAF597A7E6562226C6A40BC /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A51EB7786397F5EFF35AB3BD9CEF4F08 /* MobileCoreServices.framework */; }; - DA38887565FDAA6178FDA0EE1B279815 /* PFObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B450C5571097E288C9CFF740CE3FA5F /* PFObjectPrivate.h */; }; - DA6FEF39DE15D4138126AC5AB7118A35 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5243AD5D9D864456CBD961BC945843F /* SystemConfiguration.framework */; }; + D984F13A369C80259E00E1ABACA927E8 /* PFQueryPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = E17F4E0596F024D9F44812A5786F7170 /* PFQueryPrivate.h */; }; + D998190E2220FC38EF0166E22F8A3ADF /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 29D48AAEE67B134EE8B0622C1BCF7F8D /* FBSDKGraphRequestMetadata.m */; }; + DA2BAF58CBAF597A7E6562226C6A40BC /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BAAF0724B9090137B718DFDA6EB9C1C7 /* MobileCoreServices.framework */; }; + DA6FEF39DE15D4138126AC5AB7118A35 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CCC11B45A7E2D9A95182BA1D01D60F9 /* SystemConfiguration.framework */; }; DAA4EAED7C7A73C4124FBB17C2E2D07F /* RKURLEncodedSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C16B289C2694A9F01E5AC4A40F5BBC5 /* RKURLEncodedSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - DABCBF2D85FD3680A4CA2867353DB56B /* PFCommandURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BC8CA549338879E1C908751DD3FD1C0 /* PFCommandURLRequestConstructor.m */; }; - DB2762412635FEA4B77C5E751F091473 /* PFBase64Encoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 34395EA09EF6FAFFB300C19081748EEE /* PFBase64Encoder.m */; }; + DB644EAC2BB8ADC18B158F5E2B54ADEA /* PFURLSessionDataTaskDelegate_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C5BE6155E6E796DC929232CFE0BA3938 /* PFURLSessionDataTaskDelegate_Private.h */; }; DB85C33A007936865BE9DB308E27B35E /* RKRouter.h in Headers */ = {isa = PBXBuildFile; fileRef = 596492B6CEEB060FE00A87B8565F380A /* RKRouter.h */; }; - DBD290D5C0A24237D2BD5BD12D51421D /* FBSDKLikeActionControllerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 986BA44834A1379FA62C25B6BA8F688C /* FBSDKLikeActionControllerCache.m */; }; - DBE3962D47DB31811D05E5FC7F16CF72 /* PFRESTFileCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = DB3CBBE18B7CB09688F235F3EB9C71FD /* PFRESTFileCommand.m */; }; + DBCA64F9596F8284793034014DE1A649 /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 76865DCF9853952106158A4BF7621602 /* FBSDKUtility.m */; }; + DBDFC45578DA12608DC69FBC5E82DC30 /* PFDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 5221830B08D22B86274AFCA65E93CD48 /* PFDecoder.m */; }; DBEA4B61BB4FCA89E6DEBF42D257395F /* RKResponseMapperOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E574880420D8D97A424642A6B5F02579 /* RKResponseMapperOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - DC21562627003B525B645FC276D91E79 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 232ECC729A95758C447EC817E24A8382 /* AFHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - DC72EEA9A5F723B2B90C73F66A942266 /* PFMutableQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = 73E78AAF48CC66F5329D231011EC9F0E /* PFMutableQueryState.h */; }; + DC3A6B49827A61D98003EB074A3463D9 /* FBSDKGameRequestContent.h in Headers */ = {isa = PBXBuildFile; fileRef = DE37807E0B1639A13221C0F6E94C015F /* FBSDKGameRequestContent.h */; }; + DC4AFBD593CD7C15E8C85BE50C2A4DA4 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CCC11B45A7E2D9A95182BA1D01D60F9 /* SystemConfiguration.framework */; }; + DC4B946518DF342C5E5287B7CCBCED86 /* PFRESTCloudCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = A6ABA5D37C50A0B8B9B785D774D332A5 /* PFRESTCloudCommand.h */; }; DCC043007FBCC58468B29C60D3A74EF3 /* RKRelationshipMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = F9A46E7E5599417031AAC9FDEE8F6162 /* RKRelationshipMapping.h */; }; - DD4DBFC5F42DE1932644DB163B5972E6 /* PFBaseState.h in Headers */ = {isa = PBXBuildFile; fileRef = FAE37FC3EE513E9BA389914278408CEE /* PFBaseState.h */; }; - DD59BAFBAAEBD356F83FE7462D564E6E /* FBSDKGameRequestContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D4096B259A00B3CA7AFD492984A10BA /* FBSDKGameRequestContent.h */; }; - DD77D691697B0B6BA6F852B46C6E8151 /* PFOfflineStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B6F6FC45E0A6A809CFB5D64AB572F12 /* PFOfflineStore.m */; }; - DDC4F19F342E938AC97A32F890220035 /* PFCurrentUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 64585A3E416254970223EB883C168C06 /* PFCurrentUserController.m */; }; - DDD5AA6C8761E89C7F5C663B1CD13E32 /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B38BFE99240E2343065A81810BCD299 /* BFAppLink_Internal.h */; }; - DDDFDB764CD1AE11F3AABCA125923E06 /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = DFA8A38F2CAE4CCC62494E192CD68C97 /* FBSDKUIUtility.h */; }; - DDEA53C797DA53F468DC760C6AFF395E /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = C18CECEFC7124D4D8DB78DDCA56F3E73 /* FBSDKPaymentObserver.h */; }; + DD31C197056FA652D3BF1274DF5E2908 /* PFACLState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = AD297F39854C24CB012AB880A8F72FE9 /* PFACLState_Private.h */; }; + DD70E09D858BF03C89C82858C764109B /* PFPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = E6525F64D2B6147E9FCBF6D10A5CB4AD /* PFPurchase.h */; }; + DD92EF07C28DE99B4E35DCB69981FFD0 /* FBSDKBoltsMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = A7E0C2515B7C55E949D9562B88288232 /* FBSDKBoltsMeasurementEventListener.m */; }; + DDE2AFE85B97C78711AE7DAA39EC0323 /* PFCommandCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DA2C4DB80EFCE1F0AA9350F23EA627D /* PFCommandCache.h */; }; DDF12781498D7466B17FABB0F7B09EEA /* RKTestFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A04D42ACCA3BD87E3584E6ACC4F56E6 /* RKTestFactory.h */; }; DE20A5E7464643352B7CBC57AA18AD28 /* RKMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = BE80753CE5B8297DCAAA5C864D7D7A5B /* RKMapping.h */; }; - DE465F00C7D94B02E5130CAB91FE315A /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 36A148580114BC82A5E01A2432F549D8 /* FBSDKServerConfigurationManager.h */; }; - DE7DCACAE6E02AD31161B263E7DE3B53 /* PFURLSessionJSONDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F6A9C4685A290C880CDE1428A25FAC30 /* PFURLSessionJSONDataTaskDelegate.m */; }; - DEBEBBF633B726A9FDBBDE85788DA3A3 /* PFURLSessionCommandRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = 73D64DAEAFFF3B4456A0ECB82E2D4CA6 /* PFURLSessionCommandRunner.h */; }; - DF9D24EA75DCAD6E4EABE77BB82C729C /* FBSDKLikeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 191B64353A25EF72E4466B2F6B9EBEE3 /* FBSDKLikeButton.h */; }; - E008D78D62D60C24A58DEBC9350DD553 /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 13771E6540FA0D1373C61F3F5618DE1D /* BFTask.h */; }; - E01E6B307A5E4AC49DFFFE15D7AB3419 /* PFSQLiteDatabaseResult.h in Headers */ = {isa = PBXBuildFile; fileRef = A194EB7C47C1754479482D96E62282D1 /* PFSQLiteDatabaseResult.h */; }; - E06BD0AF1D3248CA82CEBFEB3A8B737D /* _FBSDKLoginRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 184AA3B1233A04E41BF6626A6B9D8891 /* _FBSDKLoginRecoveryAttempter.h */; }; - E0EA33785A5F59E57513492FB49468A6 /* PFAnonymousAuthenticationProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 63853C304B3512C921051F6F4C1AA1D8 /* PFAnonymousAuthenticationProvider.m */; }; + DE391D622204F7FBD288734ADBF32665 /* FBSDKShareDialogMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 260BC0B46C2DA2BCD9F62462348F6673 /* FBSDKShareDialogMode.m */; }; + DE7CCCF622BD5C3BD1AE6AE50C35F297 /* PFUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = A9E407E843F2555171E0CF773AFE8CAA /* PFUserState.m */; }; + DED63556CD89F027BCB5024069D17BF9 /* PFURLSessionUploadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = EA9765B74BCB3C4EC7701224F0BF1249 /* PFURLSessionUploadTaskDelegate.h */; }; + DF333C3A04F0BFF1C78FAFDF99BC0C59 /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = C1A7C3AA5681EC1EBFD4DD40121772C1 /* FBSDKViewImpressionTracker.m */; }; + DF9C8DFC91AE8F06A56D1F42B67A6F4E /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 5927976E25757090DC699126B558DAD7 /* FBSDKErrorConfiguration.m */; }; + DFD7418E4229FADCB3AB85CF73F581F1 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F140AB891150C6CFED7DD2A7B4A62B2 /* AFNetworking.h */; }; + E0107B4D675BE030D6BB97600270B98F /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = E6FE7D7622EC7CAC9524E96D99D05722 /* FBSDKCloseIcon.h */; }; + E08AC3BF6B05C1466250A83E5863BDC3 /* FBSDKShareLinkContent.m in Sources */ = {isa = PBXBuildFile; fileRef = D2C9DD7C685BBD2CC7EAB4A3433549B4 /* FBSDKShareLinkContent.m */; }; + E0A83A172053DF72389A5B2646F8DDC7 /* PFUserState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 79EF5DA0025B0FFF67DFADD5492A17E1 /* PFUserState_Private.h */; }; + E0A85D8E914368D87DEE75F0ECE2082A /* PFPush.h in Headers */ = {isa = PBXBuildFile; fileRef = 26CFE764B4CDD5F929831F42EDA41A4D /* PFPush.h */; }; E0EE720B924E4F4B4B269F9BFF9BEE6E /* RKErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = 0704D1A252C21153AADCFF76B76A34C8 /* RKErrors.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E137CB80B75D378FCEA9B7E03B1CD381 /* FBSDKShareDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D760F3CA5FB942A7E23EA61A3C62A7 /* FBSDKShareDialog.h */; }; E159D9561B3F15E9433F18184C3572FD /* RKNSJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = EF5B4118C2BC93EF32D39A9E3A70073F /* RKNSJSONSerialization.h */; }; E1DE390E8E60E0B867407C70A2829CA8 /* RKObjectMappingOperationDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C12D518D08748E88B0F70890764B8CD /* RKObjectMappingOperationDataSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E29BC3C544BF38C2F30CB4B2AAD45B41 /* FBSDKAppInviteDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1592F16F5E573F913E7D111CEB121A50 /* FBSDKAppInviteDialog.m */; }; - E2F18A04EB1C973F5D6E14BB41CCD4BF /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = 1011B8135A3EB4DCC7EF201AE71B3FC8 /* FBSDKBridgeAPIProtocolType.h */; }; - E315649B8C0329ABBE715331EC1105D3 /* FBSDKLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BB557FE6B9E9C5D59E6A3DEB4AB7846E /* FBSDKLoginManager.m */; }; - E35CC681B027B9A4DDD50E2732FDB1A2 /* PFProductsRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = AF8EEF265F3D9C4630F4ACCFBA1A315F /* PFProductsRequestHandler.h */; }; + E248EE46DFAF1C2BE7957D07F9951BD5 /* PFQueryState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E01D38ECEA62C477A8C7BEE503A7547 /* PFQueryState_Private.h */; }; + E2AD35CB32DF2CFD7505333AF7A6F4EA /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = F467F77ECC07330116C0DD45D3349ABE /* FBSDKAccessToken.h */; }; + E2B5F7FF677D9CA39663F3A0AD09874D /* PFCachedQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = CCBA933D3A40B5D03B01E6CC64A2A3A5 /* PFCachedQueryController.m */; }; + E2DC88E170ADC175F5C438C3C7CD0E87 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BBEDB49F89EFB9B6465EF82E36C1A49 /* FBSDKURLOpening.h */; }; + E36FAD435FEC0C33404BEE1546D263CA /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = F3DADC1F7DC40E0218DBF16280C4D6D7 /* BFTaskCompletionSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; E3A082B2A0A8612B107247EC76E801BD /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83F2B1D939804694C73E7FCD9AAF4090 /* CFNetwork.framework */; }; - E3A2B3F9AA361620648CBD92EF4F4874 /* PFOfflineStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 33B37F8486EF0E3980BE534DE830918D /* PFOfflineStore.h */; }; E3B5EAD8212CDE114D7D75603964B728 /* RKResponseMapperOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = CB3C48DDBE655AE51D1A39695796468E /* RKResponseMapperOperation.h */; }; - E3F370210A4F6B15CCB06AD6E0E48597 /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 86D941FDEEC92E2EA2835097C2161C04 /* FBSDKCrypto.m */; }; - E4CB7EBEF04D906BB2400E1CB9EE6A7E /* PFUserFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A96182B63D95AA7512F0B4BF891B823 /* PFUserFileCodingLogic.m */; }; - E4EBE0695A4E89A25BA0DCBB7A37C8C4 /* FBSDKGameRequestDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 33BBC7950FBFD8EC38A39966E30603F6 /* FBSDKGameRequestDialog.m */; }; - E4FBC21224FF5A25AAE72F6E25111FD5 /* FBSDKSharePhotoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 141ACE54E47BD21C3F91FE031C2F27A4 /* FBSDKSharePhotoContent.m */; }; - E530D88B0E0091515A6C8A8E1AA22B21 /* FBSDKMessageDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EAC1A8028073BA5B4C512B18244EBE8 /* FBSDKMessageDialog.m */; }; - E539C7D052036F12A6FACEB6BAAAB7CD /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = C5558E780E37E74781BB1613EF8D6F1A /* BFAppLinkReturnToRefererController.h */; }; + E46A37E2CEEDBB1B8811B7905FDEF504 /* PFMultiProcessFileLock.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E7251464FBD8CA6364DE9833E6D6E7 /* PFMultiProcessFileLock.m */; }; + E4C05F4451AAE50C0F479AB2E7405E44 /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AE04A545B1286F2CB61AF35B668B691 /* FBSDKMonotonicTime.h */; }; + E5A13167291337523078AB9C0CB3125B /* FBSDKShareOpenGraphValueContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = C3212BA31250F0C8DE1BD1FAF02207C7 /* FBSDKShareOpenGraphValueContainer.m */; }; + E5E59305DB00887CA8ED80A221284F32 /* PFRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = E1A63FDB8FFEBABA917E2E14E9051471 /* PFRelationState.m */; }; + E62754EFD8CE2472A35DABD367808319 /* PFRESTFileCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = B12980AF5F1F26F33906C73A2F38C5E2 /* PFRESTFileCommand.m */; }; E63519CA8D7880BB295B7EA51A8166B6 /* RKPropertyInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = E85C8888E5F1BB8E85DC368D6DB18999 /* RKPropertyInspector.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E6FC5CAFFFFFED64538C2A6AF8CC7A32 /* PFUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = 973BCDCA8F5D929A3B0146540D22266B /* PFUserState.m */; }; - E7F96D6D14A008F31D440E9A3B4DEBFA /* PFRelation.h in Headers */ = {isa = PBXBuildFile; fileRef = FFF54AC023F4C0A168EAB14AF0DF8197 /* PFRelation.h */; }; - E86C60547909B9FF602F7A10BA1B4140 /* PFHTTPRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 13FF6F02AD00C0AE6A8450F567534E23 /* PFHTTPRequest.h */; }; - E964FA7D6A20CC33A8F95DBDE547740D /* PFGeoPointPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDB9F88EE4CF34E81AA150F326D12F8 /* PFGeoPointPrivate.h */; }; - E96561D1A7687F5C6116F3A1DB698EDC /* PFUserPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B6B535332BF062ED196F088A04E6A5C /* PFUserPrivate.h */; }; - E9E5B34C82D3E41A4ADCD1ABD9769103 /* FBSDKBoltsMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 985451595F8F27101D95712CABD99D9C /* FBSDKBoltsMeasurementEventListener.m */; }; - EA302B51E65C00DBCF5E18601D139475 /* PFCommandCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 176FB6F42987293FB1E182C230B96F21 /* PFCommandCache.h */; }; - EA4678DA9F19A5881A07ECC62861D055 /* FBSDKShareDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = F73ADC2CD4C8BD33E777C07D6362654C /* FBSDKShareDefines.h */; }; + E6F6345B4E00718444ACDCFD544E27E8 /* PFCurrentConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D3002035E29C7449C791970871E10EF /* PFCurrentConfigController.m */; }; + E7555C005BF32F0FB0FB32265B0B3122 /* PFACL.m in Sources */ = {isa = PBXBuildFile; fileRef = 622A44BCA22902069E3F240357CD45F3 /* PFACL.m */; }; + E79AF2F84270D6E6CE16DFEDABCF3E01 /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CA98D8F458A2FFECCD9C3CF7AAEECFA /* AFHTTPClient.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + E7E38551016FB52D5C85B4E3B0B7A169 /* PFPurchaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = 786806355E0E877557AA2507DDEBACDD /* PFPurchaseController.h */; }; + E8E7BC50C1B835A84120AF1A5303B050 /* PFMutableACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = A3D3F0FD5623B320704891A12D20A91A /* PFMutableACLState.h */; }; + E8FF623864D7334389BCFE69E83CE7C0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; + E9B4420EA45357975AB697B99F2AD065 /* FBSDKSharePhotoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 69A5C357BDE6663375E1CBBBE08B3440 /* FBSDKSharePhotoContent.h */; }; + E9CAA4FDAC6AE903159D04DC4BA45474 /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DCA15FE1B9E0D7F046522F5521C2102 /* FBSDKLogger.h */; }; + E9E1E5F9CE1A7DE976690D18B60B3F61 /* PFHTTPURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = D3EB8E5131AAEA8F16E17BF016FB5B61 /* PFHTTPURLRequestConstructor.h */; }; EABAE5228ACD4A5BE6F30A53F80B9C1E /* TKTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A2306F062D21537BCCD17B8E1265AE8 /* TKTransition.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - EAF55F96FD4B1A30DDF547F52CFD5E3A /* PFRESTAnalyticsCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B5844358C456A94A62A07CB206B23CB9 /* PFRESTAnalyticsCommand.h */; }; - EB26C70637F1B9D2A32A96C3D7297B75 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 749EB4AB41C2B5F71BA37ABB24CEE668 /* BFTaskCompletionSource.h */; }; - EB3A2464318287F2605FE3FB96F28028 /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 94241AC9E14ADC6F4BF3A74F37C7443B /* FBSDKMath.h */; }; + EB51DA32AFB1341B412DC8DB1EA76D67 /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = AB4729343B161E71126051A18EF77E49 /* FBSDKCopying.h */; }; + EB6745E9ADD2F0BC654769A8E83E80B3 /* PFRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E6A42EE42B9EEE445B28BDD96FFB1C7 /* PFRelationState.h */; }; + EB6BD184A263DBDE2AA3BE77EF737DAD /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE00E564F591F731C2B1E11065E0ACF7 /* CoreGraphics.framework */; }; EB73AF4C9D61D61F7B1BB0F6C573118D /* SOCKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 89622454B6309852AD9687B0820C02B0 /* SOCKit.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - EBC0F7CF2A827BE595ECF66D3042385B /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F1964D552EA65831BBC604C32B2ED59 /* FBSDKViewImpressionTracker.h */; }; - EC6ED18CFB8C6AD69DACFDCA9DE8A178 /* PFMulticastDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F6D944F1DD0E0308EA2EEB932E7DD509 /* PFMulticastDelegate.m */; }; - ECD947EB7209C18C0ED5B62B55EDAF5C /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = AD669A1EAE15893820BD4F03CDCE9EDE /* FBSDKMaleSilhouetteIcon.h */; }; - ED30F1C009785C03A95CE897DADE2FE3 /* PFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E595FE8D26A832FC9181FB8DCFDE506B /* PFNetworkActivityIndicatorManager.h */; }; - EDAE21A43BCE3B2704A63517EB4AB1AB /* PFObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 00923F2734FCE8DC39F906E40B67C73C /* PFObjectController.h */; }; - EDBFDC230E9792C5B794EB33FC97B481 /* RKValueTransformers.h in Headers */ = {isa = PBXBuildFile; fileRef = 4839C0B94DA359E603C96FAAF9707D62 /* RKValueTransformers.h */; }; - EE4BB2CB0021BADEC7E1B08A32107181 /* PFAlertView.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F69195C66DCE1ED23AFBCC251BA4C3 /* PFAlertView.h */; }; - EE8D5B9C1B8641F1C9454AC533EBA663 /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = A061230EB53B9A3D0D74C5E8D62680CA /* FBSDKMonotonicTime.h */; }; - EEB87A351E1B32FD3CA32811E998135E /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = FDF516C0EA3056B223310D7DB2C26681 /* BFTask.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + EBA18B1D4DD6CDA28B9223682CAEFC44 /* PFHash.m in Sources */ = {isa = PBXBuildFile; fileRef = 5624419A8EA110F018B6E1D6B2D454AC /* PFHash.m */; }; + EBC1D03210026C1333FB24C053316AE0 /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 05E89D5ACCE63E55AA659EFB8A18A9B5 /* FBSDKCoreKit+Internal.h */; }; + EC1BBA6BC932AE411B6EC1C444056979 /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 24F93C0C8EA467DEFCB4CBDB150BE439 /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + EC4E03293E8AC92E74CAF38BCC259132 /* PFEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = D3C67EEA3F3F6628396F657744BD378C /* PFEncoder.h */; }; + ECB49CF77D90D2E003EEDB483338FE72 /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D9866C1156E2B6A59D2996350AB5075 /* FBSDKAppEvents.m */; }; + ED1BF10F7A865B6BCFB5E9077E589041 /* PFCommandResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E8E523D8195E9B1B9C90976CF0540B8 /* PFCommandResult.m */; }; + EE75A228F7AB72AFC98019C41213ED37 /* PFNullability.h in Headers */ = {isa = PBXBuildFile; fileRef = D4A9395593F078B48F3B87B9AC890E89 /* PFNullability.h */; }; + EED79B8DC9EFDFAC358B7D5AABBA7D95 /* FBSDKLikeButtonPopWAV.h in Headers */ = {isa = PBXBuildFile; fileRef = 14BB822079E39C44A662265EDC832BED /* FBSDKLikeButtonPopWAV.h */; }; EEF20312B4111CDCF4165EC2CB7B5C54 /* lcl_config_components_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F73B326076ED018A7156E4BFED6A5EA /* lcl_config_components_RK.h */; }; - EF1E3A4A56864ED9872326A1591C526B /* PFSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 283697319377A707827BA6D72CD7F2B7 /* PFSession_Private.h */; }; EF52CCC8678558CD77AF0992B2ED2B85 /* RKObjectMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B29A50B713DB33904E5298D3E082CA5 /* RKObjectMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + EF8361AF122087D0CA9C80EC6FFF6A5D /* FBSDKAppInviteDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = EBCC0954F36C8CBCF2C1BABC5BE29972 /* FBSDKAppInviteDialog.m */; }; EF9B72EBED962989301AC194E32BF945 /* RKPropertyMappingTestExpectation.h in Headers */ = {isa = PBXBuildFile; fileRef = 056B8AC3C068967E144E9912F4D082E4 /* RKPropertyMappingTestExpectation.h */; }; - F05664371A3DD0AD0F099C58F3DE4B5C /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = FE7E4B7205CCF39AB7DC993A7C496D35 /* FBSDKLogo.h */; }; - F0C42F245FC0594E061713A97D2F24C7 /* PFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 59AA32CF592A1CE163B2F901B0892AD8 /* PFObject.h */; }; - F102D7610DBFCBFE859773DD03FF8408 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67E415550BFBF0D438FF517138639DE1 /* QuartzCore.framework */; }; - F154E24ECE8D63E143C5DE657270F9CF /* PFACLState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EFEED10CE7DA52BCCBBE06BCDFF31654 /* PFACLState_Private.h */; }; + EFCAE7D0122CB2A05706BE24AA150329 /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D17058F2F424FB1C4E4BCDCBB95C1FE /* FBSDKViewImpressionTracker.h */; }; + F02B0D1C7F2D67E431DF0E4DE980BC34 /* PFCommandRunningConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 12DC95CF2C7DDD42977C94C97EB1637C /* PFCommandRunningConstants.h */; }; + F04F4F51E4FED1319EA3A101BE08B5CC /* PFOfflineStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 91BF5E929B1AC36CE7F99D1E1DC0ED30 /* PFOfflineStore.h */; }; + F062F607CD6999EC431C927F2213FFCB /* PFUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 12E1213C18161FD134F34314DF960015 /* PFUserController.m */; }; + F07F1D8F65ACCB3ED5CB7ABF7DA5FF0B /* PFAnonymousAuthenticationProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D28D403AA7A5A6F2AF7DDC6F991B98A /* PFAnonymousAuthenticationProvider.m */; }; + F0AE34C414FD3DF2264466C62BCBB1E4 /* PFUserAuthenticationController.h in Headers */ = {isa = PBXBuildFile; fileRef = E6D31BB8E52455350F1E5E4F1DB197CB /* PFUserAuthenticationController.h */; }; + F0E688E7768227054BDD40A9D2593406 /* FBSDKShareUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 25FA6116451E734C381D4F3606124CE3 /* FBSDKShareUtility.m */; }; + F0F01EFCBE05FF221F2083EDE6C2073F /* Parse-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FFAEA82C3ED7F7F1480E843DE336CB0B /* Parse-dummy.m */; }; + F0F027149637B8C7F6A7EA60C5CF8323 /* FBSDKBoltsMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C2FB169D00DE47B9815271C62B2D855 /* FBSDKBoltsMeasurementEventListener.h */; }; + F17179B7BA2DA6DADD5AA44942DDA6E9 /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = E6218FC4CE717BE3D2902995538A0A63 /* FBSDKDialogConfiguration.m */; }; + F17F8BEFC9816E31776391DA362ED4C0 /* PFInstallationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B187D31A1B35CF60BBFE402E7FEBF55 /* PFInstallationConstants.m */; }; + F18BE7AC26E9A094AE2C652CFC6218DF /* PFACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DEB605CCA159256A3305ABB92ADED70 /* PFACLState.h */; }; + F1B7580F71CE94519DF90F7301DFDC55 /* BFAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 989869E1193232EE4E322636E8236CEE /* BFAppLinkTarget.h */; }; + F1CBCA120CD2947B7C405851E7FFA7E6 /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C97568E00B081386FD3982DE3AD286B /* FBSDKGraphRequest.h */; }; + F1E0170758F896428FBE9811966F3E68 /* PFApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 87ABBAD2B5A5CAAE0AC4B4ACCADC1330 /* PFApplication.m */; }; + F1F3FB15F726B03CD49FC6A0195CF856 /* PFKeyValueCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 15218D870F12055E685D3D03517191A4 /* PFKeyValueCache.m */; }; F1F9CEDCC428750CAF8C5CA8129E8F1D /* RKObjectRequestOperationSubclass.h in Headers */ = {isa = PBXBuildFile; fileRef = E22F95FAB4E982B3ABA1D6CB8C422794 /* RKObjectRequestOperationSubclass.h */; }; - F21580621D3E8689A8B9B1DA63A24927 /* FBSDKCheckmarkIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 02FC7E859C916A1DBF3665CCB705934E /* FBSDKCheckmarkIcon.h */; }; - F27AFE96B8CC62E50BFFA4512890BED3 /* FBSDKLoginCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = 72D0BB4387B18BC30B9E1DFA837849CF /* FBSDKLoginCompletion.h */; }; - F294FEB022DDEC737B565FA9ADBB17B6 /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A8C0790E53BC4B6EA94B51E24532E88 /* FBSDKAudioResourceLoader.m */; }; - F2B72E543329E82CCE7A2EE0B0D5C785 /* PFACLPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0017DC9D1BC027BEB92D7D8697443DF9 /* PFACLPrivate.h */; }; - F2CDB8E6D9A013D37FD7054A5A1E2C7D /* FBSDKAppGroupContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A3F937AE0B76FE001B1424707650BE3 /* FBSDKAppGroupContent.m */; }; - F3797EC3467D8CBF8183D6886A03E954 /* PFRESTConfigCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D523D243E8C98CFFB31356A63463C00 /* PFRESTConfigCommand.m */; }; - F3832E2E17428F4750115D59A0CB9E85 /* PFObjectSubclassingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D6D55B44BD8ADC5AE8F8AC715416614 /* PFObjectSubclassingController.h */; }; - F3AAE34F51DB2120DD7F9AF2769DE2F8 /* Parse-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E4620C81A01480F3991F76D4DE7BE37 /* Parse-dummy.m */; }; - F3D640522B893DA5A057FDDE31D7CBBC /* PFRESTPushCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A2CBA1A14A6AA1202E7B5CCEFA3C2B /* PFRESTPushCommand.m */; }; - F3F2C56A77D4DB0D486E7A35E5C939ED /* ISO8601DateFormatterValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = EA6CB7DF499DDA0B9313150859AD14F0 /* ISO8601DateFormatterValueTransformer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - F404DE0BD76A827A59FED7ACEC84C4A7 /* PFInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 608429EE6E38CCBC432367E7CB93B400 /* PFInstallationController.h */; }; - F4A8397144034C66C1FA123D2A946D30 /* PFObjectEstimatedData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EB0B04EC3F753FD50885C2850A18879 /* PFObjectEstimatedData.h */; }; - F4E3C825FDDF691C8620167D62C36527 /* FBSDKLikeActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4123C94C7948B9704563A505B3014AB6 /* FBSDKLikeActionController.h */; }; - F4ECDBA32F1169CB260D49D001F2C224 /* PFSubclassing.h in Headers */ = {isa = PBXBuildFile; fileRef = AA8507DB72E8E2555EB649E141F80B46 /* PFSubclassing.h */; }; - F51372F07EC1E8663574DC8FF2B69C88 /* PFHash.m in Sources */ = {isa = PBXBuildFile; fileRef = 52728CC48A8F9EFF86FD0353377E776D /* PFHash.m */; }; - F55E8C555D5B76B49744594745E769B6 /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 58F67B018A57B934A2029E1BB32BFEB5 /* FBSDKApplicationDelegate+Internal.h */; }; - F590EEE9964BFBBF5271ABE294EA8DF9 /* PFBase64Encoder.h in Headers */ = {isa = PBXBuildFile; fileRef = DE504CDBAE4E729CE6138680BEA8131C /* PFBase64Encoder.h */; }; - F59241FB57F2005FBFECC2326048D075 /* PFObjectFileCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D2CCB0DEA880EFF0D0EF2B11C7E41029 /* PFObjectFileCoder.m */; }; - F5EF0EC23E27DCEA92A486E79EFD7997 /* PFThreadsafety.m in Sources */ = {isa = PBXBuildFile; fileRef = 57C4523433B4764C517C9034002FD449 /* PFThreadsafety.m */; }; - F6139C136AF1688A0C4D97D886180CCE /* PFObjectSubclassInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3810817360404E4967AF028144ECC497 /* PFObjectSubclassInfo.m */; }; - F72D54F2ED68E52F818FD3E109C865D0 /* PFMutableObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E3D6E7602874F770FF747226169660D /* PFMutableObjectState.m */; }; - F7C4193FCE1335CF78388CB131A8D6AA /* PFPropertyInfo_Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = FF73D26B160755CAA42F2FFC56C91E1E /* PFPropertyInfo_Runtime.m */; }; - F7E107F9266E165419F09F357851FF94 /* PFUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 25258821C0218CE36A9415CFB0D9F151 /* PFUserController.h */; }; - F81F1B7980F2983071D0EC660BE54CE3 /* PFPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A78ADE0C1383A85403BCEAA01789B6C /* PFPurchase.h */; }; + F27976D070F7ADC10BE6FF4093AB9974 /* PFEventuallyPin.h in Headers */ = {isa = PBXBuildFile; fileRef = AE8C24FB91D52A7A902E7B6939B6EFC6 /* PFEventuallyPin.h */; }; + F3099F931E5CA8CA89707436CC765F2D /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBD6F5E77168A4A3133908261AEF1BFC /* StoreKit.framework */; }; + F3293A4DBA100B38D9669988A0E1524A /* FBSDKShareKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B10ADC87A857910D7585779303E279B5 /* FBSDKShareKit-dummy.m */; }; + F36C75B2D364521B66BFEB93F0AC8A47 /* PFObjectFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 6603759A59107C9EA23B8A6F0AC4524B /* PFObjectFileCodingLogic.m */; }; + F3DE094871B28D233F86D9227E7478D2 /* PFAlertView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1414B4582D8A53F4321084D4EB5C3291 /* PFAlertView.h */; }; + F413AB25B2BC215465A628FEE33F4246 /* FBSDKLikeActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AE382F6E1CC26178A9E3BBA1C473DEB /* FBSDKLikeActionController.h */; }; + F5382AA95E6ADCFF17F36184DCA008A6 /* FBSDKMessageDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BD5B84023B338476E31F24FC2D689A0 /* FBSDKMessageDialog.m */; }; + F54A30D366C9CEBE9424AC2EF31E195C /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 52BA832282A6296691283BA45A6A6C75 /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; + F570FB09B9F8F909125EE214EC64B5A5 /* PFBaseState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C258A4DB466828F6F75FA69D17B7A98 /* PFBaseState.h */; }; + F643790D3224850C9A4E9654A85B75A2 /* PFFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 034F3E05ED59E7ABCE82F0A079D5958F /* PFFile.h */; }; + F67264DD2600D04095272B1BB6F2636A /* PFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A226C9DD413F0CCC4F3BFD7DE0A82A88 /* PFNetworkActivityIndicatorManager.m */; }; + F6932B5A372E9D096040DE73D753E2A2 /* PFObjectLocalIdStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DFEAC992B1C77BFB80D23F81E446DDC /* PFObjectLocalIdStore.m */; }; + F788D05B1BCA23AD7E90E458BEA3FF05 /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = 36491A250DFAF0D996CC5E60467D5DDA /* FBSDKError.m */; }; + F7B6E9F743BE561A7C5252D196E1408A /* FBSDKLoginManagerLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = E657E2943C7D36EEAE242DB32FDDFA8D /* FBSDKLoginManagerLogger.m */; }; F83612B741AE8F04DD7367C0069652FF /* RKErrorMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D726415722488F38181C0A46AB22051 /* RKErrorMessage.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - F84EA9DE6AC9F7156F8830E3128E0368 /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 093F04A337062D005B479463914EBC72 /* FBSDKBridgeAPIProtocolNativeV1.m */; }; - F8A1E96B099B167A0FDC8B928B6B9F11 /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C0A1A0341B691B932463C02DCAFDDC0 /* FBSDKErrorRecoveryConfiguration.m */; }; - F91731D3FF9F75DEA9DF7BAF4D0EFF10 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8200C4FB4CDD0C6152EE150BDEFC6675 /* StoreKit.framework */; }; - F93E8FA12A89E3DEC9D885480933388C /* PFMultiProcessFileLockController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D77C3FB04FA7AD4241A39452337BF48 /* PFMultiProcessFileLockController.h */; }; - F9F2A396D8596900DA5C2D3DE9B96EBE /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = EE4A34C51200E57B9DBB1BE412048AE7 /* FBSDKTypeUtility.h */; }; + F845D092B8C31C4DFFAD4D932CC60A53 /* FBSDKLoginKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = ECA1143F260DB3AEBD94D656E8DF43EB /* FBSDKLoginKit+Internal.h */; }; + F8CA9FA9E14B2BB4F47A0DCCA484873B /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FB86554EB764C69DB563344FB6E4583 /* CoreLocation.framework */; }; + F8CCC74E3F902C66ADCB6FC49A518C3F /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 53BF5D67AF06F0302A007B18D6FBC694 /* BFTask.h */; }; + F8FE0C65F75E52F82F84E13D2B0A0F42 /* FBSDKShareConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A1DDF7D1694E9370A0A4CE320117CE /* FBSDKShareConstants.h */; }; + F9569D66DA03563FB9E44DFCB07FC939 /* PFInstallationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DC41CC348E544292C37294C5A1B50C4 /* PFInstallationConstants.h */; }; + F9FB9AC0BC858C6F6E2D684C255272FB /* PFPushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEDCBDD3D1427BBC37838C408E7AC2E /* PFPushManager.m */; }; + FA2C80A7C39D1B44B797709642EC08B2 /* PFInstallationIdentifierStore.h in Headers */ = {isa = PBXBuildFile; fileRef = F216A6FBB231D294F8E752EB582540AF /* PFInstallationIdentifierStore.h */; }; + FA40CE5BCFEBAFA19CE2916AE884FF57 /* BFAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = 2628FFC954B5343B03FF5E09727D6E1A /* BFAppLinkResolving.h */; }; + FA4C7EB7A14FB726E93A69F1A7810705 /* PFUserFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C330B991A689F502E36122BCC0AC499 /* PFUserFileCodingLogic.m */; }; FA58F7FC3EC9BFFFCCCF855E5884803F /* RKURLEncodedSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = E2775131C0FDB72FDE0A1D5A4A819778 /* RKURLEncodedSerialization.h */; }; - FAA66334C3CBCD5DEE89DF6639CA4939 /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = A89DBD55CC24CC46C0835D3E92056BAF /* FBSDKColor.m */; }; - FABCB5C3C522BD3BD90E520F858E9D90 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = D5E9B76418458E7F379CF5FBBC3F3B16 /* BFCancellationTokenSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - FB3B2D6BC1B9F48598E1471CA886802D /* PFRESTCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = ADBBD204C9399AB147FC3FB9386FBA68 /* PFRESTCommand.h */; }; - FB49939C983F644539F4E3BD68498309 /* PFFileController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C2DBEA1B558F22849ADDB4522563836 /* PFFileController.m */; }; - FB65F22A1E1B12694C1E7DA1BF4332AD /* PFFileState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E4FA331249E6517075CC9318DC72A95 /* PFFileState_Private.h */; }; + FA618E7DD8CB586A62073380FA9E713C /* PFCachedQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E0C4FA92D8641B9361554A63982E78E /* PFCachedQueryController.h */; }; + FAA258E646C66811927302E7B2CC9809 /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E608FDFE07ABF00DB09AE6F9F9DA28 /* FBSDKCrypto.m */; }; + FADE57698ABC737DED667D6C7A77FB0E /* PFMutableFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = 71D26DA17DCBC3B6CC47B2FCA63BF991 /* PFMutableFileState.h */; }; + FBAD3370AEAD92CD2F7F60BB6743FEFD /* PFCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B613D1BE89F1E4403B99C3E5DCCD2E4 /* PFCloud.m */; }; FBF30755BBEC3C5FBA7D5463CCBBA04F /* RestKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FD329036B04DED5ACADFC2A64E1A81E3 /* RestKit-dummy.m */; }; - FBF860C80EF28CB36A9D92DF462DF9FA /* PFHTTPURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BDD575E014B1E668BA1B9894C948067E /* PFHTTPURLRequestConstructor.h */; }; - FC46D5340A6EEE1D53E43468AAB8E8AE /* PFLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 03367350D97367D351BF7432EEB86476 /* PFLocationManager.m */; }; FC80B648D04C0C24045319E648B2A3BC /* RKHTTPUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FAEC79833DB40A28030BB60070264FC /* RKHTTPUtilities.h */; }; - FCF7B5A60C9D80BB8ED81E71C7AC8626 /* FBSDKLikeActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = F9D67943D4B100689C01F858F4E29E79 /* FBSDKLikeActionController.m */; }; + FCAF408597CAB99CF982209BB5537EC3 /* PFOfflineQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E2F75F68AFD577F425752D70A27C101 /* PFOfflineQueryController.m */; }; + FCBFA0453DBB0F8F4AF1357F4146786E /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5050C345988F196D52CCAA4890D4A5AC /* FBSDKGraphRequestPiggybackManager.m */; }; FD2144C4BC84FA87FB99AF5DF4A659D4 /* TKState.m in Sources */ = {isa = PBXBuildFile; fileRef = 9936ED8D363FA6B09EA60941182E9F3B /* TKState.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - FD7D810A80E4DE1BBDD59AFA587AD339 /* PFQueryState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6802793E8C624630B319D30FBB7BE7A2 /* PFQueryState_Private.h */; }; - FD854AA80D142379CA38FEFC40926EF2 /* PFPushState.m in Sources */ = {isa = PBXBuildFile; fileRef = D5F1C1D5F2030DAAB3B584BA7D15297F /* PFPushState.m */; }; - FD9E790BDBDA3FF44CE35A7B8A5C8E45 /* FBSDKBridgeAPICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 099E18F815C1869B7833BD3221BA0636 /* FBSDKBridgeAPICrypto.m */; }; - FDB04831594240B98C5A985E5E559096 /* FBSDKAccessTokenCacheV3_17.m in Sources */ = {isa = PBXBuildFile; fileRef = 35A73E0B40DC10C4D7D7B780D2C67F00 /* FBSDKAccessTokenCacheV3_17.m */; }; - FE2F61A9BF88B14639C597A77478638B /* PFQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = 94EC2DDBDD9F074B0353114A4386A277 /* PFQuery.h */; }; - FE482065A069005611AF4B036E7DDCED /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 20904F67CBBE7208D5F1E68654CE0F20 /* BFMeasurementEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - FE82D78EAC4F3D46EEE5C2A3C97A12D9 /* PFPushManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 936E53085AB59399AE3E6F0458D49941 /* PFPushManager.h */; }; - FEF08B955C1019BC8165006939B7078A /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 07CDAECDB40A9B34C6E06521F65F757A /* AFNetworkActivityIndicatorManager.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + FDD7628668487CAD152512E075B03461 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C7078E789BF9691EB3849F6E4E49A44 /* QuartzCore.framework */; }; + FDD7E5D9ED6B3C14DA9AAC2E76E41BEB /* FBSDKLikeActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F072CC41C2003448531F2F1DD2C3BAF /* FBSDKLikeActionController.m */; }; + FDE2BCBED2CDDB457C2E9BAC04F2FD0F /* PFObjectConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CA3B417E38375FB5F145C27AD082AF9 /* PFObjectConstants.h */; }; + FE773D7E55768620FC122E7ACFBA4034 /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 657D21EB951543C1C5D4637E284EB184 /* FBSDKTestUsersManager.m */; }; + FEB09DE83CDF651DE7AA0D755192CD2A /* PFConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = EC9CD4C5A5B393EB5D90DB05D6FFB6BC /* PFConstants.h */; }; + FF079D3BEB117F01203AF1170BD693F9 /* FBSDKShareOpenGraphAction.h in Headers */ = {isa = PBXBuildFile; fileRef = C90D137341FF777D06387AF9304BB376 /* FBSDKShareOpenGraphAction.h */; }; + FF7BAEF5786AD43C26852E973A2DFD9C /* PFPushController.h in Headers */ = {isa = PBXBuildFile; fileRef = EEE7C4904A076EEBF17B54F44707AAB5 /* PFPushController.h */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 093C2AC3C5E237ACED621AA6B7D73B6D /* PBXContainerItemProxy */ = { + 07BFC67E4B108510AC71A0A5449A1488 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = C4D8ECA2F5CC610D055AC7FA148E43D2; - remoteInfo = ISO8601DateFormatterValueTransformer; + remoteGlobalIDString = 07B33CB3AC7A0FB33C3E2F87B3AAA6BB; + remoteInfo = FBSDKShareKit; }; - 1536105EABB17B75368B8845D8A8A1A0 /* PBXContainerItemProxy */ = { + 0F4B7338DE46F13905B30C9CD30ACD11 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 5A89C7736981130B2EEED27805B7A855; - remoteInfo = RestKit; + remoteGlobalIDString = F70BF3EA9E69856AC06EB0A27F8F7F5E; + remoteInfo = Bolts; }; - 239D716A3732545F57F6ED90CA59DDB3 /* PBXContainerItemProxy */ = { + 180401446108A5AAAA06D984EB79CE8E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = C9CF1C271EB58F682F0F38C8C35BAB4C; - remoteInfo = AFNetworking; + remoteGlobalIDString = 38C996FDE9DF6549D8681DED0DF37B6D; + remoteInfo = FBSDKCoreKit; }; - 23F28E4F9E5A50D4AF27D1F08804D853 /* PBXContainerItemProxy */ = { + 1AB990EC905BAD0E697E2BAC5D549712 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 8466032D91D4D9DB26BAB2973DE4580C; - remoteInfo = FBSDKShareKit; + remoteGlobalIDString = A2770197345BCE1622568AECE6B8E824; + remoteInfo = SOCKit; }; - 31F1FB5DB979090B7765B885014DAD55 /* PBXContainerItemProxy */ = { + 1D5F94CFB0F913E9511CAF914A2C7D0E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 6C88FB013486FDFB342E31070F055B7D; + remoteGlobalIDString = 0EC7816D6AB1C0830108FC61D968488B; + remoteInfo = ISO8601DateFormatterValueTransformer; + }; + 29A6349C83120662A53BAEEE2F9ABC4C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = BE61E7AE076C01CBC74564E4084B550D; remoteInfo = RKValueTransformers; }; - 39053682DD570F5383CFAFDFA822127C /* PBXContainerItemProxy */ = { + 2B44CF1EB2D215F539DD3C9096A747BF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = CDF1F15921EAF837BFD0B27099E8329A; - remoteInfo = Bolts; + remoteGlobalIDString = 9350FE989EB5F0E5321B9054194D84DE; + remoteInfo = Parse; }; - 508B59BE547C282F52F9DF11BE75503E /* PBXContainerItemProxy */ = { + 49B938426B06493DDBE9DBA4CC8167EF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 158117D77AED03B83733E51D2D22983B; - remoteInfo = TransitionKit; + remoteGlobalIDString = CDF340FD050E9DF3676FDDB5D9FAB6D4; + remoteInfo = AFNetworking; }; - 5563D6248C22BD4C3E0FFE34C535469A /* PBXContainerItemProxy */ = { + 5386A145A9F17749EC933FDD8A74359E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 25B614D6ADBCB106DEE01D64514A1810; - remoteInfo = FBSDKCoreKit; + remoteGlobalIDString = F70BF3EA9E69856AC06EB0A27F8F7F5E; + remoteInfo = Bolts; }; - 57E12F0F504016B2C065B8034ECE2D59 /* PBXContainerItemProxy */ = { + 575F96E46E0B5ADAE795139F2952EFDA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 158117D77AED03B83733E51D2D22983B; remoteInfo = TransitionKit; }; - 84C3283C4EAF19219F77EF955EEAC0A9 /* PBXContainerItemProxy */ = { + 5B461E7087ACB47CECF41951623B8F80 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = CDF1F15921EAF837BFD0B27099E8329A; + remoteGlobalIDString = F70BF3EA9E69856AC06EB0A27F8F7F5E; remoteInfo = Bolts; }; - 90B03C8EA96A90ABB289AE1E7B8CB4E8 /* PBXContainerItemProxy */ = { + 654EFE0AC2F47EF9497FFF8114F473D7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = A2770197345BCE1622568AECE6B8E824; - remoteInfo = SOCKit; + remoteGlobalIDString = 158117D77AED03B83733E51D2D22983B; + remoteInfo = TransitionKit; }; - 9B70D042ADE9795273832351FFFB8CFE /* PBXContainerItemProxy */ = { + 6B8FF1AF77E489E69AEB579F435326F7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = C4D8ECA2F5CC610D055AC7FA148E43D2; - remoteInfo = ISO8601DateFormatterValueTransformer; + remoteGlobalIDString = CDF340FD050E9DF3676FDDB5D9FAB6D4; + remoteInfo = AFNetworking; }; - 9DC04E6E78FC23637B6657E249590718 /* PBXContainerItemProxy */ = { + 877102F5600E4993D45569385031DED4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 6C88FB013486FDFB342E31070F055B7D; - remoteInfo = RKValueTransformers; + remoteGlobalIDString = 38C996FDE9DF6549D8681DED0DF37B6D; + remoteInfo = FBSDKCoreKit; }; - AE639A41EDE660124BE148F0E8E7394E /* PBXContainerItemProxy */ = { + A15359A20CD2F146F3CBD2E67023AD73 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 63CC4B4092B896F9AACC389383233974; - remoteInfo = Parse; + remoteGlobalIDString = BE61E7AE076C01CBC74564E4084B550D; + remoteInfo = RKValueTransformers; }; - B16B0202933CE8F18E60DCCD208B1597 /* PBXContainerItemProxy */ = { + A373B3453AFBE2E4FEDDE5C90598DE2B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = A2770197345BCE1622568AECE6B8E824; remoteInfo = SOCKit; }; - B7D088F9D52456E09D8B301F2AE6E793 /* PBXContainerItemProxy */ = { + AA705DEA05C275BCCCAB7D4127377E6F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 25B614D6ADBCB106DEE01D64514A1810; - remoteInfo = FBSDKCoreKit; - }; - C3F27F08CCA705703E82EEFC33DC50B8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 9E227047A8538838626AF4BBABC0B0F8; - remoteInfo = FBSDKLoginKit; + remoteGlobalIDString = BE61E7AE076C01CBC74564E4084B550D; + remoteInfo = RKValueTransformers; }; - CBF10CAFC2EFE98D4A25364E19BF1C82 /* PBXContainerItemProxy */ = { + E7F7CD721264BF80F21FE180ACFBC031 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 6C88FB013486FDFB342E31070F055B7D; - remoteInfo = RKValueTransformers; + remoteGlobalIDString = 0EC7816D6AB1C0830108FC61D968488B; + remoteInfo = ISO8601DateFormatterValueTransformer; }; - D782CEA6DA0EBB775C10DD584216C744 /* PBXContainerItemProxy */ = { + F22120048F68D4153949EDB8127B913F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = CDF1F15921EAF837BFD0B27099E8329A; - remoteInfo = Bolts; + remoteGlobalIDString = 38C996FDE9DF6549D8681DED0DF37B6D; + remoteInfo = FBSDKCoreKit; }; - DCB8E09559E74DD3DFE0FD33CA8EF96B /* PBXContainerItemProxy */ = { + F6396DD99C4035C157C64A537AB51678 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 25B614D6ADBCB106DEE01D64514A1810; - remoteInfo = FBSDKCoreKit; + remoteGlobalIDString = 4A563E15AD58F61DA31660DAC05A1819; + remoteInfo = FBSDKLoginKit; }; - E30C7FB51D911920237559D43F5B7B23 /* PBXContainerItemProxy */ = { + FDC24DB1B6A19A6B4BE393C5E2FC474B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = C9CF1C271EB58F682F0F38C8C35BAB4C; - remoteInfo = AFNetworking; + remoteGlobalIDString = 5A89C7736981130B2EEED27805B7A855; + remoteInfo = RestKit; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0017DC9D1BC027BEB92D7D8697443DF9 /* PFACLPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLPrivate.h; path = Parse/Internal/ACL/PFACLPrivate.h; sourceTree = ""; }; - 00362EC9E1B6EFC1EED72CCE1F5C6C63 /* PFUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState.h; path = Parse/Internal/User/State/PFUserState.h; sourceTree = ""; }; - 0050807933AECE8D25A707F975203C5E /* PFUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserController.m; path = Parse/Internal/User/Controller/PFUserController.m; sourceTree = ""; }; - 0072CE5DF3D9990F609BD5035548F5B9 /* FBSDKAppInviteContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m; sourceTree = ""; }; - 00923F2734FCE8DC39F906E40B67C73C /* PFObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController.h; path = Parse/Internal/Object/Controller/PFObjectController.h; sourceTree = ""; }; - 00BEC727AA03A29C964A4BB55F65EC55 /* PFUserAuthenticationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserAuthenticationController.m; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m; sourceTree = ""; }; - 02577CE0CCF20FCB28AE72A1BA70963E /* PFLocationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLocationManager.h; path = Parse/Internal/PFLocationManager.h; sourceTree = ""; }; + 00C31AE91F93FAC03797A08CB87C7EB4 /* FBSDKLikeBoxView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m; sourceTree = ""; }; + 00EA57E2C906799ED67EBCFC4089A02C /* PFAsyncTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAsyncTaskQueue.m; path = Parse/Internal/PFAsyncTaskQueue.m; sourceTree = ""; }; + 010267A36F8E4347A122ABBE2CC67F43 /* PFHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHash.h; path = Parse/Internal/PFHash.h; sourceTree = ""; }; + 0133F272E02689C37483595FA9CE6B21 /* FBSDKLikeButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m; sourceTree = ""; }; + 016D06C44A3331089F9E5A1C6DFB4678 /* PFCloud.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloud.h; path = Parse/PFCloud.h; sourceTree = ""; }; 02B4ADB1ECAC920122E657AE18B10BFE /* TKEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKEvent.m; path = Code/TKEvent.m; sourceTree = ""; }; - 02F8999A03E5DEA16BE168121A32E180 /* PFSQLiteDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.h; sourceTree = ""; }; - 02FC7E859C916A1DBF3665CCB705934E /* FBSDKCheckmarkIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCheckmarkIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h; sourceTree = ""; }; - 03367350D97367D351BF7432EEB86476 /* PFLocationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLocationManager.m; path = Parse/Internal/PFLocationManager.m; sourceTree = ""; }; - 03C41F440C6257C38CBA6D08B490B043 /* PFRESTQueryCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTQueryCommand.h; path = Parse/Internal/Commands/PFRESTQueryCommand.h; sourceTree = ""; }; + 02EDCF1DE69B8C5E506B9C40F67F083F /* PFCurrentInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentInstallationController.h; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.h; sourceTree = ""; }; + 0315685B7458D2A9C07F1B237F76CFF2 /* FBSDKAppInviteDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h; sourceTree = ""; }; + 0329086571C053B994B8FFFEABD553B5 /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h; sourceTree = ""; }; + 034F3E05ED59E7ABCE82F0A079D5958F /* PFFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile.h; path = Parse/PFFile.h; sourceTree = ""; }; + 03C5A44C8CE91BCF8B86912605825A8D /* PFRelation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelation.h; path = Parse/PFRelation.h; sourceTree = ""; }; 0401D69DFE749735649FE64519D6905B /* RKMappingOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingOperation.h; path = Code/ObjectMapping/RKMappingOperation.h; sourceTree = ""; }; - 045C613BE82C1C475C7BD0F490B49AAE /* PFURLSessionFileDownloadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionFileDownloadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.h; sourceTree = ""; }; - 046383C54AB907710018AAD4CBD3C3E8 /* PFUserAuthenticationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationDelegate.h; path = Parse/PFUserAuthenticationDelegate.h; sourceTree = ""; }; - 04C0F1EBAB58CF7749671D83B4E420E1 /* PFRESTObjectBatchCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectBatchCommand.m; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.m; sourceTree = ""; }; - 04DEAAD70B0460B7272FDFBAD65C2F1A /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h; sourceTree = ""; }; - 04FFB1F6F919106E7BC4541DF614C595 /* PFRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState.h; path = Parse/Internal/Relation/State/PFRelationState.h; sourceTree = ""; }; - 056454EF3FADBB01D32D7C28A920E5D6 /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = ""; }; + 0435A677495AC526E61CDF8F62EC197C /* PFRESTSessionCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTSessionCommand.h; path = Parse/Internal/Commands/PFRESTSessionCommand.h; sourceTree = ""; }; + 047273E0F6F9E9889E073EE49F2755C4 /* PFMutablePushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutablePushState.m; path = Parse/Internal/Push/State/PFMutablePushState.m; sourceTree = ""; }; + 051170D8AB31E65A6185350F81C989F8 /* PFUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserController.h; path = Parse/Internal/User/Controller/PFUserController.h; sourceTree = ""; }; 056B8AC3C068967E144E9912F4D082E4 /* RKPropertyMappingTestExpectation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyMappingTestExpectation.h; path = Code/Testing/RKPropertyMappingTestExpectation.h; sourceTree = ""; }; - 0604B97C12B3337FD1CACD5908DADF8F /* FBSDKAppGroupAddDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupAddDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h; sourceTree = ""; }; - 06CE7699540EF590425A414A8CB424CE /* PFMultiProcessFileLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLock.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.h; sourceTree = ""; }; + 05D04D86B15EAD72ACA964052E4E5C94 /* PFInstallation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallation.h; path = Parse/PFInstallation.h; sourceTree = ""; }; + 05E89D5ACCE63E55AA659EFB8A18A9B5 /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = ""; }; + 0614A8CED09956ACEF0CD07B5F13C94F /* PFSQLiteStatement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteStatement.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.m; sourceTree = ""; }; + 06CCF32425B76D2DCB319BACF4D3874B /* PFRESTConfigCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTConfigCommand.m; path = Parse/Internal/Commands/PFRESTConfigCommand.m; sourceTree = ""; }; + 06ED326096FE698B59E6B3A44613D460 /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = ""; }; + 06F0EB1FDCF792E30B358C159A66CE09 /* FBSDKLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h; sourceTree = ""; }; 0704D1A252C21153AADCFF76B76A34C8 /* RKErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKErrors.m; path = Code/Support/RKErrors.m; sourceTree = ""; }; - 072E4E053796CCB0B198E0D81722FD94 /* PFPushUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushUtilities.h; path = Parse/Internal/Push/Utilites/PFPushUtilities.h; sourceTree = ""; }; 079E082DB0D5553BF25A89DDB3AF9428 /* RKDotNetDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDotNetDateFormatter.m; path = Code/Support/RKDotNetDateFormatter.m; sourceTree = ""; }; - 07B7B00924E5C1CE262E21FBE11F0636 /* PFEventuallyPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyPin.m; path = Parse/Internal/PFEventuallyPin.m; sourceTree = ""; }; - 07CDAECDB40A9B34C6E06521F65F757A /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = AFNetworking/AFNetworkActivityIndicatorManager.m; sourceTree = ""; }; - 0801E5E29361C01869760055DF9A576B /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = ""; }; - 0830AA4DD7D7479876C01AF8CAC79CE3 /* PFRelationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationPrivate.h; path = Parse/Internal/Relation/PFRelationPrivate.h; sourceTree = ""; }; - 0861457C7F36148ED273E55B6BD5AB36 /* PFPurchase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchase.m; path = Parse/PFPurchase.m; sourceTree = ""; }; - 08FE1B46AC0005B96FC3513ECA03CF73 /* PFTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFTaskQueue.m; path = Parse/Internal/PFTaskQueue.m; sourceTree = ""; }; - 090D1B6F36F0C028C8CB3219A3BEF8C2 /* PFFile_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile_Private.h; path = Parse/Internal/File/PFFile_Private.h; sourceTree = ""; }; - 093F04A337062D005B479463914EBC72 /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = ""; }; - 09458C192035B62F6C206BA8051E7C08 /* ParseManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseManager.m; path = Parse/Internal/ParseManager.m; sourceTree = ""; }; - 099E18F815C1869B7833BD3221BA0636 /* FBSDKBridgeAPICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPICrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m; sourceTree = ""; }; - 09F505C5912DBB85A144A4BB9A39B321 /* AFJSONRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFJSONRequestOperation.m; path = AFNetworking/AFJSONRequestOperation.m; sourceTree = ""; }; + 0820BC8566C53EE58544095722F3A841 /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = ""; }; + 09F2C7C83A1343D93FFA99723D546B25 /* PFConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConstants.m; path = Parse/PFConstants.m; sourceTree = ""; }; 0A04D42ACCA3BD87E3584E6ACC4F56E6 /* RKTestFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestFactory.h; path = Code/Testing/RKTestFactory.h; sourceTree = ""; }; - 0AA098F387A57A706C7677CC210587E7 /* FBSDKSendButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSendButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h; sourceTree = ""; }; - 0AD287C54F7CB5375C2852F3503334A8 /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = ""; }; - 0AD87F2B55AE1CC46DE21D8EC71A1A65 /* FBSDKLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h; sourceTree = ""; }; + 0A2458DB30CB9D1EBB4393A5B3933BDA /* PFPropertyInfo_Runtime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo_Runtime.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.m; sourceTree = ""; }; + 0A7EE3C6BF7D5145AA91E9DE69EC0268 /* PFSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSession.m; path = Parse/PFSession.m; sourceTree = ""; }; 0B24226F7C8491F1AB37ED40AB15E909 /* TransitionKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "TransitionKit-prefix.pch"; sourceTree = ""; }; - 0B6D5A9ACB11850D607ADB4A0BF03613 /* FBSDKLikeButtonPopWAV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButtonPopWAV.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h; sourceTree = ""; }; - 0B6F6FC45E0A6A809CFB5D64AB572F12 /* PFOfflineStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineStore.m; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m; sourceTree = ""; }; - 0BC26D7366B9BCFCED00BA2443EC3F02 /* PFCommandRunning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunning.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.h; sourceTree = ""; }; - 0C0A1A0341B691B932463C02DCAFDDC0 /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = ""; }; - 0C10D8C3B24FB7B0FC1A118A6F1B04FB /* PFJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFJSONSerialization.h; path = Parse/Internal/PFJSONSerialization.h; sourceTree = ""; }; - 0D6D55B44BD8ADC5AE8F8AC715416614 /* PFObjectSubclassingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassingController.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.h; sourceTree = ""; }; + 0BA6D617D6C18C4F2260EB0CCC8EFBEA /* PFBaseState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBaseState.m; path = Parse/Internal/PFBaseState.m; sourceTree = ""; }; + 0BBF841A16205C45B1396307D83A7373 /* PFAnalytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalytics.m; path = Parse/PFAnalytics.m; sourceTree = ""; }; + 0BD061E291C8DA3E18934FCF5E92DC81 /* PFSQLiteDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.h; sourceTree = ""; }; + 0C330B991A689F502E36122BCC0AC499 /* PFUserFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserFileCodingLogic.m; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.m; sourceTree = ""; }; + 0CA7CE3E5F98F41F8574F6D183CE2263 /* PFConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfigController.m; path = Parse/Internal/Config/Controller/PFConfigController.m; sourceTree = ""; }; + 0CCED09AA914A9CA2759E1F53B53226E /* PFObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectUtilities.m; path = Parse/Internal/Object/Utilities/PFObjectUtilities.m; sourceTree = ""; }; + 0D1520ADAF247AF6031216CDA841A5E1 /* PFDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDateFormatter.m; path = Parse/Internal/PFDateFormatter.m; sourceTree = ""; }; + 0D3C379231F1FECE1C711149F33EBEFB /* FBSDKLikeControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeControl.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m; sourceTree = ""; }; 0D726415722488F38181C0A46AB22051 /* RKErrorMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKErrorMessage.m; path = Code/ObjectMapping/RKErrorMessage.m; sourceTree = ""; }; - 0DB2691909F8F7F08DD7D43B4054114B /* PFMutableObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableObjectState.h; path = Parse/Internal/Object/State/PFMutableObjectState.h; sourceTree = ""; }; - 0DBE3A827C4CAF42FAF19063819A6576 /* FBSDKLoginKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginKit+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h"; sourceTree = ""; }; - 0E1C86507B3C7A9D987C1EE846A6E40F /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = ""; }; - 0E3D6E7602874F770FF747226169660D /* PFMutableObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableObjectState.m; path = Parse/Internal/Object/State/PFMutableObjectState.m; sourceTree = ""; }; - 0E4597D072E258E34336B3F35C0F419D /* PFURLSessionDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.h; sourceTree = ""; }; - 0E78B233EDC284D3081B128801711498 /* PFObjectFilePersistenceController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFilePersistenceController.h; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.h; sourceTree = ""; }; - 0E874B0F3891D0BC5E6EE724082760D1 /* Bolts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Bolts.m; path = Bolts/Common/Bolts.m; sourceTree = ""; }; - 0F1C624B7EAFBBBECE836A2F4331DB5A /* PFConfig_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig_Private.h; path = Parse/Internal/Config/PFConfig_Private.h; sourceTree = ""; }; - 0FE0AA3631AA8F7CFF57EB3EDC6CB5D1 /* AFImageRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageRequestOperation.h; path = AFNetworking/AFImageRequestOperation.h; sourceTree = ""; }; - 1011B8135A3EB4DCC7EF201AE71B3FC8 /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = ""; }; - 101AA17C537653FDA61829C8AB7E5153 /* Bolts-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Bolts-Private.xcconfig"; sourceTree = ""; }; + 0DA2C4DB80EFCE1F0AA9350F23EA627D /* PFCommandCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache.h; path = Parse/Internal/PFCommandCache.h; sourceTree = ""; }; + 0E16BBB83C9F9B91092969D2266317F0 /* PFProductsRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProductsRequestHandler.h; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.h; sourceTree = ""; }; + 0E290B1D6DDD48B2FD0139DCD4B3348D /* PFDefaultACLController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDefaultACLController.h; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.h; sourceTree = ""; }; + 0EAF15F0F0DEC2E2FEC93095CB96203C /* PFJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFJSONSerialization.h; path = Parse/Internal/PFJSONSerialization.h; sourceTree = ""; }; + 0EB0F987B2BFAD674CC1392DB885D94A /* AFHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPRequestOperation.h; path = AFNetworking/AFHTTPRequestOperation.h; sourceTree = ""; }; + 0EB95732F4D4CA886A89094CFD467D4E /* PFCommandResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandResult.h; path = Parse/Internal/PFCommandResult.h; sourceTree = ""; }; + 0EDBC476683341C63522CBC88AF10401 /* PFUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUser.m; path = Parse/PFUser.m; sourceTree = ""; }; + 0F072CC41C2003448531F2F1DD2C3BAF /* FBSDKLikeActionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionController.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m; sourceTree = ""; }; + 0F96B01B6AD0F525E17F2074B2EA1EB1 /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = ""; }; + 0FFE01FDB1315C89C0A38D8E4378E0DF /* ParseModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseModule.m; path = Parse/Internal/ParseModule.m; sourceTree = ""; }; 103E4A41DD6EB7EE5C4377711291077A /* RKOperationStateMachine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKOperationStateMachine.h; path = Code/Support/RKOperationStateMachine.h; sourceTree = ""; }; - 1124CA6C3A9CDC4513ADC2393C447BE8 /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = ""; }; - 1127B3C5AFB734B232FDDA51D4E340BE /* FBSDKMessengerIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessengerIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m; sourceTree = ""; }; - 115AC32B7B718A94B00F763F6051128C /* libISO8601DateFormatterValueTransformer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libISO8601DateFormatterValueTransformer.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 118801D377E51EA29C240E0C19C227D2 /* PFCachedQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCachedQueryController.h; path = Parse/Internal/Query/Controller/PFCachedQueryController.h; sourceTree = ""; }; - 11E9E6138AF7E67248A1C931ACA660C3 /* PFInternalUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInternalUtils.m; path = Parse/Internal/PFInternalUtils.m; sourceTree = ""; }; - 12090BC886A58C9962169A136F7BBD2A /* PFInstallationIdentifierStore_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore_Private.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore_Private.h; sourceTree = ""; }; - 121F69A49C07670028BD2BB1285A2CE9 /* PFGeoPoint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFGeoPoint.m; path = Parse/PFGeoPoint.m; sourceTree = ""; }; - 12807CE1156EF23D621FBB87101DEF6D /* FBSDKLikeBoxView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m; sourceTree = ""; }; - 129FC7A2DDACFE1328825F6A865367F5 /* PFCommandResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandResult.m; path = Parse/Internal/PFCommandResult.m; sourceTree = ""; }; - 12DB62145E101EECBBF2B0ECBD3625D6 /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = ""; }; - 12F1636D729AD4B6DCCEF11891F28113 /* PFAnonymousUtils_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils_Private.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousUtils_Private.h; sourceTree = ""; }; - 132DA86A6F8F171F7FC7130F078FFCE1 /* FBSDKLoginButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginButton.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h; sourceTree = ""; }; - 13771E6540FA0D1373C61F3F5618DE1D /* BFTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTask.h; path = Bolts/Common/BFTask.h; sourceTree = ""; }; - 13FF6F02AD00C0AE6A8450F567534E23 /* PFHTTPRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPRequest.h; path = Parse/Internal/HTTPRequest/PFHTTPRequest.h; sourceTree = ""; }; - 141ACE54E47BD21C3F91FE031C2F27A4 /* FBSDKSharePhotoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhotoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m; sourceTree = ""; }; + 10837937B6B53962D8F7B9D3F8E3EE03 /* PFMutableQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableQueryState.m; path = Parse/Internal/Query/State/PFMutableQueryState.m; sourceTree = ""; }; + 10A45B9F776F2A6EE5C3BE2ADD460FE3 /* PFPushChannelsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushChannelsController.h; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.h; sourceTree = ""; }; + 10E904E302F7D7767F91F58889C20F5A /* PFQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState.h; path = Parse/Internal/Query/State/PFQueryState.h; sourceTree = ""; }; + 120D59FB9C748DAA660CEDCF7C419164 /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = ""; }; + 12DC95CF2C7DDD42977C94C97EB1637C /* PFCommandRunningConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunningConstants.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h; sourceTree = ""; }; + 12E1213C18161FD134F34314DF960015 /* PFUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserController.m; path = Parse/Internal/User/Controller/PFUserController.m; sourceTree = ""; }; + 133D805C2313FF465674A3486EA36F90 /* PFEventuallyPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyPin.m; path = Parse/Internal/PFEventuallyPin.m; sourceTree = ""; }; + 135CD2563AE865A18CBC5672956D2875 /* PFPushManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushManager.h; path = Parse/Internal/Push/Manager/PFPushManager.h; sourceTree = ""; }; + 1414B4582D8A53F4321084D4EB5C3291 /* PFAlertView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAlertView.h; path = Parse/Internal/PFAlertView.h; sourceTree = ""; }; + 146309296F3083D07EB7A9F31D3148AB /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = ""; }; 149E15962A38A8DACF6A9781F4A92F22 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 14B70CCCA8DFFB7FFCA35AC2170FF307 /* FBSDKShareOpenGraphObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphObject.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m; sourceTree = ""; }; - 14DC7569B23924F725356C7D875B9264 /* PFObjectConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectConstants.m; path = Parse/Internal/Object/Constants/PFObjectConstants.m; sourceTree = ""; }; - 155D2AB8BF53B4A09062475713E1C814 /* PFRole.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRole.m; path = Parse/PFRole.m; sourceTree = ""; }; + 14BB822079E39C44A662265EDC832BED /* FBSDKLikeButtonPopWAV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButtonPopWAV.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h; sourceTree = ""; }; + 15218D870F12055E685D3D03517191A4 /* PFKeyValueCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeyValueCache.m; path = Parse/Internal/KeyValueCache/PFKeyValueCache.m; sourceTree = ""; }; 15854EBB45118A734AE77C8EFB408F10 /* TransitionKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "TransitionKit-dummy.m"; sourceTree = ""; }; - 1592F16F5E573F913E7D111CEB121A50 /* FBSDKAppInviteDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m; sourceTree = ""; }; 15A529C27057E4A57D259CBC6E6CE49C /* Pods-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-acknowledgements.markdown"; sourceTree = ""; }; - 15FDA819E4A67B0052C5B32B6C6BC32C /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h; sourceTree = ""; }; - 172810485903145DA5B543BCCDD9710D /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = ""; }; - 17453FC905983BE633680D64EBDF6BF7 /* PFPushChannelsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushChannelsController.h; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.h; sourceTree = ""; }; - 176FB6F42987293FB1E182C230B96F21 /* PFCommandCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache.h; path = Parse/Internal/PFCommandCache.h; sourceTree = ""; }; - 177385813576F961AC0390A29802236F /* PFKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeychainStore.h; path = Parse/Internal/PFKeychainStore.h; sourceTree = ""; }; - 1779F15C59809673515A3EBCF2C22457 /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m; sourceTree = ""; }; - 17EBDD0D3F6CA772ACD223D47BC6606F /* PFRelation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelation.m; path = Parse/PFRelation.m; sourceTree = ""; }; - 184AA3B1233A04E41BF6626A6B9D8891 /* _FBSDKLoginRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKLoginRecoveryAttempter.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h; sourceTree = ""; }; - 1860C6036F41AF4136B179EC2D9939E3 /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = ""; }; - 18FD24EF1379B71A3998D456EAF6CE07 /* PFInstallationConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationConstants.m; path = Parse/Internal/Installation/Constants/PFInstallationConstants.m; sourceTree = ""; }; - 191B64353A25EF72E4466B2F6B9EBEE3 /* FBSDKLikeButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h; sourceTree = ""; }; - 193263D0A1C4B4903D81B084F3616AC7 /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = ""; }; - 1955631553D95C0ED5688DA6F29CC8E6 /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = ""; }; - 1A7CF9343BE7F2F1B6FB78E1A12A6B72 /* FBSDKLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h; sourceTree = ""; }; - 1A982F733776ECB9F974B94BB7AA8825 /* PFInstallation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallation.h; path = Parse/PFInstallation.h; sourceTree = ""; }; - 1AD3DE9B80F57FA325D62663B4BFF9A0 /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = ""; }; - 1B0819CE19B7C8DFC00BC735593D2EBA /* FBSDKSharingButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h; sourceTree = ""; }; - 1B176B4F560C96F25001CAAEF4C24496 /* PFProductsRequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProductsRequestHandler.m; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.m; sourceTree = ""; }; + 15CD896F18B0B8E074D5B6AC246B7278 /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = ""; }; + 16784EC95D6273ED6752D7B64213E746 /* PFRESTCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand.h; path = Parse/Internal/Commands/PFRESTCommand.h; sourceTree = ""; }; + 16ECC679D7E6944181A4143EBFFDF2B6 /* PFPinningEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningEventuallyQueue.h; path = Parse/Internal/PFPinningEventuallyQueue.h; sourceTree = ""; }; + 18307BC0EA14A69F26486ACEC94450C2 /* PFURLSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession_Private.h; sourceTree = ""; }; + 184E2F2A8FAA80A676143A0D7ED71EA6 /* BFMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFMeasurementEvent.m; path = Bolts/iOS/BFMeasurementEvent.m; sourceTree = ""; }; + 197B3FB536BC0102E5F4615D92F57286 /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkNavigation.h; path = Bolts/iOS/BFAppLinkNavigation.h; sourceTree = ""; }; + 19DB73C3D0C75D9D0E53F4111D417C01 /* FBSDKShareVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideo.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h; sourceTree = ""; }; + 1A369AE523AE5428A6D9F6550614FE9D /* FBSDKAppGroupAddDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupAddDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h; sourceTree = ""; }; + 1A71824B576DDC6AD0FCFF11F0B133D6 /* PFAnalyticsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsController.h; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.h; sourceTree = ""; }; + 1B1DBB7A5A5EE9B44DE86876D074207E /* FBSDKShareOpenGraphObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphObject.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h; sourceTree = ""; }; + 1B828DC073409B28F4FD2BAE7E834D87 /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = ""; }; 1B949380B0A36EE9DCE1BE3DD205872D /* RKRouteSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRouteSet.m; path = Code/Network/RKRouteSet.m; sourceTree = ""; }; 1BA732D4BA53C90B93834949CEB41543 /* RKMapperOperation_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapperOperation_Private.h; path = Code/ObjectMapping/RKMapperOperation_Private.h; sourceTree = ""; }; - 1BC8CA549338879E1C908751DD3FD1C0 /* PFCommandURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandURLRequestConstructor.m; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.m; sourceTree = ""; }; - 1BF338323FECE8F074D22D8BD870DF10 /* FBSDKGameRequestFrictionlessRecipientCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestFrictionlessRecipientCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m; sourceTree = ""; }; - 1C1DC34229B831B07F4F2C955050094A /* PFPushChannelsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushChannelsController.m; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.m; sourceTree = ""; }; - 1CAD9C68AAF00E405CF6AAA2841B7C73 /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = ""; }; - 1CB2A1FCA55FB8C6D0C65EF34A7E0C1A /* PFRESTPushCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTPushCommand.h; path = Parse/Internal/Commands/PFRESTPushCommand.h; sourceTree = ""; }; - 1D3AB2BDF8EB2BCD1EDB0AE62B5E7FE1 /* PFObjectState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState_Private.h; path = Parse/Internal/Object/State/PFObjectState_Private.h; sourceTree = ""; }; - 1DBD4C55AA3FFD740DBC08F5C47D6E0C /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = ""; }; - 1E2E9BC6F467A47EC23C62B07767BBD1 /* PFSQLiteStatement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteStatement.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.m; sourceTree = ""; }; - 1E4620C81A01480F3991F76D4DE7BE37 /* Parse-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Parse-dummy.m"; sourceTree = ""; }; - 1EE0F82547915413E8FA3F4BD68D24DD /* PFCloudCodeController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloudCodeController.m; path = Parse/Internal/CloudCode/PFCloudCodeController.m; sourceTree = ""; }; - 1F9AAC2C6FF818D6EC48169DC75AF8C0 /* FBSDKShareDialogMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialogMode.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m; sourceTree = ""; }; + 1BD7322E2971743B34A65BD010CC3165 /* PFPush.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPush.m; path = Parse/PFPush.m; sourceTree = ""; }; + 1C58296A347F3D84D11A281BDEFE97B5 /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = ""; }; + 1C6660D91D6167EB784831B0571E2F52 /* PFObjectEstimatedData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectEstimatedData.m; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.m; sourceTree = ""; }; + 1C7FC38C024D78EC53EEDA5E5B3C97E1 /* PFCommandCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandCache.m; path = Parse/Internal/PFCommandCache.m; sourceTree = ""; }; + 1D9A8A5EA7D67587E22F112968E8FA29 /* PFKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeychainStore.m; path = Parse/Internal/PFKeychainStore.m; sourceTree = ""; }; + 1D9FA4BADE605736317EE1596FAAD3B1 /* PFOperationSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOperationSet.h; path = Parse/Internal/Object/OperationSet/PFOperationSet.h; sourceTree = ""; }; + 1DD477EE3462803C03920D7EA94FCFF8 /* PFTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFTaskQueue.m; path = Parse/Internal/PFTaskQueue.m; sourceTree = ""; }; + 1E014614141F279B34D0F4EAFD7F4DFD /* PFBase64Encoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBase64Encoder.h; path = Parse/Internal/PFBase64Encoder.h; sourceTree = ""; }; + 1E8E523D8195E9B1B9C90976CF0540B8 /* PFCommandResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandResult.m; path = Parse/Internal/PFCommandResult.m; sourceTree = ""; }; + 1EC7D96BC9F20D61C8C0611234289492 /* PFMultiProcessFileLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLock.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.h; sourceTree = ""; }; + 1F2F968FC5E9ACF4AC754AB79F42241F /* BoltsVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BoltsVersion.h; path = Bolts/Common/BoltsVersion.h; sourceTree = ""; }; + 1F79510BB12DF693E6899A336B944ACA /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = ""; }; 1FAEC79833DB40A28030BB60070264FC /* RKHTTPUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKHTTPUtilities.h; path = Code/ObjectMapping/RKHTTPUtilities.h; sourceTree = ""; }; - 2002E8422D89C583334968262BDCE8E7 /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = ""; }; - 205D68C9BFE7AFE003B0D6E31B36DF5C /* BFCancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationToken.h; path = Bolts/Common/BFCancellationToken.h; sourceTree = ""; }; - 20904F67CBBE7208D5F1E68654CE0F20 /* BFMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFMeasurementEvent.m; path = Bolts/iOS/BFMeasurementEvent.m; sourceTree = ""; }; - 20B30A30703B653252AC6D15C630DA1D /* PFPurchaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchaseController.h; path = Parse/Internal/Purchase/Controller/PFPurchaseController.h; sourceTree = ""; }; - 20C0209C7621AD4E7C7E895393FEEAAE /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = ""; }; + 1FB89A08C5C8B78FBEBC245FD9B7D1E3 /* BFURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL.h; path = Bolts/iOS/BFURL.h; sourceTree = ""; }; + 20A09146C96CD4735D748F3A404D0813 /* PFMutableUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableUserState.h; path = Parse/Internal/User/State/PFMutableUserState.h; sourceTree = ""; }; + 20D0533465677FE2928E4C7429447F7E /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = ""; }; 2109F27F00016BC697F3694A3C8A4EF0 /* RKPathMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPathMatcher.h; path = Code/Network/RKPathMatcher.h; sourceTree = ""; }; - 2166AF7026817E78A1616576AA382EE3 /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = ""; }; - 21B3BED0A995DF74C8CE5AFBA1C4F804 /* PFMultiProcessFileLock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLock.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.m; sourceTree = ""; }; - 2210879128FAFD55EE381E85138A6E97 /* FBSDKShareDialogMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialogMode.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h; sourceTree = ""; }; - 22736BBB7E29843BFD25AF6EA526FD54 /* FBSDKShareUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h; sourceTree = ""; }; - 2281F1087FCCD198F1FD69A1A5036483 /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = ""; }; + 225675EE77126480507353150E5D4EF3 /* FBSDKShareKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareKit.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h; sourceTree = ""; }; + 225CE2C43ADC4EF1A17EA9FF67B4F977 /* PFRESTFileCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTFileCommand.h; path = Parse/Internal/Commands/PFRESTFileCommand.h; sourceTree = ""; }; 22BCAB2ABFBB3566EC2E7ED45706F704 /* RKResponseDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKResponseDescriptor.h; path = Code/Network/RKResponseDescriptor.h; sourceTree = ""; }; - 232ECC729A95758C447EC817E24A8382 /* AFHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPRequestOperation.m; path = AFNetworking/AFHTTPRequestOperation.m; sourceTree = ""; }; - 234BE7352A8ED0F63714ADF373DC4713 /* FBSDKShareError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareError.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m; sourceTree = ""; }; - 23780D118CBD55B9811B664EAE111A4F /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkNavigation.h; path = Bolts/iOS/BFAppLinkNavigation.h; sourceTree = ""; }; - 237D0660F2210DBDAA12CCD66B659E6C /* PFConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfigController.h; path = Parse/Internal/Config/Controller/PFConfigController.h; sourceTree = ""; }; - 238732EAA8097AAF32A176A68CD82F76 /* FBSDKAppGroupAddDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupAddDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m; sourceTree = ""; }; + 23887764BFA845B70B1FFB0552AC2706 /* PFObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController.h; path = Parse/Internal/Object/Controller/PFObjectController.h; sourceTree = ""; }; + 23D64D6AB75296AE7976248043BC6313 /* PFBase64Encoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBase64Encoder.m; path = Parse/Internal/PFBase64Encoder.m; sourceTree = ""; }; + 23ED3F16546340CE6D8F500DF0D81FA7 /* BFCancellationTokenRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenRegistration.h; path = Bolts/Common/BFCancellationTokenRegistration.h; sourceTree = ""; }; + 23EF53286E86923DB4C02DDCCA3A21CA /* FBSDKSendButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSendButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m; sourceTree = ""; }; + 241767740C7A36BC4016F69B2DFCDFF5 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "ISO8601DateFormatterValueTransformer-Private.xcconfig"; sourceTree = ""; }; + 241D1E7CB01A87C87C02CE0340F5DF83 /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = ""; }; + 2423DAEF9BB294E6E266E9CC7E5F196D /* PFRelation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelation.m; path = Parse/PFRelation.m; sourceTree = ""; }; + 24255CB705666DD05FB446873255ED8B /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = ""; }; 243B9EEDBFD73BC0E48417E798EB7D49 /* Support.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Support.h; path = Code/Support.h; sourceTree = ""; }; - 249868FBCC4788A742D8CFD87310BE9C /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = ""; }; - 25258821C0218CE36A9415CFB0D9F151 /* PFUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserController.h; path = Parse/Internal/User/Controller/PFUserController.h; sourceTree = ""; }; + 249C09A58FE9BB84BAC197A821EC4678 /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = ""; }; + 24F93C0C8EA467DEFCB4CBDB150BE439 /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m; sourceTree = ""; }; + 2515970C08E7445D9A26AC8952E7FE41 /* PFOperationSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOperationSet.m; path = Parse/Internal/Object/OperationSet/PFOperationSet.m; sourceTree = ""; }; + 25501EDA6B8396052C4721695FA27371 /* PFURLSessionCommandRunner.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionCommandRunner.m; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.m; sourceTree = ""; }; + 2554B79C64ECEFCFEE123612E3C5F6CA /* PFFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileManager.m; path = Parse/Internal/PFFileManager.m; sourceTree = ""; }; + 2561AF367B0B04A8C83CD5E1C4F0C08E /* PFACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACLState.m; path = Parse/Internal/ACL/State/PFACLState.m; sourceTree = ""; }; 259C735ED2FFC41359586661CE813736 /* RKPathUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPathUtilities.m; path = Code/Support/RKPathUtilities.m; sourceTree = ""; }; - 260ACD6713EAF6AF8913E567E5D000B1 /* PFURLConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLConstructor.h; path = Parse/Internal/HTTPRequest/PFURLConstructor.h; sourceTree = ""; }; - 2623CB720FCCE67AE1CCB1219F214621 /* FBSDKLikeDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeDialog.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m; sourceTree = ""; }; + 25FA6116451E734C381D4F3606124CE3 /* FBSDKShareUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m; sourceTree = ""; }; + 260BC0B46C2DA2BCD9F62462348F6673 /* FBSDKShareDialogMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialogMode.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m; sourceTree = ""; }; + 2628FFC954B5343B03FF5E09727D6E1A /* BFAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkResolving.h; path = Bolts/iOS/BFAppLinkResolving.h; sourceTree = ""; }; + 2651DC8D21016E6D886F1577AAA22972 /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = ""; }; 265CD502B435E47078A0F18F014D4A2C /* SOCKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SOCKit-prefix.pch"; sourceTree = ""; }; - 26648E7CE5BE1B08B80D3B2DAF2A53C7 /* PFFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileManager.m; path = Parse/Internal/PFFileManager.m; sourceTree = ""; }; - 26A65996250E9A6E0A45799C5C80A4D6 /* PFFieldOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperation.m; path = Parse/Internal/FieldOperation/PFFieldOperation.m; sourceTree = ""; }; - 26E851E7927031416617D440DC5A8D91 /* FBSDKShareOpenGraphAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphAction.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h; sourceTree = ""; }; - 271F7EB07DABBEBBC72C435841D5B7B9 /* PFPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPin.m; path = Parse/Internal/LocalDataStore/Pin/PFPin.m; sourceTree = ""; }; + 26871A94013EE429FE6FE9F7ABF2A9A2 /* PFLocationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLocationManager.h; path = Parse/Internal/PFLocationManager.h; sourceTree = ""; }; + 26CFE764B4CDD5F929831F42EDA41A4D /* PFPush.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPush.h; path = Parse/PFPush.h; sourceTree = ""; }; + 26E148529A5018FB0DBA0E6E6EF425A7 /* BFDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFDefines.h; path = Bolts/Common/BFDefines.h; sourceTree = ""; }; + 27000997EDF8B991F4B6E05E67C67113 /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = ""; }; 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 279B027B17D8D0512BA90F26313978F2 /* PFInstallationIdentifierStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.h; sourceTree = ""; }; - 27B54F6FA7D889D22C88195CA1B1EA1E /* PFInstallationConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationConstants.h; path = Parse/Internal/Installation/Constants/PFInstallationConstants.h; sourceTree = ""; }; + 277CDEE8DFC2D7DBE20B8F1E0A377FC4 /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = ""; }; + 279536DCCF7BB43F3A2CAF27A31B5C57 /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView_Internal.h; path = Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h; sourceTree = ""; }; 27D73CCE08122C37FC401A9805E8033F /* RKPathUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPathUtilities.h; path = Code/Support/RKPathUtilities.h; sourceTree = ""; }; - 27E46D6B718D04CD81F500D08BDCA779 /* PFCloud.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloud.m; path = Parse/PFCloud.m; sourceTree = ""; }; - 283697319377A707827BA6D72CD7F2B7 /* PFSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession_Private.h; path = Parse/Internal/Session/PFSession_Private.h; sourceTree = ""; }; - 2850C6A23236DBC93BCD286061735858 /* PFQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryController.h; path = Parse/Internal/Query/Controller/PFQueryController.h; sourceTree = ""; }; - 2890440E42FDEC4C76D4C02BC10E1DD4 /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = ""; }; - 28D3D49C022C268585679D13BC5BFC4B /* FBSDKLoginKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKLoginKit-Private.xcconfig"; sourceTree = ""; }; - 28D76BC349DBB9D1197FFC7ED4732AAA /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m; sourceTree = ""; }; - 28FC8B75B37315B6FEDFAC246BEDB597 /* RKISO8601DateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKISO8601DateFormatter.m; path = Code/RKISO8601DateFormatter.m; sourceTree = ""; }; - 29BDAC347646877BAF67F12CBA39BDB2 /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = ""; }; + 27DA1A860C5602304E507058E4A25B5B /* PFGeoPoint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFGeoPoint.m; path = Parse/PFGeoPoint.m; sourceTree = ""; }; + 2827FE6F0B040DD6EE347F254F0F17BB /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = ""; }; + 282B79F0BE2F4372C754A93C4D8D6B3F /* PFPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPin.m; path = Parse/Internal/LocalDataStore/Pin/PFPin.m; sourceTree = ""; }; + 28C76500BA7B3265FA9C1FBF8EC034FF /* PFMutableRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableRelationState.h; path = Parse/Internal/Relation/State/PFMutableRelationState.h; sourceTree = ""; }; + 29D48AAEE67B134EE8B0622C1BCF7F8D /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = ""; }; + 29DF82C03CFD45F592C6F19AE103BA06 /* PFGeoPoint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPoint.h; path = Parse/PFGeoPoint.h; sourceTree = ""; }; + 29EE40865F4426262E949C4C302BF226 /* PFAsyncTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAsyncTaskQueue.h; path = Parse/Internal/PFAsyncTaskQueue.h; sourceTree = ""; }; + 2A2200960479E4759E2409514013ECE9 /* FBSDKShareKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareKit+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h"; sourceTree = ""; }; 2A2306F062D21537BCCD17B8E1265AE8 /* TKTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKTransition.m; path = Code/TKTransition.m; sourceTree = ""; }; - 2A451A543F61480DA16C5AF92075E754 /* FBSDKShareVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideo.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m; sourceTree = ""; }; - 2AFF4BBCD87A80EBBD6ABEB24467DD92 /* PFPropertyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo.m; sourceTree = ""; }; - 2B10539AD7B65940ECDF70BE96FD7FE9 /* PFGeoPoint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPoint.h; path = Parse/PFGeoPoint.h; sourceTree = ""; }; - 2B1C44F7812C72D0C7AF70AF7E3582BA /* AFPropertyListRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFPropertyListRequestOperation.m; path = AFNetworking/AFPropertyListRequestOperation.m; sourceTree = ""; }; - 2B4DDE724F0C79DF04632181A3641990 /* PFDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDateFormatter.h; path = Parse/Internal/PFDateFormatter.h; sourceTree = ""; }; - 2B9375688AA4B17E0481C9DEF5E1CDC7 /* BFAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkNavigation.m; path = Bolts/iOS/BFAppLinkNavigation.m; sourceTree = ""; }; - 2BCD6FD3DADE66AF00AD766F8C7CAAEE /* BFAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererView.m; path = Bolts/iOS/BFAppLinkReturnToRefererView.m; sourceTree = ""; }; + 2A90605386336758A5E6828DC0AB5D68 /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = ""; }; + 2B6C7232F24CC263AED71695EF279E34 /* RKValueTransformers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKValueTransformers.h; path = Code/RKValueTransformers.h; sourceTree = ""; }; + 2B98304BCBDE12F2AE18BD8F746580A4 /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = ""; }; + 2BD5B84023B338476E31F24FC2D689A0 /* FBSDKMessageDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessageDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m; sourceTree = ""; }; + 2BE2D580E317F0D1965AC68793F7AEBB /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = ""; }; + 2BF466CB1A2B08C6FD3F60694F3E8D34 /* AFHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPRequestOperation.m; path = AFNetworking/AFHTTPRequestOperation.m; sourceTree = ""; }; 2C16B289C2694A9F01E5AC4A40F5BBC5 /* RKURLEncodedSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKURLEncodedSerialization.m; path = Code/Support/RKURLEncodedSerialization.m; sourceTree = ""; }; - 2CBA80D14BCC38865278570CF75FD31B /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent_Internal.h; path = Bolts/iOS/BFMeasurementEvent_Internal.h; sourceTree = ""; }; - 2D51A7F9937E1B2641CDCF758F76D7BB /* PFSQLiteDatabase_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase_Private.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase_Private.h; sourceTree = ""; }; + 2C3E03A90536DD5330B859DFE31570B6 /* PFInstallation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallation.m; path = Parse/PFInstallation.m; sourceTree = ""; }; + 2C7078E789BF9691EB3849F6E4E49A44 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + 2C97568E00B081386FD3982DE3AD286B /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = ""; }; + 2CA3B417E38375FB5F145C27AD082AF9 /* PFObjectConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectConstants.h; path = Parse/Internal/Object/Constants/PFObjectConstants.h; sourceTree = ""; }; + 2D2CAB276E3575E9D3DF2E0990BE0F69 /* AFXMLRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFXMLRequestOperation.h; path = AFNetworking/AFXMLRequestOperation.h; sourceTree = ""; }; + 2D3002035E29C7449C791970871E10EF /* PFCurrentConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentConfigController.m; path = Parse/Internal/Config/Controller/PFCurrentConfigController.m; sourceTree = ""; }; 2D582428208099E80BE466E2940ED2D0 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.debug.xcconfig; sourceTree = ""; }; - 2D63F2855FC61EC1E5A671306404454E /* PFMutableACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableACLState.h; path = Parse/Internal/ACL/State/PFMutableACLState.h; sourceTree = ""; }; - 2DD054F75FE35DC95593292D3F5E3384 /* PFFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileState.m; path = Parse/Internal/File/State/PFFileState.m; sourceTree = ""; }; - 2DE04FB62AD4572A1EF2E388614A2906 /* PFFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile.h; path = Parse/PFFile.h; sourceTree = ""; }; - 2EBD9E78DE2BF6EF77A771D225D5E591 /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m; sourceTree = ""; }; + 2E0204ED6BDC62B268724EB7F3257243 /* PFUserFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserFileCodingLogic.h; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.h; sourceTree = ""; }; + 2E0C4FA92D8641B9361554A63982E78E /* PFCachedQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCachedQueryController.h; path = Parse/Internal/Query/Controller/PFCachedQueryController.h; sourceTree = ""; }; 2EE325AB5D11F8E0314EC1A65AFC915A /* RKMappingOperationDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingOperationDataSource.h; path = Code/ObjectMapping/RKMappingOperationDataSource.h; sourceTree = ""; }; - 2EEFB0F3823FCEF4E5F3012C82EF7AB2 /* PFPropertyInfo_Runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Runtime.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h; sourceTree = ""; }; - 2F1964D552EA65831BBC604C32B2ED59 /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = ""; }; - 2FC310BBD6C8CF36F6B10AEF4AE850E3 /* PFObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectController.m; path = Parse/Internal/Object/Controller/PFObjectController.m; sourceTree = ""; }; - 2FD7126F63E44E22CF5C50BA6B03A193 /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = ""; }; + 2F99B6F42887EE972402E88BB751D67A /* PFPushPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushPrivate.h; path = Parse/Internal/Push/PFPushPrivate.h; sourceTree = ""; }; + 308B85DD48F9A76C1D714CB80189B6E1 /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = ""; }; + 309C5A18E36D89DDB6DB309BFFB3A074 /* FBSDKAppGroupContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h; sourceTree = ""; }; 30E24C0CC2F297CA249BC9496B1273BA /* RKTestHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestHelpers.h; path = Code/Testing/RKTestHelpers.h; sourceTree = ""; }; - 31FC85622F6B1B2EE86B878CA3F2FDC7 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "ISO8601DateFormatterValueTransformer-Private.xcconfig"; sourceTree = ""; }; - 32087D68AA15B65193CE803974E093B2 /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = ""; }; + 31A09CE6942D32E70D7AF420C0C28F98 /* FBSDKLikeDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeDialog.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m; sourceTree = ""; }; + 31B4E41F62E37AA98F6E9D5C10E984D0 /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m; sourceTree = ""; }; + 31DC2BEB54C59BD2AC3FFC21BDBB71E5 /* FBSDKLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h; sourceTree = ""; }; + 31EB18FA1114A3D648354CA9461243B5 /* PFObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObject.m; path = Parse/PFObject.m; sourceTree = ""; }; 323152BA48F777D5C406ED5AE427B1AA /* RKRequestDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRequestDescriptor.m; path = Code/Network/RKRequestDescriptor.m; sourceTree = ""; }; - 3268179096664214C41900456AEC9D52 /* PFInstallationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationPrivate.h; path = Parse/Internal/Installation/PFInstallationPrivate.h; sourceTree = ""; }; - 3295D89852F84111A5FF8AB168AD2F73 /* PFURLSessionDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.m; sourceTree = ""; }; - 33244990175A48516182AFDCEDA52E66 /* PFCloudCodeController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloudCodeController.h; path = Parse/Internal/CloudCode/PFCloudCodeController.h; sourceTree = ""; }; - 335CD23D95285D1C44A95A3A178AAEF8 /* PFAnalyticsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsController.m; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.m; sourceTree = ""; }; - 3367B0B681D943417FA5E440D899F4CC /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m; sourceTree = ""; }; - 33B37F8486EF0E3980BE534DE830918D /* PFOfflineStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineStore.h; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.h; sourceTree = ""; }; - 33BBC7950FBFD8EC38A39966E30603F6 /* FBSDKGameRequestDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m; sourceTree = ""; }; + 32369FE3517FE0DA85D6AC9113DFC4D4 /* PFRESTQueryCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTQueryCommand.m; path = Parse/Internal/Commands/PFRESTQueryCommand.m; sourceTree = ""; }; + 323A920BBC78CC4F32DC36633840DF3E /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = ""; }; + 325246AADDC0F382E655933B585A347B /* Bolts-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Bolts-Private.xcconfig"; sourceTree = ""; }; + 335878EBC1626AF73529ED5CDC829E08 /* FBSDKLikeActionControllerCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionControllerCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h; sourceTree = ""; }; + 33AA2846801F30C2C7C711FD553C91A2 /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = ""; }; 341EA091B57F44C4DE7AEFBD627D722D /* RKRouteSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRouteSet.h; path = Code/Network/RKRouteSet.h; sourceTree = ""; }; - 34395EA09EF6FAFFB300C19081748EEE /* PFBase64Encoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBase64Encoder.m; path = Parse/Internal/PFBase64Encoder.m; sourceTree = ""; }; - 35A73E0B40DC10C4D7D7B780D2C67F00 /* FBSDKAccessTokenCacheV3_17.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_17.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m; sourceTree = ""; }; - 35AF2ED07EF17B28DEF0B55966C47D4B /* AFNetworking-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "AFNetworking-Private.xcconfig"; sourceTree = ""; }; - 35D4DD0CA2C38FD64FC4C4C5AC5AA6EF /* PFAnonymousAuthenticationProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousAuthenticationProvider.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.h; sourceTree = ""; }; - 36292F1577420FAA6A00FC1B269D609D /* PFACL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACL.h; path = Parse/PFACL.h; sourceTree = ""; }; - 36625BA3EB692FB9405C776E41327F85 /* FBSDKAccessTokenCacheV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV4.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h; sourceTree = ""; }; - 3666E0447FCD05578684BF0E8B8507E2 /* FBSDKLoginKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKLoginKit-dummy.m"; sourceTree = ""; }; - 36A148580114BC82A5E01A2432F549D8 /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = ""; }; - 36BFEC5CD6E83BF4C00AC37F0AFF0C3F /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = ""; }; - 36C94BDCD3271399C249A6BF6A0A9530 /* AFHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPRequestOperation.h; path = AFNetworking/AFHTTPRequestOperation.h; sourceTree = ""; }; - 3732A1AC8F240E488FC16C8707FF1E6C /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = ""; }; - 3810817360404E4967AF028144ECC497 /* PFObjectSubclassInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassInfo.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.m; sourceTree = ""; }; - 386296E81D7A932F1BD2EAE4210CD7B3 /* FBSDKAccessTokenCacheV3_21.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_21.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h; sourceTree = ""; }; - 3863A24C8545BD8471114044940471D0 /* FBSDKShareKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareKit.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h; sourceTree = ""; }; - 3893550463B3F2896DA11E95A24787C5 /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = ""; }; - 38A77616F3D6A593F41C5A9E9C1A53EF /* PFSQLiteDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabase.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m; sourceTree = ""; }; - 3911B9D2BBD5CBF1337C009F5F541534 /* PFDevice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDevice.h; path = Parse/Internal/PFDevice.h; sourceTree = ""; }; - 392B81F3F69ACC5FDB7A16EFD49EC5CC /* ParseModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseModule.h; path = Parse/Internal/ParseModule.h; sourceTree = ""; }; + 342BC152E1A501D98AA8468B20BC2FBF /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = ""; }; + 3448DD0E19AC2C9CA013ACD2BC7AD8C1 /* PFQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryController.m; path = Parse/Internal/Query/Controller/PFQueryController.m; sourceTree = ""; }; + 34DA5ED519561747CB24898F11335A79 /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = ""; }; + 35438CE7344049DBB7B9FFEB80DB1414 /* FBSDKAppGroupJoinDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupJoinDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m; sourceTree = ""; }; + 35E46F0E48D76D7792ECCC0237C8E9CF /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = ""; }; + 363004150CBDDD99121ED1C9FEE4CE8C /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFWebViewAppLinkResolver.m; path = Bolts/iOS/BFWebViewAppLinkResolver.m; sourceTree = ""; }; + 36491A250DFAF0D996CC5E60467D5DDA /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = ""; }; + 3661FB21F4391073E8AAC82B6B840E75 /* PFRelationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationPrivate.h; path = Parse/Internal/Relation/PFRelationPrivate.h; sourceTree = ""; }; + 377BAEED2390B90A3A797FBF573227C9 /* AFJSONRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFJSONRequestOperation.m; path = AFNetworking/AFJSONRequestOperation.m; sourceTree = ""; }; + 379C2A4AD2DFCF269463822AE535090C /* PFInstallationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationPrivate.h; path = Parse/Internal/Installation/PFInstallationPrivate.h; sourceTree = ""; }; + 37FB4F3FA6D54D38DE79356A63834230 /* PFGeoPointPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPointPrivate.h; path = Parse/Internal/PFGeoPointPrivate.h; sourceTree = ""; }; + 38A6D9AA344FD2AE5B4D70FAD5062AB4 /* FBSDKLikeButton+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeButton+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h"; sourceTree = ""; }; + 38E608FDFE07ABF00DB09AE6F9F9DA28 /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = ""; }; + 38E7251464FBD8CA6364DE9833E6D6E7 /* PFMultiProcessFileLock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLock.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.m; sourceTree = ""; }; + 394002AEF7F5079BD3B473255A1C49AD /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = ""; }; + 3951D3E423BE2ABCBF9DE0E746CE311B /* PFConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfigController.h; path = Parse/Internal/Config/Controller/PFConfigController.h; sourceTree = ""; }; 3954F2A0287065523FE93833957D805D /* RKErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKErrors.h; path = Code/Support/RKErrors.h; sourceTree = ""; }; - 39AE3319F220425568181E51340F50AE /* PFHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHash.h; path = Parse/Internal/PFHash.h; sourceTree = ""; }; - 39EA90D4F4D435F351B6F8488F1F81CF /* FBSDKBridgeAPICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPICrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h; sourceTree = ""; }; - 3A0F3D060245CFF4C9AD4E4E4B1FE443 /* PFPushManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushManager.m; path = Parse/Internal/Push/Manager/PFPushManager.m; sourceTree = ""; }; - 3A43F656D15828E22D2934C2706AC1BF /* PFThreadsafety.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFThreadsafety.h; path = Parse/Internal/ThreadSafety/PFThreadsafety.h; sourceTree = ""; }; - 3A8C0790E53BC4B6EA94B51E24532E88 /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = ""; }; - 3AA3D565456E290589B27357D512E69F /* AFXMLRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFXMLRequestOperation.h; path = AFNetworking/AFXMLRequestOperation.h; sourceTree = ""; }; - 3AE7D5E655DFEA88C846CA2F49FD7F27 /* PFObjectSubclassingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassingController.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.m; sourceTree = ""; }; + 3A6880AAFC8F7351294B649E15B6AD7F /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = ""; }; 3B29A50B713DB33904E5298D3E082CA5 /* RKObjectMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMapping.m; path = Code/ObjectMapping/RKObjectMapping.m; sourceTree = ""; }; - 3B538D8071AB6432B658069378DCA381 /* PFObject+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFObject+Subclass.h"; path = "Parse/PFObject+Subclass.h"; sourceTree = ""; }; - 3B63B03172CDA0B6BED2BB6710B8DF38 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; - 3BA13D9D4803FA88A8E6FC6E687D0706 /* PFMutablePushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutablePushState.m; path = Parse/Internal/Push/State/PFMutablePushState.m; sourceTree = ""; }; + 3B5D125F50E0B3A81028AB31CB76BF71 /* AFURLConnectionOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLConnectionOperation.m; path = AFNetworking/AFURLConnectionOperation.m; sourceTree = ""; }; + 3B76E48E1FD54E0BBE64291059DD0428 /* Bolts-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Bolts-dummy.m"; sourceTree = ""; }; + 3B92CFB0FD23A754847A9505BDCE2BA5 /* PFFileController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileController.h; path = Parse/Internal/File/Controller/PFFileController.h; sourceTree = ""; }; + 3BE5A10627DC0B9C01F875BD06336D9E /* BFAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink_Internal.h; path = Bolts/iOS/BFAppLink_Internal.h; sourceTree = ""; }; 3C15EE98D2719FAA6A81AAB54A7E471D /* RKMapperOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapperOperation.h; path = Code/ObjectMapping/RKMapperOperation.h; sourceTree = ""; }; - 3C21952B82AFD2B07F65F1B3D08202AE /* BFURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL.h; path = Bolts/iOS/BFURL.h; sourceTree = ""; }; 3CAC9E985D7035114C36728704534B05 /* RestKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "RestKit-Private.xcconfig"; sourceTree = ""; }; - 3D2D7ECC712E5A988D37CECB9069F554 /* PFRESTQueryCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTQueryCommand.m; path = Parse/Internal/Commands/PFRESTQueryCommand.m; sourceTree = ""; }; - 3D3EBBEF6D5B4018AA707132922DC9B4 /* FBSDKMessageDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessageDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h; sourceTree = ""; }; - 3E6A5B35F3A36DB58FE56540BA6EEDBE /* PFJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFJSONSerialization.m; path = Parse/Internal/PFJSONSerialization.m; sourceTree = ""; }; - 3F812EB07D870BBFD5F42E05E17C7391 /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = ""; }; - 3FF60E0CE99104F46FC615B3C7403E91 /* PFInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationController.m; path = Parse/Internal/Installation/Controller/PFInstallationController.m; sourceTree = ""; }; - 40739D148D4DAE664411F3F2DBE4D3F8 /* PFPush.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPush.h; path = Parse/PFPush.h; sourceTree = ""; }; + 3CCC11B45A7E2D9A95182BA1D01D60F9 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; + 3CE46AC0E13A1092344C773AC969D749 /* PFInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationController.h; path = Parse/Internal/Installation/Controller/PFInstallationController.h; sourceTree = ""; }; + 3D17058F2F424FB1C4E4BCDCBB95C1FE /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = ""; }; + 3D37164FA87C3325903A708109C92A81 /* PFMutableRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableRelationState.m; path = Parse/Internal/Relation/State/PFMutableRelationState.m; sourceTree = ""; }; + 3D3E83167931010DA87FD972EABFF257 /* PFFieldOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperation.m; path = Parse/Internal/FieldOperation/PFFieldOperation.m; sourceTree = ""; }; + 3D859BEB9EC0DAF7A490519CC6ACB7D2 /* FBSDKURLConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m; sourceTree = ""; }; + 3DABBC1078165E5DDDEFA2E7472C5559 /* AFNetworking-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "AFNetworking-Private.xcconfig"; sourceTree = ""; }; + 3E82461A10900C11141F5132C28A7C0B /* PFSessionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionUtilities.h; path = Parse/Internal/Session/Utilities/PFSessionUtilities.h; sourceTree = ""; }; + 3EC5BDE29DEA58916F31388DB4B8EE2D /* PFAnalyticsUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsUtilities.m; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.m; sourceTree = ""; }; + 3F97330408CBCB9866B2403F56722EED /* PFInstallationIdentifierStore_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore_Private.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore_Private.h; sourceTree = ""; }; + 4077DBC410381FA11AC51C618CB81140 /* PFEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyQueue.m; path = Parse/Internal/PFEventuallyQueue.m; sourceTree = ""; }; 40C40C0517D7C210D4A32215DEB225C1 /* TKEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKEvent.h; path = Code/TKEvent.h; sourceTree = ""; }; - 40D041AA460AE7AD2009874357D2204A /* FBSDKLikeDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeDialog.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h; sourceTree = ""; }; - 4116573287BF306C8EC05DBF93BD549B /* PFObjectBatchController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectBatchController.m; path = Parse/Internal/Object/BatchController/PFObjectBatchController.m; sourceTree = ""; }; - 4123C94C7948B9704563A505B3014AB6 /* FBSDKLikeActionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionController.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h; sourceTree = ""; }; 41BA0CE95AB03F346F54CA27DB00DE30 /* FBSDKLoginKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKLoginKit-prefix.pch"; sourceTree = ""; }; - 41D4AFB79D025DDA3EF311ED8B830DC9 /* PFOfflineQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryController.h; path = Parse/Internal/Query/Controller/PFOfflineQueryController.h; sourceTree = ""; }; - 423474460E489D78FEE63988A287BF8A /* PFLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogging.h; path = Parse/Internal/PFLogging.h; sourceTree = ""; }; - 4258F79C649680EAAA4724050C5400A2 /* PFFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState.h; path = Parse/Internal/File/State/PFFileState.h; sourceTree = ""; }; + 41BC1E717C434D21A5472F44C601A2B7 /* libRKValueTransformers.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRKValueTransformers.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 4214851D9461FC93F660FCB73142859E /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = ""; }; + 4241AE7BF35421577B79454BFEF8418F /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = ""; }; + 42849FC04B9D5B542DF3CC22E779A9A1 /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = ""; }; 4294F692EAF153601A3A4B780A9C0668 /* RKTestFixture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestFixture.m; path = Code/Testing/RKTestFixture.m; sourceTree = ""; }; - 42C4A6EF402B488E5D8EDE80F1F34D3B /* BFCancellationTokenSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenSource.h; path = Bolts/Common/BFCancellationTokenSource.h; sourceTree = ""; }; - 42C79B025767C1D9A3147013CE056436 /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = ""; }; - 430C3FA8EA2C3E2BB22ACBE65DA6AC89 /* Parse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Parse.m; path = Parse/Parse.m; sourceTree = ""; }; - 4312B7DA20D0FDC68E026677B16FB93B /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h; sourceTree = ""; }; + 433C981127868BA24B0F88745E7CB575 /* FBSDKSharing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharing.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h; sourceTree = ""; }; + 437CBC5E7E1B50CC1E72F15C88FF6AC7 /* PFKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeychainStore.h; path = Parse/Internal/PFKeychainStore.h; sourceTree = ""; }; 4391678EE65327EC09710A2246AE3738 /* TKStateMachine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKStateMachine.m; path = Code/TKStateMachine.m; sourceTree = ""; }; - 449D2F1679AC195C51DC348284B99B77 /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = ""; }; - 44AC358011ABD9D6C4C840D2F2EAA419 /* FBSDKLoginCompletion+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginCompletion+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h"; sourceTree = ""; }; - 44AFCC4FD732944B15943D675B7BBD73 /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = ""; }; - 4533001C2D55630F9C37C6627CA516F3 /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = ""; }; - 45488E198C9CA5E2D83FDDD1A6F2C741 /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = ""; }; - 45498ABE1A6B5EAA74C26A43CF36BFB7 /* BFURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL_Internal.h; path = Bolts/iOS/BFURL_Internal.h; sourceTree = ""; }; - 45863B73565B4D9E4E17BBFFEA8FF6B4 /* AFPropertyListRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFPropertyListRequestOperation.h; path = AFNetworking/AFPropertyListRequestOperation.h; sourceTree = ""; }; - 45870028D12B4C716DCD60DD091B5320 /* PFAsyncTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAsyncTaskQueue.m; path = Parse/Internal/PFAsyncTaskQueue.m; sourceTree = ""; }; + 44335A04DAA32B00C92160838C5E789D /* FBSDKGameRequestDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m; sourceTree = ""; }; + 445422ACF05285D68F70D3C51879712A /* PFCommandRunning.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunning.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.m; sourceTree = ""; }; + 450E74CFABCD4AC3721543ED32395800 /* _FBSDKLoginRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKLoginRecoveryAttempter.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h; sourceTree = ""; }; + 453E27BE733413CA48A57B257194DA21 /* PFSQLiteDatabaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseController.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.h; sourceTree = ""; }; + 457C5AA079BF304DBA165DC39799AC62 /* PFObjectConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectConstants.m; path = Parse/Internal/Object/Constants/PFObjectConstants.m; sourceTree = ""; }; + 45A6C38D859E4B8E2327A07A3AD329D0 /* FBSDKSystemAccountStoreAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSystemAccountStoreAdapter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m; sourceTree = ""; }; 45B3E4226F866D5C78E3AE4441683829 /* RKErrorMessage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKErrorMessage.h; path = Code/ObjectMapping/RKErrorMessage.h; sourceTree = ""; }; - 46CD7CED669BB2E7D7C29361322568D4 /* FBSDKShareLinkContent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareLinkContent+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h"; sourceTree = ""; }; - 47437D5AB702C3D4165C272B390FADA7 /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = AFNetworking/AFNetworkActivityIndicatorManager.h; sourceTree = ""; }; - 4839C0B94DA359E603C96FAAF9707D62 /* RKValueTransformers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKValueTransformers.h; path = Code/RKValueTransformers.h; sourceTree = ""; }; - 48D9F0444140EC888D96942489E879B4 /* libAFNetworking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAFNetworking.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 48FB82823746BF27BE7130F2353BC212 /* PFCurrentObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentObjectControlling.h; path = Parse/Internal/Object/CurrentController/PFCurrentObjectControlling.h; sourceTree = ""; }; - 4943E9CC3F93FDF967E81314D76CC855 /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = ""; }; - 49B32C446E230AF54905CEEA3305D3DB /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = ""; }; + 46012E85A00B1012C8DE6CB3D5CC0DFB /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; + 4606174FBA2263954939C4357F44E377 /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = ""; }; + 461D15480309D56D3AA4AFA926B8B93C /* PFObjectState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState_Private.h; path = Parse/Internal/Object/State/PFObjectState_Private.h; sourceTree = ""; }; + 46229044B27E123F58A7778EF094817E /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m; sourceTree = ""; }; + 46DE20F02F523C0B14736898D3E8BBAC /* PFPaymentTransactionObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.h; sourceTree = ""; }; + 47BD5C685318CE8CD9CA1D43C28605B9 /* PFKeyValueCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache_Private.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache_Private.h; sourceTree = ""; }; + 482DBED41E33C8058B42A4F92B753528 /* PFLocationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLocationManager.m; path = Parse/Internal/PFLocationManager.m; sourceTree = ""; }; + 48D2279C54480FB712244BACA57F6212 /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 48D467EF578B57E2381B95690763CFA8 /* FBSDKLoginManagerLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLogger.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h; sourceTree = ""; }; + 49AA101256B7C595F77F9BA67DED0212 /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = ""; }; 49EA15DA07E51D9C44D29EF7BFB6F1E2 /* RKAttributeMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKAttributeMapping.m; path = Code/ObjectMapping/RKAttributeMapping.m; sourceTree = ""; }; + 49ECF8C520F56BF1EE925AEC28EE0110 /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = ""; }; + 4A2F1425F21ABB04C1E959E932C6F415 /* PFPurchaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchaseController.m; path = Parse/Internal/Purchase/Controller/PFPurchaseController.m; sourceTree = ""; }; + 4A58330FB326FE4593BBBA3411078B43 /* PFCoreDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreDataProvider.h; path = Parse/Internal/PFCoreDataProvider.h; sourceTree = ""; }; + 4A643D621DB5B92B641E0E85372BA98E /* FBSDKLoginTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m; sourceTree = ""; }; 4AA98567E44F5A893A264AAAA201DC0A /* RKPropertyInspector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyInspector.h; path = Code/ObjectMapping/RKPropertyInspector.h; sourceTree = ""; }; - 4B3DCF9225B393FBEC5AF6CCD9267797 /* PFFileStagingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileStagingController.m; path = Parse/Internal/File/Controller/PFFileStagingController.m; sourceTree = ""; }; - 4B4CB8ECB1CC3450C6965777EB3C8B67 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; - 4B9DBF11D74F42EAFF80AF44ABE2B00E /* PFOfflineObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineObjectController.m; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m; sourceTree = ""; }; + 4AE04A545B1286F2CB61AF35B668B691 /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = ""; }; 4BAB7DDAE6FE91E089EBA417E69790BB /* RKMappingTest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingTest.m; path = Code/Testing/RKMappingTest.m; sourceTree = ""; }; 4BADEB18E715ADFCC4E321048C18D8CF /* RKLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKLog.m; path = Code/Support/RKLog.m; sourceTree = ""; }; - 4C105E35C96EB4B380048F9D08BEED1A /* PFFileStagingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileStagingController.h; path = Parse/Internal/File/Controller/PFFileStagingController.h; sourceTree = ""; }; - 4C11C508533F23B09A4472C54933C508 /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = ""; }; - 4C13CE56C415F93B1A3921AB6358B990 /* PFProduct.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProduct.m; path = Parse/PFProduct.m; sourceTree = ""; }; - 4CEB2F6C3776B2FAA2762E5C908FA891 /* FBSDKShareVideoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h; sourceTree = ""; }; + 4BC5A2D868E11F3896499C4C384C1057 /* BFTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTask.m; path = Bolts/Common/BFTask.m; sourceTree = ""; }; + 4BE29891FEDF3029F65A3606EE7B3D88 /* FBSDKCheckmarkIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCheckmarkIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m; sourceTree = ""; }; + 4CC4419E8BD5B8ADC92BB34FE1D6FC78 /* PFCommandURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandURLRequestConstructor.m; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.m; sourceTree = ""; }; + 4D03DAC12EBD0056CB252F2F287B6402 /* FBSDKShareLinkContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareLinkContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h; sourceTree = ""; }; 4D15AFCABB51E916BD6FFE6D663CCBED /* RKHTTPUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKHTTPUtilities.m; path = Code/ObjectMapping/RKHTTPUtilities.m; sourceTree = ""; }; - 4E373E20F8B2B8C3F9D13CB19C365A5B /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = ""; }; + 4D575196CED3C1360574CAC6B7FE08BE /* PFErrorUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFErrorUtilities.m; path = Parse/Internal/PFErrorUtilities.m; sourceTree = ""; }; + 4D6E9F5DDD85504DE6DDBECF9E39A959 /* PFOfflineQueryLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryLogic.m; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m; sourceTree = ""; }; + 4D8D1722F7CFA8E2CC3AE2D1CE6B99CF /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = ""; }; + 4DC41CC348E544292C37294C5A1B50C4 /* PFInstallationConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationConstants.h; path = Parse/Internal/Installation/Constants/PFInstallationConstants.h; sourceTree = ""; }; + 4DD35C52996E74EF6D68ED8C8CB3C5B1 /* PFFileStagingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileStagingController.h; path = Parse/Internal/File/Controller/PFFileStagingController.h; sourceTree = ""; }; + 4DDCD516E785CE5AEDF724D7D5383676 /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = ""; }; + 4DE77267B05353B27C048F5B04016566 /* PFRESTQueryCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTQueryCommand.h; path = Parse/Internal/Commands/PFRESTQueryCommand.h; sourceTree = ""; }; + 4DFEAC992B1C77BFB80D23F81E446DDC /* PFObjectLocalIdStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectLocalIdStore.m; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.m; sourceTree = ""; }; + 4E102EFF955C784214778B35DA87ECEF /* PFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkActivityIndicatorManager.h; path = Parse/PFNetworkActivityIndicatorManager.h; sourceTree = ""; }; 4E37F47F8B8CC9C91B39061A7536E3E9 /* libTransitionKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libTransitionKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 4E3B7FA2A6E0A7ED2742EE5D84DB12A8 /* PFObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectUtilities.m; path = Parse/Internal/Object/Utilities/PFObjectUtilities.m; sourceTree = ""; }; - 4E4FA331249E6517075CC9318DC72A95 /* PFFileState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState_Private.h; path = Parse/Internal/File/State/PFFileState_Private.h; sourceTree = ""; }; - 4E79911FE858017F50A495D51DA3DE5D /* FBSDKBoltsMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBoltsMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h; sourceTree = ""; }; - 4EAC1A8028073BA5B4C512B18244EBE8 /* FBSDKMessageDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessageDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m; sourceTree = ""; }; - 4EB0B04EC3F753FD50885C2850A18879 /* PFObjectEstimatedData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectEstimatedData.h; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.h; sourceTree = ""; }; - 4EEA34DB3E95971CAA4099B9C4DD8C74 /* FBSDKSharePhoto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhoto.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m; sourceTree = ""; }; - 4F6AC6F0CC343C3396887A99F63C9782 /* PFPush.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPush.m; path = Parse/PFPush.m; sourceTree = ""; }; - 4F6C04F3A381B95E747E5867DB4C81EE /* FBSDKShareConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareConstants.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h; sourceTree = ""; }; - 4F79376118E5A7FF02BC96514483BD1A /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreLocation.framework; sourceTree = DEVELOPER_DIR; }; + 4F92059D97E5483DFD850AA95FFE5562 /* ParseModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseModule.h; path = Parse/Internal/ParseModule.h; sourceTree = ""; }; 4FE09EB1BAFD6593655A66644AD9F2C0 /* SOCKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SOCKit-dummy.m"; sourceTree = ""; }; - 502CF173BC61117E6EE98B0AECE5CB5F /* BFURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFURL.m; path = Bolts/iOS/BFURL.m; sourceTree = ""; }; - 50352378D38EB15E7B7D74FD48D20236 /* PFOfflineObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineObjectController.h; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.h; sourceTree = ""; }; - 506B72DC5629AC3D911C7391ADADB54E /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h; sourceTree = ""; }; - 512C3E738619CA90805009D1B56BFDE7 /* PFPinningEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningEventuallyQueue.m; path = Parse/Internal/PFPinningEventuallyQueue.m; sourceTree = ""; }; - 51B4EC6E2C9E5D654933455F7EE946B3 /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = ""; }; - 51E4B8ABE7430971B5249A46A558AD57 /* PFFieldOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperation.h; path = Parse/Internal/FieldOperation/PFFieldOperation.h; sourceTree = ""; }; - 520097C3241654D444726517A1906AD9 /* FBSDKSystemAccountStoreAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSystemAccountStoreAdapter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h; sourceTree = ""; }; - 52728CC48A8F9EFF86FD0353377E776D /* PFHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHash.m; path = Parse/Internal/PFHash.m; sourceTree = ""; }; + 5050C345988F196D52CCAA4890D4A5AC /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = ""; }; + 50A981FEAE41634E8F3C3CCF8AC56259 /* PFUserConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserConstants.m; path = Parse/Internal/User/Constants/PFUserConstants.m; sourceTree = ""; }; + 510604FAF87C394AFADB9A5D564F3AEB /* FBSDKLoginManagerLoginResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLoginResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h; sourceTree = ""; }; + 520663893D6DE2A86D1D57299989DD21 /* FBSDKGameRequestDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h; sourceTree = ""; }; + 52120DE46E6C7C888694B8D9A3F4DEC6 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; + 5221830B08D22B86274AFCA65E93CD48 /* PFDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDecoder.m; path = Parse/Internal/PFDecoder.m; sourceTree = ""; }; + 5242A7AC90141AACB238B67ACEC33ED0 /* PFRESTObjectCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectCommand.h; path = Parse/Internal/Commands/PFRESTObjectCommand.h; sourceTree = ""; }; + 526321DDA0F9E9326B772985013A71DB /* PFURLSessionJSONDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionJSONDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m; sourceTree = ""; }; + 52BA832282A6296691283BA45A6A6C75 /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = ""; }; + 52E8F3EA417ABBE16B32E6AD85C0A91E /* PFMulticastDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMulticastDelegate.m; path = Parse/Internal/PFMulticastDelegate.m; sourceTree = ""; }; 52EBAC1E14508349697276F8E0C80479 /* RKMIMETypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMIMETypes.m; path = Code/Support/RKMIMETypes.m; sourceTree = ""; }; - 5325291642047AF9E650B7590ACC6254 /* PFUserAuthenticationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationController.h; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.h; sourceTree = ""; }; - 542D17E28458EBE4D318648EEB3B381B /* PFInstallation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallation.m; path = Parse/PFInstallation.m; sourceTree = ""; }; - 547B33431DB5136808EDC0F26EC4181E /* FBSDKShareButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h; sourceTree = ""; }; - 551D1565F536116924C965E8BC843AEC /* FBSDKAccessTokenCacheV4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV4.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m; sourceTree = ""; }; - 555A1DB7FA628753475F8E0C531D7624 /* AFXMLRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFXMLRequestOperation.m; path = AFNetworking/AFXMLRequestOperation.m; sourceTree = ""; }; - 55B85002DD908349F1000F7996455DE1 /* PFEventuallyPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyPin.h; path = Parse/Internal/PFEventuallyPin.h; sourceTree = ""; }; + 53873BB442346D140446325544126600 /* PFURLSessionUploadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionUploadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.m; sourceTree = ""; }; + 53BF5D67AF06F0302A007B18D6FBC694 /* BFTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTask.h; path = Bolts/Common/BFTask.h; sourceTree = ""; }; + 53DAE1074125BBBF142D3C53E50E06F1 /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h"; sourceTree = ""; }; + 53F32875FD8A66082F85E268CB4BC011 /* PFObjectFileCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCoder.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.m; sourceTree = ""; }; + 54920BD88D6A715796BB19A547213023 /* FBSDKGameRequestContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m; sourceTree = ""; }; + 54BEF4E5D47F21E4FC7E996E4AE29C66 /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h; sourceTree = ""; }; + 556A94A3870C01C3B2634E1838E2D0B6 /* PFFieldOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperation.h; path = Parse/Internal/FieldOperation/PFFieldOperation.h; sourceTree = ""; }; + 55C549F5B8CF223004416FA7639F9E69 /* PFCurrentObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentObjectControlling.h; path = Parse/Internal/Object/CurrentController/PFCurrentObjectControlling.h; sourceTree = ""; }; 55C9501B071548071B0C87CDA9D032F8 /* RKTestConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestConstants.m; path = Code/Testing/RKTestConstants.m; sourceTree = ""; }; - 57633529551BBEE1B15067746D4C1A0F /* FBSDKLikeButton+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeButton+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h"; sourceTree = ""; }; - 5765993E55A9BEF96BE2124E9CC1E550 /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = ""; }; - 57C4523433B4764C517C9034002FD449 /* PFThreadsafety.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFThreadsafety.m; path = Parse/Internal/ThreadSafety/PFThreadsafety.m; sourceTree = ""; }; + 5624419A8EA110F018B6E1D6B2D454AC /* PFHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHash.m; path = Parse/Internal/PFHash.m; sourceTree = ""; }; + 562E8BAC97316F785846B93E33C496DD /* PFRESTAnalyticsCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTAnalyticsCommand.m; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.m; sourceTree = ""; }; + 5698E0F3BFBACA4A2F463DD697916F16 /* PFRESTCommand_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand_Private.h; path = Parse/Internal/Commands/PFRESTCommand_Private.h; sourceTree = ""; }; + 56E54211A06B3807A9F27AD7BEB6DA7C /* PFLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogging.h; path = Parse/Internal/PFLogging.h; sourceTree = ""; }; + 56EBCB94D96659853670372C2E4764EA /* BFAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink.h; path = Bolts/iOS/BFAppLink.h; sourceTree = ""; }; + 579EAC1B8D13822158FB03F012D3B85C /* PFOfflineObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineObjectController.h; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.h; sourceTree = ""; }; 585CBEC762B0BA2C71CFB9F0E84E8B1C /* RKObjectParameterization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectParameterization.m; path = Code/Network/RKObjectParameterization.m; sourceTree = ""; }; - 58B8D0C5A6A7DDEE013D14931B007DA4 /* BFAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkTarget.m; path = Bolts/iOS/BFAppLinkTarget.m; sourceTree = ""; }; - 58F67B018A57B934A2029E1BB32BFEB5 /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = ""; }; + 587669D43EA945644A3A4CF47F37098B /* PFPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPin.h; path = Parse/Internal/LocalDataStore/Pin/PFPin.h; sourceTree = ""; }; + 58D0E28B48A7E32F9FF7005DEE64C416 /* FBSDKLikeButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h; sourceTree = ""; }; + 5917BAC53F580A1C1176F5DD749556A9 /* AFPropertyListRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFPropertyListRequestOperation.h; path = AFNetworking/AFPropertyListRequestOperation.h; sourceTree = ""; }; + 5923B48367DC6DA262FA7C70FFE94DB0 /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m; sourceTree = ""; }; + 5927976E25757090DC699126B558DAD7 /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = ""; }; + 594B1C1B419F5D05CD82EE8F86518E69 /* PFAnonymousAuthenticationProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousAuthenticationProvider.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.h; sourceTree = ""; }; 596492B6CEEB060FE00A87B8565F380A /* RKRouter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRouter.h; path = Code/Network/RKRouter.h; sourceTree = ""; }; - 59AA32CF592A1CE163B2F901B0892AD8 /* PFObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObject.h; path = Parse/PFObject.h; sourceTree = ""; }; - 5A4672908B1FD7E4D44907A16C893880 /* FBSDKLoginUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginUtility.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h; sourceTree = ""; }; - 5A69674A69ED07E630171FC8E7DE679B /* PFPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPin.h; path = Parse/Internal/LocalDataStore/Pin/PFPin.h; sourceTree = ""; }; - 5B5452F12D849665274EB43110F07EE1 /* PFURLSessionFileDownloadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionFileDownloadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m; sourceTree = ""; }; - 5B5B3E3A409593357C8EDDEDDC0651EA /* PFKeyValueCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeyValueCache.m; path = Parse/Internal/KeyValueCache/PFKeyValueCache.m; sourceTree = ""; }; - 5B5E002FD0140DA26430A35510C313F8 /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m; sourceTree = ""; }; - 5BD931B78D3EAD28BF5F58F187AEABB9 /* PFSQLiteDatabaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseController.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.m; sourceTree = ""; }; - 5BFF0A5FD4D4F15BC52A5CF35AA8BD33 /* FBSDKLiking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLiking.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h; sourceTree = ""; }; + 5A3A3C984D254DD2D0058DD599EAD348 /* PFProduct.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProduct.m; path = Parse/PFProduct.m; sourceTree = ""; }; + 5AF094AA3C85E325892EB2AE88799BB8 /* FBSDKLoginKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKLoginKit-Private.xcconfig"; sourceTree = ""; }; + 5AF0ABAFA5AB51B0A0101D5CBF73791F /* BFCancellationTokenSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenSource.h; path = Bolts/Common/BFCancellationTokenSource.h; sourceTree = ""; }; + 5B613D1BE89F1E4403B99C3E5DCCD2E4 /* PFCloud.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloud.m; path = Parse/PFCloud.m; sourceTree = ""; }; + 5B68D5F4D24A36ACF45400FAB8AB23DE /* FBSDKGameRequestFrictionlessRecipientCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestFrictionlessRecipientCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m; sourceTree = ""; }; + 5BD70BB4643C9BA44BAC707BE6AB39DD /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = AFNetworking/AFNetworkActivityIndicatorManager.m; sourceTree = ""; }; + 5BEDCBDD3D1427BBC37838C408E7AC2E /* PFPushManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushManager.m; path = Parse/Internal/Push/Manager/PFPushManager.m; sourceTree = ""; }; 5CA7D87557CA7C23E2FD33B16F7B4A87 /* RKPropertyMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyMapping.h; path = Code/ObjectMapping/RKPropertyMapping.h; sourceTree = ""; }; - 5CCF2B1914047A6A115AD8CAF5B6D70E /* FBSDKShareKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKShareKit-Private.xcconfig"; sourceTree = ""; }; - 5CE8D7CE43C005885F4A5981957F20A1 /* PFAnalyticsUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsUtilities.m; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.m; sourceTree = ""; }; - 5D4096B259A00B3CA7AFD492984A10BA /* FBSDKGameRequestContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h; sourceTree = ""; }; - 5D414278778C63DB1AB1454092428F09 /* PFObjectBatchController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectBatchController.h; path = Parse/Internal/Object/BatchController/PFObjectBatchController.h; sourceTree = ""; }; - 5D523D243E8C98CFFB31356A63463C00 /* PFRESTConfigCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTConfigCommand.m; path = Parse/Internal/Commands/PFRESTConfigCommand.m; sourceTree = ""; }; + 5CE58398E0BE8D266923D16A28663EB6 /* PFObjectSubclassingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassingController.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.m; sourceTree = ""; }; + 5CEDED5603A9C216D88239CD22DAD12F /* _FBSDKLoginRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKLoginRecoveryAttempter.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m; sourceTree = ""; }; + 5CF14FE1AA01684F58CFF8617EC29EC7 /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = ""; }; + 5D488D8E4B776014CDEE5E6EF762C08E /* PFReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFReachability.h; path = Parse/Internal/PFReachability.h; sourceTree = ""; }; + 5D50D28CFFDB33D36C5123FE9819503C /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = ""; }; + 5D56D65949ED50DA5A35630E0B93DDB5 /* PFHTTPRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPRequest.h; path = Parse/Internal/HTTPRequest/PFHTTPRequest.h; sourceTree = ""; }; 5D97C25717E3E4851FE4EFE780A45434 /* lcl_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_RK.h; path = Vendor/LibComponentLogging/Core/lcl_RK.h; sourceTree = ""; }; - 5DB20E84DFDB8DA61BA09324BEFBFF7C /* PFURLSessionCommandRunner.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionCommandRunner.m; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.m; sourceTree = ""; }; - 5DC7FE94FD4993099292F9042265623F /* FBSDKLikeObjectType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeObjectType.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h; sourceTree = ""; }; - 5EA7DD3F8E2A43DDC4BC7D78D495BE88 /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m; sourceTree = ""; }; - 5EB0814787ECF1B4820F7A3680530AC3 /* PFObjectFileCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCoder.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.h; sourceTree = ""; }; + 5DB6831426CD60ECF9EBFBFE5472A43A /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m; sourceTree = ""; }; + 5DD18A5D9607E9AB948A055344CD3E4C /* RKValueTransformers-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RKValueTransformers-dummy.m"; sourceTree = ""; }; + 5DEB605CCA159256A3305ABB92ADED70 /* PFACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState.h; path = Parse/Internal/ACL/State/PFACLState.h; sourceTree = ""; }; + 5E5EF79FF8D3C83E7DCBD82CE96B138E /* FBSDKLiking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLiking.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h; sourceTree = ""; }; + 5EA794B89AD63BC09D01C4D28AB83FA6 /* PFWeakValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFWeakValue.m; path = Parse/Internal/PFWeakValue.m; sourceTree = ""; }; 5EB160597E8E862ED9A4D2CDE6C5ECBB /* RKSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKSerialization.h; path = Code/Support/RKSerialization.h; sourceTree = ""; }; - 5EE9FF43D6D45C08905B6D53343591FA /* FBSDKSharePhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhoto.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h; sourceTree = ""; }; - 5F06181DC24313ECF2DBF2D575D36DC9 /* PFConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig.h; path = Parse/PFConfig.h; sourceTree = ""; }; - 5F0A3A60E696009D78F7AD078F9E343C /* PFObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObject.m; path = Parse/PFObject.m; sourceTree = ""; }; - 5F0CAB54CFC8BCC345F4138A1EC4D771 /* PFAlertView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAlertView.m; path = Parse/Internal/PFAlertView.m; sourceTree = ""; }; - 5F55A6C36C32F11B3417387E0AE06AB1 /* PFMutableFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableFileState.m; path = Parse/Internal/File/State/PFMutableFileState.m; sourceTree = ""; }; - 608429EE6E38CCBC432367E7CB93B400 /* PFInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationController.h; path = Parse/Internal/Installation/Controller/PFInstallationController.h; sourceTree = ""; }; - 61F8017FEF232B21270544D23BE67BBF /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = ""; }; - 62463AED6B63FD1BFCF534909E594242 /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = ""; }; - 6277470164DD2F4D1FC49886CF94D214 /* PFReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFReachability.h; path = Parse/Internal/PFReachability.h; sourceTree = ""; }; + 609E48B1FF82F30564A193C81AB2A1B5 /* FBSDKAccessTokenCacheV3_21.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_21.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h; sourceTree = ""; }; + 60E9ACA9DCB6DFF036B60A0C51E4A5FF /* FBSDKLoginTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h; sourceTree = ""; }; + 610CAB8E8825EC6BC293F21E90DD6315 /* ParseManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseManager.h; path = Parse/Internal/ParseManager.h; sourceTree = ""; }; + 6144F78DC1C2B2F8A260C15A0B7148BA /* PFRESTObjectCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectCommand.m; path = Parse/Internal/Commands/PFRESTObjectCommand.m; sourceTree = ""; }; + 614A361C74DFD5A28DB5A4DBFAD80EAF /* PFURLSessionCommandRunner_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner_Private.h; sourceTree = ""; }; + 61A8714F3E98EE48AF22222F6082A20E /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; + 622A44BCA22902069E3F240357CD45F3 /* PFACL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACL.m; path = Parse/PFACL.m; sourceTree = ""; }; + 623C2B3361739718CF09561BA4D026B7 /* PFMutableQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableQueryState.h; path = Parse/Internal/Query/State/PFMutableQueryState.h; sourceTree = ""; }; + 62F4D5228E2384499C80602BA6C921F4 /* PFCloudCodeController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloudCodeController.h; path = Parse/Internal/CloudCode/PFCloudCodeController.h; sourceTree = ""; }; + 63188CFF04051D2C52F225740A033D43 /* FBSDKSharePhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhoto.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h; sourceTree = ""; }; 635550F96E6CB4B30D674CA6B3D59AAA /* RKObjectMappingMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMappingMatcher.m; path = Code/ObjectMapping/RKObjectMappingMatcher.m; sourceTree = ""; }; - 6370C00129F042A303CF8C41BCC8048F /* PFLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogger.h; path = Parse/Internal/PFLogger.h; sourceTree = ""; }; - 637C1162277BA70B8FC486099BA5E68A /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = ""; }; - 63853C304B3512C921051F6F4C1AA1D8 /* PFAnonymousAuthenticationProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousAuthenticationProvider.m; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.m; sourceTree = ""; }; - 63D0078344D4783DAE24EA204C2F2B76 /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = ""; }; - 64092AE7CD9ED392CE2C1C98A9D583BA /* FBSDKLikeActionControllerCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionControllerCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h; sourceTree = ""; }; + 6358EB9DDDA9062C6B886A954CBC76D9 /* FBSDKLikeBoxBorderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxBorderView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m; sourceTree = ""; }; + 63AA0219BE65F798CB2F7604B4733571 /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = ""; }; + 63C834523FBD7AC3D226D67DBCAB0F4C /* PFObjectController_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController_Private.h; path = Parse/Internal/Object/Controller/PFObjectController_Private.h; sourceTree = ""; }; + 63E89B2BE05AE41A084F3E0FA21250FA /* PFQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryController.h; path = Parse/Internal/Query/Controller/PFQueryController.h; sourceTree = ""; }; 641AE05DD55E5E6AC1590CD7B4A18F97 /* Pods-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-resources.sh"; sourceTree = ""; }; 6448EFCEA795D12938825D3F8D395848 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = en.lproj; path = Parse/Resources/en.lproj; sourceTree = ""; }; - 64585A3E416254970223EB883C168C06 /* PFCurrentUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentUserController.m; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.m; sourceTree = ""; }; - 64DC079156B1C3D9892D30F49E7CF06A /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = ""; }; - 64E66272745DD74DB658E76BF786B334 /* PFMutableUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableUserState.m; path = Parse/Internal/User/State/PFMutableUserState.m; sourceTree = ""; }; - 6532B39D03DA6402CDE0AF5FAA88CB85 /* PFKeyValueCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache_Private.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache_Private.h; sourceTree = ""; }; - 653FCEE976AC25D86C5BD4646F8893B3 /* PFSQLiteDatabaseResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseResult.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.m; sourceTree = ""; }; - 65A4F7F6E3DD2EA0621A632278E51E25 /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = ""; }; - 65C562DA788CB34774AC6A956A6F1D40 /* PFACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState.h; path = Parse/Internal/ACL/State/PFACLState.h; sourceTree = ""; }; - 65EE60D7B2AE8D7AF7FC37A1DED26D53 /* PFConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfigController.m; path = Parse/Internal/Config/Controller/PFConfigController.m; sourceTree = ""; }; - 66AE3952E127CEAA503A87FD111FCBEA /* PFPushState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState_Private.h; path = Parse/Internal/Push/State/PFPushState_Private.h; sourceTree = ""; }; - 66C2AD35A6E51D88EA4ECC24C43ABA8C /* PFRESTSessionCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTSessionCommand.m; path = Parse/Internal/Commands/PFRESTSessionCommand.m; sourceTree = ""; }; - 66C559E290710757C262E9572627F8BA /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = ""; }; + 6474A77F06A843F81E145096D09D7711 /* FBSDKSystemAccountStoreAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSystemAccountStoreAdapter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h; sourceTree = ""; }; + 648066E3DB510A8F72E964D968AAA219 /* libBolts.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBolts.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 657D21EB951543C1C5D4637E284EB184 /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = ""; }; + 65CF7764149142958978827C966A07B1 /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = ""; }; + 6603759A59107C9EA23B8A6F0AC4524B /* PFObjectFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCodingLogic.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.m; sourceTree = ""; }; + 660799EF24CF28527054B3FA6E25BE2A /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = ""; }; + 661148537E08B421366ECAD30B9523D7 /* PFACLPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLPrivate.h; path = Parse/Internal/ACL/PFACLPrivate.h; sourceTree = ""; }; 66FE320ED85B83804D275B29BFCDDCFF /* AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.xcconfig; sourceTree = ""; }; - 67108DAD07BBED97E0992E85B0D42C85 /* PFFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileManager.h; path = Parse/Internal/PFFileManager.h; sourceTree = ""; }; - 675939A97597CD2EA04CD4995460A6C7 /* PFACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACLState.m; path = Parse/Internal/ACL/State/PFACLState.m; sourceTree = ""; }; - 677452C3A3BE7F10BDD609C3AF5DA93A /* Bolts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bolts.h; path = Bolts/Common/Bolts.h; sourceTree = ""; }; - 6775409B0E8C0788D2E094C7C5218464 /* PFPushUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushUtilities.m; path = Parse/Internal/Push/Utilites/PFPushUtilities.m; sourceTree = ""; }; - 67E415550BFBF0D438FF517138639DE1 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 6802793E8C624630B319D30FBB7BE7A2 /* PFQueryState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState_Private.h; path = Parse/Internal/Query/State/PFQueryState_Private.h; sourceTree = ""; }; - 691DE4C572928B4D4009AA95D722D4C0 /* FBSDKLoginUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginUtility.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m; sourceTree = ""; }; + 680D7CAB02E8C5A1DCE74985204D4483 /* PFRESTCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCommand.m; path = Parse/Internal/Commands/PFRESTCommand.m; sourceTree = ""; }; + 687225D9C30A2354D368E350F8C481FB /* PFPushState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState_Private.h; path = Parse/Internal/Push/State/PFPushState_Private.h; sourceTree = ""; }; 6930BA637A283F95CB5BE9E7F530E97C /* RestKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RestKit.xcconfig; sourceTree = ""; }; - 6949E72AFCB7848487C6B092E8E7CC63 /* PFPaymentTransactionObserver_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver_Private.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h; sourceTree = ""; }; - 6983D73EF0F3315F55A0E4A3B5CDB1CA /* PFInternalUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInternalUtils.h; path = Parse/Internal/PFInternalUtils.h; sourceTree = ""; }; - 69BA2E95DE6DD4BD8CCD5C2F04F31412 /* libParse.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libParse.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 6A0306DBED132EEB7F48CCF5885EADEB /* PFCurrentConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentConfigController.h; path = Parse/Internal/Config/Controller/PFCurrentConfigController.h; sourceTree = ""; }; - 6A193B521725B41DCBB47C98E8384558 /* PFRelationState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState_Private.h; path = Parse/Internal/Relation/State/PFRelationState_Private.h; sourceTree = ""; }; - 6A37F6B69937BDBBB1A609C50E20359F /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = ""; }; - 6A78ADE0C1383A85403BCEAA01789B6C /* PFPurchase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchase.h; path = Parse/PFPurchase.h; sourceTree = ""; }; - 6A7BE134FD15E0D4AD4050F4AF57B457 /* BFCancellationToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationToken.m; path = Bolts/Common/BFCancellationToken.m; sourceTree = ""; }; - 6AF7D10C408FD6D8AB132E00A1837154 /* FBSDKAccessTokenCacheV3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m; sourceTree = ""; }; - 6B38BFE99240E2343065A81810BCD299 /* BFAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink_Internal.h; path = Bolts/iOS/BFAppLink_Internal.h; sourceTree = ""; }; + 69A5C357BDE6663375E1CBBBE08B3440 /* FBSDKSharePhotoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhotoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h; sourceTree = ""; }; + 69DE218A0D590D2C3678DE52CDFAA862 /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = ""; }; + 6B0E9CC89B4C9510C51F6F8388E25C21 /* FBSDKShareButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h; sourceTree = ""; }; 6C12D518D08748E88B0F70890764B8CD /* RKObjectMappingOperationDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMappingOperationDataSource.m; path = Code/ObjectMapping/RKObjectMappingOperationDataSource.m; sourceTree = ""; }; - 6C32A41D38BC842721FE9A96A699B1AD /* PFCommandCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandCache.m; path = Parse/Internal/PFCommandCache.m; sourceTree = ""; }; - 6C56FB7EA3918F4E9420A03CBD1DD4C8 /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = ""; }; - 6C8452D720D17A4AE9F49D703F4456F4 /* BFAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLink.m; path = Bolts/iOS/BFAppLink.m; sourceTree = ""; }; - 6CB8F4A546D9EAEA058287BFFA939C49 /* PFCommandRunning.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunning.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.m; sourceTree = ""; }; + 6C88718F1FAACE95C1F6DC1798456734 /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = ""; }; + 6C9FEB49ADBD54B9FD7533801BB5380F /* FBSDKLoginCompletion+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginCompletion+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h"; sourceTree = ""; }; + 6CA98D8F458A2FFECCD9C3CF7AAEECFA /* AFHTTPClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPClient.m; path = AFNetworking/AFHTTPClient.m; sourceTree = ""; }; 6CFD6F4F94AD214D7B9CEF3544854F4D /* RKPathMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPathMatcher.m; path = Code/Network/RKPathMatcher.m; sourceTree = ""; }; - 6D324B0F0C1603B017A0A195535F6737 /* FBSDKShareVideoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m; sourceTree = ""; }; - 6D4B932F8281FFA4CACCD488B25D8399 /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = ""; }; - 6D5B659F40540D61E87428BFCB17AF51 /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = ""; }; - 6D80A7028E913FB27600E32FE2F0D0D0 /* FBSDKAppInviteDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h; sourceTree = ""; }; - 6DBF2FEDE564A16DD0584A1A4B48DB5E /* PFConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfig.m; path = Parse/PFConfig.m; sourceTree = ""; }; - 6DFB97640F65DA922830BFCD6E8BAE3F /* FBSDKGameRequestDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h; sourceTree = ""; }; - 6E3986BD59BF447A1F15BD4527B7D366 /* PFQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryController.m; path = Parse/Internal/Query/Controller/PFQueryController.m; sourceTree = ""; }; - 6E3C2F4799E92C0B65ADDB13C693731F /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = ""; }; - 6E5BFC99B4A9E8CFC77CB440E5B6A68F /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = ""; }; - 6E7F4A2F3E63A394F39CDBFEF74FFB35 /* FBSDKGameRequestFrictionlessRecipientCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestFrictionlessRecipientCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h; sourceTree = ""; }; - 6F103B2A584D088B481C2F591B22CB95 /* PFDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDateFormatter.m; path = Parse/Internal/PFDateFormatter.m; sourceTree = ""; }; - 6F5B4BDBF3900CA5DDAB9B63E2EE063C /* FBSDKShareAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareAPI.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h; sourceTree = ""; }; - 6F9AB8D84FEE2E48AF3B9F9658D5BE35 /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m; sourceTree = ""; }; - 6FFDF70586FE4143304DC181DA940A51 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; - 7078C0E27AB4BBE276699BEA6B6332B4 /* FBSDKLikeControl+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeControl+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h"; sourceTree = ""; }; + 6CFDCCA1B3C5C08CF8E7EE0036580FCA /* PFEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue.h; path = Parse/Internal/PFEventuallyQueue.h; sourceTree = ""; }; + 6D0E4808B55472B808C0B84583C9BDD1 /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = ""; }; + 6D28D403AA7A5A6F2AF7DDC6F991B98A /* PFAnonymousAuthenticationProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousAuthenticationProvider.m; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.m; sourceTree = ""; }; + 6D2DCC014C9FB0F4706377719D5E23C9 /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h; sourceTree = ""; }; + 6D74017655C22EAC1CDB43F8CD2B468D /* PFOfflineQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryController.h; path = Parse/Internal/Query/Controller/PFOfflineQueryController.h; sourceTree = ""; }; + 6D8623E61A0D98F47738887CE7BE2378 /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = ""; }; + 6D9866C1156E2B6A59D2996350AB5075 /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m; sourceTree = ""; }; + 6DCA15FE1B9E0D7F046522F5521C2102 /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = ""; }; + 6E52C541820F569B77A87A851D648583 /* FBSDKSharePhotoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhotoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m; sourceTree = ""; }; + 6E6A42EE42B9EEE445B28BDD96FFB1C7 /* PFRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState.h; path = Parse/Internal/Relation/State/PFRelationState.h; sourceTree = ""; }; + 6EA7BE6071FB5DACC51089FB613BA39E /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = ""; }; + 6EDB6A316CDD5D018128E1D3136DFC1B /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = ""; }; + 6F140AB891150C6CFED7DD2A7B4A62B2 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; + 700F2F5BA5994CFBE256028DFF7EC6CC /* Parse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Parse.m; path = Parse/Parse.m; sourceTree = ""; }; + 704C843E9911E15531BA4307B0AB6D03 /* RKValueTransformers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKValueTransformers.m; path = Code/RKValueTransformers.m; sourceTree = ""; }; + 705296E1BAA1CCE01D2761F16F9A39F9 /* FBSDKAppInviteContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h; sourceTree = ""; }; 7143CA35B7DBC71915BDD3C8FFA6F17B /* RKObjectMappingOperationDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMappingOperationDataSource.h; path = Code/ObjectMapping/RKObjectMappingOperationDataSource.h; sourceTree = ""; }; - 7176C54BE83AD8B924C0239573D8C14D /* PFRESTConfigCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTConfigCommand.h; path = Parse/Internal/Commands/PFRESTConfigCommand.h; sourceTree = ""; }; - 71AB35520DC69025479E89EC80D0D204 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 72D0BB4387B18BC30B9E1DFA837849CF /* FBSDKLoginCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginCompletion.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h; sourceTree = ""; }; - 7353118F412B2CA3124108B64BE5533C /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = ""; }; - 735762C7D17E4364E90ADAFD2E9C139A /* PFOfflineQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryController.m; path = Parse/Internal/Query/Controller/PFOfflineQueryController.m; sourceTree = ""; }; - 73923DB118610C08A35942208D9A3213 /* PFReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFReachability.m; path = Parse/Internal/PFReachability.m; sourceTree = ""; }; - 73D64DAEAFFF3B4456A0ECB82E2D4CA6 /* PFURLSessionCommandRunner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.h; sourceTree = ""; }; - 73DF5CF1E91847F2BBD8BC5574BE7A24 /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = ""; }; - 73E78AAF48CC66F5329D231011EC9F0E /* PFMutableQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableQueryState.h; path = Parse/Internal/Query/State/PFMutableQueryState.h; sourceTree = ""; }; - 748E23C1428DC283BAB8E03D0CE9A770 /* PFCurrentInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentInstallationController.m; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.m; sourceTree = ""; }; - 749C7452D497A9A10B0021891AC18286 /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = ""; }; - 749EB4AB41C2B5F71BA37ABB24CEE668 /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTaskCompletionSource.h; path = Bolts/Common/BFTaskCompletionSource.h; sourceTree = ""; }; + 71B842D80B25BEB8AE3A797A724D7CC5 /* FBSDKMessageDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessageDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h; sourceTree = ""; }; + 71D26DA17DCBC3B6CC47B2FCA63BF991 /* PFMutableFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableFileState.h; path = Parse/Internal/File/State/PFMutableFileState.h; sourceTree = ""; }; + 71EFAC4FE3DE4D635A34BD873A1302F5 /* PFURLSessionFileDownloadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionFileDownloadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m; sourceTree = ""; }; + 7244F71460BF559B73433E28D79F2BFD /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = ""; }; + 72F7D5CD8944B77904BC197DDC8A0487 /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = ""; }; + 7329F4C215D23C5B157437CD3ED3DC86 /* PFSubclassing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSubclassing.h; path = Parse/PFSubclassing.h; sourceTree = ""; }; + 73305F9BCF2563CCA2E4C15B8DDCFD68 /* FBSDKShareVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideo.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m; sourceTree = ""; }; + 739CA807E35A38705E95A5061E4DB05F /* PFUserAuthenticationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserAuthenticationController.m; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m; sourceTree = ""; }; + 73A13DAF02B6E8A824568229C50FBBD3 /* PFObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectController.m; path = Parse/Internal/Object/Controller/PFObjectController.m; sourceTree = ""; }; + 73F2E6274BAD1AD8D9324B3838256FB6 /* FBSDKAppInviteContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m; sourceTree = ""; }; + 746403A7CAF94F397758C55ECC719138 /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = ""; }; 74D75C3A4E2A26AFDC39E1FAB71F6A80 /* FBSDKShareKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKShareKit-prefix.pch"; sourceTree = ""; }; 757FF14AABAC587C4E6F945A1E8D4472 /* RKMappingResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingResult.m; path = Code/ObjectMapping/RKMappingResult.m; sourceTree = ""; }; - 76138EE2803A9EEC58C7D5AB7744121F /* PFObjectEstimatedData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectEstimatedData.m; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.m; sourceTree = ""; }; - 763AC253EC0FD55889EFD9499486FE4D /* PFWeakValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFWeakValue.h; path = Parse/Internal/PFWeakValue.h; sourceTree = ""; }; - 76A196B0C50AE07AE79DC05159C2DF21 /* PFObjectFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCodingLogic.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.h; sourceTree = ""; }; - 76B3B4CCA7886CC75FFCF9656D10AD03 /* ISO8601DateFormatterValueTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ISO8601DateFormatterValueTransformer.h; path = Code/ISO8601DateFormatterValueTransformer.h; sourceTree = ""; }; + 76865DCF9853952106158A4BF7621602 /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = ""; }; 773B71C6DCFE021055288283663560C9 /* RKManagedObjectRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKManagedObjectRequestOperation.h; path = Code/Network/RKManagedObjectRequestOperation.h; sourceTree = ""; }; - 776CD45C316A4D526A9482D3D6C0F72C /* PFUserFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserFileCodingLogic.h; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.h; sourceTree = ""; }; + 778AD9DB2CF0543C914F6BD394974650 /* FBSDKShareOpenGraphValueContainer+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareOpenGraphValueContainer+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h"; sourceTree = ""; }; 778D4E4A3B190B10F0AEFE08CC88F279 /* Testing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Testing.h; path = Code/Testing.h; sourceTree = ""; }; - 78ED1DE48AC6FAA521E9D1B0A15B2F0E /* PFObjectSubclassInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassInfo.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.h; sourceTree = ""; }; - 796C03163B04A83EF5A5417BD0C59CA0 /* FBSDKSharePhotoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhotoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h; sourceTree = ""; }; - 79E1D204CE90D1BA1A7B1CE8E631A4A8 /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFWebViewAppLinkResolver.m; path = Bolts/iOS/BFWebViewAppLinkResolver.m; sourceTree = ""; }; - 7A3F937AE0B76FE001B1424707650BE3 /* FBSDKAppGroupContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m; sourceTree = ""; }; - 7A7B8336A363D3DD83ED3A4E4BDB5F0E /* PFDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDataProvider.h; path = Parse/Internal/PFDataProvider.h; sourceTree = ""; }; - 7B450C5571097E288C9CFF740CE3FA5F /* PFObjectPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectPrivate.h; path = Parse/Internal/Object/PFObjectPrivate.h; sourceTree = ""; }; - 7B96A479BB821E005E1541AE443F5296 /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = ""; }; - 7BEB822204CBB8DAC8FF4C04AEFCF729 /* PFEncoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEncoder.m; path = Parse/Internal/PFEncoder.m; sourceTree = ""; }; - 7C807E842A64AA6E448D999BD0EA2744 /* PFCoreManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreManager.h; path = Parse/Internal/PFCoreManager.h; sourceTree = ""; }; - 7CA70E2AE68629BDED8957B97443D682 /* FBSDKShareOpenGraphContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m; sourceTree = ""; }; + 786806355E0E877557AA2507DDEBACDD /* PFPurchaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchaseController.h; path = Parse/Internal/Purchase/Controller/PFPurchaseController.h; sourceTree = ""; }; + 78FBD963927DF94B45B5FF19AAEDDEC0 /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = ""; }; + 7915B369685221642E067005F680B451 /* PFObjectSubclassInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassInfo.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.h; sourceTree = ""; }; + 79EF5DA0025B0FFF67DFADD5492A17E1 /* PFUserState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState_Private.h; path = Parse/Internal/User/State/PFUserState_Private.h; sourceTree = ""; }; + 7AE5F75C04FAC19C4B94C834EC0C4E96 /* PFPinningEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningEventuallyQueue.m; path = Parse/Internal/PFPinningEventuallyQueue.m; sourceTree = ""; }; + 7B85AF138E6CEEDF8291F16978BAEAEC /* PFFileController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileController.m; path = Parse/Internal/File/Controller/PFFileController.m; sourceTree = ""; }; + 7BCB5525ABC0E01EC9A5E1CE8D86FA7E /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = ""; }; + 7BF25C2B0ED8E85EC0D52225FEAAF054 /* FBSDKShareError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareError.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h; sourceTree = ""; }; + 7C2FB169D00DE47B9815271C62B2D855 /* FBSDKBoltsMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBoltsMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h; sourceTree = ""; }; 7CB0738F082CD21988DD84404C1406E6 /* RKStringTokenizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKStringTokenizer.h; path = Code/Support/RKStringTokenizer.h; sourceTree = ""; }; - 7CB667B15CA6726CE1EA77BBAC4BC7FD /* PFConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConstants.m; path = Parse/PFConstants.m; sourceTree = ""; }; - 7CC8DE7490D76AE8614531D09B7CFA9D /* PFEncoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEncoder.h; path = Parse/Internal/PFEncoder.h; sourceTree = ""; }; - 7CF42D72A1AF3A7182B9021C56CAF888 /* PFObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectState.m; path = Parse/Internal/Object/State/PFObjectState.m; sourceTree = ""; }; - 7D657474E403B993C149CC1F51629EB2 /* FBSDKShareOpenGraphValueContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphValueContainer.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h; sourceTree = ""; }; - 7D77C3FB04FA7AD4241A39452337BF48 /* PFMultiProcessFileLockController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLockController.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.h; sourceTree = ""; }; - 7E3ED96EE4D0B9F695BE889B00DE6407 /* PFMultiProcessFileLockController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLockController.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.m; sourceTree = ""; }; + 7DE49CE008144B7919F76B3E247361EE /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = ""; }; + 7DFCEA97612DEB2723DF40E6FFFC5D26 /* FBSDKLoginUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginUtility.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h; sourceTree = ""; }; + 7E2F75F68AFD577F425752D70A27C101 /* PFOfflineQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryController.m; path = Parse/Internal/Query/Controller/PFOfflineQueryController.m; sourceTree = ""; }; + 7E4FE6BADC672C550203DCEEC5EE8020 /* BFCancellationToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationToken.m; path = Bolts/Common/BFCancellationToken.m; sourceTree = ""; }; + 7E8914751B900AC4DEF771BDEB8FE816 /* PFObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState.h; path = Parse/Internal/Object/State/PFObjectState.h; sourceTree = ""; }; + 7EA68C5837BA086C1AB0730D5D664A75 /* FBSDKLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m; sourceTree = ""; }; 7EFB8D910130BB4CE5DC011047B4653B /* RKObjectMappingMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMappingMatcher.h; path = Code/ObjectMapping/RKObjectMappingMatcher.h; sourceTree = ""; }; + 7EFF22BC9B76855DF9E2359F492E11A4 /* PFPropertyInfo_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Private.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Private.h; sourceTree = ""; }; 7F33AA92E57D33A8DE7D71147E3BBDD3 /* RKHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKHTTPRequestOperation.h; path = Code/Network/RKHTTPRequestOperation.h; sourceTree = ""; }; - 7FBEBBBD069AC4F0A63136014F0C9C54 /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = ""; }; - 7FCD65509A86CB6A3CBDE7E5FCB1384A /* BFCancellationTokenRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenRegistration.h; path = Bolts/Common/BFCancellationTokenRegistration.h; sourceTree = ""; }; - 7FD3846A7DAFF7196AF5C2F45BCD8A5A /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFWebViewAppLinkResolver.h; path = Bolts/iOS/BFWebViewAppLinkResolver.h; sourceTree = ""; }; - 80BA04F02821688944482E0FB8D4D623 /* PFOperationSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOperationSet.m; path = Parse/Internal/Object/OperationSet/PFOperationSet.m; sourceTree = ""; }; - 80D80DCE3A20EC46EAAB66B362677E30 /* AFHTTPClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPClient.m; path = AFNetworking/AFHTTPClient.m; sourceTree = ""; }; - 80F8EAC3DBA16F147C2EED3D1B93D248 /* FBSDKGameRequestContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m; sourceTree = ""; }; + 7FB86554EB764C69DB563344FB6E4583 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreLocation.framework; sourceTree = DEVELOPER_DIR; }; + 7FFC8DCDDC208CBB816476EDF7085EDB /* PFFieldOperationDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperationDecoder.m; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.m; sourceTree = ""; }; + 80535C82708945F05047D894446087A4 /* PFFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileState.m; path = Parse/Internal/File/State/PFFileState.m; sourceTree = ""; }; + 8148FF7EFD96C224279A35AB3C828BC8 /* PFReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFReachability.m; path = Parse/Internal/PFReachability.m; sourceTree = ""; }; + 814BAB5BB856170E11D9DFE9E26A888C /* PFURLConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLConstructor.h; path = Parse/Internal/HTTPRequest/PFURLConstructor.h; sourceTree = ""; }; + 8188F44B82CFACD44B2AA378C7BEEE4B /* Parse_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse_Private.h; path = Parse/Internal/Parse_Private.h; sourceTree = ""; }; + 818CFC14E623AB5BE69BCA0E501ABFD6 /* FBSDKURLConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h; sourceTree = ""; }; 81C8A7F71F4AB5ED22FA83E37837CA80 /* RKLumberjackLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKLumberjackLogger.h; path = Code/Support/RKLumberjackLogger.h; sourceTree = ""; }; - 8200C4FB4CDD0C6152EE150BDEFC6675 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; - 8252E3628FCD0DD24332FF33C10A559A /* PFErrorUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFErrorUtilities.h; path = Parse/Internal/PFErrorUtilities.h; sourceTree = ""; }; - 8268565FACDED1D6C7B9BE1728B7EC67 /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = ""; }; - 828C7F88A0E2BCBEB7B6A32EE8D36F4B /* PFRole.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRole.h; path = Parse/PFRole.h; sourceTree = ""; }; - 828E3502653848562DD0814140A92CCF /* PFUserState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState_Private.h; path = Parse/Internal/User/State/PFUserState_Private.h; sourceTree = ""; }; - 82DAD225DA2EF99D509E1DCD251CF1E0 /* PFURLSessionJSONDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionJSONDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.h; sourceTree = ""; }; - 82DEAB301EC606D81DDB79F260128939 /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = ""; }; + 81D47F8C37692E3865019B411BDAEE3A /* PFEventuallyQueue_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue_Private.h; path = Parse/Internal/PFEventuallyQueue_Private.h; sourceTree = ""; }; + 81DB7CA7AE90A4BA6CA4297DF013CBB2 /* PFMutableUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableUserState.m; path = Parse/Internal/User/State/PFMutableUserState.m; sourceTree = ""; }; + 81F2926280C12B9767563CFF770FAF7B /* FBSDKCheckmarkIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCheckmarkIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h; sourceTree = ""; }; + 82DE2CCDEF80C1FF02649B195289A931 /* ParseInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseInternal.h; path = Parse/Internal/ParseInternal.h; sourceTree = ""; }; 82E1375889C85A75C3D50613909984E7 /* Parse-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Parse-prefix.pch"; sourceTree = ""; }; - 82E686107E1090E17BFD23A272EE10CA /* FBSDKLoginManagerLoginResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLoginResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h; sourceTree = ""; }; - 82F4B771C010B07B8269F863B9D5E124 /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = ""; }; 82F4CF881DD119649C8445AB7AD1733A /* RKRoute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRoute.h; path = Code/Network/RKRoute.h; sourceTree = ""; }; - 83106886E9A710F3579F2BBF35D8C99C /* FBSDKShareUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m; sourceTree = ""; }; - 8343EFF681B40307ADDC80DDE71AA45E /* RKValueTransformers-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RKValueTransformers-dummy.m"; sourceTree = ""; }; - 839CDF95C7EB745D855A1D1CD5E90C77 /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = ""; }; - 83C71B61CCF71858F87CFEBB94CFFB11 /* PFInstallationIdentifierStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationIdentifierStore.m; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.m; sourceTree = ""; }; - 83ECAB9F08AFED3BB4204FD83415518B /* PFPropertyInfo_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Private.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Private.h; sourceTree = ""; }; + 831275D794F272F2349F89FC9BA48F1D /* FBSDKAccessTokenCacheV4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV4.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m; sourceTree = ""; }; + 8379929D10F949C09F2BE6851EC97373 /* FBSDKLikeButtonPopWAV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButtonPopWAV.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m; sourceTree = ""; }; + 83A77564DAB70186CD83920566902605 /* RKISO8601DateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKISO8601DateFormatter.h; path = Code/RKISO8601DateFormatter.h; sourceTree = ""; }; + 83EED38CF3D996DFEA263619B0B9CBD1 /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = ""; }; 83F2B1D939804694C73E7FCD9AAF4090 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; + 83FAF66089BB2B25DAD32F318716E9B5 /* PFPushController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushController.m; path = Parse/Internal/Push/Controller/PFPushController.m; sourceTree = ""; }; 8430E4A0A4791DC7D0F9CE485D860A00 /* RKBenchmark.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKBenchmark.m; path = Code/Testing/RKBenchmark.m; sourceTree = ""; }; - 8438C8930C259D5374088068EDEF11A2 /* PFHTTPURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHTTPURLRequestConstructor.m; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.m; sourceTree = ""; }; - 844E60D98084AFA1C1191666646A744B /* FBSDKSendButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSendButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m; sourceTree = ""; }; - 84B84882EEBE825A5C543B49CE80D4F1 /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m; sourceTree = ""; }; - 84D78F45D0B07841FAAA5A3283859049 /* PFMulticastDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMulticastDelegate.h; path = Parse/Internal/PFMulticastDelegate.h; sourceTree = ""; }; - 84E51A0ADCB24DAC5F16586A7E22A679 /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView_Internal.h; path = Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h; sourceTree = ""; }; - 84F69195C66DCE1ED23AFBCC251BA4C3 /* PFAlertView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAlertView.h; path = Parse/Internal/PFAlertView.h; sourceTree = ""; }; - 857A31726A217BC7AAB96D91A7951102 /* PFUserConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserConstants.m; path = Parse/Internal/User/Constants/PFUserConstants.m; sourceTree = ""; }; + 84D47AE11AD48DDD6598E018331299E3 /* PFUserConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserConstants.h; path = Parse/Internal/User/Constants/PFUserConstants.h; sourceTree = ""; }; + 853ED2ED8383CAC8B42216E034C32866 /* PFProductsRequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProductsRequestHandler.m; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.m; sourceTree = ""; }; + 859C15C373D18E927177F1CA54850FFA /* BFAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererController.h; path = Bolts/iOS/BFAppLinkReturnToRefererController.h; sourceTree = ""; }; + 85A34FD1B37C88CFB5EFD0D8E6DD8071 /* PFPropertyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo.h; sourceTree = ""; }; 85C3C7141AE8131AC8868EF3F853AD3A /* RKConnectionTestExpectation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKConnectionTestExpectation.h; path = Code/Testing/RKConnectionTestExpectation.h; sourceTree = ""; }; - 864FC7E084B3C08400F30878D1F110FE /* PFFileDataStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileDataStream.h; path = Parse/Internal/File/FileDataStream/PFFileDataStream.h; sourceTree = ""; }; - 86D941FDEEC92E2EA2835097C2161C04 /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = ""; }; - 875545166E1B56B37A2E9CEAE067A11D /* FBSDKShareKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareKit+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h"; sourceTree = ""; }; - 885480E76DF09EE4E69F631228FF4859 /* PFRESTCommand_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand_Private.h; path = Parse/Internal/Commands/PFRESTCommand_Private.h; sourceTree = ""; }; - 88B6008DB095748E5DD60D4357F1130E /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = ""; }; - 895926AE9851CE1F765F43CBEEDBAFBC /* PFLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLogger.m; path = Parse/Internal/PFLogger.m; sourceTree = ""; }; - 8960D7D3ED69E1B3DCCEB842BB3727DD /* FBSDKAppGroupContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h; sourceTree = ""; }; + 8700D74C7E8322F5645810F5DBA692B1 /* RKISO8601DateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKISO8601DateFormatter.m; path = Code/RKISO8601DateFormatter.m; sourceTree = ""; }; + 874C68CE36C22FDD95A27779257F15A1 /* PFObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObject.h; path = Parse/PFObject.h; sourceTree = ""; }; + 8786F55C6BCF0316006C8213CA9340CE /* PFPaymentTransactionObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPaymentTransactionObserver.m; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.m; sourceTree = ""; }; + 879994DB9DEDD7064DD1B700F3FF8690 /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = ""; }; + 87ABBAD2B5A5CAAE0AC4B4ACCADC1330 /* PFApplication.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFApplication.m; path = Parse/Internal/PFApplication.m; sourceTree = ""; }; + 87B65FF1A2D48D2F1F0BF29F0A571A28 /* PFCurrentUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentUserController.h; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.h; sourceTree = ""; }; + 87E3F9DDEC8ABB74E9B0B828E43E6A50 /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = ""; }; + 880D1361F22BDCDCF4A160F7DC4D54E5 /* PFRESTSessionCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTSessionCommand.m; path = Parse/Internal/Commands/PFRESTSessionCommand.m; sourceTree = ""; }; + 882529F2F51F25982209C54BD8E7C6F4 /* BFAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView.h; path = Bolts/iOS/BFAppLinkReturnToRefererView.h; sourceTree = ""; }; + 886A664252B9125A43A5E8CDBC0A2C43 /* PFInstallationIdentifierStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationIdentifierStore.m; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.m; sourceTree = ""; }; + 8886812D5A18522530AA7A0B5774BB0A /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = ""; }; + 88ED45C6893FA0E82BD12E765DBC00CA /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = ""; }; + 894852C03388A8B63E64B0E4307DA4C4 /* PFObjectLocalIdStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectLocalIdStore.h; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h; sourceTree = ""; }; 89622454B6309852AD9687B0820C02B0 /* SOCKit.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SOCKit.m; sourceTree = ""; }; - 8998D38349136ED287AD6B1F81B2A2C3 /* PFObjectFilePersistenceController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFilePersistenceController.m; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.m; sourceTree = ""; }; 8A3CCA72533E35C4376B1E8AECC9627F /* TransitionKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TransitionKit.h; path = Code/TransitionKit.h; sourceTree = ""; }; - 8A96182B63D95AA7512F0B4BF891B823 /* PFUserFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserFileCodingLogic.m; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.m; sourceTree = ""; }; + 8AE382F6E1CC26178A9E3BBA1C473DEB /* FBSDKLikeActionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionController.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h; sourceTree = ""; }; + 8AEFD9424D0770F6E0BC692CE0AEE27B /* PFSessionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionController.h; path = Parse/Internal/Session/Controller/PFSessionController.h; sourceTree = ""; }; + 8AF2FF1B953178FD56002A938919F24E /* BFAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererView.m; path = Bolts/iOS/BFAppLinkReturnToRefererView.m; sourceTree = ""; }; + 8B187D31A1B35CF60BBFE402E7FEBF55 /* PFInstallationConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationConstants.m; path = Parse/Internal/Installation/Constants/PFInstallationConstants.m; sourceTree = ""; }; 8B31ADE78BF2D9A37DCAF22E2F0D53AC /* RKHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKHTTPRequestOperation.m; path = Code/Network/RKHTTPRequestOperation.m; sourceTree = ""; }; - 8BBDCAE31F786B578147D2A338A29E5B /* FBSDKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h; sourceTree = ""; }; - 8C1ADD04949F1ABA82756CBA171DA5EB /* FBSDKShareOpenGraphAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphAction.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m; sourceTree = ""; }; - 8C5C8164C6C45E75534AA683EB3EE80B /* FBSDKTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m; sourceTree = ""; }; - 8C61DC5A959A8218D355C33FFDD05395 /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = ""; }; - 8CB9E435A8D7599B6B0049E6AFE5304E /* PFFileController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileController.h; path = Parse/Internal/File/Controller/PFFileController.h; sourceTree = ""; }; + 8B538AE03EC7635223FC2B7353D18B63 /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = ""; }; + 8BBEDB49F89EFB9B6465EF82E36C1A49 /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = ""; }; + 8C2E4681A2F967A6C4E522E08078ADC0 /* FBSDKLikeObjectType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeObjectType.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h; sourceTree = ""; }; + 8CA449F861B70FFB8296D4B48C050FBE /* PFCommandRunning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunning.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.h; sourceTree = ""; }; + 8CAACEFFE369BA8C9440D6CD08EC7727 /* PFPushUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushUtilities.h; path = Parse/Internal/Push/Utilites/PFPushUtilities.h; sourceTree = ""; }; 8CCE9BE6DF0576998191D1D52675A3EF /* Pods-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-dummy.m"; sourceTree = ""; }; - 8DA277D34C0546D8D8E80D99DCCD844A /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; + 8CE5F1B200B8D4F57C6A85199C9969FE /* PFPushUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushUtilities.m; path = Parse/Internal/Push/Utilites/PFPushUtilities.m; sourceTree = ""; }; + 8D53FBFB124273A95BC60A578E870E0C /* PFCurrentConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentConfigController.h; path = Parse/Internal/Config/Controller/PFCurrentConfigController.h; sourceTree = ""; }; + 8D597043658824DCA8FDD8CFFEE3BC6D /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = ""; }; + 8D6ED3A53A136BCE4843E32025C76ED9 /* PFUserPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserPrivate.h; path = Parse/Internal/User/PFUserPrivate.h; sourceTree = ""; }; + 8DD494B04A84F285624644430E1FF3A0 /* RKValueTransformers-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "RKValueTransformers-Private.xcconfig"; sourceTree = ""; }; 8DE47CA373FCE248BB502DF421F6B2A3 /* RKObjectMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMapping.h; path = Code/ObjectMapping/RKObjectMapping.h; sourceTree = ""; }; - 8E23F80B85568CE234F07C36444A8868 /* PFProduct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProduct.h; path = Parse/PFProduct.h; sourceTree = ""; }; - 8E58CBB93F5E241E8F3C398FB06283B5 /* PFFieldOperationDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperationDecoder.h; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.h; sourceTree = ""; }; - 8EB6F1445D886E9B17EB6D384EE6DF8F /* FBSDKLoginConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginConstants.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m; sourceTree = ""; }; - 8F21EA2F4A5DDD76A519682036295D1A /* PFCommandURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandURLRequestConstructor.h; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.h; sourceTree = ""; }; + 8EA5A298BA6815375F9BBA4D48B6E32C /* PFSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession.h; path = Parse/PFSession.h; sourceTree = ""; }; + 8F5835DFBC8A6E5D025F957021AE5352 /* FBSDKShareDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m; sourceTree = ""; }; 8F5ED0372250818DCE119C3430AB9B9C /* FBSDKCoreKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKCoreKit.xcconfig; sourceTree = ""; }; - 8F6F5C52DD8416B5F436BA714F2292F6 /* PFSessionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionController.h; path = Parse/Internal/Session/Controller/PFSessionController.h; sourceTree = ""; }; 8F840FB713741211963007A36C4C972B /* RKObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectUtilities.h; path = Code/ObjectMapping/RKObjectUtilities.h; sourceTree = ""; }; - 8FC8E6958F515A1458DD253105E635AB /* BFAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkResolving.h; path = Bolts/iOS/BFAppLinkResolving.h; sourceTree = ""; }; - 8FD1B81D44C9140C9CB6A7AE15FD008A /* FBSDKCoreKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKCoreKit-Private.xcconfig"; sourceTree = ""; }; - 8FE2369D45F007102130145D672D47C7 /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h; sourceTree = ""; }; 905A2264F8751CFD5E0FFE6C92CE7462 /* RKPropertyMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyMapping.m; path = Code/ObjectMapping/RKPropertyMapping.m; sourceTree = ""; }; 905ADB423401F79FA90F610A1CEB29F1 /* RKMappingResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingResult.h; path = Code/ObjectMapping/RKMappingResult.h; sourceTree = ""; }; - 90EF6645B1C52A9102DE489C1AEB98C0 /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = ""; }; - 91D0862B2FAC5E1E4D6ACAB14BE40FD0 /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = ""; }; - 92093FA98E5C9EFD88FDF61A6A4E6451 /* PFSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession.h; path = Parse/PFSession.h; sourceTree = ""; }; - 927F616936E0C7308D11300E5B788429 /* PFFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFile.m; path = Parse/PFFile.m; sourceTree = ""; }; - 932E74B6527148FA6780C77E8DBF2ED5 /* FBSDKLoginManagerLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLogger.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h; sourceTree = ""; }; - 936E53085AB59399AE3E6F0458D49941 /* PFPushManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushManager.h; path = Parse/Internal/Push/Manager/PFPushManager.h; sourceTree = ""; }; - 93A85BABE61F3728712E0E5208270B19 /* PFNetworkCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkCommand.h; path = Parse/Internal/PFNetworkCommand.h; sourceTree = ""; }; - 94241AC9E14ADC6F4BF3A74F37C7443B /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = ""; }; - 942A952E1E39A725636E8BEF6FDDA9F9 /* Parse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse.h; path = Parse/Parse.h; sourceTree = ""; }; - 94B2708249CC1A4C374BE0BE9A5C2161 /* FBSDKLikeBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h; sourceTree = ""; }; - 94EC2DDBDD9F074B0353114A4386A277 /* PFQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQuery.h; path = Parse/PFQuery.h; sourceTree = ""; }; - 9502680C2A5812E3B95B583AB378FCA2 /* PFRESTAnalyticsCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTAnalyticsCommand.m; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.m; sourceTree = ""; }; + 908DBE6B62FE286E8E2B65AB8471172C /* FBSDKLoginManagerLoginResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManagerLoginResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h"; sourceTree = ""; }; + 90E50367F9BC45C10EACF85808FF75BC /* PFConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig.h; path = Parse/PFConfig.h; sourceTree = ""; }; + 9161913CD82800463279FFB15D5628FD /* PFRESTPushCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTPushCommand.m; path = Parse/Internal/Commands/PFRESTPushCommand.m; sourceTree = ""; }; + 916C1A84C0A37408A6F76D88348177DD /* PFSessionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionController.m; path = Parse/Internal/Session/Controller/PFSessionController.m; sourceTree = ""; }; + 917E881A4D1DE9E99ED3B7606F09E16B /* PFURLConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLConstructor.m; path = Parse/Internal/HTTPRequest/PFURLConstructor.m; sourceTree = ""; }; + 91BF5E929B1AC36CE7F99D1E1DC0ED30 /* PFOfflineStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineStore.h; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.h; sourceTree = ""; }; + 91F0975F1A27413EC0622237C3680849 /* PFConfig_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig_Private.h; path = Parse/Internal/Config/PFConfig_Private.h; sourceTree = ""; }; + 922185D0977C1F99BFB47CC3EB889F72 /* PFFileState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState_Private.h; path = Parse/Internal/File/State/PFFileState_Private.h; sourceTree = ""; }; + 93400D2B380DA1CACA54DEAAFAE23D12 /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = ""; }; + 93BF262897FA3F05F3FDF601D8CB04A7 /* libFBSDKLoginKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKLoginKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 93C724D27975298397EBCBA024D076F2 /* FBSDKShareVideoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m; sourceTree = ""; }; + 9402AA910E3CEEBA2FBF5C33C47593DC /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = ""; }; + 9494BB00014D0192A01360063AA70BE0 /* FBSDKLoginButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginButton.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h; sourceTree = ""; }; + 94EDA6573DFD479F710386D53249C2EF /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m; sourceTree = ""; }; + 950203966AB13DB9DD6BF919571BCD7D /* BFExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFExecutor.m; path = Bolts/Common/BFExecutor.m; sourceTree = ""; }; 95ACACF8D7E55EF8FE0FEF697597C3D3 /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; 95B10AC59C183D139DF676CDC2DEF1B0 /* RKLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKLog.h; path = Code/Support/RKLog.h; sourceTree = ""; }; - 95C3B6319C8BEC9A72589989076B040E /* FBSDKShareDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m; sourceTree = ""; }; - 9601718FD0C0CFCF5DA762D153DB3279 /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTaskCompletionSource.m; path = Bolts/Common/BFTaskCompletionSource.m; sourceTree = ""; }; + 9605F7221341E3EA07630ABF2DE6BC6F /* FBSDKShareVideoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h; sourceTree = ""; }; + 96A0F952DC35450695E4E710C00DA528 /* PFCommandCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache_Private.h; path = Parse/Internal/PFCommandCache_Private.h; sourceTree = ""; }; 96A98B34414903617DDCC4DD35D0ACC8 /* SOCKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SOCKit.h; sourceTree = ""; }; - 973BCDCA8F5D929A3B0146540D22266B /* PFUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserState.m; path = Parse/Internal/User/State/PFUserState.m; sourceTree = ""; }; - 97715D178022674A0792C3C3180E1132 /* AFJSONRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFJSONRequestOperation.h; path = AFNetworking/AFJSONRequestOperation.h; sourceTree = ""; }; + 975F4BA7752243B51CF71A4F5AF85FBB /* PFCoreManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreManager.h; path = Parse/Internal/PFCoreManager.h; sourceTree = ""; }; + 9779A223D892C242F0118CAD43BA556F /* PFMultiProcessFileLockController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLockController.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.m; sourceTree = ""; }; 97E6EC52D54228978DD7489F931C7015 /* RKLumberjackLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKLumberjackLogger.m; path = Code/Support/RKLumberjackLogger.m; sourceTree = ""; }; - 985451595F8F27101D95712CABD99D9C /* FBSDKBoltsMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBoltsMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m; sourceTree = ""; }; + 983296A9BF9A0D8836E833993EB26598 /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = ""; }; + 98522B603FC459FC9758D1108318CB8C /* FBSDKSharePhoto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhoto.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m; sourceTree = ""; }; 9863ED0E0DE0D5BD0D54D80394E2278E /* RKObjectRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectRequestOperation.h; path = Code/Network/RKObjectRequestOperation.h; sourceTree = ""; }; - 986A0B2FB090467DD63D523D111D637B /* PFMutableQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableQueryState.m; path = Parse/Internal/Query/State/PFMutableQueryState.m; sourceTree = ""; }; - 986BA44834A1379FA62C25B6BA8F688C /* FBSDKLikeActionControllerCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionControllerCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m; sourceTree = ""; }; + 9866CB182F7690789F1CE9AC2C89303E /* PFPropertyInfo_Runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Runtime.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h; sourceTree = ""; }; + 989869E1193232EE4E322636E8236CEE /* BFAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkTarget.h; path = Bolts/iOS/BFAppLinkTarget.h; sourceTree = ""; }; + 98A77CBFC3CB99CB7C20905C88715474 /* PFURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.h; sourceTree = ""; }; 98D59999C2F13A02F8927597F85000C8 /* RKDynamicMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDynamicMapping.h; path = Code/ObjectMapping/RKDynamicMapping.h; sourceTree = ""; }; - 98E26BE57B0986BD287273920656152C /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = ""; }; - 991823AD655E78B8754FB6DE31C15928 /* libRKValueTransformers.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRKValueTransformers.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 992AFE5C5E747C1601862BCDAA0A7DD8 /* PFFileStagingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileStagingController.m; path = Parse/Internal/File/Controller/PFFileStagingController.m; sourceTree = ""; }; 9936ED8D363FA6B09EA60941182E9F3B /* TKState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKState.m; path = Code/TKState.m; sourceTree = ""; }; - 99BAAC5484715BACEF4A330F55A4DCA0 /* PFSessionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionController.m; path = Parse/Internal/Session/Controller/PFSessionController.m; sourceTree = ""; }; 99CE24FEF0EA1F2943A8DFF00388C985 /* RKStringTokenizer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKStringTokenizer.m; path = Code/Support/RKStringTokenizer.m; sourceTree = ""; }; - 99FE17414C621D6F3A13235F179D4CB8 /* FBSDKLoginManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManager+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h"; sourceTree = ""; }; - 9A18F7AE2E1FACC4C6227EFE5C4B86A4 /* PFUserConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserConstants.h; path = Parse/Internal/User/Constants/PFUserConstants.h; sourceTree = ""; }; - 9A4611534D2F6FE37840471AE6EE6B04 /* PFQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQuery.m; path = Parse/PFQuery.m; sourceTree = ""; }; - 9A4A2624694E7E459F481284E18872D0 /* Bolts-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Bolts-dummy.m"; sourceTree = ""; }; + 99E458C281E7B58FB283CD3DD6EC7CC7 /* PFDevice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDevice.h; path = Parse/Internal/PFDevice.h; sourceTree = ""; }; + 99FF411F081193D28CAB98DD501F9F72 /* FBSDKShareLinkContent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareLinkContent+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h"; sourceTree = ""; }; + 9A3A0AEECB03ACB2C625D6A5BDD230FC /* Bolts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Bolts.m; path = Bolts/Common/Bolts.m; sourceTree = ""; }; 9A7897D08498CE169C9E0F8BA5015E80 /* RKObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectUtilities.m; path = Code/ObjectMapping/RKObjectUtilities.m; sourceTree = ""; }; - 9A7CE6F0005C413065B0AE390477019B /* PFCommandResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandResult.h; path = Parse/Internal/PFCommandResult.h; sourceTree = ""; }; - 9ABF154F3CA9CA7655A27F36B3AFD46A /* PFEventuallyQueue_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue_Private.h; path = Parse/Internal/PFEventuallyQueue_Private.h; sourceTree = ""; }; - 9AF33E0422D0D6894776A47D9A815993 /* FBSDKLikeButtonPopWAV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButtonPopWAV.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m; sourceTree = ""; }; - 9B6B535332BF062ED196F088A04E6A5C /* PFUserPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserPrivate.h; path = Parse/Internal/User/PFUserPrivate.h; sourceTree = ""; }; - 9B7DE1AA020492D010862FA4F2FBC7C6 /* PFApplication.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFApplication.m; path = Parse/Internal/PFApplication.m; sourceTree = ""; }; - 9C2DBEA1B558F22849ADDB4522563836 /* PFFileController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileController.m; path = Parse/Internal/File/Controller/PFFileController.m; sourceTree = ""; }; - 9C73B2D9D4B827BC0A14F34532E43F41 /* PFPurchaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchaseController.m; path = Parse/Internal/Purchase/Controller/PFPurchaseController.m; sourceTree = ""; }; - 9CC527AF2B9F34C2E793791D4F3AE0A4 /* PFQueryPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryPrivate.h; path = Parse/Internal/Query/PFQueryPrivate.h; sourceTree = ""; }; - 9CF2D6AC00B5B6213CA5BA66D3473AF9 /* PFURLSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession_Private.h; sourceTree = ""; }; - 9D3A56A201096D2EE5931E4024DA7419 /* FBSDKLoginManagerLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLogger.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m; sourceTree = ""; }; - 9D87F51C610B0FE64B3895D47FCAF2B6 /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = ""; }; - 9D9010B3F716FD1490351E8CB8BB8840 /* PFNullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNullability.h; path = Parse/PFNullability.h; sourceTree = ""; }; - 9DB137E8A7C92A13BD6EB1FE46FAD717 /* PFPropertyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo.h; sourceTree = ""; }; - 9DF590EFC23393E18AB1CB35CBED4270 /* PFKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeychainStore.m; path = Parse/Internal/PFKeychainStore.m; sourceTree = ""; }; - 9EBC7480ED94D3BDC49F07CF67845245 /* FBSDKLoginTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m; sourceTree = ""; }; - 9EC619ED9963ABF73BFCE22527769210 /* libFBSDKShareKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKShareKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 9EF29D84C9187AAE24AA165B2347ACAD /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = ""; }; + 9B2BBEF7F76A0A9700A14D2C55164268 /* PFRESTConfigCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTConfigCommand.h; path = Parse/Internal/Commands/PFRESTConfigCommand.h; sourceTree = ""; }; + 9B3BA8EBCD60ED1F31A2098334DB3278 /* PFCommandURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandURLRequestConstructor.h; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.h; sourceTree = ""; }; + 9C258A4DB466828F6F75FA69D17B7A98 /* PFBaseState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBaseState.h; path = Parse/Internal/PFBaseState.h; sourceTree = ""; }; + 9C3140134D0A6A0E556CA3A287EC0FF5 /* PFRole.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRole.h; path = Parse/PFRole.h; sourceTree = ""; }; + 9C8807B3161750EADE6E8BD164724CE6 /* FBSDKShareAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareAPI.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m; sourceTree = ""; }; + 9CD8231FE026505A5E9872616FAABDD9 /* FBSDKCoreKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKCoreKit-Private.xcconfig"; sourceTree = ""; }; + 9D91308BAD322ECAA4960D4D23C9A2C3 /* PFFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFile.m; path = Parse/PFFile.m; sourceTree = ""; }; + 9E01D38ECEA62C477A8C7BEE503A7547 /* PFQueryState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState_Private.h; path = Parse/Internal/Query/State/PFQueryState_Private.h; sourceTree = ""; }; + 9E042B3BA6CAF103736FF4527CF951FF /* libAFNetworking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAFNetworking.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E09472B01CB2E27BD636136A0066956 /* PFCurrentInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentInstallationController.m; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.m; sourceTree = ""; }; + 9E21E2C6F0AD5061454FF796346F0484 /* PFPushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState.h; path = Parse/Internal/Push/State/PFPushState.h; sourceTree = ""; }; 9F73B326076ED018A7156E4BFED6A5EA /* lcl_config_components_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_components_RK.h; path = Code/Support/lcl_config_components_RK.h; sourceTree = ""; }; + 9F8E73E13D56D4420C7C239F8B5BF990 /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h; sourceTree = ""; }; + 9FAACBCE52471750369D9FA0ECEAEEE1 /* PFMutablePushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutablePushState.h; path = Parse/Internal/Push/State/PFMutablePushState.h; sourceTree = ""; }; + 9FBFA3525F472811286DDE3A9248666E /* PFObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectUtilities.h; path = Parse/Internal/Object/Utilities/PFObjectUtilities.h; sourceTree = ""; }; + 9FE092D9D9FA0698D276FB74E5D3C4EB /* libParse.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libParse.a; sourceTree = BUILT_PRODUCTS_DIR; }; + A01032B0129DF076CF6B8F1997C4BA6F /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = ""; }; + A029888328B7A6D3EFA37ED1B3C36DAE /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h; sourceTree = ""; }; A0426D7149778C1DBF70DD5B3253A081 /* RKDynamicMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDynamicMapping.m; path = Code/ObjectMapping/RKDynamicMapping.m; sourceTree = ""; }; - A061230EB53B9A3D0D74C5E8D62680CA /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = ""; }; - A07FB85A098FAF188DB71104131A46B2 /* PFObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectUtilities.h; path = Parse/Internal/Object/Utilities/PFObjectUtilities.h; sourceTree = ""; }; - A08562E12462CC984D8E3FDD78C62842 /* PFCategoryLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCategoryLoader.m; path = Parse/Internal/PFCategoryLoader.m; sourceTree = ""; }; - A10620A1377EB7153ECCFC2F048B5505 /* PFWeakValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFWeakValue.m; path = Parse/Internal/PFWeakValue.m; sourceTree = ""; }; - A153B9B34087207BF3F8415D46B5F822 /* FBSDKSharing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharing.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h; sourceTree = ""; }; - A17C481C0F1C64EB4AB1CFBAF183C08E /* FBSDKLikeControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeControl.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h; sourceTree = ""; }; - A194EB7C47C1754479482D96E62282D1 /* PFSQLiteDatabaseResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseResult.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.h; sourceTree = ""; }; - A1DAFA76443338477CB91F2DC0FEDC9E /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = ""; }; - A2DB5E0FF2D801AE5355483A207C2316 /* PFMutableRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableRelationState.h; path = Parse/Internal/Relation/State/PFMutableRelationState.h; sourceTree = ""; }; - A2F1242F1927A230F84F0CBB923D800D /* PFCloud.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloud.h; path = Parse/PFCloud.h; sourceTree = ""; }; - A31F406B4BFF1949AF98275105F6457A /* PFRESTCloudCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCloudCommand.h; path = Parse/Internal/Commands/PFRESTCloudCommand.h; sourceTree = ""; }; + A083AB389EBB61C1E3AC66B85D0485EE /* PFUserAuthenticationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationDelegate.h; path = Parse/PFUserAuthenticationDelegate.h; sourceTree = ""; }; + A0A9019E56BAD1EE29D29A6AEDF3BC1A /* ISO8601DateFormatterValueTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ISO8601DateFormatterValueTransformer.m; path = Code/ISO8601DateFormatterValueTransformer.m; sourceTree = ""; }; + A0D0E260844C900A61F03ACD640BF515 /* PFDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDecoder.h; path = Parse/Internal/PFDecoder.h; sourceTree = ""; }; + A13F413DC88512FDA54FE8057A667EAD /* PFSQLiteDatabase_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase_Private.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase_Private.h; sourceTree = ""; }; + A153F0DEB24B9E8B5723EFCB6F33B536 /* PFCoreManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCoreManager.m; path = Parse/Internal/PFCoreManager.m; sourceTree = ""; }; + A16F8952CC048721F5CA32D79E71B653 /* ISO8601DateFormatterValueTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ISO8601DateFormatterValueTransformer.h; path = Code/ISO8601DateFormatterValueTransformer.h; sourceTree = ""; }; + A1A84243D8AF41257B228911CE638D24 /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = ""; }; + A226C9DD413F0CCC4F3BFD7DE0A82A88 /* PFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFNetworkActivityIndicatorManager.m; path = Parse/PFNetworkActivityIndicatorManager.m; sourceTree = ""; }; + A2ACF4A5ED3EA611505A0F4017817898 /* FBSDKLoginManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManager+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h"; sourceTree = ""; }; + A32731565F3850539FE9BBB6231B50DE /* FBSDKLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m; sourceTree = ""; }; + A38B68BCFCED22FDC00C7FD4F3FFA717 /* FBSDKAccessTokenCacheV3_21.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_21.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m; sourceTree = ""; }; A397240CB17A369FA7286D7ED09FBDD2 /* RKOperationStateMachine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKOperationStateMachine.m; path = Code/Support/RKOperationStateMachine.m; sourceTree = ""; }; - A3D1CC8FD8C924BEC03EAE7B7D1A957B /* PFObjectController_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController_Private.h; path = Parse/Internal/Object/Controller/PFObjectController_Private.h; sourceTree = ""; }; - A4365F0D13404D6A5A7FA5FE5156F9E2 /* libBolts.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBolts.a; sourceTree = BUILT_PRODUCTS_DIR; }; + A3B19063FF0B2F212D30AA107E73EAF3 /* PFInternalUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInternalUtils.m; path = Parse/Internal/PFInternalUtils.m; sourceTree = ""; }; + A3D3B2AE6543B11628B3FD5B32D9E786 /* PFAlertView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAlertView.m; path = Parse/Internal/PFAlertView.m; sourceTree = ""; }; + A3D3F0FD5623B320704891A12D20A91A /* PFMutableACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableACLState.h; path = Parse/Internal/ACL/State/PFMutableACLState.h; sourceTree = ""; }; + A3D86DE4F1B3EFCBA205A592DA3CCEFE /* AFURLConnectionOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLConnectionOperation.h; path = AFNetworking/AFURLConnectionOperation.h; sourceTree = ""; }; + A42C8D72C0DD9F94735982945AB06235 /* FBSDKLoginButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginButton.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m; sourceTree = ""; }; + A43FA21715C3B6F62D38DAA843E6E28A /* AFPropertyListRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFPropertyListRequestOperation.m; path = AFNetworking/AFPropertyListRequestOperation.m; sourceTree = ""; }; + A460B6A4FC8055E468FF739FF0D108FE /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h; sourceTree = ""; }; A47788042F4DC03B2F9C830BA9EA5567 /* RKMappingErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingErrors.h; path = Code/ObjectMapping/RKMappingErrors.h; sourceTree = ""; }; + A49E03FC7C84FA3293B38677DC681CCE /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = ""; }; + A4E495589FA749FBC303F264C9C6B80F /* PFObjectSubclassInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassInfo.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.m; sourceTree = ""; }; A4F85A759F06DA2C165FC5F9C67479D9 /* TKState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKState.h; path = Code/TKState.h; sourceTree = ""; }; - A513E815CB0531AC54B80FD774351B67 /* PFApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFApplication.h; path = Parse/Internal/PFApplication.h; sourceTree = ""; }; - A51EB7786397F5EFF35AB3BD9CEF4F08 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; - A5247A1DF4C0D6237EA1C24BBC7A2C7D /* PFURLConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLConstructor.m; path = Parse/Internal/HTTPRequest/PFURLConstructor.m; sourceTree = ""; }; + A52CB1C60BA79230A59E65B9417DBEB7 /* FBSDKAccessTokenCacheV3_17.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_17.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h; sourceTree = ""; }; A54BA714770BA8ED007819BC352FEB7C /* libSOCKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSOCKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - A54DE73C817619BCCC8C09FEBFAAE717 /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = ""; }; - A5E5E8ED6BA6053BE27E35F8E7B4BEEE /* PFURLSessionUploadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionUploadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.m; sourceTree = ""; }; - A633AA451BBF3810EF096AFCD04B189D /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = ""; }; + A558554954AE61057C9CF3B86E31AAF1 /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = ""; }; A67A7F1AF95165EBD3C0D8E0060DB526 /* RKMappingTest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingTest.h; path = Code/Testing/RKMappingTest.h; sourceTree = ""; }; - A6C3BBB9984F7D2959A0E80137315CF3 /* PFMutableACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableACLState.m; path = Parse/Internal/ACL/State/PFMutableACLState.m; sourceTree = ""; }; + A6ABA5D37C50A0B8B9B785D774D332A5 /* PFRESTCloudCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCloudCommand.h; path = Parse/Internal/Commands/PFRESTCloudCommand.h; sourceTree = ""; }; + A6AE518E9BB5E93989AFB92589707FBA /* PFObjectBatchController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectBatchController.h; path = Parse/Internal/Object/BatchController/PFObjectBatchController.h; sourceTree = ""; }; + A7133DBE9772758CC46F930B640FA577 /* PFSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession_Private.h; path = Parse/Internal/Session/PFSession_Private.h; sourceTree = ""; }; + A7162605D551027C56A2A37B943994C7 /* PFAnonymousUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousUtils.m; path = Parse/PFAnonymousUtils.m; sourceTree = ""; }; A73E1A20457CEF5005A485BBF4301935 /* Bolts-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Bolts-prefix.pch"; sourceTree = ""; }; A771288DA627C1035D810FE2E4D30B4D /* RKObjectRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectRequestOperation.m; path = Code/Network/RKObjectRequestOperation.m; sourceTree = ""; }; - A789217CA6DED8D71FBD896F412AD6A4 /* PFObjectConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectConstants.h; path = Parse/Internal/Object/Constants/PFObjectConstants.h; sourceTree = ""; }; - A794CC4D4A2C1FBA46304C8A08FBBF13 /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h; sourceTree = ""; }; - A87CDFB3EFD9FF97386971977129FF4F /* PFSessionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionUtilities.m; path = Parse/Internal/Session/Utilities/PFSessionUtilities.m; sourceTree = ""; }; - A89DBD55CC24CC46C0835D3E92056BAF /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = ""; }; - A8B7D4881DB5E38BB4A3D779E6BB690D /* PFPinningObjectStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningObjectStore.h; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.h; sourceTree = ""; }; - A8F0EEC1700298FC5555BA0A53F82E9D /* PFCurrentInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentInstallationController.h; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.h; sourceTree = ""; }; + A7D2882D92D1796229569A9CC1C6A400 /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent_Internal.h; path = Bolts/iOS/BFMeasurementEvent_Internal.h; sourceTree = ""; }; + A7E0C2515B7C55E949D9562B88288232 /* FBSDKBoltsMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBoltsMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m; sourceTree = ""; }; + A808BCEC34959F6ECE35E478017AAE04 /* FBSDKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h; sourceTree = ""; }; + A83514721328D0D297D02197D617EB33 /* PFErrorUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFErrorUtilities.h; path = Parse/Internal/PFErrorUtilities.h; sourceTree = ""; }; + A8A665A78A257570FD4F9CE8A2EF5694 /* FBSDKLikeControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeControl.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h; sourceTree = ""; }; A8FA5F2052C43B6E4060DAF60265E858 /* SOCKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "SOCKit-Private.xcconfig"; sourceTree = ""; }; - A8FE4F334B2A94F5AC2AA3FBAF7627F8 /* PFProduct+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFProduct+Private.h"; path = "Parse/Internal/Product/PFProduct+Private.h"; sourceTree = ""; }; + A92BD29643970DCB9C0745A0406AD053 /* PFPushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushState.m; path = Parse/Internal/Push/State/PFPushState.m; sourceTree = ""; }; + A9450452DCB495F010C9799C19CEDC25 /* PFAnonymousUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils.h; path = Parse/PFAnonymousUtils.h; sourceTree = ""; }; + A9CC220B3BB7353C4CE25F3392EC1458 /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = ""; }; A9E3691FF1A7CEBD5D9EFA1195090078 /* ISO8601DateFormatterValueTransformer.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ISO8601DateFormatterValueTransformer.xcconfig; sourceTree = ""; }; + A9E407E843F2555171E0CF773AFE8CAA /* PFUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserState.m; path = Parse/Internal/User/State/PFUserState.m; sourceTree = ""; }; AA62DC87D5F1898752152729F580A3A0 /* RKNSJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKNSJSONSerialization.m; path = Code/Support/RKNSJSONSerialization.m; sourceTree = ""; }; - AA6AE3659CB5F993D0249F89C25AD457 /* FBSDKLoginManagerLoginResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLoginResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m; sourceTree = ""; }; - AA8507DB72E8E2555EB649E141F80B46 /* PFSubclassing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSubclassing.h; path = Parse/PFSubclassing.h; sourceTree = ""; }; - AA8D4BA554A6B6C1B406BECC4D387E3F /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = ""; }; - AB09AD9EF87210D905F74E1C8DFF532C /* PFCoreDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreDataProvider.h; path = Parse/Internal/PFCoreDataProvider.h; sourceTree = ""; }; + AA6E69D0F5432BE35E8DA343DA6002CE /* FBSDKShareDialogMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialogMode.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h; sourceTree = ""; }; + AAFC5698C81D8076342E19ECB0D2E550 /* PFJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFJSONSerialization.m; path = Parse/Internal/PFJSONSerialization.m; sourceTree = ""; }; + AB4729343B161E71126051A18EF77E49 /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = ""; }; AB5F89C2FF338EB3D8A14F31581D0B13 /* TransitionKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "TransitionKit-Private.xcconfig"; sourceTree = ""; }; - ABB8ADA56E3C960C54BA1289E7ECB2E5 /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = ""; }; - ABF0B6755B46A73A4D5A66DC91176994 /* BFAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkTarget.h; path = Bolts/iOS/BFAppLinkTarget.h; sourceTree = ""; }; - ACE0AE2BDDDC07FCC86BAD0AD53C4E89 /* ParseInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseInternal.h; path = Parse/Internal/ParseInternal.h; sourceTree = ""; }; - AD669A1EAE15893820BD4F03CDCE9EDE /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = ""; }; + ACB0039F3DE0903BD2479336BCB4AAF5 /* FBSDKMessengerIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessengerIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m; sourceTree = ""; }; + AD0F8B79E3BDC24EF65F9BA34E2F1983 /* ParseManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseManager.m; path = Parse/Internal/ParseManager.m; sourceTree = ""; }; + AD297F39854C24CB012AB880A8F72FE9 /* PFACLState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState_Private.h; path = Parse/Internal/ACL/State/PFACLState_Private.h; sourceTree = ""; }; + AD4EA5AF253C62AF6EE7B3838BE1FE11 /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m; sourceTree = ""; }; AD6755DF1120CF7F9CE51A66D317FC9F /* RKRelationshipMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRelationshipMapping.m; path = Code/ObjectMapping/RKRelationshipMapping.m; sourceTree = ""; }; - AD7E73D7FC8878A9DBB9C6C91A6EF948 /* PFTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFTaskQueue.h; path = Parse/Internal/PFTaskQueue.h; sourceTree = ""; }; - ADBBD204C9399AB147FC3FB9386FBA68 /* PFRESTCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand.h; path = Parse/Internal/Commands/PFRESTCommand.h; sourceTree = ""; }; - ADD502BDCA2209045FB7EE614931BD10 /* PFEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue.h; path = Parse/Internal/PFEventuallyQueue.h; sourceTree = ""; }; - AE08EB61DD10B80E244E727952C0B579 /* ISO8601DateFormatterValueTransformer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ISO8601DateFormatterValueTransformer-dummy.m"; sourceTree = ""; }; + ADE2CE2451E917A2482234B50A41DC19 /* FBSDKAccessTokenCacheV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV4.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h; sourceTree = ""; }; + ADF8EC9446037AA127D75EE89650002F /* FBSDKLikeBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h; sourceTree = ""; }; + AE094855CA351D584BD24BBC12AFB3F8 /* PFObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectControlling.h; path = Parse/Internal/Object/Controller/PFObjectControlling.h; sourceTree = ""; }; AE1F88C360ED32A2DC0B77A0FB64F684 /* RKResponseDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKResponseDescriptor.m; path = Code/Network/RKResponseDescriptor.m; sourceTree = ""; }; + AE305CCADD2010E8C1E698C4DAC84DDB /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = ""; }; + AE308F7FD55A37D38ABFDCED9CF0A8B3 /* PFMutableObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableObjectState.h; path = Parse/Internal/Object/State/PFMutableObjectState.h; sourceTree = ""; }; + AE8C24FB91D52A7A902E7B6939B6EFC6 /* PFEventuallyPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyPin.h; path = Parse/Internal/PFEventuallyPin.h; sourceTree = ""; }; + AED3A36F04E046594F39EA5EB90D97FD /* PFPropertyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo.m; sourceTree = ""; }; AEDE84F08919A050F7554C588C364506 /* TransitionKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = TransitionKit.xcconfig; sourceTree = ""; }; - AEFB5A16335CA052F7F8EF7BD6899979 /* PFObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState.h; path = Parse/Internal/Object/State/PFObjectState.h; sourceTree = ""; }; - AEFD765B313DFFD0B0729C789E148EF3 /* FBSDKLoginTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h; sourceTree = ""; }; - AF0E2DA4583C19DA08D84DBF506EC7F3 /* FBSDKShareAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareAPI.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m; sourceTree = ""; }; - AF18B2AD10D7C8A2EBA61B5AB51D00BD /* PFObjectFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCodingLogic.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.m; sourceTree = ""; }; - AF8EEF265F3D9C4630F4ACCFBA1A315F /* PFProductsRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProductsRequestHandler.h; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.h; sourceTree = ""; }; + AEE98356256460D105F89B9C6DE23A69 /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = ""; }; + AF32577C470A14D1ED63BB4B6492F464 /* PFObjectBatchController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectBatchController.m; path = Parse/Internal/Object/BatchController/PFObjectBatchController.m; sourceTree = ""; }; + B00106BF0B6579DD98D56C67BD575CF0 /* PFSQLiteDatabaseResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseResult.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.h; sourceTree = ""; }; + B009D5CAE876F03463C42923FD1BF780 /* PFMutableObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableObjectState.m; path = Parse/Internal/Object/State/PFMutableObjectState.m; sourceTree = ""; }; + B06587D0A22379F4450AB6A83497A7DA /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = ""; }; B0F9682AC6A9C5259D9F3D4BCCD455B1 /* libRestKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRestKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - B177AF318ABF25BE42BEEE03E5A4504D /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = ""; }; - B1C7ADB3EE2B383850B9230A7B460906 /* BoltsVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BoltsVersion.h; path = Bolts/Common/BoltsVersion.h; sourceTree = ""; }; - B21B66CA9B865C30407C0033E5E77A5C /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; - B2B61F565ACF0CDFAAE4247A1F8D4A5C /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - B306BF5D4F5F8F5EDE605D550B1C60E4 /* _FBSDKLoginRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKLoginRecoveryAttempter.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m; sourceTree = ""; }; + B10ADC87A857910D7585779303E279B5 /* FBSDKShareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKShareKit-dummy.m"; sourceTree = ""; }; + B12980AF5F1F26F33906C73A2F38C5E2 /* PFRESTFileCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTFileCommand.m; path = Parse/Internal/Commands/PFRESTFileCommand.m; sourceTree = ""; }; + B2853B351DB05A9B0740AF256122A30E /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = ""; }; + B2B9FD0D9C17DD96730E88C3240D975F /* PFCategoryLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCategoryLoader.m; path = Parse/Internal/PFCategoryLoader.m; sourceTree = ""; }; B3430C5AC8208C2B671B4D7823955F60 /* RKBenchmark.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKBenchmark.h; path = Code/Testing/RKBenchmark.h; sourceTree = ""; }; B34970E9607C4D5CA7FD440A0E9D4EB0 /* RKPropertyMappingTestExpectation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyMappingTestExpectation.m; path = Code/Testing/RKPropertyMappingTestExpectation.m; sourceTree = ""; }; - B3FCEE0AD84EC6A5CA5478A717BEBA01 /* PFDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDecoder.m; path = Parse/Internal/PFDecoder.m; sourceTree = ""; }; - B44F9A0151A29D7133BB6B1A3BBFA048 /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = ""; }; - B45B64C4D463C82AD88669B314F94E5E /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = ""; }; - B4A4BC05632F91AFEF2CA8594E359431 /* PFQueryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryUtilities.m; path = Parse/Internal/Query/Utilities/PFQueryUtilities.m; sourceTree = ""; }; - B4DD5861C8879004366D84A43D21E0EB /* FBSDKLoginManagerLoginResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManagerLoginResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h"; sourceTree = ""; }; + B3693A56CF492DA3BDAEDDBDA46ADC5D /* PFRESTAnalyticsCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTAnalyticsCommand.h; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.h; sourceTree = ""; }; + B37E9B2C0FC3DA2D2D135ED6BFBFCDD0 /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = ""; }; + B407FBFC5F897F4E485E1E0002B506FD /* AFXMLRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFXMLRequestOperation.m; path = AFNetworking/AFXMLRequestOperation.m; sourceTree = ""; }; + B40C676461A3B7148111BB04D891F399 /* PFQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryState.m; path = Parse/Internal/Query/State/PFQueryState.m; sourceTree = ""; }; + B43206E9EAB8BE07EDDF2DD6510F74C8 /* PFQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQuery.m; path = Parse/PFQuery.m; sourceTree = ""; }; + B43EF13062A276FCA06A9386DCA1F36F /* FBSDKLoginConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginConstants.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h; sourceTree = ""; }; + B50ED7330E240BB1A16E10047FCC8E37 /* AFHTTPClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPClient.h; path = AFNetworking/AFHTTPClient.h; sourceTree = ""; }; B563402F32E620824AD23105E63019A7 /* RKAttributeMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKAttributeMapping.h; path = Code/ObjectMapping/RKAttributeMapping.h; sourceTree = ""; }; - B5844358C456A94A62A07CB206B23CB9 /* PFRESTAnalyticsCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTAnalyticsCommand.h; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.h; sourceTree = ""; }; - B64334E646B39ABAFB0CC58791A45045 /* PFURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.h; sourceTree = ""; }; - B6707D507E40761A2A3DB33A5EBE648E /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = ""; }; - B6DB762A22230B1B2984E7A10A6D4431 /* FBSDKShareLinkContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareLinkContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m; sourceTree = ""; }; - B7200C42FD7821618E5C729A6715D406 /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = ""; }; - B74DFFD00FD194924436581B996AF728 /* PFSessionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionUtilities.h; path = Parse/Internal/Session/Utilities/PFSessionUtilities.h; sourceTree = ""; }; + B5EB9B4230ED62ACBBFE1640BB61C32F /* BFCancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationToken.h; path = Bolts/Common/BFCancellationToken.h; sourceTree = ""; }; + B5F3FAED1517988ED94F54E9B8DA4E0A /* FBSDKShareAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareAPI.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h; sourceTree = ""; }; + B5F5ADC1E77EC8A29EE990ABF17E8326 /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = ""; }; + B6C82743CE345D0715A174740BEB724A /* PFCloudCodeController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloudCodeController.m; path = Parse/Internal/CloudCode/PFCloudCodeController.m; sourceTree = ""; }; + B6DC44432F551A7E862B5307DF7F040D /* FBSDKLikeObjectType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeObjectType.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m; sourceTree = ""; }; B76A09E201EAD10D07E2C151D7EC5F26 /* FBSDKCoreKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKCoreKit-prefix.pch"; sourceTree = ""; }; - B7B64451F8A6E1AC2BADE39B3C1CABF8 /* PFRESTCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCommand.m; path = Parse/Internal/Commands/PFRESTCommand.m; sourceTree = ""; }; - B7D225D38EBD061B9B317B5F017A8DB8 /* PFRESTUserCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTUserCommand.m; path = Parse/Internal/Commands/PFRESTUserCommand.m; sourceTree = ""; }; - B83052F7D6EDB1CBA5F3BE48FE41B542 /* AFImageRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageRequestOperation.m; path = AFNetworking/AFImageRequestOperation.m; sourceTree = ""; }; - B83DA40998833B6F48A316FA1BA26DF0 /* PFPaymentTransactionObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.h; sourceTree = ""; }; + B83B68F2BA2D8926592978101024F709 /* PFRESTPushCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTPushCommand.h; path = Parse/Internal/Commands/PFRESTPushCommand.h; sourceTree = ""; }; B83F7B501488845012B0097456793ED7 /* lcl_config_extensions_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_extensions_RK.h; path = Code/Support/lcl_config_extensions_RK.h; sourceTree = ""; }; B8409E3E09BE30CB9E0DB516F89ED930 /* SOCKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SOCKit.xcconfig; sourceTree = ""; }; - B8C98D684B355E8344D062BD7BF8315F /* PFAnalytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics.h; path = Parse/PFAnalytics.h; sourceTree = ""; }; - B9254F90896402000DEE03CA2001F4A0 /* FBSDKLoginCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginCompletion.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m; sourceTree = ""; }; + B8C2915B7FBC79D5F729A8D454EC471C /* FBSDKLikeBoxBorderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxBorderView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h; sourceTree = ""; }; + B8D4E64BEFC88B60711EE57C1834C5F8 /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = ""; }; + B921F27786A108BF382F49799F4ECEFE /* FBSDKLikeActionControllerCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionControllerCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m; sourceTree = ""; }; + B95FB2E5D926288C9E55B3572315CEE5 /* PFSQLiteDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabase.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m; sourceTree = ""; }; B96FAE035A72F2B9E4745AA2941D21DC /* lcl_config_logger_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_logger_RK.h; path = Code/Support/lcl_config_logger_RK.h; sourceTree = ""; }; - B996498C593C09462CB17300BB0EA209 /* PFQueryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryUtilities.h; path = Parse/Internal/Query/Utilities/PFQueryUtilities.h; sourceTree = ""; }; - B9A15492EE8BDE4E1840F2F29AA9B3A5 /* PFObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectControlling.h; path = Parse/Internal/Object/Controller/PFObjectControlling.h; sourceTree = ""; }; - B9DD727DB3D3919B717CCB2FAE4F0055 /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = ""; }; - B9DDC28C55F77A12AE9ED00D59C5CDF6 /* FBSDKAppInviteContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h; sourceTree = ""; }; - BA24326AC3CD75BD5A00788CED0B32FC /* FBSDKShareError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareError.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h; sourceTree = ""; }; + B9A3B0127A1E076EFFEE0400BFD1119C /* FBSDKLikeControl+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeControl+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h"; sourceTree = ""; }; + BA219A4F7C2E6E8A63E64A02CF33B649 /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = ""; }; + BA4DA1672A2EE0D0650B35B2EE788AF2 /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h; sourceTree = ""; }; + BA51726FD1AA4091DA126768DFA80EE0 /* BFTask+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BFTask+Private.h"; path = "Parse/Internal/BFTask+Private.h"; sourceTree = ""; }; BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - BAD0E25E939779D3CB767BDACE17F6F7 /* PFPushPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushPrivate.h; path = Parse/Internal/Push/PFPushPrivate.h; sourceTree = ""; }; - BADE0370EA2CCD1D36599137E9D79FB3 /* FBSDKShareOpenGraphValueContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphValueContainer.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m; sourceTree = ""; }; - BB00D6E02A224030D5BDFAF952816C36 /* libFBSDKLoginKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKLoginKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - BB0CA4DECDBC711B22322A480B4D2DB0 /* PFAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAssert.h; path = Parse/Internal/PFAssert.h; sourceTree = ""; }; - BB1463FA77383563F1C437523A44E1A7 /* FBSDKAccessTokenCacheV3_21.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_21.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m; sourceTree = ""; }; - BB557FE6B9E9C5D59E6A3DEB4AB7846E /* FBSDKLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m; sourceTree = ""; }; - BBEEA079EE2C1E3F7FCF0D4A242F3338 /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = ""; }; - BC87F50A886AA4FC59C239579C59B23A /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = ""; }; - BD1C10F7430E7917BD4A2D320618E8FE /* PFQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState.h; path = Parse/Internal/Query/State/PFQueryState.h; sourceTree = ""; }; - BD31E37E459C5578892A42ACCD8A7C99 /* PFSQLiteStatement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteStatement.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.h; sourceTree = ""; }; - BD6248F1913A738A21279EA50BBFB18E /* BFAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererController.m; path = Bolts/iOS/BFAppLinkReturnToRefererController.m; sourceTree = ""; }; + BA77BF64FAFBF3F9E5DB590A4B0FB4A9 /* PFAnalyticsUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsUtilities.h; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.h; sourceTree = ""; }; + BAAF0724B9090137B718DFDA6EB9C1C7 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; + BAD26E583A45E51D16E0FA2F67CB7CA3 /* libISO8601DateFormatterValueTransformer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libISO8601DateFormatterValueTransformer.a; sourceTree = BUILT_PRODUCTS_DIR; }; + BAFC73046A893C097CD25A41014D48A0 /* PFThreadsafety.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFThreadsafety.h; path = Parse/Internal/ThreadSafety/PFThreadsafety.h; sourceTree = ""; }; + BB282470029D499E3074A164AABBC66C /* PFAnalyticsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsController.m; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.m; sourceTree = ""; }; + BB98FB4B596C25CC1243E4E50B93731A /* PFSQLiteDatabaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseController.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.m; sourceTree = ""; }; + BBA379404F39E04206E50A2AE079F9AE /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = ""; }; + BC5C6C0CB488B2B5EB58A44CB5006846 /* BFAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererController.m; path = Bolts/iOS/BFAppLinkReturnToRefererController.m; sourceTree = ""; }; + BC8341246DF5F52B15F7D490893290D3 /* PFSQLiteStatement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteStatement.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.h; sourceTree = ""; }; + BD4CC2409377CA987A2B2C5C57CEEE70 /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTaskCompletionSource.h; path = Bolts/Common/BFTaskCompletionSource.h; sourceTree = ""; }; BD77162D04BA4533037493C3BE145CFF /* RKTestFactory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestFactory.m; path = Code/Testing/RKTestFactory.m; sourceTree = ""; }; - BD986CE8B13B8A0C1F133579BB44D141 /* PFURLSessionUploadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionUploadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.h; sourceTree = ""; }; - BDD575E014B1E668BA1B9894C948067E /* PFHTTPURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPURLRequestConstructor.h; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.h; sourceTree = ""; }; - BDDDC367C4FFD9B99B16C912DD808CBE /* PFMutableRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableRelationState.m; path = Parse/Internal/Relation/State/PFMutableRelationState.m; sourceTree = ""; }; + BD7AF50148F7E85655300B88C68AEFF3 /* PFRESTUserCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTUserCommand.h; path = Parse/Internal/Commands/PFRESTUserCommand.h; sourceTree = ""; }; + BDB19BCF4582BF9F10ABA1C43D14ED9A /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = ""; }; + BDEB88DA6AF7347263BC6911DB8411FE /* PFNetworkCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkCommand.h; path = Parse/Internal/PFNetworkCommand.h; sourceTree = ""; }; + BE300C64CFEC0B1AF5E5B10FCAD254AB /* FBSDKShareUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h; sourceTree = ""; }; + BE7E9FEA0A48E20BEAFE0E04D46D0913 /* PFLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLogger.m; path = Parse/Internal/PFLogger.m; sourceTree = ""; }; BE80753CE5B8297DCAAA5C864D7D7A5B /* RKMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapping.h; path = Code/ObjectMapping/RKMapping.h; sourceTree = ""; }; - BF4B15119AA437DFDE6F525A227EEEA5 /* PFAnonymousUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousUtils.m; path = Parse/PFAnonymousUtils.m; sourceTree = ""; }; + BE9C3BEACE061C48E9A8427C3059F7E5 /* FBSDKShareOpenGraphContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h; sourceTree = ""; }; + BECD89C94556181D2DC5E1EC956F6551 /* BFAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkNavigation.m; path = Bolts/iOS/BFAppLinkNavigation.m; sourceTree = ""; }; BF59BC15D23E1E1912C8F334E7236813 /* Pods-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-acknowledgements.plist"; sourceTree = ""; }; - BFEEFBE1C37274DCC4828D82311AF40C /* PFObjectLocalIdStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectLocalIdStore.h; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h; sourceTree = ""; }; - C01586B6345CA4AB19014D467EAE9DBA /* Parse-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Parse-Private.xcconfig"; sourceTree = ""; }; - C061A6821D5496664B815D95E9686638 /* PFDevice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDevice.m; path = Parse/Internal/PFDevice.m; sourceTree = ""; }; - C139C86AEBB76931A158BC183F46D15F /* PFMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMacros.h; path = Parse/Internal/PFMacros.h; sourceTree = ""; }; - C18CECEFC7124D4D8DB78DDCA56F3E73 /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h; sourceTree = ""; }; - C1DF7803D01DBA25AC3A304B97A1450B /* PFMutableUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableUserState.h; path = Parse/Internal/User/State/PFMutableUserState.h; sourceTree = ""; }; - C2050A5F83DE9760D514859F3A7AC930 /* PFAnalytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalytics.m; path = Parse/PFAnalytics.m; sourceTree = ""; }; - C21A8ADE7B5A34350D10B56CD7A8761D /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h"; sourceTree = ""; }; - C2709A1DF844E63FBEB934E9A24FAA66 /* PFBaseState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBaseState.m; path = Parse/Internal/PFBaseState.m; sourceTree = ""; }; - C2C5BFAAE603122C4F742787E40F1FA8 /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = ""; }; - C3209F7B3A0C5594C5382D2E17A02B97 /* FBSDKShareOpenGraphValueContainer+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareOpenGraphValueContainer+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h"; sourceTree = ""; }; + BF7E4DF7E707F588FF550CDC66A6F7B7 /* AFImageRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageRequestOperation.h; path = AFNetworking/AFImageRequestOperation.h; sourceTree = ""; }; + C092CD3F2AEE6BAC465A007801D8D91A /* PFUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState.h; path = Parse/Internal/User/State/PFUserState.h; sourceTree = ""; }; + C098C23FB2DF99933279373E8B3D452E /* FBSDKLoginCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginCompletion.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h; sourceTree = ""; }; + C0ACB6CAB80A7E3DC5CFFE36AC450565 /* FBSDKShareOpenGraphContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m; sourceTree = ""; }; + C0F87532434A412B133BDCA0E76634EA /* PFHTTPURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHTTPURLRequestConstructor.m; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.m; sourceTree = ""; }; + C1A7C3AA5681EC1EBFD4DD40121772C1 /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = ""; }; + C1B00FE95A9B3F0051AAD3A5D6CE141D /* PFMutableFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableFileState.m; path = Parse/Internal/File/State/PFMutableFileState.m; sourceTree = ""; }; + C26C64018F45E6E09F72163E759ED45B /* PFObject+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFObject+Subclass.h"; path = "Parse/PFObject+Subclass.h"; sourceTree = ""; }; + C2775986B8C8F3CC41C05FD3B939FF81 /* PFRelationState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState_Private.h; path = Parse/Internal/Relation/State/PFRelationState_Private.h; sourceTree = ""; }; + C2D770ED2372F2017C6D6A85DD81705C /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = ""; }; + C3212BA31250F0C8DE1BD1FAF02207C7 /* FBSDKShareOpenGraphValueContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphValueContainer.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m; sourceTree = ""; }; + C37F0ED993AA0D0D75072F2D2A6865AC /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; + C3ADC7027A54E385AA38C96D3138EFFF /* PFPinningObjectStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningObjectStore.m; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.m; sourceTree = ""; }; + C40CADC5F2DEB4D0282F02F7FDF18EF0 /* FBSDKLoginKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKLoginKit-dummy.m"; sourceTree = ""; }; + C44F364C931B164F6223FDD37734D4B3 /* PFRole.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRole.m; path = Parse/PFRole.m; sourceTree = ""; }; C45A766C3A6755202AD9BF0DD47F95E9 /* RKValueTransformers.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RKValueTransformers.xcconfig; sourceTree = ""; }; - C487CF8BD9293F62ADC3EC7ED11DF7E2 /* FBSDKSystemAccountStoreAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSystemAccountStoreAdapter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m; sourceTree = ""; }; - C4B17C271B89B911A8934903A0081DAB /* FBSDKLikeBoxBorderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxBorderView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h; sourceTree = ""; }; - C4B61A09FCB4522CC4CD9D7C2BA8A566 /* PFPushController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushController.h; path = Parse/Internal/Push/Controller/PFPushController.h; sourceTree = ""; }; - C53B22331817009F0D1E49A90BC5F35C /* FBSDKShareOpenGraphContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h; sourceTree = ""; }; - C5558E780E37E74781BB1613EF8D6F1A /* BFAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererController.h; path = Bolts/iOS/BFAppLinkReturnToRefererController.h; sourceTree = ""; }; - C565C7D7E5AC00E6AB9CDCF110BC3C25 /* FBSDKLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m; sourceTree = ""; }; + C45D1154E82FBFB1AEFB90141DBACC29 /* PFQueryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryUtilities.h; path = Parse/Internal/Query/Utilities/PFQueryUtilities.h; sourceTree = ""; }; + C45F387672BF56893F587F1601A4A671 /* PFPushChannelsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushChannelsController.m; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.m; sourceTree = ""; }; + C4F10ABEFA5CCF0EC39AA05DC7FCBE4A /* PFDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDateFormatter.h; path = Parse/Internal/PFDateFormatter.h; sourceTree = ""; }; + C4FECFD27C3DF785E2765FF781CE87C6 /* PFEncoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEncoder.m; path = Parse/Internal/PFEncoder.m; sourceTree = ""; }; C5BAEE02437FF882C669F3417F738447 /* RKRequestDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRequestDescriptor.h; path = Code/Network/RKRequestDescriptor.h; sourceTree = ""; }; - C6A1B35A988D4E5D81E613F216581696 /* PFCurrentUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentUserController.h; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.h; sourceTree = ""; }; - C6AF838FA7C570391A36438E785BD121 /* ParseModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseModule.m; path = Parse/Internal/ParseModule.m; sourceTree = ""; }; - C6D760F3CA5FB942A7E23EA61A3C62A7 /* FBSDKShareDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h; sourceTree = ""; }; - C7249D4C5D5FE59893DC804D17C271BD /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m; sourceTree = ""; }; + C5BE6155E6E796DC929232CFE0BA3938 /* PFURLSessionDataTaskDelegate_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate_Private.h; sourceTree = ""; }; + C652B9BA4AA5750AC29A27FB796AF725 /* FBSDKAccessTokenCacheV3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m; sourceTree = ""; }; + C691D2172575794DB216679D3693503D /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = ""; }; + C69E58A7811CD06105D466195B801328 /* PFAnonymousUtils_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils_Private.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousUtils_Private.h; sourceTree = ""; }; + C6F27E2022C1FBC9A8EF59AF5A0635F1 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; + C73D0298550B4AE265F9F155D23B10D7 /* PFRESTUserCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTUserCommand.m; path = Parse/Internal/Commands/PFRESTUserCommand.m; sourceTree = ""; }; + C74E4DFE39D451AE68F6CB856DEF1D8B /* PFCurrentUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentUserController.m; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.m; sourceTree = ""; }; + C771ECF49E63DA4D6AD0B964CDA4DC94 /* FBSDKLoginKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginKit.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h; sourceTree = ""; }; C7A3C431941CA5458B46FDA87ADD17E9 /* TKStateMachine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKStateMachine.h; path = Code/TKStateMachine.h; sourceTree = ""; }; - C8A64817A3F904FC394ADA0E162D3FCF /* FBSDKShareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKShareKit-dummy.m"; sourceTree = ""; }; - C8ABE6E22040D86F536BA83C9995342B /* PFRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelationState.m; path = Parse/Internal/Relation/State/PFRelationState.m; sourceTree = ""; }; - C8E979B43D80A6C9E821A1BD3B0C7F51 /* BFExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFExecutor.h; path = Bolts/Common/BFExecutor.h; sourceTree = ""; }; - C8EEE74C77FC0E8CCF6F9BF61F91F077 /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = ""; }; - C928A35FC17069C2883652CB9DFD6587 /* FBSDKLikeControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeControl.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m; sourceTree = ""; }; - C9DA1DBC1BE40D87F0CDE1566117504D /* PFURLSessionDataTaskDelegate_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate_Private.h; sourceTree = ""; }; - CA8AF7DF58F69854AA20C03B140C8802 /* PFPaymentTransactionObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPaymentTransactionObserver.m; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.m; sourceTree = ""; }; + C8A30076FFE0AE4D80EEE9B5F111E0C4 /* FBSDKAppGroupJoinDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupJoinDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h; sourceTree = ""; }; + C90D137341FF777D06387AF9304BB376 /* FBSDKShareOpenGraphAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphAction.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h; sourceTree = ""; }; + C9335D1EB92B88713E8308C849C0EDF6 /* PFObjectFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCodingLogic.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.h; sourceTree = ""; }; + C961228BEA0830266F67F826D8BD866B /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = ""; }; + CA33FED366B628BCA0A5D7DFD91E87D9 /* PFCommandRunningConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunningConstants.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.m; sourceTree = ""; }; CAAEEA7D83368AA927E7EBCBA6F4E80E /* RKPaginator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPaginator.m; path = Code/Network/RKPaginator.m; sourceTree = ""; }; - CB0A624CCA1DF78752962F81F06BF119 /* PFKeyValueCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache.h; sourceTree = ""; }; - CB2EAD42AB8183945FC7A12E3FAE1960 /* PFAnalyticsUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsUtilities.h; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.h; sourceTree = ""; }; + CB354A886C3BB7D67D39EB3F5236AB3A /* PFPaymentTransactionObserver_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver_Private.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h; sourceTree = ""; }; CB3C48DDBE655AE51D1A39695796468E /* RKResponseMapperOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKResponseMapperOperation.h; path = Code/Network/RKResponseMapperOperation.h; sourceTree = ""; }; - CB54CB2CBAE86A6D529C60250C8243A7 /* PFCurrentConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentConfigController.m; path = Parse/Internal/Config/Controller/PFCurrentConfigController.m; sourceTree = ""; }; - CBBCDC44D6533386C15445A8DA75780F /* PFCommandRunningConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunningConstants.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.m; sourceTree = ""; }; - CBCE8C9C024E2B9BFFE1FA847AB1076D /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = ""; }; + CB4A5DFDF0DD0D7EA9036EDB4D3554F2 /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = ""; }; + CB8C8762838FD01094119D687898F1B3 /* PFSessionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionUtilities.m; path = Parse/Internal/Session/Utilities/PFSessionUtilities.m; sourceTree = ""; }; CC29231A76F0E95942D3AC8EE9C06770 /* RKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMacros.h; path = Code/Support/RKMacros.h; sourceTree = ""; }; + CC2CE8BA55B6B6E6E126D87B37D05550 /* FBSDKAccessTokenCacheV3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h; sourceTree = ""; }; + CC5344A37B8F373E012354E281A66841 /* PFOfflineStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineStore.m; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m; sourceTree = ""; }; + CC65F8627E5C5856896FED7D2BB1CF7B /* FBSDKSharingContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h; sourceTree = ""; }; CC80DEFA3FC6190520C4E802B4E816FE /* RKMIMETypeSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMIMETypeSerialization.h; path = Code/Support/RKMIMETypeSerialization.h; sourceTree = ""; }; - CC83F9AD4B07940AAE2F264DD04DD1BF /* PFRESTCloudCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCloudCommand.m; path = Parse/Internal/Commands/PFRESTCloudCommand.m; sourceTree = ""; }; - CCB66A62E1727B274EBDAE6A324F1EF1 /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = ""; }; + CCBA933D3A40B5D03B01E6CC64A2A3A5 /* PFCachedQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCachedQueryController.m; path = Parse/Internal/Query/Controller/PFCachedQueryController.m; sourceTree = ""; }; + CD1576A49CCA998DA56187764ACAF229 /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = ""; }; + CD2EA7078774EF7F78C945F81FD00274 /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = ""; }; + CD8B46F21FA110AF5880D0648641BA7A /* PFObjectSubclassingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassingController.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.h; sourceTree = ""; }; + CD8DCF741100D5A960D3D87F3F11EC5B /* FBSDKShareOpenGraphObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphObject.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m; sourceTree = ""; }; CDABF5602F0E0D707DDD4224CB032D0E /* RKRoute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRoute.m; path = Code/Network/RKRoute.m; sourceTree = ""; }; - CE5437B74A760E4237FFB7AD86EA7AF5 /* PFAnonymousUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils.h; path = Parse/PFAnonymousUtils.h; sourceTree = ""; }; - CF467117B925DD3A53A0AD66F813DD90 /* PFRESTUserCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTUserCommand.h; path = Parse/Internal/Commands/PFRESTUserCommand.h; sourceTree = ""; }; - CF5556B51CED2BB029915A1874EE32A9 /* PFEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyQueue.m; path = Parse/Internal/PFEventuallyQueue.m; sourceTree = ""; }; - CF7DFB4A5A35BCE03D459F72C536D132 /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = ""; }; - D06E4D2A257CB23AD3B3C24D65250338 /* FBSDKMessengerIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessengerIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h; sourceTree = ""; }; - D13A070075F2FA180B529D107DC47AA7 /* PFPushController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushController.m; path = Parse/Internal/Push/Controller/PFPushController.m; sourceTree = ""; }; + CDB7AF2EC4C8BD16B16801E52002B702 /* libFBSDKShareKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKShareKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + CDD6D2BC7E281738DA57375BE59728C9 /* PFAnalytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics.h; path = Parse/PFAnalytics.h; sourceTree = ""; }; + CDD888F1AE46F190163FFB9C51D7BF06 /* FBSDKMessengerIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessengerIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h; sourceTree = ""; }; + CE9E97FF37E3D5E9F5A1F4E619520D56 /* PFMultiProcessFileLockController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLockController.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.h; sourceTree = ""; }; + CEC4CC0F1E5231E5AE5C1E4101E7CD5F /* PFCategoryLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCategoryLoader.h; path = Parse/Internal/PFCategoryLoader.h; sourceTree = ""; }; + CEEDE6F5E4B91DB0462629F30CE2C5D3 /* PFURLSessionDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.h; sourceTree = ""; }; + CFF2742C181ACA4B29372E268153270F /* PFInternalUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInternalUtils.h; path = Parse/Internal/PFInternalUtils.h; sourceTree = ""; }; + D069FE63005F6068C36B6B3E8C125E9D /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = ""; }; D145E83E2215C35E1D66DCFD70095EAE /* RKRouter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRouter.m; path = Code/Network/RKRouter.m; sourceTree = ""; }; - D14ECFF1D93FDFE7D398C60C541D4D42 /* PFCachedQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCachedQueryController.m; path = Parse/Internal/Query/Controller/PFCachedQueryController.m; sourceTree = ""; }; - D17108F7FF6F90BEA80F4639A3F398E4 /* Parse_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse_Private.h; path = Parse/Internal/Parse_Private.h; sourceTree = ""; }; - D20725012BA649DB28A11E8B87CB03B2 /* FBSDKShareConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareConstants.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m; sourceTree = ""; }; - D2121C834D82A31D9AC3183B2DCB31BB /* PFURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSession.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.m; sourceTree = ""; }; - D2C830B4D9FDB6DA319A8D346A942692 /* FBSDKURLConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m; sourceTree = ""; }; - D2CCB0DEA880EFF0D0EF2B11C7E41029 /* PFObjectFileCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCoder.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.m; sourceTree = ""; }; - D2FD3D5C2EE761325B9883A907C8BC4E /* FBSDKAppGroupJoinDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupJoinDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h; sourceTree = ""; }; + D155C2F3D678574A9479B645207148FB /* FBSDKAppGroupContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m; sourceTree = ""; }; + D19C9E56F232605C57E9A412AF3031FA /* FBSDKLoginUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginUtility.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m; sourceTree = ""; }; + D2C9DD7C685BBD2CC7EAB4A3433549B4 /* FBSDKShareLinkContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareLinkContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m; sourceTree = ""; }; D344D9A38E931E18FB1095D2364E21E6 /* RKDotNetDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDotNetDateFormatter.h; path = Code/Support/RKDotNetDateFormatter.h; sourceTree = ""; }; - D3C357F8599ACB541583E1B55372A148 /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = ""; }; - D3C4E0A343874015ABB97CF3BB6C0347 /* FBSDKShareOpenGraphObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphObject.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h; sourceTree = ""; }; - D3DE4E8FCBBE262C58F8AC13C7DF4FC0 /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = ""; }; + D3882165793F00E2FD03DD7A903E3AB4 /* FBSDKShareButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m; sourceTree = ""; }; + D3C4E9EF227BA506792955288087E82F /* PFRESTObjectBatchCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectBatchCommand.m; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.m; sourceTree = ""; }; + D3C67EEA3F3F6628396F657744BD378C /* PFEncoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEncoder.h; path = Parse/Internal/PFEncoder.h; sourceTree = ""; }; + D3EB8E5131AAEA8F16E17BF016FB5B61 /* PFHTTPURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPURLRequestConstructor.h; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.h; sourceTree = ""; }; + D3FDBE0B0295691A9DA68BB91774B2DF /* FBSDKBridgeAPICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPICrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h; sourceTree = ""; }; + D47B3859C74BA3AE467FE98CFA3EF2A7 /* PFRESTCloudCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCloudCommand.m; path = Parse/Internal/Commands/PFRESTCloudCommand.m; sourceTree = ""; }; D483D1D469EA00BF8839FA7029495D60 /* RKTestNotificationObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestNotificationObserver.h; path = Code/Testing/RKTestNotificationObserver.h; sourceTree = ""; }; D497D888360D61A9F64F2DBB2A1FC8F0 /* RKTestNotificationObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestNotificationObserver.m; path = Code/Testing/RKTestNotificationObserver.m; sourceTree = ""; }; - D4BBD3B141794583886966E10E9DE885 /* BFAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink.h; path = Bolts/iOS/BFAppLink.h; sourceTree = ""; }; - D4EDDE3B74C6C46CB945C40C67C4412A /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = ""; }; - D58141339BD4E1AD139F6D8757D818ED /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = ""; }; + D4A9395593F078B48F3B87B9AC890E89 /* PFNullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNullability.h; path = Parse/PFNullability.h; sourceTree = ""; }; + D4AAA8F6AD3E666763DAE1F0E91D3778 /* PFURLSessionFileDownloadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionFileDownloadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.h; sourceTree = ""; }; + D4BD0B686B0EF4B81ABCF468BE4F3F99 /* PFSQLiteDatabaseResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseResult.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.m; sourceTree = ""; }; + D4FD1E6A7772359C67DC337EEDF88556 /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m; sourceTree = ""; }; D587648C0089A8E5FF455C97FF2B368E /* RKTestHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestHelpers.m; path = Code/Testing/RKTestHelpers.m; sourceTree = ""; }; - D5CFF5109E2B6B4C6F5E6087969F25B2 /* BFExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFExecutor.m; path = Bolts/Common/BFExecutor.m; sourceTree = ""; }; - D5D5CF2EDCF3EFE196B7789A29C02031 /* PFPinningEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningEventuallyQueue.h; path = Parse/Internal/PFPinningEventuallyQueue.h; sourceTree = ""; }; - D5E9B76418458E7F379CF5FBBC3F3B16 /* BFCancellationTokenSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenSource.m; path = Bolts/Common/BFCancellationTokenSource.m; sourceTree = ""; }; - D5F1C1D5F2030DAAB3B584BA7D15297F /* PFPushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushState.m; path = Parse/Internal/Push/State/PFPushState.m; sourceTree = ""; }; - D5F4A79DAE04667AB0D76DAE48003BF2 /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m; sourceTree = ""; }; + D58E0BB2015D810A38A6E5641DCBDB8E /* FBSDKShareConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareConstants.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m; sourceTree = ""; }; D6264AE68EC2461B52D7BC087CC60C51 /* ObjectMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ObjectMapping.h; path = Code/ObjectMapping.h; sourceTree = ""; }; - D65F4C0A6ED3ABC94426B9A2AFEA2790 /* FBSDKShareVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideo.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h; sourceTree = ""; }; + D659356F1EF1F1C346376A400B5070E9 /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = ""; }; D68740C3275B619CD6272922B9616689 /* RestKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RestKit.h; path = Code/RestKit.h; sourceTree = ""; }; - D6D2578CC6CCBAA314053520BEEDFC51 /* FBSDKURLConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h; sourceTree = ""; }; - D7084EA8F2963F3F4F4C3902295FC9E8 /* FBSDKCheckmarkIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCheckmarkIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m; sourceTree = ""; }; D72FC75ED7ED1ECBB9A34AC1705CE17D /* RKDictionaryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDictionaryUtilities.m; path = Code/Support/RKDictionaryUtilities.m; sourceTree = ""; }; - D744AFD793804AF3C84822508F5A5B1F /* PFUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUser.h; path = Parse/PFUser.h; sourceTree = ""; }; - D769A22F6A1292EAFD89F93A0686D653 /* PFDefaultACLController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDefaultACLController.h; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.h; sourceTree = ""; }; - D7B4BAE18CF4FF92FDA44D8959B272B0 /* PFQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryState.m; path = Parse/Internal/Query/State/PFQueryState.m; sourceTree = ""; }; + D74C6F651D26C64847074B31212962B9 /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = ""; }; + D7C3DDABC4BC501093A232FA20368F5D /* PFAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAssert.h; path = Parse/Internal/PFAssert.h; sourceTree = ""; }; + D7F2E197DB454125A7957FE4881AD932 /* PFPurchase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchase.m; path = Parse/PFPurchase.m; sourceTree = ""; }; + D80E9A1290BCA30333F7035E22898FD4 /* BFMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent.h; path = Bolts/iOS/BFMeasurementEvent.h; sourceTree = ""; }; D87881EF697A62AD256CC2A668F12186 /* FBSDKShareKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKShareKit.xcconfig; sourceTree = ""; }; D8BDF9D0A4444BAF6AB702315EC72D13 /* Parse.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Parse.xcconfig; sourceTree = ""; }; - D95D996872847740808B245E124F33D4 /* PFCoreManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCoreManager.m; path = Parse/Internal/PFCoreManager.m; sourceTree = ""; }; - D99237E043D8D55F742E4FFCE42D91BF /* FBSDKAppGroupJoinDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupJoinDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m; sourceTree = ""; }; - D9F3737F5623A34BD5AFA78E4B1901AB /* PFFileDataStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileDataStream.m; path = Parse/Internal/File/FileDataStream/PFFileDataStream.m; sourceTree = ""; }; - DA7FDF51B3213CFC74F679CD912F8009 /* PFDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDecoder.h; path = Parse/Internal/PFDecoder.h; sourceTree = ""; }; - DB12D985E758C1B2AC5996A8F052C26D /* PFRESTObjectCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectCommand.m; path = Parse/Internal/Commands/PFRESTObjectCommand.m; sourceTree = ""; }; - DB3CBBE18B7CB09688F235F3EB9C71FD /* PFRESTFileCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTFileCommand.m; path = Parse/Internal/Commands/PFRESTFileCommand.m; sourceTree = ""; }; - DC31DCE7EACED0F72777050473D30EFC /* FBSDKLikeButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m; sourceTree = ""; }; + D8EA6434D262B562E0ABC8F28481403A /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h; sourceTree = ""; }; + D9449B7AA0958A37C738C3F3113E6F86 /* ISO8601DateFormatterValueTransformer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ISO8601DateFormatterValueTransformer-dummy.m"; sourceTree = ""; }; + D974B883607CC6537A01E19606D22B95 /* PFLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogger.h; path = Parse/Internal/PFLogger.h; sourceTree = ""; }; + D98AA728E2CAF01488250F97004A36A8 /* PFOfflineQueryLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryLogic.h; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.h; sourceTree = ""; }; + DBFFDA63A4181BD3B195487A833CECE4 /* PFProduct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProduct.h; path = Parse/PFProduct.h; sourceTree = ""; }; + DC2CCF0D50C6CF8EA37A8C6EECE1581E /* BFURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFURL.m; path = Bolts/iOS/BFURL.m; sourceTree = ""; }; DC32DADD67B93D4C8A1DC5D924364B07 /* RKMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMapping.m; path = Code/ObjectMapping/RKMapping.m; sourceTree = ""; }; - DC4F66E6A3F1DC8F241BBC37BD38824F /* PFACL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACL.m; path = Parse/PFACL.m; sourceTree = ""; }; - DCCA1D25CC0F8A31965C4458FA970C52 /* PFOperationSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOperationSet.h; path = Parse/Internal/Object/OperationSet/PFOperationSet.h; sourceTree = ""; }; - DD19C370DA2FF7DD5B14BFC2239460EC /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = ""; }; + DC48544F9CAD4D07227D206EF611973D /* BFURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL_Internal.h; path = Bolts/iOS/BFURL_Internal.h; sourceTree = ""; }; + DD1DBE77FAE408E2C2A7ED2A4C1C8A7A /* PFApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFApplication.h; path = Parse/Internal/PFApplication.h; sourceTree = ""; }; + DD24927EB5C08D76DB2607695C173E2E /* PFObjectFileCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCoder.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.h; sourceTree = ""; }; DD2F082EFF4A90CEA1BD4B18821FD489 /* RKMapperOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMapperOperation.m; path = Code/ObjectMapping/RKMapperOperation.m; sourceTree = ""; }; - DDDB9F88EE4CF34E81AA150F326D12F8 /* PFGeoPointPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPointPrivate.h; path = Parse/Internal/PFGeoPointPrivate.h; sourceTree = ""; }; - DDFFCC76652A57F8AC82219E905AF11A /* PFMutableFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableFileState.h; path = Parse/Internal/File/State/PFMutableFileState.h; sourceTree = ""; }; - DE504CDBAE4E729CE6138680BEA8131C /* PFBase64Encoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBase64Encoder.h; path = Parse/Internal/PFBase64Encoder.h; sourceTree = ""; }; - DE5E904CC7ED8533B3A17E70BFCCDB42 /* PFSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSession.m; path = Parse/PFSession.m; sourceTree = ""; }; - DE8B4CF37AFF88C9FFCC3ECBFB68A45B /* PFObjectLocalIdStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectLocalIdStore.m; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.m; sourceTree = ""; }; - DEC313363BCD979A9C39D7B1E66A2755 /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = ""; }; + DD3B394CF966217416F1237E9D4D804F /* FBSDKShareOpenGraphAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphAction.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m; sourceTree = ""; }; + DDE80DA7A434D17F0D915E284F20436A /* FBSDKAppGroupAddDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupAddDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m; sourceTree = ""; }; + DE37807E0B1639A13221C0F6E94C015F /* FBSDKGameRequestContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h; sourceTree = ""; }; DEF44C93EA8108B4B9EFC4B4644446CF /* RKConnectionTestExpectation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKConnectionTestExpectation.m; path = Code/Testing/RKConnectionTestExpectation.m; sourceTree = ""; }; - DFA8A38F2CAE4CCC62494E192CD68C97 /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = ""; }; - E01BDF8B06C7ABC8B0E2C8198B12534E /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = ""; }; - E067CA9E21A26662DA824DAC1A521DD1 /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = ""; }; - E06C7256FA983EDE2D306A89B041DEB9 /* PFDefaultACLController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDefaultACLController.m; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.m; sourceTree = ""; }; - E07CBEB86CA06BB0017BCA02C44A2757 /* FBSDKSharingContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h; sourceTree = ""; }; - E0932D59414A78A0F565507651988C6E /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m; sourceTree = ""; }; + DF42A50DA3169ABB374EFAA43DCFDE36 /* FBSDKShareDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDefines.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h; sourceTree = ""; }; + DF7C4CE6EE936098ABB3AC172D7B2FF1 /* AFImageRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageRequestOperation.m; path = AFNetworking/AFImageRequestOperation.m; sourceTree = ""; }; + DFC2DC00FAF97B8C741ADA0CE734750A /* BFExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFExecutor.h; path = Bolts/Common/BFExecutor.h; sourceTree = ""; }; + DFC853444423A2B6AFB3F150BD3A93F8 /* BFCancellationTokenSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenSource.m; path = Bolts/Common/BFCancellationTokenSource.m; sourceTree = ""; }; + DFCBF9D0B251D3EABC70AD75A30E8294 /* FBSDKSendButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSendButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h; sourceTree = ""; }; + DFEE7E72D7CE52F1A712D597A33B153C /* PFTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFTaskQueue.h; path = Parse/Internal/PFTaskQueue.h; sourceTree = ""; }; + E00DAE8196002E6DC11BB84AA2B653B0 /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m; sourceTree = ""; }; + E016C3CC11A1E2541450703DF5F4DBA9 /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = ""; }; + E060B56260BC85ECD94761E793A08F02 /* FBSDKLikeDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeDialog.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h; sourceTree = ""; }; + E09085454F042573BE0A1BCBEF8DAE7A /* PFDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDataProvider.h; path = Parse/Internal/PFDataProvider.h; sourceTree = ""; }; E0CC0033498B3D96CF358C75CCE120A9 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.release.xcconfig; sourceTree = ""; }; - E1030CCC0775734985138AF667D21E88 /* PFAsyncTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAsyncTaskQueue.h; path = Parse/Internal/PFAsyncTaskQueue.h; sourceTree = ""; }; - E10BAEA96BC88D721B89668384A854DF /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = ""; }; E11FE2BB216DD98CBF3928F8E5E9A85B /* lcl_RK.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = lcl_RK.m; path = Vendor/LibComponentLogging/Core/lcl_RK.m; sourceTree = ""; }; - E15937F78BA7C53854BA468EA624BF4A /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = ""; }; - E170DFE0763897F12B0B3762F62DFCAD /* PFOfflineQueryLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryLogic.m; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m; sourceTree = ""; }; + E1394AF99EBF307ACCE5AC895EAC2042 /* PFQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQuery.h; path = Parse/PFQuery.h; sourceTree = ""; }; + E156596C9F5FF570264078E49A4643D4 /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = AFNetworking/AFNetworkActivityIndicatorManager.h; sourceTree = ""; }; + E17F4E0596F024D9F44812A5786F7170 /* PFQueryPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryPrivate.h; path = Parse/Internal/Query/PFQueryPrivate.h; sourceTree = ""; }; + E1A63FDB8FFEBABA917E2E14E9051471 /* PFRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelationState.m; path = Parse/Internal/Relation/State/PFRelationState.m; sourceTree = ""; }; E201DE8EA287BAFA4B7303204B5FE3C9 /* RKMappingOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingOperation.m; path = Code/ObjectMapping/RKMappingOperation.m; sourceTree = ""; }; + E20B6D6E904DDB31FF4F6654458B9DE0 /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m; sourceTree = ""; }; E22F95FAB4E982B3ABA1D6CB8C422794 /* RKObjectRequestOperationSubclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectRequestOperationSubclass.h; path = Code/Network/RKObjectRequestOperationSubclass.h; sourceTree = ""; }; - E2590DB19BEB23E0CD50EA9B430C4328 /* BFMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent.h; path = Bolts/iOS/BFMeasurementEvent.h; sourceTree = ""; }; E2775131C0FDB72FDE0A1D5A4A819778 /* RKURLEncodedSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKURLEncodedSerialization.h; path = Code/Support/RKURLEncodedSerialization.h; sourceTree = ""; }; - E29A4EC1C5F11EA0A4FDAD2152F177FA /* FBSDKLoginKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginKit.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h; sourceTree = ""; }; - E2BB3CB62DEEB960D69BA58C987EF78C /* ParseManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseManager.h; path = Parse/Internal/ParseManager.h; sourceTree = ""; }; - E331A609413384712D37CBCA13A36822 /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = ""; }; - E42493F5FC02B368E66187F7D3E72719 /* PFRESTFileCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTFileCommand.h; path = Parse/Internal/Commands/PFRESTFileCommand.h; sourceTree = ""; }; + E2A3EED08BBE4EF8E35776623B221D96 /* PFURLSessionCommandRunner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.h; sourceTree = ""; }; + E305C7FF3E6F92A0B09870D8A60E8D38 /* PFPinningObjectStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningObjectStore.h; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.h; sourceTree = ""; }; + E321A3BE2B4DC782EA81A69D33894C29 /* FBSDKShareOpenGraphValueContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphValueContainer.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h; sourceTree = ""; }; + E3839692964A8570C65FDBF51FA010CE /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = ""; }; + E39DE60706FCD15CB26738B50295DCD8 /* PFFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileManager.h; path = Parse/Internal/PFFileManager.h; sourceTree = ""; }; + E3D7CAFA467CC207516594F8CA235BE1 /* FBSDKShareError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareError.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m; sourceTree = ""; }; + E42FE23DCA3EFFB8F6025F9F9A8B3497 /* Parse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse.h; path = Parse/Parse.h; sourceTree = ""; }; E4437BD232D035D19C87DFB253692F24 /* Bolts.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bolts.xcconfig; sourceTree = ""; }; - E4A2A7B215D83EE4A1A7A17F363D6C87 /* PFPushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState.h; path = Parse/Internal/Push/State/PFPushState.h; sourceTree = ""; }; - E4FFF0B95027627ED5EBB9BE910229E5 /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = ""; }; + E44E35724EFF38F735F8A1ACAD9AC6BA /* PFProduct+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFProduct+Private.h"; path = "Parse/Internal/Product/PFProduct+Private.h"; sourceTree = ""; }; + E4B0E00C3C4BDBCA61E5E8E5A4098711 /* PFQueryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryUtilities.m; path = Parse/Internal/Query/Utilities/PFQueryUtilities.m; sourceTree = ""; }; E51BB433D7AADF8C023202546330704A /* RKTestFixture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestFixture.h; path = Code/Testing/RKTestFixture.h; sourceTree = ""; }; - E541C23946CA00EF697F8FA44AB271F6 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; - E54E8701407F893752653C4221AF069C /* FBSDKTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h; sourceTree = ""; }; E574880420D8D97A424642A6B5F02579 /* RKResponseMapperOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKResponseMapperOperation.m; path = Code/Network/RKResponseMapperOperation.m; sourceTree = ""; }; - E595FE8D26A832FC9181FB8DCFDE506B /* PFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkActivityIndicatorManager.h; path = Parse/PFNetworkActivityIndicatorManager.h; sourceTree = ""; }; - E5B4019C9415D7F5E3578EB347E6428C /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = ""; }; - E6A2CBA1A14A6AA1202E7B5CCEFA3C2B /* PFRESTPushCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTPushCommand.m; path = Parse/Internal/Commands/PFRESTPushCommand.m; sourceTree = ""; }; + E6218FC4CE717BE3D2902995538A0A63 /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = ""; }; + E6525F64D2B6147E9FCBF6D10A5CB4AD /* PFPurchase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchase.h; path = Parse/PFPurchase.h; sourceTree = ""; }; + E657E2943C7D36EEAE242DB32FDDFA8D /* FBSDKLoginManagerLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLogger.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m; sourceTree = ""; }; + E67D4E4FAAA111F401888720828746B0 /* FBSDKBridgeAPICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPICrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m; sourceTree = ""; }; + E6A1DDF7D1694E9370A0A4CE320117CE /* FBSDKShareConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareConstants.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h; sourceTree = ""; }; + E6A603960FAC56B3596B29FEDBED2A1A /* PFConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfig.m; path = Parse/PFConfig.m; sourceTree = ""; }; + E6D31BB8E52455350F1E5E4F1DB197CB /* PFUserAuthenticationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationController.h; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.h; sourceTree = ""; }; + E6E72495A6EA20D898402EC82E0701BB /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = ""; }; + E6FE7D7622EC7CAC9524E96D99D05722 /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = ""; }; + E754D1AA7F49F27BDF54A28A7335AC74 /* PFThreadsafety.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFThreadsafety.m; path = Parse/Internal/ThreadSafety/PFThreadsafety.m; sourceTree = ""; }; + E7626F8EE9D02540ADF0E346CC475FD9 /* FBSDKShareDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h; sourceTree = ""; }; E7C4A5E56ABED18C3E81AB6301A8CB78 /* RKMIMETypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMIMETypes.h; path = Code/Support/RKMIMETypes.h; sourceTree = ""; }; - E7D83C6103A3717409D4E3BC0251FEE2 /* PFRESTObjectBatchCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectBatchCommand.h; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.h; sourceTree = ""; }; - E82158333A26FE08F2D24FE0960BB5B0 /* PFAnalytics_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics_Private.h; path = Parse/Internal/Analytics/PFAnalytics_Private.h; sourceTree = ""; }; + E7E88640AA3150B82CBAC9BE5E95A136 /* PFUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUser.h; path = Parse/PFUser.h; sourceTree = ""; }; + E8201C8136FA5647FA6E3D62C4EE1974 /* PFObjectFilePersistenceController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFilePersistenceController.m; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.m; sourceTree = ""; }; E85C8888E5F1BB8E85DC368D6DB18999 /* RKPropertyInspector.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyInspector.m; path = Code/ObjectMapping/RKPropertyInspector.m; sourceTree = ""; }; - E89B0E24A3183435D4E3C9EDCC51EDD1 /* PFURLSessionCommandRunner_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner_Private.h; sourceTree = ""; }; - E8F3BB2B68E1034BACF1F5A876795E78 /* PFMutablePushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutablePushState.h; path = Parse/Internal/Push/State/PFMutablePushState.h; sourceTree = ""; }; + E8E31EEB8DA53180013FB1201C82EE81 /* PFFileDataStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileDataStream.h; path = Parse/Internal/File/FileDataStream/PFFileDataStream.h; sourceTree = ""; }; E94E46525AFB5C84058140D261543E17 /* RKObjectManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectManager.m; path = Code/Network/RKObjectManager.m; sourceTree = ""; }; - EA6CB7DF499DDA0B9313150859AD14F0 /* ISO8601DateFormatterValueTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ISO8601DateFormatterValueTransformer.m; path = Code/ISO8601DateFormatterValueTransformer.m; sourceTree = ""; }; - EAE092C23A177A30D41277E3E2532CFE /* AFHTTPClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPClient.h; path = AFNetworking/AFHTTPClient.h; sourceTree = ""; }; - EAF2E74037EC3A295A7DD2A670A1D20C /* FBSDKAccessTokenCacheV3_17.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_17.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h; sourceTree = ""; }; - EB1F007AC472787A75B816C5E983D202 /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = ""; }; + E95864D7FD5998A21194F9D8966583E5 /* PFInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationController.m; path = Parse/Internal/Installation/Controller/PFInstallationController.m; sourceTree = ""; }; + E9AD71E14E72EA9FB548AA268856C2EE /* PFACL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACL.h; path = Parse/PFACL.h; sourceTree = ""; }; + EA90B11F9419C1CFB642C076EE6CCA4E /* PFMulticastDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMulticastDelegate.h; path = Parse/Internal/PFMulticastDelegate.h; sourceTree = ""; }; + EA9765B74BCB3C4EC7701224F0BF1249 /* PFURLSessionUploadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionUploadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.h; sourceTree = ""; }; + EAA3AE48267B27C576513BFE574F8AF8 /* PFFileDataStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileDataStream.m; path = Parse/Internal/File/FileDataStream/PFFileDataStream.m; sourceTree = ""; }; + EBB6883C7F57FAA6E0F4E3A4DCD0836A /* FBSDKShareKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKShareKit-Private.xcconfig"; sourceTree = ""; }; + EBB7426F9BCC68E345009243DF01C283 /* FBSDKAccessTokenCacheV3_17.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_17.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m; sourceTree = ""; }; + EBCC0954F36C8CBCF2C1BABC5BE29972 /* FBSDKAppInviteDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m; sourceTree = ""; }; + EBD6F5E77168A4A3133908261AEF1BFC /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; EC0A8BE947E2CBB52F80DE18D474CE39 /* RKManagedObjectRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKManagedObjectRequestOperation.m; path = Code/Network/RKManagedObjectRequestOperation.m; sourceTree = ""; }; - EC2DB7FD65BD1EA61BB08642939C3DDC /* RKISO8601DateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKISO8601DateFormatter.h; path = Code/RKISO8601DateFormatter.h; sourceTree = ""; }; + EC8288294A4CE8FE42A9FED3E1514725 /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = ""; }; + EC9CD4C5A5B393EB5D90DB05D6FFB6BC /* PFConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConstants.h; path = Parse/PFConstants.h; sourceTree = ""; }; + ECA1143F260DB3AEBD94D656E8DF43EB /* FBSDKLoginKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginKit+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h"; sourceTree = ""; }; ECBDBCED6B21C2F082743CDE93ECBC76 /* RKObjectManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectManager.h; path = Code/Network/RKObjectManager.h; sourceTree = ""; }; - ECFE14B9E600B66B7CAFD3D9A64F4B3D /* PFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFNetworkActivityIndicatorManager.m; path = Parse/PFNetworkActivityIndicatorManager.m; sourceTree = ""; }; + ED1A749E0B29949F6BE6DE5906C56DD6 /* PFRESTObjectBatchCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectBatchCommand.h; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.h; sourceTree = ""; }; ED23ACC2E4D25AF32F09735D7343AC88 /* RestKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RestKit-prefix.pch"; sourceTree = ""; }; - ED9EAFA1C9FBC36E305EEEA43B7A8CE6 /* AFURLConnectionOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLConnectionOperation.m; path = AFNetworking/AFURLConnectionOperation.m; sourceTree = ""; }; - EDDDD080107F9241868C257E03522C93 /* PFCategoryLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCategoryLoader.h; path = Parse/Internal/PFCategoryLoader.h; sourceTree = ""; }; - EE4A34C51200E57B9DBB1BE412048AE7 /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h; sourceTree = ""; }; - EE70C5E8CCF28AFCC633F82542872D63 /* FBSDKLikeBoxBorderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxBorderView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m; sourceTree = ""; }; - EE91C76BB85C4E576878A7495046B128 /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = ""; }; + ED8FC29E783D5AAFA886556B21AFC84E /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = ""; }; + EDF463E3926C635EC2862C35B35EF0C0 /* FBSDKGameRequestFrictionlessRecipientCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestFrictionlessRecipientCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h; sourceTree = ""; }; + EE00E564F591F731C2B1E11065E0ACF7 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + EE1FCC8E5B8DC53DA187352C0FEF6F6D /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = ""; }; + EEA9D6955C305B5F1B6C27161FE11070 /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h; sourceTree = ""; }; + EEBF3BA14A17CDD666F87ADB7FD612C9 /* PFURLSessionJSONDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionJSONDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.h; sourceTree = ""; }; EEC81F732F4810E132758A0C613E431B /* RKPaginator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPaginator.h; path = Code/Network/RKPaginator.h; sourceTree = ""; }; - EEE62E07048808E1B20ADEC99B4B70FD /* PFCommandCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache_Private.h; path = Parse/Internal/PFCommandCache_Private.h; sourceTree = ""; }; - EF3885FD8EAFFBF7986ADCB2A2DE77DF /* PFErrorUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFErrorUtilities.m; path = Parse/Internal/PFErrorUtilities.m; sourceTree = ""; }; + EEE7C4904A076EEBF17B54F44707AAB5 /* PFPushController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushController.h; path = Parse/Internal/Push/Controller/PFPushController.h; sourceTree = ""; }; + EF50F0DB0BC4C86C22F26686C14E853A /* FBSDKLoginConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginConstants.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m; sourceTree = ""; }; EF5B4118C2BC93EF32D39A9E3A70073F /* RKNSJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKNSJSONSerialization.h; path = Code/Support/RKNSJSONSerialization.h; sourceTree = ""; }; - EF76AEC2726221DE7C0236DFE4624164 /* BFDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFDefines.h; path = Bolts/Common/BFDefines.h; sourceTree = ""; }; - EF991FB054D4075F98BB9A0E7C563C58 /* BFTask+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BFTask+Private.h"; path = "Parse/Internal/BFTask+Private.h"; sourceTree = ""; }; - EFC051FCD89B2186BB961E6FB8B61530 /* PFAnalyticsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsController.h; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.h; sourceTree = ""; }; - EFDEA5FDB2DF43C329614190E12D5AC8 /* BFTask+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "BFTask+Private.m"; path = "Parse/Internal/BFTask+Private.m"; sourceTree = ""; }; - EFEED10CE7DA52BCCBBE06BCDFF31654 /* PFACLState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState_Private.h; path = Parse/Internal/ACL/State/PFACLState_Private.h; sourceTree = ""; }; - F0030B71A6DC75CE9672B5AFBC38BCF4 /* FBSDKShareLinkContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareLinkContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h; sourceTree = ""; }; + EFC389DF1344C08739BE3B0D8561FC86 /* PFURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSession.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.m; sourceTree = ""; }; F008693162E318C7C2752AD302CFB95E /* RKDictionaryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDictionaryUtilities.h; path = Code/Support/RKDictionaryUtilities.h; sourceTree = ""; }; - F00F8677E748167A500D4089850612F1 /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = ""; }; + F0211D9EDFAAA5807FCBE1B8C8F4B662 /* PFFile_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile_Private.h; path = Parse/Internal/File/PFFile_Private.h; sourceTree = ""; }; + F03034CE4131076A48731504480259EB /* FBSDKLoginCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginCompletion.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m; sourceTree = ""; }; + F04D615547733AD44304C987C2896316 /* PFOfflineObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineObjectController.m; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m; sourceTree = ""; }; + F05A809941BD13C88B6FA6CFB232C9FA /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h; sourceTree = ""; }; + F094D3053EC8059B43C8FDE85B6CC097 /* FBSDKTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m; sourceTree = ""; }; F0CB4E3EC1ACD76F2309A54B490DF091 /* TKTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKTransition.h; path = Code/TKTransition.h; sourceTree = ""; }; - F13165336A9173E2A3C4790AB7CC7975 /* AFURLConnectionOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLConnectionOperation.h; path = AFNetworking/AFURLConnectionOperation.h; sourceTree = ""; }; - F15AA0B0FAA03DD30C07E23D2030823C /* PFOfflineQueryLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryLogic.h; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.h; sourceTree = ""; }; - F21D0FB2302BFB55563A040B9162207A /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = ""; }; - F34EDF50D35D822209224F910D198B22 /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h; sourceTree = ""; }; - F3ABB736CD9D5E94B6350679B5554ED2 /* PFPinningObjectStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningObjectStore.m; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.m; sourceTree = ""; }; + F1E2800D7ABD0182A48B7D71B414FD92 /* PFObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectState.m; path = Parse/Internal/Object/State/PFObjectState.m; sourceTree = ""; }; + F216A6FBB231D294F8E752EB582540AF /* PFInstallationIdentifierStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.h; sourceTree = ""; }; + F2C4601420612A6E42D46B435019EBC8 /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFWebViewAppLinkResolver.h; path = Bolts/iOS/BFWebViewAppLinkResolver.h; sourceTree = ""; }; + F32F686BFA58B3430620EE17161144FE /* FBSDKTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h; sourceTree = ""; }; + F3DADC1F7DC40E0218DBF16280C4D6D7 /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTaskCompletionSource.m; path = Bolts/Common/BFTaskCompletionSource.m; sourceTree = ""; }; + F3E2913672AE575B7293488062F00FD0 /* PFFieldOperationDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperationDecoder.h; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.h; sourceTree = ""; }; F43593C0DC2EA028CFDED6E93DD31EBD /* RKMIMETypeSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMIMETypeSerialization.m; path = Code/Support/RKMIMETypeSerialization.m; sourceTree = ""; }; - F492164F566E8CFCD2E106F61A435A12 /* FBSDKLikeObjectType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeObjectType.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m; sourceTree = ""; }; + F467F77ECC07330116C0DD45D3349ABE /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = ""; }; + F468CD8A34AFAA3F31C0B27B7124A4FF /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = ""; }; F49F7453B2E504EC63FDF48EFAA54EEA /* ISO8601DateFormatterValueTransformer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ISO8601DateFormatterValueTransformer-prefix.pch"; sourceTree = ""; }; - F5243AD5D9D864456CBD961BC945843F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; - F5A2FEDDD4FAA9868A664F18973566D7 /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h; sourceTree = ""; }; + F51CD3717AB71F5E10A96BA8B666AACE /* PFObjectPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectPrivate.h; path = Parse/Internal/Object/PFObjectPrivate.h; sourceTree = ""; }; + F59D7CF8A402E68851985B96EE643B89 /* PFURLSessionDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.m; sourceTree = ""; }; + F5B33E74020A598273E33D945062DA71 /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = ""; }; F5BD02FE7C99C9BD2CBC566B75BB0558 /* RKValueTransformers-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RKValueTransformers-prefix.pch"; sourceTree = ""; }; F6235B81BCC7427EC393417D0676C7DD /* Network.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Network.h; path = Code/Network.h; sourceTree = ""; }; - F651120BBA44138D57BED00C2ED1EF68 /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = ""; }; - F6A9C4685A290C880CDE1428A25FAC30 /* PFURLSessionJSONDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionJSONDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m; sourceTree = ""; }; - F6D944F1DD0E0308EA2EEB932E7DD509 /* PFMulticastDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMulticastDelegate.m; path = Parse/Internal/PFMulticastDelegate.m; sourceTree = ""; }; - F73ADC2CD4C8BD33E777C07D6362654C /* FBSDKShareDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDefines.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h; sourceTree = ""; }; - F747176FC803B53FE0AC39C84633F516 /* FBSDKLoginButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginButton.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m; sourceTree = ""; }; - F86021BC8DF5012821F54BBFC611409E /* FBSDKLoginConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginConstants.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h; sourceTree = ""; }; - F94D8E2DD631C64B847B40AEA78E1AA0 /* PFRESTObjectCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectCommand.h; path = Parse/Internal/Commands/PFRESTObjectCommand.h; sourceTree = ""; }; + F65CAB845C91DF90E658BF037D025845 /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = ""; }; + F6E04668789EA254AADF60D794FE065E /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = ""; }; + F6E9E4399B6F13E900FC0A4DACCD4E15 /* Parse-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Parse-Private.xcconfig"; sourceTree = ""; }; + F719BD99BA3538CAF974528DD1BA9EAF /* PFMutableACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableACLState.m; path = Parse/Internal/ACL/State/PFMutableACLState.m; sourceTree = ""; }; + F8035743B5B17155E2E7D8224603A87B /* PFAnalytics_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics_Private.h; path = Parse/Internal/Analytics/PFAnalytics_Private.h; sourceTree = ""; }; + F82017D76300F1C06DB5151CF37A726B /* BFTask+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "BFTask+Private.m"; path = "Parse/Internal/BFTask+Private.m"; sourceTree = ""; }; + F86C3277131832CC3F71CEDEA893D4D6 /* BFAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkTarget.m; path = Bolts/iOS/BFAppLinkTarget.m; sourceTree = ""; }; + F8C129748EFBA2068A762010AD12AEAD /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = ""; }; F9A46E7E5599417031AAC9FDEE8F6162 /* RKRelationshipMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRelationshipMapping.h; path = Code/ObjectMapping/RKRelationshipMapping.h; sourceTree = ""; }; - F9D22C63BFA5923A93E8E8A351BB6819 /* PFCommandRunningConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunningConstants.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h; sourceTree = ""; }; - F9D67943D4B100689C01F858F4E29E79 /* FBSDKLikeActionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionController.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m; sourceTree = ""; }; - FA90F3562F16E440E91FA13E29FED87A /* RKValueTransformers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKValueTransformers.m; path = Code/RKValueTransformers.m; sourceTree = ""; }; - FA96D6D6ED3962673257FD4308045B34 /* PFFieldOperationDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperationDecoder.m; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.m; sourceTree = ""; }; - FAE0A480CEB462BDB4902AA2752B2A92 /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = ""; }; - FAE37FC3EE513E9BA389914278408CEE /* PFBaseState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBaseState.h; path = Parse/Internal/PFBaseState.h; sourceTree = ""; }; - FAF5EBA356BB1361627763A0C3E4FBA8 /* RKValueTransformers-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "RKValueTransformers-Private.xcconfig"; sourceTree = ""; }; - FB33D66AAC9C445AC92D82EBA294DB85 /* PFRESTSessionCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTSessionCommand.h; path = Parse/Internal/Commands/PFRESTSessionCommand.h; sourceTree = ""; }; - FBD4CF261D1D2C204727792A7FD59D0D /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = ""; }; + F9D538F104DE1F531CF0C5A8DAA4E04B /* PFObjectFilePersistenceController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFilePersistenceController.h; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.h; sourceTree = ""; }; + FA021E3B9768C5B58BAAFC752622E888 /* PFFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState.h; path = Parse/Internal/File/State/PFFileState.h; sourceTree = ""; }; + FA5ECFC11F48F3DA152D886DDA9845D1 /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = ""; }; + FA8008ED57F2E69D54C3AEA23F96BA4C /* Bolts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bolts.h; path = Bolts/Common/Bolts.h; sourceTree = ""; }; + FACB310E0E9E78B498E89B7F93B98CBF /* PFDevice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDevice.m; path = Parse/Internal/PFDevice.m; sourceTree = ""; }; + FADD5491782A7EB7B850FCCD70452A0E /* BFAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLink.m; path = Bolts/iOS/BFAppLink.m; sourceTree = ""; }; + FB4066FE555FBBC7224915F81DDF0E65 /* AFJSONRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFJSONRequestOperation.h; path = AFNetworking/AFJSONRequestOperation.h; sourceTree = ""; }; + FBC88190F20BFFBCE3E07DD0D3914E48 /* PFMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMacros.h; path = Parse/Internal/PFMacros.h; sourceTree = ""; }; + FBE8E68D5C283727E833E0BB6BFC38D2 /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = ""; }; FBEDC82BBD883110BC94F1B62D5DCF07 /* FBSDKLoginKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKLoginKit.xcconfig; sourceTree = ""; }; - FC75AD2CED5E67E206316FE8FCE7F2E8 /* FBSDKShareButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m; sourceTree = ""; }; FD329036B04DED5ACADFC2A64E1A81E3 /* RestKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RestKit-dummy.m"; sourceTree = ""; }; - FD42CC4829F51D2B45C0EDB14E79F901 /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = ""; }; - FDA229BC6CB4CA9634C3016F0381557F /* PFUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUser.m; path = Parse/PFUser.m; sourceTree = ""; }; - FDF516C0EA3056B223310D7DB2C26681 /* BFTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTask.m; path = Bolts/Common/BFTask.m; sourceTree = ""; }; - FE7E4B7205CCF39AB7DC993A7C496D35 /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = ""; }; - FF1FEA7B2F9CA31ED6080705A2EA6A8C /* PFSQLiteDatabaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseController.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.h; sourceTree = ""; }; - FF2F36415F8EDA1603770F277D605DAC /* BFAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView.h; path = Bolts/iOS/BFAppLinkReturnToRefererView.h; sourceTree = ""; }; - FF73D26B160755CAA42F2FFC56C91E1E /* PFPropertyInfo_Runtime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo_Runtime.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.m; sourceTree = ""; }; - FF8B340E1E07288B43D2125E1C95D71E /* FBSDKAccessTokenCacheV3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h; sourceTree = ""; }; - FFBF77D48AFB428DB4B14BBA73842CB2 /* PFConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConstants.h; path = Parse/PFConstants.h; sourceTree = ""; }; + FD44A295575FA6E021F34AF62C1FBB39 /* PFDefaultACLController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDefaultACLController.m; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.m; sourceTree = ""; }; + FDF7CFCA28382A3A70269FF452DAF6DF /* PFWeakValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFWeakValue.h; path = Parse/Internal/PFWeakValue.h; sourceTree = ""; }; + FE2ECE2F8FDD3511406B222FD89E37A5 /* PFObjectEstimatedData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectEstimatedData.h; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.h; sourceTree = ""; }; + FE6B1221BB48461DA615B55D5D19370E /* FBSDKSharingButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h; sourceTree = ""; }; + FEF337FAA2E9DD4BA7619CC58CCFEE27 /* FBSDKLoginManagerLoginResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLoginResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m; sourceTree = ""; }; + FF82E57178981723142A0A7CBC372284 /* PFKeyValueCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache.h; sourceTree = ""; }; + FFAEA82C3ED7F7F1480E843DE336CB0B /* Parse-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Parse-dummy.m"; sourceTree = ""; }; FFEAA8C456F1D711FDBADC3559935B4B /* RKObjectParameterization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectParameterization.h; path = Code/Network/RKObjectParameterization.h; sourceTree = ""; }; - FFF54AC023F4C0A168EAB14AF0DF8197 /* PFRelation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelation.h; path = Parse/PFRelation.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 1352CC7061D4378F37147BC6CBF04E73 /* Frameworks */ = { + 0DF38BD589367916C785FD03B2C12311 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 2D9E2BCFF95F68987970E71AF56BA281 /* Foundation.framework in Frameworks */, + 21D9580410D5D36914C1738EF4824FE5 /* CoreGraphics.framework in Frameworks */, + B93DA9F9AAAC90B3CF0D7E92863E1E1A /* Foundation.framework in Frameworks */, + 19E8ADBADA6FB3E090DE63349A607C83 /* MobileCoreServices.framework in Frameworks */, + CD078679449BAC5362C1E6A7EC58D0F6 /* Security.framework in Frameworks */, + 8AD697C3CC37B002B3D24F61B96E3774 /* SystemConfiguration.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1889,27 +1893,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 21C9FCE1B1B99AF519B601587E641B0E /* Frameworks */ = { + 1F2E35A78CF2189DDA736BBDBEE166CB /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3E997FD51BB27FF148B9D243F6804D23 /* Foundation.framework in Frameworks */, + 6B9C6C5B8151AF0FFE0EADD023048BE5 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2BE89E273AB15E7411F78FE25B729E46 /* Frameworks */ = { + 324C7B0261F2E0EEC195A44011E1B1F7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1C33F11DE5031EC30BC119B6B13B39DD /* AudioToolbox.framework in Frameworks */, - 87BB678058E30D83A780091B5FF6FED4 /* CFNetwork.framework in Frameworks */, - 442868FA6C128D7763F07031469240DE /* CoreGraphics.framework in Frameworks */, - C9151DCB3166821A4E47D74D40728411 /* CoreLocation.framework in Frameworks */, - 1419B8B6680E4CE92EECD5657926320D /* Foundation.framework in Frameworks */, - F102D7610DBFCBFE859773DD03FF8408 /* QuartzCore.framework in Frameworks */, - C7AAFF985AB1FDF2B886321D84074282 /* Security.framework in Frameworks */, - F91731D3FF9F75DEA9DF7BAF4D0EFF10 /* StoreKit.framework in Frameworks */, - 5D7131C252349A6120D8813EB747D742 /* SystemConfiguration.framework in Frameworks */, + 25E65D69B09FF84C6B52973D81385EAD /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1921,11 +1917,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 5994B286A6EC267C5FAEC812F8098E60 /* Frameworks */ = { + 630C69A258B987845E55E720F274F821 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B17929E1C88665A99445109C8F92D122 /* Foundation.framework in Frameworks */, + E8FF623864D7334389BCFE69E83CE7C0 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 672DA56A5E00AC88E14A8FCA7D0851AA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ACA1A7271082155E745CD2B20E95ECA1 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1949,39 +1953,35 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 967922C4FD7DDAAB49F89A798597354F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 9222B3822E8B00EFBEFD4AD8317E09BC /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9DDD7991E61142C3AB90621D1CB423EE /* Frameworks */ = { + 964BF1A7B9CA108D543A5A683388E78B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 70B06200154E453E2F8B8452DC00F355 /* CoreGraphics.framework in Frameworks */, - 054CF88416097C84057A6427691FE0DA /* Foundation.framework in Frameworks */, - 3127CF609B257C5A3A30B4ADC3D3A7E3 /* MobileCoreServices.framework in Frameworks */, - 6DFA75B508E7E9072ED9E07A19191C5D /* Security.framework in Frameworks */, - 401C0CBB692B03B532B658368BD5C4FB /* SystemConfiguration.framework in Frameworks */, + 8C2E0348444B4CCD4A79B4F0B7E2C680 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D1EBA5986C45E47299F610E43AEB16C4 /* Frameworks */ = { + DF734AC2570E46994A4B54AF3E2E31BF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6BE2110CA4CBCE143965789B832BA330 /* Foundation.framework in Frameworks */, + 7C4E7B55808C75F154F7070302DAD51B /* AudioToolbox.framework in Frameworks */, + A793DA615575121ABF52B15F879ED84C /* CFNetwork.framework in Frameworks */, + EB6BD184A263DBDE2AA3BE77EF737DAD /* CoreGraphics.framework in Frameworks */, + F8CA9FA9E14B2BB4F47A0DCCA484873B /* CoreLocation.framework in Frameworks */, + 83C7505E35D5F6721B5600AC74ADAA16 /* Foundation.framework in Frameworks */, + FDD7628668487CAD152512E075B03461 /* QuartzCore.framework in Frameworks */, + AFE0272593838261A88EF7BD17E68888 /* Security.framework in Frameworks */, + F3099F931E5CA8CA89707436CC765F2D /* StoreKit.framework in Frameworks */, + DC4AFBD593CD7C15E8C85BE50C2A4DA4 /* SystemConfiguration.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F048AD6BAD593C1E21D93163454F1D6F /* Frameworks */ = { + EC1C8A09858403D758096FE64EC98281 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 2E3687F32FC0947D85010A0575E153D7 /* Foundation.framework in Frameworks */, + 56CA6CD50DF1F5886E48D96A2D18186C /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2001,350 +2001,350 @@ 02F7B739B92EB301B3782F121C4BA83E /* Parse */ = { isa = PBXGroup; children = ( - EF991FB054D4075F98BB9A0E7C563C58 /* BFTask+Private.h */, - EFDEA5FDB2DF43C329614190E12D5AC8 /* BFTask+Private.m */, - 36292F1577420FAA6A00FC1B269D609D /* PFACL.h */, - DC4F66E6A3F1DC8F241BBC37BD38824F /* PFACL.m */, - 0017DC9D1BC027BEB92D7D8697443DF9 /* PFACLPrivate.h */, - 65C562DA788CB34774AC6A956A6F1D40 /* PFACLState.h */, - 675939A97597CD2EA04CD4995460A6C7 /* PFACLState.m */, - EFEED10CE7DA52BCCBBE06BCDFF31654 /* PFACLState_Private.h */, - 84F69195C66DCE1ED23AFBCC251BA4C3 /* PFAlertView.h */, - 5F0CAB54CFC8BCC345F4138A1EC4D771 /* PFAlertView.m */, - B8C98D684B355E8344D062BD7BF8315F /* PFAnalytics.h */, - C2050A5F83DE9760D514859F3A7AC930 /* PFAnalytics.m */, - EFC051FCD89B2186BB961E6FB8B61530 /* PFAnalyticsController.h */, - 335CD23D95285D1C44A95A3A178AAEF8 /* PFAnalyticsController.m */, - CB2EAD42AB8183945FC7A12E3FAE1960 /* PFAnalyticsUtilities.h */, - 5CE8D7CE43C005885F4A5981957F20A1 /* PFAnalyticsUtilities.m */, - E82158333A26FE08F2D24FE0960BB5B0 /* PFAnalytics_Private.h */, - 35D4DD0CA2C38FD64FC4C4C5AC5AA6EF /* PFAnonymousAuthenticationProvider.h */, - 63853C304B3512C921051F6F4C1AA1D8 /* PFAnonymousAuthenticationProvider.m */, - CE5437B74A760E4237FFB7AD86EA7AF5 /* PFAnonymousUtils.h */, - BF4B15119AA437DFDE6F525A227EEEA5 /* PFAnonymousUtils.m */, - 12F1636D729AD4B6DCCEF11891F28113 /* PFAnonymousUtils_Private.h */, - A513E815CB0531AC54B80FD774351B67 /* PFApplication.h */, - 9B7DE1AA020492D010862FA4F2FBC7C6 /* PFApplication.m */, - BB0CA4DECDBC711B22322A480B4D2DB0 /* PFAssert.h */, - E1030CCC0775734985138AF667D21E88 /* PFAsyncTaskQueue.h */, - 45870028D12B4C716DCD60DD091B5320 /* PFAsyncTaskQueue.m */, - DE504CDBAE4E729CE6138680BEA8131C /* PFBase64Encoder.h */, - 34395EA09EF6FAFFB300C19081748EEE /* PFBase64Encoder.m */, - FAE37FC3EE513E9BA389914278408CEE /* PFBaseState.h */, - C2709A1DF844E63FBEB934E9A24FAA66 /* PFBaseState.m */, - 118801D377E51EA29C240E0C19C227D2 /* PFCachedQueryController.h */, - D14ECFF1D93FDFE7D398C60C541D4D42 /* PFCachedQueryController.m */, - EDDDD080107F9241868C257E03522C93 /* PFCategoryLoader.h */, - A08562E12462CC984D8E3FDD78C62842 /* PFCategoryLoader.m */, - A2F1242F1927A230F84F0CBB923D800D /* PFCloud.h */, - 27E46D6B718D04CD81F500D08BDCA779 /* PFCloud.m */, - 33244990175A48516182AFDCEDA52E66 /* PFCloudCodeController.h */, - 1EE0F82547915413E8FA3F4BD68D24DD /* PFCloudCodeController.m */, - 176FB6F42987293FB1E182C230B96F21 /* PFCommandCache.h */, - 6C32A41D38BC842721FE9A96A699B1AD /* PFCommandCache.m */, - EEE62E07048808E1B20ADEC99B4B70FD /* PFCommandCache_Private.h */, - 9A7CE6F0005C413065B0AE390477019B /* PFCommandResult.h */, - 129FC7A2DDACFE1328825F6A865367F5 /* PFCommandResult.m */, - 0BC26D7366B9BCFCED00BA2443EC3F02 /* PFCommandRunning.h */, - 6CB8F4A546D9EAEA058287BFFA939C49 /* PFCommandRunning.m */, - F9D22C63BFA5923A93E8E8A351BB6819 /* PFCommandRunningConstants.h */, - CBBCDC44D6533386C15445A8DA75780F /* PFCommandRunningConstants.m */, - 8F21EA2F4A5DDD76A519682036295D1A /* PFCommandURLRequestConstructor.h */, - 1BC8CA549338879E1C908751DD3FD1C0 /* PFCommandURLRequestConstructor.m */, - 5F06181DC24313ECF2DBF2D575D36DC9 /* PFConfig.h */, - 6DBF2FEDE564A16DD0584A1A4B48DB5E /* PFConfig.m */, - 237D0660F2210DBDAA12CCD66B659E6C /* PFConfigController.h */, - 65EE60D7B2AE8D7AF7FC37A1DED26D53 /* PFConfigController.m */, - 0F1C624B7EAFBBBECE836A2F4331DB5A /* PFConfig_Private.h */, - FFBF77D48AFB428DB4B14BBA73842CB2 /* PFConstants.h */, - 7CB667B15CA6726CE1EA77BBAC4BC7FD /* PFConstants.m */, - AB09AD9EF87210D905F74E1C8DFF532C /* PFCoreDataProvider.h */, - 7C807E842A64AA6E448D999BD0EA2744 /* PFCoreManager.h */, - D95D996872847740808B245E124F33D4 /* PFCoreManager.m */, - 6A0306DBED132EEB7F48CCF5885EADEB /* PFCurrentConfigController.h */, - CB54CB2CBAE86A6D529C60250C8243A7 /* PFCurrentConfigController.m */, - A8F0EEC1700298FC5555BA0A53F82E9D /* PFCurrentInstallationController.h */, - 748E23C1428DC283BAB8E03D0CE9A770 /* PFCurrentInstallationController.m */, - 48FB82823746BF27BE7130F2353BC212 /* PFCurrentObjectControlling.h */, - C6A1B35A988D4E5D81E613F216581696 /* PFCurrentUserController.h */, - 64585A3E416254970223EB883C168C06 /* PFCurrentUserController.m */, - 7A7B8336A363D3DD83ED3A4E4BDB5F0E /* PFDataProvider.h */, - 2B4DDE724F0C79DF04632181A3641990 /* PFDateFormatter.h */, - 6F103B2A584D088B481C2F591B22CB95 /* PFDateFormatter.m */, - DA7FDF51B3213CFC74F679CD912F8009 /* PFDecoder.h */, - B3FCEE0AD84EC6A5CA5478A717BEBA01 /* PFDecoder.m */, - D769A22F6A1292EAFD89F93A0686D653 /* PFDefaultACLController.h */, - E06C7256FA983EDE2D306A89B041DEB9 /* PFDefaultACLController.m */, - 3911B9D2BBD5CBF1337C009F5F541534 /* PFDevice.h */, - C061A6821D5496664B815D95E9686638 /* PFDevice.m */, - 7CC8DE7490D76AE8614531D09B7CFA9D /* PFEncoder.h */, - 7BEB822204CBB8DAC8FF4C04AEFCF729 /* PFEncoder.m */, - 8252E3628FCD0DD24332FF33C10A559A /* PFErrorUtilities.h */, - EF3885FD8EAFFBF7986ADCB2A2DE77DF /* PFErrorUtilities.m */, - 55B85002DD908349F1000F7996455DE1 /* PFEventuallyPin.h */, - 07B7B00924E5C1CE262E21FBE11F0636 /* PFEventuallyPin.m */, - ADD502BDCA2209045FB7EE614931BD10 /* PFEventuallyQueue.h */, - CF5556B51CED2BB029915A1874EE32A9 /* PFEventuallyQueue.m */, - 9ABF154F3CA9CA7655A27F36B3AFD46A /* PFEventuallyQueue_Private.h */, - 51E4B8ABE7430971B5249A46A558AD57 /* PFFieldOperation.h */, - 26A65996250E9A6E0A45799C5C80A4D6 /* PFFieldOperation.m */, - 8E58CBB93F5E241E8F3C398FB06283B5 /* PFFieldOperationDecoder.h */, - FA96D6D6ED3962673257FD4308045B34 /* PFFieldOperationDecoder.m */, - 2DE04FB62AD4572A1EF2E388614A2906 /* PFFile.h */, - 927F616936E0C7308D11300E5B788429 /* PFFile.m */, - 8CB9E435A8D7599B6B0049E6AFE5304E /* PFFileController.h */, - 9C2DBEA1B558F22849ADDB4522563836 /* PFFileController.m */, - 864FC7E084B3C08400F30878D1F110FE /* PFFileDataStream.h */, - D9F3737F5623A34BD5AFA78E4B1901AB /* PFFileDataStream.m */, - 67108DAD07BBED97E0992E85B0D42C85 /* PFFileManager.h */, - 26648E7CE5BE1B08B80D3B2DAF2A53C7 /* PFFileManager.m */, - 4C105E35C96EB4B380048F9D08BEED1A /* PFFileStagingController.h */, - 4B3DCF9225B393FBEC5AF6CCD9267797 /* PFFileStagingController.m */, - 4258F79C649680EAAA4724050C5400A2 /* PFFileState.h */, - 2DD054F75FE35DC95593292D3F5E3384 /* PFFileState.m */, - 4E4FA331249E6517075CC9318DC72A95 /* PFFileState_Private.h */, - 090D1B6F36F0C028C8CB3219A3BEF8C2 /* PFFile_Private.h */, - 2B10539AD7B65940ECDF70BE96FD7FE9 /* PFGeoPoint.h */, - 121F69A49C07670028BD2BB1285A2CE9 /* PFGeoPoint.m */, - DDDB9F88EE4CF34E81AA150F326D12F8 /* PFGeoPointPrivate.h */, - 13FF6F02AD00C0AE6A8450F567534E23 /* PFHTTPRequest.h */, - BDD575E014B1E668BA1B9894C948067E /* PFHTTPURLRequestConstructor.h */, - 8438C8930C259D5374088068EDEF11A2 /* PFHTTPURLRequestConstructor.m */, - 39AE3319F220425568181E51340F50AE /* PFHash.h */, - 52728CC48A8F9EFF86FD0353377E776D /* PFHash.m */, - 1A982F733776ECB9F974B94BB7AA8825 /* PFInstallation.h */, - 542D17E28458EBE4D318648EEB3B381B /* PFInstallation.m */, - 27B54F6FA7D889D22C88195CA1B1EA1E /* PFInstallationConstants.h */, - 18FD24EF1379B71A3998D456EAF6CE07 /* PFInstallationConstants.m */, - 608429EE6E38CCBC432367E7CB93B400 /* PFInstallationController.h */, - 3FF60E0CE99104F46FC615B3C7403E91 /* PFInstallationController.m */, - 279B027B17D8D0512BA90F26313978F2 /* PFInstallationIdentifierStore.h */, - 83C71B61CCF71858F87CFEBB94CFFB11 /* PFInstallationIdentifierStore.m */, - 12090BC886A58C9962169A136F7BBD2A /* PFInstallationIdentifierStore_Private.h */, - 3268179096664214C41900456AEC9D52 /* PFInstallationPrivate.h */, - 6983D73EF0F3315F55A0E4A3B5CDB1CA /* PFInternalUtils.h */, - 11E9E6138AF7E67248A1C931ACA660C3 /* PFInternalUtils.m */, - 0C10D8C3B24FB7B0FC1A118A6F1B04FB /* PFJSONSerialization.h */, - 3E6A5B35F3A36DB58FE56540BA6EEDBE /* PFJSONSerialization.m */, - CB0A624CCA1DF78752962F81F06BF119 /* PFKeyValueCache.h */, - 5B5B3E3A409593357C8EDDEDDC0651EA /* PFKeyValueCache.m */, - 6532B39D03DA6402CDE0AF5FAA88CB85 /* PFKeyValueCache_Private.h */, - 177385813576F961AC0390A29802236F /* PFKeychainStore.h */, - 9DF590EFC23393E18AB1CB35CBED4270 /* PFKeychainStore.m */, - 02577CE0CCF20FCB28AE72A1BA70963E /* PFLocationManager.h */, - 03367350D97367D351BF7432EEB86476 /* PFLocationManager.m */, - 6370C00129F042A303CF8C41BCC8048F /* PFLogger.h */, - 895926AE9851CE1F765F43CBEEDBAFBC /* PFLogger.m */, - 423474460E489D78FEE63988A287BF8A /* PFLogging.h */, - C139C86AEBB76931A158BC183F46D15F /* PFMacros.h */, - 06CE7699540EF590425A414A8CB424CE /* PFMultiProcessFileLock.h */, - 21B3BED0A995DF74C8CE5AFBA1C4F804 /* PFMultiProcessFileLock.m */, - 7D77C3FB04FA7AD4241A39452337BF48 /* PFMultiProcessFileLockController.h */, - 7E3ED96EE4D0B9F695BE889B00DE6407 /* PFMultiProcessFileLockController.m */, - 84D78F45D0B07841FAAA5A3283859049 /* PFMulticastDelegate.h */, - F6D944F1DD0E0308EA2EEB932E7DD509 /* PFMulticastDelegate.m */, - 2D63F2855FC61EC1E5A671306404454E /* PFMutableACLState.h */, - A6C3BBB9984F7D2959A0E80137315CF3 /* PFMutableACLState.m */, - DDFFCC76652A57F8AC82219E905AF11A /* PFMutableFileState.h */, - 5F55A6C36C32F11B3417387E0AE06AB1 /* PFMutableFileState.m */, - 0DB2691909F8F7F08DD7D43B4054114B /* PFMutableObjectState.h */, - 0E3D6E7602874F770FF747226169660D /* PFMutableObjectState.m */, - E8F3BB2B68E1034BACF1F5A876795E78 /* PFMutablePushState.h */, - 3BA13D9D4803FA88A8E6FC6E687D0706 /* PFMutablePushState.m */, - 73E78AAF48CC66F5329D231011EC9F0E /* PFMutableQueryState.h */, - 986A0B2FB090467DD63D523D111D637B /* PFMutableQueryState.m */, - A2DB5E0FF2D801AE5355483A207C2316 /* PFMutableRelationState.h */, - BDDDC367C4FFD9B99B16C912DD808CBE /* PFMutableRelationState.m */, - C1DF7803D01DBA25AC3A304B97A1450B /* PFMutableUserState.h */, - 64E66272745DD74DB658E76BF786B334 /* PFMutableUserState.m */, - E595FE8D26A832FC9181FB8DCFDE506B /* PFNetworkActivityIndicatorManager.h */, - ECFE14B9E600B66B7CAFD3D9A64F4B3D /* PFNetworkActivityIndicatorManager.m */, - 93A85BABE61F3728712E0E5208270B19 /* PFNetworkCommand.h */, - 9D9010B3F716FD1490351E8CB8BB8840 /* PFNullability.h */, - 59AA32CF592A1CE163B2F901B0892AD8 /* PFObject.h */, - 5F0A3A60E696009D78F7AD078F9E343C /* PFObject.m */, - 3B538D8071AB6432B658069378DCA381 /* PFObject+Subclass.h */, - 5D414278778C63DB1AB1454092428F09 /* PFObjectBatchController.h */, - 4116573287BF306C8EC05DBF93BD549B /* PFObjectBatchController.m */, - A789217CA6DED8D71FBD896F412AD6A4 /* PFObjectConstants.h */, - 14DC7569B23924F725356C7D875B9264 /* PFObjectConstants.m */, - 00923F2734FCE8DC39F906E40B67C73C /* PFObjectController.h */, - 2FC310BBD6C8CF36F6B10AEF4AE850E3 /* PFObjectController.m */, - A3D1CC8FD8C924BEC03EAE7B7D1A957B /* PFObjectController_Private.h */, - B9A15492EE8BDE4E1840F2F29AA9B3A5 /* PFObjectControlling.h */, - 4EB0B04EC3F753FD50885C2850A18879 /* PFObjectEstimatedData.h */, - 76138EE2803A9EEC58C7D5AB7744121F /* PFObjectEstimatedData.m */, - 5EB0814787ECF1B4820F7A3680530AC3 /* PFObjectFileCoder.h */, - D2CCB0DEA880EFF0D0EF2B11C7E41029 /* PFObjectFileCoder.m */, - 76A196B0C50AE07AE79DC05159C2DF21 /* PFObjectFileCodingLogic.h */, - AF18B2AD10D7C8A2EBA61B5AB51D00BD /* PFObjectFileCodingLogic.m */, - 0E78B233EDC284D3081B128801711498 /* PFObjectFilePersistenceController.h */, - 8998D38349136ED287AD6B1F81B2A2C3 /* PFObjectFilePersistenceController.m */, - BFEEFBE1C37274DCC4828D82311AF40C /* PFObjectLocalIdStore.h */, - DE8B4CF37AFF88C9FFCC3ECBFB68A45B /* PFObjectLocalIdStore.m */, - 7B450C5571097E288C9CFF740CE3FA5F /* PFObjectPrivate.h */, - AEFB5A16335CA052F7F8EF7BD6899979 /* PFObjectState.h */, - 7CF42D72A1AF3A7182B9021C56CAF888 /* PFObjectState.m */, - 1D3AB2BDF8EB2BCD1EDB0AE62B5E7FE1 /* PFObjectState_Private.h */, - 78ED1DE48AC6FAA521E9D1B0A15B2F0E /* PFObjectSubclassInfo.h */, - 3810817360404E4967AF028144ECC497 /* PFObjectSubclassInfo.m */, - 0D6D55B44BD8ADC5AE8F8AC715416614 /* PFObjectSubclassingController.h */, - 3AE7D5E655DFEA88C846CA2F49FD7F27 /* PFObjectSubclassingController.m */, - A07FB85A098FAF188DB71104131A46B2 /* PFObjectUtilities.h */, - 4E3B7FA2A6E0A7ED2742EE5D84DB12A8 /* PFObjectUtilities.m */, - 50352378D38EB15E7B7D74FD48D20236 /* PFOfflineObjectController.h */, - 4B9DBF11D74F42EAFF80AF44ABE2B00E /* PFOfflineObjectController.m */, - 41D4AFB79D025DDA3EF311ED8B830DC9 /* PFOfflineQueryController.h */, - 735762C7D17E4364E90ADAFD2E9C139A /* PFOfflineQueryController.m */, - F15AA0B0FAA03DD30C07E23D2030823C /* PFOfflineQueryLogic.h */, - E170DFE0763897F12B0B3762F62DFCAD /* PFOfflineQueryLogic.m */, - 33B37F8486EF0E3980BE534DE830918D /* PFOfflineStore.h */, - 0B6F6FC45E0A6A809CFB5D64AB572F12 /* PFOfflineStore.m */, - DCCA1D25CC0F8A31965C4458FA970C52 /* PFOperationSet.h */, - 80BA04F02821688944482E0FB8D4D623 /* PFOperationSet.m */, - B83DA40998833B6F48A316FA1BA26DF0 /* PFPaymentTransactionObserver.h */, - CA8AF7DF58F69854AA20C03B140C8802 /* PFPaymentTransactionObserver.m */, - 6949E72AFCB7848487C6B092E8E7CC63 /* PFPaymentTransactionObserver_Private.h */, - 5A69674A69ED07E630171FC8E7DE679B /* PFPin.h */, - 271F7EB07DABBEBBC72C435841D5B7B9 /* PFPin.m */, - D5D5CF2EDCF3EFE196B7789A29C02031 /* PFPinningEventuallyQueue.h */, - 512C3E738619CA90805009D1B56BFDE7 /* PFPinningEventuallyQueue.m */, - A8B7D4881DB5E38BB4A3D779E6BB690D /* PFPinningObjectStore.h */, - F3ABB736CD9D5E94B6350679B5554ED2 /* PFPinningObjectStore.m */, - 8E23F80B85568CE234F07C36444A8868 /* PFProduct.h */, - 4C13CE56C415F93B1A3921AB6358B990 /* PFProduct.m */, - A8FE4F334B2A94F5AC2AA3FBAF7627F8 /* PFProduct+Private.h */, - AF8EEF265F3D9C4630F4ACCFBA1A315F /* PFProductsRequestHandler.h */, - 1B176B4F560C96F25001CAAEF4C24496 /* PFProductsRequestHandler.m */, - 9DB137E8A7C92A13BD6EB1FE46FAD717 /* PFPropertyInfo.h */, - 2AFF4BBCD87A80EBBD6ABEB24467DD92 /* PFPropertyInfo.m */, - 83ECAB9F08AFED3BB4204FD83415518B /* PFPropertyInfo_Private.h */, - 2EEFB0F3823FCEF4E5F3012C82EF7AB2 /* PFPropertyInfo_Runtime.h */, - FF73D26B160755CAA42F2FFC56C91E1E /* PFPropertyInfo_Runtime.m */, - 6A78ADE0C1383A85403BCEAA01789B6C /* PFPurchase.h */, - 0861457C7F36148ED273E55B6BD5AB36 /* PFPurchase.m */, - 20B30A30703B653252AC6D15C630DA1D /* PFPurchaseController.h */, - 9C73B2D9D4B827BC0A14F34532E43F41 /* PFPurchaseController.m */, - 40739D148D4DAE664411F3F2DBE4D3F8 /* PFPush.h */, - 4F6AC6F0CC343C3396887A99F63C9782 /* PFPush.m */, - 17453FC905983BE633680D64EBDF6BF7 /* PFPushChannelsController.h */, - 1C1DC34229B831B07F4F2C955050094A /* PFPushChannelsController.m */, - C4B61A09FCB4522CC4CD9D7C2BA8A566 /* PFPushController.h */, - D13A070075F2FA180B529D107DC47AA7 /* PFPushController.m */, - 936E53085AB59399AE3E6F0458D49941 /* PFPushManager.h */, - 3A0F3D060245CFF4C9AD4E4E4B1FE443 /* PFPushManager.m */, - BAD0E25E939779D3CB767BDACE17F6F7 /* PFPushPrivate.h */, - E4A2A7B215D83EE4A1A7A17F363D6C87 /* PFPushState.h */, - D5F1C1D5F2030DAAB3B584BA7D15297F /* PFPushState.m */, - 66AE3952E127CEAA503A87FD111FCBEA /* PFPushState_Private.h */, - 072E4E053796CCB0B198E0D81722FD94 /* PFPushUtilities.h */, - 6775409B0E8C0788D2E094C7C5218464 /* PFPushUtilities.m */, - 94EC2DDBDD9F074B0353114A4386A277 /* PFQuery.h */, - 9A4611534D2F6FE37840471AE6EE6B04 /* PFQuery.m */, - 2850C6A23236DBC93BCD286061735858 /* PFQueryController.h */, - 6E3986BD59BF447A1F15BD4527B7D366 /* PFQueryController.m */, - 9CC527AF2B9F34C2E793791D4F3AE0A4 /* PFQueryPrivate.h */, - BD1C10F7430E7917BD4A2D320618E8FE /* PFQueryState.h */, - D7B4BAE18CF4FF92FDA44D8959B272B0 /* PFQueryState.m */, - 6802793E8C624630B319D30FBB7BE7A2 /* PFQueryState_Private.h */, - B996498C593C09462CB17300BB0EA209 /* PFQueryUtilities.h */, - B4A4BC05632F91AFEF2CA8594E359431 /* PFQueryUtilities.m */, - B5844358C456A94A62A07CB206B23CB9 /* PFRESTAnalyticsCommand.h */, - 9502680C2A5812E3B95B583AB378FCA2 /* PFRESTAnalyticsCommand.m */, - A31F406B4BFF1949AF98275105F6457A /* PFRESTCloudCommand.h */, - CC83F9AD4B07940AAE2F264DD04DD1BF /* PFRESTCloudCommand.m */, - ADBBD204C9399AB147FC3FB9386FBA68 /* PFRESTCommand.h */, - B7B64451F8A6E1AC2BADE39B3C1CABF8 /* PFRESTCommand.m */, - 885480E76DF09EE4E69F631228FF4859 /* PFRESTCommand_Private.h */, - 7176C54BE83AD8B924C0239573D8C14D /* PFRESTConfigCommand.h */, - 5D523D243E8C98CFFB31356A63463C00 /* PFRESTConfigCommand.m */, - E42493F5FC02B368E66187F7D3E72719 /* PFRESTFileCommand.h */, - DB3CBBE18B7CB09688F235F3EB9C71FD /* PFRESTFileCommand.m */, - E7D83C6103A3717409D4E3BC0251FEE2 /* PFRESTObjectBatchCommand.h */, - 04C0F1EBAB58CF7749671D83B4E420E1 /* PFRESTObjectBatchCommand.m */, - F94D8E2DD631C64B847B40AEA78E1AA0 /* PFRESTObjectCommand.h */, - DB12D985E758C1B2AC5996A8F052C26D /* PFRESTObjectCommand.m */, - 1CB2A1FCA55FB8C6D0C65EF34A7E0C1A /* PFRESTPushCommand.h */, - E6A2CBA1A14A6AA1202E7B5CCEFA3C2B /* PFRESTPushCommand.m */, - 03C41F440C6257C38CBA6D08B490B043 /* PFRESTQueryCommand.h */, - 3D2D7ECC712E5A988D37CECB9069F554 /* PFRESTQueryCommand.m */, - FB33D66AAC9C445AC92D82EBA294DB85 /* PFRESTSessionCommand.h */, - 66C2AD35A6E51D88EA4ECC24C43ABA8C /* PFRESTSessionCommand.m */, - CF467117B925DD3A53A0AD66F813DD90 /* PFRESTUserCommand.h */, - B7D225D38EBD061B9B317B5F017A8DB8 /* PFRESTUserCommand.m */, - 6277470164DD2F4D1FC49886CF94D214 /* PFReachability.h */, - 73923DB118610C08A35942208D9A3213 /* PFReachability.m */, - FFF54AC023F4C0A168EAB14AF0DF8197 /* PFRelation.h */, - 17EBDD0D3F6CA772ACD223D47BC6606F /* PFRelation.m */, - 0830AA4DD7D7479876C01AF8CAC79CE3 /* PFRelationPrivate.h */, - 04FFB1F6F919106E7BC4541DF614C595 /* PFRelationState.h */, - C8ABE6E22040D86F536BA83C9995342B /* PFRelationState.m */, - 6A193B521725B41DCBB47C98E8384558 /* PFRelationState_Private.h */, - 828C7F88A0E2BCBEB7B6A32EE8D36F4B /* PFRole.h */, - 155D2AB8BF53B4A09062475713E1C814 /* PFRole.m */, - 02F8999A03E5DEA16BE168121A32E180 /* PFSQLiteDatabase.h */, - 38A77616F3D6A593F41C5A9E9C1A53EF /* PFSQLiteDatabase.m */, - FF1FEA7B2F9CA31ED6080705A2EA6A8C /* PFSQLiteDatabaseController.h */, - 5BD931B78D3EAD28BF5F58F187AEABB9 /* PFSQLiteDatabaseController.m */, - A194EB7C47C1754479482D96E62282D1 /* PFSQLiteDatabaseResult.h */, - 653FCEE976AC25D86C5BD4646F8893B3 /* PFSQLiteDatabaseResult.m */, - 2D51A7F9937E1B2641CDCF758F76D7BB /* PFSQLiteDatabase_Private.h */, - BD31E37E459C5578892A42ACCD8A7C99 /* PFSQLiteStatement.h */, - 1E2E9BC6F467A47EC23C62B07767BBD1 /* PFSQLiteStatement.m */, - 92093FA98E5C9EFD88FDF61A6A4E6451 /* PFSession.h */, - DE5E904CC7ED8533B3A17E70BFCCDB42 /* PFSession.m */, - 8F6F5C52DD8416B5F436BA714F2292F6 /* PFSessionController.h */, - 99BAAC5484715BACEF4A330F55A4DCA0 /* PFSessionController.m */, - B74DFFD00FD194924436581B996AF728 /* PFSessionUtilities.h */, - A87CDFB3EFD9FF97386971977129FF4F /* PFSessionUtilities.m */, - 283697319377A707827BA6D72CD7F2B7 /* PFSession_Private.h */, - AA8507DB72E8E2555EB649E141F80B46 /* PFSubclassing.h */, - AD7E73D7FC8878A9DBB9C6C91A6EF948 /* PFTaskQueue.h */, - 08FE1B46AC0005B96FC3513ECA03CF73 /* PFTaskQueue.m */, - 3A43F656D15828E22D2934C2706AC1BF /* PFThreadsafety.h */, - 57C4523433B4764C517C9034002FD449 /* PFThreadsafety.m */, - 260ACD6713EAF6AF8913E567E5D000B1 /* PFURLConstructor.h */, - A5247A1DF4C0D6237EA1C24BBC7A2C7D /* PFURLConstructor.m */, - B64334E646B39ABAFB0CC58791A45045 /* PFURLSession.h */, - D2121C834D82A31D9AC3183B2DCB31BB /* PFURLSession.m */, - 73D64DAEAFFF3B4456A0ECB82E2D4CA6 /* PFURLSessionCommandRunner.h */, - 5DB20E84DFDB8DA61BA09324BEFBFF7C /* PFURLSessionCommandRunner.m */, - E89B0E24A3183435D4E3C9EDCC51EDD1 /* PFURLSessionCommandRunner_Private.h */, - 0E4597D072E258E34336B3F35C0F419D /* PFURLSessionDataTaskDelegate.h */, - 3295D89852F84111A5FF8AB168AD2F73 /* PFURLSessionDataTaskDelegate.m */, - C9DA1DBC1BE40D87F0CDE1566117504D /* PFURLSessionDataTaskDelegate_Private.h */, - 045C613BE82C1C475C7BD0F490B49AAE /* PFURLSessionFileDownloadTaskDelegate.h */, - 5B5452F12D849665274EB43110F07EE1 /* PFURLSessionFileDownloadTaskDelegate.m */, - 82DAD225DA2EF99D509E1DCD251CF1E0 /* PFURLSessionJSONDataTaskDelegate.h */, - F6A9C4685A290C880CDE1428A25FAC30 /* PFURLSessionJSONDataTaskDelegate.m */, - BD986CE8B13B8A0C1F133579BB44D141 /* PFURLSessionUploadTaskDelegate.h */, - A5E5E8ED6BA6053BE27E35F8E7B4BEEE /* PFURLSessionUploadTaskDelegate.m */, - 9CF2D6AC00B5B6213CA5BA66D3473AF9 /* PFURLSession_Private.h */, - D744AFD793804AF3C84822508F5A5B1F /* PFUser.h */, - FDA229BC6CB4CA9634C3016F0381557F /* PFUser.m */, - 5325291642047AF9E650B7590ACC6254 /* PFUserAuthenticationController.h */, - 00BEC727AA03A29C964A4BB55F65EC55 /* PFUserAuthenticationController.m */, - 046383C54AB907710018AAD4CBD3C3E8 /* PFUserAuthenticationDelegate.h */, - 9A18F7AE2E1FACC4C6227EFE5C4B86A4 /* PFUserConstants.h */, - 857A31726A217BC7AAB96D91A7951102 /* PFUserConstants.m */, - 25258821C0218CE36A9415CFB0D9F151 /* PFUserController.h */, - 0050807933AECE8D25A707F975203C5E /* PFUserController.m */, - 776CD45C316A4D526A9482D3D6C0F72C /* PFUserFileCodingLogic.h */, - 8A96182B63D95AA7512F0B4BF891B823 /* PFUserFileCodingLogic.m */, - 9B6B535332BF062ED196F088A04E6A5C /* PFUserPrivate.h */, - 00362EC9E1B6EFC1EED72CCE1F5C6C63 /* PFUserState.h */, - 973BCDCA8F5D929A3B0146540D22266B /* PFUserState.m */, - 828E3502653848562DD0814140A92CCF /* PFUserState_Private.h */, - 763AC253EC0FD55889EFD9499486FE4D /* PFWeakValue.h */, - A10620A1377EB7153ECCFC2F048B5505 /* PFWeakValue.m */, - 942A952E1E39A725636E8BEF6FDDA9F9 /* Parse.h */, - 430C3FA8EA2C3E2BB22ACBE65DA6AC89 /* Parse.m */, - ACE0AE2BDDDC07FCC86BAD0AD53C4E89 /* ParseInternal.h */, - E2BB3CB62DEEB960D69BA58C987EF78C /* ParseManager.h */, - 09458C192035B62F6C206BA8051E7C08 /* ParseManager.m */, - 392B81F3F69ACC5FDB7A16EFD49EC5CC /* ParseModule.h */, - C6AF838FA7C570391A36438E785BD121 /* ParseModule.m */, - D17108F7FF6F90BEA80F4639A3F398E4 /* Parse_Private.h */, + BA51726FD1AA4091DA126768DFA80EE0 /* BFTask+Private.h */, + F82017D76300F1C06DB5151CF37A726B /* BFTask+Private.m */, + E9AD71E14E72EA9FB548AA268856C2EE /* PFACL.h */, + 622A44BCA22902069E3F240357CD45F3 /* PFACL.m */, + 661148537E08B421366ECAD30B9523D7 /* PFACLPrivate.h */, + 5DEB605CCA159256A3305ABB92ADED70 /* PFACLState.h */, + 2561AF367B0B04A8C83CD5E1C4F0C08E /* PFACLState.m */, + AD297F39854C24CB012AB880A8F72FE9 /* PFACLState_Private.h */, + 1414B4582D8A53F4321084D4EB5C3291 /* PFAlertView.h */, + A3D3B2AE6543B11628B3FD5B32D9E786 /* PFAlertView.m */, + CDD6D2BC7E281738DA57375BE59728C9 /* PFAnalytics.h */, + 0BBF841A16205C45B1396307D83A7373 /* PFAnalytics.m */, + 1A71824B576DDC6AD0FCFF11F0B133D6 /* PFAnalyticsController.h */, + BB282470029D499E3074A164AABBC66C /* PFAnalyticsController.m */, + BA77BF64FAFBF3F9E5DB590A4B0FB4A9 /* PFAnalyticsUtilities.h */, + 3EC5BDE29DEA58916F31388DB4B8EE2D /* PFAnalyticsUtilities.m */, + F8035743B5B17155E2E7D8224603A87B /* PFAnalytics_Private.h */, + 594B1C1B419F5D05CD82EE8F86518E69 /* PFAnonymousAuthenticationProvider.h */, + 6D28D403AA7A5A6F2AF7DDC6F991B98A /* PFAnonymousAuthenticationProvider.m */, + A9450452DCB495F010C9799C19CEDC25 /* PFAnonymousUtils.h */, + A7162605D551027C56A2A37B943994C7 /* PFAnonymousUtils.m */, + C69E58A7811CD06105D466195B801328 /* PFAnonymousUtils_Private.h */, + DD1DBE77FAE408E2C2A7ED2A4C1C8A7A /* PFApplication.h */, + 87ABBAD2B5A5CAAE0AC4B4ACCADC1330 /* PFApplication.m */, + D7C3DDABC4BC501093A232FA20368F5D /* PFAssert.h */, + 29EE40865F4426262E949C4C302BF226 /* PFAsyncTaskQueue.h */, + 00EA57E2C906799ED67EBCFC4089A02C /* PFAsyncTaskQueue.m */, + 1E014614141F279B34D0F4EAFD7F4DFD /* PFBase64Encoder.h */, + 23D64D6AB75296AE7976248043BC6313 /* PFBase64Encoder.m */, + 9C258A4DB466828F6F75FA69D17B7A98 /* PFBaseState.h */, + 0BA6D617D6C18C4F2260EB0CCC8EFBEA /* PFBaseState.m */, + 2E0C4FA92D8641B9361554A63982E78E /* PFCachedQueryController.h */, + CCBA933D3A40B5D03B01E6CC64A2A3A5 /* PFCachedQueryController.m */, + CEC4CC0F1E5231E5AE5C1E4101E7CD5F /* PFCategoryLoader.h */, + B2B9FD0D9C17DD96730E88C3240D975F /* PFCategoryLoader.m */, + 016D06C44A3331089F9E5A1C6DFB4678 /* PFCloud.h */, + 5B613D1BE89F1E4403B99C3E5DCCD2E4 /* PFCloud.m */, + 62F4D5228E2384499C80602BA6C921F4 /* PFCloudCodeController.h */, + B6C82743CE345D0715A174740BEB724A /* PFCloudCodeController.m */, + 0DA2C4DB80EFCE1F0AA9350F23EA627D /* PFCommandCache.h */, + 1C7FC38C024D78EC53EEDA5E5B3C97E1 /* PFCommandCache.m */, + 96A0F952DC35450695E4E710C00DA528 /* PFCommandCache_Private.h */, + 0EB95732F4D4CA886A89094CFD467D4E /* PFCommandResult.h */, + 1E8E523D8195E9B1B9C90976CF0540B8 /* PFCommandResult.m */, + 8CA449F861B70FFB8296D4B48C050FBE /* PFCommandRunning.h */, + 445422ACF05285D68F70D3C51879712A /* PFCommandRunning.m */, + 12DC95CF2C7DDD42977C94C97EB1637C /* PFCommandRunningConstants.h */, + CA33FED366B628BCA0A5D7DFD91E87D9 /* PFCommandRunningConstants.m */, + 9B3BA8EBCD60ED1F31A2098334DB3278 /* PFCommandURLRequestConstructor.h */, + 4CC4419E8BD5B8ADC92BB34FE1D6FC78 /* PFCommandURLRequestConstructor.m */, + 90E50367F9BC45C10EACF85808FF75BC /* PFConfig.h */, + E6A603960FAC56B3596B29FEDBED2A1A /* PFConfig.m */, + 3951D3E423BE2ABCBF9DE0E746CE311B /* PFConfigController.h */, + 0CA7CE3E5F98F41F8574F6D183CE2263 /* PFConfigController.m */, + 91F0975F1A27413EC0622237C3680849 /* PFConfig_Private.h */, + EC9CD4C5A5B393EB5D90DB05D6FFB6BC /* PFConstants.h */, + 09F2C7C83A1343D93FFA99723D546B25 /* PFConstants.m */, + 4A58330FB326FE4593BBBA3411078B43 /* PFCoreDataProvider.h */, + 975F4BA7752243B51CF71A4F5AF85FBB /* PFCoreManager.h */, + A153F0DEB24B9E8B5723EFCB6F33B536 /* PFCoreManager.m */, + 8D53FBFB124273A95BC60A578E870E0C /* PFCurrentConfigController.h */, + 2D3002035E29C7449C791970871E10EF /* PFCurrentConfigController.m */, + 02EDCF1DE69B8C5E506B9C40F67F083F /* PFCurrentInstallationController.h */, + 9E09472B01CB2E27BD636136A0066956 /* PFCurrentInstallationController.m */, + 55C549F5B8CF223004416FA7639F9E69 /* PFCurrentObjectControlling.h */, + 87B65FF1A2D48D2F1F0BF29F0A571A28 /* PFCurrentUserController.h */, + C74E4DFE39D451AE68F6CB856DEF1D8B /* PFCurrentUserController.m */, + E09085454F042573BE0A1BCBEF8DAE7A /* PFDataProvider.h */, + C4F10ABEFA5CCF0EC39AA05DC7FCBE4A /* PFDateFormatter.h */, + 0D1520ADAF247AF6031216CDA841A5E1 /* PFDateFormatter.m */, + A0D0E260844C900A61F03ACD640BF515 /* PFDecoder.h */, + 5221830B08D22B86274AFCA65E93CD48 /* PFDecoder.m */, + 0E290B1D6DDD48B2FD0139DCD4B3348D /* PFDefaultACLController.h */, + FD44A295575FA6E021F34AF62C1FBB39 /* PFDefaultACLController.m */, + 99E458C281E7B58FB283CD3DD6EC7CC7 /* PFDevice.h */, + FACB310E0E9E78B498E89B7F93B98CBF /* PFDevice.m */, + D3C67EEA3F3F6628396F657744BD378C /* PFEncoder.h */, + C4FECFD27C3DF785E2765FF781CE87C6 /* PFEncoder.m */, + A83514721328D0D297D02197D617EB33 /* PFErrorUtilities.h */, + 4D575196CED3C1360574CAC6B7FE08BE /* PFErrorUtilities.m */, + AE8C24FB91D52A7A902E7B6939B6EFC6 /* PFEventuallyPin.h */, + 133D805C2313FF465674A3486EA36F90 /* PFEventuallyPin.m */, + 6CFDCCA1B3C5C08CF8E7EE0036580FCA /* PFEventuallyQueue.h */, + 4077DBC410381FA11AC51C618CB81140 /* PFEventuallyQueue.m */, + 81D47F8C37692E3865019B411BDAEE3A /* PFEventuallyQueue_Private.h */, + 556A94A3870C01C3B2634E1838E2D0B6 /* PFFieldOperation.h */, + 3D3E83167931010DA87FD972EABFF257 /* PFFieldOperation.m */, + F3E2913672AE575B7293488062F00FD0 /* PFFieldOperationDecoder.h */, + 7FFC8DCDDC208CBB816476EDF7085EDB /* PFFieldOperationDecoder.m */, + 034F3E05ED59E7ABCE82F0A079D5958F /* PFFile.h */, + 9D91308BAD322ECAA4960D4D23C9A2C3 /* PFFile.m */, + 3B92CFB0FD23A754847A9505BDCE2BA5 /* PFFileController.h */, + 7B85AF138E6CEEDF8291F16978BAEAEC /* PFFileController.m */, + E8E31EEB8DA53180013FB1201C82EE81 /* PFFileDataStream.h */, + EAA3AE48267B27C576513BFE574F8AF8 /* PFFileDataStream.m */, + E39DE60706FCD15CB26738B50295DCD8 /* PFFileManager.h */, + 2554B79C64ECEFCFEE123612E3C5F6CA /* PFFileManager.m */, + 4DD35C52996E74EF6D68ED8C8CB3C5B1 /* PFFileStagingController.h */, + 992AFE5C5E747C1601862BCDAA0A7DD8 /* PFFileStagingController.m */, + FA021E3B9768C5B58BAAFC752622E888 /* PFFileState.h */, + 80535C82708945F05047D894446087A4 /* PFFileState.m */, + 922185D0977C1F99BFB47CC3EB889F72 /* PFFileState_Private.h */, + F0211D9EDFAAA5807FCBE1B8C8F4B662 /* PFFile_Private.h */, + 29DF82C03CFD45F592C6F19AE103BA06 /* PFGeoPoint.h */, + 27DA1A860C5602304E507058E4A25B5B /* PFGeoPoint.m */, + 37FB4F3FA6D54D38DE79356A63834230 /* PFGeoPointPrivate.h */, + 5D56D65949ED50DA5A35630E0B93DDB5 /* PFHTTPRequest.h */, + D3EB8E5131AAEA8F16E17BF016FB5B61 /* PFHTTPURLRequestConstructor.h */, + C0F87532434A412B133BDCA0E76634EA /* PFHTTPURLRequestConstructor.m */, + 010267A36F8E4347A122ABBE2CC67F43 /* PFHash.h */, + 5624419A8EA110F018B6E1D6B2D454AC /* PFHash.m */, + 05D04D86B15EAD72ACA964052E4E5C94 /* PFInstallation.h */, + 2C3E03A90536DD5330B859DFE31570B6 /* PFInstallation.m */, + 4DC41CC348E544292C37294C5A1B50C4 /* PFInstallationConstants.h */, + 8B187D31A1B35CF60BBFE402E7FEBF55 /* PFInstallationConstants.m */, + 3CE46AC0E13A1092344C773AC969D749 /* PFInstallationController.h */, + E95864D7FD5998A21194F9D8966583E5 /* PFInstallationController.m */, + F216A6FBB231D294F8E752EB582540AF /* PFInstallationIdentifierStore.h */, + 886A664252B9125A43A5E8CDBC0A2C43 /* PFInstallationIdentifierStore.m */, + 3F97330408CBCB9866B2403F56722EED /* PFInstallationIdentifierStore_Private.h */, + 379C2A4AD2DFCF269463822AE535090C /* PFInstallationPrivate.h */, + CFF2742C181ACA4B29372E268153270F /* PFInternalUtils.h */, + A3B19063FF0B2F212D30AA107E73EAF3 /* PFInternalUtils.m */, + 0EAF15F0F0DEC2E2FEC93095CB96203C /* PFJSONSerialization.h */, + AAFC5698C81D8076342E19ECB0D2E550 /* PFJSONSerialization.m */, + FF82E57178981723142A0A7CBC372284 /* PFKeyValueCache.h */, + 15218D870F12055E685D3D03517191A4 /* PFKeyValueCache.m */, + 47BD5C685318CE8CD9CA1D43C28605B9 /* PFKeyValueCache_Private.h */, + 437CBC5E7E1B50CC1E72F15C88FF6AC7 /* PFKeychainStore.h */, + 1D9A8A5EA7D67587E22F112968E8FA29 /* PFKeychainStore.m */, + 26871A94013EE429FE6FE9F7ABF2A9A2 /* PFLocationManager.h */, + 482DBED41E33C8058B42A4F92B753528 /* PFLocationManager.m */, + D974B883607CC6537A01E19606D22B95 /* PFLogger.h */, + BE7E9FEA0A48E20BEAFE0E04D46D0913 /* PFLogger.m */, + 56E54211A06B3807A9F27AD7BEB6DA7C /* PFLogging.h */, + FBC88190F20BFFBCE3E07DD0D3914E48 /* PFMacros.h */, + 1EC7D96BC9F20D61C8C0611234289492 /* PFMultiProcessFileLock.h */, + 38E7251464FBD8CA6364DE9833E6D6E7 /* PFMultiProcessFileLock.m */, + CE9E97FF37E3D5E9F5A1F4E619520D56 /* PFMultiProcessFileLockController.h */, + 9779A223D892C242F0118CAD43BA556F /* PFMultiProcessFileLockController.m */, + EA90B11F9419C1CFB642C076EE6CCA4E /* PFMulticastDelegate.h */, + 52E8F3EA417ABBE16B32E6AD85C0A91E /* PFMulticastDelegate.m */, + A3D3F0FD5623B320704891A12D20A91A /* PFMutableACLState.h */, + F719BD99BA3538CAF974528DD1BA9EAF /* PFMutableACLState.m */, + 71D26DA17DCBC3B6CC47B2FCA63BF991 /* PFMutableFileState.h */, + C1B00FE95A9B3F0051AAD3A5D6CE141D /* PFMutableFileState.m */, + AE308F7FD55A37D38ABFDCED9CF0A8B3 /* PFMutableObjectState.h */, + B009D5CAE876F03463C42923FD1BF780 /* PFMutableObjectState.m */, + 9FAACBCE52471750369D9FA0ECEAEEE1 /* PFMutablePushState.h */, + 047273E0F6F9E9889E073EE49F2755C4 /* PFMutablePushState.m */, + 623C2B3361739718CF09561BA4D026B7 /* PFMutableQueryState.h */, + 10837937B6B53962D8F7B9D3F8E3EE03 /* PFMutableQueryState.m */, + 28C76500BA7B3265FA9C1FBF8EC034FF /* PFMutableRelationState.h */, + 3D37164FA87C3325903A708109C92A81 /* PFMutableRelationState.m */, + 20A09146C96CD4735D748F3A404D0813 /* PFMutableUserState.h */, + 81DB7CA7AE90A4BA6CA4297DF013CBB2 /* PFMutableUserState.m */, + 4E102EFF955C784214778B35DA87ECEF /* PFNetworkActivityIndicatorManager.h */, + A226C9DD413F0CCC4F3BFD7DE0A82A88 /* PFNetworkActivityIndicatorManager.m */, + BDEB88DA6AF7347263BC6911DB8411FE /* PFNetworkCommand.h */, + D4A9395593F078B48F3B87B9AC890E89 /* PFNullability.h */, + 874C68CE36C22FDD95A27779257F15A1 /* PFObject.h */, + 31EB18FA1114A3D648354CA9461243B5 /* PFObject.m */, + C26C64018F45E6E09F72163E759ED45B /* PFObject+Subclass.h */, + A6AE518E9BB5E93989AFB92589707FBA /* PFObjectBatchController.h */, + AF32577C470A14D1ED63BB4B6492F464 /* PFObjectBatchController.m */, + 2CA3B417E38375FB5F145C27AD082AF9 /* PFObjectConstants.h */, + 457C5AA079BF304DBA165DC39799AC62 /* PFObjectConstants.m */, + 23887764BFA845B70B1FFB0552AC2706 /* PFObjectController.h */, + 73A13DAF02B6E8A824568229C50FBBD3 /* PFObjectController.m */, + 63C834523FBD7AC3D226D67DBCAB0F4C /* PFObjectController_Private.h */, + AE094855CA351D584BD24BBC12AFB3F8 /* PFObjectControlling.h */, + FE2ECE2F8FDD3511406B222FD89E37A5 /* PFObjectEstimatedData.h */, + 1C6660D91D6167EB784831B0571E2F52 /* PFObjectEstimatedData.m */, + DD24927EB5C08D76DB2607695C173E2E /* PFObjectFileCoder.h */, + 53F32875FD8A66082F85E268CB4BC011 /* PFObjectFileCoder.m */, + C9335D1EB92B88713E8308C849C0EDF6 /* PFObjectFileCodingLogic.h */, + 6603759A59107C9EA23B8A6F0AC4524B /* PFObjectFileCodingLogic.m */, + F9D538F104DE1F531CF0C5A8DAA4E04B /* PFObjectFilePersistenceController.h */, + E8201C8136FA5647FA6E3D62C4EE1974 /* PFObjectFilePersistenceController.m */, + 894852C03388A8B63E64B0E4307DA4C4 /* PFObjectLocalIdStore.h */, + 4DFEAC992B1C77BFB80D23F81E446DDC /* PFObjectLocalIdStore.m */, + F51CD3717AB71F5E10A96BA8B666AACE /* PFObjectPrivate.h */, + 7E8914751B900AC4DEF771BDEB8FE816 /* PFObjectState.h */, + F1E2800D7ABD0182A48B7D71B414FD92 /* PFObjectState.m */, + 461D15480309D56D3AA4AFA926B8B93C /* PFObjectState_Private.h */, + 7915B369685221642E067005F680B451 /* PFObjectSubclassInfo.h */, + A4E495589FA749FBC303F264C9C6B80F /* PFObjectSubclassInfo.m */, + CD8B46F21FA110AF5880D0648641BA7A /* PFObjectSubclassingController.h */, + 5CE58398E0BE8D266923D16A28663EB6 /* PFObjectSubclassingController.m */, + 9FBFA3525F472811286DDE3A9248666E /* PFObjectUtilities.h */, + 0CCED09AA914A9CA2759E1F53B53226E /* PFObjectUtilities.m */, + 579EAC1B8D13822158FB03F012D3B85C /* PFOfflineObjectController.h */, + F04D615547733AD44304C987C2896316 /* PFOfflineObjectController.m */, + 6D74017655C22EAC1CDB43F8CD2B468D /* PFOfflineQueryController.h */, + 7E2F75F68AFD577F425752D70A27C101 /* PFOfflineQueryController.m */, + D98AA728E2CAF01488250F97004A36A8 /* PFOfflineQueryLogic.h */, + 4D6E9F5DDD85504DE6DDBECF9E39A959 /* PFOfflineQueryLogic.m */, + 91BF5E929B1AC36CE7F99D1E1DC0ED30 /* PFOfflineStore.h */, + CC5344A37B8F373E012354E281A66841 /* PFOfflineStore.m */, + 1D9FA4BADE605736317EE1596FAAD3B1 /* PFOperationSet.h */, + 2515970C08E7445D9A26AC8952E7FE41 /* PFOperationSet.m */, + 46DE20F02F523C0B14736898D3E8BBAC /* PFPaymentTransactionObserver.h */, + 8786F55C6BCF0316006C8213CA9340CE /* PFPaymentTransactionObserver.m */, + CB354A886C3BB7D67D39EB3F5236AB3A /* PFPaymentTransactionObserver_Private.h */, + 587669D43EA945644A3A4CF47F37098B /* PFPin.h */, + 282B79F0BE2F4372C754A93C4D8D6B3F /* PFPin.m */, + 16ECC679D7E6944181A4143EBFFDF2B6 /* PFPinningEventuallyQueue.h */, + 7AE5F75C04FAC19C4B94C834EC0C4E96 /* PFPinningEventuallyQueue.m */, + E305C7FF3E6F92A0B09870D8A60E8D38 /* PFPinningObjectStore.h */, + C3ADC7027A54E385AA38C96D3138EFFF /* PFPinningObjectStore.m */, + DBFFDA63A4181BD3B195487A833CECE4 /* PFProduct.h */, + 5A3A3C984D254DD2D0058DD599EAD348 /* PFProduct.m */, + E44E35724EFF38F735F8A1ACAD9AC6BA /* PFProduct+Private.h */, + 0E16BBB83C9F9B91092969D2266317F0 /* PFProductsRequestHandler.h */, + 853ED2ED8383CAC8B42216E034C32866 /* PFProductsRequestHandler.m */, + 85A34FD1B37C88CFB5EFD0D8E6DD8071 /* PFPropertyInfo.h */, + AED3A36F04E046594F39EA5EB90D97FD /* PFPropertyInfo.m */, + 7EFF22BC9B76855DF9E2359F492E11A4 /* PFPropertyInfo_Private.h */, + 9866CB182F7690789F1CE9AC2C89303E /* PFPropertyInfo_Runtime.h */, + 0A2458DB30CB9D1EBB4393A5B3933BDA /* PFPropertyInfo_Runtime.m */, + E6525F64D2B6147E9FCBF6D10A5CB4AD /* PFPurchase.h */, + D7F2E197DB454125A7957FE4881AD932 /* PFPurchase.m */, + 786806355E0E877557AA2507DDEBACDD /* PFPurchaseController.h */, + 4A2F1425F21ABB04C1E959E932C6F415 /* PFPurchaseController.m */, + 26CFE764B4CDD5F929831F42EDA41A4D /* PFPush.h */, + 1BD7322E2971743B34A65BD010CC3165 /* PFPush.m */, + 10A45B9F776F2A6EE5C3BE2ADD460FE3 /* PFPushChannelsController.h */, + C45F387672BF56893F587F1601A4A671 /* PFPushChannelsController.m */, + EEE7C4904A076EEBF17B54F44707AAB5 /* PFPushController.h */, + 83FAF66089BB2B25DAD32F318716E9B5 /* PFPushController.m */, + 135CD2563AE865A18CBC5672956D2875 /* PFPushManager.h */, + 5BEDCBDD3D1427BBC37838C408E7AC2E /* PFPushManager.m */, + 2F99B6F42887EE972402E88BB751D67A /* PFPushPrivate.h */, + 9E21E2C6F0AD5061454FF796346F0484 /* PFPushState.h */, + A92BD29643970DCB9C0745A0406AD053 /* PFPushState.m */, + 687225D9C30A2354D368E350F8C481FB /* PFPushState_Private.h */, + 8CAACEFFE369BA8C9440D6CD08EC7727 /* PFPushUtilities.h */, + 8CE5F1B200B8D4F57C6A85199C9969FE /* PFPushUtilities.m */, + E1394AF99EBF307ACCE5AC895EAC2042 /* PFQuery.h */, + B43206E9EAB8BE07EDDF2DD6510F74C8 /* PFQuery.m */, + 63E89B2BE05AE41A084F3E0FA21250FA /* PFQueryController.h */, + 3448DD0E19AC2C9CA013ACD2BC7AD8C1 /* PFQueryController.m */, + E17F4E0596F024D9F44812A5786F7170 /* PFQueryPrivate.h */, + 10E904E302F7D7767F91F58889C20F5A /* PFQueryState.h */, + B40C676461A3B7148111BB04D891F399 /* PFQueryState.m */, + 9E01D38ECEA62C477A8C7BEE503A7547 /* PFQueryState_Private.h */, + C45D1154E82FBFB1AEFB90141DBACC29 /* PFQueryUtilities.h */, + E4B0E00C3C4BDBCA61E5E8E5A4098711 /* PFQueryUtilities.m */, + B3693A56CF492DA3BDAEDDBDA46ADC5D /* PFRESTAnalyticsCommand.h */, + 562E8BAC97316F785846B93E33C496DD /* PFRESTAnalyticsCommand.m */, + A6ABA5D37C50A0B8B9B785D774D332A5 /* PFRESTCloudCommand.h */, + D47B3859C74BA3AE467FE98CFA3EF2A7 /* PFRESTCloudCommand.m */, + 16784EC95D6273ED6752D7B64213E746 /* PFRESTCommand.h */, + 680D7CAB02E8C5A1DCE74985204D4483 /* PFRESTCommand.m */, + 5698E0F3BFBACA4A2F463DD697916F16 /* PFRESTCommand_Private.h */, + 9B2BBEF7F76A0A9700A14D2C55164268 /* PFRESTConfigCommand.h */, + 06CCF32425B76D2DCB319BACF4D3874B /* PFRESTConfigCommand.m */, + 225CE2C43ADC4EF1A17EA9FF67B4F977 /* PFRESTFileCommand.h */, + B12980AF5F1F26F33906C73A2F38C5E2 /* PFRESTFileCommand.m */, + ED1A749E0B29949F6BE6DE5906C56DD6 /* PFRESTObjectBatchCommand.h */, + D3C4E9EF227BA506792955288087E82F /* PFRESTObjectBatchCommand.m */, + 5242A7AC90141AACB238B67ACEC33ED0 /* PFRESTObjectCommand.h */, + 6144F78DC1C2B2F8A260C15A0B7148BA /* PFRESTObjectCommand.m */, + B83B68F2BA2D8926592978101024F709 /* PFRESTPushCommand.h */, + 9161913CD82800463279FFB15D5628FD /* PFRESTPushCommand.m */, + 4DE77267B05353B27C048F5B04016566 /* PFRESTQueryCommand.h */, + 32369FE3517FE0DA85D6AC9113DFC4D4 /* PFRESTQueryCommand.m */, + 0435A677495AC526E61CDF8F62EC197C /* PFRESTSessionCommand.h */, + 880D1361F22BDCDCF4A160F7DC4D54E5 /* PFRESTSessionCommand.m */, + BD7AF50148F7E85655300B88C68AEFF3 /* PFRESTUserCommand.h */, + C73D0298550B4AE265F9F155D23B10D7 /* PFRESTUserCommand.m */, + 5D488D8E4B776014CDEE5E6EF762C08E /* PFReachability.h */, + 8148FF7EFD96C224279A35AB3C828BC8 /* PFReachability.m */, + 03C5A44C8CE91BCF8B86912605825A8D /* PFRelation.h */, + 2423DAEF9BB294E6E266E9CC7E5F196D /* PFRelation.m */, + 3661FB21F4391073E8AAC82B6B840E75 /* PFRelationPrivate.h */, + 6E6A42EE42B9EEE445B28BDD96FFB1C7 /* PFRelationState.h */, + E1A63FDB8FFEBABA917E2E14E9051471 /* PFRelationState.m */, + C2775986B8C8F3CC41C05FD3B939FF81 /* PFRelationState_Private.h */, + 9C3140134D0A6A0E556CA3A287EC0FF5 /* PFRole.h */, + C44F364C931B164F6223FDD37734D4B3 /* PFRole.m */, + 0BD061E291C8DA3E18934FCF5E92DC81 /* PFSQLiteDatabase.h */, + B95FB2E5D926288C9E55B3572315CEE5 /* PFSQLiteDatabase.m */, + 453E27BE733413CA48A57B257194DA21 /* PFSQLiteDatabaseController.h */, + BB98FB4B596C25CC1243E4E50B93731A /* PFSQLiteDatabaseController.m */, + B00106BF0B6579DD98D56C67BD575CF0 /* PFSQLiteDatabaseResult.h */, + D4BD0B686B0EF4B81ABCF468BE4F3F99 /* PFSQLiteDatabaseResult.m */, + A13F413DC88512FDA54FE8057A667EAD /* PFSQLiteDatabase_Private.h */, + BC8341246DF5F52B15F7D490893290D3 /* PFSQLiteStatement.h */, + 0614A8CED09956ACEF0CD07B5F13C94F /* PFSQLiteStatement.m */, + 8EA5A298BA6815375F9BBA4D48B6E32C /* PFSession.h */, + 0A7EE3C6BF7D5145AA91E9DE69EC0268 /* PFSession.m */, + 8AEFD9424D0770F6E0BC692CE0AEE27B /* PFSessionController.h */, + 916C1A84C0A37408A6F76D88348177DD /* PFSessionController.m */, + 3E82461A10900C11141F5132C28A7C0B /* PFSessionUtilities.h */, + CB8C8762838FD01094119D687898F1B3 /* PFSessionUtilities.m */, + A7133DBE9772758CC46F930B640FA577 /* PFSession_Private.h */, + 7329F4C215D23C5B157437CD3ED3DC86 /* PFSubclassing.h */, + DFEE7E72D7CE52F1A712D597A33B153C /* PFTaskQueue.h */, + 1DD477EE3462803C03920D7EA94FCFF8 /* PFTaskQueue.m */, + BAFC73046A893C097CD25A41014D48A0 /* PFThreadsafety.h */, + E754D1AA7F49F27BDF54A28A7335AC74 /* PFThreadsafety.m */, + 814BAB5BB856170E11D9DFE9E26A888C /* PFURLConstructor.h */, + 917E881A4D1DE9E99ED3B7606F09E16B /* PFURLConstructor.m */, + 98A77CBFC3CB99CB7C20905C88715474 /* PFURLSession.h */, + EFC389DF1344C08739BE3B0D8561FC86 /* PFURLSession.m */, + E2A3EED08BBE4EF8E35776623B221D96 /* PFURLSessionCommandRunner.h */, + 25501EDA6B8396052C4721695FA27371 /* PFURLSessionCommandRunner.m */, + 614A361C74DFD5A28DB5A4DBFAD80EAF /* PFURLSessionCommandRunner_Private.h */, + CEEDE6F5E4B91DB0462629F30CE2C5D3 /* PFURLSessionDataTaskDelegate.h */, + F59D7CF8A402E68851985B96EE643B89 /* PFURLSessionDataTaskDelegate.m */, + C5BE6155E6E796DC929232CFE0BA3938 /* PFURLSessionDataTaskDelegate_Private.h */, + D4AAA8F6AD3E666763DAE1F0E91D3778 /* PFURLSessionFileDownloadTaskDelegate.h */, + 71EFAC4FE3DE4D635A34BD873A1302F5 /* PFURLSessionFileDownloadTaskDelegate.m */, + EEBF3BA14A17CDD666F87ADB7FD612C9 /* PFURLSessionJSONDataTaskDelegate.h */, + 526321DDA0F9E9326B772985013A71DB /* PFURLSessionJSONDataTaskDelegate.m */, + EA9765B74BCB3C4EC7701224F0BF1249 /* PFURLSessionUploadTaskDelegate.h */, + 53873BB442346D140446325544126600 /* PFURLSessionUploadTaskDelegate.m */, + 18307BC0EA14A69F26486ACEC94450C2 /* PFURLSession_Private.h */, + E7E88640AA3150B82CBAC9BE5E95A136 /* PFUser.h */, + 0EDBC476683341C63522CBC88AF10401 /* PFUser.m */, + E6D31BB8E52455350F1E5E4F1DB197CB /* PFUserAuthenticationController.h */, + 739CA807E35A38705E95A5061E4DB05F /* PFUserAuthenticationController.m */, + A083AB389EBB61C1E3AC66B85D0485EE /* PFUserAuthenticationDelegate.h */, + 84D47AE11AD48DDD6598E018331299E3 /* PFUserConstants.h */, + 50A981FEAE41634E8F3C3CCF8AC56259 /* PFUserConstants.m */, + 051170D8AB31E65A6185350F81C989F8 /* PFUserController.h */, + 12E1213C18161FD134F34314DF960015 /* PFUserController.m */, + 2E0204ED6BDC62B268724EB7F3257243 /* PFUserFileCodingLogic.h */, + 0C330B991A689F502E36122BCC0AC499 /* PFUserFileCodingLogic.m */, + 8D6ED3A53A136BCE4843E32025C76ED9 /* PFUserPrivate.h */, + C092CD3F2AEE6BAC465A007801D8D91A /* PFUserState.h */, + A9E407E843F2555171E0CF773AFE8CAA /* PFUserState.m */, + 79EF5DA0025B0FFF67DFADD5492A17E1 /* PFUserState_Private.h */, + FDF7CFCA28382A3A70269FF452DAF6DF /* PFWeakValue.h */, + 5EA794B89AD63BC09D01C4D28AB83FA6 /* PFWeakValue.m */, + E42FE23DCA3EFFB8F6025F9F9A8B3497 /* Parse.h */, + 700F2F5BA5994CFBE256028DFF7EC6CC /* Parse.m */, + 82DE2CCDEF80C1FF02649B195289A931 /* ParseInternal.h */, + 610CAB8E8825EC6BC293F21E90DD6315 /* ParseManager.h */, + AD0F8B79E3BDC24EF65F9BA34E2F1983 /* ParseManager.m */, + 4F92059D97E5483DFD850AA95FFE5562 /* ParseModule.h */, + 0FFE01FDB1315C89C0A38D8E4378E0DF /* ParseModule.m */, + 8188F44B82CFACD44B2AA378C7BEEE4B /* Parse_Private.h */, 3262FA25CACCB75652ABE94C6AAE0895 /* Resources */, 6E1FE4EB7D0D493F9F1D1977F4A35013 /* Support Files */, ); @@ -2354,22 +2354,22 @@ 0E03188E9A4BF5C7937C9A2A68F675D0 /* Tasks */ = { isa = PBXGroup; children = ( - 205D68C9BFE7AFE003B0D6E31B36DF5C /* BFCancellationToken.h */, - 6A7BE134FD15E0D4AD4050F4AF57B457 /* BFCancellationToken.m */, - 7FCD65509A86CB6A3CBDE7E5FCB1384A /* BFCancellationTokenRegistration.h */, - F00F8677E748167A500D4089850612F1 /* BFCancellationTokenRegistration.m */, - 42C4A6EF402B488E5D8EDE80F1F34D3B /* BFCancellationTokenSource.h */, - D5E9B76418458E7F379CF5FBBC3F3B16 /* BFCancellationTokenSource.m */, - EF76AEC2726221DE7C0236DFE4624164 /* BFDefines.h */, - C8E979B43D80A6C9E821A1BD3B0C7F51 /* BFExecutor.h */, - D5CFF5109E2B6B4C6F5E6087969F25B2 /* BFExecutor.m */, - 13771E6540FA0D1373C61F3F5618DE1D /* BFTask.h */, - FDF516C0EA3056B223310D7DB2C26681 /* BFTask.m */, - 749EB4AB41C2B5F71BA37ABB24CEE668 /* BFTaskCompletionSource.h */, - 9601718FD0C0CFCF5DA762D153DB3279 /* BFTaskCompletionSource.m */, - 677452C3A3BE7F10BDD609C3AF5DA93A /* Bolts.h */, - 0E874B0F3891D0BC5E6EE724082760D1 /* Bolts.m */, - B1C7ADB3EE2B383850B9230A7B460906 /* BoltsVersion.h */, + B5EB9B4230ED62ACBBFE1640BB61C32F /* BFCancellationToken.h */, + 7E4FE6BADC672C550203DCEEC5EE8020 /* BFCancellationToken.m */, + 23ED3F16546340CE6D8F500DF0D81FA7 /* BFCancellationTokenRegistration.h */, + E016C3CC11A1E2541450703DF5F4DBA9 /* BFCancellationTokenRegistration.m */, + 5AF0ABAFA5AB51B0A0101D5CBF73791F /* BFCancellationTokenSource.h */, + DFC853444423A2B6AFB3F150BD3A93F8 /* BFCancellationTokenSource.m */, + 26E148529A5018FB0DBA0E6E6EF425A7 /* BFDefines.h */, + DFC2DC00FAF97B8C741ADA0CE734750A /* BFExecutor.h */, + 950203966AB13DB9DD6BF919571BCD7D /* BFExecutor.m */, + 53BF5D67AF06F0302A007B18D6FBC694 /* BFTask.h */, + 4BC5A2D868E11F3896499C4C384C1057 /* BFTask.m */, + BD4CC2409377CA987A2B2C5C57CEEE70 /* BFTaskCompletionSource.h */, + F3DADC1F7DC40E0218DBF16280C4D6D7 /* BFTaskCompletionSource.m */, + FA8008ED57F2E69D54C3AEA23F96BA4C /* Bolts.h */, + 9A3A0AEECB03ACB2C625D6A5BDD230FC /* Bolts.m */, + 1F2F968FC5E9ACF4AC754AB79F42241F /* BoltsVersion.h */, ); name = Tasks; sourceTree = ""; @@ -2378,8 +2378,8 @@ isa = PBXGroup; children = ( C45A766C3A6755202AD9BF0DD47F95E9 /* RKValueTransformers.xcconfig */, - FAF5EBA356BB1361627763A0C3E4FBA8 /* RKValueTransformers-Private.xcconfig */, - 8343EFF681B40307ADDC80DDE71AA45E /* RKValueTransformers-dummy.m */, + 8DD494B04A84F285624644430E1FF3A0 /* RKValueTransformers-Private.xcconfig */, + 5DD18A5D9607E9AB948A055344CD3E4C /* RKValueTransformers-dummy.m */, F5BD02FE7C99C9BD2CBC566B75BB0558 /* RKValueTransformers-prefix.pch */, ); name = "Support Files"; @@ -2389,16 +2389,16 @@ 20C6A3B1763BEF1D2A45847DA52F6720 /* iOS */ = { isa = PBXGroup; children = ( - 4B4CB8ECB1CC3450C6965777EB3C8B67 /* AudioToolbox.framework */, + 61A8714F3E98EE48AF22222F6082A20E /* AudioToolbox.framework */, 83F2B1D939804694C73E7FCD9AAF4090 /* CFNetwork.framework */, - 71AB35520DC69025479E89EC80D0D204 /* CoreGraphics.framework */, - 4F79376118E5A7FF02BC96514483BD1A /* CoreLocation.framework */, + EE00E564F591F731C2B1E11065E0ACF7 /* CoreGraphics.framework */, + 7FB86554EB764C69DB563344FB6E4583 /* CoreLocation.framework */, 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */, - A51EB7786397F5EFF35AB3BD9CEF4F08 /* MobileCoreServices.framework */, - 67E415550BFBF0D438FF517138639DE1 /* QuartzCore.framework */, - E541C23946CA00EF697F8FA44AB271F6 /* Security.framework */, - 8200C4FB4CDD0C6152EE150BDEFC6675 /* StoreKit.framework */, - F5243AD5D9D864456CBD961BC945843F /* SystemConfiguration.framework */, + BAAF0724B9090137B718DFDA6EB9C1C7 /* MobileCoreServices.framework */, + 2C7078E789BF9691EB3849F6E4E49A44 /* QuartzCore.framework */, + C37F0ED993AA0D0D75072F2D2A6865AC /* Security.framework */, + EBD6F5E77168A4A3133908261AEF1BFC /* StoreKit.framework */, + 3CCC11B45A7E2D9A95182BA1D01D60F9 /* SystemConfiguration.framework */, ); name = iOS; sourceTree = ""; @@ -2407,8 +2407,8 @@ isa = PBXGroup; children = ( 8F5ED0372250818DCE119C3430AB9B9C /* FBSDKCoreKit.xcconfig */, - 8FD1B81D44C9140C9CB6A7AE15FD008A /* FBSDKCoreKit-Private.xcconfig */, - ABB8ADA56E3C960C54BA1289E7ECB2E5 /* FBSDKCoreKit-dummy.m */, + 9CD8231FE026505A5E9872616FAABDD9 /* FBSDKCoreKit-Private.xcconfig */, + 4214851D9461FC93F660FCB73142859E /* FBSDKCoreKit-dummy.m */, B76A09E201EAD10D07E2C151D7EC5F26 /* FBSDKCoreKit-prefix.pch */, ); name = "Support Files"; @@ -2419,8 +2419,8 @@ isa = PBXGroup; children = ( A9E3691FF1A7CEBD5D9EFA1195090078 /* ISO8601DateFormatterValueTransformer.xcconfig */, - 31FC85622F6B1B2EE86B878CA3F2FDC7 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */, - AE08EB61DD10B80E244E727952C0B579 /* ISO8601DateFormatterValueTransformer-dummy.m */, + 241767740C7A36BC4016F69B2DFCDFF5 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */, + D9449B7AA0958A37C738C3F3113E6F86 /* ISO8601DateFormatterValueTransformer-dummy.m */, F49F7453B2E504EC63FDF48EFAA54EEA /* ISO8601DateFormatterValueTransformer-prefix.pch */, ); name = "Support Files"; @@ -2430,7 +2430,7 @@ 315BCA9F4FC37F26FCA0A241609C1D8C /* no-arc */ = { isa = PBXGroup; children = ( - 6F9AB8D84FEE2E48AF3B9F9658D5BE35 /* FBSDKDynamicFrameworkLoader.m */, + 24F93C0C8EA467DEFCB4CBDB150BE439 /* FBSDKDynamicFrameworkLoader.m */, ); name = "no-arc"; sourceTree = ""; @@ -2447,8 +2447,8 @@ isa = PBXGroup; children = ( FBEDC82BBD883110BC94F1B62D5DCF07 /* FBSDKLoginKit.xcconfig */, - 28D3D49C022C268585679D13BC5BFC4B /* FBSDKLoginKit-Private.xcconfig */, - 3666E0447FCD05578684BF0E8B8507E2 /* FBSDKLoginKit-dummy.m */, + 5AF094AA3C85E325892EB2AE88799BB8 /* FBSDKLoginKit-Private.xcconfig */, + C40CADC5F2DEB4D0282F02F7FDF18EF0 /* FBSDKLoginKit-dummy.m */, 41BA0CE95AB03F346F54CA27DB00DE30 /* FBSDKLoginKit-prefix.pch */, ); name = "Support Files"; @@ -2458,25 +2458,25 @@ 355216D0B68C5F751E356F16CC39393B /* AFNetworking */ = { isa = PBXGroup; children = ( - EAE092C23A177A30D41277E3E2532CFE /* AFHTTPClient.h */, - 80D80DCE3A20EC46EAAB66B362677E30 /* AFHTTPClient.m */, - 36C94BDCD3271399C249A6BF6A0A9530 /* AFHTTPRequestOperation.h */, - 232ECC729A95758C447EC817E24A8382 /* AFHTTPRequestOperation.m */, - 0FE0AA3631AA8F7CFF57EB3EDC6CB5D1 /* AFImageRequestOperation.h */, - B83052F7D6EDB1CBA5F3BE48FE41B542 /* AFImageRequestOperation.m */, - 97715D178022674A0792C3C3180E1132 /* AFJSONRequestOperation.h */, - 09F505C5912DBB85A144A4BB9A39B321 /* AFJSONRequestOperation.m */, - 47437D5AB702C3D4165C272B390FADA7 /* AFNetworkActivityIndicatorManager.h */, - 07CDAECDB40A9B34C6E06521F65F757A /* AFNetworkActivityIndicatorManager.m */, - 3B63B03172CDA0B6BED2BB6710B8DF38 /* AFNetworking.h */, - 45863B73565B4D9E4E17BBFFEA8FF6B4 /* AFPropertyListRequestOperation.h */, - 2B1C44F7812C72D0C7AF70AF7E3582BA /* AFPropertyListRequestOperation.m */, - F13165336A9173E2A3C4790AB7CC7975 /* AFURLConnectionOperation.h */, - ED9EAFA1C9FBC36E305EEEA43B7A8CE6 /* AFURLConnectionOperation.m */, - 3AA3D565456E290589B27357D512E69F /* AFXMLRequestOperation.h */, - 555A1DB7FA628753475F8E0C531D7624 /* AFXMLRequestOperation.m */, - B21B66CA9B865C30407C0033E5E77A5C /* UIImageView+AFNetworking.h */, - 8DA277D34C0546D8D8E80D99DCCD844A /* UIImageView+AFNetworking.m */, + B50ED7330E240BB1A16E10047FCC8E37 /* AFHTTPClient.h */, + 6CA98D8F458A2FFECCD9C3CF7AAEECFA /* AFHTTPClient.m */, + 0EB0F987B2BFAD674CC1392DB885D94A /* AFHTTPRequestOperation.h */, + 2BF466CB1A2B08C6FD3F60694F3E8D34 /* AFHTTPRequestOperation.m */, + BF7E4DF7E707F588FF550CDC66A6F7B7 /* AFImageRequestOperation.h */, + DF7C4CE6EE936098ABB3AC172D7B2FF1 /* AFImageRequestOperation.m */, + FB4066FE555FBBC7224915F81DDF0E65 /* AFJSONRequestOperation.h */, + 377BAEED2390B90A3A797FBF573227C9 /* AFJSONRequestOperation.m */, + E156596C9F5FF570264078E49A4643D4 /* AFNetworkActivityIndicatorManager.h */, + 5BD70BB4643C9BA44BAC707BE6AB39DD /* AFNetworkActivityIndicatorManager.m */, + 6F140AB891150C6CFED7DD2A7B4A62B2 /* AFNetworking.h */, + 5917BAC53F580A1C1176F5DD749556A9 /* AFPropertyListRequestOperation.h */, + A43FA21715C3B6F62D38DAA843E6E28A /* AFPropertyListRequestOperation.m */, + A3D86DE4F1B3EFCBA205A592DA3CCEFE /* AFURLConnectionOperation.h */, + 3B5D125F50E0B3A81028AB31CB76BF71 /* AFURLConnectionOperation.m */, + 2D2CAB276E3575E9D3DF2E0990BE0F69 /* AFXMLRequestOperation.h */, + B407FBFC5F897F4E485E1E0002B506FD /* AFXMLRequestOperation.m */, + C6F27E2022C1FBC9A8EF59AF5A0635F1 /* UIImageView+AFNetworking.h */, + 52120DE46E6C7C888694B8D9A3F4DEC6 /* UIImageView+AFNetworking.m */, 58D63C29FC12061DC6628DE00FFC3251 /* Support Files */, ); path = AFNetworking; @@ -2486,8 +2486,8 @@ isa = PBXGroup; children = ( D87881EF697A62AD256CC2A668F12186 /* FBSDKShareKit.xcconfig */, - 5CCF2B1914047A6A115AD8CAF5B6D70E /* FBSDKShareKit-Private.xcconfig */, - C8A64817A3F904FC394ADA0E162D3FCF /* FBSDKShareKit-dummy.m */, + EBB6883C7F57FAA6E0F4E3A4DCD0836A /* FBSDKShareKit-Private.xcconfig */, + B10ADC87A857910D7585779303E279B5 /* FBSDKShareKit-dummy.m */, 74D75C3A4E2A26AFDC39E1FAB71F6A80 /* FBSDKShareKit-prefix.pch */, ); name = "Support Files"; @@ -2592,8 +2592,8 @@ isa = PBXGroup; children = ( 66FE320ED85B83804D275B29BFCDDCFF /* AFNetworking.xcconfig */, - 35AF2ED07EF17B28DEF0B55966C47D4B /* AFNetworking-Private.xcconfig */, - 6FFDF70586FE4143304DC181DA940A51 /* AFNetworking-dummy.m */, + 3DABBC1078165E5DDDEFA2E7472C5559 /* AFNetworking-Private.xcconfig */, + 46012E85A00B1012C8DE6CB3D5CC0DFB /* AFNetworking-dummy.m */, 95ACACF8D7E55EF8FE0FEF697597C3D3 /* AFNetworking-prefix.pch */, ); name = "Support Files"; @@ -2604,8 +2604,8 @@ isa = PBXGroup; children = ( E4437BD232D035D19C87DFB253692F24 /* Bolts.xcconfig */, - 101AA17C537653FDA61829C8AB7E5153 /* Bolts-Private.xcconfig */, - 9A4A2624694E7E459F481284E18872D0 /* Bolts-dummy.m */, + 325246AADDC0F382E655933B585A347B /* Bolts-Private.xcconfig */, + 3B76E48E1FD54E0BBE64291059DD0428 /* Bolts-dummy.m */, A73E1A20457CEF5005A485BBF4301935 /* Bolts-prefix.pch */, ); name = "Support Files"; @@ -2628,8 +2628,8 @@ isa = PBXGroup; children = ( D8BDF9D0A4444BAF6AB702315EC72D13 /* Parse.xcconfig */, - C01586B6345CA4AB19014D467EAE9DBA /* Parse-Private.xcconfig */, - 1E4620C81A01480F3991F76D4DE7BE37 /* Parse-dummy.m */, + F6E9E4399B6F13E900FC0A4DACCD4E15 /* Parse-Private.xcconfig */, + FFAEA82C3ED7F7F1480E843DE336CB0B /* Parse-dummy.m */, 82E1375889C85A75C3D50613909984E7 /* Parse-prefix.pch */, ); name = "Support Files"; @@ -2725,10 +2725,10 @@ 86234D7B88F187C4500B915C24222CCD /* ISO8601DateFormatterValueTransformer */ = { isa = PBXGroup; children = ( - 76B3B4CCA7886CC75FFCF9656D10AD03 /* ISO8601DateFormatterValueTransformer.h */, - EA6CB7DF499DDA0B9313150859AD14F0 /* ISO8601DateFormatterValueTransformer.m */, - EC2DB7FD65BD1EA61BB08642939C3DDC /* RKISO8601DateFormatter.h */, - 28FC8B75B37315B6FEDFAC246BEDB597 /* RKISO8601DateFormatter.m */, + A16F8952CC048721F5CA32D79E71B653 /* ISO8601DateFormatterValueTransformer.h */, + A0A9019E56BAD1EE29D29A6AEDF3BC1A /* ISO8601DateFormatterValueTransformer.m */, + 83A77564DAB70186CD83920566902605 /* RKISO8601DateFormatter.h */, + 8700D74C7E8322F5645810F5DBA692B1 /* RKISO8601DateFormatter.m */, 30B8E8FB632D39C4AD04195963D8DD50 /* Support Files */, ); path = ISO8601DateFormatterValueTransformer; @@ -2810,8 +2810,8 @@ BF85FC055E4FBCDB6CE766DACB11B064 /* RKValueTransformers */ = { isa = PBXGroup; children = ( - 4839C0B94DA359E603C96FAAF9707D62 /* RKValueTransformers.h */, - FA90F3562F16E440E91FA13E29FED87A /* RKValueTransformers.m */, + 2B6C7232F24CC263AED71695EF279E34 /* RKValueTransformers.h */, + 704C843E9911E15531BA4307B0AB6D03 /* RKValueTransformers.m */, 1440A3238D63F76B4474109B3C960C81 /* Support Files */, ); path = RKValueTransformers; @@ -2820,15 +2820,15 @@ CCA510CFBEA2D207524CDA0D73C3B561 /* Products */ = { isa = PBXGroup; children = ( - 48D9F0444140EC888D96942489E879B4 /* libAFNetworking.a */, - A4365F0D13404D6A5A7FA5FE5156F9E2 /* libBolts.a */, - B2B61F565ACF0CDFAAE4247A1F8D4A5C /* libFBSDKCoreKit.a */, - BB00D6E02A224030D5BDFAF952816C36 /* libFBSDKLoginKit.a */, - 9EC619ED9963ABF73BFCE22527769210 /* libFBSDKShareKit.a */, - 115AC32B7B718A94B00F763F6051128C /* libISO8601DateFormatterValueTransformer.a */, - 69BA2E95DE6DD4BD8CCD5C2F04F31412 /* libParse.a */, + 9E042B3BA6CAF103736FF4527CF951FF /* libAFNetworking.a */, + 648066E3DB510A8F72E964D968AAA219 /* libBolts.a */, + 48D2279C54480FB712244BACA57F6212 /* libFBSDKCoreKit.a */, + 93BF262897FA3F05F3FDF601D8CB04A7 /* libFBSDKLoginKit.a */, + CDB7AF2EC4C8BD16B16801E52002B702 /* libFBSDKShareKit.a */, + BAD26E583A45E51D16E0FA2F67CB7CA3 /* libISO8601DateFormatterValueTransformer.a */, + 9FE092D9D9FA0698D276FB74E5D3C4EB /* libParse.a */, 149E15962A38A8DACF6A9781F4A92F22 /* libPods.a */, - 991823AD655E78B8754FB6DE31C15928 /* libRKValueTransformers.a */, + 41BC1E717C434D21A5472F44C601A2B7 /* libRKValueTransformers.a */, B0F9682AC6A9C5259D9F3D4BCCD455B1 /* libRestKit.a */, A54BA714770BA8ED007819BC352FEB7C /* libSOCKit.a */, 4E37F47F8B8CC9C91B39061A7536E3E9 /* libTransitionKit.a */, @@ -2847,33 +2847,33 @@ D8FA314E92C275EA40D64B30C667D251 /* FBSDKLoginKit */ = { isa = PBXGroup; children = ( - 132DA86A6F8F171F7FC7130F078FFCE1 /* FBSDKLoginButton.h */, - F747176FC803B53FE0AC39C84633F516 /* FBSDKLoginButton.m */, - 72D0BB4387B18BC30B9E1DFA837849CF /* FBSDKLoginCompletion.h */, - B9254F90896402000DEE03CA2001F4A0 /* FBSDKLoginCompletion.m */, - 44AC358011ABD9D6C4C840D2F2EAA419 /* FBSDKLoginCompletion+Internal.h */, - F86021BC8DF5012821F54BBFC611409E /* FBSDKLoginConstants.h */, - 8EB6F1445D886E9B17EB6D384EE6DF8F /* FBSDKLoginConstants.m */, - 0AD87F2B55AE1CC46DE21D8EC71A1A65 /* FBSDKLoginError.h */, - C565C7D7E5AC00E6AB9CDCF110BC3C25 /* FBSDKLoginError.m */, - E29A4EC1C5F11EA0A4FDAD2152F177FA /* FBSDKLoginKit.h */, - 0DBE3A827C4CAF42FAF19063819A6576 /* FBSDKLoginKit+Internal.h */, - 1A7CF9343BE7F2F1B6FB78E1A12A6B72 /* FBSDKLoginManager.h */, - BB557FE6B9E9C5D59E6A3DEB4AB7846E /* FBSDKLoginManager.m */, - 99FE17414C621D6F3A13235F179D4CB8 /* FBSDKLoginManager+Internal.h */, - 932E74B6527148FA6780C77E8DBF2ED5 /* FBSDKLoginManagerLogger.h */, - 9D3A56A201096D2EE5931E4024DA7419 /* FBSDKLoginManagerLogger.m */, - 82E686107E1090E17BFD23A272EE10CA /* FBSDKLoginManagerLoginResult.h */, - AA6AE3659CB5F993D0249F89C25AD457 /* FBSDKLoginManagerLoginResult.m */, - B4DD5861C8879004366D84A43D21E0EB /* FBSDKLoginManagerLoginResult+Internal.h */, - AEFD765B313DFFD0B0729C789E148EF3 /* FBSDKLoginTooltipView.h */, - 9EBC7480ED94D3BDC49F07CF67845245 /* FBSDKLoginTooltipView.m */, - 5A4672908B1FD7E4D44907A16C893880 /* FBSDKLoginUtility.h */, - 691DE4C572928B4D4009AA95D722D4C0 /* FBSDKLoginUtility.m */, - E54E8701407F893752653C4221AF069C /* FBSDKTooltipView.h */, - 8C5C8164C6C45E75534AA683EB3EE80B /* FBSDKTooltipView.m */, - 184AA3B1233A04E41BF6626A6B9D8891 /* _FBSDKLoginRecoveryAttempter.h */, - B306BF5D4F5F8F5EDE605D550B1C60E4 /* _FBSDKLoginRecoveryAttempter.m */, + 9494BB00014D0192A01360063AA70BE0 /* FBSDKLoginButton.h */, + A42C8D72C0DD9F94735982945AB06235 /* FBSDKLoginButton.m */, + C098C23FB2DF99933279373E8B3D452E /* FBSDKLoginCompletion.h */, + F03034CE4131076A48731504480259EB /* FBSDKLoginCompletion.m */, + 6C9FEB49ADBD54B9FD7533801BB5380F /* FBSDKLoginCompletion+Internal.h */, + B43EF13062A276FCA06A9386DCA1F36F /* FBSDKLoginConstants.h */, + EF50F0DB0BC4C86C22F26686C14E853A /* FBSDKLoginConstants.m */, + 06F0EB1FDCF792E30B358C159A66CE09 /* FBSDKLoginError.h */, + A32731565F3850539FE9BBB6231B50DE /* FBSDKLoginError.m */, + C771ECF49E63DA4D6AD0B964CDA4DC94 /* FBSDKLoginKit.h */, + ECA1143F260DB3AEBD94D656E8DF43EB /* FBSDKLoginKit+Internal.h */, + 31DC2BEB54C59BD2AC3FFC21BDBB71E5 /* FBSDKLoginManager.h */, + 7EA68C5837BA086C1AB0730D5D664A75 /* FBSDKLoginManager.m */, + A2ACF4A5ED3EA611505A0F4017817898 /* FBSDKLoginManager+Internal.h */, + 48D467EF578B57E2381B95690763CFA8 /* FBSDKLoginManagerLogger.h */, + E657E2943C7D36EEAE242DB32FDDFA8D /* FBSDKLoginManagerLogger.m */, + 510604FAF87C394AFADB9A5D564F3AEB /* FBSDKLoginManagerLoginResult.h */, + FEF337FAA2E9DD4BA7619CC58CCFEE27 /* FBSDKLoginManagerLoginResult.m */, + 908DBE6B62FE286E8E2B65AB8471172C /* FBSDKLoginManagerLoginResult+Internal.h */, + 60E9ACA9DCB6DFF036B60A0C51E4A5FF /* FBSDKLoginTooltipView.h */, + 4A643D621DB5B92B641E0E85372BA98E /* FBSDKLoginTooltipView.m */, + 7DFCEA97612DEB2723DF40E6FFFC5D26 /* FBSDKLoginUtility.h */, + D19C9E56F232605C57E9A412AF3031FA /* FBSDKLoginUtility.m */, + F32F686BFA58B3430620EE17161144FE /* FBSDKTooltipView.h */, + F094D3053EC8059B43C8FDE85B6CC097 /* FBSDKTooltipView.m */, + 450E74CFABCD4AC3721543ED32395800 /* _FBSDKLoginRecoveryAttempter.h */, + 5CEDED5603A9C216D88239CD22DAD12F /* _FBSDKLoginRecoveryAttempter.m */, 3469EB0551979288C3680B8569507614 /* Support Files */, ); path = FBSDKLoginKit; @@ -2882,161 +2882,161 @@ DB7767554DE90C6D7F4BD0C504716532 /* arc */ = { isa = PBXGroup; children = ( - 4E373E20F8B2B8C3F9D13CB19C365A5B /* FBSDKAccessToken.h */, - EE91C76BB85C4E576878A7495046B128 /* FBSDKAccessToken.m */, - 29BDAC347646877BAF67F12CBA39BDB2 /* FBSDKAccessTokenCache.h */, - EB1F007AC472787A75B816C5E983D202 /* FBSDKAccessTokenCache.m */, - FF8B340E1E07288B43D2125E1C95D71E /* FBSDKAccessTokenCacheV3.h */, - 6AF7D10C408FD6D8AB132E00A1837154 /* FBSDKAccessTokenCacheV3.m */, - EAF2E74037EC3A295A7DD2A670A1D20C /* FBSDKAccessTokenCacheV3_17.h */, - 35A73E0B40DC10C4D7D7B780D2C67F00 /* FBSDKAccessTokenCacheV3_17.m */, - 386296E81D7A932F1BD2EAE4210CD7B3 /* FBSDKAccessTokenCacheV3_21.h */, - BB1463FA77383563F1C437523A44E1A7 /* FBSDKAccessTokenCacheV3_21.m */, - 36625BA3EB692FB9405C776E41327F85 /* FBSDKAccessTokenCacheV4.h */, - 551D1565F536116924C965E8BC843AEC /* FBSDKAccessTokenCacheV4.m */, - 65A4F7F6E3DD2EA0621A632278E51E25 /* FBSDKAccessTokenCaching.h */, - 04DEAAD70B0460B7272FDFBAD65C2F1A /* FBSDKAppEvents.h */, - 2EBD9E78DE2BF6EF77A771D225D5E591 /* FBSDKAppEvents.m */, - C21A8ADE7B5A34350D10B56CD7A8761D /* FBSDKAppEvents+Internal.h */, - 15FDA819E4A67B0052C5B32B6C6BC32C /* FBSDKAppEventsDeviceInfo.h */, - E0932D59414A78A0F565507651988C6E /* FBSDKAppEventsDeviceInfo.m */, - 506B72DC5629AC3D911C7391ADADB54E /* FBSDKAppEventsState.h */, - 28D76BC349DBB9D1197FFC7ED4732AAA /* FBSDKAppEventsState.m */, - F34EDF50D35D822209224F910D198B22 /* FBSDKAppEventsStateManager.h */, - 3367B0B681D943417FA5E440D899F4CC /* FBSDKAppEventsStateManager.m */, - 4312B7DA20D0FDC68E026677B16FB93B /* FBSDKAppEventsUtility.h */, - 5B5E002FD0140DA26430A35510C313F8 /* FBSDKAppEventsUtility.m */, - F5A2FEDDD4FAA9868A664F18973566D7 /* FBSDKAppLinkResolver.h */, - D5F4A79DAE04667AB0D76DAE48003BF2 /* FBSDKAppLinkResolver.m */, - A794CC4D4A2C1FBA46304C8A08FBBF13 /* FBSDKAppLinkUtility.h */, - 84B84882EEBE825A5C543B49CE80D4F1 /* FBSDKAppLinkUtility.m */, - C2C5BFAAE603122C4F742787E40F1FA8 /* FBSDKApplicationDelegate.h */, - 73DF5CF1E91847F2BBD8BC5574BE7A24 /* FBSDKApplicationDelegate.m */, - 58F67B018A57B934A2029E1BB32BFEB5 /* FBSDKApplicationDelegate+Internal.h */, - FAE0A480CEB462BDB4902AA2752B2A92 /* FBSDKAudioResourceLoader.h */, - 3A8C0790E53BC4B6EA94B51E24532E88 /* FBSDKAudioResourceLoader.m */, - B9DD727DB3D3919B717CCB2FAE4F0055 /* FBSDKBase64.h */, - A633AA451BBF3810EF096AFCD04B189D /* FBSDKBase64.m */, - 4E79911FE858017F50A495D51DA3DE5D /* FBSDKBoltsMeasurementEventListener.h */, - 985451595F8F27101D95712CABD99D9C /* FBSDKBoltsMeasurementEventListener.m */, - 39EA90D4F4D435F351B6F8488F1F81CF /* FBSDKBridgeAPICrypto.h */, - 099E18F815C1869B7833BD3221BA0636 /* FBSDKBridgeAPICrypto.m */, - D3DE4E8FCBBE262C58F8AC13C7DF4FC0 /* FBSDKBridgeAPIProtocol.h */, - F21D0FB2302BFB55563A040B9162207A /* FBSDKBridgeAPIProtocolNativeV1.h */, - 093F04A337062D005B479463914EBC72 /* FBSDKBridgeAPIProtocolNativeV1.m */, - 1011B8135A3EB4DCC7EF201AE71B3FC8 /* FBSDKBridgeAPIProtocolType.h */, - C8EEE74C77FC0E8CCF6F9BF61F91F077 /* FBSDKBridgeAPIProtocolWebV1.h */, - F651120BBA44138D57BED00C2ED1EF68 /* FBSDKBridgeAPIProtocolWebV1.m */, - 6C56FB7EA3918F4E9420A03CBD1DD4C8 /* FBSDKBridgeAPIProtocolWebV2.h */, - 056454EF3FADBB01D32D7C28A920E5D6 /* FBSDKBridgeAPIProtocolWebV2.m */, - B44F9A0151A29D7133BB6B1A3BBFA048 /* FBSDKBridgeAPIRequest.h */, - FD42CC4829F51D2B45C0EDB14E79F901 /* FBSDKBridgeAPIRequest.m */, - 51B4EC6E2C9E5D654933455F7EE946B3 /* FBSDKBridgeAPIRequest+Private.h */, - B45B64C4D463C82AD88669B314F94E5E /* FBSDKBridgeAPIResponse.h */, - 637C1162277BA70B8FC486099BA5E68A /* FBSDKBridgeAPIResponse.m */, - E4FFF0B95027627ED5EBB9BE910229E5 /* FBSDKButton.h */, - 90EF6645B1C52A9102DE489C1AEB98C0 /* FBSDKButton.m */, - 0801E5E29361C01869760055DF9A576B /* FBSDKButton+Subclass.h */, - 98E26BE57B0986BD287273920656152C /* FBSDKCloseIcon.h */, - E331A609413384712D37CBCA13A36822 /* FBSDKCloseIcon.m */, - 1860C6036F41AF4136B179EC2D9939E3 /* FBSDKColor.h */, - A89DBD55CC24CC46C0835D3E92056BAF /* FBSDKColor.m */, - 6E3C2F4799E92C0B65ADDB13C693731F /* FBSDKConstants.h */, - 1955631553D95C0ED5688DA6F29CC8E6 /* FBSDKConstants.m */, - 66C559E290710757C262E9572627F8BA /* FBSDKContainerViewController.h */, - CBCE8C9C024E2B9BFFE1FA847AB1076D /* FBSDKContainerViewController.m */, - FBD4CF261D1D2C204727792A7FD59D0D /* FBSDKCopying.h */, - AA8D4BA554A6B6C1B406BECC4D387E3F /* FBSDKCoreKit.h */, - 2FD7126F63E44E22CF5C50BA6B03A193 /* FBSDKCoreKit+Internal.h */, - DD19C370DA2FF7DD5B14BFC2239460EC /* FBSDKCrypto.h */, - 86D941FDEEC92E2EA2835097C2161C04 /* FBSDKCrypto.m */, - 6D5B659F40540D61E87428BFCB17AF51 /* FBSDKDialogConfiguration.h */, - 2281F1087FCCD198F1FD69A1A5036483 /* FBSDKDialogConfiguration.m */, - 32087D68AA15B65193CE803974E093B2 /* FBSDKDynamicFrameworkLoader.h */, - 8268565FACDED1D6C7B9BE1728B7EC67 /* FBSDKError.h */, - 2890440E42FDEC4C76D4C02BC10E1DD4 /* FBSDKError.m */, - 749C7452D497A9A10B0021891AC18286 /* FBSDKErrorConfiguration.h */, - 64DC079156B1C3D9892D30F49E7CF06A /* FBSDKErrorConfiguration.m */, - 249868FBCC4788A742D8CFD87310BE9C /* FBSDKErrorRecoveryAttempter.h */, - 6D4B932F8281FFA4CACCD488B25D8399 /* FBSDKErrorRecoveryAttempter.m */, - D4EDDE3B74C6C46CB945C40C67C4412A /* FBSDKErrorRecoveryConfiguration.h */, - 0C0A1A0341B691B932463C02DCAFDDC0 /* FBSDKErrorRecoveryConfiguration.m */, - 4943E9CC3F93FDF967E81314D76CC855 /* FBSDKGraphErrorRecoveryProcessor.h */, - 3893550463B3F2896DA11E95A24787C5 /* FBSDKGraphErrorRecoveryProcessor.m */, - 0AD287C54F7CB5375C2852F3503334A8 /* FBSDKGraphRequest.h */, - 63D0078344D4783DAE24EA204C2F2B76 /* FBSDKGraphRequest.m */, - E10BAEA96BC88D721B89668384A854DF /* FBSDKGraphRequest+Internal.h */, - 88B6008DB095748E5DD60D4357F1130E /* FBSDKGraphRequestBody.h */, - 1DBD4C55AA3FFD740DBC08F5C47D6E0C /* FBSDKGraphRequestBody.m */, - A54DE73C817619BCCC8C09FEBFAAE717 /* FBSDKGraphRequestConnection.h */, - D3C357F8599ACB541583E1B55372A148 /* FBSDKGraphRequestConnection.m */, - 45488E198C9CA5E2D83FDDD1A6F2C741 /* FBSDKGraphRequestConnection+Internal.h */, - 9EF29D84C9187AAE24AA165B2347ACAD /* FBSDKGraphRequestDataAttachment.h */, - 42C79B025767C1D9A3147013CE056436 /* FBSDKGraphRequestDataAttachment.m */, - 0E1C86507B3C7A9D987C1EE846A6E40F /* FBSDKGraphRequestMetadata.h */, - B7200C42FD7821618E5C729A6715D406 /* FBSDKGraphRequestMetadata.m */, - 20C0209C7621AD4E7C7E895393FEEAAE /* FBSDKGraphRequestPiggybackManager.h */, - 7FBEBBBD069AC4F0A63136014F0C9C54 /* FBSDKGraphRequestPiggybackManager.m */, - 82F4B771C010B07B8269F863B9D5E124 /* FBSDKIcon.h */, - 6E5BFC99B4A9E8CFC77CB440E5B6A68F /* FBSDKIcon.m */, - CCB66A62E1727B274EBDAE6A324F1EF1 /* FBSDKInternalUtility.h */, - 12DB62145E101EECBBF2B0ECBD3625D6 /* FBSDKInternalUtility.m */, - 4533001C2D55630F9C37C6627CA516F3 /* FBSDKKeychainStore.h */, - E5B4019C9415D7F5E3578EB347E6428C /* FBSDKKeychainStore.m */, - B177AF318ABF25BE42BEEE03E5A4504D /* FBSDKKeychainStoreViaBundleID.h */, - E01BDF8B06C7ABC8B0E2C8198B12534E /* FBSDKKeychainStoreViaBundleID.m */, - 3732A1AC8F240E488FC16C8707FF1E6C /* FBSDKLogger.h */, - D58141339BD4E1AD139F6D8757D818ED /* FBSDKLogger.m */, - FE7E4B7205CCF39AB7DC993A7C496D35 /* FBSDKLogo.h */, - 9D87F51C610B0FE64B3895D47FCAF2B6 /* FBSDKLogo.m */, - 8BBDCAE31F786B578147D2A338A29E5B /* FBSDKMacros.h */, - AD669A1EAE15893820BD4F03CDCE9EDE /* FBSDKMaleSilhouetteIcon.h */, - 3F812EB07D870BBFD5F42E05E17C7391 /* FBSDKMaleSilhouetteIcon.m */, - 94241AC9E14ADC6F4BF3A74F37C7443B /* FBSDKMath.h */, - 36BFEC5CD6E83BF4C00AC37F0AFF0C3F /* FBSDKMath.m */, - A061230EB53B9A3D0D74C5E8D62680CA /* FBSDKMonotonicTime.h */, - A1DAFA76443338477CB91F2DC0FEDC9E /* FBSDKMonotonicTime.m */, - E15937F78BA7C53854BA468EA624BF4A /* FBSDKMutableCopying.h */, - C18CECEFC7124D4D8DB78DDCA56F3E73 /* FBSDKPaymentObserver.h */, - 1779F15C59809673515A3EBCF2C22457 /* FBSDKPaymentObserver.m */, - BC87F50A886AA4FC59C239579C59B23A /* FBSDKProfile.h */, - 7B96A479BB821E005E1541AE443F5296 /* FBSDKProfile.m */, - 193263D0A1C4B4903D81B084F3616AC7 /* FBSDKProfile+Internal.h */, - CF7DFB4A5A35BCE03D459F72C536D132 /* FBSDKProfilePictureView.h */, - 7353118F412B2CA3124108B64BE5533C /* FBSDKProfilePictureView.m */, - 2166AF7026817E78A1616576AA382EE3 /* FBSDKServerConfiguration.h */, - 82DEAB301EC606D81DDB79F260128939 /* FBSDKServerConfiguration.m */, - BBEEA079EE2C1E3F7FCF0D4A242F3338 /* FBSDKServerConfiguration+Internal.h */, - 36A148580114BC82A5E01A2432F549D8 /* FBSDKServerConfigurationManager.h */, - 172810485903145DA5B543BCCDD9710D /* FBSDKServerConfigurationManager.m */, - 44AFCC4FD732944B15943D675B7BBD73 /* FBSDKServerConfigurationManager+Internal.h */, - 4C11C508533F23B09A4472C54933C508 /* FBSDKSettings.h */, - 1AD3DE9B80F57FA325D62663B4BFF9A0 /* FBSDKSettings.m */, - 449D2F1679AC195C51DC348284B99B77 /* FBSDKSettings+Internal.h */, - 520097C3241654D444726517A1906AD9 /* FBSDKSystemAccountStoreAdapter.h */, - C487CF8BD9293F62ADC3EC7ED11DF7E2 /* FBSDKSystemAccountStoreAdapter.m */, - DEC313363BCD979A9C39D7B1E66A2755 /* FBSDKTestUsersManager.h */, - 91D0862B2FAC5E1E4D6ACAB14BE40FD0 /* FBSDKTestUsersManager.m */, - 8FE2369D45F007102130145D672D47C7 /* FBSDKTimeSpentData.h */, - 5EA7DD3F8E2A43DDC4BC7D78D495BE88 /* FBSDKTimeSpentData.m */, - 8C61DC5A959A8218D355C33FFDD05395 /* FBSDKTriStateBOOL.h */, - 5765993E55A9BEF96BE2124E9CC1E550 /* FBSDKTriStateBOOL.m */, - EE4A34C51200E57B9DBB1BE412048AE7 /* FBSDKTypeUtility.h */, - C7249D4C5D5FE59893DC804D17C271BD /* FBSDKTypeUtility.m */, - DFA8A38F2CAE4CCC62494E192CD68C97 /* FBSDKUIUtility.h */, - D6D2578CC6CCBAA314053520BEEDFC51 /* FBSDKURLConnection.h */, - D2C830B4D9FDB6DA319A8D346A942692 /* FBSDKURLConnection.m */, - 61F8017FEF232B21270544D23BE67BBF /* FBSDKURLOpening.h */, - 49B32C446E230AF54905CEEA3305D3DB /* FBSDKUtility.h */, - 6A37F6B69937BDBBB1A609C50E20359F /* FBSDKUtility.m */, - 2F1964D552EA65831BBC604C32B2ED59 /* FBSDKViewImpressionTracker.h */, - E067CA9E21A26662DA824DAC1A521DD1 /* FBSDKViewImpressionTracker.m */, - 2002E8422D89C583334968262BDCE8E7 /* FBSDKWebDialog.h */, - 62463AED6B63FD1BFCF534909E594242 /* FBSDKWebDialog.m */, - 839CDF95C7EB745D855A1D1CD5E90C77 /* FBSDKWebDialogView.h */, - 1CAD9C68AAF00E405CF6AAA2841B7C73 /* FBSDKWebDialogView.m */, - 1124CA6C3A9CDC4513ADC2393C447BE8 /* _FBSDKTemporaryErrorRecoveryAttempter.h */, - B6707D507E40761A2A3DB33A5EBE648E /* _FBSDKTemporaryErrorRecoveryAttempter.m */, + F467F77ECC07330116C0DD45D3349ABE /* FBSDKAccessToken.h */, + 72F7D5CD8944B77904BC197DDC8A0487 /* FBSDKAccessToken.m */, + 394002AEF7F5079BD3B473255A1C49AD /* FBSDKAccessTokenCache.h */, + 120D59FB9C748DAA660CEDCF7C419164 /* FBSDKAccessTokenCache.m */, + CC2CE8BA55B6B6E6E126D87B37D05550 /* FBSDKAccessTokenCacheV3.h */, + C652B9BA4AA5750AC29A27FB796AF725 /* FBSDKAccessTokenCacheV3.m */, + A52CB1C60BA79230A59E65B9417DBEB7 /* FBSDKAccessTokenCacheV3_17.h */, + EBB7426F9BCC68E345009243DF01C283 /* FBSDKAccessTokenCacheV3_17.m */, + 609E48B1FF82F30564A193C81AB2A1B5 /* FBSDKAccessTokenCacheV3_21.h */, + A38B68BCFCED22FDC00C7FD4F3FFA717 /* FBSDKAccessTokenCacheV3_21.m */, + ADE2CE2451E917A2482234B50A41DC19 /* FBSDKAccessTokenCacheV4.h */, + 831275D794F272F2349F89FC9BA48F1D /* FBSDKAccessTokenCacheV4.m */, + 5CF14FE1AA01684F58CFF8617EC29EC7 /* FBSDKAccessTokenCaching.h */, + 6D2DCC014C9FB0F4706377719D5E23C9 /* FBSDKAppEvents.h */, + 6D9866C1156E2B6A59D2996350AB5075 /* FBSDKAppEvents.m */, + 53DAE1074125BBBF142D3C53E50E06F1 /* FBSDKAppEvents+Internal.h */, + D8EA6434D262B562E0ABC8F28481403A /* FBSDKAppEventsDeviceInfo.h */, + 31B4E41F62E37AA98F6E9D5C10E984D0 /* FBSDKAppEventsDeviceInfo.m */, + 9F8E73E13D56D4420C7C239F8B5BF990 /* FBSDKAppEventsState.h */, + D4FD1E6A7772359C67DC337EEDF88556 /* FBSDKAppEventsState.m */, + 0329086571C053B994B8FFFEABD553B5 /* FBSDKAppEventsStateManager.h */, + E20B6D6E904DDB31FF4F6654458B9DE0 /* FBSDKAppEventsStateManager.m */, + A029888328B7A6D3EFA37ED1B3C36DAE /* FBSDKAppEventsUtility.h */, + 94EDA6573DFD479F710386D53249C2EF /* FBSDKAppEventsUtility.m */, + A460B6A4FC8055E468FF739FF0D108FE /* FBSDKAppLinkResolver.h */, + E00DAE8196002E6DC11BB84AA2B653B0 /* FBSDKAppLinkResolver.m */, + F05A809941BD13C88B6FA6CFB232C9FA /* FBSDKAppLinkUtility.h */, + 5DB6831426CD60ECF9EBFBFE5472A43A /* FBSDKAppLinkUtility.m */, + 83EED38CF3D996DFEA263619B0B9CBD1 /* FBSDKApplicationDelegate.h */, + 146309296F3083D07EB7A9F31D3148AB /* FBSDKApplicationDelegate.m */, + F6E04668789EA254AADF60D794FE065E /* FBSDKApplicationDelegate+Internal.h */, + 65CF7764149142958978827C966A07B1 /* FBSDKAudioResourceLoader.h */, + 7BCB5525ABC0E01EC9A5E1CE8D86FA7E /* FBSDKAudioResourceLoader.m */, + E6E72495A6EA20D898402EC82E0701BB /* FBSDKBase64.h */, + 33AA2846801F30C2C7C711FD553C91A2 /* FBSDKBase64.m */, + 7C2FB169D00DE47B9815271C62B2D855 /* FBSDKBoltsMeasurementEventListener.h */, + A7E0C2515B7C55E949D9562B88288232 /* FBSDKBoltsMeasurementEventListener.m */, + D3FDBE0B0295691A9DA68BB91774B2DF /* FBSDKBridgeAPICrypto.h */, + E67D4E4FAAA111F401888720828746B0 /* FBSDKBridgeAPICrypto.m */, + 1C58296A347F3D84D11A281BDEFE97B5 /* FBSDKBridgeAPIProtocol.h */, + 660799EF24CF28527054B3FA6E25BE2A /* FBSDKBridgeAPIProtocolNativeV1.h */, + B2853B351DB05A9B0740AF256122A30E /* FBSDKBridgeAPIProtocolNativeV1.m */, + 24255CB705666DD05FB446873255ED8B /* FBSDKBridgeAPIProtocolType.h */, + BBA379404F39E04206E50A2AE079F9AE /* FBSDKBridgeAPIProtocolWebV1.h */, + 4DDCD516E785CE5AEDF724D7D5383676 /* FBSDKBridgeAPIProtocolWebV1.m */, + 2BE2D580E317F0D1965AC68793F7AEBB /* FBSDKBridgeAPIProtocolWebV2.h */, + 20D0533465677FE2928E4C7429447F7E /* FBSDKBridgeAPIProtocolWebV2.m */, + 5D50D28CFFDB33D36C5123FE9819503C /* FBSDKBridgeAPIRequest.h */, + FA5ECFC11F48F3DA152D886DDA9845D1 /* FBSDKBridgeAPIRequest.m */, + CD1576A49CCA998DA56187764ACAF229 /* FBSDKBridgeAPIRequest+Private.h */, + 63AA0219BE65F798CB2F7604B4733571 /* FBSDKBridgeAPIResponse.h */, + F65CAB845C91DF90E658BF037D025845 /* FBSDKBridgeAPIResponse.m */, + 6EA7BE6071FB5DACC51089FB613BA39E /* FBSDKButton.h */, + 7244F71460BF559B73433E28D79F2BFD /* FBSDKButton.m */, + C2D770ED2372F2017C6D6A85DD81705C /* FBSDKButton+Subclass.h */, + E6FE7D7622EC7CAC9524E96D99D05722 /* FBSDKCloseIcon.h */, + 78FBD963927DF94B45B5FF19AAEDDEC0 /* FBSDKCloseIcon.m */, + 0820BC8566C53EE58544095722F3A841 /* FBSDKColor.h */, + 2B98304BCBDE12F2AE18BD8F746580A4 /* FBSDKColor.m */, + 879994DB9DEDD7064DD1B700F3FF8690 /* FBSDKConstants.h */, + 249C09A58FE9BB84BAC197A821EC4678 /* FBSDKConstants.m */, + ED8FC29E783D5AAFA886556B21AFC84E /* FBSDKContainerViewController.h */, + CB4A5DFDF0DD0D7EA9036EDB4D3554F2 /* FBSDKContainerViewController.m */, + AB4729343B161E71126051A18EF77E49 /* FBSDKCopying.h */, + 323A920BBC78CC4F32DC36633840DF3E /* FBSDKCoreKit.h */, + 05E89D5ACCE63E55AA659EFB8A18A9B5 /* FBSDKCoreKit+Internal.h */, + FBE8E68D5C283727E833E0BB6BFC38D2 /* FBSDKCrypto.h */, + 38E608FDFE07ABF00DB09AE6F9F9DA28 /* FBSDKCrypto.m */, + 2A90605386336758A5E6828DC0AB5D68 /* FBSDKDialogConfiguration.h */, + E6218FC4CE717BE3D2902995538A0A63 /* FBSDKDialogConfiguration.m */, + EC8288294A4CE8FE42A9FED3E1514725 /* FBSDKDynamicFrameworkLoader.h */, + 8B538AE03EC7635223FC2B7353D18B63 /* FBSDKError.h */, + 36491A250DFAF0D996CC5E60467D5DDA /* FBSDKError.m */, + 69DE218A0D590D2C3678DE52CDFAA862 /* FBSDKErrorConfiguration.h */, + 5927976E25757090DC699126B558DAD7 /* FBSDKErrorConfiguration.m */, + 6C88718F1FAACE95C1F6DC1798456734 /* FBSDKErrorRecoveryAttempter.h */, + B8D4E64BEFC88B60711EE57C1834C5F8 /* FBSDKErrorRecoveryAttempter.m */, + A49E03FC7C84FA3293B38677DC681CCE /* FBSDKErrorRecoveryConfiguration.h */, + 241D1E7CB01A87C87C02CE0340F5DF83 /* FBSDKErrorRecoveryConfiguration.m */, + AE305CCADD2010E8C1E698C4DAC84DDB /* FBSDKGraphErrorRecoveryProcessor.h */, + 2651DC8D21016E6D886F1577AAA22972 /* FBSDKGraphErrorRecoveryProcessor.m */, + 2C97568E00B081386FD3982DE3AD286B /* FBSDKGraphRequest.h */, + F5B33E74020A598273E33D945062DA71 /* FBSDKGraphRequest.m */, + E3839692964A8570C65FDBF51FA010CE /* FBSDKGraphRequest+Internal.h */, + 93400D2B380DA1CACA54DEAAFAE23D12 /* FBSDKGraphRequestBody.h */, + 0F96B01B6AD0F525E17F2074B2EA1EB1 /* FBSDKGraphRequestBody.m */, + 27000997EDF8B991F4B6E05E67C67113 /* FBSDKGraphRequestConnection.h */, + D74C6F651D26C64847074B31212962B9 /* FBSDKGraphRequestConnection.m */, + BA219A4F7C2E6E8A63E64A02CF33B649 /* FBSDKGraphRequestConnection+Internal.h */, + 6EDB6A316CDD5D018128E1D3136DFC1B /* FBSDKGraphRequestDataAttachment.h */, + 6D0E4808B55472B808C0B84583C9BDD1 /* FBSDKGraphRequestDataAttachment.m */, + 87E3F9DDEC8ABB74E9B0B828E43E6A50 /* FBSDKGraphRequestMetadata.h */, + 29D48AAEE67B134EE8B0622C1BCF7F8D /* FBSDKGraphRequestMetadata.m */, + 2827FE6F0B040DD6EE347F254F0F17BB /* FBSDKGraphRequestPiggybackManager.h */, + 5050C345988F196D52CCAA4890D4A5AC /* FBSDKGraphRequestPiggybackManager.m */, + 8D597043658824DCA8FDD8CFFEE3BC6D /* FBSDKIcon.h */, + B06587D0A22379F4450AB6A83497A7DA /* FBSDKIcon.m */, + C691D2172575794DB216679D3693503D /* FBSDKInternalUtility.h */, + A9CC220B3BB7353C4CE25F3392EC1458 /* FBSDKInternalUtility.m */, + 9402AA910E3CEEBA2FBF5C33C47593DC /* FBSDKKeychainStore.h */, + A558554954AE61057C9CF3B86E31AAF1 /* FBSDKKeychainStore.m */, + A01032B0129DF076CF6B8F1997C4BA6F /* FBSDKKeychainStoreViaBundleID.h */, + 49ECF8C520F56BF1EE925AEC28EE0110 /* FBSDKKeychainStoreViaBundleID.m */, + 6DCA15FE1B9E0D7F046522F5521C2102 /* FBSDKLogger.h */, + BDB19BCF4582BF9F10ABA1C43D14ED9A /* FBSDKLogger.m */, + AEE98356256460D105F89B9C6DE23A69 /* FBSDKLogo.h */, + 983296A9BF9A0D8836E833993EB26598 /* FBSDKLogo.m */, + A808BCEC34959F6ECE35E478017AAE04 /* FBSDKMacros.h */, + D659356F1EF1F1C346376A400B5070E9 /* FBSDKMaleSilhouetteIcon.h */, + F8C129748EFBA2068A762010AD12AEAD /* FBSDKMaleSilhouetteIcon.m */, + B5F5ADC1E77EC8A29EE990ABF17E8326 /* FBSDKMath.h */, + 4241AE7BF35421577B79454BFEF8418F /* FBSDKMath.m */, + 4AE04A545B1286F2CB61AF35B668B691 /* FBSDKMonotonicTime.h */, + A1A84243D8AF41257B228911CE638D24 /* FBSDKMonotonicTime.m */, + 6D8623E61A0D98F47738887CE7BE2378 /* FBSDKMutableCopying.h */, + 54BEF4E5D47F21E4FC7E996E4AE29C66 /* FBSDKPaymentObserver.h */, + 46229044B27E123F58A7778EF094817E /* FBSDKPaymentObserver.m */, + 88ED45C6893FA0E82BD12E765DBC00CA /* FBSDKProfile.h */, + 15CD896F18B0B8E074D5B6AC246B7278 /* FBSDKProfile.m */, + 1B828DC073409B28F4FD2BAE7E834D87 /* FBSDKProfile+Internal.h */, + F468CD8A34AFAA3F31C0B27B7124A4FF /* FBSDKProfilePictureView.h */, + 8886812D5A18522530AA7A0B5774BB0A /* FBSDKProfilePictureView.m */, + 06ED326096FE698B59E6B3A44613D460 /* FBSDKServerConfiguration.h */, + 34DA5ED519561747CB24898F11335A79 /* FBSDKServerConfiguration.m */, + C961228BEA0830266F67F826D8BD866B /* FBSDKServerConfiguration+Internal.h */, + 3A6880AAFC8F7351294B649E15B6AD7F /* FBSDKServerConfigurationManager.h */, + 746403A7CAF94F397758C55ECC719138 /* FBSDKServerConfigurationManager.m */, + EE1FCC8E5B8DC53DA187352C0FEF6F6D /* FBSDKServerConfigurationManager+Internal.h */, + 1F79510BB12DF693E6899A336B944ACA /* FBSDKSettings.h */, + 4606174FBA2263954939C4357F44E377 /* FBSDKSettings.m */, + 4D8D1722F7CFA8E2CC3AE2D1CE6B99CF /* FBSDKSettings+Internal.h */, + 6474A77F06A843F81E145096D09D7711 /* FBSDKSystemAccountStoreAdapter.h */, + 45A6C38D859E4B8E2327A07A3AD329D0 /* FBSDKSystemAccountStoreAdapter.m */, + 277CDEE8DFC2D7DBE20B8F1E0A377FC4 /* FBSDKTestUsersManager.h */, + 657D21EB951543C1C5D4637E284EB184 /* FBSDKTestUsersManager.m */, + BA4DA1672A2EE0D0650B35B2EE788AF2 /* FBSDKTimeSpentData.h */, + AD4EA5AF253C62AF6EE7B3838BE1FE11 /* FBSDKTimeSpentData.m */, + B37E9B2C0FC3DA2D2D135ED6BFBFCDD0 /* FBSDKTriStateBOOL.h */, + 42849FC04B9D5B542DF3CC22E779A9A1 /* FBSDKTriStateBOOL.m */, + EEA9D6955C305B5F1B6C27161FE11070 /* FBSDKTypeUtility.h */, + 5923B48367DC6DA262FA7C70FFE94DB0 /* FBSDKTypeUtility.m */, + 308B85DD48F9A76C1D714CB80189B6E1 /* FBSDKUIUtility.h */, + 818CFC14E623AB5BE69BCA0E501ABFD6 /* FBSDKURLConnection.h */, + 3D859BEB9EC0DAF7A490519CC6ACB7D2 /* FBSDKURLConnection.m */, + 8BBEDB49F89EFB9B6465EF82E36C1A49 /* FBSDKURLOpening.h */, + D069FE63005F6068C36B6B3E8C125E9D /* FBSDKUtility.h */, + 76865DCF9853952106158A4BF7621602 /* FBSDKUtility.m */, + 3D17058F2F424FB1C4E4BCDCBB95C1FE /* FBSDKViewImpressionTracker.h */, + C1A7C3AA5681EC1EBFD4DD40121772C1 /* FBSDKViewImpressionTracker.m */, + 7DE49CE008144B7919F76B3E247361EE /* FBSDKWebDialog.h */, + 342BC152E1A501D98AA8468B20BC2FBF /* FBSDKWebDialog.m */, + CD2EA7078774EF7F78C945F81FD00274 /* FBSDKWebDialogView.h */, + 49AA101256B7C595F77F9BA67DED0212 /* FBSDKWebDialogView.m */, + 35E46F0E48D76D7792ECCC0237C8E9CF /* _FBSDKTemporaryErrorRecoveryAttempter.h */, + 52BA832282A6296691283BA45A6A6C75 /* _FBSDKTemporaryErrorRecoveryAttempter.m */, ); name = arc; sourceTree = ""; @@ -3044,27 +3044,27 @@ EFF0EAAC511F6D20942CACAD5560A527 /* AppLinks */ = { isa = PBXGroup; children = ( - D4BBD3B141794583886966E10E9DE885 /* BFAppLink.h */, - 6C8452D720D17A4AE9F49D703F4456F4 /* BFAppLink.m */, - 23780D118CBD55B9811B664EAE111A4F /* BFAppLinkNavigation.h */, - 2B9375688AA4B17E0481C9DEF5E1CDC7 /* BFAppLinkNavigation.m */, - 8FC8E6958F515A1458DD253105E635AB /* BFAppLinkResolving.h */, - C5558E780E37E74781BB1613EF8D6F1A /* BFAppLinkReturnToRefererController.h */, - BD6248F1913A738A21279EA50BBFB18E /* BFAppLinkReturnToRefererController.m */, - FF2F36415F8EDA1603770F277D605DAC /* BFAppLinkReturnToRefererView.h */, - 2BCD6FD3DADE66AF00AD766F8C7CAAEE /* BFAppLinkReturnToRefererView.m */, - 84E51A0ADCB24DAC5F16586A7E22A679 /* BFAppLinkReturnToRefererView_Internal.h */, - ABF0B6755B46A73A4D5A66DC91176994 /* BFAppLinkTarget.h */, - 58B8D0C5A6A7DDEE013D14931B007DA4 /* BFAppLinkTarget.m */, - 6B38BFE99240E2343065A81810BCD299 /* BFAppLink_Internal.h */, - E2590DB19BEB23E0CD50EA9B430C4328 /* BFMeasurementEvent.h */, - 20904F67CBBE7208D5F1E68654CE0F20 /* BFMeasurementEvent.m */, - 2CBA80D14BCC38865278570CF75FD31B /* BFMeasurementEvent_Internal.h */, - 3C21952B82AFD2B07F65F1B3D08202AE /* BFURL.h */, - 502CF173BC61117E6EE98B0AECE5CB5F /* BFURL.m */, - 45498ABE1A6B5EAA74C26A43CF36BFB7 /* BFURL_Internal.h */, - 7FD3846A7DAFF7196AF5C2F45BCD8A5A /* BFWebViewAppLinkResolver.h */, - 79E1D204CE90D1BA1A7B1CE8E631A4A8 /* BFWebViewAppLinkResolver.m */, + 56EBCB94D96659853670372C2E4764EA /* BFAppLink.h */, + FADD5491782A7EB7B850FCCD70452A0E /* BFAppLink.m */, + 197B3FB536BC0102E5F4615D92F57286 /* BFAppLinkNavigation.h */, + BECD89C94556181D2DC5E1EC956F6551 /* BFAppLinkNavigation.m */, + 2628FFC954B5343B03FF5E09727D6E1A /* BFAppLinkResolving.h */, + 859C15C373D18E927177F1CA54850FFA /* BFAppLinkReturnToRefererController.h */, + BC5C6C0CB488B2B5EB58A44CB5006846 /* BFAppLinkReturnToRefererController.m */, + 882529F2F51F25982209C54BD8E7C6F4 /* BFAppLinkReturnToRefererView.h */, + 8AF2FF1B953178FD56002A938919F24E /* BFAppLinkReturnToRefererView.m */, + 279536DCCF7BB43F3A2CAF27A31B5C57 /* BFAppLinkReturnToRefererView_Internal.h */, + 989869E1193232EE4E322636E8236CEE /* BFAppLinkTarget.h */, + F86C3277131832CC3F71CEDEA893D4D6 /* BFAppLinkTarget.m */, + 3BE5A10627DC0B9C01F875BD06336D9E /* BFAppLink_Internal.h */, + D80E9A1290BCA30333F7035E22898FD4 /* BFMeasurementEvent.h */, + 184E2F2A8FAA80A676143A0D7ED71EA6 /* BFMeasurementEvent.m */, + A7D2882D92D1796229569A9CC1C6A400 /* BFMeasurementEvent_Internal.h */, + 1FB89A08C5C8B78FBEBC245FD9B7D1E3 /* BFURL.h */, + DC2CCF0D50C6CF8EA37A8C6EECE1581E /* BFURL.m */, + DC48544F9CAD4D07227D206EF611973D /* BFURL_Internal.h */, + F2C4601420612A6E42D46B435019EBC8 /* BFWebViewAppLinkResolver.h */, + 363004150CBDDD99121ED1C9FEE4CE8C /* BFWebViewAppLinkResolver.m */, ); name = AppLinks; sourceTree = ""; @@ -3072,91 +3072,91 @@ F479732DA6868638434BB551820FE0FD /* FBSDKShareKit */ = { isa = PBXGroup; children = ( - 0604B97C12B3337FD1CACD5908DADF8F /* FBSDKAppGroupAddDialog.h */, - 238732EAA8097AAF32A176A68CD82F76 /* FBSDKAppGroupAddDialog.m */, - 8960D7D3ED69E1B3DCCEB842BB3727DD /* FBSDKAppGroupContent.h */, - 7A3F937AE0B76FE001B1424707650BE3 /* FBSDKAppGroupContent.m */, - D2FD3D5C2EE761325B9883A907C8BC4E /* FBSDKAppGroupJoinDialog.h */, - D99237E043D8D55F742E4FFCE42D91BF /* FBSDKAppGroupJoinDialog.m */, - B9DDC28C55F77A12AE9ED00D59C5CDF6 /* FBSDKAppInviteContent.h */, - 0072CE5DF3D9990F609BD5035548F5B9 /* FBSDKAppInviteContent.m */, - 6D80A7028E913FB27600E32FE2F0D0D0 /* FBSDKAppInviteDialog.h */, - 1592F16F5E573F913E7D111CEB121A50 /* FBSDKAppInviteDialog.m */, - 02FC7E859C916A1DBF3665CCB705934E /* FBSDKCheckmarkIcon.h */, - D7084EA8F2963F3F4F4C3902295FC9E8 /* FBSDKCheckmarkIcon.m */, - 5D4096B259A00B3CA7AFD492984A10BA /* FBSDKGameRequestContent.h */, - 80F8EAC3DBA16F147C2EED3D1B93D248 /* FBSDKGameRequestContent.m */, - 6DFB97640F65DA922830BFCD6E8BAE3F /* FBSDKGameRequestDialog.h */, - 33BBC7950FBFD8EC38A39966E30603F6 /* FBSDKGameRequestDialog.m */, - 6E7F4A2F3E63A394F39CDBFEF74FFB35 /* FBSDKGameRequestFrictionlessRecipientCache.h */, - 1BF338323FECE8F074D22D8BD870DF10 /* FBSDKGameRequestFrictionlessRecipientCache.m */, - 4123C94C7948B9704563A505B3014AB6 /* FBSDKLikeActionController.h */, - F9D67943D4B100689C01F858F4E29E79 /* FBSDKLikeActionController.m */, - 64092AE7CD9ED392CE2C1C98A9D583BA /* FBSDKLikeActionControllerCache.h */, - 986BA44834A1379FA62C25B6BA8F688C /* FBSDKLikeActionControllerCache.m */, - C4B17C271B89B911A8934903A0081DAB /* FBSDKLikeBoxBorderView.h */, - EE70C5E8CCF28AFCC633F82542872D63 /* FBSDKLikeBoxBorderView.m */, - 94B2708249CC1A4C374BE0BE9A5C2161 /* FBSDKLikeBoxView.h */, - 12807CE1156EF23D621FBB87101DEF6D /* FBSDKLikeBoxView.m */, - 191B64353A25EF72E4466B2F6B9EBEE3 /* FBSDKLikeButton.h */, - DC31DCE7EACED0F72777050473D30EFC /* FBSDKLikeButton.m */, - 57633529551BBEE1B15067746D4C1A0F /* FBSDKLikeButton+Internal.h */, - 0B6D5A9ACB11850D607ADB4A0BF03613 /* FBSDKLikeButtonPopWAV.h */, - 9AF33E0422D0D6894776A47D9A815993 /* FBSDKLikeButtonPopWAV.m */, - A17C481C0F1C64EB4AB1CFBAF183C08E /* FBSDKLikeControl.h */, - C928A35FC17069C2883652CB9DFD6587 /* FBSDKLikeControl.m */, - 7078C0E27AB4BBE276699BEA6B6332B4 /* FBSDKLikeControl+Internal.h */, - 40D041AA460AE7AD2009874357D2204A /* FBSDKLikeDialog.h */, - 2623CB720FCCE67AE1CCB1219F214621 /* FBSDKLikeDialog.m */, - 5DC7FE94FD4993099292F9042265623F /* FBSDKLikeObjectType.h */, - F492164F566E8CFCD2E106F61A435A12 /* FBSDKLikeObjectType.m */, - 5BFF0A5FD4D4F15BC52A5CF35AA8BD33 /* FBSDKLiking.h */, - 3D3EBBEF6D5B4018AA707132922DC9B4 /* FBSDKMessageDialog.h */, - 4EAC1A8028073BA5B4C512B18244EBE8 /* FBSDKMessageDialog.m */, - D06E4D2A257CB23AD3B3C24D65250338 /* FBSDKMessengerIcon.h */, - 1127B3C5AFB734B232FDDA51D4E340BE /* FBSDKMessengerIcon.m */, - 0AA098F387A57A706C7677CC210587E7 /* FBSDKSendButton.h */, - 844E60D98084AFA1C1191666646A744B /* FBSDKSendButton.m */, - 6F5B4BDBF3900CA5DDAB9B63E2EE063C /* FBSDKShareAPI.h */, - AF0E2DA4583C19DA08D84DBF506EC7F3 /* FBSDKShareAPI.m */, - 547B33431DB5136808EDC0F26EC4181E /* FBSDKShareButton.h */, - FC75AD2CED5E67E206316FE8FCE7F2E8 /* FBSDKShareButton.m */, - 4F6C04F3A381B95E747E5867DB4C81EE /* FBSDKShareConstants.h */, - D20725012BA649DB28A11E8B87CB03B2 /* FBSDKShareConstants.m */, - F73ADC2CD4C8BD33E777C07D6362654C /* FBSDKShareDefines.h */, - C6D760F3CA5FB942A7E23EA61A3C62A7 /* FBSDKShareDialog.h */, - 95C3B6319C8BEC9A72589989076B040E /* FBSDKShareDialog.m */, - 2210879128FAFD55EE381E85138A6E97 /* FBSDKShareDialogMode.h */, - 1F9AAC2C6FF818D6EC48169DC75AF8C0 /* FBSDKShareDialogMode.m */, - BA24326AC3CD75BD5A00788CED0B32FC /* FBSDKShareError.h */, - 234BE7352A8ED0F63714ADF373DC4713 /* FBSDKShareError.m */, - 3863A24C8545BD8471114044940471D0 /* FBSDKShareKit.h */, - 875545166E1B56B37A2E9CEAE067A11D /* FBSDKShareKit+Internal.h */, - F0030B71A6DC75CE9672B5AFBC38BCF4 /* FBSDKShareLinkContent.h */, - B6DB762A22230B1B2984E7A10A6D4431 /* FBSDKShareLinkContent.m */, - 46CD7CED669BB2E7D7C29361322568D4 /* FBSDKShareLinkContent+Internal.h */, - 26E851E7927031416617D440DC5A8D91 /* FBSDKShareOpenGraphAction.h */, - 8C1ADD04949F1ABA82756CBA171DA5EB /* FBSDKShareOpenGraphAction.m */, - C53B22331817009F0D1E49A90BC5F35C /* FBSDKShareOpenGraphContent.h */, - 7CA70E2AE68629BDED8957B97443D682 /* FBSDKShareOpenGraphContent.m */, - D3C4E0A343874015ABB97CF3BB6C0347 /* FBSDKShareOpenGraphObject.h */, - 14B70CCCA8DFFB7FFCA35AC2170FF307 /* FBSDKShareOpenGraphObject.m */, - 7D657474E403B993C149CC1F51629EB2 /* FBSDKShareOpenGraphValueContainer.h */, - BADE0370EA2CCD1D36599137E9D79FB3 /* FBSDKShareOpenGraphValueContainer.m */, - C3209F7B3A0C5594C5382D2E17A02B97 /* FBSDKShareOpenGraphValueContainer+Internal.h */, - 5EE9FF43D6D45C08905B6D53343591FA /* FBSDKSharePhoto.h */, - 4EEA34DB3E95971CAA4099B9C4DD8C74 /* FBSDKSharePhoto.m */, - 796C03163B04A83EF5A5417BD0C59CA0 /* FBSDKSharePhotoContent.h */, - 141ACE54E47BD21C3F91FE031C2F27A4 /* FBSDKSharePhotoContent.m */, - 22736BBB7E29843BFD25AF6EA526FD54 /* FBSDKShareUtility.h */, - 83106886E9A710F3579F2BBF35D8C99C /* FBSDKShareUtility.m */, - D65F4C0A6ED3ABC94426B9A2AFEA2790 /* FBSDKShareVideo.h */, - 2A451A543F61480DA16C5AF92075E754 /* FBSDKShareVideo.m */, - 4CEB2F6C3776B2FAA2762E5C908FA891 /* FBSDKShareVideoContent.h */, - 6D324B0F0C1603B017A0A195535F6737 /* FBSDKShareVideoContent.m */, - A153B9B34087207BF3F8415D46B5F822 /* FBSDKSharing.h */, - 1B0819CE19B7C8DFC00BC735593D2EBA /* FBSDKSharingButton.h */, - E07CBEB86CA06BB0017BCA02C44A2757 /* FBSDKSharingContent.h */, + 1A369AE523AE5428A6D9F6550614FE9D /* FBSDKAppGroupAddDialog.h */, + DDE80DA7A434D17F0D915E284F20436A /* FBSDKAppGroupAddDialog.m */, + 309C5A18E36D89DDB6DB309BFFB3A074 /* FBSDKAppGroupContent.h */, + D155C2F3D678574A9479B645207148FB /* FBSDKAppGroupContent.m */, + C8A30076FFE0AE4D80EEE9B5F111E0C4 /* FBSDKAppGroupJoinDialog.h */, + 35438CE7344049DBB7B9FFEB80DB1414 /* FBSDKAppGroupJoinDialog.m */, + 705296E1BAA1CCE01D2761F16F9A39F9 /* FBSDKAppInviteContent.h */, + 73F2E6274BAD1AD8D9324B3838256FB6 /* FBSDKAppInviteContent.m */, + 0315685B7458D2A9C07F1B237F76CFF2 /* FBSDKAppInviteDialog.h */, + EBCC0954F36C8CBCF2C1BABC5BE29972 /* FBSDKAppInviteDialog.m */, + 81F2926280C12B9767563CFF770FAF7B /* FBSDKCheckmarkIcon.h */, + 4BE29891FEDF3029F65A3606EE7B3D88 /* FBSDKCheckmarkIcon.m */, + DE37807E0B1639A13221C0F6E94C015F /* FBSDKGameRequestContent.h */, + 54920BD88D6A715796BB19A547213023 /* FBSDKGameRequestContent.m */, + 520663893D6DE2A86D1D57299989DD21 /* FBSDKGameRequestDialog.h */, + 44335A04DAA32B00C92160838C5E789D /* FBSDKGameRequestDialog.m */, + EDF463E3926C635EC2862C35B35EF0C0 /* FBSDKGameRequestFrictionlessRecipientCache.h */, + 5B68D5F4D24A36ACF45400FAB8AB23DE /* FBSDKGameRequestFrictionlessRecipientCache.m */, + 8AE382F6E1CC26178A9E3BBA1C473DEB /* FBSDKLikeActionController.h */, + 0F072CC41C2003448531F2F1DD2C3BAF /* FBSDKLikeActionController.m */, + 335878EBC1626AF73529ED5CDC829E08 /* FBSDKLikeActionControllerCache.h */, + B921F27786A108BF382F49799F4ECEFE /* FBSDKLikeActionControllerCache.m */, + B8C2915B7FBC79D5F729A8D454EC471C /* FBSDKLikeBoxBorderView.h */, + 6358EB9DDDA9062C6B886A954CBC76D9 /* FBSDKLikeBoxBorderView.m */, + ADF8EC9446037AA127D75EE89650002F /* FBSDKLikeBoxView.h */, + 00C31AE91F93FAC03797A08CB87C7EB4 /* FBSDKLikeBoxView.m */, + 58D0E28B48A7E32F9FF7005DEE64C416 /* FBSDKLikeButton.h */, + 0133F272E02689C37483595FA9CE6B21 /* FBSDKLikeButton.m */, + 38A6D9AA344FD2AE5B4D70FAD5062AB4 /* FBSDKLikeButton+Internal.h */, + 14BB822079E39C44A662265EDC832BED /* FBSDKLikeButtonPopWAV.h */, + 8379929D10F949C09F2BE6851EC97373 /* FBSDKLikeButtonPopWAV.m */, + A8A665A78A257570FD4F9CE8A2EF5694 /* FBSDKLikeControl.h */, + 0D3C379231F1FECE1C711149F33EBEFB /* FBSDKLikeControl.m */, + B9A3B0127A1E076EFFEE0400BFD1119C /* FBSDKLikeControl+Internal.h */, + E060B56260BC85ECD94761E793A08F02 /* FBSDKLikeDialog.h */, + 31A09CE6942D32E70D7AF420C0C28F98 /* FBSDKLikeDialog.m */, + 8C2E4681A2F967A6C4E522E08078ADC0 /* FBSDKLikeObjectType.h */, + B6DC44432F551A7E862B5307DF7F040D /* FBSDKLikeObjectType.m */, + 5E5EF79FF8D3C83E7DCBD82CE96B138E /* FBSDKLiking.h */, + 71B842D80B25BEB8AE3A797A724D7CC5 /* FBSDKMessageDialog.h */, + 2BD5B84023B338476E31F24FC2D689A0 /* FBSDKMessageDialog.m */, + CDD888F1AE46F190163FFB9C51D7BF06 /* FBSDKMessengerIcon.h */, + ACB0039F3DE0903BD2479336BCB4AAF5 /* FBSDKMessengerIcon.m */, + DFCBF9D0B251D3EABC70AD75A30E8294 /* FBSDKSendButton.h */, + 23EF53286E86923DB4C02DDCCA3A21CA /* FBSDKSendButton.m */, + B5F3FAED1517988ED94F54E9B8DA4E0A /* FBSDKShareAPI.h */, + 9C8807B3161750EADE6E8BD164724CE6 /* FBSDKShareAPI.m */, + 6B0E9CC89B4C9510C51F6F8388E25C21 /* FBSDKShareButton.h */, + D3882165793F00E2FD03DD7A903E3AB4 /* FBSDKShareButton.m */, + E6A1DDF7D1694E9370A0A4CE320117CE /* FBSDKShareConstants.h */, + D58E0BB2015D810A38A6E5641DCBDB8E /* FBSDKShareConstants.m */, + DF42A50DA3169ABB374EFAA43DCFDE36 /* FBSDKShareDefines.h */, + E7626F8EE9D02540ADF0E346CC475FD9 /* FBSDKShareDialog.h */, + 8F5835DFBC8A6E5D025F957021AE5352 /* FBSDKShareDialog.m */, + AA6E69D0F5432BE35E8DA343DA6002CE /* FBSDKShareDialogMode.h */, + 260BC0B46C2DA2BCD9F62462348F6673 /* FBSDKShareDialogMode.m */, + 7BF25C2B0ED8E85EC0D52225FEAAF054 /* FBSDKShareError.h */, + E3D7CAFA467CC207516594F8CA235BE1 /* FBSDKShareError.m */, + 225675EE77126480507353150E5D4EF3 /* FBSDKShareKit.h */, + 2A2200960479E4759E2409514013ECE9 /* FBSDKShareKit+Internal.h */, + 4D03DAC12EBD0056CB252F2F287B6402 /* FBSDKShareLinkContent.h */, + D2C9DD7C685BBD2CC7EAB4A3433549B4 /* FBSDKShareLinkContent.m */, + 99FF411F081193D28CAB98DD501F9F72 /* FBSDKShareLinkContent+Internal.h */, + C90D137341FF777D06387AF9304BB376 /* FBSDKShareOpenGraphAction.h */, + DD3B394CF966217416F1237E9D4D804F /* FBSDKShareOpenGraphAction.m */, + BE9C3BEACE061C48E9A8427C3059F7E5 /* FBSDKShareOpenGraphContent.h */, + C0ACB6CAB80A7E3DC5CFFE36AC450565 /* FBSDKShareOpenGraphContent.m */, + 1B1DBB7A5A5EE9B44DE86876D074207E /* FBSDKShareOpenGraphObject.h */, + CD8DCF741100D5A960D3D87F3F11EC5B /* FBSDKShareOpenGraphObject.m */, + E321A3BE2B4DC782EA81A69D33894C29 /* FBSDKShareOpenGraphValueContainer.h */, + C3212BA31250F0C8DE1BD1FAF02207C7 /* FBSDKShareOpenGraphValueContainer.m */, + 778AD9DB2CF0543C914F6BD394974650 /* FBSDKShareOpenGraphValueContainer+Internal.h */, + 63188CFF04051D2C52F225740A033D43 /* FBSDKSharePhoto.h */, + 98522B603FC459FC9758D1108318CB8C /* FBSDKSharePhoto.m */, + 69A5C357BDE6663375E1CBBBE08B3440 /* FBSDKSharePhotoContent.h */, + 6E52C541820F569B77A87A851D648583 /* FBSDKSharePhotoContent.m */, + BE300C64CFEC0B1AF5E5B10FCAD254AB /* FBSDKShareUtility.h */, + 25FA6116451E734C381D4F3606124CE3 /* FBSDKShareUtility.m */, + 19DB73C3D0C75D9D0E53F4111D417C01 /* FBSDKShareVideo.h */, + 73305F9BCF2563CCA2E4C15B8DDCFD68 /* FBSDKShareVideo.m */, + 9605F7221341E3EA07630ABF2DE6BC6F /* FBSDKShareVideoContent.h */, + 93C724D27975298397EBCBA024D076F2 /* FBSDKShareVideoContent.m */, + 433C981127868BA24B0F88745E7CB575 /* FBSDKSharing.h */, + FE6B1221BB48461DA615B55D5D19370E /* FBSDKSharingButton.h */, + CC65F8627E5C5856896FED7D2BB1CF7B /* FBSDKSharingContent.h */, 3C56505E72D2FE8EBB1539F6D52CDF90 /* Support Files */, ); path = FBSDKShareKit; @@ -3177,192 +3177,421 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 1D36BC931AD498CF9B9A0BEF59933AD4 /* Headers */ = { + 3115B24E624C7DD822717FD35A51E1FF /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 0C36B88BBA60864543814D356AD0A3F1 /* FBSDKLoginButton.h in Headers */, - 65471025DA624297CC0E4AFA9F0A9606 /* FBSDKLoginCompletion+Internal.h in Headers */, - F27AFE96B8CC62E50BFFA4512890BED3 /* FBSDKLoginCompletion.h in Headers */, - 6B49C041DD1CA69CEE38844A46FC981E /* FBSDKLoginConstants.h in Headers */, - 9503242D0ABD828C67CE6E9E87FCF808 /* FBSDKLoginError.h in Headers */, - 4E564D425B4E8F7E80F8FF529F31CC9B /* FBSDKLoginKit+Internal.h in Headers */, - 1FA13C3A4A2F8C73655A15942B256594 /* FBSDKLoginKit.h in Headers */, - B57D2233586CE946A5305009412BCBAF /* FBSDKLoginManager+Internal.h in Headers */, - 22EEC676AC4EE23B3D39371191826420 /* FBSDKLoginManager.h in Headers */, - 7CB8D2616D83001B8A93141CA2BF13A1 /* FBSDKLoginManagerLogger.h in Headers */, - 38DA7CBB8D5C6233F7777A13CAAB2333 /* FBSDKLoginManagerLoginResult+Internal.h in Headers */, - 89E610C03C0AB4A658E6FD92A3FC7AA6 /* FBSDKLoginManagerLoginResult.h in Headers */, - 464F5DBB26E86201503ED7F5BB400525 /* FBSDKLoginTooltipView.h in Headers */, - D56AF31D9DF6EB1FC56376F94A42BAB7 /* FBSDKLoginUtility.h in Headers */, - 16AD66178FB1BFEF1C8E27AC7FEF05FD /* FBSDKTooltipView.h in Headers */, - E06BD0AF1D3248CA82CEBFEB3A8B737D /* _FBSDKLoginRecoveryAttempter.h in Headers */, + 29665B4CBF57ED49FE333D5DA6FE41D7 /* AFHTTPClient.h in Headers */, + 71952ADC9172B4F79B433C367D5BB740 /* AFHTTPRequestOperation.h in Headers */, + 02B35C6C34045B1BF7204DFB7206A709 /* AFImageRequestOperation.h in Headers */, + 2F3CC7CAE02FD6568812F880AA12E4F3 /* AFJSONRequestOperation.h in Headers */, + 0B6D9B4A94DAA97E2060C438E2866348 /* AFNetworkActivityIndicatorManager.h in Headers */, + DFD7418E4229FADCB3AB85CF73F581F1 /* AFNetworking.h in Headers */, + 8AC9E8395C32554D980DB74ED4B0A3A1 /* AFPropertyListRequestOperation.h in Headers */, + 6C13D116F0AA2A78C4B546E3E0728D09 /* AFURLConnectionOperation.h in Headers */, + C3F55093F84D852D9EA113F49D7A45B2 /* AFXMLRequestOperation.h in Headers */, + 9047EED945F054752070AE2C7FD84036 /* UIImageView+AFNetworking.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 529CFAAEC66CAA1C5E41A5E836F8BA11 /* Headers */ = { + 3A1F7870E56AFBCFF878F6276B003CAA /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - EDBFDC230E9792C5B794EB33FC97B481 /* RKValueTransformers.h in Headers */, + 73C1B903BAB9CD9165C6D8C590C88DBC /* BFTask+Private.h in Headers */, + B81C208B8B66805EFD26D6173026AC2C /* PFACL.h in Headers */, + 6D0555F3AFF71C16C54E98092E4304D3 /* PFACLPrivate.h in Headers */, + F18BE7AC26E9A094AE2C652CFC6218DF /* PFACLState.h in Headers */, + DD31C197056FA652D3BF1274DF5E2908 /* PFACLState_Private.h in Headers */, + F3DE094871B28D233F86D9227E7478D2 /* PFAlertView.h in Headers */, + D1840F29C46B62C16A3A6D9AD6989746 /* PFAnalytics.h in Headers */, + 34B9717B9BD9E717234A4BA4FA9B23CF /* PFAnalyticsController.h in Headers */, + 19033C9781DE147AFF45BF404A35C4DA /* PFAnalyticsUtilities.h in Headers */, + 43A88B5ACE21230C0F2524DB074C8763 /* PFAnalytics_Private.h in Headers */, + 748865BAC2CF0646028E14F1F901D0F3 /* PFAnonymousAuthenticationProvider.h in Headers */, + 8933370B0D400B59134BF817F36355D1 /* PFAnonymousUtils.h in Headers */, + 8B02A33743FFEA58A1A3FAB553DA0113 /* PFAnonymousUtils_Private.h in Headers */, + 27746C9143CAB9F08BA89403D37A40DC /* PFApplication.h in Headers */, + 38C42E03CBD6DE6CD7C011646AF8AAE7 /* PFAssert.h in Headers */, + 686D001D6513106185D9F01DB6478979 /* PFAsyncTaskQueue.h in Headers */, + 7FC64428627661A597A1CE287993D8DD /* PFBase64Encoder.h in Headers */, + F570FB09B9F8F909125EE214EC64B5A5 /* PFBaseState.h in Headers */, + FA618E7DD8CB586A62073380FA9E713C /* PFCachedQueryController.h in Headers */, + 6A7C7334A9A8FCAE1C9E5992882D056E /* PFCategoryLoader.h in Headers */, + 064DCF0B2619737983918A9B8B8CDBED /* PFCloud.h in Headers */, + A26DC0F983CC9217FBFCBAC0F78FD6F0 /* PFCloudCodeController.h in Headers */, + DDE2AFE85B97C78711AE7DAA39EC0323 /* PFCommandCache.h in Headers */, + 49183D48B7BA396016E94E50E7E508FC /* PFCommandCache_Private.h in Headers */, + D68FAFBD744D9F40FBAF34C3ABBE57F9 /* PFCommandResult.h in Headers */, + 904E9698791C4696CD82E78D1D525A5A /* PFCommandRunning.h in Headers */, + F02B0D1C7F2D67E431DF0E4DE980BC34 /* PFCommandRunningConstants.h in Headers */, + B6F7BF2A4B571A2A96D44A9E3D428C14 /* PFCommandURLRequestConstructor.h in Headers */, + 34800A407ADEB815F529E3CD4630210D /* PFConfig.h in Headers */, + 0DEE41F44DA5A7BFBE8FE62391313D9D /* PFConfigController.h in Headers */, + 9A2BEF19F863F33E38EBFAD7EA9701CB /* PFConfig_Private.h in Headers */, + FEB09DE83CDF651DE7AA0D755192CD2A /* PFConstants.h in Headers */, + D88C209C8E7E7DE5ADA119895BE96C8D /* PFCoreDataProvider.h in Headers */, + 88AEFFFCE8B5D10A029F8591B492C4B6 /* PFCoreManager.h in Headers */, + 1C61916D50D61F450ED07778959FD4EE /* PFCurrentConfigController.h in Headers */, + 7023F33F30099D075DB99C2AD2DA1289 /* PFCurrentInstallationController.h in Headers */, + 38CDA66FB02AD0480B135A0E9C4DDD09 /* PFCurrentObjectControlling.h in Headers */, + 253CCABFC921C06E3305CE89A60B9181 /* PFCurrentUserController.h in Headers */, + 72FE90A10832697092610577418DDCFD /* PFDataProvider.h in Headers */, + 5E18C27CBCF0F5DBBC749F0C5609544C /* PFDateFormatter.h in Headers */, + 0DD8321B7E4063220C99652AD25B964C /* PFDecoder.h in Headers */, + 2F7B41D4DACC8C02B4AE6A30485A3911 /* PFDefaultACLController.h in Headers */, + C65CB0D6735491709C9373251CB51613 /* PFDevice.h in Headers */, + EC4E03293E8AC92E74CAF38BCC259132 /* PFEncoder.h in Headers */, + 7E2762508F6A1FF99C3EC5ACB2A10FED /* PFErrorUtilities.h in Headers */, + F27976D070F7ADC10BE6FF4093AB9974 /* PFEventuallyPin.h in Headers */, + B636B7948DCCB21E44E36BE91F1E0AB4 /* PFEventuallyQueue.h in Headers */, + 3EAE0DAA5517A55E52E5A5D099DB7AA4 /* PFEventuallyQueue_Private.h in Headers */, + 7AED011BAA61F2E740F903C7336A780C /* PFFieldOperation.h in Headers */, + 59FCCEC297EE635331865784CB7C5FA7 /* PFFieldOperationDecoder.h in Headers */, + F643790D3224850C9A4E9654A85B75A2 /* PFFile.h in Headers */, + 15EE0A24606B3F4E67CB9D72923B661C /* PFFileController.h in Headers */, + 2CD9A0FAC248398D39B7BC82F3ED4BF7 /* PFFileDataStream.h in Headers */, + 67B5CAAE671A5C8A9B817CE3699AF6E3 /* PFFileManager.h in Headers */, + 165AFC43C7723E5B35C8E9DB4A1E119B /* PFFileStagingController.h in Headers */, + 3F2315BDE91F31DA56D01EF5660DAE6D /* PFFileState.h in Headers */, + 242C15C9117EAC106F61B34CC69472D1 /* PFFileState_Private.h in Headers */, + 2C46FF817FBEDF337CE624F0A893F0A6 /* PFFile_Private.h in Headers */, + 7CF19BC1C67AA7C5AE473611DFA0C772 /* PFGeoPoint.h in Headers */, + 55DD89F9A164C6F15D3A0254F67CCFC6 /* PFGeoPointPrivate.h in Headers */, + CC4ABE41A3D33815B2E5D706EE5EB7A7 /* PFHTTPRequest.h in Headers */, + E9E1E5F9CE1A7DE976690D18B60B3F61 /* PFHTTPURLRequestConstructor.h in Headers */, + 0D3178232D43DE91EDF29D61D52D0DEF /* PFHash.h in Headers */, + 9E495012585497CA83EBB7D85B66DE18 /* PFInstallation.h in Headers */, + F9569D66DA03563FB9E44DFCB07FC939 /* PFInstallationConstants.h in Headers */, + 5B08DE41E6A3A50C09C167F05DF8F50A /* PFInstallationController.h in Headers */, + FA2C80A7C39D1B44B797709642EC08B2 /* PFInstallationIdentifierStore.h in Headers */, + 2E5619D195A0E92BAB39F541E7AD328E /* PFInstallationIdentifierStore_Private.h in Headers */, + A48A2777BF06EEFBC6370A833DD677CD /* PFInstallationPrivate.h in Headers */, + 58A6BF39F429E731177F766F2747CCA4 /* PFInternalUtils.h in Headers */, + C53105DD999BE471CFE79E49C78876E4 /* PFJSONSerialization.h in Headers */, + CD11060540E1FD78F974E30302AE395A /* PFKeyValueCache.h in Headers */, + 452561965CF2A1AF6B261E3B86511A1A /* PFKeyValueCache_Private.h in Headers */, + 08EA08F97E9E3BDA10151C17762295C3 /* PFKeychainStore.h in Headers */, + D2E9272E48AC9EE46E077B11011DD71E /* PFLocationManager.h in Headers */, + 2AAF9F612DA70EAD241A04B84E617778 /* PFLogger.h in Headers */, + 6208EB35E2A3EF808B1C66D4D64C5DF0 /* PFLogging.h in Headers */, + A8BCAA6D6A877FBD2678E40ECE7689F4 /* PFMacros.h in Headers */, + CAFEF18BDA8E890B2A34E2F062ED481D /* PFMultiProcessFileLock.h in Headers */, + AEFB17E8179A42AC76C5C46678A1E984 /* PFMultiProcessFileLockController.h in Headers */, + 684F6D48516C29D70B837257203CB999 /* PFMulticastDelegate.h in Headers */, + E8E7BC50C1B835A84120AF1A5303B050 /* PFMutableACLState.h in Headers */, + FADE57698ABC737DED667D6C7A77FB0E /* PFMutableFileState.h in Headers */, + 271E62B60998688EC159938AF3432FDE /* PFMutableObjectState.h in Headers */, + 4FC26ED4C9894736D998A022CE894DFC /* PFMutablePushState.h in Headers */, + C3B1E6F9F461A3253BF8E3430905C0C2 /* PFMutableQueryState.h in Headers */, + 7ED422249D15540B85E10655FE6C988D /* PFMutableRelationState.h in Headers */, + 90DF7AFB3CDCC7BDF91701989F51605E /* PFMutableUserState.h in Headers */, + 45AAE02BB82AA9DED26A85409DB656A6 /* PFNetworkActivityIndicatorManager.h in Headers */, + 43019C013CEA899E11CFEBB8D60D87D2 /* PFNetworkCommand.h in Headers */, + EE75A228F7AB72AFC98019C41213ED37 /* PFNullability.h in Headers */, + C57EEF06E76A210624FE97692F3569DF /* PFObject+Subclass.h in Headers */, + 5B982F856921827D002F7C5CCE73DDAA /* PFObject.h in Headers */, + A83BC9FF2850C219FA5FC77FF4111CBF /* PFObjectBatchController.h in Headers */, + FDE2BCBED2CDDB457C2E9BAC04F2FD0F /* PFObjectConstants.h in Headers */, + 0C2BF68FAB2FC4C272026B79778040EC /* PFObjectController.h in Headers */, + 9BC4B4C5BE92BABC56261D0983597C6D /* PFObjectController_Private.h in Headers */, + C2974D56740D2B143BA77AA3509AC10F /* PFObjectControlling.h in Headers */, + 4D46CDEAAFB03920B313BDBC2F235570 /* PFObjectEstimatedData.h in Headers */, + 61870EAC96BBBA435263587CC7F2E48F /* PFObjectFileCoder.h in Headers */, + B7D722B63D54738AE3DFDE260A5EA8B1 /* PFObjectFileCodingLogic.h in Headers */, + 71FDAA355554DC3828CB576F2053B15D /* PFObjectFilePersistenceController.h in Headers */, + 9ACE7DB11559893303A60C131C1C651A /* PFObjectLocalIdStore.h in Headers */, + 3DF26B936A4A112B5B60CE1C3EC8959F /* PFObjectPrivate.h in Headers */, + 6A7F2C2C80852EBF6A620AF12E900D24 /* PFObjectState.h in Headers */, + 7F476F4A55E0605F8B1BED1AAED083DB /* PFObjectState_Private.h in Headers */, + 77822739473DC952F4F5A5AEAFC0DF35 /* PFObjectSubclassInfo.h in Headers */, + 62F4B91A78FCE3413CBAC127D5151E2B /* PFObjectSubclassingController.h in Headers */, + 5EE125E8B7346490F3E3FFF8A69B2845 /* PFObjectUtilities.h in Headers */, + 006CF96B0EC8D4F5E5898DEE9891E373 /* PFOfflineObjectController.h in Headers */, + 7F31A5308B96FD7D40312D00F7FED8D1 /* PFOfflineQueryController.h in Headers */, + 55FAFAB3178952EB789197F3BD7F1EB6 /* PFOfflineQueryLogic.h in Headers */, + F04F4F51E4FED1319EA3A101BE08B5CC /* PFOfflineStore.h in Headers */, + 918020D013ED8C98F9A3A541854321D6 /* PFOperationSet.h in Headers */, + 4E7C7673802993B2D1AFF71028EECB42 /* PFPaymentTransactionObserver.h in Headers */, + 66060F4E52A075B9EF3ED69EAF8C4812 /* PFPaymentTransactionObserver_Private.h in Headers */, + 247B8D0D633AEFC395D2B80429B1A91C /* PFPin.h in Headers */, + 05D4DCDBCD5FC6951A00E3EC1B772791 /* PFPinningEventuallyQueue.h in Headers */, + 0978AC4917B7960598D540B0BCB407A4 /* PFPinningObjectStore.h in Headers */, + 81C0AEE0BDA12DD25B4808A7E6DD9459 /* PFProduct+Private.h in Headers */, + 81F1E0666FE80C4D88A3B99E120771E4 /* PFProduct.h in Headers */, + D2EAB48F7E5D4DD2A120803D4B599772 /* PFProductsRequestHandler.h in Headers */, + 5CA15F5F3A0EFA7A94D7110E3F1F8137 /* PFPropertyInfo.h in Headers */, + 6937F426816B16FCD4C8859174159C7E /* PFPropertyInfo_Private.h in Headers */, + 6919E252E16FC787AD1D9B56375F7011 /* PFPropertyInfo_Runtime.h in Headers */, + DD70E09D858BF03C89C82858C764109B /* PFPurchase.h in Headers */, + E7E38551016FB52D5C85B4E3B0B7A169 /* PFPurchaseController.h in Headers */, + E0A85D8E914368D87DEE75F0ECE2082A /* PFPush.h in Headers */, + B9D14F6B67015F967B4F523B6669BB54 /* PFPushChannelsController.h in Headers */, + FF7BAEF5786AD43C26852E973A2DFD9C /* PFPushController.h in Headers */, + 23D8FDFC8CE4359208A7EF38A5FF1035 /* PFPushManager.h in Headers */, + 492225CAF7397433B1343717CEC233C2 /* PFPushPrivate.h in Headers */, + 34355DB3FC335D6F5F14E2C436E8B880 /* PFPushState.h in Headers */, + 7723A818ADD25F8105C149DDB4EE3972 /* PFPushState_Private.h in Headers */, + D913F5B9A2D6A81B047DC2805ACB7F91 /* PFPushUtilities.h in Headers */, + 33C0113BD220073D53AF6158C83E6F35 /* PFQuery.h in Headers */, + A8F268C9D52AC5573CA492C2F7E03B39 /* PFQueryController.h in Headers */, + D984F13A369C80259E00E1ABACA927E8 /* PFQueryPrivate.h in Headers */, + 9C4AB8907669D2B957962CC3FEB63853 /* PFQueryState.h in Headers */, + E248EE46DFAF1C2BE7957D07F9951BD5 /* PFQueryState_Private.h in Headers */, + 923010B8F3329953E0A79793C8647EE1 /* PFQueryUtilities.h in Headers */, + 6950392D69B8C200487A284BA5B8D0B3 /* PFRESTAnalyticsCommand.h in Headers */, + DC4B946518DF342C5E5287B7CCBCED86 /* PFRESTCloudCommand.h in Headers */, + C040AE49A4F217651810F5F139C425CD /* PFRESTCommand.h in Headers */, + 6D82BD254178B3C9EECC246D810632E9 /* PFRESTCommand_Private.h in Headers */, + 233B0108145788C73B6DEE12D030FE98 /* PFRESTConfigCommand.h in Headers */, + D1AF91CB46215FCCEA2F679CF6667F16 /* PFRESTFileCommand.h in Headers */, + 78C9EE129A8B784811999428280E0BCA /* PFRESTObjectBatchCommand.h in Headers */, + 6309045AC92213B2E323792E8F779257 /* PFRESTObjectCommand.h in Headers */, + 476019024CC57A5B6C8E2D69E9EB636D /* PFRESTPushCommand.h in Headers */, + 2676FFF359D8A0EEE5C4B5A999B5B8F8 /* PFRESTQueryCommand.h in Headers */, + 80D7AE607ED5ABD55BDD03B17E072715 /* PFRESTSessionCommand.h in Headers */, + AA903B5AC7C383473DD981318E286C33 /* PFRESTUserCommand.h in Headers */, + D59A0303B864AF244B2644CFCBE81A58 /* PFReachability.h in Headers */, + 757C64059CB5443093CD909C0DEC74FE /* PFRelation.h in Headers */, + 6FAE65259A4C6DE098E364FB6A55FCB5 /* PFRelationPrivate.h in Headers */, + EB6745E9ADD2F0BC654769A8E83E80B3 /* PFRelationState.h in Headers */, + 98F7D66B579B9C528F943E154A0DA118 /* PFRelationState_Private.h in Headers */, + 1C798778DB7297C94C49F9B3CB284F50 /* PFRole.h in Headers */, + 67891D5D94391676B0DA81592B29101C /* PFSQLiteDatabase.h in Headers */, + BC7941F946ADB340B252C6406E2DA921 /* PFSQLiteDatabaseController.h in Headers */, + 4EDD2C991964C1B9BFB9CB3677CB0B0D /* PFSQLiteDatabaseResult.h in Headers */, + 7E438A7D61F9B7C06F0664B3920EBEB9 /* PFSQLiteDatabase_Private.h in Headers */, + 5002F32A1D34B6240D1C30F38349AD06 /* PFSQLiteStatement.h in Headers */, + 2E10AF5AABE5FF7C918CC397AEEC1C7B /* PFSession.h in Headers */, + C568E296A558287E14B65E5E078CB870 /* PFSessionController.h in Headers */, + 69D20734E1F34055E468363CDA1F14A6 /* PFSessionUtilities.h in Headers */, + 95A30E62D31A893BCB37B77FD0ED25F7 /* PFSession_Private.h in Headers */, + C8F19E6DFE73A0B5BCE6E47ED67E4904 /* PFSubclassing.h in Headers */, + 5587DF8D7396BB77AECBE77910CB4DA8 /* PFTaskQueue.h in Headers */, + 89FFA572F2CF83E1771CCC8901980550 /* PFThreadsafety.h in Headers */, + BF9D0B0AC5B64450EF283AD7DBF7BECB /* PFURLConstructor.h in Headers */, + 49F3CD714650FD1C4A5B7388AADA6B34 /* PFURLSession.h in Headers */, + 3AE182AECDA6FB112732923A4334D472 /* PFURLSessionCommandRunner.h in Headers */, + 6B34BA82691D0C8A7B4F32640D876F94 /* PFURLSessionCommandRunner_Private.h in Headers */, + 363E8CE74C4DC35B9D68AAC353A116DB /* PFURLSessionDataTaskDelegate.h in Headers */, + DB644EAC2BB8ADC18B158F5E2B54ADEA /* PFURLSessionDataTaskDelegate_Private.h in Headers */, + B2D1BE493F82C5FA62ACB829C637A9FD /* PFURLSessionFileDownloadTaskDelegate.h in Headers */, + A4FE6309DFBFDAF52061F44861DF298C /* PFURLSessionJSONDataTaskDelegate.h in Headers */, + DED63556CD89F027BCB5024069D17BF9 /* PFURLSessionUploadTaskDelegate.h in Headers */, + 29281066B368FEBFC9897E5C625ABBF0 /* PFURLSession_Private.h in Headers */, + 9586E7884852EFE6A87AA1FA26AAEAFD /* PFUser.h in Headers */, + F0AE34C414FD3DF2264466C62BCBB1E4 /* PFUserAuthenticationController.h in Headers */, + 712A6B5A32B445FE62502B2513745730 /* PFUserAuthenticationDelegate.h in Headers */, + 0CA715FE5F1135697D48CEADCCDF695E /* PFUserConstants.h in Headers */, + 54F5313BCCE28B89592A59E8729474A6 /* PFUserController.h in Headers */, + 0FAB264DFDA1EACC55A0E8E5646B7528 /* PFUserFileCodingLogic.h in Headers */, + 56B354AF9311CAA6CF3E4859B477862D /* PFUserPrivate.h in Headers */, + 0DE5C9C558993B91C4234B0C04AF1E05 /* PFUserState.h in Headers */, + E0A83A172053DF72389A5B2646F8DDC7 /* PFUserState_Private.h in Headers */, + 714FFA7F7570576D0CC3AB2471C2BBF9 /* PFWeakValue.h in Headers */, + 214D9B21E9B0C005DAA26F13F39C9122 /* Parse.h in Headers */, + 3DB2858B25E1C7C00547C227306254BE /* ParseInternal.h in Headers */, + BBAFA237B5759EDF4ED29549B8B7B434 /* ParseManager.h in Headers */, + 703F8255C8F3F10319E008C37F524F3B /* ParseModule.h in Headers */, + 18FD711698AFD5B3D0EC8082974B4271 /* Parse_Private.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8AAB5C9C35D21E7DE9BABB9F3AE359CA /* Headers */ = { + 6B3C2F9572AD4D466314F78D8FC4A5D5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 44EEBB71B919C890EC133515DAADA53E /* SOCKit.h in Headers */, + 7E30399388BC2602D048AAC96B5BC7CB /* ISO8601DateFormatterValueTransformer.h in Headers */, + 3A4E79016E170FCEA906AD959BAD0F4F /* RKISO8601DateFormatter.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7AC25458D2D7F6FE32B1DE4F25D46767 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 5CFBEC31582E7093D61B791E3D6A89CE /* FBSDKAppGroupAddDialog.h in Headers */, + AF5D4AA78614DEC968FD73B77E1DCA9F /* FBSDKAppGroupContent.h in Headers */, + 848C43C813771ECA299F1DFBFE42B192 /* FBSDKAppGroupJoinDialog.h in Headers */, + B2C6E37E2C065FC66826699D97C5D1ED /* FBSDKAppInviteContent.h in Headers */, + 00A6585F8ADCE867CC96F03DE0F8722A /* FBSDKAppInviteDialog.h in Headers */, + C6F3BD5EC9F02F543DC1AE79F35DBDD2 /* FBSDKCheckmarkIcon.h in Headers */, + DC3A6B49827A61D98003EB074A3463D9 /* FBSDKGameRequestContent.h in Headers */, + A2779E72E6F4F89BC10E9D187395B8BA /* FBSDKGameRequestDialog.h in Headers */, + C5925266C50DA857D903C5BEB587E7F0 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */, + F413AB25B2BC215465A628FEE33F4246 /* FBSDKLikeActionController.h in Headers */, + CF40CA510403A77414543BB76DFE4884 /* FBSDKLikeActionControllerCache.h in Headers */, + 7EE537C6D56046389F1E274A3202A9CB /* FBSDKLikeBoxBorderView.h in Headers */, + 6BE26C31629E37691C2026D34EF5FC1F /* FBSDKLikeBoxView.h in Headers */, + D8393532E1BCB8F5A241FBD6B5915143 /* FBSDKLikeButton+Internal.h in Headers */, + B39FA2BABE548E38CAED91EA3521722A /* FBSDKLikeButton.h in Headers */, + EED79B8DC9EFDFAC358B7D5AABBA7D95 /* FBSDKLikeButtonPopWAV.h in Headers */, + BCAAC8E1D0770BFFBC24DC2255F5110E /* FBSDKLikeControl+Internal.h in Headers */, + 9F4D529EEC0834DDEAC016EB49BB5AB2 /* FBSDKLikeControl.h in Headers */, + 1EA875D07292CF4D051DB0E0B9F008DC /* FBSDKLikeDialog.h in Headers */, + D4CE914F5ED7216451DEB5D5B9DCF76E /* FBSDKLikeObjectType.h in Headers */, + 1D67DA48760D20CA411641C9102136D2 /* FBSDKLiking.h in Headers */, + 9EB092E53EFD259C48531526018114D1 /* FBSDKMessageDialog.h in Headers */, + AD1992ABEB845EEFCEAA32C8DF7D4115 /* FBSDKMessengerIcon.h in Headers */, + 03510AEE10F8AFC7A9426E3FFBD758EE /* FBSDKSendButton.h in Headers */, + 37D6C597E2AD01C1BB8B163D369B7AB0 /* FBSDKShareAPI.h in Headers */, + 4F208E8A4607477BA09171C93F9D65F7 /* FBSDKShareButton.h in Headers */, + F8FE0C65F75E52F82F84E13D2B0A0F42 /* FBSDKShareConstants.h in Headers */, + 539B79B777A580A748F4B8A186BCC8F5 /* FBSDKShareDefines.h in Headers */, + B2E3C4EDB24F3AB1FBA90FD0BE64084D /* FBSDKShareDialog.h in Headers */, + B3172572E215E917E15B5D1F66848737 /* FBSDKShareDialogMode.h in Headers */, + 6C9D7C55CB78713CFBEFB8F6823936DE /* FBSDKShareError.h in Headers */, + C5B1AF644B631A4EFD9F5906174E5580 /* FBSDKShareKit+Internal.h in Headers */, + 9946DA29569182E4051D4F20EBCF389A /* FBSDKShareKit.h in Headers */, + 0A6BF9949B8BEF6ED33EBBB89D3733DC /* FBSDKShareLinkContent+Internal.h in Headers */, + AFE365CE206F3E6364AAC8BD50C0AACA /* FBSDKShareLinkContent.h in Headers */, + FF079D3BEB117F01203AF1170BD693F9 /* FBSDKShareOpenGraphAction.h in Headers */, + 3ED276C208E4C2C431499BD98C10D6AC /* FBSDKShareOpenGraphContent.h in Headers */, + A767E96A6CE480E5FA45CC5E4EC95039 /* FBSDKShareOpenGraphObject.h in Headers */, + D2B2D34B0D45985A59E6D8E0323DFEF3 /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */, + 85ACC60B4C7AEB569CA7A15552DECA2B /* FBSDKShareOpenGraphValueContainer.h in Headers */, + D6AE65B5B0C104A53AFEBA40EE56BF0B /* FBSDKSharePhoto.h in Headers */, + E9B4420EA45357975AB697B99F2AD065 /* FBSDKSharePhotoContent.h in Headers */, + 3B885734C80A0A787B7A3FD563A54A99 /* FBSDKShareUtility.h in Headers */, + 0BDD8DFEDF81D4BEF214770B62B2DA74 /* FBSDKShareVideo.h in Headers */, + 15978EA5F7C6F2A163C5083229330300 /* FBSDKShareVideoContent.h in Headers */, + C6643189C3F72B706900C785D63D1260 /* FBSDKSharing.h in Headers */, + 3B753F85E3CBF91C270E9DC07341B708 /* FBSDKSharingButton.h in Headers */, + 37C638B1F00DC6C36311A62BCD273269 /* FBSDKSharingContent.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 963888F5333B9CE4EC14DA4678E04378 /* Headers */ = { + 8AAB5C9C35D21E7DE9BABB9F3AE359CA /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - A68DEE427107DDDECE7CD0FD00B4C42F /* AFHTTPClient.h in Headers */, - 8AE18E3F5FB9E121377E758896FDC5E9 /* AFHTTPRequestOperation.h in Headers */, - BFF27D79C3F860E354C5009D58D8716C /* AFImageRequestOperation.h in Headers */, - 0451EE3ECD50A13211C7FF98A7E505AE /* AFJSONRequestOperation.h in Headers */, - A2C6C3878CD7696272669C76E2B95F3A /* AFNetworkActivityIndicatorManager.h in Headers */, - 59126DFA8930D70443CEE591F1758298 /* AFNetworking.h in Headers */, - C2FEDEEB9C729E257CC014D75F58C3CA /* AFPropertyListRequestOperation.h in Headers */, - 03C3301144E96541DD8695E57AD95EDC /* AFURLConnectionOperation.h in Headers */, - 413DB25BECD1AA25EF0D2EE95263DD20 /* AFXMLRequestOperation.h in Headers */, - 55794719E57DB7A1DF7B6754190815AC /* UIImageView+AFNetworking.h in Headers */, + 44EEBB71B919C890EC133515DAADA53E /* SOCKit.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9BB099983C685F1488B532614064A264 /* Headers */ = { + 94860BC1989372135FC8127BBC4C1B0A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 53DCFF27646D832B660564172ACF94DF /* ISO8601DateFormatterValueTransformer.h in Headers */, - 9D9BFD2275092031EF50133F849831C1 /* RKISO8601DateFormatter.h in Headers */, + 6C9905FED4C58879E1188A49CC03EC9B /* FBSDKLoginButton.h in Headers */, + 37C5B25DF6BEA25F244D3E1FC4185DDB /* FBSDKLoginCompletion+Internal.h in Headers */, + 619EC62BA7570655A32E0FD9DE0B81DB /* FBSDKLoginCompletion.h in Headers */, + 1428029B7410F86E2E8670D8F2757842 /* FBSDKLoginConstants.h in Headers */, + 00D7B126423D78CF3936664CEA3AE990 /* FBSDKLoginError.h in Headers */, + F845D092B8C31C4DFFAD4D932CC60A53 /* FBSDKLoginKit+Internal.h in Headers */, + 2D37F6D243C16B2F3D8961995C27F706 /* FBSDKLoginKit.h in Headers */, + 2B15B8C342792ECC98874B1C00037446 /* FBSDKLoginManager+Internal.h in Headers */, + BF1C6799D780ADDDCDA7D058104CE7B7 /* FBSDKLoginManager.h in Headers */, + 69115D83A54F36A4D1BBCC573633632A /* FBSDKLoginManagerLogger.h in Headers */, + 233A654EC18BADBA2DFBD887A993CFAF /* FBSDKLoginManagerLoginResult+Internal.h in Headers */, + 3DA234B60937F780C2D85257BAC8AFEF /* FBSDKLoginManagerLoginResult.h in Headers */, + 550329AC1FE186EB5562C870B738D881 /* FBSDKLoginTooltipView.h in Headers */, + D8DD521788B7FF5F0F3DBD9D8A44BE4D /* FBSDKLoginUtility.h in Headers */, + 093B3BC924DCC60628EB3C4B02D53072 /* FBSDKTooltipView.h in Headers */, + ACB5EAF24E694839F813720C515B3BEF /* _FBSDKLoginRecoveryAttempter.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - BC8D8EE96B9BD1053950B9537233B9C1 /* Headers */ = { + AB65C60BCF41EA7218C1E1B0FB235A25 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 10BE8D457AFBCCD2D0AF53C57A7CF8AD /* BFAppLink.h in Headers */, - 83A2308F1A820A9AE24A2A0C0696F262 /* BFAppLinkNavigation.h in Headers */, - D6877C6A4340DF5855F0877E79BD04A4 /* BFAppLinkResolving.h in Headers */, - E539C7D052036F12A6FACEB6BAAAB7CD /* BFAppLinkReturnToRefererController.h in Headers */, - A77FCB7E7A55AEE91A979C9826E453AB /* BFAppLinkReturnToRefererView.h in Headers */, - 74994CD76F26EB7B7CF319BA58A0630A /* BFAppLinkReturnToRefererView_Internal.h in Headers */, - 3521883602EE9F7D16DF3A5DA7876F6B /* BFAppLinkTarget.h in Headers */, - DDD5AA6C8761E89C7F5C663B1CD13E32 /* BFAppLink_Internal.h in Headers */, - BAD3634DD55B62F98958378C48C5B4E0 /* BFCancellationToken.h in Headers */, - 6090EF83E9D0597E4EAA8A2A3E551181 /* BFCancellationTokenRegistration.h in Headers */, - 584ACB2EF83394FF9A7483F2CF1D3F35 /* BFCancellationTokenSource.h in Headers */, - 4248DC99938BB7DEC770F5C5387EE00A /* BFDefines.h in Headers */, - CBCEDE735334E3E1E16E45A245C96E3C /* BFExecutor.h in Headers */, - 48D8E5B295450D8E1F726BB6AB4757F6 /* BFMeasurementEvent.h in Headers */, - 4832276DBBFF9C8DA658EEED23908675 /* BFMeasurementEvent_Internal.h in Headers */, - E008D78D62D60C24A58DEBC9350DD553 /* BFTask.h in Headers */, - EB26C70637F1B9D2A32A96C3D7297B75 /* BFTaskCompletionSource.h in Headers */, - 27329EF5BB7C0D6973A2A6B02AAB96EC /* BFURL.h in Headers */, - 26CA0B5BAAD13B57BEE6231A9404024A /* BFURL_Internal.h in Headers */, - 1DC7F45A1971D9D7595B4DF9D5AE1487 /* BFWebViewAppLinkResolver.h in Headers */, - 711457D4A4EBE9E4AE7F0F81B9137929 /* Bolts.h in Headers */, - 1EEA52E11250AE7F891BEAB357430C95 /* BoltsVersion.h in Headers */, + C3508C617AD42C6C7408ADD4A07E4676 /* RKValueTransformers.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - C60C7916A98E6FDD68F924105FAE29C6 /* Headers */ = { + B8DA0630A0A7B0876DA944FBB8B99A30 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 2207E71C6E656FFF704F6A458FFD9750 /* FBSDKAccessToken.h in Headers */, - B66711307BD952379D6E1E973D233DD7 /* FBSDKAccessTokenCache.h in Headers */, - D8A25C09072F307F29FE9F7B6A13D9F9 /* FBSDKAccessTokenCacheV3.h in Headers */, - D443B04560E387EB30A0602FD6FFD975 /* FBSDKAccessTokenCacheV3_17.h in Headers */, - D2A8C4B9A699BBD20DB117AC788C589A /* FBSDKAccessTokenCacheV3_21.h in Headers */, - C1E6782A28C64F9F738190329D22EBAA /* FBSDKAccessTokenCacheV4.h in Headers */, - 0F3D53E5F079F4B1A2EBB4210908CFB7 /* FBSDKAccessTokenCaching.h in Headers */, - AD140B8CB4ED9EE47ECA355BBC49D8D0 /* FBSDKAppEvents+Internal.h in Headers */, - 194040F9162AC4370EA2207CAFB4F385 /* FBSDKAppEvents.h in Headers */, - 8F2B536B7C3E12F8A089703A8E184EE3 /* FBSDKAppEventsDeviceInfo.h in Headers */, - 589E7BF0D65495B04585FA32A0E8CEF0 /* FBSDKAppEventsState.h in Headers */, - C7621E1B2201C72E1A47178CB0FB6F9C /* FBSDKAppEventsStateManager.h in Headers */, - 64786C3E2471FFB18C54491B958F6A30 /* FBSDKAppEventsUtility.h in Headers */, - 960C0ACF45C879E5B798E0208677C283 /* FBSDKAppLinkResolver.h in Headers */, - 3C1DC8F3C0D0C2D975C5256111A23858 /* FBSDKAppLinkUtility.h in Headers */, - F55E8C555D5B76B49744594745E769B6 /* FBSDKApplicationDelegate+Internal.h in Headers */, - 19131ECD97988C2E0A7D828C1C3133E7 /* FBSDKApplicationDelegate.h in Headers */, - 60CEA0885C29CCA93BF6358AD042F3FA /* FBSDKAudioResourceLoader.h in Headers */, - 6FCB36E2C0955F23A84EA23D75EC8F8F /* FBSDKBase64.h in Headers */, - 2ECC223575FB09382C21927D1077E5E0 /* FBSDKBoltsMeasurementEventListener.h in Headers */, - BD853F3F44E8E1D611FC0223EEC51FF6 /* FBSDKBridgeAPICrypto.h in Headers */, - D5E8CC2522D67F9FC020020915970752 /* FBSDKBridgeAPIProtocol.h in Headers */, - 13AF98BD29E32EEAB0C7E25345182F63 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */, - E2F18A04EB1C973F5D6E14BB41CCD4BF /* FBSDKBridgeAPIProtocolType.h in Headers */, - 0637FA7A30F03B2B44FE3843BDEB55D4 /* FBSDKBridgeAPIProtocolWebV1.h in Headers */, - 83571B5C25D75A372990FB58F775031D /* FBSDKBridgeAPIProtocolWebV2.h in Headers */, - 8F358510B4BFC7E8344D34A8155B42DA /* FBSDKBridgeAPIRequest+Private.h in Headers */, - 3056984029600254636E6C7BCB7068B4 /* FBSDKBridgeAPIRequest.h in Headers */, - 9394144BAB18709A82FDB2B282A05380 /* FBSDKBridgeAPIResponse.h in Headers */, - C47010D70B05E89ACDFB064C72E502A6 /* FBSDKButton+Subclass.h in Headers */, - C090E9788C1AAE44F019D971AF5CE896 /* FBSDKButton.h in Headers */, - 18D19D961B9AB9C6B471F9768C507607 /* FBSDKCloseIcon.h in Headers */, - D63769571B44F6368498F025AF61C6CE /* FBSDKColor.h in Headers */, - 54F855E7EE9AA06C6EBC3DD74EB75358 /* FBSDKConstants.h in Headers */, - 7BF055BCBD30254D2FD0ACB56D208D6C /* FBSDKContainerViewController.h in Headers */, - D26DAD2583E28F0B6448456E3DD375B0 /* FBSDKCopying.h in Headers */, - 8D163CF90227676C66E59AC9C29C49A2 /* FBSDKCoreKit+Internal.h in Headers */, - A2FB35C43BD300FF3D0FC5D2C21A8EA0 /* FBSDKCoreKit.h in Headers */, - B47B62F95C9E76C01E70EABA2BA467E5 /* FBSDKCrypto.h in Headers */, - 528A1E3338AEA0BA99B630E0376E73A9 /* FBSDKDialogConfiguration.h in Headers */, - 8F19A51AABD48FA736496786775A4540 /* FBSDKDynamicFrameworkLoader.h in Headers */, - 87B8F0D199620CF95AB1FC249403F368 /* FBSDKError.h in Headers */, - 335D7BCABF70FFC8383F8A0611246675 /* FBSDKErrorConfiguration.h in Headers */, - BF9F546490AA5AC45DE849AA0A5AACC4 /* FBSDKErrorRecoveryAttempter.h in Headers */, - 697A7506A45ABEB2E388ADA4C925840C /* FBSDKErrorRecoveryConfiguration.h in Headers */, - 36B07F714856EEB15D38BE6949CE4ECA /* FBSDKGraphErrorRecoveryProcessor.h in Headers */, - 78A2871CE000B8987FA26F2507F0C5A6 /* FBSDKGraphRequest+Internal.h in Headers */, - 6F11DA82F7AF6C9C4BB737C602C973F9 /* FBSDKGraphRequest.h in Headers */, - 714BE1AC2526B3BC1562109C08F4A495 /* FBSDKGraphRequestBody.h in Headers */, - 8B602196288517BC69973428574180A3 /* FBSDKGraphRequestConnection+Internal.h in Headers */, - 91F44367C597D2BDFF225A8BD754BBD0 /* FBSDKGraphRequestConnection.h in Headers */, - D566CA65A0BD5EDD393D418D0E38F785 /* FBSDKGraphRequestDataAttachment.h in Headers */, - B7FEE49B9428B57AEBB3A3ECFE8EEB59 /* FBSDKGraphRequestMetadata.h in Headers */, - BFD3B90B0754D38A0C16EAD8AB8C40AC /* FBSDKGraphRequestPiggybackManager.h in Headers */, - 5BD0E9128E6F8FE37C92C8C77F11425F /* FBSDKIcon.h in Headers */, - 103EEFB51B885B053EE5C3BA2B9F5B71 /* FBSDKInternalUtility.h in Headers */, - 8699AAC67CF8535D11120991726B3A5E /* FBSDKKeychainStore.h in Headers */, - 8528AF353C87A568A36A67CC4107AABE /* FBSDKKeychainStoreViaBundleID.h in Headers */, - 7FA1C89D6080BEE224852C72C13D6D5E /* FBSDKLogger.h in Headers */, - F05664371A3DD0AD0F099C58F3DE4B5C /* FBSDKLogo.h in Headers */, - 0DEB3FF3257E2710E17602028B4ADCBF /* FBSDKMacros.h in Headers */, - ECD947EB7209C18C0ED5B62B55EDAF5C /* FBSDKMaleSilhouetteIcon.h in Headers */, - EB3A2464318287F2605FE3FB96F28028 /* FBSDKMath.h in Headers */, - EE8D5B9C1B8641F1C9454AC533EBA663 /* FBSDKMonotonicTime.h in Headers */, - 51897443D225A1A7146CDD7EA9C07E89 /* FBSDKMutableCopying.h in Headers */, - DDEA53C797DA53F468DC760C6AFF395E /* FBSDKPaymentObserver.h in Headers */, - 43C62E1AD429F5F56736CCB4B27ED1D4 /* FBSDKProfile+Internal.h in Headers */, - D4830E7DE681EE028A47000F46DA3E1A /* FBSDKProfile.h in Headers */, - 2B96436D95914F65C562C78AB09B64A9 /* FBSDKProfilePictureView.h in Headers */, - D213984A523601FD6D41B52BFE1ECF87 /* FBSDKServerConfiguration+Internal.h in Headers */, - D219581FED0361CDF8034A264783166F /* FBSDKServerConfiguration.h in Headers */, - 92F90206D520B6FFB926F518E7F78A6A /* FBSDKServerConfigurationManager+Internal.h in Headers */, - DE465F00C7D94B02E5130CAB91FE315A /* FBSDKServerConfigurationManager.h in Headers */, - 222BC73BB2DCC1670840CBF0C7918219 /* FBSDKSettings+Internal.h in Headers */, - 6B963CD2BF2D0F02D03CD5F67CC0F05B /* FBSDKSettings.h in Headers */, - 724481CBB3913C75C37AA3B614532854 /* FBSDKSystemAccountStoreAdapter.h in Headers */, - 1AA3A74D556CBAC2478A4F9990BFEC08 /* FBSDKTestUsersManager.h in Headers */, - 8B0C038931DB9E37C4E93AD16106BD26 /* FBSDKTimeSpentData.h in Headers */, - C6056E64ADBD421AE12B55FB83E44322 /* FBSDKTriStateBOOL.h in Headers */, - F9F2A396D8596900DA5C2D3DE9B96EBE /* FBSDKTypeUtility.h in Headers */, - DDDFDB764CD1AE11F3AABCA125923E06 /* FBSDKUIUtility.h in Headers */, - 86C24EAC707FA2133160C7AA132F4716 /* FBSDKURLConnection.h in Headers */, - 0A404B050E501F4897A0F0E48E261D02 /* FBSDKURLOpening.h in Headers */, - B245EEC679161A0C25552C1AA06F3EC4 /* FBSDKUtility.h in Headers */, - EBC0F7CF2A827BE595ECF66D3042385B /* FBSDKViewImpressionTracker.h in Headers */, - 2362DD22CB38548C38463877211F2AD3 /* FBSDKWebDialog.h in Headers */, - 4C33830BE3C170E4CB6375A78A271CC9 /* FBSDKWebDialogView.h in Headers */, - 141089B7D752020855F211BD890A4D3C /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */, + E2AD35CB32DF2CFD7505333AF7A6F4EA /* FBSDKAccessToken.h in Headers */, + 81622EAF7B59D13198E4CBC0C3D1A714 /* FBSDKAccessTokenCache.h in Headers */, + 2A6AE3E4DDEEE593F6653E4A3A2E747E /* FBSDKAccessTokenCacheV3.h in Headers */, + 018166E30D25E0D13BEA3E349F34A054 /* FBSDKAccessTokenCacheV3_17.h in Headers */, + 590737A2A29757D9B56910E182CE61E0 /* FBSDKAccessTokenCacheV3_21.h in Headers */, + 33D75FFDA664AF78542007DCBC137A14 /* FBSDKAccessTokenCacheV4.h in Headers */, + 70E8E54EF340AE0D3D75A21AA31A37F0 /* FBSDKAccessTokenCaching.h in Headers */, + 135F87CE326B1BF6A73827E9F6ED971B /* FBSDKAppEvents+Internal.h in Headers */, + CD0D8051BB45134BC9996732E8943B71 /* FBSDKAppEvents.h in Headers */, + 735F99AE8538E282317F759241D24669 /* FBSDKAppEventsDeviceInfo.h in Headers */, + 06B5B0BE46804817F2BA234F2F21AB40 /* FBSDKAppEventsState.h in Headers */, + 7F1FDBA8B63D8F54C26A086D57228EAB /* FBSDKAppEventsStateManager.h in Headers */, + 0E6394122D9ED32FE89BDEFDF03C5562 /* FBSDKAppEventsUtility.h in Headers */, + 2773A2DA8DBDF9775A0F3853F3032127 /* FBSDKAppLinkResolver.h in Headers */, + B40E3C07ABC858EDE2640EC014401187 /* FBSDKAppLinkUtility.h in Headers */, + 89CAA391879710F0A18AA9983F1AAB9B /* FBSDKApplicationDelegate+Internal.h in Headers */, + 64027533F0F5F5E3D76E19A91E7C979A /* FBSDKApplicationDelegate.h in Headers */, + 367ED93EB2EB25B7F6CFC3191AD1ED66 /* FBSDKAudioResourceLoader.h in Headers */, + 74351DB8FEAB681790B1508D8A128B55 /* FBSDKBase64.h in Headers */, + F0F027149637B8C7F6A7EA60C5CF8323 /* FBSDKBoltsMeasurementEventListener.h in Headers */, + 10E0911E33686C368550FF5884C27A5B /* FBSDKBridgeAPICrypto.h in Headers */, + 0D7756638487F105933CDA9F734F7846 /* FBSDKBridgeAPIProtocol.h in Headers */, + 890348D946DE9E11805D0184309D1414 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */, + 26352EBD95DA14640C8750C915C72984 /* FBSDKBridgeAPIProtocolType.h in Headers */, + 20A9B114B37DD905332B7D23EF6F1A5E /* FBSDKBridgeAPIProtocolWebV1.h in Headers */, + 8BB62BE3D07ABABBEED035063D38A628 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */, + AB24D4CAE762B51189295267F8E37C9A /* FBSDKBridgeAPIRequest+Private.h in Headers */, + 0D4B5945A05AB5823580A86F062419DF /* FBSDKBridgeAPIRequest.h in Headers */, + 50FD61393BDAF57A7C8828614E4C04EE /* FBSDKBridgeAPIResponse.h in Headers */, + 4DEC7B43535FE6D4218B12464ADF8D2C /* FBSDKButton+Subclass.h in Headers */, + 4858697360BC346D2A20761DC49285D2 /* FBSDKButton.h in Headers */, + E0107B4D675BE030D6BB97600270B98F /* FBSDKCloseIcon.h in Headers */, + 371A5CF7297B29D0C41BEB53EBF1FED8 /* FBSDKColor.h in Headers */, + 3F658F1814712CB2CA55F67CF852048A /* FBSDKConstants.h in Headers */, + 384D12A6756ADD487295CE08615550C1 /* FBSDKContainerViewController.h in Headers */, + EB51DA32AFB1341B412DC8DB1EA76D67 /* FBSDKCopying.h in Headers */, + EBC1D03210026C1333FB24C053316AE0 /* FBSDKCoreKit+Internal.h in Headers */, + D645D7ECDB737643D71DFDC7D0EF51DC /* FBSDKCoreKit.h in Headers */, + BB1475554304D738587A02F9B98E3D56 /* FBSDKCrypto.h in Headers */, + 22BC87A9F5080A50780C32CCE2555D4A /* FBSDKDialogConfiguration.h in Headers */, + C9AAD787079AB91D540B2756E1EF5ACB /* FBSDKDynamicFrameworkLoader.h in Headers */, + 6D61146E37009E249059A2813517FFD9 /* FBSDKError.h in Headers */, + 65B86E6A3D00FEE70CBCE039AD72DE43 /* FBSDKErrorConfiguration.h in Headers */, + 40F9AB573C5837942460DA047E6127C4 /* FBSDKErrorRecoveryAttempter.h in Headers */, + C7211D3C98D5D275A3598C792B879C2A /* FBSDKErrorRecoveryConfiguration.h in Headers */, + B4275D37EB15EE59E93DD5EC6E51B9D4 /* FBSDKGraphErrorRecoveryProcessor.h in Headers */, + 01CE9AF82E8EDF5553D6BD60C15788C9 /* FBSDKGraphRequest+Internal.h in Headers */, + F1CBCA120CD2947B7C405851E7FFA7E6 /* FBSDKGraphRequest.h in Headers */, + 73207F1C397A877B01B1F68FF5D8310B /* FBSDKGraphRequestBody.h in Headers */, + B3C71031709F94AA5745619C081ECC54 /* FBSDKGraphRequestConnection+Internal.h in Headers */, + 6E74859E6E9AE4DE6D8C2137C731DA7E /* FBSDKGraphRequestConnection.h in Headers */, + D3B63387E28EC3AC74C36A14C22334D6 /* FBSDKGraphRequestDataAttachment.h in Headers */, + B557BEE7C912C3A6C487A2FA3912A871 /* FBSDKGraphRequestMetadata.h in Headers */, + 8B3E804859E5836A2204786E380B6996 /* FBSDKGraphRequestPiggybackManager.h in Headers */, + AA6CA5E4490EFC5A8BC390DF50314B88 /* FBSDKIcon.h in Headers */, + 852691CBD5FE158C07179096E9DC3590 /* FBSDKInternalUtility.h in Headers */, + 7AE4B1EFB5BFFE292E6A983252506D65 /* FBSDKKeychainStore.h in Headers */, + 44963F3C624EFA6C4A3259B1167EC1AD /* FBSDKKeychainStoreViaBundleID.h in Headers */, + E9CAA4FDAC6AE903159D04DC4BA45474 /* FBSDKLogger.h in Headers */, + 52D11AEE6C8D215ABB06624EB6260D37 /* FBSDKLogo.h in Headers */, + 0563F4EED0D395AB1CE1203D89F71AA8 /* FBSDKMacros.h in Headers */, + 3B76C2CB31039AF1A29C4F595F684F2A /* FBSDKMaleSilhouetteIcon.h in Headers */, + 744F76CA2535AE2E3E4749DD1D09AB76 /* FBSDKMath.h in Headers */, + E4C05F4451AAE50C0F479AB2E7405E44 /* FBSDKMonotonicTime.h in Headers */, + 1E4C78412D3C24B2A1993006925E1517 /* FBSDKMutableCopying.h in Headers */, + 42CFF2A1DB5CD41505B76D81DDE5C106 /* FBSDKPaymentObserver.h in Headers */, + 591C4201A7B3C6EC8D826BBB1D1D5E26 /* FBSDKProfile+Internal.h in Headers */, + 05EEE4C30056440EC8E7A2CF218EB8B0 /* FBSDKProfile.h in Headers */, + 6D8BC7410B446B1A8366CC22E0E1079B /* FBSDKProfilePictureView.h in Headers */, + D8731A50BC6E296EF8910706907303AC /* FBSDKServerConfiguration+Internal.h in Headers */, + 12C286C63ABAD25C2339EA0D0A5C5D02 /* FBSDKServerConfiguration.h in Headers */, + 67F70F417D99AB2BD60DC04C04993945 /* FBSDKServerConfigurationManager+Internal.h in Headers */, + A5EE9A504202A028AE4D6D43657078E6 /* FBSDKServerConfigurationManager.h in Headers */, + A8993E29255743428F03B37112AA10F2 /* FBSDKSettings+Internal.h in Headers */, + 5AC8E19A51D9F4860F4944BAE0DAEC96 /* FBSDKSettings.h in Headers */, + 4625C1214B5DB9343D91257A243125BC /* FBSDKSystemAccountStoreAdapter.h in Headers */, + 66F43085D42ED2365237DCA34897DADF /* FBSDKTestUsersManager.h in Headers */, + A3829D2453619B3142F601B79951DEDD /* FBSDKTimeSpentData.h in Headers */, + 594D9565A6631A0B899B1388B8E91492 /* FBSDKTriStateBOOL.h in Headers */, + 54A388B33BFD7BEDB7310245AD9CAD4F /* FBSDKTypeUtility.h in Headers */, + 5D0FE10AAE4A7D55349612B668EC5BD3 /* FBSDKUIUtility.h in Headers */, + 1E8825EF12CDA16FB2E5453FFDBCC311 /* FBSDKURLConnection.h in Headers */, + E2DC88E170ADC175F5C438C3C7CD0E87 /* FBSDKURLOpening.h in Headers */, + 656200477A7F591FCCCC7D6B74802BB9 /* FBSDKUtility.h in Headers */, + EFCAE7D0122CB2A05706BE24AA150329 /* FBSDKViewImpressionTracker.h in Headers */, + 49DAA2044F870155F9BD5B0ECE15912A /* FBSDKWebDialog.h in Headers */, + C5393F0246F98DAE25615EC3DD478518 /* FBSDKWebDialogView.h in Headers */, + 35CF2A0AFFFA1D48E9492B395E68BC95 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3378,209 +3607,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D9F933FB4C402CBFD29FBBB0594B37AE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 62AC03AAA3E1A91085682875387057F0 /* BFTask+Private.h in Headers */, - 7F266AA9EE266D339D49A0E969988BD8 /* PFACL.h in Headers */, - F2B72E543329E82CCE7A2EE0B0D5C785 /* PFACLPrivate.h in Headers */, - CB383B20C6379A28C46A6B5AEC5EFC6A /* PFACLState.h in Headers */, - F154E24ECE8D63E143C5DE657270F9CF /* PFACLState_Private.h in Headers */, - EE4BB2CB0021BADEC7E1B08A32107181 /* PFAlertView.h in Headers */, - 446BA59388843F27C4A3C3C28A81F12A /* PFAnalytics.h in Headers */, - 6DE851C2AAF88503F245F250A5351AAE /* PFAnalyticsController.h in Headers */, - 44E7B7009635960A4666322CC9C335A8 /* PFAnalyticsUtilities.h in Headers */, - 41CBA3A465424FF859B076C2D5E4428E /* PFAnalytics_Private.h in Headers */, - B8981DC6E7D7A4BDA55AAAA0A0DADF7A /* PFAnonymousAuthenticationProvider.h in Headers */, - 22285085488C28F72D4A8E6FE597C3F4 /* PFAnonymousUtils.h in Headers */, - 7A54902B9E0B3ACB2A7B1EFECADF357E /* PFAnonymousUtils_Private.h in Headers */, - C078740598701CAAD4A763C78B3F6CC6 /* PFApplication.h in Headers */, - 2A090259083345B82C50D513C268C552 /* PFAssert.h in Headers */, - A63B7B71D5BD6F713B1F2645904FAB0A /* PFAsyncTaskQueue.h in Headers */, - F590EEE9964BFBBF5271ABE294EA8DF9 /* PFBase64Encoder.h in Headers */, - DD4DBFC5F42DE1932644DB163B5972E6 /* PFBaseState.h in Headers */, - AA2CA1664E0724EDB51E06EABE450CFB /* PFCachedQueryController.h in Headers */, - 035585A2DE484628EA30E8E63294D4C4 /* PFCategoryLoader.h in Headers */, - C6882967064B59E981B552B8B73F478D /* PFCloud.h in Headers */, - 336DDE9C1339B3E1C10A65C1ADC3ED5A /* PFCloudCodeController.h in Headers */, - EA302B51E65C00DBCF5E18601D139475 /* PFCommandCache.h in Headers */, - 2156E59F1188BA47E18D0F81D6AC802D /* PFCommandCache_Private.h in Headers */, - 548B9E86168DD8A2E659F23EC4F7A8A7 /* PFCommandResult.h in Headers */, - 8034ED89D1720CA1553C063505243D16 /* PFCommandRunning.h in Headers */, - 9FA6A1361778101C92CC23F66D82E995 /* PFCommandRunningConstants.h in Headers */, - 19FF72C0A165707AD00B46F3535BF306 /* PFCommandURLRequestConstructor.h in Headers */, - 98624ADCF17E525E7753E01E2282CF79 /* PFConfig.h in Headers */, - 0A24AF592599665BBA61B0592CE2D779 /* PFConfigController.h in Headers */, - 264D7F2AB36480290C7CE960CA5D049B /* PFConfig_Private.h in Headers */, - 9FB6030B98DECB9D62879EE2AE5E6D9E /* PFConstants.h in Headers */, - AAFC2366E62DD2348A58310FCB9CDCB2 /* PFCoreDataProvider.h in Headers */, - CE991245FC044DFF4588087784AF09C5 /* PFCoreManager.h in Headers */, - 1669A58CB3E81C88673C6DDFE52665D6 /* PFCurrentConfigController.h in Headers */, - 52B61A08963CBBA0FB4C125E56151F0E /* PFCurrentInstallationController.h in Headers */, - 80407D8CFD66E00DA2C42634D57FEB65 /* PFCurrentObjectControlling.h in Headers */, - B7FFAEE017ADB38FE772A10494491305 /* PFCurrentUserController.h in Headers */, - AA35FAD12964ABE7D0E88E0E1D65B4D4 /* PFDataProvider.h in Headers */, - 899BD0168D0879A433B3E24D881E071C /* PFDateFormatter.h in Headers */, - 4F3F335C20656E97A48104D33B6AD423 /* PFDecoder.h in Headers */, - 6C4BDAB5F2BED6A17CF575686DA25BAB /* PFDefaultACLController.h in Headers */, - 680644EF47F01A73A7365AAB594B867F /* PFDevice.h in Headers */, - 1AE22B14B900081E3F50FBA27C496913 /* PFEncoder.h in Headers */, - AF05B25B63B0981E9B51311FB1C7FBA2 /* PFErrorUtilities.h in Headers */, - 216960B1853453C77581F1F43F292D25 /* PFEventuallyPin.h in Headers */, - 3521C3A0492CE669FF3994A3B9092698 /* PFEventuallyQueue.h in Headers */, - 569DC6FEB3DDA40D5164D32DA9586867 /* PFEventuallyQueue_Private.h in Headers */, - 9B0B6DE875E130F30CEEB69A79037FA1 /* PFFieldOperation.h in Headers */, - 816C8741A372E6B0B343B9C2979B2F8E /* PFFieldOperationDecoder.h in Headers */, - C1940E183A577F58BCCE1C9477D12874 /* PFFile.h in Headers */, - 714C65274187114E32C9796DB3A2EB68 /* PFFileController.h in Headers */, - B157A3081D8AD9514467DEBBD55548BA /* PFFileDataStream.h in Headers */, - B2879C1150D1DB443CFCD96DDDB49E45 /* PFFileManager.h in Headers */, - 9F551AF880BB9256C4C291F5CCFB11BF /* PFFileStagingController.h in Headers */, - 5B5C0205B731E56B6A725E13CA098243 /* PFFileState.h in Headers */, - FB65F22A1E1B12694C1E7DA1BF4332AD /* PFFileState_Private.h in Headers */, - 8F7DF91175CD7B9E257D396EB87DBDDD /* PFFile_Private.h in Headers */, - 65C5B97B362C88A9C677573B3D03B693 /* PFGeoPoint.h in Headers */, - E964FA7D6A20CC33A8F95DBDE547740D /* PFGeoPointPrivate.h in Headers */, - E86C60547909B9FF602F7A10BA1B4140 /* PFHTTPRequest.h in Headers */, - FBF860C80EF28CB36A9D92DF462DF9FA /* PFHTTPURLRequestConstructor.h in Headers */, - D8F65E1A75771DEFD76C1D5E67DE252D /* PFHash.h in Headers */, - 96C7851DA44AD1224A1111E622B90017 /* PFInstallation.h in Headers */, - CF1E4ADCDBB95E4626548A4EED8E955F /* PFInstallationConstants.h in Headers */, - F404DE0BD76A827A59FED7ACEC84C4A7 /* PFInstallationController.h in Headers */, - 2571CBB40950A47C696F3166573C2E03 /* PFInstallationIdentifierStore.h in Headers */, - C5E6B7F61C259BD6D3FA842E34D77C05 /* PFInstallationIdentifierStore_Private.h in Headers */, - B09ADD46335ADB6E340FE94F12EA2A7E /* PFInstallationPrivate.h in Headers */, - ADD2AA8D146F25FFD8BA1D4376F263B7 /* PFInternalUtils.h in Headers */, - 289440F037321298F6CFAE462EAB2708 /* PFJSONSerialization.h in Headers */, - AFD06D4B1D7FC7846C523BAF45DE28F4 /* PFKeyValueCache.h in Headers */, - 5F8207F4644833736B306F1F57A1CC08 /* PFKeyValueCache_Private.h in Headers */, - C2882692DD474D2AFD75B8B04749F85E /* PFKeychainStore.h in Headers */, - 317DFD4D6FFBC372F352C1D28E1BF585 /* PFLocationManager.h in Headers */, - 01B6E1BCF76B786BA17501AA97D0A2FD /* PFLogger.h in Headers */, - D5B4AE6ADA1FF6A8D501EF34E5B70DEC /* PFLogging.h in Headers */, - 99F06B5F06814E413CF9BFD708985DC1 /* PFMacros.h in Headers */, - BAC969FD3E5FCC80C60299CD3FDE217B /* PFMultiProcessFileLock.h in Headers */, - F93E8FA12A89E3DEC9D885480933388C /* PFMultiProcessFileLockController.h in Headers */, - 6C8B8CB55A10C85B31BF0B735C30E0B1 /* PFMulticastDelegate.h in Headers */, - BD99460B57092B0D6787EC27F99FEB62 /* PFMutableACLState.h in Headers */, - 8A5A5D950DE30D7796F24D41F725D731 /* PFMutableFileState.h in Headers */, - 343F80499D58275C98B2A493E79CA832 /* PFMutableObjectState.h in Headers */, - 747072A3816272600F4B853AC2D43A12 /* PFMutablePushState.h in Headers */, - DC72EEA9A5F723B2B90C73F66A942266 /* PFMutableQueryState.h in Headers */, - B1F19F69BC6BE89750CDE81D08ECE259 /* PFMutableRelationState.h in Headers */, - 9327A80A4578297BCC18961FAF29D852 /* PFMutableUserState.h in Headers */, - ED30F1C009785C03A95CE897DADE2FE3 /* PFNetworkActivityIndicatorManager.h in Headers */, - B2588A9E069571F52CD24483884A4AE1 /* PFNetworkCommand.h in Headers */, - AC8705200765C036C92BA3510DDF381C /* PFNullability.h in Headers */, - 0C97A38957A54E356CBD2066CE04133E /* PFObject+Subclass.h in Headers */, - F0C42F245FC0594E061713A97D2F24C7 /* PFObject.h in Headers */, - BA989D0DD52B618B74EC629A3B011787 /* PFObjectBatchController.h in Headers */, - A9029EFD1C14F062F13C517D8E88863A /* PFObjectConstants.h in Headers */, - EDAE21A43BCE3B2704A63517EB4AB1AB /* PFObjectController.h in Headers */, - 952263BF4DA2641DE73612C67BFE318B /* PFObjectController_Private.h in Headers */, - 031FFF4BFC8E7F50200A78A83ACE12F2 /* PFObjectControlling.h in Headers */, - F4A8397144034C66C1FA123D2A946D30 /* PFObjectEstimatedData.h in Headers */, - 44D58C838E846275EC8A27ECBF29DA9F /* PFObjectFileCoder.h in Headers */, - 0827E8FF507012241427EA254F0B9C86 /* PFObjectFileCodingLogic.h in Headers */, - 867DB320DD4CB050839389A1BB0555C9 /* PFObjectFilePersistenceController.h in Headers */, - AAAACC905C1BD976C1B46FF1E96D29C8 /* PFObjectLocalIdStore.h in Headers */, - DA38887565FDAA6178FDA0EE1B279815 /* PFObjectPrivate.h in Headers */, - 59AE70B21BE3010125B5A4C289D581AE /* PFObjectState.h in Headers */, - 35C74ADE21E53C1A980B0F09B6A69441 /* PFObjectState_Private.h in Headers */, - 0D38DDBFF8647BFBAC5D5819120866AF /* PFObjectSubclassInfo.h in Headers */, - F3832E2E17428F4750115D59A0CB9E85 /* PFObjectSubclassingController.h in Headers */, - 37A8328CAC5B9F9B21F4E0F7F7F88C90 /* PFObjectUtilities.h in Headers */, - 741ED5F4DFCF51FA348982153375412A /* PFOfflineObjectController.h in Headers */, - 17A60DE752CD6B98B110ED27EC596403 /* PFOfflineQueryController.h in Headers */, - 274A8966A2797D607CBBC96CEC3D6A12 /* PFOfflineQueryLogic.h in Headers */, - E3A2B3F9AA361620648CBD92EF4F4874 /* PFOfflineStore.h in Headers */, - 39FD00E726ED2D451932BC6D5173231B /* PFOperationSet.h in Headers */, - 115B682879CBE79C7CD8FF29E967EB08 /* PFPaymentTransactionObserver.h in Headers */, - 4BAED37A971E944FAA282D905CC0B69E /* PFPaymentTransactionObserver_Private.h in Headers */, - 24C7BBC40CF0B023B820E9B81B4DA070 /* PFPin.h in Headers */, - 3B98740FB38A404583CB8E2504C36BB0 /* PFPinningEventuallyQueue.h in Headers */, - 96FA8252F3AA140AB10B644BC9A9D5C7 /* PFPinningObjectStore.h in Headers */, - 11E6895F2673F1D69CC3F6623019E969 /* PFProduct+Private.h in Headers */, - 3E9373D4AA88F97BD38272875738D398 /* PFProduct.h in Headers */, - E35CC681B027B9A4DDD50E2732FDB1A2 /* PFProductsRequestHandler.h in Headers */, - 24CB2B8CDC5F16CD9E14DA26DB83DDFA /* PFPropertyInfo.h in Headers */, - 2CDDB7A231AE639E1F1988F2F0DA00DC /* PFPropertyInfo_Private.h in Headers */, - 64B6FCD7B4520F2588FEE0287247349A /* PFPropertyInfo_Runtime.h in Headers */, - F81F1B7980F2983071D0EC660BE54CE3 /* PFPurchase.h in Headers */, - D809B69DE077C62C993DF9DB223DB660 /* PFPurchaseController.h in Headers */, - 3E923BE69D091AC983DF766EB1703F92 /* PFPush.h in Headers */, - 8E6728F63DC431E34F799F06DDF1CB8F /* PFPushChannelsController.h in Headers */, - C560005F785CD4166BE55BAA01D3F544 /* PFPushController.h in Headers */, - FE82D78EAC4F3D46EEE5C2A3C97A12D9 /* PFPushManager.h in Headers */, - AFF7143C45D4D0CC1DFE3E0BCA02F77A /* PFPushPrivate.h in Headers */, - 690EE192DCB7F5FD1C72C0A7630D3230 /* PFPushState.h in Headers */, - A5075FCC7996C7241A1AC88BD454CEDC /* PFPushState_Private.h in Headers */, - 97C333E846C6F051D032E8EECF06012B /* PFPushUtilities.h in Headers */, - FE2F61A9BF88B14639C597A77478638B /* PFQuery.h in Headers */, - 39D5FA61F8BC6306CEB6FD0040846723 /* PFQueryController.h in Headers */, - BAE6222F2912EBD93ADE0E92604AE75F /* PFQueryPrivate.h in Headers */, - 99698707B82BBB47C3392E7E47C94CEB /* PFQueryState.h in Headers */, - FD7D810A80E4DE1BBDD59AFA587AD339 /* PFQueryState_Private.h in Headers */, - C1CDC0DE66D93D988EF14107C6FFEA66 /* PFQueryUtilities.h in Headers */, - EAF55F96FD4B1A30DDF547F52CFD5E3A /* PFRESTAnalyticsCommand.h in Headers */, - 1FE020448F48D06DB2F2AF2187DC70D1 /* PFRESTCloudCommand.h in Headers */, - FB3B2D6BC1B9F48598E1471CA886802D /* PFRESTCommand.h in Headers */, - A0C0D93BDD1650DA3FBAF7308D8D8F6B /* PFRESTCommand_Private.h in Headers */, - 1082989B937B299059AA17B02EFB11C3 /* PFRESTConfigCommand.h in Headers */, - D7FC6F2D8013CF365A7349C989177E95 /* PFRESTFileCommand.h in Headers */, - 5705EC9203CFCFFF63B71242D0218340 /* PFRESTObjectBatchCommand.h in Headers */, - 0FEB198320552E0ED018F62418915FF2 /* PFRESTObjectCommand.h in Headers */, - 1EFDE74434A6084134CFBBF5FBA37331 /* PFRESTPushCommand.h in Headers */, - A249BCCF84DBA88982F537AE0C883BB3 /* PFRESTQueryCommand.h in Headers */, - 5FE0DCADFDD3F32A59E544CF98BBA273 /* PFRESTSessionCommand.h in Headers */, - 0B81E419526111EA3E0BBBBAA5737C8C /* PFRESTUserCommand.h in Headers */, - 1FA37DC1F9BA323A9E932A24AA6B3FEF /* PFReachability.h in Headers */, - E7F96D6D14A008F31D440E9A3B4DEBFA /* PFRelation.h in Headers */, - B26EA1195C31C123334CE61F105FE393 /* PFRelationPrivate.h in Headers */, - D9780F783321D6762F05A3703DCCCAE3 /* PFRelationState.h in Headers */, - 7A4D2EC16BADC3EDB9E7C60072007D63 /* PFRelationState_Private.h in Headers */, - A298A5BDF576E579A48B535BF82CC397 /* PFRole.h in Headers */, - 40C67CAE468EABF931B98B2E88DEE324 /* PFSQLiteDatabase.h in Headers */, - 497CA357D4C9F558EC1A7F893BCF0DF0 /* PFSQLiteDatabaseController.h in Headers */, - E01E6B307A5E4AC49DFFFE15D7AB3419 /* PFSQLiteDatabaseResult.h in Headers */, - 477136AEEC963924B48D90D694471B15 /* PFSQLiteDatabase_Private.h in Headers */, - 76300DBE702A80CC961739A23493D82D /* PFSQLiteStatement.h in Headers */, - 1E06D1E8ABA58B1F8D93AC474933AED6 /* PFSession.h in Headers */, - 2912A7D737F750A67C5DBB6C94E21B08 /* PFSessionController.h in Headers */, - 937A4633A64BC5208E9324E323AD8129 /* PFSessionUtilities.h in Headers */, - EF1E3A4A56864ED9872326A1591C526B /* PFSession_Private.h in Headers */, - F4ECDBA32F1169CB260D49D001F2C224 /* PFSubclassing.h in Headers */, - B588C9394F86C1AC804378104F746AAE /* PFTaskQueue.h in Headers */, - 2515D00EB9ED2D21B6A1D2A019CA407F /* PFThreadsafety.h in Headers */, - CB7D55A007ED7936F349A5E63C7503C0 /* PFURLConstructor.h in Headers */, - 0383C08E8381E50C4D99F27563219095 /* PFURLSession.h in Headers */, - DEBEBBF633B726A9FDBBDE85788DA3A3 /* PFURLSessionCommandRunner.h in Headers */, - 643204253D2ED23DBD900DC6DCC12556 /* PFURLSessionCommandRunner_Private.h in Headers */, - 9B23BA6F2581561FB25680304A6B9073 /* PFURLSessionDataTaskDelegate.h in Headers */, - 83B200A2264FABAAADBBBE3355B988BD /* PFURLSessionDataTaskDelegate_Private.h in Headers */, - 9BA4897B11673A7E3BEA0A4801C041A3 /* PFURLSessionFileDownloadTaskDelegate.h in Headers */, - 60B56FC16B23506CC79857255E8F43F7 /* PFURLSessionJSONDataTaskDelegate.h in Headers */, - 855CEE1F6BCF1084074BCC8AC4A4409F /* PFURLSessionUploadTaskDelegate.h in Headers */, - 4F743B762B11CF3C497E0FD4CBDD1441 /* PFURLSession_Private.h in Headers */, - 17D1E18D8FE2FA636689AE5F11FF745B /* PFUser.h in Headers */, - 147EE652AA4CED9F96AC291100513BBA /* PFUserAuthenticationController.h in Headers */, - 040E8CD5FB35E08270AA9BC8C424E068 /* PFUserAuthenticationDelegate.h in Headers */, - 7970953EEBB8E9B8D59CF92B5ECA9C1E /* PFUserConstants.h in Headers */, - F7E107F9266E165419F09F357851FF94 /* PFUserController.h in Headers */, - 797CEAA0B00AE0F2FFC971030A142841 /* PFUserFileCodingLogic.h in Headers */, - E96561D1A7687F5C6116F3A1DB698EDC /* PFUserPrivate.h in Headers */, - CA6B9AA9F5B228BA5B3E3789A0BB0D0B /* PFUserState.h in Headers */, - 500A75B09A88C5CB9A8BCF236F9ADE5B /* PFUserState_Private.h in Headers */, - 3342E425FE281AB7323D6706237A2FDD /* PFWeakValue.h in Headers */, - 443C1CF5A54599280435A5764BC7AD29 /* Parse.h in Headers */, - AC49657D3C3E9041AF727A806BDA4B91 /* ParseInternal.h in Headers */, - 3179B1591E9D904EC929C13B9670DD79 /* ParseManager.h in Headers */, - 1CAB6029272599FE06ACBC43D39F0C49 /* ParseModule.h in Headers */, - 7034BA3B00EECFA6B092EDF9E296DF2F /* Parse_Private.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; F4BD1AB2FD8D0BB7241C2F997A0D3F60 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -3651,217 +3677,192 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - F713D2DAAE3958113D98DA32B364B4CE /* Headers */ = { + FAE0373BB2F25E550F8DE65664593BD4 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - C306BCCDD560BCE285958E022D4ECFC3 /* FBSDKAppGroupAddDialog.h in Headers */, - 815B91D3A7A855B5E6EB0DB6D4C49A76 /* FBSDKAppGroupContent.h in Headers */, - B49E65590447C056177C4650F8276BA7 /* FBSDKAppGroupJoinDialog.h in Headers */, - D0B4AD24608D2218B257F4C549DC71C5 /* FBSDKAppInviteContent.h in Headers */, - 7A28B8AD07B76AB3DB44F8CDFE744A7B /* FBSDKAppInviteDialog.h in Headers */, - F21580621D3E8689A8B9B1DA63A24927 /* FBSDKCheckmarkIcon.h in Headers */, - DD59BAFBAAEBD356F83FE7462D564E6E /* FBSDKGameRequestContent.h in Headers */, - 220E6346EEF271DD5FBA360A7E076851 /* FBSDKGameRequestDialog.h in Headers */, - A3E8BEB5BDB0DB91D73F3B750F881671 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */, - F4E3C825FDDF691C8620167D62C36527 /* FBSDKLikeActionController.h in Headers */, - A777CFCF539A3F513A8C5F7FE13BB5B1 /* FBSDKLikeActionControllerCache.h in Headers */, - AC4077514D5E7D8D685B477929CD1EEB /* FBSDKLikeBoxBorderView.h in Headers */, - 5134DC1ED5C368631B703B48F3FA51FD /* FBSDKLikeBoxView.h in Headers */, - 5903553075A49047E0950C6E0A84D9B1 /* FBSDKLikeButton+Internal.h in Headers */, - DF9D24EA75DCAD6E4EABE77BB82C729C /* FBSDKLikeButton.h in Headers */, - D69CEB9559FB7BE948DE3EE9DB288229 /* FBSDKLikeButtonPopWAV.h in Headers */, - 28EC0BC1DCF43CDD52A475B165A8FD73 /* FBSDKLikeControl+Internal.h in Headers */, - 119DCD23DA3C1E22777BF1F97BE3E170 /* FBSDKLikeControl.h in Headers */, - BF687234E9B46A43074E882CC6D8C4C6 /* FBSDKLikeDialog.h in Headers */, - 820F763472037E53E4796360BAF8DAF0 /* FBSDKLikeObjectType.h in Headers */, - 63F64CEFFA730AB5E3433162A7AE3C1A /* FBSDKLiking.h in Headers */, - 3214374F6CE47D604F5D0A6E41C5DCFF /* FBSDKMessageDialog.h in Headers */, - BC7868CFACD5A90AF4539B10B0C530DC /* FBSDKMessengerIcon.h in Headers */, - C2859D56FBEAF9577EB7E8FF91E9B087 /* FBSDKSendButton.h in Headers */, - 6B998B80ABD013DEB4D37A0DF9BB29D2 /* FBSDKShareAPI.h in Headers */, - D51EBFB6E359281876FAC27C321A4EF5 /* FBSDKShareButton.h in Headers */, - 20BBD79A31D823666D0B3A0CFAE82214 /* FBSDKShareConstants.h in Headers */, - EA4678DA9F19A5881A07ECC62861D055 /* FBSDKShareDefines.h in Headers */, - E137CB80B75D378FCEA9B7E03B1CD381 /* FBSDKShareDialog.h in Headers */, - C03056C7F18562A2E8DAD4A98F668F95 /* FBSDKShareDialogMode.h in Headers */, - BF9082656BF7F73899B73A2ACD3B64B8 /* FBSDKShareError.h in Headers */, - 56363899CDB4F14B74BF72FCFB6AE93D /* FBSDKShareKit+Internal.h in Headers */, - A745E81424A0ECF3E504C2027C5DF4D7 /* FBSDKShareKit.h in Headers */, - 360E0335AFBE716BC449DC5AE274EEEC /* FBSDKShareLinkContent+Internal.h in Headers */, - A75D8C6B1C911CCF9285B67A64D88168 /* FBSDKShareLinkContent.h in Headers */, - 6368AB2E120D6F8FC48F58970DFF6766 /* FBSDKShareOpenGraphAction.h in Headers */, - 49EF6FAA143F4116D84703093AB0550F /* FBSDKShareOpenGraphContent.h in Headers */, - 80B7EFF63B21D70D7D03657A25AA7759 /* FBSDKShareOpenGraphObject.h in Headers */, - 910591F473539420F32B53EFC561747F /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */, - BF89FBCCE7066221E7F2A987DD4E84CD /* FBSDKShareOpenGraphValueContainer.h in Headers */, - CF85133D70F60133609BD2CA91585CD7 /* FBSDKSharePhoto.h in Headers */, - 441148A00F86CF3ED1C359BC30D9802B /* FBSDKSharePhotoContent.h in Headers */, - 3564BDE7D6AC43505B004147D0F3F96A /* FBSDKShareUtility.h in Headers */, - 0A3B5EA35B0E5C9620B5247CBE3F2FD9 /* FBSDKShareVideo.h in Headers */, - 3D17F603F3AA75993A5871AA88E82EA8 /* FBSDKShareVideoContent.h in Headers */, - D312B0F84468E555BC85724BA429E0A0 /* FBSDKSharing.h in Headers */, - C69BE12C115BDBAD55BE9669643B5231 /* FBSDKSharingButton.h in Headers */, - B2B049AE4A156340F9AC769AE6A8E779 /* FBSDKSharingContent.h in Headers */, + B38FB84EF934643476AD18AC3DC7795F /* BFAppLink.h in Headers */, + 6155D01C8B51697111A08412A9A15D81 /* BFAppLinkNavigation.h in Headers */, + FA40CE5BCFEBAFA19CE2916AE884FF57 /* BFAppLinkResolving.h in Headers */, + 7007DB3DFD0438A84AB08C841722E049 /* BFAppLinkReturnToRefererController.h in Headers */, + 7A5A1F4552152A40E502176B3CD96B1A /* BFAppLinkReturnToRefererView.h in Headers */, + 9F705191F53966733FBA503F27BD14ED /* BFAppLinkReturnToRefererView_Internal.h in Headers */, + F1B7580F71CE94519DF90F7301DFDC55 /* BFAppLinkTarget.h in Headers */, + 16CB7796FFD9018113359615F7C4713F /* BFAppLink_Internal.h in Headers */, + 099082A1C7FAABBFBA2B4C428FF899F5 /* BFCancellationToken.h in Headers */, + 0B981311B68BFD9DD86BC7C5598B56DF /* BFCancellationTokenRegistration.h in Headers */, + A07428954F0ECE2812C099F99EEBDCF9 /* BFCancellationTokenSource.h in Headers */, + 1D220DA77D9B24A58DE5F500242C4014 /* BFDefines.h in Headers */, + 9F8F9CAAF474967CD794E0BD4D083C24 /* BFExecutor.h in Headers */, + 718B74711D901C679047E8E33676F378 /* BFMeasurementEvent.h in Headers */, + 75089BEF052080F9C53DD85E3E067A70 /* BFMeasurementEvent_Internal.h in Headers */, + F8CCC74E3F902C66ADCB6FC49A518C3F /* BFTask.h in Headers */, + 8535B91A7A7E444A84BA5F17C7C45A0B /* BFTaskCompletionSource.h in Headers */, + 78D7B0F4E3F947DDA6A98358B2A1C0E2 /* BFURL.h in Headers */, + 664BAAE15CB37598495A1B056695A4C6 /* BFURL_Internal.h in Headers */, + 0720845388625ACACFE5E090292E8C43 /* BFWebViewAppLinkResolver.h in Headers */, + C971A3D41DB725E39B62BB285C71C602 /* Bolts.h in Headers */, + 6F322C51FD0B96990A4EE44BBA6275CA /* BoltsVersion.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 146F659281512C0B5FB603D6893AD31E /* Pods */ = { + 07B33CB3AC7A0FB33C3E2F87B3AAA6BB /* FBSDKShareKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 683CE3AABFE44522F37E2A109C346787 /* Build configuration list for PBXNativeTarget "Pods" */; + buildConfigurationList = E177E6414A58969A070CFA1A4938E1C6 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */; buildPhases = ( - 6D2B8A8A757FB427940FBB3F122854B2 /* Sources */, - 1762E4D7A46B35D56224AE0D4FAC1493 /* Frameworks */, + D4C81EA36A6BFE3288457472CA4368FB /* Sources */, + 672DA56A5E00AC88E14A8FCA7D0851AA /* Frameworks */, + 7AC25458D2D7F6FE32B1DE4F25D46767 /* Headers */, ); buildRules = ( ); dependencies = ( - 69397930DED2D381C7EA26305507C2AC /* PBXTargetDependency */, - 4B5C01E548595779A34A8BABB27D0AD1 /* PBXTargetDependency */, - F393612E768E24CA90A7BAE57E7C3205 /* PBXTargetDependency */, - 153CCB3DBDC780B040D06C23CE57E22E /* PBXTargetDependency */, - 8952ED3D382F1A6B068B207FD8E9957B /* PBXTargetDependency */, - 610D35C9298F1590C611DAFAAFB7F0BF /* PBXTargetDependency */, - 76F3D42CA8B3F4B496EB7C44DB22C60A /* PBXTargetDependency */, - C2B16C4EC465BF81E7C7C0F9993CDDC2 /* PBXTargetDependency */, - FD57A738DE10B9F1A42639DD55F519B3 /* PBXTargetDependency */, - 5F35481F1296EA3D5771D17405B15B43 /* PBXTargetDependency */, - D2B995F840A42ABCB35C02C4FEC373AC /* PBXTargetDependency */, + A9D82D4BD1C13674DA7E9AE702119B04 /* PBXTargetDependency */, ); - name = Pods; - productName = Pods; - productReference = 149E15962A38A8DACF6A9781F4A92F22 /* libPods.a */; + name = FBSDKShareKit; + productName = FBSDKShareKit; + productReference = CDB7AF2EC4C8BD16B16801E52002B702 /* libFBSDKShareKit.a */; productType = "com.apple.product-type.library.static"; }; - 158117D77AED03B83733E51D2D22983B /* TransitionKit */ = { + 0EC7816D6AB1C0830108FC61D968488B /* ISO8601DateFormatterValueTransformer */ = { isa = PBXNativeTarget; - buildConfigurationList = EC5884D823C95D73657B127F496ED2E3 /* Build configuration list for PBXNativeTarget "TransitionKit" */; + buildConfigurationList = D0CD18500801AD4B06991D66CCFE7ED7 /* Build configuration list for PBXNativeTarget "ISO8601DateFormatterValueTransformer" */; buildPhases = ( - 3F093A1EE91BCE92AFC73A3B72540240 /* Sources */, - 67CFF8AD8DC741D9FD2BA13A98B8BEF0 /* Frameworks */, - D20BF03AA59C506A4D5AA6791C98E606 /* Headers */, + E6D802C085D3329BFB6C5D9329920583 /* Sources */, + 630C69A258B987845E55E720F274F821 /* Frameworks */, + 6B3C2F9572AD4D466314F78D8FC4A5D5 /* Headers */, ); buildRules = ( ); dependencies = ( + D947B19C1CDA42B26F803FECA6935D92 /* PBXTargetDependency */, ); - name = TransitionKit; - productName = TransitionKit; - productReference = 4E37F47F8B8CC9C91B39061A7536E3E9 /* libTransitionKit.a */; + name = ISO8601DateFormatterValueTransformer; + productName = ISO8601DateFormatterValueTransformer; + productReference = BAD26E583A45E51D16E0FA2F67CB7CA3 /* libISO8601DateFormatterValueTransformer.a */; productType = "com.apple.product-type.library.static"; }; - 25B614D6ADBCB106DEE01D64514A1810 /* FBSDKCoreKit */ = { + 146F659281512C0B5FB603D6893AD31E /* Pods */ = { isa = PBXNativeTarget; - buildConfigurationList = AD40A852228370388396799020B6ECCB /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */; + buildConfigurationList = 683CE3AABFE44522F37E2A109C346787 /* Build configuration list for PBXNativeTarget "Pods" */; buildPhases = ( - A26EE2CA4252E388C674FDAB319F3A92 /* Sources */, - D1EBA5986C45E47299F610E43AEB16C4 /* Frameworks */, - C60C7916A98E6FDD68F924105FAE29C6 /* Headers */, + 6D2B8A8A757FB427940FBB3F122854B2 /* Sources */, + 1762E4D7A46B35D56224AE0D4FAC1493 /* Frameworks */, ); buildRules = ( ); dependencies = ( - 29F703097FD38326D0B1AA3F0FF99627 /* PBXTargetDependency */, + E48AE3EDCEF605AF86E58F2AB34B3720 /* PBXTargetDependency */, + 20B7A46BE41F3AA6B35791B84829E235 /* PBXTargetDependency */, + 5476A9F788FDF749003DA969A09B8EDF /* PBXTargetDependency */, + B61A4D1E2DD3FF9BD98C9F70D1A5671D /* PBXTargetDependency */, + 4E333A737FBED4611FA065CD43804799 /* PBXTargetDependency */, + 58E3FDF3353FBEF4CD1513221CAF29B7 /* PBXTargetDependency */, + A3494C8ED2345467EA49874CD21B00C6 /* PBXTargetDependency */, + B5E2B6580F9E52AB6B90083B1EE38486 /* PBXTargetDependency */, + D435EE953A395D8BA469CF50BAFFB40C /* PBXTargetDependency */, + 740BD01DC926CE40B57F37BA758691F0 /* PBXTargetDependency */, + 820B3947E446D75C8D9868A33BA2F0C5 /* PBXTargetDependency */, ); - name = FBSDKCoreKit; - productName = FBSDKCoreKit; - productReference = B2B61F565ACF0CDFAAE4247A1F8D4A5C /* libFBSDKCoreKit.a */; + name = Pods; + productName = Pods; + productReference = 149E15962A38A8DACF6A9781F4A92F22 /* libPods.a */; productType = "com.apple.product-type.library.static"; }; - 5A89C7736981130B2EEED27805B7A855 /* RestKit */ = { + 158117D77AED03B83733E51D2D22983B /* TransitionKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 5F01894250044CF47766C321EA913C84 /* Build configuration list for PBXNativeTarget "RestKit" */; + buildConfigurationList = EC5884D823C95D73657B127F496ED2E3 /* Build configuration list for PBXNativeTarget "TransitionKit" */; buildPhases = ( - 09D794CED70B7E37F4246A92E1B6EB12 /* Sources */, - 677EAF3CA8C9E0CED61D9E6EFCCE8FDF /* Frameworks */, - F4BD1AB2FD8D0BB7241C2F997A0D3F60 /* Headers */, + 3F093A1EE91BCE92AFC73A3B72540240 /* Sources */, + 67CFF8AD8DC741D9FD2BA13A98B8BEF0 /* Frameworks */, + D20BF03AA59C506A4D5AA6791C98E606 /* Headers */, ); buildRules = ( ); dependencies = ( - 1D6E64BC964904907700014CA96C7F74 /* PBXTargetDependency */, - 6EB34B92CCF89CBBFB27599DDE9A632B /* PBXTargetDependency */, - E4737F0598EB8D7357880B052025EEBB /* PBXTargetDependency */, - 860FAF17332CD1740B2A11DC21BFB2AF /* PBXTargetDependency */, - 01A09D5CAB510AFF5EAE0B04999D4CBE /* PBXTargetDependency */, ); - name = RestKit; - productName = RestKit; - productReference = B0F9682AC6A9C5259D9F3D4BCCD455B1 /* libRestKit.a */; + name = TransitionKit; + productName = TransitionKit; + productReference = 4E37F47F8B8CC9C91B39061A7536E3E9 /* libTransitionKit.a */; productType = "com.apple.product-type.library.static"; }; - 63CC4B4092B896F9AACC389383233974 /* Parse */ = { + 38C996FDE9DF6549D8681DED0DF37B6D /* FBSDKCoreKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 8A697DC1496FE3D429E1CFF02BD30ED3 /* Build configuration list for PBXNativeTarget "Parse" */; + buildConfigurationList = 552C7D808ECBB92F668A2DB3200A4D1C /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */; buildPhases = ( - 35A914A6F70E981559E67D4E38DDE40D /* Sources */, - 2BE89E273AB15E7411F78FE25B729E46 /* Frameworks */, - D9F933FB4C402CBFD29FBBB0594B37AE /* Headers */, + 4B1F1B7307145BD524E6EF10229A36B7 /* Sources */, + 1F2E35A78CF2189DDA736BBDBEE166CB /* Frameworks */, + B8DA0630A0A7B0876DA944FBB8B99A30 /* Headers */, ); buildRules = ( ); dependencies = ( - 1AF8EB47E48D7C1CFA7614ACB3F9C64E /* PBXTargetDependency */, + F9718E79C8C9C0AD0A55FB991F0E078D /* PBXTargetDependency */, ); - name = Parse; - productName = Parse; - productReference = 69BA2E95DE6DD4BD8CCD5C2F04F31412 /* libParse.a */; + name = FBSDKCoreKit; + productName = FBSDKCoreKit; + productReference = 48D2279C54480FB712244BACA57F6212 /* libFBSDKCoreKit.a */; productType = "com.apple.product-type.library.static"; }; - 6C88FB013486FDFB342E31070F055B7D /* RKValueTransformers */ = { + 4A563E15AD58F61DA31660DAC05A1819 /* FBSDKLoginKit */ = { isa = PBXNativeTarget; - buildConfigurationList = F2360F7C13D81C174408D22905743FF4 /* Build configuration list for PBXNativeTarget "RKValueTransformers" */; + buildConfigurationList = FBA64B3614CC52E9FFFD42D7968A2621 /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */; buildPhases = ( - C3FCA0C9FC07157CA1C60B02DB2BF7B3 /* Sources */, - F048AD6BAD593C1E21D93163454F1D6F /* Frameworks */, - 529CFAAEC66CAA1C5E41A5E836F8BA11 /* Headers */, + E4378E9400771DD3F49170B9CB4F27E4 /* Sources */, + EC1C8A09858403D758096FE64EC98281 /* Frameworks */, + 94860BC1989372135FC8127BBC4C1B0A /* Headers */, ); buildRules = ( ); dependencies = ( + 1DB21EB238ED3CDBEDA6D8B7DCF90C09 /* PBXTargetDependency */, ); - name = RKValueTransformers; - productName = RKValueTransformers; - productReference = 991823AD655E78B8754FB6DE31C15928 /* libRKValueTransformers.a */; + name = FBSDKLoginKit; + productName = FBSDKLoginKit; + productReference = 93BF262897FA3F05F3FDF601D8CB04A7 /* libFBSDKLoginKit.a */; productType = "com.apple.product-type.library.static"; }; - 8466032D91D4D9DB26BAB2973DE4580C /* FBSDKShareKit */ = { + 5A89C7736981130B2EEED27805B7A855 /* RestKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 465F5EE40464137B8E18CF1E3B4F0A88 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */; + buildConfigurationList = 5F01894250044CF47766C321EA913C84 /* Build configuration list for PBXNativeTarget "RestKit" */; buildPhases = ( - 290DA60611F13F06041A000E6D8A98F8 /* Sources */, - 21C9FCE1B1B99AF519B601587E641B0E /* Frameworks */, - F713D2DAAE3958113D98DA32B364B4CE /* Headers */, + 09D794CED70B7E37F4246A92E1B6EB12 /* Sources */, + 677EAF3CA8C9E0CED61D9E6EFCCE8FDF /* Frameworks */, + F4BD1AB2FD8D0BB7241C2F997A0D3F60 /* Headers */, ); buildRules = ( ); dependencies = ( - 1B98D50D03158FC43F851D07680931C5 /* PBXTargetDependency */, + D96E033200C99E888BB967DAAFA162FD /* PBXTargetDependency */, + C1C363F76C8B8310F81BD7794F18CF24 /* PBXTargetDependency */, + FE40B3843EDCA5F39E824ADC4B3FCC8B /* PBXTargetDependency */, + 98573BF74E4FBE4F6612588F871734DE /* PBXTargetDependency */, + 74BE66951935B4884173BE8571A70445 /* PBXTargetDependency */, ); - name = FBSDKShareKit; - productName = FBSDKShareKit; - productReference = 9EC619ED9963ABF73BFCE22527769210 /* libFBSDKShareKit.a */; + name = RestKit; + productName = RestKit; + productReference = B0F9682AC6A9C5259D9F3D4BCCD455B1 /* libRestKit.a */; productType = "com.apple.product-type.library.static"; }; - 9E227047A8538838626AF4BBABC0B0F8 /* FBSDKLoginKit */ = { + 9350FE989EB5F0E5321B9054194D84DE /* Parse */ = { isa = PBXNativeTarget; - buildConfigurationList = C3987B318B7564B87ABA70296462F73F /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */; + buildConfigurationList = 9E125BC8CF613466796A1A3602F5CBD5 /* Build configuration list for PBXNativeTarget "Parse" */; buildPhases = ( - 16B2E1DF506AC974E86E530E7E8B6C30 /* Sources */, - 5994B286A6EC267C5FAEC812F8098E60 /* Frameworks */, - 1D36BC931AD498CF9B9A0BEF59933AD4 /* Headers */, + 3CD284D7C1CDA6C8A6D7D5D1742ECD2F /* Sources */, + DF734AC2570E46994A4B54AF3E2E31BF /* Frameworks */, + 3A1F7870E56AFBCFF878F6276B003CAA /* Headers */, ); buildRules = ( ); dependencies = ( - D596BD6B3C54E3E9B5E021ABCCC4908B /* PBXTargetDependency */, + 6C5A8B64810D2A925A10471E1DD15B6F /* PBXTargetDependency */, ); - name = FBSDKLoginKit; - productName = FBSDKLoginKit; - productReference = BB00D6E02A224030D5BDFAF952816C36 /* libFBSDKLoginKit.a */; + name = Parse; + productName = Parse; + productReference = 9FE092D9D9FA0698D276FB74E5D3C4EB /* libParse.a */; productType = "com.apple.product-type.library.static"; }; A2770197345BCE1622568AECE6B8E824 /* SOCKit */ = { @@ -3881,31 +3882,30 @@ productReference = A54BA714770BA8ED007819BC352FEB7C /* libSOCKit.a */; productType = "com.apple.product-type.library.static"; }; - C4D8ECA2F5CC610D055AC7FA148E43D2 /* ISO8601DateFormatterValueTransformer */ = { + BE61E7AE076C01CBC74564E4084B550D /* RKValueTransformers */ = { isa = PBXNativeTarget; - buildConfigurationList = 85B8C76F6B34886DBFD27254F0AD599A /* Build configuration list for PBXNativeTarget "ISO8601DateFormatterValueTransformer" */; + buildConfigurationList = 98311CD083858EB460528FDAF09B4351 /* Build configuration list for PBXNativeTarget "RKValueTransformers" */; buildPhases = ( - 6769FA2C88490E7D5C625662DB14220F /* Sources */, - 1352CC7061D4378F37147BC6CBF04E73 /* Frameworks */, - 9BB099983C685F1488B532614064A264 /* Headers */, + 746445DB8AFCFABF5687FB7B2A2301DE /* Sources */, + 324C7B0261F2E0EEC195A44011E1B1F7 /* Frameworks */, + AB65C60BCF41EA7218C1E1B0FB235A25 /* Headers */, ); buildRules = ( ); dependencies = ( - 7E86B9FE2E0B008AFB152287F6BACD0A /* PBXTargetDependency */, ); - name = ISO8601DateFormatterValueTransformer; - productName = ISO8601DateFormatterValueTransformer; - productReference = 115AC32B7B718A94B00F763F6051128C /* libISO8601DateFormatterValueTransformer.a */; + name = RKValueTransformers; + productName = RKValueTransformers; + productReference = 41BC1E717C434D21A5472F44C601A2B7 /* libRKValueTransformers.a */; productType = "com.apple.product-type.library.static"; }; - C9CF1C271EB58F682F0F38C8C35BAB4C /* AFNetworking */ = { + CDF340FD050E9DF3676FDDB5D9FAB6D4 /* AFNetworking */ = { isa = PBXNativeTarget; - buildConfigurationList = F7FDAE37636FE3CB2EC4D023EBFA0B16 /* Build configuration list for PBXNativeTarget "AFNetworking" */; + buildConfigurationList = 6EC6BD2999BC540B28D524C6412A861E /* Build configuration list for PBXNativeTarget "AFNetworking" */; buildPhases = ( - 5CD892F05B21BD98CE742B66FDBDA819 /* Sources */, - 9DDD7991E61142C3AB90621D1CB423EE /* Frameworks */, - 963888F5333B9CE4EC14DA4678E04378 /* Headers */, + 06669AABE02B639D470205BF63ACC3CA /* Sources */, + 0DF38BD589367916C785FD03B2C12311 /* Frameworks */, + 3115B24E624C7DD822717FD35A51E1FF /* Headers */, ); buildRules = ( ); @@ -3913,16 +3913,16 @@ ); name = AFNetworking; productName = AFNetworking; - productReference = 48D9F0444140EC888D96942489E879B4 /* libAFNetworking.a */; + productReference = 9E042B3BA6CAF103736FF4527CF951FF /* libAFNetworking.a */; productType = "com.apple.product-type.library.static"; }; - CDF1F15921EAF837BFD0B27099E8329A /* Bolts */ = { + F70BF3EA9E69856AC06EB0A27F8F7F5E /* Bolts */ = { isa = PBXNativeTarget; - buildConfigurationList = DF16688DE4059476DF270CAE8D816A68 /* Build configuration list for PBXNativeTarget "Bolts" */; + buildConfigurationList = 9C5223A409DF8B195DDC90B0247CD9E3 /* Build configuration list for PBXNativeTarget "Bolts" */; buildPhases = ( - 07D3BAD91006172DF57E0666D28846BB /* Sources */, - 967922C4FD7DDAAB49F89A798597354F /* Frameworks */, - BC8D8EE96B9BD1053950B9537233B9C1 /* Headers */, + F6444182B3E4AA19EE41E56E02FF8AA6 /* Sources */, + 964BF1A7B9CA108D543A5A683388E78B /* Frameworks */, + FAE0373BB2F25E550F8DE65664593BD4 /* Headers */, ); buildRules = ( ); @@ -3930,7 +3930,7 @@ ); name = Bolts; productName = Bolts; - productReference = A4365F0D13404D6A5A7FA5FE5156F9E2 /* libBolts.a */; + productReference = 648066E3DB510A8F72E964D968AAA219 /* libBolts.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -3954,15 +3954,15 @@ projectDirPath = ""; projectRoot = ""; targets = ( - C9CF1C271EB58F682F0F38C8C35BAB4C /* AFNetworking */, - CDF1F15921EAF837BFD0B27099E8329A /* Bolts */, - 25B614D6ADBCB106DEE01D64514A1810 /* FBSDKCoreKit */, - 9E227047A8538838626AF4BBABC0B0F8 /* FBSDKLoginKit */, - 8466032D91D4D9DB26BAB2973DE4580C /* FBSDKShareKit */, - C4D8ECA2F5CC610D055AC7FA148E43D2 /* ISO8601DateFormatterValueTransformer */, - 63CC4B4092B896F9AACC389383233974 /* Parse */, + CDF340FD050E9DF3676FDDB5D9FAB6D4 /* AFNetworking */, + F70BF3EA9E69856AC06EB0A27F8F7F5E /* Bolts */, + 38C996FDE9DF6549D8681DED0DF37B6D /* FBSDKCoreKit */, + 4A563E15AD58F61DA31660DAC05A1819 /* FBSDKLoginKit */, + 07B33CB3AC7A0FB33C3E2F87B3AAA6BB /* FBSDKShareKit */, + 0EC7816D6AB1C0830108FC61D968488B /* ISO8601DateFormatterValueTransformer */, + 9350FE989EB5F0E5321B9054194D84DE /* Parse */, 146F659281512C0B5FB603D6893AD31E /* Pods */, - 6C88FB013486FDFB342E31070F055B7D /* RKValueTransformers */, + BE61E7AE076C01CBC74564E4084B550D /* RKValueTransformers */, 5A89C7736981130B2EEED27805B7A855 /* RestKit */, A2770197345BCE1622568AECE6B8E824 /* SOCKit */, 158117D77AED03B83733E51D2D22983B /* TransitionKit */, @@ -3971,26 +3971,20 @@ /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 07D3BAD91006172DF57E0666D28846BB /* Sources */ = { + 06669AABE02B639D470205BF63ACC3CA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 55AF31B2E7E52507E13E3EE489CAB42F /* BFAppLink.m in Sources */, - B39DAC4258721979718AF68CFFDF2F74 /* BFAppLinkNavigation.m in Sources */, - 8AAF4E0737895C4A6F96AD130EB41A76 /* BFAppLinkReturnToRefererController.m in Sources */, - 5CC98BA3E4146174EB3FBC5D20DC1CE5 /* BFAppLinkReturnToRefererView.m in Sources */, - 3A04E842AA18A356259934EF2599629D /* BFAppLinkTarget.m in Sources */, - 99CF212BAA3933341FF49D3902823477 /* BFCancellationToken.m in Sources */, - 8AD06EFB5A8B1FA75F88414D6A51AD10 /* BFCancellationTokenRegistration.m in Sources */, - FABCB5C3C522BD3BD90E520F858E9D90 /* BFCancellationTokenSource.m in Sources */, - 8367F497608E4E978AC85C9201057F28 /* BFExecutor.m in Sources */, - FE482065A069005611AF4B036E7DDCED /* BFMeasurementEvent.m in Sources */, - EEB87A351E1B32FD3CA32811E998135E /* BFTask.m in Sources */, - 1FAAB738BDBFD14A7B2E1C9FE9F7CA82 /* BFTaskCompletionSource.m in Sources */, - 507B7C7F3E30F50FF9BAE6C907ECE626 /* BFURL.m in Sources */, - D04FDE92822D348AECB997E83FC68F16 /* BFWebViewAppLinkResolver.m in Sources */, - A236FA4A4D8D428BCF2799A6D87D96DB /* Bolts-dummy.m in Sources */, - 0E0632D6D28316A2A4CC00E6CCAFB98C /* Bolts.m in Sources */, + E79AF2F84270D6E6CE16DFEDABCF3E01 /* AFHTTPClient.m in Sources */, + B70D423A46D26F002B8E7833DD868993 /* AFHTTPRequestOperation.m in Sources */, + 095B67BB026AEC6B803356F0357D61B0 /* AFImageRequestOperation.m in Sources */, + C4EE4B4647BA408211F27846E6200FE3 /* AFJSONRequestOperation.m in Sources */, + 81D2A1174D2AB7C2A85A459309F1C871 /* AFNetworkActivityIndicatorManager.m in Sources */, + 90EC0380FEBB7E27ADAD47E582C3D580 /* AFNetworking-dummy.m in Sources */, + 3FE71CD230D88EAD1B31C317695B466E /* AFPropertyListRequestOperation.m in Sources */, + 47260DBBF3AC80EBF7CB97A2F3EB322B /* AFURLConnectionOperation.m in Sources */, + 130EDBB373B792D2E24C971FD38312DD /* AFXMLRequestOperation.m in Sources */, + 60646FC6222FE516DCD6BFA761C57A54 /* UIImageView+AFNetworking.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4052,495 +4046,501 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 16B2E1DF506AC974E86E530E7E8B6C30 /* Sources */ = { + 3B27D6A53A40DB67B708280465D0F21C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9E757C484BA1AAE97BE4C2409B6FD0A2 /* FBSDKLoginButton.m in Sources */, - BF7783BA3CF0BE676356BAA176D27708 /* FBSDKLoginCompletion.m in Sources */, - 8A0F2CECD9DDD91A54E8B7B4DB24E6B6 /* FBSDKLoginConstants.m in Sources */, - 07287065D4777E1A383C96927EEFD816 /* FBSDKLoginError.m in Sources */, - 9ED5478F4952488EFF6485BF5E50ACAF /* FBSDKLoginKit-dummy.m in Sources */, - E315649B8C0329ABBE715331EC1105D3 /* FBSDKLoginManager.m in Sources */, - 48ECB9C2569B303EBABBDDDB3BE18152 /* FBSDKLoginManagerLogger.m in Sources */, - 35CBB8FDE995DF721CBB0CDFE012C9D8 /* FBSDKLoginManagerLoginResult.m in Sources */, - 72207B02452AB0EDDF0FE5AC43B794DF /* FBSDKLoginTooltipView.m in Sources */, - 89DCEEBB7F2531565138924B9051515D /* FBSDKLoginUtility.m in Sources */, - 446CC1EE67B0B5F1F80B6FEA0F5A7ED0 /* FBSDKTooltipView.m in Sources */, - 2A34C2128A8898FD3560B05FE8AEC6E6 /* _FBSDKLoginRecoveryAttempter.m in Sources */, + AED7DD46159F1525CBAED2B765B6FBB2 /* SOCKit-dummy.m in Sources */, + EB73AF4C9D61D61F7B1BB0F6C573118D /* SOCKit.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 290DA60611F13F06041A000E6D8A98F8 /* Sources */ = { + 3CD284D7C1CDA6C8A6D7D5D1742ECD2F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 7CE5FA614C65D51023461EFEDA3F35D2 /* FBSDKAppGroupAddDialog.m in Sources */, - F2CDB8E6D9A013D37FD7054A5A1E2C7D /* FBSDKAppGroupContent.m in Sources */, - 0BF5D62B21185C974403236E5B12BB47 /* FBSDKAppGroupJoinDialog.m in Sources */, - 1D1D4A63CA7E7C9C93B672370E9261F6 /* FBSDKAppInviteContent.m in Sources */, - E29BC3C544BF38C2F30CB4B2AAD45B41 /* FBSDKAppInviteDialog.m in Sources */, - 7908444C47D45F63B7D6E3AB107C9CC5 /* FBSDKCheckmarkIcon.m in Sources */, - 7E851432216D305D68D5E8D984712692 /* FBSDKGameRequestContent.m in Sources */, - E4EBE0695A4E89A25BA0DCBB7A37C8C4 /* FBSDKGameRequestDialog.m in Sources */, - 20FA43FA68DF7B3AA0C3287CEB16B45F /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */, - FCF7B5A60C9D80BB8ED81E71C7AC8626 /* FBSDKLikeActionController.m in Sources */, - DBD290D5C0A24237D2BD5BD12D51421D /* FBSDKLikeActionControllerCache.m in Sources */, - AAB0B8BD8FEDBC51DC6FC0D6A589AFC6 /* FBSDKLikeBoxBorderView.m in Sources */, - 8E194598BA9FA104EBD9F40A911BFDFE /* FBSDKLikeBoxView.m in Sources */, - 1CFEE22022532C92122574E140CB27BA /* FBSDKLikeButton.m in Sources */, - 684A5251290479C9ACDB4475F2940FC0 /* FBSDKLikeButtonPopWAV.m in Sources */, - 7D1DF1DAE2CCE5B8852F7715A228B086 /* FBSDKLikeControl.m in Sources */, - 9C174E63607360CD339FECB3BFA37F4E /* FBSDKLikeDialog.m in Sources */, - B15373F23FB7B5D41A62CA92BBDD567C /* FBSDKLikeObjectType.m in Sources */, - E530D88B0E0091515A6C8A8E1AA22B21 /* FBSDKMessageDialog.m in Sources */, - 4B0728E23CBBDB6147793AD950A6863B /* FBSDKMessengerIcon.m in Sources */, - 7DE0147BFAAC8C52F531763BDCACB2C4 /* FBSDKSendButton.m in Sources */, - 375BA2E48BF70455B6F5124A7AB5DD9F /* FBSDKShareAPI.m in Sources */, - 096ECB92C0E8A0012A979F498F805D7A /* FBSDKShareButton.m in Sources */, - 3C8B562089BB841438C603BABE32632A /* FBSDKShareConstants.m in Sources */, - 0CE4944C400ACFDAF62ACE7BE9D296B7 /* FBSDKShareDialog.m in Sources */, - 6E70C3CB52C461296A5B3187273D7C33 /* FBSDKShareDialogMode.m in Sources */, - 3174730BF077E855590518B3457069F8 /* FBSDKShareError.m in Sources */, - 0A4CDCF83EC9FBDE9EC13F7874D5FFAE /* FBSDKShareKit-dummy.m in Sources */, - 1F4C9368105876D7EE4EBDB3C73369CA /* FBSDKShareLinkContent.m in Sources */, - 52493A2D9336CF921C2D109844F373CC /* FBSDKShareOpenGraphAction.m in Sources */, - 77AB0018DA45275B3E7BFCDC94D8AABD /* FBSDKShareOpenGraphContent.m in Sources */, - 492DCBE9081F45A8B617B971A5B76263 /* FBSDKShareOpenGraphObject.m in Sources */, - 6E7DC3D8EDD49882956585EDB0A9C13F /* FBSDKShareOpenGraphValueContainer.m in Sources */, - 134A0D3E2B08F588C5212E330CC519ED /* FBSDKSharePhoto.m in Sources */, - E4FBC21224FF5A25AAE72F6E25111FD5 /* FBSDKSharePhotoContent.m in Sources */, - B64274ADB723090A619329059E5367B1 /* FBSDKShareUtility.m in Sources */, - 780B558D9C23324A76E2300EB403708E /* FBSDKShareVideo.m in Sources */, - 6282DAB78EB9EF693393423B89E303A5 /* FBSDKShareVideoContent.m in Sources */, + BA5CC6A82E079E00AF7E360718D52E02 /* BFTask+Private.m in Sources */, + E7555C005BF32F0FB0FB32265B0B3122 /* PFACL.m in Sources */, + 7EC8DDF3DDAE56746E934F89307D7583 /* PFACLState.m in Sources */, + 682E4A7F65C613EF767604374D7A4639 /* PFAlertView.m in Sources */, + 6F05C7C3A58618ADF1E7C6672414D524 /* PFAnalytics.m in Sources */, + 00535AC2B7EA20D7A306E029CAEC2EF4 /* PFAnalyticsController.m in Sources */, + 845C26A4234F2FFB1203C918A6F64998 /* PFAnalyticsUtilities.m in Sources */, + F07F1D8F65ACCB3ED5CB7ABF7DA5FF0B /* PFAnonymousAuthenticationProvider.m in Sources */, + 39FC8B6114BDCE13E07EB4160B959A8F /* PFAnonymousUtils.m in Sources */, + F1E0170758F896428FBE9811966F3E68 /* PFApplication.m in Sources */, + 336423D9526F48480AD694EC196FDCA7 /* PFAsyncTaskQueue.m in Sources */, + 15A6C192D5AF8B7E13C7446853ECFBAD /* PFBase64Encoder.m in Sources */, + 479E6787348037F3AB0BC2F71B64F8BA /* PFBaseState.m in Sources */, + E2B5F7FF677D9CA39663F3A0AD09874D /* PFCachedQueryController.m in Sources */, + 4F71A1E65C43A417915F279E8DE8F186 /* PFCategoryLoader.m in Sources */, + FBAD3370AEAD92CD2F7F60BB6743FEFD /* PFCloud.m in Sources */, + 182D77EB8C269AD7EDAC680AD93DB72A /* PFCloudCodeController.m in Sources */, + BC4E7DE5246BF5D9DA0FAF8D6A8C86B6 /* PFCommandCache.m in Sources */, + ED1BF10F7A865B6BCFB5E9077E589041 /* PFCommandResult.m in Sources */, + A2575C4641D3633910C02BC08860000C /* PFCommandRunning.m in Sources */, + 1AC411923BA89287B42855F90F199399 /* PFCommandRunningConstants.m in Sources */, + C81E336F8975161708D61907D4BECB52 /* PFCommandURLRequestConstructor.m in Sources */, + 4CC36A73728C42160295B6C06F5C9E1F /* PFConfig.m in Sources */, + A0EF1086FDB0062AAE995ED6B69B7EB5 /* PFConfigController.m in Sources */, + 37C5A5F5F5C16AAF3BB95832F149E67B /* PFConstants.m in Sources */, + 7F7A98BA075E1FD86DBC637F18F0D582 /* PFCoreManager.m in Sources */, + E6F6345B4E00718444ACDCFD544E27E8 /* PFCurrentConfigController.m in Sources */, + 604439374F250448FC99A0F77B4CE15F /* PFCurrentInstallationController.m in Sources */, + 92AE88B8C0C5A81DB777F447227395CD /* PFCurrentUserController.m in Sources */, + 9EB9B579CE8B4A1750DFE203B0A4F013 /* PFDateFormatter.m in Sources */, + DBDFC45578DA12608DC69FBC5E82DC30 /* PFDecoder.m in Sources */, + 62302556F6AC2F7B62A1E2C3C770FAFB /* PFDefaultACLController.m in Sources */, + 60C5A2D3BE63055B71F68F64563474D0 /* PFDevice.m in Sources */, + BDF22FED7BDF2A1AC98DA87785F4990B /* PFEncoder.m in Sources */, + 2B019E06A434B73512E960B5037F458D /* PFErrorUtilities.m in Sources */, + 8034FE492667425492892E47331F2329 /* PFEventuallyPin.m in Sources */, + B4EE6797178E18BDEFC03A41CF458AF1 /* PFEventuallyQueue.m in Sources */, + 77E441574FD39C4C4993CD33AB6A8DD1 /* PFFieldOperation.m in Sources */, + D3493E749B7820B9A78BA0BCFF41952D /* PFFieldOperationDecoder.m in Sources */, + 5B57FAB57B310D17F2EA7D85A7227C23 /* PFFile.m in Sources */, + 46F3472C258501F3EB104F0CEFA49EAB /* PFFileController.m in Sources */, + 545122765F77D3F755A9520AB3028996 /* PFFileDataStream.m in Sources */, + 65BA644D4E07A43524D0B5B38DAEFF0A /* PFFileManager.m in Sources */, + 51A265493014DED3E038034A805BC06B /* PFFileStagingController.m in Sources */, + 150E35C95B7ED2A55FADB9990FDB22E9 /* PFFileState.m in Sources */, + 807960496B84272FCA09089BD12D0F4B /* PFGeoPoint.m in Sources */, + CA1C8CD372D64F4E529A6A9C938CE543 /* PFHTTPURLRequestConstructor.m in Sources */, + EBA18B1D4DD6CDA28B9223682CAEFC44 /* PFHash.m in Sources */, + D640F592E8B89903E1F007453508AF11 /* PFInstallation.m in Sources */, + F17F8BEFC9816E31776391DA362ED4C0 /* PFInstallationConstants.m in Sources */, + A81EAB16D5FC59CD05962E2FC522F0B2 /* PFInstallationController.m in Sources */, + 38CDA7AF96061D1CC4F9999F941314A4 /* PFInstallationIdentifierStore.m in Sources */, + 30231E4630A4A71D7311DD4463E21F51 /* PFInternalUtils.m in Sources */, + 85FF1DA846D0199EBFECFCF6608778E8 /* PFJSONSerialization.m in Sources */, + F1F3FB15F726B03CD49FC6A0195CF856 /* PFKeyValueCache.m in Sources */, + 753534EF9F6BA68DDC2C0BB97ABF5595 /* PFKeychainStore.m in Sources */, + B12CD120D83F1BD943F435B1A23C520F /* PFLocationManager.m in Sources */, + 625C91C53680F09517E0DC0872450374 /* PFLogger.m in Sources */, + E46A37E2CEEDBB1B8811B7905FDEF504 /* PFMultiProcessFileLock.m in Sources */, + 1C826C6D676AF5E527AD50D044046E33 /* PFMultiProcessFileLockController.m in Sources */, + 0F3466A31A5A04E235B74EAF5ACFC3F8 /* PFMulticastDelegate.m in Sources */, + 1559BC15F9F341A9E05942AD706D0833 /* PFMutableACLState.m in Sources */, + A92DC8F6936BA258AE90BBD122B20E32 /* PFMutableFileState.m in Sources */, + A979FB0DFC6A823D22D18A7D0D37811D /* PFMutableObjectState.m in Sources */, + 582CE335157F67A7AC9C4F948C7BFBCB /* PFMutablePushState.m in Sources */, + 1A09E869300C387E669CD4D45F577CC0 /* PFMutableQueryState.m in Sources */, + D5CEC5EAAA7E87EAFEF9CC6698EB64AF /* PFMutableRelationState.m in Sources */, + C1B85ABD14ED49BA35A4D5265DEB7122 /* PFMutableUserState.m in Sources */, + F67264DD2600D04095272B1BB6F2636A /* PFNetworkActivityIndicatorManager.m in Sources */, + 45A12AF03992E1460CE8A8F60E32BFB4 /* PFObject.m in Sources */, + 6D4838695D90508DA37AFB4E8CEC4EF0 /* PFObjectBatchController.m in Sources */, + 8EEA92CFB0319DC52DB310A78F1E4B09 /* PFObjectConstants.m in Sources */, + 9F4936D9F122DA751E92AEBFC0EE497F /* PFObjectController.m in Sources */, + D4824EEE4046BDAF6F5A1C824CB8CD69 /* PFObjectEstimatedData.m in Sources */, + 4710D5B167AFEBA84243F46516E78202 /* PFObjectFileCoder.m in Sources */, + F36C75B2D364521B66BFEB93F0AC8A47 /* PFObjectFileCodingLogic.m in Sources */, + 36808C750EE4E138E79AC4A52BBBCDA1 /* PFObjectFilePersistenceController.m in Sources */, + F6932B5A372E9D096040DE73D753E2A2 /* PFObjectLocalIdStore.m in Sources */, + 96142816EC1AA2045DFF5E56EA30F07D /* PFObjectState.m in Sources */, + 52E6F3ADE5C66CCE50A4157FF354200D /* PFObjectSubclassInfo.m in Sources */, + 2F6E21DBD92BD6D98388D97F614B56AD /* PFObjectSubclassingController.m in Sources */, + 56E7498A46584C6C8109EAB46069D26D /* PFObjectUtilities.m in Sources */, + BFE2F9CF01E7E57239C3A42BFD1E94FA /* PFOfflineObjectController.m in Sources */, + FCAF408597CAB99CF982209BB5537EC3 /* PFOfflineQueryController.m in Sources */, + 2694BF27DA873BF154BE842A4638CC6D /* PFOfflineQueryLogic.m in Sources */, + D5A92CFE08A253A3C62DD4F37C8DDE86 /* PFOfflineStore.m in Sources */, + CDCDC39FD4BD597F9171D1C12AFEC71B /* PFOperationSet.m in Sources */, + D348092A1C02C27E402FD7E5CE9DA7B1 /* PFPaymentTransactionObserver.m in Sources */, + 61D3D1A601A46800EC2C2F1BC8AEE2B9 /* PFPin.m in Sources */, + 12AB053235C6B70B0EB43476DDA2452E /* PFPinningEventuallyQueue.m in Sources */, + 10AABB95160AC54105C043949E1933DC /* PFPinningObjectStore.m in Sources */, + 3C73A01215B692C7C17F8CC6C7D74BE4 /* PFProduct.m in Sources */, + 10EE3AADC2DDD3110F87A3F3A0AF7095 /* PFProductsRequestHandler.m in Sources */, + 3B2AE3090FBEF6A9A0AF03E43A77509A /* PFPropertyInfo.m in Sources */, + 1FC6D72957CEF9A24C72C4F8DFD41502 /* PFPropertyInfo_Runtime.m in Sources */, + 87C94373458C4511D89CF78EA0CF5B50 /* PFPurchase.m in Sources */, + 93D454B41C475DD7053A9F84BC1CB745 /* PFPurchaseController.m in Sources */, + 2E353986482700CBC86E955C4DDCFA0E /* PFPush.m in Sources */, + D77E4511F8389515B0EEC62D96418311 /* PFPushChannelsController.m in Sources */, + 266D1F445295A861003F06F357CAB18B /* PFPushController.m in Sources */, + F9FB9AC0BC858C6F6E2D684C255272FB /* PFPushManager.m in Sources */, + 60A6E403AFC9A0BA34A1924ED46E7661 /* PFPushState.m in Sources */, + 9F0967492995CB98973A21AA30AFFC7F /* PFPushUtilities.m in Sources */, + A4E81B9C9078BC0F5D1113D16C8D1F42 /* PFQuery.m in Sources */, + 8533CBAFEDFAD5FBC4ADDEE1BB82F1E2 /* PFQueryController.m in Sources */, + 8A5D5875FC065737EB8E0B6C6E340C90 /* PFQueryState.m in Sources */, + 84CA51BF867492192A541AD60AB61E40 /* PFQueryUtilities.m in Sources */, + 1BF120A6893C7F1A47A8B6545D5BDF1A /* PFRESTAnalyticsCommand.m in Sources */, + CC991729BDA464C7B9795D7AAC0A8F49 /* PFRESTCloudCommand.m in Sources */, + 39D96839924E83EA80B140F589FFCD47 /* PFRESTCommand.m in Sources */, + 6E3BD44E7ACAEC339555B558F5E9E6F2 /* PFRESTConfigCommand.m in Sources */, + E62754EFD8CE2472A35DABD367808319 /* PFRESTFileCommand.m in Sources */, + 9290D750E87E3578B9115CFB7E07A1EC /* PFRESTObjectBatchCommand.m in Sources */, + 71361F3DBB8A7FAD8040363913431A70 /* PFRESTObjectCommand.m in Sources */, + B7D7114D6E9CBC710116992C71349DB2 /* PFRESTPushCommand.m in Sources */, + 479B013952E62955F632E5D881392901 /* PFRESTQueryCommand.m in Sources */, + A7C100D8A127E28B765E732D8FECE0CF /* PFRESTSessionCommand.m in Sources */, + D3F62AE3F95B41661AF77F4CB967EC60 /* PFRESTUserCommand.m in Sources */, + AE78806AE38207F244401AB17528DD86 /* PFReachability.m in Sources */, + 5D00DCC382EA0FE45A4A915033BBD326 /* PFRelation.m in Sources */, + E5E59305DB00887CA8ED80A221284F32 /* PFRelationState.m in Sources */, + 0417C2D8751D5D954ABBF8750A4DBA41 /* PFRole.m in Sources */, + A3F8A0B84AE7493B8726F577B6E98134 /* PFSQLiteDatabase.m in Sources */, + C329A2C3C249A90EDB60FC6A339EF9E7 /* PFSQLiteDatabaseController.m in Sources */, + D18B21176DA8F8A2169AA06636F7D2FF /* PFSQLiteDatabaseResult.m in Sources */, + 1CCC648B56B68EAD6BA5F7616615C0A3 /* PFSQLiteStatement.m in Sources */, + 02D6509EB39ED2BFBF6292D674D0C993 /* PFSession.m in Sources */, + 49DFEEF3A4265D9B972B75025BF1EAB4 /* PFSessionController.m in Sources */, + 5A7ED655237DCFEE5E211AAED71DD267 /* PFSessionUtilities.m in Sources */, + 55D4453F4098ED3D750DFADEC86A8A3A /* PFTaskQueue.m in Sources */, + BB36C49D67D82E942DB0A83D4DFEE962 /* PFThreadsafety.m in Sources */, + C5172C7357A4F357EDE4944A55EB4799 /* PFURLConstructor.m in Sources */, + 612C5CF45F7C8EC9139258A6F1B23DE6 /* PFURLSession.m in Sources */, + 4D3AE09991081CE12C807E441C9D69E2 /* PFURLSessionCommandRunner.m in Sources */, + AC568C3C40A675F03EAD39239E53BABC /* PFURLSessionDataTaskDelegate.m in Sources */, + 44711F7187AE62533F10CC3591F92646 /* PFURLSessionFileDownloadTaskDelegate.m in Sources */, + A9701262143DCEE268B962B9BFE490E5 /* PFURLSessionJSONDataTaskDelegate.m in Sources */, + 3A7EAC81C4FB2DAE1ECA0946918B859C /* PFURLSessionUploadTaskDelegate.m in Sources */, + 94CE1B567D82681A537F32DF3DC5E515 /* PFUser.m in Sources */, + B0804AA5BB8D7B57D52A32F72AB5ECBB /* PFUserAuthenticationController.m in Sources */, + 8C80FAB2A1E33AB58F5A17B43E7E4610 /* PFUserConstants.m in Sources */, + F062F607CD6999EC431C927F2213FFCB /* PFUserController.m in Sources */, + FA4C7EB7A14FB726E93A69F1A7810705 /* PFUserFileCodingLogic.m in Sources */, + DE7CCCF622BD5C3BD1AE6AE50C35F297 /* PFUserState.m in Sources */, + 773EF0868D6F02AD1A64B608F9F534B4 /* PFWeakValue.m in Sources */, + F0F01EFCBE05FF221F2083EDE6C2073F /* Parse-dummy.m in Sources */, + 7F50BBCBF48D7D538ABB2F8B5C1BD9EA /* Parse.m in Sources */, + 6BB51C3B2AEE77DE18DCF03B3176F68A /* ParseManager.m in Sources */, + 07B0FBE4D0E350E22E5F76033341F2AE /* ParseModule.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 35A914A6F70E981559E67D4E38DDE40D /* Sources */ = { + 3F093A1EE91BCE92AFC73A3B72540240 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8AD10194BE6135D5C73D85DC985209CD /* BFTask+Private.m in Sources */, - B5E5FB68DB75A0C066EE77B2D470BE2C /* PFACL.m in Sources */, - 439602F2414CDEB8A062B5FD625BAFD9 /* PFACLState.m in Sources */, - 6DE52973839454F2DE410A85A425CDCE /* PFAlertView.m in Sources */, - 621B1B7D0F592DB1DD7961731C2EC9AA /* PFAnalytics.m in Sources */, - 0438ACC4040FF8EB5AA1A51F1D3E9A4A /* PFAnalyticsController.m in Sources */, - B03FF153F1F75E2ADB673B98C7879532 /* PFAnalyticsUtilities.m in Sources */, - E0EA33785A5F59E57513492FB49468A6 /* PFAnonymousAuthenticationProvider.m in Sources */, - ACB2D6E5C8741DE88A68AE240837344F /* PFAnonymousUtils.m in Sources */, - 34C22BBABD69A8D88FD8DFBDBEC7892E /* PFApplication.m in Sources */, - 7F26EBAAB782422E0EA8A850890A77F2 /* PFAsyncTaskQueue.m in Sources */, - DB2762412635FEA4B77C5E751F091473 /* PFBase64Encoder.m in Sources */, - 7941DC7315CDE26D59CD0EB217D43023 /* PFBaseState.m in Sources */, - 4C2EB05C82A1FA468ADAE73953ADCB07 /* PFCachedQueryController.m in Sources */, - B0FEC135BF9D6D4B7A607FDD74C18A8C /* PFCategoryLoader.m in Sources */, - D1301D79ABEC0BF7196AE13B6607A522 /* PFCloud.m in Sources */, - 99B95FDB465ACC34C5C97139218A4D54 /* PFCloudCodeController.m in Sources */, - 811EAC8E6D816492BA4DD630B64B6E08 /* PFCommandCache.m in Sources */, - 3604341EAD3633433B487305A3D71A76 /* PFCommandResult.m in Sources */, - B47819184E10C7AAB004E897ED18EF54 /* PFCommandRunning.m in Sources */, - 1D25F16E42245E7F9ED399E79A782AF8 /* PFCommandRunningConstants.m in Sources */, - DABCBF2D85FD3680A4CA2867353DB56B /* PFCommandURLRequestConstructor.m in Sources */, - 1167C7893F088AF78C53D93AEEDEA696 /* PFConfig.m in Sources */, - 93A9D4AC38D1D5391929155E05F83D2E /* PFConfigController.m in Sources */, - 64C6C42AFFA02CC4E53836226E5C4219 /* PFConstants.m in Sources */, - 611039D2BE3210BC332D787307D5DD21 /* PFCoreManager.m in Sources */, - 10B9DF916653B140AD9B5F3F0A0573CF /* PFCurrentConfigController.m in Sources */, - 9713B6D2036DE8FE79A48B9BED3D6B25 /* PFCurrentInstallationController.m in Sources */, - DDC4F19F342E938AC97A32F890220035 /* PFCurrentUserController.m in Sources */, - 54F88F11E5AE02A0FF195F47B85C9434 /* PFDateFormatter.m in Sources */, - 4F0980C558B7B9DA53CE0BD0B6B37226 /* PFDecoder.m in Sources */, - 2771126CEE0ED676666F21E9A617ECE3 /* PFDefaultACLController.m in Sources */, - 77EC8FF856687110A3538AB69DC07FF5 /* PFDevice.m in Sources */, - 91262C7FCFFF6CB8C7510EC21277BDC4 /* PFEncoder.m in Sources */, - 2442532FBCA5707E5217A68EA0594E96 /* PFErrorUtilities.m in Sources */, - 887C6E013DF079EB8EF5B6F72BCDD256 /* PFEventuallyPin.m in Sources */, - 11A6050774C74E9CE6C2F5F4583307A3 /* PFEventuallyQueue.m in Sources */, - 347B3C92362CDFCAAA3F0D16BB79DD75 /* PFFieldOperation.m in Sources */, - 9CB8FB8E4DFBCA73F23A0767CC00C9F9 /* PFFieldOperationDecoder.m in Sources */, - AA6DB4FD502FE0EBE40728B7F13E749D /* PFFile.m in Sources */, - FB49939C983F644539F4E3BD68498309 /* PFFileController.m in Sources */, - 805B5C7F8601EFF4AC20A141A8920907 /* PFFileDataStream.m in Sources */, - 32A1FA10137D497E941428136267CA6E /* PFFileManager.m in Sources */, - 7EB608B728A52AD779DFCDAF20CC3A26 /* PFFileStagingController.m in Sources */, - 4E0D12CEB233090E07A3EC12601898E9 /* PFFileState.m in Sources */, - 78C867C3E7EC565C35E4BC95FC265B34 /* PFGeoPoint.m in Sources */, - 686756C4CEC0B00FB743AF14B40E8682 /* PFHTTPURLRequestConstructor.m in Sources */, - F51372F07EC1E8663574DC8FF2B69C88 /* PFHash.m in Sources */, - 30152EEA6C1FB5F3A46B5E6D9E1866FC /* PFInstallation.m in Sources */, - 04DE3864BDD52DB342049EFB3EECB75E /* PFInstallationConstants.m in Sources */, - 1E2B7478F9A071679BAD0B2B90203C58 /* PFInstallationController.m in Sources */, - 49B57E58230D81AEC7332255C98C3BF1 /* PFInstallationIdentifierStore.m in Sources */, - 1DD44AE9322BF5C38003687F763A49B0 /* PFInternalUtils.m in Sources */, - 66BB85211EFD612B854906B7996059FA /* PFJSONSerialization.m in Sources */, - 436FF1E87CE8508ADEA80DA9F5A7FDD7 /* PFKeyValueCache.m in Sources */, - 9A4443483F57345BB06E660DB76AB29A /* PFKeychainStore.m in Sources */, - FC46D5340A6EEE1D53E43468AAB8E8AE /* PFLocationManager.m in Sources */, - 69809238B0561FABDE611AF677BCA475 /* PFLogger.m in Sources */, - 8F318B41E49C31FF2E6C13F6F120FD15 /* PFMultiProcessFileLock.m in Sources */, - 209D7DF631C4A5C22409B0709A1CF706 /* PFMultiProcessFileLockController.m in Sources */, - EC6ED18CFB8C6AD69DACFDCA9DE8A178 /* PFMulticastDelegate.m in Sources */, - 219C3827432B312C5FB04AEAA9C26E16 /* PFMutableACLState.m in Sources */, - 0899727B95CE0A9B8FB7646F3F1E84D8 /* PFMutableFileState.m in Sources */, - F72D54F2ED68E52F818FD3E109C865D0 /* PFMutableObjectState.m in Sources */, - 535C072BDDE463B138751F6BA58018A4 /* PFMutablePushState.m in Sources */, - 66B00B5F004324612C1724CE19F19752 /* PFMutableQueryState.m in Sources */, - 49D87368E080534F2829BDFFFD26D68D /* PFMutableRelationState.m in Sources */, - 74671B80F66F8C7A04D96DADF1722860 /* PFMutableUserState.m in Sources */, - 104F33CA0D4A2D153078B7E86F19F26A /* PFNetworkActivityIndicatorManager.m in Sources */, - A8BC3147665EFE52F3B865F75BA23479 /* PFObject.m in Sources */, - 3EA794DCFF7259995465393C2F8F2F3F /* PFObjectBatchController.m in Sources */, - A3BDEBD652C5B97ADDAD62F68E695BAB /* PFObjectConstants.m in Sources */, - 34D4E13D2EF2F56D363822822A206D07 /* PFObjectController.m in Sources */, - B867985361289320989E515B5ADFB9D3 /* PFObjectEstimatedData.m in Sources */, - F59241FB57F2005FBFECC2326048D075 /* PFObjectFileCoder.m in Sources */, - B27D97B8AB65C9259475002C793F08CD /* PFObjectFileCodingLogic.m in Sources */, - 3EE409808915A90F0D75948C1371C47B /* PFObjectFilePersistenceController.m in Sources */, - 222738C7317F7C959B8136CAC0C41697 /* PFObjectLocalIdStore.m in Sources */, - 9E1D4FDD251DA92C2D1388ED45B720A7 /* PFObjectState.m in Sources */, - F6139C136AF1688A0C4D97D886180CCE /* PFObjectSubclassInfo.m in Sources */, - 3609521E7B4772D67132F8DD9DAD0EEB /* PFObjectSubclassingController.m in Sources */, - 86070D62F7C25EA41C85CACBB8DF1BF9 /* PFObjectUtilities.m in Sources */, - 9BE301315D30B57920E32F058B66D98D /* PFOfflineObjectController.m in Sources */, - 7953CB89C3F59D4885F3C6DCB7A28A01 /* PFOfflineQueryController.m in Sources */, - 0DA0DFD7ADBEE6B5BD582CA7D93DA573 /* PFOfflineQueryLogic.m in Sources */, - DD77D691697B0B6BA6F852B46C6E8151 /* PFOfflineStore.m in Sources */, - 74D2C3271439D8096ECF2A76DF7BA064 /* PFOperationSet.m in Sources */, - 43D53A63A6745A1A21A201B36BC07974 /* PFPaymentTransactionObserver.m in Sources */, - 49F9B4E6A12B39F724C8BEA9F47429F0 /* PFPin.m in Sources */, - 8B2A9AD38EC87DE7B7D039BDF5F81B6A /* PFPinningEventuallyQueue.m in Sources */, - 9BEFB20B75AA77C91D5D82E13069504E /* PFPinningObjectStore.m in Sources */, - A6431E60D053D9BA7610CC73F2CDB276 /* PFProduct.m in Sources */, - 3793FECEA3A6BE4D02C5F7852EE3F7B4 /* PFProductsRequestHandler.m in Sources */, - 68E70C026EDCB8239875BEA879AAC286 /* PFPropertyInfo.m in Sources */, - F7C4193FCE1335CF78388CB131A8D6AA /* PFPropertyInfo_Runtime.m in Sources */, - A4796D08180059B617D5CD6D74EC4820 /* PFPurchase.m in Sources */, - 1FA415C3205971578745EE767632508E /* PFPurchaseController.m in Sources */, - 12A3F71BC200B34A3DDCD2F4EE241EEF /* PFPush.m in Sources */, - 062E34675281829E6C309C6099D0CD9D /* PFPushChannelsController.m in Sources */, - 474B4FE2195F0D3786209EF09EDA13BD /* PFPushController.m in Sources */, - 39FE6E18FF223B1EDE632A6B84889BCC /* PFPushManager.m in Sources */, - FD854AA80D142379CA38FEFC40926EF2 /* PFPushState.m in Sources */, - BF2FDD475712B1686040E596399FA9F9 /* PFPushUtilities.m in Sources */, - A2312679DCFADD5575064A07984B4BF5 /* PFQuery.m in Sources */, - 4333AE53D9FC43FFDF43A95B64249697 /* PFQueryController.m in Sources */, - 351E6DA5E99D075F0A6EBFBB4B8C246D /* PFQueryState.m in Sources */, - 7B9EBA366015D5B457AD1B325E92046F /* PFQueryUtilities.m in Sources */, - 773271EF07F93255CD92F40F5D4CDAA7 /* PFRESTAnalyticsCommand.m in Sources */, - 82484FB028F71C2A18DA9A687708C6EC /* PFRESTCloudCommand.m in Sources */, - 2640A12FB3BBEFFE06930194C91A3D0C /* PFRESTCommand.m in Sources */, - F3797EC3467D8CBF8183D6886A03E954 /* PFRESTConfigCommand.m in Sources */, - DBE3962D47DB31811D05E5FC7F16CF72 /* PFRESTFileCommand.m in Sources */, - 2F0466053F46CDA3975A8F0B2C973555 /* PFRESTObjectBatchCommand.m in Sources */, - 875B19B2C5F755ED6266F7E8BD9F0116 /* PFRESTObjectCommand.m in Sources */, - F3D640522B893DA5A057FDDE31D7CBBC /* PFRESTPushCommand.m in Sources */, - 5365C637C63F02E1973E66076518F5CB /* PFRESTQueryCommand.m in Sources */, - 3B59099B7FF527F1699FD79F0CD6F217 /* PFRESTSessionCommand.m in Sources */, - 3A3008F77AD2EA8D8F372EC10733B00E /* PFRESTUserCommand.m in Sources */, - 58D1F31CBBC230379743A7DCD682B0DF /* PFReachability.m in Sources */, - A6F8D0423D730B09FF2B44142A470FFB /* PFRelation.m in Sources */, - C46D5F22B6391A33D7AC02797B5EA6B8 /* PFRelationState.m in Sources */, - 1311EB6B3ABE7AEBCAE47A46ED073054 /* PFRole.m in Sources */, - 81124E46F1A8D5CDD47880430ABCFE5B /* PFSQLiteDatabase.m in Sources */, - 16B1EE9A2C419506D63026622C13EFF1 /* PFSQLiteDatabaseController.m in Sources */, - BB0C549E6C0EFCCA6A834D5C796E604F /* PFSQLiteDatabaseResult.m in Sources */, - 0248D52572AD490C9F0E6E0E16C899F4 /* PFSQLiteStatement.m in Sources */, - 338AC89A56557B049850D4C9BBD3FC7F /* PFSession.m in Sources */, - 46BB12DCC0CAA3F0D2EFEE605A586F04 /* PFSessionController.m in Sources */, - 9782069796E4CFFFB4A28BF5DFA57F85 /* PFSessionUtilities.m in Sources */, - 7FC91DE6C51609D920E6AE9EF00BC4D4 /* PFTaskQueue.m in Sources */, - F5EF0EC23E27DCEA92A486E79EFD7997 /* PFThreadsafety.m in Sources */, - 75DDD7E7ABEC5725E7B5CDE1AE6D770B /* PFURLConstructor.m in Sources */, - BB45519DC0D5AD108FD74D6FCA9E30C3 /* PFURLSession.m in Sources */, - 7F50192A3B43FB6E622F35F32B18BC9C /* PFURLSessionCommandRunner.m in Sources */, - 849D48E2B21EB1B116FFF0C4F686DAE7 /* PFURLSessionDataTaskDelegate.m in Sources */, - 86D39A49BE6E82211B15687264F9503D /* PFURLSessionFileDownloadTaskDelegate.m in Sources */, - DE7DCACAE6E02AD31161B263E7DE3B53 /* PFURLSessionJSONDataTaskDelegate.m in Sources */, - 198D036092702E8AF646271064ABB639 /* PFURLSessionUploadTaskDelegate.m in Sources */, - A7CA431377D4C785A52B31FF0CF83996 /* PFUser.m in Sources */, - 1DF304873442F38920E1691BCD46E4C9 /* PFUserAuthenticationController.m in Sources */, - 5F0ACB3F15BC23105DBC60FA6F67CCF3 /* PFUserConstants.m in Sources */, - A2C3E711AF53081DECBBB754EF81FBFD /* PFUserController.m in Sources */, - E4CB7EBEF04D906BB2400E1CB9EE6A7E /* PFUserFileCodingLogic.m in Sources */, - E6FC5CAFFFFFED64538C2A6AF8CC7A32 /* PFUserState.m in Sources */, - D64745B64981C4B58B41BFB0EB34FB0B /* PFWeakValue.m in Sources */, - F3AAE34F51DB2120DD7F9AF2769DE2F8 /* Parse-dummy.m in Sources */, - AC209E9605FAF1609539975FC17E2443 /* Parse.m in Sources */, - C55588B6E21DC2DEB96428E8085987B8 /* ParseManager.m in Sources */, - 97742173F7783B44F0986230885A4260 /* ParseModule.m in Sources */, + 4443DA164C04807EF22B9E2FE3A40CEE /* TKEvent.m in Sources */, + FD2144C4BC84FA87FB99AF5DF4A659D4 /* TKState.m in Sources */, + 0722E90FFB0E0659D82D8E560CA2D2F1 /* TKStateMachine.m in Sources */, + EABAE5228ACD4A5BE6F30A53F80B9C1E /* TKTransition.m in Sources */, + B8291EBC0CA538454602E54BDA92A1B7 /* TransitionKit-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3B27D6A53A40DB67B708280465D0F21C /* Sources */ = { + 4B1F1B7307145BD524E6EF10229A36B7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - AED7DD46159F1525CBAED2B765B6FBB2 /* SOCKit-dummy.m in Sources */, - EB73AF4C9D61D61F7B1BB0F6C573118D /* SOCKit.m in Sources */, + 3B3B3B7EADC2C13FBE5A51A8BD80AAD1 /* FBSDKAccessToken.m in Sources */, + 8D805E15087E4663C5274FC437B3D934 /* FBSDKAccessTokenCache.m in Sources */, + 55F91C3F499DE45EA5B5AB3E27DEE170 /* FBSDKAccessTokenCacheV3.m in Sources */, + 9B9FB5405327F50538A416EA24675972 /* FBSDKAccessTokenCacheV3_17.m in Sources */, + 28CFDEF753D0D6972BAE795E1CF43C2C /* FBSDKAccessTokenCacheV3_21.m in Sources */, + 815C939A552E956EFA94CD39E362CB79 /* FBSDKAccessTokenCacheV4.m in Sources */, + ECB49CF77D90D2E003EEDB483338FE72 /* FBSDKAppEvents.m in Sources */, + 18274740107DE9B259B065F47C67FEA7 /* FBSDKAppEventsDeviceInfo.m in Sources */, + 3D366280CD3300E954FB9956F50437AD /* FBSDKAppEventsState.m in Sources */, + BB222C1527603C41557CA526BDCADD00 /* FBSDKAppEventsStateManager.m in Sources */, + 8B4A50CAB930AB9204EA6685CD51B1FB /* FBSDKAppEventsUtility.m in Sources */, + 4F9695BA0230FA6050195FF6147FDAF2 /* FBSDKAppLinkResolver.m in Sources */, + B9C0CE43FCAFA07D17732462A67DF31E /* FBSDKAppLinkUtility.m in Sources */, + 3EA664BC0A9CB70A6B95DF8A0AEDA68A /* FBSDKApplicationDelegate.m in Sources */, + B19A97DC943FB4E19F93DDBA191CB207 /* FBSDKAudioResourceLoader.m in Sources */, + 2AB6F30B33BF99DB942666A62EA67837 /* FBSDKBase64.m in Sources */, + DD92EF07C28DE99B4E35DCB69981FFD0 /* FBSDKBoltsMeasurementEventListener.m in Sources */, + 8DA8A753958D9E0D7C75532C0F108B6B /* FBSDKBridgeAPICrypto.m in Sources */, + 6D4887AE8E844C608EED1EC8656610E5 /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */, + 0FD5249BE2888A4A4402696105ED8527 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */, + B0988D5E960A95FFD910D24D11B59AB1 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */, + 9F564465F5C2681769FF253EC488E005 /* FBSDKBridgeAPIRequest.m in Sources */, + BB0C27D3702176E45994721057D7E9D2 /* FBSDKBridgeAPIResponse.m in Sources */, + 766272FA49F9F79139FBC5FDBC39007E /* FBSDKButton.m in Sources */, + D3D9D375FCD71243C619C6EF5026A26F /* FBSDKCloseIcon.m in Sources */, + CDF1776F197A349F242D0418BA069855 /* FBSDKColor.m in Sources */, + A0CB7D3DED639DB995CBBC511D37BF63 /* FBSDKConstants.m in Sources */, + A8309002BE3C8CB4B12C239A5946538C /* FBSDKContainerViewController.m in Sources */, + 23F002C90710E0EC3D183E8683FE8765 /* FBSDKCoreKit-dummy.m in Sources */, + FAA258E646C66811927302E7B2CC9809 /* FBSDKCrypto.m in Sources */, + F17179B7BA2DA6DADD5AA44942DDA6E9 /* FBSDKDialogConfiguration.m in Sources */, + EC1BBA6BC932AE411B6EC1C444056979 /* FBSDKDynamicFrameworkLoader.m in Sources */, + F788D05B1BCA23AD7E90E458BEA3FF05 /* FBSDKError.m in Sources */, + DF9C8DFC91AE8F06A56D1F42B67A6F4E /* FBSDKErrorConfiguration.m in Sources */, + 5726C95C5F7CC6A9F5A4315F05A7705C /* FBSDKErrorRecoveryAttempter.m in Sources */, + AF0AB1770B1B73163384947DA948E4C5 /* FBSDKErrorRecoveryConfiguration.m in Sources */, + 3118E1B0367B386FAADF624C65F9668D /* FBSDKGraphErrorRecoveryProcessor.m in Sources */, + B34BA7C37D5734BADFB67559C697D4C6 /* FBSDKGraphRequest.m in Sources */, + 6A537578E971062D1471E30CAB354803 /* FBSDKGraphRequestBody.m in Sources */, + 7622E77898A5E6339E7108532241FBF4 /* FBSDKGraphRequestConnection.m in Sources */, + 0FABEDED805FF3C8419382ECF57A04E8 /* FBSDKGraphRequestDataAttachment.m in Sources */, + D998190E2220FC38EF0166E22F8A3ADF /* FBSDKGraphRequestMetadata.m in Sources */, + FCBFA0453DBB0F8F4AF1357F4146786E /* FBSDKGraphRequestPiggybackManager.m in Sources */, + 42378B4C721065E6B0D901898104AE69 /* FBSDKIcon.m in Sources */, + ADB578FAF8C812D1521EF9D710A77A84 /* FBSDKInternalUtility.m in Sources */, + 9417E9466CCAACBCB2ABE8E77D01AAB9 /* FBSDKKeychainStore.m in Sources */, + D68C66187F69D3C94DECAD1721706031 /* FBSDKKeychainStoreViaBundleID.m in Sources */, + 5E456DF19F8ECEC61FF4D1C3E7AC0278 /* FBSDKLogger.m in Sources */, + 724E7035BD3905FFA72B386599CE0F3B /* FBSDKLogo.m in Sources */, + AA27404CA04AC54AA9E61738546F037A /* FBSDKMaleSilhouetteIcon.m in Sources */, + 1CC3FC978D22B673543B66F14E3586CE /* FBSDKMath.m in Sources */, + 205B45504EF447096404D53C3E5F07FE /* FBSDKMonotonicTime.m in Sources */, + 80355E0AA0F65BF9BC33663D2D5AAAAE /* FBSDKPaymentObserver.m in Sources */, + 2E2E2877A7093FCC57D39DEEE91F34F1 /* FBSDKProfile.m in Sources */, + 9158101B59990CB0ECE0851B57A3A86B /* FBSDKProfilePictureView.m in Sources */, + 811813531632404C8020D453107171DA /* FBSDKServerConfiguration.m in Sources */, + BFFAFE33C8F059284278D6CE3904FA10 /* FBSDKServerConfigurationManager.m in Sources */, + AF6EF01D6DE6C310DB3AC87B40F61750 /* FBSDKSettings.m in Sources */, + 3098ABDB8CEC8C01686E276C1935E3DE /* FBSDKSystemAccountStoreAdapter.m in Sources */, + FE773D7E55768620FC122E7ACFBA4034 /* FBSDKTestUsersManager.m in Sources */, + 362CDA47E136CC1DFE150611DDCFFC99 /* FBSDKTimeSpentData.m in Sources */, + 243F5CF4634218E9A2B8CB8C58CA5B5C /* FBSDKTriStateBOOL.m in Sources */, + 282AD9B008CDB7CA432F3F2551B2F38A /* FBSDKTypeUtility.m in Sources */, + A4DCD9C49CAF596816118268E0B6EACE /* FBSDKURLConnection.m in Sources */, + DBCA64F9596F8284793034014DE1A649 /* FBSDKUtility.m in Sources */, + DF333C3A04F0BFF1C78FAFDF99BC0C59 /* FBSDKViewImpressionTracker.m in Sources */, + 80B9F847DAA4DC85162B5CAF50DD8AAC /* FBSDKWebDialog.m in Sources */, + 008386D64340118381B5E74976611CFE /* FBSDKWebDialogView.m in Sources */, + F54A30D366C9CEBE9424AC2EF31E195C /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3F093A1EE91BCE92AFC73A3B72540240 /* Sources */ = { + 6D2B8A8A757FB427940FBB3F122854B2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4443DA164C04807EF22B9E2FE3A40CEE /* TKEvent.m in Sources */, - FD2144C4BC84FA87FB99AF5DF4A659D4 /* TKState.m in Sources */, - 0722E90FFB0E0659D82D8E560CA2D2F1 /* TKStateMachine.m in Sources */, - EABAE5228ACD4A5BE6F30A53F80B9C1E /* TKTransition.m in Sources */, - B8291EBC0CA538454602E54BDA92A1B7 /* TransitionKit-dummy.m in Sources */, + 8F9A675846DC2C23572CCD8E4FFBDB93 /* Pods-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5CD892F05B21BD98CE742B66FDBDA819 /* Sources */ = { + 746445DB8AFCFABF5687FB7B2A2301DE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 215FD68C4117116C45B35634DEC57934 /* AFHTTPClient.m in Sources */, - DC21562627003B525B645FC276D91E79 /* AFHTTPRequestOperation.m in Sources */, - BE86AE3D6076FE73FA922D2531C8B894 /* AFImageRequestOperation.m in Sources */, - 5D4398B1A4E91318D99351BFA35100D2 /* AFJSONRequestOperation.m in Sources */, - FEF08B955C1019BC8165006939B7078A /* AFNetworkActivityIndicatorManager.m in Sources */, - 1A875C4481102F49D5ECE0EA0B06145E /* AFNetworking-dummy.m in Sources */, - 6A5CA197C96A6CC6EE167A495A05B09F /* AFPropertyListRequestOperation.m in Sources */, - 923EDFEA8185C3A4D6F5F36FC9B5DACB /* AFURLConnectionOperation.m in Sources */, - 7FC7C69A340784091CA09F04F2C4D983 /* AFXMLRequestOperation.m in Sources */, - D4F8178AF98C8C6E22AB9A281869B5DB /* UIImageView+AFNetworking.m in Sources */, + B6F9832AD636177E140EC01E3DC164B3 /* RKValueTransformers-dummy.m in Sources */, + CAD3986F778DBCF207A2C0FFCA781B8F /* RKValueTransformers.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6769FA2C88490E7D5C625662DB14220F /* Sources */ = { + D4C81EA36A6BFE3288457472CA4368FB /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 89F559D7BE8FC96E8C092B31F5E63841 /* ISO8601DateFormatterValueTransformer-dummy.m in Sources */, - F3F2C56A77D4DB0D486E7A35E5C939ED /* ISO8601DateFormatterValueTransformer.m in Sources */, - 11EA198AD6FEA828E599CF4EFBE3C08F /* RKISO8601DateFormatter.m in Sources */, + 0B42591A57B35D10FAE5F939603C105F /* FBSDKAppGroupAddDialog.m in Sources */, + 56DDC808EA95231C01E95F82452FED13 /* FBSDKAppGroupContent.m in Sources */, + 16C27A1CBCD5A7969B2A158858A2CC9B /* FBSDKAppGroupJoinDialog.m in Sources */, + 8FCF54FD9CEA3E07B0C913783C0B95A0 /* FBSDKAppInviteContent.m in Sources */, + EF8361AF122087D0CA9C80EC6FFF6A5D /* FBSDKAppInviteDialog.m in Sources */, + 769C8A2A5FD69C9E808BAFEBD91A620D /* FBSDKCheckmarkIcon.m in Sources */, + 21C047E0236B40B41B98B4AB051559F0 /* FBSDKGameRequestContent.m in Sources */, + 3EFA30742A712A0CDDFB5993F762C0EF /* FBSDKGameRequestDialog.m in Sources */, + 5FAA4777EA70E15098063A2B1B314915 /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */, + FDD7E5D9ED6B3C14DA9AAC2E76E41BEB /* FBSDKLikeActionController.m in Sources */, + 5FBCE36A6D25A4B44E4C0C9C6EB06093 /* FBSDKLikeActionControllerCache.m in Sources */, + 2355CEA58CC12AC348752E940F41C856 /* FBSDKLikeBoxBorderView.m in Sources */, + 573AB04F28243AFEA4E6460438D3A935 /* FBSDKLikeBoxView.m in Sources */, + 92E9F455D701E6FAABAB2C36DB4B4BDF /* FBSDKLikeButton.m in Sources */, + 554247D0CBC21F3D62833C441D61F642 /* FBSDKLikeButtonPopWAV.m in Sources */, + 00B7078D95685A047C5D6FFEF18D8C62 /* FBSDKLikeControl.m in Sources */, + 629C5E37F422AEAECF2125E1B8954DFA /* FBSDKLikeDialog.m in Sources */, + 5491227F12C974B21D03C53DD7B996C6 /* FBSDKLikeObjectType.m in Sources */, + F5382AA95E6ADCFF17F36184DCA008A6 /* FBSDKMessageDialog.m in Sources */, + 402D95BB3E4B49C7E1DF15661C419498 /* FBSDKMessengerIcon.m in Sources */, + C1DCBB421C9D9B70A11D5B59DF9021A7 /* FBSDKSendButton.m in Sources */, + 957B6B2AFA1B7311B98BC4ECA2D3A0E6 /* FBSDKShareAPI.m in Sources */, + 3722A927AABB3C7CC8B5562C9B42A4B1 /* FBSDKShareButton.m in Sources */, + 408F1B35F34DA7A3B64B32935531D02D /* FBSDKShareConstants.m in Sources */, + 30B5221471557DA4D9A2189E52471931 /* FBSDKShareDialog.m in Sources */, + DE391D622204F7FBD288734ADBF32665 /* FBSDKShareDialogMode.m in Sources */, + 8CF36F02672717CD65CA145BF33C8E99 /* FBSDKShareError.m in Sources */, + F3293A4DBA100B38D9669988A0E1524A /* FBSDKShareKit-dummy.m in Sources */, + E08AC3BF6B05C1466250A83E5863BDC3 /* FBSDKShareLinkContent.m in Sources */, + 7FDD9544319E5EE9F6093720244BC5B1 /* FBSDKShareOpenGraphAction.m in Sources */, + A34464F1C2086A0692D5226C2EE6248A /* FBSDKShareOpenGraphContent.m in Sources */, + 6DF393B100C28657E21257B71F6D7DB1 /* FBSDKShareOpenGraphObject.m in Sources */, + E5A13167291337523078AB9C0CB3125B /* FBSDKShareOpenGraphValueContainer.m in Sources */, + 796F6AD0A1615AD0072F7DF2F5E1E5D8 /* FBSDKSharePhoto.m in Sources */, + CF3C3F13840C14F05C1855797B0B2E5E /* FBSDKSharePhotoContent.m in Sources */, + F0E688E7768227054BDD40A9D2593406 /* FBSDKShareUtility.m in Sources */, + 0FE13D468968D686BA4AEDE0ED6B2130 /* FBSDKShareVideo.m in Sources */, + A95E8A958E2B5FFE3CADAC891086BAD1 /* FBSDKShareVideoContent.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6D2B8A8A757FB427940FBB3F122854B2 /* Sources */ = { + E4378E9400771DD3F49170B9CB4F27E4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8F9A675846DC2C23572CCD8E4FFBDB93 /* Pods-dummy.m in Sources */, + 10C2B5930F1B78F40CD24647D0816C15 /* FBSDKLoginButton.m in Sources */, + 201C1B5EA1CD292E1B6B811C9D1A765B /* FBSDKLoginCompletion.m in Sources */, + 864964DDE4A49AA0C8BA369228DB2F0D /* FBSDKLoginConstants.m in Sources */, + B7AD629446C47B305E6630373410BFC2 /* FBSDKLoginError.m in Sources */, + 5B72DFD5FC0ECD42B595D7DF8797EFD6 /* FBSDKLoginKit-dummy.m in Sources */, + 9006A9F90EE85EAC328A7CA6B21A74E0 /* FBSDKLoginManager.m in Sources */, + F7B6E9F743BE561A7C5252D196E1408A /* FBSDKLoginManagerLogger.m in Sources */, + 2E3451E0F9E899B3485E85A091EBCB90 /* FBSDKLoginManagerLoginResult.m in Sources */, + 32CADAEC3FC0CA1A4AB2759B8DB02C94 /* FBSDKLoginTooltipView.m in Sources */, + 2362D4F041145FA0576E5E6908705963 /* FBSDKLoginUtility.m in Sources */, + C2109470083A011CBF0F9E49068D88B1 /* FBSDKTooltipView.m in Sources */, + 889A0ADF8C008FD622BB2611917818AB /* _FBSDKLoginRecoveryAttempter.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A26EE2CA4252E388C674FDAB319F3A92 /* Sources */ = { + E6D802C085D3329BFB6C5D9329920583 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 18D96E233E2B72D021830D100071A88F /* FBSDKAccessToken.m in Sources */, - 51CA3523EC5FB24F89754DB0488FE893 /* FBSDKAccessTokenCache.m in Sources */, - 9A1AE31B803BD2B8CF59FB3983F9A51C /* FBSDKAccessTokenCacheV3.m in Sources */, - FDB04831594240B98C5A985E5E559096 /* FBSDKAccessTokenCacheV3_17.m in Sources */, - 65F55F45327059D9F88AF2CCFF2BC61F /* FBSDKAccessTokenCacheV3_21.m in Sources */, - 6F7AEB8231ADCAD9FC73D5392A7529A2 /* FBSDKAccessTokenCacheV4.m in Sources */, - 0CF6CBBCBFD055C8F98940C7D12E3BAE /* FBSDKAppEvents.m in Sources */, - 2F83FE38563565221965FB1F72C8D8E4 /* FBSDKAppEventsDeviceInfo.m in Sources */, - 36C509AB4E714B60F207DCDFD4F6E76B /* FBSDKAppEventsState.m in Sources */, - 6869D7F49C98AACB83CD2D8941B5024F /* FBSDKAppEventsStateManager.m in Sources */, - A85D40790F9D7EBE017FD8B069C2C6E0 /* FBSDKAppEventsUtility.m in Sources */, - CF2D29BB657128E16D30D1A8626D5A88 /* FBSDKAppLinkResolver.m in Sources */, - AF7F585D873E31A4CA37FF5C3E6F6818 /* FBSDKAppLinkUtility.m in Sources */, - 3784B93C592189DD7641DD0C055EE510 /* FBSDKApplicationDelegate.m in Sources */, - F294FEB022DDEC737B565FA9ADBB17B6 /* FBSDKAudioResourceLoader.m in Sources */, - B519F723811EEC0DAD613CEBFE109F92 /* FBSDKBase64.m in Sources */, - E9E5B34C82D3E41A4ADCD1ABD9769103 /* FBSDKBoltsMeasurementEventListener.m in Sources */, - FD9E790BDBDA3FF44CE35A7B8A5C8E45 /* FBSDKBridgeAPICrypto.m in Sources */, - F84EA9DE6AC9F7156F8830E3128E0368 /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */, - C2EC239FDD7C6CD0C21A9DCC052F67C8 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */, - 47FD83E4A59AD7BEBC4C334A10AE3124 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */, - 8E517F1FC5970B63D155F6B6F00AA93F /* FBSDKBridgeAPIRequest.m in Sources */, - 1CEF5F47B78C3B1F4FC3DC2A3043281C /* FBSDKBridgeAPIResponse.m in Sources */, - 5C9809AF07DD032F9FD021A863E7C136 /* FBSDKButton.m in Sources */, - 5E84BECEB0443C8B9B3FD0B994EDAEA5 /* FBSDKCloseIcon.m in Sources */, - FAA66334C3CBCD5DEE89DF6639CA4939 /* FBSDKColor.m in Sources */, - 3096466F4630E924DB0B97E337933B26 /* FBSDKConstants.m in Sources */, - 4D1C9613370AE44FEF79C3C6AA5BBD20 /* FBSDKContainerViewController.m in Sources */, - B378D082DD674BA3C9DF87ED99FDBE4F /* FBSDKCoreKit-dummy.m in Sources */, - E3F370210A4F6B15CCB06AD6E0E48597 /* FBSDKCrypto.m in Sources */, - 7C2952F516B00045113908BBF7DC0E99 /* FBSDKDialogConfiguration.m in Sources */, - 88FA83A761B810A90340002D57EFD576 /* FBSDKDynamicFrameworkLoader.m in Sources */, - CC2BB71E5443EDCBB2E5F4EAC24ED987 /* FBSDKError.m in Sources */, - 79D9CB35E338D0CB12C68AEBCFCC933D /* FBSDKErrorConfiguration.m in Sources */, - 9691F0B4875AF918D9307643CCB6F345 /* FBSDKErrorRecoveryAttempter.m in Sources */, - F8A1E96B099B167A0FDC8B928B6B9F11 /* FBSDKErrorRecoveryConfiguration.m in Sources */, - CA4B00CC15344D45D5A3F1589AE8DE04 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */, - C8DF6DD47EDBF3FDBF944F075FBC6C05 /* FBSDKGraphRequest.m in Sources */, - D2E8BB454506B4D5C4FEA27852E0DE9D /* FBSDKGraphRequestBody.m in Sources */, - D4C629703F45ACEF8834A74261A24F16 /* FBSDKGraphRequestConnection.m in Sources */, - 4575524940A028F968811F18C428000F /* FBSDKGraphRequestDataAttachment.m in Sources */, - CCF4B724BE469464F638A4DF640C7238 /* FBSDKGraphRequestMetadata.m in Sources */, - 5F81AF91BD80BAB47165BEA17CA38ACF /* FBSDKGraphRequestPiggybackManager.m in Sources */, - D47FB87AFAA9EAC94A8EDA555CE8B7D3 /* FBSDKIcon.m in Sources */, - 6AA162E7D86F127BA1A7945A64AA0981 /* FBSDKInternalUtility.m in Sources */, - 092EAB1784E30E1179D39200F489EE56 /* FBSDKKeychainStore.m in Sources */, - 5613B583F78B27E46AA80D7B08593345 /* FBSDKKeychainStoreViaBundleID.m in Sources */, - A52D62A00F5C3CC6C77BFCC174883EC5 /* FBSDKLogger.m in Sources */, - 44D117C3BBC98D344847AC726EFAC590 /* FBSDKLogo.m in Sources */, - A7DF5029703C62DBC546E07E0FE68779 /* FBSDKMaleSilhouetteIcon.m in Sources */, - AA9B525437E1E7B7D2BF539AACA6C8C2 /* FBSDKMath.m in Sources */, - 38E002CAE70208D67028CA130CBC8B13 /* FBSDKMonotonicTime.m in Sources */, - 352F099A847CDF8860CCC2DF4C2DBA99 /* FBSDKPaymentObserver.m in Sources */, - 6C4D644320BDE1BC6A397D502701163F /* FBSDKProfile.m in Sources */, - 4F78698666F5DD22A6B8C251C8B4FFE6 /* FBSDKProfilePictureView.m in Sources */, - 06837C373EBCF2BE9F24B84D2495661D /* FBSDKServerConfiguration.m in Sources */, - 556EAD29F7AF6293692B8916CFDCF6AB /* FBSDKServerConfigurationManager.m in Sources */, - 9F1F36C174E8643569FAAE58E3B87DC7 /* FBSDKSettings.m in Sources */, - 8BCDE8B6759FB747A67EC91CA12C6B80 /* FBSDKSystemAccountStoreAdapter.m in Sources */, - 46460A40566EB1CB1E4FB515B21AD4A2 /* FBSDKTestUsersManager.m in Sources */, - 55FFD3A79CC2E66E1F29049972C1CF0A /* FBSDKTimeSpentData.m in Sources */, - 25C107A17D548A434206897795BDE83F /* FBSDKTriStateBOOL.m in Sources */, - 308248C696569BF007E57C2520B8194C /* FBSDKTypeUtility.m in Sources */, - 251789CABCBADBA6608A463D8B43327B /* FBSDKURLConnection.m in Sources */, - 684FB04B26908341179D771F44CE924A /* FBSDKUtility.m in Sources */, - D79F33AADF3DDB22BE6620959F4DE590 /* FBSDKViewImpressionTracker.m in Sources */, - BF858895504CDB8D3AB4361E782EA8C8 /* FBSDKWebDialog.m in Sources */, - 282284A3A26A1D0B38FB88FAD808EE87 /* FBSDKWebDialogView.m in Sources */, - 7ED3B5AB200513A4177AD21D83E939C7 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */, + A6F08ED05A5539A09A9E61B403A990AF /* ISO8601DateFormatterValueTransformer-dummy.m in Sources */, + 80BBA5295F8F2EDFB289DF9E1E0B5E12 /* ISO8601DateFormatterValueTransformer.m in Sources */, + 5F4B09393C8220183CE1E6DAC0BE9C74 /* RKISO8601DateFormatter.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C3FCA0C9FC07157CA1C60B02DB2BF7B3 /* Sources */ = { + F6444182B3E4AA19EE41E56E02FF8AA6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - BA652EEC470ACC0671819D24AEE64FEE /* RKValueTransformers-dummy.m in Sources */, - 7F624540F82068E3C8ED3762BAC27C7C /* RKValueTransformers.m in Sources */, + C1F4CDAC9CA5FE6D7CB0081CA2C324AA /* BFAppLink.m in Sources */, + A1EC89637E89B1A927B64A88D846F37C /* BFAppLinkNavigation.m in Sources */, + 6564EACD1F229AC7C76D64958FD2084E /* BFAppLinkReturnToRefererController.m in Sources */, + 17BCC234EFBB7A73B92E922E5104E5AE /* BFAppLinkReturnToRefererView.m in Sources */, + 5CE49091B82B4C91FFE7BB7ECB3EF5FF /* BFAppLinkTarget.m in Sources */, + 86DDE3CA5BB0A9832CC42F7D111A4E50 /* BFCancellationToken.m in Sources */, + 5E5C21A949A6A420773112D9DA4D08A9 /* BFCancellationTokenRegistration.m in Sources */, + 221012772EFFCB2257ABC519107D42D4 /* BFCancellationTokenSource.m in Sources */, + 87555A986BB8D791D09CC1CF98CB05F0 /* BFExecutor.m in Sources */, + 256CEC5BA81F9DF5DDADBCCFBAC3CBBD /* BFMeasurementEvent.m in Sources */, + 9B20CB3ED72C1E4476D8EC5896D6EE25 /* BFTask.m in Sources */, + E36FAD435FEC0C33404BEE1546D263CA /* BFTaskCompletionSource.m in Sources */, + 1C56EBB47779DB8E4FCF3FA690AD04BE /* BFURL.m in Sources */, + 98243A9B61B05CAD50CD1C18E5EB33EF /* BFWebViewAppLinkResolver.m in Sources */, + 638303B9767AD6CFA4EDD3CC9D438888 /* Bolts-dummy.m in Sources */, + 9C2018D3236C7170BE9FC1AFA36AE55E /* Bolts.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 01A09D5CAB510AFF5EAE0B04999D4CBE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = TransitionKit; - target = 158117D77AED03B83733E51D2D22983B /* TransitionKit */; - targetProxy = 508B59BE547C282F52F9DF11BE75503E /* PBXContainerItemProxy */; - }; - 153CCB3DBDC780B040D06C23CE57E22E /* PBXTargetDependency */ = { + 1DB21EB238ED3CDBEDA6D8B7DCF90C09 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKLoginKit; - target = 9E227047A8538838626AF4BBABC0B0F8 /* FBSDKLoginKit */; - targetProxy = C3F27F08CCA705703E82EEFC33DC50B8 /* PBXContainerItemProxy */; + name = FBSDKCoreKit; + target = 38C996FDE9DF6549D8681DED0DF37B6D /* FBSDKCoreKit */; + targetProxy = F22120048F68D4153949EDB8127B913F /* PBXContainerItemProxy */; }; - 1AF8EB47E48D7C1CFA7614ACB3F9C64E /* PBXTargetDependency */ = { + 20B7A46BE41F3AA6B35791B84829E235 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Bolts; - target = CDF1F15921EAF837BFD0B27099E8329A /* Bolts */; - targetProxy = 84C3283C4EAF19219F77EF955EEAC0A9 /* PBXContainerItemProxy */; + target = F70BF3EA9E69856AC06EB0A27F8F7F5E /* Bolts */; + targetProxy = 5B461E7087ACB47CECF41951623B8F80 /* PBXContainerItemProxy */; }; - 1B98D50D03158FC43F851D07680931C5 /* PBXTargetDependency */ = { + 4E333A737FBED4611FA065CD43804799 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKCoreKit; - target = 25B614D6ADBCB106DEE01D64514A1810 /* FBSDKCoreKit */; - targetProxy = DCB8E09559E74DD3DFE0FD33CA8EF96B /* PBXContainerItemProxy */; + name = FBSDKShareKit; + target = 07B33CB3AC7A0FB33C3E2F87B3AAA6BB /* FBSDKShareKit */; + targetProxy = 07BFC67E4B108510AC71A0A5449A1488 /* PBXContainerItemProxy */; }; - 1D6E64BC964904907700014CA96C7F74 /* PBXTargetDependency */ = { + 5476A9F788FDF749003DA969A09B8EDF /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = AFNetworking; - target = C9CF1C271EB58F682F0F38C8C35BAB4C /* AFNetworking */; - targetProxy = E30C7FB51D911920237559D43F5B7B23 /* PBXContainerItemProxy */; + name = FBSDKCoreKit; + target = 38C996FDE9DF6549D8681DED0DF37B6D /* FBSDKCoreKit */; + targetProxy = 877102F5600E4993D45569385031DED4 /* PBXContainerItemProxy */; }; - 29F703097FD38326D0B1AA3F0FF99627 /* PBXTargetDependency */ = { + 58E3FDF3353FBEF4CD1513221CAF29B7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Bolts; - target = CDF1F15921EAF837BFD0B27099E8329A /* Bolts */; - targetProxy = D782CEA6DA0EBB775C10DD584216C744 /* PBXContainerItemProxy */; + name = ISO8601DateFormatterValueTransformer; + target = 0EC7816D6AB1C0830108FC61D968488B /* ISO8601DateFormatterValueTransformer */; + targetProxy = 1D5F94CFB0F913E9511CAF914A2C7D0E /* PBXContainerItemProxy */; }; - 4B5C01E548595779A34A8BABB27D0AD1 /* PBXTargetDependency */ = { + 6C5A8B64810D2A925A10471E1DD15B6F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Bolts; - target = CDF1F15921EAF837BFD0B27099E8329A /* Bolts */; - targetProxy = 39053682DD570F5383CFAFDFA822127C /* PBXContainerItemProxy */; + target = F70BF3EA9E69856AC06EB0A27F8F7F5E /* Bolts */; + targetProxy = 0F4B7338DE46F13905B30C9CD30ACD11 /* PBXContainerItemProxy */; }; - 5F35481F1296EA3D5771D17405B15B43 /* PBXTargetDependency */ = { + 740BD01DC926CE40B57F37BA758691F0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SOCKit; target = A2770197345BCE1622568AECE6B8E824 /* SOCKit */; - targetProxy = B16B0202933CE8F18E60DCCD208B1597 /* PBXContainerItemProxy */; + targetProxy = A373B3453AFBE2E4FEDDE5C90598DE2B /* PBXContainerItemProxy */; }; - 610D35C9298F1590C611DAFAAFB7F0BF /* PBXTargetDependency */ = { + 74BE66951935B4884173BE8571A70445 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = ISO8601DateFormatterValueTransformer; - target = C4D8ECA2F5CC610D055AC7FA148E43D2 /* ISO8601DateFormatterValueTransformer */; - targetProxy = 9B70D042ADE9795273832351FFFB8CFE /* PBXContainerItemProxy */; + name = TransitionKit; + target = 158117D77AED03B83733E51D2D22983B /* TransitionKit */; + targetProxy = 575F96E46E0B5ADAE795139F2952EFDA /* PBXContainerItemProxy */; }; - 69397930DED2D381C7EA26305507C2AC /* PBXTargetDependency */ = { + 820B3947E446D75C8D9868A33BA2F0C5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = AFNetworking; - target = C9CF1C271EB58F682F0F38C8C35BAB4C /* AFNetworking */; - targetProxy = 239D716A3732545F57F6ED90CA59DDB3 /* PBXContainerItemProxy */; + name = TransitionKit; + target = 158117D77AED03B83733E51D2D22983B /* TransitionKit */; + targetProxy = 654EFE0AC2F47EF9497FFF8114F473D7 /* PBXContainerItemProxy */; }; - 6EB34B92CCF89CBBFB27599DDE9A632B /* PBXTargetDependency */ = { + 98573BF74E4FBE4F6612588F871734DE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = ISO8601DateFormatterValueTransformer; - target = C4D8ECA2F5CC610D055AC7FA148E43D2 /* ISO8601DateFormatterValueTransformer */; - targetProxy = 093C2AC3C5E237ACED621AA6B7D73B6D /* PBXContainerItemProxy */; + name = SOCKit; + target = A2770197345BCE1622568AECE6B8E824 /* SOCKit */; + targetProxy = 1AB990EC905BAD0E697E2BAC5D549712 /* PBXContainerItemProxy */; }; - 76F3D42CA8B3F4B496EB7C44DB22C60A /* PBXTargetDependency */ = { + A3494C8ED2345467EA49874CD21B00C6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Parse; - target = 63CC4B4092B896F9AACC389383233974 /* Parse */; - targetProxy = AE639A41EDE660124BE148F0E8E7394E /* PBXContainerItemProxy */; + target = 9350FE989EB5F0E5321B9054194D84DE /* Parse */; + targetProxy = 2B44CF1EB2D215F539DD3C9096A747BF /* PBXContainerItemProxy */; + }; + A9D82D4BD1C13674DA7E9AE702119B04 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKCoreKit; + target = 38C996FDE9DF6549D8681DED0DF37B6D /* FBSDKCoreKit */; + targetProxy = 180401446108A5AAAA06D984EB79CE8E /* PBXContainerItemProxy */; }; - 7E86B9FE2E0B008AFB152287F6BACD0A /* PBXTargetDependency */ = { + B5E2B6580F9E52AB6B90083B1EE38486 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RKValueTransformers; - target = 6C88FB013486FDFB342E31070F055B7D /* RKValueTransformers */; - targetProxy = 9DC04E6E78FC23637B6657E249590718 /* PBXContainerItemProxy */; + target = BE61E7AE076C01CBC74564E4084B550D /* RKValueTransformers */; + targetProxy = AA705DEA05C275BCCCAB7D4127377E6F /* PBXContainerItemProxy */; }; - 860FAF17332CD1740B2A11DC21BFB2AF /* PBXTargetDependency */ = { + B61A4D1E2DD3FF9BD98C9F70D1A5671D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SOCKit; - target = A2770197345BCE1622568AECE6B8E824 /* SOCKit */; - targetProxy = 90B03C8EA96A90ABB289AE1E7B8CB4E8 /* PBXContainerItemProxy */; + name = FBSDKLoginKit; + target = 4A563E15AD58F61DA31660DAC05A1819 /* FBSDKLoginKit */; + targetProxy = F6396DD99C4035C157C64A537AB51678 /* PBXContainerItemProxy */; }; - 8952ED3D382F1A6B068B207FD8E9957B /* PBXTargetDependency */ = { + C1C363F76C8B8310F81BD7794F18CF24 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKShareKit; - target = 8466032D91D4D9DB26BAB2973DE4580C /* FBSDKShareKit */; - targetProxy = 23F28E4F9E5A50D4AF27D1F08804D853 /* PBXContainerItemProxy */; + name = ISO8601DateFormatterValueTransformer; + target = 0EC7816D6AB1C0830108FC61D968488B /* ISO8601DateFormatterValueTransformer */; + targetProxy = E7F7CD721264BF80F21FE180ACFBC031 /* PBXContainerItemProxy */; }; - C2B16C4EC465BF81E7C7C0F9993CDDC2 /* PBXTargetDependency */ = { + D435EE953A395D8BA469CF50BAFFB40C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RKValueTransformers; - target = 6C88FB013486FDFB342E31070F055B7D /* RKValueTransformers */; - targetProxy = 31F1FB5DB979090B7765B885014DAD55 /* PBXContainerItemProxy */; + name = RestKit; + target = 5A89C7736981130B2EEED27805B7A855 /* RestKit */; + targetProxy = FDC24DB1B6A19A6B4BE393C5E2FC474B /* PBXContainerItemProxy */; }; - D2B995F840A42ABCB35C02C4FEC373AC /* PBXTargetDependency */ = { + D947B19C1CDA42B26F803FECA6935D92 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = TransitionKit; - target = 158117D77AED03B83733E51D2D22983B /* TransitionKit */; - targetProxy = 57E12F0F504016B2C065B8034ECE2D59 /* PBXContainerItemProxy */; + name = RKValueTransformers; + target = BE61E7AE076C01CBC74564E4084B550D /* RKValueTransformers */; + targetProxy = A15359A20CD2F146F3CBD2E67023AD73 /* PBXContainerItemProxy */; }; - D596BD6B3C54E3E9B5E021ABCCC4908B /* PBXTargetDependency */ = { + D96E033200C99E888BB967DAAFA162FD /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKCoreKit; - target = 25B614D6ADBCB106DEE01D64514A1810 /* FBSDKCoreKit */; - targetProxy = B7D088F9D52456E09D8B301F2AE6E793 /* PBXContainerItemProxy */; + name = AFNetworking; + target = CDF340FD050E9DF3676FDDB5D9FAB6D4 /* AFNetworking */; + targetProxy = 49B938426B06493DDBE9DBA4CC8167EF /* PBXContainerItemProxy */; }; - E4737F0598EB8D7357880B052025EEBB /* PBXTargetDependency */ = { + E48AE3EDCEF605AF86E58F2AB34B3720 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RKValueTransformers; - target = 6C88FB013486FDFB342E31070F055B7D /* RKValueTransformers */; - targetProxy = CBF10CAFC2EFE98D4A25364E19BF1C82 /* PBXContainerItemProxy */; + name = AFNetworking; + target = CDF340FD050E9DF3676FDDB5D9FAB6D4 /* AFNetworking */; + targetProxy = 6B8FF1AF77E489E69AEB579F435326F7 /* PBXContainerItemProxy */; }; - F393612E768E24CA90A7BAE57E7C3205 /* PBXTargetDependency */ = { + F9718E79C8C9C0AD0A55FB991F0E078D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKCoreKit; - target = 25B614D6ADBCB106DEE01D64514A1810 /* FBSDKCoreKit */; - targetProxy = 5563D6248C22BD4C3E0FFE34C535469A /* PBXContainerItemProxy */; + name = Bolts; + target = F70BF3EA9E69856AC06EB0A27F8F7F5E /* Bolts */; + targetProxy = 5386A145A9F17749EC933FDD8A74359E /* PBXContainerItemProxy */; }; - FD57A738DE10B9F1A42639DD55F519B3 /* PBXTargetDependency */ = { + FE40B3843EDCA5F39E824ADC4B3FCC8B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RestKit; - target = 5A89C7736981130B2EEED27805B7A855 /* RestKit */; - targetProxy = 1536105EABB17B75368B8845D8A8A1A0 /* PBXContainerItemProxy */; + name = RKValueTransformers; + target = BE61E7AE076C01CBC74564E4084B550D /* RKValueTransformers */; + targetProxy = 29A6349C83120662A53BAEEE2F9ABC4C /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -4561,12 +4561,12 @@ }; name = Release; }; - 0EAA57C8ED064B75269184B301B80F7B /* Release */ = { + 151C1F059AC71919A74567CABC6C249F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FAF5EBA356BB1361627763A0C3E4FBA8 /* RKValueTransformers-Private.xcconfig */; + baseConfigurationReference = 325246AADDC0F382E655933B585A347B /* Bolts-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -4577,12 +4577,12 @@ }; name = Release; }; - 142B3CBF0351F15763EE76DB0357F3D5 /* Release */ = { + 1613D299E6C12EC750981F72447F2D39 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 28D3D49C022C268585679D13BC5BFC4B /* FBSDKLoginKit-Private.xcconfig */; + baseConfigurationReference = AB5F89C2FF338EB3D8A14F31581D0B13 /* TransitionKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/TransitionKit/TransitionKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -4593,12 +4593,12 @@ }; name = Release; }; - 1613D299E6C12EC750981F72447F2D39 /* Release */ = { + 17883521419BF92032816EF185EDA158 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AB5F89C2FF338EB3D8A14F31581D0B13 /* TransitionKit-Private.xcconfig */; + baseConfigurationReference = 8DD494B04A84F285624644430E1FF3A0 /* RKValueTransformers-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/TransitionKit/TransitionKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -4609,12 +4609,12 @@ }; name = Release; }; - 19AABD15633FC9421206A24F8F334609 /* Release */ = { + 237D171C7043338D923750109E6D9759 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C01586B6345CA4AB19014D467EAE9DBA /* Parse-Private.xcconfig */; + baseConfigurationReference = 5AF094AA3C85E325892EB2AE88799BB8 /* FBSDKLoginKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -4625,12 +4625,12 @@ }; name = Release; }; - 2696A842650CE6E5A2005A5191ADB0AC /* Debug */ = { + 28CCE120D48EBB362AE18440B3B88DF9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 101AA17C537653FDA61829C8AB7E5153 /* Bolts-Private.xcconfig */; + baseConfigurationReference = EBB6883C7F57FAA6E0F4E3A4DCD0836A /* FBSDKShareKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; @@ -4641,28 +4641,28 @@ }; name = Debug; }; - 333B06E1723BA0A42B65C296B8E8BB1B /* Debug */ = { + 3EC9E1A9512F9D544D5BDC1096E61BFA /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 35AF2ED07EF17B28DEF0B55966C47D4B /* AFNetworking-Private.xcconfig */; + baseConfigurationReference = E0CC0033498B3D96CF358C75CCE120A9 /* Pods.release.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; - 3D963DCA1C8E5E9A700B01CE59190CCF /* Debug */ = { + 47087391176B22F53520485DF012A7E9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8FD1B81D44C9140C9CB6A7AE15FD008A /* FBSDKCoreKit-Private.xcconfig */; + baseConfigurationReference = 3DABBC1078165E5DDDEFA2E7472C5559 /* AFNetworking-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; @@ -4673,28 +4673,12 @@ }; name = Debug; }; - 3EC9E1A9512F9D544D5BDC1096E61BFA /* Release */ = { + 490EA856AD7C65DA7CC02C9B4964E857 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E0CC0033498B3D96CF358C75CCE120A9 /* Pods.release.xcconfig */; + baseConfigurationReference = 241767740C7A36BC4016F69B2DFCDFF5 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; - 50CBBC9F4BB647FC710D838B24C8CCD5 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5CCF2B1914047A6A115AD8CAF5B6D70E /* FBSDKShareKit-Private.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; @@ -4776,37 +4760,37 @@ }; name = Debug; }; - 65BAFCAE1AED085E5AE0FFFC7BFB89AF /* Debug */ = { + 6970934B86C31043F2B7B6B72B11FB54 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 28D3D49C022C268585679D13BC5BFC4B /* FBSDKLoginKit-Private.xcconfig */; + baseConfigurationReference = EBB6883C7F57FAA6E0F4E3A4DCD0836A /* FBSDKShareKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; - 744C22F884B6425E59AA0CA4491A618F /* Debug */ = { + 6BBE9279CF790A4F67AFFC5416B9BF58 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31FC85622F6B1B2EE86B878CA3F2FDC7 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */; + baseConfigurationReference = F6E9E4399B6F13E900FC0A4DACCD4E15 /* Parse-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; 74857149DC1E0D599B8A01A78349A926 /* Release */ = { isa = XCBuildConfiguration; @@ -4858,60 +4842,60 @@ }; name = Debug; }; - 7755A5B9233C093AEBB142E77971273D /* Release */ = { + 8D20C2CFA6C2516F2C933D6F81D61C8C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5CCF2B1914047A6A115AD8CAF5B6D70E /* FBSDKShareKit-Private.xcconfig */; + baseConfigurationReference = 5AF094AA3C85E325892EB2AE88799BB8 /* FBSDKLoginKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Release; + name = Debug; }; - 8AEEECDDE44089ECD222736B188254DA /* Release */ = { + AB6BDA4144F0FBF7B6EC25762481DEF5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8FD1B81D44C9140C9CB6A7AE15FD008A /* FBSDKCoreKit-Private.xcconfig */; + baseConfigurationReference = 8DD494B04A84F285624644430E1FF3A0 /* RKValueTransformers-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Release; + name = Debug; }; - AF884464F76736BEDE0A89B165BE53FB /* Release */ = { + ACE9AD4DF5FBD57DBEA4912A088B254B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 35AF2ED07EF17B28DEF0B55966C47D4B /* AFNetworking-Private.xcconfig */; + baseConfigurationReference = 325246AADDC0F382E655933B585A347B /* Bolts-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Release; + name = Debug; }; - AF9E12C3EE4D4CC2F07D7A3BBD68B0F9 /* Release */ = { + BB47AF4B4F2EB227EFE5DD25F74ABB44 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 101AA17C537653FDA61829C8AB7E5153 /* Bolts-Private.xcconfig */; + baseConfigurationReference = 3DABBC1078165E5DDDEFA2E7472C5559 /* AFNetworking-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -4922,12 +4906,12 @@ }; name = Release; }; - B52B389BD882B64CB84681783B7C0542 /* Release */ = { + C85D73546CD52F1C1A52C397E1178D3F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31FC85622F6B1B2EE86B878CA3F2FDC7 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */; + baseConfigurationReference = A8FA5F2052C43B6E4060DAF60265E858 /* SOCKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/SOCKit/SOCKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -4938,28 +4922,28 @@ }; name = Release; }; - C85D73546CD52F1C1A52C397E1178D3F /* Release */ = { + CF3A527F185607546641C5490F6977B2 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = A8FA5F2052C43B6E4060DAF60265E858 /* SOCKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/SOCKit/SOCKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Release; + name = Debug; }; - CE20A88E51F0CFB70BA2EC15CD9FEED2 /* Debug */ = { + D6D8CA082021CFD99521942EB7B1C6CC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FAF5EBA356BB1361627763A0C3E4FBA8 /* RKValueTransformers-Private.xcconfig */; + baseConfigurationReference = F6E9E4399B6F13E900FC0A4DACCD4E15 /* Parse-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; @@ -4970,28 +4954,28 @@ }; name = Debug; }; - CF3A527F185607546641C5490F6977B2 /* Debug */ = { + EB53A5B4F068449E8B33C3232AEA1B37 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A8FA5F2052C43B6E4060DAF60265E858 /* SOCKit-Private.xcconfig */; + baseConfigurationReference = 9CD8231FE026505A5E9872616FAABDD9 /* FBSDKCoreKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SOCKit/SOCKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; - E01526FFF2B4BDD553457766AA5D5A62 /* Debug */ = { + F59359E3686B534894DBB9EC3B56C1B5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C01586B6345CA4AB19014D467EAE9DBA /* Parse-Private.xcconfig */; + baseConfigurationReference = 9CD8231FE026505A5E9872616FAABDD9 /* FBSDKCoreKit-Private.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; @@ -5002,6 +4986,22 @@ }; name = Debug; }; + F83EB62BBDB1895EDFAA2205951A52A3 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 241767740C7A36BC4016F69B2DFCDFF5 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -5014,11 +5014,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 465F5EE40464137B8E18CF1E3B4F0A88 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */ = { + 552C7D808ECBB92F668A2DB3200A4D1C /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 50CBBC9F4BB647FC710D838B24C8CCD5 /* Debug */, - 7755A5B9233C093AEBB142E77971273D /* Release */, + F59359E3686B534894DBB9EC3B56C1B5 /* Debug */, + EB53A5B4F068449E8B33C3232AEA1B37 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5041,83 +5041,83 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 85B8C76F6B34886DBFD27254F0AD599A /* Build configuration list for PBXNativeTarget "ISO8601DateFormatterValueTransformer" */ = { + 6EC6BD2999BC540B28D524C6412A861E /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { isa = XCConfigurationList; buildConfigurations = ( - 744C22F884B6425E59AA0CA4491A618F /* Debug */, - B52B389BD882B64CB84681783B7C0542 /* Release */, + 47087391176B22F53520485DF012A7E9 /* Debug */, + BB47AF4B4F2EB227EFE5DD25F74ABB44 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8A697DC1496FE3D429E1CFF02BD30ED3 /* Build configuration list for PBXNativeTarget "Parse" */ = { + 98311CD083858EB460528FDAF09B4351 /* Build configuration list for PBXNativeTarget "RKValueTransformers" */ = { isa = XCConfigurationList; buildConfigurations = ( - E01526FFF2B4BDD553457766AA5D5A62 /* Debug */, - 19AABD15633FC9421206A24F8F334609 /* Release */, + AB6BDA4144F0FBF7B6EC25762481DEF5 /* Debug */, + 17883521419BF92032816EF185EDA158 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - AD40A852228370388396799020B6ECCB /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */ = { + 9C5223A409DF8B195DDC90B0247CD9E3 /* Build configuration list for PBXNativeTarget "Bolts" */ = { isa = XCConfigurationList; buildConfigurations = ( - 3D963DCA1C8E5E9A700B01CE59190CCF /* Debug */, - 8AEEECDDE44089ECD222736B188254DA /* Release */, + ACE9AD4DF5FBD57DBEA4912A088B254B /* Debug */, + 151C1F059AC71919A74567CABC6C249F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BE9B407615E85CA189C0133A977CB6E4 /* Build configuration list for PBXNativeTarget "SOCKit" */ = { + 9E125BC8CF613466796A1A3602F5CBD5 /* Build configuration list for PBXNativeTarget "Parse" */ = { isa = XCConfigurationList; buildConfigurations = ( - CF3A527F185607546641C5490F6977B2 /* Debug */, - C85D73546CD52F1C1A52C397E1178D3F /* Release */, + D6D8CA082021CFD99521942EB7B1C6CC /* Debug */, + 6BBE9279CF790A4F67AFFC5416B9BF58 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C3987B318B7564B87ABA70296462F73F /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */ = { + BE9B407615E85CA189C0133A977CB6E4 /* Build configuration list for PBXNativeTarget "SOCKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 65BAFCAE1AED085E5AE0FFFC7BFB89AF /* Debug */, - 142B3CBF0351F15763EE76DB0357F3D5 /* Release */, + CF3A527F185607546641C5490F6977B2 /* Debug */, + C85D73546CD52F1C1A52C397E1178D3F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DF16688DE4059476DF270CAE8D816A68 /* Build configuration list for PBXNativeTarget "Bolts" */ = { + D0CD18500801AD4B06991D66CCFE7ED7 /* Build configuration list for PBXNativeTarget "ISO8601DateFormatterValueTransformer" */ = { isa = XCConfigurationList; buildConfigurations = ( - 2696A842650CE6E5A2005A5191ADB0AC /* Debug */, - AF9E12C3EE4D4CC2F07D7A3BBD68B0F9 /* Release */, + 490EA856AD7C65DA7CC02C9B4964E857 /* Debug */, + F83EB62BBDB1895EDFAA2205951A52A3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - EC5884D823C95D73657B127F496ED2E3 /* Build configuration list for PBXNativeTarget "TransitionKit" */ = { + E177E6414A58969A070CFA1A4938E1C6 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 57E301D7C33C28BED6841389AB36D92F /* Debug */, - 1613D299E6C12EC750981F72447F2D39 /* Release */, + 28CCE120D48EBB362AE18440B3B88DF9 /* Debug */, + 6970934B86C31043F2B7B6B72B11FB54 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F2360F7C13D81C174408D22905743FF4 /* Build configuration list for PBXNativeTarget "RKValueTransformers" */ = { + EC5884D823C95D73657B127F496ED2E3 /* Build configuration list for PBXNativeTarget "TransitionKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - CE20A88E51F0CFB70BA2EC15CD9FEED2 /* Debug */, - 0EAA57C8ED064B75269184B301B80F7B /* Release */, + 57E301D7C33C28BED6841389AB36D92F /* Debug */, + 1613D299E6C12EC750981F72447F2D39 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F7FDAE37636FE3CB2EC4D023EBFA0B16 /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { + FBA64B3614CC52E9FFFD42D7968A2621 /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 333B06E1723BA0A42B65C296B8E8BB1B /* Debug */, - AF884464F76736BEDE0A89B165BE53FB /* Release */, + 8D20C2CFA6C2516F2C933D6F81D61C8C /* Debug */, + 237D171C7043338D923750109E6D9759 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Unit-2-Journal/Pods/RKValueTransformers/Code/RKValueTransformers.h b/Unit-2-Journal/Pods/RKValueTransformers/Code/RKValueTransformers.h new file mode 100644 index 0000000..0aa6cee --- /dev/null +++ b/Unit-2-Journal/Pods/RKValueTransformers/Code/RKValueTransformers.h @@ -0,0 +1,373 @@ +// +// RKValueTransformers.h +// RestKit +// +// Created by Blake Watters on 8/18/13. +// Copyright (c) 2013 RestKit. All rights reserved. +// +// 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 + +/** + Objects wish to perform transformation on values as part of a RestKit object mapping operation much adopt the `RKValueTransforming` protocol. Value transformers must introspect a given input value to determine if they are capable of performing a transformation and if so, perform the transformation and assign the new value to the given pointer to an output value and return `YES` or else construct an error describing the failure and return `NO`. Value transformers may also optionally implement a validation method that enables callers to determine if a given value transformer object is capable of performing a transformation on an input value. + */ +@protocol RKValueTransforming + +@required + +/** + Transforms a given value into a new representation. + + Attempts to perform a transformation of a given value into a new representation and returns a Boolean value indicating if the transformation was successful. Transformers are responsible for introspecting their input values before attempting to perform the transformation. If the transformation cannot be performed, then the transformer must construct an `NSError` object describing the nature of the failure else a warning will be emitted. + + @param inputValue The value to be transformed. + @param outputValue A pointer to an `id` object that will be assigned to the transformed representation. May be assigned to `nil` if that is the result of the transformation. + @param outputValueClass The class of the `outputValue` variable. Specifies the expected type of a successful transformation. May be `nil` to indicate that the type is unknown or unimportant. + @param error A pointer to an `NSError` object that must be assigned to a newly constructed `NSError` object if the transformation cannot be performed. + @return A Boolean value indicating if the transformation was successful. This is used to determine whether another transformer should be given an opportunity to attempt a transformation. + */ +- (BOOL)transformValue:(id)inputValue toValue:(id *)outputValue ofClass:(Class)outputValueClass error:(NSError **)error; + +@optional + +/** + Asks the transformer if it is capable of performing a transformation from a given class into a new representation of another given class. + + This is an optional method that need only be implemented by transformers that are tightly bound to values with specific types. + + @param inputValueClass The `Class` of an input value being inspected. + @param outputValueClass The `Class` of an output value being inspected. + @return `YES` if the receiver can perform a transformation between the given source and destination classes. + */ +- (BOOL)validateTransformationFromClass:(Class)inputValueClass toClass:(Class)outputValueClass; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + The domain for errors emitted by RKValueTransformers + */ +extern NSString *const RKValueTransformersErrorDomain; + +/** + If multiple errors occur in one operation, they are collected in an array and added with this key to the "top-level error" of the operation + */ +extern NSString *const RKValueTransformersDetailedErrorsKey; + +typedef NS_ENUM(NSUInteger, RKValueTransformationError) { + RKValueTransformationErrorUntransformableInputValue = 3000, // The input value was determined to be unacceptable and no transformation was performed. + RKValueTransformationErrorUnsupportedOutputClass = 3001, // The specified class type for the output value is unsupported and no transformation was performed. + RKValueTransformationErrorTransformationFailed = 3002 // A transformation was attempted, but failed. +}; + +/** + Tests if a given input value is of an expected class and returns a failure if it is not. + + This macro is useful for quickly verifying that a transformer can work with a given input value by checking if the value is an instance of an expected class. On failure, the macro constructs an error describing the class mismatch. + + @param inputValue The input value to test. + @param expectedClass The expected class or array of classes of the input value. + @param error A pointer to an `NSError` object in which to assign a newly constructed error if the test fails. Cannot be `nil`. + */ +#define RKValueTransformerTestInputValueIsKindOfClass(inputValue, expectedClass, error) ({ \ + id expectedArgument = (expectedClass); \ + BOOL success = NO; \ + if ([expectedArgument isKindOfClass:[NSArray class]]) { \ + for (Class supportedClass in expectedArgument) {\ + if ([inputValue isKindOfClass:supportedClass]) { \ + success = YES; \ + break; \ + } \ + } \ + } else { \ + success = [inputValue isKindOfClass:expectedArgument]; \ + } \ + if (! success) { \ + if (error) { \ + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: [NSString stringWithFormat:@"Expected an `inputValue` of type `%@`, but got a `%@`.", expectedArgument, [inputValue class]] };\ + *error = [NSError errorWithDomain:RKValueTransformersErrorDomain code:RKValueTransformationErrorUntransformableInputValue userInfo:userInfo]; \ + } \ + return NO; \ + } \ +}) + +/** + Tests if a given output value class is of an expected class and returns a failure if it is not. + + This macro is useful for quickly verifying that a transformer can work with a given input value by checking if the value is an instance of an expected class. On failure, the macro constructs an error describing the class mismatch. + + @param outputValueClass The input value to test. + @param expectedClass The expected class or array of classes of the input value. + @param error A pointer to an `NSError` object in which to assign a newly constructed error if the test fails. Cannot be `nil`. + */ +#define RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, expectedClass, error) ({ \ + BOOL success = NO; \ + id expectedArgument = (expectedClass); \ + if ([expectedArgument isKindOfClass:[NSArray class]]) { \ + for (Class supportedClass in expectedArgument) {\ + if ([outputValueClass isSubclassOfClass:supportedClass]) { \ + success = YES; \ + break; \ + } \ + } \ + } else { \ + success = [outputValueClass isSubclassOfClass:expectedArgument]; \ + } \ + if (! success) { \ + if (error) { \ + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: [NSString stringWithFormat:@"Expected an `outputValueClass` of type `%@`, but got a `%@`.", expectedArgument, outputValueClass] };\ + *error = [NSError errorWithDomain:RKValueTransformersErrorDomain code:RKValueTransformationErrorUnsupportedOutputClass userInfo:userInfo]; \ + } \ + return NO; \ + } \ +}) + +/** + Tests a condition to evaluate the success of an attempted value transformation and returns a failure if it is not true. + + This macro is useful for quickly verifying that an attempted transformation was successful. If the condition is not true, than an error is constructed describing the failure. + + @param condition The condition to test. + @param expectedClass The expected class of the input value. + @param error A pointer to an `NSError` object in which to assign a newly constructed error if the test fails. Cannot be `nil`. + @param ... A string describing what the failure was that occurred. This may be a format string with additional arguments. + */ +#define RKValueTransformerTestTransformation(condition, error, ...) ({ \ +if (! (condition)) { \ + if (error) { \ + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: [NSString stringWithFormat:__VA_ARGS__] };\ + *error = [NSError errorWithDomain:RKValueTransformersErrorDomain code:RKValueTransformationErrorTransformationFailed userInfo:userInfo]; \ + } \ + return NO; \ + } \ +}) + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +@class RKCompoundValueTransformer; + +/** + The `RKValueTransformer` class is an abstract base class for implementing a value transformer that conforms to the `RKValueTransforming` protocol. The class is provided to enable third-party extensions of the value transformer to be implemented through subclassing. The default implementation contains no behavior and will raise an exception if an implementation of `transformValue:toValue:ofClass:error:` is not provided by the subclass. `RKValueTransformer` also exposes accessors for the default value transformer implementations that are provided with the library. + */ +@interface RKValueTransformer : NSObject + +///-------------------------------------- +/// @name Retrieving Default Transformers +///-------------------------------------- + +/** + Returns a transformer that will return the input value if it is already of the desired output class. + */ ++ (instancetype)identityValueTransformer; + +/** + Returns a transformer capable of transforming between `NSString` and `NSURL` representations. + */ ++ (instancetype)stringToURLValueTransformer; + +/** + Returns a transformer capable of transforming between `NSNumber` and `NSString` representations. + */ ++ (instancetype)numberToStringValueTransformer; + +/** + Returns a transformer capable of transforming between `NSArray` and `NSOrderedSet` representations. + */ ++ (instancetype)arrayToOrderedSetValueTransformer; + +/** + Returns a transformer capable of transforming between `NSArray` and `NSSet` representations. + */ ++ (instancetype)arrayToSetValueTransformer; + +/** + Returns a transformer capable of transforming between `NSDecimalNumber` and `NSNumber` representations. + */ ++ (instancetype)decimalNumberToNumberValueTransformer; + +/** + Returns a transformer capable of transforming between `NSDecimalNumber` and `NSString` representations. + */ ++ (instancetype)decimalNumberToStringValueTransformer; + +/** + Returns a transformer capable of transforming from `[NSNull null]` to `nil` representations. + */ ++ (instancetype)nullValueTransformer; + +/** + Returns a transformer capable of transforming between objects that conform to the `NSCoding` protocol and `NSData` representations by using an `NSKeyedArchiver`/`NSKeyedUnarchiver` to serialize as a property list. + */ ++ (instancetype)keyedArchivingValueTransformer; + +/** + Returns a transformer capable of transforming between `NSNumber` or `NSString` and `NSDate` representations by evaluating the input value as a time interval since the UNIX epoch (1 January 1970, GMT). + + The transformation treats numeric values as a `double` in order to provide sub-second accuracy. + */ ++ (instancetype)timeIntervalSince1970ToDateValueTransformer; + +/** + Returns a transformer capable of transforming between `NSDate` and `NSString` representations in which the string encodes date and time information in the ISO 8601 timestamp format. + + Note that this transformer is only capable of handling a fully qualified timestamp string rather than the complete ISO 8601 format. For a more complete implementation of the ISO 8601 standard, see the []() project. + */ ++ (instancetype)iso8601TimestampToDateValueTransformer; + +/** + Returns a transformer capable of transforming any `NSObject` that implements the `stringValue` method into an `NSString` representation. + */ ++ (instancetype)stringValueTransformer; + +/** + Returns a transformer capable of enclosing any singular `NSObject` into a collection type such as `NSArray`, `NSSet`, or `NSOrderedSet` (and its mutable descendents). + */ ++ (instancetype)objectToCollectionValueTransformer; + +/** + Returns a transformer capable of transforming any object that conforms to the `NSCopying` protocol into a dictionary representation keyed by the transformed object. + */ ++ (instancetype)keyOfDictionaryValueTransformer; + +/** + Returns a transformer capable of transforming any object conforming to the `NSMutableCopying` protocol into a mutable representation of itself. + */ ++ (instancetype)mutableValueTransformer; + +/** + Returns the singleton instance of the default value transformer. The default transformer is a compound transformer that includes all the individual value transformers implemented on the `RKValueTransformer` base class as well as `NSDateFormatter` instances for the following date format strings: + + * MM/dd/yyyy + * yyyy-MM-dd + + All date formatters are configured to the use `en_US_POSIX` locale and the UTC time zone. + */ ++ (RKCompoundValueTransformer *)defaultValueTransformer; + +/** + Sets the default value transformer to a new instance. Setting the default transformer to `nil` will result in a new singleton instance with the default configuration being rebuilt. + + @param compoundValueTransformer The new default compound transformer. Passing `nil` will reset the transformer to the default configuration. + */ ++ (void)setDefaultValueTransformer:(RKCompoundValueTransformer *)compoundValueTransformer; + +@end + +/** + The `RKBlockValueTransformer` class provides a concrete implementation of the `RKValueTransforming` protocol using blocks to provide the implementation of the transformer. + */ +@interface RKBlockValueTransformer : RKValueTransformer + +///----------------------------------- +/// @name Creating a Block Transformer +///----------------------------------- + +/** + Creates and returns a new value transformer with the given validation and transformation blocks. The blocks are used to provide the implementation of the corresponding methods from the `RKValueTransforming` protocol. + + @param validationBlock A block that evaluates whether the transformer can perform a transformation between a given pair of input and output classes. + */ ++ (instancetype)valueTransformerWithValidationBlock:(BOOL (^)(Class inputValueClass, Class outputValueClass))validationBlock + transformationBlock:(BOOL (^)(id inputValue, id *outputValue, Class outputClass, NSError **error))transformationBlock; + +/** + An optional name for the transformer. + */ +@property (nonatomic, copy) NSString *name; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + The `RKCompoundValueTransformer` class provides an implementation of the `RKValueTransforming` protocol in which a collection of underlying value transformers are assembled into a composite value transformer. Compound values transformers are ordered collections in which each underlying transformer is given the opportunity to transform a value in the order in which it appears within the receiver. Compound transformers are copyable, enumerable and support subscripted access to the underlying value transformers. + */ +@interface RKCompoundValueTransformer : NSObject + +///-------------------------------------- +/// @name Creating a Compound Transformer +///-------------------------------------- + +/** + Creates and returns a new compound transformer from an array of individual value transformers. + + @param valueTransformers An array containining an arbitrary number of objects that conform to the `RKValueTransforming` protocol. Cannot be `nil`. + @return A new compound transformer initialized with the given collection of underlying transformers. + @raises NSInvalidArgumentException Raised if `valueTransformers` is `nil` or any objects in the given collection do not conform to the `RKValueTransforming` protocol. + */ ++ (instancetype)compoundValueTransformerWithValueTransformers:(NSArray *)valueTransformers; + +///---------------------------------------------------- +/// @name Manipulating the Value Transformer Collection +///---------------------------------------------------- + +/** + Adds the given value transformer to the end of the receiver's transformer collection. + + Adding a transformer appends it to the end of the collection meaning that it will be consulted after all other transformers. + + @param valueTransformer The transformer to add to the receiver. + */ +- (void)addValueTransformer:(id)valueTransformer; + +/** + Removes the given value transformer from the receiver. + + @param valueTransformer The transformer to remove from the receiver. + */ +- (void)removeValueTransformer:(id)valueTransformer; + +/** + Inserts the given value transformer into the receiver at a specific position. If the transformer already exists within the receiver then it is moved to the specified position. + + @param valueTransformer The value transformer to be added to (or moved within) the receiver. + @param index The position at which the transformer should be consulted within the collection. An index of 0 would mean that the transformer is consulted before all other transformers. + */ +- (void)insertValueTransformer:(id)valueTransformer atIndex:(NSUInteger)index; + +/** + Returns a count of the number of value transformers in the receiver. + + @return An integer specifying the number of transformers within the receiver. + */ +- (NSUInteger)numberOfValueTransformers; + +///------------------------------------------ +/// @name Retrieving Constituent Transformers +///------------------------------------------ + +/** + Returns a new array containing a subset of the value transformers contained within the receiver that are valid for a transformation between a representation with a given input class and a given output class. + + Whether or not a given transformer is returned is determined by the invocation of the optional `RKValueTransforming` method `validateTransformationFromClass:toClass:`. Any transformer that does not respond to `validateTransformationFromClass:toClass:` will be included within the returned array. The sequencing of the transformers within the returned array is determined by their position within the receiver. + + If you wish to obtain an array containing all of the transformers contained within the receiver then pass `Nil` for both the `inputValueClass` and `outputValueClass` arguments. + + @param inputValueClass The class of input values that you wish to retrieve the transformers for. Can only be `Nil` if `outputValueClass` is also `Nil`. + @param outputValueClass The class of output values that you wish to retrieve the transformers for. Can only be `Nil` if `inputValueClass` is also `Nil`. + @raises NSInvalidArgumentException Raised if `Nil` is given exclusively for `inputValueClass` or `outputValueClass`. + */ +- (NSArray *)valueTransformersForTransformingFromClass:(Class)inputValueClass toClass:(Class)outputValueClass; + +@end + +// Adopts `RKValueTransforming` to provide transformation from `NSString` <-> `NSNumber` +@interface NSNumberFormatter (RKValueTransformers) +@end + +// Adopts `RKValueTransforming` to provide transformation from `NSString` <-> `NSDate` +@interface NSDateFormatter (RKValueTransformers) +@end diff --git a/Unit-2-Journal/Pods/RKValueTransformers/Code/RKValueTransformers.m b/Unit-2-Journal/Pods/RKValueTransformers/Code/RKValueTransformers.m new file mode 100644 index 0000000..9211a93 --- /dev/null +++ b/Unit-2-Journal/Pods/RKValueTransformers/Code/RKValueTransformers.m @@ -0,0 +1,912 @@ +// +// RKValueTransformers.m +// RestKit +// +// Created by Blake Watters on 8/18/13. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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. +// + +#include +#include +#import "RKValueTransformers.h" + +NSString *const RKValueTransformersErrorDomain = @"org.restkit.RKValueTransformers.ErrorDomain"; +NSString *const RKValueTransformersDetailedErrorsKey = @"detailedErrors"; + +static BOOL RKVTClassIsCollection(Class aClass) +{ + return (aClass && ([aClass isSubclassOfClass:[NSSet class]] || + [aClass isSubclassOfClass:[NSArray class]] || + [aClass isSubclassOfClass:[NSOrderedSet class]])); +} + +@implementation RKValueTransformer + +- (id)init +{ + if ([self class] == [RKValueTransformer class]) { + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"`%@` is abstract and cannot be directly instantiated. " + @"Instantiate a subclass implementation instead.", + NSStringFromClass([self class])] + userInfo:nil]; + } + return [super init]; +} + +#pragma mark RKValueTransforming + +- (BOOL)transformValue:(id)inputValue toValue:(__autoreleasing id *)outputValue ofClass:(Class)outputValueClass error:(NSError *__autoreleasing *)error +{ + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"`RKValueTransformer` subclasses must provide a concrete implementation of `%@`.", + NSStringFromSelector(_cmd)] + userInfo:nil]; +} + +#pragma mark Default Transformers + ++ (instancetype)singletonValueTransformer:(RKBlockValueTransformer * __strong *)valueTransformer + name:(NSString *)name + onceToken:(dispatch_once_t *)onceToken + validationBlock:(BOOL (^)(Class sourceClass, Class destinationClass))validationBlock + transformationBlock:(BOOL (^)(id inputValue, id *outputValue, Class outputValueClass, NSError **error))transformationBlock +{ + dispatch_once(onceToken, ^{ + RKBlockValueTransformer *transformer = [RKBlockValueTransformer valueTransformerWithValidationBlock:validationBlock transformationBlock:transformationBlock]; + transformer.name = name; + *valueTransformer = transformer; + }); + return *valueTransformer; +} + ++ (instancetype)identityValueTransformer +{ + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:nil transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, __unsafe_unretained Class outputValueClass, NSError *__autoreleasing *error) { + RKValueTransformerTestTransformation([inputValue isKindOfClass:outputValueClass], error, @"The given value is not already an instance of '%@'", outputValueClass); + *outputValue = inputValue; + return YES; + }]; +} + ++ (instancetype)stringToURLValueTransformer +{ + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + return (([sourceClass isSubclassOfClass:[NSString class]] && [destinationClass isSubclassOfClass:[NSURL class]]) || + ([sourceClass isSubclassOfClass:[NSURL class]] && [destinationClass isSubclassOfClass:[NSString class]])); + } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, Class outputValueClass, NSError *__autoreleasing *error) { + static dispatch_once_t onceToken; + static NSArray *validClasses; + dispatch_once(&onceToken, ^{ + validClasses = @[ [NSString class], [NSURL class]]; + }); + RKValueTransformerTestInputValueIsKindOfClass(inputValue, validClasses, error); + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, validClasses, error); + if ([inputValue isKindOfClass:[NSString class]]) { + NSURL *URL = [NSURL URLWithString:inputValue]; + RKValueTransformerTestTransformation(URL != nil, error, @"Failed transformation of '%@' to URL: the string is malformed and cannot be transformed to an `NSURL` representation.", inputValue); + *outputValue = URL; + } else if ([inputValue isKindOfClass:[NSURL class]]) { + *outputValue = [(NSURL *)inputValue absoluteString]; + } + return YES; + }]; +} + ++ (instancetype)numberToStringValueTransformer +{ + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + return (([sourceClass isSubclassOfClass:[NSNumber class]] && [destinationClass isSubclassOfClass:[NSString class]]) || + ([sourceClass isSubclassOfClass:[NSString class]] && [destinationClass isSubclassOfClass:[NSNumber class]])); + } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, Class outputValueClass, NSError *__autoreleasing *error) { + static dispatch_once_t onceToken; + static NSArray *validClasses; + static NSSet *trueStrings; + static NSSet *booleanStrings; + static Class cfBooleanClass1; + static Class cfBooleanClass2; + dispatch_once(&onceToken, ^{ + validClasses = @[ [NSNumber class], [NSString class] ]; + trueStrings = [NSSet setWithObjects:@"true", @"t", @"yes", @"y", nil]; + booleanStrings = [trueStrings setByAddingObjectsFromSet:[NSSet setWithObjects:@"false", @"f", @"no", @"n", nil]]; + cfBooleanClass1 = NSClassFromString(@"__NSCFBoolean"); + cfBooleanClass2 = NSClassFromString(@"NSCFBoolean"); + }); + + RKValueTransformerTestInputValueIsKindOfClass(inputValue, validClasses, error); + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, validClasses, error); + if ([inputValue isKindOfClass:[NSString class]]) { + NSString *lowercasedString = [inputValue lowercaseString]; + if ([booleanStrings containsObject:lowercasedString]) { + // Handle booleans encoded as Strings + *outputValue = [NSNumber numberWithBool:[trueStrings containsObject:lowercasedString]]; + } else if ([lowercasedString rangeOfString:@"." options:NSLiteralSearch].location != NSNotFound) { + // String -> Floating Point Number + // Only use floating point if needed to avoid losing precision on large integers + *outputValue = [NSNumber numberWithDouble:[lowercasedString doubleValue]]; + } else { + // String -> Signed Integer + *outputValue = [NSNumber numberWithLongLong:[lowercasedString longLongValue]]; + } + } else if ([inputValue isKindOfClass:[NSNumber class]]) { + if (cfBooleanClass1 && [inputValue isKindOfClass:cfBooleanClass1]) { + *outputValue = [inputValue boolValue] ? @"true" : @"false"; + } else if (cfBooleanClass2 && [inputValue isKindOfClass:cfBooleanClass2]) { + *outputValue = [inputValue boolValue] ? @"true" : @"false"; + } else { + *outputValue = [inputValue stringValue]; + } + } + return YES; + }]; +} + ++ (instancetype)numberToBooleanValueTransformer { + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + + static dispatch_once_t booleanClassOnceToken; + static Class cfBooleanClass1; + static Class cfBooleanClass2; + + dispatch_once(&booleanClassOnceToken, ^{ + cfBooleanClass1 = NSClassFromString(@"__NSCFBoolean"); + cfBooleanClass2 = NSClassFromString(@"NSCFBoolean"); + }); + + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + return (([sourceClass isSubclassOfClass:[NSNumber class]] && [destinationClass isSubclassOfClass:[cfBooleanClass1 class]]) || + ([sourceClass isSubclassOfClass:[NSNumber class]] && [destinationClass isSubclassOfClass:[cfBooleanClass2 class]])); + } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, Class outputValueClass, NSError *__autoreleasing *error) { + + RKValueTransformerTestInputValueIsKindOfClass(inputValue, @[[NSNumber class]], error); + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, @[[NSNumber class]], error); + + *outputValue = inputValue; + + return YES; + }]; +} + ++ (instancetype)arrayToOrderedSetValueTransformer +{ + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + return (([sourceClass isSubclassOfClass:[NSArray class]] && [destinationClass isSubclassOfClass:[NSOrderedSet class]]) || + ([sourceClass isSubclassOfClass:[NSOrderedSet class]] && [destinationClass isSubclassOfClass:[NSArray class]])); + } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, Class outputValueClass, NSError *__autoreleasing *error) { + static dispatch_once_t onceToken; + static NSArray *validClasses; + dispatch_once(&onceToken, ^{ + validClasses = @[ [NSArray class], [NSOrderedSet class]]; + }); + RKValueTransformerTestInputValueIsKindOfClass(inputValue, validClasses, error); + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, validClasses, error); + if ([inputValue isKindOfClass:[NSArray class]]) { + *outputValue = [NSOrderedSet orderedSetWithArray:inputValue]; + } else if ([inputValue isKindOfClass:[NSOrderedSet class]]) { + *outputValue = [inputValue array]; + } + return YES; + }]; +} + ++ (instancetype)arrayToSetValueTransformer +{ + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + return (([sourceClass isSubclassOfClass:[NSArray class]] && [destinationClass isSubclassOfClass:[NSSet class]]) || + ([sourceClass isSubclassOfClass:[NSSet class]] && [destinationClass isSubclassOfClass:[NSArray class]])); + } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, Class outputValueClass, NSError *__autoreleasing *error) { + static dispatch_once_t onceToken; + static NSArray *validClasses; + dispatch_once(&onceToken, ^{ + validClasses = @[ [NSSet class], [NSArray class]]; + }); + RKValueTransformerTestInputValueIsKindOfClass(inputValue, validClasses, error); + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, validClasses, error); + if ([inputValue isKindOfClass:[NSArray class]]) { + if ([outputValueClass isSubclassOfClass:[NSMutableSet class]]) *outputValue = [NSMutableSet setWithArray:inputValue]; + else *outputValue = [NSSet setWithArray:inputValue]; + } else if ([inputValue isKindOfClass:[NSSet class]]) { + if ([outputValueClass isSubclassOfClass:[NSMutableArray class]]) *outputValue = [[inputValue allObjects] mutableCopy]; + else *outputValue = [inputValue allObjects]; + } + return YES; + }]; +} + ++ (instancetype)decimalNumberToStringValueTransformer +{ + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + return (([sourceClass isSubclassOfClass:[NSDecimalNumber class]] && [destinationClass isSubclassOfClass:[NSString class]]) || + ([sourceClass isSubclassOfClass:[NSString class]] && [destinationClass isSubclassOfClass:[NSDecimalNumber class]])); + } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, Class outputValueClass, NSError *__autoreleasing *error) { + static dispatch_once_t onceToken; + static NSArray *validClasses; + dispatch_once(&onceToken, ^{ + validClasses = @[ [NSString class], [NSDecimalNumber class]]; + }); + RKValueTransformerTestInputValueIsKindOfClass(inputValue, validClasses, error); + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, validClasses, error); + if ([inputValue isKindOfClass:[NSString class]]) { + NSDecimalNumber *decimalNumber = [NSDecimalNumber decimalNumberWithString:inputValue]; + RKValueTransformerTestTransformation(! [decimalNumber isEqual:[NSDecimalNumber notANumber]], error, @"Failed transformation of '%@' to `NSDecimalNumber`: the input string was transformed into Not a Number (NaN) value.", inputValue); + *outputValue = decimalNumber; + } else if ([inputValue isKindOfClass:[NSDecimalNumber class]]) { + *outputValue = [inputValue stringValue]; + } + return YES; + }]; +} + ++ (instancetype)decimalNumberToNumberValueTransformer +{ + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + return (([sourceClass isSubclassOfClass:[NSDecimalNumber class]] && [destinationClass isSubclassOfClass:[NSNumber class]]) || + ([sourceClass isSubclassOfClass:[NSNumber class]] && [destinationClass isSubclassOfClass:[NSDecimalNumber class]])); + } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, Class outputValueClass, NSError *__autoreleasing *error) { + static dispatch_once_t onceToken; + static NSArray *validClasses; + dispatch_once(&onceToken, ^{ + validClasses = @[ [NSNumber class], [NSDecimalNumber class]]; + }); + RKValueTransformerTestInputValueIsKindOfClass(inputValue, validClasses, error); + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, validClasses, error); + if ([inputValue isKindOfClass:[NSNumber class]]) { + *outputValue = [NSDecimalNumber decimalNumberWithDecimal:[inputValue decimalValue]]; + } else if ([inputValue isKindOfClass:[NSDecimalNumber class]]) { + *outputValue = inputValue; + } + return YES; + }]; +} + ++ (instancetype)nullValueTransformer +{ + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:nil transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, Class outputValueClass, NSError *__autoreleasing *error) { + RKValueTransformerTestInputValueIsKindOfClass(inputValue, [NSNull class], error); + *outputValue = nil; + return YES; + }]; +} + ++ (instancetype)keyedArchivingValueTransformer +{ + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + return (([destinationClass isSubclassOfClass:[NSData class]] && [sourceClass conformsToProtocol:@protocol(NSCoding)]) || + ([sourceClass isSubclassOfClass:[NSData class]] && [destinationClass conformsToProtocol:@protocol(NSCoding)])); + } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, Class outputValueClass, NSError *__autoreleasing *error) { + if ([inputValue isKindOfClass:[NSData class]]) { + id unarchivedValue = nil; + @try { + unarchivedValue = [NSKeyedUnarchiver unarchiveObjectWithData:inputValue]; + } + @catch (NSException *exception) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: [NSString stringWithFormat:@"An `%@` exception was encountered while attempting to unarchive the given inputValue.", [exception name]], @"exception": exception }; + if (error) *error = [NSError errorWithDomain:RKValueTransformersErrorDomain code:RKValueTransformationErrorTransformationFailed userInfo:userInfo]; + return NO; + } + if (! [unarchivedValue isKindOfClass:outputValueClass]) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: [NSString stringWithFormat:@"Expected an `outputValueClass` of type `%@`, but the unarchived object is a `%@`.", outputValueClass, [unarchivedValue class]] }; + if (error) *error = [NSError errorWithDomain:RKValueTransformersErrorDomain code:RKValueTransformationErrorTransformationFailed userInfo:userInfo]; + return NO; + } + *outputValue = unarchivedValue; + } else if ([inputValue conformsToProtocol:@protocol(NSCoding)]) { + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, [NSData class], error); + *outputValue = [NSKeyedArchiver archivedDataWithRootObject:inputValue]; + } else { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: [NSString stringWithFormat:@"Expected an `inputValue` of type `NSData` or conforming to `NSCoding`, but got a `%@` which does not satisfy these expectation.", [inputValue class]] }; + if (error) *error = [NSError errorWithDomain:RKValueTransformersErrorDomain code:RKValueTransformationErrorUntransformableInputValue userInfo:userInfo]; + return NO; + } + return YES; + }]; +} + ++ (instancetype)timeIntervalSince1970ToDateValueTransformer +{ + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + return ((([sourceClass isSubclassOfClass:[NSString class]] || [sourceClass isSubclassOfClass:[NSNumber class]]) && [destinationClass isSubclassOfClass:[NSDate class]]) || + ([sourceClass isSubclassOfClass:[NSDate class]] && ([destinationClass isSubclassOfClass:[NSNumber class]] || [destinationClass isSubclassOfClass:[NSString class]]))); + } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, __unsafe_unretained Class outputValueClass, NSError *__autoreleasing *error) { + static dispatch_once_t onceToken; + static NSArray *validClasses; + static NSNumberFormatter *numberFormatter; + dispatch_once(&onceToken, ^{ + validClasses = @[ [NSNumber class], [NSString class], [NSDate class] ]; + numberFormatter = [NSNumberFormatter new]; + numberFormatter.numberStyle = NSNumberFormatterDecimalStyle; + }); + RKValueTransformerTestInputValueIsKindOfClass(inputValue, validClasses, error); + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, validClasses, error); + if ([outputValueClass isSubclassOfClass:[NSDate class]]) { + if ([inputValue isKindOfClass:[NSNumber class]]) { + *outputValue = [NSDate dateWithTimeIntervalSince1970:[inputValue doubleValue]]; + } else if ([inputValue isKindOfClass:[NSString class]]) { + if ([[inputValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0) { + *outputValue = nil; + return YES; + } + NSString *errorDescription = nil; + NSNumber *formattedNumber; + BOOL success = [numberFormatter getObjectValue:&formattedNumber forString:inputValue errorDescription:&errorDescription]; + RKValueTransformerTestTransformation(success, error, @"%@", errorDescription); + *outputValue = [NSDate dateWithTimeIntervalSince1970:[formattedNumber doubleValue]]; + } + } else if ([outputValueClass isSubclassOfClass:[NSNumber class]]) { + *outputValue = @([inputValue timeIntervalSince1970]); + } else if ([outputValueClass isSubclassOfClass:[NSString class]]) { + *outputValue = [numberFormatter stringForObjectValue:@([inputValue timeIntervalSince1970])]; + } + return YES; + }]; +} + ++ (instancetype)iso8601TimestampToDateValueTransformer +{ + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + return (([sourceClass isSubclassOfClass:[NSString class]] && [destinationClass isSubclassOfClass:[NSDate class]]) || + ([sourceClass isSubclassOfClass:[NSDate class]] && [destinationClass isSubclassOfClass:[NSString class]])); + } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, __unsafe_unretained Class outputValueClass, NSError *__autoreleasing *error) { + static dispatch_once_t onceToken; + static NSArray *validClasses; + dispatch_once(&onceToken, ^{ + validClasses = @[ [NSString class], [NSDate class] ]; + }); + RKValueTransformerTestInputValueIsKindOfClass(inputValue, validClasses, error); + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, validClasses, error); + if ([outputValueClass isSubclassOfClass:[NSDate class]]) { + static unsigned int const ISO_8601_MAX_LENGTH = 29; + + if ([(NSString *)inputValue length] == 0) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: [NSString stringWithFormat:@"Cannot transform a zero length string"] }; + if (error) *error = [NSError errorWithDomain:RKValueTransformersErrorDomain code:RKValueTransformationErrorUntransformableInputValue userInfo:userInfo]; + return NO; + } + + static NSRegularExpression *validISO8601RegularExpression = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSError *error = nil; + static const char * REGEX_ISO8601_TIMESTAMP = + "\\A(\\d{4})-(\\d{2})-(\\d{2})[T\\s](\\d{2}):(\\d{2}):(\\d{2})" // Mandatory - YYYY-MM-DD(T|\s)hh:mm:ss + "(?:" + "[.](\\d{1,6})" // Optional - .nnnnnn + ")?" + "(?:" + "([+-])(\\d{2}):?(\\d{2})|Z" // Optional -[+-]hh:?mm or Z + ")?\\z"; + NSString *regexString = [[NSString alloc] initWithUTF8String:REGEX_ISO8601_TIMESTAMP]; + validISO8601RegularExpression = [NSRegularExpression regularExpressionWithPattern:regexString + options:NSRegularExpressionCaseInsensitive + error:&error]; + + if (! validISO8601RegularExpression) [NSException raise:NSInternalInconsistencyException format:@"The ISO 8601 validation regex failed to parse: %@", error]; + }); + + if (! [validISO8601RegularExpression numberOfMatchesInString:(NSString *)inputValue options:0 range:NSMakeRange(0, [inputValue length])]) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: [NSString stringWithFormat:@"Input value is not a valid ISO 8601 string: '%@'", inputValue] }; + if (error) *error = [NSError errorWithDomain:RKValueTransformersErrorDomain code:RKValueTransformationErrorUntransformableInputValue userInfo:userInfo]; + return NO; + } + + /* Strip milliseconds prior to parsing */ + double milliseconds = 0.f; + if (19 < [inputValue length] && ([inputValue characterAtIndex:19] == '.' || [inputValue characterAtIndex:19] == ':')) { + NSMutableString *newInputString = [NSMutableString stringWithString:[inputValue substringToIndex:19]]; + NSMutableString *millisecondsString = [NSMutableString new]; + + NSUInteger index = 20; + for (; index < [inputValue length]; index++) + { + unichar digit = [inputValue characterAtIndex:index]; + if(digit >= '0' && digit <= '9') + [millisecondsString appendString:[NSString stringWithFormat:@"%C", digit]]; + else + break; + } + + if (index != 20 && index < [inputValue length]) + [newInputString appendString:[inputValue substringFromIndex:index]]; + + inputValue = [NSString stringWithString:newInputString]; + milliseconds = [millisecondsString doubleValue]/1000.f; + } + + const char *constSource = [(NSString *)inputValue cStringUsingEncoding:NSUTF8StringEncoding]; + size_t length = strlen(constSource); + + char source[ISO_8601_MAX_LENGTH]; + memcpy(source, constSource, sizeof (source)); + if (constSource[10] != 'T') + source[10] = 'T'; + + char destination[ISO_8601_MAX_LENGTH]; + if (length == 19) { + memcpy(destination, source, length); + strncpy(destination + length, "+0000\0", 6); + }else if (length == 20 && source[length - 1] == 'Z') { + memcpy(destination, source, length - 1); + strncpy(destination + length - 1, "+0000\0", 6); + } else { + memcpy(destination, source, sizeof (destination)); + if (length == 25 && source[22] == ':') { + destination[22] = destination[23]; + destination[23] = destination[24]; + destination[24] = '\0'; + } + } + + struct tm time = { + .tm_isdst = -1, + }; + + strptime_l(destination, "%FT%T%z", &time, NULL); + + time_t timeIntervalSince1970 = mktime(&time); + RKValueTransformerTestTransformation(timeIntervalSince1970 != -1, error, @"Failed transformation to date representation: time range is beyond the bounds supported by mktime"); + *outputValue = [NSDate dateWithTimeIntervalSince1970:((double)timeIntervalSince1970 + milliseconds)]; + } else if ([outputValueClass isSubclassOfClass:[NSString class]]) { + static NSDateFormatter *iso8601DateFormatter = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + iso8601DateFormatter = [[NSDateFormatter alloc] init]; + [iso8601DateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"]; + [iso8601DateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]]; + [iso8601DateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; + }); + *outputValue = [iso8601DateFormatter stringFromDate:(NSDate *)inputValue]; + } + return YES; + }]; +} + ++ (instancetype)stringValueTransformer +{ + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + return ([sourceClass instancesRespondToSelector:@selector(stringValue)] && [destinationClass isSubclassOfClass:[NSString class]]); + } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, Class outputValueClass, NSError *__autoreleasing *error) { + if (! [inputValue respondsToSelector:@selector(stringValue)]) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: @"Expected an `inputValue` that responds to `stringValue`, but it does not." }; + if (error) *error = [NSError errorWithDomain:RKValueTransformersErrorDomain code:RKValueTransformationErrorUntransformableInputValue userInfo:userInfo]; + return NO; + } + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, [NSString class], error); + *outputValue = [inputValue stringValue]; + return YES; + }]; +} + ++ (instancetype)objectToCollectionValueTransformer +{ + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + return (!RKVTClassIsCollection(sourceClass) && RKVTClassIsCollection(destinationClass)); + } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, Class outputValueClass, NSError *__autoreleasing *error) { + if (RKVTClassIsCollection([inputValue class])) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: [NSString stringWithFormat:@"Expected an `inputValue` that is not a collection, but got a `%@`.", [inputValue class]] }; + if (error) *error = [NSError errorWithDomain:RKValueTransformersErrorDomain code:RKValueTransformationErrorUntransformableInputValue userInfo:userInfo]; + return NO; + } + static dispatch_once_t onceToken; + static NSArray *validClasses; + dispatch_once(&onceToken, ^{ + validClasses = @[ [NSArray class], [NSSet class], [NSOrderedSet class]]; + }); + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, validClasses, error); + if ([outputValueClass isSubclassOfClass:[NSMutableArray class]]) *outputValue = [NSMutableArray arrayWithObject:inputValue]; + else if ([outputValueClass isSubclassOfClass:[NSMutableSet class]]) *outputValue = [NSMutableSet setWithObject:inputValue]; + else if ([outputValueClass isSubclassOfClass:[NSMutableOrderedSet class]]) *outputValue = [NSMutableOrderedSet orderedSetWithObject:inputValue]; + else if ([outputValueClass isSubclassOfClass:[NSArray class]]) *outputValue = @[ inputValue ]; + else if ([outputValueClass isSubclassOfClass:[NSSet class]]) *outputValue = [NSSet setWithObject:inputValue]; + else if ([outputValueClass isSubclassOfClass:[NSOrderedSet class]]) *outputValue = [NSOrderedSet orderedSetWithObject:inputValue]; + RKValueTransformerTestTransformation(*outputValue, error, @"Failed to transform value into collection %@", outputValueClass); + return YES; + }]; +} + ++ (instancetype)mutableValueTransformer +{ + static dispatch_once_t classesOnceToken; + static NSArray *mutableClasses; + dispatch_once(&classesOnceToken, ^{ + mutableClasses = @[ [NSMutableArray class], [NSMutableDictionary class], [NSMutableString class], [NSMutableSet class], [NSMutableOrderedSet class], [NSMutableData class], [NSMutableIndexSet class], [NSMutableString class], [NSMutableAttributedString class] ]; + }); + + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + /** + NOTE: Because of class clusters in Foundation you cannot make any assumptions about mutability based on classes. For example, given `__NSArrayI` (immutable array) and a destination class of `NSMutableArray`, `isSubClassOfClass:` will not evaluate to `YES`. If you want a mutable result, you need to invoke `mutableCopy`. + */ + return [sourceClass conformsToProtocol:@protocol(NSMutableCopying)] && [mutableClasses containsObject:destinationClass]; + } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, __unsafe_unretained Class outputValueClass, NSError *__autoreleasing *error) { + if (! [inputValue conformsToProtocol:@protocol(NSMutableCopying)]) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: [NSString stringWithFormat:@"Expected an `inputValue` that conforms to `NSMutableCopying`, but `%@` objects do not.", [inputValue class]] }; + if (error) *error = [NSError errorWithDomain:RKValueTransformersErrorDomain code:RKValueTransformationErrorUntransformableInputValue userInfo:userInfo]; + return NO; + } + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, mutableClasses, error); + *outputValue = [inputValue mutableCopy]; + return YES; + }]; +} + ++ (instancetype)keyOfDictionaryValueTransformer +{ + static dispatch_once_t onceToken; + static RKBlockValueTransformer *valueTransformer; + return [self singletonValueTransformer:&valueTransformer name:NSStringFromSelector(_cmd) onceToken:&onceToken validationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + return ([sourceClass conformsToProtocol:@protocol(NSCopying)] && [destinationClass isSubclassOfClass:[NSDictionary class]]); + } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, Class outputValueClass, NSError *__autoreleasing *error) { + if (! [inputValue conformsToProtocol:@protocol(NSCopying)]) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: @"Expected an `inputValue` that conforms to `NSCopying`, but it does not." }; + if (error) *error = [NSError errorWithDomain:RKValueTransformersErrorDomain code:RKValueTransformationErrorUntransformableInputValue userInfo:userInfo]; + return NO; + } + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, [NSDictionary class], error); + if ([outputValueClass isSubclassOfClass:[NSMutableDictionary class]]) { + *outputValue = [NSMutableDictionary dictionaryWithObject:[NSMutableDictionary dictionary] forKey:inputValue]; + } else { + *outputValue = @{ inputValue: @{} }; + } + + return YES; + }]; +} + +static RKCompoundValueTransformer *RKDefaultValueTransformer; +static dispatch_once_t RKDefaultValueTransformerOnceToken; + ++ (RKCompoundValueTransformer *)defaultValueTransformer +{ + dispatch_once(&RKDefaultValueTransformerOnceToken, ^{ + if (! RKDefaultValueTransformer) { + RKDefaultValueTransformer = [RKCompoundValueTransformer compoundValueTransformerWithValueTransformers:@[ + [self identityValueTransformer], + [self stringToURLValueTransformer], + + // `NSDecimalNumber` transformers must be consulted ahead of `NSNumber` transformers because `NSDecimalNumber` is a subclass thereof + [self decimalNumberToNumberValueTransformer], + [self decimalNumberToStringValueTransformer], + + [self numberToBooleanValueTransformer], + [self numberToStringValueTransformer], + [self arrayToOrderedSetValueTransformer], + [self arrayToSetValueTransformer], + [self nullValueTransformer], + [self keyedArchivingValueTransformer], + [self stringValueTransformer], + [self objectToCollectionValueTransformer], + [self stringValueTransformer], + [self keyOfDictionaryValueTransformer], + [self mutableValueTransformer], + ]]; + + // Default date formatters + [RKDefaultValueTransformer addValueTransformer:[self iso8601TimestampToDateValueTransformer]]; + [RKDefaultValueTransformer addValueTransformer:[self timeIntervalSince1970ToDateValueTransformer]]; + + // The latter three date format strings below represent the three + // date formats specified by the HTTP/1.1 protocol. See + // http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1 + // for details + NSArray *defaultDateFormatStrings = @[ + @"MM/dd/yyyy", + @"yyyy-MM-dd", + @"EEE, dd MMM yyyy HH:mm:ss zzz", // RFC 1123 + @"EEEE, dd-MMM-yy HH:mm:ss zzz", // RFC 850 + @"EEE MMM d HH:mm:ss yyyy" // ANSI C asctime() + ]; + for (NSString *dateFormatString in defaultDateFormatStrings) { + NSDateFormatter *dateFormatter = [NSDateFormatter new]; + dateFormatter.dateFormat = dateFormatString; + dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; + dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; + [RKDefaultValueTransformer addValueTransformer:dateFormatter]; + } + } + }); + return RKDefaultValueTransformer; +} + ++ (void)setDefaultValueTransformer:(RKCompoundValueTransformer *)compoundValueTransformer +{ + RKDefaultValueTransformerOnceToken = 0; // resets the once_token so dispatch_once will run again + RKDefaultValueTransformer = compoundValueTransformer; +} + +@end + +@interface RKBlockValueTransformer () +@property (nonatomic, copy) BOOL (^validationBlock)(Class, Class); +@property (nonatomic, copy) BOOL (^transformationBlock)(id, id *, Class, NSError **); +@end + +@implementation RKBlockValueTransformer + ++ (instancetype)valueTransformerWithValidationBlock:(BOOL (^)(Class sourceClass, Class destinationClass))validationBlock + transformationBlock:(BOOL (^)(id inputValue, id *outputValue, Class outputClass, NSError **error))transformationBlock +{ + if (! transformationBlock) [NSException raise:NSInvalidArgumentException format:@"The `transformationBlock` cannot be `nil`."]; + RKBlockValueTransformer *valueTransformer = [self new]; + valueTransformer.validationBlock = validationBlock; + valueTransformer.transformationBlock = transformationBlock; + return valueTransformer; +} + +#pragma mark RKValueTransforming + +- (BOOL)transformValue:(id)inputValue toValue:(__autoreleasing id *)outputValue ofClass:(Class)outputValueClass error:(NSError *__autoreleasing *)error +{ + NSError *blockError = nil; + BOOL success = self.transformationBlock(inputValue, outputValue, outputValueClass, &blockError); + if (error) *error = blockError; + return success; +} + +- (BOOL)validateTransformationFromClass:(Class)sourceClass toClass:(Class)destinationClass +{ + if (self.validationBlock) return self.validationBlock(sourceClass, destinationClass); + else return YES; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p, name: %@>", NSStringFromClass([self class]), self, self.name]; +} + +@end + +@interface RKCompoundValueTransformer () +@property (nonatomic, strong) NSMutableArray *valueTransformers; +@property (nonatomic, strong) NSMutableDictionary *transformerCache; +@property (nonatomic) dispatch_queue_t cacheQueue; +@end + +@implementation RKCompoundValueTransformer + ++ (instancetype)compoundValueTransformerWithValueTransformers:(NSArray *)valueTransformers +{ + if (! valueTransformers) [NSException raise:NSInvalidArgumentException format:@"`valueTransformers` argument cannot be `nil`."]; + for (id valueTransformer in valueTransformers) { + if (! [valueTransformer conformsToProtocol:@protocol(RKValueTransforming)]) { + [NSException raise:NSInvalidArgumentException format:@"All objects in the given `valueTransformers` collection must conform to the `RKValueTransforming` protocol."]; + } + } + RKCompoundValueTransformer *valueTransformer = [self new]; + valueTransformer.valueTransformers = [valueTransformers mutableCopy]; + return valueTransformer; +} + +- (id)init +{ + self = [super init]; + if (self) { + self.valueTransformers = [NSMutableArray new]; + self.transformerCache = [NSMutableDictionary new]; + self.cacheQueue = dispatch_queue_create("org.restkit.value-transformer.compound-cache", DISPATCH_QUEUE_CONCURRENT); + } + return self; +} + +- (void)dealloc +{ +#if !OS_OBJECT_USE_OBJC + if (_cacheQueue) dispatch_release(_cacheQueue); +#endif + _cacheQueue = NULL; +} + +- (void)invalidateCache +{ + dispatch_barrier_sync(self.cacheQueue, ^{ + [self.transformerCache removeAllObjects]; + }); +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p, valueTransformers=%@>", NSStringFromClass([self class]), self, self.valueTransformers]; +} + +- (void)addValueTransformer:(id)valueTransformer +{ + if (! valueTransformer) [NSException raise:NSInvalidArgumentException format:@"Cannot add `nil` to a compound transformer."]; + [self.valueTransformers addObject:valueTransformer]; + [self invalidateCache]; +} + +- (void)removeValueTransformer:(id)valueTransformer +{ + if (! valueTransformer) [NSException raise:NSInvalidArgumentException format:@"Cannot remove `nil` from a compound transformer."]; + [self.valueTransformers removeObject:valueTransformer]; + [self invalidateCache]; +} + +- (void)insertValueTransformer:(id)valueTransformer atIndex:(NSUInteger)index +{ + if (! valueTransformer) [NSException raise:NSInvalidArgumentException format:@"Cannot insert `nil` into a compound transformer."]; + [self removeValueTransformer:valueTransformer]; + [self.valueTransformers insertObject:valueTransformer atIndex:index]; +} + +- (NSUInteger)numberOfValueTransformers +{ + return [self.valueTransformers count]; +} + +- (NSArray *)valueTransformersForTransformingFromClass:(Class)sourceClass toClass:(Class)destinationClass +{ + if (sourceClass == Nil && destinationClass == Nil) return [self.valueTransformers copy]; + else if (sourceClass == Nil || destinationClass == Nil) [NSException raise:NSInvalidArgumentException format:@"If you specify a source or destination class then you must specify both."]; + + /* See if we have cached values */ + __block NSArray *transformers; + dispatch_sync(self.cacheQueue, ^{ + transformers = [[[self transformerCache] objectForKey:(id)sourceClass] objectForKey:(id)destinationClass]; + }); + + if (transformers != nil) return transformers; + + NSMutableArray *matchingTransformers = [[NSMutableArray alloc] initWithCapacity:[self.valueTransformers count]]; + for (RKValueTransformer *valueTransformer in self) { + if (! [valueTransformer respondsToSelector:@selector(validateTransformationFromClass:toClass:)] + || [valueTransformer validateTransformationFromClass:sourceClass toClass:destinationClass]) { + [matchingTransformers addObject:valueTransformer]; + } + } + + transformers = [matchingTransformers copy]; + dispatch_barrier_sync(self.cacheQueue, ^{ + NSMutableDictionary *cache = self.transformerCache; + NSMutableDictionary *sourceDict = [cache objectForKey:sourceClass]; + if (sourceDict == nil) + { + sourceDict = [NSMutableDictionary new]; + [cache setObject:sourceDict forKey:(id)sourceClass]; + } + + [sourceDict setObject:transformers forKey:(id)destinationClass]; + }); + + return transformers; +} + +- (id)objectAtIndexedSubscript:(NSUInteger)index +{ + return [self.valueTransformers objectAtIndex:index]; +} + +#pragma mark RKValueTransforming + +- (BOOL)transformValue:(id)inputValue toValue:(__autoreleasing id *)outputValue ofClass:(__unsafe_unretained Class)outputValueClass error:(NSError *__autoreleasing *)error +{ + NSArray *matchingTransformers = [self valueTransformersForTransformingFromClass:[inputValue class] toClass:outputValueClass]; + NSMutableArray *errors; + NSError *underlyingError = nil; + for (id valueTransformer in matchingTransformers) { + BOOL success = [valueTransformer transformValue:inputValue toValue:outputValue ofClass:outputValueClass error:&underlyingError]; + if (success) return YES; + if (errors == nil) errors = [NSMutableArray new]; + [errors addObject:underlyingError]; + } + + if (errors.count > 0) { + errors = errors ?: (id)[NSArray new]; + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: [NSString stringWithFormat:@"Failed transformation of value '%@' to %@: none of the %lu value transformers consulted were successful.", inputValue, outputValueClass, (unsigned long)[matchingTransformers count]], RKValueTransformersDetailedErrorsKey: errors }; + *error = [NSError errorWithDomain:RKValueTransformersErrorDomain code:RKValueTransformationErrorTransformationFailed userInfo:userInfo]; + } + return NO; +} + +- (BOOL)validateTransformationFromClass:(Class)sourceClass toClass:(Class)destinationClass +{ + return [[self valueTransformersForTransformingFromClass:sourceClass toClass:destinationClass] count] > 0; +} + +#pragma mark NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + RKCompoundValueTransformer *compoundValueTransformer = [[[self class] allocWithZone:zone] init]; + compoundValueTransformer.valueTransformers = [self.valueTransformers mutableCopy]; + return compoundValueTransformer; +} + +#pragma mark NSFastEnumeration + +- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id __unsafe_unretained [])buffer count:(NSUInteger)len +{ + return [self.valueTransformers countByEnumeratingWithState:state objects:buffer count:len]; +} + +@end + +@implementation NSNumberFormatter (RKValueTransformers) + +- (BOOL)validateTransformationFromClass:(Class)inputValueClass toClass:(Class)outputValueClass +{ + return (([inputValueClass isSubclassOfClass:[NSNumber class]] && [outputValueClass isSubclassOfClass:[NSString class]]) || + ([inputValueClass isSubclassOfClass:[NSString class]] && [outputValueClass isSubclassOfClass:[NSNumber class]])); +} + +- (BOOL)transformValue:(id)inputValue toValue:(id *)outputValue ofClass:(Class)outputValueClass error:(NSError **)error +{ + RKValueTransformerTestInputValueIsKindOfClass(inputValue, (@[ [NSString class], [NSNumber class] ]), error); + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, (@[ [NSString class], [NSNumber class] ]), error); + if ([inputValue isKindOfClass:[NSString class]]) { + NSString *errorDescription = nil; + BOOL success = [self getObjectValue:outputValue forString:inputValue errorDescription:&errorDescription]; + RKValueTransformerTestTransformation(success, error, @"%@", errorDescription); + } else if ([inputValue isKindOfClass:[NSNumber class]]) { + *outputValue = [self stringFromNumber:inputValue]; + } + return YES; +} + +@end + +@implementation NSDateFormatter (RKValueTransformers) + +- (BOOL)validateTransformationFromClass:(Class)inputValueClass toClass:(Class)outputValueClass +{ + return (([inputValueClass isSubclassOfClass:[NSDate class]] && [outputValueClass isSubclassOfClass:[NSString class]]) || + ([inputValueClass isSubclassOfClass:[NSString class]] && [outputValueClass isSubclassOfClass:[NSDate class]])); +} + +- (BOOL)transformValue:(id)inputValue toValue:(id *)outputValue ofClass:(Class)outputValueClass error:(NSError **)error +{ + RKValueTransformerTestInputValueIsKindOfClass(inputValue, (@[ [NSString class], [NSDate class] ]), error); + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, (@[ [NSString class], [NSDate class] ]), error); + if ([inputValue isKindOfClass:[NSString class]]) { + NSString *errorDescription = nil; + BOOL success = [self getObjectValue:outputValue forString:inputValue errorDescription:&errorDescription]; + RKValueTransformerTestTransformation(success, error, @"%@", errorDescription); + } else if ([inputValue isKindOfClass:[NSDate class]]) { + *outputValue = [self stringFromDate:inputValue]; + } + return YES; +} + +@end diff --git a/Unit-2-Journal/Pods/RKValueTransformers/LICENSE b/Unit-2-Journal/Pods/RKValueTransformers/LICENSE new file mode 100644 index 0000000..37ec93a --- /dev/null +++ b/Unit-2-Journal/Pods/RKValueTransformers/LICENSE @@ -0,0 +1,191 @@ +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: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +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 +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/Unit-2-Journal/Pods/RKValueTransformers/README.md b/Unit-2-Journal/Pods/RKValueTransformers/README.md new file mode 100644 index 0000000..0480db0 --- /dev/null +++ b/Unit-2-Journal/Pods/RKValueTransformers/README.md @@ -0,0 +1,209 @@ +RKValueTransformers +=================== + +[![Build Status](http://img.shields.io/travis/RestKit/RKValueTransformers/master.svg?style=flat)](https://travis-ci.org/RestKit/RKValueTransformers) +![Pod Version](http://cocoapod-badges.herokuapp.com/v/RKValueTransformers/badge.png) +![Pod Platform](http://cocoapod-badges.herokuapp.com/p/RKValueTransformers/badge.png) + +**A simple, powerful Objective-C value transformation API extracted from RestKit** + +RKValueTransformers is a standalone library that provides a simple value transformation API in Objective-C. Value transformation is the process of converting a value between representations and is a core part of any system that requires that data be transmitted and received in a serialization format distinct from the local data model. + +In the general context of a RESTful API this means the transformation between values encoded in an XML or JSON document and local attributes of your data model. The most familiar and obvious example is the transformation of date and time data encoded as a string in a JSON document and represented locally as an `NSDate` attribute of an `NSObject` or `NSManagedObject` derived class. RKValueTransformers provides a simple, well-designed API for generalizing and simplifying the task of handling an arbitrarily complex set of value transformation requirements for your iOS or Mac OS X application. + +Value transformation is a core feature of [RestKit](http://github.com/RestKit/RestKit) and RKValueTransformers was extracted from the parent project to benefit the larger Cocoa development community. If you are looking for a comprehensive solution for your RESTful API needs then be sure to give RestKit a closer look. + +### Features + +RKValueTransformers is a "batteries included" library that ships with value transformers handling the most common transformations. The core set of transformers can be customized and new transformers are easily implemented to meet the needs of any application. + +* Includes a rich set of transformers covering the most common transformations: + * `NSString` <-> `NSURL` + * `NSNumber` <-> `NSString` + * `NSArray` <-> `NSOrderedSet` + * `NSArray` <-> `NSSet` + * `NSDecimalNumber` <-> `NSNumber` + * `NSDecimalNumber` <-> `NSString` + * `NSNull` <-> `nil` + * Any class conforming to `NSCoding` <-> `NSData` + * UNIX Time Interval encoded as `NSNumber` or `NSString` <-> `NSDate` + * ISO 8601 Timestamp strings <-> `NSDate` (Only supports complete timestamp strings. On 32 bit systems such as iOS devices pre-iPhone 5s only years < 2038 are supported) + * Any object implementing `stringValue` -> `NSString` + * Any singular object to a collection (`NSArray`, `NSSet`, `NSOrderedSet` and their mutable counterparts) + * Any object and an `NSDictionary` (object becomes a key for empty nested dictionary) + * Any class conforming to `NSMutableCoding` -> mutable representation of itself + * `NSString` <-> `NSDate` via `NSDateFormatter`. Default formats include: + * RFC 1123 format + * RFC 850 format + * ANSI C's asctime() format + * `NSString` <-> `NSNumber` via `NSNumberFormatter` +* Lightweight. Implemented in a single pair or header and implementation files. +* Fully unit tested and documented. +* Extensible by implementing the `RKValueTransforming` protocol, subclassing `RKValueTransformer` or with blocks via `RKBlockValueTransformer`. +* Multiple value transformers can be assembled into a composite transformer via the `RKCompoundValueTransformer` class. +* Transparently improves date transformation performance by providing a cache of date formatters. +* Fully integrated with RestKit. + +## Examples + +All value transformation is performed via an abstract common interface defined by the `RKValueTransforming` protocol: + +```objc +NSString *stringContainingDecimalNumber = @"3.4593895835"; +NSError *error = nil; +NSDecimalNumber *decimalNumber = nil; +BOOL success = [[RKValueTransformers decimalNumberToStringValueTransformer] transformValue:stringContainingDecimalNumber toValue:&decimalNumber ofClass:[NSDecimalNumber class] error:&error]; +``` + +The `transformValue:toValue:ofClass:error:` method is always the same regardless of the implementation details of the underlying transformation. It is guaranteed to always return a Boolean value indicating if the transformation was successful and value transformers **must** return an `NSError` in the event the transformation could not be performed. + +### Validating a Transformation + +In many cases, whether or not a given transformation can be performed can be determined entirely by the types involved in the transformation. In these cases, a value transformer may implement the optional `RKValueTransforming` method `validateTransformationFromClass:(Class)inputValueClass toClass:(Class)outputValueClass`: + +```objc +BOOL isTransformationPossible = [[RKValueTransformers arrayToSetValueTransformer] validateTransformationFromClass:[NSSet class] toClass:[NSArray class]]; +NSAssert(isTransformationPossible == YES, @"Should be `YES`"); +isTransformationPossible = [[RKValueTransformers arrayToSetValueTransformer] validateTransformationFromClass:[NSSet class] toClass:[NSData class]]; +NSAssert(isTransformationPossible == NO, @"Should be `NO`"); +``` + +Note that as this is an optional method you must check that a given instance responds to the validation selector. If it does not then the transformation cannot be validated and a transformation must be attempted to determine success or failure. + +### Compound Transformers + +Individual transformers are very convenient -- they abstract away the need to remember how to implement a given transformation and present a simple interface for transformations. But the real power of RKValueTransformers emerges when you assemble a collection of value transformers into a compound transformer via the `RKCompoundValueTransformer` class. Compound value transformers also implement the `RKValueTransforming` protocol -- but instead of providing any value transformation and validation themselves they proxy the calls to a collection of underlying value transformers in programmer defined order. This allows you to configure a set of transformers in a specific order such that the first transformer that is capable of performing a given transformation will handle it. + +Consider for example that a given application may interact with several API's that return dates as strings in several different formats. We wish to be able to transform any given string value into an `NSDate` without worrying about the details. We could configure a compound transformer to handle this task like so: + +```objc +NSArray *dateFormats = @[ @"MM/dd/yyyy", @"yyyy-MM-dd'T'HH:mm:ss'Z'", @"yyyy-MM-dd" ]; +RKCompoundValueTransformer *compoundValueTransformer = [RKCompoundValueTransformer new]; +for (NSString *dateFormat in dateFormats) { + NSDateFormatter *dateFormatter = [NSDateFormatter new]; + dateFormatter.dateFormat = dateFormat; + [compoundValueTransformer addValueTransformer:dateFormatter]; +} + +[compoundValueTransformer addValueTransformer:[RKValueTransformer timeIntervalSince1970ToDateValueTransformer]]; + +NSArray *dateStrings = @[ @"11/27/1982", @"1378767519.18176508", @"2013-11-27", @"2013-04-23T16:29:05Z" ]; +NSError *error = nil; +for (NSString *dateString in dateStrings) { + NSDate *date = nil; + BOOL success = [compoundValueTransformer transformValue:dateString toValue:&date ofClass:[NSDate class]]; + NSLog(@"Transformed value '%@' to value '%@' successfully=%@, error=%@", dateString, date, success ? @"YES" : @"NO", error); +} +``` + +### Block Value Transformers + +RKValueTransformers supports the creation of ad-hoc value transformer instances implemented via blocks. For example, one could implement a value transformer that turns all `NSString` instances into uppercase strings like so: + +```objc +RKValueTransformer *uppercaseStringTransformer = [RKBlockValueTransformer valueTransformerWithValidationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) { + // We transform a `NSString` into another `NSString` + return ([sourceClass isSubclassOfClass:[NSString class]] && [destinationClass isSubclassOfClass:[NSString class]]); +} transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, Class outputValueClass, NSError *__autoreleasing *error) { + // Validate the input and output + RKValueTransformerTestInputValueIsKindOfClass(inputValue, [NSString class], error); + RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, [NSString class], error); + + // Perform the transformation + *outputValue = [(NSString *)inputValue uppercaseString]; + return YES; +}]; +``` + +## Installation + +RKValueTransformers is extremely lightweight and has no direct dependencies outside of the Cocoa Foundation framework. As such, the library can be trivially be installed into any Cocoa project by directly adding the source code. Despite this fact, we recommend installing via CocoaPods as it provides modularity and enables the easy installation of new value transformers that are dependent on RKValueTransformers itself. + +### Via CocoaPods + +The recommended approach for installing RKValueTransformers is via the [CocoaPods](http://cocoapods.org/) package manager, as it provides flexible dependency management and dead simple installation. For best results, it is recommended that you install via CocoaPods **>= 0.24.0** using Git **>= 1.8.0** installed via Homebrew. + +Install CocoaPods if not already available: + +``` bash +$ [sudo] gem install cocoapods +$ pod setup +``` + +Change to the directory of your Xcode project, and Create and Edit your Podfile and add RKValueTransformers: + +``` bash +$ cd /path/to/MyProject +$ touch Podfile +$ edit Podfile +platform :ios, '5.0' +# Or platform :osx, '10.7' +pod 'RKValueTransformers', '~> 1.0.0' +``` + +Install into your project: + +``` bash +$ pod install +``` + +Open your project in Xcode from the .xcworkspace file (not the usual project file) + +``` bash +$ open MyProject.xcworkspace +``` + +### Via Source Code + +Simply add `RKValueTransformers.h` and `RKValueTransformers.m` to your project and `#import "RKValueTransformers.h"`. + +## Design & Implementation Details + +RKValueTransformers is designed to be simple to integrate and use. The entire library consists of a single protocol, three classes, and a handful of category implementations: + +* `RKValueTransforming` - Defines the value transformation API. Adopted by any class that wishes to act as a value transformer. +* `RKValueTransformer` - An abstract base class that implements `RKValueTransforming`. The base class includes static accessors for retrieving singleton instances of the bundled value transformers. Extension libraries can subclass `RKValueTransformer` to provide new transformers. +* `RKBlockValueTransformer` - A concrete subclass of `RKValueTransformer` that enables the creation of ad-hoc value transformers defined via blocks. +* `RKCompoundValueTransformer` - A concrete implementation of `RKValueTransforming` that proxies calls to an underlying collection of value transformers and provides support for composing value transformers. + +For those implementing value transformers, a few macros are included to simplify the implementation of validation and transformation methods: + +* `RKValueTransformerTestInputValueIsKindOfClass` - Tests that a given input value is an instance of a given class or one of its subclasses. If the test evaluates negatively, then `NO` is returned and an appropriate `NSError` is emitted. +* `RKValueTransformerTestOutputValueClassIsSubclassOfClass` - Tests that a given output value class is equal to a given class or is a subclass there of. If the test evaluates negatively, then `NO` is returned an appropriate `NSError` is emitted. +* `RKValueTransformerTestTransformation` - Tests that a given transformation was successful. If the test evaluates negatively, then `NO` is returned an appropriate `NSError` is emitted. + +### Why not NSValueTransformer? + +In developing RKValueTransformers we looked closely at `NSValueTransformer` and ultimately determined that it was not a great fit for our needs. Specifically we found the following issues: + +1. `NSValueTransformer` defines a notion of 'forward' and 'reverse' transformation that doesn't map cleanly in a system primarilly concerned with type transformations. Which side do you consider forward? This gets worse when you consider transformations that can occur between more than just two types. +2. `NSValueTransformer` exposes the class of the "output" object via the class method `transformedValueClass`. This becomes annoying as you are forced to use inheritance to express type knowledge. This necessitates directly inheriting from `NSValueTransformer` or using fancy run-time hackery such as that [utilized by TransformerKit](https://github.com/mattt/TransformerKit/blob/master/TransformerKit/NSValueTransformer%2BTransformerKit.m). +3. `NSValueTransformer` exposes a single global name based registry for value transformers via the `setValueTransformer:forName:` and `valueTransformerForName:` methods. Ultimately this is not granular enough to provide necessary flexibility and requires the use of names (as opposed to type information) to look up transformers. + +Given all of the above it just made sense to go back to a clean slate and design a solution to the value transformation problem from scratch. + +## Unit Tests + +RKValueTransformers is tested using the [Expecta](https://github.com/specta/Expecta) library of unit testing matchers. In order to run the tests, you must do the following: + +1. Install the dependencies via CocoaPods: `pod install` +1. Open the workspace: `open RKValueTransformers.xcworkspace` +1. Run the specs via the **Product** menu > **Test** + +## Credits + +Blake Watters + +- http://github.com/blakewatters +- http://twitter.com/blakewatters +- blakewatters@gmail.com + +Samuel E. Giddins + +- https://github.com/segiddins +- http://twitter.com/segiddins +- segiddins@segiddins.me + +## License + +RKValueTransformers is available under the Apache 2 License. See the LICENSE file for more info. diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network.h b/Unit-2-Journal/Pods/RestKit/Code/Network.h new file mode 100644 index 0000000..53d34a5 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network.h @@ -0,0 +1,34 @@ +// +// Network.h +// RestKit +// +// Created by Blake Watters on 9/30/10. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKRoute.h" +#import "RKRouteSet.h" +#import "RKRouter.h" +#import "RKRequestDescriptor.h" +#import "RKResponseDescriptor.h" +#import "RKObjectManager.h" +#import "RKHTTPUtilities.h" +#import "RKObjectRequestOperation.h" +#import "RKObjectParameterization.h" +#import "RKPathMatcher.h" + +#ifdef _COREDATADEFINES_H +#import "RKManagedObjectRequestOperation.h" +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKHTTPRequestOperation.h b/Unit-2-Journal/Pods/RestKit/Code/Network/RKHTTPRequestOperation.h new file mode 100644 index 0000000..f18d9f2 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKHTTPRequestOperation.h @@ -0,0 +1,60 @@ +// +// RKHTTPRequestOperation.h +// RestKit +// +// Created by Blake Watters on 8/7/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "AFHTTPClient.h" +#import "AFHTTPRequestOperation.h" + +// Expose the default headers from AFNetworking's AFHTTPClient +@interface AFHTTPClient () +@property (readonly, nonatomic) NSDictionary *defaultHeaders; +@end + +/** + The `RKHTTPRequestOperation` class is a subclass of `AFHTTPRequestOperation` for HTTP or HTTPS requests made by RestKit. It provides per-instance configuration of the acceptable status codes and content types and integrates with the `RKLog` system to provide detailed requested and response logging. Instances of `RKHTTPRequest` are created by `RKObjectRequestOperation` and its subclasses to HTTP requests that will be object mapped. When used to make standalone HTTP requests, `RKHTTPRequestOperation` instance behave identically to `AFHTTPRequestOperation` with the exception of emitting logging information. + + ## Determining Request Processability + + The `RKHTTPRequestOperation` class diverges from the behavior of `AFHTTPRequestOperation` in the implementation of `canProcessRequest`, which is used to determine if a request can be processed. Because `RKHTTPRequestOperation` handles Content Type and Status Code acceptability at the instance rather than the class level, it by default returns `YES` when sent a `canProcessRequest:` method. Subclasses are encouraged to implement more specific logic if constraining the type of requests handled is desired. + */ +@interface RKHTTPRequestOperation : AFHTTPRequestOperation + +///------------------------------------------------------------ +/// @name Configuring Acceptable Status Codes and Content Types +///------------------------------------------------------------ + +/** + The set of status codes which the operation considers successful. + + When `nil`, the acceptability of status codes is deferred to the superclass implementation. + + **Default**: `nil` + */ +@property (nonatomic, strong) NSIndexSet *acceptableStatusCodes; + +/** + The set of content types which the operation considers successful. + + The set may contain `NSString` or `NSRegularExpression` objects. When `nil`, the acceptability of content types is deferred to the superclass implementation. + + **Default**: `nil` + */ +@property (nonatomic, strong) NSSet *acceptableContentTypes; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKHTTPRequestOperation.m b/Unit-2-Journal/Pods/RestKit/Code/Network/RKHTTPRequestOperation.m new file mode 100644 index 0000000..8b6f6af --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKHTTPRequestOperation.m @@ -0,0 +1,139 @@ +// +// RKHTTPRequestOperation.m +// RestKit +// +// Created by Blake Watters on 8/7/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKHTTPRequestOperation.h" +#import "RKLog.h" +#import "lcl_RK.h" +#import "RKHTTPUtilities.h" +#import "RKMIMETypes.h" + +extern NSString * const RKErrorDomain; + +// Set Logging Component +#undef RKLogComponent +#define RKLogComponent RKlcl_cRestKitNetwork + +NSString *RKStringFromIndexSet(NSIndexSet *indexSet); // Defined in RKResponseDescriptor.m + +static BOOL RKResponseRequiresContentTypeMatch(NSHTTPURLResponse *response, NSURLRequest *request) +{ + if (RKRequestMethodFromString(request.HTTPMethod) == RKRequestMethodHEAD) return NO; + if ([RKStatusCodesOfResponsesWithOptionalBodies() containsIndex:response.statusCode]) return NO; + return YES; +} + +@interface AFURLConnectionOperation () +@property (readwrite, nonatomic, strong) NSRecursiveLock *lock; +@end + +@interface RKHTTPRequestOperation () +@property (readwrite, nonatomic, strong) NSError *rkHTTPError; +@end + +@implementation RKHTTPRequestOperation + ++ (BOOL)canProcessRequest:(NSURLRequest *)request +{ + return YES; +} + +// Disable class level Content/Status Code inspection in our superclass ++ (NSSet *)acceptableContentTypes +{ + return nil; +} + ++ (NSIndexSet *)acceptableStatusCodes +{ + return nil; +} + +- (BOOL)hasAcceptableStatusCode +{ + if (! self.response) return NO; + NSUInteger statusCode = ([self.response isKindOfClass:[NSHTTPURLResponse class]]) ? (NSUInteger)[self.response statusCode] : 200; + return self.acceptableStatusCodes ? [self.acceptableStatusCodes containsIndex:statusCode] : [super hasAcceptableStatusCode]; +} + +- (BOOL)hasAcceptableContentType +{ + if (! self.response) return NO; + if (!RKResponseRequiresContentTypeMatch(self.response, self.request)) return YES; + NSString *contentType = [self.response MIMEType] ?: @"application/octet-stream"; + return self.acceptableContentTypes ? RKMIMETypeInSet(contentType, self.acceptableContentTypes) : [super hasAcceptableContentType]; +} + +// NOTE: We reimplement this because the AFNetworking implementation keeps Acceptable Status Code/MIME Type at class level +- (NSError *)error +{ + [self.lock lock]; + + if (!self.rkHTTPError && self.response) { + if (![self hasAcceptableStatusCode] || ![self hasAcceptableContentType]) { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + [userInfo setValue:self.responseString forKey:NSLocalizedRecoverySuggestionErrorKey]; + [userInfo setValue:[self.request URL] forKey:NSURLErrorFailingURLErrorKey]; + [userInfo setValue:self.request forKey:AFNetworkingOperationFailingURLRequestErrorKey]; + [userInfo setValue:self.response forKey:AFNetworkingOperationFailingURLResponseErrorKey]; + + if (![self hasAcceptableStatusCode]) { + NSUInteger statusCode = ([self.response isKindOfClass:[NSHTTPURLResponse class]]) ? (NSUInteger)[self.response statusCode] : 200; + [userInfo setValue:[NSString stringWithFormat:NSLocalizedString(@"Expected status code in (%@), got %d", nil), RKStringFromIndexSet(self.acceptableStatusCodes ?: [NSMutableIndexSet indexSet]), statusCode] forKey:NSLocalizedDescriptionKey]; + self.rkHTTPError = [[NSError alloc] initWithDomain:RKErrorDomain code:NSURLErrorBadServerResponse userInfo:userInfo]; + } else if (![self hasAcceptableContentType] && self.response.statusCode != 204) { + // NOTE: 204 responses come back as text/plain, which we don't want + [userInfo setValue:[NSString stringWithFormat:NSLocalizedString(@"Expected content type %@, got %@", nil), self.acceptableContentTypes, [self.response MIMEType]] forKey:NSLocalizedDescriptionKey]; + self.rkHTTPError = [[NSError alloc] initWithDomain:RKErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:userInfo]; + } + } + } + + NSError *error = self.rkHTTPError ?: [super error]; + [self.lock unlock]; + return error; +} + +#pragma mark - NSURLConnectionDelegate methods + +- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge +{ + [super connection:connection didReceiveAuthenticationChallenge:challenge]; + + RKLogDebug(@"Received authentication challenge"); +} + +- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse +{ + if ([AFHTTPRequestOperation instancesRespondToSelector:@selector(connection:willSendRequest:redirectResponse:)]) { + NSURLRequest *returnValue = [super connection:connection willSendRequest:request redirectResponse:redirectResponse]; + if (returnValue) { + if (redirectResponse) RKLogDebug(@"Following redirect request: %@", returnValue); + return returnValue; + } else { + RKLogDebug(@"Not following redirect to %@", request); + return nil; + } + } else { + if (redirectResponse) RKLogDebug(@"Following redirect request: %@", request); + return request; + } +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKManagedObjectRequestOperation.h b/Unit-2-Journal/Pods/RestKit/Code/Network/RKManagedObjectRequestOperation.h new file mode 100644 index 0000000..c677e98 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKManagedObjectRequestOperation.h @@ -0,0 +1,209 @@ +// +// RKManagedObjectRequestOperation.h +// RestKit +// +// Created by Blake Watters on 8/9/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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. +// + +#ifdef _COREDATADEFINES_H +#if __has_include("RKManagedObjectCaching.h") + +#import "RKObjectRequestOperation.h" +#import "RKManagedObjectCaching.h" + +/** + `RKManagedObjectRequestOperation` is a subclass of `RKObjectRequestOperation` that implements object mapping on the response body of an `NSHTTPResponse` loaded via an `RKHTTPRequestOperation` in which the mapping targets `NSManagedObject` objects managed by Core Data. + + The `RKManagedObjectRequestOperation` class extends the basic behavior of an `RKObjectRequestOperation` to meet the constraints imposed by Core Data. In particular, managed object request operations observe the threading requirements by making use of `NSManagedObjectContext` concurrency types, leverage the support for parent/child contexts, and handle obtaining a permanent `NSManagedObjectID` for objects being mapped so that they are addressable across contexts. Object mapping is internally performed within a block provided to the target context via `performBlockAndWait:`, ensuring execution on the appropriate queue. + + Aside from providing the basic infrastructure for successful object mapping into Core Data, a number of additional Core Data specific features are provided by the `RKManagedObjectRequestOperation` class that warrant discussion in detail. + + ## Parent Context + + Every `RKManagedObjectRequestOperation` object must be assigned an `NSManagedObjectContext` in which to persist the results of the underlying object mapping operation. This context is used as the parent context for a new, private `NSManagedObjectContext` with a concurrency type of `NSPrivateQueueConcurrencyType` in which the object mapping is actually performed. The use of this parent context has a number of benefits: + + 1. If the context that was assigned to the managed object request operation has a concurrency type of `NSMainQueueConcurrencyType`, then directly mapping into the context would block the execution of the main thread for the duration of the mapping process. The use of the private child context isolates the mapping process from the main thread. + 1. In the event of an error, the private context can be discarded, leaving the state of the parent context unchanged. On successful completion, the private context is saved and 'pushes' its changes up one level into the parent context. + + ## Permanent Managed Object IDs + + One of the confounding factors when working with asycnhronous processes interacting with Core Data is the addressability of managed objects that have not been saved to the persistent store across contexts. Unpersisted `NSManagedObject` instances have an `objectID` that is temporary and unsuitable for use in uniquely addressing a given object across two managed object contexts, even if they have common ancestry and share a persistent store coordinator. To mitigate this addressability issue without requiring objects to be saved to the persistent store, managed object request operations invoke `obtainPermanentIDsForObjects:` on the operation's target object (if any) and all managed objects that were inserted into the context during the mapping process. By the time the operation finishes, all managed objects in the mapping result can be referenced by `objectID` across contexts with no further action. + + ## Identification Attributes & Managed Object Caching + + When object mapping managed objects it is necessary to differentiate between objects that already exist in the local store and those that are being created as part of the mapping process. This ensures that the local store does not become populated with duplicate records. To make this differentiation, RestKit requires that each `RKEntityMapping` be configured with one or more identification attributes. Each identification attribute must correspond to a static attribute assigned by the remote backend system. During mapping, these attributes are used to search the managed object context for an existing managed object. If one is found, the object is updated else a new object is created. Identification attributes are configured on the `[RKEntityMapping identificationAttributes]` property. + + Identification attributes are used in conjunction with the `RKManagedObjectCaching` protocol. Each managed object request operation is associated with an object conforming to the `RKManagedObjectCaching` protocol via the `managedObjectCache` proeprty. This cache is consulted during mapping to find existing objects and when establishing relationships between entities by one or more attributes. Please see the documentation accompanying `RKManagedObjectCaching` and `RKConnectionDescription` classes for more information. + + ## Deleting Managed Objects for `DELETE` requests + + `RKManagedObjectRequestOperation` adds special behavior to `DELETE` requests. Upon retrieving a successful (2xx status code) response for a `DELETE`, the operation will invoke `deleteObject:` with the operations `targetObject` on the managed object context. This will delete the target object from the local store in conjunction the successfully deleted remote representation. + + ## Fetch Request Blocks and Deleting Orphaned Objects + + A common problem when accessing remote resources representing collections of objects is the problem of deletion of remote objects. The `RKManagedObjectRequestOperation` class provides support for the cleanup of such orphaned objects. In order to utilize the functionality, the operation must be able to compare a set of reference objects to the retrieved payload in order to determine which objects exist in the local store, but are no longer being returned by the server. This reference set of objects is built by executing an `NSFetchRequest` that corresponds to the URL being loaded. Configuration of this fetch request is done via an `RKFetchRequestBlock` block object. This block takes a single `NSURL` argument and returns an `NSFetchRequest` object. An array of these blocks can be provided to the managed object request operation and the array will be searched in reverse order until a non-nil value is returned by a block. Any block that cannot build a fetch request for the given URL is expected to return `nil` to indicate that it does not match the given URL. Processing of the URL is typically performed using an `RKPathMatcher` object against the value returned from the `relativePath` or `relativeString` methods of `NSURL`. + + To illustrate this concept, please consider the following real-world example which builds a fetch request for retrieving the Terminals that exist in an Airport: + + RKObjectManager *manager = [RKObjectManager managerWithBaseURL:@"http://restkit.org"]; + [manager addFetchRequestBlock:^NSFetchRequest *(NSURL *URL) { + RKPathMatcher *pathMatcher = [RKPathMatcher pathMatcherWithPattern:@"/airports/:airport_id/terminals.json"]; + + NSDictionary *argsDict = nil; + BOOL match = [pathMatcher matchesPath:[URL relativePath] tokenizeQueryStrings:NO parsedArguments:&argsDict]; + NSString *airportID; + if (match) { + airportID = [argsDict objectForKey:@"airport_id"]; + NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Terminal"]; + fetchRequest.predicate = [NSPredicate predicateWithFormat:@"airportID = %@", @([airportID integerValue])]; // NOTE: Coerced from string to number + fetchRequest.sortDescriptors = @[ [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES] ]; + return fetchRequest; + } + + return nil; + }]; + + The above example code defines an `RKFetchRequestBlock` block object that will match an `NSURL` with a relative path matching the pattern `@"/airports/:airport_id/terminals.json"`. If a match is found, the block extracts the `airport_id` key from the matched arguments, coerces its value into a number, and uses it to construct an `NSPredicate` for the primary key attribute of `GGAirport` entity. Take note that the value of the 'airport_id' was coerced from an `NSString` to an `NSNumber` -- failure to so would result in a predicate whose value is equal to `airportID == '1234'` vs. `airportID == 1234`, which will prevent fetch requests from evaluating correctly. Once coerced, the value is used to construct a `NSFetchRequest` object for the `GGTerminal` entity that will retrieve all the managed objects with an airport ID attribute whose value is equal to `airport_id` encoded within the URL's path. + + In more concrete terms, given the URL `http://restkit.org/airports/1234/terminals.json` the block would return an `NSFetchRequest` equal to: + + NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Terminal"]; + fetchRequest.predicate = [NSPredicate predicateWithFormat:@"airportID = 1234"]; + fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]]; + + Once configured and registered with the object manager, any `RKManagedObjectRequestOperation` created through the manager will automatically consult the fetch request blocks and perform orphaned object cleanup. No cleanup is performed if no block in the `fetchRequestBlocks` property is found to match the URL of the request. + + ## Managed Object Context Save Behaviors + + The results of the operation can either be 'pushed' to the parent context or saved to the persistent store. Configuration is available via the `savesToPersistentStore` property. If an error is encountered while saving the managed object context, then the operation is considered to have failed and the `error` property will be set to the `NSError` object returned by the failed save. + + ## 304 'Not Modified' Responses + + In the event that a managed object request operation loads a 304 'Not Modified' response for an HTTP request no object mapping is performed as Core Data is assumed to contain a managed object representation of the resource requested. No object mapping is performed on the cached response body, making a cache hit for a managed object request operation a very lightweight operation. To build the mapping result returned to the caller, all of the fetch request blocks matching the request URL will be invoked and each fetch request returned is executed against the managed object context and the objects returned are added to the mapping result. Please note that all managed objects returned in the mapping result for a 'Not Modified' response will be returned under the `[NSNull null]` key path. + + Note that `NSURLConnection` supports conditional GET transparently when the cache policy is set to `NSURLRequestUseProtocolCachePolicy`. Because of this the `NSHTTPURLResponse` loaded does not have the 304 (Not Modified) status code. In order to determine if a 304 response has resulted in the loading of an existing response from `NSURLCache`, the managed object request operation evaluates the following heuristic on the response: + + 1. Before the HTTP request is loaded, a reference to any existing `NSCachedURLResponse` is obtained. + 1. When the response is loaded, the request is evaluated for cacheability. A request is considered cacheable if and only if its HTTP method is either "GET" or "HEAD" and its status code is 200, 304, 203, 300, 301, 302, 307, or 410. + 1. If the request is found to be cacheable, the Etag of the current response is matched against the reference to the existing cache entry obtained before the request was loaded. + 1. If the Etags match, the response data of the loaded response is matched against the cache entry reference. + 1. If the data is found to match, then the `userInfo` dictionary of the cache entry for the current request is checked for the existence of Boolean value under the `RKResponseHasBeenMappedCacheUserInfoKey` key. If the value of this key is `YES`, it indicates that the response was previously mapped to completion by an object request operation. + + If this heuristic evaluates positively, then the response is determined to have been loaded from the cache and no mapping or managed object deletion cleanup is performed. This optimization greatly improves performance in applications where HTTP caching is leveraged. + + ## Subclassing Notes + + This class relies on the following `RKMapperOperationDelegate` method methods to do its work: + + 1. `mapperDidFinishMapping:` + + If you subclass `RKManagedObjectRequestOperation` and implement any of the above methods then you must call the superclass implementation. + + ## Limitations and Caveats + + 1. `RKManagedObjectRequestOperation` **does NOT** support object mapping that targets an `NSManagedObjectContext` with a `concurrencyType` of `NSConfinementConcurrencyType`. + + @see `RKObjectRequestOperation` + @see `RKEntityMapping` + @see `RKManagedObjectResponseMapperOperation` + */ +@interface RKManagedObjectRequestOperation : RKObjectRequestOperation + +///---------------------------------------- +/// @name Configuring Core Data Integration +///---------------------------------------- + +/** + The managed object context associated with the managed object request operation. + + This context acts as the parent context for a private managed object context in which the object mapping is performed and changes will be saved to this context upon successful completion of the operation. + + Please see the above discussion about 'Parent Context' for details. + */ +@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext; + +/** + The managed object cache associated with the managed object request operation. + + The cache is used to look up existing objects by primary key to prevent the creation of duplicate objects during mapping. Please see the above discussion of 'Managed Object Caching' for more details. + + @warning A `nil` value for the `managedObjectCache` property is valid, but may result in the creation of duplicate objects. + */ +@property (nonatomic, strong) id managedObjectCache; + +/** + An array of `RKFetchRequestBlock` block objects used to map `NSURL` objects into corresponding `NSFetchRequest` objects. + + Fetch requests corresponding to URL's are used when deleting orphaned objects and completing object request operations in which `avoidsNetworkAccess` has been set to `YES`. Please see the above discussion of 'Fetch Request Blocks' for more details. + */ +@property (nonatomic, copy) NSArray *fetchRequestBlocks; + +///------------------------------------ +/// @name Managing Completion Behaviors +///------------------------------------ + +/** + A Boolean value that determines if the receiver will delete orphaned objects upon completion of the operation. + + Please see the above discussion of 'Deleting Managed Objects for `DELETE` requests' for more details. + + **Default**: `YES` + */ +@property (nonatomic, assign) BOOL deletesOrphanedObjects; + +/** + A Boolean value that determines if the operation saves the mapping results to the persistent store upon successful completion. If the network transport or mapping portions of the operation fail the operation then this option has no effect. + + When `YES`, the receiver will invoke `saveToPersistentStore:` on its private managed object context to persist the mapping results all the way back to the persistent store coordinator. If `NO`, the private mapping context will be saved causing the mapped objects to be 'pushed' to the parent context as represented by the `managedObjectContext` property. + + **Default**: `YES` + */ +@property (nonatomic, assign) BOOL savesToPersistentStore; + +/** + Sets a block to be invoked just before the operation saves the private mapping context. + + The mapping context is saved just before the object request operation completes its work and transitions into the finished state. All managed objects mapped during the operation will have permanent object ID's. The `mappingResult` will contain managed object instances local to the context yielded to the block. The block will be invoked synchronously on the private queue of the context. After the block is executed, the save operation will take place, optionally saving the mapping results back to the persistent store. + + @param block The block to execute just before the context is saved. + */ +- (void)setWillSaveMappingContextBlock:(void (^)(NSManagedObjectContext *mappingContext))block; + +@end + +/** + A block object for returning an `NSFetchRequest` suitable for fetching the managed objects that corresponds to the contents of the resource at the given URL. It accepts a single `NSURL` argument and returns an `NSFetchRequest`. + + `RKFetchRequestBlock` objects are used to identify objects that exist in the local persistent store, but have been removed from the server-side. Such orphaned objects can optionally be auto-removed by `RKManagedObjectRequestOperation` objects. + + A block that returns `nil` is considered not to match the given URL. + + @param URL The URL object to build a fetch request for. + @return An `NSFetchRequest` object corresponding to the given URL, or nil if the URL could not be processed. + */ +typedef NSFetchRequest *(^RKFetchRequestBlock)(NSURL *URL); + +/** + Returns an array of fetch request objects from an array of `RKFetchRequestBlock` objects given a URL. + + @param fetchRequestBlocks An array of `RKFetchRequestBlock` blocks to + @param URL The URL for which to return a fetch request. + @return An array of fetch requests from all blocks that match the given URL. + */ +NSArray *RKArrayOfFetchRequestFromBlocksWithURL(NSArray *fetchRequestBlocks, NSURL *URL); + +#endif +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKManagedObjectRequestOperation.m b/Unit-2-Journal/Pods/RestKit/Code/Network/RKManagedObjectRequestOperation.m new file mode 100644 index 0000000..498b157 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKManagedObjectRequestOperation.m @@ -0,0 +1,905 @@ +// +// RKManagedObjectRequestOperation.m +// RestKit +// +// Created by Blake Watters on 8/9/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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. +// + +#ifdef _COREDATADEFINES_H +#if __has_include("RKManagedObjectCaching.h") + +#import "RKManagedObjectRequestOperation.h" +#import "RKLog.h" +#import "RKHTTPUtilities.h" +#import "RKResponseMapperOperation.h" +#import "RKObjectRequestOperationSubclass.h" +#import "NSManagedObjectContext+RKAdditions.h" +#import "NSManagedObject+RKAdditions.h" +#import "RKObjectUtilities.h" + +// Graph visitor +#import "RKResponseDescriptor.h" +#import "RKEntityMapping.h" +#import "RKDynamicMapping.h" +#import "RKRelationshipMapping.h" + +// Set Logging Component +#undef RKLogComponent +#define RKLogComponent RKlcl_cRestKitNetworkCoreData + +@interface RKEntityMappingEvent : NSObject +@property (nonatomic, copy) id rootKey; +@property (nonatomic, copy) NSString *keyPath; +@property (nonatomic, strong) RKEntityMapping *entityMapping; + ++ (NSArray *)entityMappingEventsForMappingInfo:(NSDictionary *)mappingInfo; ++ (instancetype)eventWithRootKey:(id)rootKey keyPath:(NSString *)keyPath entityMapping:(RKEntityMapping *)entityMapping; +@end + +@implementation RKEntityMappingEvent + ++ (NSArray *)entityMappingEventsForMappingInfo:(NSDictionary *)mappingInfo +{ + NSMutableArray *entityMappingEvents = [NSMutableArray array]; + for (id rootKey in mappingInfo) { + NSArray *mappingInfoArray = mappingInfo[rootKey]; + for (RKMappingInfo *mappingInfo in mappingInfoArray) { + [entityMappingEvents addObjectsFromArray:[self entityMappingEventsWithMappingInfo:mappingInfo rootKey:rootKey keyPath:nil]]; + } + } + return entityMappingEvents; +} + ++ (NSArray *)entityMappingEventsWithMappingInfo:(RKMappingInfo *)mappingInfo rootKey:(id)rootKey keyPath:(NSString *)keyPath +{ + NSMutableArray *entityMappingEvents = [NSMutableArray array]; + if ([mappingInfo.objectMapping isKindOfClass:[RKEntityMapping class]]) { + [entityMappingEvents addObject:[RKEntityMappingEvent eventWithRootKey:rootKey + keyPath:keyPath + entityMapping:(RKEntityMapping *)mappingInfo.objectMapping]]; + } + + for (NSString *destinationKeyPath in mappingInfo.relationshipMappingInfo) { + NSString *nestedKeyPath = keyPath ? [@[ keyPath, destinationKeyPath] componentsJoinedByString:@"."] : destinationKeyPath; + NSArray *arrayOfMappingInfoForRelationship = (mappingInfo.relationshipMappingInfo)[destinationKeyPath]; + for (RKMappingInfo *mappingInfo in arrayOfMappingInfoForRelationship) { + [entityMappingEvents addObjectsFromArray:[self entityMappingEventsWithMappingInfo:mappingInfo rootKey:rootKey keyPath:nestedKeyPath]]; + } + } + return entityMappingEvents; +} + ++ (instancetype)eventWithRootKey:(id)rootKey keyPath:(NSString *)keyPath entityMapping:(RKEntityMapping *)entityMapping +{ + RKEntityMappingEvent *event = [RKEntityMappingEvent new]; + event.rootKey = rootKey; + event.keyPath = keyPath; + event.entityMapping = entityMapping; + return event; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p rootKey=%@ keyPath=%@ entityMapping=%@>", + [self class], self, self.rootKey, self.keyPath, self.entityMapping]; +} +@end + +/** + Returns the set of keys containing the outermost nesting keypath for all children. + For example, given a set containing: 'this', 'this.that', 'another.one.test', 'another.two.test', 'another.one.test.nested' + would return: 'this, 'another.one', 'another.two' + */ +NSSet *RKSetByRemovingSubkeypathsFromSet(NSSet *setOfKeyPaths); +NSSet *RKSetByRemovingSubkeypathsFromSet(NSSet *setOfKeyPaths) +{ + return [setOfKeyPaths objectsPassingTest:^BOOL(NSString *keyPath, BOOL *stop) { + if ([keyPath isEqual:[NSNull null]]) return YES; // Special case the root key path + NSArray *keyPathComponents = [keyPath componentsSeparatedByString:@"."]; + NSMutableSet *parentKeyPaths = [NSMutableSet set]; + for (NSUInteger index = 0; index < [keyPathComponents count] - 1; index++) { + [parentKeyPaths addObject:[[keyPathComponents subarrayWithRange:NSMakeRange(0, index + 1)] componentsJoinedByString:@"."]]; + } + for (NSString *parentKeyPath in parentKeyPaths) { + if ([setOfKeyPaths containsObject:parentKeyPath]) return NO; + } + return YES; + }]; +} + +// Precondition: Must be called from within the correct context +static NSManagedObject *RKRefetchManagedObjectInContext(NSManagedObject *managedObject, NSManagedObjectContext *managedObjectContext) +{ + NSManagedObjectID *managedObjectID = [managedObject objectID]; + if ([managedObjectID isTemporaryID]) { + RKLogWarning(@"Unable to refetch managed object %@: the object has a temporary managed object ID.", managedObject); + return managedObject; + } + NSError *error = nil; + NSManagedObject *refetchedObject = [managedObjectContext existingObjectWithID:managedObjectID error:&error]; + if (! refetchedObject) { + RKLogWarning(@"Failed to refetch managed object with ID %@: %@", managedObjectID, error); + } + return refetchedObject; +} + +static id RKRefetchedValueInManagedObjectContext(id value, NSManagedObjectContext *managedObjectContext) +{ + if (! value) { + return value; + } else if ([value isKindOfClass:[NSArray class]]) { + NSMutableArray *newValue = [[NSMutableArray alloc] initWithCapacity:[value count]]; + for (__strong id object in value) { + if ([object isKindOfClass:[NSManagedObject class]]) object = RKRefetchManagedObjectInContext(object, managedObjectContext); + if (object) [newValue addObject:object]; + } + return newValue; + } else if ([value isKindOfClass:[NSSet class]]) { + NSMutableSet *newValue = [[NSMutableSet alloc] initWithCapacity:[value count]]; + for (__strong id object in value) { + if ([object isKindOfClass:[NSManagedObject class]]) object = RKRefetchManagedObjectInContext(object, managedObjectContext); + if (object) [newValue addObject:object]; + } + return newValue; + } else if ([value isKindOfClass:[NSOrderedSet class]]) { + NSMutableOrderedSet *newValue = [NSMutableOrderedSet orderedSet]; + [(NSOrderedSet *)value enumerateObjectsUsingBlock:^(id object, NSUInteger index, BOOL *stop) { + if ([object isKindOfClass:[NSManagedObject class]]) object = RKRefetchManagedObjectInContext(object, managedObjectContext); + if (object) [newValue setObject:object atIndex:index]; + }]; + return newValue; + } else if ([value isKindOfClass:[NSManagedObject class]]) { + return RKRefetchManagedObjectInContext(value, managedObjectContext); + } + + return value; +} + +/** + This is an NSProxy object that stands in for the mapping result and provides support for refetching the results on demand. This enables us to defer the refetching until someone accesses the results directly. For managed object request operations that do not use the mapping result (such as those used in conjunction with a NSFetchedResultsController), the refetching will be skipped entirely. + */ +@interface RKRefetchingMappingResult : NSProxy + +- (instancetype)initWithMappingResult:(RKMappingResult *)mappingResult + managedObjectContext:(NSManagedObjectContext *)managedObjectContext + mappingInfo:(NSDictionary *)mappingInfo; +@end + +@interface RKRefetchingMappingResult () +@property (nonatomic, strong) RKMappingResult *mappingResult; +@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext; +@property (nonatomic, strong) NSDictionary *mappingInfo; +@property (nonatomic, assign) BOOL refetched; +@end + +@implementation RKRefetchingMappingResult + ++ (NSString *)description +{ + return [[super description] stringByAppendingString:@"_RKRefetchingMappingResult"]; +} + +/** + Add explicit ordering of deallocations to fight `cxx_destruct` crashes + */ +- (void)dealloc +{ + _mappingResult = nil; + _mappingInfo = nil; + _managedObjectContext = nil; +} + +- (instancetype)initWithMappingResult:(RKMappingResult *)mappingResult + managedObjectContext:(NSManagedObjectContext *)managedObjectContext + mappingInfo:(NSDictionary *)mappingInfo; +{ + self.mappingResult = mappingResult; + self.managedObjectContext = managedObjectContext; + self.mappingInfo = mappingInfo; + return self; +} + +- (NSMethodSignature *)methodSignatureForSelector:(SEL)selector +{ + return [self.mappingResult methodSignatureForSelector:selector]; +} + +- (void)forwardInvocation:(NSInvocation *)invocation +{ + if (! self.refetched) { + self.mappingResult = [self refetchedMappingResult]; + self.refetched = YES; + } + [invocation invokeWithTarget:self.mappingResult]; +} + +- (NSString *)description +{ + return [self.mappingResult description]; +} + +- (NSUInteger)count +{ + return [self.mappingResult count]; +} + +- (RKMappingResult *)refetchedMappingResult +{ + NSAssert(!self.refetched, @"Mapping result should only be refetched once"); + if (! [self.mappingResult count]) return self.mappingResult; + + NSMutableDictionary *newDictionary = [self.mappingResult.dictionary mutableCopy]; + [self.managedObjectContext performBlockAndWait:^{ + NSArray *entityMappingEvents = [RKEntityMappingEvent entityMappingEventsForMappingInfo:self.mappingInfo]; + NSSet *rootKeys = [NSSet setWithArray:[entityMappingEvents valueForKey:@"rootKey"]]; + for (id rootKey in rootKeys) { + NSArray *eventsForRootKey = [entityMappingEvents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"rootKey = %@", rootKey]]; + NSSet *keyPaths = [NSSet setWithArray:[eventsForRootKey valueForKey:@"keyPath"]]; + // If keyPaths contains null, then the root object is a managed object and we only need to refetch it + NSSet *nonNestedKeyPaths = ([keyPaths containsObject:[NSNull null]]) ? [NSSet setWithObject:[NSNull null]] : RKSetByRemovingSubkeypathsFromSet(keyPaths); + + NSDictionary *mappingResultsAtRootKey = newDictionary[rootKey]; + for (NSString *keyPath in nonNestedKeyPaths) { + id value = nil; + if ([keyPath isEqual:[NSNull null]]) { + value = RKRefetchedValueInManagedObjectContext(mappingResultsAtRootKey, self.managedObjectContext); + if (value) newDictionary[rootKey] = value; + } else { + NSMutableArray *keyPathComponents = [[keyPath componentsSeparatedByString:@"."] mutableCopy]; + NSString *destinationKey = [keyPathComponents lastObject]; + [keyPathComponents removeLastObject]; + id sourceObject = [keyPathComponents count] ? [mappingResultsAtRootKey valueForKeyPath:[keyPathComponents componentsJoinedByString:@"."]] : mappingResultsAtRootKey; + if (RKObjectIsCollection(sourceObject)) { + // This is a to-many relationship, we want to refetch each item at the keyPath + for (id nestedObject in sourceObject) { + // NOTE: If this collection was mapped with a dynamic mapping then each instance may not respond to the key + if ([nestedObject respondsToSelector:NSSelectorFromString(destinationKey)]) { + NSManagedObject *managedObject = [nestedObject valueForKey:destinationKey]; + [nestedObject setValue:RKRefetchedValueInManagedObjectContext(managedObject, self.managedObjectContext) forKey:destinationKey]; + } + } + } else { + // This is a singular relationship. We want to refetch the object and set it directly. + id valueToRefetch = [sourceObject valueForKey:destinationKey]; + [sourceObject setValue:RKRefetchedValueInManagedObjectContext(valueToRefetch, self.managedObjectContext) forKey:destinationKey]; + } + } + } + } + }]; + + return [[RKMappingResult alloc] initWithDictionary:newDictionary]; +} + +@end + +NSArray *RKArrayOfFetchRequestFromBlocksWithURL(NSArray *fetchRequestBlocks, NSURL *URL) +{ + NSMutableArray *fetchRequests = [NSMutableArray array]; + NSFetchRequest *fetchRequest = nil; + for (RKFetchRequestBlock block in [fetchRequestBlocks reverseObjectEnumerator]) { + fetchRequest = block(URL); + if (fetchRequest) [fetchRequests addObject:fetchRequest]; + } + return fetchRequests; +} + +static NSSet *RKFlattenCollectionToSet(id collection) +{ + NSMutableSet *mutableSet = [NSMutableSet set]; + if ([collection conformsToProtocol:@protocol(NSFastEnumeration)]) { + for (id nestedObject in collection) { + if ([nestedObject conformsToProtocol:@protocol(NSFastEnumeration)]) { + if ([nestedObject isKindOfClass:[NSArray class]]) { + [mutableSet unionSet:RKFlattenCollectionToSet([NSSet setWithArray:nestedObject])]; + } else if ([nestedObject isKindOfClass:[NSSet class]]) { + [mutableSet unionSet:RKFlattenCollectionToSet(nestedObject)]; + } else if ([nestedObject isKindOfClass:[NSOrderedSet class]]) { + [mutableSet unionSet:RKFlattenCollectionToSet([(NSOrderedSet *)nestedObject set])]; + } + } else { + [mutableSet addObject:nestedObject]; + } + } + } else if (collection) { + [mutableSet addObject:collection]; + } + + return mutableSet; +} + +static NSURL *RKRelativeURLFromURLAndResponseDescriptors(NSURL *URL, NSArray *responseDescriptors) +{ + NSCParameterAssert(URL); + NSCParameterAssert(responseDescriptors); + NSArray *baseURLs = [responseDescriptors valueForKeyPath:@"@distinctUnionOfObjects.baseURL"]; + if ([baseURLs count] == 1) { + NSURL *baseURL = baseURLs[0]; + NSString *pathAndQueryString = RKPathAndQueryStringFromURLRelativeToURL(URL, baseURL); + URL = [NSURL URLWithString:pathAndQueryString relativeToURL:baseURL]; + } + + return URL; +} + +static NSSet *RKGatherManagedObjectsFromObjectWithRelationshipMapping(id object, RKRelationshipMapping *relationshipMapping) +{ + NSMutableSet *managedObjects = [NSMutableSet set]; + NSSet *relationshipValue = RKFlattenCollectionToSet([object valueForKeyPath:relationshipMapping.destinationKeyPath]); + for (id relatedObject in relationshipValue) { + if ([relatedObject isKindOfClass:[NSManagedObject class]]) [managedObjects addObject:relatedObject]; + + if ([relationshipMapping.mapping isKindOfClass:[RKObjectMapping class]]) { + for (RKRelationshipMapping *childRelationshipMapping in [(RKObjectMapping *)relationshipMapping.mapping relationshipMappings]) { + [managedObjects unionSet:RKGatherManagedObjectsFromObjectWithRelationshipMapping(relatedObject, childRelationshipMapping)]; + } + } else if ([relationshipMapping.mapping isKindOfClass:[RKDynamicMapping class]]) { + for (RKObjectMapping *objectMapping in [(RKDynamicMapping *)relationshipMapping.mapping objectMappings]) { + @try { + for (RKRelationshipMapping *childRelationshipMapping in objectMapping.relationshipMappings) { + [managedObjects unionSet:RKGatherManagedObjectsFromObjectWithRelationshipMapping(relatedObject, childRelationshipMapping)]; + } + } + @catch (NSException *exception) { + continue; + } + } + } + } + return managedObjects; +} + +static NSSet *RKManagedObjectsFromObjectWithMappingInfo(id object, RKMappingInfo *mappingInfo) +{ + NSMutableSet *managedObjects = [NSMutableSet set]; + + if ([mappingInfo.objectMapping isKindOfClass:[RKEntityMapping class]]) { + [managedObjects unionSet:RKFlattenCollectionToSet(object)]; + } + + if ([[mappingInfo propertyMappings] count] == 0) { + // This object was matched, but no changes were made. Gather all related objects + for (RKRelationshipMapping *relationshipMapping in [mappingInfo.objectMapping relationshipMappings]) { + [managedObjects unionSet:RKGatherManagedObjectsFromObjectWithRelationshipMapping(object, relationshipMapping)]; + } + } else { + for (NSString *destinationKeyPath in mappingInfo.relationshipMappingInfo) { + id relationshipValue = [object valueForKeyPath:destinationKeyPath]; + NSArray *mappingInfos = (mappingInfo.relationshipMappingInfo)[destinationKeyPath]; + for (RKMappingInfo *relationshipMappingInfo in mappingInfos) { + NSUInteger index = [mappingInfos indexOfObject:relationshipMappingInfo]; + id mappedObjectAtIndex = ([relationshipValue respondsToSelector:@selector(objectAtIndex:)]) ? [NSSet setWithObject:relationshipValue[index]] : relationshipValue; + [managedObjects unionSet:RKFlattenCollectionToSet(RKManagedObjectsFromObjectWithMappingInfo(mappedObjectAtIndex, relationshipMappingInfo))]; + } + } + } + + return ([managedObjects count]) ? managedObjects : nil; +} + +static NSSet *RKManagedObjectsFromMappingResultWithMappingInfo(RKMappingResult *mappingResult, NSDictionary *mappingInfo) +{ + NSMutableSet *managedObjectsInMappingResult = nil; + NSDictionary *mappingResultDictionary = [mappingResult dictionary]; + + for (id rootKey in mappingInfo) { + NSArray *mappingInfoArray = mappingInfo[rootKey]; + id objectsAtRoot = mappingResultDictionary[rootKey]; + for (RKMappingInfo *mappingInfo in mappingInfoArray) { + NSUInteger index = [mappingInfoArray indexOfObject:mappingInfo]; + id mappedObjectAtIndex = ([objectsAtRoot respondsToSelector:@selector(objectAtIndex:)]) ? [NSSet setWithObject:objectsAtRoot[index]] : objectsAtRoot; + + NSSet *managedObjects = RKManagedObjectsFromObjectWithMappingInfo(mappedObjectAtIndex, mappingInfo); + if (managedObjects) { + if (! managedObjectsInMappingResult) managedObjectsInMappingResult = [NSMutableSet set]; + [managedObjectsInMappingResult unionSet:managedObjects]; + } + } + }; + + return managedObjectsInMappingResult; +} + +// Defined in RKObjectManager.h +BOOL RKDoesArrayOfResponseDescriptorsContainOnlyEntityMappings(NSArray *responseDescriptors); + +@interface RKObjectRequestOperation () +@property (nonatomic, strong, readwrite) NSError *error; +@property (nonatomic, strong, readwrite) RKMappingResult *mappingResult; +@end + +@interface RKManagedObjectRequestOperation () +// Core Data specific +@property (nonatomic, strong) NSManagedObjectContext *privateContext; +@property (nonatomic, copy) NSManagedObjectID *targetObjectID; +@property (nonatomic, strong) RKManagedObjectResponseMapperOperation *responseMapperOperation; +@property (nonatomic, copy) id (^willMapDeserializedResponseBlock)(id deserializedResponseBody); +@property (nonatomic, strong) NSDictionary *mappingInfo; +@property (nonatomic, strong) NSCachedURLResponse *cachedResponse; +@property (nonatomic, readonly) BOOL canSkipMapping; +@property (nonatomic, assign) BOOL hasMemoizedCanSkipMapping; +@property (nonatomic, copy) void (^willSaveMappingContextBlock)(NSManagedObjectContext *mappingContext); +@end + +@implementation RKManagedObjectRequestOperation + +@dynamic willMapDeserializedResponseBlock; +@synthesize canSkipMapping = _canSkipMapping; + +// Designated initializer +- (instancetype)initWithHTTPRequestOperation:(RKHTTPRequestOperation *)requestOperation responseDescriptors:(NSArray *)responseDescriptors +{ + self = [super initWithHTTPRequestOperation:requestOperation responseDescriptors:responseDescriptors]; + if (self) { + self.savesToPersistentStore = YES; + self.deletesOrphanedObjects = YES; + self.cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:requestOperation.request]; + } + return self; +} + +/** + NOTE: This dealloc implementation attempts to avoid crashes coming from Core Data due to the ordering of deallocations under ARC. If the MOC is deallocated before its managed objects, it can trigger a crash. We dispose of the mapping result and reset the private context to avoid this situation. The crash manifests itself in `cxx_destruct` + [sbw - 2/25/2013] + */ +- (void)dealloc +{ + _mappingResult = nil; + _responseMapperOperation = nil; + _privateContext = nil; +} + +- (void)setTargetObject:(id)targetObject +{ + [super setTargetObject:targetObject]; + + if ([targetObject isKindOfClass:[NSManagedObject class]]) { + if ([[targetObject objectID] isTemporaryID]) { + [[targetObject managedObjectContext] performBlockAndWait:^{ + NSError *error = nil; + BOOL success = [[targetObject managedObjectContext] obtainPermanentIDsForObjects:@[ targetObject ] error:&error]; + if (! success) RKLogWarning(@"Failed to obtain permanent objectID for targetObject: %@ (%ld)", [error localizedDescription], (long) error.code); + }]; + } + self.targetObjectID = [targetObject objectID]; + } else { + self.targetObjectID = nil; + } +} + +- (void)setManagedObjectContext:(NSManagedObjectContext *)managedObjectContext +{ + _managedObjectContext = managedObjectContext; + + if (managedObjectContext) { + [managedObjectContext performBlockAndWait:^{ + if ([managedObjectContext hasChanges]) { + if ([managedObjectContext.insertedObjects count] && [self.managedObjectCache respondsToSelector:@selector(didCreateObject:)]) { + for (NSManagedObject *managedObject in managedObjectContext.insertedObjects) { + [self.managedObjectCache didCreateObject:managedObject]; + } + } + + if ([managedObjectContext.updatedObjects count] && [self.managedObjectCache respondsToSelector:@selector(didFetchObject:)]) { + for (NSManagedObject *managedObject in managedObjectContext.updatedObjects) { + [self.managedObjectCache didFetchObject:managedObject]; + } + } + + if ([managedObjectContext.deletedObjects count] && [self.managedObjectCache respondsToSelector:@selector(didDeleteObject:)]) { + for (NSManagedObject *managedObject in managedObjectContext.deletedObjects) { + [self.managedObjectCache didDeleteObject:managedObject]; + } + } + } + }]; + + // Create a private context + NSManagedObjectContext *privateContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; + [privateContext setParentContext:managedObjectContext]; + [privateContext setMergePolicy:NSMergeByPropertyStoreTrumpMergePolicy]; + + self.privateContext = privateContext; + } else { + self.privateContext = nil; + } +} + +#pragma mark - RKObjectRequestOperation Overrides + +- (void)cancel +{ + [super cancel]; + [self.responseMapperOperation cancel]; +} + +// RKResponseHasBeenMappedCacheUserInfoKey is stored by RKObjectRequestOperation +- (BOOL)canSkipMapping +{ + BOOL (^shouldSkipMapping)(void) = ^{ + // Is the request cacheable + if (!self.cachedResponse) return NO; + if (!self.managedObjectCache) return NO; + NSURLRequest *request = self.HTTPRequestOperation.request; + if (! [[request HTTPMethod] isEqualToString:@"GET"] && ! [[request HTTPMethod] isEqualToString:@"HEAD"]) return NO; + NSHTTPURLResponse *response = (NSHTTPURLResponse *)self.HTTPRequestOperation.response; + if (! [RKCacheableStatusCodes() containsIndex:response.statusCode]) return NO; + + // Check if all the response descriptors are backed by Core Data + NSMutableArray *matchingResponseDescriptors = [NSMutableArray array]; + for (RKResponseDescriptor *responseDescriptor in self.responseDescriptors) { + if ([responseDescriptor matchesResponse:response]) [matchingResponseDescriptors addObject:responseDescriptor]; + } + if (! RKDoesArrayOfResponseDescriptorsContainOnlyEntityMappings(matchingResponseDescriptors)) return NO; + + // Check for a change in the Etag + NSString *cachedEtag = [(NSHTTPURLResponse *)[self.cachedResponse response] allHeaderFields][@"ETag"]; + NSString *responseEtag = [response allHeaderFields][@"ETag"]; + if (!(cachedEtag && responseEtag && [cachedEtag isEqualToString:responseEtag])) return NO; + + // Response data has changed + NSData *responseData = self.HTTPRequestOperation.responseData; + if (! [responseData isEqualToData:[self.cachedResponse data]]) return NO; + + // Check that we have mapped this response previously + NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request]; + return [(cachedResponse.userInfo)[RKResponseHasBeenMappedCacheUserInfoKey] boolValue]; + }; + + if (! self.hasMemoizedCanSkipMapping) { + _canSkipMapping = shouldSkipMapping(); + self.hasMemoizedCanSkipMapping = YES; + } + return _canSkipMapping; +} + +- (void)performMappingOnResponseWithCompletionBlock:(void(^)(RKMappingResult *mappingResult, NSError *error))completionBlock +{ + NSArray *fetchRequests = [self fetchRequestsMatchingResponseURL]; + if ([fetchRequests count] && [self canSkipMapping]) { + RKLogDebug(@"Managed object mapping requested for cached response which was previously mapped: skipping..."); + NSMutableArray *managedObjects = [NSMutableArray array]; + [self.privateContext performBlockAndWait:^{ + NSError *error = nil; + for (NSFetchRequest *fetchRequest in fetchRequests) { + NSArray *fetchedObjects = [self.privateContext executeFetchRequest:fetchRequest error:&error]; + if (fetchedObjects) { + [managedObjects addObjectsFromArray:fetchedObjects]; + } else { + RKLogError(@"Failed to execute fetch request %@: %@", fetchRequest, error); + } + } + }]; + RKMappingResult *mappingResult = [[RKMappingResult alloc] initWithDictionary:@{ [NSNull null]: managedObjects }]; + completionBlock(mappingResult, nil); + return; + } + + self.responseMapperOperation = [[RKManagedObjectResponseMapperOperation alloc] initWithRequest:self.HTTPRequestOperation.request + response:self.HTTPRequestOperation.response + data:self.HTTPRequestOperation.responseData + responseDescriptors:self.responseDescriptors]; + self.responseMapperOperation.mapperDelegate = self; + self.responseMapperOperation.mappingMetadata = self.mappingMetadata; + self.responseMapperOperation.targetObject = self.targetObject; + self.responseMapperOperation.targetObjectID = self.targetObjectID; + self.responseMapperOperation.managedObjectContext = self.privateContext; + self.responseMapperOperation.managedObjectCache = self.managedObjectCache; + [self.responseMapperOperation setWillMapDeserializedResponseBlock:self.willMapDeserializedResponseBlock]; + [self.responseMapperOperation setQueuePriority:[self queuePriority]]; + __weak __typeof(self)weakSelf = self; + [self.responseMapperOperation setDidFinishMappingBlock:^(RKMappingResult *mappingResult, NSError *responseMappingError) { + if ([weakSelf isCancelled]) return completionBlock(mappingResult, responseMappingError); + + BOOL success; + NSError *error = nil; + + // Handle any cleanup + if (weakSelf.targetObjectID + && NSLocationInRange(weakSelf.HTTPRequestOperation.response.statusCode, RKStatusCodeRangeForClass(RKStatusCodeClassSuccessful)) + && [[[weakSelf.HTTPRequestOperation.request HTTPMethod] uppercaseString] isEqualToString:@"DELETE"]) { + success = [weakSelf deleteTargetObject:&error]; + if (! success || [weakSelf isCancelled]) { + return completionBlock(nil, error); + } + } + + if (!responseMappingError) { + success = [weakSelf deleteLocalObjectsMissingFromMappingResult:mappingResult error:&error]; + if (! success || [weakSelf isCancelled]) { + return completionBlock(nil, error); + } + + // Persist our mapped objects + success = [weakSelf obtainPermanentObjectIDsForInsertedObjects:&error]; + if (! success || [weakSelf isCancelled]) { + return completionBlock(nil, error); + } + + success = [weakSelf saveContext:&error]; + if (! success || [weakSelf isCancelled]) { + return completionBlock(nil, error); + } + } + + // Refetch all managed objects nested at key paths within the results dictionary before returning + if (mappingResult) { + RKRefetchingMappingResult *refetchingMappingResult = [[RKRefetchingMappingResult alloc] initWithMappingResult:mappingResult + managedObjectContext:weakSelf.managedObjectContext + mappingInfo:weakSelf.mappingInfo]; + return completionBlock((RKMappingResult *)refetchingMappingResult, nil); + } + completionBlock(nil, responseMappingError); + }]; + [[RKObjectRequestOperation responseMappingQueue] addOperation:self.responseMapperOperation]; +} + +- (BOOL)deleteTargetObject:(NSError **)error +{ + __block BOOL _blockSuccess = YES; + + if (self.targetObjectID) { + // 2xx/404/410 DELETE request, proceed with deletion from the MOC + __block NSError *_blockError = nil; + [self.privateContext performBlockAndWait:^{ + NSManagedObject *backgroundThreadObject = [self.privateContext existingObjectWithID:self.targetObjectID error:&_blockError]; + if (backgroundThreadObject) { + RKLogInfo(@"Deleting local object %@ due to `DELETE` request", backgroundThreadObject); + [self.privateContext deleteObject:backgroundThreadObject]; + } else { + RKLogWarning(@"Unable to delete object sent with `DELETE` request: Failed to retrieve object with objectID %@", self.targetObjectID); + RKLogCoreDataError(_blockError); + _blockSuccess = NO; + *error = _blockError; + } + }]; + } + + return _blockSuccess; +} + +- (NSSet *)localObjectsFromFetchRequests:(NSArray *)fetchRequests matchingRequestURL:(NSError **)error +{ + NSMutableSet *localObjects = [NSMutableSet set]; + __block NSError *_blockError; + __block NSArray *_blockObjects; + + for (NSFetchRequest *fetchRequest in fetchRequests) { + [self.privateContext performBlockAndWait:^{ + _blockObjects = [self.privateContext executeFetchRequest:fetchRequest error:&_blockError]; + }]; + + if (_blockObjects == nil) { + if (error) *error = _blockError; + return nil; + } + RKLogTrace(@"Fetched local objects matching URL with fetch request '%@': %@", fetchRequest, _blockObjects); + [localObjects addObjectsFromArray:_blockObjects]; + + } + + return localObjects; +} + +- (NSArray *)fetchRequestsMatchingResponseURL +{ + // Pass the fetch request blocks a relative `NSURL` object if possible + NSMutableArray *fetchRequests = [NSMutableArray array]; + NSURL *URL = RKRelativeURLFromURLAndResponseDescriptors(self.HTTPRequestOperation.response.URL, self.responseDescriptors); + for (RKFetchRequestBlock fetchRequestBlock in [self.fetchRequestBlocks reverseObjectEnumerator]) { + NSFetchRequest *fetchRequest = fetchRequestBlock(URL); + if (fetchRequest) { + // Workaround for iOS 5 -- The log statement crashes if the entity is not assigned before logging + [fetchRequest setEntity:[[[self.privateContext persistentStoreCoordinator] managedObjectModel] entitiesByName][[fetchRequest entityName]]]; + RKLogDebug(@"Found fetch request matching URL '%@': %@", URL, fetchRequest); + [fetchRequests addObject:fetchRequest]; + } + } + return fetchRequests; +} + +- (BOOL)deleteLocalObjectsMissingFromMappingResult:(RKMappingResult *)mappingResult error:(NSError **)error +{ + if (! self.deletesOrphanedObjects) { + RKLogDebug(@"Skipping deletion of orphaned objects: disabled as deletesOrphanedObjects=NO"); + return YES; + } + + if (! [[self.HTTPRequestOperation.request.HTTPMethod uppercaseString] isEqualToString:@"GET"]) { + RKLogDebug(@"Skipping deletion of orphaned objects: only performed for GET requests."); + return YES; + } + + if ([self canSkipMapping]) { + RKLogDebug(@"Skipping deletion of orphaned objects: 304 (Not Modified) status code encountered"); + return YES; + } + + // Determine if there are any fetch request blocks to use for orphaned object cleanup + NSArray *fetchRequests = [self fetchRequestsMatchingResponseURL]; + if (! [fetchRequests count]) return YES; + + // Proceed with cleanup + NSSet *managedObjectsInMappingResult = RKManagedObjectsFromMappingResultWithMappingInfo(mappingResult, self.mappingInfo) ?: [NSSet set]; + NSSet *localObjects = [self localObjectsFromFetchRequests:fetchRequests matchingRequestURL:error]; + if (! localObjects) { + RKLogError(@"Failed when attempting to fetch local candidate objects for orphan cleanup: %@", error ? *error : nil); + return NO; + } + RKLogDebug(@"Checking mappings result of %ld objects for %ld potentially orphaned local objects...", (long) [managedObjectsInMappingResult count], (long) [localObjects count]); + + NSMutableSet *orphanedObjects = [localObjects mutableCopy]; + [orphanedObjects minusSet:managedObjectsInMappingResult]; + RKLogDebug(@"Deleting %lu orphaned objects found in local database, but missing from mapping result", (unsigned long) [orphanedObjects count]); + + if ([orphanedObjects count]) { + [self.privateContext performBlockAndWait:^{ + for (NSManagedObject *orphanedObject in orphanedObjects) { + [self.privateContext deleteObject:orphanedObject]; + } + }]; + } + + return YES; +} + +/** + NOTE: This is more or less a direct port of the functionality provided by `[NSManagedObjectContext saveToPersistentStore:]` in the `RKAdditions` category. We have duplicated the logic here to add in support for checking if the operation has been cancelled since we began cascading up the MOC chain. Because each `performBlockAndWait:` invocation essentially jumps threads and is subject to the availability of the context, it is very possible for the operation to be cancelled during this part of the operation's lifecycle. + */ +- (BOOL)saveContextToPersistentStore:(NSManagedObjectContext *)contextToSave error:(NSError **)error +{ + __block NSError *localError = nil; + while (contextToSave) { + __block BOOL success; + [contextToSave performBlockAndWait:^{ + if (! [self isCancelled]) { + success = [contextToSave save:&localError]; + if (! success && localError == nil) RKLogWarning(@"Saving of managed object context failed, but a `nil` value for the `error` argument was returned. This typically indicates an invalid implementation of a key-value validation method exists within your model. This violation of the API contract may result in the save operation being mis-interpretted by callers that rely on the availability of the error."); + } else { + // We have been cancelled while the save is in progress -- bail + success = NO; + } + }]; + + if (! success) { + if (error) *error = localError; + return NO; + } + + if (! contextToSave.parentContext && contextToSave.persistentStoreCoordinator == nil) { + RKLogWarning(@"Reached the end of the chain of nested managed object contexts without encountering a persistent store coordinator. Objects are not fully persisted."); + return NO; + } + contextToSave = contextToSave.parentContext; + } + + return YES; +} + +- (BOOL)saveContext:(NSManagedObjectContext *)context error:(NSError **)error +{ + __block BOOL success = YES; + __block NSError *localError = nil; + if (self.savesToPersistentStore) { + success = [self saveContextToPersistentStore:context error:&localError]; + } else { + [context performBlockAndWait:^{ + success = ([self isCancelled]) ? NO : [context save:&localError]; + }]; + } + if (success) { + if ([self.targetObject isKindOfClass:[NSManagedObject class]]) { + [self.managedObjectContext performBlock:^{ + RKLogDebug(@"Refreshing mapped target object %@ in context %@", self.targetObject, self.managedObjectContext); + if (! [self isCancelled]) [self.managedObjectContext refreshObject:self.targetObject mergeChanges:YES]; + }]; + } + } else { + if (error) *error = localError; + RKLogError(@"Failed saving managed object context %@ %@: %@", (self.savesToPersistentStore ? @"to the persistent store" : @""), context, localError); + RKLogCoreDataError(localError); + } + + return success; +} + +- (BOOL)saveContext:(NSError **)error +{ + if (self.willSaveMappingContextBlock) { + self.mappingResult = _responseMapperOperation.mappingResult; + [self.privateContext performBlockAndWait:^{ + self.willSaveMappingContextBlock(self.privateContext); + }]; + } + + __block BOOL hasChanges; + [self.privateContext performBlockAndWait:^{ + hasChanges = [self.privateContext hasChanges]; + }]; + if (hasChanges) { + return [self saveContext:self.privateContext error:error]; + } else if ([self.targetObject isKindOfClass:[NSManagedObject class]]) { + NSManagedObjectContext *context = [(NSManagedObject *)self.targetObject managedObjectContext]; + __block BOOL isNew = NO; + [context performBlockAndWait:^{ + isNew = [(NSManagedObject *)self.targetObject isNew]; + }]; + // Object was like POST'd in an unsaved state and we wish to persist + if (isNew) [self saveContext:context error:error]; + } + + return YES; +} + +- (BOOL)obtainPermanentObjectIDsForInsertedObjects:(NSError **)error +{ + __block BOOL _blockSuccess = YES; + __block NSError *localError = nil; + [self.privateContext performBlockAndWait:^{ + NSArray *insertedObjects = [[self.privateContext insertedObjects] allObjects]; + RKLogDebug(@"Obtaining permanent ID's for %ld managed objects", (unsigned long) [insertedObjects count]); + _blockSuccess = [self.privateContext obtainPermanentIDsForObjects:insertedObjects error:&localError]; + }]; + if (!_blockSuccess && error) *error = localError; + + return _blockSuccess;; +} + +- (void)mapperDidFinishMapping:(RKMapperOperation *)mapper +{ + self.mappingInfo = mapper.mappingInfo; +} + +- (void)willFinish +{ + NSMutableIndexSet *deleteableStatusCodes = [NSMutableIndexSet indexSet]; + [deleteableStatusCodes addIndex:404]; // Not Found + [deleteableStatusCodes addIndex:410]; // Gone + if (self.error && self.targetObjectID + && [[[self.HTTPRequestOperation.request HTTPMethod] uppercaseString] isEqualToString:@"DELETE"] + && [deleteableStatusCodes containsIndex:self.HTTPRequestOperation.response.statusCode]) { + NSError *error = nil; + if (! [self deleteTargetObject:&error]) { + RKLogWarning(@"Secondary error encountered while attempting to delete target object in response to 404 (Not Found) or 410 (Gone) status code: %@", error); + self.error = error; + } else { + if (! [self saveContext:&error]) { + + } else { + // All good, clear any errors + self.error = nil; + } + } + } +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + RKManagedObjectRequestOperation *operation = (RKManagedObjectRequestOperation *)[super copyWithZone:zone]; + operation.managedObjectContext = self.managedObjectContext; + operation.managedObjectCache = self.managedObjectCache; + operation.fetchRequestBlocks = self.fetchRequestBlocks; + operation.deletesOrphanedObjects = self.deletesOrphanedObjects; + operation.savesToPersistentStore = self.savesToPersistentStore; + + return operation; +} + +@end + +#endif +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectManager.h b/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectManager.h new file mode 100644 index 0000000..a1cd3ed --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectManager.h @@ -0,0 +1,892 @@ +// +// RKObjectManager.h +// RestKit +// +// Created by Jeremy Ellison on 8/14/09. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKRouter.h" +#import "RKPaginator.h" +#import "RKMacros.h" +#import "AFNetworking.h" + +#ifdef _COREDATADEFINES_H +#if __has_include("RKCoreData.h") +#define RKCoreDataIncluded +#endif +#endif + +@protocol RKSerialization; +@class RKManagedObjectStore, RKObjectRequestOperation, RKManagedObjectRequestOperation, +RKMappingResult, RKRequestDescriptor, RKResponseDescriptor; + +/** + The `RKObjectManager` class provides a centralized interface for performing object mapping based HTTP request and response operations. It encapsulates common configuration such as request/response descriptors and routing, provides for the creation of `NSURLRequest` and `RKObjectRequestOperation` objects, and one-line methods to enqueue object request operations for the basic HTTP request methods (GET, POST, PUT, DELETE, etc). + + ## Object Request Operations + + Object request operations model the lifecycle of an object mapped HTTP request from start to finish. They are initialized with a fully configured `NSURLRequest` object and a set of `RKResponseDescriptor` objects that specify how an HTTP response is to be mapped into local domain objects. Object request operations may be constructed as standalone objects, but are often constructed through an `RKObjectManager` object. The object request operation encapsulates the functionality of two underlying operations that perform the bulk of the work. The HTTP request and response loading is handled by an `RKHTTPRequestOperation`, which is responsible for the HTTP transport details. Once a response has been successfully loaded, the object request operation starts an `RKResponseMapperOperation` that is responsible for handling the mapping of the response body. When working with Core Data, the `RKManagedObjectRequestOperation` class is used. The object manager encapsulates the Core Data configuration details and provides an interface that will return the appropriate object request operation for a request through the `appropriateObjectRequestOperationWithObject:method:path:parameters:` method. + + ## Base URL, Relative Paths and Path Patterns + + Each object manager is configured with a base URL that defines the URL that all request sent through the manager will be relative to. The base URL is configured directly through the `managerWithBaseURL:` method or is inherited from an AFNetworking `AFHTTPClient` object if the manager is initialized via the `initWithHTTPClient:` method. The base URL can point directly at the root of a URL or may include a path. + + Many of the methods of the object manager accept a path argument, either directly or in the form of a path pattern. Whenever a path is provided to the object manager directly, as part of a request or response descriptor (see "Request and Response Descriptors"), or via a route (see the "Routing" section), the path is used to construct an `NSURL` object with `[NSURL URLWithString:relativeToURL:]`. The rules for the evaluation of a relative URL can at times be surprising and many configuration errors result from incorrectly configuring the `baseURL` and relative paths thereof. For reference, here are some examples borrowed from the AFNetworking documentation detailing how base URL's and relative paths interact: + + NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"]; + [NSURL URLWithString:@"foo" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL]; // http://example.com/v1/foo?bar=baz + [NSURL URLWithString:@"/foo" relativeToURL:baseURL]; // http://example.com/foo + [NSURL URLWithString:@"foo/" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"/foo/" relativeToURL:baseURL]; // http://example.com/foo/ + [NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/ + + Keep these rules in mind when providing relative paths to the object manager. + + Path patterns are a common unit of abstraction in RestKit for describing the path portion of URL's. When working with API's, there is typically one or more dynamic portions of the URL that correspond to primary keys or other identifying resource attributes. For example, a blogging application may represent articles in a URL structure such as '/articles/1234' and comments about an article might appear at '/articles/1234/comments'. These path structures could be represented as the path patterns '/articles/:articleID' and '/articles/:articleID/comments', substituing the dynamic key ':articleID' in place of the primary key of in the path. These keys can be used to interpolate a path with an object's property values using key-value coding or be used to match a string. + + Path patterns appear throughout RestKit, but the most fundamental uses are for the dynamic generation of URL paths from objects and the matching of request and response URLs for mapping configuration. When generating a URL, a path pattern is interpolated with the value of an object. Consider this example: + + // Set object attributes + RKArticle *article = [RKArticle new]; + article.articleID = @12345; + + // Interpolate with the object + NSString *path = RKPathFromPatternWithObject(@"/articles/:articleID", article); + NSLog(@"The path is %@", path); // prints /articles/12345 + + This may at first glance appear to provide only a small syntactic improvement over using `[NSString stringWithFormat:]`, but it becomes more interesting once you consider that the dynamic key can include key path: + + RKCategory *category = [RKCategory new]; + comment.name = @"RestKit; + article.category = category; + + NSString *path = RKPathFromPatternWithObject(@"/categories/:comment.name/articles/:articleID/comments/", article); + NSLog(@"The path is %@", path); // prints /categories/RestKit/articles/12345 + + These path patterns can then be registered with the manager via an `RKRoute` object (discussed in detail below), enabling one to perform object request operations like so: + + RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://restkit.org"]]; + [manager.router.routeSet addRoute:[RKRoute routeWithClass:[RKArticle class] pathPattern:@"/categories/:comment.name/articles/:articleID/comments/" method:RKRequestMethodGET]]; + + // Now GET our article object... sending a GET to '/categories/RestKit/articles/12345' + [manager getObject:article path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result) { + NSLog(@"Loading mapping result: %@", result); + } failure:nil]; + + Once a path pattern has been registered via the routing system, the manager can automatically build full request URL's when given nothing but the object to be sent. + + The second use case of path patterns is in the matching of path into a dictionary of attributes. In this case, the path pattern is evaluatd against a string and used to construct an `NSDictionary` object containing the matched key paths, optionally including the values of a query string. This functionality is provided via the `RKPathMatcher` class and is discussed in detail in the accompanying documentation. + + ### Escaping Path Patterns + + Note that path patterns will by default interpret anything prefixed with a period that follows a dynamic path segment as a key path. This can cause an issue if you have a dynamic path segment that is followed by a file extension. For example, a path pattern of '/categories/:categoryID.json' would be erroneously interpretted as containing a dynamic path segment whose value is interpolated from the 'categoryID.json' key path. This key path evaluation behavior can be suppressed by escaping the period preceding the non-dynamic part of the pattern with two leading slashes, as in '/categories/:categoryID\\.json'. + + ## Request and Response Descriptors + + RestKit centralizes configuration for object mapping configurations into the object manager through `RKRequestDescriptor` and `RKResponseDescriptor` objects. A collection of each of these object types are maintained by the manager and used to initialize all `RKObjectRequestOperation` objects created by the manager. + + Request descriptors describe how `NSURLRequest` objects constructed by the manager will be built by specifying how the attributes and relationships for a given class will be object mapped to construct request parameters and what, if any, root key path the parameters will be nested under. Request descriptor objects can also be used with the `RKObjectParameterization` class to map an object into an `NSDictionary` representation that is suitable for use as the parameters of a request. + + Response descriptors describe how `NSHTTPURLResponse` objects loaded by object request operations sent by the manager are to be object mapped into local domain objects. Response descriptors are matched against a given response via URL path matching, parsed content key path matching, or both. The `RKMapping` object associated from a matched `RKResponseDescriptor` is given to an instance of `RKMapperOperation` with the parsed response body to perform object mapping on the response. + + To better illustrate these concepts, consider the following example for an imaginary Wiki client application: + + @interface RKWikiPage : NSObject + @property (nonatomic, copy) NSString *title; + @property (nonatomic, copy) NSString *body; + @end + + // Construct a request mapping for our class + RKObjectMapping *requestMapping = [RKObjectMapping requestMapping]; + [requestMapping addAttributeMappingsFromDictionary:@{ @"title": @"title", @"body": @"body" }]; + + // We wish to generate parameters of the format: + // @{ @"page": @{ @"title": @"An Example Page", @"body": @"Some example content" } } + RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:mapping + objectClass:[RKWikiPage class] + rootKeyPath:@"page"]; + + // Construct an object mapping for the response + // We are expecting JSON in the format: + // {"page": {"title": "", "body": "<body value>"} + RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[RKWikiPage class]]; + [responseMapping addAttributeMappingsFromArray:@[ @"title", @"body" ]]; + + // Construct a response descriptor that matches any URL (the pathPattern is nil), when the response payload + // contains content nested under the `@"page"` key path, if the response status code is 200 (OK) + RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping + pathPattern:nil + keyPath:@"page" + statusCodes:[NSIndexSet indexSetWithIndex:200]]; + + // Register our descriptors with a manager + RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://restkit.org/"]]; + [manager addRequestDescriptor:requestDescriptor]; + [manager addResponseDescriptor:responseDescriptor]; + + // Work with the object + RKWikiPage *page = [RKWikiPage new]; + page.title = @"An Example Page"; + page.body = @"Some example content"; + + // POST the parameterized representation of the `page` object to `/posts` and map the response + [manager postObject:page path:@"/pages" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result) { + NSLog(@"We object mapped the response with the following result: %@", result); + } failure:nil]; + + In the above example, request and response mapping configurations were described for a simple data model and then used to perform a basic POST operation and map the results. An arbitrary number of request and response descriptors may be added to the manager to accommodate your application's needs. + + ## Multi-object Parameterization + + The object manager provides support for the parameterization of multiple objects provided as an array. The `requestWithObject:method:path:parameters:` and `multipartFormRequestWithObject:method:path:parameters:constructingBodyWithBlock:` methods can parameterize an array of objects for you provided that the `RKRequestDescriptor` objects are configured in a compatible way. The rules for multi-object parameterization are simple: + + 1. If a `nil` root key path is used, then it must be used for all objects in the array. This is because the objects will be parameterized into a dictionary and then each dictionary will be added to an array. This array is then serialized for transport, so objects parameterized to a non-nil key path cannot be merged with the array. + 1. If a `nil` root key path is used to parameterize the array of objects, then you cannot provide additional parameters to be merged with the request. This is again because you cannot merge a dictionary with an array. + + If non-nil key paths are used, then each object will be set in the parameters dictionary at the specified key path. If more than one object uses the same root key path, then the parameters will be combined into an array for transport. + + ## MIME Types + + MIME Types serve an important function to the object manager. They are used to identify how content is to be serialized when constructing request bodies and also used to set the 'Accept' header for content negotiation. RestKit aspires to be content type agnostic by leveraging the pluggable `RKMIMESerialization` class to handle content serialization and deserialization. + + ## Routing + + Routing is the process of generating an `NSURL` appropriate for a particular HTTP server request interaction. Using routing instead of hard-coding paths enables centralization of configuration and allows the developer to focus on what they want done rather than the details of how to do it. Changes to the URL structure in the application can be made in one place. Routes can also be useful in testing, as they permit for the changing of paths at run-time. + + Routing interfaces are provided by the `RKRouter` class. Each object manager is in initialized with an `RKRouter` object with a baseURL equal to the baseURL of the underlying `AFHTTPClient` object. Each `RKRouter` instance maintains an `RKRouteSet` object that manages a collection of `RKRoute` objects. Routes are defined in terms of a path pattern. + + There are three types of routes currently supported: + + 1. Class Routes. Class routes are configured to target a given object class and HTTP request method. For example, we might route the HTTP `GET` for a `User` class to the path pattern `@"/users/:userID"`. + 1. Relationship Routes. Relationship routes identify the path appropriate for performing a request for an object that is related to another object. For example, each `User` may have many friends. This might be routed as a relationship route for the `User` class with the name `@"friends"` to the path pattern `@"/users/:userID/friends"`. + 1. Named Routes. Names routes bind an arbitrary name to a path. For example, there might be an action to follow another user that could be added as a named route with the name `@"follow_user"` that generates a `POST` to the path pattern `@"/users/:userID/follow"`. + + To better understand these concepts, please consider the following example code for configuring the above routing examples: + + RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://restkit.org"]]; + + // Class Route + [manager.router.routeSet addRoute:[RKRoute routeWithClass:[User class] pathPattern:@"/users/:userID" method:RKRequestMethodGET]]; + + // Relationship Route + [manager.router.routeSet addRoute:[RKRoute routeWithRelationshipName:@"friends" objectClass:[User class] pathPattern:@"/users/:userID/friends" method:RKRequestMethodGET]]; + + // Named Route + [manager.router.routeSet addRoute:[RKRoute routeWithName:@"follow_user" pathPattern:@"/users/:userID/follow" method:RKRequestMethodPOST]]; + + Once configured, routes will be consulted by the object manager whenever the path parameter provided to a method is given as nil. For example, invoking the following code would result in a `GET` to the path `@"/users/1234"`: + + User *user = [User new]; + user.userID = 1234; + [manager getObject:user path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result) { + // Request + } failure:nil]; + + Routes can also be explicitly used to construct `NSMutableURLRequest` objects and are referenced explicitly in a few object request operation methods: + + 1. `requestWithObject:method:path:parameters:` - Consults routing when path is nil. + 1. `multipartFormRequestWithObject:method:path:parameters:constructingBodyWithBlock:` - Consults routing when path is nil. + 1. `requestWithPathForRouteNamed:object:parameters:` - Explicitly retrieves the route with the given name. + 1. `getObjectsAtPathForRelationship:ofObject:parameters:success:failure:` - Explicitly retrieves the route for the given name and object class. + 1. `getObjectsAtPathForRouteNamed:object:parameters:success:failure:` - Explicitly retrieves the route for the given name. + + Please see the documentation for `RKRouter`, `RKRouteSet`, and `RKRoute` for more details about the routing classes. + + ## Metadata Mapping + + The `RKObjectManager` class has integrated support for metadata mapping. Metdata mapping enables the object mapping of supplemental information external to the object representation loaded via an HTTP response. Object request operations constructed by the manager make the following metadata key paths available for mapping: + + 1. `@metadata.routing.parameters` - A dictionary whose keys are the key paths matched from the path pattern of the `RKRoute` object used to construct the request URL and whose values are taken by evaluating the key path against the object interpolated with the route. Only available when routing was used to construct the request URL. + 1. `@metadata.routing.route` - The route object used to construct the request URL. + + Please refer to the documentation accompanying `RKMappingOperation` for more details on metadata mapping. + + ## Core Data + + RestKit features deep integration with Apple's Core Data persistence framework. The object manager provides access to this integration by creating `RKManagedObjectRequestOperation` objects when an attempt is made to interact with a resource that has been mapped using an `RKEntityMapping`. To utilize the Core Data integration, the object manager must be provided with a fully configured `RKManagedObjectStore` object. The `RKManagedObjectStore` provides access to the `NSManagedObjectModel` and `NSManagedObjectContext` objects required to peform object mapping that targets a Core Data entity. + + Please see the documentation for `RKManagedObjectStore`, `RKEntityMapping`, and `RKManagedObjectRequestOperation` for in depth information about Core Data in RestKit. + + ## Customization & Subclassing Notes + + The object manager is designed to support subclassing. The default behaviors can be altered and tailored to the specific needs of your application easily by manipulating a few core methods: + + * `requestWithObject:method:path:parameters:` - Used to construct all `NSMutableURLRequest` objects used by the manager. + * `objectRequestOperationWithRequest:success:failure:` - Used to construct all non-managed object request operations for the manager. Provide a subclass implementation if you wish to alter the behavior of all unmanaged object request operations. + * `managedObjectRequestOperationWithRequest:managedObjectContext:success:failure:` - Used to construct all managed object request operations for the manager. Provide a subclass implementation if you wish to alter the behavior of all managed object request operations. + * `appropriateObjectRequestOperationWithObject:method:path:parameters:` - Used to construct all object request operations for the manager, both managed and unmanaged. Invokes either `objectRequestOperationWithRequest:success:failure:` or `managedObjectRequestOperationWithRequest:managedObjectContext:success:failure:` to construct the actual request. Provide a subclass implementation to alter behaviors for all object request operations constructed by the manager. + * `enqueueObjectRequestOperation:` - Invoked to enqueue all operations constructed by the manager that are to be started as soon as possible. Provide a subclass implementation if you wish to work with object request operations as they are be enqueued. + + If you wish to more specifically customize the behavior of the lower level HTTP details, you have several options. All HTTP requests made by the `RKObjectManager` class are made with an instance of the `RKHTTPRequestOperation` class, which is a subclass of the `AFHTTPRequestOperation` class from AFNetworking. This operation class implements the `NSURLConnectionDelegate` and `NSURLConnectionDataDelegate` protocols and as such, has full access to all details of the HTTP request/response cycle exposed by `NSURLConnection`. You can provide the object manager with your own custom subclass of `RKHTTPRequestOperation` to the manager via the `registerRequestOperationClass:` method and all HTTP requests made through the manager will pass through your operation. + + You can also customize the HTTP details at the AFNetworking level by subclassing `AFHTTPClient` and using an instance of your subclassed client to initialize the manager. + + @warning Note that when subclassing `AFHTTPClient` to change object manager behaviors it is not possible to alter the paramters of requests that are constructed on behalf of the manager. This is because the object manager handles its own serialization and construction of the request body, but defers to the `AFHTTPClient` for all other details (such as default HTTP headers, etc). + + @see `RKObjectRequestOperation` + @see `RKRouter` + @see `RKPathMatcher` + @see `RKMIMETypeSerialization` + */ +@interface RKObjectManager : NSObject + +///---------------------------------------------- +/// @name Configuring the Shared Manager Instance +///---------------------------------------------- + +/** + Return the shared instance of the object manager + + @return The shared manager instance. + */ ++ (instancetype)sharedManager; + +/** + Set the shared instance of the object manager + + @param manager The new shared manager instance. + */ ++ (void)setSharedManager:(RKObjectManager *)manager; + +///------------------------------------- +/// @name Initializing an Object Manager +///------------------------------------- + +/** + Creates and returns a new `RKObjectManager` object initialized with a new `AFHTTPClient` object that was in turn initialized with the given base URL. The RestKit defaults are applied to the object manager. + + When initialized with a base URL, the returned object manager will have a `requestSerializationMIMEType` with the value of `RKMIMETypeFormURLEncoded` and the underlying `HTTPClient` will have a default value for the 'Accept' header set to `RKMIMETypeJSON`, and the `AFJSONRequestOperation` class will be registered. + + @param baseURL The base URL with which to initialize the `AFHTTPClient` object + @return A new `RKObjectManager` initialized with an `AFHTTPClient` that was initialized with the given baseURL. + */ ++ (instancetype)managerWithBaseURL:(NSURL *)baseURL; + +/** + Initializes the receiver with the given AFNetworking HTTP client object, adopting the network configuration from the client. + + This is the designated initializer. If the `sharedManager` instance is `nil`, the receiver will be set as the `sharedManager`. The default headers and parameter encoding of the given HTTP client are adopted by the receiver to initialize the values of the `defaultHeaders` and `requestSerializationMIMEType` properties. + + @param client The AFNetworking HTTP client with which to initialize the receiver. + @return The receiver, initialized with the given client. + */ +- (instancetype)initWithHTTPClient:(AFHTTPClient *)client NS_DESIGNATED_INITIALIZER; + +///------------------------------------------ +/// @name Accessing Object Manager Properties +///------------------------------------------ + +/** + The AFNetworking HTTP client with which the receiver makes requests. + */ +@property (nonatomic, strong, readwrite) AFHTTPClient *HTTPClient; + +/** + The base URL of the underlying HTTP client. + */ +@property (nonatomic, readonly) NSURL *baseURL; + +/** + The default HTTP headers for all `NSURLRequest` objects constructed by the object manager. + + The returned dictionary contains all of the default headers set on the underlying `AFHTTPClient` object and the value of the 'Accept' header set on the object manager, if any. + + @see `setAcceptHeaderWithMIMEType:` + */ +@property (nonatomic, readonly) NSDictionary *defaultHeaders; + +/** + The operation queue which manages operations enqueued by the object manager. + */ +@property (nonatomic, strong) NSOperationQueue *operationQueue; + +/** + The router used to generate URL objects for routable requests created by the manager. + + @see `RKRouter` + @see `RKRoute` + */ +@property (nonatomic, strong) RKRouter *router; + +///-------------------------------------------------- +/// @name Configuring Request and Response MIME Types +///-------------------------------------------------- + +/** + The MIME Type to serialize request parameters into when constructing request objects. + + The value of the `requestSerializationMIMEType` is used to obtain an appropriate `RKSerialization` conforming class from the `RKMIMESerialization` interface. Parameterized objects and dictionaries of parameters are then serialized for transport using the class registered for the MIME Type. By default, the value is `RKMIMETypeFormURLEncoded` which means that the request body of all `POST`, `PUT`, and `PATCH` requests will be sent in the URL encoded format. This is analagous to submitting an HTML form via a web browser. Other common formats include `RKMIMETypeJSON`, which will cause request bodies to be encoded as JSON. + + The value given for the `requestSerializationMIMEType` must correspond to a MIME Type registered via `[RKMIMETypeSerialization registerClass:forMIMEType:]`. Implementations are provided by default for `RKMIMETypeFormURLEncoded` and `RKMIMETypeJSON`. + + **Default**: `RKMIMETypeFormURLEncoded` or the value of the parameter encoding for the underlying `AFHTTPClient`. + */ +@property (nonatomic, strong) NSString *requestSerializationMIMEType; + +/** + Sets a default header on the HTTP client for the HTTP "Accept" header to specify the preferred serialization format for retrieved data. + + This method is a convenience method whose implementation is equivalent to the following example code: + + [manager.HTTPClient setDefaultHeader:@"Accept" value:MIMEType]; + + @param MIMEType The MIME Type to set as the value for the HTTP "Accept" header. + */ +- (void)setAcceptHeaderWithMIMEType:(NSString *)MIMEType; + +///------------------------------- +/// @name Creating Request Objects +///------------------------------- + +/** + Creates and returns an `NSMutableURLRequest` object with a given object, method, path, and parameters. + + The manager is searched for an `RKRequestDescriptor` object with an objectClass that matches the class of the given object. If found, the matching request descriptor and object are used to build a parameterization of the object's attributes using the `RKObjectParameterization` class if the request method is a `POST`, `PUT`, or `PATCH`. The parameterized representation of the object is reverse merged with the given parameters dictionary, if any, and then serialized and set as the request body. If the HTTP method is `GET` or `DELETE`, the object will not be parameterized and the given parameters, if any, will be used to construct a url-encoded query string that is appended to the request's URL. + + If the given path is nil, the router is searched for a class route with the class of the object andthe method. The path pattern of the retrieved route is interpolated with the object and the resulting path is appended to the HTTP client's base URL and used as the request URL. + + @param object The object with which to construct the request. For the `POST`, `PUT`, and `PATCH` request methods, the object will parameterized using the `RKRequestDescriptor` for the object. + @param method The HTTP method for the request, such as `GET`, `POST`, `PUT`, or `DELETE`. + @param path The path to be appended to the HTTP client's base URL and used as the request URL. If nil, the router is consulted. + @param parameters The parameters to be either set as a query string for `GET` requests, or reverse merged with the parameterization of the object and set as the request HTTP body. + + @return An `NSMutableURLRequest` object. + @see RKObjectParameterization + @see RKRouter + */ +- (NSMutableURLRequest *)requestWithObject:(id)object + method:(RKRequestMethod)method + path:(NSString *)path + parameters:(NSDictionary *)parameters; + +/** + Creates an `NSMutableURLRequest` object with the specified HTTP method and path, and constructs a `multipart/form-data` HTTP body, using the specified parameters and multipart form data block. See http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2 + + This method wraps the underlying `AFHTTPClient` method `multipartFormRequestWithMethod:path:parameters:constructingBodyWithBlock` and adds routing and object parameterization. + + @param object The object with which to construct the request. For the `POST`, `PUT`, and `PATCH` request methods, the object will parameterized using the `RKRequestDescriptor` for the object. + @param method The HTTP method for the request, such as `GET`, `POST`, `PUT`, or `DELETE`. + @param path The path to be appended to the HTTP client's base URL and used as the request URL. If nil, the router is consulted. + @param parameters The parameters to be either set as a query string for `GET` requests, or reverse merged with the parameterization of the object and set as the request HTTP body. + @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. This can be used to upload files, encode HTTP body as JSON or XML, or specify multiple values for the same parameter, as one might for array values. + @return An `NSMutableURLRequest` object. + @warning An exception will be raised if the specified method is not `POST`, `PUT` or `DELETE`. + @see [AFHTTPClient multipartFormRequestWithMethod:path:parameters:constructingBodyWithBlock] + */ +- (NSMutableURLRequest *)multipartFormRequestWithObject:(id)object + method:(RKRequestMethod)method + path:(NSString *)path + parameters:(NSDictionary *)parameters + constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block; + +/** + Creates an `NSMutableURLRequest` object with the `NSURL` returned by the router for the given route name and object and the given parameters. + + The implementation invokes `requestWithObject:method:path:parameters:` after constructing the path with the given route. + + @param routeName The name of the route object containing the path pattern which is to be interpolated against the given object, appended to the HTTP client's base URL and used as the request URL. + @param object The object with which to interpolate the path pattern of the named route. Can be nil. + @param parameters The parameters to be either set as a query string for `GET` requests, or the request HTTP body. + @return An `NSMutableRequest` object. + + @see `requestWithObject:method:path:parameters` + */ +- (NSMutableURLRequest *)requestWithPathForRouteNamed:(NSString *)routeName + object:(id)object + parameters:(NSDictionary *)parameters; +/** + Creates an `NSMutableURLRequest` object with the `NSURL` returned by the router for the relationship of the given object and the given parameters. + + The implementation invokes `requestWithObject:method:path:parameters:` after constructing the path with the given route. + + Creates an `RKObjectRequestOperation` with a `GET` request for the relationship with the given name of the given object, and enqueues it to the manager's operation queue. + + @param relationship The name of the relationship being loaded. Used to retrieve the `RKRoute` object from the router for the given object's class and the relationship name. Cannot be nil. + @param object The object for which related objects are being loaded. Evaluated against the `RKRoute` for the relationship for the object's class with the given name to compute the path. Cannot be nil. + @param method The HTTP method for the request. + @param parameters The parameters to be encoded and appended as the query string for the request URL, or parameterized and set as the request body. May be nil. + @return An `NSMutableURLRequest` object for the specified relationship. + + @raises NSInvalidArgumentException Raised if no route is configured for a relationship of the given object's class with the given name. + @see `requestWithObject:method:path:parameters` + */ +- (NSMutableURLRequest *)requestWithPathForRelationship:(NSString *)relationship + ofObject:(id)object + method:(RKRequestMethod)method + parameters:(NSDictionary *)parameters; + +///----------------------------------------- +/// @name Creating Object Request Operations +///----------------------------------------- + +/** + Attempts to register a subclass of `RKHTTPRequestOperation` or `RKObjectRequestOperation`, adding it to a list of classes that are consulted each time the receiver needs to construct an HTTP or object request operation with a URL request. + + When `objectRequestOperationWithRequest:success:failure:` or `managedObjectRequestOperationWithRequest:managedObjectContext:success:failure:` is invoked, each registered subclass is consulted to see if it can handle the request. The first class to return `YES` when sent a `+ canProcessRequest:` message is used to create an operation using `initWithHTTPRequestOperation:responseDescriptors:`. The type of HTTP request operation used to initialize the object request operation is determined by evaluating the subclasses of `RKHTTPRequestOperation` registered via `registerRequestOperationClass:` and defaults to `RKHTTPRequestOperation`. + + There is no guarantee that all registered classes will be consulted. The object manager will only consider direct subclasses of `RKObjectRequestOperation` when `objectRequestOperationWithRequest:success:failure` is called and will only consider subclasses of `RKManagedObjectRequestOperation` when `managedObjectRequestOperationWithRequest:managedObjectContext:success:failure:` is called. If you wish to map a mixture of managed and unmanaged objects within the same object request operation you must register a `RKManagedObjectRequestOperation` subclass. Classes are consulted in the reverse order of their registration. Attempting to register an already-registered class will move it to the top of the list. + + @param operationClass The subclass of `RKHTTPRequestOperation` or `RKObjectRequestOperation` to register. + @return `YES` if the given class was registered successfully, else `NO`. The only failure condition is if `operationClass` is not a subclass of `RKHTTPRequestOperation` or `RKObjectRequestOperation`. + */ +- (BOOL)registerRequestOperationClass:(Class)operationClass; + +/** + Unregisters the specified subclass of `RKHTTPRequestOperation` or `RKObjectRequestOperation` from the list of classes consulted when `objectRequestOperationWithRequest:success:failure:` or `managedObjectRequestOperationWithRequest:managedObjectContext:success:failure:` is called. + + @param operationClass The subclass of `RKHTTPRequestOperation` or `RKObjectRequestOperation` to unregister. + */ +- (void)unregisterRequestOperationClass:(Class)operationClass; + +/** + Creates an `RKObjectRequestOperation` operation with the given request and sets the completion block with the given success and failure blocks. + + In order to determine what kind of operation is created, each registered `RKObjectRequestOperation` subclass is consulted (in reverse order of when they were specified) to see if it can handle the specific request. The first class to return `YES` when sent a `canProcessRequest:` message is used to create an operation using `initWithHTTPRequestOperation:responseDescriptors:`. The type of HTTP request operation used to initialize the object request operation is determined by evaluating the subclasses of `RKHTTPRequestOperation` registered via `registerRequestOperationClass:` and defaults to `RKHTTPRequestOperation`. + + @param request The request object to be loaded asynchronously during execution of the operation. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the created object request operation and the `RKMappingResult` object created by object mapping the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the resonse data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. + @return An `RKObjectRequestOperation` object that is ready to be sent. + + @warning Instances of `RKObjectRequestOperation` are not capable of mapping the loaded `NSHTTPURLResponse` into a Core Data entity. Use an instance of `RKManagedObjectRequestOperation` if the response is to be mapped using an `RKEntityMapping`. + */ +- (RKObjectRequestOperation *)objectRequestOperationWithRequest:(NSURLRequest *)request + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure; + +/** + Creates an `RKManagedObjectRequestOperation` operation with the given request and managed object context, and sets the completion block with the given success and failure blocks. + + The given managed object context given will be used as the parent context of the private managed context in which the response is mapped and will be used to fetch the results upon invocation of the success completion block. + + In order to determine what kind of operation is created, each registered `RKManagedObjectRequestOperation` subclass is consulted (in reverse order of when they were specified) to see if it can handle the specific request. The first class to return `YES` when sent a `canProcessRequest:` message is used to create an operation using `initWithHTTPRequestOperation:responseDescriptors:`. The type of HTTP request operation used to initialize the object request operation is determined by evaluating the subclasses of `RKHTTPRequestOperation` registered via `registerRequestOperationClass:` and defaults to `RKHTTPRequestOperation`. + + @param request The request object to be loaded asynchronously during execution of the operation. + @param managedObjectContext The managed object context with which to associate the operation. This context will be used as the parent context of a new operation local `NSManagedObjectContext` with the `NSPrivateQueueConcurrencyType` concurrency type. Upon success, the private context will be saved and changes resulting from the object mapping will be 'pushed' to the given context. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the created object request operation and the `RKMappingResult` object created by object mapping the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the resonse data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. + @return An `RKObjectRequestOperation` object that is ready to be sent. + + @see `RKManagedObjectRequestOperation` + */ +#ifdef RKCoreDataIncluded +- (RKManagedObjectRequestOperation *)managedObjectRequestOperationWithRequest:(NSURLRequest *)request + managedObjectContext:(NSManagedObjectContext *)managedObjectContext + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure; +#endif + +/** + Creates and returns an object request operation of the appropriate type for the given object, request method, path, and parameters. + + The type of object request operation created is determined by evaluating the type of the object given and examining the list of `RKResponseDescriptor` objects added to the manager. + + If the given object is non-nil and inherits from `NSManagedObject`, then an instance of `RKManagedObjectRequestOperation` is returned. + + If the given object is nil, then the `RKResponseDescriptor` objects added to the manager are evaluated to determine the type of operation created. In this case, the path of the operation is used to filter the set of `RKResponseDescriptor` objects to those that may be used to map the response. If the path is nil, the router is consulted to determine an appropriate path with which to perform the matching. If the filtered array of matching response descriptors defines a mapping configuration with an `RKEntityMapping` object, then an `RKManagedObjectRequestOperation` is returned; otherwise an `RKObjectRequestOperation` is returned. + + If an `RKManagedObjectRequestOperation` operation is created, the managed object context used will be the `mainQueueManagedObjectContext` of the manager's `managedObjectStore`. + + @param object The object with which to construct the object request operation. May be nil. + @param method The request method for the request. + @param path The path to be appended to the HTTP client's baseURL and set as the URL of the request. If nil, the router is consulted. + @param parameters The parameters to be either set as a query string for `GET` requests, or reverse merged with the parameterization of the object and set as the request HTTP body. + + @return A newly created `RKObjectRequestOperation` or `RKManagedObjectRequest` operation as deemed appropriate by the manager for the given parameters. + @warning The given object must be a single object instance. Collections are not yet supported. + + @see `requestWithObject:method:path:parameters` + */ +- (id)appropriateObjectRequestOperationWithObject:(id)object + method:(RKRequestMethod)method + path:(NSString *)path + parameters:(NSDictionary *)parameters; + +///-------------------------------------------------- +/// @name Managing Enqueued Object Request Operations +///-------------------------------------------------- + +/** + Enqueues an `RKObjectRequestOperation` to the object manager's operation queue. + + @param objectRequestOperation The object request operation to be enqueued. + */ +- (void)enqueueObjectRequestOperation:(RKObjectRequestOperation *)objectRequestOperation; + +/** + Returns an array of operations in the object manager's operation queue whose requests match the specified HTTP method and path pattern. + + Paths are matches against the `path` of the `NSURL` of the `NSURLRequest` of each `RKObjectRequestOperation` contained in the receiver's operation queue using a `RKPathMatcher` object. + + @param method The HTTP method to match for the cancelled requests, such as `RKRequestMethodGET`, `RKRequestMethodPOST`, `RKRequestMethodPUT`, `RKRequestMethodPatch`, or `RKRequestMethodDELETE`. If `RKRequestMethodAny`, all object request operations with URLs matching the given path pattern will be cancelled. Multiple methods may be specified by using a bitwise OR operation. + @param pathPattern The pattern to match against the path of the request URL for executing object request operations considered for cancellation. + @return A new array containing all enqueued `RKObjectRequestOperation` objects that match the given HTTP method and path pattern. + @see `RKPathMatcher` + */ +- (NSArray *)enqueuedObjectRequestOperationsWithMethod:(RKRequestMethod)method matchingPathPattern:(NSString *)pathPattern; + +/** + Cancels all operations in the object manager's operation queue whose requests match the specified HTTP method and path pattern. + + Paths are matches against the `path` of the `NSURL` of the `NSURLRequest` of each `RKObjectRequestOperation` contained in the receiver's operation queue using a `RKPathMatcher` object. + + @param method The HTTP method to match for the cancelled requests, such as `RKRequestMethodGET`, `RKRequestMethodPOST`, `RKRequestMethodPUT`, `RKRequestMethodPatch`, or `RKRequestMethodDELETE`. If `RKRequestMethodAny`, all object request operations with URLs matching the given path pattern will be cancelled. + @param pathPattern The pattern to match against the path of the request URL for executing object request operations considered for cancellation. + + @see `RKPathMatcher` + */ +- (void)cancelAllObjectRequestOperationsWithMethod:(RKRequestMethod)method matchingPathPattern:(NSString *)pathPattern; + +///----------------------------------------- +/// @name Batching Object Request Operations +///----------------------------------------- + +/** + Creates and enqueues an `RKObjectRequestOperation` to the object manager's operation queue for each specified object into a batch. Each object request operation is built by evaluating the object against the given route to construct a request path and then invoking `appropriateObjectRequestOperationWithObject:method:path:parameters:`. When each object request operation finishes, the specified progress block is executed, until all of the request operations have finished, at which point the completion block also executes. + + @warning Note that the route type is significant in how that the object request operation is constructed. If the given route is a class route, then the `targetObject` of the operation will be set to the object for which the operation is being constructed. For named routes and relationship routes, the target object is `nil`. + + @param route The route specifying the request method and the path pattern with which to construct the request for each object object request operation in the batch. + @param objects The set of objects for which to enqueue a batch of object request operations. + @param progress A block object to be executed when an object request operation completes. This block has no return value and takes two arguments: the number of finished operations and the total number of operations initially executed. + @param completion A block object to be executed when the object request operations complete. This block has no return value and takes one argument: the list of operations executed. + + @see `[RKObjectManager enqueueBatchOfObjectRequestOperations:progress:completion]` + @see `RKRoute` + */ +- (void)enqueueBatchOfObjectRequestOperationsWithRoute:(RKRoute *)route + objects:(NSArray *)objects + progress:(void (^)(NSUInteger numberOfFinishedOperations, + NSUInteger totalNumberOfOperations))progress + completion:(void (^)(NSArray *operations))completion; + +/** + Enqueues a set of `RKObjectRequestOperation` to the object manager's operation queue. + + @param operations The set of object request operations to be enqueued. + @param progress A block object to be executed when an object request operation completes. This block has no return value and takes two arguments: the number of finished operations and the total number of operations initially executed. + @param completion A block object to be executed when the object request operations complete. This block has no return value and takes one argument: the list of operations executed. + + */ +- (void)enqueueBatchOfObjectRequestOperations:(NSArray *)operations + progress:(void (^)(NSUInteger numberOfFinishedOperations, + NSUInteger totalNumberOfOperations))progress + completion:(void (^)(NSArray *operations))completion; + +///------------------------------------- +/// @name Making Object Requests by Path +///------------------------------------- + +/** + Creates an `RKObjectRequestOperation` with a `GET` request with a URL for the given path, and enqueues it to the manager's operation queue. + + The type of object request operation created is determined by invoking `appropriateObjectRequestOperationWithObject:method:path:parameters:`. + + @param path The path to be appended to the HTTP client's base URL and used as the request URL. + @param parameters The parameters to be encoded and appended as the query string for the request URL. + @param success A block object to be executed when the object request operation finishes successfully. This block has no return value and takes two arguments: the created object request operation and the `RKMappingResult` object created by object mapping the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the resonse data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. + + @see [RKObjectManager appropriateObjectRequestOperationWithObject:method:path:parameters:] + */ +- (void)getObjectsAtPath:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure; + +/** + Creates an `RKObjectRequestOperation` with a `GET` request for the relationship with the given name of the given object, and enqueues it to the manager's operation queue. + + The type of object request operation created is determined by invoking `appropriateObjectRequestOperationWithObject:method:path:parameters:`. + + @param relationshipName The name of the relationship being loaded. Used to retrieve the `RKRoute` object from the router for the given object's class and the relationship name. Cannot be nil. + @param object The object for which related objects are being loaded. Evaluated against the `RKRoute` for the relationship for the object's class with the given name to compute the path. Cannot be nil. + @param parameters The parameters to be encoded and appended as the query string for the request URL. May be nil. + @param success A block object to be executed when the object request operation finishes successfully. This block has no return value and takes two arguments: the created object request operation and the mapped result created from object mapping the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the resonse data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. + + @raises NSInvalidArgumentException Raised if no route is configured for a relationship of the given object's class with the given name. + @see [RKRouter URLForRelationship:ofObject:method:] + @see [RKObjectManager appropriateObjectRequestOperationWithObject:method:path:parameters:] + */ +- (void)getObjectsAtPathForRelationship:(NSString *)relationshipName + ofObject:(id)object + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure; + +/** + Creates an `RKObjectRequestOperation` with a `GET` request for the URL returned by the router for the given route name, and enqueues it to the manager's operation queue. + + The type of object request operation created is determined by invoking `appropriateObjectRequestOperationWithObject:method:path:parameters:`. + + @param routeName The name of the route being loaded. Used to retrieve the `RKRoute` object from the router with the given name. Cannot be nil. + @param object The object to be interpolated against the path pattern of the `RKRoute` object retrieved with the given name. Used to compute the path to be appended to the HTTP client's base URL and used as the request URL. May be nil. + @param parameters The parameters to be encoded and appended as the query string for the request URL. May be nil. + @param success A block object to be executed when the object request operation finishes successfully. This block has no return value and takes two arguments: the created object request operation and the mapped result created from object mapping the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the resonse data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. + + @raises NSInvalidArgumentException Raised if no route is configured with the given name or the route returned specifies an HTTP method other than `GET`. + @see [RKRouter URLForRouteNamed:method:object:] + @see [RKObjectManager appropriateObjectRequestOperationWithObject:method:path:parameters:] + */ +- (void)getObjectsAtPathForRouteNamed:(NSString *)routeName + object:(id)object + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure; + +///------------------------------------------- +/// @name Making Object Requests for an Object +///------------------------------------------- + +/** + Creates an `RKObjectRequestOperation` with a `GET` request for the given object, and enqueues it to the manager's operation queue. + + The type of object request operation created is determined by invoking `appropriateObjectRequestOperationWithObject:method:path:parameters:`. + + @param object The object with which to construct the object request operation. If `nil`, then the path must be provided. + @param path The path to be appended to the HTTP client's base URL and used as the request URL. If nil, the request URL will be obtained by consulting the router for a route registered for the given object's class and the `RKRequestMethodGET` request method. + @param parameters The parameters to be encoded and appended as the query string for the request URL. + @param success A block object to be executed when the object request operation finishes successfully. This block has no return value and takes two arguments: the created object request operation and the `RKMappingResult` object created by object mapping the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the resonse data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. + + @see [RKRouter URLForObject:method:] + @see [RKObjectManager appropriateObjectRequestOperationWithObject:method:path:parameters:] + */ +- (void)getObject:(id)object + path:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure; + +/** + Creates an `RKObjectRequestOperation` with a `POST` request for the given object, and enqueues it to the manager's operation queue. + + @param object The object with which to construct the object request operation. If `nil`, then the path must be provided. + @param path The path to be appended to the HTTP client's base URL and used as the request URL. If nil, the request URL will be obtained by consulting the router for a route registered for the given object's class and the `RKRequestMethodPOST` method. + @param parameters The parameters to be reverse merged with the parameterization of the given object and set as the request body. + @param success A block object to be executed when the object request operation finishes successfully. This block has no return value and takes two arguments: the created object request operation and the `RKMappingResult` object created by object mapping the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the resonse data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. + + @see [RKRouter URLForObject:method:] + @see [RKObjectManager appropriateObjectRequestOperationWithObject:method:path:parameters:] + */ +- (void)postObject:(id)object + path:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure; + +/** + Creates an `RKObjectRequestOperation` with a `PUT` request for the given object, and enqueues it to the manager's operation queue. + + @param object The object with which to construct the object request operation. If `nil`, then the path must be provided. + @param path The path to be appended to the HTTP client's base URL and used as the request URL. If nil, the request URL will be obtained by consulting the router for a route registered for the given object's class and the `RKRequestMethodPUT` method. + @param parameters The parameters to be reverse merged with the parameterization of the given object and set as the request body. + @param success A block object to be executed when the object request operation finishes successfully. This block has no return value and takes two arguments: the created object request operation and the `RKMappingResult` object created by object mapping the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the resonse data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. + + @see [RKRouter URLForObject:method:] + @see [RKObjectManager appropriateObjectRequestOperationWithObject:method:path:parameters:] + */ +- (void)putObject:(id)object + path:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure; + +/** + Creates an `RKObjectRequestOperation` with a `PATCH` request for the given object, and enqueues it to the manager's operation queue. + + @param object The object with which to construct the object request operation. If `nil`, then the path must be provided. + @param path The path to be appended to the HTTP client's base URL and used as the request URL. If nil, the request URL will be obtained by consulting the router for a route registered for the given object's class and the `RKRequestMethodPATCH` method. + @param parameters The parameters to be reverse merged with the parameterization of the given object and set as the request body. + @param success A block object to be executed when the object request operation finishes successfully. This block has no return value and takes two arguments: the created object request operation and the `RKMappingResult` object created by object mapping the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the resonse data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. + + @see [RKRouter URLForObject:method:] + @see [RKObjectManager appropriateObjectRequestOperationWithObject:method:path:parameters:] + */ +- (void)patchObject:(id)object + path:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure; + +/** + Creates an `RKObjectRequestOperation` with a `DELETE` request for the given object, and enqueues it to the manager's operation queue. + + The type of object request operation created is determined by invoking `appropriateObjectRequestOperationWithObject:method:path:parameters:`. + + @param object The object with which to construct the object request operation. If `nil`, then the path must be provided. + @param path The path to be appended to the HTTP client's base URL and used as the request URL. If nil, the request URL will be obtained by consulting the router for a route registered for the given object's class and the `RKRequestMethodDELETE` request method. + @param parameters The parameters to be encoded and appended as the query string for the request URL. + @param success A block object to be executed when the object request operation finishes successfully. This block has no return value and takes two arguments: the created object request operation and the `RKMappingResult` object created by object mapping the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the resonse data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. + + @see [RKRouter URLForObject:method:] + @see [RKObjectManager appropriateObjectRequestOperationWithObject:method:path:parameters:] + */ +- (void)deleteObject:(id)object + path:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure; + +///------------------------------------------------ +/// @name Managing Request and Response Descriptors +///------------------------------------------------ + +/** + Returns an array containing the `RKRequestDescriptor` objects added to the manager. + + @return An array containing the request descriptors of the receiver. The elements of the array are instances of `RKRequestDescriptor`. + + @see RKRequestDescriptor + */ +@property (nonatomic, readonly) NSArray *requestDescriptors; + +/** + Adds a request descriptor to the manager. + + @param requestDescriptor The request descriptor object to the be added to the manager. + */ +- (void)addRequestDescriptor:(RKRequestDescriptor *)requestDescriptor; + +/** + Adds the `RKRequestDescriptor` objects contained in a given array to the manager. + + @param requestDescriptors An array of `RKRequestDescriptor` objects to be added to the manager. + @exception NSInvalidArgumentException Raised if any element of the given array is not an `RKRequestDescriptor` object. + */ +- (void)addRequestDescriptorsFromArray:(NSArray *)requestDescriptors; + +/** + Removes a given request descriptor from the manager. + + @param requestDescriptor An `RKRequestDescriptor` object to be removed from the manager. + */ +- (void)removeRequestDescriptor:(RKRequestDescriptor *)requestDescriptor; + +/** + Returns an array containing the `RKResponseDescriptor` objects added to the manager. + + @return An array containing the request descriptors of the receiver. The elements of the array are instances of `RKRequestDescriptor`. + + @see RKResponseDescriptor + */ +@property (nonatomic, readonly) NSArray *responseDescriptors; + +/** + Adds a response descriptor to the manager. + + Adding a response descriptor to the manager sets the `baseURL` of the descriptor to the `baseURL` of the manager, causing it to evaluate URL objects relatively. + + @param responseDescriptor The response descriptor object to the be added to the manager. + */ +- (void)addResponseDescriptor:(RKResponseDescriptor *)responseDescriptor; + +/** + Adds the `RKResponseDescriptor` objects contained in a given array to the manager. + + @param responseDescriptors An array of `RKResponseDescriptor` objects to be added to the manager. + @exception NSInvalidArgumentException Raised if any element of the given array is not an `RKResponseDescriptor` object. + */ +- (void)addResponseDescriptorsFromArray:(NSArray *)responseDescriptors; + +/** + Removes a given response descriptor from the manager. + + @param responseDescriptor An `RKResponseDescriptor` object to be removed from the manager. + */ +- (void)removeResponseDescriptor:(RKResponseDescriptor *)responseDescriptor; + +///---------------------------------------- +/// @name Configuring Core Data Integration +///---------------------------------------- + +#ifdef RKCoreDataIncluded +/** + A Core Data backed object store for persisting objects that have been fetched from the Web + */ +@property (nonatomic, strong) RKManagedObjectStore *managedObjectStore; + +/** + An array of `RKFetchRequestBlock` blocks used to map `NSURL` objects into corresponding `NSFetchRequest` objects. + + When searched, the blocks are iterated in the reverse-order of their registration and the first block with a non-nil return value halts the search. + */ +@property (nonatomic, readonly) NSArray *fetchRequestBlocks; + +/** + Adds the given `RKFetchRequestBlock` block to the manager. + + @param block A block object to be executed when constructing an `NSFetchRequest` object from a given `NSURL`. The block has a return type of `NSFetchRequest` and accepts a single `NSURL` argument. + */ +- (void)addFetchRequestBlock:(NSFetchRequest *(^)(NSURL *URL))block; +#endif + +///------------------------------------ +/// @name Accessing Paginated Resources +///------------------------------------ + +/** + The object mapping describing how to map pagination metadata from paginated responses. + + The object mapping must have an object class of `RKPaginator`. + + @see [RKPaginator initWithRequest:paginationMapping:responseDescriptors] + */ +@property (nonatomic, strong) RKObjectMapping *paginationMapping; + +/** + Creates and returns a paginator object configured to paginate the collection resource accessible at the specified path pattern. + + The paginator instantiated will be initialized with a URL built by appending the given pathPattern to the baseURL of the client. The response descriptors and Core Data configuration, if any, are inherited from the receiver. + + @param pathPattern A patterned URL fragment to be appended to the baseURL of the receiver in order to construct the pattern URL with which to access the paginated collection. + @return The newly created paginator instance. + @see RKPaginator + @warning Will raise an exception if the value of the `paginationMapping` property is nil. + */ +- (RKPaginator *)paginatorWithPathPattern:(NSString *)pathPattern; + +/** + Creates and returns a paginator object configured to paginate the collection resource accessible at the specified path pattern and the given parameters. + + The paginator instantiated will be initialized with a URL built by appending the given pathPattern to the baseURL of the client and the given parameters if any. The response descriptors and Core Data configuration, if any, are inherited from the receiver. + + @param pathPattern A patterned URL fragment to be appended to the baseURL of the receiver in order to construct the pattern URL with which to access the paginated collection. + @param parameters The parameters to be encoded and appended as the query string for the request URL. May be nil. + @return The newly created paginator instance. + @see RKPaginator + @warning Will raise an exception if the value of the `paginationMapping` property is nil. + */ +- (RKPaginator *)paginatorWithPathPattern:(NSString *)pathPattern parameters:(NSDictionary *)parameters; + +@end + +#ifdef _SYSTEMCONFIGURATION_H +/** + Returns a string description of the given network status. + + @param networkReachabilityStatus The network reachability status. + @return A string describing the reachability status. + */ +NSString *RKStringFromNetworkReachabilityStatus(AFNetworkReachabilityStatus networkReachabilityStatus); +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectManager.m b/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectManager.m new file mode 100644 index 0000000..800f84e --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectManager.m @@ -0,0 +1,1018 @@ +// +// RKObjectManager.m +// RestKit +// +// Created by Jeremy Ellison on 8/14/09. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <objc/runtime.h> +#import "RKObjectManager.h" +#import "RKObjectParameterization.h" +#import "RKRequestDescriptor.h" +#import "RKResponseDescriptor.h" +#import "RKDictionaryUtilities.h" +#import "RKMIMETypes.h" +#import "RKLog.h" +#import "RKMIMETypeSerialization.h" +#import "RKPathMatcher.h" +#import "RKMappingErrors.h" +#import "RKPaginator.h" +#import "RKDynamicMapping.h" +#import "RKRelationshipMapping.h" +#import "RKObjectRequestOperation.h" +#import "RKRouter.h" +#import "RKRoute.h" +#import "RKRouteSet.h" + +#ifdef _COREDATADEFINES_H +#if __has_include("RKCoreData.h") +#define RKCoreDataIncluded +#import "RKManagedObjectStore.h" +#import "RKManagedObjectRequestOperation.h" +#endif +#endif + +#if !__has_feature(objc_arc) +#error RestKit must be built with ARC. +// You can turn on ARC for only RestKit files by adding "-fobjc-arc" to the build phase for each of its files. +#endif + +////////////////////////////////// +// Shared Instance + +static RKObjectManager *sharedManager = nil; + +////////////////////////////////// +// Utility Functions + +/** + Returns the subset of the given array of `RKResponseDescriptor` objects that match the given path. + + @param responseDescriptors An array of `RKResponseDescriptor` objects. + @param path The path for which to select matching response descriptors. + @param method The method for which to select matching response descriptors. + @return An `NSArray` object whose elements are `RKResponseDescriptor` objects matching the given path and method. + */ +#ifdef RKCoreDataIncluded +static NSArray *RKFilteredArrayOfResponseDescriptorsMatchingPathAndMethod(NSArray *responseDescriptors, NSString *path, RKRequestMethod method) +{ + NSIndexSet *indexSet = [responseDescriptors indexesOfObjectsPassingTest:^BOOL(RKResponseDescriptor *responseDescriptor, NSUInteger idx, BOOL *stop) { + return [responseDescriptor matchesPath:path] && (method & responseDescriptor.method); + }]; + return [responseDescriptors objectsAtIndexes:indexSet]; +} +#endif + +/** + Returns the first `RKRequestDescriptor` object from the given array that matches the given object. + + @param requestDescriptors An array of `RKRequestDescriptor` objects. + @param object The object to find a matching request descriptor for. + @return An `RKRequestDescriptor` object matching the given object, or `nil` if none could be found. + */ +RKRequestDescriptor *RKRequestDescriptorFromArrayMatchingObjectAndRequestMethod(NSArray *requestDescriptors, id object, RKRequestMethod requestMethod); +RKRequestDescriptor *RKRequestDescriptorFromArrayMatchingObjectAndRequestMethod(NSArray *requestDescriptors, id object, RKRequestMethod requestMethod) +{ + Class searchClass = [object class]; + do { + for (RKRequestDescriptor *requestDescriptor in requestDescriptors) { + if ([requestDescriptor.objectClass isEqual:searchClass] && (requestMethod == requestDescriptor.method)) return requestDescriptor; + } + + for (RKRequestDescriptor *requestDescriptor in requestDescriptors) { + if ([requestDescriptor.objectClass isEqual:searchClass] && (requestMethod & requestDescriptor.method)) return requestDescriptor; + } + searchClass = [searchClass superclass]; + } while (searchClass); + + return nil; +} + +extern NSString *RKStringDescribingRequestMethod(RKRequestMethod method); + +@interface RKObjectParameters : NSObject + +@property (nonatomic, strong) NSMutableDictionary *parameters; +- (void)addParameters:(NSDictionary *)serialization atRootKeyPath:(NSString *)rootKeyPath inArray:(BOOL)inArray; + +@end + +@implementation RKObjectParameters + +- (instancetype)init +{ + self = [super init]; + if (self) { + self.parameters = [NSMutableDictionary new]; + } + return self; +} + +- (void)addParameters:(NSDictionary *)parameters atRootKeyPath:(NSString *)rootKeyPath inArray:(BOOL)inArray +{ + id rootKey = rootKeyPath ?: [NSNull null]; + id nonNestedParameters = rootKeyPath ? parameters[rootKeyPath] : parameters; + id value = (self.parameters)[rootKey]; + if (value) { + if ([value isKindOfClass:[NSMutableArray class]]) { + [value addObject:nonNestedParameters]; + } else if ([value isKindOfClass:[NSDictionary class]]) { + NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:value, nonNestedParameters, nil]; + (self.parameters)[rootKey] = mutableArray; + } else { + [NSException raise:NSInvalidArgumentException format:@"Unexpected argument of type '%@': expected an NSDictionary or NSArray.", [value class]]; + } + } else { + (self.parameters)[rootKey] = (inArray ? @[ nonNestedParameters ] : nonNestedParameters); + } +} + +- (id)requestParameters +{ + if ([self.parameters count] == 0) return nil; + id valueAtNullKey = (self.parameters)[[NSNull null]]; + if (valueAtNullKey) { + if ([self.parameters count] == 1) return valueAtNullKey; + + // If we have values at `[NSNull null]` and other key paths, we have an invalid configuration + [NSException raise:NSInvalidArgumentException format:@"Invalid request descriptor configuration: The request descriptors specify that multiple objects be serialized at incompatible key paths. Cannot serialize objects at the `nil` root key path in the same request as objects with a non-nil root key path. Please check your request descriptors and try again."]; + } + return self.parameters; +} + +@end + +/** + Visits all mappings accessible via relationships or dynamic mapping in an object graph starting from a given mapping. + */ +@interface RKMappingGraphVisitor : NSObject + +@property (nonatomic, readonly) NSSet *mappings; + +- (instancetype)initWithMapping:(RKMapping *)mapping NS_DESIGNATED_INITIALIZER; + +@end + +@interface RKMappingGraphVisitor () +@property (nonatomic, readwrite) NSMutableSet *mutableMappings; +@end + +@implementation RKMappingGraphVisitor + +- (instancetype)initWithMapping:(RKMapping *)mapping +{ + self = [super init]; + if (self) { + self.mutableMappings = [NSMutableSet set]; + [self visitMapping:mapping]; + } + return self; +} + +- (NSSet *)mappings +{ + return self.mutableMappings; +} + +- (void)visitMapping:(RKMapping *)mapping +{ + if ([self.mappings containsObject:mapping]) return; + [self.mutableMappings addObject:mapping]; + + if ([mapping isKindOfClass:[RKDynamicMapping class]]) { + RKDynamicMapping *dynamicMapping = (RKDynamicMapping *)mapping; + for (RKMapping *nestedMapping in dynamicMapping.objectMappings) { + [self visitMapping:nestedMapping]; + } + } else if ([mapping isKindOfClass:[RKObjectMapping class]]) { + RKObjectMapping *objectMapping = (RKObjectMapping *)mapping; + for (RKRelationshipMapping *relationshipMapping in objectMapping.relationshipMappings) { + [self visitMapping:relationshipMapping.mapping]; + } + } +} + +@end + +/** + Returns `YES` if the given array of `RKResponseDescriptor` objects contains an `RKEntityMapping` anywhere in its object graph. + + @param responseDescriptors An array of `RKResponseDescriptor` objects. + @return `YES` if the `mapping` property of any of the response descriptor objects in the given array is an instance of `RKEntityMapping`, else `NO`. + */ +#ifdef RKCoreDataIncluded +static BOOL RKDoesArrayOfResponseDescriptorsContainEntityMapping(NSArray *responseDescriptors) +{ + // Visit all mappings accessible from the object graphs of all response descriptors + NSMutableSet *accessibleMappings = [NSMutableSet set]; + for (RKResponseDescriptor *responseDescriptor in responseDescriptors) { + if (! [accessibleMappings containsObject:responseDescriptor.mapping]) { + RKMappingGraphVisitor *graphVisitor = [[RKMappingGraphVisitor alloc] initWithMapping:responseDescriptor.mapping]; + [accessibleMappings unionSet:graphVisitor.mappings]; + } + } + + // Enumerate all mappings and search for an `RKEntityMapping` + for (RKMapping *mapping in accessibleMappings) { + if ([mapping isKindOfClass:[RKEntityMapping class]]) { + return YES; + } + + if ([mapping isKindOfClass:[RKDynamicMapping class]]) { + RKDynamicMapping *dynamicMapping = (RKDynamicMapping *)mapping; + if ([dynamicMapping.objectMappings count] == 0) { + // Likely means that there is a representation block, assume `YES` + return YES; + } + } + } + + return NO; +} +#endif + +BOOL RKDoesArrayOfResponseDescriptorsContainOnlyEntityMappings(NSArray *responseDescriptors); +BOOL RKDoesArrayOfResponseDescriptorsContainOnlyEntityMappings(NSArray *responseDescriptors) +{ +#ifdef RKCoreDataIncluded + // Visit all mappings accessible from the object graphs of all response descriptors + NSMutableSet *accessibleMappings = [NSMutableSet set]; + for (RKResponseDescriptor *responseDescriptor in responseDescriptors) { + if (! [accessibleMappings containsObject:responseDescriptor.mapping]) { + RKMappingGraphVisitor *graphVisitor = [[RKMappingGraphVisitor alloc] initWithMapping:responseDescriptor.mapping]; + [accessibleMappings unionSet:graphVisitor.mappings]; + } + } + + NSMutableSet *mappingClasses = [NSMutableSet set]; + // Enumerate all mappings and search for an `RKEntityMapping` + for (RKMapping *mapping in accessibleMappings) { + if ([mapping isKindOfClass:[RKDynamicMapping class]]) { + [mappingClasses addObjectsFromArray:[[(RKDynamicMapping *)mapping objectMappings] valueForKey:@"class"]]; + } else { + [mappingClasses addObject:mapping.class]; + } + } + + if ([mappingClasses count]) { + for (Class mappingClass in mappingClasses) { + if (! [mappingClass isSubclassOfClass:[RKEntityMapping class]]) { + return NO; + } + } + return YES; + } +#endif + + return NO; +} + +static BOOL RKDoesArrayOfResponseDescriptorsContainMappingForClass(NSArray *responseDescriptors, Class classToBeMapped) +{ + // Visit all mappings accessible from the object graphs of all response descriptors + NSMutableSet *accessibleMappings = [NSMutableSet set]; + for (RKResponseDescriptor *responseDescriptor in responseDescriptors) { + if (! [accessibleMappings containsObject:responseDescriptor.mapping]) { + RKMappingGraphVisitor *graphVisitor = [[RKMappingGraphVisitor alloc] initWithMapping:responseDescriptor.mapping]; + [accessibleMappings unionSet:graphVisitor.mappings]; + } + } + + // Enumerate all mappings and search for a mapping matching the class + for (RKMapping *mapping in accessibleMappings) { + if ([mapping isKindOfClass:[RKObjectMapping class]]) { + if ([[(RKObjectMapping *)mapping objectClass] isSubclassOfClass:classToBeMapped]) return YES; + } + + if ([mapping isKindOfClass:[RKDynamicMapping class]]) { + RKDynamicMapping *dynamicMapping = (RKDynamicMapping *)mapping; + for (RKObjectMapping *mapping in dynamicMapping.objectMappings) { + if ([[(RKObjectMapping *)mapping objectClass] isSubclassOfClass:classToBeMapped]) return YES; + } + } + } + + return NO; +} + +static NSString *RKMIMETypeFromAFHTTPClientParameterEncoding(AFHTTPClientParameterEncoding encoding) +{ + switch (encoding) { + case AFFormURLParameterEncoding: + return RKMIMETypeFormURLEncoded; + break; + + case AFJSONParameterEncoding: + return RKMIMETypeJSON; + break; + + case AFPropertyListParameterEncoding: + break; + + default: + RKLogWarning(@"RestKit is unable to infer the appropriate request serialization MIME Type from an `AFHTTPClientParameterEncoding` value of %d: defaulting to `RKMIMETypeFormURLEncoded`", encoding); + break; + } + + return RKMIMETypeFormURLEncoded; +} + +@interface AFHTTPClient () +@property (readonly, nonatomic, strong) NSURLCredential *defaultCredential; +@end + +/////////////////////////////////// + +@interface RKObjectManager () +@property (nonatomic, strong) NSMutableArray *mutableRequestDescriptors; +@property (nonatomic, strong) NSMutableArray *mutableResponseDescriptors; +@property (nonatomic, strong) NSMutableArray *mutableFetchRequestBlocks; +@property (nonatomic, strong) NSMutableArray *registeredHTTPRequestOperationClasses; +@property (nonatomic, strong) NSMutableArray *registeredObjectRequestOperationClasses; +@property (nonatomic, strong) NSMutableArray *registeredManagedObjectRequestOperationClasses; + +@end + +@implementation RKObjectManager + +- (instancetype)initWithHTTPClient:(AFHTTPClient *)client +{ + self = [super init]; + if (self) { + self.HTTPClient = client; + self.router = [[RKRouter alloc] initWithBaseURL:client.baseURL]; + self.operationQueue = [NSOperationQueue new]; + self.mutableRequestDescriptors = [NSMutableArray new]; + self.mutableResponseDescriptors = [NSMutableArray new]; + self.mutableFetchRequestBlocks = [NSMutableArray new]; + self.registeredHTTPRequestOperationClasses = [NSMutableArray new]; + self.registeredManagedObjectRequestOperationClasses = [NSMutableArray new]; + self.registeredObjectRequestOperationClasses = [NSMutableArray new]; + self.requestSerializationMIMEType = RKMIMETypeFromAFHTTPClientParameterEncoding(client.parameterEncoding); + + // Set shared manager if nil + if (nil == sharedManager) { + [RKObjectManager setSharedManager:self]; + } + } + + return self; +} + ++ (instancetype)sharedManager +{ + return sharedManager; +} + ++ (void)setSharedManager:(RKObjectManager *)manager +{ + sharedManager = manager; +} + ++ (RKObjectManager *)managerWithBaseURL:(NSURL *)baseURL +{ + RKObjectManager *manager = [[self alloc] initWithHTTPClient:[AFHTTPClient clientWithBaseURL:baseURL]]; + [manager.HTTPClient registerHTTPOperationClass:[AFJSONRequestOperation class]]; + [manager setAcceptHeaderWithMIMEType:RKMIMETypeJSON]; + manager.requestSerializationMIMEType = RKMIMETypeFormURLEncoded; + return manager; +} + +- (void)setAcceptHeaderWithMIMEType:(NSString *)MIMEType; +{ + [self.HTTPClient setDefaultHeader:@"Accept" value:MIMEType]; +} + +- (NSURL *)baseURL +{ + return self.HTTPClient.baseURL; +} + +- (NSDictionary *)defaultHeaders +{ + return self.HTTPClient.defaultHeaders; +} + +#pragma mark - Building Requests + +/** + This method is the `RKObjectManager` analog for the method of the same name on `AFHTTPClient`. + */ +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method + path:(NSString *)path + parameters:(NSDictionary *)parameters +{ + NSMutableURLRequest* request; + if (parameters && !([method isEqualToString:@"GET"] || [method isEqualToString:@"HEAD"] || [method isEqualToString:@"DELETE"])) { + // NOTE: If the HTTP client has been subclasses, then the developer may be trying to perform signing on the request + NSDictionary *parametersForClient = [self.HTTPClient isMemberOfClass:[AFHTTPClient class]] ? nil : parameters; + request = [self.HTTPClient requestWithMethod:method path:path parameters:parametersForClient]; + + NSError *error = nil; + NSString *charset = (__bridge NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(self.HTTPClient.stringEncoding)); + [request setValue:[NSString stringWithFormat:@"%@; charset=%@", self.requestSerializationMIMEType, charset] forHTTPHeaderField:@"Content-Type"]; + NSData *requestBody = [RKMIMETypeSerialization dataFromObject:parameters MIMEType:self.requestSerializationMIMEType error:&error]; + [request setHTTPBody:requestBody]; + } else { + request = [self.HTTPClient requestWithMethod:method path:path parameters:parameters]; + } + + return request; +} + +- (NSMutableURLRequest *)requestWithPathForRouteNamed:(NSString *)routeName + object:(id)object + parameters:(NSDictionary *)parameters +{ + RKRequestMethod method; + NSURL *URL = [self.router URLForRouteNamed:routeName method:&method object:object]; + NSAssert(URL, @"No route found named '%@'", routeName); + return [self requestWithMethod:RKStringFromRequestMethod(method) path:[URL relativeString] parameters:parameters]; +} + +- (NSMutableURLRequest *)requestWithPathForRelationship:(NSString *)relationship + ofObject:(id)object + method:(RKRequestMethod)method + parameters:(NSDictionary *)parameters +{ + NSURL *URL = [self.router URLForRelationship:relationship ofObject:object method:method]; + NSAssert(URL, @"No relationship route found for the '%@' class with the name '%@'", NSStringFromClass([object class]), relationship); + return [self requestWithMethod:RKStringFromRequestMethod(method) path:[URL relativeString] parameters:parameters]; +} + +- (id)mergedParametersWithObject:(id)object method:(RKRequestMethod)method parameters:(NSDictionary *)parameters +{ + NSArray *objectsToParameterize = ([object isKindOfClass:[NSArray class]] || object == nil) ? object : @[ object ]; + RKObjectParameters *objectParameters = [RKObjectParameters new]; + for (id objectToParameterize in objectsToParameterize) { + RKRequestDescriptor *requestDescriptor = RKRequestDescriptorFromArrayMatchingObjectAndRequestMethod(self.requestDescriptors, objectToParameterize, method); + if ((method != RKRequestMethodGET && method != RKRequestMethodDELETE) && requestDescriptor) { + NSError *error = nil; + NSDictionary *parametersForObject = [RKObjectParameterization parametersWithObject:objectToParameterize requestDescriptor:requestDescriptor error:&error]; + if (error) { + RKLogError(@"Object parameterization failed while building %@ request for object '%@': %@", RKStringFromRequestMethod(method), objectToParameterize, error); + return nil; + } + // Ensure that a single object inputted as an array is emitted as an array when serialized + BOOL inArray = ([object isKindOfClass:[NSArray class]] && [object count] == 1); + [objectParameters addParameters:parametersForObject atRootKeyPath:requestDescriptor.rootKeyPath inArray:inArray]; + } + } + id requestParameters = [objectParameters requestParameters]; + + // Merge the extra parameters if possible + if ([requestParameters isKindOfClass:[NSArray class]] && parameters) { + [NSException raise:NSInvalidArgumentException format:@"Cannot merge parameters with array of object representations serialized with a nil root key path."]; + } else if (requestParameters && parameters) { + requestParameters = RKDictionaryByMergingDictionaryWithDictionary(requestParameters, parameters); + } else if (parameters && !requestParameters) { + requestParameters = parameters; + } + + return requestParameters; +} + +- (NSMutableURLRequest *)requestWithObject:(id)object + method:(RKRequestMethod)method + path:(NSString *)path + parameters:(NSDictionary *)parameters; +{ + NSString *requestPath = (path) ? path : [[self.router URLForObject:object method:method] relativeString]; + id requestParameters = [self mergedParametersWithObject:object method:method parameters:parameters]; + return [self requestWithMethod:RKStringFromRequestMethod(method) path:requestPath parameters:requestParameters]; +} + +- (NSMutableURLRequest *)multipartFormRequestWithObject:(id)object + method:(RKRequestMethod)method + path:(NSString *)path + parameters:(NSDictionary *)parameters + constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block +{ + NSString *requestPath = (path) ? path : [[self.router URLForObject:object method:method] relativeString]; + id requestParameters = [self mergedParametersWithObject:object method:method parameters:parameters]; + NSMutableURLRequest *multipartRequest = [self.HTTPClient multipartFormRequestWithMethod:RKStringFromRequestMethod(method) + path:requestPath + parameters:requestParameters + constructingBodyWithBlock:block]; + return multipartRequest; +} + +#pragma mark - Registering Subclasses + +- (BOOL)registerRequestOperationClass:(Class)operationClass +{ + Class managedObjectRequestOperationClass = NSClassFromString(@"RKManagedObjectRequestOperation"); + if (managedObjectRequestOperationClass && [operationClass isSubclassOfClass:managedObjectRequestOperationClass]) { + [self.registeredManagedObjectRequestOperationClasses removeObject:operationClass]; + [self.registeredManagedObjectRequestOperationClasses insertObject:operationClass atIndex:0]; + return YES; + } else if ([operationClass isSubclassOfClass:[RKObjectRequestOperation class]]) { + [self.registeredObjectRequestOperationClasses removeObject:operationClass]; + [self.registeredObjectRequestOperationClasses insertObject:operationClass atIndex:0]; + return YES; + } else if ([operationClass isSubclassOfClass:[RKHTTPRequestOperation class]]) { + [self.registeredHTTPRequestOperationClasses removeObject:operationClass]; + [self.registeredHTTPRequestOperationClasses insertObject:operationClass atIndex:0]; + return YES; + } + + return NO; +} + +- (void)unregisterRequestOperationClass:(Class)operationClass +{ + [self.registeredHTTPRequestOperationClasses removeObject:operationClass]; + [self.registeredObjectRequestOperationClasses removeObject:operationClass]; + [self.registeredManagedObjectRequestOperationClasses removeObject:operationClass]; +} + +- (Class)requestOperationClassForRequest:(NSURLRequest *)request fromRegisteredClasses:(NSArray *)registeredClasses +{ + Class requestOperationClass = nil; + NSEnumerator *enumerator = [registeredClasses reverseObjectEnumerator]; + while (requestOperationClass = [enumerator nextObject]) { + if ([requestOperationClass canProcessRequest:request]) break; + requestOperationClass = nil; + } + return requestOperationClass; +} + +#pragma mark - Object Request Operations + +- (void)copyStateFromHTTPClientToHTTPRequestOperation:(AFHTTPRequestOperation *)operation +{ + operation.credential = self.HTTPClient.defaultCredential; + operation.allowsInvalidSSLCertificate = self.HTTPClient.allowsInvalidSSLCertificate; +#ifdef _AFNETWORKING_PIN_SSL_CERTIFICATES_ + operation.SSLPinningMode = self.HTTPClient.defaultSSLPinningMode; +#endif +} + +- (RKObjectRequestOperation *)objectRequestOperationWithRequest:(NSURLRequest *)request + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure +{ + return [self objectRequestOperationWithRequest:request responseDescriptors:self.responseDescriptors success:success failure:failure]; +} + +- (RKObjectRequestOperation *)objectRequestOperationWithRequest:(NSURLRequest *)request + responseDescriptors:(NSArray *)responseDescriptors + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure +{ + Class HTTPRequestOperationClass = [self requestOperationClassForRequest:request fromRegisteredClasses:self.registeredHTTPRequestOperationClasses] ?: [RKHTTPRequestOperation class]; + RKHTTPRequestOperation *HTTPRequestOperation = [[HTTPRequestOperationClass alloc] initWithRequest:request]; + [self copyStateFromHTTPClientToHTTPRequestOperation:HTTPRequestOperation]; + Class objectRequestOperationClass = [self requestOperationClassForRequest:request fromRegisteredClasses:self.registeredObjectRequestOperationClasses] ?: [RKObjectRequestOperation class]; + RKObjectRequestOperation *operation = [[objectRequestOperationClass alloc] initWithHTTPRequestOperation:HTTPRequestOperation responseDescriptors:responseDescriptors]; + [operation setCompletionBlockWithSuccess:success failure:failure]; + return operation; +} + +#ifdef RKCoreDataIncluded +- (RKManagedObjectRequestOperation *)managedObjectRequestOperationWithRequest:(NSURLRequest *)request + managedObjectContext:(NSManagedObjectContext *)managedObjectContext + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure +{ + return [self managedObjectRequestOperationWithRequest:request responseDescriptors:self.responseDescriptors managedObjectContext:managedObjectContext success:success failure:failure]; +} + +- (RKManagedObjectRequestOperation *)managedObjectRequestOperationWithRequest:(NSURLRequest *)request + responseDescriptors:(NSArray *)responseDescriptors + managedObjectContext:(NSManagedObjectContext *)managedObjectContext + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure +{ + Class HTTPRequestOperationClass = [self requestOperationClassForRequest:request fromRegisteredClasses:self.registeredHTTPRequestOperationClasses] ?: [RKHTTPRequestOperation class]; + RKHTTPRequestOperation *HTTPRequestOperation = [[HTTPRequestOperationClass alloc] initWithRequest:request]; + [self copyStateFromHTTPClientToHTTPRequestOperation:HTTPRequestOperation]; + Class objectRequestOperationClass = [self requestOperationClassForRequest:request fromRegisteredClasses:self.registeredManagedObjectRequestOperationClasses] ?: [RKManagedObjectRequestOperation class]; + RKManagedObjectRequestOperation *operation = (RKManagedObjectRequestOperation *)[[objectRequestOperationClass alloc] initWithHTTPRequestOperation:HTTPRequestOperation responseDescriptors:responseDescriptors]; + [operation setCompletionBlockWithSuccess:success failure:failure]; + operation.managedObjectContext = managedObjectContext ?: self.managedObjectStore.mainQueueManagedObjectContext; + operation.managedObjectCache = self.managedObjectStore.managedObjectCache; + operation.fetchRequestBlocks = self.fetchRequestBlocks; + return operation; +} +#endif + +- (id)appropriateObjectRequestOperationWithObject:(id)object + method:(RKRequestMethod)method + path:(NSString *)path + parameters:(NSDictionary *)parameters +{ + RKObjectRequestOperation *operation = nil; + NSURLRequest *request = [self requestWithObject:object method:method path:path parameters:parameters]; + NSDictionary *routingMetadata = nil; + if (! path) { + RKRoute *route = [self.router.routeSet routeForObject:object method:method]; + NSDictionary *interpolatedParameters = nil; + NSURL *URL = [self URLWithRoute:route object:object interpolatedParameters:&interpolatedParameters]; + if (! URL) { + RKLogError(@"Failed to construct a URL from the provided object. Returning nil."); + return operation; + } + path = [URL relativeString]; + + routingMetadata = @{ @"routing": @{ @"parameters": interpolatedParameters, @"route": route }, + @"query": @{ @"parameters": parameters ?: @{} } }; + } else if (parameters) { + routingMetadata = @{ @"query": @{ @"parameters": parameters } }; + } + +#ifdef RKCoreDataIncluded + NSArray *matchingDescriptors = RKFilteredArrayOfResponseDescriptorsMatchingPathAndMethod(self.responseDescriptors, path, method); + BOOL containsEntityMapping = RKDoesArrayOfResponseDescriptorsContainEntityMapping(matchingDescriptors); + BOOL isManagedObjectRequestOperation = (containsEntityMapping || [object isKindOfClass:[NSManagedObject class]]); + + if (isManagedObjectRequestOperation && !self.managedObjectStore) RKLogWarning(@"Asked to create an `RKManagedObjectRequestOperation` object, but managedObjectStore is nil."); + if (isManagedObjectRequestOperation && self.managedObjectStore) { + // Construct a Core Data operation + NSManagedObjectContext *managedObjectContext = [object respondsToSelector:@selector(managedObjectContext)] ? [object managedObjectContext] : self.managedObjectStore.mainQueueManagedObjectContext; + operation = [self managedObjectRequestOperationWithRequest:request responseDescriptors:matchingDescriptors managedObjectContext:managedObjectContext success:nil failure:nil]; + + if ([object isKindOfClass:[NSManagedObject class]]) { + static NSPredicate *temporaryObjectsPredicate = nil; + if (! temporaryObjectsPredicate) temporaryObjectsPredicate = [NSPredicate predicateWithFormat:@"objectID.isTemporaryID == YES"]; + NSSet *temporaryObjects = [[managedObjectContext insertedObjects] filteredSetUsingPredicate:temporaryObjectsPredicate]; + if ([temporaryObjects count]) { + RKLogInfo(@"Asked to perform object request for NSManagedObject with temporary object IDs: Obtaining permanent ID before proceeding."); + __block BOOL _blockSuccess; + __block NSError *_blockError; + + [[object managedObjectContext] performBlockAndWait:^{ + _blockSuccess = [[object managedObjectContext] obtainPermanentIDsForObjects:[temporaryObjects allObjects] error:&_blockError]; + }]; + if (! _blockSuccess) RKLogWarning(@"Failed to obtain permanent ID for object %@: %@", object, _blockError); + } + } + } else { + // Non-Core Data operation + operation = [self objectRequestOperationWithRequest:request responseDescriptors:matchingDescriptors success:nil failure:nil]; + } +#else + // Non-Core Data operation + operation = [self objectRequestOperationWithRequest:request success:nil failure:nil]; +#endif + + if (RKDoesArrayOfResponseDescriptorsContainMappingForClass(self.responseDescriptors, [object class])) operation.targetObject = object; + operation.mappingMetadata = routingMetadata; + return operation; +} + +- (NSURL *)URLWithRoute:(RKRoute *)route object:(id)object interpolatedParameters:(NSDictionary **)interpolatedParameters +{ + NSString *path = nil; + if (object) { + RKPathMatcher *pathMatcher = [RKPathMatcher pathMatcherWithPattern:route.pathPattern]; + path = [pathMatcher pathFromObject:object addingEscapes:route.shouldEscapePath interpolatedParameters:interpolatedParameters]; + } else { + // When there is no object, the path pattern is our complete path + path = route.pathPattern; + if (interpolatedParameters) *interpolatedParameters = @{}; + } + return [NSURL URLWithString:path relativeToURL:self.baseURL]; +} + +- (void)getObjectsAtPathForRelationship:(NSString *)relationshipName + ofObject:(id)object + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure +{ + RKRoute *route = [self.router.routeSet routeForRelationship:relationshipName ofClass:[object class] method:RKRequestMethodGET]; + NSDictionary *interpolatedParameters = nil; + NSURL *URL = [self URLWithRoute:route object:object interpolatedParameters:&interpolatedParameters]; + NSAssert(URL, @"Failed to generate URL for relationship named '%@' for object: %@", relationshipName, object); + RKObjectRequestOperation *operation = [self appropriateObjectRequestOperationWithObject:nil method:RKRequestMethodGET path:[URL relativeString] parameters:parameters]; + + operation.mappingMetadata = @{ @"routing": @{ @"parameters": interpolatedParameters, @"route": route }, + @"query": @{ @"parameters": parameters ?: @{} } }; + + [operation setCompletionBlockWithSuccess:success failure:failure]; + [self enqueueObjectRequestOperation:operation]; +} + +- (void)getObjectsAtPathForRouteNamed:(NSString *)routeName + object:(id)object + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure +{ + NSParameterAssert(routeName); + RKRoute *route = [self.router.routeSet routeForName:routeName]; + NSDictionary *interpolatedParameters = nil; + NSURL *URL = [self URLWithRoute:route object:object interpolatedParameters:&interpolatedParameters]; + NSAssert(URL, @"No route found named '%@'", routeName); + NSAssert(route.method & RKRequestMethodGET, @"Expected route named '%@' to specify a GET, but it does not", routeName); + + RKObjectRequestOperation *operation = [self appropriateObjectRequestOperationWithObject:nil method:RKRequestMethodGET path:[URL relativeString] parameters:parameters]; + + operation.mappingMetadata = @{ @"routing": @{ @"parameters": interpolatedParameters, @"route": route }, + @"query": @{ @"parameters": parameters ?: @{} } }; + + [operation setCompletionBlockWithSuccess:success failure:failure]; + [self enqueueObjectRequestOperation:operation]; +} + +- (void)getObjectsAtPath:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure +{ + NSParameterAssert(path); + RKObjectRequestOperation *operation = [self appropriateObjectRequestOperationWithObject:nil method:RKRequestMethodGET path:path parameters:parameters]; + [operation setCompletionBlockWithSuccess:success failure:failure]; + [self enqueueObjectRequestOperation:operation]; +} + +- (void)getObject:(id)object + path:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure +{ + NSAssert(object || path, @"Cannot make a request without an object or a path."); + RKObjectRequestOperation *operation = [self appropriateObjectRequestOperationWithObject:object method:RKRequestMethodGET path:path parameters:parameters]; + [operation setCompletionBlockWithSuccess:success failure:failure]; + [self enqueueObjectRequestOperation:operation]; +} + +- (void)postObject:(id)object + path:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure +{ + NSAssert(object || path, @"Cannot make a request without an object or a path."); + RKObjectRequestOperation *operation = [self appropriateObjectRequestOperationWithObject:object method:RKRequestMethodPOST path:path parameters:parameters]; + [operation setCompletionBlockWithSuccess:success failure:failure]; + [self enqueueObjectRequestOperation:operation]; +} + +- (void)putObject:(id)object + path:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure +{ + NSAssert(object || path, @"Cannot make a request without an object or a path."); + RKObjectRequestOperation *operation = [self appropriateObjectRequestOperationWithObject:object method:RKRequestMethodPUT path:path parameters:parameters]; + [operation setCompletionBlockWithSuccess:success failure:failure]; + [self enqueueObjectRequestOperation:operation]; +} + +- (void)patchObject:(id)object + path:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure +{ + NSAssert(object || path, @"Cannot make a request without an object or a path."); + RKObjectRequestOperation *operation = [self appropriateObjectRequestOperationWithObject:object method:RKRequestMethodPATCH path:path parameters:parameters]; + [operation setCompletionBlockWithSuccess:success failure:failure]; + [self enqueueObjectRequestOperation:operation]; +} + +- (void)deleteObject:(id)object + path:(NSString *)path + parameters:(NSDictionary *)parameters + success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure +{ + NSAssert(object || path, @"Cannot make a request without an object or a path."); + RKObjectRequestOperation *operation = [self appropriateObjectRequestOperationWithObject:object method:RKRequestMethodDELETE path:path parameters:parameters]; + [operation setCompletionBlockWithSuccess:success failure:failure]; + [self enqueueObjectRequestOperation:operation]; +} + +- (RKPaginator *)paginatorWithPathPattern:(NSString *)pathPattern +{ + return [self paginatorWithPathPattern:pathPattern parameters:nil]; +} + +- (RKPaginator *)paginatorWithPathPattern:(NSString *)pathPattern parameters:(NSDictionary *)parameters +{ + NSAssert(self.paginationMapping, @"Cannot instantiate a paginator when `paginationMapping` is nil."); + NSMutableURLRequest *request = [self requestWithMethod:@"GET" path:pathPattern parameters:parameters]; + RKPaginator *paginator = [[self.paginationMapping.objectClass alloc] initWithRequest:request paginationMapping:self.paginationMapping responseDescriptors:self.responseDescriptors]; +#ifdef RKCoreDataIncluded + paginator.managedObjectContext = self.managedObjectStore.mainQueueManagedObjectContext; + paginator.managedObjectCache = self.managedObjectStore.managedObjectCache; + paginator.fetchRequestBlocks = self.fetchRequestBlocks; +#endif + paginator.operationQueue = self.operationQueue; + Class HTTPOperationClass = [self requestOperationClassForRequest:request fromRegisteredClasses:self.registeredHTTPRequestOperationClasses]; + if (HTTPOperationClass) [paginator setHTTPOperationClass:HTTPOperationClass]; + return paginator; +} + +#pragma mark - Request & Response Descriptors + +- (NSArray *)requestDescriptors +{ + return [NSArray arrayWithArray:self.mutableRequestDescriptors]; +} + +- (void)addRequestDescriptor:(RKRequestDescriptor *)requestDescriptor +{ + NSParameterAssert(requestDescriptor); + if ([self.requestDescriptors containsObject:requestDescriptor]) return; + NSAssert([requestDescriptor isKindOfClass:[RKRequestDescriptor class]], @"Expected an object of type RKRequestDescriptor, got '%@'", [requestDescriptor class]); + [self.requestDescriptors enumerateObjectsUsingBlock:^(RKRequestDescriptor *registeredDescriptor, NSUInteger idx, BOOL *stop) { + NSAssert(!([registeredDescriptor.objectClass isEqual:requestDescriptor.objectClass] && (requestDescriptor.method == registeredDescriptor.method)), @"Cannot add request descriptor: An existing descriptor is already registered for the class '%@' and HTTP method'%@'.", requestDescriptor.objectClass, RKStringDescribingRequestMethod(requestDescriptor.method)); + }]; + [self.mutableRequestDescriptors addObject:requestDescriptor]; +} + +- (void)addRequestDescriptorsFromArray:(NSArray *)requestDescriptors +{ + for (RKRequestDescriptor *requestDescriptor in requestDescriptors) { + [self addRequestDescriptor:requestDescriptor]; + } +} + +- (void)removeRequestDescriptor:(RKRequestDescriptor *)requestDescriptor +{ + NSParameterAssert(requestDescriptor); + NSAssert([requestDescriptor isKindOfClass:[RKRequestDescriptor class]], @"Expected an object of type RKRequestDescriptor, got '%@'", [requestDescriptor class]); + [self.mutableRequestDescriptors removeObject:requestDescriptor]; +} + +- (NSArray *)responseDescriptors +{ + return [NSArray arrayWithArray:self.mutableResponseDescriptors]; +} + +- (void)addResponseDescriptor:(RKResponseDescriptor *)responseDescriptor +{ + NSParameterAssert(responseDescriptor); + NSAssert([responseDescriptor isKindOfClass:[RKResponseDescriptor class]], @"Expected an object of type RKResponseDescriptor, got '%@'", [responseDescriptor class]); + responseDescriptor.baseURL = self.baseURL; + [self.mutableResponseDescriptors addObject:responseDescriptor]; +} + +- (void)addResponseDescriptorsFromArray:(NSArray *)responseDescriptors +{ + for (RKResponseDescriptor *responseDescriptor in responseDescriptors) { + [self addResponseDescriptor:responseDescriptor]; + } +} + +- (void)removeResponseDescriptor:(RKResponseDescriptor *)responseDescriptor +{ + NSParameterAssert(responseDescriptor); + NSAssert([responseDescriptor isKindOfClass:[RKResponseDescriptor class]], @"Expected an object of type RKResponseDescriptor, got '%@'", [responseDescriptor class]); + [self.mutableResponseDescriptors removeObject:responseDescriptor]; +} + +#pragma mark - Fetch Request Blocks + +#ifdef RKCoreDataIncluded + +- (NSArray *)fetchRequestBlocks +{ + return [NSArray arrayWithArray:self.mutableFetchRequestBlocks]; +} + +- (void)addFetchRequestBlock:(NSFetchRequest *(^)(NSURL *URL))block +{ + NSParameterAssert(block); + [self.mutableFetchRequestBlocks addObject:block]; +} + +#endif + +#pragma mark - Queue Management + +- (void)enqueueObjectRequestOperation:(RKObjectRequestOperation *)objectRequestOperation +{ + [self.operationQueue addOperation:objectRequestOperation]; +} + +- (NSArray *)enqueuedObjectRequestOperationsWithMethod:(RKRequestMethod)method matchingPathPattern:(NSString *)pathPattern +{ + NSMutableArray *matches = [NSMutableArray array]; + RKPathMatcher *pathMatcher = [RKPathMatcher pathMatcherWithPattern:pathPattern]; + for (NSOperation *operation in [self.operationQueue operations]) { + if (![operation isKindOfClass:[RKObjectRequestOperation class]]) { + continue; + } + NSURLRequest *request = [(RKObjectRequestOperation *)operation HTTPRequestOperation].request; + NSString *pathAndQueryString = RKPathAndQueryStringFromURLRelativeToURL([request URL], self.baseURL); + + RKRequestMethod operationMethod = RKRequestMethodFromString([request HTTPMethod]); + if ((method & operationMethod) && [pathMatcher matchesPath:pathAndQueryString tokenizeQueryStrings:NO parsedArguments:nil]) { + [matches addObject:operation]; + } + } + return [matches copy]; +} + +- (void)cancelAllObjectRequestOperationsWithMethod:(RKRequestMethod)method matchingPathPattern:(NSString *)pathPattern +{ + for (RKObjectRequestOperation *operation in [self enqueuedObjectRequestOperationsWithMethod:method matchingPathPattern:pathPattern]) { + [operation cancel]; + } +} + +- (void)enqueueBatchOfObjectRequestOperationsWithRoute:(RKRoute *)route + objects:(NSArray *)objects + progress:(void (^)(NSUInteger numberOfFinishedOperations, + NSUInteger totalNumberOfOperations))progress + completion:(void (^)(NSArray *operations))completion { + NSMutableArray *operations = [[NSMutableArray alloc] initWithCapacity:objects.count]; + for (id object in objects) { + RKObjectRequestOperation *operation = nil; + NSDictionary *interpolatedParameters = nil; + NSURL *URL = [self URLWithRoute:route object:object interpolatedParameters:&interpolatedParameters]; + NSAssert(URL, @"Failed to generate URL for route %@ with object %@", route, object); + if ([route isClassRoute]) { + operation = [self appropriateObjectRequestOperationWithObject:object method:route.method path:[URL relativeString] parameters:nil]; + } else { + operation = [self appropriateObjectRequestOperationWithObject:nil method:route.method path:[URL relativeString] parameters:nil]; + } + operation.mappingMetadata = @{ @"routing": interpolatedParameters, @"route": route }; + [operations addObject:operation]; + } + return [self enqueueBatchOfObjectRequestOperations:operations progress:progress completion:completion]; +} + +- (void)enqueueBatchOfObjectRequestOperations:(NSArray *)operations + progress:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progress + completion:(void (^)(NSArray *operations))completion { + + __block dispatch_group_t dispatchGroup = dispatch_group_create(); + NSBlockOperation *batchedOperation = [NSBlockOperation blockOperationWithBlock:^{ + dispatch_group_notify(dispatchGroup, dispatch_get_main_queue(), ^{ + if (completion) { + completion(operations); + } + }); +#if !OS_OBJECT_USE_OBJC + dispatch_release(dispatchGroup); +#endif + }]; + + for (RKObjectRequestOperation *operation in operations) { + void (^originalCompletionBlock)(void) = [operation.completionBlock copy]; + __weak RKObjectRequestOperation *weakOperation = operation; + [operation setCompletionBlock:^{ + dispatch_queue_t queue = weakOperation.successCallbackQueue ?: dispatch_get_main_queue(); + dispatch_group_async(dispatchGroup, queue, ^{ + if (originalCompletionBlock) { + originalCompletionBlock(); + } + + __block NSUInteger numberOfFinishedOperations = 0; + [operations enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + if ([(NSOperation *)obj isFinished]) { + numberOfFinishedOperations++; + } + }]; + + if (progress) { + progress(numberOfFinishedOperations, [operations count]); + } + + dispatch_group_leave(dispatchGroup); + }); + }]; + + dispatch_group_enter(dispatchGroup); + [batchedOperation addDependency:operation]; + + [self enqueueObjectRequestOperation:operation]; + } + [self.operationQueue addOperation:batchedOperation]; +} + +@end + +#ifdef _SYSTEMCONFIGURATION_H +NSString *RKStringFromNetworkReachabilityStatus(AFNetworkReachabilityStatus networkReachabilityStatus) +{ + switch (networkReachabilityStatus) { + case AFNetworkReachabilityStatusNotReachable: return @"Not Reachable"; + case AFNetworkReachabilityStatusReachableViaWiFi: return @"Reachable via WiFi"; + case AFNetworkReachabilityStatusReachableViaWWAN: return @"Reachable via WWAN"; + case AFNetworkReachabilityStatusUnknown: return @"Reachability Unknown"; + default: break; + } + return nil; +} +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectParameterization.h b/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectParameterization.h new file mode 100644 index 0000000..5e9c68f --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectParameterization.h @@ -0,0 +1,44 @@ +// +// RKObjectParameterization.h +// RestKit +// +// Created by Blake Watters on 5/2/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKRequestDescriptor.h" + +/** + The `RKObjectParameterization` class provides an interface for mapping a local domain object into an `NSDictionary` representation suitable for use as the parameters of an HTTP request. + */ +@interface RKObjectParameterization : NSObject + +///------------------------------- +/// @name Parameterizing an Object +///------------------------------- + +/** + Returns a dictionary representation of the given object by performing object mapping using the mapping + from the given request descriptor. If the request descriptor specifies a root key path, the mapped parameters + will be nested within the dictionary under the specified root key path. + + @param object The object to be parameterized. + @param requestDescriptor The request descriptor describing how the object is to be mapped into an `NSDictionary` of parameters. + @param error If there is a problem mapping the parameters, upon return contains a pointer to an instance of `NSError` that describes the problem. + @return A new dictionary containing the mapped parameters or nil if an error has occurred. + */ ++ (NSDictionary *)parametersWithObject:(id)object requestDescriptor:(RKRequestDescriptor *)requestDescriptor error:(NSError **)error; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectParameterization.m b/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectParameterization.m new file mode 100644 index 0000000..857c81a --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectParameterization.m @@ -0,0 +1,151 @@ +// +// RKObjectParameterization.m +// RestKit +// +// Created by Blake Watters on 5/2/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKMIMETypes.h" +#import "RKSerialization.h" +#import "RKObjectParameterization.h" +#import "RKMIMETypeSerialization.h" +#import "RKLog.h" +#import "RKObjectMappingOperationDataSource.h" +#import "RKObjectMapping.h" +#import "RKMappingOperation.h" +#import "RKMappingErrors.h" +#import "RKPropertyInspector.h" +#import "RKValueTransformers.h" + +// Set Logging Component +#undef RKLogComponent +#define RKLogComponent RKlcl_cRestKitNetwork + +@interface RKObjectParameterization () <RKMappingOperationDelegate> +@property (nonatomic, strong) id object; +@property (nonatomic, strong) RKRequestDescriptor *requestDescriptor; + +- (instancetype)initWithObject:(id)object requestDescriptor:(RKRequestDescriptor *)requestDescriptor; +- (NSDictionary *)mapObjectToParameters:(NSError **)error; + +// Convenience methods +@property (nonatomic, readonly) RKObjectMapping *mapping; +@property (nonatomic, readonly) NSString *rootKeyPath; +@end + +@implementation RKObjectParameterization + ++ (NSDictionary *)parametersWithObject:(id)object requestDescriptor:(RKRequestDescriptor *)requestDescriptor error:(NSError **)error +{ + RKObjectParameterization *parameterization = [[self alloc] initWithObject:object requestDescriptor:requestDescriptor]; + return [parameterization mapObjectToParameters:error]; +} + +- (instancetype)initWithObject:(id)object requestDescriptor:(RKRequestDescriptor *)requestDescriptor +{ + NSParameterAssert(object); + NSParameterAssert(requestDescriptor); + + self = [super init]; + if (self) { + self.object = object; + self.requestDescriptor = requestDescriptor; + } + return self; +} + +- (RKMapping *)mapping +{ + return self.requestDescriptor.mapping; +} + +- (NSString *)rootKeyPath +{ + return self.requestDescriptor.rootKeyPath; +} + +- (NSDictionary *)mapObjectToParameters:(NSError **)error +{ + RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; + NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:self.object destinationObject:dictionary mapping:self.mapping]; + operation.dataSource = dataSource; + operation.delegate = self; + [operation start]; + if (operation.error) { + if (operation.error.code == RKMappingErrorUnmappableRepresentation) { + // If the mapped object is empty, return an empty dictionary and no error + return self.rootKeyPath ? @{ self.rootKeyPath: @{} } : @{}; + } + + if (error) *error = operation.error; + return nil; + } + + // Optionally enclose the serialized object within a container... + return self.rootKeyPath ? [NSMutableDictionary dictionaryWithObject:dictionary forKey:self.rootKeyPath] : dictionary; +} + +#pragma mark - RKMappingOperationDelegate + +- (void)mappingOperation:(RKMappingOperation *)operation didSetValue:(id)value forKeyPath:(NSString *)keyPath usingMapping:(RKAttributeMapping *)mapping +{ + id transformedValue = nil; + if (value == nil) { + if (mapping.objectMapping.assignsDefaultValueForMissingAttributes) { + // Serialize nil values as null + transformedValue = [NSNull null]; + } + } else if ([value isKindOfClass:[NSDate class]]) { + [mapping.valueTransformer transformValue:value toValue:&transformedValue ofClass:[NSString class] error:nil]; + } else if ([value isKindOfClass:[NSDecimalNumber class]]) { + // Precision numbers are serialized as strings to work around Javascript notation limits + transformedValue = [(NSDecimalNumber *)value stringValue]; + } else if ([value isKindOfClass:[NSSet class]]) { + // NSSets are not natively serializable, so let's just turn it into an NSArray + transformedValue = [value allObjects]; + } else if ([value isKindOfClass:[NSOrderedSet class]]) { + // NSOrderedSets are not natively serializable, so let's just turn it into an NSArray + transformedValue = [value array]; + } else { + Class propertyClass = RKPropertyInspectorGetClassForPropertyAtKeyPathOfObject(mapping.sourceKeyPath, operation.sourceObject); + if ([propertyClass isSubclassOfClass:NSClassFromString(@"__NSCFBoolean")] || [propertyClass isSubclassOfClass:NSClassFromString(@"NSCFBoolean")]) { + transformedValue = @([value boolValue]); + } + } + + if (transformedValue) { + RKLogDebug(@"Serialized %@ value at keyPath to %@ (%@)", NSStringFromClass([value class]), NSStringFromClass([transformedValue class]), value); + [operation.destinationObject setValue:transformedValue forKeyPath:keyPath]; + } +} + +- (BOOL)mappingOperation:(RKMappingOperation *)operation shouldSetValue:(id)value forKeyPath:(NSString *)keyPath usingMapping:(RKPropertyMapping *)propertyMapping +{ + NSArray *keyPathComponents = [keyPath componentsSeparatedByString:@"."]; + id currentValue = operation.destinationObject; + for (NSString *key in keyPathComponents) { + id value = [currentValue valueForKey:key]; + if (value == nil) { + value = [NSMutableDictionary new]; + [currentValue setValue:value forKey:key]; + } + currentValue = value; + } + return YES; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectRequestOperation.h b/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectRequestOperation.h new file mode 100644 index 0000000..ea0d17b --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectRequestOperation.h @@ -0,0 +1,238 @@ +// +// RKObjectRequestOperation.h +// RestKit +// +// Created by Blake Watters on 8/9/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKHTTPRequestOperation.h" +#import "RKMappingResult.h" +#import "RKMapperOperation.h" + +/** + The key for a Boolean NSNumber value that indicates if a `NSCachedURLResponse` stored in the `NSURLCache` has been object mapped to completion. This key is stored on the `userInfo` of the cached response, if any, just before an `RKObjectRequestOperation` transitions to the finished state. + */ +extern NSString * const RKResponseHasBeenMappedCacheUserInfoKey; + +/** + `RKObjectRequestOperation` is an `NSOperation` subclass that implements object mapping on the response body of an `NSHTTPResponse` loaded via an `RKHTTPRequestOperation`. + + Object request operations are initialized with a fully configured `NSURLRequest` object and an array of `RKResponseDescriptor` objects. `RKObjectRequestOperation` is internally implemented as an aggregate operation that constructs and starts an `RKHTTPRequestOperation` to perform the network access and retrieve the mappable data. If an error occurs during HTTP transport, the object request operation is failed with the transport error. Once response data is loaded for the request, the object request operation creates and starts an `RKObjectResponseMapperOperation` to perform the object mapping on the response body. If the mapping operation fails, then object request operation is failed and the `error` property is set. If mapping is successful, then the `mappingResult` property is set and the operation is finished successfully. + + ## Acceptable Content Types and Status Codes + + Instances of `RKObjectRequestOperation` determine the acceptability of status codes and content types differently than is typical for `AFNetworking` derived network opertations. The `RKHTTPRequestOperation` (which is a subclass of the AFNetworking `AFHTTPRequestOperation` class) supports the dynamic assignment of acceptable status codes and content types. This facility is utilized during the configuration of the network operation for an object request operation. The set of acceptable content types is determined by consulting the `RKMIMETypeSerialization` via an invocation of `[RKMIMETypeSerialization registeredMIMETypes]`. The `registeredMIMETypes` method returns an `NSSet` containing either `NSString` or `NSRegularExpression` objects that specify the content types for which `RKSerialization` classes have been registered to handle. The set of acceptable status codes is determined by aggregating the value of the `statusCodes` property from all registered `RKResponseDescriptor` objects. + + ## Error Mapping + + If the HTTP request returned a response in the Client Error (400-499 range) or Server Error (500-599 range) class and an appropriate `RKResponseDescriptor` is provided to perform mapping on the response, then the object mapping result is considered to contain a server returned error. In this case, an `NSError` object is created in the `RKErrorDomain` with an error code of `RKMappingErrorFromMappingResult` and the object request operation is failed. In the event that an a response is returned in an error class and no `RKResponseDescriptor` has been provided to the operation to handle it, then an `NSError` object in the `AFNetworkingErrorDomain` with an error code of `NSURLErrorBadServerResponse` will be returned by the underlying `RKHTTPRequestOperation` indicating that an unexpected status code was returned. + + ## Metadata Mapping + + The `RKObjectRequestOperation` class provides support for metadata mapping via the `mappingMetadata` property. This optional dictionary of user supplied information is made available to the mapping operations executed when processing the HTTP response loaded by an object request operation. More details about the metadata mapping architecture is available on the `RKMappingOperation` documentation. + + ## Prioritization and Cancellation + + Object request operations support prioritization and cancellation of the underlying `RKHTTPRequestOperation` and `RKResponseMapperOperation` operations that perform the network transport and object mapping duties on their behalf. The queue priority of the object request operation, as set via the `[NSOperation setQueuePriority:]` method, is applied to the underlying response mapping operation when it is enqueued onto the `responseMappingQueue`. If the object request operation is cancelled, then the underlying HTTP request operation and response mapping operation are also cancelled. + + ## Caching + + Instances of `RKObjectRequestOperation` support all the HTTP caching facilities available via the `NSURLConnection` family of API's. For caching to be enabled, the remote web server that the application is communicating with must emit the appropriate `Cache-Control`, `Expires`, and/or `ETag` headers. When the response headers include the appropriate caching information, the shared `NSURLCache` instance will manage responses and transparently add conditional GET support to cachable requests. HTTP caching is a deep topic explored in depth across the web and detailed in RFC 2616: http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html + + The `RKObjectRequestOperation` class also provides support for utilizing the `NSURLCache` to satisfy requests without hitting the network. This support enables applications to display views presenting data retrieved via a cachable `GET` request without revalidating with the server and incurring any overhead. The optimization is controlled via `avoidsNetworkAccess` property. When enabled, the operation will skip the network transport portion of the object request operation and proceed directly to object mapping the cached response data. When the object request operation is an instance of `RKManagedObjectRequestOperation`, the deserialization and mapping portion of the process can be skipped entirely and the operation will fetch the appropriate object directly from Core Data, falling back to network transport once the cache entry has expired. Please refer to the documentation accompanying `RKManagedObjectRequestOperation` for more details. + + ## Core Data + + `RKObjectRequestOperation` is not able to perform object mapping that targets Core Data destination entities. Please refer to the `RKManagedObjectRequestOperation` subclass for details regarding performing a Core Data object request operation. + + ## Subclassing Notes + + The `RKObjectRequestOperation` is a non-current `NSOperation` subclass and can be extended by subclassing and providing an implementation of the `main` method. It conforms to the `RKMapperOperationDelegate` protocol, providing access to the lifecycle of the mapping process to subclasses. + + @see `RKResponseDescriptor` + @see `RKHTTPRequestOperation` + @see `RKMIMETypeSerialization` + @see `RKManagedObjectRequestOperation` + */ +@interface RKObjectRequestOperation : NSOperation <NSCopying, RKMapperOperationDelegate> { + @protected + RKMappingResult *_mappingResult; +} + +///----------------------------------------------- +/// @name Initializing an Object Request Operation +///----------------------------------------------- + +/** + Initializes an object request operation with an HTTP request operation and a set of response descriptors. + + This is the designated initializer. + + @param requestOperation The request object to be used with the underlying network operation. + @param responseDescriptors An array of `RKResponseDescriptor` objects specifying how object mapping is to be performed on the response loaded by the network operation. + @return The receiver, initialized with the given request and response descriptors. + */ +- (instancetype)initWithHTTPRequestOperation:(RKHTTPRequestOperation *)requestOperation responseDescriptors:(NSArray *)responseDescriptors; + +/** + Initializes an object request operation with a request object and a set of response descriptors. + + This method is a convenience initializer for initializing an object request operation from a URL request with the default HTTP operation class `RKHTTPRequestOperation`. This method is functionally equivalent to the following example code: + + RKHTTPRequestOperation *requestOperation = [[RKHTTPRequestOperation alloc] initWithRequest:request]; + RKObjectRequestOperation *objectRequestOperation = [[RKObjectRequestOperation alloc] initWithHTTPRequestOperation:requestOperation responseDescriptors:responseDescriptors]; + + @param request The request object to be used with the underlying network operation. + @param responseDescriptors An array of `RKResponseDescriptor` objects specifying how object mapping is to be performed on the response loaded by the network operation. + @return The receiver, initialized with the given request and response descriptors. + */ +- (instancetype)initWithRequest:(NSURLRequest *)request responseDescriptors:(NSArray *)responseDescriptors; + +///--------------------------------- +/// @name Configuring Object Mapping +///--------------------------------- + +/** + The array of `RKResponseDescriptor` objects that specify how the deserialized `responseData` is to be object mapped. + + The response descriptors define the acceptable HTTP Status Codes of the receiver. + */ +@property (nonatomic, strong, readonly) NSArray *responseDescriptors; + +/** + The target object for the object mapping operation. + + @see `[RKObjectResponseMapperOperation targetObject]` + */ +@property (nonatomic, strong) id targetObject; + +/** + An optional dictionary of metadata to make available to mapping operations executed while processing the HTTP response loaded by the receiver. + */ +@property (nonatomic, copy) NSDictionary *mappingMetadata; + +///---------------------------------- +/// @name Accessing Operation Results +///---------------------------------- + +/** + The mapping result returned by the underlying `RKObjectResponseMapperOperation`. + + This property is `nil` if the operation is failed due to a network transport error or no mapping was peformed on the response. + */ +@property (nonatomic, strong, readonly) RKMappingResult *mappingResult; + +/** + The error, if any, that occurred during execution of the operation. + + Errors may originate during the network transport or object mapping phases of the object request operation. A `nil` error value indicates that the operation completed successfully. + */ +@property (nonatomic, strong, readonly) NSError *error; + +///------------------------------------------- +/// @name Accessing the HTTP Request Operation +///------------------------------------------- + +/** + The underlying `RKHTTPRequestOperation` object used to manage the HTTP request/response lifecycle of the object request operation. + */ +@property (nonatomic, strong, readonly) RKHTTPRequestOperation *HTTPRequestOperation; + +///------------------------------------------------------- +/// @name Setting the Completion Block and Callback Queues +///------------------------------------------------------- + +/** + Sets the `completionBlock` property with a block that executes either the specified success or failure block, depending on the state of the object request on completion. If `error` returns a value, which can be set during HTTP transport by the underlying `HTTPRequestOperation` or during object mapping by the `RKResponseMapperOperation` object, then `failure` is executed. If the object request operation is cancelled, then the failure block will be executed with either a `RKOperationCancelledError` or a `NSURLErrorCancelled`, depending on the internal state of the operation at time of cancellation. Otherwise, `success` is executed. + + @param success The block to be executed on the completion of a successful operation. This block has no return value and takes two arguments: the receiver operation and the mapping result from object mapping the response data of the request. + @param failure The block to be executed on the completion of an unsuccessful operation. This block has no return value and takes two arguments: the receiver operation and the error that occurred during the execution of the operation. + */ +- (void)setCompletionBlockWithSuccess:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure; + +/** + The callback dispatch queue on success. If `NULL` (default), the main queue is used. + + The queue is retained while this operation is living + */ +@property (nonatomic, assign) dispatch_queue_t successCallbackQueue; + +/** + The callback dispatch queue on failure. If `NULL` (default), the main queue is used. + + The queue is retained while this operation is living + */ +@property (nonatomic, assign) dispatch_queue_t failureCallbackQueue; + +/** + Sets a block to be executed before the object request operation begins mapping the deserialized response body, providing an opportunity to manipulate the mappable representation input that will be passed to the response mapper. + + @param block A block object to be executed before the deserialized response is passed to the response mapper. The block has an `id` return type and must return a dictionary or array of dictionaries corresponding to the object representations that are to be mapped. The block accepts a single argument: the deserialized response data that was loaded via HTTP. If you do not wish to make any chances to the response body before mapping begins, the block should return the value passed in the `deserializedResponseBody` block argument. Returning `nil` will decline the mapping from proceeding and fail the operation with an error with the `RKMappingErrorMappingDeclined` code. + @see [RKResponseMapperOperation setWillMapDeserializedResponseBlock:] + @warning The deserialized response body may or may not be immutable depending on the implementation details of the `RKSerialization` class that deserialized the response. If you wish to make changes to the mappable object representations, you must obtain a mutable copy of the response body input. + */ +- (void)setWillMapDeserializedResponseBlock:(id (^)(id deserializedResponseBody))block; + +///----------------------------------------------------- +/// @name Determining Whether a Request Can Be Processed +///----------------------------------------------------- + +/** + Returns a Boolean value determining whether or not the class can process the specified request. + + @param request The request that is determined to be supported or not supported for this class. + */ ++ (BOOL)canProcessRequest:(NSURLRequest *)request; + +///------------------------------------------- +/// @name Accessing the Response Mapping Queue +///------------------------------------------- + +/** + Returns the operation queue used by all object request operations when object mapping the body of a response loaded via HTTP. + + By default, the response mapping queue is configured with a maximum concurrent operation count of 1, ensuring that only one HTTP response is mapped at a time. + + @return The response mapping queue. + */ ++ (NSOperationQueue *)responseMappingQueue; + +@end + +///-------------------- +/// @name Notifications +///-------------------- + +/** + Posted when an object request operation begin executing. + */ +extern NSString *const RKObjectRequestOperationDidStartNotification; + +/** + Posted when an object request operation finishes. + */ +extern NSString *const RKObjectRequestOperationDidFinishNotification; + +/** + The key for an `NSDate` object specifying the time at which object mapping started for object request operation. Available in the user info dictionary of an `RKObjectRequestOperationDidFinishNotification` + */ +extern NSString *const RKObjectRequestOperationMappingDidStartUserInfoKey; + +/** + The key for an `NSDate` object specifying the time at which object mapping finished for object request operation. Available in the user info dictionary of an `RKObjectRequestOperationDidFinishNotification` + */ +extern NSString *const RKObjectRequestOperationMappingDidFinishUserInfoKey; diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectRequestOperation.m b/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectRequestOperation.m new file mode 100644 index 0000000..8fbeda8 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectRequestOperation.m @@ -0,0 +1,645 @@ +// +// RKObjectRequestOperation.m +// RestKit +// +// Created by Blake Watters on 8/9/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 <objc/runtime.h> +#import "RKObjectRequestOperation.h" +#import "RKResponseMapperOperation.h" +#import "RKResponseDescriptor.h" +#import "RKMIMETypeSerialization.h" +#import "RKHTTPUtilities.h" +#import "RKLog.h" +#import "RKMappingErrors.h" +#import "RKOperationStateMachine.h" + +#import <Availability.h> + +#if __IPHONE_OS_VERSION_MIN_REQUIRED +#import "AFNetworkActivityIndicatorManager.h" +#endif + +// Set Logging Component +#undef RKLogComponent +#define RKLogComponent RKlcl_cRestKitNetwork + +static BOOL RKLogIsStringBlank(NSString *string) +{ + return ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0); +} + +static NSString *RKLogTruncateString(NSString *string) +{ + static NSInteger maxMessageLength; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSDictionary *envVars = [[NSProcessInfo processInfo] environment]; + maxMessageLength = RKLogIsStringBlank(envVars[@"RKLogMaxLength"]) ? NSIntegerMax : [envVars[@"RKLogMaxLength"] integerValue]; + }); + + return ([string length] <= maxMessageLength) + ? string + : [NSString stringWithFormat:@"%@... (truncated at %ld characters)", + [string substringToIndex:maxMessageLength], + (long) maxMessageLength]; +} + +@interface NSCachedURLResponse (RKLeakFix) + +@property (NS_NONATOMIC_IOSONLY, readonly, copy) NSData *rkData; + +@end + +@interface RKObjectRequestOperationLogger : NSObject + ++ (RKObjectRequestOperationLogger*)sharedLogger; + +@end + +@implementation RKObjectRequestOperationLogger + ++ (RKObjectRequestOperationLogger*)sharedLogger +{ + static RKObjectRequestOperationLogger *sharedInstance = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + sharedInstance = [[self alloc] init]; + }); + return sharedInstance; +} + ++ (void)load +{ + @autoreleasepool { + [self sharedLogger]; + }; +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(objectRequestOperationDidStart:) + name:RKObjectRequestOperationDidStartNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(objectRequestOperationDidFinish:) + name:RKObjectRequestOperationDidFinishNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(HTTPOperationDidStart:) + name:AFNetworkingOperationDidStartNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(HTTPOperationDidFinish:) + name:AFNetworkingOperationDidFinishNotification + object:nil]; + } + + return self; +} + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +static void *RKParentObjectRequestOperation = &RKParentObjectRequestOperation; +static void *RKOperationStartDate = &RKOperationStartDate; +static void *RKOperationFinishDate = &RKOperationFinishDate; + +- (void)objectRequestOperationDidStart:(NSNotification *)notification +{ + // Weakly tag the HTTP operation with its parent object request operation + RKObjectRequestOperation *objectRequestOperation = [notification object]; + objc_setAssociatedObject(objectRequestOperation, RKOperationStartDate, [NSDate date], OBJC_ASSOCIATION_RETAIN_NONATOMIC); + objc_setAssociatedObject(objectRequestOperation.HTTPRequestOperation, RKParentObjectRequestOperation, objectRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +- (void)HTTPOperationDidStart:(NSNotification *)notification +{ + RKHTTPRequestOperation *operation = [notification object]; + if (![operation isKindOfClass:[AFHTTPRequestOperation class]]) return; + + objc_setAssociatedObject(operation, RKOperationStartDate, [NSDate date], OBJC_ASSOCIATION_RETAIN_NONATOMIC); + + if ((_RKlcl_component_level[(__RKlcl_log_symbol(RKlcl_cRestKitNetwork))]) >= (__RKlcl_log_symbol(RKlcl_vTrace))) { + NSString *body = nil; + if ([operation.request HTTPBody]) { + body = RKLogTruncateString([[NSString alloc] initWithData:[operation.request HTTPBody] encoding:NSUTF8StringEncoding]); + } + + RKLogTrace(@"%@ '%@':\nrequest.headers=%@\nrequest.body=%@", [operation.request HTTPMethod], [[operation.request URL] absoluteString], [operation.request allHTTPHeaderFields], body); + } else { + RKLogInfo(@"%@ '%@'", [operation.request HTTPMethod], [[operation.request URL] absoluteString]); + } +} + +- (void)HTTPOperationDidFinish:(NSNotification *)notification +{ + RKHTTPRequestOperation *operation = [notification object]; + if (![operation isKindOfClass:[AFHTTPRequestOperation class]]) return; + + // NOTE: if we have a parent object request operation, we'll wait it to finish to emit the logging info + RKObjectRequestOperation *parentOperation = objc_getAssociatedObject(operation, RKParentObjectRequestOperation); + objc_setAssociatedObject(operation, RKParentObjectRequestOperation, nil, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + if (parentOperation) { + objc_setAssociatedObject(operation, RKOperationFinishDate, [NSDate date], OBJC_ASSOCIATION_RETAIN_NONATOMIC); + return; + } + + NSTimeInterval elapsedTime = [[NSDate date] timeIntervalSinceDate:objc_getAssociatedObject(operation, RKOperationStartDate)]; + + NSString *statusCodeString = RKStringFromStatusCode([operation.response statusCode]); + NSString *elapsedTimeString = [NSString stringWithFormat:@"[%.04f s]", elapsedTime]; + NSString *statusCodeAndElapsedTime = statusCodeString ? [NSString stringWithFormat:@"(%ld %@) %@", (long)[operation.response statusCode], statusCodeString, elapsedTimeString] : [NSString stringWithFormat:@"(%ld) %@", (long)[operation.response statusCode], elapsedTimeString]; + if (operation.error) { + if ((_RKlcl_component_level[(__RKlcl_log_symbol(RKlcl_cRestKitNetwork))]) >= (__RKlcl_log_symbol(RKlcl_vTrace))) { + RKLogError(@"%@ '%@' %@:\nerror=%@", [operation.request HTTPMethod], [[operation.request URL] absoluteString], statusCodeAndElapsedTime, operation.error); + RKLogDebug(@"response.body=%@", operation.responseString); + } else { + if (operation.error.code == NSURLErrorCancelled) { + RKLogError(@"%@ '%@' %@: Cancelled", [operation.request HTTPMethod], [[operation.request URL] absoluteString], statusCodeAndElapsedTime); + } else { + RKLogError(@"%@ '%@' %@: %@", [operation.request HTTPMethod], [[operation.request URL] absoluteString], statusCodeAndElapsedTime, operation.error); + } + } + } else { + if ((_RKlcl_component_level[(__RKlcl_log_symbol(RKlcl_cRestKitNetwork))]) >= (__RKlcl_log_symbol(RKlcl_vTrace))) { + RKLogTrace(@"%@ '%@' %@:\nresponse.headers=%@\nresponse.body=%@", [operation.request HTTPMethod], [[operation.request URL] absoluteString], statusCodeAndElapsedTime, [operation.response allHeaderFields], RKLogTruncateString(operation.responseString)); + } else { + RKLogInfo(@"%@ '%@' %@", [operation.request HTTPMethod], [[operation.request URL] absoluteString], statusCodeAndElapsedTime); + } + } +} + +- (void)objectRequestOperationDidFinish:(NSNotification *)notification +{ + RKObjectRequestOperation *objectRequestOperation = [notification object]; + if (![objectRequestOperation isKindOfClass:[RKObjectRequestOperation class]]) return; + + RKHTTPRequestOperation *HTTPRequestOperation = objectRequestOperation.HTTPRequestOperation; + NSTimeInterval objectRequestExecutionDuration = [[NSDate date] timeIntervalSinceDate:objc_getAssociatedObject(objectRequestOperation, RKOperationStartDate)]; + NSTimeInterval httpRequestExecutionDuration = [objc_getAssociatedObject(HTTPRequestOperation, RKOperationFinishDate) timeIntervalSinceDate:objc_getAssociatedObject(HTTPRequestOperation, RKOperationStartDate)]; + NSDate *mappingDidStartTime = (notification.userInfo)[RKObjectRequestOperationMappingDidFinishUserInfoKey]; + NSTimeInterval mappingDuration = [mappingDidStartTime isEqual:[NSNull null]] ? 0.0 : [mappingDidStartTime timeIntervalSinceDate:(notification.userInfo)[RKObjectRequestOperationMappingDidStartUserInfoKey]]; + + NSString *statusCodeString = RKStringFromStatusCode([HTTPRequestOperation.response statusCode]); + NSString *statusCodeDescription = statusCodeString ? [NSString stringWithFormat:@" %@ ", statusCodeString] : @" "; + NSString *elapsedTimeString = [NSString stringWithFormat:@"[request=%.04fs mapping=%.04fs total=%.04fs]", httpRequestExecutionDuration, mappingDuration, objectRequestExecutionDuration]; + NSString *statusCodeAndElapsedTime = [NSString stringWithFormat:@"(%ld%@/ %lu objects) %@", (long)[HTTPRequestOperation.response statusCode], statusCodeDescription, (unsigned long) [objectRequestOperation.mappingResult count], elapsedTimeString]; + if (objectRequestOperation.error) { + if ((_RKlcl_component_level[(__RKlcl_log_symbol(RKlcl_cRestKitNetwork))]) >= (__RKlcl_log_symbol(RKlcl_vTrace))) { + RKLogError(@"%@ '%@' %@:\nerror=%@", [HTTPRequestOperation.request HTTPMethod], [[HTTPRequestOperation.request URL] absoluteString], statusCodeAndElapsedTime, objectRequestOperation.error); + RKLogDebug(@"response.body=%@", HTTPRequestOperation.responseString); + } else { + if (objectRequestOperation.error.code == NSURLErrorCancelled) { + RKLogError(@"%@ '%@' %@: Cancelled", [HTTPRequestOperation.request HTTPMethod], [[HTTPRequestOperation.request URL] absoluteString], statusCodeAndElapsedTime); + } else { + RKLogError(@"%@ '%@' %@: %@", [HTTPRequestOperation.request HTTPMethod], [[HTTPRequestOperation.request URL] absoluteString], statusCodeAndElapsedTime, objectRequestOperation.error); + } + } + } else { + if ((_RKlcl_component_level[(__RKlcl_log_symbol(RKlcl_cRestKitNetwork))]) >= (__RKlcl_log_symbol(RKlcl_vTrace))) { + RKLogTrace(@"%@ '%@' %@:\nresponse.headers=%@\nresponse.body=%@", [HTTPRequestOperation.request HTTPMethod], [[HTTPRequestOperation.request URL] absoluteString], statusCodeAndElapsedTime, [HTTPRequestOperation.response allHeaderFields], RKLogTruncateString(HTTPRequestOperation.responseString)); + } else { + RKLogInfo(@"%@ '%@' %@", [HTTPRequestOperation.request HTTPMethod], [[HTTPRequestOperation.request URL] absoluteString], statusCodeAndElapsedTime); + } + } +} + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +NSString *const RKObjectRequestOperationDidStartNotification = @"RKObjectRequestOperationDidStartNotification"; +NSString *const RKObjectRequestOperationDidFinishNotification = @"RKObjectRequestOperationDidFinishNotification"; +NSString *const RKResponseHasBeenMappedCacheUserInfoKey = @"RKResponseHasBeenMapped"; +NSString *const RKObjectRequestOperationMappingDidStartUserInfoKey = @"mappingStartedAt"; +NSString *const RKObjectRequestOperationMappingDidFinishUserInfoKey = @"mappingFinishedAt"; + +static void RKIncrementNetworkActivityIndicator() +{ + #if __IPHONE_OS_VERSION_MIN_REQUIRED + [[AFNetworkActivityIndicatorManager sharedManager] incrementActivityCount]; + #endif +} + +static void RKDecrementNetworkAcitivityIndicator() +{ + #if __IPHONE_OS_VERSION_MIN_REQUIRED + [[AFNetworkActivityIndicatorManager sharedManager] decrementActivityCount]; + #endif +} + +static NSIndexSet *RKAcceptableStatusCodesFromResponseDescriptors(NSArray *responseDescriptors) +{ + // If there are no response descriptors or any descriptor matches any status code (expressed by `statusCodes` == `nil`) then we want to accept anything + if ([responseDescriptors count] == 0 || [[responseDescriptors valueForKey:@"statusCodes"] containsObject:[NSNull null]]) return nil; + + NSMutableIndexSet *acceptableStatusCodes = [NSMutableIndexSet indexSet]; + [responseDescriptors enumerateObjectsUsingBlock:^(RKResponseDescriptor *responseDescriptor, NSUInteger idx, BOOL *stop) { + [acceptableStatusCodes addIndexes:responseDescriptor.statusCodes]; + }]; + return acceptableStatusCodes; +} + +static NSString *RKStringForStateOfObjectRequestOperation(RKObjectRequestOperation *operation) +{ + if ([operation isExecuting]) { + return @"Executing"; + } else if ([operation isFinished]) { + if (operation.error) { + return @"Failed"; + } else { + return @"Successful"; + } + } else { + return @"Ready"; + } +} + +static NSString *RKStringDescribingURLResponseWithData(NSURLResponse *response, NSData *data) +{ + if ([response isKindOfClass:[NSHTTPURLResponse class]]) { + NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response; + return [NSString stringWithFormat:@"<%@: %p statusCode=%ld MIMEType=%@ length=%ld>", [response class], response, (long) [HTTPResponse statusCode], [HTTPResponse MIMEType], (long) [data length]]; + } else { + return [response description]; + } +} + +@interface RKObjectRequestOperation () +@property (nonatomic, strong) RKOperationStateMachine *stateMachine; +@property (nonatomic, strong, readwrite) RKHTTPRequestOperation *HTTPRequestOperation; +@property (nonatomic, strong, readwrite) NSArray *responseDescriptors; +@property (nonatomic, strong, readwrite) RKMappingResult *mappingResult; +@property (nonatomic, strong, readwrite) NSError *error; +@property (nonatomic, strong) RKObjectResponseMapperOperation *responseMapperOperation; +@property (nonatomic, copy) id (^willMapDeserializedResponseBlock)(id deserializedResponseBody); +@property (nonatomic, strong) NSDate *mappingDidStartDate; +@property (nonatomic, strong) NSDate *mappingDidFinishDate; +@property (nonatomic, copy) void (^successBlock)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult); +@property (nonatomic, copy) void (^failureBlock)(RKObjectRequestOperation *operation, NSError *error); +@end + +@implementation RKObjectRequestOperation + ++ (NSOperationQueue *)responseMappingQueue +{ + static NSOperationQueue *responseMappingQueue = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + responseMappingQueue = [NSOperationQueue new]; + [responseMappingQueue setName:@"RKObjectRequestOperation Response Mapping Queue" ]; + [responseMappingQueue setMaxConcurrentOperationCount:1]; + }); + + return responseMappingQueue; +} + ++ (dispatch_queue_t)dispatchQueue +{ + static dispatch_queue_t dispatchQueue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + dispatchQueue = dispatch_queue_create("org.restkit.network.object-request-operation-queue", DISPATCH_QUEUE_CONCURRENT); + }); + + return dispatchQueue; +} + ++ (BOOL)canProcessRequest:(NSURLRequest *)request +{ + return YES; +} + +- (void)dealloc +{ +#if !OS_OBJECT_USE_OBJC + if (_failureCallbackQueue) dispatch_release(_failureCallbackQueue); + if (_successCallbackQueue) dispatch_release(_successCallbackQueue); +#endif + _failureCallbackQueue = NULL; + _successCallbackQueue = NULL; +} + +// Designated initializer +- (instancetype)initWithHTTPRequestOperation:(RKHTTPRequestOperation *)requestOperation responseDescriptors:(NSArray *)responseDescriptors +{ + NSParameterAssert(requestOperation); + NSParameterAssert(responseDescriptors); + + self = [self init]; + if (self) { + self.responseDescriptors = responseDescriptors; + self.HTTPRequestOperation = requestOperation; + self.HTTPRequestOperation.acceptableContentTypes = [RKMIMETypeSerialization registeredMIMETypes]; + self.HTTPRequestOperation.acceptableStatusCodes = RKAcceptableStatusCodesFromResponseDescriptors(responseDescriptors); + self.HTTPRequestOperation.successCallbackQueue = [[self class] dispatchQueue]; + self.HTTPRequestOperation.failureCallbackQueue = [[self class] dispatchQueue]; + + __weak __typeof(self)weakSelf = self; + self.stateMachine = [[RKOperationStateMachine alloc] initWithOperation:self dispatchQueue:[[self class] dispatchQueue]]; + [self.stateMachine setExecutionBlock:^{ + [[NSNotificationCenter defaultCenter] postNotificationName:RKObjectRequestOperationDidStartNotification object:weakSelf]; + RKIncrementNetworkActivityIndicator(); + if (weakSelf.isCancelled) { + [weakSelf.stateMachine finish]; + } else { + [weakSelf execute]; + } + }]; + [self.stateMachine setFinalizationBlock:^{ + [weakSelf willFinish]; + RKDecrementNetworkAcitivityIndicator(); + [[NSNotificationCenter defaultCenter] postNotificationName:RKObjectRequestOperationDidFinishNotification object:weakSelf userInfo:@{ RKObjectRequestOperationMappingDidStartUserInfoKey: weakSelf.mappingDidStartDate ?: [NSNull null], RKObjectRequestOperationMappingDidFinishUserInfoKey: weakSelf.mappingDidFinishDate ?: [NSNull null] }]; + }]; + [self.stateMachine setCancellationBlock:^{ + [weakSelf.HTTPRequestOperation cancel]; + [weakSelf.responseMapperOperation cancel]; + }]; + } + + return self; +} + +- (instancetype)initWithRequest:(NSURLRequest *)request responseDescriptors:(NSArray *)responseDescriptors +{ + NSParameterAssert(request); + NSParameterAssert(responseDescriptors); + return [self initWithHTTPRequestOperation:[[RKHTTPRequestOperation alloc] initWithRequest:request] responseDescriptors:responseDescriptors]; +} + +- (void)setSuccessCallbackQueue:(dispatch_queue_t)successCallbackQueue +{ + if (successCallbackQueue != _successCallbackQueue) { + if (_successCallbackQueue) { +#if !OS_OBJECT_USE_OBJC + dispatch_release(_successCallbackQueue); +#endif + _successCallbackQueue = NULL; + } + + if (successCallbackQueue) { +#if !OS_OBJECT_USE_OBJC + dispatch_retain(successCallbackQueue); +#endif + _successCallbackQueue = successCallbackQueue; + } + } +} + +- (void)setFailureCallbackQueue:(dispatch_queue_t)failureCallbackQueue +{ + if (failureCallbackQueue != _failureCallbackQueue) { + if (_failureCallbackQueue) { +#if !OS_OBJECT_USE_OBJC + dispatch_release(_failureCallbackQueue); +#endif + _failureCallbackQueue = NULL; + } + + if (failureCallbackQueue) { +#if !OS_OBJECT_USE_OBJC + dispatch_retain(failureCallbackQueue); +#endif + _failureCallbackQueue = failureCallbackQueue; + } + } +} + +// Adopted fix for "The Deallocation Problem" from AFN +- (void)setCompletionBlock:(void (^)(void))block +{ + if (!block) { + [super setCompletionBlock:nil]; + } else { + __unsafe_unretained id weakSelf = self; + [super setCompletionBlock:^ { + block(); + [weakSelf setCompletionBlock:nil]; + }]; + } +} + +- (void)setWillMapDeserializedResponseBlock:(id (^)(id))block +{ + if (!block) { + _willMapDeserializedResponseBlock = nil; + } else { + __unsafe_unretained id weakSelf = self; + _willMapDeserializedResponseBlock = ^id (id deserializedResponse) { + id result = block(deserializedResponse); + [weakSelf setWillMapDeserializedResponseBlock:nil]; + return result; + }; + } +} + +- (void)setCompletionBlockWithSuccess:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success + failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure +{ +// See above setCompletionBlock: +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-retain-cycles" + + //Keep blocks for copyWithZone + self.successBlock = success; + self.failureBlock = failure; + + self.completionBlock = ^ { + if ([self isCancelled] && !self.error) { + self.error = [NSError errorWithDomain:RKErrorDomain code:RKOperationCancelledError userInfo:nil]; + } + + if (self.error) { + if (failure) { + dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ + failure(self, self.error); + }); + } + } else { + if (success) { + dispatch_async(self.successCallbackQueue ?: dispatch_get_main_queue(), ^{ + success(self, self.mappingResult); + }); + } + } + }; +#pragma clang diagnostic pop +} + +- (void)performMappingOnResponseWithCompletionBlock:(void(^)(RKMappingResult *mappingResult, NSError *error))completionBlock +{ + self.responseMapperOperation = [[RKObjectResponseMapperOperation alloc] initWithRequest:self.HTTPRequestOperation.request + response:self.HTTPRequestOperation.response + data:self.HTTPRequestOperation.responseData + responseDescriptors:self.responseDescriptors]; + self.responseMapperOperation.targetObject = self.targetObject; + self.responseMapperOperation.mappingMetadata = self.mappingMetadata; + self.responseMapperOperation.mapperDelegate = self; + [self.responseMapperOperation setQueuePriority:[self queuePriority]]; + [self.responseMapperOperation setWillMapDeserializedResponseBlock:self.willMapDeserializedResponseBlock]; + [self.responseMapperOperation setDidFinishMappingBlock:^(RKMappingResult *mappingResult, NSError *error) { + completionBlock(mappingResult, error); + }]; + [[RKObjectRequestOperation responseMappingQueue] addOperation:self.responseMapperOperation]; +} + +- (void)execute +{ + __weak __typeof(self)weakSelf = self; + + [self.HTTPRequestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + if (weakSelf.isCancelled) { + [weakSelf.stateMachine finish]; + return; + } + + weakSelf.mappingDidStartDate = [NSDate date]; + [weakSelf performMappingOnResponseWithCompletionBlock:^(RKMappingResult *mappingResult, NSError *error) { + if (weakSelf.isCancelled) { + [weakSelf.stateMachine finish]; + return; + } + + // If there is no mapping result but no error, there was no mapping to be performed, + // which we do not treat as an error condition + if (error && !([weakSelf.HTTPRequestOperation.request.HTTPMethod isEqualToString:@"DELETE"] && error.code == RKMappingErrorNotFound)) { + weakSelf.error = error; + [weakSelf.stateMachine finish]; + return; + } + weakSelf.mappingResult = mappingResult; + + if (weakSelf.error) { + weakSelf.mappingResult = nil; + } else { + NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:weakSelf.HTTPRequestOperation.request]; + if (cachedResponse) { + // We're all done mapping this request. Now we set a flag on the cache entry's userInfo dictionary to indicate that the request + // corresponding to the cache entry completed successfully, and we can reliably skip mapping if a subsequent request results + // in the use of this cachedResponse. + NSMutableDictionary *userInfo = cachedResponse.userInfo ? [cachedResponse.userInfo mutableCopy] : [NSMutableDictionary dictionary]; + userInfo[RKResponseHasBeenMappedCacheUserInfoKey] = @YES; + NSCachedURLResponse *newCachedResponse = [[NSCachedURLResponse alloc] initWithResponse:cachedResponse.response data:cachedResponse.rkData userInfo:userInfo storagePolicy:cachedResponse.storagePolicy]; + [[NSURLCache sharedURLCache] storeCachedResponse:newCachedResponse forRequest:weakSelf.HTTPRequestOperation.request]; + } + } + + weakSelf.mappingDidFinishDate = [NSDate date]; + [weakSelf.stateMachine finish]; + }]; + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + RKLogError(@"Object request failed: Underlying HTTP request operation failed with error: %@", weakSelf.HTTPRequestOperation.error); + weakSelf.error = weakSelf.HTTPRequestOperation.error; + [weakSelf.stateMachine finish]; + }]; + + // Send the request + [self.HTTPRequestOperation start]; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, state: %@, isCancelled=%@, request: %@, response: %@>", + NSStringFromClass([self class]), self, RKStringForStateOfObjectRequestOperation(self), [self isCancelled] ? @"YES" : @"NO", + self.HTTPRequestOperation.request, RKStringDescribingURLResponseWithData(self.HTTPRequestOperation.response, self.HTTPRequestOperation.responseData)]; +} + +- (void)willFinish +{ + // Default implementation does nothing +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + RKObjectRequestOperation *operation = [(RKObjectRequestOperation *)[[self class] allocWithZone:zone] initWithHTTPRequestOperation:[self.HTTPRequestOperation copyWithZone:zone] responseDescriptors:self.responseDescriptors]; + operation.targetObject = self.targetObject; + operation.mappingMetadata = self.mappingMetadata; + operation.successCallbackQueue = self.successCallbackQueue; + operation.failureCallbackQueue = self.failureCallbackQueue; + operation.willMapDeserializedResponseBlock = self.willMapDeserializedResponseBlock; + [operation setCompletionBlockWithSuccess:self.successBlock failure:self.failureBlock]; + + return operation; +} + +#pragma mark - NSOperation + +- (BOOL)isConcurrent +{ + return YES; +} + +- (BOOL)isReady +{ + return [self.stateMachine isReady] && [super isReady]; +} + +- (BOOL)isExecuting +{ + return [self.stateMachine isExecuting]; +} + +- (BOOL)isFinished +{ + return [self.stateMachine isFinished]; +} + +- (void)start +{ + [self.stateMachine start]; +} + +- (void)cancel +{ + [super cancel]; + [self.stateMachine cancel]; +} + +@end + +#pragma mark - Fix for leak in iOS 5/6 "- [NSCachedURLResponse data]" message + +@implementation NSCachedURLResponse (RKLeakFix) + +- (NSData *)rkData +{ + @synchronized(self) { + NSData *result; + CFIndex count; + + @autoreleasepool { + result = [self data]; + count = CFGetRetainCount((__bridge CFTypeRef)result); + } + + if (CFGetRetainCount((__bridge CFTypeRef)result) == count) { +#ifndef __clang_analyzer__ + CFRelease((__bridge CFTypeRef)result); // Leak detected, manually release +#endif + } + + return result; + } +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectRequestOperationSubclass.h b/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectRequestOperationSubclass.h new file mode 100644 index 0000000..284df50 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKObjectRequestOperationSubclass.h @@ -0,0 +1,45 @@ +// +// RKObjectRequestOperationSubclass.h +// RestKit +// +// Created by Blake Watters on 9/16/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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. +// + +/* + The extensions to the `RKObjectRequestOperation` class declared in the `ForSubclassEyesOnly` category are to be used by subclasses implementations only. Code that uses `RKObjectRequestOperation` objects must never call these methods. + */ +@interface RKObjectRequestOperation (ForSubclassEyesOnly) + +///---------------------------- +/// @name Subclassing Overrides +///---------------------------- + +/** + Performs object mapping using the `response` and `responseData` properties. + + The `RKObjectRequestOperation` superclass is responsible for the invocation of this method and the subsequent handling of the mapping result or error. + + @param error A pointer to an `NSError` object to be set in the event that the object mapping process has failed. + @return A mapping result or `nil` if an error has occurred. + */ +- (void)performMappingOnResponseWithCompletionBlock:(void(^)(RKMappingResult *mappingResult, NSError *error))completionBlock; + +/** + Invoked to tell the receiver that the object request operation is finishing its work and is about to transition into the finished state. Used to perform any necessary cleanup before the operation is finished. + */ +- (void)willFinish; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKPaginator.h b/Unit-2-Journal/Pods/RestKit/Code/Network/RKPaginator.h new file mode 100644 index 0000000..32cda58 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKPaginator.h @@ -0,0 +1,280 @@ +// +// RKPaginator.h +// RestKit +// +// Created by Blake Watters on 12/29/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKHTTPRequestOperation.h" +#import "RKObjectRequestOperation.h" +#import "RKObjectMapping.h" +#import "RKMappingResult.h" + +@protocol RKManagedObjectCaching; + +/** + Instances of `RKPaginator` retrieve paginated collections of mappable data from remote systems via HTTP. Paginators perform GET requests and use a patterned URL to construct a full URL reflecting the state of the paginator. Paginators rely on an instance of RKObjectMappingProvider to determine how to perform object mapping on the retrieved data. Paginators can load Core Data backed models provided that an instance of RKManagedObjectStore is assigned to the paginator. + + ## Configuring Pagination Mapping + + The paginator must be configured with a `paginationMapping` specifying how configuration metadata is to be mapped out of the response payload. The configured mapping must have an `objectClass` of `RKPaginator` and should include attribute mappings for the `currentPage`, `pageCount`, `perPage`, and `objectCount`. For example, given a paginated resource loaded from '/articles?page=1' with the followibg JSON: + + { "pagination": { "per_page": 10, "total_pages": 25, "total_objects": 250 }, "articles": [ // Array of articles ] } + + The pagination mapping would be configured as: + + RKObjectMapping *paginationMapping = [RKObjectMapping mappingForClass:[RKPaginator class]]; + [paginationMapping addAttributeMappingsFromDictionary:@{ + @"pagination.per_page": @"perPage", + @"pagination.total_pages": @"pageCount", + @"pagination.total_objects": @"objectCount", + }]; + + ## iOS 5 Compatibility Caveats + + The paginator is compatible with iOS 5.x through the use of proxy attributes. In iOS 6.0 and greater, key-value coding supports the automatic boxing and unboxing of primitive values. This enables direct mapping configuration for the `currentPage`, `pageCount`, `perPage`, and `objectCount` attributes. Under iOS 5, where autoboxing is not available, mapping configuration must target special proxy attributes instead. For each of the above properties, a private `NSNumber` property is implemented by the class. Each proxy property has 'Number' appended as a suffix to the property name: `currentPageNumber`, `pageCountNumber`, `perPageNumber`, and `objectCountNumber`. + + */ +@interface RKPaginator : NSObject + +///------------------------------------- +/// @name Initializing Paginator Objects +///------------------------------------- + +/** + Initializes a RKPaginator object with the a provided patternURL and mappingProvider. + + @param request A request with a URL containing a dynamic pattern specifying how paginated resources are to be accessed. + @param paginationMapping The pagination mapping specifying how pagination metadata is to be mapped from responses. + @param responseDescriptors An array of response descriptors describing how to map object representations loaded by object request operations dispatched by the paginator. + @return The receiver, initialized with the request, pagination mapping, and response descriptors. + */ +- (instancetype)initWithRequest:(NSURLRequest *)request + paginationMapping:(RKObjectMapping *)paginationMapping + responseDescriptors:(NSArray *)responseDescriptors NS_DESIGNATED_INITIALIZER; + +///----------------------------- +/// @name Configuring Networking +///----------------------------- + +/** + A URL with a path pattern for building a complete URL from + which to load the paginated resource collection. The patterned resource + path will be evaluated against the state of the paginator object itself. + + For example, given a paginated collection of data at the /articles path, + the path portion of the pattern URL may look like: + + /articles?per_page=:perPage&page_number=:currentPage + + When the pattern is evaluated against the state of the paginator, this will + yield a complete path that can be used to load the specified page. Given + a paginator configured with 100 objects per page and a current page number of 3, + the path portion of the pagination URL would become: + + /articles?per_page=100&page_number=3 + */ +@property (nonatomic, readonly) NSURL *patternURL; + +/** + Returns a complete URL to the paginated resource collection by interpolating the state of the paginator object against the patternURL. + */ +@property (nonatomic, readonly) NSURL *URL; + +/** + An optional operation queue on which object request operations constructed by the paginator are to be enqueued for processing. + */ +@property (nonatomic, strong) NSOperationQueue *operationQueue; + +/** + Returns the last object request operation used by the paginator to load a page of objects. + */ +@property (nonatomic, strong, readonly) RKObjectRequestOperation *objectRequestOperation; + +/** + Sets the `RKHTTPRequestOperation` subclass to be used when constructing HTTP request operations for requests dispatched by the paginator. + + **Default**: `[RKHTTPRequestOperation class]` + */ +- (void)setHTTPOperationClass:(Class)operationClass; + +///----------------------------------- +/// @name Setting the Completion Block +///----------------------------------- + +/** + Sets the completion block to be invoked when the paginator finishes loading a page of results. + + @param success A block to be executed upon a successful load of a page of objects. The block has no return value and takes three arguments: the paginator object, an array containing the paginated objects, and an integer indicating the page that was loaded. + @param failure A block to be exected upon a failed load. The block has no return value and takes two arguments: the paginator object and an error indicating the nature of the failure. + */ +- (void)setCompletionBlockWithSuccess:(void (^)(RKPaginator *paginator, NSArray *objects, NSUInteger page))success + failure:(void (^)(RKPaginator *paginator, NSError *error))failure; + + +///----------------------------------- +/// @name Accessing Pagination Results +///----------------------------------- + +/** + The mapping result containing the last set of paginated objects or `nil` if an error was encountered. + */ +@property (nonatomic, strong, readonly) RKMappingResult *mappingResult; + +/** + The error, if any, that occured during the last load of the paginator. + */ +@property (nonatomic, strong, readonly) NSError *error; + +///----------------------------------- +/// @name Object Mapping Configuration +///----------------------------------- + +/** + The object mapping defining how pagination metadata is to be mapped from a paginated response onto the paginator object. + + See the documentation in the "Configuring Pagination Mapping" section for details about the pagination mapping. + + @warning The `objectClass` of the given mapping must be `RKPaginator`. + */ +@property (nonatomic, strong) RKObjectMapping *paginationMapping; + +///------------------------------ +/// @name Core Data Configuration +///------------------------------ + +#ifdef _COREDATADEFINES_H +/** + The managed object context in which paginated managed objects are to be persisted. + */ +@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext; + +/** + The managed object cache used to find existing managed object instances in the persistent store. + */ +@property (nonatomic, strong) id<RKManagedObjectCaching> managedObjectCache; + +/** + An array of fetch request blocks. + */ +@property (nonatomic, copy) NSArray *fetchRequestBlocks; +#endif + +///------------------------------------ +/// @name Accessing Pagination Metadata +///------------------------------------ + +/** + The number of objects to load per page + */ +@property (nonatomic, assign) NSUInteger perPage; + +/** + A Boolean value indicating if the paginator has loaded a page of objects + + @returns YES when the paginator has loaded a page of objects + */ +@property (nonatomic, readonly, getter = isLoaded) BOOL loaded; + +/** + Returns the page number for the most recently loaded page of objects. + + @return The page number for the current page of objects. + @exception NSInternalInconsistencyException Raised if `isLoaded` is equal to `NO`. + */ +@property (nonatomic, readonly) NSUInteger currentPage; + +/** + Returns the offset based off the page for the most recently loaded objects. + + @return The offset for the current page of objects. + @exception NSInternalInconsistencyException Raised if `isLoaded` is equal to `NO`. + */ +@property (nonatomic, readonly) NSUInteger offset; + +/** + Returns the number of pages in the total resource collection. + + @return A count of the number of pages in the resource collection. + @exception NSInternalInconsistencyException Raised if `hasPageCount` is `NO`. + */ +@property (nonatomic, readonly) NSUInteger pageCount; + +/** + Returns the total number of objects in the collection + + @return A count of the number of objects in the resource collection. + @exception NSInternalInconsistencyException Raised if `hasObjectCount` is `NO`. + */ +@property (nonatomic, readonly) NSUInteger objectCount; + +/** + Returns a Boolean value indicating if the total number of pages in the collection is known by the paginator. + + @return `YES` if the paginator knows the page count, otherwise `NO`. + */ +@property (nonatomic, readonly) BOOL hasPageCount; + +/** + Returns a Boolean value indicating if the total number of objects in the collection is known by the paginator. + + @return `YES` if the paginator knows the number of objects in the paginated collection, otherwise `NO`. + */ +@property (nonatomic, readonly) BOOL hasObjectCount; + +/** + Returns a Boolean value indicating if there is a next page in the collection. + + @return `YES` if there is a next page, otherwise `NO`. + @exception NSInternalInconsistencyException Raised if isLoaded or hasPageCount is `NO`. + */ +@property (nonatomic, readonly) BOOL hasNextPage; + +/** + Returns a Boolean value indicating if there is a previous page in the collection. + + @return `YES` if there is a previous page, otherwise `NO`. + @exception NSInternalInconsistencyException Raised if isLoaded is `NO`. + */ +@property (nonatomic, readonly) BOOL hasPreviousPage; + +///------------------------ +/// @name Paginator Actions +///------------------------ + +/** + Loads the next page of data by incrementing the current page, constructing an object loader to fetch the data, and object mapping the results. + */ +- (void)loadNextPage; + +/** + Loads the previous page of data by decrementing the current page, constructing an object loader to fetch the data, and object mapping the results. + */ +- (void)loadPreviousPage; + +/** + Loads a specific page of data by mutating the current page, constructing an object loader to fetch the data, and object mapping the results. + + @param pageNumber The page of objects to load from the remote backend + */ +- (void)loadPage:(NSUInteger)pageNumber; + +/** + Cancels an in-progress pagination request. + */ +- (void)cancel; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKPaginator.m b/Unit-2-Journal/Pods/RestKit/Code/Network/RKPaginator.m new file mode 100644 index 0000000..f5ef61d --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKPaginator.m @@ -0,0 +1,329 @@ +// +// RKPaginator.m +// RestKit +// +// Created by Blake Watters on 12/29/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKPaginator.h" +#import "RKMappingOperation.h" +#import "SOCKit.h" +#import "RKLog.h" +#import "RKPathMatcher.h" +#import "RKHTTPUtilities.h" + +#ifdef _COREDATADEFINES_H +#if __has_include("RKCoreData.h") +#define RKCoreDataIncluded +#import "RKManagedObjectRequestOperation.h" +#endif +#endif + +static NSUInteger RKPaginatorDefaultPerPage = 25; + +// Private interface +@interface RKPaginator () +@property (nonatomic, copy) NSURLRequest *request; +@property (nonatomic, strong) Class HTTPOperationClass; +@property (nonatomic, copy) NSArray *responseDescriptors; +@property (nonatomic, assign, readwrite) NSUInteger currentPage; +@property (nonatomic, assign, readwrite) NSUInteger offset; +@property (nonatomic, assign, readwrite) NSUInteger pageCount; +@property (nonatomic, assign, readwrite) NSUInteger objectCount; +@property (nonatomic, assign, readwrite) BOOL loaded; +@property (nonatomic, strong, readwrite) RKMappingResult *mappingResult; +@property (nonatomic, strong, readwrite) NSError *error; +@property (nonatomic, strong, readwrite) RKObjectRequestOperation *objectRequestOperation; + +// iOS 5.x compatible proxy attributes +@property (nonatomic, assign, readwrite) NSNumber *perPageNumber; +@property (nonatomic, assign, readwrite) NSNumber *currentPageNumber; +@property (nonatomic, assign, readwrite) NSNumber *pageCountNumber; +@property (nonatomic, assign, readwrite) NSNumber *objectCountNumber; + +@property (nonatomic, copy) void (^successBlock)(RKPaginator *paginator, NSArray *objects, NSUInteger page); +@property (nonatomic, copy) void (^failureBlock)(RKPaginator *paginator, NSError *error); +@end + +@implementation RKPaginator + +- (instancetype)initWithRequest:(NSURLRequest *)request + paginationMapping:(RKObjectMapping *)paginationMapping + responseDescriptors:(NSArray *)responseDescriptors; +{ + NSParameterAssert(request); + NSParameterAssert(paginationMapping); + NSParameterAssert(responseDescriptors); + NSAssert([paginationMapping.objectClass isSubclassOfClass:[RKPaginator class]], @"The paginationMapping must have a target object class of `RKPaginator`"); + self = [super init]; + if (self) { + self.HTTPOperationClass = [RKHTTPRequestOperation class]; + self.request = request; + self.paginationMapping = paginationMapping; + self.responseDescriptors = responseDescriptors; + self.currentPage = NSNotFound; + self.pageCount = NSNotFound; + self.objectCount = NSNotFound; + self.offset = NSNotFound; + self.perPage = RKPaginatorDefaultPerPage; + self.loaded = NO; + } + + return self; +} + +- (void)dealloc +{ + [self.objectRequestOperation cancel]; +} + +- (NSURL *)patternURL +{ + return self.request.URL; +} + +- (NSURL *)URL +{ + NSString *pathAndQueryString = RKPathAndQueryStringFromURLRelativeToURL(self.patternURL, nil); + NSString *interpolatedString = RKPathFromPatternWithObject(pathAndQueryString, self); + return [NSURL URLWithString:interpolatedString relativeToURL:self.request.URL]; +} + +- (void)setHTTPOperationClass:(Class)operationClass +{ + NSAssert(operationClass == nil || [operationClass isSubclassOfClass:[RKHTTPRequestOperation class]], @"The HTTP operation class must be a subclass of `RKHTTPRequestOperation`"); + _HTTPOperationClass = operationClass; +} + +- (void)setCompletionBlockWithSuccess:(void (^)(RKPaginator *paginator, NSArray *objects, NSUInteger page))success + failure:(void (^)(RKPaginator *paginator, NSError *error))failure +{ + self.successBlock = success; + self.failureBlock = failure; +} + +// Private. Public consumers can rely on isLoaded +- (BOOL)hasCurrentPage +{ + return _currentPage != NSNotFound; +} + +- (BOOL)hasOffset +{ + return _offset != NSNotFound; +} + +- (BOOL)hasPageCount +{ + return _pageCount != NSNotFound; +} + +- (BOOL)hasObjectCount +{ + return _objectCount != NSNotFound; +} + +- (NSUInteger)currentPage +{ + // Referenced during initial load, so we don't rely on isLoaded. + NSAssert([self hasCurrentPage], @"Current page has not been initialized."); + return _currentPage; +} + +- (NSUInteger)offset +{ + if ([self hasOffset]) return _offset; + return [self hasCurrentPage] ? ((_currentPage - 1) * _perPage) : 0; +} + +- (BOOL)hasNextPage +{ + NSAssert(self.isLoaded, @"Cannot determine hasNextPage: paginator is not loaded."); + NSAssert([self hasPageCount], @"Cannot determine hasNextPage: page count is not known."); + + return self.currentPage < self.pageCount; +} + +- (BOOL)hasPreviousPage +{ + NSAssert(self.isLoaded, @"Cannot determine hasPreviousPage: paginator is not loaded."); + return self.currentPage > 1; +} + +#pragma mark - Action methods + +- (void)loadNextPage +{ + [self loadPage:self.currentPage + 1]; +} + +- (void)loadPreviousPage +{ + [self loadPage:self.currentPage - 1]; +} + +- (void)loadPage:(NSUInteger)pageNumber +{ + if (self.objectRequestOperation.HTTPRequestOperation.response) { + // The user by calling loadPage is ready to perform the next request so invalidate objectRequestOperation + self.objectRequestOperation = nil; + } + + NSAssert(self.responseDescriptors, @"Cannot perform a load with nil response descriptors."); + NSAssert(! self.objectRequestOperation, @"Cannot perform a load while one is already in progress."); + self.currentPage = pageNumber; + + NSMutableURLRequest *mutableRequest = [self.request mutableCopy]; + mutableRequest.URL = self.URL; + +#ifdef RKCoreDataIncluded + if (self.managedObjectContext) { + RKHTTPRequestOperation *requestOperation = [[self.HTTPOperationClass alloc] initWithRequest:mutableRequest]; + RKManagedObjectRequestOperation *managedObjectRequestOperation = [[RKManagedObjectRequestOperation alloc] initWithHTTPRequestOperation:requestOperation responseDescriptors:self.responseDescriptors]; + managedObjectRequestOperation.managedObjectContext = self.managedObjectContext; + managedObjectRequestOperation.managedObjectCache = self.managedObjectCache; + managedObjectRequestOperation.fetchRequestBlocks = self.fetchRequestBlocks; + managedObjectRequestOperation.deletesOrphanedObjects = NO; + + self.objectRequestOperation = managedObjectRequestOperation; + } else { + self.objectRequestOperation = [[RKObjectRequestOperation alloc] initWithRequest:mutableRequest responseDescriptors:self.responseDescriptors]; + } +#else + self.objectRequestOperation = [[RKObjectRequestOperation alloc] initWithRequest:mutableRequest responseDescriptors:self.responseDescriptors]; +#endif + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-retain-cycles" + [self.objectRequestOperation setWillMapDeserializedResponseBlock:^id(id deserializedResponseBody) { + NSError *error = nil; + RKMappingOperation *mappingOperation = [[RKMappingOperation alloc] initWithSourceObject:deserializedResponseBody destinationObject:self mapping:self.paginationMapping]; + BOOL success = [mappingOperation performMapping:&error]; + if (!success) { + self.pageCount = 0; + self.currentPage = 0; + RKLogError(@"Paginator didn't map info to compute page count. Assuming no pages."); + } else if (self.perPage && [self hasObjectCount]) { + float objectCountFloat = self.objectCount; + self.pageCount = ceilf(objectCountFloat / self.perPage); + RKLogInfo(@"Paginator objectCount: %ld pageCount: %ld", (long)self.objectCount, (long)self.pageCount); + } else { + RKLogError(@"Paginator perPage set is 0."); + } + + return deserializedResponseBody; + }]; + [self.objectRequestOperation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { + [self finish]; + if (self.successBlock) { + self.successBlock(self, [mappingResult array], self.currentPage); + } + } failure:^(RKObjectRequestOperation *operation, NSError *error) { + [self finish]; + if (self.failureBlock) { + self.failureBlock(self, error); + } + }]; +#pragma clang diagnostic pop + + if (self.operationQueue) { + [self.operationQueue addOperation:self.objectRequestOperation]; + } else { + [self.objectRequestOperation start]; + } +} + +- (void)waitUntilFinished +{ + [self.objectRequestOperation waitUntilFinished]; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p patternURL=%@ isLoaded=%@ perPage=%ld currentPage=%@ offset=%@ pageCount=%@ objectCount=%@>", + NSStringFromClass([self class]), self, self.patternURL, self.isLoaded ? @"YES" : @"NO", (long) self.perPage, + [self hasCurrentPage] ? @(self.currentPage) : @"???", + [self hasOffset] ? @(self.offset) : @"???", + [self hasPageCount] ? @(self.pageCount) : @"???", + [self hasObjectCount] ? @(self.objectCount) : @"???"]; +} + +- (void)finish +{ + self.loaded = (self.objectRequestOperation.mappingResult != nil); + self.mappingResult = self.objectRequestOperation.mappingResult; + self.error = self.objectRequestOperation.error; +} + +- (void)cancel +{ + [self.objectRequestOperation cancel]; + self.objectRequestOperation = nil; +} + +#pragma mark - iOS 5 proxy attributes + +- (NSNumber *)perPageNumber +{ + return @(self.perPage); +} + +- (void)setPerPageNumber:(NSNumber *)perPageNumber +{ + self.perPage = [perPageNumber unsignedIntegerValue]; +} + +- (NSNumber *)currentPageNumber +{ + return @(self.currentPage); +} + +- (void)setCurrentPageNumber:(NSNumber *)currentPageNumber +{ + self.currentPage = [currentPageNumber unsignedIntegerValue]; +} + +- (NSNumber *)pageCountNumber +{ + return @(self.pageCount); +} + +- (void)setPageCountNumber:(NSNumber *)pageCountNumber +{ + self.pageCount = [pageCountNumber unsignedIntegerValue]; +} + +- (NSNumber *)objectCountNumber +{ + return @(self.objectCount); +} + +- (void)setObjectCountNumber:(NSNumber *)objectCountNumber +{ + self.objectCount = [objectCountNumber unsignedIntegerValue]; +} + +- (NSNumber *)offsetNumber +{ + return @(self.offset); +} + +- (void)setOffsetNumber:(NSNumber *)offsetNumber +{ + self.offset = [offsetNumber unsignedIntegerValue]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKPathMatcher.h b/Unit-2-Journal/Pods/RestKit/Code/Network/RKPathMatcher.h new file mode 100644 index 0000000..fb1cee9 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKPathMatcher.h @@ -0,0 +1,132 @@ +// +// RKPathMatcher.h +// RestKit +// +// Created by Greg Combs on 9/2/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> +@class SOCPattern; + +/** + Convenience method for generating a path against the properties of an object. Takes an `NSString` with property names prefixed with a colon and interpolates the values of the properties specified and returns the generated path. + + For example, given an `article` object with an `articleID` property whose value is `@12345`, `RKPathFromPatternWithObject(@"articles/:articleID", article)` would return `@"articles/12345"`. + + This functionality is the basis for path generation in the `RKRouter` class. + + @param pathPattern An `SOCPattern` string containing zero or more colon-prefixed property names. + @param object The object to interpolate the properties against + @return A new `NSString` object with the values of the given object interpolated for the colon-prefixed properties name in the given pattern string. + @see `RKPathMatcher` + @see `SOCPattern` + */ +NSString *RKPathFromPatternWithObject(NSString *pathPattern, id object); + +/** + The `RKPathMatcher` class performs pattern matching and parameter parsing of strings, typically representing the path portion of an `NSURL` object. It provides much of the necessary tools to map a given path to local objects (the inverse of RKRouter's function). This makes it easier to implement the `RKManagedObjectCaching` protocol and generate `NSFetchRequest` objects from a given path. There are two means of instantiating and using a matcher object in order to provide more flexibility in implementations, and to improve efficiency by eliminating repetitive and costly pattern initializations. + + @see `RKManagedObjectCaching` + @see `RKPathFromPatternWithObject` + @see `RKRouter` + */ +@interface RKPathMatcher : NSObject <NSCopying> + +///--------------------------------- +/// @name Matching Paths to Patterns +///--------------------------------- + +/** + Creates a path match object starting from a path string. This method should be followed by `matchesPattern:tokenizeQueryStrings:parsedArguments:` + + @param pathString The string to evaluate and parse, such as `/districts/tx/upper/?apikey=GC5512354` + @return An instantiated `RKPathMatcher` without an established pattern. + */ ++ (instancetype)pathMatcherWithPath:(NSString *)pathString; + +/** + Determines if the path string matches the provided pattern, and yields a dictionary with the resulting matched key/value pairs. Use of this method should be preceded by `pathMatcherWithPath:` Pattern strings should include encoded parameter keys, delimited by a single colon at the beginning of the key name. + + *NOTE 1 *- Numerous colon-encoded parameter keys can be joined in a long pattern, but each key must be separated by at least one unmapped character. For instance, `/:key1:key2:key3/` is invalid, whereas `/:key1/:key2/:key3/` is acceptable. + + *NOTE 2 *- The pattern matcher supports KVM, so `:key1.otherKey` normally resolves as it would in any other KVM + situation, ... otherKey is a sub-key on a the object represented by key1. This presents problems in circumstances where + you might want to build a pattern like /:filename.json, where the dot isn't intended as a sub-key on the filename, but rather + part of the json static string. In these instances, you need to escape the dot with two backslashes, like so: + /:filename\\.json + + @param patternString The pattern to use for evaluating, such as `/:entityName/:stateID/:chamber/` + @param shouldTokenize If YES, any query parameters will be tokenized and inserted into the parsed argument dictionary. + @param arguments A pointer to a dictionary that contains the key/values from the pattern (and parameter) matching. + @return A boolean value indicating if the path string successfully matched the pattern. + */ +- (BOOL)matchesPattern:(NSString *)patternString tokenizeQueryStrings:(BOOL)shouldTokenize parsedArguments:(NSDictionary **)arguments; + +///--------------------------------- +/// @name Matching Patterns to Paths +///--------------------------------- + +/** + Creates a path matcher object starting from a pattern string. This method should be followed by `matchesPath:tokenizeQueryStrings:parsedArguments:`. Patterns should include encoded parameter keys, delimited by a single colon at the beginning of the key name. + + *NOTE 1 *- Numerous colon-encoded parameter keys can be joined in a long pattern, but each key must be separated by at least one unmapped character. For instance, `/:key1:key2:key3/` is invalid, whereas `/:key1/:key2/:key3/` is acceptable. + + *NOTE 2 *- The pattern matcher supports KVM, so `:key1.otherKey` normally resolves as it would in any other KVM situation, ... otherKey is a sub-key on a the object represented by key1. This presents problems in circumstances where you might want to build a pattern like `/:filename.json`, where the dot isn't intended as a sub-key on the filename, but rather part of the json static string. In these instances, you need to escape the dot with two backslashes, like so: `/:filename\\.json` + + @param patternString The pattern to use for evaluating, such as `/:entityName/:stateID/:chamber/` + @return An instantiated `RKPathMatcher` with an established pattern. + */ ++ (instancetype)pathMatcherWithPattern:(NSString *)patternString; + +/** + Determines if the given path string matches a pattern, and yields a dictionary with the resulting matched key/value pairs. Use of this method should be preceded by `pathMatcherWithPattern:`. + + @param pathString The string to evaluate and parse, such as `/districts/tx/upper/?apikey=GC5512354` + @param shouldTokenize If YES, any query parameters will be tokenized and inserted into the parsed argument dictionary. + @param arguments A pointer to a dictionary that contains the key/values from the pattern (and parameter) matching. + @return A boolean value indicating if the path string successfully matched the pattern. + */ +- (BOOL)matchesPath:(NSString *)pathString tokenizeQueryStrings:(BOOL)shouldTokenize parsedArguments:(NSDictionary **)arguments; + +///---------------------------------- +/// @name Creating Paths from Objects +///---------------------------------- + +/** + Generates a path by interpolating the properties of the 'object' argument, assuming the existence of a previously specified pattern established via `pathMatcherWithPattern:`. Otherwise, this method is identical in function to `RKPathFromPatternWithObject` (in fact it is a shortcut for this method). + + For example, given an 'article' object with an 'articleID' property value of 12345 and a code of "This/That"... + + RKPathMatcher *matcher = [RKPathMatcher pathMatcherWithPattern:@"/articles/:articleID/:code"]; + NSString *path = [matcher pathFromObject:article addingEscapes:YES interpolatedParameters:nil]; + + ... will produce a 'path' containing the string `@"/articles/12345/This%2FThat"` + + @param object The object containing the properties to interpolate. + @param addEscapes Conditionally add percent escapes to the interpolated property values + @param interpolatedParameters On input, a pointer for a dictionary object. When the path pattern of the receiver is interpolated, this pointer is set to a new dictionary object in which the keys correspond to the named parameters within the path pattern and the values are taken from the corresponding keypaths of the interpolated object . + @return A string with the object's interpolated property values inserted into the receiver's established pattern. + @see `RKRouter` + */ +- (NSString *)pathFromObject:(id)object addingEscapes:(BOOL)addEscapes interpolatedParameters:(NSDictionary **)interpolatedParameters; + +///------------------------------------------- +/// @name Accessing Tokenized Query Parameters +///------------------------------------------- + +@property (copy, readonly) NSDictionary *queryParameters; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKPathMatcher.m b/Unit-2-Journal/Pods/RestKit/Code/Network/RKPathMatcher.m new file mode 100644 index 0000000..a8ce9bc --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKPathMatcher.m @@ -0,0 +1,154 @@ +// +// RKPathMatcher.m +// RestKit +// +// Created by Greg Combs on 9/2/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKPathMatcher.h" +#import "SOCKit.h" +#import "RKLog.h" +#import "RKDictionaryUtilities.h" + +static NSString *RKEncodeURLString(NSString *unencodedString); +extern NSDictionary *RKQueryParametersFromStringWithEncoding(NSString *string, NSStringEncoding stringEncoding); + +// NSString's stringByAddingPercentEscapes doesn't do a complete job (it ignores "/?&", among others) +static NSString *RKEncodeURLString(NSString *unencodedString) +{ + NSString *encodedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes( + NULL, + (__bridge CFStringRef)unencodedString, + NULL, + (CFStringRef)@"!*'();:@&=+$,/?%#[]", + kCFStringEncodingUTF8)); + return encodedString; +} + +static NSUInteger RKNumberOfSlashesInString(NSString *string) +{ + static NSRegularExpression *regex = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + regex = [NSRegularExpression regularExpressionWithPattern:@"/" options:NSRegularExpressionCaseInsensitive error:nil]; + }); + return [regex numberOfMatchesInString:string options:0 range:NSMakeRange(0, [string length])]; +} + +NSString *RKPathFromPatternWithObject(NSString *pathPattern, id object) +{ + NSCAssert(object != NULL, @"Object provided is invalid; cannot create a path from a NULL object"); + RKPathMatcher *matcher = [RKPathMatcher pathMatcherWithPattern:pathPattern]; + return [matcher pathFromObject:object addingEscapes:NO interpolatedParameters:nil]; +} + +@interface RKPathMatcher () +@property (nonatomic, strong) SOCPattern *socPattern; +@property (nonatomic, copy) NSString *patternString; // SOCPattern keeps it private +@property (nonatomic, copy) NSString *sourcePath; +@end + +@implementation RKPathMatcher + +- (id)copyWithZone:(NSZone *)zone +{ + RKPathMatcher *copy = [[[self class] allocWithZone:zone] init]; + copy.socPattern = self.socPattern; + copy.patternString = self.patternString; + copy.sourcePath = self.sourcePath; + return copy; +} + ++ (instancetype)pathMatcherWithPattern:(NSString *)patternString +{ + NSAssert(patternString != NULL, @"Pattern string must not be empty in order to perform pattern matching."); + RKPathMatcher *matcher = [self new]; + matcher.socPattern = [SOCPattern patternWithString:patternString]; + matcher.patternString = patternString; + return matcher; +} + ++ (instancetype)pathMatcherWithPath:(NSString *)pathString +{ + RKPathMatcher *matcher = [self new]; + matcher.sourcePath = pathString; + return matcher; +} + +- (BOOL)itMatchesAndHasParsedArguments:(NSDictionary **)arguments andPattern:(NSString*)pattern andSourcePath:(NSString*)sourcePath tokenizeQueryStrings:(BOOL)shouldTokenize +{ + NSMutableDictionary *argumentsCollection = [NSMutableDictionary dictionary]; + NSString *rootPath = [sourcePath copy]; + NSArray *components = [sourcePath componentsSeparatedByString:@"?"]; + SOCPattern *socPattern = [SOCPattern patternWithString:pattern]; + + // Bifurcate Source Path From Query Parameters + + if ([components count] > 1) { + rootPath = [components objectAtIndex:0]; + NSDictionary *queryParameters = RKQueryParametersFromStringWithEncoding([components objectAtIndex:1], NSUTF8StringEncoding); + if (shouldTokenize) { + [argumentsCollection addEntriesFromDictionary:queryParameters]; + } + } + + bool rootPathMatchesPattern = RKNumberOfSlashesInString(pattern) == RKNumberOfSlashesInString(rootPath); + + if (![socPattern stringMatches:rootPath]) return NO; + if (!arguments) return YES && rootPathMatchesPattern; + NSDictionary *extracted = [socPattern parameterDictionaryFromSourceString:rootPath]; + if (extracted) [argumentsCollection addEntriesFromDictionary:RKDictionaryByReplacingPercentEscapesInEntriesFromDictionary(extracted)]; + *arguments = argumentsCollection; + return YES && rootPathMatchesPattern; +} + +- (BOOL)matchesPattern:(NSString *)patternString tokenizeQueryStrings:(BOOL)shouldTokenize parsedArguments:(NSDictionary **)arguments +{ + NSAssert(self.sourcePath != NULL, @"Matcher is not configured correctly. Instantiate it using pathMatcherWithPath: to use matchesPattern:tokenizeQueryStrings:parsedArguments"); + NSAssert(patternString != NULL, @"Pattern string must not be empty in order to perform patterm matching."); + return [self itMatchesAndHasParsedArguments:arguments andPattern:patternString andSourcePath:self.sourcePath tokenizeQueryStrings:shouldTokenize]; +} + +- (BOOL)matchesPath:(NSString *)sourceString tokenizeQueryStrings:(BOOL)shouldTokenize parsedArguments:(NSDictionary **)arguments +{ + return [self itMatchesAndHasParsedArguments:arguments andPattern:self.patternString andSourcePath:sourceString tokenizeQueryStrings:shouldTokenize]; +} + +- (NSString *)pathFromObject:(id)object addingEscapes:(BOOL)addEscapes interpolatedParameters:(NSDictionary **)interpolatedParameters +{ + NSAssert(self.socPattern != NULL, @"Matcher has no established pattern. Instantiate it using pathMatcherWithPattern: before calling pathFromObject:"); + NSAssert(object != NULL, @"Object provided is invalid; cannot create a path from a NULL object"); + NSString *(^encoderBlock)(NSString *interpolatedString) = nil; + if (addEscapes) { + encoderBlock = ^NSString *(NSString *interpolatedString) { + return RKEncodeURLString(interpolatedString); + }; + } + NSString *path = [self.socPattern stringFromObject:object withBlock:encoderBlock]; + if (interpolatedParameters) { + NSMutableDictionary *parsedParameters = [[self.socPattern parameterDictionaryFromSourceString:path] mutableCopy]; + if (addEscapes) { + for (NSString *key in [parsedParameters allKeys]) { + NSString *unescapedParameter = [parsedParameters[key] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + [parsedParameters setValue:unescapedParameter forKey:key]; + } + } + *interpolatedParameters = parsedParameters; + } + return path; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKRequestDescriptor.h b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRequestDescriptor.h new file mode 100644 index 0000000..3b45e17 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRequestDescriptor.h @@ -0,0 +1,110 @@ +// +// RKRequestDescriptor.h +// RestKit +// +// Created by Blake Watters on 8/24/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> +#import "RKHTTPUtilities.h" + +@class RKMapping; + +/** + An `RKRequestDescriptor` object describes an object mapping configuration that is used to construct the parameters of an HTTP request for an object. Request descriptors are defined by specifying the `RKMapping` object (whose `objectClass` must be `NSMutableDictionary`) that is to be used when object mapping an object into an `NSDictionary` of parameters, the class of the type of object for which the mapping is to be applied, and an optional root key path under which the paramters are to be nested. Response descriptors are only utilized when construct parameters for an `NSURLRequest` with an HTTP method of `POST`, `PUT`, or `PATCH`. + + @see RKObjectParameterization + @see [RKObjectMapping requestMapping] + @see [RKObjectManager requestWithObject:method:path:parameters:] + */ +@interface RKRequestDescriptor : NSObject + +///------------------------------------ +/// @name Creating a Request Descriptor +///------------------------------------ + +/** + Creates and returns a new `RKRequestDescriptor` object. + + This method is deprecated. Use `+ (instancetype)requestDescriptorWithMapping:(RKMapping *)mapping + objectClass:(Class)objectClass + rootKeyPath:(NSString *)rootKeyPath + method:(RKRequestMethod)method` instead. + + @param mapping The mapping to be used when parameterizing an object using the request descriptor. Cannot be nil and must have an objectClass equal to `[NSMutableDictionary class]`. + @param objectClass The class of objects for which the request descriptor should be used. Cannot be nil. + @param rootKeyPath The root key path under which paramters constructed using the response descriptor will be nested. If nil, the parameters will not be nested and returned as a flat dictionary object. + @return A new `RKRequestDescriptor` object. + + @see [RKObjectMapping requestMapping] + @warning An exception will be raised if the objectClass of the given mapping is not `[NSMutableDictionary class]`. + */ ++ (instancetype)requestDescriptorWithMapping:(RKMapping *)mapping + objectClass:(Class)objectClass + rootKeyPath:(NSString *)rootKeyPath DEPRECATED_ATTRIBUTE; + +/** +Creates and returns a new `RKRequestDescriptor` object. + +@param mapping The mapping to be used when parameterizing an object using the request descriptor. Cannot be nil and must have an objectClass equal to `[NSMutableDictionary class]`. +@param objectClass The class of objects for which the request descriptor should be used. Cannot be nil. +@param rootKeyPath The root key path under which paramters constructed using the response descriptor will be nested. If nil, the parameters will not be nested and returned as a flat dictionary object. +@param method The HTTP method(s) for which the mapping is to be used. +@return A new `RKRequestDescriptor` object. + +@see [RKObjectMapping requestMapping] +@warning An exception will be raised if the objectClass of the given mapping is not `[NSMutableDictionary class]`. +*/ ++ (instancetype)requestDescriptorWithMapping:(RKMapping *)mapping + objectClass:(Class)objectClass + rootKeyPath:(NSString *)rootKeyPath + method:(RKRequestMethod)method; + +///----------------------------------------------------- +/// @name Getting Information About a Request Descriptor +///----------------------------------------------------- + +/** + The mapping specifying how the object being parameterized is to be mapped into an `NSDictionary` representation. The mapping must have an objectClass equal to `[NSMutableDictionary class]`. + */ +@property (nonatomic, strong, readonly) RKMapping *mapping; + +/** + The class of objects that the request descriptor is appropriate for use in parameterizing. + */ +@property (nonatomic, strong, readonly) Class objectClass; + +/** + The root key path that the paramters for the object are to be nested under. May be nil. + */ +@property (nonatomic, copy, readonly) NSString *rootKeyPath; + +/** + The HTTP method(s) for which the mapping is to be used. + */ +@property (nonatomic, assign, readonly) RKRequestMethod method; + +///------------------------- +/// @name Comparing Request Descriptors +///------------------------- + +/** + Returns `YES` if the receiver and the specified request descriptor are considered equivalent. + + */ +- (BOOL)isEqualToRequestDescriptor:(RKRequestDescriptor *)otherDescriptor; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKRequestDescriptor.m b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRequestDescriptor.m new file mode 100644 index 0000000..0a1ddd5 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRequestDescriptor.m @@ -0,0 +1,118 @@ +// +// RKRequestDescriptor.m +// RestKit +// +// Created by Blake Watters on 8/24/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// Created by Blake Watters on 8/24/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKRequestDescriptor.h" +#import "RKObjectMapping.h" +#import "RKDynamicMapping.h" + +static void RKAssertValidMappingForRequestDescriptor(RKMapping *mapping) +{ + if ([mapping isKindOfClass:[RKObjectMapping class]]) { + if (! [[(RKObjectMapping *)mapping objectClass] isEqual:[NSMutableDictionary class]]) { + [NSException raise:NSInvalidArgumentException format:@"`RKRequestDescriptor` objects must be initialized with a mapping whose target class is `NSMutableDictionary`, got '%@' (see `[RKObjectMapping requestMapping]`)", [(RKObjectMapping *)mapping objectClass]]; + } + } else if ([mapping isKindOfClass:[RKDynamicMapping class]]) { + [[(RKDynamicMapping *)mapping objectMappings] enumerateObjectsUsingBlock:^(RKObjectMapping *objectMapping, NSUInteger idx, BOOL *stop) { + if (! [objectMapping.objectClass isEqual:[NSMutableDictionary class]]) { + [NSException raise:NSInvalidArgumentException format:@"`RKRequestDescriptor` objects may only be initialized with `RKDynamicMapping` objects containing `RKObjectMapping` objects whose target class is `NSMutableDictionary`, got '%@' (see `[RKObjectMapping requestMapping]`)", objectMapping.objectClass]; + } + }]; + } else { + [NSException raise:NSInvalidArgumentException format:@"Expected an instance of `RKObjectMapping` or `RKDynamicMapping`, instead got '%@'", [mapping class]]; + } +} + +extern NSString *RKStringDescribingRequestMethod(RKRequestMethod method); + +@interface RKRequestDescriptor () + +@property (nonatomic, strong, readwrite) RKMapping *mapping; +@property (nonatomic, strong, readwrite) Class objectClass; +@property (nonatomic, copy, readwrite) NSString *rootKeyPath; +@property (nonatomic, assign, readwrite) RKRequestMethod method; + +@end + +@implementation RKRequestDescriptor + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" ++ (instancetype)requestDescriptorWithMapping:(RKMapping *)mapping objectClass:(Class)objectClass rootKeyPath:(NSString *)rootKeyPath +{ + return [self requestDescriptorWithMapping:mapping objectClass:objectClass rootKeyPath:rootKeyPath method:RKRequestMethodAny]; +} +#pragma clang diagnostic pop + ++ (instancetype)requestDescriptorWithMapping:(RKMapping *)mapping objectClass:(Class)objectClass rootKeyPath:(NSString *)rootKeyPath method:(RKRequestMethod)method +{ + NSParameterAssert(mapping); + NSParameterAssert(objectClass); + RKAssertValidMappingForRequestDescriptor(mapping); + + RKRequestDescriptor *requestDescriptor = [self new]; + requestDescriptor.mapping = mapping; + requestDescriptor.objectClass = objectClass; + requestDescriptor.rootKeyPath = rootKeyPath; + requestDescriptor.method = method; + return requestDescriptor; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p method=%@ objectClass=%@ rootKeyPath=%@ : %@>", + NSStringFromClass([self class]), self, RKStringDescribingRequestMethod(self.method), NSStringFromClass(self.objectClass), self.rootKeyPath, self.mapping]; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if ([self class] != [object class]) { + return NO; + } + return [self isEqualToRequestDescriptor:object]; +} + +#define NSUINT_BIT (CHAR_BIT * sizeof(NSUInteger)) +#define NSUINTROTATE(val, howmuch) ((((NSUInteger)val) << howmuch) | (((NSUInteger)val) >> (NSUINT_BIT - howmuch))) + +- (NSUInteger)hash +{ + return NSUINTROTATE(NSUINTROTATE([self.mapping hash], NSUINT_BIT / 3) ^ [self.objectClass hash], NSUINT_BIT / 3) ^ [self.rootKeyPath hash]; +} + +- (BOOL)isEqualToRequestDescriptor:(RKRequestDescriptor *)otherDescriptor +{ + if (![otherDescriptor isKindOfClass:[RKRequestDescriptor class]]) { + return NO; + } + + return + [self.mapping isEqualToMapping:otherDescriptor.mapping] && + self.objectClass == otherDescriptor.objectClass && + self.method == otherDescriptor.method && + ((self.rootKeyPath == otherDescriptor.rootKeyPath) || [self.rootKeyPath isEqualToString:otherDescriptor.rootKeyPath]); +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseDescriptor.h b/Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseDescriptor.h new file mode 100644 index 0000000..d2d9928 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseDescriptor.h @@ -0,0 +1,181 @@ +// +// RKResponseDescriptor.h +// RestKit +// +// Created by Blake Watters on 8/16/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKHTTPUtilities.h" + +@class RKMapping; + +/** + An `RKResponseDescriptor` object describes an object mapping configuration that is applicable to an HTTP response. Response descriptors are defined by specifying the `RKMapping` object that is to be used when performing object mapping on the deserialized response body and the URL path pattern, key path, and status codes for which the mapping is appropriate. The path pattern is a SOCKit `SOCPattern` string that will be matched against the URL of the request that loaded the response being mapped. If the path pattern is nil, the response descriptor is considered to be appropriate for a response loaded from any URL. The key path specifies the location of data within the deserialized response body for which the mapping is appropriate. If nil, the mapping is considered to apply to the entire response body. The status codes specify a set of HTTP response status codes for which the mapping is appropriate. It is common to constrain a response descriptor to the HTTP Successful status code class (status codes in the 200-299 range). Object mapping for error responses can be configured by configuring a response descriptor to handle the Client Error status code class (status codes in the 400-499 range). Instances of `RKResponseDescriptor` are immutable. + + @see RKPathMatcher + @see RKStatusCodeIndexSetFromClass + */ +@interface RKResponseDescriptor : NSObject + +///------------------------------------- +/// @name Creating a Response Descriptor +///------------------------------------- + +/** + Creates and returns a new `RKResponseDescriptor` object. + + This method is deprecated. Use `+ (instancetype)responseDescriptorWithMapping:(RKMapping *)mapping + method:(RKRequestMethod)method + pathPattern:(NSString *)pathPattern + keyPath:(NSString *)keyPath + statusCodes:(NSIndexSet *)statusCodes` instead. + + @param mapping The mapping for the response descriptor. + @param pathPattern A path pattern that matches against URLs for which the mapping should be used. + @param keyPath A key path specifying the subset of the parsed response for which the mapping is to be used. + @param statusCodes A set of HTTP status codes for which the mapping is to be used. + @return A new `RKResponseDescriptor` object. + */ ++ (instancetype)responseDescriptorWithMapping:(RKMapping *)mapping + pathPattern:(NSString *)pathPattern + keyPath:(NSString *)keyPath + statusCodes:(NSIndexSet *)statusCodes DEPRECATED_ATTRIBUTE; + +/** + Creates and returns a new `RKResponseDescriptor` object. + + @param mapping The mapping for the response descriptor. + @param method The HTTP method(s) for which the mapping is to be used. + @param pathPattern A path pattern that matches against URLs for which the mapping should be used. + @param keyPath A key path specifying the subset of the parsed response for which the mapping is to be used. + @param statusCodes A set of HTTP status codes for which the mapping is to be used. + @return A new `RKResponseDescriptor` object. + */ ++ (instancetype)responseDescriptorWithMapping:(RKMapping *)mapping + method:(RKRequestMethod)method + pathPattern:(NSString *)pathPattern + keyPath:(NSString *)keyPath + statusCodes:(NSIndexSet *)statusCodes; + +///------------------------------------------------------ +/// @name Getting Information About a Response Descriptor +///------------------------------------------------------ + +/** + The mapping to be used when object mapping the deserialized HTTP response body. Cannot be nil. + */ +@property (nonatomic, strong, readonly) RKMapping *mapping; + +/** + The HTTP method(s) for which the mapping is to be used. + */ +@property (nonatomic, assign, readonly) RKRequestMethod method; + +/** + The path pattern to match against the request URL. If nil, the response descriptor matches any URL. + + @see `RKPathMatcher` + */ +@property (nonatomic, copy, readonly) NSString *pathPattern; + +/** + The key path to match against the deserialized response body. If nil, the response descriptor matches the entire response body. + + When evaluating a key path match, the Foundation object parsed from the response body is sent `valueForKeyPath:` with the keyPath of the receiver. If the value returned is non-nil, object mapping is performed using the response descriptor's mapping. + */ +@property (nonatomic, copy, readonly) NSString *keyPath; + +/** + The set of status codes for which response descriptor matches. If nil, the the response descriptor matches any status code. + + @see RKStatusCodeClass + */ +@property (nonatomic, copy, readonly) NSIndexSet *statusCodes; + +///--------------------------- +/// @name Setting the Base URL +///--------------------------- + +/** + The base URL that the `pathPattern` is to be evaluated relative to. + + The base URL is set to the base URL of the object manager when a response descriptor is added to an object manager. + + @see `matchesURL:` + */ +@property (nonatomic, copy) NSURL *baseURL; + +///--------------------------------- +/// @name Using Response Descriptors +///--------------------------------- + +/** + Returns a Boolean value that indicates if the receiver's path pattern matches the given path. + + Path matching is performed using an `RKPathMatcher` object. If the receiver has a `nil` path pattern or the given path is `nil`, `YES` is returned. + + @param path The path to compare with the path pattern of the receiver. + @return `YES` if the path matches the receiver's pattern, else `NO`. + @see `RKPathMatcher` + */ +- (BOOL)matchesPath:(NSString *)path; + +/** + Returns a Boolean value that indicates if the given URL object matches the base URL and path pattern of the receiver. + + This method considers both the `baseURL` and `pathPattern` of the receiver when evaluating the given URL object. The results evaluate in the following ways: + + 1. If the `baseURL` and `pathPattern` of the receiver are both `nil`, then `YES` is returned. + 1. If the `baseURL` of the receiver is `nil`, but the path pattern is not, then the entire path and query string of the given URL will be evaluated against the path pattern of the receiver using `matchesPath:`. + 1. If the `baseURL` and the `pathPattern` are both non-nil, then the given URL is first checked to verify that it is relative to the base URL using a string prefix comparison. If the absolute string value of the given URL is prefixed with the string value of the base URL, then the URL is considered relative. If the given URL is found not to be relative to the receiver's baseURL, then `NO` is returned. If the URL is found to be relative to the base URL, then the path and query string of the URL are evaluated against the path pattern of the receiver using `matchesPath:`. + + @param URL The URL to compare with the base URL and path pattern of the receiver. + @return `YES` if the URL matches the base URL and path pattern of the receiver, else `NO`. + */ +- (BOOL)matchesURL:(NSURL *)URL; + +/** + Returns a Boolean value that indicates if the given URL response object matches the receiver. + + The match is evaluated by checking if the URL of the response matches the base URL and path pattern of the receiver via the `matchesURL:` method. If the URL is found to match, then the status code of the response is checked for inclusion in the receiver's set of status codes. + + @param response The HTTP response object to compare with the base URL, path pattern, and status codes set of the receiver. + @return `YES` if the response matches the base URL, path pattern, and status codes set of the receiver, else `NO`. + @see `matchesURL:` + */ +- (BOOL)matchesResponse:(NSHTTPURLResponse *)response; + +/** + Returns a dictionary of parsed arguments extracted from the URL of the given response object. + + @param response The HTTP response object to compare with the base URL, path pattern, and status codes set of the receiver. + @return A dictionary of parsed arguments if the response matches the base URL, path pattern, and status codes set of the receiver, else `nil`. + @see `matchesResponse:` + + */ +- (NSDictionary *)parsedArgumentsFromResponse:(NSHTTPURLResponse *)response; + +///------------------------- +/// @name Comparing Response Descriptors +///------------------------- + +/** + Returns `YES` if the receiver and the specified response descriptor are considered equivalent. + + */ +- (BOOL)isEqualToResponseDescriptor:(RKResponseDescriptor *)otherDescriptor; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseDescriptor.m b/Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseDescriptor.m new file mode 100644 index 0000000..9c6bc0c --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseDescriptor.m @@ -0,0 +1,211 @@ +// +// RKResponseDescriptor.m +// RestKit +// +// Created by Blake Watters on 8/16/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKPathMatcher.h" +#import "RKResponseDescriptor.h" +#import "RKHTTPUtilities.h" +#import "RKMapping.h" + +// Cloned from AFStringFromIndexSet -- method should be non-static for reuse +NSString *RKStringFromIndexSet(NSIndexSet *indexSet); +NSString *RKStringFromIndexSet(NSIndexSet *indexSet) +{ + NSCParameterAssert(indexSet); + NSMutableString *string = [NSMutableString string]; + + NSRange range = NSMakeRange([indexSet firstIndex], 1); + while (range.location != NSNotFound) { + NSUInteger nextIndex = [indexSet indexGreaterThanIndex:range.location]; + while (nextIndex == range.location + range.length) { + range.length++; + nextIndex = [indexSet indexGreaterThanIndex:nextIndex]; + } + + if (string.length) { + [string appendString:@","]; + } + + if (range.length == 1) { + [string appendFormat:@"%lu", (unsigned long) range.location]; + } else { + NSUInteger firstIndex = range.location; + NSUInteger lastIndex = firstIndex + range.length - 1; + [string appendFormat:@"%lu-%lu", (unsigned long) firstIndex, (unsigned long) lastIndex]; + } + + range.location = nextIndex; + range.length = 1; + } + + return string; +} + +extern NSString *RKStringDescribingRequestMethod(RKRequestMethod method); + +@interface RKResponseDescriptor () +@property (nonatomic, strong, readwrite) RKMapping *mapping; +@property (nonatomic, assign, readwrite) RKRequestMethod method; +@property (nonatomic, copy, readwrite) NSString *pathPattern; +@property (nonatomic, strong, readwrite) RKPathMatcher *pathPatternMatcher; +@property (nonatomic, copy, readwrite) NSString *keyPath; +@property (nonatomic, copy, readwrite) NSIndexSet *statusCodes; +@end + +@implementation RKResponseDescriptor + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" ++ (instancetype)responseDescriptorWithMapping:(RKMapping *)mapping + pathPattern:(NSString *)pathPattern + keyPath:(NSString *)keyPath + statusCodes:(NSIndexSet *)statusCodes +{ + return [self responseDescriptorWithMapping:mapping method:RKRequestMethodAny pathPattern:pathPattern keyPath:keyPath statusCodes:statusCodes]; +} +#pragma clang diagnostic pop + ++ (instancetype)responseDescriptorWithMapping:(RKMapping *)mapping + method:(RKRequestMethod)method + pathPattern:(NSString *)pathPattern + keyPath:(NSString *)keyPath + statusCodes:(NSIndexSet *)statusCodes +{ + NSParameterAssert(mapping); + RKResponseDescriptor *mappingDescriptor = [self new]; + mappingDescriptor.mapping = mapping; + mappingDescriptor.method = method; + mappingDescriptor.pathPattern = pathPattern; + mappingDescriptor.keyPath = keyPath; + mappingDescriptor.statusCodes = statusCodes; + + return mappingDescriptor; +} + +- (void)setPathPattern:(NSString *)pathPattern +{ + _pathPattern = pathPattern; + if (pathPattern) { + self.pathPatternMatcher = [RKPathMatcher pathMatcherWithPattern:pathPattern]; + } else { + self.pathPatternMatcher = nil; + } +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p method=%@ pathPattern=%@ keyPath=%@ statusCodes=%@ : %@>", + NSStringFromClass([self class]), self, RKStringDescribingRequestMethod(self.method), self.pathPattern, self.keyPath, self.statusCodes ? RKStringFromIndexSet(self.statusCodes) : self.statusCodes, self.mapping]; +} + +- (BOOL)matchesPath:(NSString *)path +{ + return [self matchesPath:path parsedArguments:nil]; +} + +- (BOOL)matchesPath:(NSString *)path parsedArguments:(NSDictionary **)outParsedArguments +{ + if (!self.pathPattern || !path) return YES; + RKPathMatcher *pathMatcher = [RKPathMatcher pathMatcherWithPattern:self.pathPattern]; + return [pathMatcher matchesPath:path tokenizeQueryStrings:NO parsedArguments:outParsedArguments]; +} + +- (BOOL)matchesURL:(NSURL *)URL +{ + return [self matchesURL:URL parsedArguments:nil]; +} + +- (BOOL)matchesURL:(NSURL *)URL parsedArguments:(NSDictionary **)outParsedArguments +{ + NSString *pathAndQueryString = RKPathAndQueryStringFromURLRelativeToURL(URL, self.baseURL); + if (self.baseURL) { + if (! RKURLIsRelativeToURL(URL, self.baseURL)) return NO; + return [self matchesPath:pathAndQueryString parsedArguments:outParsedArguments]; + } else { + return [self matchesPath:pathAndQueryString parsedArguments:outParsedArguments]; + } +} + +- (BOOL)matchesResponse:(NSHTTPURLResponse *)response +{ + return [self matchesResponse:response parsedArguments:nil]; +} + +- (BOOL)matchesResponse:(NSHTTPURLResponse *)response parsedArguments:(NSDictionary **)outParsedArguments +{ + if (![self matchesURL:response.URL parsedArguments:outParsedArguments]) return NO; + + if (self.statusCodes) { + if (! [self.statusCodes containsIndex:response.statusCode]) { + return NO; + } + } + return YES; +} + +- (BOOL)matchesMethod:(RKRequestMethod)method +{ + return self.method & method; +} + +- (NSDictionary *)parsedArgumentsFromResponse:(NSHTTPURLResponse *)response +{ + NSDictionary *parsedArguments = nil; + if ([self matchesResponse:response parsedArguments:&parsedArguments]) + { + return parsedArguments; + } + + return nil; +} + +- (BOOL)isEqual:(id)object +{ + if (self == object) { + return YES; + } + if ([self class] != [object class]) { + return NO; + } + return [self isEqualToResponseDescriptor:object]; +} + +#define NSUINT_BIT (CHAR_BIT * sizeof(NSUInteger)) +#define NSUINTROTATE(val, howmuch) ((((NSUInteger)val) << howmuch) | (((NSUInteger)val) >> (NSUINT_BIT - howmuch))) + +- (NSUInteger)hash +{ + return NSUINTROTATE(NSUINTROTATE(NSUINTROTATE([self.mapping hash], NSUINT_BIT / 4) ^ [self.pathPattern hash], NSUINT_BIT / 4) ^ [self.keyPath hash], NSUINT_BIT / 4) ^ [self.statusCodes hash]; +} + +- (BOOL)isEqualToResponseDescriptor:(RKResponseDescriptor *)otherDescriptor +{ + if (![otherDescriptor isKindOfClass:[RKResponseDescriptor class]]) { + return NO; + } + + return + [self.mapping isEqualToMapping:otherDescriptor.mapping] && + self.method == otherDescriptor.method && + ((self.pathPattern == otherDescriptor.pathPattern) || [self.pathPattern isEqualToString:otherDescriptor.pathPattern]) && + ((self.keyPath == otherDescriptor.keyPath) || [self.keyPath isEqualToString:otherDescriptor.keyPath]) && + [self.statusCodes isEqualToIndexSet:otherDescriptor.statusCodes]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseMapperOperation.h b/Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseMapperOperation.h new file mode 100644 index 0000000..7fc04f2 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseMapperOperation.h @@ -0,0 +1,265 @@ +// +// RKResponseMapperOperation.h +// RestKit +// +// Created by Blake Watters on 8/16/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKMappingOperationDataSource.h" +#import "RKMapperOperation.h" +#import "RKMappingResult.h" + +#ifdef _COREDATADEFINES_H +@protocol RKManagedObjectCaching; +#endif + +/** + `RKResponseMapperOperation` is an `NSOperation` that provides support for performing object mapping on an `NSHTTPURLResponse` and its associated response data. + + This is an abstract base class encapsulating the common interface API for its concrete subclasses `RKObjectResponseMapperOperation` and `RKManagedObjectResponseMapperOperation`. + + The common behaviors encapsulated within `RKResponseMapperOperation` include: + + 1. **Handling Empty Responses**: Empty response data (see note below) requires special handling depending on the status code of the HTTP response. If an empty response is loaded with a status code in 4xx (Client Error) range, an `NSError` in the `RKErrorDomain` is created with the `NSURLErrorBadServerResponse` code to indicate that the response was not processable. If an empty response is loaded with a status code in 2xx (Successful) range, the interpretation of the response is dependent on the value of `treatsEmptyResponseAsSuccess`. When `YES`, empty responses result in the successful completion of the operation with an `RKMappingResult` containing the targetObject of the operation, if any. + 1. **Deserializing Response Data**: When started, the operation attempts to deserialize the response data into a Foundation object representation using the `RKMIMETypeSerialization` class. This deserialized representation is then made available to subclass implementations that perform the actual object mapping work. + + ## How 'Empty' Responses are Evaluated + + Any `nil` response or `NSData` object with a length equal to zero is considered empty. To support a common behavior of the widely deployed Ruby on Rails Framework, `RKResponseMapperOperation` also considers a response containing a single space character to be empty. This type of response is generated by Rails whe `render :nothing => true` is invoked. + + ## Metadata Mapping + + The `RKResponseMapperOperation` class integrates with the metadata mapping architecture. Clients of the response mapper can provide a dictionary of metadata via the `mappingMetadata` property and it will be made available to the underlying `RKMapperOperation` executed to process the response body. In addition to any user supplied metadata, the response mapper makes the following metadata key paths available for mapping: + + 1. `@metadata.HTTP.request.URL` - The `NSURL` object identifying the URL of the request that loaded the response. + 1. `@metadata.HTTP.request.method` - An `NSString` specifying the HTTP method of the request that loaded the response. + 1. `@metadata.HTTP.request.headers` - An `NSDictionary` object containing all HTTP headers and values for the request that loaded the response. + 1. `@metadata.HTTP.response.URL` - The `NSURL` object identifying the URL of the response. + 1. `@metadata.HTTP.response.headers` - An `NSDictionary` object containing all HTTP headers and values for the response. + + Please refer to the documentation accompanying `RKMappingOperation` for more details on metadata mapping. + + @see `RKMapperOperation` + */ +@interface RKResponseMapperOperation : NSOperation + +///------------------------------------------------ +/// @name Initializing a Response Mapping Operation +///------------------------------------------------ + +/** + Initializes and returns a newly created response mapper operation with the given request, HTTP response, response data, and an array of `RKResponseDescriptor` objects. + + @param request The request object for which the response was loaded. + @param response The HTTP response object to be used for object mapping. + @param data The data loaded for the response body. + @param responseDescriptors An array whose elements are `RKResponseDescriptor` objects specifying object mapping configurations that may be applied to the response. + @return The receiver, initialized with the response, data, and response descriptor objects. + */ +- (instancetype)initWithRequest:(NSURLRequest *)request + response:(NSHTTPURLResponse *)response + data:(NSData *)data + responseDescriptors:(NSArray *)responseDescriptors NS_DESIGNATED_INITIALIZER; + +///----------------------------------------------- +/// @name Accessing HTTP Request and Response Data +///----------------------------------------------- + +/** + An request object for which the response was loaded. + */ +@property (nonatomic, strong, readonly) NSURLRequest *request; + +/** + The response object that loaded the data that is to be object mapped by the operation. Cannot be `nil`. + */ +@property (nonatomic, strong, readonly) NSHTTPURLResponse *response; + +/** + The response data that is to be deserialized and mapped by the operation. May be `nil`. + */ +@property (nonatomic, strong, readonly) NSData *data; + +///--------------------------------- +/// @name Configuring Object Mapping +///--------------------------------- + +/** + An array of `RKResponseDescriptor` objects that specify object mapping configurations that may be applied to the deserialized response data if they are found to match the response. + + @see `RKResponseDescriptor` + */ +@property (nonatomic, strong, readonly) NSArray *responseDescriptors; + +/** + The target object for the object mapping operation performed on the deserialized response data. May be `nil`. + + When object mapping is being performed against a known object, the targetObject is set to ensure that the mapping is applied to the appropriate object reference. When `nil`, the mapping operation will result in the fetching or creation of new objects as necessary to satisfy the mapping configuration. + */ +@property (nonatomic, strong) id targetObject; + +/** + The delegate for the `RKMapperOperation` created by the receiver to perform object mapping on the deserialized response data. May be `nil`. + + The delegate provides access to the details of the mapping process as it is executing. Be aware that the delegate will be invoked from the thread on which the mapping is executing. + */ +@property (nonatomic, weak) id<RKMapperOperationDelegate> mapperDelegate; + +/** + An optional dictionary of metadata to make available to mapping operations executed by the receiver. + */ +@property (nonatomic, copy) NSDictionary *mappingMetadata; + +/** + A Boolean value that indicates if the receiver should consider empty responses as being successfully mapped even though no mapping is actually performed. + + When `YES` and the response data is empty (see below), a mapping result will be returned containing the target object (if any). Otherwise, the response data will be pass through to the parser which may generate an error. + + **Default:** `YES` + + @warning To support the Ruby on Rails behavior of rendering a single space character on invocation of `render :nothing => true`, a response body's containing only a single space is treated as empty. + */ +@property (nonatomic, assign) BOOL treatsEmptyResponseAsSuccess; + +/** + Returns a dictionary of key path to `RKMapping` objects that are applicable to mapping the response. This is determined by evaluating the URL and status codes of the response against the set of `responseDescriptors`. + + @see `RKResponseDescriptor` + */ +@property (nonatomic, strong, readonly) NSDictionary *responseMappingsDictionary; + +/** + Returns an array containing all `RKResponseDescriptor` objects in the configured `responseDescriptors` array that were found to match the response. + + @see `responseDescriptors` + @see `RKResponseDescriptor` + */ +@property (nonatomic, strong, readonly) NSArray *matchingResponseDescriptors; + +///-------------------------------- +/// @name Accessing Mapping Results +///-------------------------------- + +/** + The results of performing object mapping on the deserialized response data. In the event that the operation has failed, the value will is `nil`. + + The `keyPath` of each `RKResponseDescriptor` from the `responseDescriptors` set that was successfully mapped from the response data will appear as an entry in the mapping result. + */ +@property (nonatomic, strong, readonly) RKMappingResult *mappingResult; + +/** + The error, if any, that occured during execution of the operation. + */ +@property (nonatomic, strong, readonly) NSError *error; + +///---------------------------- +/// @name Configuring Callbacks +///---------------------------- + +/** + Sets a block to be executed before the response mapper operation begins mapping the deserialized response body, providing an opportunity to manipulate the mappable representation input before mapping begins. + + @param block A block object to be executed before the deserialized response is passed to the response mapper. The block has an `id` return type and must return a dictionary or array of dictionaries corresponding to the object representations that are to be mapped. The block accepts a single argument: the deserialized response data that was loaded via HTTP. If you do not wish to make any chances to the response body before mapping begins, the block should return the value passed in the `deserializedResponseBody` block argument. Returning `nil` will decline the mapping from proceeding and fail the operation with an error with the `RKMappingErrorMappingDeclined` code. + @warning The deserialized response body may or may not be immutable depending on the implementation details of the `RKSerialization` class that deserialized the response. If you wish to make changes to the mappable object representations, you must obtain a mutable copy of the response body input. + */ +- (void)setWillMapDeserializedResponseBlock:(id (^)(id deserializedResponseBody))block; + +/** + Sets a block to be executed when the response mapper operation has completed its mapping activities. This method is distinct from the `completionBlock` because it is invoked while the operation is still executing. This block is guaranteed to be called even if the receiver is cancelled before it has been started. + + @param block A block object to be executed when the response mapping is finished. The block has no return value and accepts two arguments: an `RKNappingResult` object that was mapped from the response or an `NSError` error indicating that the mapping has failed. + */ +- (void)setDidFinishMappingBlock:(void(^)(RKMappingResult *mappingResult, NSError *error))block; + +///-------------------------------------------------------- +/// @name Registering a Mapping Operation Data Source Class +///-------------------------------------------------------- + +/** + Registers the given data source class to to be used for mapper operations constructed by instances of the receiver. + + **NOTE**: The receiver class is significant to the registration: `[RKObjectResponseMapperOperation registerMappingOperationDataSourceClass:[MyDataSourceClass class]]` registers a data source for use with instances of `RKObjectResponseMapperOperation` exclusively. When registering a data source for `RKManagedObjectResponseMapperOperation` the given class must inherit from `RKManagedObjectMappingOperationDataSource`. + + @param dataSourceClass The class conforming to the RKMappingOperationDataSource protocol to be registered for use with mapper operations. + */ ++ (void)registerMappingOperationDataSourceClass:(Class<RKMappingOperationDataSource>)dataSourceClass; + +@end + +/** + `RKObjectResponseMapperOperation` is an `RKResponseMapperOperation` subclass that provides support for performing object mapping for mappings that target `NSObject` derived classes. It does not require a data source to perform its work. + */ +@interface RKObjectResponseMapperOperation : RKResponseMapperOperation +@end + +#ifdef _COREDATADEFINES_H +/** + `RKManagedObjectResponseMapperOperation` is an `RKResponseMapperOperation` subclass that provides support for performing object mapping using `RKEntityMapping` objects that target `NSManagedObject` derived classes. It requires an `NSManagedObjectContext` and a configured `RKManagedObjectMappingOperationDataSource` data source to execute successfully. + + Performing response mapping that targets Core Data managed objects imposes some additional constraints on the process that the developer should understand thoroughly: + + 1. **Permanent Managed Object IDs**: When using managed object contexts in a parent-child configuration, it is important to obtain a permanent `NSManagedObjectID` for any existing objects that are to be mapped. Mapping that occur against objecs with temporary managedObjectID's cannot be retrieved across contexts by ID. If executing an `RKManagedObjectResponseMapperOperation` against a `NSManagedObject` targetObject with a temporary ID. + 1. **Persisting Mapped Objects**: Instances of `RKManagedObjectResponseMapperOperation` do **NOT** perform any persistence on the `NSManagedObject` in which the mapping occurs. This is by design and ensures that the operation can be used to compose higher level components that handle persistence. It is the developer's responsibility to ensure that the mapped managed objects are eventually persisted. + + @see `RKManagedObjectMappingOperationDataSource` + @see `[NSManagedObjectContext obtainPermanentIDsForObjects:error:]` + */ +@interface RKManagedObjectResponseMapperOperation : RKResponseMapperOperation + +///---------------------------- +/// @name Configuring Core Data +///---------------------------- + +/** + The managed object context in which the mapping will be performed. + + @warning The `NSManagedObjectContext` given **must** have a `concurrencyType` of either `NSPrivateQueueConcurrencyType` or `NSMainQueueConcurrencyType`. Thread confined contexts are not supported. + */ +@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext; + +/** + An object implementing the `RKManagedObjectCaching` protocol to be used for retrieving existing `NSManagedObject` instances by identification attributes. If `nil`, existing object cannot be retrieved and new objects will be created for all mappable content within the response data, likely resulting in the creation of duplicate objects. + + @see `RKManagedObjectCaching` + */ +@property (nonatomic, weak) id<RKManagedObjectCaching> managedObjectCache; + +/** + The permanent `NSManagedObjectID` for the target object of the mapping operation. During mapping, an instance local to the `managedObjectContext` is fetched and used to perform the mapping operation. + + If `nil` and the `targetObject` is a managed object, the `objectID` of the target object will be used. + */ +@property (nonatomic, copy) NSManagedObjectID *targetObjectID; + +@end + +#endif + +///---------------- +/// @name Functions +///---------------- + +/** + Returns a representation of a mapping result as an `NSError` value. + + The returned `NSError` object is in the `RKErrorDomain` domain and has the `RKMappingErrorFromMappingResult` code. The value for the `NSLocalizedDescriptionKey` is computed by retrieving the objects in the mapping result as an array, evaluating `valueForKeyPath:@"description"` against the array, and joining the returned error messages by comma to form a single string value. The source error objects are returned with the `NSError` in the `userInfo` dictionary under the `RKObjectMapperErrorObjectsKey` key. + + This implementation assumes that the class used to represent the response error will return a string description of the client side error when sent the `description` message. + + @return An error object representing the objects contained in the mapping result. + @see `RKErrorMessage` + */ +NSError *RKErrorFromMappingResult(RKMappingResult *mappingResult); diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseMapperOperation.m b/Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseMapperOperation.m new file mode 100644 index 0000000..6e7e016 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKResponseMapperOperation.m @@ -0,0 +1,531 @@ +// +// RKResponseMapperOperation.m +// RestKit +// +// Created by Blake Watters on 8/16/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKObjectMappingOperationDataSource.h" +#import "RKLog.h" +#import "RKResponseDescriptor.h" +#import "RKPathMatcher.h" +#import "RKHTTPUtilities.h" +#import "RKResponseMapperOperation.h" +#import "RKMappingErrors.h" +#import "RKMIMETypeSerialization.h" +#import "RKDictionaryUtilities.h" + +#ifdef _COREDATADEFINES_H +#if __has_include("RKCoreData.h") +#define RKCoreDataIncluded +#import "RKManagedObjectMappingOperationDataSource.h" +#endif +#endif + +// Set Logging Component +#undef RKLogComponent +#define RKLogComponent RKlcl_cRestKitNetwork + +NSError *RKErrorFromMappingResult(RKMappingResult *mappingResult) +{ + NSArray *collection = [mappingResult array]; + NSString *description = nil; + if ([collection count] > 0) { + description = [[collection valueForKeyPath:@"description"] componentsJoinedByString:@", "]; + } else { + description = @"Expected mapping result to contain at least one object to construct an error"; + RKLogWarning(@"%@", description); + } + NSDictionary *userInfo = @{RKObjectMapperErrorObjectsKey: collection, + NSLocalizedDescriptionKey: description}; + + NSError *error = [NSError errorWithDomain:RKErrorDomain code:RKMappingErrorFromMappingResult userInfo:userInfo]; + return error; +} + +static NSIndexSet *RKErrorStatusCodes() +{ + static NSIndexSet *errorStatusCodes = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + errorStatusCodes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(400, 200)]; + }); + + return errorStatusCodes; +} + +static NSError *RKUnprocessableErrorFromResponse(NSHTTPURLResponse *response) +{ + NSCAssert([RKErrorStatusCodes() containsIndex:response.statusCode], @"Expected response status code to be in the 400-599 range, instead got %ld", (long) response.statusCode); + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + [userInfo setValue:[NSString stringWithFormat:@"Loaded an unprocessable error response (%ld)", (long) response.statusCode] forKey:NSLocalizedDescriptionKey]; + [userInfo setValue:[response URL] forKey:NSURLErrorFailingURLErrorKey]; + + return [[NSError alloc] initWithDomain:RKErrorDomain code:NSURLErrorBadServerResponse userInfo:userInfo]; +} + +NSString *RKStringFromIndexSet(NSIndexSet *indexSet); // Defined in RKResponseDescriptor.m +static NSString *RKMatchFailureDescriptionForResponseDescriptorWithResponse(RKResponseDescriptor *responseDescriptor, NSHTTPURLResponse *response) +{ + if (responseDescriptor.statusCodes && ![responseDescriptor.statusCodes containsIndex:response.statusCode]) { + return [NSString stringWithFormat:@"response status code %ld is not within the range %@", (long) response.statusCode, RKStringFromIndexSet(responseDescriptor.statusCodes)]; + } + + NSString *pathAndQueryString = RKPathAndQueryStringFromURLRelativeToURL(response.URL, responseDescriptor.baseURL); + if (responseDescriptor.baseURL && !RKURLIsRelativeToURL(response.URL, responseDescriptor.baseURL)) { + // Not relative to the baseURL + return [NSString stringWithFormat:@"response URL '%@' is not relative to the baseURL '%@'.", response.URL, responseDescriptor.baseURL]; + } + + // Must be a path pattern mismatch + return [NSString stringWithFormat:@"response path '%@' did not match the path pattern '%@'.", pathAndQueryString, responseDescriptor.pathPattern]; +} + +static NSString *RKFailureReasonErrorStringForResponseDescriptorsMismatchWithResponse(NSArray *responseDescriptors, NSHTTPURLResponse *response) +{ + NSMutableString *failureReason = [NSMutableString string]; + [failureReason appendFormat:@"A %ld response was loaded from the URL '%@', which failed to match all (%ld) response descriptors:", + (long) response.statusCode, response.URL, (long) [responseDescriptors count]]; + + for (RKResponseDescriptor *responseDescriptor in responseDescriptors) { + [failureReason appendFormat:@"\n <RKResponseDescriptor: %p baseURL=%@ pathPattern=%@ statusCodes=%@> failed to match: %@", + responseDescriptor, responseDescriptor.baseURL, responseDescriptor.pathPattern, + responseDescriptor.statusCodes ? RKStringFromIndexSet(responseDescriptor.statusCodes) : responseDescriptor.statusCodes, + RKMatchFailureDescriptionForResponseDescriptorWithResponse(responseDescriptor, response)]; + } + + return failureReason; +} + +/** + A serial dispatch queue used for all deserialization of response bodies + */ +static dispatch_queue_t RKResponseMapperSerializationQueue() { + static dispatch_queue_t serializationQueue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + serializationQueue = dispatch_queue_create("org.restkit.response-mapper.serialization", DISPATCH_QUEUE_SERIAL); + }); + + return serializationQueue; +} + +@interface RKResponseMapperOperation () +@property (nonatomic, strong, readwrite) NSURLRequest *request; +@property (nonatomic, strong, readwrite) NSHTTPURLResponse *response; +@property (nonatomic, strong, readwrite) NSData *data; +@property (nonatomic, strong, readwrite) NSArray *responseDescriptors; +@property (nonatomic, strong, readwrite) RKMappingResult *mappingResult; +@property (nonatomic, strong, readwrite) NSError *error; +@property (nonatomic, strong, readwrite) NSArray *matchingResponseDescriptors; +@property (nonatomic, strong, readwrite) NSDictionary *responseMappingsDictionary; +@property (nonatomic, strong, readwrite) NSDictionary *responseMappingArgumentsDictionary; +@property (nonatomic, strong) RKMapperOperation *mapperOperation; +@property (nonatomic, copy) id (^willMapDeserializedResponseBlock)(id); +@property (nonatomic, copy) void(^didFinishMappingBlock)(RKMappingResult *, NSError *); +@end + +@interface RKResponseMapperOperation (ForSubclassEyesOnly) +- (id)parseResponseData:(NSError **)error; +- (RKMappingResult *)performMappingWithObject:(id)sourceObject error:(NSError **)error; +@property (NS_NONATOMIC_IOSONLY, readonly) BOOL hasEmptyResponse; +@end + +@implementation RKResponseMapperOperation + +#pragma mark Data Source Registration + +static NSMutableDictionary *RKRegisteredResponseMapperOperationDataSourceClasses = nil; + ++ (void)initialize +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + RKRegisteredResponseMapperOperationDataSourceClasses = [NSMutableDictionary new]; + }); +} + ++ (void)registerMappingOperationDataSourceClass:(Class<RKMappingOperationDataSource>)dataSourceClass +{ + if (dataSourceClass && ![(Class)dataSourceClass conformsToProtocol:@protocol(RKMappingOperationDataSource)]) { + [NSException raise:NSInvalidArgumentException format:@"Registered data source class '%@' does not conform to the `RKMappingOperationDataSource` protocol.", NSStringFromClass(dataSourceClass)]; + } + + if (dataSourceClass) { + RKRegisteredResponseMapperOperationDataSourceClasses[(id<NSCopying>)self] = dataSourceClass; + } else { + [RKRegisteredResponseMapperOperationDataSourceClasses removeObjectForKey:(id<NSCopying>)self]; + } +} + +#pragma mark + +- (instancetype)initWithRequest:(NSURLRequest *)request + response:(NSHTTPURLResponse *)response + data:(NSData *)data + responseDescriptors:(NSArray *)responseDescriptors; +{ + NSParameterAssert(request); + NSParameterAssert(response); + NSParameterAssert(responseDescriptors); + + self = [super init]; + if (self) { + self.request = request; + self.response = response; + self.data = data; + self.responseDescriptors = responseDescriptors; + self.matchingResponseDescriptors = [self buildMatchingResponseDescriptors]; + self.responseMappingsDictionary = [self buildResponseMappingsDictionary]; + self.responseMappingArgumentsDictionary = [self buildResponseMappingArgumentsDictionary]; + self.treatsEmptyResponseAsSuccess = YES; + self.mappingMetadata = @{}; // Initialize the metadata + } + + return self; +} + +- (id)parseResponseData:(NSError **)error +{ + NSString *MIMEType = [self.response MIMEType]; + __block NSError *underlyingError = nil; + __block id object; + dispatch_sync(RKResponseMapperSerializationQueue(), ^{ + object = [RKMIMETypeSerialization objectFromData:self.data MIMEType:MIMEType error:&underlyingError]; + }); + if (! object) { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + [userInfo setValue:[NSString stringWithFormat:@"Loaded an unprocessable response (%ld) with content type '%@'", (long) self.response.statusCode, MIMEType] + forKey:NSLocalizedDescriptionKey]; + [userInfo setValue:[self.response URL] forKey:NSURLErrorFailingURLErrorKey]; + [userInfo setValue:underlyingError forKey:NSUnderlyingErrorKey]; + NSError *HTTPError = [[NSError alloc] initWithDomain:RKErrorDomain code:NSURLErrorCannotParseResponse userInfo:userInfo]; + + if (error) *error = HTTPError; + + return nil; + } + return object; +} + +- (NSArray *)buildMatchingResponseDescriptors +{ + NSIndexSet *indexSet = [self.responseDescriptors indexesOfObjectsPassingTest:^BOOL(RKResponseDescriptor *responseDescriptor, NSUInteger idx, BOOL *stop) { + return [responseDescriptor matchesResponse:self.response] && (RKRequestMethodFromString(self.request.HTTPMethod) & responseDescriptor.method); + }]; + return [self.responseDescriptors objectsAtIndexes:indexSet]; +} + +- (NSDictionary *)buildResponseMappingsDictionary +{ + NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; + for (RKResponseDescriptor *responseDescriptor in self.matchingResponseDescriptors) { + dictionary[(responseDescriptor.keyPath ?: [NSNull null])] = responseDescriptor.mapping; + } + + return dictionary; +} + +- (NSDictionary *)buildResponseMappingArgumentsDictionary +{ + NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; + for (RKResponseDescriptor *responseDescriptor in self.matchingResponseDescriptors) { + + NSDictionary *arguments = [responseDescriptor parsedArgumentsFromResponse:self.response]; + if (arguments) + { + // We don't add nil keypath at an [NSNull null] key, because that causes a crash later + // in RKDictionaryByMergingDictionaryWithDictionary + if (responseDescriptor.keyPath) + { + [dictionary setObject:arguments forKey:responseDescriptor.keyPath]; + } + else + { + [dictionary addEntriesFromDictionary:arguments]; + } + } + } + + return dictionary; +} + +- (RKMappingResult *)performMappingWithObject:(id)sourceObject error:(NSError **)error +{ + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"%@ is an abstract operation.", + NSStringFromClass([self class])] + userInfo:nil]; +} + +- (BOOL)hasEmptyResponse +{ + // NOTE: Comparison to single string whitespace character to support Ruby on Rails `render :nothing => true` + static NSData *whitespaceData = nil; + if (! whitespaceData) whitespaceData = [[NSData alloc] initWithBytes:" " length:1]; + + NSUInteger length = [self.data length]; + return (length == 0 || (length == 1 && [self.data isEqualToData:whitespaceData])); +} + +- (void)setMappingMetadata:(NSDictionary *)mappingMetadata +{ + NSDictionary *HTTPMetadata = @{ @"HTTP": @{ @"request": @{ @"URL": self.request.URL, @"method": self.request.HTTPMethod, @"headers": [self.request allHTTPHeaderFields] ?: @{} }, + @"response": @{ @"URL": self.response.URL, @"headers": [self.response allHeaderFields] ?: @{} } } }; + _mappingMetadata = RKDictionaryByMergingDictionaryWithDictionary(HTTPMetadata, mappingMetadata); + + if (self.responseMappingArgumentsDictionary) + { + NSDictionary *argumentsMetadata = @{ @"network" : @{ @"arguments" : self.responseMappingArgumentsDictionary } }; + _mappingMetadata = RKDictionaryByMergingDictionaryWithDictionary(argumentsMetadata, _mappingMetadata); + } +} + +- (void)cancel +{ + BOOL cancelledBeforeExecution = ![self isExecuting] && ![self isCancelled]; + + [super cancel]; + [self.mapperOperation cancel]; + + // NOTE: If we are cancelled before being started, then `main` and the `completionBlock` are never executed. We must ensure that we invoke `didFinishMappingBlock`, see Github issue #1494 + if (cancelledBeforeExecution) { + [self willFinish]; + } +} + +- (void)willFinish +{ + if (self.isCancelled && !self.error) self.error = [NSError errorWithDomain:RKErrorDomain code:RKOperationCancelledError userInfo:@{ NSLocalizedDescriptionKey: @"The operation was cancelled." }]; + + if (self.didFinishMappingBlock) { + if (self.error) self.didFinishMappingBlock(nil, self.error); + else self.didFinishMappingBlock(self.mappingResult, nil); + [self setDidFinishMappingBlock:nil]; + } +} + +- (void)main +{ + if (self.isCancelled) return [self willFinish]; + + BOOL isErrorStatusCode = [RKErrorStatusCodes() containsIndex:self.response.statusCode]; + + // If we are an error response and empty, we emit an error that the content is unmappable + if (isErrorStatusCode && [self hasEmptyResponse]) { + self.error = RKUnprocessableErrorFromResponse(self.response); + [self willFinish]; + return; + } + + // If we are successful and empty, we may optionally consider the response mappable (i.e. 204 response or 201 with no body) + if ([self hasEmptyResponse] && self.treatsEmptyResponseAsSuccess) { + if (self.targetObject) { + self.mappingResult = [[RKMappingResult alloc] initWithDictionary:@{[NSNull null]: self.targetObject}]; + } else { + // NOTE: For alignment with the behavior of loading an empty array or empty dictionary, if there is a nil targetObject we return a nil mappingResult. + // This informs the caller that operation succeeded, but performed no mapping. + self.mappingResult = nil; + } + + [self willFinish]; + return; + } + + // Parse the response + NSError *error; + id parsedBody = [self parseResponseData:&error]; + if (self.isCancelled) return [self willFinish]; + if (! parsedBody) { + RKLogError(@"Failed to parse response data: %@", [error localizedDescription]); + self.error = error; + [self willFinish]; + return; + } + if (self.isCancelled) return [self willFinish]; + + // Invoke the will map deserialized response block + if (self.willMapDeserializedResponseBlock) { + parsedBody = self.willMapDeserializedResponseBlock(parsedBody); + if (! parsedBody) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: @"Mapping was declined due to a `willMapDeserializedResponseBlock` returning nil." }; + self.error = [NSError errorWithDomain:RKErrorDomain code:RKMappingErrorMappingDeclined userInfo:userInfo]; + RKLogError(@"Failed to parse response data: %@", [error localizedDescription]); + [self willFinish]; + return; + } + } + + // Object map the response + self.mappingResult = [self performMappingWithObject:parsedBody error:&error]; + + // If the response is a client error return either the mapping error or the mapped result to the caller as the error + if (isErrorStatusCode) { + if ([self.mappingResult count] > 0) { + error = RKErrorFromMappingResult(self.mappingResult); + } else { + // We encountered a client error that we could not map, throw unprocessable error + if (! error) error = RKUnprocessableErrorFromResponse(self.response); + } + self.error = error; + [self willFinish]; + return; + } + + // Fail if no response descriptors matched + if (error.code == RKMappingErrorNotFound && [self.responseMappingsDictionary count] == 0) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: NSLocalizedString(@"No response descriptors match the response loaded.", nil), + NSLocalizedFailureReasonErrorKey: RKFailureReasonErrorStringForResponseDescriptorsMismatchWithResponse(self.responseDescriptors, self.response), + RKMappingErrorKeyPathErrorKey: [NSNull null], + NSURLErrorFailingURLErrorKey: self.response.URL, + NSURLErrorFailingURLStringErrorKey: [self.response.URL absoluteString], + NSUnderlyingErrorKey: error}; + self.error = [[NSError alloc] initWithDomain:RKErrorDomain code:RKMappingErrorNotFound userInfo:userInfo]; + [self willFinish]; + return; + } + + if (! self.mappingResult) self.error = error; + [self willFinish]; +} + +@end + +@implementation RKObjectResponseMapperOperation + +- (RKMappingResult *)performMappingWithObject:(id)sourceObject error:(NSError **)error +{ + Class dataSourceClass = RKRegisteredResponseMapperOperationDataSourceClasses[[self class]] ?: [RKObjectMappingOperationDataSource class]; + id<RKMappingOperationDataSource> dataSource = [dataSourceClass new]; + self.mapperOperation = [[RKMapperOperation alloc] initWithRepresentation:sourceObject mappingsDictionary:self.responseMappingsDictionary]; + self.mapperOperation.mappingOperationDataSource = dataSource; + self.mapperOperation.delegate = self.mapperDelegate; + self.mapperOperation.metadata = self.mappingMetadata; + if (NSLocationInRange(self.response.statusCode, RKStatusCodeRangeForClass(RKStatusCodeClassSuccessful))) { + self.mapperOperation.targetObject = self.targetObject; + } else { + RKLogInfo(@"Non-successful status code encountered: performing mapping with nil target object."); + } + [self.mapperOperation start]; + if (error) *error = self.mapperOperation.error; + return self.mapperOperation.mappingResult; +} + +@end + +#ifdef RKCoreDataIncluded + +static inline NSManagedObjectID *RKObjectIDFromObjectIfManaged(id object) +{ + return [object isKindOfClass:[NSManagedObject class]] ? [object objectID] : nil; +} + +@interface RKManagedObjectResponseMapperOperation () +@property (nonatomic, strong) NSOperationQueue *operationQueue; +@end + +@implementation RKManagedObjectResponseMapperOperation + ++ (void)registerMappingOperationDataSourceClass:(Class<RKMappingOperationDataSource>)dataSourceClass +{ + if (dataSourceClass && ![(Class)dataSourceClass isSubclassOfClass:[RKManagedObjectMappingOperationDataSource class]]) { + [NSException raise:NSInvalidArgumentException format:@"Registered data source class '%@' does not inherit from the `RKManagedObjectMappingOperationDataSource` class: You must subclass `RKManagedObjectMappingOperationDataSource` in order to register a data source class for `RKManagedObjectResponseMapperOperation`.", NSStringFromClass(dataSourceClass)]; + } + [super registerMappingOperationDataSourceClass:dataSourceClass]; +} + +- (void)cancel +{ + [super cancel]; + [self.operationQueue cancelAllOperations]; +} + +- (RKMappingResult *)performMappingWithObject:(id)sourceObject error:(NSError **)error +{ + NSAssert(self.managedObjectContext, @"Unable to perform mapping: No `managedObjectContext` assigned. (Mapping response.URL = %@)", self.response.URL); + + __block NSError *blockError = nil; + __block RKMappingResult *mappingResult = nil; + self.operationQueue = [NSOperationQueue new]; + [self.managedObjectContext performBlockAndWait:^{ + // We may have been cancelled before we made it onto the MOC's queue + if ([self isCancelled]) return; + + // Configure the mapper + self.mapperOperation = [[RKMapperOperation alloc] initWithRepresentation:sourceObject mappingsDictionary:self.responseMappingsDictionary]; + self.mapperOperation.delegate = self.mapperDelegate; + self.mapperOperation.metadata = self.mappingMetadata; + + // Configure a data source to defer execution of connection operations until mapping is complete + Class dataSourceClass = RKRegisteredResponseMapperOperationDataSourceClasses[[self class]] ?: [RKManagedObjectMappingOperationDataSource class]; + RKManagedObjectMappingOperationDataSource *dataSource = [[dataSourceClass alloc] initWithManagedObjectContext:self.managedObjectContext + cache:self.managedObjectCache]; + dataSource.operationQueue = self.operationQueue; + dataSource.parentOperation = self.mapperOperation; + + [self.operationQueue setMaxConcurrentOperationCount:1]; + [self.operationQueue setName:[NSString stringWithFormat:@"Relationship Connection Queue for '%@'", self.mapperOperation]]; + self.mapperOperation.mappingOperationDataSource = dataSource; + + if (NSLocationInRange(self.response.statusCode, RKStatusCodeRangeForClass(RKStatusCodeClassSuccessful))) { + self.mapperOperation.targetObject = self.targetObject; + + if (self.targetObjectID || self.targetObject) { + NSManagedObjectID *objectID = self.targetObjectID ?: RKObjectIDFromObjectIfManaged(self.targetObject); + if (objectID) { + if ([objectID isTemporaryID]) RKLogWarning(@"Performing object mapping to temporary target objectID. Results may not be accessible without obtaining a permanent object ID."); + NSManagedObject *localObject = [self.managedObjectContext existingObjectWithID:objectID error:&blockError]; + NSAssert(localObject == nil || localObject.managedObjectContext == nil || [localObject.managedObjectContext isEqual:self.managedObjectContext], @"Serious Core Data error: requested existing object with ID %@ in context %@, instead got an object reference in context %@. This may indicate that the objectID for your target managed object was obtained using `obtainPermanentIDsForObjects:error:` in the wrong context.", objectID, self.managedObjectContext, [localObject managedObjectContext]); + if (! localObject) { + RKLogWarning(@"Failed to retrieve existing object with ID: %@", objectID); + RKLogCoreDataError(blockError); + return; + } + self.mapperOperation.targetObject = localObject; + } else { + if (self.mapperOperation.targetObject) RKLogDebug(@"Mapping HTTP response to unmanaged target object with `RKManagedObjectResponseMapperOperation`: %@", self.mapperOperation.targetObject); + } + } else { + RKLogTrace(@"Mapping HTTP response to nil target object..."); + } + } else { + RKLogInfo(@"Non-successful status code encountered: performing mapping with nil target object."); + } + + [self.mapperOperation start]; + blockError = self.mapperOperation.error; + mappingResult = self.mapperOperation.mappingResult; + }]; + + if (self.isCancelled) return nil; + + if (! mappingResult) { + if (error) *error = blockError; + return nil; + } + + // Mapping completed without error, allow the connection operations to execute + if ([self.operationQueue operationCount]) { + RKLogTrace(@"Awaiting execution of %ld enqueued connection operations: %@", (long) [self.operationQueue operationCount], [self.operationQueue operations]); + [self.operationQueue waitUntilAllOperationsAreFinished]; + } + + return mappingResult; +} + +@end + +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKRoute.h b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRoute.h new file mode 100644 index 0000000..66f8f91 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRoute.h @@ -0,0 +1,141 @@ +// +// RKRoute.h +// RestKit +// +// Created by Blake Watters on 5/31/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKHTTPUtilities.h" + +/** + The `RKRoute` class models a single routable path pattern in use by the application. A route can be combined with an `NSURL` base URL and interpolated with an object to produce a new fully hydrated URL object. Routes are always instantiated with a path pattern and metadata to provide for the subsequent identification of the defined route. + + There are three types of routes modeled by the RKRoute class: + + 1. **Named Routes**: A named route represents a single path and optional request method within the application. The route is not affiliated with any particular class. For example, one might define a route with the name `@"airlines_list"` as a GET to the path '/airlines.json'. + 1. **Class Routes**: An class route represents a single path that is identified by object class and request method for which it is appropriate. For example, one might define a route for the class `RKArticle` for a POST to the path '/articles.json'. + 1. **Relationship Routes**: A relationship route represents a single path through which the relationship of a parent object can be manipulated. For example, given an `RKArticle` and `RKComment` class, one might define a relationship route for the `RKArticle` class's `@"comments"` relationship as pointing to a GET to the path `@"/articles/:articleID/comments". + + The RKRoute class is internally implemented as a class cluster and is not to be directly instantiated via alloc and init. + + @see RKRouter + @see RKRouteSet + */ +@interface RKRoute : NSObject + +///--------------------------- +/// @name Instantiating Routes +///--------------------------- + +/** + Creates and returns a new named route object with the given name, path pattern and method. + + @param name A unique identifying name for the route. + @param pathPattern A SOCKit pattern describing the format of URL paths generated from the route. + @param method The request method of the route. The method given must specify a single HTTP method to be used for requests using the route. + @return A new named route object with the given name, path pattern and request method. + @raise NSInvalidArgumentException Raised if the given HTTP request method is not an exact match of the RKRequestMethod enum + */ ++ (instancetype)routeWithName:(NSString *)name pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method; + +/** + Creates and returns a new class route object with the given object class, path pattern and method. + + @param objectClass The class that is represented by the route. + @param pathPattern A SOCKit pattern describing the format of URL paths generated from the route. + @param method The request method of the route. More than one method may be specified via a bitwise OR. + @return A new class route object with the given object class, path pattern and request method. + */ ++ (instancetype)routeWithClass:(Class)objectClass pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method; + +/** + Creates and returns a new relationship route object with the given relationship name, object class, path pattern and method. + + @param name The name of the relationship represented by the route. + @param objectClass The class containing the relationship represented by the route. + @param pathPattern A SOCKit pattern describing the format of URL paths generated from the route. + @param method The request method of the route. More than one method may be specified via a bitwise OR. + @return A new class route object with the given object class, path pattern and request method. + */ ++ (instancetype)routeWithRelationshipName:(NSString *)name objectClass:(Class)objectClass pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method; + +///--------------------------------- +/// @name Accessing Route Attributes +///--------------------------------- + +/** + The name of the receiver. + + The name is used to identify named and relationship routes and is always `nil` for object routes. + */ +@property (nonatomic, strong, readonly) NSString *name; + +/** + The object class of the receiver. + + Defines the class for which the route is appropriate. Always returns `nil` for named routes. + */ +@property (nonatomic, strong, readonly) Class objectClass; + +/** + The request method of the receiver. + + Appropriate for all route types. If the route is appropriate for any HTTP request method, then the `RKRequestMethodAny` value is used. + */ +@property (nonatomic, assign, readonly) RKRequestMethod method; + +/** + The path pattern of the receiver. + + A SOCKit pattern that describes the format of the path portion of URL's generated from the receiver. Required and used by all route types. + + @see `SOCPattern` + */ +@property (nonatomic, strong, readonly) NSString *pathPattern; + +/** + A Boolean value that determines if the path pattern should be escaped when evaluated. + + *Default*: `NO` + */ +@property (nonatomic, assign) BOOL shouldEscapePath; + +///----------------------------- +/// @name Inspecting Route Types +///----------------------------- + +/** + Determines if the receiver is a named route. + + @return YES if the receiver is a named route, else NO. + */ +@property (nonatomic, getter=isNamedRoute, readonly) BOOL namedRoute; + +/** + Determines if the receiver is a class route. + + @return YES if the receiver is a class route, else NO. + */ +@property (nonatomic, getter=isClassRoute, readonly) BOOL classRoute; + +/** + Determines if the receiver is a relationship route. + + @return YES if the receiver is a relationship route, else NO. + */ +@property (nonatomic, getter=isRelationshipRoute, readonly) BOOL relationshipRoute; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKRoute.m b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRoute.m new file mode 100644 index 0000000..8dbc9eb --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRoute.m @@ -0,0 +1,169 @@ +// +// RKRoute.m +// RestKit +// +// Created by Blake Watters on 5/31/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKRoute.h" + +NSString *RKStringDescribingRequestMethod(RKRequestMethod method); +NSString *RKStringDescribingRequestMethod(RKRequestMethod method) +{ + if (method == RKRequestMethodAny) return @"*"; + NSMutableArray *methods = [NSMutableArray array]; + if (method & RKRequestMethodGET) [methods addObject:@"GET"]; + if (method & RKRequestMethodPOST) [methods addObject:@"POST"]; + if (method & RKRequestMethodPUT) [methods addObject:@"PUT"]; + if (method & RKRequestMethodDELETE) [methods addObject:@"DELETE"]; + if (method & RKRequestMethodHEAD) [methods addObject:@"HEAD"]; + if (method & RKRequestMethodPATCH) [methods addObject:@"PATCH"]; + if (method & RKRequestMethodOPTIONS) [methods addObject:@"OPTIONS"]; + return [NSString stringWithFormat:@"(%@)", [methods componentsJoinedByString:@"|"]]; +} + +@interface RKRoute () +@property (nonatomic, strong, readwrite) NSString *name; +@property (nonatomic, strong, readwrite) Class objectClass; +@property (nonatomic, assign, readwrite) RKRequestMethod method; +@property (nonatomic, strong, readwrite) NSString *pathPattern; +@end + +@interface RKNamedRoute : RKRoute +@end + +@interface RKClassRoute : RKRoute +@end + +@interface RKRelationshipRoute : RKRoute +@end + +@implementation RKRoute + ++ (instancetype)routeWithName:(NSString *)name pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method +{ + NSParameterAssert(name); + NSParameterAssert(pathPattern); + if (!RKIsSpecificRequestMethod(method)) [NSException raise:NSInvalidArgumentException format:@"The `method` parameter must specify a single, non-ambiguous HTTP method. Bitmask values and `RKRequestMethodAny` are invalid arguments."]; + RKNamedRoute *route = [RKNamedRoute new]; + route.name = name; + route.pathPattern = pathPattern; + route.method = method; + return route; +} + ++ (instancetype)routeWithClass:(Class)objectClass pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method +{ + NSParameterAssert(objectClass); + NSParameterAssert(pathPattern); + RKClassRoute *route = [RKClassRoute new]; + route.objectClass = objectClass; + route.pathPattern = pathPattern; + route.method = method; + return route; +} + ++ (instancetype)routeWithRelationshipName:(NSString *)relationshipName objectClass:(Class)objectClass pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method +{ + NSParameterAssert(relationshipName); + NSParameterAssert(objectClass); + NSParameterAssert(pathPattern); + RKRelationshipRoute *route = [RKRelationshipRoute new]; + route.name = relationshipName; + route.objectClass = objectClass; + route.pathPattern = pathPattern; + route.method = method; + return route; +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + if ([self isMemberOfClass:[RKRoute class]]) { + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"%@ is not meant to be directly instantiated. Use one of the initializer methods instead.", + NSStringFromClass([self class])] + userInfo:nil]; + } + } + + return self; +} + +- (BOOL)isNamedRoute +{ + return NO; +} + +- (BOOL)isClassRoute +{ + return NO; +} + +- (BOOL)isRelationshipRoute +{ + return NO; +} + +@end + +@implementation RKNamedRoute + +- (BOOL)isNamedRoute +{ + return YES; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p name=%@ method=%@ pathPattern=%@>", + NSStringFromClass([self class]), self, self.name, RKStringDescribingRequestMethod(self.method), self.pathPattern]; +} + +@end + +@implementation RKClassRoute + +- (BOOL)isClassRoute +{ + return YES; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p objectClass=%@ method=%@ pathPattern=%@>", + NSStringFromClass([self class]), self, NSStringFromClass(self.objectClass), + RKStringDescribingRequestMethod(self.method), self.pathPattern]; +} + +@end + +@implementation RKRelationshipRoute + +- (BOOL)isRelationshipRoute +{ + return YES; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p relationshipName=%@ objectClass=%@ method=%@ pathPattern=%@>", + NSStringFromClass([self class]), self, self.name, NSStringFromClass(self.objectClass), + RKStringDescribingRequestMethod(self.method), self.pathPattern]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKRouteSet.h b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRouteSet.h new file mode 100644 index 0000000..6cb3502 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRouteSet.h @@ -0,0 +1,159 @@ +// +// RKRouteSet.h +// RestKit +// +// Created by Blake Watters on 5/31/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKRoute.h" + +/** + The `RKRouteSet` class provides for the storage and retrieval of `RKRoute` objects. Route objects are added and removed the route set to manipulate the routing table of the application. + + @see `RKRouter` + */ +@interface RKRouteSet : NSObject + +///--------------------------------- +/// @name Adding and Removing Routes +///--------------------------------- + +/** + Adds a route to the receiver. + + @param route The route to be added. + @raises NSInvalidArgumentException Raised if the route already exists in the receiver or overlaps an existing name. + */ +- (void)addRoute:(RKRoute *)route; + +/** + Adds all routes from the given array to the receiver. All objects within the given array must be an instance of `RKRoute` or else an `NSInvalidArgumentException` will be raised. + + @param routes An array of `RKRoute` objects to be added to the receiver. + */ +- (void)addRoutes:(NSArray *)routes; + +/** + Removes a route from the receiver. + + @param route The route to be removed. + @raises NSInvalidArgumentException Raised if the route does not exist in the receiver. + */ +- (void)removeRoute:(RKRoute *)route; + +///--------------------------- +/// @name Querying a Route Set +///--------------------------- + +/** + Determines if a given route exists within the receiver. + + @param route The route to be tested for containement. + @return `YES` if the route is contained within the route set, else `NO`. + */ +- (BOOL)containsRoute:(RKRoute *)route; + +/** + Returns all routes from the receiver in an array. + + @return An array containing all the routes in the receiver. + */ +@property (nonatomic, readonly, copy) NSArray *allRoutes; + +/** + Returns all named routes from the receiver in an array. + + @return An array containing all the named routes in the receiver. + */ +@property (nonatomic, readonly, copy) NSArray *namedRoutes; + +/** + Returns all class routes from the receiver in an array. + + @return An array containing all the class routes in the receiver. + */ +@property (nonatomic, readonly, copy) NSArray *classRoutes; + +/** + Returns all relationship routes from the receiver in an array. + + @return An array containing all the relationship routes in the receiver. + */ +@property (nonatomic, readonly, copy) NSArray *relationshipRoutes; + +/** + Retrieves a route with the given name. + + @param name The name of the named route to be found. + @return A route with the given name or nil if none was found. + */ +- (RKRoute *)routeForName:(NSString *)name; + +/** + Retrieves a route for the given object class and request method. + + @param objectClass The object class of the route to be retrieved. + @param method The request method of the route to be retrieved. + @return A route with the given object class and method or nil if none was found. + */ +- (RKRoute *)routeForClass:(Class)objectClass method:(RKRequestMethod)method; + +/** + Retrieves a route for a given relationship of a class with a given request method. + + @param relationship The name of the relationship of the route to be retrieved. + @param method The request method of the route to be retrieved. + @return A route with the given relationship name, object class and method or nil if none was found. + */ +- (RKRoute *)routeForRelationship:(NSString *)relationship ofClass:(Class)objectClass method:(RKRequestMethod)method; + +/** + Retrieves all class routes with a given object class. + + Class matches are determined by direct comparison of the class objects. The inheritance hierarchy is not consulted. + + @param objectClass The object class of the routes to be retrieved. + @return An array containing all class routes with the given class. + */ +- (NSArray *)routesForClass:(Class)objectClass; + +/** + Retrieves all object routes for a given object. + + All object routes are searched and returned if they target a class or superclass of the given object (using `- [NSObject isKindOfClass:]`). + + @param object An object for which all object routes are to be retrieved. + @return An array containing all object routes where the target class is included in the given object's class hierarchy. + */ +- (NSArray *)routesForObject:(id)object; + +/** + Retrieves all routes for a given relationship name and object class. + + @param relationshipName The name of the relationship of the routes to be retrieved. + @param objectClass The object class of the routes to be retrieved. + @return An array containing all relationship routes with the given relationship name and object class. + */ +- (NSArray *)routesForRelationship:(NSString *)relationshipName ofClass:(Class)objectClass; + +/** + Retrieves a route for a given object and request method. + + The object routes are first searched for an exact match with the given object's class and request method. If no exact match is found for the given request method, but a route is found for the `RKRequestMethodAny` method, it is returned. If neither are found, the search process begins again and traverses up the inheritance hierarchy. + */ +- (RKRoute *)routeForObject:(id)object method:(RKRequestMethod)method; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKRouteSet.m b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRouteSet.m new file mode 100644 index 0000000..1038b61 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRouteSet.m @@ -0,0 +1,212 @@ +// +// RKRouteSet.m +// RestKit +// +// Created by Blake Watters on 5/31/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKRouteSet.h" +#import "RKPathMatcher.h" + +@interface RKRouteSet () + +@property (nonatomic, strong) NSMutableArray *routes; + +@end + +@implementation RKRouteSet + + +- (instancetype)init +{ + self = [super init]; + if (self) { + self.routes = [NSMutableArray array]; + } + + return self; +} + + +- (NSArray *)allRoutes +{ + return [NSArray arrayWithArray:self.routes]; +} + +- (NSArray *)namedRoutes +{ + NSMutableArray *routes = [NSMutableArray array]; + for (RKRoute *route in self.routes) { + if ([route isNamedRoute]) [routes addObject:route]; + } + + return [NSArray arrayWithArray:routes]; +} + +- (NSArray *)classRoutes +{ + NSMutableArray *routes = [NSMutableArray array]; + for (RKRoute *route in self.routes) { + if ([route isClassRoute]) [routes addObject:route]; + } + + return [NSArray arrayWithArray:routes]; +} + +- (NSArray *)relationshipRoutes +{ + NSMutableArray *routes = [NSMutableArray array]; + for (RKRoute *route in self.routes) { + if ([route isRelationshipRoute]) [routes addObject:route]; + } + + return [NSArray arrayWithArray:routes]; +} + +- (void)addRoute:(RKRoute *)route +{ + NSAssert(![self containsRoute:route], @"Cannot add a route that is already added to the router."); + NSAssert(![route isNamedRoute] || [self routeForName:route.name] == nil, @"Cannot add a route with the same name as an existing route."); + if ([route isClassRoute]) { + RKRoute *existingRoute = [self routeForClass:route.objectClass method:route.method]; + if (! (existingRoute == nil || (existingRoute.method == RKRequestMethodAny && route.method != RKRequestMethodAny) || (route.method == RKRequestMethodAny && existingRoute.method != RKRequestMethodAny))) [NSException raise:NSInternalInconsistencyException format:@"Cannot add a route with the same class and method as an existing route."]; + } else if ([route isRelationshipRoute]) { + NSArray *routes = [self routesForRelationship:route.name ofClass:route.objectClass]; + for (RKRoute *existingRoute in routes) { + NSAssert(existingRoute.method != route.method, @"Cannot add a relationship route with the same name and class as an existing route."); + (void)existingRoute; + } + } + [self.routes addObject:route]; +} + +- (void)addRoutes:(NSArray *)routes +{ + for (RKRoute *route in routes) { + if (! [route isKindOfClass:[RKRoute class]]) [NSException raise:NSInvalidArgumentException format:@"Unexpected object of type `%@` encountered in array of routes.", [route class]]; + [self addRoute:route]; + } +} + +- (void)removeRoute:(RKRoute *)route +{ + NSAssert([self containsRoute:route], @"Cannot remove a route that is not added to the router."); + [self.routes removeObject:route]; +} + +- (BOOL)containsRoute:(RKRoute *)route +{ + return [self.routes containsObject:route]; +} + +- (RKRoute *)routeForName:(NSString *)name +{ + for (RKRoute *route in [self namedRoutes]) { + if ([route.name isEqualToString:name]) { + return route; + } + } + + return nil; +} + +- (RKRoute *)routeForClass:(Class)objectClass method:(RKRequestMethod)method +{ + // Check for an exact match + for (RKRoute *route in [self classRoutes]) { + if ([route.objectClass isEqual:objectClass] && (route.method != RKRequestMethodAny && route.method & method)) { + return route; + } + } + + // Check for wildcard match + for (RKRoute *route in [self classRoutes]) { + if ([route.objectClass isEqual:objectClass] && route.method == RKRequestMethodAny) { + return route; + } + } + + return nil; +} + +- (RKRoute *)routeForRelationship:(NSString *)relationshipName ofClass:(Class)objectClass method:(RKRequestMethod)method +{ + for (RKRoute *route in [self relationshipRoutes]) { + if ([route.name isEqualToString:relationshipName] && [route.objectClass isEqual:objectClass] && (route.method == method || route.method == RKRequestMethodAny)) { + return route; + } + } + + return nil; +} + +- (NSArray *)routesForClass:(Class)objectClass +{ + NSMutableArray *routes = [NSMutableArray array]; + for (RKRoute *route in [self classRoutes]) { + if ([route.objectClass isEqual:objectClass]) { + [routes addObject:route]; + } + } + + return [NSArray arrayWithArray:routes]; +} + +- (NSArray *)routesForObject:(id)object +{ + NSMutableArray *routes = [NSMutableArray array]; + for (RKRoute *route in [self classRoutes]) { + if ([object isKindOfClass:route.objectClass]) { + [routes addObject:route]; + } + } + + return [NSArray arrayWithArray:routes]; +} + +- (NSArray *)routesForRelationship:(NSString *)relationshipName ofClass:(Class)objectClass +{ + NSIndexSet *indexes = [self.relationshipRoutes indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { + return [[(RKRoute *)obj objectClass] isEqual:objectClass] && [[(RKRoute *)obj name] isEqualToString:relationshipName]; + }]; + + return [self.relationshipRoutes objectsAtIndexes:indexes]; +} + +- (RKRoute *)routeForObject:(id)object method:(RKRequestMethod)method +{ + Class searchClass = [object class]; + while (searchClass) { + NSArray *routes = [self routesForClass:searchClass]; + RKRoute *wildcardRoute = nil; + RKRoute *bitMaskMatch = nil; + for (RKRoute *route in routes) { + if (route.method == method) return route; + + // We want to favor bitmask matches separate from the Any wildcard match + if (route.method == RKRequestMethodAny) wildcardRoute = route; + else if (route.method & method) bitMaskMatch = route; + } + + if (bitMaskMatch) return bitMaskMatch; + if (wildcardRoute) return wildcardRoute; + searchClass = [searchClass superclass]; + } + + return nil; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKRouter.h b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRouter.h new file mode 100644 index 0000000..f8f7221 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRouter.h @@ -0,0 +1,118 @@ +// +// RKRouter.h +// RestKit +// +// Created by Blake Watters on 6/20/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKHTTPUtilities.h" + +@class RKRouteSet; +@class RKRoute; + +/** + An `RKRouter` instance is responsible for generating `NSURL` objects with a given base URL and a route set. It is used to centralize the knowledge about the URL's that are used by the application. + + ## Route Generation + + URL's can be generated by the router in three ways: + + 1. **By name**. Named routes link a symbolic name with a path and an HTTP request method. (see `URLForRouteNamed:method:object:`) + 2. **By object**. Routes can be defined by class and HTTP request method. When a URL is requested from the router for an object, the router will identify the most appropriate route for the object and instantiate an `NSURL` with the route's path pattern and interpolate it against the object. (see `URLForObject:method:`) + 3. **By object relationship**. Routes can be defined for relationships to other objects. When a URL is requested from the router for a relationship, the router will retrieve the appropriate route for the relationship from the route set and interpolate the route's path pattern against the source object. (see `URLForRelationship:ofObject:method:`) + + @see `RKRoute` + @see `RKRouteSet` + */ +@interface RKRouter : NSObject + +- (instancetype)init __attribute__((unavailable("Invoke initWithBaseURL: instead."))); + +///---------------------------- +/// @name Initializing a Router +///---------------------------- + +/** + Initializes a router with a given base URL. + + @param baseURL The base URL with which to initialize the receiver. + @return The receiver, initialized with the given base URL. + */ +- (instancetype)initWithBaseURL:(NSURL *)baseURL NS_DESIGNATED_INITIALIZER; + +///---------------------- +/// @name Generating URLs +///---------------------- + +/** + Generates a URL for the route with the given name. + + The route set is searched for a route with the given name and a new `NSURL` object is instantiated with the baseURL of the receiver and the path pattern of the route, optionally interpolated with a given object. If a pointer to an `RKRequestMethod` variable is provided, the HTTP method for the route will be assigned to the reference. + + @param routeName The name of the route for which a URL is to be generated. + @param method A pointer to an `RKRequestMethod` variable in which to store the HTTP method associated with the named route. May be nil. + @param object An optional object against which to interpolate the path pattern. + @return A new `NSURL` object constructed by appending the path pattern to the baseURL of the receiver and interpolating against a given object; or nil if no route was found with the given name. + */ +- (NSURL *)URLForRouteNamed:(NSString *)routeName method:(out RKRequestMethod *)method object:(id)object; + +/** + Generates a URL for a given object and HTTP method. + + The route set is searched for a route that matches the HTTP method and class of the object being routed. If there is not an exact match for the object's class, the inheritance hierarchy is searched until a match is found or all possible routes are exhausted. Exact HTTP request matches are favored over the wildcard method (`RKRequestMethodAny`). Once the appropriate route is identified, a new `NSURL` object is instantiated with the baseURL of the receiver and the path pattern of the route, interpolated against the object being routed. + + @param object The object for which a URL is to be generated. + @param method The HTTP method for which the URL is to be generated. + @return A new URL object constructed by appending the path pattern of the route for the object an HTTP method to the baseURL of the receiver, interpolated against the routed object; or nil if no route was found for the given object and HTTP method. + */ +- (NSURL *)URLForObject:(id)object method:(RKRequestMethod)method; + +/** + Generates a URL for a relationship of a given object with a given HTTP method. + + The route set is searched for a route that matches the relationship of the given object's class and the given HTTP method. If a matching route is found, a new `NSURL` object is instantiated with the baseURL of the receiver and the path pattern of the route, interpolated against the object being routed. + + @param relationshipName The name of the relationship for which a URL is to be generated. + @param object The object for which the URL is to be generated. + @param method The HTTP method for which the URL is to be generated. + @return A new URL object constructed by appending the path pattern of the route for the given object's relationship and HTTP method to the baseURL of the receiver, interpolated against the routed object; or nil if no route was found for the given relationship, object and HTTP method. + */ +- (NSURL *)URLForRelationship:(NSString *)relationshipName ofObject:(id)object method:(RKRequestMethod)method; + +/** + Generates a URL with a given route and object. + + @param route The route to generate the URL with. + @param object The object with which to interpolate the path pattern of the given route. + @return A new URL object constructed by interpolating the path pattern of the given route with the given object to construct a path and constructing an `NSURL` object relative to the `baseURL` of the receiver. + */ +- (NSURL *)URLWithRoute:(RKRoute *)route object:(id)object; + +///--------------------------------------------- +/// @name Configuring the Base URL and Route Set +///--------------------------------------------- + +/** + The base URL that all URLs constructed by the receiver are relative to. + */ +@property (nonatomic, strong, readwrite) NSURL *baseURL; + +/** + A route set defining all the routes addressable through the receiver. + */ +@property (nonatomic, strong, readonly) RKRouteSet *routeSet; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Network/RKRouter.m b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRouter.m new file mode 100644 index 0000000..2d5565f --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Network/RKRouter.m @@ -0,0 +1,85 @@ +// +// RKRouter.m +// RestKit +// +// Created by Blake Watters on 6/20/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKRouter.h" +#import "RKRouteSet.h" +#import "RKRoute.h" +#import "RKPathMatcher.h" +#import <objc/runtime.h> + +@interface RKRouter () +@property (nonatomic, strong, readwrite) RKRouteSet *routeSet; +@end + +@implementation RKRouter + +- (instancetype)initWithBaseURL:(NSURL *)baseURL +{ + self = [super init]; + if (self) { + NSParameterAssert(baseURL); + self.baseURL = baseURL; + self.routeSet = [[RKRouteSet alloc] init]; + } + + return self; +} + +- (instancetype)init +{ + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"%@ Failed to call designated initializer. Invoke initWithBaseURL: instead.", NSStringFromClass([self class])] + userInfo:nil]; +} + +- (NSURL *)URLForRouteNamed:(NSString *)routeName method:(out RKRequestMethod *)method object:(id)object +{ + RKRoute *route = [self.routeSet routeForName:routeName]; + if (method) *method = route.method; + return [self URLWithRoute:route object:object]; +} + +- (NSURL *)URLForObject:(id)object method:(RKRequestMethod)method +{ + RKRoute *route = [self.routeSet routeForObject:object method:method]; + return [self URLWithRoute:route object:object]; +} + +- (NSURL *)URLForRelationship:(NSString *)relationshipName ofObject:(id)object method:(RKRequestMethod)method +{ + RKRoute *route = [self.routeSet routeForRelationship:relationshipName ofClass:[object class] method:method]; + return [self URLWithRoute:route object:object]; +} + +- (NSURL *)URLWithRoute:(RKRoute *)route object:(id)object +{ + NSParameterAssert(route); + NSURL *URL = [NSURL URLWithString:[self pathFromRoute:route forObject:object] relativeToURL:self.baseURL]; + return URL; +} + +- (NSString *)pathFromRoute:(RKRoute *)route forObject:(id)object +{ + if (! object) return route.pathPattern; + RKPathMatcher *pathMatcher = [RKPathMatcher pathMatcherWithPattern:route.pathPattern]; + return [pathMatcher pathFromObject:object addingEscapes:route.shouldEscapePath interpolatedParameters:nil]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping.h new file mode 100644 index 0000000..54c84df --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping.h @@ -0,0 +1,28 @@ +// +// ObjectMapping.h +// RestKit +// +// Created by Blake Watters on 9/30/10. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKObjectMapping.h" +#import "RKAttributeMapping.h" +#import "RKRelationshipMapping.h" +#import "RKValueTransformers.h" +#import "RKMappingResult.h" +#import "RKMapperOperation.h" +#import "RKDynamicMapping.h" +#import "RKErrorMessage.h" diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKAttributeMapping.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKAttributeMapping.h new file mode 100644 index 0000000..6d08f96 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKAttributeMapping.h @@ -0,0 +1,60 @@ +// +// RKAttributeMapping.h +// RestKit +// +// Created by Blake Watters on 4/30/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKPropertyMapping.h" + +/** + Instances of `RKAttributeMapping` define a transformation of data between an attribute value on source object and an attribute value on a destination object within an object mapping. + */ +@interface RKAttributeMapping : RKPropertyMapping + +/** + Creates and returns a new attribute mapping specifying that data is to be read from a given key path on a source object + and set to a given key path on a destination object. + + Attribute mappings define transformation between key paths in the source and destination object beings mapped. In the simplest + case, an attribute mapping may simply specify that data from one object is to be copied to another. A common example of this + type of transformation is copying the `name` key from a JSON payload onto a local object. In this case, the source and + destination key paths are identical, as are the source and destination types (`NSString`), so a simple get and set operation + has been defined. + + The next most common use-case is the transformation of identical data between two different key paths in the + source and destination objects. This is typically encountered when you wish to transform inbound data to conform with the naming + conventions of the platform or the data model of your application. An example of this type of transformation would be from the + source key path of `first_name` to the destination key path of `firstName`. In this transformation, the key paths have diverged + but both sides of the mapping correspond to NSString properties. + + The final type of transformation to be specified via an attribute mapping involves the transformation between types in the mapping. + By far, the most common example of this use-case is the transformation of a inbound string or numeric property into a date on + the target object. For example, consider a backend system that returns the creation date of a piece of content in a JSON payload. + This data might be returned in JSON as `{"created_on": "2012-08-27"}`. In a given application, the developer may wish to model this + data as an NSDate `createdOn` property on the target object. An attribute mapping to support this mapping would specify a source + key path of `created_on` and a destination key path of `createdOn`. On the destination object, the `createdOn` property would be defined + as `@property (nonatomic, strong) NSDate *createdOn;`. At mapping time, the mapping operation inspects the type of the content being + mapped and attempts to transform the source content into the type of the desination property specified by the mapping. In this case, + an NSDateFormatter object would be used to process the inbound `NSString` into an outbound `NSDate` object. + + @param sourceKeyPath The key path on the source object from which to read the data being mapped. If `nil`, then the entire source object representation is mapped to the specified destination attribute. + @param destinationKeyPath The key path on the destination object on which to set the mapped data. + @return A newly created attribute mapping object that is ready to be added to an object mapping. + */ ++ (instancetype)attributeMappingFromKeyPath:(NSString *)sourceKeyPath toKeyPath:(NSString *)destinationKeyPath; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKAttributeMapping.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKAttributeMapping.m new file mode 100644 index 0000000..6d83f06 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKAttributeMapping.m @@ -0,0 +1,39 @@ +// +// RKAttributeMapping.m +// RestKit +// +// Created by Blake Watters on 4/30/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKAttributeMapping.h" + +@interface RKPropertyMapping () +@property (nonatomic, copy, readwrite) NSString *sourceKeyPath; +@property (nonatomic, copy, readwrite) NSString *destinationKeyPath; +@end + +@implementation RKAttributeMapping + ++ (instancetype)attributeMappingFromKeyPath:(NSString *)sourceKeyPath toKeyPath:(NSString *)destinationKeyPath +{ + NSAssert(sourceKeyPath || destinationKeyPath, @"Both the source and destination key paths cannot be nil"); + RKAttributeMapping *attributeMapping = [self new]; + attributeMapping.sourceKeyPath = sourceKeyPath; + attributeMapping.destinationKeyPath = destinationKeyPath; + return attributeMapping; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKDynamicMapping.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKDynamicMapping.h new file mode 100644 index 0000000..ba60aca --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKDynamicMapping.h @@ -0,0 +1,115 @@ +// +// RKDynamicMapping.h +// RestKit +// +// Created by Blake Watters on 7/28/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKMapping.h" +#import "RKObjectMappingMatcher.h" + +/** + The `RKDynamicMapping` class is an `RKMapping` subclass that provides an interface for deferring the decision about how a given object representation is to be mapped until run time. This enables many interesting mapping strategies, such as mapping similarly structured data differently and constructing object mappings at run time by examining the data being mapped. + + ## Configuring Mapping Selection + + Dynamic mappings support the selection of the concrete object mapping in one of two ways: + + 1. Through the use of a mapping selection block configured by `setObjectMappingForRepresentationBlock:`. When configured, the block is called with a reference to the current object representation being mapped and is expected to return an `RKObjectMapping` object. Returning `nil` declines the mapping of the representation. + 1. Through the configuration of one of more `RKObjectMappingMatcher` objects. The matchers are consulted in registration order and the first matcher to return an object mapping is used to map the matched representation. + + When both a mapping selection block and matchers are configured on a `RKDynamicMapping` object, the matcher objects are consulted first and if none match, the selection block is invoked. + + ## Using Matcher Objects + + The `RKObjectMappingMatcher` class provides an interface for evaluating a key path or predicate based match and returning an appropriate object mapping. Matchers can be added to the `RKDynamicMapping` objects to declaratively describe a particular mapping strategy. + + For example, suppose that we have a JSON fragment for a person that we want to map differently based on the gender of the person. When the gender is 'male', we want to use the Boy class and when then the gender is 'female' we want to use the Girl class. The JSON might look something like this: + + [ { "name": "Blake", "gender": "male" }, { "name": "Sarah", "gender": "female" } ] + + We might define configure the dynamic mapping like so: + + RKDynamicMapping *mapping = [RKDynamicMapping new]; + RKObjectMapping *boyMapping = [RKObjectMapping mappingForClass:[Boy class]]; + RKObjectMapping *girlMapping = [RKObjectMapping mappingForClass:[Girl class]]; + [mapping addMatcher:[RKObjectMappingMatcher matcherWithKeyPath:@"gender" expectedValue:@"male" objectMapping:boyMapping]]; + [mapping addMatcher:[RKObjectMappingMatcher matcherWithKeyPath:@"gender" expectedValue:@"female" objectMapping:girlMapping]]; + + When evaluated, the matchers will invoke `valueForKeyPath:@"gender"` against each dictionary in the array of object representations and apply the appropriate object mapping for each representation. This would return a mapping result containing an array of two objects, one an instance of the `Boy` class and the other an instance of the `Girl` class. + + ## HTTP Integration + + Dynamic mappings can be used to map HTTP requests and responses by adding them to an `RKRequestDescriptor` or `RKResponseDescriptor` objects. + */ +@interface RKDynamicMapping : RKMapping + +///------------------------------------------ +/// @name Configuring Block Mapping Selection +///------------------------------------------ + +/** + Sets a block to be invoked to determine the appropriate concrete object mapping with which to map an object representation. + + @param block The block object to invoke to select the object mapping with which to map the given object representation. The block returns an object mapping and accepts a single parameter: the object representation being mapped. + */ +- (void)setObjectMappingForRepresentationBlock:(RKObjectMapping *(^)(id representation))block; + +/** + Returns the array of matchers objects added to the receiver. + */ +@property (nonatomic, strong, readonly) NSArray *matchers; + +/** + Adds a matcher to the receiver. + + If the matcher has already been added to the receiver, then adding it again moves it to the top of the matcher stack. + + @param matcher The matcher to add to the receiver. + */ +- (void)addMatcher:(RKObjectMappingMatcher *)matcher; + +/** + Removes a matcher from the receiver. + + If the matcher has already been added to the receiver, then adding it again moves it to the top of the matcher stack. + + @param matcher The matcher to remove from the receiver. + */ +- (void)removeMatcher:(RKObjectMappingMatcher *)matcher; + +/** + Returns an array of object mappings that have been registered with the receiver. + + @return An array of `RKObjectMapping` objects registered with the receiver. + */ +@property (nonatomic, readonly) NSArray *objectMappings; + +///----------------------------------------------------------------- +/// @name Retrieving the Object Mapping for an Object Representation +///----------------------------------------------------------------- + +/** + Invoked by the `RKMapperOperation` and `RKMappingOperation` to determine the appropriate `RKObjectMapping` to use when mapping the given object representation. + + This method searches the stack of registered matchers and then executes the block, if any, set by `setObjectMappingForRepresentationBlock:`. If `nil` is returned, then mapping for the representation is declined and it will not be mapped. + + @param representation The object representation that being mapped dynamically for which to determine the appropriate concrete mapping. + @return The object mapping to be used to map the given object representation. + */ +- (RKObjectMapping *)objectMappingForRepresentation:(id)representation; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKDynamicMapping.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKDynamicMapping.m new file mode 100644 index 0000000..f7138ba --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKDynamicMapping.m @@ -0,0 +1,119 @@ +// +// RKDynamicMapping.m +// RestKit +// +// Created by Blake Watters on 7/28/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKDynamicMapping.h" +#import "RKObjectMappingMatcher.h" +#import "RKLog.h" + +// Set Logging Component +#undef RKLogComponent +#define RKLogComponent RKlcl_cRestKitObjectMapping + +@interface RKDynamicMapping () +@property (nonatomic, strong) NSMutableArray *mutableMatchers; +@property (nonatomic, strong) NSArray *possibleObjectMappings; +@property (nonatomic, copy) RKObjectMapping *(^objectMappingForRepresentationBlock)(id representation); +@end + +@implementation RKDynamicMapping + +- (instancetype)init +{ + self = [super init]; + if (self) { + self.mutableMatchers = [NSMutableArray new]; + self.possibleObjectMappings = [NSArray new]; + } + + return self; +} + +- (NSArray *)matchers +{ + return [self.mutableMatchers copy]; +} + +- (NSArray *)objectMappings +{ + return self.possibleObjectMappings; +} + +- (void)addMatcher:(RKObjectMappingMatcher *)matcher +{ + NSParameterAssert(matcher); + if ([self.mutableMatchers containsObject:matcher]) { + [self.mutableMatchers removeObject:matcher]; + [self.mutableMatchers insertObject:matcher atIndex:0]; + } else { + [self.mutableMatchers addObject:matcher]; + + NSArray *newPossibleMappings = [matcher possibleObjectMappings]; + if (newPossibleMappings.count > 0) { + self.possibleObjectMappings = [self.possibleObjectMappings arrayByAddingObjectsFromArray:newPossibleMappings]; + } + } +} + +- (void)removeMatcher:(RKObjectMappingMatcher *)matcher +{ + NSParameterAssert(matcher); + + if ([self.mutableMatchers containsObject:matcher]) { + NSMutableArray *mappings = [self.possibleObjectMappings mutableCopy]; + for (RKObjectMapping *mapping in [matcher possibleObjectMappings]) { + /* removeObject will remove *all* instances; if we have dups we just want to remove one */ + NSUInteger idx = [mappings indexOfObject:mapping]; + if (idx != NSNotFound) + [mappings removeObjectAtIndex:idx]; + } + self.possibleObjectMappings = [mappings copy]; + [self.mutableMatchers removeObject:matcher]; + } +} + +- (RKObjectMapping *)objectMappingForRepresentation:(id)representation +{ + RKObjectMapping *mapping = nil; + + RKLogTrace(@"Performing dynamic object mapping for object representation: %@", representation); + + // Consult the declarative matchers first + for (RKObjectMappingMatcher *matcher in self.mutableMatchers) { + if ([matcher matches:representation]) { + RKLogTrace(@"Found declarative match for matcher: %@.", matcher); + return matcher.objectMapping; + } + } + + // Otherwise consult the block + if (self.objectMappingForRepresentationBlock) { + mapping = self.objectMappingForRepresentationBlock(representation); + if (mapping) RKLogTrace(@"Determined concrete `RKObjectMapping` using object mapping for representation block"); + } + + return mapping; +} + +- (BOOL)isEqualToMapping:(RKMapping *)otherMapping +{ + return (self == otherMapping); +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKErrorMessage.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKErrorMessage.h new file mode 100644 index 0000000..2aea33f --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKErrorMessage.h @@ -0,0 +1,44 @@ +// +// RKError.h +// RestKit +// +// Created by Jeremy Ellison on 5/10/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +/** + The `RKErrorMessage` is a simple class used for representing error messages returned by a remote backend system with which the client application is communicating. Error messages are typically returned in a response body in the Client Error class (status code 4xx range). + + @see `RKErrorFromMappingResult` + */ +@interface RKErrorMessage : NSObject + +///----------------------------------- +/// @name Accessing Errror Information +///----------------------------------- + +/** + The error message to be presented to the user. + */ +@property (nonatomic, copy) NSString *errorMessage; + +/** + A dictionary of application specific information that accompanies the error message. + */ +@property (nonatomic, copy) NSDictionary *userInfo; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKErrorMessage.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKErrorMessage.m new file mode 100644 index 0000000..1a102c4 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKErrorMessage.m @@ -0,0 +1,30 @@ +// +// RKError.m +// RestKit +// +// Created by Jeremy Ellison on 5/10/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKErrorMessage.h" + +@implementation RKErrorMessage + +- (NSString *)description +{ + return self.errorMessage; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKHTTPUtilities.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKHTTPUtilities.h new file mode 100644 index 0000000..b1f0553 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKHTTPUtilities.h @@ -0,0 +1,159 @@ +// +// RKHTTPUtilities.h +// RestKit +// +// Created by Blake Watters on 8/24/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** + HTTP methods for requests + */ +typedef NS_OPTIONS(NSInteger, RKRequestMethod) { + RKRequestMethodGET = 1 << 0, + RKRequestMethodPOST = 1 << 1, + RKRequestMethodPUT = 1 << 2, + RKRequestMethodDELETE = 1 << 3, + RKRequestMethodHEAD = 1 << 4, + RKRequestMethodPATCH = 1 << 5, + RKRequestMethodOPTIONS = 1 << 6, + RKRequestMethodAny = (RKRequestMethodGET | + RKRequestMethodPOST | + RKRequestMethodPUT | + RKRequestMethodDELETE | + RKRequestMethodHEAD | + RKRequestMethodPATCH | + RKRequestMethodOPTIONS) +}; + +/** + Returns YES if the given HTTP request method is an exact match of the RKRequestMethod enum, and NO if it's a bit mask combination. + */ +BOOL RKIsSpecificRequestMethod(RKRequestMethod method); + +/** + Returns the corresponding string for value for a given HTTP request method. + + For example, given `RKRequestMethodGET` would return `@"GET"`. + + @param method The request method to return the corresponding string value for. The given request method must be specific. + */ +NSString *RKStringFromRequestMethod(RKRequestMethod method); + +/** + Returns the corresponding request method value for a given string. + + For example, given `@"PUT"` would return `@"RKRequestMethodPUT"` + */ +RKRequestMethod RKRequestMethodFromString(NSString *); + +/** + The HTTP status code classes + + See http://tools.ietf.org/html/rfc2616#section-10 + */ +typedef NS_ENUM(NSUInteger, RKStatusCodeClass) { + RKStatusCodeClassInformational = 100, + RKStatusCodeClassSuccessful = 200, + RKStatusCodeClassRedirection = 300, + RKStatusCodeClassClientError = 400, + RKStatusCodeClassServerError = 500 +}; + +/** + Creates a new range covering the status codes in the given class. + + @param statusCodeClass The status code class to create a range covering. + @return A new range covering the status codes in the given class. + */ +NSRange RKStatusCodeRangeForClass(RKStatusCodeClass statusCodeClass); + +/** + Creates a new index set covering the status codes in the given class. + + @param statusCodeClass The status code class to create an index set covering. + @return A new index set covering the status codes in the given class. + */ +NSIndexSet *RKStatusCodeIndexSetForClass(RKStatusCodeClass statusCodeClass); + +/** + Creates and returns a new index set including all HTTP response status codes that are cacheable. + + @return A new index set containing all cacheable status codes. + */ +NSIndexSet *RKCacheableStatusCodes(void); + +/** + Returns string representation of a given HTTP status code. + + The list of supported status codes was built from http://en.wikipedia.org/wiki/List_of_HTTP_status_codes + + @param statusCode The HTTP status code to return a string from. + @return A string representation of the given status code. + */ +NSString *RKStringFromStatusCode(NSInteger statusCode); + +/** + Parse HTTP Date: http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1 + */ +NSDate *RKDateFromHTTPDateString(NSString *); + +/** + Returns the cache expiration data from a dictionary of HTTP response headers as appropriate for the given status code. If the status code is not cachable, `nil` is returned. + + @param headers The HTTP response headers from which to extract the cache expiration date. + @param statusCode The HTTP response status code of the response. + @return The expiration date as specified by the cache headers or `nil` if none was found. + */ +NSDate *RKHTTPCacheExpirationDateFromHeadersWithStatusCode(NSDictionary *headers, NSInteger statusCode); + +/** + Returns a Boolean value that indicates if a given URL is relative to another URL. + + This method does not rely on the `baseURL` method of `NSURL` as it only indicates a relationship between the initialization of two URL objects. The relativity of the given URL is assessed by evaluating a prefix match of the URL's absolute string value with the absolute string value of the potential base URL. + + @param URL The URL to assess the relativity of. + @param baseURL The base URL to determine if the given URL is relative to. + @return `YES` is URL is relative to the base URL, else `NO`. + */ +BOOL RKURLIsRelativeToURL(NSURL *URL, NSURL *baseURL); + +/** + Returns a string object containing the relative path and query string of a given URL object and a base URL that the given URL is relative to. + + If the given URL is found not to be relative to the baseURL, `nil` is returned. + + @param URL The URL to retrieve the relative path and query string of. + @param baseURL The base URL to be omitted from the returned path and query string. + @return A string containing the relative path and query parameters. + */ +NSString *RKPathAndQueryStringFromURLRelativeToURL(NSURL *URL, NSURL *baseURL); + +/** + * Returns an index set of the status codes with optional response bodies + * + * @return An index set of the status codes with optional response bodies + */ +NSIndexSet *RKStatusCodesOfResponsesWithOptionalBodies(void); + +#ifdef __cplusplus +} +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKHTTPUtilities.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKHTTPUtilities.m new file mode 100644 index 0000000..e789c4b --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKHTTPUtilities.m @@ -0,0 +1,548 @@ +// +// RKHTTPUtilities.m +// RestKit +// +// Created by Blake Watters on 8/24/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKHTTPUtilities.h" + +NSUInteger RKStatusCodeRangeLength = 100; + +NSRange RKStatusCodeRangeForClass(RKStatusCodeClass statusCodeClass) +{ + return NSMakeRange(statusCodeClass, RKStatusCodeRangeLength); +} + +NSIndexSet *RKStatusCodeIndexSetForClass(RKStatusCodeClass statusCodeClass) +{ + return [NSIndexSet indexSetWithIndexesInRange:RKStatusCodeRangeForClass(statusCodeClass)]; +} + +NSIndexSet *RKCacheableStatusCodes(void) +{ + NSMutableIndexSet *cacheableStatusCodes = [NSMutableIndexSet indexSet]; + [cacheableStatusCodes addIndex:200]; + [cacheableStatusCodes addIndex:304]; + [cacheableStatusCodes addIndex:203]; + [cacheableStatusCodes addIndex:300]; + [cacheableStatusCodes addIndex:301]; + [cacheableStatusCodes addIndex:302]; + [cacheableStatusCodes addIndex:307]; + [cacheableStatusCodes addIndex:410]; + return cacheableStatusCodes; +} + +BOOL RKIsSpecificRequestMethod(RKRequestMethod method) +{ + // check for a power of two + return !(method & (method - 1)); +} + +NSString *RKStringFromRequestMethod(RKRequestMethod method) +{ + switch (method) { + case RKRequestMethodGET: return @"GET"; + case RKRequestMethodPOST: return @"POST"; + case RKRequestMethodPUT: return @"PUT"; + case RKRequestMethodPATCH: return @"PATCH"; + case RKRequestMethodDELETE: return @"DELETE"; + case RKRequestMethodHEAD: return @"HEAD"; + case RKRequestMethodOPTIONS: return @"OPTIONS"; + default: break; + } + return nil; +} + +RKRequestMethod RKRequestMethodFromString(NSString *methodName) +{ + if ([methodName isEqualToString:@"GET"]) return RKRequestMethodGET; + else if ([methodName isEqualToString:@"POST"]) return RKRequestMethodPOST; + else if ([methodName isEqualToString:@"PUT"]) return RKRequestMethodPUT; + else if ([methodName isEqualToString:@"DELETE"]) return RKRequestMethodDELETE; + else if ([methodName isEqualToString:@"HEAD"]) return RKRequestMethodHEAD; + else if ([methodName isEqualToString:@"PATCH"]) return RKRequestMethodPATCH; + else if ([methodName isEqualToString:@"OPTIONS"]) return RKRequestMethodOPTIONS; + else @throw [NSException exceptionWithName:NSInvalidArgumentException + reason:[NSString stringWithFormat:@"The given HTTP request method name `%@` does not correspond to any known request methods.", methodName] + userInfo:nil]; +} + +// Built from http://en.wikipedia.org/wiki/List_of_HTTP_status_codes +static NSDictionary *RKStatusCodesToNamesDictionary() +{ + static NSDictionary *statusCodesToNamesDictionary = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + statusCodesToNamesDictionary = @{ + // 1xx (Informational) + @(100): @"Continue", + @(101): @"Switching Protocols", + @(102): @"Processing", + + // 2xx (Success) + @(200): @"OK", + @(201): @"Created", + @(202): @"Accepted", + @(203): @"Non-Authoritative Information", + @(204): @"No Content", + @(205): @"Reset Content", + @(206): @"Partial Content", + @(207): @"Multi-Status", + @(208): @"Already Reported", + @(226): @"IM Used", + + // 3xx (Redirection) + @(300): @"Multiple Choices", + @(301): @"Moved Permanently", + @(302): @"Found", + @(303): @"See Other", + @(304): @"Not Modified", + @(305): @"Use Proxy", + @(306): @"Switch Proxy", + @(307): @"Temporary Redirect", + @(308): @"Permanent Redirect", + + // 4xx (Client Error) + @(400): @"Bad Request", + @(401): @"Unauthorized", + @(402): @"Payment Required", + @(403): @"Forbidden", + @(404): @"Not Found", + @(405): @"Method Not Allowed", + @(406): @"Not Acceptable", + @(407): @"Proxy Authentication Required", + @(408): @"Request Timeout", + @(409): @"Conflict", + @(410): @"Gone", + @(411): @"Length Required", + @(412): @"Precondition Failed", + @(413): @"Request Entity Too Large", + @(414): @"Request-URI Too Long", + @(415): @"Unsupported Media Type", + @(416): @"Requested Range Not Satisfiable", + @(417): @"Expectation Failed", + @(418): @"I'm a teapot", + @(420): @"Enhance Your Calm", + @(422): @"Unprocessable Entity", + @(423): @"Locked", + @(424): @"Failed Dependency", + @(424): @"Method Failure", + @(425): @"Unordered Collection", + @(426): @"Upgrade Required", + @(428): @"Precondition Required", + @(429): @"Too Many Requests", + @(431): @"Request Header Fields Too Large", + @(451): @"Unavailable For Legal Reasons", + + // 5xx (Server Error) + @(500): @"Internal Server Error", + @(501): @"Not Implemented", + @(502): @"Bad Gateway", + @(503): @"Service Unavailable", + @(504): @"Gateway Timeout", + @(505): @"HTTP Version Not Supported", + @(506): @"Variant Also Negotiates", + @(507): @"Insufficient Storage", + @(508): @"Loop Detected", + @(509): @"Bandwidth Limit Exceeded", + @(510): @"Not Extended", + @(511): @"Network Authentication Required", + }; + }); + return statusCodesToNamesDictionary; +} + +NSString * RKStringFromStatusCode(NSInteger statusCode) +{ + return RKStatusCodesToNamesDictionary()[@(statusCode)]; +} + + +/** + Below is ragel source used to compile those tables. The output was polished / pretty-printed and tweaked from ragel. + As the generated code is "hard" to debug, we store the code in http-date.r1 + + shell% ragel -F1 http-date.rl + shell% gcc -o http-date http-date.c + shell% ./http-date 'Sun, 06 Nov 1994 08:49:37 GMT' 'Sunday, 06-Nov-94 08:49:37 GMT' 'Sun Nov 6 08:49:37 1994' 'Sat Dec 24 14:34:26 2037' 'Sunday, 06-Nov-94 08:49:37 GMT' 'Sun, 06 Nov 1994 08:49:37 GMT' + */ +static const char _httpDate_trans_keys[] = { + 0, 0, 70, 87, 114, 114, 105, 105, 32, 100, 65, 83, 112, 117, 114, 114, 32, + 32, 32, 57, 48, 57, 32, 32, 48, 57, 48, 57, 58, 58, 48, 57, 48, 57, + 58, 58, 48, 57, 48, 57, 32, 32, 48, 57, 48, 57, 48, 57, 48, 57, 103, + 103, 101, 101, 99, 99, 101, 101, 98, 98, 97, 117, 110, 110, 108, 110, 97, 97, + 114, 121, 111, 111, 118, 118, 99, 99, 116, 116, 101, 101, 112, 112, 32, 32, 48, + 57, 48, 57, 32, 32, 65, 83, 112, 117, 114, 114, 32, 32, 48, 57, 48, 57, + 48, 57, 48, 57, 32, 32, 48, 57, 48, 57, 58, 58, 48, 57, 48, 57, 58, + 58, 48, 57, 48, 57, 32, 32, 71, 71, 77, 77, 84, 84, 103, 103, 101, 101, + 99, 99, 101, 101, 98, 98, 97, 117, 110, 110, 108, 110, 97, 97, 114, 121, 111, + 111, 118, 118, 99, 99, 116, 116, 101, 101, 112, 112, 97, 97, 121, 121, 44, 44, + 32, 32, 48, 57, 48, 57, 45, 45, 65, 83, 112, 117, 114, 114, 45, 45, 48, + 57, 48, 57, 32, 32, 48, 57, 48, 57, 58, 58, 48, 57, 48, 57, 58, 58, + 48, 57, 48, 57, 32, 32, 71, 71, 77, 77, 84, 84, 103, 103, 101, 101, 99, + 99, 101, 101, 98, 98, 97, 117, 110, 110, 108, 110, 97, 97, 114, 121, 111, 111, + 118, 118, 99, 99, 116, 116, 101, 101, 112, 112, 111, 111, 110, 110, 97, 117, 116, + 116, 32, 117, 114, 114, 100, 100, 104, 117, 117, 117, 32, 114, 115, 115, 101, 101, + 32, 115, 101, 101, 100, 100, 32, 110, 101, 101, 0, 0, 0, 0, 0, 0, 0 +}; + +static const char _httpDate_key_spans[] = { + 0, 18, 1, 1, 69, 19, 6, 1, 1, 26, 10, 1, 10, 10, 1, 10, 10, + 1, 10, 10, 1, 10, 10, 10, 10, 1, 1, 1, 1, 1, 21, 1, 3, 1, + 8, 1, 1, 1, 1, 1, 1, 1, 10, 10, 1, 19, 6, 1, 1, 10, 10, + 10, 10, 1, 10, 10, 1, 10, 10, 1, 10, 10, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 21, 1, 3, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 10, 10, 1, 19, 6, 1, 1, 10, 10, 1, 10, 10, 1, 10, 10, 1, + 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 1, 3, 1, 8, 1, + 1, 1, 1, 1, 1, 1, 1, 21, 1, 86, 1, 1, 14, 1, 83, 1, 1, + 84, 1, 1, 79, 1, 0, 0, 0 +}; + +static const short _httpDate_index_offsets[] = { + 0, 0, 19, 21, 23, 93, 113, 120, 122, 124, 151, 162, 164, 175, 186, 188, 199, + 210, 212, 223, 234, 236, 247, 258, 269, 280, 282, 284, 286, 288, 290, 312, 314, 318, + 320, 329, 331, 333, 335, 337, 339, 341, 343, 354, 365, 367, 387, 394, 396, 398, 409, + 420, 431, 442, 444, 455, 466, 468, 479, 490, 492, 503, 514, 516, 518, 520, 522, 524, + 526, 528, 530, 532, 554, 556, 560, 562, 571, 573, 575, 577, 579, 581, 583, 585, 587, + 589, 591, 602, 613, 615, 635, 642, 644, 646, 657, 668, 670, 681, 692, 694, 705, 716, + 718, 729, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 780, 782, 786, 788, 797, + 799, 801, 803, 805, 807, 809, 811, 813, 835, 837, 924, 926, 928, 943, 945, 1029, 1031, + 1033, 1118, 1120, 1122, 1202, 1204, 1205, 1206 +}; + +static const unsigned char _httpDate_indicies[] = { + 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 3, 4, 1, 1, + 5, 1, 6, 1, 7, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 10, 1, 11, 1, 1, 12, 1, 13, 1, 1, 1, + 14, 1, 1, 15, 16, 17, 1, 1, 1, 18, 1, 19, 1, 1, 1, 1, 20, + 1, 21, 1, 22, 1, 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 1, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, 1, 26, 1, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 1, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 1, 29, + 1, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 1, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 1, 32, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 1, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 1, 35, 1, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 1, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 1, 40, 1, 41, 1, 42, 1, 43, 1, 44, + 1, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 46, 1, 47, 1, 48, 1, 49, 1, 50, 1, 51, 1, 1, + 1, 1, 1, 1, 52, 1, 53, 1, 54, 1, 55, 1, 56, 1, 57, 1, 58, + 1, 59, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 1, 62, 1, 63, 1, 1, 64, 1, 65, 1, + 1, 1, 66, 1, 1, 67, 68, 69, 1, 1, 1, 70, 1, 71, 1, 1, 1, + 1, 72, 1, 73, 1, 74, 1, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 1, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 1, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 1, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 1, + 79, 1, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 1, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 1, 82, 1, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 1, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 1, 85, 1, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 1, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 1, 88, 1, 89, 1, 90, 1, 91, 1, 92, 1, 93, 1, 94, + 1, 95, 1, 96, 1, 97, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 98, 1, 99, 1, 100, 1, 101, 1, 102, + 1, 103, 1, 1, 1, 1, 1, 1, 104, 1, 105, 1, 106, 1, 107, 1, 108, + 1, 109, 1, 110, 1, 111, 1, 112, 1, 113, 1, 114, 1, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 1, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 1, 117, 1, 118, 1, 1, 119, 1, 120, 1, 1, 1, 121, 1, 1, 122, 123, + 124, 1, 1, 1, 125, 1, 126, 1, 1, 1, 1, 127, 1, 128, 1, 129, 1, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 1, 132, 1, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 1, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 1, 135, 1, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 1, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 1, 138, 1, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 1, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 1, 141, 1, 142, 1, 143, 1, 144, 1, + 145, 1, 146, 1, 147, 1, 148, 1, 149, 1, 150, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 151, 1, 152, 1, + 153, 1, 154, 1, 155, 1, 156, 1, 1, 1, 1, 1, 1, 157, 1, 158, 1, + 159, 1, 160, 1, 161, 1, 162, 1, 163, 1, 164, 1, 7, 1, 165, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 164, 1, 166, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 167, 1, 168, 1, 10, 1, 169, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 170, 1, 171, 1, 8, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 172, 1, 168, 1, 173, 1, 8, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 168, 1, 174, 1, 175, 1, + 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 176, 1, 172, 1, 1, 1, 1, + 0 +}; + +static const unsigned char _httpDate_trans_targs[] = { + 2, 0, 124, 126, 131, 137, 3, 4, 5, 41, 82, 6, 26, 28, 30, 33, 35, + 37, 39, 7, 25, 8, 9, 10, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 141, 8, 27, 8, 29, 8, 31, 32, 8, 8, 8, 34, + 8, 8, 36, 8, 38, 8, 40, 8, 42, 43, 44, 45, 46, 67, 69, 71, 74, + 76, 78, 80, 47, 66, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 142, 48, 68, 48, 70, 48, 72, 73, 48, 48, 48, + 75, 48, 48, 77, 48, 79, 48, 81, 48, 83, 84, 85, 86, 87, 88, 89, 90, + 109, 111, 113, 116, 118, 120, 122, 91, 108, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 143, 92, 110, 92, 112, 92, 114, 115, 92, + 92, 92, 117, 92, 92, 119, 92, 121, 92, 123, 92, 125, 127, 128, 129, 130, 132, + 135, 133, 134, 136, 138, 139, 140 +}; + +static const char _httpDate_trans_actions[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 2, 2, 0, 3, 3, 0, 4, 4, 0, 5, + 5, 0, 6, 6, 6, 6, 7, 0, 8, 0, 9, 0, 0, 10, 11, 12, 0, + 13, 14, 0, 15, 0, 16, 0, 17, 0, 2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 6, 6, 6, 6, 0, 3, 3, 0, 4, 4, + 0, 5, 5, 0, 0, 0, 0, 7, 0, 8, 0, 9, 0, 0, 10, 11, 12, + 0, 13, 14, 0, 15, 0, 16, 0, 17, 0, 0, 0, 0, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 18, 0, 3, 3, 0, + 4, 4, 0, 5, 5, 0, 0, 0, 0, 7, 0, 8, 0, 9, 0, 0, 10, + 11, 12, 0, 13, 14, 0, 15, 0, 16, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0 +}; + +static const char _httpDate_eof_actions[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 19, 20, 21 +}; + +static NSDate *_parseHTTPDate(const char *buf, size_t bufLen) { + const char *p = buf, *pe = p + bufLen, *eof = pe; + int parsed = 0, cs = 1; + NSDate *date = NULL; + + CFGregorianDate gdate; + memset(&gdate, 0, sizeof(CFGregorianDate)); + + { + int _slen, _trans; + const char *_keys; + const unsigned char *_inds; + if(p == pe) { goto _test_eof; } + _resume: + _keys = _httpDate_trans_keys + (cs << 1); + _inds = _httpDate_indicies + _httpDate_index_offsets[cs]; + _slen = _httpDate_key_spans[cs]; + _trans = _inds[(_slen > 0) && (_keys[0] <= (*p)) && ((*p) <= _keys[1]) ? (*p) - _keys[0] : _slen]; + cs = _httpDate_trans_targs[_trans]; + + if(_httpDate_trans_actions[_trans] == 0) { goto _again; } + + switch(_httpDate_trans_actions[_trans]) { + case 6: gdate.year = gdate.year * 10 + ((*p) - '0'); break; + case 18: gdate.year = gdate.year * 10 + ((*p) - '0'); gdate.year += 1900; break; + case 10: gdate.month = 1; break; + case 9: gdate.month = 2; break; + case 13: gdate.month = 3; break; + case 1: gdate.month = 4; break; + case 14: gdate.month = 5; break; + case 12: gdate.month = 6; break; + case 11: gdate.month = 7; break; + case 7: gdate.month = 8; break; + case 17: gdate.month = 9; break; + case 16: gdate.month = 10; break; + case 15: gdate.month = 11; break; + case 8: gdate.month = 12; break; + case 2: gdate.day = gdate.day * 10 + ((*p) - '0'); break; + case 3: gdate.hour = gdate.hour * 10 + ((*p) - '0'); break; + case 4: gdate.minute = gdate.minute * 10 + ((*p) - '0'); break; + case 5: gdate.second = gdate.second * 10.0 + ((*p) - '0'); break; + } + + _again: + if( cs == 0) { goto _out; } + if(++p != pe) { goto _resume; } + _test_eof: {} + if(p == eof) { + switch(_httpDate_eof_actions[cs]) { + case 19: parsed = 1; break; + case 20: parsed = 1; break; + case 21: parsed = 1; break; + } + } + + _out: {} + } + + static CFTimeZoneRef gmtTimeZone; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ gmtTimeZone = CFTimeZoneCreateWithTimeIntervalFromGMT(NULL, 0.0); }); + + if(parsed == 1) { date = [NSDate dateWithTimeIntervalSinceReferenceDate:CFGregorianDateGetAbsoluteTime(gdate, gmtTimeZone)]; } + + return(date); +} + +/* + * Parse HTTP Date: http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1 + */ +NSDate * RKDateFromHTTPDateString(NSString *httpDate) +{ + char stringBuffer[256]; + size_t stringLength = (size_t)CFStringGetLength((__bridge CFStringRef)httpDate); + const char *cStringPtr = (const char *)CFStringGetCStringPtr((__bridge CFStringRef)httpDate, kCFStringEncodingMacRoman); + if(cStringPtr == NULL) { + CFIndex usedBytes = 0L, convertedCount = 0L; + convertedCount = CFStringGetBytes((__bridge CFStringRef)httpDate, CFRangeMake(0L, (CFIndex)stringLength), kCFStringEncodingUTF8, '?', NO, (UInt8 *)stringBuffer, sizeof(stringBuffer) - 1L, &usedBytes); + if(((size_t)convertedCount != stringLength) || (usedBytes < 0L)) { return(NULL); } + stringBuffer[usedBytes] = '\0'; + cStringPtr = (const char *)stringBuffer; + } + return(_parseHTTPDate(cStringPtr, stringLength)); +} + +static float const kRKURLCacheLastModFraction = 0.1f; // 10% since Last-Modified suggested by RFC2616 section 13.2.4 +static float const kRKURLCacheDefault = 3600.0f; // Default cache expiration delay if none defined (1 hour) + +/* + * This method tries to determine the expiration date based on a response headers dictionary. + */ +NSDate * RKHTTPCacheExpirationDateFromHeadersWithStatusCode(NSDictionary *headers, NSInteger statusCode) +{ + if (statusCode != 200 && statusCode != 203 && statusCode != 300 && statusCode != 301 && statusCode != 302 && statusCode != 307 && statusCode != 410) { + // Uncacheable response status code + return nil; + } + + // Check Pragma: no-cache + NSString *pragma = headers[@"Pragma"]; + if (pragma && [pragma isEqualToString:@"no-cache"]) { + // Uncacheable response + return nil; + } + + // Define "now" based on the request + NSString *date = headers[@"Date"]; + // If no Date: header, define now from local clock + NSDate *now = date ? RKDateFromHTTPDateString(date) : [NSDate date]; + + // Look at info from the Cache-Control: max-age=n header + NSString *cacheControl = [headers[@"Cache-Control"] lowercaseString]; + if (cacheControl) + { + NSRange foundRange = [cacheControl rangeOfString:@"no-store"]; + if (foundRange.length > 0) { + // If no-store, the content cannot be cached at all + // See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.2 + return nil; + } + + foundRange = [cacheControl rangeOfString:@"no-cache"]; + if (foundRange.length > 0) { + // If no-cache, we must revalidate with the origin server + // See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1 + return nil; + } + + NSInteger maxAge; + foundRange = [cacheControl rangeOfString:@"max-age"]; + if (foundRange.length > 0) { + NSScanner *cacheControlScanner = [NSScanner scannerWithString:cacheControl]; + [cacheControlScanner setScanLocation:foundRange.location + foundRange.length]; + [cacheControlScanner scanString:@"=" intoString:nil]; + if ([cacheControlScanner scanInteger:&maxAge]) { + return maxAge > 0 ? [[NSDate alloc] initWithTimeInterval:maxAge sinceDate:now] : nil; + } + } + } + + // If not Cache-Control found, look at the Expires header + NSString *expires = headers[@"Expires"]; + if (expires) { + NSTimeInterval expirationInterval = 0; + NSDate *expirationDate = RKDateFromHTTPDateString(expires); + if (expirationDate) { + expirationInterval = [expirationDate timeIntervalSinceDate:now]; + } + if (expirationInterval > 0) { + // Convert remote expiration date to local expiration date + return [NSDate dateWithTimeIntervalSinceNow:expirationInterval]; + } + else { + // If the Expires header can't be parsed or is expired, do not cache + return nil; + } + } + + if (statusCode == 302 || statusCode == 307) { + // If not explict cache control defined, do not cache those status + return nil; + } + + // If no cache control defined, try some heristic to determine an expiration date + NSString *lastModified = headers[@"Last-Modified"]; + if (lastModified) { + NSTimeInterval age = 0; + NSDate *lastModifiedDate = RKDateFromHTTPDateString(lastModified); + if (lastModifiedDate) { + // Define the age of the document by comparing the Date header with the Last-Modified header + age = [now timeIntervalSinceDate:lastModifiedDate]; + } + return age > 0 ? [NSDate dateWithTimeIntervalSinceNow:(age * kRKURLCacheLastModFraction)] : nil; + } + + // If nothing permitted to define the cache expiration delay nor to restrict its cacheability, use a default cache expiration delay + return [[NSDate alloc] initWithTimeInterval:kRKURLCacheDefault sinceDate:now]; +} + +BOOL RKURLIsRelativeToURL(NSURL *URL, NSURL *baseURL) +{ + return [[URL absoluteString] hasPrefix:[baseURL absoluteString]]; +} + +NSString *RKPathAndQueryStringFromURLRelativeToURL(NSURL *URL, NSURL *baseURL) +{ + if (baseURL) { + if (! RKURLIsRelativeToURL(URL, baseURL)) return nil; + return [[URL absoluteString] substringFromIndex:[[baseURL absoluteString] length]]; + } else { + // NOTE: [URL relativeString] would return the same value as `absoluteString` if URL is not relative to a baseURL + NSString *query = [URL query]; + NSString *pathWithPrevervedTrailingSlash = [CFBridgingRelease(CFURLCopyPath((CFURLRef)URL)) stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + return (query && [query length]) ? [NSString stringWithFormat:@"%@?%@", pathWithPrevervedTrailingSlash, query] : pathWithPrevervedTrailingSlash; + } +} + +NSIndexSet *RKStatusCodesOfResponsesWithOptionalBodies() +{ + NSMutableIndexSet *statusCodes = [NSMutableIndexSet indexSet]; + [statusCodes addIndex:201]; + [statusCodes addIndex:202]; + [statusCodes addIndex:204]; + [statusCodes addIndex:205]; + [statusCodes addIndex:304]; + return statusCodes; +} diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapperOperation.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapperOperation.h new file mode 100644 index 0000000..94489d0 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapperOperation.h @@ -0,0 +1,256 @@ +// +// RKMapperOperation.h +// RestKit +// +// Created by Blake Watters on 5/6/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> +#import "RKObjectMapping.h" +#import "RKMappingOperation.h" +#import "RKMappingResult.h" +#import "RKMappingOperationDataSource.h" +#import "RKErrors.h" + +@protocol RKMapperOperationDelegate; + +/** + `RKMapperOperation` is an `NSOperation` subclass that implements object mapping for opaque object representations. Given a dictionary or an array of dictionaries that represent objects and a dictionary describing how to map the representations, the mapper will transform the source representations into `NSObject` or `NSManagedObject` instances. Mapper operations are used to map object representations from Foundation object representations, such as those deserialized from a JSON or XML document or loaded from a file. Not all the mappings specified in the mappings dictionary are required to match content in the source object for the operation to succeed. However, if none of the mappable key paths in the mappings dictionary match the source object then the operation will fail and the `error` property will be set to an `NSError` object in the `RKErrorDomain` domain with an error code value of `RKMappingErrorNotFound`. + + `RKMapperOperation` does not actually perform any mapping work. Instead, it instantiates and starts `RKMappingOperation` objects to process the mappable object representations it encounters. + + `RKMapperOperation` is a non-concurrent operation. Execution will occur synchronously on the calling thread unless the operation is enqueued onto an `NSOperationQueue`. + + ## Mappings Dictionary + + The mappings dictionary describes how to object map the source object. The keys of the dictionary are key paths into the `representation` and the values are `RKMapping` objects describing how to map the representations at the corresponding key path. This dictionary based approach enables a single document to contain an arbitrary number of object representations that can be mapped independently. Consider the following example JSON structure: + + { "tags": [ "hacking", "phreaking" ], "authors": [ "Captain Crunch", "Emmanuel Goldstein" ], "magazine": { "title": "2600 The Hacker Quarterly" } } + + Each key in the document could be mapped independently by providing a mapping for the key paths: + + RKObjectMapping *tagMapping = [RKObjectMapping mappingForClass:[Tag class]]; + RKObjectMapping *authorMapping = [RKObjectMapping mappingForClass:[Author class]]; + RKObjectMapping *magazineMapping = [RKObjectMapping mappingForClass:[Magazine class]]; + NSDictionary *mappingsDictionary = @{ @"tag": tagMapping, @"author": authorMapping, @"magazine": magazine }; + + Note that the keys of the dictionary are **key paths**. Deeply nested content can be mapped by specifying the full key path as the key of the mappings dictionary. + + ### Mapping the Root Object Representation + + A mapping set for the key `[NSNull null]` value has special significance to the mapper operation. When a mapping is encountered with the a null key, the entire `representation` is processed using the given mapping. This provides support for mapping content that does not have an outer nesting attribute. + + Note that it is possible to map the same representation with multiple mappings, including a combination of a root key mapping and nested keypaths. + + ## Data Source + + The data source is used to instantiate new objects or find existing objects to be updated during the mapping process. The object set as the `mappingOperationDataSource` will be set as the `dataSource` for the `RKMappingOperation` objects created by the mapper. + + ## Target Object + + If a `targetObject` is configured on the mapper operation, all mapping work on the `representation` will target the specified object. For transient `NSObject` mappings, this ensures that the properties of an existing object are updated rather than an new object being created for the mapped representation. If an array of representations is being processed and a `targetObject` is provided, it must be a mutable collection object else an exception will be raised. + + ## Metadata Mapping + + The `RKMapperOperation` class provides support for metadata mapping provided to the operation via the `mappingMetadata` property. This dictionary is made available to all `RKMappingOperation` objects executed by the receiver to process the representation being mapped. In addition to any user supplied metadata, the mapper operation makes the following metadata key paths available for mapping: + + 1. `@metadata.mapping.rootKeyPath` - An object specifying the root key path at which the current representation is nested within the source representation. This will correspond to a key in the `mappingsDictionary` and is typically an `NSString`, but can be `[NSNull null]` if the representation being mapped is at the root. + 1. `@metadata.mapping.collectionIndex` - An `NSNumber` object specifying the index of the current object within a collection being mapped. This key is only available if the current representation exists within a collection. + + Please refer to the documentation accompanying `RKMappingOperation` for more details on metadata mapping. + + ## Core Data + + `RKMapperOperation` supports mapping to Core Data target entities. To do so, it must be configured with an `RKManagedObjectMappingOperationDataSource` object as the data source. + */ +@interface RKMapperOperation : NSOperation + +///-------------------------------------- +/// @name Initializing a Mapper Operation +///-------------------------------------- + +/** + Initializes the operation with a source object and a mappings dictionary. + + @param representation An `NSDictionary` or `NSArray` of `NSDictionary` object representations to be mapped into local domain objects. + @param mappingsDictionary An `NSDictionary` wherein the keys are mappable key paths in `object` and the values are `RKMapping` objects specifying how the representations at its key path are to be mapped. + @return The receiver, initialized with the given object and and dictionary of key paths to mappings. + */ +- (instancetype)initWithRepresentation:(id)representation mappingsDictionary:(NSDictionary *)mappingsDictionary NS_DESIGNATED_INITIALIZER; + +///------------------------------------------ +/// @name Accessing Mapping Result and Errors +///------------------------------------------ + +/** + The error, if any, that occurred during the mapping process. + */ +@property (nonatomic, strong, readonly) NSError *error; + +/** + The result of the mapping process. A `nil` value indicates that no mappable object representations were found and no mapping was performed. + */ +@property (nonatomic, strong, readonly) RKMappingResult *mappingResult; + +/** + Returns a dictionary containing information about the mappings applied during the execution of the operation. The keys of the dictionary are keyPaths into the `mappingResult` for values that were mapped and the values are the corresponding `RKPropertyMapping` objects used to perform the mapping. + */ +@property (nonatomic, readonly) NSDictionary *mappingInfo; + +///------------------------------------- +/// @name Managing Mapping Configuration +///------------------------------------- + +/** + The representation of one or more objects against which the mapping is performed. + + Either an `NSDictionary` or an `NSArray` of `NSDictionary` objects. + */ +@property (nonatomic, strong, readonly) id representation; + +/** + A dictionary of key paths to `RKMapping` objects specifying how object representations in the `representation` are to be mapped. + + Please see the above discussion for in-depth details about the mappings dictionary. + */ +@property (nonatomic, strong, readonly) NSDictionary *mappingsDictionary; + +/** + The target object of the mapper. When configured, all object mapping will target the specified object. + + Please see the above discussion for details about target objects. + */ +@property (nonatomic, weak) id targetObject; + +/** + The data source for the underlying `RKMappingOperation` objects that perform the mapping work configured by the mapper. + */ +@property (nonatomic, strong) id<RKMappingOperationDataSource> mappingOperationDataSource; + +/** + The delegate for the mapper operation. + */ +@property (nonatomic, weak) id<RKMapperOperationDelegate> delegate; + +/** + A dictionary of metadata that is available for mappping by any mapping operation started by the receiver. + */ +@property (nonatomic, copy) NSDictionary *metadata; + +///------------------------------ +/// @name Executing the Operation +///------------------------------ + +/** + Executes the mapper operation to completion. + + @param error A pointer to an `NSError` object to set in the event an error occurs during execution. + @return A Boolean value that indicates if the operation completed successfully. + */ +- (BOOL)execute:(NSError **)error; + +@end + +///-------------------------------- +/// @name Mapper Operation Delegate +///-------------------------------- + +/** + Objects wishing to act as the delegate for `RKMapperOperation` objects must adopt the `RKMapperOperationDelegate` protocol. The protocol provides a rich set of optional callback methods that provides insight into the lifecycle of a mapper operation. + */ +@protocol RKMapperOperationDelegate <NSObject> + +@optional + +///----------------------------- +/// @name Tracking Mapper Status +///----------------------------- + +/** + Tells the delegate that the mapper operation is about to start mapping. + + @param mapper The mapper operation that is about to start mapping. + */ +- (void)mapperWillStartMapping:(RKMapperOperation *)mapper; + +/** + Tells the delegate that the mapper has finished. + + @param mapper The mapper operation that has finished mapping. + */ +- (void)mapperDidFinishMapping:(RKMapperOperation *)mapper; + +/** + Tells the delegate that the mapper has been cancelled. + + @param mapper The mapper operation that was cancelled. + */ +- (void)mapperDidCancelMapping:(RKMapperOperation *)mapper; + +///------------------------------- +/// @name Key Path Search Messages +///------------------------------- + +/** + Tells the delegate that the mapper has found one or more mappable object representations at a key path specified in the `mappingsDictionary`. + + @param mapper The mapper operation performing the mapping. + @param dictionaryOrArrayOfDictionaries The `NSDictictionary` or `NSArray` of `NSDictionary` object representations that was found at the `keyPath`. + @param keyPath The key path that the representation was read from in the `representation`. If the `keyPath` was `[NSNull null]` in the `mappingsDictionary`, it will be given as `nil` to the delegate. + */ +- (void)mapper:(RKMapperOperation *)mapper didFindRepresentationOrArrayOfRepresentations:(id)dictionaryOrArrayOfDictionaries atKeyPath:(NSString *)keyPath; + +/** + Tells the delegate that the mapper failed to find any mappable object representations at a key path specified in the `mappingsDictionary`. + + @param mapper The mapper operation performing the mapping. + @param keyPath The key path that was searched for a mappable object representation. + */ +- (void)mapper:(RKMapperOperation *)mapper didNotFindRepresentationOrArrayOfRepresentationsAtKeyPath:(NSString *)keyPath; + +///---------------------------------------------- +/// @name Tracking Child Mapping Operation Status +///---------------------------------------------- + +/** + Tells the delegate that the mapper is about to start a mapping operation to map a representation found in the `representation`. + + @param mapper The mapper operation performing the mapping. + @param mappingOperation The mapping operation that is about to be started. + @param keyPath The key path that was mapped. A `nil` key path indicates that the mapping matched the entire `representation`. + */ +- (void)mapper:(RKMapperOperation *)mapper willStartMappingOperation:(RKMappingOperation *)mappingOperation forKeyPath:(NSString *)keyPath; + +/** + Tells the delegate that a mapping operation that was started by the mapper has finished executing. + + @param mapper The mapper operation performing the mapping. + @param mappingOperation The mapping operation that has finished. + @param keyPath The key path that was mapped. A `nil` key path indicates that the mapping matched the entire `representation`. + */ +- (void)mapper:(RKMapperOperation *)mapper didFinishMappingOperation:(RKMappingOperation *)mappingOperation forKeyPath:(NSString *)keyPath; + +/** + Tells the delegate that a mapping operation that was started by the mapper has failed with an error. + + @param mapper The mapper operation performing the mapping. + @param mappingOperation The mapping operation that has failed. + @param keyPath The key path that was mapped. A `nil` key path indicates that the mapping matched the entire `representation`. + @param error The error that occurred during the execution of the mapping operation. + */ +- (void)mapper:(RKMapperOperation *)mapper didFailMappingOperation:(RKMappingOperation *)mappingOperation forKeyPath:(NSString *)keyPath withError:(NSError *)error; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapperOperation.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapperOperation.m new file mode 100644 index 0000000..db0cdcb --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapperOperation.m @@ -0,0 +1,446 @@ +// +// RKMapperOperation.m +// RestKit +// +// Created by Blake Watters on 5/6/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKMapperOperation.h" +#import "RKMapperOperation_Private.h" +#import "RKObjectMapping.h" +#import "RKObjectMappingOperationDataSource.h" +#import "RKMappingErrors.h" +#import "RKDynamicMapping.h" +#import "RKLog.h" +#import "RKDictionaryUtilities.h" + +NSString * const RKMappingErrorKeyPathErrorKey = @"keyPath"; + +// Set Logging Component +#undef RKLogComponent +#define RKLogComponent RKlcl_cRestKitObjectMapping + +static NSString *RKDelegateKeyPathFromKeyPath(NSString *keyPath) +{ + return ([keyPath isEqual:[NSNull null]]) ? nil : keyPath; +} + + +static NSString *RKFailureReasonErrorStringForMappingNotFoundError(id representation, NSDictionary *mappingsDictionary) +{ + NSMutableString *failureReason = [NSMutableString string]; + [failureReason appendFormat:@"The mapping operation was unable to find any nested object representations at the key paths searched: %@", [[[mappingsDictionary allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)] componentsJoinedByString:@", "]]; + if ([representation respondsToSelector:@selector(allKeys)]) { + [failureReason appendFormat:@"\nThe representation inputted to the mapper was found to contain nested object representations at the following key paths: %@", [[[representation allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)] componentsJoinedByString:@", "]]; + } + [failureReason appendFormat:@"\nThis likely indicates that you have misconfigured the key paths for your mappings."]; + return failureReason; +} + +// Duplicating interface from `RKMappingOperation.m` +@interface RKMappingSourceObject : NSObject +- (instancetype)initWithObject:(id)object parentObject:(id)parentObject rootObject:(id)rootObject metadata:(NSArray *)metadata; +@end + +@interface RKMappingOperation (Private) +@property (nonatomic, readwrite, getter=isNewDestinationObject) BOOL newDestinationObject; +@end + +@interface RKMapperMetadata : NSObject +@property NSUInteger collectionIndex; +@property NSString *rootKeyPath; +@end + +@implementation RKMapperMetadata +- (id)valueForUndefinedKey:(NSString *)key { return nil; } +@end + +@interface RKMapperOperation () + +@property (nonatomic, strong, readwrite) NSError *error; +@property (nonatomic, strong, readwrite) RKMappingResult *mappingResult; +@property (nonatomic, strong) NSMutableArray *mappingErrors; +@property (nonatomic, strong) id representation; +@property (nonatomic, strong, readwrite) NSDictionary *mappingsDictionary; +@property (nonatomic, strong) NSMutableDictionary *mutableMappingInfo; +@end + +@implementation RKMapperOperation + +- (instancetype)initWithRepresentation:(id)representation mappingsDictionary:(NSDictionary *)mappingsDictionary; +{ + self = [super init]; + if (self) { + self.representation = representation; + self.mappingsDictionary = mappingsDictionary; + self.mappingOperationDataSource = [RKObjectMappingOperationDataSource new]; + } + + return self; +} + +- (NSDictionary *)mappingInfo +{ + return self.mutableMappingInfo; +} + +#pragma mark - Errors + +- (NSArray *)errors +{ + return [NSArray arrayWithArray:self.mappingErrors]; +} + +- (void)addError:(NSError *)error +{ + NSAssert(error, @"Cannot add a nil error"); + [self.mappingErrors addObject:error]; +} + +- (void)addErrorWithCode:(RKMappingErrorCode)errorCode message:(NSString *)errorMessage keyPath:(NSString *)keyPath userInfo:(NSDictionary *)otherInfo +{ + NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys: + errorMessage, NSLocalizedDescriptionKey, + keyPath ? keyPath : [NSNull null], RKMappingErrorKeyPathErrorKey, + nil]; + [userInfo addEntriesFromDictionary:otherInfo]; + NSError *error = [NSError errorWithDomain:RKErrorDomain code:errorCode userInfo:userInfo]; + [self addError:error]; + self.error = error; +} + +- (void)addErrorForUnmappableKeyPath:(NSString *)keyPath +{ + NSString *errorMessage = [NSString stringWithFormat:@"Could not find an object mapping for keyPath: '%@'", keyPath]; + [self addErrorWithCode:RKMappingErrorNotFound message:errorMessage keyPath:keyPath userInfo:nil]; +} + +- (BOOL)isNullCollection:(id)object +{ + // The purpose of this method is to guard against the case where we perform valueForKeyPath: on an array + // and it returns NSNull for each element in the array. + + // We consider an empty array/dictionary mappable, but a collection that contains only NSNull + // values is unmappable + if ([object respondsToSelector:@selector(objectForKey:)]) { + return NO; + } + + if ([object respondsToSelector:@selector(countForObject:)] && [object count] > 0) { + if ([object countForObject:[NSNull null]] == [object count]) { + RKLogDebug(@"Found a collection containing only `NSNull` values, considering the collection unmappable..."); + return YES; + } + } + + return NO; +} + +#pragma mark - Mapping Primitives + +// Maps a singular object representation +- (id)mapRepresentation:(id)representation atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping +{ + NSAssert([representation respondsToSelector:@selector(setValue:forKeyPath:)], @"Expected self.object to be KVC compliant"); + id destinationObject = nil; + BOOL isNewObject = NO; + + if (self.targetObject) { + destinationObject = self.targetObject; + RKObjectMapping *objectMapping = nil; + if ([mapping isKindOfClass:[RKDynamicMapping class]]) { + objectMapping = [(RKDynamicMapping *)mapping objectMappingForRepresentation:representation]; + } else if ([mapping isKindOfClass:[RKObjectMapping class]]) { + objectMapping = (RKObjectMapping *)mapping; + } else { + NSAssert(objectMapping, @"Encountered unknown mapping type '%@'", NSStringFromClass([mapping class])); + } + + if (NO == [[self.targetObject class] isSubclassOfClass:objectMapping.objectClass]) { + if ([_mappingsDictionary count] == 1) { + NSString *errorMessage = [NSString stringWithFormat: + @"Expected an object mapping for class of type '%@', provider returned one for '%@'", + NSStringFromClass([self.targetObject class]), NSStringFromClass(objectMapping.objectClass)]; + [self addErrorWithCode:RKMappingErrorTypeMismatch message:errorMessage keyPath:keyPath userInfo:nil]; + return nil; + } else { + // There is more than one mapping present. We are likely mapping secondary key paths to new objects + destinationObject = [self objectForRepresentation:representation withMapping:mapping]; + isNewObject = YES; + } + } + } else { + destinationObject = [self objectForRepresentation:representation withMapping:mapping]; + isNewObject = YES; + } + + if (mapping && destinationObject) { + NSArray *metadataList = [NSArray arrayWithObjects:@{ @"mapping": @{ @"rootKeyPath": keyPath } }, self.metadata, nil]; + BOOL success = [self mapRepresentation:representation toObject:destinationObject isNew:isNewObject atKeyPath:keyPath usingMapping:mapping metadataList:metadataList]; + if (success) { + return destinationObject; + } + } else { + // Attempted to map an object but couldn't find a mapping for the keyPath + [self addErrorForUnmappableKeyPath:keyPath]; + return nil; + } + + return nil; +} + +// Map a collection of object representations +- (NSArray *)mapRepresentations:(id)representations atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping +{ + NSAssert(representations != nil, @"Cannot map without an collection of mappable objects"); + NSAssert(mapping != nil, @"Cannot map without a mapping to consult"); + + NSArray *objectsToMap = representations; + if (mapping.forceCollectionMapping) { + // If we have forced mapping of a dictionary, map each subdictionary + if ([representations isKindOfClass:[NSDictionary class]]) { + RKLogDebug(@"Collection mapping forced for NSDictionary, mapping each key/value independently..."); + objectsToMap = [NSMutableArray arrayWithCapacity:[representations count]]; + for (id key in representations) { + NSDictionary *dictionaryToMap = @{key: [representations valueForKey:key]}; + [(NSMutableArray *)objectsToMap addObject:dictionaryToMap]; + } + } else { + RKLogWarning(@"Collection mapping forced but representations is of type '%@' rather than NSDictionary", NSStringFromClass([representations class])); + } + } + + RKMapperMetadata *mappingData = [RKMapperMetadata new]; + mappingData.rootKeyPath = keyPath; + NSDictionary *metadata = @{ @"mapping": mappingData }; + NSArray *metadataList = [NSArray arrayWithObjects:metadata, self.metadata, nil]; + NSMutableArray *mappedObjects = [NSMutableArray arrayWithCapacity:[representations count]]; + [objectsToMap enumerateObjectsUsingBlock:^(id mappableObject, NSUInteger index, BOOL *stop) { + id destinationObject = [self objectForRepresentation:mappableObject withMapping:mapping]; + if (destinationObject) { + mappingData.collectionIndex = index; + BOOL success = [self mapRepresentation:mappableObject toObject:destinationObject isNew:YES atKeyPath:keyPath usingMapping:mapping metadataList:metadataList]; + if (success) [mappedObjects addObject:destinationObject]; + } + *stop = [self isCancelled]; + }]; + + return mappedObjects; +} + +// The workhorse of this entire process. Emits object loading operations +- (BOOL)mapRepresentation:(id)mappableObject toObject:(id)destinationObject isNew:(BOOL)newDestination atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping metadataList:(NSArray *)metadataList +{ + NSAssert(destinationObject != nil, @"Cannot map without a target object to assign the results to"); + NSAssert(mappableObject != nil, @"Cannot map without a collection of attributes"); + NSAssert(mapping != nil, @"Cannot map without an mapping"); + + RKLogDebug(@"Asked to map source object %@ with mapping %@", mappableObject, mapping); + + RKMappingOperation *mappingOperation = [[RKMappingOperation alloc] initWithSourceObject:mappableObject destinationObject:destinationObject mapping:mapping metadataList:metadataList]; + mappingOperation.dataSource = self.mappingOperationDataSource; + mappingOperation.newDestinationObject = newDestination; + if ([self.delegate respondsToSelector:@selector(mapper:willStartMappingOperation:forKeyPath:)]) { + [self.delegate mapper:self willStartMappingOperation:mappingOperation forKeyPath:RKDelegateKeyPathFromKeyPath(keyPath)]; + } + [mappingOperation start]; + if (mappingOperation.error) { + if ([self.delegate respondsToSelector:@selector(mapper:didFailMappingOperation:forKeyPath:withError:)]) { + [self.delegate mapper:self didFailMappingOperation:mappingOperation forKeyPath:RKDelegateKeyPathFromKeyPath(keyPath) withError:mappingOperation.error]; + } + [self addError:mappingOperation.error]; + + return NO; + } else { + if ([self.delegate respondsToSelector:@selector(mapper:didFinishMappingOperation:forKeyPath:)]) { + [self.delegate mapper:self didFinishMappingOperation:mappingOperation forKeyPath:RKDelegateKeyPathFromKeyPath(keyPath)]; + } + + if (mappingOperation.mappingInfo) { + id infoKey = keyPath ?: [NSNull null]; + NSMutableArray *infoForKeyPath = (self.mutableMappingInfo)[infoKey]; + if (infoForKeyPath) { + [infoForKeyPath addObject:mappingOperation.mappingInfo]; + } else { + infoForKeyPath = [NSMutableArray arrayWithObject:mappingOperation.mappingInfo]; + [self.mutableMappingInfo setValue:infoForKeyPath forKey:infoKey]; + } + } + + return YES; + } +} + +- (id)objectForRepresentation:(id)representation withMapping:(RKMapping *)mapping +{ + NSAssert([mapping isKindOfClass:[RKMapping class]], @"Expected an RKMapping object"); + NSAssert(self.mappingOperationDataSource, @"Cannot find or instantiate objects without a data source"); + + RKObjectMapping *objectMapping = nil; + if ([mapping isKindOfClass:[RKDynamicMapping class]]) { + objectMapping = [(RKDynamicMapping *)mapping objectMappingForRepresentation:representation]; + if (! objectMapping) { + RKLogDebug(@"Mapping %@ declined mapping for representation %@: returned nil objectMapping", mapping, representation); + } + } else if ([mapping isKindOfClass:[RKObjectMapping class]]) { + objectMapping = (RKObjectMapping *)mapping; + } else { + NSAssert(objectMapping, @"Encountered unknown mapping type '%@'", NSStringFromClass([mapping class])); + } + + if (objectMapping) { + id object = nil; + if ([self.mappingOperationDataSource respondsToSelector:@selector(mappingOperation:targetObjectForMapping:inRelationship:)]) + { + object = [self.mappingOperationDataSource mappingOperation:nil targetObjectForMapping:objectMapping inRelationship:nil]; + } + if (object == nil) + { + // Ensure that we are working with a dictionary when we call down into the data source + NSDictionary *representationDictionary = [representation isKindOfClass:[NSDictionary class]] ? representation : @{ [NSNull null]: representation }; + id mappingSourceObject = [[RKMappingSourceObject alloc] initWithObject:representationDictionary parentObject:nil rootObject:representation metadata:self.metadata? @[self.metadata] : nil]; + object = [self.mappingOperationDataSource mappingOperation:nil targetObjectForRepresentation:mappingSourceObject withMapping:objectMapping inRelationship:nil]; + } + return object; + } + + return nil; +} + +- (id)mapRepresentationOrRepresentations:(id)mappableValue atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping +{ + id mappingResult; + if (mapping.forceCollectionMapping || [mappableValue isKindOfClass:[NSArray class]] || [mappableValue isKindOfClass:[NSSet class]]) { + RKLogDebug(@"Found mappable collection at keyPath '%@': %@", keyPath, mappableValue); + mappingResult = [self mapRepresentations:mappableValue atKeyPath:keyPath usingMapping:mapping]; + } else { + RKLogDebug(@"Found mappable data at keyPath '%@': %@", keyPath, mappableValue); + mappingResult = [self mapRepresentation:mappableValue atKeyPath:keyPath usingMapping:mapping]; + } + + return mappingResult; +} + +#pragma mark - + +- (NSMutableDictionary *)mapSourceRepresentationWithMappingsDictionary:(NSDictionary *)mappingsByKeyPath +{ + BOOL foundMappable = NO; + NSMutableDictionary *results = [NSMutableDictionary dictionary]; + for (NSString *keyPath in mappingsByKeyPath) { + if ([self isCancelled]) return nil; + + @autoreleasepool { + id mappingResult = nil; + id nestedRepresentation = nil; + + RKLogTrace(@"Examining keyPath '%@' for mappable content...", keyPath); + + if ([keyPath isEqual:[NSNull null]] || [keyPath isEqualToString:@""]) { + nestedRepresentation = self.representation; + } else { + nestedRepresentation = [self.representation valueForKeyPath:keyPath]; + } + + // Not found... + if (nestedRepresentation == nil || nestedRepresentation == [NSNull null] || [self isNullCollection:nestedRepresentation]) { + RKLogDebug(@"Found unmappable value at keyPath: %@", keyPath); + + if ([self.delegate respondsToSelector:@selector(mapper:didNotFindRepresentationOrArrayOfRepresentationsAtKeyPath:)]) { + [self.delegate mapper:self didNotFindRepresentationOrArrayOfRepresentationsAtKeyPath:RKDelegateKeyPathFromKeyPath(keyPath)]; + } + + continue; + } + + // Found something to map + foundMappable = YES; + RKMapping *mapping = mappingsByKeyPath[keyPath]; + if ([self.delegate respondsToSelector:@selector(mapper:didFindRepresentationOrArrayOfRepresentations:atKeyPath:)]) { + [self.delegate mapper:self didFindRepresentationOrArrayOfRepresentations:nestedRepresentation atKeyPath:RKDelegateKeyPathFromKeyPath(keyPath)]; + } + + mappingResult = [self mapRepresentationOrRepresentations:nestedRepresentation atKeyPath:keyPath usingMapping:mapping]; + + if (mappingResult) { + results[keyPath] = mappingResult; + } + } + } + + if (NO == foundMappable) return nil; + return results; +} + +- (void)cancel +{ + [super cancel]; + RKLogDebug(@"%@:%p received `cancel` message: cancelling mapping...", [self class], self); + + if ([self.delegate respondsToSelector:@selector(mapperDidCancelMapping:)]) { + [self.delegate mapperDidCancelMapping:self]; + } +} + +- (void)main +{ + NSAssert(self.representation != nil, @"Cannot perform object mapping without a source object to map from"); + NSAssert(self.mappingsDictionary, @"Cannot perform object mapping without a dictionary of mappings"); + + if ([self isCancelled]) return; + self.mutableMappingInfo = [NSMutableDictionary dictionary]; + self.mappingErrors = [NSMutableArray new]; + + RKLogDebug(@"Executing mapping operation for representation: %@\n and targetObject: %@", self.representation, self.targetObject); + + if ([self.delegate respondsToSelector:@selector(mapperWillStartMapping:)]) { + [self.delegate mapperWillStartMapping:self]; + } + + // Perform the mapping + BOOL foundMappable = NO; + NSMutableDictionary *results = [self mapSourceRepresentationWithMappingsDictionary:self.mappingsDictionary]; + if ([self isCancelled]) return; + foundMappable = (results != nil); + + // If we found nothing eligible for mapping in the content, add an unmappable key path error and fail mapping + // If the content is empty, we don't consider it an error + BOOL isEmpty = [self.representation respondsToSelector:@selector(count)] && ([self.representation count] == 0); + if (foundMappable == NO && !isEmpty) { + NSMutableDictionary *userInfo = [@{ NSLocalizedDescriptionKey: NSLocalizedString(@"No mappable object representations were found at the key paths searched.", nil), + NSLocalizedFailureReasonErrorKey: RKFailureReasonErrorStringForMappingNotFoundError(self.representation, self.mappingsDictionary), + RKMappingErrorKeyPathErrorKey: [NSNull null], + RKDetailedErrorsKey: self.errors} mutableCopy]; + NSError *compositeError = [[NSError alloc] initWithDomain:RKErrorDomain code:RKMappingErrorNotFound userInfo:userInfo]; + self.error = compositeError; + } else { + if (results) self.mappingResult = [[RKMappingResult alloc] initWithDictionary:results]; + } + + RKLogDebug(@"Finished performing object mapping. Results: %@", results); + if ([self.delegate respondsToSelector:@selector(mapperDidFinishMapping:)]) { + [self.delegate mapperDidFinishMapping:self]; + } +} + +- (BOOL)execute:(NSError **)error +{ + [self start]; + if (error) *error = self.error; + return self.mappingResult != nil; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapperOperation_Private.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapperOperation_Private.h new file mode 100644 index 0000000..0804dcf --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapperOperation_Private.h @@ -0,0 +1,28 @@ +// +// RKMapperOperation_Private.h +// RestKit +// +// Created by Blake Watters on 5/9/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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. +// + +@interface RKMapperOperation (Private) + +- (id)mapRepresentation:(id)mappableObject atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping; +- (NSArray *)mapRepresentations:(NSArray *)mappableObjects atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping; +- (BOOL)mapRepresentation:(id)mappableObject toObject:(id)destinationObject isNew:(BOOL)isNew atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping metadataList:(NSArray *)metadata; +- (id)objectForRepresentation:(id)representation withMapping:(RKMapping *)mapping; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapping.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapping.h new file mode 100644 index 0000000..b3a969d --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapping.h @@ -0,0 +1,62 @@ +// +// RKMapping.h +// RestKit +// +// Created by Blake Watters on 7/31/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +/** + `RKMapping` is an abstract class for objects defining RestKit object mappings. Its interface is common to all object mapping classes, including its concrete subclasses `RKObjectMapping` and `RKDynamicMapping`. + */ +@interface RKMapping : NSObject + +///--------------------------------- +/// @name Forcing Collection Mapping +///--------------------------------- + +/** + Forces the mapper to treat the mapped keyPath as a collection even if it does not return an array or a set of objects. This permits mapping where a dictionary identifies a collection of objects. + + When enabled, each key/value pair in the resolved dictionary will be mapped as a separate entity. This is useful when you have a JSON structure similar to: + + { "users": { + "blake": { "id": 1234, "email": "blake@restkit.org" }, + "rachit": { "id": 5678, "email": "rachit@restkit.org" } + } + } + + By enabling `forceCollectionMapping`, RestKit will map "blake" => attributes and "rachit" => attributes as independent objects. This can be combined with `mapKeyOfNestedDictionaryToAttribute:` to properly map these sorts of structures. + + @default `NO` + @see `mapKeyOfNestedDictionaryToAttribute` + */ +@property (nonatomic, assign) BOOL forceCollectionMapping; + + +///------------------------- +/// @name Comparing Mappings +///------------------------- + +/** + Returns `YES` if the receiver and the specified mapping are considered equivalent. + + **NOTE**: Must be implemented in subclass. + */ +- (BOOL)isEqualToMapping:(RKMapping *)otherMapping; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapping.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapping.m new file mode 100644 index 0000000..9f60f3b --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMapping.m @@ -0,0 +1,22 @@ +// +// RKMapping.m +// RestKit +// +// Created by Blake Watters on 2/15/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// + +#import "RKMapping.h" + +@implementation RKMapping + +@synthesize forceCollectionMapping; + +- (BOOL)isEqualToMapping:(RKMapping *)otherMapping +{ + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)] + userInfo:nil]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingErrors.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingErrors.h new file mode 100644 index 0000000..794e703 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingErrors.h @@ -0,0 +1,37 @@ +// +// RKMappingErrors.h +// RestKit +// +// Created by Blake Watters on 5/31/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKErrors.h" + +typedef UInt32 RKMappingErrorCode; +enum { + RKMappingErrorNotFound = 1001, // No mapping found + RKMappingErrorTypeMismatch = 1002, // Target class and object mapping are in disagreement + RKMappingErrorUnmappableRepresentation = 1003, // No values were found at the key paths of any attribute or relationship mappings in the given representation + RKMappingErrorFromMappingResult = 1004, // The error was returned from the mapping result + RKMappingErrorValidationFailure = 1005, // Generic error code for use when constructing validation errors + RKMappingErrorUnableToDetermineMapping = 1006, // The mapping operation was unable to obtain a concrete object mapping from a given dynamic mapping + RKMappingErrorNilDestinationObject = 1007, // The mapping operation failed due to a nil destination object. + RKMappingErrorNilManagedObjectCache = 1008, // A managed object cache is required to satisfy the mapping, but none was given. + RKMappingErrorMappingDeclined = 1009, // Mapping was declined by a callback. + RKMappingErrorInvalidAssignmentPolicy = 1010, // The assignment policy for the relationship is invalid. +}; + +extern NSString * const RKMappingErrorKeyPathErrorKey; // The key path the error is associated with diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingOperation.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingOperation.h new file mode 100644 index 0000000..7c5d782 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingOperation.h @@ -0,0 +1,390 @@ +// +// RKMappingOperation.h +// RestKit +// +// Created by Blake Watters on 4/30/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKObjectMapping.h" +#import "RKAttributeMapping.h" + +@class RKMappingOperation, RKDynamicMapping, RKConnectionDescription, RKMappingInfo; +@protocol RKMappingOperationDataSource; + +/** + Objects acting as the delegate for `RKMappingOperation` objects must adopt the `RKMappingOperationDelegate` protocol. These methods enable the delegate to be notified of events such as the application of attribute and relationship mappings during a mapping operation. + */ +@protocol RKMappingOperationDelegate <NSObject> + +///--------------------------------------- +/// @name Tracking Property Mapping Events +///--------------------------------------- + +@optional + +/** + Tells the delegate that an attribute or relationship mapping was found for a given key path within the data being mapped. + + @param operation The object mapping operation being performed. + @param keyPath The key path in the source object for which the mapping is to be applied. + @param value The value that was found at the given key path in the source object representation. + @param propertyMapping The `RKAttributeMapping` or `RKRelationshipMapping` for which the mappable value was found within the source object representation. + */ +- (void)mappingOperation:(RKMappingOperation *)operation didFindValue:(id)value forKeyPath:(NSString *)keyPath mapping:(RKPropertyMapping *)propertyMapping; + +/** + Tells the delegate that no attribute or relationships mapping was found for a given key path within the data being mapped. + + @param operation The object mapping operation being performed. + @param keyPath The key path in the source object for which no mappable value was found. + @param propertyMapping The `RKAttributeMapping` or `RKRelationshipMapping` for which no mappable value could be found within the source object representation. + */ +- (void)mappingOperation:(RKMappingOperation *)operation didNotFindValueForKeyPath:(NSString *)keyPath mapping:(RKPropertyMapping *)propertyMapping; + +/** + Asks the delegate if the mapping operation should set a value for a given key path with an attribute or relationship mapping. This method is invoked before the value is set. If the delegate does not implement this method, then the mapping operation will determine if the value should be set by comparing the current property value with the new property value. + + @param operation The object mapping operation being performed. + @param value A new value that was set on the destination object. + @param keyPath The key path in the destination object for which a new value has been set. + @param propertyMapping The `RKAttributeMapping` or `RKRelationshipMapping` found for the key path. + @return `YES` if the operation should set the proposed value for the key path, else `NO`. + */ +- (BOOL)mappingOperation:(RKMappingOperation *)operation shouldSetValue:(id)value forKeyPath:(NSString *)keyPath usingMapping:(RKPropertyMapping *)propertyMapping; + +/** + Tells the delegate that the mapping operation has set a value for a given key path with an attribute or relationship mapping. + + @param operation The object mapping operation being performed. + @param value A new value that was set on the destination object. + @param keyPath The key path in the destination object for which a new value has been set. + @param propertyMapping The `RKAttributeMapping` or `RKRelationshipMapping` found for the key path. + */ +- (void)mappingOperation:(RKMappingOperation *)operation didSetValue:(id)value forKeyPath:(NSString *)keyPath usingMapping:(RKPropertyMapping *)propertyMapping; + +/** + Tells the delegate that the mapping operation has declined to set a value for a given key path because the value has not changed. + + @param operation The object mapping operation being performed. + @param value A unchanged value for the key path in the destination object. + @param keyPath The key path in the destination object for which a unchanged value was not set. + @param propertyMapping The `RKAttributeMapping` or `RKRelationshipMapping` found for the key path. + */ +- (void)mappingOperation:(RKMappingOperation *)operation didNotSetUnchangedValue:(id)value forKeyPath:(NSString *)keyPath usingMapping:(RKPropertyMapping *)propertyMapping; + +/** + Tells the delegate that the mapping operation has failed due to an error. + + @param operation The object mapping operation that has failed. + @param error An error object indicating the reason for the failure. + */ +- (void)mappingOperation:(RKMappingOperation *)operation didFailWithError:(NSError *)error; + +///----------------------------------------- +/// @name Tracking Dynamic Mapping Selection +///----------------------------------------- + +/** + Tells the delegate that the mapping operation has selected a concrete object mapping with which to map the source object. + + Only sent if the receiver was initialized with an instance of `RKDynamicMapping` as the mapping. + + @param operation The mapping operation. + @param objectMapping The concrete object mapping with which to perform the mapping. + @param dynamicMapping The dynamic source mapping from which the object mapping was determined. + */ +- (void)mappingOperation:(RKMappingOperation *)operation didSelectObjectMapping:(RKObjectMapping *)objectMapping forDynamicMapping:(RKDynamicMapping *)dynamicMapping; + +#ifdef _COREDATADEFINES_H + +///---------------------------------------- +/// @name Tracking Relationship Connections +///---------------------------------------- + +/** + Tells the delegate that the mapping operation has connected a relationship. + + Only sent when mapping an `RKEntityMapping` object that contains connection mappings. + + @param operation The mapping operation. + @param relationship The relationship that was connected. + @param value The value that was connected to the relationship + @param connection The connection object describing how the relationship was to be connected. + */ +- (void)mappingOperation:(RKMappingOperation *)operation didConnectRelationship:(NSRelationshipDescription *)relationship toValue:(id)value usingConnection:(RKConnectionDescription *)connection; + +/** + Tells the delegate that the mapping operation failed to connect a relationship. + + Only sent when mapping an `RKEntityMapping` object that contains connection mappings. + + @param operation The mapping operation. + @param relationship The relationship that was connected. + @param connection The connection object describing how the relationship was to be connected. + */ +- (void)mappingOperation:(RKMappingOperation *)operation didFailToConnectRelationship:(NSRelationshipDescription *)relationship usingConnection:(RKConnectionDescription *)connection; + +#endif + +@end + +/** + Instances of `RKMappingOperation` perform transformation between object representations according to the rules expressed in `RKObjectMapping` objects. Mapping operations provide the foundation for the RestKit object mapping engine and perform the work of inspecting the attributes and relationships of a source object and determining how to map them into new representations on a destination object. + + ## Metadata Mapping + + The mapping operation provides support for mapping for a dictionary of metadata in addition to the source object. This metadata is made available by mapping key paths nested under a specially designated parent key that cannot exist in a source representation. By convention, metadata is typically nested under sub keys to effectively namespace usage between components. The object mapping engine itself reserves the 'mapping' key for its usage. Metadata is passed down through a hierarchy of mapping operations (i.e. as relationships are traversed), making a common set of ancillary information available for mapping for by any operation executed. + + To understand how metadata works, consider the following example: + + @interface RKMetadataExample : NSObject + @property (nonatomic, copy) NSString *name; + @property (nonatomic, copy) NSURL *URL; + @property (nonatomic, copy) NSDate *mappedAt; + @end + + RKMetadataExample *example = [RKMetadataExample new]; + NSDictionary *representation = @{ @"name": @"Blake Watters" }; + NSDictionary *metadata = @{ @"URL": [NSURL URLWithString:@"http://restkit.org"] }; + + RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:[RKMetadataExample class]]; + [objectMapping addAttributeMappingsFromDictionary:@{ @"name": @"name", @"@metadata.URL": @"URL" }]; + + RKMappingOperation *mappingOperation = [[RKMappingOperation alloc] initWithSourceObject:representation destinationObject:example mapping:objectMapping]; + mappingOperation.metadata = metadata; + + NSError *error = nil; + BOOL success = [mappingOperation execute:&error]; + + Note the use of the special key path `@"@metadata.URL"`. The `@metadata` prefix indicates that the property is to be mapped from the metadata dictionary instead of from the source object representation. If any relationships were mapped, it would have access to this same metadata information as well. + + In addition to any metadata provided to the mapping operation via the `metadata` property, the operation itself makes the following metadata key paths available for mapping: + + 1. `@metadata.mapping.collectionIndex` - An `NSNumber` object specifying the index of the current object within a collection being mapped. This key is only available if the current representation exists within a collection. + 1. `@metadata.mapping.parentObject` - The direct parent object of the object that is currently being mapped. This key is only available for objects that are mapped as relationships of a parent object. + + ## Traversing the Representation Hierarchy + + In certain mapping scenarios it can become desirable to access ancestors of the current source object. For example, consider the following example JSON: + + { + "user": { + "id": 1, + "name": "Blake Watters", + "preferences": [ + { + { + "name": "push_notifications_enabled", + "value": true, + }, + { + "name": "subscribed_to_mailing_list", + "value": false + } + } + ] + } + } + + And it's corresponding model: + + @interface RKPreferenceExample : NSObject + @property (nonatomic, strong) NSNumber *userID; + @property (nonatomic, copy) NSString *name; + @property (nonatomic, strong) id value; + @end + + Notice that `userID` is a field that we wish to model as part of our local `RKPreferenceExample` class, but its not available within the `@"preferences"` key path that our + mapping will target. In this case we'd up like to reach "up" in the parsed JSON hierarchy to access our parent node, as demonstrated in the following mapping: + + RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:[RKPreferenceExample class]]; + [objectMapping addAttributeMappingsFromDictionary:@{ @"name": @"name", @"value": @"value", @"@parent.id": @"userID" }]; + + Note the use of the `@parent` key in the final attribute mapping: this pseudo-key always points to the direct parent node of the representation being mapped (or `nil` if there is none). Parent access can be chained to traverse upward all the way to the root node of the representation. + + ### Representation Traversal Keys + + There are currently two keys provided for traversing the representation hierarchy: + + 1. `@"root"` - Returns the root node of the representation being mapped. When a large JSON document is being mapped by an instance of `RKMapperOperation` this will point to the parsed JSON document that was used to initialize the operation. + 1. `@"parent"` - Returns the direct parent node of the `sourceObject` being mapped or `nil` if the `sourceObject` is itself a root node. + */ +@interface RKMappingOperation : NSObject + +///--------------------------------------- +/// @name Initializing a Mapping Operation +///--------------------------------------- + +/** + Initializes the receiver with a source object, a destination object and an object mapping with which to perform an object mapping. + + @param sourceObject The source object to be mapped. Cannot be `nil`. + @param destinationObject The destination object the results are to be mapped onto. May be `nil`, in which case a new object target object will be obtained from the `dataSource`. + @param objectOrDynamicMapping An instance of `RKObjectMapping` or `RKDynamicMapping` defining how the mapping is to be performed. + @return The receiver, initialized with a source object, a destination object, and a mapping. + */ +- (instancetype)initWithSourceObject:(id)sourceObject destinationObject:(id)destinationObject mapping:(RKMapping *)objectOrDynamicMapping; + +/** + Initializes the receiver with a source object, a destination object and an object mapping with which to perform an object mapping, and metadata information to be made available to the mapping. + + @param sourceObject The source object to be mapped. Cannot be `nil`. + @param destinationObject The destination object the results are to be mapped onto. May be `nil`, in which case a new object target object will be obtained from the `dataSource`. + @param objectOrDynamicMapping An instance of `RKObjectMapping` or `RKDynamicMapping` defining how the mapping is to be performed. + @param metadataList A list of objects (usually dictionaries) which provide metadata to the operation, available via the @metadata key in mapping paths. Each object should respond to -valueForKeyPath:, and return nil if the requested key path is not represented in the object (in which case the following object in the list will be consulted). + @return The receiver, initialized with a source object, a destination object, and a mapping. + */ +- (instancetype)initWithSourceObject:(id)sourceObject destinationObject:(id)destinationObject mapping:(RKMapping *)objectOrDynamicMapping metadataList:(NSArray *)metadataList; + +///-------------------------------------- +/// @name Accessing Mapping Configuration +///-------------------------------------- + +/** + A dictionary of mappable elements containing simple values or nested object structures. + */ +@property (nonatomic, strong, readonly) id sourceObject; + +/** + The target object for this operation. Mappable values in the source object will be applied to the destination object using key-value coding. + + If initialized with a `nil` destination object, the mapping operation will attempt to find or create a destination object via the data source and will populate the value of the `destinationObject` property. + */ +@property (nonatomic, strong, readonly) id destinationObject; + +/** + Property which is `YES` when the destinationObject was provided from the data source, and `NO` when the destination object was provided externally to the operation. + */ +@property (nonatomic, readonly, getter=isNewDestinationObject) BOOL newDestinationObject; + +/** + The mapping defining how values contained in the source object should be transformed to the destination object via key-value coding. + + Will either be an instance of `RKObjectMapping` or `RKDynamicMapping`. + */ +@property (nonatomic, strong, readonly) RKMapping *mapping; + +/** + The concrete object mapping for the operation. + + If the value of `mapping` is an `RKObjectMapping`, returns the same value as `mapping`. If `mapping` is an `RKDynamicMapping`, then returns the concrete `RKObjectMapping` object selected for mapping `sourceObject`. + */ +@property (nonatomic, strong, readonly) RKObjectMapping *objectMapping; + +/** + A list of metadata objects available for mapping in addition to the source object. + */ +@property (nonatomic, strong, readonly) NSArray *metadataList; + +///------------------------------------------- +/// @name Configuring Delegate and Data Source +///------------------------------------------- + +/** + The delegate to inform of interesting events during the mapping operation lifecycle. + */ +@property (nonatomic, weak) id<RKMappingOperationDelegate> delegate; + +/** + The data source is responsible for providing the mapping operation with an appropriate target object for mapping when the `destinationObject` is `nil`. + + @see `RKMappingOperationDataSource` + */ +@property (nonatomic, weak) id<RKMappingOperationDataSource> dataSource; + +///-------------------------------- +/// @name Accessing Mapping Details +///-------------------------------- + +/** + The error, if any, that occurred during the execution of the mapping operation. + */ +@property (nonatomic, strong, readonly) NSError *error; + +/** + Returns a dictionary containing information about the mappings applied during the execution of the operation. The keys of the dictionary are key paths into the `destinationObject` for values that were mapped and the values are instances of `RKMappingDetails` that specify the object mapping and property mappings that were applied. + + Mapping info is aggregated for all child mapping operations executed for relationships. + */ +@property (nonatomic, readonly) RKMappingInfo *mappingInfo; + +/** + Property to indicate whether this operation has been cancelled or not. It will be `NO` until `-cancel` is called, after which it will return `YES`. + */ +@property (nonatomic, readonly, getter=isCancelled) BOOL cancelled; + +/** + Cancels the operation, by setting the `cancelled` property to `YES`. Various steps of the process check the `cancelled` property and will abort when it gets set. + */ +- (void)cancel; + +///------------------------- +/// @name Performing Mapping +///------------------------- + +/** + Process all mappable values from the mappable dictionary and assign them to the target object according to the rules expressed in the object mapping definition. The error properties need to be checked to see if the operation was successful. + */ +- (void)start; + +/** + Process all mappable values from the mappable dictionary and assign them to the target object according to the rules expressed in the object mapping definition. + + @param error A pointer to an `NSError` reference to capture any error that occurs during the mapping. May be `nil`. + @return A Boolean value indicating if the mapping operation was successful. + */ +- (BOOL)performMapping:(NSError **)error; + +@end + +/** + Specifies the concrete object mapping and collection of property mappings that were applied for a given key path during the execution of an `RKMappingOperation`. + */ +@interface RKMappingInfo : NSObject + +/** + The mapping that was applied. + */ +@property (nonatomic, strong, readonly) RKObjectMapping *objectMapping; + +/** + The dynamic mapping, if any, that was used to perform the mapping. + */ +@property (nonatomic, strong, readonly) RKDynamicMapping *dynamicMapping; + +/** + The set of property mappings that were applied from the mapping. An empty set indicates that the mapping matched the representation, but all values were unchanged and thus no properties were set. + */ +@property (nonatomic, readonly) NSSet *propertyMappings; + +/** + A dictionary whose keys are the destination key path for a mapped relationship and the value is an array of `RKMappingInfo` objects specifying the mapping details for each item within the collection. + */ +@property (nonatomic, readonly) NSDictionary *relationshipMappingInfo; + +///-------------------------------------- +/// @name Accessing Property by Subscript +///-------------------------------------- + +/** + Retrieves the property mapping with the specified destination key path. + + @param key An `NSString` object specifying the destination key path for the property that is to be retrieved. + @return The `RKPropertyMapping` with the specified destination key path or `nil` if none was found. + */ +- (id)objectForKeyedSubscript:(id)key; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingOperation.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingOperation.m new file mode 100644 index 0000000..61b85e8 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingOperation.m @@ -0,0 +1,1260 @@ +// +// RKMappingOperation.m +// RestKit +// +// Created by Blake Watters on 4/30/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <objc/runtime.h> +#import "RKMappingOperation.h" +#import "RKMappingErrors.h" +#import "RKPropertyInspector.h" +#import "RKAttributeMapping.h" +#import "RKRelationshipMapping.h" +#import "RKErrors.h" +#import "RKLog.h" +#import "RKMappingOperationDataSource.h" +#import "RKObjectMappingOperationDataSource.h" +#import "RKDynamicMapping.h" +#import "RKObjectUtilities.h" +#import "RKValueTransformers.h" +#import "RKDictionaryUtilities.h" + +// Set Logging Component +#undef RKLogComponent +#define RKLogComponent RKlcl_cRestKitObjectMapping + +#pragma mark - Mapping utilities + +extern NSString * const RKObjectMappingNestingAttributeKeyName; + +/** + This function ensures that attribute mappings apply cleanly to an `NSMutableDictionary` target class to support mapping to nested keyPaths. See issue #882 + */ +static void RKSetIntermediateDictionaryValuesOnObjectForKeyPath(id object, NSString *keyPath) +{ + if (! [object isKindOfClass:[NSMutableDictionary class]]) return; + NSArray *keyPathComponents = [keyPath componentsSeparatedByString:@"."]; + if ([keyPathComponents count] > 1) { + for (NSUInteger index = 0; index < [keyPathComponents count] - 1; index++) { + NSString *intermediateKeyPath = [[keyPathComponents subarrayWithRange:NSMakeRange(0, index + 1)] componentsJoinedByString:@"."]; + if (! [object valueForKeyPath:intermediateKeyPath]) { + [object setValue:[NSMutableDictionary dictionary] forKeyPath:intermediateKeyPath]; + } + } + } +} + +static BOOL RKIsManagedObject(id object) +{ + Class managedObjectClass = NSClassFromString(@"NSManagedObject"); + return managedObjectClass && [object isKindOfClass:managedObjectClass]; +} + +// Returns the appropriate value for `nil` value of a primitive type +static id RKPrimitiveValueForNilValueOfClass(Class keyValueCodingClass) +{ + if ([keyValueCodingClass isSubclassOfClass:[NSNumber class]]) { + return @0; + } else { + return nil; + } +} + +// Key comes from: nestedAttributeSubstitutionKey AND nestedAttributeSubstitutionValue; +NSArray *RKApplyNestingAttributeValueToMappings(NSString *attributeName, id value, NSArray *propertyMappings); +NSArray *RKApplyNestingAttributeValueToMappings(NSString *attributeName, id value, NSArray *propertyMappings) +{ + if (!attributeName) return propertyMappings; + + NSString *searchString = [NSString stringWithFormat:@"{%@}", attributeName]; + NSString *replacementString = [NSString stringWithFormat:@"%@", value]; + NSMutableArray *nestedMappings = [NSMutableArray arrayWithCapacity:[propertyMappings count]]; + for (RKPropertyMapping *propertyMapping in propertyMappings) { + NSString *sourceKeyPath = [propertyMapping.sourceKeyPath stringByReplacingOccurrencesOfString:searchString withString:replacementString]; + NSString *destinationKeyPath = [propertyMapping.destinationKeyPath stringByReplacingOccurrencesOfString:searchString withString:replacementString]; + RKPropertyMapping *nestedPropertyMapping = nil; + if ([propertyMapping isKindOfClass:[RKAttributeMapping class]]) { + nestedPropertyMapping = [RKAttributeMapping attributeMappingFromKeyPath:sourceKeyPath toKeyPath:destinationKeyPath]; + } else if ([propertyMapping isKindOfClass:[RKRelationshipMapping class]]) { + nestedPropertyMapping = [RKRelationshipMapping relationshipMappingFromKeyPath:sourceKeyPath + toKeyPath:destinationKeyPath + withMapping:[(RKRelationshipMapping *)propertyMapping mapping]]; + } + nestedPropertyMapping.propertyValueClass = propertyMapping.propertyValueClass; + nestedPropertyMapping.valueTransformer = propertyMapping.valueTransformer; + if (nestedPropertyMapping) [nestedMappings addObject:nestedPropertyMapping]; + } + + return nestedMappings; +} + +// Returns YES if there is a value present for at least one key path in the given collection +static BOOL RKObjectContainsValueForMappings(id representation, NSArray *propertyMappings) +{ + for (RKPropertyMapping *mapping in propertyMappings) { + NSString *keyPath = mapping.sourceKeyPath; + if (keyPath && [representation valueForKeyPath:keyPath]) return YES; + } + return NO; +} + +#pragma mark - Metadata utilities + +static NSString *const RKMetadataKey = @"@metadata"; +static NSString *const RKMetadataKeyPathPrefix = @"@metadata."; +static NSString *const RKParentKey = @"@parent"; +static NSString *const RKParentKeyPathPrefix = @"@parent."; +static NSString *const RKRootKey = @"@root"; +static NSString *const RKRootKeyPathPrefix = @"@root."; +static NSString *const RKSelfKey = @"self"; +static NSString *const RKSelfKeyPathPrefix = @"self."; + +/** + Inserts up to two objects a the start of the metadata list. metadata1 will be at the front if both are provided. + */ +static NSArray *RKInsertInMetadataList(NSArray *list, id metadata1, id metadata2) +{ + if (metadata1 == nil && metadata2 == nil) + return list; + NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:list]; + if (metadata2) + [newArray insertObject:metadata2 atIndex:0]; + if (metadata1) + [newArray insertObject:metadata1 atIndex:0]; + return newArray; +} + +@interface RKMappingSourceObject : NSObject +- (instancetype)initWithObject:(id)object parentObject:(id)parentObject rootObject:(id)rootObject metadata:(NSArray *)metadata; +- (id)metadataValueForKey:(NSString *)key; +- (id)metadataValueForKeyPath:(NSString *)keyPath; +@end + +/** + Class used in the single case of RKMappingSourceObject needing to return a single object + for the "@metadata" key, which a special implementation of -valueForKeyPath: + to iterate over the list of metadata dictionaries (which RKMappingSourceObject usually does). + This usually only happens from the parentObjectForRelationshipMapping: implementation, but + in case it does this class provides the implementation. + */ +@interface RKMetadataWrapper : NSObject +- (instancetype)initWithMappingSource:(RKMappingSourceObject *)source NS_DESIGNATED_INITIALIZER; +@property (nonatomic, strong) RKMappingSourceObject *mappingSource; +@end + +@implementation RKMetadataWrapper + +- (instancetype)initWithMappingSource:(RKMappingSourceObject *)source { + if (self = [super init]) { + self.mappingSource = source; + } + return self; +} + +- (id)valueForKey:(NSString *)key +{ + return [self.mappingSource metadataValueForKey:key]; +} +- (id)valueForKeyPath:(NSString *)keyPath +{ + return [self.mappingSource metadataValueForKeyPath:keyPath]; +} +@end + +/** + Class meant to represent parts of the "mapping" sub-dictionary of the "@metadata" keys, but + being more efficient to create than actual NSDictionary instances. We can add any object properties + to this class, and if non-nil that value will be used, otherwise it is a passthrough. + */ +@interface RKMappingMetadata : NSObject +@property (nonatomic) BOOL inValueForKeyPath; +@property (nonatomic) id parentObject; +@end + +@implementation RKMappingMetadata + +- (id)valueForKeyPath:(NSString *)keyPath +{ + static NSString *mappingPrefix = @"mapping."; + + /* We only allow paths with a "mapping." prefix, to simulate being a nested object */ + if ([keyPath hasPrefix:mappingPrefix]) { + self.inValueForKeyPath = YES; + id value = [super valueForKeyPath:[keyPath substringFromIndex:[mappingPrefix length]]]; + self.inValueForKeyPath = NO; + return value; + } + + return nil; +} + +/* Only return values from valueForKey: if we are being routed from valueForKeyPath:. This + avoids us from returning value values from say "@metadata.collectionIndex" without the mapping prefix. + */ +- (id)valueForKey:(NSString *)key +{ + return self.inValueForKeyPath? [super valueForKey:key] : nil; +} + +/* Return nil for any unknown keys, so the next object in the metadata list gets checked */ +- (id)valueForUndefinedKey:(NSString *)key +{ + return nil; +} + +@end + +/** + Subclass of RKMappingMetadata for use for holding the collectionIndex during a to-many mapping operation. + Needs to be a subclass since the scalar property cannot return nil from valueForKey, so this can only + be used when the collectionIndex is definitely set. + */ +@interface RKMappingIndexMetadata : RKMappingMetadata +@property (nonatomic) NSUInteger collectionIndex; +@end + +@implementation RKMappingIndexMetadata +@end + + +@interface RKMappingSourceObject () +@property (nonatomic, strong) id object; +@property (nonatomic, strong) id parentObject; +@property (nonatomic, strong) id rootObject; +@property (nonatomic, strong) NSArray *metadataList; +@end + +@implementation RKMappingSourceObject + +- (instancetype)initWithObject:(id)object parentObject:(id)parentObject rootObject:(id)rootObject metadata:(NSArray *)metadata +{ + self = [self init]; + if (self) { + _object = object; + _parentObject = parentObject; + _rootObject = rootObject; + _metadataList = metadata; + } + return self; +} + +- (NSMethodSignature *)methodSignatureForSelector:(SEL)selector +{ + return [_object methodSignatureForSelector:selector]; +} + +- (void)forwardInvocation:(NSInvocation *)invocation +{ + [invocation invokeWithTarget:_object]; +} + +- (id)forwardingTargetForSelector:(SEL)aSelector +{ + return _object; +} + +- (id)metadataValueForKey:(NSString *)key +{ + for (NSDictionary *dict in self.metadataList) + { + id val = [dict valueForKey:key]; + if (val != nil) return val; + } + + return nil; +} + +- (id)metadataValueForKeyPath:(NSString *)keyPath +{ + for (NSDictionary *dict in self.metadataList) + { + id val = [dict valueForKeyPath:keyPath]; + if (val != nil) return val; + } + + return nil; +} + +- (id)valueForKey:(NSString *)key +{ + /* Using firstChar as a small performance enhancement -- one check can avoid several isEqual: calls */ + unichar firstChar = [key length] > 0 ? [key characterAtIndex:0] : 0; + + if (firstChar == 's' && [key isEqualToString:RKSelfKey]) { + return _object; + } else if (firstChar != '@') { + return [_object valueForKey:key]; + } else if ([key isEqualToString:RKMetadataKey]) { + return [[RKMetadataWrapper alloc] initWithMappingSource:self]; + } else if ([key isEqualToString:RKParentKey]) { + return self.parentObject; + } else if ([key isEqualToString:RKRootKey]) { + return self.rootObject; + } else { + return [_object valueForKey:key]; + } +} + +/** + NOTE: We implement `valueForKeyPath:` on the proxy instead of using `forwardInvocation:` because the OS X runtime fails to appropriately handle scalar boxing/unboxing, resulting in incorrect metadata mappings. Proxying the method directly produces the expected results on both OS X and iOS [sbw - 2/1/2012] + */ +- (id)valueForKeyPath:(NSString *)keyPath +{ + /* Using firstChar as a small performance enhancement -- one check can avoid several hasPrefix calls */ + unichar firstChar = [keyPath length] > 0 ? [keyPath characterAtIndex:0] : 0; + + if (firstChar == 's' && [keyPath hasPrefix:RKSelfKeyPathPrefix]) { + NSString *selfKeyPath = [keyPath substringFromIndex:[RKSelfKeyPathPrefix length]]; + return [_object valueForKeyPath:selfKeyPath]; + } else if (firstChar != '@') { + return [_object valueForKeyPath:keyPath]; + } else if ([keyPath hasPrefix:RKMetadataKeyPathPrefix]) { + NSString *metadataKeyPath = [keyPath substringFromIndex:[RKMetadataKeyPathPrefix length]]; + return [self metadataValueForKeyPath:metadataKeyPath]; + } else if ([keyPath hasPrefix:RKParentKeyPathPrefix]) { + NSString *parentKeyPath = [keyPath substringFromIndex:[RKParentKeyPathPrefix length]]; + return [self.parentObject valueForKeyPath:parentKeyPath]; + } else if ([keyPath hasPrefix:RKRootKeyPathPrefix]) { + NSString *rootKeyPath = [keyPath substringFromIndex:[RKRootKeyPathPrefix length]]; + return [self.rootObject valueForKeyPath:rootKeyPath]; + } else { + return [_object valueForKeyPath:keyPath]; + } +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"%@ (%@)", [self.object description], self.metadataList]; +} + +- (Class)class +{ + return [_object class]; +} + +- (BOOL)isKindOfClass:(Class)aClass +{ + return [_object isKindOfClass:aClass]; +} + +- (BOOL)respondsToSelector:(SEL)aSelector +{ + return [_object respondsToSelector:aSelector]; +} + +- (BOOL)conformsToProtocol:(Protocol *)aProtocol +{ + return [_object conformsToProtocol:aProtocol]; +} + +- (Class)rk_classForPropertyAtKeyPath:(NSString *)keyPath isPrimitive:(BOOL *)isPrimitive +{ + return [_object rk_classForPropertyAtKeyPath:keyPath isPrimitive:isPrimitive]; +} + +@end + + +#pragma mark - RKMappingInfo + +@interface RKMappingInfo () +@property (nonatomic, assign, readwrite) NSUInteger collectionIndex; +@property (nonatomic, strong) NSMutableSet *mutablePropertyMappings; +@property (nonatomic, strong) NSMutableDictionary *mutableRelationshipMappingInfo; + +- (instancetype)initWithObjectMapping:(RKObjectMapping *)objectMapping dynamicMapping:(RKDynamicMapping *)dynamicMapping; +- (void)addPropertyMapping:(RKPropertyMapping *)propertyMapping; +@end + +@implementation RKMappingInfo + +- (instancetype)initWithObjectMapping:(RKObjectMapping *)objectMapping dynamicMapping:(RKDynamicMapping *)dynamicMapping +{ + self = [self init]; + if (self) { + _objectMapping = objectMapping; + _dynamicMapping = dynamicMapping; + _mutablePropertyMappings = [NSMutableSet setWithCapacity:[objectMapping.propertyMappings count]]; + _mutableRelationshipMappingInfo = [NSMutableDictionary dictionaryWithCapacity:[objectMapping.relationshipMappings count]]; + } + return self; +} + +- (NSSet *)propertyMappings +{ + return [self.mutablePropertyMappings copy]; +} + +- (NSDictionary *)relationshipMappingInfo +{ + return [self.mutableRelationshipMappingInfo copy]; +} + +- (void)addPropertyMapping:(RKPropertyMapping *)propertyMapping +{ + [self.mutablePropertyMappings addObject:propertyMapping]; +} + +- (void)addMappingInfo:(RKMappingInfo *)mappingInfo forRelationshipMapping:(RKRelationshipMapping *)relationshipMapping +{ + NSMutableArray *arrayOfMappingInfo = (self.mutableRelationshipMappingInfo)[relationshipMapping.destinationKeyPath]; + if (arrayOfMappingInfo) { + [arrayOfMappingInfo addObject:mappingInfo]; + } else { + arrayOfMappingInfo = [NSMutableArray arrayWithObject:mappingInfo]; + (self.mutableRelationshipMappingInfo)[relationshipMapping.destinationKeyPath] = arrayOfMappingInfo; + } +} + +- (id)objectForKeyedSubscript:(id)key +{ + for (RKPropertyMapping *propertyMapping in self.mutablePropertyMappings) { + if ([propertyMapping.destinationKeyPath isEqualToString:key]) { + return propertyMapping; + } + } + return nil; +} + +@end + +#pragma mark - RKMappingOperation + +@interface RKMappingOperation () +@property (nonatomic, strong, readwrite) RKMapping *mapping; +@property (nonatomic, strong, readwrite) id sourceObject; +@property (nonatomic, strong, readwrite) id parentSourceObject; +@property (nonatomic, strong, readwrite) id rootSourceObject; +@property (nonatomic, strong, readwrite) id destinationObject; +@property (nonatomic, strong, readwrite) NSArray *metadataList; +@property (nonatomic, strong) NSString *nestedAttributeSubstitutionKey; +@property (nonatomic, strong) id nestedAttributeSubstitutionValue; +@property (nonatomic, strong, readwrite) NSError *error; +@property (nonatomic, strong, readwrite) RKObjectMapping *objectMapping; // The concrete mapping +@property (nonatomic, strong) NSArray *nestedAttributeMappings; +@property (nonatomic, strong) NSArray *simpleAttributeMappings; +@property (nonatomic, strong) NSArray *keyPathAttributeMappings; +@property (nonatomic, strong) NSArray *relationshipMappings; +@property (nonatomic, strong) RKMappingInfo *mappingInfo; +@property (nonatomic, getter=isCancelled) BOOL cancelled; +@property (nonatomic) BOOL collectsMappingInfo; +@property (nonatomic) BOOL shouldSetUnchangedValues; +@property (nonatomic, readwrite, getter=isNewDestinationObject) BOOL newDestinationObject; +@end + +@implementation RKMappingOperation + +- (instancetype)initWithSourceObject:(id)sourceObject destinationObject:(id)destinationObject mapping:(RKMapping *)objectOrDynamicMapping +{ + return [self initWithSourceObject:sourceObject destinationObject:destinationObject mapping:objectOrDynamicMapping metadataList:nil]; +} + +- (instancetype)initWithSourceObject:(id)sourceObject destinationObject:(id)destinationObject mapping:(RKMapping *)objectOrDynamicMapping metadataList:(NSArray *)metadataList +{ + NSAssert(sourceObject != nil, @"Cannot perform a mapping operation without a sourceObject object"); + NSAssert(objectOrDynamicMapping != nil, @"Cannot perform a mapping operation without a mapping"); + + self = [super init]; + if (self) { + self.sourceObject = sourceObject; + self.rootSourceObject = sourceObject; + self.destinationObject = destinationObject; + self.mapping = objectOrDynamicMapping; + self.metadataList = metadataList; + } + + return self; +} + +- (id)parentObjectForRelationshipMapping:(RKRelationshipMapping *)mapping +{ + id parentSourceObject = self.sourceObject; + NSString *sourceKeyPath = mapping.sourceKeyPath; + + NSRange lastDotRange = [sourceKeyPath rangeOfString:@"." options:NSBackwardsSearch|NSLiteralSearch]; + if (lastDotRange.length > 0) + { + NSString *parentKey = [sourceKeyPath substringToIndex:lastDotRange.location]; + id rootObject = self.rootSourceObject; + NSArray *metadata = self.metadataList; + for (NSString *key in [parentKey componentsSeparatedByString:@"."]) + { + parentSourceObject = [[RKMappingSourceObject alloc] initWithObject:[parentSourceObject valueForKey:key] + parentObject:parentSourceObject + rootObject:rootObject + metadata:metadata]; + } + } + + return parentSourceObject; +} + +- (id)destinationObjectForMappingRepresentation:(id)representation parentRepresentation:(id)parentRepresentation withMapping:(RKMapping *)mapping inRelationship:(RKRelationshipMapping *)relationshipMapping +{ + RKObjectMapping *concreteMapping = nil; + if ([mapping isKindOfClass:[RKDynamicMapping class]]) { + concreteMapping = [(RKDynamicMapping *)mapping objectMappingForRepresentation:representation]; + if (! concreteMapping) { + RKLogDebug(@"Unable to determine concrete object mapping from dynamic mapping %@ with which to map object representation: %@", mapping, representation); + return nil; + } + } else if ([mapping isKindOfClass:[RKObjectMapping class]]) { + concreteMapping = (RKObjectMapping *)mapping; + } + + id destinationObject = nil; + id dataSource = self.dataSource; + if ([dataSource respondsToSelector:@selector(mappingOperation:targetObjectForMapping:inRelationship:)]) + { + destinationObject = [dataSource mappingOperation:self targetObjectForMapping:concreteMapping inRelationship:relationshipMapping]; + } + + if (destinationObject == nil) + { + NSDictionary *dictionaryRepresentation = [representation isKindOfClass:[NSDictionary class]] ? representation : @{ [NSNull null] : representation }; + RKMappingMetadata *parentMetadata = [RKMappingMetadata new]; + parentMetadata.parentObject = self.destinationObject ?: [NSNull null]; + NSArray *metadata = RKInsertInMetadataList(self.metadataList, parentMetadata, nil); + RKMappingSourceObject *sourceObject = [[RKMappingSourceObject alloc] initWithObject:dictionaryRepresentation parentObject:parentRepresentation rootObject:self.rootSourceObject metadata:metadata]; + destinationObject = [dataSource mappingOperation:self targetObjectForRepresentation:(NSDictionary *)sourceObject withMapping:concreteMapping inRelationship:relationshipMapping]; + } + + return destinationObject; +} + +- (BOOL)validateValue:(id *)value atKeyPath:(NSString *)keyPath +{ + BOOL success = YES; + + if (self.objectMapping.performsKeyValueValidation) { + id destinationObject = self.destinationObject; + + if ([destinationObject respondsToSelector:@selector(validateValue:forKeyPath:error:)]) { + NSError *validationError; + success = [destinationObject validateValue:value forKeyPath:keyPath error:&validationError]; + if (!success) { + self.error = validationError; + if (validationError) { + RKLogError(@"Validation failed while mapping attribute at key path '%@' to value. Error: %@", keyPath, [validationError localizedDescription]); + RKLogValidationError(validationError); + } else { + RKLogWarning(@"Destination object %@ rejected attribute value for keyPath %@. Skipping...", self.destinationObject, keyPath); + } + RKLogDebug(@"(Value for key path '%@': %@)", keyPath, *value); + } + } + } + + return success; +} + +- (BOOL)shouldSetValue:(id *)value forKeyPath:(NSString *)keyPath usingMapping:(RKPropertyMapping *)propertyMapping +{ + if ([self.delegate respondsToSelector:@selector(mappingOperation:shouldSetValue:forKeyPath:usingMapping:)]) { + return [self.delegate mappingOperation:self shouldSetValue:*value forKeyPath:keyPath usingMapping:propertyMapping]; + } + + // Always set the properties + if (self.shouldSetUnchangedValues) { + return [self validateValue:value atKeyPath:keyPath]; + } + + id currentValue = [self.destinationObject valueForKeyPath:keyPath]; + if (currentValue == [NSNull null]) { + currentValue = nil; + } + + /* + WTF - This workaround should not be necessary, but I have been unable to replicate + the circumstances that trigger it in a unit test to fix elsewhere. The proper place + to handle it is in transformValue:atKeyPath:toType: + + See issue & pull request: https://github.com/RestKit/RestKit/pull/436 + */ + if (*value == [NSNull null]) *value = nil; + + if (nil == currentValue && nil == *value) { + // Both are nil + return NO; + } else if (nil == *value || nil == currentValue) { + // One is nil and the other is not + return [self validateValue:value atKeyPath:keyPath]; + } + + if (! RKObjectIsEqualToObject(*value, currentValue)) { + // Validate value for key + return [self validateValue:value atKeyPath:keyPath]; + } + return NO; +} + +- (NSArray *)applyNestingToMappings:(NSArray *)propertyMappings +{ + if (self.nestedAttributeSubstitutionKey == nil) return propertyMappings; + + return RKApplyNestingAttributeValueToMappings(self.nestedAttributeSubstitutionKey, self.nestedAttributeSubstitutionValue, propertyMappings); +} + +- (void)cacheMappingsIfNeeded +{ + if (!_nestedAttributeMappings) + { + RKObjectMapping *mapping = self.objectMapping; + + if (self.nestedAttributeSubstitutionKey == nil) { + _relationshipMappings = mapping.relationshipMappings; + _nestedAttributeMappings = mapping.attributeMappings; + _simpleAttributeMappings = mapping.keyAttributeMappings; + _keyPathAttributeMappings = mapping.keyPathAttributeMappings; + } + else { + _nestedAttributeMappings = [self applyNestingToMappings:mapping.attributeMappings]; + _relationshipMappings = [self applyNestingToMappings:mapping.relationshipMappings]; + NSMutableArray *simpleList = [[NSMutableArray alloc] initWithCapacity:[_nestedAttributeMappings count]]; + NSMutableArray *keyPathList = [[NSMutableArray alloc] initWithCapacity:[_nestedAttributeMappings count]]; + + // The nested substitution may have changed which properties are simple vs keyPath, so we have to + // re-check based on the nesting result. + for (RKPropertyMapping *mapping in _nestedAttributeMappings) { + BOOL isSimple = [mapping.sourceKeyPath rangeOfString:@"." options:NSLiteralSearch].length == 0; + NSMutableArray *arrayToAdd = isSimple? simpleList : keyPathList; + [arrayToAdd addObject:mapping]; + } + + _simpleAttributeMappings = simpleList; + _keyPathAttributeMappings = keyPathList; + } + } +} + +- (NSArray *)nestedAttributeMappings +{ + [self cacheMappingsIfNeeded]; + return _nestedAttributeMappings; +} + +- (NSArray *)simpleAttributeMappings +{ + [self cacheMappingsIfNeeded]; + return _simpleAttributeMappings; +} + +- (NSArray *)keyPathAttributeMappings +{ + [self cacheMappingsIfNeeded]; + return _keyPathAttributeMappings; +} + +- (NSArray *)relationshipMappings +{ + [self cacheMappingsIfNeeded]; + return _relationshipMappings; +} + +- (BOOL)transformValue:(id)inputValue toValue:(__autoreleasing id *)outputValue withPropertyMapping:(RKPropertyMapping *)propertyMapping error:(NSError *__autoreleasing *)error +{ + if (! inputValue) { + *outputValue = nil; + // We only want to consider the transformation successful and assign nil if the mapping calls for it + return propertyMapping.objectMapping.assignsDefaultValueForMissingAttributes; + } + Class transformedValueClass = propertyMapping.propertyValueClass ?: [self.objectMapping classForKeyPath:propertyMapping.destinationKeyPath]; + if (! transformedValueClass) { + *outputValue = inputValue; + return YES; + } + RKLogTrace(@"Found transformable value at keyPath '%@'. Transforming from class '%@' to '%@'", propertyMapping.sourceKeyPath, NSStringFromClass([inputValue class]), NSStringFromClass(transformedValueClass)); + BOOL success = [propertyMapping.valueTransformer transformValue:inputValue toValue:outputValue ofClass:transformedValueClass error:error]; + if (! success) RKLogError(@"Failed transformation of value at keyPath '%@' to representation of type '%@': %@", propertyMapping.sourceKeyPath, transformedValueClass, *error); + return success; +} + +- (BOOL)applyAttributeMapping:(RKAttributeMapping *)attributeMapping withValue:(id)value +{ + id transformedValue = nil; + NSError *error = nil; + if (! [self transformValue:value toValue:&transformedValue withPropertyMapping:attributeMapping error:&error]) return NO; + + NSString *destinationKeyPath = attributeMapping.destinationKeyPath; + id destinationObject = self.destinationObject; + id delegate = self.delegate; + + if ([delegate respondsToSelector:@selector(mappingOperation:didFindValue:forKeyPath:mapping:)]) { + [delegate mappingOperation:self didFindValue:value forKeyPath:attributeMapping.sourceKeyPath mapping:attributeMapping]; + } + RKLogTrace(@"Mapping attribute value keyPath '%@' to '%@'", attributeMapping.sourceKeyPath, destinationKeyPath); + + // If we have a nil value for a primitive property, we need to coerce it into a KVC usable value or bail out + if (transformedValue == nil && RKPropertyInspectorIsPropertyAtKeyPathOfObjectPrimitive(destinationKeyPath, destinationObject)) { + RKLogDebug(@"Detected `nil` value transformation for primitive property at keyPath '%@'", destinationKeyPath); + transformedValue = RKPrimitiveValueForNilValueOfClass([self.objectMapping classForKeyPath:destinationKeyPath]); + if (! transformedValue) { + RKLogTrace(@"Skipped mapping of attribute value from keyPath '%@ to keyPath '%@' -- Unable to transform `nil` into primitive value representation", attributeMapping.sourceKeyPath, destinationKeyPath); + return NO; + } + } + + RKSetIntermediateDictionaryValuesOnObjectForKeyPath(destinationObject, destinationKeyPath); + + // Ensure that the value is different + if ([self shouldSetValue:&transformedValue forKeyPath:destinationKeyPath usingMapping:attributeMapping]) { + RKLogTrace(@"Mapped attribute value from keyPath '%@' to '%@'. Value: %@", attributeMapping.sourceKeyPath, destinationKeyPath, transformedValue); + + if (destinationKeyPath) { + [destinationObject setValue:transformedValue forKeyPath:destinationKeyPath]; + } else { + if ([destinationObject isKindOfClass:[NSMutableDictionary class]] && [transformedValue isKindOfClass:[NSDictionary class]]) { + [destinationObject setDictionary:transformedValue]; + } else { + [NSException raise:NSInvalidArgumentException format:@"Unable to set value for destination object of type '%@': Can only directly set destination object for `NSMutableDictionary` targets. (transformedValue=%@)", [destinationObject class], transformedValue]; + } + } + if ([delegate respondsToSelector:@selector(mappingOperation:didSetValue:forKeyPath:usingMapping:)]) { + [delegate mappingOperation:self didSetValue:transformedValue forKeyPath:destinationKeyPath usingMapping:attributeMapping]; + } + } else { + RKLogTrace(@"Skipped mapping of attribute value from keyPath '%@ to keyPath '%@' -- value is unchanged (%@)", attributeMapping.sourceKeyPath, destinationKeyPath, transformedValue); + if ([delegate respondsToSelector:@selector(mappingOperation:didNotSetUnchangedValue:forKeyPath:usingMapping:)]) { + [delegate mappingOperation:self didNotSetUnchangedValue:transformedValue forKeyPath:destinationKeyPath usingMapping:attributeMapping]; + } + } + if (_collectsMappingInfo) { + [self.mappingInfo addPropertyMapping:attributeMapping]; + } + return YES; +} + +// Return YES if we mapped any attributes +- (BOOL)applyAttributeMappings:(NSArray *)attributeMappings +{ + // If we have a nesting substitution value, we have already succeeded + BOOL appliedMappings = (self.nestedAttributeSubstitutionKey != nil); + + if (!self.objectMapping.performsKeyValueValidation) { + RKLogDebug(@"Key-value validation is disabled for mapping, skipping..."); + } + + id sourceObject = self.sourceObject; + + for (RKAttributeMapping *attributeMapping in attributeMappings) { + if ([self isCancelled]) return NO; + + NSString *sourceKeyPath = attributeMapping.sourceKeyPath; + NSString *destinationKeyPath = attributeMapping.destinationKeyPath; + if ([sourceKeyPath isEqualToString:RKObjectMappingNestingAttributeKeyName] || [destinationKeyPath isEqualToString:RKObjectMappingNestingAttributeKeyName]) { + RKLogTrace(@"Skipping attribute mapping for special keyPath '%@'", sourceKeyPath); + continue; + } + + id value = (sourceKeyPath == nil) ? [sourceObject valueForKey:@"self"] : [sourceObject valueForKeyPath:sourceKeyPath]; + if ([self applyAttributeMapping:attributeMapping withValue:value]) { + appliedMappings = YES; + } else { + id delegate = self.delegate; + RKObjectMapping *objectMapping = self.objectMapping; + + if ([delegate respondsToSelector:@selector(mappingOperation:didNotFindValueForKeyPath:mapping:)]) { + [delegate mappingOperation:self didNotFindValueForKeyPath:sourceKeyPath mapping:attributeMapping]; + } + RKLogTrace(@"Did not find mappable attribute value keyPath '%@'", sourceKeyPath); + + // Optionally set the default value for missing values + if (objectMapping.assignsDefaultValueForMissingAttributes) { + [self.destinationObject setValue:[objectMapping defaultValueForAttribute:destinationKeyPath] + forKeyPath:destinationKeyPath]; + RKLogTrace(@"Setting nil for missing attribute value at keyPath '%@'", sourceKeyPath); + } + } + + // Fail out if an error has occurred + if (self.error) break; + } + + return appliedMappings; +} + +- (BOOL)mapNestedObject:(id)anObject toObject:(id)anotherObject parent:(id)parentSourceObject withRelationshipMapping:(RKRelationshipMapping *)relationshipMapping metadataList:(NSArray *)metadataList +{ + NSAssert(anObject, @"Cannot map nested object without a nested source object"); + NSAssert(anotherObject, @"Cannot map nested object without a destination object"); + NSAssert(relationshipMapping, @"Cannot map a nested object relationship without a relationship mapping"); + + RKLogTrace(@"Performing nested object mapping using mapping %@ for data: %@", relationshipMapping, anObject); + RKMappingOperation *subOperation = [[RKMappingOperation alloc] initWithSourceObject:anObject destinationObject:anotherObject mapping:relationshipMapping.mapping metadataList:metadataList]; + subOperation.dataSource = self.dataSource; + subOperation.delegate = self.delegate; + subOperation.parentSourceObject = parentSourceObject; + subOperation.rootSourceObject = self.rootSourceObject; + subOperation.newDestinationObject = YES; + [subOperation start]; + + if (subOperation.error) { + RKLogWarning(@"WARNING: Failed mapping nested object: %@", [subOperation.error localizedDescription]); + } else if (self.collectsMappingInfo) { + RKMappingInfo *mappingInfo = self.mappingInfo; + RKMappingInfo *subMappingInfo = subOperation.mappingInfo; + [mappingInfo addPropertyMapping:relationshipMapping]; + if (subMappingInfo) { + [mappingInfo addMappingInfo:subMappingInfo forRelationshipMapping:relationshipMapping]; + } + } + + return YES; +} + +- (BOOL)applyReplaceAssignmentPolicyForRelationshipMapping:(RKRelationshipMapping *)relationshipMapping +{ + if (relationshipMapping.assignmentPolicy == RKReplaceAssignmentPolicy) { + id dataSource = self.dataSource; + if ([dataSource respondsToSelector:@selector(mappingOperation:deleteExistingValueOfRelationshipWithMapping:error:)]) { + NSError *error = nil; + BOOL success = [dataSource mappingOperation:self deleteExistingValueOfRelationshipWithMapping:relationshipMapping error:&error]; + if (! success) { + RKLogError(@"Failed to delete existing value of relationship mapped with RKReplaceAssignmentPolicy: %@", error); + self.error = error; + return NO; + } + } else { + RKLogWarning(@"Requested mapping with `RKReplaceAssignmentPolicy` assignment policy, but the data source does not support it. Mapping has proceeded identically to the `RKSetAssignmentPolicy`."); + } + } + + return YES; +} + +- (BOOL)mapOneToOneRelationshipWithValue:(id)value mapping:(RKRelationshipMapping *)relationshipMapping +{ + static dispatch_once_t onceToken; + static NSDictionary *noIndexMetadata; + dispatch_once(&onceToken, ^{ + noIndexMetadata = @{ @"mapping" : @{ @"collectionIndex" : [NSNull null] } }; + }); + + // One to one relationship + NSString *destinationKeyPath = relationshipMapping.destinationKeyPath; + RKLogDebug(@"Mapping one to one relationship value at keyPath '%@' to '%@'", relationshipMapping.sourceKeyPath, destinationKeyPath); + + if (relationshipMapping.assignmentPolicy == RKUnionAssignmentPolicy) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: @"Invalid assignment policy: cannot union a one-to-one relationship." }; + self.error = [NSError errorWithDomain:RKErrorDomain code:RKMappingErrorInvalidAssignmentPolicy userInfo:userInfo]; + return NO; + } + + id parentSourceObject = [self parentObjectForRelationshipMapping:relationshipMapping]; + id destinationObject = [self destinationObjectForMappingRepresentation:value parentRepresentation:parentSourceObject withMapping:relationshipMapping.mapping inRelationship:relationshipMapping]; + if (! destinationObject) { + RKLogDebug(@"Mapping %@ declined mapping for representation %@: returned `nil` destination object.", relationshipMapping.mapping, destinationObject); + return NO; + } + + NSArray *subOperationMetadata = RKInsertInMetadataList(self.metadataList, noIndexMetadata, nil); + [self mapNestedObject:value toObject:destinationObject parent:parentSourceObject withRelationshipMapping:relationshipMapping metadataList:subOperationMetadata]; + + // If the relationship has changed, set it + if ([self shouldSetValue:&destinationObject forKeyPath:destinationKeyPath usingMapping:relationshipMapping]) { + if (! [self applyReplaceAssignmentPolicyForRelationshipMapping:relationshipMapping]) { + return NO; + } + + RKLogTrace(@"Mapped relationship object from keyPath '%@' to '%@'. Value: %@", relationshipMapping.sourceKeyPath, destinationKeyPath, destinationObject); + [self.destinationObject setValue:destinationObject forKeyPath:destinationKeyPath]; + } else { + if ([self.delegate respondsToSelector:@selector(mappingOperation:didNotSetUnchangedValue:forKeyPath:usingMapping:)]) { + [self.delegate mappingOperation:self didNotSetUnchangedValue:destinationObject forKeyPath:destinationKeyPath usingMapping:relationshipMapping]; + } + } + + return YES; +} + +- (BOOL)mapCoreDataToManyRelationshipValue:(id)valueForRelationship withMapping:(RKRelationshipMapping *)relationshipMapping +{ + id destinationObject = self.destinationObject; + if (! RKIsManagedObject(destinationObject)) return NO; + + RKLogTrace(@"Mapping a to-many relationship for an `NSManagedObject`. About to apply value via mutable[Set|Array]ValueForKey"); + if ([valueForRelationship isKindOfClass:[NSSet class]]) { + RKLogTrace(@"Mapped `NSSet` relationship object from keyPath '%@' to '%@'. Value: %@", relationshipMapping.sourceKeyPath, relationshipMapping.destinationKeyPath, valueForRelationship); + NSMutableSet *destinationSet = [destinationObject mutableSetValueForKeyPath:relationshipMapping.destinationKeyPath]; + [destinationSet setSet:valueForRelationship]; + } else if ([valueForRelationship isKindOfClass:[NSArray class]]) { + RKLogTrace(@"Mapped `NSArray` relationship object from keyPath '%@' to '%@'. Value: %@", relationshipMapping.sourceKeyPath, relationshipMapping.destinationKeyPath, valueForRelationship); + NSMutableArray *destinationArray = [destinationObject mutableArrayValueForKeyPath:relationshipMapping.destinationKeyPath]; + [destinationArray setArray:valueForRelationship]; + } else if ([valueForRelationship isKindOfClass:[NSOrderedSet class]]) { + RKLogTrace(@"Mapped `NSOrderedSet` relationship object from keyPath '%@' to '%@'. Value: %@", relationshipMapping.sourceKeyPath, relationshipMapping.destinationKeyPath, valueForRelationship); + [destinationObject setValue:valueForRelationship forKeyPath:relationshipMapping.destinationKeyPath]; + } + + return YES; +} + +- (BOOL)mapOneToManyRelationshipWithValue:(id)value mapping:(RKRelationshipMapping *)relationshipMapping +{ + NSString *destinationKeyPath = relationshipMapping.destinationKeyPath; + + // One to many relationship + RKLogDebug(@"Mapping one to many relationship value at keyPath '%@' to '%@'", relationshipMapping.sourceKeyPath, destinationKeyPath); + + NSMutableArray *relationshipCollection = [NSMutableArray arrayWithCapacity:[value count]]; + if (RKObjectIsCollectionOfCollections(value)) { + RKLogWarning(@"WARNING: Detected a relationship mapping for a collection containing another collection. This is probably not what you want. Consider using a KVC collection operator (such as @unionOfArrays) to flatten your mappable collection."); + RKLogWarning(@"Key path '%@' yielded collection containing another collection rather than a collection of objects", relationshipMapping.sourceKeyPath); + RKLogDebug(@"(Value at key path '%@': %@)", relationshipMapping.sourceKeyPath, value); + } + + if (relationshipMapping.assignmentPolicy == RKUnionAssignmentPolicy) { + RKLogDebug(@"Mapping relationship with union assignment policy: constructing combined relationship value."); + id existingObjects = [self.destinationObject valueForKeyPath:destinationKeyPath]; + if (existingObjects) { + NSArray *existingObjectsArray = nil; + NSError *error = nil; + [[RKValueTransformer defaultValueTransformer] transformValue:existingObjects toValue:&existingObjectsArray ofClass:[NSArray class] error:&error]; + [relationshipCollection addObjectsFromArray:existingObjectsArray]; + } + } + else if (relationshipMapping.assignmentPolicy == RKReplaceAssignmentPolicy) { + if (! [self applyReplaceAssignmentPolicyForRelationshipMapping:relationshipMapping]) { + return NO; + } + } + + RKMapping *relationshipDestinationMapping = relationshipMapping.mapping; + id parentSourceObject = [self parentObjectForRelationshipMapping:relationshipMapping]; + RKMappingIndexMetadata *indexMetadata = [RKMappingIndexMetadata new]; + NSArray *subOperationMetadata = RKInsertInMetadataList(self.metadataList, indexMetadata, nil); + [value enumerateObjectsUsingBlock:^(id nestedObject, NSUInteger collectionIndex, BOOL *stop) { + id mappableObject = [self destinationObjectForMappingRepresentation:nestedObject parentRepresentation:parentSourceObject withMapping:relationshipDestinationMapping inRelationship:relationshipMapping]; + if (mappableObject) { + indexMetadata.collectionIndex = collectionIndex; + if ([self mapNestedObject:nestedObject toObject:mappableObject parent:parentSourceObject withRelationshipMapping:relationshipMapping metadataList:subOperationMetadata]) { + [relationshipCollection addObject:mappableObject]; + } + } else { + RKLogDebug(@"Mapping %@ declined mapping for representation %@: returned `nil` destination object.", relationshipDestinationMapping, nestedObject); + } + }]; + + id valueForRelationship = nil; + NSError *error = nil; + if (! [self transformValue:relationshipCollection toValue:&valueForRelationship withPropertyMapping:relationshipMapping error:&error]) return NO; + + // If the relationship has changed, set it + if ([self shouldSetValue:&valueForRelationship forKeyPath:destinationKeyPath usingMapping:relationshipMapping]) { + if (! [self mapCoreDataToManyRelationshipValue:valueForRelationship withMapping:relationshipMapping]) { + RKLogTrace(@"Mapped relationship object from keyPath '%@' to '%@'. Value: %@", relationshipMapping.sourceKeyPath, destinationKeyPath, valueForRelationship); + [self.destinationObject setValue:valueForRelationship forKeyPath:destinationKeyPath]; + } + } else { + if ([self.delegate respondsToSelector:@selector(mappingOperation:didNotSetUnchangedValue:forKeyPath:usingMapping:)]) { + [self.delegate mappingOperation:self didNotSetUnchangedValue:valueForRelationship forKeyPath:destinationKeyPath usingMapping:relationshipMapping]; + } + + return NO; + } + + return YES; +} + +- (BOOL)applyRelationshipMappings +{ + NSAssert(self.dataSource, @"Cannot perform relationship mapping without a data source"); + NSUInteger mappingsApplied = 0; + RKObjectMapping *parentObjectMapping = self.objectMapping; + id sourceObject = self.sourceObject; + id destinationObject = self.destinationObject; + id delegate = self.delegate; + + for (RKRelationshipMapping *relationshipMapping in [self relationshipMappings]) { + if ([self isCancelled]) return NO; + + NSString *sourceKeyPath = relationshipMapping.sourceKeyPath; + NSString *destinationKeyPath = relationshipMapping.destinationKeyPath; + id value = nil; + + if (sourceKeyPath) { + value = [sourceObject valueForKeyPath:sourceKeyPath]; + } else { + // The nil source keyPath indicates that we want to map directly from the parent representation + value = sourceObject; + RKMapping *destinationMapping = relationshipMapping.mapping; + RKObjectMapping *objectMapping = nil; + + if ([destinationMapping isKindOfClass:[RKObjectMapping class]]) { + objectMapping = (RKObjectMapping *)destinationMapping; + } else if ([destinationMapping isKindOfClass:[RKDynamicMapping class]]) { + objectMapping = [(RKDynamicMapping *)destinationMapping objectMappingForRepresentation:value]; + } + + if (! objectMapping) continue; // Mapping declined + if (! RKObjectContainsValueForMappings(value, objectMapping.propertyMappings)) { + continue; + } + } + + // Track that we applied this mapping + mappingsApplied++; + + if (value == nil) { + RKLogDebug(@"Did not find mappable relationship value keyPath '%@'", sourceKeyPath); + if (! parentObjectMapping.assignsNilForMissingRelationships) continue; + } + + if (value == [NSNull null]) { + RKLogDebug(@"Found null value at keyPath '%@'", sourceKeyPath); + value = nil; + } + + // nil out the property if necessary + if (value == nil) { + Class relationshipClass = [parentObjectMapping classForKeyPath:destinationKeyPath]; + BOOL mappingToCollection = RKClassIsCollection(relationshipClass); + RKAssignmentPolicy assignmentPolicy = relationshipMapping.assignmentPolicy; + if (assignmentPolicy == RKUnionAssignmentPolicy && mappingToCollection) { + // Unioning `nil` with the existing value is functionally equivalent to doing nothing, so just continue + continue; + } else if (assignmentPolicy == RKUnionAssignmentPolicy) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: @"Invalid assignment policy: cannot union a one-to-one relationship." }; + self.error = [NSError errorWithDomain:RKErrorDomain code:RKMappingErrorInvalidAssignmentPolicy userInfo:userInfo]; + continue; + } else if (assignmentPolicy == RKReplaceAssignmentPolicy) { + if (! [self applyReplaceAssignmentPolicyForRelationshipMapping:relationshipMapping]) { + continue; + } + } + + if ([self shouldSetValue:&value forKeyPath:destinationKeyPath usingMapping:relationshipMapping]) { + RKLogTrace(@"Setting nil for relationship value at keyPath '%@'", sourceKeyPath); + [destinationObject setValue:value forKeyPath:destinationKeyPath]; + } + + continue; + } + + // Handle case where incoming content is collection represented by a dictionary + if (relationshipMapping.mapping.forceCollectionMapping) { + // If we have forced mapping of a dictionary, map each subdictionary + if ([value isKindOfClass:[NSDictionary class]]) { + RKLogDebug(@"Collection mapping forced for NSDictionary, mapping each key/value independently..."); + NSArray *objectsToMap = [NSMutableArray arrayWithCapacity:[value count]]; + for (id key in value) { + NSDictionary *dictionaryToMap = @{key: [value valueForKey:key]}; + [(NSMutableArray *)objectsToMap addObject:dictionaryToMap]; + } + value = objectsToMap; + } else { + RKLogWarning(@"Collection mapping forced but mappable objects is of type '%@' rather than NSDictionary", NSStringFromClass([value class])); + } + } + + // Handle case where incoming content is a single object, but we want a collection + Class relationshipClass = [parentObjectMapping classForKeyPath:destinationKeyPath]; + BOOL mappingToCollection = RKClassIsCollection(relationshipClass); + BOOL objectIsCollection = RKObjectIsCollection(value); + if (mappingToCollection && !objectIsCollection) { + RKLogDebug(@"Asked to map a single object into a collection relationship. Transforming to an instance of: %@", NSStringFromClass(relationshipClass)); + if ([relationshipClass isSubclassOfClass:[NSArray class]]) { + value = [relationshipClass arrayWithObject:value]; + objectIsCollection = YES; + } else if ([relationshipClass isSubclassOfClass:[NSSet class]]) { + value = [relationshipClass setWithObject:value]; + objectIsCollection = YES; + } else if ([relationshipClass isSubclassOfClass:[NSOrderedSet class]]) { + value = [relationshipClass orderedSetWithObject:value]; + objectIsCollection = YES; + } else { + RKLogWarning(@"Failed to transform single object"); + } + } + + BOOL setValueForRelationship; + if (objectIsCollection) { + setValueForRelationship = [self mapOneToManyRelationshipWithValue:value mapping:relationshipMapping]; + } else { + setValueForRelationship = [self mapOneToOneRelationshipWithValue:value mapping:relationshipMapping]; + } + + if (! setValueForRelationship) continue; + + // Notify the delegate + if ([delegate respondsToSelector:@selector(mappingOperation:didSetValue:forKeyPath:usingMapping:)]) { + id setValue = [destinationObject valueForKeyPath:destinationKeyPath]; + [delegate mappingOperation:self didSetValue:setValue forKeyPath:destinationKeyPath usingMapping:relationshipMapping]; + } + + // Fail out if a validation error has occurred + if (self.error) break; + } + + return mappingsApplied > 0; +} + +- (void)applyNestedMappings +{ + RKObjectMapping *objectMapping = self.objectMapping; + RKAttributeMapping *attributeMapping = [objectMapping mappingForSourceKeyPath:RKObjectMappingNestingAttributeKeyName]; + if (attributeMapping) { + RKLogDebug(@"Found nested mapping definition to attribute '%@'", attributeMapping.destinationKeyPath); + id attributeValue = [[self.sourceObject allKeys] lastObject]; + if (attributeValue) { + RKLogDebug(@"Found nesting value of '%@' for attribute '%@'", attributeValue, attributeMapping.destinationKeyPath); + self.nestedAttributeSubstitutionKey = attributeMapping.destinationKeyPath; + self.nestedAttributeSubstitutionValue = attributeValue; + [self applyAttributeMapping:attributeMapping withValue:attributeValue]; + } else { + RKLogWarning(@"Unable to find nesting value for attribute '%@'", attributeMapping.destinationKeyPath); + } + } + + // Serialization + attributeMapping = [objectMapping mappingForDestinationKeyPath:RKObjectMappingNestingAttributeKeyName]; + if (attributeMapping) { + RKLogDebug(@"Found nested mapping definition to attribute '%@'", attributeMapping.destinationKeyPath); + id attributeValue = [self.sourceObject valueForKeyPath:attributeMapping.sourceKeyPath]; + if (attributeValue) { + RKLogDebug(@"Found nesting value of '%@' for attribute '%@'", attributeValue, attributeMapping.sourceKeyPath); + self.nestedAttributeSubstitutionKey = attributeMapping.sourceKeyPath; + self.nestedAttributeSubstitutionValue = attributeValue; + } else { + RKLogWarning(@"Unable to find nesting value for attribute '%@'", attributeMapping.destinationKeyPath); + } + } +} + +- (void)cancel +{ + self.cancelled = YES; + RKLogDebug(@"Mapping operation cancelled: %@", self); +} + +- (void)start +{ + [self main]; +} + +- (void)main +{ + if ([self isCancelled]) return; + + // Handle metadata + id parentSourceObject = self.parentSourceObject; + id sourceObject = [[RKMappingSourceObject alloc] initWithObject:self.sourceObject parentObject:parentSourceObject rootObject:self.rootSourceObject metadata:self.metadataList]; + self.sourceObject = sourceObject; + + RKLogDebug(@"Starting mapping operation..."); + RKLogTrace(@"Performing mapping operation: %@", self); + + id dataSource = self.dataSource; + id delegate = self.delegate; + RKMapping *mapping = self.mapping; + RKObjectMapping *objectMapping; + + if (! self.destinationObject) { + self.destinationObject = [self destinationObjectForMappingRepresentation:sourceObject parentRepresentation:parentSourceObject withMapping:mapping inRelationship:nil]; + if (! self.destinationObject) { + RKLogDebug(@"Mapping operation failed: Given nil destination object and unable to instantiate a destination object for mapping."); + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: @"Cannot perform a mapping operation with a nil destination object." }; + self.error = [NSError errorWithDomain:RKErrorDomain code:RKMappingErrorNilDestinationObject userInfo:userInfo]; + return; + } + self.newDestinationObject = YES; + } + + self.collectsMappingInfo = (![dataSource respondsToSelector:@selector(mappingOperationShouldCollectMappingInfo:)] || + [dataSource mappingOperationShouldCollectMappingInfo:self]); + + self.shouldSetUnchangedValues = ([self.dataSource respondsToSelector:@selector(mappingOperationShouldSetUnchangedValues:)] && + [self.dataSource mappingOperationShouldSetUnchangedValues:self]); + + // Determine the concrete mapping if we were initialized with a dynamic mapping + if ([mapping isKindOfClass:[RKDynamicMapping class]]) { + self.objectMapping = objectMapping = [(RKDynamicMapping *)mapping objectMappingForRepresentation:sourceObject]; + if (! objectMapping) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: @"A dynamic mapping failed to return a concrete object mapping matching the representation being mapped." }; + self.error = [NSError errorWithDomain:RKErrorDomain code:RKMappingErrorUnableToDetermineMapping userInfo:userInfo]; + return; + } + RKLogDebug(@"RKObjectMappingOperation was initialized with a dynamic mapping. Determined concrete mapping = %@", objectMapping); + + if ([delegate respondsToSelector:@selector(mappingOperation:didSelectObjectMapping:forDynamicMapping:)]) { + [delegate mappingOperation:self didSelectObjectMapping:objectMapping forDynamicMapping:(RKDynamicMapping *)mapping]; + } + if (self.collectsMappingInfo) { + self.mappingInfo = [[RKMappingInfo alloc] initWithObjectMapping:objectMapping dynamicMapping:(RKDynamicMapping *)mapping]; + } + } else if ([mapping isKindOfClass:[RKObjectMapping class]]) { + self.objectMapping = objectMapping = (RKObjectMapping *)mapping; + if (self.collectsMappingInfo) { + self.mappingInfo = [[RKMappingInfo alloc] initWithObjectMapping:objectMapping dynamicMapping:nil]; + } + } + + BOOL canSkipMapping = [dataSource respondsToSelector:@selector(mappingOperationShouldSkipPropertyMapping:)] && [dataSource mappingOperationShouldSkipPropertyMapping:self]; + if (! canSkipMapping) { + [self applyNestedMappings]; + if ([self isCancelled]) return; + BOOL mappedSimpleAttributes = [self applyAttributeMappings:[self simpleAttributeMappings]]; + if ([self isCancelled]) return; + BOOL mappedRelationships = [[self relationshipMappings] count] ? [self applyRelationshipMappings] : NO; + if ([self isCancelled]) return; + // NOTE: We map key path attributes last to allow you to map across the object graphs for objects created/updated by the relationship mappings + BOOL mappedKeyPathAttributes = [self applyAttributeMappings:[self keyPathAttributeMappings]]; + + if (!mappedSimpleAttributes && !mappedRelationships && !mappedKeyPathAttributes) { + // We did not find anything to do + RKLogDebug(@"Mapping operation did not find any mappable values for the attribute and relationship mappings in the given object representation"); + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: @"No mappable values found for any of the attributes or relationship mappings" }; + self.error = [NSError errorWithDomain:RKErrorDomain code:RKMappingErrorUnmappableRepresentation userInfo:userInfo]; + } + + // We did some mapping work, if there's no error let's commit our changes to the data source + if (self.error == nil) { + if ([dataSource respondsToSelector:@selector(commitChangesForMappingOperation:error:)]) { + NSError *error = nil; + BOOL success = [dataSource commitChangesForMappingOperation:self error:&error]; + if (! success) { + self.error = error; + } + } + } + } + + if (self.error) { + if ([delegate respondsToSelector:@selector(mappingOperation:didFailWithError:)]) { + [delegate mappingOperation:self didFailWithError:self.error]; + } + + RKLogDebug(@"Failed mapping operation: %@", [self.error localizedDescription]); + } else { + RKLogDebug(@"Finished mapping operation successfully..."); + } +} + +- (BOOL)performMapping:(NSError **)error +{ + [self start]; + if (error) *error = self.error; + return self.error == nil; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@ %p> for '%@' object. Mapping values from object %@ to object %@ with object mapping %@", + [self class], self, NSStringFromClass([self.destinationObject class]), self.sourceObject, self.destinationObject, self.objectMapping]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingOperationDataSource.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingOperationDataSource.h new file mode 100644 index 0000000..2d06b34 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingOperationDataSource.h @@ -0,0 +1,110 @@ +// +// RKMappingOperationDataSource.h +// RestKit +// +// Created by Blake Watters on 7/3/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +@class RKObjectMapping, RKMappingOperation, RKRelationshipMapping; + +/** + An object that adopts the `RKMappingOperationDataSource` protocol is responsible for the retrieval or creation of target objects within an `RKMapperOperation` or `RKMappingOperation`. A data source is responsible for meeting the requirements of the underlying data store implementation and must return a key-value coding compliant object instance that can be used as the target object of a mapping operation. It is also responsible for commiting any changes necessary to the underlying data store once a mapping operation has completed its work. + + At a minimum, a data source must implement the `mappingOperation:targetObjectForRepresentation:withMapping:` method. This method is responsible for finding an existing object instance to be updated or creating a new object if no existing object could be found or the underlying data store does not support persistence. Object mapping operations which target `NSObject` derived classes will always result in mapping to new transient objects, while persistent data stores such as Core Data can be queried to retrieve existing objects for update. + + @see `RKManagedObjectMappingOperationDataSource` + */ +@protocol RKMappingOperationDataSource <NSObject> + +@required + +/** + Asks the data source for the target object for an object mapping operation given an `NSDictionary` representation of the object's properties and the mapping object that will be used to perform the mapping. + + The `representation` value is a fragment of content from a deserialized response that has been identified as containing content that is mappable using the given mapping. + + @param mappingOperation The mapping operation requesting the target object. + @param representation A dictionary representation of the properties to be mapped onto the retrieved target object. + @param mapping The object mapping to be used to perform a mapping from the representation to the target object. + @return A key-value coding compliant object to perform the mapping on to. + */ +- (id)mappingOperation:(RKMappingOperation *)mappingOperation targetObjectForRepresentation:(NSDictionary *)representation withMapping:(RKObjectMapping *)mapping inRelationship:(RKRelationshipMapping *)relationshipMapping; + +@optional + +/** + Asks the data source for the target object for an object mapping operation the mapping object that will be used to perform the mapping. + + If not implemented or it returns nil, then the + `mappingOperation:targetObjectForRepresentation:withMapping:inRelationship:` method will be called to determine the target. + + It is preferable to implement this method if the `representation` is not needed to determine the target object, + as obtaining that value is somewhat expensive. + + @param mappingOperation The mapping operation requesting the target object. + @param representation A dictionary representation of the properties to be mapped onto the retrieved target object. + @param mapping The object mapping to be used to perform a mapping from the representation to the target object. + @return A key-value coding compliant object to perform the mapping on to. + */ +- (id)mappingOperation:(RKMappingOperation *)mappingOperation targetObjectForMapping:(RKObjectMapping *)mapping inRelationship:(RKRelationshipMapping *)relationshipMapping; + + +/** + Tells the data source to commit any changes to the underlying data store. + + @param mappingOperation The mapping operation that has completed its work. + @param error A pointer to an error to be set in the event that the mapping operation could not be committed. + @return A Boolean value indicating if the changes for the mapping operation were committed successfully. + */ +- (BOOL)commitChangesForMappingOperation:(RKMappingOperation *)mappingOperation error:(NSError **)error; + +/** + Tells the data source to delete the existing value for a relationship that has been mapped with an assignment policy of `RKReplaceAssignmentPolicy`. + + @param mappingOperation The mapping operation that is executing. + @param relationshipMapping The relationship mapping for which the existing value is being replaced. + @param error A pointer to an error to be set in the event that the deletion operation could not be completed. + @return A Boolean value indicating if the existing objects for the relationship were successfully deleted. + */ +- (BOOL)mappingOperation:(RKMappingOperation *)mappingOperation deleteExistingValueOfRelationshipWithMapping:(RKRelationshipMapping *)relationshipMapping error:(NSError **)error; + +/** + Asks the data source if it should set values for properties without checking that the value has been changed. This method can result in a performance improvement during mapping as the mapping operation will not attempt to assess the change state of the property being mapped. + + If this method is not implemented by the data source, then the mapping operation defaults to `NO`. + + @param mappingOperation The mapping operation that is querying the data source. + @return `YES` if the mapping operation should disregard property change status, else `NO`. + */ +- (BOOL)mappingOperationShouldSetUnchangedValues:(RKMappingOperation *)mappingOperation; + +- (BOOL)mappingOperationShouldSkipPropertyMapping:(RKMappingOperation *)mappingOperation; + +/** + Asks the data source if the mapping operation should collect `RKMappingInfo` information during the mapping + (stored in the `mappingInfo` property). If not needed, it can be a substantially faster to skip it. The + `mappingInfo` property will be nil if not collected. + + If this method is not implemented by the data source, then the mapping operation defaults to `YES`. + + @param mappingOperation The mapping operation that is querying the data source. + @return `YES` if the mapping operation should collect mapping information, else `NO`. +*/ +- (BOOL)mappingOperationShouldCollectMappingInfo:(RKMappingOperation *)mappingOperation; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingResult.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingResult.h new file mode 100644 index 0000000..2cdeff0 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingResult.h @@ -0,0 +1,91 @@ +// +// RKMappingResult.h +// RestKit +// +// Created by Blake Watters on 5/7/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +/** + The `RKMappingResult` class represents the aggregate object mapping results returned by an `RKMapperOperation` object. The mapping result provides a thin interface on top of an `NSDictionary` and provides convenient interfaces for accessing the mapping results in various representations. + */ +@interface RKMappingResult : NSObject + +///---------------------------------------- +/// @name Creating a Mapping Result +///---------------------------------------- + +/** + Initializes the receiver with a dictionary of mapped key paths and object values. + + @param dictionary A dictionary wherein the keys represent mapped key paths and the values represent the objects mapped at those key paths. Cannot be nil. + @return The receiver, initialized with the given dictionary. + */ +- (instancetype)initWithDictionary:(NSDictionary *)dictionary; + +///---------------------------------------- +/// @name Retrieving Result Representations +///---------------------------------------- + +/** + Returns a representation of the mapping result as a dictionary. + + The keys of the returned dictionary will correspond to the mapped key paths in the source object representation and the values will be the mapped objects. The returned value is a copy of the dictionary that was used to initialize the mapping result. + + @return A dictionary containing the mapping results. + */ +- (NSDictionary *)dictionary; + +/** + Returns a representation of the mapping result as a single object by returning the first mapped value from the aggregate array of mapped objects. + + The mapping result is coerced into a single object by retrieving all mapped objects and returning the first object. If the mapping result is empty, `nil` is returned. + + @return The first object contained in the mapping result. + */ +@property (nonatomic, readonly, strong) id firstObject; + +/** + Returns a representation of the mapping result as an array of objects. + + The array returned is a flattened collection of all mapped object values contained in the underlying dictionary result representation. No guarantee is made as to the ordering of objects within the returned collection when more than one key path was mapped, as `NSDictionary` objects are unordered, + + @return An array containing the objects contained in the mapping result. + */ +- (NSArray *)array; + +/** + Returns a representation of the mapping result as a set of objects. + + The set returned is a flattened collection of all mapped object values contained in the underlying dictionary result representation. + + @return A set containing the objects contained in the mapping result. + */ +@property (nonatomic, readonly, copy) NSSet *set; + +///---------------------------------------- +/// @name Counting Entries +///---------------------------------------- + +/** + Returns a count of the number of objects contained in the mapping result. This is an aggregate count of all objects across all mapped key paths in the result. + + @return A count of the number of mapped objects in the mapping result. + */ +@property (nonatomic, readonly) NSUInteger count; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingResult.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingResult.m new file mode 100644 index 0000000..d3b7f58 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKMappingResult.m @@ -0,0 +1,81 @@ +// +// RKMappingResult.m +// RestKit +// +// Created by Blake Watters on 5/7/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKMappingResult.h" + +@interface RKMappingResult () +@property (nonatomic, strong) NSDictionary *keyPathToMappedObjects; +@end + +@implementation RKMappingResult + +- (instancetype)initWithDictionary:(id)dictionary +{ + NSParameterAssert(dictionary); + self = [self init]; + if (self) { + self.keyPathToMappedObjects = dictionary; + } + + return self; +} + +- (NSDictionary *)dictionary +{ + return [self.keyPathToMappedObjects copy]; +} + +- (NSArray *)array +{ + // Flatten results down into a single array + NSMutableArray *collection = [NSMutableArray array]; + for (id object in [self.keyPathToMappedObjects allValues]) { + // We don't want to strip the keys off of a mapped dictionary result + if (NO == [object isKindOfClass:[NSDictionary class]] && [object respondsToSelector:@selector(allObjects)]) { + [collection addObjectsFromArray:[object allObjects]]; + } else { + [collection addObject:object]; + } + } + + return collection; +} + +- (NSSet *)set +{ + return [NSSet setWithArray:[self array]]; +} + +- (id)firstObject +{ + return [[self array] firstObject]; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p, results=%@>", NSStringFromClass([self class]), self, self.keyPathToMappedObjects]; +} + +- (NSUInteger)count +{ + return [[self array] count]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMapping.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMapping.h new file mode 100644 index 0000000..8884778 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMapping.h @@ -0,0 +1,528 @@ +// +// RKObjectMapping.h +// RestKit +// +// Created by Blake Watters on 4/30/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKMacros.h" +#import "RKMapping.h" +#import "RKValueTransformers.h" + +@class RKPropertyMapping, RKAttributeMapping, RKRelationshipMapping; +@protocol RKValueTransforming; + +/** + An `RKObjectMapping` object describes a transformation between object represenations using key-value coding and run-time type introspection. The mapping is defined in terms of a source object class and a collection of `RKPropertyMapping` objects describing how key paths in the source representation should be transformed into attributes and relationships on the target object. Object mappings are provided to instances of `RKMapperOperation` and `RKMappingOperation` to perform the transformations they describe. + + Object mappings are containers of property mappings that describe the actual key path transformations. There are two types of property mappings: + + 1. `RKAttributeMapping`: An attribute mapping describes a transformation between a single value from a source key path to a destination key path. The value to be mapped is read from the source object representation using `valueForKeyPath:` and then set to the destination key path using `setValueForKeyPath:`. Before the value is set, the `RKObjecMappingOperation` performing the mapping performs runtime introspection on the destination property to determine what, if any, type transformation is to be performed. Typical type transformations include reading an `NSString` value representation and mapping it to an `NSDecimalNumber` destination key path or reading an `NSString` and transforming it into an `NSDate` value before assigning to the destination. + 1. `RKRelationshipMapping`: A relationship mapping describes a transformation between a nested child object or objects from a source key path to a destination key path using another `RKObjectMapping`. The child objects to be mapped are read from the source object representation using `valueForKeyPath:`, then mapped recursively using the object mapping associated with the relationship mapping, and then finally assigned to the destination key path. Before assignment to the destination key path runtime type introspection is performed to determine if any type transformation is necessary. For relationship mappings, common type transformations include transforming a single object value in an `NSArray` or transforming an `NSArray` of object values into an `NSSet`. + + All type transformations available are discussed in detail in the documentation for `RKValueTransformer`. + + ## Transforming Representation to Property Keys + + Configuring object mappings can become quite repetitive if the keys in your serialized object representations follow a different convention than their local domain counterparts. For example, consider a typical JSON document in the "snake case" format: + + {"user": {"first_name": "Blake", "last_name": "Watters", "email_address": "blake@restkit.org"}} + + Typically when configuring a mapping for the object represented in this document we would transform the destination properties into the Objective-C idiomatic "llama case" variation. This can produce lengthy, error-prone mapping configurations in which the transformations are specified manually: + + RKObjectMapping *userMapping = [RKObjectMapping mappingForClass:[RKUser class]]; + [userMapping addAttributeMappingsFromDictionary:@{ @"first_name": @"firstName", @"last_name": @"lastName", @"email_address", @"emailAddress" }]; + + To combat this repetition, a block can be designated to perform a transformation on source keys to produce corresponding destination keys: + + [userMapping setSourceToDestinationKeyTransformationBlock:^NSString *(RKObjectMapping *mapping, NSString *sourceKey) { + // Value transformer compliments of TransformerKit (See https://github.com/mattt/TransformerKit) + return [[NSValueTransformer valueTransformerForName:TKLlamaCaseStringTransformerName] transformedValue:sourceKey]; + }]; + + With the block configured, the original configuration can be changed into a simpler array based invocation: + + [userMapping addAttributeMappingsFromArray:@[ @"first_name", @"last_name", @"email_address" ]]; + + Transformation blocks can be configured on a per-mapping basis via `setSourceToDestinationKeyTransformationBlock:` or globally via `[RKObjectMapping setDefaultSourceToDestinationKeyTransformationBlock:]`. + + @see `RKAttributeMapping` + @see `RKRelationshipMapping` + @see `RKConnectionMapping` + @see `RKMappingOperation` + @see `RKPropertyInspector` + */ +@interface RKObjectMapping : RKMapping <NSCopying> + +///--------------------------------- +/// @name Creating an Object Mapping +///--------------------------------- + +/** + Returns an object mapping for the specified class that is ready for configuration + + @param objectClass The class that the mapping targets. + @return A new mapping object. + */ ++ (instancetype)mappingForClass:(Class)objectClass; + +/** + Initializes the receiver with a given object class. This is the designated initializer. + + @param objectClass The class that the mapping targets. Cannot be `nil`. + @return The receiver, initialized with the given class. + */ +- (instancetype)initWithClass:(Class)objectClass; + +/** + Returns an object mapping with an `objectClass` of `NSMutableDictionary`. + + Request mappings are used when configuring mappings that are to be used for transforming local objects into HTTP parameters using the `RKObjectParameterization` class. + + @return An object mapping with an object class of `NSMutableDictionary`. + @see `RKObjectParameterization` + @see `RKObjectManager` + */ ++ (RKObjectMapping *)requestMapping; + +///---------------------------------- +/// @name Accessing Property Mappings +///---------------------------------- + +/** + The aggregate collection of attribute and relationship mappings within this object mapping. + */ +@property (nonatomic, copy, readonly) NSArray *propertyMappings; + +/** + Returns the property mappings of the receiver in a dictionary, where the keys are the source key paths and the values are instances of `RKAttributeMapping` or `RKRelationshipMapping`. + + @return The property mappings of the receiver in a dictionary, where the keys are the source key paths and the values are instances of `RKAttributeMapping` or `RKRelationshipMapping`. + @warning Note this method does not return any property mappings with a `nil` value for the source key path in the dictionary returned. + */ +@property (nonatomic, readonly) NSDictionary *propertyMappingsBySourceKeyPath; + +/** + Returns the property mappings of the receiver in a dictionary, where the keys are the destination key paths and the values are instances of `RKAttributeMapping` or `RKRelationshipMapping`. + + @return The property mappings of the receiver in a dictionary, where the keys are the destination key paths and the values are instances of `RKAttributeMapping` or `RKRelationshipMapping`. + @warning Note this method does not return any property mappings with a `nil` value for the source key path in the dictionary returned. + */ +@property (nonatomic, readonly) NSDictionary *propertyMappingsByDestinationKeyPath; + +/** + The collection of attribute mappings within this object mapping. + */ +@property (nonatomic, readonly) NSArray *attributeMappings; + +/** + The collection of single key attribute mappings within this object mapping. + + These are mappings where the source key path is a single key, and not a key path with multiple components. + */ +@property (nonatomic, readonly) NSArray *keyAttributeMappings; + +/** + The collection of key path attribute mappings within this object mapping. + + A key path mapping is one where the source key path is actually a path with multiple components. + */ +@property (nonatomic, readonly) NSArray *keyPathAttributeMappings; + +/** + The collection of relationship mappings within this object mapping. + */ +@property (nonatomic, readonly) NSArray *relationshipMappings; + +/** + Returns the property mapping registered with the receiver with the given source key path. + + @param sourceKeyPath The key path to retrieve. + */ +- (id)mappingForSourceKeyPath:(NSString *)sourceKeyPath; + +/** + Returns the property mapping registered with the receiver with the given destinationKeyPath key path. + + @param destinationKeyPath The key path to retrieve. + */ +- (id)mappingForDestinationKeyPath:(NSString *)destinationKeyPath; + +///--------------------------- +/// Managing Property Mappings +///--------------------------- + +/** + Adds a property mapping to the receiver. + + @param propertyMapping The property mapping to be added to the object mapping. + */ +- (void)addPropertyMapping:(RKPropertyMapping *)propertyMapping; + +/** + Adds an array of `RKAttributeMapping` or `RKRelationshipMapping` objects to the receiver. + + @param arrayOfPropertyMappings The array of property mappings to be added to the object mapping. + */ +- (void)addPropertyMappingsFromArray:(NSArray *)arrayOfPropertyMappings; + +/** + Removes an `RKAttributeMapping` or `RKRelationshipMapping` from the receiver. + + @param propertyMapping The attribute or relationship mapping to remove. + */ +- (void)removePropertyMapping:(RKPropertyMapping *)propertyMapping; + +/** + Adds attribute mappings from a given dictionary wherein the keys represent the source key path and the values represent the names of the target attributes on the destination object. + + @param keyPathToAttributeNames A dictionary keyed by source key to destination attribute name. + */ +- (void)addAttributeMappingsFromDictionary:(NSDictionary *)keyPathToAttributeNames; + +/** + Adds attribute mappings to the receiver from a given array. + + The array can contain `RKAttributeMapping` objects or `NSString` values. If an `NSString` is given, then a new `RKAttributeMapping` object is instantiated with a `sourceKeyPath` and `destinationKeyPath` equal to the string value. + + @param arrayOfAttributeNamesOrMappings An array of `RKAttributeMapping` or `NSString` values to be added to the receiver's set of attribute mappings, + */ +- (void)addAttributeMappingsFromArray:(NSArray *)arrayOfAttributeNamesOrMappings; + +/** + Adds a relationship mapping to the receiver with the given source key path and mapping. + + The destination key path will be the same as the source key path or processed by the source to destination key transformation block, if any is configured. + + @param sourceKeyPath The source key path at which to read the nested representation of the related objects. + @param mapping The object mapping with which to process the related object representation. + */ +- (void)addRelationshipMappingWithSourceKeyPath:(NSString *)sourceKeyPath mapping:(RKMapping *)mapping; + +///------------------------------------- +/// @name Configuring Key Transformation +///------------------------------------- + +/** + Sets an application-wide default transformation block to be used when attribute or relationship mappings are added to an object mapping by source key path. + + @param block The block to be set as the default source to destination key transformer for all object mappings in the application. + @see [RKObjectMapping setPropertyNameTransformationBlock:] + */ ++ (void)setDefaultSourceToDestinationKeyTransformationBlock:(NSString * (^)(RKObjectMapping *mapping, NSString *sourceKey))block; + +/** + Sets a block to executed to transform a source key into a destination key. + + The transformation block set with this method is used whenever an attribute or relationship mapping is added to the receiver via a method that accepts a string value for the source key. The block will be executed with the source key as the only argument and the value returned will be taken as the corresponding destination key. Methods on the `RKObjectMapping` class that will trigger the execution of the block configured via this method include: + * `addAttributeMappingsFromArray:` - Each string element contained in the given array is interpretted as a source key path and will be evaluated with the block to obtain a corresponding destination key path. + * `addRelationshipMappingWithSourceKeyPath:mapping:` - The source key path will be evaluated with the block to obtain a corresponding destination key path. + + @param block The block to execute when the receiver needs to transform a source key into a destination key. The block has a string return value specifying the destination key and accepts a single string argument: the source key that is to be transformed. + @warning Please note that the block given accepts a **key** as opposed to a **key path**. When a key path is given to a method supporting key transformation it will be decomposed into its key components by splitting the key path at the '.' (period) character, then each key will be evaluated using the transformation block and the results will be joined together into a new key path with the period character delimiter. + */ +- (void)setSourceToDestinationKeyTransformationBlock:(NSString * (^)(RKObjectMapping *mapping, NSString *sourceKey))block; + +///---------------------------------- +/// @name Mapping Nested Dictionaries +///---------------------------------- + +/** + Adds an attribute mapping from a dynamic nesting key value to an attribute. The mapped attribute name can then be referenced within other attribute mappings to access the nested content. + + For example, consider the following JSON: + + { "users": + { + "blake": { "id": 1234, "email": "blake@restkit.org" }, + "rachit": { "id": 5678, "email": "rachit@restkit.org" } + } + } + + We can configure our mappings to handle this in the following form: + + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[User class]]; + mapping.forceCollectionMapping = YES; // RestKit cannot infer this is a collection, so we force it + [mapping addAttributeMappingFromKeyOfRepresentationToAttribute:@"firstName"]; + [mapping addAttributeMappingsFromDictionary:@{ @"{firstName}.id": @"userID", @"{firstName}.email": @"email" }]; + */ +- (void)addAttributeMappingFromKeyOfRepresentationToAttribute:(NSString *)attributeName; + +/** + Adds an attribute mapping to a dynamic nesting key from an attribute. The mapped attribute name can then be referenced wthin other attribute mappings to map content under the nesting key path. + + For example, consider that we wish to map a local user object with the properties 'id', 'firstName' and 'email': + + RKUser *user = [RKUser new]; + user.firstName = @"blake"; + user.userID = @(1234); + user.email = @"blake@restkit.org"; + + And we wish to map it into JSON that looks like: + + { "blake": { "id": 1234, "email": "blake@restkit.org" } } + + We can configure our request mapping to handle this like so: + + RKObjectMapping *mapping = [RKObjectMapping requestMapping]; + [mapping addAttributeMappingToKeyOfRepresentationFromAttribute:@"firstName"]; + [mapping addAttributeMappingsFromDictionary:@{ @"userID": @"{firstName}.id", @"email": @"{firstName}.email" }]; + */ +- (void)addAttributeMappingToKeyOfRepresentationFromAttribute:(NSString *)attributeName; + +///---------------------------------- +/// @name Configuring Mapping Options +///---------------------------------- + +/** + The target class that the receiver describes a mapping for. + */ +@property (nonatomic, weak, readonly) Class objectClass; + +/** + When `YES`, any attributes that have mappings defined but are not present within the source object will be set to nil, clearing any existing value. + + **Default**: `NO` + */ +@property (nonatomic, assign) BOOL assignsDefaultValueForMissingAttributes; + +/** + When `YES`, any relationships that have mappings defined but are not present within the source object will be set to `nil`, clearing any existing value. + + **Default**: `NO` + */ +@property (nonatomic, assign) BOOL assignsNilForMissingRelationships; + +/** + When `YES`, key-value validation will be invoked at object mapping time. + + **Default**: `YES` + @see `validateValue:forKey:error:` + */ +@property (nonatomic, assign) BOOL performsKeyValueValidation; + +/** + A value transformer with which to process input values being mapped with the receiver. Defaults to a copy of `[RKValueTransformer defaultTransformer]`. + */ +@property (nonatomic, strong) id<RKValueTransforming> valueTransformer; + +/** + Returns the default value to be assigned to the specified attribute when it is missing from a mappable payload. + + The default implementation returns nil for transient object mappings. On an entity mapping, the default value returned from the Entity definition will be used. + + @see `[RKEntityMapping defaultValueForAttribute:]` + */ +- (id)defaultValueForAttribute:(NSString *)attributeName; + +///---------------------------------- +/// @name Generating Inverse Mappings +///---------------------------------- + +/** + Generates an inverse mapping for the rules specified within this object mapping. + + This can be used to quickly generate a corresponding serialization mapping from a configured object mapping. The inverse mapping will have the source and destination keyPaths swapped for all attribute and relationship mappings. All mapping configuration and date formatters are copied from the parent to the inverse mapping. + + @return A new mapping that will map the inverse of the receiver. + */ +- (instancetype)inverseMapping; + +/** + Generates an inverse mapping with all property mappings of the receiver that pass the given test. Each `RKAttributeMapping` and `RKRelationshipMapping` added to the receiver is yielded to the block for evaluation. The block is also invoked for any nested relationships that are traversed during the inversion process. + + @param predicate A block object to be invoked for each `RKPropertyMapping` that is considered for inversion. The block has a Boolean return value and accepts a single argument: the property mapping that is being evaluated for inversion. + @return A new mapping that will map the inverse of the receiver. + @see inverseMapping + */ +- (instancetype)inverseMappingWithPropertyMappingsPassingTest:(BOOL (^)(RKPropertyMapping *propertyMapping))predicate; + +///--------------------------------------------------- +/// @name Obtaining Information About the Target Class +///--------------------------------------------------- + +/** + Returns the class of the attribute or relationship property of the target `objectClass` with the given name. + + Given the name of a string property, this will return an `NSString`, etc. + + @param propertyName The name of the property we would like to retrieve the type of. + @return The class of the property. + */ +- (Class)classForProperty:(NSString *)propertyName; + +/** + Returns the class of the attribute or relationship property of the target `objectClass` at the given key path. + + Given a key path to a string property, this will return an `NSString`, etc. + + @param keyPath The name of the property we would like to retrieve the type of. + @return The class of the property at the given key path. + */ +- (Class)classForKeyPath:(NSString *)keyPath; + +@end + +///////////////////////////////////////////////////////////////////////////// + +/** + **Deprecated in v0.21.0** + + This category contains deprecated API interfaces for configuring date formatters. Starting in RestKit 0.20.4 date formatting is configured via the `RKValueTransformer` API's. + + Defines the interface for configuring time and date formatting handling within RestKit object mappings. For performance reasons, RestKit reuses a pool of date formatters rather than constructing them at mapping time. This collection of date formatters can be configured on a per-object mapping or application-wide basis using the static methods exposed in this category. + */ +@interface RKObjectMapping (LegacyDateAndTimeFormatting) + +/** + **Deprecated in v0.21.0** + + This method accesses `[RKValueTransformer defaultTransformer]` and returns all `NSDate` <-> `NSString` value transformers. + + Returns the collection of default date formatters that will be used for all object mappings that have not been configured specifically. + + Out of the box, RestKit initializes default date formatters for you in the UTC time zone with the following format strings: + + * `yyyy-MM-dd'T'HH:mm:ss'Z'` + * `MM/dd/yyyy` + + @return An array of `NSFormatter` objects used when mapping strings into NSDate attributes + */ ++ (NSArray *)defaultDateFormatters DEPRECATED_ATTRIBUTE_MESSAGE("Configure `[RKValueTransformer defaultValueTransformer]` instead"); + +/** + **Deprecated in v0.21.0** + + This method accesses `[RKValueTransformer defaultTransformer]` and removes all `NSDate` <-> `NSString` value transformers that are instances of `NSFormatter` and then adds the given array of formatters to the default transformer. + + Sets the collection of default date formatters to the specified array. The array should contain configured instances of NSDateFormatter in the order in which you want them applied during object mapping operations. + + @param dateFormatters An array of date formatters to replace the existing defaults. + @see `defaultDateFormatters` + */ ++ (void)setDefaultDateFormatters:(NSArray *)dateFormatters DEPRECATED_ATTRIBUTE_MESSAGE("Configure `[RKValueTransformer defaultValueTransformer]` instead"); + +/** + **Deprecated in v0.21.0** + + This methods prepends the given date formatter to `[RKValueTransformer defaultValueTransformer]`. + + Adds a date formatter instance to the default collection + + @param dateFormatter An `NSFormatter` object to prepend to the default formatters collection + @see `defaultDateFormatters` + */ ++ (void)addDefaultDateFormatter:(NSFormatter *)dateFormatter DEPRECATED_ATTRIBUTE_MESSAGE("Configure `[RKValueTransformer defaultValueTransformer]` instead"); + +/** + **Deprecated in v0.21.0** + + This method instantiates a new `NSDateFormatter` object with the given format string and time zone and prepends it to `[RKValueTransformer defaultValueTransformer]`. + + Convenience method for quickly constructing a date formatter and adding it to the collection of default date formatters. The locale is auto-configured to `en_US_POSIX`. + + @param dateFormatString The dateFormat string to assign to the newly constructed `NSDateFormatter` instance + @param nilOrTimeZone The NSTimeZone object to configure on the `NSDateFormatter` instance. Defaults to UTC time. + @see `NSDateFormatter` + */ ++ (void)addDefaultDateFormatterForString:(NSString *)dateFormatString inTimeZone:(NSTimeZone *)nilOrTimeZone DEPRECATED_ATTRIBUTE_MESSAGE("Configure `[RKValueTransformer defaultValueTransformer]` instead"); + +/** + **Deprecated in v0.21.0** + + This method returns the first `NSString` -> `NSDate` value transformer that is an instance of `NSFormatter` in `[RKValueTransformer defaultValueTransformer]`. + + Returns the preferred date formatter to use when generating NSString representations from NSDate attributes. This type of transformation occurs when RestKit is mapping local objects into JSON or form encoded serializations that do not have a native time construct. + + Defaults to an instance of the `RKISO8601DateFormatter` configured with the UTC time-zone. The format string is equal to "yyyy-MM-DDThh:mm:ssTZD" + + For details about the ISO-8601 format, see http://www.w3.org/TR/NOTE-datetime + + @return The preferred NSFormatter object to use when serializing dates into strings + */ ++ (NSFormatter *)preferredDateFormatter DEPRECATED_ATTRIBUTE_MESSAGE("Access `[RKValueTransformer defaultValueTransformer]` instead"); + +/** + **Deprecated in v0.21.0** + + This method inserts the given date formatter at position zero in `[RKValueTransformer defaultValueTransformer]`, ensuring that it will be used for all transformations from `NSDate` -> `NSString`. + + Sets the preferred date formatter to use when generating NSString representations from NSDate attributes. This type of transformation occurs when RestKit is mapping local objects into JSON or form encoded serializations that do not have a native time construct. + + @param dateFormatter The NSFormatter object to designate as the new preferred instance + */ ++ (void)setPreferredDateFormatter:(NSFormatter *)dateFormatter DEPRECATED_ATTRIBUTE_MESSAGE("Configure `[RKValueTransformer defaultValueTransformer]` instead"); + +///---------------------------------- +/// @name Configuring Date Formatters +///---------------------------------- + +/** + **Deprecated in v0.21.0** + + An array of `NSFormatter` objects to use when mapping string values into `NSDate` attributes on the target `objectClass`. Each date formatter will be invoked with the string value being mapped until one of the date formatters does not return nil. + + Defaults to the application-wide collection of date formatters configured via `[RKObjectMapping setDefaultDateFormatters:]` + + @see `[RKObjectMapping defaultDateFormatters]` + */ +@property (nonatomic, strong) NSArray *dateFormatters DEPRECATED_ATTRIBUTE_MESSAGE("Use `valueTransformer` instead"); + +/** + **Deprecated in v0.21.0** + + The `NSFormatter` object for your application's preferred date and time configuration. This date formatter will be used when generating string representations of NSDate attributes (i.e. during serialization to URL form encoded or JSON format). + + Defaults to the application-wide preferred date formatter configured via: `[RKObjectMapping setPreferredDateFormatter:]` + + @see `[RKObjectMapping preferredDateFormatter]` + */ +@property (nonatomic, strong) NSFormatter *preferredDateFormatter DEPRECATED_ATTRIBUTE_MESSAGE("Use `valueTransformer` instead"); + +@end + +@interface RKObjectMapping (Deprecations) +// These methods were named to be more idiomation. Properties beginning with `set` generate method names like `setSetDefaultValueForMissingAttributes` and `performKeyValueValidation` reads more as a command to perform something than a configuration switch. +@property (nonatomic, assign, getter = shouldSetDefaultValueForMissingAttributes) BOOL setDefaultValueForMissingAttributes DEPRECATED_ATTRIBUTE_MESSAGE("Renamed to `assignsDefaultValueForMissingAttributes`"); +@property (nonatomic, assign) BOOL setNilForMissingRelationships DEPRECATED_ATTRIBUTE_MESSAGE("Renamed to `assignsNilForMissingRelationships`"); +@property (nonatomic, assign) BOOL performKeyValueValidation DEPRECATED_ATTRIBUTE_MESSAGE("Renamed to `performsKeyValueValidation`"); +@end + +///---------------- +/// @name Functions +///---------------- + +/** + Returns an date representation of a given string value by attempting to parse the string with all default date formatters in turn. + + @param dateString A string object encoding a date value. + @return An `NSDate` object parsed from the given string, or `nil` if the string was found to be unparsable by all default date formatters. + @see [RKObjectMapping defaultDateFormatters] + */ +NSDate *RKDateFromString(NSString *dateString); + +/** + Returns a string representation of a given date formatted with the preferred date formatter. + + This is a convenience function that is equivalent to the following example code: + + NSString *string = [[RKObjectMapping preferredDateFormatter] stringForObjectValue:date] + + @param date The date object to be formatted. + @return An `NSString` object representation of the given date formatted by the preferred date formatter. + @see [RKObjectMapping preferredDateFormatter] + */ +NSString *RKStringFromDate(NSDate *date); diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMapping.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMapping.m new file mode 100644 index 0000000..ed69c6f --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMapping.m @@ -0,0 +1,616 @@ +// +// RKObjectMapping.m +// RestKit +// +// Created by Blake Watters on 4/30/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <CoreFoundation/CoreFoundation.h> +#import "RKObjectMapping.h" +#import "RKRelationshipMapping.h" +#import "RKPropertyInspector.h" +#import "RKLog.h" +#import "RKAttributeMapping.h" +#import "RKRelationshipMapping.h" +#import "RKValueTransformers.h" +#import "ISO8601DateFormatterValueTransformer.h" + +typedef NSString * (^RKSourceToDesinationKeyTransformationBlock)(RKObjectMapping *, NSString *); + +// Constants +NSString * const RKObjectMappingNestingAttributeKeyName = @"<RK_NESTING_ATTRIBUTE>"; + +static RKSourceToDesinationKeyTransformationBlock defaultSourceToDestinationKeyTransformationBlock = nil; + +@interface RKObjectMapping (Copying) +- (void)copyPropertiesFromMapping:(RKObjectMapping *)mapping; +@end + +@interface RKMappingInverter : NSObject +@property (nonatomic, strong) RKObjectMapping *mapping; +@property (nonatomic, strong) NSMutableDictionary *invertedMappings; + +- (instancetype)initWithMapping:(RKObjectMapping *)mapping; +- (RKObjectMapping *)inverseMappingWithPredicate:(BOOL (^)(RKPropertyMapping *propertyMapping))predicate; +@end + +@implementation RKMappingInverter + +- (instancetype)initWithMapping:(RKObjectMapping *)mapping +{ + self = [self init]; + if (self) { + self.mapping = mapping; + self.invertedMappings = [NSMutableDictionary dictionary]; + } + return self; +} + +- (RKObjectMapping *)invertMapping:(RKObjectMapping *)mapping withPredicate:(BOOL (^)(RKPropertyMapping *propertyMapping))predicate +{ + // Use an NSValue to obtain a non-copied key into our inversed mappings dictionary + NSValue *dictionaryKey = [NSValue valueWithNonretainedObject:mapping]; + RKObjectMapping *inverseMapping = (self.invertedMappings)[dictionaryKey]; + if (inverseMapping) return inverseMapping; + + inverseMapping = [RKObjectMapping requestMapping]; + (self.invertedMappings)[dictionaryKey] = inverseMapping; + [inverseMapping copyPropertiesFromMapping:mapping]; + // We want to serialize `nil` values + inverseMapping.assignsDefaultValueForMissingAttributes = YES; + + for (RKAttributeMapping *attributeMapping in mapping.attributeMappings) { + if (predicate && !predicate(attributeMapping)) continue; + [inverseMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:attributeMapping.destinationKeyPath toKeyPath:attributeMapping.sourceKeyPath]]; + } + + for (RKRelationshipMapping *relationshipMapping in mapping.relationshipMappings) { + RKObjectMapping *mapping = (RKObjectMapping *) relationshipMapping.mapping; + if (! [mapping isKindOfClass:[RKObjectMapping class]]) { + RKLogWarning(@"Unable to generate inverse mapping for relationship '%@': %@ relationships cannot be inversed.", relationshipMapping.sourceKeyPath, NSStringFromClass([mapping class])); + continue; + } + if (predicate && !predicate(relationshipMapping)) continue; + RKMapping *inverseRelationshipMapping = [self invertMapping:mapping withPredicate:predicate]; + if (inverseRelationshipMapping) [inverseMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:relationshipMapping.destinationKeyPath toKeyPath:relationshipMapping.sourceKeyPath withMapping:inverseRelationshipMapping]]; + } + + return inverseMapping; +} + +- (RKObjectMapping *)inverseMappingWithPredicate:(BOOL (^)(RKPropertyMapping *propertyMapping))predicate +{ + return [self invertMapping:self.mapping withPredicate:predicate]; +} + +@end + +@interface RKPropertyMapping () +@property (nonatomic, weak, readwrite) RKObjectMapping *objectMapping; +@end + +@interface RKObjectMapping () +@property (nonatomic, weak, readwrite) Class objectClass; +@property (nonatomic, copy, readwrite) NSArray *propertyMappings; + +@property (nonatomic, strong) NSArray *relationshipMappings; +@property (nonatomic, strong) NSArray *attributeMappings; +@property (nonatomic, strong) NSArray *keyAttributeMappings; +@property (nonatomic, strong) NSArray *keyPathAttributeMappings; +@property (nonatomic, strong) NSMutableDictionary *propertiesBySourceKeyPath; +@property (nonatomic, strong) NSMutableDictionary *propertiesByDestinationKeyPath; + +@property (nonatomic, weak, readonly) NSArray *mappedKeyPaths; +@property (nonatomic, copy) RKSourceToDesinationKeyTransformationBlock sourceToDestinationKeyTransformationBlock; +@end + +@implementation RKObjectMapping + ++ (instancetype)mappingForClass:(Class)objectClass +{ + return [[self alloc] initWithClass:objectClass]; +} + ++ (RKObjectMapping *)requestMapping +{ + if (! [self isEqual:[RKObjectMapping class]]) { + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"`%@` is not meant to be invoked on `%@`. You probably want to invoke `[RKObjectMapping requestMapping]`.", + NSStringFromSelector(_cmd), + NSStringFromClass(self)] + userInfo:nil]; + } + + // TODO: Hook up value transformers from `RKObjectParameterization` + RKObjectMapping *objectMapping = [self mappingForClass:[NSMutableDictionary class]]; + objectMapping.assignsDefaultValueForMissingAttributes = YES; + return objectMapping; +} + ++ (void)initialize +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + // Add an ISO8601DateFormatter to the transformation stack for backwards compatibility + RKISO8601DateFormatter *dateFormatter = [RKISO8601DateFormatter defaultISO8601DateFormatter]; + [[RKValueTransformer defaultValueTransformer] insertValueTransformer:dateFormatter atIndex:0]; + }); +} + +- (instancetype)initWithClass:(Class)objectClass +{ + self = [super init]; + if (self) { + self.objectClass = objectClass; + self.propertyMappings = [NSArray new]; + self.relationshipMappings = [NSArray new]; + self.attributeMappings = [NSArray new]; + self.keyAttributeMappings = [NSArray new]; + self.keyPathAttributeMappings = [NSArray new]; + self.propertiesBySourceKeyPath = [NSMutableDictionary new]; + self.propertiesByDestinationKeyPath = [NSMutableDictionary new]; + self.assignsDefaultValueForMissingAttributes = NO; + self.assignsNilForMissingRelationships = NO; + self.forceCollectionMapping = NO; + self.performsKeyValueValidation = YES; + self.sourceToDestinationKeyTransformationBlock = defaultSourceToDestinationKeyTransformationBlock; + self.valueTransformer = [[RKValueTransformer defaultValueTransformer] copy]; + } + + return self; +} + +- (void)copyPropertiesFromMapping:(RKObjectMapping *)mapping +{ + self.assignsDefaultValueForMissingAttributes = mapping.assignsDefaultValueForMissingAttributes; + self.assignsNilForMissingRelationships = mapping.assignsNilForMissingRelationships; + self.forceCollectionMapping = mapping.forceCollectionMapping; + self.performsKeyValueValidation = mapping.performsKeyValueValidation; + self.valueTransformer = mapping.valueTransformer; + self.sourceToDestinationKeyTransformationBlock = mapping.sourceToDestinationKeyTransformationBlock; +} + +- (id)copyWithZone:(NSZone *)zone +{ + RKObjectMapping *copy = [[[self class] allocWithZone:zone] initWithClass:self.objectClass]; + [copy copyPropertiesFromMapping:self]; + + for (RKPropertyMapping *propertyMapping in self.propertyMappings) { + [copy addPropertyMapping:[propertyMapping copy]]; + } + + return copy; +} + ++ (void)setDefaultSourceToDestinationKeyTransformationBlock:(RKSourceToDesinationKeyTransformationBlock)block +{ + defaultSourceToDestinationKeyTransformationBlock = block; +} + +- (NSDictionary *)propertyMappingsBySourceKeyPath +{ + return [self.propertiesBySourceKeyPath copy]; +} + +- (NSDictionary *)propertyMappingsByDestinationKeyPath +{ + return [self.propertiesByDestinationKeyPath copy]; +} + +- (NSArray *)mappedKeyPaths +{ + return [self.propertyMappings valueForKey:@"destinationKeyPath"]; +} + +- (NSArray *)attributeMappings +{ + return _attributeMappings; +} + +- (NSArray *)relationshipMappings +{ + return _relationshipMappings; +} + +- (NSArray *)keyAttributeMappings +{ + return _keyAttributeMappings; +} + +- (NSArray *)keyPathAttributeMappings +{ + return _keyPathAttributeMappings; +} + +static NSArray *RKAddProperty(NSArray *array, RKPropertyMapping *mapping) +{ + return (array)? [array arrayByAddingObject:mapping] : @[mapping]; +} + +static NSArray *RKRemoveProperty(NSArray *array, RKPropertyMapping *mapping) +{ + if (![array containsObject:mapping]) return array; + NSMutableArray *mappings = [[NSMutableArray alloc] initWithArray:array]; //alloc/init avoids autorelease + [mappings removeObject:mapping]; + return [mappings copy]; +} + +- (void)addPropertyMapping:(RKPropertyMapping *)propertyMapping +{ + NSAssert1([[self mappedKeyPaths] containsObject:propertyMapping.destinationKeyPath] == NO, + @"Unable to add mapping for keyPath %@, one already exists...", propertyMapping.destinationKeyPath); + NSAssert(self.propertyMappings, @"self.propertyMappings is nil"); + NSAssert(propertyMapping.objectMapping == nil, @"Cannot add a property mapping object that has already been added to another `RKObjectMapping` object. You probably want to obtain a copy of the mapping: `[propertyMapping copy]`"); + propertyMapping.objectMapping = self; + self.propertyMappings = [self.propertyMappings arrayByAddingObject:propertyMapping]; + [self.propertiesBySourceKeyPath setObject:propertyMapping forKey:propertyMapping.sourceKeyPath ?: [NSNull null]]; + if (propertyMapping.destinationKeyPath) (self.propertiesByDestinationKeyPath)[propertyMapping.destinationKeyPath] = propertyMapping; + if ([propertyMapping isMemberOfClass:[RKRelationshipMapping class]]) { + self.relationshipMappings = RKAddProperty(self.relationshipMappings, propertyMapping); + } + else if ([propertyMapping isMemberOfClass:[RKAttributeMapping class]]) + { + self.attributeMappings = RKAddProperty(self.attributeMappings, propertyMapping); + if ([propertyMapping.sourceKeyPath rangeOfString:@"." options:NSLiteralSearch].length == 0) { + self.keyAttributeMappings = RKAddProperty(self.keyAttributeMappings, propertyMapping); + } + else { + self.keyPathAttributeMappings = RKAddProperty(self.keyPathAttributeMappings, propertyMapping); + } + } + + if (propertyMapping.propertyValueClass == Nil && ![self.objectClass isSubclassOfClass:[NSDictionary class]]) { + propertyMapping.propertyValueClass = [self classForKeyPath:propertyMapping.destinationKeyPath]; + } +} + +- (void)addPropertyMappingsFromArray:(NSArray *)arrayOfPropertyMappings +{ + NSAssert([[arrayOfPropertyMappings valueForKeyPath:@"@distinctUnionOfObjects.objectMapping"] count] == 0, @"One or more of the property mappings in the given array has already been added to another `RKObjectMapping` object. You probably want to obtain a copy of the array of mappings: `[[NSArray alloc] initWithArray:arrayOfPropertyMappings copyItems:YES]`"); + for (RKPropertyMapping *propertyMapping in arrayOfPropertyMappings) { + [self addPropertyMapping:propertyMapping]; + } +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@:%p objectClass=%@ propertyMappings=%@>", + NSStringFromClass([self class]), self, NSStringFromClass(self.objectClass), self.propertyMappings]; +} + +- (id)mappingForSourceKeyPath:(NSString *)sourceKeyPath +{ + return _propertiesBySourceKeyPath[sourceKeyPath ?: [NSNull null]]; +} + +- (id)mappingForDestinationKeyPath:(NSString *)destinationKeyPath +{ + return _propertiesByDestinationKeyPath[destinationKeyPath]; +} + +// Evaluate each component individually so that camelization, etc. considers each component individually +- (NSString *)transformSourceKeyPath:(NSString *)keyPath +{ + if (!self.sourceToDestinationKeyTransformationBlock) return keyPath; + + NSRange dotRange = [keyPath rangeOfString:@"." options:NSLiteralSearch]; + if (dotRange.length == 0) { + return self.sourceToDestinationKeyTransformationBlock(self, keyPath); + } + + NSArray *components = [keyPath componentsSeparatedByString:@"."]; + NSMutableArray *mutableComponents = [NSMutableArray arrayWithCapacity:[components count]]; + [components enumerateObjectsUsingBlock:^(id component, NSUInteger idx, BOOL *stop) { + [mutableComponents addObject:self.sourceToDestinationKeyTransformationBlock(self, component)]; + }]; + + return [mutableComponents componentsJoinedByString:@"."]; +} + +- (void)addAttributeMappingsFromDictionary:(NSDictionary *)keyPathToAttributeNames +{ + for (NSString *attributeKeyPath in keyPathToAttributeNames) { + [self addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:attributeKeyPath toKeyPath:keyPathToAttributeNames[attributeKeyPath]]]; + } +} + +- (void)addAttributeMappingsFromArray:(NSArray *)arrayOfAttributeNamesOrMappings +{ + NSMutableArray *arrayOfAttributeMappings = [NSMutableArray arrayWithCapacity:[arrayOfAttributeNamesOrMappings count]]; + for (id entry in arrayOfAttributeNamesOrMappings) { + if ([entry isKindOfClass:[NSString class]]) { + NSString *destinationKeyPath = [self transformSourceKeyPath:entry]; + [arrayOfAttributeMappings addObject:[RKAttributeMapping attributeMappingFromKeyPath:entry toKeyPath:destinationKeyPath]]; + } else if ([entry isKindOfClass:[RKAttributeMapping class]]) { + [arrayOfAttributeMappings addObject:entry]; + } else { + [NSException raise:NSInvalidArgumentException + format:@"*** - [%@ %@]: Unable to attribute mapping from unsupported entry of type '%@' (%@).", NSStringFromClass([self class]), NSStringFromSelector(_cmd), NSStringFromClass([entry class]), entry]; + } + } + + [self addPropertyMappingsFromArray:arrayOfAttributeMappings]; +} + +- (void)addRelationshipMappingWithSourceKeyPath:(NSString *)sourceKeyPath mapping:(RKMapping *)mapping +{ + NSParameterAssert(sourceKeyPath); + NSParameterAssert(mapping); + + NSString *destinationKeyPath = [self transformSourceKeyPath:sourceKeyPath]; + RKRelationshipMapping *relationshipMapping = [RKRelationshipMapping relationshipMappingFromKeyPath:sourceKeyPath toKeyPath:destinationKeyPath withMapping:mapping]; + [self addPropertyMapping:relationshipMapping]; +} + +- (void)removePropertyMapping:(RKPropertyMapping *)attributeOrRelationshipMapping +{ + if ([self.propertyMappings containsObject:attributeOrRelationshipMapping]) { + attributeOrRelationshipMapping.objectMapping = nil; + self.propertyMappings = RKRemoveProperty(self.propertyMappings, attributeOrRelationshipMapping); + self.relationshipMappings = RKRemoveProperty(self.relationshipMappings, attributeOrRelationshipMapping); + self.attributeMappings = RKRemoveProperty(self.attributeMappings, attributeOrRelationshipMapping); + self.keyAttributeMappings = RKRemoveProperty(self.keyAttributeMappings, attributeOrRelationshipMapping); + self.keyPathAttributeMappings = RKRemoveProperty(self.keyPathAttributeMappings, attributeOrRelationshipMapping); + [self.propertiesBySourceKeyPath removeObjectForKey:attributeOrRelationshipMapping.sourceKeyPath ?: [NSNull null]]; + [self.propertiesByDestinationKeyPath removeObjectForKey:attributeOrRelationshipMapping.destinationKeyPath]; + } +} + +- (instancetype)inverseMappingWithPropertyMappingsPassingTest:(BOOL (^)(RKPropertyMapping *propertyMapping))predicate +{ + RKMappingInverter *mappingInverter = [[RKMappingInverter alloc] initWithMapping:self]; + return [mappingInverter inverseMappingWithPredicate:predicate]; +} + +- (instancetype)inverseMapping +{ + return [self inverseMappingWithPropertyMappingsPassingTest:nil]; +} + +- (void)addAttributeMappingFromKeyOfRepresentationToAttribute:(NSString *)attributeName +{ + [self addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:RKObjectMappingNestingAttributeKeyName toKeyPath:attributeName]]; +} + +- (void)addAttributeMappingToKeyOfRepresentationFromAttribute:(NSString *)attributeName +{ + [self addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:attributeName toKeyPath:RKObjectMappingNestingAttributeKeyName]]; +} + +- (RKAttributeMapping *)mappingForAttribute:(NSString *)attributeKey +{ + for (RKAttributeMapping *mapping in [self attributeMappings]) { + if ([mapping.destinationKeyPath isEqualToString:attributeKey]) { + return mapping; + } + } + + return nil; +} + +- (RKRelationshipMapping *)mappingForRelationship:(NSString *)relationshipKey +{ + for (RKRelationshipMapping *mapping in [self relationshipMappings]) { + if ([mapping.destinationKeyPath isEqualToString:relationshipKey]) { + return mapping; + } + } + + return nil; +} + +- (id)defaultValueForAttribute:(NSString *)attributeName +{ + return nil; +} + +- (Class)classForProperty:(NSString *)propertyName +{ + return [[RKPropertyInspector sharedInspector] classForPropertyNamed:propertyName ofClass:self.objectClass isPrimitive:nil]; +} + +- (Class)classForKeyPath:(NSString *)keyPath +{ + if (keyPath == nil) return self.objectClass; + + RKPropertyInspector *inspector = [RKPropertyInspector sharedInspector]; + + if ([keyPath rangeOfString:@"." options:NSLiteralSearch].length == 0) { + return [inspector classForPropertyNamed:keyPath ofClass:self.objectClass isPrimitive:nil]; + } + + NSArray *components = [keyPath componentsSeparatedByString:@"."]; + Class propertyClass = self.objectClass; + for (NSString *property in components) { + propertyClass = [inspector classForPropertyNamed:property ofClass:propertyClass isPrimitive:nil]; + if (! propertyClass) break; + } + + return propertyClass; +} + +- (BOOL)isEqualToMapping:(RKObjectMapping *)otherMapping +{ + if (! [otherMapping isKindOfClass:[RKObjectMapping class]]) return NO; + if ((self.objectClass && otherMapping.objectClass) && + ! [otherMapping.objectClass isEqual:self.objectClass]) { + return NO; + } else if (self.objectClass != nil && otherMapping.objectClass == nil) { + return NO; + } else if (self.objectClass == nil && otherMapping.objectClass != nil) { + return NO; + } + + // Check that the number of attribute/relationship mappings is equal and compare all + if ([self.propertyMappings count] != [otherMapping.propertyMappings count]) return NO; + + for (RKPropertyMapping *propertyMapping in self.propertyMappings) { + RKPropertyMapping *otherPropertyMapping = [otherMapping mappingForSourceKeyPath:propertyMapping.sourceKeyPath]; + if (! [propertyMapping isEqualToMapping:otherPropertyMapping]) return NO; + } + + return YES; +} + +@end + +///////////////////////////////////////////////////////////////////////////// + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" + +@implementation RKObjectMapping (LegacyDateAndTimeFormatting) + ++ (NSArray *)defaultDateFormatters +{ + NSArray *valueTransformers = [[RKValueTransformer defaultValueTransformer] valueTransformersForTransformingFromClass:[NSString class] toClass:[NSDate class]]; + NSMutableArray *dateFormatters = [NSMutableArray arrayWithCapacity:[valueTransformers count]]; + for (id<RKValueTransforming> valueTransformer in valueTransformers) { + if ([valueTransformer respondsToSelector:@selector(dateFromString:)]) [dateFormatters addObject:valueTransformer]; + } + return dateFormatters; +} + ++ (void)setDefaultDateFormatters:(NSArray *)dateFormatters +{ + NSArray *defaultDateFormatters = [self defaultDateFormatters]; + for (NSDateFormatter *dateFormatter in defaultDateFormatters) { + [[RKValueTransformer defaultValueTransformer] removeValueTransformer:dateFormatter]; + } + + for (NSDateFormatter *dateFormatter in dateFormatters) { + [[RKValueTransformer defaultValueTransformer] addValueTransformer:dateFormatter]; + } +} + ++ (void)addDefaultDateFormatter:(id)dateFormatter +{ + [[RKValueTransformer defaultValueTransformer] insertValueTransformer:dateFormatter atIndex:0]; +} + ++ (void)addDefaultDateFormatterForString:(NSString *)dateFormatString inTimeZone:(NSTimeZone *)nilOrTimeZone +{ + NSDateFormatter *dateFormatter = [NSDateFormatter new]; + dateFormatter.dateFormat = dateFormatString; + dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; + dateFormatter.timeZone = nilOrTimeZone ?: [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; + [self addDefaultDateFormatter:dateFormatter]; +} + ++ (NSFormatter *)preferredDateFormatter +{ + NSArray *defaultDateFormatters = [self defaultDateFormatters]; + return [defaultDateFormatters count] ? defaultDateFormatters[0] : nil; +} + ++ (void)setPreferredDateFormatter:(NSDateFormatter *)dateFormatter +{ + [[RKValueTransformer defaultValueTransformer] insertValueTransformer:dateFormatter atIndex:0]; +} + +#pragma mark - Date and Time + +- (NSFormatter *)preferredDateFormatter +{ + if ([self.valueTransformer isKindOfClass:[RKCompoundValueTransformer class]]) { + NSArray *dateToStringTransformers = [(RKCompoundValueTransformer *)self.valueTransformer valueTransformersForTransformingFromClass:[NSDate class] toClass:[NSString class]]; + for (id<RKValueTransforming> valueTransformer in dateToStringTransformers) { + if ([valueTransformer isKindOfClass:[NSFormatter class]]) return (NSFormatter *)valueTransformer; + } + } + return nil; +} + +- (void)setPreferredDateFormatter:(NSFormatter *)preferredDateFormatter +{ + if ([self.valueTransformer isKindOfClass:[RKCompoundValueTransformer class]]) { + [(RKCompoundValueTransformer *)self.valueTransformer insertValueTransformer:(NSFormatter<RKValueTransforming> *)preferredDateFormatter atIndex:0]; + } +} + +- (NSArray *)dateFormatters +{ + if ([self.valueTransformer isKindOfClass:[RKCompoundValueTransformer class]]) { + return [(RKCompoundValueTransformer *)self.valueTransformer valueTransformersForTransformingFromClass:[NSDate class] toClass:[NSString class]]; + } else return nil; +} + +- (void)setDateFormatters:(NSArray *)dateFormatters +{ + if (! [self.valueTransformer isKindOfClass:[RKCompoundValueTransformer class]]) [NSException raise:NSInternalInconsistencyException format:@"Cannot set date formatters: the receiver's `valueTransformer` is not an instance of `RKCompoundValueTransformer`."]; + for (id<RKValueTransforming> dateFormatter in [self dateFormatters]) { + [(RKCompoundValueTransformer *)self.valueTransformer removeValueTransformer:dateFormatter]; + } + for (id<RKValueTransforming> dateFormatter in dateFormatters) { + [(RKCompoundValueTransformer *)self.valueTransformer addValueTransformer:dateFormatter]; + } +} + +@end + +@implementation RKObjectMapping (Deprecations) + +- (BOOL)shouldSetDefaultValueForMissingAttributes +{ + return self.assignsDefaultValueForMissingAttributes; +} + +- (void)setSetDefaultValueForMissingAttributes:(BOOL)setDefaultValueForMissingAttributes +{ + self.assignsDefaultValueForMissingAttributes = setDefaultValueForMissingAttributes; +} + +- (BOOL)setNilForMissingRelationships +{ + return self.assignsNilForMissingRelationships; +} + +- (void)setSetNilForMissingRelationships:(BOOL)setNilForMissingRelationships +{ + self.assignsNilForMissingRelationships = setNilForMissingRelationships; +} + +- (BOOL)performKeyValueValidation +{ + return self.performsKeyValueValidation; +} + +- (void)setPerformKeyValueValidation:(BOOL)performKeyValueValidation +{ + self.performsKeyValueValidation = performKeyValueValidation; +} + +@end + +#pragma clang diagnostic pop + +#pragma mark - Functions + +NSDate *RKDateFromString(NSString *dateString) +{ + NSDate *outputDate = nil; + NSError *error = nil; + BOOL success = [[RKValueTransformer defaultValueTransformer] transformValue:dateString toValue:&outputDate ofClass:[NSDate class] error:&error]; + return success ? outputDate : nil; +} + +NSString *RKStringFromDate(NSDate *date) +{ + NSString *outputString = nil; + NSError *error = nil; + BOOL success = [[RKValueTransformer defaultValueTransformer] transformValue:date toValue:&outputString ofClass:[NSString class] error:&error]; + return success ? outputString : nil; +} diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingMatcher.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingMatcher.h new file mode 100644 index 0000000..577550c --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingMatcher.h @@ -0,0 +1,112 @@ +// +// RKDynamicMappingMatcher.h +// RestKit +// +// Created by Jeff Arena on 8/2/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import "RKObjectMapping.h" + +/** + The `RKObjectMappingMatcher` class provides an interface for encapsulating the selection of an object mapping based on runtime values. Matcher objects may be configured by key path and expected value or with a predicate object. + + ## Key Path Matching + + A key path matcher object is initialized with a key path, an expected value to be read from the key path, and an object mapping that is to be applied if the match evaluates to `YES`. When evaluating the match, the matcher invokes `valueForKeyPath:` on the object being matched and compares the value returned with the `expectedValue` via the `RKObjectIsEqualToObject` function. This provides a flexible, semantic match of the property value. + + Alternatively, a key path matcher object can be initialized with an expected class instead. When evaluating the match, the matcher invokes `valueForKeyPath:` on the object being matched and compares the value returned with the `expectedClass` via the `isSubclassOfClass:` method. This provides a flexible, semantic match of the property value class. + + ## Predicate Matching + + A predicate matcher object is initialized with a predicate object and an object mapping that is to be applied if the predicate evaluates to `YES` for the object being matched. + */ +@interface RKObjectMappingMatcher : NSObject + +///------------------------------------- +/// @name Constructing Key Path Matchers +///------------------------------------- + +/** + Creates and returns a key path matcher object with a given key path, expected value, and an object mapping that applies in the event of a positive match. + + @param keyPath The key path to obtain the comparison value from the object being matched via `valueForKeyPath:`. + @param expectedValue The value that is expected to be read from `keyPath` if there is a match. + @param objectMapping The object mapping object that applies if the comparison value is equal to the expected value. + @return The receiver, initialized with the given key path, expected value, and object mapping. + */ ++ (instancetype)matcherWithKeyPath:(NSString *)keyPath expectedValue:(id)expectedValue objectMapping:(RKObjectMapping *)objectMapping; + +/** + Creates and returns a key path matcher object with a given key path, expected class, and an object mapping that applies in the event of a positive match. + + @param keyPath The key path to obtain the comparison value from the object being matched via `valueForKeyPath:`. + @param expectedClass The Class that is expected to be read from `keyPath` if there is a match. + @param objectMapping The object mapping object that applies if the comparison value is equal to the expected value. + @return The receiver, initialized with the given key path, expected value, and object mapping. + */ ++ (instancetype)matcherWithKeyPath:(NSString *)keyPath expectedClass:(Class)expectedClass objectMapping:(RKObjectMapping *)objectMapping; + +/** + Creates and returns a key path matcher object with a given key path, and a map of expected values to associated RKObjectMapping objects that applies in the event of a positive match with its associated value. This method can evaluate the keyPath once + + @param keyPath The key path to obtain the comparison value from the object being matched via `valueForKeyPath:`. + @param expectedValue The value that is expected to be read from `keyPath` if there is a match. + @param objectMapping The object mapping object that applies if the comparison value is equal to the expected value. + @return The receiver, initialized with the given key path and expected value map. + */ ++ (instancetype)matcherWithKeyPath:(NSString *)keyPath expectedValueMap:(NSDictionary *)valueToObjectMapping; + +///-------------------------------------- +/// @name Constructing Predicate Matchers +///-------------------------------------- + +/** + Creates and returns a predicate matcher object with a given predicate and an object mapping that applies in the predicate evaluates positively. + + @param predicate The predicate with which to evaluate the matched object. + @param objectMapping The object mapping object that applies if the predicate evaluates positively for the matched object. + @return The receiver, initialized with the given key path, expected value, and object mapping. + */ ++ (instancetype)matcherWithPredicate:(NSPredicate *)predicate objectMapping:(RKObjectMapping *)objectMapping; + + +/** + Creates and returns a matcher object with a given block which returns the RKObjectMapping instance to use, and an optional array of possible object mappings which could be returned. + + @param possibleMappings The list of known possible RKObjectMapping instances which could be returned. This is used to aid RKDynamicMapping's -objectMappings method which is used in some instances, but is not required for mapping. The block could return a new instance if needed. + @param block The block with which to evaluate the matched object, and return the object mapping to use. Return nil if no match (i.e. a `NO` return from the `-matches:` method). + @return The receiver, initialized with the given block ans possible mappings. + */ ++ (instancetype)matcherWithPossibleMappings:(NSArray *)mappings block:(RKObjectMapping *(^)(id representation))block; + +///----------------------------------- +/// @name Accessing the Object Mapping +///----------------------------------- + +/** + Returns the list of all known RKObjectMapping instances which could be returned from this matcher. This is called when added to or removed from an RKDynamicMapping, and is used to populate the `objectMappings` property there. The default implementation returns the single value set in the `objectMapping` property, so if that is the only possibility then this method does not need to be overridden. + */ +@property (nonatomic, readonly) NSArray *possibleObjectMappings; + +/** + The object mapping object that applies when the receiver matches a given object. + + @see `matches:` + */ +@property (nonatomic, strong, readonly) RKObjectMapping *objectMapping; + +///------------------------- +/// @name Evaluating a Match +///------------------------- + +/** + Returns a Boolean value that indicates if the given object matches the expectations of the receiver. + + @param object The object to be evaluated. + @return `YES` if the object matches the expectations of the receiver, else `NO`. + */ +- (BOOL)matches:(id)object; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingMatcher.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingMatcher.m new file mode 100644 index 0000000..4efebc3 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingMatcher.m @@ -0,0 +1,273 @@ +// +// RKDynamicMappingMatcher.m +// RestKit +// +// Created by Jeff Arena on 8/2/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// + +#import "RKObjectMappingMatcher.h" +#import "RKObjectUtilities.h" + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +@interface RKObjectMappingMatcher () +@property (nonatomic, strong, readwrite) RKObjectMapping *objectMapping; +@end + +@interface RKKeyPathObjectMappingMatcher : RKObjectMappingMatcher +@property (nonatomic, copy) NSString *keyPath; +@property (nonatomic, strong, readwrite) id expectedValue; + +- (instancetype)initWithKeyPath:(NSString *)keyPath expectedValue:(id)expectedValue objectMapping:(RKObjectMapping *)objectMapping NS_DESIGNATED_INITIALIZER; +@end + +@interface RKKeyPathClassObjectMappingMatcher : RKObjectMappingMatcher + +@property (nonatomic, copy) NSString *keyPath; +@property (nonatomic, readwrite) Class expectedClass; + +- (instancetype)initWithKeyPath:(NSString *)keyPath expectedClass:(Class)expectedClass objectMapping:(RKObjectMapping *)objectMapping NS_DESIGNATED_INITIALIZER; + +@end + +@interface RKKeyPathValueMapObjectMappingMatcher : RKObjectMappingMatcher +@property (nonatomic, copy) NSString *keyPath; +@property (nonatomic, copy) NSDictionary *valueMap; + +- (instancetype)initWithKeyPath:(NSString *)keyPath expectedValueMap:(NSDictionary *)valueToObjectMapping NS_DESIGNATED_INITIALIZER; +@end + +@interface RKPredicateObjectMappingMatcher : RKObjectMappingMatcher +@property (nonatomic, strong) NSPredicate *predicate; + +- (instancetype)initWithPredicate:(NSPredicate *)predicate objectMapping:(RKObjectMapping *)objectMapping NS_DESIGNATED_INITIALIZER; +@end + +@interface RKBlockObjectMatchingMatcher : RKObjectMappingMatcher +@property (nonatomic, copy) NSArray *possibleMappings; +@property (nonatomic, copy) RKObjectMapping *(^block)(id representation); +- (instancetype)initWithPossibleMappings:(NSArray *)mappings block:(RKObjectMapping *(^)(id representation))block NS_DESIGNATED_INITIALIZER; +@end + + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +@implementation RKObjectMappingMatcher + ++ (instancetype)matcherWithKeyPath:(NSString *)keyPath expectedValue:(id)expectedValue objectMapping:(RKObjectMapping *)objectMapping +{ + return [[RKKeyPathObjectMappingMatcher alloc] initWithKeyPath:keyPath expectedValue:expectedValue objectMapping:objectMapping]; +} + ++ (instancetype)matcherWithKeyPath:(NSString *)keyPath expectedClass:(Class)expectedClass objectMapping:(RKObjectMapping *)objectMapping +{ + return [[RKKeyPathClassObjectMappingMatcher alloc] initWithKeyPath:keyPath expectedClass:expectedClass objectMapping:objectMapping]; +} + ++ (instancetype)matcherWithKeyPath:(NSString *)keyPath expectedValueMap:(NSDictionary *)valueToObjectMapping +{ + return [[RKKeyPathValueMapObjectMappingMatcher alloc] initWithKeyPath:keyPath expectedValueMap:valueToObjectMapping]; +} + ++ (instancetype)matcherWithPredicate:(NSPredicate *)predicate objectMapping:(RKObjectMapping *)objectMapping +{ + return [[RKPredicateObjectMappingMatcher alloc] initWithPredicate:predicate objectMapping:objectMapping]; +} + ++ (instancetype)matcherWithPossibleMappings:(NSArray *)mappings block:(RKObjectMapping *(^)(id representation))block +{ + return [[RKBlockObjectMatchingMatcher alloc] initWithPossibleMappings:mappings block:block]; +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + if ([self isMemberOfClass:[RKObjectMappingMatcher class]]) { + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"%@ is not meant to be directly instantiated. Use one of the initializer methods instead.", + NSStringFromClass([self class])] + userInfo:nil]; + } + } + + return self; +} + +- (NSArray *)possibleObjectMappings +{ + RKObjectMapping *mapping = self.objectMapping; + return mapping ? @[mapping] : nil; +} + +- (BOOL)matches:(id)object +{ + return NO; +} + +@end + +@implementation RKKeyPathObjectMappingMatcher + +- (instancetype)initWithKeyPath:(NSString *)keyPath expectedValue:(id)expectedValue objectMapping:(RKObjectMapping *)objectMapping +{ + NSParameterAssert(keyPath); + NSParameterAssert(expectedValue); + NSParameterAssert(objectMapping); + self = [super init]; + if (self) { + self.keyPath = keyPath; + self.expectedValue = expectedValue; + self.objectMapping = objectMapping; + } + + return self; +} + +- (BOOL)matches:(id)object +{ + id value = [object valueForKeyPath:self.keyPath]; + if (value == nil) return NO; + return RKObjectIsEqualToObject(value, self.expectedValue); +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p when `%@` == '%@' objectMapping: %@>", NSStringFromClass([self class]), self, self.keyPath, self.expectedValue, self.objectMapping]; +} + +@end + +@implementation RKKeyPathClassObjectMappingMatcher + +- (instancetype)initWithKeyPath:(NSString *)keyPath expectedClass:(Class)expectedClass objectMapping:(RKObjectMapping *)objectMapping +{ + NSParameterAssert(keyPath); + NSParameterAssert(expectedClass); + NSParameterAssert(objectMapping); + self = [super init]; + if (self) { + self.keyPath = keyPath; + self.expectedClass = expectedClass; + self.objectMapping = objectMapping; + } + + return self; +} + +- (BOOL)matches:(id)object +{ + id value = [object valueForKeyPath:self.keyPath]; + return [[value class] isSubclassOfClass:self.expectedClass]; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p when `%@` == '%@' objectMapping: %@>", NSStringFromClass([self class]), self, self.keyPath, self.expectedClass, self.objectMapping]; +} + +@end + +@implementation RKKeyPathValueMapObjectMappingMatcher + +- (instancetype)initWithKeyPath:(NSString *)keyPath expectedValueMap:(NSDictionary *)valueToObjectMapping +{ + NSParameterAssert(keyPath); + NSParameterAssert(valueToObjectMapping.count > 0); + self = [super init]; + if (self) { + self.keyPath = keyPath; + self.valueMap = valueToObjectMapping; + } + + return self; +} + +- (NSArray *)possibleObjectMappings +{ + return [self.valueMap allValues]; +} + +- (BOOL)matches:(id)object +{ + id value = [object valueForKeyPath:self.keyPath]; + RKObjectMapping *mapping = (self.valueMap)[value]; + if (mapping) { + self.objectMapping = mapping; + return YES; + } + + return NO; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p when `%@` in '%@'>", NSStringFromClass([self class]), self, self.keyPath, [self.valueMap allKeys]]; +} + +@end + +@implementation RKPredicateObjectMappingMatcher + +- (instancetype)initWithPredicate:(NSPredicate *)predicate objectMapping:(RKObjectMapping *)objectMapping +{ + NSParameterAssert(predicate); + NSParameterAssert(objectMapping); + self = [super init]; + if (self) { + self.predicate = predicate; + self.objectMapping = objectMapping; + } + + return self; +} + +- (BOOL)matches:(id)object +{ + return [self.predicate evaluateWithObject:object]; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p when '%@' objectMapping: %@>", NSStringFromClass([self class]), self, self.predicate, self.objectMapping]; +} + +@end + +@implementation RKBlockObjectMatchingMatcher + +- (instancetype)initWithPossibleMappings:(NSArray *)mappings block:(RKObjectMapping *(^)(id representation))block +{ + NSParameterAssert(block); + self = [super init]; + if (self) { + self.block = block; + self.possibleMappings = mappings; + } + + return self; +} + +- (NSArray *)possibleObjectMappings +{ + return self.possibleMappings; +} + +- (BOOL)matches:(id)object +{ + RKObjectMapping *mapping = self.block(object); + if (mapping) { + self.objectMapping = mapping; + return YES; + } + + return NO; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p when '%@'>", NSStringFromClass([self class]), self, self.block]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingOperationDataSource.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingOperationDataSource.h new file mode 100644 index 0000000..3daf216 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingOperationDataSource.h @@ -0,0 +1,27 @@ +// +// RKObjectMappingOperationDataSource.h +// RestKit +// +// Created by Blake Watters on 7/3/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKMappingOperationDataSource.h" + +/** + The `RKObjectMappingOperationDataSource` class is an implementation of the `RKMappingOperationDataSource` protocol for use in performing object mappings that target plain old `NSObject` derived classes (as opposed to `NSManagedObject` derived persistent entities). + */ +@interface RKObjectMappingOperationDataSource : NSObject <RKMappingOperationDataSource> +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingOperationDataSource.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingOperationDataSource.m new file mode 100644 index 0000000..e8aba71 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectMappingOperationDataSource.m @@ -0,0 +1,48 @@ +// +// RKObjectMappingOperationDataSource.m +// RestKit +// +// Created by Blake Watters on 7/3/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKObjectMappingOperationDataSource.h" +#import "RKObjectMapping.h" +#import "RKMappingOperation.h" + +@implementation RKObjectMappingOperationDataSource + +- (id)mappingOperation:(RKMappingOperation *)mappingOperation targetObjectForRepresentation:(NSDictionary *)representation + withMapping:(RKObjectMapping *)mapping inRelationship:(RKRelationshipMapping *)relationshipMapping +{ + return [mapping.objectClass new]; +} + +- (id)mappingOperation:(RKMappingOperation *)mappingOperation targetObjectForMapping:(RKObjectMapping *)mapping inRelationship:(RKRelationshipMapping *)relationshipMapping +{ + return [mapping.objectClass new]; +} + +- (BOOL)mappingOperationShouldCollectMappingInfo:(RKMappingOperation *)mappingOperation +{ + return NO; +} + +- (BOOL)mappingOperationShouldSetUnchangedValues:(RKMappingOperation *)mappingOperation +{ + return [mappingOperation isNewDestinationObject]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectUtilities.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectUtilities.h new file mode 100644 index 0000000..d8a4043 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectUtilities.h @@ -0,0 +1,113 @@ +// +// RKObjectUtilities.h +// RestKit +// +// Created by Blake Watters on 9/30/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +#ifdef __cplusplus +extern "C" { +#endif + +///---------------- +/// @name Functions +///---------------- + +/** + Returns a Boolean value that indicates whether the given objects are equal. + + The actual method of comparison is dependendent upon the class of the objects given. For example, given two `NSString` objects equality would be tested using `isEqualToString:`. + + @param object The first object to compare. + @param anotherObject The second object to compare. + @return `YES` if the objects are equal, otherwise `NO`. + */ +BOOL RKObjectIsEqualToObject(id object, id anotherObject); + +/** + Returns a Boolean value that indicates if the given class is a collection. + + The following classes are considered collections: + + 1. `NSSet` + 1. `NSArray` + 1. `NSOrderedSet` + + `NSDictionary` objects are **not** considered collections as they are typically object representations. + + @param aClass The class to check. + @return `YES` if the given class is a collection. + */ +BOOL RKClassIsCollection(Class aClass); + +/** + Returns a Boolean value that indicates if the given object is a collection. + + Implemented by invoking `RKClassIsCollection` with the class of the given object. + @param object The object to be tested. + @return `YES` if the given object is a collection, else `NO`. + @see `RKClassIsCollection` + */ +BOOL RKObjectIsCollection(id object); + +/** + Returns a Boolean value that indicates if the given object is collection containing only instances of `NSManagedObject` or a class that inherits from `NSManagedObject`. + + @param object The object to be tested. + @return `YES` if the object is a collection containing only `NSManagedObject` derived objects. + */ +BOOL RKObjectIsCollectionContainingOnlyManagedObjects(id object); + +/** + Returns a Boolean value that indicates if the given object is a collection containing subcollections. + + @param object The object to be tested. + @return `YES` if the object is a collection of collections, else `NO`. + */ +BOOL RKObjectIsCollectionOfCollections(id object); + +/** + Returns an appropriate class to use for KVC access based on the Objective C runtime type encoding. + + Objective C Runtime type encodings: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html + KVC Scalar/Structure support: http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueCoding/Articles/DataTypes.html#//apple_ref/doc/uid/20002171-BAJEAIEE + + @param type An Objective C Runtime type encoding + @return The class name for the property type encoded in the given attribute string, an appropriate class for wrapping/unwrapping the primitive type, or `Nil` when no transformation is required or possible. + */ +Class RKKeyValueCodingClassForObjCType(const char *type); + +/** + Returns an appropriate class to use for KVC access based on the output obtained via the `property_getAttributes` reflection API. + + @param attr A c string containing encoding attribute information. + @return The class name for the property type encoded in the given attribute string, an appropriate class for wrapping/unwrapping the primitive type, or `Nil` when no transformation is required or possible. + */ +Class RKKeyValueCodingClassFromPropertyAttributes(const char *attr); + +/** + Returns the name of a property when provided the name of a property obtained via the `property_getAttributes` reflection API. + + @param attributeString A string object encoding attribute information. + @return The class name for the property type encoded in the given attribute string or `@"NULL"` if the property does not have an object type (the declared property is for a primitive type). + */ +NSString *RKPropertyTypeFromAttributeString(NSString *attributeString); + +#ifdef __cplusplus +} +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectUtilities.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectUtilities.m new file mode 100644 index 0000000..052335e --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKObjectUtilities.m @@ -0,0 +1,148 @@ +// +// RKObjectUtilities.m +// RestKit +// +// Created by Blake Watters on 9/30/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 <objc/message.h> +#import <objc/runtime.h> +#import "RKObjectUtilities.h" + +BOOL RKObjectIsEqualToObject(id object, id anotherObject) { + NSCAssert(object, @"Expected object not to be nil"); + NSCAssert(anotherObject, @"Expected anotherObject not to be nil"); + + return (object == anotherObject) || [object isEqual:anotherObject]; +} + +BOOL RKClassIsCollection(Class aClass) +{ + return (aClass && ([aClass isSubclassOfClass:[NSSet class]] || + [aClass isSubclassOfClass:[NSArray class]] || + [aClass isSubclassOfClass:[NSOrderedSet class]])); +} + +BOOL RKObjectIsCollection(id object) +{ + return RKClassIsCollection([object class]); +} + +BOOL RKObjectIsCollectionContainingOnlyManagedObjects(id object) +{ + if (! RKObjectIsCollection(object)) return NO; + Class managedObjectClass = NSClassFromString(@"NSManagedObject"); + if (! managedObjectClass) return NO; + for (id instance in object) { + if (! [instance isKindOfClass:managedObjectClass]) return NO; + } + return YES; +} + +BOOL RKObjectIsCollectionOfCollections(id object) +{ + if (! RKObjectIsCollection(object)) return NO; + id collectionSanityCheckObject = nil; + if ([object respondsToSelector:@selector(anyObject)]) collectionSanityCheckObject = [object anyObject]; + if ([object respondsToSelector:@selector(lastObject)]) collectionSanityCheckObject = [object lastObject]; + return RKObjectIsCollection(collectionSanityCheckObject); +} + +Class RKKeyValueCodingClassForObjCType(const char *type) +{ + if (type) { + switch (type[0]) { + case _C_ID: { + char *openingQuoteLoc = strchr(type, '"'); + if (openingQuoteLoc) { + char *closingQuoteLoc = strchr(openingQuoteLoc+1, '"'); + if (closingQuoteLoc) { + size_t classNameStrLen = closingQuoteLoc-openingQuoteLoc; + char className[classNameStrLen]; + memcpy(className, openingQuoteLoc+1, classNameStrLen-1); + // Null-terminate the array to stringify + className[classNameStrLen-1] = '\0'; + return objc_getClass(className); + } + } + // If there is no quoted class type (id), it can be used as-is. + return Nil; + } + + case _C_CHR: // char + case _C_UCHR: // unsigned char + case _C_SHT: // short + case _C_USHT: // unsigned short + case _C_INT: // int + case _C_UINT: // unsigned int + case _C_LNG: // long + case _C_ULNG: // unsigned long + case _C_LNG_LNG: // long long + case _C_ULNG_LNG: // unsigned long long + case _C_FLT: // float + case _C_DBL: // double + return [NSNumber class]; + + case _C_BOOL: // C++ bool or C99 _Bool + return objc_getClass("NSCFBoolean") + ?: objc_getClass("__NSCFBoolean") + ?: [NSNumber class]; + + case _C_STRUCT_B: // struct + case _C_BFLD: // bitfield + case _C_UNION_B: // union + return [NSValue class]; + + case _C_ARY_B: // c array + case _C_PTR: // pointer + case _C_VOID: // void + case _C_CHARPTR: // char * + case _C_CLASS: // Class + case _C_SEL: // selector + case _C_UNDEF: // unknown type (function pointer, etc) + default: + break; + } + } + return Nil; +} + +Class RKKeyValueCodingClassFromPropertyAttributes(const char *attr) +{ + if (attr) { + const char *typeIdentifierLoc = strchr(attr, 'T'); + if (typeIdentifierLoc) { + return RKKeyValueCodingClassForObjCType(typeIdentifierLoc+1); + } + } + return Nil; +} + +NSString *RKPropertyTypeFromAttributeString(NSString *attributeString) +{ + NSString *type = [NSString string]; + NSScanner *typeScanner = [NSScanner scannerWithString:attributeString]; + [typeScanner scanUpToCharactersFromSet:[NSCharacterSet characterSetWithCharactersInString:@"@"] intoString:NULL]; + + // we are not dealing with an object + if ([typeScanner isAtEnd]) { + return @"NULL"; + } + [typeScanner scanCharactersFromSet:[NSCharacterSet characterSetWithCharactersInString:@"\"@"] intoString:NULL]; + // this gets the actual object type + [typeScanner scanUpToCharactersFromSet:[NSCharacterSet characterSetWithCharactersInString:@"\""] intoString:&type]; + return type; +} diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyInspector.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyInspector.h new file mode 100644 index 0000000..98b5d07 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyInspector.h @@ -0,0 +1,117 @@ +// +// RKPropertyInspector.h +// RestKit +// +// Created by Blake Watters on 3/4/10. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +@class NSEntityDescription; + +/** + * The object used to store attributes for each property; used as the value in the class dictionary. + */ +@interface RKPropertyInspectorPropertyInfo : NSObject + +/** + Creates a new RKPropertyInspectorPropertyInfo instance with the given information + */ ++ (instancetype)propertyInfoWithName:(NSString *)name keyValueClass:(Class)kvClass isPrimitive:(BOOL)isPrimitive; + +/** + The name of the property + */ +@property (nonatomic, copy, readonly) NSString *name; + +/** + The class used for key-value coding access to the property. + + If the property is an object type, then the class set for this key will be the type of the property. If the property is a primitive, then the class set for the key will be the boxed type used for KVC access to the property. For example, an `NSInteger` property is boxed to an `NSNumber` for KVC purposes. + */ +@property (nonatomic, strong, readonly) Class keyValueCodingClass; + +/** + A BOOL value that indicates if the property is a primitive (non-object) value. + */ +@property (nonatomic, readonly) BOOL isPrimitive; + +@end + + +/** + The `RKPropertyInspector` class provides an interface for introspecting the properties and attributes of classes using the reflection capabilities of the Objective-C runtime. Once inspected, the properties inspection details are cached. + */ +@interface RKPropertyInspector : NSObject + +///----------------------------------------------- +/// @name Retrieving the Shared Inspector Instance +///----------------------------------------------- + +/** + Returns the shared property inspector singleton instance. + + @return The shared `RKPropertyInspector` instance. + */ ++ (RKPropertyInspector *)sharedInspector; + +///------------------------------------------------------ +/// @name Retrieving the Properties and Types for a Class +///------------------------------------------------------ + +/** + Returns a dictionary keyed by property name that includes the key-value coding class of the property and a Boolean indicating if the property is backed by a primitive (non-object) value. The RKPropertyInspectorPropertyInfo object for each property includes details about the key-value coding class representing the property and if the property is backed by a primitive type. + + @param objectClass The class to inspect the properties of. + @return A dictionary keyed by property name that includes details about all declared properties of the class. + */ +- (NSDictionary *)propertyInspectionForClass:(Class)objectClass; + +/** + Returns the `Class` object specifying the type of the property with given name on a class. + + @param propertyName The name of the property to retrieve the type of. + @param objectClass The class to retrieve the property from. + @param isPrimitive A pointer to a Boolean value to set indicating if the specified property is of a primitive (non-object) type. + @return A `Class` object specifying the type of the requested property. + */ +- (Class)classForPropertyNamed:(NSString *)propertyName ofClass:(Class)objectClass isPrimitive:(BOOL *)isPrimitive; + +@end + +///---------------------------- +/// @name Convenience Functions +///---------------------------- + +/** + Returns the class of the attribute or relationship property at the key path of the given object. + + Given a key path to a string property, this will return an `NSString`, etc. + + @param keyPath The key path to the property to retrieve the class of. + @param object The object to evaluate. + @return The class of the property at the given key path. + */ +Class RKPropertyInspectorGetClassForPropertyAtKeyPathOfObject(NSString *keyPath, id object); + +/** + Returns a Boolean value indicating if the property at the specified key path for a given object is modeled by a primitive type. + + @param keyPath The key path to inspect the property of. + @param object The object to evaluate. + @return `YES` if the property is a primitive, else `NO`. + */ +BOOL RKPropertyInspectorIsPropertyAtKeyPathOfObjectPrimitive(NSString *keyPath, id object); diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyInspector.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyInspector.m new file mode 100644 index 0000000..7106713 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyInspector.m @@ -0,0 +1,207 @@ +// +// RKPropertyInspector.m +// RestKit +// +// Created by Blake Watters on 3/4/10. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <objc/runtime.h> +#import "RKPropertyInspector.h" +#import "RKLog.h" +#import "RKObjectUtilities.h" + +// Set Logging Component +#undef RKLogComponent +#define RKLogComponent RKlcl_cRestKitObjectMapping + +NSString * const RKPropertyInspectionNameKey = @"name"; +NSString * const RKPropertyInspectionKeyValueCodingClassKey = @"keyValueCodingClass"; +NSString * const RKPropertyInspectionIsPrimitiveKey = @"isPrimitive"; + + +@implementation RKPropertyInspectorPropertyInfo + ++ (instancetype)propertyInfoWithName:(NSString *)name keyValueClass:(Class)kvClass isPrimitive:(BOOL)isPrimitive +{ + return [[self alloc] initWithName:name keyValueClass:kvClass isPrimitive:isPrimitive]; +} + +- (instancetype)initWithName:(NSString *)name keyValueClass:(Class)kvClass isPrimitive:(BOOL)isPrimitive +{ + if (self = [super init]) { + _name = [name copy]; + _keyValueCodingClass = kvClass; + _isPrimitive = isPrimitive; + } + return self; +} + +@end + + +@interface RKPropertyInspector () +#if OS_OBJECT_USE_OBJC +@property (nonatomic, strong) dispatch_queue_t queue; +#else +@property (nonatomic, assign) dispatch_queue_t queue; +#endif +@property (nonatomic, strong) NSMutableDictionary *inspectionCache; +@end + +@implementation RKPropertyInspector + ++ (RKPropertyInspector *)sharedInspector +{ + static RKPropertyInspector *sharedInspector = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + sharedInspector = [RKPropertyInspector new]; + }); + + return sharedInspector; +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + // NOTE: We use an `NSMutableDictionary` because it is *much* faster than `NSCache` on lookup + self.inspectionCache = [NSMutableDictionary dictionary]; + self.queue = dispatch_queue_create("org.restkit.core-data.property-inspection-queue", DISPATCH_QUEUE_CONCURRENT); + } + + return self; +} + +- (void)dealloc +{ +#if !OS_OBJECT_USE_OBJC + if (_queue) dispatch_release(_queue); +#endif + _queue = NULL; +} + +- (NSDictionary *)propertyInspectionForClass:(Class)objectClass +{ + __block NSMutableDictionary *inspection; + dispatch_sync(self.queue, ^{ + inspection = (self.inspectionCache)[objectClass]; + }); + if (inspection) return inspection; + + inspection = [NSMutableDictionary dictionary]; + + //include superclass properties + Class currentClass = objectClass; + while (currentClass != nil) { + // Get the raw list of properties + unsigned int outCount = 0; + objc_property_t *propList = class_copyPropertyList(currentClass, &outCount); + + // Collect the property names + for (typeof(outCount) i = 0; i < outCount; i++) { + objc_property_t *prop = propList + i; + const char *propName = property_getName(*prop); + + if (strcmp(propName, "_mapkit_hasPanoramaID") != 0) { + const char *attr = property_getAttributes(*prop); + if (attr) { + Class aClass = RKKeyValueCodingClassFromPropertyAttributes(attr); + if (aClass) { + NSString *propNameString = [[NSString alloc] initWithCString:propName encoding:NSUTF8StringEncoding]; + if (propNameString) { + BOOL isPrimitive = NO; + if (attr) { + const char *typeIdentifierLoc = strchr(attr, 'T'); + if (typeIdentifierLoc) { + isPrimitive = (typeIdentifierLoc[1] != '@'); + } + } + + RKPropertyInspectorPropertyInfo *info; + info = [RKPropertyInspectorPropertyInfo propertyInfoWithName:propNameString + keyValueClass:aClass + isPrimitive:isPrimitive]; + inspection[propNameString] = info; + } + } + } + } + } + + free(propList); + Class superclass = [currentClass superclass]; + Class nsManagedObject = NSClassFromString(@"NSManagedObject"); + currentClass = (superclass == [NSObject class] || (nsManagedObject && superclass == nsManagedObject)) ? nil : superclass; + } + + /* dispatch_barrier_async is dangerous if we are called from +initialize */ + dispatch_barrier_sync(self.queue, ^{ + (self.inspectionCache)[(id<NSCopying>)objectClass] = inspection; + RKLogDebug(@"Cached property inspection for Class '%@': %@", NSStringFromClass(objectClass), inspection); + }); + return inspection; +} + +- (Class)classForPropertyNamed:(NSString *)propertyName ofClass:(Class)objectClass isPrimitive:(BOOL *)isPrimitive +{ + NSDictionary *classInspection = [self propertyInspectionForClass:objectClass]; + RKPropertyInspectorPropertyInfo *propertyInspection = classInspection[propertyName]; + if (isPrimitive) *isPrimitive = propertyInspection.isPrimitive; + return propertyInspection.keyValueCodingClass; +} + +@end + + +@interface NSObject (RKPropertyInspection) +- (Class)rk_classForPropertyAtKeyPath:(NSString *)keyPath isPrimitive:(BOOL *)isPrimitive; +@end + +@implementation NSObject (RKPropertyInspection) + +- (Class)rk_classForPropertyAtKeyPath:(NSString *)keyPath isPrimitive:(BOOL *)isPrimitive +{ + NSRange dotRange = [keyPath rangeOfString:@"." options:NSLiteralSearch]; + RKPropertyInspector *inspector = [RKPropertyInspector sharedInspector]; + Class propertyClass = [self class]; + + if (dotRange.length == 0) { + return [inspector classForPropertyNamed:keyPath ofClass:propertyClass isPrimitive:isPrimitive]; + } + + NSArray *components = [keyPath componentsSeparatedByString:@"."]; + for (NSString *property in components) { + propertyClass = [inspector classForPropertyNamed:property ofClass:propertyClass isPrimitive:isPrimitive]; + if (! propertyClass) break; + } + + return propertyClass; +} + +@end + +Class RKPropertyInspectorGetClassForPropertyAtKeyPathOfObject(NSString *keyPath, id object) +{ + return [object rk_classForPropertyAtKeyPath:keyPath isPrimitive:nil]; +} + +BOOL RKPropertyInspectorIsPropertyAtKeyPathOfObjectPrimitive(NSString *keyPath, id object) +{ + BOOL isPrimitive = NO; + [object rk_classForPropertyAtKeyPath:keyPath isPrimitive:&isPrimitive]; + return isPrimitive; +} diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyMapping.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyMapping.h new file mode 100644 index 0000000..5f39859 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyMapping.h @@ -0,0 +1,84 @@ +// +// RKPropertyMapping.h +// RestKit +// +// Created by Blake Watters on 8/27/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +@class RKObjectMapping; +@protocol RKValueTransforming; + +/** + `RKPropertyMapping` is an abstract class for describing the properties being mapped within an `RKObjectMapping` or `RKEntityMapping` object. It defines the common interface for its concrete subclasses `RKAttributeMapping` and `RKRelationshipMapping`. Each property mapping defines a single transformation from a source key path (often in the deserialized representation of a JSON or XML document) to a destination key path (typically on a target object). + */ +@interface RKPropertyMapping : NSObject <NSCopying> + +///------------------------------------------ +/// @name Accessing the Parent Object Mapping +///------------------------------------------ + +/** + Returns the object mapping the receiver is added to. + */ +@property (nonatomic, weak, readonly) RKObjectMapping *objectMapping; + +///----------------------------------------------------- +/// @name Accessing the Source and Destination Key Paths +///----------------------------------------------------- + +/** + A key path on the source object from which to get information that is to be mapped onto the destination object. + */ +@property (nonatomic, copy, readonly) NSString *sourceKeyPath; + +/** + A key path on the destination object on which to set information that has been mapped from the source object. + */ +@property (nonatomic, copy, readonly) NSString *destinationKeyPath; + +///------------------------------------- +/// @name Specifying a Value Transformer +///------------------------------------- + +/** + Specifies the class used to represent the value of the mapped property. A value of `Nil` (which is the default value) indicates the property class is to be determined by runtime introspection. + + In cases where run-time type introspection cannot be performed (such as during object parameterization) you can specify the class used to represent the value of the property being mapped. + */ +@property (nonatomic, strong) Class propertyValueClass; + +/** + A value transformer with which to process input values being mapped with the receiver. If `nil`, then the `valueTransformer` of the parent `objectMapping` will be used instead. + */ +@property (nonatomic, strong) id<RKValueTransforming> valueTransformer; + +///---------------------------------- +/// @name Comparing Property Mappings +///---------------------------------- + +/** + Compares the receiving property mapping to another property mapping. + + Two property mappings are equal if they are of the same type (i.e. an `RKAttributeMapping` or an `RKRelatiobshipMapping` object) and specify a mapping from the same source key path to the same destination key path. + + @param otherMapping The property mapping object with which to compare the receiver. + @return `YES` if `otherMapping` specifies the same mapping as the receiver, otherwise `NO`. + */ +- (BOOL)isEqualToMapping:(RKPropertyMapping *)otherMapping; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyMapping.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyMapping.m new file mode 100644 index 0000000..6d4debd --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKPropertyMapping.m @@ -0,0 +1,77 @@ +// +// RKPropertyMapping.m +// RestKit +// +// Created by Blake Watters on 8/27/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKPropertyMapping.h" +#import "RKObjectMapping.h" + +/** + For consistency with URI Templates (and most web templating languages in general) we are transitioning + to using braces "{}" instead of parentheses "()" for denoting the variables in the key paths. + */ +static NSString *RKStringByReplacingUnderscoresWithBraces(NSString *string) +{ + return [[string stringByReplacingOccurrencesOfString:@"(" withString:@"{"] stringByReplacingOccurrencesOfString:@")" withString:@"}"]; +} + +@interface RKPropertyMapping () +// Synthesize as read/write to allow assignment in `RKObjectMapping` +@property (nonatomic, weak, readwrite) RKObjectMapping *objectMapping; +@property (nonatomic, copy, readwrite) NSString *sourceKeyPath; +@property (nonatomic, copy, readwrite) NSString *destinationKeyPath; +@end + +@implementation RKPropertyMapping + +- (id)copyWithZone:(NSZone *)zone +{ + RKPropertyMapping *copy = [[[self class] allocWithZone:zone] init]; + copy.sourceKeyPath = self.sourceKeyPath; + copy.destinationKeyPath = self.destinationKeyPath; + return copy; +} + +- (BOOL)isEqualToMapping:(RKPropertyMapping *)otherMapping +{ + return [otherMapping isMemberOfClass:[self class]] && + (self.sourceKeyPath == otherMapping.sourceKeyPath || [self.sourceKeyPath isEqual:otherMapping.sourceKeyPath]) && + [self.destinationKeyPath isEqual:otherMapping.destinationKeyPath]; +} + +- (void)setSourceKeyPath:(NSString *)sourceKeyPath +{ + _sourceKeyPath = RKStringByReplacingUnderscoresWithBraces(sourceKeyPath); +} + +- (void)setDestinationKeyPath:(NSString *)destinationKeyPath +{ + _destinationKeyPath = RKStringByReplacingUnderscoresWithBraces(destinationKeyPath); +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p %@ => %@>", self.class, self, self.sourceKeyPath, self.destinationKeyPath]; +} + +- (id<RKValueTransforming>)valueTransformer +{ + return _valueTransformer ?: [self.objectMapping valueTransformer]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKRelationshipMapping.h b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKRelationshipMapping.h new file mode 100644 index 0000000..5c81276 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKRelationshipMapping.h @@ -0,0 +1,95 @@ +// +// RKRelationshipMapping.h +// RestKit +// +// Created by Blake Watters on 5/4/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKPropertyMapping.h" + +@class RKMapping; + +typedef NS_ENUM(NSInteger, RKAssignmentPolicy) { + RKAssignmentPolicySet, // Set the relationship to the new value and leave the existing objects alone, breaking the relationship to existing objects at the destination. This is the default policy for `RKRelationshipMapping`. + RKAssignmentPolicyReplace, // Set the relationship to the new value and destroy the previous value, replacing the existing objects at the destination of the relationship. + RKAssignmentPolicyUnion, // Set the relationship to the union of the existing value and the new value being assigned. Only applicable for to-many relationships. + + // Deprecated + RKSetAssignmentPolicy = RKAssignmentPolicySet, // Will be deprecated, use `RKAssignmentPolicySet` instead + RKReplaceAssignmentPolicy = RKAssignmentPolicyReplace, // Will be deprecated, use `RKAssignmentPolicyReplace` instead + RKUnionAssignmentPolicy = RKAssignmentPolicyUnion, // Will be deprecated, use `RKAssignmentPolicyUnion` instead +} ; + +/** + The `RKRelationshipMapping` class is used to describe relationships of a class in an `RKObjectMapping` or an entity in an `RKEntityMapping` object. + + `RKRelationshipMapping` extends `RKPropertyMapping` to describe features specific to relationships, including the `RKMapping` object describing how to map the destination object. + + Relationship mappings are described in terms of a source key path, which identifies a key in the parent object representation under which the data for the relationship is nested, and a destination key path, which specifies the key path at which the mapped object is to be assigned on the parent entity. The key paths of the property mappings of the `RKMapping` object in the relationship mapping are evaluated against the nested object representationship at the source key path. + + ## Mapping a Non-nested Relationship from the Parent Representation + + It can often be desirable to map data for a relationship directly from the parent object representation, rather than under a nested key path. When a relationship mapping is constructed with a `nil` value for the source key path, then the `RKMapping` object is evaluated against the parent representation. + + ## Assignment Policy + + When mapping a relationship, the typical desired behavior is to set the destination of the relationship to the newly mapped values from the object representation being processed. There are times in which it is desirable to use different assignment behaviors. The way in which the relationship is assigned can be controlled by the assignmentPolicy property. There are currently three distinct assignment policies available: + + 1. `RKSetAssignmentPolicy` - Instructs the mapper to assign the new destination value to the relationship directly. No further action is taken and the relationship to the old objects is broken. This is the default assignment policy. + 1. `RKReplaceAssignmentPolicy` - Instructs the mapper to assign the new destination value to the relationship and delete any existing object or objects at the destination. The deletion behavior is contextual based on the type of objects being mapped (i.e. Core Data vs NSObject) and is delegated to the mapping operation data source. + 1. `RKUnionAssignmentPolicy` - Instructs the mapper to build a new value for the relationship by unioning the existing value with the new value and set the combined value to the relationship. The union assignment policy is only appropriate for use with a to-many relationship. + + */ +@interface RKRelationshipMapping : RKPropertyMapping + +///-------------------------------------- +/// @name Creating a Relationship Mapping +///-------------------------------------- + +/** + Creates and returns a new relationship mapping object describing how to transform a related object representation at `sourceKeyPath` to a new representation at `destinationKeyPath` using the given mapping. + + The mapping may describe a to-one or a to-many relationship. The appropriate handling of the source representation is deferred until run-time and is determined by performing reflection on the data retrieved from the source object representation by sending a `valueForKeyPath:` message where the key path is the value given in `sourceKeyPath`. If an `NSArray`, `NSSet` or `NSOrderedSet` object is returned, the related object representation is processed as a to-many collection. Otherwise the representation is considered to be a to-one. + + @param sourceKeyPath A key path from which to retrieve data in the source object representation that is to be mapped as a relationship. If `nil`, then the mapping is performed directly against the parent object representation. + @param destinationKeyPath The key path on the destination object to set the object mapped results. + @param mapping A mapping object describing how to map the data retrieved from `sourceKeyPath` that is to be set on `destinationKeyPath`. + */ ++ (instancetype)relationshipMappingFromKeyPath:(NSString *)sourceKeyPath toKeyPath:(NSString *)destinationKeyPath withMapping:(RKMapping *)mapping; + +///---------------------------------------- +/// @name Accessing the Destination Mapping +///---------------------------------------- + +/** + An `RKMapping` object describing how to map the object representation at `sourceKeyPath` to a new represenation at `destinationKeyPath`. + */ +@property (nonatomic, strong, readonly) RKMapping *mapping; + +///---------------------------------------- +/// @name Configuring the Assignment Policy +///---------------------------------------- + +/** + The assignment policy to use when applying the relationship mapping. + + The assignment policy determines how a relationship is set when there are existing objects at the destination of the relationship. The existing values can be disconnected from the parent and left in the graph (`RKSetAssignmentPolicy`), deleted and replaced by the new value (`RKReplaceAssignmentPolicy`), or the new value can be unioned with the existing objects to create a new combined value (`RKUnionAssignmentPolicy`). + + **Default**: `RKSetAssignmentPolicy` + */ +@property (nonatomic, assign) RKAssignmentPolicy assignmentPolicy; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKRelationshipMapping.m b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKRelationshipMapping.m new file mode 100644 index 0000000..ae867c0 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/ObjectMapping/RKRelationshipMapping.m @@ -0,0 +1,70 @@ +// +// RKRelationshipMapping.m +// RestKit +// +// Created by Blake Watters on 5/4/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKRelationshipMapping.h" +#import "RKMapping.h" + +@interface RKPropertyMapping () +@property (nonatomic, copy, readwrite) NSString *sourceKeyPath; +@property (nonatomic, copy, readwrite) NSString *destinationKeyPath; +@end + +@interface RKRelationshipMapping () +@property (nonatomic, strong, readwrite) RKMapping *mapping; +@end + +@implementation RKRelationshipMapping + ++ (instancetype)relationshipMappingFromKeyPath:(NSString *)sourceKeyPath toKeyPath:(NSString *)destinationKeyPath withMapping:(RKMapping *)mapping +{ + RKRelationshipMapping *relationshipMapping = [self new]; + relationshipMapping.sourceKeyPath = sourceKeyPath; + relationshipMapping.destinationKeyPath = destinationKeyPath; + relationshipMapping.mapping = mapping; + return relationshipMapping; +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + self.assignmentPolicy = RKSetAssignmentPolicy; + } + return self; +} + +- (id)copyWithZone:(NSZone *)zone +{ + RKRelationshipMapping *copy = [super copyWithZone:zone]; + copy.mapping = self.mapping; + copy.assignmentPolicy = self.assignmentPolicy; + return copy; +} + +- (BOOL)isEqualToMapping:(RKRelationshipMapping *)otherMapping +{ + if (! [otherMapping isMemberOfClass:[RKRelationshipMapping class]]) return NO; + if (! [super isEqualToMapping:otherMapping]) return NO; + if (self.mapping == nil && otherMapping.mapping == nil) return YES; + + return [self.mapping isEqualToMapping:otherMapping.mapping]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/RestKit.h b/Unit-2-Journal/Pods/RestKit/Code/RestKit.h new file mode 100644 index 0000000..30e1951 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/RestKit.h @@ -0,0 +1,50 @@ +// +// RestKit.h +// RestKit +// +// Created by Blake Watters on 2/19/10. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 _RESTKIT_ +#define _RESTKIT_ + +#if __has_include("ObjectMapping.h") +#import "ObjectMapping.h" +#endif + +#if __has_include("Network.h") +#import "Network.h" +#endif + +#if __has_include("Support.h") +#import "Support.h" +#endif + +#if __has_include("RKCoreData.h") +#import "RKCoreData.h" +#endif + +/** + Set the App logging component. This header + file is generally only imported by apps that + are pulling in all of RestKit. By setting the + log component to App here, we allow the app developer + to use RKLog() in their own app. + */ +#undef RKLogComponent +#define RKLogComponent RKlcl_cApp + +#endif /* _RESTKIT_ */ diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support.h b/Unit-2-Journal/Pods/RestKit/Code/Support.h new file mode 100644 index 0000000..ba3e127 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support.h @@ -0,0 +1,31 @@ +// +// Support.h +// RestKit +// +// Created by Blake Watters on 9/30/10. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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. +// + +// Load shared support code +#import "RKErrors.h" +#import "RKMIMETypes.h" +#import "RKLog.h" +#import "RKDotNetDateFormatter.h" +#import "RKPathUtilities.h" +#import "RKDictionaryUtilities.h" +#import "RKURLEncodedSerialization.h" +#import "RKNSJSONSerialization.h" +#import "RKMIMETypeSerialization.h" +#import "RKStringTokenizer.h" diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKDictionaryUtilities.h b/Unit-2-Journal/Pods/RestKit/Code/Support/RKDictionaryUtilities.h new file mode 100644 index 0000000..1752c3b --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKDictionaryUtilities.h @@ -0,0 +1,46 @@ +// +// RKDictionaryUtilities.h +// RestKit +// +// Created by Blake Watters on 9/11/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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. +// + +#ifdef __cplusplus +extern "C" { +#endif + +#import <Foundation/Foundation.h> + +/** + Reverse merges two dictionary to produce a new dictionary wherein the keys in the second dictionary have taken precedence in instances where keys overlap. The merge is performed recursively such that subdictionaries are reverse merged as well. + + @param dict1 The dictionary to be reverse merged. + @param dict2 A secondary dictionary to perform the reverse merging with. + @return A new `NSDicionary` object that is the product of the reverse merge. + */ +NSDictionary *RKDictionaryByMergingDictionaryWithDictionary(NSDictionary *dict1, NSDictionary *dict2); + +/** + Return a new dictionary by stripping out any percent escapes (such as %20) from the given dictionary's key and values. + + @param dictionary The dictionary from which to remove the percent escape sequences. + @return A new `NSDictionary` wherein any percent escape sequences in the key and values have been replaced with their literal values. + */ +NSDictionary *RKDictionaryByReplacingPercentEscapesInEntriesFromDictionary(NSDictionary *dictionary); + +#ifdef __cplusplus +} +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKDictionaryUtilities.m b/Unit-2-Journal/Pods/RestKit/Code/Support/RKDictionaryUtilities.m new file mode 100644 index 0000000..66b09ce --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKDictionaryUtilities.m @@ -0,0 +1,44 @@ +// +// RKDictionaryUtilities.m +// RestKit +// +// Created by Blake Watters on 9/11/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// + +#import "RKDictionaryUtilities.h" + +NSDictionary *RKDictionaryByMergingDictionaryWithDictionary(NSDictionary *dict1, NSDictionary *dict2) +{ + if (! dict1) return dict2; + if (! dict2) return dict1; + + NSMutableDictionary *mergedDictionary = [dict1 mutableCopy]; + + for (id key2 in dict2) { + id obj2 = dict2[key2]; + id obj1 = dict1[key2]; + if ([obj1 isKindOfClass:[NSDictionary class]] && [obj2 isKindOfClass:[NSDictionary class]]) { + NSDictionary *mergedSubdict = RKDictionaryByMergingDictionaryWithDictionary(obj1, obj2); + mergedDictionary[key2] = mergedSubdict; + } else { + mergedDictionary[key2] = obj2; + } + } + + return mergedDictionary; +} + +NSDictionary *RKDictionaryByReplacingPercentEscapesInEntriesFromDictionary(NSDictionary *dictionary) +{ + NSMutableDictionary *results = [NSMutableDictionary dictionaryWithCapacity:[dictionary count]]; + [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) + { + NSString *escapedKey = [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + id escapedValue = value; + if ([value respondsToSelector:@selector(stringByReplacingPercentEscapesUsingEncoding:)]) + escapedValue = [value stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + results[escapedKey] = escapedValue; + }]; + return results; +} diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKDotNetDateFormatter.h b/Unit-2-Journal/Pods/RestKit/Code/Support/RKDotNetDateFormatter.h new file mode 100644 index 0000000..03bc2b4 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKDotNetDateFormatter.h @@ -0,0 +1,73 @@ +// +// RKDotNetDateFormatter.h +// RestKit +// +// Created by Greg Combs on 9/8/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +/** + A subclass of `NSDateFormatter` that serves as translator between ASP.NET date serializations in JSON strings and NSDate objects. This is useful for properly mapping these dates from an ASP.NET driven backend. + + @warning DO NOT attempt to use `setDateFormat:` on this class. It will return invalid results. + */ +@interface RKDotNetDateFormatter : NSDateFormatter + +/** + Instantiates an autoreleased `RKDotNetDateFormatter` object with the timezone set to the given value. The default time zone is UTC. + + The supplied timeZone, such as one produced with `[NSTimeZone timeZoneWithName:@"UTC"]`, + is only used during calls to `stringFromDate:, for a detailed explanation see `dateFromString:` + + @param timeZone An NSTimeZone object. A `nil` value sets the timezone to the default value of UTC. + @return An autoreleased `RKDotNetDateFormatter` object + @see dotNetDateFormatter + */ ++ (instancetype)dotNetDateFormatterWithTimeZone:(NSTimeZone *)timeZone; + +/** + Returns an `NSDate` object from an ASP.NET style date string respresentation, as seen in JSON. + + Acceptable examples are: + /Date(1112715000000-0500)/ + /Date(1112715000000)/ + /Date(-1112715000000)/ + Where 1112715000000 is the number of milliseconds since January 1, 1970 00:00 GMT/UTC, and -0500 represents the timezone offset from GMT in 24-hour time. Negatives milliseconds are treated as dates before January 1, 1970. + + *NOTE* `NSDate` objects do not have timezones, and you should never change an actual date value based on a timezone offset. However, timezones are important when presenting dates to the user. Therefore, If an offset is present in the ASP.NET string (it should be), we actually ignore the offset portion because we want to store the actual date value in its raw form, without any pollution of timezone information. If, on the other hand, there is no offset in the ASP.NET string, we assume GMT (+0000) anyway. In summation, for this class `setTimeZone:` is ignored except when using `stringFromDate:` + + @param string The ASP.NET style string, /Date(1112715000000-0500)/ + @return An `NSDate` object. + @see `stringFromDate` + @see `NSDateFormatter` + @see `NSTimeZone` + */ +- (NSDate *)dateFromString:(NSString *)string; + +/** + Returns an ASP.NET style date string from an NSDate, such as /Date(1112715000000+0000)/ Where 1112715000000 is the number of milliseconds since January 1, 1970 00:00 GMT/UTC, and +0000 is the timezone offset from GMT in 24-hour time. + + *NOTE *GMT (+0000) is assumed otherwise specified via `setTimeZone:` + + @param date An `NSDate` object from which to return a string value. + @return The ASP.NET style string, /Date(1112715000000-0500)/ + @see `dateFromString` + @see `NSDateFormatter` + @see `NSTimeZone` + */ +- (NSString *)stringFromDate:(NSDate *)date; +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKDotNetDateFormatter.m b/Unit-2-Journal/Pods/RestKit/Code/Support/RKDotNetDateFormatter.m new file mode 100644 index 0000000..11e2a53 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKDotNetDateFormatter.m @@ -0,0 +1,115 @@ +// +// RKDotNetDateFormatter.h +// RestKit +// +// Created by Greg Combs on 9/8/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKDotNetDateFormatter.h" +#import "RKLog.h" + +static BOOL RKDotNetDateFormatterIsValidRange(NSRange rangeOfMatch) +{ + return (!NSEqualRanges(rangeOfMatch, NSMakeRange(NSNotFound, 0))); +} + +static NSTimeInterval RKDotNetDateFormatterSecondsFromMilliseconds(NSTimeInterval millisecs) +{ + return millisecs / 1000.f; +} + +static NSTimeInterval RKDotNetDateFormatterMillisecondsFromSeconds(NSTimeInterval seconds) +{ + return seconds *1000.f; +} + +@interface RKDotNetDateFormatter () +@property (nonatomic, strong) NSRegularExpression *dotNetExpression; + +- (NSString *)millisecondsFromString:(NSString *)string; +@end + +@implementation RKDotNetDateFormatter + ++ (instancetype)dotNetDateFormatterWithTimeZone:(NSTimeZone *)newTimeZone +{ + RKDotNetDateFormatter *formatter = [self new]; + if (newTimeZone) formatter.timeZone = newTimeZone; + return formatter; +} + +- (NSDate *)dateFromString:(NSString *)string +{ + NSString *milliseconds = [self millisecondsFromString:string]; + if (!milliseconds) { + RKLogError(@"Attempted to interpret an invalid .NET date string: %@", string); + return nil; + } + NSTimeInterval seconds = RKDotNetDateFormatterSecondsFromMilliseconds([milliseconds doubleValue]); + return [NSDate dateWithTimeIntervalSince1970:seconds]; +} + + +- (NSString *)stringFromDate:(NSDate *)date +{ + if (!date) { + RKLogError(@"Attempted to represent an invalid date: %@", date); + return nil; + } + return [self stringForObjectValue:date]; +} + +- (BOOL)getObjectValue:(id *)outValue forString:(NSString *)string errorDescription:(NSString **)error +{ + NSDate *date = [self dateFromString:string]; + if (outValue) + *outValue = date; + return (date != nil); +} + +- (NSString *)stringForObjectValue:(id)value +{ + NSParameterAssert([value isKindOfClass:[NSDate class]]); + NSString *timeZoneOffset = [super stringForObjectValue:value]; + NSTimeInterval milliseconds = RKDotNetDateFormatterMillisecondsFromSeconds([(NSDate *)value timeIntervalSince1970]); + return [NSString stringWithFormat:@"/Date(%1.0lf%@)/", milliseconds, timeZoneOffset]; +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + self.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; + self.timeZone = [NSTimeZone timeZoneWithName:@"UTC"]; + [self setDateFormat:@"ZZ"]; // GMT offset, like "-0500" + NSString *pattern = @"\\/Date\\((-?\\d+)((?:[\\+\\-]\\d+)?)\\)\\/"; // /Date(mSecs)/ or /Date(-mSecs)/ or /Date(mSecs-0400)/ + self.dotNetExpression = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:NULL]; + } + return self; +} + +- (NSString *)millisecondsFromString:(NSString *)string +{ + if (!string) return nil; + NSTextCheckingResult *match = [self.dotNetExpression firstMatchInString:string options:NSMatchingReportCompletion range:NSMakeRange(0, [string length])]; + if (!match) return nil; + NSRange millisecRange = [match rangeAtIndex:1]; + if (!RKDotNetDateFormatterIsValidRange(millisecRange)) return nil; + NSString *milliseconds = [string substringWithRange:millisecRange]; + return milliseconds; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKErrors.h b/Unit-2-Journal/Pods/RestKit/Code/Support/RKErrors.h new file mode 100644 index 0000000..bf79280 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKErrors.h @@ -0,0 +1,59 @@ +// +// RKErrors.h +// RestKit +// +// Created by Blake Watters on 3/25/10. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +///--------------------------- +/// @name Error Domain & Codes +///--------------------------- + +// The error domain for RestKit generated errors +extern NSString * const RKErrorDomain; + +typedef NS_ENUM(NSInteger, RKRestKitError) { + RKUnsupportedMIMETypeError = 1, + RKOperationCancelledError = 2 +} ; + + +///-------------------------------------- +/// @name Error User Info Dictionary Keys +///-------------------------------------- + +/** + The key RestKit generated errors will appear at within an NSNotification + indicating an error + */ +extern NSString *const RKErrorNotificationErrorKey; + +/** + When RestKit constructs an NSError object from one or more RKErrorMessage + (or other object mapped error representations), the userInfo of the NSError + object will be populated with an array of the underlying error objects. + + These underlying errors can be accessed via RKObjectMapperErrorObjectsKey key. + + @see RKObjectMappingResult + */ +extern NSString *const RKObjectMapperErrorObjectsKey; + +extern NSString *const RKDetailedErrorsKey; // When multiple errors occur, they are stored in a composite error + +extern NSString *const RKMIMETypeErrorKey; diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKErrors.m b/Unit-2-Journal/Pods/RestKit/Code/Support/RKErrors.m new file mode 100644 index 0000000..ae9a154 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKErrors.m @@ -0,0 +1,28 @@ +// +// RKErrors.m +// RestKit +// +// Created by Blake Watters on 3/25/10. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKErrors.h" + +NSString * const RKErrorDomain = @"org.restkit.RestKit.ErrorDomain"; + +NSString * const RKObjectMapperErrorObjectsKey = @"RKObjectMapperErrorObjectsKey"; +NSString * const RKErrorNotificationErrorKey = @"error"; +NSString * const RKDetailedErrorsKey = @"DetailedErrors"; +NSString * const RKMIMETypeErrorKey = @"MIME Type"; diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKLog.h b/Unit-2-Journal/Pods/RestKit/Code/Support/RKLog.h new file mode 100644 index 0000000..da5de94 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKLog.h @@ -0,0 +1,248 @@ +// +// RKLog.h +// RestKit +// +// Created by Blake Watters on 5/3/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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. +// + +/** + RestKit Logging is based on the LibComponentLogging framework + + @see lcl_config_components_RK.h + @see lcl_config_logger_RK.h + */ +#import "lcl_RK.h" + +/** + * Protocol which classes can implement to determine how RestKit log messages actually get handled. + * There is a single "current" logging class installed, which all log messages will flow + * through. + */ +@protocol RKLogging + ++ (void)logWithComponent:(_RKlcl_component_t)component + level:(_RKlcl_level_t)level + path:(const char *)file + line:(uint32_t)line + function:(const char *)function + format:(NSString *)format, ... NS_FORMAT_FUNCTION(6, 7); + +@end + +/** + * Functions to get and set the current RKLogging class. + */ +Class <RKLogging> RKGetLoggingClass(void); +void RKSetLoggingClass(Class <RKLogging> loggingClass); + + + +/** + RKLogComponent defines the active component within any given portion of RestKit + + By default, messages will log to the base 'RestKit' log component. All other components + used by RestKit are nested under this parent, so this effectively sets the default log + level for the entire library. + + The component can be undef'd and redefined to change the active logging component. + */ +#define RKLogComponent RKlcl_cRestKit + +/** + The logging macros. These macros will log to the currently active logging component + at the log level identified in the name of the macro. + + For example, in the `RKMappingOperation` class we would redefine the RKLogComponent: + + #undef RKLogComponent + #define RKLogComponent RKlcl_cRestKitObjectMapping + + The RKlcl_c prefix is the LibComponentLogging data structure identifying the logging component + we want to target within this portion of the codebase. See lcl_config_component_RK.h for reference. + + Having defined the logging component, invoking the logger via: + + RKLogInfo(@"This is my log message!"); + + Would result in a log message similar to: + + I RestKit.ObjectMapping:RKLog.h:42 This is my log message! + + The message will only be logged if the log level for the active component is equal to or higher + than the level the message was logged at (in this case, Info). + */ +#define RKLogCritical(...) \ +RKlcl_log(RKLogComponent, RKlcl_vCritical, @"" __VA_ARGS__) + +#define RKLogError(...) \ +RKlcl_log(RKLogComponent, RKlcl_vError, @"" __VA_ARGS__) + +#define RKLogWarning(...) \ +RKlcl_log(RKLogComponent, RKlcl_vWarning, @"" __VA_ARGS__) + +#define RKLogInfo(...) \ +RKlcl_log(RKLogComponent, RKlcl_vInfo, @"" __VA_ARGS__) + +#define RKLogDebug(...) \ +RKlcl_log(RKLogComponent, RKlcl_vDebug, @"" __VA_ARGS__) + +#define RKLogTrace(...) \ +RKlcl_log(RKLogComponent, RKlcl_vTrace, @"" __VA_ARGS__) + +/** + Log Level Aliases + + These aliases simply map the log levels defined within LibComponentLogger to something more friendly + */ +#define RKLogLevelOff RKlcl_vOff +#define RKLogLevelCritical RKlcl_vCritical +#define RKLogLevelError RKlcl_vError +#define RKLogLevelWarning RKlcl_vWarning +#define RKLogLevelInfo RKlcl_vInfo +#define RKLogLevelDebug RKlcl_vDebug +#define RKLogLevelTrace RKlcl_vTrace + +/** + Alias the LibComponentLogger logging configuration method. Also ensures logging + is initialized for the framework. + + Expects the name of the component and a log level. + + Examples: + + // Log debugging messages from the Network component + RKLogConfigureByName("RestKit/Network", RKLogLevelDebug); + + // Log only critical messages from the Object Mapping component + RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelCritical); + */ +#define RKLogConfigureByName(name, level) \ +RKlcl_configure_by_name(name, level); + +/** + Alias for configuring the LibComponentLogger logging component for the App. This + enables the end-user of RestKit to leverage RKLog() to log messages inside of + their apps. + */ +#define RKLogSetAppLoggingLevel(level) \ +RKlcl_configure_by_name("App", level); + +/** + Temporarily changes the logging level for the specified component and executes the block. Any logging + statements executed within the body of the block against the specified component will log at the new + logging level. After the block has executed, the logging level is restored to its previous state. + */ +#define RKLogToComponentWithLevelWhileExecutingBlock(_component, _level, _block) \ + do { \ + int _currentLevel = _RKlcl_component_level[_component]; \ + RKlcl_configure_by_component(_component, _level); \ + @try { \ + _block(); \ + } \ + @catch (NSException *exception) { \ + @throw; \ + } \ + @finally { \ + RKlcl_configure_by_component(_component, _currentLevel); \ + } \ + } while (false); + +/** + Temporarily turns off logging for the given logging component during execution of the block. + After the block has finished execution, the logging level is restored to its previous state. + */ +#define RKLogSilenceComponentWhileExecutingBlock(component, _block) \ + RKLogToComponentWithLevelWhileExecutingBlock(component, RKLogLevelOff, _block) + +/** + Temporarily changes the logging level for the configured RKLogComponent and executes the block. Any logging + statements executed within the body of the block for the current logging component will log at the new + logging level. After the block has finished execution, the logging level is restored to its previous state. + */ +#define RKLogWithLevelWhileExecutingBlock(_level, _block) \ + RKLogToComponentWithLevelWhileExecutingBlock(RKLogComponent, _level, _block) + + +/** + Temporarily turns off logging for current logging component during execution of the block. + After the block has finished execution, the logging level is restored to its previous state. + */ +#define RKLogSilenceWhileExecutingBlock(_block) \ + RKLogToComponentWithLevelWhileExecutingBlock(RKLogComponent, RKLogLevelOff, _block) + + +/** + Set the Default Log Level + + Based on the presence of the DEBUG flag, we default the logging for the RestKit parent component + to Info or Warning. + + You can override this setting by defining RKLogLevelDefault as a pre-processor macro. + */ +#ifndef RKLogLevelDefault + #ifdef DEBUG + #define RKLogLevelDefault RKLogLevelInfo + #else + #define RKLogLevelDefault RKLogLevelWarning + #endif +#endif + +/** + Configure RestKit logging from environment variables. + (Use Option + Command + R to set Environment Variables prior to run.) + + For example to configure the equivalent of setting the following in code: + RKLogConfigureByName("RestKit/Network", RKLogLevelTrace); + + Define an environment variable named 'RKLogLevel.RestKit.Network' and set its value to "Trace" + + See lcl_config_components_RK.h for configurable RestKit logging components. + + Valid values are the following: + Default or 0 + Critical or 1 + Error or 2 + Warning or 3 + Info or 4 + Debug or 5 + Trace or 6 + */ +void RKLogConfigureFromEnvironment(void); + +/** + Logs extensive information about an NSError generated as the results + of a failed key-value validation error. + */ +void RKLogValidationError(NSError *error); + +#ifdef _COREDATADEFINES_H +/** + Logs extensive information an NSError generated as the result of a + failed Core Data interaction, such as the execution of a fetch request + or the saving of a managed object context. + + The error will be logged to the RestKit/CoreData component with an + error level of RKLogLevelError regardless of the current logging context + at invocation time. + */ +void RKLogCoreDataError(NSError *error); +#endif + +/** + Logs the value of an NSUInteger as a binary string. Useful when + examining integers containing bitmasked values. + */ +void RKLogIntegerAsBinary(NSUInteger); diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKLog.m b/Unit-2-Journal/Pods/RestKit/Code/Support/RKLog.m new file mode 100644 index 0000000..100798e --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKLog.m @@ -0,0 +1,213 @@ +// +// RKLog.m +// RestKit +// +// Created by Blake Watters on 6/10/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKLog.h" + +@interface RKNSLogLogger : NSObject <RKLogging> +@end + +#if RKLOG_USE_NSLOGGER && __has_include("LCLNSLogger_RK.h") + #import "LCLNSLogger_RK.h" + #define RKLOG_CLASS LCLNSLogger_RK + +#elif __has_include("DDLog.h") + #import "RKLumberjackLogger.h" + #define RKLOG_CLASS RKLumberjackLogger + +#else + #define RKLOG_CLASS RKNSLogLogger +#endif + +// Hook into Objective-C runtime to configure logging when we are loaded +@interface RKLogInitializer : NSObject +@end + +@implementation RKLogInitializer + ++ (void)load +{ + RKlcl_configure_by_name("RestKit*", RKLogLevelDefault); + RKlcl_configure_by_name("App", RKLogLevelDefault); + if (RKGetLoggingClass() == Nil) RKSetLoggingClass([RKLOG_CLASS class]); + RKLogInfo(@"RestKit logging initialized..."); +} + +@end + +static Class <RKLogging> RKLoggingClass; + +Class <RKLogging> RKGetLoggingClass(void) +{ + return RKLoggingClass; +} + +void RKSetLoggingClass(Class <RKLogging> loggingClass) +{ + RKLoggingClass = loggingClass; +} + +@implementation RKNSLogLogger + ++ (void)logWithComponent:(_RKlcl_component_t)component + level:(_RKlcl_level_t)level + path:(const char *)file + line:(uint32_t)line + function:(const char *)function + format:(NSString *)format, ... +{ + va_list args; + va_start(args, format); + NSString *message = [[NSString alloc] initWithFormat:format arguments:args]; + va_end(args); + const char *fileName = (fileName = strrchr(file, '/')) ? fileName + 1 : file; + NSLog(@"%s %s:%s:%d %@", _RKlcl_level_header_1[level], _RKlcl_component_header[component], fileName, line, message); +} + +@end + +int RKLogLevelForString(NSString *, NSString *); + +void RKLogConfigureFromEnvironment(void) +{ + static NSString *logComponentPrefix = @"RKLogLevel."; + + NSDictionary *envVars = [[NSProcessInfo processInfo] environment]; + + for (NSString *envVarName in [envVars allKeys]) { + if ([envVarName hasPrefix:logComponentPrefix]) { + NSString *logLevel = [envVars valueForKey:envVarName]; + NSString *logComponent = [envVarName stringByReplacingOccurrencesOfString:logComponentPrefix withString:@""]; + logComponent = [logComponent stringByReplacingOccurrencesOfString:@"." withString:@"/"]; + + const char *log_component_c_str = [logComponent cStringUsingEncoding:NSUTF8StringEncoding]; + int log_level_int = RKLogLevelForString(logLevel, envVarName); + RKLogConfigureByName(log_component_c_str, log_level_int); + } + } +} + + +int RKLogLevelForString(NSString *logLevel, NSString *envVarName) +{ + // Forgive the user if they specify the full name for the value i.e. "RKLogLevelDebug" instead of "Debug" + logLevel = [logLevel stringByReplacingOccurrencesOfString:@"RKLogLevel" withString:@""]; + + if ([logLevel isEqualToString:@"Off"] || + [logLevel isEqualToString:@"0"]) { + return RKLogLevelOff; + } + else if ([logLevel isEqualToString:@"Critical"] || + [logLevel isEqualToString:@"1"]) { + return RKLogLevelCritical; + } + else if ([logLevel isEqualToString:@"Error"] || + [logLevel isEqualToString:@"2"]) { + return RKLogLevelError; + } + else if ([logLevel isEqualToString:@"Warning"] || + [logLevel isEqualToString:@"3"]) { + return RKLogLevelWarning; + } + else if ([logLevel isEqualToString:@"Info"] || + [logLevel isEqualToString:@"4"]) { + return RKLogLevelInfo; + } + else if ([logLevel isEqualToString:@"Debug"] || + [logLevel isEqualToString:@"5"]) { + return RKLogLevelDebug; + } + else if ([logLevel isEqualToString:@"Trace"] || + [logLevel isEqualToString:@"6"]) { + return RKLogLevelTrace; + } + else if ([logLevel isEqualToString:@"Default"]) { + return RKLogLevelDefault; + } + else { + NSString *errorMessage = [NSString stringWithFormat:@"The value: \"%@\" for the environment variable: \"%@\" is invalid. \ + \nThe log level must be set to one of the following values \ + \n Default or 0 \ + \n Critical or 1 \ + \n Error or 2 \ + \n Warning or 3 \ + \n Info or 4 \ + \n Debug or 5 \ + \n Trace or 6\n", logLevel, envVarName]; + @throw [NSException exceptionWithName:NSInvalidArgumentException reason:errorMessage userInfo:nil]; + + return -1; + } +} + +void RKLogIntegerAsBinary(NSUInteger bitMask) +{ + NSUInteger bit = ~(NSUIntegerMax >> 1); + NSMutableString *string = [NSMutableString string]; + do { + [string appendString:(((NSUInteger)bitMask & bit) ? @"1" : @"0")]; + } while (bit >>= 1); + + NSLog(@"Value of %ld in binary: %@", (long)bitMask, string); +} + +void RKLogValidationError(NSError *error) +{ +#ifdef _COREDATADEFINES_H + if ([[error domain] isEqualToString:NSCocoaErrorDomain]) { + NSDictionary *userInfo = [error userInfo]; + NSArray *errors = [userInfo valueForKey:@"NSDetailedErrors"]; + if (errors) { + for (NSError *detailedError in errors) { + NSDictionary *subUserInfo = [detailedError userInfo]; + RKLogError(@"Detailed Error\n \ + NSLocalizedDescriptionKey:\t\t%@\n \ + NSValidationKeyErrorKey:\t\t\t%@\n \ + NSValidationPredicateErrorKey:\t%@\n \ + NSValidationObjectErrorKey:\n%@\n", + [subUserInfo valueForKey:NSLocalizedDescriptionKey], + [subUserInfo valueForKey:NSValidationKeyErrorKey], + [subUserInfo valueForKey:NSValidationPredicateErrorKey], + [subUserInfo valueForKey:NSValidationObjectErrorKey]); + } + } else { + RKLogError(@"Validation Error\n \ + NSLocalizedDescriptionKey:\t\t%@\n \ + NSValidationKeyErrorKey:\t\t\t%@\n \ + NSValidationPredicateErrorKey:\t%@\n \ + NSValidationObjectErrorKey:\n%@\n", + [userInfo valueForKey:NSLocalizedDescriptionKey], + [userInfo valueForKey:NSValidationKeyErrorKey], + [userInfo valueForKey:NSValidationPredicateErrorKey], + [userInfo valueForKey:NSValidationObjectErrorKey]); + } + return; + } +#endif + RKLogError(@"Validation Error: %@ (userInfo: %@)", error, [error userInfo]); +} + +#ifdef _COREDATADEFINES_H +void RKLogCoreDataError(NSError *error) +{ + RKLogToComponentWithLevelWhileExecutingBlock(RKlcl_cRestKitCoreData, RKLogLevelError, ^{ + RKLogValidationError(error); + }); +} +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKLumberjackLogger.h b/Unit-2-Journal/Pods/RestKit/Code/Support/RKLumberjackLogger.h new file mode 100644 index 0000000..c77def6 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKLumberjackLogger.h @@ -0,0 +1,17 @@ +// +// RKLumberjackLogger.h +// Pods +// +// Created by C_Lindberg,Carl on 10/31/14. +// +// + +#import <Foundation/Foundation.h> + +#if __has_include("DDLog.h") +#import "RKLog.h" + +@interface RKLumberjackLogger : NSObject <RKLogging> +@end + +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKLumberjackLogger.m b/Unit-2-Journal/Pods/RestKit/Code/Support/RKLumberjackLogger.m new file mode 100644 index 0000000..34b2cc8 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKLumberjackLogger.m @@ -0,0 +1,107 @@ +// +// RKLumberjackLogger.m +// Pods +// +// Created by C_Lindberg,Carl on 10/31/14. +// +// + +#if __has_include("DDLog.h") +#import "RKLumberjackLogger.h" +#import "DDLog.h" + +@implementation RKLumberjackLogger + ++ (int)ddLogLevelFromRKLogLevel:(_RKlcl_level_t)rkLevel +{ + switch (rkLevel) + { + case RKLogLevelOff: return LOG_LEVEL_OFF; + case RKLogLevelCritical: return LOG_LEVEL_ERROR; + case RKLogLevelError: return LOG_LEVEL_ERROR; + case RKLogLevelWarning: return LOG_LEVEL_WARN; + case RKLogLevelInfo: return LOG_LEVEL_INFO; + case RKLogLevelDebug: return LOG_LEVEL_DEBUG; + case RKLogLevelTrace: return LOG_LEVEL_VERBOSE; + } + + return LOG_LEVEL_DEBUG; +} + ++ (int)ddLogFlagFromRKLogLevel:(_RKlcl_level_t)rkLevel +{ + switch (rkLevel) + { + case RKLogLevelOff: return 0; + case RKLogLevelCritical: return LOG_FLAG_ERROR; + case RKLogLevelError: return LOG_FLAG_ERROR; + case RKLogLevelWarning: return LOG_FLAG_WARN; + case RKLogLevelInfo: return LOG_FLAG_INFO; + case RKLogLevelDebug: return LOG_FLAG_DEBUG; + case RKLogLevelTrace: return LOG_FLAG_VERBOSE; + } + + return LOG_FLAG_DEBUG; +} + ++ (_RKlcl_level_t)rkLogLevelFromDDLogLevel:(int)ddLogLevel +{ + if (ddLogLevel & LOG_FLAG_VERBOSE) return RKLogLevelTrace; + if (ddLogLevel & LOG_FLAG_DEBUG) return RKLogLevelDebug; + if (ddLogLevel & LOG_FLAG_INFO) return RKLogLevelInfo; + if (ddLogLevel & LOG_FLAG_WARN) return RKLogLevelWarning; + if (ddLogLevel & LOG_FLAG_ERROR) return RKLogLevelError; + + return RKLogLevelOff; +} + + +#pragma mark RKLogging + ++ (void)logWithComponent:(_RKlcl_component_t)component + level:(_RKlcl_level_t)level + path:(const char *)path + line:(uint32_t)line + function:(const char *)function + format:(NSString *)format, ... +{ + va_list args; + va_start(args, format); + + int flag = [self ddLogFlagFromRKLogLevel:level]; + int componentLevel = [self ddLogLevelFromRKLogLevel:_RKlcl_component_level[component]]; + BOOL async = LOG_ASYNC_ENABLED && ((flag & LOG_FLAG_ERROR) == 0); + + [DDLog log:async + level:componentLevel + flag:flag + context:0 /* Could define a special value here to identify RestKit logs to any backend loggers */ + file:path function:function line:line + tag:nil + format:format args:args]; + va_end(args); +} + +@end + +/* Create a DDRegisteredDynamicLogging class for each RestKit component */ + +#undef _RKlcl_component +#define _RKlcl_component(_identifier, _header, _name) \ + @interface RKLumberjackLog##_identifier : NSObject <DDRegisteredDynamicLogging> \ + @end \ + @implementation RKLumberjackLog##_identifier \ + + (int)ddLogLevel { \ + _RKlcl_level_t level = _RKlcl_component_level[RKlcl_c##_identifier]; \ + return [RKLumberjackLogger ddLogLevelFromRKLogLevel:level]; \ + } \ + + (void)ddSetLogLevel:(int)logLevel { \ + RKLogConfigureByName(_name, [RKLumberjackLogger rkLogLevelFromDDLogLevel:logLevel]); \ + } \ + @end + +#include "lcl_config_components_RK.h" +#undef _RKlcl_component + + +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypeSerialization.h b/Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypeSerialization.h new file mode 100644 index 0000000..071869a --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypeSerialization.h @@ -0,0 +1,97 @@ +// +// RKMIMETypeSerialization.h +// RestKit +// +// Created by Blake Watters on 5/18/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKMIMETypes.h" +#import "RKSerialization.h" + +/** + The `RKMIMETypeSerialization` class provides support for the registration of classes conforming to the `RKSerialization` protocol by MIME Type and the serialization and deserialization of content by MIME Type. Serialization implementations may be registered by an exact string match (i.e. 'application/json' for a JSON serialization implementation) or by regular expression to match MIME Type by pattern. + */ +@interface RKMIMETypeSerialization : NSObject + +///--------------------------------------- +/// @name Managing MIME Type Registrations +///--------------------------------------- + +/** + Registers the given serialization class to handle content for the given MIME Type identifier. + + MIME Types may be given as either a string or as a regular expression that matches the MIME Types for which the given serialization should handle. Serializations are searched in the reverse order of their registration. If a registration is made for an already registered MIME Type, the new registration will take precedence. + + @param serializationClass The class conforming to the RKSerialization protocol to be registered as handling the given MIME Type. + @param MIMETypeStringOrRegularExpression A string or regular expression specifying the MIME Type(s) that given serialization implementation is to be registered as handling. + */ ++ (void)registerClass:(Class<RKSerialization>)serializationClass forMIMEType:(id)MIMETypeStringOrRegularExpression; + +/** + Unregisters the given serialization class from handling any MIME Types. + + After this method is invoked, invocations of `serializationForMIMEType:` will no longer return the unregistered serialization class. + + @param serializationClass The class conforming to the `RKSerialization` protocol to be unregistered. + */ ++ (void)unregisterClass:(Class<RKSerialization>)serializationClass; + +/** + Returns the serialization class registered to handle the given MIME Type. + + Searches the registrations in reverse order for the first serialization implementation registered to handle the given MIME Type. Matches are determined by doing a lowercase string comparison if the MIME Type was registered with a string identifier or by evaluating a regular expression match against the given MIME Type if registered with a regular expression. + + @param MIMEType The MIME Type for which to return the registered `RKSerialization` conformant class. + @return A class conforming to the RKSerialization protocol registered for the given MIME Type or nil if none was found. + */ ++ (Class<RKSerialization>)serializationClassForMIMEType:(NSString *)MIMEType; + +/** + Returns a set containing the string values for all MIME Types for which a serialization implementation has been registered. + + @return An `NSSet` object whose elements are `NSString` values enumerating the registered MIME Types. + */ ++ (NSSet *)registeredMIMETypes; + +///--------------------------------------------------------- +/// @name Serializing and Deserializing Content by MIME Type +///--------------------------------------------------------- + +/** + Deserializes and returns a Foundation object representation of the given UTF-8 encoded data in the serialization format for the given MIME Type. + + On invocation, searches the registrations by invoking `serializationClassForMIMEType:` with the given MIME Type and then invokes `objectFromData:error:` on the `RKSerialization` conformant class returned. If no serialization implementation is found to handle the given MIME Type, nil is returned and the given error pointer will be set to an NSError object with the `RKMissingSerializationForMIMETypeError` code. + + @param data The UTF-8 encoded data representation of the object to be deserialized. + @param MIMEType The MIME Type of the serialization format the data is in. + @param error A pointer to an NSError object. + @return A Foundation object from the serialized data in data, or nil if an error occurs. + */ ++ (id)objectFromData:(NSData *)data MIMEType:(NSString *)MIMEType error:(NSError **)error; + +/** + Serializes and returns a UTF-8 encoded data representation of the given Foundation object in the serialization format for the given MIME Type. + + On invocation, searches the registrations by invoking `serializationClassForMIMEType:` with the given MIME Type and then invokes `objectFromData:error:` on the `RKSerialization` conformant class returned. If no serialization implementation is found to handle the given MIME Type, nil is returned and the given error pointer will be set to an NSError object with the `RKMissingSerializationForMIMETypeError` code. + + @param object The Foundation object to serialized. + @param MIMEType The MIME Type of the serialization format the data is in. + @param error A pointer to an NSError object. + @return A Foundation object from the serialized data in data, or nil if an error occurs. + */ ++ (NSData *)dataFromObject:(id)object MIMEType:(NSString *)MIMEType error:(NSError **)error; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypeSerialization.m b/Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypeSerialization.m new file mode 100644 index 0000000..caf4145 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypeSerialization.m @@ -0,0 +1,182 @@ +// +// RKMIMETypeSerialization.m +// RestKit +// +// Created by Blake Watters on 5/18/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKMIMETypeSerialization.h" +#import "RKErrors.h" +#import "RKSerialization.h" +#import "RKLog.h" +#import "RKURLEncodedSerialization.h" +#import "RKNSJSONSerialization.h" + +// Define logging component +#undef RKLogComponent +#define RKLogComponent RKlcl_cRestKitSupport + +@interface RKMIMETypeSerializationRegistration : NSObject + +@property (nonatomic, strong) id MIMETypeStringOrRegularExpression; +@property (nonatomic, assign) Class<RKSerialization> serializationClass; + +- (instancetype)initWithMIMEType:(id)MIMETypeStringOrRegularExpression serializationClass:(Class<RKSerialization>)serializationClass NS_DESIGNATED_INITIALIZER; +- (BOOL)matchesMIMEType:(NSString *)MIMEType; +@end + +@implementation RKMIMETypeSerializationRegistration + +- (instancetype)initWithMIMEType:(id)MIMETypeStringOrRegularExpression serializationClass:(Class<RKSerialization>)serializationClass +{ + NSParameterAssert(MIMETypeStringOrRegularExpression); + NSParameterAssert(serializationClass); + NSAssert([MIMETypeStringOrRegularExpression isKindOfClass:[NSString class]] + || [MIMETypeStringOrRegularExpression isKindOfClass:[NSRegularExpression class]], + @"Can only register a serialization class for a MIME Type by string or regular expression."); + + self = [super init]; + if (self) { + self.MIMETypeStringOrRegularExpression = MIMETypeStringOrRegularExpression; + self.serializationClass = serializationClass; + } + + return self; +} + +- (BOOL)matchesMIMEType:(NSString *)MIMEType +{ + return RKMIMETypeInSet(MIMEType, [NSSet setWithObject:self.MIMETypeStringOrRegularExpression]); +} + +- (NSString *)description +{ + NSString *mimeTypeDescription = [self.MIMETypeStringOrRegularExpression isKindOfClass:[NSRegularExpression class]] ? + [NSString stringWithFormat:@"MIME Type =~ \"%@\"", self.MIMETypeStringOrRegularExpression] : + [NSString stringWithFormat:@"MIME Type == \"%@\"", self.MIMETypeStringOrRegularExpression]; + return [NSString stringWithFormat:@"<%@: %p, %@, serializationClass=%@>", + NSStringFromClass([self class]), self, mimeTypeDescription, NSStringFromClass(self.serializationClass)]; +} + +@end + +@interface RKMIMETypeSerialization () +@property (nonatomic, strong) NSMutableArray *registrations; +@end + +@implementation RKMIMETypeSerialization + ++ (RKMIMETypeSerialization *)sharedSerialization +{ + static RKMIMETypeSerialization *sharedInstance = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + sharedInstance = [[RKMIMETypeSerialization alloc] init]; + [sharedInstance addRegistrationsForKnownSerializations]; + }); + return sharedInstance; + +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + self.registrations = [NSMutableArray new]; + } + + return self; +} + +- (void)addRegistrationsForKnownSerializations +{ + // URL Encoded + [self.registrations addObject:[[RKMIMETypeSerializationRegistration alloc] initWithMIMEType:RKMIMETypeFormURLEncoded + serializationClass:[RKURLEncodedSerialization class]]]; + // JSON + [self.registrations addObject:[[RKMIMETypeSerializationRegistration alloc] initWithMIMEType:RKMIMETypeJSON + serializationClass:[RKNSJSONSerialization class]]]; +} + +#pragma mark - Public + ++ (Class<RKSerialization>)serializationClassForMIMEType:(NSString *)MIMEType +{ + for (RKMIMETypeSerializationRegistration *registration in [[self sharedSerialization].registrations reverseObjectEnumerator]) { + if ([registration matchesMIMEType:MIMEType]) { + return registration.serializationClass; + } + } + return nil; +} + ++ (void)registerClass:(Class<RKSerialization>)serializationClass forMIMEType:(id)MIMETypeStringOrRegularExpression +{ + RKMIMETypeSerializationRegistration *registration = [[RKMIMETypeSerializationRegistration alloc] initWithMIMEType:MIMETypeStringOrRegularExpression serializationClass:serializationClass]; + [[self sharedSerialization].registrations addObject:registration]; +} + ++ (void)unregisterClass:(Class<RKSerialization>)serializationClass +{ + NSArray *registrationsCopy = [[self sharedSerialization].registrations copy]; + for (RKMIMETypeSerializationRegistration *registration in registrationsCopy) { + if (registration.serializationClass == serializationClass) { + [[self sharedSerialization].registrations removeObject:registration]; + } + } +} + ++ (NSSet *)registeredMIMETypes +{ + return [NSSet setWithArray:[[self sharedSerialization].registrations valueForKey:@"MIMETypeStringOrRegularExpression"]]; +} + ++ (id)objectFromData:(NSData *)data MIMEType:(NSString *)MIMEType error:(NSError **)error +{ + NSParameterAssert(data); + NSParameterAssert(MIMEType); + + Class<RKSerialization> serializationClass = [self serializationClassForMIMEType:MIMEType]; + if (!serializationClass) { + if (error) { + NSString* errorMessage = [NSString stringWithFormat:@"Cannot deserialize data: No serialization registered for MIME Type '%@'", MIMEType]; + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey : errorMessage, RKMIMETypeErrorKey : MIMEType }; + *error = [NSError errorWithDomain:RKErrorDomain code:RKUnsupportedMIMETypeError userInfo:userInfo]; + } + return nil; + } + + return [serializationClass objectFromData:data error:error]; +} + ++ (id)dataFromObject:(id)object MIMEType:(NSString *)MIMEType error:(NSError **)error +{ + NSParameterAssert(object); + NSParameterAssert(MIMEType); + Class<RKSerialization> serializationClass = [self serializationClassForMIMEType:MIMEType]; + if (!serializationClass) { + if (error) { + NSString* errorMessage = [NSString stringWithFormat:@"Cannot deserialize data: No serialization registered for MIME Type '%@'", MIMEType]; + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey : errorMessage, RKMIMETypeErrorKey : MIMEType }; + *error = [NSError errorWithDomain:RKErrorDomain code:RKUnsupportedMIMETypeError userInfo:userInfo]; + } + return nil; + } + + return [serializationClass dataFromObject:object error:error]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypes.h b/Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypes.h new file mode 100644 index 0000000..8415d28 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypes.h @@ -0,0 +1,52 @@ +// +// RKMIMETypes.h +// RestKit +// +// Created by Blake Watters on 5/18/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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. +// + +#ifdef __cplusplus +extern "C" { +#endif + +/** + MIME Type Constants + */ + +/// MIME Type application/json +extern NSString * const RKMIMETypeJSON; + +/// MIME Type application/x-www-form-urlencoded +extern NSString * const RKMIMETypeFormURLEncoded; + +/// MIME Type application/xml +extern NSString * const RKMIMETypeXML; + +/// MIME Type text/xml +extern NSString * const RKMIMETypeTextXML; + +/** + Returns `YES` if the given MIME Type matches any MIME Type identifiers in the given set. + + @param MIMEType The MIME Type to evaluate the match for. + @param MIMETypes An `NSSet` object who entries are `NSString` or `NSRegularExpression` objects specifying MIME Types. + @return `YES` if the given MIME Type matches any identifier in the set, else `NO`. + */ +BOOL RKMIMETypeInSet(NSString *MIMEType, NSSet *MIMETypes); + +#ifdef __cplusplus +} +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypes.m b/Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypes.m new file mode 100644 index 0000000..c22ff5f --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKMIMETypes.m @@ -0,0 +1,44 @@ +// +// RKMIMETypes.m +// RestKit +// +// Created by Blake Watters on 5/18/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKMIMETypes.h" + +NSString * const RKMIMETypeJSON = @"application/json"; +NSString * const RKMIMETypeFormURLEncoded = @"application/x-www-form-urlencoded"; +NSString * const RKMIMETypeXML = @"application/xml"; +NSString * const RKMIMETypeTextXML = @"text/xml"; + +BOOL RKMIMETypeInSet(NSString *MIMEType, NSSet *MIMETypes) +{ + for (id MIMETypeStringOrRegularExpression in MIMETypes) { + if ([MIMETypeStringOrRegularExpression isKindOfClass:[NSString class]]) { + if ([[MIMETypeStringOrRegularExpression lowercaseString] isEqualToString:[MIMEType lowercaseString]]) return YES; + } else if ([MIMETypeStringOrRegularExpression isKindOfClass:[NSRegularExpression class]]) { + NSRegularExpression *regex = (NSRegularExpression *) MIMETypeStringOrRegularExpression; + NSUInteger numberOfMatches = [regex numberOfMatchesInString:[MIMEType lowercaseString] options:0 range:NSMakeRange(0, [MIMEType length])]; + if (numberOfMatches > 0) return YES; + } else { + NSString *reason = [NSString stringWithFormat:@"Unable to evaluate match for MIME Type '%@': expected an `NSString` or `NSRegularExpression`, got a `%@`", MIMEType, NSStringFromClass([MIMEType class])]; + @throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil]; + } + } + + return NO; +} diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKMacros.h b/Unit-2-Journal/Pods/RestKit/Code/Support/RKMacros.h new file mode 100644 index 0000000..2852d08 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKMacros.h @@ -0,0 +1,51 @@ +// +// RKMacros.h +// RestKit +// +// Created by Jawwad Ahmad on 7/18/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 RestKit_RKMacros_h +#define RestKit_RKMacros_h + +/* + Instead of using the normal DEPRECATED_ATTRIBUTE use DEPRECATED_ATTRIBUTE_MESSAGE(message) + to display a helpful recommendation message along with the deprecation message. + */ +#ifndef DEPRECATED_ATTRIBUTE_MESSAGE +#define DEPRECATED_ATTRIBUTE_MESSAGE(message) __attribute__((deprecated (message))) +#endif + +/* + Add this macro before each category implementation, so we don't have to use + -all_load or -force_load to load object files from static libraries that only contain + categories and no classes. + See http://developer.apple.com/library/mac/#qa/qa2006/qa1490.html for more info. + + Shamelessly borrowed from Three20 + */ +#define RK_FIX_CATEGORY_BUG(name) @interface RK_FIX_CATEGORY_BUG##name @end \ +@implementation RK_FIX_CATEGORY_BUG##name @end + +/* + Raises an `NSInvalidArgumentException` in the event that the given value is not an instance of the given class or an instance of any class that inherits from that class. + */ +#define RKAssertValueIsKindOfClass(value, expectedClass) \ +if (! [value isKindOfClass:expectedClass]) { \ +[NSException raise:NSInvalidArgumentException format:@"%@ invoked with invalid input value: expected a `%@`, but instead got a `%@`", [self class], expectedClass, [value class]]; \ +} + +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKNSJSONSerialization.h b/Unit-2-Journal/Pods/RestKit/Code/Support/RKNSJSONSerialization.h new file mode 100644 index 0000000..598e250 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKNSJSONSerialization.h @@ -0,0 +1,29 @@ +// +// RKNSJSONSerialization.h +// RestKit +// +// Created by Blake Watters on 8/31/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKSerialization.h" + +/** + The `RKNSJSONSerialization` class conforms to the `RKSerialization` protocol and provides support for the serialization and deserialization of data in the JSON format using the Apple provided `NSJSONSerialization` class. This is the default JSON implementation for RestKit. + + @see http://www.json.org/ + */ +@interface RKNSJSONSerialization : NSObject <RKSerialization> +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKNSJSONSerialization.m b/Unit-2-Journal/Pods/RestKit/Code/Support/RKNSJSONSerialization.m new file mode 100644 index 0000000..3b277ea --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKNSJSONSerialization.m @@ -0,0 +1,35 @@ +// +// RKNSJSONSerialization.m +// RestKit +// +// Created by Blake Watters on 8/31/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKNSJSONSerialization.h" + +@implementation RKNSJSONSerialization + ++ (id)objectFromData:(NSData *)data error:(NSError **)error +{ + return [NSJSONSerialization JSONObjectWithData:data options:0 error:error]; +} + ++ (NSData *)dataFromObject:(id)object error:(NSError **)error +{ + return [NSJSONSerialization dataWithJSONObject:object options:0 error:error]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKOperationStateMachine.h b/Unit-2-Journal/Pods/RestKit/Code/Support/RKOperationStateMachine.h new file mode 100644 index 0000000..bd7ea49 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKOperationStateMachine.h @@ -0,0 +1,158 @@ +// +// RKOperationStateMachine.h +// RestKit +// +// Created by Blake Watters on 4/11/13. +// Copyright (c) 2013 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +/** + The `RKOperationStateMachine` class provides an implementation of a state machine that is suitable for implementing a concurrent `NSOperation` subclass via composition. The concurrency mechanism is a dispatch queue. The state machine takes care of correctly implementing all aspects of a concurrent `NSOperation` including: + 1. Asynchronous execution + 1. Locking + 1. Appropriate state transitions + 1. Cancellation + 1. State Instrospection + + The state machine begins its life in the ready state. Upon start, the state transitions to executing and a user-supplied execution block is invoked on the operation's dispatch queue. The operation remains in the executing state until it is finished. Just before the operation is finished, a finalization block is invoked. In the event that the operation is cancelled, then an optional cancellation block is invoked. Note that because cancellation semantics can vary widely, a cancelled operation is merely flagged as being cancelled. It is the responsibility of the operation to ensure that a cancelled operation is finished as soon as possible. + + The underlying implementation of the state machine is backed by [TransitionKit](http://github.com/blakewatters/TransitionKit) + */ +@interface RKOperationStateMachine : NSObject + +- (instancetype)init __attribute__((unavailable("Invoke initWithOperation: instead."))); + +///----------------------------------- +/// @name Initializing a State Machine +///----------------------------------- + +/** + Initializes a new state machine object with a given operation and dispatch queue. + + @param operation The operation that the receiver is modeling the concurrent lifecycle of. + @param dispatchQueue The dispatch queue on which the operation executes concurrently. + @return The receiver, initialized with the given operation and queue. + */ +- (instancetype)initWithOperation:(NSOperation *)operation dispatchQueue:(dispatch_queue_t)dispatchQueue NS_DESIGNATED_INITIALIZER; + +///----------------------- +/// @name Inspecting State +///----------------------- + +/** + Returns a Boolean value that indicates if the receiver is ready to be started. + + @return `YES` if the receiver is ready to be started, else `NO`. + */ +@property (nonatomic, getter=isReady, readonly) BOOL ready; + +/** + Returns a Boolean value that indicates if the receiver is executing. + + @return `YES` if the receiver is executing, else `NO`. + */ +@property (nonatomic, getter=isExecuting, readonly) BOOL executing; + +/** + Returns a Boolean value that indicates if the receiver has been cancelled. + + @return `YES` if the receiver has been cancelled, else `NO`. + */ +@property (nonatomic, getter=isCancelled, readonly) BOOL cancelled; + +/** + Returns a Boolean value that indicates if the receiver has finished executing. + + @return `YES` if the receiver is finished, else `NO`. + */ +@property (nonatomic, getter=isFinished, readonly) BOOL finished; + +///-------------------- +/// @name Firing Events +///-------------------- + +/** + Starts the operation by transitioning into the executing state and asychronously invoking the execution block on the operation dispatch queue. + */ +- (void)start; + +/** + Finishes the operation by transitioning from the executing state to the finished state. The state transition is executed asynchronously on the operation dispatch queue. Invokes the finalization block just before the state changes from executing to finished. + */ +- (void)finish; + +/** + Marks the operation is being cancelled. Cancellation results in state transition because cancellation semantics can vary widely. Once the cancellation flag has been set (`isCancelled` return `YES`), the cancellation block is invoked asynchronously on the operation dispatch queue. The operation must be finished as soon as possible. + */ +- (void)cancel; + +///--------------------------------- +/// @name Configuring Event Handlers +///--------------------------------- + +/** + Sets a block to be executed on the operation dispatch queue once the operation transitions to the executing state. + + @param block The block to be executed. + */ +- (void)setExecutionBlock:(void (^)(void))block; + +/** + Sets a block to be executed when the operation is cancelled. The block will be invoked on the operation dispatch queue. Cancellation does not trigger any state transition -- the operation must still be explicitly finished as soon as possible. If appropriate, the operation may be finished within the body of the cancellation block. + + @param block The block to be executed. + */ +- (void)setCancellationBlock:(void (^)(void))block; + +/** + Sets a block to be executed when the operation is about to transition from executing to finished. This block is invoked regardless of the cancellation state. This block should be used to perform any last minute cleanup or preparation before the operation finishes. + + @param block The block to be executed. + */ +- (void)setFinalizationBlock:(void (^)(void))block; + +///------------------------------ +/// @name Accessing Configuration +///------------------------------ + +/** + The operation that the receiver is modeling the lifecycle of. + */ +@property (nonatomic, weak, readonly) NSOperation *operation; + +/** + The dispatch queue within which the state machine executes. + */ +@property (nonatomic, assign, readonly) dispatch_queue_t dispatchQueue; + +///------------------------------------------ +/// @name Performing Blocks that Mutate State +///------------------------------------------ + +/** + Executes a block after acquiring an exclusive lock on the receiver. This enables the block to safely mutate the state of the operation. The execution context of the block is not changed -- it is always executed within the caller's thread context. If you wish to guarantee execution on the dispatch queue backing the state machine then you must dispatch onto the queue before submitting your block for execution. + + @param block The block to execute after acquiring an exclusive lock on the receiver. + */ +- (void)performBlockWithLock:(void (^)())block; + +@end + +/** + Raised when an unexpected error has occurred. + */ +extern NSString *const RKOperationFailureException; diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKOperationStateMachine.m b/Unit-2-Journal/Pods/RestKit/Code/Support/RKOperationStateMachine.m new file mode 100644 index 0000000..33bb1ab --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKOperationStateMachine.m @@ -0,0 +1,209 @@ +// +// RKOperationStateMachine.m +// RestKit +// +// Created by Blake Watters on 4/11/13. +// Copyright (c) 2013 RestKit. All rights reserved. +// +// 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 "TransitionKit.h" +#import "RKOperationStateMachine.h" + +NSString *const RKOperationFailureException = @"RKOperationFailureException"; + +static NSString *const RKOperationStateReady = @"Ready"; +static NSString *const RKOperationStateExecuting = @"Executing"; +static NSString *const RKOperationStateFinished = @"Finished"; + +static NSString *const RKOperationEventStart = @"start"; +static NSString *const RKOperationEventFinish = @"finish"; + +static NSString *const RKOperationLockName = @"org.restkit.operation.lock"; + +@interface RKOperationStateMachine () +@property (nonatomic, strong) TKStateMachine *stateMachine; +@property (nonatomic, weak, readwrite) NSOperation *operation; +@property (nonatomic, assign, readwrite) dispatch_queue_t dispatchQueue; +@property (nonatomic, assign, getter = isCancelled) BOOL cancelled; +@property (nonatomic, copy) void (^cancellationBlock)(void); +@property (nonatomic, strong) NSRecursiveLock *lock; +@end + +@implementation RKOperationStateMachine + +- (instancetype)initWithOperation:(NSOperation *)operation dispatchQueue:(dispatch_queue_t)dispatchQueue +{ + if (! operation) [NSException raise:NSInvalidArgumentException format:@"Invalid argument: `operation` cannot be nil."]; + if (! dispatchQueue) [NSException raise:NSInvalidArgumentException format:@"Invalid argument: `dispatchQueue` cannot be nil."]; + self = [super init]; + if (self) { + self.operation = operation; + self.dispatchQueue = dispatchQueue; + self.stateMachine = [TKStateMachine new]; + self.lock = [NSRecursiveLock new]; + [self.lock setName:RKOperationLockName]; + + // NOTE: State transitions are guarded by a lock via start/finish/cancel action methods + TKState *readyState = [TKState stateWithName:RKOperationStateReady]; + __weak __typeof(self)weakSelf = self; + [readyState setWillExitStateBlock:^(TKState *state, TKTransition *transition) { + [weakSelf.operation willChangeValueForKey:@"isReady"]; + }]; + [readyState setDidExitStateBlock:^(TKState *state, TKTransition *transition) { + [weakSelf.operation didChangeValueForKey:@"isReady"]; + }]; + + TKState *executingState = [TKState stateWithName:RKOperationStateExecuting]; + [executingState setWillEnterStateBlock:^(TKState *state, TKTransition *transition) { + [weakSelf.operation willChangeValueForKey:@"isExecuting"]; + }]; + // NOTE: isExecuting KVO for `setDidEnterStateBlock:` configured below in `setExecutionBlock` + [executingState setWillExitStateBlock:^(TKState *state, TKTransition *transition) { + [weakSelf.operation willChangeValueForKey:@"isExecuting"]; + }]; + [executingState setDidExitStateBlock:^(TKState *state, TKTransition *transition) { + [weakSelf.operation didChangeValueForKey:@"isExecuting"]; + }]; + [executingState setDidEnterStateBlock:^(TKState *state, TKTransition *transition) { + [NSException raise:NSInternalInconsistencyException format:@"You must configure an execution block via `setExecutionBlock:`."]; + }]; + + TKState *finishedState = [TKState stateWithName:RKOperationStateFinished]; + [finishedState setWillEnterStateBlock:^(TKState *state, TKTransition *transition) { + [weakSelf.operation willChangeValueForKey:@"isFinished"]; + }]; + [finishedState setDidEnterStateBlock:^(TKState *state, TKTransition *transition) { + [weakSelf.operation didChangeValueForKey:@"isFinished"]; + }]; + [finishedState setWillExitStateBlock:^(TKState *state, TKTransition *transition) { + [weakSelf.operation willChangeValueForKey:@"isFinished"]; + }]; + [finishedState setDidExitStateBlock:^(TKState *state, TKTransition *transition) { + [weakSelf.operation didChangeValueForKey:@"isFinished"]; + }]; + + [self.stateMachine addStates:@[ readyState, executingState, finishedState ]]; + + TKEvent *startEvent = [TKEvent eventWithName:RKOperationEventStart transitioningFromStates:@[ readyState ] toState:executingState]; + TKEvent *finishEvent = [TKEvent eventWithName:RKOperationEventFinish transitioningFromStates:@[ executingState ] toState:finishedState]; + [self.stateMachine addEvents:@[ startEvent, finishEvent ]]; + + self.stateMachine.initialState = readyState; + [self.stateMachine activate]; + } + return self; +} + +- (instancetype)init +{ + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"%@ Failed to call designated initializer. Invoke initWithOperation: instead.", + NSStringFromClass([self class])] + userInfo:nil]; +} + +- (BOOL)isReady +{ + return [self.stateMachine isInState:RKOperationStateReady]; +} + +- (BOOL)isExecuting +{ + return [self.stateMachine isInState:RKOperationStateExecuting]; +} + +- (BOOL)isFinished +{ + return [self.stateMachine isInState:RKOperationStateFinished]; +} + +- (void)start +{ + if (! self.dispatchQueue) [NSException raise:NSInternalInconsistencyException format:@"You must configure an `operationQueue`."]; + [self performBlockWithLock:^{ + NSError *error = nil; + BOOL success = [self.stateMachine fireEvent:RKOperationEventStart userInfo:nil error:&error]; + if (! success) [NSException raise:RKOperationFailureException format:@"The operation unexpectedly failed to start due to an error: %@", error]; + }]; +} + +- (void)finish +{ + // Ensure that we are finished from the operation queue + dispatch_async(self.dispatchQueue, ^{ + [self performBlockWithLock:^{ + NSError *error = nil; + BOOL success = [self.stateMachine fireEvent:RKOperationEventFinish userInfo:nil error:&error]; + if (! success) [NSException raise:RKOperationFailureException format:@"The operation unexpectedly failed to finish due to an error: %@", error]; + }]; + }); +} + +- (void)cancel +{ + if ([self isCancelled] || [self isFinished]) return; + [self performBlockWithLock:^{ + self.cancelled = YES; + }]; + + if (self.cancellationBlock) { + dispatch_async(self.dispatchQueue, ^{ + [self performBlockWithLock:self.cancellationBlock]; + }); + } +} + +- (void)setExecutionBlock:(void (^)(void))block +{ + __weak __typeof(self)weakSelf = self; + TKState *executingState = [self.stateMachine stateNamed:RKOperationStateExecuting]; + [executingState setDidEnterStateBlock:^(TKState *state, TKTransition *transition) { + [weakSelf.operation didChangeValueForKey:@"isExecuting"]; + dispatch_async(weakSelf.dispatchQueue, ^{ + block(); + }); + }]; +} + +- (void)setFinalizationBlock:(void (^)(void))block +{ + __weak __typeof(self)weakSelf = self; + TKState *finishedState = [self.stateMachine stateNamed:RKOperationStateFinished]; + [finishedState setWillEnterStateBlock:^(TKState *state, TKTransition *transition) { + [weakSelf performBlockWithLock:^{ + // Must emit KVO as we are replacing the block configured in `initWithOperation:queue:` + [weakSelf.operation willChangeValueForKey:@"isFinished"]; + block(); + }]; + }]; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p (for %@:%p), state: %@, cancelled: %@>", + [self class], self, + [self.operation class], self.operation, + self.stateMachine.currentState.name, + ([self isCancelled] ? @"YES" : @"NO")]; +} + +- (void)performBlockWithLock:(void (^)())block +{ + [self.lock lock]; + block(); + [self.lock unlock]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKPathUtilities.h b/Unit-2-Journal/Pods/RestKit/Code/Support/RKPathUtilities.h new file mode 100644 index 0000000..c7155d7 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKPathUtilities.h @@ -0,0 +1,62 @@ +// +// RKPathUtilities.h +// RestKit +// +// Created by Blake Watters on 12/9/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// + +#import <Foundation/Foundation.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Returns the path to the Application Data directory for the executing application. On iOS, this is a sandboxed path specific for the executing application. On OS X, this is an application specific path under `NSApplicationSupportDirectory` (i.e. ~/Application Support). + + @return The full path to the application data directory. + */ +NSString *RKApplicationDataDirectory(void); + +/** + Returns a path to the root caches directory used by RestKit for storage. On iOS, this is a sanboxed path specific for the executing application. On OS X, this is an application specific path under NSCachesDirectory (i.e. ~/Library/Caches). + + @return The full path to the Caches directory. + */ +NSString *RKCachesDirectory(void); + +/** + Ensures that a directory exists at a given path by checking for the existence of the directory and creating it if it does not exist. + + @param path The path to ensure a directory exists at. + @param error On input, a pointer to an error object. + @returns A Boolean value indicating if the directory exists. + */ +BOOL RKEnsureDirectoryExistsAtPath(NSString *path, NSError **error); + +/** + Returns a MIME Type for a given path by using the Core Services framework. + + For example, given a string with the path `@"/Users/blake/Documents/monkey.json"` `@"application/json"` would be returned as the MIME Type. + + @param path The path to return the MIME Type for. + @return The expected MIME Type of the resource identified by the path or nil if unknown. + */ +NSString *RKMIMETypeFromPathExtension(NSString *path); + +/** + Excludes the item at a given path from backup via iTunes and/or iCloud using the approaches detailed in "Apple Technical Q&A QA1719". + + Excluding a path from backup can be necessary in order to conform to the iCloud Data Storage Guidelines. Please refer to the following links for more details: + + 1. [iCloud Data Storage Guidelines](https://developer.apple.com/icloud/documentation/data-storage/) + 1. [Technical Q&A QA1719](http://developer.apple.com/library/ios/#qa/qa1719/_index.html) + + @param path The path to the item that is to be excluded from backup. + */ +void RKSetExcludeFromBackupAttributeForItemAtPath(NSString *path); + +#ifdef __cplusplus +} +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKPathUtilities.m b/Unit-2-Journal/Pods/RestKit/Code/Support/RKPathUtilities.m new file mode 100644 index 0000000..373657a --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKPathUtilities.m @@ -0,0 +1,153 @@ +// +// RKPathUtilities.m +// RestKit +// +// Created by Blake Watters on 12/9/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// + +#if TARGET_OS_IPHONE +#import <MobileCoreServices/UTType.h> +#import <UIKit/UIDevice.h> +#else +#import <CoreServices/CoreServices.h> +#endif +#import <Availability.h> +#import <sys/xattr.h> +#import "RKPathUtilities.h" +#import "RKLog.h" + +NSString *RKExecutableName(void); + +NSString *RKApplicationDataDirectory(void) +{ +#if TARGET_OS_IPHONE + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + return ([paths count] > 0) ? paths[0] : nil; +#else + NSFileManager *sharedFM = [NSFileManager defaultManager]; + + NSArray *possibleURLs = [sharedFM URLsForDirectory:NSApplicationSupportDirectory + inDomains:NSUserDomainMask]; + NSURL *appSupportDir = nil; + NSURL *appDirectory = nil; + + if ([possibleURLs count] >= 1) { + appSupportDir = possibleURLs[0]; + } + + if (appSupportDir) { + appDirectory = [appSupportDir URLByAppendingPathComponent:RKExecutableName()]; + return [appDirectory path]; + } + + return nil; +#endif +} + +NSString *RKExecutableName(void) +{ + NSString *executableName = [[[NSBundle mainBundle] executablePath] lastPathComponent]; + if (nil == executableName) { + RKLogWarning(@"Unable to determine CFBundleExecutable: storing data under RestKit directory name."); + executableName = @"RestKit"; + } + + return executableName; +} + +NSString *RKCachesDirectory(void) +{ +#if TARGET_OS_IPHONE + return NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]; +#else + NSString *path = nil; + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); + if ([paths count]) { + path = [paths[0] stringByAppendingPathComponent:RKExecutableName()]; + } + + return path; +#endif +} + +BOOL RKEnsureDirectoryExistsAtPath(NSString *path, NSError **error) +{ + BOOL isDirectory; + if ([[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDirectory]) { + if (isDirectory) { + // Exists at a path and is a directory, we're good + if (error) *error = nil; + return YES; + } + } + + // Create the directory and any intermediates + NSError *errorReference = (error == nil) ? nil : *error; + if (! [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&errorReference]) { + RKLogError(@"Failed to create requested directory at path '%@': %@", path, errorReference); + return NO; + } + + return YES; +} + +static NSDictionary *RKDictionaryOfFileExtensionsToMIMETypes() +{ + return @{ @"json": @"application/json" }; +} + +NSString *RKMIMETypeFromPathExtension(NSString *path) +{ + NSString *pathExtension = [path pathExtension]; + CFStringRef uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)pathExtension, NULL); + if (uti != NULL) { + CFStringRef mime = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType); + CFRelease(uti); + if (mime != NULL) { + NSString *type = [NSString stringWithString:(__bridge NSString *)mime]; + CFRelease(mime); + return type; + } + } + + // Consult our internal dictionary of mappings if not found + return [RKDictionaryOfFileExtensionsToMIMETypes() valueForKey:pathExtension]; +} + +void RKSetExcludeFromBackupAttributeForItemAtPath(NSString *path) +{ + NSCParameterAssert(path); + NSCAssert([[NSFileManager defaultManager] fileExistsAtPath:path], @"Cannot set Exclude from Backup attribute for non-existant item at path: '%@'", path); + +#if __IPHONE_OS_VERSION_MIN_REQUIRED + NSError *error = nil; + NSURL *URL = [NSURL fileURLWithPath:path]; + + NSComparisonResult order = [[UIDevice currentDevice].systemVersion compare:@"5.1" options:NSNumericSearch]; + if (order == NSOrderedSame || order == NSOrderedDescending) { + // On iOS >= 5.1, we can use the resource value API's. Note that we probe the iOS version number directly because the `setResourceValue:forKey:` symbol is defined in iOS 4.0 and greater, but performs no operation when invoked until iOS 5.1 + BOOL success = [URL setResourceValue:@(YES) forKey:NSURLIsExcludedFromBackupKey error:&error]; + if (!success) { + RKLogError(@"Failed to exclude item at path '%@' from Backup: %@", path, error); + } + } else { + order = [[UIDevice currentDevice].systemVersion compare:@"5.0.1" options: NSNumericSearch]; + if (order == NSOrderedSame || order == NSOrderedDescending) { + // On iOS 5.0.1 we must use the extended attribute API's directly + const char* filePath = [[URL path] fileSystemRepresentation]; + const char* attrName = "com.apple.MobileBackup"; + u_int8_t attrValue = 1; + + int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0); + if (result != 0) { + RKLogError(@"Failed to exclude item at path '%@' from Backup. setxattr returned result code %d", path, result); + } + } else { + RKLogWarning(@"Unable to exclude item from backup: resource value and extended attribute APIs are only available on iOS 5.0.1 and up"); + } + } +#else + RKLogDebug(@"Not built for iOS -- excluding path from Backup is not possible."); +#endif +} diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKSerialization.h b/Unit-2-Journal/Pods/RestKit/Code/Support/RKSerialization.h new file mode 100644 index 0000000..073c73d --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKSerialization.h @@ -0,0 +1,54 @@ +// +// RKSerialization.h +// RestKit +// +// Created by Blake Watters on 10/1/10. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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. +// + +/** + The `RKSerialization` protocol declares two methods that a class must implement so that it can provide support for serializing objects to and deserializing objects from UTF-8 encoded data representations of a serialization format such as JSON or XML. Serialization implementations typically handle data in a given MIME Type (i.e. `application/json`) and may be registered with the `RKMIMETypeSerialization` class. + + @see `RKMIMETypeSerialization` + */ +@protocol RKSerialization <NSObject> + +///------------------------------ +/// @name Deserializing an Object +///------------------------------ + +/** + Deserializes and returns the given data in the format supported by the receiver (i.e. JSON, XML, etc) as a Foundation object representation. + + @param data The UTF-8 encoded data representation of the object to be deserialized. + @param error A pointer to an `NSError` object. + @return A Foundation object from the serialized data in data, or nil if an error occurs. + */ ++ (id)objectFromData:(NSData *)data error:(NSError **)error; + +///---------------------------- +/// @name Serializing an Object +///---------------------------- + +/** + Serializes and returns a UTF-8 encoded data representation of the given Foundation object in the format supported by the receiver (i.e. JSON, XML, etc). + + @param object The object to be serialized. + @param error A pointer to an NSError object. + @return A data representation of the given object in UTF-8 encoding, or nil if an error occurred. + */ ++ (NSData *)dataFromObject:(id)object error:(NSError **)error; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKStringTokenizer.h b/Unit-2-Journal/Pods/RestKit/Code/Support/RKStringTokenizer.h new file mode 100644 index 0000000..721671d --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKStringTokenizer.h @@ -0,0 +1,51 @@ +// +// RKStringTokenizer.h +// RestKit +// +// Created by Blake Watters on 7/30/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +/** + The `RKStringTokenizer` class provides an interface for tokenizing input text into a set of searchable words. Diacritics are removed and the input text is tokenized case insensitively. A set of stop words can be optionally trimmed from the result token set. + */ +@interface RKStringTokenizer : NSObject + +///------------------------------- +/// @name Configuring Tokenization +///------------------------------- + +/** + The set of stop words that are to be removed from the token set. + + Defaults to nil. + */ +@property (nonatomic, strong) NSSet *stopWords; + +///---------------------------------- +/// @name Tokenizing a String of Text +///---------------------------------- + +/** + Tokenizes the given string by folding it case and diacritic insensitively and then splitting it apart using the the word unit delimiters for the current locale. If a set of stop words has been provided, the resulting token set will have the stop words subtracted. + + @param string A string of text you wish to tokenize. + @returns A set of searchable text tokens extracted from the given string. + */ +- (NSSet *)tokenize:(NSString *)string; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKStringTokenizer.m b/Unit-2-Journal/Pods/RestKit/Code/Support/RKStringTokenizer.m new file mode 100644 index 0000000..48e3644 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKStringTokenizer.m @@ -0,0 +1,42 @@ +// +// RKStringTokenizer.m +// RestKit +// +// Created by Blake Watters on 7/30/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// + +#import "RKStringTokenizer.h" + +@implementation RKStringTokenizer + +- (NSSet *)tokenize:(NSString *)string +{ + NSMutableSet *tokens = [NSMutableSet set]; + + CFLocaleRef locale = CFLocaleCopyCurrent(); + + // Remove diacratics and lowercase our input text + NSString *tokenizeText = string = [string stringByFoldingWithOptions:kCFCompareCaseInsensitive|kCFCompareDiacriticInsensitive locale:[NSLocale systemLocale]]; + CFStringTokenizerRef tokenizer = CFStringTokenizerCreate(kCFAllocatorDefault, (__bridge CFStringRef)tokenizeText, CFRangeMake(0, CFStringGetLength((__bridge CFStringRef)tokenizeText)), kCFStringTokenizerUnitWord, locale); + CFStringTokenizerTokenType tokenType = kCFStringTokenizerTokenNone; + + while (kCFStringTokenizerTokenNone != (tokenType = CFStringTokenizerAdvanceToNextToken(tokenizer))) { + CFRange tokenRange = CFStringTokenizerGetCurrentTokenRange(tokenizer); + + NSRange range = NSMakeRange(tokenRange.location, tokenRange.length); + NSString *token = [string substringWithRange:range]; + + [tokens addObject:token]; + } + + CFRelease(tokenizer); + CFRelease(locale); + + // Remove any stop words + if (self.stopWords) [tokens minusSet:self.stopWords]; + + return tokens; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKURLEncodedSerialization.h b/Unit-2-Journal/Pods/RestKit/Code/Support/RKURLEncodedSerialization.h new file mode 100644 index 0000000..3c109d2 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKURLEncodedSerialization.h @@ -0,0 +1,74 @@ +// +// RKURLEncodedSerialization.h +// RestKit +// +// Created by Blake Watters on 9/4/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKSerialization.h" + +/** + The `RKURLEncodedSerialization` class conforms to the `RKSerialization` protocol and provides support for the serialization and deserialization of URL encoded data. URL encoding is used to replace certain characters in a string with equivalent percent escape sequences. The list of characters replaced by the implementation are designed as illegal URL characters by RFC 3986. URL encoded data is used for the submission of HTML forms with the MIME Type `application/x-www-form-urlencoded`. + + @see http://www.w3.org/TR/html401/interact/forms.html + @see http://www.ietf.org/rfc/rfc3986.txt + */ +@interface RKURLEncodedSerialization : NSObject <RKSerialization> + +@end + +/** + Creates and returns a new `NSDictionary` object from the given URL-encoded string, using the specified encoding. + + The dictionary is constructed by splitting the string into components using the `&` character as the delimiter. The results array of strings is then split again using the `=` character as the delimiter. Each resulting key and value delimited by the `=` character is then URL decoded and added a resulting dictionary. The process is across the entire string. Any extraneous `=` characters not delimiting a key and value are ignored. The corresponding values for any keys that appear multiple times within the string be coalesced into an `NSArray` of values. + + @param URLEncodedString A URL-encoded string that is to be parsed into an `NSDictionary`. + @param encoding The encoding to use when URL-decoding the components of the given string. If you are uncertain of the correct encoding, you should use UTF-8 (NSUTF8StringEncoding), which is the encoding designated by RFC 3986 as the correct encoding for use in URLs. + @return An `NSDictionary` object containing the keys and values deserialized from the URL-encoded string. + */ +NSDictionary *RKDictionaryFromURLEncodedStringWithEncoding(NSString *URLEncodedString, NSStringEncoding encoding); + +/** + Returns a URL-encoded `NSString` object containing the entries in the given `NSDictionary` object. + + The dictionary is created by collecting each key-value pair, URL-encoding a string representation of the key-value pair, and then joining the components with "&". + + @param dictionary The dictionary from to construct the URL-encoded string. + @param encoding The encoding to use in constructing the URL-encoded string. If you are uncertain of the correct encoding, you should use UTF-8 (NSUTF8StringEncoding), which is the encoding designated by RFC 3986 as the correct encoding for use in URLs. + @return A new `NSString` object in the given encoding containing a URL-encoded serialization of the entries in the given dictionary. + @see `AFQueryStringFromParametersWithEncoding` + */ +NSString *RKURLEncodedStringFromDictionaryWithEncoding(NSDictionary *dictionary, NSStringEncoding encoding); + +/** + Returns a copy of the given string with the characters that are unsafe for use in a URL query string replaced with the equivalent percent escape sequences. + + @param string The string to be escaped. + @param encoding The encoding to use in constructing the URL-encoded string. If you are uncertain of the correct encoding, you should use UTF-8 (NSUTF8StringEncoding), which is the encoding designated by RFC 3986 as the correct encoding for use in URLs. + @return A new `NSString` object in the given encoding with the query string unsafe characters replaced with percent escape sequences. + */ +NSString *RKPercentEscapedQueryStringFromStringWithEncoding(NSString *string, NSStringEncoding encoding); + +/** + Creates and returns a new `NSDictionary` object containing the keys and values in the query string of the given string. + + The given string is searched for a `?` character denoting the beginning of the query parameters. If none is found, the entire string is treated as a URL encoded query string. The parameters are extracted from the query string by invoking `RKDictionaryFromURLEncodedStringWithEncoding()` with the query string. + + @param string A string containing a query string that is to be tokenized into a dictionary of parameters. + @param encoding The encoding to use in constructing the URL-encoded string. If you are uncertain of the correct encoding, you should use UTF-8 (NSUTF8StringEncoding), which is the encoding designated by RFC 3986 as the correct encoding for use in URLs. + @return An `NSDictionary` object containing the keys and values contained in the query string of the given string. + */ +NSDictionary *RKQueryParametersFromStringWithEncoding(NSString *string, NSStringEncoding encoding); diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/RKURLEncodedSerialization.m b/Unit-2-Journal/Pods/RestKit/Code/Support/RKURLEncodedSerialization.m new file mode 100644 index 0000000..09f7ae7 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/RKURLEncodedSerialization.m @@ -0,0 +1,190 @@ +// +// RKURLEncodedSerialization.m +// RestKit +// +// Created by Blake Watters on 9/4/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKURLEncodedSerialization.h" + +#pragma mark - AFNetworking + +// Taken from https://github.com/AFNetworking/AFNetworking/blob/49f2f8c9a907977ec1b3afb182404ae0a6bce883/AFNetworking/AFURLRequestSerialization.m + +static NSString * const RKAFCharactersToBeEscapedInQueryString = @":/?&=;+!@#$()',*"; + +static NSString * RKAFPercentEscapedQueryStringKeyFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { + static NSString * const RKAFCharactersToLeaveUnescapedInQueryStringPairKey = @"[]."; + + return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, (__bridge CFStringRef)RKAFCharactersToLeaveUnescapedInQueryStringPairKey, (__bridge CFStringRef)RKAFCharactersToBeEscapedInQueryString, CFStringConvertNSStringEncodingToEncoding(encoding)); +} + +static NSString * AFPercentEscapedQueryStringValueFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { + return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, NULL, (__bridge CFStringRef)RKAFCharactersToBeEscapedInQueryString, CFStringConvertNSStringEncodingToEncoding(encoding)); +} + +#pragma mark - + +@interface RKAFQueryStringPair : NSObject +@property (readwrite, nonatomic, strong) id field; +@property (readwrite, nonatomic, strong) id value; + +- (instancetype)initWithField:(id)field value:(id)value NS_DESIGNATED_INITIALIZER; + +- (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding; +@end + +@implementation RKAFQueryStringPair + +- (instancetype)initWithField:(id)field value:(id)value { + self = [super init]; + if (!self) { + return nil; + } + + self.field = field; + self.value = value; + + return self; +} + +- (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding { + if (!self.value || [self.value isEqual:[NSNull null]]) { + return RKAFPercentEscapedQueryStringKeyFromStringWithEncoding([self.field description], stringEncoding); + } else { + return [NSString stringWithFormat:@"%@=%@", RKAFPercentEscapedQueryStringKeyFromStringWithEncoding([self.field description], stringEncoding), AFPercentEscapedQueryStringValueFromStringWithEncoding([self.value description], stringEncoding)]; + } +} + +@end + +#pragma mark - + +extern NSArray * RKAFQueryStringPairsFromDictionary(NSDictionary *dictionary); +extern NSArray * RKAFQueryStringPairsFromKeyAndValue(NSString *key, id value); + +static NSString * RKAFQueryStringFromParametersWithEncoding(NSDictionary *parameters, NSStringEncoding stringEncoding) { + NSMutableArray *mutablePairs = [NSMutableArray array]; + for (RKAFQueryStringPair *pair in RKAFQueryStringPairsFromDictionary(parameters)) { + [mutablePairs addObject:[pair URLEncodedStringValueWithEncoding:stringEncoding]]; + } + + return [mutablePairs componentsJoinedByString:@"&"]; +} + +NSArray * RKAFQueryStringPairsFromDictionary(NSDictionary *dictionary) { + return RKAFQueryStringPairsFromKeyAndValue(nil, dictionary); +} + +NSArray * RKAFQueryStringPairsFromKeyAndValue(NSString *key, id value) { + NSMutableArray *mutableQueryStringComponents = [NSMutableArray array]; + + NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES selector:@selector(compare:)]; + + if ([value isKindOfClass:[NSDictionary class]]) { + NSDictionary *dictionary = value; + // Sort dictionary keys to ensure consistent ordering in query string, which is important when deserializing potentially ambiguous sequences, such as an array of dictionaries + for (id nestedKey in [dictionary.allKeys sortedArrayUsingDescriptors:@[ sortDescriptor ]]) { + id nestedValue = dictionary[nestedKey]; + if (nestedValue) { + [mutableQueryStringComponents addObjectsFromArray:RKAFQueryStringPairsFromKeyAndValue((key ? [NSString stringWithFormat:@"%@[%@]", key, nestedKey] : nestedKey), nestedValue)]; + } + } + } else if ([value isKindOfClass:[NSArray class]]) { + NSArray *array = value; + for (id nestedValue in array) { + [mutableQueryStringComponents addObjectsFromArray:RKAFQueryStringPairsFromKeyAndValue([NSString stringWithFormat:@"%@[]", key], nestedValue)]; + } + } else if ([value isKindOfClass:[NSSet class]]) { + NSSet *set = value; + for (id obj in [set sortedArrayUsingDescriptors:@[ sortDescriptor ]]) { + [mutableQueryStringComponents addObjectsFromArray:RKAFQueryStringPairsFromKeyAndValue(key, obj)]; + } + } else { + [mutableQueryStringComponents addObject:[[RKAFQueryStringPair alloc] initWithField:key value:value]]; + } + + return mutableQueryStringComponents; +} + +#pragma mark - RestKit + +@implementation RKURLEncodedSerialization + ++ (id)objectFromData:(NSData *)data error:(NSError **)error +{ + NSString *string = [NSString stringWithUTF8String:[data bytes]]; + return RKDictionaryFromURLEncodedStringWithEncoding(string, NSUTF8StringEncoding); +} + ++ (NSData *)dataFromObject:(id)object error:(NSError **)error +{ + NSString *string = RKURLEncodedStringFromDictionaryWithEncoding(object, NSUTF8StringEncoding); + return [string dataUsingEncoding:NSUTF8StringEncoding]; +} + +@end + +NSDictionary *RKDictionaryFromURLEncodedStringWithEncoding(NSString *URLEncodedString, NSStringEncoding encoding) +{ + NSMutableDictionary *queryComponents = [NSMutableDictionary dictionary]; + for (NSString *keyValuePairString in [URLEncodedString componentsSeparatedByString:@"&"]) { + NSArray *keyValuePairArray = [keyValuePairString componentsSeparatedByString:@"="]; + if ([keyValuePairArray count] < 2) continue; // Verify that there is at least one key, and at least one value. Ignore extra = signs + NSString *key = [keyValuePairArray[0] stringByReplacingPercentEscapesUsingEncoding:encoding]; + NSString *value = [keyValuePairArray[1] stringByReplacingPercentEscapesUsingEncoding:encoding]; + + // URL spec says that multiple values are allowed per key + id results = queryComponents[key]; + if (results) { + if ([results isKindOfClass:[NSMutableArray class]]) { + [(NSMutableArray *)results addObject:value]; + } else { + // On second occurrence of the key, convert into an array + NSMutableArray *values = [NSMutableArray arrayWithObjects:results, value, nil]; + queryComponents[key] = values; + } + } else { + queryComponents[key] = value; + } + } + return queryComponents; +} + +NSString *RKURLEncodedStringFromDictionaryWithEncoding(NSDictionary *dictionary, NSStringEncoding encoding) +{ + return RKAFQueryStringFromParametersWithEncoding(dictionary, encoding); +} + +// This replicates `AFPercentEscapedQueryStringPairMemberFromStringWithEncoding`. Should send PR exposing non-static version +NSString *RKPercentEscapedQueryStringFromStringWithEncoding(NSString *string, NSStringEncoding encoding) +{ + // Escape characters that are legal in URIs, but have unintentional semantic significance when used in a query string parameter + static NSString * const kAFLegalCharactersToBeEscaped = @":/.?&=;+!@$()~"; + + return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, NULL, (__bridge CFStringRef)kAFLegalCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding(encoding)); +} + +NSDictionary *RKQueryParametersFromStringWithEncoding(NSString *string, NSStringEncoding encoding) +{ + NSRange chopRange = [string rangeOfString:@"?"]; + if (chopRange.length > 0) { + chopRange.location += 1; // we want inclusive chopping up *through *"?" + if (chopRange.location < [string length]) string = [string substringFromIndex:chopRange.location]; + } + return RKDictionaryFromURLEncodedStringWithEncoding(string, encoding); +} + diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/lcl_config_components_RK.h b/Unit-2-Journal/Pods/RestKit/Code/Support/lcl_config_components_RK.h new file mode 100644 index 0000000..3638292 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/lcl_config_components_RK.h @@ -0,0 +1,62 @@ +// +// lcl_config_components_RK.h +// RestKit +// +// Created by Blake Watters on 6/8/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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. +// + +// +// The lcl_config_components_RK.h file is used to define the application's log +// components. +// +// Use the code +// +// _RKlcl_component(<identifier>, <header>, <name>) +// +// for defining a log component, where +// +// - <identifier> is the unique name of a log component which is used in calls +// to RKlcl_log etc. A symbol 'RKlcl_c<identifier>' is automatically created for +// each log component. +// +// - <header> is a C string in UTF-8 which should be used by a logging back-end +// when writing a log message for the log component. The header is a technical +// key for identifying a log component's messages. It is recommended to use +// a 'Reverse ICANN' naming scheme when the header contains grouping +// information, e.g. 'example.main.component1'. +// +// - <name> is a C string in UTF-8 which contains the name of the log component +// and its grouping information in a non-technical, human-readable way +// which could be used by a user interface. Groups should be separated by the +// path separator '/', e.g. 'Example/Main/Component 1'. +// + + +// +// RestKit Logging Components +// + +_RKlcl_component(App, "app", "App") +_RKlcl_component(RestKit, "restkit", "RestKit") +_RKlcl_component(RestKitCoreData, "restkit.core_data", "RestKit/CoreData") +_RKlcl_component(RestKitCoreDataCache, "restkit.core_data.cache", "RestKit/CoreData/Cache") +_RKlcl_component(RestKitNetwork, "restkit.network", "RestKit/Network") +_RKlcl_component(RestKitNetworkCoreData, "restkit.network.core_data", "RestKit/Network/CoreData") +_RKlcl_component(RestKitObjectMapping, "restkit.object_mapping", "RestKit/ObjectMapping") +_RKlcl_component(RestKitSearch, "restkit.search", "RestKit/Search") +_RKlcl_component(RestKitSupport, "restkit.support", "RestKit/Support") +_RKlcl_component(RestKitTesting, "restkit.testing", "RestKit/Testing") +_RKlcl_component(RestKitUI, "restkit.ui", "RestKit/UI") diff --git a/Unit-2-Journal/Pods/RestKit/Code/Support/lcl_config_extensions_RK.h b/Unit-2-Journal/Pods/RestKit/Code/Support/lcl_config_extensions_RK.h new file mode 100644 index 0000000..6229343 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/lcl_config_extensions_RK.h @@ -0,0 +1,20 @@ +// +// lcl_config_extensions_RK.h +// RestKit +// +// Created by Blake Watters on 6/8/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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/Unit-2-Journal/Pods/RestKit/Code/Support/lcl_config_logger_RK.h b/Unit-2-Journal/Pods/RestKit/Code/Support/lcl_config_logger_RK.h new file mode 100644 index 0000000..64e2ffa --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Support/lcl_config_logger_RK.h @@ -0,0 +1,53 @@ +// +// lcl_config_logger_RK.h +// RestKit +// +// Created by Blake Watters on 6/8/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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. +// + +// +// Integration with LibComponentLogging Core. +// + +// ARC/non-ARC autorelease pool +#define _RKlcl_logger_autoreleasepool_arc 0 +#if defined(__has_feature) +# if __has_feature(objc_arc) +# undef _RKlcl_logger_autoreleasepool_arc +# define _RKlcl_logger_autoreleasepool_arc 1 +# endif +#endif + +#if _RKlcl_logger_autoreleasepool_arc + #define _RKlcl_logger_autoreleasepool_begin @autoreleasepool { + #define _RKlcl_logger_autoreleasepool_end } +#else + #define _RKlcl_logger_autoreleasepool_begin NSAutoreleasePool *_RKlcl_logpool = [[NSAutoreleasePool alloc] init]; + #define _RKlcl_logger_autoreleasepool_end [_RKlcl_logpool release]; +#endif + + +#define _RKlcl_logger(_component, _level, _format, ...) { \ + _RKlcl_logger_autoreleasepool_begin \ + [RKGetLoggingClass() logWithComponent:_component \ + level:_level \ + path:__FILE__ \ + line:__LINE__ \ + function:__PRETTY_FUNCTION__ \ + format:_format, ## __VA_ARGS__]; \ + _RKlcl_logger_autoreleasepool_end \ +} + diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing.h b/Unit-2-Journal/Pods/RestKit/Code/Testing.h new file mode 100644 index 0000000..a76696a --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing.h @@ -0,0 +1,31 @@ +// +// Testing.h +// RestKit +// +// Created by Blake Watters on 2/1/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKTestFixture.h" +#import "RKTestNotificationObserver.h" +#import "RKTestFactory.h" +#import "RKTestHelpers.h" +#import "RKMappingTest.h" + +#ifdef _COREDATADEFINES_H +#import "RKConnectionTestExpectation.h" +#endif + diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKBenchmark.h b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKBenchmark.h new file mode 100644 index 0000000..ba40ded --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKBenchmark.h @@ -0,0 +1,111 @@ +// +// RKBenchmark.h +// RestKit +// +// Derived from Benchmark class: https://gist.github.com/1479490 +// Created by Sijawusz Pur Rahnama on 03/02/09. +// Copyleft 2009. Some rights reserved. +// + +#import <Foundation/Foundation.h> + +/** + The `RKBenchmark` classes provide a simple, lightweight interface for quickly benchmarking the performance of units of code. Benchmark objects can be used procedurally, by manually starting & stopping the benchmark, or using a block interface to measure the execution time of the block. + */ +@interface RKBenchmark : NSObject + +///--------------------------------- +/// @name Accessing Benchmark Values +///--------------------------------- + +/** + A name for the benchmark. Can be nil. + */ +@property (nonatomic, strong) NSString *name; + +/** + The start time of the benchmark as an absolute time value. + */ +@property (nonatomic, assign, readonly) CFAbsoluteTime startTime; + +/** + The end time of the benchmark as an absolute time value. + */ +@property (nonatomic, assign, readonly) CFAbsoluteTime endTime; + +/** + The elapsed time of the benchmark as determined by subtracting the end time from the start time. Returns zero until the benchmark has been stopped. + */ +@property (nonatomic, assign, readonly) CFTimeInterval elapsedTime; + +///------------------------------------ +/// @name Quickly Performing Benchmarks +///------------------------------------ + +/** + */ ++ (id)report:(NSString *)info executionBlock:(void (^)(void))block; + +/** + Performs a benchmark and returns a time interval measurement of the total time elapsed during the execution of the blocl. + + @param block A block to execute and measure the elapsed time during execution. + @return A time interval equal to the total time elapsed during execution. + */ ++ (CFTimeInterval)measureWithExecutionBlock:(void (^)(void))block; + +///--------------------------------- +/// @name Creating Benchmark Objects +///--------------------------------- + +/** + Retrieves or creates a benchmark object instance with a given name. + + @param name A name for the benchmark. + @return A new or existing benchmark object with the given name. + */ ++ (RKBenchmark *)instanceWithName:(NSString *)name; + +/** + Creates and returns a benchmark object with a name. + + @param name A name for the benchmark. + @return A new benchmark object with the given name. + */ ++ (instancetype)benchmarkWithName:(NSString *)name; + +/** + Initializes a new benchmark object with a name. + + @param name The name to initialize the receiver with. + @return The receiver, initialized with the given name. + */ +- (instancetype)initWithName:(NSString *)name; + +///---------------------------- +/// @name Performing Benchmarks +///---------------------------- + +/** + Runs a benchmark by starting the receiver, executing the block, and then stopping the benchmark object. + + @param executionBlock A block to execute as the body of the benchmark. + */ +- (void)run:(void (^)(void))executionBlock; + +/** + Starts the benchmark by recording the start time. + */ +- (void)start; + +/** + Stops the benchmark by recording the stop time. + */ +- (void)stop; + +/** + Logs the current benchmark status. If the receiver has been stopped, the elapsed time of the benchmark is logged. If the benchmark is still running, the total time since the benchmark was started is logged. + */ +- (void)log; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKBenchmark.m b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKBenchmark.m new file mode 100644 index 0000000..844e06c --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKBenchmark.m @@ -0,0 +1,129 @@ +// +// RKBenchmark.h +// RestKit +// +// Derived from Benchmark class: https://gist.github.com/1479490 +// Created by Sijawusz Pur Rahnama on 03/02/09. +// Copyleft 2009. Some rights reserved. +// + +#import "RKBenchmark.h" + +@interface RKBenchmark () +@property (nonatomic, assign, readwrite) CFAbsoluteTime startTime; +@property (nonatomic, assign, readwrite) CFAbsoluteTime endTime; +@property (nonatomic, assign, readwrite) CFTimeInterval elapsedTime; +@property (nonatomic, assign, getter = isStopped) BOOL stopped; +@end + +@implementation RKBenchmark + +static NSMutableDictionary *__sharedBenchmarks = nil; + ++ (NSMutableDictionary *)sharedBenchmarks +{ + if (!__sharedBenchmarks) { + __sharedBenchmarks = [[NSMutableDictionary alloc] init]; + } + return __sharedBenchmarks; +} + ++ (id)instanceWithName:(NSString *)name +{ + @synchronized (self) { + // get the benchmark or create it on-the-fly + id benchmark = [self sharedBenchmarks][name]; + if (!benchmark) { + benchmark = [self benchmarkWithName:name]; + [self sharedBenchmarks][name] = benchmark; + } + return benchmark; + } + return nil; +} + +@synthesize name = _name; +@synthesize startTime = _startTime; +@synthesize endTime = _endTime; +@synthesize elapsedTime = _elapsedTime; +@synthesize stopped = _stopped; + +# pragma mark - +# pragma mark Quick access class methods + ++ (id)report:(NSString *)info executionBlock:(void (^)(void))block +{ + RKBenchmark *benchmark = [self instanceWithName:info]; + [benchmark run:block]; + [benchmark log]; + return benchmark; +} + ++ (CFTimeInterval)measureWithExecutionBlock:(void (^)(void))block +{ + RKBenchmark *benchmark = [self new]; + [benchmark run:block]; + return benchmark.elapsedTime; +} + +# pragma mark - +# pragma mark Initializers + ++ (instancetype)benchmarkWithName:(NSString *)name +{ + return [[self alloc] initWithName:name]; +} + +- (instancetype)initWithName:(NSString *)name +{ + if (self = [self init]) { + self.name = name; + } + return self; +} + +# pragma mark - +# pragma mark Benchmark methods + +- (void)run:(void (^)(void))executionBlock +{ + [self start]; + executionBlock(); + [self stop]; +} + +- (void)start +{ + self.startTime = CFAbsoluteTimeGetCurrent(); +} + +- (void)stop +{ + self.endTime = CFAbsoluteTimeGetCurrent(); + self.stopped = YES; + + // Calculate elapsed time + CFDateRef startDate = CFDateCreate(NULL, self.startTime); + CFDateRef endDate = CFDateCreate(NULL, self.endTime); + self.elapsedTime = CFDateGetTimeIntervalSinceDate(endDate, startDate); + CFRelease(startDate); + CFRelease(endDate); +} + +- (void)log +{ + CFTimeInterval timeElapsed; + if (self.isStopped) { + timeElapsed = self.elapsedTime; + } else { + CFDateRef startDate = CFDateCreate(NULL, self.startTime); + timeElapsed = CFDateGetTimeIntervalSinceDate(startDate, (CFDateRef)[NSDate date]); + CFRelease(startDate); + } + + // log elapsed time + if (_name) NSLog(@"Benchmark '%@' took %f seconds.", _name, timeElapsed); + else NSLog(@"Benchmark took %f seconds.", timeElapsed); +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKConnectionTestExpectation.h b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKConnectionTestExpectation.h new file mode 100644 index 0000000..6dceaea --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKConnectionTestExpectation.h @@ -0,0 +1,87 @@ +// +// RKConnectionTestExpectation.h +// RestKit +// +// Created by Blake Watters on 12/8/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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. +// + +#ifdef _COREDATADEFINES_H + +#import <Foundation/Foundation.h> + +/** + An `RKConnectionTestExpectation` object defines an expectation that a Core Data relationship is connected during the execution of a `RKMappingTest`. These expectation are used to unit test a connection specified via an `RKConnectionDescription` object. + + @see `RKMappingTest` + @see `RKConnectionDescription` + */ +@interface RKConnectionTestExpectation : NSObject + +///---------------------------- +/// @name Creating Expectations +///---------------------------- + +/** + Creates and returns a connection expectation for the specified relationship name, attributes dictionary, and value. + + @param relationshipName The name of the relationship expected to be connected. + @param attributes A dictionary specifying the attributes that are expected to be used to establish the connection. + @param value The value that is expected to be set for the relationship when the connection is established. + @return A newly constructed connection expectation, initialized with the given relationship name, attributes dictionary, and expected value. + */ ++ (instancetype)expectationWithRelationshipName:(NSString *)relationshipName attributes:(NSDictionary *)attributes value:(id)value; + +/** + Initializes the receiver with the given relationship name, attributes dictionary, and value. + + @param relationshipName The name of the relationship expected to be connected. + @param attributes A dictionary specifying the attributes that are expected to be used to establish the connection. + @param value The value that is expected to be set for the relationship when the connection is established. + @return The receiver, initialized with the given relationship name, attributes dictionary, and expected value. + */ +- (instancetype)initWithRelationshipName:(NSString *)relationshipName attributes:(NSDictionary *)attributes value:(id)value; + +///------------------------------------ +/// @name Accessing Expectation Details +///------------------------------------ + +/** + The name of the relationship that is expected to be connected. Cannot be `nil`. + */ +@property (nonatomic, copy, readonly) NSString *relationshipName; + +/** + The dictionary of attributes that are expected to be used when the connection is established. May be `nil`. + */ +@property (nonatomic, copy, readonly) NSDictionary *attributes; + +/** + The value that is expected to be set for the relationship when connected. May be `nil`. + + A value of `nil` indicates that expectation does not specify an exact value for the connection, only that it was set during the execution of the test. A value of `[NSNull null]` indicates that the connection is expected to be connected to a nil value. + */ +@property (nonatomic, strong, readonly) id value; + +/** + Returns a string summary of the connection that is expected to be established. + + @return A string describing the expected connection. + */ +@property (nonatomic, readonly, copy) NSString *summary; + +@end + +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKConnectionTestExpectation.m b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKConnectionTestExpectation.m new file mode 100644 index 0000000..7f86eb7 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKConnectionTestExpectation.m @@ -0,0 +1,69 @@ +// +// RKConnectionTestExpectation.m +// RestKit +// +// Created by Blake Watters on 12/8/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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. +// + +#ifdef _COREDATADEFINES_H + +#import "RKConnectionTestExpectation.h" +#import "RKObjectUtilities.h" + +@interface RKConnectionTestExpectation () +@property (nonatomic, copy, readwrite) NSString *relationshipName; +@property (nonatomic, copy, readwrite) NSDictionary *attributes; +@property (nonatomic, strong, readwrite) id value; +@end + +@implementation RKConnectionTestExpectation + ++ (instancetype)expectationWithRelationshipName:(NSString *)relationshipName attributes:(NSDictionary *)attributes value:(id)value +{ + return [[self alloc] initWithRelationshipName:relationshipName attributes:attributes value:value]; +} + +- (instancetype)initWithRelationshipName:(NSString *)relationshipName attributes:(NSDictionary *)attributes value:(id)value +{ + NSParameterAssert(relationshipName); + NSAssert(value == nil || + [value isKindOfClass:[NSManagedObject class]] || + RKObjectIsCollectionContainingOnlyManagedObjects(value), @"Can only expect a connection to `nil`, a `NSManagedObject`, or a collection of `NSManagedObject` objects"); + self = [self init]; + if (self) { + self.relationshipName = relationshipName; + self.attributes = attributes; + self.value = value; + } + return self; +} + +- (NSString *)summary +{ + return [NSString stringWithFormat:@"connect relationship '%@'", self.relationshipName]; +} + +- (NSString *)description +{ + NSMutableString *description = [[self summary] mutableCopy]; + if (self.attributes) [description appendFormat:@" using attributes %@", self.attributes]; + if (self.value) [description appendFormat:@" to value %@", self.value]; + return description; +} + +@end + +#endif diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKMappingTest.h b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKMappingTest.h new file mode 100644 index 0000000..7375884 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKMappingTest.h @@ -0,0 +1,219 @@ +// +// RKMappingTest.h +// RestKit +// +// Created by Blake Watters on 2/17/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> +#import "RKMappingOperation.h" +#import "RKPropertyMappingTestExpectation.h" + +@protocol RKMappingOperationDataSource, RKManagedObjectCaching; + +///---------------- +/// @name Constants +///---------------- + +/** + The domain for all errors constructed by the `RKMappingTest` class. + */ +extern NSString * const RKMappingTestErrorDomain; + +/** + Name of an exception that occurs when an `RKMappingTest` object fails verification. Raised by `verifyExpectation`. + */ +extern NSString * const RKMappingTestVerificationFailureException; + +/** + Mapping Test Errors + */ +enum { + RKMappingTestUnsatisfiedExpectationError, // An expected mapping event did not occur + RKMappingTestEvaluationBlockError, // An evaluation block returned `NO` when evaluating a mapping event + RKMappingTestValueInequalityError, // A value was not equal to the expected value + RKMappingTestMappingMismatchError, // A mapping occurred using an unexpected `RKObjectMapping` object +}; + +/** + @define RKMappingTestExpectationTestCondition + @abstract Tests a condition and returns `NO` and error if it is not true. + @discussion This is a useful macro when constructing mapping test evaluation blocks. It will test a condition and return `NO` as well as construct an error. This is meant to be used **only** within the body of a `RKMappingTestExpectationEvaluationBlock` object. + @param condition The condition to test. + @param errorCode An error code in the RKMappingTestErrorDomain indicating the nature of the failure. + @param error The NSError object to put the error string into. May be nil, but should usually be the error parameter from the expectation evaluation block. + @param ... A string describing the error. + */ +#define RKMappingTestCondition(condition, errorCode, error, ...) ({ \ +if (!(condition)) { \ +if (error) { \ +*error = [NSError errorWithDomain:RKMappingTestErrorDomain code:errorCode userInfo:[NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithFormat:__VA_ARGS__], NSLocalizedDescriptionKey, nil]]; \ +} \ +return NO; \ +} \ +}) + +/** + The `RKMappingTestEvent` object for the mapping event which failed to satify the expectation. + */ +extern NSString * const RKMappingTestEventErrorKey; + +/** + The `RKMappingTestExpectation` object which was not satisfied by a mapping event. + */ +extern NSString * const RKMappingTestExpectationErrorKey; + +/** + An `RKMappingTest` object provides support for unit testing a RestKit object mapping operation by evaluation expectations against events recorded during an object mapping operation. + */ +@interface RKMappingTest : NSObject + +///--------------------- +/// @name Creating Tests +///--------------------- + +/** + Creates and returns a new test for a given object mapping, source object and destination + object. + + @param mapping The mapping being tested. + @param sourceObject The source object being mapped from. + @param destinationObject The destionation object being to. + @return A new mapping test object for a mapping, a source object and a destination object. + */ ++ (instancetype)testForMapping:(RKMapping *)mapping sourceObject:(id)sourceObject destinationObject:(id)destinationObject; + +/** + Initializes the receiver with a given object mapping, source object, and destination object. + + @param mapping The mapping being tested. + @param sourceObject The source object being mapped from. + @param destinationObject The destionation object being to. + @return The receiver, initialized with mapping, sourceObject and destinationObject. + */ +- (instancetype)initWithMapping:(RKMapping *)mapping sourceObject:(id)sourceObject destinationObject:(id)destinationObject NS_DESIGNATED_INITIALIZER; + +///---------------------------- +/// @name Managing Expectations +///---------------------------- + +/** + Adds an expectation to the receiver to be evaluated during verification. + + @param expectation An expectation object to evaluate during test verification. Must be an instance of `RKPropertyMappingTestExpectation` or `RKConnectionTestExpectation`. + @see `RKMappingTestExpectation` + @see `verifiesOnExpect` + */ +- (void)addExpectation:(id)expectation; + +/** + Evaluates the given expectation against the mapping test and returns a Boolean value indicating if the expectation is met by the receiver. + + Invocation of this method will implicitly invoke `performMapping` if the mapping has not yet been performed. + + @param expectation The expectation to evaluate against the receiver. Must be an intance of either `RKPropertyMappingTestExpectation` or `RKConnectionTestExpectation`. + @param error A pointer to an `NSError` object to be set describing the failure in the event that the expectation is not met. + @return `YES` if the expectation is met, else `NO`. + */ +- (BOOL)evaluateExpectation:(id)expectation error:(NSError **)error; + +///------------------------ +/// @name Verifying Results +///------------------------ + +/** + Performs the object mapping operation and records any mapping events that occur. The mapping events can be verified against expectation through a subsequent call to verify. + + @exception NSInternalInconsistencyException Raises an `NSInternalInconsistencyException` if mapping fails. + */ +- (void)performMapping; + +/** + Verifies that the mapping is configured correctly by performing an object mapping operation and ensuring that all expectations are met. + + @exception RKMappingTestVerificationFailureException Raises an `RKMappingTestVerificationFailureException` exception if mapping fails or any expectation is not satisfied. + */ +- (void)verify; + +/** + Evaluates the expectations and returns a Boolean value indicating if all expectations are satisfied. + + Invocation of this method will implicitly invoke `performMapping` if the mapping has not yet been performed. + + @return `YES` if all expectations were met, else `NO`. + */ +@property (nonatomic, readonly) BOOL evaluate; + +///------------------------- +/// @name Test Configuration +///------------------------- + +/** + The mapping under test. Can be either an `RKObjectMapping` or `RKDynamicMapping` object. + */ +@property (nonatomic, strong, readonly) RKMapping *mapping; + +/** + A data source for the mapping operation. + + If `nil`, an appropriate data source will be constructed for you using the available configuration of the receiver. + */ +@property (nonatomic, strong) id<RKMappingOperationDataSource> mappingOperationDataSource; + +/** + A key path to apply to the source object to specify the location of the root of the data under test. Useful when testing subsets of a larger payload or object graph. + + **Default**: `nil` + */ +@property (nonatomic, copy) NSString *rootKeyPath; + +/** + The source object being mapped from. + */ +@property (nonatomic, strong, readonly) id sourceObject; + +/** + The destionation object being mapped to. + + If `nil`, the mapping test will instantiate a destination object to perform the mapping by invoking `[self.mappingOperationDataSource objectForMappableContent:self.sourceObject mapping:self.mapping]` to obtain a new object from the data source and then assign the object as the value for the destinationObject property. + + @see `mappingOperationDataSource` + */ +@property (nonatomic, strong, readonly) id destinationObject; + +#ifdef _COREDATADEFINES_H + +///---------------------------- +/// @name Core Data Integration +///---------------------------- + +/** + The managed object context within which to perform the mapping test. Required if testing an `RKEntityMapping` object and an appropriate `mappingOperationDataSource` has not been configured. + + When the `mappingOperationDataSource` property is `nil` and the test targets an entity mapping, this context is used to configure an `RKManagedObjectMappingOperationDataSource` object for the purpose of executing the test. + */ +@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext; + +/** + The managed object cache to use when performing a mapping test. + + If the value of this property is `nil` and the test targets an entity mapping, an instance of `RKFetchRequestManagedObjectCache` will be constructed and used as the cache for the purposes of testing. + */ +@property (nonatomic, strong) id<RKManagedObjectCaching> managedObjectCache; + +#endif // _COREDATADEFINES_H + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKMappingTest.m b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKMappingTest.m new file mode 100644 index 0000000..9ef84e5 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKMappingTest.m @@ -0,0 +1,523 @@ +// +// RKMappingTest.m +// RestKit +// +// Created by Blake Watters on 2/17/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKMappingTest.h" +#import "RKObjectMappingOperationDataSource.h" +#import "RKRelationshipMapping.h" +#import "RKErrors.h" +#import "RKObjectUtilities.h" +#import "RKLog.h" + +// Core Data +#ifdef _COREDATADEFINES_H +#if __has_include("RKCoreData.h") +#define RKCoreDataIncluded +#import "RKEntityMapping.h" +#import "RKConnectionDescription.h" +#import "RKConnectionTestExpectation.h" +#import "RKFetchRequestManagedObjectCache.h" +#import "RKManagedObjectMappingOperationDataSource.h" +#endif +#endif + +// Error Constants +NSString * const RKMappingTestErrorDomain = @"org.restkit.RKMappingTest.ErrorDomain"; +NSString * const RKMappingTestEventErrorKey = @"RKMappingTestEventErrorKey"; +NSString * const RKMappingTestExpectationErrorKey = @"RKMappingTestExpectationErrorKey"; +NSString * const RKMappingTestValueErrorKey = @"RKMappingTestValueErrorKey"; +NSString * const RKMappingTestVerificationFailureException = @"RKMappingTestVerificationFailureException"; + +///----------------------------------------------------------------------------- +///----------------------------------------------------------------------------- + +@interface RKMappingTestEvent : NSObject + +@property (nonatomic, strong, readonly) RKPropertyMapping *propertyMapping; +#ifdef RKCoreDataIncluded +@property (nonatomic, strong, readonly) RKConnectionDescription *connection; +#endif +@property (nonatomic, strong, readonly) id value; + +@property (weak, nonatomic, readonly) NSString *sourceKeyPath; +@property (weak, nonatomic, readonly) NSString *destinationKeyPath; + ++ (RKMappingTestEvent *)eventWithMapping:(RKPropertyMapping *)propertyMapping value:(id)value; + +#ifdef RKCoreDataIncluded ++ (RKMappingTestEvent *)eventWithConnection:(RKConnectionDescription *)connection value:(id)value; +#endif + +@end + +@interface RKMappingTestEvent () +@property (nonatomic, strong, readwrite) id value; +@property (nonatomic, strong, readwrite) RKPropertyMapping *propertyMapping; +#ifdef RKCoreDataIncluded +@property (nonatomic, strong, readwrite) RKConnectionDescription *connection; +#endif +@end + +@implementation RKMappingTestEvent + ++ (RKMappingTestEvent *)eventWithMapping:(RKPropertyMapping *)propertyMapping value:(id)value +{ + RKMappingTestEvent *event = [RKMappingTestEvent new]; + event.value = value; + event.propertyMapping = propertyMapping; + + return event; +} + +#ifdef RKCoreDataIncluded ++ (RKMappingTestEvent *)eventWithConnection:(RKConnectionDescription *)connection value:(id)value +{ + RKMappingTestEvent *event = [RKMappingTestEvent new]; + event.connection = connection; + event.value = value; + return event; +} +#endif + +- (NSString *)sourceKeyPath +{ + return [self.propertyMapping sourceKeyPath]; +} + +- (NSString *)destinationKeyPath +{ + return [self.propertyMapping destinationKeyPath]; +} + +- (NSString *)description +{ + if (self.propertyMapping) { + return [NSString stringWithFormat:@"%@ mapped sourceKeyPath '%@' => destinationKeyPath '%@' with value: %@>", [self class], + self.sourceKeyPath, self.destinationKeyPath, self.value]; + } +#ifdef RKCoreDataIncluded + else if (self.connection) { + if ([self.connection isForeignKeyConnection]) { + return [NSString stringWithFormat:@"%@ connected Relationship '%@' using attributes '%@' to value: %@>", [self class], + [self.connection.relationship name], [self.connection.attributes valueForKey:@"name"], self.value]; + } else if ([self.connection isKeyPathConnection]) { + return [NSString stringWithFormat:@"%@ connected Relationship '%@' using keyPath '%@' to value: %@>", [self class], + [self.connection.relationship name], self.connection.keyPath, self.value]; + } + } +#endif + + return [super description]; +} + +@end + +///----------------------------------------------------------------------------- +///----------------------------------------------------------------------------- + +@interface RKMappingTest () <RKMappingOperationDelegate> +@property (nonatomic, strong, readwrite) RKMapping *mapping; +@property (nonatomic, strong, readwrite) id sourceObject; +@property (nonatomic, strong, readwrite) id destinationObject; +@property (nonatomic, strong) NSMutableArray *expectations; +@property (nonatomic, strong) NSMutableArray *events; +@property (nonatomic, assign, getter = hasPerformedMapping) BOOL performedMapping; + +// Method Definitions for old compilers +- (void)performMapping; +- (void)verifyExpectation:(RKPropertyMappingTestExpectation *)expectation; + +@end + +@implementation RKMappingTest + ++ (instancetype)testForMapping:(RKMapping *)mapping sourceObject:(id)sourceObject destinationObject:(id)destinationObject +{ + return [[self alloc] initWithMapping:mapping sourceObject:sourceObject destinationObject:destinationObject]; +} + +- (instancetype)initWithMapping:(RKMapping *)mapping sourceObject:(id)sourceObject destinationObject:(id)destinationObject +{ + NSAssert(sourceObject != nil, @"Cannot perform a mapping operation without a sourceObject object"); + NSAssert(mapping != nil, @"Cannot perform a mapping operation without a mapping"); + + self = [super init]; + if (self) { + self.sourceObject = sourceObject; + self.destinationObject = destinationObject; + self.mapping = mapping; + self.expectations = [NSMutableArray new]; + self.events = [NSMutableArray new]; + self.performedMapping = NO; + } + + return self; +} + +- (void)addExpectation:(id)expectation +{ + NSParameterAssert(expectation); + Class connectionTestExpectation = NSClassFromString(@"RKConnectionTestExpectation"); + if (![expectation isKindOfClass:[RKPropertyMappingTestExpectation class]] && ![expectation isKindOfClass:connectionTestExpectation]) { + [NSException raise:NSInvalidArgumentException + format:@"Invalid expectation: expected an object of type `%@` or `%@`, but instead got a `%@`", + [RKPropertyMappingTestExpectation class], @"RKConnectionTestExpectation", expectation]; + } + [self.expectations addObject:expectation]; +} + +- (RKMappingTestEvent *)eventMatchingExpectation:(id)expectation +{ +#ifdef RKCoreDataIncluded + Class connectionTestExpectation = NSClassFromString(@"RKConnectionTestExpectation"); +#endif + for (RKMappingTestEvent *event in [self.events copy]) { + if ([expectation isKindOfClass:[RKPropertyMappingTestExpectation class]]) { + RKPropertyMappingTestExpectation *propertyExpectation = (RKPropertyMappingTestExpectation *) expectation; + if ([event.sourceKeyPath isEqualToString:propertyExpectation.sourceKeyPath] && [event.destinationKeyPath isEqualToString:propertyExpectation.destinationKeyPath]) { + return event; + } else if ((event.sourceKeyPath == nil && propertyExpectation.sourceKeyPath == nil) && ([event.destinationKeyPath isEqualToString:propertyExpectation.destinationKeyPath])) { + return event; + } + } +#ifdef RKCoreDataIncluded + else if ([expectation isKindOfClass:connectionTestExpectation]) { + RKConnectionTestExpectation *connectionExpectation = (RKConnectionTestExpectation *) expectation; + if ([[event.connection.relationship name] isEqualToString:connectionExpectation.relationshipName]) { + return event; + } + } +#endif + } + + return nil; +} + +- (NSError *)errorForExpectation:(RKPropertyMappingTestExpectation *)expectation + withCode:(NSInteger)errorCode + userInfo:(NSDictionary *)userInfo + description:(NSString *)description + reason:(NSString *)reason +{ + NSMutableDictionary *fullUserInfo = [userInfo mutableCopy]; + fullUserInfo[NSLocalizedDescriptionKey] = description; + fullUserInfo[NSLocalizedFailureReasonErrorKey] = reason; + return [NSError errorWithDomain:RKMappingTestErrorDomain code:errorCode userInfo:fullUserInfo]; +} + +- (BOOL)event:(RKMappingTestEvent *)event satisfiesExpectation:(id)expectation error:(NSError **)error +{ + BOOL success = NO; + + NSDictionary *userInfo = @{ RKMappingTestEventErrorKey : event, + RKMappingTestExpectationErrorKey : expectation }; + if ([expectation isKindOfClass:[RKPropertyMappingTestExpectation class]]) { + RKPropertyMappingTestExpectation *propertyExpectation = (RKPropertyMappingTestExpectation *)expectation; + if (propertyExpectation.evaluationBlock) { + // Let the expectation block evaluate the match + NSError *blockError = nil; + success = propertyExpectation.evaluationBlock(expectation, event.propertyMapping, event.value, &blockError); + + if (! success) { + if (blockError) { + // If the block has given us an error, use the reason + NSMutableDictionary *mutableUserInfo = [userInfo mutableCopy]; + [mutableUserInfo setValue:blockError forKey:NSUnderlyingErrorKey]; + NSString *reason = [NSString stringWithFormat:@"expected to %@ with value %@ '%@', but it did not", + expectation, [event.value class], event.value]; + + if (error) { + *error = [self errorForExpectation:expectation + withCode:RKMappingTestEvaluationBlockError + userInfo:mutableUserInfo + description:[blockError localizedDescription] + reason:reason]; + + *error = blockError; + } + } else { + NSString *description = [NSString stringWithFormat:@"evaluation block returned `NO` for %@ value '%@'", [event.value class], event.value]; + NSString *reason = [NSString stringWithFormat:@"expected to %@ with value %@ '%@', but it did not", + expectation, [event.value class], event.value]; + if (error) { + *error = [self errorForExpectation:expectation + withCode:RKMappingTestEvaluationBlockError + userInfo:userInfo + description:description + reason:reason]; + } + } + } + } else if (propertyExpectation.value) { + // Use RestKit comparison magic to match values + success = RKObjectIsEqualToObject(event.value, propertyExpectation.value); + + if (! success) { + NSString *description = [NSString stringWithFormat:@"mapped to unexpected %@ value '%@'", [event.value class], event.value]; + NSString *reason = [NSString stringWithFormat:@"expected to %@, but instead got %@ '%@'", + expectation, [event.value class], event.value]; + if (error) { + *error = [self errorForExpectation:expectation + withCode:RKMappingTestValueInequalityError + userInfo:userInfo + description:description + reason:reason]; + } + } + } else if (propertyExpectation.mapping) { + if ([event.propertyMapping isKindOfClass:[RKRelationshipMapping class]]) { + // Check the mapping that was used to map the relationship + RKMapping *relationshipMapping = [(RKRelationshipMapping *)event.propertyMapping mapping]; + success = [relationshipMapping isEqualToMapping:propertyExpectation.mapping]; + + if (! success) { + NSString *description = [NSString stringWithFormat:@"mapped using unexpected mapping: %@", relationshipMapping]; + NSString *reason = [NSString stringWithFormat:@"expected to %@, but was instead mapped using: %@", + expectation, relationshipMapping]; + if (error) { + *error = [self errorForExpectation:expectation + withCode:RKMappingTestMappingMismatchError + userInfo:userInfo + description:description + reason:reason]; + } + } + } else { + NSString *description = [NSString stringWithFormat:@"expected a property mapping of type `RKRelationshipMapping` but instead got a `%@`", [propertyExpectation.mapping class]]; + NSString *reason = [NSString stringWithFormat:@"expected to %@, but instead of a `RKRelationshipMapping` got a `%@`", + expectation, [propertyExpectation.mapping class]]; + if (error) { + *error = [self errorForExpectation:expectation + withCode:RKMappingTestMappingMismatchError + userInfo:userInfo + description:description + reason:reason]; + } + + // Error message here that a relationship was not mapped!!! + return NO; + } + } else { + // We only wanted to know that a mapping occured between the keyPaths + success = YES; + } + } +#ifdef RKCoreDataIncluded + else if ([expectation isKindOfClass:[RKConnectionTestExpectation class]]) { + RKConnectionTestExpectation *connectionExpectation = (RKConnectionTestExpectation *)expectation; + id expectedValue = connectionExpectation.value; + id connectedValue = event.value; + + // Check that the connection attributes match + if (connectionExpectation.attributes) { + RKMappingTestCondition([connectionExpectation.attributes isEqualToDictionary:event.connection.attributes], RKMappingTestValueInequalityError, error, @"established connection using unexpected attributes: %@", event.connection.attributes); + } + + // Wrong objects + if (expectedValue) { + RKMappingTestCondition(connectedValue, RKMappingTestValueInequalityError, error, @"unexpectedly connected to nil object set (%@)", connectedValue); + + if ([connectedValue isKindOfClass:[NSManagedObject class]] && [connectionExpectation.value isKindOfClass:[NSManagedObject class]]) { + // Do a managed object ID comparison + RKMappingTestCondition([[connectedValue objectID] isEqual:[expectedValue objectID]], RKMappingTestValueInequalityError, error, @"connected to unexpected managed object: %@", connectedValue); + } else { + // If we are connecting to a collection of managed objects, do a comparison of object IDs + if (RKObjectIsCollectionContainingOnlyManagedObjects(connectedValue) && RKObjectIsCollectionContainingOnlyManagedObjects(expectedValue)) { + RKMappingTestCondition(RKObjectIsEqualToObject([connectedValue valueForKeyPath:@"objectID"], [expectedValue valueForKeyPath:@"objectID"]), RKMappingTestValueInequalityError, error, @"connected to unexpected %@ value '%@'", [connectedValue class], connectedValue); + } else { + RKMappingTestCondition(RKObjectIsEqualToObject(connectedValue, expectedValue), RKMappingTestValueInequalityError, error, @"connected to unexpected %@ value '%@'", [connectedValue class], connectedValue); + } + } + } else { + RKMappingTestCondition(connectedValue == nil, RKMappingTestValueInequalityError, error, @"unexpectedly connected to non-nil object set (%@)", connectedValue); + } + + return YES; + } +#endif + return success; +} + +- (id<RKMappingOperationDataSource>)dataSourceForMappingOperation:(RKMappingOperation *)mappingOperation +{ + // If we have been given an explicit data source, use it + if (self.mappingOperationDataSource) return self.mappingOperationDataSource; + +#ifdef RKCoreDataIncluded + if ([self.mapping isKindOfClass:[RKEntityMapping class]]) { + NSAssert(self.managedObjectContext, @"Cannot test an `RKEntityMapping` with a nil managed object context."); + id<RKManagedObjectCaching> managedObjectCache = self.managedObjectCache ?: [RKFetchRequestManagedObjectCache new]; + RKManagedObjectMappingOperationDataSource *dataSource = [[RKManagedObjectMappingOperationDataSource alloc] initWithManagedObjectContext:self.managedObjectContext cache:managedObjectCache]; + + // Configure an operation queue to enable easy testing of connection operations + NSOperationQueue *operationQueue = [NSOperationQueue new]; + dataSource.operationQueue = operationQueue; + return dataSource; + } else { + return [RKObjectMappingOperationDataSource new]; + } +#else + return [RKObjectMappingOperationDataSource new]; +#endif +} + +- (void)performMapping +{ + // Ensure repeated invocations of verify only result in a single mapping operation + if (! self.hasPerformedMapping) { + id sourceObject = self.rootKeyPath ? [self.sourceObject valueForKeyPath:self.rootKeyPath] : self.sourceObject; + RKMappingOperation *mappingOperation = [[RKMappingOperation alloc] initWithSourceObject:sourceObject destinationObject:self.destinationObject mapping:self.mapping]; + id<RKMappingOperationDataSource> dataSource = [self dataSourceForMappingOperation:mappingOperation]; + mappingOperation.dataSource = dataSource; + mappingOperation.delegate = self; + [mappingOperation start]; + if (mappingOperation.error) { + [NSException raise:NSInternalInconsistencyException format:@"%p: failed with error: %@\n%@ during mapping from %@ to %@ with mapping %@", + self, mappingOperation.error, [self description], self.sourceObject, self.destinationObject, self.mapping]; + } + + // Let the connection operations execute to completion +#ifdef RKCoreDataIncluded + Class managedObjectMappingOperationDataSourceClass = NSClassFromString(@"RKManagedObjectMappingOperationDataSource"); + if ([mappingOperation.dataSource isKindOfClass:managedObjectMappingOperationDataSourceClass]) { + NSOperationQueue *operationQueue = [(RKManagedObjectMappingOperationDataSource *)mappingOperation.dataSource operationQueue]; + if (! [operationQueue isEqual:[NSOperationQueue mainQueue]]) { + [operationQueue waitUntilAllOperationsAreFinished]; + } + } +#endif + + self.performedMapping = YES; + + // Get the destination object from the mapping operation + if (! self.destinationObject) self.destinationObject = mappingOperation.destinationObject; + } +} + +- (void)verifyExpectation:(RKPropertyMappingTestExpectation *)expectation +{ + RKMappingTestEvent *event = [self eventMatchingExpectation:expectation]; + if (event) { + // Found a matching event, check if it satisfies the expectation + NSError *error = nil; + if (! [self event:event satisfiesExpectation:expectation error:&error]) { + NSDictionary *userInfo = @{ NSUnderlyingErrorKey: error, + RKMappingTestEventErrorKey: event, + RKMappingTestExpectationErrorKey: expectation }; + [[NSException exceptionWithName:RKMappingTestVerificationFailureException + reason:[error localizedDescription] + userInfo:userInfo] raise]; + } + } else { + // No match + [NSException raise:NSInternalInconsistencyException format:@"%@: expectation not satisfied: %@, but did not.", + [self description], [expectation summary]]; + } +} + +- (void)verify +{ + [self performMapping]; + + for (RKPropertyMappingTestExpectation *expectation in self.expectations) { + [self verifyExpectation:expectation]; + } +} + +#pragma mark - Evaluating Expectations + +- (BOOL)evaluate +{ + [self performMapping]; + + for (RKPropertyMappingTestExpectation *expectation in self.expectations) { + if (! [self evaluateExpectation:expectation error:nil]) return NO; + } + + return YES; +} + +- (BOOL)evaluateExpectation:(id)expectation error:(NSError **)error +{ + NSParameterAssert(expectation); + Class connectionTestExpectation = NSClassFromString(@"RKConnectionTestExpectation"); + if (! ([expectation isKindOfClass:[RKPropertyMappingTestExpectation class]] || (connectionTestExpectation && [expectation isKindOfClass:connectionTestExpectation]))) [NSException raise:NSInvalidArgumentException format:@"Must be an instance of `RKPropertyMappingTestExpectation` or `RKConnectionTestExpectation`"]; + [self performMapping]; + + RKMappingTestEvent *event = [self eventMatchingExpectation:expectation]; + if (event) { + if (! [self event:event satisfiesExpectation:expectation error:error]) { + return NO; + } + } else { + if (error) { + NSDictionary *userInfo = @{ + RKMappingTestExpectationErrorKey : expectation, + NSLocalizedDescriptionKey : [NSString stringWithFormat:@"expected to %@, but did not.", [expectation summary]], + NSLocalizedFailureReasonErrorKey : [NSString stringWithFormat:@"%@: %@, but did not.", [self description], [expectation summary]] + }; + *error = [NSError errorWithDomain:RKMappingTestErrorDomain code:RKMappingTestUnsatisfiedExpectationError userInfo:userInfo]; + }; + return NO; + } + + return YES; +} + +- (NSString *)expectationsDescription +{ + return [self.expectations valueForKey:@"description"]; +} + +- (NSString *)eventsDescription +{ + return [self.events valueForKey:@"description"]; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"%@ Expectations: %@\nEvents: %@", + [self class], [self expectationsDescription], [self eventsDescription]]; +} + +#pragma mark - RKMappingOperationDelegate + +- (void)addEvent:(RKMappingTestEvent *)event +{ + @synchronized(self.events) { [self.events addObject:event]; }; +} + +- (void)mappingOperation:(RKMappingOperation *)operation didSetValue:(id)value forKeyPath:(NSString *)keyPath usingMapping:(RKAttributeMapping *)mapping +{ + [self addEvent:[RKMappingTestEvent eventWithMapping:mapping value:value]]; +} + +- (void)mappingOperation:(RKMappingOperation *)operation didNotSetUnchangedValue:(id)value forKeyPath:(NSString *)keyPath usingMapping:(RKAttributeMapping *)mapping +{ + [self addEvent:[RKMappingTestEvent eventWithMapping:mapping value:value]]; +} + +#ifdef RKCoreDataIncluded +- (void)mappingOperation:(RKMappingOperation *)operation didConnectRelationship:(NSRelationshipDescription *)relationship toValue:(id)value usingConnection:(RKConnectionDescription *)connection +{ + [self addEvent:[RKMappingTestEvent eventWithConnection:connection value:value]]; +} +#endif + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKPropertyMappingTestExpectation.h b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKPropertyMappingTestExpectation.h new file mode 100644 index 0000000..0af8ded --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKPropertyMappingTestExpectation.h @@ -0,0 +1,121 @@ +// +// RKPropertyMappingTestExpectation.h +// RestKit +// +// Created by Blake Watters on 2/17/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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. +// + +@class RKMapping, RKPropertyMapping, RKPropertyMappingTestExpectation; + +/** + @typedef RKMappingTestExpectationEvaluationBlock + + @param expectation The expectation object itself. This is passed so that there is a reference available at the time of evaluation. + @param mapping The property mapping object that occurred for the source and destination key paths of the expectation. Will be an instance of `RKAttributeMapping, `RKRelationshipMapping`, or `RKConnectionMapping`. + @param mappedValue The value that was mapped. + @param error A pointer to an error object that is to be set in the event that the expectation evaluates negatively. If left to `nil`, a generic error will be generated. + */ +typedef BOOL (^RKMappingTestExpectationEvaluationBlock)(RKPropertyMappingTestExpectation *expectation, RKPropertyMapping *mapping, id mappedValue, NSError **error); + +/** + An `RKMappingTestExpectation` object defines an expected mapping event that should occur during the execution of a `RKMappingTest`. + + @see `RKMappingTest` + */ +@interface RKPropertyMappingTestExpectation : NSObject + +///---------------------------- +/// @name Creating Expectations +///---------------------------- + +/** + Creates and returns a new expectation specifying that a key path in a source object should be mapped to another key path on a destination object. The value mapped is not evaluated. + + @param sourceKeyPath A key path on the source object that should be mapped. + @param destinationKeyPath A key path on the destination object that should be mapped onto. + @return An expectation specifying that sourceKeyPath should be mapped to destinationKeyPath. + */ ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath; + +/** + Creates and returns a new expectation specifying that a key path in a source object should be mapped to another key path on a destination object with a given value. + + @param sourceKeyPath A key path on the source object that should be mapped. + @param destinationKeyPath A key path on the destination object that should be mapped onto. + @param value The value that is expected to be assigned to the destination object at destinationKeyPath. + @return An expectation specifying that sourceKeyPath should be mapped to destinationKeyPath with value. + */ ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath value:(id)value; + +/** + Creates and returns a new expectation specifying that a key path in a source object should be mapped to another key path on a destinaton object and that the attribute mapping and value should evaluate to true with a given block. + + @param sourceKeyPath A key path on the source object that should be mapped. + @param destinationKeyPath A key path on the destination object that should be mapped onto. + @param evaluationBlock A block with which to evaluate the success of the mapping. + @return An expectation specifying that sourceKeyPath should be mapped to destinationKeyPath with value. + */ ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath evaluationBlock:(RKMappingTestExpectationEvaluationBlock)evaluationBlock; + +/** + Creates and returns a new expectation specifying that a key path in a source object should be mapped to another key path on a destinaton object using a specific object mapping for the relationship. + + @param sourceKeyPath A key path on the source object that should be mapped. + @param destinationKeyPath A key path on the destination object that should be mapped onto. + @param mapping An object mapping that is expected to be used for mapping the nested relationship. + @return An expectation specifying that sourceKeyPath should be mapped to destinationKeyPath using a specific object mapping. + */ ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath mapping:(RKMapping *)mapping; + +///------------------------- +/// @name Expectation Values +///------------------------- + +/** + Returns a keyPath on the source object that a value should be mapped from. + */ +@property (nonatomic, copy, readonly) NSString *sourceKeyPath; + +/** + Returns a keyPath on the destination object that a value should be mapped to. + */ +@property (nonatomic, copy, readonly) NSString *destinationKeyPath; + +/** + Returns the expected value that should be set to the destinationKeyPath of the destination object. + */ +@property (nonatomic, strong, readonly) id value; + +/** + A block used to evaluate if the expectation has been satisfied. + + The block accepts three arguments, an `RKPropertyMapping` object denoting the attribute or relationship that was mapped, the mapped value, and a pointer to an error object that is to be set if the block evaluates negatively, and returns a Boolean value indicating if the mapping satisfies the expectations of the block. + */ +@property (nonatomic, copy, readonly) RKMappingTestExpectationEvaluationBlock evaluationBlock; + +/** + Returns the expected object mapping to be used for mapping a nested relationship. + */ +@property (nonatomic, strong, readonly) RKMapping *mapping; + +/** + Returns a string summary of the expected keyPath mapping within the expectation + + @return A string describing the expected sourceKeyPath to destinationKeyPath mapping. + */ +@property (nonatomic, readonly, copy) NSString *summary; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKPropertyMappingTestExpectation.m b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKPropertyMappingTestExpectation.m new file mode 100644 index 0000000..8023f57 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKPropertyMappingTestExpectation.m @@ -0,0 +1,94 @@ +// +// RKMappingTestExpectation.m +// RestKit +// +// Created by Blake Watters on 2/17/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKPropertyMappingTestExpectation.h" +#import "RKPropertyMapping.h" + +@interface RKPropertyMappingTestExpectation () +@property (nonatomic, copy, readwrite) NSString *sourceKeyPath; +@property (nonatomic, copy, readwrite) NSString *destinationKeyPath; +@property (nonatomic, strong, readwrite) id value; +@property (nonatomic, copy, readwrite) RKMappingTestExpectationEvaluationBlock evaluationBlock; +@property (nonatomic, strong, readwrite) RKMapping *mapping; +@end + +@implementation RKPropertyMappingTestExpectation + ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath +{ + RKPropertyMappingTestExpectation *expectation = [self new]; + expectation.sourceKeyPath = sourceKeyPath; + expectation.destinationKeyPath = destinationKeyPath; + + return expectation; +} + ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath value:(id)value +{ + RKPropertyMappingTestExpectation *expectation = [self new]; + expectation.sourceKeyPath = sourceKeyPath; + expectation.destinationKeyPath = destinationKeyPath; + expectation.value = value; + + return expectation; +} + ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath evaluationBlock:(RKMappingTestExpectationEvaluationBlock)evaluationBlock +{ + RKPropertyMappingTestExpectation *expectation = [self new]; + expectation.sourceKeyPath = sourceKeyPath; + expectation.destinationKeyPath = destinationKeyPath; + expectation.evaluationBlock = evaluationBlock; + + return expectation; +} + ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath mapping:(RKMapping *)mapping +{ + RKPropertyMappingTestExpectation *expectation = [self new]; + expectation.sourceKeyPath = sourceKeyPath; + expectation.destinationKeyPath = destinationKeyPath; + expectation.mapping = mapping; + + return expectation; +} + +- (NSString *)summary +{ + return [NSString stringWithFormat:@"map '%@' to '%@'", self.sourceKeyPath, self.destinationKeyPath]; +} + +- (NSString *)description +{ + if (self.value) { + return [NSString stringWithFormat:@"map '%@' to '%@' with %@ value '%@'", + self.sourceKeyPath, self.destinationKeyPath, [self.value class], self.value]; + } else if (self.evaluationBlock) { + return [NSString stringWithFormat:@"map '%@' to '%@' satisfying evaluation block", + self.sourceKeyPath, self.destinationKeyPath]; + } else if (self.mapping) { + return [NSString stringWithFormat:@"map '%@' to '%@' using mapping: %@", + self.sourceKeyPath, self.destinationKeyPath, self.mapping]; + } + + return [self summary]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestConstants.m b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestConstants.m new file mode 100644 index 0000000..9e23183 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestConstants.m @@ -0,0 +1,30 @@ +// +// RKTestConstants.m +// RestKit +// +// Created by Blake Watters on 5/4/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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. +// + +/* + This file defines constants used by the Testing module. It is necessary due to strange + linking errors when building for the Device. When these constants were defined within + RKTestFactory.m, they would resolve on the Simulator but produce linker when building + for Device. [sbw - 05/04/2012] + */ +NSString * const RKTestFactoryDefaultNamesClient = @"client"; +NSString * const RKTestFactoryDefaultNamesObjectManager = @"objectManager"; +NSString * const RKTestFactoryDefaultNamesManagedObjectStore = @"managedObjectStore"; +NSString * const RKTestFactoryDefaultStoreFilename = @"RKTests.sqlite"; diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFactory.h b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFactory.h new file mode 100644 index 0000000..a5f7753 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFactory.h @@ -0,0 +1,231 @@ +// +// RKTestFactory.h +// RestKit +// +// Created by Blake Watters on 2/16/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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. +// + +#ifdef _COREDATADEFINES_H +#if __has_include("RKCoreData.h") +#define RKCoreDataIncluded +#endif +#endif + +/** + The default filename used for managed object stores created via the factory. + */ +extern NSString * const RKTestFactoryDefaultStoreFilename; + +/* + Default Factory Names + */ +extern NSString * const RKTestFactoryDefaultNamesClient; +extern NSString * const RKTestFactoryDefaultNamesObjectManager; +extern NSString * const RKTestFactoryDefaultNamesManagedObjectStore; + +@class RKManagedObjectStore; + +/** + The `RKTestFactory` class provides an interface for initializing RestKit objects within a unit testing environment. The factory is used to ensure isolation between test cases by ensuring that RestKit's important singleton objects are torn down between tests and that each test is working within a clean Core Data environment. Callback hooks are provided so that application specific set up and tear down logic can be integrated as well. + + The factory also provides for the definition of named factories for instantiating objects quickly. At initialization, there are factories defined for creating instances of `AFHTTPClient`, `RKObjectManager`, and `RKManagedObjectStore`. These factories may be redefined within your application should you choose to utilize a subclass or wish to centralize configuration of objects across the test suite. You may also define additional factories for building instances of objects specific to your application using the same infrastructure. + + ## Customizing the Factory + + The test factory is designed to be customized via an Objective-C category. All factory methods are implemented using blocks that have sensible defaults, but can be overridden by providing an alternate implementation. To do so, implement a category on the `RKTestFactory` class and provide an implementation of the `+ (void)load` method. Within the method body, configure your blocks as you see fit. An example implementation is provided below: + + @interface RKTestFactory (MyApp) + + // Create a convenience method for retrieving an object from the factory + + (GGAirport *)ohareAirport; + @end + + @implementation RKTestFactory (MyApp) + + + (void)load + { + [self setSetUpBlock:{ + // I am called on every invocation of `setUp`! + }]; + + // Replace the default object manager factory + [RKTestFactory defineFactory:RKTestFactoryDefaultNamesObjectManager withBlock:^id { + GGObjectManager *objectManager = [[GGObjectManager alloc] initWithBaseURL:[self baseURL]]; + return objectManager; + }]; + + // Define a new factory called 'ORD' that returns a representation of Chicago's O'Hare Airport + [RKTestFactory defineFactory:@"ORD" withBlock:^id{ + GGAirport *ord = [RKTestFactory insertManagedObjectForEntityForName:@"Airport" inManagedObjectContext:nil withProperties:nil]; + ord.airportID = @16; + ord.name = @"Chicago O'Hare International Airport"; + ord.code = @"ORD"; + ord.city = @"Chicago"; + ord.favorite = @(YES); + ord.timeZoneName = @"America/Chicago"; + ord.latitude = @(41.9781); + ord.longitude = @(-87.9061); + + return ord; + }]; + } + + + (GGAirport *)ohareAirport + { + return [self objectFromFactory:@"ORD"]; + } + + @end + */ +@interface RKTestFactory : NSObject + +///------------------------------ +/// @name Configuring the Factory +///------------------------------ + +/** + Returns the base URL with which to initialize `AFHTTPClient` and `RKObjectManager` instances created via the factory. + + @return The base URL for the factory. + */ ++ (NSURL *)baseURL; + +/** + Sets the base URL for the factory. + + @param URL The new base URL. + */ ++ (void)setBaseURL:(NSURL *)URL; + +///----------------------------------------------------------------------------- +/// @name Defining & Instantiating Objects from Factories +///----------------------------------------------------------------------------- + +/** + Defines a factory with a given name for building object instances using the + given block. When the factory singleton receives an objectFromFactory: message, + the block designated for the given factory name is invoked and the resulting object + reference is returned. + + Existing factories can be invoking defineFactory:withBlock: with an existing factory name. + + @param factoryName The name to assign the factory. + @param block A block to execute when building an object instance for the factory name. + */ ++ (void)defineFactory:(NSString *)factoryName withBlock:(id (^)())block; + +/** + Creates and returns a new instance of an object using the factory with the given name. + + @param factoryName The name of the factory to use when building the requested object. + @raises NSInvalidArgumentException Raised if a factory with the given name is not defined. + @param properties An `NSDictionary` of properties to be set on the created object. + @return An object built using the factory registered for the given name. + */ ++ (id)objectFromFactory:(NSString *)factoryName properties:(NSDictionary *)properties; ++ (id)objectFromFactory:(NSString *)factoryName; + +/** + Fetches a shared object from the factory with the given name. If an existing object has already been created, then that instance is returned. If a shared instance does not yet exist, one will be constructed and returned for this and all subsequent invocations of `sharedObjectFromFactory:`. Shared object instances are discarded when the factory is torn down. + + Shared objects are used to return object instances for cases where it does not make sense to instantiate a new instance on every invocation of the factory. A common example where this is appropriate is the `managedObjectStore` factory, where construction of a new store on each invocation would yield managed objects that cross Core Data stacks. + + @param factoryName The name of the factory to retrieve the shared instance of. + @return The shared object instance for the factory registered with the given name. + */ ++ (id)sharedObjectFromFactory:(NSString *)factoryName; + +#ifdef RKCoreDataIncluded +/** + Inserts a new managed object for the `NSEntityDescription` with the given name into the specified managed object context and sets properties on the instance from the given dictionary. A permanent managed object ID is obtained for the object so that it can be referenced across threads without any further work. + + @param entityName The name of the entity to insert a new managed object for. + @param managedObjectContext The managed object context to insert the new object into. If nil, then the managed object context returned by invoking `[RKTestFactory managedObjectStore].mainQueueManagedObjectContext]` is used. + @param properties A dictionary of properties to be set on the new managed object instance. + @return A new object inheriting from `NSManagedObject`. + */ ++ (id)insertManagedObjectForEntityForName:(NSString *)entityName + inManagedObjectContext:(NSManagedObjectContext *)managedObjectContext + withProperties:(NSDictionary *)properties; +#endif + +/** + Returns a set of names for all defined factories. + + @return A set of the string names for all defined factories. + */ ++ (NSSet *)factoryNames; + +///-------------------------------- +/// @name Retrieving Shared Objects +///-------------------------------- + +/** + Fetches the shared `AFHTTPClient` object using the factory defined for the name `RKTestFactoryDefaultNamesClient`. + + @return The shared client instance. + */ ++ (id)client; + +/** + Fetches the shared `RKObjectManager` object using the factory defined for the name `RKTestFactoryDefaultNamesObjectManager`. + + @return The shared object manager instance. + */ ++ (id)objectManager; + +#ifdef RKCoreDataIncluded +/** + Fetches the shared an `RKManagedObjectStore` object using the factory defined for the name `RKTestFactoryDefaultNamesManagedObjectStore`. + + On first invocation per factory setup/teardown, a new managed object store will be configured and returned. If there is an existing persistent store (i.e. from a previous test invocation), then the persistent store is deleted. + + @return The shared managed object store instance. + */ ++ (RKManagedObjectStore *)managedObjectStore; +#endif + +///---------------------------------------------- +/// @name Configuring Set Up and Tear Down Blocks +///---------------------------------------------- + +/** + Sets a block to be executed when the `setUp` method is called as part of a test run. + */ ++ (void)setSetupBlock:(void (^)())block; + +/** + Sets a block to be executed when the `tearDown` method is called as part of a test run. + */ ++ (void)setTearDownBlock:(void (^)())block; + +///-------------------------- +/// @name Managing Test State +///-------------------------- + +/** + Sets up the RestKit testing environment. Executes the block set via `setSetupBlock:` to perform application specific setup. + + Note that the firt time that the `setUp` method is invoked, it will execute a `tearDown` to clear any configuration that may have taken place in during application launch. + */ ++ (void)setUp; + +/** + Tears down the RestKit testing environment by clearing singleton instances, helping to ensure test case isolation. Executes the block set via `setTearDownBlock:` to perform application specific cleanup. + */ ++ (void)tearDown; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFactory.m b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFactory.m new file mode 100644 index 0000000..c3eb6c5 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFactory.m @@ -0,0 +1,303 @@ +// +// RKTestFactory.m +// RestKit +// +// Created by Blake Watters on 2/16/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "AFHTTPClient.h" +#import "RKTestFactory.h" +#import "RKLog.h" +#import "RKObjectManager.h" +#import "RKPathUtilities.h" +#import "RKMIMETypeSerialization.h" +#import "RKObjectRequestOperation.h" + +#ifdef _COREDATADEFINES_H +#if __has_include("RKCoreData.h") +#define RKCoreDataIncluded +#import "RKManagedObjectStore.h" +#endif +#endif + +// Expose MIME Type singleton and initialization routine +@interface RKMIMETypeSerialization () ++ (RKMIMETypeSerialization *)sharedSerialization; +- (void)addRegistrationsForKnownSerializations; +@end + +@interface RKTestFactory () + +@property (nonatomic, strong) NSURL *baseURL; +@property (nonatomic, strong) NSMutableDictionary *factoryBlocks; +@property (nonatomic, strong) NSMutableDictionary *sharedObjectsByFactoryName; +@property (nonatomic, copy) void (^setUpBlock)(); +@property (nonatomic, copy) void (^tearDownBlock)(); + ++ (RKTestFactory *)sharedFactory; +- (void)defineFactory:(NSString *)factoryName withBlock:(id (^)())block; +- (id)objectFromFactory:(NSString *)factoryName properties:(NSDictionary *)properties; +- (void)defineDefaultFactories; + +@end + +@implementation RKTestFactory + ++ (void)initialize +{ + // Ensure the shared factory is initialized + [self sharedFactory]; +} + ++ (RKTestFactory *)sharedFactory +{ + static RKTestFactory *sharedFactory = nil; + if (!sharedFactory) { + sharedFactory = [RKTestFactory new]; + } + + return sharedFactory; +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + self.baseURL = [NSURL URLWithString:@"http://127.0.0.1:4567"]; + self.factoryBlocks = [NSMutableDictionary new]; + self.sharedObjectsByFactoryName = [NSMutableDictionary new]; + [self defineDefaultFactories]; + } + + return self; +} + +- (void)defineFactory:(NSString *)factoryName withBlock:(id (^)())block +{ + (self.factoryBlocks)[factoryName] = [block copy]; +} + +- (id)objectFromFactory:(NSString *)factoryName properties:(NSDictionary *)properties +{ + id (^block)() = (self.factoryBlocks)[factoryName]; + NSAssert(block, @"No factory is defined with the name '%@'", factoryName); + + id object = block(); + [object setValuesForKeysWithDictionary:properties]; + return object; +} + +- (id)sharedObjectFromFactory:(NSString *)factoryName +{ + id sharedObject = (self.sharedObjectsByFactoryName)[factoryName]; + if (!sharedObject) { + sharedObject = [self objectFromFactory:factoryName properties:nil]; + (self.sharedObjectsByFactoryName)[factoryName] = sharedObject; + } + return sharedObject; +} + +- (void)defineDefaultFactories +{ + [self defineFactory:RKTestFactoryDefaultNamesClient withBlock:^id { + __block AFHTTPClient *client; + RKLogSilenceComponentWhileExecutingBlock(RKlcl_cRestKitSupport, ^{ + client = [AFHTTPClient clientWithBaseURL:self.baseURL]; + }); + + return client; + }]; + + [self defineFactory:RKTestFactoryDefaultNamesObjectManager withBlock:^id { + __block RKObjectManager *objectManager; + RKLogSilenceComponentWhileExecutingBlock(RKlcl_cRestKitSupport, ^{ + objectManager = [RKObjectManager managerWithBaseURL:self.baseURL]; + }); + + return objectManager; + }]; + +#ifdef RKCoreDataIncluded + [self defineFactory:RKTestFactoryDefaultNamesManagedObjectStore withBlock:^id { + NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:RKTestFactoryDefaultStoreFilename]; + RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] init]; + NSError *error; + NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:&error]; + if (persistentStore) { + BOOL success = [managedObjectStore resetPersistentStores:&error]; + if (! success) { + RKLogError(@"Failed to reset persistent store: %@", error); + } + } + + return managedObjectStore; + }]; +#endif +} + +#pragma mark - Public Static Interface + ++ (NSURL *)baseURL +{ + return [RKTestFactory sharedFactory].baseURL; +} + ++ (void)setBaseURL:(NSURL *)URL +{ + [RKTestFactory sharedFactory].baseURL = URL; +} + ++ (void)defineFactory:(NSString *)factoryName withBlock:(id (^)())block +{ + [[RKTestFactory sharedFactory] defineFactory:factoryName withBlock:block]; +} + ++ (id)objectFromFactory:(NSString *)factoryName properties:(NSDictionary *)properties +{ + return [[RKTestFactory sharedFactory] objectFromFactory:factoryName properties:properties]; +} + ++ (id)objectFromFactory:(NSString *)factoryName +{ + return [[RKTestFactory sharedFactory] objectFromFactory:factoryName properties:nil]; +} + ++ (id)sharedObjectFromFactory:(NSString *)factoryName +{ + return [[RKTestFactory sharedFactory] sharedObjectFromFactory:factoryName]; +} + +#ifdef RKCoreDataIncluded ++ (id)insertManagedObjectForEntityForName:(NSString *)entityName + inManagedObjectContext:(NSManagedObjectContext *)managedObjectContext + withProperties:(NSDictionary *)properties +{ + __block id managedObject; + __block NSError *error; + __block BOOL success; + if (!managedObjectContext) managedObjectContext = [[RKTestFactory managedObjectStore] mainQueueManagedObjectContext]; + [managedObjectContext performBlockAndWait:^{ + managedObject = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:managedObjectContext]; + success = [managedObjectContext obtainPermanentIDsForObjects:@[managedObject] error:&error]; + if (! success) { + RKLogWarning(@"Failed to obtain permanent objectID for managed object: %@", managedObject); + RKLogCoreDataError(error); + } + [managedObject setValuesForKeysWithDictionary:properties]; + }]; + return managedObject; +} +#endif + ++ (NSSet *)factoryNames +{ + return [NSSet setWithArray:[[RKTestFactory sharedFactory].factoryBlocks allKeys]]; +} + ++ (id)client +{ + return [self sharedObjectFromFactory:RKTestFactoryDefaultNamesClient]; +} + ++ (id)objectManager +{ + return [self sharedObjectFromFactory:RKTestFactoryDefaultNamesObjectManager]; +} + +#ifdef RKCoreDataIncluded ++ (id)managedObjectStore +{ + return [self sharedObjectFromFactory:RKTestFactoryDefaultNamesManagedObjectStore]; +} +#endif + ++ (void)setSetupBlock:(void (^)())block +{ + [RKTestFactory sharedFactory].setUpBlock = block; +} + ++ (void)setTearDownBlock:(void (^)())block +{ + [RKTestFactory sharedFactory].tearDownBlock = block; +} + ++ (void)setUp +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + // On initial set up, perform a tear down to clear any state from the application launch + [self tearDown]; + }); + + [[RKTestFactory sharedFactory].sharedObjectsByFactoryName removeAllObjects]; + [RKObjectManager setSharedManager:nil]; +#ifdef RKCoreDataIncluded + [RKManagedObjectStore setDefaultStore:nil]; +#endif + + // Restore the default MIME Type Serializations in case a test has manipulated the registry + [[RKMIMETypeSerialization sharedSerialization] addRegistrationsForKnownSerializations]; + + // Delete the store if it exists + NSString *path = [RKApplicationDataDirectory() stringByAppendingPathComponent:RKTestFactoryDefaultStoreFilename]; + if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { + [[NSFileManager defaultManager] removeItemAtPath:path error:nil]; + } + + // Clear the NSURLCache + [[NSURLCache sharedURLCache] removeAllCachedResponses]; + + if ([RKTestFactory sharedFactory].setUpBlock) [RKTestFactory sharedFactory].setUpBlock(); +} + ++ (void)tearDown +{ + if ([RKTestFactory sharedFactory].tearDownBlock) [RKTestFactory sharedFactory].tearDownBlock(); + + // Cancel any network operations and clear the cache + [[RKObjectManager sharedManager].operationQueue cancelAllOperations]; + [[NSURLCache sharedURLCache] removeAllCachedResponses]; + + // Cancel any object mapping in the response mapping queue + [[RKObjectRequestOperation responseMappingQueue] cancelAllOperations]; + +#ifdef RKCoreDataIncluded + // Ensure the existing defaultStore is shut down + [[NSNotificationCenter defaultCenter] removeObserver:[RKManagedObjectStore defaultStore]]; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wundeclared-selector" + if ([[RKManagedObjectStore defaultStore] respondsToSelector:@selector(stopIndexingPersistentStoreManagedObjectContext)]) { + // Search component is optional + [[RKManagedObjectStore defaultStore] performSelector:@selector(stopIndexingPersistentStoreManagedObjectContext)]; + + if ([[RKManagedObjectStore defaultStore] respondsToSelector:@selector(searchIndexer)]) { + id searchIndexer = [[RKManagedObjectStore defaultStore] valueForKey:@"searchIndexer"]; + [searchIndexer performSelector:@selector(cancelAllIndexingOperations)]; + } + } +#pragma clang diagnostic pop + +#endif + + [[RKTestFactory sharedFactory].sharedObjectsByFactoryName removeAllObjects]; + [RKObjectManager setSharedManager:nil]; +#ifdef RKCoreDataIncluded + [RKManagedObjectStore setDefaultStore:nil]; +#endif +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFixture.h b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFixture.h new file mode 100644 index 0000000..d3525a3 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFixture.h @@ -0,0 +1,87 @@ +// +// RKTestFixture.h +// RestKit +// +// Created by Blake Watters on 2/1/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> +#if TARGET_OS_IPHONE +#import <UIKit/UIKit.h> +#endif + +/** + Provides a static method API for conveniently accessing fixture data contained within a designated `NSBundle`. Useful when writing unit tests that leverage fixture data for testing parsing and object mapping operations. + */ +@interface RKTestFixture : NSObject + +/** + Returns the NSBundle object designated as the source location for unit testing fixture data. + + @return The NSBundle object designated as the source location for unit testing fixture data + or nil if none has been configured. + */ ++ (NSBundle *)fixtureBundle; + +/** + Designates the specified NSBundle object as the source location for unit testing fixture data. + + @param bundle The new fixture NSBundle object. + */ ++ (void)setFixtureBundle:(NSBundle *)bundle; + +/** + Returns the full path to the specified fixture file on within the fixture bundle. + + @param fixtureName The name of the fixture file. + @return The full path to the specified fixture file or nil if it cannot be located. + */ ++ (NSString *)pathForFixture:(NSString *)fixtureName; + +/** + Creates and returns a string object by reading data from the fixture identified by the specified file name using UTF-8 encoding. + + @param fixtureName The name of the fixture file. + @return A string created by reading data from the specified fixture file using the NSUTF8StringEncoding. + */ ++ (NSString *)stringWithContentsOfFixture:(NSString *)fixtureName; + +/** + Creates and returns a data object by reading every byte from the fixture identified by the specified file name. + + @param fixtureName The name of the resource file. + @return A data object by reading every byte from the fixture file. + */ ++ (NSData *)dataWithContentsOfFixture:(NSString *)fixtureName; + +/** + Returns the MIME Type for the fixture identified by the specified name. + + @param fixtureName The name of the fixture file. + @return The MIME Type for the resource file or nil if the file could not be located. + */ ++ (NSString *)MIMETypeForFixture:(NSString *)fixtureName; + +/** + Creates and returns an object representation of the data from the fixture identified by the specified file name by reading the data as a string and parsing it using a parser appropriate for the MIME Type of the file. + + @param fixtureName The name of the resource file. + @return A new image object for the specified file, or nil if the method could not initialize the image from the specified file. + @see `RKMIMETypeSerialization` + */ ++ (id)parsedObjectWithContentsOfFixture:(NSString *)fixtureName; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFixture.m b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFixture.m new file mode 100644 index 0000000..920fd6c --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestFixture.m @@ -0,0 +1,98 @@ +// +// RKTestFixture.m +// RestKit +// +// Created by Blake Watters on 2/1/12. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// +// 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 "RKTestFixture.h" +#import "RKLog.h" +#import "RKPathUtilities.h" +#import "RKMIMETypeSerialization.h" + +static NSBundle *fixtureBundle = nil; + +@implementation RKTestFixture + ++ (NSBundle *)fixtureBundle +{ + NSAssert(fixtureBundle != nil, @"Bundle for fixture has not been set. Use setFixtureBundle: to set it."); + return fixtureBundle; +} + ++ (void)setFixtureBundle:(NSBundle *)bundle +{ + NSAssert(bundle != nil, @"Bundle for fixture cannot be nil."); + fixtureBundle = bundle; +} + ++ (NSString *)pathForFixture:(NSString *)fixtureName +{ + return [[self fixtureBundle] pathForResource:fixtureName ofType:nil]; +} + ++ (NSString *)stringWithContentsOfFixture:(NSString *)fixtureName +{ + NSError *error = nil; + NSString *resourcePath = [[self fixtureBundle] pathForResource:fixtureName ofType:nil]; + if (! resourcePath) { + RKLogWarning(@"Failed to locate Fixture named '%@' in bundle %@: File Not Found.", fixtureName, [self fixtureBundle]); + return nil; + } + + NSString *fixtureData = [NSString stringWithContentsOfFile:resourcePath encoding:NSUTF8StringEncoding error:&error]; + if (fixtureData == nil && error) { + RKLogWarning(@"Failed to read "); + } + + return fixtureData; +} + ++ (NSData *)dataWithContentsOfFixture:(NSString *)fixtureName +{ + NSString *resourcePath = [[self fixtureBundle] pathForResource:fixtureName ofType:nil]; + if (! resourcePath) { + RKLogWarning(@"Failed to locate Fixture named '%@' in bundle %@: File Not Found.", fixtureName, [self fixtureBundle]); + return nil; + } + + return [NSData dataWithContentsOfFile:resourcePath]; +} + ++ (NSString *)MIMETypeForFixture:(NSString *)fixtureName +{ + NSString *resourcePath = [[self fixtureBundle] pathForResource:fixtureName ofType:nil]; + if (resourcePath) { + return RKMIMETypeFromPathExtension(resourcePath); + } + + return nil; +} + ++ (id)parsedObjectWithContentsOfFixture:(NSString *)fixtureName +{ + NSError *error = nil; + NSData *resourceContents = [self dataWithContentsOfFixture:fixtureName]; + NSAssert(resourceContents, @"Failed to read fixture named '%@'", fixtureName); + NSString *MIMEType = [self MIMETypeForFixture:fixtureName]; + NSAssert(MIMEType, @"Failed to determine MIME type of fixture named '%@'", fixtureName); + + id object = [RKMIMETypeSerialization objectFromData:resourceContents MIMEType:MIMEType error:&error]; + NSAssert(object, @"Failed to parse fixture name '%@' in bundle %@. Error: %@", fixtureName, [self fixtureBundle], [error localizedDescription]); + return object; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestHelpers.h b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestHelpers.h new file mode 100644 index 0000000..0c924ce --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestHelpers.h @@ -0,0 +1,123 @@ +// +// RKTestHelpers.h +// RestKit +// +// Created by Blake Watters on 10/2/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 <Foundation/Foundation.h> +#import "RKHTTPUtilities.h" + +#ifdef _COREDATADEFINES_H +#if __has_include("RKCoreData.h") +#define RKCoreDataIncluded +#endif +#endif + +@class RKRoute, RKObjectManager; + +/** + The `RKTestHelpers` class provides a number of helpful utility methods for use in unit or integration tests for RestKit applications. + */ +@interface RKTestHelpers : NSObject + +///---------------------- +/// @name Stubbing Routes +///---------------------- + +/** + Stubs the route with the given class and method with a given path pattern. + + @param objectClass The class of the route to stub. + @param method The method of the route to stub. + @param pathPattern The path pattern to return instead in place of the current route's value. + @param nilOrObjectManager The object manager to stub the route on. If `nil`, the shared object manager be be used. + @return The new stubbed route object that was added to the route set of the target object manager. + */ ++ (RKRoute *)stubRouteForClass:(Class)objectClass + method:(RKRequestMethod)method + withPathPattern:(NSString *)pathPattern + onObjectManager:(RKObjectManager *)nilOrObjectManager; + +/** + Stubs the route with the given name with a given path pattern. + + @param routeName The name of the route to stub. + @param pathPattern The path pattern to return instead in place of the current route's value. + @param nilOrObjectManager The object manager to stub the route on. If `nil`, the shared object manager be be used. + @return The new stubbed route object that was added to the route set of the target object manager. + */ ++ (RKRoute *)stubRouteNamed:(NSString *)routeName + withPathPattern:(NSString *)pathPattern + onObjectManager:(RKObjectManager *)nilOrObjectManager; + +/** + Stubs the relationship route for a given class with a given path pattern. + + @param relationshipName The name of the relationship to stub the route of. + @param objectClass The class of the route to stub. + @param pathPattern The path pattern to return instead in place of the current route's value. + @param nilOrObjectManager The object manager to stub the route on. If `nil`, the shared object manager be be used. + @return The new stubbed route object that was added to the route set of the target object manager. + */ ++ (RKRoute *)stubRouteForRelationship:(NSString *)relationshipName + ofClass:(Class)objectClass + method:(RKRequestMethod)method + pathPattern:(NSString *)pathPattern + onObjectManager:(RKObjectManager *)nilOrObjectManager; + +#ifdef RKCoreDataIncluded +/** + Finds all registered fetch request blocks matching the given path pattern and adds a new fetch request block that returns the same value as the origin block that matches the given relative string portion of a URL object. + + @param pathPattern The path pattern that matches the fetch request blocks to be copied. + @param relativeString The relative string portion of the NSURL objects that the new blocks will match exactly. + @param nilOrObjectManager The object manager to stub the route on. If `nil`, the shared object manager be be used. + */ ++ (void)copyFetchRequestBlocksMatchingPathPattern:(NSString *)pathPattern + toBlocksMatchingRelativeString:(NSString *)relativeString + onObjectManager:(RKObjectManager *)nilOrObjectManager; +#endif + +///----------------------------- +/// @name Working with the Cache +///----------------------------- + +/** + Disables caching by setting a new `[NSURLCache sharedURLCache]` instance in which the memory and disk limits have been set to zero. + */ ++ (void)disableCaching; + +/** + Creates, stores, and returns a `NSCachedURLResponse` object containing an `NSHTTPURLResponse` for the given request with a 200 (OK) status code. + + @param request The request to cache the response for. + @param responseData The response data to be stored in the cache. + @return The cached URL response that was stored to the cache. + */ ++ (NSCachedURLResponse *)cacheResponseForRequest:(NSURLRequest *)request withResponseData:(NSData *)responseData; + +/** + Creates, stores, and returns a `NSCachedURLResponse` object containing an `NSHTTPURLResponse` for the given URL and HTTP method with the given response data and a 200 (OK) status code. + + @param URL The URL to cache the response for. + @param HTTPMethod The HTTP method of the request (i.e. 'GET', 'POST', 'PUT', 'PATCH', or 'DELETE'). + @param responseData The response data to be stored in the cache. + @return The cached URL response that was stored to the cache. + */ ++ (NSCachedURLResponse *)cacheResponseForURL:(NSURL *)URL HTTPMethod:(NSString *)HTTPMethod headers:(NSDictionary *)requestHeaders withData:(NSData *)responseData; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestHelpers.m b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestHelpers.m new file mode 100644 index 0000000..3884fba --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestHelpers.m @@ -0,0 +1,150 @@ +// +// RKTestHelpers.m +// RestKit +// +// Created by Blake Watters on 10/2/12. +// Copyright (c) 2012 RestKit. All rights reserved. +// +// 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 "RKTestHelpers.h" +#import "RKObjectManager.h" +#import "RKRoute.h" +#import "RKPathUtilities.h" +#import "RKLog.h" +#import "SOCKit.h" +#import "RKRouteSet.h" + +#ifdef _COREDATADEFINES_H +#if __has_include("RKCoreData.h") +#define RKCoreDataIncluded +#import "RKManagedObjectRequestOperation.h" +#endif +#endif + +@implementation RKTestHelpers + ++ (RKRoute *)stubRouteForClass:(Class)objectClass method:(RKRequestMethod)method withPathPattern:(NSString *)pathPattern onObjectManager:(RKObjectManager *)nilOrObjectManager +{ + RKObjectManager *objectManager = nilOrObjectManager ?: [RKObjectManager sharedManager]; + RKRoute *route = [objectManager.router.routeSet routeForClass:objectClass method:method]; + NSAssert(route, @"Expected to retrieve a route, but got nil"); + [objectManager.router.routeSet removeRoute:route]; + RKRoute *stubbedRoute = [RKRoute routeWithClass:objectClass pathPattern:pathPattern method:method]; + [objectManager.router.routeSet addRoute:stubbedRoute]; + return stubbedRoute; +} + ++ (RKRoute *)stubRouteNamed:(NSString *)routeName withPathPattern:(NSString *)pathPattern onObjectManager:(RKObjectManager *)nilOrObjectManager +{ + RKObjectManager *objectManager = nilOrObjectManager ?: [RKObjectManager sharedManager]; + RKRoute *route = [objectManager.router.routeSet routeForName:routeName]; + NSAssert(route, @"Expected to retrieve a route, but got nil"); + [objectManager.router.routeSet removeRoute:route]; + RKRoute *stubbedRoute = [RKRoute routeWithName:routeName pathPattern:pathPattern method:route.method]; + [objectManager.router.routeSet addRoute:stubbedRoute]; +#ifdef RKCoreDataIncluded + [self copyFetchRequestBlocksMatchingPathPattern:route.pathPattern toBlocksMatchingRelativeString:pathPattern onObjectManager:objectManager]; +#endif + return stubbedRoute; +} + ++ (RKRoute *)stubRouteForRelationship:(NSString *)relationshipName ofClass:(Class)objectClass method:(RKRequestMethod)method pathPattern:(NSString *)pathPattern onObjectManager:(RKObjectManager *)nilOrObjectManager +{ + RKObjectManager *objectManager = nilOrObjectManager ?: [RKObjectManager sharedManager]; + RKRoute *route = [objectManager.router.routeSet routeForRelationship:relationshipName ofClass:objectClass method:method]; + NSAssert(route, @"Expected to retrieve a route, but got nil"); + [objectManager.router.routeSet removeRoute:route]; + RKRoute *stubbedRoute = [RKRoute routeWithRelationshipName:relationshipName objectClass:objectClass pathPattern:pathPattern method:method]; + [objectManager.router.routeSet addRoute:stubbedRoute]; +#ifdef RKCoreDataIncluded + [self copyFetchRequestBlocksMatchingPathPattern:route.pathPattern toBlocksMatchingRelativeString:pathPattern onObjectManager:objectManager]; +#endif + return stubbedRoute; +} + +#ifdef RKCoreDataIncluded ++ (void)copyFetchRequestBlocksMatchingPathPattern:(NSString *)pathPattern + toBlocksMatchingRelativeString:(NSString *)relativeString + onObjectManager:(RKObjectManager *)nilOrObjectManager +{ + RKObjectManager *objectManager = nilOrObjectManager ?: [RKObjectManager sharedManager]; + + // Extract the dynamic portions of the path pattern to construct a set of parameters + SOCPattern *pattern = [SOCPattern patternWithString:pathPattern]; + NSArray *parameterNames = [pattern valueForKeyPath:@"parameters.string"]; + NSMutableDictionary *stubbedParameters = [NSMutableDictionary dictionaryWithCapacity:[parameterNames count]]; + for (NSString *parameter in parameterNames) { + [stubbedParameters setValue:@"value" forKey:parameter]; + } + NSString *stubbedPathPattern = [pattern stringFromObject:stubbedParameters]; + + NSURL *URL = [NSURL URLWithString:stubbedPathPattern relativeToURL:objectManager.HTTPClient.baseURL]; + NSAssert(URL, @"Failed to build URL from path pattern '%@' relative to base URL '%@'", pathPattern, objectManager.HTTPClient.baseURL); + for (RKFetchRequestBlock block in objectManager.fetchRequestBlocks) { + NSFetchRequest *fetchRequest = block(URL); + if (fetchRequest) { + // Add a new block that matches our stubbed path + [objectManager addFetchRequestBlock:^NSFetchRequest *(NSURL *URL) { + // TODO: Note that relativeString does not work because NSURLRequest drops the relative parent of the URL + // if ([[URL relativeString] isEqualToString:relativeString]) { + if ([[URL path] isEqualToString:relativeString]) { + return fetchRequest; + } + + return nil; + }]; + + break; + } + } +} +#endif + ++ (void)disableCaching +{ + NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]; + [NSURLCache setSharedURLCache:sharedCache]; +} + ++ (NSCachedURLResponse *)cacheResponseForRequest:(NSURLRequest *)request withResponseData:(NSData *)responseData +{ + NSParameterAssert(request); + NSParameterAssert(responseData); + + NSHTTPURLResponse *response = [[NSHTTPURLResponse alloc] initWithURL:[request URL] statusCode:200 HTTPVersion:@"1.1" headerFields:nil]; + NSAssert(response, @"Failed to build cached response"); + NSCachedURLResponse *cachedResponse = [[NSCachedURLResponse alloc] initWithResponse:response data:responseData]; + [[NSURLCache sharedURLCache] storeCachedResponse:cachedResponse forRequest:request]; + + // Verify that we can get the cached response back + NSCachedURLResponse *__unused storedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request]; + NSAssert(storedResponse, @"Expected to retrieve cached response for request '%@', instead got nil.", request); + + return cachedResponse; +} + ++ (NSCachedURLResponse *)cacheResponseForURL:(NSURL *)URL HTTPMethod:(NSString *)HTTPMethod headers:(NSDictionary *)requestHeaders withData:(NSData *)responseData +{ + NSParameterAssert(URL); + NSParameterAssert(HTTPMethod); + NSParameterAssert(responseData); + + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; + request.HTTPMethod = HTTPMethod; + [request setAllHTTPHeaderFields:requestHeaders]; + return [self cacheResponseForRequest:request withResponseData:responseData]; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestNotificationObserver.h b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestNotificationObserver.h new file mode 100644 index 0000000..d7a6712 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestNotificationObserver.h @@ -0,0 +1,98 @@ +// +// RKTestNotificationObserver.h +// RestKit +// +// Created by Jeff Arena on 8/23/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// + +#import <Foundation/Foundation.h> + +/** + An RKTestNotificationObserver object provides support for awaiting a notification + to be posted as the result of an asynchronous operation by spinning the run loop. This + enables a straight-forward unit testing workflow by blocking execution of the test until + a notification is posted. + */ +@interface RKTestNotificationObserver : NSObject + +/** + The name of the notification the receiver is awaiting. + */ +@property (nonatomic, copy) NSString *name; + +/** + The object expected to post the notification the receiver is awaiting. + + Can be nil. + */ +@property (nonatomic, weak) id object; + +/** + The timeout interval, in seconds, to wait for the notification to be posted. + + **Default**: 3 seconds + */ +@property (nonatomic, assign) NSTimeInterval timeout; + +/** + Creates and initializes a notification obsercer object. + + @return The newly created notification observer. + */ ++ (RKTestNotificationObserver *)notificationObserver; + +/** + Instantiate a notification observer for the given notification name and object + + @param notificationName The name of the NSNotification we want to watch for + @param notificationSender The source object of the NSNotification we want to watch for + @return The newly created notification observer initialized with notificationName and notificationSender. + */ ++ (RKTestNotificationObserver *)notificationObserverForName:(NSString *)notificationName object:(id)notificationSender; + +/** + Instantiate a notification observer for the given notification name + + @param notificationName The name of the NSNotification we want to watch for + */ ++ (RKTestNotificationObserver *)notificationObserverForName:(NSString *)notificationName; + +/** + Adds the receiver as an observer for the notification name and object under test. + + If the observer has not already been added when waitForNotification + is invoked, it will be added before the runloop cycling begins. + */ +- (void)addObserver; + +/** + Wait for a notification matching the name and source object we are observing to be posted. + + This method will block by spinning the runloop waiting for an appropriate notification matching + our observed name and object to be posted or the timeout configured is exceeded. + */ +- (void)waitForNotification; + +/*** @name Block Helpers */ + +/** + Configures a notification observer to wait for the a notification with the given name to be posted + by the source object during execution of the block. + + @param name The name of the notification we are waiting for + @param notificationSender The object we are waiting to post the notification + @param block A block to invoke to trigger the notification activity + */ ++ (void)waitForNotificationWithName:(NSString *)name object:(id)notificationSender usingBlock:(void(^)())block; + +/** + Configures a notification observer to wait for the a notification with the given name to be posted + during execution of the block. + + @param name The name of the notification we are waiting for + @param block A block to invoke to trigger the notification activity + */ ++ (void)waitForNotificationWithName:(NSString *)name usingBlock:(void(^)())block; + +@end diff --git a/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestNotificationObserver.m b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestNotificationObserver.m new file mode 100644 index 0000000..d5a531b --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Code/Testing/RKTestNotificationObserver.m @@ -0,0 +1,110 @@ +// +// RKTestNotificationObserver.m +// RestKit +// +// Created by Jeff Arena on 8/23/11. +// Copyright (c) 2009-2012 RestKit. All rights reserved. +// + +#import "RKTestNotificationObserver.h" + +@interface RKTestNotificationObserver () +@property (nonatomic, assign, getter = isObserverAdded) BOOL observerAdded; +@property (nonatomic, assign, getter = isAwaitingNotification) BOOL awaitingNotification; +@property (nonatomic, strong) NSDate *startDate; +@end + +@implementation RKTestNotificationObserver + + ++ (void)waitForNotificationWithName:(NSString *)name object:(id)object usingBlock:(void(^)())block +{ + RKTestNotificationObserver *observer = [RKTestNotificationObserver notificationObserverForName:name object:object]; + [observer addObserver]; + block(); + [observer waitForNotification]; +} + ++ (void)waitForNotificationWithName:(NSString *)name usingBlock:(void(^)())block +{ + [self waitForNotificationWithName:name object:nil usingBlock:block]; +} + ++ (RKTestNotificationObserver *)notificationObserver +{ + return [[self alloc] init]; +} + ++ (RKTestNotificationObserver *)notificationObserverForName:(NSString *)notificationName object:(id)object +{ + RKTestNotificationObserver *notificationObserver = [self notificationObserver]; + notificationObserver.object = object; + notificationObserver.name = notificationName; + return notificationObserver; +} + ++ (RKTestNotificationObserver *)notificationObserverForName:(NSString *)notificationName +{ + return [self notificationObserverForName:notificationName object:nil]; +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + _timeout = 5; + _awaitingNotification = NO; + } + return self; +} + +- (void)dealloc +{ + [self removeObserver]; +} + +- (void)addObserver +{ + if (self.isObserverAdded) return; + + NSAssert(_name, @"Notification name cannot be nil"); + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(processNotification:) + name:self.name + object:self.object]; + self.observerAdded = YES; + self.awaitingNotification = YES; + self.startDate = [NSDate date]; +} + +- (void)removeObserver +{ + if (! self.isObserverAdded) return; + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (void)waitForNotification +{ + [self addObserver]; + + while (self.isAwaitingNotification) { + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + if ([[NSDate date] timeIntervalSinceDate:self.startDate] > self.timeout) { + [NSException raise:nil format:@"*** Operation timed out after %f seconds...", self.timeout]; + self.awaitingNotification = NO; + } + } + + [self removeObserver]; +} + +- (void)processNotification:(NSNotification *)notification +{ + NSAssert([self.name isEqualToString:notification.name], + @"Received notification (%@) differs from expected notification (%@)", + notification.name, self.name); + self.awaitingNotification = NO; +} + +@end diff --git a/Unit-2-Journal/Pods/RestKit/LICENSE b/Unit-2-Journal/Pods/RestKit/LICENSE new file mode 100644 index 0000000..eb8d4bc --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/LICENSE @@ -0,0 +1,202 @@ + + 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 2009-2012 The RestKit Project + + 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/Unit-2-Journal/Pods/RestKit/README.md b/Unit-2-Journal/Pods/RestKit/README.md new file mode 100644 index 0000000..8037e42 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/README.md @@ -0,0 +1,629 @@ +# RestKit + +[![Build Status](http://img.shields.io/travis/RestKit/RestKit/development.svg?style=flat)](https://travis-ci.org/RestKit/RestKit) +[![Pod Version](http://img.shields.io/cocoapods/v/RestKit.svg?style=flat)](http://cocoadocs.org/docsets/RestKit/) +[![Pod Platform](http://img.shields.io/cocoapods/p/RestKit.svg?style=flat)](http://cocoadocs.org/docsets/RestKit/) +[![Pod License](http://img.shields.io/cocoapods/l/RestKit.svg?style=flat)](https://www.apache.org/licenses/LICENSE-2.0.html) +[![Visit our IRC channel](http://img.shields.io/badge/IRC-%23RestKit-green.svg?style=flat)](https://kiwiirc.com/client/irc.freenode.net/?nick=rkuser|?&theme=basic#RestKit) + +RestKit is a modern Objective-C framework for implementing RESTful web services clients on iOS and Mac OS X. It provides a powerful [object mapping](https://github.com/RestKit/RestKit/wiki/Object-mapping) engine that seamlessly integrates with [Core Data](http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/CoreData/cdProgrammingGuide.html) and a simple set of networking primitives for mapping HTTP requests and responses built on top of [AFNetworking](https://github.com/AFNetworking/AFNetworking). It has an elegant, carefully designed set of APIs that make accessing and modeling RESTful resources feel almost magical. For example, here's how to access the Twitter public timeline and turn the JSON contents into an array of Tweet objects: + +``` objective-c +@interface RKTweet : NSObject +@property (nonatomic, copy) NSNumber *userID; +@property (nonatomic, copy) NSString *username; +@property (nonatomic, copy) NSString *text; +@end + +RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTweet class]]; +[mapping addAttributeMappingsFromDictionary:@{ + @"user.name": @"username", + @"user.id": @"userID", + @"text": @"text" +}]; + +RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodAny pathPattern:nil keyPath:nil statusCodes:nil]; +NSURL *url = [NSURL URLWithString:@"http://api.twitter.com/1/statuses/public_timeline.json"]; +NSURLRequest *request = [NSURLRequest requestWithURL:url]; +RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]]; +[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) { + NSLog(@"The public timeline Tweets: %@", [result array]); +} failure:nil]; +[operation start]; +``` + +## Getting Started + +- [Download RestKit](https://github.com/RestKit/RestKit/releases) and play with the [examples](https://github.com/RestKit/RestKit/tree/development/Examples) for iPhone and Mac OS X +- First time with RestKit? Read the ["Overview"](#overview) section below and then check out the ["Getting Acquainted with RestKit"](https://github.com/RestKit/RKGist/blob/master/TUTORIAL.md) tutorial and [Object Mapping Reference](https://github.com/RestKit/RestKit/wiki/Object-mapping) documents in the wiki to jump right in. +- Upgrading from RestKit 0.9.x or 0.10.x? Read the ["Upgrading to RestKit 0.20.x"](https://github.com/RestKit/RestKit/wiki/Upgrading-from-v0.10.x-to-v0.20.0) guide in the wiki +- Adding RestKit to an existing [AFNetworking](https://github.com/AFNetworking/AFNetworking) application? Read the [AFNetworking Integration](https://github.com/RestKit/RestKit/wiki/AFNetworking-Integration) document to learn details about how the frameworks fit together. +- Review the [source code API documentation](http://restkit.org/api/latest) for a detailed look at the classes and API's in RestKit. A great place to start is [RKObjectManager](http://restkit.org/api/latest/Classes/RKObjectManager.html). +- Still need some help? Ask questions on [Stack Overflow](http://stackoverflow.com/questions/tagged/restkit) or the [mailing list](http://groups.google.com/group/restkit), ping us on [Twitter](http://twitter.com/RestKit) or chat with us on [IRC](https://kiwiirc.com/client/irc.freenode.net/?nick=rkuser|?&theme=basic#RestKit). + +## Overview + +RestKit is designed to be modular and each module strives to maintain a minimal set of dependencies across the framework and with the host platform. At the core of library sits the object mapping engine, which is responsible for transforming objects between representations (such as JSON/XML <-> local domain objects). + +### Object Mapping Fundamentals + +The object mapping engine is built on top of the [Key-Value Coding](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/KeyValueCoding.html) (KVC) informal protocol that is foundational to numerous Cocoa technologies such as key-value observing, bindings, and Core Data. Object mappings are expressed as pairs of KVC key paths that specify the source and destination attributes or relationships that are to be transformed. + +RestKit leverages the highly dynamic Objective-C runtime to infer the developers desired intent by examining the type of the source and destination properties and performing appropriate type transformations. For example, given a source key path of `created_at` that identifies a string within a parsed JSON document and a destination key path of `creationDate` that identifies an `NSDate` property on a target object, RestKit will transform the date from a string into an `NSDate` using an `NSDateFormatter`. Numerous other transformations are provided out of the box and the engine is pluggable to allow the developer to define new transformations or replace an existing transformation with a new implementation. + +The mapper fully supports both simple attribute as well as relationship mappings in which nested to-one or to-many child objects are mapped recursively. Through relationship mappings, one object mapping can be added to another to compose aggregate mappings that are capable of processing arbitrarily complex source documents. + +Object mapping is a deep topic and is explored in exhaustive detail in the [Object Mapping Guide](https://github.com/RestKit/RestKit/wiki/Object-mapping) on the wiki. + +### API Quickstart + +RestKit is broken into several modules that cleanly separate the mapping engine from the HTTP and Core Data integrations to provide maximum flexibility. Key classes in each module are highlighted below and each module is hyperlinked to the README.md contained within the source code. + +<table> + <tr><th colspan="2" style="text-align:center;"><a href="Code/ObjectMapping/README.md">Object Mapping</a></th></tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKObjectMapping.html">RKObjectMapping</a></td> + <td>Encapsulates configuration for transforming object representations as expressed by key-value coding keypaths.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKAttributeMapping.html">RKAttributeMapping</a></td> + <td>Specifies a desired transformation between attributes within an object or entity mapping in terms of a source and destination key path.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKRelationshipMapping.html">RKRelationshipMapping</a></td> + <td>Specifies a desired mapping of a nested to-one or to-many child objects in in terms of a source and destination key path and an <tt>RKObjectMapping</tt> with which to map the attributes of the child object.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKDynamicMapping.html">RKDynamicMapping</a></td> + <td>Specifies a flexible mapping in which the decision about which <tt>RKObjectMapping</tt> is to be used to process a given document is deferred to run time.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKMapperOperation.html">RKMapperOperation</a></td> + <td>Provides an interface for mapping a deserialized document into a set of local domain objects.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKMappingOperation.html">RKMappingOperation</a></td> + <td>An <tt>NSOperation</tt> that performs a mapping between object representations using an <tt>RKObjectMapping</tt>.</td> + </tr> + <tr><th colspan="2" style="text-align:center;"><a href="Code/Network/README.md">Networking</a></th></tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKRequestDescriptor.html">RKRequestDescriptor</a></td> + <td>Describes a request that can be sent from the application to a remote web application for a given object type.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKResponseDescriptor.html">RKResponseDescriptor</a></td> + <td>Describes an object mappable response that may be returned from a remote web application in terms of an object mapping, a key path, a <a href="http://cocoadocs.org/docsets/SOCKit/">SOCKit pattern</a> for matching the URL, and a set of status codes that define the circumstances in which the mapping is appropriate for a given response.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKObjectParameterization.html">RKObjectParameterization</a></td> + <td>Performs mapping of a given object into an <tt>NSDictionary</tt> representation suitable for use as the parameters of an HTTP request.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKObjectRequestOperation.html">RKObjectRequestOperation</a></td> + <td>An <tt>NSOperation</tt> that sends an HTTP request and performs object mapping on the parsed response body using the configurations expressed in a set of <tt>RKResponseDescriptor</tt> objects.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKResponseMapper.html">RKResponseMapperOperation</a></td> + <td>An <tt>NSOperation</tt> that provides support for object mapping an <tt>NSHTTPURLResponse</tt> using a set of <tt>RKResponseDescriptor</tt> objects.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKObjectManager.html">RKObjectManager</a></td> + <td>Captures the common patterns for communicating with a RESTful web application over HTTP using object mapping including: + <ul> + <li>Centralizing <tt>RKRequestDescriptor</tt> and <tt>RKResponseDescriptor</tt> configurations</li> + <li>Describing URL configuration with an <tt>RKRouter</tt></li> + <li>Serializing objects and sending requests with the serialized representations</li> + <li>Sending requests to load remote resources and object mapping the response bodies</li> + <li>Building multi-part form requests for objects</li> + </ul> + </td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKRouter.html">RKRouter</a></td> + <td>Generates <tt>NSURL</tt> objects from a base URL and a set of <tt>RKRoute</tt> objects describing relative paths used by the application.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKRoute.html">RKRoute</a></td> + <td>Describes a single relative path for a given object type and HTTP method, the relationship of an object, or a symbolic name.</td> + </tr> + <tr><th colspan="2" style="text-align:center;"><a href="Code/CoreData/README.md">Core Data</a></th></tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKManagedObjectStore.html">RKManagedObjectStore</a></td> + <td>Encapsulates Core Data configuration including an <tt>NSManagedObjectModel</tt>, a <tt>NSPersistentStoreCoordinator</tt>, and a pair of <tt>NSManagedObjectContext</tt> objects.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKEntityMapping.html">RKEntityMapping</a></td> + <td>Models a mapping for transforming an object representation into a <tt>NSManagedObject</tt> instance for a given <tt>NSEntityDescription</tt>.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKConnectionDescription.html">RKConnectionDescription</a></td> + <td>Describes a mapping for establishing a relationship between Core Data entities using foreign key attributes.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKManagedObjectRequestOperation.html">RKManagedObjectRequestOperation</a></td> + <td>An <tt>NSOperation</tt> subclass that sends an HTTP request and performs object mapping on the parsed response body to create <tt>NSManagedObject</tt> instances, establishes relationships between objects using <tt>RKConnectionDescription</tt> objects, and cleans up orphaned objects that no longer exist in the remote backend system.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKManagedObjectImporter.html">RKManagedObjectImporter</a></td> + <td>Provides support for bulk mapping of managed objects using <tt>RKEntityMapping</tt> objects for two use cases: + <ol> + <li>Bulk importing of parsed documents into an <tt>NSPersistentStore.</tt></li> + <li>Generating a <a href="Docs for database seeding">seed database</a> for initializing an application's Core Data store with an initial data set upon installation.</li> + </ol> + </td> + </tr> + <tr><th colspan="2" style="text-align:center;"><a href="Code/Search/README.md">Search</a></th></tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKSearchIndexer.html">RKSearchIndexer</a></td> + <td>Provides support for generating a full-text searchable index within Core Data for string attributes of entities within an application.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKSearchPredicate.html">RKSearchPredicate</a></td> + <td>Generates an <tt>NSCompoundPredicate</tt> given a string of text that will search an index built with an <tt>RKSearchIndexer</tt> across any indexed entity.</td> + </tr> + <tr><th colspan="2" style="text-align:center;"><a href="Code/Testing/README.md">Testing</a></th></tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKMappingTest.html">RKMappingTest</a></td> + <td>Provides support for unit testing object mapping configurations given a parsed document and an object or entity mapping. Expectations are configured in terms of expected key path mappings and/or expected transformation results.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKTestFixture.html">RKTestFixture</a></td> + <td>Provides an interface for easily generating test fixture data for unit testing.</td> + </tr> + <tr> + <td><a href="http://restkit.org/api/latest/Classes/RKTestFactory.html">RKTestFactory</a></td> + <td>Provides support for creating objects for use in testing.</td> + </tr> +</table> + +### + +## Examples + +### Object Request +``` objective-c +// GET a single Article from /articles/1234.json and map it into an object +// JSON looks like {"article": {"title": "My Article", "author": "Blake", "body": "Very cool!!"}} +RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Article class]]; +[mapping addAttributeMappingsFromArray:@[@"title", @"author", @"body"]]; +NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful); // Anything in 2xx +RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodAny pathPattern:@"/articles/:articleID" keyPath:@"article" statusCodes:statusCodes]; + +NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://restkit.org/articles/1234.json"]]; +RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]]; +[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) { + Article *article = [result firstObject]; + NSLog(@"Mapped the article: %@", article); +} failure:^(RKObjectRequestOperation *operation, NSError *error) { + NSLog(@"Failed with error: %@", [error localizedDescription]); +}]; +[operation start]; +``` + +### Managed Object Request +``` objective-c +// GET an Article and its Categories from /articles/888.json and map into Core Data entities +// JSON looks like {"article": {"title": "My Article", "author": "Blake", "body": "Very cool!!", "categories": [{"id": 1, "name": "Core Data"]} +NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; +RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel]; +NSError *error = nil; +BOOL success = RKEnsureDirectoryExistsAtPath(RKApplicationDataDirectory(), &error); +if (! success) { + RKLogError(@"Failed to create Application Data Directory at path '%@': %@", RKApplicationDataDirectory(), error); +} +NSString *path = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"Store.sqlite"]; +NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:&error]; +if (! persistentStore) { + RKLogError(@"Failed adding persistent store at path '%@': %@", path, error); +} +[managedObjectStore createManagedObjectContexts]; + +RKEntityMapping *categoryMapping = [RKEntityMapping mappingForEntityForName:@"Category" inManagedObjectStore:managedObjectStore]; +[categoryMapping addAttributeMappingsFromDictionary:@{ "id": "categoryID", @"name": "name" }]; +RKEntityMapping *articleMapping = [RKEntityMapping mappingForEntityForName:@"Article" inManagedObjectStore:managedObjectStore]; +[articleMapping addAttributeMappingsFromArray:@[@"title", @"author", @"body"]]; +[articleMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"categories" toKeyPath:@"categories" withMapping:categoryMapping]]; + +NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful); // Anything in 2xx +RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:articleMapping method:RKRequestMethodAny pathPattern:@"/articles/:articleID" keyPath:@"article" statusCodes:statusCodes]; + +NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://restkit.org/articles/888.json"]]; +RKManagedObjectRequestOperation *operation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]]; +operation.managedObjectContext = managedObjectStore.mainQueueManagedObjectContext; +operation.managedObjectCache = managedObjectStore.managedObjectCache; +[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) { + Article *article = [result firstObject]; + NSLog(@"Mapped the article: %@", article); + NSLog(@"Mapped the category: %@", [article.categories anyObject]); +} failure:^(RKObjectRequestOperation *operation, NSError *error) { + NSLog(@"Failed with error: %@", [error localizedDescription]); +}]; +NSOperationQueue *operationQueue = [NSOperationQueue new]; +[operationQueue addOperation:operation]; +``` + +### Map a Client Error Response to an NSError +``` objective-c +// GET /articles/error.json returns a 422 (Unprocessable Entity) +// JSON looks like {"errors": "Some Error Has Occurred"} + +// You can map errors to any class, but `RKErrorMessage` is included for free +RKObjectMapping *errorMapping = [RKObjectMapping mappingForClass:[RKErrorMessage class]]; +// The entire value at the source key path containing the errors maps to the message +[errorMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"errorMessage"]]; + +NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassClientError); +// Any response in the 4xx status code range with an "errors" key path uses this mapping +RKResponseDescriptor *errorDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:errorMapping method:RKRequestMethodAny pathPattern:nil keyPath:@"errors" statusCodes:statusCodes]; + +NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://restkit.org/articles/error.json"]]; +RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[errorDescriptor]]; +[operation setCompletionBlockWithSuccess:nil failure:^(RKObjectRequestOperation *operation, NSError *error) { + // The `description` method of the class the error is mapped to is used to construct the value of the localizedDescription + NSLog(@"Loaded this error: %@", [error localizedDescription]); + + // You can access the model object used to construct the `NSError` via the `userInfo` + RKErrorMessage *errorMessage = [[error.userInfo objectForKey:RKObjectMapperErrorObjectsKey] firstObject]; +}]; +``` + +### Centralize Configuration in an Object Manager +``` objective-c +// Set up Article and Error Response Descriptors +// Successful JSON looks like {"article": {"title": "My Article", "author": "Blake", "body": "Very cool!!"}} +RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Article class]]; +[mapping addAttributeMappingsFromArray:@[@"title", @"author", @"body"]]; +NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful); // Anything in 2xx +RKResponseDescriptor *articleDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodAny pathPattern:@"/articles" keyPath:@"article" statusCodes:statusCodes]; + +// Error JSON looks like {"errors": "Some Error Has Occurred"} +RKObjectMapping *errorMapping = [RKObjectMapping mappingForClass:[RKErrorMessage class]]; +// The entire value at the source key path containing the errors maps to the message +[errorMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"errorMessage"]]; +NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassClientError); +// Any response in the 4xx status code range with an "errors" key path uses this mapping +RKResponseDescriptor *errorDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:errorMapping method:RKRequestMethodAny pathPattern:nil keyPath:@"errors" statusCodes:statusCodes]; + +// Add our descriptors to the manager +RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://restkit.org"]]; +[manager addResponseDescriptorsFromArray:@[ articleDescriptor, errorDescriptor ]]; + +[manager getObjectsAtPath:@"/articles/555.json" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { + // Handled with articleDescriptor +} failure:^(RKObjectRequestOperation *operation, NSError *error) { + // Transport error or server error handled by errorDescriptor +}]; +``` + +### Configure Core Data Integration with the Object Manager +``` objective-c +NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; +RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel]; +BOOL success = RKEnsureDirectoryExistsAtPath(RKApplicationDataDirectory(), &error); +if (! success) { + RKLogError(@"Failed to create Application Data Directory at path '%@': %@", RKApplicationDataDirectory(), error); +} +NSString *path = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"Store.sqlite"]; +NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:&error]; +if (! persistentStore) { + RKLogError(@"Failed adding persistent store at path '%@': %@", path, error); +} +[managedObjectStore createManagedObjectContexts]; + +RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://restkit.org"]]; +manager.managedObjectStore = managedObjectStore; +``` + +### Load a Collection of Objects at a Path +``` objective-c +RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://restkit.org"]]; +[manager getObjectsAtPath:@"/articles" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { +} failure:^(RKObjectRequestOperation *operation, NSError *error) { +}]; +``` + +### Manage a Queue of Object Request Operations +``` objective-c +RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://restkit.org"]]; + +NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://restkit.org/articles/1234.json"]]; +RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]]; + +[manager enqueueObjectRequestOperation:operation]; +[manager cancelAllObjectRequestOperationsWithMethod:RKRequestMethodANY matchingPathPattern:@"/articles/:articleID\\.json"]; +``` + +### POST, PATCH, and DELETE an Object +``` objective-c +RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[Article class]]; +[responseMapping addAttributeMappingsFromArray:@[@"title", @"author", @"body"]]; +NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful); // Anything in 2xx +RKResponseDescriptor *articleDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping method:RKRequestMethodAny pathPattern:@"/articles" keyPath:@"article" statusCodes:statusCodes]; + +RKObjectMapping *requestMapping = [RKObjectMapping requestMapping]; // objectClass == NSMutableDictionary +[requestMapping addAttributeMappingsFromArray:@[@"title", @"author", @"body"]]; + +// For any object of class Article, serialize into an NSMutableDictionary using the given mapping and nest +// under the 'article' key path +RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping objectClass:[Article class] rootKeyPath:@"article" method:RKRequestMethodAny]; + +RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://restkit.org"]]; +[manager addRequestDescriptor:requestDescriptor]; +[manager addResponseDescriptor:articleDescriptor]; + +Article *article = [Article new]; +article.title = @"Introduction to RestKit"; +article.body = @"This is some text."; +article.author = @"Blake"; + +// POST to create +[manager postObject:article path:@"/articles" parameters:nil success:nil failure:nil]; + +// PATCH to update +article.body = @"New Body"; +[manager patchObject:article path:@"/articles/1234" parameters:nil success:nil failure:nil]; + +// DELETE to destroy +[manager deleteObject:article path:@"/articles/1234" parameters:nil success:nil failure:nil]; +``` + +### Configure Logging +``` objective-c +// Log all HTTP traffic with request and response bodies +RKLogConfigureByName("RestKit/Network", RKLogLevelTrace); + +// Log debugging info about Core Data +RKLogConfigureByName("RestKit/CoreData", RKLogLevelDebug); + +// Raise logging for a block +RKLogWithLevelWhileExecutingBlock(RKLogLevelTrace, ^{ + // Do something that generates logs +}); +``` + +### Configure Routing +``` objective-c +RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://restkit.org"]]; + +// Class Routing +[manager.router.routeSet addRoute:[RKRoute routeWithClass:[GGSegment class] pathPattern:@"/segments/:segmentID\\.json" method:RKRequestMethodGET]]; + +// Relationship Routing +[manager.router.routeSet addRoute:[RKRoute routeWithRelationshipName:@"amenities" objectClass:[GGAirport class] pathPattern:@"/airports/:airportID/amenities.json" method:RKRequestMethodGET]]; + +// Named Routes +[manager.router.routeSet addRoute:[RKRoute routeWithName:@"thumbs_down_review" resourcePathPattern:@"/reviews/:reviewID/thumbs_down" method:RKRequestMethodPOST]]; +``` + +### POST an Object with a File Attachment +``` objective-c +Article *article = [Article new]; +UIImage *image = [UIImage imageNamed:@"some_image.png"]; + +// Serialize the Article attributes then attach a file +NSMutableURLRequest *request = [[RKObjectManager sharedManager] multipartFormRequestWithObject:article method:RKRequestMethodPOST path:nil parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { + [formData appendPartWithFileData:UIImagePNGRepresentation(image) + name:@"article[image]" + fileName:@"photo.png" + mimeType:@"image/png"]; +}]; + +RKObjectRequestOperation *operation = [[RKObjectManager sharedManager] objectRequestOperationWithRequest:request success:nil failure:nil]; +[[RKObjectManager sharedManager] enqueueObjectRequestOperation:operation]; // NOTE: Must be enqueued rather than started +``` + +### Enqueue a Batch of Object Request Operations +``` objective-c + +RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://restkit.org"]]; + +Airport *jfk = [Airport new]; +jfk.code = @"jfk"; +Airport *lga = [Airport new]; +lga.code = @"lga"; +Airport *rdu = [Airport new]; +rdu.code = @"rdu"; + +// Enqueue a GET for '/airports/jfk/weather', '/airports/lga/weather', '/airports/rdu/weather' +RKRoute *route = [RKRoute routeWithName:@"airport_weather" resourcePathPattern:@"/airports/:code/weather" method:RKRequestMethodGET]; + +[manager enqueueBatchOfObjectRequestOperationsWithRoute:route + objects:@[ jfk, lga, rdu] + progress:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) { + NSLog(@"Finished %d operations", numberOfFinishedOperations); + } completion:^ (NSArray *operations) { + NSLog(@"All Weather Reports Loaded!"); + }]; +``` + +### Generate a Seed Database +``` objective-c +NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; +RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel]; +NSError *error = nil; +BOOL success = RKEnsureDirectoryExistsAtPath(RKApplicationDataDirectory(), &error); +if (! success) { + RKLogError(@"Failed to create Application Data Directory at path '%@': %@", RKApplicationDataDirectory(), error); +} +NSString *path = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"Store.sqlite"]; +NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:&error]; +if (! persistentStore) { + RKLogError(@"Failed adding persistent store at path '%@': %@", path, error); +} +[managedObjectStore createManagedObjectContexts]; + +RKEntityMapping *articleMapping = [RKEntityMapping mappingForEntityForName:@"Article" inManagedObjectStore:managedObjectStore]; +[articleMapping addAttributeMappingsFromArray:@[@"title", @"author", @"body"]]; + +NSString *seedPath = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"MySeedDatabase.sqlite"]; +RKManagedObjectImporter *importer = [[RKManagedObjectImporter alloc] initWithManagedObjectModel:managedObjectStore.managedObjectModel storePath:seedPath]; + +// Import the files "articles.json" from the Main Bundle using our RKEntityMapping +// JSON looks like {"articles": [ {"title": "Article 1", "body": "Text", "author": "Blake" ]} +NSError *error; +NSBundle *mainBundle = [NSBundle mainBundle]; +[importer importObjectsFromItemAtPath:[mainBundle pathForResource:@"articles" ofType:@"json"] + withMapping:articleMapping + keyPath:@"articles" + error:&error]; + +BOOL success = [importer finishImporting:&error]; +if (success) { + [importer logSeedingInfo]; +} +``` + +### Index and Search an Entity +``` objective-c +NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; +RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel]; +NSError *error = nil; +BOOL success = RKEnsureDirectoryExistsAtPath(RKApplicationDataDirectory(), &error); +if (! success) { + RKLogError(@"Failed to create Application Data Directory at path '%@': %@", RKApplicationDataDirectory(), error); +} +NSString *path = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"Store.sqlite"]; +NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:&error]; +if (! persistentStore) { + RKLogError(@"Failed adding persistent store at path '%@': %@", path, error); +} +[managedObjectStore createManagedObjectContexts]; +[managedObjectStore addSearchIndexingToEntityForName:@"Article" onAttributes:@[ @"title", @"body" ]]; +[managedObjectStore addInMemoryPersistentStore:nil]; +[managedObjectStore createManagedObjectContexts]; +[managedObjectStore startIndexingPersistentStoreManagedObjectContext]; + +Article *article1 = [NSEntityDescription insertNewObjectForEntityForName:@"Article" inManagedObjectContext:managedObjectStore.mainQueueManagedObjectContext]; +article1.title = @"First Article"; +article1.body = "This should match search"; + +Article *article2 = [NSEntityDescription insertNewObjectForEntityForName:@"Article" inManagedObjectContext:managedObjectStore.mainQueueManagedObjectContext]; +article2.title = @"Second Article"; +article2.body = "Does not"; + +BOOL success = [managedObjectStore.mainQueueManagedObjectContext saveToPersistentStore:nil]; + +RKSearchPredicate *predicate = [RKSearchPredicate searchPredicateWithText:@"Match" type:NSAndPredicateType]; +NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Article"]; +fetchRequest.predicate = predicate; + +// Contains article1 due to body text containing 'match' +NSArray *matches = [managedObjectStore.mainQueueManagedObjectContext executeFetchRequest:fetchRequest error:nil]; +NSLog(@"Found the matching articles: %@", matches); +``` + +### Unit Test a Mapping +``` objective-c +// JSON looks like {"article": {"title": "My Article", "author": "Blake", "body": "Very cool!!"}} +RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Article class]]; +[mapping addAttributeMappingsFromArray:@[@"title", @"author", @"body"]]; + +NSDictionary *article = @{ @"article": @{ @"title": @"My Title", @"body": @"The article body", @"author": @"Blake" } }; +RKMappingTest *mappingTest = [[RKMappingTest alloc] initWithMapping:mapping sourceObject:article destinationObject:nil]; + +[mappingTest expectMappingFromKeyPath:@"title" toKeyPath:@"title" value:@"My Title"]; +[mappingTest performMapping]; +[mappingTest verify]; +``` + +## Requirements + +RestKit requires [iOS 5.1.1](http://developer.apple.com/library/ios/#releasenotes/General/WhatsNewIniPhoneOS/Articles/iOS5.html#//apple_ref/doc/uid/TP30915195-SW1) and above or [Mac OS X 10.7](http://developer.apple.com/library/mac/#releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_7.html#//apple_ref/doc/uid/TP40010355-SW5) and above. + +Several third-party open source libraries are used within RestKit, including: + +1. [AFNetworking](https://github.com/AFNetworking/AFNetworking) - Networking Support +2. [LibComponentLogging](http://0xc0.de/LibComponentLogging) - Logging Support +3. [SOCKit](https://github.com/jverkoey/sockit) - String <-> Object Coding +4. [iso8601parser](http://boredzo.org/iso8601parser/) - Support for parsing and generating ISO-8601 dates + +The following Cocoa frameworks must be linked into the application target for proper compilation: + +1. **CFNetwork.framework** on iOS +1. **CoreData.framework** +1. **Security.framework** +1. **MobileCoreServices.framework** on iOS or **CoreServices.framework** on OS X + +And the following linker flags must be set: + +1. **-ObjC** +1. **-all_load** + +### ARC + +As of [version 0.20.0](https://github.com/RestKit/RestKit/wiki/Restkit-0.20.0), RestKit has migrated the entire codebase to ARC. + +If you are including the RestKit sources directly into a project that does not yet use [Automatic Reference Counting](http://clang.llvm.org/docs/AutomaticReferenceCounting.html), you will need to set the `-fobjc-arc` compiler flag on all of the RestKit source files. To do this in Xcode, go to your active target and select the "Build Phases" tab. Now select all RestKit source files, press Enter, insert `-fobjc-arc` and then "Done" to enable ARC for RestKit. + +### Serialization Formats + +RestKit provides a pluggable interface for handling arbitrary serialization formats via the [`RKSerialization`](http://restkit.org/api/latest/Classes/RKSerialization.html) protocol and the [`RKMIMETypeSerialization`](http://restkit.org/api/latest/Classes/RKMIMETypeSerialization.html) class. Out of the box, RestKit supports handling the [JSON](http://www.json.org/) format for serializing and deserializing object representations via the [`NSJSONSerialization`](http://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html) class. + +#### Additional Serializations + +Support for additional formats and alternate serialization backends is provided via external modules that can be added to the project. Currently the following serialization implementations are available for use: + +* JSONKit +* SBJSON +* YAJL +* NextiveJson +* XMLReader + XMLWriter + +## Installation + +The recommended approach for installing RestKit is via the [CocoaPods](http://cocoapods.org/) package manager, as it provides flexible dependency management and dead simple installation. For best results, it is recommended that you install via CocoaPods **>= 0.19.1** using Git **>= 1.8.0** installed via Homebrew. + +### via CocoaPods + +Install CocoaPods if not already available: + +``` bash +$ [sudo] gem install cocoapods +$ pod setup +``` + +Change to the directory of your Xcode project, and Create and Edit your Podfile and add RestKit: + +``` bash +$ cd /path/to/MyProject +$ touch Podfile +$ edit Podfile +platform :ios, '5.0' +# Or platform :osx, '10.7' +pod 'RestKit', '~> 0.20.0' + +# Testing and Search are optional components +pod 'RestKit/Testing', '~> 0.20.0' +pod 'RestKit/Search', '~> 0.20.0' +``` + +Install into your project: + +``` bash +$ pod install +``` + +Open your project in Xcode from the .xcworkspace file (not the usual project file) + +``` bash +$ open MyProject.xcworkspace +``` + +Please note that if your installation fails, it may be because you are installing with a version of Git lower than CocoaPods is expecting. Please ensure that you are running Git **>= 1.8.0** by executing `git --version`. You can get a full picture of the installation details by executing `pod install --verbose`. + +### From a Release Package or as a Git submodule + +Detailed installation instructions are available in the [Visual Install Guide](https://github.com/RestKit/RestKit/wiki/Installing-RestKit-v0.20.x-as-a-Git-Submodule) on the Wiki. + +## License + +RestKit is licensed under the terms of the [Apache License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). Please see the [LICENSE](LICENSE) file for full details. + +## Credits + +RestKit is brought to you by [Blake Watters](http://twitter.com/blakewatters) and the RestKit team. + +Support is provided by the following organizations: + +* [GateGuru](http://www.gateguruapp.com/) +* [Two Toasters](http://www.twotoasters.com/) diff --git a/Unit-2-Journal/Pods/RestKit/Vendor/LibComponentLogging/Core/lcl_RK.h b/Unit-2-Journal/Pods/RestKit/Vendor/LibComponentLogging/Core/lcl_RK.h new file mode 100644 index 0000000..c4e3324 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Vendor/LibComponentLogging/Core/lcl_RK.h @@ -0,0 +1,388 @@ +// +// +// lcl_RK.h -- LibComponentLogging, embedded, RestKit/RK +// +// +// Copyright (c) 2008-2012 Arne Harren <ah@0xc0.de> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef __RKLCL_H__ +#define __RKLCL_H__ + +#define _RKLCL_VERSION_MAJOR 1 +#define _RKLCL_VERSION_MINOR 3 +#define _RKLCL_VERSION_BUILD 1 +#define _RKLCL_VERSION_SUFFIX "" + +// +// lcl -- LibComponentLogging, embedded, RestKit/RK +// +// LibComponentLogging is a logging library for Objective-C applications +// with the following characteristics: +// +// - Log levels +// The library provides log levels for distinguishing between error messages, +// informational messages, and fine-grained trace messages for debugging. +// +// - Log components +// The library provides log components for identifying different parts of an +// application. A log component contains a unique identifier, a short name +// which is used as a header in a log message, and a full name which can be +// used in a user interface. +// +// - Active log level per log component +// At runtime, the library provides an active log level for each log +// component in order to enable/disable logging for certain parts of an +// application. +// +// - Grouping of log components +// Log components which have the same name prefix form a group of log +// components and logging can be enabled/disabled for the whole group with +// a single command. +// +// - Low runtime-overhead when logging is disabled +// Logging is based on a log macro which checks the active log level before +// constructing the log message and before evaluating log message arguments. +// +// - Code completion support +// The library provides symbols for log components and log levels which work +// with Xcode's code completion. All symbols, e.g. values or functions, which +// are relevant when using the logging library in an application, are prefixed +// with 'RKlcl_'. Internal symbols, which are needed when working with meta +// data, when defining log components, or when writing a logging back-end, are +// prefixed with '_RKlcl_'. Internal symbols, which are only used by the logging +// library itself, are prefixed with '__RKlcl_'. +// +// - Meta data +// The library provides public data structures which contain information about +// log levels and log components, e.g. headers and names. +// +// - Pluggable loggers +// The library does not contain a concrete logger, but provides a simple +// delegation mechanism for plugging-in a concrete logger based on the +// application's requirements, e.g. a logger which writes to the system log, +// or a logger which writes to a log file. The concrete logger is configured +// at build-time. +// +// Note: If the preprocessor symbol _RKLCL_NO_LOGGING is defined, the log macro +// will be defined to an empty effect. +// + + +#import <Foundation/Foundation.h> + + +// Use C linkage. +#ifdef __cplusplus +extern "C" { +#endif + + +// +// Log levels. +// + + +// Log levels, prefixed with 'RKlcl_v'. +enum _RKlcl_enum_level_t { + RKlcl_vOff = 0, + + RKlcl_vCritical, // critical situation + RKlcl_vError, // error situation + RKlcl_vWarning, // warning + RKlcl_vInfo, // informational message + RKlcl_vDebug, // coarse-grained debugging information + RKlcl_vTrace, // fine-grained debugging information + + _RKlcl_level_t_count, + _RKlcl_level_t_first = 0, + _RKlcl_level_t_last = _RKlcl_level_t_count-1 +}; + +// Log level type. +typedef uint32_t _RKlcl_level_t; +typedef uint8_t _RKlcl_level_narrow_t; + + +// +// Log components. +// + + +// Log components, prefixed with 'RKlcl_c'. +enum _RKlcl_enum_component_t { +# define _RKlcl_component(_identifier, _header, _name) \ + RKlcl_c##_identifier, \ + __RKlcl_log_symbol_RKlcl_c##_identifier = RKlcl_c##_identifier, +# include "lcl_config_components_RK.h" +# undef _RKlcl_component + + _RKlcl_component_t_count, + _RKlcl_component_t_first = 0, + _RKlcl_component_t_last = _RKlcl_component_t_count-1 +}; + +// Log component type. +typedef uint32_t _RKlcl_component_t; + + +// +// Functions and macros. +// + +#ifndef _RKLCL_NO_IGNORE_WARNINGS +# ifdef __clang__ + // Ignore some warnings about variadic macros when using '-Weverything'. +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wunknown-pragmas" +# pragma clang diagnostic ignored "-Wvariadic-macros" +# pragma clang diagnostic ignored "-Wpedantic" +# endif +#endif + +// RKlcl_log(<component>, <level>, <format>[, <arg1>[, <arg2>[, ...]]]) +// +// <component>: a log component with prefix 'RKlcl_c' +// <level> : a log level with prefix 'RKlcl_v' +// <format> : a format string of type NSString (may include %@) +// <arg..> : optional arguments required by the format string +// +// Logs a message for the given log component at the given log level if the +// log level is active for the log component. +// +// The actual logging is done by _RKlcl_logger which must be defined by a concrete +// logging back-end. _RKlcl_logger has the same signature as RKlcl_log. +// +#ifdef _RKLCL_NO_LOGGING +# define RKlcl_log(_component, _level, _format, ...) \ + do { \ + } while (0) +#else +# define RKlcl_log(_component, _level, _format, ...) \ + do { \ + if (((_RKlcl_component_level[(__RKlcl_log_symbol(_component))]) >= \ + (__RKlcl_log_symbol(_level))) \ + ) { \ + _RKlcl_logger(_component, \ + _level, \ + _format, \ + ##__VA_ARGS__); \ + } \ + } while (0) +#endif + +// RKlcl_log_if(<component>, <level>, <predicate>, <format>[, <arg1>[, ...]]) +// +// <component>: a log component with prefix 'RKlcl_c' +// <level> : a log level with prefix 'RKlcl_v' +// <predicate>: a predicate for conditional logging +// <format> : a format string of type NSString (may include %@) +// <arg..> : optional arguments required by the format string +// +// Logs a message for the given log component at the given log level if the +// log level is active for the log component and if the predicate evaluates +// to true. +// +// The predicate is only evaluated if the given log level is active. +// +// The actual logging is done by _RKlcl_logger which must be defined by a concrete +// logging back-end. _RKlcl_logger has the same signature as RKlcl_log. +// +#ifdef _RKLCL_NO_LOGGING +# define RKlcl_log_if(_component, _level, _predicate, _format, ...) \ + do { \ + } while (0) +#else +# define RKlcl_log_if(_component, _level, _predicate, _format, ...) \ + do { \ + if (((_RKlcl_component_level[(__RKlcl_log_symbol(_component))]) >= \ + (__RKlcl_log_symbol(_level))) \ + && \ + (_predicate) \ + ) { \ + _RKlcl_logger(_component, \ + _level, \ + _format, \ + ##__VA_ARGS__); \ + } \ + } while (0) +#endif + +#ifndef _RKLCL_NO_IGNORE_WARNINGS +# ifdef __clang__ +# pragma clang diagnostic pop +# endif +#endif + +// RKlcl_configure_by_component(<component>, <level>) +// +// <component>: a log component with prefix 'RKlcl_c' +// <level> : a log level with prefix 'RKlcl_v' +// +// Configures the given log level for the given log component. +// Returns the number of configured log components, or 0 on failure. +// +uint32_t RKlcl_configure_by_component(_RKlcl_component_t component, _RKlcl_level_t level); + +// RKlcl_configure_by_identifier(<identifier>, <level>) +// +// <identifier>: a log component's identifier with optional '*' wildcard suffix +// <level> : a log level with prefix 'RKlcl_v' +// +// Configures the given log level for the given log component(s). +// Returns the number of configured log components, or 0 on failure. +// +uint32_t RKlcl_configure_by_identifier(const char *identifier, _RKlcl_level_t level); + +// RKlcl_configure_by_header(<header>, <level>) +// +// <header> : a log component's header with optional '*' wildcard suffix +// <level> : a log level with prefix 'RKlcl_v' +// +// Configures the given log level for the given log component(s). +// Returns the number of configured log components, or 0 on failure. +// +uint32_t RKlcl_configure_by_header(const char *header, _RKlcl_level_t level); + +// RKlcl_configure_by_name(<name>, <level>) +// +// <name> : a log component's name with optional '*' wildcard suffix +// <level> : a log level with prefix 'RKlcl_v' +// +// Configures the given log level for the given log component(s). +// Returns the number of configured log components, or 0 on failure. +// +uint32_t RKlcl_configure_by_name(const char *name, _RKlcl_level_t level); + + +// +// Internals. +// + + +// Active log levels, indexed by log component. +extern _RKlcl_level_narrow_t _RKlcl_component_level[_RKlcl_component_t_count]; + +// Log component identifiers, indexed by log component. +extern const char * const _RKlcl_component_identifier[_RKlcl_component_t_count]; + +// Log component headers, indexed by log component. +extern const char * const _RKlcl_component_header[_RKlcl_component_t_count]; + +// Log component names, indexed by log component. +extern const char * const _RKlcl_component_name[_RKlcl_component_t_count]; + +// Log level headers, indexed by log level. +extern const char * const _RKlcl_level_header[_RKlcl_level_t_count]; // full header +extern const char * const _RKlcl_level_header_1[_RKlcl_level_t_count]; // header with 1 character +extern const char * const _RKlcl_level_header_3[_RKlcl_level_t_count]; // header with 3 characters + +// Log level names, indexed by log level. +extern const char * const _RKlcl_level_name[_RKlcl_level_t_count]; + +// Version. +extern const char * const _RKlcl_version; + +// Log level symbols used by RKlcl_log, prefixed with '__RKlcl_log_symbol_RKlcl_v'. +enum { + __RKlcl_log_symbol_RKlcl_vCritical = RKlcl_vCritical, + __RKlcl_log_symbol_RKlcl_vError = RKlcl_vError, + __RKlcl_log_symbol_RKlcl_vWarning = RKlcl_vWarning, + __RKlcl_log_symbol_RKlcl_vInfo = RKlcl_vInfo, + __RKlcl_log_symbol_RKlcl_vDebug = RKlcl_vDebug, + __RKlcl_log_symbol_RKlcl_vTrace = RKlcl_vTrace +}; + +// Macro for appending the '__RKlcl_log_symbol_' prefix to a given symbol. +#define __RKlcl_log_symbol(_symbol) \ + __RKlcl_log_symbol_##_symbol + + +// End C linkage. +#ifdef __cplusplus +} +#endif + + +// Include logging back-end and definition of _RKlcl_logger. +#import "lcl_config_logger_RK.h" + + +// For simple configurations where 'lcl_config_logger_RK.h' is empty, define a +// default NSLog()-based _RKlcl_logger here. +#ifndef _RKlcl_logger + +// ARC/non-ARC autorelease pool +#define _RKlcl_logger_autoreleasepool_arc 0 +#if defined(__has_feature) +# if __has_feature(objc_arc) +# undef _RKlcl_logger_autoreleasepool_arc +# define _RKlcl_logger_autoreleasepool_arc 1 +# endif +#endif +#if _RKlcl_logger_autoreleasepool_arc +# define _RKlcl_logger_autoreleasepool_begin \ + @autoreleasepool { +# define _RKlcl_logger_autoreleasepool_end \ + } +#else +# define _RKlcl_logger_autoreleasepool_begin \ + NSAutoreleasePool *_RKlcl_logger_autoreleasepool = [[NSAutoreleasePool alloc] init]; +# define _RKlcl_logger_autoreleasepool_end \ + [_RKlcl_logger_autoreleasepool release]; +#endif + +#ifndef _RKLCL_NO_IGNORE_WARNINGS +# ifdef __clang__ + // Ignore some warnings about variadic macros when using '-Weverything'. +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wunknown-pragmas" +# pragma clang diagnostic ignored "-Wvariadic-macros" +# pragma clang diagnostic ignored "-Wpedantic" +# endif +#endif + +// A simple default logger, which redirects to NSLog(). +#define _RKlcl_logger(_component, _level, _format, ...) { \ + _RKlcl_logger_autoreleasepool_begin \ + NSLog(@"%s %s:%@:%d " _format, \ + _RKlcl_level_header_1[_level], \ + _RKlcl_component_header[_component], \ + [@__FILE__ lastPathComponent], \ + __LINE__, \ + ## __VA_ARGS__); \ + _RKlcl_logger_autoreleasepool_end \ +} + +#ifndef _RKLCL_NO_IGNORE_WARNINGS +# ifdef __clang__ +# pragma clang diagnostic pop +# endif +#endif + +#endif + + +// Include extensions. +#import "lcl_config_extensions_RK.h" + + +#endif // __RKLCL_H__ + diff --git a/Unit-2-Journal/Pods/RestKit/Vendor/LibComponentLogging/Core/lcl_RK.m b/Unit-2-Journal/Pods/RestKit/Vendor/LibComponentLogging/Core/lcl_RK.m new file mode 100644 index 0000000..9c2a6b8 --- /dev/null +++ b/Unit-2-Journal/Pods/RestKit/Vendor/LibComponentLogging/Core/lcl_RK.m @@ -0,0 +1,176 @@ +// +// +// lcl_RK.m -- LibComponentLogging, embedded, RestKit/RK +// +// +// Copyright (c) 2008-2012 Arne Harren <ah@0xc0.de> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "lcl_RK.h" +#include <string.h> + + +// Active log levels, indexed by log component. +_RKlcl_level_narrow_t _RKlcl_component_level[_RKlcl_component_t_count]; + +// Log component identifiers, indexed by log component. +const char * const _RKlcl_component_identifier[] = { +# define _RKlcl_component(_identifier, _header, _name) \ + #_identifier, +# include "lcl_config_components_RK.h" +# undef _RKlcl_component +}; + +// Log component headers, indexed by log component. +const char * const _RKlcl_component_header[] = { +# define _RKlcl_component(_identifier, _header, _name) \ + _header, +# include "lcl_config_components_RK.h" +# undef _RKlcl_component +}; + +// Log component names, indexed by log component. +const char * const _RKlcl_component_name[] = { +# define _RKlcl_component(_identifier, _header, _name) \ + _name, +# include "lcl_config_components_RK.h" +# undef _RKlcl_component +}; + +// Log level headers, indexed by log level. +const char * const _RKlcl_level_header[] = { + "-", + "CRITICAL", + "ERROR", + "WARNING", + "INFO", + "DEBUG", + "TRACE" +}; +const char * const _RKlcl_level_header_1[] = { + "-", + "C", + "E", + "W", + "I", + "D", + "T" +}; +const char * const _RKlcl_level_header_3[] = { + "---", + "CRI", + "ERR", + "WRN", + "INF", + "DBG", + "TRC" +}; + +// Log level names, indexed by log level. +const char * const _RKlcl_level_name[] = { + "Off", + "Critical", + "Error", + "Warning", + "Info", + "Debug", + "Trace" +}; + +// Version. +#define __RKlcl_version_to_string( _text) __RKlcl_version_to_string0(_text) +#define __RKlcl_version_to_string0(_text) #_text +const char * const _RKlcl_version = __RKlcl_version_to_string(_RKLCL_VERSION_MAJOR) + "." __RKlcl_version_to_string(_RKLCL_VERSION_MINOR) + "." __RKlcl_version_to_string(_RKLCL_VERSION_BUILD) + "" _RKLCL_VERSION_SUFFIX; + +// Configures the given log level for the given log component. +uint32_t RKlcl_configure_by_component(_RKlcl_component_t component, _RKlcl_level_t level) { + // unsupported level, clip to last level + if (level > _RKlcl_level_t_last) { + level = _RKlcl_level_t_last; + } + + // configure the component + if (component <= _RKlcl_component_t_last) { + _RKlcl_component_level[component] = level; + return 1; + } + + return 0; +} + +// Configures the given log level for the given log component(s). +static uint32_t _RKlcl_configure_by_text(uint32_t count, const char * const *texts, + _RKlcl_level_narrow_t *levels, const char *text, + _RKlcl_level_t level) { + // no text given, quit + if (text == NULL || text[0] == '\0') { + return 0; + } + + // unsupported level, clip to last level + if (level > _RKlcl_level_t_last) { + level = _RKlcl_level_t_last; + } + + // configure the components + uint32_t num_configured = 0; + size_t text_len = strlen(text); + if (text[text_len-1] == '*') { + // text ends with '*', wildcard suffix was specified + text_len--; + for (uint32_t c = 0; c < count; c++) { + if (strncmp(text, texts[c], text_len) == 0) { + levels[c] = level; + num_configured++; + } + } + } else { + // no wildcard suffix was specified + for (uint32_t c = 0; c < count; c++) { + if (strcmp(text, texts[c]) == 0) { + levels[c] = level; + num_configured++; + } + } + } + return num_configured; +} + +// Configures the given log level for the given log component(s) by identifier. +uint32_t RKlcl_configure_by_identifier(const char *identifier, _RKlcl_level_t level) { + return _RKlcl_configure_by_text(_RKlcl_component_t_count, _RKlcl_component_identifier, + _RKlcl_component_level, identifier, level); +} + +// Configures the given log level for the given log component(s) by header. +uint32_t RKlcl_configure_by_header(const char *header, _RKlcl_level_t level) { + return _RKlcl_configure_by_text(_RKlcl_component_t_count, _RKlcl_component_header, + _RKlcl_component_level, header, level); +} + +// Configures the given log level for the given log component(s) by name. +uint32_t RKlcl_configure_by_name(const char *name, _RKlcl_level_t level) { + return _RKlcl_configure_by_text(_RKlcl_component_t_count, _RKlcl_component_name, + _RKlcl_component_level, name, level); +} + diff --git a/Unit-2-Journal/Pods/SOCKit/LICENSE b/Unit-2-Journal/Pods/SOCKit/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/Unit-2-Journal/Pods/SOCKit/LICENSE @@ -0,0 +1,202 @@ + + 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/Unit-2-Journal/Pods/SOCKit/README.mdown b/Unit-2-Journal/Pods/SOCKit/README.mdown new file mode 100644 index 0000000..8f66367 --- /dev/null +++ b/Unit-2-Journal/Pods/SOCKit/README.mdown @@ -0,0 +1,94 @@ +SOCKit +====== + +String <-> Object Coding for Objective-C. Rhymes with "socket". + +With SOCKit and [SOCPattern][] you can easily transform objects into strings and vice versa. + +### Two examples, cuz devs love examples. + +```obj-c +SOCPattern* pattern = [SOCPattern patternWithString:@"api.github.com/users/:username/gists"]; +[pattern stringFromObject:githubUser]; +> @"api.github.com/users/jverkoey/gists" +``` + +```obj-c +SOCPattern* pattern = [SOCPattern patternWithString:@"github.com/:username"]; +[pattern performSelector:@selector(initWithUsername:) onObject:[GithubUser class] sourceString:@"github.com/jverkoey"]; +> <GithubUser> username = jverkoey +``` + +### Hey, this is really similar to defining routes in Rails. + +Damn straight it is. + +### And isn't this kind of like Three20's navigator? + +Except hella better. It's also entirely incompatible with Three20 routes. This kinda blows if +you've already invested a ton of energy into Three20's routing tech, but here are a few reasons +why SOCKit is better: + +1. *Selectors are not defined in the pattern*. The fact that Three20 requires that you define + selectors in the pattern is scary as hell: rename a method in one of your controllers and + your URL routing will silently break. No warnings, just broke. With SOCKit you define the + selectors using @selector notation and SOCKit infers the parameters from the pattern definition. + This way you can depend on the compiler to fire a warning if the selector isn't defined anywhere. +2. *Parameters are encoded using true KVC*. You now have full access to [KVC collection operators]. +3. *SOCKit is fully unit tested and documented*. Not much more to be said here. + +Here's a quick breakdown of the differences between Three20 and SOCKit, if SOCKit were used as +the backend for Three20's URL routing. + +``` +Three20: [map from:@"twitter://tweet/(initWithTweetId:)" toViewController:[TweetController class]]; +SOCKit: [map from:@"twitter://tweet/:id" toViewController:[TweetController class] selector:@selector(initWithTweetId:)]; + +Three20: [map from:[Tweet class] name:@"thread" toURL:@"twitter://tweet/(id)/thread"]; +SOCKit: [map from:[Tweet class] name:@"thread" toURL:@"twitter://tweet/:id/thread"]; +``` + +## Where it's being used + +SOCKit is a sibling project to [Nimbus][], a light-weight and modular framework that makes it +easy to blaze a trail with your iOS apps. Nimbus will soon be using SOCKit in a re-envisioning +of Three20's navigator. + +Users of RESTKit will notice that SOCKit provides similar functionality to RESTKit's +[RKMakePathWithObject][]. In fact, both `RKMakePathWithObject` and the underlying `RKPathMatcher` +class rely on SOCKit behind the scenes. + +## Adding SOCKit to your project + +This lightweight library is built to be a dead-simple airdrop directly into your project. Contained +in SOCKit.h and SOCKit.m is all of the functionality you will need in order to start mapping +Strings <-> Objects. To start using SOCKit, simply download or `git checkout` the SOCKit repo +and drag SOCKit.h and SOCKit.m to your project's source tree. `#import "SOCKit.h"` where you want +to use SOCKit and start pumping out some mad String <-> Object coding. + +## Some cool things + +When coding objects into strings you define parameters by prefixing the property name with a colon. +So if you have a Tweet object with a `tweetId` property, the pattern parameter name would look like +`:tweetId`. Simple enough. + +But now let's say you have a Tweet object that contains a reference to a TwitterUser object via +the `user` property, and that TwitterUser object has a `username` property. Check this out: +`:user.username`. If this was one of my tweets and I encoded the Tweet object using a SOCKit +pattern the resulting string would be `@"featherless"`. KVC rocks. + +## Learning more + +In-depth documentation can be found in the [SOCKit.h][SOCPattern] header file. + +## Contributing + +If you find a bug in SOCKit please file an issue on the Github [SOCKit issue tracker][]. Even +better: if you have a solution for the bug then fork the project and make a pull request. + +[SOCKit issue tracker]: https://github.com/jverkoey/sockit/issues +[SOCPattern]: https://github.com/jverkoey/sockit/blob/master/SOCKit.h +[KVC collection operators]: http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueCoding/Articles/CollectionOperators.html#//apple_ref/doc/uid/20002176-BAJEAIEE +[Nimbus]: http://jverkoey.github.com/nimbus +[RESTKit]: https://github.com/RestKit/RestKit +[RKMakePathWithObject]: https://github.com/RestKit/RestKit/blob/master/Code/Network/RKClient.m#L37 \ No newline at end of file diff --git a/Unit-2-Journal/Pods/SOCKit/SOCKit.h b/Unit-2-Journal/Pods/SOCKit/SOCKit.h new file mode 100644 index 0000000..57fcf44 --- /dev/null +++ b/Unit-2-Journal/Pods/SOCKit/SOCKit.h @@ -0,0 +1,214 @@ +// +// Copyright 2011-2012 Jeff Verkoeyen +// +// 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 <Foundation/Foundation.h> + +/** + * String <-> Object Coding. + * + * Code information from strings into objects and vice versa. + * + * A pattern is a string with parameter names prefixed by colons (":"). + * An example of a pattern string with one parameter named :username is: + * api.github.com/users/:username/gists + * + * Patterns, once created, can be used to efficiently turn objects into strings and + * vice versa. Respectively, these techniques are referred to as inbound and outbound. + * + * Inbound examples (creating strings from objects): + * + * pattern: api.github.com/users/:username/gists + * > [pattern stringFromObject:[GithubUser userWithUsername:@"jverkoey"]]; + * returns: api.github.com/users/jverkoey/gists + * + * pattern: api.github.com/repos/:username/:repo/issues + * > [pattern stringFromObject:[GithubRepo repoWithUsername:@"jverkoey" repo:@"sockit"]]; + * returns: api.github.com/repos/jverkoey/sockit/issues + * + * Outbound examples (performing selectors on objects with values from given strings): + * + * pattern: github.com/:username + * > [pattern performSelector:@selector(initWithUsername:) onObject:[GithubUser class] sourceString:@"github.com/jverkoey"]; + * returns: an allocated, initialized, and autoreleased GithubUser object with @"jverkoey" passed + * to the initWithUsername: method. + * + * pattern: github.com/:username/:repo + * > [pattern performSelector:@selector(initWithUsername:repoName:) onObject:[GithubUser class] sourceString:@"github.com/jverkoey/sockit"]; + * returns: an allocated, initialized, and autoreleased GithubUser object with @"jverkoey" and + * @"sockit" passed to the initWithUsername:repoName: method. + * + * pattern: github.com/:username + * > [pattern performSelector:@selector(setUsername:) onObject:githubUser sourceString:@"github.com/jverkoey"]; + * returns: nil because setUsername: does not have a return value. githubUser's username property + * is now @"jverkoey". + * + * Note 1: Parameters must be separated by string literals + * + * Pattern parameters must be separated by some sort of non-parameter character. + * This means that you can't define a pattern like :user:repo. This is because when we + * get around to wanting to decode the string back into an object we need some sort of + * delimiter between the parameters. + * + * Note 2: When colons aren't seen as parameters + * + * If you have colons in your text that aren't followed by a valid parameter name then the + * colon will be treated as static text. This is handy if you're defining a URL pattern. + * For example: @"http://github.com/:user" only has one parameter, :user. The ":" in http:// + * is treated as a string literal and not a parameter. + * + * Note 3: Escaping KVC characters + * + * If you need to use KVC characters in SOCKit patterns as literal string tokens and not + * treated with KVC then you must escape the characters using double backslashes. For example, + * @"/:userid.json" would create a pattern that uses KVC to access the json property of the + * username value. In this case, however, we wish to interpret the ".json" portion as a + * static string. + * + * In order to do so we must escape the "." using a double backslash: "\\.". For example: + * @"/:userid\\.json". This makes it possible to create strings of the form @"/3.json". + * This also works with outbound parameters, so that the string @"/3.json" can + * be used with the pattern to invoke a selector with "3" as the first argument rather + * than "3.json". + * + * You can escape the following characters: + * ":" => @"\\:" + * "@" => @"\\@" + * "." => @"\\." + * "\\" => @"\\\\" + * + * Note 4: Allocating new objects with outbound patterns + * + * SOCKit will allocate a new object of a given class if + * performSelector:onObject:sourceString: is provided a selector with "init" as a prefix + * and object is a Class. E.g. [GithubUser class]. + */ +@interface SOCPattern : NSObject { +@private + NSString* _patternString; + NSArray* _tokens; + NSArray* _parameters; +} + +/** + * Initializes a newly allocated pattern object with the given pattern string. + * + * Designated initializer. + */ +- (id)initWithString:(NSString *)string; ++ (id)patternWithString:(NSString *)string; + +/** + * Returns YES if the given string can be used with performSelector:onObject:sourceString: or + * extractParameterKeyValuesFromSourceString:. + * + * A matching string must exactly match all of the static portions of the pattern and provide + * values for each of the parameters. + * + * @param string A string that may or may not conform to this pattern. + * @returns YES if the given string conforms to this pattern, NO otherwise. + */ +- (BOOL)stringMatches:(NSString *)string; + +/** + * Performs the given selector on the object with the matching parameter values from sourceString. + * + * @param selector The selector to perform on the object. If there aren't enough + * parameters in the pattern then the excess parameters in the selector + * will be nil. + * @param object The object to perform the selector on. + * @param sourceString A string that conforms to this pattern. The parameter values from + * this string are used as the arguments when performing the selector + * on the object. + * @returns The initialized, autoreleased object if the selector is an initializer + * (prefixed with "init") and object is a Class, otherwise the return value from + * invoking the selector. + */ +- (id)performSelector:(SEL)selector onObject:(id)object sourceString:(NSString *)sourceString; + +/** + * Extracts the matching parameter values from sourceString into an NSDictionary. + * + * @param sourceString A string that conforms to this pattern. The parameter values from + * this string are extracted into the NSDictionary. + * @returns A dictionary of key value pairs. All values will be NSStrings. The keys will + * correspond to the pattern's parameter names. Duplicate key values will be + * overwritten by later values. + */ +- (NSDictionary *)parameterDictionaryFromSourceString:(NSString *)sourceString; + +/** + * Returns a string with the parameters of this pattern replaced using Key-Value Coding (KVC) + * on the receiving object. + * + * Parameters of the pattern are evaluated using valueForKeyPath:. See Apple's KVC documentation + * for more details. + * + * Key-Value Coding Fundamentals: + * http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueCoding/Articles/BasicPrinciples.html#//apple_ref/doc/uid/20002170-BAJEAIEE + * + * Collection Operators: + * http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueCoding/Articles/CollectionOperators.html#//apple_ref/doc/uid/20002176-BAJEAIEE + * + * @param object The object whose properties will be used to replace the parameters in + * the pattern. + * @returns A string with the pattern parameters replaced by the object property values. + * @see stringFromObject:withBlock: + */ +- (NSString *)stringFromObject:(id)object; + +#if NS_BLOCKS_AVAILABLE +/** + * Returns a string with the parameters of this pattern replaced using Key-Value Coding (KVC) + * on the receiving object, and the result is (optionally) modified or encoded by the block. + * + * For example, consider we have individual object values that need percent escapes added to them, + * while preserving the slashes, question marks, and ampersands of a typical resource path. + * Using blocks, this is very succinct: + * + * @code + * NSDictionary* person = [NSDictionary dictionaryWithObjectsAndKeys: + * @"SECRET|KEY",@"password", + * @"Joe Bob Briggs", @"name", nil]; + * SOCPattern* soc = [SOCPattern patternWithString:@"/people/:name/:password"]; + * NSString* actualPath = [soc stringFromObject:person withBlock:^(NSString *)propertyValue) { + * return [propertyValue stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + * } + * NSString* expectedPath = @"/people/Joe%20Bob%20Briggs/SECRET%7CKEY"; + * @endcode + * + * @param object The object whose properties will be used to replace the parameters in + * the pattern. + * @param block An optional block (may be nil) that modifies or encodes each + * property value string. The block accepts one parameter - the property + * value as a string - and should return the modified property string. + * @returns A string with the pattern parameters replaced by the block-processed object + * property values. + * @see stringFromObject: + */ +- (NSString *)stringFromObject:(id)object withBlock:(NSString*(^)(NSString*))block; +#endif + +@end + +/** + * A convenience method for: + * + * SOCPattern* pattern = [SOCPattern patternWithString:string]; + * NSString* result = [pattern stringFromObject:object]; + * + * @see documentation for stringFromObject: + */ +NSString* SOCStringFromStringWithObject(NSString* string, id object); diff --git a/Unit-2-Journal/Pods/SOCKit/SOCKit.m b/Unit-2-Journal/Pods/SOCKit/SOCKit.m new file mode 100644 index 0000000..59e4a65 --- /dev/null +++ b/Unit-2-Journal/Pods/SOCKit/SOCKit.m @@ -0,0 +1,543 @@ +// +// Copyright 2011-2012 Jeff Verkoeyen +// +// 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 "SOCKit.h" + +#import <objc/runtime.h> +#import <assert.h> + +typedef enum { + SOCArgumentTypeNone, + SOCArgumentTypePointer, + SOCArgumentTypeBool, + SOCArgumentTypeInteger, + SOCArgumentTypeLongLong, + SOCArgumentTypeFloat, + SOCArgumentTypeDouble, +} SOCArgumentType; + +SOCArgumentType SOCArgumentTypeForTypeAsChar(char argType); +NSString* kTemporaryBackslashToken = @"/backslash/"; + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////// +@interface SOCParameter : NSObject { +@private + NSString* _string; +} + +- (id)initWithString:(NSString *)string; ++ (id)parameterWithString:(NSString *)string; + +- (NSString *)string; + +@end + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////// +@interface SOCPattern() + +- (void)_compilePattern; + +@end + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////// +@implementation SOCPattern + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (void)dealloc { + [_patternString release]; _patternString = nil; + [_tokens release]; _tokens = nil; + [_parameters release]; _parameters = nil; + [super dealloc]; +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (id)initWithString:(NSString *)string { + if ((self = [super init])) { + _patternString = [string copy]; + + [self _compilePattern]; + } + return self; +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// ++ (id)patternWithString:(NSString *)string { + return [[[self alloc] initWithString:string] autorelease]; +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - Pattern Compilation + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (NSCharacterSet *)nonParameterCharacterSet { + NSMutableCharacterSet* parameterCharacterSet = [NSMutableCharacterSet alphanumericCharacterSet]; + [parameterCharacterSet addCharactersInString:@".@_"]; + NSCharacterSet* nonParameterCharacterSet = [parameterCharacterSet invertedSet]; + return nonParameterCharacterSet; +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (void)_compilePattern { + if ([_patternString length] == 0) { + return; + } + + NSMutableArray* tokens = [[NSMutableArray alloc] init]; + NSMutableArray* parameters = [[NSMutableArray alloc] init]; + + NSCharacterSet* nonParameterCharacterSet = [self nonParameterCharacterSet]; + + // Turn escaped backslashes into a special backslash token to avoid \\. being interpreted as + // `\` and `\.` rather than `\\` and `.`. + NSString* escapedPatternString = _patternString; + if ([escapedPatternString rangeOfString:@"\\\\"].length > 0) { + escapedPatternString = [escapedPatternString stringByReplacingOccurrencesOfString: @"\\\\" + withString: kTemporaryBackslashToken]; + } + + // Scan through the string, creating tokens that are either strings or parameters. + // Parameters are prefixed with ":". + NSScanner* scanner = [NSScanner scannerWithString:escapedPatternString]; + + // NSScanner skips whitespace and newlines by default (not ideal!). + [scanner setCharactersToBeSkipped:nil]; + + while (![scanner isAtEnd]) { + NSString* token = nil; + [scanner scanUpToString:@":" intoString:&token]; + + if ([token length] > 0) { + if (![token hasSuffix:@"\\"]) { + // Add this static text to the token list. + [tokens addObject:token]; + + } else { + // This token is escaping the next colon, so we skip the parameter creation. + [tokens addObject:[token stringByAppendingString:@":"]]; + + // Skip the colon. + [scanner setScanLocation:[scanner scanLocation] + 1]; + continue; + } + } + + if (![scanner isAtEnd]) { + // Skip the colon. + [scanner setScanLocation:[scanner scanLocation] + 1]; + + // Scanning won't modify the token if there aren't any characters to be read, so we must + // clear it before scanning again. + token = nil; + [scanner scanUpToCharactersFromSet:nonParameterCharacterSet intoString:&token]; + + if ([token length] > 0) { + // Only add parameters that have valid names. + SOCParameter* parameter = [SOCParameter parameterWithString:token]; + [parameters addObject:parameter]; + [tokens addObject:parameter]; + + } else { + // Allows for http:// to get by without creating a parameter. + [tokens addObject:@":"]; + } + } + } + + // This is an outbound pattern. + if ([parameters count] > 0) { + BOOL lastWasParameter = NO; + for (id token in tokens) { + if ([token isKindOfClass:[SOCParameter class]]) { + NSAssert(!lastWasParameter, @"Parameters must be separated by non-parameter characters."); + lastWasParameter = YES; + + } else { + lastWasParameter = NO; + } + } + } + + [_tokens release]; + _tokens = [tokens copy]; + [_parameters release]; _parameters = nil; + if ([parameters count] > 0) { + _parameters = [parameters copy]; + } + [tokens release]; tokens = nil; + [parameters release]; parameters = nil; +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (NSString *)_stringFromEscapedToken:(NSString *)token { + if ([token rangeOfString:@"\\"].length == 0 + && [token rangeOfString:kTemporaryBackslashToken].length == 0) { + // The common case (faster and creates fewer autoreleased strings). + return token; + + } else { + // Escaped characters may exist. + // Create a mutable copy so that we don't excessively create new autoreleased strings. + NSMutableString* mutableToken = [token mutableCopy]; + [mutableToken replaceOccurrencesOfString:@"\\." withString:@"." options:0 range:NSMakeRange(0, [mutableToken length])]; + [mutableToken replaceOccurrencesOfString:@"\\@" withString:@"@" options:0 range:NSMakeRange(0, [mutableToken length])]; + [mutableToken replaceOccurrencesOfString:@"\\:" withString:@":" options:0 range:NSMakeRange(0, [mutableToken length])]; + [mutableToken replaceOccurrencesOfString:kTemporaryBackslashToken withString:@"\\" options:0 range:NSMakeRange(0, [mutableToken length])]; + return [mutableToken autorelease]; + } +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - Public Methods + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (BOOL)gatherParameterValues:(NSArray**)pValues fromString:(NSString *)string { + const NSInteger stringLength = [string length]; + NSInteger validUpUntil = 0; + NSInteger matchingTokens = 0; + + NSMutableArray* values = nil; + if (nil != pValues) { + values = [NSMutableArray array]; + } + + NSInteger tokenIndex = 0; + for (id token in _tokens) { + + if ([token isKindOfClass:[NSString class]]) { + // Replace the escaped characters in the token before we start comparing the string. + token = [self _stringFromEscapedToken:token]; + + NSInteger tokenLength = [token length]; + if (validUpUntil + tokenLength > stringLength) { + // There aren't enough characters in the string to satisfy this token. + break; + } + if (![[string substringWithRange:NSMakeRange(validUpUntil, tokenLength)] + isEqualToString:token]) { + // The tokens don't match up. + break; + } + + // The string token matches. + validUpUntil += tokenLength; + ++matchingTokens; + + } else { + NSInteger parameterLocation = validUpUntil; + + // Look ahead for the next string token match. + if (tokenIndex + 1 < [_tokens count]) { + NSString* nextToken = [self _stringFromEscapedToken:[_tokens objectAtIndex:tokenIndex + 1]]; + NSAssert([nextToken isKindOfClass:[NSString class]], @"The token following a parameter must be a string."); + + NSRange nextTokenRange = [string rangeOfString:nextToken options:0 range:NSMakeRange(validUpUntil, stringLength - validUpUntil)]; + if (nextTokenRange.length == 0) { + // Couldn't find the next token. + break; + } + if (nextTokenRange.location == validUpUntil) { + // This parameter is empty. + break; + } + + validUpUntil = nextTokenRange.location; + ++matchingTokens; + + } else { + // Anything goes until the end of the string then. + if (validUpUntil == stringLength) { + // The last parameter is empty. + break; + } + + validUpUntil = stringLength; + ++matchingTokens; + } + + NSRange parameterRange = NSMakeRange(parameterLocation, validUpUntil - parameterLocation); + [values addObject:[string substringWithRange:parameterRange]]; + } + + ++tokenIndex; + } + + if (nil != pValues) { + *pValues = [[values copy] autorelease]; + } + + return validUpUntil == stringLength && matchingTokens == [_tokens count]; +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (BOOL)stringMatches:(NSString *)string { + return [self gatherParameterValues:nil fromString:string]; +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (void)setArgument:(NSString*)text withType:(SOCArgumentType)type atIndex:(NSInteger)index forInvocation:(NSInvocation*)invocation { + // There are two implicit arguments with an invocation. + index+=2; + + switch (type) { + case SOCArgumentTypeNone: { + break; + } + case SOCArgumentTypeInteger: { + int val = [text intValue]; + [invocation setArgument:&val atIndex:index]; + break; + } + case SOCArgumentTypeLongLong: { + long long val = [text longLongValue]; + [invocation setArgument:&val atIndex:index]; + break; + } + case SOCArgumentTypeFloat: { + float val = [text floatValue]; + [invocation setArgument:&val atIndex:index]; + break; + } + case SOCArgumentTypeDouble: { + double val = [text doubleValue]; + [invocation setArgument:&val atIndex:index]; + break; + } + case SOCArgumentTypeBool: { + BOOL val = [text boolValue]; + [invocation setArgument:&val atIndex:index]; + break; + } + default: { + [invocation setArgument:&text atIndex:index]; + break; + } + } +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (void)setArgumentsFromValues:(NSArray *)values forInvocation:(NSInvocation *)invocation { + Method method = class_getInstanceMethod([invocation.target class], invocation.selector); + NSAssert(nil != method, @"The method must exist with the given invocation target."); + + for (NSInteger ix = 0; ix < [values count]; ++ix) { + NSString* value = [values objectAtIndex:ix]; + + char argType[4]; + method_getArgumentType(method, (unsigned int) ix + 2, argType, sizeof(argType) / sizeof(argType[0])); + SOCArgumentType type = SOCArgumentTypeForTypeAsChar(argType[0]); + + [self setArgument:value withType:type atIndex:ix forInvocation:invocation]; + } +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (id)performSelector:(SEL)selector onObject:(id)object sourceString:(NSString *)sourceString { + BOOL isInitializer = [NSStringFromSelector(selector) hasPrefix:@"init"] && [object class] == object; + + if (isInitializer) { + object = [[object alloc] autorelease]; + } + + NSArray* values = nil; + BOOL succeeded = [self gatherParameterValues:&values fromString:sourceString]; + NSAssert(succeeded, @"The pattern can't be used with this string."); + + id returnValue = nil; + + if (succeeded) { + NSMethodSignature* sig = [object methodSignatureForSelector:selector]; + NSAssert(nil != sig, @"%@ does not respond to selector: '%@'", object, NSStringFromSelector(selector)); + NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:sig]; + [invocation setTarget:object]; + [invocation setSelector:selector]; + [self setArgumentsFromValues:values forInvocation:invocation]; + [invocation invoke]; + + if (sig.methodReturnLength) { + [invocation getReturnValue:&returnValue]; + } + } + + return returnValue; +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (NSDictionary *)parameterDictionaryFromSourceString:(NSString *)sourceString { + NSMutableDictionary* kvs = [[NSMutableDictionary alloc] initWithCapacity:[_parameters count]]; + + NSArray* values = nil; + BOOL succeeded = [self gatherParameterValues:&values fromString:sourceString]; + NSAssert(succeeded, @"The pattern can't be used with this string."); + + NSDictionary* result = nil; + + if (succeeded) { + for (NSInteger ix = 0; ix < [values count]; ++ix) { + SOCParameter* parameter = [_parameters objectAtIndex:ix]; + id value = [values objectAtIndex:ix]; + [kvs setObject:value forKey:parameter.string]; + } + + result = [[kvs copy] autorelease]; + [kvs release]; kvs = nil; + } + + return result; +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (NSString *)_stringWithParameterValues:(NSDictionary *)parameterValues { + NSMutableString* accumulator = [[NSMutableString alloc] initWithCapacity:[_patternString length]]; + + for (id token in _tokens) { + if ([token isKindOfClass:[NSString class]]) { + [accumulator appendString:[self _stringFromEscapedToken:token]]; + + } else { + SOCParameter* parameter = token; + [accumulator appendString:[parameterValues objectForKey:parameter.string]]; + } + } + + NSString* result = nil; + result = [[accumulator copy] autorelease]; + [accumulator release]; accumulator = nil; + return result; +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +- (NSString *)stringFromObject:(id)object { + if ([_tokens count] == 0) { + return @""; + } + NSMutableDictionary* parameterValues = + [NSMutableDictionary dictionaryWithCapacity:[_parameters count]]; + for (SOCParameter* parameter in _parameters) { + NSString* stringValue = [NSString stringWithFormat:@"%@", [object valueForKeyPath:parameter.string]]; + [parameterValues setObject:stringValue forKey:parameter.string]; + } + return [self _stringWithParameterValues:parameterValues]; +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +#if NS_BLOCKS_AVAILABLE +- (NSString *)stringFromObject:(id)object withBlock:(NSString *(^)(NSString*))block { + if ([_tokens count] == 0) { + return @""; + } + NSMutableDictionary* parameterValues = [NSMutableDictionary dictionaryWithCapacity:[_parameters count]]; + for (SOCParameter* parameter in _parameters) { + NSString* stringValue = [NSString stringWithFormat:@"%@", [object valueForKeyPath:parameter.string]]; + if (nil != block) { + stringValue = block(stringValue); + } + if (nil != stringValue) { + [parameterValues setObject:stringValue forKey:parameter.string]; + } + } + return [self _stringWithParameterValues:parameterValues]; +} +#endif + +@end + +/////////////////////////////////////////////////////////////////////////////////////////////////// +@implementation SOCParameter + +- (void)dealloc { + [_string release]; _string = nil; + [super dealloc]; +} + +- (id)initWithString:(NSString *)string { + if ((self = [super init])) { + _string = [string copy]; + } + return self; +} + ++ (id)parameterWithString:(NSString *)string { + return [[[self alloc] initWithString:string] autorelease]; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"Parameter: %@", _string]; +} + +- (NSString *)string { + return [[_string retain] autorelease]; +} + +@end + +/////////////////////////////////////////////////////////////////////////////////////////////////// +SOCArgumentType SOCArgumentTypeForTypeAsChar(char argType) { + if (argType == 'c' || argType == 'i' || argType == 's' || argType == 'l' || argType == 'C' + || argType == 'I' || argType == 'S' || argType == 'L') { + return SOCArgumentTypeInteger; + + } else if (argType == 'q' || argType == 'Q') { + return SOCArgumentTypeLongLong; + + } else if (argType == 'f') { + return SOCArgumentTypeFloat; + + } else if (argType == 'd') { + return SOCArgumentTypeDouble; + + } else if (argType == 'B') { + return SOCArgumentTypeBool; + + } else { + return SOCArgumentTypePointer; + } +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// +NSString* SOCStringFromStringWithObject(NSString* string, id object) { + SOCPattern* pattern = [[SOCPattern alloc] initWithString:string]; + NSString* result = [pattern stringFromObject:object]; + [pattern release]; + return result; +} diff --git a/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-Private.xcconfig new file mode 100644 index 0000000..926c13c --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-Private.xcconfig @@ -0,0 +1,6 @@ +#include "AFNetworking.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AFNetworking" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" +OTHER_LDFLAGS = ${AFNETWORKING_OTHER_LDFLAGS} +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-dummy.m b/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-dummy.m new file mode 100644 index 0000000..6a29cf8 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-dummy.m @@ -0,0 +1,5 @@ +#import <Foundation/Foundation.h> +@interface PodsDummy_AFNetworking : NSObject +@end +@implementation PodsDummy_AFNetworking +@end diff --git a/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-prefix.pch b/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-prefix.pch new file mode 100644 index 0000000..8fb0298 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-prefix.pch @@ -0,0 +1,15 @@ +#ifdef __OBJC__ +#import <UIKit/UIKit.h> +#endif + +#import <Availability.h> + +#if __IPHONE_OS_VERSION_MIN_REQUIRED + #import <SystemConfiguration/SystemConfiguration.h> + #import <MobileCoreServices/MobileCoreServices.h> + #import <Security/Security.h> +#else + #import <SystemConfiguration/SystemConfiguration.h> + #import <CoreServices/CoreServices.h> + #import <Security/Security.h> +#endif diff --git a/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig b/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig new file mode 100644 index 0000000..b0b2d52 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig @@ -0,0 +1 @@ +AFNETWORKING_OTHER_LDFLAGS = -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-Private.xcconfig new file mode 100644 index 0000000..7752c7a --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-Private.xcconfig @@ -0,0 +1,5 @@ +#include "ISO8601DateFormatterValueTransformer.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-dummy.m b/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-dummy.m new file mode 100644 index 0000000..8a45508 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-dummy.m @@ -0,0 +1,5 @@ +#import <Foundation/Foundation.h> +@interface PodsDummy_ISO8601DateFormatterValueTransformer : NSObject +@end +@implementation PodsDummy_ISO8601DateFormatterValueTransformer +@end diff --git a/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch b/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch new file mode 100644 index 0000000..aa992a4 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import <UIKit/UIKit.h> +#endif + diff --git a/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.xcconfig b/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.xcconfig new file mode 100644 index 0000000..e69de29 diff --git a/Unit-2-Journal/Pods/Target Support Files/Parse/Parse-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Parse/Parse-Private.xcconfig new file mode 100644 index 0000000..98561b5 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/Parse/Parse-Private.xcconfig @@ -0,0 +1,6 @@ +#include "Parse.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Parse" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" +OTHER_LDFLAGS = ${PARSE_OTHER_LDFLAGS} +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Parse/Parse-dummy.m b/Unit-2-Journal/Pods/Target Support Files/Parse/Parse-dummy.m new file mode 100644 index 0000000..3f17a64 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/Parse/Parse-dummy.m @@ -0,0 +1,5 @@ +#import <Foundation/Foundation.h> +@interface PodsDummy_Parse : NSObject +@end +@implementation PodsDummy_Parse +@end diff --git a/Unit-2-Journal/Pods/Target Support Files/Parse/Parse-prefix.pch b/Unit-2-Journal/Pods/Target Support Files/Parse/Parse-prefix.pch new file mode 100644 index 0000000..aa992a4 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/Parse/Parse-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import <UIKit/UIKit.h> +#endif + diff --git a/Unit-2-Journal/Pods/Target Support Files/Parse/Parse.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Parse/Parse.xcconfig new file mode 100644 index 0000000..4b7b805 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/Parse/Parse.xcconfig @@ -0,0 +1 @@ +PARSE_OTHER_LDFLAGS = -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -weak_framework "Accounts" -weak_framework "Social" \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-Private.xcconfig new file mode 100644 index 0000000..1e7eaa9 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-Private.xcconfig @@ -0,0 +1,5 @@ +#include "RKValueTransformers.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RKValueTransformers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-dummy.m b/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-dummy.m new file mode 100644 index 0000000..792c92a --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-dummy.m @@ -0,0 +1,5 @@ +#import <Foundation/Foundation.h> +@interface PodsDummy_RKValueTransformers : NSObject +@end +@implementation PodsDummy_RKValueTransformers +@end diff --git a/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch b/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch new file mode 100644 index 0000000..aa992a4 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import <UIKit/UIKit.h> +#endif + diff --git a/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers.xcconfig b/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers.xcconfig new file mode 100644 index 0000000..e69de29 diff --git a/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-Private.xcconfig new file mode 100644 index 0000000..50069d4 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-Private.xcconfig @@ -0,0 +1,6 @@ +#include "RestKit.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RestKit" "${PODS_ROOT}/Headers/Private/RestKit/Network" "${PODS_ROOT}/Headers/Private/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Private/RestKit/Support" "${PODS_ROOT}/Headers/Private/RestKit/Testing" "${PODS_ROOT}/Headers/Private/Vendor/LibComponentLogging/Core" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" +OTHER_LDFLAGS = ${RESTKIT_OTHER_LDFLAGS} +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-dummy.m b/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-dummy.m new file mode 100644 index 0000000..61870a2 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-dummy.m @@ -0,0 +1,5 @@ +#import <Foundation/Foundation.h> +@interface PodsDummy_RestKit : NSObject +@end +@implementation PodsDummy_RestKit +@end diff --git a/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-prefix.pch b/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-prefix.pch new file mode 100644 index 0000000..c2ad09f --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-prefix.pch @@ -0,0 +1,20 @@ +#ifdef __OBJC__ +#import <UIKit/UIKit.h> +#endif + +#import <Availability.h> + +#define _AFNETWORKING_PIN_SSL_CERTIFICATES_ + +#if __IPHONE_OS_VERSION_MIN_REQUIRED + #import <SystemConfiguration/SystemConfiguration.h> + #import <MobileCoreServices/MobileCoreServices.h> + #import <Security/Security.h> +#else + #import <SystemConfiguration/SystemConfiguration.h> + #import <CoreServices/CoreServices.h> + #import <Security/Security.h> +#endif +#if __has_include("RKCoreData.h") + #import <CoreData/CoreData.h> +#endif diff --git a/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit.xcconfig new file mode 100644 index 0000000..65ed0d2 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit.xcconfig @@ -0,0 +1 @@ +RESTKIT_OTHER_LDFLAGS = -framework "CFNetwork" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-Private.xcconfig new file mode 100644 index 0000000..42b6200 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-Private.xcconfig @@ -0,0 +1,5 @@ +#include "SOCKit.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SOCKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-dummy.m b/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-dummy.m new file mode 100644 index 0000000..54b43ff --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-dummy.m @@ -0,0 +1,5 @@ +#import <Foundation/Foundation.h> +@interface PodsDummy_SOCKit : NSObject +@end +@implementation PodsDummy_SOCKit +@end diff --git a/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-prefix.pch b/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-prefix.pch new file mode 100644 index 0000000..aa992a4 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import <UIKit/UIKit.h> +#endif + diff --git a/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit.xcconfig new file mode 100644 index 0000000..e69de29 diff --git a/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-Private.xcconfig new file mode 100644 index 0000000..b8f7e46 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-Private.xcconfig @@ -0,0 +1,5 @@ +#include "TransitionKit.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/TransitionKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-dummy.m b/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-dummy.m new file mode 100644 index 0000000..345483c --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-dummy.m @@ -0,0 +1,5 @@ +#import <Foundation/Foundation.h> +@interface PodsDummy_TransitionKit : NSObject +@end +@implementation PodsDummy_TransitionKit +@end diff --git a/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-prefix.pch b/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-prefix.pch new file mode 100644 index 0000000..aa992a4 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import <UIKit/UIKit.h> +#endif + diff --git a/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit.xcconfig new file mode 100644 index 0000000..e69de29 diff --git a/Unit-2-Journal/Pods/TransitionKit/Code/TKEvent.h b/Unit-2-Journal/Pods/TransitionKit/Code/TKEvent.h new file mode 100644 index 0000000..abd2156 --- /dev/null +++ b/Unit-2-Journal/Pods/TransitionKit/Code/TKEvent.h @@ -0,0 +1,89 @@ +// +// TKEvent.h +// TransitionKit +// +// Created by Blake Watters on 3/17/13. +// Copyright (c) 2013 Blake Watters. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +@class TKState, TKTransition; + +/** + The `TKEvent` class describes an event within a state machine that causes a transition between states. Each event has a descriptive name and specifies the state that the machine will transition into after the event has been fired. Events can optionally be constrained to a set of source states that the machine must be in for the event to fire. + */ +@interface TKEvent : NSObject <NSCoding, NSCopying> + +///------------------------ +/// @name Creating an Event +///------------------------ + +/** + Creates and returns a new event object with the given name, source states, and destination state. + + @param name The name for the event. + @param sourceStates An array of `TKState` objects specifying the source states that the machine must be in for the event to be permitted to fire. + @param destinationState The state that the state machine will transition into after the event has fired. + @return A newly created event object. + */ ++ (instancetype)eventWithName:(NSString *)name transitioningFromStates:(NSArray *)sourceStates toState:(TKState *)destinationState; + +///------------------------------ +/// @name Accessing Event Details +///------------------------------ + +@property (nonatomic, copy, readonly) NSString *name; + +/** + An optional array of states that the state machine must be in before the event is allowed to fire. + + If `nil`, then the event can be fired when the state machine is in any state. + */ +@property (nonatomic, copy, readonly) NSArray *sourceStates; + +/** + The state that the state machine will transition into after the event has fired. + + Cannot be `nil`. + */ +@property (nonatomic, strong, readonly) TKState *destinationState; + +///------------------------------ +/// @name Setting Callback Blocks +///------------------------------ + +/** + Sets a block to be executed in order to determines if an event should be fired. If the block returns `YES`, then the event will be permitted to fire. + + @param block The block to be executed to determine if the event can be fired. The block has a Boolean return value and accepts two arguments: the event that is being evaluated to determine if it can be fired and its associated transition. If the block returns `YES`, then the event can be fired. + */ +- (void)setShouldFireEventBlock:(BOOL (^)(TKEvent *event, TKTransition *transition))block; + +/** + Sets a block to be executed before an event is fired, while the state machine is still in the source state. + + @param block The block to be executed. The block has no return value and accepts two arguments: the event that is about to be fired and its associated transition. + */ +- (void)setWillFireEventBlock:(void (^)(TKEvent *event, TKTransition *transition))block; + +/** + Sets a block to be executed after an event is fired, when the state machine has transitioned into the destination state. + + @param block The block to be executed. The block has no return value and accepts two arguments: the event that has just been fired and its associated transition. + */ +- (void)setDidFireEventBlock:(void (^)(TKEvent *event, TKTransition *transition))block; + +@end diff --git a/Unit-2-Journal/Pods/TransitionKit/Code/TKEvent.m b/Unit-2-Journal/Pods/TransitionKit/Code/TKEvent.m new file mode 100644 index 0000000..8bbd728 --- /dev/null +++ b/Unit-2-Journal/Pods/TransitionKit/Code/TKEvent.m @@ -0,0 +1,101 @@ +// +// TKEvent.m +// TransitionKit +// +// Created by Blake Watters on 3/17/13. +// Copyright (c) 2013 Blake Watters. All rights reserved. +// +// 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 "TKEvent.h" +#import "TKState.h" + +static NSString *TKDescribeSourceStates(NSArray *states) +{ + if (! [states count]) return @"any state"; + + NSMutableString *description = [NSMutableString string]; + [states enumerateObjectsUsingBlock:^(TKState *state, NSUInteger idx, BOOL *stop) { + NSString *separator = @""; + if (idx < [states count] - 1) separator = (idx == [states count] - 2) ? @" and " : @", "; + [description appendFormat:@"'%@'%@", state.name, separator]; + }]; + return description; +} + + +@interface TKEvent () +@property (nonatomic, copy, readwrite) NSString *name; +@property (nonatomic, copy, readwrite) NSArray *sourceStates; +@property (nonatomic, strong, readwrite) TKState *destinationState; +@property (nonatomic, copy) BOOL (^shouldFireEventBlock)(TKEvent *, TKTransition *); +@property (nonatomic, copy) void (^willFireEventBlock)(TKEvent *, TKTransition *); +@property (nonatomic, copy) void (^didFireEventBlock)(TKEvent *, TKTransition *); +@end + +@implementation TKEvent + ++ (instancetype)eventWithName:(NSString *)name transitioningFromStates:(NSArray *)sourceStates toState:(TKState *)destinationState +{ + if (! [name length]) [NSException raise:NSInvalidArgumentException format:@"The event name cannot be blank."]; + if (!destinationState) [NSException raise:NSInvalidArgumentException format:@"The destination state cannot be nil."]; + TKEvent *event = [self new]; + event.name = name; + event.sourceStates = sourceStates; + event.destinationState = destinationState; + return event; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@:%p '%@' transitions from %@ to '%@'>", NSStringFromClass([self class]), self, self.name, TKDescribeSourceStates(self.sourceStates), self.destinationState.name]; +} + +#pragma mark - NSCoding + +- (id)initWithCoder:(NSCoder *)aDecoder +{ + self = [self init]; + if (!self) { + return nil; + } + + self.name = [aDecoder decodeObjectForKey:@"name"]; + self.sourceStates = [aDecoder decodeObjectForKey:@"sourceStates"]; + self.destinationState = [aDecoder decodeObjectForKey:@"destinationState"]; + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder +{ + [aCoder encodeObject:self.name forKey:@"name"]; + [aCoder encodeObject:self.sourceStates forKey:@"sourceStates"]; + [aCoder encodeObject:self.destinationState forKey:@"destinationState"]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + TKEvent *copiedEvent = [[[self class] allocWithZone:zone] init]; + copiedEvent.name = self.name; + copiedEvent.sourceStates = self.sourceStates; + copiedEvent.destinationState = self.destinationState; + copiedEvent.shouldFireEventBlock = self.shouldFireEventBlock; + copiedEvent.willFireEventBlock = self.willFireEventBlock; + copiedEvent.didFireEventBlock = self.didFireEventBlock; + return copiedEvent; +} + +@end diff --git a/Unit-2-Journal/Pods/TransitionKit/Code/TKState.h b/Unit-2-Journal/Pods/TransitionKit/Code/TKState.h new file mode 100644 index 0000000..15a3dc8 --- /dev/null +++ b/Unit-2-Journal/Pods/TransitionKit/Code/TKState.h @@ -0,0 +1,83 @@ +// +// TKState.h +// TransitionKit +// +// Created by Blake Watters on 3/17/13. +// Copyright (c) 2013 Blake Watters. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +@class TKTransition; + +/** + The `TKState` class defines a particular state with a state machine. Each state must have a unique name within the state machine in which it is used. + */ +@interface TKState : NSObject <NSCoding, NSCopying> + +///----------------------- +/// @name Creating a State +///----------------------- + +/** + Creates and returns a new state object with the specified name. + + @param name The name of the state. Cannot be blank. + @return A newly created state object with the specified name. + */ ++ (instancetype)stateWithName:(NSString *)name; + +///------------------------------------ +/// @name Accessing the Name of a State +///------------------------------------ + +/** + The name of the receiver. Cannot be `nil` and must be unique within the state machine that the receiver is added to. + */ +@property (nonatomic, copy, readonly) NSString *name; + +///---------------------------------- +/// @name Configuring Block Callbacks +///---------------------------------- + +/** + Sets a block to be executed before the state machine transitions into the state modeled by the receiver. + + @param block The block to executed before a state machine enters the receiver's state. The block has no return value and takes two arguments: the state object and a transition object modeling the state change. + */ +- (void)setWillEnterStateBlock:(void (^)(TKState *state, TKTransition *transition))block; + +/** + Sets a block to be executed after the state machine has transitioned into the state modeled by the receiver. + + @param block The block to executed after a state machine enters the receiver's state. The block has no return value and takes two arguments: the state object and a transition object modeling the state change. + */ +- (void)setDidEnterStateBlock:(void (^)(TKState *state, TKTransition *transition))block; + +/** + Sets a block to be executed before the state machine transitions out of the state modeled by the receiver. + + @param block The block to executed before a state machine exits the receiver's state. The block has no return value and takes two arguments: the state object and a transition object modeling the state change. + */ +- (void)setWillExitStateBlock:(void (^)(TKState *state, TKTransition *transition))block; + +/** + Sets a block to be executed after the state machine has transitioned out of the state modeled by the receiver. + + @param block The block to executed after a state machine exit the receiver's state. The block has no return value and takes two arguments: the state object and a transition object modeling the state change. + */ +- (void)setDidExitStateBlock:(void (^)(TKState *state, TKTransition *transition))block; + +@end diff --git a/Unit-2-Journal/Pods/TransitionKit/Code/TKState.m b/Unit-2-Journal/Pods/TransitionKit/Code/TKState.m new file mode 100644 index 0000000..1566339 --- /dev/null +++ b/Unit-2-Journal/Pods/TransitionKit/Code/TKState.m @@ -0,0 +1,77 @@ +// +// TKState.m +// TransitionKit +// +// Created by Blake Watters on 3/17/13. +// Copyright (c) 2013 Blake Watters. All rights reserved. +// +// 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 "TKState.h" + +@interface TKState () +@property (nonatomic, copy, readwrite) NSString *name; +@property (nonatomic, copy) void (^willEnterStateBlock)(TKState *, TKTransition *); +@property (nonatomic, copy) void (^didEnterStateBlock)(TKState *, TKTransition *); +@property (nonatomic, copy) void (^willExitStateBlock)(TKState *, TKTransition *); +@property (nonatomic, copy) void (^didExitStateBlock)(TKState *, TKTransition *); +@end + +@implementation TKState + ++ (instancetype)stateWithName:(NSString *)name +{ + if (! [name length]) [NSException raise:NSInvalidArgumentException format:@"The `name` cannot be blank."]; + TKState *state = [TKState new]; + state.name = name; + return state; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@:%p '%@'>", NSStringFromClass([self class]), self, self.name]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + TKState *copiedState = [[[self class] allocWithZone:zone] init]; + copiedState.name = self.name; + copiedState.willEnterStateBlock = self.willEnterStateBlock; + copiedState.didEnterStateBlock = self.didEnterStateBlock; + copiedState.willExitStateBlock = self.willExitStateBlock; + copiedState.didExitStateBlock = self.didExitStateBlock; + return copiedState; +} + +#pragma mark - NSCoding + +- (id)initWithCoder:(NSCoder *)aDecoder +{ + self = [self init]; + if (!self) { + return nil; + } + + self.name = [aDecoder decodeObjectForKey:@"name"]; + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder +{ + [aCoder encodeObject:self.name forKey:@"name"]; +} + +@end diff --git a/Unit-2-Journal/Pods/TransitionKit/Code/TKStateMachine.h b/Unit-2-Journal/Pods/TransitionKit/Code/TKStateMachine.h new file mode 100644 index 0000000..cc6b3d9 --- /dev/null +++ b/Unit-2-Journal/Pods/TransitionKit/Code/TKStateMachine.h @@ -0,0 +1,245 @@ +// +// TKStateMachine.h +// TransitionKit +// +// Created by Blake Watters on 3/17/13. +// Copyright (c) 2013 Blake Watters. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +@class TKEvent, TKState; + +/** + The `TKStateMachine` class provides an interface for modeling a state machine. The state machine supports the registration of an arbitrary number of states and events that trigger transitions between the states. + + ## Callback Sequence + + When a state machine is activated, the following callbacks are invoked: + + 1. Initial State: willEnterState - The block set with `setWillEnterStateBlock:` on the `initialState` is invoked. + 1. The `currentState` changes from `nil` to `initialState` + 1. Initial State: didEnterState - The block set with `setDidEnterStateBlock:` on the `initialState` is invoked. + + Each time an event is fired, the following callbacks are invoked: + + 1. Event: shouldFireEvent - The block set with `setShouldFireEventBlock:` on the event being fired is consulted to determine if the event can be fired. If `NO` is returned then the event is declined and no further callbacks are invoked + 1. Event: willFireEvent - The block set with `setWillFireEventBlock:` on the event being fired is invoked. + 1. Old State: willExitState - The block set with `setWillExitStateBlock:` on the outgoing state is invoked. + 1. New State: willEnterState - The block set with `setWillEnterStateBlock:` on the incoming state is invoked. + 1. The `currentState` changes from the old state to the new state. + 1. Old State: didExitState - The block set with `setDidExitStateBlock:` on the old state is invoked. + 1. New State: didEnterState - The block set with `setDidEnterStateBlock:` on the new current state is invoked. + 1. Event: didFireEvent - The block set with `setDidFireEventBlock:` on the event being fired is invoked. + 1. Notification: After the event has completed and all block callbacks + + ## Copying and Serialization Support + + The `TKStateMachine` class is both `NSCoding` and `NSCopying` compliant. When copied, a new inactive state machine instance is created with the same states, events, and initial state. All blocks associated with the events and states are copied. When archived, the current state, initial state, states, events and activation state is preserved. All block callbacks associated with the states and events become `nil`. + */ +@interface TKStateMachine : NSObject <NSCoding, NSCopying> + +///---------------------- +/// @name Managing States +///---------------------- + +/** + The set of states that have been added to the receiver. Each instance of the set is a `TKState` object. + */ +@property (nonatomic, readonly) NSSet *states; + +/** + The initial state of the receiver. + + When the machine is activated, it transitions into the initial state. + */ +@property (nonatomic, strong) TKState *initialState; + +/** + The current state of the receiver. + + When the machine is activated, the current state transitions from `nil` to the `initialState`. Subsequent state transitions are trigger by the firing of events. + + @see `fireEvent:error:` + */ +@property (nonatomic, strong, readonly) TKState *currentState; + +/** + Adds a state to the receiver. + + Before a state can be used in an event, it must be registered with the state machine. + + @param state The state to be added. + @raises TKStateMachineIsImmutableException Raised if an attempt is made to modify the state machine after it has been activated. + */ +- (void)addState:(TKState *)state; + +/** + Adds an array of state objects to the receiver. + + This is a convenience method whose implementation is equivalent to the following example code: + + for (TKState *state in arrayOfStates) { + [self addState:state]; + } + + @param arrayOfStates An array of `TKState` objects to be added to the receiver. + */ +- (void)addStates:(NSArray *)arrayOfStates; + +/** + Retrieves the state with the given name from the receiver. + + @param name The name of the state to retrieve. + @returns The state object with the given name or `nil` if it could not be found. + */ +- (TKState *)stateNamed:(NSString *)name; + +/** + Returns a Boolean value that indicates if the receiver is in the specified state. + + This is a convenience method whose functionality is equivalent to comparing the given state with the `currentState`. + + @param stateOrStateName A `TKState` object or an `NSString` object that identifies a state by name. The specified state is compared with the value of the `currentState` property. + @returns `YES` if the receiver is in the specified state, else `NO`. + @raises NSInvalidArgumentException Raised if an invalid object is given. + @raises NSInvalidArgumentException Raised if a string value is given that does not identify a registered state. + */ +- (BOOL)isInState:(id)stateOrStateName; + +///---------------------- +/// @name Managing Events +///---------------------- + +/** + The set of events that have been added to the receiver. Each instance of the set is a `TKEvent` object. + */ +@property (nonatomic, readonly) NSSet *events; + +/** + Adds an event to the receiver. + + The state objects references by the event must be registered with the receiver. + + @param event The event to be added. + @raises TKStateMachineIsImmutableException Raised if an attempt is made to modify the state machine after it has been activated. + @raises NSInternalInconsistencyException Raised if the given event references a `TKState` that has not been registered with the receiver. + */ +- (void)addEvent:(TKEvent *)event; + +/** + Adds an array of event objects to the receiver. + + This is a convenience method whose implementation is equivalent to the following example code: + + for (TKEvent *event in arrayOfEvents) { + [self addEvent:event]; + } + + @param arrayOfEvents An array of `TKEvent` objects to be added to the receiver. + */ +- (void)addEvents:(NSArray *)arrayOfEvents; + +/** + Retrieves the event with the given name from the receiver. + + @param name The name of the event to retrieve. + @returns The event object with the given name or `nil` if it could not be found. + */ +- (TKEvent *)eventNamed:(NSString *)name; + +///----------------------------------- +/// @name Activating the State Machine +///----------------------------------- + +/** + Activates the receiver by making it immutable and transitioning into the initial state. + + Once the state machine has been activated no further changes can be made to the registered events and states. Note that although callbacks will be dispatched for transition into the initial state upon activation, they will have a `nil` transition argument as no event has been fired. + */ +- (void)activate; + +/** + Returns a Boolean value that indicates if the receiver has been activated. + */ +- (BOOL)isActive; + +///-------------------- +/// @name Firing Events +///-------------------- + +/** + Returns a Boolean value that indicates if the specified event can be fired. + + @param eventOrEventName A `TKEvent` object or an `NSString` object that identifies an event by name. The source states of the specified event is compared with the current state of the receiver. If the `sourceStates` of the event is `nil`, then the event can be fired from any state. If the `sourcesStates` is not `nil`, then the event can only be fired if it includes the `currentState` of the receiver. + @return `YES` if the event can be fired, else `NO`. + */ +- (BOOL)canFireEvent:(id)eventOrEventName; + +/** + Fires an event to transition the state of the receiver. If the event fails to fire, then `NO` is returned and an error is set. + + If the receiver has not yet been activated, then the first event fired will activate it. If the specified transition is not permitted, then `NO` will be returned and an `TKInvalidTransitionError` will be created. If the `shouldFireEventBlock` of the specified event returns `NO`, then the event is declined, `NO` will be returned, and an `TKTransitionDeclinedError` will be created. + + @param eventOrEventName A `TKEvent` object or an `NSString` object that identifies an event by name. + @param userInfo An optional dictionary of user info to be delivered as part of the state transition. + @param error A pointer to an `NSError` object that will be set if the event fails to fire. + @return `YES` if the event is fired, else `NO`. + */ +- (BOOL)fireEvent:(id)eventOrEventName userInfo:(NSDictionary *)userInfo error:(NSError **)error; + +@end + +///---------------- +/// @name Constants +///---------------- + +/** + The domain for errors raised by TransitionKit. + */ +extern NSString *const TKErrorDomain; + +/** + A Notification posted when the `currentState` of a `TKStateMachine` object changes to a new value. + */ +extern NSString *const TKStateMachineDidChangeStateNotification; + +/** + A key in the `userInfo` dictionary of a `TKStateMachineDidChangeStateNotification` notification specifying the state of the machine before the transition occured. + */ +extern NSString *const TKStateMachineDidChangeStateOldStateUserInfoKey; + +/** + A key in the `userInfo` dictionary of a `TKStateMachineDidChangeStateNotification` notification specifying the state of the machine after the transition occured. + */ +extern NSString *const TKStateMachineDidChangeStateNewStateUserInfoKey; + +/** + A key in the `userInfo` dictionary of a `TKStateMachineDidChangeStateNotification` notification specifying the event that triggered the transition between states. + */ +extern NSString *const TKStateMachineDidChangeStateEventUserInfoKey; + +/** + An exception raised when an attempt is made to mutate an immutable `TKStateMachine` object. + */ +extern NSString *const TKStateMachineIsImmutableException; + +/** + Error Codes + */ +typedef enum { + TKInvalidTransitionError = 1000, // An invalid transition was attempted. + TKTransitionDeclinedError = 1001, // The transition was declined by the `shouldFireEvent` guard block. +} TKErrorCode; diff --git a/Unit-2-Journal/Pods/TransitionKit/Code/TKStateMachine.m b/Unit-2-Journal/Pods/TransitionKit/Code/TKStateMachine.m new file mode 100644 index 0000000..31a89fb --- /dev/null +++ b/Unit-2-Journal/Pods/TransitionKit/Code/TKStateMachine.m @@ -0,0 +1,304 @@ +// +// TKStateMachine.m +// TransitionKit +// +// Created by Blake Watters on 3/17/13. +// Copyright (c) 2013 Blake Watters. All rights reserved. +// +// 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 "TKStateMachine.h" +#import "TKState.h" +#import "TKEvent.h" +#import "TKTransition.h" + +@interface TKEvent () +@property (nonatomic, copy) BOOL (^shouldFireEventBlock)(TKEvent *, TKTransition *); +@property (nonatomic, copy) void (^willFireEventBlock)(TKEvent *, TKTransition *); +@property (nonatomic, copy) void (^didFireEventBlock)(TKEvent *, TKTransition *); +@end + +@interface TKState () +@property (nonatomic, copy) void (^willEnterStateBlock)(TKState *, TKTransition *); +@property (nonatomic, copy) void (^didEnterStateBlock)(TKState *, TKTransition *); +@property (nonatomic, copy) void (^willExitStateBlock)(TKState *, TKTransition *); +@property (nonatomic, copy) void (^didExitStateBlock)(TKState *, TKTransition *); +@end + +NSString *const TKErrorDomain = @"org.blakewatters.TransitionKit.errors"; +NSString *const TKStateMachineDidChangeStateNotification = @"TKStateMachineDidChangeStateNotification"; +NSString *const TKStateMachineDidChangeStateOldStateUserInfoKey = @"old"; +NSString *const TKStateMachineDidChangeStateNewStateUserInfoKey = @"new"; +NSString *const TKStateMachineDidChangeStateEventUserInfoKey = @"event"; + +NSString *const TKStateMachineIsImmutableException = @"TKStateMachineIsImmutableException"; + +#define TKRaiseIfActive() \ + if ([self isActive]) [NSException raise:TKStateMachineIsImmutableException format:@"Unable to modify state machine: The state machine has already been activated."]; + +static NSString *TKQuoteString(NSString *string) +{ + return string ? [NSString stringWithFormat:@"'%@'", string] : nil; +} + +@interface TKStateMachine () +@property (nonatomic, strong) NSMutableSet *mutableStates; +@property (nonatomic, strong) NSMutableSet *mutableEvents; +@property (nonatomic, assign, getter = isActive) BOOL active; +@property (nonatomic, strong, readwrite) TKState *currentState; +@property (nonatomic, strong) NSRecursiveLock *lock; +@end + +@implementation TKStateMachine + ++ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key +{ + NSSet *keyPaths = [super keyPathsForValuesAffectingValueForKey:key]; + + if ([key isEqualToString:@"states"]) { + NSSet *affectingKey = [NSSet setWithObject:@"mutableStates"]; + keyPaths = [keyPaths setByAddingObjectsFromSet:affectingKey]; + return keyPaths; + } else if ([key isEqualToString:@"events"]) { + NSSet *affectingKey = [NSSet setWithObject:@"mutableEvents"]; + keyPaths = [keyPaths setByAddingObjectsFromSet:affectingKey]; + return keyPaths; + } + + return keyPaths; +} + +- (id)init +{ + self = [super init]; + if (self) { + self.mutableStates = [NSMutableSet set]; + self.mutableEvents = [NSMutableSet set]; + self.lock = [NSRecursiveLock new]; + } + return self; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@:%p %ld States, %ld Events. currentState=%@, initialState='%@', isActive=%@>", + NSStringFromClass([self class]), self, (unsigned long) [self.mutableStates count], (unsigned long) [self.mutableEvents count], + TKQuoteString(self.currentState.name), self.initialState.name, self.isActive ? @"YES" : @"NO"]; +} + +- (void)setInitialState:(TKState *)initialState +{ + TKRaiseIfActive(); + _initialState = initialState; +} + +- (NSSet *)states +{ + return [NSSet setWithSet:self.mutableStates]; +} + +- (void)addState:(TKState *)state +{ + TKRaiseIfActive(); + if (! [state isKindOfClass:[TKState class]]) [NSException raise:NSInvalidArgumentException format:@"Expected a `TKState` object, instead got a `%@` (%@)", [state class], state]; + if ([self stateNamed: state.name]) [NSException raise:NSInvalidArgumentException format:@"State with name `%@` already exists", state.name]; + + if (self.initialState == nil) self.initialState = state; + [self.mutableStates addObject:state]; +} + +- (void)addStates:(NSArray *)arrayOfStates +{ + TKRaiseIfActive(); + for (TKState *state in arrayOfStates) { + [self addState:state]; + } +} + +- (TKState *)stateNamed:(NSString *)name +{ + for (TKState *state in self.mutableStates) { + if ([state.name isEqualToString:name]) return state; + } + return nil; +} + +- (BOOL)isInState:(id)stateOrStateName +{ + if (! [stateOrStateName isKindOfClass:[TKState class]] && ![stateOrStateName isKindOfClass:[NSString class]]) [NSException raise:NSInvalidArgumentException format:@"Expected a `TKState` object or `NSString` object specifying the name of a state, instead got a `%@` (%@)", [stateOrStateName class], stateOrStateName]; + TKState *state = [stateOrStateName isKindOfClass:[TKState class]] ? stateOrStateName : [self stateNamed:stateOrStateName]; + if (! state) [NSException raise:NSInvalidArgumentException format:@"Cannot find a State named '%@'", stateOrStateName]; + return [self.currentState isEqual:state]; +} + +- (NSSet *)events +{ + return [NSSet setWithSet:self.mutableEvents]; +} + +- (void)addEvent:(TKEvent *)event +{ + TKRaiseIfActive(); + if (! event) [NSException raise:NSInvalidArgumentException format:@"Cannot add a `nil` event to the state machine."]; + if (event.sourceStates) { + for (TKState *state in event.sourceStates) { + if (! [self.mutableStates containsObject:state]) { + [NSException raise:NSInternalInconsistencyException format:@"Cannot add event '%@' to the state machine: the event references a state '%@', which has not been added to the state machine.", event.name, state.name]; + } + } + } + if (! [self.mutableStates containsObject:event.destinationState]) [NSException raise:NSInternalInconsistencyException format:@"Cannot add event '%@' to the state machine: the event references a state '%@', which has not been added to the state machine.", event.name, event.destinationState.name]; + [self.mutableEvents addObject:event]; +} + +- (void)addEvents:(NSArray *)arrayOfEvents +{ + TKRaiseIfActive(); + for (TKEvent *event in arrayOfEvents) { + [self addEvent:event]; + } +} + +- (TKEvent *)eventNamed:(NSString *)name +{ + for (TKEvent *event in self.mutableEvents) { + if ([event.name isEqualToString:name]) return event; + } + return nil; +} + +- (void)activate +{ + if (self.isActive) [NSException raise:NSInternalInconsistencyException format:@"The state machine has already been activated."]; + [self.lock lock]; + self.active = YES; + + // Dispatch callbacks to establish initial state + if (self.initialState.willEnterStateBlock) self.initialState.willEnterStateBlock(self.initialState, nil); + self.currentState = self.initialState; + if (self.initialState.didEnterStateBlock) self.initialState.didEnterStateBlock(self.initialState, nil); + [self.lock unlock]; +} + +- (BOOL)canFireEvent:(id)eventOrEventName +{ + if (! [eventOrEventName isKindOfClass:[TKEvent class]] && ![eventOrEventName isKindOfClass:[NSString class]]) [NSException raise:NSInvalidArgumentException format:@"Expected a `TKEvent` object or `NSString` object specifying the name of an event, instead got a `%@` (%@)", [eventOrEventName class], eventOrEventName]; + TKEvent *event = [eventOrEventName isKindOfClass:[TKEvent class]] ? eventOrEventName : [self eventNamed:eventOrEventName]; + if (! event) [NSException raise:NSInvalidArgumentException format:@"Cannot find an Event named '%@'", eventOrEventName]; + return [event.sourceStates containsObject:self.currentState]; +} + +- (BOOL)fireEvent:(id)eventOrEventName userInfo:(NSDictionary *)userInfo error:(NSError *__autoreleasing *)error +{ + [self.lock lock]; + if (! self.isActive) [self activate]; + if (! [eventOrEventName isKindOfClass:[TKEvent class]] && ![eventOrEventName isKindOfClass:[NSString class]]) [NSException raise:NSInvalidArgumentException format:@"Expected a `TKEvent` object or `NSString` object specifying the name of an event, instead got a `%@` (%@)", [eventOrEventName class], eventOrEventName]; + TKEvent *event = [eventOrEventName isKindOfClass:[TKEvent class]] ? eventOrEventName : [self eventNamed:eventOrEventName]; + if (! event) [NSException raise:NSInvalidArgumentException format:@"Cannot find an Event named '%@'", eventOrEventName]; + + // Check that this transition is permitted + if (event.sourceStates != nil && ![event.sourceStates containsObject:self.currentState]) { + NSString *failureReason = [NSString stringWithFormat:@"An attempt was made to fire the '%@' event while in the '%@' state, but the event can only be fired from the following states: %@", event.name, self.currentState.name, [[event.sourceStates valueForKey:@"name"] componentsJoinedByString:@", "]]; + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: @"The event cannot be fired from the current state.", NSLocalizedFailureReasonErrorKey: failureReason }; + if (error) *error = [NSError errorWithDomain:TKErrorDomain code:TKInvalidTransitionError userInfo:userInfo]; + [self.lock unlock]; + return NO; + } + + TKTransition *transition = [TKTransition transitionForEvent:event fromState:self.currentState inStateMachine:self userInfo:userInfo]; + if (event.shouldFireEventBlock) { + if (! event.shouldFireEventBlock(event, transition)) { + NSString *failureReason = [NSString stringWithFormat:@"An attempt to fire the '%@' event was declined because `shouldFireEventBlock` returned `NO`.", event.name]; + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: @"The event declined to be fired.", NSLocalizedFailureReasonErrorKey: failureReason }; + if (error) *error = [NSError errorWithDomain:TKErrorDomain code:TKTransitionDeclinedError userInfo:userInfo]; + [self.lock unlock]; + return NO; + } + } + + TKState *oldState = self.currentState; + TKState *newState = event.destinationState; + + if (event.willFireEventBlock) event.willFireEventBlock(event, transition); + + if (oldState.willExitStateBlock) oldState.willExitStateBlock(oldState, transition); + if (newState.willEnterStateBlock) newState.willEnterStateBlock(newState, transition); + self.currentState = newState; + if (oldState.didExitStateBlock) oldState.didExitStateBlock(oldState, transition); + if (newState.didEnterStateBlock) newState.didEnterStateBlock(newState, transition); + + if (event.didFireEventBlock) event.didFireEventBlock(event, transition); + [self.lock unlock]; + + NSMutableDictionary *notificationInfo = [userInfo mutableCopy] ?: [NSMutableDictionary dictionary]; + [notificationInfo addEntriesFromDictionary:@{ TKStateMachineDidChangeStateOldStateUserInfoKey: oldState, + TKStateMachineDidChangeStateNewStateUserInfoKey: newState, + TKStateMachineDidChangeStateEventUserInfoKey: event }]; + [[NSNotificationCenter defaultCenter] postNotificationName:TKStateMachineDidChangeStateNotification object:self userInfo:notificationInfo]; + + return YES; +} + +#pragma mark - NSCoding + +- (id)initWithCoder:(NSCoder *)aDecoder +{ + self = [self init]; + if (!self) { + return nil; + } + + self.initialState = [aDecoder decodeObjectForKey:@"initialState"]; + self.currentState =[aDecoder decodeObjectForKey:@"currentState"]; + self.mutableStates = [[aDecoder decodeObjectForKey:@"states"] mutableCopy]; + self.mutableEvents = [[aDecoder decodeObjectForKey:@"events"] mutableCopy]; + self.active = [aDecoder decodeBoolForKey:@"isActive"]; + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder +{ + [aCoder encodeObject:self.initialState forKey:@"initialState"]; + [aCoder encodeObject:self.currentState forKey:@"currentState"]; + [aCoder encodeObject:self.states forKey:@"states"]; + [aCoder encodeObject:self.events forKey:@"events"]; + [aCoder encodeBool:self.isActive forKey:@"isActive"]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + TKStateMachine *copiedStateMachine = [[[self class] allocWithZone:zone] init]; + copiedStateMachine.active = NO; + copiedStateMachine.currentState = nil; + copiedStateMachine.initialState = self.initialState; + + for (TKState *state in self.states) { + [copiedStateMachine addState:[state copy]]; + } + + for (TKEvent *event in self.events) { + NSMutableArray *sourceStates = [NSMutableArray arrayWithCapacity:[event.sourceStates count]]; + for (TKState *sourceState in event.sourceStates) { + [sourceStates addObject:[copiedStateMachine stateNamed:sourceState.name]]; + } + TKState *destinationState = [copiedStateMachine stateNamed:event.destinationState.name]; + TKEvent *copiedEvent = [TKEvent eventWithName:event.name transitioningFromStates:sourceStates toState:destinationState]; + [copiedStateMachine addEvent:copiedEvent]; + } + return copiedStateMachine; +} + +@end diff --git a/Unit-2-Journal/Pods/TransitionKit/Code/TKTransition.h b/Unit-2-Journal/Pods/TransitionKit/Code/TKTransition.h new file mode 100644 index 0000000..91c5aa6 --- /dev/null +++ b/Unit-2-Journal/Pods/TransitionKit/Code/TKTransition.h @@ -0,0 +1,73 @@ +// +// TKTransition.h +// TransitionKit +// +// Created by Blake Watters on 10/11/13. +// Copyright (c) 2013 Blake Watters. All rights reserved. +// +// 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 <Foundation/Foundation.h> + +@class TKEvent, TKState, TKStateMachine; + +/** + The `TKTransition` class models a state change in response to an event firing within a state machine. It encapsulates all details about the change and is yielded as an argument to all block callbacks within TransitionKit. The optional dictionary of `userInfo` can be used to broadcast arbitrary data across callbacks. + */ +@interface TKTransition : NSObject + +///---------------------------- +/// @name Creating a Transition +///---------------------------- + +/** + Creates and returns a new transition object describing a state change occuring within a state machine in response to the firing of an event. + + @param event The event being fired that is causing the transition to occur. + @param sourceState The state of the machine when the event was fired. + @param stateMachine The state machine in which the transition is occurirng. + @param userInfo An optional dictionary of user info supplied with the event when it was fired. + */ ++ (instancetype)transitionForEvent:(TKEvent *)event fromState:(TKState *)sourceState inStateMachine:(TKStateMachine *)stateMachine userInfo:(NSDictionary *)userInfo; + +///----------------------------------- +/// @name Accessing Transition Details +///----------------------------------- + +/** + The event that was fired, causing the transition to occur. + */ +@property (nonatomic, strong, readonly) TKEvent *event; + +/** + The state of the state machine when the transition starts. + */ +@property (nonatomic, strong, readonly) TKState *sourceState; + +/** + The state of the state machine after the transition finishes. + */ +@property (nonatomic, strong, readonly) TKState *destinationState; + +/** + The state machine in which the transition is occurring. + */ +@property (nonatomic, strong, readonly) TKStateMachine *stateMachine; + +/** + An optional dictionary of user info supplied with the event when fired. + */ +@property (nonatomic, copy, readonly) NSDictionary *userInfo; + +@end diff --git a/Unit-2-Journal/Pods/TransitionKit/Code/TKTransition.m b/Unit-2-Journal/Pods/TransitionKit/Code/TKTransition.m new file mode 100644 index 0000000..21cb35c --- /dev/null +++ b/Unit-2-Journal/Pods/TransitionKit/Code/TKTransition.m @@ -0,0 +1,49 @@ +// +// TKTransition.m +// TransitionKit +// +// Created by Blake Watters on 10/11/13. +// Copyright (c) 2013 Blake Watters. All rights reserved. +// +// 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 "TKTransition.h" +#import "TKEvent.h" + +@interface TKTransition () + +@property (nonatomic, strong, readwrite) TKEvent *event; +@property (nonatomic, strong, readwrite) TKState *sourceState; +@property (nonatomic, strong, readwrite) TKStateMachine *stateMachine; +@property (nonatomic, copy, readwrite) NSDictionary *userInfo; +@end + +@implementation TKTransition + ++ (instancetype)transitionForEvent:(TKEvent *)event fromState:(TKState *)sourceState inStateMachine:(TKStateMachine *)stateMachine userInfo:(NSDictionary *)userInfo +{ + TKTransition *transition = [self new]; + transition.event = event; + transition.sourceState = sourceState; + transition.stateMachine = stateMachine; + transition.userInfo = userInfo; + return transition; +} + +- (TKState *)destinationState +{ + return self.event.destinationState; +} + +@end diff --git a/Unit-2-Journal/Pods/TransitionKit/Code/TransitionKit.h b/Unit-2-Journal/Pods/TransitionKit/Code/TransitionKit.h new file mode 100644 index 0000000..2505ad9 --- /dev/null +++ b/Unit-2-Journal/Pods/TransitionKit/Code/TransitionKit.h @@ -0,0 +1,29 @@ +// +// TransitionKit.h +// TransitionKit +// +// Created by Blake Watters on 3/17/13. +// Copyright (c) 2013 Blake Watters. All rights reserved. +// +// 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 TransitionKit_TransitionKit_h +#define TransitionKit_TransitionKit_h + +#import "TKStateMachine.h" +#import "TKEvent.h" +#import "TKState.h" +#import "TKTransition.h" + +#endif diff --git a/Unit-2-Journal/Pods/TransitionKit/LICENSE b/Unit-2-Journal/Pods/TransitionKit/LICENSE new file mode 100644 index 0000000..eb8d4bc --- /dev/null +++ b/Unit-2-Journal/Pods/TransitionKit/LICENSE @@ -0,0 +1,202 @@ + + 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 2009-2012 The RestKit Project + + 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/Unit-2-Journal/Pods/TransitionKit/README.md b/Unit-2-Journal/Pods/TransitionKit/README.md new file mode 100644 index 0000000..299f983 --- /dev/null +++ b/Unit-2-Journal/Pods/TransitionKit/README.md @@ -0,0 +1,126 @@ +TransitionKit +============= + +[![Build Status](https://travis-ci.org/blakewatters/TransitionKit.png?branch=master,development)](https://travis-ci.org/blakewatters/TransitionKit) +![Pod Version](https://cocoapod-badges.herokuapp.com/v/TransitionKit/badge.png) +![Pod Platform](https://cocoapod-badges.herokuapp.com/p/TransitionKit/badge.png) + +**A simple, elegantly designed block based API for implementing State Machines in Objective-C** + +TransitionKit is a small Cocoa library that provides an API for implementing a state machine in Objective C. It is full-featured, completely documented, and very thoroughly unit tested. State machines are a great way to manage complexity in your application and TransitionKit provides you with an elegant API for implementing state machines in your next iOS or Mac OS X application. + +### Features + +* Supports an arbitrary number of States and Events. +* States and Events support a thorough set of block based callbacks for responding to state transitions. +* States, Events, and State Machines are NSCopying and NSCoding compliant, enabling easy integration with archiving and copying in your custom classes. +* Strongly enforced. The state machine includes numerous runtime checks for misconfigurations, making it easy to debug and trust your state machines. +* Transitions support the inclusion of arbitrary user data via a `userInfo` dictionary, making it easy to broadcast metadata across callbacks. +* Completely Documented. The entire library is marked up with Appledoc. +* Thorougly unit tested. You know it works and can make changes with confidence. +* Lightweight. TransitionKit has no dependencies beyond the Foundation library and works on iOS and Mac OS X. + +## Installation via CocoaPods + +The recommended approach for installing TransitionKit is via the [CocoaPods](http://cocoapods.org/) package manager, as it provides flexible dependency management and dead simple installation. For best results, it is recommended that you install via CocoaPods **>= 0.16.0** using Git **>= 1.8.0** installed via Homebrew. + +Install CocoaPods if not already available: + +``` bash +$ [sudo] gem install cocoapods +$ pod setup +``` + +Change to the directory of your Xcode project, and Create and Edit your Podfile and add TransitionKit: + +``` bash +$ cd /path/to/MyProject +$ touch Podfile +$ edit Podfile +platform :ios, '5.0' +# Or platform :osx, '10.7' +pod 'TransitionKit', '~> 2.0.0' +``` + +Install into your project: + +``` bash +$ pod install +``` + +Open your project in Xcode from the .xcworkspace file (not the usual project file) + +``` bash +$ open MyProject.xcworkspace +``` + +## Examples + +#### Simple Example + +The following example is a simple state machine that models the state of a Message in an Inbox. + +```objc +TKStateMachine *inboxStateMachine = [TKStateMachine new]; + +TKState *unread = [TKState stateWithName:@"Unread"]; +[unread setDidEnterStateBlock:^(TKState *state, TKTransition *transition) { + [self incrementUnreadCount]; +}]; +TKState *read = [TKState stateWithName:@"Read"]; +[read setDidExitStateBlock:^(TKState *state, TKTransition *transition) { + [self decrementUnreadCount]; +}]; +TKState *deleted = [TKState stateWithName:@"Deleted"]; +[deleted setDidEnterStateBlock:^(TKState *state, TKTransition *transition) { + [self moveMessageToTrash]; +}]; + +[inboxStateMachine addStates:@[ unread, read, deleted ]]; +inboxStateMachine.initialState = unread; + +TKEvent *viewMessage = [TKEvent eventWithName:@"View Message" transitioningFromStates:@[ unread ] toState:read]; +TKEvent *deleteMessage = [TKEvent eventWithName:@"Delete Message" transitioningFromStates:@[ read, unread ] toState:deleted]; +TKEvent *markAsUnread = [TKEvent eventWithName:@"Mark as Unread" transitioningFromStates:@[ read, deleted ] toState:unread]; + +[inboxStateMachine addEvents:@[ viewMessage, deleteMessage, markAsUnread ]]; + +// Activate the state machine +[inboxStateMachine activate]; + +[inboxStateMachine isInState:@"Unread"]; // YES, the initial state + +// Fire some events +NSDictionary *userInfo = nil; +NSError *error = nil; +BOOL success = [inboxStateMachine fireEvent:@"View Message" userInfo:userInfo error:&error]; // YES +success = [inboxStateMachine fireEvent:@"Delete Message" userInfo:userInfo error:&error]; // YES +success = [inboxStateMachine fireEvent:@"Mark as Unread" userInfo:userInfo error:&error]; // YES + +success = [inboxStateMachine canFireEvent:@"Mark as Unread"]; // NO + +// Error. Cannot mark an Unread message as Unread +success = [inboxStateMachine fireEvent:@"Mark as Unread" userInfo:nil error:&error]; // NO + +// error is an TKInvalidTransitionError with a descriptive error message and failure reason +``` + +## Unit Tests + +TransitionKit is tested using the [Kiwi](https://github.com/allending/Kiwi) BDD library. In order to run the tests, you must do the following: + +1. Install the dependencies via CocoaPods: `pod install` +1. Open the workspace: `open TransitionKit.xcworkspace` +1. Run the specs via the **Product** menu > **Test** + +## Contact + +Blake Watters + +- http://github.com/blakewatters +- http://twitter.com/blakewatters +- blakewatters@gmail.com + +## License + +TransitionKit is available under the Apache 2 License. See the LICENSE file for more info. diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index a867457..3efb50e 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -7,13 +7,22 @@ objects = { /* Begin PBXBuildFile section */ + 4DCBE1321BC98EF90075BA2C /* JournalMainCollectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */; settings = {ASSET_TAGS = (); }; }; + 4DCBE13C1BC9943D0075BA2C /* big_nerd_ranch.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1331BC9943D0075BA2C /* big_nerd_ranch.png */; settings = {ASSET_TAGS = (); }; }; + 4DCBE13D1BC9943D0075BA2C /* destroyer.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1341BC9943D0075BA2C /* destroyer.png */; settings = {ASSET_TAGS = (); }; }; + 4DCBE13E1BC9943D0075BA2C /* drake.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1351BC9943D0075BA2C /* drake.png */; settings = {ASSET_TAGS = (); }; }; + 4DCBE13F1BC9943D0075BA2C /* lean_startup.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1361BC9943D0075BA2C /* lean_startup.png */; settings = {ASSET_TAGS = (); }; }; + 4DCBE1401BC9943D0075BA2C /* run_the_jewels.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1371BC9943D0075BA2C /* run_the_jewels.png */; settings = {ASSET_TAGS = (); }; }; + 4DCBE1411BC9943D0075BA2C /* sleater_kinney.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1381BC9943D0075BA2C /* sleater_kinney.png */; settings = {ASSET_TAGS = (); }; }; + 4DCBE1421BC9943D0075BA2C /* talking_heads.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1391BC9943D0075BA2C /* talking_heads.png */; settings = {ASSET_TAGS = (); }; }; + 4DCBE1431BC9943D0075BA2C /* true_detective.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE13A1BC9943D0075BA2C /* true_detective.png */; settings = {ASSET_TAGS = (); }; }; + 4DCBE1441BC9943D0075BA2C /* x-files.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE13B1BC9943D0075BA2C /* x-files.png */; settings = {ASSET_TAGS = (); }; }; 5A50331A1BC8D0E4001CBA5C /* MainTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A5033191BC8D0E4001CBA5C /* MainTableViewController.m */; settings = {ASSET_TAGS = (); }; }; 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331C1BC8D99D001CBA5C /* LoginViewController.m */; settings = {ASSET_TAGS = (); }; }; 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331F1BC8D9B5001CBA5C /* SignUpViewController.m */; settings = {ASSET_TAGS = (); }; }; 617F8769EFBE79517A02E6D0 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAF24AD380284C55768010A2 /* libPods.a */; }; 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC2E1BC84BF200E880D3 /* main.m */; }; 9A2FFC321BC84BF200E880D3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC311BC84BF200E880D3 /* AppDelegate.m */; }; - 9A2FFC351BC84BF200E880D3 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC341BC84BF200E880D3 /* ViewController.m */; }; 9A2FFC381BC84BF200E880D3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A2FFC361BC84BF200E880D3 /* Main.storyboard */; }; 9A2FFC3B1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC391BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld */; }; 9A2FFC3D1BC84BF200E880D3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */; }; @@ -23,6 +32,17 @@ /* Begin PBXFileReference section */ 1F41A29CEEC52ED6A148CCE5 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = "<group>"; }; 2BC0A6490F88476E5C31E3B1 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = "<group>"; }; + 4DCBE1301BC98EF90075BA2C /* JournalMainCollectionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalMainCollectionViewController.h; sourceTree = "<group>"; }; + 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalMainCollectionViewController.m; sourceTree = "<group>"; }; + 4DCBE1331BC9943D0075BA2C /* big_nerd_ranch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = big_nerd_ranch.png; sourceTree = "<group>"; }; + 4DCBE1341BC9943D0075BA2C /* destroyer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = destroyer.png; sourceTree = "<group>"; }; + 4DCBE1351BC9943D0075BA2C /* drake.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = drake.png; sourceTree = "<group>"; }; + 4DCBE1361BC9943D0075BA2C /* lean_startup.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lean_startup.png; sourceTree = "<group>"; }; + 4DCBE1371BC9943D0075BA2C /* run_the_jewels.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = run_the_jewels.png; sourceTree = "<group>"; }; + 4DCBE1381BC9943D0075BA2C /* sleater_kinney.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sleater_kinney.png; sourceTree = "<group>"; }; + 4DCBE1391BC9943D0075BA2C /* talking_heads.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = talking_heads.png; sourceTree = "<group>"; }; + 4DCBE13A1BC9943D0075BA2C /* true_detective.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = true_detective.png; sourceTree = "<group>"; }; + 4DCBE13B1BC9943D0075BA2C /* x-files.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "x-files.png"; sourceTree = "<group>"; }; 5A5033181BC8D0E4001CBA5C /* MainTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainTableViewController.h; sourceTree = "<group>"; }; 5A5033191BC8D0E4001CBA5C /* MainTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainTableViewController.m; sourceTree = "<group>"; }; 5A50331B1BC8D99D001CBA5C /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; }; @@ -33,8 +53,6 @@ 9A2FFC2E1BC84BF200E880D3 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; 9A2FFC301BC84BF200E880D3 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; 9A2FFC311BC84BF200E880D3 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; }; - 9A2FFC331BC84BF200E880D3 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; }; - 9A2FFC341BC84BF200E880D3 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; }; 9A2FFC371BC84BF200E880D3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; 9A2FFC3A1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Unit_2_Journal.xcdatamodel; sourceTree = "<group>"; }; 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; @@ -75,6 +93,8 @@ 5AE224801BC8BB4D004AEB77 /* Login/SignUp */ = { isa = PBXGroup; children = ( + 5A5033181BC8D0E4001CBA5C /* MainTableViewController.h */, + 5A5033191BC8D0E4001CBA5C /* MainTableViewController.m */, 5A50331B1BC8D99D001CBA5C /* LoginViewController.h */, 5A50331C1BC8D99D001CBA5C /* LoginViewController.m */, 5A50331E1BC8D9B5001CBA5C /* SignUpViewController.h */, @@ -107,11 +127,9 @@ 5AE224801BC8BB4D004AEB77 /* Login/SignUp */, 9A2FFC301BC84BF200E880D3 /* AppDelegate.h */, 9A2FFC311BC84BF200E880D3 /* AppDelegate.m */, - 9A2FFC331BC84BF200E880D3 /* ViewController.h */, - 9A2FFC341BC84BF200E880D3 /* ViewController.m */, 9A2FFC361BC84BF200E880D3 /* Main.storyboard */, - 5A5033181BC8D0E4001CBA5C /* MainTableViewController.h */, - 5A5033191BC8D0E4001CBA5C /* MainTableViewController.m */, + 4DCBE1301BC98EF90075BA2C /* JournalMainCollectionViewController.h */, + 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */, 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */, 9A2FFC3E1BC84BF200E880D3 /* LaunchScreen.storyboard */, 9A2FFC411BC84BF200E880D3 /* Info.plist */, @@ -124,6 +142,15 @@ 9A2FFC2D1BC84BF200E880D3 /* Supporting Files */ = { isa = PBXGroup; children = ( + 4DCBE1331BC9943D0075BA2C /* big_nerd_ranch.png */, + 4DCBE1341BC9943D0075BA2C /* destroyer.png */, + 4DCBE1351BC9943D0075BA2C /* drake.png */, + 4DCBE1361BC9943D0075BA2C /* lean_startup.png */, + 4DCBE1371BC9943D0075BA2C /* run_the_jewels.png */, + 4DCBE1381BC9943D0075BA2C /* sleater_kinney.png */, + 4DCBE1391BC9943D0075BA2C /* talking_heads.png */, + 4DCBE13A1BC9943D0075BA2C /* true_detective.png */, + 4DCBE13B1BC9943D0075BA2C /* x-files.png */, 9A2FFC2E1BC84BF200E880D3 /* main.m */, ); name = "Supporting Files"; @@ -189,9 +216,18 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4DCBE13F1BC9943D0075BA2C /* lean_startup.png in Resources */, 9A2FFC401BC84BF200E880D3 /* LaunchScreen.storyboard in Resources */, + 4DCBE1441BC9943D0075BA2C /* x-files.png in Resources */, + 4DCBE13E1BC9943D0075BA2C /* drake.png in Resources */, + 4DCBE1401BC9943D0075BA2C /* run_the_jewels.png in Resources */, + 4DCBE13D1BC9943D0075BA2C /* destroyer.png in Resources */, + 4DCBE1411BC9943D0075BA2C /* sleater_kinney.png in Resources */, + 4DCBE1421BC9943D0075BA2C /* talking_heads.png in Resources */, 9A2FFC3D1BC84BF200E880D3 /* Assets.xcassets in Resources */, + 4DCBE13C1BC9943D0075BA2C /* big_nerd_ranch.png in Resources */, 9A2FFC381BC84BF200E880D3 /* Main.storyboard in Resources */, + 4DCBE1431BC9943D0075BA2C /* true_detective.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -235,9 +271,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9A2FFC351BC84BF200E880D3 /* ViewController.m in Sources */, 9A2FFC321BC84BF200E880D3 /* AppDelegate.m in Sources */, 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */, + 4DCBE1321BC98EF90075BA2C /* JournalMainCollectionViewController.m in Sources */, 9A2FFC3B1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld in Sources */, 5A50331A1BC8D0E4001CBA5C /* MainTableViewController.m in Sources */, 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */, diff --git a/Unit-2-Journal/Unit-2-Journal/.DS_Store b/Unit-2-Journal/Unit-2-Journal/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..96fc673ed2bd642f0c3f431e988c0854aa4098c8 GIT binary patch literal 6148 zcmeHK%}T>S5dJpyQ1Q~E;ANjcs1G2a#EaMBxk}bQXiSj?JmwYkS$qJ$*%_)OdMP4O zW?<&qOlBt8Zy}Qb5N2JP0uumZs$g+Q^Nq-T(Sa1^84*LSvA`J?xI~L?5bcit$bg*P z39j&jN33~vpXc{X-wl>H#S3aAuGiFtXPa<Ke_Gy8=XKkxbX&#U?v<Lhs#3SEfw%Mb z*IaMMcWT=7OO;j+Uw0RElWv^>XTTZQ4+hw?MaD;pZk+*Vz!}&uAm4{b6)X*V#r)}@ z$s+(!ej~GREwhB=M8ndsSL7W^&{U$P1{*PgrqdrSt~BfwH66i*k6=#@Hlc+4bk>hK z9HCTn>kK#p+YB7&<wW}b#n1Eqc9LH?1J1x+F%U-8yqa-K)>{XglU^IC*HjUS>lHUC iT;x{FSZT$_)GYKzSrALZUXdP({|ICn+&BY&%D@M?(n)*( literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard index 900bc17..5a9c4a6 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> </dependencies> diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index bdff9a9..c4a1621 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="1sd-aP-Fh3"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Gih-78-N3X"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -19,7 +19,7 @@ <rect key="frame" x="0.0" y="92" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -69,7 +69,7 @@ <animations/> <state key="normal" title="Log In"/> </button> - <view contentMode="scaleToFill" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jIF-cz-Aqv"> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jIF-cz-Aqv"> <rect key="frame" x="20" y="417" width="560" height="36"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Don't have an account?" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ive-nb-IEu"> @@ -109,6 +109,7 @@ <constraint firstItem="jIF-cz-Aqv" firstAttribute="trailing" secondItem="lYY-HW-s1u" secondAttribute="trailingMargin" id="ik7-hA-HNt"/> <constraint firstItem="0nr-1p-7za" firstAttribute="trailing" secondItem="lYY-HW-s1u" secondAttribute="trailingMargin" id="kXc-oc-7yu"/> <constraint firstItem="0nr-1p-7za" firstAttribute="top" secondItem="gou-OY-Mya" secondAttribute="bottom" constant="8" id="kYy-Yq-5bV"/> + <constraint firstItem="7Wg-3J-aTX" firstAttribute="top" secondItem="jIF-cz-Aqv" secondAttribute="bottom" constant="98" id="nbz-UQ-0j7"/> <constraint firstItem="gou-OY-Mya" firstAttribute="leading" secondItem="lYY-HW-s1u" secondAttribute="leadingMargin" id="s3l-Ef-OeL"/> <constraint firstItem="0nr-1p-7za" firstAttribute="centerX" secondItem="lYY-HW-s1u" secondAttribute="centerX" id="vHG-vW-gJO"/> <constraint firstItem="jIF-cz-Aqv" firstAttribute="leading" secondItem="lYY-HW-s1u" secondAttribute="leadingMargin" id="z15-EN-WLs"/> @@ -137,6 +138,99 @@ </objects> <point key="canvasLocation" x="-393" y="861"/> </scene> + <!--Journal Main Collection View Controller--> + <scene sceneID="IKu-XC-hmb"> + <objects> + <collectionViewController id="Gih-78-N3X" customClass="JournalMainCollectionViewController" sceneMemberID="viewController"> + <collectionView key="view" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" id="gLS-Tq-kca"> + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="Xes-6k-xNm"> + <size key="itemSize" width="112" height="113"/> + <size key="headerReferenceSize" width="0.0" height="0.0"/> + <size key="footerReferenceSize" width="0.0" height="0.0"/> + <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/> + </collectionViewFlowLayout> + <cells> + <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="Cell" id="KiH-sl-ksa"> + <rect key="frame" x="0.0" y="0.0" width="112" height="113"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> + <rect key="frame" x="0.0" y="0.0" width="112" height="113"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qle-iq-7ST"> + <rect key="frame" x="0.0" y="0.0" width="112" height="113"/> + <subviews> + <imageView userInteractionEnabled="NO" tag="100" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="U4R-a0-sR9"> + <rect key="frame" x="0.0" y="0.0" width="112" height="113"/> + </imageView> + </subviews> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <gestureRecognizers/> + <constraints> + <constraint firstItem="U4R-a0-sR9" firstAttribute="top" secondItem="qle-iq-7ST" secondAttribute="top" id="4PE-QR-dPk"/> + <constraint firstAttribute="bottom" secondItem="U4R-a0-sR9" secondAttribute="bottom" id="D8Z-kw-m7g"/> + <constraint firstItem="U4R-a0-sR9" firstAttribute="leading" secondItem="qle-iq-7ST" secondAttribute="leading" id="Dfj-aw-eR8"/> + <constraint firstAttribute="trailing" secondItem="U4R-a0-sR9" secondAttribute="trailing" id="ynC-Kf-iyP"/> + </constraints> + </view> + </subviews> + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> + </view> + <constraints> + <constraint firstItem="qle-iq-7ST" firstAttribute="top" secondItem="KiH-sl-ksa" secondAttribute="top" id="GNo-Hh-7cT"/> + <constraint firstItem="qle-iq-7ST" firstAttribute="leading" secondItem="KiH-sl-ksa" secondAttribute="leading" id="L3Q-OO-kXM"/> + <constraint firstAttribute="bottom" secondItem="qle-iq-7ST" secondAttribute="bottom" id="pHl-JF-p0c"/> + <constraint firstAttribute="trailing" secondItem="qle-iq-7ST" secondAttribute="trailing" id="vRx-Mn-xec"/> + </constraints> + </collectionViewCell> + </cells> + <connections> + <outlet property="dataSource" destination="Gih-78-N3X" id="Zyj-ny-uMv"/> + <outlet property="delegate" destination="Gih-78-N3X" id="TWL-m7-WCV"/> + </connections> + </collectionView> + </collectionViewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="blD-s8-5JB" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="303" y="2136"/> + </scene> + <!--Create Item--> + <scene sceneID="eAD-0s-cgb"> + <objects> + <viewController title="Create Item" id="0x4-Nu-mZ8" sceneMemberID="viewController"> + <layoutGuides> + <viewControllerLayoutGuide type="top" id="cYU-LH-eDv"/> + <viewControllerLayoutGuide type="bottom" id="PPA-gt-rZ4"/> + </layoutGuides> + <view key="view" contentMode="scaleToFill" id="pfn-eQ-aux"> + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="uPz-Ba-WOI"> + <rect key="frame" x="0.0" y="175" width="600" height="250"/> + <constraints> + <constraint firstAttribute="height" constant="250" id="Dv1-Jq-UTf"/> + </constraints> + <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> + </textView> + </subviews> + <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstAttribute="trailingMargin" secondItem="uPz-Ba-WOI" secondAttribute="trailing" constant="-20" id="GJS-pf-uCT"/> + <constraint firstItem="uPz-Ba-WOI" firstAttribute="leading" secondItem="pfn-eQ-aux" secondAttribute="leadingMargin" constant="-20" id="PRv-Ga-Ld2"/> + <constraint firstItem="uPz-Ba-WOI" firstAttribute="centerX" secondItem="pfn-eQ-aux" secondAttribute="centerX" id="ZPn-hI-c43"/> + <constraint firstItem="uPz-Ba-WOI" firstAttribute="centerY" secondItem="pfn-eQ-aux" secondAttribute="centerY" id="jm9-iJ-17n"/> + </constraints> + </view> + </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="975" y="2134"/> + </scene> <!--View Controller--> <scene sceneID="Sp1-uX-mf4"> <objects> diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h new file mode 100644 index 0000000..65a2f26 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h @@ -0,0 +1,17 @@ +// +// JournalMainCollectionViewController.h +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface JournalMainCollectionViewController : UICollectionViewController +{ + NSArray *collectionImages; +} + + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m new file mode 100644 index 0000000..bcb3558 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -0,0 +1,115 @@ +// +// JournalMainCollectionViewController.m +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "JournalMainCollectionViewController.h" + +@interface JournalMainCollectionViewController () + +@end + +@implementation JournalMainCollectionViewController + +//static NSString * const reuseIdentifier = @"Cell"; + +- (void)viewDidLoad { + [super viewDidLoad]; + + collectionImages = [NSArray arrayWithObjects:@"destroyer.png", @"drake.png", @"big_nerd_ranch.png", @"talking_heads.png", @"true_detective", @"sleater_kinney.png", @"x-files.png", @"run_the_jewels.png", @"lean_startup.png", nil]; + + // [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"]; +} + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + // Custom initialization + } + + self.collectionView.alwaysBounceVertical = YES; + + return self; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +#pragma mark <UICollectionViewDataSource> + +- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { + return 1; // change to months +} + + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return collectionImages.count; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ + static NSString *identifier = @"Cell"; + + UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; + + UIImageView *collectionImageView = (UIImageView *)[cell viewWithTag:100]; + collectionImageView.image = [UIImage imageNamed:[collectionImages objectAtIndex:indexPath.row]]; + + cell.layer.borderWidth = 2.0; + cell.layer.borderColor = [UIColor blackColor].CGColor; + cell.layer.cornerRadius = 30.0; + + + return cell; +} + + + + +#pragma mark <UICollectionViewDelegate> + +/* +// Uncomment this method to specify if the specified item should be highlighted during tracking +- (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath { + return YES; +} +*/ + +/* +// Uncomment this method to specify if the specified item should be selected +- (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath { + return YES; +} +*/ + +/* +// Uncomment these methods to specify if an action menu should be displayed for the specified item, and react to actions performed on the item +- (BOOL)collectionView:(UICollectionView *)collectionView shouldShowMenuForItemAtIndexPath:(NSIndexPath *)indexPath { + return NO; +} + +- (BOOL)collectionView:(UICollectionView *)collectionView canPerformAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender { + return NO; +} + +- (void)collectionView:(UICollectionView *)collectionView performAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender { + +} +*/ + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/ViewController.h b/Unit-2-Journal/Unit-2-Journal/ViewController.h deleted file mode 100644 index 3ef65d0..0000000 --- a/Unit-2-Journal/Unit-2-Journal/ViewController.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// ViewController.h -// Unit-2-Journal -// -// Created by Jamaal Sedayao on 10/9/15. -// Copyright © 2015 Jamaal Sedayao. All rights reserved. -// - -#import <UIKit/UIKit.h> - -@interface ViewController : UIViewController - - -@end - diff --git a/Unit-2-Journal/Unit-2-Journal/ViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewController.m deleted file mode 100644 index 8e96355..0000000 --- a/Unit-2-Journal/Unit-2-Journal/ViewController.m +++ /dev/null @@ -1,39 +0,0 @@ -// -// ViewController.m -// Unit-2-Journal -// -// Created by Jamaal Sedayao on 10/9/15. -// Copyright © 2015 Jamaal Sedayao. All rights reserved. -// - -// hey youuu guys!!! this is a test note. - -#import "ViewController.h" -#import <FBSDKCoreKit/FBSDKCoreKit.h> -#import <FBSDKLoginKit/FBSDKLoginKit.h> -#import <Parse/Parse.h> - -@interface ViewController () - -@end - -@implementation ViewController - -- (void)viewDidLoad { - [super viewDidLoad]; - PFObject *testObject = [PFObject objectWithClassName:@"TestObject"]; - testObject[@"foo"] = @"bar"; - - [testObject saveInBackground]; - - FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init]; - loginButton.center = self.view.center; - [self.view addSubview:loginButton]; -} - -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -@end diff --git a/Unit-2-Journal/Unit-2-Journal/big_nerd_ranch.png b/Unit-2-Journal/Unit-2-Journal/big_nerd_ranch.png new file mode 100644 index 0000000000000000000000000000000000000000..572d9388a1ec57c8452bcd2feceafec69442d618 GIT binary patch literal 586089 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�JZ=4$G^?~{=?s9Uus=i04RBx>VO9px!RI> zPcJEI2R;4hLI(T!fmCyJF`@mSp`OYFnB|jefUtg0$j}=HXKd=YeyvPNEuyFFIv<N9 z?nb+BeRnJU_aoi6<9(f<Wi8Z~d*AZQ^!?HKcWwW^y%;6x?$>k7xJlI5wc2sp__LaZ z`<61W#eUsG{7C`LiIb#5n{Q#?c02%k<mQ%>45K<ivPXy9jPT;+<d~$daXRsY<6mIN zf2bqnXTV50;fJ#0b1!GyUH}q7l&Vq-bn=}>j##DWCqr!DCnM*C$IAeo-1zaZUCP_) zIivzNObK9p+npV4r7Q2I5a?`U=U}$6|9H0jNOKxBAD2h_R|1RQzIrqJ?U$ctKmPN- z1#q<_m_DyH@A9qYU!EN4B{SZTKj&@vV*zD()b!cYVz>u-bPdoY1VnocQM{#caq`$3 zun6SDCLS}(JOMPkvhBq)0Z^t9cuE0aS74pT`&(LPbxXi(3y`j|F7yG0<|VLN=Baq@ zp9YpRsB}or1}JcgX$MS|IGvrV3_QT|7rNxtkVZcI^JNdNn_N`Yf#xU4CF@!UVA=aE zk2HLl1lMv*dqCFmreUw_Xf*56K;XI22qEJ<I_Iq*Y$=ucrY&4Baa*aRXr5mI5Oqx} z2i|Dupf;!msIolPxd5ei4ihk~sVMT!sx2-AcBwp_^<UIqwDo5OX^;>Yq!H;DX@nsJ z=~6leP>}BKK|oYMx}=rvZU&^gyStmA>zVI;J@@_rpPy#-+2^eNUTcSJTPq@3vjExt zrZ!$&oc-?9R<kAAr59flp{RsaGvF~-no-!o^qE6Z_P|d})b@?ZgJJ*2(41x;UhhX_ z{lNm^wb^#LRKW6$f!<X4;^Jbhc_KF_Ovh%mX^xVefD8J|t1rV@ZZV73r8a?ay=IH! zf3pDg3RNR?u80pW8e8O@cOE~MWn`Ur-;97wb>$ig?<E--K9!cLM!XjfwKzDwlikUG zKO{BQ-v&!_jQ=~`sH6&^75Q5VVZMznO*r0_mnGO8`4jr4YKQV%tkdIwdfM6`!c4$B zvHC;jUSoK<dJ=!lD*dTk0p9ESY!72b#7e8mMpw2_F0VEQGFuE+14_R8PPC>_=ddeZ zWC#B=Vw6rWOy>nn7P^eDzl)<1IPTvFL=y<eg5#!(frjDI7Sa7zPLw41i3_p%XJdW6 z>~BXmEk#DhjF`d9mvu)tjE7J!=-nQ~yE4~n_n_4OZvNm<aj@m#W_wok>0UK(A))1- z&-)>olngcq!^t>e8GbCuVaECn^~;Koc&<+RoG*8(kmdt-YZi>jt17$r1F5<G<h0kl zZ&AXGz)2pCg}vR%N75A%p>u{WYaj=Bu-C49rprf730@k-Rr5m#oda{2EB)_x<w4Nq z)>g9b%qvVET>bPQqNA_;Cb%d)U;c74={QT#-8J@OJ=CH79al3cd%=-L^P`{lr}-$2 zWw5c5ovWR?B!TVZWtF%;o*T`?Yt^U)4WGFV<C4>BOh`s;7mz28rqf04#n$b8!~5CS zzqh$~Z3BITui(1SDz7a6KLTPOJ&I^w75TIZ)ZUlXO+=6<h`^<rmf(*CkO$1!>E9s_ zdgIUi#`|HVM!o9nq65KO=-ly}w_E!VbMgC=z?zPSWQoJ{`?Xi%elV-6vIIRtpuUB9 z4i$8&-^2!eP%)rxAO!KV`F6y<JYW~oM+mbdbcl8(K|l)3(^Jwd<^EHAL3>E#A&|jj z2m6Ty|6I24SR{Q~G6nCinBMV6Xjs%1dY1I3zf|ciF3)Z9U9ACZd@3axfg8#et_|3k zp~+Ek#CxT^8z2-9g_f!U?Tqlb#+FLQN$9;mNh$eGQ^*Fry`u44r?o;eCr;8g#NyNp z_|rrF(LFar0xzg2ArF83!nNghfI&cFK7F-}1Y1XR3ITMxnqP<i7DyEqz~qbI74Ix? z=S-Um6T!lP0VLJ(`4L3?!R)escy9C{f!197X}<+^D0M%@FkcA<%4~HZIxBN!=UOaW zgAF}{37%=`%A2SHf;(?$S4SrcFssW0<A1k}=L@a@8<fBqGzP>)WUmqn{Dztqt<V6R z#$Byir_{}@Zmg*ql=L~04$5Ze7!qv8i2{US(vr8Ehng6wqX4Y5Rc?}=1Tg>~WWm#u zJ5ayX1!(=`(7NB>?wQV2Rc==%K{qZjQ4<-Eu47lX`*wH+y?7|#UGXz6M%qXvIi?8g z5z^JuTP8VOOdDK668U$)&(KZ2mypo%yZO!fzNmrVA#?~PkNf5OB{gr0(@4sJDJtuU z>YpM6t}Mo?)RQWE>`HG}Hp`4Q^SjmWwC3kQVZf`1NpZye*)Hnrxz)2C^D8xLdKA0s zH$t2n=tA3z3QqK#Yk#19(9K@o9XH3QsiJJHgLVoJC;s_~6x<#;`$HvBbD+`k(FiNO zK;kJ<)(Dn<WV?IQKj!<G?=r`6OMHpkNdFV^R3Dsgf1o04vg6w<f5j8k%z1F}{<5UO z>qd;a8N0p3`X=A}j5%zH)pwQo;QRu~>bF6x(yKh0dv<Z=D|~b7K+Xt-S=?)26(g`; zhQBXgp|eG7&IzrbDeWlAO?BC9R@rDN!o*^c^bv2%9wM`U^*LqxcB?UDOEX>X)-haS zhI3UM2U47Pvxe<w7^;`3?O#N`tpnTz)@(<JIjmklqYA@3pt|6xRuxAs1_0H{PuVs- zS%0RM)TR{X==o{BU_(bYbFdfEpUcMCk1b+hD-D?I=9MUV>tude++=I?cp>5mys${h z$9cMX8t^mu{Z*ng;YV9cp%6{8;$ZVa3ibq6$H5`?jD^ZkO!u7f9_qUtwL*rTnnN^T zDjLwasaP@)K<>R7+oNL5e_};byjK7|!pBJ(-}fy2-Ke;L1E}GPLi9BzXLs?{l103+ z-E?bx(zA8zivD~?Q4qBOB^d$FWH&E-sc3{3BY$kiy#&<KDL<gWfo;`4q$%@Eakl0C z-p{_*XDG-A#?AvcE>7=_Pldo_Y?UANS5#cp$Y__w^j#~9V#mZbuB=|%j<%-E#YojO zi<Z!GTD3cSemWiDL5G9Og_iFv9PAxMKA1H%f-e44^uZm3cx6bmjX>o4n1mUZaXHxl ztB4D<XR5nP&duLhKHN$6yQ2mL?v=F9tY)PTdS4uRG5__ypB}C>N=$gz3h%$W-M4RM zSYl9iKUMT*3uMKEAE^88v>!Z^@&68v7ajxeE%Y;Gzb$~Ewd$`Y-kP)=c{h0*`SzyQ zC|DzrCsGj$+Z29m7j=cy?r}zLen<Mt6=!1nkE#2^bp5ND+D5;4a(IcI-naf(o}6w+ zLz&VS@hp29Ry8OunF~~Nv%8UwP1}$)`j}+tYwQ@*+`upWXmfh^2U(tVuOKpd<zOFh z!V=w&tH#CMGP-29l_F@TR^J;#X`iZ+_Yb!<-We?tv;u?!TrjGl+ZElqWS2&8MQ<U; zdG%gRT*rq=Tbg@O4@qaKI0r{qu@yN7Os!I_-wr>}?na&QdM+dG*Mi|iT587co{TQq zW>x3fv`?qcrl@Hvb^M!WpI-};2)y-kMr~X^WDjT)^y{@q-)!HQMNdA%T2|#YWp5o< z^u=}_Gg$JFq+h9WV3dg9G(Zp2Ah55;y+&K8A=_{iZY4SC9n#}a-^%WL=9JXsP$FR3 z%VG;E`i3!6uml(7Z^)(0dxVQORbkXvDQ-O#aQl9;2sKnSGu{MDzI!>jwiE+QmIqo1 z>Y`_+9VCM=Gx~9LQ~JG<#V^J@>3C^%zr11pn(+GE6Z3jMg(yKZA%%S~#+Q9~2NjrF z_7mL~&3KO%V&(4!`s<&OAQq^?AG3B}msdYxGdSQvaInf)E;X3$%W3>`dNP?03w~tf zcL^R&xBeUqKAS+CC}1vIbq1Obx4dCNmpkWqY0cO&#bZ2?mXA4H_3Mn6Q&85gmCXru zq?l$T;NRndri%Ts*z-^1P0h>;LP~<-eTn1`^wcjyh<{%bA>!kf&+m}FNmR|)-p%Sr z*pa&O)wZbHC2}H0tRu>$ZKKgT(P<2F{M%o_FUhd~x_N0P$;X%c2H`7t+>Vm`Z^xgD ziaYs|*KZJ@o@-L7GvlbyKz#6mwa=Sh`{d9X1u0gm(Cd#hY9sBXr^}m0{U4kd6~A@a zn6Q`hWpMa@>Vs~#chS(yaFvTQzbsE_<+hc-<iB&a0^W*?LYq^NKQVpV{c)_}Ny{g@ z5CGjfnCmNvbZ9k52&4L}4+sZ(Q34>qIYrM6E>(X1ci&P#-_h58CCLElIve{!&7-^7 zbJy^k+<~=c6QaJS7YEkORLH<BRHO-|Dt$!8Z0BA$Oz2aZnHa~GKk_X6pB_xOy)bk; z20U|FrB9(w@1`k`)^x@Jdg&U-^IbC|@+Q;cC4H?{#vhDc8M^{@XE#);w}Y+~PO8Wp z5=gjNq_(p80qExSF8rsaH?gMPAz-Idr0^ThHG}O6`_hj+13&}J>-@HU=S|OM3SVjI zUWh@p;X8YqY2B0bSap2=J7GaW&Ws@|j08}DHYk|GU(?4zi9O0(i!S!ielP|@H6qeh z<hHDe!q@m5G=lSe`${!nI$YVs;sts&$043W$GLCjg+;_KmCgLg`f*hD-Aj)w%V$QG zG>7i~H~j~tsF1I_!`h{~KsQm1*_IvIL48lxq(``~&He!`@tC6LKrMP?#5-1}SnR>T zrm>g%3#FFbM-1o1;)0*Y{E_VsChr(H{^k~gO&^NnTc*8yr<gZi2q5fg>#;wxxPKE_ z2x8tB7~}q_^3xyCb%&;pKQ<{LSbR~el<_rynKpcx@i^HKf9Zyik6$93Uv@ZAfHVSu z2XI$b-8CH7wgEO^gbdaHEgpYS>St_c2zzzSRN^q|`4y9J{Y3vU+c9$Uls6*j?SgDp zcf<yIMbPClj`!30+F*b_JOZh!B0T(TXh;<xD^kfzQ;(aKf=%AQ7tm<iJc@WS0LU1- zBp41M^KSCl;X$`GeP*mIa86iLdNr^kLQisl#&B>JIu&Z33qtTVSA7e%3HNeyEb>hG zO+nx8VMA@tE)ffk^N=5e>BIlRXX9IQrfViIUi<L13o9f{UIxvLvl_dVG#K_cd*-<6 z)C%a>{k$JUn}^3y(t6#k{Ckh#;N=Q*z|ZJx=P>5@t9mo`<8uL;PwKM=;}xiYXho1$ z*#!rNUap77=F3;t1_EG^2A0?`M$OL`0ut5^?03KdfcsYK+H8?$Ws^g8g-hBA;_D@_ zVY`5r){?8VTDuT1q5ga0gb#P7g7LIG;pCI(`t&6r=6H6UxiZ%Xn(SMgkForCGh8X| z`%s-j2R&!P0ce(*^-sL;bk`LN<KCC(cQ0q+?DuqB$?lX2O~n}gGb+Y$x+$QU;<cWi zeFQ89Ht$II?Iah6zru`YKb$gEzE1VMxIh63N8o(79n16}%i5mcrGC_fCdgOxllzXm z|DK6IP0m=p>>jv&B<8s|@($;(;3m=wbv~TOh(DAcw=~~}C|WOQn$#qh=Y$XY-t^E} zSW3RI;-Kh{Pif(g41cTHRekvm`%mhEkhZR14#yx5R*QHUwMMi5hF<5g(V|{^w_N~w z>eQkikXoG=P{oe<)e?y-frc3fqBXr~U0;9qx3jl<0`=l-bMEOx6FSw(hIR?&6^A}s zS@$Hu(Z$pz_#U7zmR~z@dN%ih#Xb+l)Yjfz1uW&EGp?pTDU@$yQ-MTKTf8jWK0EUD z7QT~#EgWCCJ(M@O=l;%dK+Z!djh-&jy;u*yhwv^tZP|8Q*(R3`fkL<-oMLIpSNX@v zCT~*-bZRTRDo|Ddjm<F+=Kw@kyGT|Q(9}>tE#b}hVbidPYVEMN+Sh&7LDK6WRg;sK z6!bw_<co0NbPH)B`ZGJrjCBoeR}evNsVbVmKTA)U@k`>&3%*fcYvHr)?wggJh21P? zzxy>>Jl+eb;B&?X65W>VmbLtBj*UU~C$7tn-<JOJmMunIrFvENf*@YyG34s1Cqd$) zd+3m=oCEN0v9@0>+g^^xC)Wec7PF2=*#eu_r@86)R@|HYkTmbdgDaGHbD&@BaiU>8 zezb3pLT$w=RQx>vlcp5<W$jdSW*P%`kMiJkmya#9+e-4O?31r)jt~H5sqOcgJ3R1F z2xA9ne#<Rx3bN@w+^xyEV9~&AnCiYDlba9vjik*kzP-&^%FH$ND_y0{PP=k_B$vNV z@?Y1HXrM>?=ajuE?4M;!bk}f#DPR2DhFd88lzbmpixu|IMZjICv!2MYyj(1oR<<pa z*ku=vn%I;Ho&SR(#ljXe$ZrfzP@3bJ>L~+ly=$EwE{ApPNp4%dTI6tj1Jk(O<4MrN zvjITePb@&{K2a?h&t&ogfKj+$2Shdiyy&;Wft+sjCF77cHH-xAD-N<|)3OiV=D;Ok zVxMWaAcaJB$33)pvX9AnK$Doa^_Zyj%ZQmoQLw}5MFx-RvQ>RqIwF}G@#yN7b*R4F zw|`X#pHvJenm*g%sU1I;(fkH1;6Y3>oJn~G05fbb%Dc&$mmKjTvS4cJzvHN(;qNRW zc1b*31y3$<e9&+NYtgsR9cJ_XIY;;oe)JdofdEEc1O}iyiP7EhoB7{1JD%n6GPd9J zu#*}OfeO(jbc0QV<~&bAKNs{%pGSJ*wX)NF#9TYA-TlUvjsB$^o506&5(qC+RKi-h zfa;;ydPXy%^y}nii0Um^ujY{5)1YNyt^!h3eU>xDgQDk5p6;F=L*h@yemS3wRRn<4 zabXq-We~(zRbY#sQNMeyeq&*MMG=$Z>*Kq^biM>VNC+^6H93x#rvEd6#}@_c#qW?n z4b6frLW1Hq@5gwM`ldHo1i7>!G7p)-M=0ujG-}`M{Vm<-Ozc_A5$^Gg{1s}F3iD&5 z7T*5W?rR<}))PFLEA^z&&g!k5%}~2z!06vLAzp#)?YD76aft#J(z4WHV-KGA;y1)x ze`SqO4Asu=rquCya9Y_mGqrD&qVRo?=>G`H=c9i<(ZJ#?RqQGFzD#4`$(D!l5}B^3 z`H;7eSKZh<5fu_DGpe=*q&$(RX-|Xc#TF8ZTZppex%ZhcDDUcwqPW;U;oi^xnhZF! z)mw@JGmL-epP&<*eA(s6P+73#xHP{u3Vx{VE%BVzhdU24r(Wq%jwMl&JC(%K)C#5* z@9pgEt)Y2!$u{`y+MaWGmdk;|61s`&7LCn-F0%f-KV>H|Oh8n>`|_{9Z7routshYX z^?>rCGvE)g)9S%aqaM?2Ne)czDDASTSWjfySQ`c%7T^5C2b#EtDVtrZW$cEQ8d>}- zrO7|9)1#3nZS0%B_j<Wk3^=w9;A%Z$_ry9Sp+QVmsLR@;dtKDDco^Io>@^v8ZQ;WU z(X>oPLM=U5)3H3tO`b(`U71!Iy;nDcoNT389_7*;7rNb&wEpq+%(q+^8e+%*obVct zc(M{yLp#PSOAF7ULRhIi=zZ6L)ms+Z#NMKZXr2n$yZXs!(&Ws$Bs**tk}RKufBxX7 z16e%qWHe<0HkA!(;dY(_z~96Cj4Pc9MuU%8W_4*6<3WbaJ=K}vM98VdgM(Zn^QQ}= zr<8}|rz={F%_2yD7tZqi=5VEbwaYa4x9Z*d8~y<IO9he9hg$}ASQGLlvp7-Kn{K2D zatsmY%h2@CcN<W&Yp?%!H)`}Yj}j6!8h=!aU)ScIuB8vOIwyYVG;$O5kEnIO1M`vM zD)f%!7J-x=j#cizR=*Jgdl|KaWs5!__Fp`(+9y3W_LUacCoP1m<x;B+BMh$9n_zBn zE-u*%nrAxS9H;&Ht6+`OZVHj>V&15OY|l&~=(M44|Av;QS-32<fZUy(9|M#0&*<Vw zu~Q13AnCyBuiy-)q^+XIKJ0#MCGsEd+_5;75JA1uxiOsgS-Bf+Pa`G=`jaIvuHBi% zecaSHO(VBWpOd7UHuTAE4H_W>{ZxHg;)z#(rXV|%J^Ss0X$0Vu=1(BZPZTU4?4Ump zbh}@o3mGd$`WWm3hW3J|fPZjW3kpZxc8-tsk>HTfWsy*WL5v6FOaKsVMxAGlqHM-b z&wNTfg#roAOla+yM+H$J9$(_p7}cyOyngDB^g2VVnz$Iir8T?htCHe1{)fUzG7tG5 zuFfbn7(v=9O5AE@s42epMV1?uqt-m6I#j*dVdIun3|pp3^~7mMv>u8rnMx3^5SDV- zZn@=s63u-_XZs?-Ma05dg00{9^o+W6`lFG=)X7+!Y1Deety!N$YX8{g?(@mSXs7q} zSQqpt5{crv5Wk7|TLqa#2NSn6xT@sK+I^w2Zx4GjD>Y9a-<CM<;z~K}$op}ve>T7k zFdwV^@ZP@9u<31zq1Df?%~ha|9#QWzrTtMqk-Km8RiLVf>bU^ILO%lwukTwjPxt9h zZ@pRVh3AistP;x2RnsjJxCg5zWpD>5yF`3SeyuXjxg0?|rRme`O9-IbRU)=B$#eul z7u5`6A@k}F0b-(6^>d4d1<>_Cp9k0J+`>c4im`O04#8<!x(np0e7xDvSNLLoS6=m0 zy|jn%q5d1{wv-&{$1nCuFo)=PSABQq@Vv!d*h}4R4Et{j>JamTh)W-zOWRGpxp|SZ zkmW6U!hi<ZW~AB4_i0XZS21TX5i&clT}P7={QTxAM-UUVD?Gq2P9ix!-$X=FeDE3$ zoBcMx#D`zzi)Z_furtK*7l&<;eSFyMYYMxsHWiV+v!h33{T)XkEkEDY#>M`MJQ0|c zZgOPS?=X__o_0#ueHgi)_*@_wf2v(02v$qa%)Q!;^06^_BbPD)&Jyu!T!{|Zm!=-% z8MP+CMf1;))KVcVmCz2b>S>D2S#(0r+sW@CW((<`y4M8$<^?W=tHTT7anPI~4DPcD zSnuCL!NID(Ab|EbsY@WR$d+B4ygZ)q!@C_#U5Z_UUpQ%lmo$TEY{!TxrH9+n<-1~U zEkmIRpATE^U%<tJ3N5~OdP@ejSaf2PFH(BPJ#sEwjCP6c?ALg;J_zs|2cze3K*dJB z5dH33d0Vi?EgK7-@(3F4*Qo;8`p}n_to+_TcwGIbn}bVkXEll5N^RSQ#6Srnv2$`6 zFUjOHwQH%i0s0oQO)F(hCV{U8BEtQKt4VFudEVMzRFF!O<Xy;st)|(5`lWHW4yJp- zZQ-1ry_0SsdJ)%a;K`@rnqf`qQzoOHEoWcE!%^d```HkJP|ml670cU8H|%XUSg+;s zu;p>nv&ueEv2c>sZARd#_p^OfD-sR5Ue*6Yf-U4O@*o?5(CzKo<45l^)DAG5P82xt zjQ_rtPwR?#;w15z>!>bbdrQzYTzDPL-(=dC<|^AhDb4Kuu4ue_gkQ6T^_GWHd$6{^ zps%se=ZsNlIU+4+^=Y)ty`+Wf^D@L)begWY?8eE6n)hYx+a)tTmgKk??qzrQn5G~O z<(6alM_>OWuOFN|g+YaA^Z9!9Q3ZQdl%)9tf{+5W$(MFPeC75(7asTWk~bF?+{FTv zrMbSZejD4V*BwwS(CJI=1N)^PXO8>UH$UVXL8fy*o9|#tMZl2%_HUw+|AdH>j=3&K zjVuPqX_pcSWvp`uQ;2RezAA4Q=aW{_>!EwaLYn&8nSK%zy~$_f>e+h(1U{M{OPjc} zMO-h96t)pImPmqV=?>v_y9g#-)Iz7HXLKn**POXh(UY_kzyb<SINO5ZyaC0R^4YF{ zP8cZ1rUpLqvs7|ch4#fAlmL!Onh=<9LufIm8l|$N71%L*aqoU;-PbX`lw18F8UONg zUmGQ~@i!QUP+-LDE!*I6^T_slf%KNQm;J^~gk7G$rbjXlOu3xq%H#Km=@LZeC2tS6 zB~ssL2D(YdyZym_SS?Kb=<)c0z0*=k1s@*KGz2f28{dtO6Iyb2$hdozm*~bTMQA9Y zC1>!qx*@<NwZC$JY7I9h(L%evSgM$`(R(eS+N~;<!gZd|V>u?_vfsWcIylF=?4dl! zv_Ec6!8X^kHUv~<e<4W=vw|V#tZD3F&(}k+Y37_$(cpRM&y5p`GM2Rr_d^2IG<vt| z;9?ifW_ha)ks*j!ztsI-gnGlwgHdm8qJOQ4r6Rs9IX<%9j3fm6zHRmyJ|1tr_stg9 zczb1b?7OS$mNss5dlp}<ea0EHf5D|FYlPCVHyOjyPF{RVyN^1)^SsWKEt!7di@Kqu z|1v;I`>TeiE^S2kj71%{r=b=&+~m82Q>=O28*|vM%k_U?s61Hz(vtx-WeLDf3){7D zS1FGQkSW?omHzD58w>R;ak96#$UQ0%e|eoTUoi5Q;0l9>xHdI<+UW1kfD>1oHTCYj zRyT$A-w3;aA7pZZ?jdnXZP=&Y3<R4@W0Hm<2<X|XI8iG$QUR0`@{ySffHR2pBBK3e zhTJ}G-hRI#_FL);qNr+hAS0aI)7kU1Pci!D&y)*58P_<CbF-q86BD+;d8nY}1c>;8 ze{Rfgo)CRcRM$p6<+15_zuw$k*$ts+?b`4Cd!#<)K1o&vfHfy}ZHI4thhbrzzx6qH zx(uyB_bVKHrh-0p5}#%*EH$XkrCOLk6|)Enez)=~9}oRR$58SjldGZ!^DrYI)DwZ% zaKjCMuWTz3t%|QSAiE{|bzb+d1A}O&^pY+s=j4@9Af?%N1~J71>Rw9UoH%@)@-@i@ zm1jJ<L;;(PCksbAnExLCZ5`~EY_%1H(^x9BA+`pOEWve#es6j-i_^)M%nrh8#-fdK zcQoc5mzwkwp>^<8&V@M&k6F$zH&EO<FvOhQ%x2L>NVS0ZqHwPMIT@SEANJt-)8f}n zWO}u&4d_#xWp)9<oMpmgn?o@KS4C7Z(|AWT%lH^Lsm`ivTHS-H?TFgnYclX?;S|kL zyqy~}o;VdmKB|AosBTCZ#j7At=}<njYzO_}qP{oH2I;?iR8_r-1o_Uw)<efeMM!g! z9lBUQ3!MWxQ+!TYx+`#e312Ob0jM@&m|Hs9OO<ZzggLjHB$$wB;?Kn9OO@5&8nifq zfPA^CGmPz${JqK^W6@SklOIGNbELTg`>zeI%}(^No2bU@&C~Ie;ZQVB(rTx+dH|d7 z0e+k|xU9n!RQCySBmjsvssvR51fJhu2d8EmoV(TP1_153LUJ?!Q}-<CnzYXV!1~;? zEyUzpeS$|6y3ex3(NTo>W3AiFS};rVd#2;RqKGpLTI+t}c+7L$FK0S5ii7!DAwtmR zL|bdKZ?*y2ZjgD)LkRoA0D2Ix7X4c1he=2SK*JT0_u`_6c56mOYzV|z9MKiXIcxN( z=afh;+wnqGY%VHrv+ZOEX7w36$FFSjSfEfHS|9||odWwIuk+m=Z`<^jXsDp4DRa~T z6Sgka_$B~ObwQOX9CXN0`7IE`#yS|=&1RmgZ1W`4$|?{SrlFq9<L7A=VrrW{;FLVh zZOV}|XOYTEYgRLq{t8L7H$lDIAK9*oWlKbRdrjUibv*u=I`q2vUgzqM2a*wmh1(3P zHY7Bbx*T}yI34vb-A$dBT%=o-?kEZ|x=(u{|9hE<QG2y5{et=Zr1gT(Hvi{!p|1Zw z3yjk$GhWLy?PG<5*j!aqK2aBv;?G{=QSe_!g|Ay44tAf3f?h3gz>xLOt6k!kFupHM z;L(eJSYlYGr!zY5mtT@YI3rY`|2o;@K4^((Vb&Dx>MIuOuf$jfoJw;el<FddzJ;Ra z5OC4a@W-$aa7tnzqI+B0gY`euI!%)HU+979_5gKhss-Slk{XYc@G%Us+F|H$oU23T zYBT!CA&x0ZuG~6cL)1eEccNJWY=f<X0TLAf2>|+IIDKV(wcxzi%x}>cOlS3RLXDM! z!WNqW#9jK+I6D$%X}E~1Y$P-qstI#ljeOhq+q}RMZ(z}^e@;r(Rp@u~s1+VS;v3l8 z%o2@ba=L~BvrJntviv@=Y3%pccN8PfhuflaVMVYNe7c!Aoho+C*zSvaIg<yy(vplw zzC+xRtJXZ>^6FD{TTSl_aK|P8cAQzWhx|cQ>wX%5b7>C08BmkIi+ND<MYZ$|yYYht zjdl&gmwMbSIqw$)v&Vy6reJ}1OrvB8fE)TzdHAwK)3chwgf5{z75JN}aU7f<PKit> z3s^7xZm`<}khePjSMUVmAXNV+l`*&Tc(>KjEt^emHFFhi>|(SN6n-F^bcg)zYRz{8 zdT&Qc!yN<35~IGA3N9DiWD?bcK@waxV#JX_C+(peP2Bz*<Kr>rlMbyw#UXd3a@_QI z3<j1XKp;4*?_Yrh5D&nF_iHajevEpNck>-`lzdWEekTwQ2Mf(OmWVJ$fNCd4Z^8^{ zBg!dZy^$tp?9KYYm9fmVzBpm@L=tBKRE8=#E_qR5^VKIkVZ4af#`vwS1>npfKp@+? zq$^Y!MmsnYr&%GRY3%-HE5r^Jc)Vh#2tg$Xur+5eW%#&dc{VaT_3sfuo!vL9MJGbd z?fH~f!<(8){k`)iUm`v8ZyEr`0R~#eb<fCowx?|~Bps{^E!MSDhZQGRQ;a|Zid~eU zqHk%VW7em|NuY~TE<<qz^e^}Ry;OfV2$#-nYK434wkkfz^*j4MTnJX?4jXxR0q2** zqRcPLVSstlBrc%d1F=J+$qSfOO;hs+@AN(A>~MBIc`a9M(PwttDK~=`@3G;^G&$xw zn-bINhphUSvs6;F&$Z-@70^BNc~?pGUx?)Vj2yywp)i(yP;Q$6e#>Miq3R#pRc<Bh zWI1iNJ0|v&7M-qGL>8LHx{GSexo6Fg2dTJogxiw)BSIW`Na$x|2Lb#2$K~CPnAocx zgi)hPR(!XI6W9AjY;pVehP5_9pMP<Gf1G{aq;BoxL5o4P@tEu$M}31>;eCEra;VN) ziP22zaO5=FN)y(6kl{ip(JMQV!V?*4GYN~Ea^W(=5^GMB)oJ(-x({%6%x&{llK34s z0b)fH6^j00!?*y%ji&$NdhOQwT;?OgNV_!N<*Fkz3M6nXqI(=aiQ(~rMpQ^G$(qf9 zy-X*A?07W?4sn)?lU;FBUDBgDMYHMTJC>uv|4<j|?xYR*4V;iGRDzMMJKlXG{HrZO zxPTr8>=PLF|M$kzO*8GFwZp4i!P)Y{X%ak_ADZ0(HPS{=y~?`AjL%?0!s8TmO=VrU z8kZ#n1M0o4m?v{zMoW;y+L@Y3h3#n2Ly3BTJe=JTkcJ<LU%-2D8H<+#-PshW$yl76 ztJ23`IJOd<>(<MLgZBk=nflp<EegKPZ5ddn8m9K)ayG+FrIf16=jR1(Hm)(z;M2+W z7IPSN(Eg6eUe4r2QlGPnb>KV^G9Znr*oftA&bP+r)Bm;L|M7^eSGQ8k_%+o$EyhC^ z4qmWQ8Q)7}OCgRiEIMQTm<wLRQ+|Nhs5Z?5T^5P^b;%;x-c^z&$VOFJPP8@1$Nc@b zeEZUXM{4UbRP*J4)=g6)Q<bSbt)Dhd)Ueu(2d8p8b{KX7DHeLi4G}^MG{SH%#d&;j zc9DrQr4hI-qSvOl5|NLihG59>@EVYO0@;F+_2-BaC1(-f4?nvT`L)YmYV@;VDZK>9 zRRGb9sc2RljWV1ByuVPsk^Vlbf8j+_a&S)3aE3hFNgHJH=>3^crV|j5uux!F7?oG+ z52;f=>9G0@vIbcn6>hKfVF1LO4f1gzrH5s`K{hi}dxZMG6F73pAgwL@O>+d>-0Ivz zd=ZI;n@x=`%}h#giojD7HNV*#^9jZYp^QPa&u_^C3zdUIY%#@QfN782B)65fRl?df zDXlk5rJ~or6iYYq5;%YR#{nxUU8#qBQoUzM&n?wx$<zjJC~c`xmOO@9c=z`xd|$5) zuUrdcbE)}xDvpu)tyC52S9qjXInVvryU;BjgnD_l;eHe5s<<y4>BrsfUUQfuc}B-1 zEBc149%%C79it2re%1G$RwWwmFZvX^Ie2xkS|<8*bnjJQmkn(Uct|3LPc?9}Oe|JI zD@FaHN^|uzy(#lWqR7pU;t-$aF)K`fG0kKpqF_4)CuP;JBec)0S=;LX!8qd0NU-w* z_8e^i1`<Y}Y03m`g31h?3M=8o<C0!*n3m*9=Nqk0#>~9-*L0B6oP*Ej*yH?Hq@}h3 z^m&J#o*KhGCP=Iz0SN_t;L_=w-Or&uEDziKTtvtEJKq4q^Jg`l@=8AkATCPDCgu-x z#%#cvinXtPMBfdZU7P)i_x4;rX&&PPmx~n->6qc6va>7t^tnH>XTBTf)*6%5HNVfb z@cW^3;oO*4v=CY76JzgVk~(~aKlJ<m|DRE&YuZ2PTdg&e;qqH~`mk(C+VKJTM<xIh zIl-CW#$O-m$0I#sp=qfs&GLOHIx6yd!JHv$S(>>_cE=o0fD!j<Re1xD_KTp&rgem> zOD#SCBa-cTE0#iFJ{q;yD+C7Lax8i-&~b)7jI9Aqb;(j$dlyHxPe*%wpfUa&`DZps zg0<C6{oG8DfNxnVBa~lLwfYl~lFz0xC=T$dP~CDL6sQ-EjP`b`DZNRv;VWYWG-eA4 zX(8nFaRJYQD%jvgKS2li#-*d|*kw%4N~6lCw6L-W{)D)McD$|ZFfyKNv=i3A?LrvP zi+_>yL!r<7nLs7>vz7UbDbgA^TgeC8wZN{m4_Fcju9f(+->xWB`44**J_mlT^}u#s zy01urmMKLUryVd}jKreB3K}D~e_waSX$b)q_Acu2PxEO@A56rV;?inliv8gmO<GCh z64cyDf#)SkH6eVxeeVicY*R;m@)GRo{$1Dm^xjBzn)8H6AHE;PAifdpXB2}XM(*Y+ zhn}#j0EUOau74<m=-FPKfXO20Y8g~-)kTN)dn|*3*3}hXLfe$3Daj}rB-EyhU-Mo2 z2B(z;-6O7vR+XJt)d7FQK?tDIXa1Uzf_xl6)O`QaRz3or0(*lNn`)6(_~Fpz3R_Vd z+dyGYq7ZD5(n3@>Sz>CxSspv>rY&)1Ajsf0C_Mew6B+|HKf64#>l<e)-JLu-(19OO zz5j-$;d!uGRgAu5WjzCGoLC~m_5k&GhWQtPdsW^A3FG8_s<jH<eqn6mfCrAS^@P>d zRGH5F0%Sw0lsp~8H18EMV%%6%Yb9q@*k_ZA2zjlKY^!;1hvS$9b!x4xMc^DRX!-%J zA^01hsY#tbr>~MEN>olRpR2z)!8peaeA<W#(LPI&LaJ9tjTG4<XLMc6Nm}$;qb?`+ zG8ZPyeKeH2VqJYu@d4Vn291weZyrj{*z*iRQIP`KWN*qYl%*N$J#%6sC>8HAIs^H9 zIz=UtN5(kCOz9W|LBVB_f<I#I2|vu6m_>$aNze^6j&HwRhD^=JAY-Ry7W+B>s_vqg z8scwDA^q3xaV>=i%3Dg5HIy4!=!OWLyH!Iib!b?wzZxZo1AW-~zF+L+e45Ph3S9@S zDV7YYI6Hr!dfRR(G+P@x0YvA-tr>3=sYdqhElK3;lH~NlIPLov7HA!wl<z8jbTB<X zu-gJxBG;yZbI4X^%@h~9=NwiH&h=00c$$sf8{rgbvxbMnZe_Xoc+5@jbEx|^4i`Q* ze1*m*Z-aV4%|i00d7mtR8WM@nF0b|{H67K?Tdxj1G!Z4@m377nXQGGebW0H2Ponfg z9x#88+kaM}!7^02c+s0JqN1q=VBRNX?`eeF%Jw!^wx!W#8zbZR@~^UnOn|xGthsv9 zGYjDOSbshJb7eVw`u_COsH(Y}=(lw}=kD1GdnZ1+!Bg}NpN@c&6e;wNDW8W5$F1HH zDQ}BxQ)T>OdZtiiM%e2ziS~0{`Bz5E(k&kkl{#`w#b0$3S9E=%>f73are6}m>|V29 zU(-(4vjyxow{Ex}bH59gXExBZhb-?adTIJzaf0tY$&RUS7O@G&Jt20>Yiq5^jpjtV zH>c>TN1knLGfYZGxiigm!EX2)HH0mnc$bKakIAJAw97{_;=>QDBM#fh^j@Hjyd8Hc zcGofD=309iQA%Tl&o?G$CM<t+r??&)%F14N>Gr#oF)}K5)RVvaAt$tgYuw*$+I_JV z4SzWkwy;qQj{RU=_9YuS2L?<Ej^u95oss)0N~pun<d)QO$ah8`83Ov$mAQ?lIZftf zV`L+$sN$y_Nn0C73Sbd}kT3Rr;~K%*ErWjJ6x9(|o1Bx7u<>?5uYdb9Oh(4;XgLF% zom*_$n$fA%zXPoqJU!jxmThw*NvXm@v;P9>g+N7MkK(ulw>1En6L}ww>6$#c2goW3 zv}#FMaCeUxxW-2XGntDNx9QN>9|zlF!MDubD09EbBegL5jJZePukIsJm{EJ)2bk?< zCG?Q3w(|N%f;mLr0BHYX_YvahD9C5q9<P|7?cLf~1YH8v3#rT(a2!wWaeQO+QD_uu z`d`C5s(BDBgD`3u2=Jb3W0+xFj_Mc+Vv*lE*!S)nQo>u_kB5gV`Qi01$~o%vIDcL( zURUeD$7Ecv**jsFBcsK<VdTkiJjWAt48+5}!Qk{8+rSOKPNZ2%q!CNYK8-r-s**ls zt(Qi|2B)1!DbCCjd9}?DzJ-tJ7+puHzQxYmexd8}Sqv%WZ<^aC+*qI;ngwCZqICrP z@fk64$w~=gswth}%UL9oWuW^;j5qflu;4VJxjGc#XyC-h@H&~9^CwybMW&gi2>*Fu zY=B5rI;$4vyH>D&L8WK{iR9f~O0Re?2~Z+SfoLH*1sVpb_L*TlP=mm2t#gZIK^3_m z*Ie_`)T<~h!kKB|Qf;q=k{>mCuas02dmnFy88{bR`Q{tF{?yle^#s8wqq#?7m5*3) zW)}w@y6K|H#!-e|{uSZEXpKxqs_F4NVeRO35+}rpNEHaRSV>7hjK<=G50GBpRP+fB zz46Vv2k7^m698YWo%2vY+@ju)Pga3)$UO>xX~qg_B5T>5mCdY>V$rU?_Mc>cV@2in zV%mmfA^WeL-7K;9e%K-odZpe*7gDg4L>odkS-7%&hT9cb7rVl{Aj+>okG+H|$FjrJ zQk>;#yLQF{Z#S%+9$d$A?|ep+9bc`>Y(%5zGht+pxXVle*!$MWyFTs7TQ%2k>^Zjj z@d?U=-s8JdR?EB_)GXS(7^O&l(}Qv$U8BeVlqyLp!!`YJj1{t~fjEgN{qGU8-4bQ@ z6I!zLrwU(@#+oS9*VaQ}q>D4+8%^Wf8&kio3X(vQ%}+7w#4@F_&@OI_PckxgC3pxG z*4GMR5011!9}HgGiGPS2UMa6e%%2z6?~`5Q>92el7RVcCbUTkeHQUBjO!&@dU}9*| zw0X>!k)ar7&5I@x9IFn7K#d}~C@3QOG}E|@xm+9w7;m_RjKjnYqxi9~Oo3KFQ@CJ& zP7amajDCxq<y$WJVd<RQYEZT5X^@kHbR}P++xpyuk3lIO9iXQw&^KGKimjDQow)2{ zO$sg{h~}jjxv4<%Rrx`*SPqjhJ6!#}>Eb82pg*7SN2U-qQ-VCkK9U~(3<V7I=xRZ7 z;oxh+;*r;b*@12nV04flf7M6v(;Bl-f4w~F6?B*A!DR81c8OUza7k>nf~m)A8A^5k zU%#2Yx}g32v)(HW)ab~&t65mv$V-;lv?Z3i!HRp6-qp}WJ3e*#-&+M$p8I4TiDWDh zoPqT+8x8b%blD-^@zFmB0&A|}HV?!0Y6#EWFJqE_o$b_i+Ad}6Sy>RLgcx)agJ=rW zqN!E(k2_;g9%sQu_4a2{v>_WwX9i)LcA*jdwEfDXQP>e4MyeK6namt}P<xl4be9bj zaNW~RdrnMy?wz#L#F=GuZ4pIpm|F}Fe0HYDb053xMDUNqmr#e$Qq&YcA+;>yR`yrg zZUf?V;k{x|9g{H%tvrw9N<7GF>FLh}iU-KJYXe@<vR+hS1mAN%04&ThFnTnnIMHO! zfCn>ls}qpmOjkvAk^>9HS>-`}(doJJkdSVLbn;d^?3p#Ug^AnJ`Lm57u4fkfuE5z; z!(wIj$Q~a<q*~BBSP~lr5w&Ds2Vk*8ke%&&h80T@S*x7s>#wV(r$AEd+GGpu!-P6s z#VIqnx~iSzy4ZPM4t$J0k}0ud&~lm`T{Dt&SSrVun&gLe{HuFMMK*RS(-C?xrYXMY zilhpBGe!X<yJ?g&<LF?zB<q(Kn1$`%h}lIt?d2!`jWH-VW;jhG$_WjlHFLbu>UMbE z;BtT`Zqilk@$1%Q<BzyWDFjtX24kbs{lP69P1cVvzk-DxPImDdhIC|wPr7hRsqEhL z{9^ybJt}4dmH&{8qdmCXFTGrVMCIMc8nsoaZ$v*w(Zuyx4AZ%}JL*nRM*LyTqX{lu z*(R-$nO$x9Xr9i=a^ZgAGE8UBXW2g`1>l9h59XxHRU%&$@04hBqksPoufRu+%@nJI z?<&|0Lfm^pvgGy#vGv(FIp9$yCnvn3?j50IgBI5N=aRU4iWtId(Z{5m?bSXTHxjZc zK5Z`WMzZDYP(<V2&BTVdhNzb4Q+clavAeaP*C!FZ32>Txvvd^at%L3lo6^E_gM?Kp z7JKHg&cX!%{iqVL&*Z%_{4jV-NH+g-b4PYv5L~sP2*1H5z2w8zuL_&VdM#NYzjL>m z^Lx`vxdB_?yzJQk;;m?U^Vm0hN|C#{veh3FrL70`5+(41f8*PgFXD2k&CI)_c_qfX zuyWTb5!S`L{d-uTVe<S4+FrD<I8#y(m&><5oCbgN^8dAJZH5-3C1by)*Ux-gEKEWh zM_Tx<41<3!-mMK+`6gJ*GGM=<JdhP@MaG#$g3lY4x!eAZHB2=Y{)?@&Z%d@OFpoe= zA1TDFz}6)Lj<O)yPaW3_Fkv(D4`a<nDcM&pbLWfvMb0JqD~tMc>t_WNM{KmHy+!WY zH?h2=m(#O`7t5M{eZSmuyceh=-n&o6Hu2Li@#jl}XuPc*YRNrQk|B(He(LVuDZR>S zN!J*e`Qwz1p~)I#3q9qL@Si><!{y<1bz!Fi;hPekVocwULCP*l&+IlDij7~>%3o9J zCQR*Yy<<_u&9pDVxqBY<oJ^R$YNQvJ(`T&zx@V(xoG3LjynQEJ*3{tWRef6eeP%8P zlzpU4b!Oi{gR3G+mAu}=rpxQQEElp|RFoizJ01Dz<&L^+s-dI4soXfdkmQOaIkozx z(x|Mi{rhd{>cr53GoJ1{nVh}J0)I!GqmkvY<j|wsZK<u4ZqFa*dQsYX4y-)>S{G)r z93*q<>?=RGj%B`J1#_J;V)lUcNb5w?Q!Vv?`g1(maj9*98d>{a=CUX#OdmGiJ)DMv zZk4L*>3+IEW07otthk>(P14dZ<{InQt?@pU{R96n`clPQnVr_#xF?xA^#6lh5&V zD_#sU)+nfG?fs=vlW)DDN5Ol<Kx}Uv#;+JE{PfG&2~-#64K@x;ql7YJ&c~B(7MHQ0 z+VGk0bm3~$#-F1Of`5_LV0rz}q1)7EAx`q)Qy2&Dr7UM<^>5;V!k4mRlt!n+u+&Ws zuq^Xb*@bpdBfBM|Twmd{P)Qflh3|-<=Cqz*gxqqXKsGb7{J{1!Ho*s5N|hX?`-zg4 z{CB-o|9f?jWR(E3E1*FQZPNN`*?bk2NqiNKd2Y<^|0{8onS}ZNi>vvQJ0D*!O;mnN z`ma<}k+)G4TNNSUv+NeTCQ8<5TBxGG|70-XkDnl2trXQ6DD&r3k67g1Jl^TMJ$9Gi z@{71Lom{?;p6}L8S7Gg<(Q1VY*z2;U%is^$!*9CXI$Fr2cdyaLy9{IWI0Mq$2T}R% z=_MM%Ms4NUnS&yxj=4MQP5ajsWaL*u_g++)qYPl`W-6X2<t1+0s9*bh;-5a&4-Lk3 zXJ&j<+9t+`T=jp}LrRbda!+u&f>ls_tx58&a?hx?CHTTTXL<0R&jSzL!gTN7(IZ3g zSBH(8I&(IIN_+h8?j2H;BJdlFN%}ks29nx<u9-!T!J{y9r2cCw1NC{`B8xoM1|E~O z9b=pGcQa=?9f6B1w9vjh8Jk-+>$8MC(B_C7IFC_)1Yj*>uo2nN(v!7h_5F_BqS*4k zK8X_EnHNAbA!f@PiPsV}M&~nR3U*htx?@KWg#64K-QGcvFvfY_oAcM9{|1#ow}~nw zFM}wlNzzWKd1L_w*;~t^i!FexB20L1c^GYd(CG3$iaKF7YD-(n?RN5g=}R#?a$7b{ z`Ka?G^c3r}gWc_kYSs7UN~)@9VpK!cp?EM}_doSj&3CW$Lw5H0RZ8{Ts?;?|yWQbd zFG=oRdGk{Bv$jAZ0ky(A{(wA3@gPi&&F@quX;=~=g%Lg9N)eIp#OO>_hChGhC;6o$ zrR$G8ly0O8FH8k%-ORo9s7;L2iDB3?X?-#MH8tq>&uli!gZ;g#1jm^gfB%ACRp&_A z^f@<nJ~v6s4IMu>{qgeyElzP=uF<vE3uzXYB@E(seVW;})RvZ=>@Nd8ig829NdUIF zzCHG-w*^y?)ZYb5j9|{NtSw9dZE@D*)s;=A%G|dsrkcU0-1dhftkSZ$-`kSrF{Ndb zG?W<IRckVR$5#J}WyWzlDYRU9CU`(|<eBkA)BcJrCQNMOif<}s$3X5;LoM1%C)V8D ztDESf&FB^a^`{Y(P3AAe3571E>o=4RYczY+=X+f`$*cC3DnuAIBUrsk1)Valyd)zG z{!0ZZL*X-KPR);5F{K25#sB-PFz4=mdc56&k2a5qgrHsh+rO|%?3iIR8p(xPB-rzO zKJRA*QS(wbp?upTT__FDi>-CjE(ghp*jE}QPF4B^nLBC`wj^rrNniAJV|O##Q$_H9 zo)dchgb>!~Yp|BPDgW{2G{Sb;aR0PB*1u(GxYH8<P;#xU+3lTU=Ju!D0Nt1(!%==Z zfTZ=`phH>8%EiEk*~fnjg+h~iSUx2i_2~I)<%`}(54WZ(t^2vo1IflnTU@GX2D;s= zo_9$kTGArO3^O%feoC2G_pq9;YWdlEEFNM)(;vJ<)l1U%CmgNHPo0aSY@I?o8Te8n z-e!L4uaHLA168hUyLtT1zTC?-5P<jp?JdD4UL*H+HxCyR?%(XraBCi?(cFZTe<^nT zuO6-^^jcd5<ZACfIKS{cPi1D$;U@6<))avMF5N`#bsMIxn9#=tqIeFfUiJLlV>}&f z@7|FYDyLG%n>+xO(cJ4%cm3}}F#C=F;#$<X=&KwlsGALtOkqA_>n8%R4Xvmj94157 zucW*<O#kht<U8f;G&gkaPGQRqB)5L)(BOOEc7nH`ew^-15y;Z-QczTNCJAI7-E)== zLqv*~U~i)}5GjAB+Ma*O76GjpD9;WSbaOWs(W3|2PxkJ19$fFdrwrZg<hI2s@0CFl zX~f~r)$;Tp3Ilf~?(a8L`MtNSk=|UH$Vx3lk})frZOm>)_&=Z5_~`rj^JkrmUKx+q z+N!QBydCt!U)$>uZ<Dy$wizDio#N8=@x?KQ`;+(Y=*mmH%J&-<Lpkyh(&N(~qc$k> zl<B;rA`IG2x^J!0Jp1I|nVlFQ3gJT%)S{w{+B=hsB;mQx-5F=Y+b>oyzdrUPG5-xo zRq}A(h6GjNvvlh^E72uQyGftIn&nso>uv0k*%=Cr^wQ40y1hfjrfF{GoQab+8``xC zC4coH=&{g~jQ=>nO2F|NIXd#@HUG(3#}X}3e(mPyyeTFq%ua`O_ZN9GSx{b2ZW=Zh z;jL)&LYdt~gnDEC^M~@oTcP69ZnkOwqpO{ELk`^={D6M9Iv3wbaHqJyHkCZKL?5Mh zFQR6EpEP5Uq|S_slTw6=I(=Y?ipFye2>F3Mi6d**ds-Mr#P@Wm1c@wf`x-iOkD;*Y z%c(IKg0^-Zs7cI2qKSBGZ+ej^M4d~O5ZqJU@fEtt%z<l<Gjzkqt-_FMQj)tofh3Im zdL8R4jwz*$Z`8l1eqVpTc6Kaw#KG?Fh+1ujp7`tEE|0hOjXS4%s{Q}`HJkJ^wq^>R z*E<p|36sb={8>Uv?uoQ;l$pD7NPknt9bp5VSuOvX_W31k{eX06+Q8_~U*(7qEC%tM zVhY-QCDCZX&4@!BPM)A+^+%myT6UG?x@y^FBj=NG7a<bu7QVWVv1QNwIzi6#Klh+B z<dN*pZ+!CU(5ohl8hghvOP*;6R(XScH%0?sbT2YQ<7+Pm=W8n;nz!ftlv*zgrg5f& zCAeCzBt1`-{>(h6(zEluai46lo9EYnecH9()$+P%)&TB@)E&GeCd|*5ob2Z`(kygJ z?bZ-PH!~Ff!-vFC6m^sJ`kqLrkI8FLk-U6A!T{zZpsCr*S_opTRSiMG*2CLU2^}d$ zhf$aEzAw6*g%jMTDWL_dr35i8xe&$S!#X?dv+zSKTdEv!X|7#V?#BtQ9aC!A@N}-X z?>_QBrsO1z)4|tbN}A1Alv7%1wB0|#Ve@Ux@y9OV{RZ^M6HdVUVyTD+(saa9K(vQK zKypWYfM6X9sfCFr*I~ZMJkk1(nsL!FTvPjH#P4QNXiD?-nl9&^v{{bW`~S@X@bk2F zcf0zc{X3pc$9lL}(BHV=>z2Gu!bm@rQGA@UV*i@Yw2;PfQLz~yv@9x2ohVr7XT;x; zP;dq}<|{_j5W8UN<PR^|R)D%{%Mif`+ac|dcf-O=<3K!X{m2Vg>2XuD<S;>0bUND9 zhS3+<Q}y%>)rMiw?TG&MZZ*h_-!3xULcV2pceS+re`a?Pqo8!sGPBmcmCjvyF`AC} zQ)h*4;S6cn9r>#>_4}ShGOn@NeMJh<9%j}5N7GlvHQ~R}5<gKwP*ISUZc$P|LJ?_3 zH;nF18H|t;rBgu|NJ)3YK#}gz-7pwAMr@36_rITe-|W@iY~MQ1d7g6)JTia9U^eS2 z+2qB8N$R0m!mu)SU&Zi*iA~ZOQbCUjUPXt8BoV}8&5_0rS#JrcPNKq&qG!t$Z)_?< zPCr5nt3#(~+Dkz6f5h0<%cy)@uNv;1%&blx9&8UVn>Kw}S)R5_q)dvId#-0t#K>T2 zrnf#Y^@Ppi3G&Esl8a9N*;k|6W@q(>H|)34s6sq++{-yvD=B|r)tn<@UNU|W{L|>L z&1ugsh%FPtl@ko^+-s$sqaFX0(*`}_XS#K6Ep}D~)Y|mFU0Wuy_Q6@pl+In4N$8$~ zXoPHlfD@lfEZ$2C`TuspjdS=o**w%^s#@w5)I(Ai%^Nzoj;TG$steHQ>Z0jxHmYG= zXSEt4_>TaTzb9h*gmMOJvO7=KLgZTA&@q?rw)O@T?&<+t+9BJ`Jxlp6OTw5{+%4XA zlU3&F1$rYbDT^YvWsqL92rykWIFaq^qY!%*zSBX#XuMhe?#bj3y}T$`!XUd^^aWSL z-wG2JT4Fe2S5)4mLDz&BWrr^poibPvd6U7JE{lF3??i#`sf^!(`J1;waD&rAV*68y z9;5X6<KiRpKXAz?y{L?{5@hB6|AlmWD@5glOTAk=p2Y2yq|T4BbUaPRvO7ZZRHdvS z?5N0%t9^<z{O}wy3W75K3+G_$@0Y@N!1~Uvctb1p%(r+$f8<Pt8ltyvTzd%WUXVse z&wOkd(j||pzTO1A5SYk(x**a;^UskqY9!)<($<jZSFR1^r<oM;&5iVx$3`pG!xn_A z_#s@iqk?b!8T!;O8xQC9m*(o(_X!@kNZ#99ScbJV?|m*0c}JnIZ_&{sOnJVoQH67c z+V0+0zXP&!zRNikH+(plN%iF4h54T(aWB-&RsBfO2=@GR55-gQ3Y9!W^+cod4TMpp ze^u&k!p3886d!~8bM2{E_=Ij(gAyb`wn|}lfeQ#%Ie)@_e=k?T{BM8z;@V!hXj}DM zfodySW`5===Zac%t``?}B31Kwt3EmzfZHaQ**|6B3tmI6O5C;2x|Es08_chVQEP_M zB^?1Xnb_gOhjPdh)7AFfM5Yr4OxX-AfZXL@o1{DXU@U5ltPqD|XOztm8;kH3HJfwE zVHWwaa%A*yepO>HLbW7ZM>!Pcv2|59d6xgz3qAjX9X0Vl;oFE5R^3!S;$4mtl>9BF z*kjVuer@6FH>{$+h^~m&{@bqXeB^lVCs~-I#4^zfA_3D+4gpP#%b6Lsu;nFc@TGsV z{ZbHe+gTx|XOyY#0ZR4$Jr!p8a-px6?<z3BhwmF%6=FY>xw_Iljb#2h_2es~mF;ii zNd=WE=}5J@;$;T<nBdqC-YRXh49-3gUIoh3zi=c0DU%#QAw?pxahlmX3SHVGU%EYg z*w;LZxxO+Xg_;~JuacuS*(gV6$x&qP06=`a#6B<gy|t=<QS<+e@`SJm*3j3CUgxn~ z=J}K8bd8QGOU7lyQ&xlJH<(>Tt3I7R>~v`lu^b~1D^?(vSx`Xi4_}|T=E+H=I52)Z zF$x(0y!EyT+KAteP2A7tjDzB@@-(^KM7#fSu<gY*02Eh_r#`qd7*84Tf_3qRpj@Fa zUWxrv!-uK(spJ90YEXz`rwH8~8Lj#|{gZ?K9X3+)_hhD_%;s{}qo?ya$JbkP4K4oP zKfmzg=XLv=7ubM=2`dr`9XD;#4)uS0$c;HXmiggUJ9bpNJFB{TeXZxB0vY;AOla+t z#;Wep%@C)78*3D#Ct7e*e|?s(@@RpkNpC=qS0w`dgdT~u6G{Id6OC0UL^hp3%{7`d z9=GRG-Mo1+n_zP;dNgWf`jpap6q)T*SX4hv`7C!YMsCiq6n*7~NNV4jq<0*cgMmZU zrL0ux7Cq9&g|**IRJYqR1Uf<%{|K6(W%Q7Ai7B~i4Mvh-E1~LMSuFZ?^86Pcn{tyt z+oGt8IOqg5<z-`B@;4~-=eFAO5QxP`syk@UYQi)-%5HyPrP+KKKM=(L`fCUJ3n_EB zCM{^rq>}N*E0`ja)xP6$anCS%-;uvO_&Nnb@jwg|vMr4Cq<iYlz@a$NIA7IIKX>g; z{6S7LDgK+m)qh5l<1#ia;u{TTe?-BLb@mV}{OiM*MWTZTi&naA!%qOAsTsokocyvv zx~g1>Ghs)zmtr<EH0zOGpQ#hhiwfeL{*}Nxm!)oFo8--t#S;*-hHdv#U(qKQP8bpx z0U7H3REXza3XR7)?GS6o5ab<1z3x74GHY?551udFKy4dQWkN=p8j0zM`&$XlVvBiP zoh;l0Gk{?kJ5abyCfq5C{=W%Bx2j^Pmhp^zVtF_T?V+))wA3HbQmK5Z=5TA`{7LG6 z-+6KIacUwT&SOYpFpXplz5omRkym1Q9x-+^4?~R!Plka8n*Ar`wH4RAXwAxgeS|8p zL~rME9dZ`?e_z?F$^YHCagXSox`&qwW#F&IJ)WzBY!e>IYYJ!IJ5c798_fj1avCZm zhNn=zINSkAp;Ndq1^j{iR<_j9nQ#B6HUohm7926^9uB}UwjXddb;)nY_?=a;RfGn{ z{DN~WZDj)xHJDkGiNJRN@1mGMkS;v!xt*G@j6}WIXDLSAyih_gR?(RoVSQeoxjgs% z^85XrN`f3EL9xX!lFA|DU@<8(gK8p~WoYS>XZjVk;%yV{NUva@>(wOga6Q?AO&a<$ zCpUL2fl}hA*Dj>08kiaL*sKSWBLFrlX?jRL6!}Yq45P&f^m#Nm9{viVx)gHotPT;o z!q`Ii#&V3R`Tk(wpO>CIgkZ+!Wi|sV+h-u!&h)A6Xsloi0*)=R%Jsk0MyLDac3rDT z?6ZE6+2>ZF$`HSarZ6we1b|ZngE5hbtiP27w@FH1O$w8!J-FHp*UGe>obR!ANYNB+ z42Y9hF+O3SHT8>y)5XcazvDvgzYIu0;K5_*C&h-n6%#=hc%K0e*dQbrZ;Foh9ESK_ zpD<kRXcnEcFJIL%F!W!d_LqE1LP*({N)!N+8~^`Hc(FikA@#>9yoYtEFT{f{2MLnN z2aab>s?R|da|1XJnbMPJkF@KmQop{j_;2!lf<7pCqIUr7G{$OR=pR2fH!eh1I~5w) zqeM|<6DshJ_HVJi`4Canoxx{o#@Y&<W^gr$tH;#D*{2cGy!q)-4&sMw%daGw9W8rH zBNH(G(?H30x3Sr3!OKR6H%119*vJ6464|x>vi`E2zExf{{)a5u@vVU;buCaA`x8uU z_2WU<3vwFLmzOS*!Ii^GE^IICO;-(X$vd5^Dh(vpO*XR@S8R%iXNzYpTTMs~_0)pQ z`KC1=)(akKULJlEvagrBbGqEk99=luU<hCI5hO02dHSzC?L7=jU^hPxTWs!t@4Dz= z2nGnW;4c|0`G&NpNk+XEc^^yhrES0uBqykyu;S_z^dhg?t=Oc=h~Zo@U1<zknT0{M zf07vDk{^GdYv@-}11ySVaIW%=8JP_7z3Qd(FU%3}tDi@!(C1Whsd*N327m5V?%`fR z7Gj~Gcp0)b3>Aq|;a-gFvyZY?sV>nYM|>gXrYUq3>5(^AX*jW4n<n`_L>vT+QCOmp zmi2875ESy~Qg83gPaXbba)Q@9ft;o0bP~vRvl?VZN#9|!WT>NNILSo}FJLelvI-Jc zU6NeJm3f}!OY410K~y%2p{DTe;D01n)4bel8Js!P>5rt&M%)Ht*;!Df!7_3?A3R{- zmbkUytDP7*MaX924(-At6TASlCzl0pYw^D+MSv7K_4xc^pBJrv4%kQRgQYNQjaa;| zHL0!z#%fI{HKF6Cy*jncGXDnVL3<mm@bcwL?l2p~lm=yzv0i!{w?W>8j*o)`VfOvR zh6+PMQ?92!o!b8NqJJ2CocL)%XvyqQ&oO`bjkbRDJas`xDF(TiJMMqac`&q*ciq_% zkv|}(>_)ZI5}du`B7Ss$5qUrngQR?+>|6hYuas?><|(W9?O$$@$ZVyLU&27<+fQH} zn_~*5J={NGsWn4N)eq^eiyS@(U7A%Dxs`85$kur_NM*~ZW;d^wSDPRBDR^W`c+V}G z3ja9I^8dc1D;I)&pSP`38F<r3^w)7PpV^9Pui-!4ki*gGFB@j%p#oCaZNiWI)yQ%3 z#F$UotBMWpWRF<#=NUwFKB!TlmDT($QxjeIFeWlE=KPZHk^f_UFVQzBJv@mubaWB9 zny7&9rMBX2Y+F4*eeVu?qSF9xA^JmyM|hn`LK-y)HjGq+X8td-ppuWJbvqkI-5R-d z8IghA;07xI5p(+|13nL%++Qj#1KwO$eTzE5(5-}=z8~<*=TS26Ck_nJaFX9s@^*S( zvpJuh=qD*Cdx<V+S+h6L9D-fvN~PPuOM@WapNusZG>25;Ppy6}{Zu@#X_O&v7_{}D zA6Bo8ohp8EDm8bA7S~S})Q&-=nLCx7rdni#>bJtpW15@g7e#dNjbk#?Jwt+o(H9fH zpYU#CFZoj*v99WV>UiPLn+M7-B`KkQ%HyKI&+2M%jEU{IG*2pwrj;)XtNc?&aN63m zltVgDw|f-s&nx}(k?dn0`!AN?R(wzgTj5dOH41Mt`4uGS{@YWYZu+F9Q$fj>_GY8; zgN^(!x0pvo)Soo<f|4)qD%j>0DLXsO@N^W!-I!hW`#d!U^`hmCj$8ZpfE<&rbO^+A zHgl<HrI#CiXyvFZR6I$Wf9~XrH^n=}s;ii^))(sG#4Z*{d6P%6dUf39U|)AXSj1Ob zNB@%BYi&3?_T5I(dHvUA*)dOEL&eM$D&{s=dB)oC#ePiFx$X=;?b|z-`eTT4$r=^0 z6>!Szkz!Zwft{gpf#v36){E*q)XE0~;-*^F=$qLR@)$V@+Z#ViO4P9p-5&82V*S_F zmSdErfbtdUXU&A1@27&ThPD{yAZrJ>O3Yo=Mp`a@yO7FR!B6N{^~cS3)@G{o&jssC z_Jq_*mIpYuv(`NWuBvU#m5He4&WPtCiZ~3LEmO?A3)RoW*a<*h;?mSSGPK<?&m22p zsEE-{^SgtU2{pU-og|H}(Cz}m>R&HjsDo@w5i8Cybt|_@tN+5GgU+PEHFFkLBQA4X zMJ0Dc&tqv5`613c9U~sWNK(cn_;fge>8A9-S`|lZU_*<tz+1h@M1t93w<IQ4jfh>4 zD_Ups#hf=K#>D)_H+j$hBY=!KizhOOYQ>qoGF>xhWGP>Oe4;|6r}cY^P<kmqRR#Qh ze0e2&mF?X7W3k{D%A<u(=^2;#-S>WcESyiq%|W`7;hT>25}@f9DFxV%Uc!}%L1Lg1 z!JUBZqCvPCt}xTyjO~#O=~k(R)K2fzT=_RMK<IB&OUHah9mW^_?eD-xAjBeVPuv8h zK8V6Q!NFtA{^rW2Q+84X$>?G&+*h;tcaN(^WWbs{v1X53&Hl2$<6ps@l3DQr0emuX zbYh?VnCS``hcauN?jxiV(rAdKN3kzuI)_a-F0zTo?BV>&AvC2ZpQMEIG?|8>)S>k6 zkR*ZqS66m(;C;kJh4WgOw{HAGrZgul#(XFBB>!)s8vumG(yu?MqVl5*{oO^1_i@iP zT4&>D`w6ia8>3uvR-X_hA{93DPkr{}KW8CL07{YuiZ9K>ia7>?22C9Z*3V^Dh0h1N zTXgO}CShbIeplMR*kqr?J2(R!oOU>b5kJa-y>Vx?HEGio*?!rx*GswIOBbzlz{_PF zX=4J<e|T?|dC>AF!+TisUY5@kpnAdj(oZ4ytKzsHxWGbtV$MbxI7chJ2QF}>hmZaX zl=@0vK=l`Dp)S<uEp?QFc{zLy?Oki^D7tKjHlM*e(jNZ!bp>Kyo4UcWNUtm{l$;Dh zV_-qR%SycV=}T~ENDs@)cGeU|7A~xEZ<}`jaZ_Cy@Q7rdPAppdvn;NGF!RP%gJrt2 ziS;aG+f~Z@GtKShw(U;jLq%Cn+p-Q`(8xYog*$HfCVF!2&YP-p4sw~ZsU(ZFkVXC9 zL3#@yY#6ni4)HF)BmDA%_Ht~R1#tbK>mFT+&=s=b86z@%(?wm5B%Sv8H^a1@4oWJ3 zy+d1uQTrwO+@ZemRwmF{k@|OU!LaYWFu^%q21(CWbJCVN)z7!Tk4%1rknox{w<-TH zWuU4><hq!FYWjt%IQ|23B!1c3*7;63wE6of+V_?HcZ0R0H*C82GAFNKUw{)%Pq&RN zVx4}<+=@o?x1wT3^edg1Z94T->U6%0&F5#-dg+rt*ZgXNQXTEG0bHw4(QzXc6^59Q z_y05n*K%Jds}(~*8gpeS#lczLRn-Ej(naQMEYiDH<#+Ku9WA(0hoSOl6hNeW*%9$p zLS(O(W0u}>G53LH<Y>hoDa9JQ;~Fumfu9(vNE%Y`Py)W2n2dLsitNOe?Qa9cS4)-^ zuO{_}+o)RSmk?x~RP3}MJPzQKJ9>nU?1Yx0%y&vqk*j!NLbBSMUMiUjweROSArP;U zZ6)w3@q5)kNX^Hjw5jM4`ZxN^@+aR;EvFCZ$YXQc^qBfabaYS_8>6U|u%l6Iz^{3D zb`zzP_g|8~N(qI@C&O`gp21%Q7n#p(X1`bFJ&dYA<BJP^i(hSn=Q`h;tS1`6kweT* zb`h!dK7t!Xf<E`GB^rjmXDEC(AF>JZ$1_iI8A`OC{EO)&JdQVJFDkoVMX;D6+?~Yk ztzIFYZ|SSIpb@7iA`QFsu(hf=!osHxg8@JZ82chm+lNW9OM>eZxsC1?E?I)9=>94Z zrBc=)RQ#tCn$Z`uQR!nB%_F&iKQsW<$8C$PpR6UWc^;gBM2-8b4k_H+J$z9lib$)T zxF9P1p|lV<IQwnd!{+_YQK%xic$;>x$_e5@jslD9b(Vxe#X8z|s2;d3y-;5FdL}w{ z3Oc9xL7haM;*8q2L!Gin{jB5Pxy1LvTHB*L@z{J-e@z(8i?<Qu1^=%Tk5~SHqjWJP z@Zq7O8z&SB1t+!i?!QV+XyXz#tTku#4@u$P_s{2v&wL8X*2zP_bu2H;7+(E^@Jwel zSQM+dFStqWi&r;LJYT>3uzq>!>CX!|F3q@SlW=r7Hs-3Z@$B3=(3{P?38+gi-(tZq z_pt`^MYZwlL9H)vWqz1yo}#yAH<pvZEeVm`VTLqvzcDx9A4k2Oi##qr)Beq#JDBmb z=vsX8$%Wr}aHNG*XznhC&G4e(;$>U9?%{@XBf|r8j-3|dCTC6!HAJ2AqTJr|hK*6C z^rVBC^LfbOhnEm9tB7SSEw9vSvGX_IwgxjX7eu4W$vK>lgGx{z$6wI?HSZD6-Yu(~ z-q4r)M6X?<3wWvZJoHv$=PbBaM3p`pgc<#*xPJu9$c0gZ7NtS>K_yw4bU75&v%Xcu zo!;HoLJfG3s*A0q+)M_hui~F==ra6de^5e^Ds<-64u?AQf9g6!uz9*$-a3Xu%B(~X zHb3|>q}}qbGIOqTa{EsCKoXC)jZK8yP<T_Z7tdBc8-789Qup-BzDENj9!dNQEI_p? zmqZ9`-ad95UffHZAc4GR@?pl{=BIkPX3JIJB3)!@(2N!fg@1wD6a$v@M9hY)IvSD_ zI>0P%PhPE{KvqlsasG4rfM>@e+fL7p%q%ZaqvZ=fGF0Dy&Q0cheVR%#`^5iqBv%xf ze^67moT;1^^}3?NlIS1iioo%b`*f!HTsW1jtITXHdq+QXv0F(@OD(wN#bt#_;!Rye zNJ5L!a^}$e$<)i%(vF-K)`8d#-arOBlRLN8;y@P6TTN5szNcd<G)Hd6|Esy~WpwT< zBui!Ed4wM!^lSWl#)jY~^!_~Dlgl}2n9o|3O75!?h}&C^2Td4$^s4Mrg5apqjr~N0 zNs*#SnKYp;lg-zVHNo`MP~gsr{#sfvAQ3$LmJAHFJ9^gHx%{*fk7|+s3;eoby4+E` zdn$v~?}4k#@2Q<YeY;2s4Nj`vHNPq(HIk0W{9>Dy%f8%idzZoT8S`m}xYBoB%y}o= z?knM{$)Lw;VN&eopdEX3YEI=sthkG1sgQiRpktW7LY{xms)=viSE2$P@G{`(+P_qO zn_E_i;Gzq2ulLRb#;oX3-Cysak|Saez295UQH<aquAEoi;84IFrJNP=0*jCFL2^>a zSOEZS_+t6A1io=)wN3r9TnVX^dwN%Y#dVOprQBBJVkpq6rysDk<l}(ey#>00O3TdH z6xv1izHgLFJw_(631?Kay&GhT{39Mla6QGy;XoItlUujV4iQBaipZcPnUrL5dX6WT zc#PP7x7%Wro(G8a;dF5?bz~+!o+#{DH(!h!{0h}95JGKV6^X3<T;rCQ+5?S&QUFrJ zp*-M>J3Vwi_7kPxTOaza_ka-1tMrqCaU@`;fO~(WD^d1bCLLe#ZvgHFgvdp}8`WO& zduw!5!=4W$H`UrK8!2q{^-9-R+uF0MQ?x6n&U(%aYy*&1S3a(g$MaA`)qU&ftChbV zX;kjvzTc^6uw19wf=RKqG^=VcUQ27uLG8$V4?z8r%udkAQ}_<oFKL1!!QqF&Jw_`W z1};v<0P^*Vg~t0-VJi%o{AQ=huW~<!b*PaJkpVC4<=v&uRmkoW%-u-OtyoVoq{YoA z{H_!xTFQt|Y|oX;2pS8%2zE;}o`>z?AXw<unI78UoW<tkb!d^yM_|y~%oCTy#u0~w zJH7iD_MDrcT{#%y*81G*;a&`k{i<l{y0z)%xuE<}`NdLWMENZk_f|2qB7wgV;ws^f zH)pNA`iIY~8m}s}g%Ay2rH{5jU2!5rOKwq_yH+}@KCf|hF1P9~`!)NoR2(oB?k@qd zPN)&@@lhpN44cGMDgfP#3KUH8*SO(?h*EnrL^0zEub%xP`fg9~R9&&`L0l9)+pwQk zgxWU|&A2eo>jzyNbARY-I|=74fOXphr<m@&FtO&(X27xac>9;8ryoWB9Pkoc#z~}- zTD#D{PgZ;MUkmhy%IyV(3782&RG+r51V$~@dFSYL#bVoNntyk6sz0e|LBjC4YCIZy z;6KLBAUS%DfUDuURcro+hCN;M2hW~N-xdpb8PTcY%mPJ=L*+6X-EC)L{tP6%-U8t^ z_%M9~c;52AO)^vK5zeQhx#)AVRw3kn)#x#FH5kPVEzIXG%A9pi@Ysv*iC+DgqgJiV zi#GXX52R--$Z-hzwhagP+)#<F@T!?25Q?%(jZ04B0jTPPlV$ta7Yze4=_e+k*H;yC z{+j{FjqLt+@QoW!s*tWo*?)<RO;?l9jILUSwG=>>KS1U^RVb_^LE-w>p2E~Xf5>)G z0D$E-hoeBqrub8)bpYn=loW_#M^g63i7@ldnE>^T;Q4WY)6AvTqe?%V&xjP%)<j%D z4=O0Q70Byx*$=Pd$r^X~uZiCSdK8jDV<a{5J#1?7{hh$aE?#pJOZUBPA4ZzK!??%$ z>xh+$N0pB|(*zV65(K*^O8?6P0YopOi%8}O78xuOgT_H77M!zycb4&$9%Rx;cRJwE zi<*1Wx!zmfNjkkM*y{P~F^5VP+*x6ZnmLxI{8dHF5J`=jBAKfnOZ~K<?Y@qzLt)k! zXb<pTR#T>P31-RORCoC#1&(kE{9f?p!U+Bt`1T+N4kV!4?l)5Swl>+d9W$*C8R<+l z-&RueCQ8f=_>YA3!lHxenK8WdIktQSd~gYKklVdfZ~yS_@T9r5%eI`DU;F8%q3RX- zF(?7Jyrcv`XKHRGItBa5p~Q~VZZ2P6ZU)$<;{WG6GpECU?yvxmA4y-qJ=0B#rYu0# zc>b$(l9?2m(ta1GQb=WbKU!Ao0)HB`t(-aD1U%vUD!A1jOzkh#`fP+y)h-o4kI7VZ zX!i-Zw0RlICpSEfHkRFCQ4Ljf2L>K;JY3V=m&JimB`BHZ;8{p8tOPX@e1putPcUK# z_dlIPyj}>J*%=O3CzGLZhR?yd<-Sj!JU^4fliNm}+<ZZMsgISx@Bc=4ykHQreZkW% zxpDU3<EN9>!9z-d;O=j92|PSZZ+FZ6$^vdDS>FlP3S{!W@)@jNzzIhYgOb<vWvR`S z=KqUu-e9=-EV8C)Ai9#-`qbd{Pjgv+zF1kmcFsx)ppP^+1X=jwG*xNJe@-UHBqiak zUMES5(D6o`kD*(e9O^@8Io*)0iNEgqwh11VHZ~xL1^rdyi1!zNlgsumVf60@;MZ-O zPluOtOUGF!1Dey6JYam={D6`Np>Rp}Z!1MPBuWyFc5S4KwYUV@8J~4lIjjXwf!x2< z)P2W2$Kw#CJ7&~Pt**_cwp~PWUBkOY`_bIGi4>}npHyox#gmz$x3cKMNrv{55v2&L z-NfY*&8r1cu%^QeZ|F;z;CeHpN>8&;4*GIOVf^fqdytYl<aXlfY!tPf%C{!-DLA!d zt~E`SqBpSZc(%rK_zj75B70Ymtf4ENsZF(N0Q|tIQ)X<@!U>+Lu*A!P>Osl|T)1*; zI3os@g*BXdQ-$_MgJs!k;#)Oyu&&ovl1=<){lk^g39F;%g{_hy2i)H7)&7c7Xw|Am z@VHBO$s+m;$^6?cJlveRNB-4A+M6ZhDua#U>%LJW#UfENfu6jxA}~{|cKNNp_dvY0 z(z0CNLtBC+7q-?tXb0gVv+)Mb%DF?Gs>BN~`Pn>Q9ji>Csh+curL2mx@O1Kd{^;W? zPGUFuN!Ds-e%-m|OCm!)V({z)DiM=#)?4EImV$y`t#vWq*f3C~U9gG5FW9#J_18Ht zDOYDbLBXc+j8}Q_z36H20uu1z%6qzl^)E$fqM_5(H$NIYFK}5fyKl?uahIQxrG!wG z^0fk}2P6Ccx=ermH3#|!u0qN=MQW};P*Kj)5E%A~I9tBxauEzH6)q{7zx`~QU>LUN zqoL%!3)vqW$6QT1fFU9*EDg!GlJU0_d!RzBOUaoBgawd(l6s?sk(IuIkIzBQYMB&e zKEG$ldLGdj74N#6G+zfF3}hdHyt<9+_Sah+nti*SFmvo%LJE`D?UlVGP<%<uj#jx% z$w8+8+Fs$ta>k2<Kt8?S`3Fi4ZuR^^s<9QJvl4p_I7tX7<o9yLUTN@Qq{mo4P8|@! zD|GLtXM`U7MrI($mBI|~5cXR^Qh0Qy#tQO!Gt2z=VzWnfy&>0U9c0XW<tJY_Q|s3= zYPU*ZuQwXvN%aWY+Oo`83tPt_zxGEy-tqhK8M-dNB5#0G8NB|d=7^JtQxb=xb*Rux z^&FfBd?dD`(p4+LPa@yEF+K4=LNK87fBALKryRtsC(#?DSDJPN>&FZOy|i~Vyc}he zBi%(?=7@HJ&NfP**M|PqOYgUNr*gbi0&zW7H_tNP7S)_b1g`IU(z=AQ&i&*SaUiEe zi!$~`z`T3y+nbi@;pun!K%<A9?8g0oLFBj;MUa9MQpH99Eo(AB^;*BRsKe)`YcBZG ze6(qwr-DrXCNrMTtg&bP_>2R*(`94b5X#sP{F|rb!0`T6nao#FxL~rq#rAzd!~T!t zg`>~ihFdHayXbmSk%g1Odkz=@xxJpdQuriomwo48jL`lF3&uysZVps{ztyhN2k-O( zePuI+uqtyQs@dn0(o?BxhEPB#98fgL0NwV1;`fNOD=5Sy9#WLVG$3OtTKkdD{N@#L ze#k_)e3xOwUV&=nS!wW)5*<ZCSMZSXU{A>^W<XTd+1J9?-QCTups^8Xu9MXiIg{HX z0U3YbYDgnD=`J<Kt#d_HZV!|`EC?<88uA-QwR5Kz65=icn05Ji?R;95L+9HEbW@Yk z{4Mikj@y3$^!L%oHhW7aO^q=5GO?p^s20J+<*vIA;TIWM*@ccbp{;?p7{BoLay7>^ z^R7;UWeefZ2d?40P>;;mZNez)NRSlK`T&MBP8Yz9HxWaVym*tZV?v#H-1@AVnlAm| zDx<Nh$Vkd>IXPKds!l<1-xx~vJ%F<5NOMroOj=s(?tQ7sY|3P}TY>$^riXWEP+%Ty z)~RmL(~A&aU-v)S;`EH)a-NrMz2P|Pa=Blgoo@8>Uv9^@Y`gjgjog46qj;0Jv%rA` z8rK|lCbV^B3Jy6xu+U%cMmw&>ay$6a-byC`^KMA@WWwjOM(C9?f9YLvsY%sA^=$^? zGP6E0i9jbC)n8<ta~0jI=&nBpt1OD5`Eywi+4mZ8i%J{oJTV1k;I3r*<UEZNbYVN6 zWH!!YkmCnzLbtWI*N-hTuvr1K=pZCS^+Xqx%NOd-lnbkGe!I2q<F`z4U<XCe?*kwb zZ!0~=)){w{QPj!1BYBHO{tNw~{TcgsSkmK^BJ9ZS$>!gN;3q_Gse(L1g5xih$L`BM z9<6bZ9}V`A#fGAMFN4PJCT}6P!)J>DKX;LmUDdc7c>OKa=r|}d#GLwJ>+6l}ry*L^ z)#d|WlF`C{dRi03|K|68)PJ-yCoa!59m6!QQgG2GFMzm?zRM;g5Htx{xLf?}T!#v; z>GV-Qr92i7ShekY67_YOOm5OxTZlkOQR2q~x1OMPboPubvnpZQJpp<H|6ZGa=ofiw zO+#D&i=XA2Ycm~KL_rusK>XkJ1%mY-dk*+fDJc1fg%UFPH|~i)c^tSGVfgurvo);+ zYh*<FM=hT(=_;dVv{B)<CQifi)48o|-`l1jv+DaiBFW8Ic3rc@=46`E&EHt9#j^Y~ zA?FEBNiDq;Keq57xD!-4n??eA_B&DynEAUV@iXVQ?FoKGXjM$nQT23+2j{o>%l&(H zb(mOz;Wu9_zO0bsfWo(C7nN3Yl!l~WxyV^=$HdhEV_J!>@;?3M401qoZ0l}1@J1iX zsbX<p{$r?lm&9!GB!!@+a3hp2{!XO_e{y!S_gY)u;@{u@SEUthsI?{LBB?YWuuS|# zAh)M*XR<$c>Cn{WdvegSZLrlVe&F5r{vioh54LXSI?Vn}k6=MRxxqeeh<4xl)KJE8 z@dS|BwzlQ{-+KW=Q#!q5=WC=53Fz6M0yAB;&)%K$u)&Uc$(8MMy6_`u|E|Z-#%>3v za4MNU!8F{mdZk;a+DiL`((Z7od1)yrdnUoeV>TF{|M`z5i)Yzh^l$PHcZM@7%E5zE zk2;*<b{>eqTJunSuieF^*Bjf#2<eZW{lomR-~1-_IKO?B?6=S@a7uMlbUVj0Oa8z% z>R~v9rR2SC!O)5Olk?gJ?#kSe)ty{ky8zZKhL6tH>h9$ISz<cvlrvAuPxP}-DPr@- zK?}idTus|_H~P<`&2KAXJ^Zx)G>QBkNbj9r5Kipmi*j(A`bH~QfOxE1<TYzZK%0Kb zpW+2u6uYSUWj^Fy#h}o-S`3?f{maj#_p`s?lQcBYI7sb-68cePNL!l9A=16G$nUFJ zQShL4jH0A4>=tEUc1S5*p5oad#55|c2|d}u8eCT1gIbV}bhaZ$-sN8fM~14!Fhip^ zVo8mgj=p0+7r~GnAtF~7?~P&7Qtl!@1(>?idXiF)z4dS;7W(zAfjC}NH6ndJivDqz zm;va-7bz@=y$Wu0;tXx;^)v8bNidKem&VP4F7!eFOf-W-_~LKj<Jcq-OQed-Imqj< z<+sC1oo-3M*gql#t70_0pr*1I^8le<Vqzje3zRJLqDhu6d~b%C!2RBDS;*y2!#y(h z&e)1=nRaq(j~&A4U!Bp}pm^W1B``JTY19e~7&L$=0V;BPI74Rv59xq&{6Mf4Oxwy% z)n#8u8ngA0fnxNKZ>B-#l~L9Mgh8RmMXIkY#xT$MkG1O(2xgt;qRXIAI6R`Jd~lrf zE|HUoGcxW|IA_<ud==s-=O<`-<$cbJsYg{uX;^#^L!jEnD5a(NK19&7y!h^+S@Ne1 z2^k2R@JzcTS<VHi4@bYcIzElhJ<@7zSGz}}$Z2|89}Ew9+Rw%nfHrjd8zT1mS0(pW z3BA<cG%n#T7dM`I;Tb5G!ua2LX*C*YJ7B7f2+$@`uX#D8uln7QZAmce%-H7LOFD47 zfry;CD`RG5Nd}&sSUo)&?$^8y@d%lv2D4<3VekbZ2>csoEQ_X^IXA;yqZ<!LE~gNi zfSnwQkD;P#EH_L+qe&YLap`Q;^!dBqv0wBPHJX{?YD>O!?27FN{|Ju%$EK4Pd~v&I z6)GJ-mCiXA=bYnU;j}dB^a6t45zWP2M_`xmP#n!bp1KDA$sEsbTYNEcx|4=ECdEhF z7Caj1f2l;UKC59RA&dFO&Gaa?^Gw55K;scA*Hh%j3kmA?XGop<f&bOVd<Y5B*{9`q z>}+mYbNByop3wEy_}8$;y+^dvshkwJi%VQA_gggud9Au4{rL<LLT*zZAbHOd=3qKY z5P958Sks>;$*SaOUq^TxfIs})nnMQMu#19?_SFx}yIvx^;~$!d1^0YHf4|3V8ZdiQ z=(|08+{EHSj(Krk6qhZLTg}<r;v-m@V;2EN^t@kbw;@+F%<5dqKk{hIH!}3Cg-r%z zeK4NOV_R4Jb~m~DlEYByMQNFMJSEd^w#Q9nCb`hg%zYYY<p++U;OpYfrdFh@l7{A? zitar3bz=-KdQWqTlF$O!-o$b+9)k=$!hpZr9u4?c-}r$XL4k<WHZ}AkY2ddj1ksZ7 zpy*x`>2CO|z2={ZC!<Wl=>FCmk)@bZ&aT9}L{<EyIu6>!o>boXTto>uC5*e?@q)J5 zCGa<CrxS|a&rdCESghn;u{TE0x7&8|&U5h&ggkBMqPOKszaKKkG{ot-^3l~;!lfZ2 zQ{2q_Ok5b&5QSH6EA;Ipk~w<_?42kl5tQ*+_#!O8HA$SLi+qbl_gNgW0|=f49#C;V z=2@HRwb<6z3DtkOX341HrRqYeBY~W7mi#wBV@&K`M0}^F`QF%FOTP}5wFnw@(vs#n zvf94*<6qjN!#KL<9u8P4+kVCj;WL9S)8X>UQNv}-h-Ix-(@K5E*HE|0(q1>MXa%)a zHihzriUl`ZlL6yXaTm2>pvkQ1rzLWyT5WH32$+27+0xIyqSL<}lJ!3850AF<u1S4N zlO!f;o5aB)C~+)nI(Nch<D~j?1QE~gcS3a>qKcc#hN69qDxDS)fBI1rpd)o)X|9g@ z5evPw$7zXqDkU<dVn3mAJJr5IR-!9Wh(tFx7&eg_jZ3=~3*Ai}kmZiYo$gwY`n4*C z!cK2jMg0pT(1qhOa_8eXZWeHDCU#HtYGFaCn$j%761BHsl$c1*sQ9CQBdfh{&d71r zUpPQZxGxHYLk$?;Oznk@gq3F)W9dUiY$`rhVRiqg_STj6Y@PdsA8k%H=XeO7o(U$A zI?5!;S}d_>!CpUnb5XKjlN+YhO#?F*6tet5xPIyX!NbL}M`-<Gi>sz{H@*Gyl1;8( z(5G#9OsVE8aLVH@P}@}>y~lBbMox4CuNLCQG`oaL=vh4}_P{<bzpnIF(5ch-;nB;f z?9?puOSnob?AGVG9e>erSvg@$_q$uSKPLvJjnA!NKa))BTI&H{*>_=(rk%=4SFu`X zCWc4KS5?igNiLa6m2vvZ6Dt9?TRZLfZPMWkcktZwgG^ZElM4!QYC?ywU^u;rO8TK@ z$iSX$k@2uOc4HTp)n)3T_(6WGPWXAbyTXZ%_G+48q1Q(EKm%*s)MNfrb*{^cVT+&0 zqFYOW+=jVRD;=ERP31k@m20?Np6`W72#$_^i=pP$;my~(Lca%EE4c#!{8Ce?iDoTV zle)OlDM3c3(e!cS=lEpD)}0b=$DxC#KYtWG0Moe3!}9)#HOZdITOwxs4|d}1?#cG$ zl(J1ryVFq5M~}~)ir2`*m@idz{(AvI-p?la7tHB#6H~C0JvQh81;Y$4X8SiWB9%jK z`@J5eU-b-uMSxiY2lRY2QOg3BGE~=jlBYc|q}+vr#8B<2wQg}~&&n)&OdWi=Xc!o6 zs^r!4U_Y!Ktd@GDzqwoIXY74c-hk7sIbnAH;a)Hc!|~QOw$BiQzZ);>(2^+tKb7ZZ zT!{Z`LTkH+)wxE!CL4%BB?!Dd8@KTY%(H`k3(dd)!6oV9p@?ePFTpDVEvFgppSQ6L zuX#<s;~u0p%IaeJ(oCPxXApZ^@9k{G5DPW~H8Z@8kYyh2Xf%AkRDFQ3MVtkY)1j?I z9`}DZ6sFt@bQlvV!x09|`Wc_dmGFt&{R~Y=pxXFxA(tMidUb;TxGQ<dvhr4;FoxLY z9ehlVgdOxyc9y^CU6`%sCuX=GS}>U$MbV}>UgD3XKDZ%qm9w%5(Y?TX<E#;}yypBQ zPGdx90iMp3NDO?hpUSNVXi};umD!nT6|(4f5vm3FaLRZ%YW-Or_$O%8rt8?~Yqv<Z zD)hFZWJ;>{*>Azq5ASli?<w-|dKN#tc*mz@X&j{GJVbT%bo%tzow~2NsVVGttn-q4 zdn?>@Xp)8Uwo>qmqpdFV4Y8H{Ph|?fo`puFer!=Cf3WH3j-lO!wIa}0@b4iHiyP7O zAC^WJI!UG4K}xle!$;g3Oy~y#)Hl;k146mgs7lUXl2|pdy-Vf`UV^aCw?~u1Hf=hW z|22~|HFjN3S_t$vU$0ju7_)6H<_YTGxp{lJ9|@6t!yO@po4UO_pcM<9v$E3=s+~2L zYtuip9^oF{m)|7N5)mwmM6q8u-lu#Slm(&2u|VfvL%a;njj9M37%Jn=D*^-m26O{z zM~QC;(msD6Ops$iG>_L*Qe`g8-puaYhZ<xaCG`iBI)hmwvJ-E;Tf?=Ng4|!W?@Bfq z%J%qw@HDsKSFT*j{`UwzHB016_S-1$mSjBR04hPiM3Avl`K9u04b63U{&ceSFWC_E zrEp-}f1;4AX`W``U3RTP9G{$kGfwBdKUzg*JGqME*?SKJOM?8q6bF&jho&YtfTq@& zs%zTX!aM@td}JRpy)w-quf?q2Wb#IeLg$FfFE%Od@W2Jma4c}|NM>R3<qgKCwNlAA z)db@jzo8<M=g?I1eR1U-w5f)hX}c(AR5#<Yl9NyIudqVCP*_&G-nF9n=83`4tCne9 zPRDOud_7u+Lpcfq?#<_K<h?rK1-SOxDzjsJ1jxv*dYOa9RwGla69yU#*LGe7prUYz zX;on0NvJv#n_Tl$KOCgah0ztqKbZ3<UBr!%+~uHKzqXGal&fG8!a6rU_^O<6;86HK zm$!fFcQV#0`*Tn$Uiwj?zpL?!MdkMfDtZ2sX5e3)hqXG|#}_P_``YE7CD*g!FGU|r z?Bm${f8+(+a@9!B_N@}=RLA~Xts67A=dkCHZCGuQe)$#tcWZHpKR4RbEAUUu+(CwS z?$4wz3~$}MT^hiTuQ5I|_+SP>k6f*RxkBDt%Ru5NP-UTfg(yY1<C1FCRo_3dsf@(V z6t{c%RDPyPI<G3K8pTs{c^Z|)@$bG)9S{AEpmw+IMr^|F%HMLDQjc#Rv!`Fu5=lRN zjdg^i@w~J(DS0|v7Mj^=<pbU|ZcM>SFPRjRZJtxkrT&Pk4(OYj9nA+9b(L8|t@fJ! zeOA%hkFr`=ctQ)SEBNPZI<>Mk)0J%+3tqaNC0a8H+t_?ywH#-aHi;U4<t|GxuVYhE zo(nhR-qz<X6{Z((8WnS@eYWP~zZWZp2cK{EU;59fv$U{CPv&6nmn{s-BEWod{A8i< z8*Dau7MpRDN)FtHY?9yU?)M*L?`)2%L(b0}SY&p(Bvz`sq(eeL7F=<!A#cRD;q7<r z(~h=^983ynQdfG+par`A%5Fi4ICJ0{f#nTdlY@hU0;`KFZ~L#qgC~|jXBl6PdUr=0 zmWXostktp{#xou>5IQ*PIbfY3iT+?dg++7dNc2u)vgmE3369S&5b@%n<5)t=Xoty) z*{&9P$eQ<YtM)4Fm3WX<Zwmj-0V3y;yx1hJHR>Bva-`B-rP6IBsuXXrkY=iI>?TI2 zuBK7-;G>M#xPx+X!WWXu!t!R9mg&NK*Zyj@_0L=pKy4&jlbJqw$jl|pN!A2t*#kh+ z#TsSZ_G$8808#;+BG4bCWtM%E(O9y7r2<YfV@ko>@pODMa?2OJsQ9`*dTNv0{JpXg z6+-RLE19vuBUj#|xH0jVm^HB{6V&UD;#g_&(KU$=Y5w)Lk{!gB84MExyYcU+^km}O zr7jDn9YXPDpLT=sd|I-|triRO6cf0<YJw#dt(4b$H_eZ(J`Tc!O4h}NMCaXpq9Ah! z=Y-&7zQ$mM0rAPa#%=|lO6`rmEGmZ5N`!g|U>m8I(vK5-hE1)t+xTyCmtzQ*u6Qs8 zD12RMK#twuO6z?1nuKR7;3xaWh^7C7b~$9#p#)6Hpwv<pk;O^V+<cX-#(eHKyf*-G zR{BAmp7`8n@S~!u(94bXWk#0VKRqC00#!xZnQHeq(dWM&k#N^FIWfyUg>8)3(!3{9 zp#cWXg9^*4x6v;(>`l6J_=Yvh`J!L)bgn%4=K6ZWN`&gjMX|^&_@Oy_i4-rQsZmPJ ze4GDqh1CmeN^^pN`(C;4qJfqgBq*IFB;^D~!%vMg@b6a@;Q^|TYX5LP*LKx;D4#W! z^ouc*HEZ*JLXP4Vk6v3N%Z6s9!t`N=t4~INxx$pyLHqoXg&w!6(^Fq<Nvi-}T$O`L zieU`HPlaS8C+&wWYu>TsHO}l|rTxR~ETQ;9mUbCINFWalei_zac)-_a+MO(EU%jC^ z+SCY{oVu3)3GFxv>=ySsXY8-o$LjjHj%L{q(Y>YIy>Lhi(HkD2?)jMrgKl=0SV^N! z$6bVVb47zEsn=g+a^IE0=HsCy_-5ghF}~&6`B$O@|A<rFso%|GeJ*xdc0O@HFp;^z zsAwTv6uu*l$4jvJlSXAnrt#qlev5wf90p0J2=03<ez}?PBSaB-4EYy;@ULk)CVm{i z@mlj$*{0GjmD&q7?mQyiLEGQx9$h>JuD-F)IWc!}5!L9<bDv#fuKApAfN^Hm{b~1^ zl_Y?zKPk(=W`%;1zn=cGF{AEU;84T#z;9~zJ9E}A*t_Zm@6)JKTh<gBhciS_a^9fh z;G^Hj4eIT$721XOz2Poil<hgCPgHk2+{}5ezP0bR3G3pqROW)LY0jC0a{gpCQYYw> zT~*~zn`$=+xrJ-71HD^C+(u?&jhqoxb5RF!(y2_4F508FJQCJv?C$=Wv~{t>SDU8q zk4H*~OqSJP3};9bfP6=-lGndEF$b$p`!rq2LUaKzXxf9ZBVxYMy*BCdFpBZ8OKi)a zgex-NnvyS+$r&3_EM1yDeF)wFWMK|>XO`M@a|5}9@xAV!kUdC)>2*pXluCnLZag5r ze@qwDBLop1PhTpLz}U-($n4~wOf@IU4s+v6yH?b-2!dP&gx?K7z9Y}xODt?$JK#gS zAX5t_G=aa!rhC9xAfmd@oHVG<I);2KPUhS%;r;BDoypY*b(1cF9$@v`D>0bg!@+h; z30G&cNP~T;11@)Sk(>z>05jKs)sYNGrsTo9G@qP5f9L)#Dc63L2K{ljb)E=$U3B@v z{OHY(Q(zeKaYW_dh5*&13C#erkI#Iv2UWzUtrTL&C;3&#XGEpVvr-@LiNzW?w0&TD z3(EKWkYoDM2ycP=#Mz|PPJa@0@b!jD6Q|ksA6A}lj8?Lk6GG*StEl$$l(sQ%8F~Vh z-`r#@<&sjcikaG_$<1BXle$(46f5FDnzQ|5OwB*!If$iZey)0=d|@VLL4kU5-+ODf z{Fh-V1>aZyfPyb|cDjExpzhR&vZ!Js62SDja-$+D<J0-j>~>=XvNIi8belEHEuJ1X zKCyK1_gns2!%A~?cjvEWF4ChjosUpA@fdHqfF_U7>6os?^ml?BMLiYL*Jj}Hjt;J- z&$2VP^>Q#cy8rXya&2!)+530M-a_0T3~6fRE#Nl_Vl>kR#6B)V=i`ET?pX2@Fs}k` zhonOo*%Rnu;_(7}JCia=5U`I`o6+=7@+~p<IC0YwNJpQ$5>qu;Y|mCM_o-|IdFJJg zkSyV5;%t9+C6Su?eQCKi1=#GsH8o)^5jX`motj0#9|DmgcO^sP{<%Y;6)SKJO#TJN zs1=M0`3+rI8&JZZWf`ZT0&b@vIen?6A3^>Leor2=TQ{J8IDY(~Cdad~Un2AO+FsxR zK^*eBr5Yqmq-}hD(0QS4@wTu0BZX?*7+FaC@{kSgtHV4d&@045oJ^UBE2A+5v-5qc zVC?HFHq$`It5cI><h^0LXN-u%koJ{#N>+PT@czig#35saaOIiM$tiK-BJG6HOS_Qv zEb+33r)ogg_OGg@c`{FW8#%@h*+(ClIOsXAsy_uu#^4$rJ$8$vB5YI&TLAIiQ)Ffi zuM#fHqZ{g)ea9T_EW{-Vu4}<IhX}Gp31jo}oLP#087<1T8nSWG^W$dmXYYmbeP_8R zsZKega<)VL8$28cJL!EUnO}=ZE0@{A`+jHgCbN0^U6CaRkt<~demg=J6?1e#Z)>l* z>r<VCjwYFB|1=5wsEc~5VZ~&mNNf(ZPSw4v6uca6*1ivchkr%t=e#lY--gMV_Tlmg zFM|GTNcjp~ZcoPW34vEa4no%qpq0-XPG<cOw|*9KvrGRYGF8~?g{qg^Tsv77`e6&J zBh)hZ!J<r|jsv5Uaj7{pI2bVLaO0A5e3DAFW`?H|PG!=Mx2R-pdC?`<kfGHQJ|JiV zo;Vobabf|yA};LUdfr#uPsh!%bhT3fjwN%DPpV#!ZwngJh~O$}9(g8nnYHHeEHM$e z6Y<x6TZ3M(cbaave^qzzJnTr<#9&90<Kmn<A)~syj%p=GIt~e&Mfn!PEi%=zhp#5t z?x4PISKwfu1=-dgvU>&p!&NGfVOm^avKp>dyj~#qW(aSb#fvK$D%eZRklhKufOiS+ ze_sFFU{PiHE^&>JZI!8pW^SL>f^d7IHu2QEh0?PpmpcfU8Z^v~4^{$5dIhL4F%erQ z03;;lGM7dDI|I*mM|Y2Udv|As&$H;ATmSZGbhaLbrIUBB6OAl(2zC!JcV7^Cj_@-( z|E2!)s*YUX&FdWWuLo@XW1_O4LrNC+dt&f6)}{Ym*IlOG&s}`c?ODI5KUMcf#D7OH zPbyFF$fi}>fyH?Dt@TPpLEFJ=`+F9YHHw`l?rNp51B12_%?`zw@vBDl8qU)`SFd?3 zBA{vAZn^Z(#NMIn5+hU4JNX+^mP{`=cH=u=`IF}gsV=JjeZuUkj5Q9^-0V>E{^uSe z>bb^2OQ*ws+(+7rS%hS9Q1!9{{;KpmNpM)Gw1#5j5r%sA;y}xkh+n(EgWI><d}e{8 zvP8$<w~9lX5IqrqX?Y1h=}qh3i%Syo+73&mCQADEVxd)my5rij2oU=I%oN+x|L+B$ zn&`A;gDLVu9R)~qY-k3-0PuRha2pv%MSw|V;?|G|KIKHsCF#m~gt#G08!<Vmjd2H) zh{%>+$y@mPFJ0-r({v4m&vsViui@rB))2yEA#>5_oTJ)6PYu&?>V-A!(<qTMtD~(O zvj<(Jki8+ry%?m@F@#g&=C+_gVN`;m0%PZ}j~IJp3&&oD2Cg<2jfrjWlrBpXRh}>* zxjEia&G(7e>u@g~z%^TDrvdsMyIC(8i1V-8eDx+&tN2XnI6HNVL^Y*8AbrY`8q6dm zwX?43Gc*F@3I))T@j0iQa_3;jkXaD~<Xj~5FiHr0%K1=c-z*e8{TNqxgP&79(Xert zr3M{xL-az1b(qnTEFf4~^+n+!*y$RQ68g1zH*AuH-}@iB1#<_#ioKp0$RAPG3xB40 zI^@4S4U%{ya$&owU3<KD4_c%BcpA1O0*FW<c{LZ7ZJM0rW)wzklduq6?;`pn*s%LA z5AdAOayh0tJY7pGsSuz=Zc9c$SUs>xugG5+)`O&DrhS^Iad$7F>g?Y8U!>+_@Jzp1 z=%g%)iKwH&YEAG}Pl&vhIR||DwBXlN7=7ja51BJCV}mkTD4GwEaB-oW7Zq2gn!{JW zFJ%YjaFrlC&HvSm;kVRRy?bqM&0rw<e*oV=AivS$?D}em*1?Za@3JJ5l9jZ6WlKSQ zQQ*~v<!L&YD@trCYx;*gFxn4`POc)P0^0(c-5#)aJJ<1Q9o>)UH%Db%$+l@lyRy~) z>^9xc1&#PEa708Yb<p6|4ZMJ;wxND?oV^&s2alEg!wUrEx#lVTUKIK2<_6)|tjmmk zakJG%OI?UqGxJ7;@+-liN}TH(({|m{Ht4*k!0~1q+h^46F__0I1&?mZt+&o^iS|=B zb<W%SXeo;ykxhOs4_!XXQXaWEAA00co_x~Klg{*6k9m2+pYo4Q_vv|xK9|q=*`Iyo z`{=WL^5IV!dfIJYKJ-6QT3xs1Jx5rN;~GGG^`B!;I-LE=!anZy_5NpUt!tEi;rK_y z!Lb@2wwWL2X3J_0EL~b*tHGoUAIA7LV%thu!u{qSQYHGnujc{V_i6ZyW$8$B2MRsu zx;(VCTPc66Y|Zz%_G34G#Li5g^Wl4L8u^)jwmX+cF6msJ{8Q!OOZpUl%AfKt`u-^C zQ+{`OO$}R@8O(`5W$LKHd8GDu-paA3zKZ%W_?H{O#_UnA&IL3mR+tH}VU)^fZl&an zPM(~cZca{l>)43cX*Qsdv;T(JXMxK4>6%GIsNt$wefF2Cx&Z;cf^+y|G`FI=00^*+ z$_&*ukU>U}gX2X%d;naqYh=%;tLuY}9(p0_ThUBKG57pFZRGTtD6eaW<vlq);jL=t z-DLWOPO1y`BgzN>G}70RT!D)bXCjWs3#e|ciP~9zB8R8ih5wdEp!sUy2lxcGr$lFu zjbs{;wH;AnB-j?H2&45fhaJIqA6539gavN`Tx?YzZhS@_n@IJE!3m!alv;Pno~M*5 zCrzLL=046go8_g;Hfm0#>KLn*{Q`UPp&OCSJqO9Zdrn4PdenslN={Azghw<OKFQ~? zs&+?N>7moya#eB%7%Wguy^Qv|S*N~Gzz%JgUmKLSAKA{gw_3g39N&A4UH{E52egar z?eV|nmjWM2=h@JUEiaT#_;umTWihll+3Kft%=D1sdLY=wFZ-h9(oVHcpX;bBs-f3X z7>-o|YzX>#bAMexTES!e;EjBaAD{PpM?Km7YTG=|JvEPfZbxVP$<KE8(PzGI`P~-y zM{Kv<;o;z0ZBy0~`PXFY+_W`yrQ-|jJ`dQ&M?BVTCkLG`=w34q4E#&0idnhAq^O^s zfJ?e%p=FjSUFN6lsgAK@Ymzk^`J^+;K6?1}mG7fRZca0yMQ%>RAA0h0n)0M``J4}5 z(slWBX=|A;wLkl2KA*J@GvB(*{e9*8=ugSd$1(gfJ^Fp)mcsx~`j36f>Z()}>VA!e zP8}z14yoQ(Sbjc$ltgS3rIpEjfkq;F0v;n|zHv;jpn4;or+^8;tv}-i6d8Rps`h~H zdjLZHWM2*ooUmDb2&nkruK@Yzq^FDmz&F1A3~kB?NGN~MuAl@NJnlLIFf0?T$q&TX z91Fk%BIvOFT#{fE?|^9BHS2+Ic+$fIk8Wr%ehg?4L;+$(eT@K=J!}iQ-M5_z_+sC> zU(*gQlQ=#EAR7f0NTJi8sJ%ciAW@4I@b9R61{fAlqB`O<^}<syl^vt5cLH!I{&`^_ zz%NAr!}5u`AXR@JOV|guAXa(wj&`l13$1UmvcSVV>QZ>tuW@`)<dHyBCS;6Y3iL+g z*tV>T8TmbyHg~tNZB|~C3G~?30MmmL+pPPLkB+nBc`TH(;9kIsBJ+N{n2?7?=5XT! z?coK;gBK+9^;%9qJ0Af;kGY6aRxoK_IVG>%8!lw-;OCHV%mvl=9B=$ZkL`WTg^ZEe zTGoQRHMUv&w(WcUE;)#{vTbne)fc}Ec+4NFAKRy_e;vfqYpXqXQ`SuzZk?An3d$qt z$rsy_e~fP3p1aMw)en(>jQ&2IGk<vFUmfQVNyG2BbW1*I<dQF@FYpz6Nn>)(hn{p_ z`96B&<~00CQ=WF3+cD)|J6(EQ^}R7q)<|;XaD3xnbz^daP^HkSzLJ%%`LX*2yRg;- z)gn%4?u|aqUT=(#{Pokc)C{lVrpC^YQLbbi-->ox<hC#rT2hvl{Jx#%0o#4jpP8P4 z^qI|kHT84-=KNQ4Y>(miHxKYV?8`*Ik3aP2-KXb|N}v5t{#}39Cnbma^9E=12tYfE z#^i)>uS0Cmam6!i1%d*#1HsA=%7jwZAPRtLjV`mr0??SD1Z|bCs2zT}h7ka0T?8&p zWuE7b_!yx?Nli*dHO0-!9s+icjf}y4D<DNcVC(u^Qv}O4u$0&PUZIb-pb0dY#j;NJ z?DTl^^6Z3{NSqfis)@9~n!0!q1)%npdJ2~Gt=i<oHUQADUf87pwO$wS^l-qmhM$ML zkm4A}U2m%|_A~2a9go>L2Am1ToIw3~t;*qXazzb#l<BkpD)~F?2>8q&xJDLG)&2<j z^aVxu?G#=O=kWj#8sY4SZG$}{s`^_$@8gwG&$>}fNkx_CV~IX%&wT$2Je74Faj#>& z7u3P%g@b+Ju&!zFm-g}moYT-T^*!Y{o)881=^7p@pLKlCT5O}5*7t~rsXml3Y}goT zFgjZsh4zs{qTRGIGSG`hKk*ztPPl5QS31)_j!w=tFTeY~+Ul2I-_!-i<_aJAncxPS zH%4^v!?o3}_f?k>buT=Oh+Afq-3zwDur>o9FJg}I;e<LVcL-2-)62TBqaCiPTLBOJ z=sFe4AL1+X#h04@_Sp-4Zj^oWneU%9pX2hsMLX1ZpN`~XG+D+pP*c<-GH0C!RTGi9 z{Bz}*MV_&xg0pwd6g69z?$`64qDO_&ksiAuN@t6pyy2JjzVgTPMbDQ=*M6>j%@tq# z3t!T?PEYw7xjB7GPs;bn&E-$|G4n@n>KXaaXa2c7`OlrkpV*o6v!CylD`~$BKuF%< z0$m_b1I9rwxMYMtlWa-p_YCePzaULu<R46e6(f<}RORb(FL~UT(abX=o?|?8+PW&5 zD*yukxNii_pM)C}iW`jffkprnC#UBXCDjj?1Qgh*h#!DQKLHy0;ZN88%&*KTZ#;YP z@@0WA1AhWgL0kb_0fk@~|Eq!`F7(vRaQaF;YS{$3uCa4;Do{QpawnMK1~K$iBow<R z0Hi~JssQ^KFzs>%qm)Js?{2Tl&I$C2`~qrE)rAcseSVA%W3iStfTKIo2S9&d`Gajx zKYdq|_c8H!2;2o&0y(3c0`A*GcmcQ8-=n0>V<OE;-5K#UvJ5bD4F~X(vNQZWgCAcW zdKpA7Wk3#DYj}4faO@kjw9$P6IyT&|8{s&9WXezd68z!@{mK2lK&eQsV9&M^Y+5fq z4erpS&$OTXH(tzejIVD5<br%6t%6H0U}!hn&eW}L;-jtI>|3>l8@>XR<o(&-8wf9r zwgZ3<X>03o$g&0j@WBzw8*sla(1@BJag42#S4;wQ`=Yig+K;Tq^%(GO-|`vFH+MvU z1?(Oa%3Q)yz`4LU5#a*2E-S(J4Q-7skAo3nynt>bxPh<jQ5!sN{aw4Ap9syiCF+8k z?J#d^+IpUF{~h~7I5KPgwceDkX&<vc>xsSDuka;Z+UsMC{sYUT{;5LRD{0D;58u9Y z=1+bf|EH$gTb=*9*LEkaTov#I$=SwD-<q>2buKGO%blP2YgYCgSCLe@bGA$Kp}UPz z;{Ny)=lTnaBl_Fvx~%sXHSZSfP@V^DcSOEi=2IW|Pp$7`TOtEt_9yv$<sWPBQ_01@ z=jwZk|BqVFef3Ly;&=G=(YxHypU-2%a+j9LLfI-|5~v$&IC0m{_y7PO@8w58`zsN! zpMU;k^W%>{unrNR#L2s&vjQzA5GNOv3NHNs76e3srMiJg@Cus%$+fDlUw^kbfB9;2 z?a3eg_ZPg`?9ONz07<!$7X$*Z*mu3;`K#BP*WbOS9Pn6^8GMv`laqXcJ5UV%x#rPG z;c>08EMOzBdi!?s%bQ;-Dtmu*LmdP>09OGUijIf|zXmwFMz<oO)We^wZP&|7WPf?H zxw^Rk$N-W7HfMlf0nr(@Y?CW={=}0ZjQSegJALtD^F2?9I3l!odGXuk@{J&g77>V{ zyVo-t83*`b<?w*@odCtt^Ops1F9BBfyv@x>qirk@KYQ^K-K;4E*j?e%-3^UO<oK9~ z>I>vfh(uq5(r?iDKwG-}<A}C9J@2={T^ljAy^T!L^j_Cg@RtK)Wc8f-pTTcL)F)kB zas1VFD}baP)!wwTe!jq$?_R$qihefe9(KSi^}nL6uUPjg09A)i8?X-NwDBvB`^#4^ z=|8T0r9Gf~F(l8gw%=RYSm*HVm=n;k5pnBhTXQ^oD#8PNmqbagXrqcs<FkG30-tGK zjwR7smL<G6ryr17rhePai!@(0a>?<s?O&eRPtG^5UcF-31nal;M^H=KUtD_Je&ZJa zWVoogqdo0ky$075AWh#B0K3g&wuoQ(D?ZgY{Q|zk-fZea>9hR*uK66dv|rMhp8VHt zCx#!J-wcfP)&*<I<NJ?@PMY48dy?T@kxxPS?7%i{RtKHQ(!ZK*@&2hgr=z5z=JQ$8 z*86jL%1mc{>$3I!%$I!9HSdS)M?UE+8+y`|&-u`kraWorbDHvf>CB(}%pdwwY2;?U z4D@}GfXF4C<@eFUH<u@$G<+YM?$Z;xAj8e8PHC>8^y=4ocijbk>C0n;kQ5C$qpHq7 z${+x^@I#~&86#POT7N!%%L)GHUw+>F^wUq9KmX~60vJaCfm(M-gi2ez&QUPZIs~@0 z-j!6ZdR;9>0R|`MFE;1j|G0Va{r8(A!5d)Hi0R#kzC8dK1sATT6yW+;uNQ(Ler7)V z;RitH-R7LATK!ZH=pznTgS>vyNAB?S#pcE9SDP0Am6I3T5N5Oz{V%A){eS+)=9iy- zF7SDKz|BYkTY(dDXMnm_fBEy~2>%N0K_eV%gKZAq{DO~%n@ggOH-IB=`#MGT7*PA- zd%!**@8P$L&A}B>-3vf7bvOoSp8xngFpwxQVDIkX4dC5~8h{PiUJKe$L)Xw6sXaNP zZC-r`7zKz@w@Xmk9X35i2SjAg0QcT7bqJ`f$DaXSX(H^?KCizA1fFrBaJ@O?xM8%8 zr#_wmB#n$790HW_!3eqQe2o%!A5lNR7X1QNkLTv_Eua=q2cUa+AUZ5!M29z536x)Q z{9ga%FPj5w_eQyqOxow1w*KXBf1|yq1NAV<`r@U>{fEtW$aw6lAt<kn3xfv$_Z7Zf z!7q5tlMY<c@j{Twu|MUQ*4l2t>d!v|zIkbgKH<AaT_Ej+%=hqq$LAcIG%9}M7xle^ z|LE^OaY6MrmPG)zLG~x~t@H2b*MIu4kGBVi{<Q&|pZ-cjnsL_8adsI6ZT7&$6RW0; z+PcKUi=%orC;h~+V0*gt7$mLSm-%|k{+FKrQq$Bw?GbwNbNN1c<UUs#yR-g%^zhB) z$tMlpbJJOFUw$8bwlnk1<-a$-;HuHzm;9nw3ZJFC^ZMnV|J$u7l`XQx#kYu4X33UM z=F&9u$zOq33%=0y*@5lns)vIw18{94w9nmn);9l9_R}_Nf7i4x-Da^JyUDNp`y=ho ze#YOK-UB_~s~S9YCZ$h1N7MwO7$;|cCd`dj;K}-F)pfN-?cN&cBwG9TzyEFXcYxX} zqj~^|`YBl;j0%CUK+DLgcdWY(*Jz<Xt&6<CD;0@7ru^h3zzxuG_`{EzQ^1BG@#-3Y z2PpKXb$`CT1934=0c^b?jR-Hm<NU`zZ4QXo8cjPhY6{@H;O`bc{h3N&>rc#tQ8%YQ z{$+Do;E6oISnzQK!28ZfCKdb%Fnwj@kK%Lm8>JL%A0Ss?R=`CWp}Yb=r_|>qzxw~i z&)?TXudN$lOLV^6oPPJ?=15R^3J`j0B-I;~@SWur_phj@!26e90BT?>KCaU}1e|K% z4)7_^^v?SOeoj9+Ci)A|+5m2k0jQe`B8MA+C4L_geSG-?7Y0Np1!@54n}<svmXT$a zb`S+W02m(uNR4Pd99(i-DI<D${F2D3pc6TP<24|%+N!`RZAW#=KA`>x@OWtC9Ge%k zkpS8C*0rv6M2C%13kWyV`#?|+e^s!69zV&m?BX07Cqzb1uxGz`CD{De|FJpy*MAu@ zv<p$)I?(uNpE-W>c5`&`ww40i-T=VS>#Axa<JNCOpTSk4ti1%{Z}drD3gTAFU#Oq$ z_u^mvZFBagKQ+*<Ql-e!PA|BMIw2~2Oubxh`{IW`Z%+R5ue3S!5zrdKwynU#_RlkX zJmGT#z`rLl>n|F%j|bU{7QwN=x*oO1@%`G{JWuSOKfbo7-|Ro91#&!R-hK3$?@Q+$ z0$kqt#lL^dT@t(CU3Z*ki@A1sK6sbw{gg8BewNQsx&^jX!PHVyqcYR(ZX?LQ-6FlE z+IZb=eKsr{zckR6Z>!_6y>t}QeD?9BJTm+E9;1gg%O;;Rd>@<c(-V5q=%4eUCrx?M z(D$X`o73=zKIdn8%J-#D@uxiLtmi}Nk)P#~Pa3|DP50>ueMxJu2<;e60u<7vjLtts zLjhOELQOO<8A+{^Gbd<IeigChB(3ZXCv?}I`nl!>3~vDfzx?tm%MpIw{OQLZH{S!i z3J41T;IEs9Nd0-)r3Q5a7|!_9bS*0YK)HWL^vuZU5kTuf07V4s^b+86b^%Vj1gx^G z0Bj)w6o3lEjsa_DfSMzsi3b3$l0nD45kA1lgAqYPvf7{(4qQ76*t*Bw)o;I*Z^!VT zLKpD9LhmI=?uMvh-KPYgI-@?PM1(<zMCFJ9`;)dmhr@fS%>uAQiUF-gZ3Xf7fc8V` zbL7$iqLwG*U;YSSq&~Mdq~!0=?Nc6%D*CZ4yz5^O=Ms$@eAWkLr4^teGJ9~&&*B@v z(($h}g&-fF@a^D~$Sa`Es4Oc%0b6xI0kGJiod{8G9=t%%rpI1;u0I9P38s&^ATZ)u zAdutL%Od)szzDJ(=%M_hKXHL@e0&9H<7Ei&dYo&S$pFY68)M0a+wZuzxZz`D(+iJd z`;Qk9*fL^#O4R(-h|=qe5o3>y(R%eBvTP%3pzC6YM~Br@5bVqN<uZ%|<PPx33l*2b zoN<hf>6b=?UAv8U)qW>0h-z~oB*?$vqU=&Tf>C|p7}#h0g}{p)BjjfQVJ}dONMEz; z;EsOf(g=RQsOYn--WX^!+}AqS_<`oyTbpEA7ijxoN1B`C(QRaHsn5P;+-oTNb2>Yb z^5@dSH_OfW@FktglTW&jFZ9oq&h}$xAAMhW_>+e3_omU8HOk2+-KYPl@_lm8rKew~ z!!LOh)VU=+pK(=>8}!N^ntu70;<dfOQ6$Gv<^5_3-z7QnBpFmmTcY^3O#An0tS+)M zUwcztEI!DyrEh`lEc-40$y;DwhyGCdCwFX87=IE`n2JAncD9pz{P^Sszm!4;rekdy zpq_vq+jgk{9{@_db&L}~nF4h6hA)3U2c)=+!1alO+n)iqzyA8`=Fdb=ZMQnfllGcO zpcv856QgecB<Hc7;NW842(Rl-&jFo>MDThoF3@OzhPv^ITiAUhlWSaEGwV%50wdNH z6tJ;M0tO$?bqgptIA%R2UR3l^0K_^~f3o)`o@>_a{^$Sq9{{Mg1p0p5{P|!14c}Np z`vZYkz~@_{i7qP;d<vS60h14ao(m$fzfnhT&^p22*Zf5Ng7U+&SNs%ywK-;K#<go- z1)M%lsy+?iUK3G#;3w`kzy4extNIudy8%AICP)$gjAjFReO#6;Nc)4F3WVBTcNG<- z&OA*4G*xBQlGF>7T|ce+)P$QmZ))R^ann@mpiKd>_W(Ba_H$#AEU=0mbk(D@XeYs1 z0XEC*B$%p6o`Y6D=b=Mgt~nLd`E$I-+sh~0`<i{D=7hZqfY$nDe&YY_Es<itoe_Qc zujCOxa{SI%9&$umxpvj|{rRtdrLBL#Ki1yTC%hoK=XhMxUiY>Ma$>~-<@NyqImgFt zUcU$c;w{@8uv~(EYTtE<hihuRLG7LkkYE4y)8_C0^`8}`w*MJvwr{_A%S9A*eSw|2 zF%6xrJ^ls$3znVuREHDzA1X>qq?Y=-&i8<0QqL0>NOSy*-Z};_P3mRUA9u@q7Y~#F z)bn5TMStvlC_QrD(tq+6Z~}5rXLG+Mr4XKxIsm`I*1*<@(OJ_8-szy6k=7njylm3U zIvDElHKfH>M5I+yWtJ;8CgerK@7tLN<vwllJ(qXZG0Q!bpXKL?BKeu`x%t>PUF!<{ zxq2Ssdyc-@&YXWt@0#`$f6C)a(zT8c*^j=+Je3b$(%6q&@+p6Ansr5w$vZY`$T)cT z_)D>bIvHCq`ma8?2Gdcdo(8ldB30<Z=-}<<H=<tx+dLuRgcEzMdE`W|juRfG<<kNL zP4ygC$0&3+>8F5EpL2UCfFk1NPrKT)Oh5t=Iii00=wq$`7e)?Ij7~rmVAQpeMlWg| zDgZ{G1s(^!pn;otj<|tJ;B$L%4S;&P`HeNTr$%VU+SLbd_yMH&l7VZ&r8j_^10&D? zr8}ayzy17X^Ak%4{OS1|FfSN81=I?njsa+gCvPe$YqV8xTQ6q-a2XMFt*vWruV^a) zq4n@*dZVW}Rel+f6o~t2KuY^CCklM;0ks8`@o&S^7LHgi?3!eclTqhGd^BQ7+_l?7 zem(+a_4~0se6FiY9O{V#+UX;X&3?*4J*@(oZ+i3i_^>aJ1OM#1wM+o8@U0=7!E|)M zR1slPL9da@idGuEC6dX*uV`P^Ba^QuAOI+R^p{BWo^`I5ME>9W^!LqgEIsg|%0A?B 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%0D&VHIrL{p22|_>j71 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�Uk<9hv+@d) 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℘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 literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/destroyer.png b/Unit-2-Journal/Unit-2-Journal/destroyer.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c929548425bd3a3861eff78735c1a1f0310a50 GIT binary patch literal 111830 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 )$yU2?09*vvBuJrIkT- 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%0D=6p}b(l7o=60@oerNOP~mEjcB* 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 literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/drake.png b/Unit-2-Journal/Unit-2-Journal/drake.png new file mode 100644 index 0000000000000000000000000000000000000000..767cf8477ac36dbcb984d826ab258bb160a363bd GIT binary patch literal 124450 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 X(-)>=4|yE{&d>6+&8cT6-EaL5@IenH literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/lean_startup.png b/Unit-2-Journal/Unit-2-Journal/lean_startup.png new file mode 100644 index 0000000000000000000000000000000000000000..35e80ade7544d9c915999cf25147ff8b85f83f8e GIT binary patch literal 1090468 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�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 ?s~m$+4)SqJ;D{=13}n=(nn<c<*zt#T_hgGI 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%0D~Rl(Ic3!mxx+}J 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 Q5wt~A`3UJWd1=0h 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°98!DjX5`O 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%0AK*#6TR}7pOOnBN8Gx#eEoRp$Y_dq|&6dfA+ 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%0D&|ELw^5Asy;XE^S){pXU#e8` z+`C|kZq>W^Hs#A5|0BI+IHm*Qyp3z$B>Z;_#2HhN&z(PH<Ae*`fpB#y(X5HFt~OJ% zn<*626%yoU&t7JK`1h}~7nq}5A%PwvT~;FcPyg^)nCcv152|p%5hR?I=4cyg--NoJ z-<XrECy89#otx%}bYiDhCIy*>iIRD>AP{S@R}L$r#P6K69SGNxQ}$d?lW-UR4eGju zgwKugjP1R@zaJ4ZG|M?hYCb^vZKF2u{i;xxZJ3B77@rA5#0~^$18s)&(;P|1XeG{5 z1SoUNH`fqG68-_lygh+$Tmu{dMczqAY9C3EDrrg#6mukVkPJk$fqW#Y+YnSc#2;^Y z55W#_G1b7%9pQ;mb)85lnK@22f;7xYAr*tE@%s`)u>1L_<+aY5p4x3ro@#ov*%ih{ zcX5|pdNtm=Z-RYk9hJCA$XDIajXagws%p32qVH&$IN=VxO76dY_J%OOM-ZGumcmhd z8wO$X$)hkka-+a=n9Y}O&hd%CU*ZI_HA1=0u{pP0Mo1C2BRpmh^EqQ_y(m*V@;2sB z`XwyTa!(=L41rq3Os0+|X&2MChevzt2SI37od37zvt4{@+!w<z<unzOTIy||M4mEJ z^daktyJ8#Vr=mf*OE2wrJ*=|mYvV6Nv&lw_?ieniZ`;j9eDKheP18DWWx8a(#6#CF z+Y~`hzyYw(1bl&1-`%NYK*>+Iy0(D<oH+sFxAavaM#z}Voflm9EK8<^Dw0|T$;e5b zFkYNsL!6Es;Ys&XXWr3=n&-*j`mOVzYbo6rg18m%a2ILq|CfxHBs{Q_X*1=CL!dka zs7#P;p-sZWbr>SmJ)tyTY#`ior~4Mf?grQ5>Y8z~3?U%blxw@iFE@O1L%XTOI^$C3 zV<SM;(SU3iW*V)9oBl0jS|G-8m;{Q1rUrCP2=aD>!NJc7Z5@h8`V2-#|07N};~hen zUlJNu+x8)*b?zskUr`gLNT#!Xu!$L@n=0aCgc;!$(Vtx2;jIJ;C(Q(2?m|C@#wqJ; z&HdVb1ePVvH3a^O`z3ugr=J!g0)SPhNi#WYvwdZ#P<<zK@<tG%wh*SN$yk(8P#`*I zeCudE10Hh;eEK{6lgM}UIqtzA<_onJx)~W1$30|f%(0H^u*Y}4VVv8?<~4zts{j+( zKr-PZot;k~sAZ%{Ja(R^Oe;&e*gL{Gf;S;_@<YGzEx0BAM^^D9p2n5+jpvaM-<saE z>C=SA@s1ZfGapOwMKZ54ZJs!COlk7Vx8B`Ocl)|Xd;8aVM1j{2Er;5s7kNEMVV{Li z<2qq{cT*$3iHZxR_}+WRfk!Y~@rCt{M+qXVQ<euRA_&2UjG-t4*=7DaAtd-7T2+M& z4P6F+bB$2Q6+$#Cd6%JdeVr>@x4z^f?1XfJa9&`v#V6^XP4SU)OPaZFTEXML>Zlqa z!bzsc+~RDQ3s^||ErU~VSit}msY4n=ZIpUcnLrGUwqjr}P^n)c)jJ`gMh~+C7cIAU zH{Q6DuUZHR5X}vY%%sh3vvnViYd;*adk`2s#FlO1AIr@jpH@)wAT450sD71`7YuA- z6#xK007*naRA@$hQZ;W!DM`~KUSAL=1UG`I5&mor_coQQV=^o;0I3EO9yZ*xC8kv- zKTQP!jQmM<eYDdF+}@53VB+9jm?S8e(2nx(uaNOq2y#Zc^p*$jk6#D^`7#Jj0%iV4 zEX5=dec^z0Ag6(1f5gH>2Syj>-C+PyK&`)*roN)rco9JccowN*B&N3xE(cl4haV@i z;4-}|`rf?$6OP-cLmi7-=O}NA``aapa)|)2&eV}HVfzb4DIR`by#sExFXbKMJIc*V zih`XJoYcj2mk>-R0v<xnXR2&5FJSRnGfwq$3WCSZ;s|Xd1t?t}unCs?9y}w=X$LbL z!!9a$zkgTL76@3<Feyd9X(6Mpg!6`dUT49Mc-!O^LQTGPXJRGT?%?b`0LF8tHq=8x z%-=L;Nnlnq3}#XuViI-Lb;oNr+@gYLC>of19NoPWi`HFi>y4H)z%1yzbA|cCIdcpV zWq4+Y$8CtwyF{y+@^GI}wr(D^V%41>$u*R$8*wd#0c9l#GjIUmA|f8sk*#wsbth+i z1^gv3Q-^?0_@#8XuFnC|N}a+hm>$$1JU5Bd^624C_A%!XS{2PXXZ<-g`ltAzy}|5) z)-xZvi*HOt<eLaSddY=Q!d25DU@B9g5zLZb32J6K+Cde7Ki~@DiBF=3MLc)o)gf?( zV8-?;g<VPf%AiDk31<wHQDzP{dY|+E0CST6`18|PCq|fmeDZjos3gStC%RHw$5i$( zIKUU<=#Y@VXe^E~4SIFj&%Szkntk>4)3EUmp;j!Ij!o(WoIHY9=Yea18-6t>;1fjq zox`K-$&<%KyxK+U)j|_;$VPPddm!a@Y|v!Br9BYBW@Q(ExpqSkTL$`oJVzS=Qvp0< zexW?uBg5*q5@j+8nzoQjq;WKmRm@M~tlzo$n7%MNSvQFFUxP8#?m6K%c|lA_3QBmE z+5e+}rvzPWBqlDAf1K2tTL@J8&2hqYz{2PDCFLZ>nrk{#bF}b*!pWP}&&iYa%KX%* z6W$`kLzcL$pyjKu7sHZgEWxCqJs^R^cC>@M7l_*Dtj$JXl(-B0roPI+wX|RQJ?F~( z3fRwJNqbi09lk>%BXfq1(=~|QI%CdLy1-~fO86c7YG+E0Q|eJ>4Uc@FFN}1i4~xuE z1>(JqIducmLwW<LJ*Gf|ZZHik7=E>Mbr?lA;8WnJABXdlbb|P6pcn%ajF~&^m)NbH zzNs^g-F?_iAoX=Ipu+|ll_vFVV@4z~E@LC%HfNkIsgUbLg)!h}epT?UBx5N90o>-) zdk%B3be!Z2hS8KtG9Ka=@7CnQAO_yhC@>XjPo$5637{QrVCXLL`iHu?pM5){PZ!WX zYDgBGOZtkTN#8Ml+D_`npa&t;fXK{&*}&eBBYryeL$E-dqHg46ehcOo=K?q9)Z~Va zPA7dG8aM|E|6L=*wSq|ZaXjZIo^wMMal|{H^Gzi4xp{aKsd*5U@;+Vxk9Z00y4LV4 zFCeYyku3fc_eDLtFP{19^Wt3yXo||*WRddWFD<>UMk+ne%la~AY}ZYKs8xI$734|` zi>3iT=kY`*r#T_sGEhM^l9N+ve0-nQ=#-y+OOD0pw-}p5@52wKLx7A9!u1k(AX718 zKDlD!(;E25E^pu{;h|X<Vjjw2Wo5&cBX6_qi#E76#&x=nlBsV9iK0e7?+;Zndk%As z2J=G!apUv+@QGTBKn#Fp<w9%0uVzeTBAJBQ6BQo9RCI9k=^!l{v3NHbKoS)a3Xum0 z<e*ggr5$n$UF0S<f7`2OhE^Q)APz>G*qXwP4=|0WR<ZTPykJBK#i22tAxa#eHR8f+ z&aj|^W=s}tz*1up*<>=<WAR@SiQ#HZOl~=FAQ}t>?O>Xw*8Y=`Dy{{<+eZ$WczFA5 zdhXv_Pm9Dk9B;pRJJ<Jje+dG`gz$Z793OGsN)SDGt1EmJDD1E4Z>25X`7FBZ`XVJV zuk^*Yzxr0fl>7((T9158|6tl5O7Ja=OZDfYZ`bsP^11!KK-=Qkck{X_HNoB4-^Gf_ zK29L!qUZu<jUXJ9l=?3mikU^tQ)XZT!m+kNoS!OVld&5Fi>8dyIzEHdXZ?@a-BP`d z5VYhG8dC=GHIqaFC9!U@IYT%hv1@0$$T}BQ4EzvMP6;~gQK^LyS}1p+paC-j9e}Mh zuY*Y0$62<4X~i8R>6;J%Js65hoF8AldV>Ij(6%rSn@F`cA%^dg1~EoFQ|dgTj(r%L zKH*l?PCz~~A3|V+-9P0}w^(QbGEVo@$MPYfLZZy~w%PgEC@h8w)U2rvY{%L}&_*mD zknFdzj~;Dj|MT<v*#~zv1vhr^?DP$xHYa-3nzpSmqeufF<tb>CXsVr2d=ku-izFQy z3m6ozV3&{xEd<vt>Lun@HBFXbbv0#~F=t1FF772{^cfI-A%Nl6!-ykg2(&Vqn=*u* z8kY;4<^TMrZ_p;=V{(Q7>CP5rV@)<2OA)v>QRD02zO#WU|KYvtAyNO@TgUVr3<*y3 z`bmfo2J=uVY?Z8YM9yM?UB`)u3VnWvlj^Vk?z8N-zxh0S@|Zm~*m$VUYCXe@>I~=o zD<TQ0^=M<}qo(Q3{#Gyn&OJfIuvWNJc$j|KZc1b0;wVpoJvqt)3(8cw8@?03#a_2w zp24xOPLe!euVzOE*ByyvkUfIHi}x^vv`rk5iBMRE%sJA;`po0#0R9Gp>@TP77k^~} z{nU|`b~1*@B!PtdQU;qu;yRecSfy;n!5Y(uU;<<)Bz6#qu4E2)FTq+4TmjD1*L@(? zNY1TOj2W0<H6Ie0G6^fRH%l2IOp;d>qE}%-Aaj&772pvSD2PJq?7`=O8)_n)I>bxJ z==6={QCIUIG#oHX<7g#gL7FA-Q3F5+G1kUdGW4>ou9`cT0yI^iHuDXkXwhW2bGG#q zcgJW!ba1_bIP0;)_ndZapj|TJ*AZchjRfZ&6niog_#@~uvci8vldmb?>yM<fxD39G zl6@l1$Qa7BsbMO?T!in0?|`9%x#dW#ub5LxIHud?)PG_Cc+ER{iA+4Xr_O79N(?!y zHbqpBF-puKDJe_CBxX*=t8+^lw~lWiX%sla_^V|T&&65cD}GrQGh6}VW%LvM&UHF9 zp25tCYCwW9FN3q<ktbhyc>m*$+X-)9|M1t}P91nAJSqIguB8Pd@x!HkD+PsLkK(l8 zMVq7C7>7mrqLy?{d{NX*JQi-?J#PxU7wqy$A?)LQbSl5X*7hZBh|D0*7%v7&fLvxB zL(>Ib^)S0#=)2ZqZpU0rK@wJZXx~-{P4@5;Bmx->v4?$?YRBK`ZysFNJ;5<gVDfhy zetrGHJKlf)BdiN(cz)hU;;l%2T0O2^$cv6O6r$1uRhdeNLOsR|;bi9GVO;GF3$b>} zoi0v`Mh$S$0tl)_9STZl81upPs|j(48Ry$~N*Bt6Xmb&-LIB*mJB2yPvRCKh?D-oQ z4Q&6Gm{u8*uz}jAj3jT0=3>ldN;M=5TSx3#`QR{OYrk1`vM~;X#$qos^6jMPYU*OU zlw8uC0fT6>uo8P%MU#3jhYx92v9f{+(MbaQ)>**ccX_(+2mAXs?}C66Mo7cJA;IZ= z8V}q>U)f*w3q#glLG2$>$0U%aaX9b+_?gm}iT_OFU-P>DCqDR{Pka?$M(J_Si#S5X zYbq1{r6YYBDN_CZQsQ^KE3!|`iuyz<p5Mwk<)42ZD3@B0o=|Y4y;axm`_?fnEK*~I zrxnNx<0`7bGoZ<1`h@`$AQxu#fnP&Z6#XIRuGBQloFE3rNYqsIE3H;KTW9Zw3hLSt z3`Etq=gcLBgstLKy_P76qRp2@n8{UX{{&llC7GINkY%KiXmE2h?bnqOOK92#O_C~@ zMnr6Oh+&dL^bws0KdhN?*IA6GFc;24O5=R5`AGwth%HPTnn*skFyDkUfDl}T6YWbJ z7hSBMJozAd{P;m^%C}hGVNoYUDJGjtK<u83V=eao`T@AXlo|^C6^zM0XO3}mqmVo* zH58hHoWkeSWe&9(JLOVlmCjV9?FMZdm_5{$1{-Aug0M{ew}}38NNCc#>;`_%IJnk- z2cHTS|3z;9t=VZXb#@dmQA!?jJoS{==OO<%D8~)qJgw6VcuUv{6R9#yqsqY3Y{UcW z4A>w(=ws$@3GFGwi#Fq7rsX?M`_26AlLkaxgMA$85L))lh>+qhp1;XXa4g**=*BM0 z+5Ni**~15S*oAqY`yDpiqYwE`ZPw}8z3iK(-yl(D<5T*h4m>qCa%?+q)9b*D7D3qS z%&1fF5scwyA3e-I{}me?vSFNc?+}UT+4Gm#7hn8)_VW3Q`1ZpOKFT)!>9?fcf_$|< zAQ;I<GZ5kDj>-*8YbxNF%#-aGSKL|HMP8h6r+1khCBvW-`3hZN030>B6Ndml2XDXw ziRK{gNaZXiyuyr(yi8Vcp#*Pb(h>n_{T-u@v>0uvZ@H7XU>S})l9mD-VLT~))?dcZ z!Zd|8(XWg{iO(9(wWnCiKtM7t&|GM3V0dDs)G`oipMtrx4l-|nH{yaqL-(t&FNFd4 z1P;v!N4r>)pZ*2BS6Hw>k}5->G(Of`(ubKH?bHz(uu#5p1*dIy(y;E<TNv?PL7~jA z<EV_*LWV-3*t)uhjpNu*npfb|E{^*t0vi2;2BXcc+xoyL)%RXz&c2W~8Nm3vtF+qB zEyBUxz5jr)#gAcd@rPn8NLMVOCps{)qy7bX5H1(<qqa`ZjtS~gL3>hRJc@<kKfye; zM9o!#I1iIG86pOYV?hSgK_t!N7;ue~Mo3z(d~8xbVd)X;9x!r(AQ{l0-ze7|lZ|Q# zg3umEtne|f{0uxv_#loc9I$Nhj0)4Y%&#yn!a8Xr9K&iRz)PMlg)hH&hk&EE@Qymf zx<_S-Ip1IF&x=%F@zDv*vaB@U-#)H2{MMS+Vlp46v^G1MZhP{}c*iOL+>%6}`~^uG zOp$e=b-4X3V4D~0x5c~L*ZJ$~AB(m&c@?;@64oW2B!Kd^xJ^|^?`((vf;Q%nb(E2} zT)Wfy1dUnrExi$b9u#PrqB*I4GJW(J^NE6&U1-^R%!@`V)Rgw@7_C0h)HF|9u)*df zO#U7lAKqh!_HDfPH+2%?5HoB|YKGUg&$3dTMZb8@y-(7fA#vpkj^a9{PtShbUsel| zF$a7!kWBcW8Y?O?5O^Q<YgQ_*nYef!4uJs}faGW7rG!w9_=>H;U%er+#@QY_RJIu4 zAgjzbqs;v$w0l)*6e`ikgYPL{C#Ma{*k`dU<8-n`OzS6X)N<BAtwWsdIoc1MiTZ@T zTS6(UYuii!*iEwVmf8K*kZF&Pnrx(mJuT9Rd8d~3(QN406wYJ<yQnke*^+2K@XFzB z^8<-(6Iba4gD`IS8<SsjMx>1IBb^yXdVXoc`{SoUpcwT2dc@xXr131K#=u3#XH0JN zp`+5YY0`31OMU8lk780WUH&Ax$1Kx5iOhhTG{hn|Cd~BM>;ms2Gt2SfFC4etTfHAl ze=94~$3Y%`XB|AEu3q2HJKhw}@-ZA~^NFH(&##Mi%y74!#U&Y=Wvm7Kx-U!Gb0ZZj zWMf=JBVtB3)vc3s@!v_+c|zDrxGUu%G70A-e^2a$SiCd`SbNfmK|IiCtLJ!wR*3S1 zgFPu>HRGjb5mUGcCE}K^UqOon-W|7Fm_AgIrb}dMmau{MWD7@J1r`EM=j@?=4J`T! zLL{yR_+?$8{nVVYi8Q*UV>KIR)g+cE+c4Kdv<=Q<XGqu8zAD+&d}SLO{B3s9mY{SK zBHMY13Dq&q#AoN-&{8Z{Xiy;_WHwebN@0rimWWX^6T~I3vMxi2B7HvGdqCmJ21MmH z=0H1}?uyIOPN+*4i8@5!7BT&G*mNHb=UEr^5ze)J!hrTMEmF`jM!Kcl`I`K~oCN~4 ziY=(xTumv68wyI_n1yIYW|vCD>5C!}B-0>)XMMR%xagphNTgjnrk`Xl5GrAg<<7+t zFdA-1xal0dz|=y9@9+TgEX<i6-n~oR8xUz-La)BcUi41EJIu!LYxwZPC)sDe{w(|C z(@(P__My<{c8?vi?;P$%h|N<%0|!$^{{CA+B+Cd@s3%pyM-JkV$VCm}{~G4=z>W1b z(R5Sy5wJZyzR14#-51&a{$KwGhUPh13&IG~ck|h&TD*lBtdevkgF4rS*$B^NCMqyS zF~d+NZTL00(SJl@SH@8|NnmR_LlSUS=1k_qK9I4ZAC?fskcJYOVKU{QVt%q;l^^>R zkOQdvD*S?AjQNW19Z&9;VzkBL)aOy(7_|!$3Sw7iKp+aW7@$)0o%4rf$Ot-yT<;ij z)K{&8^`0{xR`jD|ESM4*bJ`)>s~Mbluu@CKbA1FVjFk$Sr`V@}_P9sX5{3enmTJOQ zNtE(jb1Hu^I0}MA4Ti7^hJfa(F_f9EVo{(#GWaOci-fU5HDh*#H3A*Mm~gyHs$lK` zevZRoA7+jTWz5dx1XM$C;do5#(xhrlJ`2*;*to8aIku8sDS#>V=9*c`Fv%db@w?e4 zij>jXw$V<M7(XL+*uDTi-HgzXu=dM7MBUw^1NP8iM`C?B$gfO2!WSms4E%wmnw7vN z88!RG35<D5=V%?+OIT9KxZ1bUOJU+gKiDTSn-cc1_W-~8yo5Qqu%}NORoVhBg$+I5 zTT)_aWH~vRYoM&a#iS)+(9>`93%F@to43qJXqqTnzm5>9@Q#m|s=ytt9p7ZcL0?!; z&$#v;Yyw}zwLndt#|q-yAGNVvyvf(zNaUa5p5MriJUz^r#--o5FaGdLp6N(wqfQhb z1bP0ZU@BtmA$`G66tqN<ws@a^_MM+7!M1UcN-N5?dJ^Nsb3Tom^xn}M+6d>%NK<_6 zm?jPXL%R;VJOWy_i#(ja{k8Re9Df~$f*4$A;xDnc&!&y6H=P-KC&6f_5v{ovGN;W6 z+uUH_h(}GebIk8a17i2t9|_h`u-7>}6a3TrqU2P&)F$f`6;B`jq`wGvoO~!cIASx3 zHgeBXV4@Vz^~TrNoE4+Q$_YcO5TROex|T^Oqmo}tF?%91!x@Xf1uEvz<N!`eWMv^B zqu^`-0=HxUs#0tq7PqVs@ti$fvO4}1Z5D_l=9R-OCIBYe9-;282%R<|+QFO!e?eUA zHblieHf7p=&?Z{UUiSH?M=U0l?3_)4cG&Qy#crHO2SjRMlNg;GV*o_aUI$9tJmYzS z0vB;uNx>a0&3}t~6Zri7@t+9+q3!Sl1pznGWC($VCJ7*rs`)e^Q%{6y*e)SmNc$KZ z*W-f>>|4iGOn-UT#oErbny1JuaFP_JD<(qA=Ey&}{!LGB{zm@!?b~>Cljg6!qVOWm zq8{dTyUg#)J0{q7zO=>UL1T-N5SmKi#=n?^oKRy7qzr^-nvQPZ;hXp(zN4>z|5Cz) z&eMlc)&EdJ(~s%9I?|Uaj+#pd2bl%_GTD#^r_6|LQrJ+!F201_yJ1Hs%pFtGDs_XV zh6!LF2ux;n_uI??Fai+YI}nlw`-H7z13U%z5^O`HJ3XS%I3Y^}O7wJ*Xud??@#ch` zi<`u8r<^u<x+DvWz6=MB!h_gx7NQ-kLmv~U5fl18d1#AoWF;l66YMlQZ1{F|LDUqY zawr8|A*E$yru2M%vq3E8K?ab2xrVJd64VLAjXq~r19r<L^yL=$iQ7kqJM0>LfR^_K zds=8tv&`=9ma=>7=)1?fSZ7|A0UJWFT*4Tg6JE7PJDs?@FiG0o?h)!nUw{UTmyvN= zZaN1;GIgUYOpKI#xkpDm>~?`W{WGTBM#xfVqJ=JWP)0Od7!mtM0!X5SvV&5B*fVMm zf}9oe{|X`)u?|Fv8Xz3*(HJ;>?qDkR+rR%P`@3H~f+(tH$Lu+@E<v<)o@TFJzF_|d z9px|4N^E2Y_wU6<dzyUde6Ej$rzR{SMeGnvJt;8O3C-Fh*em>6#~@+RSl5jfNIf;R zmC@|t*!cR{bIz{`OL`7tmiF7wr_cGt)0NOQDG?AX_z<&dU;N&~zkns-Hux=JCPAqG zU>(W4{p}p(TqP4G(N%+>bJu7i>o|slu|6#h1LvKU%!8VCEO^vLscFyHH=zQ4@S1dK z3`$s5-I$I65@FJ5okXU!Pir`d1HZsI5W@{#U29#uD-i8`9ylbSEfHA)X2I-QSK4PA zLsQ~>Crltt1xjeTxL!llM%xiMxbR!|g=3e^7Ln<bl?;XKelo*Zs13x~dJdt#lGx|O z-T?T(#KB06Kq~k)@RELTEU=SxJ?lbrLt7Bpu>y>0_++}#S|Wq(A(#}*ct%811I1y2 z)Qq$+M`CXZcF-O|cg)ZdY(O}di6B)m+$xMy4b7;Ul?ip~D_pSN)HA|K<9saxYBabe z{jg%}c4c^9y<*>%uNn8<2&Zch0byT}D5vpiB{U-xC)7e#VfG`uKJXAGI8cZkK|{qF z#k{ea5NLo9vkOf7M3m^$YAcutMji8{umjHYxqS>91x%U$B=WHaF~<h@+yY67Qx)r# zGHFx#O%S$uKZGX2Z*|<I?Q=R$!G|=P3tQkW{hG9pYCbqY63q!CKo7VhtflQ758|RG zS+PxkW?3Rf9KK6%Fj2x;Uc?7^l6U+Fx7$Y~kB=$l)(gjp1aK<l){A#s76fzgD#0Y> zR=i8=nINDrUYRD2C?k~}v@q{OIL1rIK%OZ7P2bwas2@*-frm}_cH5IL$W0!RmV`0S zT(>s9^y}0In)HDWZWg)0Sk*sg|B%Rd_8ClRi}?)&1#=7i#T=tH(|PBnS3t0+oIP!o zZu0jk-I2z_s>OqwH1Yhe_ya@1fG1zoG)g<t;k6A07nxivX2Ha&G|7^eAXGSU2z11G zhGR9Fg^QO&oJ52n--g6Z9<m6Bq=xUp`6=%}nTk;H0f=OajTDW7uDMsrH%fu!Z@>t+ zFb&4_?9EXld-bZs=27Eppo2DZ7*i{|yxz%v{n6d*^UrX`ySqW0Wf+dj5#|8^9SPW@ z`#UfhaB)VP62vTiB2^%r!^?U&QPRSMP+Uh{E!#<i`YJV|9l|P^J#l-}8{VWIb)^?* z?~k7ZfucX+moEzt#xL-9Qju`b`O?!3(k7U)DABWT9H0_9M)nD5EQ_G_hy^1YlZg37 z_c*Dh62z^<IC#$qF1Q%P;SU4B@nB#3Ew78Wk>ssEq%)0&=;K-3r>B4U@9ngH8|cLk zG{9S!W)Z&jh`QN^yjHg5<}Ri2RbH+9LGfIirnUL|G%@mh;5x6OAahHlNo-5?OK@t+ zkTOk`lYmhWA>n{%Fsnh)*O>6E&4M~%h=Wx!pU4bi(o&)C)`U!PE{Lgzv2LrBV#)}t z>E9X)c@^IaO=Wse5$9~|(}7spM_TF*wuji_fAq;cOpZPZ$@0gaV1xg77e)gHgY1S7 zE|=_yb3y$79yX|Mce!Sv9braweAdZMi2eVBxnT=p)(NO$*$`I)G#VZ3RVRj|){FyN zbF|Pzc9Iy;wVAY>GC!IM4Qa~&#sXTLw7`=^K&h@EN^=ZzBY2cl;4Bp`0ubjTGCf7; z^7?d}NJK^*lF+RX@oI;#ruSi1&asna-labtJbILU^1)$t9|lUlG{}A;WzDl=qE(&1 z{9K{Ewavol6qD1Vqir<3Mj?X9x=W;^M~A@UQ3!ZG`0%6bBh0t<Fb$EAW_tx9icE=m zLof`Os1hbD2DV^A4~e^d9rdSN>#a6oW#kwNbc3!kr%uAs-bRXYij^SOp|pwV(0yS1 z>Bo1o9T<Z<heSuBO-thAPl%$_rLIevFL2A<WA(Ljft*74X~yDn!?P+mUCK;=9W~Y& zL%FuVr9)u#@Zo);_Mo)}_Oa7A^MG)--bU$jjo8GL?cU)brUaYWM<0F6j@z^!VN~68 z<SKJwSYXXdY{!hU)Ixb3>k_cFjfMf$7G3iYeMM?4_7xcl#)U*VsRKJAOs|9*rY7Q@ z{xV^LLYf#){K`b^!3;mVcL078TDfn&3C9+}JUh-{ny6bDCdxHh!WHDA9HjqB!u@rz zmY~PfNb@*N=oY4z*k!CqID)3Z(8$zl@)C~p)Fem_`c%^<1pz^1(hr(D%}h&4`jAY4 zH$r)sdFn)4W|W~;V2zWv8V@yW$);asORWVy75rMR>1LjcBQqI{bT}ni*&1e%%?OwD zXM-`(pdM{-WDP^P!~78univm8sS4i#7!EZP6ZY$vvjN~7TpQ!l(VsT5?zqA@bY5WW z0f(|gnPa-%W-fuDz%igl6oxM6l=`<23Tz+%m2QCxuv4iU+9|@;&WJb}8}ZV{4NNp! z>>{oYSe5?N<Z8x5r=NjZkCH^ZFd$6y5<ubpfTD@<E<*`})1bfHybm&l@9YF{Q>}&l zh(C*cF@Y(Xpv9WdmI++^gu1xtp&Fz*d$KU9$dAn*F}K=e?VB<8(RDCE;4JWxISHl? zc+Aj14%FO0h%Kqtl2D`WBBI{~EJNUk{xUlFT7QKcNjt)fMqMiOB`<+DVhqMW!hOa! zG@c>@X}uD3lxtG_5of>+mj>r=p%Opb2a`jaV{H36KTMSlX)wkM_?zZQzTrDZkQYka zWBsO#M30e|Fyu&cX%tG?e375N^Bd11t-sDoMH+w2CM5cKWt?*){{1eja?HqT_+uNq z=ZLylET_w4u`#swX|*Hom{CX*b(InG%eRk2bC|!G`9(^k&`VAE49)c!JFr{!y@TEC z{=-Mmuv_?2qzw>PFwjN<(`Qg7-E~L-3jg`WeuLIUE8sd6?TtEd?P6<tsJtaxtfgD) zIPBM$^x|!L_9OpRo#bptY82O2hR&1tH=Lpi)H-aH7;rKa65Ui>8&R(-m=Xzmx!N_< z{X86j;A}xUZ8({ZZC&JRl?$fA5~I#BE_j~Tz=pb@2O`iu<7iul8TPjB0=eDdY-79J zq{fVm8q%l+5fXM8t&i?)WuH9QBKirF6%*5hkhQh-0r98H5Df>UL8>U?2QO#6ZF!7} z0IYQqq(L;1PDJ;JUoV{iIP9>%`uxYviVS>d29dy<_s36xfPJ0@dP3}gEBF%wn0Mk? zmBpfNOmH^uGO|mkoxw9H*)*v|=cH>p!&^>XgRb6i>*K%!``!oM+jW*?nsoX%P{2QC z;32;9eX3!4bo*~SzxDFxpu+8MY5rTs?c1n3b+k=Bj|tjJ=7(3dr8sWiCmiQVBme>w z6k`v<DcaB98wri=7D5RKrVGJ9Jj)j)#)uAnC2fpZ(5uWL){AK-q}Ou@p(XFN*Nuo! z5T()Qj8`=h;ct=Gea>PDM*&f=$>I&+-I-+HyzHWZU=yhOIC(>K>|q}B+uwec9o*Rs zY4R@S3lHzJQ!i540ffiv^BI0uJ$7C0B<%r`Ln5-1Uya}oM4igbACfRZ;)=NqaEvrX zno3aNz)JZ`98RY!>=TIz+N)`%U@#1%_Yz73#e^u6xB}7;kxY)<a|7PRWX-SGtkhp3 zPATFT6O40wyk5K-Kxpqpgt{XFRJ4de|Ka1i5LwJ!gw^(N?+Z<UcJcMl1f&nqaoU~Y zTQ<m!(Q=#<2tyN~H~4Y9=?t=mFhyHvcsJ1wKX`N$_1Zf+49VlYyNB6Fgl*m4+6WEO z<zSJ$cr##+5Ew7i9&0uWY&0<^g&39Il6+;l3@wHG4PmRo{HvWj{l-KrL!gjJrXJcb zd?zI6;0Mt5V5SP=<oBBpiT5^k!I94xzpZTd&O<io8qlV_?32$vjy5hK0%=P2`V1`+ z;e9ntlYn1~J1&pliA;==S!4Bo_~Ze7M(~gJPIi8Yy*t0qYrvR4;GLl_-39tLzxl@q z@v3e8y`y{C#~*(Zn;0s{a&+q(QAe6>I7XRbg9IquUCUsQMiU^`ZE%;i@+|c+YY0SP z5N9@!_eR)qVK)kr5_4_+jV2XLNaQOXkTq$yh#vIh(E-9S^1(mmDLZPP_h5wSTOEqU z6K%*P%Ax3xPLem33F4i+Fo1}92K;5}*m-(IeIz1{1hwLK!Tnr97~G6Hk>Aw1L2NGY zIpHhP*{5hlBC--16-pj6Muun^#xMf<T1+^n5TZ@eO1v)BJTOM*CBm7m>X;pY3uq0N zlvlzhs@fv_GSO$&6a6a)2@jJxn3D!gVTrN34MQ<uv$!S>;syX{G<R^2J|Yi@XZm;> zXX(8?w1-VL$)le7K#eGKNaV&b#P_V+&Zf@kbWAU2DEho>Q;x!>5^IElzZFFIoOx-0 zk5PvxU{{<2m>R7h)Yiy^8uoTBfdy>!Q)olD?H}H?JNaeI9o$8$%I@U~0>E|0hqjSR znMD~T7=h^$IN5$+v7mktoB+bRK?JRxtvyWt?grc%XtWljovOhhEnZX1A<i$&Xx9Mv zR591?!eDM9q|oH9!C0!JS!{1IrniVZCi6qjZG!79>Q%>2wG88=My-c%<ATU<9mcep zq9)qXGW}6u+-c?|PA#CBru5eYyc>~Mg%cSIm;mDr&PRkT@QpX%8go_9aug{*;$WR{ z4$M#I__R9kmo#Bw%M;h8_{g<_D@F+GOFDhyd|{r~&m2PWjcb|nCjWd8&r-TX7kEvI zlsK+q-7-@SuZ#0`n&LW7m43eG?@fMGO8VkDo#o~?)ZfdSd!Gx7bi|r`b6Y&le+2~J z3KTCShyk9rj`<mD(+DPV0%KvcwN2<(L#neZv3Cl=G3YxB*F;r@LRwyjGXDuz*PLJm z&Cen%gRAgKkrRr0o<swzi0^%DzP?Xi#j_vzM^oG&v?5dTC^m;v%Hvp-iEs}GH$tI@ zNGtcxa{#<_W#ow1<xH}2-ENq(<WyqpqyS&Skvcch`Z1@IeRNo~(FL04UW*7YE2?3w zn~R1_NQ=BS7{E<8tzi*4V8gr?1cQ_MCaMhPE!040H2?}zBZH@b#E;!jv5VBv>JBl< zTlwy{g$l~zlBOX?T1SGF5U>C>+UXNJI$$h%M~ak&>p)P``@+LcRV;S>AfCSe^CKW2 zEX9fVC4HI@_yxW`lc7*D*-%44|7uSfp^af)W5DxXg38WH-}>BwQ~yTZ-qA%8(%z@T z-*g>UK2QJoaZvJ242J86`6Q5ke*4F?IWAmhfBXGkd3~K{{(XUN-csaso4haD=XG(I z=Js)YZ{xt(;$CJtuw3}W2mE!$v;B?_)B0;V$2^Tp;|Y>eDIL4iMrb<;_DLBDI**C# zK48IyE<_@abP=Lr#(T*neJR{5Y0fUJy-6uMWieFpEW9t+{$VhOkbrO)v$503)gt@z z)2pnxbrl5C(LMnfkmw)bRC)MNqLS({hdKN%aOgdQnfQ;Vz3h))cd}<N6&HO>B^FE+ z5L5FqyJD}~5KNdqF}1akmr!c7ne{w78&daKjp$A6ty6}fDYa-rEhFM>woBeE4eu#u z$Yg%OqTfR*Ih9yc^5>+^ycE6?O2z!=d`7#J`Wf9W?580Tl;U@XEB56WV77%c3b@Yi z6MbllIgPz}KKc}=<>iN>H^LQ(W9ClK`VzB`lg>2zhE0!Nyt&Ly0knjYB9arXpPlxy zgVQ056}|*UzJp+Y3{i3L=mW-x0vYzPP|`_PUJjS!Gs^z>>@s_Cf>Sy0aAT!%b2lWr zN^=1Z<|0Uzk$l=$5-6p{2;vc`Dn!vpB9BFFlH-j;?Yhn`$Mo|V0JeS4396yS$uYXM zx0ikTIS#RpA0ZTm6+?RvdwPH?m*BuF`tDCJud=V6pTkHF=_m50oB<MG_6;OFEDI?_ zsm}KYNcX8Q-MW)izG0VT2=NYW>JS!K$MzC)#vx2*g~)&R9zTwq!VTuJ1@kHKI}Ut? zn1Wa=!$ehD?7Zx5)wIzz%pjh}i~$rTNVXwBX>%DOvD`rYt=S%V*!RR`fgp1&qp!hV z9bSFzsgv>y+;ID`F@z)$l0&-Kz~txt0|-#cT{ZU*a%0Z>^fK#TLJTU&W{fF`)i1^M z7SsaA#53AYxpRo|ImGQ8#$gTNJT*WGxV@;-HYD&<d<@4W@V834*xgx&?3t!^8B9P0 z2|v%=%xqSHX+~3!HLSxn(s3dpv0>bZF)}W1LpTEiekbHTtL=e{t!V2Uzm;)$M!FU` zvUx1yWX|{Njs2{$dB|QM;5Y>85~g`vI?sCZF8z(<oAI;7Jg`IbMlg}OZBX<oJA`R( z?X$Bp>wS~m)HnC&xAtD_P1V&r5RGF8{OCiFk06w1j2D@$A?5cOs{<lMPJl_3kgw`V zoP&)FHFAe@iEYa4GmeK4(;IC44&99;-#&u*g^|#wqp^LM?cc|;Ve2sFxfWWyja@bx z!*p#4)2aPfnV=Hkb5pqlmiPrBc#tu2u9yQ$=Pal|zQGS_2XhtPFL>VAW$u!`p+Ckl z5VXBSWUM(IyQm=)srVc$V(z>cLhs-|T4k(O*m=9LjV6_R4m5qU-)P?sK@2uwR2ncW zE3|8FF6g{@hM6RC2AGk0wht~;H(`jj?)U)uj5&xtv;2|fV$6vZG(J=7NWDu$;&U8? z-v_2>%W{vB1O@GJedP?HYs{C<nZ=smf&suiz|VAeK?>(|ujr8Yf_sl^fiC^%U9o2R zHhtqdBQ0hbzE5XyuQtJJkK5O#^YC49Cey{dF7Zu~XHhSjW_sJ0e`|A6z4@E6B)`-a zU&wOtm8tzC(j=|Nbz;){B7a|G;v=qQQ_4|S3%Xrby2^VPcC9j^joe3=YUm!8s0e!u zCxQRm024w&AhT97&5&d24}ZOjn$Uqop9PS474LcJ`=WMS{;b2z7MbA5PNEqmAf`m6 zjEquEob2~`&QOGN6e%R+M1(LkVOp_9E|4{zyKQ@o$QUi0|5SC`LE1mNNb@@Ki`v@? zJ`|SGFdJyAIIT{AA@UWlETp{BiEa-EmAj~a#@GvM2dzrg=nG1|HdwqhSpe->Xe!x0 zOvD}wV+(0T3(2;spYZo!MGk4T10(ND%PSC*&u!AT4lDQm_<s(8TVQwCx-nvlh&(Mq zKDuFIc|f!d`ZH8~Agfv@O=dj6u0Ser_`CfXN#6O#uYXGVcV_Zm^x-XVrxxVI)-^yF zq-o6h+8%MV31?<3q=*?lO>?AmmzWDZdpV&$8fX=fgfRh}L5&|@;EOPVKw|M%lVOZP z3GE(I%;zUe5_P2Pb{Irck45pckK}W`8=F&hNb}7xl;p-GgnR>y<ZgC=gnb8%B*Q!i zivf$MXRp5`C`32=n!OC3KJP%3GV#uo+-m;8;t4_2o!7Hh7v=2V-#~o2Aq5SSAXM6O ze2T>W65?gfqMPkNJZxmgM4J2R4Iw1UV>D!nI?!TZmT(Ti{PJ{=T|$ZL(;y+K849Ez zumPg{6mwgcchNoxVFe{62%Is_b#E@l)C<Qu7W>{{JNw`sjKl%++9vavOawV8<?fB} z2cT^yS46x!zNBrm?+sFXB>HoS0sdVKR@t9lTtQTwVjhA<fDO7@2wlR@fM4k5&;*_1 zE#K*_&;*RLufDm={v87TxJz7rh_ZTxId<93PJ3tsPhE{*C}0R*p1}Z3&`9t;YoL*a z!0b<88X$bOIylNA=@dVXdlk|(fkz7hew{r(on(J_-iI-3BdvwV0#!EJ70i!zVXD%2 zlOa5Y={xT&LsI`o>hv6@=!)`S;UESp^w%`oehm)I+L)=iX&FQp+UW)GEN>q0+sBuM z;2rpARJS2<S1_G~4{y-!EyC<pAP$F=F@-3-f|wk3R#_Y3t%e4C08=zW8&%ml$m%;s z*&2pw1QT-!qq~6Mo6@#3Op<!|y38RQ%dI`|8-}8`2_DoSc7Z+l))0F2V0@JBtJx|` zpfQdX<lRTActZP7&fo-$Q4n=g(!I6I25Ok^ZJy#Vzrn7^CCtDiEE!iu7Yqylk5)*l zfgFn=xQaGm0wXbih(~M&lGU?5J4Rov>66Mno2_9wQ@fLmVE`u81NwcBZy8VJQHFOA zc)ShqzZVR}kn2HtCmWV`!CoZ);3O%?{{Y719>g#<{#8uoO1o(J(WHTEa~A3WV|awm z#{^<{ihoWS^Pn+=^N>0XNmGHyp0I!qU|#x|D0Rtu41>C4{I<dU7H1h^wh5tLLP)p? z%$qPX$}nOhJDi_~wo3*YuKhLPgipZl3w$Q}*(S|Vy8*Mwm>$45^}yX8Wf;CyrbL3x zKm$G6(?iQS<eM=>`xJZ`0<#PKmgpz78g3}&26$!a+^)l%Vz%vgl>uI0S~3da4h@S8 z5*;{{k&?-x?K6TN%<5cM!5PYs!Euiksznv)Ul^<f4C5MMNY70uY44=AMV_>Qa|(eo z-vEC%u6WKhjB5jvmO9g21v9P+eitnUO$$cmfN~nU?Cy;<NQ;TD0du}$EgaCkbN1I@ zD$35r)vUYV8~S73xRWh6h)PHP3^BB+;srqr>TKj$zhulH2!<J-QTGMsigO7p^xK+O zFe3zSH9=dWiP6+mfs$g9oUA6t+lMR2cUF<x34YSG^QNVx8Nzw=FXvq_5=9{eGf~{9 z-`jQcTBxKWa*s9c=2`LX=l%Z3{6Kuo&fFg^_IhLL)$B4%FM)%>AHr9ebnfNmuI{HN zXZYHonLnswg_C@*Zt7~ev??_$@0qvTe3SO)UlG}_=q}`iAmmDi8vt5T1j4Tj!3yn! z(L+LdN#9oRh}3aV|17y(chGb<*ft>-H#d)vN}#SR53_s3$K7HhC>^{Un4!L9f>aG7 zR~7^xO%w@SFexfjI&z3%%f>q;jwBA0(n;?wP7xh!golKFTg*F5@~9M%aH2V8UWW76 z`3b3*kxQCPM%0pbNV3RW1}S_&kn}_(114(Ac4*|avlcm2c|u=!m!72IWB2e$s;nu~ z&GlDtQ4nFie}DWW2;819;+p;s`141}bDc@O$;4_5dHpEL*bS@ZtuO!+BMR;U|By!T zjo(H-_6hi5*TrfT%(HKK3~qRpe$yi4m+?0LBZhb>jz%7S`2XRE>U^u*;+b_Tj@#G8 zv+w&2bd`wbNHCCc@tzDLqqK+!kwQD+TgNnSLK1Hj8cin3Fn8LXpDM~PG0|bB<PNm% zw5vZ=x6AIINaSZM{7UkbFgOM~5TyTxCgIf?D=3Hd=Snh9&Sq!^FcDyWAzS<fSPa*g zFQGwr`kHW&5T`qY&cnCZ?#2EeA|HljfV$u4Ovk4eX-90Na4XHHFoRISIA^8rL2Q2o zgECxQu)o7q>TjjVw57}L*e54r7HFiKD~Klum>1_nF8cFD_7b92lPc(<6r~Aq^EuAg zXP6pI5X2~rc2QtfjJfU_l*PIzBN4XB5QhBDAy_YAjHmMp2>c<D@raOj52x&V#KcEa z;l^Cr=3~JWlGe-KoXr6-b0RGF>BVKlCI`w$)}dZFhA?!`Fkc!kPS6fue|u*SK@3D2 z^R^QE3dFOTk^W$bi4aWN=@{qq3(f(=yCNm_3xR+?xmsmke$~%jU8*sL2&bMMqFJ5D zbRgYaR`<e8;{pQa>(|8gN8RBDV2aOQzSIm0Niq^>rswQA=1ZkNoMvyjOXB^vsSo=O z5jew5NL_)9d^C2C0GP;=iy6$|MfUvV1q>z9bBK3+^Lh~cU%$RW%HPNi&ymdHWDb8o z-#dc?Lwx35!<aqCY^!#G13l7p+)Khqe+R})T3koqD+u~7eKi2)4(1k4xjOZW&2MO% z67H<IPa7Nb^)M?vyMS;*8V<*EMg8BLPhsFNaUtE5wXF}M^QJS)zIuh-J>x}ltWFOt z3xFBwd;kHc#(Rup{DgY_8BI_JKb0-<ma~pDUAugx%3aLE#t^{hCeU($Kb)YX{;;ur zF2ODLkC-!VhDfSqVw%)RCwK?QDY$<I6WoLFU%{yK*4x?H1e2^0L^*hGW?jb4X%L)k zh<&vd3kcvgnjsii`VyWMVnt055fax(+Z%^46cFU=o$QpnCPU3l!EdxxmxQmpm_uA6 z1)tORWeD{y%)&95th=-k*ckr(47}>_ysIWd0trGMD=0dH$Tbzrcv#yt>xl?OR@3%_ z^K%%qA=-rt_Ki4Zv)k8<y%X@Z10x~>tvTBgyq<s`U8L=2*n`v<v*YLo=?Gv;Te`za zw7CO5POK|y2zz8_C)A+<gV}(tFCmoNQt*f%6mcl?g*)D}zZFifOZvqHs7hI7=8zff zg4d-UFlaDKGZ@whj6n|u_6!Di!Miqs*_N7gEF%^TEIrUhEim(%8MO@>r^*~y1?Cgh zw1L`C7@`@3{S<hFPb&F9&u8mCgd>8NT_&6+nu-#ks_P9HPiP&bv?CcV1R{Mn{u6NX zCBl<S${E5~mSCPn;6Qf<PLG(gfIWWam_?zPqr5qc(-KqiIgHAfao=A+GXcX1>d=J( z3~*Ne4racX=QV)>5CPX<F1U|hIY7o>P-?)Og(P1q9ht5h_9$Pvr0^SbonLtKox{G5 zub3xgUA~)0ZG^|S83u92Bj`FZFQPvA%(8r*(iC}`-e>WV$s$jGBb^`RNmI^|AZ6y| zt&>Y0n5xLztDEb1|E)jKN`-Nzqkk22D-wrw2pH@9Kg6HsyweTZw#FjoeiVk0^_&rr z?3DgHJ=x6$PtaOn<}XYF-ma}&r+@St`P&;wBa$yh6e~S$e_hvGLd(U?M?dk9p9mib zO`29R4NO-7L-SK*M*}MnCJe@bMQDMfAf9P!N}WQ5&n#^SvKG#9kB`_WsD3BgtBteA z2Tfv(Z!_r|L4an_z+fh9mgQ1o9h_sqwNXBc#g@SaKs9@EAr12<-nCi8m9`B4=s8h4 z&e*}WJM2Qlz-<pU*{U2d-I76sJ+ob6c~v<+^5Ana7jPm^D4KZYQ~t(#o(CY~32o$? z=m73XCY~rs<tM)L-Xqx!a}fokB254O_=O+<Fa@=cw?CCS={VWKbYg>vU$vl&aBQB$ zLKHn}KY=@I7U|S^<iRtiCUc5|0Tje>x}m?*WB-1;`@VgDlk#urDq(iOBo+e~4q)g) zVIMfb0GY&4<iJvT3XEkcl5IPS7BuaG9ql_rrx;DnvNwe5l)y^;0b%MK!rH8Tdc>*E zg$GyIgpQt`G3PjjlnO#cF$);}bPgf1!X$!B&~%^$fN1OtPh(FS{k$ZSH3jlJWA4Z1 zThLd-DRn><JVydqLZVo4hhi8B4TD%y!`xwdHbgtnfl)P@2^fM&h>nVGU^O0%(S$M& zvCu*jWh+G5-RXH&r%mFb%Yg9Fc2#13z@n}_b>U;6T|3FdTv8(N;3rI-$lr#BNfh(U z5^b(F+*1hL9`o7xMK62#`hw7>N^Bvzkq*iVPZ5MnAU1U<@1dRTBk3Ho`KKDWGK51! z^PwDl1TKJQ|8*z3KvT2>5xxyUyaAEG(4o#S2f(pUd3~h4Lm0df-sDpVH)7%eb~FvZ z{PiVpp1uxkug;m;wl827go~2<IRwcN!tMmPOtQ=D*-1Cn1fBl6m?@pY7>pqxWf@Mc zG&ebkG=}Hgb@MRdrZ?1L+aI=zI(Ml@7fEy%HGUr=QX;&BWLFzv&8?mtqm99oX?v%K z$(BT@8vwFKfj9Q`>tmQm`cz!)FJ6aKdk+R?vnkHP$bu6+2(K%APKG%8D|~2T3e{#0 z0>gn0SzFFvI7YM|x-a_^=10d6>_%!@Vvjy%{p;i4aS5ZNRziGR!^A#kXYWPzJbQUQ zqGZxg$4df-T*7QB;nn?+z+0hB>Y*9he$D)a=FYPYp{XtZWf!d&Ol+6>iElc@m%_xx zu_zvai>z&Pd=*D9V3%su7z;+`+T0*O3CwJdK0SlT?;|;v=&C@lu3*A1p>Q`~TpUva z@aB}w5YKdshLJGL>KLi|X&(X}Msx$slVfd4{@syG1twGy$^=EpE+Dn(f5-HS{^+t} z?<E?uE8b5b>KC-*7<f$2254*0D<SgNq-sE)p2385A)?X6;dl&Vgb-m2RenbLHiWkl zczxsayK*cq5JITg9AL`V0pDdR&czLwlZkjrc?^8Uv;zxqrPBNk->gPis}BtU&7rfg z1hl~qE?{0RV3J0R6`2JEQOf}^xkSrd9ivf#$u)W#jF{1|91mj#_Jlo5w9)`gvA{sP z1TIbK&<pA!12<$GEYy&|=$&ytgX!svVRqY^XTz{Cb-CHx70jx27#c^Lst=IJ_DUE` z5hcxet;1OCx`8kA&4NB&!W68)MFK&?5cIPh;IvJ&%MEaGt*-`x1CSwGf@6K6M_pcC z#oTcT48~KK7Z{Ba%)|wZM4kSYd6EvNYhgfuDX<u4+t~sE!x&AnTAvMs6<xGk8<gc- zeT-S9rh^lFSB#El<TtpKnD@lTBvO*Wpbt2m>*6|JxB1~nl$I+D-O3-H#Pj?np8Gvt z(`ShYPKko3H<=&#mo%Od&Ej{wk2mR02oLl7+ssBXhe~+m>*Bkj9?r|DgtyButyOid zk1FTC#dYxwkMqMf-+fxVefzga$2ZZY)HePm_)<B|H+y{;Q1GYE*l=|!v2p2wphJ%1 zIU1?{5N#+-hs-b8P*LIIFMl}glVB#i<#F6|mC_V7N@?Rx1OXm@%>l-OxUBGV_H|%4 z4OG8MSR}^Hj-?mwxeoVTf=ivjIE+Dj!@!lXJB$!xEI|u)t2FvUX|<UhvfJd}Kf04W z0Pzoz935ber1YUCflfs|!5PM;$jHHU5GfLX0Kzx|hIUQ1@CjiedJG@A@!cL$xH~vv z9&DqcM6xm>PW13%mF+QTXO9W1m7%UCt>M*-lP<I1zmQEM<_U&|_ad&^7c1c3h+1Vz zZhRa}hA%w$jgI0X)j4`Cz2Y+N^0X2Vkzu@j|L12zz`-F%g)^N13PcD=wG<mHR{HO( zQ2jwgAqgdIo?e#G-by>Vnge~CMq4~L!@SD^@Ax$Oz34uF|9cz)*0Ex1fiJ%aa!x41 zOep%Wm~i<mCYyY)2s_hh!ef*kC@3aEY_uVEiIvEyPZhZ`ml%=4h$u$IG2C4&PV~!^ z^aF^<C3BGdBtzl**m)LH2~8=(w~C!>Cpa=sS>(D9Hfw|lu}bFso9e;05MqcESllR2 z(*qnK@mvfdUQLIZ%GhfHGo=;L;z~qDQGik^a}QHsq%aBH48ly_W`%9~AP6IbF2vqP zToi&15mKpY7S69Mw$!<TO?ydgh<+3a+rUGhNLpd*;siZNIRXxH8}kC4Wfur^=IqKl zf`GYV8`M|Fy<n7-!devtA^M%D8G`<X330aMdx-5i+Mx;>JG%rcdL-7EsNl>uLdbHC zq*&+f@M)7+lc6A_tD$fW=c!%2j8p|%?h27?3}dRJxxN*veuq9mUQT(2-t>fH0=5u6 zwhv$~B!tFz5*u>Q`5ibi9MQNKtp}TYi6_>WF4Fl6Y_m2R0~~FczhM&H{7#s-BeoHp z+;!UhMzo7}qr(!u6`H=#EZ(6_LbBhRbg?Z*O9ZY7(GXV2n4ujT@qPf|s)l=p?Z*Yo zl7y;J-*j@G<Cr@pN{V}TESNVUzCXSo8_gj&#&QjjGDb5tozbUC>EG}iB3c{@=Tsx- zP&pkU30RJl9A-cmVmdZn_F!_;UL{iqSi_3i|0_(QRsdlDqc^+2S$2dUP@^A=nwqMT zzJ2teQGIlXA5ktcbC_VA{3&3-ygmQ`KmbWZK~&dCk9;&SmXMr-(?hKWAmm4kgNrMO zR$wf1G^c(;7>XfdMo0DO7>3{y*KKx_u2sQX@MS_YupW*m@L!Y*?lD$|Xq*;kRn7^M zdhHVlQv)i(IN>h=4$RSN49Kg3^+6eDQTGBF!pwyIHe*KIcdZ?wow%IAn4q1kV=5$J zzo5Qj2-XoMa&yv+>A496bC>a6M!RDat2X`AM)>H)wrP_=qA^jfre-4uj6VG`1nxSN zLzIB0j2ZCRb^tg)$G^G@_Jp)!#>Dw(0B#6*a0oiX4d;xOq^4s4p{*}YS@R0;Re{B# z3&XL30Y($B2`qHz_K=vHfG3_y^0ynRb=De~3Zo|JYt%>cF)iUs1B2qcGKP%0gs^LY zcWpE&Z8mkR(Z4h1tZvU8x-t7>?y2&uP6uoZddyX5dzepT4AoSO(Y!2SSjIB2FeqKx zcLt5sMw8NR;=u&IDtQk9i1kEMan<d?z_J$&)*Dkad28UTy*&nj*=q>SE_j($Fr{N$ z`K{5$2552yFq8}z=r<zo!SF6%Q0p)gbp*mP6df4vGnnTIf`m2moSI{!f61sBjVKrj z@Q!R_j<Ek-TLbt4F|-w~Bi_&>>4HmphlA&7ees5Tiud_%d?ptZuhaV?&28o(y=IK$ z`PxR)c@~UCac|lpk6RUube5ObETzfwE1vo7FLk7~mHGiAi&5yN&^|)*I&+9{2<#lM zD<a~J=zrKmtT9+mXP9#`hr45T-~#igze3YKu@#zG3fls{3dsHE{&CKmybuuSH$Dky zQzq}2Pj4W><&Qkrw34V0OtNbh^cqsSCKI@my|$Z9z;ge3m$wjYO=!RwT<}Ovh;K>` z>LA)t*E2YVJtpKiks5Y4iK^7d_LyS`On{castG8?E;i3biX^`9F13jwxlYKVwm|id z5i<f2OwIKMi^v|*w!=Llgb<ItOua8o&$Ba}`G%i9=KcwhoggIwPL>0FTn$0WL=w3G zC1OF)TXs4UFmK=IU6H3sZ*JbFue?uR=Gnae`A>y_@Kze#gqiS^n23mC;wpntzcHyQ z(-nPH{N@-J^|Q~4=kehEpKA!jgyck%Lotn4Uw;>3G8bt?GrpP7+*uiQ0uz#p4$PjC zEeUYGEkSgYAQFvvzJjSx+NGnP%zZ>oaUz7kZ~;jBMUWQaBbW+oM;*q9tC>t;QVd<q z1BD@qA)H&hcTQci=v6d3VgU@v6U5*WhgAt@$qYk2s-=i&6~7M!7KTYBF}Rcn5X-N# z(7We}1dfJ4OXj>KgwhJ4e~s<DyF;uX0@bIw-#`g_`6}hCU?{Yoj@c#PXuXB!4NOD( z%EVo!p2irjV#mC$vv9yvETH11G8PcmWr(0KONCjJA<zs4q?azFoDh=)td|g1>tKRt z1H>s6N6MN^VP+6nMvn1b-!h}d%rV)RV6I`bpeiOCb)#}&A{vvm5?WxQ*4lb7w5TUA zK&VuK@C-%|=n)zw2q6jiC4wdi5K5;EgiXM;<oKk&ZTkX(O0CqA^@imG4FK~n>kXct zF<vEf+@m2uNvBuBw*nV;Jy%Mv@7n?iGCB_kJs2X0AHfjoiv8!hL6z1>@K-oX+oyee zVFnQ0RrV{A8Pn`;1ydNfLO+|f3f$&M%ZCtAWu(zcM}^4>A0Mxw?x3n&Dd=sU1BvKk zWA?lIUd7#^Y4?coW-?&J44t9{kwFp;4VfA2X)p#uE2icF0vR)&5p}c9!efmszM)#h zTg~mLF=giw!-O9xqb@<H0U_2#o!>RZaTj?_eaphYaRc7X!Q~V#6b21~WQdl{Hb9C4 zAT)&3ZH)Qan!aq{99;p&@mxX^0MkG}mB`CTM`5bW_e+RQ_ZXR=k?6rV1w*X_9frx! zzG|)9Il9ic7S3~Uc!fDe852jR1DVDU5aL8Fo-UBclMsSA`LU=`b37YxrQO0o9~^Z~ z7jHG6j1BRqpAoH$61N7oDmcYEz73tM_F#<z`51g1l2;wVyh1<AcpDkaH9-yP98+jD zh%#@k8|5mDBK<X!*+ql4fo8~%%@HBW-l1QW`f9SJhBg>i#zw|>1~XWIKboJh(FHJr z5oDmOVS1{Z4Vu&h230f+&TljF8Ooff%47_K)`4#&v@|536~L82u+TJ<No>j32J>hW z4*X~mY7CPa8lws(qZru*17;}Y7|Xz^-^U~kT%TgDRL1nG1|wQ!JkOYi?f*5x9qA}X zO0iqF!h{jNE^3wncktC1p=~T7JgMMkqrgL7RdE%zDCR1|@zQ{F$}BiWzH^9M>G`|f z-Xwqb+cagScR~242k}|Zg86;HC=~hKzW3TAzUMdEcPpQG`K~`dCe6FP`<c(It+StV zsG;x0S;vg?pR~P#QZSCO#ymuSm%+6qW6emH;c7rA?7HgbTSua96CBdt{H0mF_2AY= zKl8G>Mv|ozv4Ui70~NCB;T@u1NX)x2krU8948j4S3db-F%E;#DsCSVJmYI|td~>8f zG8>&sHnKa{2@i=Pk}S=Y<&l{+V}cMM(gdLm07}~4aYNhqM|q(=Fungd4SmI9(ANo_ z2OKWmZc22Y5Q`r?ILuyt)6TBmyv+I+C)w5Mn{3#<$`)uaT4*xNS6kE+``Zau$)|&d zeEb#Z=@fI0Iyi*62?i}M&oYCPv;zuc^SU_9g6rauSr*qtlJ~zq0|Ee4c-sHs4J$-Q zCR;ec$xzf;5Z&-lm7qQ{Yl*CoiujRJvS0h1e^XBdGaCbxS03ieB5E>AGu3~eBN`p; zjy40|K=T3!z$PXpVHB|Oz1IQK0A2JDkHRF7bg`ST)E-jD6_F=GkPx6};dG`%Dyw8& zEdZ-0V-ezBf|+03G|AI+F0w9Mq~kgqoh_EdSV_F|0v|&-u+s8tEt4rDwUzj#Y>5f$ zF0pEeRwangF#MW2rE#wanE>Y|K5)9D&VEJt5FTq+e(d~%X`wD_q=q`by5n?7LYfT2 ziH?wsI;BV0SY|y}1mTz*YE8qVkcwJQPAa9u+jhE%l|;8?27{puKaQ?z2`$P<w)DV= zc~<Fh3Po#rM+JrOt&59HO59R*343&%RSUl|C9IlO3Am6j(kwtkJFuBXbE7sT!l61x zIyR`Q@$uczEMm?B3qysfi7^~(m~IJs89D>+0~;tjiw{9lt)ZsFzSkBTz(X{vm0E`e z3hfXuFxrh3_M0@vf=S|;QhUl+aV{a6>@#s?Mf-J_4PQ7JNRv`mHPI4(X5=P!!PJ^R z8VDH?2~*8ytfNs1jbP|{lVbPVSF97k%-APnD(-=2*LX<2GF1|`R16YQco7gHm}ij+ z*fIyHU0bl8s;!Ty2jW?6m0Gza;ni1aBB<w5hRw<XKPA(29qo|Wmf;14Aq7_3q=^ae z=U*JGnWBn#D&y<k4h#BJza>+M5i7KVZjKiFNq{SA4Wai*?-&td#2=~w5eWi=-=t*@ z)e2`$-2)Ed92yn(Uy6E>hy9}81_@|_b1XPVy%*HQJy&Y<mEm=LZm3+%an{lmq&HAX zFqtp_70Oy;1!2$^2_w%rw1mvA`y|XDpyAP|Fa2j4E6ZA~8DWA8xMz4<HIBen#@7(6 z?$*5^5*%`Uv<?7+MmskBR^~J`J;E2pUuKC;p-r@dHqU275kunJN77H#f(a5<&J*Sx zW}S{xaYJAN--Wm?W5e7LQF!c2w44isCrXVc)H^gyFc%VubMkf=C=hX;lXg<r0@@^8 zpgeK29NI##L&ilMrd-X)Vh<7!YYD@*A}{+x6FoH@4*NMA&X_1o2A%Nv8au0%zq}I; zVcz8!;k(!`%)w6^7L4nKu#9np?+My5&8X;sypP2t@DQAIZi_yMd6{(L6739}qW*zl z<R69d*2A1co481Sd`!Rjz10zG!AsNd8-LTy^|u96;Ja^M3x}99c=zpV(|h<$`p$Bq zpzGh1;^wb;M4CL^&6{8TD(Y?Lf#O1;Xn#!OJodfgssWBQp?7NFtD8P9&<4-ZrY-41 z=P)B)dKwfd@{Fpc{LDAaHo%EFFQ5$`+s5b@%QdOE9T)ykxc5H#i3ih@YF{`W#@J>X zXSX{$I8z_OL2GNt;AE4RT_OzJVMp3Aj$Iw%o1b0wk&Gb8ph0p)ttN<!YHoxb-znOH z)3c*&@L-$R;@Ip)<(Q~rLgSZv5l^lw77;s}e~dBeL8AlF5&}e{0YXAq1_tSzeVZ&S z4~+Ems}Hi?#aT8VbdgwL7khb@9Us5R_F;ZDYWvUu40;iR|3I4mNJ?@bxmftZ#YxDe zQb;Hq{X~Yx3BcaABLcwjfVw*w`OaY%DdO5ce`P;hfB*jCZ3qZYyD#;leW->4M@r1_ z+AxhW!A4q<t5;QMPytO{q9gO~Vjibc?bmdq0hI=kPk0v{YNtBnQklN_+dpV+G}u3R zy8%?eGz7qbO}ftkm;;iheBobyNfVoTv3LcoVjoC=GFDQoamJA_jw~cR)n25<PBTcg zn3_3BoJ-I-s$8s=EZ`C!j($Iv2oJL<#-vM_#AgybxFC}*{(G%v#5(Z}l#j#@%Q5+p zFBygT5yB7`$`q~61=OKV&8SaA*q|Optcm~?=0#nM-V}2c3%+xS<evDZv@|5!5_8s; zRl)MbCevG{xJ+fD9G@p2HPTbACRj>_VHu!-5+PT?q|>=COqD21ZLy3Owd0!vkF-ee z1co8Tfb%Q`x=%$A{gkVD$C|v@A&ZJ|ZU51>DkeS>`NBZrNz)1Q2+gnr2ZV4iG4@6@ zTH=M1_NuXv@{-`x7sfi5@H_BO(@};<(TqxBMxr@<&6I>f&_x}nXK0RTi?e8gy>l&T zBp~TmH%Zf)F=;*+_n48nQKDLag{HT(B?M8lr$h(4#w@J|rw7;rVJ5RdCT_%K&4Ymy zzaXq=qk<*zcMV}Ho+O5Xw(*{qQ6Kw?H`IftwAZk?YT6_KUCpAO)xMEl2CSmFjkrPn zhIk!IIEo9H7eyahy!}AEiVebK!etbBOpc1-BnHI|;9)ycjcpX~IAe_Pjrq`i1!Xep z68ma!LT{E!u&Flb?0f5<GKfvk!~@p-72`&YfcwCdVb+DCS_j9UxDiohz&k6aDb9-a znZ~-xINSHu9g4sLAY_3b3~C7iccmGeggfOffmb#9*SUf0$j2ye6}58?RGuxVlYW`D zU?rm%MUcPD12Fe@6`Dr!M;IZDqMuk4))MLVgK2Rhk2VVvwLCJn%ttb9;+A23nGL8L zT944eptWG_Fme@@1XL+H)RH<lcZmO?p|E3Z3;D`WC~%NLhcgO4iWO^-^FlesDcTw| z6Ehgi=nu>`)mVw&;<Wt|!D^TQoF6PBHZT+q>{p%#s&FrDB&}k(O9GLIt7Wu|RoWjo z%vjYIf^MN+j!BpeaL;zyzYFF7o%Dfn;HKtMo|tpc2A`9LHakZq4W2mXd}DJ#65Gpf zXp+H;n9GDkeB*bdwT}6m=eHh?&)bLPJGVN=dWgGV85eOUXw#*CxshSaA4K|82BlG! zIOrkVqOZA5>o}i)?>DEZ{Kn_jCkpf7t%GOjfBKHZMa})Sq~iY8M?dS*`b9geD>+4< zu#Rv+9l#G^L?0Sbdy8m>ZI}ufig6eJFf_+AOx9wK7e6??wtco!VkcV3wS5!talBg& zXX@PqKU1b}@)kN*#Dhrwll~C=h|E~1YE)e3uvWXt1}r$u?O=O3sNnoe=Tjm3PN_kd z8L&Xi^mGDoWhk0N+*yu2QM>inV2Pc1I^DzUkR4jx10wdAU=Z05rC;Kh4UfSTjiC+! z5Zl3mNjW7aA{$0JUOCqwC2|llkjQHv$G*ywN9?pqWN#*dS1(>L7)#kzhe#=%gKUfU z7#!wVFd2}q3#H(V{{dSD4-FG_lt_j5dvpNLL_EInU}$q~b^M;gj>)g{C-J^`W!m@0 zF9QKV8K-!_HB%cLI}C+80Aq^Rgea;K(onpJ9ovI&aB#7(h}%4OaK!u--Dt;)Z{#X| zaX5A)3jQy9Z^CBRZKP=;_dS!zouVYmmhD>HPfz#%{}nUOJmaaZa@$%caVImAxo`8n zUjX-Bl9DaSa@CZJC-dBM00aVohyV~+&$J4O_kWR}uFEnxmu~K^`*L4(w+Q%7A?fe( z&2p+!KGPJ%SjGh}wLh-dXzZ7gE!!GQ;V=Q|G|;GAJ8Gv<CGJ#Ug=r*c{oshH4Z0O# z8g=R%@#U+n39zZII>o(Lxh(6vT3u3=q&~^P4!AA0seEZ%tyhw)c?Hggbsf!c3@Wp0 zC+U>sLMT@nacm>%66!L5HR574(!gdk(>(QbsaZm^38djRVe?@fim_%r=ZDl{{J<jy z`h#C%WXU{Y5NNEs{yavr#sKfuMH>C)U;6m(gxfJPeN%Rgbd{IOWDtC$WgQwrkiw8o zi>Gp7;AfPPrCa$bGW59@iOCH*?&MKgg2Vb38EXhp|1Yqn)crCEvk{aK8E6{t$C2wS z;Sg_@jL_`@F8d+EBy|U7nIq^KdrUwY-WcMtrL5g|Ss64eU^FJaf(svEsJaDT902mP zLA*(qa19^~ODhe(;_cE|X>@;}x*6QULbGXIQE$L9($<3F23{jMx~o<|qxvp=cA%Uw z%Nk|!IqDAA^xI)E9Suq%z%z|X2Rqc2>Uc%*kl!4gJY^F30`9jaB46b02%nlAn+cf~ zm9}G+H4SH#37JE^vsSjn$+HR?Qx$&T=SaGuseu+?Wr*^$bBeKSyQhw;TbZ>d%t5_N zWUaiFW%fFmhLtF~r;ghBm4=MYn+_cUkB3*6=Fwd{3G8~rt?{cNjJ{Y-(m{fE@D^vT zIi>|rZ*sy+60k&oF5{C|VImVsC3%q^m!6@5JskSfndpQ#<dl3tx6L^4c7kIJ`=oPW z+mM;VEQ^9>`!{qp79he-gGE(i-*wYhb~Md4&e#axOZ`I%cC5o6cxJkn@F;s?pydiZ zlV4~*=~o$A;;Y;%oP;SZ_x<IhOOeAnbueWW9MNa|Ek9!R1BGTKUpD63BaJ0v*Tg>s z=A5+h6?yd%b<b=Bw6Itb{8g4Bu*e%M$U3?YUiB_%i5q`;Qua{E7H@cEU9LXL#|T4T zV2Kmzqziv}Fv<e&!g%TDoB8t!20NH>jWE)k#2H~?07|@tDzu0x#xe1w&0F{In|=CT zoetro1&VtemE=1P-xHq7qtXPpXf(j^{QkT@p(lDvo}~@hJG*4Ta0#g&kIt+!^~Mq# z@t0ik!*`q<Fo`}I2ZmafCS^eWNNs1D@AA6jQ2aJ5by?5V`#JpSxmC?TUP8-8MJi>> zFH5o@mX9{EA#I<X|Hp@J@;hOjo*O5vAQ6@oAemmKv0CBOr*rl*IJLG%r(*97yUtmY zhqj|c5C~EWc;rJ|i>O)GXpjbdrk5GwPUA>uSITTk15jozq2PD6S+o3`&!|4G+8=N1 zuq5k{Q$wh1pzjo8Wr<CJHk?_%X+>drVmAF$%+h08rrs4OVY&uQhDl3)1BnNh{<D{O zygGb2KK%ZS9I!G%qiV?$a`t49Rc6u<aaGDT`jPOEjWR6#nM!oXX-0y8M<oZXIEH(Q zsRD<4fc{+1sNIyb(k|&52~1vw$KU8_npQ^d($bSlDWdGuWtp-5m~~sGi4G1cLk$f_ zqZVjHVw{0jBg*pU$fe5;tPs7dQ|v%kNu*dx1pn3>N>(_h>&0zl>i|QRIWeH%vNz*c zo+l&EpshwO=z~|gD7b;m=oiRS(xEZ=PCA-w9T1uvy(N%ax-=+=L8Y&GHjF+;uhYK~ zn-x5XR1KG$CA;DfjTg!H{9t_R#!9=+3`jCTQn<MtSND(XN-$}bL14X^#$Wrjr)TFx zV@W<5=2B0Mw9L$EbXB6EA;uZ>YkVg!gr$=qU5O*18c0QO29w}}Bj7IYSpdKLF*KaJ z_^RYdsI=QgfI%bq4CW|dD8P@xs$2{WGms&1G&q%AW<Ee@9zrnws-rQ?vmF|P<h}e+ zFKmF-1C3RmlAvJ-@fd+h($vMruLd;lF4;BRboL0B&!#uesJ^vKMhA_fzwt4u7|h1U zJoL1s17d{o_Hy*uk2}pXi>^Vajw`z4g^J2O4jPVX7^#6*eXe}j2@D=O6ERGQs4*^@ ztf!U~^Nf4wDo)~%9;5T}?+QBI<Xdeg@uM^KBvRsw#=OTs)iO*OfL>D<VR#lGcnNRP z36RIcL%&=yCX?sTgTTvcgrqF8)GAgEJaQ($Sp#=EC>IgfndV_9$Qd4GGzJmt*m`i0 zAIn(EDo=T?G3!1EjaT2#Q~t062umkW+=Nrp^ehlUKJ-(+on0*b0Kf8)9y>wIST5KB zVqi+Ll~!absr0Jd!0HC^(nqqXJpo>#r@W_LO1_B;>XNB1>N0-lLFx>UU$ZADANfOo zE;S0F;fb_>5O|IM<X1Xi6r{>p(z6`cDYrw6heylOsSs8hE6cc`*(JZ0(JVzH&Fp=$ z&I-SkA?1kWe-1pTFX>PlkM!^i&qVLLI)X3!(som)3=p=SzRC6S$FKhN;Yvuo&ip2Z zK|R<<u&ET2YvP+QbzxkxOS&hQdC>FEUZk3M-w$N?z%sCpbaaof@5AtyY52aFZ~Irr zSRF?2DF@cE>Txa0ykLKpTM<q@S(UnBo;uh;{S}tJIg{-rk0*IZ%)#RXCo|?}z|6jN zh@bp$sDP5eh!&$jhiqQ+w1EBn9cC%qtj0%_=o~!y>J_IzSpl=Tk5e?P>{d9lxu&#@ zPO%aX46u>+III0VcBP-N;fImrsy@krJ(X0jHV!B&+Ul{f8YJ0yuA=x4K1x4fjt;2g zRz6nLcz6G6){ZVg$1dlxeg4Z|aHct5y*)YzV|V#_q)axB4PK@yL7b5o3Wdp7C)(Aq zuvm>)R!UDTT2>3vi)W~>zzUJq#53r-u0rx%As_ty3JzGfsm7x#j4^Sl$pXvTJl)2% zg;w5%p;OlMN-%CK8(jRTgC!b@o0S)hjPPDos)h?tV)eHRSUiA_OWzsi@SZ$v?4vuv zp;V^--qlf$S}v(|zX5L@8hU&DqWwKgKZ6G}ie)4mI!5BsU}LV~RY?h!rA2WXQ{HtV zI~vPt$}GzdT*EJps+{GAm3!UR1y&o`v}t7s8b>HA4cbib$ON0Uh?SIz9_t2WjcFI$ z8jVFm(!tM4)nyb)SbSE{)={Z+O$vlD_)_qbbm%f$!sa|}v6_x)pnZ<!1rKzKU&F@P z28{s?780O3aY>Z*9Q6%xO~=t~z*R(^<OxG8Q`!uAR9zxoqcA(-01UVFp36%#Y^%d% zCY+T>W_Vg}VVE#eY+To<`waj)T+Y;8xO|DY@+h(cC<8Orr8ZFH+iyR(!8S{_<P9?j z8cR(3hGuh_<iH^hjhFBFIC70!8dL29m#irt@Mq}`=>dWpKL~IX-z62MOLH08!$oM+ zmMR%3bMhNoONOXNtj|w8_#qt_QIRn~rY)wVO=7Z^hNL_r15)xyn$lW{fHTWjl$%Ct z@k4o<o(8F}woR7bGG@q&v;Zp)lK?QCIrtMB{L0$249bjH+Aj>Z=nd_l`$5pDVxCx_ zk0_b-v2#qkEH84#htLb;FWvgv@lhu;f{q8#Ch5hXMjy;#${k?>h&O&J0P&qsa>gn7 zgXt+lz@<}#plw@CH-@-EFkg7tVex3<wAC^_yti`+e((?iddj*>+ETB|hN_R#5lcC; zEiVJud?RV%XhV<=SB{^DUmp1kmzf<S+`$9rmbdc3l&bS<T!l><$Tu>!3`z<4@#y)K zLGtP{uxn>q$cTd#ZZ5Z~QF+ib6^_+e7-I}fxjgHFQ_*5@6VDUP=CC7dcRZjbGF1=c zAw118EpR!z0})aKt?s3eUiaw0%akeTAPn;l{B{tPDQy;ME0gMMY2eE@=^`K6R6v!I z^QO+qYv^*{mrLPt8j$6T`U2*YDfLx-Q#-(~zDh%<Eqf5bY3DuZhY#X`UaJ;-opqHb z$}}^6q$$rmem^`FvuXltb#i!%j+9R75G{n~HyvNuBM=wV_|sv`7w;B=6y9L%u)>%8 z$ADAHaInn$fOi=4<2gdr@3;NriFoA+3C~=!uy4mHpm+U7eEoeNZlU!X@U#9i$>r6s z+4$Di)^83XI0LxM^1}_j<F>WM%oeMM=J59m_J^Eq=r<^2=?eQuxA`u~CLetEG%@WS z%j@8A2BxG*kJMc_ESp6^ev2b{?LTkxW;Wz6y*n9<a-zh@^q7ygykvjGx19BD!{%A# zPx!FU6Fz$6+2b+HnHrp5<}>h|>z)w<3c6F;)GZWPkD24_YCanDg1r_8M|`1kn@vmT zyQ2XX<k5&&sFG`bQC(<2h4D(+lqtg6AfoB00g6xsWRZB8PESK*mB3N5+kOdlh4h)| zLrBh;NdI7_6+w=(v|#b>A9W1Or|eiEDS-G&ll-pqhf*j2f`f0$>Vi##iq&8BpF&N; zKfL`|4wR&<=9CpO<i!ff<qOMHmVPkJd&x=@<H%9DEKN|H3Ku1^=qS%BXj7R*w!%cP zq!iq74X=<pVho86cLKlTr}Vd=>({hLY$KRf51;W*`gjkoq{Gi7y~)dWB>Go+Razqf zm}e$Bjl~!FXamP3fqMEH-r0EJ4(<9|PHmGcSNtg(!+<fG<-RKKif5;xj+?a(LdK4W z5){K7MDsMvX=@1MKSqzTlZTdd_X^laNCz?|MU`b~as(%3S*m~)-aM!iSsDZ$i?+sz zl*b+<pMf(#$N-4nPD|mC7pb)*3_7ICx&}nacSc^5QW=EN2^$OXg|Borpv_IZEb+&1 zp{|k^NtZzG%A*Y;w+VRB@Y*0c8fnKtj2YFn(Pz1aq*|W|9)4h0q|89OOjLpk7$S}~ zYMg5jdg_q$`32UJ1F(!LTW4CHl!<uxFBszHSXnE3c^dh`AC1hoNhL-emA)Aw@)92d zbNLLIB7Z#dr;l~H@=pGN6~=+17>v@z9fKKqZ42zA8J1b7Fbu-*Q?K+l-!Y`ntE6w5 z;7@+c1>uTH!_ABbxAEYMSvJ2h@F2=I$-%bF(gfUm@*<VUMV;0d3e`UGOS|SEnd#y- zJq<_W$wT+P*h$q9OwjGetK77^1RNNnXW={W(rTwUH_V8^Cog~$e;M%LCqL4|Pk2cR zDZ=`f;abb{(qV*;e#@fx0uJI>K4LHvFLDgcBI6(0HAdALm+6>u6AHg@TgEgtW0<qN zCr4k}`4tKt+hLL4%EkNvO(N*oxJ`pUH(=YM1DctD7!IWCOp2-cZ=j>@E@3X6(M?c^ z1z6}J4Lh%?XTdGqg~5cl)iY?xG1k1>8JA91aeGwkCCjKi9@Uu`?Fbp<U-sERf)<G# zC8^FUanp&`kpWLqgH~m(R7}S*>}=g-4lsZx;3XJ-Qr}6xD9yK-C%rI1{H7B(I2njY z+L`qs57BX8sSliqOFLsd6{FdDg4B&G%?LYn3OGZntS~)g08eC#40Z{Zvz)%$Da>Gs zWmI5j6Py0RN0xcwP6&CG^rR_d$v}zp1fnwuPI~?r*GGPXrF-y@iABF4;~GAeHS;t& z9KPGOj7#^pq-jdm@SQ#fpY$=_6n^CAyJ1JX*|dZl{?l0RzX>C~sjqyuKBgXUN$C=0 z-NQ26PT)sWWsHMuo)(r<$3UlUuJJvtZN8ziLx;kTO~Y|QdcMOu<ff1BwxzsVpJi~V z!^JO9gR@hgc>jnWj*Ybv)A(is6~*w7j|+YI^((&gSyRHV`P97|6Ftk>il0?pOm}CD z7|N(TDC}?oMKS&goe(~B!`a18_*m5b;eAyi%uq2eC}pT`Dl99y)GPRxGDd}A2!B@O z{!>USWJ5S+H_Mk)ZX=U#!&m6BdtXD>P$wB^MdHzm9@Vx;hhu{^Xl(0>{~3aGBw>}- z%h?KX*&z6upH73$KY#sn=Kp!TA40#61C|X7&laD__1tpne7?Mc{2Biv&{IdMaZ;50 zsV>Mi^$T$$V+G#dzAqh>Vlu+={XpLvVmi|L?q$ke295W4yz?^~Hv9e#*kA1w_bi$6 zX}Cw2e5}jTI(+r9%#^#Hc!40N?id{ATPg`v2E1u32}8S-%1y&HqkZvKSi)Mt3a00j zQ-B7CBahWtF|5Mt*G5mdY0yOQF*xcSFR!G}6V!?7tF-XcFHM{t$s7I&7-2Z5e^OH< zj)Br!a9JLukCCiTxPuXZ&}B?@6u!s@jrvq#LV?4hKs6i!L!*M}jJx=z;Zy@Fl~#;3 zI#h1D7N7AQxN$@=Bbii=qXQ$a>#`BE;WfdcGx>!s`CP_s)yT@gunISyz(Yg~_oOL` z(u^335TLyLD45G((y`FMv2hfOw3)0hvd8psn<qW0^9F7B+bRiQ&gF&iyi!NUp>ZnB z@eLl|V(<@vnU0=Zl@@sP(^CRW);|+84Fe*t9tM*F54cNg?dYfzBA_e8Q)Se|Q`eM% zodw%MwXO0U*%}PI`fP|igC+bb2XR$g<M|P|%yt1Mq-~SgL24mQXieJEP2N+8LY2sY zk!HfVlTYOZf^;lmv1-)XnYFX)k|pAzFEMH`K*NGiMgZ_-LaOiKcG7U9KeNHQI(<IN zDNXh6@1*{e26$-R%dei{JuI~tNMr5UF(zp$BjI_k%$WB=UL_kR`BaysNBcVb<~_zH zc}zW`wNAXucnTuF5k_)EQ1*Vo)8YqoQl@M}OiCCx5l7E)7hV!{7QiwG5NgeD@z`Zv z(TNl|rG|g<f#jk$AhGOg!{A^1hA5~qcjBw}at-|PH$C|1V5kGZNguaq3`B_~3jClj z*eczDk7vRQX6Uzm^4lOgA71j^bd8xPvrz+4Kk63(2vl*(xL);}*LPea#8~59xTG_F z5`Y9kkGv`#CRkvvq+74EzrvQ@7qspldX2j5UHIhlUC*D%UDUyU%bZILA=~=E4>C56 zG-iEUX3sA8hK~GjKiV=I@tu`e#jaiDu!`RAc!#3O|64qJ2jb^+E_&{@iOo}6(pOFo z{n_)w_JXgZX8!?3{o?8k1jmPOGA--zZ0uU#csJLZ)(90D_DpeRFV6X>%0A1YUh@Ub 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 |Hq7GQ*<;r19@_H=$Z*G@2Gk32s8 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%0DZb0G0qBHu~ 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 P00000NkvXXu0mjfL;+Ny literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/run_the_jewels.png b/Unit-2-Journal/Unit-2-Journal/run_the_jewels.png new file mode 100644 index 0000000000000000000000000000000000000000..ab944947eb91ad3bdb6e8590fd2a1e94d93b39d8 GIT binary patch literal 136994 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 literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/sleater_kinney.png b/Unit-2-Journal/Unit-2-Journal/sleater_kinney.png new file mode 100644 index 0000000000000000000000000000000000000000..6c165ae600c92966ed74ec2a93396dc00bcbed8b GIT binary patch literal 197582 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 wi+H3W6l;IZdx{*MY* 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𝔮AGV(RRGGeaQ$OP($6#Szn8#Ht=_GAtMzkf!Vh~{e|P|Q!} z0u|9RguZ?P^%<}FCKQR>TizqDzW|PJQ9sIYKRz(#38&JJOwVnzpVX5X3TKiCg5wS? zMo6jLph6@MEdgWq^o4`*yEDb254LR>x7A5xQk8_kQAWs+T<le0PR$MFuUcG@^Pf`d z$SR`US3j)4oHeloF-i4N)Z2)Kk>oEa7jwyqh?}(&O3Rda;;adOkZ-ajxv;O}>O{|9 zz*-#{zupd~nK4xx(@w?;+G5#<ZzYbgptb_M28Yghf8mn6#n_N1VMD~F`f#t&C&O35 zL>p{s;$nbXnAjC%aoFbDaqXui&mM-?8xu*v#@fD%iYRKmUia=HQ03qMV7E)4_+-(q zMjD2W82WT%c>qn)1}1s$<CA>|$;C1th;T^zX|c;SXY=v)HEvUmDL0XPwe{O~QGZBD zQu^mbc_+hks)+8dyW}{OM(HYrhpF#zB{L^5ur)swh6IU=X{CO-dn||t!3s``%{4fI z7t7na%SMJOXlQ5vmL8*fC=*L%Vc-oxU|4*2f@9Ye&lS=h=ttc7%Yt(~X?-lS9cqS> zfDMKww$z?8<EBTDWVar%GNb+B0bSrf&hahlS(J+6m7H}<A7l#hG>YkcO`2?k%ZNxa z1L~i)$>c~Y$Fx#~54Psr!~99n@i6RVeWZ|&wG#3NcjvZg((%*gb|`NfIGHu>QP9)Q zUQ&N>Dr1^%+<{iXp_X?In12WldlYH%-*N}<&rvay*%vm{-BUA9E$~gW?M)~Z62%Ro z7vF{5fi+~xdi(TfWr9K#WMgE>qqh^>7D0*YIK7L(9QvPj<=!-^1OcrKRp?+7&mAL6 z-^N9}u=x7d;8=9s{j1M8GeZAib4K;Jtq_kE{P&yjy&=@UWW{_NPC>{^1Ys~vNey&f zU=?`~G4F?LF=w@IA#s_IFR=ojD1lVTpE<(9?}XAk&JFbe+F|#3st!fcpI0mm76*kx zUb)41xDQ0m!}(JvE1Ahenkc^rmn(Il%|)ei`Qy=Eci%Txmf&vnw+dNJ^%(1zD>MG4 zSDz}8q`5Pi9vadP`yb`+=c>D<N*uQ8MI(_e-?a^KjkGpkhPk1^gm-hxVQp*vhZUK~ zVxGXj^2o%GB^NOuWINjUd#`jO1Z`$n0<H-3*x!kt%@XAZzLj#eBxm)s*jXOj#LF96 zeaJs9%71!WoW4ak0-3-8_3ZMXt`moPZ4*j&NDtcwhS2<>QP4zXWvYboiWA~EO=axs zio(hne0c1MoE43lkAkh(svT~8RRjLfS3tW4fn|UiG2L)>I{aOYK!M8tUZBNSBUvL` zf5ZuZev?nEEQr)+ld>ndSVEY9fCXbFRg{9ZfXjD>#`8DK!sk@a7?q&mS-*5iCy!Vb z=+o(|xd|?j27gx{tzZ>$Y~d1Gf(-v<0p&v|I&vZ@g$joa+bmIW4i%mF<nOFk0|&OY zBw>4|_xr^ZdF-i>Y31-ki_AaOjXUoGD6Bg%K&4lgJ;>{^4ZraAi;X*U6;*Pu88`gx z(VB7KPC}CR2a<4H1R4X{Z2x-#EOD|PwGUvO(wG8_X$3}I9(S=;Ju0hOgizOjHm$c- zoI4i)D`mu95tG9L_igF{RQW>Ce2CWAGdy}TH5*qJ8_~ERn1eQCkgI)jO`#Wyt1ifh z7~^H}8^CFB9rX{f_Aszp@XG<oEL+9bVT-3AKSiX#8~1YdCUs57!2o6j@0kySpAgbs zJFvOu2mK&F-vT<DC=t#1vf!1WI6Hdr{cBEC*56UrWlT))zR0S`v031C2{MmGH#^qj zpUsKjaH}3jU*ZGiPzl+{l?Hqbd#<E~OYse!#WmoHBa0h@K}R;61eXOPFNoqtrxSLI zq4>jZOMfm$*zl9yoPw>+?YukMr`%u2Ger;vx%!yWoVjJFkfaW<$xN>o?;;d%aWT!8 zC29_a=?o_<De4?Bv)vqhB+k#cKKA?_;Z>!y;q{I=pMFKF0zkPC9x1*dVEgC6=>&&U z4C$kxLuGREgrvAdM0B_%V}Uu3o`q0ik0uqqDvS8UBy~U!VKTPzyEHjO>(X>#WIEU9 zo#WIVS3fsCrb0{9);|_&C?<#eAACPK8{`e?vB$+_O1q+JF*CJ(E7LQsD8fG#LIk5x z_CZBr5*MUC8P^FJYN%y9_yL1V!|EC#mVX!=HSFQ%9%e}{osU_Ch=Q!U1D>K+#s8l{ zu0B>PqrVoDgHNsHi;`S^amBfHcZXT!1!>FAY03g{Cx0m1?hPNrjLZ>eVvr<!>$-zF z(+1KunCv9N%-7cq)u}7lsx%B&b3Z6JCW&+@;+rd}C?l95+oF^<c6AZ03jV|Wyd<G^ zXik_qyR643?AIbyH2ErAGl><zMTNu<m%1J-{rlA*6|Rc%OznEnZ=}ogLom(6!C!0& zi33tU=Kfi(Q-c574QE$2pK%;FNnDUz81s)!ioDVrK)uBL%&jij*_ujyJ!kD1LRpNV zm_kT`gd%osA?hL(ZdPGz2{eSQk#hoe6Gs(6`8guEwO8i;5CQz5V3OlR&j>Yq@@(s~ zNi^GfVEQ55it)?of9FX6U;D!K>CG6pkmWX@ktVMKjWPh_z?rsJFNOs<Fvq8?{Eb(G zi~3A!DfK1m1(k*H;f8p%5&ogl4eM7oic2P5<zN^?S`qD-lLO-lO@_#FHIZx^=g5`J zGKh%)3P1)lxj;zZN7yiJdlvi=ut&4=!A7{mbxhnw@Y3ibQ>F!p|Hbecmpl0jpJN_q zu+Vb4x4)oSGDTH<b==tMpk`E)XnrB?CdXB+-Z3f8JG9+8K_JB06C2P}vtUWpHh?Id zo4!$Do<yTtE;ytcvi!ooY81EJzl1hrL+;%hH6m+=UlTCf6S80&g`o&Vge6aWZSU9h zX!N&dD!Y9_YjLg<Kmg;II0gP`{PkMt{_LlViE5)^avYdTxvc^VjCr$iw*3Cg>)*6h z5&|^;jHEv8kovqn`m$K#zZgg7zpPXCelWR6C~|JZZ%B|YU~+yUumZ4wmq8ocdmTx@ zGV^Du_Z^pexk;g1$~)J1gPX)nAG_YM)~RGDrfDydFMSdyuFJ*v8o3H9w!kG++TD?= zk_y0-f{F&}_QVT(>|4|Xr)0vaB#!nI+|){N6h)c;Y^@ic<Vrhx0>8EzPD{ALDp_#s z`fB7$OieoRtLQxlB6<6G-X$L<+<V8IEjPD$EtG90zLLisQ#k4Uqkw1VNu|IEH8Vb^ zZ-a;2e!MF=?Z2X4{zWEhdS+_^QRuhqe=N-jp+0Rv=%o4<#pQ}fQ}aL&rg({!)4wc+ z`Q&sJZM0MB<j;K~9@wFWnjo}Wes#59XSU+9ri%G}i~6RdA4NM>3I<#+iHUA*?`I## zk#DYY?$?bnU%AD7l_%_5Ut-{EY?Qk1+{C&s5y4PjP{zBQJ65N0L{N9W`4*t$?)kQG z^RF?rn7!uZ#m>ilOc@OrPcHp&J-{kqx)ib3am#*v&}?Wcs&?^jf_G%vr1JuOq+V`b z$MPlODq~j}ONd8%{Y)OE10unjtVcbvl3n*zQAv#8HgBK1Kh}fFC>Xy3z{n7$6=D4I z!=DuZDnmSYWzBcI(d{*wjvCn?lfU>PPTqI2i#T|ol)s^1<39k1n|`YbRwM|-v`yaA zl6B=3)(Y-8Oa4;3mb%v2n=`>w9u)z(je}=eG}lv(n}6S`MBMNaY&A&I3n70O2AU!i z=W4S?=Esy#um*@GJ<NO^G7ww3iXPpO{;Oi`2)@UMr?(drZ-x4ZY(sd0{aAm>(&8F{ z2%cWkpHY*?Xo&%7$1!ukapK>}AC@p<Rf_fwTf%U%s{jo`8%`m(=3pNE1?hU3!t-mM z0_&}|_yVsX$fAJF!ms?whMz(`Ga|q?dyfo#TVT&*_`6xLYDy-=Obk0Dlrq$9;d$j5 zI<4DA%te1#!4ojt{&vIVMef&ptttBas7dYjxWyr5v^Eql9761a@L?*vTCQd;%p5j1 zVv{aL)0o6A5bEB5z^e*O#Vz^OI`g4o1;j+ELYk^I19}A7mV>VN$hrn(=+(`m77>uG zzg6e1i@*^FhBCu;L_CI1*CiK8d+pjVTfcu)eu&9bI(By&W-h?POBeOifwr+qr!H{5 z0oO9#q@Wbuj`SM0_jX#|pBDRrJKCN~MM2emV6eBiB=5v%_4kQD06`qF<AlVd%G25T zRzp;#6<DnNPcNH|ZDP`LV-<S4*PP4L{!6pThgO#g#>ivcgu)!rj55Idi7eavC-ajh zp6&zJh044MKTwc5&92FH*|)}`C_AnFV$W7;rVQC_9!Dxwz3pc-7j@m_k8}XFZoZtO zEqxE+&|f@DQu+|Qr+Z5S38nXp=w2&}(&TwC^@0AhK62s~18HUr)+L|X7)A(++Zf+A zAdqBNZe{FmA~7)wq38acTjHXp|I2GQo}dU%3GgI;u<qB!yKfqVX-4Jt%%HA5F+H{) zA`v1F!&|acp<|cyQ@iTg>hX;63F;7wo+F1qwbj9s?hHcgCu?2F^C;{;I>=?Bojm`o zXVt$7eL68UNukAl6Yv%t&E%(Ct5PdFm|DVYzuDhH?|n-H%1=RwcRv#sjAYH5Ril%Y z!LTGD;ZB}NP@)#_wISEN$yFzFLKM-}=2rz($~SM$xGy`G*}fK6dNh7Fcz|}bYDz+g zgl7*oYEc3bS;G##3DcQOC&+}tkuC+T8DqtE%gC0SUe<~z<mc|7uMEj0ony~nKBG)d zCuTbJ-cc)W;g=0}z#^mbkMj;ao;`yZ|DV@$%PMEHSRK^A-qbV$CXVAID=X1Tit`lk zuuGdCt5mgub)iL!BdLd{M@NZs4PvINr0kfSg}C#bCe`>dy#2}lzSs{1yf_A$1mHg6 zfx3jei%;~g3tw&;;{TJYUNc^1P~@D%0eoS3drA0Ommd$up#_&8bfzi_IlG?c^=;Oa zrr9YrUW}#6e@RX$X3%I=X_t*GBq>3#KqC*glgF#?z@NCLE?r#RoC_6IRElrb19QfH z*exSIy38RHWzwg7?O75s8W<lXV4-5YC{?QQgktFRY&KwKhmw$yg!m9sL4#2@>xSE| zr<ilu%|k<XS^w>_NNilpG1~fsyJ@U4F&^66Cf@c7NV#4-2!4t65dHU>uAO)_lNNjh z_RUIFIz@(RC$+f$wK+y|GK}~Y*8TguPEJ9|2u?7@YSaQFv0(!3df?44;q2pSTLC^= z6n)#ez+Sx)RC&5*am>A1gJQ-7lAsN@e7VGmfV@LwQ}9`QIzW#XdqK_FjDC38E43uH zU6`O?OCgK>Hz%KM<Y5W1dmZVxdeW@=@Tn-HH9osWe5PT1;&%vDj8S=7gWI%sx!p$U zyoLlJ+l%^X?*L_|<^JsrF0V#1C+<(KH%h~^?q(ugluikAa9!k@_<$}%sR+Qxg)Aya zb=`l7UZMMr{Fn}_MrdqRO*cj{CQQ3KG|(T7AR$%<*Y9VReoMaYLh}2E%O-5i!8HUL z6uP+D5q6B8_rz7Cq4|Ce%6gCx3p8)iws2BG|CjU?2F6PUQ~vh=uv2L>9wjQu-b(-2 zunXr}k|gqeE%mJ-n&M^x4a9*ht<X%&U9dH4`DMXSY~1ob193yh$P}Zmdg<o(;PXQ% zY0$~BJ41YBplbC$h?_q$sEf6yaSxS4?7*6?{WHpQaKW?h3@#SHxM#j$B$rM#1i9pI zLbldW2g-Ymgirt_oSqqB1*fJ0jQ@8oi=A8@V>IY<9r}>h0x038I4b_PO>nm^N_j#p zFAN}B64ra(5^WwQ>8W^1y4rM7;{2gixP!?Z;A`f`)Nq1B+;))t>N>@i;Td43k*#4- zlgyoE^D$vhx%Y<vR3iO9ZfI%zlyzNrqESisxj*{Xpp=SKkYpFKZK*EiwBCm2kL!@a zDZ!o@OqK7g+rzMkaya^g+#SC$L3qVfdt{i3n*wsA0InV4ep|LeWM}0IOgm-o6TipL zKg>kv!|L*(@w-T0_ZdAe70n+1Pk21zZD{n6kJ<s?1{eH3lp+jOg)VXg){7Ms*<tHw zgTvcFR3=dcxmh73au<yZdLD>S@J~1iaDaZM&)50QibXqKaLX31zLMHUv{GxuKSw~v zw}{ci50p5)sg4X^Hkgz(_Ou8gvsJq;c<ws2qLpARb9<u4wTR;2R<@`@c8TsaoZ!BY z6-sDFBpN;BaPfpZoo5hI3NQ<vJVFsT#6KyovWg|8roly{eIs;#hJ~$(tcx=8L1oTR zP`S;6gGzP)CwO-&UQ}7M_+PqV7jA*JmcD4Mq+&0uDp<Sf1+ss!1aBYQ)HGQFEostK zkt;8ryP_%pqv0n0e(_67PV6+9hiBH+w`Ui7>ju~5jrTdq6aQU%4qEZ8PvpRsYwwkV zGdBJ-C&_I4@$!ve<w>FD&e@T{sC7};WE18bD2&uelfh!}#n_f?bTfbz_Vj57id!B( zf(OVK(PQd_0l0`<VCONk(5%)$Qp2(I_#nw(fhPcJx3SO5*tbXTMgRVzi!S?I5vP(q zO>@6Ex8b`~JMXAW&027?jk|wlI5$ViA8Luk3JJQ-j<zWL`0)7nHNyru!PtX$SzO1{ z$=dBH$3J#Ra*r{MTbc-aB7ys~Nr3UisMZ%WR{ZIF*?8!CT7O~{%IxGV&m(_cq`Vay zil9v%`Iu^~F73F`&qgG&Y;PvXzv-JAc^b4kt=&DJOe@!FU$Z|8h%6CWa{7*THpsnf zl@bR9kikpaNUirwLKDzCCJTUsYurBHE4lETvlo0VPbe96snkgdg7LaLs;MCizWab& zauEC;U=*C1QQ;0~Xt!K(z@j9mLAT*KpzA<z4;67V6!9_xO@oij-y8y+?a@rcAd{kI z--CXWN*lCUP`_$>ex5IXbD)?^Q7M+BAyz?LjCIJtkubG0%hLS`{a2tTqF8>3ryEk2 zAz|Tz^cK`!5W%xBz52+3VNcu#l2MQTly<fK1$|>%lqX{D%a%?gQNtS5(=4IfRLHJS z{I~GOs_PS%-4fXruX8h>z0RBIv$3}yg(qejGo6t3PZ6$BkyGa~5_^|jYAM8kXU#r~ zUZKwc2+Ml7!aDIL@ucQDA5GR0qX_}#i62pe+gRy%a5PSRPuCc?aS7-i7GHcB{$mW4 zcPzazFi{I`iE%H#Kb_<~aIexb73%AXMNQ_PQf5g|j$%%qqAvnAybUm|{v-q5dmo|k zFTW}C{@31h$N}n2-6(u!itkJw191$Id%fM@9j2aEscL^4s(iE906x1M6#93A!EpF5 z9>kI|>`VIiCQg_(kX7w%VeT?wOkv2Gvk)s)6=*>P;iX%QSR%%Jl`4GdZ8lytR)IVH zr|AfI(UH2YB8HNS;!Z>BiiP4TRm8El_~^#l$pMFk3t^jF{oAuqa6q{xrmQ3pIL6#c zOt*P<u3TrP`#I;?eVI!5`s8uTS?81M^9n>Pz7-X*fgA9EI~(S~n&ukQ)(Ghg1<dv5 z1K6~u%pp6o=H3C3TO-r*^;@GXZTKM}f7eeo2ELAaX8-PRc)Bfp+0%^sZ?=z&eon!Z zms5=fi-Aauf|0FcEEzXk<t{paa<v9(rj(k;TI(HeTJX3~xxoM#K<<}vse;dcc=0T@ zfiPvgcf{2XI9Y>v@g-V&Gx$pawZ7shJ4m&FkxB2iIAMfPCPTrKIHfQcgE&3A#0;_j zAtNIZD^_$pI^_tlWfMCDDjN=E+~u!%pZn*wQXHw8et?<;nQF^oK#4@bjD&-y-qB3< zd%Ylfvyg2ifRAqArQ(Mt;EOp-`}+^cHJO-?HhWnS^qKYb^|m?Zivo6U#Hxz!DrH-; z=FI|okV64Br+ij654t4ZN8tc%sD`e|Qf{ATwIc2N+t7r6Hx7S01?8U(m}22CXza<B Vm-VxXB7oQ52We%gDhZR|{{zn{wu1lw literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/talking_heads.png b/Unit-2-Journal/Unit-2-Journal/talking_heads.png new file mode 100644 index 0000000000000000000000000000000000000000..8feab20831da5a3ecc83db52e078b047115cd7eb GIT binary patch literal 382223 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ν!dN(|+ouAwTBE;>h&xXClFS5c%3v-uHJu3#|P1t%0AeMD2) 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%0D;*5&zzWP2c7QW?$3ShwQJh!nl&ejO#5oHASXsB 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%0D<R4 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%0D-;+F{JNK2VSLYhseB4EF z9Iqe@WpHh7C<cv=TGzwyXSW2TGZ)H!%*vPswJ9^)z}%1e=;;R1Eu)iQln`Y7t2dHu z#q)8yrndy>)vLACX$=yj_V$+6okS7m@GzyJThDbS;izl5{%4<lnsxqd7S;OVrL4{W z=U@IR*qt5^#x%M`58)0)Laa(W@rlCkkU@ND;MJNYwYlqq$Nj$Yxc64Fu2089z;i1r zi^98g^HkkIYQ+?8>o9+;&+H(eXz+1AA7tg6JSr2jeJLu(m!fb?s5NAl9Ft02hHFgU zaL8$L+8SB<6Em{Ow4j6B#m`m}fC&MG?*SptPAYnec`Yk@^aXsNpOm$u+-A-wsa05{ zx3h-Cukkz1D;cmOe2aUnMt_D0O19`!=8RXf-dKFjYQ6Q83p*}i*}mNDth)8wZkv6N zQjbO%Fss}(El-WssNU8P&+uBeUH%MLG#(J9Yo(oe>w(bAI7}Dl@guXsG!Yu@^>Na1 zCw{vbLSO)_C>N#?5-d_SH}m^BXi|>JPlz0J*tChmTm^iNyJgUwPBY<x;frs1ZM4jj zuFGOjG|EDurD%sDpWYtMcC)SAf!<pRpl;uNJp6x-HUNvMND`0&JsM_&eDA@dItknz z7viM|aSIc(`PL?b&OXN4$eMG=&X|OD{t_j?RU!a$fH_T{pnVb;ORF!SV^kPumP}g- z;rd^~f?G@VH?4t&EskUIr!-FjO}7erYFGUhyxR*m7~#}5dd)gw&V9xyPTZ%@Iol^$ zdophbnRrwCZ7<f<cXS%iV@lsX-4!4O>&^*tbxJ${@4npo!7RA5hz>(OF|dQat0Tcy ze(W>#(mQ=B?b{w&gp~Yejc9lhLa=CN<a*~lO<X%m0`mLX^iV7W%cU8=QnOClzdl!S z9~+rUbcMd(wTkhzxA12Kk9~<DJnnNfqJ5GUWsN$7pA6}xM(c*~wD`%)J_*0}5;~7! z;vk0DW$PGPC`DNz9U*=`Mt>r~@>K!$fBmojO+~a9C*C1Z;6^UQPZMx&zI1iQc^|Yc zjFBep3|SbP>k<hH;>H98lf^^{nYDcI1P<lPnZX}$<%Zb`$7PA#$_@Qtg~Qhq)Y5`A z&lLaBxKm(Xg}Qp6Teog5ZkD=z`{u2Ra&Jci?P+a)@%;7+StZY<t>#(?4_Uv?d)fLZ zg(rA=k9FkrDYxkF=?NHeOa^AOdF&}qJbVccd!52V7_j=e<a9=0-APA3v7Hdg5@PjB zu~r`=C0FoX?V7B!?eK!<V2XuP6fsu_7#K$I5dPu-fFc9$+v-ui`1<RCosUX};$cYp z>|ARHmQX}$w{OQBTNh!^Yl2~-HH}tTG1Dh9_)`*e?_e1bbf=>=J=F+DmKnimEhoZd zUDS_ffjrByFz<^ZrUUkqT!)jy6D)XtD4zr!w<B12NEJVs`}kz;)Z@9{_FC)1XiDNx zUyesrYLNxG*QUTzLQRpn$s!ZDKZpkRF=~7vUb+$j^HNM!aQBjVw{cKb++Kn^I$hfi z9)0#?b(|+#_lfY^XIMgNeP+05Ynt*4j2VcXXZw+4;A!dH;JgudG2RS!hyMDxnv$@Y z%k%iD^Cgc3n|?nku9|Zyx(=VZz$9Je>YmBm2_FKG8*w;EO7fJpWJMiRg^x}NqNB2O zDcY<=GnMcj_FEqxc`;HFUv16H2UvtJR*bp(3ved49;Np;1`9#=1Kxh-rPlU>o==jp zm?|bI#dgvjYbNKX>tSpPRC7uW;|SFv(uR!1IQg9|4&p!}THn){hZ++^#OgpK3cm~> zb68C4)q23`e86dG51y^KU&bzKE#0H<O^RyBF{#h_L*?~9sW9hRg7PR|CoORb4+E$= z9$Zb_B`oRwR@!~KCk=7pFcF4z{rK#Y124j3Ov`{RE+7kTE*AoGbrIGGRAbb&h*mv; zM2gv4-x&?8BjQe^DG+*;0usj%JU!>Y7_&osp5s?djgWSZOqM7?IEP<7ZNu-7a-Lm- z8&3U@Kqf@t<^%)oJT5h+{Z83Sn<pwt4qJ9ZdNCgDR%U1%w?@Bjb<R?l4`M7EU59^O z0)yu;u>=S=onlJC@IQT6<^IQ?mPz$uTK`*BVORW{@0`^j5Y88`JNjBUz%|QCVh!)* zQhQheLq`x%q-#asI(po_^?eLqfh^0c9fZlL1_7?bfwH^qW&NBjAps*BcV>zOtD74L zL*trxtzbPx;CJtTu=xM{fB%1r|Mg$|i^Z$2z8+z#;_n&>t`{PFOmJMS!JKvO;gp;X zCPP6RYdP3Tbsxo}HKC&owQK#;ad=_~X_USL7tU3eaxeGXU;X?4FzM2-z47MsBh>Vi z(3AM1-bc5E?@wP}tbMzlfGYmbKg^K=M0gND=tQy%Yu<WT=G<h?AEO08Lhzuo-RN_Z z>Dc)YDhiEtpm-Rpm&LhRkqKmQvPS~@QZ6||{Lr2_tC-pH5hQ}G@eDfg-+%mI1hJSY zCd_RuGm!wdCW1&z$i6@Q^z+3RUw%E!Itik%HXNro5C+`*G2+foLsiW4v(G-Ozu8-p z{*GU;I^hC1=#d8Bz<jbx+qdjjso}C$6_TSp*4;@KS!==k#J%O?vKW=BOw6K{pv!^R z4`(~BrtnW@@0r|fCsP(ql(zn){V7uYwt`nP(;nu=y#4(*;e1L~c>P=!+hpK{J9rny z#Es6ih=Dslsp7B~FKroQ*;rZ2Rzebl&~x6YEMd>}NA<R>fL=+==2*rF<?w8)FP?~h z!guFE8RSurT}gS{&pO|YU+%Uy?SwWGHqWxc2<GkWbH($D3!SZrYw$i6-t7mor-xl5 z8kwGs$pd&!aZVk~l3G3q`e(HD#K&5e(PmwPXNp2EiPhopl*}k_6bYRy7&z0{vvWO) zXZSaYTl>V764C)CK#Zj^zxTHf{&2uE4<xtSlig*O8%tz2?M9o6-Lk46k?+e6nZn1G z$1>p$+%IRH_BQ5j>_b}@Dab1wB&0>$T5ZS@bMTKk%xP88^=4>Xr^L-cBAb=2i*Ar< z*-L=}ktgQSJ!fkHN+U=~2f7?EQP<K;S#j$f!1RF&`E);+UUgw+_*<YYgbuN}!n%CV z7+7m!nQ6Df+$D6#!HEsD_7O}r-UAHnpSA({91-F`jA9$ybAs&%A%$UFaAHGTas0@3 z13{UpV@ZV2g5R`LF3RPBc@wVp>DDrFn-~&n5@Im<ZN~e{tf@2++6d;wGHO3@s6N+c z`aY{c53`+o{c2dYPR3}0jrl}~hxWFfa7Kt)1sx>N$LdKjA=q5I|8*@)L{bVEv~j|Z z#gIn&Fy^Dvfv(aQBH|aWUWury!AXmfo=@vLQ!tzh;#Bn;GOCuT{x#O@3{_`$d<m!4 z7KiE%!Pd{V(m#Cz`Np4=orh8C)Z8U|7FbPqs_DVNXvg;J-oN_QuL9%WEq?tEzplaN zsm1^D|NiHTS6_W?apSAcb5+G~H%mEgZM0)u2*xYW?_3lzrX+PZd&PmFQR_{Bx1M%A zXSH1o69IToT!`hdmr&P4v<-}v`CV4g??3!w7S0Qce^$Vs>q+BKf`$wFLYA5?-zT#~ zPbQphWf|SdjYfIXD#yAyzOitZ@wXUI=SvCXw!*+!zn-i%6K1vRGJ-^s1VIE(;3Zx% zslUCz<py|q-4WUfce%&Fon=cAA}F4A%}Hp;%kZa9KVE#9VA(7%{rc-~R>+z~**(N@ zbS%-<2`n^W{i?wIryqY(Cfto-ZXN5uOwY;bN!X^~<p7I7bia?<yF`(XKmIsD{Lea{ zSNk-yq;#dN6Q~4Bn1C*=5i?ebK$xC9T~bGu+__+@E{Em0taYQgiwWhz?F@(aM5mNt zPu>#BHcwAiZC&xE7^^$c^u+DHOELJUb~|4ckHfF_az#F>yMAth)+AoL3}={BOmG}_ z{^0EIXEA`5*>dAe;Vn<gVMK#=sE6u;=6n)a_OToNv9b=s<#kO%!=V$wmhh&IvlLAi z#%m~llQl=^wWfpU6z|4k%F@pDU7WRe+FAna^l3PEaq6%(%J$9tEg^%loB~{`H|4kO z4xa&E{KfpEnRV3P?oALq$z?c7t9roDiY(xo-p|^9n%4wx*e`}Qo|7Qz+@56|pixMO zW?UadN5|gi9S8cuV}jfL?a)~md!<h9JPN4-4EKqiXFKt=gZ!J!c}U-<=O3b^u{;cs zNLHz@M@e9{MGl0ki=<pyE`2zrA=~6>R@S{VG=y)us{*iNX=6He@Aeukb@Kl){8{Vl zrh6`hNlWeG{oYUVN=JtA)rVZ0L20A=%Q&%D)&L95Nbqr4B`_?G^lyU!$56VSxwxK` zAHSN!Cm<2bVx{YZaAIKG1=fX_AurX2RRXw#0Yo`n5Y|*lT6`aB|7j0>ZpNyIfIoQ4 zTYB1Iy9sp@KnbDttfdTBBZ9;A{DUCfpeL6qp=7hna&TBOATSi1*L}M;S~Fy4!O$XO z=J}5aE`)8Z^RxZg&xsI{)xpKFSr9aUEE!QmY4{wWu%C-Ya)DYWfomCw>R7mdjEVqb z?!03$erx&Wi_aGy{qe(M9cL!VLowu~wEnX+)^JH}*<sd9hY|56;JVL2MBY+^8RTUv zVm9E~e%mQUVv1|qlh<io5*%293SEswXglG;(qgz*s}_wI-+1et&Tn&u)P4T>=ZoJJ z)B3Y_--$_=ejmez&s!x4ESX|(Y%P?7z!Y)0mY{4gf`r9*3=&>H)~*~R&?ogiJaJ6i z&$=DoFB|Neudfg6S!mx}uOoB<;_B6_S$ek@Pp(}3;U3G{GkxY{#fkNB>wWfFF}jo) zE^h&955mfsBI2RZQlkmoX<{7y$YgR3vIln))RY&3$ot|+*JGy6ef>gg79RCk*`SjV znjj(+ZQ9-mdlm%?<Y5U1vhu)^p!oH#e=`F2>*6wRz4b<gtnX#zWo3pFXhBi~;q%!i zpDw=ns)ntdw^|%t31>TF7=jkK4f9Q*kc1<SH3B$Tno28v1(yh1aV0oGC}L*TC5{9K zq}6k^J*^~Q=r4h~8a^w$-bevjJ-&=BQGBQIa{HSGsQncCRU66XR?o$PA>0l-tD{oO z35rKCe1ds9H<r4iqughE#S;&6y_r6ID!1if3dZ!vj1f(<=QQHOlo2&$I{i~RtXaUH zWgB5eb3J>_h>!gzxfeU@ooK<7Y5dT5iov^h>0xUEBXQZ8?G|ie&4Y)B(d_Vn@O}ne zMg+#Cuf~hS;JBIff~2G^y*0%#yUuW#U>cKK#%Y5G;Y#5oke_soDUFHGP1lEdYvM6V z3AVGU2vEG>Seo@wXAvm-e*C3#MU!ZDnfXlK^k+1SW1%y&l8|i?z2m(h^xlAg5H~vZ z{Xqi7X>!mHO8XEL+>7xY7B9eXApvt7gXUt=`erw2yiD<3w$C^SkZVby`D~xTAeQ$l zX`#=WT=>v;AS9XFXT(f8zIbL#z2CP(LS;0Rf5K8Q&e}(+G8@{jHBSL*KoIbkr6dry zQDGU^n_?=-v?b27Rh2T=a={yKOz3`r8DIrqozPJ-h&d*`sfD^>Wo!PYzf@{R8 z0(5&Qs{}Ke%o6+Udn`l*82N-?kfwd~8umI{=w7-)$ZR5n2u$hOnDPjc_T+3P86l;> z<@kb++DtD8SFX5_x1Y4cKs4^rNUSY%P7y(=lK;2sM0`)}2FAvs<JUi#;4}tXg2GB# zjidyKKhs?M3AqAC!l<*#wP(}>rl?2N#f$YV>vf3%n1}Pw!p2BzE{&Tvvown5TyO8& z7)*HeT>kf1=$xeqlxoPvm1OZ<fPTvAGPg?dMsjy>qTg~gv=(r*&a^OAlt8SWSp*UH z6$RsNn(XzO#9qGg(u}O=3X9J^`ncwwe@vjQEZ%+Xm6WDxu5vX!>IO7>WeKd>i510& zWk6zvT*j*T@0EHkwR*j}v#sz;w~hP7Bt3lBv||<#4Ok77<R1wNx`cB@J?gWD(1~@4 zJGpjX9h&0~oz_%s0-OmV?rYZ1;BR=g9#fHiOc%k##YDKGS;0?RH^qXstT2`P^GvC^ z80()t{&+IX##&D(Q#iTN2td8W2yy4hrG!zyH|Ig)zH__r6}bi|O3wJZ{=OHJX2DOU zUB$c4m!huII-I$F{oBQtpM9P+RPEM{n+UD*LR0Yq>!+v=4ySmf*w};2!KG`t^Y6h; zN(d7^9`IUUL){-7vSbcPH()gJq^`}%W|4{`ZHfcMKqXh~RGdknK>u8)>wQ15kZ`F+ z4<LIGc2cPGL<dK1v}ioq@ck>Lr)z?$Lx^@r+}C>sMwYd?Q<f&{W-H#f`Q)fh{V8-M zckPE4t7-0B&Ci<Mv(ohmBWt(!!}vk|?kQ5;$U`9Zvzj25U~nvW9)FsG5dS=uaxUpa z`?2NRuoUFZmj}mnrY;9dZ_O=a1j6u^Xb0b-WcZ*0YjvD>F>ePi63`x~4~>>rItMiV zEZW>}9mkq!CVO_0*}_Zi;}aDqE0-`U$q?01iaMtW!vw2k{5?S#JSoe{Y2eZF@q+*g z{y)AFZ^K*z1g6y+eR@9Y@Krdg1KB%B8+Z~h3cQipcYAGDtYS-N-`oWu<bD>777mVb zHGr)Lu;Z9xKzrQg++r*D*k%Wlbv6is@HCGkhz2p@s-*Xm)}YDhGu$qq>Z`O)`-mYM zIG5@%#7c-@M&c~v<Lz1qL;^qy9SehBb2kR?AfOsOZqVLZM*QkS002M$Nkl<Z?{7z_ zGPMAAuM|nmSEt6NloCjGKVkYHQxyX|Dp7(-FW`FT;P!H=WiU9u8w2fNSSGY8Oy?*B z)JkNn4bfz{ahUzw8G20Ji7DJJ7J*rBBuIw12C;q+Kz;9i@Vt39Mwhld4NxlvBa|PP zS)(oc!}^Pvs`~ZUUxie4B<QSCuSQ^vFbk_#2cSbx31Z^j-DVi1x$}xmhsoF<1aa*B zoaBWV`omI5AKYC|(bS!Qt8M)0!H#9bEyOxInbm5lsEoNgx0?x+MhA^B6s`>JS{kgM zeEiP*RxmgSftQb3J>9vyxR3>)C6M^g!-#q_!J<zdT)}{cXsyxFk09!${=qAI)GSoG zpO^}5n#O*=-_7dblYdN$jNl&iQ-_7;r(fEY#r0f9AOGp&#y})6YejRA-~Unf)&>Rc zf0L%qf>&UC<NIfe_dobx>Qc^>aD%~05&!wmf4=yqzxt;WA6dGO)W@Z1c0YJC*+<>? zyYS=LYBQ2Lv-{z|S6_X-_^y<9F*<HE9mJi1UUY^hN{80=iUr^4rhQh9P$vVf4u#{q z1=4BZ7Wd;QOyL3xiFVJGcI)QNY51vK4Q7F1{rYeJcJ^`g+SO=4#%eKyv9Q)AU0YXp z%8VEu0YFG$xOeZ~TKxX^zaN3SR=n;`aXDwq17hmvvfFsW;7W&I`^is&-@T^N{(kX? zKmMU?%J&;R@ofsHBkX)q7<S?>y5mc4H_JvRcHQY8wigTxT3VY7NY^H0;13}#@V?A^ zOQ}q-Kn;SE8}QgljI-;0^2w)lIsfg{ihY*#`_1+1(;-{~U<w|$@392HGaiuEpm{NV zcE5xM?&Q_1o?|JoQwviJafJdN&)7+UI83QtiRbO$Uv-PvX|IxOcofbAzr70D?|*l5 z@%`stwayf)6ctTT9e^}xXA_$kfg6_`x-nAbao4zAeC0uk+iT%23!Lj*A`4!+wN3F` zwq7F4AA}1O4}zOQ#TzgQX3^J!EO8w>WJ`)sxeg(}5k0k{;F}=Yh)yHeUBW$!jTh#K zN22GmXy{RJSgB+DN{Xo#VOnU7>#}_tGa<1irjn4Z)~ow70%Q=1nHh00L;5-#+1S=k z^o*PV|DK`a2>K{I%;@3Jm#(<Tt_{+hX@dGnZ5*ClTsSGyWT};}TU4jGT051k^DXGG zo>(#XH{N(-@#0klZnUx7Bbng3D`<>5Y13_72L)L<5Lnu&;Nhv5+gh*7s!~CJ<>glf zpl5G?N4_^1@VS|5WLT394K({PX}cb6mnOrHxgL@NB;iA_oqMsiDlwNAs;obsPy9@N z<8Ck-_Ng@1Q)z$*Hlx3F#Pr%jF48f{x4Oo5f@tk*mO&!|R;zHn8?kJ3=w~y>F$vo8 zXm<ga)--O;kPAcjkyth&@H1)G+xty^OdGaGH8?CkS`Gn*h#Zo56#wrg0%es{VV%9% zDMo<p^=5?s+=WY1b79;wVJ80cg!JjVQD;}`rz>`#;w+9{it5v9J7^`UpSc(fB@>^} zePFNeU%Gs4DacwEA?Bg@_(|QnF)#`Ne>U5V8-M^k88Kb0Zb*lAg@t!|`l)~1r3gqS z4NZT>F!!Cyeb#FT;z>lwvK33YQbyR7%U8x7q?OEG2rqE2{m&>B&bvDYq|uY$s_zc! z+GoPlK2OzIflEbzT?_`naJ9)a5}-ZZIk0Ao&AxE%!t`4+S85-_O$$8O=ag~Xh$J{D zfWA<I0awGs+k%T(F(1Z^34<?kIno@RgW$etywmck?-LL*Hf1eo3~3h6?u}b{4VL8( zT)SL6#wdLH(Vs>TJ&plk{D$Uf3@Q$ymA(W3smu~^q)tBxPah?$Li+iPv%mld4DM%E zJ*805>0?$`ii-?7!jA<kNk_GR$d(eumD;7U-U+-AGCdDN3C8_-I88jmpCpKQ)t4zh zPg4djK6hn`MHRU|tj<Lz0ZIgcp-}h!<vUq>rO?NyZj~*!+Zyz5lk}o9`-#@bYK2?Y z%~ixbrKG}m5!RW(eVCOp4+04DW(``e_qhwXI^nvXV5*b=&QS=y{PK&%U;oFyo@Tb6 zRze^Kh;K|!x~@}O$<`9QYIMAE?ywF5@v~@BFFO{4`9)jtz_qf<G~vaZDYV>;M_E04 z!BLjy!&2@Ka#wF9)K2yt@lQq1dgqxgy}4E6(gfPp2z~cg;ICUpia}?Wdfk4i)obm> zy0BukN;|s|&aRfRnDTxyWmIdd)nj$52oI#jGZuC`L)O|famI(Dh5fa>1Qn*QY&A6? zQr>2nWqDq{ba8~zsS~FcXG>NvW<t}`<I$=Htg!!Cdw7}_fM1weeQ12KwRvuLooMX& z%g-$ymeE@C(8WsdB5cH{wCZwp_I8+JsoR4YaFQ~_%d|N=7H!~`qY=f^JW%%<#?Nx; zqf6~PO{F8AH0z)Jthw<QtEx_lu!h3QzC{T1dlj>XwQhK_va$H+tM3<g3sSxP-cJMK zeuVX5W3n%$iJVzHS7wGa?}dnmxgadmLrsujRT2UO5;rqRZ|Aa6Dg0-D`4^+*UB7c{ z+(x<ulj1x4v;fzJG5v6DX_n&TZI(U8WYx|4RvOy7|MV}Wj^y-9X?_9cQm&Gt7!!ab zf+psqh0A8Z7j%AnAA;r9Y2Dg(d>?YHol7G+m1ddN^V9d<S!mJu^2JMwOPT0f2`61_ zb%bX6o(efu6?E~F#w<KAz<1tzZ>q<2EWS|(fSWxDN?IsFBRmBHU5A;z*P%TuF1L%I zoJ`0WzRgULH{W?@@ow6tv}m0uAayjIW!dpK;?^;7psvq-rwf7@j*;Ok8}TZE=PNH> zE1T`TA+UGzUtfIw+MMgO7V^C%a7Wu3CLAM}%$x)XO?))d_V+@_{rc;#FJ67^^|2J6 zOF(kB(9l^;{NOSK{ewH^(Xh}u!C;-`Sqwxx>b-a0>3i#opVW@!c4^CS)LAYQI1&V1 zgD_$R5ft1BTshCeDasA)ovY#J|Kt}FQ+Vx-*G7|`0>*GgSMT!|o@-65J>tI-PCZxf zwg`KzWgaX}b&h8uw&MvK?PiSZ_*H^sH9`^-wRZ#qw&F(SDsd?)Y~~Vqkaj4$Y*~xK zWkx9MC7>=X{_M}%Q_PArHeD+c3bfS8nu_+`|Ht2r%WdL2sUECSS~rG-@p2PBp8|6E z#pf62!Y6HaNaTwbFAU6<T}%}IVs1-U9r%Brwe{N7ml~;ZDMr0FwNcluUR%8T);nX_ zs3Uql0Z9;WVat4@DYG!PQdqVw)~1Gl?!08ksad<!NC83j*WP%0@#lZ}-!4A+^wY%` zpMROqPFd=+S5j==dh5+m7S)Hn_Tnpbthh7X3n&EQ7L^2Lp*Gd@+RG!1-g)Qk#kFdF z#2@e8z7=EbEGWTE|K)B&BmNdEQe;h$k`B$aM_ButYyBtD+5hps|8L<!c-J{?C1hkm zQXWnev;0-lSCwcORLFCp*!_52)z@;Z?q-c{$KZdFb-Pw}?aAXc?1gQ4V%Ae2S5ip6 zPw9Bvb&ukGkM0-S%*xpaZ+2@(#QShQrT2`an{dT?-+J?n#oN)V2#EfTT{gP!`@KR@ zmD#69Ub#}EOnIGxE0O6@ZbuzO6ciu5_}b#V7hlgJEkm(0J{R8kKKC&9q}fX>WC=N7 zsP$2ooEX~uvig4d>f4PkuY{sFEEn}w#=*sNxrY-_kD`aiof{=nNF{WPzIPUPzfIwY zU#wiYy2zBvgS6I}zf^+5a}B3|vUoQ>A5&dCh*#`~56^@T!pV*JJ1@ymUX>1M@y1K9 zCOc9XcwnNB$+m61EM1R|cIbJs=A_lhK$<H5zAU!$D8_X+;<^2OE|>js!UHsCSNm_V zX_{$H59{&uIJM%Vua|=8UYbJNUwrh3_Zyb=U4*^0c<D+F5+j~N^KdZMm;m5SqrnbL z5&)}+ML-Z?y(cRgV`l&LfBBmTKfw?(Iy9D$T7u;mhxCY$PtH3QMbqgHN%4eU*OhU0 z{G3LRXBNNy@cn?1+aZl-CFw0!Uw2tu!c8yT=sSuhx#(7Y5JZoI(DgLb&F8ee*j!w{ z{e6SzzMeK0-xt`vREC!9ARTR2B9Qfj+(t;dR&ql%mibo;ti~YkCBT0F!3Sw&XY;8) zntoW!Y>ajK^dU@#nP6V_PD{%QwvWqH<WkgEP5TU4KHoQ=<N^T{oNlCPs<@ZNY3|B0 zrIMnNFv`kv!eTlE(ROPzvH-J|5j8qUXP5(e@&1RuZ*=qRG{HZV(P$iYxDY-#CnogN zI`q--bj*Ji071YNuq;mAXr|5W#kVoNufF;!cg?bU0Om1-#iiOEXAoKE{3w{l$)+hT ze0Y%JK`VR^?i}y_J0YxK_@ue=k*9P_%6I!`5oqd)2)Sqv`W!8lrAKg{tWM-aLQOE9 z+fp2FVuUBfZ<;3j$;ZJ)=jszB4^&{Ag)Oa>Py9fPsrzlV##++n8cuNb9odPBdJ~B; z;Y&3ueWUvax^^XIfN3gvv?fA|aP-jl)YyfyF|fB{v?lzD6-|+ApOMLF-(ou>Q2QM| zCt~M16s|doAKXzas@Gn9W#|ucl_o2eGm2r~b#Jb#rwQh#SusXhoG(!Z-GCvS(~aC7 zUVH7eMsdG9J>*!8Cfc$nFhL!-c|z=qbtWa6tNDfX7s`5kVY2PSgkDI%z4F?di?`qX zNp(Mshsc6czXD#eBG-${B)u1}zx>MLXTSI-xiLRoT+jM@6kN>bdeqrn%xZo8wO32! zuW0mkgX3bN6xhq9`FrZzpti`q;2lK(?phlGjSq;mpnn;1>l^>g;`LWwA4@@JXz@Zb zl63Pv$knW{lefaC4f{QDua40KQIcTyQJI`w>)N$z^}Nhoc&8?`P8sdBxBd1cb$l%I zvha@enUmr6WUq!dnDDtQgp(;#T-PtOenMlrdp%8?QhT+`oNc|GGe*o^rBGiKD&{zX z1kK4r+gVSkNzk5eO007}oA7v~`Dplk?qZ!n!cG1O4F%9TCB_KyiFMgqufwnJuYcD$ zy|UOozg@xfjf6qC-aU5Ka<`QwyR$<HZY}W$JYL*qBTvwFO3qq*_*h<<)y_(j>UUGb z&p-FV;%N%oy@bkP{Ov*bw%Qugz=jretI@swptza%FBiB5xjYZfec3ihyr{EqocKg% z8Er@0eQ~nDa<R1*0i5x%|LLPYE&lWm|1}2js7b2=P?=CsAuHxqCjB?J9+%FzyZFPG z-?pHm#n1AYKNsWv;`5Iee|Z0cv4mbu5E+(tD&pUAsC}0tH#T-sHzWL;No_g&58E8K z%4@H^5fVLJ{Q5WlIKU-<wgS}Yw0X#<mC8zpKy&1VP#c2KpTs<*diUxSl1f2^cz^XD z{_WJhJQq_CyD9887S?u%u7*Tw7y0+A#y2FWA;9gl*Be<$XRc+9ojbYs?3*ug$$YS= zgVN%?TIj!4eay9<r_)Y0(}cD<+~a(=39@5UzFZkn7(e^$Pm6!}^{<DZxWT@w*z>!P zgXJ;7Lt1}_K_E*s&^Xl$ln42#@8?Q*)L9&MMypvFk1^ivqfX*K{>T5E0I8Bblm7{g zq+8~+7$TH`M4OIVM=%jAZ70MqAdeL$Uh~G=br-0C;XnNSZx$bZ^hwvOBD^zL4qc0g z`~GA$j^@(2hc#2|-2MqCt|`OOjLjy9{!q~W!w)|k_ld68ia9;~F2F8%MOwWyYkkyM z;O0O*$lZ7`hAGhR-q&kB>UsjR>j@Sq#IB?2o3>B$bEb#k+u_6|OB1ibCO6R4wCXcu zOa10If4}&5|Nh@4aF+ElFUOozl>gz6A9eDpHU6wAWigJE;gkluCS`6GCpg>R1W{4U z#k=pmx%lMkZx;XR-~QYD=Mii0c>9evYw&qx@n+W6^9oGE)q5!f+{1$5lTMvr5fd^r z@8eHCnW1DSVkFY=*VL_a*47{L#(0*RJPTiUfKecVFKho)du9=6eZz7QK;MdnbOQkQ zD0rBectHo6W*t)=>l2Zq(_=B*n(hWa_$AIlfcZSjoLg4VncItnC7}V$oeO@1s`X6= z_}0B%=LFY2h}I<E(Cpj9SbtZpUR_*GsEKL$j+!pREKf)U?o3$jFSd>c#Tx!5c-&6W z*v#W_I|YQB8ayR2{3(UVMAp;A8o1<)bJuTfge&|BZ!j$E$z$T$35pTk?VrM_1Bi1m z6Kb;#2i7Q?k4y54Z@<X;F22?tB^gMh(VaoxOxbL^DQOqW;{5Whw`cy>2Pu#Ez+thT zz35M8g_|+i+rcB&oRPD%dNmo{Yo9Bf3)kFs))n{QFZ!n*>Wk~&WSv!$7w>XTI{S|T z-8z!4BVZ@?n$UEugJ_Z~bw*<(#OyhQo!GFX9BJ6Acun-9qm4b!Il+UjIrdg(&m!Ut zP@>UADv-Xl`0Ky=tHsBke-c;-z=Uavk;Dz&q)CQ|4w6KDS8^DSQP)Y~S!>^CGbT=S z#yhR~kAM2(;@e`fhppvF*Vrn3n@e%B7+c3`*VqZ3U~)DA_S&_pxd}_QNm=63Bp^MO zg2*xbAdI<Lo^re8|EZhLXi*S=R%Sz*242oZMfVVJX4ck_sy<46HW!q70gFDFw7zuV zLai>EF_bwjhu#<j3_+#7lwE{D3%nP?no0CH;d4sR^9RJ>C%yLKOA$zQA+D8lcd)1W z-ier{><!iRfC#B*Z34nmC>j9N|A;GyLtT_s+3%+_p`{j|jF8u3+5(|Ef~y-4RoQP` z!t{{Kuc}1_T_gLUY@34dt)HLx#GL>c5}j@>S99xJivZ1ZITy3oC~(ap65K?kE4wkK zgo$eFn>W6V8Q0<?0v4p^C*F*q$`V{}O+)m-G`)2Ob8%gCn?Zh72s59?T~I9rAVJk3 z3cj!923$!q<0e3GkZU41G1RH~Niq@Oh)He4QP<cD>5dX`7#<5!%JK^@T*)d)0ciaM z9EQu^YXYmZ&2iNQ<7F)pVkv1OtyZe0c*LWAVzOM5{su>9W6G*0kFe}Nf<|;!_XcOe zwWd4q<20`A6J4{lX>)S>-ou$1x*C(;Dvfoc1d;WuOPN3fC{8q4VHGIruJ9xm%}z}x z@7*aSI#(s-Ku3<ROP;_yAEa$>H2diC)oW>~SF;Riqf-#~#76hN8@_a&N4ZlJ(;5`E zQ;={i;(Iym|K81;i;rSRw_=d7jm2&$;4fdjocqOj=G-l*0u#4?0+V$SSVyVjzWeO6 z&!z|3>6qk~-+Z0cSFDPK7z}sCZnDS-F9HdXiZAg1aFwxW9zM7-v87WnWen+?ZxZ4O zN*0T(t|!5Tcfoh#CZkEiC)ul*&`vaVv$dhOuZxTQ_P4*C@4oWtD`U-1=3iDdA*C?) z=+V)*SMh_fLb|855v=;p{pquh$8|#~I>-gRUAvyOjVy<R{FxZ7j{CbQnGb{8YDyUV z=509EdHntV`PYko`>*~@{pP~IXy8VBzxK*2So-uK{Po}c?R1qe_Ce#+%Z+p2#e)(8 ztRWWfFtUUyYY0=9aAW_xADBKDFw2+43&$xhUndCu<A46oi+}hpzwW#f7_AlTCNvQL z*{IFbq<!b6yOMBz<JybS@4@2#|L^~5=;0_D+YOI)Tk~G${vi6y@s|(HkhyqA_%Cbh zs2Vs8lpA@S(%EF!1fe-p9|p7It!F!4G$D;#SYRq?K-Y+6{ZH|j)^ZfTJW_{~Yf-%J zOxEepZi2xX$#OiiaxQ#JX>J`4TC=1IRt3coP3|V(eHM%ixcsgJ4Z?P>aT9<4>%Uw4 z{*NDY{}wJ&qlY4OJc6Y)k|BJV&M7G<MJ?i$@v{_t3c~d~WG}w*+TuU_r~k6};=3Ee z^H$<Rkzy+>yb~UZ3#|v9r}%n_8z;kwmxIGtf1QskMTsxtnhRH#I!%IcM&_0&CVmr_ z8{khaeVVpOeazU6V=;mj-Ptam9R!4T85f)&XIB(7^ZI5RJJ<KZiurvngn5vV6EM5b z>r6FWgaxK=C4^{`1ktg(#S^*@WI{ZcpzG1X`0O__arGJ7$i0FoMLNMQVcAobT?%)v zr!6FGj$y<xJ8LX<mn)>7F}r0THWReZ<`A3v(eU|`1-g$HxO7hU0kpl17T$i$EnzwG zS)WNu<#HJ<jD->77%jbv(nhU0cu&xdAQQu2Nou7;3!=Gj4^9{Gqz%SOFxsb-Zq6MV zhPr`gG4sQO@+4rygd{h}7}}2Twj&s$AjIH$arSa7t42SlRqHRkUKZP_2vW>Ke1!Hz z8zdlfH9pgI&Xr(rE-S(CFhb6HqSp|<Aa$QbEPT8(k16+}0Jw~_&6v-6E`#kD{e?{S z%V~3ju7Eg!#HF^C+0H@}2jhQMkZB^S@dmP__S?fo!CVtmrJ?R5T<%0n$76=ZkgTTB zt#)tgC4^a56HCb&nie(*>ZAPCH?Ds*8tz~Iv;QWS&-06yUww6PE0^P)v|+@`D*E$3 z|MQraW~r^SHPYU<BZ_k|ji=$^=?L#|r;O0MSv4^R#e&9|Jbe5hyz9;G|IL?Q#_$u= z!Iz>jRp<^o!e5EFwNg>9!PUAE?AH@+8ke3c!;%6;5b0^SxTIfTfo^WG;yJWrau)8e zkhF%HA!vQH7e^Vnn`@SUd+DW`o(AX8e9lQZ0VcrRL?QD#fkq%b-3?AbPXL)Kk!x1{ zh_f(?<3Ud;zLUxwo=ibyYnYn4ZXGFvH;SECMnTkU)Xc2?+<$-iq}reu61OUi`T5*v zx)`9F^D&|4uU!iVHx}P~{L$iWLW}p|R6Ky^Ll!9aC)yCFmHBrsrQ<^Qh0eHCDPkjl zxX*KK>Df3;7k&;{+C;E4J4pEfg@8bn%FVk#h*8iez1)XKxw~1G7&#>iv-U(2taSKA zp*l*LGiz+sM9V~_p#4#6QtxIUoxuAO!Z?M@(7Tn+S$aHcW?GgV<f>1(*^YmTA&b4N zB&cYZ@Yor0)3f5?z<$=A*OE*%-R<?;W$1N4mxBA17q3o|&8>=NC0Cq1Fa{#N1Qszo zg~J}Q_%MRWG<{qqaJcX|Wx!0a)o^g5kv3eKX$^zNxcB_mkKs$;fj4wEN5Mx<02e)_ z39MzWnq076EZ;0NJa2I3<k`hHH}hzvRG#QQfph4X+kC6<tFbg|Ozl$d2IrJoe6ah@ z)8hNRrm+z~NcMj}>?b6qfeH>zQ`1)B6NqoR4U9zX%N+tYnS-YxP3=dBp<-TJ_w~AV zvtUdL+zVOn9j^&x>3@P(rnRo;SLFBCc|rRhH5KN(AH;kh23LmQR-Y=lU~O@>%}<{t z2O2=v_+Eq1)1DAp+-LeB(O-LQyEV~_PM1)zUdngX1|v|VZ|jz;CTT`8r`^s->zGqy zG{_=G^Z-$VO`n6*5RtpX05}3#KvJA%3RIUL8$>>y&sft!shnzP&SY(@hu}sjSpSKb z^u#aPH{ngAbU2;F2tn~OzGm5r`>jJ=(P0R}=RSwno}{y{pNP5Vq8xuk*N0p|En({Z zTo55k?yb%4tFyTZ^G-00C}?$03=6@EXV9S6BPOHB^|d1Gz(x&#m?6Z%EV%a`mDX%j zfcV3yIxmY;8I&hwd8?!Vg@eE*Bg$aBlM$`h-;)r0roXygmOxT3f-EI8fhNI0=Z5_h zmdC812vNO6U+Rz&J`w+D=V^)oA+x_5#5io8l?i4NZ`}Khx87`fD~o^p&F^X{^ZB^R zq~{uOedTiQgoGW}mu#nv1pC=w{UpYICQ$CzaPwBx;4%YGM0nE5?_>?@ppLNa6mQT5 z=`aCED5@>;n7Xp?MF!`OOpaxP=@ay7y|`Au9nG2CdnV2Q)CeNkiFqV?_zb$6#Di#% zwm)@cUHf(oeDCCm*vdjWo4W?@!RW@)?8j3cfncy6zH`~=4=6qaKet+|s(daOR`<OW z30+P$6HJ7Tpg+rvyN)7qH|tN06iu6@c0R@NV)KZ;zj=Gg3m%3~|M1)Q7k`&)_f|~) zd^pav^+MOUoItwV&y_xN>x<)cJ^xMarpAG!;foO+d))mi2@$*84zAkf$gbLs)+K+4 zW1Y`EcaVS<3&W2lK`Ho9S_x}qA71BSSveLwvS#3x^lM%3p@-}|Rxu&Z?R%ne^xNSF zekHL)_ZL}nA<`&@gp^p9Sw0GijeB27(Rv)$*pHUi+7noqMPx=4CXG+3BRi@E*>0|= zXL**0NhJ&G?N7*IC(CuO^Wy@0)}gV!A7xD|1~o^DA~H2wo!!%Lf2{L(&Z)z*Q*{40 ze7x1!9~H|w_3(%Kwyr;WiTR5$?$p6Vf{M@X7N2`og4wh1`B~<PrwP?!R_fiJ)nRls z@6wO6<0$n~_9YQLNhzRApWI&Zbpn#&XA<mIFwt{wE8cgiJyAYSpU)L~;f0jOteyC} zR#A%DA4f;0TAOxJ&Or?)#kNb+t9r!qI>-JT`4caWnRhTW2NNPOr_mB<-yJqWx5$mO zYxCqW19FJ)`q8&dQ(4Jp&lic&ay@CIgW+DtBwcLhrpg`iEP-^h_=u*3+N~grbG`4L z2Dm-+nKsShVe*|Rz0jzE6EQh6XI?mUE`fyNBKAJFpCD@dd~I@KsBLMOKx^19Dv1#h zJoa@a!PTxB^Bt3Jzwwh?iDlJ9^s<~*1G*6fGHP;;gzO<?Yg{{4zog9N!<Z)RhtSk1 z0<-3FJe`zRvCV=xXq|nrJ7lrd`baEFPd062__`r22Ab=9?rlcN7Pz+`gd!_$ufu)T z+Mjh&m<56p44qEO@hPEf8lt`NQF|s%+gXCjbv#>!Ht?%yO`8c$3{=aHhY^n?2=2FI zPh;F&Ls9X=G&0PM?^*`UW`D2$@I5g-_okUn3UqK5i%`3?5hIr}ENjoyMy+eU`s%Ba z5z68THUYk8`+pn*jOj+*?NOS1+99ne0VCnXzPUJJ1qqY(l5o=5cO!vDt6cWt>sq<( z_>|XHma&lI;YgS4jI;-e7@rx!Rq{#eI(Po!^in%}?(1<K>N<S=`<v7K8lFw(kkWN! zu0^54v}6{Z=E8`eABE5KOjaA~jp7nDj@#*e8tAtPw^v>&-8`nw8lg!$9h$ZRO4*5+ z!jFwpxw(dscBWE`SuT^{(06Itd?1HZ&K@!c#hwJV?{=MoG-0@MJjr-3W$laW)s7KF zxrC=>N@p0U2E%2Xkz1PL0B5C;Pl0o1;Xdmz`?b!CGWoDGTkUtr3EYDO=?JaXa3=xu zQC5tu=^hdXcH83@C3yV)!#_lCY0I7Ir=L}W^=X1W%l1(W=bP^Pd2oC!i}e1*^9iBP zvO?4%)^xaYrI6fA_-lt%+y8O9%d`V4icsh^9tU0oS*|;+b1*x4AiP=fqovzxyl7m& zUF&!X79O(vOtc^G8EY^eArV6Y3`<99Heu6|V^yQfYHcJL13wc6;2Da1MgjhD+Oh0L zv0I)Wu7CX*%co6{$5?}ltUH;8&Q(Z3mZ@5>n_D-kQTtP!V@hL=d569UB78K#QPPh3 zOU2-liYSM8#8$k=uEhcm<IV@s@ttCzUw!xW;?B<fvXu4N%Q8tYNS1<E_Nd;Bo01Yl zs1d;8fn2Iz-}*k+Sgz&%e$raF$u-JFPhggv62DmzBIO@lJuAe(MYqi8EgaBi?sb;; zQ%LW&Zk=cBYdr!!(cVr5R{~Aq$$r9B0udc4$vs8_rRQmTMN3ln@jOqDz|An|56r8B z&{iB*FtdW$OmmRCzZv($*a#>=YDgcnM{@c;;q)ZNq9~7+yp<d4s0AODgMK!IJ(~;Y z(N^Yh!S%;wRS9N3$Zvc;4OMs9SpT@*E>@qz>VmM3J7D9+)gJIapUeGou4`>zUIDZ| zreh({GN#phf6@rKytoTzjUf)R`&j_Qte<Txvz54w6ug}d*)h_?9N9)kaI<jcAqdt5 z#M7M_=iJF!QwXPXf(J`ROvEJ6?l|d>e8Ai;bGQHvoP8eA7^TiXDl<rWq<s1r^UzP) z-K2k~t?c%<B01|I(2d#<lw9u`OG`EFur<rj+dR>oLmZ5SrbW2Ox;ef%Y(0UHHI&p< z9Zd+WB)CpxT5oLB@jUB~MWS~aS16>kj=P=Dv$R(}V_g;qB1OzI3@*UH6BZmZpLQzK zkC3}jOz@jB=cJyW%B|5dCU&>EndJmYJ4^ioHJH_Ho9|hb|9%AgEDLU>dI>_}WQxi8 zOD`;*FBW5l&Td+o1PvC$1Xg1r{Nromp6#q6+mqYvBiDz_B^f|EJb(0Yea&v)n!xq3 zu4`iFA3pl1y#&+TJo{<RD-lOV`(pDT;guCjijV6cILvtU@Q4+ADh4iLU@Xa}b@2Y| zv&HSV-deo*?%SjBQr5(WxP~wWTJxE*D&Kzhow1lPgs?9wCyP2kIr~n*>DHZ9j0abA z=I}46@APF(-Ao9n%ON0G3W{>YzE-kcWKNytCJC-%d3J60)nUV|AwpKtgY|e{iNxg> zD`QA;Qf$6n7Uf}Cujpd>uBENs$UVvB`eg#>qhR%28M7?3doj(AzxZPD@kcr`{C@HB zn{O_D{>xu={iUngKGaG*X|3)nc+Ly(C;@aYmz?^QD_5#}i@ARM`DZb%`VEGcCMZ(? zFi!Pet^=<^F{>KkvYvGU|9D%T#=uya=xbO|c<6!OMF0ts6oKwd(4eQCy@!pRxG@$n z;pE!m-i=p{TP=PzL)`i-_k6$@E0^B{dtnW@&rz_IBxQyW_tGR?r8IRgeXhS#5@cQO z2M>zolj^tj;}`d`9=}RZKaCNbxsbcpy1O=EF-=fgE1@-6pW%+lrX#4b-p5N3-Vkg% z(eEdpd<-~KW5#fh=}fS){w7H#xU;&arB!ek??~5HOZMt(uVxVFXdVr=W*zy5FC~1$ zYSF%YfYsn3(kw0o7~{df?}Cr?Y~v$#x`)x{ajb+_F+n^sSG_Lr$D{MZgcq1du+n*a z!WNYLo`f0t8s6PK#|sop@RVe3Boe_%+nd957-^Z2<@ovqMmG=ZW0fBsQY&_J{M@G# zJdTLQUDRt@(6AU%nF~^8<+M480#`3wD%ckT>^nCSMgX@{P?}c!AkE=;nlGlqT2W}H zLFtavoZgpOsVe+bPdA>Vgx0_ZFH=rSAq2<V6VR1GM~jXg+xAjO^3l@jX@{Ddu7>>L zV3V?#`K(xVvkORj6>mBoqdKu!2WoD&(mS7}@i03f04hNUGRP*KxYuG|OD&=WhL1~u zowh(Ln{33^H&YWs<c*l|q{M~*;L~{~ltO?Io13!@wCxbGYcXBNJr-<7;E#X}h$uB7 zHB%9T)mkHfAymtX0J+nwuXF7TMgXN4aGPyJP-pbU+7;6>AEqH_rS#q}$geUw>`w!0 z5149eGJFp5xSk{xii!1bo9+}JS!TzjNI=}y&ypnUAbV6dM86+HrHN&FPJ5DxF%b0K z!{@jN2#VvmKul&md*Qj1g4M;<k`DB96FUr~<8oq67<t^WI^0o!R>I585bIR2uAC5k z?qKoNAOE=co4@_r(Mqqq_~PPx!p%DF#@JtYp`mG|LZ1t-SG)E``#e>^`fNqm$77U& z$l^oX6yu&tP#9gZjNQ~hyZby!1HD(BniO^uI=RSnA#TI%LsCV5w?Bo<(ue={zy4h= ztY5dElVz)2ip)}`2><qpVgA^Ii<?(A+xcU;fP(dAG(k7ix6$te$WHF0Z*OLOR-}C) z;WSA_efCV}cB$ADOW*kD2Wh3Uun4({4Irlgrwz^Zzxhv#-+u7^cpqMV>1C3Atc}}c zLVcFN(J|syLY!cQ^MnV+c0bGcljv7s&O0$XLU7p$yyNe_T-7UkWgey|5k$`JS$jH{ zO9u?O<ORM3vI*T$5`%-jbXp4$NRXI|O^ldjCy@Yr$4fxFX%FyxtkB@+Ck2^h<)^)} zjtHzf1@rBRwKcdKy~zZ{gnh;|QSG3-N7>UkUM-rKE5^JZ4O0l$6SCWRaGqAoIcFOV zK8dCjle+&}F{N_)8kQHI<auZ<C!(*~%FWmbLq8P}qhZP)S19XeHT=;HA=W?p@}9}D z?)xk&t^j_@QnAS5Ne{limHRCrU;NbChvqsr9-l7SYfHsYjhxm|M!DeYn7jm%W1Wp* zj7FIp9@a&oJ&Olx@q?B+L6_<C&N6-#FXF)<I9ED19dGtp|4y*uhC7P?M6d~`;!%By zG-HrZgk>~RmI$I4&v-flbnl5jFT)GqsH;s^a`X1umnXRWBT<mby`~-kkO6Njj9#}; z!F$Z8$q@5!b3SEm0EJZ+!o9W?bJ-SP>{H|NYqRG{+oWv>9!i}QYk=^i=7|pZF$U1W zhUs;169<shL8|mXgyJLu=-Skf{v^y&(s!V(Nzbw1G;p0Jt*uArSk}m~v<TM3xIX%Q zL~3g%AOT;ZgL_g?p$Eahzj>4}T25h2Q||K)*8>Q-G`P#UKyblWx{ibDGc+Br8{+67 zR33xTzQgH|mnh^wA_{*6OI;8UD6Iq>mhI|YtNTFU_CxSvW>Yg1+-boq)e*Ga7t?ge z5PF6QCZsS5X{`zvrNW8@Kt{}FT79&BT39+@FbK&YU`DmPe=ZTih)^ZaxmNF2%Oth< z?76x{7aKT#vF_Ss`$**A9s?XmY}7Q%aoQcVe?&;TbqBFPzjJR2YH}Ou3%DH&2r1SU zH=ya3l{F6B4eV-jqcjj2PoLz$Pf^++XcJ^yzMp<p%}Op{u(}_PZ6xG0y_F22gTqS+ zISiX}wI0lA=O-Iwzh43My@Zv5z;V-rW2|EF6MH>htmo{-D$?68Ma2D`?_@)@--&0& zRCls|xmQ?sU+sLg`1Rla{o-H#%YU6>lECXaG-EL_FrMGD#v~t@ne<%okxS>BhT7jA zm}`T=$6Xq*reEKU)=8<5#?1<XU)Qcw|I(Ru?Bo8zw9us5u^Tt)2bTweg${SPQ2)z+ z{hOilS6+SvI6LFqNqzQKjQc_HA+$9v`}X<lpb;D?7~8>6_R}!G?xUuUn~n9hzrH`& zwUj{2|N6Jr7q92iJD;0(H!JIY7W1i;Qgwx2-n^cIlmZ)1(T<6WaXKY*&I(bx^l(H% znia)bTBiIG90|W(w+6Jf^u~05ID=+`F}ig=JT%;XXoIlfYSTj!W{SfxUxXj<yQpcH zxtP>p?q4oEJ@vx66rHkm6Go52V=hJB6hj)1XHoFZ%<Qk~aaM~xo(LYSs}tR8yQdM` zIyxL?<qT6F!O_VFCmrr5iOGKPiuf0L-|e7|MRO;5f2+gUk(7iVr#Q;sV|@p`;Q;}n zi{-+%?*u8>?I(z)HZ9x*qx}>ob&ac(r4&NeOawM(C&q=g+x+kyQ>fEnJCg)vd#4P; zH7@79c!ei7<<=>gfTxOmb$0Q2wUmMbhMmnkq+q%deB#jYpuX4NXhqB(pCtc=@8M%$ z;f1!A3xWh|i6N>E$fUZq^W*c(?ZMMG8fo`(IO0SCsngpn!IQZ(=D(~c-4SrCsjUbR zZXPx!x-aN!#V5_L&Z0TYJ)rpXQR%Tq1>;yQm>LZc1Ct3e1FTvof*hYBCfu_n1Y~Zx z7)rz_SbbQ)kTs{0h_w`&^|>sQ5Kd+et!Fb!NTDg>#kdtjN(ktMrIuD5(8}=`?OyF! zVl;x8x-Cf4oZw>G94!+e@fYi-<ZrQ>)$B{g!D^b89#-5t>NNI3LX3CzfB-!^7%nGB zK&V6!t-1Ad;24Gt>alj*+7Tbb=`{gHX~4w9S^|hxotin{ap>J;{!gf_gv^TTo>rV} z{o)L&=TDy5o<VizV|wRedKb&oxm3{6C}eR6Q)C0|;P{G!kM2F1sWrED!N^B_juy64 z{Aq3NassLPk4NY8TMP2anu`##01Q_%&RM1vpZXMh26r_?dbv$g#m<oKIazSQ6z=Jf zw*Gk87Jq#Exlu6$4AI$X6uO@PInd)iMfyQFa5BqU0o`*6Mad-Gc>>FKv$`){ikYMc zv0^1IOo#VTy2=o0j|T}p?&6!dqjnRr(&lBy>0S0LJTt&f$AC@Nb3(#kJ!mNP)uGF9 z>yLTvB^*1vI<Fg{eQ^Xc?K9Agb%;jRVp^;sE<c3G+pxX;-QYc@3|D(&UI#-7B$(#c z-&`NqJbtu0sn~EWY+Jng@~aW{QR{uY`1-4_QaUQ`P5U*PTYtFka*?qFwOLY-+7V2) z+aLe*@i1#i4m=B!*%zFw=|^kBFhp=SD2<}IjPVqMP57TraoF8#a2rP7njhTRo7P8b zo$o8xuGYTk%Hoe-Utc_Z@VHi8mlnTx<DJF*;QW0m&tz4hr62HO&MRI5P6F$z`At`L zQir;hevM1AAb@xkV!VV&d)H5pAn^eLXq2$_gMV>>5zagS(E3L!0q@X27Y}<{%Dyh} zoJYzDWIBe_!&A5|^}{nBTV~i@2|Ljo8|WaOX1v3b$_KRnIw%3*uqmsw{!HbBNzA$H zC#`y2<|mpG3vHnUh~MX5^bp-sLY<{BNZcu57u<V=*in8WGZ<Yv8}2<Da%R&MV3E5$ z92~Dr@LKzUr%<RKX30K!E}Tq|hK$i(iYc#E0%rJ$b8o+fm+CXucH@(AeDoE4iw}#@ zx+Gx&&RQT%tyb3Iv6Kxl_8HrfC+k?RJ!1`Zw#q=99XJQ*5xiPCEzb))I_y5Twq1Iy z02M74Qx4rC)(-Or#!cEi4fr(IwY9XHe3pC`2i@>-{>KDpAnQOPlGPS>ly=vWr?^xz z(+A=q0bT#4)!Y`Wi50%X7`2Is8)bLwB{?63FgMah@0BWhCq^J6L|u}8W*5uUn9AIc zWv@eahI-SH_Ov;IY0}U;z}4bC>lLN~wzfT~b7^8(XE8DP>&Lp+R){8>Z-fEHA7o9` zbo`1gU5gd9OpBE|8*|Q2J{7|WjJqND?tG^7^wt12LrgIhhpl>E_6#kK8_QfCZER?A zG&t~p+=8HiZd?%4Q>~Le9&&IKK8_m2r5*>@=@#7I#2uw!yOeD;RfXsW?kuP{M9eQl zX}^R|6j-`?u!<m`)kyIuE9i0WefD`pmQ}C66nw|^H-TP$_|4kLG@9X3%rbb=kO;Mv zuFXxQMGOI?P%T3O#DYJ1O&|u><DKWmCaWtguz)^hvEFNVv!;?b-)b;BkQEuOwa^ic z#$!vHw>OOcVJ^Ri?s31pa$`m?(nJ+G8UsS`4qV&gvl0uU-m<TPWmniqlc)V%j`_cI z_3GlYTuc+Q={izVxnwZv?c!_aE3}j%e$=^QRESzkKoD6BPYUZ0b@=r-g@jNsVtg#s z@X5qaRxjpsTpS}orui&u>RCv+ed1K52{O~tl5=|+Jt4N{XCc^$pRuMf{vVaBX&@X^ z4V{KTutW*Y2yAidT8yss-piGGFQ&ep#mDVO`&SsPrszg#>Rgca;dNHR&6~HXKl&yd zjv>eRE>&C}C(JEdA@GB&k#nu5%uCiB!b;U~RD+jbjn*hm&#a?!=H5ee+Tk3FIi2n^ zd*Q4Mu?NBKLCA5?`F|Hv{^r)r#q%c`XK}KE%$qkV&v?8z6O%d{zbQgFiqSfT^}~bE z_%b2-ZF^H(y_sO69Nmx4j3*+zEM(fgs>7;__2m;4n<ucG0c8~bGUa)rYuc;MBO0@E z>+e2I>BYw|+}=Y|5@%#2Vze~=yD8A?eU@wfe##0ZJFJb$@WWz6;j9?Ro$%xK!vss$ zQRsb`>&%(O3W9(42+t|mt0_jOw{w9%Mn_#GMKz`}--B{pswb|~U+9~Kn7}f=WiwdE zJc4xsiFVsh9*Ieu=(Cj4@y2lRhkIjbbj@Rof&_|-OSBP6@e`abz4FT9YJBfpIC7>U zR2~8X+1XEqWorq^h9__51-f(lMn&MiFUjZ2;Vt+vkH~Jq$w+&~!s%S;$I8NcTCxzl zGn7xVN8Hy|<EQvm5+XQpgE~ir(PQv9_x42i_Fm?-O@(}z3%46A<gdLSVc$s7Zv_ye zfuEKcw^MrIvC;wU7a-jY-cHOWR<2`q6Nxh~W1yLoLr4%giD`N6@(^REjj{m)_<CmE z$&(wkjp+55)ELUG!+^cfj&m*SB<;6awAvE^QH-2Mq#>m`722hSnh#^T5J*Own89S) z1Z;IeBr!9b4|<q)n?B04lvZdh5b}7jg4GatJx8%>d+l9l)p4<wTDoya_-zMtxj^ih z`}KT^SZJ>r{~e9ila|ujAP(lojmYKI(E51$QY&Lo3iJ;4_WK}W>jF-~3XJ%*RrDLA zm)H&gBmCZ(SYEL#t%{B!NaqHD!FII4h~=m$i*eIQ+*pkO?kC`PTdzsD-+q<Pxh@Om zFXmE<!LuZ{q|~QmtXFNV-efaOn%EnBKqQ?%;iey#n7$K-;98H!YCP;7CY(ZCt%SJZ z-~|os(WASaQyNo5%lc+j(&jLK!u#%>8|}8{mfd5wv-|%0>oM4yW2qg7TY{fYQW_%g z!+qI)K@UuVtspT;cNE?rw&U<AxUoJZy3BCD;0e`rxV{-KE8tU8bw2zc01z%~O^l5Y zcNPdA6XaGQP!SSK@KJbo*!@p*+Y{}_j2C`>h0I-Pa1e&CB|N3G>&E`L+7iKP7SW!V zTMSe?Ch&ky%ky3`BrzvSN=GtQ$0%2{?$$Uy|MqOw&XfXlecx55qXDM9+_-UTtaz3T zg>S6!+*+6~Ym!?%0Cs)x$n^iN1s=!Z0g^JTo!5cD#@M)XF~1I{uLYy-r=-CB+xaM> zds#P6a<#9mo>?3wfG)jsZE@w=mBnE~_(5j^1{V`VtG8p!6?$()ua~ma)=TfTuNkEs z-AW$dBIc@-WO6H4-i1pwDQ@ku{m`o(hw5Wc!dkA>IltCO2;voez3U}7qUR2CGRe$) z;>jVzGaV-Go$MLh!-FQv6drY-se21A005FeZNGvdYW~o%Xu~<r-usMVUa_w26hT}W z9zJ8i#4mRDQ}_~uL;LZ9mFRG@Ys1T9@dIZrMhdnqq1*KT;Xyb;FmD<BIbp-_s!k%9 zL@T|AmpBLK;cO+{P-+#gqZ4$2M*%|YxAWjFqJU*hbzSY7E_N;tI`@q6+{`R>?%(#% z^|U~nbo5|yEPCF{OQoh!{C40MZFFE=tF^|{p6Jx_@NV(;a0|-{A1QBIit!LJ0>rDI z^>?DW=MVqjR=?Y8V3@twPetS%AP(1?6SVsQxTAfAWZ%`G^HK*vjO?cIa0#pyR1vVs z=orn85O^9em|&9$(S_L=Vnf_?&qAO_0p@Yq2Ie%gL_!R%EwP@x4qXfM?ONqL%}sPX zpfO*yO^^L8Za*pIGdQ0~^HXp&^&3fe-L^A+(m)e*9jN?!1+qF1t90k$(!pTAXS*D5 z0IC`YzV2}+#C*+CVP?||)@sK=$hkj8fMaq?2;Mn(t`wTq_c2TDWTZ123E+BspXzS7 zbtV%i0roK09KU&3(F()_2<;FoB4loJGeOW!4ccWLJ(<io<~F3oY>qR7=L}*b?UOr8 zTahPOX3rvwN%>C5(9jXVF&sYxUKXn5p2~Fqai*O~YrE5#e*5(owO^@$Wq*$#43<U$ z57Q})SvOw{+$FgWA@@dWIcyzA!4|<uOz~Zn<qw1VodVgr2`BXznArHIvw%hjbqxZ5 ztZ>aaue9`oT%aq5bq;90$<ulo?mW0#b@+qD<<gUBWnDgNIz(+hhY6gg_7%)LrfFyw z3uKEIF6Lq^esj4NFM5k<f3F>io^F5+7o^=f-`gAYMvF*K#k5WkEcpQ*=YHmfqg4}R zn4I$lQ?V9phyL+*zm55<)*b%E#fjXFdLl|q7w4fkAgI&11jQcF1Q_UrsMLUKXaAtI z*0g(Yam^vm&dT?o2>jvhq_C)8!$dr+VT3~0m{vZ$ulA1nZQL<2k)>-d*pKj!=E5=7 zq>dgmXNf7!!7MSZtZ9Q24RI4X5Q<TE879fy(~E9AKj-g0W1r$I%WO)iMZK1wQ77oy z7jyMK|MJyI<$YYQ$*pKhqJfy<lZuuxs^hgQ(S?5T?H4ITon>pETeW{M@w|Th+p_aM zT)gv>ck_l^s7|FeMG2r?9)jXc+)0Ybxz2r8O82-p``vL<KEc~rYEH|-K8hEqO$!)( zDEjDE?(U<^Q)f+Bb0s^gNqh(|rj{#wwtouf#FwH;h2SU7$K<=;)4VkM(VR)7JV821 zWOEJk*SLDC^Gt8=e1D*=J|oF%61{@yz#em_g!DaS=}-Ee_$I{?|DkAFwrdDmOp+8u zJXk%=8sRRRBJX&c7@L?I-geOU4>BIaqe8?fDOnp{7jMowRO~ukSjd2Wm(k1J@iYtX zR_WrqDVO+$7`o)L{S1?hYsK4x(ROP;ik`l$<mT)PxruYT!dqvf-<-NXi&jr5OBSpT zJC9|SA_ygzz@(q;a`?+=2i!04&Ookd@6iFA%^h;SRwGX%P|Yb798P6?H@ctYqMw%G zSlYt$r4}NCD@`;YcpjxCxF&0fB|<AC&}QhHCG;77Zwx|q(4!Fge!$><vpn4dRG6PQ zn-s4lh&er&B3FcjgQJj`cI|rHOq%L#6(C+~!={|db04PAwbVg8?r&++>xu9mXM#w- zUfByExi%0Q7a_~$c0%}08AjQuW3|nG0Plx?hydf-O&Fa#$(o2s=XQ_|&8p*8+sS;t z6GPNz&5q~>=Ev`V^$4Q0;=V`N&@{n{#yz9Xhhsy&_U6DsDpmVpT{7a9W4m)9MN}%S zjrnz~lWCMdJ_?SCV0Dt-NJwd4gZPG#cfIx81RJG3K1~ojD0qCoo1Z8nY$Mm2<d8{I zhrm5)>Z}FhJou4ygg6%C6&w}x|FJ=+gpl(Q^VtjMe$d!r!ZFh+jEp&m+h9t9tzt#8 zs&wh){^LuhU7l>6PwRAGK;5ydq;XwkhCSPt`W<|75qe<EdESdNtS(-?)<}YPUM*AW zWbK!pU;N?sA9Sr4ariJv3~AuHAM1)S#M?ehI+Z%TnY(zBFA{Rb7u;>$PYqydJ9BsN z1>BA1__7u`Tu*085V&;pGX614%P%uwxO3uGolLUUc2MGm0#sI?lxad^3PwjTq&+7L zmX=G0(mwe8+tgeaaZa3rV%NPfM~sNjC-B7Dj8GxK#5@fDTaAX$E#|4@LYo)&AXB=; z#7p#cGX`TfI$JXF0@201j^e0p@4j)qCDZFWG+S$fe}q&7JdAT`IjGl4@L#!Fuf>XU zuQV>^V$CfR5NCq(C5cLPvsV|kof~s6xIRqDu+PnKgmY;(oRg?>rt63eo743;p7Oij z{jT%URsNv3+}o3NhrTFdN4b<SXnQv{!(%#hw@GeZg`L`jovHIlNIMo*zLl}uH*!I$ zHJkmk9ga6brsIk+%T`0vjn_!H?ua7>7c8^ejext;Js$RlY{W!a;0kW>8l6vg45UA+ z4csh-tFGpB_;9{#wePdUXJ(i~jJ|1OtPqyb@`2mAPgiwVJ?xRf<%vJc@BQ@qtT}!m zCbzYfa!a^`)0E%g6$wUghC9;~IvO-F)+mmh+@8CcM2ER}Er)_az!ScYbGZ>hyeX>* zCcWaa^BaN}&kAQw^u6sA_M?Q)Zi?`|{=Ru%r<Ih*S`$&iCaxb0v>)5ds5x7L%9)<( zK-Ev_41<RgM1ya^!6UiRh60@W1vwW?KO2*6q9@nw7QDvHijb@v!+#ut-zm_1xA$2W zW}MTKPARUAN&o;r07*naRD@s<ggb3XWPK&T3(E5g9wu;CM@Zzd!0@{_Yvpbl%UTT6 zXk2qY#%J5-AC7rfTqVb_>rI!~4uaPAj7HfWWN}DWRRD@so)K;xz>|=~xMV?OV-$8f zjFs+LNNUnxwbXgo;T@^sk4XiDTyT&tGq>w3g&X(FGPb4m=paG!<S}<r!PfloW2Fr7 zcb^|Jmbf;!5eRH!g>|$x7JOQRgq(t(D_v_4uQkw)#{z53VpiY<=_DfXrxI+gC7Xwp zvL55*I$Fsx(BCS2iJZCzWb58sfd>)BQHT=ul%kx)6Jl;<RpekB<XbJ{=Und47ZMof zPj4^2OJO)D$a=7s5ZYmdFt6K3NFzWx6BausCOKl8MzO*9WUw`0a6M)-^;^N0hNwy8 zlL(312L%%{v{R|WBV76p_o@!PeCLUt)|eLC@7sKT)jx6fJ*|n=u}u3Nbr0ORF<G;D z&L;dXR-1C6^<PxQe=)5&t$3`7?mhnJ)@^z$UaAdI`o?H$tu$d>j3L;h>y8`MSr8Z! zAZT@JTlmzuR^XU=3Z8-8@bO%+r7KrotZ&`r@NJp21DCkyST4)fFzX`-e*4?sb(UC} zk=X_GqciP~RP-y02*SZAy6C&(4(t0|DwqvzakX(GIG*oI5P&OVJq;1}S~NSZvp&Hh z5^E#0Bp9*g5IO-uLk71CSr@uX7@JPxMw6?l>zJ13;3Qn_%n(z{nfndH%*FJCwcXml z1j8eA#md$jFL3c%-KH<F6zVuqEMenx3fXGeeMgFub8qGG*sl{k1?Mn25Nq2^={Ol2 zo*otx%4;$VH!Dik-QWG~f1OV4AN=n9#S2-vZ@vE7;wNvvJ1*s!P8^L{bN}m^!rFQL zV==*xKmAkv247lSzIJUgAa!SmC=w__5PjA;q0t0-Y<j7{_3{+&hkM-e$LmbN-Odsb zw_0r|s6xysUhXx*YA+@{smjsBvuN#EZmPqS&Lm$#G@g~kAuDt&fN-!-N%YKt+s&e5 zuw^C80lW6>qd$8C{K1%8m;y}j<9V!Xe8@-r56%vr^f|EWL$i;k#qWJ&Ebm@BpHN=! z^I!h)!xBlp&TycNr-1Y!f@m)x!)hW-kHSq>nb<c$w32Y#Xg?SF{N)tY=Tf9jc6K|t z1W&|cPln(7ji<P?_I)YX>Fqsvw^&hP>a0*{?5oKL32Tbr@q{+qwR^S()^stxHri&} zK_85{#e4+Z1Wr}#-b>)5+Aj`ilWo>OyF0ypJs<9!g7A;KLGX<T3)n|go`67VuQ}9& zKqs0c?7-5@X*rJrpdh49tk8illC{GR%j}(ARxzKF)#^W$1{X6nrb7D`ZU*-xd?xFq zb+dXP<piSvw)LxH*a_jH)#(`9tpjiV<$$-=_4W_TW{VlIUQTC42_(xV5-WlP_j9T3 zrXg+BdHZ;Mn*6SC6mPwoPkd9e!5<#(ad7ec6nzdtwI8)ow<Gv(a#!7o30=svzn8Xg zuj@We;9>AAh?zzk!=Zid#Rw0xDi1qAf|KTZKSI(dQk6NOBuh<}p-#n*Ab*)T4}ul< zreLZpnI{p(VdtmCisqBtS`su?^A)VbeD-A<^!oEL@}K{tqDw+A_tt}g;JXQngGb_X z%<J%>pKya)W$IEAhzG&Ka62ic2Qi7&f|lFi(23R^Ko|GZ0F9Q{!Qeu%s4KZ_WZgZe z%KI=2>`B$bTrIiz7njQ5yIA}Dt>Atm7viJ4#hD^t*59-TN+_K_pT?c0t&*HoWk$<$ zC0xiR)3-2=I@3V4>1QEJiPbvhlQiVjG}~t>5T=2i=qZUnyhJhUvF(Dw;mGmLgj4R; zhb1zI6|Ke4xrp}aI)6K5>#j3vKis8p{%I$pcb1VBG9D=oiY{4BG9*`ySB!e==HfS{ zZC|`lHexjNea!XrMrq$-E8+Bo1OlP+G?xy%W$EAyGW0MN!bveAi)T{oqbj)X;s0FB z@PP{i?r+2ae2)T25D{3DZ8l$_e<o%SeEX6us?X!S3O;M}KSGQ4ynH{w$wcV&AGLB8 ztaTgJ?(T%pw9^U4xt@1}%dvaKpki7QT`=FX#hrLO_EIKv+P>Sm?zFC*6pIHd?TeM( znM-&QhZYy2#GQzV=}htEm&>l%1fNk5|Kw*sTRixG++Y0im%l9epy74Vkc`^p8dIYC z+{b_X<Kkcb>wmR)Eur;XxbgKj-^>6;&2eSTl>?oCNJ+w{;BFk@PynTM>_nSfz#)2Y zj8-CQ@vTl_>dj=p8hfC-jBX^)%Ft!WKg;uQ5bo^V{yt&Ue6WOd$dIf0?)2X~?2LBf zD?CU^xk>ssN@-B4z!gg{qAx<t!LFqk@DTCn@FbWtEJIbi?@_oFXPq;L3j~pK8y8}* zCSaGPH+pnZ7TRCep#)mb=YRae;<Habi`N9NXn?>|;{@l`Nlrh`cy8!Cc&CS>a0`8C zQsUzQdl?N+Ti@=Z<)mS*H@x63L!-_tyC?6B1*_x9Vb=Ceu|i#S&Lqfm4Y&TKMKr&S zAcFVR-6c(1kd_ilEviL@!~$7TJ$LWEvbgj0S0gb;OYHNTNyF2ppDr#J$kP{L?MzH* zyLmimdzyi+)fRp`6%_jFI6Xyd0d2ImcKJA>+iinfGrMi}?BV4Qvlvub5!cOz!n{oN zH-GxmC@w9c%`PV%)|V;^hUVI(BaAGu1lc@79I>MHe8Q0QY|?w{+=a=^>ZC>!J(EA5 zMAqg6VM>qQs{K%0FNP4a4bh&q9<D?+O@f}&B|9WPSx4QgFFijR;ia_kGsUyUg&7jL z-{YNnr9rNMO1q$Ca9tXzru&gfV|7j9J`h!WL$De$_ey^+1B0@76qRlS=aVsjXE9_2 zw<ki_Rqmva0`pq$TAB<#P1qmQN2+s=XgDDfaAUpp`Czn`G#AW2o8@!reAVtD<*krt zEvE7Og&NTQ^5=`!>L&i^?#|+)KYh0NuD)SAoe#xemr{aYQ$Ci@w7dk^nDH?S^*36D zT<pBwe(jYq8<(yjg|J3Pi-ElO;)@G|&m@X`^YxdV@lspIJh@ch9Kmw+%5w>@>uFF4 z<94BUnXwtZZ}RWet95105~3N7_6Mag+k}D6;CFA`n9(AVEnZ0Qz4_X!)ysU{wNhaE z&S=3jO3XMM6n_yQC-fesK|V_e`<)fnmU=H1gweN7O&&$~#0@3Ju#7OH5nPZjIJ0Wi zLg4_Eo8{Q+2JV$L=ALRw^u%-SsRQx52(@bxLM#*g?`XGAE6^j@mVzYW?lswi+%WKD zTyJQ$dp$w?F-!GjYHhgOwmJjuk+Gt?2LUI3Kyc|FckX;$7uq*&vst~2-fDyjZM&P! zz3qPj)Lq{?hS^t)xLOvZ%qMs+M#WN6ZU7ehrM*A9pCwsezMX{Z%Ejkrh@=Lm-xB2g z)W7i|yvi-HQHuCV*`K%4rghI(*TY(xI-vEKpS|^YS-RY)(yL_*s#*L+!xLHQTj~<g zN9&NC`Y6}lw+-o2^!Y`e6|C+=?|0eGuLKLQ#|wkJGgEXdJNPIDvr>kYmS2bQDP0nL zh9xN&KOU0!!PDH|2k`{∨(60th2GA44rE7RJGt%DSBb&P8eX;@Qqa2l}G~5!wcO zILy5~aa|ZO7DDG+Qq}yP;C4M{5}M38_|Aj~qDultGJ<}ctYNCgVLW`S#8ybDn9eZm zN9N#ZMa5lP;WoTkuTcP3YnT;ZN|?d1?iE{E3M2}9n&Lr9FvCPVTOl$Scj%o>JR;>f z00p;rUm)A7yZNyi%dQ85EiUh_r{#~QP=t16iQQRaAn5+Vq|f*ll(R0fPNwxtH*|0( zLW)Zbtva6eds=<QpZ~HnYPBmJL8rn$z1y9i<Oh5hfIqH}ml+*@-she#aDV&j`XYsx zYi(4MJ>Nqt1eGVDBU=TNeiWdVJ;k0iRrPL5S}gwZmw!<K*~!IEe*TLPXNhFf<+v2< zy&nV-G8WUpD5Z`I=xa-(^+hn7Sb&D3-+uLVreYd(E`Uq9aHhDnyKr@!u4k9mSrLR= zU>P?I*U4SxcRydaS_|`-z;`#kYr3Jyn0by8lH0+Ez)_%jK8;QH2U@W%3HnZ9#HY?b zw>W?G#ag1gwfMzP-dnubyqu5Tc&m6<4IdL)>j_T;H0FByCYbeP+Km|=w7$cLWWN)8 z67gq*FTT5VyS6g#Eq?m*Usb^PdNGK!^xk{iJy}*0UkVmRJ{;@t6>BQmd~o~5q&S~_ zu2I?T>D#o=cmM3qnrQiE+RXmq+WAWnRk4=FT0D%I$<x7Xr*#NHnxN&P7-58I_1sIV zKNTE)@{^w|-h1!8nU|uIvw$@w%e^8tW<u$UFJ21|%8I;Sv1D2!cuQP3ktJmmf>@KL znp|wgEQpU>4*$54B!pbLa4ChMLgX05XnmbMBI|=NtLp{#ej-LA)Za)6;gX6^Oxo>< z8ndQz<pwgwycE<Qn9^2=awdGwp|v<l(YTmkKe$&6s6mJ?zWmDKsQ74&Y~l_v$zaS? z`eKO++Lgr0xD!SokoZ4ZF8VS?sl})2x%SGd70_NA2Kzt#5C3BfBR5rw+5H%0AQ~%p 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 Bw6_2N literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/true_detective.png b/Unit-2-Journal/Unit-2-Journal/true_detective.png new file mode 100644 index 0000000000000000000000000000000000000000..a7505667d7fce43351e00edbbe844ac7b670c914 GIT binary patch literal 1426497 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'E4{K_(<Kut6 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%0D+nf~BrfWsimRpC4fcuHA1d{w3Q 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%0Auy+U=*C8eUz(&v)37 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 qSQ@Q96hhticy`RT&Ct@j64FVPINx2&}Nw<{1X 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 >>-)qBS*EnX4~8iZKDd(I<4~zEGh_m=RO8 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 b3=T(MlQ#qY) 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�rm}m<v+a8 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�*es+#{TjWYs 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%0Df8 z&hhhMzv{TBPr!!8rh>wDyF5BKt0@y5@Y64HR|j<ZY3U$knl{-<xrawptT=FWP?uw& zPltE;=kMf@sq^|{9-@Ezb1<?^qkZd89Vs~HZRA8D4<y&490mdO`}_Uor_P9urcu`W zmQ&3)IqR&dW0Y3_A=v4}KoJuncAQd#P;&PrEjp<a<VsS8B}QS|ZKL!(o8q@uGJ_+) zAlMAthYt(uO-aFiLv({2Cq;3${WXj+(gZ^RZ|e}lbrq81mgtu>#*gj51}CMc3p8a$ z=(Xv%%pNv&E@4~dp0^<qv}XYKwc?4O`~Dn}s7ZnRuISvMfE32&NJ-#igjR5pJZjgy z;akqwQn~GjUJfDt!jA*qHZ~Y@Ww$BODkplTnd|pa?i~@oFZeEhw-Eksy{+Rf{#j-- zvlpF9ZoGWrwoysz$iMa+k(Vw=I$spDCSgdN8<?*40#7zWV>}0QWDzVgdz5toN9}1} z(B00bBw!P<d7g3L7^PW!4Q9|&+Zw^1gTH}$6B4kE+|zT;e1kqcN$Q_D_2r@2qVGK; z_2R|OXh^u;q_-=~O)M6-P1e|s=cwo(BiF7S{BfeuCfSlS+QzYSu$Oap4?KK9w|eN1 zP>kTB6CXWuBv>F-o2yS`)p^&zlYDw1%*W^Z{ZYx32a>?u4(;*=4E$T3WYh7*Gla@X z62J7UuWj@bE@VV6(|s}_E3*S$N`xMrKjQfM^>dxSkHOs$dh$k__V@?i0QPoFf%S*` z^k?8MJp4x^T-Yh1#;3%qp(~k9u*hyC&Vnjl@g-)l&AM9pkA^Bvn}Y4p?Ue<Yg!9;u z!GNAY?Vq={q62sMtL0aBa+ss1;e%hppYWOIifaddUVhw>_6NC=ZFT@R+u#V#>$h@} zT}x)?BlMM-<%02Q9rxNj`+uF!+$GmLctY3dz)Li?!3p12AJDq9@6&OQw+Cls#~!MC z-!jZ^;B=qw8~QHVCJ3>^e$x&2v~&|qHvAx?`#uwc7sIpR!(&H5hnl~F7x)JUd=?LO zd&Hk!DFdIgD+9hAk7oen$u+fUh;4W<`m(>Pv~}665#}kR9NBIeaMe4Tz&Q5S1p{p` zeP};8VxPD*y7Ve40z|L9ppBg1cgi2Qevi&wvUeR%)q7e7eSVL8u6u{CuBii#&AFL# zb+*Igy#^nXgC%yWM{KX#GZ^EV<)E)xRWLRio@Ao~I?2$*b8<B>Gqx{|M=PAh@4Tjm zJL@K1@||Cj|9%!~pZ7-V#M)>zWB$EQp=8dLUAuy>4Gv}~4ftqZytVS-?Q;omv&-cj z@&s+Omw7)yV(RDc=fvyDQMv{ec`MJ4k`JEQ4*&5|avPN4y@X6+#b1B=e7$8B&f)U1 zSzB+@hl~2kpvyAS=LX6ei1#+`pL>@5$YDFBOJ8%Qi+Ak}{?{?>n6}|{@PxB%^!w5k z*T~qBo{YX+zdd7#7QSW6tZ!OFpykVl(a{SwKZ=esnC0Ade4O7$|6Kpt%lXQ(f<$-u z+r<x0hp+vXFT&67)7JUzXxqH<<Zbaz`E=)ICMDJvo|$!Y9ysdau>q9L_5K)Hh$D1I zxx=raC322#ZMz%CoojPx-}vX6&GobUeR$w_t~-CaPba>5+CTb*Qs>GYyx_uCT?gxw z)y~sRowF(DcN){a_~5_z#_tqzCvI9|Yg~a`?BX6jgpa$7w)R2_pS8<Y76*9xTo{`& z$+U4n8P96Jefwi=J)eP*kG*hg9y7>?A3iUPONP}sG|_{3WGy@0KE$?%u0x*{a0W~^ zK3%lo*AqAZY(SI0+Bt2VdfK#Y+uP>QRK0U=3S4E*x#J^e_bN#I+t^7V8Lp3a$oUa3 z*WqyXlUGh$?A~enAMqrw$GUU+<d3@x6Lwe0hx<?4f{X23+h5w<Yw(%pL^~dyIm-PU zZQhj;mj;GQcJSm*d@f(GF@W5_-WWN2sxBG_LOk0^HM5`9_pd^eo6XCMl3UaakKo-+ zd|KVp0|^VcX)tyCZ!MXz2@0GT$7#9DBozfMflDI9vHs~#f2!V#?n`9NVyy#!-0MEI zV3w4Vkr*2B6Lfm3#TCRuN+4>jF_;6lpgp7IC8&1=uT9EwWHAI65P?Z|Mnl5+?ek_Z zYJY-zMC{1w{owY~&l?;ulS8%~a&R;vUvT+W8z;deZKJH<ki;-QypKU(D&d^~kIo4k zu@>_g%8Y81uwk$XGIbgGBofZ!<^4xANfM0IjHs3_E+x7~fsM3`1PCg)!SdXQXJx>% zWbxgbo}+0wj|39G_GL)T?3C!=nf4AAc%d@*@JK=1HeIxLe-(HdyUw?+gx?@Sg-YV_ z$@1i-6W(Z=HYzcrpFy9XU!a!=n~A)c=Xy)J>PS$wF@$i9nk&8ZY!I06*-q$mUImfx zI}ZA^qaOLur>W52Rbs)AgBS3YuV*%=8<p9_FH>uzbO#y09|P)$9tn!)RXAF@eb+K_ z2{Ja#=puu><iE=lB|_<J^?oSuPp2<g+}@hm^~U7avm9=}iDyaG$14G(>)UyP8$F_T zHvG}XNglK<!O;;OId_j8&9^(_(GSyJN&d_vSlV~qUde_Gu!LW7qw6te+A#C?B{-w2 z?7Q7-|8?dh$@i8}#3xC%Sqw8e^X&H6i)EZfJgsc#4S4ZwWttot0J7Zcb)R5CpJbLi zCID)`jU3tHzCeizdLv?=6evl9kL37o|7(|@(Yv2}bM7P~={!5#B+tNA$z*ls`LXQ! zu2KF;W`i;I8>u=6co~>!V@7W2WOTuQ^uF@@BBA^T9SJ`$t%?v}@r``&{=UHzaveHw zXxTY5jDGfek0oTuarjapIO`mH#vL+zDO)9DJ3tcM!KZUac#p1?Tp8Ja*+7Rk^ioBB ziO-}Pbf2x6abu6iH{rX*;X{Ar==mlYg7W@814NquY9A^~-z+_>Ae}adz(yq_=m#eV zbC2#DU_vYXo`Es8RAR_h&o@eaasjS3xG;CG)Q|nM!6i3W`>Rj*wEW<+_^|3!=2du1 zN4Vo8Q|Z07(SRrXV8x-=|FvrbPp})h-40@PJS#f`N*2BH8IeA;)y@FGkV?<@c&h`) z@#9^k!^`jeWYD~jsX+p5;T@gX&V#@#E|h>tlxJzV0adc&e>TRN-4?gR5YH^H{ovuF zPk@bORHsuyw)i3j<NGYRy>!YlT=<d6`<C%*n{PX|##ee~dq%sng?+PSKB>42r{z6z z*hLrG=qf(5!x`l1sErr%4u{o2$+wqMdFGUkpK|m>$L!_J`X_uw58p7)Bj;1Zb^hb+ z>*XIgeF=tvRI%ijpXm7N;@Ik7#g3D|J*Lu??YQQ9>zo=?V(XIg;cb4Dk0eX&qscuu z;FTm8uJcZcaDf9pAG=?_y)Q{K;3F`TDS3}>kPmxIChU?vj&6pVK|39#8KB6f`8%7x zI7~Kt)LiWz8Q}kUNe7)98e59W&dDA=>S*8nn{Z`&Y{h+T@QYqFW*~0-UTyKI6LV@q zPV=c%By@BK*tb)wzWp0G{#DjLzAdKAZ#Iqsy!EIRo%U>IneE^WFPr<*G3)5sfeq&P zx#;O4#Tz_aV-L1hT|4~chX<$l3SR>o{OP-5lo%r3O-ven;6vAb@WAJBh9Aj69cbb; z8SUc-!}$>go8>>CL^z?ah5d}ip{r};K^A<nq6bfManA2tP`eAx((AZ34&QAHthwKD zeX^Qz8oYn>ao>vtO!6z)*0!1Ws7SUA2K5^v^vrX&@&p5}Uwc<d*~iGieLQSvXMEF( ziPhe&4Cj`HhYvo^mVW=xv*ho7{3%{OfA(8T!Qc0}x8MHQw|K8Vi^<n^<SGW^$39oR zJks&C(StLXi9chz35s5k4_@QDoCJ@+#Dl2|?@ND{FMA!%<KrD?*ZTT@HUysE2Tlx* z`fUqu=QAP|@(-LCr9uLOpElC-4yXRq>AL*j_=dxUBhRVcA5Cj(whr_A>c~wTy6z2} zV7kA9>K86ke=wMwxfa8BaZ!Kl>e97?%fa>Nl>B1+Sh_wK)QEP_H-j}|@7S{6XqT(6 z@1ToQ6z=hc?@$D6{*w;sBU;5MpYt-X(P;ea{G#Y;(6ym(U@qJMM-P3z^^Ar@L*V#! z|8Yh+y|f3x9IQY9bG=oF&jYy;&)7I#_cc15j}ZOxWrYk`3E@}D(c8^7aV5YV0jlfQ zwWta?0sm}Ap_ONK`}RYImk<&b945(bH2<bgp1^ZPY-2_R{9j>RimlE`Onq3MpyomK z9NRc2&&-7<f!)`WpYjQSGn7cK)3`?awND_?dtdf4PCeQrv<z&XeT`>>cLWU$8oUHe z4ujuZa~(RPUKLrfxvC?fqwHg^_umVuIiOwo+)Pw_U1exFRcrX?r7T^eJo2hxn*yD{ z6OI&C!(`I`IUc201zUMO+-IOOBfN^WGTQnA9oc(n!og{DBo!3wZhEe(W+_bk6^!G* z52%0Jgp)FDo59wJ=WxQ0u{;|4%0W48(XTzy6?m*{7=tqO)P1}yd_MbDr}>Kqf0F6E z@E{)J%dPJiftQ@=-0L^{iu>2So$=M3nNI<1VXvb%!d<x>IvgZ^I;+b02B%$8%?|8% zEx4g$jdUIGNmNFcN_K3@Jkl3(ZEzb3g3lh$EW)er7PE8E)orAbsC68*3C6cx4utP7 z8q_hcLyq82B1E_QJu{5y^Y=*%Pg0kllG8Y(V4no~^{ahh*Sr9x;Ek{DIoa20*Fj3w zmT1x^dcH6WD0Km@m1n2;U^YgF2LIp;AH1-^aXYMdzm895aGqVnqyBNa?9ua^^U|N{ z2uj){*wY!u|F^w_NE_&%B)=uSN4LT<Xzkh4j21Ow<ZYiin%iNI%XI(PNcj2I=FvY% z^aPtR<nF~g^}t`-@o5Y6Z|4tv95p=nJvd3`mtG0wCL78DiH`!g#8g}0(s3JpvNyCz z%E=vXy>w;d-RCJ1)4*|WV6pqQ4KQ%s4oqmY&7Zk9t16Ned5wMax+i?!pqzbmeRMc@ z+63R`2+tjysm+T&1EYJZgJytNC*Uz1+m8JDbVyTX&w#Mc`7<zsOQ*UXly2D9mUTLv z*UxYz*ziz}F86;Aopi&^+6H4-0jFxKiD&aGAA}CqJ1k8V);{_0>pE*X*5Uy@^l~e_ zlGMJbjY$^6%koCzlB9hs8N@5w@*g_s+W4gPZ+=5@ld{EZDs*vqOUGA7@Knd+9oq;G z_|px$GUG2AFm_M5Uw;0f<J%I`aHykoW-k-bv#<HHZ+(8@%yz82;JGXVV`s<WQ}|+z zHgpDb)|B7&_s#M1d8pzjzS7T1*4f!XDZX7<KI?Q0QR;CC*U>NG(@A3|Z<<jRPw;&0 zZ65`iWIJ5g(>&vzd@L28Phi#gR#u1nKEH{dgKM(mCk8&bu|<BwU{L3`CFx?n!AJ6( z7#co!Pv3Pa-}NFze5Ar`3eI@JfBjSk2)!$B1Hs`&ugN9Z?*Q5IZ#ps6p-%=Xy)2FI zIM4ipNq@oj`5t^<8Q>O%b+gTVIY63}y=9`Ev1^@n@8S5+Y7_L~tJvx@GVlicKAa|I z_6vRFXdC@kp-tS^23!Df&N>{;y3J=^<ZEMSPxM&ja74%K!5+Qpvfpq%e)5!~8`}2! zfi8G}Ls6p+ugK-|=ieLPD2{afO{-(_@Y(44o_o1U_CEF$Uq)s7!`GtMr<?c|ZG1^a ze2)zY(@~zd;KHbSt^;2E4izwMj_^mv{O*ss-ye7g-?dvb*@tJ9Upwb>rs~5V*ZDJ@ zi1A<U3>{aU=%%~lU&4FJyB46C@vM#I>DnHgM>iULxDPLO^t!<bgV}b!kKD<ITnsp( z&_JM<guQE`!)iS-ip|}bu<4DtI+pZ%Pz*=9H-2};H@pno9G3<@*%oaVKa~GZ^ws9b zzfx%HPcil4gkt~~2F~s_*RFfcZBw_BU2b20xx6~OUml*9C-FscW7|Xf&iBg1^&@+5 zrt=vc@UzXeEijd8dGH$@?7rW-T{Lxf{<$2I4{y$WQr3M`ZVPJf?}OC?$nI<hc}ou5 z^yfltmiTTC!+#{C3m{&-DtFW$o4hb4;1~H!hckP*C!aR3@WlX*dZTar8UK;LWRL28 zuMf1Jdkc%JopV&*%z3Hy)PG72{!PbI0;d!9sgeKtoEF5tG57%%07l&CrsopOc0z<x zHrnceZ-5v8BNw!s+td@NA@6nAFB;+Gkky}&<LRVAdM%PMFbs)~(L5u!%5xw_K40Wu z1T~*)`K3=hc!2??`Fw-Gs>4k2JZA&symc-bz7-T>E1e$(2{xZ9D?ouQSWtI6#+^3N zW5dJ|M0D8V&gg?>AU@wP$(Nwq?mLqV)FWCiTHb1()){LpEUW}qL&t##P!ni0o`fW{ zFM4r@B+av4A3pyP50gQiqUoqLiZZi>b+B%G(aLA_<7q7imqXDxFSzt)f@(ZP*d*^c zZ)NdGaJC#zAb;=W5_pm9w867HZ?>2c;KQfnC{Rj%z2)@BpMIR=0FIbpq#Yf-OS$^Z z5|lttHUWBPMRg1%-Z{{r(XuKy>{2F*d~^tYo-KY=a8@5Zob$|jO^3{z_4Y*#-k^#` zfr?>}4X146SI2F1s^_m>zW({yk0oQAuS7|rhP*euz451?{@UO{%S(D0hws`7-gfX_ z#?QCk!XqC3(v1JV{>#5ofoK2YfBfIG48?nh_%Nf)pL^{)*~9hVq^xVlS-C#nObw4o zWY|r%H6!uKW}f|NG@iU99zR6in{3e=BIkqK@j|y?X6!p>TSm(14_OIh+QPGW>tOuw zk{<UG{Jc2mkIw0=PL8Ey;C^fA*2lh03fH?&@v-3J`5|`7KGMc%OVGYg|L$6j`tgOO zsdTNELQThtCgi9}Q1BN{oaFd}j(_}Ka^_lie8`W`Go4X1@Eg8YNLM6*e9I><4@=H$ zyy}xcylytp3mL|TmjJP4^xDwjt!tibV#6~^u7iBlw><5(rQc|WDO~9P+qZ1Cd-Og~ zXGTvrAuDhA+!v>Hzk2)Ja&Y4{*y_?1qtFxhgCPj<FQHR8_tv%~TQAHIcmMUvU2Q_n zw?0i_mM9$N8RpuilXxL{UK?r<FnD;cz2Qj@f4^?!2z$m0jOo|>rUMfI=tVNA<*_;b zmF}@ar3K;j1#G#FN%)Q}cbi=ejC2~GhtBAJojst1&#+6vZn86Wf`%O+veX_8;0{v; zkNbRuS;*}mXgfVFISj<mgoodJx~ttl*UajKzm*{O**0Dn4AQA0W1o>~G$H+{t?-Ss zk?qkt{CidBfxmXsY`f*)bd<i{22Tg(yrW=jAYGBL;-QyRiAUP1!r-aHF-tq6YX)^@ zP%{FOtARt;&<t00cxIr?a=z``wfIl(>51iRba7=`P!3=EO>eyTYivB)9IZ+q4`s>5 zppN*tGtm27q!<c5xqyA&@wIr8uE53b&vjC~P>d}YM10;1=-{4g4<6#L&!CW>4uD5c zzR<n9_hXZ0(BLU1z*#*u_TBT+>B=N1@xZ_^`p5TEgUZsk8XY^m%g?w^fB*jB?=yq? z&;R^S&;ILw`7imuAII<G#jn5pHk~TE{-zaH2F)KkCOTbWTfQw@@<;^RF=(YjYi8D< z6`K)Pd|l0mJskKWF-~1E24Csq+g2BNev_>EqFL^kPNEZU@XH>hUE616=bLrG<DuBK zfqFdBVK<;8R~cRgQ_SRF)#nR0e`;_oT*=g`qj{#gd*sV6@r7O@$j=+xQ0Lg?XD>&J zMz%{=W=0~@Lyv82X?#LxcR%cpS#~mBBX-DAx)U$p)uA$LQ|uL9X4!JGmF=dY;gT2b zTxT$xD~GSS<FRwNTg?IT3{0d?+6VkqynOk3{f(T+Hom9&-fcnud_oJ2><?$XN&V(- z^NRWGOuRLaxV~7YKYRj(|9sNeadd@ROo*mV$lPa@$PeZ0B?NaH{mlne22A#*V|J51 z>FDDX{zhyhu=l8cGHGFz5yqH^SpS=>k_|n;Unk>xYx`S%jqb$OX0h{|4J58_-hmp= z@v6rL<vR3;4<mz-ak^nuoCyj8lIuJ9!{-f*ynXhUzy7&5%>VK*OH5WD`kb3Q<8#kr zf5=zO1Vz4K2IPAlU&m9KPj`RRjsY}$FOQ#Rs`De^Le8rj@Xt2~$Ms#Qa7`-V0{+zI z#2+ln?sbBP*(+|SUcd2@-$+Ju3R5bBSNJ%C1o0i+n-|9aDN8HVQx-1CP5peT_Gj;o zdM|@NF*rG#>!bN2<HdLClc~Dk!=nujBRseyd$xdfW!Tuue8LPy49(izc<l2rDPg}y zEa{QBoC(zidk)Qkl@d=Gyg8lIjD7H)Tq2tIm+^7w^5hBh`r;!T>8ZRy4E8;4`Hg{L z@`5`bYjx?^WIALy{nvcme$J3z*7o9wJ}X1;VXv`y`?Rz?$0KFt64^M3f=)(W@SBU# zKMK>$>fav6{qg0e0A95^a@vwE34s{}LHhSm)~57(#=|I}UE;_Q8*LQKx8uq2Wt<U# zPzoR+@XQ3E??dsP{mDS!F~qDf3z|P%a4`dH&RHTnFvHE%{L3F&=JNW7aZ+RalH@v* z9GfKKrbOh!i;PDHBT8>e@+hNV$s=OIjDAJiCSE$U1*;5WM-&FNsWVKh%~iZrPIvcu z_;5(wU%{>s5Dxlvu4d*hCDio5Ah?`PDqUMC(sz!>o(9@e%vU8C<48)he*ZnkUB~9l z=l!GvUaC8t&m8O567UJ~iErN^MNy(Flq5_>kID9?XZ6Mj)P~=Zs!k^Oldm8)jv;y& z!`FD@#Q-{;pSw5q!*LjNsPm~4g*J6LLQ8-3xaAbD(;Fkw<Uyu_zzh!byzUrVn#vhb zSq@slI!il~cTKm{ZkHB4?U=lefdbg40@=(WCBwHF2iRvfJG{XtgS|`6py{Y52j8?5 z{E<D}=Ulq?!%w|5WI904pZ)sxzl~0L{*b|u8J(dMI;}r7;6d*H^WXn{9ETwIyxCQ6 zL>w8!PxtYLgV`Cbk}5FbJ6@pa(518T;g4M^V}?<O+GYv-kDj?G`SAi5HYhn`yJR<? z$w;%cF?dSslEEysi$KnXbAHvphXpzuIr+^1LGmoN4vx>W75cA3`KeEMjJ;(?W&-(J z9n$iS%51RtCRnB%o@4d=54`aEIAJzTzS{ZJ5?wf;8E<qv-<y?)5BNdX_KlsJ`2Eqn z?{zqT{`r~_2q&Fa?Sb)9!0KClu1QW@AHIg@IOg=}<A(xu9bz5NanjwJ021E>g1csf z)0UAD`@AXP&Iw}qIBT*tKr?ol%*m1+vY}m$Zjd2ak3ADc|DWieBxl=O-3Eu>@~p)q z!TB=Jr3=#Vz?T{Et{mOuOOCGaDQ23{j*sA?X=$gECr}A^bsP#fc*2DUAnY6d698+6 z?-h)|)Al4x(Y;I6Guk$7PXe4SWhBAj|5;>qz%~Ou`kgIEa@O{DfDT-p5OtJgWAs8~ z<njPC$b!FoINvb3TjJHT3CS=zyAFQda`nB0=B8(?%|O1fG9f#rGx##IigaGEW#hFY z_~SV|qi|?``}XCtpMUvje3s<uxAcsyd~O+8EbZ;QIx3qG%?v;|<AV`h&qI#xHSmIG z{(m1`*zZ?vhv9mePrh=P7TuFP2V4i`WwMAJ7vBsN>`DbVN&xV1cpIPb&MZ5=xP}*W z#W^5;d#-TgG#yBfsj$~wd4YE2-52}j+2LXg-F?vj3;e*gYGiEp8tj-vD!lL9Lp$8l zAF-5P(m(kA-ryYAbXo$bQ-0(vnf-G2apViW&pPl=a7X9xGz_N0*HH(7z3~;JSJ}?z z>Wekv3ufazTy&a-`CZc<-LaF0PNg@+YR5pD+{F#HfVb`$)RH8E=kqkPf@5%?kL&CA z#cj)<qvL4D8-oc3EG=u)4&A=_gIwuwfZEu@B-oWVsAO=2-&6n}bRs2$XO?LbTD~pa zYnIyaW1Rso3YLRExY`p(4Azm&+n!%%4+cBUwvs8{+QTAViSI7+5xe7uxW_(i^aQ?e zzsY_AQCU7eTb=x<dkS7Y=0$d3Ao^RnWOmxXnKn9%?34!6#qlKCZ!<_Je^ZCvzkRun zWKHs)E~{_l0~&{~wZG_e11$WCFN0@tH|Po3;Zc=$pi2i&u9=L!XgGOBn`cPr8h*<~ z$nd6toNwhI!!HfBO~*8uRkSVNQQVPmSE2vuo_{fq-l1{mtYnymN0e9g`S7ye9nmrN z5#EkIsU<&Jo05m&rDJflJ1;W~MrHjzx~V+6U4NB+uxolb_E!8uAAK?aW`OSuVwEkY zO9oC}=l6cB^ZBO+P<|e~4XFR|@waT^x8AJ$>*&w=?YGm}v=kNX2KC0bXB+ZUgWEF@ zl5NQ?Bn1Xw<=h7HB75}RyFPXRZ~X=TGlOIC6z<xZ94uY3;TN6Lrt|07=nSTGkNqwW zR<|Ozjm$P~jviEZ^mce9_U%478`yI_CbsQT_T)|PlB0X-${ikL+V8RBhq?=6WU~rV zK9&z^@Ys^kZ*sEiZoaXdo_WuVyxFz!1;O3{pY`c*uKC>}W%P$0WdpXFUp?%ks_sOs zJa)^7D_bVrK~^>po1&r9@S{@(NXE}JP{<d$hQ52et!*#Qd|rO%ch=V~Ulfy8zm%P} z`GMLP87&JZK3f@TJ8d%9SV1hq%TS#k>OOA$VC-%9-Jnv4W>h*|l3|4j#B)lH0<@7) zPCK~sT#6YlWlu81h?V06CkTcGIAdVbROHoxg4rn3+`j}G63Sw+_QoL)djA-^z^~p{ z&r>c%3J;MC4YTI~+nBFo!%67)pb>!-!VKsSKQwZhLzw5e67nW!IhHy~FY35)Zh{uW z7<zIJcyspSbTobNBoJj!qDo*V*_%#bxLXFoG0li>?W(&1S{i0XfJ0A;zS%i13yP*0 z4UzOq+|ccasD$vX<cloKoCt2(noesMDQS12y*<|Hh#EOGs!v`v!EhCL`Hk1M8PTf} z6eZVWIf-#}j&s7J9N<YNz%X(?-y@3;oGhc7@4v;rnYk`GQFnP0cHQ^M6vjZiN2zOD z!uh>&_&uNC!B?H#O9m5^rrdr*Zk;pw8T+=o%d>8pk@XzNyIIDBhDlJO(JS)Tc}r++ zM_&z=y#MX*B|o2^z3)4dl8exqP8sK6;|K+PgDXBM1gH1Ezt4eN)}&jfLswwwI6*FB z$N$mg>}Gh)GRY_4WV^|ZnZrio>v&3@B#-n=Lif{8EqiH1UuRe1KeN5b#Owh;H_hDL zmgv%N8yuCR8F=|B98O|Sf5_BwXR<&S{3Icsk7D~rzjZQaz##kQ1HRo#Xmtcjc7mHK zq|+ru(L?Xa?}a7b=_h)}fkx*zm(-2^aOB!khNE3aw!uUIW*_R2@pO77nc^2D{^3vu zVDO7JJVwk-h<3X~BsjH!y)GC*c8cd_YUwtc@Yjv0-(SwN{H&!?;To(oXg*)!KED0b zj6T1@FVHo*eQG;5`11|!{X?sf#ry1?o%2K5q$i{B$>>`)dKZ1`uYwd$B$If7X7$X* z8e|w92nR<n)(@BLg^wUDSROv|X=V?PExFDIj*eu@6ZGP}*P!$B+6QNBH=Tw1>pJuN zmg{r~PW+>dzPg6a(dX`&(U`KyOosw2dXL5130D&*cb{Yy|Eh;~0>8maeEn!J;{D&l z!;EvE;pti5w{@&;>(H<f%j*{YtKKp2%XGT%WIAiL`!-v-wBq7doYzh}I}m_%RLxw8 zTi%q+*5FVD3JR_H%{Q>8G^2e3{v>qaOkNUK{+aIp^Os+Kp2U~W`2F{QeBVx!!56lH z?p=m#0C(|$JN$-2<k>#wm34mpxi;mxh7USt_zUkNEA7x5I`E%tN+R1fwwOMEqhpO1 z?x0Ou8>?vQwUt1eU&D)R@5FeqeRR9FY-~hQBW8*lp7VVE+>GPuM2GYx`kTc$olE+& z^e(<IIdPb->qPwJFMpmRxWB!BKl-JfPBdTe(@*FZ+ir$0;L$;ThHv99Z3ZUk?RLI( z7I)^#4BGg-@K^Vyx<@A3!3=U6+hZ%8f6b@xO?G@94t6x~K?ch5Rg?79k$+S2O^3xw z{G0)v;7szGooQtK<;qTd{It{SPpv#D+>C$lEmn^R@u8ORimBqm+wA9ucV_+BpP9}E z`jWw2M>A*!6(qi!ztMr(P1VLer~S?^!G~J+Ru4NH9_-DobseAZhF{4$Oh*wgwmkaO zA7>-OXfYT=*M_fw)8Pi4ub-LEmTg+1H{~lwVy6x5;IVz6UpVgUdxH@9`;BeMy7;wv zSjRLXd~?tS7C(sZ>{pyKfHE|+Dk)8lxzW`lK!=W#oG<ZR*1?TudCXW5E#b?KHjd!Q z+K}VZP2099s|>zGH(v)QG_4HeTXhc8m$$8`nYL<g@&|)pqn~o6;uvGXL43aWL1wVG zY0G6TlL_9-3HiF;|M*RSD;F~0>zxW8dqn8hI-P&-{ExAb(Cc0kH4WPS@w?R*Rmq>{ zMZ?{IUxW1(BCm-dwKS`Kg7?)-m;lfK06+jqL_t)W=hH!UXYk%+6yJfL6VL1DtGD*C zgPx-s^1l!!GoeN<zdmepLg(w}4xcL?Z}}3opkoZTwcU+rlS7DA@tHq38~)fFA9Snp zp((mX_tprmy4&W|5lZumHRWV>G6i2OcwSppH5&BHT~vZ@#J~n<z?Jum-KU3PFtRj3 zLrrE`aeSD5Ts#^yFI*LX>(kX$FxY{Z;`%9fBp-PEI{tyotPGXEppz`Dq{v+*EArSC zcW{);tp0}+9i1Ejx~o_4;764`I-oq-(1aF#oE*m<Txd5*VN<WabM6oLw=-4T4Nm)Q zf!TLGrvn#YfkwiOSVl{sUf*m7)iuP}Ir#~W5~v)!4T4~<z(S0YnzB#P5OT__fnG^X zZBQ)N7$qfVh#MfcjJgOJ$5Pn?3v->r<9T>s8Qj1y+Vkf>|8<=Duh0KpnH^!4(5MF< z$H0lf8Lfi3`tG|1r-SPt-=9sA8J<q{(yT*1oij!n4KH%Cl4LU;mH>in``&K~aGO)y zq&%Yv&Lk~5E47_h;Ez(=64z)W7jGC%{G%uw+D$>|&4t_Q;2On_xYXed4ud3*8NCe_ zW$|pubQ}s&qfGF<6pjoU%8A}pW`U0L-cg+rXu+{g7yb!y8+>=kRwzZ+c5tUoygU5c zWaja$jQEKk=)RBlw!`B|I%~)G@DA_Yr*|jVz}pfJ^pVrdN|mrOKDuD`5S<eIm^mF} zvIgS>8n6HV_kaI?M#q%biPo8a`SPdHe~ADbeHz3vT#g-Mc1dod``x!`Z{*D&+h^3c zw#Mi>4h`YxNVaBv@Xiu0o!9Aj)QNugst#vKi)A&Oxq$k)=PbxXJqd<{j!l@s#?#e( zZE@DCuXtqFzMZ2?efr42IwE#qq;zJR*;<MQZ}s^IZW7&ebKa(U1)s5tuH!kIzHe~E zHjW3Mb2er&>A-Zdf+PXd7otz>*{HR;;7>=V`|f#enk~&Tpy<^01kpS*{HJ_;*7ne) z;c$(-uB~k;b7*$mhUX9%XWjYS2d@C3{NjoBY<%#v#4yJk?ylkM8U4kd<;^BX1`BKw zVRXae-t)zhmXQqu&NtNQ4_Jt<?BGV8c7qQyBQ&tSPY1~xdFe5JNEQsjpkq2y@ir)1 zx9ebNgO320&%hYCP6w;w$Q4@sL-Qo$I$#&xW<Ay6S8XS-fw#O~W;#bBeS{lW_6b6Q zR&}+pJReZ$F!^t=e32i46B`7J5BVmsZkFOpv*?y#(pyWL;XG|;W6s&dpIh#Jc!F5^ zYZKhTwA)Ty^zlEN2q#M;z2W1&Zx36#OFgoZ!Fl3Nb!^%mp5$Y;)0Ll!M%U?u$1JAf zmEAmCBg^pRTRj@#98(PD&>ZE++BUj^H*IXs?@gf7p^<~~o*CVa$Fvc$^mTMKh&H@l znWP6Rrrzndvq0pbeLTm9sW;`>2^zP9^V|}Mwy{-JMv3+Xe%rwn=km2xpqKQ8P5PYz z%ssTq7d*xyS&yo@54Z6Z9l<{~qdtW3d}LniG`QefsC52+{q1i<JNn@6`RyGX-_H0h z!(VxjvyQ2<@cj18OLodj=vH>+I^D2De0)mf@l(Cm7yQG2@nQx-yFWUfzZoCR&QO&u zt2=fZ&70gMm;96!WS)~Va3v40k>AKLKJg`ZwuxH5yMJ`l(QK@N5%z^WY@5u+r^X*M z%s)4X^3%`n(tQKea<u(Ci{+6Y{^;dNbzIq!H~|j7FsmBU8!I00!je3VPlt+vT$^Ng zw(H0)Qp#YYW1WZn=qNuQ8JMv!E*_H8iTh(?-LJull}|<szr$bPjo6iCj9iYrPFzS{ z_>T5D;zcr;LHda;`^@4#jwNBwr}5=iOqt`HlNZ07j9aBJ@RF_X3r}YN5278ZyC1*B zzT^n*k~RCnPq_wmkQ=?LdfV7QN4!Lb+=8x6M<5^uaH+!B0e?62>|p9ms{+Kz+wy9y z0qQqBM;E;@Yd9;FbXfYwG|%(d+UGOOEW=6Oad=5D<QN9ab=>Lf^3)Q`Vs*dy9UGkZ zEcS9=zWOE|r`LElyo#>4Qyp~B<Jx1-@m<Txdhwk>YC7)z*i+|t3l6;aF8taVVlfN; zPzg%=G|=Diuj5za{lh)w#QDtyj!nzm)g7A&C+92A^~=iHMo%u@Pu*~W*T^NETfDFO zX!SqavpKAs(cJay!5uj~7>8FVFma+uFIjV)U$QF9CXSOS82E8~(IbCWPH>|8I`tnv z(!E`+VM2oKEFZ#!3`QQy;~kXRK8SY7mwa@FmoKYd+GD4OSHt@719$!M=04;AzKIVE zf$!*RN2{#VheJ`Mb9g?H<JIxpScWsU;C8)^=l0AQ3S}2m##u+GPU(Hi?_Rvv;CuuP z$z{rRxRmpogM&1pOt*W0o)Kai$9-2Irf8cWZJ>t=<dtDu&||>kz$U<PT<UDHbOK{7 zsXE(9lECl}o=3?f*hXP~uJdU*F+4aBWdT-hlzbTaq>~g4=&)lprN*nlJv!B&-*a4{ zQp{HaH^>>7QJg622Ll)Q7#+OvD5XpA^Jc@GscSlxl=6Ex`jGZmWR4Gx6he~L>cwE_ zeC@I{d|D@`y-R6hveD0Z-h=W6>s|Ned86nNSaq-_p$I19Aa{Y&Ocoj|mJD`~!ARCV z&-AQiu8qdlnKQ~i^oGY9uh%b#)cVMSVxmtn@f1HdC*am5-q}Z~FJoM#r@T93u#O(g z)hV#x1U{Miy)*4QOKJJTIPDCRQ4fzYc=(=9vXMaYj#)$ReY1vteE5Cvn&*3}=TjU4 zJy|rdISGu}QsrL!ZF&5ABZ!vvtkDH7J$r4WJ6`GF8zq~hGv`mgD=|($FiOL#cLkv2 z>e`z(Mma6Rwd~h(tCqlKXM#a5(Xx$^CtJ@%m6BxmM%&RNc+ll_g!F*k(u?C5hEI+1 z;^jEJcsNdp?Qy!v-P>v{RmQ{b-}m|H2pio1&o+rlh~;AjHkpn61_M7PA?YD@<@uxh zGliW_B{Z>OamqH_Z_igvnO*88*^=B!{v^0L&dTsHV{_S;HW9n^*YVM%Nm3-ofVSxj zJ|yXtca<+>m2iLyp3z&l3FcsrTq|ukXqq?e8pu(PUQFjXe>BfjWoK-9lC9)7&se~D z+5sE`H0&sdX2;<=gFY4F&yc^gd4{_;S(kiHuu6Wevq!W|=PI1cG?6VhwzPllPp1V; zwAKz9ZR_Lc$ex3VN9a^SF?uv|sopI8n$rFZx2F8@fy#k7NiA4tXw-Lop1>j*UA>&P zgMDzI7vIx&gH4{fV~aoj^5@_ij9D2=n8+QC%J0%FHnRf&Iu!WfxBD;NNcOh#a&&&; zQMjGWU?UNX5A9@=*!b3J7xYV_$bMr1J;*NbKH9Y7{`k1?B}u$98$0KfQ%^#$s{^wC z`1ZbKsngL4hP;D5TCpIOfj|77cK3YR?4C~Gv>85L(BL{*t4CmH<*(<n9uUx4WkwDc z-hAU;tIm`W=hB_((j%(lF$%F^M(8t)N`SQGGw@Fr-SgR_It-(;Xi3jEMyyWJ9nV+3 z?^A2<f3u|3Gwz#UM##`Y{`P|_-GQHN;!pS*Soo>8YLX!xu)@R(+~E9Uoh|X}<(2HH zdt|IU-Glr1f#RD4kM9&i5OiXJ4!D^&8*D~Ti_J45MaJX%(ktaE!0zeJ4E}T^m*HV` z@s5w@(siCCmvROCof+l^Ca_cI(1I;V*(A}ypj+|-dD805`Z_v>9{A#yZxMTw>pZg> zAIu6X?@^3*J;NvQrw_y5+MVU<b#%;p&fWm$Ja?N9_Uso~MRn~DYW-oiT^epU_hWT{ zc>J0x{TO|63>HVqpWbk&)tUA?vRnArZDYrs-$#>pD#p%=o66xMom9p?FltRZ_(O*B z7&26Lp3xqtkM_c5W9Rrgxx}#>G#vdxGrq2UZ^v*yfwgTdg~%vJ!ykL+)1iw`9&0f` zHTJ^S)n+#@y6Ff`#M^xLO&v&`5xI~2cb2$EoBL?;%=OYlZaWh?OH-Sj(jJ|npWCqv zcA&STMQ60R@f#c9yL?j~UUlv--Ad_(esy#@%?=Xe$|+uY1Z;RGwuog7@au4vSIu*Q z6MNI;{>9<t#l>Gd9>18J;EJ~s|I$sl!%jx5-J^MB0%PjtI;im@ddDW%Mdu5b&y^eD z>FVP=BRRGCZ!k6osQH2Qb)LyxojEe!ScKkWg7!8(3ru=~54Lku@9fu&c)NU4w7c=A zHU`G}^3mJwjooMK+VLd?<(AJI6XyL8@y7NkAMzodnaLE#`5k#5n;%;UUp(UL`CH4> zwWIGqr+#TgkkvMLH8ElAq`|e|DL4M4{8I;%4Z>S~r|kOqjUQGVnDIyR@SRL+b5>7b z)A&>N!M4kLY9D-)GGN1<j*{=!@=ARN|B^^`@fEe|@=30DXAfPAb_hXm2`8j=xHDQf zjyoY$NzkNV8q(>Ih}$4@gr}4DEd;=mELiR+0M7Gx>VY@P8;UVk-7)U2>2zrmBeVw} z3Epg7n9<Z`*}N!7!aM|BhO51Sbukem-FF1fz0=`%V08GP<)MM=?CEbX1QNIyMHLKB z!ZW6mqJd2iryajBosgBagM)V*jR2+W@Tk!tOF$San(s=s)rU7nXZh{c6Ij4xJmFk_ zU%6K=mxp)^N9_!K6fJx|Re^lT3O?$*wAbDSpp=azr!b5rY95pWJWG;{+<MztXpbB} z^x_$_gr3voY~H>5)3bm2r@su0_r3gq(=ifxlH-wMu#S$6QDr3Ld4f58V&rgFf9Q`+ zyo0~r>N}#rGJ*bt@A6R_0<fe~a8njf<WbYUWP(w|Lok%H;TK)<d?tM81EaRYm67jE zq}hgeR9z0y%%^hNnfk%td_CLnV@Z=&y-N(LR7bVvbt)?n<LsVp;}FyDH$ExQvsd_~ z13%wGozc&nY`i%1$DRisGGH$-K(k&On%2na1w7Z;yADU2jtG7pyR%I6;M92h>P9>> z(<jJ}u6A6V5@<Go6D*9X9>-2*qjSwx=3%JPY+dfU4p2WYS<St<zI9IBbDU>us&La9 zSo(X@fY;iCfD=vebZD)aX`fKqU3=W=!SW;Qg9V+n$-|4qkw)}y(56YzHN4sc0S|9< zXu5_L0SBJo>3qWLdHA_bpT<89UsfMHKd}jk_Nzb6e|-*~yy#7Vn_#3n@tmv$8SUD@ zx7)O<jifR-Zc<}l;Ocngcljp2eG621a11b^=^uCYVTbeDic!on`nh)KI(X`W=NwG> z=(p>BPn-RA%^n+f?@-J8_rd`^;O3EAV%y+VHuTT`^w(Y@^Dm=wzqQo;*T4Nbeu3?= z#iyN4`ul53#10+-pN_+ggg^Y1W$$8&b|%rSjw4++bD&eOi3c5`NO<)a#D|{hr%?~> zpqYOHUmd=Jtlqa26rOZP?1RJGd5&B>SXuLv>W+Sd(<EBKXNSWt9J=`9sQshobPFA8 zYvG!%vST!0vhu^z<X}5>zxA0UJknYA=>l=z(o2J3Y@vqzPd_%fp?eBxXJyoJk_B>) zKefqySrR`9VTt&>`0KXypl$rcK6kI9hpzu!=N@UC<_C9m<r`?E)A)x5x-2#v|Bp{P ze`mRudfQ>%*iPmKMqN9rnb0141}6AmOY$N#-x8jcJ^Y5l*~-!9ji5Ss>QQ0xH*m)X zssone4A{k+85Fa$uGu@h^k#H*j;)|$_O9Vg1v{>7X#>yEc<Rv48GO$#7=-%e=U;|D z(`NU`R!-#^zVW%J3LgV?Z}M55*ZTS@8QnHW{K9~XS>GCcvQZ(vT-)mUr^Iq1J?xtE zv|{f-o6@u?Ums;Qm(KOQvcFxk)1Pzhxcad(*5HsgddSe`9Ip&Yjm)zje0kMspgx{D z<<$WTcFytez!|%Ob+9*vEuvE=T-3qak*#0BQI?Gw$Z>sS(h=qGz01#gtM$}o7d@Zx zbjI<1o~hkjZ91Ft47j{*pEs7n+0X?K9lgarrs8fokvh!18O)QDX{?R^IDSkWc&f7l zChNmTdeN{x#jF}VyMNZu_4p-HwRCn?*cq@2pXL1yoV<VU{Vbm+&-=??{+geAla0_b zxTeQFqY8He0r0OWN-%sh!~ea>07w2~<*@aXCp&gCdXJ-C=+vh3c?Ofmw?yyOUHu;4 zmu`;loa3dL)A*KE9#773c?vb{>^=kKSDlAz!5bW^tB(CD(q;AdB|5SG&~JWMJK)*q zmPru2)ESez5t`1Tq(^M0N4|pau9;vj6(iEy&-}_xWLc8VC(WQ(=VHkE0=Bua_RE(# zk@-fk(uzYX;T}JMxpC{$Cy)5-<RCkO8!Y(|GLT>IBP%8f-B}y>UO9?4X3@3PA3WVs znd0yf9UfnU_ZcLEt7lxrxvYAQlaGoc{Sy-ozoTXV)-|l$@^`HLFjxZ$a~6^}2_Q!> zn1rs{u7A7V=h`%`(=|@LP6z=~7{UQ_ukYs*$jf~}l|uJx|Et5<P|%oE<IV8wGd$p9 zp6x6Rn}jqx&+?q-SHOb%QCvsh)t~Dz$AkDrn=Fr^9E@`lkX2Adz(|(<#Sy;f0D~e3 zh@Qs-oYKul>g!}^r{<z>J4Qw|y^)c?jk=oE6j%pNw4zr#_(Pd?lvE;H0P3Fy_(!10 z!DtHQ24A347kz@~mxAr<+ByjXT!--Z=iZFKM3ba-jbFRLiyq4UDuYSw26l`eIB<dI zo9<I^%bwnbKfLhA#u<3_mJ$5*uYY;=umAcl-4o0$3*2DO0N@3m88HbadKtyxJ7f9W z%&X<9hu7X*xpf4@<>}~6G|v*3%K^|A$<mDGH5y~)l58bda53{>(}wMgtU8xO(D5<Q z!BIOn%%SX{iTZdwG8()&1v3`gxjiym2V;b~+2Imp9Zx(XA7#NqkMbkCY--+6Te~xg zoy<7xHRyDtHUuW4qLMGqprQf3qbF|!n-bylYV;iRaHo50?|Gw765~y>mLB$Ihffwb zczEV-64S1MqXTZ);OKF(H>Ei^cYnH^!>0`vUO-^UR;Z4Q;C7tMCVb=`{QlYoroh_S zO?Zwx&v62-=C12`C-6Mi`TgF2N%y!5a4s21ymxevzuJ4+UtW`Sv<7eJx&rmFkpp8K zVE7yyIm?07AMkHmDmY0*a{bbPkWUxc$kq(R%qaGooS*kX3pQ@4w>Ce0TAzguc5K_( z!IcAC;juo_vld=>m7n=ga$w{%ojGNOS9G6@FFw0ZFO^xF$D=JHNtrs)FX-5mu^Y%6 zI>&xnEii)&+vzleh8w3{vVXdv<#dR^pK@KZ9URckPrBzEkHTzzYuBc(YdS=H#6SP@ ze|h$Q{h$BG4BGt1fBe7C{@Z{1Z_obi-~Mg*H8#}>0`#JbUi1IpuP@0j24_2U*I+>R zWXy2Vrsntqb!V2dm$6Mo-95jb_f|i)vv0!ASEuiiI(EWuvKdGEu!AyI1MD*|R*g)@ zv)_^k?-JlsCN?D>9aXV_O&jc+7j$L+9=|v?Gi^0ne0X^18)o%~E@ttSZ*VP{PG{%h z``W?ER(bcyeDpVbj?N^3<dRLbTjDnSFP2QlQ({R^$aM5-b#HhRA3U$0MvlFk4IKO? zdDxXqGYc9`+NMLkL3^G<C#R#!_&7Qd4)EFm?(P@c=z*Mp&i&Tlr56F=tNMHr9;&;K zhwOkKdhrZ=GYX?4(Lv7SL)YmD8N3z?`^_h5WBfmQ2S0HJZ}WG<o1R~-JX>bdo4Cf? zt2|r{F3f6-(Ua8=4{8mqwIbHiSMd2E&sJGQMpxlL58Shfg$9Q2?zYoCK3ZGpk+#sl z4(J}fefhXc@4xi;g;@sgdB7LTYv~le-u9WW?=Q<8&^)U+8Z@347%m^RyB&dxu5em( z#$q~8r@DaV(V^=|Z{Q7ok4uQ_!<TGqWxKKE_?@Z^Ptkb%3Ht!^&^b9kvCMTFIPSS_ zAN}G}vPbR1>vJ@|jGqS9@P^*e1$AxCW8Kh1Cj1&$Z0FpcJg0JSVK26^(_op=KmLWh zzW!jK<yCK{-A7^u#>f!P%hS~*EB*GH-t65V6Zqs}!vp-<I(P{$I7RO~0zenUb*rrS z?#*QmuQrC|4X(CH%Qk*?z{)e)8|aoBxiq{;4-BNp`NXs{8}_Z|Gc76pqnuX$E2i!e z@gFA7m4ocEb@}u18$Dpoii=A>(Qe>;{3yS2$<7h(<g&TopgX_8VTanC&)0;<#2E6A zPa_w)cF~~Cvw=77R~TN#rH-dOT+U8co^JCyeQ+Od4}XcrB{;h0B}Cfen~!e9<cBuE zRF2NlzaM^Bo`UB(o)HcE#p_uGcXd3)dHeK}I?AJzo467G>1#l0Yi;T4*R}tn1MtG9 zt;27w-YbtU_%IVCJ?<m-AVV*d;(yTaFvx~y{iBck)fw17e560qku2BqtSA~xD9w`n z?4@eeG00ZkboR&@;X835Pfccn*Dx%y@UTnm^Kv1bC<H-X!-$u->bR^kR$+y>#8D&- zJUaJ&M)*F@AW)w~fsl?O4)ZPna`gL#vNcHULee&hl|o|H`KFb+tH>E=bzc^UM@W@- z<S0&EW$6_f7#xE)I_=ppZ;kuhTevW6oMwpo_ocU8z9@kl0fvj^Maobhv=OGx@BODg z=E8kUCHz^}9{)7R;jRESxa|z@c18t9IHK*8gD+a}o{Tz7(7V6yS(V{;OLskQsN)$< z;2F8#jL~!i4o`{;&w+I<^^nBo@>9;mUpZ~)I0~#^zcrH?P6y|qrx8~AK=#vlNm<lO z4cmK$B|~c6^2px{JO27lf1a0Y=+s-1i+}Uhvlxd~JB1Ud;ix`Z=!)kzDLCho0EW)& zD5cCfV0=#`;wxtg=bg32HT5Zc^-3Dht=-iR0jt-~*9lc;o&M_d(HH#NSzvn4Q7un& z%GVCSe+-s7{&+Gxqn9VSkBHQ4Huhjw-_fRRIKoRJg%^0-D%R<29y>F$V~MSM?7}lr zI-Hi8aT+s&!$Bphd6`m9o|9a;t%G8x6W9dl3lI7&z#fN=|DNF){JN*UL=Ap36CX7a zv_U_93N|~VgPKh^tT?bKcOFXj`%9f+BkTBP(?)K1WDVdXUD|9P`R5dme(cMIaI!tU z@B)dU$I?qdw2c$nz)Leaw_mgjJ<7y;asn4!mcn-Wzm)?I6nM?~Q#f7X*R=O8eU`ZH zGhfNAe={TAD5f^}xtXo6Ec>Sa$F@%=4N00BUz)C24n^*gc*&$Uc$2&5*FIHWVBq8h zJZ+FEe!&-=l8lw}>XN$C!KtirHu7|?oOLM=fnbbl{pHcUkz+9YMxT1lC1KjPIl6v! z*PNqkboMHDo|$$3X&{?=$#gpF5-fJxW?;*=5P$AX(SPdMO}03zO43Vu2M^ncCG?eC zJpXF2X82!Vb=^x#zSZI1V0Xokba6Nmo^Y4}&)T=-km%X<@{+ziCQR@M%em)1rBt4N ztuH91BnMhJHq@Zz*S_D%H-G-}X?&a+1DioRNtu9MmFy8l*+ENuB@L6@1bgCu-?d@G zfA{9uYwgBkgGFOk(Xt8brN<x+ee1IfcH-T@st!10yR?A5e#!40lp0H|ynBnoCSi2d zo^KBRt8c}Mmj*G%s75E9(@nFf;#(0Q*@;i9i*SG&9a_J;gK-a|{NafvcJnQNXRz%< zahm>1>O3#GIGW|#*&nn`XRP}YefkeZRi>>@X8^|_5u5ZPD?HF42H(<GD@OQ`SH+JV zpcU^|&Sozx`(^6};68pT&&fu<veWL(OnmyMgZirHEcq)PPd0x#)bzr}|BsI?p9rmZ z9KG=r&&DpqRf^HZmc*EMUkqUAkniBqQ=12O1~uz6%*(Fo0P5HtnZN2KaBu2(s;><+ z<GXhXe2MOF&D;$R<3Cq66<c2z<D8CGbwV8$Ggnrg41t~`((&p1`qz@vP4d@AkoAcJ zC-%r8$cWtW`7vH^;!59auDh@P4q)VuE_<Bk%q}$e1b%LoF(wPTH#)#pk|}iW`=+#O z_&h$bc<eVmpKWEZc%vTQz?#W|VhR0a%i}{E;2t<tu9aXdhr}v$9@q=t^O+_)$}5+t z#Z$EIe)z*qbUsHPLK^)eh436N<ag)rAUFO;o<d~|YMi&}jt)g9T+D7}ve81f`H}o+ z_SvoB#m+i`$M1{dyJ8Mc;D^Su`@L}>y@_4}Qin%7u(8C!k3YdrM-u~EkIswL+o@95 zrp(b3yv1_^#^_KU9NWm}I-d(q{-}>PcH22W$KxXdGWY4IT^<E4pF4ga0gZg&+0Ng= z;cV=0S9v|QwRmZNZ5l85SoOq@v%zJq$>ICwaVFnoC#S7@^qx=G31@3~wEBc!>a!c2 zNPQUa#ZI}-@r~?@ukoAJS}qL+`3<khCLN^&W0N%=w<q6RIcRusJ^UMa2F2u;S=*Pb zI+&N11%uA+fZ6(F{#$$FTY@uwFw!;;Di%f<u8;)XosK6%L7awCy%C@h8&mUZTpM7G zP~7DZlqD#g2u|N@4M9lsW`wT*d=%C_a4i|Y7)p=OZEKaXMhE8e94#d|_<+fwn#o#0 ztrJn-_A<DW;Pm@2YlIwr%yxoiv?+f&p1$umvuZKoQ9lw!vy6CWlt6hM&xPIZt`X*x zFK7gKI)txt@TS=*g*wU^xmqRIz%vPE_h$t4N|uH$yvz~x#gF)sGT!UxOZZYU4o_gH zK|zo#)VaO&BAYeNQHt6;ZBbAopz5Prr_%@poFrpIQv_xo^s5<7!PuH~fw317Bs1-r zu_M>x7$tY#OXy~_BDJCLo;%Sg^;&nMJ*jVa)hR7#Mt!(a%nc}$Y<7)fQAX#HtX{U% za5|D1`SYAF`26_XN4p<6B0QLxo{p3BMH5=L6S}I*d5^<pwU>J1%U)k+pzd)9+QJWp zLtkurTsQ)T<x-B|YLEQv49*fDg8(D*j5!VIS~D{7@I!QxjpV>v5AoJLP6IE!k#9!1 z5`;GIOGGoNp^?)N<hHyw8&<zgD4NVX>~a}_b)CQVZFHkX$H?LPdG0TtI2n8ggRSDh zILYe3hkQ<uAR{pG8%+Dq2z+|&09rt$zw;8x+qh9O61-}z>&znA(*^k0)X&~WN?me! z;jgXCEJHMJTPjpCU^B?2?Ck5X)`4&EIySDx*%p`O3wV4@U9h1XyhDrfOP_0GUn2-` zR=wd*K7;MxmjqYa>YUlUA*k}xG00{uwK4+Cev}oo(YZFd`ZwyVY}e`2_|5!*qX6=} z)!9FO-)}VXf4HW@d;BQ4+69w-fB|3I>gStnll;1_9WeY;j2@iwQ>j0$qkQgPa#iO4 zcOO1oemY#pK)W_=O>oAi>ifNX-SV!nV;g$D7AN?ri47_LfBfx#&9g7;hm+M2<x3>& z-fU_BhCNv!@XIg1Jo{6-y1VqUj%j=nBj~eMBoAxPo#$V?DcJ9QDM$sPdj`jzA9;y+ z_^|p*huM)`z+9ht;#Or-8yyhAeFixC1c-q*FV^v$Yj3F(fVHXfGcVjIIp-&aXEnwf zx=%i~+vMt;uf{JnO6E^@McuPGjvj~K{PX*|CsxuE<qsZyOgyWM7B{)S>I8D$uoym@ zh|<6C@UQYC&Owvh)8WeN3`_%^uaEH?>?zo}?bPRMH=(t})n=A|lg%AKGvJ_%Z#BYQ zhtjjVI$u^^`SzUqyXxi25fa21I0?~-N#ZfNy)4dbrx}d(8=ful-MYKJDKK#@!oZWO zZEiw74UQ(;vt)Wd3u7Q&9<j3z=ef*zmak{?Jr|Epbb(JZh==wQn+=lAz#Ao-EuPY^ z{%uU#JYsx8ZObR<5<B9LMz5=?4ZqPy=Y87du7M7DnE|?a(N+om%lrx-BA>wHbDlS; zTt457&NW~=GKw$X<K@vck{|J2*jjcy|Fl0Ognx9-;4eLEQ+Mp8l4(Tu7TzSe@fhxO ze{dOjTA9Jd!T_DwscrP_iV2A#dh1Y5h^B|>^#yBQYFFLkgAZ&rH62f|;NpLc&>b5* zl_h8TJH89tiw^4hSY|u#a$<m7@6U7&CXp^4+G0-|ns?A|25W2cx0bMyqxRJg^$O$5 zfT?^Kj{c<|m0?qh+qSD5-=kgrb2?5Pl@+s1tOa%2r%jVXRY%P7B?EQud;alDeoe>V zb38U6|N50T{o`x*%0a^>f71$>a+?46kN?PaJo>S@$jPsVzxkxILV?}Y)a2!I#eHsb zeF0u>3?RSdGdn)^zWmsG;`S^#4QKWEV02H13Pan#8s1;${M(Tm_|C_d;?uQj<LtPE zMxUwDZ&{p@YVB#$OEsrsJU&C-^cX+r=nSHb9*rVSd+O1tp*4Ml!$`S5$N$1*%2n3D zAv{JW5!ipQH!iR4xIcUyg@^xMUz+xDgTJ>T1iyd!(Oa{7#yhY(z@g8zeE8a%#P@wJ ze1Mf~`c*ryI+Jbb9c+e&;RXlqC?VrnnL}pySbqrZ`W36>;S(IPF)3)JBA+K8Mkl_C zU(;6zcY(s-*xDZbtkG+G82TZkr_AKwBt(=2moy+5#{><W5l2S|A0cppGh$gImgQJ} z$e<u=8)X<ltq_i)P>6sIe4Uy}_^O9F6huAkC_fByJ@}LGOVqmVK1Vd?Ie*4QsRb1y zot8#{MXpAHv^jJq$cJOXn^8Otx;6xl`yRrjjBo2?VJzYNV6An@kv6Ap<+igEqdV{7 z29;=;Q8@`_#yyIc*oRMoOZb3i6kj>XD`g3}hqmy-wzMy<oCHDyur++wHH*)bC8rgP z+uo+B9@$BbBseqb(>=U-U3nusXhn-zES+VJ1YL)=v?!SAL_8HBComTz-8VZ&cLc;| z&)=pi(bc!I%*YB95i>kFofbwnjx>05X$(Ca=v=6}J%Q*p8Noerh8OT7Q*wjH(zP92 zc<eJ3kB)^rX4wO-cYk1k%|O~$wyQ5>aP&&x(5#VSyyY|{x@MwYzGT34GP~!cTkeCc zvmtr1`Luv#J@a<KbQD}XKkX~8UR4⁡9UOl$G6%%hQ0qvT$z$?=<u92V6Q6xPfPs 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 literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/x-files.png b/Unit-2-Journal/Unit-2-Journal/x-files.png new file mode 100644 index 0000000000000000000000000000000000000000..b9e2c03795e1d5198ad6e676e577d26b57cb9c2f GIT binary patch literal 2160176 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%0Ak!%=*TYc#l`3 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 ~>|{@nfH6P`>o< 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ೊw$U8zCfK~Os(uFFJA)FIh!!NWC&ko>~COt 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ⅆMt0-?Le<_P! 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⁣6o4}1cub9Lg*#u)(2O#a@xuA3FE0s8yv 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 yODcoj#eXc00iBG=# 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 =~pPBc!q`=hp~3HnIj4Ju?k_)?wWdj7Ihh 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�Ll#^rP8)7VFON^I= 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�-qM#J6kn3<Ced<e^Nu`wWZgv>OC>PvE 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 H38 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�GP?USt)% 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�w!Jm3%Hcpo2*$Jop$q1qC*B z5Zrs$f&5tg7RInl9{Htkr<)Fm(ZE$P+s9~NB(FbR;Aefx=CR)fAq!sz1}`gS+je@m zd@Ba7t_UY+tYeuT&6esws0Zw;jPx=4u}=xTfAgnk$u=ACe5_;tw)f3uhu6m%!5@86 zsBJuC$0s~iAEM#~_!`n?1^WeX9T%O*4>c<AfuAwR3>WVP{ifTc^-n{^H&j<A#0=@S z3M84Ix+i>dmh6`=eP5?c5Bk-!>iCGT)bwLB_IUr0U)&&db{Uz&Yl9B);zI|9-GAdG z&BK$OCR_Q>qX|E){K5mia(g)&nAZ`3PZ8ri9CxB`@c317&&gv*cl4+4$_k!5+ZS5s z`wl}~U8r4@EOaiOnhppCe-CbK2n4&&{<=@M)`q&pu}g5fqVALl-(-m<yqxt1pC^J^ z(SsEuLc*a?zCX`)ij1&IuFP@<V?M!qbgK&<(gS>UCW-;}m{doye93d|E%(Cl%0LV! z^Vm!+Kcmx(4rp5L?~5AmI|OcRnd;(at!^_oul;p3`VG$8e&(Psw7l#yQP8vk3w5js zk1KBV3O?{BV@Wo1A8)1Iz-Z~P8gH%UaAwQ-q){@CCj9bc3LSKIW;NBeG@&zD@Ru0) z!qRFEuxlM~x>MTM>CpyBYrnlTNfS-5CZBzhGTxq54|KA2uJ&5=`s|hO?4rk+B#A%# z@tikRZk-Zg;cp<~eX_Bw>^U7NE|Mm9vNh0eD;>Xx&qq%skVK=T@SFY^oFiv-);Ub8 zxH65j%9*Fi_u$z&>1-)~q+JqX!_Nt|3xk`C;l;11H&&)UbUvcAZ<R2d`lB7Y!4@6$ zd=SMXJN{txC!JY#`Li`Lh$o)evotR0g}v&~9xJv^{&N?<yx|4s`9-V=j%#hK-Z$$g z$zWDS%+!972fQPTWugA1V@+Tm92Zkwp<tcaR@6!bzXJ!4*5)Ns>B$(K;PmI0?>mbH zgc2P*j%{dHu_bL9@J<;wKHvCp<tcJl44dLkr<eat0_h=~q&))x%DQkl_|bRu*y^h( zNAZ!RO@+Ggs5))4{mJ<;Uem=GA!_Xq`}+An?HG;@&d=HBbUWIjMTZnm(4{@iCSI!B zgTe>0afcF~Ef;(l=<43^$2;YQkd*~mz$X8kir%?Y!{^k|;TJ^qy7plQPra|qf9oub zpZXGuiJU)Ix6Sq|&&u3~e4imJblI}@BAm4Wo;HAWa0rdBu3FW{iGOBz?+kz!+_Ev1 zNeq~N>3oFlMus`qIZ3_gf-9(~m@;n8s4=X=iSJ&O*{REx)!+kxIHB>IdcZ$?*C!)( z>hePeP}H!kLGdnvN#l8q+N#DJQ3Qq0W(Enj%JjLgMjjc3&dC(Hj_G|ff|jmQQsJX7 z8n(Q#FxahwH>8X2j!_3~2^fHTqFgjaQ|R!@S^nwnFL!@vz4#yg@Z;T^zxfYshVEN{ z(e_-UAf$~d8j-cv$kLfOclY$0c$k7D`Wb7oLEb3`KK;|kFiN@3Q*8c}Am{w!lTLAe z5}*b|vOz?D=ES;dJTnRoZB9d_Lfw<&MGFC%C0pKk-(boER<x?f!8i`+!1s4xfeu_k zKJhA`@I6Lb1a%ocCyh*lRXOrW%OK}4@c>`O<L=_h_V{R)GMek5e$wGh@;j&|7#uI! zsD%*{odEJ=pepYzS!&Q@yx(9$MiAdVIoT6m!*8Fqr~#oP=*M}j`mXTp7mD}fpbQ-* zmEE%pEHTarxLHED?=@l@{8g5fM-I$RMW*2!rWs<1GFEh>^)%|Em19wH1iLKbNfx&T z!3Ib0I(h4)!Ep$cM{)klF?cL$@?UrXNx)J>ud`1<yN-ScFT-e|7eVMXdMn2p`sSln zkfeA)V^4*O*6~0HJuCmED|2dv>|1E*hK4MgImpn3fb=7O&dQ#^xB^0*&MM{d@D+2~ zg-OrJ0%7!A#}<g;jTdkZ2kN{ASQ)N=mo4laoc^uRS=v((4pRJQA=xWFcQ;^i<$*YU zaqfpl<&7^_Cspjy27`RyyBwvV>sO;=DDx*h&_j(*d}Ql*XC(yM)=^*L(v?Kq>7-XK z;J>&Q!sd<&g$p|2Aicz}>%Euh>2()X%#quXFT7+D1`qjB2UVAw=fN4&1^++1UuC-o z#LpFf$FJ_a^aD&pe<IeY^Uf!D-3Q>m{oz+@U^@Kpq5Y@!k3T$guuQ(!N96B2Vfn=m z-`6p&5n6-1ohx-r=u@8_(2&dr7gI$V{^VK_ftaQ-7?m>q?@Iy6Zp$SLIzD8PDV)kS z|6s<cph^x^onQ@%Q&C$fgcN50%#ZM`(P5wQ279tE+Py6Wz_PdaLH|4+UIG!2;!k4{ z@B1yi<RPxH8SPIq1f6vUM>)wJ{_h^@;P<WEhrj$KJ*d756g^g#IgslyU+25)<h#?6 z`4o+R^o0i<WupeA(J=oHXSO>e;!Alw!Vk`C&_oVeyptwa1}mLCu}**a=i~4{yM9`4 zKtn0Ai?6)uY>btE`y>lrT>x)!@$#90^cc0W#V0tQ9$GzIqY8`I2S1CU+g?LHcqSJ7 z^30alTK|+E;%nHMncS)|ZI*EjUy8f=t#zWor9fbHmc&|X-XR5W_;OGh@!;~^`y^R< zsC`nl$<vt>me7;WupriaztuVG{6VX<F>-sVZTqq`*=LYow@!MpyRU;rAIyYqU^yH@ zH}rD?!PgmkQ5(Z-%lr1NYb<YheS{mZ+$Vg}ANk4Q2_H;9!rflkoxn_wE6W)o(`W6h zaO0!kOa9ZB>Cn+vI^r`v^mXG1b<o$)FCSlceV<mxYn?*&*H1orGd=2E2Z`Rkpcm?b zI=0$eDn{}hUh$sH!#KX{_QJuS_i10zqt!*pX@{b<b&0+Css|pk&ke$qX|vk#dFRlC z8^6FG+Y+Wm484_gEr+IR2A=R<nH9Zj<%QP<ZOTiOmmRO(r+Mr)oY-C^OR&0<t!?lj zFJmS?YErK$O67-7bi)EX^(6n{8LZ7f#{=&!`i7V6I913RvKcy7xBi@TUa{qeq4vR4 znI89^K>YoDNwa|+Km*Tj@++SA6Wp_bk6ZC8Tlte`$*ww0{K^aF_)@@iU)sUC(WN{^ zlxDPe9{+9ycf%w2F++B^f6|LlKKP4@Mh|;)KX8w{;INRDv&jCCSJK%9m5ZJea`N0z zyrueiTJ3}3o$~xV?<Jc9f9<-mPIeTn>uR@X8`!dwNWQ`?x(;iyt<M-1R^IGxgQ?>C zp+Q>o(Y7ZI(u(3sBuK3mi8mnO*WqK&___Su@e@5|I1>@{MkiPdNPMzB2?<pK9e3-E z1f-!jRx3K3P%fVoe4cNyN+DM=1Qc&2qg7IG)#drr^F@tvGy%B7CG&~zs`mmFzWSr5 zPYQ?iE#|YTqYX$6iIon6&sQDn5XG=4-;$Xdn%Arg=f()%{KU{|NQA8SS|a^_w|$U0 zyqwoYjPrKN(rM$IUbeByhr3^QP{=p=6FqfAL5PET)oiT8DIOhO)!`#QH6rhTAn};+ z<ofO!pfx%$AF~&q(BH?zw~b)G4Ne2Er6>CsJps5U$I@@vO-wurbm*Vs<xIOQ`?(s1 z*u)X&tY9Wl=Ef6*<v)*izwbMR|MGAD){OGs4gaK}Ews@Jc~$<D%*c;#v+Ag#1x$RV zP)9j}PB<!DGH?+ZAkxNr6;4pf1_$_@Yf1<=Wd+>3%0ouZlMx);Lz#kzS@Z?r!0|Tu zi;u^L@Ay<{H@GY77N?U*xy>jdYN#6d)5s`j6=rdhL-$oalijU+hIi1M107?c>~c^# z!ON?1E8nQ7oS0dI53k~DX?FP5r$%t%yHT9YytkD7W3v-atI$?Ql-8;P2BsoXvHbMs zKliQ4@`SlrUk$O44u6dijg=b2)r<Fyiau-U*L{@<nxL?Id|G>|`x=X-*I_0?Cz)!H zo(l1dlymYN@ETVoGDDdu58jr@U9#rj@H3p|2z%H)W}GEHabmDeI*PsYQ6kfk#NqJ< zH0S|4!E1bwqWnhu4*m-2|MKET5&f5ZvIxG0{B$V1wr?UB38ge-6T!iSqck+W9sAS8 z0xP8G^fz{dCtQMDu-Vl2IWYL5M?-P54#^M#!mbXc%DpTBP-&IEB%wH1v!%*_>l%#s zb+hFqk}X^7e^>lgJjD`F9*w<qa!3Cmocy;;F#KhMONp=ldsmjL?8E20!u_Ntli>qK zKRP^oy2rY~IF%9D>DlByDwhwQ5xCi%$X-@3UF5kdSj*AtK9}XKe3JPAA?20t&~eI^ z|9YSPl)?LX7PkcB9a!v0{FUd*FFl#MpZL;dXBW&KBn_7U%I~@RW_u%yKJp=OJ#|d= zK=p+94^82#&*`Qrat4{9KkMMZmp^=$tsgr*9f)i+AoSD9ovj`M`v!kX2S)Jl)8MH6 z`@=c>;pcNvX=Rukym}a3W<O7*%MS7nh0fPjj{1$3&{YGF26CU(VK-x@qZsM|=?~f! z>_0p7-p@tW>;S89OENYp3;^`+<kLDmI!vu+nSS1V_{-f-fBOC1hd=$XS=?rDtBXJN z^W_68Q{IopW~5V21HxdR<(6QkpE1|+FayEjh9f41<a`=rdtE0hqnjS1uODQguaiRl zbp1mEhdLws(TV;cpN%Qkax<MJw7qQQmDz6lP4zEyW=4O1?4Ny>4mjk<C#F8NM0HzZ z@|(whmOj}V#h2%Bv3vQ#tTLx<pTo`EO$^~s?H(`VJsZj?ZADe9u?mgm-t!In6>k=0 z1C!)aS@Q+}1&_UMwMDRcyp<L1fyE~ti%;NNPNO>d)Fqe}FLy|krL^g5%nK%Ymp2@A zZe!+Txd8`7hRgG27Y)o!$CKN>1uPB@H86FYElno>2T0WhqX%>d9rq0knMK(EPHCOk zZ|2bQW;p3k>EtQvLoj#xw9ae)3>awtXeGh(Y2|BtIzR?1HFjUU{_gPNX@gQK*BYi# zQ=GPoPCC$8GMeSDSTjRAm@|CQ<s?-D9ouq~ZoSkAo>Wic*ldjsuvvY0&QFKOd`d7< zi#5o%S|GYr>HLZniB?(cuunZe@(jes2E(@Hr?l#9`I63NeSMaTWNe?((Zz?gvr5C> zT|5PS!at3C>3YgekBxbrq0oyx$IH)3TVSE|3LJJc-yV|<YH8EfAYR*L^=zrZv%QVt z!@(9FGho|_A%8@T7t!p~Qah_7_<<`f`wVS(uvgV!#ZH$8uXh6xU;FNLAfgXFl3(=T z1^yi%heTw#<adETSUvM6X1YUh_58sC{nG3<_;@8$dt&_P8BH4;E&|)Jd)IYej^GTT zQzjm`l+Vvre0RK27}*JzqVjeZo{mp1#Nl0Kr(^mDOL>DS?`Ikd8;xaGXAS4z$$#j& z5f^}~eZJC*yl`_z@0khLQKXwE->E0kfm_+=GPrZSFMfDeUW03Vjk5W{unCdmrofDp zrWqXJqrj(!{Mc!y>d0!7f8qaV#sf5#$KC3JYlYuoTRctY`4=7^&#Vsiyvr)6l~>*# zq<dYR`Az=)8-5}DGWVN3>FBlxH~Q-Ob<r36&7bBQzO?HC2p_nHllo>`)X2<pIX8gS z^DnRJE15Ey6kSJ^BCC8ft{MM?nZP+oGqc}R3B3wgNN&w^`zH6vkK&z{h}rtVDkdX? z&vU3w*8JvGOP|x5=Q(-H(YOz7TNOY&T%ubHH2?rW07*naR4@Nk&dv0=WwKL-xTgVO zmRGaFsi+&(jiF(;*`bQsa_P74T6R-<`3L|Lwlt=9%UzF>cf-I8V}ikrn_MR5$|hJ` z*w+wZ^c2|A<9P8w!=TFO4?q5R_q%`j*SjBUX#A?fwmvxt4Cv^=$Cxn3`m#~Ur!CvE zX_^pu{55Qgk3n^g6L|ZLI28^4Emey~6+Su4`Go`650!oNR`@Z1vy4N>Sj@SO0rael z%0-WdV<7l?DbeBaNq5DU^2YlE4VVGgoowS!zruJ<1+2$$Lc!usyh*}4jTSQb864D= zD!duk*`ul~ymMDhGK5QDe4b*Bn;N^C9pcpmDm<0uRvy&Iq?8{Gv{Zq=Y#-~BmMuAq z!Y4T#UZJvTyk!;neHks!a>&)kH*XrWQ6`i*=7aCP8(2B36ggeL;`)<;9vWuo^cY{W zB^_rg3K%`TK90Ju7_$-T@VB2z1)#!GCYg+028`n3lr@PfuIC&3q#jQSK70tkmWSYd zdVva66P=*->r9Z5g8GBsXP*!}f^y^W<<!K%f!@HT!l#>TNaJNA+<aJYBwAx`$tsO~ z+;nk`&tR|74_MLS3?8X`H1Z3bPVZ^-9(dcITiljW4;w`tSmVEpw{ZG-8ka{l<dR|} zV{}I2=;Lk9b*PInIut&~ay%cJvd}?hi^DJ8;r;B2Uc#d?78hM4sL1i7B9sS5cNv$m zNAK*GY+`(V&$3s8gEt>rxPOCH{Maj`G|Cp|I(Sria&b+sAaja4VJE3VmwxHKdj93R zGEO-|`SbID{o;@EUDy5V=u?Rn7xJIuOYfQAgCjiyf}XPP4{P+F`sJMimP%y#qWVKa z^j$pG*lQuj-HT3H&aviC<5LaTj#?U5s&VrD8a0L2N&e92?;2>*RpxXQfBKy|tw!y9 z3?1p0ZnK5qymU#myzAupzInW^3cAt6&dr?F!3Lv_fLWsL35+JT%<g7m=?>K|u<`<o z2Vh~E=hcE<f<ZT~xRWA3R5EzrOZCpn>KQY<4^CHZJI!<ZiSuFadu|$UOP8HwNx#^i zlFY<BTE)Uj*k^QZa0$JYY`Gm?9NE!>BQH3Lhvn+6@hkL$sb00Mr<C(yX4K6JzW(<0 z-ShT@+WKV1kS|tmSxV_NTmu5H+fz+*El)PPh&OR(_G;CWK@Fz>`%Yp+#J@_ZF5fKa zY*9EI)$g!Nexrq+cxB7Uy|7t`=YlKf_7_vhCB77b$403&<nB|lPx)`M0DCJ`!k@mv z6CC=odRev&poVY!UVAB6I=I>jTf*5h>gdw&Nxs`6(|IKZT&yVA>ZD-7&u28u7;gWy zHdr+H3<v%i^q787sGiZifx7hKF+P5HYlU6Q#5<hP^74conb8@o`+`PJ*EXu*rtXP; z`hL|JXxvP`u=qXs#shrDQ@(hEI`QZQyn<`s#u9#~qt0H#%HWgFKUHeH!s=|lc8^(@ z`{=l@!>eQKvh*JvE(0&?Y|*9i7_{;kqYX%8^Dk;cHVQJC1#J9oNT31f(#A))(c#&5 zFzNK#w#DD4dpgx<eb7cNZP-_8Jcy2cuamySRvq{Il!D&E%~Ir*XIoJ5I$soGt3dKg zI=l9x3tMLx?9y2IrHFIbRCp?@H1mz&Ilh(vAL-j{Fn&&6nFV`?r4G7UUDtc*g6$t& zh~UcC0bwW6$oH(Cji$<uV;f|mR}L>@7p~9<Lifr(s?@!>$ycQK&uI@`%P7w+|A1V9 zzqn6DgTvp%u<*`T^v+H|IR5yCOCfYb4E~*TD2%+%xWqST`O`JM?miq#IKJNG@)_^N zi<3jz!|U_Bzx^3CgF{?bUY%TJXkQBZy2CqPQ<QKl`U1an!NYf9;^^ZkPuidV$d5eX zKHqx*g4LesPdEp2?VCY5aThFwcwX|Qt=v=M@E3mJfK+wKWFwJ$0=w@=0Mm6aitF9| zz-LQV?HE+9zDSM+Ug4%5^bQ)Hok_48p1o`1n8kfvURzaPW?wJzFZ|<UD>u~@Y~2r9 z>ZT{9KLZW<$>P;FqeEQjB!nCPXyT-m&iS)o1Xq25lwV%8{~3P{u!>1`joH%(uL7+x zv1K+KZGz$aHeFreYpiov6+VVwT0f4P<Jc%6=EgBgmYuSwEYsE>dVZacdlk_}sg0=h zouksUyrlSdIhD7SF=Z>ib=}xna4068TFD&0)BlY8-E)9h_}ggEakfO|WlmDZ*PaV| zF$i<EfCD|VaDv`RjJ;3jMn;MTdkvP#nk%k+7321*)UfztpBMUH|NM`4zx(HZzWbZs z{_5`g@0$WF+zfzGmo<E<u%B3N6|SHsgJ5v@Mo*4FW=JU)!Psw?$|!y5<v9vX;S0v) zcy#UkBJjhG8}3U{Dzt^~(sQDv17NT`4OS0(j_Mm6cQW>q_A<i7gDHJK4W(6J!}ElF zt{{u&u+NgC@CxRNQ^o~j=qR_mc(HPO?r^Ack$YU|w@PJ!m7fmDx=y{g@;%zKYxEV) z>A{oao(2Uo<DhTdRU{ATu>z|OtI5)hgz-%>&;WSbK~}}CGN#KM8J$^0*=Wa%CjqJG zRm5AaSos_M58}!qqBX+ciAM$G;Mds9MAo@0|2j66u@USl0cDZX8XMskx-(Sbn{;_4 zS2sGjnW0`vdV=LyK4n$#&2e58$tu%e(J$#PT~MYl;Nk6EqtBobF4Of2R8p1Imqvtw zE2)2x8DEbs9A^!})!4vueju@w{`eCPO#Thn6bF~#4p`4gYI3AY*m88SG?bzL@I7`Z zd1?2~^LQV(Rxt|a?C_d%oP#Vs{adG7dF+pkA4&#mxWvP$X@9)KUs(q`8T(DAIO^yM z#-;mkKBM2ImcP_1JN&=?Hz9*v8vL3~_w4-=HzY<!cYx+!J<^NbFWyN{Rx7IvSmlCC z|C7PtF<vhGcK3XEkH&B)@fxn+^)i0${w1BTE8iZz`g77(Mg=Q(f68y9`YPuZb0QU3 zB0igG`YyR|>M7ey(KE{y`{&>lhe|zdcImtCerTqzMqkU9AM>Meet7RQ8+xIE+yGU! zYrnt7?`R9B&oovl-l?0Sy!>?TG`v4HAPZL=oHYoX^`K=7*I+EJe4B;Jw+~Jg*4cJr za3r0pu}-%LV)j8#%YPbp@iHXYPrz=T-n0MGRl~90{>l3>y6J}9ryqST=54E0@<&fQ zbn1zdWDDELx_nrJ&7bPvK01}YI%xV){kPMT`5&Fmc)doN0=tNlKVhdjyJmrDk`7-| zh<}<_WiI}jy`{T4ZSHU#sBqNif1xwdZ`*9Li~Ia?&4A(zS~R2Br-ANkv^ziqFYUQ} zReIn`US}@9+rCZvK0o%!m}i~0@S^YNR*P2W)usrqXZb4iX<Q%v^FQ;emt03wHgV$V zh7Q0)7*$rYFf#PutwSz{OYbu-`b*ZzBZHpHy);|>MQ6fC`&}omm(tK9x<9rS3p@M~ zpfX72;fP3`Tr;oq#2}7O3?6u;AFtxI&VH-F>Xyd++7#v4^7;8`1SsL?Dm|sYo6!xP zeZBN}Gqr{Ll#p!z243IljP(P-M1Wxm_IB0tTasHD8)V7`H(Oc56p>aQ**|S|-l1md z1S6Ml)@aiq(J<cZdwHK$4*K{<5l)7-RgG=mx99F`@2bO@-ryVGGrF=Xe4ft_#{?D3 zR_YnV?tR?9=^dVv5qrg7bt;=y?mE?QkH6ZS+Dtml(6MxWGh<2CjPJHB6+d2dsOXW0 zx)!|hhnjnA^)S6#{T8kmU_jNR$dsa+MCjI;=4aSHl-=3Rla!|{K#flNw-pw>%NOSc z13ncy8l<L+o2@FdJoFe0OV&MDN#b#xkkWE6_RCu#@jQ7w+*@tMX89v}cmB~&@53YB zhjjQ=UbsxfgFPFmEcL2ugFx`RUBk8KgID1tyXvLEtt>gOGFE>0ug<xJAHQ;FTfDMv z<tb)7L{}GHy0p<SX?5tW%u`!0`uu^;;GnbA%R6kA7qX&-e^uP_jt@P_uTLcYN-M#s zGv%+;A`V?QUIy=a|N1W9!RNw7$c?Az4BnziLFx+rWrHKVuRXWa;-%^zQk2y{nzK58 zX&~GGk`{F<Gu&>^a5yCe*FW&ZjSn)32b@Y|zx~t`Y|e;}KHGd?d_mv(eE~F4NiN+K zJ6XNT?!T#{>zow+l<l&^_xTB11K&r)I;#1fjg6F#YY6P}YhxduHEgDz2sgp%g#5Sa zgkXJ>zCVPcLA+mHTe@rwwTjkK+bw4b5u-6%2IVxnoQJ&&D?G-(uM##g29qJ6pbiI8 zDLLFhIjbmghC0MgR4BnWI`+a0avRjYX^+)+9YXRF5jiT2lxN}bBE+TJ9><6^nvZE8 zE(64XeuVR^O7vx;i7ed5wexlxNrUI>8bul<dNEHL2~T6@=vGbiywNM2(aJgv5vp>O zH4#=w5{L(3RRyg>h3h%O@bulrf9<5pfBdI^y8EyH`9Jmn<ljV}ibkaq@8ZW}{LudL zJ;rC@_@bpZ+$es{X;&_#(t%Qkt$`37r((X0CUM=2s9XHMb(Arri{qOS1=pp5p23MO z&1F!Y7r$VNMs&A4w{%~>FY(eI7=w9BpFk=t-6;F#C3*Pex?p--z?X7vujeMRav9HY zh<H|5G%|(Zy)=hD^4MV^EyJ53bI9qIy;GkaPNP$0`@AzT^6ok4V}wpnecGwaX3tcB zcx{B$VHL`LsP=l=OzyJ=Oc){gF~BpbAFQq!cF2`%x)RrGtSLV}q#`@TxHxr)2FNI< zfIaUpt86M|o5P}mDmomjv@(~DGLLq&-k!xL%Q-pn>7QrZ0r?~gPPRkluA{@{DZ%zI zlonVSj*f&wA!Nor#gQXe-d!sp8Ir}(2N9JW4%16TN#DCh&l)7+gJXz@ev>PQ3@$G1 zz>Hf5K*caSDjXo3klv-dtK36hVa1&WHC|`mH@sBB>tKRXn!y1CA-%)r;2$n{T=)fh zJeSsWD|=|Ly%=!t2m*g`E3ez(9k}Q%VsSEhKtgx?lNJnkUH{hcU^mj<u0fLT!uR$( z-M`Y@;CQ`I^(^maSb+ppJn(+kv$WUsh3`U+eqC`3`5L#|^VhhH&xL;-cF}qAA3TN( zgi4D~_V;M;ty4mW>AyMvy<IvRY|g<#-~I5z-8bKTzfS7A{OS9)A-sRu4AnQ^-F>&& z!a7Y(<i*R`LU$df4y|%v6#JVNa=iHn9o5+l!FFlz8W7rGV+fF#<(`(_I?!&T$oU0( zM;#Pc()@A*ka!v$8X-otefXX}*&^{ge9E|vq0TiWD&>4Nn^*&GdJ+QZA$7#w$$v<l zXZ!(FJ-a1)d^=y{M9F4!AKTLNp>MW-(&2sk$2v?uZ6!*h1a$!OTRKs7Y^KD~rrxwi z))@k0c0P%`_=(d%JbG-8;@;7N_8JN(Ag71TZsJ!yQaIf6p+vWQ@kit5MF(+w*TIbZ z*Sl~~jsw}A*I|2V!1?vJt?2r8_28fW91YR92Kr=?Og7^dKGnyM&7g--@%j4vvd)pZ z5k0e`WW$GHwayLst`iYfn;|S7g7~b?M0@CC^6+;*k@(Rsz1xbQ(m60_ej=Dw5b<C0 zKeE#o<$^nZa%4M?T%1DKyUu|N9C*^P?ZXTv7^O&$N=`>g%+IW#(nUdZgI_tpAeZ;k zi*&Hg-u&w7K4K=N_+)UQvMo6_vq68heWqDnGrc;Mpy@<y_Rru<ZIh76M51sw^-O<C zdEd$AuNzp>cJl5Zr>C|9r4Kq$+8mnzNv|x2##k%vqHdkuEwj$113#DshaK*9UypIC zAgX&GljmbIyX&yT%jXSx)I3^UVTA|Vz_VxBmgSPqTSaJ(@i}t^?tDx9>TY6VOF!v( zm2e!H%(j{*teo;nHekZl47qyVa#Q?&6<l+tO*4&m*lo56Wr8OocGEwTFmRX;nGmaQ z@w+(f$z9>213hif4k+F%7hYbzNLyj66hN)KxEk??w{&ZRY02K;0H3rK7`0zMG?0ZC zzWwZTSQ_~{2y{-z`l=J~#UKd0_^kcH-5>%i6X8+N8_LHolwQ4EKEW_vbPQp4uKE6+ zFa2EL72f@VQ_9hARSTL!p=*DZ=F}mFcIEiL6er;+rvT}|Jn6j`*!$A<at6MG(DTNX z79+lV2jzwMbHVr=u!o-~I&G*^g!ax={*~u~p)MURw}`LPO{c^0;>C5B^yjo3KFaGi zA9lN6<zWmzrZ6<F6C8P4b=Mv5rd!3u>d$hb!>haEg8`_q3=9t<dv*=9G?UhX4xF4E zpF-~1Z0ZGm5H1dtV(VL>MCZyTozsJ^*;*5w<CWs_F`3r-d2~DD+h>A&P2i_|LsOG$ zH*Vz-9K*(-0&nR5n$kkkdA6GQVL-H$Cck4+>Rp4X`^;Lfv+UZYDEs;K%<S6$OhB{0 zM#fA_Glm?-7*aT3o9TsY@!Qm2_y?nsIYu+BmK*6oKU<?BqF;tYh+>c#&<VFPx7;a< zd>zwNjKAu5`XBn4T`SQx8$Yi+qoEAg$be1>;ZDf+IiJcqhXrJ;R|U>EE6=i=Pa4$0 ze~UqlavQY-dkPW`$VZc<B}AlAw0(JaGHp0|0OwVLl%(G?ou`Dik-9PR<K6H7{l{i? zf7f2!e~k{GMBpglN*II{jQ9d~Rgy*+p4c!A$GBekmDgYKoSUW0o0%g`N;GZF;JRC4 z#i{jw*Z3M8D<gb46oUm@FIyVCQugR7e8yCo0uF%w3Y)BNA#=pHa6#gyusx3_0=wqK zga7$bZuBu2mc=<692t%`7>wa6d2%Sn%IoFhKF>t8aU(c4MfFTx8%Zv`h74O-ShTR& z9n#^jkji!Pn!yhZ#9D&cRJg=$^7~LjvF}%m$BY)&vDq>?m9xV{wv3`m5Pg$>xUKV= z+*JDo#}AdyF-9{4qiTHZr8f>2XW;0f!$wwpI;+|Yh|)x9gs>Y~C0*(wVP-ZG?{vl| zqX@N+u#{|kalHhqmt*;B#Nfv&y?KYcOMt-*+RB)tQAYIBDR!_uJ|Gni98sESQ$FXr zQbh)HPF%quy(J~#=aSZd4hKc=RN^l3y=Hmw2`-!yn$dO&MS@04l#_cr8BYU2ChL5J zQ`x8Mqo-%+$`9W&q6@#HK^i<$6q(@OP2t-bz%I(IA$2)S6+B*^<uvK-;F3Z73t9FF z4*E}AAU!J^CVP%PWGnKZ)?MX*w>LaRbS-c9@uRSnpG?M>(yloIPGOggz)!w`xRs}T z@*dm3?YH=^%ekd3YFFTQf#o6#*O&0~PRD2ei@TM5qvNZRPU2tu1xw!9ymA!PkL?Ph zj90}89sc>%tJigMf2cF`O()#9tTkqS>{#?q4kr5M`@1I{TF90j=@vNU)1dq0``hU& z0{Bm}cw3fP8Jp><apzhcm(HVWItH2abxS$3d7p@CSU51*U9*ob_z@B;{gJh@%EKmu zV+7mtfgVb9DC3`gR0N+@LBR+Ly<Cd}{X=Io>?s@6b%g60tHGAXyBWHN4xM_eGy7Nv z_d|PgKfU|YW_3R`tGn;#{_)Rs^jm>aC4bG}hh_P!J_$D8u`=UjY0f2pz175L7xj<L zn373<h9er;pUh{UY~k_V>?#_jAK@wAi#jBJZyPXh*qnxuQ)}y;Z7|?f9Vh2-+#7Uk z?+8D|(_5}ePsHieJdN*9+T!#n-oO5JGx&W*>b^L*aC7_wnb`B!L%2s@G9(ve;y6oo zpYQ4c?HjDT$wJnP3ut9yWX6{--z_hnvW`ae1AfvATPoHWh%H;Sl+10<qEFf&1y*kU zB4nu-+m$}lii)3|G2uK3g99a+|J4z#azNFMzu`-_rrWWwPN11zbre|IXBfEIy~?sj zfBY_NgABoS2-Sy8P*g_3GDxsNW&BBoo6+u>j%bLkjkOuiXhcr~4EqcbdP{TP*CsG$ z?Iw6PfWd~J*Ln3hrUwH}B~TZmn+JRPv@LCMZl`>YC&?*iMIJ#dZ+yjAe4%T}!B&B1 zwe!gHNwBTp(7~lk>S@l7zL3+}J?1YuaPozTh#E*6EK+`HdW(_asy!CY8|0omlpikf zi(PUjHDr@@gDlBuD;e4!%a-UDyySH-9)yptrUyz;H}C+-nNgGkfBhrEvhIf`ryhVf zFy$OB<>{icbmDBesPo<a^mAyI`jdM*tEEO$ILWc%Joba<1}*5Fpx}?b@fyA5nC`;= zWV+H_bvmA1dqu$p>A>h-++YO9W#Ajzl;gVYp20aZ9vR4YXce~v1$@Z|vS5+R>$wX} z0MSi01t**)7ir<WoXZS{f=kb3!5e<3t<(dAx-R$!cB#P#mODAmwkzw<L(4z`TfDm9 zYVT;<E@ojTy>utfRnB$4V0ibNpDplu7rzTG^dek_e}xQU_rs0wkRPS!K1eJL>Q8y` zrZm0Q|A`0vw8_}c(u<RMcctFmQ?%hz(&1SA;hJhvn=LtXr`Q{e&0lShDZbRa-63+X zvP1iDGueS9_w@~{`)uveN!AH92%}x7N&K!su?K!FJ3Zx_{0b)^%Cm2`N5$gwkNU^g z){M+p*+sY2ySmzymkg@*{%_YaJz^hqcaYBM$eF$6oK=i5nxl)DS9KO%sf=RSC!=na zFr((Ej0T1{_%9op+a3st+W!mIOOC5N50#bcy892`zq<R?H_fD#NQGzQ@KtFXc4aL$ zS#bY5nX$4tn;BwZl%4=JE@A=F3yVQ2l)^*h?%hv)mLiHdLCUccjbnv<wi^X2*Os?w zV5Go!J4GLpRel7VBfB*g2+cu4eWK2hSa*MD`SQQCPxtq~|M$DU`SthV{oUQmzURmx zIz23~tJHkpd?WqwENSP!GuG(S`Px3Dc)=NOR5>MqgNh3KC=$A!B^%@18ZDt6kr`-A z*iRY?4{wag(kX@aqp%zWgDzheI!gHYeQ66}tjC~FMaa2Idl|93IE}-2yaub+18(rn zX@F8C3k}d<UPirSpYa0b7?L1M2yZ4GU}h|?%0-$qdgT^wmf*xytYt>=CN{RZK!fRY za-a4of{!iZd;g{qn+<BLr@|a0qcW``1{c~^8I<{j#ut7#EQ4-`vzb_<`#qLE9q8Sl z4%&re9h04XID$92ymj>$;uBl&D=z0iw;D}K-q}lW56OtmYpAd{4MWeC^l}R0SLrLg zyr_)_1AEFQ<INJS!n(;JeC7x$Q+}2xn*I6*KbP|NZ*Ym=makC%%T=D!(3q~3hmEoG zwAS1H&rkF?J5QJCcO;A!qx>-4s9bd5j}h+SUAYd~h&$sgxS;Y((=+r>QDJ)UId~mM zhXVABhSDhqjcaODevjkTm4;Hr*74E6n1)>x50@=H&Pdt#6Z^SWUOAP&|3dK7{Z`h> zJGfti5hr8#hWq{v2N;G+d?$4jlO-D2;_gzD%joTfS3Q&6bxF6da2&wFJn_nswV2&M z=TfjRzZ>km7jSgs;Nf{ZU%D@8udwS*pRTmPUE!y}q``s0I7RMgqtD&>LAXu!;kpiE zDJMJWhJUtHFF?KWst!#?m=3A@g4gnlSDh^N&|PPzwHev8zrpO!i*!mwZds;fOZYoJ z<3G7J*tHXC^JAFtq=xnEygcJ|cevYMH-DS*fNR#vGF~S^ZtyYv9^b-wa4LtdJ_DNR zUVenn-AT2aQSp~;Px2WrP8`XmkCmeWr>Ghb^f$(30|wZVzNqjrSZB+{#}3%Ld)LXz z`7|@TJ|Xl%EngZ-mf!RZQQE7%RzJpxw*Hu<PTwno{G1oCI(B7*l}YI8S*P36<AYA= zZt~sfmEo}lQ};x*KiW!GzihxUW!T=t=tYOY3BGLJu{!UWPr{gm%xCi<d@5R>>A3dK zpw`2E%W8wUPr1}7o|?m_e9s&30E0d506*JEN~?~^ldt{3$A$9vsUx=zUwjaD)s+VC zHI~#bTW*IGPKg|nHTZN^7*SxxbUwNa&ew97Obx_YDz1L+Pk0}G;qlr2QK>~0I(mH; zDl8NhXv=9UBTxoIo>eaeK3OK;yE=*Cp-ilfn}wwpl|j!O6a&4<i9Fj5#cBGsZH<#w zA_RjT5mF6Gv}|ikVPkIP@PPx;&1xTQ57%bgYzbQV>?tj+yvO1nx>q5MrytW54b`*C zFIucJ2+LQ#5t1&xc~j}#_i2yp;r@Xwmz~U^70(QisL9nYDyNrq=3I1>&aADW{6Vf` zzZw0uFyIqjz)>4AeKNT6?p^+%84WUhY*p7d5dCPU2XxfHzf;}cY-xYz!oVZ_(4Mu@ z=!mj3mEkOys_Sgu47C~b+QZ?$bX9J)rKp?c$Kk|pgzGuWCL-HLg_6t1lJDvcZHnkr z)6Kq@O8z4s{sxW)AMgbX9bI|0ls_F|yY%~2v+V}Zu9MR7mJb7p&&9jbd9QO`xHkGa zz$d|EA<wSqaOq34!Rb2t{I_FLmd0~LM8;stv#f=?&(|-ZnDg$AM>Lo*@fTpwUHW%; z)8l~B3ot7uK?st!oClAu%9e(0p0)u{C{+(IxZp>F0sGkuh3UUCz<g5p^balq76!(t zlg|5zfL{PBKPGgYj;nm+8jcr$#lhf9zAyD++AQ5I?N#5)d!+%}CG1e{WkI-c!Xk}{ z)4}P#B<#OC9!ZX^ez9PDE@)*)V~}#JSOcrF3)9{mK640_l;SrQR2=?h2hy^8d_`}3 zm>&%X=VI7)YGRVE@*wxc`y5f9-(J7XK3qR-K>EGUJ%)t#?(2|rP7Z%*BJih(aNZGG zl(D+7a;^61wMbhY!lAH4IJ)NV3!~}%Sr~q8#g96<FbB5TCi}~)FQ^m|aI=SFkmm?k zM|Mc$+}r2zs!r(-ee?DO=h_IcN)-}}&?uOt!<2zR?ihEtCdm6n_BipKd>41}QR~Ql z+X&+KHE?p<eehT3Ajer=r*gedOLv@oP5=yzQTQ-Q9Z&laG^{j4RLUI4_8~<JslTXW zhym|%5=6|&KCfU5d8`3IfJ}Iev3PbGB89}LDf3MMIYo~1oje>?;ZeV`bUy#kX!<|> z%fH?Im;dxPcfaZL81LWIKuSPHs5@A;3gFG%^KT+JzU=fr6`T%DKhBootuigXM0|nU z(ocKi1KczyoJJ_Y<P<%<jn;{@KXX>$=U<7Y1c$N<_Hi_1v2qTCV{C=#*rJ^iL9^>J zOn3R#C{tF?#RguU^Bmc?^f1bKN`tow!_R&t*gM>fj?o_marA~9DRvU0>HYVuMb@e! zkQe{Swais|4IqG5JJXW;ISr^Z=%O-rh(j%@$ynoAgF<DgVlfK68TZP0QDaJD;^9*> zz8^}T%r)kA+OnE2D>K;ht^-6MW!X?5f^n-XQyPOX321b{Z%6+}3%raJ??9G@D#%7s z#t5g-Pgm11c;gwEWPrp%RN@L#VaA2gj{}8b&-At1Xz%X;j^6?9Z5KQbZ_pB4a=2ai zNjEt;k>bwG6iJ-00#{L~7_O|IIh)4tN4Hst)A7q`1xW=*XTVjO3Q5CbFoH*>L%w+F z;HOeiVdYpx`zlMg&jxw}4>ajHGRPFKf>ZXbsdwmL=gCa?_6FDJ94_*Ni{f3=UHTTj z^D#YKaRHC?a8?xMmcAdZfVou$!2`o*MKpNu3VHltxo6wUH~Qc&cV+2_DYWp=*|h;3 z=?3#cu&5<FGL-P*7i2U%f!TG-;&pzkyR<I+b$$JQg(=|Y{@|n+f8?@^rTQ8co++D8 z36GvHS<6F@))BT8bjn%>Cp$12PqXZw7mw%Ycv(I0eY1BjYT!NCp3tfwBfR$FeriUG z7njq!`o^Jk^AR=9Y;)PnW4Jg?nZ_xTt_@|ll!lz9jbvHa8W7<PS7%QcgxtW(8l1&P zHre}anPYxo{184JN;iVFa>C7QmHL7LtQ@DN`d1laf#=~7K(_23RPxo4Q91dK-p$Oa z=X}d|1IT^XwWDmSbKl(E>+IHO|KRYc&K7v|o!V><tViVqf35ZOLMhj!5y8KgEIjKt zmPey$9cnxXhcz0@HF|D7`;sL(>D2k7wBVEvty^&slivK)p?}GkEG;>9W&(Y;Bv!#@ zs0_&ZChBahGBkl=VmMV_mzPWjx4Jr%A_e^8iR9tGT^B9aAUY$`xq;8FZU)FDH!Eud ze1n5GW7{Bp+g7YDQIOd|!oan&TvWS7oxt}O&MC}&hS!KMIo&MSfXF1Ceib@>rbqnh z6Ng(7GI=zZrXH)*($S0lh8my$td$G2rO}yuNBr8hFmU@9UAEe+lNo<brw?s-TV2vp z?{k=%fnViNs`%E=XX*}GrLEM7HGH3Lv+^lsTR`x+wD)x`(Nj%SIpx*)nc9rP*#};1 z^#P2N+v?hA{Lleu8~A8e_i5j*Unegd-acuceKu>mk3nC0RxnOYwx=yYKG;+p2}ykK z_qG8W15`dywEex|H{PO#J;x99IjD*iSdzTDvOw)nbq;-h-c0&BN5S49l@<1`K{FRx zCyQ)y%bla2!4exRX~kyPv+q*}En<4Gwvxl@vaNk#BOTYSo6b#_t9ObE;_58&ME3>* z!-XzAmfnIidM}+n1_LzrwE2XQi+l#q96II{a~D~tGrz98=;S&?WNK?x8MU(vjHpZT zo^9X@{gxJu8`KIXdT<8btKB8;2M4~ueLO%@@3YPDmWRH%#GlnJp4Hp8@};9Yy|ZX4 zxOze+dC9#Jco#GzmGGs{;a4W~yWG9I++pP(KeSXu4aQP@`7{3?y~pR3Be?T5w<Mmg z_t8qfjuMoX&YtvF*z_9?$!cW}_J!pa9KVM91)H9Nhkl(|vM|Xpp~r{A2~;I33SN{j zd>gF*6(-)FgReI~e)SfoodiDI38I+UTOcnUN}TmA&GL=b^rbsn8@<!V^ekU!!j12- z0)c($>-n_m>z>W%8W5vVRbc(nq4?^oq}Od%eXf45w0G*8U_DR2-*PbBXLgh8A?#3p zWMbPPJAEdtdRDq<%GlE1c*1vu&(oWKSi3fAzrNNDwil|E&NF~Gu#w~sRif9jSfl2z zUVL}=eV+z+(h{n=t}&uoB;maI)Te!nDpsHhJ1nO7oYV6hHheIXFm$M2=Cl!xAukKF zep}_tl!cjreV$W%)}}~}?j7XQyQO6+9fW=Aem)_?p(Ql}$oPCa@KX%;G395C{^6d{ z13Cl|4FO7N-^G-vIKuQiojwVV(8U!lUPHk?PtJB7q-2;&z5DUaySxASPycfF`~ULi zyTAR-Up2~6V=FwqeeEObM%?3RA5&i?91h!;6f-D{270KhtYfemD;Z77Ng45K3V`nZ zF*cP1qj33qo_Z)eRqa>E7%oLuG$6f)ekV2hRfh8`iz_ysx-O$!XQ_8GI~CEQ19y~6 z@<0!Fj63<k2!}Ns!X$iWU?u(<3u*Dl$hJdDw%oL^tHXaB%59`)4*hg4>6HqAbEe=i zsEVL_9+M8xoe!4!sT@lC^hu2^I9kHY?)LpH<$#k6(s(dAWd}ASl)HD05NjOJT{@}5 zuTnS6ImgCX^nasF@#a$s|ExyT%V4YE@Ho;ETQJM7{59_Bc#StOj1a3xavMv(hD^AJ zc6!#qJe3FjW<;YmLZ&wx6bRlbHF$+P9#3~}a-ydyE-K(hcLUW6nHLc6CR=d@Pc4Y8 zIM}FwcWPdlXq1s{JmMtJKFXsH^h|>|i~9_-lyf)-7NEfQuSYs<P~v@!Aw1Ox*-TGy zcr+&$M*=(jo*tguL5YtgKqszE$0fYcZf-#tr$f(W2d{UBhiLrZ>y{EmBVMn88XWh0 zZlYyhOEfz-YlM11YbD&|D&X+;)*#}X@oDkl0HtN}(68_>mG6xYr9i8+SUZt~JR4g> ztmnz8i17enT_rC=al4;#W+%!+gJg@8Zb^rUdTtHg@{-qqc7r1ep2%0kZtgvJ_8VjO zaJViAo+~?;&|Bw3ct3e{KJWzX8mnS-q@EnchL13E%J<i~`Jt21|L#Bj_U>=~<8QWy zGi5Kf!Oj}T22VA>)B`V?&3M+b*7pq_?vS0}>iBGsHp96NPPAvyvYE{QRUso}4HY)s z5B2<kp$Ir^hVn_vYB3VSU`#h|zKOs6Xdo@!L7<9%gE}#NvMSy3#0;85N62>rnfQab z7!{nja&!Xkk_SE8_cEndw8lZSXyEDaJ~KO(?|E>zR&`qr>h7_FnjZerCxzZL%bUGB z!BVGKBcE?{zJR*PiV}vvU#M@^p^mp?!vCHQI`;IB-PefVL-D$R#lv^RM1#6#%S}uF zezS=5*7yKfS6=pTZ`Kl>cvT)gL;dZ<?2rBFad@g5@nntbU}&VgsGc;$bq@6EP$GCF zFNYDCWrXMclL3bJx(0S-^NnPKw&OdBgGc$;e@=WdtJH&EX)VXrh+GFaSVymqevnKY zBZ|QcnaR3rlmGF#J*Ow@OyX0K2bP>lk_X&)&5i5mU-f4JJLkb3<^~3ae=_jh_s1O9 zsYChlcxnJZeHZf_G{(<iFAk3h9qyzdc>gTjsoalG8Wu`^K?%X|z@O-}s>s(143s~H z%lH)7Ar~*6vYQ%;+ERQg`}Nzhz((zL*tYyWup6{O@&<CN|EdQc{}N3t#egp^!iH@= z3-1qBxZy+p3@XzR^doC^L3J{UrU$r3UhaibDRiEJ1rsX`Iyd0s<na`_nEXhC+G*}O zjUXB1jND?nx~t>2Ts(nV^~Xo~N`gA}bmrr2>9$>hu;Pam5$r;n*0!~e`4j_~RxfD> z#Z}NNlkYAw-Sdww`qgQNE4tV5%eL8;!Jgw6!*2=&-v$C8Tz;KUb>t*im=kNYJ>S-$ zw$jA;ILe?i{DeI7<Kc534%2sGMJa3i4W5A6#70-->Wa4}W)N@khi_ZH{?HF~Hrrk& zHe7|xAIsZC2Ui!|?gtNiFWvrDPO#%fZ--wi8D53q7xC&0X)CH5kKT$A2EKI4F6EFe zL)XfcFL_AB7fh#x_3O`IvX_-4zo*_84{G^7!&$zQhP}AH+`%|ye)gLX>pEpdZFx39 z7#vV8T)wW?ukzegO>~IXfW!p&75$4HgjSuo&Sq(&q<FZ}^5Em?4R>J&-C`>EwE4n6 zprZz!!BwVv4|{f~Fx-|&oI0-@{1y9De}Q$_2FKGEqk}D`Okb_8Xizgk)D5TKqKNb} z7zW=c<7f>XX<P<bog%-LjKlq=bJ}>(<x@#$ns0z>C|iLW*{jRkuL0w$Z}OzUapxjg zRb{n@`s<fhV~PyE+!UQN3z0dBo;Sl%A(n|by>3&|)yS*NqvIi>KIkMfBp?Vm=dryO zjgVt3W(o_{;7~FhiS}d#lY@L2qbho^w;ZjdBg%PQ{;dY(EP|uMuw{|qwNZ{7riy?w z+Gwxma0`t&q~{;2SP}&J$$w;eglv@1H_|B9rwU<U%a~NxnJd#Ot>UMQ@<#*5PY93Q z-zKa-{Q2$O|N7m(-u<_K_{Y2d^w)oT_xFGO+tSqFXs?n6l1_U$gAq+z@|9DJ_PIo5 z-+szgZrF`yl<MGf5W{a#Gv-iTI&z=@{T4kKUhzO&3Beg4&jWoc(=$$`+VSC17*0{R z`(>aPj^Lhj0j?4Dp~`i}c7w~<QnjT~>Qrhp8O2V(XpJXu-POa=z}s_ya5jo*hHUsH z2Mxi5AHa$&0ma9Qx}Jq6$JUaoJU8R77Q^2*rw{K8=NggMseYD0JlBXb%TSzE0PJrA zAJ1DBS%;Ubn0!K>etf9031@>RI!-Df`;MY!^w@a+P0PtXbVBG(-PVz<;~NsAZ{NX$ zG~EQKXG<&C0cU3koTY~v20E5BZjIAuA0LWCe*dFCZ4Cd%?#eH7zjLe9IYu*OwRP7( z5Vi_2A~_&vtdU-(I6L{#@5E9{C?8uQzmk^6-|hs{Z^fZua)gn%(iC?&UOKV{CtTqU zc<}~t#yk4Pi}n9N2u8BdIG#R(naqto$C~lJ=ru6pQG9>PgU`Lts~e=fme_t_js6Wv z6?Y8|iPvD;y<DeZe4OGWim!Np8^M`PR`&cvbdt?g;jYZ$atnh4cXERY9`p*!IptLr z;R%j-GNBi<Rrm`>m9l~{J}exJ(wE1D59b+Y!zSLYqFiC%-{MO@RBjnB_(bJ`mkZc4 zx_@v`{`tY};HRWxbmF9w^Go_uPDzL~d=xqSyB{69-SGsrRsaR$c?S`G+W}L*`OOb^ zfA!m6-+kMPA+^1A50*FalMW=JSH7L914|#^{O}?Ena+x_J}&^KdPv##C4!=cF@L#P zn!>%;Z0(nHtB7Y8>NT@$(^a{S&1;Z;oIWbB^3zxLscapEqYoso=+S%07>=JKsMdHE zFQ=S0`7XFH%nKuQn9Zx=IJ3FY_Nh+oUHfzI8>sW0T(h^2olgBwNB2n`O`mw#_Lp$W z9Su31O*V#q4>f2(U)>(&*X#_NIgLHBQCxoC2iG9iSfLNwlN+&{^)6fk?x`8cI;8a9 zHxF$Cn1w%6AA?i}DtZi1eCmW(pUu-y(^02O+7=Hjy*5i%Wc6Xb*eHCzm#u(uBD2c6 zV|LnW8a|a1hsNO5$uT=9<F(Q@d!20PnxE9?UvYR|*>rWN^`MSNHyfDTlH*x`SI+1= zzE+wf!bhmG<mn$eyvWBF60w*fW@qa?!6QB%-g+kM%4G!{_;9KmZJ~7g)112Y0S!Qx zU;L_0d-6OhC>>vfHudDbn_9XxWbuuymG=3J!az`Ak1zKf+lL0&Kh~)&Yhp>B>9TLb zmL;4|9gRjEFg33wh1&<)+tca^Y0m0|I5c0}fJJ5V;XpXAWdqg0-b6!n*}f|sjcHT7 zj(^D*&6Zlfc*Qqb?UsGVlWOO~w-DSZ$>l$|rKi~>J)jo?@zZ2QV5g(&<krzOFmrt9 zkue(4i=U^RL_X@!>OEoo+1U}nS$u6Xvq~GN1HR;E4{}SEwe^yZgCj-Ylf$&`Ki06% z9_Xfq`Z~<%?qe%Z9IiwE@xAqplimETuyjF_!{<9=*=E9KXCVbI{^)(_420ZgXXHLT ziketfe?I>f{CCafDue#8ULD?TTPqRm<SXfgld(%!UUg*Y*%AVAr}FkBPkin5=*bCO zJ8G~MEJt_mN9Pw*8NH3!!JsQ>ES>V_8^K;d2Zl0A)UPMLpx~7Yt|a07xsK{}^+(D1 zCB?YF+v+YwdoN;ny3hW-pM=3AcTVx5_0X}w*ZDK~PuLQD^=EZ~$S&~l(4eVj<y_@{ z#&=<dJL10NllSCV;0+$+l`-FWk}K$>?M@%Mov`?tfyHA9PuYm{dT_~3C{%&-u{U@t zSNi^)Hjen@B=dl~9o*I)<fFrg&Vj`^)ABv9td-yELhzaW9)Iv@6HQ0%zTTt#GFcZt zUY3Wxh<o?;!`+V!)cn}$NZUK#8B_~4JF<nAKGL5jPcxSM+EWuq`GbA3Gk8g2KO~UL zkxg}7V2q=mQ^onlq588w)lsqhs~)g|To|Nq9-lMYNc~hEA*ZpRa&-E#529n7sbfn+ z1GsmN(a6~QmJmODYP2xtx6!rY?b-dd(}+8lY8}|Of&D{po;Px(!#n@Y(R5+DPVR?( z4BP0a*;N&gGOlHRYhYqVVMY`_21f;E6wdES2C#}MPB2gnF3wEHhFz!(kEjW`rxjm$ z1dpzQr&yJ12Kmn&67tW#|Kr{N^}qh{?mz$C-}VWNP6y3_eu#!A9i;G0qtq%0Cwo3? zmKRU)PT6dNvYy7F#uG(WBynCw8-6fRJ6GmqNY{u4TKtIL9e|TYSg-{7gAM^*<a8<d zl(Mi3u6WPa&$~2Np0kgn(o(v>1U8`aRNbaWr;snW1fX<Vf)@T8l`0RK<$&81RwDn0 z+n4e*xXc(JjpI_@VADf7*_Yxrqf@?eokpDsvS&-&*I+J>2J@>L)($u`Yog-=1&4!p z|4;*LqfA-MW<P?khKEG{<4NLwt^<pn+dsI>xeu@4#utM)9ID2^X=Iwotg=mC*6EFI zGsd6l<(hql2)dqesJK`~H(Dc+6Y^<?+2kt0ba9B^Dt}btVQJ~E#;lPuOUUrUp;sD- z8U>SibZJ<)?9ZZ80bKbNdMl^V_MQ<sx;-i2#s~N7cXi6HbOd!OIt}YV2p4X#GJ7Y_ z%`ENEl5{?U;$uou<xg&P_8DUT!9<gaUE|#>5Zhxr2&N5d1fjj3N}r7@f4|aS9bJWs z#{)Jf{gwg-1J0+S4o1&I6#V#8%<zEM@|JOffZfMW4)vDBESVR0gDKdhVSCE0tm&y} z8AGCruAGD0Ze^5g5`kCg`@i23fBplv{-p~OqqN2Od!>iQaD>YRYiSO=6PNG9cbPEd zmj81xgL<N`F!?^y*;Dl}a!1YdV6?&R_$z}*pVP-8+K?9H&rf6B_afiqM-7~vLudL% zJO3TfeW1Sk2ZK{JlvPt2qt8@=YkX)t(uc}wuf4j3oaqMtu!@!-*w}C^jE(6)$M<#Y zvQzcQ^a7?O#7A`uSiSV4JK=zj`{yp)pRRbq-j-BEzsXL(5|YdLEhtzzxegY365X1{ zI<u`yOyN)1(>l5jEm3}W_vcPo?u2E_viGT&8qwJUu*WZ;!+t_`z0l(i*0Cr}IHQ_w zf5w4s3y(fqkk)y+(K<h8n@{oNu>G+a;&doo#-}(~-e|b7XDUGh6wlXG_vT#FtxAs1 zYp8{v)iL)iUB2gwjlOHd&8GP?HXT5+qBE86bs*<Mf|Z=nKxa`U%^Gk^j;8!&e3ec- z|A5B%!r(I&>F;X?6zTsiD@Mw&FeQ2wNfS<8EuSD^l3wyxKHd)P;WI$O3fv%Ic}`=r z{D~;k`Xhbu(X|d5T~NQJ%W&IDh3W=_37ZL3PmGtR{z+&7z`K3{vqSa1G-g^F`N?<H zZp#6K?ekZ&Bm5fnOg&yFpV>$GH`_wT@tN(FR{P2KXW7)#mfh)uy-&6qNXehGLxZ*B zc`z(ncczH8NVnM_kJ8xkw)<FxVJp(?L^^Uw*_J2R<PIORr`nqay2$b|o*2k}-q|nk zd)E?v_?KL%!Rt95Z?zo0xPrqQ^Z$=F{8ygzlVuN<ZflO}kXv<NfLaAlmUPmVICVmf zrabWjh<L&_lGv$ND$`|<K-<)1Z~W*NHCVwb#QzLuvP>bXmqiyC;2y)R;gD$Dph4l2 zc}lpwi|LWAbGG4q=#yfZ;K>^%57Hzrbe{H+4q5o#+A+PX&GV3dz?u(_eWq-7aB!lx zE>gqGV=DzD`{B3PXb#T76BqD}tWIWey^LS$G~M`eeA9s}GnTM%qV_D0_R8$n>+L5> zJn+))a$lgZFcm3i&++s2uFNaT6@SuP=}~b~fT10Gy`x>7@bz`dIX>rfs=mZuIDDP{ zl=XGUSI?CP3vFQTjgO(X;L!8&v3PRWg(h+FEY0{#v-JE4TL{W6U;Mwp8XR$@*-R^2 z-e4o(2G;1h668IPFvIIpa<H_WdIw8ijIR;9_EF^v*G{%l<9#;L`GV6`6E)hJz8Wx# zh)_1C6KX}$pWZ&+{S@qT_*DF_z^z=AI+*yf6@`^WH_AGlTpPQ{(R|Y-e8QLMdsOM{ z+WrdfDLWFsx~yoy-59A->Yigcd*D*;kV2GBu6<RIvdrRieu5l9duFf%m?zlh07Am3 zuYHa08->~lfVgP+W_j`@b#(9VUcb7(vsd>;&u^*$zHN`|eTPUn!FfgqUX2o`<-SvS z21BK}#(VcE3Bw)!5gwkx#2W#f0|@_j4X0^H*;At8ol=Jc26Aki#ZJbh6ujD)f=j{j zPgu;E5|(F6qBH`kSl)!!@BZz_yZ`gQ|HIv{fAy=ozx!=V@N#}H!;g}jk&i}1-=7B6 zDt*LFvs83cg5sXi;$ryc5Zs|~yDB!k;tQqgg_6KiI7L0z5hnBx=F$YcAKb?`Lhc%! z-SNw_yPs>uvZoX8@k)1CgNN}2TxFH-9CLq^Rr(plA{i;Uz<`dN@|6L{A|&4>jI-Ko zdg0`xa#1np7;+37Z7&-*^r)E0Szi0X0vhMS$23Dr!6d?COXhL(V;_)r_>4w^?3|1P z%50n`=5uI@P4+=aerpt!PQ`D;{$(>uJLDPo<e^ijVOR0RGtfrYZw*EE@~%M-`X%j* zS0in>pMB}vSP;tJ;7xZ+_zeM*iDl04S?8|;;J?a&Eh;dZnL`>&!xz7BHQYWsuFBos zoYLUYDzjkIOY~^CO!mdCqUeq%(oxOa|ME{x$s|nI*&F9ed%+yz#TP~<ZfH;egQ60* z#EjHc{>rk~)$*?CPci-rn?17AWF*~ag+E>C|MK!ZO1klC<wfg!RCg96-LaX2w+t$* zvp@4ZOS##f;Q2>}_NlpMtNe_D`b{R~KQsrwU=2eQy5u?)agwU+`HjMcNB338(LmmK zaw^Zu?u7LWXHNk$s4+Mv=q7@T$I_6tT(=B^djewpi3g}FaZcu*1&QA^9+6kH7w*;l z{7&8zcb-?~;=NzE-tg`f56itM{L^T6Z6>R`Z>{o=;5)hhV}nihb$<85cQuM%_Zhh= z<Me(uA)|CTS|_{W8Sb$Yu<2;Mp6s!+BPz$9p$|G#bWU7$hKCwvE+nhV&KVN;7@GJ} z^ak&On>rO(KzUsnKjcLBG&+vmfGrIGBYK!2+6ecltjim4`3hP3Bg-4F;n?!VH4JD_ z^f?RTiB7EPAD!Oq&vh?d^_Odn;b_oloc;~Z)`S$ck?`A=jI*q<BIq?7;M?Ud8^jlN zpH2{%N3NGrl%|AdFswXyS$dx^l5Y9d04liq>@v9YTe*A+{;$l!rtgJo8@x30Xt{1| zGa$jIPcrcqa>wVEH@T9*c(#aOhr^bnC+n+$j27i+z>{U3hRN@@6<)#LV6SvVpx=8* z=hNjYX7m<xaDcmf=;=57!qr9oMK0ZuXOC8;2?MG0aMG!z8`DvEXK-do&){x8FFbYX z@D{!~F0H}&CUuAtfWiAzJF3ap^ftTc-K?OJ3<^|B#Pjke13rsiOLHpc%;wuG{j3h+ z4pl4lXZ;Ho`@hGn@k|}6zPZ&?$!~{Ikxlj0<Qff{9zh9<c!n=k%v;J^Jz~J(X{!jv zx6(Sa^Sw0i<7^5uZ{pku10Wz3w7Qu-EnVs7FUq3~yrw%(v=y5)K={M$yTJE3WgXy; z?+dK0SMlRFUEFGp^6rZvK|1({M{spC@OAbc4D#7>%MHdF_yH(;3he5@a9?M*idJ3& zL(>6wRDhX2zI@)BilQ_HRRS-ShI=jmD=l-cxF}DL2tA(L+iPWpf$=T7EN)-zs6Dcd zevmG?1)*3xJup$CQ?hM+3P|piK7Ko49d3M`rT^sgA*GT&BZGMQpDvZpKkYMsCySnr zUG{Lhq$_9HZno3=>MH#9++F?X*|op@L2D@rIN>v&AzpaAnmCr@q|FM3j|jYz4{EaS z90UMvmoobwFU7;|Tvxs7O~1u;bz%>lQ4DTT2L?Fgc+#q`FPfIQKjQztt_#-J=`MbZ z0C4<6jOXcIdR4iw7kXBOAjr!&H(Yw#^|_4D;oGnG@#hAYF)Tb7?w=<gtDDXsMSNj9 z@yv=s*X&H0{Vw{?JsU}v!Kt*h#dKUPlivhHtE=8uo<oG`4xg*NNw?t##{2Ao-U)V! z{LB2+$5zt5{nTKtb0&fd3;qS4SGNZfyu+I^4!4_(dxj6W&sUaL8~IH>?Wf6fp=kgB zKmbWZK~#4K*Mfd_)zOt<?4JN?1}b+zuBm9J-Dx0fkEFf30aZ~tkm)(Xu%be}W9nnh z837JsvUf@+!N{IQy56>B$uEtBbwBx?==`ycZ?m8;-rfCF!-fE!md3sk4GbNR$nIYw zRu|Ej(hDa|2s1)uU_y9|uF`5#Z0}~qAMXm!QTvtOQlYcViE`ugiSK31<&0hSsw}QN zV1KeMyo%~gjk4eU{>Quj@sGc|`_F&>_jkYf^>6CDCubv=Ips48O7V13Knk~hbEM&5 zHaxE~!KEeLD<|5gR-tfIJvAsVot&XUZFF|;xxfCDgt`P<+S^??XL6ib(8}<&5q~zs z(ydbNemWXpoohxD&^2J-MCP1juuwBrMT@d2vr4^N01us0UIY)Z8?A>63z82Wr_ll5 z@|E{A5;)k5E!oT_YY<3#_J}8|Wa@j7o1rP+eI3S+4Y15Per)+%WbE)8m1}7e*D4Yf zs--a>TcT{A-jgTasg}YyY%&;2ChV1PLguH2%HOva9iC+yxABBxZ3H}gbW>M}(aFj2 z$V9!l1FT-8r&tgX?>l{JBh`J+a0eTSxba{tiis*ypBqr&T&M4$34bw-Eyd>0O`b)J z<CVp^umcWrI8xx=uS#MiNq6J-8u2|-5*3e5CHu03oV~397yLOEMHeqGGzQ~#=MM^4 zm~iE2;Ani2Wz8kNFFaM?XQtvfLX<~G>DZw?eaC^9_QnT|sBKp$Av(dWh}kz?r8l~p z*hmexuRmIbCBGH^hfaFtcXX;^%OJiR8YleXZ}iT_!2Fsn1;@|v6r9CXD0!d*?{DeF zd6(ZM9{uM{mITo?IqfN)r>EjC9-M|)xP1ku9Q*${FGVQ+x;*+_c>g@F@RL%St8sF0 zI1$3h^W?jrUNF!58j3eS)B9?vH4MuvpTVWm2t+@d`>>^|K9ka0<vvv5eUrcZ;qJfu z{omgG^>2S$Logo`ZB~FZuQFc^kE)L~)HIUk<13Ia1)mMqW2kLvk72&NWxYH9pfu~C zl`s&qJG8<}hif{pK?=GNj2qrPOs4FPKAeG?!!tC8`3By`pD2+Rwo%<bdYR1k>piiI zqxf7}sFFUIRtc%QRuAdK>UdP|JvHm4!&^u9Y4?WJmKPEB11fD>7^;8J^4N$vx*|6C zc_BC&)WsI{OStIl7@X~8Y5DQ-B6#Sy{J#1UZi81j^1>e<&7!J(M|XKN_)D^QcPAT< zci}P}uOXwUzrD6-Z!p51Vx9O;@gKj<r1~zhnSA?-*AXVu7-!ZUO)y~7tNS>=%3l2= zV9fQWG<eLGhi@UhR|Jyx=iJIWJNLF+y`ve%GAuAzgr{<*6N5N7W)ILWryQ6ZYX<Y^ zL3zBR)4$~x5N?n;|I3dvkpfl#mPeX+u(FFZ$S|5T_Ikh@nRFK6u|XFA#}9QGTX1I! zmV!5kQN5<KYcPU}tX_{HXCNk@+OqS_`UH1vy$X2VilP-vS8AI~-zy```n58x8P3h} zL{E_B-{}Qqhd-PVq|I1B7#0`O+Kl|TdeyS^2P+r|M=~^&Xa2DF`RnS?)p6+&JD*)e zqfYySwqto5`i!q1vJ-<f+v}PQsU!H_x3xjp7aG+iW}(y(<gL!Az%{_}bMn81oz4;Z z>NskklV^G8gX={r67CzIBjd>xe;OgPQj0A~hL*LhZ+Z5f1HeagXQoT5W4(h~qY2;0 zNC#KPbb|<m(G%^+7oT3Qy|GmQl?5B$Bxds%dH<@zT}yx0Y35Jbv%QHPJS)zifIXEF z#8|`pl!dP$RMFAfGnnk1pS>=;oKG+8;sH9AwlL3dzOEa{@nL^TxG?^%=h;<>$vJLO zlfk;~m2v_?O<EYbuJ8+o6AE^cC=ounAKo8)uC%|r%R72U6Pcmrl!qR<58Sjm-g*B2 zbKx6)UDpNI``RthJo`Xb>7+d~ucyqD@5BjFHW>Rw-{6#IdbW1>i95I+IZ3Oov0CW( z_QOMU<+MgT8E355#E~}325>6k=rA1AAL%7u8~4|C>gnd;_ii%A8Bfnznrl*0e=cPh ztxK0}!P@F5+YxMW(9UZw&iaLGuda^H_wWzVi-)Uos?V*F*Z`hEnQTL&;4_b-k&hMc zfVRK1WusnMF4PgnKfmg~CS*>a1Y4@q=&@yZ3~nR10dds3r6C$8>+Ga@mY#7Immn0b z^FiO`w`7@PA;c}?L}YO6Y5cZPUA_7-Js8Abzs}2?vJv0sZ|A{Al+Up^1Yonu<>gS; zfFYO!xlS$zMJQ+skKKA%=O^e-I|xJ7q5&|cm3a}}H9GD&a8o*seGQadDF#PLQpbpt z&@W~S)@e7R`>%iavCi&yeN*?}@BWX!`%4wUcS>7@{PMf+qb*7k;6}^jC1}E|tSwWC z_hy@I#IB@60y@#cIY6+-HN0`_kT@7qa7@R4i7J^)=a^A>OG{}{JqHimjZa@2NWt-e z!XKwT;~K;h?tL;3s50gNu_Rh`V%ABAZwPYWik{Jz=2T)5AH%GMh|j$<-W!hc?b%Id zu{hCYi$^=0J(I!i!H-0e$0H-7Y0mh7uk8fSm^2i~q6nkEV5GYMJ1~kdZbSW?Ms3aH z^!`nUy^!A+A1{-cSt#CPBU2+onHgsMV!Rri_6DCuB3<iOxlpBNFZxC#r(mT6oA`i! zgB)FC6Jq6sR^gSSLWZN6>_QeEW9MA(X$M7=_BL@)c1{TxvWZ4qK<j?;CD)$4?$a2h z-GL~=l^@J<PPf3pQ)RFl_?;Q#8!q7wHXVcX*E+MX;=tVM35*ZUJA+?0zaq~%L3QeU zeoLX2VbPTxJY`hu2A>Y_6kA3bR&&ndNNG0<4^wDp7!+0<wStr0karH+#U?$kGaoGU zR!|Y>FE9BDN$#tJ!RQ)&!>#yR7}<l)Q7=dlK>1g;(b7YZ$18qEf&=lSI~8&vgwh2Y zzU9ax%nSeW3#afrws~M)cuf|SrCh(Okn?^@l=h1cQ_x8(T)ORrFYM^f(USxB$XA*h znqSHp6o2TPN-7U?(+zMu<I*b7r6Q*qz0u(l8sB~2R*&z#8M;1|^DX^oKxi{xg=*X# zKT_>f!x^tNX5j_??0`-5>~M_9J|8eqKsJWbo29ROepe@nKcOQeqLQQ@O#R3-5y*H1 zm%betLQ)%LGD6Fqk37)`2z+!Rc8am|bT_^3vAAj9@+q7g?e|l^>@y2Sw)=f-d7?w8 zp41R{7C)W`vsBq)xbi9e>`SI!!zKGNg9rZ|V3nJ)EPoA%%4WanALmtQjP6jm=s&u5 zWE*<x$QszAdw$!7M23}ve=n@OS{vZ_i%OU;)J3>&(DTS0MllZS@j5tY9sCYWvUTHw zPd01-l7G)<uklkyw+`^?`8vKYDwoeiBU_zh@wW`8oa5y&v*>uwiw7263Ohv>cdHAF zoeq*uDOSIe`S<`XpK$yLzM+3`12uU4p|d3$aB*up^tJ<<3fSOQcprKX&y=-6v*`sD zIl2G}Ou-p@*hz9Tb^FPZ;t|umdPBQssiPe|)8Cvv{@b==J647_c|Fm-OV-Z}nk4yW z$$ZOjSJ3fymdjVgO+LPR>%0i{u(}f;wC|8fKi2^)j*MB$$7JWAsE18Aqa~ce&o?$V zld;Zim?0{-Pm{UMn!1=x8@xh~a$NJbqpz1}K{lOGn)=i!t)FiDQuzn%C-sZAXOFYB z;Z_D9QE1<vylW$78`_8lH{>&8edwwHbk!-=&c#bC!e?^!I2}N9^p<r<jp7P|ziki5 z+*uGMP(EKZpLe5az9rea{M`UeHc3sisogi|5Pm1^>724}ZE=|4hrxK)Isw8IcK*lD zR<W36>c63=C#{-#-oD|twZDIAFY`~f(M1Ei%pT(re>rU+i~gY%KtA>G=T=6cbk3z+ za$T4Fyo+b2Uxz{FwB0DRG)fBw*#>UtLwR{`WlM32l4FV3EXwg&)bzj1?&=zsvagI+ zJujTExKN%<Z+X`CM*ZyR+$YZxUo`9;Y=G!^dBM1z7ySS7XMQ<YC-1>oQdoj}m33vu z*TV;8Nad35(6IKP=VWu?x6`=U*Nq2qc$WWj88Pjpwv{r=OULOd9_`<Xf@eB`w!+uW zj;+!|SUUg70l&^?d-A2~mm>V=%MP0};A$DiZ2)psHQi?uz~t|5xNN}5N|oU9qkf?A z`?;@NNAC<=eY3huCs+Eg1+3pX=D}k(59*cLZtqL`W|O2i^7AX(j2R{JO(ci7oRjqe zI>(lisM3A<v=Ks#tgxf-8Z|LG^!%lX7)XiE{wE0ekav}qUwpJAZ4L<UM$qY*vvw7L zWjvM-Z(qs0STI+S6<*nlRA;z3*)don9F8sm=CDYIo0?F-3<pfK9Msfyn0~%iu|+cx z$Ui0PK9-kvqD%oeqLW5ts4PE9VP=jJL|lCP*Y@iE_kZ{wcYposZ||P{*T28};rnk= zfWF<<ry-PUc6y)!P}V?}Z}f4b(cQZdX{vWRe8uM!U9o61;ggYDLI&hB&UiSblCI}) zTH4?%Qxr)py`sxovZY-E0JXs!Ey}A57anY6o1*u=r38!nl9r-P3rb){Ap0wSiQyUv z$3eK?Aa-BlML_YX{|KBU;9fBO*da!hUy|WF1Oi-f2d-?{0=zFnrn?0PKRs@i_i89N zG#yVemhjrl#CX(_`s7b%$yLK_Gd(rv9v?C=olwYd4*i>B?Opl!I|sY>0$js6-PHN2 zv5-k^mBTtr=`LJUGew45k#r|~3=l{I9-5E*DzUKbA*`}~niJW{r6pd6Ge|qMD|*#& zK1oEMRC=(PCG@by*N`Kl;9*W>@@pEEbWM8tM)Rebj+ZXhh7<0GOZSW3brwo@9PqKt zOLs0O3mwch@J06wMp?RQRmGfUh2kmQ;uGMY5khAyJA>p|r4fEH+&<4O{fj5kPAtLQ z><sy#V?3Zge&}+iFZqTU!L97_4^Jxuz`_q{YbNXpj`+#FJDa$E%AK6@PZ})_vRfmr z<d*H7S@uI~Ajdzj&S2oNTkm`iBEl$2i|<(@9j~?;!aL+jG5r=tSLG?Z*YWW{m`HyS zH}E9{LaK9(?!gjrLWP0rI=J5aO7CQKeg~d%{aoky@QS|}jmdI4R^%xQb>XLeN&oTA z;L7V}9=>fU;_Es!^x}{I{)f9i{`lkFujBP*E9ibcb#hO-2C7=ylYKVhpS%s2Y_LWL zD_N`pucVL3^c-fB{6`|aIY_ULVQ+=oXC2q$etGC$j1Tkid^143vp2YJWl#@z#0Std zR}?M*|CQ;@*4UeH9c5b07b@e}AwCb#SWmv>?x2~Jzh9k`_8(fl%tt(Fz}a5h58JET zCxr|^_rA_96oN&qC;jShdZXI><hyp2xq*fWskeA`>F_0Ew!@#BVfW2YGGv3?o=$=e z5+Pr80{^A0fNL86iq4bG7jEff9kgdPbTm@vz?Nb5K)w=_rH+}#%Vzt+pD$Byo56ku z?^-$cuiL-v6GTazb(AC$qcz{Q&U5e=7Eu0^eoEq3R1XYVm=N)&d@fhMq)<9U@-s*G z$?UTogyM7|3`mb(JO!?V9?M^v8*6WA$epct6$#~J(0#e`wR?)M<R)CiVa@Tp<zBdx zjNvMBdbxsh`pF`hC6=Y_{TT%a*v_IDQ{w*yUDJo?+hK0;6wVGP`e<no-5MkCMH$86 zDVxilteivl<Pt%Ase`1{pOymK_LH`*T==o1`}<dQuJWJR5`6~?Y8%At`}AgX>5i=h zYy$jB3N|_5oepss%FlKjWMyyhi&i3lw{P191AF1RrP%U@lloy>6~g5_2PZ!vFV;Q0 zOSbJzeYF0&nJ4w82%c&1y1#6OmR$I!bzDmW&Dlz6HSm2&fy}V3f`$kE#Xo}QH?%{1 zk9QsN!r$xQFHLz|OIoSvfx6;!jKRnT*g<L8_YTlp{Y>t$FWG5lxkKQw36ZryV!_(I z3$KlxkFY|~x2j+C$trdHhw7;JwS}B;ABn-K104_P82UzN5p;qN*bH^g8z>0j`8Mgg z43yCh*XWjRZ<nrni=Jg-MadEj?SRs*Uha;j$vwFA#Ed@L$>m(<e%i1stAERMi@l|r zd<r5**<GT(Ji`m@15X*F`9_60%XPJ7JddvK(t1AW#iTL8@?(eSye@RPq{km=jukC< zf7T`kvwvVK)8+YUTYA6B<Fmiub#!||%fGPy;g?RIk}f<CuRyi}?p1w`wMk;Kwp{Bw zmXB9E&a(8$%Am?=(<a~ammZ)+9zG4KsO3x7&VqwN&{G7xv`w`mdRt)-M)3zru6Dfb zJhpexP0RAh(%{<X6%ZvxE8k#Cg4IEjO?X(v<otm%M^(OxRro14n*l4^R5Sa8Y-2?A z%jTh^{Cv$<V!qMC=PlFBq;hBk))M3@zAZNjs>3c`<peF2sK%PH4&ex$5|)N=ElK9? zKDCkYMI*N_T8{jDhKesarZ6$9^`W>YjVP|70AxU$zfIBGCO?Ow(zh&y2z6#P1dK>w zg3&-HH*@Tdbs}+-p`dy~=-&Sr8YB9rbIZ9BoKe7iqjZvs9?HU*41fFpNIuT}<OgHH zm0!>#j-~N-4U4IF3S}AdUmAJ*Z~yZj@BYKDzPtPDzxu1YU;XfXu*0E|NR>=mY*HAw zwEQGNHpH3cq!iJ*@(3Hi1U^g>p8ba^_+sXGIG_Fp_l93eLG+aU7^s|MhrfFsj*!O~ zq1{gh0f#9rKA>4Re3YTle~gJDU5%z=gc?LDyyOz?(t#Wqr3+>-HiAm#w7tl%>p8r; z<DIhnQ`xNC^5YfbbxrBRL)<!K;SYX*SLT+q=BbZ^IF4tPcS%%amSKfp@DIO2ag8_) zvN@Q9zS)g*&C+^lHLEtVq(j<I=lDq{cWcz$bqX9~r7SvTkkNqNQi=%DvE6<);o-ay zsp?Lb5oNQKYgnectb@FL3sglpr&$B!I21&N>l_N>*Y?A;@>J}Wc#%hG$izvEA%FBS zevKb+h@Jxj{F{zYbR^KP?nl+&0e<!rTt8{%V3)Z3?oyP=3^n@DQmSz1SNPGN_|yg7 zrPIKbJpASnrpv?e7O_fQrCpl$YheeK|0sSV+U&D`OYTp!^|wNf4SGh){%8oN6S=9< zbT5+rso1Z*hPSMv<;)CAN6*0o2>B~<PvTC40&fnyll1V7zK-_rQe~bB0=?-=3Fkiw zpS}l+y)3NAtCBq(Tji2Tu_2?3lc$H<^9{Yh^$h+p^?WK`3BmYG%F^Hu*pu_hr9I~o z=I2u0b@vRWAkmiAdA`z|d<W(QSL2Mm8N?ZWWHtVSgWk&J$CJ}HuU~CnE<1hywiEVW ze|z`+55F$o@pE{i@we4O!T8XUBrxr>N6lmru|O_jx?ck?-NA&_M`bvTi%}K4l4iSb zGD@5QFaIeEZRy!6{3`4k{2HuyfWFy7Mbq%IFKkfJ6+W~Qe#5_r`699oFZHSa+wN0( zcm%lO)5{3i3GglB{M1SP8T9r}KF#;shf5Xk-Cz1X?PG^^={)3ob}~FFElV?~#?CQ> z9^sdR^&XnVQE#5n^6I_d*52K9yDiQj^h<j<>r`01bq3KwFIqI#)i;v?l*_o~rWLo7 zFyja6?G+ZzC)kR#Ms3W{$Qe`0s~$GUWeFwwm;WJz-sO8A?)pA(z~9!Ad0u<K>G)5> ztER%_JXy}yvoDC`FWm8V{EVmlgUtqrX8|`VL*XzyRBmZX)k_>q{u@k-p4lxq!+GiQ z({ymp1<BLzvz_%88j;6G$AhBznK3Ek_?Dg8Tb$=%sMrH$`ZT{0&*<G&{^Yo{agGj^ z$8$UzP6$_rQ2!ARfpI_B@isotgQw{XeYJ#e1G?>pTYV+0e-3`z>H)IeC#$N1<iSTB z$@J*(03P(Z;-bqe@b+_ZuIOCxwFSe0hpzMu%7Ej%i`C!x44?flNTqWOE<X~t0-=pp z`x0DwI~DE^FUtQH=Wr_n&(GDfl%Y5c*}BWK8Ewca$7V3o6*4dFlaKj{SfwmqNziCE z+v8A12Qn42gHg%*J_dhC$Dchn!>t35_YHS-#s-wC`?o6bzRqHub(7fVVAInnpkezg zPUWrqY*D>$NxwlMKF{}q$FF3zfzdLd*N<LqPc!`qzv%-E!!5F=R|#=;i+|wx@t?{Y zoZ#trkd?OV$M*R@ykSeV&G<Sxky80~u!FTeZo9v{+8*hD{=(!H2~OHKSON6E(DcBc zuKDm=yyr!B=OgH?WI9!|fx?z;I2WEg=3m*u_#6)hRgD*K25(Obz5cLorVc~@U1)XD zG4b%`gBRZo{MEB7TPektR(ns}bgTD^p99wW;UOJF!og11RgUnV<>`I6lvH`=D*p}k zE#UL*g3lL#>3stSxAZHg)b3#H_c?dD(q&Fz6ct^9ey6+}2g)lro^;O@w++<E_q65c z4*zZ-XMCIerSByk|M4mKXo17wY&=#Cv7xOR7^i1nB<{Q*`sctxtARdM54@{fYpU3S z0V&@O*M?q8uJXa=#tf*v>_oVILNEuQL|bj16{Zw+U{-g7GChyDh*w@{R;RRNx}Um3 z-Luu1wb4HmuiyI1E1XUPpNJ{{r+Q?LjyJ<$6z)~Tm`#N+mN|X+Q_t^mdH@2cv#LUR zYENN~Va_e$K1A%R*WcfL8}gspue%wnh+<$WnGY?=c>esGM(>`r%;KlJK9hL&T|~m= zZO&p{mGCR+-Mg&mZIaYD-l$v+<5j#7#!<a&U&=ZT7#<@$>zqGU21DGZiGobX3y(?j zij{Q~m~O>TiE|R=ngVR;R%y0phQM+nrE0%KfB!dM_rYaLa-He9t~c!f5CAb6n(?#r z|NoA(hN5N-p#edH1iG)UtM~chWc6i>qdax$WQN(Xee5uqNoYFF1o1<7{r;cd-u=!0 z^ZUDh^FM!o_sd`W;_h|M`Warf4ejFxoqGfOf;#Vc^bnTKYkEi$$p=f6uEPm|23rZd zPXE46t2<*L**3NuSWdA9yFAX0;+rWEKyY9s&zR=`lL>`Y_wz>4t64kYl&pYSAW<by zF^&TzfmFUSpsOC=gLE#_0@_bX8tV|$%;;}rrbm@Qk{N1w+b#nSe5bgj?HzWMw{#kJ z3^r%vs&pMo3b*_OH(Wg&%4?~#|DoW}Y%`;n11r_N(exuxZD2^}J=Wa4ds`KPmqBcX z`>d^2C*Z1ssKOpV6|EkGvM0b+cDoQ-;q^c?eEC$+_{nyl+A>RO;9CFDKn*VOEgiDm z80YZZtE|xcF@Ec~@Pyrb-gf$e_i%q=1vxx7iylu+)X-_titOYR52DEvX8AioEIk&; z(slBj?&C$6dAc+h*WmS2fg(qNvyN?}w?&j;`3nY~kLkfZtCZoY$1TqwpR@9yI`9P& zd$1cSLvT7-UR`aMbf>VYGKe*(pbvAdx3)=p9W`C3H2s+)SEnyszzgu`HXaD{1)6Bu z<U{q)OgA}q6C(1q(}N6xJU)@ha6u=fARD??Jq~FM)BxTIBFYKhIn?DPzxXHM19R_V z?DtbEQ1tfPtEdh>p(k`ql$3Yw)ypa4UFlKX@39BvX2U^UphW>j5A3i`jdM7i4V91g z+P$)+kAI~(u5zc$f#Lkhn|)X3f^!A$4`nK-w4mk4MSF>5>WE+3rVr6_z_vw-|A}{{ z6{bxuuN48eW004Dlm}Kk&rgTtg1~nv^K0+W{qz5=dv$-^3h(Q??~_*|f<YZwZRKb0 zpH?T>Z|Pq;|ESk_<RRA=ELh8iwrX#H$bV;BdnEx~g5-n~J$P-<6wC!aYv>HV@xyMJ zkKI3SXNV4a^*X--8GP6zPfg6Ef;b*ckIM^&kHf&@Oz>28zBiosc4g^FJb7=WsTJEt zw}4oa2HRf4V*pHlKGx7jeL>a`>22?NF<RgEYCF$>m@nP{<fb>#Ft-`5CLbIoAJ~&1 z<65bWkm&$vTM4RxWK%z$?|RX|H!x{yI>}~mE?ylQ#ss<#TZ4pnTE2U;p7Ztjt+&y$ zE#`w)KU&OSN0$Y~tt{G(nr&^67*h>`w-Onh21;h|1Egb%7Uj?ek5hKjh4s4vwCO*= zptlb_-rzDZK+$zsGxNl=@&^`NlNP3u8k^T_?X6DDu@#5D#ra@&ZlEq_D{*UD3&E%^ zy`>!MTTAAN_}d4#!9j_`3ik$i(YyPVF`fL>$);@A**k{=yTC8MHv0{JE$ABO7e76z zf6GQ5H6TL=wRUgx1{d`;@E7<FW<<JuK%n?8J^R#T1H07sf$71W-rITt?l3XPs=wJ6 zkJ2OWa;?DPlb5ewx0>7S2gQn&N=NhACM(JpXFY8<;BL!m5V`?#v_3ZL9~Vr{K$aey z9bD`f|7iQ;yEn~2KWni5su<{_6{Fhsnlb&7T><ajz1yuupIgCvPmB$Edy~;{{qXjm z32@=u?p02g>{xu#h}A&Uf{cfrUK2U*iyN$ziZA#W6ZxJ9?adt?;^ZB{wiMI##aijF zN%Bu^58kVjvgs$;CO`Fl_Dd)97ujogcm-!tJ(K8cT%3YG;YBa;fQ<E(CX8Ob`g(l$ zp;wCC7rSWVQSIA-qMy?zy?F6z_uq?y{?vrno7(*VpCU#R#_rAc+#8c-jdPQWNrd9) zc&V&aE`F1~(V6YcNF*$pyy-xw&6nwG*_$-qng4Fp8kwc3*FSl|;3thE*y1g@b3Ca& zd%D5Wg0|6*_JHirm#{bXe+FOl6Asm{#94R%?bz!XET8Kt4#zW~uix&vztQQIQ+?GY z+=BxT2fMn?r~9|OD{Y1P2i6uurnA{&*W<^He*GzaayW}kx*9{mbGu@ycO7I8p5yXk z>gzkiKH%!ljJ$#tlB4!qVOlne-(?=X47Mb0<aK(I3T)g1{vI@EGN$uui!vPZ82S8S ztbF?3cds3K&VdEh*pKXy0rlaVu+w%MB*r(vt3fZxuxb6ktHyMD4O#e|*J0AzIFrts z!1I=oo+P*HP2z^H=l;xRS;OqJxFH=X+MO>n9uP~@S+Rpn8r17Nzs0`YCrzG)XT^Vd z#A{BY22yN~SwF#X#nNQ=<vwNnQ_M!o5i}u&6z=YQX%sQeE|||LzIpSf_|!|ibC`lo zPj&RbJg;wgn{gpQXM2=gR~Zd`bn0e&zseZjwSvZpGs?Ygr8eGXtk0XpGeG8q_C&pe zz0N8aj$<4r0CvBURb^^--ZyyKD4|veaTO*#!dt+{ILji&g`{ZXRQomCaQ3DX7KaYO z6g9>hBsGjrDWBZ^_V532_dovbcXxmN>t8p}{WfQFIyoV<?a5#hIAz|w6BM~1VE5vb z&mFE4$RY{*2z>tw6exc<RvsM2P0%`A3WARFMO-o&Efj{KaM2}<<0oxOTcOhlAMH?v zlY#|Vb$Vb*k%;WX58mo8>1sQi;?)(v3zl^n1`Wf(Z{`1`b65jf9c=%=wY6cvMZfv< z<A}&R7@X85Jn*A)PIAsrfYdPulm3#^X4<3CAm;Ec+8B&B6pwc$q=exXoX6?AHpmw4 z8w_bLr(vaZG-oFQQaa#4A5Y8VNCvYy=v&Yao}i@bFs-rUOz~jbyQ=S=b;knr+GV8l zp8RaN3CrnbT^+(OFC5dEjC}ZyUj%~p{q)sA4;KwhSUR*@X1{PD<E?;J=IGDCGlq5D zHwS|?lV^NBI;8BOh3=W<cb^lz;0))S$pfnK%Zk<+fP#78FAxi!>!9yFkZjmi$KCo6 z?QH+iCaB^^*Jq|Z_{n$MpKCDet6#bB+!IFw#}3D@<wL8)VByUss;WP}lolItZrN!{ z_=C28{m7A@+?7fv=8VDWkmphQjvog>wSlkjy@A0yer2@Y>e2yqj;}g-o1hwh4s7-5 zz<A%q^l@z+AlLPRUUL0c4rQ)#vYlTt__FwsL+##h9zz1@lAfJOtLldjJ6V7bO+g<_ zaM|D{T?V5(wnv95w_qb%p=*x|hPP5!o$U(A#=iRMo4a5B@;7%cUl-VwKAT5#GN{pA zZ#&)O4K8U>+Wxd%e=*v$RlRvRsM6nERj_Ln{9N$SyYB{_$w7c!88(d!nxsNa?90!i zIi}1vjhA%2v}5mTk=wC<_VAH0gVQ;vOnth<QqooK#YEUN`SUiGRlr25Z}p<-d7bBG zwhLg->xl3)UF)mfCKSe#Xo!~i!up}vvDUQ_pEJkt$wbZNkKuZ)a-*}Ts5arIk7dnd z#)t8_^<#5E<*~EcU*NK8^<V4L^;wmVutx?YzRA$G)W@yX+J;u+4GtPSRnFGdtqxn2 zYe19}sNGu4rz}t>+i{{g?54Kpk4e)99VjiJM^63jk6=fTpU$hPt|UGNeW9f2($9ak zsEm^3b%Do8H2RnHaIO3Xxn-}f4Bq@eRn^Adn{)2!W+w;4_<7l(V$aAb+Tf$D<BP!) z7gbl|ox=^n+rsRk@A@bA*|sYA`MHUa%HtoMUeL&ACZ}vqAiMX@(wo}c1EG3C>0TL> z^Ly^S$F(*3<FBB+;aEX%gOcL9P#7#MIXo(A6CXA?@vN02w-oFZdX<0LM2S3;%Z;+m zdC$u5dLc@L;=xGA@Xb4y$#pgp4SdCXcD6td`?rZ?ukN!m?~#d^77Gl_z@K!J!Q<&* zcGufG-kU&*cDoixag#aILp0JJJWP-K^8F@e_Rd{&^f?oKXzW`Y=|NmNw%Jkqai3vx zV%1>_;gCG|Jd>;B>w&BnKNqhgP_N=_7JBw$^_(rDhls_0V!}N)qq68WAb=P9^Ymmq zu^oE8xH3nN(B0&Jud}?bA1%mk2h4^B#h&>T_(!X<uhNP82ELunzwMbB@x&WRX3y** zN*zbWrykj>v_8MO^IIk1n^?>B(ccnQ^!QqXT<P;=%Q^qR-mbUkp{j5rBc{3u)MRjI zW7p_p53`2h31*l<a+8w}e5l^i@TgYF5j^xN)1{LKOu$C1-}$og$cjIAtp7_U@_osA zb@GLiDO)PtvAzxg=TFMo<f(wW`g84_e(JOf-bL$vgTa63L&^Er0!sRbB{kL|k8e2r zGJe;;l*XT!bkx@vyKOP1w2!5|@1d%Vb;tAWwjT{P9<qfrb8T#r&^eqzWe;7r-XOk{ z4LF0p0kC%T4Yi>Uco`0M{=UjaJsUzlx1C0f$M)uu$vfEb(sW_fitnQ(IYrFIoHd%Q zc+*bb;KR>{@6q>sEbT0O9AJA&IX@TA*7wkZpBzuGPLEUH3T@71ohYW&Q9XHNJBWZo zLy*B>3KE7HDox2u)^L=x&FTccTcHUd0=DJE%)t8}a+opfh0*@*3pxh<v0=EjZ3Xe# zA+Kk#CmU=7iPtgB>aZ0pE0KitytX+9D{suxllLeW=Mp73oVvzl_CsNv`BrAXP%7m% zIINNQy0&(m_3mkvprLiN;cTs-zoX>pCZxUwDCeHBRvg-5_J==wzWeR({{HUoe)qe( z*R4D}{rNYoRB-&^TD`qKB93jQI_MrWa8|Qm9~v3--cKhlelV^%i+Hi%G3us_<(=}? zhb2Xk5<b`YI$Zch>l|_U9GZMIl(S#Ph5>$cJd<~281Kr1n;aRpKxzZY@HqTaMw?*~ zj(F77c!&GiEpz#|M%T_stNikFp4z5kDKfe5HCG&Pm*`g>UW&tZI%rm3rzj5&yk^R= zphM>#E@Dl=9KJ?b*YV2AO1;$Z&o~yO<rxMly0jBU)j5sL8ChY`xS3KDLYfU0!`rG+ zZCo?dbOzFJ8m?&TBj|wrfy*c>Spj*BUU1EpHnXYia6`Lx!KuM$OFyGqhM<}B1?Srq z&uQHFXfmke)tgP+;CQkvevLQr_LA`?aVn$2WURsPjYQO(_Ji#j9y3Dxkl*jo&G65T z4L(1>IRv&kjO>d3=+L{a;uRz&pgQY<;_B#d_!=Gbbg6T}ox$t|JPGMxR+p|*I=mXl z_*q-(t%IYZ@a;GQr^@ZV7RZ!FUppbE7EgAr{BiD+Vpty9g4joyY4!L~m4Jj-?Tzm) zSN_zI4L2wp+d?zFV>_i+*MVNAzJV%l$t&Yb*)Naj<E{S1Q~A;tAl=|zX@0MASDVrt zKVH*`lZKXAalQvq7QRPA+4RLlA|Af}9a_-9cY(uhkB;?!ym{H`!t^nIkS$I=D-iqn zFMfXa?azO<?W(q`Z?Z|pIRW**N`sXynh=4c)nV<hTU&4G_qH3d>+u`@+Qql(^s@k} za`b$<AKv{PeF^q_aAg;es6{zOYK1z%r*qb&jE;+UhvvgPX(nR?0rx4DHg5kO>S#+H zKF_^~bnZz{5`r#2a0bKCo1f8l^1=2_Zu@BUG{61}a5R+-o-ZJ1Fo5i8`8kNw_r%vS z4sQk0)jhI^U+U{?szUa@+At_G8D}!Ku4=d#Uu*&~9wBcq4N@aSn~z%2+tYqM{a2gQ zZ*3VSRH8rIR~g_-1Ep5vK0Wf}<#5;pxz&i`hT7zd_>%R7`9rG&XRsP5N;sbw9(aNN zIq~qA?6E%I5*_0W_<hi*?EFN`!-L5;7^j@<L;w22(&dAr88&vx9iM;)=ejc&{j)lP zlhdOWfXgx!IOn%?+i2$(bXF7Q$yeTeoM0~w*yMfvL_r`K>%YVT+pQKKKebY){RO|; zu6J0uU~a-H+G&OU!YjS*KeSTXPP1*njgN=N)vvw&ioKE}KG4eItNF!ff8ON1+i1Kh z<VoLa#Tt2TdwRMp=r=#ttfej9?y#+=9jtXh$;WCZ-5i``(Acrf7&RQ6ZC7p;^K<)c zKf1RTe%01Tx_8~ScXn~z`yZv7;PupcfpD$2V1!TUPyDj_8p`3@V6S?68%X|wEZHmg zHE@38sea5gJBWZysCgIXUVm4f725X=<i#sg&45*DgL!=o+ukl9HWCgVv|7`rf2*$5 zJcHNg@$YQSzUfuIXsg+FK;Ha_x)E~s#6r&xKg7lSeE3??e%Hz{`+1%`$;V{ylkhWH z?3h0jr@+^WaJ0L{<5e6&+ul&nYV{Ugs!#5-DYib@O&p^qcGPl!(T2zUN~1UI^c>_A zzskS*xxC=5%t1<da8CcPoSJ;4MuC@i%FZsxMu`f-S=QpclXxpz-7=IpHh0y((p1{t z%3NiK`=G0S@N|hbhcxHn5^(X;aSe?5`RR_|${}SuQb>DCaDr!j)9>R)YHKhLt@A~} zaL9LL8dXDabO&OCxa14&<89HP_32s$#fKOV8R$N*-+5kJPwP9Z=$q_G0Nb|zHe0ac zhOyb!pJ~U~=wp-)bOdws*YVRMB;)t86{`%a_#Vk{GtjNU`s<MH)GDrt8vK37Ud5y7 zwzsFiQ~B5Vmxf4{i3gS2TYJj)mJ>G5&xt*@MY@JeB4usshxma_xU!K@+M95q=jh_m zmmz%nSIi#K5DL(gtAPT+F;2639{)693qA_4IWhvson#0ZO=UK_0nwa{dm{+qzU`gv z7b3tT3__`1|J?k~co*o`xiYf7AFXqWM23$EG@LNm%)qMxnzt`FxSrVgDTcNJAkcZ# zfcb64ZvUu(#>5nzR;WLee($BH1XshM*fqA4q61DDB%Z;WQ${h<Rbb@=P!n`87|~_C z@@>t@0}c=UtLr~DX#d@w!u$_+f7T%P7d@Qn6$2@sP6@c`U8){D%pll4n@E6Q9VE2y zu*RkUdnk)*>ZMFHP)2e&hK=A`y-shaBX-7h84E)@9cD7A?aOG7d<9I5Sv#8d*~$4= zv(pc0Fox>+w-k8~Mva9#&;{lV&(gr8j1I~T76)RmxE0s51YBiGDeshB`OeREX#tvq zWY>lnQu+vgbdjaw3b;4XQMw5SGW%>FUBTJYp6vK29kJ!gtDd$hSf^$7JHQ|emum6{ zCv6H*8+{~>e;KY{^dif7h-|ywE#~REd=Se&_dKXu*>utB&ymRq+Udz0tR||nl_okz zk-|;z=T|$Msb6#HVm7E#bAPvB&udH;5NQ|o_~g8FoxI~3yaaIY;Ix&4e$n`)bDnJQ zyEe`}7zIn6r~L6+(4eCOGuYYi)d6nc8P4>4^w$V_O%$<P=VXq5I&0Tq14QL3liVs= z%Au!|FuQfk0>t<QSHbpZ>Yug_gB3pQUMsVBFoA;aw6FGNBg%GtlYV$<^AtQdMdRRU z^VXi9Xi^OSl5pqgW1pk%AUf!%Ji!~BPWsWE>m0g=2l#;(UmjN-X+J#&XS#Q*aOGcV zmp!6Z-jxpxcpu#TjvGr@A9!VwAK08s<=K_VNH%x;xj>R0G?|C~D(i6d6O&Puy$keJ zzWclHes=fEcD}s)s#kl(Y}|qXy+4ypE^m0&o9?{UFPw*l^6|%)o_9H6j^5fDw!q%# zW&g)NfV1Xy{V=hDC&(M{>%>LJa5*y7=lP!GgWGsk891yTiT>sH@3;(z$fw)sdAwwg z8Ep1s;uOMtOW$BBKHj%Y)TEVwes3!1eVy;$^jf=~&}^I5!*c@Cli{2ndg|%7`L`3C z9sQ%%dwoN2HlQUNA{;;X{`%gG%}UD)Pj2m&8mJih?%u?>vMrN{Yap}xQ$u~S3dToH z4n6&7_hWcJu>@>sA-U|{`*4GYc5#^fYL5=Nwc}HLVO1+14W*q=CGoj><jWsapbt35 zCrDZu2&<>P)2zZumS26kyE4*h`=$%?HR$SKAJ=!2)8XtO+sh75(No^}^m2Hewq{qg zXTWpXgG>eXa|*7^a2WtumBAC(R<yj)H=Oe`{Hb$tsuZ5>It0|hAF<gcrsMnC1r37n zN&4cPwh(XYan~kZw}lt8x_+NR&6n5zeJofertKapAe;YfQpQfE`C&Gnp4g`Bby1tN zDbU?yM!0QdJ_r+C{hRxTOXV<zkMa(;Xzf;y${5ri8cja15hKF}s!dirZF~0kQaux0 z2D%X0yNH_v(vH_2J#Sm|2L+?&bGi=7)z7i<tyIH>|D8`!;@I@DN9k3MH`AA)sc#aa ziYe(w`r2S}ySmVriadQ{i!vFZF<E2}$A-_!t#`;<>9#2H_WM?^vuUz%|Lq4)Td!VV z2U{P0jw3%fZ^udT^xBAy#RkEGvu*#jrNfWhP5!+L|M~jKxwzRj@7nZQ!?XI<YI3&} zK6&E)`XdWAvMsA!qK#V7we`#Nkv^41_0Ca2b$9LGfphXsJ@_zb_=4kixQEwS)dk~# zQSbDP=*9yzzf7a++RF}tGacv0(vRynw)lYHlA-u;@^ArexZJY7#P62W&%qboD|@SZ z`twtY+~Cn)n4NNm-UGji4{bmLX3AgfKHz&RN4Lbm29IQ$<^>}7U}p>Sb1E<17yD%; z@#^KRe{fr0L!xepYs}Ob%NF979uyZ+ZfOJWJb$MCpz~+deP5kD3~qGt(Y2HKLu3y! zvon|7UblCM4ZG4gOwXU#rI2H0m-8{5@3oy3smWj$4~Q4T*$TClXM=W=L!YZlcVCz= zD~$Z%kKdmsg{OZn*g?4HgHF5}tm?B?+-7+CAy>zTho_0Bi@Bv=$5V_o1J6+irn?Bq z0H;7lDXp5ts0uu5*3}+s`JDJ>@I(0OFkbdF%~w5W1P9D?{LoDnADi{E4;(Tc@F5s7 zaNR5fB)5WGW=z`bSfvFbPdJpEK&<IHg2HFcl#(QPGu=<TNUgG-eu|mZ7-zM{(F&+O zMBlUOGWrGdco8!2p>)?l;m$#X=X^$rKV@L|Ixe-!KFW;;CIrGydIEM|*&o0E;qJG; z|EC7Jf4KYRn^qi}L2Ed*j-fk7V|4VHSwv&oVLnA4M|!p?pf_mYvtXj%hpnjb3pUs6 zn*q{jI%L;Eh{0{2kVb2tIXv(>pTQEgYzq9vFBT{t<Ciy@N~8y)7bhrr^*l%dKep{4 zd=HOgm(Nh+Hzx@p<=1iF+8VFvne^%!r;y#JPSzHBx*o2S9iG$ELmA!VU{<Dc!JbY< z=dbAWIJtQ6nE`ZU4Oj4n3w^57p}+P6m?5?`DNua{c-09%hWybh6?AYMKfdTdra<W! z8o)Q%5uA^BLIh~fs7Y%B0Ok8$uMOg?CX;A4h={aJf>_b8n;_$ep3=*}PaOh1FA@%R z?S|hR7Cg0IIeZi+h$F`H>O9JGgvR){l`-%FAEtAngC7j^uG*@eV00*#hz39>CwO#O zll=r`HU?(03oz&G9zSpgFgn+6d30i}ltwS610lRl1F;>d*}C;GU`cWd7OH`<WPWB+ zYpA~ky>RawoUQn}MkmZmj|)L|O=mj`mtzTs4)<h@pp_^`ajrEOW;4~{??zwemt4me zkm(5>?xT&X!_?0B8a~sB19)k;ivIbeV9J`#^?Q|l(A8T#SUHrtj_drib5g%7eg)>* zahx_r-~$}sd{4W6kB#74);%6Z776TF?U=HA{?iBgrX4<7ouoI|_y^V|LQ`^W?;Y!< z3%Xvn0`cl~lYl+5;BlStb-&GdKntG}Ubi;E-+k|EJUy>d2V43A#2bA-4pzyyqksF| z$&m+2;IyDHT*&JRfbmKCPY-QfJUntfB~CDQc&3cw@E9kwcl6phJGVM&prS0ho_?kK z`me|NDt2X{@W=#ilW+Rv`Prb^=J={Uubk#|d*IBUzF&I+ZnOE01wl<lKWUI_qBmm+ zMsi3OF>`~J)E#%&7_ETsx%UarP1@!Y3y?fFV>V^7xXOVU&ITrC<VPnx0Ke;q+De*o zUZaNgh9p~b^-!U`7O)gPil3N(^Y<Pq`6>Uo`?x$br$JS!wEAq$q$Ird%Bl2?&zWBH z9km%Hqm7*|z26a5-e~UUlFeo3mFPHfKj){+k=@~?b7cTg{{e=SwZ+=Wv5OKeT~K9M zNvkX#&L_ujEA`g_{@T028_<}izc`<CrZfI;4>g+Kl7=P8s%A%fI=en&Hgc>~|DXdA zW6?PWuPeT=O7}xM&uky37oP7%|1W&Ra@*m=w#uhJ^99Mlc1rUW34J?oY?<}mUP1CE z?JJow46g;J`ipqC=%`8MYmjUggFgSLZB$gBj`<%p!E%=G2>&PPg#KKNv}aoobcZd| z<Z19c8HBg~^K+{}R)fS=+u>FF+a8`y3&ihjpALi-)pfFfRc5;eTI69*ctMxwExGau zwjH1P2k)w!iQdXhKjOm&Bkau1b+v~ViEK-0F(Mnbii;l>fvi})Z;<=JYBTxabanYB zvE7FzfA}3={ob1%Y>Gn$6ZpH^cEXuIHKFZ+j?*3dYIR?nXw!q|>ChqE0-sFXhDc3@ zYi%2N&{)^f&kh&NsZ8JXYZ@;z@z0-4&uXi`Td5y^#YiRsr{lqNT$39+*Jc&@A&Uz% zlweN#=l2@G9^D+}qi++a)n|GSb_eMH&v8&h-{J9>MYVb2iUB+}JDlScdi$b9IR{Kn zc{rUz)?C3UGM-&+^7TpdAs;U<SmO^6w|4OI#2Vp3V#&(uFX?!-YMf?uOa`5&CkBk3 ztMEE|e4T-MnD5gB|Dt+N+uAQS#cRqS+^JIYpmZSJtc^6aZOw;vy5-q9^rj*q6J4F8 zg;NB@*yenbD&gZc3A+XCOt785eN|1A8EiM`*70>H<{_i5_#r!X><ZyG=$;8TyK*<? z%g39mH2}69|BcmMzNqs2#C%M3==@<S*@RWNi<QqJ)tY_ySHH%wP&lTOF~o4QOj~X1 zTp&NE6?`-IyKy;ZBlt78g!rCzS^j3>a^`{$){uCD7lJ(6E&n{cLi;!2;Zs+(T5)Uw zCNsgQ|7{yn`6<SIhWf#*6law)s(GyE=9&TcVa5(ugrbEax-ZcT8s~*kkyGiztePFI zoCrniuLB=oeQ=r*mZ2WzUO6k8x}U(B6FTK7B6|PvhqrgX{f7p*zkPA{`nAB|$=$Dl zW2?^RUcvCWN54Pm6$;~QGi(&iJs%!4pmQ1?{hvqSFoNqr3B!Igpxh<A4_;@I;LP-q z-3A@Xgxu&;{PtyN&K=`zJn-9JN3g-|bN<e+3i!eBL0Udb7$a}=r?fyk3^+R1(sU`{ zm(x%M1#ny^$a+?@oSlYq1uhvGIC9Q(PKJ(W0bF`!`#7GLP}afA;O>AtM)b5OdfOOR zR@<k&<MisRZLFfB*#X1djMf8>1k>b`rlm_dM|_|U>#ZYV@G380*p?dL;SUBH{fj;i zr<ub^Yo*{;MXD2h;RHuBx6f|;Ko`G6Hgs>ZW$A%*^$tw~)Hz-r7zU*w6F+hoH<@7U z0s<}jiw1D70}GMGhMaI_lX2(h-Rxo{PY%Iyyw4UdotSKgH>m|8*zn+6xC0YT%DPW| zHd;ErGEl&A!Z#cS0F2Uw41-<XY?_^v7r4R07xci_A68#&0x%r<m9KqY$4yiEy<LYd zxN@ZUkJg$CPhLj5V5D=|v-ZI!h}qx`E*M9A_~7bCK8IRYs`>9w_nhBA-Sh)kZPg+@ z`{Ec6lj;1{4bB6&%ANDmrn1Mbqb*&yj+1s|x$;;Cx!W<lz(=3Z!_(2*HG7@1l|EH* zT_*TiU?S`k?mDomQ-=#3=erGRoo}YMa?iTI?BzFK-My*&@Cc-1c-(#$2;S&15R<3P zD=^()mHn+9nhW<Id4ElwOs4q{c|*N&Q_uobX-og2ZFpR8z&^Wh(1+&icyju&-boLB zxUn~;IGtSiIMlB?NF-ZN$Tb`OsKF_IJ<t9VZ~or)|8`74pom03f(9!(Xs&X&R5qGv zh(QS08apdX<e}dSHY9MQ-^(ryZUu}c@J0hZ^k-Mw-tW7WAO6!MHzf3{R>ay()yFe3 zF22AU9puSI`NloDKSCBbg)88DMNNZ&-G7@7#HH!O=O;Z3&>*(}U(mLJKKjzD#t)Y2 z@?!?x9+niJ%9~$=a$f=Q(X(BQj$>D~ySCvEFMn`3he4#m=$AvsoL;{tot(*Ax_aT| zqI#Eq4?^|uNBY&qDZ_tl(6GGI`YBa8&2}M+z6`U@+0_OC?20W}{fqXlRvs<m>+CMy zbgS!Dv$W&bVlcoyG{CBh$~)i`6`N#u+YY(M?T|}^TZm}ZX)+)G?Cz@$nc|5F2MZNe z1lgN-g>T+KR}0C;s$p5DDb3NJ2z~T4Jlj+37NTeDH$9a-s%~vepVLtTLfQfMJ%eR) zHU?`3s_{LTuk#rn+uH2GPum?8j_ksA;`eRu^^mCD2iQdUwn_%eB-6WK;H^&y;mMW= zHhV}P&O}%G<#__xmty2}@sTZ&lUHG04-=AS0>&gcVfvU5wG~r&@v%v(w{Ke2qRYj9 z8)Aerxu|ayRt!Sd#K0P*7Zz+DCkJ*+&un$R$9pk4Od4E#h_74OyA6;%b=e?y&#|f2 z(el%dwru5oXW$;}`7kt<PR20O=gnu-K3Yvm$nWnQorLPNi2T(F#11M3Z~CMT2!76a z@(!;9>sCP<<NqncrodxM2A6bi;|Y*%a8@7O=_EfE5Owz7uQU2}JA1(6v^hI1&9Azo zakUGC^K%><hmYg3Z*>kmY#w(z!0QuM2hm&Fg{!*0v)l5V4~F#UfbrUiULd3#wFJ|b zPd$Dv?#?dnn;->4pKLMA>a5+c&l^aZ9D3TX)!X~@M*{}8uS$QGKE9~DEzEDyg^)Ru zaoM)pRPddRiTUo{1uK;75InNrr;eZ8VyAwDjA}ripCV2f_<~KW^35hst0j`!ZI{9I z#t>VlKN}ghTjO01U9;#q!-f(706+jqL_t(wNAR=P?&og;C#dhTSw3j|i$3k(hd=G+ z9B+10LiEyG`2X~1F)~EzL>PswzSxa%1}g@N3~eiqfUet>mVyXaN*klo>JeGp&E|4= zI^(d>=uyNo!+4(jh8G!dOyDr>H-G-VC+0QF_^P^Z6U?*fKWRnkIKtZM8jfawy;i}4 zO+0PxZI0D_5rWagvo>`Un?dP{<9h#i(`;iA?TM`563~w{tR2Eg=v$?W+`$XSGg~nI z3*uBcL)R9@_sKyTpx~RdA8cR#hkt06BE`zFz3%&6j@kB=L2c{T;~bQZ1Im|RLVNtw zaZhy;@E%~5Fm1vajtrxMRtJ;B>Qe$bsWUVa2sMF^fh56SGbxnAA=p_bJy^$Brby-I zVml%pDS0!zqG)SW!?!wD;CSSYryLH&t7_-_a{lTc&R13D0X2BxhSzhNE0`V`$N>Wd zI+BiQ!%Vb}Y8?|!z$w0K(*ShnmK5QuyL(R4nXP7okJ;VUM<R_b(LIGTIAChyX*^ya zd&Bn%7Kiho&%DBg{G*pa#bYZj%JL~ztiWV^pd*$OztuRh&>rcIzHqIgfcWsy3>>Li zx#)km%yz1?EgxtO8plXO?2xeaS8G0T6ZzqB@Dn(Ax+V-J*X-2e<)<K}s+TFxj^Qvk zlW`4qJ>I(Rm<kAP`|P3w0WQd!ktJ*8ATZm2Y5ARlgO0<?(kr9b99VV0G0|fy8HE-k zkoP(`@(tzwI^txs?|zZB14iW%>-boH!2R#%z|s)T!1<&d^s9ke`_E8j&)E$*oWW2* z4^pc-7JxUH>cbzMCvEy!n>fIc(*>=f7dCK5>nUDarK^4&D_5p8LD;1m@V$6;mA%sZ z!qcH1*k7LiwBD6>E7cFe&eg4IFv4~u{fOh}IK@VbYchCF#ucUkXtNbhpqA=~4?hGJ z$fq5ss)9C8<xgPgcO6^zm%aYx+g?NWvQ91E6%4`se6YH=LlAcH>EL;TUwJwMujyEq zQY7R3bsT<!k@bZPSPN(>vOcahXREg=U-D0TyGBp-z@4wlc;v044`wKya_A4A)8|(P z@exkr)Q6n+%|DCYPdzF3zFBuc^0>*S+?%+*!EAlIsBCX+70&&5b!d0*+A;L5z7LI7 zou1=OMgYhA2F31wh0`9=5l(@O*8YVn*>Nl;#T;N<lfc6*dvT8+VpgWg8`R7u`L5b1 z|82Xq$lPwGJ5QT6Q57(K*9I~LQ~cCqMfPe&{(K6{>-8<$HjUr-+gEI`l{VLceWTpq z;S1&2Btrv+(NQ`I$bB}>S)vg^e#jsYv(4nRve7oZtibpaFCB1nc+i=16ZYq+(x<)w z@hKzy=uWj_QP-=<!qKk0{4T?XT|jH%KWHg18C-DaQi;=DexuT(gL~U#3EXRcgBCJI zgK{gYEo~>`#c}lt<2gFc7x(<_L8A3l{FeKi+ZfpP))o#tya;Z4`vbiO(?n2BB<Br; z;;Eem0%Q{_<i=kf{}Ug!Rlb$o_-7a0M>okLBfQX00q^zS_$59`_qVzSMh$Hj&yC04 zm5q;&n)t91+S26uXA?5-8<dlqo6&5opKb+{Cg8P+onwnN9{zan$?C4BBTA^P<%<hy z#QBkT5XyFc@0}313-Q7xmG}#~G~JPoKL@t@s2s1QRoy~`{7S7KIJBq(_hN<UXu4?S z(BLWWwi8!n{AELqBL}D)oW*sXif(d2FWj;<B-ZxIM!$C%yFa=nwkpichVI(NAG))r zOIP4S16}6^y>KJnThm(4K7$=S`m>{OC_Q~Kp`yz`=xqO{zeD@z`wjmH?k{~+cn3Z} z`?{tY#m&hO4c7qEFV0GHT;(UL$}ay_{wfpXtU9>rXv06h7mRT3@&VQbHxj2`a1aw7 zI@0Nzk-5IwQ|CG^91T9_W6H4Nxc>h}AAH&L6<5*|4O|Z%)izE{#+{5S$`to5hLaEs z6J>nOVjq(yb8N{d*%(kZ)l`28KwL{d;ND{H^lY(6eF8SvOMu^>>0LHq0Bbjh300FG zL~YwVUD$09p#qi%35%!S_oc634YeEYw)4{&&u|#NU5cA%b!hh*p(Eprf4q$2i*MgH zZu2lalQ`b_{q4)I@4kKg%_fL`c$05x0dsF3z(+o(V4b}Aq|aWLRXq9_ZsGVTy!gI$ z<F^<KyMK8!)s!`ixd(X+cJE!PoB}i(&~w{2u#LzGDq%8wouh*Q))8V_9g7(&_uFiX zR{0E{lT+?_%j?f$GKYB-oC7_h`1@CkB8MEee=yK(K>NZgc*5sX&hJ_0=fMbO$Z~Qu z_O8zMZ8LWt8yubOY!R8jC>x~+<1v&mV-z8rPP>Lk>pCVm6szYyv*|Of=j4JFy_CC( z`|1cW9aEPQf1X5}a_@2^fB%O+q<8msUv)G1Z+`LJ-J73%7wxU$M%#0pM%(s0b$NzL zDeBaBKbuwa+Bt)|lrKS=O>rLvr-AR2Lv6z+2qR^)y5yKramMi6tZcl9TS{r9Hj$3H zj@os;i_Ybpf0XHbWh!!3BI6Afh$N&d)9)q%q^$lq8UN8iPvWUI##z_uUu}moNdY`8 zgUK<B6pj*5M#%A2j%+KkAaV{cUZY0tBr&`*w1PuV1fHW~7;O;}Fe-!Z+xouXApHuS z;Cfr0!_Vq%y|2Xa2kllGIQCC@5PTih<3%!H=)+0p8!46ZAs-(`FaPLP<U~`K3Wf_t zkZCF5wTEz3UlmDYcl6=NT83R18yr@D?=2j>cvRlu0e->#;4gI_O;vV0je-+wT-<|B z=koicSZnv{WNhDFkWfD9>llI_k7$4+{6g3{+$)w}!z)fIe917l_~TG+D+MLgY!1}+ z@jlt9b_4`l&8R#Y&6wv6t6%HXr+V~n4+E>Q6J$qa`E+jWIIli<Fq^KI;X}X2F9lZ^ zPQml7{#K{LD~U{QsNz3qFF4v+(5~%1*CB86>i6O36wf3{J+^hOZ%t=khgS!7w1wPs zqVksv!22;@`F{yR{*|UJF!^1)ywLHh3>+LMFgtB)N1kK2_U~4#N|lKLKHh<OO{Rc9 zIb;JT@T+KPI!nHG_yBTi_^d$Y!^`{jyYKG)@~{4?-=Ck(v<}=v)+P>VVf7A9$8T%P z^`Ym`rcVLdgwvTEVt3Iu@(ztRiuR*^V8R)X%dafBvoj@b^eeZ^ey?-oheJ}_U_2V? z@&-q7<qmv!mZ6<^uOHZ;h5n!9!SOzI`qYf=;bGdAl}%Tyl5NGs<Whs$_YFuk*eN)r z^V+fUrO#~=zP#Yn&WHMJ1BdtFs&5iNh~G8Dzg-Wh!kN+E@3sSzZTY+3IvZ3D4YR}G z!d$;nZ{4|=A=$)-t&UZ2uX!t1>;Ny5<X*X^9k=N`fA*?=?{R%&DShV)(oeC#vnDwj zG8ZV-V03%?LuiLXHWnO{=bLz}KK}bo=)pd}w9==`K6s<um?|NB`&TA=+A0M4<R?Eo z@Kwj*9L)}C^BuSRes)NM!|DdxZ$zna;B?K$^8fNSVaGQXGtBAS(gtVE{;1cF8Vqem zQM6ZOaP?uKJUN-j&`*#^$)m|u*N90cwGlx4!K=RWhv6m$!U^}~VG7&a!$!l|gsJ{e zzel%BG@>PFD+>l*T)ao=R!{TE_bK4B;+ki#UgtBL<ZnV|_vfoyooCtfUTc&<{qEI6 zxA+nP$e(Snbv#W6@XRhKe*9DM65YlVdgK9Z`i=KJ1I8BaXT?QUU&-22z1@Z+;@PA{ z`c>`GE=J*#UiSW>_r2cA*5U0Qj7NbRe?8C%4{a%)K8;n`RM&1xI<`<#k!H|(<d-HH zRrI&PQZ-Eg(S0#4n$9yb(wS_`xwyn@lH3c=cYb*P&$~Z*4&%n#@qhfGgW4op1C4O0 zj(TJ=+2EnP;3}(M+IxiK^ScsEeARTaO&2$~Rjz?ce#Jwz$kle$iF<b4`36*{-wgce zm#a^vlUb*<WCNPg;OjVgUt92~4Lp*qDsxPX57!5OeM!2t+NZu#^qhQpK&8)MiB6*( zp(l>Hm970!2Yh-POuzbK$9zV=gWGSY9Q<$X99ZFTD}T|W?Hg$|dHIEOrep`7Y2rfM z;MO@ha1a?PJB0_hzI*329j%^$nF+{?_HhxfN;!SMdePf=Xk`<8Z_!lu-F8c4cKXQp zAn$2mz^g8vCAV{*E_+2|e2iD(=I0g^(+M;kUu!X?ZO8e$_f=o4ll=K~3vA-uSJipZ z_oJO3&8>J<qSe+D|HR|UfVTyQ_+znWEJ)aPQk<1sxRhQ&ebE;98syqlWM$U?`sK@W z3&d8Dqte8de$3dDPohuk&r`=u*o?BScPp(nTU5lP;S<e2J)Sab>|-3hG?8*JP+M-@ z8!?BOGnBTVo#Zh&W*leQbw}j%(5P2;ZwWm6k6%;93A$_BkL)G)ROP@<DFi&{+h8^> zxPQ0o@+yxj>+!n3qMPPl<j|i#tHV#<u33LX!*_Tw0Q3%*6fg&PR!5~D)y4t_gegJa zq5Om5M*k_>PxQ@PqDTJ$#QG|YbV0y_f-k|~fL1<5{yx4wzWe81H}taaKi>VDpM9I7 zkJgv3);T=s-E(&@t;@CL>uHY2Q)jhZElR#lG6g;D;9!tzr`$dz*S-~$b=(vD!DsKO z$`rgOcK56*TZO9j58mNgLN2JUc0g3d6}bEFtnX?6I2FpOY{FR<j4<UW;2a9RUU}g+ zKD(ZOsC?P#tk@8$&6F4z^{zqeW|8p{{kKem(-22lX)sgQ_sD4NcD*3E&T-qls=w75 z_ro+HVs)3ppS0?f@eWN<bkMFt*vew^Gr_RHsJzLga&t@+03RblP%#IVqHhK?+;BzS zX7R$u;PGHwGIn;g!EO9LVmtWbiF%A0UBo5GQ~t7}U6nEYC|w}yehhktRh#J=Pikkn zqs<_!!w-MwP{$_@0}TJ+*{2+tCyibN8xHc}rZa%s(kiQC-Mc)?rc(z*_%hzfH~5mf z<PR2npsDh{R`d*>LTiIrw=9q^nOYf`Zwd!8JhO)JWve^^ghv(U2uF!d1Kl?q%hz^U z!&~{I+pbFvse`gYBd_%I#g|v@Krh_MSzBvBSvXDu<)w+y#4_wY;3JP6vq$z-X*g9c zPzyHt!On+ctm^9ES9vl}VYTpM7b}0A`<3kbC9D;?{bPU1(eYDW;V(*bj>h?bnD@}i zjfY@giK<b1o!4j`oj4&!!SlP>;N<Vsbkl?K4EDgX-4DMUFWbKOSAX@_cYo19*FAgR zXLBEuZJw~)cn1eM4EH|lYyKyi1W)KWeq52#tRk_UYOlOTI#%YK?i{`*U>s!1?+H$9 zGt{R0;{LVcYR@lXHeknt3L7+B`4`W@fIfSpXsV6FqpORQL0t$hfT{p}jIsr$c1h&n z2jo0$`S?lgn#{D#mtBsOY?%%$kgdL$hvMS5z$WfA8(vUT-EAkU-X?r+eALfvM^b&S zr}4h%SsMlw3+&CJXN#~k`1N4K$5!VA#>wm4gB?n@I3gwnD>-CCyZ;ssT0MO1fq(JX zWcBci4-Annp3TQg+g`JDfkFVQ*fATg1M$@LBkz8zIyrR0)_&wUK1-|3zMamd@o_#E z$E%}Fx@jOnm(BntyjAG9WVwqk{$2T3l4~{g8@^Zn&C%D=j!Rc3=gP32^-=iL$DnYl zC-h?Q!hf`*>*zQ?{3x0C4A1nlXPyZD^l|Bk2RQi}M7@6(pFq_|#nr8V$B47)h9Ub~ z0ILnVDW3KnyX)`hoE04(C~V?4J3jhr;w3!`&zfIQtXqfko>9?&lNWrJ+)tbmCTuo+ zvg^Q5{6iDXbS6cr-#C-dq>NW+G{^<Rpz=e3utEPK+}hm4S+{*{2gLd=yh(=P8~Giz z3%`JQDAgygXEeY|=e?Fop#AcBuj-;a_kWzs=bM9ZpUrDoyemHSN+o?$2({{!UWx~z z>rCqKVa%6(9)@b3?fUM?<cs|()3xSCtFqawK4ud}Zh~x83f=4qjs~${um7oS@FW;$ zYs-C*8)%G2beinxcwcQt|IPzV@1&uB5C5r*+lL-|*D}G;pUU7N-jv<7H2QP&4wYjl ztqQ+VYZFnGt-Q&n)BlYFrQD9$B-;7xteZcWPL?*NoNKZkARy@};ycKNUidYsA^pgz zf<HN~vYRXkm{nCgj|xDK5UO+HQ#c&}s~6mh)~hY;o+Iqk4--7SaJzE->Nl=*K8*jx z3AFHAQB=OV<Pptu4UQ!wwjpz+Yl_#<X2pV`9NKGR49Cmh##8CG7JKOx8gmQhL2RYD z2mGs^UDSHx{0!d>A5b7-g_a0Hz4ueI^u}Z9r7g_v<tER?+VG3_CL-1T;Fe1mM#r*( zrT^K$zIM;bGTicM)ibHNdvMdgJxFc3pxyL+wBkXq78~SyQdV2;??3$W?87AQo4#P} z_S1^u52M(EO6hn#LNE+(!f<+!&i(X=3JfeGM<=kvkHBr_2}2$kEJ7{@9;+gV1Ndp% zOAH9S3P><$+r;5#MCcSVWbYGmSP_Hp3@_$kkn_#j#^86YxV`Nj+#kBX!hIH)s>3iS zHduWf9$z(!@qNtrQ}0Ooz8Srb!FciYS3F5K>c5E-W&l(`tG^(^LC2lI)&U3zVmieq zqXl-+W6-(x04JC!tKaa%uANLU+%x9(f4qpFrRa3W_7Z0(mE9x&05^E~-)0}~8|41O z-T(2oe|z^$E4$t`_p4v`bTLn)Z2Q^k2D@1K(WCN%e2K?w=HdNF>Ytg7#N5Nc;LU+> z0J=4M^Ua9mw}z97n@Oy#y+5yVD4XL(ga*SgQB2Mo%vbgdcJOV0Do-!aM|rC<1uwrq zNB@IO*F#}c!4k$PXvVK91hezC?wl^_yi4lPsld#G6tdcGoEI$SRCN3`xQ?Z=I@?I! zOs(0_7@b_ttP~^OHpud~&8WIFxGLa@_lcEt_r_}%l<j(knVx@0hdwp{j&qbf{NiVF zc%L5Kd$>c_o>I!ptrqD-7vx2gK^S?gV=dp7bU4=|KIn<S92+<#48+&%f{++9<l-AW zUqGMEvIVnP0yF%lzniG5zNaD1VO2?Ibir6yLf=KabON4cxRNv6$=B1skJBV0I?P#U z_u!R?NB^!nKk}rJ>A<Z$Z3{Ng0bjOE796etubDXbbLLxg=(^Go%XwBb`GTjDhofVG zcX-}=f@bB-c7E=aU@>a^oz5>{OXrhaUB%>#XX|7JBpeP=wG;ecuyJx9uC<NZ@b9Pd zaU8*2kisnuFZ$TpO_#ULu4|oF1ZyeXB$sG}=h6qc{I08mxhL<?r_Qdy1ID+{;pM?; zaISJI1NNy0<<;nV=-=QkRhy-s^Yi=V|0{2Ff05yutzRoAXCM(>Z1t*igL~RfPJBx8 zGa<Q^T<~tVS$$J{H09UvN7;UM9DW3Y{wf$RS><=%etY*{|I2^A`|f8y+l=m$Z0L<u z;iOD|_u8;8I;?6>4D?ukbXJ`*xjN|46taB9kuKieWP{!te#$KXtQ|<pkw@=0u~O?< z#qdVE?{!R0WletlnvmVV8ytQnoAAAKo9<dE#V=nvN`Lqo`ngG;plyXFo1d@2zaD<~ zJ{tMLO;7~$;-R3(cCE9!BKyP(wjOL{1ms||L+^htBVDd7gWS?LDUG1YgY66Fr@=XC zrRyuJH~$u29O46I!QJ4eWL>~`5>Abe#zU*|v%Gu@-tnnVYyX*`KD<A?H7Tdpitoh= zZ1{Z-*fF{B=&4oR`h@6z<_VlP-td2qdbWip)&go99jrWiVExI|_VAx{$T*B)7k;XQ z^PoAe-Llb!H|q;3dFmW`(1g}g7A*9i>(Tp@YkH37vnhNu5m0%D{sA5?cMoUn!nvl0 zM{Ek0WR?u#e2KxycHC>n=J-p#2o`71P*_@g1CNiNy?(~3p%6|9L$7#~BO=3XkF4hW zS>;V!@V)DgDqqv-aQap|ZsoBH&x2p+(gxDuYEnz!T=n_;EiTlCU3SllUA&7oki%V{ zFx-o<?Mf1Z`Iyi$@HEhPRDWwF_Wj52lZpPc_6&S)bbBZEn3d2!)`_6%S#jT<*gd;Z z)Vo0qp6M=n=|ehO`yV%ue$=fHZGTJ_Z+lkC58wYGJguI#(;(g%blO?x!A*E?GM&E? zZ%kj~omFRggWk_=eP-*Ax_24R@M3yU+Vw_{l8bY}t9<bA&@P1yV7sORY~ws+ip)>{ z@b2B4R#oY{1)Ofhi)Qc_kN1nW4z~)h8=!m*c0Ux8SRuEfO_{``X9q`bA!%~z`?vAB z!cSk2VYpY%YdrbzZGkQ(c=oZ_{$}H$J{#`ep)Z^_X?wIUT+)+}+dzqb4<P=X<KP_{ z;hydVYqpi&n7@pdos>zU9bKc7_r)u*tn&1DyUZ$5jkU)Q;`iDvjjx`s1)yVf`uz~> z^BFtV++`QafpP6Zy5LQYx4cl^Ax%A~&aM%4JLXFm^X>Q&jyh-+FNouvZz8qpwZk{0 z^QfK-+Wm>Y?>#gu-w3SuYHje{ap2s760GdQEh1YOD4nl)=fPz8{+H=1JJx@=gTRgr zPd9#19wxF5&-cN{PfZ@ZOP^m9Kiie{^yRZ&Go{Rvbmqg|pBi_)O*c(6g-!SwM90;B zlUUDA2nYVfD(w2qXhad^LUDMZd2bLY#Q>TWTQN2k5PvV`nl99S>%C8l_uP`RhgpT+ z8*u^|SI_v){pg>XJrX<XmrR!OD`Hylq9;zXmrV!+7id27r$_J6jS*F>4wA;OM{cT* zu^*a6%%nDZ_%0)P)$%aK+~drv;AzH>Gfu0mVu##j!a?wH9#6XWD5`@>$Irln0&yro z87>AW4B11b-uBe3AKvzO>26FG@ax2zNH~r=VqQcfMjP;$9n4e%7UL-hO$n#So?^_f z`?m)YRE8q1BLGhw#<mU_cIPljeP*m;T!@Z0WJt*I={nS3vYgr&lQmx_hg$y$f$;t* zTK?Pr_-%vQ?$PZDqp!dDdH17%lrR(Q<7kew&d-c{=-*^<+N9K+%L0o*W<s@5dX|`T z<DgHa8FuL;x&zAN^(n7PsITr((Gub(=;yvU^s5q#=+_YsnZY>iY(|H&C+#cfabM}_ z>^ZBjQ&#|XRgc#v5D4Y?1<(5?Hgv{}WF32L?frmx$vMgTyg4;`V1Uc1Ru+PEX5Vf3 zi`JB0*?PK7ycqL=!J&|eN0M*lCOY6GGP`#l9HmW<?z<0&b_m8Et@Fe4^rZIYRJBhI z<1C|1=H+qFnw7TzJh)xV*;nGE*96{-&+Dv?T&I7P5dhFbqzyL$k`^Q|CX4EO%I&t9 zW?yFo7tGK%2v?=@yru1`J`y<ubRXVJqbEnk>}cg+EUWhE1ij^~==e3DC_6Y=Y<f!X zP#M_T)JX+p&W0VDya*HcDkm>_t}J~hOIm-+zjjO6!s5`eZ-OIEfD@;e9%{`FmIt(p zFx~5w%7+_FYHsISkyU$TB~}p_{-F}^qN9@u8V3XAM^2Sk+wwPXMnhmO+cKyb@YSeN z2l_Nl=jj0)wEqzBCR}B-ttdWR$Kc*B<U4LZx72_6^JRHC+WB7{YcF8xIERlG=))>5 zFTP_<Ih)j=LxYJkBWt#_S4q_;jMni)=Xqo~Saq~Mr!Dqz^lNq*9DU4_Y|DJ<s|GH= z`SV}i{rR8&`Q2CFd{<}oyh+YV1Y`9l6+VUy#IL>(7f8a143wjv7mdfSps^AP!Ew|g zRYHd>dVfWb0p6_w(Xm@ax@IpMK;5dGibs|gE#Np8ygtANzINbo9Rd?PXNdwBK{@?c zpCJvPa1>~709+riSJnjsT@k!Mcs{A3NNZRW43r6Bv?;J^@=Ytlsnq_qi=*EYY=u*} zT><uR8a)0YyWS3~d}Xk})7Q_3R>xq+AjzP@gsd%MR=>^IyZ@iPA{pHVSQU3Mx#=s` zmU0DBR+KywVcT76KwE-kE5BAO&#e#9k{`C6+r6BRTE+x7B`iN)27?v{W?%ottFAlo ze{`J8qbJzh-zrRBIz4`!JdS<9b46}2F1ddB>-@`WuuvLW;dSz~<0}SA(BmV28KcTj zo<3h?YrE^XGhUqZ73dm_^0ZMsvftzgRuu1eC>RZh9a|W%dT(-LItPAwK06;CsZ#a% zXErXjvlGT@$pTtPYzr`dPM+ba!Fckyvg?B?GM$H*!Rf8N0?5f`6Pdx^Z9xXm<W;}y zA!UmP3UWNLdk;!VwpNi%(igdnPPBQ4?syrT7cal6iLT+Bj+_aSak7dvSyXQuy{*c# znRu~XB;79l!r;GH;PK;k8*Bz7pB%56z-9v{wv1m5qRC~G_~naZVq*288Skgt$*}7^ zJEK@(xADav`I}T=DA9r5&TdgHo6c?`M!%J?>R0uj+N66of5YDUnoO|$`}5~s8P-HV z3?9$K)AZ8)`eLB1ruVxE6zXKxUI6zBs2Oa)T^CRA*KU&oD*%)IvlgBVtljSMIG<~! z?fW0zBopy_0O8CR)g~NQHA2xD;C-CV50*^_rz_<;W>eECI)q-*RUuIEh%TSspgE^w z9n#p+Wm~hWt8Dq5t{pM3<4ka<pC0oqrHNO^f?&;fR<eJtJGAY%VEbjGU>q9o?MHl^ z6P@4H>3nf%zt_NgZQtO6p^e4FXzn1J;|Vc9kl$}*!1Sp_EKkoWtcW@{p1^kYp6+UQ zgIqY>@D?obpL-@xW^AFw0M|N!hfX!kGQWPG0`{msVeSrX)Z$>W6N^=G^6pIo@5fC< zK28_hH>-EDbMHJOs4DTwE8pyD)QNi)o#*ktXCr;_sN&OG3vH9Bmcj)rzI~G=$%{^# zpv#4XYuC@~7aB*h5i-Py(GOr{_PmD9U5YFEPo+D*`LF2Kz5-L#!2svSqgb;VmB+NL zAjNfpprjO+gVZ^54j(==YXG?j6{HGWK0j-aR7VJ54($>ogE8C0ups6D)3IQ-Ho!N- zw}I|v#29{q*aks0my?ZvIRp1RxQ{7j7|ApGDNzK&A;wPNoogS>!##neUSk60F32eF zQgUUca^XEeK@$!B`ih6}#Rmrk7k~>06kQ-(dRS$+8FdUVYh?)beKQ||s^9(N$Gg9I z_CN1_@rz%zqWhb>Z-0Kueai8|`>argyNGk`_luQN{ct3Y&d-V<p)&4rCvDB4<FtEd zs(KoO572RPFpe8Wudcy}enx}>G8qrL;)FO!b-|t5RZdA|!mfJdRtKNvwD2<APlun< zwt^vB=@hBZ3boD~#0ae^cFj=aZ@J`241-Mu~qNcYVI6NYVX+PYRj)@f@OzQMJ^ zF~h8`U-+U;hiN-qT9Td$56H_fszA~s&HKVjUR~T|uB~<KJcPE%Ls~RX4Qkhno8X(F z!^MOIJOVtvkVVN$qcb{WFvlmnjd`b2)p648;KVOm6W_P8aXQr;1tE0oKJH-fjKgI( zUGPt%9G4mTqboNWv@=DRq=(yN8KU59vMHDoI2yxclQ$(q-Dw<A9q2)zt23xOS7-2X z)6EL8PX`*5rPk<h#etrn`{<%_q;>8oodnX6Fibb7IQ|M$=3jyf9^Q@ja11B52iHAp zYdA(nWj1kD`uI^jw5q$#Iuz#<X0+ipr>qQ^<XC-;)dr9!kYB>^gSGU*yYUTj7k+r_ zkgp`J@gfT70M=2#<)Pe)Km1eA_ov6;(fjcJSF#_9Uv<HEezk)y6J)<m`AAGW{DNQU zw>sqJo^anIQ|0J<bt;O&ZHL_@y#bT2l~dX9M6mdY5?ZbM?q^@${pDZ(+q-Z7?7O=c zU%k3}SNV7E{*-)s30r;!Uyt0N67D*((k7GO&ZpdhGBmL>eS)^oiDQ!(Qg)8t;nAPh z+*D}ka#yZG+GW3VRIqXJ%kP3s{J@Or9M_i~EiHYl%*EU5e7YjwugrFP)RH`Wp=WF? zY?o%W>AriQKD>Vu%n$Xk!EAu>{_Ux=+5Gy#>;6psZ?+U1f-uMc8&T-d_SwZWR_0FP zU%tvyYqkBn!Q<5zZ*WkMgQt9ydoMqFo&h>r3EHfDa7`|&zg1*UF(LnK8{OlVcHtc! zw4Hs=|FPHUO1e=W|DhPbQ#c_zn?(bEmA^B9u}bmLZkuhXd)2DLfeEkKQ1As&S6cz9 z&7%X;UwP>uKH$glIT5^}x1oMyM2GbSrw_XP)g{NXT19UUZ>5jN2ju>vTd?b(Kg*wd z*#XF>-I$Krl_U4Pu5l^g)4S?cd}zY6j~ZL8R4tysy#@x-Em<Did*3@e7W7ws1C`<} zd{OT4;*o%+AK;SPwh{+UKWK5l01y7PUIA@r3w{Tm^-Xl14{uPV`~uVsl&W7HWw*1d zw15;hfD!I&sB43ClN<E$S-aYvCP#3@Cl*YsMxl6<SkS2a9!OOkc1CY;csiX;Sc8dO zP=a#pq&~C#?7x!Y61=p#Vev$T`F{F19!KwdelQ)xbbLdtfLWo%9r_$WD11c8F=tOI z4|nz#xQPRg@ci`S2j+nrHpLj=gZVTWV)H8X!~gG14z=+pI}<B^?8(&cTH%}BRMEt# z^7IOPuT3%eKA*zI*HFADZTe0h@hj#S=(=}!Pggc^Rg8}3)0YMrR^wmC8|JqMeHG_W zu^71aPT8O$z&9Km{=*MWVn<(Prbl$LJjdzZY_0DWh|*4K>0ovEf1RJfZ?u(m+1Ql^ zw(kXZeak}|@eW>n*GDJ|`2XV2-Uf~3AAAn(V2;NF)p;~sc=**mp6g$BuFa0&*srwt zkIDOn!(i1O8^~ERBLt2Y#c=dzeZc$yXotm$ZQ!^BJTci=eQnSc0*gxe^ellr3AWgj z&r3tLF!&-FdI#;xe3vc!9vt~0{b2)aiv3&t-D|JZ4S<IuCdK5{#925Qbh0Spw>|W! zR?*^>L5o9k>b6mD@H%4XDfP+DgRxf}(Xa9fXJ`NHV7!hG{9al)+Zn$@Y{P@_D;4#% z&(7&+aw4(X;}e4zPx0@>ReU2k88<wOjs&&(U;b;t)<8st6)-{}1UJ0vsA6o0bLh4X z%{Xh}+5+IQ)l3Xth*>b7Kx{p8L-eP%v9wFKQGXq5j^ikePVFcR#e0|V?&|<4vhA!^ z;WqOaMpla6*%n!u4?X4@kpvIUbS=gTTwTP&;S%)yb{SoVVPI26U&m(ml<E?!6F`-r zOrOAZ8cc+Bfvy=zN~X?Ab#n4gnsR55HK4<jB6A{^+yC)TZ}0x^zx(~&pa13$cfa`6 zukOCWj~vhjJvkn9jek%U3}`zXhCp;sP%UboAa(9zd^jn^=olhA<H#xFXFNDK+Che@ zsX=A8GAURIfS@fQjF0$4)*6G3+2ZlNYYzs|9v+}yz~$Iax^tWcW98(7k+Z$dhjVFR zdg^FT#bj&?qOHSL5V*zNm!bnRm~4`Ru?he;KsM=d)29et+weRCp`gn{4#&V5^o6fZ z5DcW@0r}YCw2p0hq@IqX^3l1V1P%M9SJ7nK;DWB(`37O>FZc;zG^>ZH?B+P=a>2ZP z6a_L=#%F^%L@cO}r@O}uex)s7P#B|1pszYs@W^?(nGEsFRwntS_Qj8k5~Y=u>M7B9 zugtcw;a!YU<*dN7-Og)=(|K^X!*v`U-q6_$CeTpRmVaHiX5UMzN|(nDSK!#%>LgDq zJn-89vva}B-jx>I{;CVOI>C&_*tvE{eEO+&dGxICV?os#91jQj@Fy5xU4DR#sDs8d zBmi+wn|@0_fsiutYE!TqI8J=Ls|>#3dR5B9n^WJFGRi~t$X{xp`nO-_gArc+etBH- zTgQ3JSnztQ1K!|kW3pRIUxK)u!|~vv&IJQsb()92NXN~Qd2k7xtssF?o*>q<5x|-b zR~O3HcWqSeroz}YU>B_mP}yC9R&J#4=euA3`j>Zq{qO(!?wjwvsk6)Odup%uT6=xX zn55}G$LEBdHWPj*gzJ%kW-fU;=l>?FN;o~7_WLi(p<&s<tYo=id{Zn}=k)MRUGzD~ zNgJcLYkIQd_Ivnqcz*0NoRu$sGRBbMc3|j(1Rk42h&S$a=iBsgFME3GCtD@o#t;4B z;N)X$=M0R2ug*U=H`tes>6dLuD{FYd!~M?`-F)-A+F%JcimE&62R|(Pt$q>ErJEb% z1;azI_yWF@p?J5rt)*;o1Lo?zXaYmPv>*grh{nuKJmtf;ik=^~nmcPL&x9AaTc<X2 zz9&zIUx?Y3yZg&-*lrtNJoM_JF#$KVu>()zC)w8a{8w4ty$qHh@S$%2JAH)%-Nb>= z?}wZY?f7ZnB^Z0K&)|}|CVe~Y;5W#ma$If4%2#)oRdD6C=C5@5t20HzqG|d1QFv_f zI-GotKMH0*<{R0&4!43&+m0)uoa}@7z7>hosl4o__-k^`)^>Y{NkceVDNi{pRKRZo zT@N~IB6(Zlqv=&}kFPib8D#1jLndApf5j79fjcRwR-)rk{=v3c+q1nggjd~?Mvb_| zMO&k-a?jh@Mj!RF&R<TR)u^x5uWo_?Ts#~fqlf>h-6w5tw@bhlWzVwE7jJi;ho*`N zQgW+V0pFy|CM?5!dJw++7=E#*Pxn6*b~K^WwYZm_Zr~~Y^`z#TT*b!*1fTG?w#jq8 zhHiC%+UY{+yIqg*h5!1I%3rp$_^NdE9n#VJp#b@Li$!7!vSQnB+ji_BJ+-hj+mcO! zdnn`4!P2uu=Nsftxq>~&;dCJsgtZ|q<4=SAtb3+^=)rbLDtw>aecd*1KIZOEkBYTh zY%m#y#&~k!3Et>P#^NIFmJpA^IsPm!!o(2Mvv_%M7>M!78NR8z-;=ffSK4LImoHtp z!9A26nEb_!=i`2G;ZT}-7mOA9;@{QA7fCz4+B)es4&LDW6qYtFIB;?9P!2B~C%yBj zL44COPBKX|J<1B_x33BJZQoye>32NmL+L&rRdVI4Q#()64_2*ys+TYBo1Po&KJRy{ zv&}NOrN;xQo>%_)4erO{!g3nG(v9HM1~0q^Ii(2(rLWdkw8cLh40PQi`!@T6`d$Mx z-K9k*7Bk>ptjwOmZ#zc9!(_}E$Azo*@u<n$$KB>C9@e&p@wzqaj3W<s){oTgCPgu_ zvT_WhZA{?XdF}O^mtB$i;Pb)wRh@n>Spah#+4uoCBq~VfovWbYJ|U%%$eBalYgHnY zaqeC{(5h3Fgy_cpn3q#|5fXc1V%wL0Xj{e<HH5=%=fiQG=ou(*z^}Tu;dPy;L9`o` zJyLozk>PS4RCTuP@al-SjWhI4#~O|TfNd!&af8U}9RtCW5Y&3VI^Js#e`ab9!=Z<1 zuGVRf2d*yTg}aWdb}D!3?y7d<8^KGj9*<#V?D3PAci-2?{LSC}?(XNm`0sar_RC-1 zef8DryRRzu$a|_X)Xl(Ca`<N)xTJI7I4Bfaz~q3J2d}=P={om2rc!_akV!wC?0;Ad z_x{yk961Ex<c>F8QKERmAe0+Tl`&wXK=R=0@BjsznS+C0vY@H(+^5C`NlS-G>0qui zt|ojuf$;NIFLRpVq*Jj~@57tkg~!nFGe@29gK*n9P)BEPKEqdri#fBd$q0@*tI|!@ z;GJ#CDQa@4X$Bj7dpRD>dDOu%TESSKcK1|Xr;S$kK#jz$a$GCP0@Tew3p(P*B7sh^ zl!L;j4KkybEsbPg#!tLG-@r^xuJJ2K4gO9iJDJ7vz?Ke1b&klU3uZ8>X{|l*^>ohF zs7+H7^oZk$gBpiHBB&l*b7ZISE`kL~MK<vj)Tpn%GT@(|l(cfnll8$#z5Y7#4*^C$ zJl*Fp$6T6h_@BIH`0={LmCw!>VARfb1MF!Y1s<Gzg@$YJuo{niI6p9@ok^--!x2#J z^-JfJIYy-Jxt1os|JAKNc_j#e1b-k$`m6$+K6?Q<z3d}%lMM3c5}K8guDOc%EpzQG zAHdt;Ovz)rCvpC^)A6Tz@~-35CkL=^?ZNen>t+5c{|=p}p7YhO+|D`8;FOFxClAgp z`*-<9`aox7>@{=4UV&4t%uP-ZIy!Ei@ZeV)bbvnE=H^~av%P=$7r(jtkN@GX?p}ZW z>h4eOHOlDRKX+a_pPdGiZs2Jx?;Mxm1P}Ocg{Cr&i!a(ac!dWYsoVw&3Q=SARN42^ z2$!ec&YT9<*8#@(<@%N`N1*BVDtFbnu0!+a#CQxw2!xY?4Rc%VIRN7owo`v+0Fccu zxAM0hsDRw8dV`SyQJ&Z9VTj~IbxaO=&cSdpAsO&JJg0zExu*?W9~Jo6O(KY1u!T>- z-;M~nRGWfqfo~{oLI<B4C#53UVZIdaOjay#u7BpI_#m<}5&EoEVm7!PR{h>L@|%5V zXZl||#ROIaw;}-J8e4!9UbaWuK5OOabN5KzS9Y(upa31irM3)8$ZK*b9lvM8QZcrJ zJ(e?>`=J+7`1LA=+tDk11}>jILlx!lpDw#*53U_oy)r5X;3mWdtBZc|XgWsL!9Cb0 zU%F3tNUhlV(FKCRf}#mtt?g3*JX33fcd7Iy{Xj?HLLu9#j>%gelSuj^am2xOKNS>z z#OK-ui`#!%oQ03;BMDr4{o;oEs_Z5hUuBV<ynYwh())Ao)zZe>j2eC)dmW@MZ4)f{ z4LWa7N@o@m;Y%<LxO~q2xxp(P4~BPowfpbWJGbTFCmm!Xn-qv%{lq5qE4u;j%EpCo z+^&Tfv}bfQ`Qp_n;xxLCZilv>u%&Q=(lm<Q6}uRKY}a6Y)D~>kZk)mE`oG=6AxOUA z)lYVmJ_XdokO3myl=jh5_9e4gT|2XxXxXPq;f6o&8{BSD0>0s}V10Ua<6}1H{>nuu z+YVk^)wR>oik906_|Uztz8x87*HrD(j_}d8dxXDz>FL=2)RyILnd`nl_bb0_SB+N< zy%($1KE0cL-DtdccKJB=V?yHcb@CnbnQe#};jizw27~fucVGOTTJevMQNQn1MxOKO zIj46!HmEHfUD`j_gczTKQ_}5lqTEBml`**J`{}W^OT6-a{4I^H1z*~5t)VOb@Fj`H zJLd;I{`KhY(%_1(ec3I0h5Ph{jdg4?hi-+k2?b<7OW$d&c|fbMCL1>}O$YS1((Uee zm7evewY%r)rQ2+3+k)vmoy@(O-rD$xeN>)Lm9|%FhMB?hi{QTvpYPKLlPK;?pRdT~ z0=?ZC5jH#9ZL0i2IPhK&@ATM0XJMGlh(6=Xc$3vPN(awvN>8(e@ge|hho9lg-Ntfr z)z#z+(~rQHJsYo3O&wX227YVTWT=J3q0;r2M_alXX+j7JXJA&{wgy4%heyqlAvgd( zym^yB^sZYE-f0HV0}HmorT&nvgNm3>%@8tr9Tw+pOUBaz8CzDg#jqD7)FubUNpD~f zR){vs_q<uIXE`~n(~0ihoZ4X2oYkdF8$<{DzL{X7{?w)#(GqNRzdW>6ayTkqZhuN| zR<bndf-C8q>mH0#{^>izwTv_TJTTCDgaIzT9hh_KxqF?u2Ki3|cC&=<|Nakm|Lt%8 z``vGT{j0m5fBV(l^IvtpZrXJosAN!Qdv>jOt<vyI0pLh6Nm3hx4wsB%iV?jA=6LEm zIx2@pm*ZK`SasU4fjPeS)ksx_r|dlhYP>0Ze2^8Kis}T+Gz|w#i7*}I98v98V@e3O z<M4&J1~t{A7X~iz0j@gi4ctrrP@u+0$nJSGd4SX&@<d-OL*!t#4ZD~9EpX}@PmZLM zQ@ZKc*7YfU?FbB;ne?kZ9S+%4I+;YUbOY=VF58x!zB7Cbs@=+Z$eNq?HAatZgYw>H z0rn;V!XVB}*QYnpKr(cBuNz7)b<7bw{H7o0wEB3UEEJBcz`}ZU1tesJx2h{QTuZ+O zS9T9bmrq7M95vYL1*-2&4<^%eP&wtZb^2pwkW43QIwTVg_}QtBefq!h@$QCWxr4t+ z3awOD0=T(_%?6e--mv<;I;R5Ehtu-A0J=8S+swNPU2upI5iQYo(Hq<co3A|N&<2Jh z3miZD>2OXK7avw(>D!)J-kxYHdEdjc$s|4<S;lvKyxE4f@P;jei_Z&0PIGJTv<>y@ z!J)jX;~ZN{I53CgDF<ek>RgA@Is14c58V#G^OslIt`AR?J7q2y*YCfUuH^2$0cZ8l ze`MuafatrY>DCX-iYs6;V(kOam-Z`<AL`e2jBYw`vZh5iH+v;l_vC%o1mA!85C5(w zF8|x^&wYLO_iuXIW4`g_H~IBCj!m)+I{F5EyaadmylJrpukYpSC!c~ncA_mZgBaX~ z&wl7daI@$6%JgTvA5BLVc=jdVu6C~Ub;#)FI0JsA2Y%-(?|jYE`Pxk3A7vQp7qhAP z^ZeY?eEqg_h41i(Z+^=w6z<!;`yroWcZY4Gn`DR|R;=J)*1Sj1&L8oCc0x&Cx!Mzm zlH(^2K5QT&C^|cHPQP>>#CZIb`=eg8s;*9`L>B(hH~hjtJ`n7hY^H#XJoUgH{eA=2 zM#%XLJ_lot?r-qCx&TIhb*faXV6c6BNr{UO9((vy{r;nV@5}3zh_`KMl^rgp{&=-k z4(~&+<H&7z%hNs`)b>sI>!&%L%EEDz31xF1ap3s-n~#C#Ua^#XFWJ+jrIXKT2$b=3 zw|JD!RVWYNwGKBYA<2)#stN>?vxPX^l-Hg<Px0Y>WoxU{8y*|Lin;1@`B1QJ9cG^_ zO#?5RY}gK;^v58}pbgx^j_Ssn#VWPwVKR$-;&;!uEDmwoKzIl=AY8k6qu(A4!AH*U z>Hg07=8CZ;{v^P)1z#Acg0H82It1^ER;<<k23G=fdhx#WBMAL&eS3wrojyM8{j&OD zeR+ACTnVQt2B>No*`85R8hiB0l=<dLY=!GZ^bXF=hN?t9>Y7Aplo#A!v?FV`I+<{b z4l?=tF0AA82V3gNO~+Q<4YuQv4_&Y#YhwM{IfrLQw5R_1Ir0wXws>d%B*vaT<usqP z{Txrk6`oV`F1y#a?CIC>d4u!(<Gb>*zS=i=ReYWuv3v0*J6$|i2`gse@#C+LerfyI zG?Lr)-m30D|M5+)C@xNl9VU6<i6#Si4+S&G*-p%0@@3Q0;1Jwn19-Z}mIwQ^1I8H) zHo*~ILSV9-OkxTj=lnXH&t^(L{yX?z<X?Go_R6PYdjfkv7Q;}g4)Ho%Cfud?=lcJ9 z43CmG?g+NyY70(V1PbnA<>3Qwa)mGbV;fBFv<+w1Z1D7d_{qMab;adJqYwK?Ps>ze z$F4g&@N2)1d%_JuyOX-*o%_32(e^T(eUZ+*jIo~ivj<9*zm?tadKD?J>LZ>P-x?Hq zP?dXW+t!m^x1*tJHe@2F)|PiXvA&3`iud|H@BDFk!d4zPu(A^TDLt(Rn4Zpt@(Xye zfjS4%mtS4{pvk^sc@H5b2b{8CK>I0FEiH|`o!b|VZg{%}`Ru?${w~|VPh$`^I9X-a zM;7?T&y*j(cfb0r`T=tOcYpCw5P`}WxYh8s5K({zDrMX+z;B??YXTtN++Fw4G{P_6 za{H6LJGasiuTw|7Z6~oV<OsJx4CARh$GA=!y%DqlTO+BD%|cj~E-{CI4b22L7<t^l z`^lqjt)}b-NQ(4<_h#Q(Eq<~+xza}K+CaE668D=Cx-W&2W)^^)bX4BT;LkDKWluTh zKx!0I&r0uU!(asO=O9wR4aQ<1SXPt;1nbm;X*)>0_>}B-zi+VnH-CHgvx2-=-5d4l z#V;z6@XRh2xZt4&59vGtgB>~Wa8Hq}qOFsIb9E|Ndknt3IfElJxSo|*ygx7$oMI62 z5Kk7ArgI(U$xBg#H$IexQ^&wlB<1D|!Rebq-dl}@VDg$OE8}_q`UzGDSFidhYt0>; z!9iaH8qCrUD-UMG?t6r{fo2R`(8swmqI&5$-)e<p?Ua6Iy8~MG?!5y&!`MK#6_5Z` zJwxf$LZ9gp$DD3{YNBQ<LL74)hye&(Y+vH!be_5SIuad0E!DoQ)MkqfppmseH=ff) zbmE^tY%<B<I|;+X%yj_hxz%$`mQ^YxJ2F*PE*NH@l{_=(as?RZmmmD<o=F%oKenr* z<U1c$Xi@|B%pONw)%buFz+fd8Q_VgQhl}RBa(RduKF4vh#e*k3n>Z@F;Y)lPz}m0D z$-`?1=*)qB@LCydBy(gB5y*g>?AM9Gsd|SK{RVRZE4*M@o){6c*<oxb?c#UIa03$n zzdJqrfj_;3=7It$rLHQYt>R#orY(Q?G<xat(&H05t6?(ctLSjKpzj=d;B)9@-}FM; zw`M9Y{YSZ#J_wpn`y5UKGnvBcpm1QW*z)`XJK&h%_lpC(;a57HnZA}^tsBliwh5;4 z8{lRmw$obOJKKq}ivq2qOBD<rjXb=&!K*GEG9bJ7c%icGe4I)JUbeI4-~ZKL-u>_Y z^*`VJy!VR3KXc3mn~BX1pSE51@RTf$yvO0%MBWu_IH&UuN7uECh#@q6SEd3BYD!<7 zFy{{igK`(3@9aQ2(v*kS=R1ArTs_Cd*YQ((x8o`=$vL6Z-^nrC*LR&V6f{4cUrMyW zJ^dK|;t}8DxfLIK`n!oW9{p*P#`@kY>+bWmH6Gvh-UI#OT@`~}-{=!i*3AM<L>bUL zZkNRU<MQ!@&di91M(tN8JT{5IPgMR2y!aEP4V2}(e-NLa^f0mcQju(jiD-j?)0YQ5 zdiC?$WrNpqKKR~yLkqgB<atPuNpQhGSi?HL&CljP&%=56=i0P7T!0V%^+WTJM<9G| zmCH*nH-O&dcr9%_hmXp*!Wf-)9P!Z&umaMdoB*DD7qqK;OXuU(S9GnkbT;FBHg-y; z(@7vcKIlZj=Gl@=AIpor=?I+q(~fozzRrWE4CRp?JcD7L$Er2`Cc-^9P~nP^qXGJ0 zCpS+y=R?(c&`Gi`ZTG#Ab-deiQ0}`I+r4etNC&Gucm|i-dLDg(;1JnhIV?75iWYog zW1G-n&)K?Ih7RL5z2Q&r$hCpg^W;unr@tn%!xvw-U=r+2jE1X86c0SxV6`%z3gGE> zg(H}c2)_;VY|O-iz6I#d?(G`rqGHclnDHQ|k4<J@53Qor;sD!t#TxXLPu{?#cDpEs z$OhM!v5CF~{AXaM9duVLSxkWaU*BB}E3_mxt9fjEt9oc#j1_O9M|*@K9(~q?kpYWC zEV3s@N6mvCl7C;g@uluTd=lPW^bo1&=mn^o2!P}0YQf1_*P9fNp3lX|@A!?<u8B7~ zZj1C=gWYi9e;s==ba`+@=gcM7r2RO9xZzX6bo2C)l?w*jg6r{_NIX(k&9Q-Bzn4!w z_Q4;Xfg^67SRh{9>MFCgZ+s|Y;{O+rAr{X~<fPqQNEo*Jz1r<!$B|=j(#;D8^3l$@ z4mx;T@~P1|Jdq5`a~ylEM7U8KcER02UB8@)hEp;x?XW9*m`CU5$tc;BNAJ%=e6^PK zC0k=8gVj7{-(K6=1jE;@*ni!9?q6j?-}c_>=QXy~-e8HHpC{kv*<Wuh-Tk@WY+Mp- zrdxgeT}x@%LSwq@iT&6``6L^%(+cixU3po5V?h17*UbGx57YgjiO`SL?FF4JSdvx~ zQfTVTvDm8o{>BHt{Vmt(EseDE#P1$vo2q%jyN^}h7umqsNl||{TJ#_K9CRIdZ>&;% zx=jZ)#`m6~A4t)W{Lbt2VAWfAzBnSkPX*54^laHA;cGy(lBWlD002M$Nkl<Z^g5$w z4Q4$u-4>;W_;r4*)P8KnDQ4YkEriT&nKgD!F*c*v?18QT;+}v^Idr6yfl_;A!F?U^ zr?-sIy$a1bWz5gx=pUQi%EN4S%T3h_eu5RcV*n;#C-q)%8F#gNjGTf+zA`B-#@jka zq2~l|Ot_R)nsdjXI`3rnMR0;$oR0#B`6uL6Be=Cdsrg_IW=}uVIduKbDtG5!rKEps z%gF!vfBo&<*I&K3`?H^aefM48XZNpK!PaVgi=Ss(F<Hi&o3J-ycz~~ct&W$~`<&w9 z$)3gsOO88ynp0c*^-A$Vxl+km9de6T$YhWVRcAx?OOK)jv&v-@=m_u>%*2YBmTS;w z-l-C+yV?2%?C(CknLf@DmKzzz5o#NDV3n?|&0f)oV7~VtlJw|9oyPr#x5+g_@hJ8> zDjhFbqLo0=X$8aasV97Idx=4<72Fhw@uSN>9j1>7uI1GuF&^8m@dX|qs|%;$eCy;+ zhmA)#dK@rks8xDR)@DDqB_roR4><he?9;{CvkiIyBnUBlTh(=v$pmjV$i`0w9IoU5 zp9M!`UNW>VUA4tX>treCINxLV<3{vsPzFvF&lZ}%#B)?|uC-cvG{+EasppHfwKf{a zh_s|vV`bTt+2`t&z6q7!v1K@^uKcd0&tV<g(hA;K)xZNbvH@e(#ZImGuM;YLJf<|D zAtG4t-f`jB1%99VH>+Fu**gUAK%HTOcbx}r!K=39M9%^e*A*TgD|kpD9}RN4)h&PW z8N`bxc(2$EZ|yo%>(JhQ5BgH(`xF>xDYd<T0uFG#!B|!Ge6_LK%7fV9x9>1n+Lf`~ zl{>OjpIqQtySJ*&9R@~@RA4?d)+ZZVOd~pc>@ctu7QoHmGbmrW6Bl*JU|U_-mek-4 zrnY<ov+b&te)an4-GBT~t>*r_zo^B}cW=Ib)6Sn>Q&Qk20NaXP^#$t!b+oM$jrWsf zWz^dYe>l(|*V_RR0UMarUlgt^J%pmS4i>Gxc%a_w<^(mf%hJY=kY)Sh8^7Q~CO$Xz z(yt($>wzpoTJRSzcYfrqPmNW(D2<&*7tO<0-}O_$DzR_DM!c%|cpJa7al!U>NEN)V zTdigH(QOwDpJMVY*?6Xgr;x)HcnAtatm=5MRMAcEGd){37qnLf51xA!Ouu|AzC0=* z4&l<zeVU#C>voOFMPKF#|MaAI;B0fQ-_~K*Ec&ekjX&XGqU|a8)eEyTf!YA)qdjyn zW`T@BZ*7wwzu&XC^3&n*;;XwSUy(^NnvBCyq!|2dkqtgFO?ZxXlSrpGIS@4_(8CqM z8z&VG%YONzqY?&=`o`m*<&*yr(WwjAO(!~Y&_!tu_^WUxSJJiU)dF94;Pgw@U2N+( zG-}*EYBd|I&KckBz{mON%9G7nmsb94K*E$ng)aJoL-W8Jw4D1<1H5tv6NsF;T~~Io zSbY_pgBKO8w>%AKlYB%xCf~ciZp`wUAGTgGdhVfN%4OUr4QKS0S(+`AY31zBY7N<0 z$nZro-Q$P({`GU=>edE!Ym)kh@9T#v_^jxge`Y%{Tz{9oRn293Tl;uZnSLtYpt0?^ zFAQ|6^5H%>Q&0VZKv>)O8_!i}F$J$fXZ5!etJGR7z5jh@8&dcrOk^j0#l`pr$Nu+C z=JP?tu^ZsJhS#;QQ@iE6_x3{rOup1W{<F!RD5o!wFaf0Pitd(#EUtlx_O+G$(EWVe z`p@d2!asHR0&Q#pr1~=GhIm4|c6Yq({#;Kp*Oq8Nx(N@*<Pxv9Q!g6HZgvxYz*>BW zZ`roE%WVo{p4^zYJ|8oSJHz_uM_1!x>2OrWuVX$J4Pf4m>l~DkpzN*u#6CSEp+23T z1)U>LgCu&R+_Cc`M{UwK@J7n5Ek73y%3L(y;cS*K3bn<~aF2%di?<fwMfX{Y_`n#1 z&p9xoa}9(|K<JS+Ojx;<gza&rwjuYo80P4kEyVfY+VWhQS7pAg&R6+TuPFW5t5<hl z*I#~}-n<02e5U+3TlG}rr@?$#+KcL_4|fm7oda&P=eE<Hd$`yhN8ASR|FU%_%$g+G zS?6!&%{{ZKdZi`0QKJTl#lU2U@Bbmj3}eO^#0ViUKuBt-yQ?bq`Trh&BP+X2k@?<; z@NhqVc0ay^hjD1JuxqP2eGV*BN{ZQgHufmJ`Fh{))<&hz>F#D{D`O=s9^v~so}I}> z8tv4M^LtOLWNmBuWx(a5!B@N}m;IdHREL#z+Do`hQaj^s;N$cBMeVY>v_sk!7u~tp zbFr}%n7?~$Mz>rADhZ~_-?nUa8~)6=AerG|X5U=0k;Df({ylrO(F2?PXp|o{TCCB2 z^X}W28vDAY5PI`Zg8RDrhdD<QowGE=5W|i5-q-Lwh>6CAp@$gP_aAHAAum8!rz3;R zp&1=~mcZ{b>ighW{*{H#>A;1W6Fx^f2N53pv4dJV@PT4FC>O=NesWzSQyO^7Bviqv zgRR5E2~EMHp~s5UxzdT}11fK1xf=$}Dawl{mWX^C4gdR>zr6dizx?la|L7n8=<a(z zZbr8yTebr?TmE#Pa4LU7W^j)zZLSKzP1P)IxK_7&{5gRnL^L2ZPL(?ykd$T(jS)_? zhF0~LEB(mHmyfC)PUN6<8WR)QF+jXoN36yN?>X51OxgD_cOCft`Am`#(t`nBc5U`E zSVoaFbPE7(f>7^*v*14JI?C6{_4x{cnP)n&0-0?j)rb<kh=BnNhibxS72qqqvfMjQ z-i&Y^>}G6_vEY0%&@kX@MHu0h{R$An-=KmHG%2B(v)f3v=lwJu>f@xyRDgn!8cKr~ z8b9v>he>rhSIG`C45j|iq4#-&?MxiMwwzlK8abOmF3(1$!_A25IC;}g^^+&f)@Y#z zD}o-+s&hCW+-?;ItGYOVV4&AwWS->dt29_j3v|5g+&y|MZ*~X(JX@n#g+}A14=Y0# zIIJTVJA5+0Br)CRcrSZehZ{T?4^2KmMlyrr!RzSks4M5uy-)SwHN4ZGH7XT9!6RBK zgOT*FeAEJLfe0cuYMS8DqAtOQjdV_@wR)<H-6#kXcdTNAXq5r;IDq45!IX)d9AGXW zAM6!4x+-6e{N!<ir|?M%i0L3l@J9nWPPRSU^Zuw_eI9wf^GSmB@RfETc5yqD1J`lY zaeMSxee{IA_N2UQc(ZHqLI;KpZ051&!<hly_^OCci;$u6`@S7h!Ncg2fBqf4kF&Y% zA3b|?_x<1d-rdXZe_4oGkX1nX=>Cf}hHslSepF}dVG-(fmJFsk#v83#ce^H~e9?Fj zKEo^C>u8hh&>KNydxHViemDE34Dc*bTj@Bg;sYyH-kwJP;fb=IUwk~?BA%2+rYhoB z>5V+flg)j8=k43C+axC+m+e}P7)$eU2C9y~sYR`W`L_176-{QHzWur$%h$bURa$=O zH_hzYL@GwrVdXC?uie!i<Uh{}7Ty7l0to0FyWY2plgVtK(Ir#w*{&@MakfEs85jRL z3rL=3mAvz(${bz!1T^)QqiubQ2p1-U$0OahTIorQ6y)(2vEs;Q4QJ)Gox$457<zyY z*^juuPRwEfVbz<Ki@qu2({@_sGvBsc?#xn#b9I>69iHK_ncT1-m-!GEpB<<fzCgz_ zy0dnPd^-5=`J=A2%L|4pL#Feap@sIz6exwrl@F$OxA2S4SbDau4zDTA>|>Ow9uymK zKI-0#Q`yT1^POG0+pR0|P&PiDIy*0G`7p7^I#+wTs=KNpEstPcXJmtk!Fgar8obf~ z6R6|0w!DWuY6V3}+OBOHRlcp9OZM8J=`y+xhR4>*4+flYXM;8Pn~lO3{@bnFP59`L zdB4`RPOLUk9I>xxz%?avzb_Kd-||?2WdQo&2Qm+~eEnws?yG6>Tf9z7=V!FtPjBt< z+4L(|!QMN<@uAjs19nteEb_ca{(QSLzY}^aNF2kTZN_!Di-W{{*>W6Nr%?IiV@WP$ z(GCWD{J`JER6ReRKMK#A?(t1_ux0z;@iT8foDT1Oo6mi0wS*3km{~kwhIOCNtUQ~- z?fsIQi47Zc;^FqY=t;s^+YNVv*OTw$qeGp}#0zbYi5v0pR_rvH^wvhOXujI7o~aGv z$vDB>sy*#1U!g<fp!=v<2d*=nm3f`(`U!&@f2N<GomaR&m)&|!wqnKekBt5LM`ufS zEGAZKh+)afmwuJvi{awm9AVdRnIGSEPn^N(cl3!28GAC0M?Eg?oMtEJ00#8xm|uhB z!?*m)+n@2Ntm`ZaLt&rJ$#-y(*)Q$OhSy=HtL4<8ZH0a9kWOlCL}lr+9g}qcpJ(eY z(zRDj_I&yL+1(dSG`{HiN%pp~jah7&d+#5Z0e+aj(b22u`bJsZ!6$e!tTSAju>BqC zr)X;p3i-_5#E0j_Q`qj)t}oMn8MNiv7AtPH+p~6BePdD2gHLzG>pl~9==j)7v<bd! zG~kQ-*O$Z7<j9Z2y!&+QzUA<iS&zpJsA>|<AS8KLcjXOusjo(1^_`A2+irD2G@Mm4 zaX)|ZyT>DjVTl@{Skkg?W`G{Xc=3hKEoY`Z@(nbjz(#8CANA_<!y56*<BF;AeNcW5 zzv~cN??1u5eOLqDMg=}pO>r$F`Cw_U-TNS)fS)!>Az0Wun!UH>Wof%}DJ$Tj*_3!w z>y2>x_Sn+|q7mMQw!@LTUywxr{U|Acf$x|x&ER69H1x*s875}-BlI4`<fGsl<w<~R zSZ`^RM++f%q0ryKt-K05W?Y!x?W2_QUGJEFn-kx+<ig>9{MBFG{pUabZ+AcZ@sI94 z_Rh)=n!bP4;`paM^L=6+)y;B*&_=v-!s>x5g^KVgMP51kInHF;aK~HtFE|g+Iibqf z;Ndic%rK{l?<oYBGu+M}b^I#&$Z!s23HFwb39LF6{FjDj4^r55W;uyBjY^tzxHZrm zYDg~#LqiB}wEtl;TYb^!T{NE!;(%F@-M2Y!gD2P0<#i^iYk^((>J(~rf;j%-3pK}+ z4+UZx$#;E(z1C!T>CHy<;{#_FOUDn_K4I06>Gae)I(SC6$?uz%^Sp@{W<>DD%n>7< zYV@4VP%peKLtaV)XZK2tIOJ%e18wP5ybArU)2W&UjmsL-;|9Y$*hH#>dXurz=iM2$ zcbpX+Wbjr^TpeS<Y)BkufHMG%-uPv}McHH!$05ADbqS_l<Ktk`?*oHMgJ*DJ?>{9+ z#4a!-i+*HC|4Cv45R?XUJB}02&6RHrU(Yt+v@(hf*x@HVC|%%q8o2<d&!LK4mcNTF z!|M`X`6YZOoAEUI1X`0tdd_CaeMea$x98#7W%0xK0Uf9ehI99V5%7i&9;jo@A_rVy z&pNFPIrQ|5D3{nBTOU2;Lnj|IUU}TH26I&m%HV)Sx8Q@E>)_Dc`{~ThpWGhGOD2B! zeS#|q-yPq<4QKcSXn5bUOrN94GQrK%_T1pWwIWC0`<4$#j!)2<E?teya0RC_^Z)!2 zp5yZjphm9_l_gMkBG7u)Z0?VL|A%)!`^7)G`=ZYZy=~P;ZxqF~7bE3i?ZfseSm<=f z8=3v#u}A{`e9MPsnev4F<TyNDpj_R1$E>`>b#dgA3_=Ee3y{*2Yjw}Xi!(SxZx21} z_xSVbi4TrShbQ1{Dtx;1vzkEnU_PNX(C*Up-0~p>?KR@}+Pdl#{6)ZY&q(^id_&G? zo!$4Z+X?pT-`ss{Bff_z>O(Uo`4u`_Gq^!PD}V4}el=S5iUYj`Z1TuPb)>6?&mZ6N z3HWBVZv&%crBCFTOGeS;$S<BizdGxPKCK<#2k>h%x3@rC>{G_U1YZzj6G8Hb!U8W| zIvfo^K}(PnFW=`!y_4ykT%SDJU`lyxh$HYW0tj&JNU;TO8gsZ0_i6~=p20bq_YQ5b zf$Jl?BO9{1^qfzfA5g!d{^6aQ+u?q`u`?E~`emkTHy#}l(t{F8G^0$$Cw@42C_elK ze>I&t)if_5CK|j`$MkskoW!-4!IdA3qjTq)AMqS52B7bYr}#3mozI3lo+!(HU3Aaq z#`rZs0Z3gdqkXQN)lyZzReFOz-<__9fZ~w7Xu${g(gXF;o6Tx1V9gq;%K`UM8y$e- zQ&55f9rf2{hKKA{gMrIdEnc*e>V3AN-A_x33DjQ(nc*J9RWl(4A8G0dh~QpK=yrqR z!RE)s1_4XgvYT}IV;z8Z#g+V(j_zbozP)3sW#}3$mH`_`yYi@KyDra0*t~GYjF$FM zEQDM#aB@?f^ian_p4$3-LE;8qy*?+Y)BJ54@jbIjGTq;dR=Dv=cw=9i^WA8ZL}H-m ziYL>JuGeu7*TKurZdqz}Z^Z}OGho@Da44=ZxWyN9C*?tdpF9RPXUk|HpID*8haU#~ z$<8sog4lSUK9nFPQ2&0Er(+yAm+^zIrO(0htZQlR7mum4de&A~kX~<+Nj`e-ANZko z%3ttR;Av=vAD$Q>4OGd;KCbqEZLY!{7p|^>93LW>PxNf~1;ni8X}@cG!fC!UoWwf# z%up8l--s<ayy0{6vj&*<tQ0b<%;NUw_GvKfp|-+%<j=c#-o53<PdnQTDwVD8V;Qai zncm0k_j1>do7t@ctj&&(>j-zhK^6Tk?G9Oob1iT<9UrT|wVC96rts=f1BkC5=!3CG za*h+4`kskPXRqUFy04xd&_(b3KF<JpK!v~7(z-gz23ycs9o=srw=%PrfMs#nre)CC z=wf^^Z1CfqjSBIeE^Kh1dPBWmFl(dc$LOoEq%uCNjX=}<UgeMf<*(A;!7G%H2E60) z^jUuQC|QLGB&60bBn+cf<Y_6PQ6<EGQ|G}4x;Y_hx*zsqNJeYdp&+0-bPqnhY{%Rh zc(ZW*6Cgc*Zj*^-zJiI^=vyN<Cs`xGCXEUUvK~a#^OWOxOPRlpvD>bmZdL9{Og%46 zH+om6<Y_o~kJ8BW2S7*)-koPil_A8bU<7fQqqTI#bLiEOSMC%oF+RxW-_6K3S|425 zrtDpaW42UTg+ac7sJQ!~u{2GPK+<RhoV?%<{@?%VH+TQ_zy0^SA2p-<#g||8jolwj z2HUi%k-iu=A--v*11HzG3^XK82h0*7l?aH2YR}b^NGi+VODI}Ehb3X;^e7|z(CopP zRZvaXq%eb%^K~$6pBym5D%LV$WF{agrfeI5tzp`10%c7JD>WGy!4)Kb>m8lW=y)g4 z3Xo-Rcuk)+Yuk19y8zj&t47G?P}{i^X@WiZtIH0_3pNlJN6g?1P8LGhw@Yu!-}VWG z@~UUcv%_yQ9q}Obi3h>0G4Ksz5#$WzhS%$GpgV7BfHv}48NojzB<3|T;12&9u&x81 zjnr^c>VEKu&Fh#AUz)4p_@m>@DXb9(QZm5(HhPs(WnHp{$8nm|*}*88Jo}Hw?<rt6 zr?Dx#gjX_--N6SVd6(C7yg)ZG&4E|W(jz0qW$VtL154hnW-Dv35mP4VCuey1SAM!~ z6!K~$fHCUE>32D1Z+1j_w<n<UY)|DlxN)|X;b12pGGkMx)TjI!VoB&2KI(A~-0)9E z;iD<%z)ziufUUzVI9FE9XE0)AyHoE04!g^l9y~oFsx!MykK{PZG_T<AYPiA1kNJTc zaQ3(Ko*nwsC1048HlE{=ij?=P3Qz5osSr>eJC?po$tBo(cpiQFd*pR)FMQU31<14E z6O75Yv;_;DH>jiz&!lTPx<<1?%K4!~9)1a5rpoyVpTLn}KCfpw(lr@(U%h&H_wWDx zpWOY)zyH&_=lQ#DfB8*PdbnMe@9$sSy=b)h!~0)V^hRqscb2&a4vihho_2Y|gJf~# zhE!K$2V@`_f|EnH&KDew@qwkTlV|T10)?pl`$he^2d-<$M^QWxB;rSfVn%lr?Js!c z)@cSxr|;br>^9gLi?&|{AIu-yhk}!RyxF9DWcT(H@Qr%AEE|xtXM_4by)IHi&Ihes z;x|)jyh1Y>4<!N$MwGVM(9Nebvuv5-+i=)>${`4Uwny&#>3n7adz{Y}<mlkcC#^Hr zK!Vr+8^TCiXz*?CROZ>Ddi1kF_;O`2U>#G968?}EAH;C&+d<C_{@T3qS?5O&o)_&k zh~B`!Hr){<EkEXW$r-0t<1=U1G1-R8CCjD3a%pj(GDJJQk1x}i5_-He4=)(}+6knj z9sON7dHUB0@x$9CAmh2qV6$oY<^!h-yF30;;rKXF<(!Adlq5QC@PQ<UPqdVN*{DH{ zgWtiWOgEhlPvzGZcCq#bB(f<__h^|ugO^M@4G-1t-A}e!j(w7k33n}%&X8A&<g<a< z(Xa4O&G_3z&rS?*<4-y(?mF+K^Th@|%pQtUj=nv8{&GAtxD65XivKo48xKEv-3o8R zeH{^l^Tm>r2}<C@Eri?fE|@praS*G{%IdVv4+R@$__x=sI$K8lZSjJiwtK6iDz0s% zx`DqP$2QD@uY+6X+&h%#btE>Pb)?5$x5690OLnu%TRV-JXLY3Kd5^trmQ9!6z{9aU zu|#oG2fu2Sg!k*;+$K|wug6=fC-WV(XO<y*4>@)<3tU?bpJ<>nY&T?!Q<H6ViY*P4 zeVadmzdF}pH4rcvfnB^GE#3vDCuq6!e~KR+=t9rYt*T5ISH2iO-!M7IRej?_^<QW7 z;ej|Z@TV;K>;~k+{nP-26Ki)qs|SvM`_vZP;2%H$#{=aV*>K0p0}n2rAJ_f()Ppl= zpy-r)`ofNZ!%s9R16o(Z7blK2brJ1MPwefz@^#uv+nyJ#%(Ns}ykv!gPOc@%U$kZN zi_%~8+;@$ihBJ6sVjKU~cdAdNgK2j4S^1uKz0IdOKW`<#vnH7K-Ras0VZ2GmM+Md5 z$-v~-TNaEZ-K>pwSshqCTVxB#`!%^|v-noYlQ;dtF*NguUQ>Ghw061`T5p?N^Sa=J zbjj))-eZ0<yvM$Plw2FpDxK_blbgZTN^B4=3bh?<=Si=y=!-$q1Za_do!tuKJ$^>3 z8Rw#tgS+Q!O&i;_`nE{8x~-J3chK)1&2nRFPC*a|Zc4EkUepH0a;mp)%2T7Mb72(9 zyEyyq(z@IQd>Uko-~=MfZf<YNYxrQ(>LE&*7%}~`^V_wKnxXkNo~6I+=Qw$zjWKRc zf<ncRnCv@f&r;+k1q_y{fMM2!kxz07mzixQEMOW1!b4X8R<||kZj*Av5?}_m6pX)& zn%Ly(dH*OgVNWqiOE+TfpiCGTJ>V;G44}($_Mm)w&!nJ6V6%4u!<%CL@Bi~RcmM6b z|F65B{q%3|e)`kbcVB(+)o{h*?Vgw8uSB@V+cp3}CL9DgU=IiP(zk{_$I-v1Hel%E z<2o5|^)tGDM!CCAUhf*XK$DFjHb_t=4iw8Dh{o#VZlkD(w@J+7w3Z5LtlszTtR0Cr z5`;sIK0JyE@X;wXf~k>752whS8h)=#XZ33M@OU$V$)*B1bq#4afYlE^I*04Lh96mF z!h2?f(=5(L)~d(*Y&zam5)I^rb2x*bWEc<k-LUX~S10$4C4!ZCPycRmf6XAlMPqQJ z`!QBHI~drmyFb@~r(^v)Z~|LddcKZXc-w61H1Z*8i1~JG#<=Ts@~YzuID~7o2Q3&~ zmkxTjJIp}50l$Pfd-##v@G499T*78Z;q0euYP5IhyBX~M9-4aCe<PRh7)|jckfR$s zX_m0AT<Pj!S95-xp}gvVYtJMcUW7@q{WLOsYY>lvJv?KhqrY;8?ty{b%`TCB!?nC+ zTK-kqlLgxGDQPV~sly%Dpt4U<pf8*R^Jth%U7-#1(UjigV~(>{<B_BL@r4ffS7!My z`#;aVOFum2JcC`C>rlplgzF~{9Q^Rav3wQRHm{!B+4Th@@$CBOVb{ZU#XtSI%C3PP z+=HVG2gifQ8ovOJ?&{z>!8@|${X(F7whnJNJLukKEyCO03m$@H=6(H}70bqx*YlT; z?|%LVKfU|YKmF5Iu>9WL-~8RLTDE%jeE9m;1$KRU?ztUzKZDPJ4$b&-cm!{}s`i~P zzKx#JJz=-X@;S14cF{YX4e#%kogbc029?#BCr@y64vzFr{p=Z=Gm}oiM}JA7;_m1} zb<*br&g$)%K>J-m$h!vqlrtEt%~Npg0xy*xyZl)ctdhV_kN3H?uI;wG*BtmL%a-$( z>}our5B^o>u}#L_|C>(D5Q+q*k9<qUdUn8vLxZ2;WwnoAnNose+6<UyWO_QLhXHs* zH}=kPc{c-PB%}X|o;r|6AM)1G@Aa97wISMIftkURwPVUFmv4DrEa5w;k7~O<wh78d z`E+vm5B!R^>L65dRoU@*Rr=X+$$Dpxuv(d0p7|Jj>Hp+DU>5+$c;IyO=hKs0zR%%b z*K6M@H=UTGWJBOMf;C;7PL^l!2V1)8!cPJ$e|Rb9*VB`yd}MI7J9Lr`4js0toL>ps z<TI8Ttcan3JAvSIspnuqZ*_Ow-4bTY)e*(x*V?TVh%O7FH@J};_If~dX`}i2>lobK zppXBZ_Z{ouclrC(SDow}uXG*_0?}ir=vaB5J`M~|TsXn^@#)j2cm>asD?kwho&a~R zS%kNaIo<Wi9IH=#x{4ioA9l3$OnU%t9S?^<*=!)*sGlsrfWI@-FuAhTZe=y_ezkRA zYg^@=ZGeHb{gFp3L&m4QhP~_RFQ4aTbHy_7zdEaXR++1Pk<ZVJ9oXY=K3RM&>a%Cg zvnG_D^jcro?cZDRW_i^edshE^AD-XfA$5Zp<k5}S7R4n3!O?{qqoa%lY3NjpvwBl} ziC%|1*UabDUY0l->A!OF+_JCCrH8+JuBPz!CqDLr*Tu`rrv++uvB@fVOAre%4yVh0 z)d!!?@pOM3v)yWN7&w>>b-nt^r=6EpKkNA4_(p;~8EyyC;ll=d;M~8-H?WTz41FB0 z4B{EsV@oeuDPu|Ri}dNM`Z-@D)0gRxot4dmvaPDzjIKUUS;C=qG(MWBGTZySS4m&A zBzS{`I-UJ9ptl|Ndwyn|Yj5iGdcAYLJ)A=)+|ncRlb#-bldiw9T-a<sy%-)bp|ibM z=p?)0M=Yt<Unu&Y3o!d_5_6M{@yb6Eo6Ni3>um|dY7H{sf5fZg3b%*a!>As9++aMz zd!H(UpFsz8XN8ktp)^4pSfzGTT>+)z;ofjl<<j3pA)RhV!}V1<;DE`09BV8IgidL@ zJ?apcjt$70-X*BXy8Bqq-tytMEhBpip}q;Q5g?6Q6?4v8%Gx!=r|6ZVa2omvg=6an zEljY>-QG_y;^brAOqkYI?>0KAL4B4pdipv+CahSV(#6<Nn**nUvX@>9JB2jLne@gi z&qg1^TOp6+1%QY;jq2Fi{pcvK=W~$YN{?Y1y^jv}TedVj4y^|Rkm3U&ZJ7`F91LE7 z*JdnjO7K7b=U?6Z`Jeyg-A{h})4T6|`J=mMuUf8MN6d_y_oR#rA%U^kJ<p7{QCGYX ziUnrIC`~zy!K3PX)H|z8E)9yv@YD&EnYI=rHOz7-y-&H(mxIF#Sicdtgr_A7_;vrj z+0Q!CMoeGp0OwrgCsU)rndp`nV5Oajx1=EhDpIMg<K)i>Q~0Z+vhacPyZe^*kw<t^ z(BT|DVNjmTw~lklcjSc!DY?ea&dC~FOSvX=^pxMsFrC;;uwc-2<m1(hxDNW;mP#4X z)v<nCU38Va8U2<7-*|-=_~1Dm5NwS1ojE%Pz4I(HT=^M%q^~g#o`6yitD_4}>K<9A zuHn;jd_)81G+QVQFNtoS^GIxS&edhcc#eYHZ+xOt(%}&`5W4AQx(UbXwd?8$PJ>;V zLtb`(@8c=`@ZWiGPA+_yvyoheEgA26wxq7o*6}M14RPt<o9^yAhrxrtoh#uuJ?s?P zn+@E3Q0A~ogPGrSp)2}1oNoBdX62*HqdEM*3y;;)GiPNiZ?P0+s|Cm}y5w73fsjYu zvx=p9hF59j^^9IPrjehnyYG5>vwZvkoYgs$6gUJr#qe9v%9QXA92Z;EkE|0g9sE4I zVBA!35H6V4`E#(+7Qj~c=oy+1Jo#Ktf4Vpwug^+XczjGJ4YuGz*{63w?O$ama)@rU zHNP-er6X^j705rc!{@zs`%nJy@72lule=I1(I4IY=Jor#|M|DSY7@Sn+`W47>h5K> z{dxmSy<4C5SL2OW7<tjJ_V0K&djb83X6F-3u^zk<r0sHextg3~BEQYfKbQaY{H!>T zISS(oOF0x((XBH0kqvt|Z4KVQkB+LpbM-Ii=FixCywbty$;#r<S>2K!lvjX}U$qZ| z0l>O}r~df+Bzy-w+~KWLXlB>I@Z=h5`~h1;_ZjpG-E^+oQzyD_I+$dKBf8e{zwv^< zMD4W%m%eF>wH<64{HN`j?9+prSuxAhzv)2y&<WbcjdUVE9RWQ$9Soh_4W8FlJZhQp zHEUhzaPChGF<SqmcIV7`u~`Dd)BeWSP;en>>09<3fk!ML{q}Jz{pjvx%gcdI{O~VW zpX<SO59YB`dGHmI-{t*0jSu+l9#_NpD8|w~^TVs@*E+i8%Quej($DkcIQ>a>;l-c9 zXS&u|dH2g3g7o=D{BUy*zD~_#i(!dx9Ra#mS?y4jtSlc$LA0mq6ws}b)=sMrtZ17k z**d*RsW#(Z8yi=aU**e}+=B+u<=sGiM2O$W?>xwF2=*JarvvcO4(sTWHhp>E6^80v zbVp7he(h~>_>`ukmus^+%c<t`nIU$6<e~FsP==o9ltxl0+-yequ6w*0Fz?}N*I)M! zPUJ1{)^;x@xy3N-ZyUh{+w<`p)v*T7J7OYjxi)#6oT}%Nn>?<sLtWm-bsju&9L&Q{ zuL_;mghtC7e&K5nNGILvPD=}>P2`?upX`l276wL7!GCz0MKi;wO*r4fE|w38**KiU zadpC;Y(k|N?uH=!A!z*C>MS}!CjID3cc1LT-O<Bn>7NW2t)F)&PrmPL>Uwt0Abxj@ ztLh@h)q9?Of=frMClRerFyk47Avb&At0TW_{tYb$uS3Jhr|uI&q)*FJJ@SE779CAH z4-dED5l)@qcfJU7!&@D6K3O%alFzJDnmnF`=gT^@Pm|BfUekQh*?YHN)ra~b-aoIB zCzai6!TCZ14VL^iY1{0t_uTWpp4T4eJimDUr2ZHG8Uo=~ww1AxXoLUdr;}uM|DeH- z5T_H`hx__!23cciHKqI6<h%Ryirbbk(U1;4(XCBx4Sq1;Q<*RL1pc~fGrF(S!!w~5 zf5#;7i%ZjMGwK^erWM%TeaM|(G%^0O!Z7@%?<yNI<Grl#qE)gFMi+Ug-2mxs6N#?D z|D7YW%f=DqfX&nbwB^2_Re<BzXjsoR$nr*eUHhs@NZzdZ*rowSf{u92;s)ng1|`U> zBVyF)VV$(cxRhil6$fghjlr6&6^KLEdmF#0!)B{>%B_V)<d!TYyvO08K{SgH<Oy0) z?FNUiku%FKVi-lf0`zsXky@TWObIxbwMpfhfQLc!-}tnpbMoUwX)`Vk<Km<A+wsY0 z)Pd>cfs;mrC!~C5bRuUN|2V1FIidgczy9j(KmI@e>F&!{-|O4DKe&7G^Pis1LS>BZ zY(t3{ZmI8sG?DUbmNPHr8;b@C%vzaM|JX)M3_jO5<*jnaEXdi?-|jg<@5ep}i7l`5 zu3YJx9Y}`Co82>#q?3>r8yKHXn==+@(SerUaR?9IW+Y@4&(*aCAbfQ!9yWWaljXBX z9Ofr@bvDV*GDpi~yo0(?-FSIM<;vUj=&U|Ew^6ltY1!QjXdUkAh$oc%LHTr|oi);& z``(R-kKQ5E;OZDpufmty7i*MPV|X@ZI<lUetAD{^aJKU`9W5U`>B<_^a5){saH^p+ z^0j+1noX6CCt&nj10K)T@fE0+wji~-1O`;aJ$-Z52(3|9re73PraWDT{qPv4(lvTc zNjU{_+OCMDb2^-i4vEq8>-`10>8+Eyx-^ETK?NCa5=8&QDFEZguIFmXP(vH@&<3Y< zcyD<%I*#dSPuKr02|dH>fKJEKS-RDITDF7S4r%H=c(5b<fWxun?_{LW+7Zojq}>Mc zCQJP29+zYTPl7*{Q&f30ZdFOi>cU%co}Z8}oXT>JE*8+x>8?+(Qw`bjYFfq{ezziL zVCz%y)%ywFEzhazx;b>?|3MY<rCm654R`lwouS;)4uRdcKd0~LDB&u1b%617v`5cn zf6}(ZG<~8I3sje;JgEJ`jiSkmAN;ogxGg<wr1)vSC;e<%@uM$a^*NzmtfTw#tMA|a z%F4WF-)o@s)!jGg<KsHQUSIvDO_%ts!5`t#SUr~<5Xy(+_4(1CL*?oC;t4r8jtoj! zd3YY&@$BeDNxyX<O`bFBvYWB<Wb3c0-1wDmcB@dz#YWUDOLy}dY(690h9R4Uc~_el z{%Z%)FP}<zn;&d?wgJip`}`XCJj<0&gAeBMQH(ynYd|31y>EQyKj32U>TNL4KHX=> zJ-XUEKKh>TnGw*b{xP_Cw-qJy?8c1w&mN7B(WKKW@Iak*Lnl}Jn&(P3`2cNC>EOsa zAB82sJFGf(JAF$}=KrE$9s17VilyOP^;{i9b>i`ny=!bvHu#I?{pq55j*sfW?I7Pv zFC|_2bIBiOi)SuhQ=W@{6<yczj}CRPkKkUgZdLu(>6Alt$MD+4Zda~HaP9wobj5Mi zvHGgV`Sw78(F^M7a2yzW9{%(BvIAPV>9+DQ%6q2L=2N5Vv`guq=jp<kxzYhhU(m)Z zdS)l!q>?|yZ?uO)@)nEH?a8U@tHXe%SyVEqp9;jv7#y*B&R!li9NUT@@as$&%%HQI zA*Qs|bKZ$%pVg8M!`mZzmBfO1V4qcS*+TXpCMpMPch-jLNOJ>dcvNh%cO*R>&U_jh zs&joCR1!TrYcl6;?<|TJ9FqY$`Uf|0ZYEW`jqYCIs}42NBcU+;chHkDAjFBpLB3)I z?S=C0k8ScbwaLXwI{ita*teB)?M!5;rxkeYN&P_W-OGgZ4ZP#&eK_CSOC_F1RR4Qj ztd)TL4m+K`4i7Mb;?$44%%r`0SG<<bS;xM5@bKVToKrpfN`>-t@)SHeg}L(?2PPRE zn#vWN=|u=1ck`X!9TK1Y;bTtc86QxXu7ulljPl?O`_9L=7t1B%aiqLgyKS&03yr>0 zer0d4PK<EU>AB;RZwv=@ZY5pmiilUwZtm$|H61*{F4$Xbkjy2ns_>$0WGB9Y0`|b` zQNe_E@MXVOI<w8Tzf3MVxL<Yss&}(r)r+-k`FU`BMyUN#tLM~ff=i5L_EsnRY*1C( zs?QV(mO;x?f$%PGxa&`C^V;gHaOr7q<=3w(!(!srF~98<7CP&TB5X|`0$i`cyeZJ1 z?ZuDD63@bEn^vhV`=!r&9i)!B4YADndX4gRHp@%cbWk6XZ8T9_f9BQ?@H`lJ2Vc?< zcblBD<1+uR&Bwo-M1IMvc05YD+Jx8b7(SL`a{0C?TJUh}@?+is#;e~wk{yS_0E4Xp zc_0yhbs+%KvEc+FW=n;QB58CH9YXh(omoO5ElMEc-K57YSEBrHO7m`S*lp7y+VHS@ zhMnH7F7-cXIopGb@EnbXL}d29_YuN!c`ZxP(S6c<{*%7t`=kyu<{{Q>ng$q5DvI7U z!k5z=L#|*p^;EFqC_4sS3Q}6qAaEUnEdvF#Lqk8~i5H%)GHjC{xCoiRs;ishaKcUl zLx|{9zR+U={U*ixi<U1xefl5nzWS;iNnbs``{DP#$VlQ}ve^bpIcCdMbrk8HWxDHR zGKLxr4779Sy}$|VZ*C!D*QxvRuHux%X93pH4IW3$ky*w}F$F_=kEL=SlP&kHf!n4c z!O=LvY46_D(cR}+BJ+K__`{9kW?V^e<xZneS|dmd&p0srz+}*tHEQs-F_q47&+u~{ zIkM@Vk<VDWZm>5P+=@s}hZBrOHVK*@*YMe7D$wibxz?Gt^g6<Nu7Qk4)qj?V9R2X^ zTBC5p3Dg32@?BlB<2{;6!zX$YK6v&vXW{3A?)&6Us402S4`=0&61HsPeY4}+eep)` zoO^kUjqP2g;TVO%zGg!OmN#}J5l8j+qYDcT@jQ9KpBG`zTY}pCRc?+aI(DzVWKR#L zi{;ZW;yXM~BV=ZrEI3F52l1#pv8O8Nco$WuN)Bf{kyOfNg~CaLa)KyyS00}gOmBy( zKdVov$|VE$pg8q+`RKZ`A$HOUse8EYuk>&j{Ic!r2{j3%L7wT><R(pRIcF`#YP;lA zYI&9Cu$z>e?aU5T4ZZ5_ayksok#BW%jR&eQioQDJ?<Wn44)}b2$oKhiBPE{3>uwJG zlgG0w```sPva$2x+T`--zRa*)86e~h|AQx6J@5rP2VZr5mo9BKF`CDW%riSrcTUhA z?Bu#2wMtv%*a)_FZfc+!gnN;X{=GJy`j>zF&+mT!r$23pR3pEAI_BjMe^4j)<K5r= z&EMYrNC40>tosKAa6R|EQ~?mi&A&qXrb`G3qupOTW7Ce&QUi?Mpv>1^>FWS=vkuOf z@!Nd-#GmpAv?s6WSoK8{T*e3t?1&Tb9Dd1}Ql!&(#h0?Z38lQ+4K{^WW?OvElit4F zs~@$eY`v9B8+=OdDxA*c^Qv#v=Fi?0jDEE1a?f4!Y43ddQvPs^{iWrf@|)<`>`irO zkF?bQEx^u(wYk!01y0712Atwq{GL6dYjk&k*3GchPR&;o7h7H9sHl}gz5%L316O$< zQ)tlRqeB>J07`vvYV?T{T*_}i+}QVr<fe<^)sgpG;R9AQJ&wlsi^mH9LuodhFZUUi zV;ku+8K5f$koBeCI&123d~QdhXZ`^fZW&It{<;T?4WkovNA9wm4(BQJIn2pl21f-? zjwmOC4w?z3`)MflPIqKK`PAk5x?j2JK07?=ligrkHK?oW1bAV&UCHx7yN?HSn*YU1 zE>D~{nb47bY-*bf^7EC-OCS3#A5SQTf>V;J-H4VZFX-QeE4|%&pj9DArSH_pH#4p7 z^2raKNcL<$k<;NjdiCIAIur)VeJGG%3ws5r>e#)Y`jUxq?4!)drQo^Mgucbw#dJ`m zZ>n?cg~1=n5^mZ;o#Mr;YhU?{>da=uxO8UpbY|1wd3J0n-;}Njw8?MZywA5;$;MV5 z^cn!x@I%K>9UWYUeLM>{Opg|w(B)M}^=>n+c*XxZp0<n=B}gp7j#v2tyzE&V&%BaP zH}6|j=^MBYG*Ij=`0S7kTkY|6@gm_L8_iB~%={R=(2nD&&ah3e`lwet&+ej)UuUP& zr0NaZ$?)i7NDyji)3@b1_a#oY@{xTR`W>D1%yI0=1GJ;)9J7z|dM+JA$I<B<sP5o& zwN2{SfHY?M(d+blm#cpW#K!~e;II6V^(Vazm*Xo=dsc>9-GS^HN=TNUUloUvhj>g4 z@~5qvw2J+yrObS6OO*@DU*_MwtPT9$i#`if!j}zBypYzb884su9&W1}lA+CKpQIDw z<}^Nt<QkmdnJmmSCV#&B%-E(&25Um%Y<AW2WK4cff~^z0PYQ*H+52a$zO^dC%7Jgc z&Hj3=(d&6%BXIThDrpMxCO!JLo$t-!niN5^j;z^!$8;z-KC+=ZXLh-<qy}H&W2SaK zT~s|$U<CpFc@yvK^t@NdAY2+bdA^BEO=5J5Psw<iF`p!r8kZiP(~J-h8^ngm1WtrB zS-9+<KHbB3o0WL_>F|Y!45mL3>^*_&TZoe8d}7`Le`sKOwFs{4R`)s~J?s5U&fl_= z6PQrKDvyV;YfeIgcHfK3+q5LWd-n!K!I5|G2Z!M4%_po3@L5KW^mjSccfN-fJQPt( zf_#zE{N}M`Z-<#2)*Q`n={mSvICjq{FdkA<7I~43F$_HQs+_<?0JG&k;faAW_7p}M zLGKXEbZumrfo^w8Wx=exv}!0TnhqZYgz9>n!c$H&fM&Hgqu+e}?cJZX1M?4l_#f}S z|NXD-9{tfT?tb{C9Z9Rbj*&peCJMS|Gr$_L?J^ou9>)WSdT(}}M|8Yt_s&NCC~BnD zu*LuCip85j<=7d~gZMnUgKep}Aoi&>{gC$FNaZzD0)P1gMHFo_oa5hVNU(KFW1=OB z4j%&Xz_Q|IbNA8g>W<|2K_=uA?~P*McLu0~5sIbvCx8Z5CV=4Csm{zc-cGTidwh?> z8fv3Pcx$%f{cWT+W(B_ifh^KHzMKccx|SXXZVk9j=iX0^HuXb(PM5smlOIQ?AzXu> z&InNGx`xw-*xwX*TDE7`a*Z)#V<S{x_R{5atug`%4VzBysuO%>V~6Z)WU?h+JUBWV zdBXvpV@CB03Jz`y#FEVo`PI3>t8iQgRj?7;%$jf3HcmV=`%d?(RO5Mgs*-*&frKX0 z{*-&PZsa$d=${|&i!ZUU9O#2w=Udt38AIc9ILz_MGrhPmrxTgHL;S5?c5~n!{<z*R z*h)=z`l|y@rhG<Osvn(bLK+IvH$<qT8>lFI$y36?Q99j3iR<%EBD4S)8K?5$a!P>d z89v--k3P66KnJdR`Gv_TXsaLC+p)mlb}j#P9N0tPdOCPlp0T^fiYyJju5b5=f7g@9 z?fT%s=Nx~xz$UukeB`GzT8=GT^l4=9Zn%yar;^nbB09QY`zXAfBA+%Q^`i6l`&RfL z{PZ8){o)rtzx(3*-@p5tTFCe9sQbF5RNwUKf%n~B`*!ua-&DRpqM&yxAwqs~O_<u2 z@%M%!+&zQFCs~G$1HNz^*E&xYw{*`1rqiVx6E7ZrN=x7;K*fQ05}*wzs;mRO__|wq zJibUh$EokeJ9zeqJTtddx{-PQ@V!+x`J8n`!-sEOn}eoC{y!EuJdSRkT=2a?JJT0+ z<kM?STT!Kx`^Ji=_<lOp*|`n?+{2JP?-}LIpD%UJh%H2a1nd=<o6E4-jWGN8kz1MZ z_wZPoH@gb<R)nN40%Yy8c2n>SJRR7lShQ=U8|dEZA<U{>Ae76VCZoxMpQCYPdgQ6i zp=}sF`J_`JcVy1nbj!YvjRShK*J!xp?Myc=`I3$__tMn?j*{ca4Tk3jQTd}koO;x6 zUahQTx>AD$uH#cZ<vX~Sk2JstCa9;>IiFf?>A|A|bh^yP#s*crm4d+S7_4|vVkuYp zIbZeQRRjWsQPbxYmk_VTF*<Rq+=ii5ed3>`1#9?#2_Lc0k<0N9CvMPQtzc!RYr(EK zDfSPghbHYW{imM}I>x@VC40wHnJOq^sIGujt#%e1|E~!cw2{H=oxf?uN=*5vC7jzl zNyn~qtLN+#zl|n4o4DAr;ATL#H1cMPo6xD<t%~XI8F&uY>BYgHtl{HetN12X)1iV- z)h+*U3b*Mk=YV!Lcx#_m-k;Jhc@p1zuuXW##k2nMeOEiH&1T;ltm+w<5Pp)6U@vbP z6tKgxNd%j8=`_E3`D%Lfn|5yB(&eBUFeOAh-VAE@CMAf_;M<eOI!xDKfM}QOl6z%_ zQ#`qBXQ&RBV_RYOiKdcwDC<Dq1`WC<yYVy3XG7!Pfh%v4U0sU_v7=*pAFOTcRDM3= z@LJnndU@dOSdnBTp5eC_LzX(-#kN~{d0{u-anSq@|MKj4azn!L`%8k%Xn`fV;IckW z6%hIORee!6U(V~=aLT8FzIyrW?)%N${-6QfukxAR!?n}$i}a}J!8RexRvRSQXL*9X z&p=h)D7zS4htk<AL~PEalh~8}Y=frKy_tyD;5=TuT|)4=U0)J;(yA$g8zu=uw$5j8 zlHL0TJ4RdSebM}`U2D3}R)h7vl?(b%Y%R|o4>2Vg;SzYC_q40>o8XD1EqmU?A-QME z8@fpz7;d1+0D-!Yu|5YHfuz^?*mHbcpQkf=_$RBFPE5_Gk$dHa=g|YWYJ1=|-xhqn zA!|DMZhx!4g4GVNz+D+Zbf-DM$8|F7!1h*fOd&%|;A+>m2fc5_fNb%8Of}{Y-U%Ez ztj+jxN>7!o;Vv&{wm`5t5vw!R*lrB4i`cWfH_sZWTj!*2>vjIN5o>{{GK?QiFP^?{ zRHU8rdiFRt`b>yr7#t*)T#iK@uIH@FliwTD<~+uT<(>ge7zDEPBY<uJpYbDad>}-* zI-_}X%SRZ}_6%22`T~O%42*6g(cZK2;qJGsi+|Y;lX(C4zxvhPfBmn2dH3f(`-{8Z z`|<Z%+7O;~+<ar$@}G00%rQ`h))F`0n&ZehGqbXL$0?=#Rv`3^_fYHLQ9L6u306nP z^gsD-DNLh39FJu@Mgq?!WW9SGjy7^IgRl|Is6eic)0+ZQM&@JUhwd=L-}K>f(lT#J zI)$r#0~~mNHb99ZDK>+9XC@-vaUM~7(kXrUErlQ-PEtp7%M@<<hhJ;>DsyHeGC&5= z(w(>Hrkm+gfVMH(Z(bk#IVZHQws3@#5#+b=fO;PpMhx6I_?}N6f`<0>y)hzu>7vgB z*+}ABGb}Y8(gm9PPHtr^XDMlQYWRY1oIv;iBVc&gvJUm?*nh}leOmsEHuSH${`CKv z9f_<t5BSd^PxlYK^0BepT>6|$h7bKHNbZ__Kq^*rOiQby^GyyXS!0I{0fKYaoz6ja z<yCeR<xtmfRB+IG<bI7!btwiW+6RQE3%5$G-oa8&kL5{1)dzm}U?a#g#iiZ;&GEY5 zvwRnM^=~*=p*wt_12E&A=MTD5C%u<{4KO{3A**&(qvTXL7+p>`l(;d&{dIkCfD3r1 zEEX+mXFki%V2(7;RO5G*=?Z42OqXzToO*Zpsq9tX$m-E@uFM7H<oEo@^H!gF;nz<m zmwuC#LmFHznob(;PB#x<&2X^S{vVxLS#~NRyGl2<3@X@P^bXPQx1;<&|EE8@`@=u{ z`Q5WN+I#q}-9hW<{_@v#a;x_DfAW*NcmL;q+<pD4UzXqJ>cS%-!06xsrzk*Mb&VId z`r-Gx2Xy$B)TZO6pVFoSYtg!9XGiWQ=sLm6g4`;)_%oYOcDmUGgXmZtbTpVNpI$Ku z%5&jprUjpDrm-2$6<Vh0fcD8qzTn%w0#?be6#R>UclY^}jdrImeEY10f5?WnQC{WF zz)n6dyteUU1IaKv9o^H&8)4rJ{EcVt-h`75Mb#XiOO|{k9$8a@miU+5;v;&r)wLLF z$9)!s9i8Viqw&yY%J?DQf_%_yzRvG?-wzA|1y4QfkL`B^R}3+p%hIfePw+izWmtbc z*)6%Dy#oCUAAd{RU~9n_Xwt^_fj!qHh4Imw%^Jg_1D@x6?2y9Ee})fv!?izi8Pi30 z2Mc_@cRJ8L-b@z<4WICoZOmE@j0&DSJ+EGYDiBA%yYF9628-^@XUY(K`g?q`D)HdR ziz)(gMCc|c=~!7-|8!Lyt4qju3-)BV!BMaJ#^mgFxQB-}UGTa#ye#7sxNxtmxQ_(- zvlUe17YuqPeK=YH5c2YF;Lw0>KXv29r&-53p^J<U_{wJo>EUK;P8EZzESb?M1N&l> zfM+7@$em0d=QA>h+su^Ey>`0UC3|q7rSDflcXp<%pc>DSH6Df&I}#_Md$e3~ER(uJ zeQ_bxWivB@62(&5{|(TWZ!_l6u?dCS{q(JZb&J&4&p`r*AC{TkIM?Gxeb!LiYhWxa ztHY90n(&4JCjbCI07*naRC4*Ck5)|zLc;O+i|2hN=ENXx^9P%$&4&0<_U8NBX66h; z6soL!gU@j4xtP>@o*&=G!|?ms%CvY9i>4l67>p0V!CBleyvaAL@F{+LvV-_@;d$DK zXc&LB3p&I{kK$@@l=BO|Jk@2U9{*QctlI2lJeysV2V&d!XqR1Av|_1of5510SN(4H zG_tfyrk;qgj{jS(8$Bm~Hz$9$727et)fFF0r|o_ZZyjxL@nf`hg;q8|yL|e`-U>Rp z-pzfL9ABox&!YEvY<v+M%axyyWqNHgi?7`3#dynxkY(BKeC=?mzTuG_q#x(garJdd zrh|}9(jkyu)=pTS{^X&Rwim9@l{tCzlkZu6*Ro=Jr?k7zd7Qj`(c?|e*(2>eacu2U z;XJ=OpA;=#Bc!J`BDIR^Z33aM+l9GA>BsNm)v+J0C$6298B+x~EaQBv@2iXH>1~Zq zwAF`6zvmkWe56Lx$T@sEGUi`{Rr~p<cc5Dzq{>f6lXnH}8r&*V;Wh`zpp5#BZvi** zV+(XfW}9fc%)U=~&(aG^LUO4DlrTAT4PJH|(MCQ}+A4o>-?#BFr?NT?6qM0v@Q#Kc zxY^o1Gr_@q^UXI2L`Nw6V&*rEX8W$6U`v<#RXDwQ_WbVG1x>%Iqp=aRywJ6+Hl@aP zBi$Q82)EPE|IV2whCREuLH!q?RG$uF92j3_q=LE9@LH#FI#V5I)K<P_uD%3WCj7(` zN|<YI8I~os@rN@>`RtA+2#NKhk>LLKU;Xvn|NCeE<?d%c`QhCc&l>e<Pw~gijwF@x ziUFb=?{duE?E=fY6kB>mHqCAyBh2Z~fC@t5<(qFQWdL%zWgBkR<G=l;PF}cd6g7ND zdou{%ChOOAmN!#b2a;-{j~vWuKE7{vOyH_t1F>Ip;)!E}Ay7<5HnNZIo(XK!H76-! zb?Zn!ZKuE|EjPfc*U6b2Y>{r$sx6yt)`7v3BblPfj5Q;}Yv17g(C4UZ#<k8po|L`@ zGJ`#%t#J{LD$Bpt#S9_3n4Vy6u&QM?pz))d96Cb{;U34Q?m0cWrekG50lsE(c>!`Y z!ezG6y9{h=%RtJ{0a(6oR!1Ow0)XK6(RK|4-hydk9!sg`Kr0`hDOXUJ5AXJR0D<&e zo!cofb}rB=-Atz7cQd&7t`pvGAN`J=sv7)p6MftUcpVy_Ij7xW5!|aAKf$TaavN|Q zf5(>qo`C6;J<FYQ$j0>spQ!T@<y%msF7Itr*BYPjWiR|MINc4u;WWICe8_PDXKAp- z3roiKjyKqFiy!@899Jc~o-<Z9*jA^+U4(W|pTiS6l?4+o(D&&Gn0yslx~E$$aw{+2 zaF?e;UROQFs-4Fp`qVS&pTnPy$++V@cUkuGx>rBA=coK&L$+dgb}BsSOI9zP^+09) z4nFZU`e)}=u*Rgv^N;YJo*z6*{^T1+e?Tf-`SXL&aF2Np>$O@wN<VCdVn@m6`L195 z;ZN`W-M{;{eLn5g-Pa9j*+iwy12%|il=|zw7wbJ<?F$*O0Xh-#;fs<E`r~pmB%{*( zgVPBD=<~7Di_a?u-}0V@zT)YhWnc1M^vn;>ybjz2vf)+6Q|D}jt=|0Br#itdi?*nC z<-$k3Yt!;++BLJ($RSL!FmvnM@Y=(7ExEK($8ztDfOq|_o!}qy>-mcZHSk*=z2Y~2 zlny)g$)YZ|qC~q)2Rh7fyvcvCGoL2W-s<>9;`ILbGOWzT!ik2^p@;ArZMDCZbDT|T z$duIitX{3I{k2&TqP(W`wpak2bd8@|z(T|c6FhoFYt}XkCb~0=Kao~`Z9yn_CFWu2 zd*@Jaw><fW>0_nFKb?p`RQPBBEW0I$j!X8FIS&HwWb<3W_$~kZTlEr61$UMos8dB{ z3GSArU0Ck)N7<8i+`G|mbd5jSvmnA<pgjHiR1a>D)9rl2Q<;<HAjN;dYPj@gL3Vkj zx98!~j&FcR1?De;qGJ`K&XQV+amrotB@;Y31#Wn=34ZPdW6z_L&1_~ceZ(hl!QqED zd*41SA8VVZuLVBz2r1&bG96|@36FcG+C!>x_|w_HTRpxPOS&;No4eUTDcU=_tgPo- z-4?9HQf9FNtQ`^GP1%bZeDaUJ&@mlcu_e8AZ?GG^U@`a6NXMpU&@K^A<E6asZ+6Ug zsDSNwzmdJ+6>gqcZnT^qnVvzG0(W&*-!<qW24TDJ>R^bWl{LV9cysI}kgLa%aL;sr z&BT#`{QSt%@cXu9%nyn~!uIalufI<2-_^C4qSzcS-jQcY5=DzoGL5?zb(Z02S-JR{ z9n;xPyVh<(>ii3z(H0KjG(GPbdL8&FZE=e;IN9~#$MG*$-XQf{JlAtD$THf<6EuVI z+mj`jVnDDjsi<qx@u!22gs|J;wAAV^{ga)6JKrCU)v!1z{N@kASm8roiD6fs+w)a} zUiEb5Tg8Ve4EubHI6j$lP5&A%s!dDwm9HPUS9tFAnUXb{P0~GL3+YtAqK$1amsSVT zk>u;O%=tuc`$2GeSiM{EmyDmb9Qk3qiO}(mFF2b_dF3<xs^^(TZMN5dSJCM7d@D55 zY5Is(8w%^#en`K3UK31qqg@k^qSr3X+Uvy)l{Hg%uicLyR(~!I4^|MHG&3+79nm_} zmFu_IJ(wimRU2&rnX|$5q2k38{3-7Ds;keNz7<>7xb2l#{uq4xs?6E}b%x)5(#5#R z<ILzT`=>wTatnC6ig<zFM&-KY0QOEqfGuf`t{AJ~H~K|BI&+-N2~H`f9ZuWIu8b!j z7Ze(M#i-CrJ7P|)JA-AwZyOfC^v4Chk7Jq_vipkm-PZ}=>jy^W7-pS{^7?S_^ZI(W z>Lz^eMC$PV>S3L-t_gNav($7Vrzs!945<Vfa}%CX@?$)R=r`e&#jphC^<yL}g`N($ za}@nq`e+WHb!sQflgs-npO`;5_z>=mRCGJRQSKv*qre*=NI<`78SH=g|Ni{$$KU&M zOCJ8<XFskw0}F4Pt&L~#AYhy6P4iQ*6eh(SJt?a9w<3HB$e8Ua{5idrk|m&cuW@2D zIYm(td{QtQYuioPr!Wj`*kPFgj<U*_ou{-0An?~L>UIk?(-5Yq82uX#MwKjQf7tRp zv%BMFID@zMSs03(WZ!ciG}i!l_rS~nSU3$IG*Ui;59GB*qI}yaF?eP<e0%bIqKZ}$ z<4rd+5dS!tqq7_pL+3zaXV1J#^vH_`^uMw*uK2>aMCI@x!!0|`2we*(-(-kJQ|U?! zty|Ypj(7?K&W;1v_UhF~9;xW;soUvl)m1F)@I7S6!)K?=fUjd27c@)@%z_D*QHK}q zDrhFs_k7`mAn7{vujA!bP0-(Pu~`@h@R;sa=g=mE1kZxub2Po2^5u*{oK0CKrlVUS zd>hTlkgcpUT;bVSIC+Lv&MddF`tXhpXiV9Ds08QmZuC_KUuL#s*7N-DIc~C}D{QMr zl}AUY^FN$sNu09hXgRY-hey@4`VQ@MA)HGaykx(|7D~|)27vG97VYrZyX*KE?`Lmv zEI*c<dO3c&1>S;1>HX6{90$EZ(G6R_4lr-!JAFFP4-@acMCuNYhuJ}Ia!4YB1eM6z zfyc`jfF*f0A9Vv%t_{Lfp$5nSN4Ri>Y9<pu(EXK6?i+1}|3zErR)Cnv_34;r+40K) z;NSnr_wWAozx|hYKmTWc$b+?1IqR_Wr@^>q&B%0d_f1Re_>y&W2M-R(cXh{?{#`s? zSV4FE3lAjr@Zcst=7b>K7Sx<haCznPsORJjo*$l<+E0U=J*nTVql+Xtea0tkSV}ft zR@43|YSWT!WP)kChR@MC`uCXPq`L&e$M6w3mo}bifb2KF?*2`@13M1&`{>)c`OSMe znf>MvATv7Qcj^Cdte%oeJF+Bmu6#Qm)4}e2@~u`c2*+O>+C7Uup=Cg7JJRCG4gW)a zd?aJKkJ_H|C2zvlOhU{Z=N6z0Hvbc!Y=t0i@Hfb2K(_XVq4EPZD-*cGmAl>GNcWEl z+Mcwd^8<T*6u=uS7gu0A#XFrd12i-u-1|2>!`JfCZTE-1(r!4j_d`##ba;Nwr@RV6 zB{|<{#7y`6lLu<Um+lRilj#KmCP!xuKcl9U^7PYzbCA!Kzl%NHjFM`)Cx^|NslWVw z{-}DeJ0HD1cz8A_@zZlocDf#&Y99JJWn^&U#{qyhVHP_~V4O}xNYKZQ;q2Bwm4^>L zceCf}#ba`q&u*U!0VR3xwS&Vx)LRkX!o29dcr-jlj0!8~bu4fJPxm>Vst_J7u>Dx< zfumkqvh)!~e2lck1g$32f!ijXrByVz1?1tQlOeV=X=4&bFmB23!*uFR_2^&<>^Fc@ z39nmh^;9W7fw}tPgGrP5q8q#<P4zS3_%uSRa`;p~`SuXs*ZB&gwFd{StPozk*3mLn z?@fOE*o<rO0~X_@@;beA{!MZ*fYjySE%p#+#6K|2R&TkcSTmo>_6#(==@mHgIh)31 z{|42vTk??y{*y}`l@AS2;1f7cihG~Dj&t&&qqIs)mPfO|I5Z>MWYgKO5Yx}WhEBV7 z?yu_;ccBF6NvU&E4Boj1`^G!OcdU~XkNCgiW0rjWsGqbIOBR(pDo(ktXVo(wSK5iq zdK3@V#*qs?2Euuu&<2O@`Mu-mlk*xH{so+AdimrfhtrugxI^AxSsrYUis!}2uUazf zJ=`yo_wyz=o)$kfoI5|ic%XNq#oJ*Gxlk7~C6|b@m%`JYV8>#s&=fbjeq-Pwzv^4a zXiyGYA63RO<EL$UxK32^{yLp`nvOkt`Zk`5&*5pHrn-t3$!IHnrf9W0)6wcqA1YaY zsSR_h$H1)qn^%+O2l}E*jo<tfeDPQ-^Ddpz4>M6?uMI1KLOr-4csuZpKI?ExwV|$! zQB4A}QLpdZw`AFSzaMLFHprEmS}Yom=ewpakQUP`Z!nDiX|Oc@KVE!s)p*XmCwvsn z`!_~Z2=z%zAn45-qs#*6n2y*Wt^xa4tMx92@cP>t=6a?Yfdv-jJRkKA=A8Xe+y$a3 z%|=2Z?_)~*pq7q-C%Y*aX85r3lVJ6csNOetarf(--PdWu(>k_~ADvDd!P<$;Qkyq# zda=9Z7r$v8{D+nSPgD^qJn-9=^DOhm=NZKWrXfv$IUY(!p#-P?q2KR@*l&#v;1x$U zW9V$8|KU^lIWE;icmMo%Y!m}5d@HYDVv_H4MulWlf91mAVSoPWum9%m&;Q~t@BZZ9 z{PEq(FTTuCC4+B%Rk<8lONk%kpamyE7@j(;0w>Qtv}C8IX80T<C|h;HyDArK?cK(A zI#As&6J%060ZGQ>FiUBvD}$my_|f9?IhLe-_ieN7Z@<-;rnJ$u<<qRK(SA)5qu*yR z3@oT9qtmDuO|{f0<(WYTU>tkvJ+w;d=pIJa;3RuI0*4NoDfJBh<>Polx_o_>BzWG{ z)fpKt$r3(6pTkzRcgZpN1o&ZzC*h@Guma)8m0Zd*`opnnhrrBcU`DESrsi-oEd5@$ z%y7X_dE_=Di`lBA2lx}#b4J?pfG$7d^cz{FG2r?DM{nr_dMeAV;0*>K=n{wN3~QYC zq_XbO5=q1Ld}}w|tmM==cnO9omSQCV`ubJZI^#E-`2h8Ja-3{%p^ca>uzj5gi6sbX z<N$Xx!wGJlQ+@O*D7S`W063-ib!%AF=iqbJslMnk7}7KU0=as~WM$z<&sKL%R^`gw z(qPP{X`aGI<Fm7_4G<h#W=D#ZUf#>TPeZ&%`vZ;xjkDqI<-d;WTKNN~C*iU5_ytGT z=UI4y^V$7XZaJ6#s!P7E(SC}p%In?@*`D)vI8B!$jd^RBz+l7boK3}O*H<SO{cv#5 z!v%Lem!z{`RJps+#E&h|D&6Qa^%U59XY*x#+cyJWzIt-^hkyKwyMOk_|Kjf1mtWp} zoqZ9mIxWWAY-eZh?Fg9QdxDViVDjy7<u}|y#%hS9H{FsppB-9sX2Ov+{A1!u^5+NM z3GmfdUetiM`p<QV!^3(0zh`{k^ex`$jAO_+aiLhA%@D<tJp-@2<8?Ht30>1+C}y0# z;r%*aEkMr-)4c|h!}+_75Cu5BdLl^A2WCmL!`Wi>qKtpuDyqtvQ7Fb)aB<lNe(=dT zwi=;E$+feqzYaBh5SGMe{@Y>Db-{Kxdk=U%n{30~t2SO!iS*i-1}mydKrW3;&*#+m zxEucjYo+r$r~Ruy?KRHDjlr30f`4D<c7apy9*PNyF+TL;7U-FwLxZ05Oz?{rABt1f zhEaS-t!9_}+|jWkqodQ)6LKS)e%E~kSA6OJfIdjaPx&z&Y`>M~XW~5o@}X;RKGhM0 zB`YfZDmNWfaq>BMxCvHzA>U*$K9#CGU%a}?6E5papu1!B-t_*|4HP-hNij-#6%4c5 zWG$WUpL&xs-JbugT>L%HVN;>%Dswz9oep)LeMS)75`4aIBPi{>Nsq-r72|5R47EuM zU@SSrgivVU*C6@f-)2z5waQjig!Wv%_-&BAl??{k4S*-|^7#X$^f27m2FYuq2Bf=> zrRfaN67k|%(t_^y_5i4}yiIlHgDMdW9bvP;i#gLVo9dV?!@Kw4VEN^AuZ{};xRpn0 ztE{@wqGj`J1N5DB8vV#)1K{O#Jsl4o*cf9)2Ak8-wE~T7*^-WFJ)+<j;}!S5siMmV znH|;92;4{pt13U?vj^RKzEyO=V?Q6g(x7AC-S94hdQ8x$mkgh`-1&93{pQ`T*U2}S z6-TEltHgEm&UX-LI%$9<>WF#A(je49$3}N`of*MsDvfWx4$q|>Zl2Wd1}A$q9ROuO zn!i5q)*h{{+x-oQx>r6}+9<MEeV%uJ9b4HEKUUxHP|iWyQ_iyL!|aI1@HE&_XqW67 zoJfC6)|`R#22*O|=#93o;AwH18PNK+Ela*{m*u;=uU<U4`+@g!Z9-N47Y%4WuZky; zV4$3VtKDy}3<hcgs^#I9eUU{l2v2RyiO2KnI=tcc;kFqp9JIeSuYDE*26KFJGij}j zv2V@WufN&8Mm}xyq?J}tc;MtqGr9T`=Vvx`cxBV{jX!=^zYCA~0;@Q5lvA0*>*{!& zobJQbpl?|=BkOZWNHn3PEdRjA#MsL9pj#6>F?~At_HD4AWfRw`9)kkK(f8lz7ij;o z6Oe*2jZ3zR(Sq%;MB2eeSsA*OuP5o#-$x5_mMMV;XboqLj-E2(!-*~Xuwb}G?0rJ> zh|Nx^2t@Veoey@-h_N$wGKD>z3kX+GUdmPnnV}#a?Z*(|VES2LVZ)1dCQERyVw4#w zfvp(;ooS_?#E|C+_jw}_ZzyI4nv00woKSVCO%;r4zivIdJqh1%tuBo!;V=6w@7Dgq zt)JsM&wxYoQJ+-e&)JD*(kTgn6Ye@5D~djFj&jfj^iQc>R}Kf?WH9*6z<>F7e|PuG zU;cW_QeH;ip4AzA;Md>-XG^IJ4x~kOgbSW}Kb2*KP7d*mrL4}3<lugsj#88uxt8*2 zTscsUL^cszbikRFB_T$yQH<~R1!rrlQqsLM8@+gECu5{~b{Jl{z&va^O8JikGLvz% zF;c;lj_;Eim~~8oYq>P1PaYcSH3|U*cMS<=9X@DTupS(>X*46_#?unu?uWNEF6X@y z<ucxp)^+()o#j3G!z*RE8ZGY*p9Y2-BCqPH&_;t9Z*W~R^3Y0tX?y8FPS<%Vb;Sg- za=XqyU4eDa*v{(i;X0jed-gG>>I#x5T&Jv*o9W!1)e!GF5U0Tsd|aJhekIgA>=zE@ zbwANoxuxG6IlR=t=NP4S?*GhQ@qGfQ^MT<UU-u8M`t=9w*wG=F#%FL3PM~k~06n4` zm6@H$zOtYxs&PNE-3)j2kOe+%gE-1wC1{XLAm#49o7D$Mc@Aq=4<cr(5<$P!CnpDt zf2%?<xbX{<ZI>z3>=F|?1S<2BP{PE6b>$&*OS^#W9$(a(Ji`=@%E^Dqmvk%p`FTl! zS3@SbYL3o!eQuXFGjosp;k3v51OA1h&K=gB!ADT}g6K~kXhz<J(}mv!i66jY4dyl@ z#G4A|F_-44&c{aI1MNG1&l~j933^%Q_9s94+1;xj{iqEu8ied!Awvy1$d7|zmN98| zKC}v^Ln-*DMnv+N*NoiS3%K@AMtB^3!e=&mWPP9=`VSutedNbZoE;SzkB+}u(kDJ# z{BT|;w#R}fd5>>AFc+L2K*MY0x)=L6;P|eA;2PL`P5jP)A9}T<;DWYmXZdclnYBkR z#Q2d7v<dk0liDhJIbp@`_YEf6S=I(Re4JG_cwyDcR!zY*cxI+_N^C@EAeR3&%ZdYu zDtO7j%v;sI-!~MKO7-uPEw#NH>4&$9OTPvnplJY<C<K27EAGqB&b7f?Vf5I5NBeEG zGRsSi{Kz)z>-lDziXk4_m@N2o&@Ar>R@h{9i9cXkImcdK(SdG|*AmV`f?mIjZjXaO z?w8(wI+uq2$qA5-OWs#Ia^>B_=(+AazpgKRaPO$50AWdd9`gO^*_D5MD$6bV(pT_? z<GEIT+PvpCwcI1=$HKxroc4##)1P2SqlfC*yYZKN0)j6($J(G{>-nGjX0DA3_i$xS zJi?9+o#Z=yBMk1{FAXliO~MK%uiCf}NYt~5!AYkUD})o=%oILsS64JZL;Ei#O60-P zUZ+#ti#r@?%wX~d`{d8-Z;B7vYol1F`KkFYx!^-zw97t82<~P*!^tw<_r1R6eLl1A z-fe6Krg%`Sq@02Kg8=&is|SOXQgwTqz@gMpO9Jd=uN`&9lMOUg=20`K>+nS{zX-SK zh5!PAH^CqI#?|i4R*7jrhyMm~I&X#?D%GzpilyD)8<hXR{`rIQ8Wh(7t%gvCTOIq# zzGuT^Qa$@#JdDB<iD+26SIz2nuz`E=Sapz>j?3fNdpgI;g!9T*rt3oo9jIOa`h&;Q zcf6Xeq2c6R8*$?UR>*hS5`~YSJ}?8cGT|y;_$+TQo#pZT)O%p7o6p;Eo#<Hk)q8LN zFB;*{F<YU-<!9GY%dxx_jc-Z2{Aik=DF^<UsiX;TSU)EKV8Cdzn<+Fq*e=MW8C-c$ z!pp+9SDn8|HNI#B@>QM3SJC#Wd++PAh52(vSvk1xvUIFmzopd*zDgjT69-$lxXskM zriUkX3Ae7jj%KBU{uB)}V5BXMBkRC^$Vt6P|KFE(_w3l3m}-MfDG>c=EF?bM23qO} zYhUb+&W!9|0|$$-3}TyP1RZXBWeg67l0!@Nmu0x@o50-%esZIGJ}J6a2*Xv3W7R3y zy>4J<ZKc5;&uX(0O7x1olLY4X<2TBFi#h35?OTudDQ)3-6#$IiK3Xn*gsuU)Z_1aD z9fDVg8AYcEfJfhmSvpoqq(sOn4*@KwD(yo(iM?Qco4{VcPm&N0`)ci)Qk}}2I8wDU zT!>pzV%zPP&DwtRx}7=;9P)B8vfL5>q!#@}yI_3LXn@%@K{Cd`1GA?1Rp)S;gR0z& zJs4B6@JSZsJvhn7IEEH{uR}r)m6`Kz`L$U@I}rOfa>|n`jW5UOMrDek@j2z;O~uEz zXzX^hD4)oO%U}QU@9zGu|L`B{=s&vqr$772mOMOasY`D!rx<o%7ARJL>@osQ-snF? zr1a|J$c@;pVW3RW0-O8Zug!#pugYvx^??y|C`XOSo53y6OW`$6dp->_`(Oq@hpaNe zRR`uAejYgFOpf~RdoQ4}8woBiV+G@5&OsT$(VJxZw%>gLjCW4oHNvRn4waq<f3!qH zaN@AqdQ2#Xee`&A<B4Bz@z}C=@~Qnj2N^0>9-lXwSi(tXe!S8NZ19HDE6d<4sED85 zk$D$Ep%RYK(^(LA8R0sQI9Odez+}KN!uX~<vm?uhJ~i6GIZhg4>?e7kup-p&G*sn} z2Z4)U2O46`#H#Ex2jyJ|z0%bRPUWD{ADwBt^j*Q<)zQTausQS53s;>=^>hjI)1kcZ zlpamwS^fNkd$>ED+0s*vl-S4^5)yNC_@(UX!~N{2TGm01p;v=7KcwjL)Aw@0wQ~I* zUf_TL2ey5V&N5Wu`a!|t`Gu9g!MNp<bBAI#*zT9!AN5GD`jaM`hwiU>!*jUC#5Kmw zqZy=d?7l3^b5d?_uba=#s*{&IR>yESbxU_#dA_@s`5f@D{7K>I2F01zfulSp@964! ze!NsRb<O6=#=LZ3F!}IZBbvPYLcn0rzL#4&v9~_bBl3Uw)mL{v{)0cbd)Nk4e_sRk zpwBCmV+1{}(Opk0oYb)nYgcLDh1G@L!K-@K(S<mBa=+_~-kW`O%Wt2RMd3U;JC%l4 zhgPKDcv5W_tikJ%<IF0M7dz@uUoxh<>v${QZ$3|*()-cZ6I5km**9G=OTZ@$mCklh zwo%T<0`)@8@$peMxq!48*y~jgyT)#R1n1xyWW#HgvXSf*gZ-{EO8=_gsCvluT%IzA z;{xMk#UE)4_MRg>EI%K~bL@TEV4V$lqO-QZ?DFK26BC&D-tYD5(so`}PyhD4!rG7N z17Du}wct9gRvOtI+KQ+9o(Vwe<=#DLqmXS{g&*M<Vp_Gq+e{LF7ENN2`(A;XKa4a> zx^2cYJBl8>zK%<N&e!iS{mAiCS_OVL??0pi@?83Im36<o0QY~Z96IYT;Pv3%P~xYg z$#~!>>$ZG*1W)pe?v*(<h^G#*5}kLqVr7cth$*e=z}WS&ADWjlUiKg@VXu6?)dCGD zX-7c{rj2I~%rhtjzrgnB;Is}?_1OSZyEmG9u8lT(D>J!MI~u12Ez~UUX?N&5KfAAR z@PEPI=9%=5AIUbv78@WNCMAlY3}C!%bylkxyuWCv<@<MiNkX306<p&h={f!^M)RI~ zb(poZai+nf`}9la<-E@2wTK4O!^sMVS#)?90Q4@pL2!1gO-E<{XUk?=@k57{zONI6 zTC^0meDaa;>GGY2y}=NV#VdRY+}f=9l%po$(Q|OglAYm6H0_(F)oE{!#S@eMsvMWe zw7bPACITWljN;BZ#@QH~8$KWQJzem1M79SD*@8lkbQJnW22$r2;(aOM6a6YGUm{$7 zwW@bQa2anstJ>MXwbzbE*D-(X2ET%}db_PyNtK^|sHp1@lSaScBk#!r%Ui8oc;<f( z%QI_OzHV;$j|`WknzTb(-n}9t=D-M+`maNM>lZjzPE6yf+i=GaG31Fm)|py9__DL& z?R4cyJb9UadzJ3JtY7eD{gyB5CAKS3{g*a|>iMHOWDCTC%{ES~c<Oq6g2m|t8{5PO zyvw^4jh6Z`9t`PEVm&kjS0~kkpIKS)tk)c?VN2xiTg7PCWin@neJZ+@KXrO5hfX>} zKC{=#48`)1lqJP@^SrX#T&mQ)a~xgTyGQJ3x=tQ+sdGi0C(rn2aO-Vy5JJEKURGsj zpG^EX-eGj|&?esZZn2K96+4zq>r-Z|`;n_v!i(_-XDPutdbscVCX3S^d-mH$oo<Mx z6gh-PH7q_lZP^IL*D#u<Cz$s&c44|v+>bUC$&l`wj(>>BU6X@Gh;sO(%QjvLq0MYI z&3=>yaUfS~#>z-G^HK7L_NU&~)i(xgxl(oCw^O8!?bGer(S7jm_g+HCl=i;P;Ol4o za!BvmU3c#%a;iq|f{$d*2#r%zb;bE@oRAXFsPLeFt~tKgo6sopDbIl%IG2I!?r_p& z2Su9_qAzBEr4XCK8#89=w>;VVNpZ4=<tc5rB_yP4Fn-<AU>#k{a^L>DKe_w)Pk++q zI^sh{<F{oi;kl8X=w5&ny&BFpIx{&jm5#P#vJOes!N7f-xukQA=9?pj$^tG{)c@mV zYD7xEI)Ug~$F@&9J!u3fwyX}Lif3uyQS$XXqEI~;^IC(_je&?QPp;s{H1EO3ujeq; z%hBuHJ_<)K>u<A%%4{?gBUcv(cB>-{{nrRVax=?0iSzj&*q4sCJ?E6+5(i4{pX=(- z$ap}9Jzub=;Y(IyLw^>2XLxke(q%r0p6g_u&Ta|l>D1%u)R2UdwDRm%f=>BH^Fqe# zh8O)cqGuks0`wu22P6c+Qx;6{?8vNf8fD?4PPl9d2o|tA_eDbNcFs9Gr_;f~WALxp z)^&JGP)GkKA3RXoI<Ijn%>wY?l3X|-58<%HaKOUpy3}wO-SCGaS#>?0b66|JKJYs@ zm3M3jc4-2HjiyF4n0uVV%S)H5XZ;=g;S?`I97^MxXZuxlS0_Qh!@fK_4J3RtFiTm{ z*~u7wssa-XcuO7~p}|$tnenGQ3$}*mp<{e-S(!r`I=b(0KRiCmzo5NzdCqfkKKIHf zI&fXMzKQ))ejSWslX8Q>$COV)lq`Z4kCepo0@o@z9XWL2W=Co4BF5)ulhF+kIPrf5 zD+4>E1i{_|+D1p|uluL@ElZ}1BJ0FGY#{A>KmK7I-Jjn*{=tuW{R9k+ZEZ$yyo)M8 zz+>+~?bA~D40rgb%O7~$n0H3;%M&g~*E~XNCCY{_Wh}3wW}8)uSyB&aQCR*B(BN;s z2at(!Fb-c<`+>8(H~kCBI*y*Gv%2tnM<A}(c8*33`D~Kk1lw{q9oVkBKkwaUhu&9? zb|dB-jg6`HS+w?Oc-M^9``X}l4P4IeR;SuvM}IAIds2sS%fTqbj_SSPENPumey@L6 z<UGHLT>(3R%>X7tc3EIi(1H(1xIBkWciaD<toFCqefT;XaJQVz>_!By1EoW2pu0~o zwhGCrouCE#LmMmlzT?A|e@kWi{G`{PrhDPHj!(hjhxADe+pMt_U174$QRszh8=cj0 z{!l%RNg<rc1@6v{#Tr%dNlv9*&qiZ;9j-q=%Rike@q%dv;n>(}t5E;Le{oK%+sdN@ zM4|DzKjZfe{9u7MyeexmLM%9gfE7dU@b5Yt%uLF_?!drr|5kajae2~L@#?h%o*X8R z3i6|8_A-9Wf3DbkEj;LE2!&g^I)96%Bll4;C)ZVQ);SF)I&$=oC*&96*RVox`SLLv zAP#opABzd5Us{s#_6LELt<9-(2gZ0-IUBQCW^4yq0lGadUN?Zh!6M+<ROJntn@Kn8 z&*wx$|Fo@L!XX?DG`+2?<(|*l=+bg{E8cW64X|4hZSRoLmOnBRs+`zQ9rVJhdOCqt zf(5o3R>AVIU8**nTRJR`{zX}M^z8PWoE-9>fnm0jKTMy`1Vw{i2G48T*~JDp7%hn7 zBLK;>IyY!<JuN+31w>exe1ZW<v!ZW`-GB3qCCFlcVuV2LefR8q@797{Sv#_u#nstA z)am$?r|Lepo6AOy{Zy|E@dchTdw%@_bofw~;U#O#L(MfHaNv>H7&Jb`I{#+_o~wVn zN>|7gtSTv;kE(2SpE?h&arDRoNJw<ZGn^%qKJ^p3z#R?!KR6!z2Xlf;FALDmt0c1J z11qOvy1qgD+va@%WkOH8xB24Be3JcwUPbIzwTE9Oi&s5+k{r^m(X<)b4V0LeGjY-? z%5;vb!~)=#Q0K7xXoh;}V^!B|K`N2qkt|znOy}uP@3nqtZM4twXp>((uWhcrSI=Io zU1aMf1lO+6`|#FgvV#qvMQ7Be7o^jb3gXq`zHAC2aU$Pgm^R*o4_$uL3XZ*ISN{2h zifKc}^vaz!Hoo0-@bnpbTs~198oi(VFx~yoWS7lTzljf9QJ8Mm=^2jjoJ`dYft~TU zb}>2(Z1C4d$2|Y;s7u;|h&ci9VYW~DtZ~m8_sz}nAEk+~42l=?F>6axLy>yKjF^lW z5j#CfAvbbc#lF>tbrfDpOJQFp)IiMlEifr9@%GW;_j6898y$I4WB;hn;cTOm?)P#% zX7+oRxAQq7c)e~ty!RR2J#1$1n{Z!mWJs%V{Foz{#nt(STi8sAdOV{kh4N5>_&>%O zh1em1r8qJ0&(8^IBSPb0&-%}RrWVSms~>rJI0r?-w`&anC-AxeM{xS04LR`TZ~pf0 z?*8o0{^IV3Uwpp}ULN25<OeTu&?!Up!GW@GiS5m?TcYHXMLisU`!hO_j6P)qdfpvb zo@AA2437l4^Og*A2I0Ljs6cM_o6+fpQkgy0DMXjfd!XZ+WsHZe1@K)zZ17@@N#&(+ zGT>Bfytb(nnUjX46mxEoK#lCQwoXsD?|rax9cN&vQ3?;So>`u32WgF)#%i5^06NZW zQRRAG^)u=@w|KMnhsZ8Cw!Xrw!y{+*fIsl;M<5NVkkdxuMn}3**_xdkH2S-)-qTnZ z1q+wpk8YJ0D6oQeH85vKWDW-vH(d$N8Re?N;L*her^qZ9if>H@6I#O;K}Uk_<v?S& z<HO!JQijunNAz$wYTWFwyyQ@!)6pd3((ny0`f>2vQh)G|jSrhu)UyN$s~)coh^-+~ zOL>qD_v>)A^cq?q<`%1rPK-sR(d#*J+=9rMA@eEY{Xg}9qZ~lXCwT03)zOcLL$d)W z$pX8}F4gPbp5RSCdEmM#yOyxj&eHg(!M~w&N-Om{N0}F_+yKGT!JZt~y|X0x#r&Mz z-?FW)Q^!z=8_EvE{`^DvPWkHZVs=R|s{`-&>+i~6SHpv?Y9MZjMt@fjz^>^ByWjUK z0}^M)D}MRByORzZ98E4iYT5EX{`o(-d-aolbob!Zmv?V|qa)Wlyb<^`JF|4z&W>vE z?Y+~;o%*hsB6W`UHzFsuvRpibrgn&~?HXY>ly?!@7cKO7<>JN2l2MS@;U4{d4*B@e z)xNZ&C#Qp)PQeFHZ+Vv=yz<i7U9R+jyQRmLS?0@FN-bE<q9C{6Kv&Id+x9`QM6tkp zJS=aHApq>PhI_RYm_`vl_gGL{;G$!wtzy5HJ<`wVUH4?^9kLM^UX~Q&m3OeNrJI(O z*%We{^o-ASHpw_%J_)}kwXGU*vx4YCo@fYLI$>7$9sX<g_cex$_d!7rKXqS6M9_hT z4cOIQyt(`4u5C3cA3ec<|M)-siid$+`^ce|L7?wP9y-isMtpgpj|i;2Cl`7?-dFYn zRLPHg;TevTJ-86R9aoy$E6;q+_;B)G>HlCJ%GD3V&-G`_kvRRLS4w|(Xt#Eh4#Z%T z>169KKeT&#_t`aGCqFTkJba)I?fm)5<byd*twB6lTae=;o{@B`13uc?RX7-YWN^|$ z&jQuKwv`KxwxfV^GwH<*<R~uG*2=mi$SRPxli4UbZ!^-T#W8eL2OdV=vjbb@{#JeP z&>qe`^ZL_=W^i?Qg_soXVZra-%kSE!7T1o6cdBf=)6!>%q(^3t%yQ}&y?fh0QL72y zyTLo{z>RMFWit+RPKVPso%yqpt7mZTXSNQ{&u>L48!k}3!8|d>4HyOnYcWPd;1A#F zHG*p<{ZWHAj~{tA-6wrov5~#2ckdNee0ta!myl#&i;n9Eh*>ss8@*zs@vmoi!B)LW zU^CS5spo75mFQ*1d&jwU@^LowqR(1BPDbZl{ys;P|9KQHukDV{juX)5Hh@`HfABG( zcYa;VbNPY8+a3<Lq`Ztr-bb%RJGkD_vz3j?MG&|9OFo;qBZv8ztYLM<k<vDiGwvK1 zM+w;d0geC5R~h<#;t0B1ax9?@cslwzUq`9)%Q~6YGd^Zjp*x<8m&yLo37%$$&+>WC z;{A)BKTkPcM2k-eJ?{Ex@~D>*yjlS9nkC8U`#0Ijx9NpVc6D|agWy+s$h!RYx?A;c z!^0l&&$D0o(?R;NL7!-_A?e3-%Al%AqSsA~eSBYwTMy4*kG>NfsOa=Y@JA<&xZsPn zd($q#+U8{W?<}o>kbLb{LsVIG+Yvd)MBFp6TRf$A+T;6HWH#vq&utzx`xeLdOdqg% z*gi51n2gHuh~xIzywdx4N-_1LyRWnNufI(n<A-V2#i$L~oqj6ahMl_NPvyu?yXSWX z#!LL{C?5gv6(JPXd*?9@LS~pv(1AfrNI_I@{p|RwDor@ym3<VP(MjFb=}=tc1U;gF zk1a<^34HJLBL*@aij@S6c=&w57@q{EjAp`O;`25;c~{RKe%>);2nH&rV2xh9j6vU~ zRI&O9s1Is;j{z4hLv(`)Th|@@Ig2n`{hf7^j3U5uOe^mi<M;x9qVa6k@??ZFQW_^Q zUKw>^l$;#JmW(m!(Jf0U_)&QYGwk@u;oRqVEL$)l^R(x`{QF<u{onuTKc{#`jsEG~ zi?0%5blVM(lk?v4JDppNP)4Oe+4~zcHXJ6j%)X#+N4Vt%7yPdt)-qhq<I`BCFa#IQ zjC!5Q6x?wsky%-qa5-VPP&`Z4z|d%vQvKAhDpr5kO?fCLOf`&+yhgWWmPUIV6|G(Y zV7NILP<WI$SsXn*_;@@A*z>fL9j*?YQOBHeiSFnYU4LXYAXwY=t;&pYVuGa_=vrf! zPAW5}mh6EOWZDqRuF7b%nq;%Oz{;D<1e~>vITiMF_^@CBKdPVISjzEj`2>eJwA~9k zpCD%O-T1dnJ}x>g`8oFk^VG^o!1dTgra^4sS9<skFZrjx-OV6L4xe)r@|J5I%@VsU zEnH7Eqo480qh5#7%CAFElJiEI$6vNw+I|Pm+UMAQ!zDOnFT-joANr3jOP5R2#M;y$ zE8P)TMN*FRTnl8Uo1M!VOz_I>|6nUgcR}pB^K@I#?73gM>N9EJ9KKZcMxzs1d8D{H z4pu?ydi2ZFwLva0W#t==&A996Uhy4WZ?<NS!pr?C`1DxzQ|GOStT#v(h~=Rc`%(BZ zD5oAUuitPAK3(vfuabrj@@z(@GW_Y9Pibm_6WZYtZTRl6^z;eEuCZj@0$80X9V4q} zyi@n;t5<h_^soNK-9P_V|N8D@t3Lj^&zHS_`~ve@nv@n*cXNL8+hnGpgp(BxaAb<5 zjHcV4YCb%L!|bq(8(4Jiw^=f|$f19y!*bx@{sv~}^{OA}{+tenr|Rz)kpfpp2&~y+ zDY>4EIpo2tE811h=}kXD@X0Sg7I-w9hF60TJ+ARPTR*Fx3ZmlQb~G)0@4^OizPm=< zrXku40|#cH%s7$AyO=@-TcP9|=-JEDf@PnD__mo~o8R$w1_{itiR9pRHjs+9-!wwr zl2A^G47EFUqh(9>z%U9ffPRv^=&zMsW@hK>!3&3)n|Sg6vvu!Hb|qJSo(n($1r&g0 zH%ZNSBv}ecBijo9?{N70e-MT37)e8GNOm{w1;Fp~%X838j&{{KXYahMT)A$!^19{c z7_%GUjh680YqBN)gZkB8gN2_ia{o|=pVRcE1E>s;;0qbrzTvjPJR}Qj;%$fVJPoga z%q|_6!ICG~l@h=Mxa_;|aaWO(gY1n#RWg5-`y>0w0K9_j66X2(`|GeJ=xcHj+$*eW z_%-df=jupm4&Twi)pL9yqX*ZX3q75r<cciPwL{3HRN8EFbv^bcA0@eR;i<t4?E=}< zX<6O6=P#7dUG+XRkOz&)?1)B)&@EhcjgUwFMd5{hk#-lqo@$S!Nd`87QJBsoTAPj4 zZt84rJB;wsk4Dvn15Ib}@KRcpu071bS1%VI<FrBiy$fuz9{%eXg!}gUhS!!wYcs*D zJwaq$lGCXpTW56KAvoyl{EP%Enl%{IuX2z<#~X~#`5Xr7t%SpWmv(>cOphC&L8r=j z+Uy>?CEq!PIhvt#aMgD+=;g;l&$rRRibmDsV_6;fzLgqL>*ntMerdM!xRBd)?lw5p zAP9$^<7qf-pMEkt8rG4rpT0sS*Te-~<zl}L4w#UNbCs7L*?s+*`D0Z0Q;o1UY0z7H z>Yq0AcqWhPptX<Q66fc=>g}gyy}@=(|ATk+ThYk}9n@93LLbp}>8tzXnBP<UW<M{q z<&%n=>{MHDt^?1LM}@9>r73Rvk}GGOrxkFJx_~Rq1a2_-jWiEe0Fl41*`M7*E<R4| zB}oU+4lbu{h)&9ytx&&oru_U7HhuQK9PA%mc6qhV84$F6vbe&`arRc?y)*Z9I6bc% zv$>pYKUR_A8vT0LM3Gksy$$~R__fz#vR9RRmY|nDnvgU72~}eoK3BdzPe`tVE4}D% z1OD;RYD9-SJtQyN3K|1Vtk~9ANOnJb+h_E+K~8lRz6lofO<3r$K^Haky01+ng@D;- zb^u<|Z6&Tcg^NyT0rLl%kL)(Q5>9-yv|1ZQUaa~g(t87k`c)t8QDAEu!n;A1x1Zh? z-)Yb3qkYO{R|HCgP&bOYly@Bjd87^vdiiKyBVxJ!@?tFq>1>9tV;Ci;Y^xCQiRpbT zNpghsXKx7xr$Q+jR0#2>X7n`HmY#ko-Fo%apr|Ux&<8hxHxfd?ZaXmPV?sb+Cb%lD zu?tbhQ-87KOQ$!AJ&RhFEWgcAT3YRJrjlS=3;?h7@GW0{l_I}wRL}^?hmU3+ook8k z6iCJU3XchX0fOeRFX||XP8#8)=oAH0D1yX<ZB7oF0VsGt01%&Xjw1fh6`3>|Mm(ei z2hNB>h@r9(qte}H1a~-721&X{86&Uc_<#S~A8uZ}e0lS`?_akZ;kTXIM#xKJe~OMg z!?MGZjF^TGdME6J4{oQ!b8w;*aI~D0@h5yGU)}a2KK>(t76<P*QGQST6IMc;GKBdm zucHO7%fJCg$l$;!_n|`sIZe^xVw{d4N5>#&w98Arl%ZUWjgiQm<{LlJhjN7MI+Anv zdIXceuMzW%@)V%_;Gn~m7mOA@YEaE+4}JyWPi|hak~7GG2d~V)K+qt}8Ep$d>5p6; z$C8ZBpsT>-@nQgi$9W@jTdG2)eUt}A=|8n^@oUprN5;Y+Mr9LbKz3SV^wWT$VOdt0 z8SN=><#o+bP)CL>+?QV3^a1`e(xW-lNn4J4Rzn@pqR^!~5^!`}eJ0Nl56*i=rDS=a z`vwbA?84}e%E+@nm|f|Igm|Q^?)w`*mi^p=V=4buk1QQ1Az6{=g@-z>>O&6AZ=nP9 z3+e(ac?Jh3*D4=bTE~`^3^#e!a9lE?_o(RC&E+Gs+^e@b?dmu1D^EM84$C7OLk&*> z{qA0-OM=ts7IjIp@N+M$f293(T}ZX?OVV#~tM9%J_$zu6NV`G7ZWa!3*C|*0DMY&A zx>_#D<@ww%^U}tX1;xuUX`pm8zRhY!?KvuSh%`WW#+mt{j_!Z@-~ZFizx{XrF@#>< z{P<Iy=*}a$Z;<lw<HlvP=_GOTG8t=`YPJNnI6p5Pt?)P64hKl1RcY8?SC|YJzZ;Y* zR*Y(=T9x2|EyMRxRj2W)V6fRXmvFLhO;1K9T)`Nf^j!O&Etyi4b#hqP$_6V6q_1Y2 zq=V1Fv%#zESfhB^OzjxGs6*S#)kA}@y$dAJ9Q2&v+MB&Tu2z$j=Zfa2(w(w%4l3hQ zOTa&d&vb&*72Wp!;`*?Lc5&f!jtnNZWKCzW{2UHjLCl`(!0HH-i_tCH9C_+k)s}O7 zbWHM8zO>BvA!q1x5~^u=?rM*o*U^2{tNb$YfzE;AROeijp#N~L9d^(myRnW$^nKha zE55^)xHXH^@tSp*U##P1Ipziq)j3?)oV@e3gW5?Q1r=ULv1hhxr`(6<USk-6#`&_X zUFqq_(b)SJUq|0!P}g{PY2UAjejWc8VU;;qxX1*X=kLf$@S?5ylcR#ewcHJs9Kkt1 z8-y-i+;oz_RrhO|s(s|sP3gezZ=isPp2NI2p&VS7@U=niM<1O;`8`idrUNDGqIbpY z{yb}6h;@K2WrSF5mv+kXYJP%F8Qq?i$Y0Udm0xt1h)4W7jrk&a*`<BlW<ZB#?);L{ zo6y+u=wNH7R<A%^CoJr#CH3}Y*R#ymJM<-^(Bok1IL)Squmjefz%Bo0r;|4usf^P> ztuD=!u~!BM>=Q>L)KGaohh@zM4A!<3-ff)&9fI^2{q-i&KRhxEhQ&Hm=siECDDYi) zVO4~IZ@7khU+F`6*g0jpw1x2h-1a&%u-jfxJ@-nL;&GVe;5(gH6vo@)X9V(MbuOll ze2dci4%>XodbFXUL;blu1H*^EsbMi-6_4LlxA`@}->h);|5!fzm-$h5b#}d%^~s~3 zm!Ej5^bVm7lzJ;4mh2v#G*~#<>G?>SOkL`UU*f0#rBA@s51iBf0FTz?B+GryfWb*~ z>WsG4w9ov5HOO$NUWi+{1}%@D8w|Kfp3KY^1`}vy9z;(X&pMORx#+Wer+z)-Jvic~ zFTqm}B<)YP8jD|)|78WdDD%sf$Gj}xeV^ZCM_*?<Uqn~S@3}MlK>o|IUtey1YSk%u zd7o@~fARKFqhtN1EOg~&^C36e&Azi0@KCoyGd6>MsH>`=`37*iHz6}WGvog8;qA?z ze)^Eiwahx)p4U%$`RYaejkX_VubsJ}&zFQn%lcWD@^y&W)Mu6Xgs+;+I3j8EDr_g@ zqf@-F^1^Bx19v|1nM`C0_OADf?tZD?!j})#)hEiI=fWE5Qj^s~$J`2idRIiLs#F&_ zqfcZ8YmRjgVQ@EDR%YSXW#7wm`D%b?WSn5)$^;H$LpE$;P$@&$2;T^rF=K3>+;*C# z8PxVwVBn{SVI+ZXpdva<IxSjQM#6~U7+p;}*sEvnmok%e!uQUq5j~UF0aJVLlS43S zguQYoe?DR}ZpZLM-a5IRd|RvgwMO>7>3J{q{yA>E>p+7SaqMG__RlkP38xl4$`SDG z?P#P9UZ-OgRfErXQAjT&myU6=SEHy%kdf-{IMj#qjOAVrF~&xA1gaQ^YK&|X?l3K! z5f1V(fC0oh>2TU<Vd(LxPHq;d+3Oq%^&=n&*#G@s{&4e~-@LrJ?@+EE?t}f|ZTq-> zj(#~b;q1t90|2gr8Q%FnOByHvVfKfo8ZErg;0q!+8+-^}6SIZ)rR<A>V*EO*)pxv1 zAvwAe#Fbg{04ZmV%Q|UjedwTrGGkHNbymn0hQ==^0HW2WB->Kn?cE92>(V?+d+=h$ zGsD1{Gg7-3)~8fxsvg&U4rh;U0OvgvPb12|4te#F9*?TBAAQv1wvJ`xgi(r|!bc(Z zqmexL8E$YPZ)TuM5~RY*&)Ck0S1%0}!wkOt56Z2}8ZF~Y*<{^*+rd{LXN8gJH@X>R z-b|VTDi^-%@WQ*yjNKg8=!af=pRWc#80$DE52w=`4jhjmqL>QK8CZiCXmU-*x2mDM z;w3?$qWi9HJuf7_hJLV$6&TE@-e1_MRI)%X7|H`rk|Q%SnCdurs_rYR`~g(A?UfG% z9-i4`p>U}{W%i{=bcTyu%Fsz6Q*f@Nb>6`yACvb>-czH4&w+62=^lKt1;+A%6yCBP z9J&F&fPM<=@-RHyy8q=@9cJXC>*{i$)pDE)EIqkeM`KWf26)%E-|poJ%)*AB1g_Ew z5A9!-f9~OP=y;Nj2g3#Ze!)#F-S*kizDvCos@xTzpyJU-X9mt>&8+Tb#KOT|A|0ux z9ozZ()ytdz`1k+e=70VBe}D7x{?*OLXRmSqZnMW4^@r>f$*Pm*u$d@n)b^oX@YhG# zI(EN;HDp>NW%hM`;hHYPUwwSEB?NM_P&fro0MwsNuO$3DbY^pkFHS04JiqRhSlL}{ zmHPVoQs;~ua5U+%!9Dgl=;Mdk94l*fjzoFqbVr+%V|8I012t!QCt#NLA;<rr&TU8J z2Q&Eg9hq6}{0b*p>Kmy8S3}1rEXr>dCOVPzNTmP(KmbWZK~(3sbGW~DIx>6aynvD_ zxxZ(2Rg^B73NNM`PrZNC^5MsiJDjIM)SaYRrcCQjJ~pGQv-rpiuGa^2)`d>)?fuKm zJk17nW`gZ8Rs}ibSO<jvZ{T`*PN$(#d0_zK=^p#|nB$Rcw}R`*^B1-0&Fq_Ls+0TJ zYlXn<qrqVlA2|p!9&8)R8vE+X2AG;U!XEr&COL4><?LBJ8X2$<9zE~(e4R8f!`I8F z$8Yy^m0VrJuD{YwUiz)j@I3WpS4hmU83(4KOQpnpz&Ha-h01>6CD|!sCbay~ab=`a zeq+|DBiQ8h63&KPXLvYxFy#avpDozoQ_@4n%VBTF84mv#&DP`7!VH|0b~FkHZG>4& z@_*<M9}HYn%C;bBJIILkDE;*gWX?+<G)rgDImdNpxD?0_{Mhy@X*VdAEO@OA2U>@j zZb0BmF!>jodC}gPjU8fUkt-rsUq^b|kWiFNmtVW=peNhA))Cg01ryHpxI3)Oq^EN* z&Wb0^T{OsNi44_I8x_4OUptG3>dxOd2T$h127jy7dJp)0@{UiZZI=HR8^rz*wd-uV zl`W5QYPTXR*oc(X811Ef`s!6>*;-~fb*t>|(}D6k(_k~`rT1DC`95VQ3@qR~`{I46 zqldP&ifHpEkLnp895#ffAM^jTsdq2z$Hc{GneH_vaC4U)zi->yX9HU)?9M-VapVFW zUi2!@*Y955{P){G4^ONoZTyUF8>>#UdC|(s&Jxk|{*vFq$lz=?nug2Tw#ljcWFGCp zcZ1%SU$%LBorh=szD`Q;c3OOQWjg}`(V(2`OYB#J69Q{r(V&VF&H2(|;+goZ0&v&k z+PbnOItQOIPu@YS*!W!94RBOFbtmL}Br-yB;7*Qp$L=$@FDvvuI=s$){<c>Lz0TIY z491HFh#DqryGph^;^R9lBP;I{Q18KglbpSeZv1;4UI#B-ZJZ^@e9d(j$x5H~2DE`_ zTDevX49kA3M4bL8M_t2@&e@mUP4bdnHTrwEHoSTS<IV}q^|8E$h`m*oNdf~0_H2JO z*jPEY$rgQ+$I73F;y))#p*VV|6aL@9Cp_t?Fasn8Hox?~-S_=g-1tSm*fDL~R)2>2 zr;8uUf5%h0dVIq&Rj28Fc??Qfg-Hi6l1;;0t1S3|R$pmP(7ND%c5T~n(h-vZjaXL! z3;?67VN7#Ma+q-{aD-f$#*!_Yc>25oMu-$ny*13m%da8)X8a+SVSo1cMT9m|-Ka*( zm@REmfk$36l|WE(qfGa$Nq+OD>Ff+5Vm~wD+(PaT5tZSCvpql5ffM%n#oeaLEyuWR zC;nt8JaFgQNLXItFr?2KgNkGPTxYql3Rgey`_r-8;SnX&0BImJP8$`f9=ACObKVgc z@yp|KS8Y~T`3S&9u|UP6OL_*_KHV9C${dW~Xwa{tfq(w_=bQiMAO73T?|%F8=JW4= z$njA3grwzyxlX-%&eFkXk%cN-B~(C#B+BkiU841IZc{=iihxJLMre%2dr`ACmke;S z7&oKp>p&6wg!Wl9JIjwsi(eNfM@NmJKhAGub+1AGoDcORBfI+go~$wAgtM}TFS;hg z3B3;l9oRJ`2+kb8g7HI*NS{3bM*L34Is;rhp82R)ERtbg%BBE^r@-TF7cz}EDSPx% zZw*P5T)rt?Va2XrZX>@#1Sln0T{(T*%Nn=%0hOzK(E$gqq<DW_uAv<qtwIp*!GQ7( zAPBZRa{!A`GWi5jo&9R$=nWY%_+nI$G1KsnH+z46X`BNxkSf}J@p}b9j~v+@1ayiV zUzEqN9~tT?UI|nGIh}xYp^FO@FSo^ak5(gmk@5z}Ou2@0abQ(8%@Dtt_2f&%PW~dH z8qj^R0qeL9uCQx)61m4`^62rv5Iz{fHLyeF$lb9)r3<f-qd332_ch#pd0vAZoTU*5 z<~7akFXgLi&n~|@L9XGo21NWf@CV+v^o5`5EYI@ETi7pUeTzCbiW&)rROt><qeb__ zVepSk%XCdc2i(g+@7<5LrPtX*$JvKvLZ`#m#!PGY=&X@bZRo{GWfy|+ul~)yzWKlY z&;R4*@BhQUPj4S?-ZqMS_rrH{v>rbEeBjdSHN)gJn>Puf2jMp&`#ref0vQ+@Xh(1q zJbVuyWMR{mxu3J7T^L#LT-_?~tUx)1tjz$J{sP&Lv@p5|=Va~_M;m^*MmLFrN;U$Y zToXPvGMq&9^~vE<DLSY7v9^Vbx6-Iltny?4(g~f2bpVR9Oz~6u3ZH-@Pk)@1?W;@X zEwNXVHSWqyFQoZgnNOT*oRfub=$^@5JNcy7I@t@z$+#>1*(aFR2Vc7ZKg*O~+&`c5 zWI5Yy?d@GoI0u>Sf8468$91mpSKIz2CtQ1N#GQ?@#7(Cfy&e3sf#2wAg_UK}-p~2e zlIY5DI<Y0WvtPy2MIB;x7cbZXX>Xe~J{>sn$oWO>{_wOq>mZ@~RTkz*<8$@8%DDUM zHJ%NBnJVgXe@*N6suOD;{tC_+Obedy@i!p-$_FQO&<+ki_9@-hf=n(}V!WFZr2ObO zxxq~^Bv8A<Utw(A760qti&WE9H<dSii5AjLUg$-Eo85yaX&Jq0HIj*~$|zpUoOyXG zC*lt`lN;)JX4LVSOqaL1D2sox0kLcuUJvJfzwJGZhbA=)Krfx1a56Gp;cqx?xiDSe zM}a+h9zD=Dgv>f<iE8O}K<Pvq(IUF#n<iS!woM;P?=@2o`_LJ9mQi~XY^w>hx!PH@ z(1xDDx!^L*s(=suk~O-39+M4l#@mua>*ssNY=czm@E_iwJDg8@r|jTXu0aLms!hcP z9DVs#@htoe2#Plla5}BwSlRB^`6m!n@TqNj*+(lTZ0*{zYBcmw0Wj-?I+T?!tv!S5 zvIoK}v3HVws29aw{qFVa2Ab|}{*)iR6%qL>AK0i+eAT<pEu($judOFPzAeo<Gw~z1 zc(}UpwegG;Rl%bRo}$ChKE9bWlS}d#LOw2h+e};Wh(oS+3tma+%+gD{XQHAkvRGhW z;JWAnYY=*i!p?cR<vZ=ik$>f^wBgX52S3$U;r@0NZ_rfxL0*Qj{!bmmEzvL0!gJS5 zF5TDW-G}7Mg!Q{RgF3q}$qG4&Umuf4gMo8yt9eph2eRe3@!m|U!}^-o-+-*a8NS=# zmq&Gzh;TU*d|NKB{35i|{A2JcZh2;dilg1OU8*YEik7Qq_lQ0Jw!*&l`CPq1vriJR z^wEBOC}ctB$|6&Bj(5ncM70mkKG%ikqgPM5vjJxXMi2V`p<DWED;uBK#ophV1g$8r z=?vc!3-obL8_<3EOHsW^3VmUd<fr@j9Az*tpu++}G3i$ANp!sqrugMkA3v`ozq+)L zMPxt%j8H0wlI)W@FkD|XI3c#quw}&Stt&JEDSqK$^`&0TI!M7lWQ<`X7hf40-PW)x zQ=_+G?ATldK6X6(Mxq)mvCO6Q&)ci>BBT4R_ryN5#LMW?s~0aLQzPLsX2C?X$|hWl z;rFi^z0N4TZ6@?CratR^YF|@o_#>{HFGlC1Cw0+@H5#yY#Er@5p)QP1v_O+`A)eXW zITI1c$(Qy@jj;s0ye@6pQPAa@kuLTEBj%N6hCQY*7Exiip%+Hshoz`nn_s=C-kbOD zZvNp9f4F)1pF4#z`u)uhuXA8JNiZ6Gt)84W_0f2o4sU>?y}wEs%(D!QFsXBVNmDd# z6lls6T=(#Ym=XUOZCUDAKXDRWir9+q__H+(lY`R$R%d(-59M4NvUAFC<r}tIUCCMH zR<^wX8rUso4DXXaIz@*mD*ozN<^<|&8(7$$-~fH;aGNI~LWwLznt=?i3;I>DD&TW` ztWIAXun;}Qg*DdUR3ZjO*c!ab#d8BBn_0fV(osE!Xc>VMe}NTjbm}YEzR}Z7a?+D} z(DlvKcCT|h#kPz{T%S2W!{iKXD4!li#DQjbx6HV-aK%%nx7yEM!tg9K8Kw3_wVI|E z;Ga6!KSiD<o53B*`>mmkPe$@4>!p#-HA7c<5*w(P_(UUOus!FMZ{R_M9O^n}s{E+x zVyx)?Xdf&v@f5AsF_BZ^%CNNbOU|=)L7wZUr=x>~t???o@@Bw;=YAd5!Im#fx(8Dl z7j~SKd+ZDDmpX&sUb?=@<!kX$&mr9n9D{PA7e75M?h5PrE4gdDg^D87t3PFgB83;Q z3%Wkn>w@+km;Mqr{JIas!4)oO^;bCkH6ET_zs7d~z5@D<PH+Ppf@P79Ea8|+kgcc9 zSUfj7N4~Sk^iCS__ss(S`+xUuZvMCb<?nBPQ|I;{f6o5)lKRK@4Nlg1I!glMkGkvJ z^fS%Fv&v=be2!Cd<rv9A`yp02@be=B%qm@;g28}C>NB__>V>#R?$|c<@+px|m0Cxt zys~>1k0uA4#07gOJv%C1I;At!qS#2C);Z*OU833LJc)dR`nJt-b?>zgmUvB*En&_{ zf1<-19Y56eeXfmCr_Gp$!voz#sKD3EXD<z?9-O8F;_5JNn~;M;!plKlwtR2^o;_<I zx%QHc=QwX4eeEI^IGL3b{WRWiaCMxiI$qfy%RYUy{IoXaNhfM<l}UMUL??C~-(dF; zPEjKoOyAL_(S3H>ps2PV5$6k_FQWBvAP*{ARtm<G+ERA5q_f#@HOq{57v@$DdiNJ? zCL#FrSDzq^{(i4A?_N6Bul3`q8^Q-O+FjH6U8i?KQ~YEz82&G1l3(FgiY@;Ij&dgx z-^%+X4;k|3T3gXQeqiNvZgpgnE_DkhzJv?uq(+kCh#sF!8!_TU-yzty9G7hICQQr3 z$70hqF;IhtU&z8Y^DC|vHd`#NS=Z#1eI*-KS1D!*D~5c)r`+q1ni2JE54zbXK1fY= zJe1|kY;ukTa$KFlPA{xDqDyqac_U_do`uKu{A>5=P0lv_tSSiQ(RQ8F25UC^O0HG` zH03Y{uR5Q&^Z|Ja`&#GEV9R82{ES9Ll3nT1-{8#CCQ|6nR%WIAo7Jmhz~?~N$%TCW z5V?P4;ge3bOZejUuz;~<o$WG!VK1%n=kxZ<2DqL#BYXS&<qj+I$|SO6ChP)wl`LqT z+^3fN2Tx~I2TaG`AlqGb`mR~Vj|Q~j#eF{U;|7s_&L+RL0yBF3^yi0diM#8-z)dv8 z!@IT?&|TzQhh#F7pVc!t*{oZ%+H-u=<yc#f2dY^;L|%1|y_&CE{s^LalOgaCgv_9$ z>r7_wqJ&>ymxsT7)k`$x2g>Cd+q(t&+DY{w{7h;cJ-+I!Jm2^-oWQ8O{7AoQK`+)8 zm3DT%uq;&No)tXz(fNfL-Rl23y1%kaIsGs{w~4ay>9pCCOCIQu&aFYq_XZxa7tVGu zv4MWx5`%0ZT+QjeYZf7R*~)0a{@W4?URjIA^J7is{FPrH&irwj*>^mO4jT|C1NmM( zE9;?|X3O+Hw0bmkJ$`s~=ZkBdv=C--9XyHD*S;ac<1j<vTVYk&Vkdh_tuH%Vg|Y_@ zPos;gRe1v+JoG)XwdLIEQviD53;HY1Jw8N~KCWVdvGxE&X-ssjeL6a7@Mv;}`Tv8f z$<35Mgupx`N?{|W^b>$;yR5}C07UVLkz@v|eCcb3L?<WWrBp!SMs*lWrzH|ij5mvF zCQ?I-xf=;B4h}|_IsTTySSmNA%IKbhqbB}S!p`%Kw_y~#jRMSJkG0`INuRZZ`F-!) z{n=|8>cCq69&!^d2Ifn%yk-jt#DrcwGH~^jLmR0V1LF)wCjeSFFh<4B>ThOQ6%*G4 zB|!bl6|h3j{RF;p{h{3&ia7;F)-e-tN?UoUMFyY73y+DFF-D_*c@RoR@1K7B@#a7O z!+%}8&em^pE}w?i8KF7lSG#q@G-hgu@*4@lpM)G!pt<Eg<1q(N*)gT`1jSMYqkxka zUzfV;G`-hhY*r#7s&-C|Jg1RUwq*=wId{P0yMYJG{|cSL!^)C&d&Z1#%?%2nH53E~ zuSNsv5v?<FPLejN$<e#JJ2Ya@(bl?rFxOa<iXmM<Rpo@hi7aa@*10SX0*qfJ(}4%a z8lWj0St`T!OsE1-rN@uG&oUgZBU2k0pTbp+20S`BqyXu`WZ*1G8Qj5$)78%jsBjvO zHU84bhd2EN(sw1Fay1khkT5F<ulkj!##b_M)}ZVGYm!@KROd6>&M*WHZM#OJ;?+}@ z<4hJ2y_7$A>XYus7x;ru4~tW0fTFP#5pYxfoG;~&U*ME6ILTCumdoKHGydRaYz=^n z8^Jssx1I{VUaLD`7d%I^l{E}X`%B`*Ne5x@`?!WnVQi2Jot#$+7mvPKVVEGTm{_^A zDnFeB(|?~0M1Xa<#Q!rq6jJ#|7P>##7v>&n11a6Ft}DF-U5XqJmgEXUo=e?e{Y~Zt z2jDaYr(v6uF<7S{@ULM5Az<<7NCq#3L<q3e)!(xmC;Q^gs|ci&4otH+PjCL__ut?A z+kf+~nnlQg%1%AI|81k(_gku$iY1fjzY$~fjVPmax!Ieu=U+ouJTrt-2e}oo0W0No zX&>;FE^L6V{Hs6NUgi2NJNC&jSqM+hvvHEC+aj|t8cQkJQE3)|M$%LeL4a4c8(^Be z9a>3h;B$k1*&|MZ?G$LHgG(Qt)>-)U@TLQyEUkQ>&8)Ml15vxO_l9yhJ0HLj=8WCc z`wN{Y?*{Oy7bnX;s$2UPyN<JyerL}${@UnmeW?w#CroY6o>)%%d1atBRmUX`XMb~u z)4lhVyV=Ov-JK<XpE<*i%%~Pe0(3xc<J*VNZ+lL6EAL62;TN@g9Fep9Rj0JsjAl0Q zHG;t)L>m~)QJ*|!w>B!jPD?b>-b$H`(s533c4*ey_AcKw2yGds4)h3Ly6HB!)epbP zO<dXix99L5--^Fp;^cKLPxpUqLw=p+npS$@lYu=Pd0PAdr-lo}hsiaJqKQ9cE!)Z` zFI?IHU_hV0@GI}JPh<+60x|gtT9LD(gA*6Qm^_v<S}NOl1~KAdTLDvA&+3(I%0Kxo z(O{9|Z@3)9*}Dzmk)84<J|JxJNgI|~uZ=7JI&ZjM7`YF2QkNX%@Rvq=tlcE{PGwfd z&1i0bI-2xng#y3N?CiF9mFC(}S$z<s{MxFAExoPnLW*F_2gxq;|E>pWY9ZmFW2^(@ zelv0Di<u^M=ZAvIH#3i7pnP<xPU^Qj#k)@xs%x^uH>zA6T{@v2AD!Ew4aLLJvCdb& z?$J#;W#~j4ojkY&dUeNdd0pVpm+`4&CIk33VxMk%K?4NJY#?eff@b-?*I8ugENRs# zzHOz3j<1e#MtL1^c;B_J{_UG|_03N=AKFKMx0Bhej7%HLi-s>M>!-^9lwLk`*3R9Z z+mrk3&s!Du^IJ>L?QOOiqZJ*_5rBUmHsiJlu0z>uNS!@6h4Nr~U_;P$u5Ec%cVW^A z?~~^5d6~PrfFIm5qo+#w`pGOGdh{NMUuX#y`lIDF|9)q$4|oyqb6s`O{h|MXCB^h0 z8JjK+W;lf-ov@`U@=m@S4C^c*cDOh8Y}xYbdWo;HXD@}7=QbVKUiNIEc9KRw-9BaW zJeCCOIe673Ua|<ADNknMThn%E6ym5fo|T5x_x@U|CB}i`$u&J1e&x3+QXVqR=eXJ} zzv|3~m4<Fx9pKQX5A}PVHYj=5o?U;I-#>|Yz1a)!%B#*5fKHo`3h?#yJvCUvJ-}jD z&u&I*yxXg=l2K<Vkqda~<7LQ(8%x6fEGizSDQ<SDT&+}g5AVr@zRyRq$m$hr183St z?P5XWoqmvk)$QHy{;ZU|fV}*)Lio(&1_ixCghM0Nb2kJC8H*f3;bdk<=VDTwcLGgH zKuI@xSo*VEtTY?7E<r@ZOr4+B*c@lPTv?2bBJc2xDu|ezY$FaIYMcqz^Y-|Bh-lTh zywW6$Dg?8LG^5hDb>-gI_we0|v%KmZ1Ec6KH*YlF5s0Jbgk0~I+h%`oYRtbfI2mNx zyK0xwGA(td{8xqfk|b>AGFXgFwHi(n)KbF>9WAptjZTb?L6nnGB{Z9*7~U1v?`G)A zd+MH`gu_OpmM;Tg#J*0^KmGXT=Fva=V{{0&zx{IaUCXqMK3Vtw(9G`XM8v1+cx}wo zN8^M?dxx(EA*{#iz9=@nZsbNH^hs$63&Xl)a+G8vG{Fg;5q<l@+RC=Zf)OBfk)*uf z1vfa&TO9rb|18ZxAF~!IR`DCvmQJIZP!Gva&_ScfoE=6X-Ng3QRiX`El+MU8MPR7N z@r-Nbt22X3Tq>n6jZ|r)!#b2ixAgWMk-N>dPQKs?pMDQ12A_QChcDfPFn)%YSMN;j zE03JRfuX_E8JM0a>^W2_7}e2XQ)d}->C~05mF_zFg_hf+d*wyAyVWeh1AjJ(e<`El z%1_@g0G_AeCEFX&h?Yp8UX16!qQikU8I@o51HLq5w1+qV`bk?o)M@$pRn~NA;ZlWP zWro4%eT@t9%4KYkZuAdFv_u=CL!ZHeC<rU3$E%@Mx6u|Z7d)=|IN2?H^<N!iJhUkE z+x^m2#+3$<b<v7-E2(?sUqXZ~d~#J}C|}}F)WW;<`)eoLAfW4t+a4}obYvpg?`Xbs z=YF`9wJPpfHM%?HF59=NokKHDC9ZhT*_C<aCu{@ibFSp}(y$k}n(p@!FGSk7F*~Jv z4z1NI@~I;S*r9?wP9ix^KQxQ`FaPD=PM3as^W)8LfA@DcKRo^6=D+^&=imgZS(3+J z>)eHgQydk{KB2|z&TJ+9)flF`I6{_`m#ix6IP4f8-I2q+1%RUO5)PiuX89CWLFzJi zdjvBXDDb4~*F8k~MFx;L@&*7$%jNHROgK2ru7`sqlaCCd)=~XzZ(a1)*{wN=Ms+M( zvi;?4j$}&)E&J6ey3I~}>41>WZP)qK`_jMGF5PBZ<*^#Wc?%DF)yhRbQ2Bz3*|2qb z2*_{^xvn|lIYM*PTdwRKqn5E6Jbv2Dt`5C^0UqAkvx~0p+X94MEk##xvh%cMn)0+E zBAiZL3{+Ruz2?Dq==N&rL<B>dmj$i;G=p53$;D=7@G*LAiCfP5ZA&&eJDa@<9y`q5 zIc(7&in7@^r*l4P2HDBW5wmj1%9vW37&Lj&mL8orwTFI)bkPH!>+>~ik(c=E{a?rZ zI(&QwtFq(x{wlKTeDAIzzuCfHg}XiNJ)4^S&!?C(2TFM+^9a{PazQUy7u<umI-Yun z2a7DDH(`}?`01RXQJJ+j(@nb5J?pIjq+?c4DR{FW%J&D6xO@ge3k&u+2SPh+Af``p zNEe(jQAw47x54SdPazXSn_hI$503r;UHcNu4+$7t$Sfy!0>fi1jt;Tud<C`ID~>8t zoej#cGvKS+=V#jZ9DTZx&o#d*7}ad`IRoXvS8cc;Xdgbr##9VQL99G3G(8=KI`QH5 zq1igTyk646f1T0bfG3Z0WY~`$Cd=g6=-g&!%OlM&D#<1rB9cG;8v09*&al+(ORuvW zl^3S2AJ9G9@Z(Q!T3*Z#%lAx0pH$Aa(KU<v@U@OUT1O+R=5Fh7i94q)TUA*{rqvRb zUBAlLejChEcXq=4&3#Lg-)48T$A7MjFHin>^Stc}wj;c4ut6tw2m3fYFdC3Oc1PHi zO7KQ!{C4A>NW<U#o=d~$6?QJ6#Yu;z-A|9vr*fo{bbd4VM8<O;c5ASf=NFiZzrZ>1 zpvZH00q#{6ra#gK`+6N8`S4dxvZ(u{%`#|c=+1dUFM8&)KCkn4pKY>K**kOZOJi+{ z)0H<6TzPbq<XU3PC)or^;rMF1<@J06{7`FnqXT{5`x*H4OfH;F1b*9T!z*4;<vw*I z>K7GOJYW1aJ==j%X;P`8Ie=vRi2UqFgs0Kk0ZW!Y)!=;WfWr?Bcs!+=l|UyR$aop$ zH7ON%lv$h=wd?#Q$M){?<u<vKPpjiPJt?Ef7Kc#jmpE^HD=P;j+#?aOnO_{ykxUbR zI<b{BovBd1b&0PsxbToU?RH%19==-*R&wt>*8X{W!2jrqb&Pr6GDV!qtrNmL9V2>e zXpYf8PWl?K6qXTJS-ok(NU1-x;l5PWz|yDKS>KUzQ(7(S;~L@HKA&2;;vH?A+}nia za|Vzx#T26s8bb!eKBJf0%>U%(&p#U-Z}dAPRg&Q_s|*MGm^8A4<UV-6f87B9x7W^X zqDR9b{@2YS!89-_#F%3azxy3x5QBBVC<~)TS!#!;Ae4k~?o+uRGstI}Kb63Q@|Z#& zUI`mUZT69X4`v1%?%^25GxW!SyRc@A#LN<epw1b%M!+BSvE<?Z`_oUOnIqyuFGa+M zuZ_^x2xQ={@X&`<Ssh4MC0bs$_vnHduTi0(OC!Y@={|$m&+>ZzquwlB`#N+kuN3tU zqe%)`**dRh`G;aOUj2kz(a9@XR*&j}F8xo~jc%>e5pL3+2H-fC4r<{{3;$GOzJqI& zAI%ZatT_JQX(BW{)J?fxb0pUosd5<LowO9(NVSe&Rqw-)p+if+lg%}r#r3~5E4y+6 zKN?l7;e9&fl@%Uy5`#f@hY$H39_6ddYF39%V_N-#b>d22oDclAe7RelcWht7Fxjb$ zV6PfQz(*Nm-PPls(KrnI4~GIPsm7wvV64Mh{aumq)QwDOm6TB(lu=5UOxC^<&V$H0 zqll|a<qu9j9JgJ{>oW)!SXJ!c29M;Gyp12T4^mdH;``;`;$c}<<e}jy&;9=TJ+C!8 z&j;JepqFs#7b(L!S`}V7?g_JSxl~7k0;cOPewXe5SafN><-4W@5D?HVWr6D&&PCDL zb6@#OyXbFWp72&KA4z;d|G?~iu={nnzy9L!HJ=;u>-RvD;UqqTNg}~bK9_Kh7kZ(E zM(oVeoW@_?UrHbv98d#t@S82mrg7ZZ{Vy$ttI@~?aCkNR?DNZ;AAbM4n;-u6_cuSb zzl&Y`V!K1>y!IxH6PknXaH?`)QA3T_;(A`#X}lDyF8E2F=UhX^r%*V$uDURSBvfqW z4z#I`oE9bGyT3J*hzg(LXZIJ=bB*c-Z;L0J(r*+x+1wBl8Be!$<h0V9l2Vo}Tl2AF zk9#%8=l7kWTyo1JEqA=-sDJqJ=Fz*KI$kq}vJNd~f6hsL)QnUfMtPd?%*J}x;c@!2 zQyH|c+iDT40Dh_+%>drC11GePj0xYUenyxMIrzzlBWKhr>M+PQB!fxty?b68+iAy> zHN3a7qLIqkFV0Ig@V3DSOPS&ROlP^nChscGOu%O0qvxX<b0^fFLyWTfIee8~f@bsJ zt+B_i@H$Rpv6VL-gb%x9h9eP4Mzo*FQE~;3r{TE6UYfDm%7J8#tPD>1NKB7~WsA^x za@8-MP1b{h*L_^qFy&vvuD`zyyXx$(f8D$2SJ+P;j;<;Hl;PR^4qoba`AgZ&@?Og? zQFz0l^wDzmzA)kRPwEY1Xg9<!3Y=)ur(BckYdCDK9ZEizOWfcnpVou}e@!%+6%@^a zzfbX%`%N#pM^A;HL!geFg0w;T0l&giUrG59r!%bMY56Y>*~Vm$?;-y0efIeyP8p}a zVI4%Gd~}H1sJ*<8N~bLz9(cL3E2lVzp_w^0gSutL+LPLG@c4*MU0&OyZdDcz+#Nc~ zuAHrPM@Cjah2R?*DAn|w|GEJt6Bp`pp_TBf%$P-zX9MQlTVhT3C`ct8ng{pT+*8Jp z6_HX@4gBu@*d~0_IFqnwZNMj+VbK5G$DeNA)Y<*Ox2i|uz)mUWlhD8FP43X|p=Yb; z%>F8G162)}y>Hg`SsmNk4w?J(r`}&(TIcKBH8}zpzv+#w1D*eJ*XlsB<RC0^GTY16 zx#Ax!D0p?d(k5yXs!O<f9~vyaY~wk4$ml9w=SI4@9|fU`I$ZONCDLB9xOIuY()jud z?DfM;53ceQbjfq*Kg23D%_+m-CnV&7_xa$B)kn@hankTz>7TNl!LlFM0aP!ttFNNr zeZ0Dl_qzU#;jQhWQ?pm`G`4B(vTw~s7QT1ElGW0(1L^~3HlH5qP_Ltw{L%xHduCW| zMKK{HUi+w{>mWX3MT`k~)H(Jho4fK(=bHoO>!G1TAoW447%cmE%kOkBVdIHy|EvG< zu6L8ylYZ7pS?xLe!0vl?#|*o+Ff9$T&SaBR>l5gDUwlZiqJZM(J0xKGfch)!{FmUe z5bM`P16u&mViQLZYwDrc%GP#(g_ic9k3Mv)c#~S#i)X@p_!tJ>?zCSmr7|cpA3AJ) zecc|S1AGAJ6>lkJFz1XXl@~o-;p($G4Venl)FE~P0E_L}N%_9S70bP7)dV%eYwzht zor3;8piM;3Vc?ufvwfsdz-S_a7}(%M&IIgv6?xNW6lY6Xo#khB_H<s%{xTpBEmwZW zc*LA@3iH{}??k{)?H`twlh4t6AB=U92}tFiJ;NmA2%t{yXEVB$uW@mWz~xn6=IyGa z;?$`so%QsU?^QuMI1DX^Ox;lfq4#d8iXuP^_~2EJy81|?KI>GK1#Rt}I!j)hEd6lv zhd(w`kWqfsUX14%Gt0C;Xh}%~NsqR$^4Y9NLXYz6=vE^_5()aPxU$XZtxTQP30r%# zdJG3O1E;hSgHlF!maI|Abzs5ivn1j$uWV+A39!8eMjwqrX;jPxr-{R94(p1jr0DLQ zaq!^;Z&XL49q$}iW(m}k7xKz8+}X`ej~o5erE<^~4#8r$m8mniPB+?wj|R3@qa`~v z9_ZeMr%1>st3RdDnbWX@LitZ4KI7j=Fs`oyUg8<C>WYVS2gJ!`jq@5~Bnju^bX3Q1 zEI}~BG2(5>MvWGST^-Q51barKJxkYpF2Io^L};{^Y@)*&!{TO~qJ30YK6!mk*<p`1 zr9XoZ$kDwJG!3t<%#eq^iIaEqtuE5_jAk3jFP?#Mopj1VOJax)M_%RxNb3(Fx>m37 z9bJXVNRcK;<-3$U=dOG4!r-E;U8UV1LJyTZ5a=h}vdC84?$Py9j9<kRv^*<vG`Zkk zc+pGmM*j1xKJL&3-_i2qkp^zx@E(fANxiQnU3uLNrr+zON?^G5`>SU_hC}gJ_?MLX zL67NAiOxL^oVw$;F!?9jqg?<a0*BT`2G>yao7oyqIqCGxEWrle%9lBA0Mc^RmT$d$ zar6CmuWs)9y#C=g9YXc~=BM_8ef{)fGMv-fAxmFBzpDcpQx)E2CTSGxk!{sLN3<e} zth`e<16{`+o*8nu%6$2#noqb3zRJQi$w^pUEB4A)whRwuGGs@CY=iPLAeZMNhG)Rz zZB*;GwkXFwB9uN|+vshxB!%g$er^`~OTQdgoixtPlXUOJLo>RyJ&!Hntxen@TzMX8 z3vx`omdH%j6OKGt8h&K9CqfyV&n;ohP|n6!tg`A?p{LpVX;OB{;WI}0$Med4XnW4i z5-9Gr`h9iEu_ZX=P$N!D4OL+sR@J_|&&~Q6NcBoP&ahderxA&Rm6CTz;pdy@<4bjZ z^QLyzIDN9xtb@+~Cj*7Gy#@oUklFG>G(g92RRaTz2COV$a|j+k;kFZ)zXs!Rj^m5k zv0bx0^m*teE9Bvf;Lp~C6WPI|s}3AlKQ`^i_*MQ(S-Pw2Uw?&N^ZF%cuB!}P<Imte zojRW-x_m{MU0@y<!)jqyc-n7m!nNIuSjB^N$y+_Z);^VRaM1POQ6m4v3sZNl4QqNe zSZvSAFC84D2WK5Ae80%cZ0tpzw8!w<U??>3Lj5aeb5T<ec%oar2mWb8`AypT0zX?l zmi$^mtn(Rwm8Biz;_4`nvH3jdjJ9HX{=$z>^k5*Ya<>v9y;$ACcV|6FkG;Xv@z$xc z<%N$yFWB{iFLex7c(~BP06cnawkS9{R0(8x!q11DzQhwRbXteKFxQq!uKYS5=>wQ9 zgW#o3lo2#qfDvz>WHU&kKlF#AYyMVYXt;1REB($J3173O*K31O!FApXAM{On^nopj z1#n#Fu!qT5w1qD_O{T8(bh@<gy9S;dLPd8B-oMRXrq2$adzW8f4?Z04+TQn}SKOHO zeH4An<gT#lWn#twk}kB|<VnA9Ljz$xeeD-dw$db8x~^@DG;l^k_rg_bR4MJD_#lp^ zCYQ*TJl8VRkw0^aJHPbFCCpXweeqEi)iW4A*K5zgn%`Z%*_LZ$zd??-@w|4)Om3@r zH;dZX+s*Up_cGJ;I{SHFn`iLvK0UsrkC33_{Y}1tg&tImoNq9%I_ubFM#U;@X;47@ z+Bv>5EiJ!`7g@swQGCLo4}5gKk^f643p#+%>BoFoEx_{zH=md9nKmSaM*}stWcX1t zwq|H`FxS>acl0FZb(xZlCd%3?@G-yo?o($f)Sl}LY2dXrZ1$Z*kOmK4>BZ9~5N*rL zYtuCPzQAWg;(0W{54J@J+27Lb?1Pm&%-#G#_u)eiD{*|Gv-l4N`p{{UiO1JGGE~Gj z8a}P=cdaJUKir#G$}9h0U$+y?a0<O+$U@Ml>)wHuaxf}mXgLY(1UH7S@!|BtIwV!h zo!10R@PkKq&6sVOVl%il55KQsJDC?#A|e7*#SueU@_aN3IHHy}#j~GD<B0H)X3UT) zOEUsca!UfhvDf2yBUF}BJ&(Z8quhihxX&Zpr=Hh|E`7j)RlO22f;tf)SUs=K2wh$A zURn%wI~tS@8~YgzFial%nC3JTfeCVj#^@sPmIcXKc}8gD8Dpz2<?!)-EA-p}4P~~E z3Gdc`1ra^}=}$l2{QTpeZ+@3^`M3Y#w~c<Zn!j>vG+$l93*7Cs$#~mK#!(%+@R9Qn zk2GYI1ML~LonXkxRcUmYuofR4aGMYnX5WUT4T0K7kmNHK)t}?6b8Z=wMuO8!k)O3^ zY)!$OMax2>&xAZD>sn^&yQR$W+FleFdNWcxF*U_43u&#MV%4_*$`gL)@Ft=W-!cm0 zQgqnpFPfJ_$5kWA0oZ^Bg)4jxW{|;Wm^9q$RF<#p$fJQlpv`ES1uD(>7`({_LgMFn zN{0f}wN5Mol|f!*DWmT`<aV_fZ9l{(It7ORHQ&)@yi}X$D~?PZBXOJ^9eerc$gX&! zEHrbCZ~dMIptxw&)5SmqH$I+5B&nFNRSsOMlSlI5!x^9M4aejN@MJ-Kl%e>Nc_<8A zrkkF)KlBL6!J6$^CD9@H5q<cTmy@|hG~TaX2dL6YDt$$ucNaax={@x|TJ=k})awlD zT+)ia=5-&e3!7H9=dx9AaKQfMf<C;W!ooMO0Y(XZz**VV|JMyNa)1Nvljgt%`C7Jn zy7cSo8h8B_=YF)j1fHJ&UogGmGTB&qx_az3I{HX^_>o@43v{Am#wv=5oyT^c4omhp zM+w}pt`ar64KlvSS+b1lyAC?}yTALpn-{NNZtyV0->jtfpR=o9zO)ZDJD}6EWoeU! z%FHNe4`w&XSmhqvQR)|(!uL22&1~o>WVa{c<&kpV1;`6`apY<Zd-1~P3hc=pk@;ep zGP%6c?(DxkJUnd>n;)Hm$tizS`%=#|TDh-nN_ReYK;Wl7ANxGKZA(cuRzr)fRyBRC zz5DRRK~zp#u3T+tPOhcO4pxjPjjHPyR7P<}I3US!V#{<`!=ZmRhy6k&`nXe;OXq+< z&dz7cC#!hhbyl;f>~<g1zF*s0_hAPXawL0qV!UhUyS&k}+0!R?FN0dUSY35K9enbn z*<bBDhuu4VpWa8b_g;@uJ<H4Spi__1*A0Gzufb8B@9hVsBf*;;xx{UDEN_j2#L3|} zTNZCm@HwL+yC0)CVP54FgTkvSRL<1_MjLxEH>egIJfBVK*M;^+PO<KUE#eX<Ui!&? z_t)#1?;3v%9}HmF#{N8igX<nYW|x$mOr6$E;-w!8$`6%NPR~?oHYa|`!Ip3;18~~8 z3toep+>FlfX0P#{K?|Vx*`vNrTb90|$!sgRIv4%&NuYv}50G4~lNNH*$uONw7`$-Q zxg@9Ir*o?PH#>{Z8%??RLpx2sG<d_vg6$;VkeT!Dz0#KJ@BPvl76Z~|jMiC(9oY#N z`$akNW~CmoGas7C1kyG%_55s-qN<qG@Hvz{a)+uM?@gFMLtT=e*}luDkbC-tZ^vFo zkMJH3qRG2-)gC}6%&vVx=IDLuMdsVjT7DfudgYW?Z9X~0kNH$Rd&l&Ap6+LVq8EP5 zcZoje2{)bH=WJiPa%gChMwyRqUbS-3_J_B1JRCk0)%KoM1M&9F^4ZM1ksE$9S+cFK zs;A@U;HoE0OVT}Z_2$jb!}}`lZ(4csqz?5Dzy0ma$3OhofaKf!vxg>idsStJyn3JR zo0c`BzooM}!f0hl^y-qeVJrOabu^WG>X>dohHYNiMRbkk0i$VfASY)v0v^Pz=(nwL z#T(2-0~gtz{V0z%zQ@t%&}m6Z3+7NMO=0N)zPK;TXrj#FkbrFvBC(@Kct0XeX29cR z)v-(l4Cp;i_F7lcY;Jvq629vBb#X6~{b%8*KVcw7UBawCl9%iO8?O9weBR-u(Qlo) z;TT;}qxh?@-2Cf0&(D&F=Y7Dpx4jw2oBR4wFS6&}e_K?xve{5po^Mw^^nRwJOSjM{ z`Fdyu@k{cI24*=8lG?WpKmU{6bd!I~mOeCyH9stz(06`+wA9WZB0jHTMS^jaY3H-h zEj$}-wQtq+t2Sp8k+&T2m41@fy`2P}VKrL`r6!9Md<Ha&DNHAqA3s{gFS@o<oQo4? z|1{siOs>NlpJ_{`Yh~{_wEo$(8C}pJx8tT~Jyp2O8Id!hb}F?}k|e|se;a}K8X-nB z$L3iL=S{C8*i76A6M-8YxO?)lk?jcEGB2l(eXyq~VkbLokk3%ni?G&wox}-G%V#o} z*0oCqZ+2x4LH9Z*4>}x-`UEKfsPblocCs_e89aNnysP(RBV8Y!CU~Ek;f)G9Fa%{I z1qfQ_aLcS??vw*H`)pY?=LOkTAHRnYl=LuG(qr7n#<JqwS$CAIq}&9jj08eQB$ij+ zq-gMfcdhJxbwW7WE)HSXtPFg*ZS<RvII;3W2L=RX!v4A$6;246a*!A)aF`i_{JutL z&neH@Cl}OkA^6wP6Yv=Z%eyVf$$y$aZR9jw99e)3{%4FQT!-e$;ec>%)b@F6<)hH> zMnU^q9vm(f+>%}RjbK5Ga7Km*z4FJ`2{-)6VjndvF5O%jCzxum8I|D-Z+X>ccr`kg z(+w|69yBs!Z}((CT6qovgA=Dh0z&SN;j%28LK}3Lu`XsEUHmI;HBO;RQ=<(U8Hk`$ z^1iCKD&kUnx!|X4Mv6aoZIn10_VA7O{i31#bZxUctA239rO4$w^$zf*9!DMz!4mNk zj)1#GA5}Yob<I0ef_Y|N&^er?F~e2(mN`QuIKx{lS6*rQoz9Y@DyshEiLQb(60HFP zuMc>|LkWK1sLPD27An3ijQ+wOjQyRorBLMZFrvHl8(iQ8z)>19BT$^Mb#^5wowS=p z>{<CT#PS2&v-o~od%U2dya6w8cos`0R`w;wXj4Ks2v?r_>*anQ0hjP={L)|Y9he8k zRqkY2cwZ;%m-tiesk{4Y{EF$BjXGgT79L0wa%*64Yk;E@r-021@BT}hOp^WnGS!=n zxXa;W8=t3N-@U%S`Q7h-8^NFSYKji;d)6U&!F#aEU=_^HdJV?pqmT#<)}w^K(he@y z`W!`{d`$Kd6mrSwoXx0=D?iD_Y=4fLjuIO-e6xA3+Tk>)RKiupbI#jrbOL&2!_u#! zq)UO5;WMyHwx*oybb9UZyv^d;Zj)oIll%VXoWweQTe4i|^+gS=(RG6TrSK2$n)z%d z`>XwQwJ&J6)A1|&>_N07uyWODPQMn3Lk@%)nq%KMBos>c<d{9^!$HAAoshlShYr+< zMW^X%`7LR-Bza3dOMh#Ln)le&k=^_2pI9aw&UsO0n?Hxk*-jA6Dr5FAdLC!f?41G0 z?0xI`IC?u+t5^MP#_ely5f`mDdskbOkkpQ4Pr}`b8YfGCx@oC*cJFBpy6rcQOGgGz zy~CX%mJc_TyH0VuIs8@k%9cJJt3O-sa{ue!JzT=CvOk#*A2_=Ib)M_9xXDX-2OHfl z`U0k~<@Z3jcOCt5dj{xEc%TH#rk6sKddh^W`~Jw@X6Q-`Hu;{7EDau<fpFz^Pr}Oz zSM8iOLbzvgJ)flfA)Mq^K)(si^aPwe^9fcT4x}0Q2A?D9aIufP6&M@iN#@>l5TqjU z0u3JHSLHce%B((~Jk7V#=6{IE+oPSn@IP#Eunc&6ag#4wkwSEJJDurf6O)N`8isq$ zJ=pnc>ZLrsr3$kF<9Ik7Z!Eh}8;SFq9Zf~n_Ep_&ja!F|mvlO+=)?CiaHoCUU~TxA z1mIH|NHW@RobAK^P#UglkICP`pmNYNO`U!k2*Q&-U2vx7bQc@o&Yi%sttKh$GxSP_ z#!qnAhV0xr&hf%4wqA7-@}oMpZ|f{=)md~l6NX>2b=6}Ul97AfnKaMi%ZCqr+CHId zooF(|=ey|@VYV}%j}Pjy0k6LcUPwBH`Aw@dp4i(+{=!M;#bKM4O`}WM((%eJell8> zCV%Q)<<O%P1hC&idRA>6k?Zqr`dVie9`v|!;1o(?u1UWAf;-S+iw17GcL^7Uj_5x< zDd5l*wEn~mt&47jYb{CP!OiB*Z;*yuWjiewewMv8YkL>tUWTJ3%CGey;+fwKW(Fq? zk8jFxV4BzS@D)wYIFxsXj*_)Yy~wInZ1_f&$A{uFg>`D1neATZ`f25o+h@_<im4Yb z95j~fwpsYD`^PWSrNZA=j=sR%?R|0_uYdaa=G~uvN-vK*>tNFB+t2m88vL*VLw(U_ z1Bu<QE!Fl+24PxV421TthU#(-f(u4<*|wUTx~C0rKYw`Ij-BMTx*9AgL%3(}%l|w+ zyr{i-+h+$9m)D@{cwGI+$K*_j;i#;s%lH?iiVu^~p{8K6W*M~YIKzj`r2qVn`=;L= zg!nu|^1>Sg3X7fp>`Eh!W1!%58cJd&Y@;|a_lT;lSp{VfnAZswq;w<#N+7F#2SLS< zh+{OEsDEyhi6?Pu&krJ$$E$vJ>eu!I)Jbc7z>aWFSQ^ufQSatxdAFdYsuVWKtnQWF zJ;k78UWnXNQ87P9$}42HAF`?VuZ?Or1(XcqDNhfb=CnIFIOT7|%wQMR@|76nti z4-L#jauRf)s$~K}<kXj#3L(^`soVmqID85Xw;9Sp&vKg@fjWx}>!QMAIeMM}iRn8S z3jV>n8cPbpsH@)*%IKR#P!A4`_Z3Ua`6L*`;ipF69{tlFH+uBy^>-VUb2tIRs8&WC zbq+C~1D6>rG+rcpmOiV$8DyurP4Tsu!8IyW&PEV8U(u-aM%+(y{0@G4zYnKr)G5yz z+{&~M%PWM?D_sgq3j8FVEYBHD-rz#zpT-1*&IKpe)u}LAjuQpU@zH458>I8P8RrQ; zKAe1sWwks;(x{sgM#<=CF=uwH3zwiqQ?#%&f&=Q>EM#S=_ZqK@JaF>h<TVKBsn#?6 zp|;u6I^WQo^1=nLQugt)M@vZTo4~h#S5ov0X0;f7;fFiwY0!qZPV>}p%WjmD?2=E{ zjDC4%P6Nj=Jg^~G;*)4UBdPe^D7*CG292R2c||TiT4)TGMuKhvsnk`ggtWk4tSCa7 zKEYt12*Em{g4wu*O9FcFjIeARjKVlfCvW)%hm40q^bkRNG)~Lgue#y&s@Si3PcMpc zZIrl3_(9D_e$I|0%J6sS*K-LD&ko(ltP2h<&uh%V5x25WnkBe=U7}XTf)v&jdVR^e z$MZE<zl43ud&yG~%acj^mfk&ibB#{YBnx{jTydu!U>>>LNUJ2t_h?`EY{$2<Ph&Xy zRe{^j7B4ny6ujBm7>o^f1|zc*Mo>397i|nG{`R|<TUGL;Lyy>BOPx3v-V6JcO-~uk z;wYaTVoNzp%1{%lLJX2_g;4wvmlv`R+t2ysZ<)<~5}%TU=>;BapbByk*f|C|c?RVq zA<R0+*N(2iSB}P{DMuYGCj*x-r@Ws1{U`rJv$2Htwog=R8CV^)w?E%}`0-CI-|cXz z?CwJ!OO~I6!%ip;2LrQD-n_fHtyA0v++a4SoBc5`Nrxwc;b?Cm{B?B6hrO>`mKaue zJbM(}uiCbH9$V^9&b1-oZaLf8t`S~loD0Vfhh2TG4Kzb*iTPcQ@7HV`K0I$A+N(!6 zzRo@P*pec4%d+OD4S+g?gd@H3;&l%RL30RJRaqKVyw{g(kRaYX<_|=luLk)l>vNqO zw)t*7;czgpSUdly0p?Hfd)pHpdB5-d97c|%@+_m(Mp(HtnN@E1?=SqSVRa^-6~a{X zG2?(v)5n4--Bre~zte9t7Jd1>hIzhzmY}b}x;%V?5%;|+gKnL3C=_<F4Z)Cy?ndU| zB`f4CJkLOQ@){2fRFcKnGv%_R^7$hI<(WR9LuF}e=>~n1)a!P@WRKKFnd0fSG;{=h z+Pay?V*Py`-VQ99)|9_G_`n6<@{v62ENY|1+h%6X%s&+O*>ZH1iywF%y8AqQc$;t5 zUVTVx)fC;-wpX8EnWgoyv{`loWI7gB(t%^<>67KMJ>P~fJy*9UIg>APqP2HUAbv<k z)+t1*rAf{XJCp5h2;J(9Hu#gRs3SR?OL**ebw{u2e95|Jaq3Jj_&VcFFyV{$+k1Sa zb-IPVvr~~_C&haXqV}8Z;?Se_{J;1>P%~NC=KLmgcZzblfnSr`^74Dp^ov=za53X* zFu}Gw+ZsL_Oqfkff3g{D0=}|y_Tz80Rrd_Siw2G!%zkI5wo;<9(VG8ZmDv08mT5l7 zmq#D#AV2SHh0ix{|0&y)ul;kYQnoT6)GcL22wM|)7wU<=%B6g0b@kDX+(lWuFAZAz zOn(Y<@ed0aK7LP{=tGaE_$6W+<I(lf<{ALFhDa-3US(Iaij1!!gjGgA#NmXm?7}jF z-|&%MTSO-<&&@}-B@UK}Xdil5IsIBbe4p+8F5CEBe7a9g@5;*t@;muGc(!(HcppmH zGO|6W@bDKrwyOe%$Mn50aGbB>J?GD&$+POJPomR%mkylHZTXwQe{x?Zyw7*PyTAGE zzxd(i{`*(Sf|e}%(7f}zpWog5<A3>YdkyJBdu|1<?=cxGfB5gb9Xt%zO;ClytVr7e z=Ih%FUz@-te{FggTeJ;)3wD=}Y*y9)wVC3t$-DjYwvDn^^6Eo;Nf-D4&ufF875^x? zNB_rgK(zk(Qh^VF9twy<$z?tO9*38B{un%MYbE!`z_KOUBy{VwS<&#jm(Oorze<+x zJ1eB^FP|z~F@JsCGL|#oiwOaUq*Rp^4gtl)i-16~kQiK83AXg2{2P^#JcG>Gy?9~d zZ>yaWrW7fvVfyWzr5Vi<kD-L6*T?jrs-~Wu2pNeh-|^?i_|0ZSkmxwvhGwt``wk_F zF?aXnYj^dZe(s3$oD4^Jzw9Krt#QvtJ#V>26A$fEFyf-K5$x({WA`JSvj|y@!y;yA zWGl}ykvY5*2&KmC6<$F1cw{iZh~-gw3WFvIx>2?MHmi$q<=Ap?M2(gjL257syxgD0 z5zABX>uj2$dM0FOZ{(aYHJapTa19)$T5e(#_1*iAH?P0{KKj47dFJ!@MGelx4=M5h z06+jqL_t)CMpkN2GN7Eul0-+HuV@&5hi~QRgfWbvSBVV<^sHW2XF#KX&jb*z49sR! zOY1PEg4SRkXR$^r#3+dH$x;<Kau(hRD5Z#{E0f^~bobR2Ju@UO2A|`DPCnpq4kvG= z-Ci&GQu<3F!_O&n>R=f*qrAGvSA7OrIiqWt3(zS$G&%Sfah`Hko;>0T2w%7`loxqP zD9<SUX~d3#mX>0w$K(MW(GH!Gz3>5xf|%ukiF}*@^@g`-5^{by0?DR_Vo&1*vM?0H zH<Cww`@O(6U;=Oaa}9R&L1z~p!a@B`zMx;}0w=f(f%2E<z(OB*l(q6;yYfmR?aG4t zNdmLMhe5Rs24_aj{w}a5Q+hzlk8V=?Ilp_DjtomAxWK>UISJ0UxbB8azgrow=T+h8 zb8ywz|0(m}Vpd`}!RvAznqN@5ptIbUx}qU8&u1lH;GQ2~2JRP-=lK$TE$aHaVz1@& zi@WE-YwS89-|$MVRyKNG@Q_ZtkEMQ!exD6+w!yYFfEyT&k`)hgPK4EfaTKrm#!EZ0 zk<_PywI8$5xUePt3BG;0zy0m^EnWWGoA18=;pStVrS}>>P7567WW<LWMWQNicl#To z2$ma2Lj0lw+7Zi%Hw%<}Zm^Tw1Vp`vu4{U}Jf$Cu;AIC_LI{&NM4Y_{r&FJ+T!TQ) zOHbdmUBNN{xkINK1l2Bt{LLqAN(Ui+{Q1wFqTDMvY;e+XZFcujznk&Btz#dZ96I%> zjxZ;^4N&o=`UU$*Z32085EQ4*7$Tm0sBCCjBCXv(k?C%9S!cI%D>1BG7bjq3Dz?Ew z&RRCa(sD~Lz4q@AA{VGUTke_eu=5<0{kf;0nIZc%=R}m&$=I6pj|Ks9>YOrq+S~%W z5BO={laUQjv4bVpEKhcNZ5kR^UxRU<TD|olbhOJ)>-gRU<4Ml-gI69Umv?@1q@&Or zrY0V$Pwi=KYT1Gvj=|cYLWQ8q?&JUXS^K<>Rq3ueS(06o5%N<0s~tH`X)wFQU$5)E zUunMO35gA$fe((qe)~FE2Rpm3txx#m_eT!dJ$9P0m1hI6J&Jc}Ne258g14@d_F_k+ zRmNm6pQ4fDl@-tLntd~v%|T57MsuCV<0l*kajk3l3q5iiF4}st``eO`?kaDcmS%3r zqU{Ff05aZCdp_eeTe&Sm>EXlII<Lw14uCTFQT)g9(35N3qvGW1W1Zogzm?U2>o=e4 z6>o5IB;?Oj26^{e*_>r{)t;{E=>?pUiqTewC=^O_=)X=*GG&=HXB*A=3n7zSS!vh- zojTKM5N~Xu`qV5bAp09%keHu>78D{MCAp!e_7AT;Cr4;d+?t^v!Vk<+59je4pYT39 zPmWeHosGK}yoDQp;_s{-%nzbJ^ntHvR{XryC_SuRK!QDgC^+;;z54G$D1MrU^uKR! zI$;CG3mxhPCv{df8yv8$>@a|lOq(Hm`LgXM+2%j~^yiy*fBd6LO{U;E=x7w&Q`brq zuHFk*|LcW5SLx<Ek3a|Sl8he8?;{gA*g#cyY<mmuyRb7MP?_ZiV;$Sl&qr9Tlo4#@ zmsh&|;n`JB!4@AykbbL^!eKaH;YORCaNb!9c$$Q*%cxtQ1WgC-lciV95`Nd@-K%Vq z8P_eGPfn8f+2U>g(=c`=%3HN!@9YL(!+}7o9+eB3ZMi6(9a|^2c-tv;vOUwcO*+-N z&fMx7XFtRJMf-w(_wwfZzx&<Izxcb~-@NQC2ag)C{Pgj0uart3lcW2Ozqz^p&?=(z z=2KzXLG29NbZa29!A3qDRIWN?AZBkDV7L1m8WmRIN0rhGw2dxoEjZ|U;3l{8<Fn)S z(6^8O0(+})r_V>%_^I=oYgbaWb>??AOf*7!dCwpr+zx-^;ySs=2v7Y(?V^Uupto}X z475ED(cje9dwK65MT4uST`l2XT$X}Q5LIEUDS()p?U}&#OrTH*+AAw&P3S?5X#}sY z+VfJB)Xd}a_HYrxk8c|V&L|S{rD~zMrBizWa-+Q;YFKpu%owPQvCMY~jgBq@d)_-+ z*}=8EV~1UZ#76oEvYCeV9(jTA)0R=a*Xc7GoFU&STo{yKKkpr^uV0we&4|HS_(My8 zr(_95uw5G=nj&Bh+7y@&p3$mmKwygy%$azU<A7dYQW^${A<`fvYK{EG)vk4N<M2vQ z5sV)-ikuT-AOLJpVw8;!ht5-IWe$G0Vm3n-9EOww`ynCsp4<1`ziJut_dop5XvgcD z`#QWF)sOEQ$q(PV%KNyHm@wq1arA<rE-rl4Y1U9*XAj{$=VBZ^e8?h>4o^5*g>#Np zD+G%MPcx)Or+SzIZL}G^st19!tYr=zc_SMaIrDoyHJ&we8~x<e1pRT#;@81O$;d@v z&vJ_L1Y=GYnYhR#c?HYm_sqKDUH6wT_1f|L;d2@(spCgws*!&kppCL)QRNt6ujt}R zk+V10HTc3Yk)h?tz|ks+>B=6D94iOzs~aVUPqbPd>1)*SpZ+Ljpw8D|3Y!>(%V=KQ zs;S)YwTuRS!q!NZ-ZdR8BSVHWE@`Dx8lc0iCvvP_XYZMm0q%+v<Dmf|A*C!`fw4q= z<dHX<z1YF%4$UW1rJFrj898afrG#+6=L}&lkbO1-fexPYg1+XBGkowpG)5)QUF9E^ z>B*K~7nC{)p4`BNH?PFg&=u!N_$t#=G?ig^%h=^!5}!-Z?(uoH;8G{`TAINJyFB|k z`K~a)1m~oO%PH>~UiN7Dmw8U7x`^dH>Cq0MuMO8lg_p*cWptbe4x_TcaQ#w;${xaG zqEB|<;0Q8X#x|s<Ee+bz*6Mlofaky#=CtL1^*{gXo8SLWf7{BO7aeMnGf6kfvlD=$ z0KMUiI`-d63A*5#Gth5sWvTibp<)l`SGi=nUpi$~1G{(-_lsuPKElp^p?3}&qS-gP zS8^oRM(Z1KTX{1HJ%`#ET}H|R*%+PK$NjDwUYU>ELSc~1{=kP0*81@0Kiz!#vjeBz z+}zf-fcrVyX*M_Go6b~6&T<eqsvPW(4c2;BG`u<Q_@G?~{Hbe%-hn<BdZ_d1bS7&T zK9M^PI(;>$8N%gP|LpTT5e_=p>^UddyD`5F)YkrucI<R?dD0+q*&|o<st!nlm)a)n z)YDE`b{eNySsj>G$Hj+c7}v4U9Yy}?5&=1>XMo`FaxxSw<*-NE8!pUbsin!@i~Az} zTORqKlU679&XVQQ%_c{K*^_Wl1}i$Jj7|z0AoV2cRiocgBObdsw&UPOzGhc1LXJMy z_9bY$gk7(z?)`O`_(}{vZJ~0M-|y^Hk-^`<;P@8}=}&)WAhJBkELy-_Hun7taKj(k zr>?6<umx@a2|RV`napsC!6XOvVRGhn088|nOc_uC1n=T4M^R_Q39{Pg?UhfL!P(N{ ze!VYM2SYx~-pM6$-Q_tVshM5-Wrvn_AXwMKnbz4BQFgk^*V=1tdU%#2Odsj+v>}+v zwbWUiV??kZ)~${tSsY%46@Hfe78Ww<zjHS5yu5USKH<r(WKFo)NGl=En>#wF^C$aR zTisFpY~OMz6a6f=mdEmZt4xlZs6)CL{l>5I(SNjsp97rGhR*E@RTxZ11Evk&zdlOI z2Nz+woEfv#7r|q5)O!0`SN%&Js{0NFOLo*u%cQ+C;6>xs3B2IW-mz=!gibiqw`JRS znC@%Q*%~^wbm3I38=MF-9g1FN8$aaRd97D{+?!Xw`95Fqb*lp3+`Ree$Jx)v`R8cN zZ@>qC1Yn)V5h7C1^UBixqUUNCo&@UT*&UXq1*>`KO4z^p4W?{eRNS{MZETWDTDKdJ z$;Z-&&ZhzcI{hifJ#)x3@(azTYcopTeY5~f92n)Xazf|G5?g-r;1m`4C-+wGI8FO5 zp1myL>jofRB`5dgd4|8y4+?zc2Xev|phIQRqYoVt+eBvNSHsGJBfN%Nl)xiCFWt9Q z)3SXtx~X*jaL?(_eeLQKGj#dSW^*6eCeoIZM=e>teciT`mn~IJ_aFD3<R_)a>w7X* zJ}W1zka+Wtf9ie8$$EyARNdA``r1kdQpFaMmm=0*)2FghbM%c$EEnH=9rTRI@fk}T zLkt>dbJeesk#@7-==m|ifb~8az5m#&;~JRTpiQ#O#(!yoli9$EZC_MAJc1I5Rvwx1 zN8aFvKO=ZJS7bP_ai1E5%~sW>+||Ze-hE#u*J>s<!YfDLXA}PVs#6|>L77bKcFc*H z!%VrSlod+RD5aVYsojebR>PbkVd&oB7el^0kJODOocEt)+|<FY>Xy1O{FZ!t3VCMc zE-M?I>Nus836Gh=kHJ&fIboH+cp&)o;0#mfwv?iSgEpK3ifQsN{2QqVBXznHUkAL0 zrq!EGuEY1{QL`PaM(Nd4qk;$+O;E}58rCr*<`$;P%G*-7Zs4<JITNDe6lksOg^~Vi z!Z_aHG^)w(1IWrdWuJiZMSJwrNFE1Ix)M{i{ZY8;SJ)XDA*hE|UwSv%PdQp|aysn^ z{Y{--PN;zg`$Il=fXRpI{jP%u975pqJ&n0W3vQbQYhM{7=49kKw$<ZwD$s%v#FNT| zXZVnXb?V{UA5?uE+7Z|C^kBKOW$|-}7$i!=NedQwtA8N6uRJ$hd&jV-VC>)=GzhnC zdM^p%4ZgyrL~tNu@T&|XR_A~eiiJ)!45hiw4v`PaZ#Kth*zUta2bQH677SVCs8)g+ zZ0W*Drwa|hr5CFU+{g};+?NHutHJq&F<9&Db~Abf5KI)+={N<4M`c3=z0vl_lRTw^ zT=7(Oa$A0s8bAmXPkxj$Ia*~746rn2_TXx4(E+l9Q^xVRXGH@!XR~zOe!Cc`jlc<6 z_LC1UhuQ_6dmnkx$;By9hOnXKH#~(YWqEpL3zZ`v5|qC$VVC+9bLe-HEKXQ}PJz4c zYlZtc;dldt%mW3!JW?!<TwKyfCdwt<`8xPa7EjcPUxJk<k8CT(eILA96}sPGMv=-} zTJeDN1*g?fX@y@eY0==CM}4koCmVxx(l{LE3|M5NlBq34i-;$0^2SS0W<S3k5II;M z`)R2VxJ2tLCCh#2+48vWzkhx6H+6Df^csuz4RV@Xfa@F#x{zI`8%gLsIIAjP&4KT3 z_AGd4VUPt;H^T}L{mp@(bYy@GYBYCW<60||-I2b$_5_#ZG^E`(D3;=9Z)B|8KwDz$ zFqv|#P6D5VV=aD0A;%#7ucgcu2D9gnZ+>d2^3ON#JM`~Mv$RigFyWmc>ABH!9o_KT zY}1qxs0JOQ`v!1(L80<%v4UL(L!+Nl4M*)6-p~i_&gvdLRJ$6E9^(_*M1kF>I#(JU zeb0G_dH&?n-oa<>huMJW#({rYfjX5u?yHRGjJUteQE-?C=i!TGW@x0mI?a3i7^fjT zQCsI>9ggH?&I{YCPM6<xaLVkEERNT0Qxcz>g?eh`)1_=}usz#kgWz$TEUhyeJ~=D@ z?A4eYB5>)W{VtQ5E@bT!xney1R~IyL`Q3AAue$Qr@z->-Cq1B<YdBEQuE7hWu)Zc= zbbl20EYECybZD?Z`ZKs-@S_3L$tXCWf!WOk$H5f5E8Gv07ri)1qq_iEpkT20^QYac z4YWGQN&xnjOvRkxrhV3Ftn%@#PG_v&3W)%PWgS_Ed!~)?UE6=oS80Vu)p@8B{GnH3 z9bT$a{LFvxzHE4T->SXb>m8&oW@9aR^%^lUZuu;Ia<I?ZVKUzH*Nnq#KmEa%!jNMH zj0SG2YcM{fgZQx(DGL)GSUNU*vKryC(_}AlEUnJ0lZJI-9nyri>%<42j9zJee&b&- zGEbv{bS46<Qn~UM4rKmxRH7B%wmfXrTE=j>9$3j2lzuW1y|zq~VeMast=`peA5T@H zdTE2~k2K4>H-f~S)7V#T3>`PaYjOD;!qmg(x}<Y*8)!xCL|lAQUUWYLLkA}qqlXnY zRse$itV3J9!o_RC$RFD4&`YO1nC&FuM>vOXl^^Y~Y;B9WkkjDpyDu~doD`FR(Yr8p zc7LU>M92O~i>?PYy3B`Idhm(^ybJxr4dw!ZxiY0u>WN$VJ(sjh;tZVVSQ;qO(WJ-G zD!~$NIl7s`yE=DfaJ@$8Rpq`2?<RGZZ}zZigk}14^hc-h8&9e)Kb(Xs_k8Gf2%-_1 z7Kc|lxI0m~)H>hmfcIr`?zSHAqiaX^bsgAO&6?h~N}=$dn>1{JQ45xn%g4{__`bUN zO{=NCt8IGec<7d?KQ@7tta^tpKUbN?X{-P-tB=2${>(-FHNNfPopxyQ+wU1z7vG-! zi|w8dSU&t=-`JVHr*8(B*U^j~iS#*$D;-zul2>LnpzyUD0*+HVSfN*EJUpYd4_8#* zX|w)lUD(PlA5uDi>o@JkeciHUGr2F@r>=SUxH3%q@frT|sx2a18MKfvDl9{A6Y@$M zr$SD}Dp+TZ<l3-&)>{)6LR5xem;u}?g-WCIN)fgkE{1rIpBG`j|J)L=MwD6zULh~4 zp(R_E!{jIphYU)i&!0Qg<l~p#n>zz3B0)rq5HvHuQE-^lmI|c2_E_oRTXJPI&Md~> z?N@!_?Qkz^>|bUOL$&2U2~_#M=G1I&Lb!6&7(R^bwmR*<@-V(~qlfS?FHtC!&S;U7 zzBC~-rezYok+gmpdq6EK8Lg!6{>=7f2;$smPx||3RJPou`<`adU^CdOdu7(BqV0!9 zT_FT6rvf*Os5qYf&ASgXYTtJ%^L>I~9s9FR)_Z18b9B7T0eKcr-aU76Xd}29(efIZ z)KK8LJ-km+7_{|HunkD`JNc*%B^l2tJ|n3Ss6q*78_{#P2&Kx2oBCHb%XLRfO|A}O z@iTtQT87fdh|)8B!RD~-S%Li{jiS)mCUt?zq8#$WPq}8MXW)9Aa)<krw7e9MQZt%5 z{#k+GaXP^vV^KYxOqq*T#$!ue!pF)5@bO(*jRM-qU+%$x+mR!%IQZr1qeH3lrV>~# znDN$0CR0v#G#D@gl3sbQt-7Nrmsz<L)P13a&4`wIsp6Yo2poffHeKk^b*(QDo0U<= z@ELC50AN6$zkpW$$d*u}WGh2n=&6$w{f=jd)z#xEU;N^rSvnOgZnJmY(g4@=2>rr; zG!l#^U3Be&^`(pxu8d37PkCfy;NW`du*bgSKljl(!0u-#feL4Jyy734lb1Ex-|pdf zK1Awz?{^|5Y_Kk6d4PWjz#duleA10RrCA*cSEg(F;kUTS>_XjFBd}z+#9!|P!PO<t z>QP$1*Nd#X#)C`XaOjI|(a1^9e#&(mgp<CY<QaX~wgVS94S3QXPQq$@bB<nj((--p zWpn__hitk5%sUNq=xuN(oyf{&x0C6dFLF;q@G&Uy`p_b=4Q3G%gd?3KI&{jcs!owv z8X0#&^6=+?#@!Nb7K?ml!|)lb&1wYLU|b$zX*)v#?~UG7A;qy*k6X%@ciuj^KH03V zW}31~k6Iz~`Ntn`9vTdM)U584ItP!!#Q{5(C7aRxba~b}-po|+;9@{cqpM@fQ8q#z zYTKu4rP5vl!6v9=`1aq2?XB)`t|2r4C3=p>s8u~&(LnpQ#<DWlYV`#RAI%!wzThm? zxvZTYuM0QB9@DZfr*r%i@o5SgRQBWQ6oS>;VNtaug)4hBs=eW4(<Ze1+=#vR*4rEG zjR;%HiWapKgz~ett}<;6a#ZLJ%&Nou`N@a&VAd|%!x<mIc+~kFx6MK+lfyqd%Fa;^ zOgffsI<@+t72HI2zcj+e_hqO`(ZO>#%nsuBHLPFPUq4I#i;j_@1K+Q|K=~e8D;B*y z@0-me*@ri?C1REaZpxST!oyOotSe5@Y<4Jkc)pY+-5D10_Gd4t!@G`**E&=u^ghn! zp;ADrZ>8WLB%3nGQyP!V(4G}&wSjmYT)Z*JaeR~N5HBA-{M-OeGLSCn0MXm0;r^uZ z)+sIxd^k36fk&?LXx*}g$pRfR7_B_*`(~bNi%(l0EOKS=zc{P*zO~KWvsrAEzwH%{ z8UbBe;W~KNj?T7jwa?sOOUSF~=!Yhol}^4mz3?@mqirQtYlAuF>3NDX8QBc4a!WTK zEF8(%m7e4viX9&VX_ImF;WXl9WY~wkpH>Hnt6#d)SO4y#S@-b4p3qxI-11?5Y$1U& zm=GPNpV7Ir#HMN#rc-oeNHoxMMM^Ivyz$c6C`m$cPzR~>Yk#wI6;nCc)IJ~D!}e3Q z?Me0<ZQ$)Jlg+FSL(+U~(*=v+JbfTs`0ls7J{u?{OH~SgrZ0UJR6cZ!MzAc;{M+zF zzoRSFa%rOsnu`lQxtaeXtj`c2AApWe@BqC}jD?C7Dq6LxzpgxN61KtK;<JRceFkge zRdMTZmX`<pI@tE){-%D>%RbM8`y!g^7=KDu_?rgij9VChz_+!3+N#Q^6^!1i>9_V3 zM#D+F8j`2C5WbbIT9ey!HWmasyc#6(Uh&)SS`G8N7dJ0{*X#TK<~KJ_zPs-gqLrr& zsuC|=wPg1<zq`3>ruU{ZA#U?e-~9JK+<eH_|NK_F$v&V?fa|n;Ztt!08^}q4(YU3) z=|NRmCv|=W+l`R%OMei8!?CZ`A^K^b5cRavq#3;<YCy?18kHi|s@~cSe2i8)x#KCH zGs4dXD!e=<;nvpSqj=_YkfW)$3zR?9Hc0XM#r-<Duj}N#PJX>!^^-bXV68tY`>(F_ zfYC9c0|^GJ%2mLAmJlKlDWfoh4S94*Aj(q8nA5ik)=F(zm<*U<i7bQm+*Es9wAtE7 zx8DDkUa^4CoFg-ylo33~tAA~;*XKr79&%(pM&K<A))=SNPfFx;-p2_9M{Q+uQ2N-L zVbk+N%tY)@5t9O$Ay6TsZZAyt8~uxk8vl*fMZ|cp{lcem5J86WR#`Oq3&lYf6)zv9 zyA6MW@lZN+salJl0o=W^<AdM|+UE2GWA!cEFCm*iRUTf<pitWIra)T;69ly1smax8 zC-sHsX#hH0B$_)gOj<_m&l$3JIUqKe8~ynH`!|jHe78Xd&ezjsc{QL9?VXxa8UHK; zGP;Q#&r%cv2HOYIFXQ-eGanh^(x@N7wbu(h(09LR0Dz9#ls>$xyY%D7eo;eb7hS4h zb>5x~3IL3+V4oS^OWrEKzvxmW)3wt%M_c7iK?5rdqHdJ7+b3V_ZJ}t@C%h)Bh`ska zF@nm!mRr{F2VaA*`f2p>wqo{GoyJSrSOu!pV1n&+9ErseTKZ>c@R_~B*W(0F!IiH* z)e~-v{^$euu60C%J-Hcf@IEvKN4aQ*erHzIy~+o3^gr+pOr(?<>?2>pp(ogLE><sb z3LjqJi9Ko1gG^p8_scgNx?kBRwvuNQL6iT2?&^4ju<&b~^n<<94+Y$g-~FoO<!AN1 z+*kArESMLPOLpo~Adr(uc*rQ>>ZH5__DaK3H|c)C7pS4N8#Fw5U~~Ndc`E7mWLEEM zK0&T4TrjSeG{1a?T+f48`h&B4oUQS%j90i|NPA81`Q&kT_^n}gfgz3qxTSK*GX3`v zeokSpyu=<)S4L&BdC)fys7^Y&oJ;Xe`+V6!RP3;U%TJZ%#MHr!8`lO;$L(>Q8Sb%m zlLN;-9(YNLy7gD8M68x9f#06Le!qNaR<*r;_Pu(?>+{Om;UT4a)C{gh)B#3T<QS1B z#%6#WvJ;f_pw4wd;((mTdzWn9!5a4RmX;mXHgNpc`D$Njl~Lig!MweB)ayB(G-&vk zml+MbGxz;ZKW%#qoj$g)!N$t0&}ezpkuv~mfbb#x=lr0D!%wt{n>B65)A<l<_>1#r zAlD4F``JSsmg=$DgXrX%{ft(btkH9Jqsnlow`aGgCzftDqxGb1D~?G16d#+cZJ$|> z%7_O#w;GAFti73@>afGG>^+XAWaV@Fz@8F{2#Z$wt(3s~(AmZ{GK?L<_p4pkc71G9 z=GW->wNsrRw>>CC;;@<WmX$@<(YwKt+q;$u-Wx1rN9#EF`+V9`5;FO&_&^ezZi1C9 zENXIF=q@rmS?yPzqX*qzY4$(R6B&Q4J8ZB^-s>+uxc(wt@e7}_6hFIn@}4#vE~NYD zZM7K8)kX3>C+~FYQq~G7j*O@#TR3iC%Agic92S<WeoBVK>69vaaL8t|rciCY&dp|+ zgJTtygQY$uy9WH>;Z;CKPvdFCH520?#`m@Dmg;km4^GFo;S<tBd;M)q*uF=&_Su0` z;h_V%RSJBEWT#@1&*~m*>DDO(v<S4>EPiY^v#gzV_~-@;icE{*T{;9VISdAyAg{Ww z{p-dOZmY1~S)!a{?-f_itRgHQf5sARE3uAW(LjNAF?uLxWwL9*yvuPWeaa0T1<YTC zx97=5G7gVz>q;g=uex1nS4HFvmQK^?QrfFLIMBxoy94K3c%~*`SxS6n1v5R-|HH}& z$8<ErtIMG)89-ly>rS=(6yNrm&h*Z}+RD!;c*k)dXG@=?zs|j}C1C?o)kS>_Ecx}? zqANW&7#WT_yo>bHpHAD6xW4~?w(fL0jvPzVwM0>*q?ocQEBo|1r|<vH`e#>FW<+Qp zHJtbP;HHSo)#h}%nE}|?Gd2c;slS?zJf$A~gyi^$w%H245m!2a-&M8y%yH@E@8sxt z_h5f=fpFl<7YB~H)2(IdpL6^(2p^odyn4zWjLJy=4!b;k)XV49d`v!Mv}Zg^vl8JU z=HBO<yw=C7gwEzuw^t0|SHu_$*vdDwg_pPj8FYh=Y1^Q<cihTf9dMeSRE9q%QoopZ z>B!pl$^p7Dk$gEHZF8l^pWeK9_qU&4{P;ir?ZxAN{G2O)S3DoZpQ_uy<wF|}wY2_Q za;|aeUiw!||3e+%&%fzk*%U7P0&YU{;8f-N>t83cS$2xsc-MD6B|Ns_+j__$Cof|3 zFGf$leY6R)@rbAI_(31{9{27kc^IJvW&5x3-FdtmpN`x%Xj=-M%OjNI@cObpGr2$3 zZvOmZuQqHSC>v4z&|@&#V#3&l#71`iFGnpYr%0J={1AFWSl+LVx*`I$3uK43%2Tco z)JsPMx47NrGL+3Q-RhcCnWO39VS=ec`1-z=#5ZsMlw)-md4JXOL7Z=tmE}Ie)GW59 zyx_#%9iF%QQo7MU%UU!47mo<5?vl2qek02{iZ#H|w2|lxdQLpS7^OD~V-qCCY$WWy z=eOt`GPaDiXM6=Ao608uL0ZDC_+$m&bxf#qusC<H9_nD1Wdb5ZZjW#%4Ta8Y5^Jy{ zCZ*~|UqA&M2R4T`=1+;H5-Y3xV1%f;DA{-%Zf6O1kWxM!_fILc*>*3Ura+TRGY>ZB z`u+VsUi`hKct8K}OSbW@QIJM+3y5q;qqA$<ZXGkh(wClqC*M6^m;5ve4}IS>>hkGR zOP@8G(X+rP=P*Yb9oJ0J^f;R7QxuMW*Z}4j-hCZ%_u}MX1+5CtTAXDe7a3+exAO(z zHwRO$@g<X=6C3RE&yn0<%3orY7&Yd!eK{o+ClBK2<N1iKYA8)G#i6;spgj0tkxa7? z!5F=(Je0_Czv@9-IMFMzp3`t|NpT_mZnnZO9-`?79MZ=#T3Nlfy67UsSF=;~C__ii zwd(M&o57!cj32@51}A*(l@@MgIoIXiQf2s|;Z}A!Rvvx~?xmjpGN?F4!Nq+D9ADrL zGOqg)PucNB=2d+C@Gx?m`*cG(UY@LEw^TWHY=k=BM2BRaY%2q-oPXrLAXG;%#+GiK z8OtMgq@eFAg=W0MQ$hU2uRo(etnidJ5i5Q>;BXzoB{&PLy8ss)bvmx|@4x5v?z?x< z?e{w0yYB$*z+=ZBd9Uk}fBw75)aQGARyd?{lWjKaNZmT<2L<dJClzqn?}E`T;b2si z?Tk<3TRv&(CUaZ)*U0?sZ-1+^TVq>3zF0NS1((|eKb-e`HNTb4zvReQ6^jiw=Xl%4 z0MT8e&7*%pDo?=7%DlG$l$pk!$<f*EaigJYfbzaUB^`i_C>aJnAN9HCXnS~eCc{Uu zuSWKYaGI_7+Kgs&de%zKw0f^fX|~I&@5~;*G+Lg|%wg_XR+~+IX@Jj8v(GJy{P5wo zXgu$%Gzh0WT;~&_V*?3%NYJ-`K%Qf-2nug2j6AnQnI0OFH<;zs3`Wj3aN9Fk%mRgU zNpQ*+So-)S!Z)ZIpZDxqWltv{@+}jsJy5q!{odpLSUXz)Wb;QI)^7z*&y^KOcPDy2 zo@W@z=e}3PH5k}rd`EID0QNj&Q{dqk>>85Kbzb+3yv8y<f9=s9fdz+WwUni)25|+G zI=SZ2zJ}B5_RsMCU;`6Lv)A#~W)_^?7o^byKHqXWKsLxt*XF0vK{gd93G=cGdt%@Z z1zO-8JjZ3f-_N^!^gGaW<78XDEAM3|e!*Xx{bzVpU4hENqc*_#@aYyOv-4wjCy=Gr z$uM|qa=%wT2%Nvljj9l&{lWBGnqV3E3*@DAQ<WvJjoP!P^dfxte!kB0gd5cFnK&Ie zRIiOP^V$H8POgEX&&~Mgz&_UIzcCOJ98uPDf%9Ud<r5rRHXM}X{FL4C2?p}5L=Xo! zyeiOO#r)3N*6itX15OoW4-T?{yH1?P+2|_b78Iu|>ll}BLF@|LSlzh+>D{OQ5x=+~ zY&D$@gJ(xG;t|-@`60XY+@6m9Q@AQWIfujspfRy?Hnp^_#foOE+3qGhl%d<{)}<qM z9B)dXGSt3-2K2@E`xG7Db}!m&6lJ9zdhunezLIIR&AvTLjHm2+o4t;%<QPk_X1r>k z2)xha>(hjdW#R^&@&NN6G{>F^1}b!D(LVp#wU!cp#lj}9Y)JaUPd_d;{CoQG+-l0b zZyUYo)~9d^#l?Ak=@p&Z04W?oOh*QPD8+2B`}1|~Rmfxm6{d@%f{?{&^5JLKc-Q50 zd)M7l-;PeCO`c$O$fGV_v1A-Lb#=X!E44SnC4Jh!U$}|);Q?|i9=v`I>}aBo@B>R; zzdE^Z(<RTQzl~q7)BT_FpFb8uH~!Wuh8j2tfw(%@%GfNbVbZRnEg9N_g&d&XX;SLi zN+Wf^w=!&KaelH~$F7W_RGQg#@oQxRX;4;Kozll*ZJYZ3)NJif|Nhg9H-EJORU0n# zNXh-DFuCh>qCNiE@L~4dprTcowJ)#X-XQ05D>c2{#%d^XSS(&ed=h-HYbz`07QFDi zoAgtE!1KRZNTVUqkY3`m0AIe-)}iUhoDFgf2HW;3JvMNIhgEdrb$tqV4U)3wYMP(3 z3Nw^ue{_0jRfS(C9-&XCeSM7npL-PZryqNEx(&L1sYCy+CCr=fsy#BZ{-syooz)N_ z@TcQ`dOF35s1PEkH9iT$EEnHGsW5>s1wcOXB6!b7b&pXn93?E9n&LC+j2i=<Vv2|8 z!8A2rJG=5afdY{rZbSoYQ{!K1_`Z5Akv%j7QU=Z`Q1u8_C>2o{*|~4}+V<QZ>~>iv z%<?R+P_Q!@oGsC@Ti^_^GLI<~<$hDyhrujQPKEZpPm!Kdexq<nqQCG92K-`7PVgoq z_hjjx<=I|%e%`Uwh;)@2L0V%}Ne*xh6)J#%Ryk+Mc-Lzvy9cK7(k@5g`i!P9DpnN^ ztG56zSQ=o<<nEioe~50zBS_TKWiap)P<`(C-H$oE$NPVz%-v5uUIp>CQ6M`xf~lc+ zv;jlfr}HZ)TxZy5ay+w^{&kM_%-A<lTp;+WMh33F916aX4}OoJ1%BszjiUxEyf+Yn zUO~(9DkR_Gi`4)OZ|n8ZoP3TFS646`^lVNgeAkG86%2f_EPb8E$_04zq3bl5bSOUe zt!b<NvcMr;ok54vGFT0khNKFIFWk<i7@=u(zyx;CKFf=PgZ>MzigGUN=rXoo&5;kI z{yC!YEVl?p!3vlmL~o`D{^3KPa#S9&(HLAfmb!!OD7%hPH<5h?M({`x&RH&>%A((G zu)=w;Z)K`5P`k6-Ra1WG$NRolr;|r=9~^a^Agz3Z+Wp{74_42CK}B|yHW|1800z-? z&cKD2GM$IZ?hn6PcIUU;`^EE<E$p$Z>wbyv+>UN=&{YA{$uS(uH?|Jm`3EL=zAL7T z>sy}HDUa(bbEjA5Sl$~savV6fLh5(0IbSqh$LQ^H^_K7YJ?U^iWn5o*J6paB#ud0- zgHQrn`f?roh_X7PneF&I7T<7Le_}W!?+R(O&!Z`PTN^;sk^1-l_}hzjzx=J)!`_o# zBghvpt}iWN)EOf)9n*~;fzg-l;yV52BZqgmTMj*ap0M(rg1*|5r#hEkTTc5<fZ1!} znEf^=%r|@~3VUr=-{5FhUI~!vh<>Z%x@Eytvv<QbsCW0}ZSByf{2N~#2BW(`FF$$L z_rA_u1T+I#NB6g1Up(b21&kj*JiYi74j+5<ht45p;lrl_3xlT~IatSH@bHQs5~dai z=X3cuhk-PkPgyGF&b^tr<YCqq$>i`lrt6niacx&{l+9kr($1D|O4QlsB0L(iJpqC% zU^A%U8SFg|%WsY+0*BhTe7(-4ip;=S^7_>BRI^Ncre(>>8Avra^eLLOv-p|VLnj=q z<cY^tSDF3(mQ23&{MKe;3%AzT<lo9!z7VX<C1<)yXqL0;JHPG~N5z!W51rt&sbDd` zC=Z;|Nxsv7v!V=ZFgh2WZpm9To#XKKvYkKM(d?p3c(()0PWY}Yr89n#A3L^p!H`!z zZOVL4I7=Hz-M`uleB(Q&!8gZ2pEnrI&KQ-N=6DYc>`U#A)i;D(!J!{@0jOw4wcdVD ze){4am{%LRnMyg5=h@umwAU%#i!VJUrgOVlnPhpuW{<(p-UIz98PaKdn12X=d!MM) zD`tMr9$r86zREhr+Ko)7K@qRxNy_9?Iqk5{mS=ax3Fx-!V@qb!pFP8y-m@8W>BK%~ z*IO={B3EKOgP+4*F7{>d?6DPkhkpWH%!!|Z?#gXIJ}cWY|2gm&h`-gpR}Y4tfqbvk zSv#KI@;O&~O@1~h6{CG@fD1!r$LdM;<mj+xNg6r+fKN{I@1=n?egs4NZXgQ0wZEhn zKWWJ(b?~lE$OfmXLmu*72d6q_1IfmFrFAaF%xrucyp~UVZASjtYcpQHs{?j;t)sP9 zz*P5Q)u38VyOonYnzr{O_u7>=y=N6R2A$3XMf%PD^9OA9(`1Tv^yx^2Ic1C<wi&65 zBk^Eyf7g5{J2_>77f;G9%NT_hE?ghocRQ-_xZG<C@NoIV?cDAE;SK(h^}?Wyv788K ze2=&KDhlfqt>)y5p}-r^Uo27@y4faMhprh~_F_r$yOdgI_s4YMUH;Xzug4%gv#xVH zotfa_nk@8B(l5FuwjoD;jDD$HTe--*y5}SMT|P{>`2%`wKm|O`WpQ)&Hu+Iqbf6}n zzET4gb?EN@@^c$X{agK<9zT3;mOeGuTVE>s^juq&f5iy9@89(-@4od1UY5~@bo>Ba z^H`kzf)xWVwF~9{R>%67P<n|5v=`%lO~=^vMdRci%?7&6*lxu|w9<juXVe^C#Fy&W zBxb*pg?vePzAL@L)2>Pj4}L9ui#g*1SYq%nDSu!7t9lJS{PM%&i+|Jk?{!N*{rpS& zgS_1{=f+%3)E&P~6aV>WqcKJo5<%pI_B?Cn)Ruy2K!;EjC5A}p69b5M#z{^w4MK7# zx#bGGPq8X(R3RfZvOh<l2NrD8>Slr!_DYH*&|2*bxDKw@5@76><h1oz`m|ufY%iX8 z(ArWd+eRC4ysH7dZ$#s3PU~|)i;;zTv<t%S`sHUoHY#uA{#`F#{wapNN+Ev8Iq%at zaLdLx=-)UB&L`eP&K%oD<)gD2&ZtE78mUYV+667;it>$SkA5adLU=k!jgN%MfvoXe zgA#lVMl!KgH-%S*0nLayuXOd_6eD~#Iw^=usezs`$4j%-j_*s%ZyoXlHd91!`xcB^ zg0zM<_z%s9=<M3efpfRa{9T(AROLFgTYBgsx;@iy-^<1yni=7EvB%~WA6xG9!7Q(# ztx=O~Ybaq~72#AywCqcXIZnDk!BBXNPmrUyV8)E^bMJfGh#feHEs;KT$)5~{PW*zS zkeSYwAS*d3qhrG`zt<lWBT?ge^;LQ}0t&*Jok=~@i#hw2(397f=&=kD4#JyiNrgLy zZ@1BeUX8<P9IGL|DY0jV$<&p<@Y0BJzTXOX7vKj3-e^GFaW3f*?*!ZGStl)+V_784 z5K7)kfiB5t6vdMvr3`r8A8?I^Y<Q$HS8fD6Qz{Dz;sV^FWB8S}QDXIVkRjP2{E{mW z$~krq7MCsuYjspzCRGal!xF5{=in|_Ck+<U&+=%z<yBCA|In|tP+X%TUC@VmH0+Qk z9d*p9mT536d|(fQ!Gn!rD;i+eXk5n-xNHf#65$Rdou<9Z$J*(jtoygRq`7f}drrUK zyV6d2<-76S=G9fgFzg&$G`sf2vXgdbf%gUP*wwUpFk{g46c5(<i;$ZZ1nC^}OX|PL zYPeMEW=js0^YuDZKQ+qyL$9KtSMS@%?&(_{sQaJwK0~@rVu)8$gOB->{DsF-=$ZjZ z@8C6}dpf(xH6rXSfF4zUF`Kl~^unN84Kb$IDf8Ns$Igq9%TWN#whF@coM-lN_pRq> z>&WKZ=C_Yt9XtEd2>9KPKUH__NVtJ*xA?tMsJ6oH$zOkOfV80Bv$vl=_MBqNmhD~e zT&MX{d353h_+Fi0PYD4d{R^4d`vOi%5+U@#l1%iRRZVo0M~X!;$oqvuGTlDy1kKUG zeCpZP`+QYwT03<30%rMQmO(~A+Ea$)`D9C-`6%UCiOm?z*x_kw#fP7nr*F~sEr0gV zz_0c|N5lRIe5rvDv&?s`ZsPyxzKzEA-oxnIpf?{#Znv55=Q{mQb&@O-7w}msZpL<l z)2V@Wfx-%^=q;!M%gtKrj0@)T{e1g#G*6Zky81K;-o7wBs0{j!U&7jWH`vDp*s(Nq zlp2TK4^ZE3_v4%`q3ZlDYcMxMk-T{24WKH}0T#IOS8O-rT07KDenz4}9C=UOVY>ok z5p4PnPUq`13?IQ^w9=7|qo3eZFxm69+gZDU0z0#X;;h_Xs*=6|SXmt(GSRYtAqJC9 z24AzmEqzZ%4N_<ZJe#ZIC-`P)8ytzAJ&r{0(_?C!)>QwS9ziIsN!L9`-u!3)(q;8U zw`YXu);eI}%Z|M^%8CN-Oa9z*?c}_bX6z(5I#r(KHW1IhVa(cO^i`K&_;e1BujXz} zn<@qfx9Xt_Wbs)W92|7KYDv6!5`QgMp3Ex9-qz_1H+(b*_GEA--gt!KRW!^O22XqB zby^?tFJy(^N03K<#5i_wP5lK!!A*CA2OV`(JinCeI@ji(_$R)UpU+$H4yUdk8VuAC z{_p?(&)M9MZ6ZYOpBhlx?$DjHgIGPAqPtcKe#)5aBD(?0>NC3wfxQkgxYMukr?ME= zADzbcf3$+{WfL7g{?a}zbqL-T_txKCe~hnxqE~Hh<_Rt&dcK!T#oPuhfIIuwr2mNM z9bg-PlRFzh|J8QDS6^Z_+I<I~L~obIzNGgN>U;iN)U0)4UuOa%+mV)E;?Y)rX>2?c ziTxb$_K<oY&?jkR@>N`1`r4eJsGB~b$Ft@o_tlxTvvQr>c>cC~Z}Nvf1ms=!tQ2C& z_vsZo<M%C-2mhmif^5pf(FS?q)i!Wl2_0M%r4!XLbmN;d_Kk3O?+Zsf%t*n>Eq7iX zHlNM0N!-!VzyI;a7q9>NKVCe){vW~qOS7ZzUfjKJm6LYrskZ^NZ2482FMjL&yH9ll zzGaWE>fea<Uv_O)S`4huVD;iBc!Y#SRt7m<nar_z;G5M^F$1$xGnU6LgrH_yJ%+cz zmOSm};3;c})5@LE0Zuf1_Dj}c$kMi#Ky>qOd*(X0>m5`TUEl-h&ED7$Uiw}10bl7K zLp3q^bN#p<TXytw&*uK}m-Yv#O{cTZ+4nZd3s?4_Kl`u8J;zD8G{ak0%|Rfn@5_c> zr=%gV=d=*Piem<+#R;q<RM{a*FpQ;IIEk{H12H}lI$xksV@lvg?~-{=F-ce8D1124 zT<PqK6N%fO3Qj)ua%~QhQGZL>IH3kEdLNb9%%-s)GT=rtIj}Ex%{GP)LA<ZCZG>{~ zN2?Hj@k1lZM*V)~bUMF(-4b0ho^?L{UJ&=b4V^X}4wd);A^bq#ejpxEqtlI}np5f% z%ylp2+9!Toyiq3g8JvqJgS{#UE5(r@pKq{1_q$gxxsE@B(fN!h1%9q!SkMt@9rp3C z@?Z&E;NcI$1t@g-Qw^lXR|7~%KDS%*dpnHAGqN@CU@60PMeBN_sqxHG9XrQ;%NfIs z(H89vmead<tX{AM37Rp^l>=Ji-aXIQ;ggc1FU8{+IeWBAqh|{oZbr8aTapD1T3z6M zz#La3cL+$*RR~nBss{J+kmKn@g1^D2E_ILh)h)QFcr=~5S5Cg}aaS71$-i{&%>Oxz zDx#x+&PfAWJsf|{@=b<aSAIC08vE}g+(&CL2&4d^TRTo(xPS{}zmNgEW4s*&u1oD_ z0TkIUL%j6c)%0aI<tsg$)$11hW&i5g$Nj$jJ3Nx%KnxE&;2iobiw!-N_eL}M!ol)b z@X5ddoP$|AzrGr&qYvFH{dD$D`domj`oN0`PBr@dGmk8TTYwwT@u@oCsg83EpKw8Q zWmTkJY4W(?cVG2<FE7u5Bkd0^D07bKLvZ0$vBRaoJasFlp6j^kyzY<Z%kw83T!VEh zcb#9?V9nkF0?u{71@8~eC6p+@-Dib^<S+TnKS)7r$8_zgAiGpnd%zcYUEJq7kv6W8 zMQ2HH_VEM%-|qRARK2XDX{ye^<!#>ugGDtjlc}A5MObRn*iqwE-HpkFj`ep9kSwsS zLv1$lL-l?Bm_Ah(FgAeueAjce>`S9uC->XumKHzvZN|eOSq`jvw&1TBNE}E)PnHMu ze$C`%V=8TjWx8LY<#RK)mM9Aj42GKRvO-9}X!VK?u0!K)<E;(A1~Ls<2Sz)w0ppa^ zrX@$$_}SXY(qd%?zf<EcR$V!5WWju88rPjn+9R>|HRcoYF?IpHS@LXztTx*j4)aA7 z+`Go}$KHdx$8z%F^m{W$I<)hV&E8^vOFQ>EnSwKc%N2;@iOw#a5VQ+u5^81RZ(o7f zHW*r9oGjwWx7+zyx@dsn<P)TL^oOwuFkhATUfWl@Y?<xRx9GsT`0`EXBUx<8b&L_X zI4)m1A00aL!R$9eQmZ(We2reST?#bCDm?|IJG0Bq`ID<Xz5MLL<MQ*Dvketqx<617 z@t`lj{rPUGUxn62(dA^RGo@WuTsHjHqU}5w^M%?~BS2u5Hk+dS^iM`Oum0n2l$S3v zsnY(5f5cjRYK%LvMY>h&WNEF{YAM-tZT6oG47xKgdgzr=bj&TU=lEF1&WZ#}@aG5k z^UAPY9aV!<FPj9QPi$;F1TM6;w3p6?A2ZW8G~;VEU!mFfuy;b=Rt%grO5FnB+P3I< zET-6FZ{YP=tauD$ys>ol>sHv^cpz82J3fzY$D!!bP8$@Wvv_)9PJHf<oXR&H%+S$( z{Nssh&_(uk2*)Qe$~x5>JOb;`z4)Uvc7Jf7=T(qiUG<8OJpSStTrrK;73w&^15SST zT9#1D!m|Gcq*_6DHd@7jGK7B+1Dj2B$xaOP89cHfDB9s`kjUVGgLeRL%V+a%>lCa# zm6l2r@BY1a<a(6B?BAn-3h`XHBf&uC8LSR+^_w&>u)a39@~3Tz@8xF-u{?b#;il~8 z=aiL4{hP%t3;&`#|1}D4_^&L3rDp>b-{rx7{(+!S+Asa;cDf=b7KNjHrCT9$+Bv+! zIi-?Yu<gzB)kIgUxACerQ2MwPsO>ipT=z_rnYpdyDxUQ&TQj*fwQZm$XFT&OT|a{F zM$>FLxzb^JV)AL8TD)97_Pgc|M%9ORcw1qA(G|etjL1E{6RP;PU6E@D4Cr|7{Nam@ z!osDc$an8ry8Q5$Z29K~X?vZHRhKK%W{L4<o&0eB+E<6jK=bQ&4FK^C^=UHuW_z{i zb=E_|z7{M1zYHjO!_8u%@Qj4<7C$Y8ULP-9r^}JS|1p~ldLScRz2f*ljwe=lk>Oy6 zr~3|k(7ZTk2i=uej-B&Y?%?74b>~(pz3Z_alaudSonYfC&!2ye2JKB<mYti8*2mZc zW##^S-0$J~?huvFLFh1nPH))<qmP-#Iq6&+=cEC*i>{8=Mhat~K!skep&vM~GzcMJ z6eL8>sA%e1U}W~rDBY7$0M5E6c`R+-(%O^>1NK^mn8nm5obow`A7*Svz~Fe-+kG1g z>>a%nu?!yyem)eCd5w`JS$2f{(meNvr{7-uoC5sV=l~^oNU48-Td~mFmfk(y=OkYI z{^I|%j7?e3Cvj-#TZb)r2$%yg(l?{7b(s)v2BGm{R2YApbkt;g&QHUJ?}z1cCgs1J zCnNT19m)mvj0eRTI|Z6@+zel%#wjc~k=TgTEGpofqQ)h_tJiWhBRgl)gd`KLKI)*X zp6U5qz{kKS_|vBxMXiaBFWMQyn_j{;LxV;XXdsNLnpqS8+KtW<>M1|C^rZ%RqdgfF z-GJuwD;lOd@OOmsBwING#3!S4RWTyrzTkj9A~lxM5${pn?5ARVCHe{Yan#8Q?^ouO zD3LyuD;(S+gTn{<9ef51?}8NXCwtNC6?s-u_c^~?`CYFzH4aA7i$?#;yZ^ynkb;oY z5a92eL^!gKIj)rtv&wS*{Tw(>pb&9R;oik$im+1`eDNxH<)x?79T)x8G#ovdW4h%j zVRZKk&vi67vT9f$6P<QBCrdX=iic7=Zn(Jeh1S7s?A!(VLuvQ187dCH@*mVreHX0< z+W9~HM=yFRfb8I0dEFX}c<UJ4@?3bFd&#VX<-64nr0??IekC30;C*@x;SK>UN$<RW zr>4qwet388fv1E9^q=eRMu)oo{Clp>e{I37y6<@ojZBw){*ik;88c3OlE`0>E6w40 zD{jE8JOg5<Yj1DJjebexF@Qw}S3Uw|xqK9O+x58LPX(~AEltiR{QQ@{^p4b?1!a(f z-EY3|;u~L0{&3mS#o(7Q9<Ao;imTyEXSE6PEs&2HmOh(V)X=`q2mb!|_ci!7!YM#3 z|MTc+w%DL$OSgItP#x92R+99*%VW>(*ss6}7lTdT>Zm{GzZWDIkQu9I(ltJfphtIs zkxp-hUjX{F6)Mk_u>^4M16)TJoqgl;=Vn6i*Qy@=&VVeD*yS0m8gMqle}4)m@~yRu zHv&y;Y7n4$EnT*nXTcW5!G{b_XI?$pTH>Q^1|sRg;Z@vC2KKb@4pHrfL*0A-aL+__ z5xzHJMyF^0HX}wRlr22S0^cFOwx>HE8z?5H$5!va7yZwzhVpn2{%x==xy`?r&DE}U zt!?>S+bRIzkFC=37?I6yUNy+@?Y_>myybh@E9_2tC9tpVVV|~yZl%L7FPq?!O!iLy z>C(ZK`#FPa;oUi(UWTQw0~DTgo;=V7zArXzuu*=w<F8EDVDj<>kex(b{x97E{8mRl zou2=@2g(BA7&*tNh5^6T2`%~kUiOKG-8z2kBrhP`v-4~?SnPC-44$WZ&)FSWC60AY ztpK1@bj&llTOy3c;Gsu{l(Wcp002M$Nkl<ZG)B)qv16;T@G^}{cg^aX1vY6=tQA}x z_NT9&yR9v$YBN8gEEMl;7xc0_8}upf*-$1~D(79*J)>a8elgr_C4`lBuZpYiyv13w z?Zr&t?m0yCDNjax#)%nEyaQ)xqVCCs-i6J4S@-$f*;uT1fU)OWvquL#08@Pi%f9dz z;<VE6Yp`irH~1NH%d!T4w$XKA=JbP}vm<YvFk9tPCwrZMY|>!@!Uj=07cW)clb92q ztHkU!Sv?k@vwf39@3S*_dlizwvu!3iWe%@wH*V)B^0nFbR+2QBa5m$M7kVSZpAKB@ zTRf=_Hp?%d(aJ{e_4XR=guS@>rM+q5r?{7|V7u4qCk&Z9%DzFh@EdR9<6@PrrWM2& zj*&fB%KiC((}{VH#n4H*IdRe5j@e?eNHVK)dKeGct+ot>^4O!tyIScyEwrlOYyeyO z0cZj;ysF~{Yw-%1R(}2}I?+2{izJR_L9_ly@PcjCkhs{YrMI;o23#i6^u`SC-Ymdh zpnc?4U*}dj8PLTyzPX`}Wl)WHaqUb6R%V6iXs|m!DkJAP#2VU*-`ia6@l)?M=X<-p z({Zf7<bAZCdmf&D*v50=_O%t3?BBrds|GXg+g$ePv5s>4Xsj3bK0jclx3+8@&Dxgf zFiFNgJY8EKKIF-6_=Re0Kc8S#4t#w*I)IPTW|yIjj=9MQM2{G9yDbNQD<tFDV(HS9 zS)5Y&vpL?eLHyWK?3lH_rp|Y|0k(IpTa93u@}tKtvadbfkp0w!i^S}?d_08l#Od9| z(A#h02gk86in5bT&iy!-EAK`QBb4!;5mw5m^Olk(m^sjhhzs4**~$4ag6<hL&ZcG* zrkA&*bp)#|7S|AB+SjL^+s)BF=OlmZwL?a(?i+!4dG~&XNE|v`Yj}f`Y7SQtYXWwP zZnVl0h4$U6aqv8_nPMA<<V0fjn2`{#PW4mI7-5uGWmHp26*pSPLGW)=pr<-(kFP2} zT4Nxij2;K0BHU{!(1eTG6nz2@imXZAyu#&3HVRz&oTpmxEPiRs1(WC5Sx%pj&F%^Q zID^O?kNXV=^}|ygg2L@SnlW#u--cV(*p=>Yk|l)BkKqFr+z2?!wv6bgp~f)d2OG^A z3rp>ExDVaxGjm+dX1f=3<$yE{<ZP1!a0D~`KXB;P=nZP{%ph~xGZJ<5*=!q~fM2xk zZhSlZ%V;X^sG9P`U!U^23(rZzKuLoUqr3cvRcMjif5z75@T|i9xepGS81Ui6N}S}% zgiLxbbFhY6r>l}dCYKr_v^cKO%sIR6fh+0Idh%RGs8f47l`Fb`TcwbYIg9B~<-wd2 zDu;XUKal=_3%lLS`=N20UEFX|X0ilxbd)#zHIyWN0`f}X&+$^zjS~pp_!A7c26@$t zp74T4DZ{tZ9ZQ3!x^DHwBDrqYr<9U`7=MQKMO621s1M$B|H8XFm;Fh^Uxzx+?|%NN zylR(TmJ7^&U6(zw{y4ffNZ;YzWO(i_zs#rBTQPbQ?=;HS{R{tt>mUv%^<Fs0<2#-1 z*Zr&9^?R$~PxtZc5B?|%wF{>F7f%!tutSR9hTCjkrqU`lHO^!@l0dqQPbWC3%=|-H z6Ow09PXnGV^?7JVNE=c8?Qj22Y3*xJAjRh^uYL_Bf3(h5*Y2MV*1`4UV>d?uT+`77 zFTvZ2gJ5VIG^%jW!S+)6`!+~?suTBFuv36)1;yv*-+G-wOSnFI|L2$5!Io{+0sdM$ zW^h%5`n65;^c@jh7}#)Xa??iDHdOhsnF5Lst&`i}XiEx>MzafML08$LXPZ60sIx6V z^lA_@StfAeK<U1<JLOp$S(Qf1x3eliiE;9OcXi|zbVSDj$`lCi0vF!|T=7sa8+{81 zJJ$-B@g#REbnsY5K)l9lnl&<@_&U68oOfSPL<V`9{Ay*wZO<nMUtmXOI-QhA(7w(k zJwQM-e|u%gYvn@PGqc($%TSk&A<@5YyogwYPCvy9UKM0{>C0Xz^!jz3v~YPLK&xH; z_R6e#)keG30$)BCs69tZFl<OAsEyFk#LLXZlijSWq+xvg5#b#91n{P7a+2GQ@c({{ z7B~8aAM~{?d=ptI;r!~9j<HKGVc?WW?l)UWKw)%Ny-AmL<pbQc_LPop<x0t?cK^$Y z2kxZ{>bC@Wk4VLF)UPeW)0PE4*#*43mZl44^{>XE<X~l$ji9b~&I?K{uh(&g!$Y$m zHmEUM_~~=2AL31@ug!a1hcnK%>^PbA*q0S=Y~Mh&{A@r+@XWH3Z}K;ILMvJ_Xj8JF zrE5B-J=5N1a9<0m^dmePX7XV%4p_xz2=;93LnAxWr|dIMMUR+M9CCczbQA4;Fby5- z!(@Y5tE*G1eejJ1YmYaOg?ICLap)$ir3XVfunZvaEATOZwDzxavK431VFP$&jn4Ex zGodL%CiptV^h26F49p;%EXKt6X|@6m!O5~m-IB>&My_f;@4?<E(foTWN_1+zFHMei zMeEH(3wt=Y)40<C?YcU=E(kqk8dk?&8$5`nif>u;Z|@uUi?3ZD{k~CB83!KmU0@6` z`8b&o<~G>JR&c>F`zl?0cs3R*&n-W{9!bmUe6hn|96tCD54DTG_^+)bh)>$gJ*OIN z8{mzOO{Cy>ILRm8eVp&F&h*NF4ch?AVJ{yumZ+uYdv|VEW^6sHYVVo6PX5w_4?k%z z#GW+$_Vr%YAL>*swoeGOD>Y3w^67oA)qA>o)BDw3ebu%04-$A8e6|FwX=wS<`mWtk zsBDl<&d?=C`LrvOZHn|;?a=*y{{6+jCBrYhiZzv--IDWJP123*$=hpQHUs?n-A~Q_ z_GW<EORvPU;wMJNliGxE;x$#QT^O%BKb&$KLTQ)*Dln75A4jwn$XN>iY+$RrR^fhq zrkm&}r~Lhq*EA;7NSb!(mpHPh^^r;{Kc2}1K;`(bK2|biINgs|;qs<Em~?VII-$*@ z+a?dST{^i2AiQ2&TX^F%=>K%+5p_dFAyDDtl&Ez@V&;^*UrNkbGXzuD8vQw#h}&+A z@|VYlp+60lhBXC+H^y|&J4=oF>EY{rZ>L2lw1nwPLCoG!*!37)8SmeHWnEW?5p02l z&JcJZGzKzuG#Djh1PzhJv;>&r^>X_AqLA(ORh@z#4Xn*i>_+^pC2_AAN|tGM+fpDS z(N7Gx?;EoMXo~UBB&a!o6on#CemI|9d*cP%Ch&+0zjdH0bqUeHz!@x{Ed3=+3VwCw z(CJvP$N{61k*6-lXeds&E*CX&q__!rGkM*>0}3N8DmH>?R7Q|S(I>~wDE>O!0}}2W zx<L-gm$G?10G*o-g!iGrBXd3T6>N@3aJu(?#iz4OsC?C|@u0w8lUX1Ro$<!AabCl8 z8Y&%L*b8{@u8S(9|2r=qGsJ_#2S%jviSM97;&yF>m23<cL`Z3e|1pJ!Dqr_X<0v*@ zP*J1MKo}+EZP#(vaaA;jSILO%f0^J5)W06Xt@_UIsna>0?cNRd4Jw4;_#GdrVR+*A zm3OoM<zEM-9LjU<4tX4t4Wx&;>+*+tsvSqFw-d?acHxmr>t1((ka#;a`pa3K&dtGD z9syQ`Pj<g(>ApMD*YL+;oqSq0I)PQLWBFZ|i8Gxxmc)XV_kbTN`v<Sv_eN&&@77`c z(S@?iF_+=uSGWEI?}leM3^&*UHvEBC!NE_tt3IdD-q*$LSZ+5vzSHG=ch0|!ZcaY& zqe_+WPqh~vK)_qctDY<U2L7M&y7%X@rwl)wd?!=zPW^*hhN)BV$FtR~zW9!RYjjrq zk#nc>$MEShU)Jw+pcUT)VeDNeP0$H{jk;xd@7}$8@z=lp^~Ene`(>7+7H@W^?U=mt zjo*)84V&T7IbNs^VTWV=cOH%XzbgQyyX;Y?PEhACDsL&Cz_KoJ_F2bCkh!QdKO&IM z7wZ)0l-d8my5=th-F&y_2**S|ExN{6468ljvvrWooM}8id1Pgq^w3}aARaW3#s_>X z&wI<GYd`9;^-7joP*T1^i8{S?glpf7%6m6FKZph{2IgA|%)xX#w8ZRPotDSZczlDV z>{~bqoNL9_(QKT4yzqX_S1mo$HZGVDtO)qj5g*upIS2djw|e-!h}|+_)sk;K@b-cQ zxCJX@CW!DT5E{!As~QmQSzP*nuit8S_kPdhZDxS7O|GQZxlMxXyo^vw@Wcn-nza>d z=|J7L)4!cBpL&jSv$K!kY84Qi!-db8Z-gt^qaq%_V>EQnDH$Gig=3$pneQW~6QjsK z5{5fgPlINIQN~W);3QUOGKwEIE?mY1OJHXwRj8%GkJBkq?AUrmht{<bko#B-arSe4 z<r{xWf-lM@2K7@4Md)z)>&+8)I{(^o1?BCYL3=x^E=H(`rH^*XUdJk#t+UQH(*?6j zbwAVBY6^z7e(gyF860^CJ{{N5wEl2>OZV-t{A7QVmN|c|GZ{OJ7miKE<=`}vl>EM! ziAQ9|vx$Q2<jvP~F#EDB+VvhO3r9<HUv2e=cne?XQv7T(!61w{$+PV2PrJT@?4xl$ zw`%;t(bwU3vrXk6i*WRujQ`r2Ee(|(9IF8bL%SZo&tO$_P5$DPVwmU!;_6%@k7U-N z3C?NfPCJbT@D?jnHYt=3Ts%2)-{S#Bth%=M3F6tTi4=R8@HJ$zji<s3{oAd%N?#SP zMkT_7n=K|sK39C_(U90veiCUFNxtY)-xGK9F#)LP-l1LjIG4?O9HW8AaJcfq%far& zqbXU{Wv_at{q3=)e9IntS)O=_#$X!b;6KGj{KsO4%B>Ss9m~UR$W#m%4r_-yn~juq zll1tqHmn<Xii7K1jhEF`OjlId{bu#zlU>DMr@v;;AL2=<tplo!n+;b#C}!{R2hMDG zk7NYfD}`DC+i$+L^EZ`$ymfBh#P>JBwBaAvR`6{JZ1UcU$ga`UWu4_Z&Ea5T#Q@X# zBIpY)K3sMlNrzT2N>{k*r*qs2-*zS+%Ge+Afi*kjkCXGK-#@(g?Z5u(#a-WrhyPjM zCVLM^*#kj08w_rhQ{;9t-oDK@zx^@Y>eYA;y)MsV0?}j^G_v~9--$ml@91##1#r5s z-)ui!jp*pnV!=}^!RKg)vZ>b%CU=b&DP8&!#hvR2dtF(A4wv}VkFtI@SX7yAoU|yA zZSA@2>XsD9B)6|~^0UmJ9a%cAZ?>i5SG!uKH9Kq915p06DO-jAbZi9-?5ie~Lf|ph zDIN?vM(FMS6g!E`DUb}*`XNfW8H`4rldMjdF2H@x;54EH$q_NiPxZz*PX?g#Ll{XW z#3M)t0AD=A)3dY68M(P@q_K+ySf@dZEfN0(tVS65mE2IH#+gWp_YMvjhatJ&jk3oT zPUdUrIv=0llRpu}8BMcsmXS4U<h_L0NcUTfPx`axTEmlLY?$-KQ?NIpwgvzlf*!m% zLd1_bh02gW8KdcR)}poiq`jH6_&0}F5OH<#*N_DRMVtm@^ij@EYC5JwKw&rfB=F;O z>U^5+-*dU;^{kzl?k$6;BM+~G!!R7)L0#DivmBTFhjah7WGLk6!XzDBb(!q}pHuN% z#saYL+=yuWn?AuC+A+b1+(sLd4Py#|+Qyjcmy^=jb*;IWBOlFRbfbe4KH!fbUG#vq zx;XF-@W14wq)V7XPab#;|215U6|nfWz$($Ga~+w=oDMj;`$WreqOen*K&vN2Q^Vn< z?5Q2C2Vo(T`($^~Gh77&bbq+!P~>0T=brn=StxsQ4WCZYH2C2ZCi}o+%7&$V%o=I% zk34U@F3SQ@x~DFngLQZqT==Z6Tir+~pAXzeNBLblCKE7jWfXS4Ml2lG5Ukv?uTJSB zHQ036`S1YmO6&f0NWTs^JMiJqb;|D=t)*du!7j(a<G@vvgN<c7)a^JqgY&2JA<{J- zPiD?<>GB^rqzwVQP({NZlDnY(QFp}-ts{v3(8=?AVX>s!eX_f7R8}8y^0~n|ygK|o z<qwARly15bG}DCz>j(I7)B#iX<XOIpufqr6bO(N?kt^Wp`mr61En8lY12Oapit;!3 z0Q^=tbk5&j9N@pEtJQ<~0vaC$+&^~IFJIZU*`2b;ytMm#MUJ)ls<Qy&mAVKy+uf__ z^1=1A!XbZDAju%rY2zin=pno#C=dmR)yw|PC}|J2T)HAQ)Db+kkft)VC&OREdX^s> zDD>XTwr^-gxDH(S+11tXp|+&krG0zxzS%LI-OUIcDr*;xFKh3m9r$Di=;tbXQ{exl zfaD>b!xG&uO%n&V$+(4jxvJXKf{f^Usk2+u;?+Tdyuz!)mt?FJUl2|9u}Y_ZyHbbW zHW!OW9`RTwrh7U`f&eQ_EN8Ve)w0K!cWW<ne9uzy7*!`Ge%7`N)(t)ginlW?UTO!s zKT*Wz=Uz#4*Fd$+kn9~H!D^nnW{P$0`6j5d#r~$(2Ed(%Qk)Zj<vGhI$k}SB64zcP zU-~v5Sbn-RIMV4fi#+OC3O*eF*6Gr(!MrYxp55d^ztqjCt*z*q8(Di(-r*78Q^P8o z9)XJrb+5i%((6D`S#(XWOI3$_yLa-7fp!*;Jafo_Y18dIPBw4T4{^`<q66e8R`Gl; zokxUMK`rQScIvf<y}NDjfxN7USo}JlSpBQ5GGr2rt(bUvAJFuxd-Qj*49|6z;|ZU_ z|Jd{ja}Ay-+yCOJmbv%YPR8($e>&7+j>&`Wz&Uu^`8QZPgmjKAUTv9JMn|}6wu#im zGry-eocY|!Xs0^B2OK}Q3gXn1j+?m99q7mxsGt4w4~pEfb<ed4nlsRI274+MKkbx! zVlOd65{fsIadiP~QbEUC*}LsD-qQaz=={{z+bbUW&NuKK$tkxI=Z;S`0Qb3NrF+$4 za6Ch)P8-0Ij}EOv{yhRvFYT<(5+9$q%WI1)#STd<&sXajTD2IR)yZ#|So+-B@yQhb z-NOL<%C<ZvVYSEh2$`}5sB~Fm9=)!I)4WZ(P#b`OyAQ{6OiqeZk&YAF1UoqV5|Hwc z9305-i1z52_R~QP(2>?RNu^`jvzhrjuRya`!~_0Ut4{4UU=7IZHeT)h&FQ&WU6TM? zq2QTYWh?a<qnz7i`E4ECxBb3}=U%z_=Js5!P61g5ZuseB+ouM84POM)uqFdj&#^ze zM&WpHV*qAAnZHO_RU=H@KQxgp2B6VBdP{b0ZbjvoR9e3_!t&;U=ii&zeQv<;(aPFr zG*Hzm>h4}OfS6(1Vcjmt+QrXre{Dmm2A{gG53twIX|tQyv4W$N4SWpGknpVS>;oQb zs(U6N$;__Z{9r~he1>Is!NDT|R>z7379#)?-|5R9RV*{QHgGq_;m%24dkELra&-2) z0qE*oAF4Edp1;}N6X8guSTmXH0CQ-2^fDQ*Ew9WNimCr{G*=oCCEzV%IfCq5=5Ef} zOX`}i5HY6;L1nw<0M3ztagb(hDG6m<_D0xqYTG=bI&{Pk<|W}qne<6!7ZA_Tbud5F zDK%4=^*3GaIj~?D4NKv_H7b$XEO_9A`2!m<*`3ao>1(`O4)jyP{h_ILU>YXR>7_6& zkH!?Jb9%~$Y;rDNjfs&8itv=Ba){EmTWA6_>c+q=k>>OtGm=k@wh9^|r#dn!yi73+ z%1?OlM?f&aU{Y`x{NXP{M@PI^!`*MVDd&rM*zMrp%$T}_gN9q+DoE9k841=fYGVW+ z4D6ocZB$I)`Kl$wl<}^OS+0Or9Y&Ki2;eLr4uGI@BWrlG`VYPrE?z}3rzL2Tp+A8S zI3?WD+`rLT#C1klZuFFtrXeJjQT|Q=C#UfbR1Uddvs<Kn@p9?zt--;U>Rg#_st(`! zC5zGE_8e5#(c?J-zjy+ML)FKa>A`Nzcq!$afjoVnEHk)Nex1k*x9FaXRUbZZQc9r( zYn5AY<F_<4K~pY=oMdn{__MR6sIoe5UyggY$ln(qIg{_Wm5*LKz%qLx5q;nvxh~n= z;UW!Aa6rTALSXlHzjEC?atPd+@jvyeTn%LP=i^qSTcDo*hlU%f-HT=CI8~`4{LZba z9$Z&Dhu=WqMfv)--_n&ywg0$2Aei;)xbjjBAbdw2IJdlhp)*=;zqh2-b)kCw%D*o> zuJe8;(<_tfh*Uos9K%_GN;&s?@!0Qynj9i%ejr^PuBBWs<fBu^1}=Vp^+%qa-#ECc zZ$N|?;|CZeEO<l1jq!rI1>JBai}IZv*)=ZtpzH%)?`wQN)$n@k<IeKC%Go5)K~wmD zrm0$7eQfp;&hu~i2{;UaaJY2d;EO@fbzn;N-0()1;T*iZ=eF}ZPL8}2upr}0%Q2;G zqn!NzW+uw7W5m~UW8-ak&5Q|t1>sx%G$G(IKUnan4apIGu19Lwp9XnLqYCbYcy{~$ zP`%zqtD{>tq#&}!H!3Y>eqX*~*XWNQ@#F-YCn%k_i6%_sJJ_k^pT!C*|1N>p1@u*c z=TmlWH_XGE>@#|hE%VEE*u4J|KdVdI@v^p$jCF3d6K(C%3Bco3blLppzRf4l_vusq zp*Cx~_cD-h=Z!x7ULf3KLuC8VQn3v<XqyeZ3ii>r89)3p642~&dCjEbu}+Z=f}n@o z1xa}4)lFY|E!5t-TK%nN-JpX36Eh8FqNfw#G)pQ5Fj>FGAfiIAy0f8pgZwEJ-AWF} z^BmccFCO@Ec^in?#j&qrTiuA)4se&;xq1zBo;+o!B5lO#h=%1?us?aOJA=``EB*mz zwl$bnUU$hT!uy-v<6ClJGaD3=9-Mt{zgxx|Pq!;_dEc~(!qQ|sHYm>)#XZBObn%as z2wz)vslSA0=ZzWV6QdN6RBiPo7uU%)BxYmJ*|BA|Y~U=-G)a-}gv-?tv2@u?p?W_w zLs-&u&5W3sN6bM--t_j1FHKUMSNt40M=Mx;xtY)5YW9~+U$IAOkdDTWXj8Z6-d)qj zi|^z>SFRXo19@OpRvo8o^>jVIMt1&!1EvnA?{-%vBgmlnCJ&jxQ5G+@?7v@rhR=|9 zI$nPE{k2CZJgy}lTiz%9J{ma4HoXD~UtC*J$B)E>>~s&z=0ksvm&KzdV$yp$&u*$^ z^h0m&Rt+Zn={5YGEFV`Jyzw<VGB{<xaj{1E)VGfAA#no=X2LcJgU-qwojZCeo=xK8 zVJzDr=G=fOd+r=&272(uCQjs;B@QPA$jh;ulS`1oMSId^`K5zS4)Ir>?k}-Y@^(A@ zrdyU0H@n)+qV0A_e%R_tX`ZEhC|v<KJ!vxpkKlDT4H<olQ^K9geVeW27W+16RKCH; z#^2Pxco$HeU9S|<PFWfGiGIQv-|3)w+tv6BoD!88-TB!18EXBNY?Ixv68CoZ{P~U7 z_;sUs1AOJ}c3*OcZtZ-(F04ZEW|SX#)Z=A#`>jEfFAY>B#Qbs8H8^TA>}C677y!QO z0qoE5WW0>tyLR}t$)8#LSTmVoLRt2Gxe?+f^?a(ApU}Z&8)dFN&(1x%Pyz2spUtJi zUn-|hzZJPPeie-m*?RJ2bJcd!1-};yj((D1Bxn1iLq_bZUpid929~ic*HK@BP6ZF{ z;k`Wq!f|*;Z<<qHc4xE8%4K^28vbijRrD{%y~dtWc@{%QZoTJf!1L`cs6faB>L_~{ z2$ts%I%jNKVu5L4$`Krc%Fsh@uUV)L&q*zKQzqnaeD8c}`OJ7yBltCivoQ!K_px6s z-d&ws&kX0r!>1so&Kn0pC>$mwqaaT)&}$$x;$FS5<zO28AKukre(aSPbxJKK3vQ(w zG^}KbjSf!N^Cdy55$?g~@_R?)*BTDu8^<%Z?No*lNtJTy@LJpd$#Un-C<{D}v$*T} z+43Qbq;Ln)3A$(;0P&8pESSke$mh(oRS7;-27dTPptQ{LB+AG@F1UW>t7b_vs?Qk; z_>^QgI4|*CFA+b_-W*4HjkI}w`Z)Z`hu>xjs&fMYAqoDR9%tpe>R;!4x(IJN0oy~5 z0DKK3nr^b!aHEslHBd&`X!b>i@;eV%@(k<!ddK6XZ*avh4b-<f?r{2;;WHvKVi*i| z`Kv3<3<`Fs3p~uhmUBNBG5r0M9IrHpjIQ)<EQkzFsxq9b*~y_d=-d1X2vEwe^KY5U zI<(Gxl#OL*$KTB?grj2U)i@}7cpt{`WPF0q?bzsRb)yTHS5I)y@1c8&grB2Wu5%n3 z&iU|<KK1o)U+3@uYn`0c6P~y7QMvqwrxhvX=&KBPd}zNwx{ll(qiYFrDto>X>HT%> z*Tn_H<&Kzi@d=K@dkOe;%ir}sl|Lm{-|8$;UaAAPi>_O?{ap9{{Cnly0L-7tscZG! z?!ikQWv?$fx;?&1cN{+N^q=UIEKM1Z$$^|S2s3$z{OOQye2u6D^M6V|b)I?wqz(M} zX7bq0;2&Tch=lRr-GBsOJcf^i4z|W$lQ}<c`Q7I?we%I;eh77P%`$qn&o!Svy(c?5 zRYQdb?q7IoBUVqkI6qMuMCM0y{AvjeHhR5=XV}=UWtDdgbQ0pLS1syoM<)&WxAK2! zm*j7jEaz*!wNzP$&a&qPv;~P}D%dw;W4Gx1d=ADSCLY%!Oz-<Q-^*SM*8cwSv?m&2 zGbT25@raIB#Qd)D4`Z#5Fz0i;6|jG*jt{|o?w3Y{#X7&9SN&W-FdD0;q}lrhl`4B) zkz}-8V3*G<U7&1mSIh7DR-H;s;&z&kP7V6gmKo8RI1X&Dhj?A!^{u64Yxs3YOMA*M zv|cSXB!`=xZPUSmmjya4J@s5Nk@H8N>kPAdogT0^+Y?9~VLGsZ)$rMJ<$`YSQKgHP zStgX^C^$OxZN{&9%-p>q!!Pfu2WRMau#!onhBL(ItRtSpvuy_BhBhG`<Ok`E0dv2h zHlOI1leI!2RjKT;Ni^^?^T)i>0p48)-8=ezV8R#7^tJNCkKW4}+>@vDTj{b^dAOv9 z>x8(WF1OPw7A5cOC!P5wAjTU$oNbp^`?CSp;LlG?h!s?OdSvied2O&x0Um6VsdUJ$ z$lu%1Afa{7l$Xb<1G}y2D4c^oDL5`jEqSt%x0rwM(Pr79_tx4Z=?oqtCVHz24uah~ zZEhd(ebd0n%i<)~zPqIhI0e3U%^aDDTKg0Nqm90#J384mo3TW9L2M9g0>>wWz-(4s zaN-*T{H`BuvXg(g(vCl2M|d2r9rSyh-FQVu$FJ~R`;W)v>!)irm7UG54Q^S!e>$44 zn<*1xiD63)XOG<3wYrX19n?4BuoY~RWA)zj-0ZAJ8XVhAIlk=GKy51Y-qK+_44xTl zE85tLfiZi>%wCe2K%Ul22G#35rD7g59|PC94zF-Sad(fN@w0s`ah7kvezfYG8*IXd zv$1Ko1#7WJQaf__L$|AX^8O>9gAR#T+x~);?(zwT=VX83P*%)Uq&l6s_6@smfblt| z&kS{?gD#%V>B%D2@(35-s5ASvc;73WeySaKTSwFKW7=*hGkJRD;~uYxr#iOu;W^mb z89N@T!ip6$z)c0M{F~rEcF&|}LwXy0vmCkN>2A1&nTffxVOkS!@ys=yvjLP1bnSJp z<-3(%--*wujp+Yu;(Fu;<50epjMax<`&R#WgAL_SZbz9XpXAK0ye90ffvBACI=WFd zL}!=Pq(5Z&^ygO3L|uK7pm-kNv;679oq?F_%Hs&HYXe@|qPRo69m+?p@l5q%=k1G; zp1-Ug^tuOMKN#H1Hmz7NP_RcN2ce6~88BX43LZ5DD*mvSwH?k;7rpv|@Lxw(+4Pdk z`<w4}esnV)!lf##sP&xj26CdopiYkC$hvZA<J!fuoS)r;F$DkV-~E;#MFB-T9iR{; zkScO8$aP|>b<U&fjXFWFGK}zi6G#X+Kf7iH4}st^v})h(tr?0y;u;C_t}5w*1rbh7 z<|w!3-t)bT{}qi)X+M8$vjmN{*~@|sox(YRh<$2=?YDxQ_f7E&5MCDmeW=H;L-fmE za>$Kv{P;rzMciZc)aHa618fBDV*yGIm8161w2?8RH+Jvb(l+<|TDrGU4m7z=88#E# zQZfybAV>gZ<j#!nUNu9skwnM~NM?*j5@?LOVSkj23_@#yzo`UnOmZB|oLqd`Mj}#Z zf&%*<<uK|$#i`QIIq)w%Bg1<Lo>cTEhv7s(H~yt?9HRHBk*`KgdG&`5CiSoDE-r_+ zAi3*TZTiB1t;^RjUMqUbXS4-k1^_fbdlrWt#Pe@0`{3-a;1_&`J34N1=lncx#CKmo ze|mmMuFfr+jwhV^9P@BgSGdH3HGsV4@LA#v8!n@*TLy9_0etN2!ePrVI7zpc!sxmP zp7MKs*9iU6WCEv8dA0;v0zNWUrzx93Te!)08slTggS)EA=}&>aO5*$(@xou+rz^Ki z;Xyaj(f}Wth^i_!h`_Np*x$)g-HP^6j*XsKj4sOJn2y~p#z(xX%#y)D-(Yk)h3Yyv zQLZx}G8Kbi*9ZR<9-q60pful3cLgTcx8qNz%O}%<@zM`Y@N|C4D+%6p4b0#>>2S`E z%Xc0Bn(q2K<h#Dtz3cbN_x-mMI61!G>)b7T`sZ5D{oz@<Qrdd7$h%-nkq$63n}4F? zq@4fK=L<wS9jCnC0A1hiZ>B|hdU!(A1AF|aV%k{hWZ`OER7jOO%nq!6YHN3kEt@%d z({jB3`0KyF`01zKpPL|`3SQ|c9U!Z17?I*=4>l`X{oip$@O3a$n2livLp%9Dr%zyP zhGKrCCBnU{``d>P1wO$nD&gaq=$Ea~sS_1mYrOetJ*N&nWSxclo5xx{7ElW!@k1NL zSDP_;sk2hx^eO-MsruhHtNVL1x^_)Hz9s(^s@grfJsO0qwTnaf&T!Ce)9HPxgS(9m zqtWuYFj=sQ&zq4PzU7^7G4OaST4(*P0be_Q_7vU*?gUc;2(#DTg}e9u=6}oz*rVcO z!H*@@W)=hkTm2Ls^L-)Jwm^H_W_;+}ra;?WwmK#!L-X-$tC0)<#9MrMS&(y<jRz}W ziv#Mwjt}vC3L9SDOIpJ*7z<9KNq~(f!=b#fD*b5SB3|$HO!;e_+bvh^*)x9Qi-FkM z+Pznk?na-$(SWzMB5=odB4m1b^2oPD8Rn$u-)SIdaEKQ_xQE{E^xX`PQt?me-A~_R z^+}T#I0QtCUmCi6_?}OttKx)pw!5Cq1RiTvZfK=<(2PIe9a|kU$`ioVF27i*%jC=c z4Ze$a41BCZ9MI7ceO4NnNnZ!DhVcG-`x8#l!`;7aZxRFB)XU(C6$xhhJ&tvjVXpO9 z{W`NcB=^Nl?%EwWCDp`Lwz|L^^Q*h^pFcFn-cm_zeJ%H58SfTV*(M62RZMinjZxD5 z>IfGr@K`tE=@EX|IhQ`-r5P%AMBfR+v+`$vHW*_No}EL?;2;wL_=*3{_2pyWFuqm! z{AzL}o34i6<T)7Uy3*96wCE|<WE38o5sik?Q3n2Kfp_>XW=c7<nKu5iLgEY(s3#fb zPw0S6>Gmk!jrP0v{hHjvhjhIrrPD1P57_K<lQ?M}Nc8Uv@OKtn_-7@+H5<NFbd{6# zQU^Giv$8`&WwrA<6y53`{RI)fD$-}md`GbK>eONEnk-KHQN}WFl7pS0uDSx3Yyp*= zrkvAwlp=-?TR~$1^WdrTCY04PTdJ_xO?<LkUrYfe>FHEGCXcuA-1nzCY(MI}ne3^) zvvirSs3Y1nyiw+Tu~vj$ew%Ob=!O|+niIG4v2}cdZ?@PwW)04W?d=+_ZK1~-%!6=) zHuGP#4ODNN#nssY^Hqaac>C1qn#K3Q*I#gqA2+_88>Llu5Qhi<j&J$|*M?QnOrq&b z+nDw|L))z!>0ND?HZJsLqjW^f{iQ)rHGZkD5(}mWuio}nl-@q`T;GZdolWv{o%0V? z4B0eyOXum#w}zGB8V|h7caLz^rp*2Wx%Rm$E0i9J`M=a*HZVp<*dX=8Gc>PEIBq3r zSN8CM-`C38;oD;gY@AL{MkV@Ha(%tZa*6zmLHfs5s9Z~z^&cna=-5DNe(Ah^HX9_f z@L0S&O$f-Jj{EhhGv-wlGH?;sY&WqA?t$#CDYs_{AZWB}OF0HG(hwSejX*;<BpICG z;#GvrvBXHbbgk18F=hrB0^8XLR0c^PrldXOtsNCmSRU}DuV-mLgxm)s_8QCWMCif( zunjhbzfU244enFZ{NDTbYfA8Z|Mtb-UO&~zZDu$HdedygL&%2SXfgW!*gX%aZ&V;5 zXk^|tV)~F1dJg9go}<XXj0q+G>P*4Q{}`S|O}=J?EpQI6M)8^j{x!O`vv9OouJLit zC!sYXN-MrQ<gU@YfKXn7iOzMn2%j>?V>8^Au2~wm(IX9BAHmZpas&{x%BE1!nY~n3 za*a^V-sm_!neBF}PRqarbA)f?k0p@F6fbAoosQ&JUO2f{FFXxgSl0HfMwg);ROnB* z;7gg(f<}F-8{fLE!H|yUmQdl{F_aQJILR{@pk$wJr%h@*jwl=iY>YKVj8|}_+-L=h z!(o8P5lC!s=Eifd84-8Gsncc7A3<wmW7>@kYxr#xCASeqyiqO?8Ds@^PaVMsAHgR~ z{R@@uE6Nd8szPT6$Ih!`*QE^@T*yeU6QAHG9WUVYEncBfbsXSyG+Q}!l~&%(Knz8^ zCR=!-(M=Sb@0qCxX26yXmlBg?dGYh$5_mV4#y%aBF+Bjcj|QdFU8{qBTmw0)SJeSm z9%UG!E|`Gfvt#!pyASte-FaCRGXWHxw~QckDz9{h)6m^z#drNZcZti|4flNIaX7!g zICr>q_}%xGVfDG=FS+b?g|2eST<2`TK*Mz7VxSD=n0|G3mEZ0CBeQald4M+a<~n4N zzOQl$-j4BBTKC9YfB*^f&8PI6nC1_3`UJ!}YLgFp4yey08W21jtp3rYa~<5k8kn+q ziiTDv_kaC=|L=<*e|%e~G>t9bHPGsq{Sz1)=|@*!0TjZ6IyeAAG#=6OQ@`u@qv55+ zWue=GAa_34Ea$i1H;d#|8LtX1Mvoby>f5VXY8U1Y1f8wWQ9JbZoNj*3U?hgxG~~&1 zbosC6_>yy6Js-OMSYY}wTlkdi<JGfvDjdj!%h5^Q3@xk@0Kd65v2(v>X^_h94W`ab zg+Cg!rF$ML-s7-=<wP>u5w3iUWd`@GVB*6K?0pW`-`n)ZQtF2Sl+~r4Hrq1DWkB(5 zufup*p!2%+&I@^;Ep_uSaPa5_e7-%kT(2c*t2g>)gYb*y?IPVTR(SO1L2ywcL6&A@ z1t9dvt9Irl;t8H&?soRA0<T?B?;b@dlclTn;2=Zi0$70(A7p0z`D-2P5WG)^%w(U{ zRfZ3`OGfLQm0lg2=cXrgRvILtosu{ckVjB|?jgH!%UiG(4<!3X2HIbje)nu$8J4bG z#ie=vksfZKx*IwRo5@Hm*FGjUc$z5@G@hA>Ea~#g!I<rfs|NhUOZ=k%_KE?tq4VFV zrM8jTtnG(ixQIgzNzoSlZ(7MftZ<}zS0|4irEM=Bd+nb@8*jdReu)3=fNZuh%B_yj z=6Z}uoTgo2ch6NS9@uPY0}_mVuZ%2}%pF_OpMF>wvR9ZS18>h*XFNWMA+)tB$K5?o zpU!-&16ac9)KL;c8j$h281dsP@nQMWu6THYVjUn7q%&fp2Q$ZH7cV{(TM7R05bfen zd|n`5Dd(2v_7f`bC;xa8eSFZ-!Fij>Kmz;F;Wm?}*aj5p)Ra=8@=n*fUww@nq#G!V zmi*!CVw-0JVqT|Iy$NYHZt`UOtUO3)8;|Ip0k-U#op>|Jq`=*!OY$U^Xv|J^5YqiK zfLM*m;#$#gXJRT*!8g$ThFj=*#K5xG5Alx9dS>%$JLGOKtBm+)6^xZ_@Z07>(PO55 z@qB4(8-lwIYZZufF;sg-e^0!s?YK!h<sq@fj6>=Smbix{^nwmACSid`IHL{B;}b5s zWM}DOWj(_2OL6tjy-wyaBmXhI`KiGeJ1F1t_kf~>pYGR={M`vJKKa;>YuWfo{-C?T zwo=IZa@%~WujR_u22@*Rn9nolw(P;=6U1Fk#FzAQkM4EPz~o~#{O(KolOBBv)^mF+ z9G0<dbn{#EH-Cebec-dfhsvX$uQiuv6RcBL`O%VW)}iKSTNQAZPuwF5cp4?I8gSNm zv;pFMuY!AQDf5e`f4peR=odfy`!6qk`#=ACgSk45R@55AU7sP`3(@Dh@Ptg@x3;tM zL2n?cvDb78Z4EkGk%AAy>*#@wF**!N(fx`>8NEo4x|f^i%NuvnFM2lM8xM7~+4NPG zuHfrn*5?ApGr;FP@##rv-@=J(zwtfkfwK6-F2w&^tw7J?_rD(ZPchH322SX#p^wQ4 z`w5V~rmX!klCz`&WBP{VO|=57v7ksAvz%63<VcOyS$+|fW8#($PxBbmVM_LT>zv4k zA4W&o*-{6y2GwYbz~tB8-@o{;U*B)LZO@c=*WupT7VdC?qnDt+*U_!+{QHaFV#A03 zu1x8FX-43O1ouNh(%X8qZxi4i<S&nnsov%!7)`o3XTf2>9pkf#^4t`*dtZw7EG5fp zrEaFy?HFQdGY5DzTJT8egSTZzgo|VN7V%TA(q{O<WI&AKbZSZu&SuT<iQIC;g<P}X zx^pp#I^h>%kKXXv$Zk$helyRM%z*}h6OL=>ri#gvlJCEN@Qcr(SFYQ)JSQLmv#%26 z5%A3EDb^Rw!=?<>03PRA&y#_yQO_}fa~d=GK>Xtn1o2Gnf`P8=b9~Xc<(zE_fKM8T zEpdtO<7c`y#jkMM(7gl0h^GxP=*Rd%ep!pxV11^i-JC2+M?*sz<6F>AnwlCMU>iD_ zpigFqu9DeCcNd`GZMeZsBL#<Jbf*rK>ReRK_&PYd#%Iz1{qR;^_r`x0u#36NHyIv# zQ$iY8@OPzN(EN@zb#w%-Bb>Vw6v}<do%9gD;V?1=50Jr8zRG=6LXNIi;rH`fJzei? z_^bC^tN-{7z`*M|;M?7@TMl*o({Wv2za=W?*l+i*U-zzT*ROm0-i__5{hmkKmCyab z@sEv4RIY1R=p8SP8cQ7?<s%8QyN>Z?7nLo;b&b~LKcG&I;F9Zn>N0n`OmLpQ_UqWS z69C`?uCMfcaakeyN(bHUQ^Bi#zD;q#x=xsLFyIcvHE<^QcEER9R?F>mJ&(1<k1bae z7<#wk-s7s#%tx=2Fr+Grra?R~GOfWnFmL#jXPsbJROEOkMd3e=SEjt#JG-~xhK-^u z4}A5mcA<vP;JKZcEiK&2q$)B)umLYP*LrHRt}i^)rBOA|>T!)v7*H^nwf20i&Tsj{ ztgQ?R)ax+jE7p*P3%k)a8cZ|eeg;O-cKr4_<uUdIT4jzY*9xG)L053b)981eK@6T} ze(nB#pHH&<7^3seWnQBmZXXLsja<KLX6;?=l}%Y7<vG6{=*#cCylW<p&rkMSibvih zefn6ZqI+Q$Kb_a6lz+?5iUam)!0@tnM((crwO@i}J??^xTxoftq5Fs&FDkE7Xx5`U z>1n(O4;^1Yy3J9<5TD4c)mA#OW@;X4L#ay)IGyVJyUlt6R|ld-T3XJ30h3ipwX=Nc zI=Qt$p^0^IDSSGgeRKnN=`Gykq1>CL=$<@ud)4OYrw_?U2h~jZ@J|z|ge9y&4UWJy z`h1EB)=@0otj9L-suVhOE`79%uGJ!#J17*E#>0nX#y0Kf?d=YCb>iMMNMWB6{2|NC zY%tbFCL^6;?cLi}VhO<QQ?mU|(p|4k+{%Xd@)(>q&FFq=si7H0wt@$2b1MbX2OENY zPR``2)5k9uILB8VEA`{u3BKWqmgKkqA0_9|=E*zWWFuscX<K<f=g<(&55+|%Hq1`L zXYFt@nyk_pgHbwOpVv_qvz^Xu?AtP7b<bGoQ1s%zPVVBQ39o7^ue01w@;vyfivlf+ zd$+dw#2sBr2#?us=c;k<T6M-3vw89dSbc(MD?%!r+|tE9I*PG)a0Vkq)Rt{9%s^YR z7L)J?v!x({YgG*Bo&&{<J#U%8t<w-My(SFb&ZAa3ShqpC%50E5d9f`%*s4N<`IcLI z=jjF`3`DV|^2i6Lc{of$YjE&(`~|c7i^Z}*=MMj8d*$05zv1L!F-<l&ySZg%Ketlu zbgY(@J)PXHvAvWH_IENrPxjqQg7LFXWWT)$saXAf@3Z}jUFn1UW6$*ez~|A`X!>K* zBg>KN?5_UcClC*_*+qT&Fj0#~lUuduC_ZNMg~_Lb8NCK?sYo2B7V+|QtTyqIjK7*T z4A0n_+Q-TKaGt1hc+_#`E5gA{bBo+%jVAFQBJm=BSe^9VDivj{q`>OTGd#>HS7%`6 zpZldl?8`=659yW8{;TAC*Iq+9b$pdUV{IUO7H@ZNyYPEXzs|1r>3(T&^INZY<DJ*u z)o|H2g5K&>+sT_Q+fm=Z<g>J3ZskM>-f8Fgt!zpR#8%PG=ibaCdFr~SL-BYaa`@xG z27%+j9)S&hVjErHBmTh9Z=xD}QJ9oz8zRP|t?G&|bP}zb!A5WS==>&OOFJ8qjU$7r zt@_vFo*_=*;@Gy>ud}yKLHF0FMHC}7g0|765DNALI6+qNX_rGhp@Fx?vvRRxNP$o3 z7>M65Db8lBB7)G%6kl=(8pj;OhaBE-y~4(*;W0e#YJC6VKmYshFaG{t|7c*%yWr9$ z@ZnYY;e3Pf6bE~;P@~}~UNgWS{`1!t|NZ{g7yr=~mjC|KV+`xLujtSr(Q%^XTPB4; z(bF4;UcApyyri*2kg{ZftBdf=P|CPQGeP3RMt5qA76cXydbaF+??zKUMKDyySyR$g z(*FsNBE++GL<!XWKDfuhswvY(=~5;W#-0;><@sjLR2t<E?-@}}Z=>8wP`ZF}_T*M| zt6oFrboGVb@&VAH?u~YLE{Ib*Ct#_ykxU)T?*TNNX>9e7v-7j%d2j?O(C(nf_yiW} zKy>YkCcGF%l|KV1;R1GWv2WYQb7IP5O`8cSk%J0g`QjBPQX>R<s<4B8Jl8mG6~c@o zed(j&0#jKtG&}mSeSH{(LkVb)CdBQ3x;h$ezwn*@mIKaoTg7XLA%5e>c-=K4Hd?OI zRXv)ALjTZTz2VKFFlOb(*YK!<)lJ@)O~ARV9k44ukHMb0376@L`yi`uu*;g$O_JU1 zqrt-C{^6Sg&3NN$^c~ID;6y%ka00m8$43P3AaW}Yse|usxVqtg<#P>Bzu0z4oZLG< z$+DE^c3;Au4)<?KD=+DS<NmUDGEsCvlvg_SK#IdX^-Ko?I#RB@U8@IM`#E1H9V>TE z2g_~uMq9u1fL?&hw7`+>SRFf4-!YO?PdP#qPh6+^f0SANbANdy-e3x_*I|}Fg4I16 zt@L=D?VP~n*wB&nDWf8J_6=YbzM6n1U(M=WgO8ca+6WDi;CG#l)t5G*6_N1he8-K* z3$}as;owyQD*JQ`fA0(&c5-t=!8#+_mPlGMs1y3JK)*dN=a0>PSbqGm;Lu|lTUAli zB4B;8@~1T4Ck^;Peu04oQd?#q)BE>w3v0JNmgjVIgBc!H((oI29HuLaAIf`Xx7*nd z-^uo)f4EoYY!C1HRve$UX@(LA&Q2$r*n~G$>ny2ra>Sj-3P0K7p_N5e;dHjZ?5XzZ zJOfzgC!5{oQ|f35w|3C-a;tarTQ+OcV>R=`!RC7Cg;_D3S8arLl#legrL-Z;C)D)z ztnQKXtDXfu{=0xjFx*E6UR{>z34VMdYP>KLejZtgtZw7shuZU(wTW-v{#@Jm=Eb`o z-@SNh85~vHlC@;K*@|x9$^3oz@<px}4RK)c;rRY;EzK?b@0X$TVgwTn3q(0Lcl!~H z!~L+Bz8=2w;WNSV(qTc~)hUV@E2q%>I1vW#4D=pdAZK)}rs;R}RM%;Pv*q+tnE;1f zJk=2^z91yet-kF02JY#Rfg2rYGy8kJR<JE`7lVCmM)4{A-*f5VWv66(u~*1uK7udb zr=G)mE-w#nXYb9hMyn3#HreT%9<y2eNNuKDVvw)ZkAXVK_++q110j&s$=vIU>Y&Xl z#H+<#>5uj%?yYmS)m7+9rg)2|e8w3lh|KB%+wyl}8*isi;5M%yj>_IQKvJiD`Vg-4 z8TZ%Dt{7PwL`Ytxv-SC=2%^*EGQZgGX?Ma!1vec-n@j)2o<}>_M{)^g_27}7koI_b zjStN%W-ZenZ~GWAgdecME3W~BZLBxlEU!3oBVoaXUx?^bysVSN7l45mW_f#PIhn?5 zkM#xdQ!+styVbcJ#^tl0%$t^|ZfEOk!5#@ZT=)k}mKUt54Tso)8C_J`J(#kQ=yVK+ za2o!8F$x1a#+UG`bUNApr61lepKQ{l$<y^@_AmFAzQodR8I?HgRBVpdI=Y404dO*d z_`Xele@qvCDD5$Pt!lJ$Fxx_s=X3GwKAsNU?ptAp_gl>uUwBV(BK;&L&;D-b=JKRE ziC3F<*kgd}fp1L4^h#U$)Q;6#6_mW}OJGA=W)9kkx6$rx1mS1zi17IuUW;RctDj&H zkv<(RO6$COr@yyOu(*1DCA!zi&IZGvjy&2=M|ye6&)1cGyfz_5pR_UCxVthY-`?7f zM@O}?>LY8P&W5AGW9seNcL1xKube)>qYT@(q2Iv>&cVGp!cUrI`{WT-Lx>hp^=+h9 z{?i}iE4w$lqIdEhotX|)+T%nz_cl^{+lGi6;7%5JQr5Kz28^9+Q`RvaFC^ABq2aJ5 zuK)9K&-oa^^UQ_;CIK)fvHKCR(WViT(Ny8}C7_L-Frpmip4CgZMv`cp4Ll~;AqkO) zV(fyFDl$Vxk&LQg+{XfwUw{9tceH+LV~nRdx}Vw*q>=h?IZmwfUYh*(Uw?b?dpmwo z*b@{9Msy$(aveO1XG5PaX}0z2@54n902j~fJW}BBQ0CFd4P}iv1htVBG#e?46Gn=D zEBNvnp(%ECaMBwM2P2ralK=2qjn~^?m*0!l_bxn;8%eou+4Ps+>a^$hKU4l-RNZ(% zfO9i`yFZ>%$a2h~ln?EW6YB6#(OUXOpaUc|H1-c4EuHfeF2k<y#5KjuNoc$Up&H?; zJE9B#gV_v#hQ5!6c@7Z#%78oVl2K*h3)k~i4+HJDd|Or=jMG`FY!#i(5Vuru^s5}G zcntOlesA?Gm+A!1bmr8foJ~)j!{MPu;IU_}je@y1JUTzdrU_!8Arx$Z*_~y5IiRQK z&TDW5$m)g0co|K|>TmbEIeG-HNcQi{HizSGV8MmE46CYpJN<s4Qwp%#_&&_i0U6c1 zL!o7ehox~4<9GK*R}vQJprwENlb@UvTi)BRd*f$7<{a?0v^ZDBRkFG#|3BTE4n^x# z1rjxsaDf9@kfeFrwOZZofq(lhM>IMnW5AT}8V<umUKwr&p30`wb$@V_+eyE-gsI(C z@G37)$CbzV1;;rRaFDaZrSu!<KhD4BJEhfqBX7Uw9Ic@IQODr)@4A0ok2fdl_=HEN zQM=&~oIlqw9t_!2foo@jcZ1{Ju5ZkuT3|Sip2W+p)0*l2Is=utWMQ^o-ykpF{{5lD zf5sWUr<!2p=l1@_wAU<=IStE71-%*~d51%?2ZOC&u$Fd`zwk_Bh5!IS07*naRNq_X z{+)71FT*T6l`Bvv4Gmo+*8@wCeOF_urL?2}(@VR=W<fP>mLFRwbe7mvIHlG0cwhTE zq*Y<Vmu)7M{<3|#WZ=hs4?45jtbxx_T9o>+YcHZV?{aNGh)niS_U^G$yt~<J^_5)v zSz}&XDCpQ1ubp>K`e+_${P2;}Y_0Q+Q1{;7b*>-k7{+&F?H_7<UT6P0UypTq;kW%M z8btlr?n0hbd&ozAF2d0{eew#4%HDhQCj7cQel%G45yl(zT(BKqZ8)_V0)$1=y^Vy{ z*p**fT{{`dr3w0)N&kA5lIj?It|LwkWQU)EeyfOd2&`tB{|N4@^yVQr22FqX`NtPO z|NQfdy8?9A=+P;D*{u4R*}_+PaWoK*Hv<&@p?CaRN!mqtkDh3(R7h4Xc=Bz~htNua z|AE$3_oUMS3EFv`I<W*0o54<=<Pjn(OV6j%U9TPL7min_s;k8XL0tOUH{cH<Ywyh9 z+K6dwT4i-gyvz8*Z@;a6ODV_G@@Oj_n#l@-;Ne@c?e!r#ua=q%&dt<=wOL#A#OL4J z#TWizx!J}I{DKla?pvbX#gT8giF4ox{!6PgO8eaGxqL@2@KZ-1`=e9Yo7l(d4*ETP zjux}Z@|#!?pBO+e%l`_E<178Z@bKnOf+u#u@4fzH_-7*-L(({WEAM<)nb?ZXoBHUQ zf@i|u@E8sB!Sn2sPkB}y9O2~e_I3Y!<6U?<z@NOU8-8%r2}Yx()*E!G+y>3dZ`GkT z6)rmZVmrI>(s%TtW12HmqbGTpAP8!CiXnor=a4rF)J6P+r+DG3S$BG!e61dEu9M3q z_v)bPSqvF&Xnxr0hjgb2B07NB@jZFl{kkm4r*jSZ>ETxX@N~Qio5{bDm~>*b^4|E2 zStqVyVK5KO%q+XY)DCdqGB~?;@=5nSas*NgdhT6iBYF405#|`mXyfDa>}>wVGqi8B z6U&V4n7kRz&Mo&1wdvgWlqlgx2Kd9{PW39Y!Flkzr+v|pw!xJp%LY-;`(J}u0X9YE zZ?Zp2!STxAkpYkUI>9=VuJ>$oK5EN)86>*$RbI!lK^A5w-sgCNSxVQPcXsqRpGPO> zn5Hdtu=OpXLI*dz<`1KB&+I2p6K@`yT4#6q5lj`(`(!U|vz_#XE~d+;60!>iwigbm z(5~TORmGlosXc%5u7Q&u(5*ihFZHYNv2sUV!5PxX$maT<)fC~SzW&96N}P1(VUiA~ zpW$YJ7T=D|gmW1uuh|59GwW;+kbit=DfYuwg>29*{P*};dDv!If;mO3ZcI`!UGB6z z|9Z6RvL#EYMGVL{&FCp6hG8J4u91uJ*7{@FQPzk^5p|Hq#HgZZ2wK^$$yER`1i+Kt z{ig(Z5{>fZ?CZGx_dkAp@%O*~<HfHnG5)=g$~`NUW4CbyCSxeV*0F5k49d*uf~qkl zwAa;vL1StRHM5HW9E?$O@67rTXWunzS4yzMIQr?@ea~|I&`7gg%1qZ=I`KMXZ>r$M zhn@)#Oj*usgvDqH=4-f&P;3cw%okkQT+7a7M(g0H!3~M<!wrI<IuyUFaPx~lMlseg z>W-NS%C$zq^|6L2g3+04BuHV<XxBFndAsToPFQRJqkkD+>E%^7N6WF}n?t|LIVZ%) z9mOP9JR^D*3wB54CODq^c5KJcZle>LmXy#r%1kDBzd#CJw`&aF5?0rJAuZp6n&9FJ zW#ydro~-H>(%2+rG_wxR=y9&&F}$if0|kl0Jaryj#mBgKW`cqwz~b`Ij(Yh?X*2HC z>%DU4nZ}$;j1wH4hN$Y{i$EnizZ^Ei{xGlO1a>WJUwEOJyiT?5U@6&U7u|Hu@}<ni z@LP3#<z3Zqxz(#<unt0e0P{O+SHXhYg3wXt7H0vS@&nibCe2)}gB=_<Da>j;<>&)E z2UmW)m(O`{cee5ezr?a5^-G6>1!Q*=Df=nY#Yij<(6{PNL6=}Cs*LMf+3y*gD0ln0 zK#-;U>Tz7ST=H3ZX(Oj}aIdmMwF_l;&$&E(uis90?pN9W+cBP$h(||Wa*@d&1(ZF! z0OybUgXa>C7t*Kr>YZ<>;9!T@{6yD2)0@gJt+MQzKXC2*s)u;dGqB3u;O(CC66E3U zI1~3@Hee_i__^7*|M=@)dKBp0i;wFB&;|O7o}(AwDFe=M>iW+IJOm6Baplt9`L#+J zD2!{>cjy6JV5l=|5bpP06Zh?9%X9O!>(rJu1ge1Do0-)H*_6amU$eQMPcrgv2KOvc zWUpr_@Rn=gRcT>UN4E|p7>DZWU?B}uMU2LF@1Y%K!O|IwuV4yr&WJT$-)#NH*9D;w zdVIdXAlka-Pv9iLGNZ9ggo3kOaJye?vH@9}2-+c3y3V@YMn7f$oBc?k8vySKo7$p$ zpjo_!I?WH!ZuaS+wwq@U!BM0weO23y$LBRK@w&R#c`S!n0sdRZoe#cr$GhlX)hUJN zW^%Q=<zq;G4(;JqRrI#h1!rbD$kOu4*9}neb@yf1;6j{zuG8*)udmuI^uFiLj@Fz2 zJ8jw~J7N*KvRB1Ws`xN{Pc9pL45kjrJ{qph%Tnod9^X61b4RQjA9T(SD4giH<(VAg z6?=K0`vsM2JHy$)J7O(M9(3)xh7WGwS7v!iJu=oIz3GkiD?Z4kvnTJDXS)iQx46TS z@y~Tu!F~+h+Ez<otHXe<UorJM$^AB2zX124yxt}K;rDiCjZne+U5{sdYbG#}Rg5GI z5T^&#yI`}r7YMg1%wWg{w38$GXmiC~{QYz#9?*@wmTHqB<a>Mx-9S%$zuBH0*v}D8 zDFS)GNqfEyQ+3(g%8HQJ6|$TgK4e#DADlC&U^aI;7_YY(&8=fY4vzVkDqgHw`S}x! z+`*TWC!E*jDpDiA8U1(_LVa)g6mC|C(Ov#WJON*D2RnXUODI*X(_}CTh|L&w>dg=Q z0RJ!)s+-FIlW&NP!HN^{Rfmb??OE9pJP-ak2XG!62yC{=SD3J1TN^Oy+zJZxyzZG* z9h%R@%sRkUxU6$i<pxCzM4I8<v&Lw+*}>ujqS)u)e+O>(O@_(o>g3{?djU*lhh54Y zQT7WLu*!#5j^)4oItS}K7rW%8?|zrDaQY+;JsZyPy2&}e&v)6``j_bZr8xY@l+z=J zZ<613POjoy+?nL)TxZ@+%$5ePtxEt_*FbF@&dD~J8RUspFxcb#Z6}%bY*GC>P<y8^ z5|LH@t^T3M)uH40t$5f#BY(9OA?YlCFy6$YwJK~E+&~<^dSZ63QrqA@dxcl|@j{te zgM$a1&B*x@o6qU@?R7p@HZ%xACip5I%dw@Kr$6G6Lio@*Emv2AqjOufW5?ltZzHMs z{%X}n2@V^#D#T+Huf1L=2GbWyoGJB&&Z<)<nIB;6c4*hh-}B7X9lA%as~2vO7wy#% zZ$hcxa85STwog<1UEgpVKvp_!z$h9Xb#hyF{rLDU+=^9WCf%8i-Ska`gHJy@utUDJ zsgU`XqxL53t8~c3ZVqYsTV{cP23#j`fkRwZ*+$qS7)#4NhF5TTJ~ryW;4yfk0_9(@ z4QR&#j{=h|Db84bZ~OIMfBp5vumAY%#cy4|_nd7VU9Stm7|WCywg;_^tnS&|6mJYv zQO7l6z89^x#4e0(>2+e)8LrctWBt(i$2zwkV)|X91)Kq=b)0Zcr7gMzISg$hyea0k z=Wdi!r-IT>;cKw>+k4c`>o3|YD?|GA*G5#o{1)w0oI>cFbGGp~22<+Io>M{}LQ5G? zfk$()32U7x*WD*Gb$NbkJA`r$eYRw-^nl2<hH8AS7HsjH2P`aOGt0V$y8G%}5EjhM zOmsbG%s~3i!E^ZC_Z43-x;bk4vysU^($&6>V>F)rFCLYR<C!6yyod?hXaQ!Up6aMh z^$fIv&JNJYl@4rI(E>KhLj-1UG`pl6$2jG#zJ21`XebSRaNo>R=`4P)XX+kYjb4*| zIcrqtdwFIK2Ztbi$7PK`x7X=~<#6rfcD}l+^SYM*$SDx2KL1Ad=u@uG1y?4e&&cS> z&v@5~3D-GRdBD1O1Ok@r{;7LVp?`xXD_l8Mnnp)lC*t%2f6~43(oMgP>%W1AH0Rta zZ8};(9hW_m<G1hXQs4J4STJ$i(t|Vb-M`>hbm!-KnNONLw|wwS<p<BNV{rOaeg`;L z{_EE5-tBU5`2}>A_5Ww<PrEi*uJgY0sk!QmH~<Nfk^xfGNXn95^y=^b33{#eT7Kcy zvekB*?SUkS;nY0(|GVPOLIF}fbysG_uwzfLW5<~L?}7(cVHdbXFVPA2c*TF2Mmjji zf8qEUxI7_s;d<_P{{`N+{NT8jCW5at-aTLU6Hec=U%k+Cm`$F&FRYNQ_F&fvyJWI` zVTkAotAl3GYq+{g%TW+9z1LEAt%&L%lV*A3x8FRy`_n)D+1<~6_Osc(=f!bt?G2jK z^aU5^XokFEuW~MY+~Hrb>pb4yKw#xp&`#i7rrMe$RzE3w&d&Gizc<-!&!4Q82~W=T z(UUs1Y=gAXvJPPxUuK(qmwj={9j#`5Ys9lrM&1p;#=%TPZ3P&`%|?~hh%_1N<j$$Y zm&({Go$%f)ZhZLM-erJKJxewmgBuUFwV=FMq^wgXYZFUyttc{QZUC3lZJFq^9E!*F zXkK<M#gliB?p{B7-*+E7KcYd{wNt^i^zKb`n4x&mVN~`?+5`KzQ*X%Z(ftlGVdta` zrcShhT9Ot9zwNKo1MHb&we~enL`N6R4*X&(9t2;P1VcFDhwo*ZLz%x2Ob*OeRmGFu z5^1)2qK%GMFFP+Knx4ghzV~QwQpZ<E!D;;WbHq+ZJe?`GKI`mx9m4G)&slrWik|Tm zFT3V2mwJPe3pu()cdG%zjdxoy<9)G9OSkB(4w(T28Xyf_RUbxUK<1$3beh4HRy-VM zo24(Qa`3MIrqie56v|ml(x1<k2%dp?OO#hX<Kg`ryw()AG`Yhy8{Fq*H$Rt7#1~76 z%L8W~m%4psP%A6PH}Td!(%&<n12^p*?NTpwMzmQ5JABdy&^L92-k3SYvvf~=Tc@n> z5FQ=;1@vvXY_xiRQ>O~<_TF;B9V!+>)>#0EF3}Zw;vmO;n|Bpen~}~{B3|l5(=jt- z8z_mC&4#V+r$d!-bs{f2an9KwSDo);n=bpN!-vP-{qR6OI^ydWWV{Xr8HK}qIXK?Z z5BK60TNoVCu2rNJd`O4kJgnXwI`Nfq>5$9=o_{Ircn|~B2fnpVyrgSO`C;IS@2)1D zPo!B{5^Mts3Dl$rTM{Cpcb(kuQnrbd66|myo!l+=3_c$ZjvL6MW5LsTMpM)yw)nGJ z6Q1}O^JmjaQoR4vm43nZQ_gs>cY3}=C%iI0zso887uU&N?qo2T6jzpA-UnHnURY(? z`e#Y;SNY}N)#3W~*`vE}T9vYI+@>dAWzV|h*Jgc6%Y5nBP_HL#NyP8ft5)ryO$U`t zH)s?a&t#8#b<0XXt6;jtQgl|of}@^H_p+PslQlVkvv#V))4TBan4PqpB<__d?!sd{ zLKR*J>mm3$r8=XdIevSlPbTe7TIH)5I`0iqX2Y!xn9mI_aOnnJs9w-ZeJiVG^ouq) zRAw+)h!89O=+V=bF2C>h>G8{!Fu$se#_tLW)+XMf-9QuDw9jgFKc94qp2>)4=y&w0 zbJ0mZj@^q7rD5Uu*=zeoJ4+Qw;gm?qQ@YCBmR7X%((ULq*@puf*9RfYu1D#B&xu*B zFnTLvHa^<O18<g952u3YGs0$Jio@$azVab5auC3P#*Z1ia*dgbvmEIr>{Xta^ge>8 z<O(dGJtG`(_U47<H3`@L3<|;sQJzyF&3Zams&9)mbNjpB{qF90CuzRupeZNny)CaL zFt6=N$oN8+G4;6!a4eUD3sl8{KSd}2BXHE`3kc*<h*{^aBh-eZ(&oUlJo<MpnyP=? z=%<Q7K+RSf!A!L~Y4c-Co!bKzi0z#Tu2aXPQT`ciq=ba77$YHp@1EXA|2ef&$D3it zgL8Ubm9){S?9eeb;jNOalXK%WM<?v32pV_rM_Z4T=4E)=e^6ApOHb)~ww!dcA><NG z%C^ybOEF5k3d$(+&S+imr2*s2zy>8AB*B%bfxu7Y2U!VwhVSVV9cAWBGT26*?VVt> zE_u)oGp;idQ#_SFURTOdT0HK#xc!BXyla$hWy)*hO&v25I-V-C@Uv{JrC^Qxm~b|L zK*k*5jTjx4g@f4(T#9aR;9?{ycn=z)GOBsMnGi?w&*Lg3`7J%YD!Gn4y_^A~XN8B% z@Se;{gcrx~3703BtHgNc{bm5fNzk?1?LXxR8Q()?0|0_n$|-C74_}7$N-xD#4?OQu z;7QQ!6ovzEBzt^70z*U{T<*iOn1u}l>VQf%@qB5P9}e*?9{$&^i&iDWnQ;Ysz+~|5 z23Cm%zn3qQ+>$L!ey}dGZX_L;w}kRu*Pi<idWWX)C=#~dTo>M~Lvjna;=o7i^$wor z>wZ1UHk`h=%X{(s+z&tHRsQ(U{iOSS+Jd_93IO49{63v$b!xKr(skgUuoG8Cwxz5N z?7#pg)K4B0YMJP77v8h`tN_Ph1g^|e*Ky4D5-S^=%*sM?pr3Xq$oDNj)gZsE^Y#8i zZAOG;GD}mzmH8R3XaSlQ?Z6}DjsXjV#^EtiL&#FjEK+uv3#dcZTlUwUPWy?@Y)EZF zw%Fkr>vUGY>+CMnX9K$1d#j_050)W2P5BkuTpc#cs}c7F0W1ns_h|09klFUl&X#x1 zZh$#F>+FRl%+QK=I&?bIW|cM6=rn5oS^v>ry2+Hiz;C1%4&l$XuCfKOAUiK0+QhTp z@8h%CPrQBDN~WjTvu|<&UOnkc0?l|lN=7=wZ}I|PXU8mmdtBSuZ3Be6_iV9cRL-$E zhXftHfGfvO`~0xROox~5u+8h_YWsVJn^DgPF>C|MY`&qgYy)cv<^7^#Gv@dNP6u9C za(VXgT9MWFU4vn!^g)iygUQynnBy^LEx8Q`Eb4i7Fu)v~%}x+hdXY(<qZLUWR@Y5U zvV{c1{z{6kez?0t$(~<BCirUx=X9#rw9^?-msVGk0XbWFut9Mh!LFz#>FJHmnpJN) zpVNEtE_U(ZJp78+?vTAslyBVYAZ<Wn{LjhP=yM{{AMMZkH?3MI1LxM^RRB3PTgUQ! zBRTZJDXe@Vr^t>irP4<75CS{dpnJ~Z>K4pTr_FbE4Hml$dYCcxRg6y`8Wbt)_zGl+ zS7=QGlwFzAhVp)>0A4_$zoVU7zBUUlQEf11^(i_kY;|Fs*~+(4jUIex&}m~T_)5m{ z#-I{B`JWEk!Y4~`&pye*<K;ORH63pD39sQqw9+D2n|{Iyg-`Dvn$n()ubf^FJ~!U% zOBChj$E_21qmy4n2a!;&)rCE!#|8CxbctSXqNwuMc@3u!lc3_=OE+2In73pb?d*pM zA4|ROMWaLg&XUds><Tl3909Xm^6ku%>V^&s-5Bk`<yX@Ww&`)-(B3z=Ba%D~=;MwV z-Fxk^H}pYQ(E83dSHrn#Go08Vc3?g<;WM1Ba9Mrol}?S1`Jd=hr-Hm>`)|BD^j`jx zS~OqpRKT(wzQBJraek|Mn9Yjc&m1__gvQhC+E?lN)5_ZCe`eQuuil%$u>zGWQ}uY# zF9*;`^#(oPHCV=$sUOOqU;HowYWzglTbiuiKCCRhF~10&mY1XPwUrfoz{>BnU;n9B zW!4_@dv;29dHNU7%Aoh*Rl>1DTIsgmm+XRp->aW1D}Lf*&+3Qxt>TFnjQ1xxp1q}m z>>%FJbK8b=viY#b#)U&{hvH-yOzmdI;_ky&U*ElJmCU<3vvgweElN6e72oxbo-_dV zwDR`pEa|krh0~#T;j%LnGClWd@WNv1F}oPe^LyhTOY*LKY(KrxF3jddz;aa{dXYlC z{P0yfv%T!)=c~)BpXHFXb=YyVu!kMoCtf?m7HpY+WyJaAL2?hPcgp$W>!D>`kgm4H zP_t!#R#5NjG+3S+GDeKfDDY8u2a$#1L0qM+!Z|6-CxJfbnFN<1ecd4xFP^_@B=<!I ztWNA}dvRZHAMQ&txGmMu0X-cT27^(}aiNqH1ThKLH{o=&&tXUzn3UhX6O9yQ70y6% zJmk~hKdoXvYYBu({kG35eCU%zFU$t~u5ayjg0oo&#?;c@uPB!C>ik$vqTw<cdoMzL zpKr#)@M&}#5rvD(eikQ0+kb2Hh*5GZ_lFu#JUOF>&HOg9qE;{*zSp?5=nPDGIB=AZ z@_lHD0?(17tI{1sIL`&n#xhoOgo%yLCtv~(OtOpi48;zoP$}sFM0?=4ZbYek{aZdC zx&D|1_}EDLM~L5)&tL_mJp8A)r$X8zTQO7A;hr(kNbN)3$>CHsxJZTG1}HQda7ni) zxXP{poyjjOt_`8(t(+O&bZX9R8a(`y1wGhHX*48fp9aORs9oVQV>50XT5mj8z&f|_ zAasY%M&-l9a=d#rh(@6`_*<TcLC0=~5B}duK(C1XlL(JgS|g~HLHBo+%6sWIJ5o8W z4I)Ius(<l#fhh0SHF~cX_X-eCACgkKULHjF*H8JbHAKCr=qKz%%pewzlV^zwUPxEG z{QE=Fd1pRC`@r8FEofBAxyWjldq4W&j%Jr^yLz1j3m0=sHuS;U@+OsC+>OaM5KF&^ z+kea7^A!))h113Lo0wMq;X!bR1AYIZ{GogCsqo_H=HW;8uFtr7zP(Fx;qeD)N`MDs zAO)w*b>S)$ZW^vtjh@x5bBR4^&)`ULg1}t8je`T{P8UvMb&P{G-V5teFW5u{??9CB zfrFpolo-|JIrUhcBWt1k0KbIa<AFWxJI?`eAj-Zs`|{1*qwl|4-FTBTzQL$$6I;p7 z(2?O7oP7f{`5t)6*Pe`N;as}D<!8hmbNX`5=)T8^ud#lV?R?yxPO}};FSa?m`=Qy_ zSC#Qf!&g?bRso))W7(CHIGw8eTqjri<UI~>e)ut)bwOkGzNqL34!g9v8qGOG;E6-a z@?~GxMxS)hA-8o$`qSygrxK&xUpT1WPVsbsqty^6WHvv0Q40Wx;m6*8${y(nyk}4Q zw2=MD{<c3Ymc6J=eVz=S<qV?P7XzNQ<m@Z_iuaGo`%uT?{@dAJvm#B7RM+ZI)h<0u zKhSAbjXrYv$mMafwU3%H=2&gXa%~!?e;tY7J(QS7k>kv2Ba6A)%AIJP{h^cPF))1i zoXl&xotAA?m6;pgVSf6oCCar`c%r?c56^2y9lWy+Ejp&(+9k7iF|2oS<Yc>$`f>KM z9s6-Q=VTa7wg2)Q8(dg8v7SX0@0l#p!+}LVxs-nGzRpq0z5}2Q>Sb+vK=;l8#1s2& z*TD&%WussXDevO*PdIzd4zcX_?W-JBI@a%TPQ8vt9z+8fDP!rK-25O}=+N<p=(_=m zxA`q_dDcM0r*t(p9HMKd%;uXR)p3GLpsRcQp(EFi4e~qm$&C5OX2pkldCdlL%=tgh zI#<N<>}u5V8N`a<ErC_9-@eBG>U1#qRhtaaaW4P)=JILRb5>@5jxVSKOfK<y{D9wa z+%3Jvs}K2ouYzwY*c19tT9X}cRW~@|CK@>4>(qT{W-1&Fpm@h?@|n!okYr2;S5AEA z7p)TzZwjtHuhtdXUypPSE%2jTCJDA&6ccNc_`F2(vijz;mSCUs6<xWHt5iDabR7sC zJPtTL>S?|mdpv)lGOa|}*#Yr^4`{&cv8AGQTC6cA6Er=lUT<bCKxY<_P34b$?5iWs z=i6-%Df|kmEWQ+-*Ab64#PV|pEPJAEqs1(lGfHf^Qv-Co`1t<NPcJvP6ft<B^EJYP z8J9|fr+9;dAe_q+AJBE`7A$%$-9QvSpYE1N`uX;t;9Ub$k6W$xEP3<U&EERlr!xxJ z9G}?H8G90a52`2X-nK)fUdq_yPI7u2AGZg!JWg4LHIqf0I{cQ;mLopJ<7~Un`LK!f zc%S4dt-gpQ!t>**NBp%2KY#p`;NT}e`wYxRY5(TmmdZ2kXvf(#b)O7Z2b>-szwzd@ z^U@dR7o+Hk!^vh;@v4OSW(FD^4A|a;yVuWuTb=l>Q<d9Gn>~0JzE;0>id;0d`XjwE z>;1TI@O^sxtgS_*38Xe^a$4Ehhe#n!734vEpU0LhH#7bqyL6wOfu%YDe}|g|AMPd+ zKim6cw=){zn|h)Dr{hZ#@J;=rL-;wn7ky_ifD~NP(vj}rJXw-w{PKfuqRZy60d?Fn zYC8Z?U@`Lr%14*BtURDACp`c7diW|MD3ar2MBKiKv@gbDUTB1*5lx+-&8TMRFy6i; zqpX(xeyn%-J|%k9vg23fGXnt0H#G#Wo4Nh*w?8(M+Cft_c5gCb>l`*Z{j%Q<PY6L3 zLZ=8LDd-s?2{z_pSV~4=jefz?%MQ>g3_FbQ3a3Qt%xNSTjFfqwSkOr-8>M&~PDaqc zawPvZUv<zy-_l)WAB0NuVdN@+eM;7%YiP9W49>kbl&=}!XfZ<VyJZ}Ms#U_cDQA_5 zv0>aClAzI6LGEQ7@3()-Qaz`Yp^q})yLdv=8R4wrNyLpd%LF)T3=#4-dr>6gH0PS3 zXXv6gN%qSmtz$@zRNBb8`!Sj-5gBbiuu2*HjgsrIPw^<P*&IgHayX6+`fJpbg}it^ z<Hxb<8M+z|4cu^oZ(-N9PF;DAVi(#o7)N0PwS>VAINHxlZ1IIpM;S1DEdCnlJq}EX z!HNc>tf#{iw82p!Y6f~{^iIVKSGdK;$2krfNDVvV=`>Qy!#3kH4#6|IMZaVlU_g7% z734qI^$%}PINWE>VzTnKlyv1~Sn*ko{&R<iCx0Mu`sbV}Gn`$Mhcd(O>{%9ykEL0B zcn6T7(5Pab##gMy%thWO?J4+S0q}C+TVf8^rC1&@@Q5pmFUj&tQPHKR@9EZcl@=}F zxMD4~?V60rvv>Df9DYp>E2rlIdhEabTRN}Tbpt2*Ts;hyw;m>+Th!7PkA-yX#+Id7 zlH$Nwx-aqw^E<em2rwqEBBa04?AeR3-Ra;hZT8@zUpnyIg`IGX8$D;_h2h`HD`9qi zGLvz9z2Fx~UKbON{**7+0DMkcdhjl}i(dJY@p%~@gL~3m@q@3fpB%$IgS2IF9O|q= zvdU?yA$_O5XX_p|qo9GU@~$A-eEtp;nsVq=3VPE|AGz;!H7DV}uhDim&Ep0q>B5UT zJ<z+~p5XU700CexeX{2393r3OdH$+)B|8j{4D{Vs>@=I0{mk;#5w0`bdwq=3WV_N# z^I@E0?bxv&;S%0(#>Z>LjzM1t9ND8LxCLpfjjY>7<2(ptYo*lF)!k7Z-B?kX%5atP z$Y*!9DqM>S+H&B7?`ea9%kLUw9lfO)FVhiDOGD2clKATGas1%~nEiP4#<JzxY)H<t zXL~mvM&rvmp$<DTF!(HcC(KqD4htvok@re`tDS1VlO2Gwdr_fy97g!7*d33M%#%xP z>4Oq1f4Dxt98-0ri@j&oy=OBO>?$hJ%r<P6kH{WptD={+vMh76nBJ3F(8j;}oWH_U zW;T$H?{hwIlnRek(voO@=+0U0shv$S;kAM5XpXtHE2k~38Q-kVlR7PCEq$KwQ@TWV z-q*RjpM&@CUY~5qC!rmWe7BO!yu};s`l+PxPrHQlc(T2zG2kIQ!{<Tee$p{ZzqJP( z;Aedk7bo6*tjx;W{?~j3I;Ol&?YVu|N;!1vTs|w06>4n~Tp2n_{EZ!M6zG*XKjqM8 zpkuSAwSAVw#(`vFB?P}BzQrzkd39jtd`ABU$YUPY#UO~X7nh8Y#wN`!#Y1*WJIfI_ z`*rwTqQc=KgIVG6ou1U#@}u&4Vp;qOfj9Y{XSK-9Cka+h$v9^_GWi=@kq2gFZBin; zqpt1HHhc}CGx)(z#kcSZHrzfoAY*Xo+GETAP`}r%27C1%{^i^Dh3bPr1{D{-bi(+! zFJ9@OHVYbV(={;2C>>z8=LQruy-3&SuI&$&bWXS9SE={x6I!o36&ufdmmCabZ*Y*0 z8$SHP=|ImevO<3-V{3df)B(N@jId^er%TDLJhO-4T@jmH(wVhapIy}Hntv5gof5oM zi^zI)KKOjB2tRV{o$q;8S%hmaAQFqZj!waOei^<OiqBAoi@{dBRCi@zBPF8e?y2DP z?Qzeo&AaPM&>cS2>V<v|;d_+dWd@)BtUl3AdazGMrMn+WqZ;bi2E18qQsBe6TWu35 zWYK+lYb$iKxs5SBY_d%Ke8>kZt^E9bD~86E+NdMr(uC-vI^_BRPwGVKD5Gt&i+F;! z97;9{e}exYqD-O{5v$??5wN-apt}xw`m%l00!sIxHMXDngpkQDJ}Aor8-r9Ie)rqE zd;j#0>CF$>&F`CS?J&mdEkFNLgPLvZte9*_jl`$-*|g+88KnqTHtb9#xHg3Fpo18; z8X<kqXL%QG`at`_jD7k|e!T~)_9ccT%eFdXKlB9+Q2C)_oU1*YjFTVzxO`E1rT)*C zj?Wux$iC2L0|R)brs-#FrAR_>#*%?8b{vytS4&HFB|A7*UXSUV3BQnEID6GUiGumZ z*TdiS$)1h85qOOI%9`%9<3pWNqY=v6C{`@@V#f4UBZzO(oSkM_P1DQfSigAj=I+-W zDz)$B##}SFzV-I1eYmgMYrEwc@maj3$}bCNoDlQ52akA-Wej?s;n#5)u_GJ}u_k5H zgSR|cRo&8qh%*{$#4^&?{^+FL557vsAbv`D%%qz6HFC#58ig||$}x!A;Sni4rDT!( z>UHs*f@!q;yJuhDegDJv8|nOQbl!gvP4`}=p9xeZMyvbV4B5SC2%`xV-JjlCBOfiP zBQY@aI;rSX0X}3c83^GKT#C}&1d8VRVacU368dpw2{ge|2H2vpN+y)!#5fHWcwHcR zTnDuHjliW8TcT8BxDIp)mfC$dB;#aYmekVgdk<^q@e$wgR^_Fz2q+K3i#mpHwDk_6 zX9~EEZg^Nl07lfpWNG@(zrm5mlEu?mW)z|@e74M5lKw6pC|-pKT=9j62Ys0=@b>_f zq>@zbGxD_Zqs2(4(K)r~esoA~*2f-*?93_`*k*C$G5Apl<NJ6Xycz$}!mHvd2vSOu zzyI;mpXcDXOLlYs?$X@SV`7)a7#%Yl8m-Eao|(F?Yv~n-{4^lJ2ryoc^f5<jfd`j^ z0zCVb@04039?M+0>QAZ<)un?Ud=G7hC*!AZS;{lx2FyXf`g!s?Ni=kT-F3=8ah!yc zFP;{!_%W>;I&WDPbUg#|MKZ682lq<jK6p1=;0G~P)b(ZlTav+89VuSe6~45+e3{4d zbzSMaUuiGg@#snmh4Jso*nI<gr5TL=lZM>z-8UL1d$N?KA6R&{5l=Ru#M7M{Owaoj ze$u8xEBDkF$<%vztx)9wT$xK>@buycb<YyA|KJ$C?OzCH$8yp%fcDPa>->br{d9bG z*j;&sZ*ZnN-R&Q<y5(F)Z#=J4RlGVuSA3uR@wdV4ZWhodCcgg3_jgaf`?k^M8sKc` z$G#K$w8rqGjzbL+hgDsDodf6uQ+aRzZI&u?2G!bkIg|$JF1}al;#LcSG4+q{kY`6Q z{`^S+Sz$wZ48wnWpV<Q)boKQtL&Nu=_m0=nt;35cu5Rl0ABXF7z-hDLc^^vUq@m^1 zr{naTE>1S8`1{Sy{Fn?3py^QB<MwTXw_kTUm5vby(6ZR4m1jxdtMGkf8)#_gEIx{8 z&B|6DWz!$D^zSUGt^DxJEUaCr|GRb;lkjri7SFysLR-edvPl?!Y{M-bQ?GSo@KmqZ z38wgC9~vILZ-DszgLJ0o>2Yi~t7n$NcVGjQ?6fiLG7cn(fEnmpdyb90ZzWCb`t&x~ z>W#FVr{Ne+dcDa(mms?175VC{%?8I|`%ho|_`7W4$J<P~wwP|!!AY+sOO917-0)pq z@{KW-mE`+@iD}VY8#mH9nbCp<PWxt~O7pHx^}A%E{pUc^Nvp)xIV`P#m^U5L1^s97 zrRu&Fa@tburxUN&QGJ-dmJ_Hmjc#*#{F#sG#hbS;gVE=Rl9*-Be4|e~Nf|<px>*wR z^TGHi2153!lHRSx(*Z<}G(Ch{w{*!M&xbmGAw3?ViA=Od{HltplUhfha1$2v=xWc{ zl7-j4^S}6V$8V{eU~E>hG(E<%a0>=M(wQ#KOEKe@xK}UUv{KM##Vo}y%T^4;?5%3p zDvR>5mG=DU;IUowaUI?1PkcfY4&BP|YQG}gGVtM0RONr5xAB3Un$Bc!%(~N|AQon+ zFdikFf*goMe|@fuF7|IY)4&gPAl7*dr_KEHp(U7hYU{z)0+-qVdptnL)4q>-^w!Kd zThPjq<ZPv$`m0XC#euC`Qi^v5Zh-FM>&`ce2J!@d_PM9i4j<Yk?%<@wMHCso&mpKi z3oB-;--2Nvz!iFvpSt0quXJiOr01s%E=>_<Agy$CCVTE{CD$p)Pm<5m!oBaDf%H^I zH*n+q2FiM|n()2$gpbp^{*JbQZ1Bn;$qt-K9i8Do7WkSr4lWt9vvgCfhMx|uhQ!S8 zzGE9L+Y4I(j~;cHZFQ*Lc=@wu<r&YS5y`wJ_20?l7DhVM>3*}&+J!*QH%9k-=IVrd z!7Cq2$MbN&U1q_%_$|?m&pS}ALEZO1{`T(KPqX~hzt`#5dn-sE8*pTMAX2XUSaUm; z$qW0KO}847PHbDBN-$g2&48sr5N%I<_BkSxZTBDL>(iHbOApjrcFHOxeH{HAyv7GS zB+F}%61{6b3s;XKw;x*_9pz!e(B@j-fG+m4;?qi0UsYKhjS(gz;Uk?o^VvV?d9sFI z*$qyrf7d~l2m0^-fB37v|A%O_L$yL8@@Z?j?<eRP<_riyjpYgVO?$Fl)F8af=s0vr zRov0h5&yDfY|nq}#N-Z}u*Q8G<rBtPlAHiSVoOCLhyi76UE$j`O^KLOugnarW7DX@ zj_;0%aWY=SsQzdIg~DMSEwjQHMd7x5gi%t-GxWZpYP0pe5v-_c1jE0|AKq^}z4Lhm zCkEWo+RkY(qG=h!bECZ7ord?zAO7U-mw)}2EkSyD_y7Mt|IeoSf6Vzx^MCuBb@myw zHyInt=C<@G+-3k~h$?%Pf;f(VEqyS8?{eZIMX^-C=+UQ~1GH_#s0<oQ`bk;tQMBR+ zehQK?#IH3r(Y^{?C3fG3vOP~pDoCDw-pw3uL<_%K^Fd)%c>9*fYD)?YI`nU|4^t{~ zt1P@9&%>jJb~YzCbKZ()1Rxx=;4sP>MU*l%LW5a&x%a+8gu`=x4C1LwgoQUVCZRtE zgsg%WCgF+?#q-KaC!%Vx_*IM*8!wadmg-Oxse%g(JZ31Hs!*{%#xKUgxamfuD`jQO zz|&D$*k49oL%A7lxb%FMp-|195qa?-;*b8GN)F4QiVhN7j%+8B>fCTsQaE0fdjn2* zUiy)oVHmZ_I?TPntSn_0i5*0NugW?9FKRFV8<gY;E(7ck3ro4>SN3u2iVOf4F6Cc8 zWqbbPiw-PYzAIyi&hrV7%@c!&2j0A2;mB|exAVCF#e<DD>Ay@T&UKZ!2B~+vK+kwp zrVFP0*Y)M|73Th#jxPgm&sX`%yPm(q@09z888tvhr%opDzx?6(@Gg3=+@*nwf_k`| ziVHHj7FHa+8UqHt|6DgB#_R0I;-w>}7&w(l59ZVa%V_S$1~JVlrWkX&w$CeDXu!}C z!v{HE%G7}B#L%-d>vizEaOA*l_NcU%u8#iFYs4~En_c7Zo3VgDCy3MX?Avee{^A$E zxO@Kp``_+f|NTE!-x`3l#4$UIBqu=HDq@w)JFQ-s%>`T5tc_wP1#3LFG<Ypz$zmee z)I8pP?5w&|U>6+9aoEH-Qnp(}l;)H>y8*wdFB<xcAbd3b$FW13`0nB2$C)39+w+AJ z7%anNJN!<$Z2IbF+00^)9oxpSb>P#)SR?OKGJd(Zwassv4ezijZD0BAZF`o(_@?&s zQO;n^#Re42kT}WtoKeJ1t0OwQ=&W-`Dd66leZUTj39D>m3B&ObV_BJ+h{hMXXa9>c za&Or(d!>$zr|Hn-j;EMZp4l^PSxcrr)ee$}8QVvF@1o`|-qmW<>DAeZ`TMst5Z+b# za1;-=*^_h7md<FlyLM^1Rh$bi!+7Oi`{Cv%ylVSVhhe_zypZi#!>>9=Ym1^o2X*C6 zPiwQobDvMFQ<v(kQ>lZuPnC@R%B_BEwN`j59m#5#cHvzek;cy#W=Up9-s)K8%tzpq zsuJo99X*aWpUO%v&fvowQ74l=Y^k9WWi86z;6VF#-}NaX9YD*DeOi$&YWub-s}9-w z+fqV}pZt$oz2<z9w@p4Ilz#C&TKQ6EH6OhQPkvPTwdJP8&sRwPbAC(9Zzwvj`4YK} zc)iYHPvpY~0GB?~qjgBC<8)MqiLXRAR5P6<?fjOb7vPVa*#`Ssb=vRs`9|ltXoGom z>`M^lh)-wAr@l?kirJvi;L}B<rpv)xy&Sgc7u9qxUxNu-sh2*(9d4TxS|WMbTQ=tC zc~)y>>9n5ND|Hp`5AOUzbb<qacG9f7fgOWF(y=*c#k~j3vayR}Dmr@Iz)JeS-uM(v zOgc7*4yA)=*(%Fy;fH!V{6*mKAY@k`q=AEu1>2~OY`OEwSJ(J=h3mAfJt%0Ge2Pp^ zrN!e&jlvuJ?vwMaOa&`Prt#Qw>A_z4-Dy;$%;$YtW%?>R^>uQziebyQ0cVpc)Ayiv zqPRLnH~e~r1Ye9kg2*;b_p(Rz&eG3HsorP{_{2MSsXD#(ih-KSCmVkI>W`V=&J(D8 zGl_@)54-F1I?-P}%CxM_>%ZBY+39dR%V;Y@ntm0sI*<S&1K(QJkg?S19j<VWCp2hn zMbGqtE+6`%l|HePCjOc*``9nZ#EWBZ-(et`t{!-dAHhjU#^*Dzb9k;)r71I}OpkQR zpM2FIV||$q`YN)<Co5uKWgFjF-4YKrNKu*2QdpTwiT!YNKeUn!y`X!z7dF#f@9fFJ zPnv#ZRDa=f1}Nf6@bx>le4Oq?9(|`i((tnj>EAHzcIvq|^=E~5`|^7DV}~<+Y>A8| z77rTgebV<}AJ@=4(8*}zJQR+ySFqjOuQIm3>qiMbl`i>BIi5GW`J$hFI8NI$((lJm zKnhL}Vr*uZhiqX9dQLsgbRCC$C{N%jgkNI(oX+UmmN3^4XvE*f1g98oRCJC<ie4Uu za-))&K{jEXK~v+DEG5txeV2jJKyZ!j8Oe$M9juT-8yS01Cl|xNYdZhypZ@&ryFdA} zPKf@^-B-;<f2?9Yde(>8Q;6UF`giNxf9m<0=y>xc8Y+j7M^okRJ9%+*%c0}<6N)+| zC@e-&lo_UYF(+eu1Hnb{DGWn&l!U^#@W&{;y)Q;XoTR29kHqm;Jy;_juT?0p?GbR5 zZA#h}xmE5}o^W{|@4$8GyfMN?c$O>K*^jJKW`uq6D=FBP2Tr|{v!xtBfMe9Lr{xzm zs=|k{P3kFsm2N4Hyrn60l|p010hD`ufje(^ctk_GIR_Ge()nXZ0K`u^He+$CREsb2 zG`cJF#(%uwTxjU+D^N^0f)T7ye}li#v!0a^t1!vGQ!bEYpyHE}hvJT&E90iq?2|P9 z@Y~<=jmtHpC+#I?dNet72M<lcT>gj7jL7YMczG7_2lvvI;fD6XtpI-~ymCR52EF^8 z^n=rXH;`UGU&8#LbltB=@2YrFpD(nojOn|4^!k+3ZE4+IU*<a@w=!-oU#8ph70}(I zx^VW&a9-4*{}TR{<%(M(>2CB4&Mh#p4W}>hy23bY7yUi{!F3bYk@Ky<u>mXm(pA@% z)pft%d@ig+(~%;^zon)NoVOz@LG;RX8h^Y$g#oY1DdjjhbV%7kuKdATonxI&IotM7 z!~Lwr@L3MFtrqGm+oB<=>JKP5EAunF!YfTj*R^GW;VRwA?9SQDSWG^aFMp`r*eEXB zQa!)lGS8p>`9Hh+`e%P~_x8bmZW(NLvph@y7#y{YkoW8pLNAN!NQRwU`#!i)7{2~j ze}W(0n)5ZxDI9I*gCItS04*FV%)fL(2lL<@l;JOV4k2OBo&r#MbgeG++H(aB-j})~ z-)C7>*5D=t$*=J71jL*kHt(#QA&<bRq}hfIl$L2HUay$CJK<)=&l1%q&DdG;`lkG^ za>$<M={c#{nF(fdANRAod;VB;&vpiUX=-Hk<+Kwy7M1ZK{NA#=@k<AY6X)bo1a6iU zcPob)SYmF8``esDGYOw*fm@xjhv71tT3S|~0!^NE(COydt{Nu%$YrcZ?IQ;%SheqS z%!}Dp4xPc;mdzAYF8$)nvZu3+p)CEe*NQv5FJZVQ`Sj&s@EykT(bBzWQ+b?~k%kR7 z11<qPov%Dx=WuW;KeW6U4n5=$=M1J>TUHqz?_Rf`G#I|CsqNk1O?aHn7#zYWUOM}D z`Wu+xTUyGf)4szrE1OL)5YFD~EGgqr%c|{PjUC%B&zE`M!2S-fQK3uQf78!(NaKf2 z@&?qST?f*v=g!a2X~etgoh8#H9e(sw$3iDUXJh+u$II$Z@}c{4RNE`Bp00^k2ZBXj z*MJu(3)|kln=JT1!tjQ^hS-5g*Lt_=j(l{Yr|#(%ap=T7X*v1B_7#8i_197iF8g-c z!t%#cJetjk58{SrG+VwI*{h?WGF>Kee(Lp2=m$PsSftJ&zl^<5&aPE+I?I2E=Vj(Q zZ$PcPRgT~~%j9%$t7C=f;BL8fkSI1sp3b8EmHq4a(`L6*E)<nS9qpMc=!ickBwC%j zg(D=`E2qxLa4Mg&z>vp<f9SVO?bM?IExZ)vhtJ@b7VhlImh-YZ!J$8cbHJ@$N;luW zJNRVjnl0<uyJs>1y{B7zH)(^t4vI9<eZB`?`;tySu5+lPtFzcGobb1PiF%D@OaPOj z;#Htk8=)Hrm`_Rn)Ya@s2-*j&b4YK&26wmt5lph54x|g}n29{+I{5ah_Q5jUN4-DD zeyuG;Uq78ce*Du7jIm?v7mz6S>;I7B=lUev%nKj0u-F{$!cE;u|5EnES>0z-$1`nI zG^Zo$^E8R(yn}n;pbg4IoUM|PKyc{C4|z}9Y$iJU6Mi~~!vjw$7w+1BlYq|}tbY1c z6MVJn+8d|fZ!2Y=Qksn74_=+Y54`LbO!<%Q)4`sDYg|Aba6X35ZuuGjI}@OruECK; z;L-1OlnkdkrDJz!3;r!%ckS{xTG^-l1V%hLN{#0DA>G~!`r>-{^21qj;Z(s7b?lzD zRHrRc@vFu%rZPB#5G;F!Uf6T%gye|W(cRHtkAY>#ulp>J8CVkB=K>Hyeqn<sv$&k1 z3lYLD_=F`Om19Kotn!|8GQ`vp&RI+Gn4P=Uq(3#P$w)^$qiCN?1*!XEBqf>Sk^$e0 z0tOOz@N^6*UAmiscVcC<W3A;2MFqeb{Ag}H{`Y_K^Sgic*Z=13Pyd_0YMI_QHTo~_ zo_+U2o!oEI&G#wFS4UCH=G%pqf6J_+qWr6aqf`AFPmQ}bXn-%4z9Hvhe4FBg(_$E* z=s3$Qq`Wy_YR76wVZ5^<N)}BylSc3xp*7-UsaT{=>5b5vkv&GI{9W72nc=V~#2;Q$ zR3pHZJXsVt*krdoEHzH>h~eY6PaH|RqsSQ(GApe*t5U#oCr{fGz~O;<apbkp-=51> z>F$FZjt6INoGS=S@dZdfrdXZ@2NiDBVR)?CBz(Ns)!pM7x>Bs%BJk871FG@46h?<$ z&Q)s8&C1C5M91`~vd!8g(t}IH;F}c)_%MDIN8Y_bcJSocXjsUo^!QE13SOEq!Fz?n zovvRrp!fQr;|f;*JXa^mE3<M|aJRt{4z1k}F6zdFPy`;h&i^MXN)}$=)eu%JQkD)} z*WiHFRkfOImrlSf{7Nfm&)|F!fASrg4&4VwNn96R*mOM$zk#2wDAV<2y!0;Wb6tmq zj62!f@Q~F{GCC;Vbr*Kwe|Ub&RJc5@>wXopJca*0-+5Nv@57GX{l4UZTD)@TI>-Jq z>>F_T#UD8C=SMf_%ej00Jzle8C&TKd%rx^$e1&;e-jc$#KR9!W1kQF=e>HlKTjpf8 z%Q9F8A-z=@`oZUNLh$%{2h&f(3+8aGH1z?kE~{lYBsz23mzs^=s-EhV)0M3ndiwQG z?!N!?pWl7+XFqR$s)qDA-?$dJycrx0jzde{RM^X&-(=j)b4>{<<{Ub5zDb+q50_KV z*5M%a-nXo){9C<3Px>2g0u#okof@scYIe^oL+Fi2_IOQ4X<T?9rxhZq=IVQ4WOeux zVChm+N%0qtdfM~u#f93zV;J>p003O%1$!glr5S(6uT~?~smWYNX>D5&@3$fKt2(}x zus*3%$FZ!dltUg1OJ}*aPOc7ck1Jz#xBNO?xzV>uew?iJdD{!dnS9WRnDXp^$e{QJ z@vDUMD(72AaLxz%17X%=0}Qp>+h&v=?Yoi1S|SP`ha)-=NgKURYlXe-vw$2>vx)YL zA=bcd8@ii$IGw?r`k9a76HyQ8MGhr>!>HL#{0O%=8hzwf+Vq4Y|1{_NK}&?iZw5Dg zb!gAHl6vSsEB|q{K6+aI!fG+Mym*IF)sClul~X%c2lrFIH0(INg}u!;;uD!UdD37J zr+sI1<X=_Gj^oP#*6j37ztFcq_h|jt?4GtXZ>O2uBv)sf4`zw+yE@sg-@d+k^Wt}t zl{{OvJ_9?3rrYsd=TV0;KCF;v-}k9|KZi=8IY+)M<Nxwkw$&Ta!+&EFwDIs;+gDk( zE5zA+ApE4m-8p)<>#|WMB6J+Ll`FBV)34se*TD^@m3qFkv5q@9m1)q;>~>kEZ#F>M zGx|+i$<!&Irvzi|x4IWS*XqQ#CP0#%x`FIam@dHS!fS`<@YV8x@#zd|<^KhXk74GQ zKYASVa9AbJp{FCIUk522RUh{a*GiJ-I*olNEGu6nQFp87^bxOY<GYp@7g9VsdF+G1 zJ2QaWhgcr?%&FIDN)8nrb`8!YQ!80KD`UI}7XR9H<WZT!RX%mFUobB_G+vA++5ON^ zN7fGA@C1pCDt7#Vs`rUr@a+Omxtm3oxA6Hs-O;=bUeDmqh6ZCD(Bx_9y!f;1xcGR= zHkLRdR`PhT+`~N`;_FuC_I0KMNpG@}X4~<C_qbIPA8)=Yn^sk?{twFF&QFhMGx+Ac zHb@t&xAkj0v+wYDqZhaO5$tHe6Q|zy)wl7IjyzGPg1z$*npC^j>@5=5)}s4g`<|ak z4+@wphIPQY;5C0+Kd0?0eAP^Ox>>!f9xDHy`xLoh%HV8pvbG1G&ulpvRc<!$k?kOD z`Oz_DPxqyfXu|s^G2&T=P(96_SRG>f(Sv^PZHFkW_RIlb>K_}$UZN4s+dk3V79*YA zeS5yT`X)YFo$xYy=+k{Vx|J4D&1A<ITDqCqDOvpNoy-lI8Ju$RwnM^9*s*`JGt+@& zSUIZ1jB4fL-yp`blx56=vwHQ%*TWw_JZ%|RMzYTU7@>O7k(XaLtLb{x0a9-onVd$K zci*_}Q$VT8FLVF^KmbWZK~y_AZUjn4a4lu4qo~4K7O>HRkWdj25@pHdFsR_+6gG=T z$d(ttt>@)QxEdm9SJ%74{ZyX9z^W2FEvt?lK3dxQCIyg(Qd&y%sYY*0G6Jok+Q>!> z*$8L%Yu~~7Hft=a0oB+Zg{aH`Km7KayMO*K|MlJ9{y+Yocfa@-f7z(#iw*&KclWce zzs(50siAwBU>?^%G%B33ObLp=SEW%2Rs0$4l)&9Lg7I5=`!}@Nsn06;lzNQ;-bKjm zqQF*RXef+?$NKSUV#b)lKC^nF7lfYpNdBrqczkv&uk^uRSS_DX9=f7}xTFV@jxiql z9}?c+Q~Z>yyAsM-RJsr>OH3+a01Yg-$PxS@@7*6AfTz60gQBL(>v>C?d#}#zc^JW6 ze89G+DEMd?J{WVml&3{friKnZE~CuDT%`+^k-P^v7&EBjmvsFi{2Ix$+`^u8ASM<# z^rE5PUHOG^k`Av9Y;?idpLmyN*Y)l$>c&kmi>F5y&H_~O)s@?`eD*<=sH${p9E+3Z z%>H;$PWRh2T;T-wMV^Q+l9U0i_;_f5ZOQkW{kSE*!a?|g?Os1$qf5fBD~;?|-i!7N z$>Cn6&uQfAcj0#fwfqJD!FA=i?$W{+?iT<K$;FQ^VO~kTykEdCoUZr(TD~jnN+XX# z&;5o&Av%DEul?U6-E<xPCXwaqT{0lt3cCgWKK>R*PT=6<)q$61b++);6Y&@TPB)FV zVtd?wnbF0cu!F<u>hB9(1GFWc*)?^EBds&QMw$6?Qsnl=gvVyoia)d*n*&|8i(0Lt zaS>klu}MV)Yy9E4W=GV0vxaRiN{($0dG_w^&;QlGT$}Vi1?#t+*#E9US&c9!r`+Y& z80P%<R=?=zPKvi}77StGbEa~XIpPjfwC1)xeEGN_wIi5R&hZ^8(S#LfRYyg$$7(v> z%^4lN<rZ1uaz|@CD1lrTD+y-L!F8>S!mj6Y56j6_xDv^$dwiKaFJQ~|^hVMr?dp58 zQ~}lj(a3XjPrH|VYG4cku(M`$pJk(-_MJ#Gy&saB!NgcR-dQQh!m~4mFge}OduUMB zYy`Y2Z{MPnHk^E6!GMB;tO8w!n3K~=sPyDj{B>{(&a$uQaNyL#W+UfRIqjE??w#96 zh5-+Q@X6kmd<fBzeR3jv#J_I~)o7329gvbI$g1P5EOb@n^7RBh!)AHH_td5Eh!<Pp zT$#2faU$srdD5kwI$T?4Iq#7myHRBR#byiN9=mHM=5_v&6>M8Al7mL2==fP8nUfj5 zmJlbER-v)s;S-&M+p`XNx8XJz>7}^>xVY>Qb@0*ju=foxHK1+(@tY<b9Fl|=<Td(B z>pGw4I&e<iOBa&M4%0FFR2rR5Gp6sWN50off2b8nsH{itXfT}p6<1kj0Ias2(?AEy zw`I=J4ejG-)~PKH&&icMb(GnM*{c%HiG_LT_>RKgHAuk++eAr>!OJT7sulvxz~6t+ z-u;~S$uR!PhnC!q((d2*r7gqhQ>WF*;!3L{A)WomaXUQ15S~^x=9iI`4ufRMWDnuT z=YR+rQMv<J(XO1?9-ZRei^r45sv|7yluM7-!7Sp;sOK|BpR$iFs6K`tS(`OvLqacl zPn}TzU2xnicoMN<;69u?)J*c@Lqh!EDF<9eN6*7AM$iv*kShKwUnz3Ni1?ZRT$tzn zowU8;`RK>Y-ft`!{J|(d`eVzFjPZPFS6U^eWJ_DPWvH`HRh+HzD2y1_;f>d)^OlV8 z0Y1A5uWc};dB0IQevo~>wiu#HeZh15e$1#%4+MZAUb!gm3Z^zBX~p~aLSA)n&BDKH zq;Q`gl?>5k7%BMK4?guiDl7SCXUXM51Holo+J_x1r3^l?0TBL&6)6No#^i!G23R-f z&@*`Ku8F0r<>J9pe|&Fy1AWQnVSSH2G#6>fDq85x;U8U4m(tgGVburQ$^Oz`eARk& ztD{>x&`Ha-;OxM*Z1aOBecd2?Og^9L3(i*3#gv*KtR6UE*Y;G0@S44SQ~9r=%?z$j z`CVr>`2vr@Ry@S}!5nMgf~Tkc8Cce-ebk}A&zf0wD*xjK@~l*%dE{s^jn3j*|HhXj zDSEJvwx3r#`Qz*1`>+4>?#DO(*azwB<aN5-qkb<CSjrbKUL-tAN@ns}udPEIAsHgF zX2@1Ba{_@FVuZ`7n1xJ`NBLFAMk|AJMo-SDDkf^wH8S!qZ6&MtoE>OWdx9Q8#Zk(Q zh@~8F`}D$tcPV%<<PW9NQo<gVA-JUnmt?b-3oU8st0xqoIHUiT^>C0FDV1dvu=pQ- z_Vc^H`Zs@b_t$^>AMSqWAgbrT{ng!1lG3Aa{?Gwi&wu?-Q+UGo;q_13f7AY`=WQBq zIf_#ZpVX*O4xL;$zHHg|3j+(i+h_K&#_Cl(ElIN(ol>n)gnxK#WCx<K-aWqcs4+s) zPM(V=_8Oe^{P9wwSbj^1D8d||rSEw#7@`X6x!}P*PXHbnoDN((s1S#oyd(b##w*5` zd{iuZyxcKdwZz}u3vp*)7}4W|mu}i!BBG7U8hDQ&Y=o@zftGpsIf~PX^a>t2p5smV zHkw=oWi;s>$AGb5tN_%ZEqE6gTecBYj^UOsRru&B?2H7%m%g1p&-+Q2q1u61=!}NB zhDD#fj0a&eRs|Fn9*C+OvI5OTKU|Es>&W8VKR=f_><2>{jnZY@-Qg>2m$cysDx5H8 zqVVpw;ym5bEx)&eqyN<-@{v>>TmD`a7d(b2aUXc(KYEVLR^%-Y3YFx3T^BCiD|){x zOuFk?{PNub{utJw;16NnSovST_!5UJ--Xm{2wZOEDF@vv`xf5q_wOZ~-h})mpDP}W z3(l8!@o1I)kaM6<&k8tvAjhlJEB@q>9|F>^fEzr)7cOKyn|ad%WzDJhgS62Wh>h-w z52)2Qggkr;+uw~gVJ<Q~<=kxM;-g>w%5zAeXTZ_0(_$OYyT5PT(aXZXUOkrP{6>s= z2SyFHG*{f<mJ<zDlOTO{Js1u{eB2<^25veC?}xwqtMLDL_v_#M=I-zR;a8pLpL1TB z1~4CH(lmr-B*(-XE_3FgoIQZLUW9gNIK`9A7zNX3Z)Sr=b4k%4RsX?t$}bHb^`~PW z){AEm&iMdnV58}bx^w8{RITl~=w`F<DVkURhL18K*nPZ!b7l2>j9Y1o8{a&|ZgzOG z&%qcXx4fs#%TcQibHdQUJiXh=o3p&756=n!KDTEFyW}@!(<?6co{vq|o+q=)V{6B` zp67H&pSIE>(<rZ$RxEY@v9?V|_jQ?ULA_^n5oZeTn}NMwo0!rR5&rnViPOPs*3M}E zI#RV`W(3UEJ2`i{oIbGikM5g!&6x{%X+PGEe(1C;2U%?fv@}lf>>os<KR94VFGo)p zcaKB((F|~R!ECG!^Vv?5BiP>6Ggxu>_pweGUhY#u;ja$pl*;AMO!A|Hb2<ZvC%$>B z)3y_hqfr?;5obUs2R*0G>ZB6ai2$QEJi0%`!`B@5?h#uV>5RL&7rvIKe#loyz|oyU zZ=c=$ugY6`9mL8!hfGnFQ|H#nMrVbYHRFrD%TIxiA6Rr54?LSS)H%JDbIVtP(qh7q z+w?fP$q`@G=X>St?L0@XKjHTK>)^?=(CO3R_vIt-!*p~(*g>SFoIZmwnDLlDmCOTu z2HK=GTg4wJjYCW=1^)QyRkBDP#h=b?v2<74+%IJd2H%2i<WEkf=~J}D-DnSs_<dHc z1uweTKDd!_s*}Hao=;usS)B;9<@;t?!I+Mghi;>Mv%N79jLjg2GX*?{O5vO`rxM-c z)Ozq>*3nRCaN(eXV(ICFXuW4CMAw$N#%qkY220KW)$tw9pvUoJX49}Cn(*bbZxNhJ zo*UFl?<%f36kZJgNk6`1bLsOnA#mveD{<Ke{DtdmNl5Ye%|aGj!SKi~6u)1A2G8c( zU3rATuWRskKmXx5eVp$bTrfWwxJ0<R$$u<<&)w!j$&(%iOxD>@@|Zjew`xP(vh8Be z(v)_<qn~ZZD+8qlP~${xNcAxoZ=KlJAnMZUg!d^`2V22|jom=|T<_q~v3`f9?)|~Z z`#u92o@Zi?j;6uvLNlcw>m$5xaP5h~zUs>TzIK4z9Re9{ni7+K@9fQo_jsgVR(Zkj zI=dC0EfHTQ*PwOvXWy{}fR4ulHe>@!W|!5c2HjqFK%V}J0XSdSd5KR}#KwbH*$Okf zwhz6JKj#3~z=fAt-_NurD6-%UYa`V^-_1R%jp}$C$b(1Rov8sYd{>WyGkvB@w>0<- z_SzCOA9X4J@2`j7|MOqo-F@}#-Thzv!`(mqAAeV8wq+onYOZ49iw<WnQfL1Pfxc<h zb_RqYLkI+7>Tv`Z@KB)#$vbxUZe$_m^D$zwbkdwrJ&8i9bW<c*dRHm-6r4E%w|rw# zL{RGEsHBia5MDknM@nXY31gZuV8m4d`?Jm`FH+FnH$xZ<e-|?-lXdJiSi3d~StJMF z!CZg&um08D-~Pw{?(T;_`}1&rclXuzKeRXGtGjnEe!P3z56-@O_T6{iuYr2gCzE_m z>3tnq4cA~&$lzOg<YdszpohCt7Ik)?=dk_w<BOe6z3<kQ#$Kj3HA3FUS4xVv{rCCX zfz@J$=yA@2hVIZ*MX9VA2Zr0<O|fQl)Ws=Tn8%Bat}Tu5ab`5BJxix%tYt%~sQ$<2 z6mQO4x?m8)j0neTdLfN$=?<kl`jG4y2K@Jn7N6`<NtZyQBVX6b?U|9<Aj|OQD9x-4 zHm3<0I*>EE3Mu=^J1D0zm4=MFfn1XK6HY5X0Gkb3)`Qn)<0DNtoEe*zQt;T)_kt^@ zN(a~eEj_J8NI=gZ%z-s}Ai0ZN!gU7j!2YsfLB}N*Ilx!MitAw`yxkcH^~HVh;P-I5 z4QF*k+<{l#n|vk0fl8_bvgj`RZo-O3pvSH`>QXPwDFe;@`+SKL0M7%Vdk>Mh@a2`q z@0P}0eClu&RmdM+7c2>+`|<+ozjg_h&vhkP*bN38U0=ps&nG5*D(xS`$Hyb*1OLi% z-Q^h{D&2kc=oZ=QWC8|#`a|F+Ot5N3I^wUvsSBsc@c>@X1?RGxr)=dOc)LgCP{@#F zs^cN~^{fsm2Vy;wz4Be+M}N;Nqx%}i0C>-@YN^v#cVD&q@^QM%_Ok)+TRKPm>Ez|~ z44(Y69r#k&Fj{#voZ5=d1#6@<W333vmhia^`aSCNLptdDgi$y=t)uhZU;M@0FaQ1D z-2Lvi24VllyBELyaeJ0FQk}C3|0g<874)_ltaXMo)M@AjghKS=$BmmKc=m%MV$e>f zvZ9CQ^fzGs4!=)5n4BU5w#q`%sk=Ijl~H|}Ef7^)0g5T@;UQRf;ga5Uy^EWJkuBSE zH19y38BqCxdBaJ$+BP^SXK;s5;qkDLVBu@;A??sZ+a}C(8;GvUxX%nVdNC)Y%_W-| z!5QfrC*7cdS-vohDl2H}s7+yxJm+YpU+*h-&SLU2cWK$$tDEy@+4g2*n=RnH3|i&u z_&A8i7Zwao9FB|`v)5;akS7hFNukIv3AR&(IrwpD#2ehyS^ii@{(<vFY8#{jbT+K= zF8K1O3))`GcKHovsGZ!)k;gD;tO(n8T$@?IM|-?mK6dOrH2ZT1+WodIS><r(F?+6_ zWN{Og&KL(#Kjo<z$mBw=Pp9j`$vxN=%}0U)W57?a+?giNk7#iE6X&&eE6F&$_tS3! z0QaNSZ|$Y;w4^uh>yX$MwGOem6~EVJ)F!{nH`xq{=O!}VcHkx%TZSo3iKmCFqxckW zh0S&pk1y)AAH7q@D50$GY$bZGSz7I{Ycj1&dCcNmdQXYfA+oTHSo{bFue_(N>m|6C zeYp;-v*+Hmvb&eF|DvB$-kxQ$0AJba|D6BIFeAE|#Pnz@N5l=MGqGZpO&*<G7hLIh z|1q2E$f8pidp)_Jy|nDI4(!`xw583$(S&C)Mm@AePMGQ?45?SA7yTuT50xM8`wnx3 z@(0Orp8&1EwMjaL{XMcgwY2rlvU|?mK_7mEH+cpVk7sl6J9_E)jbp24JDe)`<9{({ zON4Z&I{G?3`!9I?+l4p7xx7c##bqIZ7ml_=;Ylys^sG?&YhaVj(Q!23s1B${$boOH zTDruR?k)EKot12tU5yXrR~Dbqw|Sue2y6nsdVXw4@j9H@t~i`7WUu(!$=04+D=lpc zAb*zcK!wwx0xze#cvu)Y*y2g24$ci&Im{CZ9fURY?^*vkaSaX_crzJ>8#U7g$)g-J z(8qK5R&<1`0WfC)IE?C3_msSFa*ww1Y~oN-@}B(*&k8Rqu(NOQ#``C&B-!WD;-|yi z>co^*C%wK<jMf&isS(zSm$(%2W~0~Vi!?GZlZ>WyaPckqd)KMmHj?02GS1I6Xc^Rg z=q9U>riZ~$d8};NR*i6BC)bG$&k_gkR#(urGPE1n5A9=on*Jq2a1HEU`djkPSD%S{ za`%(=J^6Ma597E0pwrl%j||}RI<}N4+*6F6L;OPq^dKBSHL2Lt=mtDRNTW0u_gj+< z8Aej7b#6m)qxzUQEtH!!9z`VQDN_Wxmuzr#o+cpL8nf1si$I?i@GV<7Zsa~_Dmz1b zI@t_O4M4<inUzs^il4S=yaHbOI)#n2I#JRH=3678!H(N^Klzg%?*8UK{)fAN^S6JS zAnxD&_SdiPzV85puOI*9?s;(Rmw8$z_f5{<4suA!@4k6=_uWr^HcimTJ#YE94!ONK z_Km1m+gDTh{_Nv;{`}?Lum9<vx_9zp9p%@}^1f_o-j9X<?l&D5UuRzZHfpokjvPKX zTZW{ueOv?V2z~o+*3s8!haaA)*r$Vd3<yiG(VNOW#t%y~zGi0P0RzLB!c8S4gC2Kx zn1O2*U3|Ya0~1`yiWWwP=X@+LZK2==R`ztMaFT3ATspPj<$-Srp|d+<eB?f{O}0Dr zuxR<^B=2Q&Pd85qq7INXZovuCa2nu~GkPHyZskSVFhzUxD4V)%A3DNHw*xZM5&AgC zN}fP$7Fh~L18w~@ett_(oDPA%Gb*ZFVds8(*$t;o`Qfxg=m?L}Y7AWCUGM8u_pX8i z<#!x`o6I$K{psi`Nln|5(7lteKbOoW|3Nu;@Gpk(6h;p4T9|ha$QzP-^t$---w7+| zmj8+r^7{)I*A3j~XAj_sK<|~#1O0MG?{!J*2c5&E-{+A|(!smkujgJrhkO1K=6OH7 z#e<b8@OBBh;LtNXQfDyd;@Oho8yp~!u8ohL11Q~z>mkI|K>?rn4V*OP8xh6Pg)0qu zR|iY9dV7QGrjaIp`a#!Exxtowz={p*-d5}hU8gfVrZ<&k=2p7L*_fYv|J~hBzWc73 zs1Cwe<5H)hMy?G2ctD50M9HP{vZteANNaG9f^0?&w~$eoaQBry+?-~auCl$&PP}1@ zo0-YLt?l4^yngrc?wjo1U;ev)yH9DnYH;v>fAgQS*)P^m`dCe;N365D`s)LMQ&4vH zMq3T8zcrBY^!n_L`pog&DwU98r?-y^f@Ir`gTSp`Lmis4J?eGg6PsC;Yy)qG9i5z( zzW=(U`|=_W*TthVuzSK37>7=|bfz|J&Ih^GzV5HGwT19m$0OP(k@_+H=~cUU|4Cs+ zDUy@6=xumBj5qWKo$mVnN}C>+pRMSn|0*x|^+(qsU7Bd58=J-MX-#P<&0@XeG$vQ4 zUdM$p<p;E!Z_DSxK?mhQ9m77K8~CFu25#A#@gW?K4bx(TTg1$HjuuNreNF}6)*-CS z9damdf8$uV;s*y&`@#?4j275)RF%wf-R(slbw^G*8OLsiGDyKht2~@L0)AWvnjXQE z>>o4`qZ`1n+w5t))!x!6gY7#&Dkzp4v)xz6aJm^U)Ds<QWzewg4X^Bsq_w`Oel z49^T=SMEAh_R8j`@vH8akF3G{P~C9Sv(-oV#h;n2sr-GhA)co!lc^3R$rg3$HhPF^ zdX~S37iCW<3%5ck)~5!1!Rk@>%}C2%GM!4bi@qOP_=DvcuV_-V-5gT&f(-BvP44qM z@Vj#9E9B_bbhzil8N7qb@n!1I<y)<ExRr1IB{_A0q2sYSjF9rjqR~euInD-I;QWA} zT76Zw@c>!|2R0K6f2D|s(b6+@>rhl5XX}ff(?0wTqt3Yk^n&BB!vw4JSDDEGJ@N|Q zs*D2EZ4@CvaTsVoo}Gdzn%<`SY`2LOcQkL=bZK>l?N$HOw}W4$^A!+maQX$%ZL;eb zzsGa35I(-AOQW+)%8uSMU_-9uFR6GSuS;^5`pB=JyaqE)9neb;*HfG1FH-@0C_Kk+ z+h7b_S&gyT#;}#=nn-EFa04^aUhV9`B#J7R$))pji&Z<@1K7cv&xgOs_?$JNrbTn` zYt`c4Svm4H9oEV9JAIV+7d(Gk4W#Tcjja85Sc}KA+e}MJ_A>r29i&v6Y=OFOQb+&k zW>_ni#fr{&Ko@4u;sNXoZbn66@_IVg+RbDh*1@r5LEk6ZN`qhc39GcO6s4)Ntuu=c zS3QHvz9VdsDZ6~H4(7uSqk7!ALiXpbvl|p&ye{E7{rWK~!d5~I8{7}8$~EEjrn=@d zYRi<*QswT^y5;quWHxyNSiwc_+IZBL2Fg15KArWfiN(ha*qj5jvft@oliB0PcoomC z37`o=-T+*`>8U!EzW(v`@IU{L|L>faA3E*q@!g;N$)D`NieLTeSB?Ds=I+y@Mhs$> z5f95j)Evq(!y3ak#hf7b{VB{wdkj2BgBuwOvGQ?<K2*sqn}|atx+zBtFm+A|RW=pI z(fJgtpcy8L&oVG@_RdhcGh-D#7*)D+O%lO6jR(mP?hZak2w@QHls)C4t{OHBf*+b5 zf8BcbVB36sKPS#os$c$#zq<Pm|MB17{qWOoH}d)En-l?_{eAuY_ifs4^rOb;NrzHB z??8mtojTpxth;Z%cQWadMs(v*-{yPW=nLay?YU9y9lBAu_~!e$-^a`Eav=Zy@BjYp zWy{5VzwO8JS&~GV@3sHpb>AcSP^WgA%ER$NM(wE+q=U&Qq4$2H*^k;2wT5&-@s1*- z+;b%2qw?`k1Izm3yX%PM3=-gnlTXFr(Z0VId;<%FER3uY-xN;=c!slppw2)gs%R@g z*BXW@-05T$U#%`jV$Hag#Oi^i3onivq3QrL6b#X)T3V+`KFqPmf7!L;*6D~(goiwu zX7mO(ypi6|h!Nd^AB6YqSTp$1Zf})h=uAmwFfGkF4hfwMK<So`4)%JMmvO$*?eKD# zRg)rJA%lrsqaht}jZdYa#}}Q#@sJUlF&!^U-@ol4x$#$;5&}~A;kht*IIKD(8bY+I zL)WFu^9!qJpt0&g!K0UPVyJYKHySUa;;($d(Nfq9d3Twia?*9bo)3C^y`lR1bhk96 z-X$JOfx9l^&h&;SS;O^!roOHfeY*pvAYsGB`wiFy^UETI4bC#2wBQT-oL}&j`4$dG za8E;b@VVfM^86Xb4L07nHmZCc4{wV<4bTl$e7pgnlCrCUYv6~}1?L91c%XH}Rz}a$ zOJ#*5eZaRlkc9y#?0^DG8u|cE{H-kdu!0L;+H_<3QEHCYB1@~SreCCD2@|`%6B^ss zqcid9<%_%fU;U6>&52i+Ne?bTV1tzIMVXd&37}W%+ITFw=Rlo0Dt&Ms<=i{{oF}M( zd~X{@b?tql%^dh|fAaO+FaGtvz5Dh5)!^W-e|z_<4njo#<66w8*-Lva%~%?Utd`y6 z&^Z!;SDiVI91Au<W9tyBbqt0V=k&0r+jKyEDfRHz8D<yJx0N*uKaS|ET0C7{tz-@Y z_;|Vj;BZ9nRnI0nHn`=8bZrh%@w26uOlAl1l&pruVD`xP?VA0ngM*JS-$;D<r=#wp zH5{_*_<L3oCDY!&YLIkoaB@~u!`Y=tL!yt6)~Tnk3GRIckPW<Hu`pdU?;lG4rgX28 zneX~q{bjYx1B0*)1V74=a=(|K5tKPZ^vU<q4T5mr=#D@9-CjTyWOjOlEzS&(<+*sl zxsCI)*JdKfw14rv4guQ=7XAizdd^n%=h=m)25)qppHGKA?A<cs9GT(xDH&=j=;Ybo zy{yaYkS4s^EPQ<7`%DIfao9fg!#}R7SzjeqI;@boC!JG=fEozUPQGlFn8U1m&M6cM zvllO{gCngO*g1R2W*wbi(Zz?gk3O$upWyhTB!dR!<MF7Ue4&Sht<xEA(dE0k8_Wzl zTbiaj<ypH?{O3KuA)_`~HmvRStnJV#aG}hzFH4v%Gf^==B%!Q*y5X6!Rc`X2Z+NG^ zl6ybxW{WaPi6#zlb|75rwPwTC_Ewf{V3Ab$(H)$XuP%cVPWBIu*5GlnElu}sLcq+u zrPzF0de(ecx}ps5`mgKU1T-npRy6z2x4o(QwyjT*yqVGEO-S*7_G*}){02nSr>aBr z9Ue&s558wiIkvSj6s}Wnt=5=r$+w)(TYZra!4KmHoDHnd;2omXy~6vC4NfLVKy&=3 z=a=rwPZvoFpTyB~@ZPlYU=vb>pE$bA4+HA(<OVi+*eSkCS~a;SJ|9tCEG?ZPE7#EK zKiEw+J!oe{s|8y&8*Ti;CzZF=38hg-Mo-MM;*ht3k55$aYJ-lX`n19LgXZ!+(s3)z zd$Xx!;JeUc<*g$u`#|7T^`~B$CAbDr$)sD^-19}k&+5r_wtJg?<4^Hupr7c&pHVv* zC6kKo1fIg!0=6nT*)bhUP_zfdT8@7h5dpKS^tUh#WB|1RI{teP*VX}#Ztax*fYT7} z`95xCS;ew`z=xL&`eys|4%g#3gU422ZD2ag*pw&PO6~fC`1SPbXC18DH|n#^AJRGY zS$p{D_48mvH=V)!=y=<b<@dE!^z(gqbga`plhz96)gPa`+YBxyN0Ujo>0jw$#BA|a zSQJn1toYcLi}nORZB?r8g+Kku9^q`n<Ukg<b=ZL6wkOmzkM{UE`HcIMuli6y)2AN( z;ClGK{ty4JyWjrwPw&3{?kDX*{rTNbdj95zpWS`)+h5=P-QWGMcfa}FKh=TzF`zoQ z8JM(Tx*xIj#7wca5x(~|Y@rb{2-?z*(CqAhNK0wRF`=FPAn^i>5JpMeh7iLMch%tN zq{8L|rY0NRh`7`~7zvpY(*<`($wX;0_)d!4QY4Bco_evO6s2U~Qf8xWW@GO?Z1gmR z$r9c@{_5+ypZ~?5-Tk}&@HcmV_Vb@^bi)!Wo2B2j>_?dtYa=%`s864KUFYptBgoCX zhS#G;Mjj?GOMxEzP$#vSR!aStB1Nvz-#2xNEn!B7*=7wR1NQWp4sxF=NKqUf@xFb) zZ(i0h3r~hRuW|-zpAj<p(NCq*VCYDtqD%n-BQd4yiHy{lh!-0Ec*7Bh9~zzT)QH%_ zW!c-K_~jICS#bN7IX+Xa!jv~i@wPIq5pz7n-4EeT9?Hfnbr&R6e7F@RsH`^};VKOo zl7EJ2d3vAGOj0pUe!$9pp8J1}*m6{61sbVm0F?$lozl?C4Wt=bj-jPnMqc5_Ao_0| zKX@1C@Bq5FM!B5(tJ2MA#!Q{F@d3)cGllTGXfE@vt5G?p&c-z)!4I-sAi+_^zxc}F zyL5U{T15Fg_tst7{^3Udk>AOCIyBzle|Rd}YE<tt4ER#EHAX!gyLy8?8csa8z4q^v z4USaTZ>TB%b_sVu-SdsSlfD4?SJkhCrCGW%_#77B<v4?1lmX!FIvhE1hsQlDi%J9t zFND)`sDtf&Wpwx8*|mHB!PPaKuSoCxynYe%`T3S*iT2!o%9q-o^6?D+U7yqM?W9$n z@GA~qRzP_U_k+OE@D_p7p@<z$r?5d&#A>t%Far$c;e`On{!4uj>RNRF4bvq*_4?!) zmscm|OR^K?F*xMlnzzk3=`b}QTqCoZa$p8*t8!Lu5yN*{G`zs@TYXGP4$j3F$Z=YI zt1*65V^<}u3;;W2wnq6upBZ}ju_en51b+SPPw)QK-~9W#*S~4&O1A3xKm2ALMyJ{C zyWXp-HOQ6qG3T~TK<yi?)1x-90m5UT&VfeRY~7sZihDD8;6+Qb=2T~YimwG4_J<Sf zCwrLP4R1_jv*^9LF;^#|=;$Ki11GttUFz_4Y1GGu(rd^+UnQBNQ2^T{%?bjf_t`h$ zl#XT14q*3Sbywe)2OiP6IxlJEIfPHg)abc09yt1z1ZxkEbl92rGb#^F9O=`D!{YD< zD(s8Xw_iv5i#l4*JLltl-j4xO`*ZK-Cp>7h{>fM0+}&?L+4CG}inIOQ7|wZ4E0V?h zjBw{4Xww{mG8^8zRZPB%=@UrD$t+#%_E>{o@j#bMhfrr~dv?PckFJ^H&$c+)R$-&Y zxg$3&hJy~&qxQ)5xx{>ft%@qmzQvh7RK(K0@0rfRaSkwMsKaC%Klnh}5=(=@&{m5p zwkw_Ld3$6l;|bQ*hQDp=*n?m`EbYVm6|=i<pSNVWw#vC5_LM7ptE(!XkFf6=tE9;o z4A*=s3CXi^aCmJ@)k;SfUTn*Jv^st|Fo7D*Wm<=ppYpardi{n^9r{DJ%!IBcq^IQw zCc|C(7gGYkod`$HCVh<O-RJYo4nRGgSXPRk%Bh~}=(;$s4~tueEuD0QX?gl9$#l82 z1}|Kn%#d1RuhM~5dFm{^Ko9?qEjrNUDE;w3N>`|K-PdUXq4#xS;txM%gY3$So)7Fw zVg8-jxYFOsoeva(Ry6PfpyW=@tN+ok)mOc!>*G;*)uA!9ds)XP9T2_&TF(Hs4kXz{ zPdsr4qXet7hcTxEy_xoSgWkcbp!o#7(*w_|!+2VL_0wR<_$p18XL-TBI&t{AOPS${ zr+<81Fos+CkFRm?NcG1%xujEn*j$pCTzlP2qdFh#t2ln8_#@L28Sw0FJW%JXE-jCV zlfXq)a4H0^A2ty&bA`vnm@&p%I=U~2^q_<5)N6<9nt`NMbdm0iiOJzQXJLEw>1uyR zJI2y-9QgCq!WYh4rmJ1ahh)pFFjcm___J~02iIPfU!5r1XPL<gfgS$Tc}Whnnk|W- z*@%`dKka;?`^~W2%T^ei;<v+FovqN)AG>IRO(*y9<NJ3n?e)db2BtTtl5Kuef8${t z%zHj9l+E+WSOPGpmhr0$wj;U>#)QkeI=gRrw#@rg_3u?3U*80OQ%Bq&=??D-ujzJl z8z_hi(a%1(AKgPCIU6u}(tyhj0c=*+H+@r{<e;t2ww7r1h(PFvy3yaPN3uHYS|NB` zT6K%Q{qgni`LF&lL;C9OpPv5u?#DlSd-uz~es=fgfAP=Ga^`QJ-u*BC%l~}$5C3~c z_QQ*St3(V4V`Xn>o!=lnY7{`_R&mVoZfaU-F@A={265>kfKl1#QPz{vPp3lI?9>@m z3elsj<Tb;y$`^psxm6-#(LJJQhYEfiLSY3GrV@Kr;V9IMSQ*A5d3*ZMUWP5>%{W*p z{Op^)%a&1ldjH$IfBA3!_1(W~FWA#(3BP3mMm@oLR0sAbLdYeg2Put;`|R5~oON)w zv}(*~1h~fP$+zEi(j|O-wg?xZBWLm9;||i&koIwRjh3b3(!6~Btbv8T!B?2k)E6z! z+eYnp?nE>&9S3fNc?VqFM*h(C&T^+3cqVj>ZDqMDb}WtV%fZ@cc*}M!J~3u0lW+B! zt#r)4=gmmOZ)}woJS&7%%qebR=eTsTPKF6|3a6u3nyEpsk7`DHPo8%bu2X04vH}iw zu=ix7)ba~I#$Op^7u+JEW->GY0_tW$0*w~>06&8f6<Q!2IC(XU;L+pLxE+J`+1iBr z)p<N4f#3upCO$~EjJbR;hMNWmMaok~pvQ;ltvVnrhAs6-El;mWYO*RE&WCKcAO2iR zFz`#GgFf<`7Sr+m$#Y$@;fr$V+LnRcB8B@MTu$Kl>``$;&qI&hpga7B`@wmUU;L+R zWx8WCIOqz+g^6>C|D1LKw>&p-OwMK8pjVl1!JpB(f&MSx1orcFJ#Qp?p+{2|9sn?? z!Ikco<jdRQE}TUWk$m#N-!)oq2u`G6_nSPgL<KB)|KXuJAxgRn{sqT<x?BXwx>m0D zOV4_qwv`w>d0gO5Z*KXna>UKiQ+|J|2W7g-P7QAIt*pX11k<mTBR4$Qtn9{6I<}9^ zeevqW-S3`v20?a4Cuwa$`7WK`>A)zN0#O9u+%-~O!sDhaa6^yIi?TSq8H4GqMy?!V z>~T`;Md}0gFB&*}^*p=$^zKjp@~`jyHYWwT|J#51pW1fwt7vgFQXPQC7Bl5*b2ieP zjd^OdhAwEx?$Ds@zM89UvvoeX^T3K2C<oK0B{(Z(l4|+po0N+~!~zvMJS~?~9y+es zb@qkheB_#}0>vpIS2hGcMt|+5x_u68I(3|rW7S4c;gdZI?rck??K#ixvJ)FL!_)rl zpchVL@NY_4y6kfDC>kUp=tnOs5pQrb2d2hk>1~bC%1Z)2vkc9L6;hiJtEVf)S)!(G z&}O}<bM>Y+!T#JIJFxQQ4hbvqy|3oTXeW(`+|P-5&<v_?z&?6>mdWAs+Wq)shPfis z4?U}Jh+jIVA9K*~kv?#{thmyd!XpmOL(Wm*+EsXhJ-L?WS~8FJ)x}bfJzlN@rVbUk z8I-ku;TcQ}*kMG)IU$-O`zjwnXLBcn>ge4%Tn5Ok&a&#Q+=J`WjAryVFjQT6Xka`X zHj7I3GZ>Xo8*f|K9Ldt(BM$=ZuFbac>h+7xOzF;<=Pb)gkM2dsgLq{yX618mW8j?X zcxi<iUE2z!((5{E<B!gsHey?I@GYm+Acup($OCW3&+c@9z8ZAd4-A6pr*m5B>FQ38 zji0Nxm4&hBWm~o#f(5RAvv>9nPaa^G#sC+dn9Tu4XTcUapHXs|WsCgznA+qmRVKLU zb#<@jG-0xY7iP12^ng!lU_}{b=+9P+xDX!b(pl$o>I6>r3twS)tpcjEcv2Y$XRy`l z?&W7|t@>cGRKvOXV5ou_44pRz!%d$M({<#6b2OIzC9CAFPH*L7;pjD>;}l>#+6+Fu zs80AUtek<31?hA=WB=zD%Z3C124sNF`z>I22h)Y0@I<3Td_4TrF2e%NlXq!n!{J$3 z^Cg4<(skLR>sit3ASUD0H)({GpN<Uf?Y-OhH2#Lh+9RpsUC9?GOnZk<8w_C=I*ir{ zdLQcyqW^S4Yg5uCX+P^h@}JLJ8nf+et51FUtf+RUpyYT4542sD&5{cM!xkvN;9mG& z^ukX|Q1om9dq3XOnM~P}28kZkj=*OJtA$Hog42KL$<!@Dg2!g)YZ^QYy)J%HxStHG zldt>I%U2yn^$>8l>qP3{PG<1+i8O6rdeW#Z9~gFK&e;rllfWw{-OQG*pVHuChI8qx zDEZg`*ZuBm(9jnQy7s#AUS{X~Ubr`~={$y)g*$|5hfz&`!lSYZ9xtvH9w<6;XMY-i zXaIZmv<|tIquNY1;_Na_o)b*<KOE>B>d58jJ!s@nmde^2`Skb4S60Q*&>7O^p+B@V z^x?DiUp4aji+}OUyMO!B|F#ZX)7lmOcmMN$zWZQgvJ$5BK}S3(>ELdZFvK^4mZE3` zr$7-+S+CJAiXyFV<uOF3D#gU`B<NLg6|8JSn9_Mt77{6kCz=E{rSjMN903gJPesN6 z*BCo)^b+8eBYm&i%M(l|tZj)lgPXDa=fC*H-7o&~uR3_;n>8{TH8Zk47Jm#uI5iqg zk{>L~t>gbBgL*IFziA`{U(9ejRq;V-7@{dP^grmNwv6W8(~NoFtja4hb87_gaSq(; zXMH-O#_MG#oc;Lx_1!m(I$46Fqx-my_E#yTj;>MSjnYMn253tN`}Dy^C@ERx8u47? z$2f$-9ENb!h|Z`qa^rM0HQmfFr_xfLH<nryoX#bq<PrTUG<EVx2bJ^MUs6fMhaY^x zWBY4tXq|Ms!|$em8zC!(a8$fG>Qhp{N#w+7^d4(uZfbjEdE`uwmF41KYPuOtL8mh} za^}F!zz(i){`j$S58s>$C#MEp^*Pl@1-+HC5)KAO=ff{1z-7AD13a16l|voTgx=!Z z&vnYXz1-r&gHy@3bbBrlqox5y;{}V_c-GKpgk11Ax~)EO9DW}rt;;QN<I4gTCa%P* z0VkARNG$#JJb<^b6MnMXSbs7KlBc`!_k6ocAneP#A{SP;I~!st{~V%dzA%%`?|KL0 z^Ybk-u~FO4;S0VMh<@qEw_9G%7hK6M8NvCwhEwkcR-vA6X}x&HPxmjc!5HzkJmu3V zIGwsvmi#kWlHA~4FvfGRD|z+o=7fxn(w^(+)pW4{b^nUGXmJ1hEK|7R)1l#pcja8@ zAN{#OUp?@A>2FoC3cmyWB8DUMvhS$BXdsTQeAEc6hR^7)ft9qivQ>h@vfGe@-*7A# zwqN4MbAJ$A14x$sS%Nhv36=9XUajq@p4A4~)^fj-a34PTHpiw8Q2U{N_RC-1{kPex z?|=Bo-T(Lh^Plei@$dfb?!!OS=>GVsrOce<I%+vH_P6<V_tW4Q-1HfVPuaMr%OSYe z)*bsAIUq@(_sA-1PB8~Eq|aXtMexXfZCh`PLsYWxybeKa$-Pz-DSJ^p;W!xDr8(_* zQ=U06i~s$9vnh4FHS(t(v#G`3fK7HY#KmX-Ru6*BHe9Pf&@eqIj7;D*$F+C17^ni) zuCzF_PY3}h4E@m|ojiJ1x(nUxuf@BH%9%ep^se|<McR}5s*!x1Tm!UU)fO75w+hK> zFk`=;l9Q#%JG>BHmC2c!%xhQk|LRz<sVsUl2NN#ZpVcKP!%yc2Rz3$)ig=2z_Sot8 znQyG!h_-daH{(cd<rwWsgFM*oz1O+33Qe2nP!uc9-n8vV{qo5`GyP6KwsJt{&w)Ac zG;8uGT(mhU*_O<1cCs@2#PIm7)hR*vomp-(qE<rqZY6nX<K7o%fEqs>diXG%2a*bL zjCFQD##4F$U$|+rr<0{|xR{w79a@v!4i!49&D6tErE{AFE$zEz+O;c}-q9-}rXTq2 zo4ihnUZ*gg&bbVx!KlsTffb&!8|9m%@Q{Lp$J%t<E?ps~Y&g`$&)*AH)niL_k09c0 z0VPkaR+hDTZ9aQGPvQ1KlkaBMi(maz-eee`l8wAFU0bUvwJ?G7H|<Hb^v0>No55Be zii5I>4*otX)4R6Std!0@4cu>p_^<ck<URHOR_B936E}bcvx@#~7ly_8Pe(N(XUlZ_ zbvfo2mS=m-OXlJqN8)6+Jf&Mldo)(gutH0?hp$c<UvG32C#*!1(H{Gc>R`z_sM(A& zxNvxMcy-Dn+u5)bgMGT%n$P+YVy8{Qk6WJZfj{MXE)B?#IDQf>x&4I;O}j35S=u{) z4(pNyJg-4|s{^@`;A>ORgE{01SM4Qz&vmY@9DFRj{m@{5`lO!IH@f8)*UD$mp}~~u z5SyXQh)t%|BR?`0RM}g_I64#?p2=;Lr$eJ-3@)y+#ZL~x6dj-0u4;aSv0H@NWFR`# z!3JK{KRi|k*QqNHorFMCEuMYxgVP4BT28;!Bz!*U__ww$#F~=LXRn}?*<Szp74$Bc zcy;92oh`OXszJg>O`I8k{FJSpluBz$!#S6!x}Nd=SU=JCabIP7o;TR{y!(sz_p&hG z$~D95vqI}eM?aKs$Tf1-yaWgD`&r$Th-P;UnA=i7??b@9UF1Svr_Y}8P0V<H>B8aP zY*X>8I~3uMu7{7m`C-B_b^kU3e)rqowqNDN4o~{C|K=~+i~8L<V6WRd`j18*Te`c> z31y~eHDcS-lGCsyG@}iw37|AI0D^lb&0ZKC28uD<wPdw&xA#>>#7t^fFMEWgEZbiQ zZt=&d@(Awvxyf)Ggh9s%{|aWjZb@StEkc8lPaV2#p01PovkvF_#b5vR-48$i`2_K% z(UTdJ@~XsW%2Z6KpGP1H*P&!lZ18p&p+~#f?*^QPM^xY4+cG>(TZX+fA3pT)_oV)H z`JX;Dy7=Vo>tylG%MW+ozpMdlw^_aBW_|1Eb{N)IHIh2k8!>SJRZ6)fUL7#<!HB5$ z8cxb&WPiVk|M;Ma!I`Vvq*vKh^f#0;Uc?9M>!*Mz^<`|;E-b~sjY#!!89Iu5*sgI< znKeYgP$|pjNN{jAYa1Vq5Xw`WN<4=K+`){ajnKL97%z=p)0Ilxub|06yg%RTH4-}> z%LvyQ=U@a>xSaBFTEx$=v?NUV`_ZxZbm36SV$z8M)_5~${Yn*H88U`wiMs)&1h-P4 z=h8_P`sg6o;!Ya>OM48CjI=V;1b3lLzUf)-OII@bcZ_>4=m~E)9XN6xw9b>~Ayxbd zzus@bQujM$fpNk4@;(TQ!>bj$#^fqPbv;n7kaJh&A79E9uAa%1C<aqFC#KuyOLp&n z9QHZE?Lpoz(;ai6PRH}oT$*#`yJ#35qw655PF}FCLN6MI!|gwf%{rIKQ@nEK<d*4X zx>nTUdP;3}kv;w^!*#pe<QJZUdvFoY(YVrsB_9}<oW7KiNW8q#xL<kPMeKea_w0Qz zdcY}pXy9%=opM&-aHG>JqyKamEeqA)K4$YRams#~Ww@?0fQkF)5UL!g9J_$FgWIu> z8td7KY#c1)nIje-@ZwbPY~}k$chBk=JZ&&m$Kb~f`g_tS^q>Cge{=U$=Sw{O;fK5b z^xyYQ^Xl)LyMM~=>GF_n{L3jYW9t;)*%>p8wOw%3z8d}Bo~RU5=W2~{8E4Bv_I#_5 zKnbLO;kE4|6Ed9p3CnQ``BE9kEn#`p)e{es!(Z>$rQ<uI!EJWplJj&c_{*yu?QeYZ zAJG2jPJp%=6u@vl`f<|k8Q<Bh>{Z%Qp4wk9f(c6IezP102k8nomET=DctG(iy=K>g z9j)+s+jFhsPTYJ|XHQ*@{Vh*!;2@o_Y)_quGn?`HswLzPYTvl1I(>O#M-K7bK5iYV zt>{X2o7shCzr!#1<6E{rxx;V!>B?tTjiX5hmerdjka3;A>2D<_=yiH3`)Gc6#*4?w zY)0YeD;>8Ypqbm+Y3<0{{GrJ;9lBpTXZH2IWrHfkX2L6{ZAd=*F|F^DAN&KfJP0m* zdQ;rHXd*Z|{VtvuWPg;`doKZOpgNrQed?I4d`_c*3)`>^So>SO$Olsg&GeXLNW4dP zi-&-AF-Al?9d(au;krR)K5x1JmQLy58R))UW|VAOl27LY#z7q)lxKF`;WI*c5%{g0 z49&@CdKFK>ogUM*Qe%~wO>$JX#FHO*WVeB_=p`5RW>QXm{G1OR^0q<y!qG&34Y;hs zo=kO4=mDJ3wfa(74i@^<jHvTg_*pS?a3Ev57L8P{&ae7y)@XZr!`Q%z!I_kE9iDN& za?F_i-)!A?vnEM)-}l?yx9zy~gjvE6W@#k;qxb(B6k;eCK_iL+NPq-Dteu(mt?%cT zPxbUJS>4aAsx&8$%abQ<4Y$Jij)oi92>9^`tr0=1wqbDP3EqW&5D#DYhI~)5!92P; zyx_0S(NWK3=v|?EbT1J9$aQ#zlS5Zw#zGzX@f29O4n82T7X}v8m8%ndV5KKzxbiMj z>4%33c)P^I3yq~-8J@0kCEN3r0S)~-ooDrvPKTHH{-~4mO4uNxZ5_DsDK|BlmFRgL z#EW0?bgLWaI(eZf-<M7x+2E|z3iCC~NRODnEkoD2O<wqeJ~}(un{Wz09pjy=5RB0{ z<qlmm2VXuHUX);ToJkw6m9Ie=7b<`0dJ85J@n&`keg#_EfAle&!{ZDn1tmP#P6KJv z)iPRT!48>hv=Zcf9o`3ztGoHL`bKAey}>5BUp=mU{P62vw%queO-`{fkU)d6K-)@M zmNmX*P{Uh$*p*&d7G1>~pL)$!cZ#{s3H8aOuUo$Sb(5aon$$}k)v)RXJx{kHn4KXr zazVd3LpNs+qD#H;Y}vAHYX<x9f$Wa{u~}&9M+W6NdKW}Cew-{ELn~vS<w}kvy45A& zzkS_5{rrdP6gde|CAB0?N6E<RkK3pE!{7f&yhsuH)X<w>{qpYDe^)~`q*a2D%iye| zn{X{hF)ZsJ1BjWc@W_UQnY*xqECt&v?@bdP+?FzHc&^SuKq~80Dva52*uh@;<vUpq z+*N3lBi=1$V^Y<l7ZtnPV4pM(O!o)gh|a^-uZw%xh}n<6_oKT%|Jh$Qqy5kBzHs1F zNBpOPl^r~St5D_?gA;2FnGu=<9h`zT>u_HKiT=dYKaE0D^a+t6Nj%Fv2Zix%CWGSJ zXLO$v;PV4-TJQe!#p}E0U%kD1@l7Kuk6vt(_S4V5+KlguMqhjqK?nSepS`~J%)M<1 zc_Xs#ssL|Z*;AcDr6do+ZAycVlzEO<JTY?m=s~l};e@K0>I{I6`JC@t3x$hlHwq~! zHlyW42cHEfVoE6<G=I93&zQ-i0$`x@Q~KcI<jGswAZplmfYf9c=TyqUr#B}KS2qf% zVitWW$AP_qrz;}haSR&y!~1HK-7Oh6YDe}A<8kN<FWumFHwfo-%a#NW2>zrz!Pq}| z^+a3g`-RV`pydfbNq2{o=Zfqe{eXAjr3+s)3fBngDtKYEO-4L8yesX}pPZ+WJo!)g zr_2NMyXOP%qyy)=u5y;Qz(KvmANk62r9St)-{?Y<OW1exo#!jx38zcZQ2I+pPA&h0 z2M1KCg7?YuRG|R%c0A~LgAuoM2Zw`*d{^EZh{4<QlALrOd38%9biWgQ<MAm^TG!#n zksZFDu-y**Jzg-#8Lo%Fp8FNQdw;HYHo&!kx5`n}^^^7#ePq9c*PkNC(b6Bj9M}qx zNB#LuH!e8RK!i=w1f5IztK&q?*U2dj?UsDbftIY0@gkhrbo+SlMDxaEZ$NBNr9(Sj z!Bf3CdA&`mYv9gIk^IsfTsGoNNorpN*5p@T<54zCqy8=%=@TjrL2@3#=U;t(_a|R` zwlfx-k#P4P|DU^m_=lh0y>Hp)^X%-i7p09szM0NByl3-kVBgf3tGgdN4F=9ibDzyD zNgZRc20<$~+lXHb$>Di82NSPwam%4+Bcp^PDqRBh@4E2e)a_HpwS(v*Bl|E{7s6ru zBD=h8@bQJiW7W-d!9qBu&wedYbgeiUJS&}?o6(k50SQ`oz~=N&VWaUXC0a{dI7ia+ znF#;`uhIExJgBvZPq|xtFZZ0f$w>tN%%dNhYDV)qPvYK|n^q%P3fuzB=&Dn&_NdNU z=x~Vcdzd4pr0|5Z`#Nl}>;G#jpTh6jcC^oW^gcf%9$0;3RTDnXTZk^tbQ`Y>&a5LA zZu3{dfgj`I{69{HX8U!#zp0b^y5-o<TH?2kt2EBdsI#Z@@}`a~*gggHFn(AO^(bG) z^4J_JsVlR+uAI(r-(g6FzWKVrBKU>VI<w*Myj5OSDEX3vb2^+M(bURtl6USS-bc^u zUU0QBctTW1uX;XYuKi!<WwO<lNu}KnZuQsz2Vc)``oDJi25h_r2pQoY0?zR`oyqio zpP*DmC-}!U1iLc$LzYPIg19<FuJMPg;4WA_ENF5!0FN|XMRDtZBm;Z(`5jwY9L_qm z1y7d8Z#qkOFM9?h&+{+Ci|ttj>dwAA<j_}+WT<BV06+jqL_t)*W~ty%uLgT6b)6iY z<LOCqS>0J#r3u-UQA#=vmik!MkoDJ~OXZ;{Lf8WD`y6Mnn<?yWH2{8W<y+5md;bD) zY$crOK3iGZVo%xWN<7`3a5+kERvF$Utjz9`_kOk4gN;@=MP$h)uGRfg(qC!GR9e^J z-N9=CpZr-Fy$9x`S7fl4r-#_G@I#Y~hle-NC$4nTv-$GUJ9omr@Rc4mQ!RB2oL<;9 zZ4wjvu!Cjo=Ufe!p7M0xU=}@!E-sq%)05z>Ggh5e$I-m+)k-(UozB_WV~VebF1QYV z@RJ9d9`Xl&1rB-P=aK$L$z&Jmn~g4NxD7?+S(l3@IvH@}6SW`vfx+m3`|MV__b$D( zH9{SF)Xzi~`$Y9Nk#vd}EPt#L{pRZqv~9bErO0HzI>Bbpn(DF!&fvfY6Lacc`dUL$ z8BK_-quXE`Ta<lx)n44!?N{*`rf*yE@v`sK*)_Cp=HBWV-q1(->cSd26C0`*y}+v% zbi?P#_71o5r@p4uS{JXiD@P}#ANOv2I&k$L$#imwj_DKS5M2RlqapCgRY&)Wb>?>1 z0iqfy_{A^(ai{*;H~Qn>`zLo_b~4x3|M>H}zyJUK)7`h-_g$sRSC~RZjK-y~DV&Oo zs3d1EL9$IKjD?D&0w?SlzJvHgt#Oapgu(dj!{<{OfDjvD{oQ94C>l-)5w|2b=zsqd z-hD={`&mwN@@n=OmUXr((?}l1Q%a}W{q(1QdiS$``LFN3|DzwbB)N`%%ikV6>9j}^ zy5SIY868ddxh$FSX&;V|5mtuMfhb!-9No(2i11NHE84@+^A2s$C{(unVIMwN9&Jz0 z7oCV!NB4U*p3lG6Nu%Gpd-3__Tk`ZcK$Z)>>N|0-IvwrRt45IDbeL5Q@S8SEy}?Ii zwSL~RCY!5NkSR~NgxNTY*POi%DH?~(shZno-5>xXyOB0@gr{@7Rx#rNdS{GFuTrCn zg+~zzJsW{m>Bl583LegD)Mr#n)5B@xZedf{(wz~pL8{ESG(E$u!&fl{shg|lBm<`U zwIYjDmQlHbS7rAI*Ymf`;Ia~>grlW~`<#e|I7iw^j2z>o8ytA|URu0aLlke<&=j_G z-Buq8p95U_<K!37HM#?E@}o;ASc_f#InKy=hr5di;cpKKUD7z&ldyrNWN0ZI7>D+F z6yB$-p*0vi-R@V|dB4)Z+q2L;gK-etyZjdf@vb$J0<Q><J&V5X(*5=`x=&fsjkeN& zDEvUaW$Jca!ohLL*PB1TbqPPX757_dOV&F*`FKfk11PEA&7v%c_m%0*OMg~hR`}uX zr}%ij-oe=wfGh0c8QV8HKjI4Kv~{|Y&c+aGcU|%ydQZr2;aucUD@vNHtmRRUik1Gv zos^z0T%`Dj3rNc9j}FArlors`ZST{M@S~#|6Em6=^9*3!%Fj_(O=kN+n_U1mn9_ok z{X1oU<W#mYTn$L7j<p|;o#Z@})WzOg!uZt6mzKsl+{Y(Zo__XKAF6+O_ltU=pLLeP z<G!)`Ck+_B`0RUkPe1Pv!GHU2@BaQj|MhW>8+<ei?E9p)rZ`)nzVhA6XsIS;`@=9> zh!(#mY_!gf0|_dBvy6JX*?1%Va0*=<#<p-jPk2<+;opt-=)QP<jZSNS9&J`R*xF8= z4;p%t&*61Nhr=a{<G_w{BtBk|kCikBi<2Mk>1wwrwc8x~6wANXeMe97@P-NTz-hS# z{WyB)_Z>v;m`mF?yQ9rpc{yD85Z+E0{Wdr?H6+~0sL7?@^ZVz072x^ZmmTc*{k}2( z<@dhYV6FX<26WA)<Kg>eEMokIgVDYVL&sI^R{GZuKhA(nc`D1k;4NXEjl|#MJ8%s7 zYn)jFyx!OOG^pIPw`F`UbNtr1tH6ix;$179j;$*`TS_)hY7f4t^Xec@4#}gwPx}<? z@Zvc7p5;~z<?toFdakcpD&JWf@$#XWknqz%ENOb&bL})aKJ3s+t&>@+ckPWP^#=~? zdeNTc%4N&_URS1>7>7|!L!)U2!{ANn%u*_UvphOg!4{?CTm_merk&xmc2cR*kZ%dq zUykkD2E{)v3(ntLyARL!rIv1{lwX*<-}ebIyxGA1>Ot7ksh$lS(1~>ttH0}%g^!C^ zH|yC0n5Wt0FZ%H_(zJL>wRGO#t!?A{io35|pIS+Y(}%jkij|nXFpv<wE_A7rIxt+S zZsWQ54LWrv13xwj$9l|9VYABI`|6#?0}@z0r19!Z%-~`4_M3kpf4FP~2w;WVkGpt! z+dupn_-J&U&{KeVDnEZ>*?XqvaiXvY=pw6wH@h6{aF@pZ_-$j7UpZtEkgD&}FYjP^ zuUzT!Arj%<*^|lbmS*}<<gqi~F+n~!UKa_0*WYjxUfKP;kGF-nyW|CLYN@VDPu4>y zT_|Wi;Zg@dd~tkD<!mNAne!)=fxc(iL<>&h1XFhRw6yI8Jba9na?jsJsOKr1G=me5 zvg7QTRfC&=qE}$2SL+NbDS3n>RF7hb5B63Jrp5lF*RpBX;VmeK#6%VubQ(UcqjRGT zed#y8;FBfI55vJ0iP^8=Lnos!T*=e=gZI(Rem%-QurJ`wH?H46FFwqshi*3Gof+RI zzaC|m9MB4`6{eF*0JVS4x$xQ3Mw6n8O~UcuWWQ|1a9+UMW^Z4%h4N*++HbNI-!>8F zq-x)YHh7a{%Ykp@>|s2LPeBQ}@INME^p79KkT<<I0Q$VusXmQrfC8tE9HO<1o1`n} z<QSjSBXsZ&&@sMtUtbEJCoC`y$7Q{)d&f$v<PT#ANgHwdrth}?!$17}-7kLe%e&wI zqd&a+gFpJ|-5>wipLR&q@8A91U;WkHFTVNtmM;;EJq9-TD+Hs#dX!;er06VtiNzDh ztU8WBrN)_XYA#2feFked@F(O|0L=2Q*D>vMToXb-&HA~H^K>dF1B6T&HVW2TkR%!m zl}9d2b}<Y_DGd?&#@QEN{ow8|e)cc!{_>yyi@VPn05}`fKeX4Vk?5?Zk>D*I2)-Fb zI?hn=d~`f?oE}+v2K@LCUsK}8G2%&dC*tJ^A?CSvLJvr3%u*aW!>7jozESVbzih;$ zJi@=~RO~11_uVHOstA@YJa~x}3Ezm!+h&8~`Ad%U7#~ipmtIFVI-S;tpGMu+@KVYY zj)HS!@ZwQ)%!#W)=;W^8(vOD}2_nJSzOZDEnZocv1FJD{f+vM$R3^upyTl;M&H(uB zfRO+kBVIty;^&~nTP&Q?2ZvGehF|tNk@+02L{0e*9>;JU*~U*ZA<@K0;O~q#T@4RB zLlp%TzLOz)9v0-9bk<ocKRHr0>HKp|X5H=awf}niZHl7nA1}o0l8ckko&Mc|$IIfc z)1C2-&chG<(=ZRqRd|HpD`H_P|MgQ0u%S8(1A(-ab(JTL%R918%2VD22hA)y{n4PD z&bo4Y-g`iIo%_nUg}B{FTiJoxUAS~EVOLrBdGI)K*Wbyf7g;WN;@~a7{emZ4x=+(C ze*wbqQ+el#jsm@jb9r9$Exj;#T*?r4()>2Bl>vy`MJJv9c%l9Fe(*g!1gk6uZV?B! zcw6E%5COdK2Mg?FC==03KW7Ate&p@vf{ROehsdLA;BsDF*YhQVTb2WtO;z3i91xth zFyBlTVbNpwa3nd$Pijyf-gn4O8I{52&SB)qqU97@mj0E0<(6)Z^Fea-GNDKA1`4$! zhhOS4oDWIW)1I=9H6xf&2ZfF5gRE~l?Bf?^V(Kn^@zwY4elPp|?6WWWT)~UGe;-}{ z__zP1M!S8J(WaAr|1?P11T7B-`b{`Js`Ew1jZ&lKskRIam1XIuaLXXy_kgY^3FNiT zR(4-1|F;q)7+a24yJFAP)d9o*=?xYJS6#yo&)sgFUJlEV+YYX&eXN06eBgH{Z_o6g znp$A_!4%QM8hgR`+>cN<LceAz=OhCUU+S5!v)M6OuOCNG9D8mi<wO|J09#D??J3RS zGHYcC?i~B*dD<YuXOEwCuEq1dH~-b$59{Fm-j9EB_XofCdw1V!pmrx|5BuOGx@$Ja z-rWZ}hWI@jd7LgZ*`GIlv9sm1ygXFu0P1Mh1{QBwYPZcim?bU4ew#(hS@TJ`*?Ia> zoK;W0w4f)1MVu#8(`g4FY11uze$^6T4dRPBfR<rfIrXZ}ucd>Z<s?eOrhMJDu7DzG zvn<-1&CH}X_V&iCGdo@>A1d2csgi7^+)jOMfZ8C-n{@6~2hI58q4PlA_WrgbO&?W= z_R_vNGh3+T%WQdK@Xm5<^^db`X?W`&(uKEpRoLvhb{n11k3}2QrMviHKmZ4$OGk*z zZ6(m5)mFZCXeXZ1O%<@qAijN$tM}108!*`PBpCfK_`p}j%2FO%QE9<fmm+8N%ftbA zubU~iw|jNJcL(j9nMX*IIYkc6^gjN!T}xW}K)1m*h_g?mP>wFRZD1}uLMd9JNoS#V z?HvAaOSd;umVVOVixq$C494$MbGpmd&tMQ6sUEy8-3E!u%q3a-onB&>`iaoZ_?9mw z^r{3!-E=dYuWNQ84D8L`0BC7V7$wZgIC=PB>wMne@$Q^80{zQBIktt3QGHK4GvZ1k z&R~!_=Gk@XpE`c7!#;7xPT?~<?h+~+T&*sY);qEWu0O))!aB9(IGx1e!H8aV6p!Cl z8P*1tXSP5+l@Cq*HOWFi-dzSe9?M+)ebD&}kJ2f95wr72b^4%e_?9{ymKQ#d8^?#J zI;2mM__7BIA>)GZ+svl4_|p$>9)`$P1Wcf4FRvoP4IdD`K1#TQQ|N(Nv70?Et-8tH z7%=i}U0-tv^>w&~1G@IHc=elXo*M9IFbq7O413pVkN51?^n-nad-{;wup;+Eac{CI zZ|kf+s=lD%?1QenQsRrRygdD^!)*<)-C(nqI=30pew7{k*Uq<SKdzMt-xmID%a>n; z*S-&3v8>TG$V;d7kIps%L?3-fEM3*hY<$e@Is2IGW~Z`y`d~N}f#bbCsQN6WK2sI; z@V0<ze)t1{PtsQ_Z@k~Fw3j{ud0qFPcS7N}eM2r<s+2K(_37Q+Z`!N-w}12B?tb#q zKfL?t@Bi@b_ka3NTFU&R1Z~PX!=A<Sy{0)g3FV;^yXv4h$l)wiZFDf9ZV5|@jF9*C zkiN}$H`2gZ(UJ#F{?(3-0aaAQMyL@n3bv6Qv{uPA?VAZsaoOWl=rJ+iH{~mPsW2gi zP}Bk#xpAdDQ^b_V46Br-n!}TIz58Lb{@K6$=XZbfCx6^hrA|NgZM_<GCzJJntEE>U zgo4dr_lhSUnsFehbLyqX%E(~*_U{7*I3<FQ+?z$FRHerm>i51z(SX2xv#(F;xIV3M zRS|0O3cJ7iqC>$n@+yS}&0$eKmn7G_zIXhAQiGP@(MFNdy6BJ38i&Fug~q`5U!CN) zQT!Sb#)y*oUgf*K+xM`gS4Mwysu@#*02GvrqO@lXhdkJD=rA#W{y>+%R7IAxvMWnW z>2Vwfgo_%i()q_woLL6>;{-#eyhg+6z&hS?%xUR8Ab79it|41~^oJYR1W)ntSQE1H z)5m?5A-Ll^<tSc<-=p6uiHx^AOQF+D$HPhbn6h`U=^%%IA><6KQ=UV-k~2_rZ*)kj zhN6oSbSX<6a>uh7%P@28FCO=EZCOb$RP=?=_wwy?6A~1dDB}r?yZ3(JUFB5niORs- zVBP|xJGc~H*l4+hRb2m1nR8$UojMhIgLj~v2<5uOd8Q-C_I}deGL>d&Z?9v?4WJ-D zpgzJbK>AyfkMOSe8<-o-y<Gt-=cFQ^E4}-Lt2-TWT|5IoSx4q4Zhs2|h0a9Q(y&F^ zBKo6`H+@XVXm_m~fBKzrz$ROAr#nfNUN5l>9u5f;|Lt92>e3~zk=P%1Nmh>Xd+|P9 z?tWduudt=LWfIo^Wm+TKGt}wrY#fTg^;;{E&90tVKK!7bh#JnOsE?>PojZ+}+TK6) zWe`g%oemTIU6I)#HYx<D<@hIGWzANXR72{ZKHu$g2#~!*uTysXYecmX;bwYkpucW_ z_FbK=uj*j^;LqxaG|T(s#r@s?`){6fNY!88-Tk@_#On?oYF1HQWIbB}w-qoSbSz?u z{fQ6T6WCl*pL|I^(FdkeX)W)~B%V5!9ku7z;UZ3&G@yBS%hAq$WoyiE9c{tr!&9=u zvG>_-G(}OkXiMGCFQ6wqz9^$#TpNUnU-axQ`ujhaDHcBUr<BQSMfOaA#>`~dv&DYO znI2B>@Ud)Q)t=F67V~X#8vm1<<>~a(`*dP5t<%qtDYG0kf!V?MlUObD{p_pfci;c< z_wRo2;~&<^{r=sH+EZ=1rNHm|Oq9J@2D&w9xi!IsGg>QGS>fQXG6eesUx^AWU1<aw zOzk0kh@TPhwpCRLG2WkjUmrS5%#uHC(ZiPAIlSs^{t252ZHKXFTg?pH<M<}}UipMZ zvVG+w#<;Z;q8-$dL;A91fI7dMiD)*$KH;<6?^TW;8HHak*3oKk+>DW#-`6jr`C<N0 zag$Z(>)6_(YlrijoXK|$8omA|J<n0ak*E0pmK1(S-#3dHP6jO2p2UhW_8cv%OXPCo z7FETqfOyqi(zRFM(8hROT@kiflR|V7=&yep2&uipV;ypxE1x<eAFB)K;tukOr|Rva znmXv<|7cUMgYA3{@>@qx`N{FfvUFmGZ?cL<>IyloLtdW!EB$7+w?vbiD<933!;hJ+ zfRk%>Y-n7ozL_c4#;-1+D?0cvI*n$FS5{@J9`FWBz21RNg>3&hT;mZJ)#sH~r^u?b zu;=6OJDkeyP(FINWyHzXAY5qnmz^tN`8JWj$*qGh8uQ1>KAz$WWZc(DkLPDkb+}aC z(wAf`k_XPp4>$I&A`3gd-A)0IW{K&H>)51oUr{MOI?h1);rZZzRRZZxT@3&D)a!UC zP6v?PF8Ew*R?qA?JXS?Z1IP0Rd=W?9>ui%*KU{L?8h;J9)?tcQ1~2KI!Lt>v%=qYi zJPUvPepX)sOCNRWo7Dmjs^1Uz;XzA%d#;@Bv{3uHiyaMTd)VpXs{rcUS$?Z6u#|sV zi>PoaXzv-A!xy7G0c9g4Q5yb?A3eZhyen)2D8+BWK!W1<w5rFTM~4Bd^XZ|&vM=u@ zWaJ)eufvxXM2iFQbPQWv8gCwD(;j9sKJ?w(yZ3%C(!=QPPilVm=GzVgY`eu)l%yz+ zKI&0rR?nZ+{yBW=p|gITci3=;+-A9xNA#4QeP9RPw_4>xOO|~<h>e<EjJ8+F^mPu; z>j-iBz5yO9dd?~aIz(2{K0A*8)eE*F-8=_pkw&tp-7^57?ek8*<f~eh9-q(q;Va%& zN8+V4CPgv+*u#_77g1K{iu&E_{;My(idQX>$w>fM1u?4l^Z)VlyZ`>*{_gJY|NbBD ze*D9h9{u2ZooxB#SuXqL>x}egrE6JF=G6BMhhSsCZ{qYE>4fyOQBR}i=b#eeO_><k zh&Y`@(!rRb=ykV9%N{T?3And4$s*JuAs^F~H-%Wo62bi&0GB{$znsA+Wo681x)D9b z2XCXhF;vIpNgpZxHhO>6ewi;jfa*{F#n0~kyiW@K;0HgLKwd_R3c2I9<w;>E`kQsW zjw7eiIx+OVie)*$`7Z8J=pE%BZe>B<@Hgrfs1Pj8?Vn1e6H(ijk?XLPMp`UCbNu<! zPBzt``jnFsL-E1r6N(=^?0dZ&w3ZgU>9pnQ$~u7dFZo!#Wl!%qb&Yd`ua>1-cK)Us z{g!b`Sz|M1)zDQ&AM;c3eH-#|C$K$x7QmG8!~0HdOP*UAfu3kUhY_c3_~#ZPGM*X{ za`1_!YYk95*|ml(Zl>(Val%SCkVWP6pHUBd4OR3pcvTK`+Q00Ojx_{T$TI^SKIQcp zq@eUn127sM{qJXlOed58jQY^S_bG)WWXU1daBeAm{07ej?~M`()5%Rf5ZvI2ycq3& zy33Gh5R@e)Tp+Ly$j8T>2q?GoM}<o<t+|y4Zb0SQEs9I%(O-Bn>_e@<CBehup#lHt zei5nQV1mO~uAbrT$+bHg&**Niw@cV*)bLUI;PhKrH@<jhWW=BJQWe(kN-L|f{XDBK z2bYu2`w3HCab*sC^;F$q+;HYx;7a2HYwFeW1$+6$Um0%czU!F6v%p(|;oRF`{!X3) z>r>i}Oy$MjbDcXm8zF`-`+@<d0YBx9zW#t&(&6w?KLm7{4daxJ_{!kE4~G!eC=bWd zeR`jKWIjaA-Xd-Jl-2J$8TLHn4ud|*^dbda%ezdhPya-QQ`Z`k?gni<s}F31)fDzs zvI)MSzJv4%-)fP}@#)}ZhsvV?2k}FVGMYB~RXB%}O?SHObTmZN28r1ac5nkm*$euw zz77x!E81aFXIYuLckJftY??;$>HTLrGvVt-o}GI8*+2a!cmLaq|Kskfub$lfyZ`g) z-GBd2|4(h*>$_(+$3>op$-!uM$KyBHn5AsnNW;E4617vDikyO1*#LVdpXBi4hkd=A z%IDc6&dbA`f`%H)TW7`qB!2atdlt`*6I=jQL1}#IsRyvu4)%WPRPSiQAyb+C=irSe zJs%y;m9D7SykIN#bV$jkmvJo~(ZL1-I1*K?nhl3T1-YK+94RzMyMgKL3x`8_#_l;N z<%5fI`&UfyJ%!J{Rh}N60oC^4W><BVp2eT9+UE4VFJIh!|NCFueg3`A?w)<#(l}0M z`QE(j^Fwcb*;b%u`;?zC?kHFs8lBK=D~*{6?KgeG1pg``t<mO}9&I6tpW56HwV67* zPin(P3mh3k&Rd<?H7`1n&2-ojW!2G>+Eg>4IzDD6zICoe@xJ-{Tpl_e2xVx;ALm5B z>o7<wsc__FIKF}>9*NIsd|P{cW@&0?$U;ZD0dOZ7^FR%-JkKY>RQ15Auk6~h+IDn& z8*FVK89AuS5=AmQUxP4^P2bMI0Q&*2htHZ^s4Sf$JX@O_e{@F4&OkT$%`V0l9bAWP zt#h3YgQw%}dKC}wn?s%QhhLq;Y!w|vGlw>XneNlS<CInpgSknGVBx>|yE1E_yz?pi zOBt8$d<rKShM=!Un9;Em63=#k=Pm#C1ji#YMAFic77Ip8v%i6xQyW*-&IN-`n4EAh z=CkL|ck;J7LuO6_zjp#So~0`o|F%K>*S=^GFWDCRI?<(r!D)vw8ckMUrhgT-8pcv$ z2VY_x(h?K-QMQ9Cjg<v|?6r^L>F(4xeAz@R(l&rGKS@1_Qvuf&DqA7^7P=bY$vS+s zAC-4z(oWh+89(?aIbo~gW;oRqVCVv53=~?rtD}sku9ZnQB<#Av&okR}(!fUwb!NI3 z8~JRDUrj#cs58>hM?7KQ{W}9#aL6x<7XQv6gz8%d5k_NYqu$+z-{W*=^}Kg_!H?R2 zMR-0jxKp8VCYv07<$IU_{o@Z-C8=*18Hng_KltKnsn@QRdA84fc+0;NPqvn9D^UAT zg3(d<Ru9_3INlywBs=_yuK36YqxWq3I(*S@&_msH;G8yrelbh@TIFk3)yr6+kOJ~Y zOS3`D3fLrBc8||&k9-zupDE(sKQ_qK*K!^_tmQE%w*kH;8?#^PlKs36tZPX~ZLonf z^()?0*B^ZT;_jioSqIxb{qoDcq5Iin1+Dje?$midv8)NuR&p31ti${A+Xk9_nI|4P zwAMftp4pzLjZz0MU7)kx@o>I&Gzud>kK>cNoXqL=X%Exy;Mkt0-PH<KZ4S%|qLWXp z#Hz1VFea{kbldwGL<_jL==|O5{_~a;z3RJ!Z`woh&iC4)@NFXkzx*Hnc=uob`oFYn z`H$}Y<d6Pv1#1OAY!){IZ8)WC!s_iT^N8tFhMJ@d+^J-G=&(r@!s=8i@052pJQy6t z+i009y1F<!M|mvm?RAQP7QexZ;WL6WD&Wgko^b%H3oE0iPcMeqsD;r=Gp`Pw`t!g1 zv%5e1!#|kvu>{QjnMsC4fI~`USs9)M-5Ojq>r{<|L|Ic#G*DzqTp1=PRHCQymZk*a z*TEy;!gRW9&JMXMXE2K2o~B@0$BzmX<HG|^mCqAcK2}2^tV;j3k@7b$Ga4OI_13TN zXstqKAnil@&=iJ7^wrypX9}gU?evSgcZTFOjua42G7OLFMB~xx;2JHV*=OJFQN$5~ zw`HAbQTS*|T|)+?Ddmto^h)?3gLI^d3s@T5e$<A{&^NhGS@9^sZhYdP%{i<vm4#X< zr4;>D2@VgBs7~cj#yX>=0DFJRt0a|hvkJjsd{$AVxn15FtvNH{fwGe)SQQQ;oYBr` z2W7Y$rQ{f&{e1_g>Ae((>{6ml+$jt!?`V=AOnEk9HT=pUu5j)2p?Me?`%pEPM<Ncu z_&S&e{#D9#=XknSW^^j+<T*HonaGb}(oT;)=Ao-MdQMVFhU0aI?|D8C-p8x%%R7Mx zi#D=Y;*;n4E8R^MVD#}47J47cllQ!TM+ZGRnXa(!?)ZEGJa``do&wJEmE<Z{87zs5 zzIqaN@$Sg$#KBu5E^K;R0G@N&W)I0`jlm5kv@A>s!fxT^Czr|QM)Y|;IHLLdj-DME ziu*1fM?o6bmG-<9zQEhPx7p3ghqLR{3B=MhG<5G9ChI`S9X)t?W+T$Oo5K;22j}oG zAcJ2N_3TmZC3{p1O25NRI&x*FB(Fs8>o|ru-MRMh&bh6g;1yM#lasyDaQepIubMgh zGAH0iUwzTw<-gog#?}|!{o-%__Rbegt$fL}<rA`>!O7-6sIy{F@mH1gIw$x+GrKRt z-|Wu5b)LQC^sp61<7ex-U!CtvXW`)quky8&C)(oUi0@XMpQzqePdV*$AD^`a$C|}o zz$A>hn;8xU2i-ue&I7x!JcYB>93)HlTzKNYeYp(9BTgE}F?g&PbY{OMW3$_NQ}PwB z&a9KBaSnHNbHHx)LRoZ#y)#o_LEY2RJqy<N`VRe%fArPeAN-Ra_WSYO4}SQ)b?yxQ z>O{V)omwZVJUV1Lhz}d^xG&rc*&8#m%89-$`>vcR02<Vv{^9#;1GqY2rE{rgJFPjM zeR!{vc4*Zp*j~2rFrI}6y6Luo3IoBN?x?levfv6kOZt2gu;=SrxY(-G{j7tua>ttK z__o*_%}_;$4%ufpjqj|0O7|w8{1qJ%-?n!;IKPS``;`3Sn?0{vb{DQXy|0@o-hMy2 z5FL|m`0Z44{NRO>dHLbFdM<7G&wx|TaQdyjxZd4(Ij*6(v<8Sbn_Ky0J$d7e@bawg zO+V{M#iMl+ijQHdck9F|-US|QD$dNcWIA;3TIP&L>#(Lh!jEHL>e9OWWdm0?dYe{O z_&FK*q&dE0#KfoZaRnGNsmx?CUm>F4KwoD^yz39fd-Tv=I%3j9T_J-FGS(@u6w}tU zbAYN*lnCN~#)~%w^b-2V*`|24RW||6Bn0ntpg8y(bHn;p1Q5;f=MF!Vo0?Yc;V&JY zf5o{^_jOm-R!?T^0(gf*WTT!M%tIR^QBY;y>L{5N#;>FU>h%yP6W$%a0blwDR$ym; zvI#nzbZLY6#ZCUZpSl49{Bj+7*qZ}K8Q{5QgZJ*md+7sxa-J~Z%AMaP+tM8UUB@xm zZKkj~V4USi2PEx)!7wIUdNNzlonAeTJ~Z!FK~{-QZ%YkjI=YpCQ+PACrBuO-i|hHL zee)XUtD9SHUV1b7R%C4T9Q{HFK2|=zs-Ujo(GkzPjaC|lBrnrHd8Z9xa9r$>8+^45 ztG7~@=lGst6mVoozwMuW{JgfNEjjx>bJ07Di!!|m#>?Wf7tZIouOs{5sZA#AIOWf8 z??(sNH%phvaxz|DrIbycJ#B^Pi_T4W)c(i^wR!KFxz%TQ^X<2H9~^Ew9nZEjqV%@u zTDC<8+NzgJCp)QNd>j54B`#jhM~I>g)<m0?A2@Ni<9qd1$}|YsKo1?<imqg&JwDq3 z%3Jt4y1<72^sq2~HGU6=@jbv@_{yFt=+e&<bN=2x`~FvV&pVy#<!^p*_wCDH)_~-I zRGWYG^Pk`S?O*-X-GBY3e{lE9KmVha9z|@^;f|TM%;s%}9zAXZ_1b6qw)GT70L?I} z%#2#a#;}|OLRTqMs_Iv9h)P)#g3+wGJ0*E%1hBAG42eQshg9v6?{Etx=a~Snv?VP) zg^}&1L}5^|BYcVouiiJJ7fwdvjNCqNH2?Sh;P>x-_OqYeeXs8^zN}Gxn&LlA5L5V! z;70pcA!r3OOqI0qS2QXQ%7XXIDNqa7IMrEnG0<rFxLkIKtFZB6q*Wn8()atGjgD}R zrxdjh8J{v4%<|o5u<^{NF`m{r{m?$$w~Y?J4Bxk}>-?$|;BzY5weR`8(Vv_cIL)ES zpfe^$kMTvLt)qSRK%M0VM&ImXn+zh7|1@JTiu!XCNl=q1$0OK+6&-9SP`)W(cX&kF z!uvZ%Z38Cg<@{)LJO_h<&$;Y*c_w_}T#;}}CWCk5iGddH%DV12PmSPH#K9dt`zI{S zZ<RzDy?n%X1|qY{$#<2_n8vOdt3%{TA8(EUD*^gc{;tUm-@qL|4u0a`c=T98d`YHo zL_Hi8cuRLi&80c<>Y4m!|8KB>@Vn)4D|+wJxh}qZSMGsv3>2P~sGs<y3CIOceqr9h zRz<Jt27a&N{I2VIzJji_in`J+O$n|zd9P=8d3V2n-0}(o$93U+@WZ2%N4QHFx5tlh zSJ=v5svAzy-`?f^_^gswf7mQaE}yvRQV;ZJ?M=*4{}1mD&&;xHb|Zjm_`6^HTv0<a zzW2h0jSepra>9bMgy+wmmFJ-Z7cF3}ZkPJ-<dg%;-+EV9%FFK&SIwLLowp)_Gv|1f zhvSz`Pe0iPh^XZooa}iso5kB=Ah~@*8Zo*m-_iTZQ*R4bC(izQ@A0&-Wdt|?oa4&@ z2takN(zJXbY(`+6mD0_=6l?~WMX<C~xi8wE`!M_XDyQ|cW)Q#nVI8kN7x%UqpU26e z%DDFD5eF-RAGXxgtnQ=EHPFZF4Bfk5_sw7(v>Lp4oXmB|D&tM%8kyH2N3Su$Cw1`6 zcva+V#hi=bm&`TJ<CZ+}xNs|CLO5KbwMY8ku3aJJZExwx78J`<k3Nj;<Du^lvyB^Q zrEBr<$TnWba}FP#a?CbkUA%pj9KU0eiwpm&lglXztx9x(0SlsF8*7t$f6{D$Djx|O zIB<|li-1}R_o(j>Kdz(u{O%|D6TknHAK(4nPkyvRsGf9a7`Pnt2RU%h@Hm=uUT{Tc z!mN3q*7?f;IkHtcg|2*f&;}~9w&zy2rdOa8ZdRQ>p89s`sFO)wHOso?cuCGFrSzSy z>Kr=(84cbawA@;8J1na>hiBS0qwRdvCpF%-q<Lw>Lp#Uj`XrHW>%z_eiBEyNtb<9f z>8DQaFMsj#yWjlgH?sxk<Rj4yOQ>}oa2Zee8gtm$mT2aPn~~80HVch*b!mD92f9UJ zD*iz{-K=Y`cv|Gg4((=iOS^hFS)%LKW>&iTJ3A9h%i80_;&tYB{>pHSA0fH&z*2T) z4F3>Qf9K~Gc7zeKe1LQ&))Wu<{`aoU(%~>~!S7fnExt>GXAk4UU>C=C<Rj`Z&gKA; zYy#2K(a+hDaOBJJ1=w6ZgihsnRk#kuJM{>E2CtLDbKKADcOcVCj&sF?(<$rlh@7kM zI)~j2&FK)m3dWYb2G4Au!Tfj4da0w2H}h9`Hb%eX`cA73tqvGQZLlamYj)SzPFxEN zCLEjjk-rE%bn*#Ky;dL753(#zRF4z0wdhlCi<{qE_RH=Dz2`dU3hMu4(t~2J3;(a{ z*b=bN74D@RzTqQox<I}#Sehdd;PDJ@!>PRZPh#XYKd-la8ZxMpZ~cu|4N7LYo2ks6 zvgFxSgNxg%sXn18IDFI%BnInR@qq{GoI25Mx=}|YeIk!md8o(Jjr{p0dJOu}7b`i~ za^HaUEm-;0#&HE5n9-lr4}9%aStxbkhq_RLg{dQlSKaBlwBh_QU%WVPg{;HYTbank zpyb-Y=vMypIoR(TEUi)$*FaFnkWuSrHqiIxRV#5@E%L<n%JiH5jZg6k?&~zCat57F zgB84l@GzVF?28Vz?N>)5{ViUb7@w?~u?^@=qYjor`}Xv!4y1b3pwI>ebbKRxhvmgH zTV87&%AQVQ3RzFyl?8v)#2-8mK0A~Q@3Wo0pL^sf&85#b7|S4wdV}Ak89&%A@D3-( zWxS5yYv7PPe)qb6z#-`5t%q$&e)O9f`&Z5E)+oLD=GS-s_;>&9?(hEkukQZKfBH{% zpVgxMU8CW?r~Af9gLRnB=ypJjUZ$XwAL38zm?46}Q6?hJ#SnQ<S!1}~J0%=%Qpzm_ zEv*hQgXp@P`Q%u-6NXHcozSO9BaG4{Xo6(a(3)~wBwvn#N^(BYK*6ezG4Jy)zqtF0 zf8HmB{`jBnz>HVTXj|I!#NM0$R2{H6I{Qn5C_TUwd!$t^`S$N9T+iadkAqgdO5kEo zday1^fR)Z&cM4oIsqSM;g}`?M06n8I6S=}4W>n?j;OV%2XuaO6mNdNY+ggQ0-?VUd zquHjY?WL=SJVyin>=n9?-{kcyo|3_RjqH7UsUJ6U^UiE;UfsiBzjG=8S%%}3xAX{| zsQOcIzr&l2F2N~$kFk{p3*|4>cp2Q#VffFl7ZC6aOVSUp_a2q&97NZg<-tk>^uoXJ zkWQZIM6!j?uF7KcE*T`gUF8_Q>XH3+Yj}&X99#P7QqP=Dbf0A<JvXQm$kc!&4N!FV zzJDsB0z#}3E27FR4vzg5h0L+xV7T;!V-1#qr|cd-Ucy|<?@vEr=sul$<&@?YH*EuR zLDG6YxT!nW_35)TP`hD1YRYwkadKR=dXwIz$mK2bc;AcnEB>VVpZ}I^X~rMvCF#$N zgxweT2`q7VdWG+~*Y8L=2DYG&@bL2Rs<0bwi~pp|m0e&-hm$)QE9$ydcJki#2Qj}z zFX?v`rcTL+w-<kpP8`}KyrsTC-^x6A3OpxnCMP;WCuB+&;qUs$BWV>@_`%QPc~<5L zJ5+ebixbXfun~i{{QX&ZRiqn?lTV52o>?}ZJ$czd7b9Oixj6{?*nNg>1E0a1Jj%XV z49>|qOQ%D|xn&3D<d$ZK=?u~EN$cUHbGJHH8F6L*IEic)+hQ<n`-pU)D$KrJbiZmu z`swp0Eua0~-Min^oc;2fyO+QE_1)KP?|9tO)6d(#`>+O_7izZezD~rw4s`afQNDPY z?JPfc<5iu%+WD41S{BRE4OfE|EeU?~w2n;g_Odqco{h*wh;P`*&Cuw+ZY11cbLyvX zd+R2U;-Vt{_uj>U=Io&NT<3wE+u?rEd^x)KyP1^2rVI3={CIMBgV(`YgGo%uExcB4 zV2g^4J@nrUusrNyDmyzxCeq$G9vpVatX)oHJYbhOP|wmMpI`D_<1bqV=l8=_Mg1t} z=||1%n%(^@pTeO^;MJ_e(>m^Tmg$5oPLqF2#plS8X)xh4n-&^VghZutK8I38s7yS0 zRN?3}Gh1}+V;J{<j~Z#`T#%Im7Im1w(hk|0RZwL$`yXBp@;^9^22XSzoOSU!2hyP` zH1A2mec4Ih-wKO<%L(7U{<`+_%}y<~>d66CZ&DPTeBX@b28(m#ewh#T^4qT$zHjD6 zAABu+_pM*3(lhipMH%jwY<AdFooKVl?6%WM(Xhj<)S2?U&H){5_!_<VN+<ATlL(bX zsb&u_DL(9(4d~x4^6rZBu`LHWeBkvi-L(Wb7Oh>~Udocr$Geqb(&HpJ^^zT8Th=KI z$n>x~U1Fq6ZiK+vsp%?F6}E%6!eL>v6({fPP<p3&f^xxDCY7EYiN@WNmox#1pV=9_ z2z~_3USEUdJNzhR+(1joFZ%>P_-`3&IPnG40y-H4R)2$7Iz=3QdlKo9BJfmwCle%E zR((3UI_kxj#_GI4j3)*VET!F&<OWB44|O~m|3VpmL*5?8$XFdz3)gWd@ATgLFzZjU zQwlp%<Y2*R1&glWkFpq3ic8kw@$}?B_)k9;R&+3q&!A2ojTtw32L37lpT?_|<PZ5M z6G5d4y-atH*_+vrBOi9e!FF#<oW+ON<*_m`_p>t?$`_y27lf|;DV`18p|{<SZDO-M zOBTK{?18$VqhUZao3Z7vRvI)=nadm^*?{ozvvPr+pV|5N9+uNHwBu+01A>g%FZ>WB z&1j-$<F$HIyO4cgzbJw{uJJAy0`P*a=o7S@^uQ5u<FC%9Ph64h_RO|o(*Vizw6Y#$ zZw#1`**-bMSC2<Dbo;WiEe4sT(4MhR4#>6oQ@iyJEp>FCWS_N%>!Ssi{d>?>i-!pS zem+t9szG6^Jzv#UzU<u>3k>?Kt&2Vb1sf2nbRBc`@C=Z;M?*A?Tk!)g{0yvaLQTJ; zpE?t9lOaA!#mw)iKeIatmu;VoClkDyY$}J{l1p$;lST2rd)<Gi!LZ!*L5CmJk}Z>E zFNk>AOz+?Q&40c75C7M{sT1|>-GBaf|KaZ2Uw^xXouJP0uO1qWX?U|y&BkIve4VEp z57x-YwRYz8%1_6IA#7YAp_ezqv2R{sOpeD!@hbb;dy6Sklo9tG0W;)dY%sc{p_K(q zL05(#mS@@eqee(2sPy-Z;=fF>e%wg^zy8<%``u3(i3Y}gTZ}v-Qz~QW%QL4Sc$mpy z1lT^P5MKp3++&>3$1oj<>Fg?-q3YrG3trF6GyHtenkU6LP!2}$@TnZZDR${fF&sAv z4bR}Fo?FMi%HC&&K0LwaDjGahx+;PtOK;xfj6H1OMkB=(lww+5cRHU67%7{ze_O-- zHr}H}BcXg0PjQj($tBDzi0hniSK2C1nTG>BJ}Pf%@rA=Sm>jY$hLMh3vc{W@+@%ZB zZ;wOiPQ!C>k^W&Dy)+D$A!Lq@*$tPQQ985d=pdDoRvJ>mOk$bg8762L>f<vq@M#@$ zxr-cJIPD#bXc-(Fx~?0OlFtTIZVcG6OnmP`>ndi?3+cW8!)#^tMCYWD<(6%E{aNQ> zc}jN`Jpkur6n>KTDofr|Up#?(@ImXxoIR|%_!HkG0s6W=DP}>_`IU9SI<#r0{#Vz5 zcVysM+3tR>>y9zk^X|}*;C3gw@8WNKlK=LjU8{$(gtR(%E25D9`T7o4I90~=j$Sm% zKO^hCK=N^2JpA~)vN%+yv|~?}^hUtJ^%k<*f!$+;Do@$$&O~qvDELM{nV)o@!hpwQ zD{pzc|2A$XH8=o$%8jMHICsOJgbotmG?S6z{cUGB&^@%DC5n~Pzjb!AE1+^tH>w?+ z%oJn}Ud3%drux(4?1kLhr``KWSNJVG9*m|QR-Q&*qnu6BZm^B&qxL|}f0~S(g#N)P znr31etb3hDn$NUPwte<h`;MBWec$pdb^3Ys-##r404q-D{ogXK$JN=-n(2G~p?y!4 z<GZG>Cy*T4I!BgQ&FPI;<j6R@Ys@*q-)NkRV1L;8ZTrxuqsjX?6@RpW!JfmPuvaU> z;n?0WU_3kWtPB8L@nFxv=fqu0<5m}on;r!1EGaEdVfS_L@cVS~DkR>a_i_8Q%5lI7 z_8XQF5`MPuY;RaHcV5Etglf6+=kezUUwnD@gD>mccDBU#TMqYSOXHqJr!yrsi<Qmf zY`(QT?rBu3LlvMrZOiO?@djJB3>Po(lU$RJ`)n>7A)GB;bTq-Oyc<lVBM0$jB2MSn zZ1&@5UT`{#rtJ^!{>qHV*ExzgT#uR+4RHI=e3RbFG>%yQi$iYmhn(8Y!EBq@E+=l= zle<CV^hw7^eH8Y{vb;R%q?1e4Z1-oMM_bP2P7|)&msZ4`jxOCG7p~AgF%`XJ`o5VO zv%V=oaN|_|fYlY+Db8X|UpNH|AESSMKs?7wAk`!KrfruG&+(Lm@m&1c>eAw!y5*<c z;e**1Oh<*e&~gS527F;)&@n&hz**-nK0{)DMJWx~;5^6t_-z(Xn8i;o=sx)H@m@vM z3FSERB{{-Y3GUmYm9Yc7Qdo32Y-jeov|ABZphM2+-0%tZSw*805I)75!P}>jrb2jt zzxk@+7n8%a=X4$I=#!p2;P|F;UN%T(JHyONapO$y4}2D~{APxMQXZY%s*hy%u%G44 zucM9KQ8(7n#k-!@Mg<4N&DPRYlM=<F)g^p`F^uaPw(fX=ck=dg9VkO1xv3)LACLS> z0-lahOzK`8?7rFe!q=g?!NVdT*?M?<v=4=YaFyfPo4>~o@Koqjr|@3<whHBX_Fka! z>W{^P+LC_jc*T#mbU_~>n(5@@@uD>0^E#b>6c3y#P9|?Vf521}mh5vur8$R{3JaHD zy-$zM_tz~u*RhSR!fl1oA=?VmV9jP0e(8N^mJl)El*wa1`g)$QF+$6`?G_Tu*u<Sv z5tnv8^!Q!U=qY)>Y*Feq-#>8bsli*FPM_7<p^XZcUOg!j-M#OQACWOzW$+6Q4+}8R zrgP7xI|SE0?NZggRbKtO2i2v=ee&&jcG^B&`oI2(x~~6~-TBZ!_PaW{uYS{q<FZxX z)ED?Bh4+b}*ZJEGQ67FJ1NejnNu`@fZ1ujf;?L|Dmfd(oH<HBoGoQFT5LG^1l6Rf# z)NNSHs}9ZQ&YpuUsQ0Z@!Czt!7B9*9stYIdyTAAEvaps@J!%Hi5?RWY_JGz(*;jY} z@Hc;R_kXv?<m+Gj<K2J$_y4g5q~qU7r!odSSU%vshSum5VhO8n(=nKEMX05-&^Kdf z2@wLEq{z^#fRy@OqdPjglnBB)KfCw*QSokZ@?hi@e^vDBu2>2ORz>!FD%=z_Mq#kJ z^Z4=eyFd7+KfU|2zx>O-zu2bi!Yyes%0@>VJj8jSoM6Y{1hectVtjZ+hyL!tcjQL* zkw94^6|V6>-cNsU0z<rXc(TqLSSrvl*mHtv{1vQn^bp-DW0@{Kq_Fn?8OgHzYUKty z2rK`5mZ!@8*Z~t}AMjk+r6~{ohgyc>G{_F_xNmf46(~H`=ul}aAeUw^rrwo7QK7}j z(CKtN30Nc?S$3bn5h8s*_+3gl`O}Hw(IhVQURp3z)_3+NPoAZ@(T)cpRs|*C(hV-% z#Qo?=w>L5ys7g~{c{wECjX-h2?Qn>KO25ge)aZZ*f>ki`QNBQYBYDx2Q%`59p>ko2 z2REGD$}_zLD>?1D-EPUEFT5(V#3!u^9`Mn4O9Y>z@5yxWFc8LA!M}S!gQZocA6@t> z-v#^AI&;FMI&!1yB|hmBD!I~K_4U*1J6sOF7aXfW#GQILP`7ubp9`7TAdkAFY<aHh z<Ok#SyG2L>4e|I6<14Ks-bb>0;%;GHP6K=^=Xc_zbxD80o7ip<Zi$D2E!C&`d)X>s zE_Idjwz?@bptrl{scLt$Z^S#~#)psm#ZNg7zfZc-fT3<IvIM8N-G#f3u|Kk7mrfdS zrwnP-cf23;Q^aJoLNT?H=+*{w%6A+ep;fhP6Px}`OL{q@vsX2q(~;;lqC6I<lNeSe zx-<Rj1@6_z!oI^*Jv!JZ0nVihLHV~gSN>u~iw?~M1g^9f?+Qm(aZhW<-q-Md{p#1v z=4teGp6bLsd42c%i}qILY`^`DlYeXLYHK(F4~<lZ`y9zwu-V4wWLG}R>ByjNVDOtd zMlm3VAxpt#Mu!fEd9bx~Y&T~)`i-$a;(%qgce;IaSk}D5_(I+IhrF1y<<7~F3A~oQ z#)TtqY4GbLE%|YZPyM17cm<X_2SCEo7j|s7nP;9uzw+u(8Ssl^v)2<-rrgXc8(&2F zn7t_BQcYOem9v%SNwht8Fk**gy@)qo)Oq{Sm!IGL#9@`SpD)_S`n;7;PfO=30grt% zS9==lceO2igI0%ka8(_H(mg1y@rc52?HdO+A7eAPNq#z$TsguBWiRZnbij)CX7mQn zeS?*StsSC^$#=BI7j0A_I5QgQN}wvs4DQRm(Omfv@AE<U`Q&+@6pS73TASx|W1m0z z;9!<`vw@p(>y*99N3yi`S$fAf`RoT>dX@KXVBpK=&78z9_Fy_)IhH0rrB{gQ*-6W< z48Ejq2BgWzYAmeR;imFB8|w(KvOzW8cKF$5VJc^08b3%jR;8cngm1GP9?_?Cvls2f z;1$2E6yY#C1OLKSw}JttYcc@4GTE=w&erK{28exlTt`vbcgbWOSp|l(cCte2$V5YO z#m5~i70mbfgM-zdv^GCbK_b9O2jZ=Rb+;#-UXw+*8K94-lAeFchvv0s&jg9Vl8^Nx z#I)OZ(QQSb!?iX6FUkY|@dTaen!2NoZt^9cR{QRh<yYam+1$-+;k887^=MRI4o!G0 zETpS9XK8-6z@Fgb%OQ0zRvCxTnF(g+4*%)F{7n!;Y-Lo;MbjpT5TiaoynLf?X~7hB zh@B3cl5VzB+<}E?|8NwXqXXH6-Y<U_cyXtli|^9`oeuT;=+W_e#ev*49fIFUcT<Pu zRY!Gj!INKI?e?*LLwi1?dI7)E(~YCmwMWR~yN>pFR{Ula$FuWnB?nx5>BKd5BxAby zZ8F$*V0&ICIa#nt4tT|fZ3T%Z<UhVw@`E}Ghfn0ud%)qP3|h#y)mB*{wN4p(TMp^i zWY>|MP<%pHd=F>b*VeK*h!J*Q+hmXpUyJGr4h#&OM%()ouw;zpY^ANF2G^V_e^#g* z8)ZO%{I?7md^X2mo9!c=L(oTbkNwU5_~!0it4}^Ox%v8+ziI%m!E7DdPF#N30Hx*n z_{>%t6zOsA>cnV|4(uimZS;P<9Qw!sZHHgpHUXN9v##r-=opt|`T4KPLbb36>;EA2 zB3;jittW0t;&-sfL)zcH8cbHb25rk<oPy_sx>}QsD*ocX|NY(9fBUz0U;q4n-2LJo z|9*;g-|Vf^8dJ%Q5D<=r^z^u6ehm?4#WIkMDE8cnrB$F0n3`j8mLzC=BVvuxaS$oT znf}j6bWK^*gxj+_LauNM>G|4ga+q)gT+9?r{FRSJjTx~Q-ar2FkM92Yzx)@?=Kdru zoJt---z_b2BBDmWFy*d+gbs;nk-AgTGlK~)P%1&0{`aHo1UYpr&-fiYxXyqSX1M~T zT)il*rL&w1K-_d*HA3mz%3z4FT^i3$ovU`F@XhG<PXhqW+=1X$qE=(&IR(-lsmkOq z1dsv1^GAih&k{Y)S+UoRq4vXLjn$h5FCLZ_>ElP`fO%DZ&+zpQSIUTf;i4`_om_<D zk-G+F4sf_`pd}un=cG9?oWQFA8z*BFyvi^q2JejO4%W&$oegRCAF%Tf|AQ6Z7?|;K zai?)ST9;9b|KR(fYRkCN8Q1B=6uxqBTiJ)kTXChr10|hH=>Xx4G%k5|VGbzWMnk%R zH<!b)j%--ZkuCh9amzmBywb-5kbqYVfFCRUt*8T+?%ebleZ`Fh%S$FV1b2fJy)N>1 zt_${fG#U;ZkGI#4Iphz_aPxeX0qn<)TA4mA=Ynw+EpD(uy_G=){21N^E2DIYZ@lPs zEA!~&()35T>$(q*TR~SCkhh?vmH0I3M+c^V#az6U=sX8EM8%&*?cj6<5pH@?+QWzQ zjxKZ@`M8tiG1{a1w-713M)kt;V)kTSzTtVx3ue%Uk0;mR;o<e<kS@4?bgDeBY{`VY z002M$Nkl<ZP_W<u6LsM@wDuVudmGNxLypTvXiK}<qj23`RD~DD7B~&lwZYFAix+eL z4}zspcWd-Yr);{t(Pp@n{>%;qxaaNn3?udDqz$+5P}i+2fzR9O_Ud;nvs2~^ZAQ0| z?7mHI7VOQp*_Q@ZAH46R+i={8&y{5v*!KHY{&OpovWt)F#5k$;Lj#2GbAs8LTDxQ4 zavnB>n`t;53AnQ>XT{LI*I5E>$VS!6dk$VYwx^bIxJP}aEIw+V@H5tPx^yhb)%zU3 z($Cg~tG1gxIRm0c7ORt`Xa6tzZQz!(LpFHCUYPL!`{c#HBV%Q51}$7>=cWSMhX-3e z`>gwme1y+h{`S0b`g&7Km0#Tbuw}|$Hlypac+Z+Cc%ieaGaLW%^iTVh6Y#F*bK3FY zt<QjvFZ=p7In9=&3n@b~3*UI5O<Y~Wmjuin>V#~yS9i>rEiI4z()e`^w9vhM2GIa~ zbkidP8EE*tPN>fPt9%kVzEes|=aWKD>%_gtA$<L)S&h!dFbMyv9KdhF#pgM6#9y|| z`AwZ)ZHW%M)?ufO7w7XH>Jz*z_fL6}hnc;29S%?9gBfh{^5us$1>JQBqh>UknSrl= zZ`vblz&Fy03s&`{nvxvTkBr|2X~=f<KPH4jfWjw)dtO}%mQI3trv7f`G?)?|dxhhN zf9mJ{byu@0b^oSc!6O5qt`&s_a4Ta4mrpqP&2K4Axdki_pX1od%7!0k;Wp>Kbn_wO zjc&wziPA{V>okC*Bah$ex|wUbdOGcgmbL5AIQ<Te6&cFe*AVcb<C}GgeOp`So5TLi z2E459z=z5$>~(3;q%-W$A{|~%_?zUk{jjJV{@D|3*O4ua)9G7Cu)|Jwx^ko+Ds>X- zIHVKvy}<@|I&i}suH#2=`X?Q}(FOdMo>Pdot}~Hx(n-J7lO<8lY0T-Qf~6kG0Qc_j zW-$4PrM>POU|cfg`N=|;4=nLl`q_w~fww)Nvs)?pcXZ(3B#)=!z}nOCY2dVh8M45e z>XgIRbn4_$zs%U4iIf|h0I4$|x?64Y6t2-k_6ABG8vGAedO~}3XuoM&;tnCJ6X&y; z@)=lhu_5qclU%bs%9w2|!1Ij;Da4PR_$c2kExJ!@L=VR1^0^;g?l858E@(QvHnD`q zw+K?{=-yT@R)+9RG|{Q@p$NQKRJ#5syB2AyLuNzHAnh6OD`9l4?WoS^BYbc=eb$4H zqC?yJ)+}xln(x}?^V&dg+ckWVz+U!m8iebX49MrSU#shQP`%g*%y>ZdjY{DE_%t?R zfcg_2(Sjf2+k{>lhzsa-8zo16B^{0A=XdzG&QFw{#Pr%A$m-v%%*hPw-?{F0=t2Zx z7$*8y_tzn|(YZ!Czv+nS_b<P>`%rKHT_gEMI+bdFh;IyTcDI7}*@!lNGk}cP!#Yt6 zgvLdK8$L6(W`y6@Kvdu-2v%Mrm>W&e(1(WuD==$_qgsB{-tKU{7&ZfXW78N)VOJ>| zMUMFtW=<wy1h<UgMltU1e%d#4|JA?xSIy@3>3|wQGuu53pJz49l+JR3k7Y**C7x1+ zj)qNx2Id^aP$iiD2vVz4%d4s#1&H{tEwXgXPm`4y>olpfGxUR184O%$-7TlqFvf+2 z$w_%_R<EeRF-Q@j9n2Q|oU)CUX$Z-oO%D`eg_YicEKj4eRKs`t4DH8h^tW|#&ocDl z;`5G@&tbXmq-OhceJ~nM3@nFAnXXG7QNH-=5Ej%IwD`%h^kglcoZ~IrICcG_rUUD3 zpby``Jr~}Re?JLhQ(TG;jR+UCOn7*nmW3>I4j3cw;UNv9>-mj{D!)cV<<&qKL0<9w z)fk>Px^>DPZvMny`fz6LkKws=cd{N#<tY+GkPZ*ZIy|6r!uxx}3I5aPVI#h4aVU_n zt9R+?!@(64s?=Y+xm_y}kGrJz?-&sDL*eMj6@T67^ucXtDsDgVA8`in<L|^@MN2Q; z?&X02eU;udeJFwVt5YcI7JVzDbfty<a-FOn;i~Iv{09$A^3m`I^A>jC9~d{zjf3K+ z58XeO*|STW>xzf#8JMc!NmsqA2jBe;477_oJP81Nhx<XisN%2kPAMn-^?b#_KR9UV zr^-yCV-O$($l|sZBsm0F&^4g)5r@J;^;4C&@f`eP(`1xhQ#uX#i0H9bXQrdtTv=zP zc0~uX_lVvysf^jf9MK02hSJIH>#sH9Jdn}lh*;8R_VX;G%>GqxkDaR{6f8^FAWK%b zX4HDbhaV>x><V34r@lTi>R!Uhxm@;ty(^v*qr>a-6+Vg7=S=S&ed+L%99bQl1_1ZD z91dzt=zWKkJdaWD+H3ka8MA%#X-itQS*2ljzcp3c^+Y?>)E|fX=trHIm3?gX>&;wY ze7s0rW)Tc(TJoI5%5G>cgIYtS-9!Vn<AH~5Q6c{#N_Nu1FJA8Zh;`)gzdls`1hS0Q z($h~i+>D?ZMO++wc$?`gkNu`kANRdsvj@R9`)NS)eEKOIIMd~{Obj~qdp&LDz!K%p z?el7x+>>znqR#DS@!+#Mw_h}?`~34S>hQKYs<!lHc<NBy$9sdd&o;x^r<^i;I~*$h z9-K*(4Y<`U%vE|yAF8|f651Ts!#auv4^|)XtZ;g(j*R}=cGA+pi6zl%0Oi=}n6r*5 zo9_F*I`+Tu4d!$}du~4^+&YS6xSvydn+-DfOKLA(OlNdvAExJKQ#R8QzEA2Lv%Quu zpKq{+Y<ja<m$nT#_~^(de8@3>h+#AP{my#I^6~-jTYcCm!R6PM^NILrukxQB@fYH! zLwyWZ>mckD>N2X&g{~YGXs&*Y@u|GkiRj!cRys&0#^+Kc=)utTc^+>mV?Q*(2Y<cK z=H(aBLuC|Qn5fdHH+aukcd7U5$W^WoItC19dEX)4;6*UxpKU2Nx?qkG_@!>5T{&!% zx~X0c)ykAY-5*}+5`H8@gFJ;UZt;8ep5tB`b?@8YzKj>&WMf{b<CRJG)li4-tRo5j ztvqENnv_=^30Hcyz2q@y$->FuYy6{1=@-x7S)`7IL6y;8_?FVnrwU%Q&H|6_!$*TE zaWI_2yRv6*(dtcH&xdxCO_h<oD`H_M$*o=$M_&w7f^|Ap?B+>p_8MQ*ljGwYo(8N- zx<&2{?@t=#g<GMsv(yD&rR_RxadG|IS3|}Fd8A8KvOPX|vq7NHUZ*RX#<kgGdDZLq zsUF0y`|y23KINribl5?F!$RGyT>6bq^rVN$#4=kQ+bvx$u3~CS4o^e0d;trw@v}GI z`CX@tOjka<OGBE3To}GoJB}Ra>Eu^9B!Z=keS*_-RhACSwwFutYl7}!6HH{Y&Mn!b zm)lPqAcL^l$wy88_*c&UDd1eIbH$JE(Wmb={mQnyZt3wmwg|lJ{euSa49b1jih}w_ z>TtThiAN{3Yg-Ge70w&ZhDL7Dql3)UVBeen*m14y3de_|=h7UyE3vqKrFTg-`<^@u z9vkrF1H2C3bJBbr>1a=V%0~`If9Q^judick0B|~<3}-K{_{stQl(sA%|J=W;_ulkf z>#}R~t9%%=WocE0olMtJ`tMtwqfrGwJiI5snD;0yY$Ti9L-Krs?I_=2Mw!BxGCC^X z(j1?3=piO1`QBBOjW(yeX9}D0F~E!hr8)#4{?lhvh`*SEsc>^$qb8dvNSU4H=X<Q2 z3~S&CLxcRMfAMF1Lg}YD1NJTjtJ!Q7%JQr2xhS2z1!pt{E};(o1Q9+}q>WH>bc$i@ z_JQ_btkXJY%rXrbOOX)KFo!QDt|Jk=C&eXVtlHIU$q((aYPd8qI;N+N-2@u_sy}!_ z9{b=!IJ|w3Jn;)oG_^G!mg^;<=we)YSLw@3W}CS!?W<-u-n8eML-Q;iysommMB|jR zrDr$!O%4nQTEY)kuGxqR7%jEj;aYVmoigzb?vlf7JjIW~K6bip{4(;5CL{CZ%o&0A z(F6G+d+_efWCsAR0<&k@vl2?r?3Hw7G8X5p`;F1`XPxzQ&*-?3LnF4F-|GMg%C2n2 z8#bp?72RO;f4r!KL7(7Gfs5{a%hh3U7*)O={UCM#3_k=g&bun_Q{5(?HAqFS@rb9_ zNG?3+&ef=t71R|X&hMrzh4);73+Ki44xiz-%-|g)g)a`gu1}vYIG?7G{rX)py7H}v zUWA7}Xv5<pjxs9ulS`2FW7Q|I$^-%&`Op274Tdn+#ZEGlMxM1tcvKQ4uEFmv$Hk8x zKRz#wfRI76>o|xfjXYKN<zMtka?3AYaRYLsz;Q#<$}a=Cp2qKlfpp^Jy*-m4;A0** z-Va=$T?e<59y00`n+Tpbt3=%8+aLKW=nQ70|1n6s*^AY&^67{fO<s8K2ER3$*9;m5 z#NeTZYRj$A7H;PNp@X0NoZdMN%B$RC4@w8SwE>x^I!nsY@S;=P`DND(Ko$ny)sgUU zpKVFD`$q_+vE+DmzgIIbEW<lq!~OFDVoF~Su!Qbm9ftRP_1?&JyEAi&o4x(eEM5bK z_jQ22w4XQJtZoTHcp3=n(3Hx1+cGg;fO?_>;_yPavsLc+u49M&>hT7BdoD}u>YKZ7 z(HU>GOFB4g-I+N;alFVTqmT2cly!)en-ju59Y?!6^A{{X%Dqlf`Poe!*JsU4e%@h| z4wHIQx$ioNP}6EA%y(<q`6t@O-tW^7drEb5%`US!dk&8cYKE`)7j<&Kw0F7uPb&7a z==`G2?^j>Es2x3gSZ6C5;KP{;@$vlLmm26<IHIKy@!oaBZ*)`_j$_}uz~r>ftqP&< zlWwxXv3zxVPE@#>0h;5Su5Fet*>WPy$UBI|_jEs$jx&q~zRuhBpzU<yWK3U_sF=;< z<^R0gsoO10t^>rj`VxZg+&Vd$zoIRCd~cw@%xtZ2JoNPg0|RgRAgF_+d_$Mbp{JH3 zzsVQbfORDA3m56SeQ|I2U^#rQt<Fl;<fV;%8lO41@X|R`=Xx0*EMq+#!1zY~>540H zuU;c)j%=x~nP0ji4|wRMIz=xGvg%KqDB{=y{9mW+G+5)S!?&z*m<&lOobc!j0BR%6 zmgQyDx%QpqVyB}V>aCC)l4O~$qP}-GxMdmi>Q8z@PtHu=sY7seT@xpY#q%xwhkpUB zvTWN~@(fotDh$_Yh~#2V+r7Q^X7d6luR*JC<GoI9=%T!<$&OWVvsi^CQ%-h;r)TL; zbZmf%z6J*m$4dnPkX-B|^|cDTIV)MdOUoAS6m%t#haaJ(zaiiI)h3*}H+mL7PF5Cq zrUT%3?zi?ocn}#4mD}TVfyzMa_~dZ{UK70V?=C^do+KNz?fvM1aQSCzmgSU-v+DyW zFWl8h|KQMT`gGD64CGUt6*JkFb#i@A_}ID#N`|FP2kq%!w^m;2(VGenD%+$Zwp9t) zb8QkE>`=F-$w!?(gHvYS<595eV`r1E*?6a6pMAMHS7?G;@ZpZ=VB$F%Hh|dE>J)zX zCl72exO5`<d5Mj+UY$P!cuQ40Lme=DUrv=(9C4MY90z7~=mvM<t`2NAH{8`J_0Z2{ zrNHyr9fPr8si#(tykfUHd~u&TOSkzOj~y;RfgAL^uRVC&s+$K^tH#%JXl;XV+31W# zGwSg=JLR)<4ybd&__tL8s~AFNZR$>H4%~Yk-I5z<o6PVGOZ=i^R_da&(hO)A4D@p# z;Pmmf4q4i>Dg*E7T=f;9%8hS3Fl#btHBfk<SslOhaXxa%ClmQTx$fWm!_V*TnzDY# z@Ha*MGDdCLNDA_{#^RyQ3UsZv&o~>24t|9OB_a3*))Y@?DMXpBb+jm0=~MuUz{qlb zju9=W_y@xJX&B7#t&(Vr(%e<3;9rV&jUIVFmHH?ywW7f12c?ror7DpA1+T^>xKzj? z5)Z-^5kL8(Ke+qjpZ&$%7rrM&p@Q?SDSRKkCx~x4!P8~`u?nkP|4Q0RAiQ_qGNP1D zLt{zz+Ybf{TJEL91Olh!okA-*oJ%_}mC0BeLG(?qDZR4d2R{4l1lD+jSJH0zjqr$j z*g+|8^4d1zm{y3pfA=({i`Q)&KTSyvT{8<&6@u}*Cj&Yf(pr`^{8VZut$p}5r>KKQ zqUTKwyJa4aI(&wVeL`w@rF3Xhu`c<bPX&Aw-gDY1YHY$2IO}9?Sz}5)M?VHK<^~ER zTxW1R?lru@Pg#PX!W|wSg+`GIQSGYCCpS4iVh~r}7`6(s4n)B5*)@zZIPhM>(H%b; zxQgaD5M5vZjqjsP1uJkL?=G#Q)yaIurmSFp{K<TXISuA2WpXX-G=|{Ie=`O$R#C5i zDhxhrgvfKFqQMl#i#r|P9@Uk?k4~L?DdO`=Dj*)MjPHzqwDf!XsneV7JL&zvItCZ^ zr$ZQGE!9&7y?5cqb;maE;#becwOc|I76}eLmri=I-EilmF5u9hL8sIBa^ZXEyULJH z{u>Iri@V~B+NEA9OX|hn$`Dc!-{r&i+jVs6yc~Fk7s`Vli7jV5+fub5tsLPejXOB> zE6I)y_k~yRB`2`Z%2s`f`$hY)T?aPsY!{jiEzuOfIT7Ii4Rr2rw?G!(AI}AHnzkHQ z0swY9<&NgU)B)FclTNKFDlp)yUi7_svCcwa2FzaO^nX)ZVcFM*yvnu-&Ten^yt=rV z&C;4(A`9;v^D|?6<jaBGDw{BM>OQAi$Je1S<5k34o~(}1SF?c{b#>nF>Leptofyp! zX7li1_M+G9hsIL_t=>8?(G;Z9l#OgZZXnNrCe~%?&_1d2#%Z{J+jmsM!2++h-*#ei zv()ceA@izE@zXxr_M-K%93zeYM#_6$r!ZQvT3&V5j3%jZ$b4bIvvIkXuO8q1+Nb)+ zL|ddS?c#jt>;@v9TiP4Vy}y3v<XyVe>`x=^TZSBs_@m?GyXa(8(D2wSQjR;@`o;6d zcV9irE!2KQhwla3w!)-*k+bvJ3!nQr_JWh6z4A$*l@`3`<<~KzTUNU0Fl#HG<)nVq z%%-KxW=)(5>=QfM`!_8MG+_FqZ@oY0(@q?e&5{+TW0^qri3>P{epj;y@jY!=y<#ib z+@0r9sBk{Tmc<3@C~QnC|5>>}kF*CMbqmL@>pUvU;EP#zd`ub2ORvnHj9IN%^NEhb zt0%Vo6sK-)_LJTu<BD&<Abn}(nts?{Yi}=IePVrTe4(#vLxXiXk@+<J^LZ-u=8G@d zCm#LhaJrPB)Ev=$!l=9@$|i?L3S{;)Q4B8wJoY_XE%7Rv$}qd2GyhQCsR`%Q<B1N# zYzZE4ip#SOR`F~Cy;`M=9`$4cyu#LAgl+nPFAt(`@-9Qg4NsFFfY4%&F#kq}5!KRy zP6j^NQw<`q>RHRcb8HRfsPo#h_vO_QeVCK&fGyS6sk<(#1KBY)4sXHIJR2-A3#WcK zY|1JHh>h;jg1dv^%1nL^pG&&&Gy2Q3jzjp^AFnPt4gD-ruIh*PtN8P^6^P~8?0j&x zXEV7>s+QH4k1cwa49(Elj|uBzL(`{9q0iSP=eF*d7?Qpo^tOtXz&jsg#v-1w^D(3F zMOIF^@hY38E@1DHfG@l|{<_vt*wgLL^g_5aijawH%Gc8dAPYNwxpK783f2xE|I_<- z{)0Hz!O7EfG#KBdfsp#kE)GelhHGqsa^%ss{HV%cPaGO$X|bYvoUA5$c#pJG?pA~< z^j62fxK?GF#T}0-%QAG|Pu3}&KGL^adof;R^Io<JRe$CBhVm<W0Bt~$zfjrG?rQ5+ z?~u*PiyEYSWF)#-;Qpa!8s-7jT@m4Kf4*mJ6giP2d5<rLq@M8^Kg&=dRygpH1sLSh zYHe~#cfMdWFL7~fm)guf)<=2z{Q2rv2o0~<uXNu2<a0WGFtX7)^*dvLy>F|@gY5c) ze1C^FzVD#n_pj{F?R($Z!w>lMjZX@dufrTICC4)Z3h&6dJHDT#``s&?&2^3rd8v!) zk`+uig~p|dCl2I$-j{w(9WJVRL3V7_>GPDfbaYW(W}D15qpzW4tNN#(gJ-^y(951H zX*xc?x#v%>KDyfB3(e-<_2FSdSZ8!S;u*0F!267l1_uyI$;PZA^nTioFj3HqX$fM) z`&x63md0ybnGiw`%oJ-vhJ{Lo82Mwymb%iD{uR^@(GmiKY3K5MbskT}l1MeaF}6&Y zF=JAwC0xmQbnN6qjaGvGlRy8nyFdD8|Ey0=d~b|>U*kowMl972{Z)d>TlsKGX_U#a zK$~!*?&(&_=ZdBjn`1^;90yn(#~*-$<2uR3MEPKhF9+*en$v*H&|!3!Q7cNjhPZbX zu|DD51EVhxXCQS(8<Brn2iShHEeXKKW@#Vvy|ULCUf!0D)V_Jl;6kbN@2WWOa#+az z{;du1Z!$`az|?@gZcoeGJ}E_B<P+p6G`w7wd^os_o65_Wjtb?6UYH(Q@#wq?InOFX z3Wm2TjRr&><sBYVZefL_W=mU~{Z{Z_c<H5`lN9_JckhK?hD5P0aE+AtxwZr=yij&d z?qf_iI^~C>w4TUZ0X@TmXf&u-`6U3n8=1kmlGeG0qmqi3#yzDxVX(PfqF@(rOMOIa z#IDfl_;eaw#~F|oJpbvTGA@|nydTK;Iei&?`Ab*4e77W0pODg=d}uFC!3Rn&U8(o- ze3!2@;dGVtUE_I^H+b^(bC>V>jTMDm`LE7=L5EG<heLOHp?{U@F8_gb%DUi|Y<PZ* z@0|@8jP4)9S0B&&p^E{J?px#Z9bWY46gd6|@5Cu7*!WmJ_+8iO)P5JD%<nqLWGv;0 z$GfX6SZ>ec;xA~YypK5myRO?Kyue%oP~3w1Gx>GDp}&}cE@1X<DK(<>A0F~XuTDh? zZRyaVFfva*>;oraPSf5?U4!-7-l_oV^jR`!h6c~4dn^AU=<o^6WII8nyE?-gaMWo_ zE^7b_m)df>tAi`umMqct;x>quyxcjPkFtU9T2@<;Wj;82UcSnF+<wvzZNt#9sM~sX zucNd2rlfdS`E}7MBd5L2#o4pjz1hh7?4X}9II|N5itd}$Gkd$)(BRjt8Xjh6^kK{r z)dh?n1`S$O^z41#`E84kgN)+eMz+Jx9#xGr9?Ti;*`X_s41n^Q;^*sdGwO}cI#;hc zH{t!`a57RKe6wdexwuXO+`gzY`ZQizu~pRQd>0%}&=0<RarfnyU+&N(0}ikHbRZpY z$dFpMcA$3s^Z2z{m)f6oG=lrIHpV_z`+Vo%2al}HMC&lV3SWD>?sG^U)!DtTZE+|S zotWI?lZ>3FSQ*#pRdzHZ_c&RI*1?(XB<~HBENy%Qrv#ij3E8rkR@xl0@GbH9r^CjD zHFNhchi!I=jgP#y31y$^sqD?LR@Q~rW=!j}=}gio`e}dqeU9Ndv`Z(f855nh+DCO2 zuhfUAn2lDCUgU&^)@F9KwPw#LC7MQ0yj~|e*Ht-TU3$)3Y4XJ!aHXTmF3^7+JAMLw zpE@o_iItizJg{9U{;JevS-mxR!ItUp&-pG~*|PCZR*%DdK8tiW`KVd0t?pC8Rrf33 zr-#%NGjn)DH?{lt;nPWv!V_#ba%eZx0?jV8z-_i9*^FP|TWuWwm18o+;LVmXHfb<h zT>NMr{>d=(tc;MJPd9%oymVyogAVkPzN(GMr+iL423rSRCv?k*y9=lH`y^M{OfdBt z6f)^A`6r*UO-I4-ypCS5>B-U4^o%b0;SjyZZd#?d_(Iu(>B>nlyrf&_w(>6jm@a}d zDfCPY2c!IKg!oHe*B)u#3x{X7iEl7^K6+mekSA((yvJP|L>kNkcXaiRxAK5DdmIkz zq?yHQwvrqqD0R0b-2LD}pCwR#su3zf?}FmU^k%+O`8Gp`+vM*(zOBtsuhnP8pslCP z#D<vSXkrl_)>(4k*Z5Q=(SE2`^yZs4FFT0Jp>N4w$Ce&fmh#FvxZOsJ8{0GA`+6SE z%E1$iko52ypFIoS;8Agh#`prg{%mVz`0P-=%07H8A3Y1^;3>X1byWa4gz5%|9vh_G zWFkH`si?g%u%!;lS7#8vo@75POMX|p)vNa};&imX{!RV6(mwyZ!ObtSOZpLoJKfz1 z+a03Ugx0%ef-UDR>h9}0yWhNGKT8|J8{kQn_;29Y;Nkqxjb^|Y&xTD1p`oxCaaJC* zG9~-x`?-${C}$Ve#>IJX*fw?J!NRY&V^{FO$}C?~p!?IdbZ|J~CEjPZg!@n4zkA)^ zz5XUbEn9B+OoYB^nbw;+eD;_4P`OHJlwm>#AcdXr@446j2fo6jGn*G#5l?lHZ3O40 z6heBWw2p;0i+e5#BIT`d>xte*#iA+6r`Hs!vd{gym{satr*y^3jggikWa*|%KruWz zN8kVa`<=A>v%5e3(?4y5p%K$MfWF(sXsxqQ1=B&sU>|cnSg4R1lbF5|Qoco?H=0cK zC*T<cqcr0cXNO|rA$-HfGajw16bS$Dv7a<X4%HO2_@{C)VDz7Y<=Wsf0#~6to*7-d zFKzf~fbkI<&00+F3ZJp4yvNDwLk+}~wM2D&?>^*wy?^^WgK=gJ81%=F`<#?Yr7<Am zoE;;-!!5i<60*ABj}{f|;2ys=^^er}68`<2BFdTC7A_90MGi(dr}Xd5>LvpYU62=7 z%9Rm2=OoGO@j8(c1bRiYI4efAm$P&;=9Nxf<Fho$$M0ifUnSeJw$eEnv$=_iz|-JL z>mGb75!3;AM`<({PNvH5cev7DG8H!ZN}J5jY~G|=40vURQ+1~jdRIuep{?JA;}Z7= zZPStBR+79TKmIx4@+}w+{onu|hMla^U3hp7#4X)$5Ku6%OSM9!!8iO|fxCaqH^3(i zelXy-WT1_I-X%Lf<sSUt3y%2fhXl_zQU>GtgXb=|tf2@F8V|e^PC8?!@Bod3gZANp z)VFtcFfH$O{Vq*|U80j7<mzncz{DqarMnjHexrYAE#{PWy`TF5pgcS{x`LMA^+&kt zdiFY+d!RZeU1g;h)6ZdXFoC7th1m_%;DM`&B-=SzH@(xSU>b+5{$jD`y}*JQ(wxMb zEtpfKeQ3s&qv@2!tBm1YJ<*ZFhmFuqpuvQaGRA8(b0}|Ds1FrBG~*S4SDbX5YfghR z7BE10myOs;mr_?;f0IyYv`stIC)~{-JjyOUt>fkME<Qb^i2G*D(87CN$D^<vqLdvo zgL6iYwIzPImd!8=RXK3t+!)xj63EJ-$2lT8$yUtlb0`|&;B4Tav|D}}6V9G09m{5x z!}E>aa~#+1#O+4Xozfcb;=ww+IVV0_bH0?IV`<br{$wkk)X`<Tv`>%Q8%TIz-wDa( z5B8%vuR5ugj=ih%^CVoq{H*2Kow-3rBE8wyXv@ogUdL7^Sv#!*Z|2vsUAp3o4tiz@ zFGtJaQ_9_UYoq&NwA??bJ#D}{u<^V1@|!6m{yC5yy2y^6pd(f39-avwj>_^+S=ubr zOmWIfrkvE{MA>|kT*A|;vzm^Q#h0AD$2EG}9#wkIxh2SEV&@nI&Jy9ZG0Amu>^{35 z?7@jX9Wv*Uyv{dz{W4jtvu{S%sx7A{Ph??m=s_1BV(o17JZ}m7Q@Ev(o4KjnZ<<_q zmHtI=KRVp6`|5u5Z3RFKv1Hk2X>`PVY6#oZqqXG;?AVv;SnV|1p2yKYGOS}9O!ahr znK*jfKTA3J3RC=JFy>_9h0b_rbis)YijMC6Us;!*QgA#JSGnQ2&Rk{sN0w%V*Z!cd z|2n`rt>_Ss$2%jXfiazK0~T{si&MTYKHx3+TCu>dobIN-Xi!cR3_qO$D+wr2l8Sda z+38LCT`}=W`g|s+RMyCYe>z*La0yU&amUC<N2G`tT}k1ypR;E|46bIG--q|`D~#Of zjt+;k4jN;>bO00vt8;QQox<1R`oZJyGyK>B??vF}E`YmyGd2+YK+@J_Z>O*2pbz~c z<E0&J<&#Z##aH$Xzt*V;#$csL<70`)_Zm1mk?4WV|N2_{P?S5m2c0hL-y$}Mpbo4( zD-N$M-JktTF1Cne(N<63vjM9Fp<SRd^Z$aqSv<^KB6=e&dsjWjkL=v&EL>TKf2E5Z ze8R0J7|+74d{}E{J~70{%A+Uc+m;@9_V3sk_>H~e<-&)?p>u^6f7K6(j||yo$W+&( zBgvJfIDGaHfoz<W2|MsAJPwaa7|ye2(MpfdVkUD2Fy-9x?_SxJ$(^mD2jOob(r3^f z)n4GGEt=L<pmkd&!bP9wL+!`2Z2L3kETw_(T9Kub`#3$e+Te8ub+Kz7s&lXUech+m ze$&dMeLpuM)lGdq1FYn9^o$PCVfyLWuej>$^uxQ#Rh&V%C#|9~d3IJHRln6MH0$6} z0GQF!3K-n-U;0?c4L%uS7|FQZc)L6U@jv~!|Hr@kuTAQ<JgdVPzW&Xxdj8Fh+keyE zTs?6NSx5I)839*$Tu4Iz%03!}ie6_?6;wWhk!%Qn@OEszB{~q@6_ny0wEPx7q@N@q zzpMNopHB#8x+ux8==Dl--IZn3nghdlxEoD>6)d@b@27uw_osjP7k8ick^7CZg#)~| z=W7g2NfJoXsq+^uXe|DWP^GAXCcgw2><gE5ctnorN3rD{n+m@0+r4z7W#K52i~%{L zp&T6P2zYTfx|g@IPdEjtf|g{<YdC-yS!Ek9wTdcpjV(j*G^4$Sj-hB4->ki54wfWv zT%POv*70Z1U!|Cvr6@ne)M-72A$XM@TaWB+c;1jq3FDPYhyTgdp#kg_yg6c=#hS<R zAG($gH7ZPD^h-lHp2piWZhS)TSXtOAR52SFDttT%5Z-;%+5exl`)adf$<F)Urn<WO zxPc)+5(Ei1ASjUh{vSnG(!FjdVdk7R)lUE48#}9e4j_?y9%j|vJ2T9R<zmGOn_+o% zf>ctx9SeI<Nypm)z@kYa(Zzt+lm4s$4$Yy_KQq6agpC#g5{{2ob>qkpJ?CB$mwEyC z!LLkvuIz%BdPYJzQPFV&jP@5~FRb6|a<_(cH$4Dyi$){;Q!R$iEz{^E6VH7?;g;o= z;+vlvJPpISmAKCYD4kH{90;czI3AgN8+Yz~uR1L2$$i2u+WcOh69fLi^V?_i4fo={ z#(#zQYk1Qi{0qpHO1>NF7wA9u1^-;<<_}=f*PFbCM+pzStBxL|zsh!1Zw<t^<z6(L zU)X_jeouJ|c?|nD{-Q*3`F&1&-@-0RC5T@`aOv<EKDTm;Vk7bBIIU{OX`ELJz>U_~ zZ(xGEbn+z#c&Zbu`0P~o_WTTo;^t(RPW`i#>DAREh&gE8V9HIWM!WDT3bfbI<27LC z|KwR@LD68eelrA>rOx;}gLc`o+7^RX+v}TQv_I2w%5@O)Kt8p<cBl7dmv&liOR08H zReA1e>{rikwgR2F%J$jIYDw~a`L^`BC_I>>B>n2&;YXHdyuQmBW25i@zcuTjy6R-x z$n!doIx`#%2jZzmM!l8$K03X2rj?#KDcRmWUn*PYmt#%V4>>PnXh4?@Bi@&l>D4{w zaHV*kO@H~U&Z^P$=&&V8XXMA0vAs6qRR@rbHA|oa{M}DK1_#~2YV_T}z+@Eg?{st( z5`JETVfnYK7QMoI?sa|k#k_DxllG!}Gvr3%<50LYGa4TD9CKLvik1MxJ3p9cpmj5X z(L_a*XCH5Uv1G2(qN79yp>eBw(&10PpX=3FDsB*Q@}q<FAzs=GYcRvRb-#Q4Lmeoc zNj5&)ZUBB*)G=#jD6}W*?MDlieDCvJKIIS0k*}R_NEr-jNcT$*{qtOH0ozP!I_OXs z?`szIwwd#Hb+`?V1Y&K>afHpvTh5z)R-O(*#BcI}Ea$k>BQ#c?<;;9Evms`A$Vf+M z9Vnf*%Ho>{*RD$UU=pJN7<l5>bdn58TanEm<;n)5EXzyB)T7n;(vgLZyFr*OjRqG& zWE8_}dD>(^L0h^Te(%CXo#Np093(emyDQeg1qOkdoRlSO0|O17MZwXfcvV(H$MKc3 zGhwO=56SD7oN~J3a3gg!1=v#3wPkpda`<c_fetOKx@|y1+4vM(e$-};=xk_i(64(s z_c#+M<?38~EZ?>qP5DBvayQ#VL8V(bcOC)w#V!`rh5w@Qm7jX-jflc@WF#7hI8xgA zbd~2ib+UBY>Q$l)#mRBt$k(6F&|`Wx;HZBM7#{yf5L_!G(5EdwI&kuxvV>pP24~6> z#>;b+D_*MU9GGZ}=IMDf>ag(%Z<Jxj`WI)`FKm0ZI>DeST>*z|@PK~sUAf~9M6#S+ zAXw{wpNf$lXM42|kdbc#6ZD^cg>!kP2c;>t52C{nzx!oV4j;r67YsP`-)B&F4_SZG zoIkkqTte1)bc>OtFMkGyYyosH%r=)LsH*qBvUS3@C4~xy;!AcAH%bp%I&<u44|_gg z>hD<MH?aKhcP1>Y;tT>EeOVj*ESpc~cHmVup-Qte3rui+s=j^pI-z%M|9JDM*Yq`` z8@yP!nO$2yAHvU)Z}92O;YkS~uq*2D@D{VZ=aomt*#-l{Qo?bxn>>s6=+h@KIC<*F zxRjmpd+f&QmNL?Vk}v%D19*F6EA-db-T(Q2{O=uw-*M6mWJ37R^uF0#0>J>nD*rwp z0}9D0RuP0sY}ZnQIVq*s(&Y#U?aI|K#Y_y1h`}z#p-t<T1oJdlH(rf-6_SuwnY;Dt zGb0#0_Xz9f7LIH1N+n_>MKCf-c{O}yC9P>Us`y>+{rkKB^bb$|-CzHQjX-}WZ9d0F z4ez4+OAU?XdS7akncPP~Dl1%7cwErwQ86q7fX8?;B)Y%-ULCD53Z#tk(Xuiu4H^<7 z;e*%T)o~WS%MZ!-EX?R)$-3|Wn{E}1FeVV`R2z~Crm2}=&v522JZXtj!>r9D^ulOz zH?q_01_iY2jZ^yeo#h3$j&9D?D<>|uL{0;;8J+kvT*BiK&y;lhfm+uLO88t2#4*Nr zLv8!jkgsxt_YBja_ZZalBiz#G_;Jcm!OwMIBA$FVV-u;<2XJqx@MwEbS0PV4hsSkr zKjn>yRm_c=k!QhpDx87S+0{7F?RCU&amy{NKcZ6B9C&)Y!VfNVn_R}HZm-TV-9g+2 zdTz2t!==NIcw&Gn)EA#jH3FNV9V1Wl;B|Y^rmoPd<pILykvS*Nx8L$zPR3+FeHt)X zUB1yX8kPy53+Ta1@C8G;?v;IAzzv045R%1T>8Q2qn=IiE<_Yubx_(y;3Oi}w4%XNB z(G6IE%D85050pRrmhYDI4<mX47s}$-!6EOS_bH<|@K?A*0v7g%Fu#SrWJ?Fik-0pF zAC;3{U%b2cBi{YW+C9TA)CG<U(1QS!1k*3&xem-z=CTyA(broX&C<9Yd+cTa9%<v~ z*`KQ(k+Bikk2(AI_YKU{X}|;f68AcuVAG=)&G-)IA#sqJ4IS)g2wyU+%eeHC4QDtB z&-q`+E?U_HHii>?Y(|O01$oB_t&)_6<3uuNMNegB!`6^mqFaORV&81FdHS)vmvsak z2>7wXk-ohBU1@rcVC{$cfXVizZhu*F(HZ={k?|dL1#y^Hgr(4M_>w2~B4^^hcNJPv zY>-h$MceZsS$O~KcV?A8*9j~mGw_h}_ddJfG+|4B*@%btb)>S9?=8oxoI9P$mIB*@ z7^@0HVTUFThn{P*w79REWqp}E%mQjFz6+06$);k7r)E7`;@^+o_bQ;;L<6}WdT09c z;J@s79c{d;{rjO)lu@`XFXg@0)`eq`Hd||eK!=6{dEZR#mzHrqH0!*9<>+`CjCC3+ zSciUlal6;CJOdLzaeyG#J-s65=%3vzh|Y47q{Cm!hXY*FoW|t287)c!Mot)gD%1G7 z4rw^tXVgpCEN`8k3cAzLjaIYi%KDfy_~6j7<xB28f7Hf-Tm0IA?%(Gh<-&|N+69H2 z`bF=;b79Q7_A$6*-a5edo%b;(FL{1&y6M_avl!Y!v<FR|(OX+nc!{D{{&bQKdI7P$ zX(hKm(X7TMBgVhvQVs(n8)T|nzT0Mi%Vu?f4z7<G;8U(TQ>J*PD)RsMJ@TK<>NpuM z(!Y3cj7^1iu%)s>rceB-eD#ye4eG4(O!xXDuXV8N<h!>Ie_3w4q7Md()N}0_o`Xvt z<X1O#xMzssuGt}N?3O6^Ymc)-y?*Y!pYIyPSjQ1NQ+6nybOA|!QkR_d@Sy|2i>o>C zh4+jNPCx$C;I=`2{qTvtFMg5zhM^qKOV|DOF%tx!rGc&Xg^#m#czQ^OkBxTPH6Ee@ zTs&Buo6?dzTL2NhxC$=br>OH=sCdr)Rp-UKpKnBGZgBC9j0IiS(J3&3+us$xG76UV zN^||nd(xpR8v7`Ve|hl4+GRX-rSzT^i(f31S#J6*oUTtVr5hY5H-IqtmaDX9_W5+w z)G_r_t=2(g-}ocWj#!=wS^Hc)Sv^uG@W^VN_(Ip;HOTa)L6EoU{@Wd*#uhjDR6UkA zkikDVZ`;Di30n9S6+Y60d!O+In!@+h%`GpQM;n=p)?)mIt5pp1zk43N$=m>iPHl+q zB8TZ3|B(VVC`-i*HmVOBkP$$aY`rMmX{Uo37^`Oth_;z;diX3m`LXxo+V6XpPk-Oa znwq7qV5^JauWmoI!bCdtNZW3^<}Yu1t<bxV4ami(aBPCNLB7wOOVJq<>ImLM%b6Lk zywZG~;l-Q70|x-oZ=LMT<SJhf9gin5XrHfr1M)0>ye3h)=7Xk_w(saJO@F|<$Z>T` z`V;gA-*^A*|M|a8$7z*2B|$)%!l3|!EL}3sh>U=*;g}_Em7&xOF9j3IaLsrZ_9^4e zh)(;5rHqFF0POKPsLC3F%Zp6-NT-xrIk$WmqMTpH<I3m|UH*-RGN!>{!2k7M{M#pg z+idQi{Odn&^tlRKC3En{eac_r3|}-Pob3}yuuVw<Ii>SHNcZq^vy;G(+oh^t_`&ty zFrz>>i=XKpZYpj-khJHc6m$Lrqdy*M+*R5&GNrrz@J2q7)#u4Y|M^xQPdP0?+X!Ve ze^z1C%JOVUa4Jy?Ukz&1J?HG9#^R~>?CJnF`|+jyy03E3I22wt#TkOX&Yo9QJjV|* z905l@Y_!TYHLEewz&<YTEuX_1C?bQ-F@UdGd?3)P!b0)7IDB|KV^+kBdC#ZJRn>SM z#FncaZ41!tI=Ukzm>Mz>-vGa*JDs}H(TkN9Zef`^497tTH>a1T5#<UVzV|zwi)hbS z;o0S9xE|%a<vL{y2l>;jlUO<Ff}n`V&pB{c#<@QU&o^Bf7U3k5KLu(a$ETGo?bkYU z;ibg!7p@p~!&lnt5;S^BxO@XYiJnxCc^-2N_bZ>!@#V^=(A%}LyZ<I=Wr>#Oz=#hB z{N}<6aaX)w*NsKHKVj<KRsPpfmb?V$BA0{Tk>4`+b%k}eayGiI0lYmA{;k|9((2bb zG{FRy{`g&|D18Hu2`p&vu3vD3`$ea4M*OlFhYt!mFs^66*LBfw;tmYyuj|;5Lr34m z930W|?R9~K_bgLCHJ{zfd*fGOvtK=f<X-2({zT5OocQoI=lV;_XJ6NO;J99myqObw z3}3c1`0R(8_LdL4^EaGA?b}xkodyk`ieOa24Bg|or*JN0_zd5|IMeFYlE>3^aO#xZ zrR<i8ad`56g4tl*t@FvjZvM7I_$sIK3%sJp71oo@&R#Ie-N3Kez-Ky=83&G=cd34k zR-N5El5mPc85;XbU)8aCT^X+}*{u;}UFsesXSSrd<s26W8|n0d%O0*HExyj6)idm5 zskV3Vg>>vt_BhQNZR)TCp0t(fzqa~A4S;3JKXm@YkG7$F?h{`O3J~+Pj8#W{D|Bl6 zUU8zDrL}Db<yPB}t-Y?`?iCP~8dmGz$G{B~d})B-KAD@vd(o`)_jTOwbQ(Fp!TC7H zHeE2V8qYa!4)h~KhaQ@lu?&u{5H<-lI#Lg9hSRq>XJp3W(b1_w{B_t%?A>xzw63Gq zuT^IoaIPKSKzd<i9lv$UNtO<AIxR(CJDx1@pH6=cr>Aw!=#gcIbIvQvEH57Ni8dSR z4HWo?SIrz6$iUYRIfSbh95_AUXr6;kcGZ`@M}zu^=TAEzOkGWh6Wk4l;FwJ`TgoOl z2$Fs9ygqzPs1~d|cy9R~jfgI?Gq_}Cb9?I1zs_RyEZoihzN?(e)<`djdTmA<E_0kg z>i)E?!L7^<RFj1a;rP__4xLL^94Li`vqac!JPnW8hvc?4OVv|1gRK)up7xS+{NawD z<iCN1%C@phMYcpz`weHEef5)0`k=p}7VdDYcj}R<NdLMKro`EWV6qrA{2{q`ZPYrv z@p`XH5r;?7XSIac=h>^45Rltw2xs+m4tTh3)m>0G5ImWe2RD<K2KMB~d$?Xc#o+;- zVkLjb#S)4+?Z@H&vCD^_bjI^!a-|N&+5o)2-OukCKoEmnp2;%Wt~xZot#CSVT^mH| z;VM(y21tVI5`KIt3|6P|HxSTu<ylPOBW&=m@|SGBhmImWrma+VF!4RV+bk`(>ah!- zk4(~UaRt*41DA<tHgla)#T1Y>t*)!zcz#}^r7krHQb+ff_MX1&R~@h=kI0TAWYCMw zc#fuU&@LbaEVAE(T+c2zqWnxY2|PSTAQ|qEE$M{QlUpA73K)D0D0X=Asn_nHLz>&Q zS?Q2EntSStda?Euetn#XtYh2g(r_IdgN@b8bsY6!(!GS0-|p41g-7G3Y}nnsVV-D- zKL+@07g*hmG4HB7zcdP9;PqX3-(@@8zqO>f-}l=V6K`(3plfs)uf{mM?3sLpv;8~U zA;YbG!-v4c?)0)a1Gd@&GH}1c>wqe+`hNz!tIzcbv}GIMB*5a>0x3@)N%1)Qm5(=e zc0jL_l`CwhmibcZX;-2C$p<{fYNN9Vihq8JDv3V{=(!9NWAP!cLKL*dBqN8h8mQri z4QsK>&p-@D_aZCwLi%#N_8jb$n7};4z|SdH(KqFarY$S$c_VG5*AP7KH3+}``@ehg zSAY9APrmD2iG-sg1CnJgmQ-`j%s_9Savi`Rjm{a3(s3#jdIUfm_=5)vKDghUE@75o z9P-MDX|8UEcaP}X!4BXS!SMKui`DShIJ!7@BN;F_M<c^!gc2XNKR6|)V36@HV|)Q0 z!#6TjBju1P`&yoV=^cW}z=@m>>A}-R{iUUJoFPlzoTjM~D0ty1>)nSM`YHe=V+3X> z(GxxaSXvmla0SfmtINUAbV!1J6+pcILps^HL#KP-j7)pJ4A7}S%TWS2(Lu7Fp$sPa zFTDgiQ49uMG~x^&pE*92a`Z!!roa{2kNEOIuL?y2RHn%$d}iz<4$hHO-^%Gp<%avJ z!U1;(EKs={p%NdEKy^udaQYUvqu<2<)OG3-%x<LzOQB*<-4LgYqd$z=bhd)%$u$r% zgS2|5T-W)9KYf}06uMHtr)w+gYg+hT*BbX=9NG>nI9&Kk3$_@)F2B<MOV^=}%%qb6 zZ%#@waSffKzI`Se`2RE5<vpA^WnSfiJ$_f<u|GGw9$}nvlsA}t$+HG{6&l=g4gnd7 zqa)I~Ji9-2@WAN17`YBX-|~!e<l4YW_3EPeTUxL5QsO%ua((5M^3av8GgST0PL<(X z{v6ztQADz0Pt*rBN9RrW^yCH`y2=zj$Gw6#f_tMI4xHPXvC`D`YKXhvOkH;y(T*9M zLH}#OWU5?yjCADC!|6uMsq+cDJou;mI5y$%7#`@-$>1C*)0ffyHGaXdl7(Zi-;`g+ zm0`Fy<5}l>%V9sgdD6)g!y$Kj4$6J|DxW@U*7yC-%>uG9F<Cim5g4@*cqO$8jIaLC z>~#-6e%GtnvXgjRg2)ZI?CJLUhL<J6J`QkvXr$6W?0xVID#D!}e98Iqx}W^^g_$3N zANq0)gII~7Fq@F!;_tBUWd40+|JW-e);81z*dJ-O%3z~q$gi7)h5j|eXdrVl36+b7 z4mFC@$}Um=cg@T;T(LdKZ@rZvM@jiFnk9Jpyjg;moxc3t52qs#&Dzgu!So{m<opGs z93SGH&g5pd$j%>}bJ*y|>Q4028LPi6=f=V5L^qskuVm?e`^eCb#@WZ{-@t0{9O|`> zP%xH1BJ9s~*yP7%by8qZ>tFV)bDLwg8Q8S5dE)G3dRPjBx@HjHv{#MpG+t6*d!hS$ z*C4TF$vVFu8wfcwp|^8Q8W6GknAkbIo88Yzg*RDmh9-gWH@ri#(0I}(JapuB2C4Jm z)v@8qqEFh<k4+kw6;>zUNlEYqjlvW>vyg*I_c-NdP}qbGq~t6Xv@mrF|08+%k0A*H zT}bcA1WdC%U{06IY+}HSkxOf6#*<w<fR$C+zBuwbO}t-WU~P7)dP!apHM;2iPR&(k zy5I6u<)k}1F}!>BXtP3vU7ZL6yk|fpJ%W#pZaA?sYpc=LGl}YoK9v4_eBo$sX*E36 zDY&`!H>EjVpSrk1v9hU0r?X|OTzH1&;O^vjc7e`^BRu8Xr_`aoFv40nr6idc(49as z9<cJCPNwJ`0;}#UDmmg+f3t_ByUOx=Y|Zg~&Mg13EseO66wuf1Jp_OG!k{wP5ziN_ z>;AOk=^0xPEmt1DvpwM>jy=GQk+H&7!t!ho6B+CoIhRzun7<aY>6q-~1uok0OxfBP zf8=?-@m~9q{voFl;BSS>eH|h8p1kM;xCV<HT4vzG??bB>XJ5;?)^5lIr2<!<kU5t3 zRh*To<W6wYlabYP|LlZ;I%*u}OJ0XEUN|_)(&_P}{3R`W$fkQ6+=+U~Z(nQrx^&Td z2AtweFwfXe=>xvO(dxf}!gCsb6HwV~Coc2ZpXvZ-XDPmu#rs)bhppS06P0_%2}TKC zqh$j_@v1cMdc~|)5?N)#pMKlyw?nA<kC&DyyYItZ)uzr*j{jsby2vQ<dfbH{6C?SQ zKXOJB8S%fjLaRi|!+v{GN;W>rH$4wv((lt>`4133hrZdgXgT@;M*q=;Up~LS?kqE7 zEGXIiWqc~qh{{oR1%q=sB?!W+F$??~V9l^J%77rmQLEP;JNk`1eYUqG0F-QXr&z?8 z;vRbPl=X79yB%=|Je3UKQ`t}DF8#$Ezsp@7`FftBQ~`{>oBjNgKmDU8fAf$3Tc<7m z_4W%{qVzlkHG=!GW468T_W6CwwMzU&16V!|41Diu>8_JV(V~%ntNlj12@zq^R`6k5 z@pF`hwJ`r^%@D?yi8lsYhwl2EA~Dt&IRka8U@IUVnf03@3{d&P`wjzaV5(C*K^Hf} z6@xdUU<3yEgr}j!BSn14AtBGtjnsU)7hbyPdP4@4b=ON0U-tg3m#<n5@ueko?`z~$ z!uWAlSt{Th%ktqjdKhYjF*Z|_Xd`Eo;*|%p23vQZ&6-|_fuJmv&HmGZ$qx-HGkmHj zr;{iaK}rqp;u(PLuMYNfwDQ3|s|w&%(ZwB|rZZ#}44;`@ux`99ttTc<MoDM@#K`hX zOSc%yMGu6^7(+R76~2+G;eX0SyU$Kvb{|Z20+oQPpr<1VmqYu0A^odM18|noEXCx# z2B)<6C5QM!CwMnH-6=~voLBY*|NNf3r~KWI$7R@sBSKFM2w$%o-s4rgP#;PM{p*v6 zcE7THNl~PDwnzFkZj1T)b#~PYp#T6t07*naRHc#bmTi&XeS3*JGW`ly9%wG_ZXtA@ zhrYUXf)+kBO1FG~-|}C!=;&2>g1Ofi_$>{Czr<y{Y|`qk;I41OXqGzil@Cdxe4H28 zAW@CmeMKBj7okc`$im74&*2P-E^v;b?Qzd+%~ih8i%%zoJSWUE@Rnv<Ql){KKx8Ov zwysx{Y4i<t0>l=0kNWExJzGOyv3;?!sN<!f+u9h*m)8K{c~vC_28mLr4?RcR$4(LP zDz`ZUvw`rd7UqHOH6idQ>0`&YI1au>Z;tO3AFOKL90zXc=j_I(%K!Yl!<}?Mg7+d~ zofvGds&~O=-sUJ}<@WH9?f=r?->1&6_|&qlr`2r(mM@~WSCGdaGf;;woHm1Hcj25F z+ADV~@ntKvR5M<1fLbUU_D5ehV(RM#1meXyov)e^^%uWNKK^KPzTDN;gfo7cbe^sx zb9r?zHoy=QNyqYP`)*(5{HWtw;#wN**~?)4=BM9uit=~yw2n)k)7gy=5MKw&jAOI2 zTg9X^+p^~zs(ZYRo(-b>;PA1+zW*t{-{(XoyI*pY(hGwKufJ#5n*qx?(#qMZ>ond^ z9qQ!ps=Y5ccqK|va^TXP$&VgKBRINx+A1`2jPRCO;V7RO7I7M}0|(#OL3>Qi{slNt zaU>jcXvoX6nT@GmMLk%VP{)0Hb3<91riX8^yP}#d%*kuE<Fh@@$?#RP<Z&|EkHd+7 zZ(EYATzijSye?O-_WMwJolfn5w#=SZPVC2zKhKFwLz)dgvy=}lx7|4yrSU%Hy^bhZ zUTqbWUf6S5ryE{dUK_u?rbpeH)0zIjVLFx6>Eo(a^*{%89k|NFYrOZ)XM^XKqYKt< z>Ij=521f^B?Nhux9bI8ZF6u0M;+er%TIB>NE^m^|zS;cpb>hvanP89(P3ksVLXMA; zD~=pzzZOc)eG=4Tn;BlAnVufrE6;mapPCA66T3+mKH~Hvc<WGA7tSCpd=m{Fq{Hci z{0obob<%~8UXFCMOt(fNGK)hWJqnQe6rNPLn%QGF`^*~|9n#CUz29X)oAk%l7ty`1 zwSCo(wF&76I{3)5x8>0>`P!a_L1D+olKt?^bHPh@a6hou2EkffyxSLe3in_Br7RL} z!M?)Iz(^S-?3%x$r7QnB8|liy<><of72Nxve1n$d<>v}<w}B|YDpxu4SCrYG|1-c! z7vQX&%;zioOd{QI+4Ddg8Q)-m*`m<&B^e~xz2Z}yNH-q(?4<C<B8*3b`aX$VQNyJY zR|gEZsxVdoZK-nTY9o%Gm%eB`&av$NMq7_?tmUc=31>9!3a4PfTtV{Dxp9R)2bVsD zb}<M`4l$C?zP<gL3xd&qNtd5Gd!hP!mp^{*B>eAwYU^bO|J}7^sAURqKfLPP8hm@# z3CeAm&^8)Spr?-Qd!>Dy;v&A}b!tEUQ(IT->^^PA`}6w-2i|>Z7ChTlzhQfEqrqwh z^6;))Z4i17^NyTG-Gas)h$HmqFP*9FJ8ccw7ak6D-SChaw+?U_bhM{?;Vu6TFl(h4 zK7g!P_M2Z15FOHXRC^1R<>=NPzWK^jP|89Gf))_8=YR%df?*UH?OE*`@F-mYDk0~j zRZP|OQwSv<%&?lF4DLn+HGBaBcNII73G^K7fsrXog2vGOQLq~U4DeME2RkSl{IYZ* z`Zz6&&b6uE3Asiip#H4oLU$?0U;g%QpZtg4{#_m3f0a{!zK>5{mEfLnschK2Ym`H! zxo`BF0n>08g<J<?Jc;2UVHR<`Ds3{WpP3=ACaeOZaX41^L2^l<dl{1{9OW$#eSpmX z=LF4AP=?~xI4D;d<x~;Q{xQ({^sh2{-=xcEHhwd<YcN}jb-?#q1-6U{9Ol|yr{^!e zdvaf`|B^$ogD`$ySs|q}djG19?nCd4Y;!u}{xS#ZRbHY|QS>`plaj#gV{+E`b3iQN zP{N#4N#Y+KF@&GOe}+8$n3B#=cOQ%`nORoy4!t4XO_lvLUg0b~om7Ex(D0G*paV;O z;|Zg3w7A%!7aY)Ipo{EU16}^j2={9Qn$AkRN(GlLm5&h}UE#m5(wzp-6PLPlMKSF7 zJ3WQEhkd}g(FNzFWjKNp-#BAB2p4{SuWJoMM9>R7#T@(qc@D55i<3jWuw?+RNB1KT z`FhxoH1zBIN+P%V!#U_~@;(s7DoJLS-%-1#i?&Ozzc#$L!b)`-Yqkd6U(3Y<IFK88 zDJ4~zOb;K#%YQ3susk0a@`*?1uhU#PhDBc&98M?Ls(}mWi%%NA1(%+)cEY9Tle`~k z)HxZi3clgS0e7ulm;OpCOnI&oc9Z>$24Tt>AK+QKL_2(UUmT<kgzmxe&?l8Yx7|y& zukxO9B$7NS?)DF5e({TKPb;<W8#MDC>i~qqASUT-v{|}d*<-e8vqyEtGBTasE@$*q zA?2q(mqUA2Pk>#xPkIF}_p{wb?ZA$BgM|+L(T4CQpgX(>xHveN%{va5Ao(;poSK%j zmCwn$+Axmd<W^RvCO2}q&f=#!x&~&y)Ly-7Dck27^o(WBNk6@h4^AK1@W_7Vox9n? zFWJ=R&1mWb-G8jJZUp`QeM`EGNQ0H*o%6AGShErB@ij|WFDcZ*F{k8ZoyBK$grv7e zlI@O5({p(Z;Q7TEdn{FiG_=`Qc{+qhE8Va2EzDXyuS4umCWjfRpPUb!RJPMQSHG__ zIR`l=dd-u;+t;tYt3%acgT?>w!w<n}Idyxp@KoD2`xY2&jTKd9e%W#RjP0$(XWc5D zu2(O=Z@<@%$?UFIBzdQDxZ!j8$Ny}ZSH5tLKh%+=f0j6dH`}CrOC~yR1;(!sjdyqB zBefDAPbzCGz>=BSfX&=bcf4vUyU%wB-@TqG-Lfi)J>Kj_$iQ_2*bXVGW2m$2)K8tq zhYs7^%7k!L&wbd;0_*Eq!Sw9O&mGW7-(Qx83}Py!jE1D!(mtKY6kr|4y+=4&IDij1 zn7{neKJR9}Uy(<Le!a<&)ZzP-BN|JVS39%MbRpiT2f@atE%BQ@iRbD}#%k?)_?QV! z7^`bKQaja@4s<DB^TdbZL>jQ3-%vwsFvh_2`#QMSKplEMHNYRZ>Ek-j@jx9vlM7_3 znxMThk8xg|-av9;n;A{ke1^IC@eW>=h&l`huU@oNdoxf93LtFh6FkqSJjvaFmUgX@ z7H<|-N;aF$PCv;wo`6#JT$pqLAK+IwdC@bva|Q!STcl1$E$rw-pL)jM+dxhH6K3yj zxmM;u)pwWj<WXj2@r~#t8>v1Ul!43am$3MXFU~NStt)5A7Cw6nQlKL_(Cl*`az?vi z#>;fBOU*lN%fUrkO81p}UGkrdCp~=4un+FC1-r0a%IfcW)?R;mojj!|-?7>7Ag2S5 zoLn!ni{~os=&THRqJe#8cQzoKOsOXuz}Fw&C3HoDffhD@4i;1vMaDc%&+cI$FWYe1 zOMQn+Cn{mf*Efk0o!S(1tckgFw|bVA-*AP7f^Ir=!x`=yFbM{lB*{vRCiL?G;Y8Qv z-mJ8{{b%<Z3`XO&$MpNN!ws|BuVzo9C!H&i*6h%k(u~Jg5PY5eKvziqMQx3Ki!F#B z;>FA0ea?981pN+BeA>Z(U-I2QJFnpL+cwW;(|RB7)9T#b8X|4=uHtJ4wN=`|J_*A> z*<PPlr}%l>HeNJ+`>cVsF9!E&+uqj!@}Bs2>SPpaYs~7>JMx0l+WPQPXRSUs{9*$l zCL;Jj#~z1!byVMO^)iIkX4Za}EBdh{*tJjIrOkHC#F1b8xcqT!;hRqX%EMP)T?hy5 z%><KblHaedt!`sPt`RQFo0L1HQgcIuY!sq_5WZ0|N~p2XTTB(K3!f7+1zV~q8sY(P zPzFOiAx6Odf^Qszv#^7zl$^q^)G6U*5aED<2akSM7Q?g3&Y{Tgs12*6g{vf%HyFj6 z@hI-@`&Uo?^xyr(lYjFU|9(dI%U)`qqZ7Ni3=SAjj!_JX@hk;m3MYsVAAOaLA2qwH zOdDB1<8V3*CcFu~gpAi5Mhrwj{Jjhbxa%zAM=+4g5EHC&Dd?$mDQSOM^U}owAGA&| zVkWJ9AAVO<z|L#|UWHeU?1wt_j_RKRrg)6dr_VV9@$T83#;uCVG0Ks8(E%-SH(Y9H z3u8FUN;oLxMaw^)KW)!ie>Kl3eK>^P!42;@HQ`sqIHSxJpDdC_Wv7Xa!j7H@)Nr2n zCRQoCU*n2ZDf@AHkK8eR4&rq3DF3CS8p<OAGFoO|;dClmcd?yrpa`xve0wIAjpW86 zcrV|LuZ$QxrExDcSy}<Wa6@Iq2`_)&GcaUBH^=8vC~y22k8Ti!l}`T4<_|)Erq|`C zi}*gAZuc5vSSdfii<@2!$SDi@2WIKgmBSP1mwef-Ft}Y8IG#_OQe20^lli(|;r}d7 zeix8Fr*jL6Pk2AZ<G*tLFuhc<WaVFRa}oxt$SzsLU3j18KMcR}D)-=V@HzRFdCKJ! zUhyZ7@S_vbo=bx%|Ec4{yMXNvN*B%`LwPW|%lAh8E92k^H?%K0IETL%{f~5r2Jfbm z!%NUDpDMfylWx~;;nuTce(_Hxcr9~)pbnnvs1w}Iv+@_!7u#$QWv@O<mkpi`Folw; z$DL@K1NpX@F0)Vfb#Ue&nqgu`DuCmC4$4rc*^cB@7+~Xb73VBf4c-mk+33n!)uZD> zP@OAR1gzebADh`nv&oa6-|Pkg4T@=my{ce{*J(Wtr{%lw(%8bM<l(Lfe-Y7UO?gB+ zfT#vuoijM)WZu`WzpqZ$X>GekQ@f>$mcs9yX^>6xj$NNGrFr+R({$hczCpk`cfru< z)Uo1>g<U*JPr_3t#u7}OOLhHa+e6mTCHvwz%|>B1+8=6Y;K=DrZ?99%4=v?zYd5_j zLL2^l+j4&V@yE(DgR0%q33m|Klj!)a4%heD<LpW@wk-F)<;L&d*U1S^=q=xiR`3jV z0eBudI}B@`Uu{M(ZF?aXufGV(wGY><EM;@}5<N82>>wE1T<$q$v26MlQ1i{U$H;GR zm2*SEIC^{$4r|_3aKeL+(Z8OX4l5-vyZ(h^7Tx6fiO!YA${Kr_@th35<aZbhT?e+( zl(XfoD=*%+{MuHk&tx3F_^IuANY)R{<f{|+9aOf#u~1+KY~?Xiscn0qU8_8{+JQGT z7VR6bEWJ~i4Ny4jO2@#*Y%drN{$$@iy^P*yjG`SHbG_-{W3wvc^{I}cwq}DJ@se%V za^Ri69@loN6YG3NkJSVQZ3*ANQ_Khkd1@0>qVPOG*Kv-l@sfW+Uyhs*TplG9rcP?F z=>XruWa<V*gLCZTssEBI{~;dr6aQ=D)0qu`1yZHoiZ10RSZ2oSPaK$K8ToltROMD) z#V3;hhPO8Sx!*o6Hpa4OxRzkNq$f|UJc+)oRAdACJNucXI{XS!bl_#wg$DT|9B;w% z8|umA&@_H1r93yI6)e0^wgK{d+v@ew&EAd0t812}vv2&2b?VDGe&M;e_&NI*&h$Cs z7|a_UH<?A<U{3}`BYAk@(d}Ly@xsGwI{6sKu9IClQqIXw`fo4!T%)1eK+T^2OKFZ@ zdhmpRdOJkQv^rZk8x&E`vPFbUSCzi>=@0n$uf8vDQPP0w!@d{Mf2%?YF|ceqhc@SB z_4`#Ll<Xn<Z%|DQis;d}?P&4W01Z7kXrP;1l2>K2t0kv`M+e{>o}*2%{lUZcc+u~c z=NG3|%&*_CL>E2qu47ln3vLFM-gX9r`khyt&B|UMh-FbY_#p*}u48)#E+&+6ACz@Z zhpNX;W4CQ!r?STrbzmz~-u+xh_vhNN+Mn#0l}g&OPxP{1XDGa=P1<|NgZH_aZf6rz z@t!<2aMwvw56$RW5L0MFwaQdh?Ms8Sn>-n|M`k!qs;6x~G9x{FT?-n%y#CkO*za3K zWRP{+cEU%$hpyr$eKElFG#k9V$7EU9bjELNnosQJcH!~q<dP8X5hDKe$G-jQx>Ik} zYHXgaVvaIA6MUJE4kyUc&KUwEBF>0v9VKemGedfmTc$)-!(kS{bo54P3mZzo-OO$P zuSzvtk3dSV1K`3i$oJpJ-@)sKT|eOUQ+hrB89<B)`@N_h{!_LbsGOM}{^*Z7i0Ut% z{Mo<x*U;F>W-1WcmkqG4b+Br{a3xVxkw)&)jQ?=z#;Ars#$yH(g5ThI85J0TbWOKQ z<wCnSBmZ*{$Am)*#(Q*WoUw#rEL^5?#_m;G4jxDj@L)hu<RB@E08fqO;d4q*>r^|i z4e;WOa&OO6jrw`XL}4|?_phjW@LtyN<S5u5u-8c#CAw=VR|s(!Ra=S$SB=F}2h#L6 z#bibLIOFSCiriwqY7g0`*oEI!fm8&q%;4Cpqg$!#Gz6bq=D3C@{EZyhtbUAr96juq z8dyd`zZ1nS4e@AR8aNg|WsXz$nz56IytbUFcx)YyE9+FEXw}l9NPelKgI;{*XoU;9 zS9|=Xk6dhldv~$O(v*-19#81$3Mv=5BQlCAk0#P_I2}B0q)a!iQB*X^KN^<ue8HQu z<r-i5^>_<fox+1tx6pU^c+#W%T%-TOp`aUAuIPThru`at!r=B5E^d)E91dQfUDpXZ z&r5TQIO$KGE8pm;h(|CNexm`sM?bFefpY&9)>SGQ93Fgyb@HPN9Q@e;(qP==J6H$a zHS<M3R=>ohc!3>OH~}`C!4!Jo0={~2%E6n9e!r!?3H8eA7n~&%eS7X_m$;SlSl+Gd z%7oAA!Z&eCTh3E1dJi1*x`)LnBp&t5Cef+WIpC0$t~&1E7qea71^OqQbMUT4)kh;X zo76oAL;lQ0?L@j=#b6iclg4Z|v*Na_>Q?ahQ@J|MbC%eIW8`W}tRS&8tOKMNlyJ_K zz0e&^Tf(bKRj=3iE%wyc_^$Mpc&*E6fQ{Rct%Ol19@`wz_B820VTf>@4hPn})3Isv z+bkab8R35MqGi3`|FCxxerZPd_dll-os9dCWAn1v#P2(?*kEwp>l*UY0HePaGq_<l zew|K0ysn+(AnB}ptn+98r@>mCNOsT6@=ir=#`aUr31=-URK8{%3-i9)ANuUQl{!fA z(y7R7>rX%aR44e4nrVFV<mcc0zU?V*2P?pvb-k;DYcHvHx3X|LDQEd0{WV|^Gs1<P zdK-`4y^T)>4w|X(iXM)Ox+9&#h#uIvxa-?%Xq@J0uk_vP+84A_xJ(4`>TpfZ43?B* zr$xV@gYl|H2H$j?v~Qc?4Q5!atbE{Pm!DDDbkj*vu{YV(`Hg=c>U>U)(Y7r*+S2%D z1;C3249Nd|%lzKP7w46D`-0(ZoptpQnr3K?g^<%KhSJj^xO}e6Pj%Ap<Cow6K0b7+ zcJC+FHX5LL-*W9w@5wwpi$~;sS0P*%vnmccd(e^PR#un+3C_HCQlA=`jN|8Kkiy$w zFSkg0FrNyKdJgQ`<Up<iZuVIFZt%AM?$xXKTf5iou5DvdPm>v)UYXvzTne@=3YKnd zQ*^FQ#@xwxJUDRW1%KOzIMw09O)kj>0-iUhqP~!$*>)Y-n*7S3Go^GGQM}jr|JeQf zk_L#>VcRGyMKw6%9?hG{2_JOFj>;pao}*J|@<TJ}Y>$J`)+R2^>GW*BEq#MxdC>TD z$9z{ClegE7?Ga*?$EPvauUvNiWKmbcS?$9&_|=w=?$WC&EYqg|jg6%}el4F;vC75Y zzLoQchq97y&ua?$9ZtdGi*N6(OqIDA<bcV#4p(3fE~kAVx}Zqh$8X<m$*RxzwQ?8r z_;qmec%@PQ&`BSa7t}smc^8}mT46pIy&|N%2`9NF$1Phf{Z<nO3ti7zIb`|yIyD1? zcas2fK#af4!IR9TE0iC2Ul}h;?-f?w{;@ru=~GOLAL?{|7M!w&6)?SeSN(f$`EqsD z$`gZAI#tt~und#XR?gAy#COUbt)z75#k%z|_B`<29o*95*&a59JZ)`wSv~l!6{P2M zZhA}i18&eRTq|&C(d!`ItJ7uHb7uw}VVyFwvpa||8@9vWqWx*MNXzA2xDF2d=ykB~ zvtfO7dcRcvR|k*-Cmru>%kx&~=o9ftKm4wN*`MWMC+*dJU;AL$aszqcwB^#-R`m}3 z^hP~!`n5x_=Km~)_z$1RLOrL$cxgb_YM1Xi_u|zKXN+6*P1Ip}6;xROuTJ&slT4Kr z+JnoQmw4$<+Zn&vwaRd*e`Kp%L90`X`TBLoK<%oq-S&G%ogiLGBjhMw^oA6r$XIFg zT7D$W9GBwCvG~4IBuZ7`giz(3!3i42hQp!^<ppj;X#jLQ5O`I@M~727+_({r82O&o z0Bb-%T3BD_KE+aDC|6-d9yL;b^*4Y0<UjqxKRo$O@6Pp7WE|c|+6@==6d<rvu<6?E z8Lo%1;=>VNLPGc&l$Bf<7-M)b<y|8(2jIXh@R2^k0%sLq;DUDwQX0q;o)Jx*L3J8@ z4LTm}UWO_MTvaL+7;33DiI4tMrZMy)N`RM^%PNc<8uH0W4MwlCm;xo+HOMKmPVUyp zS9!gP;blu3UexfLfuO{ecB!~Hf!CZOsQKFOWG$YtWQcNl;*Y%yPLVqXuzcYaX3-Yr z#We;T@4}Jc_Zxv!z#%QeEki=-163{&<?YAv-!r-_UyVQhl#cF1-5gr!8CrZ%($=?> zE^V5jBxm<C#zlvEmzn2N&L>WlvOpNzzIq=1IgXJKo59DGrMji9TsntO@RG?z{}@3A zaQDF_7f}(xxa@vVgq?7321`KKKrT(?EX@fMe(Kbc{ZD=!*g-1abq~b#eDGYzL11Nx z-=NF*jOHtk-wU7Q5kGF|58@5P(j5A}mU+cV|MmXFgX0o@*$?<0{a94`DgG<I7o63l z<vsii^JQ2)@0KjDT#M<8+%^8k$x+hz$fz8&Ykb#nPL`g(Eyw-!43C};N8t#@xA0ch zp$+_RuW!f+-ieVPyxG|E@R;S$jLs8u@qf=Zx{6(0LCCW@DTsZv#nGXI`^zt9zu~7J zzMpO1>|(&5Hsp*hjn*8)U~xddWMkO(jl_=L!YXtQ27Dz-SF{%h(OEOdv=QlO*{n!% z(1^XrJ`8<4)>zKyEn6K`wJ@iLO%#^`Xmj)g*6@>AGiB6eGKjpD2bW+^M@r*l*>ytR zyy;A;4y^k9@3M90wM5Tr_Z-xx?Q@`!C3*L+YtVn}Y=>73=RGugRgw1{(v+dyEEPK! zb?Zo5Wn}rN0RT4j92yoajcBi~!-Wj`H8W`$@sH@q7JrUUa5sD8<mczl?Y9kI?O<uq z!aiCCHquIeW|g!5>7jO8hwGt^lod@0Mx#7<=+d^2r_%+txaD(|%XxginMICbr`qQ1 zSVFhuo3#UMF(=cYHU!NK+Y8DeWAEY4PoUi;>(Y6^d%C3_ab)ZnU1Y&%(w@baoHk<{ zlcy|&k#Pw|Yt7y|^*RY=e7)g8=kjB-)ec*E74OzLG7xNrw=(?g?F!XVorcfJWJ_I3 zOHa4N5<kQ3L$bn?Ia1-oKJ2UtCnv{b<=CtH<x?H3+BD^V=nxz$9_a7$_~RffuO`w# zxNnBT`|5S7-zUR$<j}-M2#bb?H_ax88~)~6ZqS1+(~miuI{l?*&*tNxha(@J)1laN z%_<upb_kOt&+9zWMIFkXNyN%8;o3X4E)X&Kvd!=cDRL>Dj-<{4oK?a_g~Q(Co7S>o z>Jc5=veL@(YAgN)xh;GKvO@ax7Kr03qK&g!nBpsMw2@s{1}?~_eXfvHwoYTrHxn=B zEU(vTMnC;1&6a5<bMQ(d)cuTKI6G;4lQ8%iAxLBox8!#<@Pv6Cmw^@+Y_tn>oxBV@ ztfNs_|LInAF0L|VQBFKK1s|F=DU@tSU%cWQgB6Mko3GscI<P|?Vtw$r&)S>`>0m?# zabWyYb|9Bdtn~dKoCK^aGV<_;m$Vn(-Mda_<m5lFz+)##Blw|>Op*`u${XGVqG_|T zrI!cnq!TG7I6}bSr?}w~yyDd{fad$n3)5lBZdFDm<;klQ;Z+r$|H#H(cqp4P`q6}d z!^XXDhVr2{L7n=LO*a7hsL!P}$N?`DVANx0w#V(!9i0ca`GZR6|MX`HPlxg4^lRJ$ zbL`Sy>6YCyB;v$p_2P^6z_ymSH+bl;e3)<hVb8hN`(%x?Cw&YQvGv)~XO=)aEU{;Y zP$l%-*XlL9#!}G9ez(V%fT~Y?`WLOzyl-GnIK}*weR@;d_O9j52HFga{hWRJr(YhP z{H|?1?;rB*t7BI9jz8h(5AoC0Zb!Qiy4l5EGt}&i_Rh*Bom^);+%*tuqKwkaZl%9e zep#zH<3M0`C!+iYh{JyHPaV0HLngNm(QVRnGK8DwlWs`ezBa@J;Q_h@UWqO3km-C- z(tibP4~&9Nz(H<^#rHb6m~VN`wXqoblG;<X<!~$KAnO)<N^spP<GOYa2aWNKxGU~5 z2pD~JHo=m8jdczFYD2hv_tQ^L{>y*)FHipQKmX@CSQ^lCWWU6W7aWb6;{H{peP<k1 z@Pr+_dXUUdpKo!Rz$<^m-gxtEKDe<8VSAA<9;WKyb5kgAM?(Vc_xdcu5IJR@Vh-Q% zVNvnHGO@wxceBjP$oV0yDofu6ARO2sU5V7_HO4AKi@A#TZpA87cyb)PAJaQ`y({yR zQTYy~GAh4WjT)lb^De3y@~8{0#zI*TJA6CJ%LsV3q;ZwEN{NRNy4*8riGzcXwW`t_ zd8|T&>ctPy$_wi4dmwtoU<uE!!v&6XkB-1}yeij{K`~n3w9co%B|124R>Pn`*Vxr> zDsf=ADQYqf9;5!aj6)%X9UKpBa{yAwIaq^JY{fAqR03^7wz%Dc5S+<r>2GBL-8G!c z^KIG+tno>g12q&*(%sL%E9igfI&_>Yw}Kz@|N8lsDx$nf<ym~YI#MU*YuRuU=XZGC z@V%bD(u5c1b2AZ-&tGAGg(J*0n73a+bYOBS0&JgC)^QvvVPP6b5Qw%MCtY{K1nmQ7 zVZl)Mj&?kXu9$Nzel#ZM3cGNd!~BRxumU!;D`fkRGAtYDNG~>vs<e0t#<$ni5np~P zgw6<stNTOaALjWs|4DN~+%w_VHP|7=0rvXNL-46HbF?|!HC8*&rXqAy+4~I;R`VZc z?P4U3((|M1@v9r14S09gZ<V6Lx8kLGtK)X^7hIajEfhGyyd%!PdgY{Bogj`ad!eDV zWXpk5U)ZF|WLq=?Y^?IV8f}MDp)DNDFi2yjln^w~ov_ux9L+E}c2av*J7C|RSyRsY zi}pr2nb|uT-#FDXduqAl3#S)b`unL4UfV?Oa^fxZzHbYR5#>*vZSXM%<z2Ik?>^R% z>Cf^u9n+0wSN@#C=ujTXc@4|!W(Hn1JB-K9k9ZSq?5Nq_*S#9(zD~qjhmV8@hb0d` z9CIbZb*r)hWdG`uws9F8HWU5j%h}IrE6U6E+?rY0Y_ZNAo`&zU_H?oR_-~SXZN?hC zc+oZ>9eJyNwu&p6>n!SMtkYc{u&GpMjMaYYn4B3+%4yd2IQQvCI<mGZITG4d_EgSf zQHR$#8)V~T>KApcKP8uSnn;x%_2=vaow+Y{GEWCEnOB!zsmSI36yMC0JTJ_?<PTPw z6)p{*<d5?Ymd;GMcS>fz9Nv}t*<R*mNTTb*(`I?e$Y1omNUkwy?dgl^>SU2KNiW~# zM55EmpSQu=X{-heD(}JINjg>cEgpG^)RXi`=e!Ow{iRc#g33{*A8VJQZ5{q_KJ`rb z>ei_rWWN)o!v}tMCLyZ3+F_2YCFCyWh~R_4bA!~j4Vj50o8!RhOzMo3=4Mm6U7TMX zAE(z=>TCmp!$z0{VQ<t?d&c>c23X9((*bqN`=n=L;-NaT<&fn+gTm<#I{<$&>O=1~ z5HwuUnd+*z&B#SLx_01M^i+$7^Eu@?*wwweRt5NDe{8Q}U)Y<JrZOwTb9$x|6cN}n z`Qj-(WZ&>_{!}=l)v30-de*7H!yV$KzJxp7lQi}cOi<F#!U;-QaN#H7nM-G<SnTxF zAA5Kn|G<6^2B7B>cdj6Ym%P_?wG-E`@B<4<3i6TOX9f5B&#$YDU;mDOmA`HXJc7w} z#!qqv5lWVtqkA1ja_ysvTY}71&+ZE^@9~{(IK&fpopS~%r?gzK`+9({*tU4*a6A&* z08|5S2Km62RXc0IvvHr<1S<x-H<t}dtHLur548f|>!;5KrGrT(STkR>^y3|RD|55P z1l+$&+UbI;Q-}7oL!~`_#HY?PNUxt**^{1C7p8urt?YqVd)du8*vjm41~=3FY_c~4 zn84cMRO)DTb)DThy#o*;mgUBlELAk8e_%`p(_iJT4X<r_wpW_Pn`VFC{M@US-u|*S zL;d@ZtnA7CrMmr#0Rl6{!Tr<<P6PIYboxTD?o-fp;SbrOVfUW<m?V4IlI54p<lfh} z&>rE7&ruLMfX3ieKAg9Dpc~a=?fHt14m!g=++be_^w=ftV1wSH;}>@4cN1O{WC<&B zg{hFjCaePq{1|pdZjBb3o}aR=lAY0-Rq`6JhDNK*mOgzoSQKCl7eoT)4?<@tPQVS> zbSc-RQ?SmjXSm%6kVnw<30iP4>`;msJB%bwjZrbtDC?j7n?HZ@+yC?rPySs?m*3A} zGUDC{NBGLGT(gSuSArr}#=t^>Fm}Q3;2x2yG;&BRtypOZ#x=YK<UE&S;os6JXr1-t zUi9#}Xj<g}qt8_t4-U~-xg0ie*V3)?g7@TC#Zr!vkD{0%urw}Z&-<_x#)#H)o3Cqd zzj)nH7Atdf=y;cWG7w(H@#4jY8c)s1X&hf>bUuAFJCIJ;uS-jlSyg6yR4zOB+^{u> z@na2Wj~tt60KCbkMrM_$P;3TeGdulW%6=UFAXNdRy%9A-f%eHScz)-=s!UzEmf>@7 zSXlv(J%;$&r>cDNdt5~%OLalx$xA!Qr)%Y*iws*aimr^4!2JUH3E(46cu($NPFE{K zQao5vckvJI*G2co!y6sDFH+g~dW!14_^;UxzfL)57&$kTPKhVy*K)4%{#X98AEy&` z$>m>$e&HRdqhb8JCH)$A@b>I8*~c$z@qDD5`6!wECtm<B-rh(Rho_fKlkO_dFZETI zuIt<$J(x}nK7OAx7vDYk6n&G)!QsLaJo%4IPB|<4Ru=p@3CpjHrDcf);$!)T+<`Nj zSRUms?uLN;ZhZmG{D}YcCG5~}V4vrcYM^Ai%KjD?7>b%+vLn^|I%u50V;j}ks4-~P zpqk~0I&gC+hfiNBZ$MTbf{m7q=(E3o7iLQYhnGW(FFrT&k8G=tcWsYY+mapEX_3}4 z+A}*)8D-EJm~G6qtRoqC9feBF?zi-}a#ZbxpyNmOr*Z;Rr^5j&(bCElbgd)Wvfnno zL^DTRY>icI;M10Q-n}ZL@a$Y}cX(tU&>o~OZ*T2ix#w)uY0>6v#fnZ8;ooTXPQ=f3 z!aZ-0R%E`6_v^;$@<m@ApSzZxy{MCIDe!p*Y@93ZRbdX>0@Oaor!6_tiMr2r+ds(G z+n4*a&e@g`#}|8pU*&+X+3TG0E|M9(=|tW2>L4?9UeU3o=w=W?>#nlCZ!hqRI>_oe zXP=$KF9&OFrmb{lauZ4*>-;5avw4?YBeVA{+vQWh>p1>s&km+X?Dq3`_2OBBt~!AY z93=SlAOcAU@r&KAjPTv5%0=&>lpHfoGAGj(riUE})5e^HjINKtS_c=e!d=_<+N(OE z;g{b>tFU0M-s0QrMjc&C0;eWN=O3C)G#hG0{&_M`C$Cp}=;?5b>D-5Ad|&_cLx+U* zs=jFc-P@m=O*wCP_`ZX|bV$w0Y&o?0*ZsA8akJCmfbr@odeOF%jVZ=1Em$cU6fone zjR-*L`>n%HX*bK(bFr&W>&Ql<&e}up$J2PPZP{MloaD7RV=t<MgXg7Dr*#0$UcN9O zBQscf7L{<>tI0Z^Kg7=${D{&b!ZK1bq%cc~gBe^XrwckEJx&G&UW92g4X)YC?cgZ& z1I5!7I1g_j2RC&eXFhd!99YLsPoAg`*H8)F>`XMQEyWjht+b7VY=PHiY<n~yP)Ldu z#PB$)5(<+y#OIjfOK_Di-?@C^;S)2*dy^>e92TV|n`19kkz3jEundbkofR^#?At{i zlgZMZ!1)u3=_9G%=`EUq>w@D2=fr(YbD*5>E1zE<*JFJJzi0Tfm4l22w}Q{C^?9ac zX533U9EPLJcvRTTE*`}5L5x@(C6Q2e!n`&@Is7aG_d0zBWpr>i;1vdV6mj7YFI%=* zKW#WVJHTwN@e6|@4o(%f*-lLA(|Awi@!a8|JT%?PT`1svBu8@zmZrRPO8peAj<1s| z={{;0-Ah-qTd!XJ@Z_h?P7wI{%`f3`2G%SGmd^kvUrFbE?Pl=!GEUFO`<0J1!Tg{@ zTRTyu%Vq^L9?SD87_LvPDEZQv0JZ^Gtzj_D)*CAuY}0V|j!rz^+DY;mtJxg6$<N@P z)jD`)aDdx9SrxZcLWRRk{lQCZN?d{B(XVdknU8G)e1r|;)gEpIFy2K!8)l2pdgsx& z?G@o=W_G$lwv~x5WE;^3W{jtQ>f?O1U=^`A^yAm1ub#iX&YNin2$C^5UXH1dy_DUl zhAvBR5WETm5$Tr>spU&i=X8t#F(J6qWvT(;{t-$MF8H3un2hFNq|{4rgNLAv7C`WJ zE$^XmFjvsQItG-k&xM=O#ozq&<CDMnyT5(%7k~Meqv6S$mK0TSLVp+M1o+fB$p#p# z%GLj?@L;JGC(Q(v0QwiQqR$cpPlX|PaRj&9m9sq@2^j82*vHW;%ajj{H4s5zjOCSE zde`t{(D9?^b^KS*N-Y5efcp{n-ltXCIfC#3u%zR4vIB4xiSK6LKuyETr#TfpYfyHQ zrcvzYUae3?$;sK^Mlc-wWk1)8-nVFZ6h2P8eN`31s<JY!M);oh-VV=3h3skZ?nozQ zeh42gZ*Q|jm9WZ4Nuyzh@xYs&1Q(t1`@V1<FFcnHS@^WS9?DV}`4rNFMsKqWInU>? zEBNAlk@(Pc$>SWt<N5G?dKMg&ZRJ;%d{1v3XL|t~un#S1KstCVUq~`}C+EQnKQ1{) zy-OHpWV&&jOoSV>&=9U6xzhG~<TomdyBfk3zPQ!DaCZ5@tFPA|JbVrQUwo%rd|Jca z{SBRikFr8z81C!F)50G49WxJ%uVLu$nT@&SyZszkHyUP}NGsl4^lLC(;9q4NSVB)( zk{r30ZfU=kE!CA*^_I?cl~0TQzw$_T!F4a4eBb63{s>@kVnIa%-HDg|PG<{s!RO-d z0>05v=|}v4F81;3@B|-D5IFV~sw<H4!**`qB@}i_<Zz(N$LQu_cDJWxaPM!Oj(*jP z#{vSXO!a$uUA%wyZcw^Ab<!YX;SQW}fq9l;9v)cYTE$p7$ML=K2dwfK;CoqzbNkus z+suYs2aj~KXAbPM3_Ckr^F0TNvny>6HS%>hascX~<RE9S*uCl^n*l4cnmgD==eRw; z-!-G^WXp$a=G*p1nPoD=im#gu%I;~v%}^U4ev$2b_N)QL+EUA1&n)%XNBbqmUKw9n zZfE9A$K{1Rr`cqkM{Tc;>koBS-@d8C^iTgZhe5~nRkNoK`*7&vyYQd=j7Cex)&a>5 zzG_A~%iW<#IXT(ByE=FdmU^or8C_at4uMmwIV#VZG2YT;^)cQ&ZzgzL3(m9d%>=G0 z1e<-gFPU@WWNDqD58?4V9_@tM!Z}Fze<bgl*m|bB@S*ahd8k9_^y)8ljI_-hb<1z3 z|Jg+Q)C?<_$v2bPy1mh&9m97W)4irAT`5yKTpEM#rFUqifl#M=8XWm093Pqu|C!87 z_ojWeAKRMqD#!34zI<-ElGiPPJKG(Cv-i>b(Trl@ukDMD2CpKT0~Z-v`rNPgDgW^D zH)}5~eYfmiUDkf86WV9{?C@*k_sf}d;<Prw9$y{r)NlDPT$_j&#}|vI;c}J=A9<*| z+Kvq}sj~2iUU%x~>Xg#rh3EIl9zRth^^Y;|r!#u&?eUf1ZOJmdreAn+>P^o<H=8sb zrwcB#Y-G32AUrAu?q>$Hw864xScjE-$(|k@ybbUa)@3lnY_3^4on$l0!&CbmJpQ5D z`MGvkTfITJD$VdLKir(BLYLObEr1q6lMOX!P_LtVW{D0Ry2rz4-m>??4^<}*9>NpM zeM+YsiQtm;iFclH-|zWiPZ!+xXb@Gx6N(P}zdZ%}T!7NM!z;08kL*gEtZoUX7b|yg zZ}D&h^M-@8t9Q3>aDN>pt>7yieRJ=kr-1Fb-#8{<c#!X|!cA-$9Gv|$^bjxDF@20d z;Wwd$Z9Sk*JCV-NzoJy%4Nf_LN+;JggqPK816u1~md>i2hlD9@>`hn5#!P)H2il)& z6^zas-Cbw*hN~j^Q1XoezWxw7vN?5rn3NKp7oFuSo%rF<FaF?*wo90L!4{i|{r<-e z;%haefw4E)6a5Jm%wXF|U;U~sf__%R1UtOukB&FhQ3uJE{$<EMZ6(c@?7fD8-SLV) z2T*-%rO3mZ-#z*Gw$&sJAi>F72W)$^(ug_4eC6`PtKbZBc&FRJ(YgK5^G@*}HHt`n z$x)Mj>PE6sr$aU>A>5~j;sd*Td8{b1VpG52bUsT`0{q?~dEupxfR7s-@;k-A#dsdf z>6dcG+rq3649`<e{3&JGmbTlKqpaB^0pDEf=*l=dDC;e^LS)k5z3eliB^pr`JmMgO zNy~H$pGq%@aKG;M>7H>w#!m7&kq4e+UF&%DtLzc!9_)zw)+nH^ppCW-ADK%xqWjVi z$!|mlK7aCOfA-`*|JVQe<WK+fk7Giki#0NgFXL%+sN{op5I0I8;83M_s4D0B9Z4%P zWi4>{-f&n0SKj0~!3wtgRo*CE`4`TIM*KO-LNSk#J?R6p>j*ESK=})~1rM=DSSoS+ z1@pYF!VE{Lg>weFX1Fz8Dd=e=!@VdcSgPPg`;BUE)JTT1bI>f2v(BCqXO!yxqf<v4 zr4JS(c4qIZa4McmQ}`;#oI3H0ejQumLsc%PtI?rTwX1Z+eX24#f*d>`EKwVw)9Ns$ zqZ{?gQAuXvjO;3}<UNM}SlLtX#?ys*^n7$;l|ZdEutG@XJ`I04z%9F9e1+fRsBysO zkfnIyIihoTBld)ok7AS`n9AH}l(66o1yMc{hJ!|3UQ)f}*v$=J`AXKa237oY4V{&* zk!Eeswj%l>S=Y+yw=9qMOLwAgVLd2oIsWCZ|G&6@ImZdT%2f}U3UC&7-S>QnK#t>V zFt(-aBkgqwJG?o+=lR4=-rY)m(Tof7f6XJU6gOU#aO^MW)VI?pL2~roe)0N}$>H6x zhr+fu_m&Q1G+x(*pWo|J4(Q(mt*o?dxC%!LX}CA&wF7B-ke7t7BIxhI;VZlY_wY@l z0oVyU7!2kO9V&jsUE$!76}~A;0=k3-bu%p`q&f)_a30?G+JrZ~TINlo)t0WBb+Ody zRyQk_!_TS2M|(Us072h1n(Tydzq1)3g-53)UfmfQmHBnnj>B{6%Q~AnW;rmHlCfn@ z^mlTr<#M_EHRf<lw%I-o`s5N`S)kIG@hM&T>LKN!w`8=k4DP*Y@A32EU)897$vJt} zsq~wj4gNZV>Rba;l@M+Ru9*RYfcGiZ9Hkm;wu$YqTuU3OU08V$_T0={ynI<_s${YD z)Z8Nn`WWMaVGphqYWLoo*v(yog6BlxI++grOPC*9Rx2&1f>UJ-jzi=So!PVKw8ezI z(BU<UYbkV$AOD}#p?dl3`#Rmftizxqx(-gA$DP_4Os_`52W{z2agH9#bIta?=sk|F zn_+M`7JI7Wz7uSN!*0=Woi<xY>^mhNvkaEw&Cb%t@SnpLJ<=!8I+5)YYaoCw|NKk1 z#i;uiKdoc_xpv5QkMS5kqY>{?B4qUxKjWcOjXxQQOb524ot#TXXI}LBs5n$TYdN?* z=Y0sno@<VvwsM`;=ul@|E240Y9KHOQb1ASz;KLvNdks;%MmvZ1_4cN97+LV?mbwF1 zgARNT2a0{PM803?wXZsT9L4ReO~=(e)U7U5uB+0qW*7aL4yEsbnZDCKYP3!yT9S)$ zWhbKz`l183;?Eq}@WIooUC~hlPx<J){3_N+%Sk5c!kvLy&noTh8a{R4&CrsGI`}TR zspja^{z_w|fcmU1ZDzX!{G7=z2Tq(zTWXKErOL`i+?ikqc>nM;i#BIG-BM^^W>?r8 zFwu4#<#>Z<;J~H-(G&jXfVZB4$MW%w=F<hkpb9&}U!ec1r{SejJGfwV4;P;}<|#ac z9b2)POSnr=Jo`x3Sa~@6H9KsDT%aG*6>)&VD)jin$D6K1GV40^-Sa8$*ptKOQ(pNh z&&MU~*Y{t;PTU3K+jMxf*FKgXzsE!O>Ce&y9vuc83@9mX_8*Bix<fJEu;={2^hi5^ zC2;D#iS_ud4)F^e?v#D4o$)b{g}0f267hL&G}qu5{L<+yXY$Up@0s4{V9|ZD?-Np$ z6oA84ueZbVQ>OwrpIs@!l0|={bZCL-?Oy!om39_rI1h69*zn){(2AgJ_s`h?6Fknx z+4Akcn7u}$wsQjlKqF|SDTba_dO8Q+m$g^VTT!!ivt+hZXum!O`*RTMt-t=Yt6 z{NIw{TfKT(ow7goY5DMYdzQoDqZ#q>4?V}1H(9o&`r)@pzXp%BliCP84CLD0@gf~e zEJt?XN%meBcLvywd^VtzTwD%m#4+_PU_v6hwz9I1zl06djmlX^yRzo(_iK=Yp880C z-P3!Q=U-oj`G#Ow2J}jVSPk?}HcPp@sF-pDCdM-Wp@}lJF(e^$HU&dR2pdB^#39V@ zZX&hN1Tkngq)vIk>$)l`4Vrqb+(k_hWf^2R`18x4uDoy?<kLy93Hr}luKe5o`1enK z^G82rR30XT?e|C_tbu2Q*D+D{j7;Uy_~;`{#SgxU`7JIhw@mPn{GjM@c;V5x@a7mF z&litxq%XfhBqzAgDh&a~X*>?vmeAfH55^77Bdne&;Fx{1a`<aJ?1fpn;BORil{kr0 z<V%(ePRjSWQ;`#PJZh%mS?|~~o7;%?cdx1-8&Pcy|A#ldVo0adzNdrp=%b3BYiKl7 zM=k{n|3m)_5fdG%pV9%9t7;d)Ri-j;iF-7M+HeM^|MBJ05qh^qHvVW}G(<+iO0_&w zeu6_?x~oDz8sRbh=%je~-qdn<25ES2AmFGgsB;vlgz6?AVOK4~xr*N>RLV&|jCLK` z>F)R&|M5wsrdQ}N_%UTJ9HwXg!Qs((H=4pF$MDj*>8XPIuaFatIsMO>FVCYs4A-Li zMdJm-{h_=3BKs^z#GWO-<pWo0LE!cKKXL(ur|YDZ5xPSnMBxFJ`YWD;gM@1~9W5(n zX>Ks!b-UzeYm|}tJkqDmxW1Ns%34W-e|UpGpaChZ>)>?wAnq1i8uj+1r&FhF9Qk@l zOShzhmuqw{@41(+$MS=>B;(2L_7o^SM$?${e`o|(e%HZgcaLx`8jc;7R{qkjEG5uM zzsf&!gL4WMdhVCa<F3L6;>hMo&A~Eb^S*}im);A?X*U~WcLLl0!cx~8FWCM$mO8J+ zsVCYK+HmTkRzT_T#y5vKy8(~!OQ=c}uCs%y=N#5>%45-(D~rP}{Zox}j;K-l(3$<2 zt>XyXD)`O>sL^ISI29V>)#ne{z4C6ANtt(grbfEg%G~MbayE*$vgKumP1SSjl<D3v zSjTaP{KSKM`&py^N&5ng<kRQ7?;1FagxM!>%W9z246I*#*x^rbBonlSEBo2eA+u@u zKXr&(VqE9+*<E{U<0pDwS$15wcfooeE*`J_t-LK8*TK%7+ka?=kaPa~4%KS<xzj*@ zSckQ$*C6KWCqK47_5Kam4lQahv;A96xqkV|p@BJ=$_cKD>QzddNGRKT=bgRy`1w<N zmVfTmN;zEXEaj|5-Qv`ThdMp<hAqggizilzC99D5lC!#{%j6UfEEh+QcicN*N#~Pu z6PR@*y(&sOr320!Z(sZT3E`H-l5ctu((-f4*}9#~nQUUv%Ap_lZCPDRJ+f+f->3G} z>Sz~PyZ3UZXHVA~R5*j8$;pg=AFmhkS}L@>YDV6v)s}Lbt+(vf;DXbbPkM5P%W+;m zPX8)8+_Zb!H;dl%X)~iig@Zhtf-~r&)<9pqIQMWe8#CPrPKu@WOwSBjz(+m32AGCJ zX$%~ftfnORn48XguG0-3(EBZFZBx;fL*gyI={Rim>2~;>fs5zqCd#&TD8MVH+DOlJ z=GaGjsSOILq&gl3;lUJ7C+_$rIlSupX6)0)$4)!GslVl2m=0dJKii;l&U(*GhQS~> zpAKfaSGgO&iKcaABkp?U)53GO3=eu&ITfN)y2GXL`z8lz4HTF)Jnb=?U3_?X9z%mk zFXuxRw!=h&3GWf^d-@iS;*<Ne-x<I8)!-C1yN7q-e|47Cp94dCL_Nq#xrs1+Q-tTi z$E(Vf?tmnVWOU1OwOjH^f5Ew)&+oCX+CLXs0aW7E*+s>8P+9d9!lATy7w+_0R{oFh zp^BHujXpo)F9mG_s%%?N+8G+GL_VR;?OrF8-q6`V&Zea(A=D?Jd@g<-m9UB@u1uzE z9NBuy#|C}6pPxKBeBqVSZud9*QK&s07DHN%Ds$K2WjD&d=#?^>=ie0uN4|FqXsbu> z9`8`Uy<7KPVF8epp0myDqX7fIh*m0|$i4}_cwk`EYs{Wye=S9>7EQ07eyW4pN}|tg zhhVoFQ5#0=-`cm@v9sc#V&i+6);@W?-ctiZ_|h`(v)>&%=~cL>&+*#;#K*#Bi*NOG z?P}$(|AzzNcgdC>>D+pUIeZQLMMfmYzi6g^CdByHM8{&F8*2D{^fnHZnBJ=w`Y(V? zug6&YI%xv^c&VE%diU$ACE_8{2V)r=0?_DaB)6vqv5dxqmx1ciz!68b=~e-c(mH@D zE~aFr2~VN4ocxfBf$N<^Jng%j{v%ArCj(#kfes&Kbc-NJ3GbqAV`ezP?{tJHMof~X z4iB1k`fh1|`lCO6^4EX&_fP)vul~c<%D?SBhgFkKZsUN38-|u{#-uy=ZdNf7Tn&RV z&rHd|2Q@AV`Pd;<K0Z<g46lZrN{M&TR`_K|;9t<djJ`DjUR)nO(Zmq>Y}7TO%`hc& zgAQPWLzv$hDq%B*OHVNU3+vfz{5my8(<^!n2ra9OojMn8j>5N8&t`Y8vGCf67d1jo z9DI3S<NM0VkG%`fEJI4V4rwG<f@hY%>235Uq;Miw;Tf)!x1i}59T-md5fAJM*l&#+ zW2WLj%kpK;pb9YA<24}o=87&Iz_6Gu;4fJg+TYEPr3{r!9Zton!pYCs*}E7^hktZ$ zh7LPo+l&sUiP4<{u;M1mIkg;tO9mCjfInwE;1K-j1U-rd_x>TZ%2xw9+@;IkI`4oy zai<~4IcWqRj|Kvrr8PQ7?yK|xWQ@RhY#gzqkFV8%qFrU(2e|QliB8;>mq!1BB$UXn zOL~BMzJ+vuqW(v|!Ia!@oY=!;<W@OdNLY$~*@wr=!z~STF5}r@bz=YkKmbWZK~%Lm zBS&$<J+JQU836U-$Zz};k}?T9c?`lN5oy4=#b2F3jSBg@#Ay^=AnT}Hb?wx@6Mo@+ z;W&M*fD6X~2pT*N&hUfJiBZt-IeuS(HEy>sDK7dByhHE7?&N2u7B@s-dR>RktIUgT z&o0l`b<xFKv*%*ABtL#y`2s=qhcn5^%%Efwj=ksD%EU><JnstCnY`~)D>of_$RV_K zpj4}iNZ;w}l{B5mPO49-cusD!hMub@=u#)x88%wSOC7^&wp0V^yaDaa`|Og}DsaRN z$ims6oOJFdzwFEG`RG&cqeX*jrZoFi%B;zgC*Ot0+xAlZ?%_={mC;;B=4DLbTHJNu zl+`Y5>L&+EHKXnHS_6Yw*7&Mph`$bra?0iFCqMt(EMDn!3c|j+Y=)z)8{x-3;(utY zj(=eDv(+!Zdo`ZF$$8PCwEP#WFRi$77@&G@Ng!CyS~~rzCBDiqqos58EV{Rhw+{J- zUUl@bx?Gmi>FYH*KWN*{3?xsT;#VCQV&SsAyiXgv2(@I{;Y$5#3!Hw<2Z&=E^wfC{ z_3@4^vLB8eoN^~KG_jxTmX7?#;>}ueTJ1gKfUyJ0L(B8(hYkgK?Y*;wy>xg<dTo~e zK5x*fqJ&*pId&D!Q8p7?HmyK%;M$sLtF6ipx#z=_1CO^iJD8h^U8hvLlr)09&SN=M zA#IrxmkmOE?65HSpXGN!O7<Pyvi+v>Iq<5FLe8O4@H?+6f`b`khftZ7J?&sPhYPJg z`Wfxw!ow_+I?3;%tL5G@XfyHfv=<wmTh2&tlN;KwTzyh6-bI(rxX$*AI_K)7gUPg` z@bPRwfb+T2u&Y0-^TD-T(N?YityAzg%NoAYd-t!>-Zmre)nasoT<GBa>*`RmRqXj@ z=fa<+^8(Z@mw^u*!zoQ+bVIM?$SPeb^G=kFE(71<4PvkhPR!j&%HUVte7@RSd!08M zr4A=EG$<o>Wk(WAV;AZIJl{p50k8*h&2P~0xt6hV;&p;_lFb&g`>==8)gkg4sB>}n zBLmaJ(GRWj9M=7v`^h*G$yUttba#DK&TKY=Cr32moiA;!&ju8US$r_GQ94Z<02g1F zGWj;ubR`T{QPYLN?OrGMy7)MBY<d>Y=pxuYR~sPh<$nryvHkMQr}it{r~B)(+0h>P zd}d)+7W`K}`>R72?~>030mIUSQtY0bhR5naX@j%#UMd5J_^WpjE5A0{N++l8tFNf% z%N}$Tm?co}V+0%ZHebrC&^}DY;hyX_qdxQpV7%kQ7c-uKiq--U(EpJM-fv&7_`)te zUVa;z(J8AfC+up-cCgdCC%<R^vtjqyFavhZ2>RTw{kiB+S5{V;w;CoG20Ye54W`wO zwp_e0xY>K%y$&=CQsM^Q-u}L`ApY+spMLk>o;>vV)L>lM$NTpU#939TAAxxWLeAh# zGR?j{54We)XPw+%+Ai~Rb<b<zrZr_@f4y4InGbKXE&O}+vR+7aB|4L*NgmsMR>%3l z@k}SzE7rcR9kZQ9AHaDGI^t%RPe(nz##8*Gf4h>)(aZ2B?{L=Y@Sozy!lo<fZqd8& zeLj0Iv>)=X-9OQf-)HG^KwKMrDTBtG(6(f$XTU0Y1yZURZW)v&paQn!HN`&btT`p; zItrQ4R)jAq)fGaeK12p*#Hgw6OYDPK&uE%i=>B3#*=PJ`^oQdyUQ^6EP)6nM+OYlS z|MuTL`J3PV?UO(GSASaLSEEa5lpFvX<~6>|*iNpS;wcxsetp~?1JPY{oO{MaJ=V~U zwon%~qtHD8_H>?0C;Y^X`oSMzgRim6Nh8*1iL%lj-VpY1Q20031b*X@`{PWXGWxFU z6*{HQoeD?1t#SqbSru_cvUb|?EC+p1j_Y(wCuDAKTKll-?@qz*s}L0UK2Ppt4I5|H z@+zZLFKfIWYEYUEzy$27tUgEhlQYzZLr)Cir$&Npu1}&hm>Qbo6*D<sI^1~hJjYHQ zRXOP-x^C<$*Wr`dnT^USSQ#j%9Q~5x;Z2PTkkO7$K4g<^tr!ON@D0+O_amqDb38j0 zE*m-i%|R}F{F?%32zoBs{*M4}q;sROWeU4u3Qi}F4!|jiAWZo5B-F|Xoelb&EGHfg z-&~$f%5LDaujTa6V}ak~xpW6hzKvRvzK%@9siUVX>5dKsub{_bR=|J%3mBruKleAV zr+gs6yrHSe&$uuAB;Kg@;(NYb7j7OeT!kH2|2&=W>w}%-g&5`T>iO|r%nigh(O0tK zj!r4}x)@j2sdry-x^NSB(qA~9@`O#VZt{@s2!40NNii3k>-Q>0DzaoI4*csE0T+IU z81Z1SSu-oAh|zk&PrA`AZ8z>O_|wz!uS3lyMzi|ra!B2r=K#+k*GVAE>JwW6J||Ek z$$2zL_K6ph%~j(xy6V96U45wDnUT#TO!wID9dZ;hn_&&$?8X{1`xa{vigSAYL$5<{ zz=kEqAA0HimhWaSbdIhq8X-S^>5N;(nHQ2>vDCDYXM0<-Jsf9!_Aeaw4ncZae$L5v z**E*bp4v;<=Uq1QA$~lqvuMxleH~G=f?1cKo>vdqdf^1i&n@r0%Q;cMZP`G}i<brw zIP%%tma1;AZj8SM4VC$>j{DCob!7`5azb9zQT$R_@89LLN8sz%UwSX@k2@*ZAmy`W zpFh4ogQ_|NEYd^b$b=??vt;=GyE+;1{AaU`(fwW9QP|Zv_0er_mecir^V1(E!#eGj zB;#wa-J5YIzx#Nh?c@~OFR2q|rcOQf?qCh$RcCbc!L=XOURDPZX&cRk&JIgkS(X8( z9mQ!2l1~S7afCMb8$Z-H9eK80hsG;^=r>-?Q7_y~sE+VvLqnBQ%x_TMnJws{LbiOk z8|~JImT1#8s!3x%c^6@WI_u!-jFk76mQH)8F}>zEsv`xj?7hQ2{69Uj<T%|(7q_gt z1bD#F^UhBl_;)QWguf1$0Sz4*4xm<WZ!job0!W`*;utMpqtER94#J8r(t;5RqpPpN z)Z4y?`YG3nHTa(L(39+|t0pj(r#J&E4vLxs`%zr5dgc(VQ-FKrVUNL*{zEv(Q;EUW zo{|R)j!dl3*$hnhkpte&9%yIN7lRz?+>u|2)T7cAJ-!l<`@MTP-K*IAl3<k7GV@Zc zLuvqxT`>#1j!gQb^NKG9vkji;bTuwi{5gHs(q}WeJT2`%Uh+G@Ql<f@#4;Fo!oK-E zd{cJ3EujIw<GsS`@V~^xpS)n5JHOo}qeu*H5#cjmKzO>&e~bas;i(`w2D2QBn-0mu z$Cz>K2ORn*fq{`om>lK{-QpK}5|#GogfQ~@+Aa`pyr9sxYm+LsXFov5Q?kkDN(%;s zO9c)c;Z1+gqN#wFkNUf1v_(BrPfFvDg~GWpAp0;KtiEc4FzZFIH;|Id_bRW_Znl4d z!neaCgApKYHaFPX9P(tBoIPN2f}JtIF?y69F4yIrY(#Duw%h&;K20u5jAw^eCog`4 zUk{$~Wb%Ru9W9REr>^MezG$V3Z7T9OGeLYw8$e{A`UGUBpJ$u-`*$5|_p<FOUMuv) zU~6F;WY%Ujkj1{+Dq;)Hr`~7(RA;x&bVjPWM-Sl<M)0ehd0w6?A6xCj`wgCDlN{8? zX1(b>x^KOTsqCo1=53v5#{Ip?p>*I(ilSM3^&mUo7p*1VMP{~Tpp&g<M_2!|FZ5kr z<lh(<UETI)pw0gE>D8k7ET_&*?+b(1>|BM7=fPSie8NvTD{J9JeRCzNl{z7BIdO)Z z)3FYbP5Q+bQWhGW5v<|WhzhgRiBb#^oT0c<mQ=$s5`tC2IVq4FQy7XEw8{g1_vZi+ z2B_qvgBImM931y25Y&Dt4Fz5!*7G{w{c>!^kQ_1ZHT;|Z_zzEh`}hCx$q&8n(b6uR zd0sEZRMIL;zz@DDx4&n{+Y)_aXfPpGz}0y==`dc{SG?T8jX|8_cRkOd9e6Vq@{|T2 z7*Y+uMGFC6aQ%KYPN$q<@=drjc!sp`yoOqFQwqe9)p(lRjy;YAg;#;T)Dr9jQZmEG zf@efHX!n_MJW!#G{M^64b#^&(oyJ)uf;XP80j;D^iAyyl!5&-S){O>lBRHu8d8;^P z8g%YI)aiZUAPM}K3K_wp3z(iv<L99**km-E&^2JUa*jb>IkI&<ZF&svG*}unon7$b zl-O}*WmXP@Z{LLdS!bZ*YH-Gw$Ev(hrr^hsqceyMSH^uy<UAJU1Hy2P&W+sme8u_g zp%0#gr_?vR@lIGlyGBFL{$dd*gF~*5i3%OC{hoXmyz_L5d%Sl8=E~gHqJ~#@`^Bpp zSb8vqE!BVLOWL6}D{(N3&d2L^pGu5x!jBH$Qb6jP^d1*f*y>gfSD0THR{r{W43ode zHN^cY>#+Z8{iO%4Z}Ygn$~pI!{G_|`e!Z9fz&>$GmCxtI?R%unz*poIcT$}1L(^B; z9GRTDalyOFpPnq6LJkc<4Ue1hB#5i-U%a}WrK4M5;OoU(ur>NDsTvCEjfB}N^~o&i zX0GH#M<2ccSQ;C+$hUe`W;zQaY9USk1G<)^Hexm|8L&&Dz|bk(OkMWH4DPARb%xdB zIw&71RAanBLip#XuCp9)c7C?0hL`<WXFtI3F=J^^uRe0&Y;9OH`}w?;E9Pc@%qd}7 zp2tI@?ncw=p3H7-KWPq!cR4<*GlCc156E8ORIbTJt+i(#+tc*4#{PM)I@v2-niXV( zHY<_s)G0ILL<x+9J5Bmkoo+K^I@4yk@akQI1$Qm`y{{Z}Y=$nmq5H#!Y;SZ;M*^?Y z{pyGBHWT*omzLmWr@(MP)(<UFcKW@8tPC1#sbifE%UdlgKOK(t2Ir`-f%a5w#w13K zZ*^!s_gbQL)Z({;f!JFeMjfdS51lHiQ%x4+okGa(6m17z&348YGp1xYN2au#cycu3 zs$+N8JD2H`0SUNsl>J^O@#7)+ZV)5Me5w;l4kg;Y*A0BOg!*ZN4brSr&38#Q@(ri( zp0idS{I^ukN}t19`+<{bc|Qi{tX4Yj#I>plZ83Vr@x7B&>3axUjiUpHCuZ9@c{@2c z_%0nY9k{@bzx;#Pu$qBha@<nQWb&m~QE{Z#xr1Z;{b)8no@gshMx9e|!F>MY^*WJf z78Q><>!Ffvr^6*wBk7EaivK&9rv$SlxKlX>mw;EK&MwdQOY)a~GdIyXTUnHRcxkX) z{6pKqth9R8{%7X&bQU?uI*a674Jn^}e#ds4`l$0Me+fz#jyFE-)NYKUKgH3(9)=r0 z`zsC}d?+|8mn>}ciq#9#0Y;b8r5A>2{m&*TtMJ)?Q<26ev1_x#U8yPOV9u9`X2r-; zNhf`U3tRd9lIQHs;wvm5BoIpBD*kka_ReO#MH%}cCs4sA2&+Ua#T~wwN1zCeW*6G6 zz`6XZlkT)r;>pxC8Sfr!dHtR^zixrN1qCyn_B`I+%DUhjA2>YVi=r}-g_-947VZ?` zYenPEQ2;v~_1Y&}LDsP&I|UBJp#f0Xu@(2(B>UK3R*wy&>66d{gHjV=_pB~mz?RL* z_p4*((5DSZ#yf)%8=weV`1w1RXP@wR42kA&8d?bv9t5`5OF2fTs=q^^(B+2*yuyzS zTVJMZY&zXCu%_puO|@s=wKg){D)m-Kn#S1yxrmG2PuW55p0<r+Z%WC2dcB?18dke# z!#~zhZRtmy+~C*I-E!pWQAMvl7@*!nR0E99YlrN&^_sO0_PW=eeCVLNcXe>z)E+pX z(AJXKjO0Q^rrD9ZOB*>`fyUrhk+ij^qpQy93nus4+w}+7oS3Lyvlr^;<ks)e>);8H z3G@4?7cPFf2>D~{Xzgk7lE%Hlz;}Pj*j)ifmlq-E@k)0puo5<77Lo+G<;4VC=|(6h z(ZPXOB)KU|h0Q>zq#45*+=P27k~HO7nMV=MOSx5zGm4@99z6|dmccdR5J<UDf0c#Q zE<t6&Obpwy>oGH<P~#%K#^OWx|8a*<{lh>0<CDMq>wiDNz3=@|@)&h+Z3GAW04s%X zPfrlFRgW7jr{qP3!@+ZgV*)H6`eofW6oLlN3F8P^S%h$16UfpWS~ZH}`0^6sNvlHm zfVqv`{jO6_Vcb6oH?CIR83h3o4&()nk47o#Q%EwK5wFr3rT?4*rUCq1rJ5XS2<^?y z&Lq=hoZ)!6_vq$?#P=Nz5WX*Rge*my)3Nfdk|K;HTFGIs@@}dSE>r%}pE+y|Xd}yY zbnkL@q<YmTmIlw#2o>bOiY79O6qSpNuWQR{lB;X!Z@k;RhPdaQG&fzJR*rYXhJUK) z_M3oNEz@X_7d>}RUpY_x#8Y+U;2>ap23Hx<mu$M5F_-1&RX5!&-dzzsO91Hp<I~{Z z;t)e2B1>Agd^y(z=WB=MM9iREU{BJ)bbFTLyNi~U(;Yl+G>G|n!Q~`6m>1*bfAB)u zE&F2*VgKxks4HChE0157#`at%;9p8B{>bs5D9!m?b>kL(gEYSX>K?5ZZ1JPLG#4J? zgn8ERNwYds0Q-5xT`+Fom#&=G<0D?e$P;y9|6juHgGrJkIn#7jWwEa6?g3q3fd$9h z0kR?|_y2#<iJa^%2Ghmaz0YUiRXOBjJu@QQjVLoUH8tw;U3lR*_~1NQFM3Y8?`e<Y zcb-p55U=a#(Pjc*0{4o#J<}i8h0m{4=Q+KfL5y#~zDtf4ylcEKyCi-Nbltop(-Rp5 zDcf?-PM9^UVr+kD_c}`8>74Yv`j3ADtYCv{a7`z7XA>}7!BzpbH@7lSKk;VokXgW7 zs5u3X>ktGaU;a25oO!Tk3)NE&M8emx;t*N#sYCp%PV)0+UhnH@?jXFHi1*E`ececR zBi=fmHTIjO=+w)XuX^239W3ulT|1U7oNh#;C1b?(sO82P?KSY0xqfZA*iM<%{p|UD zxXqG1G0Qo*90x-O;XXQl`qiJt@0Ui}TLRnfv)<p!8M@EG*^F>D`*m*+c+Q6RY6<O) z_l{a>`f2Zp)%nV<2M^zSy-S@C0|GSgNnzK%#wV@b@!B2lZ*`q_>ek_^I4y14^7Z7G zX!oikOLJeR16KL`)FAQ?IbUyI|Hs{L+mEVE*(`VPUsN9J{wD|R!27ni&=p#BIYl4q zAUQaSKAXKXdu$Lu2Wo>al^@$iUuP16V|CW6mTg;}`>y5KU~iBh+|$hlIjv&fvepI@ zJ_b*n(<#`inrgSq=CK`K52Rx{eN1oG21d*3_H<RnsGdg$m$;(tsW179SC;3Z!^!AY zulO12h8cS^_sY=qt*)1Uwxd+*_)XuVyE^l%&Mq%yv(!4Dkzhs?zw2n0$LZndM>oh; zFlZ@Of8qn4IX95rF6Ah`nl;)u<|a6_DWj`&PLtlU>QbnWqpfi9{H|)$pz$@#!Wbaf zDlF)#T<Z+x2+L>oNM+b5;<btR*^GP+x4zt9fS1oPT9Uh&uyw-2t-yEi4qoUVn{?eX z3#CE-Iv0d6n{eb>WM#~3gtt#9PF<BPIFo(!@0^GvQovw?r40}9e#fu+TlDc^<qt@F zg{~_a$;!8Oe|EFHg`GB5(sM60IERgRx!qIFg^9->xc#mJj%Cl$1#ypyQ#R5aUIZz_ zf<hq8_=D_rznk+U<lNojJ)AlQ%`mKNPQ9<3N6Ss8O1tIdll2HYxY^pIa8`t7rz)4N z$S56M)}P-}+U$>dBrZsW$49oG4wj_OY=cDUmQ$AZ&fMye)0Qn+u6jpTx*{)T35JiV zoWuX20%xn=S0|kP(tOv-iqCjB4nfy24@U5guxCTocR|NslahPs53WsMEwmVP6t2If zU0COS+g<9&S5^k?Hqg~QF{`CVCh2Q+oy~%06FK@M<QYu%A1^w%mOwvuvVU)mdEP+f z%O74g)64e6Pde#T_^%x#=)~nO^>4g+z%pqq@y>d%l|e_hHi2GkTS9hQCwE&)-qi+b z<C@iVSlq|k#25MEi=9~6lk-h3wwVBUK!?9*d)Y^;Z1zrcGOf&nS()TlzO^sptK8J5 z!oiuYmPdKhQ@VWB$7wHlkx%KTmyK?d_0_?Z_FT!K`wd9kLcsq0tAnv3E~84(*29*l z|5Ly!t{yxT2vV^UU^q_aCE^k+Eo1C8evY!XKXx!mr$US=hC@+Dl){xHAi?a1Ch5la zfPBpP>_L=56|n$ie2fV?)({qRgmTj9xI9it{_=1C_U@nm{on6?`qMwnsd$@m_4*0) z5#U5Tlzpj&2NoKAbX=k`1{l}kCcJJCQkdCczauG`6x!#+AAXAlLHa)X^ZW2Kp_Z<& zDF!0CKlyb`Q?qFG;fzt#8NnrESm8LIDBRu1ObHq4;VyXMjm8~qKlsJPG7e?CuX5gZ z=nAReb)BLri|6ciPC)yW8o{Q(94t$ZyuABam6MZj!~j}<>)_oQo+#po0y?^=4{`L| zN`~b_f3>B37@S<ZkflmrOg}4E%ED2Wb|eqe(tI`(+#g=aja0~baOszuKBwUdx93&V zV4$aGIOPA-(!%Xqiy?N0o5CrxByVz`E(e=_(!pqQ|84I^psDQ)ae%>Ax!s)na34C+ zI>VMMj&6uLdQhreNAFL10ms(h_oO`?Y7B*=&@(UtMvuRDO&1CaMPDZpUV1%R3L*#B zY3MW_rC8eUG%UgY<_l{;p`)Co4hTHm!GOFIdcu1YJzQ75^ZZ>NXc6}CLffJ5gkJF% zKUe%%D9JY+d64M}1OHry=h>Cg2_CI*mEeMX{mOq}e2=@HZvemj9JB|II{EOD=epcp zkJmlk$P?a&xUc&w?;rj`l+=F*UkG|uBFg-N0oN(}!>j#kYLtPjr9pJ~>9yClpqWF? zcCDPzc8Cn;(HRYX1|vBt_3R552aF(_-Rfo?j*Vsqmt$on7hUk0VO6I;TiQyev_;`n zC$m}wWM8rY!c-7j57ads+2hnhE4^~6US~%iY4pFeY%ANea@Q#;{7I)Qn>p}$9kWW$ zp8XhR1GsN<2I@>@k2U^v74Kf=K-fUms@~vcKcee1In*C-C~z|3@IG!Im67ly5Tll7 zx7VpDWwQ<TJCen-91)!xC35u8(&S!U^y;UUmgx}u(kQ;p_0N<4qiDq|yxKDR-M}>P zs6JaRPH&&q2HK-(spLADIXF+6E#QC|bVw-c?1#9)%bZWkwOfL_6J=+!l5lqZ5t{3m zu=Qqc4JK@_W<2b`l4Sq38HG<e+sVhwi}pds+TioY<bFBhX0UgbM>y|$ogEGP(2T^p zI)m(2V%)(q_VVeO%om_=%A_(?01kip(t6a-9Sd!S=UHv~_GCw=CGtAS!oc1P2HM)U ztL&asX4fFO*$W*l9ex8cFM{>;W6Oj~M<1xJ0fHazD~D+OkPpGB!%Oq^k)$J@7>x+0 zrF<Xl(Id1q@Xu-V+K>0mnCOgprzCw>=4*2bQ-^k6fjJBf%^Nt*FO!xJV5ZpKwsMx< zr@P9WAEbHRAzOugtb^b%L@<4n#a?3+EcMdN=9ZdP$Ec&aj(*js?1TR-N7`$B?28R~ z@wIj7icUJ++LpG$rC+`8hHgPd4s_5vP1U{C3kmTXEgM*f7wwos&kWr2E7*v~b#~6I za|!VveMFX`?B$PEH1i+nwnK8}A4Q8W14d|E-A^v7M`h9B5pUI6NGdl4c9U&%dnJ-i z#bgr#`febI)xqDF93>rPZE=JJ7r*ZCl$_n6r*?imW3-;X@P@L-F6m0NG$&l%1@RBW zE}yVIXuRc<XBWiLvra$R76|rCXmMn;Px;X;I~{P*FPHdJX5lNUWaH=9{1YbK(I0Wj zkba(tmibT;bPaa2(FX#-A9|!o+p25PF??)taTRFi^!1yKEuGn3GrdT&Uloka{8rB! zUfbtccKdnho>z8ecGvM;UWg8DTXhgz_2NUl+BatI)7>bZOvzRG<G24^(CtB>8_Fh) zALZ;<%6@UiUt~K@kkVZg49iEZTXCSQ@Lgi<*{j~4`)9xURrSdpRh{n!IN9cO*1)G4 zt*)<4WBAIeq_iWJDu1p%eYIsId&_2feVkd{N9;)U@v%Ngc8!gB{HacEgK1wIG^|%U z0u6laz3o;gW#7NnMw~&W>UXbQ`ihnm=wsVr-nVSI3Ei5gN>BR|Ik8ZBdKFd4XLhQx zQ1*Bx2%UZH@ajQ)8zg?QrPmGAZFMl7z$k4zZe>UEBx?iI8z>9j83a^LH$9I3l2jf_ z(v5rZ*GFJ5!R_nHN5B8r)u2JAIVvFWWl%W}RK*xFC0-atW@JM=#i^hy337mx<un@C zCCzD|)DuSe32O|B1d5RQU8fm=H@ZgbQb;r+t|ytw!{{7?gEBzmNu^d}=U|m%g;Cg_ z{`sHW{c}r}|K=b6aSfT18_h&&02wtSkaK27wf3{ZBIH^Q=tp0)&Kd+a@gifD=k|2c zrEANVp}q{k1_4ly*93pqIXrz+lA@1uHf|2xDnN-f#N(~|87;qs;Y}Wu7tq5$L|tTb z(e36YqeTgiXG+G=)95ls<Y|BI9Hx}gpk~NRQ=#;%BUg$PKS#hmv>GK#A)fV4E+hGz z93$bDn4pF7hNWKyFlCNbvR)|JhM$a74eHPNH9~4Bp;_JcwZb~QPteu9GDjBKPyXEp zp#V7gl#af_bEVS2c@|RCbam<F5jPkj$+m}EL-{%RkuT%1Jviu4smrqyQjP3aQSmni zA^J{-R=ma~RSCE-2YfkEPiL6nB3Ej@Lt$?8kyp1XGf57$7cb|RyZ|^leadg?#;?3& zP&inCfpQCz<oXn}@FkdJio4`c-~~h8D}SN4JeOWy5<O7F|NmVptK{@BN9cB4zgON< zcDJ}&<c+<_d1V<OJP1F$T)A(*4@fyYe-BuC`AT~6_V5>k!~YG|(w#6NzfbS#U_dXK zJ*58%`wss*%)z<=6TjyNGQ9E#zsl{Q&Aw$>z6%dpTo=4O{J|GlginEYO)`B|x_z>z zw}9C~;U^&3AG<|w*}eSDwG*6Cki08ZT1!0H0nVcVQ_Eq^rkas)IFth8_<WudjttHF z(U7e^2{!m!QN(7{K>!#2XEmIhXPp%G;c0on@;@hGHlznrHNn)W(H_Y=lCyPIewd-t zT(WnZZO)lj<J{+Q8HInr+3r-#Et{+@yWRu)Lo>4M+}96v9`n*Zv}|`XM{Rs<Abc~i zFFJGzT%E7Y#3ra0bry7#UVEKRzfZF%UMaMFr=3=BA)8k&`Ea1N+>MBn<2i7UV->H( z=ZW0?6h5zab0C#jU`2#h?U~u}*{phJmeqaC>9IufYcscI0@&iuEd|ywvrqI%ov-K7 z2ljX&%r1M{ybj{0pMI4siB`esjN8X8sn!o?3(rZK1}^M3%aWJpW6PD_n1QXl$#SO; zcT%%~^Bp9lQ)4!ov(-$q!+#X|*V>*fZzZ47S^~}&*>dhEHuK8Cqx&2&Ge2~GO;v}5 z{pbIDQ=0aJ<p{pd@q7KB&1}@!ecF=0Pw{-8>@YwN@55yVdCRjo!j;)JFsILxVMv^8 zx&xG=PkjK37@jwS@A}w`3EI?&ypcNI)+Cjp0->|Y1z+ezrxTZT#>5#Q_G%Ex&1&vY z#PUnGPvK^<)@jREF_T{-xVVH;HhLU=@i6CGrRh?wwY7S%<j)p>2e13hnD&cZFonCy zw)kT^4(tQ52tGg$Ruyo<y{hZ%87{DY9YLMYIiV{{I(*t|@$_eh(-ha^u^W|ZWbE0D z?ZS76TfRdDY7gb;j?kH^%EJ5V$qv6}UHMt`&H&te(`2w2yYM+9gs-u>AELGA;nSf8 zLw!$B5fGf@NtexTomu=9+seF()qiq}K>1dN(WHYmnCOTn>9#+#hi`tLdr{=w&9Ri| z57v!$d6%YdcH{dcX23?{3BP43e6Y~oN4ojq1A2=a(1S7Z$KNU2?-)i``LFQFMcTnV zbc5~UPprI_UYzHXSNhrRlX494by!^k3GkE2PS_?(u*5H)PGNQgt3K%}(qY}{-(Z%$ z;y1)my6TSS>b{x8(=Hvk6*b!Vk!Uh&uaoPPZL_(yOoRY2$-j>bU4ABmaGdrnc_N~u z{K>j7Js)1=ogDm@<nn8Uf#Fvh<738|ZfRFuHhB5-k3Z~#QDyzEfkvmfM_F*n8?x)L zD6_Bh&H<%fAN1tMA6urJ-PZnOV|ApeF2!fV;&ZE=>VJLBMtyD|@AG>rWolW-Gn&r3 z%d5v3Zfy{r9nfVP%npaFUVL##V6(V;^GOv+-BKC`wzjf$@+us@Y{!{tPDX?@9Xxg6 z^dHNYZ8C%HEdjQ(=tt=Pls%}$vs3ZtN!?NC>NYuwJG7Ija@Nx8lU44OC%W|6Mp6)5 zM{iG^AJ4%6>ni7y>U?*GMuLzE1PI($Fr!0|Lc(Z>j6|paj>^x<uOZM7Ga86?4LLpZ z%>EX)k=pVb_1I}^g@FfE9Hbl)Q?>(SFaS9J$LPqh48(Mp(I}`q(wVx}sB>gE1%LNX z|9JQ7|Nh@wzWf(c;-V(JGdhLE<BVC_gccnx=##)`niz_?QF@~Vu6T&<L^>FU337_2 zKEnOW;BWWh$S|B24^o7wc=)QA9GK**z*m{YT^Hr1BpPk7g9pxF^-PiA(fClhu=NRF zX>NokW4Bc>4M;%9iOx}^N_8-+bvXwqTov_kBRya0fif04ZDt%^G!yc&C2H>*Rk9rG z#S43oa^xDhH+$e6T@y}x(iqEl=+1}>7w5sC2XwffvUiV;9RyQ$`^6k`fzRn4NXe(r zIV4ZegZFT7R*vrAvM^w~P6Kod)s}UYAJU~M5m_iHVRUGFgm&+_xWdG3MkeAybNI-K z&WcU0E8AP~sw`-l4u*we*??nV2iD37ebU1p^o@d-PZ=#;UmCB=5djk!4|V1kgEHep zrrV{??&L!m23-Vr2ga53cb*HpV4N~S+sSiafb}r!(D}RYm*fw=P-evX)J;rCGKnqi zfm}#8>^;4kvO#|HyV{XOL2x*xE<R1JBlnz+I3_e!Uv@#ce9a&#Se9Bh{?7IFI$ ze>#AN_VE>+^zz|#$?f_T_mB?HXqx_`!2_Y7sXM%TJ~SLT$nSdid%?fx_k4w&yeAL3 zUEhCexK^RUQ8>qdQ!@PVa&Y)P4g)%`{Ok_9OrLot8(ivMr-}1BfHykUcHo6g$yW70 z9A;lm2T`r7UTH@|p~EQ&bV@{>0K>jScy;{9+ANttCmn$`oJO%rySmdarwGfl6Frmf zW}bqfGkJ8eL=oh5a+?*YGqkN2#hdlo(q^3ibk*s7+UX|t?5q3o=<Gagd9RMI4x!oL z$Jsu!z*hIXe;a2xF?&~Fjs2tA)hE&Y_>+M^wkSv3KB~t~t2IJzfEoN8i1L}W<IMb! zjrFP}d!V1@w0Wh`lbj|8Lw@QYtl3ApLb&m#cD&EYIeYoKH=-ZDr`c(F%N8zeZ_Cnh zX4JP@k;zp-Sn7<9H!Xk5a@Kan`?F5=Ocw9nMOU4*(HpK$%^1*C9lWgs>)<H^r4Cfu zVU(q*5mOLr%goqk&Px+X=}w~EXUiF*W7=Qb^V*%SWL$fKJ_kRE(*b3JkH5k9sQfD1 zr@fBoOUKslaHmhTJIM@9Uz>5QRcSV;S0zQ0{lZb3?)FY#GKdEIc{eD3-?DO@=xCPL z?Cv`FXpB%aIN6t8itlUTt7p-nJ&MuNIfUwTc+WE61}U_0!B95R$m6gwx}pB$oyJoT z`p{b)C@I%@?Du0bbaJ#;W`SdHnj@^<_cQ%o+ZSA6&z|ep^UL}K5Q^=!>t2zdLAmV& zW-`3x^Ltj@sg<KNpU#Xs8lzbmbjz{U;WHa_Y?rWLmX29LgF1bj;W``57Ht4yU`o&h z7aO2Mq;Ap%T<@gsq%6I`3LO<d*)FEUN<sVStx7Nfz|pVJ`j5Bnv4^HF4Ulb6T|oK9 z&tOEOVX@f-IQ!ryd~@7y@`%7-Cg&I#Zs`Luc?NQw+|)ohv5%9(9DXuj7Yh?NisD%z zbiubl6-6o7m&<P-@Zdw!-i~pLCfBWC!Go}cgI2o1D4;~@{b2MxJ6DRxxux&-cAYln z(9X^;pLE}@^Pnsb{|D-~=m$4PZ;qX1fvkdCI}r~R%k1X#y>L3Ty`9Q1Uf7y#jg0QS zTC6Y(h*Q@W7cT6w_b;Nyz*ZJwzp9orm^^KRa$=L};2Kzp2Gxd7#}Axt^gH<DyR5-m z8!jC3!6HjorQOf+$VckaoXXv^G}i!<wnryd9W{{V<>OB~iTqbTzq<R`sl$cQv(0L! zqdS=#cjej4FMS@oVAQr~H(I)L_w>h~vc+{&4KQ~w)zj><IClSQZSVV*Dt}_L`*`EP zr#jI!5W!FHbe74jHg5GYnhg|t9iDR!wn8BxS*7#75!;WoE7i(qq8G<6$FDX(ozm9g zVYch0-*k;E$TzW!AKMz8=x%V*fSf_<NefN!I~`fwQBQC!SX~Ocx-2ey%Ek&0sSGfQ zryINnqLb#7XGsnQkOu22A2AQFy<W&Zs2RKzYferSsAw45XMlk`Bc$Hlw?h$hc)Jvp z(c3lLAzWS&<=26HLP#r6#7f(j+Uud35w9cibTEjRa5){NC!-sKghDxl%&?@~XK87p zw~cx`T`!5<y=-sO-~a2c@BZcg_~$xi4%^59sX$Z)r#o6Irb26gCom>TURUYRg_gzj z$YDqB9INgV|H5!1P5;Y3$}kh`7#KKVgCqQQdA<w^p2*nqmi7dTA{vFc6l_XSx)nCz z`uFSuW?$Pw+ArAWI&w^B5bg`LgN?Q+3!|9{QEuw!Ql;n`+Q%&koZ>O0MNmY0zsz#H ztz+vjs+W!2ynfLhw+^W?LvW3D%`iuYfswRyG|dSJkB<19-s1gngwm>(X>f{^JO0bY zV)n0bo%2+hP)^S@lqEfKEj+|)DAtIC96vL1aN{~$XIWEuikmULg=vKRSpwrvr7ddk zoe=2WEY&L8O1}69a96g{_a}2c47EKU5O;rrGmZ~Ei-`21cZIoM<r19W9lcODPKr~~ z;Hi@(=%0bz!7DwVPD*+40F=A3E@^3HII#9`yBB_N`2}~dcYo9vJYi<4&;3O)cyj&W zCH?40rh`{jxl!kuKKF|@b?Y>|M;8WDV)4ET@TZPkvXJi~?jtMlC;Y^b)q!$7A8?1J zi_eqyJKqn}EO*F;uLp44vm4CNLm1#(^c`a@{Wt*TmiOQh%7)<3J-Aoi1Lx%X9{v!{ zO{U9t?ytNB?ea{I*c33}*^kDlr^&MbPtsm|&>Q?+&!c6^RJs*f4JOC48O}E?<$PO% zYwzJB9R>A2SdVk&j{{l9pnB?}+jCCP^MLbpY{TcY<kPs(IkSJIuP#l$EBD!z+dE`6 zzVA8MX_HryNn^GKc^X<GUne_8X7BrTDAD5v>S}`bt3F?jd)8%b%p52@1jDRq##oPI zHc6ZF{FT|Q>}0fk)rg0P&0;IP`sh)Ph^4yrmszT-v+!6)Q%ALQUt3!C>GLnAL#tyH z9`tbJ?PKDA=u~jZ%}m%Y^(7DQSC*>v_dYxLvE|m<S)E~>mYvw#OsYZBS1oH}TRC~p zn>~GI&u#UOoqQgyA6mZF`9|TXyy+XcWJ}16o^aGG`DN#RjDIrv+Q8oX<ZanE+i#Xx z2kcGDxb3AiGwih!pZok+o2nP~aXQh=di*~rkN56!b{$mo;g=3iNp5C5I6;;#(l;HM z?elDjcu6x9<t<L<<$ZBhWAQi4mI(jwzLT88X^HfgoVB;{|3huj&p-8=r1mqv@3l<y z-s&tJTT*SBB;KO0cpXd!Ceb<R=#*29IiX;(H3o8IL+|VEIomox27Es^yG)3Cg$Qy> z&*1~h06-cs9N_8@1|ofkeoa|l$7w9E^fLKVUkw~-pE%Ll*+<WGPV2x$uZ|sGX@j`I z7bd?N<^*jAXoA6SVxQ)urZd`bf9mww7JLYc&(q;lU(oOOu&l$Z1OKQM3`k_pBv234 zkB`j+fi)T;ptTXpXr{=@0J!mSIvL1JZt131k%WD?4Q5%YZIFP@IxNbb@Av)EMFZN} zek&N%ReIv|*e74jir2o!rx_?q<N2eu8}Ogh#rcLS4}&_TnVgfEfqP{`9`S=t?LV7E z9+Q*!#i2Ev@vHpi%g8;xl2vi*;QB>e7rz6pbz0@Q%8NY8%lV(J4kwr)EWDp(FE5$_ z+A}tzv%j^E#hngyU1=F0>ZAOXpGz=W{HfE*X!weYjT1N6^k2<CIx{;TtShbGEh`<4 zQy;(;&UaH65DBezVd)u_uI)GNchW3~EOw4UGIdT$OspPX+Z#79P~2F;Mgwy6)9b-> z94&=?lKnC0sX5syy5i1dIrCZZ;}vK0mMqSP{#liAbQ@m6#gd!(-0?45(1O>fmrs4e z8#$KY{FXEwJ86ZJ;qfI6Y*|Hu*865*U;Wg{^}l+#K|^x<l72?W&J|!wy|Ob1(NbYV zFPW~xNbju>s<Rw|&Uk2V?aKyAdx!e7_U9U4ZGH0g<9>9~@|)ju|DWyAwKq2%ODPQ$ z!nv&uwLJ|BhQB)2-B*)o)lUaW;m&FP?|Mst`KgGw>CfrtdbjS!R^J5e=uIRkXS%r6 z8_8N7q5#wDcz9YHqYboV+ToF8t)sj_*%Xkx@OA2F;doRoieY*gE)OIw+(kr1LNx`T z-`Vw({?K#M4nT>7sTIF_Jz3Q+4TbY}mWUjtuB^kxWSG&45T~XY$#vbxIX4JT2dl>s zlCs1+M}%?MRC}80fD!`0u%!x?d-_WXCv8aA2}=RC>A7^`s5a(SSH|V3c-wc1wv^yW z%WF~f(_jDP-M{_c|JU6=|I^>LR5=C6C~ou*Lkwkw3Z*>(<Z0<w6c&jR#z8v5>LzD_ z){g>-{ijG2K<Z<BJj+9YZ@;G`3R*~cZhYSga!OND;3>|WuzuI5fEE#)GY$LXBQ50$ z+!{R!lw4fLY1v)z2|rwG)Jn^+qhU_(;FhjzNjrlO$-&Wv-pD)+gYPQ+qn7L4SLrNO z`0_q_YE<rX5WM`_D>r_5+@UB{&N+A~_~Q;5Q9zSIaHj{+9Q4twUN3MrhcCR%fJO@k z;6s~tEhl7iHo#C>(H(m9sdBIZ|2~gUZhR;!jXQ(32Ky*Tv8v3eq!AtB6M|8)VSJGz zd^eL@_ny1R(IAb=g+_aTKrk}5G7a&{l)eNL565VpdrMLf$hfPBd!>mag<?N;kuv>p zLr2v`y0!4~3})$Er=cltYWZaQhE)Clgctu;{7HL*eWE29tP5VjhmL+Hd-%b+UD8YO zAn05CF(L=T$%B(+xaF3Q#QN=T2C5j1&J?W}I=<6&<CS`-Y4Vtzhx@#@v%CZq494&n zvkQ;sO1H;iOLM|^w|WN0BwQTm%HWjC#czSTF1|0>ocecozvKqX_=p@~>dSS>cjdkA zw|}1mmi{E3EW53rF}jN#u!nS^dG++B18|5J=J)sSFB&cwf9#iRW)mhOFd|^YB%f~a zb8c|i9UJcV7AMToRjnxa?2*RnU7aGQG+O4Xfm8RaNa3I|uV$}~Go2e8FrBd6fXQkd zgJ38j1GjM(j_Q|Lv+CvZ?UBn)7sq)vlc_FWBlMr(Sos^Z?j5tdxSZk5{6(W>(CY+E z-n1|b%E@#Xhbf!IIeEnKofA67F&`cMG<&p}i0W{QGq?(s8!sYQbhdu5*_SAqGwxlx zxn%KKemHw~t?S9tmI#w|&WSz7Ua_Nt$2pIK<jBKFR+CSN;`d$h%yYPV*@!;*k&#!W ze97tHls~O3yf>Ge-t=mT4;?D9+3N;+t*X({e%9=>PPWl~v!dA6X^nu|NM*&@>b#0< zIMZm~sWcVj%6Of06lR3U*@0b_9ou*IzQeB!8hW2Pz8(kXye8w6`TNhWcR<&x4(oc= ztTG#E$(&O@Eie6{S&ntgva9s^eW!hXusJM79eQYw=?@J~-{%l|H?VgVhme?}H6nAO zRP9H};aPI{R_@Wn9+*}C&@6}iq-ROFwtucm%(4bF-TvA~U+r(}F@R3kJ~L0nRW9oc zCZ`0j&m2*8qqb1nvw_jbxg0;Mm-q<u>0>kD4$`8BWNzsloA9wR)47`CHrs}eVDdG> zLmku#`=D(R>S1MNdE#bT(@Xh3#FJT5q&-W<&yul2BMnM$(#_t4ah$G=06QMxn%=K+ zrvqy@;-&mjkC*D!W|)()Hft*gg2yUYk_hLS<w0ozFF?I4>B2XlOg?OOf7gmZwqxp^ zoR2*_9c7(e13PHm;Z@a1`Ml8sZYv$Y+`BiU^Z15jSh~tp=XNJ5=ggb2QeVm*Ge^Hp z8<{-f8J(`xtK?56=-S|cXOSgY`4oQHO+__7md#Li#NF&8deqCkZtDi~fJx_qZz)Vw zvNEPDkZZAy9<gfLJhqYYl9=z)c9pi^g^U(Z+0TCXfu)z9pO#h05*6kzdcbgfZ;uKq zy+MVe4~nh4;pJ~krr}sSR#u%m2MCf4p{yoFi#vbSj^aF$AKO}J0c<9_YrxU!O>~lt z#3h-16g;p6MAABEhvw{dur|wCU1HLowgO{Y!LmE&V8iNf;phXF-xY-X!)&Q`A|0YD z6WnM#b_40k9OZr8F8m6wehO0u1eAc^LAnY#5~5+j3)_<8p2f3A&MlZvxc0$m?N2%+ zkBzSVD{iY`q77&>)CDyF5*?M(w)cc@TRY45sMSG_f5^_7+0DGFJ5OHzcz53b-j{5% zfz`VYzs<h<a`)xUZ+orKFU{^Yc-lbRySB+Vr{L+!{O9ClrOy4+SK)0HNxtz0@oIyf zT7gn0mdSnBK<@j>=#i7K<7ul~<JVvlZ<JlAf~{=vN=~cu#6@=sQ?C4jC)sRow(;&< zC;S`ma~+-1+R+(wkXNcff|Vb=A$4-!;A(I;8ODC}q2tr-60JUl4{qtfUK%zTary`J zv3$RORgN^L|2Yo<t^i6In27q8nNh897*NWE;AzS5-3V58mRgzplI|vq5py#l!PJ0I z?7@j1aHhDxqOLD0>HahVN0=pCsJsk~2E`sF%CnI=qvkCoGaC9||NbBE{=JUwpa1!v zM{@5BjF01JsW1s0e|;$JuF;`_kX30Dlw~ZJU_I|jPUzM3>F!2j)ZX|R+(H?e<+$-K z?_doG7@p&>Uy9-~DxzY|$OTU#24l`q@n_#y>LFj3pUa_M0H7*pO2ELLPTxs8e1&ba zjnS>F)p=B+eaoI|g*ZTH*sOV-$tNv|(y?Vqz1m<4w33T=*HL7hTqE2@?KvHsD9gRj zID>kFr+RoT&^j)S*r5sykE?`7S*4HWD%HmfhH+#|l{jAxI3r6ZEAHghU`fm2ew>3q zUW}V}`+aj-Lx5*hWEB&D!j6#-HeD_z0+w*}Mk|9hS%q==RxwYYHfv69xEOPJfaTbO zW6)-NrE8oC_oh(3ey9-|&xQ1l-|FS$ej{r9=&WjV=&$;?@{J~XVjzV4%H7`}gTA|U zkP+8)b%>6!KfDNs(`T1^HxP6W{%Pn=`i;7Mk6!$AwOl9e;J=KCU-1|C;fON&zI-7& z)Rksg;YGW@gLC)zB<cbev$WkOgV`i$lkLR|^5?jW{=<%Hnt$7M((Ue|!$a5i{9(D_ zxM)8zqKhCT&xf!|Ol!cuWb_@+jjrO4@$P02`UY!ou8<qgA!YZj>&WnurSOyKDmTB< zT<NZSSGeaZtu%B&-5@(?zRMKcLsVM4JgNbnVZF+j?M3&(E0>KRrsHN?@;<jr%<PTM znt?9|iqPwwa;$!=Av|>>sB>skXmn+0qAO_zAMWv0C+O=}rwgm^I)l~SYyjKtkP%y6 z4E%l8$Yp0zjGTcQ*zC^JJV{Gz&2Z8eOJJYp80gSuw$7`BQmi@j!3k`1*iSs<F<HBW z(J;@JlXY~Wm4mB;qFmXN^_0qIzbI$Z-rm*rfa)me00Fx$6>lXc$HFJ}>shnDj~iN! z&ASh8>S&>(k&nb$9_3YdJiPk(MXv(-)n>;&br_XSo52KfXS*!rW_O?4%T;^p-k_~R zqMW5b56&sG97bi(3|$9~s4w>IvNJlm3V1Wr>~8FDKWtLqoPKErmJU4C;o5aN9`;LX zmqMEZ)$CiiEUUIZnlJypPM%YbfBNa?%C^I<;>StBaB-&0(lQ9!>JrUnQoYO3dnO&6 zvSs3EtP}c6d(J+zEbn>cxI@n>AMd4okrOw6Haat~$vpal^X|0{;oE3R=Nk}Zqb-xx z?kSTEC}>B@tmF8(f!RloTaA?d*k3pMsj$i`A6+z)EHA66eX)9h-g4bEBU>2|Jc9tP z)5$G=0y3~;Iqzj(Bd2mHpL!Wg7r4@FT5~p@t{2bNT`7|BW-G%Fmf3Iq!05;aGD9Tm z>QV8ld&z!-tvv@VND>U-zTC18uyF9z>$S1ke{Hh@?)sWjKHQ~!lx)=Z%ciIk8#GB? z=dA=mEiYR$$Q*m^baGI4HrQ)LLCLgf+Hu|h=kyHL7S48{Et#l`8>q=Qde(L{adc^& zCusuoF`Cwai$!#uWzLm%Y7f!uWo79dxv_a0pbB3C^X&SNPHQ_1o>+ylHb))kb5@y^ z79YaOM-Lb-X~}AB_as?Zyy0CvjnnZmpG;$d@vi;ACswd@7cs@p_Qs3UNJP&r8B3?0 zK_oxjIpv+K#N+$-uN&TkUcHF+<y0reba?XDRV6U-Rf_2n@`h8uvMp}>jb>qpp$D}M zm9#&vK~svOtylwb>ORJoyf_+(j>$OW8_Z5dY$^PHwM8Z|w|_tLw+>YGj6Ae625Jn3 z_@xudYUIXOsxnBR@lg(ybnf(F4v%P4lzkOY%)x%kKW>WCPMdV`%Px$-@aYH4zGNVD zc%5DI!^<-eX-f-;)tGfqk6yEZookU#4VG0d22vl_hCR;aebF~bai8lfHj8^-n0K&0 z%BFjl^w(_RqgM5Ndi|TbMmg^u)xmw#xd9*gHRv43Z3D5d_i=feUXJ&uWT%tS*H*Wf zjQaHY?cM8N-roJ<^+Kt`N5*KQG08K#X#2~Dd{z=P0H_^ar#4w{;7jQ)OT=rNOQ&P~ zGMc?B{cJgkuho(CsYdv0r8sr;=xgD@p57<p6Q;j$Q?y|}bzrt4{;kkD>Edbrc0@>y zg34Ga2XZ-mKfF3{uu<GXj8yIv%&CM*+7<9GF|5(s(jgVD0%u?rKW+>1AZmCcwn9IS zJ0&aaE!{>g;L@@OYswv@*zFHYf5gVffJeC~Jva!WV-zo@3!f2WXcA6kP}#q|`|+>; z>)k*9+rQoY`Ct8)@-!2evK@m??aG}Zt<xK975vbhQU)KceW@_RN}$~hH|B(*2KlF| zhJ4SXEk0)$%1to<RWJh{PpJ373%GF3pp+KZI@uU^uc99uM>3$Olq57bBj?DBoC3H) zzVeWh%Eu_|59sbS`b!_2QdGWZZHx{r@McKRwhiz)`#Nc#ay)E$e{a^nXuBpHe2V$~ zcguVzZ5)JpI)yHZF{geCg64w@ty7I~f9~)nueTVVr4VjpS;1;1*RjeFe4D9BoJM^= zZ+RgN3a`vyCtyz921Mqh3WT+v^66xQuOKv3WIB3#J}U%BUlxY3yX3YSQ6}7R#kb_P zU+FXs8uK#Ol1<|P06+jqL_t(fHq&pMq@-WWEQC9$sZR4}<XZWI15dxBCz|Msa^egf zT|%?;BY1IhJRmNoG&7<%<|P}+<(J22Iwo*A!r}M!yudv(OxF`SPF^_V_zvfk*$fNa z0ZfY94cZwvzchYg55$Q-u%tiX<?qIy{|zYJ;7MZulWd7rIjplIFPhXDJQgksTMZ@{ z%1Gwv%;*R0T$d~^_EB__92t*|1)}+)d*ls|C@@Z(%ydseRH5ZzocMFy#4}v#!X?iE z8oX0Z!twR{*TMNc-zD#d<@hiS`Cl@>(q3hAaWgvrH<_tx1h{<e@zP(vUNw@}a_rB9 zoN5<l>9S=}t1ZgBwA0(@r<147D-#o`mC6y*WJO-$t<cyh%h{Lva5%|55}L*Ba1Cve zhPp<0wKRuGhtB&v<z@fjG`O~Xl7&6aGup^-_`YPPX5R{T;LQ$qVnivrFiN8ac0YQQ zV~@2i?ZGW5!f7$*zE)&uHaNPnPQM~__9Gi|?b({#=ZwWeGP0M{;dJ`uw%0t)p0;%~ zJKz-KoSHu8RTGg?htVj$CE3UMstmFp+Rf*j$B%XVlQ-=!$oOLimY4}!TbpcjG9136 zE!<36_B$dwIIE>|(aLtKn+^mcM{U$r69s!k4_28s5KtP9u#TlX_%<W^<E!JyI2;Du z;L~{>TGG@8ym;}dyVBR`CBc*5vgc^aS^NB`!=0X3GFN_`%Gt<>)?1@Tb%w1Dz{niP zI`S`?tp>;J{l|!<BL@FunatCJ@j_FSVF|otfm)++oy+2snHdesXxZ8=iEOyv07a?B zlM_k#JM!U;t)5fX^8gMxITl~TVHVwW>PcJdIw9LYu=f>{3wz|VsuK_7ua0j<6+I0! zd^Q`Y-q6ML?ix5%9%gaN{{5=l=6DvUlg{|j0j=_*W>dDO7B7YGv~j=W+TYqLo!IcG zJJ;;2rSP#c+qT&;IzKzapEJv={PP7y<BeZw%=jcnyeX8~qtdE}1`k~LT-o3Bi)}Fz zeZ_51p5DQi@&#r5s$2I>URVKOaNS`vY#CfTWmyLw4aykK=w!2$k&;vP%6JFe$p?O6 zeFtNaqhW1JGO|iydKUsT@K4ez6?f@QUa%olqJ3BI8eZxi9drd8uunSlY|wX*f>qpP z)GZPaGrO&gi;?3Km5ZK`=fS*Zx2vDSaUu*-sIO-r9KZ10a&^BBTC{@1rtq706{oz| zW_iGH(Z6juxnRWmL{;21<2m@ngC~8Y23=>b=X7&&E<N7GYlkmRfW@QEFB!7Ws2yHV zN^dco53!R&rY_rc^l<Q2f`?~(ll0Cg2@b5v_QDr742Bah@cp37A0Eg^JiAxe@Z%%A zrO=V>f2F;FvZcXqRCjNijZ=nyZZ`8z|EyO4wZ-LC9X{ti(38}&@8J8$i`STY7E|m- z2l2Paw011pZ%fSAI>=9c>|N-ce{kQ{kY_Kml?mcwgMMF|wf*wpH+P?Z^FJD$>2+ys zZ)v@ME0eT`>0of265l9qZC|TpsviaiHZfBt_x<bFcOQQ9daq;q?Qh@S{YU+!|9tE9 zb-i1?v>%h@w$cReP3IjLhWfcJF&nHh5=wYolWwCep0rINh~EYaTe@wzxn<|`+fpue zYG$NdR7|d_+H{H@oexo-Sba9OOdTaN`cer@_lCab{s+koJj%>xp~`r7zxx%5T?*Py zNFb&F=js>I8niV^3_YqxRK%sMQ~Hy8M4hjagm|!S1YE=ndieT}S&TBiD&ollFEogy z788tg1)MZR6u%0J?&uklF{l#%*Z=l6cmMKlzrOqVSAR0W5)?CZj8@nc5SrpaUiiB! zEE-Bo9*e*I2DX5{`drQjn9|HJN0q!cHcL#7GWnJ6{B~D}0+IgQFG%PGPq63Wug@S| zbV)Z^b#uEvMitcwrNHq}nnO<jMG;={jEb29BZBM97QCnknE~lpK9ziH{5PtTQ=}3$ zL-Ofq`=aJ7)c|RHYFId?DwCIbuR;V{1M6C2oD;JVYqZspW?K(!@wCd&^XM-AbWG1u zru@T^Ugnk0j;4>UFI7l&OZm-D3eFtP@vKa9rh>`QnIi%GP4;*s1N^PLAIce=t3b*@ zj{AT^c7-v`Yak0-6Nt^y(NQB&8VEXDleff1ez#vjnQ6c+V@l`NAs}eN=$by@t-Ph` zx$vGLJvz2z6PzrgOHjC7cySqY09#{o)r(7yj;`ZLhAS&vm>B5W?|GK!z?DXNb!AB= z+jDo~&i(m5X%D<X>WfSUWJwkpz#ii9k}*1zz`}0;_q=2^a)T2Xb)KY3O4{^S`GY#O z5CK*Zhvpm4g9#~K4jOs(>1+6lIPy5~-1}T*aHM?lpSbV$b5Kek=c(gEwXZ<je$j-U z8~j4u|NeDwqUFSV!%vTH=?CLV@BohR8<(XWci-|XxybQ*(!sU6h4(euN>JV{8>7oP zp<9}HYuqHYckq|qnX2RE)hs#;oCz|YT1V?_Q^=5Ewn%w%Y7NvFfj_uagJ$Hav`%+_ z)cd;Wy@Q0jztvJOdwz7{INN50?8$R*$BS@kpPV-NxVrVMnOu_ntOKmE9UIB4P8nOZ zSvNAAAY!8OQsaD+f?MLXO!>>b5$&Ei;QgubbWb80_*i`|EgsC?t?myl>F7X4+M`C_ zv!Ochob-E+e){>PR@c7bZ*Ktz$K!iTZ0pSB06ouPF)L}wvOUr71NN-XeVv0`iP<k@ zw&kqkh}ZbTyQR!djen8D^t|+mx>?pUSK+l2P9&9f?{`dwXFqlFZ?+gioK$>r477J2 z8i0W7Lo_<{>O~{=_Z+jz-3i2&sBaZYTzh2_Im5g6uqSKMTIaI-W?3Iser6%wgwH7d zi)N*NvbVO5*6TN~H#7VBqrJ`K8n-|Ec=xiwcs9*U=9?V5%OPF8Pu$w1jqpdi84Nn; zQWqR{v;z#o^+dViF`DR&S8+I<S_jXHDxI92hAe!I3(FsT@&&Wcu_<(ea-|u;nHJ4{ zr?+UxQJkGp-aQ+Tp%vn2(&{MXarI*m!K^rbT&owsJ{>^trP01Nb1qHgvjJ4HZZCGC zU8nxY<$H$!ZD4o>B%V)872WCS{D@$kPF{4Sp9Xogo9eXJhpFRev0~u9S*IPm6*6t$ z)p^Aq5zzltkMi>atg<k(#|Am9jK1^`kB6^E$p+sWkRaFckp<bfN){ZrE1&o@yKbOm zg90UyT>HA!2W);gwFf5B<OOGKp|T5)>)?(Cb+GvP3D8BOpLHV3>%#X)iZ<H~CNs2w zwN7#Oz!GP4CcZ;E8?wN{OLFWX=%o=CP_X??7v%35=!<vwzv;q__J?8XNG{KTMM=SM zjn^9w3n)MAMT{ONXdnFxN5P}P?~RWA;u*aWH9E?Rk7FytSvX(HK5O#O+1vqwJsRNI z_6%j(pKpH2X%mC9uxu=v=uWUkd%`+$Ik4#l8?=>!-P_~6<+IVb&N|v+K$#ug30E+J zvT_@&^2hk}db(LGzQ{=bfqj#Q=puK6T=UloFp;BUJLxTLDpq>*SOo)seYv(-yzH>3 zmp?wOgWDN4owWR{rOUQbS~X(;;d4H)l^pBT8dS>;Z7Ya&lVg)T{cJ#|8QkYT|9JPS zUWfX;tsh_0eXA;`L)FK6s&}7jbHDuZ=I-9R)gAiQVB%-%kf|selI{K4xelMR?FM*u zihQ(wDeZ?}te$Db&FfC6@Ao&i&xZz3-}W)PI~%2}qnlkcc%*HAny{Z1z>+YHWLB|m z0*8IDo#th>{D<0VWv7ibxV*!)D(&eK*(X<ex4vKHe}(&1pnmxgEG6Apo2!f#O(&Hb z{K0YqmU{%1er>zL{Jramk$Kk;f)X<)d%)H7lz2pxW)7E%s+_01kZ`I`+-U?3l7qNR zBcPv%T39&d$YUs2gw>s|t{yzWA*(zprqBX<8Vqna7aQp;tA-a*KlI+JfByBa@BZ!| z{$ZmF+XHN*15a=*KMX<a|BwbSY~c*aDmeZM!;e~XI=Cm_3W_2WkB=i8e1P%&y7<3- zFJ5u+@S4cwJtW-VB5B+%d<MFN>wuO}i5(t%PjH1quf}_HOM7H_WUBHX8Bcl0Jfj3R z(T~P>G5Wi7V4}%vN{W6ug^X2>3wi47R*`jpcbxdM4>h=)lfufk#u$@$>iO&^2|jI| z%uogHVH&3^dbIap$m-8#OO76(39TBa89)`fJQ~6cwhSh{p|0g;{Q9ft7H{?giXP`Y z##E2t>Q94zWJMl@EDyTQvj$ye4qODEk18lF-7HM!^~g{(K7|L!2aeKCSBBC3I36r@ z3LT2ar7<j`=YzwO3%<bt4;?`Jg6o!f4o~;vzo?^|(n)rBl1K7oUrf&j%%SUBI_cqB z?$Sha_oKHA)a$_f4r$=}lJ0`3-WGBKmtX<i9i*OS4<wQ9!3F+gQ<yqPAIP+R%k=ar zw`CJmy2+V^zL6!%?e^Qv_3ZZ{#>qIG;9mFF@0FQOo$Hbt8gIBU+r#AY5b%{FV$kzD zw&D`jEzR{K_$sq24_bV_@eQwpzkkJk;yU`Nb6Uenj=Ki;LB8ODKns_o2Q5I_?j|_u zQFTD}TO1X&ukyG5+5Vs$P@RO?ruZixP68V3MV&|}OAaT;QpaP5%LH&8MD%kca{xZK z47g23IZidG9fV_<)bql(th8i0WnTI6xEVjM8hSQ+Rp-QWUJ+Z=cHZn`PPa0Qi8(Ue zTc&)Rak_!qTYav6&%UYOh0Y01e}Xz4li%eudOAqnbvY)pBYWIN-1TwmN=Y9({VCaJ zAl5P1xfWKKM9<Sk>n#^eEG;LFVx4?&vzJET=iHzzzU-BK-xAGAVx79Zrlx!K9DPR8 zAM1QFfY~H}_c>rY*kql7mc{9GQ~;KnTT%Tq=PYJAjHLZtbwnK4Xa-~URe8pCCsl5? zeeb?a#yi<I7*Ff7)aR@$bp%P$j4+x{`72i^HG5qUnmA)l={Fd0->K8!aHa1XJbe|N zI(hHvM1TC$EJZX~4n3!~K@V*P9A-Rq;@?K^^zqiFYja*`i*EY0*U79?g+1kU=sGr1 zn?uI@fn>WCM5oPH%v-9gW1o&jWX~~45cuoaAgZl2%9I8q?ewuUQdE{|k`B99Exk(y z^Er~GL#ybnSz^Dgtt=}I__2G_p=ceRgZnt}l>`0dwAQg$+mhaYwzY_y3-`|64eADn z>04VxZ<=j&GBW4Yl3%uCGuTmTR@q@?_Q0EMMLSt3FMR9d>hy#4L;D6TYqtvEjRV87 zDW8(ze2sYVtGp5l^DH1}s=N+rwud~cbE`ko?aEXc1sgvVNc<IF-bk!`(HH$e@v&Ot zZ8K8uwmh>uI<HAgeL}B#h;}n&Poiy|``~PuZgFf8J9TENgU`3gP{DOpcO^79hyVNr zel+wQC%0>O=+6nGm&Zr!PU9O~Vd}85+h3@_1qMeU>{-4810C|Y@F86Ohu8Gr7I5V| zwg>D3XUjX$fQ;lLe4Rij$t&0jW%YsGm<@zGM$w?)idUA(PaCjn>2TH6J^BMaI8vMv zQU>W3OHi46g{OV9>I>dxSxdZf4U)dy4k?m5c=8T?dX08IB;D4zt;^VR7B@Q8xsh8H zA`|=>EZcw(vZCiK`6oxz1-I|f?B^DS>h&$IDEeB$r~M|4;ll%eqnf|C4c-)H@4QzB zJvLL?VR1iLuAKe#-f-3VS$6et&uY09i61Tful@X-&HenGeLT26cOc(=qcS_|p&8hx zb&{X`)Je^M{+D+@^zPjny(2F(xee^zcL3j)4gq{xhxKvGjUIIl#K#Vj`jA}(|10~G z4}NBcTe56hi)}0k`-?-TUhCji2OQ4ayK$@9)v0D~`*`2?`>zi3O{Vw{_m7=iZ#B`* zzo<OSP(Q1VeoXfr{8a&NAV5dmn^=CRbM4#)_Lyw7aR!#}8>F1Q&F<?L96MN<Wf!zx z$}U9JRrVnp84W4Hu?3?>SxOgSX}|{Gr!(Xj9{F#V=jr2=^$I<|TE~hq1}Sg9M_u~u zIdT>^Z9#zO6k>|m?~IfjLku9ID288k=saJJ*(zoED53b0L65KHnUgwCe-r^YoJT2D zz4G-pqn3czkW>I>A1VD$jfVW|zy8bJfBoyf8g4?=$wj9Q5q$mc0tY>#sgN0f6qDGP zQP=m1vB$&zgm8P7CZLC3!ok~jm=B-f{$rQ$Lqj(`pzH8iYC*xfnVBAHhy)T|mwaeF zMP0s>Yn?9EpbK3tjVD9G=(t&Sx53*W02viuySF4~2~P1W6bFy&z$`#nYWz4U&-VG$ zh<l3O$6l%#q|zLHDhmSkT^Ss*$D=_Ai#r733B`<nGBaB;gN4@qTyy-|uV)_@gUi`m zNk!W_g*h%Nk_v%8Qba2q-13SA7OLVi?7$x4CMRi6r6HfvCA-tX9wZd({~9nEILdos z29wh{dPjo}S$U$XR`7&}aJnDIO9y0t_P1Zpkwp(Y_i=xf<7w2Z?)0E^aksLUZp%G5 zVmFwh%R|>g7z;?|+N}TmML-9}mG(Pr;9jAB{1=X?91a7cet)~zfd14me}D8UleqCG z?Zff{>M(n97k6l@+$H>$Hrd?JqU9?3Q$udtE&jW#AIj@8q*oY+X5dH6DI-v3>%O6N z1Lz?FjLQaolc)TJvz_1U=&ig?*^|hj32YY{uIr>Z@mJXOdy>%`A?W?xd`owQMJ8CO z)JPM|CdfP-@o;!oT9TBux@YO&Z`<o*4=u+?TGe5=s!Q^-8GG@4`83Ar_d2WPJ$u+{ zKxa!@mdKK2UrrZ79rZa4q0WVOoYJ3sh~OGf^BZ7t?&d3JuE5-)Y*3vHb!2f-ocz}D zjV3nk4Ca*=!S#l-Ah8f%@nGg!de@xS^33KnL&cF(=b&W+=M;9ohP`~-Cl(y-X5LBR zomr7HW7gB2G6xiW=zX_N)PGh-(0(j4wvS#W(Hw_j<^X)ePYxW%<4Mj-4CP$BU+3ff z9Fz7%*QqyJ|HvNU_|}=y*)b6f(oVv}Kl<2hvz|FFIAi~Gc%SO9q|Z8zWWCNsc>S$2 zP<iDb6c>&7%8~orOuISWz3QTJSVsoswZShQ_sX8qos~VxD|t6_`#uNlV-A@;Y`It) zjI<xp0ESM`>z2{I{*V7y9eVZCPuN9eb}rm?@V#njue#$sCPxQJZI5jopf9!m_g|Ai zj-weqc2Ik;z2xDaZ&Ee`w$(y+yWgOza;l?edrn!`p*kme_E6p>XP+tuvi;HwO$a7K ze6FpktQ?r+eUwLkbsWt+dT(#D_LkfxFNSbsqHdrf@TY#zJJBaRA*_y&D?~cP2vKr7 zjB<DKlCO3^y-QA|;`~4A)N-#4Sy*MedO0<a)*&<)EnK<Ao8`#s=$7XA1E($<#MLQ& zo&)QIZ5<D@sq0wN%eES6yMwm6#Yfn-r=Cro3_rS}>G*p%pvr6YC%e$6H_4?iX|!uA z-|``O^{N}M9C{m1_9Z{jLC}UPlXPJN+c9tE3_Rh43xdu({!5fI&&keFH-cXN5K9s5 z<&&lR`9g}JKsLZ%QDx7*_W^T<C83w;K<7>0z*y(D!jw<OGiV0a{%>+nQYWoW9UbGl z&c<FiSB}b8nHN{MU)Sub{2}yNzS6Di`;~TaVD!8^m>7S-xrNW)L9{EK(*|AXmw%kY zb6|9{q<EXI!XN(^Z&J-Kj3@1t@}SonoWI?p!G9zS*S0FD&;6mhWObD5Ojf6#2S=yb zAWvp1zqSv*B^@+)1IX#@x=p9%`=}@Cb7>(Ot<mCkILYM3Ye9kQ6G!6uWg|yJb<TmP z4sZ%^{A6F*STsc&JEoJ$G<%P_SzV{vTT!H8!utkvtBYoH(X&;KYYUtQa8^ic6%ah- z_0H-SEqQ*?WSz4pyqo-e17;cAmL@lw+x@-mA=yH&@l+Sjz?nhA<PnXHM2&~92EZat zzsUBDkDY<=u`?PRvgll!s#AkT=kPWgPCk|XQ{}(&FXGo~3}erhAhV~2!M3_0Tjt>2 zz0)|Jw4(<2e$dekSFGOzO|I-@yajhFZW=P!ii|q$R%BTr%zmDJLig#@a^QpBR!)s^ z>ra=io1ke|T;FuQJeST2|5hi`rQg4*?J8Lr`aOFfs?7bVz&84C`HKc5=}<-hUqGP0 zfB~dA4CQgsD$IpJCe0ycVII0JNAJ*_0E`Gy*6>=^ISq@MiwTTfh6Cs*98Tdb6?T;~ z=`yxv0ss6j{_^f`|J&c({Yqnr2MSPlSZ;Lo7%WxGg}(3j&OJP%Taxm^aq)JI=r1#< zG`Qc%??Ji?CS(7N@94dW;$**l3oF@Rp!1^lf-y=<wC9xI(0qQ~lg$MeHSk^Z0=6`> z62<m^9P4O__8IdNeE0+)VAQD+Dou?UIj6*yCw$5fY^1(deW<KPd7n3%`-5c*jdZ=x z(M=g0ureB=g`umyAKeMu<coJs3};Z|R;c}WlzV%jjGA*l$Jo&^a?mI#Ya@M}vc$HU z;P*UNvX@LKdms6XP8YE_a>U)P;luKw_r!^r)E7RP(NpEeGWM??_>~I2Bvt%Pt2m14 zRKGBldT^{v$mDjPR)Ti}uyU0OU4yku=egU-@xkxXuil+J8elUku5Q1jUqD|=Kb~)K z-J@%~T=&s*<^7IN-c!$R*#~?4%Gc-IUzq;zS6v$}0N90ZNj#HYVf{+CYw2V<DVO33 zyVBp{z5y#K$fS>+bvXOI=v=lN_}~8l3Z}{a7Wq(K>hHzpm6v{leZlpc8l5nSdLHgU zen`i;Kl$SM#s~Zttq*ZuY>HE-(c=EP+&_eM!C0E~likt)?wOwVccmGgGOIV248S_@ z4u+GjToX|F`we4s=(y$Fr_ZlzK;P8(dS@Y9xcZ#U(4mUx2`1|2U~ajVI$J)lt0Hwe z`^sjZZm%P#b+uwd{aNFvGq=V~7o}9$`q|T*8hfL*6+#`?1_b*<upgI4r$+57#c&+E zQ96HcU%%7Ip6EYW^o?COoB%q<zx&5drM&&s<6cS!KOOtRvEp>scn5?GH~>54k`tU$ z{kTr;vmfvto<`Fr`D|%!P<Eoa`?%%6<yB%{o3pZ3dOFCJyBXV;uYS69be)$`r#btw zci`S^qEUM7G2ZvurJNVDfaIQ=4|p@)Evu{3@~&4yZC`K)V?FOVm#F2<IZ_oe`@8r0 z<_K*@zS+XZ>$H=D<;meshA)D@rD*{+czD`^mdr($*8!>2e1{J$Q?^9d42gDvv-qaj zTZc@MIl^|ZQatGxKFSGt^X_#W3d;iZtfOBCv&7n*+?`JN{2}S|ilz8KuTHDk0W)?w zKl2OH3wyiOfup%s>GoKeYX8Vt=g}<iq+ecPF8FnPQnkt3GDMy0Let5d#qO1}L5%mE zi2bI+VXP>S&%un^3p8`+4DMKly#t?;@l}^kJwSJQ(Vz(3OSF^QSwfgTjt;Y$2M(P^ zt39jh?D5O`)5(<AQgi!)KQ-&JL1%4p9frp_;g%kIUC++7h^APdyguYOgGFwZ&6AtX z#?u^n9bIidesl`#E7X}t5PCMtvj+xZa^;JWV|qYW5+}OQIR41Cx*Dj}vyjb^#nq8Z zzlE(%g^8|TPVwq-GT-4_>DD!yw|bY)!AjWPa0a}SX~+!}r~&ljgU$h30<^)y=ooQQ z1g~0KO1L8~J47b<DDb@T0R!y8@DztmvIr0RH#?$|WQU}i<^@AJU+u{8Ba#KXB`)|^ zoD5gzclt9ES~@h`E@`jpx*sfXg6X<&xW78c5B)-T6~^+TVI?y*1@=rA=#xAANTFUS z@3=4T_(gEh^kz0QKhg4f&!f0{37%^>Zm`kEik<;SxQZPNdabkDZ_hft20zsC$(X1s zM|~077*16s$JKyvgwMUt4HwwMjiAEFXw42j;t!=LMDzCJhH8h|>EwoYxr6bfPUP95 zXI3|UEk3HQ=-fVk)sp2`by9!oz_jX(0}$77uC1tAR>$bq=_qHN*EzJ>#f8qQ6auEB zvuP3Zv1Q6{UbjrS!}T6zKObiopGDGrv$>WkTM^;4YF0CSDgRDdZe@%^7Vi<4jviZH zE0e5rUcF-NO}6TN2OR#k{l0I4;SC0#lJn<m1P5Dtq%JtvjBmD*o7{p}xs6nDWKtG0 z+%Ljw3!_2n9q_0e`pmwvnbBh)tXfoADazt1!$iH5A?oIQrgMW|q?%S?8KjmtN%=Z5 zi>8McIl_0<tA}y!JB+J7eR&uKqase~Q{jzZ+NWVT55@E`O?@26V^qgXK+w1mZa0yx zfu%TCk3BLA^9@g>Mfpm*3b)Ynbv>gebi*mFk<T&An8>$3#xi4?GBQXnThsop|MJgw zfA!b@Wdb*7N0AZ7VL=%|%@_q7IfNs0pBr33<i22G^54>Yr;kwaRJsbowRD4b?yqOR z=l+B*@$Y=0@9;Hxkc@_C9?`e_!ZchLyzd~&aKn4!WKm0pNQQ!0$&*@#9MC0<tKsPv zBgye<fXJ6IsI=G6GQJ#?PA;3H^z2=gDM!!J<!3d5W?6mc4r6g<O-~sbsredi`mmE3 z(=PD+@2l3<twvW}Q10GMsr?|}>6=O#t?maqT0YSsI!Si^`X#^d65o?~4bGf_^ja!F zu8uWcH$u4TcJdyg2#3r(Y0M^w!BgndrSN_)htklIWe5kOyqw(^#$bP515x<mitakP z7r$urM^2-%Ou&?8pTe(89!7#QC)6{!9-h#)&|pn;SGI4oF2Be=-|A!cfmog^!{O~b zxxd{F-<9T~|4?~_{@yRReZIkuK05UcVsX2^1>A0KIN^YQxB%(;PR|}E<0L@TyGM`g z(vcO2-_Z2n-e;Klnod1{tvnve=7MoieZ|eF252@QI7;0$+*AgyH^djs_&9PagM<?J zUB1KTH+~<4iI)#8$NrwQC;Lr4w=_!|hl7LD{ePE<{0sc{jgH8mo`)15dWbi5%wSh} zhBq#CRP7_xsd`gK_pLpl2DYT_5A+GQ%5211J!1nbom@j$%g@m~ZvD}JI-$mKq%2Xb z;g~b<>`_a^vITT}_&Jf;n1<UnYQB>wi@UGm!@2yVk<ZcMfTKa(ozuGdQoUKdRX9rP z=A>7E?BjV&Mo}?PS2=TOCXUs}HrAf))Ydw@!qSlJkd9t_g!gj?OMMQ`r<@Kml-fN` zfSKiUcvOx97vV{x^}T2DO9u{oBAXxurO&WLRyzB%eONgl2zm0T`#OZr+FScWr_Qe9 zs1sx0t_BX>oJ9izn?<Z`B`5nDIZ}J&N#uVBm)R_~^M%tm!)KP1&GvrWw>D>0M%ov8 zwhj;{h(hS;(GNH(8=VX9!9{UJJ{fF}c6-9eLwa_V>>XD2u9;kQLC48bQm@ERckuA& z5#OVeL&N#9GL-IpuS|O1GQFpj^Vj<ylYOvq^5~t}JSzdlTV-796Jg1aj@7|4$Y3Uv zzGxe^hZEnyrDO79#%xHDLP~c!Qh0Q!-%f;fxJn|bgbvK>y~`Z$?LjMp!3L+2s%!k8 zwJFJjv!_0|biNHLJZ{<IWjoM@PI90tKGM-j^lV9bY0&hoOrqCoKkln{4pjsFeNLp= z6?&isnR`)2+q)fY+U@PJt89vFb}4NOuYrucjt{;*AVg*Og48N4ZB|ST4=vNlz78In z57^rG&8DVTn?*-xAMM~em*n3)o`hd~LqU&L+fN0Vu91T!-;+VML7OohY?j;%J0DLQ z*MH&3jvkf=>>kI%nGrg5oUYr;pUBdgl69T1bfWv|M|u_5t*B5(=cf=s<xdXilwX}A z11)YUn6rQU%?qEj8;m&QjFwoq*+cxMd&-jCrHB10e`O=iXZJCDIqBlvyW9^3Jh!~U ze<%K7`tk5Rue$XR?ltJL{N)=@!9#vo5xg7vut^F+PgZn{E_RFMz9g$ort9j&S#F%s zD^huHRZQ}Oe`&`n@T3_&a9}L_;0{`F=pG!aXEdeAy{ahLt-f6KhP)DV)Rh*%%Biw} z@5~f~4nF!yK;B^j&+~XI`mz;@eRY{$4Q^?|>5pH#!N&I9zWV8T@5p`CV4HTP@b=a| zYgYG3r!7Az-q{fbdhTmCYY}$Zv4JFb)j|B?O&c1w$x5B;EQJWr-+J@g|7?l!vpTxH zAN}=zq?hbx^&lJgt^u*f1~ePl@jmmn&GOo|V0F;xaAvn^bDp#r_`cpYzdII_O)?3W zLDqMj_W!!~nZIp2iN#nBUEG0m^ljxEj&iZplNaGu&rfF)6H1*pqr0soFKd^6$aXt5 ze{aFbZmQwz!`_o^rAx9`*_0oG=!XI9)vtgZ9SQ4nB&?-XWYgVlR(?IJljZJnt}8ve z>pJOov*(9jPaLsti5DY<gTO{h1|uVNmIw8OI6B-Hg~*PK=qYN5Ay5gxU>IBv!&EBI z6B6aY5Sqg#*z+{sGap4|D8e6TMke-L7(=?5NQ4B-Y!<ry^1uAm-M{_&zu*1MU;T9z zLnW9yf{^i}@-U!>hKush3L<^H_k-C}lrj{%=kLNjd;p6^d4nY%EYhBb#h+(!(o6Im z&H`^=w=Cz$16c-7CG-alR5SL4r!vsR_sHvZge)zS?4ndB-z_h3A$TMl+K>5$0jxvY z8oUcPIjSVZ8TGN3%CZVeJal@^x@@C*ah8}ERnj4T+`Dj%h9AX@#t0>Ql;L5^8vH)w zZ@kpV<0~UELwnHyx3sHtQC%9#3RiJ9f;hl{k4Jcj(IAcM#^L0_if*5=(8(iOmr5S8 zPH)f_PWRK961dl3apKlU1b>na(J|hPNn!Y$6$d}u>Hd~Iajpxv^zh793%XGkz5p%H zq4`FX_&zJk;2D6*)+_!w^=LSCugKfA&RGe{24vSm-8}HfQ-VuRr1Kf=OMgMTV9<l3 z>*zW6;8s#M9K-Yt-^qt6K|`0M4<ACi-}jM|Lb&4m{{Hna?2?Bxq_=#@Zw*tjU%A~t ze8XQ_G#~!DF9IA8T<#z8uKbnoMG2Cmx$+EGfg@F-l7s2?BLC!(ufW>{EPKD}7V#kZ z@bWN23Gp``!QZ{y>G5bhVdy$(&hK^qFkGJH9KDm=vBN3(u}_QMSK1!Dqg$2s^jc-u zENb-w3-6k_d)w$Tom{=9;t65Sd5-^<W`PrJpBsJl`^4H~v%a-2YMznZT3{JVlWpr+ zBio$V8aQo=rI?!EEv+(Ko|F73S`1%3sdMXHx_Z7kVd^5n@xR|=)UzqVv?gZZ4!=h> zB`XV&ANv~5rF!<s{?hDTV0NH}8MFr6%m8jLlMK-vbtO;->bNypp6k33_^4_t$FpWY z>v-f*d}?%G-9KAs*cYSy&6vdt$AVJm)N6~MY+x?<R4|+SqI5e%G2M1@^OKf}A#yWX zrO{%)@13>^WgYTpT|1sJ`od{TPrfEY%ZH!5i1%bc2KH2y;_mJ1Us^ug9<ZDhvyMq> zwxxtCGqM*JqzzU)t+UL29B2R7Vax1v4A%)~|JtAYsSfM=xBt0zp_bw9bxYkp*xy<k z@$zM-iY6bc#yDYKOHuBX<FoE3*Os|?z0%tbVBvGvcjo#fJnDFf#sjDEWBZIP@7^-^ z<dv0-79GD5CwTAVG^<*c^i1cNtU{N*`RJG`|0m5*7?80fkK?I==xpeO>0IeJTB59D zYss%Y&h+S2r=-$nx@xH{S&=&rMw_4;yLP|;LXNLGqam9USe?O+_ZffCiCZIxzGcMh ziEozOiPH{-VXNLZSU~U461w?9V=#H%H<<FYnPmgf=-n%_z%!Usep?URkLPs3Aw>p> zcKB0zxXxc4X^6M_E1tCVI@y*B<HepjOCD9R)we3kWP}Jh7aTH}97?zLIJ)=l*l<a6 zmJ>JIN<SNb*lLWNb@JJ)cE4LjU)ikelFjz{Q3M9JvPL6)V6BOcqkNqvy?2O)+ib3x zVX|;I-KT7g*JF7d5nrQ{=&uVe-OLvVqV{nE1~)t$`1!fYfDHO5Cw317voqr{@sh#q zkA0QSjHI-q7qL*%gW~+|IhcX^b}tSME<Vs?y{Gd99>OE-z`ns5o*Qg<zvU~v`l~}u z2UkAf6n{fIz~~2gD+2muzv#<|!%u(U_~?vS1*21n*A0@oM^}WgUuV#<?8;Ic`-DD( zkG~@a@X%Fd#@0TmTD0M@^1sy)WqIr=`+I!7doat6%)uXDR7H998}A!<zzh0EVNFWU zR8sqf6nd^Rhu;^?+WuSz_f@AM|Jk3sy8E-g_*Jg}s&iUdd`>9#>#}L~-D=;qcRsSK zb=9-<rxWJc5A49_Pn~tn1RH1zAp0imm+Z->PGbF9M|7_bYNLoHksl4@r7v5}(7>`~ zz+Q``@);EL`Z=pH__ofIxbMA1)JR?VTxau3?ev@1@9zGyQ<s0!R*`odX7N6xI?taB zP^#1MyQSjMo+y%G5-*JJk7gGgQ9Nwvi&lFWfZb$QeE}!*<3EnW%VwU{M_&y97pkr& zg5U-(Te3Q#P?GU<xLb0VzJ%kl8?)QtH2{bwv>ZAPO-Nh)DYEE4dOh*ZB++wt5kYow zq7nn9K?K~_qfv1hW-7uUT-TLeTKSAHQxZ;(Ya^|cFW5S(8h{>_R=TUBwE<+dt9%O9 zOs;fmu%nZ5c-LO4b4F&<&L=g1fBpA=fA=r{=dbJV{zZ+S#<~VznBhpk!PqEHzXapL zR(f(Cg%^T$ya->1sGAut8M?&#xKz@^-pRX;SK*h?K?e3DKfKC&#b3YhYGj7H{3Hgy zstu;j<A5X&e}j1oN;(%i-PN$%csmA>y^#JiKp-0Z5%z`UDBJ-KvXHwOefX65-lJC| zu*wv!Cym~GYWT+y=-z4f;^WJfYrUR9xSTdG$tL?ZIaKyDt$Or~5B%)2#wNT%Q=l2Y zc+$|0vBEVx^lMr|@w>y9*%R;7R4-LX6@YpKs5EDJ+Z=I~$2CEPW4FQlCY(at_fI#j z%e}^Vqr0Q<#DfmjiSHMDas}9@%gA<WJf3|!hyeQYiT=@?tPSmzcR1uNfj>Nsk9g#C zq3Qx3n6i)wN3Bu$8;nDHxQcUs8lkW=P=$@ba=3k{YZY;*H2Puga}0`f@|^43({Fs^ z#V;JFp_kH~IBBkH(R=uw7uZuzu2gu#Px(jRxj#6*({R-%xx{f`3_|=4oh$1g#m^!C z;62hKH+jF~<rALk3dGxy?^T!2Ak7I+-5*?J#8e-c58*EGhKoZ8Kl+cHE*co?19vhz z1jpCm8IP9?{64&X_Zf^M`zy^Q6Tjyp=D__PcT%r`A^YKrw&n3$IrZ6q(qs}n3B~72 z&V?n(_cdgeV)ami`P;ky@xT68vxDzDaq(3hg!t892G<@ZdZ`Xu)>Nt07W4~O?a1Tm z3&#mkb;nH9mU~q|2Eud<bd>4GXC9dm>Kby=cZiM|QG1abVD-6<-H1=@mej7BlkJ*X zuDsHTe%HAOztQ%92P<f!vHDWJofaCsoQbc!a^Z0&@;V*UY0w>kRcA7#&t4kgw`A;V zoy+?itfzhMdmY2acb!7rvfHQOayXy*`nZ!VALnFqoY#B?$Bg6)hfziM*E&-=X!q55 zvVGnGC!B=Ob=;oSS$Xof4q=WBC*7$3<Mw$?cM^&6AWM9`YL-D&_-v*W<I&F9_fA{O z+@7&V!E9J!P6n&2gG)D*zcQjzbHL01Rt6P})N8w)Lj1KdcvjpGPn&&BUT=eab=V>& z&eD@)u|bV@(PePsu6^7&Rdol~iFeBJ7lQ`MDV#e^noOKdoiVpu_KTT^X0G47Zf|eP zlcmAa$6x+uyes#oIcnMabmZ&v7k3{jPMuP0KTGb)R4bwy8ay$p{G}7LzP3!eEQRMY zhzrMTd3^f4w<NJY9brqW4ffm9#;K$)-ZZdRG|_FdH0TcLW^(DNPHZ1`YHe6D!{gHi zCfEYA=$pwU^C+C|mBtcChqip}RUeiYll?UqEB#qjCj+mky7DeOg_|h~?dT$Z6BEkM z{%sOaCk(W}&C#}nN9S0btVV>UyX4?h>YbFGY)^;a*p{;FQkU<Wk>5;I@a+x!P}#ez z>N1e?KBty0tRon0+LUXl_Bko})B(K+Whj0p(WbxHu$Nyo-!=%dv1F*eMJv73F<)na zeW?>db~*-TZVjZ55y|6BmxpcRq|;x1n!3Q<-T_tWxA<`TC9`X=+P>a{bJ{gJmDX%| zF`V`JPr*`mj)<~%>}BbaR6f#)D`5KbturnKB^^)n2^%Y^@koEz+CxvaGdZrqHTuHU z^Xe;HWsCINm**aY$ES$Ji4Nb=_PalE%T{=Q8<do<Z1QF%l8JU8KKeULpXmwvP-NP( z$*gX5?&P!7*!G8~#XrlhbRd|4$l(qf`3JSX;G$!Xr+vf^-JNbJ+v4cPfh|vVFL>G% zdO-GPK}K=m8m*<WZH`6X%stcPgW5WM<F|zJ(s@LKzs@<hbdtRbj&MG)mBr7qMOLEx z)O&6JtXBv9SV#BgpF1V~PkZf8_g^aXN7-Y0Y^@gBs)T6w>Y(|G)eHUtf7+^?tyYS^ zAF^4C*S~=`-KKSCS#~-dtjAS~r~LgoxF0&C&uf3qc^6K?w}nKV%U7?B@JgX4(dhRp zTWKINdtx^DgTwn;dG-Fc@9uu<Q+xELe6QQu@V0%sZCKeLn1g7aRga!Wr$rDBA`EHm zD|M<K&9>3@(lvngxc<QN1|)TIw{JZ=psiH6(tgbD8qh=IR<{H$&57^IJ)T$Jg1gl( za0PdDGI7uweV(Mda+h}H$u}<l_R^Pyp7dCKPhKTZcZB`1D}IhLZ)D}BNJC2DC;`Pp zWWwKUDzy>N6}eNQJ(M2SllC~#3zsf|fmz0V2j~zynhva!mNI4}V<;_*fN1MSF3S=o zh;UddZq$_lv9|niN9_OA-~Qd*-~IhRG>u+|ET`kXf*a!zWaK~UztMegfs3~g1XCp^ z?-M4eJHpm1Al>sHyAIC;?otr0<$sVtu(&J!_kWLk4lIrbvQ{w%?Z6uWhnQ6iBc4|$ ze0dTx>~ODo_j}6h(ByjuCXwanJa`~G1}Na^1Kbqw81ZOMc{sn*h2*{yLUaBKn4#SA zl`8$S904a_ZmB`?WI&YJqn7*yCGyh?ym?~L6z=FPoj(eVt|~qnd@TQq++yQ(fzb}O z3RY5$WSI^>^lEUFSy))q^dR*guw@@YS%MLsGER>K&-e&0-^23J$gKhe0L;ae?MD59 z9qluskPH@hsO~~vb$~OgG2arK#Q{=4KWnJ`Dw|~8?Y9pQ<hZNf{grR>5Qm4Zm3#54 zZU^(ieO+m8Ne4V?7JtDxiSc*te9L#@ue8EW{Au{2=A!L;w%t7pmuDR;{C2^8YF828 zaD2xH?}gj1G60W}T>e|0r3;p#b|K}EbCZ|2Z}ds@J$xDZ3e+FuIk=^`(!2j%*?=pZ zYqV9)b9xIu_EZ_EYfG}P3m2#-&*A3}VI6+2aK8_)>-o@m=nzIu*LCn7nlFA1{)-O{ zNu85Gb10B$djZE6+d?=MPNT$6RlE9F!<e&N-)oM$PQ=HSFW<d1<5Ri{f-PYK9H_K+ zV|Ty(m%-Z}pz`1Mfn@q_<wXs**)j`;HIyso8qRe-d4zc$d;h4qT-~>tM2E)=W;cP# zNr@MGi|)-58o*6grgLmZVJe0dK!)JV0?)R@Yt%*y$A>AX%qFCo`*_W3h=&}vQdmOC z_MFaoUANEgS|-+sm^mY@IlKGRfl6QMjBydaWFO6ZeX28M$th<|z2vNTcm0!}e$GKE zO}xKtzm%0CpX(4gylVC)nc4sOxenc@&&h!!r>%?L*>Joiio}qES(&wjjyx?()!ynP z=ma=~=RTgTaw0mf`1zWwb(9=P!eS~ndoc|h?sVPc&Z+)TM^(9RW-U{x<|@;5rj@N% zTO`-|z2j;792)?5WG0sU!}X-Sr(Zik8$ESnyU(7}r(iii>jnEBjE_5Y*(iIRs1I+F z8@=jX%JH*TWK=d^8W7mt=y+%Q&7_#kP{#JgnSo)a&F&igcc9HqA^mbXsAkZ2DziG0 z%={@&2T9@e{!@b!>C%^Ey`|M?O!vtB*gBmYPG9vW5b92iTwyumg>7KIJnN{SH$2+S zvkcl0L;0h1z6M<gh%`>9wGURukpJRvtJBGYpKj(vr$ehN@oms!OO)f$l5V;^dBm>; z-RiHy&)%E)>UZzpto($1ERW6rTcJJI(cx6?tqB~}0C7@db37WXvNT-XjEqx`(X2y% zItb|lUQ2iU6?v1Z{QadSmHFX$d+ehvp_M;8(P0)BjXfrx^nz|sw55xj=wp-QazJGz zoq&~F{8abw5`o3)=Ah5OK=3M8UeIQ=x*r|!QR>1Ghemp+J`Z8Ii|l#d%C39quQq4* z3yTgs^>LwVergG3g9ER+&Bq9KXv&4g6YqJtw~+I7%0t>>B-nNCCj<0+3kT=G8svqa zcJ87{(D(a8=ddzzQM0({-z3vuDL?oSPPgN}+p#E1*Ze>H7jA-Kx-(mUb$0Usrz_=6 zDfU*1^38X-kuX0hp!^|#(6MS1K9d*o)soKD0Y__68Sg-xay$gdyBXLXO|Z!SKAZQb zP8_<GppIG~1|tuw{Iu-YiS=)aj)i^93UA`4nUu#3dOd&D>BDvAe*W?0-Jkr~k9R-* z{G!(fy|{bvtCx3=e#pw3aL9%m$b!&&!%fCGOc0^;nhZ98iyFMfr@<sT3h$HXaTM~- zDQaYiy*G$fg6v85PrFswPaeU-|Mu8t!yj4QqnXNfXcHgTfqvA0bEBx~WV#)kFWFCT zNcd2v_Knk*I}Gt-Lit$ve5#@uJUtU7Xw%V;rGVZyP?=R;`JB}(>O#oVAD!F#I`?Lx z*}5rAcDs&QAFZFFt=$U0`e(ptGw$)LE{z9eS3+g6df0swjE0h}%%;QfzP@L1Qj3_* zu<a6b&4w1v=Xh907J2)s2NH2t0T9j}Q?3y=>`RJxgdlFn`o8JV3UG!kK`|~j{6o5e zji?cgxe;3C4A~S_Mht{^7?wFG8Hm*3R!N3AJi!4&!!pal0cvSir!D`@Km515zxtcM z2~-VN4c$4o;s^zv$!Hi<998Gy!f#jn-Y7Z0DeHr5QhdAcw74?(1svHb@o)(#;NkNM zXZhl#U!RB9k;Tb3VA2dS<v5jHnIQJUp`yBGP$?{>NU^@bE_(N+<D5xHX(_Dz2#0tM zRZ1VW+^Co^8l}mIN8cKp;C#tpAtU>-EIXiNXX&z$+l)e$!}~5BkYf4M{o@*;(K>9% z9Nh<Iyeaq1D$}CxI&;YrttfR`E4CR2@+1`ommrQV;VT?)vA#Eb+J1{t%@L6I#?Kn= z_@zhNGmNLwJ-mq3M+I9YVvzeYa6)Xvgoe=?-jzdm7gv1fzFqaR*8r1YAmSmXsb8;r z(afF`<)SZOhsx4bj>oY&U}V*}D1S|ICUQ8Z7ZHjiM9~ZUo$@~p^JrW=dc!d|3ph-6 zJ01(aE@>_qT)K4WoHWADb8?KhhjHIw9Dongm2+w3_a}v4{}+r4A2?V2!RONUOBM&R z6eoPozLbm5ZvoPLzs@M)g-gnF;lXwC1p|GB{UMwae$tZVq2x+;^3WL#?UA*x@1LXR z*MJH*2iGCsJG_%O3MBc4N7@7Tgp<#8U2%TTb>+Q1oyTPA`K0l!rr)A=w?-!zmL<A? zqobVqv-+cYUyZryhEA2`p&Z{VL1|dmkOXuyCN;=rv7g#+8@!zen|-$D$o^C#+By|F z)6Y6R_iIkJ{gx8fjhUm*58W#oYM>vtH_9H$z2c0ms=?mCXY}!RA9+Ph9i<S}$ky4) zQD76@YZtU{oC2$Wo;0i4O-)hovU7D04&5~?xUtXlbIZus38y2Qt<+#YsXz9t4qfYV z@16(q{%!An{a^p{?(YBnf9}5grp_)$I~!SdubIaj4IPf?gM04+&PKM`Yo~0o+3z~A zNx6M#w)9yYR)_yR?*z`r(e~zTI`{Ndr&^xZ5p58xJlEkSXFG|`W5AO+`)nY>lG+c^ zYN}}~J+h-_kXaBjl<zDx-e7|=K6`+5wm2>``IX0JSrQkW5zg5nzLjB}{145xZXhuy z)2!rH3FRE=tezD^(K$V;Op~A4x-a3nzc(A6kaJ3PqCdTR(_vW6E*lVN`S;tFJG-ZY zI?KQG-pHMfnv8VftSWk*GxwtRPI}KWvp-v^V~?lgzZvNC!QkutO9KQkQT|UkU?0s! z)&>}URVZe>>GPvHU1lfQUbF6;QJvTOaH2)$@=NePX)}U#e33vH4I-Jq%|_>wfOk37 z?5nyuXSFoiwX4mN$1JY;1Lw*r*ajN<ncVHW`<Nc0XZ1DMvlYk}mW;sv;n~aLbt2E~ zrxTUwmkzGlWUxgWV{m01@bvIm`A$c-E^-dLS>c42-0O&D$Gki9OEdZK(j9oMI0$T) zwx;;e<C#oyl%tmpuhSWfwNu)z%7C8hoI3p(ZR>c`i}KB1Q17ED4u?<r<qIBvq0*UL zH^aroF5X~6`J?@PynjGn`N{pf%Iv^2NEfw(jgO^K#`ukTKIaDKi$fb4*mA6{Uf`3B z>A57kW`hgB<E~_la_RUSI6+%XtUNFKyjf^MEZ;5X;=#CV{P8i0m*#?B`~^eW>)x+4 z=U0rl3l@sMKVNB&S{&@c47OE4moH$WZ8}@t!^?qT@CWR@N~n5NH;d&@kNU3cOhSF_ z_;>7)<NQkSQx3i*sn8jMT_+Hoeb4|fzSrg#sA_#m$7bHr4e2H^_n4yb;oQJ#0qCe9 z8E*PS_*hY|u(#8XSE7)Ywrie<Y&y$zaJ^pVhxXgP%m)A14DPGm^ZlYu?(;gh&pLSO zN%vok`exrh*WP`guj#yl+Gg%TY_-8w3BlPwn!(%2u=EBaRTTT}i9tJQ70Jgsq+7KB zZtcs5+84C#l;+ZXvUQ;uSp#$Q|M|-&cRxM<F}k%C*}3{b&wll1`Rct}yLRc*Z)<1E z<AnX!b;4hl@3rUZ2mP~(bi7YNb-dwHT2b1n1m(0>c!gV8dS)xEY;mgdX)m&cg_*%| z&c*X)dhc7=HCx|G9(Fr)<sX36akt7-P4T^QQ1m@sdd_ytKffh8*wdTR?OHZ<iyUb| zdHvns+){n}c`|+Ok&bb~mwYwgq?z)GA5kfx;1X~4swdCuv=kriE=FC$K(W7n4g)bA z1E9fot4pQtxsQv1y?%)r^Gho_2^qo1&?kGts$t$a^>_dDPj~<L>tEl!s-Qo0N|{cB zktKqhAa3^*eKZY0#;aejhCo<2pb2Yu4;>rvT44zNexd24?)w&T@p~B@g)8iO_B$hf z`xXB%4#X>sd@i$pF3$1xu-xEDcfyZxJB>};fGtAh>wa(sOL~n`I0L<O84%q(oOwUh z4rD3WieOrI;Bb8I3$zSt2aToZM*b~hdr#@B<U1BVXUAyII=WRDWqn}cL23GiJB%KD zBKF9-$`y`7<%z=LoCTFA{Wvt^iz;w!4!l#zG|s^YCSA&QbRW)eExmgcQk^U;C`U#k z10mAOj{<3wjbCy(Fx<Py@M?@NJwL`ly6947@sfs?ngf5}8!<gq>pUND2d4cb8i9>c zsSC?<;^16R8I&iZ?z(=J_ZgL=Z=MeQw`9?Cz!)h7002M$Nkl<Z_z-@DO)r-Yf8xbX zB>R<48lR)53-0SAB#Xhg{a&#Tf5p2l*zT{e-HUT`yDs^9ywdrtRDuz2E4yeU8|8Gs zAKAzR*yvV9U<h=NR?pxZx=+mSeqZUY(DQr)as}Rge;3w~VO4Ip@cYMjmIuu5@y8zg zE-dkfUZ^gaT))B&oWsjQeuTRoriBY#C;a@L@A6;LFP}Wqy&^f`WStMQvj6{ByZ2^2 za_zqFo7|gs&h1>JBPo(B%W=8Nl{oMJ-J~j2jx1T{oSEUBo6Ps~!}D;cvGY$VO+LH3 z(ZIsGVPP!*jn+Q(>zoKqrx^^()Ywx?Jm0l(#;5z2oAsIfj^BB+oB2BL;0CAnjHch& z?TmExB*#AZ+kc_pL${!<az=NAv}I!%mpR5Z-!O8WSxMP@e@PJ6?3>j;kCQcrJ^!Zf z3$~d@J63+|^9-NOHiz500!iQB-Lle(Kk5C@C*OQ`aCrK>WwbdSImz2)xM0vivJ;eP z)$C*Ra?rM1xo?ISDBK0_u7K%byX`)F_2bR`fB)|{pZ@8eZ*Knl=LKmWW6tZ3%}mBS zuHD`}jIY|#+i3il{d^NWRGBMn(D1&c%kQ(XX7=uz*?Umn^8W5cvy$<wy3HJLXpEYB zwd5>oq<icvTh2BFk7Jm#)U@`nFCqTcj)HA@nL&fH&4zK{_o*TdPH^eL94SFkJOR&p zt7n6k>LS;0v3&JmJ5BRkKD}=sAQ^gPq72C-UUptEmtgVTV8;7o{`hgzzYRWo>^qQe z1Zc_Z?W^Qfuv?rLoo%|({pVmmw}W<iCg{_KpXNk`-t^xN$7Vk_;~o4*(I(GU8-(NZ zIp(e{kU@BGB)2p;?m$)0!vW<eKf%)m7R)l6HRrtTd%txg+jylm!eJ9^uH%V=8$3>) zr|&&Du1N*l;Eow}o5DQI@q~xAvsFgOyyyZ!&<S|AJ<RZPO%_{TnHRTrOVjnOzQX`K zNV4l;qU(M9xohCSfJ%>ojc3*0vuf?02Ga@RLbX)=XekNU>aDGQ3+kNi@HRLkApX=0 zeBs7u)b~5!x1Iip8_ale`UrP9!|5;Gv}w))#qgNkM*o(0mR|sL-AoQ1HkX8LS#zfG z_Tao#YubE10ORRjBuu9!i*U+XCY#_1a>H$Ms(jgo+stAe=xj?U!d+Q#)O~ym_4P|1 z)PoXynhr~cf<_Z?|G*5(gHtfj|F!*PKhMMrjE_t@og-S+dti794}Z_~u7<R$gQNV{ z-$^~`*E*$<nVI(m-@{mHh+Gck)$ygSs++yObP#+s1MrTkA3nXP*f?K)eessEn`0^; zjWB#>S9NmJ4$Z6z{61-9m-<fCXeg<63Vv)D&#wL1b>g8M7g}RCnO3X!e>dBYu1K<) z<M1QQ07`6kE#oEA7;xm#HS0|g)+VY`rTy(7uYB6_qRB>g&tD4Othni0xos}>?e{Ow z3~s^g!<H&H+IaK1cXK~my4$kmhQk(&S-oSWiI$RLXUhsOLxgR8^eA16XtSGqWO{9N z2E%9RzRiH|n{EBrY%4n_;Jx*|U7scjM}seX-TP*#fBvzr99W9X=2rem%avc$e?4m> z-iOa#+&upFyPJo_Kvt!E_~YxFPX)Ih%Kt8Wey%V4vCRR04v%;EP(QLhl-{!4;iWHS zqqd<VJ@0;gHarO~{C%63?{6b2dd5y^?~D2BJ0A&jfe+t@(a__yX|LOzUMCUM7OA)W z6gm+$HE}^9TuipR*n`sh&j&WBeLj8HIk}Ri5{qIgd;EP$@NbXa9hWV`7t(~j4l`mk zTxp(DD2;l}{d#{XcXf^!fdwp;{o?%BSzOCs8xCtBaJt^Fju9RJ%nq)O!$>7>%RS;P z`$W-r(!Hf;?>oQv;fI_5^k4pun}7HZ{~@Jg;6Ju}mH<$N@XB>%NgH^97(IdnuEE#G z3_;mOi)z362Zw)~`@s1^A0Cxwyt<qRuL`7JI|B4NuK9Lzxpyt^^|vzJE8+T#@*XUd zKQJ_6xE(r&LuGn+cqzO4sLc*_ofDOV0q6<h%bHSO>m1F&W8f+M@C7<qGNN{sd-C~N z%d7gtP)j8?+B6(%_R(f@6+iE>-S?iGj!Pfqm~P>df5{w8@ZQpBx;ea;RqpcRXS!J4 zqf_vN%;_+V#IkH;{57xh^9JhBgg=B@vGnS6>M??20|({%=lH^d@vGG8l6IVulLtQr z>e@c&ZU!L)m)}Et<xU6;YVInIH#xVQ&8|17z>wfYc_+&ZmnCdF!vE?JorFtr`RVO& zy3~({qwkXOJj<jEE~Xw{^tY=+&q>5OICQ@J)@Hiiz|(l(*|p5U?aHIU`2XpTI<D;k zJ+8l|@!)%r2RbhLbgll#F<PcW*VH4=<Ak0xB%$>}+AkUZKU`h;ay<j_^>ufn0Ug)F zbM!e<mpzx}xaRZxisR+c<be(_@kXAj9IoXDM2-si9sV8Io?T&nozL~!VLDlfZo*4h zZ6clK;G2Q8Ec7n@H0XBMXl<(1yRfzKO4-E7dz6C@0NY(a;oZi;2!#a|b-H_1Ap3k5 zd^5NWg=KqM9$OImxenOu--GP>V-B@hw93-a4UXnW-QIG-dS6KgnR8IsyWsXQ2QTMg z?@bnX`{v+%`v<&j2j4gS;AeU4c*~Bpaggu9es1>n^ZS;1<*0nlE}Gr_EYPj3-kV*! zIE^+c$vw&0$ax6%!+xLM1o!oumMs5Vu-m&(f9g{Zy{~*<pj$=8<O@)2^hlq*zhqf# zfWmdNSlN~jY(~HBhtTu;47B`lF?*Za)U5M^=Rf3NJ->OA1M#eHEIxkzO*`K|+sv)+ z9}>pw_@%Ek3+G+2PmSU~j8Ejjd9UURJsgv4c((hl4Wk5hf<}FdcZH`nmGiB`{>1b8 zS~&JIw($NFo^??W{J8-H`#QXDcJ~9jJlxaouGNR%Y*QKmjiZ|dB39l!Fhg0{vLv6^ zy-U_7g>v?8%_Q`kLRDq>Sr!<d>IZxtNjtzlv#=lb9&fYh&5%6J`NUt#s;37PHk-%U z+^T~HJl<3fed3r6hIfc7<6Uq;<tAw&lD_3%cW7_=sm|eG#nMuHD1h_Mo!&ruc-QQO zcTodZFd2VpH+Z^@T$)`WQ?tVh`YXRdm!9L#{1#k_Chr~#ke}vk+Yn2jH(Xawx{JMV zstxT^Rh1W<e(b@g_yJdC%C%rq-@45p!AWLdaSJW&_1Pxh2feLNm*0E0AHq$L%*aMr zG&cKM+qq9JdmSvgPM|0(<=6MOA04#P0?!PHFGz36{bX6H*<`rktuiYX{4)>~@1le5 z#%YQ}g@z+|59${y86DAG8D-geq|lMHqqJZSE?9wpe{d4*<hwzf@(QpQP~d%e=sQ@` z+3ZhXf_6=>-tOTr+p#NY^g<`ZKRNe9s-#K|DdqIxHY;*nHT?#Bbyo6}E&bSQ^>l;Y zrRndK`K1omj+5W>^X!@~D0N)#PrbjC-@{-1p-aclIb|bke2n7JqD_%4ZO9_8JqXzL zb&d4&N$ujX0Jq|ggC*eDYC*WMwUsj~yXG`LUvU0{r#4d^gC1?k@c1Rl#pi5+fRMCi z2b5#$`lo*&cY_>e8uvbK_}rx!XM!bI<>wz;Do?xUm-_J8YXSQ#Pq^Aw<8c9|Z{*t8 z>6`XE`0h8~-aIY9y=|4vZJ!Qm<gH)l>~PB`!Z<FGQGLZ-uTO3uE1Pzo@2d?wuNr-m z395JXfBbKG3=CNv;uVDt*-`^=_sz8KlXl}vII@G4*N1+n4gUON8%h1xF8r1Cj_i|` zPCxth#m)03`ksCB{mrA7->e^F>)vF$-}miu-`)Mxj{0_5{;5s<{?ukvKV|d8O_nV0 zecpJ>wyx2rkBTKnNgG&;&uy77ZRm0~<<VaIS;MMrCFA;PlT2{i`}l!)AKdjt#1=g5 z{{SU}<WnAYNL%gk_>!2y<vgKtkeU7^+k_U3<JU@K3(5}3^6me8<AbvY|MsY-q{x*0 zG;V}47$;5ozzwJ?a4F)KhCY<b-?Qm4GD1YqbA@pft8%3;Exa$3&S)<!z&#$*1j3oa z@}l)ZkP0fq$$8XLGv9NS^!@LDck_?`=|A24=CA$`b8WTVE@^cT^%|9BXk&8uw#h=} zK@0rS1zt0TXvghvSfdY*!|wh<!p-XM{MB*j>2ZiNgoh{R{?{~rRqWvOReohhXLVi6 z$$$8gP%#GHHOy<e^R?U(#~Wn?f6*ELyXg_dQvT3#c9J_zD5n-&+IFQu-feduPRgT6 zuBJVTk?VYOielPE=B?2;f_Iz6@tFe~o^0pkWN>(KIxtJ%R5jx>a|4}fQU__QMdM*| z3ZIS2sI%jY&>Y=ZV;Nd_eV!-gN<=U6&_agEavfY*I4bA;B2<w7;mhu-kPZNL<^LMk z0lmNYa(-^%TRoS`$A9o}sC;1H8C;f%cj0pa^?0HxS^BfQN?zbIXh+^^Aq5zA-E%yt z$$iNy{aW7hBfE7a@$j6d+dcawuWNM#CtwHO(60Q@{&F53WxV1B#sw4*I|jK#dF8vF zJ-p&}a$f$P>bvQ}^#O3bxMaGPMboKjd{~_rM}8hixFB)>Eq|=Oq{0Wzt7O-^S4#S7 z^Y_R~xs$q!J^kfgotN|>b*``U{&G%MQzdnub~>n)frs`$U+N2t8C{Vm?=SG=zrs7$ zWed$K9n!w=T3)|PdC#uLHSPKc497X+=tU2f)?E(<_ma+m;IM$tp}FM@*KQ3Ka%C-9 z;?!6U^u8HQ0f%L521+^e<Yeinj(a2K<=w!gz$qTsQCZnf1)IJX__5BHqpQtsQ<|2( z-hYTm7@EWXpm$oIzc7lNGv18fLk@cF_C<E3EkRnI_4Cc!KmB;~?#CaCg9|EhBHs3X z=i7p(_l;y*wtSW)BB(&N0L`en*}eN`ud-{6LO0WBW1~8jW}jNEqJN1V152Eh&jq&+ z3Z6gs{LQOB-@N~+-_OlF2LHAo%K2RZulGugI<vD$yMO-n3n%g)pF6wuWU?p_Ru?gC ziFRaDk_Uq0XUz~7;63j5@%wL^W%%vQ-OCr-jO!g|J>`8|AnZATS?Od0LDHK%;wzhI zU>IF&AwKFo;j)bftJ|hk6ht4xf$JvN;k&>wT6k%}`OrYZ`(_5n>_a?BNXde}=a?1{ z(LEa%c|Uo}Ki9XW7c?pmHX*CasP=4l1AqE}+Z>p-r&{0MgUx(=N*UNmvkOlw=Qdc7 zL-{WH-nO~Qr_bq)z%9H5jnh*V#Cvr4j%-~+{gnA8D-YV#r5{Z9PHlDWvpM1I^Btd} z`@9=o`EX`e&0K6RkZdXk)oLZqF+F{gyv;~%RySHTX-=;}<JcLDB+!L-tI2{rUi**! zFM(EgZ|QdMy$-~ud0IKLm;}P%4E83AU{DKu-o`-Hc~%d}dHNX+u^<_I@3Z^fyuJhD z>6ySmV95zLTfZHrdw==po&gerL8%_cH5z<k%X`=3({RD7;FJ%~kFz<+MyK|FWUMxJ z&U2Dpy=~m4EcmoOil^&z*e>Q<qN<KE81N!be(30pa<s2!%eE{~4%YNL9(zXS8<4KZ zdd%q^8Ibrn%-miB-37(Ls+#G%^7u4=r%UpOKHfO4{cON@EPGd@NnY1z?mE#Vl5u{R zD{>@(GbFj(GMCrW&hnJJdJyEkgu}Cw;M(!^d3Z1N{JB1ZpPwSbshjIF=h>ooJ->JO zgadpa-}%bZQ)6Z6cpXFQ9p>BbTer3QCPE8zOQUOD3vy8@KwU7*2j`OrG{MKC3k_&T zzWdRk-b?$%k!~rY+<UI=ZE3j_566#qq~TSC@lich4i`oaF4E9z;EL{(?|joL2G6RY zr?oqQvdCGmYd7JS&E|gd!#8d6#0Ix4xghthncYVXl0JUftZA=JfW4XKDz<SU23XZ{ zXSVs#n+9PU{AvG+2T!wCZyHQ0s9k%ialC8r%j+fYUa_NAC^bVHcWu1q?GMC1YLy26 z_H}uF6zKlkE13o1Pg~jZ;)j>LEBxKfqi?^tdGdYdaQa+aWSR2o`n}KfLyelXYkglv zc-4$<`#}8E{m<d>E`IssB{@y5$=2#BGqL2rhtxu?vdA)i8ECLb-5}|fEN2U~?=!i0 z^z+SYOR^2_K4?&}L9=YIfOi3PbnyYE-_x$xh3DFM`KO!Cbh5LwrT171oHR2MYnNdT z`>g=*q&#HN<z&#`|KXTw2=1<pL5?Y1XBGNg?*RgD8r?NT<rI}G)K5dAMDUM-$}RU` z4BLh8DS<Ocl^=3lSGq<wpi@LSJXgOUbwSaEqA@F`S%UV5zxkV+zxvz1Z9|Nfc=cA4 zjyk_=4BN=iaM5s&;ZdbvW;9{)>VYR5+;?3)P(S%lhL!-Sp8z_pmkhVx%3aEXEf;9J zMnjE2nGGVq@50yXbN65?#|V9S-o1jy=xto$Vw?_ak5^W<I+N?DhZ)eZAIg>I5UnmF zMgHMI_3Rxtd`~8Oe`1{#qs6r?Z^9f_M(vsb5J!7Y$t;8=%8$(U^z3mh<%wNG>+o#8 z;e+=3_OX}LgQIh`2}-_D2qg^`l4b0ABT8_@$1gI6e>h@$a;n<!D?{~=;TIi(j|8~x z-@(^irTeF$bf@D{U1zB}#lZo~1%CM_UB)XkIAj5)OB(HJQU(vlnR6bG!>{~n(CO!K z1gf`Zt3uhXIo&h3HCKIre5dXU4e*3R;KrgZi3od!K=<JM&yK4;U7vlO4@hwFGzJ_{ zOACG#O*b#F>7e8A!d19cR?#cW!9p9Dm-BL7aFcd^rJjP5N`HcOc$M$*rTj0nU3iOl znfIXlcrdd2b0Obp@|EqN+@m9x;dv=eb?hvty!;2QQ@IE0T2E;X%v!cX+m|$t`VIE= zyaYH`V1{G4_XltM9Ot~s#*ay$N1SL5m|Q16I9*5o(7;>QgL3}3zRHL$UGceQVI#TN z>cEzo^PvY6veh1BR&N)e(^F#FyO}X+t0*e{DCK)*kgK+8$K5AgKaQbKOTRD3`<P>{ z?3S!WKZ|)}q77(w+*%E_rLY8^Gyb93)Q@f8<lRhzmzE`e>N5^@+_kg%xKa9D@Ai5Z z(>MAcEEp+@ss4f^ZM9j*kAME-&Fg>qr<)&JKK!9i*yM=^r%tiFe%iFv6`X|6^$$LY z^18tDeVzYpn~gjaNIv~`4$Ph9vISJ1qjBsB2cz*Ehx?y@T7diJ=O1rg^)Bw)b}jx` z(D$%LEI1TA3jpv<KePb1@^-9dU-21l@%=0}CK7EVe3Q2k@x9xX4Yt(t;iHV@&jr$K zXFJ_LYEWRiQ@?ISP5ECNv9IQr-+p`ZG2Ts&1bBHzX4EXF+xyH<TiR9-|G5DJBl#E^ ziPN7s|KS`G*=({-4`!6m(m+HTJ9>9jAj2{7-q?GAeH%_0s8|S_ttb1t^n;?!o>wMv zvNh?0%?Qzy9z4tLXY~@14WRm@5!m7Lgk4WcA6v3am+3TG1<YnkI5kb0HoI7`t*=V% z_J**_@&+Z+2W`h}t!DV98I7$32nn;6=reCgFYnB#c4qU)OJJy5GRU&NH%z?y%;7U5 z%V9UWYF78O;o4R0#{1f^j<OB(tWQn2+X$v|b^;{_0rG;y23$5+4Nmn5@C=B&>%BX= z@xmudN@J^hZs&bYDLx#VP=OBmBJ=tdGx{x0=O3Xg0#@hjyJy-WIRtzCU%2S^1iAV% zgVgMbHnl#ev^l=%uJ{67p;DhMIIkRftJ|!v;1zAhM>=PLC)vICE@5)S<97{+yh%?j zuU>#2<;Fz}TwLGP-RHW>n|m<4PJf=x!#jBF$#x>go9ZaF@?n=RGyKx`1xTc8B}q7* z09C#tQ@UX08wcS{0DPR2H;vQ)m5-O|Q@20bGMylAvT=-8UB^0VwO^`JsdG4QZ;*H$ zM}r!F1~6S`#uP#uIbO;uNh=J7t8bg)bzK$-=c)Rlp*e@$pY#Jq3f{|pbkn&z?3zNr z>d>R!7?hsI6S{M`51aD9`M?V6;XWNK?UX-3tyMR^fYJo$CO00ZGi--F7tG>YfoV^N z&G^Hrd>fb<9P&qdbh3w>n~wEorLzbQd9;rO((F&|m>pQVCYxZ=QMzoIG+3%y>xvgx z4u<sc`FhVr46fHUTG5hyIiJq58DD){X^#tRpT01QTb*qX_{e5`1-ZA)=swVA^xA}1 z_Nq908T<m>t)A#L6EUw<5)Ye2U2qGh^zglv5w$fdXAEZ9wcaZ^R>kO_Oc)seUqGP0 zIJ--37B88Fe*LCRq*}84bKg`8a&b;ptYy`=-?yr#PaO$#AN3l}gZhUx+Kl9FcJp&9 zo^A>}-`9V<`sww}kL|epV|M0MZTWrrU<UTgvPSdpOK!=-;MY8Mwy&Rdt8I|UHbhL$ zY@?N(cxpC%dYrswuiGi#eiUA#=*jedabPNJP;dS<SZu|_9PHrF|B)7)ty(0-sRcdh zdN*(^Lpre2@LHxL^BxVUJ$3WTaX00vV!Ey}_b2USnjz>R(3;Widj$NPt5eUO_PE2J zgIt_kL%YIAk}D_I%DU)K_xT+H4)hW+vF94xmgiDhhAYA`_z!>mhnxTWU;azM?qAmc zViu!riCK)c6D8&-3vWgW9x8I4Q7BDgxZ<L&V}wo~xOujb15(}pi!mA9mG6AOYETFM zU|;IEUI!7h@}jAK(Q>U<JrlgT`VCKsj_&ttml`u#PWr#eN3B%vpL307DE9Xl>0`hI zS)QDC<K%@)2EQO+4Yoq+K-W3~IAlcX>eg5}61h23+A_?su%qfzOAd3)HrkT`q^ui^ z3lK%6(;Nv5KO^cXJBKp7Cj&(F|Cn^Nu;%4ezdSw9ZiXWrfL}KkUM&b!IC-O8U7Qkt zJ>xvyMW0bS^}(j69dN@9w4XYHQgsK`H2{@a9{5O`jN~gx`tYglgGan#9D2-tdzZqf zpJyL)^iD%hj;a{M_@M0E;w79v7uvc(CJyuuKNv$O1~*)$51w?5mMzhm@u|+8K>(vd z@OSRNx?|&!Kc=}So}SNXkY~vUHXU^9`F>qr_0RpaesEmFZ|y-sCD+kk;Pq(tGhSp? z4*5&|3NPh4N}L{zzAGO}uh7KQ89ZhE9EYEm`^z)=)uc``JWmf^RONc_YR8Z~z^`<! zq8=VND>Po9Z4N`v)+uo6daNAhPg{4;S#OlBuCAr}dn9|3<(-YAkEf>5N~d>JNF84v zU)$@YhkInM-h=zmdWm1lihO1t*XSy9(5!-jNX~9Jup=*X1io*%*2@O6o<C{XRvAB; zDK)!Su=vhrU>Z5TE0FST*7%8L0ZERod$T|p=uvC4sr#1xzWe#l&91(k!@U3{z6re6 zv1Mm$Y^QUT|J^GNYJkkfzW#CVbedKBY(}}D^Hss_&z(Os%etB53yauuG|wxtsY7_B znT>SkU_9u3UIAr6;FFdFzxeLk92yQoj<52{h4=mI0(rBS1y5#;Uki9SD%I`NN^GgY zK90RU)P_*Ed82#JF~?!=DMuTA3kb`$WuvMfAJyzV$Ii2nIdx{wAI87i2hHwP<eqcX z$p0S;<R9jUSyKK!r}uL^Z@&Li?*~`EVC+eDnBF*^*-YhSPEdCCBRsS7lZD_rKC@G1 zMJ-c)p7XLGw_t3Wi`n(K8SIbIy;;lPTZ(8yuR_qu8*mUF1}BGkeF$w1_n0u6wdt5S z$FYtget0*x<-?^5p57%ty8Jx;+stY+k)?BJ@o=*q(Oeik-HaW>|8av69BK~ivm8*c zUK`+u?gf&i<Evm%AZw7sl4ge;uk{U<u5U-)a1zj-f#CRG9h_4AWJGk6V^<&_xWTgg zSIc}89bn$}c`I#`P0()DFVHQN+`D&c<>-yq*LG^)LO$=YZW(Z}tF-^&)lx%v%P$z5 z?go27WiTxxOo=O7z!9>K`hj}_POB}B?&{^%=ja1^uIDo-U>WGE+N+I&p7{1}Iw26% zmzd#FW<lX7Qd4ccXOmet;VV3~S2UafbNHwK_*h+bd-guIWxL*+okOoIx^s~4Y)DqS z8_#-vf>}WfeLl9!>{}To2Wk90%dX+~uvx+$?H79S3eLw<&=<q^ikn&L4d$>t$rRm! zE`4Z7??<nWPZ3P@R>!fG#8RHp46N%<)jFG6I{Xh7aMIrbD!<|<|4ggYbZ$PDGk)gB zbo$i+X8)pvjS?t=cmnj!@f<#E`=y#M<%g5J{m1~S>z9T{^pO>5R;i!a+0m8EO1YF& z`W*A$Jkfu_CD|}t^hglvJ>4fIJPpUEUHg7+n%DDw>g?VimqX1~s#yB20UHEhBZf!M z)OBzubB~nrikV=)|C>0mGJ{Mlhm9eV#rm)4*kp_Wj_T6}>GTFV!gCug1(0k``_xAL zsyBUnnmu^R{+OI$8#?Rr9@f`AZ07WH=UX$nFWc}byYnH~m5$zQ@N@}vRz+9=6m1RU zu?KQ}u8%R$!)AD$;ca%-3KTlIHlFUILA$j2!e&-J&GcFOX^_kB)z9}guj+qnLinte zJkJYmZ`%y(QSahD{o(tYCqMk==0WW^0+M(AP%EAuRPJ*@w&l=fjNcaUzHPAfb+**! ze&S&KAcv#37=Bh`&|&^7o05pi<A`<B)$x|B(?hb^DlF2Sj%bJ3u0DNs-@Sp&TQl2J zsq9J@wA#Rjc1V`$WhWf7VHX*>_7ETGg-OP+J+R`}^_VV$U(&8!XjcmU>ZsKt1P}_6 znpTN=z*884JBMKE)h`63X|M@a!@O3c5W)3$&#raRYmIZu4giPT_2~XMp4S9S4t|8G z7tXQ^x?Bl>j6|3L_?v(CcQ^m}fB)ZZe*c%hU%en0NqCEq``kh$6|VAF9!wqPg{IQK zz=vPiu(L#9_H46$T`PIYdk*G+%GJLCTK(WDk7szLB%>vraEW@3HaQa9C9k`|temob zC+Wa;ttQ3pO{vCvu%xmjMrY<|Yruv}1=AY6Tq&*Vl4LLM1$IJNXI|o}OFP!FmQR^= zC=_@&<`{LRAL>7Pke;BgTJCD(mXmKu`F7O=t2z^2#YQuk`V9$<;}XbTHy4u+v_qS` z!LKfKLlEB#V0d3AF<yu{&{j?oLe|-aVNOD9QJP?LLgPvGlBH3?{;O(m(Ms0i{cz}6 z#YW*2Fir-04!9?Hg&$we%3t6y;Qod0%6QN<`anH_R!okzb+#e0MqWKk<{4BuxWF+W zN7CJZ2M&;@oprHez<VYS9Xt3stCJ(=8UBOe*y$9z++XnRv1jTzzf<qZteku+a`0ZA zSD2RvJqG<Tf4fBRCpr3+_*cUV4YRb}qddyQEo1hpwNyLED_?^3pxd#OkTAbarNP ztu%G_aC+aRz<~TV=s>cbRVH&>`Y-nbcqvP6;LNQ$C{3^7h6jhc-F4$Jm|x0+(T#i? zRFb>vEooKn(!&d^$~8IB^Iv$4A>&Eu)3wfE!Dmj{VB^uimNy`K2p5_}mj-n9fxX^x z4154PV6)?0r_H5Rn9~4$zuSTrgN0A(tbWsM;qP0v^?mOvJuMJ4yYr`3j~H!!o74QZ z572+={mLyDZRwY`XIAiOb>0<dID97Iz97nS&!XZS`erBXDp^Oj@AlS7dPm(#56i$T z+qE3`LG}BN;QL0UpT@M?0<RB$DyaR}f4zBEVEeA1^PTr_gLU6>DI@5Q6NH)D@kHg( zic@A*twhn$w{=a9c{7CJciTHpkK54W{`H?1tZTuu+xT73@wq?%+$!0OvDw1y@XB$> zaiJ&rHuA^jUSqDF{^ZEiNM=jnz#fx`ia9$DHiRwA8eH_}$c_`?{Yaa56#fj4pL)mY z)1yCES9x+aVpPAoo1fwf9kvtk%a*Vi&;$4OU9w7s6$t&#W)CVOAlVYvaNF!&vu_U` zJ#RcSor%W#-evs|ji39SVD_{vrkBo`{UBqC@*xN6jadYaOU}*RUG!ETsr%mjS?vSO z=!-e88;GbEiDeZo_^?bi1}zA-+|7W<i^tK>azcGM-9*dUclqobz1O0mq1563u37ch z4LT&X{JpajH;x6f=LNwJK7s-71~m+>l56a@be%-zNNE$Xh^_4J=_4{G+TK-<v{n6! zPnejUsfL`r$RKKZP51?xbir({+0-}9ep{(<4Rj5D;1efXa6rb-T8$>nvp4CRKvB@S zPhioj(no)7<=F3Z39rj@AHRLl1fCl2v@D!9>q@~x(2TUco8D}RrhY)*3g2eiKcFYN zv~?z<QlptI?SH7zQM}Q&;0K#2Pq?A88?&)^;qy)V3|IN|sRn<hrwU9jqkVdkj+8c^ zuu2CniK>x(+Izy`c~&5lJX{a2t+1Mu0;z8H=oj1up#rKsEzU0C_%;U}?!os2x4@lG zL<hUqj_9MokiA9$$3Z)Plv0CMy1Kz2``NrMBSHRs#;f3Dj000zbXP<0t9^jf*sptm zQ6Yjy9pq4+3lF6@<mSsIa#sy*sk;YN10EKQo)QMP`fczz{S8+CcYXRRvINCHg~0$X z4eCT@bYZ{#(60rv;b)n0>f7W-zwVpxTwhU_vHXg!txTRrKUNd@d*}xr)pRbkb4fj5 zU$pCkqk7{^_385r?rg(SGLv6gcnDe_6?o2;8YEjg&p!3gC#{IVr*_b5ww4~CW$)z{ z+}fi+d%Q2d!33WT`dnMM7ekc)wiQJW+a=#;$LQV1>dIjDtMa`LQl8ETvk9Wv*!G~x z=K7AT0Y!r}UQ?*Q%)T0Ydr+{xi5oOTu{~UHfGyE>*}`{ySNrvwK0nv}!v^%8fBXFA z`R~8$+<pze`_0Xh-~O(k_xqMc_u7qt$86^<`%++RWz$Dxqx(&EZi7wP72PrafbJf( zOb*F<6C|ZCc)jS}@gqqkIV59)BhGXy_J!><r?hxg=U@<RGr8SAXqtHKC%@vv8MVL4 zoPw21rWIe=DTFrU2rqi>zYLST<gNo>5`8|;<ekpC?Kn0dxH{rr9rYO@8F!~x6?7m* z<M7Okgpp4`9GHShWf`)|GpZ4G8V&^ZOR-^fI*Nmo4sqX5t^AhrRE8l}zh^)xz7ZFB zNnS$r&ajq&0eIBXf#3e+U)=n~-~3_U0JKEySqf`~TOrOdqC+?oY83|u*944N8p#<k z#TTqOf~&5c_ZLqO&w6;MPgrYVp;LK3IiYtwX87aPMrzU3k72iz7eN0sc16(P81G4O zxACL$(%|SPZ{%-;Z<bK`l<_>j!YRKFsgZHZ;y!NY%V?}2fn@{=o<@llu<4{!sh)nG zaRQ9g8>uz|NXFwu4chy-bzyV3bYO_U3LOI-Fe+uFmSQp_W*5feD-G(Xp$Vd&*tM=Q z8Wob|bHQ+(D(k$o$QlVVKra4663-&<)DP*52UrWN%Y;^G91FNhe?-n?5^d|;5yl}2 zchJd*dLL&$z7YKCJp99R@;?DF9q1`XMTZ?e>QZC@2xH)RQoA}^+Kcit*5S(kFp3$o z#)FNVb<d%gE|7Ttl|wVR#w5cu@u*_`({{`PUG-!m)#{Aq;R9aqH)z!L0d<jc>0K>N zMdKOzs_uIHa(xmx9)USOdAq*Cl&+r9U*a5x(gIBc<AwSXOFTO;w)<y%kS&&A#eNG+ zSEjt_ppUQPGmHbg_Q;_6+>51<Tj>!3V1qMU!WC|3<FRuM8P7a8Jns1y%znYOtKqc4 zA=l*}4Z+)k?q?@ToK9Tm^mtkN6WY}kGAHNiJA-C&baWd3cIgKH`mqlK+5`Nc*CDNQ zU&n+fkE%eMnceIeT(5dC*yY1ddZ5TgYoP<^@b$b4W&20()b*(ig5Ykhg|2;5=lXrK zf<N@_z`ywB@y%~~Pxf)kD+M<1UR7t$y_xXweE~)`LSUg&R{5s_z$bmv??u6?-D{Ir zGSiV~LkhUGwY_^;0LI?=RL!H?mSQzS)>}={ccrmlC{91F?LKVw_*2V<Zwhoj|M6dL z-v9B>H*dRtv*omvik>If847jj8d<bk6h^^%fWLI8AIjJNG};~pv#mZo<DH^8*>E81 zI`Gdq%3IRa=)Az!J5^>^Ex+9?R^=y|n8$8f*2{62gB3gihTDDhgToe`c6o8P-IK=@ zxZK^dNfS{HlHHyOQXuiE*wYd@GK;uqQqC!Q9@{AD-OclM;`Cj~ck%g;;d}R8`&xXP zy=Vi$Po=+ahTQTwZ7?)@<)lv%y$-MbZ5QK~X)nOXtL(7lb?gdfP@M)=XTMTnf&OMq z>w7JQyp3N^s-IpN><Fv9xBU6DuOT#ek~}^%(_ptzs_31z_XXCkqnV$9e>T&4-;UKj zgJk2aCpn{U(+@L~B+I|_8iIF%4YK%-GhL_iZwq>_c9X2(_UNHyh%ff;o!z2ewX3t; zc~1amiSn_dWMa0782BQBX3C^L)o|wcMgMIxFAsaSb>9sxovhxsWZbM`CHDQ^PU%Mu zre*KFedm4O%`%k-t~;vlW1Yc1{}b=dW>)sUum?$YFMeO!rqv5JuQ`Jh^sQErjaeTX zu51T7^i=f3GD3qH`t-BPsy+iI1pzOfx6^n$e%C4tHt@DVYBO#>{@iz=>lbZQW{Ex8 z_2ZAztt~qQKl;aqaKFCizRwM5^R-<3{?xm@+MAiwVQTQfOqsHjwPTxJ(XUe0Kc?Ta z<@MFOudbs%`jrW!Qk74q&aSn31iowfnJn2ku<4!aYoB)YNAPBTMo_e`{!Si~N!NT4 z_B19g9~x6Lw`-es;Sa{~m9^giO6Sm{P0%5kPn!-%*Ys4|WP#Qq%In@=^unb->dzjY ztDdjW#eOH(?Sgy3QBkjhC{xopK1Mop?0>by;{`1$@jqR~kie|omG9bsj+sq;<jTs- zMgpyDWj65GH6Jn+Tbs8xL*}C8#AbE7?*3V4K9PV1U+8nU;}r>mPj8S4XPTn1&WDcW z8$65KTkc%m)ooBm8|&Yo4KKWC@YT>W9-u4yyw_@TL`c#z16mK#IWx*OQpEX>589_8 zoUH)itBxjZtTJT#kl&o1eF{$-2i`Z}dO!Zuwu1K_kK@l>dpSI8PY0j36Yb9y8zAbn zK6c>#$82Y9b??Bpp8(ro)^dSv{t6z`6TIiwZ19zD6-)5vZMyu{6605A)|Wkc+$Z&J z8)Sac@A)?`Zoc`8-`u=xa__c5%}=!#?c;%dRNqp&e%P|*56$AfX}R<3V7<-;y=}18 zr;EsFaYtpm&x^lSPHj(xY=+GkpKP$%fMIr(K<Pky+NzRN!vvH89a`;~zUxE%^S+r| zKKRTJWpR2&g8eyg+)usOK)yL1p4A}q<cn=w{uN19;IUqKcR+2B9v}(@59#z_gFg!Y z+vBoy`DFUq7(jLvuK{0-O=T$-(1=rURZK``6t97<v>mX5%LO^`W{e@8Qn>d6BsLDV zQ5T0!$HCyHCu=|((HX$In;#m{_?y4`+qMLMQA&zaIgQQi&jP0Ijf%xX#C3h}1ry!` zBz;OZfnD;IEb!F`HLyy`z59UzU@1KxTqH&pIxbJp#IS`(OCQ3ax{)Od<scu&h17vN z9l%wX2iD02K91JOz_~(jg2I(oo+`2TbC2me&txa89hn^X!fZwYjPB9dnf#1GyZ7!b z{52egeRaaUhIu|w(YeOGZ)O%i-)(cSM!g=Mcci_q!H`&925;P$Q3I7SRELf_OV;!7 z=!a(~(Cv(v9qEbel)3-w@X8*R7aF>%+>t|kRaf`xe850gKh6Q38&R?}Bs5lTGV1yG z5x!_YvZ?X)&oXlu4sOqZJV8gYNIyMYI|v3c)a6*)0ijzu>3t?x3k21nzUycz#jfbe zY8wPrj({9_?Oh*8R2JTrG_FGp9v+`1cNvI_?7(+i&$|J!<e_;UPaY)W7IqiZmroh@ z*PpT%uq%f*5{~{IfY;~BO2L;iI(y)IKDj!l1JvLGru#$QbhAXZ3J;%T#J7aDYl9N% z<lNn+mvv7W*W?t?eJ&-q<ar#2g9AJnQE63iq2cht4eH4eZ{>kE^?(}U-D^MNL)T!q zUI5g!ci&`|<`|8o?Y@G#*wwT4pZv>r-j|cPd=<bG`YT-<>6B!v8(erVO)7mm$Mgiw zmFqNor@Qdzeo(5@XgD4mox9{K&zGfQV8>g7B%e1N9}Y2JJMm8LHwCr7Yxl`N{N|gR zzxw9s&36sqKgi4ZbD!h+V~)YAD)+vmSu^%~Gr4u(pBo9+!D}A^FQeSPjVk3)o#^>i zY|cWvvYUndR6t-E=c9H#X0thVj|z|lJ*{;O@d75Zz<+8M_fP+=+1x+g{Pf@cd$YMe zH<S0aC1DNDEqF*j;A12y+$?+c$^v_!@9=KhI>PwI#)nuALa=k59=@$yv&HXn2sWrQ znPs;EWzfyf4w=rJd3I5qI^fw)^;NgoCa~$98BMY}?Ygw&NoGgp0p=7WqaZE+1}_a> zg)ci~kaw#A$hC4lGvi2XtMel4B&^@a*5uszl*HSoecv}ZJu_SJtU#|9dhZHepY$Hr zU4x8t&3j?mm?eAt5BFf8Df-`)*S8+w$yPnGqv)3Snu(4-eKvya`A|^%u^B=Aj%)uu zHJ$OPotX_HsONEkr&$#|Fc@Ok!Axi5OukIsb|nS38}D7-^}Q&18As;~Ce#A&X4T=7 zZhd%Lq3i+t>9%0Z`=;bVeu7xeEd9AnCYwDik2>EaL!ap2ls(CTq#JZV;B^8O?JqqF z7f$tE123};F@wF+Z;{P|`aQgXdzmMf1wlEL+Mm8`%Y*ymiF@$qi~1L2gpcy@*!!*= z=XC!OCpsQ#_Zti>|ANQim&!(?Z!>pW`OEU*=%f?qJG*YDpYaUc<h%C|3wRS=LI3T| z_r24%jl32l3KYXB3d~}e_~!?pl%0EATU=k2@!MvUg4X1CzWv((Ozj<QW^OGnrqdXN zM>U52)b_NEp3PoWe_5j;o=3YfSjdjhBVTLSQgQmlu0+_DJH~tY4KN8x5o{^FPpzmH zzQ1%T>h8YZ0`{DDwrEsc(xIoHS^oe)2Younk@c>_WAt2}D5om8!a<+@<;eTrprgLz znhvcAr#4;Pr@ce%=mj2`nVrw6hp8;sN6*S1@U)?RNPm)MMzeOQ-_t&_AQ5u<f|5h2 z>wpPFuC_xEK0QBVR-&Bg-gs1gWyVDCyM9=k9*?8JKLJjvu|XU?idR}{O$&0pqw5{d zy($<@+K%!qq6mC<`moB+kA!zP>SMk4?^QV|eDmWgzy%Tghf*}M31``Q5;l-lk?l-h zhP`86z9;FN$&9sk#w>d?o0I-;6Fqrr$Cg|Bl-iSYI4H?3-40%-^$Xj>!?-{}YmA-x z8jwZR0@`Gyj2UD7RW}h{A5nY#Yyek3*3XjVkG*1JrO`(#m$s57KAGS_Uf|J7)(_io z%Al6XCjsft+3z2Fuhyn}WX484X?NvkZH)Ewx8K}++xgiK-?g8F*KAq|lJ8AF7v$ES z^|zl|USWmR>tMXeR@S_y6ZA07l>O)ne|{^h@VF;t>S-JqZqSdKlt#xFm^WykA2o13 zeG=$b_g;TV)&>dIXIF;p2uKyDFC&_$gNp+theEg2R2qfA53d+@H=UWDT=3Laxz{J0 zHWVE_!$<xgVE*|JpI!9#>*IV!7g8N-d@#5i?)@BV44s#!v}>*_LK><DxJEkWEb|Z; zV-azI{cD(q3bi;QBF0+6B%jW^Ubc!O1)(v@h|3@Tm%qLFU;pEOy!obWwbwz#Xa@0V zc?jVcA_@hu1PgS}hr<QeV~m1%xgU?pIHsXpIgPakGeqU%)G)qtLdW=Hz~MSxbXJGo z6gWBT{f-Rsj9|F}Q)0g^hL^vjHn^o#=duKg@zvmExzZ`$c`gmS?q?LtSgN0LQVO#I zN2!M&c-?O{0f37!K5)spq{>ldc6^Q;$E$y<vgezf&X@>t&(e>UW#v?zPgZpHEW_)a zgZ@{J5f8>00*Zm9F`!W1?*bcvtLM-LHwLC$qx}T4XgNt5(ToLpO8mrW?HWmBHNME~ zdaUiD|GSr-E|Bkz<m=LsyS+mV-gtumu!0*OcHJLA97J>=yN*U6kKDjQQ^sMPItQxf zb>xnX(8mj%g)-C65aeW*YdVfeN3K-~w)?7|-Yu8(a09O&F3Im$xeHxzIP#Z6nVt4$ zI8|gii5GAQnDaH?^?XfJ95$F7S{(;IM~B{QrcC-WmJ^#Ux4TfJ13wRsPMy-wW40&N z+2DYV)sBb)T{?{i)1{(CySj2tjZQL-4$F;P=~#!GiXi}(%jIwg7P{6>r1x+6FZu9u zMf-#9T?5eJzGg9y>omxwH1JgAL6l7g$NQ7egD|@=vzFDRjF_zqiw3|c>vBtc=nGsg z`45iWb-@V{fDH~9vaarP-QR=PMib5rI%h}Zo9=`u9Va)yQ!u#ItaAh&-n=ZR{h`t0 z-}i}yzy95~1-g%KzO8MW|HSh-pgAkA?q9c~qaBXlw*1#;dZMP^R?Bcq>$vSiY<5Qw zbC#mvIi0U<aJCy+e$;Yhq`WEEylW}vvjS<|uic7oTPFSP$3L~<)PKEs_s4&|dG#;< zeDl-4w#)Kn<_Z+zXRU2CpHHad5arn47G&J#L~b-XC&l}W5A7a5Zz&w&AvzYI3fc;) z-`Gr}wrD1JHb=V*vHOBW9lGx!vY*GnO&*uFGm&O^cE<AL_io<~##?%Fegw6_vZxg_ zoAF#fb5)0e7kW$^)K4y_?6D)-nxC{YupDknYxeDt_qr_KEzs-TGT)tj`t1G9vzD?w zX;9!pv-37psZmjaW-;np+gRmu)AApArYX1CGRx4mL#aS2XJ)f_p9+vS3*541fhVm^ zcf6Nv&Qh>O3Uo@~^uF0bf!h1(5WJxKWA>0U#dd2G`bSQz_t?yiYg-(5GjzW9JG#qz zpTlPPDf=S$#N!m#pXFHtj#aaDrR`kaEnN;*Y&4r;7W-98oL_gootLDq6S#)E*_QCv zPJpKabN0%2<iy#FZ>QS9oD3pmVp6tx@bA-`WDsroM16qOCjwLhC2$}=OAIZeHygUy z|6p(CqI3fR3vSD|v%JAEAoKaYbA117H?rEdcCQ?x^SN>h^bHEsml<$Y7k(PNsYGy2 z+gzE(klr+av|v5C=(q8*H4F8B+2ic1O@7D~FDyfc2ff^&OM);cF3*RSWbzrN%fUGR z@b)mM;?Y8Hb6QJkn8n<DGOx~v2+j0(m)W4>J6sIubSf6iAF+yQ@A2aY;vGN)fBlNG z-Jo>?6uT#z>V|~$%kvX#1P{;G&QG}k1ax`()1_tor=4n-l1hwcXu&t-$!F<;ByydH zKQN`&UaMCxH7qVT;P;`Ux>Y${RB?dugN?4j;ZHu5JK2Ir{*Wn;v~zSlnDQ-W_u;8N zZLf1I>34aC7QCqp1lBjO4Up--_Gs1Gc3BSdGmF~_zUme(Hg0(~i#o_dIh^q7_{p1W zO1S7>pNl3{p|3+*PGY<EK>g#BJY_NPVsJ>A`)oH}!(TrI!M&zI#{JGJjO+%VAshF( zOw3xEot|2i*lLCJ)hsT2{979e>!4P?+xm+Q(uNp$+mYRiB|+;tn$cwtiLx4$Nx$*- zWADb^dvCw?eQy&#fo`uY7(BJ|1G`PetuG3P@x1ncjQfauR~vm*p!=$KYAtyds6T1d z>UZrM@l6BG&+3Pt{O0?cr~Pi5+_Mp{O%(N08I1LlpX!6}vv2S9$Mw5EH>>+|FyFO; zhR@*px(46aVYXs=6OC-+UZu-s(a*BSmaf7Vul?C7lll1ukK;GGIoio<gBY@vjy~__ z@{P%ReN$(FvK0c;L$WRZ+NW!E!4J=+U(}%oyNAd8ikO&)mTv|lS&^Gu{wW52VE%`L z4tJa<GBJdHt{H%@)2^i<bA>kK0-_D-DyF_6o(jfCigKEp{H_^Z2O<X>0~le9p=li} z6H#m2L!5CTjFuw=<4G@x|Lx!Z-OWG#<3HZKOyD0HZN83>VEpm#s&5uaJ=J$%1m>q5 z3E?nh6<)48EnWF3xiU*E{qhXXV{dqLF?tD!KET^?rCCvjd!<gvljp+n!H4E*&?yYD zgWFXOD;a<AgMqq07%$-ij}r(`w!=dpQ?JS#8M-@o#OFG}!GV`XMUlvCf!>jmcX5rp zX$)uixSJGG{nfGMTND~E(-*;qZPo2C`NVeZIVv`(x~+r9FKAN9D(Tv})FY@v`iMF> zE_2#WCsK{drOus??$FQD!05<?OgD~kkIKqT7S(0sd^#AOt2=_=QVWg_GK-dg>BOgt z<L%+DKw{qzU9O=$7?vNd(~B2ou;>YV*Pzh^DY}eKRT1u-E%b&v{dDd(T?|<r9V4+e z5Dwd{0ocl-3kSLZX5~+(v}&VWh3D8HMwjY#OjpOJbHBvPA9=!Xc`n(JvBTL<`hkTm z^hhkrGRP|Rm*WEQlqt_IWn;kw-b$@dG!rU3I^D(t-OrPZmvK)WtDRVFcyTtDir4+K zL+6L`Ze%+?lk7)~jyGrA@96yWtGuj@$Euv(IcsJ^q~{lss_v3WhVw(_u9ffSe%a_r za$LKCRS%YqmWoX0x;ldxJ)g{b&~b3#;B}CFx=0QO0Mk_a)rrz2&x1MWV8fwe3zS0K zOo;>k^f_hkS;eW#d9*fm^gzyZ7rgSX<0&OAF3qDH+0vh<hu`&1(hn_*`c0kd?|$?A z=6ByeZ|U;$n{SfGPX!%+ewA}mA-KG$gZ|f7Ki>S*22tOAEEsAU@2(|hjg=?UIzgk! zWqeV9Wohu+mZ^T~SMS>rt46@t{`wh#%&T@WewPh;)+(6KpUR)pVDqWlmID9jpZ|FC zumATy_g-$BLH+kXxA~L}sf69-Ww)3;?K^nIdMsZ$MEW|>{`SXgs|``KJqP>+-g5-& zgzXk<B;BkqhX+UTZnH+o<OEKq9qt`EFshRT$soX*{^XSP-1TNgFrf75AKO4iods@I zWDLt>Ae(@Tb9<cPgSY2le{fMo*?#g1SlDCxR=jOi+PkB7W<^VX)XRKNo_x6Z=Gohu zmu;x>KDpjmZk}zXXOEg;_|!61>Fn4(g;V<WLdcGDSiHBkPyH;4DKu#Yf)iwU<pw)5 zO8HU?R38h9<2=Xdy3Yf-z>SUjoLBrIhtSe>Jm2!~;F|rV=Qe^d<L|(0_S<X-8QHw$ zgH6eD9=#`SQ>nEFjXBu<ak8E?KyqfAPhcxh+zKQ0<$%6!6EwK(JMYzN#_zla#3mDB za;t8>j}2TnvS8@%1m<RQW_zknTbkXjSfOksj|@3}c7!(AlV+!r<ZU+6l5w<$t+J^h z`E4~r{AS<P<#Sz@gzGEFJqFU^_3itXZ@f>^l7nFi3eHDAyd!5O^e#RKB7GqNE&BGo zza0LX6>ZQ)Ivi=BfLmEK(l^SRDX9NV9#ymf5Ojv)`&MY|{ps>PXcdNC+22L;yS^K} zAhf!s>kLbDt_@Y!mTy+a^gJJd#n)eN)zYzEvmf3cR`+?QwKMrri}-OSF<c-1<2hY& zI9o-qfJy=FsCv)$n&V&<12cT$ps@nB7Vix1XpdLf$VjK=g9aWO7F4RIf9xh$91~Y; zu6k#Nq@aBVxpaXBa+IO^=*^Z&AHtRso%3-zZ+2Xn%5D>@_^v$MuTKB)fajQ?KQsP) zwEzG>07*naR08ILo4kiDrG?L>tfyC-Cw>1e^=zOZInYadIKgW1T+Y3T3%l-{74->8 zJ0WYTUge{u+MK3HcYJf599TwjWCH~nK34<(@d2LQ8?0V`xjIjIHZc|Md#~kBet3q5 z2G~r(82nz4306P*As99x?~GOWS99e=!(g+8{Kc_{Ka5M5R@(eCSf}rg1kxsCDz}w# z@C)W6Gsy<RR!?ooYZtbFFVq+3(18aA>#PX+&<1`D%nE!zHPA^l>4E`Oa<_HET}y@e zJ2vrq+k3P>w->^n+k@h5OODCbrc-8rU-r7i4+XX_H;ent&Fy#n`s`8P+H1LS_Afpx zj>03h#rNF%*6!QRHn93p;N0eRud@MG+@u20kk*9Dd{KPR?`3n?IZL&@t6wWhMj?uw z@d(e^1@_|%hV|?)aq`3?HhwEN!hiMjoPI|Bba}dg_odg$I`^c+YApv1Dy^$2F*%Z# zLSx_sXF0=D(pF-~US;b;;k$#5T`s>mC8cvr0SV)Oa;$NwxaZev+1xu2;~2rSH1Ir1 z{cE^a7&8R;g)39Ku1Bs8AjOR78zoccD$q${%7fOazr6XoHlq5=zx>NJKs3r<36CL` z!NI)D5!f9ge(3h6q_24~oKCS7hldND|8SCjZ~-DH438gqmvbCfmh#ASxIsY#F4qo! z9V%$!BRJ&^#!jV=m2Myg%$K|u9Llf;tk^Q+cQju3tlr^NVL0R6_1Tp^hQ|z~4guaX z)?i7SF{sw$p;N}Np%G0uOM5M|vUH76;8a}YWc19EW}{G+lX$O^K{WESQG26D;WT)q zp_>zP)eR^dqQf0M<z&EI!(%wd8#BWv=YfG$>%7A8nioTL5(|7Mi=a)%(vA$0*_(A7 z8MLDt(HpOJq-bMD;K3drJC9%SM<>MKPhVw(-*82MdvGo^Tx6?Emjj6BF)dpImv~lr zPUDs%v*v*Yh93F&`S>&*ELlyf^HdXGqID<$U!r@*FMK`sOZ@epaKU2)pFn@8E!QRa z0y}<{2QQ>U5j!;kj-e{yHMx}mi85Ys#Yps!N38gATygZ=@?p<?huJbHpRIWsf2_`U zoYQW(T@AdhtQn%@=RHbs2>kEUIch<MYj34<13R7i;CB%jhx02GhD)ejXeb|EAhH7) zjxT4)-N?_*opRj__X{t}Gg`|kXy0{d8#D{<DOWe*x;(=Ya?zV#96efEyfA7lLIA#e z^jV4Juk29i*^sOL!9P!z=8@xi-t`2d&eHclJ?cBM!Lyh32ETd!^yc^N==gn|>hBA3 zf7AE+ep{gXyOu8Zk(%l3A8Y$&TrI15{n~~XZ~DExX}gYS;1opv^gK79$_&17YJ7k7 z$2O39-;%CJIlRxK-DX5yH!<t<_T!(5pr7A7`_Oy31<pQQbX#y-FMac>&8PnLpZa`| z&8L3q9m}73XEVF9_t~P!dqZCwK<!JLuI|r`cB5B4A96g{Co55o4J9Mv_3^lTM!^MC z38Z#zxg(v8zjUj*%!>JK#*O_NH*vJ8*hBfvfCW(4vv<Bg(N050z$~~RRC-2d$+ycR zV@j1WpL=$UGv0m4(yj-aa{UQdi&ciJ!HeRToGFeUol3?nqqC>fo2Laj&GK%?;sum< zduR3W^LX5bE8g`I_-@H~vNc`vut52=39O9XRFy-&O|savc*9BB#z#46TIfde@hVSs zJZ8rtpse8-Ez$42%Ciy%VR0b3XGap083)U4&kSr1WzWpQc<0T#(RgOo{>Af`1@XNz zp2KHARbM1e0LLrKm)8%Jvc7<=f<uVRDX+q}1(S{il%WBY(OVuf_YZqVjf1KW_xcQ; zTh<HTiK=J%K`__0!(n~m<xJL-@!$zSy~Aqey@0tThgKczHI85$eWY){$d(<@e>(KN z^C@B(y$FkRw!F0ub}yu&9A3Q|(9DbX?tJt9e7`x`%d(~SmQKS<A0H8Ld6=#X$k|bL zSv@Sn>Y(rCf14xyApGI!J!sl*Hvh>cAF4YV(fh7*Mqt0Ni9UEiFMF1k|6uPn$H(qD z$LcHd+OBeB_OT$Mlp`m!Rp;_Zn=N5O!+@bFCqxbCGd%1Wer(XD>kX#hU5|U1-pSh; zjc_f`neFa+xO6IY2k?&SU$A|FeI^A?K7-!u_xg4qsw<*r!>@fDo}uT`rH}7>7H=G9 z#_H6HUmKv`6WB>-qvI9Zg4T<?OFnSrU2*xA`?ROh;C-H@9hYaL^9xNq20Ol^!K|YK z8_emFPZ>h-lP%9)_jI$m@%m|P^@;XbIqkv98Y?BN<XFEFZ`cUIFkg#)PIHG6<miXm z{KJRSHyU(#TORN9``&AgWqMrc+P;C&$LZ0>4_TY~exI|v@BYJG?W%gsGVf~vwHpEV zt&I&!L$keSyi58?Kzqd@o0+BR+w8}F8JvF5(rfrv!QS!p&32zo8?NDGqp|rL`ijpD z%ZEqCz5d7`j&|B$sez~<KknIH@yl@P2l;#Kjdp3~_UAT@`s2^9+h?LdruM;k*{T~s z?xQC2UViiJ=9|8i`>ekBu0HwkcYVLNbIWurcT3meCtcX6K<%MbG`@iFy8iK18yCLr z^?+C5^uDFcHpTkL$Be88oQ?D>aZR>a<-xJ?#C8yqf7sIjE%8x#wY&3ca4UIe&#c7J zo9Ie6HJ=S!Icr;MPb#UJuHA-h2uLII&TN3R1Txig*)_UEaS)zOzLclV3Y5AtTX<}U zGy7ZFWh&oS$CstcYm6aq3ZcJ>y7#*to?U-mr)j_&u?W*^evRf@{_8TkjtO%DN6@f7 z4GZ!e>rjvqgW-&6{%w<_W(|M;SATW$xBvbhZeBF<k;TLA6fvc|;KBZtyfXbcFfL@2 zWsIINVSGE_1lQpv0n<Biq<7WLibHjDxt9odjY--RC+H;)Ui{M$G2Cz<fUl2JXH*5_ z$}9QG*^gD0Ke%7`*xf*o0TjDASuWaht%KpNu~oN2J&x6{rS^Y{0B-3z{gbmB${FJ< z4<a8G>M#P<uMsn(TzGO@2lud1Sxd~;snjSqx130yiqP5G_~Ne7X|KGmGW3kd%$-33 z0_$F58DgFWAI90J(eC*YF65SBv~eUSGwF=e_@-<PKAw`?n$V>o4JyM>x+cWIaJSV2 zXbR3*a^oT>WQ+dtoKd8j-B9UyX^z#S{_DT$ay`AM?63eMI){tv19l)lDrtxF94@>_ zPUJ%Wlp8Kx!^@#@tA`FSQdj55Gb8uc<LKDo={4=kIT$BE`UQsz_`{1!bzks97mDBy z2t8U7Tn=jPr{>DirEaEw@a>tO@=F7wYXPBML7${QI?U(k&-3ohEIzl~DD|6TTIP2^ z&KA_sB_A%Jddx|9M@W@`4x=iX?I?vP=`K9KKHLwl&Zn$<oE@MqSw|E6mvW)0M6#4q znaw(*^CV1mx&lr%c?q=O=wNnaqZJ!z)+~c(lvmxdou#u)eAY4Z&a|O9WP=ZvGF|E# z-&eAv3sT^G&1X$tGll_&NhNT@n6STjR{h`Sxc<HwzQ1fB@rT~c{h^NbH{bPXp}yJo zLrYwr)M3796RIb5`cEwbtBt?4tW+mod2RlEawB9gfgdfUeQsx8pO^6|o6k8MmMoJT zhuJ&U??UcV&bfD}?s~^_>!%7tY_9P}r`^U=KmY5W+fDLSpC)R<p#m#!w7{RlZBWMX zeN^y`Rt{mE%GyS^b0!Uj>KjgmgPUb#oDMTqmQZ`Y3DR}>$QTbf`rEG{XF-54k<?C) zX+K1crSivrfv`TYPHAmSr_KM}lHc$Y?AR&y$g@J>ufM_z*K~31Iy|;HR*bxGv}Y#} zDr2<C-)Ov`lI@K+P9R5A_1DpF%SvCjgD3giJ$_f4vf+?G_u0+UW)$vns?1^tj2`uV zubEZ5Uwfa|d%e;*N9;w+*{tINC_J;ytpNV|ty(-ZYq`yy!pYJ<V#3Q$)j<c)z&6<J z)GDCk1fjdYIa%D@<(w5vy=_w$dafUV`vSXWOMJglfMz+JVE0g41>v_oB{ZS>DA;Iu zn(jWbnPUB#Kw95#IWlMUVM=6EyA43#f6Aj>2&TPDerKuU#Ri%EGyt`kzi85e%@%#A zGP0N*VC(y_$p_{k{_NAxv&x?hf^ZTW;%CZX9|=w$7}wzT3QtYc*>Yk0*~)|35dEpZ zc(g&~@O$2Sd!-(kRhNk;GJrFg&_M%-mT%J0^&Rou67HwBPZt<Y%E8?`+jV+;n4@ap z7=P&L9Q|;~BJ`}8pl!x=5H+B@RTd=EvmF6_Sa5H%%gvg_qxHAJLfia}@VGA9rt$oV zttJB?e74Lyp2ykYqs=+iCS6p1E7};?^b1Sbyfb6p^I%~5e6Dd{p=<KdZ#-YUorjkU z@QSJItV7T_Se@3-mGSbZi)2{cZ13p<FJ+?V=!Kl|Q@+x+qGyJz{PQ1<{t15V-b=?; z@%jw1J~Ag`c&(2sFQ~{XX}@JF^~_}UfL@kCt)5-L%uc#B;D`3>;CI>8JR2@9Qg38! zb%Z|pX^mo^7YeTp{s)9lMb8Hw|FokEj#djDBpZy&IJ4FJmrY(<>9GLWD-(3KG0E}9 zG9&)AcS-qQX>EM9>VzGv5P!7?kG<<0MDvk*hgiLEPS4S%4nz;1>@Qrd10`p9H3a$; zS<8rRU}ZOQw&6hm>Vy02V|MGNRYq$|+4s-hV=gcKv|o+aKk%pO8Z=Bp!_S~Et3IE& z{Cu6y4K&#V?&mgs`?1;A*DWu$Jo{-u?DGcio;8d6<i*p*d$Y~0w0T;8eA{M_53|Fc z+T`zHucKu2qN~Bc`YOSH2Bdy6IN8hh^^NbE&9&3AZ^gf9fB--7hHiMhb2@+<-Rn0t z5Y4tk|F}pu=^vI+gq_&6g5B)l!)$4YoHh}E_&M4nEgYAFrA=xx^JB<+mB|4%Z3-v) zmW`ss*FYFjM=zuYO-4VE>AC#n@ZTZtIm*;?IDYYaE>E1kEM1<GL!gQ%#r6K0_t$CH z=gx-}@Hs|8nRPgw!Tb7Jeg&?xwSym_GjyYi5luO205c2(SrMHqW<GDm;UE6--|zP% zp>qT<2{Y_scHc5L*Tb*$E{9hM@u7S5cisq@r!xHdxFpB7st$e{d`oKXX)}gHs^bXo zTp#$doqCs{M*^5FOG)6a<rp8jQiob*pjDA@sp4h<(4{6ggE_pNweR>Mb$QBF7JOjL zM*GSv%ks!3=}W!xq2Y>Cm#}`2cB^$GuAP;^GY0jR(P@;6vtYB2&%Hx%UjzK$(+-@g zep_0SbMc5%l{_dbmSG=Qv#g;$dRG&Dqa$cxywFGHn&ai)1=laM2F5kHOtHJKz+ikb za+ao`0nPI5=U%oz>-2SY(3t?bUXU3M<h_5(vkV6pC=It$4j)%XWu=TXcw*EDy`JPc zyg`$tVDfCHAO|a!?b=L8R&$0(t$^bv8ZiGD>OC3CS2^oUuY7UF$AjC2rVIV2<oPS# zbmWqFbOM~JQeVgQ`rMyH`RLgA_EjF_F72zbgQ;*2Bp*0%JNT*N97bq!Mw8|99N`yr zqA$CCk(2q7^SvOc5nBN2)H0tfO-&Eu)jE;_2D9I^Wilk-4u4PZd2r)zi2-BRa5;Ef z@ET4P2rfG0xzgl(<#mtB;^BdHWG#47_ZcNd?3@L<S$^=02Ajn<`?jFBv>wmK=}@+- zboX=tj%*WyKIgdl=(J8)-IHAzr*RPN2t-G?pWA5fB7*7o@Cm;obFks$&n2zg9GPeF z`n#63{<iPs{=RPp`jpW3&EkGvC;Lqu@3Y$TZA%k3!&+c_mzViiFqGQb{T9bJ;v4RC zQgG;l_cjqSH~O&ckOf%J3QoMIczrjQ!)zlO-+HxMuiZ0mEmzHP_U+o&fBNa>kN@po zZhrjdf7wj##{!_D;yU(z`4Q;Srts=MrdDO0alG%^`+y4oq7S{(-xNc@gf;G!GlO8s z=m|{dQk`Y#r)^aL9R-tc<u3_bwa2ogkKoqU@IN@5_ehWa9!57=&{;tV|4OjsOb_g2 zd+Z&Zs}53(7WURNus?Dh;a_F3_L9Hr<(1z>{7onB8a#L(kMF9>EXsBiO}OvF|L5d& zSD<s(XwjA)w(R?PpND$fPR(q!ZyuUS@c9ivu2)f>*4IAB0lWL$w;LM-+2CS$t)GjC zZ9*2(+W<0~&*`(`$0v2(TUK7%#ap!EhoCkNq~!W{!&C*S87$5?-Y*zSH*7v)Df@@6 z;dcM2U4WD4e1dfJ+XiBu=Md_Pw-HJX9X%Ki!_T433R0c76g-%5GFip{f>`q4;952< z_!De;|94Iw!FDW=46XpnW;c5uF217Mj>ZIL7RyZS)jrdy>E!gE^P8mlznOQ-j5Rhe z;?={PV?w19YTPp7@(XmY!S0nWXtg51`_E@{CV@%L<?s{uM{D-QKNW(v?;)qx(^dM^ zb(Jm%#!EDCZsBs5^St+>8<-Bg%|dw(*nqTl{ZwBc3^IDsF4pg(j~1FG{*e7WOP28( zN$CQ7Lt>P5;h+CtsDRVYKxQ?wd)h}igAKk%=o0+TmX@GB!v(zYH<;>VE4NQW&wH?T z7_*ac`qU36*g@5@tz}vH`AYFfWhVetZ!rAmq;r|&qrdR3Xpc*GsPDoL_(-4Kmfo>^ z)V*WW2mbn9Q7f<3hALOasu`BS3yw}8+kf7h9gD&rO#14ts=Hr35`yK~;K=q>TDLuv z*a?1@pKJLp<qmlFWsi3G%!aBAY`UV4qgh@lGPq--NV_dREgdR&Apd-_^kMn+dzFFz z_#uM?bxh7^R|&Z@vu9vWTlWs^!-Cgs21Re<pA{;P3m6}Wn&DF$_AT)(r-cOF>k(go zK4~8x8i+-T_D2us#dY&axM)*oj>K?Cr-OZW&o*Tf!z<#mhxKodTFKaEs}CO2Km9mM zR@v;z!}{mX`OOB<*1Y|x(odbe=MLRR?L=;wFpa#vB4au6!*+50CLj7~f$g(i7xG^2 z)9l;R_Qx;)X&(izkKAWpKW*u-8CCq${;Pu>VlxY#1-b8=(S6tXZT8pqu?-OH^@GjA zMpg%&htg@A+F<bYTkMd3Y|p8K4;d}}@J>6yW_FScBW6(aOL1^8!8TB&Kh%E?&a{X; zNah!P0A{e`k)_hpg(_H{5Tp~+o9PIhJ-D+4OIJM^?a+?T)rqk#$(K`s?!ca`T{DWS zu#^#2>8lZ!>5EZViBs{_XlSsAT+kCT*HKRJu86t*!T@=us9|^|CLFf;LkdO!IwCWM z;3m?Wm*0MS^AG><4>y1PhrbFL<?FQScw%Ep>T?G^e%?0vb=YGf_D7=8Af3tr$qPQQ zX7y6^U*m`^VLd9x;PL6u>xqBT)q%Ddt`hbxu_~)er@42zE;IwC+&MZka90>Zav72x z%{fLEuap}9hQqo48ecL|+_DKBqfSxhyybhB+7{det7eDl8IZ6(MhcmTaZdZ@c-NTS zo)Nk<S|=Jy?{skK$PmvV{n%2&_m6*?tmd>-eog_NRDQTshBLFuY7iR6kkAmq)xk)d z1J_T-qPdVe9z$*ryWB`nI1FXWT3qPZI<H|?$HtvYrknWe-!9jb2W~X0Ub<z`{18UA zzn2U>sQT$F!wg@z^i$9E-{{IvtYwl_|J<VO=zVZ55KjltbI&yJaGw55FAnW4=}%xn zUB0x2t^|YrSfc1KLv;<lH&`Hldh@kze0{w_{khT*)5Gz!Z#=jj#CsugNuId}3ldb) zucULh=y&osAG!y#jAgCt`CXq$)E0F>g4rkO&C_(YR|yMvAKbj`{#$`=KZ98Yy|2cU zrqIg|IqzG(9XrgBK|t`iASXHN;1=wae?0S?F^3bR;O*>pIlfNDWv~RPlR@`a-hr*S z*`+ziUDw=83$|X6eB}>WSI0Ov7)zm8t8g*%R+my=s*dvX1kzgRCmnj%`_^Qg85_*O zy`l=<aT=95x}iRmZk8au8ZGXx4@#L@sjD9+LR+;A`MZ9<Euj6KrOO4k-!+^2L%ThG zSDKM!xZb{jZ~7N5wvO@+wfChynlWs!OTeq&<>cP?qU>Go2R*FQMUw$EU7=WqwYCA# zeVwt9c%L)5)4}JgTYC1Oj(f5$&!7M0pKku^|M`F2{P-__YE!E=`Dg@un@8n@3v{uX z>;;3L*xSu83Zz;M5RE>UV#R>Ll<@-}KaeLLR3=?tFu|m;ALVnLnWXA4J8LO!g*iou zAl>0eadb$s1p3jn0X8;>ev!?be|b{2iuMj8GbPY6a}k_M`E7Q$wh-8(o53jCmf39} z_gYVMs%KS}X9X&>e--fTE;~v$6IU}WXXbA2GsO>swP(lj_*14Qckw@+t=Vk=VnCh0 z_VamzOV6G)gV|Q9R^|8{(Zk*~v-9;fok~_{v9AM$Y$9rm3E!O2svR!{sILolIqbJB zDMT~J(=2SF4nKUXeZH^X#n9USbUB>qyjj2XR~*k2>O-)+-@3u^kbR%N-Mp?`@+G@6 zSMIbc^?2XXu{P85kCoSc_x@{rmRV8Na@xsi@BgN|9K03;Cf`$@FHwf{vsT-C;}3km zl<c&}cyMOwPf&jKk(7lKza>b+5pMd_n)GBv{@$a#H<%MWHqX&dvI$??Yxh@v3&h{I z!olYO1@Jc4!B@*4A2#DnnFa8)5G?ODd+zY<;Rne9Rdh_?0w?X~1eX__t3!PPdhY;! z_#B_(kJ)to1Q}Th{J>078@++QZ{61xQO4i-91ds@bQ|Q@fX`uP>4C$6=%U2i<uw~} zYas7p<2LY@?$HYa2pswipkLbWNKzg@gM~tYs3pVO=qv&avMGC?{g^E+A6rMKKDDZg zto93zKKfxk1dI;1w9$APe;g}QxiL>J|5yKMyPW;;>;h}g;4>b?V+H%q?v6*DH<Nuy zqnFaTKW6^ebpxAhcv8u?A=+f3&hl*_;ULj%X_xZT8#3*FwoP^AgU>K^?zf47Dx<^f zqE1VW;jJ#k22-;v9iAnzCw`vm53Nq}<yfUr$?nl51rE*bwae%#FInwb@TSw1rHuSO zIw8#!o64kotROE8V?J$4GCfQ$liUztYYni#dv>8VtzE!ovwrG{ryuJN(D1Z(qQbJY z+HOj;*1&(L5;mNlVHKIY+lM7$4V>O*BR}0W;FfJLiz}|uSE1Kr(_R69v<EdP@2jtm z#Mfp%VO&cH5i4Dq&3(&G*5|e1;@$J_3Zh#TnNfVy@5%FC1t{RX4gO=BO=XKeXESZ6 z^{MtQ{o#{7-KG;w{{wnfM`ah@)&IV28T8v$KfUX9l?A%>zw8WKx51M{Ko0sgeg%G8 zd9gSvox9J@^QX4=Lh#9COS$7QojS2oWyn?S@sbTVd-fEcRgY$~>Xcnal+o**W@XO1 z_;hVKhD(S+uIHuGN4F4miAHT!e*c5<^`VU(yL-}u&_DQv#IKH)E>lPdLg4(a01t9i zlwokJF<by#^GI`@POV{-X^M23#L0Zkdp&;%Zf3R65aYB6_(m`)J*t^&NjvMnd<*Zp zzxdtFU;n#4EA&logr&*V-poS68g1RD1p5~3V0t>zAs_4u9V>OISCyr!`WPMQFgRzz zUe3x>t?}Rj3jeRN0e|!j|4SoRXLxA?gBOj?4tdY@`8yt~N@~wkd#QS7%5gQms<`s< zz*6d3pl2xxd2;TLQ{S_2P@~bf2bS=vfB2+;DJ0gwge;V|A;cM_E#Gv5{*|K!Jfef+ z9izJ%=$13o5pfcIx6eqv7uPK-d-VFQZ)-M#6LkOZgYiZb!#Sh(g;=-`(J4EXSgFv* z%0nd#-Pa(?FdgwcU@ID*7|OG2AUYYun)HQMbmIX%^N;akG&oq`Z(u?ynAHij8MB@) zSTA8ZU;YJ}W#Txfd(K+<0#jy$R=&$QZA%1~RRs5NL<O+eE_Z~`y=VT-899U>Ud6mG zZ4o@cJC05UyQGZ-UmnOiT(2;{(4@{4Jb0{*1MEt(^We&NIj#X>;JzGR=a=rccXyWu zE#RD=LTJ;t*Fh!|Gk8zyWS-^lyvV_R;hes`OwC@z!bjcTWrWYWE%=wimBV@82<ayd zN{vfksRhTyEhE%Xt!+mCM#IM!?1E3vMtnGh&+s2!;XOnTj%e4m9lH(}43@S}nQ_2^ zpk1P6PCy2B?=)@A&*8Dz#j4E)92u+Q%<h=2Zdqmk7i_?}jQ6#n`#N+%Q4?-^&&Deo z+QkKh@bDiUG&tDl@@k8=u{~J+ou}okZg^hESv`<4h-8rAMeX#50^Gl72KNsIwtv}D z&llbiYSiIHpBQ@HpyAVa{pptD8@{y{Gw{!<|53Dl=sUJ=+i{W<Fy1@o=(Jm|_lN4@ zvk_s|yGsvRmh4y5TA*7;-4duL&kS}XaKUeZ)ol*Q$DHR6Ex~&G<Igv*{5DeEYY>(* za{_Bd93-9VeGZSAHHmgdSKgrKHtWEtV4t?z^Kg&F;dil(xM9GFUao@-?<moh>B^j< z9DB~MYjy*VjglL9IL<=wDmxINVTFNZrrz^Bwk|v?!|e`K*V!uhO52Qb_Gu&U-AfDf z;BtxBGPa03$y_Dm$~mEn*UbjmJ9r7xnKIAzj&AwUp8_lpIC}yV6qM&tGm5wIjEX+1 z?Y%C*c$Sl7$*x_SIc6VH#CNaT6}y@E-2ZId8FU`8@dM4?Z?<H4co%pHGWLC4dY7Zf zzHR`4UM4U$ig|2`BUyG){b&;iPY(jL8S45FvUnrFE9ev;8c2Q<js`F+0oKp#TieN- z<E3sZ3ABytd%c3?F{eM$jc96nk6KD=nf04+|5#wyg1q3?hh>i#bf2lZPnR6@;Y0OG zhpRqvpRu~wc=DP2t82mbqDZ9qcVKD5$Ce06a}tBWRQR%lAbWPdJb0(iurwRrYN87u zIo4)<*Y8#aYM*+KSU*v*g3#odtUrU@Pr8*?4-&Ax;1L~;e1SNg?0I!Opr-<OI8Vpn zOZ#faRbFbkT!0V^4)PIMZ6;WAZm=tFe73b<z-k2VLh>7~aNxB~ZF;`Iw8EO(cvd}C zoc;(fFLt;5+T?6<bd1J0X{CZuErBbUXg5l8l-aqh%;>z`*9GL&p`ry+BA;M5)Vm|T z8Q?nqq>y93(nnt@?7PABl8*jN=c_kf9cW5je@Dlp4~{3{Ho2Du&VpG8s9Qx{>p!}P z27JJGx7w{UoaoL4Cp_rClS4nWqkQUFAhGL{e>#6MsG(o~Mss{DADfL&`Zcx#wDG<Q z;3ZJC`P8%8oRvQYgJwtS1KAiQ1TpX=19~#4bY_p_z^P$b1==mU#(pk;&uz@acHbxK zG<v}z4b<!THaF|W+J;fj%=`v3eYFn)A3=yqhoCc*!ez^6wa@SvU37*XYoqbg=7jc@ zVJywkl8wGZe_*i8%&~53Dnv}Rk?rq7arKA6SPW8y^ven}@2WoTnN>0B**Dmymj$1h zA!9-h>TjR)g@RiHXa%l<S>NS-R3CiT?C$4m!H3%I<7b|+0o5Iz4;p;Rc^yYTXRjXc zs~hy&lI1p_`uHY0)+;Jj)4Z?m739vo3eclX{J>XO`@^4bS^J%Y=w`QmSW;ex0kzGT zlLfg}E&~$WY;E*fZf-@-*gsW1aAzOOTT2W|=jv7T@Oqk%4yF^O4=%m0{PcHKm)ZY# zr@fSI2Rm|T0k3w`y<;|Q^(5C-wB#>;HlwSe|Jg%n*Jszpa!vcfIGpKV4CYucrVxw? zLmDw-T8bdzle08%9pIU{(+nt1nq6nwNJi=KwS>y2hKwYB^ZVZy<o?~w-~9dGFSzpj zQGu2BaJUcZ9N{Tqrhf3jbx`c#-2Ihl7)=x>%jLSf>Q>IP{R;#rFm@icqkE+l_=VP< zj<&#_78j%%!m?lB^kn(r?-{ZusO}l|3sl*H?Y<0Y-@XAUNx{o`d1E-k<+z|#rmpv| z^Rc3Xwb`jP><bJ8ftMwi1KBMj^|=vlIVicu>O27(Y=Vr5HE6p~dWrtF_jMoE5brLd zzjlY*$GLMV7#Z)-4OZ|LI0707yn+Iro>`QGw@Qr^GN|OX&I+pj^~^4q<N;4ks}W~# zHtQ8kb%Kc@MwK^XD?cZ=XJOS-jXoVSG?`w`aZN|3j~C-5vwwqC-V-zgr|Wy(b}(iX zCbypVV4}F-%@Jlmv|UEA=KMwf2!2jqWoBfE8Ljb(5#REj@H!n|={orGfWu+8++#+d z>(B`XOoLH-n~nsBv*FrrY?NU~Y2`bct3;iLzd8ovlJ@KJf&Btc$xCxy?p=qAbYQQb z*Zvf&6VZ7-%UR2(F4$|OMvnFKelO}=+HT?IMfU4?>2yFF;ar(nV>ZpiSO!Z&>C&BL ziEOP-KnJBgM5ozp4!w4+{R>p251$KiN4Ju1MLp}Z{OY7vWKikOImSKY0MMN$>u|cS zE}gv@8yaX7T)AWaX6+8laIvbytb-uJdrfm5Y7hGkVbAM^TYB2=up#qvguX8@v~iDj z>&Sg0>^U5JUsSyrd3x?x2NpkQs;RcqK}>7ICD@hEA1EI<ohu_aGOCa7-?dcvw~Z$M zzRvcy&EP((Gk#jI`@E&1HvFlj-!!jR*@E8M`}0P*pB4DNB*Wm@m2v|B(Q{jx(f5xn z^_raObUzie-jrW(r480a)^>9^T1xxw&U=2Gh8%hN5TXWzUiS{uyE<?(w!~6EvfU%g z$00G|ZUD=>RsvB29;wAm3vNemUt)<B>3?~yj_P(&ud%JYm2V@--QdTTDAKX&(}8oO zPoP`7WhnYj{`BNJ3v06|y2+U`IxevF`~<Ml=pNbDCxtI3&T{0kEd5>O-&Xd0?R~*B zXRN1lM#xA2l&s4VPb%j^dcUK`<&X9)t1XQa$j;IWZ6~ITuT}}s(1sx=%e(k%_Sc|< z*_jW`z`x5edfl>cpC>ZI@nZq*bDt-A_O8JW10FVi^3EzfsE+;_BxS3#FEgWb)u%E- zc}vm@J?fvs%b(SgVn@U65Y$h*J?-nsc%A};6Fp^D7r2zkAS?T9S8Nljw>Fd!Oa;@x zk(C-|F$B7Si3i~pUko@1{AfIQ1|{j_nf*x*@+;P7L<_rl`ZKom1nj8fTnnDTUb~@p z(Lm=oc{XCa>aX-UgW*M13pl&}6mLk*;4<FP!?dH6bHHt7tCu_lYINX{ZwhnnY8d)i zvQ_WL+Kpw6^n<RkLuf?1`t?%=u@+!f9v&H{@pel$qsuJS`ltB#(X0zN;bh740<ds2 zX!$+|+B@v*2wI^XJJzpiBW88hcODehX5e^myV#=i$ujgnG{F;X0Wly6PdkO<g}y9M z<0U>{?bO;&^~8k98xJsZ?Gw)Nl)@}%iWY74D$`Umc=Yo;#{zO*pB=UCC%b3`=Cn+i zu=D5)Ua%7zEbBqg_IQJ3!5%F7R%!M^(XEOLIJ=CmDx$0Xug!JFvnhGigd;hH`H{g0 z*IqluXF3(!;TSxPzuMHq9?hpyE8(jkxI}@U*D~;;U&`Uvb>#|3cwoj@mo{Ijw1Mi6 zfdvC$SZ*H;tFC-n=nmbU#mm{aXxv@~)wBL4yy%jCj$NdqU5qC85Hvux0g7;{=Gg>z zFW{`ct1VUZ49e!`XeYtkkVW`ew!St9cU4q>3OOE(-tnr<t=O0<UGQ1G^V90kEswT( zg(&FFeAMuS2mWdOg6|&eXOO9>)qZ&a+3E-NwOF1MAfD0dHNN__y~a`_@$S07(*|pw zax@<`YisjA16Iuh704F6s$URWU;DAwG3lW`w9Yr5rt~Tx^L;m({Ms?f7Yhs)x5e_! z$5%hKcSWBGd)0=DHivxOU|HYKC2oEqIn8gS_Yt<;uOS_q)}Npw+1?fq(`7brJ1m#S zS5yo@?v=!3PY!s;-otAvQYcWggS9r;qaaSIULPX&O{!J7f3#qMZ`bl`AMBIW7VOPg zeHZT41NSI6a<5MMeA+Gvu^DS6(>W7!<Yl1k*GJrjZ%798m!DLC`n&YewEJHw`lXzT zH%p6f%%qvoer;qWU+U=Ma_pH0)iXnorb#nQxjJh2TXKb=0b}e1w15AP|NiE${^ozF zo{V($aIQ{3;0#vGUa&$Cr$GU$F|Mxt#dsI+?0T1%`nz7*1gVuAhQeXW)@`-Owesja z&d-5`U+2KjQ+k5FmbpCr^+~zm)F1pf!lW>z`-g_|tOKg>_4#nm3JnLUMHv#e0?V&n z$rrpR0{+7CbgXIsuyhKmta`dy85Lh(jMnJowAcXPwoOAg6kgtcSmT`opNuy6P(BK~ z7x8P<NhSDa)NISs$SGV`#~R9^GxSpI8VSpa{p#;Om6{B@hK>%}dB!arV8|UXAKg9U zfGX^SeDXU^K=p>3Yk4^q<49@h!pozd%DY!j{OKA!GF7U-oulLG%&d$8D!ZIdS$M(k z!q=`2{2*%BW#>37Xl0bhg3(mt1r~_0bR&&j4)5i6b2*a4kuCg7J90j>T=NWvfO$69 zbm5BcCDY3NzobnaF8P*4MIG1dM7gBP8T}5r1#Yg{`i#dBBgox*xtEdR7j--@D)6+j zo^N)v4hnxb=pSp(dp9%#{VrI-dqJ;`h<?So1v;uE9l^+SngN85KQeWEX-BX{RR0-o z4iP@jz{=V)ZAM^T*E4&wrLg5W!7V&F2}ZXM&U?3~P7_$0PzgA65FB#Bra<m#>2{T_ z8!PY-D5oLazX`{mEAd9alhUsvfN#HbA}FJ#0cR)9_o-`JWtdFMxzD*&{@S**Q2;pD z0*q1QK2?5E2m8F><z+$bH!YQVS!esQv-dNfzj)b_s+LOKhGn>aZuQ2)mQOu;_ND;n z>CF$x;kJ(2`$U5F^UkylEeuA~DGGRRIqZFJ_ottlS$b3ZL2DgoKONI{g8ea`zdgZ| z4X(5an^yh&<4-p~_5D}7yxNuWO+l!4vUHMjTy@kDu4QqoUFatafP8M`eolDan~v}L zZN=?{xtCt?f=)&k<5Jn#!{jee<BIE?=ZN8R>3g1B4V(>!%IB&LzEG;v1%758>6zW= zfrhJ*eD5_{rMYEe$xmSG-E*JOutXUw0RRapLsid?<dq4*Ipp!u;hkanMey{`r<*v{ zALwALfX$Y2azIKa6HctQ@+c7S4ZAs_uHQ7>AmC-QZ>=^@26sQdZ?NM-OV>Z#ysWW$ zhx>Vs+SAU0C<86}gteXUe;ZC_70p_Y-+NY_;dx&$({#$(!gLic%=8!Z$YzxdIo+l& zmZ8SlIa_C$Z3uS6!gR{aXFgsIBvUNNdQ>@l<f!i5%pA?9chAEs`IYt|gm6{xu8okn z+4i-M_`|6)qq7~H&4AKPj#o78o4}hX)t}+wX;)Qw%98<vI$ZugeBEi2WXW~r_pGcf zYwHFGfFK84!6Ap_Xf*F+lF3Z^{$E2cWkaITU0qw&qW|yli0URJ)6I&C8-Cr7pUsb- z<J-OVFMbO^$WVWx{cjMv`p=mH22=1Q`9*_1<n$xigdAXewY=Y;iy3R3*On-k*HZ4c z1^iFiyL|hoy|bkWbUCY2ipl&qkJ8u|+%pKVL6O>+nQM7J7U(-n&I~C#p<k3f{R{3F zj(o5;IE^U0Prs=+{*<Nr(+24$-6l|W#tb|Cv^Uks*xC~~+L3(dU)vjc*M2DZO!3*z z(&%z<c{P%!Yw-*W@|!%zc@i#bX^}q}W>F@;uX)2W1)Mw<03>H+0w(!fC9DNj_h3hh zM!bOp_>`+B%WDE*<PL6qP;h+sX6PdG(ZJ?L`|1n=-(|j3c|qE2U3YqlEz^vrn*iyV zzGrYE%8Bl3AKiU>HjJw4iZg_y4)-e!mG%2vm-2WtoWMy3`?zBx@WO1TL&Fwq^lV#e z!0xlYF-CCFKqXV3wWofs?w)8Z$7c(2^|QzF2u88Yy}p6opamB6<)B(Vd8>f*oq=IM zbHQhF;}eYj?v<q1c)mV-e8sEsM2{Q>Z^#hN)44_$_Fh+QJ>2Qa_U9u$xv>dOqK8u+ zNWUBGy&ML$CHleDf8fAy>Tp(riQc8_Feob^#CU>#v(Ieo;|~9O){<oVaYL+?X<6WG zk{R4D)%PIVBY+O@&P0&*r980#O5@9!b&oH-D(!QJPu=%QzIXdLY58)<)erA(er)xL z_YT8<gZ2|Do?rM9-sH2cqC3t0F_~ANfy@nNCJ4IB?%BRz|L|?LDT|PO)ND?>uc83s zGqQpkZ}>7aee$c4$+8q>(&XtsIrPuN=}a!eV2oaJ@`(MIPF!?{PAtD-^co&L>yO=F ze}B^T09>xPs(^<$@&CR~Ays1b$@6nS?ngv0G>SEL@UEcn^(*Luq({oQCWL9<PYsZ= zBl$F-IGT}s(FX1R^f!NX^H2Z!&o|%v;@c4<&jrdU5}`+s5l%=w$B1gfhW^go%2mHS zo3V*@0=eQ0#&XMZ`9lIm$}>1au{(MC{G1PXusr2;;jNMfmus31Pq}_;tdsZ=+Lgb9 zJ4mO@|5sguy9O6R;K4DN1n%Zq=Q<BKtgiSJj_Z`=g91hEnTEm0sTLiB;Tf9JL=KSU zTnvbkb98E)f?b`bcLHukp_W5mI4X0V${U!jOG67WH~<393?hRzJ~6oX3jU#i{K#TF zkpF;jx5mXu)W}@ZN3{D32so?5e{{HS2VERT_wZ`;t$5E5m{b004NBXALmDtWI}lG@ z7amThS08MvMqT(Otv~#h)wAhDIO<kDHp`_QTxD~rKY3RTSkWsl=hZUJE4+0c{hH38 zxz8>Yb&cd}+EPxc^yMrc8D4dGPo=4&?`!&KyOjSqIPJ!z$%5$vaB33VQwO@p)vOcK zYX;L2D9c}8q#xg;JFjwvzDaj1TW$wTC;PG|M?X-`P+2myfVVsX#E%!*Y*3_*5T6}n z!Y|IdI(#u8c??9J{6cTVTpbM>IV=deYOygGKH(K>*2^3^HOeHsmxSK9N*F**CE z=tek|&RBEkW8m~lfQ*;wc-litChvmzqVmuB4NnJasmF|;VB;fCtpGsK;G;8I+pK+S zGNDlZ3gB^BBRiT8?pxVWnkD!g1P|43A8{=2cMmHl*mR(XndujGs4vW@w^aFQ)3Z<S z>eLEk9YA#Z$ey7(W?K?oG@JI#+nX1Sn17?AYqa@!0mI{#SiP{1H+n2<)(;r0qOY@S zM%d#?VQoY<IM#;-b57p(N*|{v8@Rk{u<Z7kK(|1@k!q(>{@D8ke{5gw+Z=}<jgAM) z(z5N%MrV2PXZxbNdmy5WHt&KB!#-WR&AAQ-10%;Vi6=0`M@}T?E9NdZt`|33tW8ql z>2|m0v}E}z6Hm>^aAFq7h0Di0n;n=#AYFTpaQ6#lgJ~o^lIP%ywFTrHe$U^flMBcL zoy58q+Ola&I1XX>X@}DF9qcFcEi1NyfCD-krE&u$jnJ1hDwU}lMN7C-uj9CeOV99u z{^%nfan=MroWFSRC<320%ll0OA!gIb{#iU0<eq^{JS2z{02zqb>8W_B@-8Fwf-yG0 z+Y#iYmmhM*z_3(WpJHa~^QU*!osG!h5|DE^=iEi8yngR6sPHf=YUWehgU@`A>S3R) z0;69(bY7qCmQ2kcf8KjEaGE~UXv=eKatsY`vc_xu#QS$|!?6IrfgZYLX4hrlN}fYy zdVuEY=eM}@ms@qweX&{j@G0CXLr&Vfe(ytrI_L=4>UowU{J4`|AHHveKxuT`fDk$# z=5XHL*G9tc^v6A`ZLobiAQGL`4=aJDE!Oa2kJX_MVs+?)0R_Re{DL;;4J>G`p4oo^ z+S*4vn|{W(WO+}<^uGUiI(t1$w3tsJ1IsoIJkcW;{<6ga;`bN321Ctg+DSg_clxPM zCbQY!{64{*!Hm#8b&WFRTt{a$5g9g%i_d-V`FhPKDsjom^e5ATCt1m%Z@7Q$_xi1U z4T`eCn`2$xmG`{#-AnVl4;kUL@BQ^XAlhE{E7S8+w(k^U^{0aDrFJ`=ir=%JP*qm@ z04V*{PL{Q=rS<=Osfw@O5qj#<<|?u}mK#3G4fnn&=HxtV1FJ&dtG`=qn@naeDm(i6 z_Im+%dEtAtor!qY>{faF#22R!lK|UY?%8ks^n4<Pklxp!r=J&o0meoLVs*1gx>&QR z`n0yrA3KGKUCJ*8Kn8%9vJe^WmG7UQvw3XaUU8T2VWxHMz_Q_jx;FM^m&&p2HP3IJ zy!fW)`X}u^eGfhjFn~4>0?ze`_vJr+S(VhL40t}O+_U!OKJUOOTm5Da5R%{X#UN05 z#5u>8seNYCz3-ghu6npZhuX%2`my^ry?x+^*Eetf*gNIF`@TWp`pRBY^h15+kIf+K zFE?Ql;|wCEP9Yq&-9&ygmo~XwctPLFJKo}A^!?l~v;s!(Yn8_AszK`7zsZE1xF07r zfKb`0JN<~XWbIN{KbA7)`Q0!2h8MQP$PG3d?J?a5%f7><fk-;wI_)DIOQ3gtpZMmK ziRmZf&;E~-3ic>vr%*Fg<pbpB*HN~g0H1O&ILhz0GGk80lLA0;ql6i<P}uV^<ATSC zFCT(^hA=J#=TjZg=`eC~>)d|(SATu;zy2Tp=gq(V*Z+C@LXF%^aWD1i<TV^kOFD?> zqWGm(jYi<|OrHH(15xf=nC*%0b9bH`ew2=}a$L&qHwIqIf4x->P5vj0Q|}drpNwjp zNw`-K2iJr1^*#W*e63z}BdALnc3!fKcO&*Izk68LYuWvfU-`iR=NO?G7rifM1Wt;Q z9mUh;*2p+GHHSJTr@<Lz*7<UZ844q}_D?a68khz(M<{JI(>{ZU*g98AzD7LDQ<@69 zH<PcSNzh?(^4;SdC(WZht_|&wiDeZ+xsIM4#V@7&>KSd3#`xLXuQS5*={zgI3F@2k z@)-}*7XD`x(C_NM@EzMYw9}CBu-tuvrB!ZJR(f^NGtP>8@;n#%7=VKp%HX2&kzXeg zqQ@9^@2B$1Qyl_8rL`q6*SvxOpXKY>^;*%d^{TNefGdZ-eqQzLC;U#@_4oDpoa?GU zrV9zs8cg5aTt5=8Ix0=4$k@!bCxg2>?icBbgQs5g`8HkpCcZn2>RFv3SB%+3BL~Jc z`Bx)6c2Gn@+%j0atCGxafA|)ECg5<D_h)T<kos>r7OXiF{l-1=qiXcl%qx6#Vhec7 z;h>2p;knt}b+YuEE~PiszrL!3InDv-(dhN9GjQORnM{Wy*@OJF0VU2n7#!mJKAD%6 zC7Bs(FQP+znvLRA8a!GD(EZv5nVx@rg?)+iK)c3?Guo+4W&2M%T;Nu@1-aSO=kebu z*WVP}zACuAD*}IPzpQ|>HvOgT2oE|H^5OGe<h<4y7t}smfKect{@*r3`>amYEbm>< zy>jSFWd-V=EUn6^%?n?>wlUo2b$@tY2W|gQ&+M17|M<NQxRA?o(WiC%xADcE%=gV) zd41740e^Yl7HBzZN>I0bwaH2QoP9ud4A426DWz}ZF5uo$t<pclNV^o~ye0X~!Y5OM z0y@}rnzQd^3dV(#)uqn(TN;hwKycydrC^m!^4kF_bG9pq@$U76KJxig4e4wz`G@jY zdUuve=Qu<^`B!YXEKul&{1c?~?ga>RTmyvr{mwvOPqWAN-O^)4%1gKKRRFu!X=LAQ z`{;3(y>1lBt(MSV_eSI4kh$JLK@J@?7-tFF`(}>snwHi^>H^YRdS9@b{8jos9*w2~ z<k`K_=p-HqEVks4qgcJ@vjmwl$$Ee8)j|3~Hds40;A;8#mieP8r_qwX&%LTj8<-tP zrf@S*vDsY03YNXM{0B0n6NvP60$6n?_wYg!+Gjt=w>;#|nFZ56U%?>!x4bV}?cW1; z&cD1XgnL?EMM0o@wdeJfU@|5FDYu&~`BNSr%=E)iAP-X?bs4~LfY=5@TBhhQv?sNr zXSFxMkHIIwrodaBUX!$dG<X7Zb_iWQNdZ=&T73ow(AK@J5wm;YdUycYgC+ZGd9!OP zCba$Fppk5SQor)USNYQxl|D6gqgDZQckgr1-^WY(p)I1<b~cuNZ7(X0EDjgoOqZqM z@eYNHHo>_3LlbS$v1POIs%(9HYl~`CJl^zM{~ED}Ui#}9Ai>9f99odn{q##(I(qC& z*#=voK2Yp(3lV=Hjt|NCtfG-gdjE%`!J~uQf$x3|PI<7wk{jOg*R~eq4!6q0c>UIC zr2PO`t>AQl@m1ckRrl(+-Y-`$#xoUG#|8I23eJI%m8&gmz_RCLV1|AN*ad6-SpC`d zOM_A2wZ&v&Km$zv78}GCuT6l5=cUn6{8lD#U8lZl|FpW(4Skk2g8$xJutCZSWLcNK z1F?Gcw0_4R^P>i9Q`rU8_@F-88d~Fv-*m3gh3Z!=`v_NgP0*yn^@rQOU{EXDU;yw@ z{p6FD6hH2>W!J;FGANIrP0A#*v!zI1->ZOHj=b#$)$ffOkNW-O`Kw;L+nZwWrE>gC z!R*5Z`fl46va=+DUCRiF{+AczN{+Q115;mYG4SSr&aC+O{r5Nb1-frL!@?m{R^`0c zN2Y(yGKu9>J3MO(;cCW~YAwhnpMJBn+kR7<S_`Pm4qZ%mRE>?FPQfBxXm=aLVn4LQ z;E?B$Yk1;GeN9i6eth3j<Mnj0Z+zeHDmeO?9>fcew4<tBS%O19U7?F8QJ3qho?l?C z<YaO3FVoNdn-vTHqX^vq;JSVfk)Qp(R`92J1O+ozA$Rf|7#vm1KJa=**)Me*7>K59 z(qr}oaRz5WQUbS8`?tUQ-Oc~<zy0qwfBiRqmuR%`!(2jCZbmjHZ_n0@Q|bO#;uwG` ztU8xEV_SHvK6HP5A|11?`7c80H?$9JrQx?c7Z@u(VN_T74&Q=b-8$7Rt@YsNSLNY$ zWEUmK>QZ)%6#VWFyr1xe!|<*k%z-)ex$C~qR~}!gJWsCpU+61Q=^4`tOitjT@#H<6 z19imDka&OY=XUAeb`1NY8Y#!v2-uTmejeYwo-xT}OiH!!11}j{va%o~Lo=)=^UHI1 z#?#TYn=4HvR}Md*Fn)J4`U;k=bZ^9`EShU91$3X?qG@H&0Y)_U+h%%4)F1w8OkqV? zyJj3Ghh*39)u;Z_zJA8(<Z{(%G*ltlIYy_J(^0@fM_mOM8q~)aRNf~fa0Q4nvp~Ol zpg!prxeOV=_K4oE!0?mLH78(q{Z~G?uWbfvvb{WGKt`83`uzW0p06$-uUSuZ`+eH@ zSbpj#Gn!KV(U%%5c+4GcCbPlP=y{Q${U!_as^30NS~ipGfT}IKtRkJ^mNaI-7s#*? zfi;-0&LSPK{EtP}scsK;aPW?ufa*E0q#1>9fh^q{?cKp~xR-Y?Mi2JsVC&e+`!tyA zM3eDORIGk8OmH+i>t*uXbO9`<zkafrUxCD-n*bIV_h3Om`5v!4xCOnT^tet|XZo(j z@<YMo=Vs6>1O3p<S-$0H;B@K?>`P=XPUmt2Kxfs*)?IaO&PF`F>P@#53Kn_9t0#4^ z_Tj#&-M(r$>Z=Z-dj2XWy3f;2Tz>MhCCg5ReD<o5>|Ykl7W`J-9USU_-_hkRx^71E zbF)(Fw#?H0!8zYKwRo+rdipx(2YbKYrw-e3DlLS_)-u%YY6JzM?=9m>mZf_wjv)6# zym%w{FUx(EshVm%#QWs1v%dnDx-<X)KmbWZK~(%sMjK@4p^hD+=#K+M1gH6C1)Jpw z_Tf`ml5rtT-!MI&1u5=>2@DupuB=kL?!kQlf}Mp%;Nc^vwk%l?y0)+S?8{l6T)p7* z`4CPEFal*>kkij`Fxw?K0XwkOnPby$LDuk?p4P`kM<`GJ;23=5n1pUTiQnbZm(Kns ztIb%zBc033+J3N&^v4G}L{Iiz{bot*SyMh{rcVVp)o0e)t1%wDdDp6h25gFat<*6X z^fbM`s}C^gk3Demnvl@yyDEb_dmGaBUDpbxN0U%_Ewlbu;0oU}Q~D`*;ZOj4Zxp}J z=i0@W%><`MwH1dJr8Q&dg3(JqU<T8Gg`OYsvmNP~JjVt`LyyRLr;A40bq3SGY=xMs z(@qQAH*-N(`rI}!L)X~)>2CCB2YV$@B@@&fRZzg>P@4gP3SJnHrAvZV&yT*bQSqlV z_<?n1kdGV(w!F?Kv6Q-Iusy|=H`*&mXWq6V!YrwQvN$*%(iwHZ;fnL@JKYKB2{Pza zx)N{AjOiZ)y%;o}VuZ|>Ys-_f8`?%<>%0GyD-)i|Jb$Vmkux~>gV%yH?c87$IQlu; z1Dg6;n+3x)wd<SQX3v5yNS=*WQx#7phoL8^D!+hs+XcE;pGG)(c=Z9rTPPZwiQtkh zX(2j)LiPLfySiQDm**a&&tM>w>wT5iGM?NDjFz4FEA0YDx^n6ls9f*iklKEQrPlRt z%UQm(_*{p-bee6cfh_<Y4eChG!S)*r|JfQgIqkQ0*Kg_lp~ttrL?4MPff^sgtm6R4 zJ9_Gy=y4x|xa;rgv-MwW=~x1mHUgIVN~BZs=d;z|L}`Bmnr*D*M&5^X?Vum5N*d_e zjAim7Z-ZNGi*~6VTbT?pub&;v`ih=;UEN)SqqdYiEYM{u=@?v`oq=VchtWsx50XbL zc$N-p(<b^(8w{7#TOTx9(!c0Q*-=XR8*rFET3K<2H@_GVS-WYe&TU(L9=HAHQv=l> zGjLWpK5m7SS=xr^f}qFgiiv9@^^Z<p_Im^H**^VcfQGl>CHsCK_W9D%=m!P44?1P} z)7v-A?7r^vW`|FGXi%K3zBiB=JxO6SVFt;HL-_ZP1j5la9YRxmH~B08#wYFOb5g<k zc;g~ppY>e~K;qm47UA?c&wXR?;kEX<_ER0QtzW6=<lb-31j4a#&sWjX%iE7r+QXx4 z+U9&)z%G}1mj+KbDmfgkInKAUT6WDC1i-h#t~Kt<_x1h|bSZVstAakN*Qi!e3gBA) zzBSZ-9YcbO%Y`uq?W1UtH>#HRutTOUb-Zf1@}K|iKh?7~BBCRiAP+OX5&>4gkW0I_ z+yn3>Uhwfu(pX99bna8%vR$woEeGF2&na^$cxaMzNuD8wXCE^RV|))izOZ4u+;1Jk zD82}$YNkxpX-V90sL=Si!t&{;J%hnd@~Jf(UR~<)RHn^tpQf~=C3{pIM@}_nu;XEn zgO6|ce*{C;Of9a|wG5tebKr(U4=Iy<3GLV2>kf=Qb2?|37?1f%{g%c6<p^^+l8e7H znj4IZu^<oih2U@;^Wco92=B8_NgIQ!KWXq-KIMMOzvp`*@z4c^-11$Q&7jW`L+sdS zWDmD*YDF>v3!;v0x}AXoV+j7lvjemYUBg)=LnuI!llyAdDO`-lW_5cu3YI;na17s# z2v>ALTyUt(>YS{ioAp)(Yy4G)v{;ct<0>8Sqf4u0sLUZ5O6B)mo#b+*?LXch<H-3a z+deDQe@bK1YPvid?PXl&fsPPN&GtSyOO|y?-ji#Y@~aH{t2)tF>A*LAUIa^rCZJ^e zz-Ra$wnq7rXeNhUpkpN0(&fEhE?e-az2aybUsF>1%6J7@^OqbYe6}By;a)I&VGTxk z1&efTOh>L==yY`qW?r9#-%dtuIiAtqb+qN*ESCPL`ru=h^f&;5U39N`jbHt&BM#?i zc8@Z9T9s3eCBH_J&4k*A`Z~w;z2%J2G#)@Nz9gl=BYG;W`{f*IyV?Oqh-_U^KDy9$ zwgJ%PK^w0OBv>l^tj`O3b6<7;s>3o~G-&m0uR8el)y?gzUVrea<yw7zD)=yu`6N25 z*m(K&$J%o{Uh8~+X!iBpyB`Wl-$nO}1?TjY4xHJ5$929rH$AuC)&W50<abWbr-J$% zf@s}g65;zXhsD804o7;|w_x|aNYUP7tq9#NOU|-D)kC1isX@JVs<XbY*C)@9$<<(m z<zbvaEoAnsJZ2?0-VX&;Y*1yv(1~v;F}<2i59au+rs^ou>e;>R1kJ3bL$i@(aNrN; zn>JZpAShm1-v-#!LmYGb<H2cPXdurcSIb1<H0P&8&I$R#UEsQB(Xc?bG?ckUQ8eF% z3}?rOuDKFdy#{^i6Ybi~(!<HUfs}?_(r4|kOcfKbzm5NGbL(o)Xu7K%3wrNz((XRC zI>0P%X&b>W7l)tju_c?a-puIHzuQ}{HaYqsV4~+x7YJyp=YW@}tj+7g^&j-Zz=ng1 z1hfXN$Oykd6+C)vkbn>m?^*)CWs<=)>$wws!%4q`a{}G7{Js7y-arAq_Qe`B<2Vac zKbu*>7f$GSaq62Rk48Ks$SG7s`@MsR`gT8&M3)&w0}6Cv!CLp5jg7b3>SmMT=LS#= z0##I+CD>-C7w}bPheD-1`UTm*l9>-d+u%C;oj$T20_V-VCWq_5MygYhbfYrsXZrcE z*`O_fUa;+8FDE~@Eul7U5N<20R;Ier%jr!xUYT+N#6$09S1~lr<IBBkgeqyJ@9+<A z?b)<evj1G*Bt2$T51SRgqi^uDHNN>3=itR8TbVh`$;!1hM!xF9^K_-E_M2Rnt7q$v z(A#HM55VEyY3F!Tp_RM#Vb_f7AAk02G6gvJ6>{^n-1MTnlSOpMp-$hf=~@U%*}GS( z7w*&LzR_8x;if&4mHJ()E%MGPmLTXP;nfpxcd%qh-7T*&$7c#=SL6l{4^DnqssMO( zVCgu9m6v+80dF;Vnho2^rt)nT6t2U)_Tav<032GXUp^fY8LI~DZVaaIsqRx=f!8Ks zdq`UsP}ipJ^p)x1v-GY9;Z(l9pVS8R(H-H`@6YR-UxeFENoU)`bu0X8kHcqe7GiJ> z0Q|;?V5U<Mvek$tYqT}}3fpFN3Ll_S>$9JP$9(E=PSv8fqGm%K-qbhy>%cn$lY7OT zrO(;LFZKne>yH{x_KH6697=Traj_@WduByLFTm@{!ux@N;q=Dqy4GIf@y7z^PaQgS z`{VaJY58N@d*0Wd?zLm@>VvI<D%jOWhTy89?&`%4TH#<Ze7FxNITFz>jHwRIKwrd$ z;J|!(yxQaN>)9p(!qIC6&#MgCp7JXbpU=RidV#DAeAGKUj_%Di?zwu-MTbwuqcH3D zz|FWGTOLN!wE>%s4NqxszrZ^Ty8yj>rBa^y$4DFn{f}9yIs{HbNKtk#2c=e4$)oH> zW)Q^*aQTuyToc+wh<#(`^%@NMc5~|4h-XSe3Yhnz(U9N##h-U1_w$y&7zv_e8Z6;a z>WrT{F7+~6GdPFzJs94XI-ouFb~7AD{lP&~pvYivWbuOFV3+xTQ0kN%{dgj!?<;>& zAqmT-k!{2{<ysJ5?gb_RTbU}{h$O=?NQ%Lv|M3gL;4jUcgo}o%yK1DIvgJR>9N3q_ zlJIzZMxSyuX8{B{!8<abRORjYVD@9qTfYuJdRG1oP}E=;mj?_(ngk~2fq;Xy4*yBU zgz+$|wO4>ZWS9DfXm}pHe5=%#>#BF|p*T`{xN@qIx9<b8ba`a%It{6`S&rbtC|x2~ za5WJ1ZIsJXy+8oLJbVJ>DC$l??zy^Lr?Wg2%gfn7JHCLutMuUj?vyjzQ{^x@GQeLv zPtR4_FCAD(BWSd{9XzIsUJkiviUZR7NO!OE()u{lp!tO#KuQ>x1NuTAOeDy6VC?tx zzVGQp)tr1X%YNw7h6PY?IeK%Rc|LriJ5$?zom1Zn9MgrD8AwZ%zp01&w)=0>pKsEg z=RLD*c|qeU5*$=>{}`#`)Ed<d?+lEQMaJ5RzXpi#W;2`cC9BdulqRsXY?vBsx!$N5 zW;66ti19rfD`SbL`kvM!+y&%W_m<>(CTOxh*Xfg+oefW8vz`gg(U^a{wqSWEou@-v z@*JIebxQoIyDuGY`ae2$a6_=))<J*Qi{JmPrAR;YEeI<6)MGlPW3Fy6waKfppv~{2 z3!aln4s;ce5t6HIvZ9I$VnXyq9sH{T+gH8n;N{C_H_yN6#r3~<u^{*Hx8L4865v{H z^|Yl}1-kd2-fu=%;Q#EqKW-%X&6{{p<wmvd3uGVZ@CzF8^$gZ<?k!n<d-JxD=pTRl zu_5Q$OM@3?qIN2!03})73u0Qnde^dP1X;E$*!7y5nrrl&fwbB7=sg1y+SSoj^lRfs z=h+}-w2JTxAAu?Q`?>lguvbn&m3GzJ%{r8KhV-IW30k4rmw=Vt3m?<F%4x^a1$525 zh3l~|<hM54w^4a=_xnhw`nqZ8<LE6RC0n+IBf*vk+VDjjwfAEuOZYmaIc_ho{?f?% z=LU90cj*i2LNze8lgd`c-})P~4VDY%t?BELJ)0Dduw^6g)%mEI;k%qWI{a|7bed;K zob4J04{`ug`e*6m;}6;Q4-Jwy%*xC}aF2b$(kkd<zp;0`+S_^bG9IKuW@wz|8A0U> z7j3J0t3JBp)q`gJ$faj&i~#C7s6jj>jy5LLl4Kvg!{c;&L2Lxl!AA|k%G-Z~BWR-| zmMa>l(MND*1=s@3&+*h@YiK#I_(>)l>hLpopxn`wXiGmWzu)V3(gDp)qoo^rmo7O{ z-l*{P)u$+5Y%FLDr*vzxk~zW4GkFC&JiV>JQp)}hXEWAkS--*l1;20#mTD(c27_$- zGw|Y_#z>#vQH26{eLESBr#-y#SA7N*Kns)VJNj!0=9WU!%LznKQoX7geFxUc^?OU# z<0Ct4iL&?Uj@OknVD+K*d+O2jnLFJ)Je~eM{evvHJ@fGc9$Vd4<2C!7ri><i_tnlB zT;L2Fq~K_urH%s?&fw|4lL{JwcXU&E<c>khx8L$3&UN9FGP0u4_w1?6!6S5SO&+j( zogCp&`Sq{KgwMfVR05c_zqJ*53a{(~U0hIx{s8eI26hln*^zlzqw32OG?rI=myahD zYSflrT^EBD%%iId5Ty4HWqtJ_9rn|}tij!8QakG0(qVy;&+0{M`44ZZN8w8HtI!k4 z)7K5k1kcK<v%g!w%NA5$`p7;P7B;Y4dkc53=h+sa+V1fU$vxXp8+=~=x}pZod);Wi z?*zB~cIJV%E}(xi)cVTokrSB(q3k|e*W>XQpKt5v*{ml8qU;2|YVXbrI6+p=YkT(R z6T-&=Nt{8$eSqfkmagw>s`c>iwsS2WcfQ587(Bmu8qK!-TvvB|Xs?oh)S+)jP8BT= z9!(~}jl^o{x3YMYfpa*c6P7=}{{H4m2Rq)s{-GtyKi<6Se2cv^w^dROY&59E=V1#@ zTcKzNo~FYt;*Y`3v*ISk#7lBy@3z82KT8%3Haza5ZOyKux!;B0^((dAy;3Zlp4}D0 zfI`Rd^3Zo}Z!mCaS63}tyC_YmwVl54L|)(0u7T`yGrXs3rNifXUxD3ATmA9vPp?Po zh$sArEyK?X%Zvqc1iHUAAO>Ss6=P_H)`->_XMC=k<%gVd6KYD2h&rW;?NXOZr+(qX zelwy*udmO4`Rm_w+VVf_-MP{<3Z_5g=NNM~0fisqr-`m(@4LGLyDHSS&$Zqj=_Ck7 zrZLwys!Jcemof*8JWx#CyYaWneIKwjOnLUq<2}3LL2xJU@-sH&(Rg6J<xK}*<&Gf7 zTd=2$hbLe8Ul|nXJi$T5oc!`C4~MHfeW&6l|D_HC1e8tJb~-iXDwVu$Q(hxf4CR2A zPoo=+6yHczmH{13kGs$4Z0Tke#k<7Hvd&Orqui7*ur;77z99@=ABG)GWR4q*mCF)K z25F<MVK4uJui(r81nU^~eqR*-=W-dgmpV9^2W*AA8Q#ePs~Bi{yyyL=qbymC7yJYV zI(}IFbd95dTVpIYUgA5Yx(11pLhwKvZo!wPtoq1+g<YdBVWaMNl2mkD+iO~utJ6`b z;e>C3J#aU|8vYE9s)lz@#@lPcQcs;IkjDp4$8UAImj<!qexA$cSy@XsJU#b`bu?A% zz^fb@;VsA;UKP?_Eh7??3X-1ZBnx<7)=3$WwNKZ3bj=_M7QvWIVmN&00VOqp_&Ax_ zw`WPQkY30*XTGw-6zX&-qy!`zT^ycu+vTa-i{wiXc&tMr8(~|jY~*-{DwX8GtSz%n z*Ubnj%Qid>sn#z9k3O6EDkvU`I>vq%#9x;|<CuI~c2xuT#NcqS`(mrMysF0Xu9*y{ zqQ0pU{h`3`-InwIBri@b?5}#xW;&<^uh=`7A;SndKCFX@Us0Nk)PaSBs{5S%!ku_s z+kBZ&zImP;8gagR@v6h7zTFJ&qh@j+z5J%tt}piLgU>kxA3NdIh&5|=Tk!j+&iqL; z!jJ3d_gV(dcR>p0_vlqKH(y?NLU0{(f$oQb_jf;b%4;3{Z9@F?wwQN;alA-YA9Bhq zSHAz$e*d)QeekwF*NAzvsTUEE96jk*G>xulL652zUj!u1b=a#BvQ6~xL7fuT7_@Tj z@G1^V4hH8_`v+^CG>@megPm-!wbnm<LK?kl;CxG!KUDYxxGl5Jx#t8e&@E45KK0EW zAG|qo2V(6a-6zvogz!`!M}i%#(~T$iQ&14fTQb&+y4k0<&49PM{Vd6MvS#^qK$H3( zcpVe_6)%F09uBJ@V0%mBRiPYaR$nu9)oW%*-JGr2ke=hq!<;fu>{DgyodPP)`hn^& zyK!4^_9!Ro@#B^?cQUCxo!TB>V)iil^lLD}J66SPyZY{$wGcqg?<j}YS$%Gm(Dp!+ zNd;~fl%IfKzryL`+-l2k!&(Dg_<~1PfpLn>__C#5%VTzB+fu6cZ8IPoL-O{Xcea4N zvRu*i+28^Nt6k`GUCN)=*JYP#Knp1NH1WjjWFi_b<R&`B&#XqgD|ob&7*5(^)pn(i z109T$c|3C{RScP4km2_DrTcJQ{~urVlUvr`Ebo)M_z-RjL@8uE(4GX%;9A!H^DDF_ z19k#ld-c-vfS#zDrJjVMnO+6IK_~j>KrXZCw+)OxN^aBD@ESeo#AfS4VF6;__9Y@Q zF;v%)zXNCRP8-$-vO}R9JJ6+#p4PCo-aS3acqEhZsA#}WP_QM!J+`XD>>QdG=myz} z9+NIXJ+i7wec}4$>0<Yu#$)x88OEFmlAaC6>gyKYr_ZGU;nBer{6nwr`60lBqrP%a z%Zt40pu%t{;qx5izN-^JywnF7MCt#*@8;lKEe2@8Cz-*3?`rR>a@rYwuFsUzJshui z#mSRu`mVg_7~|cS6orGWKLv^8v`KluGVr^l!{xQ2$!aEh$Inc>b_j-gVTksw66x6b z;S%20NUYpwTxf$I(gU}A_<!{muCumul*mD6lf(p8kg(}|h{y5pye6#u-`Pq$*2VzD z2k+K>+PN|Ma($N7gkSxea67&cUi;u}xN8LR_niF`9nUvNptFJey7X<Y3X3;h6Bm)m zyjSO?CzdEbC@B77pGr6hnjaT5v#;7!zzW8bjoWk|eZ%R}C#n9JA-u1@hgYy~@9QW( z6y&~Z6;&&#?i(!L`{iH%c=M){mftp;`!;{UVB`i@$zNN8FB^9GkdKvT`dYfjZ!rLj zcU$okpZNZQ@~4+sX|g5@eATZSnDA3fcx!+)d9ou0Sg8!YUiUGlNR^!g<1t(Yg;2Y| zjj!Q0`(NSlDCmOi4VHwPL34aySE}agrOmiDcvRWx`{;th*KA*Jwx1m4LoiIH02meU zQFMJ)=`%7}G695Oxd!M23Fp@uY^gKOK=i@XvpfW)9KWMn3ZHtwIgMETj<_~+p>Y_E z{foc)-OX=*`xhhFtjG@6h)GW?b{9yU7^T}%zkX9vhCu^59fX>?N*kT(fP*^w^L=I1 zp}%te;NG`#sHHGty8AA9(Bn$R2X@~Zg~Cf|gWdh|oqEnF1>s1SzlNLh??u|Hzw}c3 zxUPA2cT(`aGN;x{0}s%Q6U9-g`lsY&J2FWz<e{0Aw7-pNQO-43<$H!!-w+Fyh5?t+ zQNsru?>;4;dvKavt52LEvJ_IoAR`X{!#c%rIhY`D*2f39UuXw=9SLP+b=BV={P5rN z8Jmps0_M>WHdFL)_7|Sp%hoe|@n<#yf4e<(9#AvB%OhWn@JWXR=*j2&RpEmUTd|Ch zPL0R-5Ri?M!Fdg`l=$KgKTcZ+KMHrHYwhsJKt4E*?EZ7F%^sbAm>S~cidzP$&Vg1# z@RiXq^c~&!U_=fNbWZrk+uHYdK$j|i!2zUG7igDy%O@>0*|#SLKlKT~N~xZoa6ABi zK!Crzors3j$ybJr`l8@#-qBb}z>g7i$W+T+8wxI_+Dy>P4E~Gwbr-EV(G8Md=5U46 z1)tz1rokd|9l_&E`yLOqn;s;#!;5rpudNC0+J9u=?R9yY;3x(XQ!tZBe`rl(;;B(< z`%v?9(_b^p-pMLJzpIUGwmDhA!IG<zH+W;!f+fI4n%RfVAoma~Bl0zgug<w;t6TBH zn1_dFiLTD-)6KtkYT|e8gS0od9%VGg)$x^X939Fw>QL!nA4o_)@4&8Hyjdp@f$Nw` z(w^BIw0mdZ(>~8a?wg|cUv~J^pB3bK#gNmLpT7LFo6pY*aG$@t`CQ;(=5l^!bUeBH zwt?$9*CNyh?d^Tg!5R<CbKAZl4!;rLSG|Ja%NsN{YW<*2`f-kTuR(bC_WK38oB;m( zy?~?l{&kL0T)&KxCv-te9yK*M%dm2`b(}%0?VdnSC+u(!!K$UubjRLcgGT4INX<&a z3v+|HnM3z_%6=Q+f8V~Q&kZQ7-Spc^2z#>Wa5?)3y5L67@sPc<Y_?z`Ug~Se&FgwL z%Uk+srxoa;QJj?xd=$J0lq~Ii(*5IP%Uy7aFQ;ewnR|ZM>DBVtXU->u$bEa0=RAX# zBtGQ$zwKb6?;AJ}+kE`gvO0UZ!pXZ(KiqdZasi3G!0!W+RN{~Q)#ZV+<!{+xy@Y=G zQvs7#SWrazq%H%F22tLd4J@c;Z=N);@wPHfPc7q?o^FtazGpA(Rlo0<8ROZ3cvf}8 z+1JtCv^iZgYifY#Lx-OwrRCSBJGJ^#BPDir+q<rv8a3ybJx-r^RSsi$QGmKrzH@q) zO-0&p`X}$3Rtjia0^`l}!6Nt{>}NHblDxl^*CAeP{G)<vy0SJ_<HUpa1@BI9pTij% zcem*}K7lpowrA`zf20Xxva*lvT>PDIH4;!Bb-W$CY*O_u5O>&S3Ph^gq80zV>gRI@ zwtf8Kkf{bO60m;8HiNN}N`)K7Iw3i*lMNu+x4qGL@56>~1}nNe6Ld&_*b?);W~Uy< zM?i*aiGpUdu~|>E2L{dYmwtjr_XR!d%WO<U8+eHH>ORjuOpc)#Qp%v+EV23xTKWB~ zwmE%6bAdcOw~sM-S}BGvCvasMqD>9e9k|gDg`<7;^CV7Z%i41~64ueIfLS|sFh&L< zy{}HZw2}sv>T}_xHd*P}8ZOaRkdW_qt8!(IEWYY^&o)pDNcBMn#B1Pt0@Pqv0iKbc zK@j!HIa$HgwJHvP*$-*uJNTE<BLYD`naZQTSy14SqWdi^{)2nr&wy80`tbBj0kZ7< zuBg&ad`U0ybxU}oT_0-r<8d9o*WumOhkHjlMD(c!_Pp<%4hh;!Y@o?I(pN=Xb)vfS z3+|hCwKsR|CkXgqs89cSSAXmL2j^DkKg}eY6hX5yVD3r}a<a(imd~r}w%sQ|ZMMG- zd45st>n?f>pgl1Nf=B6}gBtW7pXi{#xc<W7RS!*1cWsGw?SXCAZoT%0{ORJm0?IGF z_DsO6`mGvChrNNpcAX!8_+vcGw{f0DBjr2HsgX#1+1g9GXE27u%oIP#?o~sz>W`|A z9nN-c=CpdZf-oCTXIct%^Wg344xf76-rU!nb0O%>7FNdAoHxDW`iFwuAKzAAZHevn z`p@~yENQa97j|cMEqbiz*^11-i?tp+=oMw<D|J3&=%!ak*<y9C^KF(odbesT8GZ^r z7e$=4riOv>*wXWo`b1~t#fx;x%=d`_>3zH)kLaGQfp4<7wkIUh(fP=j4KMKe-awe5 z(t<4?9hy#uf^@VRX#UenUp0L<l|CmH(EbojN!G7v2J0vpOH2xAkPf(VOY0W}*z8=D z?^-?v@04Nq7!X7wXpK}IQ%EI(rE}<^QQfNTy;Hqb=y!kJAyj{}5m+j+6WBsLH>`VD z>R4iI-<t`pehgQyIw;bXB0wCbA%Q{_cn&WgmnZvI{TR2;a=PE68G=CfL&7PyvfVQh z8aVrT_;ShS_vk*fpZuO(crk(bjUS$NkwtW#C9vx0gPzLxkib!jC0DmfF6H+ekd&bh z*#m1Il;5);<r)3KonlwlBp+yj-U{riI!|o}pZG__1}r#GW*wdQSeIE^HYH_bC>g5- zf3&H(*60$<W`6>R*40lw{YLjRCq<k*F8H0J#VbdTYAA3yyf|Or$Uhi8%;t=aGcu$e zCI;W!R|lHPw9dLp8NM0$9%>KpbYp~AhiHFQ2?h5TezOF@*tKu`xdQG!dOV+ObZq_X z|4RWl99*@7)uHiE&deXh0u;plAhc@$!*$Y|u|In{GI%N6W;4oqWILn|jMa68@u%NE zkpai+r8Io!DD`9b(!220e#z;`^OT>?m%cLLu1#*=e6;U`-;C+m>-uHEqnX6#DTx`= zC(&oD!2k*1_(8(dZ-Whx>fXQ?-ekhZSNnXP#y0^0cHaksVg0o7mS5(4X~UJFnU=W* zWrlFL$7W*G6>e5GJ-*FJax$T%$vRy7fW6aKFz%2nOEovMo8B|(srleNsk0OqTcXT{ zlcf=54y~n$bX+i|t0VKOT{${PZ{HPg{qcvlH{TWLzA11M2pIH2F*+>G!VmmCvPe%U zF~(GWhQ2yC;6hH9G##a90y_2R0JTXS>hm^CzwGmE9rK?(Z=Y_C!{bNI-rjvvfcx_1 zQ_HVz>l~^6S%raDoZnzQ>?G!=&Hff}lD*OCIa|r$?!nWWLfD)4@#5p>0^pDB-F^FA z%a#jtTe^H-hitj>o0eR?>Gd+7?{Tp`xykO0k@1|OdrDS-`@SIWZTzyGPse&2zK<7G z#7nbm1&*g}rx!Wq&%^nbzx?**7r*?)&69$6ZCI!J+^b;<%0K6@-xs)j$XR&PX_X%v z3ICiUabF<*vGk)Y_DQBQj5s?UF7#`<RT_tmgXa(vvgE+)vhF$2GO}s$gadWgjDlH1 zj=eov@UZvnNrBa4&Ik#o9|mR~$IBPJdgAf(4lK!*3TVgEi2s~3BR~~+ef;#MecZP< z-!~d_Z&v(sPDny}oRZvs_%XjIXEHn7PUxH0d6&HjHy#~3OAp`o%9{HEO1fhS9ew-I zUNQ%Wh5h<T?S^g9qY5}SkgRSpEtP$olN&sJfB@?@I^M@mPB~qrm;LM0e^XPIsj{F3 zi-^_Z5U&j$=F@CR90#%IPaekCoR3c(?6N)121zXuY?MTBwYEh+!}FF*veRd#A}=8M zO{;=$ux&DmR<E+!;6}WH;x$-U@K_lggY@BE8|3usFF)nneeB?*et5dJwB_s7vR&dm zdeG9&2hOYrj|!Cc+FrF<PGR5lCZ5ruck$dTJiTSR1px53%y&AuV2?dXwsqc|K?hJ( z1>>=UX{M6}{@!1278;#=1#KQ3D^ojhndyC(4!v)7UcY#kzU_Uz!GDwfe|^U;n-yO{ zfa?yz3ht=rw`O50!WAF7Zie5b54C*UDbkirb4=Am?~YG@9D6|qAHXUBR`j8n{ookH zwT0^%ps9cAQ{I87Zp$S20h3kb*(NedT@pe(&}eZy1(>acU!QX(hjty0%Ex}{OX<nS z1{Byu&6mF`RokSv^tIx%;}x1LXJ0)nKfa(It$wMSmc#En=qn=70>8D5a;fF;pl6;( z6F$kNps!QU682l|{J0Cdr-xxZY{4B(<wW0nkiiW*2<|_9&ymLlF`AKE;GtewLLUq> zfm@MO=cC_q_JmI@Tj>J|qI|#7j;#b+9~YL@Ysvkmo)b$dy#YakyxM^Q69Msp*}##H zC9?bg{=&ohfP)XYq^rq^3{=b}PWJf}e0q9DE><mhq;Ip_m_IQ&2dFN6{Lp4^b4-9T zP<mV6XCOqvCfD?5wK1y^yb96mt<@3+=N`0;0`CQ953}74?t9?CrUKFho^<qS`LZ() z8hoU057H}xck3XkPoK2`M?4N~GC%Q3^=l8|X0;mo@x{rDJ^xbM{L&2WqYj?>(g5D4 z`pmcO)BRv3w^s?h?wz>?$v-qeR}YUB)3q%fH$)NfRX2W{`96R774@$>*bv|Pu<J4! zsL}|;NDuqo;DP=<e$M6_^a|Je`XI0R+p7@iPtT``F-a_8;P@zNaFgcrzVtMBdZMk_ zHbUob@w|l4oXj*tI__0?bg9IpA9<d%YoL45lswlp{rda*otOckKqoV_049XduKF?K zG@f<lDvl}2VB!pJ2mvv8jQYw!GS2rwyyv@AQhw^ZE~noMY)an92SP!}Aim0J`P<+B z{Q_M|f1hFJ;5wM%t0Sz}gscm$<(qMZ!|+nE=Wy1Z6aFRp4)u`uHJ@BpSfi$2!{$Qo zHSa1bvpl~1f3DrGy3!<1sbL_ox@)zUDph+ad#Q6EPCkW|!DBenmTNULg8fkMaj@cM z_v<i%!2qri)idGkunUj03p(W`6H3;%I>{#m)<aMh`_y&~zYFeA0GSe(-w5!7MxQ^% zZ~Lc=Lc>^4ats++gj1cTj?rNWoD|LnBZZ!WTlaqMk4`b^jC!>lWC!=q3@e$-5kAv2 zw73hVzv)G^UGbL>Jpb^hukmbIH0pHeWDiC-%>YHy$$4<Yq}5j)$}^q=cxsFkjr-E+ z$SA$9HPn8iWhIt&V16BaLg&y8_6)_9FX82{XQL1^v`f+5@cYS_j5p=N>ly#*M2Gal zw*v?L<G}^D&EgERL*M0gU-XJ?K+fnG0ad>Qyqs;kJWI~WL2!k0z6Ffl8GBc!WW@G) zqpHtqct(Yd&<Z|{5}(=s@QS8t3Lcr@V1?a~Np%S>`=yBwu2ZZ-F=H!;BNGAT2{KLA zW#)(5Iwkx?`}ld0Y;<fkDjd#|tn{?{1i2ewu8cs}(rN+u(hJbh^Ry*>c%#W2U5B44 zw5e$82YzgMF-p`QuAB(^twTr4yKs102ll!dpEq@q$Kf<UP(5|FqbY|Za&j0fldbcN zZuM;WCK(4GpAKyYhv6|=tEIe?pE5azW}~0>-?KXUR|UD>w7lwNdlH{Kf4+C(HsoBV zTbqV7`vBL~9gSwcymF{zsv9K^FEd?innN)@x3AU#UzS9@%Srg~?)A<4Mx@QAedyT- z`-mEmHtUAoo&D300te{(9O%08<W>OCy9jN(vV_~r<z~)iR}ysBmcxeE(+(ZdAN;aC z#lQXapWl4@t6$wbd-<Z%-=A*8-b?OZym*=H8ilUDcdx^zp!>&H4)iDxZ)W#Rd!F94 zBuoIdLsA65RXY1QYgvWycQf?yP+-q_qla|$QBgQOdC<&*6-W;6u@~~yivrtDtA5^l zQGL7?MxgsBo0+D~anP2ZK7D@k@|$mNUj5=#=TO{j(B^&p+$YRwsrUQ#Yzxfs@pB_O zA3i?4`L>|%zOo(3Qaic}S^?DiADXG=T(-A4eBX4+@|!PD(<w8k>3Vwk=4}HA1@&fe zKYV_6^W6`RZvOCn^w%$BO}e5jS#Wr)%;EGo{E3sr9?&vsq5t5rq>eEm9qgI(qbnDi zQQi&IP7n3TpvPD6()*7b$<Mt**<a<^EqeZ;{o4jg7rZWis}S-G4R8md^a7g7!^OuS zi2$oGX6@nxQu^5JD03OF-ldynOsxVi!>>(T1FBCA2v`vW_w`}yK?OO?^q-A1s|n{T zeY1^lD-BMucQEJ3O6eqNj`7$NzS@W7$O2l2K9Py~$zijd1-)>^`}^+cA;<>GmLB}Q zA_^0w!yn(P|49QXM#LN-<@DDDIc3uqeErn_3aDLXYo8WedMEMhNcjY`TNM>-wu>!> z!)D(?fM0Q&?Hh=2WUA4muU&v0p0hDgY(KVOcke)kLzyix_Pt=A?9wm16mWpukJ$iz z#DSx29T`0^$dSICPwCO_QhpjWc*!C>X@vBopYGBDcT_a}=A-lt5A|8;Pz~uvd;udK z?=?gkc2CIbiVHruN})P#!h^_9x^MF0)w+%cbMk?8)T6v;t)dMOhUaD|dpfv!&YrLT z3*I32Jv{|ff_lk4+*}5MPz&QdOA+Bbyk%Mb%foUWEa4Hj2$;Wv&XUkTraS00x#^?4 zQfPf#fb65z;aYk<?CPHuv9+RP=j6ac-7vzBSdo^mkH%v9w{{Co6~aX@WyL}&*XL4q z=w9Om@*zQerr?zy=_5|SYoN3g+Zc!Y^1>k8%L9)<H<O$F!UlDe#y)R0GvXY0H@VQ& zU~Bh$Nwd=46-(f^9eAnTvNKjQv6j94ZUc}z{a-EFh>y+uKJ2hP17I-Jp6ACJ)KPCf zGq`7)C!LP&az1GFBbm%52%Zhf)}B8W<UXuFdMLoucfNUl^TQv1y!qk#w|xwZ*VfGB z;!?81e*<YLZ#d_32NQ42em~Ma(hutWaeYVqv~qZq9Bgy(EKVMuCSKtw9Pv;-cJIUb zNx`mq=}b?{#7<2&gW#Hd2%c}UPFm>%nVmZEWAqjiC<j-As7HgqJ^9Gkz3cd-A#}NZ z-ag&W1_bv{uQaB_DxSvlbd4lrIPwS#_XMN^Irpd1lmkaXpEe%`=w@O_j6@d8?=O9+ zF^|NMP4u+CbY(Rl*Or=G(ga3Rf(#?2{EOfHr<>pZ)9-uH^7Bq3%@`-}mzK>{i-wbm z4Cll&CRObk&Jj#?CG@kOL%s0T2%v|nDld!RYZ5*<OS{|+_JaC~6O3y!eia^^(vDF< z(|^413J=k|(|dzT89|>hMyqEj&rzjny@EkVu;Iz68>*}R@cslKr=hPNeC_%6bgDt! zS73c_8K3&AOV%CgG2AW{Rv(JiF`%<dBq{G;^=m<q@;zQ(!J)M#C7R6m%YU3h=E*0R z<z+aYJ~B(ekx6p#8_7rRUrFytBuu&SniEw6kddeWD(y<rHQ0(lqg#Fe{Jb_0@LcE` zFGd$S&jp4*&X-57ldrVu-79X&jV3yP@YBf}#iTc<tiT=|f!BqL<1g21dKOMA8#4tf zFro!9qURbo{Ln1vij!yEt1~!9zd2&v)$wQUR{#d~@QfdfHe7>smHqgp`e0q#>`6Pi zGs0EwQh#5e1>Moqe_yY$uS^HlNw%y6MR4EDX!6_1$^Evq;API#^PCxbabIOrUWWF| zjIL2ylM^~qfv#EL>p+DL7(IuU?&qM;Z+SStr?q%(j2VzX-#jV5<wj)iF{h6$+Mq$R zH<kr~$u7YaO~_hs9A^bETdEaaPIG*kazF3k)5>`b(sMM$+v34SolCDmA0yJrZnn1c zbsOaq_zw4KbK<W++{Jl(5<Uy;a}qdGKem+0Oqf^bMDaRtEBhRxao@*0<9X#v9aw~G z4>hCm`a60%hqtuVLH=YxAV(3VyP+|srM|Ca*2$yUMW-!4Z>I6t^SgZ>Rq;-XL`(8H zOEtB*3Qs0|MGD7s?V$?UV6w8*^G!kHyN@lo5_pwoGs)4#`PU9CDIz<8tNpj^`MsIM zVA$*WI$1VnSKDjJZ{LDJfr-G9lO+H^rdiT=A6h;gtY18PcJt@I`PI$e|L$*Ye)pe# zck`fG(J!SvjV8gaK==8JUXxVb53gH7U7-8!`{!F`Cdj>SS=#Go1(6-}vDx07jOWQ@ zCxbSl_t9);L69pnHzRgtHaQDA{k~hXZU*2<^*(Q~;LdB-%%nwxrQ&zt@T7r+XFWG_ zD=>Z7fWfDR?{B+*_02DDUKOan=*<EzzI{<Z@wjEj1*>n`kM%#kyLtC-f4KSK*&lA+ zzW%P+z8`Yh!r4r0GYTK<qipZAW%Zw$t^NFjUW9+T_NM2r&H83<>G!9C=Rd~54-IlS z36w4VL-@Q5#~*S8x5q0vzm4X%&3bSDbosY;*UW?&jOsCnK?Bo@eP)}+pZd|5q;Ike zVKZ{IA$i#bdo)jf$Fa$VRwo`_2PVzRv?;e5t20Lo-k%CmKYgID4a}ssPn%8o)F6nq z(MxrLEr81jEuSuZ`_Z>;rAJ-bhyaIvdN=b4*s?vzi(g~!o#$j6i*~=Is?qqgfeZc0 z-pN~@^(*vvO)LBb*L;U~hGcE#wz|<B7iOE*VEWB&ad__=%z2j&<AAjx+)S`u1798{ z3uOhE+SeTJXxN_Nek*5>aaE-^$5D5fm;LAhG&95o*7yr+mkfn~I(YbP+5FQ-2B>OJ z(M8Ac$5KmebnhW8eY1W2K61_eggd#<+3ee(ieSSai1%R|1TYxF7qhLvY@Wt)1_0|v z!&e*T`d2)-CczrSk*+@3!(~gB+4{*{TR(#<@@>{fS$fllCAY-YMc?q&`3K~1Y?J$P zl_l=4()k<82Iq0Su%Fy=)<~^>b~ao%j^$^YD_DJg^#Ot(Tbc*HR!<dZ4(t2N1hW-f zMshu$D_;7tK`cR?U!RB6_+7dA7{jx)zWJS}Emd@-4_%`tWwdi){mlhuFkL5zIQP=X z4_Z5$rTY07{J>%CclGG!?A<g#BCw?Yl{$PKC(3=Thpvsk@h&I^Wzo4+Xc&*8@{*T6 zia&P-xeiZ{ug7+>4e4L~wt;4`2Yc2yY<e2(@G$6Rd&+c|K9&dn!C0Q*+;6h1=IH`h z@aUh@y)_5aY;q^vQQn|57|Iw7@v5E4p>%yF-5I<FGry#>{O7F>OGnws53?I(Y*6w3 z_I-2|q-I;ADn8W4!aYT61ynvngPwJ&+rzur${^pS52K-)=!WeSHS%V3>v!75^r?>- z<IlD2_q{9k`wpP`?vDkz^<_U4^ltfZxJN}e&?!7N)X9IX4Q7w{5_mkliYNYVYx8E- z^~av`O$xum8ZVN!_DH_L##F1j=HaKana$}IJ(yjqUJlo6$@rM{!#r||{53dV{eee) zj?8+VeCN;55$&sQdP>eK(Q|3nXC;2Uu6jP*zvPofcmMRt22pU;pGH;wA%<AIyZro$ z000B*rVI1FI_qT~u_?U9X>+&WNP{{A89#9K4B*RksxK`9ap6%NO#V-Yo!o6U_wWDl zKd<8_J|i&{lrln&A?V+}r}*j$F8If}O>i|bPIPiRSNAUIC$KvVA1~nM;mNXJ;KTo# z*3ZGl)HMXODkJ01u9b-+X1uRK9bP5oJ~g<=-H1=m*GUd9FoVW|fX;aMp2KiK%Ja*0 zggt4E*T63zzc3gMUln2sl*nWFjNZ_tM1WB^a!N*&j6IIW7Yh5HWM{O_p%P`uDCnHj zX>^nmr$OK;Wu}}A3)(gk*YYo;vz{ZBlb|m2$vexU+UolG*8)DNKjZK9{*)fac0%Y3 zx$^xx{6C=j0l;+ZG<X0npS4CzIDEZ2E?}*b>4{O_qhFePMZ<R=MSMhueG7^QIQgMd zy$8F)XSx6{+2kCK_(UaYFZ5}6?&snD^7k9u4OD~+Wqx2JwLeB<^(d<R1^C!?;n}HE zz4Sq+<5ONx&(~yfiXM2L4WIpl?N8UKQrgM8PP1PE3d@{!dSc{z9gQW*FNz4CN8>Zk z$_Mjfh))Lz42Ni_biYm}{uwyS<_=dnb3S!8>D7HqGk+zo<xchy>7<_q?6XLz8Nst} zAKgrN8KZgaBY7!ji55d|Mt8HeVPLPVWy*J@`*wI18U(ak*5z4*atfqz2pmAQm(B+V z4Q387mR1>^rb{X`o8)9!xV&vNcFuAH8dP~+2l=gKQ5^#GwgT__JRobj7P$L@AF@4r zVS-sj*H6&D-cRrLo4)rc-$u=ohuIqMCw#UUT}!-jFgVHu?pvV|ot)^+!t`DIFnXj} zUiPq_@lz-4+UK}EHqpU`?PTTlD{V%MQ;`GtDJPqA`=mhZ!-G2Pf*1D8V2=RtLv+6j z4ifDp6}-GlX6Svm!JK4O-q1efhJOJ{j>Cs$CC#w^>Nmf>`TM{B{mt+H_U~?f{pY{E zc^hx<o6&vo?aPhW3mOHX^z(7=1ulAN7Ol?z?nTZ-_~ukRdHu~s=IwE{=W6dn3@;}{ zJA~)n%xbuDBHmWUk}XTMwpX{H+<H<cbH04_vf1Mo1-8%Ag=S3Q+dGP%6mSc+pY=KK z8t)*lhtE?*v%k$azxrh})6Moa>-)G5`koemy?xrO^KEHcQr^Df*WuhU@Xx(F@p*W+ zvb!b9IqS(K#@8O2O?c33du@UIo;7p)qNU{1zm|pn@I!$^JhQjj(rzdBKFQu2h!W`j zA(**x$>!P3>mMI)#@&g@_svck$c*eY_t`yKk<RKz*hTk}m=uGAv!Utg9OY~Peb)pm zRTh-!w@*XS9<}50l(eOAbWE@=78F%R$1OVa73r>naNadq^59Xc2f8<)vgMH7v!i?E zMKIuI6_KFQ4E5FarcxoP-f$@oT-f*7`fwOxsx9N5jh=9iubTy$zK3D;ZmR`4SFFAP zym-pCf;l@|UHxR<<0FSNdDTW7_VkI56#pDdW*Ia8#$cuspluD<v)YGcj{;!tpJl_@ z9Cm+!gkUxf#`R#T>+~^D+D!LoKkzK0pCrn&6&UiQ*KCG?t?u%&x(qN>PCEZkzr(V@ z&rB`eT3NEgukfMv!NKIiJqzzp+w53{Ci^ACmxt}2q$~I(NZ3+kx=_Ad@gk9>2f>bi zQBzU2TRZDnDdcx(FRg-w^?^(_JvjItKHvqNBGN5sWzXs(uCv@|nqXvrFxdp_%#@SA z$NlF~&*_UGPW^Z|K0<osO9u~OmGSrUYbiaa6KL{#ZAZObyC1|;pW^dz1`FrOwg3CT z<$4XTOS#b7MdzgZ3`VKfdsuNT$uv=o7yAwd{m0i0>go@&6=#+;{Lt(_?S`&}hnd5z z?i<RuarkY>cEK$)FKyl6#ZPwQ(7QgS2D>v|LSAr7i_IwO$Iq+$>UYcI{0IFs8RIiK z@#6$=JHRiSE@-8t>bK2<9QjECaBWZU1#j{*5VXDpj@gW}FSxdwPFi(g0Legzfp`O9 zw!J(^&u!^_Sm0@p?t^Vcl(l$8K>1nVTcG=}0mo1I2iov${Q`e^r^`pz^&rfMn4J_C zn5fvcy!!VC!Tg*Z_Ia4yx(%N%*}8Wf<oNoB&hTg^_m8jNWy>41ZHD)r{g~24M0en( zwUb4a^(5HrYxgC_hv<oCmQ?Rq&lU4w-ZefvisH%KEVcpW4wKH_Zm0^Fey~FdRxbWv za3xAl4=7Zb7VDH{ZvqMCbhT&T(@`kRMwd1a+6R7Cdtj2Q6(>+Sc2qeqT$3XJm+Sfr zJokTkb^Zp7N)Es&tPz%wfcMw!LFhDuYlAs}PQ%lQ`8S6<czhKHd(5F!evm3LA~53A zg(RlMrDJqmXLDik%{RZe`Nx0$m-guXP5YAC|3l$(1UEVqTM2F0R`diX8mf`to~a+h z1Ah$?R}*7ZDMT?`@Rr9H^<WssT>q6vneio@uROXkdvg9+zOsJ3R#)W#K0FJ4c)^pi ze0WX3M~L3bwahEvKHP>U0M};+myuNx7*|||d-ROADa?!#Y=%SpE)8frJoWdZgwycg z04EZ;DBIv)i>tp+D4BgUTZD&3j*hV_jUj3Yl~*BXSaWdV4V_pp!4O>#KcZHDP~k-k z!NeOJ*F4d6)xYH<iwnKi?`s}TytFDk<<MXG>1E04^Lyoj%IIyDR^4F2YrH_eJ0<({ zcy#yw40UM?c))r_e>@Ft^;;ebu8vUYqnGICWP@3EoYB%~H-oEOp9Lb?MRM7I5!^gM zQ|arFpdmjRMqBmtO^$Hc$&<>36Hpu2LDvOWbYE`2KJ(l4^Y4jA9q8*58o>X_b>Yz^ z&sC=DaLR89j8}i<+ippz_wVhUcLf{Iy1xtB0?O{^tkwBM%mO)b8gFV7F>$o3TnCo+ z#22_l%ZzFrVhEA}Bfc4}@;(i(Ig<udlv{8GoOTyoM(&S5#<vCJoVUt7s&mx2I*dwC z{-Sg<yIaOwV3?njyrQo(dyGqp&N^hBV#Cjt;b}+S{R&TQyNGa(1qV3ORZLVp<rlbm zu9HB+vmDuPDwAz*K=?~Dam{d=`mD3Fd}=l?{*om<JF+=)CBxA8`oS~$W9ZdhQm_9B z)pgq2dt91j<!0XdTDc8w)keS6e$CW;u^ABWjv%%S>R~f!2C6uVhqmL~D!UacAz@H! z`x@&Y1p<$w(SdcJ8@c?{GGwn~*(+J1$qJ9QlyYI~4Er72_oWH`1xpWeq!yr~CHc+q zPYCuIK5aJoum9pNZ~o<9{`KY`{`T)~e({T6HGA7@kesyH65waekZy@__|s>)^DusX zF4%q6E0aFI>3xLcW6y2}JADqOmiN9u_hYAAerUG$@%Q!?ziuyY&p7otGLH&;ogN*~ zcw<C7`f}_Av9DTw?E7)fym$7(<%wm>-@Mq;<hxcSJt@EzY~SMLZ8Ob}3VJ)}DfEJu zAn8Wra`Zo&QT#>wjhltLYY^nNliWUkAFqRb*Vz?cT0VZ?vS-2Rj|IPPzpKp`%sw%I zNZya1ccS($x^GYDcmLJ^MRvKFZZpgdczM%|u~V`wuTJs>{<V^3q~Z7a<%gReTRQiy z<=sEV3$J;4lMLw|TNvkRRGiA%1MMn(jke!W(RJ(~AK*4U(htlokp<h9t|wwH%>pWE zMfG#Q%q7xGD=2E+bGYAr$Uau~z9oM4Y;XTuGbok`I+>Z_i!HOY`g`x6+{%gIs%O4P z?bA%VfKGMmdwMqeSe>=v(d60HVcP6sGTzKkGPk;7_DY+KCv)~z;845)E@+3+26bZC z+N^ea!J9o}v#oGg-&B1&94EZiKST(A=@TQX_HUVb_0=x#lF#f|bzXf3LeVEHE0`yN zy%wZ^)Bu2)Lx1vnWtW*Tm%Q*Dem%zzZIW|q7Fd7KzuBk_utozuYOnBR>t;%m{n|aC zm3P{+MZs2e=v&v9O>e4$N1N2aT_4joy~pqQZrwK;vNpTdCsl#+2HH?&wtam~yigL& z2IuLEEfe}t@T8N0kM@t4)~lqu<qej;5xtW=9RLl;(39T3>87Ia++RGVw<Qez(VJ6v zessmbO-okBbJxlO<Q@#uXzKDC>^|tPRFx}p%8dqi_SxW&yr4(JU`O=%ed@qexNj98 zE>!Lc|9U@Lh#hpf{P-r|tVL#PYXj&FgYmQf^ly8MM)}s3%b-?bG(+pe`LH`>V54w6 zf`>%)4gch!{j0OYWL+J7Tb0H2mCT*l3a`p6_$`xH4((abClvgsa)YIGqMzgGVvi97 zygmf&;nqsR*3d)`yo02!zOKR8b&$z^_1l*7TWRpIKH$MN%O3tL%gFu!06+jqL_t)2 zsm**6fYv4+WIsN9dcFD$NQFjtG=tlWEj@K$;pYx(Y|ON0AB%yrD$%h$u4{`8%=;t5 z=nz<cHh@hhJ~bHJ%9AhIasjWj2i19>5AddC%HRF__cwp++u>7xDB#V_h>$FI^`?>I z#e8!-3*5G=M7No7t5-6^$4_d4<e{@RD!!Fh@x`k@_a0{att{d3P3-Hx?em~R4r5w+ z=#a)TM0Y<YllA>EVm?lA=o}E!xxuTZOS(a;o&H}s+c`faU_a^U(HCV;Jo3|TSV_NL zgRidAjva`Gg!}V6*SzU5j0t5>mI<t?UizMQe+5t3F=$b|EGz4&4y7MGoY75?o>>l( z)~~*aqqIvKU&C30@U-->JtO5tR2tp<o4^12oB#Y@{;AROyPF>u=prKDFNecSQPx(Q zs_2EeV?xY>PL<D?mF)!4@|5n`CI8BG5A7?{`uQ_PVK!kXank)B`2F`&xz+WvJbt5E zZag&GlV)FFsTnPx!s~qez6!Sodp5%=9bQ3HaySgHQ%+92T?g15%dx-VI?R76GerPH zsdAm0(D*qXr@ZH*-GAjL`*j9H+6XSE=TdX|PA6mOmY{btMGR>5=~#A9Pc1`r8$E|F zYuYvA+`U@Sr!x5#{PuhFGL-%K=fX3~T}(4b()mGFUeD$z1d4GxIZ7|j^yQ+D<&LkX zOoc%O;_G$9({puaxH&ynS&bKP(=(KDuiwx$LQ&Fz7Csp^ZJ-pkUpm^za^GcM=ePE9 z;kV~KT*neZI%h$!<t2=XQ=!+7NF(nqc)1KdxJB1^x%AWij;vwuQ+}9SFZhtc3H*P` zGk85bb)0&>@?nLmDP^F4Ixw9hM`xq5-CO?a)MAG^J$GNGr?ubBgfhx_=-+TvKYoUD z|8x-BE7Z4Tjt@As;mO#NA7i;X!^1vF%wHP{uJq5<vq7))wf?WpOrq*80cz~Kz619z zeG=3<Sjs+PL9Ww@@A`1Mx6CQ$@sVdmxem`k<3_#9%h{`&4CnMJT)#MVJbC56mR9Fd z9`)}O%BD2853hWdO24c(deA8FBesvfeNVT{dXA{U!|L%UeWW}jhh<~i<=Is(%NGyO zY%t}>CS1!rCn8*))@gf1gZAnL^*dEk8x3b$Al5c&*V=ZHJ>Qj|yrR|2<D>9KH(lLH zm<<HzbQZwZQQKGa$r3A{4${zRn`I(Pp#|9xDF^#q1obF=M_xGh{V09bmUY@+I&tQ6 z!Lq}5{^Boxck|!=`+vXr*MIq!n_vCeuOqS<uNd}_!%{GNTc5GhgrjF(TY<X{*-Y-^ z-Vgl6XnA!$$Rl}Tx!826AgaLkU3+%l_MYH}Z-0GrS1_o~rkD0wB&R%oDoD29mt<}W zo*oroKkFUu&zsSG*39hV0?-|55)MxbNMA_r`J)b+N_mRs(q$TGiFbi6{%)H__Tzo_ z!pXu$+%1uQP!Rf=LZpK`inu+kUs_%rnZ5J)mj%MVy7^dr|Ng@tZXW;N(f@tHalz>) z`!%1wym|GTKM%{Bo9{(|$?H=y($8NMT&K@}{7$c733-m3AhtX&d!^KqmVf{7ya9kl ztS$Ndw?F**&HwoBbpsF0Si~oXrP-&oCfa{nCYTPK!O}#r8fzOgbh6AQ^*oVAp-;M< zOm~`Qjxt@<_noDU)ex_>LHH#0+4)C1!9S-j2Tj@AW^+HhO*gc!fErj&xoczKHrqgN zO4_Nr>A;amENDj4ss@K=*#@=#B3-PJ%yEv(Zqw&%t@P=|MZat7p3~b<C{O&Z?Z(;B z&L(a4JX{t8qOpA2=NcT&`TF?Eo!5WB6*t)N<5OunaKb13j+2+IBJc{2N9ofuC!mJM zhh(<Xkjt|msk*f}A8m^9V@DTIS2v%`iPQJNN~tCneFcKxDCo84PC)InZM;F-*`h&q z2S+$<uounxE__G^kr175FcW-c#MJ5ZTQ=Fi4I0U~f+fYfQZjQ(?@>2!j_=8sA7QM` z)AjA?kMP_8Mh}x~zk*}g`T}7zX2<l$<6pRtLCEd7^9CL?(&!a+`cq5Q7rd|9kSHq; zW8calEIv*@-1oWO_q3m-b@2(5f#<QkyYtJ<uAuC>AImeGPJU_ABfd<y4d>FXdVt^X zAR~H@_OF1ickl#<Fxkn<TyZ@(9Yn~<-DKI#q2cJPCx=Wr(+9lZY75tN`8T6lZL{(5 zFl`I3bhGjYda9=ub}SfJd3~4nQc5tOfj?_2bf53Abh18v19RuqK*J>#0A!#8JM=Yp zfJXZCsXo$MKn#Y@mkPezA(0)`?>m4kzx2Yp>1Foiyy~yI@t#cx#^Fijqm9nuH(P4u z&jy>*?^*_|lS%ltI_6C3upbTnl!j*(F4VbZXB((XSNXuU`7LhBj*f=lf38h_ZeTTy z9G;&VbZumD0k1&%Q%k1b)_1<{oQ8k<!w;L${qaq!jow-brB3ZXJk{F=El!)ZB-%i> z0qw0sBa%LFwbb2f<zmgHuaCw+%m!n1e8WLDNE`PqY*95C+a5+4SGJrc&J6zZfANY; z%C_f~n%^pk&7yx_^}04VeGF%8hWqdj%n5$M_^JK<yli0q!=>C+-#w7`Pp^E)fR!=2 z$_zCX{Z#Sr-s3|I0bPMs<Z>N^hFB>p<6-3xzokSJwFe`PVlm47rkwHX5<r1{khIU~ zzx>NT-~83z{cR(-m%SQBYGOR58387cuM7$=?@F4H?+Ip&j*x%`A-fAxDD8eDs)Hd_ zrv68t=Y7^$NnY*}Tzwq@bPtfE%3XN@AJ-wj{{yD+nO#^glmVDyxq7a6!Zn4tl-(%t zpnz5F<H-f0y37*wbHQaf6r;d`s&$;zH%D8hK{$C5_4or{06aZ)9UjG4Ddiy$PsvNl zl1J}4k`&*lnZ|qDti{LoHSm^UebMk3CysOYKx~dk`L^LdK$BOXM{B&%po|dXsrt_U z-G!_rA8<a26%H*8#S+Vn%8u}3oZvXU?0axlM>y#4(>+wEa|SRtlbJl1I_JETft=+V zemY%cr%UNxdBKW9$3UR3pmR$!v{uj6u|`aumF<4ZdrD_?@l{TQouB6$Ca3(Vf4`Hv z_PI97>#qPj7wA@>(fS(F96@}~lFm2{JpPBz^{V=dkpcf_b;t#gE*QA*_$v=2^nAZj zzN}ZA%L~@hawb!jYjFE42gmDq%zExXs_@>yQ)L!V%6Ave<2zJ?jbFnPANNT=g1rF| zPE>g55T(I25DVP4f~0hRO@>Z33%uezH`0~8AEGNOpiD1xcpc=+KQ5R)dxtkuTOcdA z6`-F3sG=)c4DvWl_i?Y}@j9XA;nH6Q8|-u<2X8a<Dywd7fUa69%*;Vz`@)LmEZKe6 z;2k}@>tHK~L^<}~E4kXXm%~{Hm*aU3(uyCI*PqR~j2FAY+Z`U_7@FBvZH~<uPa`-j zDkB(&$6=FPl0ih<Lu#vtKx9l}r+WS|eC&5z-%$B2fo%WnV={<g=-TX9aK@L)JJFKO zq(5P>(PEDJJ9~|ycQ(oK$-&n05yfU9N6>FyTwFU#7URYG8iaSDbIy0LfA#C%-uzR2 z!+-s6|I^K{fBTntL{7Q1lB7AC@c&XUz>$W<7eQi<hQM>%ERx0J0#AX?AQ$A`8c|Ol zZj<>&umA8}uUTp)wP5&Jvs(|yA$&d+0DNdawI$E*TGp)1S#oUF_OalxS=Y1t)NHK* zk<yDuEe$uroA2HL!m$Gm@wF7}Q!uuik#NJ9<MXjSxSyI;h#i$HTr5C-c;}SsX7}G& zx?Hf#22;v{(nrk{KYH@1RS3VixqB5a{`lR^>wo+A>S`dP=XaMS(Ra-b-**rfoz^Y| zG4%9dr+us5sny?p`%O!mpWWQ$<vguyjqm3FidSE9thB>-IhF4lXntoVys~C=c2aQ8 zA6-EOd%|X!E#wkzHf}bAyy>b;Y{^ge8^}vXNSZ2|DQ_Z$1UE1vu(#5{(&5BW@E0$- zHxqqZ;Qgfh=KwWMH{GqB3RW4XkTQ5j*U1NN?B@Iu?Y8`DE%D{rPKIJQkCw7;mW+d^ zZ2zp((e9OF@2A`JcXCYk)(-Y?Z4x{)8D>@IKvyu%FW**JmEY<pHjb?w|H^Cc@!CeX zWO@*?wkT-b-tp4TUTVRl(^qrQYg4UbuT6w+<<1}q{sC}!YftS~PB45CqTb09j!{LH z%I@Hp_%85ZFM+_V?bA*N%dmVnF`JXFJSo3J+4hd);4IMB{;^$tdHY+yML6_`K9`sN zTmxHtTAy2qOiSsN%_j(f>Ef(~+26{T{dK1YH#WGcN?#DehDc!iyV$br&0WE0ivCcT zKMJPbJBX_K@jzhAhVrq{x%?NprB8##ub!3%ZR$Jx!yi9S-TOLXn4FiVL^iYk!UMGO z@4Iw`$CRM1j#F5k4QeM4SzKVPCiupuE1t?-FL}s`|0a2lDyHuh*lv$(^1~2yXT?j4 zO0w55wcBtr*rn~CJe7}Uo794V0hF$_?+Z<I&_Sf-jF0ub)yMX4_1|*$T!0pwGjLkn zm7O0sJ8|J-ZDOZ_2jdLvkdea+E2l4GBeHASz_u1#_&$E3q0jUb4z+jpIF2SK-TT(W z*<Sn4`N9TQ*deRE)=v0c)$^nv*UE;i_Q*D{5!Y3DPBnkf0Hi|{ZLRp!XdIZ^(o;V& z|5e*|;MCh6(%X0;&goTs59(hY7<}xRHxs;WmCg@;>_EZ-UhmD7mZVlU{si{OkK8B= zS;lAPER_2`JP*BH-Yjw3$3S4L{aT*d8m#lD-H{)D#<cNT{~N=qp*Gm1|1*GKuqQU{ zIujJ}qF+|jk>_-~-*nIY+C7|lHosE6F=uv<eAw;fr4#ZUy*T=fRyu$3pYm!u@PGcj z#LIsh2u13d#Tj~g6b@Yn;1Xg=H0}a?l&rGK%D2ChKXOt$0YJYaEUaSM$+5$B-1j-a zdK^5?z!VPPl;fK}`?H(h|MNfH{HFKk8qK7ToI(MU86L}3Qc3C&7>zQ8ttfuOh=9i= z!jwgILwo;?u@d^VM}38p(kadwp_Bt7Ko{!Z&^-`v@P`+k{*0#U{i=jWH!~#V-D^V* zb4$PAu7j)bZ21r1yN>4I+WFU=7I>;#z1P4%_Dk|HkZ{DS)mNQxlV?gQ9fz*<1iptF zMjAC9cvdr+L8@>WJnLWIQ`9*J3=Y`I*_uoZqB13JW=97z9#s_gcF=&%D4ZS|QksAc z9@s$#@V2k>fl)sg#VxNwq{e_{!8^t>^ALVD!}6*>IuF~<J=7W4U`*fEnAC|I;JbHK z4iEYd+^e3O@sWP6_)#DuZw2=yoqij9ahb^r<K3G*67*yPy1?y!Mb)VM^{d2Hu_TNL zUw`G%_{oK#lFCU0U491jQnK_x*l*>=lhU*~#ssZLw@=k292oHE!iRISAA>iZl}nb@ z*P|J+WdZL}C!Ti8Uou;0napNI(+&GtH!B(r4yNK@FQ}}*mbR6anhX}4BXM-YSp8@p ziq(Pe4Oo<Kf3l;m4C2ViGg)kzReX9Mf6&E6!Te*It1sQ-SZ+^m={he<iv)Gsw^}E; zWxXLf=dQprPdZsvE_&8MRNn?}LY~7*FSU!E65Bn8(7S3`sEz14gaYB=N<YnJ?j+mr z=hSf!=9KsQb8X4qw9jAa0Q+VaB6a2H136N+s#`~fXEM+cJag%ag1R;((75Uoe(011 z-e%0Ugi;XZ1Zl71DRA0|G-tAWPPg@~{*6Ry-|6+Ewcn&8cq_{eio)x4c<MeUR12g9 z?3RA<G0j|0*XR!0(dX)XPl@m&I1WzQQr5CrT4m*iff0_$tAe`U|KoqY`Nx(l|K_j% zwpq(3$r`O~n`qE&Cvqn8`|x&%4-*T|PnDl8B(KlOW`Rj~a^x+jCq@T{-M7CgMzn|Z zG9$<?N3)NmYxZV2l*D_0Ir5JSbRRa;W@dMR1-@qIIK>Z}IYTO^!D}8qr$?JDFV9B! ztLZ(bFq-ECHq!s)W6R#&bqH0bK*RA-f$OuDHXBs<^rd$;CNBX^(|OG@SW=erF}-hV zK!;tusJ0KyKD>*d<_+R^I6nVo??^V={U!(OVN2^C*N?vV{OaZx!T4Cvc>AnZO}%`w zS2MkBaKgUdmkk))Mc=#cUNrmr@4a%W!;GTkU9W_C^5MzNkLoUf5vXq_nyw@-vpmO1 zjpxZy&=x7PuT&~6C`Z@DhUr%pNcQZs`JVSIZbz#?sq%eW!flV~yAPc<+Th8P@Szt5 zzvf?r$H!&^1-S-49(Q`PHn^aU0vd>N02q^?&i*)2_^j=m-<5@0f)k)^ASQlul;nvu z9-e`l@Y+CKCFKu`<fq1D9!!ULfwp$py|%xr#5w7eS>ufc!PEvkN|Il@(Dv;ISIm-l z2c4<=p8myqHi!K<`wG!{_V5aTPF)8tbtRfUaXz`qXL+)dmTy}wZY9RK;y`VHsrq7H zbT}Y@4RdPwY}NP}E5nUt+5lF;F}YX82J*C5dy2{0;I2H|wu8eVLMPEQf3Dy9_wfS~ z)j8)nyZfPmK(oqQJyu;ixtW~$0I)s?VQ@;v^aW)*aHDa3Lyzf(&wMxc@lAbn%?at+ zD_EA0ZW-vx=s(iuaFc(i)o!mB*yvYvMWH>K_8b}|UO)YW)^vfExSNa>>^i{|G7fHV zb)j3ypM3K}+rg%~*-1K9<zH!63k8oK%Ig2u_e0{6rtal0t-J2=E;)D4-mWi+=Ch2r z-xb|KQ>WtWTrx#{I<6M5wCRMk{=x5UIVrzAr0p)KjYe|{frCS3^?_RgpQk=0ZCyK~ z9bn{U4tIKsC)(2nLCQJ)Ra6^M&R~y|(oM493*0ycTR{*!f2%{~VS&Z$#<1zjz=wCG zgI89pi?`Xu+Mj&mSxln$Ck}~k>9~~zbfz5Xu`*Q~tq=QbuuHI<CB|L#?&S9dF+X5e z0raPL-?tyP_v5yT=Rtw4nPgk29@IA9ci`0P4xkd~zUehW@88%LTsv<W#3S2ds&{QE zSo)Yy7@jBC3~vLxrR{ZG5lr9N6>03*nP3Xfej^#}_^i#2W3>wh;yD*VUy5C1Vju~S z4gADweWSk(4#A^;o|6k*)aNe_9N)WF7P5Wt^%PK~^kgla&T4l*1;f%#`?$8N>$3{% zk`Bg!c}+dvO@c!BRI-K*&wWzl;R#WhF95pNNu1dv;>DEn3_+BcRn_=#aE%zC@<GI9 zS{*|vtt8BMz<~~FBMQ;_i{JkG=C^<SS9RVmTeke;9MLtr;Ow~h7?C<G$k2$^F|2O& zqXFxW0B7J<&VykBW7&4ew|fe^ER+;gT@<4)@ZjthA&tpv5T%sIvkL8dWh=B<*1nCL z8i7}agEQQ~lb>>>K{M)R6u#zBr;fHdC%k@V6*$G?E!;*SC90Act8k&*dlGz&vLDAm zreGl~AS@Ag{L%0^74Sb`hWAF*t~kc)(I39Pb$l8-CvCjTIe+rBgH~Fm*N}NK%qhu9 z@(LC~#gk6=u~+cjho?8+w=Bb`SPzB=oe>h~n5TcVDcB{~ONLPPVLT{}jQ3!A*7NA0 z3-~}T9AS4Z|9?G@U{4RX$W9=#GMJOVXAHw>snv6BU~~G*V;L2Q8sTK&*LYa*OMbZN z5_I?LSQy7>VsK})7Zha-;J&gM(e+0ezcL!Vb}+%!AfU%znO8ptiqpPRF0-bdjU7D) zZzHCCZ=^6T939lH3`GA&IdXBRis4Pyji_p;`%MVoGB)A4KXT|2#L&%0;|03mP=FTC z1!)TygJ-#7rvJQyw(nONLNmJ3yzer*84LlUnhuZD<@W|V`kwB2rta{(V7(4(zwuU? z;NI2Q2%4QfXq1^<a>$O+e=|SpkjZ3v#s5u8m9w1O49U}I68Jf7xQWf_kYGz5150Eh zIQ)|LXD0JuQw#KSj#=dikxmJs?0V6y`SrX#q#Q-^1j`A)UY}w_b}y|Dw~amvq$_K6 z>;^QV?OpB4K}~ORW`Atv#(QV$FQ+3`hS0Uy&*~>rcE%~PST$Xi7{%=6oRIh}An@+i zyNG=8qSuSyLrc!gay=*jvQ^}Bw!=(-S;z$};mh$klEM%UhoG@~N;NraCiqG19RCG^ zcqJft-{D8+fDKMdb@84Bdr9O&ojTp(3_nUp_FGz}_%vS8+f;p>rjhxVIrqQ#=2Zc1 zL0QiJuYdjPo8SM#KivG~-~Gc)@1855V<zf5YI`{UG6%rEaBbXjHt)Wk4ur#Po3Hgb zJ6E7Q^vix}H0ZqNaJP5%VXp<cd+C)uksM85n!z+t_cWbB)2C$OwBDUcEokNl1Y>qN z-n>T><trfMzCGGNNjwXuL_NphLHxf@uABq25xkBEIXU)jX+v+EV%>?*Pdc#b+XB@< zEWmL%)`J|N_dnP>{ORV~SHIeR-MfV1y^fCyT;Amn-6kA+hMzv^-N^BWY~Md<S=^RY zr#~&1GXs9t?CmpwPVnz~4b!);+Be+H!IzJnR^8wS{`}_EvztG>>hP*&vmIRZv4Mdf z8@zb*HhL}xs(q|Jfhiep@Gof`M=1N0PNg3446X4!nj?Jq*gSUjHr;d}lOXLr*xJJ0 z^(tVEw`_*j;?%%9eY$1vIfb8|B=MeGqPI3dUhV*OK#IRZE0?iJO^VdN>d+({-r}`B z_TyQ$UzXZ?0bDfBfetTDGQ15^I)vq8vo6Y-n-+9B)QS$+XHHk)EU@EL*2~Q<EYK_u zL^gOG+`XPC;X8<q&3tQVc~LVRVs5AR@JvU-BKEXoSumPT#IbmlehgmqqztUiocZ#z z%W!))S)_Z_XT{3)&aL%Ej~0vV@pm)9-MikVXPkMblRv5NPDtg^PA_~5KloS?K~43k zWr!z-XSQv4<>S@voW8EY@r+-wl_0@Wo&WhH{|{St!Y#>hoN4;jUMK(rNlBEBsMbP> zqPkn^>6tVC{|8OC2oON+Rk!ASKF=sXIvsiQW`r;1=4R&RX1;|PpzB<Xsu|p4Pk7Z1 zhkuDnPxqV|xCqomCUz=(z|Gb<>A2$OtkNaw#)0>Xj@~VeX4e25{eaG!&F$U+n(91f zq4W-|v;W`wUN0L&U%56+H&*`D*Pa?x$thj-Y&;?;p8KvpjSrD&v{ETJ_19G(0`)yv z$W44+zZ>u4IbAgQs_me|u`dtZkK>E~<RvIKUJf*<1<X;P5yQ(xhFsF)qwOmkT$E+c zlMuW#SZ&}^f4zef%eL9{%Aiwc@051uIK(S`m|0-?*%2zFUsX;>CmZDtPy6(@zq&li zd{UVXjoe|2!KJ0`(I<Jf`8>(a(0>tpv|bhaXTWRDsC1k3ia(X<qurv3?J;t|*EWSn zS)IcXUcsZg$IEb^{Sz*U%#r!TZ?sOfc9M1#;N&}dM2f1EyfrACJg6@Gf)XzM@9TZ- zUv$8rz5KRdKwNu$q#c(w<QgPRcQ<SMxYa}t?0;<q&wDeu!FN`NSGm3Yp?9M9YPnZ? zjnLb>KY3qndi_HkmG}7SBS-Zr#qJ;kwi~JQ9Qc08>d{I1Teza<`LdM_?(3^QR37_d zheOsr-*U9cf&*3bpW|coOmA8_LD!V5`bW$3{v7@6aC#5p*`V;@Fxw6hh-gEnDZYo| zw*8^>WPGbe@K7Ck-T;BNQ_|xvN#pq@f2CP<ZeiE`l}5V%d}+NS!WD&3nE8p4Sm7sT z)AQw?a=k&pI2{<cBf6x02~jvih||2>Uxkx@LaFi^tR|*%JH3yhtNiB~G=KTq-`@S| z*MAlqCS(;3hQ?<kVoD)eZcTa54r!>=h*%=2W9Dfb5ON8>{a+eMN+Gy^KCmJKa8st7 za3=I~R+NJt{SpGqkarD+^9cmuiU*iFI4fQ`B5&cN%?Z2c>-XUEb7o??XW!smu>9WO zfqB80{8o=etI;hDC)?#27Ku?5LeVQtp#i5(RyTAMI|01X6mYwgXSoKY?Zn8@r~Q3K zn4a|OgjKHsSjVpuj~1DMDb|dz8ZiTdQxA?AFojXHZVnEsX!JNV(dkOF22v_?_0a*& zA<@$bLG$uZeyXmC7u0Wg3&4>DbbrwdoRaPt6#SL>ikAiN4G>%gkn~5s-AU^wI;??$ zr?G<^Jp2n@|JQ-9QJ)f5hM0*_X$cSt4CCcFc%TW~DOI$Fn>2pN#pg?~dJF1z@&Nel z8vk!_uR8kmaUFTNfE3#8!N2+zuSS#cB~h>1WZ}msEUrXGq;)!(&Fk#8ESQ5F@|NK0 zR2U5;Y;-|eusK2f{Z#)Ia!MVJ@MEAvpYp5>9d%{W0ep%Bf9BtCW#l;F)lkf4OKPLa zA}$OE&IEj)rdXV^Y$>M>8wVM^JAJ&gTYkfsEs>c<v-V~}sT{`jbU|>@3N8i$#BmU| zoT@rM$q}@yigUnFXW&k!L@P@%ZD~M9hN-%E&CBaLfj6byvcF)H3~k^Tn3a{TMDwZ; zk_@eItNiIBLDgl3Vu>DF)*G%2m*=%zuXeJ;SAB2*jqrQzwlwQV<I*wSRxm;!eQ7Gk zK^?(y_|{H~txap=8=yctbc<i=V;LLSVq8p?tM8*aYp*W|)CR*UetN;|jZ=?bH6v;E z{8zn0{U3h!ySv~0!{6Wiy8WnMeeq)NqW$WdU$$iUMLt#sB!&3BgFu?i)l%Np{`XEo zI;sLpK1ZE!Z(wPLFImCoaNL(HmM1uL_cTHkm_A1Dc)yOg7(7C#2S(F#EVJDR(;V12 zvB~jfj+Mz7xyiLW>r)gMA4c;mmC19o5xjO0K&M)N$m;mi$(r|ndR5jx_4=ar@m7cT zKm75o_eyk7NrusnKa9Q~U;c3S>1E4}TT1+(C2hTwc>~F2;22$Aqr!_PNA}@<3hyTw zYMkoVZ@-%n^SnLHPjVWc_WL5b+LPtgI$!jTV%tZ){>4{!zy9Xy_E5iWtRqY_cz%4^ zVNcQRVaJ=>rttPjPGGpdtG%1Wakz<^t;z|`W>9;$&%m2pO`y@fFFN;ovtL?SQD0HH z8-R+w;}=ID8S<WKgKS72nU8GM7LtH;B$=&_$&*)#89XFYJ1IFMP*ZU__{aMk{!W(u zDw!cG^Z;eT_+ndZsb)BjFNIHj(XTi%J%es)K3-)MqR|sNV(l}L&_=qqyjNZZumQ5c z%`w-GKeWffsjO?yD$+&oSk3V+=lV^?`dNAzsv+_!x{)C>EbpSjP+mDlcc90^PD0(_ zTJkpJ3p?fa91h13tQD5np^@;}>`m3zH+_t@jM@!+_pA=vK2+OxNYCESUi|Zv<sA5t z&A@tt0r7-;gyWk9Pv#=kWPAr{@iyX;Fpj4IU*$}1l9bWz@EW5?&(m;ZKU|fuN)YmK zd4nZvl+Y=t7B1a*MhldKJ}eARk8WmkS1y??oNgFwi4|BleU5kIarikHHM9atrb-i5 z2j|l6xoqMp*Jo`T4#62>aztb0T=|s-rZW9reYktNTcG@O(dmb}FAT^uW^l@??ZD52 zvV~O-Y<GXa^w4#~to%0`i(kI7gx8kueh#Z0g)duMA8QLu*#?x}-yw?S{b*T3v>&b& zGrY-5@LWoEH#lII)cpnyOT&hL9KCHFu<C~#DhJPF%z?1mLeh!&w<s0s7C+7`Ye{>y zif6JCob@+ovtBJ-RbP##33iDqlm6<?g?_Wi{8sMz!S2ZwIW>WFwl}~{u5gPHn<-7N z(l=WX1Sfoli?$xD^(Fmlfk}L6l}`25{_gAF9;JisTe0)uZSTlU4?n!`wM14Eq+c9( zc;7aWS3lU7+l+4CmoGbk-ymK3HT3!>hv*$j%AFm(0`WL{h67v1;Ghh%3CMCf$|@vI zGJRmjj;#*zXpi)zfgXc->h<hH&U|H=Ttf@GVNUb}EJX0THiaK+W5B|xy1Lf(c30U2 zq2cs>S@CT`A|Ai+7>z3npIqcYJtbD}tF0_99FESw7jfrz?NQ?Ybal`g;+%4qc8QLn zmh}Q4pE5;rQaQv%7vxmAA=?dors5h3#o?0PHS{5@0zI$N3A#~Thk%4hlJaa0?jQc` zzxNK^-<GJ+zX%$i=IE9<Vl(o}Cx>!|Gc(Hg#jTQs3pr#vVwzf1s!|p=g|bdTcqu8n zB0twT7}9DiaE&U1w}!o93YVsP<%CtwC;vKg@ZdlohGU7kE}Y@*UcB!VWa%{sUs!%t zcG2?G_g23_a*qy`+kbTL=JN$!kZ<(4m0P?H)3toJ^lJ?8(TK!LC(R+*N;r7SskB3l z8&=_;f#2~wM#vxM@M`RX5lr>u92=20g8C?fUn5X-KZ_qfD@!M-P8W^QQ@zIH(k3oP zw$^fbxY3_AU=);tGH n%#)UwpY}9<dWG91D*de=ffG^>vY%R8;sJoJNxipQR8Y zJ%ya|@l@WW>jD2X;_2C9wINQ33k6_{2A<%(CCLJk`{CH_Wa*X!Pcz*PJqjaXE3dME z1;sU47~mscmqMS+!|xP&=zOxAFm1NDW7K!+F+3TAlaU);bQhxu=b=iu7qt$uo4s$g zx}VYE__naZ!~L}9Xhyl!wsfNK1z+*Eu5S0@V1RCt&uK1fOM^ypVaW&WUEayOaD><| zqdWTd>~$7f6;c7yVP)7a=QVnh75L+dfjzT2W_zA^2VNb7gPZCSqDkS^O`DxwhP2}P z2s7*8UD0NuzRD?ZVlJokb>B~ofST>I?-P=H|8#krWbAmOH-*`o`zj}{zHKw5s-|<( zd2dN?Wt9b+_Eq|3K47lieHn5XQVD&u1$8sCdj=u4JUavZ9LPk5svG+E3EDpE+%jrb zy$YP1g{N8NN7czbJS%b5=0gT-Y038nCQ=^Sx&2bwCR!U|f71RzlWk@dI3flenij1N z<*W03(DKx8+Pd<OzyFuJ|M7qS&%3|-yT3a#PT{y2`|`dEueZ%gzE9sg=yc&Pa_SPr z;w{^ae;w!91ZVWXd-78zw1_~;onsq*=k-m=i&~e4o;Qf_@Ig)^8R!$r>si)Y7iWsY zL1Sc1nWwEH`bls3d=s(JMUPae99Of#eX4P~J(@5O0!5;zEU(OYT=@Ol9JD{Zy?gt| zAMf6N|9#8x9^U2d&H!rdT6<-4bn7cy+dSj`qjv#+pR?Nx`p1l?2bMfHt9AN~>YlFs z)G~OIV4pFA#QRk3!G7DaWh+F!{KYp*znRtKyoUx38di=@595W?qJPmo-?y&}Vy4GC zSnE~zZx1uQTY9T|Xg@~MoU{}kC(7yyvutK`Y)`VJoLrJOx<$uM?#Sk5Uc*y+AuE*T zUR9<Y);>A9WXm4^h+7zXBk<v?wiu*jKd_V6C?4}B|M7~RGB|5y`IBiXEb9Z0Ie4TX znXug2Y=<VaJ!tAyy~vP32z~Pg?Hb5nSg$V&#$M3{r@s0OjS*Zkm<D<2(K&hHpq+3Q zXQ)QY>oVJFw)b_8?%Gbdw0%nlKQ^2H=s~<339Fm3loXxNVXyFu7V5s0J)<+or(H+E zm2U}W+z8>?b~tDYx?Qu#@Y#%X^;-L;XbQK?`C~FnKR#-kK*cPrf=^$0be}rG+pL=M z%%EG%21f(N^xfz~M?{36ccB9~r@g>ejo?N<ct(SjrQrVjJN@jT@qOhjw7BgR4bKv+ zy@Sn&H#-l^wSQH513<W?KdkEM+Xgc}!#}cF^sX>2?xb};2e-smU#cA=%znvR<zKu2 z;OHRoQSGX$3LV-(Ri7@^sTX?*{PllJis>W>oc@<s{C+0~)m5EQZodaF<qPM$xlj`x zp62wGMIVg@!zYm1o<3Utcgl<}@xq|TW}ERc7~`EJ+Heni0@VV2wgEVmZGgg{n1hTS zCkxWq#$@JK>zp5ej<+vaabVwkldu|nLyx}QRT=u1IijT_ldGqE$$<e1vyB|;hmXuc z9({|xN1TEazGQ*mO()=IIDO^=TqbbGr>L}Sf!d7$)P2vAUV4Ze(|-Dm=i#X>Inn<( z$vKi%L8QC9qNpSOlh1H$U#^p!AC=fPDt(Uw=3cgH=G~8-c>nF2yFY%{Ny{&DcGEd; z?YT#5asuzlR3CCZnXJB>H7_2oa%1P{`h8emXh6fN2ip`3Iy8jdz*T*YccYI7`e<#n zflBQp2v*)QaJJ$B&c*4cW@AP7oxM=`bRZp0aL`&?HDE`pnZyu94<5S!zY9<oUqaMx zfBPDc;Yr}%GOAynBxxzgwlA5uzIZ?W7k1iMN&nOJm~taOYaHF|bUIaEg(k{FY=)DH zhYlsQ&kaiq2*L#Ka-s;*1h_b8s>NmW8|}p<%UEoTF5)mRcn_QX_{+cf?cIO-@Be!D ztKN~gr9!vL6AA`50W^Y$>EJRvPZ44ieDIT!vaPh?;8)l(!B^Y~?6*d7dl2+lSuC$~ zAcK3Z(F}p3ACMXsu8G%Ka9CUnEqOUpetX<?;Qw^L<vZbUI-6JvZh#rE0q#o?f|Xz; zD8r-lz@3^LoF_zA7I6vRB@oMX&<akG>JQR|BYIY@uqnnNtAvB}!C9weWZmdfz}AMt zw?Pj^0Yk$Q$#ud6T0JVva%U$-TIT3tIBfKJc-(LlQ62{GZu_}-BqZz>58uO334G<R zAri!B^4Zy)D9BYI=MMz8Yn<baX94kNb;l?1tGl?U;oFCSQwg6h_mta`qVwmNbEEMc zJV89yfd_7Mfo`y&J#h&TDC?MR<sS~0uI%pDE<N=({1tj4kwNtrevlGTzW-d8Rd`YV zAx_9@TKr_@22b*X_a%d#86gyEDiP1ht5Z9UWQJmG+KlF2B@}HekNl!AukPUxZCR~M z#ZAW5z5FwJlX>w)O^&9-BG<!=t#{Fl<6mL%BPaIOPB^o0Cc^O9>WgYan(Z}p&<Z5y zv`7<t@8Gmo)w15<&Vd6u`LkNUgAPI*yoNJtTF2BgrOv3fhh>9$$_Jwg+NWct>#Hx@ z!&$+vaw^_5+h)llhEG<jz7EvuQq1DM%E;2G{g89=x>K3o*0H?JFc8lTw>)^K&%&)M z6#BQj@f=PEuUoLF%JP~8`em)N`WQv`u0*rgJApX^M!RJ=&@KCd6~7kVf4tH8Wis@w z(Bc^OoB}jAimcS7D|)tAdHiZyU_EV?(8=4cTB7zW!s*Z~S-s~3l<?k4k7kRXe*Me4 zfBct!x%;>O=l{L?r{Djf(~Q5)z>4o2l=RN0X!({Q9gO>C(4Rzi{er#nb2{Q@Mc155 z-$xw07*<b`AIsLahcq&lbdB${E9vxaSKCz6(=X^rz{W8vl~Q%9m-|vjW^~Dj9}RAB zIK0)}l1#5JG7G%6$f2zci1V;ns}1<%;BaI<TC(=1AMW0L_ru+XPJezEf-m#_-!~KR zv@#x8a%?7$qg~(0h%&1?BmPa>LON{fT@JBjm>(LlfAjkL9O(OI;a;><u$ehDnE?|H zwF&S4{q>*!s(vRKtbH*|)Xh@!2N_5o+hF(U(TBS)TZ;dv)2gS(JFv>$>*syHefl!y z+k6rst4mdD<wE;@t50J(%|s^4Ic~V^u&$3S^I#xxV90)Am=hT6+K@iaY9H$VLk6K& z8{wUq-EC1w#FChBZblvB_J>z^JhLhtSp9-+1%-XnIEF!$y7r1Lbb!kV+B<=n?BX9d z+BVq9HrY9Yct9kd@aoQIOCB|T$d-ItuDabSHow7|!CoeqaU9GPzR6i+^i5wRlV_G# z`%E@Ur_9fKEZJV#($6W5N$=vFfi&>I_pWL-7w3(Q!P%96PA|O#m-WG+8r>f!Gj!(4 zEmFHvu&N-7cEScR`M@-*s*^1<x>aEIA-X+#rVfX`;6~j!^R_^|F*Dq9<~i!&uKa#R z8wg#qi=%V2)~jyyhvMSnX}9QIy$qyk%)_-ZyI*{5T^}S0twVTas0?0HO6Z{MVup+A zFxp)~8qVw-ygg~dg#3hTV5b|<pYHNej(UPv_JB#$HyXLfq|fd{4BkKg3Rlj_7?xxr z_$N#~$nr^Z^$+5H{?W;+^OZ+=vwsDa@-wZjd!+^A!UK9s14eOMwp^Ws5qtd}+fAQn zOMn3%1CeH35qPuRXx0~il1xrg7bvv)g9ShR|C998)9%X}tmLsU{iv_)PP<>3;UJMR zCUfby?$H}BSLfkbvC=3>9SVa7oz_@ddF$`v&pB;9%mXHguNF31RPRJt<tOL(Y5)d+ zoxPzh>QK3Jxb#g5vz*#$p5%ef)9>pCHxWi}77XyG<o`o`uDtNG4<7i3IkE;kKUuQ8 zrOOQ*RTq7Z!N8ra+}6I=e`?9{cP&@`)62W>+eY$6`3`%ng|1C?w-rSCyXv<-uX}W0 z|DV2I--@T`9skl9Y!kd04?~r{aJVKNhoZ!oUT4<t%mf-C-G~eNhxr7>V+mUyP4Jlv zP6yy`Fz6%Zt?&(^DGLK`VMpblXJ1?a(rsVRTvl{V_E%hZbPad7%5b}cxlY<Jtxi|i zEy;dboj|Z|T{K}vC{+u9I>8)YVRHdH05X9BIw4t{B-NzrDrg8nBpA_r7nlfl9JZK5 zFd`=AoDt<Gcfb8Fe|z`0jpAE!po8}+k~xk!STi;w0_8QOgn+vkYo}~AP%kB&&q;Bm zgcr0<O$+Tox-mvljOsJlDedS``UzCw{?@I+z2xY%B@BBKeJgi)qb-43D=1?*8In`- z%IZQdG0Ge5JXiNM=n9zriw6^y5*_*~xqGyCC*3{^E#zF|!Ro7wJ_-FrGH~?Mmv9{% zz{E#T`zEm)MUtunaA#B**$eEc_t>ssWpp+pzXKk^|8jh$%<2q3<^XtypN{T67}oov z+W=MC%2%ea3On*<K;y_yQZqS%-)WqOj;lwBb}A#3yVs!+=e4dFNW!<T6w+PFQtmp* zcthT=GV#-26_RQfImL)0JK)3nJP*%W@2XN+#|SH)lJx<rvZO;J*X2;a0}o-eHnM*i zN24h`NYfGxhD2oP%=qJ+c6wxB%DJS&aUkJ&d+z4yoZ#Y;?z+%y`TBJ)tyuEW<HEG> zg@xM=?I=RW$mrTgf2|JBIZzIz;#lB4Ge|h+SLY^vvv&w{!!L+#*H+A&N~1*|zBH2; zB2V;WWibM~nir;xz{|2+O99c#VNV-DM4MGGKKIe4C}c}^=kzqIW51l^__xe>c!hVm zsAM72UpRu|%YmkoHYgP;^?O_M{3(6J80u&En+5j%zb|?x5u^0o>-OAa@W1VMv$^Uq zjGFBV_cu9kKh(Q?UuXA2j_?mn<^I_BWlrzw>SADUhI9ndvB8V@6+D?C17~UI;a%v@ zFkX1&Jk~BVgzZnZblJ($U*-hZ5A-4@<C!)YMYk29fvXu`!7v-f%=u79ZE4p!{z%N3 znV443Nd#O%YMmpQ3OR=SX3_}|x<rc&eq@k7iMh|BtEJM<+UoGBB~o+D(g|O5$k8u; z^XGSe_`^Tm{rx}uZBFi&l^walF-V&!Ix`pAQl(bjqntekgn{#8HplM<3eMo;!F9_^ z$zI5KH{p?>_!dyD=d_t%Ro3)JW$itT;i*cosrqNAXcrOw9PA?}o`?%>iQ+_f_1yhg zu2$L*D`=zqc5?FoADU^EI^g#Fe#jYokYjiM-M2Zq-`;&}Y4RtI@9X3z=j)@rl*#v# z4y+1LCocC>BjaGd{^7fg#DDtOjBm@DKQy~*&+~`yecRzyoS^5AzG!x~L4}qtzkl7* zU9@hN_KO^ouUeXH78XVccn55qea?^Llm5a%f?vglU$=x>pZ`UtR-=i-#eVHwyvhE> zAG3F_s}KElU%B8~YO7Cp+&g?fQVbE94l|p^fqT0Bp~+d#uj}v49K6oq|MuH|&*43< zwNS1@?&z9N8GVs%Ff57Z&{NL_Pswm7^i6i_qsGf{)h5t^P65l{!<OwO6WYEDH_M6& z<<lbE;lK8GzD30A;75Qn^MBGa9^c1{`y)VWr*kL+NMC@Zeg**OZhMQj1t@%`mz9~) z@vi7hX;M^3dNrf@ZQtqSLJ%J9;mKKLAj80n_y(8td&#UrdC+`=v!!?b$=YS@bWW~= z&y=0+p-0SS8GO*<c`hG66`$_0rOc_ZAEGne$?=g71I!x3!(cx>Z;OV3o5ZzW`lNc& zRR~t#u~oWX`>AedRe5Mbf0bhu`#flk?n;}UKfI(@)@R@9I9}Ag%tWEfv8#f0o0+9M zravmvY?gTXEwGax_$f9Gf;`n<+;JZ0`&E^Ebbl}n+sZy1=*Ly`<V?N#;-}xs=>B;> z>t6VAa8JGiB#0>zbr`JC=7gP-yrI0vNO|F<a^xYojYd1aC1C2|x^M#Y!l&w2C7;4p zzY}MHgT7F)zLvgf7tioK*qkB*E9BuIiGJj+a^(r0zIu)`I%W)QAT9e*-!;AzzX9el zOkR{X+E!j+`Uk26u2x;}5w;Xqn&GSH)BcJrzO>;zJ30Q3*GoD|tvxwBP@CNBaOtPN zgQh)ORkgvA%3hlpo~Mk{-o=MY;Z~1;ZxO3J^pHMZ-ygARYxR`%t7PZi>Kfyi;k?tW zix1tc#Bq?J6*=BsU`3(MgY3Rd|G(<ssaM$uZ+d;u+g_damaet}jO10;euK#mVQXp! z+8<hwf&Pv>1a=2S;u|8}e&KET{@Z9`Mbx|Okatyzp0e7_DcWEwhdz1WUGMeLM|qMM zm;a|eWbfSfJbw5^zrqQH==cSP$-Mw^{Vm6I6@7J+`{gbMQ}GAxrJr33uPQ5S;ibLc z%C<6ZVV?i<mHk=9LN#MZ9pt+mqKHRf8G&7y!}C`D5MbcW=?n|mDccLNQ@KMR1f)}r zlF-3XxFLV52t)LJ0Djr%{qO(z_jiB!SG_g@k@`~llq917yE!!Qv?Ol(a#n-Fr?u4O z)T!j>E*#-<5vZHxIGB|v$}4Bj(pCqThI$Bi2u`4Gf1?A+pTjTYJhYM^P<VMO^XK>^ zLN$<b6;~ox<$)>e@K@uHQq%eUE1j7uk@f~ov{$eFE4tqV_ER0n8hkj7r}5A8sp~0= z@ueg4D;r!i%+CgDSipSoMWM+(gQ5G$^uTcv&hnl|SyPRjrAUehWqbRcbpq-03>SNe z_N{aI(2N8n!0_E@be-_SV4%Upla0Jp5OR!Hfz)Ay?b495DJ6)<pTog!!?>nWQ1vYe z{;R)qg$tV@F%ldeEk-$#cZ~%%T8yU!loBF?h2}b@?XkMahB9Ec!3X73-kcD5XheD7 z99-fGt~{5bU7@8tbuEv&muE(N=@kR_0*C+P1H7Kq)vV@&$%S;M9Vu12)p^*rv9$gP zhgbK058$7|u5iENR&4k1_OuQxgcy>@I_lrzw_mk1+P2w2I-N1}tnWI5GKd2UFTqkL zUv&k4%Ua1>c^JN%@h#5jsc_nBH|h}99>J)N^25apl==!och%cSaKAJ1;v1STzBKUT zZ0neh<IR=R$sRc(XJ$LM9|=y4Nbmi(-HYQKP8QSupYoPJ<qX_&I5>UPA8PtOGuZYG zeP}w?OzxXHFw3j$PaW@~2I@LdzJ9Hx%DvAtC--|Zy5;$SlUw@Snk`#gWvdf8yJSjP z=)l04Q8gJVC_Ft+?kY#!jc_wup6AGLcE1Q$_Z%IwKQqSBD!CaA!OW9S>QCohK@}gb zPDjh(*V#slXoT1Fh`dsfe$GIhIC<LaW9fD5UF70<1m}Dj_&TqPh@g#@zj)O741fDK zcYpm~{(4UCkIf8yXeRW<m%aNos2^K~tI`Z3vqtxQAAiV+`dEHAR=jp`A1%>o0~2IK zxyhFVn_aDLMF&ss>9=ob$fUl>jGcZ>|Mbza+0vLTP-i{T4j%~~-6_BRX)_XJSU?%P z3m3hfbV}x<bhJZR>`lIZ(-QiAhfcF&Z<>X@fA!<t!(LhRJ}39>_y4=YNxqF<45s8O z`rc<CIkovCr!E<=T$s*(_wIEwrX2nH)RwhA?nGs;sIn(CVXJL)8fi1LZM~fie)Fo; z4H;D*+ZXnvnbBuCyBolWx{-PGaxl?om;6?d?SFpqwG-5Pg_1PwZB@m`oyh!4?-{P{ zWGE^fBg)K0_<1+8gmfpT&Vg)mbOS;@XEX=rX{SXyL77ARDrf(Fv)wOqieDta2D+25 zIa@~g4MIi5(Y37gDaoAj3M0F8Jw0r8n!fNlukGKf-O^9@j)2X;C82QQyshsrYL&5v zkCWYGmF!$);bVmi7yRceW;2#1-X@FW9uAmFk4<h0fkWu@O%}?q0ZQ#N9?qUo3D~6H z)(2ES+a$D+f|5&eRDB$P7EY^k&lOi5?KL)+=hES){R*#a1$XVfw3aK*psk(`&^rAo zl;I2~bxHQ|VpNFk4B#AXFqDm6qgxKSdu=)t)^2vXb#zJ;D=Ykqm~FT^1`FQkxEz&> zR;3F_@O`5}IDGyV+oK8$KAI-lVFpHVvi7T%Yo7%l@W)XF(*WI;QHG~8M5<&sKoHE} zrGqZLwb^Zb+@J;*O)5jV<8Qz2SMCahT5%OhHZQ#Ck1KtsE&O_x#{KH09KdeZ2FSsx zP~Y)8eB}wLb5+p|wB4SQuJG3flnz~l!@KWKW!+%>tem*Ker%3uY0dO+l}`Yi$bJql z)GwyDzzXNh9wx)H%Y=pc>a5(Z4LU+~^(!xlOJ_05zo@Oz+1ix8R{u)IWBKG;UnO3@ ztYP6ReZ0ZxBF{j`M1cUL`|zZCuHGetLSJy)(!~bMw&E)SY5Q{)H7W@(wr{oA2T+>j zaVrSs<bq#a-ot6MTxH8BZ{=1GcEKu>!4mks0p={$Z#&S;tgZ?QA6uNGV9=_*U4A%f zTV5Mv$?}is@mC!%Xu!5YLQg+*?2Qd}2j0N=?9Ae?whp*juqzDm8OUYleC!|lbgMdJ z7CE&N(?N$$)_+&u<#lnd-dZ_UT$wkCfG?F@1*1VY*dA10Lat(MbviPvRG0sJIhvEL zvG#)gi@g1o3Oxzyv5!w)bf0`nTaMxTvo;}gGPbhG-g*9y;gxZdIpOaA^Htw}2tIaK zHkPbWQU=}ocqShRPsqWk-0n5XBM38EV}i=o>eu*GWw34qgDA6(;X*zTBY>RVarbxs z_`AFR_HX~z>jA$m#33cd;1iCXi~w#XXyqWF%wZh7f<j6Tur)fmtnh`wS52;~I~n>R z>MN+IF(P>C5~~M~B9bPNt`YQm%LCpN4v;t4hi>v8g$Nst{|c6-%2ER0ZFYEVCpab4 z2`D3W6npz5h~kbDTbNedcl}p*tokcMc?S+0c2zz1w`3l6?;j;99BBq0&)f?Xz7P6n zY(14wy%$p=okxq%GK`D>*BG)9;P|MH#GXA%%bvzdzxF0seyL;M-hp^%xtJLo9U&g7 z78-I$;Ne1B<vC)XQapPm!}~%UdP{iw2iVUpa*9Xb-5~9GMV0QzU(wO{bo4T#aSa?{ zGHOSk&uMS4`az$oH2fvIQ#vvX%6<wf{ALJ<QqOxvbH77v#3wHYHU=yR!d=TRE%*WO zOd4Gm{@UPR2Lu1kJszLV_DU=7br1Y!UMsun!0SGE{B*cp>D1R}d;+FCl)p}Eoj^+c z=z%)1G6~m-#p)UT(!e^Kw9e+>F`5-#t(JHB@i{>wYbHyz6$G(oY=@GaqWcep6Q>i! zzqnmlCGX1-*y#A~3p>Ia{$#D1R7ZLQK4}TSDvK=FZ-ppF-Hfct7#V$B;5z5(W#)J@ zLLvAtC)X;4g*M`K002M$Nkl<Z`_g@EAFtDQ)yS!=k2t^)@^y~P54{TIT{Czyu5@B` zDpHDnn_{)!kz@Nqvyk6*a;o1Z!kTd!c9SnSk^xoOz(ZgPT73i6!~V{#`nU@Zolf0X z_u*a8>ew$B<B|4Qo$Nb;f6NQ6HUY!x7Ol4GqC85N+=Rqta~!f&z8Q9f!G|2-fzH@L zJ$uKVtl_YCd^VFvkI%v8Y?hv07=Od#*T4Do-CyVE{-Srj!o{hLT%9Ss?%%Tlg3Tz| zey5oD=zTipJ%{FLHd5vH?uIR8&nmX3>N@fBV@t*^!{^K-Kv>^q);zFb+3k3*gZEmS zwaw^ZWS(5H+P3@=A#z?fix!<fRW2u1{m&&XM=?hsTd(ES(LUVYXV84iu+hJm^?LXA z_1%Y89XR#lpYHB|{J!PN-<Iav9J@auV#eAR-JA8c6qMt9M&s?TnnBYt<#!FFm??Oc zG4knQGX}|{!`Zwp<(~7~x~)gv!TY{LzKXwZrWdR^Xo>mTmI-eUX1G48zdie|o5`6I zkO5qsK0M3#eg5V6?X??bT3)n-`O9XV-?UGdqiPQrX9u6ptOG-BlGtw|h}SKZ-g}#) zsdQxOc}^`y*?~*nh4<^|`NgLf9n|uR;CWkh`_|j5#!*y;wr#IA`E;`KCmW(009l9* zv>4@|nHag*9O<O$W3|V9gRC<m>94{!GozJ2QtEiM*+@8t%UiUsP0qLtZ@S7L#`>7@ zkL9I>PYovsM6`0WfpnJ{XK{0KgBPFxlbM_V0;jy5&7AH4D}zgn^yFP#H99k|+Q`*+ z7Xi8HK5dW<q|IFesdJKs7+gqpFg7!rGat@Rc4%a{#(Vf4xTg(sc5Od0uzB9DQSM;r zLsmvP!geSehu@&JEg0U!P+O{XeynY9FwZ-d4=pyRq&^Lvx6OCg1_ID1gJ1k{+R?PS zL99zzcvuy>>$=qy4PDpZTND{BN!)oI3jI~k>W_Y81)b`z!gX6U>W>B;EMfR?i^I#6 zS^9#OR}oiViLP^UlcOt4yzA<3{Z3A9ytwG-cfi#Q@GfmdUxgRGuGOXT{o?VeGAbN? zoD?Mt#?tg3Jl|8s;q71rU*B#P7M;od+C|U$JkF8++xZQf$xTmJ<odI~Dq?VlMCnz* zY+OIX-GG5a#RRu{YhRY!29(46%*rATZZzLX<pFng1^W=bKRK<z4DJRV43ZW%(BZk+ z;gwKPwH^9=!)ZvUErnDRnC{%`+@O?vJ#5=dSVdRys3z^nLjp=wIR(H&`$VJaFJ{{m z@T0u=V{mJal2sRW`34tF-ULFMcM`c(5J_FSG9ch*0~qYIt;vc=+n8Qw8~j+G|0?}r zV7oEMbV3x2R!#*s*0=$pRSC3n!Fm01kMt6nL)MI~y1j$HUb5eioA1JY*x+;Rz{$z4 z>yHeuzkHK^t^aapoC7@R>Eqne-yt7-t3!emazQU$wegS+$oYg@`7z000vf0?c^;vp z#!p%Huivi8&iYdk!HxDuS4n@K{a$i>?yvSzp3)aNSpNMa_n(74-<%m;dHRf@kS%)R z(v9#T8G;%GW>XjxxsH;9b&Ys1@DOHvRq*YrG)TCHtmlZOB!qv$Q;Hd1wj}Dm=H&kU zKmL=Lo%Hu*&XN)M?axhOG%N3#(vj_?y_gvY5C`*U$8a8AH%7zcKM<wo2xMtWf5Qoc zB?Bjbl;<31!6_OHE99g>Terc~tP_U=C$Nl4;gX;g7;w=j)m^P!h3t9dcTZZ}mkDa0 z<E}j`Iwt}+$E;szb`6Jdt4z0se2ZM8mdB@b8p8~;l`bp@eOC|gx*xtZ<WhR<zu)+( zFhZ|xoWnx!-7LTy@inN@WQaWItMO?dmSaH{2~UU9BT(wt2Q@V0OPB?m!@q86N(iTo zBnNABE4@Yw2E491MZ)1a99M=y;2Vq;sQ&Ix-L5jHNHp?t!)dj<HCS~7PXio$!d5vt z4B@UL2RHhrBz01ZgoT$6@8Af=I@t12(BcQIxZw!c@a(tv#Z{P8$Se6^f!_mMwITNs zjo;DAg)XHYxEY<LIpv8g9IR#Q-|ady>OtBY9s22BLK&2JIsm1NFTrxUUtB+q6t<U+ zqna4itgAZ_D14~h>L)KGh1-J%cT1LawwqB^TxAaTVC|i+<W9lG;n^@NpZ#QWN@9?~ zEpanemiXZ5wJmtC5oI{SH$doaG(M89Zl1S{$|!B&XK;pL7+yC#tL}86Je(E#Wv-=7 z0ogrTIwAJQUMKW@uY(zW!M05GKCg=WShD1>p4WYUXo=Eyb$s8qWcj-sA@7Ez8>{MM zUtJHs)`yP<jD>}3GvTo60<11&JjN1@dD`lXn$n?x!@|}<mRx&q3hRBwz^9zWGs9XN zAqSk1Idp4zqoL*Z9HLJh0Oj4a4yN*IAr9c_3zQ!(($i+?9KPXn<|<YG_*}l{&F*b5 zhI81-y*l2<Et&oEzxd7FpLN>41Fm%1kJ<|H^x^Y5;cyAo<i5&r5URr3)Z<3VpJiA~ zRz5z?$RH<&xA<UC!vThzWSu!@$&xeO4k5LdwC*~c5<ooaJNz>OLLLLsU6mCb=^^rd z9FXc6h|M6^;WNzOg==URnR6~GI}m0_SScT~WbShgH+xaqhn>9nu-8p^m*U6Qf6Afi zkdnTi?sG~9yBX_nHcQ}CTw1DZyWU3+ds%nbNi?9h;1l6`Cvfy=cDEs-yEi#P-!(_~ zs@c~!Io2wJCY)6>p6ZTvoES2*gOhsZ=xW0sTk_nb^xdcDFQ(7ok9WVw(fuOF{kuQ@ zac3_)YkB(ijRv2wH^-%XlS5%-Bs$ouEzDpJrSPKDowc*ZvvYEzW1`~qPLCcm*sboh zkN?%I?T<OabTlJ<C!ohKGI!{avs4_o+IcM0G;;0>Ex$hcfqkXjPnRbjTF;#MsD`Ba zom#@$Ln#kklHs@7Z1s8C>zJ%q(vB=aCX3n<qHl&)y9g-TsDfADxAx@4cl+Z)E}CbS zmuK*AMxys|ZVx(|)!sB=D?QA<3`+{9Ftp>W!}e^$N$>PbCPTVEGezl^XclV2LqCbe zj9yC<$)^d07tO}&OJ<aZqjtGj`3*ia##DQKpUlyRTPYV94&pn5B`VaVz3e38!s$Qu zW36XS>zUQX0#d2!;TQ~f;*r%~%4ge|)iThc&3sIsN_*8o8#s0k8{zb=>Le{EyjK2M z)|6FMOQ%m1SGm#M06bYVP@r9t`>jMGKj4=M=eKWvVcNaFC>^iF(r-bAe&16EIJnkt z?(W<R7q&V?@7aFUmA<7NAa>>XdD^4fDzCi0WLW#1JXI&SF1-Bmfs4_wh~?8|ljI)C zzU!oy0?n#Z-(!!&S8_q-r7s>24SH?~bA25-M-%nXrtnQ(2Py)j&B|wozP{8LHu=J8 zjxMP)czX3WRypl-^3ocJvoGH}xnCwMmp(13@`4N5IDl7Y@F9MxBgRxWlTLW*6nVCk zL9I<H6y8(t$r1W>iPx9lGZ{TXG8&G4(+T0A8Li$p9$kV_^P0|M$A%W}B@>k)yyp!X zj0WmUC-lG7GF~4<Kcl<ylJpHU&6%%G2EO0a&wt<P`VOA7jCiNj=P){G6N)2bD^M)s zCc9t@cQ%HLePBS^A%EcNZyDNTqn~W^XoAkcJZ*#A7iLvUaSp$F-E6M5YCt)vt*+a$ zbm<lH5h3ZBidcJ~GswhjtbWTh9vNIKdFjvK_ZUD%;3OTE0@7cp;za~R>4a4oKOdZ% zd`|{Sp)IIivUSQV&*~;W5S~wdZDP9S#C-nGOdA3fI|6}yzB1eZ9ay(aF;2lfMKZbe zKbcs10^;7apPwNsY@GyU8j~DOk(OGg@hL)n@y)O9{`T*GclY%#znP#r3H6h`Bs#x{ zv*s8vH7$Y%yTd@gs8?7&QyvNv3kgx-+~Z)lJ$UZ_;zx&tVnJn0I8W9cC<0uUPKXj+ z9jlvhBEqkTm5b=;<F|Nl4?TWHGpLNn{mKYWzx@MW!+2yVRliGDz4qFi(p}4aZ)9EG z69$fp00GvwL=%i9KCmq%9M2AOKBv1lnL4}0tJS#(j^q>W1ojxSmiB2Jl~H5**vOkN zrVQtVKY`eHIK*dqnZl$@8CphsXI$QBmF61G5r2X^`b8k<gQ<L&;F?ZjB*P0I4ZeW$ znw6h$m(OSXuMU*vxtIG~qZhi|_=chQhVS@6feShHf=_WboCaa-Bpgcn6V#tzZ{XxW zfFNvs#uw!lrl4Xtd{87bbHXCwI+{6or6DjnY^ejpwD1&lOQ-zk5h8QYm*(KTu<=pp z2iGwqK-Fe^k!JUYiG`lL_&?gD5D#jMh0<!5rB#+?#v2i4SU_|1?4Ae|FrDV1OBvGa z8|^Hq-5%axvIosHO1XEK_KPOU*hnLJASdC1PMcvU3=OdXO%li9zIs-s0WA>c=moDX ztNN<5)diIeXXUOANB%)zOdo^DUZF-<>tL{{+h%jasS59ahr(yHCD)8)<vRWGO-nFe zWhB4LFnHgH?Pi7W4{iGTysLNpv9|H2I+{PVZ0V&@-56=cZhL=KvS*z+$YrTRC@g|n z0)$Ry;K_aXRKB|TXcJE}tj$92bwc6$w7t0uT6N*b!+S<}@b0VF14GD#9lFM+pnCVG zHcWSHzi$Tr!#0V|vCZLiAQU5ECsJZev$plRE#H26_r7JYZ`(I&Rt$5!!}P=OZs~Lm z?>e~Z+z|BLlU^(Lb*~Zn@{6zIw~ouWS+!1=IF&k+xcgBdk~A|_g3Z!%Dqj5%W4&U? zQe3Z%DQR?i_^{cu+T0oJNq>x|!OMx5W0#RIC$G9?@kP7H-Bt^y5<64`EzoK$uCO}H z$>M!Z@J^?V=8uJw&+5ToBcC%8qq}zP^v^A$Yv$AIbrOc^7G6#BdR36ar0$#5ee*+( zZp)Y-<g{-_c5<F`&I!(;gcrlba@`QC<lsi<8By!#s&h};-iHQEK0N4DPl8=}Z(cWQ z??mR(d*#q%COHwmJ~<=lV*?H)sJ_Vz;|c!Nha*iFzTf-MNnD0ZGGWgzBlihMl`J)L zvvwGI)0xqd+@asc26yQEox;1B<<rIu8a#*=qghL}U&Ob^t&SkyPvfQ8W(T=FYlXx+ zaH0uXA7d;SY&-OA)B=|bVsN;&xAfL#P|In$pWeh@Y^G0Y8ytu^SQ)qa+&L7%vK5C* zlAz96HS=Py+f4X_<k>1S4)R+(td7SCsLsKh{4A{|P|5M%_KKi|_pw_d{`A50e0dxc za}KW2wi%%BS_$$l+~RF*_1Uuy66^iPX6W(#EP*~cg#44=4d8}T6dF!!0#4}6*La5} z)9vwFc|$ZZf6=>=Cj)dB*^g$E>tHfy8K~VxGkP@fD9zDvYY{6KEj$s+sumDD(cgP0 z-`X5WA)B~S9pi_7e(yeKl?Rv3BJ$mK=gYX2{^&Ik;>q{nx!TE4{J39S_0)Hd9{5Tw zeej{OuRi>2Pf%#3sCe>5IG~4icsiY~P?g>Vt8*{U&+X&EEp`L2!5of5R{Hp_-w*zt z;CuU`w@Z4^SDgBx`&GBv#GG0otH1mw{jljD`CZ5%2S~e4eGk^?vbqFB>cA$GeK~hk z{LILrR~K5%`7uaWSa3)4@)-#2VS1H*P7_Sm(sP{2<7C!nCR6l+Lr9;u`iI!Dm&b?l zSAdQF^8?h+d#krMSDJlJ8#P$PDXIq@n}!UYDYx<rUOMEBP2w{;bWeVj&sN+ZO?~i# zZPf|m<-gS_P;}strs`c~$qgG^DVwZ}SUae<d{%EczhM1c38wQ1PP)>09B&$Qbap^Y zB=OY~J^SKm^)TS1eSi1;k9R+KKQ3FQetPdFPEQ(O0*hm-4`))?8bl`6zJLm|4YFyM zWK|K>Ssv*ub>_U{&z$?UJ!nK9`Z1kuK$mlCIkat8Rk|in{_g2lc0xiv8q=A!F_dy` z&V-vP!H)wv!3>Fop)H)ysyGv%r%l17u-XM(i*Cb6`d#GvgzaZx;=mIQ9qlyy`Z;-T zMF(STD7=<l^v^D9dCHVR=yNr?pT!Tcs{tLQQ-PI>w2*e4aKTkRB5zsMEl!%_h)H{p z)nGhLc}8CX`7i<e&ENc&yWjrqcXgabO>czgPz0k8U^BEZ!zdJSRwWQ4BWU}s{t-n8 z*@K3>D-h8~u=0-}U@SqYQ;^_e3M!Tn(>Hnu7GPb<5~jm+zoXfe=h?rqQj!oD7M1A( zW3(W2%Gv1N%7fa$fg$hKRnhA>1p&JKVKoqG1AV&`La`ru9u&(^-Q+u?m|>}b5Z(e$ zEzlN@J=Fn#r@ZS1Ji@r=>ZbdIm@u8E*E`r3s4*V{Ai+h0zDB()13a_3HQtu*!HyzR zge5HJ-D%Bu4Jw+H9s(M3@)(%XCQEoxF!^EJk3W=|q*7D|X_So$=&R97Anis8D}w>D zx(r_V!3xg7Na6ierz!f<Z@CBDq>n!73wpiu{z0w`-3y}tmLKCO?(&TOH{Py;b8m@V z8Dd5EC(pqj%>Lx-niEsN;+E{l=xA8oLcMa)Xqje+o<@I^IefJ%-%1>gYlFeYpHo)9 zu2mz*!J_2V>&R%gCBYL)e(BIu{H<O~SFSA!YIJ_excKd3UK(_emn_0Z{=!NVrDimN z|2#aOuRY@_S*r|i4>?x!jP>#;|0wctg6ImAdU)gW<m{FiogCaTqdaPygQZU0mkT1( zGo_3F9M{n@xbStaUL!%zMo4wc_Z%OcU7dlwuQPDF*ZF8*Z!_Xv*MYtK;dOg%a?cWr zH|@W9ki%<97#e!j3%&Pa`*FYP`^RQGzs=FLZ2A2<qKxPp4qHBmJ*OE~+vKD#A{p6+ zBf&EBV(B$mo{UK|+J|efjMO`Uak>Ys`hKjEd-rR<I!B=JLG$NGdR3SicBfWvv_8Qo zS@Mb(l~cUorw0}MI46KH_mBfnrR~FglYx_aw>D+unS5lEMB4^7pSI`o3tJn~BaLuB z@4%xMIlE6Y>Z5EkLpf_7-s~W<Ps!L3{(cx>(ag3XxXmET!0_(cH{oYi=*bShsuDR1 zmXTR*JIB_6O4ahc0n~7L+$<kPk0*uCfXtz>Ux~il>lg|@vTsHVQKJDTBACbL)b=s} zZu=-Xl9vCzZ|1WKj9(0~_g??wRN)+!PhO4Ga@@DQX5vGy2g<97X2Gvc&z>~fW=6X( z2KmPvK<6A-2Chxh!O&og>`=dW5u?(*F+T&0bimCS3eOu@KurSkq_%MXAp<6wfy4Q} zkG^L3o+ihZn|_E^rYp?UYsT-?tF-nh)0=dv{lf1$pzLKd^vanJPJ%A4!3g>d4IN<h zs0XKHJD^JW^rcx{OZv>_IIlq=A8I3(aKCNu*nRLe!<1}3iJ$NF|H+e;U5_7r9hov9 ztFL~Pu-Z>Y=DiBZa#i%An|82T?ahZS)Yi-x)C@|WzUpSW#QuQjl3iP#YT8$tYTUmg z1KOc7S70#-OY~!udv9&!kwJAYN_(T=)}K^IgLdRg+4L28(Kj&w!)*A%jp3;X;qN&2 zuUZ8X{!fz6CkAW4?6X&Z#9J7GyXB$LVtsF6p**;sZMib4r}~g*#w*?S-hRQ#LoZv5 z<dSDg^rL|lNqFOP2DWSE5t{bi39ixLvSYv{|2_oZ$k(YWIXhdf4lUU+^x3=kti0nq z!NVHObj+OMT0egF{4p975$>Gz%9)WIeuDd|gE%}{KUNzlXmIo!VN}}cQkn9XYMD-2 zvB6YNaYc0t>|}_Jo6R9t@uN=($kWd+aWd(9z>^1@0Te=hZWr3?50^*W&*0*(j0dZe z;p)fL4;>ENLwo(F{L)N6;aL}YjOM{p@=516+zXJN9c-nhfhGgGPs{p<{W89v`dxN= z(W{EKt9*kdVUQ$v)mO`rl~EhDw|9<i6CMs6e4GxZe_nj~MT0e*V|Gh?h!+~eR{PX` zzG#3l2<d=UGSv^L)056?U`)Qb_TSSx6>il6F7CV#^$ZK((w?ZZ*-$v(0d|mGdQ#ci zi1R+cRVRDg;WLL$nsB+V@8HBbAaD9Ln1fy1<fPvnYF0biAaQW%;KTd+?zSrJHE8%S zT2*djoh;WESf>3xo%5mXCNEp<_3Bm2mg&bjGjAYZzrjnL=v{P~{S@vd6U^e$5nG88 z&iJvz+xp#`Xw<tr%A+N`<%B$#?WKRTAAF6KrOW+mq%c(;vd%DQFirak1{v9^qspv= z+EeMn6RMj4f*bnRPOZw&mrm}6&;G5wz;}DMZ*spX?O%0F@16SLSMbpipUQKE^Ys>q z)5#jgy4!^v9+&nrj>mf3V@ZB~RhQG~mZ?InhT~V5Uj;#=8+AjWi0bKF(jkm%it8j^ zejNeKq;X-uMwAgQWru>6!F~0MU*7%wKmGphZ~h@iH{<Ekr`{KcWwRtSE49;rH8LoP z>si^J`${qzxGx;;!~Z<Sh+ADswYX&{XPp!XCvEq`^+tTK0PR{C{`IVb6+*%6xhH~2 zxQA`OM~Qbc#S%R6BVbvUABa=#>Q|jkZB96}R-8107v2O$;I3}muVDw1rVbgu%2JIf zYX~kWr3hd34ZkQiwl#P#JZ^B7r!;e@%B$fhW-2DwI;(Q_Nih3#6FrKJr}iyU6f6g` zL-yioz~`!?O>j5Tm!{b}EJMKFHYkD$D}Qs&l}gZyVLUNV(N|>*LQu44Py#MLrJGhR z6@G88gSd#HzOF*MABFax!s7VS1RKFFbg5D(pdu^zy*-JF20i&j<bI7>jfMhuUobFZ z0AWC$zk;w}SH^ILS3%;zJhEI`fNnB<;sB7Y^nEER<iH0CVI6mhW)AF9f_L(qeB^C+ z3m-Z?t}XVk{8KC^GcHRm-P(#ff7M}1cX%H|avfT62Bgfe;LU!k`+0o}7|I7gTQ$>y zAM%vmZ-p^1IV-NyCRbq4`sjQ@z-TME-E3K!*00q7JB$U!%VG&mVY`>R@?!}b|C8Cj z^83K?>fnca;r*Sj`*2a#!_7{WUIXcVv(g!QpZb1iHrKvgBfQ(^8r;qBMJJ=RKh|0Q z(2}H=z4ZNE!?pCevPmg90N)9%-{+it+bq)$+3s7ioMZC?$Lx?JgCK5p?=iIZJA>wu z<8+~RfJ$eNRrE$Hi7U!$l^DhbrQnIq>O7Sk4r4~)99)lRN3J&;7f}Z%{+UVIzM+-{ zJDkfkUBfudAbH%3(<l2tb*eFzjN|$CA>|YqaC>YfIg?0-sFSuw@M$xGmVwn%-aYy1 z+1)q4`Lny{-+UGAbB1#W-{kbavCR8nu3EFd*ZaBcv*ZvyY-ag7DU`Fzh<W>|SL{4V z-kNbXn!Q8sI?(82hc-FT=kc>IkKWPNy(*%mZ;X91Zjj7=$1MSiKRf&=^vrh5F`0u= z`_o3rWo>86IxG8a2F|<J?Ite$i?4stcAQ=*)yc^pb13F0Bm^JYPisl*^T@-Qd*vXi zM)eJV%=wCrL5xo5XBMLw*-Dx*5g%rpRL9enwAJvaKsamnTgIA$JzZ5gD`zYbFCZto z0Rww^yGOGb6B#J)U&Y^?-5L6fq1w<pGnzHb4TMy8eI5DvloPBD?;IFax{sAR<D|Mh z%%HU-zv{0{vmp*-dEE)mmZna)g7Lbv@O|+pLo&Dq$}Gu#+hJU<gF7dffYxu2n-GdN z;Yd+L8M5^*dehTq_AELTwmv2J<X$$ZqvCjJtCKPrO=z@LSn63@L)829%m*}Kuw@={ zkk)RZIb+WyY;w~5yV}E>oKZ8c_Jxn>tGN=x%}*G7KJ~aKCLLNqYN=|Q(&2|gH7#=_ zV{grB!9N<D!)-E3(GUNlg*s1G)x*G1ZSctNIZc%@Zkg@mq4sF@8EPEM$J%Ffgoo3t z!Lt+^O$^$RT}!9Q2AwNF?dcac)87Jut}3(Oi!ehpqd%E{NDowxC-i-Z=&v$PzSidk zo8C6~VU@~Y1&^}<k4FuT84#m~95Pm`S$#*l@R5a6;Zwx$0|md;ePJrHt5mlz<w&DW zvl$BCO2KLeHlA>v+=D|$Yqz6;POB8!8hFxN_v^C?KX&iY?bl?+)h`c+ARPLgHrwN1 ziMzhScHPj2m9nncuL}--o7LZd5We-99TLwHlRZP7-Nr7Nu2%ozvGw$)Xs1r$6%Kx* zesTJUGbm~%SHH6I!lUGf6#ePd(!_U%!`WIfdeufWQ>!nYf7$8z-+X=d^)J4hJve;g zIelpL2Iuc#r|sWs>-vCTKdH?daEraC4wXYLUWD29{fii`<qw^y3H7PJ*eZiSq0zXh zz%Dw(psBtlptY@*3FlMXq6eS7YWvNj=he4WD-N%F-uuJn=$0o<6`oEgPG^L}Z1`k- zgIC&%Efv)bJwMSY)ek)m2kL`szqT=HbNV2sD?fH@eydQt&I~c$HrPjtZ`DUMr!UUi zBk&*1<55Z17Awgijw)gB0a<occjfA1=Qkw`2JYxz%fYonvOQ;4-tG-L!Q8;=!*s>t z$Mr9jS2G-pO%{-Uy09%LC2nx7G7L6Xu%h{7&Y?If{KlgF6FdKMwSi&z@V2s#zbJRG z7f#m8Q3AgKSQ@&>3a~RcG^D0KcJ@bUQF(P%haSMa+DTELuk1dBp91_I1Wx=Fr;uH@ zv<nZB3*eQ`v-{)Rs%s1y%o}`_B6v}eQ}nt~T*?4}|KhLy^6sDi@Q1r!wru%`Dk5pZ zH*ra0uCgOaq=^=v6-hZtdJ9wT4PAM==L}zt!XeE~c?1h1wr>)^o;8xI9_}?1F({yu zRX>+JA<#|2(~pjqp=3mKbWyJG(%wJ^{m}Y?aX_h;R7sE$b`O&y6lk#u6<)~T4e;O= zGIUNsP&#YZSE>{@*nUr1xXp>&^9eg3P8xV9X*iZ<`9Qj*UwGh0qv~FhN)aAqm^HEe zUG`y^C7`6%0hZUb(_y2L(R|9YY-_}W4X?f&k|}L;FCU{@ouu(4)cuVnU~d+$eDa`= zzwt(SB@`z4^1?$o{dkskWtD=Qa2nKT@;7)ACWnQiikYvmC)|$AsD1EDORf)&<?p_X zD`#bac*8&axVRt}s$S=L|2>?5NrT%dxs?L-%ISXP-SX)p_D(ebx-12ok<$I@*zb*_ z%Ll~pl=wW{p!awy8~o9;-|hd3&bv<Wa~9PcEf@p%NCD#u#}-ceijSVMPsVS0#53Mp z%ZkPWVe+AIu#D_aMuI=u6*ePITyQD=qZr|hk2kp~-UW){ri1EuENM6Us*YwADRM?E z=WoleLP~g|xfu(1sFb}pbC`?;m6kq$pQWv%dor(6($N{Mebo$>gQb3a?F7YU5u17B zlrajllPxE#oR<OrwsdoFEm^Lk^BNJ$h)zdUc`Bl=yHRhoq9gk43q`mvtY*X)aCQDs zGg`)r@KjfA(hM5I_Zh=BT<p&@J40S3TM_oqQkwxwX-A%qOv42;>xj{Ncq9oKC`bMo z%UZ<w^f39^C@kYU9l4p@=SKKD1~}wje{3&P^?v^17ri(Ao4aS<WL9Ksc%6=Ssus1` zL^B7E(<#bqJ}^ABG5A<k9WFUc?{hppamwSv-P`!X0ICP}&ccT|CQljmIqMG}Gy`dH zuhIK+nB>9#2w=pj#cW@%8Eb91vN>c%uGI;>w2{5TR2?hdt85<4Nl4amU_U(0;K``- zDjyDoc4FVweGaDqucz@eNz8$7kicku&VKWQ{h~KoRd({qK-x+J`cl1;<+CI(oWcRU z$yGn;+noCh7RFp;sP6G28oX=9!E1)zaA@&>QnftW06_08e$ZhgaB@=diulmd?_hYR z{RRq?k<M8uZTT&|j+WaOU;54bRg>9K;fV8Ij{N+&pG<~@@w4vuB-s(1QIhFEmz z8$pZXY@>CvyWz?p<`~%*YJ~x3G>kWsDZIOz><2J8<UDa4&ywrfs;c&H?WF(fPr_v< zJhykAarQjNO8Zb4-Gnn*xn<U7Nwk&c9L8wGxcgYW-?Z1-4Agy&o%a-ziS>6F(ZvWp zGZsYVv{$r;*EvTZoRY7ls|>o#fi6A<PdLzV<KRyQi<f`Seeme2=U(L(-o=(T8ifOz zSzs6&avU=7GvLu(zYr7F{w$lf=UpCQU^+v<l^6~O?c-2k!AUBOGU6;iEu(VymA{Yd z+bh}gY^Ie(R|GS<(F!IxHdvWVkP}GGsMT3?(N9}0UtaoVI!>Lc08KPtH=}v_st``A z!OLvncv~s(>AQMWM=;!LAiIYUj8_JJMtk%velmK?J3fW?nW;MPt+qnn%SM*oJ-F`u zUiTL-Ds0ykx8G4i{h@Zl5iOv33qu}qJDfzM%QtISdi~8Px~dcxbHd^#=LPmxG9i5i zaWZ_Ig@bcwkD}{GH4+mQ$&|AMuBEVWJ^gWs18BR*p{>?I*ORm8r=0G0l5)P#7hgWP z`}Hq7J^!zMdG}QVmnB`Be$#T@cW=_)IeYKZIXmB?GRcpDR0km0zwg9+4%lpqWE=oG z!Qhj6!-Y(<5y&Wd>^OzcOl79Cs&)0)iYt9sI#8do^yx&aAiQInS8j0D0eMgQKDUxI z9p<pqZD*=pbhkFD?V;paMLKNf4H)=K*WafLtUA#~KBZ4#rOx<AzCXOpHmL4SS2nn| zl^O;ps=FEGb4VQc4G=lCkW6)t))&3mo7(y8v3}uMP)UzY3D^dR4xf%pk)2dn#BXI# zb>+Bkc3MV%(HQ^fn>p{%&t{amyY(^h)9;*0m--)?%Pvm43D?RNX{O)rd5-RD_odY? ziHaKB+Q{JD@<InJU;wz<)Zi2X54rWpqlq@#SNPS=t}+MV0CM~J!kdFwzcRTF;Ge=j zKZnEwtuz-BH|+jHo-HdnkWM;^>d+$KRXPM2ZIr1|g=dXA|Ni&?bobx?^}pSH`NEQ^ z8eJdhHd<IES03i9(>g*|bTM$*|85kDU>OVDVdBqmpU_A<q8|n?{)QU`eO*_$G6-uR zPg&p=NEC&gqSY@!Dh0(TCHzl3MSaT?eKnX84+ff?ItV+s&X{!%C)#_$G5~6J8j(yz zfwRK`mh9wFGTip3fX^2ip7P;;>K7hhNYn3y8>tj89EfA&2DLC<6vcL&NrHxt$0>1g ztImFVyfR9!(>w8Qf(&N&8mYmMacPaH`nW2Kf*Rj?G|(}FvwOx(QK!7g&Vhx1r#@rq z<f@PZ3;oct{OE}@>eC-U<x9>)l;DDK=r8Wb(bBHQ;c(-N(JWM}=mG6+JRacXJGoYH zNlxnINCpVpa7K&q0X|*s;V9jwS&pZUb*(4wvX{Sn@Z56o(rRyTICVI`YcGQuilyNs zLU(1}(k@NmB9LMD%hNO3qY<JnT}m+~mPGieJNrb*`a67D$JDbhvqoE{-mj%mCk_n{ z4#&~;a112zMrG}d;S`z~RL>w+?&)mEI++nQ<EB_`3%v|_7)`d?zzDPYY~NdPqbG~G z5meRP>~0Adg5DwfB)*!lI{R_KTA~t0v%ZIK0k7=MCRV5eBR&R?h~=rwaC}_{?G*vu zf&04e`wn{el%uQjpzNKnY{uqIGV<@uR{p7C{@5t*w=H3MnX_w2E;`KF9Ziw?$cTC# zeNuUqi4Q(&d+~!ovf0$))@emcgFwt+ba8U7!?d<ns@EaegXuLgR?k><VP6iK;k7Rq zJG6!D;eF5OR*_L5*}Ks-rj4eY4sx?E{&1}6fL<N*Jg4^EhaUlNw7;E~h0zn1p)xW# zXwM4s`WZ97A9MT~A_#LG8Xc4T)K=&0goD8e#`8m?%0{$<JJ}DfM;Rsd!Rnmb_8UDp zTCE(a95cy}TbArKKKAqGIrg1LSiJTTuY>J?J+JTa9$1IbSQ2~MPc`p(18nFL{+#s9 z1cxJM*v#DbIk))X)kp7MzCyB<{hp(nljO3`4IQ5}Q*8$BLxa8sWA3ef!TZW#ps5?{ z?WyIq?OJ8<8APO88DN&YmUO%sy-T+d{LwChtay6PNyDWMwxz`VWSD(yY4!UJ7?63! zB6`d7Mf=2a`YLC%zd0a#om0*-8qXLe{MC1D#6e@tf{@*pFMq5)<%fC(q=8NH&#AD` z{b4-)nDO^!4sOn}PZk-9Sn9TYyvf{o=dAW8Z@}h^nGv=Go+TN+_z{h){y5q*7};gy zVe-Fro&4x;0wJyb<-7_f+Vs(<8E9b0Z#4>9mEW>S%f`Q|4xgg;4rvQW)gOFioGmrU zad;eKtwOr+=6bf5&n5k7H`-4;4*w4gcD+kC*=J}FNWaLQ*{4Kg%>Xe+VmcWe!r|yD zhAKIWr_okg^0{T?m9ITdciqaC=2Oc>PFvN+(X2G|Wo7v=q&e;D-}OQ9W_@}BLihGB zsXh3!2i}pH_+n4=mSrXn_yukyEG>09+p2Q#EJCDPiXAOa9cL5ZP5if4^EjWC87^}& zin|8nHrObwGJ-*`96g!F2p8e<Oa`hCo}Wv7#6^b^%>b{w**$1S$3^GJzr6CRzg}<o zdKPxV7qt7I;QthMrSUuYgu{gga6orW9>c-&mF_A-P0C#zi|==K*vd~A;s<=y{{{zN z&V6!rD}d~LF7`xEHd)woDBf?YmP$7Yl=_>)W<W?g#Uog(y~JZQBQ;MfPfo7aSH{y& zsa>`esjVpAeDmV&&;Rn5cfb6z7tM^O&sR=zRlj5Q^j(9HPYXwP11#^gYsHgC@|@m# zoHMEa(KqZ}(KYu{^gVJD8HO8Y)>cU;ev^R>;MVtS@}=^O%g&alU3>~Z4lX_A6z26I zrG3&MmcGZTp{*_~&sAqK?a-#PrL2f5Y6<VQY#8WkFtY@6bca(Tc#pR18nMGGz2^0T zuUoz49l7ZD>`Cu5&ni%Nx|s93!?MDqYL$j#88-s~ir>UDx%4mn<2!q%$Syou+mBub z;>hsiKU}qyO&X_94Uo#eGVr~xwwZ)1-L`FLFVV`1weh}6q5plf8?Q(fdqMu{QqkuM zZrGLg;G!HYhaRj#vscknxMwncbe-&M?Ni^icj@;`=H-Ghygifb6EEj=eQq<iyjS@3 zdo=Lv32>KR8L#{6_X=A?|E}~GG6ZczSH+(pOHpuZT+wH<8kQ*-MS0(-=$F6v`tHB} zkAJ=U!$1F1Mv)WpC~1uuQTmQH7vm4H=z9dhBm_8D#M^Ue{4K9Iq&ZH_YE`2?hj9c` z43JW(vm1@RaIt45YNTDrA@UU)2Boz$@{DF2#xFNeeOHHpyfJBYD$nS9;H$-SS?M&s z3R>CFKi9c|>tF}tpxN{8#gqr^+clotc<6p&*zd~qEB%$Wd{_A3f_cGO<2tmF=5*Bf zTiqxRd0XeNp^^G+;?F41VXlKr5rO3^tvtdlQ!=Xn6KZ+Jd3139pqUmUUF&#)D->BK zL6xhvfjXUW_eR+kx=P7Q4j4iwE!0kYWd&$5q5>CQ-R`72C0&MJAn|^K12e(ud=Hes z_7PV(cznuHf;_=k$JLX#&lgz2%KNkLXFA`~T>}q0$+~o9y4CK0Ti()M{Myn_xGdEo z#v@fesNG<wPq!45Yy6N#9q?`Uh2P>Rbl1|s!~LF*(~2i>V{ne1Q_jNTM#^q89P!#d zP4BI3^=~{xugXubb!uC7S{k4@ni~<$D`WI9bPk<<GI(Ke;jjUa;8NraEhwVG=rTMf z@sm0HBCs=P@JDBm_|a7W&aexQ)7Foi;jg{svJS-+KsI#%rA>b+&k4UqM&Hy~>BwHz zsl9q-#G2#UsPqObQu@Kk=e_$eT>n=iyZ_#D)$bz3w;BB3zI@lrZpL68m03oem2#14 zoirmC&Y^?mzV6R$^%N8tImz@5o{>W%5W3Et3|V~`mosF-{aGW~Pb_8BvEA~Na`Zbo z{FE{MRldzK(*@ymZ{{luw6Y!k61;BLKGuHWRvsPMvpW5^?e~2Drk%Q$Ay+5MD2<4l zLHwBFd-meXmb(2SLnNan*}%^&iyF-{oO5XJJDu1}RFHF)GFB3(KpkhO;e4}2RbvK6 z)2MYa!7l8hy{$PboJj+4+XLDj*oVy&%mInHiWyH4RbBgdKRaFVUZW8_p5F#w(p{Dl zo5g+5?1ZitUVB9fqab;(mBXIh_br*`z?fa-_->Fa{WoVToH)lAJ)@&E52KZ3*GWVD zV>q{g>PdBV60&}ZqswtbTg!a;uJjvvbAG+M9P8hiP0k5_pJTc~s0>pE^LZ^!b!(LW zzSBXE9!XBLyGkW5oW76f-Hfj`km)ufHqfWc2zKhDZPu?wczqS;bu)I&aD1rl3?|n! zG^99VWV<Ri$9(rT{y6Y!?GwxpU>I?5y;{etPCu2EoT{G#;O=uetNUn?vB(aXvxz^X zQePZ0jJjhOmcKM~GFA?!p7##t?M*E$12bn)*=La5zVUe1vl`IJ<l+p_X6OcsA#K0` zZPcH9T)Nfo^lIT(TQr+uD}tG`wWZ)1#3Ac%8Wb?Y{Iq@l@@>g~a%5lt-j6v5<Skud zA39z$=%=p?3E3+h90s=jd72`6o5g*Q9E_gPd9zCqfm|Cvk#;Lrq8tTnC`BCukemj$ z&%*}sHb^j;BR5*zjh53%@hC^Y9`r4{M(5z5$C1lZr`ZkV)w&*67X7JxlKu6iLEZgQ zXb;uB&waDpcux<`m@jOOf4@7l2T4;u<>+7a=zAH%MbS_}JfHEUded`r2FP5`LD={3 z3eP-(bJIgTy4F_uz4*PrTevXsSDNeoz&|PB<GKbFt~7JF;Tepd(%+udjNh~PN#jX_ zZk2cJrh`)v$v@haSKBLI)ug%b;+&wv^c%2wI%s5I!+@w(luwf^7+kB5HW?K>4(Q>1 z`XCvhFP^27&LK(U$b{8{wje&g`}$X3-2L(|zDlR(%r%E-c{1myk<aPv=gIlnVr5zd zKo8LI<6m<8zQN*0$sd{Dm)g&PEY*?wTU*=eu?A|}tkHIm<TnMyL9>d%ufBSNpjGG^ zytMV`agJ`IzJ*n%rAx5|=R>FaTY_r<%Ixu!OcXiGiId0h)CXBopYTn0?W~5{Ns>C5 zVH4JvXUEfxuhWG;G@JWleZF??wDD`k{9S|HJHMcQReOlcbE=)fZlwYm^&jK|JH8YY zKBsMuUh#ZwjedyE)ij-1UnEZ#-6j95=y*sC6L0Mi?9C8&5ANi$LLFFXP<ZzJV#KBU z^=lKsQU{j~1W;S;adJ5v=oeA7-N_yJ3Mdi!T(YP(!hJ8<*VeE2t1ZmVrnj;?raM)l zdd@#kaMxry{>XzK|M}X|<qM$58R;X1d)P%JM85$P=HBm#@0kGvcF1UCMI7bTtp;_R zw-XK?u%WXC^Pmx)U;V|O-~Gey{^9PMmMsT7K|75&ew9vH-IRynHrQ^(DJM3bjzb#H zrC;JuT4N8f1Xp7x^rb3&h9h{pFMR~6l8Z}}7ryl11T)%8S^Q71*P$q~n2UKAnxl(K z`qppAw=|g5z3|a+C7tJmcPpJ7F8@7UmuEt&91(%5L7a3jgVV()zt{bhf4{eI2JFR4 z=@`=M(7SgDLzdm|U-95~?-yQk%1S5g>fA3`aj?Yp4`tA;5sLRMx6Vr0oKuE5-ceu& zws<lV>=d4K__XCSg%#VgI;y*;o^^nb3AzpwZEzBN36BCIoa8_U?f!;8`c-yNh9@Iu z^&$?+R*=;Fa#$E*M;X-UId;j>uvnodt@N^uPs#}(EVkqmPTgO8xeOwCTx(}#*b-g1 zMhy8s(>A~}j$#a%h3jUduX2hXFZ&&jf&oMHbgA{BbNS)}&AMN4=-RLRm$Oc3p@DpG zohH7?v+(OQ<JGC$_`p!+SlNqhk02*<vyI`RL&fur<_CvT6Q?6_Z*<nEur{bX&W`#r zh|poojV3#sj)NHw=2R?=eyRF)Kbln;^z=-hkdvJr2~VH!SR0lnm~h6mX@PL@zF+Y( z2upi-&FKi&@Z^|>eU41CG0i|Y8P=<WUia(O0T1f984D*B9a!fS{8!1J*9iT8?alr7 z9D|pUwF7aBD{X0Nh(~zvg2;x0`iwVF6n^{Q0n{WU*ZV9WUY3a=9GT-2eq;cIx4k`E z>Z)Vxet_f4t%UBvwMV=nVZK%j%vh?N&1_cIjhoRm<H8cx;)Xw@<?$Kaw4><Oo?Oys z*3fd^OSaAU{-V?Nzv{iYk8|=Sua$2*2!X<5ujD~fOMC4J`|^ty!80QpmN~iaGd{L# zIbJ@Ceh+hOKehCgA;gj5w25y4*WIHpdbLkWr=PZ0*MUn6LU=MP$jD5E3=~EVsxWxe zhGWDbGMlKmGtM|z>VaUKBF-H-dC_57s{X3|tWSnVts-EY2Q)%Gg9Vm8qmwqGm2qGn zX9!9BA?L*)k{J@RY4FG^lK8fCkOQ_ha~mGh0X6au%|x1!<P6gfmH_I{AGN%eW9uNS z$H8LADgVf{I#dNTtK7{h8h~ug{+6s2X2zrqxzV*U=D7FRDWO}2SDl=sjef7IPed^c zu|2!mt&=+EkZbD->Up}RTY|3s>MP7XcQijMI>;S;LZh^g9Q~s8_9GXrzaq1PRei4g zY%DAq#6COe(Lwp!``hzVwC*=C+CWcG*B;E0MCouWE?ha4JM=O-jK|T{fEInyzxYHR zZu_Cb9bbQP(vO+RA((6(Pvx|su$~N*-Zln~$#i-ATYsSWqg&tU*wR(~$%a`rjt3`W zx;1&F^LTnpBL}E)Zq2UB!<2d1>V@OLBbPcQABpJ>G^>mn)EQvRNv4Yp+K(5q!!5cT z{a8Lc>KmBVtB2ATUt5{e8ZFVq3X!W_m9V-Lj<a><=#2IBAyUp+4<;K8(%QmccE8uN z<lwOXK09uu)&3aW!!NjW^wAZSH5}0-m`XyMKI(+mb1K~yhR+3@IQLS*&u#ZEZRxtE z&w4m%4$K4hgvsN1^rIWlbLAcgcob&~JL#{q*Yn`wH@YjQ|0k?F#1a<q4`zPP-Gvu9 z8t@3jZknwnRnK8HT$D8@N_hB9)(blWp!(-zIk2|3_!{J}yni|-!o;2O7%1w#3dv_y z_i2MrFTQ$u_vJUw?!Nq0D}}zwS^Bz_I}Iw@=0nqQRvUra;9%UJuC0JMsRk_!41dfS zY&lfAF}|?@)45rbqltl^u{u}|nH-PJLI=MdYJJ?3oU}*H);{edcn6{yu6bW3r?EQ~ z{$mJ#GQe9JZNWB5j<MI+8AA1D1Y0Pq#M%lnm5n}gF6o*2p@->{>29(SUvOeN9FGb+ zr=r`&)GN_CZ0cn;!pnZ&w8G1vV`{hqxaxatjj3*rTdu6#X#-^1KKaFw`<U^lbZ78J z!&9Vk$Vj@Xx*a|iH~Hwfk0fMmGy2tYb{;wC>vB-xqb8^#No{gmtxcw{vI)@8>LA39 z3j5tEjexRam8qYAOvS9PUa911_=F2|;ujgenqnb)7DfkNax0v^BimP-5O>|H%luM; z38Uf^aOIcoy1@BAUD<1gKnEy*o`1@CWdcj1P+`~kf2ABIa}mwhP>wEaL<)y_Odk*V zND|=#R_FBb?u$nA|L*Vq_U^C$_HQ=Af;gM?8HoOs=U}9a@`4>Q_Rjb{m>$L8c_o&_ z4C?`L(r{s9U0DAoCWN#A_`;K;1fVn{tg<Hrg3pIgGykZ+1FM@tmfv0J3IF00IKo$+ zdw5IR{ly$5yAD*4un;cY&|3>R@u~;R1gGfXebM{ImkVyuQtW#PgpdhhK!p8VD8N#d zVwD4qPRPA~M?OS=($9rNzjB^S12{B0v$-i9&Q4$AM_HohmXtB-QaW@)#5r}Lonf%L z1h+@zly5XkvFa?A#!u<NgR`(RGR#1bx6ILIMhcM0i@IAWFlR_@m2<1dH4tGopiBn^ zFoSc9!r&<zExMVE4#sM>bmL|46n)BH!9DjIuKNilx{puFSp&b-Z?K^a1|XG_@|pZA zCfc5TG2%|Wr}S#GOJ5SSCF@8DA9W7m9F*a=r~Y+aPOcHTJ(qU$y2TxtC|!upaVnhi zHoo`;dw=*IUu*D;L-f}Pl4CPCaMt8GTJ<ZX6^{;KTDa5nLOc2}@D$#?hADq#>qN9y zXzF}EW)K@K9UrSF-NGrh4Pu6gx(A=*vi9va7{f8BaM_GoFy%Qjp*f}{-oBm;Npg3O zh=r9kSVty~AsnoboDpv(x7k~c?%99Sj9a+u5RdX<9v)fZ=Y4@c<P3aY2mZ&LqW|3t z@OO3mAMn!BplVsxaHu}&s^h6}dlN(T+z&BCkN&sMa4P(2!{hl)t_dyY;Aw<^z7DK5 z86S=jE)UQlS^f<gVIq3#u!El+T&(!&3(qoSPFF`T&XQ;Esmx1RIg=?oT3zDD_!3=n zDxJv8P#~-JK|Rl5{i@dqef6tf-#vZtbw*9E2C4(y!8|(qF#FU@k%N>zeSDehWXzO? z!SnD5)2X%*EeXa4%V5j%(CU)jA8Yp1N`ePDf8J~OK8I6}bl>2DgTTm|Wy}tv3c?01 z@ZP~(Gb(x78D5t74v%JoAAGdmv02WH431OP2!1%>6DpdWOc*yilDs^7*uLPV2;N7V zck$a^)u%ay>S1Q!Vfb#DTfg_ttBA~uG|PB*Kveu<Ny<;=89-ako9yot&71BZi`s*> z_kq(H4o?5H7f$UyCS&)Xs(<*o3>4webYeV_9z1oZMwJuYCK$<nVMJ+8cC!AV6<CZ< zeYn+F@X>xyz^tMf1uL}-D%oG`L~Vl`2S}2nu|~M*knsl%mE4|K1nq7IVQE7VggLyn zUD*a%WVFmMviBUn14mOpoi63nF+v~a=$ft2p4Jq)`TTm9pi&xe-QM<QySYPNueDbP z<-k6RX78HOW>9K7csye)cypSAtqqao<4B(0GaFrfyVk#|Yj~ASH>a}GLv$WJ@h$_` zERQX~gB4y@iJg;;t7Q2N=0*84W0j1O)6M9{1N5A882{g7LBpBT?{G6^ZO?LXbO}e+ zp)`A+bYW(utxTxm!%=!XLr1+15r|U9nGSg}d(GZpMaj-APjI|q3*Rg?oy~-&aQ7RG z!3*G8o2F$iV-dB4%FrK_KU`+mQ#XB&E<aihEMNM14sO4J-nD)Ju4o6TE+wh&buA7e z!>0K1)9pUW4f^POl_RMn(oa7I+vEDY#T|T<w|=F%OK=?N=z6O^c&@=M!B#X>=1*ao zc+a;lSo({Dhg4xG4n5*4y1*G@w9&y|xi|clLw*#9uO(H3t6xuKRQurE!)8n?kDhlB zlmV0thE>q)v;dre1Skft2Dbx6gR%A#FmK`b;zdiAfBF3Gn?L{R?nS>3dcONAXDX-i zZL((Tfu*k>v&+#_d(#Iz?7h?u8SD++>G|4R{piy#pVx+yi`wxyEj@jx{Z=RPq3%@5 zYzJ*+13wLXhU=&Lx=&4>edv^DGoxO8C!Gm3j_(tzBbw2DoDSJiW{zFqaQM*SSP$wy z9;R!j`x_DZ@UFuRYg3tx$$$E#_TklmoLP!x&VIP-bJ>Ijp6tQ(UU-Av-c!rLeOG<n zwoQSqc<(^R>isla=!Ce_w~IW6D?N8P+4|(Yc1Zn~HX7nrAHLXpDJ0Q{j7Ht}3paG0 zKLTiSRWYZWZrJBf%I{F~r{Zg&@6$;psGLXetY76=VFl9QOtvbsx~`1}$2~n(Gam5I zPIy7;#U4n*ki?rzlf{$Iul94=NXRLtGOw@rpUs&l&;S5H07*naRPK}J^mCLe%zwYt zF!<8BuJqUQ0&oAg<-25BLt3T7vP*_5vv^2P&WbK(1n6G{_JvgCU3ri$TSCGrS$qtW zC);7nskH6U`t#rX=I-}@_?Nri{`PN149>4ndj^VztPVd%9A*n!VS5?^2)uO4gG<CP z5;b8^r^U+~^Sk#oBQ;}b(S`L9vOmmo^>}{H4ZK}Cqy84XIu~|?o$v>+<RFY*Wl<ic z2$X*G>~{*cbSqhg<?H5_ZUroVLB;7Dc0tE?y{EdX)6ZZp@|NgUU-{s0)!*~gF}Qbe zRHx8n4GEtWv__;1a*}~Sz|^O7o3U3XIMiukxLIADp5F;$`G*boebCBxPE5RVKS2@4 z_(WVKgS+3NS3xpJg-1`%8VZQZew-^T!YAzkT|(y&52OO6WtgoD_@sczi!kLefe=&Y zsQ!UjJ@M+$PDtO2CgQ=l@plC%O8P*_yd}}@$(%Z=RPZMgQY`GiFJf|`>~&ZMZJ;FF zH-mQCyL+7^$9BefK*2$qUEM1ZZBLyP<nQ2s#8S%RI(!Ga(B+|2(fy}%V4Y=it8$Qx z;xh!JpSWmX|LiWjX(|RrXST{rL_8l32WRp}p_;)5i-SAmSSPp{m5fYAzS$lok=Y8J zg$|HGciQ(27nOnQMThVJ3kPRFU1+74$c}O~AG1Z2@l(cUowiwJLgS!^&{&u{lZK{D zPSqlcnG7?!@9N0>8V!C_ST<{&M?9-8b&DCGIm7LZ`@S^)o}>3|F#f$x{eO2D&X48Q z`Fr6#gTVE)PMYk6!1#a{qe~QWt&RF!l0!FqIj{dIVl*heo5_FK?2~?8hyIMSTPL?c zfOVn=b^$YbkFl9?kenVJ3Rn^r9j<|oL5@xlY7WJgl9EEYl~CO}ugSi2)q|n4C7JO} z>$R-x`HL4FT=He3Cv~bg;E<x|<ekGGqK|`zEH%Dw*)s$Dxjn@R&wWe5-e-U~by=C5 z-N(&BI&{gwMjzkzzSxX@G}HD!emJN3T575e4ikEBdqmtpaeO7Wbdjeg%~qNv@cJFg zldDnf(J>zFLG76{W3_|!>-j;mVT`RU_l&>afA{afYAIjF9+~zkDRr>7%fV((A7scS z7kTlUWqsQ$#;YH{uaGe5K$Ifle`Pf4Zn^h|oOG|=xg09xYc~ck;Jri4Iv{Gg{jJ$` zJ}rZcqsy4c$*nATmZp3=h$O>J-FF|e%pe;yiJZ5xVA6;DRp$G6VcGf9-czhKtR2Rq zw;eEJuc@W*_U&m4NB4zD@U-LOoOo~R7sF%wo5N>=T@#t=>{*r&SU)|Pj3@L%{7@c- z=EBWT1JgUI%PC3!`<CVyp{0pMW}CE^vt5QhAP)vn+ArKJ6h3MX@VKwvdDiUC(*|Xh zr+l0~&Va!Q`W_DWxIT!U2q68*ZgHviX8Oa*>DX{2C)!g$r>~-NT<JNS>9K>`qb+kZ zV1fP{aEl*Ko5f4N&w~9tS<}SizgE7@1mI}lN#&6bv+U&K!Ro5$;^7&b@eM8ETKdh% zCLaJ>!flekNw%wFX|$BVt&ZD1P+izt&O<oArHDow$V>(>Q90V5K??GyeE4#>LqB?* z!KTfs#ncVH#jvB(kxY+8gW;;dj_|~S<pvKg4K!d&4zQG^`K<dZ@9I;<U*XaV52XuI zaLQLPm!o{y!DR4I^;T+mQ3EV@b11q4Z-a#5=?$2N>|{kfiq}8GkNm+MjKLW$<L3AS zui;mCfRu95g`fTePlo#vp0v}sOIzly!|U)+M$bTj$?@-R{j+;=P3N8W-)b*srGQh; zor#d3M-wufZckp!I?gd39JWV;K*4yP!}j%yCmkgF;_lbKZprd58|cc({a`<CdaT7u z@uxaNWKL--YLZRoMD*|OK|0S$mZ#~Er|EVBRr*<{n)`le`91#l8YEwZ@LJvAPtMJH z_Po^u*$m)1Os{~F7gJk(P`~=*Meo5*2idDjo(7};+ULh~d>VcIMWc8fyjQ>BTm^%W zwRvp6uWzzahOFSZ!GOAwXi@oj!|(4qd@$L6Tf6f$_;(JULq`+Zh1JH_T=Txj`_h(2 z*i-E;`cfzCsX4kL)IS8&`jCL#RGpT3D8!BL%t?Ai~xK6-}a=&Q*B{bJJMN%$GS z{*<oLpL2A*l1TjavS%D^ax>O(G_`5;-(*ZBh2dzREs&EceE37(Ee}0XDtN`Ss<G>m zalikkYi;8eA;sEa<tK<|LL*qN3l2Vz_O-G91I))7qr?DDc`Q*QEz#Ds#)5k8QLK2K zq2C=RUEH$tFDOeFHI5*N6SA~bvT(CIMn~>5QZ(G({MFyw{p<hrKkvTG;F&-+dTkU^ z8@M&o^0^DY1AYG&H+*g}7+4J9fX7Z=MBE`@M6*zc{{L*<X}>1RRo>~nYuGiMb3`Kn zf*;s!knsR`XutCJ|120|0g{k(Y99K3-SK3dlDhNRxid3{6>EwWD~60zfrB^ZM<kj( z!#vdu2N@2X#Bv&6G#;Y|3n{*g5LAggD^twTgIfr=-Kvac3ek7)ImW1HtQtR*zj6ly zB<bNS9PbjW3hP){SC8%kv@+1x{oYwBJynoxiSUYV*3;Jwf->g(z_n8xV}jnWob$Zh z?kZb4#!#hB<u|fr*`_jV&;BmnzRua)$bJ<^C)bDWEqye@^28`s`5r%Rb|xdJGI7$( zkj!y}BU-u`S=?p^(YKBhJaa_Sx^U8|3cfHrMbu6>#<xpRy0^iII2FO6QO9)r8h<NW z{y+se-N5(g4r;e5`AN^|=QOQx$U=@+;4K~w$ME_Oe{$1#>8VsV-2l6Ebfn_r+reR* zw*`mc)%lXfC@MJgY6!|y_<_}bmZP}gMTtB*%70KgqxiC|L1u)C(7-W{jE)oGN7io7 zz{3G_U_pPn2R;<0RcCe_4RjigI=j!(jV&oG9Z6NpDX*-fIr!5b;ms-$2^l}MBO=<? zSsP3^(dB}(PdbpCOQWPdf=+}<W0+jH(uHvcQjQ+B<$vW&$8Y>G>#(KIOV2omJ80}j zhMv*4$<gCluWi`W44dyh!xilsIk3&JysPv5rjE_q-YNP}_<heWQnx2LdgmRmW=Ilh zXm2+6m+h?l&wXy_pWBu8S8d+YYNj@*3Tiyu#uyrx?rqMYQB?1|BT3X6ynsd+9Z&z! zDA7%qPq_LJ-%5Jws#(SRyBEQAK9AQ<JIoH=birp7>af-cd|F-I`#sHO(UWIpXDXs1 zD=ONPk%sbdpZn4A``og$&n@{fihggm$oNMWv`5}6)bRN<z_X_>>+JU~Vl%U7cxb~x zvx2XBfAmR?%!{0qr;oo0=ipUw>|hyt?>_aN*+)4(Pa08w|LRrCzkYr9=-W0p>07uQ zr#Us@W8<Tbb*?Ol|6JZjIU9CgejgngYa567cB9>p`}Pp!Ym=yW`!;;>JVi6t$?1OH zGde!BbnUHA<CK4&J^2)F&FK21ht97<r^-lr+=}4b27L0_nKpT12R?jwkzVEW=iG4E zv`~-VSrYuK!_S)|_qL_kX08Jf@7|?v(PU}zZv)sLN9OwOsDR6XepDlA2HLy9^gjVL zc>Jmql|IJ|7Pn4^`qe$<eWT;+Xjv}2%=l)-TjH0Vr}t)+z5DNdUYkRqfv(v|D|CjB zj<fcZCY}MBmW}tk@7dDJj;GmsJ||~UUG|;jEj^BZA94beN#FJ^aXgxnk~|HNj+xDT zct;fG;GTBtbmYQj{8!uQymp<9VAE`Pvv$2Q@MX@KbY^aIsL4qihtC_>ioR_$MUP8o za7F!kTANl(Fyl#ZRtzI;y<ZPzs5Zk{{>^@+_*R;oPk8CP9Xhm!6*$|j{n@hhuAE-H zgP&Pl9mn_CkP1r<Pm_&V<>J}Z=zm{2I>)6m)WDXq|E~>#bj5XLZd1s3564+&a=kgR zW|iJ&v-T;rc;)-d-hJLmhElV0&*BRaYCG}BJ9~6%n`73N&#_K!oOHe#oxtz$d3c<T z@r6^&&Bg`7FM8#pck86^4}zto)B)&k`n|TOfjM<^dPXq8X1APl;nD|kN4&P#yN;*r zC|^X(F2{RvW)rp78|Wa+>%cfiLFb+MYDzM2$miSRbin(R^qBv#&*DTg-IIph0$Y2i zz4a?{K<6tM#46~#Y7-3nDxH-=t7GLmx)w6<=*N!<>(LLNGl*C;97+Rv#VYBfm4V=f zWc8un+Tr-GS)@1i#)*B?Z??>4eZpz}<2toEZC)jM629`X`RXT9>`t!FWzgq&9kO1v z-StN;Q~t>xzP$TM9o?6`mwRucDIM5OIM`^-chJ>6GoWUGpEZNJ=Wkx#J?=ZZsA01n zQvmk0`tfbFDBCB>-en`%y_k#Yk+?RlI=drYvMp8q+Oh0(W%#_M>KY-d6P77Iey*L@ z2IPw%DqfuxG}+MVu0hiGuYbGMIW+>|!4{Ckse1{3ZJW9}z~OC`fp)@ReXc;Sth6h8 z{y@2F7n|&%-?dTnK2F}fDV_GJdE&wCu@WjOUVUga4Oz{vD&JlOfUo%Yu?e<dc=dpv zpp)$Ve)ycuAiQEz@$}9sO|wyzrE_01oZbZ|xl$8+KLdM7d%9fyt~%>zdi40)%2W@d zR(&j*p3`^bU9SSho#_i0tM}?;^@cC7L5Sr6`rrq*Ghlqmo&T(m9pSxXp4Eh|;k(`Y zg+yzp?U3x)`gmNjw73KpoRh}?26Ijz1ctcEGPWb;hd7C^{ISU6mw4d^9pT_Cc2|aA zj1kx$<=l(cC3*49AKd+$zxvtTU;gZ`YvjG}lC#)JnYM)b26ylj@)d4MNN<3={ey2| zd!(3z5Tgs3P7+K{>li?#)2^(X$a7GNPH752yUxV!dsdEnSEFjHa2^Wr4jctwh^AQJ z7S2G=gcQEUSXlVL<QzdPjY?#O3H%)pzR@ZrepUOA!V=GQ49tNA->;R3V|wAca3Cvd zxJTEV3eWNB80r(oNIO^2;MN)F@k3gM*+BNSc?Uz(81TVJ88wUy%+aL`OU7qq)Pg=Q z92cKua4Z*@VJhpvugrv3*%fp6b;DVFe`AS368vMM1mdW;A-VM84=?aU*$$4om?=$n z<bm&InsiE}+l*~#&@Sydo${;zW%VOyf90LN^sF2mCOWaksNCK~BL6^#o1DcDl>2Uy z!RXd2=@`H024;60{n>5*3IhYYPCBbjO~NZ9Sf#n4w&dX9$!1GS<CyH-cWyZnuckwt z`0_q3xSiA2uKkTZ>;na@{U09=RLGoJIyleK%Q=N3w6TB71K~-)A*t~`@98#zoGzFR zn~f+MH*`2OR2-`9_?OZAkOR1HFJ`HYFm7{<@Ye3l@Ljm#cgJNarUQpN%b$7<_jLx# zLyntOSefJ&fasxT;8xh2lP_>;Y(CfVR=>6*qfShY<L73Uyq7!L0?sLXts$!6`fYK) zs-gRrI=cVT46fPS-&Aib)if$gl9PD2U@r$~BEwpA^>CBaXp8K^FnFTem3&r@*_xQh zk;h}pv5mTOPM+Pa_>I3j9;4x8zrhd^!jmAbuDhG<ik{MLWLG_LdUugi8JsPxieXu( zIlj+wg20u1jc|PU)KX_VJX`km&36rI22b7dnUhC4sqrqCVDyJkdF#YYkL2Y5w@kKC z_IKVx^^#%0&**fWwK`I7;_W_(VrD7_#U>#J*FMczNxxGFGi-UeIrSLS232qm5Bfh{ z4XWLiKUznc&b@y1dX2V@*XKUD^T`ZBIP1W3maQ@{BPa8-W&w+w(`3mohr&i!^v29E zC(Vk1ck%P{J9MT)oRm7>W^1>hp<TTDj^SF5(tn<A=@8NV18a^neM!FWgTHsMa3h%n zxz4>$2Bp8<&ynknQ>FeGjAEDeo*CN1&1|wxM+}-Cm>pMl4Mb=kH{gcC<TS@*klDtB z8!rkj+`w0`bM4+m7ddP-PibS7$(hR1dFm5Jc+pAjTMifAUJ+o+4C;ghYF2+}_+EpE zZ}8j9TR5``>e@C(3C^*Z^ftPwPHE`O_EiY}8C(k|{%v%7=k26Dx{iq1R&>hSi3jTu zbP=C4h8Z58RU|=(SMM9xpzB*L0B?NMv8Wt%h|{;agI(dwZmeTdUhmXyRz?x&<#9-F zvWyV?F<6S98;qi>$&XClWryA+=MN3+&{KGA*I4uwkB$w9z`J~K++ab27jSaun8L+u zJ)Ya_Wy?5kbvds;zSt)_W`qZL8$>THKUOE#yXkDlR=<>zQ%eZSu-c)h9uNOaKAhR( z^a_uIbNrEt58hVm;E59J6h+F8(Ol}Y^c>%ndFtNyMxOMe)Zk4<#S@{hBij?NUU)un z?%mOcn~g|jjg3xrF|JZmUb3q$>~$psrTZID4-WV-Zt&oA9(yj#p{!*oD%1kxUs(!- z^8w%)zCDkQ;L48{1?=7xJX!joLAhipP&*>7Fm0G@N*c`Iz;_!O(x+laV~M<z>oo)I z#9sL-2i@Pd&e<!^#hGltTeG;C_YH=;Y(VM9-#xqg!#{Yq`-2~U)Az%hnXQhsf8Ols z<2qJ4c@Ge4mwN-LFgi<xOPGxBo8bD`GGa7LAF>Vf@jm^wLg^{KWKZu6=2Y(u^x&OC zT{Z*hz=HXD>H5Aip6qOtxV9vGbaEesug|Sre4|$Zi)R5y*9}s71;(JG-IO0!A3~<| z;ZvH}l+UWJ#(y;8|JnogIUAduHF#w({!RF6XYh<x=<It<q2?d9`3BLIjoK<QbyNL^ z28p3%!tC0E_PV>m)gSglx$dj~m8%^gRb@HBH|T?({HuK`4({4{c~$q~$d#P$x6%oz z;Z%9^jh36bdc`yz4X%9PmkykG2fuS4gNAsQ+52OI@n<V@i$>Dd=_jwCeaYYb>go+< zkE`cbSpd`LtDc>H3fvA3($k46-t%?DkJI2u>`?I`Gspdw>cl}@nnUOh#G)XgL*N)2 z4D2bY&IU&lQE?1a`5C1I%MkwPC;wNU6#6fBKmD^muUy6vA((fB9mL_I3Uu3nx#xr< zm?c<P$i>K`RLmBfmIHUox1iFT`;+gem2|<N$)m$_W%R7GjV)BhA;y2BAw#Eo1_Mq~ zz_VPVeb*Ho>{~t;H2IUqy>tqpl$Suwl;iJ#2uM7M)`bHm=&OT#F5wO?c=)|CfJdJa zP8qTaJ90g^oU+mESqgYbNRh~Xfvec(vn?8=jB1JZjXtssCS&%w8JF)ZS!Q&?gRD3k zMu$Hoe}fv&`mDz`G$_8PvWBnnx;G*|e8@}38LoJK!&$P?R@v}+ylE%&1P9vEmBv4J z?$<$etvrnZbY&QhhqU12Xa=ulcsfYRI>;(334^<GU3qZQmG>AYP30-4=u@6@A_`6n zjAL|m501QorvrG<{WgjThZ)G=sB$)5NV~BH%KhsEx9gxLBXSD)f{*N1o^o!<x65_+ z;A}aWvf{-CL?9tuc{%P3*y<AggIhGb{iNw>*A*+&FmQSD<Z1}WGsmh^ZNTUHHaA28 zTK3VW1I*aw^UZ;Rzm8LyQ=W21@IJvoCef=1e#hAqCMji@XOl{};*$x!mVEdr8;?U} zg^sQo(v;xXqVOZ%b#(E+#G8r5qfU($09GE*8_SY4G|JF$sdI4gEmj0BO$2&ht+r=4 zzo~=quXVzH*>23gsDt~<rg4AWETvK3_j&eURp_qn)u%ZYmAAOysy~$LNb_9Lh)0}g za@;P7l}&fC7~b@0-v&-551oxIZFwQ5m)+-#Z`LY@gWl_~Sa&_gy)>Ar!+z?p&IX)< z9X@RMqn1(Hn9FQ<WHz((u4Qa3{q(7Z#q0d^S*1GlI&C%xdhyM(eb&gw=Pj4|WO*)_ zrSn@=4&LKzgr#S1zmF$5Ashh?yxF!lb$anb2OuQYQG44?*G8H58KU&!5ofrLE~hE1 z!!daIL{vzJ;&aR}%Y`<2L6+>8j_BLME#oEs&1gi6_p#r{!#M(_)mhVVu>=!dADYF* z&&^nsRvps`*{FDWBM#5rRK|zk(@pZ_sB^A3Ssz=r-Bifk$9O27L;o(_F$-tuHXOH{ zzew$qy0}hNG;|lPmTp^76HbNb*x<?AzUfT1A8M>tX8hRahN4^gci~GPHUJV%mP-5P zv{gDB#M!^n^f#TbjP@ai-Aa^Luuji5F%q9{TVnoAGyRDnKEx-IO;@QG9M@rrKf)3~ ze*sDG=k<l?2=->ail*anb$DMZgTkJ=44)%AbdhW@J2&$Yue4jSsP-m)$9uCQOo2|t zbZz{r=y=3lI>*WQ>u2X@H7X*?)kT`}I?rcYvRzV!qk3jm_>q+j#Vc5c^gu`-(t*9( z9iE#B=55+&sWhXj@N45UMVifprO!{X(N<1*?>~dJdTmCQev!2fGlk)&SVhIRI!lzn z#DnlCp5C9fy5!Z{kQ<)z8jv!xug<gA>>wSIcWq)mi4B9S9vDq*TzKu1MQn4tiGiz6 z2LAEr$Qdt=U51x-C9sjfZcG|I(t-Z>TyV)xemqyl$0ITdrrB_H3>`Wafvkfc-_zfa zm~2;0_wpKa|Kd+#Q>EFAX&t8Ev#Dzr+(&}8KqxffNh8kHb9vLLecCB}r6()2&v%V} zVdM8Ai^oNJxVEJ@s{xABS<_BN*6!K(4Jv`z!C!HE@H_lieP>5*X(TuuiNkk;2=m{= z8EfISPDTmkp{Mi9al8Pp*XY0^*`SznWr$0cbx14u?p+DAb45=#_-7B<l5bx;-2M1R zEmyw1m;2Dhc^|VI1|;|!+J(ox=HQ*rhX;Ew7&Hk6A0ZoO5an%YK4zG;IpAlwcaEPK z95wdY%MjGjWk5RU$_5I;{j_D#OE<zc7KCf@#g(!$=vlm_SCvcew-Pm2^g5u`Wj3QC zvRwdhK##vxY_aF-Fb0A?Zj-!$JNES0m-12!j4i*q&5rV)V972p8>_n^Wk6`JA<)6( zF#jA*Rkrbbig3c|MNy|dg!@(_h7&#Az<+?1PBvSyRJp^Zx(|$j>uYdt`piF4QNRq& z^dP=It<(RwO(O4FI&NQvM_$ii!#erqCKlecvPo(8t%ixk8^A#C+L2(28?UedkLa8- zR+|6LQWc&cMDKoShRZEw_YUFLRej&HdR4G;uK4M8yvIjj=lO@c1M=0s&FBt^0<R2* zB|kj>5RaYC9}v3Y7Px;XK@frkVAMe%R0}s9?mJR<cR%^*Pw)Qg|M(w`1pPr%{of~0 zgq5$j*uMN2Lzz};58$d0h(4XsgU@L&DClAGj8}pf9)kzxu%X;ze9U2Jx_2l6Jc$mr z-J@YDS49aH{+yp=x4Rp@VH=vI2U8hf#fQP}_LO<@ov;P2T;=Ro!QkE=A>1ie<GkaF zJWr#~Eqtyk;nPYv77EwOP|WJntvtMOI<EWi>jq1~qA%Es!+i0#G`H*}EsSBynXnXs zvumwC!*VJ@IFx6NS>*x4Ik!woql3TKC>B^GQ|SlqcsV7X;uk!^0&wB(xqB$BAqtPw zV>-rpa?F_uZZYQ>E)r#uq!^9C(8=g2eruxAj%7c(af%zIqn}97qhTMvAyDApp}})c zcs{8X@rA!jBvhIcKW9r0LD3BCAl&jVT+g?NOIN|u+2hD;Y1tAT+BNvg4_tT-AL;RW zv=@#Kta;&#@^x^E&~|1of)`xRNIEC_;*oMY8B{Pi;zozf9$N7x?flr_uhB)5y3xtt zo<S4!>moMV$l1(*mLdxF-cz@nX?Q_%joEl{>IYiE2+FEm*p%<+1R5vbB$~=aN6*D= zgQ?(IiYAlB|HNI5dijge(B-z(CgL$XdhTZMQ;^em;Dhw=X=zdTyy^a5o6Y@2jpskr zS^4K?&;B*%?6*Ce>0R>#ml|W38^zY>;^!BA4EO0Qz8`L2;L2QGy73&J=j7aIJ<i>c zp`B(oVjq6OIT{@Q4M^k&&JN;Tr-4Y?b9mNu6(E`hU#(1L@od-1whZi{U5s_eUN@Wg z@U~^rt!dLyvgyb3mQa3rh|=J`%n^Ftdr}<V=}b$X8`Excp>MWH)ATpqq8Crt6Ma9p z&@-D8sj)Vv;zT=i^xm`?*c^cHe-fg`T{y#^IOUDZ+qCF$@BiLEY3XvjSl!_O=g2*2 zU~aZ1nk*OQ_*lmI-b@yr^m`mm?>Y^N&4DU>I}+Cs8ZVR=T=EFpbSwP`&fDJ0<@j)% z>|%NUp-xD2tn*g=(7E(&+U*Qor`m=kmJ2@%Z~URlTg8yhY!ehXDyKU3^#Bz<u)7;| zO<tR6EN!`0{^#^|Hli}fk(^V%#o53}r}A;jSL@CPf~-lmSsQXJbe-h-Kn5wd>MGDa ze}>+@dmVjSe$S3q{(U1q-ZYMcoIkd`@so@JYxJ?#Pguy)Ue`8Agw_hw_u~+Lt}}en z<bcDc-#X06KxgnFhuNShTyy}hjxA?gYC29n<Y&Ml%=@bxmA4DyPN&F|ZE~R3punlq zJrpmUj@;VyV4;Kawbv=&DPKHrh2MF$ToMf^z%#hV>%igp<?wDsT$<u^P^F&z4W8NV zw|ydO`&<|h3XWxp<YfO6u+8L{0qw!a)O3o@Y;{KRF@SM)R@UhVCcQ44ot%zVj@i6R z4o?c_%;HNW#Y1)O=%}zNYILz#iafO8B_0x<G?L*_m;F0o>BgRm$7PYFS-EiU+(1z< zXU_`KX_-t1h)m;g>C`oJ;M05tvMH|WFk4pEs_&V7gNu`X9s9gO*J0ECfhYayxO<5g zA|F~h$+om<63h=A9nGbsD^UjQh#Dz3JP$3>UB2LUsg2)f663%cuU1xh;R}NsUMr&K zgVp(eco6JcV$W;SZ}}#b!ZOR@2xIwAeMpkHI9|t++oyw0Tdh00Z^@Us?rDBm*XkGh zq)iIgXpSB03_q{4Zt3!i+L7mVcAtOytN~0LQ02>IhCVhp_BcE5RkbHiUM8IHdj76X z{<G}g(IZp8c5XNOX;|)4?Fb8zvF(3$ifpT|AK?Juy)F~}>|D=RN7o9%lp(vBl){xP z4$Aa`th6KaqP745!CU9BjR^S@n6*iu$6l*|!;5ihv{&p_#FcL=5vqe$K={_WWyqw$ z=Q%4s)!*VH;k~w9=azsQv}41oKC1_;1o54n@57}Zn|X8;&uc5RP3ejwar%Gi20nD4 zbGECpm4E5kG&)(SNATb0&&Hl`j@Gp)l|^rrX=eCQcHahx7O;PamuBO=a>BN<bF(Q? zx&f_<--e;(TUn5U(oKi2$tYoKD<R9qR+hTU0-U-di~4iX2&Z!|{OdG(j&47H>M7c! zcYd8-akI}iSe~!r$rT~PjP@<F1XqDy-|wBrAsk0;X~2~hstTuWWU}&-s+7?xHO-g; zy!h_ByMO<m|Mu?x{_Fp+yhiGd!754VmK-kSr~2}q(JI7AaXXZAAQ!$=iyQ8Q)sJIw zQWby0Z^|8PhFb}6{lYkmE$+~-5tlC*5rN^9>vD*PS@AIPn*b{F%RPlHewyyuA<cC? z3Ukr-gABe-bERFT-~0EqjL4D<9qZT}qIx*|lopTtyX1b!{CYlV4x<0R_qPftjxzhS zh(?J5+IVP7c55KN`R3c5+d!rzi|-z_%r4w4pSzY)&H>L5dH0Ahu+&7!<1IAf>Kyju z$WTx2(Kr&ML!U}Ce#>74=fsy_&Iwi=b{x8C!^yJ7f|;QgYjnGF4?39)26;!XC6daC zy3)kMfXImlM`xrDTd=$CC=F^(1A5Cd7`JE;R(!DV)ZfY~PwH?rz~jMaP}YGBC#N(B zqTclFi!K&Gp0NEv9~t;tS%uSSd7+@gGlQNn!l=_o1}(l1GJg8G9u&q8I|Y+fP0#e7 z&r^3|ohk#@8!eWnaB*`wF3++&$`8%z;OPuVk6wn{=qF=562o#1<LKvns9(<0NCCC? zUnGVgMuZepJxYI;>sCv{cRNDEHKaDHT$*(N<Eciz&@;jf@yc8$Auo}h^OX;8vr5rI z_l6`S!dHW6^QrH<{_5@h-7o6k{+~Ly|JZEq&zo8MMQfK{*AUW^H1$h<xFQd}yGLUW z)4z(qJLPN%S@H_A@pMiJoJZF!b9hPT-7+0qOVf<juM-`OXBNA(HEdSWooAhn8oKD2 zBg=U$pXH)^_YvV{-9j?bk{G&+uS58(-IL#$rLI%?);ph{+iavx<cm7M&syE_`FZbe z*2&cY{?w@P8#`Hg53;<UjUI=JX3&yj9n@TdZQz8Tc(6|$1oKgG?_a;FW7`rl%h||V z>Xc~T+D)n7&B2H!oJ|hWDeLpcmZVk2r)17Knj_b&@x$}%QXK`2`iI`@rH!1F&t{D| zSxV^Y6BV14jVGs0<ygfMGir2Er(jNJ>8$eMkiYerj1u`Y5uN;02N24fuLsNMf@QYa z`?pS=CA$>Ae$tF;GNmD9+DzJc59?;%)1P&$f;C+X_a}9vef}u%9{iG%<<52jKXxNK z-Sg^Ex<J=93z1G6G}!XRWQ<}R0lRA7Kd=uvRXUWMVQw%dqnU+lJzhobXrepH(ZLTS z(UrzVY{|K}FfU;d>J&*NhoxT$@S#`v2HKFDQ>49M8?^s$V1MEEyn$3aWgmRz$smUr zOu9fu>a|aXs5`3{%2sN0CM18;d37V8vo~ZKaXXIVSzYgW4ru8{C&lkL9jzSY@YV68 z2p_CT?0IcT`S6*Im3BJ?hxaH55H6z;uhxb{huPzml`ihx-1H$$O=ib7d!NxNhX`y| zmA-ht_vGjJu?SwFK&sC4TZ0<mgHL$Ew6F7999iIv!=PR4sy>u19N7&sc{Y~PR+9mq zuYD*BKIu%VGgjXiNZ5=&fyYeoNtu!_FL_Vmh2x>lz&hKNyH5<IELKH~H^NG{LH&S) ze)a)h!5y*(Zh*`@ov`X&b!E%+rKe)jD$HfrxMyoC%YWr`E=^I|8%hE9V{_r2T!R5# zNR{izXL`Kw3yx$*zgC{O;R}fqH`bhrIhvM!fayzV%0550u&X_R$Mivb_x%qpoe6Fk zScen7Vh--%DCq`Vqi2KD3lkWLvWDB2HX*@3t<KwJS-b7MTzfh^uhVI8WV|TP=qU|7 zd6s`=FOF~9SL3^uDnD<-y~oeOt(8D_Hh$Fmxn|gVmm}F3Tx=lm`OD64TSe2J1?A-< zzOx!fso5;AtW?Tmzf}!hPq9}(<>3L{Ft9us)Ct7D%SL$hgg$z$MduoCw$jP9PO-Fm z#i131%GTx?Ncr5WD`!84B>J@H(mm&+);8TgeslNOx7d|kp8NNf0)5_QalJf~PGq}c z=JB!l5V!i%8@O?O`kJY2FgxYRZuK`heB#K`Z$hUXv&C#u6jqDY(Y8sKSNlS4Hcfv^ z8-qXU1%5a~ZgiTt<xhV|K4_&GR(?nU#(gWMB02sYUju(<zcNnpC^vws|GtjH1}`)K zqp`XrNhq$~UQ4Xiz3E@L(2phR{)<iyhj4~RrL3RP({!qItAC3Nw_AO@;#`GY&-~LK z$FFtLgY%{QU|eb8;r`%r1Ae=Fnb8Gw3SDAX&)0Dkcme!6tuz{wIrLG5G(SoSn|L{e z8MyxCw#*s&^FRIR-T(7H|7XjW|1j0b*pfyH&e37GK{_ZLTxJ)_{iW>gX9y1`6{W;r zC|x7EhZ_vx1XkP>!sE%0N)3WWw9xKxv|ENw0sd}ffN|(in4Bk0v{F?vcL&Grg4NUc z#iPNJ>B}JxILhsEkY4N>n48c*_?lKZB;Qe<iznCfC1~Ma4)^e1ajrj{(tKUs^?aqd z^g$Z9YL@8#S=tgV;b~;w#v-3TXCT7qq0ze+FWZ5yWo$abkDKW^Gk#|J8U^h0AWt4= zoC35FU69eA0a-DS2(Fnu^n<zCLwLv6BrJ3XTsCr-aOT*MVPTe+Ifno4&Of5qh?!)U z2!c1UyGBQp06N@GLlvA#T}KwrJ7<Ki$bfPbf?T?30|<jbc+9l2PR#8pL2wr49zn|_ zn+Mlo7k20sEM`2BSox_c)20qyX-{7DfU$EufNz(TEAc5Mc#8n_D%Ul`*+m1n+`+l{ zw$Axd6kj5Z<z~|gTgNHZbNDr&oWac=N>|+`-_g;t28;1E`nXw|8glOw8nIVC@|^3; zbX8ZOxcoPI=NttyQs<c9-Jus}qo`;6ACH0|GslSTy{PfA8?jx9HIM~I%V|X5Om^N~ z;V9}%87$yz=n#I0?;kJb1lJOCj=H6Uzpi8O&pE&U)aFzF)aFw^|81WVs>AzRo57TB zx)e^sGv3dB#>0y59+E>exr9I2^tX|1v<p*D;2FaEb+3M+6cBo2`Ps92k=~_x(a6JO z5zaoBVrS>sS@d=Kyuy|}1_!?t35~PaL}BO;t1T5LH@bmYITOB>_)v%T?VIln)a(BS zug?_tUTw2)b#0Svj&%5ONI16rg}=eCMvqr!^eDGNb-a8I$c(HG@OFD_ne_X<;re|u z$KQW%7F6doXFvxC$?2GPr)=hfryB5kOP<LtM`$xd(ZFdsLe9ZT?oaA8TiQxfHi{jg zIy!nOItb%wdh(?{MuW7KI2q~8;ku_eAan@xg0WfHkmE3*_ig-wn|H|G^_@tx>Wq%w zbr7oyh*3XETj}W{hn~*C9FL0ZYUw;Q6h#(rwrN`=E<J>*k<GC9%nyE^Wz9t&hcABV zylkeB?uZEHdGB23G<)9ji*_kJ<yU`dqty}m!WWpcSzep9Z8NvRA2%aIadg~$<Jgkx zeJUqjvP0?|gSECXT90D_S9TXa;(ymIGmh8V2Kul55{pd=;Uk^XjINHMWsR1@)3YsS z%-QB3Za3u8D^<JE|2dSQ96mh?q3Dh->el329C^|`PQT8cQ7$;piH~Ntdsrth*_u5y zIH6O&PJDSmO^wEX^v*FZ?^YMB18a~ZKI^E*&*#tDn5VYV>Sy(8ONG}pOYSec$CyK# z?Xg7iRW!?Iu=!bKLjJ63NCTo*hjQ;p>*yA5AYgSEjp#*Z0qza@=+u608KYUW=jEBq z(h9n15SmOTt4hL5DEe1);pt}a-3`v@D=%0~1n$o!N8@IMN~z8aW=5NA<>!Fw$0?`3 z>dmPydsU@yX$-Y|*4YUvIiPiQbQqoXMVNZvpd-poZO(Cn1J-n&JmSIeU)9ZIo}Lch za?pkSN*^gVdcv`1F#206k@CQOc~3-vCFn$ttLh8)LF@UXJutQ^BDpDt9=cIRV1;zj zyC~~#{&FEF{_s~S=}!7nF8j@{qIEVUF!WhH-fqjm*ZE>=o)`X29n=@qou_Cij*Z&D zL;2MiJ1l=wXZG9P&HeFDesuTZ+w4P~-Vc_+7G6VB=e1P`>5$bYHd%XI2e%Q$!dk&& z`Et5#7T2pQ&!4<V-?QDx>66}}-hj`(RW9*rW8Tw|H4a5rKltX2x!&-TsCv*6X*05W z9i@7BYXQ=%2(C?j`n(YJll@_g>%6LyKAU#W1_$Oz_H%<m6}(NKqQBtqW?$)KdLEvu z%fXGam79%il8(ISv_T*HQD`UM^(i~cIJP9cShk6UrZQxt{`J>`!3O-TF2}pQlN-+b zP&Rt63sk;*<%$OF72ZS_n5EfH^>6}rcJ2(OJr0lQTVcyjru~Lf_1-|k1`C2$HLr7C z8<c(7uIrT(YPGYc{?861mq;1)#~%qg*a!H^a4U>$RIg;A=OVw>SNF3iaO(WJ-dy*~ z7d+V&B3*yUNx3I~G0QtUu!KT>_b{xoL>IsxqM>`MKxIA!2>apC;GNN<;c$yMc__#Z z2zFu$L$9IG5dGD^{||Tn^}qkO6!%%9vN;>2;TRZY+3dquHZ>cA;D6yraF?OM#9<`? zp>$#9gzX)!ln`SoeGK1BE?9d`2}>sr>8(K>qYk~h1*tzujoaKDc?D8}9XDbpEXfvo zrCYWo6Mh6(M#gl{gA^X6AD*I4$7J;0a6hSv8>AnuMSnR4I~?a2L!KfOyKn}$2Nij~ zQsKi_`cC%__s*{m&zC~#P|l$%y-{7GN81%Q<nL>EIWYm41jvXp&A60o_*fdZU7Isj zW_^6`@6r9+vZxfnP*atU?w&btoE`k<Sm-<r$KY)iW%3A@(i{VX?~b0MS?5y)09M$= z4`mF_Ej5P(Y`OqPjmbK--JXs$^k>QjWBH{IstR4Q!PB0yUFRs2fxJD9$7HK9i?*@6 ze_%Mo|9|Cx2gxm?cH+7QR^G`eBOIlL#iQ<Z5^u;Ho+vNa3}zI6iQA`Wrp@tAg3hII zm6p72<+#D$qgQabJ=5XB*RgdieZ<AT<aDx6c4i&v!15IyO5qyR3f>Od5yXL!oq@og zIX#Sha5rm{u|2Z^@Wa+0bTVHzBP|ae9r$FBrib5gmQ^mDoplT=o9=A%v_}0IJ**YS z2g@fdGmJIE1z$7(230@Sc@;&TI$#yosly`B%tVfNVc+-f7kyLVpUmR64dc&Wy}kR_ zW?OoVw0Ip14TBS{gd2dHF>yP%3htN~&`_WedidjGqVA;EIzz`%wG?qe!|yx+gAd-B zeHo3Mm*>r>>eSo7<7@=S&Xgk_uPo&RTOHSMPiF@5l!N*;knvvQ$Qd`Y(jJ=ow&}As zIU5aD!kGdo18mE8zi(#o`?&Vub0g+CCJ!xn+w!(%gCAae({ib1>2x@Q?S0#Kb#%=@ zVGn28?z1*g`o8l`_uKFy!Mu*Qc2?C1u(THM&SpP_HA71$$<^S56HRKX&BI!c+z5Wo z^HUDiabS%0NA2|eOT!tT(J?L&kh(khA6>ncY|SnfJ~0HxOws6Xq~DT7xRLceM=ra_ z=FEXg7j)F<551o=OvV``OA5C^Bc7JWr$5N-y{Y)p(4jeH9IBMpvSs>dcX9mZOt$yc z-Rqne%loL+I(Zec`ZC&%KI5}b2;uv97Q*1u7j+-(M|CFgWlm4ev)kzaz^p!1qT8=q zwk<DR*CE~#Zf!v_rn3eq<_HZ2N3wRhlQW5c<LDZI33g#R_;`bFW~R+ldxq;a>Z<g8 z!Ys#av-J^asp6A#<K7HRKu?_`MY6`P;02dR%RW6jaxOhW!c$#4NAj#Z>84bxBWR6h z@zy)DQCAka!q16!rDc~!6Ch}nrdxcIu7691r|?(5<{ZXT`h&LZPjK&@ez44@w{n87 z6zp~U<q0bN+Uk?85Y=97bwV(<Sq}dBRjyf}Dsg4@nn|4ponkWd-RRl*JsBWT7s*xK zuM~P&y@wNAu8wyPvqxLyQ~f#oKDyff6f(ZZTRt6cvwE>(W)Ba+=PR6dLCGWsKOG@6 za#;OERb}%P9abTftw5OLz_>utvq5C6Q)3`#axL*}ZUvrv2hiFfFoFlp>ancp9UZxR zO~M{s(z@RX6E*H@*m!)-r70I2r|;z%FJM?0nD8zX5fbgf7n;5mbnK7>fcPt6cx}cu z-Y9E6MZxo*N~zqbuJVfKLun7aOHR@cJzI6<d|sGW$eyPMFYC0vsLrwB_7|WF@MA}P z8tujNr+43d^Kkbgv$-u<e(W<s0qL!bwei~*AQ`R0Y49}v{&Uxl%`6&7`TWoqbF(L( zTI0-1_*}U9`Lvn)TCB>dp093&H-{`l%rwqlLTfX`bby|yC-m@1>Gl-|`q?b<-bW7- z`=<VR&B6+W&)J5LrTtj_$y^3HW*Q9jYfAdbeaozavHdryGxs(6>z73Qhdwc6X>ZO# zSd(`+F{j{%-x;uXPZsG+PK3|obsN6vm3A_t$`6XF!`FDr4&wFbEG-UHN<N4(N*VmD zXLn=~{Uv0R42+#RV*ooFxz$#|Ef-#`%_u!R0SAtO>aG;=jZS&x$ntV}`93~aMYj#^ zTFms&pu}u1{V5|T(>t(waBuKo9Y}C*dU8u%mg1FJKKP!W@=w}Rci?r-tG*Pyu&=N4 z;WSzUu5cWSlIWQ37k=u<p$p94KbpM2nsa=e5pYq9A0ed)00IC#jru`y#uWpk@27%c z#sr9|w{lC7);_uW<3IkByTAQ!e|z_*|K`tTOf2(C1vjEG$5BxPBK-~NFBP~@?`2`N zvX=5j!$nJSo-j516$mo{hcOgWuIM|-z_=YDJeZUf0ZVa3itD(Q1q#EsweJ+6`x6y} z@>d1Fq?K)o5C9{j=eVx0D6jk?0&*F+DFLPRD;eJZ&Y{503HB5|jE`*4DCdFcviyM< z++Z!Ahz@0XzI5OVFM~nejuY4Qy5C&@3$R<K(l*+Zp?s}@iHDxe=vqSMUQYsk+nj1) zIU~V;l7sBsI9yPU5>H*n=Xf=xf_w(PcuvJ;38VOvcm9%raLLx724@XR0UFSwljFwl z9DO&s(7pF;<r$&<gTUAgpBx7KIkC%6AVStOPVp-zc<Y##)=<l`gLm;7Zrul<<Aw_& z)wNqV9>VRCQMWx01TcfSG~f&9FgiO2J|4hpazbziUEF&m9LSE%Qk7ouOzxb{;0)Wc z<Jk(4;DE23Q`fv#vgPIScA9lD3wxGA(UTmnKzlYT`jAm4TP4xovK*W%A{Nz9++<n$ zHC#Ol$9!q&&zl_DEl2IX=<w?ty^OQ7hN&=}QTj~_XK%V6A8xpgkI1ep`fQ2&Hf$K5 z0Ilp`9r}Y=8TxW?;gD^nsh&xePm>c*Iog#`BK2%bF1K9i?(Ua$#Qr6uepy5JPc7;F zMZ2Q@Ys;1`S^gZ)%zlmDpzq!4aNK}UxM(oV91mXz++<AGrl*xXb?drLFM0DqT+vs$ z)sG%D<Ves_;l%icuFj-UV6r9Zv*c9cZ;+7<uCA1pUg-2xEjRON5T%&%ga^7qkR7(M zT(u)!s*jEA=S1wAw?^1)GSUb>d@Rv@+jj{+-oI(r<>z(8d;+3n&vkI0^)9b>dWTfp zwS@RpWt)*Ry8S5~d)olcnc>RzgInI%lzx1F_o~lNocBkozu~mcJ+!%#K@{zyh88`0 z#o}<NGNPG2x1^1;e;knL%5H5L@2JH+yzP?Cpo6UE*kE2T>GdU}IT%L+Ctul~=6LCl zy|trfRZvHb6G(@_C4a{{ZSjBlR}eWpv?TCRykOh3?LJ#&SuPxOKIp-m@ySEyqmFWQ z!t%3i2G&wMI#c(tO|ar?dC>4g2PZm_5b*4WHnJl)t{fbC<lY7?bakCDaKp>}sawYq zof(Z|gSO<cd~e!Kdiq-Wb+FT~efA@nqIfgV;iTJVB|(Ku{GqpcKb{W3u!#4{8%E`! z2b-ZE9PL*1r&SAdak?$7a*EhsDCaWVKi28hd3tY|F*(qSpl&w0JfjOwFc$1_;I!FW zUfv*!sH6MoLwLdEU5co~cXmiFL2}|ani+u`o4d`+j><%F<yKb=5h+vK5>N^I1lPOU zl4No|b_Wcf5V9QEp<YBrS)>W}@Qp^#C1wZJN4*nz#pl59grELYYU!+IFfhi3*fIRj zV!-E?C;i|Pcojiid0I#K30<bQ9dsh}LgvU*J}~Il(T()sR<^+_O+Vc?u>CQoe1kw` z=l9HB2W*|O!0Xu9yzV}mIdM!k!oM=^_x>||P<R?KvTiuVhgHkMDspkLX?UXL(pj11 z^N-D!ppd1UeG4JFBMrGNZM?$UVwMgp8UhCg9#368gwBcg5YFJ_qii5w@|`E&V5+}^ zUFw@XSeZ&2u2<TVRmt+j@aYKn(2<JlJ&QiHAJ{tcI<-tcnd@enq<Bc@p0$KvU&5Hm zsE^4cys!L2sSctQ9bUP3SqJxdGq;~wUi`tiS;5*wv?4y+{-UMIPoMv&!OU-KPx^MY z&(O6u&*SIct>b&&6e{<eUH1;B&mN_m$M#fr#!R%3Me$onMpx3oZJ0E9(7Dct_gc#a z-NN8~dO$m8TW|cN50h4Uunx8G$04AO#0&7X1C-G&#o7UFlIy)rZta@EUCXlXz2agD zcnt40UG>_46%{(S?;AX|vd92z)uh3}>UlWgjdIrRj5fM)tc*P@&^f;#I_V7=>NLv- ze>?$Y8(2l-Y5#+*qpz-&zsjnV(-#cP-oq~+{U80w+(3azs%H%_KdSwGjgAh3qww+S z!>3;Pd756_H;})2&0a!+qQyI(ioNPOtZsk95Bdh#^b2EII*Jy=bl&dwT$$7Vf~Rw% z`wBbtZFRQt=F@`-OvN2=Y<~f_1D=lSdJEp=cRIR|T}H+%1FFVsB&7lv0*XXG`kRc= z?B?JvML%Jk(#f?K=etXl4w8ZWv%mbecmMJ4{!>faTG*eqKQFCsP(DeCu7)2F5FH~H z(2l_@oX}<jcEuF29U&!Lqpu-Yg&|zw;#1@uOQRG7K)_%Bx+l*wGLryC@M%DXPWdJr zK;q9j3Y=45%LjZ(0&wyOKAq;^rffY8uOr}8MB2iJ7M!}D3@AOh-O7Xi3g|lUaz*s$ z`kgeOoj4uw1OBA*Fh@Fkue>GQ{lVvy{WZ+tQkqM7z6<~agTs#`Mp_;n2iv#5tK1Dn zR5|Q4ssTSUyN!jFLFdPERvjUyv|IWy8u9J$7|f$N;aGX@h2i^Qf-ByUIa&3XtPk5t z8|*^oOf5r?;tuUyy9Y;@<Cu{J4W8V)>9Wq=DqN|_wz?qf8a$W|sWPiOb)tfvR?PXK zV=DXL4dg<4E`&-jwILJ6EBtF&h*bv<mc@_O;Kj$uCY)R?msEG~Za|h#35SPf3T7<3 zhGsCq>aToj97`93<y}<au8bL9U`KM(L1c6;IcR8xc9*l{_tY7hr*42+A-A$3H(+bb zIcfp5^B;W}FVlJTh{2~1oHI_O4lQR+-O#z=7#elexwYZLc?V8jc;Pi{(}UrO)*CJ9 zoFy+6w>Y}9jzx^YVokw#y8EQ3W7=<J1r%?k-v(z@SigI%wT?n*TbbNuQ*~~;`9CdJ z{@>rfz5DrZ>g3v}iF2+(8<Yuwb$Gy{LwE@3$~|)CVwBV~WbtD*3@dBYZoK8ht5=6U za+axU`GDL2Qa4+wRz2i!o9(h36Mq#rS(ImvAcwL8O!WqR-i<oC0*5te!R}t|R~DW| zzg0Loi1qRN?&143BZ?W7VW#Mr%`L+JW8cj+GiT82*yc1J{rxPh^iD0iz1dvO#L&ng z@B6h|V%1v_TTY%M#gVskvu^6$_jII=@n*h)Z6?A-Q1%SKhoi6BA2j1q9hAyl2cyUH zZRKb|Px7&u)sq|<sgIrm;>m$0{ZIdPa|<Ub8k&Hjl?;+ov#AeHqAs0(RY%2)t=V$? z)zLLbVgO+_B$(?M1Ydl<Q4Umknd}Xwu8s!F>;>6bzN$W;RXussjL0yA2;INQa<jyx z+-5}KOm`mYXiT%i5zVbe+&~{))Im1;v92$;0af-oHl^iIu^^k-FYeU;v>`nF(7bw= z9+Yjmju$$ZZ+#YuObgecpmVtVtapJ8ifox=IQX20Re!5m>PqEYpVEo5Ii2ye{OXXp zv`&5ZkS$v&=%;odTnnQscr$rdre%^x)7c$(MrU<m^e30;Ooe(D?;XGQ2HfH~DQ_U4 zN;dw7i+5$=gw8qP@z-*3-~Tj#GC!xB^kz*`WvE-sfq@y4BU9h~e$$fV*Ee0JH+%oJ zdZ%Mg7r;|4oI`C+>1TS<gFz3riJBLZOxf=8mX4mC!KlLVEF7NX$dA@wd6)gY&rAgf zZ^5Elu`1rglj`{#WRPc=Sb*B(mSB5D!qkq=in<N6y#|2kJIF&>!3mG;<q@su-hTE) zNhtsTKmbWZK~xE)F$k`%(M!8-@70nzK0-n#n(KIU&Dspk!IOLrALzmKbbL@K`GB8Z zz+<??aJ=cHd$Z-Go1d^k;8|QSjU?!dPe;Q$2K0Oz+`M2dHCju59rOmQvYcbwDCIIu zHf4a`4tZA>Zvo@M@H={W1M(%Uyng6%1$D)fNe|=T>@?jLR>;nHmkhPh2FvWKd#=LO zzjT5!fSS&%jl%F?`Tn%e)V#2nU>)4&U44)CbN1-7LBfpH$L##)2AY~8?C;yVCojI+ z`S|I#`GCIZ+&jDYm~21mJaw;wscp@=4>!6&9|9V$84&WV{K^=OsGEKz(}}g`@TT(y z68ND81f|_TB6^C)lli?-S84>ulW4TECR?|(@#AxK_VdT|7ae^!eV=36W_=CzS@F=P z-@M|qfhDUXYJWb|-oI<$>_ZLT``Z1gZgoa`l>Wd2N09<AIzdi1xh$S++=OcX5AHqB zPYT<Lt6Xv^E?|4lxcvCEHY6I^xTRMf9#+u4d{cPjQ{}<k#(_#vmm4tH-V~*04;_4i zXY@+FS3jb`0M{u88u2Z@N8WIOG+P7r%a2%lSs7Tr0aSFu%fG^jS9%BiJpGDjh!0no z@aZmG_jjHL!SlthFX;{}gH7}Q@$C1GufC&O`IE*eP~~&yKcsi1Cf%R#14%>4@Csu* z=LCcR<-%}Eh}o7Azc1XbY=8E%zqtE1Kl^tvwvnU+-`jZ`ai;tq<S8tEo^le3!-xpY z8AH{Dq|Q*mZFq+RJkXemMX>y814@J*ERT_<{G}hGN^+|VU`j8p5<5FQ1LlZ$d4717 zE~ToHY!)F#Z?rUcu41QvAqj%U0w)7;6Ywd6P{Ewx?H(VXJYEkUxxz^P0-+;M9Jt|f z!&xC<b*^L8bw?S<NuCc?T!-?mlQF+=7~J1`ri>>q=e5zdE&tHC_byjXr_vcv+qb`~ z0==oCoX?N6Y%ZSKvDB<$nWH<YRG}<e{<il)UR8;IQ~FbjYwW6cqo#7m)`(Q0=~A)| z&J<Y+_vp}%?utITAxyr>X)wwwpnLVB%l@r1O($;U1o-fc3M>h&Iq+a^^pkEA1Ub3M zpUHs6>z-!KTuXQAM0n7b;KFYiK`!y2Do-fG7aTA^N_yRNEnv7xEp4ZRfsXV;Z;;Wn z&O$ePZ-L>i&K*N}_#od53S7WlDMy#ZU9#VdbcL>7txlYKMdQVBcn&|Yl+4VMe6F(! zr%&mHV-y#!u1zilj|X@aFwWaPTceKL8i94Z=r*1f_O2OGjfD;c9-C`mVE2*q!mkc6 z`r%u)9r(14Ms?CMI`t49(}(ExtU-tA92tlS>ohm1JeGoD87Mjqb~-$}R3qk^h1qC0 zOOrFCJT2^R+Wq$*TXy>oy+iu<zkc2Q>&@=!h<&I`eA#F&rxl*cx$4&FywRYZM;ODM zHqn4^hN!x&P8cNOR5n9WLnJQr!x_I_b4<ECE6%b+4uqvzoB%p3&1P=P#3l{@<en5M zL-m>k4Q6%Qz_oX3@7oF2%8J-JnQ~;|Q(==2n_~(1hqq62UfMv3Ec<CpA6o9E18dov zK?^d*3!Od=yk(V7Th45$n3+a(UFRIH-|6i*ljZ7FaBz-OZnpn*Jo+ttNjccy6ms~# zeT$CM8C>0o)=^m5<f~pvZ@?-B#=lc<(Px?XQ#u+rPB426G<nfAxWjM7WxKQ+#jJj? zr4hD!-(kel+0^i}>f&RYae=p$0LlywSv%IY^=x&?>t?eoQ#Pnz#&n&S;M&m`J+J_8 z-(rn#kD7WnurX&g80tA3>6gzwz0nb?BcjF8DGNlhR6lZhy5a>rddSIBZ}v)o?8S}l zRkZ3~dF%Ftk6HZezRpNMb<!MS(eyOEQ(v#yQi`|l1yeq}EcqnTGj;b)*y$Wq=$zRz zYmMHm5~>g_!R%u=DU;01_<v4!l0vw}r{e7RZuSZ0ic`0@oH_jX3h&b8BTabASs6P2 z>U{alTpG0XnK17x>)@yp9IP`y6XYrs+wg{S+db;pg12>4*~!`9Xf}9Z5aKEi-M)bf z?%V8`WyrG$m1}^bs7|oYY;e_R>H+rjBdV0O*;~4i{(UkiQ{eC;^9}=mdq>%>-tim# zI-z?l42#2YIE9A|!*t}Ods?T(;MCh}7X5#cT<FJE48>nOk728~HmM^>@BFhvn=LN> zb#?P?@IrO4PRFl@lXdn2U(6IM)J#AB0bC8qUIpmZYN5SD&Of*vYkTQx>9y;0Sv{YR z(lh?CR~sNu2`ZHRAMax32B<0uZZXln%1fWzmLIM3-E5q5gErxTHwRrXPreNZ-~n9H zLzT<&e)WBa@^*XRD}$w2yl{~M<ySUq5v`{#g*Sd(uu85CtF%)(*!>)vXed;DpLoFZ z+=aY12-yQ2f5-;BNM0{X+lIT@m`W`@7<_a(*x&eNl}{YLdzsyS-e=*y`|fG)=03lB z+WpgBJ$X{6*SBe(^o5NNy+i(~Wyv2On#q0k2Lb*ze)Mjx<;p%eS&PITe5!MJzt>w@ z)*KCVEizYck3}Gs_z)p@;h68zb%Xfmt|6<6tghOu@3id)@2cz=M8EOM!{iw#g9Gf6 zS>jJ^Hu$kGy(H;q=XX~3>a6-?m%5iGrAr21t%~vff4pf2Y2Wqz*lPseH<10N)h=&- z^XBe-1KE6)58ipIjE@b{YHO_AVH?;?-@tv;lsX<z6n-E4s%E7%$K3z2YopZ-_5<Db ztz1&M*@(3{@rK{c=aZAd2mR<Z`&1}>Hz2n3J!>)fGaCRd&3p3gnd(w%I=RjKvU@Lj zmB@^?wiRyb=ruqLruJ|h<9GvCTQbm5gXmY?f&0j$SIQ1oY2c<bkv%T`Y&$fvr5ntf z?w<UEm%Jk&8?O!<pfNCU;BD}&^yELtcoFVs`~4&PqIgOGAqsyK!+#YIqAH=H&x{GS zI*!4Gv{d3tHsNRhOkFDufp*t4f}nx?(NBJS_ZNTtS9jn2<PVB#6h4RcnN1L?fFGK^ z{|LzlNj>CV1zdqQ#xTAGMhpy`eo8+AgY`LtJ2ZIb>i>j-IYI|aSP?y@nv(2Uo>jOa z#|t$Gv%6AA4NFC?T#X+CtdXQtc)HSyr$l(l4nmrK;-^Eo1)T%Temh*iP_{C9?h=1h z-jm7mEm^`nG9u)K%j+zS=P6mwbHbDoE@H3nl1y%%uj9IRz3$hTs7!iz9XNj8=}Gy7 zCqJ_?DynygbZ|HFpR;>!yZMZacNfeGwii_mqqBQUFX9QPbZ)dGJOVc2+bt;`T_w3R zuDH=5jeMSm|Dj>;*)D(hXSl!$!;@}K6WE?X4rcf0)W~9ZsEv32Z<Mh@KproYgD?Hg zl9c2O0q|FUl2Vn9F<PGfgMaDGQii<zRN-^R1J5S2@VS-L^~UFsRO;Z7A?)UGD6!`+ zWpqOq@kLg8>j<me55*HOd7)vB!;PQEV3d9UZ}q7%hhu@@P9F|h&9Wtz!sakX!}MCZ z5|St9#b6gF1J+lAY$du`%)<x9zXI_pxOCZj#_u}cYj}#|7&dU)X-S}2kK-g6b=+VA zKISbSX9jXO8@$Rs+u`5vUO6{?QDpe(M01llR601OFcz+YXOrF)#_6*|A)Iymlz_Jy zCytZO#`o<^^@|$3pMT#>?(0u?|EG6ze-)m;X}0C{%79}|sWOIPfPzN`&dtV?WkKvI zTa*S3zW1ISlOy@=z7%*H4U-F@WuJh=cRQLJectRGAr%4t(GU)q=w3I7o^b#8v<GsV z3@THDflj(uUb<$K_iS2HIpGP1>7&Bq!>N1Pq|+h!(C2(~)RfDy;OzUvOw63^e3J6` zM(CrQAljjhHjck~_fcC=0}p<F(eT<V@~TF>%K3QJCQ`qC^{Q_YzrFiDd|IenLrxd# z)OW3)xWSSxqb-V#bAa}O=$yC@IUvWr(qCNf2Tnlna<jd`X7~F`AEU4v9Yl3ry)^?F zrPCY4MeXodC$hY!Mwfz|!($qx@Ze2;rCHf@IEP8wr)-Xe_sHdge~IH|PJNDdSjQXA zRdh`@#r0cf_sRQYud~Lsoxz&Po9M_B!Ql<QSx9l}tM~SNN0^hiC4!~dY;yJP*akX@ z7Xc!7_^bofHIQa8=YZi!>F~rqSF@rYt4HIt{2lnW0Za&VZ)WysPV=z?Ck;GoGJ~&n z5Cwmq!70BKmKJVj;`C<&8^KmzUV<Hp>WCeSw;`SZIXH|Satjt6?N2+f0p=d&sK!@S zRp<O|0|i_59l+T#w6Igz3>_QJ8oiO`bvtdt%W~|eE!l*(Wz2}8J63hzlTFp$wA}G+ zdCp1;Gum|S=u{aY)qncp2ye2&*Lc4royDJI(G?wJqwuv+@r49Vr!koESf|?NW)JyW zI;Ui7m+$xCA)jUGF}E|jQQgE(Gx4sLGb&C;NHGSk**-dCCC5YhvlU%odiDx{NB9?R z09Ks?i|%jczB^^o2{VT9y9Hzm$l&mQo#YZ4m^*D>{D}9n?S-#B!k6Kr?$=&q2-f)- zpR^Hh!N+*i<<!~kD~B($L06+K#m~oyP_JUqp9qZZWLq5zQg8|zpAWCgG8^YQ-LC$y z6Y4d1lSQ}c*`@oVN%r#0--t)#%5pBfoaqW9jDKf2YnlKgxY<YcdAtmU+daY|IB19= zfcNCbPf1pV^R?QlVb98b6d?W>>J!uS4_q)zZ2Dfd<+?9kw%5bU22Q`puC(dYeL%J% zAeA9s1Fs*`t0xcNq(Z&x`Y7G+df!Hc-mBHo`dAx@mpZEJjD@0d>D$^|42eno?|NE; z!&B+W9Dj<7{<19Jm>O-xZ1b!8=%Zi9uHqwDa0H`z@?}uSyTNR0br&CQ3E`!d*}U&b zGJj~$?^zor-Zubr-yl|-51dX}b;c@)4~4NQ8J!iRT`|Z+|LDs;GpO#2=Vq$YD>Cdv zDSgHFr}8E9_v&rDL?au2R>YzM0G)Zd63*d<AKRp`xU=%7u=E=$Ta7lIm;Tso_DsFi z(w3tu9|kJn5`W;eiI?yxI{2(l=_+Tw8`%B)IS<cDA$@x4;NQS|9nN%!O$~H#$tZa6 z1_z9#pVd0F2vk;iP9G_l!A+x28Of%Ab9$$$13t=MjJkpsY}oG|=o~Uv;`4kVa)dI5 zhQJI|#2=Cr854Ujku$*-XXn*J1>=LXBK7h}GqwJczxeaJpZ$lwZnw6V8QEqRb7nt3 z?i~>ZGzO@0ke;%_4ZPd4D`60rW5#T$6&ZeGQuvid5)30TDu-F6+B25>(>N8;F$pde z-0?z$%Zzmapsax}-xQ-r<<GHFw)n~u2R3034h0yXf>!~-EWzz?`}OmJg)RS~LxVzL z7FOJfP$pTd5cdbK-2~*uf$oa%EWYbzg>Q|!@QY{e$G019!)eH&lQN&O7+&{N;AF;W zIE^6}S0j=F3ge+xwiyEN0DazOGc{KIbZ)Ote0W#LJA~e`c$@)*t+GiAnuqfm!S1U# zUa}u9?kf;I<f361o4eN_Y?(#*k#LSxmt=5ce!;l0r-Ye<@)@yG5zi_Cni0JC{6$7+ zFP`3`k3ND$x0NN`MtTFXdx1+UUFpL+&FEgR-#IP^Voxitve&X*Fe|i!%!lZWE|-fI zG9Cxf$ROsBDF+^$TRe4WXrU!isQ97T^X|hC4=#hOz712xDnn9id;#cYPzVYo(t#lk zVbQuR><fs!a{%y$%{CkGk^Dd|?FNdXcXp(~uQS_G2d4A}Ow6dh%Sf6D(V^MW8tE0& z?@$tM!P+cg%;0c&?;9@43HWhfa?T@V;rW~xJtwqE+dHW_qXp3uqli|ayp0*DW(9RE z!)Dons{!~>!};6r{b!p_)xrJ8Mtc9TCCk5TcK5fvtMfV>b<!2bvbj3k<NfFk&S_-E z<>7{o!}AiO!O@kDs(W*Edzj8HWiW#2`E34`lM<cJv%SxAYQ3MUu8=bx!^CLqKD9tT zV9UG)kNqNx6Q<$N5qeaIj*d}FxZQlI;-aH4@SK*na!TR3j#Q4ak$jzHGSKSZSAo1A z=3UguybguN+JMEAu4|a^=vI%wvI^u;t3W>V{-^hVf9q32IVA6r&6~=zlEm;Tr}<TF zi>0RQFhk+Wm!5tHOC!&2<)(x)n}T~0A${euYiQ<k7$H{v;$lFY82w1W$BlSnO!qi@ z+5uXrlZAKPu`8Irbmdza+NHze$2nZuQE4P$&$N9n>$J{MDBKb<t6?60h{m3`EP0)- zga4`H<quHM(u3m=p24h2YM^B^n`}@O0G~O4+7}(4&BCY4-sj$@It(<$LulK8NZDp^ zM@x3z^|F8L+QlPWoJ@o7UMIwiB%HSbqU*7lMaHj3y(=eNTi{UU3dNh9ID2Gsvo0$) zv<^?u6UAE%lpe4A2|IrzoQGR!9NyzC@j5$aaPi1;HnhAPM;%rrZY4=G8*dw&Ie3;f zUE<ergk7Z^ykun%ZlCxm=y9_*_*I65(>3(_y$SwSilleSK!;Zvb`ATo4CnDk8Fk_} z5Vkn=iY!ayk6seca(BgJdS4zJRh?PBlSZ3tW4~+m#Q=%=s_w&8`}(HYSZ&c$pNA<N zkIv_>48Ek#>R{n?2A}tOg!VjqPF)Cx;tPmJ=}7n}k6v3o4+bA^1GVsuZoEDRI^^}N zUUiYgFPOtyP-W|OI@n2I9I^lSBHeJPRU|s)eZqZry@Z2o5aVQ_HN#!oOxvzwWd)aA zQ-C6NE5RzLV7%)Q4ux$Hvw)KY;_#NgKO*pxr}H}8u?6d3Eqw_&7!`~LyxLLFW%IAP zbJe$tn85|`)|o=hv^yN!S6w>~l_ySk`cR(jSF!k>@g!USfG54z@VHLxH!W5E#>{S= z+=p~q-M50z(&fo79eAo!+W<+s3#tI&%l=sUsx3Kn2j5ReAAOfDiVI43j6d-SZS1c$ zhNi*EvDfkFQ1x&+Cy&NCo!QRJr2)&?|E`_o1`FF~TgEW^0u?g>Hb7#)CFHE;c*tM< z)aQks^zGhfmThP2Y+jh>v045%4Q4s5Dmt=MSmmq^gint;l<K&>6bwkhhaHlRZFDE^ zeAn&`OC5ir0SSBugB)9ZLhjP)o~q9ewMVtG)!hc7>OyU0MKA_5IMc;aeBvlo<{8{R ze8fxjWF748t-J)y>RRs!e=Ple(L!I&?$foA>}kj9t)j-@!{5m<7_&u76)abD1_%EQ zUIlJ)1@lC!Gslj2zF^8-*77DH@>5o)I?u`^{$zgY$I6CtX{X3Oi#Oa>#Fu|(MmMO? zpiG1`p$+yC$}MC7C@Lz#f9m291@g-};c48#!kZEr$+TI^L!H~d`q|I!{`}wl+YD<4 zC@C35WKh917J$NaC>0Px;4?oO!+O9Xd{WLv>B{>xVZt?<Yrqdh!%HUk`8QmFKOqGs z2xZOST;Wnnq%gOY9g@l#jfJ@<v}AR{SH{8di!zrPUrRbT7p|9pT*14J!A5Jp-OIT1 zRz~o?gabJ|PLi*{6fR$X6DU4Lbqev>vWgqN!=IuB|H5JT1qen91ON66AXIW4nu%!y zy4fo9+j4zIo)p6!@4d(5(;}9p*dWBabPPc#WOP!>mPI~1eVYT`!u4Q1X&K0ICxXE! zR;~`kFsV>Y6QgvTNM&>u?zEhD^r9<e(TO<PiHpLb8_v~`(FLvu4Pvx;M`i5l9(|mO zwY5E<)u$vrd1o*j=B&uuab&3sKd|ue7Ct~n=Qi7m=_|Cf#fhny9djBmrsp~K-TbbM zVND(<@3KV$p5v)PSDZB69QeT!M<j*on3E%V9We0Uv-D29EO|$Kx}`ffOB#=ihUSZk zlbcM=1~|d3kevbG9QlNf_w2}!Eie+f_a4j3L7Wb)BxRRBL%4>nYyMD1+zhTxuFhs1 zlkyoU)iKqG=!lJy{*6vlGJe5yY{o_T1)JT6Gd{T2p<v93<U_J2w|8i|)kScnw`5cU zv`#KM4B~{GI{P6VH?sPw2Jn|}?)pydhr7Rj^}bH-ySra@{dMo{ybkYuR~qm9)^Y^h zU%Z~&yE+a}Ph)oEK&K~()dk5=Y#?U5yj?XU8b+GUi8(7I8imdo**6dCnAmaoA*aML z&r8;)dC_<zcX|?|9_eUQH;=2+t>9qN8(4M+(~=(Nt7iAa)uFPh<m%0IF8S!JRQKVE zHl2q##dV_SluqqlKd27+R8TA}T~s6wQryy6rB&oQFusxasU>nbfA8w(s?#?AF_5BM zv;MDb7^3k{COQ+AdyURukg=yDiR2z^E6wN>=Rau|0*6GLVyIi_draryz_F?<!su~) zoQ^=e1Shxu#h1Ta*()<BIWAiiA8nkm@RUYg@<bq=G(tZ)rlk11RXV}3+q7?8Zs3iB zSN*8pu=1{1wIj>(f1~WtA7`>_%}T_7A_0{wENT}9=a4Kk4M0}^&a(O(D1!;<jS6Bw z$t<9bk3q|QN+{h|6*kKbPPD9}Y8hgMZGf%3!VMeo14b`CMJH!dXNoSeKXy=lYgTc1 z;vIR(6wh+7Cbi&^iPI1M{Vxs2FdA!PHY<@{Ot-|977lyo3^;NYCVeyv(ki#0o{K^+ z{PzGxX*rj4!m1A)BMc=)4lHcfVGK{tghS8ObsI>rRLW$3IcFS9@Az#=cZO&kjmnr^ zh8p50m|JZdPa*|Q;>vs3@Hx)pRvg+e#GncoWV&}Sb?jwBT<96}c+)Et?;Ailj(3sa zx|yCF_k9j38lJ{~dDfvP1H1z?xf|SHdyySD@4zZEN}|p3$k;Ug=(>Z!PaFQ-kI&IN zoFIJIc|<Qf+^vKNV)dd9MrElNrChli7%biBNe*UXQxj}i7~U8pg70Q)TTM8Bqx_+< zH1qWot-MZrP$j6wW}Lc`_hx>>V>qM#hCj(DXFLc~@>RaWJ>MjX_so96{`g_HGRZL} z!FxW*aE9B^8J;qOk9Qj=NXC4U?RJk_!n-byeDOj#+BSEJP|wkx`c5zC<$UXCVZ)^< zX#A~dn0;{FJ$_`14HP}~IiY3%SU{)0G{5coO?LQMD<d{2)w1OZX_bgUu-cgR+_~>_ zk|n5J&0Z(RFbdW90p*3McRgb^3Lt<^^1=tQF0DE&#Z@mS&pjWUyB&Y<2(R&B?O6GR z^*6Zd5LcenhG#=Kb;V#c-74*kC+el;T3cNze*;<f?_VvQe#-lH_kaJJz8laW_Un9A z?Hie@Z!7G29b&qwHOY3DhOJ}EeadP0g@+YDa2ySX%GpS>uy%#ksSM2O%mx$2EBaIg zj%VrvYfpk7TPdZ39um=#Pd@I(lgcyT>&mzCF0?kWk3r<Sps)70_-*`VK<*|F?LTHB zEAe+5L@;jGf`|L`noJ8ndKye}D<cV)^@Mj_{ZRSBQF_PPQnaL;lVSK>b?THUm9kx- zSAFbZgU0DPSY`Qg9JtCQ-!H*mZtS}uPXYzD+k_{%!sl=WoI)V*j7X{&C$TUvIT4dv zY0ZFa)GweIZP}50ma_iEpZxLN-~8R*-Tm~Ze_Ad_!pab9E;KN4>89Xef|jKSuiO3C z&niG7DcQk=gLD`~dEpZs(-w)AYJd)d4|vgNp3{jtUkWNchNz$sDIJbqc~7pwh*Vq& z{K9_ezH9=u$||Pd!ILvMvfOw$%nI1^6)yeC1Fwhc`0D;j|0Uhh{E$EyKRn$41d}p- zeSqTxhcRLFom&#S@Dyih;24c$6fK;%&lxw3TC3?g)~qdlBf`m*jLKD-Ga~faXiNE? zwp@`Be&5W*J~32UhSK|W@Ni5N%Ewz_g1gerDeG{8cQ{8ZywrGQ&M`0T;-ckhD35qG z;9$|)(vVTG(7a$3-t$%WgT2lXQfORxP6d-%W7yT-E_4J=N1kBLK+98@f7{$=wQ1@# zT=58vqb?*h0+&pLyI&y(!~Vy|eg}+PCx3~kV(}->^1)lx3hBc~^xnXIm2Mpx<v_mU z7_#z6s*;m8*zhbsr-T8ugXa9g8Z|U-2DFC6(sanIu??>G4lQ3aDhV9JWs?c$nSGEK z-5Q0=#-2CISqje6o60&%m(7M;c&Kx9^{^t8h9f(o;RNq2WjW=r7jx2L09xp-GTw*h z>|SsTCLFtWg9T>z>*(l2&=<2l?`o9lp56WG&F8y+{PnxL|MmTwyMJhu_vfAe+Dz`N zU~On5<&=Li?z+!JRj~3WhHfrdWA@GO9{sa7%UkyB+f_F?F5CDe{i6H$92aJnw*z(w zp5=t-?4F&k(S3LnHep@)e!+I0%_h|QIHVpaQyq7fE=KmBmBy!{D%Y{WCUmq+c_aAi z*p{w(yrqbBmUOQ8HyoyC9HO4lzMY5DhmS_Z(+ayNd(Us3k@y3JEr;Z&Pv12DF*OI| z*~>mj^s;aBzRGUAYj@v*VP_fW-XV>N-tRSLKQAwu$eNo#ek_$XNy%imW$9?di}+|~ z*^hNlvDStp^)BN>dHu*MeT3lZ;0>lYi8d44jX}Af<lxYGJW@Z{o-nN}Ot{{U)p=N_ zQF-x}j#{2<Rf@Xt27#r2R9!o;N*Hu?Xv$x@>2-3ao5Gc`ojB9my>B|@Pnr~lT+!OO znU1bDRPv7Wr#6_;L7VQyPqy?SxoqGvowAg=<kfqaM1#Q-JgE|%*;DoRycdes>;_(Q zfDE?4%VtBPvknzo0-kr{p5O!e=~r>sgr~F9j10p-D#7D8qrKb7X`S8Z0#D%Dr|{#D zdehL7Z=Dz&uCi2S01l|a0SPbqIQ*nIhwn>2%7OH`q*s<ICYQ~2R#)Eko*&(1Pj661 zXN(A*4!nAh9IA&jXq#H~%%15qn@wFk$qpJ2#v5|MkTcj4P8W`7k1o3wQ+R0&^hiFN z6wK)j{)MCE+uGrEx+=%_q~m(D6xZ*a6<1?k3=WQgC`+vAG<LlI*yvpcK6$sB9iKl{ z9(BM#0sF9b*y&U-$q9{PC!I8#*YCWyO17s%gu8Tf?**24H1gKLP7Y=QAIjh3a0PER zG+g8rszl|%Z}xNkAJsnkBZa{PokX~ft}>|~m=@K$f-67yok5PQc7+&>on9ndd?pWk z8;&sOR=zo*p2gjc*@%@0Uo-($TIn6~Ca1NdJ*<4RBQ(TLoe1Y>p|gWt*4g9m8GJks zt{-M70!$C8`l2iE41S*L^rQ5+!LDr+s_wn!a+aT;&T;BfoU?%|OLyzwzI<6{xATQ} zRh#AAfOq*mr582|^q#fP2HiJt;XApE{x&b$`%MP5tPoIF8bqtkOaj`}a2<URj)w8o z^$<`8FuvoBO4f0FyRMQKj(3xT07<@F&pr9ld-DJKm>(N|<<$`%<HPw;v`k-~+4Vnv zwD!i*{#U<wb@%qSuUfi%W_9V6Ng6uyp-!&BF7LThuMN^gj6uO(VxI4_fw;nEpAr@{ z9c2$Yx>u*Tj`oL^Q+xiha`8qJDh{sdlXfH~p(;75)B8HXCS<gP2e5vK+3vdZ>*T)9 z9=&EpnxW^9Syp`yR%IwVD&l+epeep@(=BogU$0$xO=kYlO*Zs#xZv##pEJ+~uVbSo zyLiL4vh9;Y$<gBZI!9Z$xH?=0GTa^0^k7b&;FRDx4=>;dx{S;6JO93HMm4srww%Tf z^$dyQbbdoD;KI~LVdwn@f~87bvAB3UFX{|&f_s>8d3f>s?l1rS&+h)_Z~pe~4}bLI z^0X;OnIP*uk?d?s2Kug33iK((VOFk#AP)J3+=9>ZA#8@^N{j&`_`>lR$7Mrb_|3R= zJEq(K*VM?cf{sB~=u#|9!G1RuRhkMCFQTFU8IFU?5WVq8OdyUx0<AvneNTyGT;5Uz zXSu`MfyWcxGN1SZsQciMLzlso9uJSOJ>3rFc8hn*)04*K_tQ}{VH!@?EB;cV390al z4zO;V2oW9E&KeoZ;$~7*yb?3gV5tZ`c)cYfA9ZjU!)PS$8uy2c1%ttX;;7CM2~XIg zQI~FpAO1aGv%Cjav`fj5!{JtuAbD#bj$u?WG{9lL^mLdbJCicqCD*G=_oqUEU-=1+ zF_C|c2+X7p*kIy_G6jLTxRaOB#M{ZDSm~wm>|El?(3lpy$1ku-dt{69&fy}{ZWkwy zjGOIs4Jh1ifKC}FiDc7Xb!++tUS%A4{ct}AxU^>LHSjC9v};IL-asucN6vB=!SZns znow$nv^v4)b2dVU`SuZd2p#H|VY;vG8*$_i=_qrK@iEXD-M!tg89PgW8DB}Jujnde z=2<{F!ZCZJp<hA5OH6)S^0T<o^bEFb+05wq?ekK>z8b~Uceou$L8dR|(LqD=>j?dI zc>nzS_jiBah7|wUXF+@~_g5_!dKG+~6OA>JCzItrx-p)^wRm(~2U){=_NRL)p&qUA zD2kkPOnlbKz>to`^qzhduR-FFJ~ZO)yNKS=&Bs17J8%hy(-A^(l$K_WZ}!?oB&at& zF(-R+fZ4GPv14*vNO%P<JlU}9W&>C}qiX}YE%D+c)OemHare!9H@j7*<9RzUTj9ac z@Vrs794AX>(YZ}=qKCem9X3y6`Y}D)Y)14M<@TPKHsx`j?fKMux|=DCKJQce)R5WQ zq#C+-98EnP-N~sCR?NEu!<~0;KxDIRJw4Lt&{-*dgS){>8G;kv;tO7EK&>kwC9xY2 zWhybUf)l2dt7B6Kq7E)y)JC##?zb_J0ivGICwi(U(YaMHg{xN|(j|JJeE4{8Ouaff z75|i<V(N%`504CwqgB3S@-cn&p7Cc((_kLo;Vz#aOj&LYrDg0^Ojy3E26CdFk(JIu zxY(4b-uHAxN0e=|@e_Kr+o)4F==9|P!N^~w?p;5M^SDnsfoCNT+fH_;qkk-e!H~2e z8M0LULUWE+hJrIAj}GbJ21mW%sLyu@=O8X0yky>ndBO5p&9X)R;1q54#DLv?MUt;` zbuqX)XRD`u7HhjM*8wzu#j)MsKxqxu!$J6mc=rka!e?z@WqA!_11puY*%f7$mOgnd z=?>|+1#sRBD}F~i(YxaGl42<trUcrz;oDUQg>$`Gl2We>?Qiw$Q%*QJdUyM50AnMq zHsq<Z9<YNiS}Q7)PTlO@M8)~$ZpA5!wsft@m#u%@IJ#WCI~{s>ov?KnOM>SkC4%G{ ze+)pB5UhnoA)6$CZQh`g_|DS_PBTMLeO7eUc69+Nc&=l%iJ0UA{#l6;IKL7d8(ZQI z_$hTi@aYx(y#Zc$nK=H_(FsbSL$AC_?Gc^~Vh6EYwCwqoX6<-7sL;*6!}TV3Xox>~ z;W;S}pXJL24B4{d99{s6-&^J8vGSpy7H+wCFwEed=c5zu<<$;Ud$(cXJ_T4h9i?a0 z=k4oI@nrSXMpK>7Tej>Q><`ZD?tQyh?e*5$nF8+~^*z={cGhoDsGef-(9!i?Zk=9j z`F!1DFJ=#-<7`sLJ|CVO{zL=(`r-W!M8)5+v5W9^{^J+^k=c0D^Oa|J69O0tJ8^hK z_W{FU+ISO5ZBOm#_KP?JVq~zkF?(oPGyLq$z+P-;dCh}&{(IN{qYiGbH+<5MQDvL4 zeOkl&G@iV#EuzQjv%w|$wGH%OTe!Nhl>=laE{7-6Ke;82>B8gLZglo1y#YyvEGqDd zoI|!q?N#^&M_Y!+QmK#j5%FpTe`@w3`e*_FjOTPZ?D(0jO5e^PTruptU%YeTgK}Jy zee@H54v#z+weZE!)eiP?$LiL}cLmLtBX@akC%#<y<s7d{LqD$c;7Q|I`Nsz??F#zc zf3>xN`5Kwif}R3Pdl(u5m_Ei<&>*Ee37!faBD+cfUJc6GzB(rM$Z`1bPk(y%xBvaW z-2LTW{$(GeezxUewPzXn7|Zah5ar)!Zke{c2UCQ8g*o(4vJOT<QKmn_6Am9jKSoaC zTbM+h&^v0s<O{vRPvToFc%?lZlLG|=I4WXB=9XI;>cGGj74FB7qn#ic#~O>3eRw9~ zglRCY_eKY|f1?)-2Za+KT$OUgS01{9FkA}V_3!`&=h)r&Qc6Y2{CkHy%coojb}$~Y zUC+m$9JtEVI7j6iq%|bLmBwuC#|9~kAPv>v4P;<BV!o-#5m$;Cc#h6POBv1TI-lgo z7)3h`UkcYT!yFKf!s#fLoACo%f>mgbbaBDE9-QM5LwMtLwdK$xFBmc9R9^f<a}}w$ zRkA|RhQ$uXgsd2Z!^;ArSI0vg0cX0I9>D1wFgj(PyTbc(kB`?V<#3ci^pc!(3o2j@ zUzxT{tE+P4zuqGzr&G}njA<c2;nDve=sM9e7I-*X3&Zcj?H+E&9Et7?WH{z%Fp}0r zu>&b1JiPy*W2R$k7VUk27<MzBp_NmT(S{0qhmE{C8wJvtpjifq_ufgdRQYtYaxO}O zN3|oH#kG9-V{i{?H(Ntq@Cb;`lbuondm4+3_*tr415$V{9#xpU?CPwOGdwDTEz$%o zuYWs2J|ygz=t}lFA-#%w_b)YU|I+g0|5fMqAKGczCxw1pE8?4Ub@A3=$6r=$ztIwW z$oqpxe^(uw?%~H|iME5MMEH0d8McH&-%`@jo{mz84o=P1EzIu6-pTcCL|31N*vu-v z#G~P*W7I6Fj{9ehWnQu?Jk(wdi`nOLRCYMf`yS=RM5}m|t3zq?E1lfOIXw^0YGf_h ztT6_Qqx7hb?Dus@>lx%Qy=`{jMLRIRm~MP%M%G3qO11mzyPi2R=+%**AR8znn2)vm z8|g3jX@g@gzIl1~Jh)G@8|tSH^qV>rTc$kY3&nIMDzqowmzr&fPVa{sT=5;!=}*ri z5WO|--fvYa=>3;Y72Z(FXjbpxI6kT4IoPu=<ypO|J{U~Ht2wr=8c{oZGUVlDqmp7t z=vOeL9~vBM{60&v@loAbJKNoKs4_Qj89p2$o0-sWo6G1p6H`HxcTaO%m^0xb=IjQ4 zT`qVS>=;hRQSzA^ome<n()^)%7vRaj=R~%{ZUq~pEL$?rp|e!48TNiLr?TRaUog1b z+JG|yI7RHUQ@q9MRo>w`x5@i#pmlIWw@&;0@!l#vt0W8_@d}@9P-QiM*JS8APNDyO zI>Wy%c_G-#cIfo!ETc6(At^o|AE$dVt1RhHyKu`_c_j<h>9pQ|e7%85gL;J)PHuI~ zg73St@Z|G64WDi|$TPg8mXuwBd*7*y@RgOcZ#I&B19My)PGqJYZ5e7Ek~!zV6yfB2 zOTC@gZ#;yr4)#0CE_HHCx6WE}+H7L^5t?ZoF3(;x$&j7U`Sm@}4bZ{?uR)K0csU#l zM3k3ob+k_D@K?Xg232nSU;9Ss6ch}baBYP|PdX6><kVHmVAZ*GU?5IU<F)-}uz2k& zCZuoV1`)EH?k2=Ql;PADI=3B=1(q4ka98!tKVhIAKCe@d0{fK=Vls?J>WINtcwI7C z`O=Ob^qPGDKL~JS*AMibqhY@jq8=7F*h?gxJj3U9e~Y+$0v(MKL>}AcTDnj?b*n2F z>TP#O)CL+fa!q5BQ+YxO9!Pr}J!H4`F4%k3C7sfi*j(yaXX03yk9}X)AY{7taJyQa zV6f|B>9?_6gN;wqok#7~ThFdKXBN0lt{L9y8FA`p*+9-f&0aU@xvp1XUUh(*wk8Vj zVnv5=e{8i_ozqRW^}Ip+QF`Pz_TBPGU9Pbcy{XXTGhUXLJhtRI+=p1miBqbX+{d4r zp{<Rwp(@L4L%H3hch612J#YDMZNB{`XrE5w`Yzf!Y8yYFv?AuAf_<x8$G>iIyO667 z*#(2Jh0y)gcW8tcdqsBd8}xaXoDF2Fuj9;(Cu9y$kN9=zG`?9ut9@g;_$ae|F~j~O z`$_~p0;iP0p-WL%zNfX>^MMQk)|iinr;z3OSf?Gn$7a&|2;~=$7rl#C15m??e9#k= z%cicrfLFQNFT&X>$Z|l-x%Myw&qNhGfhXT{KRpP9L12NKG%M;VgWjAv4VEOgj3@j4 zpLcW>QiA?=t;ACIPzGT;WR}P=L$K5{GU%i((H@44V5BHELcj=y0z?1kr+;$yAOF*T zzWbve|51rsybwH0Xu^MBZ4!ZD?=#FA{zrQ`8VZ#&CMot*W{m8qeDFR*QsQ+wg3F2Y zqwGX?sBk?8XTULrfbEB|g{`thkGSO=nZ;`rrKM2kc5shVUi!jLUX`burR_4k@}NR7 zMmh#8Du<1}kiA4;&e9g{)<4(9cQaf8M6bATg!6bIepx(=I~?lv;B<?_7tZkVpHhHZ zEM>lU$%s!uOGBpk05HXJzOV3Av@*}|mF7#u3`hCBd#&PI{_?cV#_k?+ax;pRo^=4H zrD{1o49{jGq`k=y2bg#K+JOlp@W@<Q@IDR6F;q((UZfa0!~awS%qbrb_?H|uqff^R z9R0%O6I~b);gJUJl%Zj$vX@3YnGc^X;}iPjUB<{$7>H!v?JyJ;(DD8Te?Tf*YB(=f z|4w$e!4aem8J7TsXw)zi6b|%&>=;bxHFA<po&l4_A-zQw)5H-jZFMx6Zh4`wGBPr< zfWtTeOFxC_IO3lU!q`@UhMUa9+7KwWcb!!(=lB~5nl+6ad3xs#DH_^i^rIx;TVhj# z!3e&sz|FK4uFN+z5Z=M$l);5fz@s(TV_YyRTgU9kFyI};F*3tVhs8k$EE{~C0e@3j zpK|co4GE=rw2pid>zPvqSDQUpW|ul-&+hO3<<-ZQD7WcUQ_O$=+qZZB`_-F$;^s|> zdu=`WE2qMOv4McfQ(sq?3Kw;BxOh53&K+=DXNLTu$3Yh8TwQ=)&pNs4$^=`SJS4tl z%N&)Wyr27`K_s6Svbm4}B}>&TWi-;OQ~Jbcd``rt>foaq<t;VqSq}j&Yyx`$M~ua$ z@wdm-w9@$Dl~HaT=O+(hep3QGyv;DfAxG%-hu@?dePj30%WZbF&Sy@;eKUN$q`zgR zW_iJU8mwpGlv&6*Yx!x+_kQl%%2K~L{x931_nS69dGWN}YoBo@+DxbR!#lb<=i5{$ z8ZdtEdWJ7uw-U(``8iD&Ey1MIv%&0jGRFh*S7+dKY+lk^W#~$%5)@}s9c_bSj+OMq z!<p{a6Alnm(yPkR(V0!@Ud^x@>gq3ESFTksvKic=>|wifc&beAB5!wW?|T*WPzU;< zX_i^3>X@2CE9_`X*L05Y&7ci?L0|kgNWq4Yt&Xx;VfY^#C%lyENibVax~0mGa|$i1 zHgo8tn_kJVTItYKcuKgoCSKW0PDS2Q_euf3V(XyNdwAqzr+3}~Hn`zkx^*JMSvzo} zeEK_ia7uN|d(g(%&3gl-wI|p$d&N1%m=5}xk*W@(+HA<_xZv$%8g64ic)$$|S<nI( zpJ$pMQ|I+_1F^5F?;op2&z|Mr)2|M?rrlGw_KBuw)3NipA)DxVJz)0l|7Gh=m@G-M z^E_u&Wo0ehGuR}U074jGh=l;n2tt%(TK@k}5h0S$0E3?Hs>-ZI@ALVM>K+*5=FJ-s z?tXSZetZcJs0e#<ix09HP8O!_lqNmi=!fn|V2>&!8&D?9=`y*&KY6ySRGn@RLixu6 zc5&9nmR*X+UU|m44Iym+7n$pn`!zuDP(8A;3hMjTkAq2O^LhB947y0x2B%+6u7svY zX#q;K3$oeG8Mse&-PcJnTP8SN=QQOkE{Olhx#DX>lh3E>?%M3?0$GrTOmwp6K(kYH zv4P<MpgfxqL&uDa-Ic*N63?JK-xYy$z}EZf;I4S()FYc??i;TU=^gHsWh?0jbaptJ z2mbg)?WW`Wp9l|)-J`lIZj?@Je9DPSZhR|T#tn|#=u<!W;HzDiWsW!eY-gX!fbW>4 zbg_EgJ-+3%5v3%%C_VL3`O-9T)sB77?)=sL%*G^y!H)ZUMn<qY_0V9{%if#&vRU01 z>C$U<zNn)Cd8#9LZ=kD=?h6B#*<X%5UDcM9W<`$GHDBsLv0HUR3{S4Ko2JIQxQTqw zHvJ|eGT&=#l8N|G+Wc|KCvt;M*FY@k(~Wwdts;-3mhgmPF-x`>h^-vV0E1npvRBX< zkOfB>g{)?I)~c+xwTT|hV>chO2?Klgo<DBs^7}SHG)QVN$18@eS=yHd-Cic^>fHNa zd`^zuD)ZU<!*f73iS!tRx<7{VmtqUEsA3y~@#N5t|MAjQWbNp50~oVRwv!%{r#O3q zA<4z_^c&1G2vmM6Ow6u}M=G!;h$isAPUQv~YL{vgv=}<c;(_G}p7ux^cG`#VB&T)k zljV!z47&0q*vqc>J3UnA;*($J9|D~XR+l10^LccrZil&RKEbc@j<0smwfYU#_H~M; zPsyFk=~^2jjlAek-I_lclpp`q-;}_C3Ro)y8*=8%VqlkyB<Bzig#46<i_yrRV!S3o zk;txW!cT=pyZ`8q|M>2gzxd_dH+6QNdWNT}GFVuTR^so7mheCd&l#Cw#FB1!I|YAa zcILAi-5aYCJ8mhXdjRlrd~@LAwtUx!k<Lp9$M$K2!8|meW1p^782L1yvhNta^7dJ9 zP`=5h#5w4G8Cq4p>&gaWMdAktE;L(OnaOgblvesh18%056;$Yybsy=zj#YB!HyYd< z{WoG~0G_AY{i90;SoZx>c^LAKWd;lu8AgNA(yP(pSiI9~jeJ=xeG9~b>QBwI7`%9u zzQ6tU+q?JO_s(5gxqF?7A&x7UeO&|mI;Zlk!k(MUTtj#40PcOdWP>NLkms_GLmgVy z+3Eh&RBbvk%M$S)Z2Bfwj%0H0+L#C1$DwjD-=DfrC35$suP>ZdX=;j@WdS4oPN#S) zufS^(3xT}bsEl&U2M0mVQH)2(I&MFkDX#E3*5#{s=YuvJvd&KXy`27*SXEx-M#n0A zMYjAT95#_T@X4#wNI^p^N1uG1jAG}zSmU~9H<mTWyMi25-+gK%0;>+OYYx(8KKC_d zc4O4p-K#tlB)h<RCn-Eefw^+1HYiZpjY4)~qod`syr%fDj<ev=3~y~qHfcv)jRCtb zx=jW;qBW(llzeN@1YpcY8sBG@h@*v*p246OZe7!JI1X7Sl~@{_oBh3Yl+fup#E&h* z`Yt+t9YJ<i{?EVhDxs&l|JF0P{~W<>ThXkxfHuHr2=@ez#^@<_%0BoVHo|#lKj?LR zlRfsF?>fhCG=4Kb(V%0a6JX>W1cQO#&d0|z-_&LK>*VSL7O-qXDuGM%8&D#TTE<$` zI*>Y8)laW}@UA{HdaQ)iZ)aN17nB_>^GmQMr)wq`lk<ZNDJ^JFEzjbE%qV}kEmbax z?C;Y$rHP<(0keG@(n<jN_-RB3B46^pj<4m--~RlYeqXgLtfiu4m^?gpNT09Jou1yl z`f~R>%?_JMw8P}5I%4%n=7-mz3-aNq-|!d+uwh3?=LalB6R4`U3v4@IP@8V}N<kuf zV#gI(Ir%_c$FF;2e)Pe=WJ?{}@jZj&WBRvpFa&P!8N=)(J9Mtiqtykm8LIj#GT4Ag z2tJO8vUYDY(F;WW0hBK)X`L5y4VD}WT9-w#^YYHF(wq9R*G_eNHl&RPfIUht|9y1L zMsSy0EUo7K3^#qLQ=L|m8v=3$JCe%uPp5*Vj_@pID5%7ryyBkbaVCF6Z6?0Xmgh>n zH#O{)Pgc{>0B?qFOW>Q0G+VeJt&a2trpkvsOLp;e@ZlpJhJV3P@-T2AaGN_8*p@~& ze0^pRJ;@O4SeowHr8*itn<Zfz=|N1hnXF_{&dJ7-<_`tD{II}N@K0uzOj~A1O3?WQ zFEsOau2dg*I~z@GbkEpUZtay4Y%$zNCoGA-uk_>{75&l`*=|6GS%pvi6r6fR3g2O{ zi*4vYoVs^{M|EoY3Fxc*!L=0fsZM%BNXgXX0~pZ|JavTdbU+A?%(Q^y7`clF1ln^> z9JBbcpWP$J(pG1J!G;2P+QrUwj%~OWx&rs)7q0FEEDGZhon)mR$~1jQ$M58nd}5vj zs4EBx%=k6H<=E;hy4+=njxN-NJuBU%`fz5$*u;T9e9MgcWXMLw411C%A{_m01~%M; zvzX(?Gk-3Iac{N0>!XW!!_tjreBxXhe=?YX-o#J8Y`Y7{(tY24wRCGUbbi9S38S*{ zU2(g79uYGs`_M$v>jsGI$p1R~cvU5es%)<A5g*%zQm=cZ(93>bypGa-^@gqB!Taax z?DO88`#c|AFSr3-v$xS4{ruUU<<HlWgSyM_vSYs1tLF0LwLRL6<I|3gV`m)2eMCQ3 z$IH3+hQ3N$Jxy<TI;*?V5Bb~<HaQsvcXkjyZSDLTLrZ3}j>@PLUpzw`tY@`9k39nO zjE@MGy8GODvfV0^`F1uXG0iZlzUr5Bu*`bCtS;+(J-aVvX(rc3R(l>gIE#7kf!_4b z2KX>`JG%%D7*<x{nLkrMwEZTO%(zp#U6<Jh8$h2&Jd8B4mHt-G#8U?G&*ML(6~B5X zdCD6d&+`SI8{Pmip3qbs<#X(g&J4+Q0}};a*ZbQIj7?rB2sdA)p)zP4<k2u9;%(Iu z!T#u@lSyAp5CXKG-{2TrsQ?>sNCTe_BTs2!MZS~!*<=R<+MnSL{>p@bJpR?Ow*jrv zAflXy7!**lMn{uDKBd9XQ7YPZtfITl^5C=i!;CFh%U4kI?eG2G-CzC9-`@S=Pk(Xu zD&gNf%XyaHQXikBIEOYzQ-w&>H%2c!M}UJ!A-7|=5i&$7>BKl%W!Y#%6%8LVP(pX~ zqsW1N=sYmGPg)(9z^UiPiEto;ywOAn^7W+<ih+MOO1WlL-P0jCm2nz6`I99~M@Pr$ zp=waU=?kv%!*Mf!o0buHlTjrG=*Vb5OGDc+{B!>_mZx&;eohIm3~eKA^20t}P8nou z*<wUq&c5Uh{A#c>Sit~Vm5(QQwiy{m)wz+HT9(<>GF6E^3!zhHWaf1vXm*8tog;nq zt_?n7_A#eZv%K<yJ)FUz#|Q}Q(L=u+!D&?3=EYA1(B7TRDs+bK@us2fbAsD=$A8$Q z#mLI})o^IvmYdoNq&X_V=skz7ROy!6l7BVj=-(N{9l!-;*Q(B(+7y1|g%MQCh)<@s z{M|oP9-6wndMN7-x6A3ja{cUT{B^-0L|V>mNmZ}tHNYRQ8lkn@c&glj^BcVf_Q6SD zOP}E20V~*K5)6%q9fd!n{}f+i+)}yH1gi#hioJ7w$*lWg@znvIv^-?X7d<5?aQ8e& zLbUU7AywrHP9jog*Q<TJqR01|DTj*<2-<Y6H14Mp180SzGfj;h2;et+WA}HpZlPxY zuqJ&npCZsBly8(bpQPd5vw``f27m8<mA(JJ&ER@R?mzTg?tkl5Lf_TldKZ)4Kf2{y zVc;W9paFarAyOmR96zvzdvr>I6U}%!G`m)>jMSoWqs}*;uHaSBw%`_Qb{XApnqgC) zEaQCJ==<C1)s_a9Z!;G8V-2a!6MR<NJgeiY155<7(;7g*?>2S{F2C&6151pLNEtO~ zA7{u;UU=1+Sep?b%aX_b{6d|pf+B-rd5o4++7Y;!xNxC=5-5-&o6p(MGeJ2Yk<7QW z6&>Y$6^t)tf!S9C|IAErOUECZiTW5D?;24rskS9Ox9hNX6Y8j(V6aY0cGXpNQHKq0 z`K$QQnGSGeqrdVxV-tSoGux8c{$`6}O3pG&-qT??FyVZGj$nlzy9f8tsn(=C?pK@- zIWwU*T}+;8SyG)11yb3{xEr}W14ljp06+jqL_t);ao&j;56Q{wj7p^wQr2LnlWfDR zoae;WL0q~{rKO32TLT~YVf>&X=V0bZ_+<I_YqNIgM(lxZosEs4t8cCOzAq4h>|<^D z$Mnb#%3~IKuiOY9IhYN#3|36Acj2Z>eq$Yym_aLBffJo$<t9h>S0CbOs~5Ts>F80H z^;ra%2BAEUE@*%7Ok6bV)pqif|CCMG;oD$czdGU$GNpDlYc}yyyu7Myddc>}hxZNa zbiU=dWj5<icK9#(%-S}(@@UC&_x8+ke3FL_tb6o>*GzIg(V)zE<U`jY9D?Q?qS-Wq zgxW@ra(%9&$wp~Oy;m1Tmong!dAcLHL{OOq37bvg<1C$)cXhmaPELC)NIRBX_F-fl zX18D=^K(=#d+==Tv*0X^Jo!wx`>^RZg5D0#|H*?+-j%F2fD}>Wn;`mkIs_-?5HrMb z^s3W*mcdOO7qC9IW*NU`-oa8&Rv(jLh=a#&;wKu^53O+pva7x&^Fv~hQ~yE~GGrv8 zPVoUo=kkKlJ+dUP#j$1PTUKb2LTs|=;{c1Sm2*pbdL4X3r0*;FI$2;IUjAmX5}(U( z%X{<+X5Sg*!J~4?Hr;46$6y>sFE%z%(7m%nS;s415>S0QGF0b@jAm@^_onZw^1mwI z+v-e{wdt9z)9nTV(rtDBzClB?x6d0i<@#+nm2uV%=QsJxY~wy({QPAzxwRbzPoMCX zP}Q#0^C+P!G8%vBa_ylT*<*dW`IW_u(J*;bcE8cdHki(3>#-!!-|82blLMJ|z7-?! zC4G8HTw7()#qf9isJ@heEzB>|UGm-riuo#oAc2|>dC~Q>o<IC-z_pIBM{7QAcYm)# ztFAWC`r?@x#zU8ZaysZy=KRT7(O{y_tJ^-Sn^qg87qJUM`DwK(aVAr3;gK01wE+UU zj39&5R#RA&HM_=Q{LD_-dV(Sgtap2QNFeD-$NvZ<>!@Cquj_4&m5leAv&ko48g4Vy z(ixY5HIobA>O3al>3u${JnWRO;?LO|S;M6`dC%vibMzlw9Upe+LDMZ?>C;m{=3|oo z>TrNoSCgHN^i#g;l;IE0`N@Cm09-b3;4kafe`3bNSRz8;Ih>pVT$F~{F=Odm8OMmP zVv?>bsUU@<u`V7P(YF-tS<8F=^p}5j_aFY#-{1Yg@BcxH5k$%<+x{0IMqmn<Z~(sv z$tldk*aZfns`NuMoUZrVzXP=bN+`TD_l@Yt%ZM|i;gx!f8UV_@9NG9(7Eb{J!G9IQ z;r^7@`SW>!V_@A*R(L8O9{Sk`mNI?Z-!EJehv1xlRSp!T?fRBa$sg0fC`)Op6#eog zJD~1xDgW0pKe^sL@S#`RHK@a*%rVHzcn*mN&NfR4@|K;bP~qC>Q*c%Z1PfKRPmOF> z>#H<XU==OcmU#F+D=4+B%YcEF&FCq6(P#-sJX2`7B_FU&t`I<C(M8^9md0t*rHg4s z%L3+ps&v7cv!`niA{HITz6x4y_rMJEN!z`{E4pWyf#i@@>0m;Dd<W|d-l1vmOJ@m} zW1fzqK{<miYrw(@${J`i^_Aa2v(knop0-pUP9|Hv{>`b#HD18wVc_h8o8{|TV0zj4 z1}oAvm&&1Rln~H~M=-(}kz4c!ZlkG_We~?dqN0Zmq5&y_47RRA)@e?$jezDHZ$U}t zaM=W<iI|NdvonpXQDF`KrBfXrL7>jYhfer2*YdT2adQgY3xDm#c*U(5J#7M-NQ@Y^ znNHURF6ke?681<#_|y}+3-RO*TA;d#f>WRHw&kMzeh7h0r#|*v&aVr={_}6%_4=SX zxGh`$Rd((@xxMIS9dK&ubpO}@lk_Fxwe>^JKBV4o?X0}feB^rWgEAWm{~7>9DN|iB zbJbt<MXqp+m#)ieY1He2Ps^2!$iIF2>h8^3n?Lb$a2#6TLItxUXLYqmxLD5UcK1uy zInj7)l)V;$4X=TQ6tn$-vjG7xx?zRJ-HUext1S!b6+l)`e$%M`tCmK-YtxRW+5{^= zY*O;-#hWdcG`qXqA!{(r)b4%T!T#ZgADTHk9l6)FApzVbD9?K?SI2;TKSbYVBr5kN zU-Gt5^lw|DN#~x&eJo)1{$=*`F=Nu9wPUwc1LUEe>nIwac#-WH1z)E+yr<)J$tkUs zU&zh>O^}tL6Zah8F-U6mjJDa7J^NhRmdMH!TsARXGtB~t&;qkM2<|oO51+xIBkF?_ z%CxX{NGIfwK(AI uP>30l|LL;T^{jNYEx?w(nK^LmhMDYdJ&_swdMgS2fBm@S~? zQys1I{$ti65IgOqARqT)jmLz`huLW5eLjA#DAJbq!6%EK4P|T#m=cg#kPXiCtL)^_ z@1a~LaZ$%)O0EX8MnLkQGxe3!4TK2(E_>IR``lVZ?H8Cjux1MQ89RDEJfIUk@;>xz zg-x{Sl&>@2OqV*PZQ4Mt`{7k5PF=iY;5xaWJDSW+X$KAN8RXW<-Rp-^@abfp@@EM? zeWt1K(D8!B_(3;3CIEESKV^{HT(A3ZSYpeTCVL$(bnO$ocwAf7qXFa<BobQticWU5 zv6=1)n(=blMXK&PoF~@FUe|udXXW5x6Lh0JAyb_J&t|`E_j5A(@Uc4IGl=S$W!h|( zzGef}7XyrVqleL120F&~Hr30PPXHc&!S@QpXVqPuW%Agkku9@=^LN2nTMQ3W!CU>y zws5_bPs$}9A9zR7#1!smn(oSvB#H27GddaGgFBtLo5?K`*yTG{By!;xfHHRtFM8s4 z?L8?($FXxYv-6PBBHV-L#CgPP^LG(=7|M0<4DGS)-N8$^d;`)2>d7u39K-qRw9Z!g zei?0bdFDH`9~&ep4Qo24I?6i5dkaSI%T>47=0=pz8@vt9@H;t<7nZuSi@sI`z3BVU zBPpMrw<%S&Nd~K1mZd}+&a<e*OGinSE%l`z^nxEFM;@JB`X#INDJnZQ%f7gRbh>fH zs+WC{>`^Lk*>9JZFpmGBUsh6wy$O}=C1GiCc6<hpgE^YPRy3QmB=|$^Sxc5b^sCO1 z&wT@l{IHdCKNJs~M;uPQSBKTvHw^~7%z(bPBsy?9q@H_KTXnt+AmnY9b|%B3uRI@< z2`|bg>rlUH;K6|47}|_$vP)?DL}#8SdG<~Jv%zG}|A-5!QeS=1WnRQI(U5s`tS`n6 zvE1+En$KV>+9<djo4mN$99Y{Jt_<@OlPlRCy6AQ?A6(}bec<s!eCdHJA3|K8TjzI= z7zKAa56@{gvh@J?p8WD2e;AM>qfz_gKaa{{_1p=kO1aDoDcnrat)Cj6%)f;w0xzQ_ zAeHE`0Fk0z7ij&@fA!0|Kl{tST*LqL*o&CcF!qdQ4>KahFC`Jwxt=rVN|Jn-@_XT? z0Ji9m_vDf;uX0BaH;7d(x%x&gp63Vy0`5i*2I;^*Fy*cEU`4ZXr{;_Xc~&-q(2>E7 zkQpT!9aVbg=teBMGGGKMxAMyY&@OkM(#a8@%cK15eAmvEzuk+hiXR@_x{Mu;3(qAp z5TU~V($2*|Eg-pI_Is6IV8a=8&sQbga=74dUT7hfjpB9A!9C>=wruN`-!njOTf!`u z{g;3K=PFD~EPL<T5AVHew*afr!d2>Q=b_+4gQtZdb0nhSjLvs)<A6NJyG9&8(J1fL zuo2M$lw07Xq%u>%O*VL3KogzrC-~Uu+jWABPB1$!-?0}qdhjxh$wOB6%8Sk|x59U1 zof*8G-k^{ZrvNm3A?z9q)+6wBZ*ngG=o!sN7s`#UtK1OeFv5+#{>i=5gL{{g!BWa| z8r^>JDZjG)J2E@zJ1=RY^7!yo7N2CoL3J+>>m<<uOZVPfn_UQ=JF8*Tc{nm`!$uMR zf=15;c@|cEq#w3mR#%X;k-PM1`Ls=_>|Sii@rTmUgI*)Y>Q-@UIBJlihs^M=;htm1 zQ+ep*MIO2Nn!`hlKHAkzBvtYz@70KM1v9%7w6!|<?$-sz-#3E$PX+z|&%b<MC-;5J zmp|Qo_t;Lt<#|djb^|`OKMIh6NWbB>3c$VD4jL=dozXIk<(W@VtmCS4g6`A!B>RBr zWLS=>(G#d1hktCn>XXdt%ryG`MhCZNiQZPXzO7TJqe)M6WF%gL;MpUi@U&#+Q$X;t z`^WZ6XUwHiBRuGzEe;4<7^SG)`9z;2%`jV(CfNG$;fK5X1_CT6M)wt5<BRUupOqa( zu`{C0h{NT%T+0v4Og+m0epaCH&~vzKV|vSv+}D|XsUw~}y=oTk?dyV!S2|h2&A+@& zXCInn`ym~@D@gI2q<O9nb#{@iqZPPq8lq-;y^vXcyBwcaW5jSYoqEh7*c4k;w`q+| z*dSX`Z@Vf#o?Pn;%rCGq_7Pnt098g^tKjbU+lAm3Oo64{zax)mcdYJ3dt?3G(<wb2 z+SvfS%2wu8a17|M>odq`rc;>yY0qVTvreqe?d4|$Q3b)t%X6EZrVFz>1+T%?@e_y? z)s6>2-K(De)M@sbqiY#yWY;M(b6W?iL5$6S;xS6lVYg>`jl|%RTi@(xot$!EmA!3g zG&?P$!G;-ZY5dL1QO?O;1v+viTL(Rz)dy&(1qP#gWW0_iXBaP**}bSEY?hhrE587_ zHpd{g!4P#(`EBSDwbwQMs0eg)I*CY3U#m;$B&BIbu6CPW1Aha#vx|bf>KfSlqOUS* zAF>&F4YUMgeG3D_I)5*FPK4CN75=J9wU^C;1{1wt?T9~hgdL-gt)S)VB#`-*ho^6} zK{9&|_o2r<Jmp!*)4+7U?8$7oXZK9_O>+I3iSkvC@cq8}=CK1C;6NYPC`k{upj_P` zV?M>}r(!rY>SDor^uVU<-LZ~9`A^5Y^mrc4Kass!NyqbNFpcM6;w{)WS2h2uK92un zbOL4pHzF|{dW}X%!1&ab=1Y>?cfow{7|djSOm6y8N_oi&Nl%*0WcU3{5EvkkTiIn; zq6{TL)G>RGq;tfJ{E`AF%T@%%nEUD|;jd(gd)6@oaL;d7?>3v;Af;-o&3%=<RgLEt z9y-4-vzTfFWa;3g4X2ulw24{;Hacw=Yp)RcQrlwr@=LLM9pUFX!*z1ETk(tbUg<SD z21>Q8>L<bN`DAj5pvA|@d$DPt*<KfiuW+jeX9BGA32K~mPn+d??CK_nWTDOfDyeWn z>t8oZI4jk<cIneSen`IOE%Uu)i^h{*8FfVqCgwLYzfN!+)W;vbzkAm^bU(iPez4Um z4wF5<=uto&<oEfkr|%nFO(*KE*~e#A&LksrPA}CHJP#M&oc*8r86Vjw8#l<rD|!^k zYuFek{qV(m94c6B3{3ICp84(K*gL)@9J|r6{L%`XK+mT>)m|E`SbLTJmA5j}?^$*p zo$<79R9NYGe0Sxd`}$t?TEYG<T9l1k^_GqHS<DkD>)hkL<K#L1+qLquiP3$|FCTj7 zL!<l0SEB90@7!_aKd?)m0G9OiU+v~em?ADBD-YNh9^kH%`SM`Er*sHruox^KR*Xg% z?K8ssA?5t;|MW+9zx;Rq?(S#5_qzoejcVlVHPQx6jswqmgBiTsOgJ^pI}2LIva5ry zr1=X<b)dxmb2vZ8C>*@*Mf9mSl?}k2e+uTXvpFyV0q@1L-!4{mC{%{{k#{m6Q4k^| z39KwjOC2*b$(}RXY%VZ25~uvi%}MopDGIFXxM;Z2CYRAt=>Uzkew{Pwb?)Hkb2U<e zD*5QgvAj1!l_wkT=C~OxgNwTizJD`3_pY+wTrhS!S)G}U^i{d>J|`0Ff{ABs3iDW? z>b+anazmrQZ@>9=&cWsw8b?8brLM2cLbZg_rXnv}|7vuR3!j4w!#Z*ib9g$uk|Db} zWYTf`-mWJjWRVYNknx(;JhtF>ImZ*d(v!-zhL(*f7hv~ENwCD>>JxA>X>fUlr>n~* zPGEfW%Vg+eHhj#@jsC(NyvxaS(#?3$IFxFzAYvjBA>DFx@1lur)j7p(h)1J_9IX=M zosDVnx`mJ9W;zGAzu8M^RoCS$XW#}Q9y{k)Ac>s*53V35*H@VWq2vjcy8JQtkK`q1 zdc^`7+}FXyi)-?GRa*U!&B&_EU<+7uxO7I6^p^S9NI~cJeYh;IF-tb;(t{0Ln41l( zE;}(uU}jFBHTW@s9xND@obydl=&wDSOag^H=1_)Y(N|~ZDSLTWL-o%E&Hva;<gW|h z{=a5&|LgaUcmLA;?~B8Kh~CY*1zdZ?0wIg#FdUf<di1Y;fuBCUc51tJ|LCEM4%dec zWnA}VpXIXr*lexW@Yt9}omlzhD^L0MOni07=2PGF`=+4QAQGUXs~OjqTW)67)6>mK zC|Pc^jv+fXNM`Vwi8|PUU=`?OXU85xx^s=gW?LHBW^(LT(C7`OIu$#w&U;tt0*Gkd zv)CCQ8=9ZI@xH*LOlFt{H+b|ek4>fo&Um_yzxx6TK0~Me@r_xh>@7OKsqFVnPQPjk z>{su5-BacFQkZl>POtEu{TfU$!154ov#-1v3w&zCU4YA$w)<=6Hrv^zHQ5kSBYSks zu3U(gee0z27sMdYJo4&)zHUdt)ftq6uhkm)y0>Rr;q1FXJvriqpFfh$4l-7qT|QFX zGm9VauB|LIi<>-4Gq_*}RUM)?{rU=04ThYhik)X4#jfS8R;1bmzLj&H1tyQ=%s-dO z%=z<{f?xKFMxADPBeUR9`Q+q68anz4gcr!*G(7W7w=}CdTraRpW~74GebdWnt8X$2 z%{nRN`%-`?uZ_O!%sU$F?oe4X`8sLZ7l+3q&_SOLbSKfojlNot(id~Y-^WKY?D;7^ zCwn~|F}lq@DvuIyc&*Jy#v3}oKXvic3;v9ccF%#%$edit+<lNHw(i~dnx6pItz?jY zS;wmiWo9N0R=0FI*g5~cM;odu<YY!2K5gp;RpRfoA&0*prVE?p^mtISuVoqxook!e znAY1YcG5wwoo5lVnLU*@A%hR^=`1Ge2BO}za>KK{+In?*`cJL~GWJ-LijX`aasz^N z#2x}RI9oLmcslUN)60)_9L!9SvIYac)72Sxnk<tC7^hwwSXb=Q&42;eFaOf{aI%}} z<XpQ)2Kcg~qyk9nR@Xih?Ya*<z_~{E%67VAiadEVa0byF>qy7L3e`59P8OS>y^isZ zCb)+2W{b%sIqKBReokg3LZ5UaWJ~YS<b%vx9_LQ6gA9*2tgd&hgX`VIuj-WXce#P; zsKKr?5NTD!z0PshHX2gErgM7*T^mtZrhMO^smAnqo#7X)7JAm^Q}#`8uv?-x=xavw zbl~tBkKtqUvWf#YSV*AqrpKcTyhUittb=qr$A^J6OZhvCL3T)o(MY_QzWt1U`xQ)U z@|L0Ua;%+MxnvumWXrZalCy8Q#0k%{86Diuy>`p<wO<<K=1<-?aBCJ?d*ito9YfrS zyU<}3g&oe1@2VbDA8Z7;CFSKcXoPmM73-nrTG6<Hy3+m5#sXNMba9B~{An)S$whrk z?>i44J|TB)AXIz6-$zY!keTG;&kP>MS~S&8mS?`9^6LyQTkwZ|Tt#dA@r~u3jj}f~ zyL~HicqeA(eP-jqEbH{hw~CRh3?f7Egx8C17j5_R(Z2HsgHf>xuWl!ciKA=xhBq9u z6?rS~xac{*^c>vU;D3Frqk9}rMwh@SinI~V;K&k8`W%u3=N#Y>ASZ$J>8JY9zw&st zu6Ib>{oB9&o4ddHU;h5?zGW^1|5k;{Q0&q=BMBQn3hViw!DEi~4DtD;oZ*AyMxV3g z@#`4v(N*oBZuxwc@45~qRdOz4?*Lh<e-~dBTl$zPkGz1Q`G^I-*SXALi_}8{%r3$- z9?Ca7H=Lz7#?MLkt@Df5!|#pn@=XV)=;14vbHZTlJ0v@oP5BGfMVH@8f1~Y|?@GVQ zjO>82jVm9R7~Lp#vhaNB8dX6ByO5fm)`6|jQt{wd`2>0k5*T**g1QFgh2XtsLAE<= zj`dxEl|W4+xr&@~+UKjBriRmD>7F17?Lj+2xY-g1sr;VD$f1pg#KTblRmr0h`MP0d zkOQ3xU6YeMW`hwPO=~nq`)zQB<II^_+BP{<cny5zV4u@NUo@$J9Na2zvI2|D&~Z74 zE)Or`%f-0r_omB!g>TczN=oP(>^0)u+x2MgzKfI{XD*U=`OaxYI$y(#SLImjaWWAU zlK5Wn@<lXCccY}qqqH+aQ~6RiG8l1QI1YsktKOikr>iV;en^HdgYz+)5KzO1yo9n2 zu-6KCXK0fY<I$Tu-{-I_W%gb-d@s9M0OWPO*%deO$WA)<4dm=Y5C;!bO0(^UzU(Pg z>=&!(mB(!Ihn&$5o&UNH?SE;bssGmdaV=B+b<gMgy0y4ExHiZ_r_oWeKLZa3e&7c8 zhBVl8b7+{#ae<zSUI9*5JLIeIY*js)j>>1I&VbOCEhkI-Nt@kde*;(0z2~FzuR6q@ zvsC|PzXAQy`Rb+JS0CE-*bbRn3Rqw{nU*J<dlnZpHyl(opBM3Q(np@s*%G_ycaIq) z@h--bPMTf!o0dJ#Y}P=tPovUypZ%QhjeOs|dw2KozUTC#<yip)=o`6B->;h?@GSge zvNuz!!)MvpQ_CbblAf<vU|hszWyqU${(RQn53hpzvM51YrW0fauTW+IOj8qey^~vX zJhnadi#p!3H;PG~$6RWRmyaE%gJ|%q(%LIJF+(*Npps32hEMXR55DA#k{8sJpZ>4o zr}<|S1s^(0^m(2QW5>~(>;y;&bHR^+i0M3d>*z*5T_am((cnk5Vn!@RHM{5$5Q8J~ zZx4j>So$XKn*xr0wmRUofVPeaf2#v+>0&=s|D+*c4bSW3`ydKT51T289x?=vZP438 z^_PC}RTUXseD3GXDBOH`vXCC6bdqFBCmrS4M}N}+ISPOTXJQL>?;}-Hv%FoK@eu#g z+lM-9AM1G8HC0e`d}?qS9MJ|X=$ao1S4dsc&xw7|lMD*<6ZmKh<e?$CEJ*BndkI9O z)kd48=-y_b;vJlQCnGq5HU56|sXCc33AA+zeI_hrDnD6_IJ(cuIxp)wk(-sQbi+G) z_MKiq!@W8qxZ8DQ0BJy$zs$s}y#u53GccIW;uqXKmT>dw&MlK>sV}O72AI}~5B}MF z>Sn=sOi$w}IAr|PO#b@@wEemtvgpxS$}YkS7T?H6Tsk24oDoP!DNlYsS<x4}-}BLp zDp}&q)=sD3*osYZ%-rkv(}j9yzzWX!&dIFH;E|;^!S8%d@>v^M8oaZ^XohpEZpv4| z%CJK=kgb(Z=YxIW47|n10mTm(YvW}c4e2o7!;j*7aSRH;BOgEp4OQoup1Qw*y$vW3 z<4GTlbhcyChb3?VdG?#!LS40s9`up(`D!x^w5hgi<yCxJ_3@_q+%V@lz<Y1*d_nij zKDI<^&p6hG^R0Hazt4~KoJl(`w*<FGQ0g7G0aa;Tf3Z5CwqpYy>E_h(V=o2>`9U4r z(KOR%(>F29p&dPJ;GgvpBmIz7{LvzQx0)t>UjsxZ<EhhhNyMk)M$TZ;-+{e-Rm!k7 zI@^KvpgA@*`ST^+H`G~eTL)Jsx92v>d^)T40pM@=+to{ZLExF4R!SV`S=?tjrpa9W z-|D4obt{cZ-$r1`PaC1WtbNbM#Q|5R4{c<iQ|SJQEe=0{2ypVmgYS*6EMfMzcEd_J zwmJWTC;mZ)vck132KP2VRv!5bh?22YZ{oBAm~2nnt_<3)V>X{XlN%Z$uz#Jnjy53Z zd#jYB?_NGUTZzkPi5GGu#}&KPK~UW2_$rG?2A!NFX`|5Z82%gV>w3le2mil5);_Lq zg+_1xR={t$31PzTUpkNO2$fQPg4(wNm|QSckNrcz;ZvR2-}#-N-~H`>{1113_Sb)1 z1+hg<LN3%`Y<4y^EAg?KI{5HxB#&|&uKk?UIW1_HRvu0#%_pwgoqo`<D|b(d9OpoF z^rjuO&QNACx6~URX*&Wt3AiSZz5@IU+k{^d>M3yLGSHK*Q9yc?CK<g9nfV5X`|{kd zxb^h_V@BGqbIJ_laJ%LJ`iY0&0}||2hCrX0kYj*g$aon81m06;S={jA$GM8+&LMjD zj-$-^!;w)suJh}9&-7``no01oY>fkuh1R3XgYIv?{bmpEkB1VK)gY>X0_=x3f~xN4 zP#)e0RNKtpvG-u+T;Jt9dzuf4`*Qr?#O<kA`0bPqMpGb<T<e^%$>i;qHEaY-S-Ppx zZbUV}-3kc3MSG{GZggKM<?&q^sYYqj4D3Uc=^c9d9Tv7&C7iqiypOWM-pH<kwMIu4 zM@NI~-Vt#bDmA_iPZ~=))sP+DAeRfRWxVA_6g^^Sx1-%V+$;h6Qoue(*>nq<C<hIA zD$8`G>}-qkl4l3`#8dS#K)X+taQg3=D;20c7*2hnpNM1!Iw5JG`_bQhupi3KiGB*E z4#Uw!Ao{$hVXy<Q&7Q<dIvz$dy_feXdc9X}9r5WvP0Kl>hz>dMv87-m#mU^v-0%}z zht8<_*BL=g4*@K&fZyF{tQ@m6d;FVz|0SMvaR1@EcXz)kko)Is{5N%S-xbhQ?BJ|0 z`UM@}kRz1GFR&J{ODCH?Zm<QU$m0m@V9?#J`<<Pqd-YpGs_X`XYA7^HXJ987*^Y*7 zzm?nOAOgj{9s$@)ZcMUeZG$CFW_-cY$@Og2^Ogj^c=OF(Y;UBO49Ih~NB=k7dj<)u z^UO$1_H1E}+>Bj~IbU#?6kOH$ioQ>+Ww$vITYBTw4Bda8g3X%qN5Zw|mGw#!?;d;| zq3?}^N5t#<Hu(t8yLZ3Ydq^v_*<2R5C29o>FPdq*f9jElZ${h(%ih2L{_c720^QEs z*~CkHlS_fas|>O6i}30^WtS14!y(K!$U!&k)$8Y8WGj}&U(1@cRi5Mh#OHN>o<+^x zD|G64vY!63&(9k5g2jww;zDyDupt=_<=wmE1EzDT%@cq$JQ(fi{ALTEL%actuK9KE zO5MnP^4)UwWVVfD(p4JUxxEf-G{Y9ul|7%Eubm9C0h>{YU(M+3l^4;6A03-Fg4+eJ zd{@E>@9NDheQic^I6*X?YRmbt06uF8qdKwYT`PNa7($crt8>{25fI?ojAT*0=&FBb zcVqrIk|!heXL7&?`zmcS1Yn_|`e5)zXM7u9)oJsr=vET7sw|VP4ykj=->*tY*1;o7 zp3w7mc-WljEuh<TzddvKE<1WO8(}~~rwwo6HDjwxH!GLkQR|wlLcs&kH9O_o(7HO` z`FKVDW`+7)!Q(6G&-L1*GJ?xqj$P6}9}>+uN-JC}9p3Wto2}@i;On&i!Mxp9*XCD} z!#Y&t7##I|ySeiv%7xF;^&{(8K}(q?+wj4~r;`L4$o50Bu{uN$|G9R?W<TVI^zGgn zu0fu@odu)3<bbb09eWAxkwy2(t`9wdgYiU`EXlqv*|@GlHmwF@H%c>GwD_bH@W|a- zp)vr}m#!3W;OE%H2C5lj`Qh5&ceu$--Gt9Uw(QA`)n}bkI0Ww<aFXpv0w|blc<B4L z*aA<t16(}tk=FqyzQ4B3as<%rPJ@w5wFPw6b!s{KD}A$O>UB=V;FM=btwOe|@|)`Y zo36i!q1XNDyqWR!h{J<NO!(BQ89i%PteSaQr`8~(-IwqCehKcE{LA)jNRQ(^qS(TS znV`^%*Yp!#G@#;-egxw+-SGi)2;Ey6{ot{5a@q<^);2?xwexH~E5Eg&<*7)SvyEEv za0pGNKXp`2`2%hjWq!v!lW}NU%qDK5E%c_t&-sr}4bXncFKpFJGTI<)yl*u@alm{@ zG@TEh5Ig02Q|I3RuG!pAiN-9iK{D;B$($FQZh_YssHttNednu=y;NqbM{}?|D#A4B zlYd*?Mtzyab2ul~i7Xo>R&wpvzpQX_I<}Op%r~U?bZPKHTeDXag-0DHZ-6(cAoxf| z`;>2X7BPIFN3{ksJn8{;)BT?3o(`m|C#B1i9@fe2!om^0v|EE=K+IR2ntzqQeB`m; zDA?gA`Zmxp(vE+XCNFx#VQe-K|J|eZ>Qrp0tGGY;U5Nlke}>iXK8HwY5FCQ8^MhFC z=RJS*C%^d9yMJ3J_w6@7TjOv{Dqt#UW&7(pO$Fx$7tB6EK#-fu>z)I?rK>or3;|i% z`7QUAvtN}g5c|5{8F+HQ>l&I>$^-w<rG(>Pl|qE*1;b|*G*)!B7wANnvU9ARPXQpL zh>Zje8uT~%M#914|L)`Wmd}~{_+8q$=o}3{=6CIeUsW53HFVu}ap}~h`xkzOwah8^ zjG$flqc0d2UgfTHWgT0ZS0~<~0$QH7+MdDdoT1OIo$?EU9-7%F@4Z00%57xup`hr# zhVkXo`+~0Xo=>k6dGn^_h|S{M*TK-Dotf4oUimqv=-s==22UdbZuzRL$YT>biH1yM zG8{v$%fOBg7yjclnte+{IX`?=U@n!rSi`p53a50H&Zjc5HwSv`X@Z*rJaAWNI5^eS z{%$#x=UnNmgprJ14drOL{Vs1=<yxkl9X+#KaNt_QP}*eBzct`cM(aYf$VT_opj-8D z*?q-_6RgcTt6NyT!QMc_4L|Y1s_{mXpfBnJovcc;TzT8_cQ5Tk2N~w%lG}Fr?N{KC z+REYRet@hF@R}mK;%ZQ~WckL|EE})kc%DPEgCXVGU_hq|Jz6-nVky)VA2Fk~e@1mR zT6UcTV^~W+ud-s#&C+H+-(}Lj&Jq8rXK?@FyC3fUt6AJSV(;pB{ZK%Yi=JHA1Me~2 zMZ3n8j~qh>{BS#ETl7BL?M6k{P_2W+cDnZOs+)fK5M=6n!6S%NM~u?5Pdr;TD$hjG z?|D8`y-Vt)cWXL216RT8-i*HvE~7o0h}8J@jH_kGWUx*_2sEzOvu_ZPnGYLQN097b zcWB4kp64k@hL3+R`l^xt6fDbSU)LT8Qa%b4>a;wMADuAE=>%4SQ-0EnyL!h)z)sy8 zAbVb~Q2_Abxs6Xss>k~IzK)$|#iCD8Y+2d;3-54$S|^TWyiAubU#9z~0=sniK3!T0 z|2nvj$)ZKBlk-#e&D7Zq+CZIpXa`Eqo3l3~-uFclPYsq?>Z$ISeT~%l|8?HFz{BKU zT5Lr@vPn$GFW#ir^)xhHpL6=*%hXpor$4ZCQrN@nqCA3AGpP$y%Cz^ZR=}&Z*tl65 z&s2U>FtZM5xCFgArUs(T?!HYQHl%tXI#OQ>@c2*xV4RQVX9Ymd+B9rISb0i{A9X72 zB$Ewd^=n4%*q9Xr$s<}GpS6Uq4cs;x#$Q)nXAe(nD|XgJhqB#0dCRxud)*N@ZE0bM zcQ0Be%ks~sB_}#!v(q743l}*F&`)Rf(7ZYyt5wr&R44Gn&<37@finEb=N@`>B1@Q! zPxj@jsau^_cLlQo)g6`FvP(Mb1~?UUwz^^dQa32j9i3-?+jOaPfw+#O7y^9;`xi5G zuFd0T&kRhmLQfy0In+P(b~|K~<LEdvs(%4br(y4YEDg3)ok6=bf1>w32Ef#<tu82y zt!$7p*=|-gSUP?-rGi7SdT_;Gc?II^_x?GUAma7dIvchrn%S;xA{XA-!e}kPRX@r@ z=Jb4C$&~*{MFQ6#B0R1^WnaM$2Vt;7bVlZc%Wu#Xe=^?`Y;+pEqmyekNE&?X>Chto zkq<eMsq4jZ!5j8;zL`8%Y-D+Y5utEymu$R+j{Zh(=UbUUSDi-;@^7@A->VH@eX0~T zk6-N<9y~bwFaVx|Z2D^dl$(D5yYllN!Qfk0=Mz~~x!GKLs8gE}o4vI=_-QNHI-BA{ zqnBUkJEs*NaBY%=@#o96v08i#tqn`AWP2|L%ytYkvxUjGJmeu=JGi(py0o7pWVX>v z=$I}a*|0PG_ZJRHbRK=l0-XMJb0wyO!!=p4Bjt`A!H<r`cKzZF+zp(8<uhDh9T`fG z;%?xu^1*UVj{JemGR4i>o+=PcjGm&K`Q*>Vxn76&;)B5!bzB>0$*%Uh<;U$m!C%eJ z8$8$Hb&U=-d%#5tmZRDC4ARz?RDYi3Z^&(b1e9{<elm&ogs^nB>3al)%4n4r%xIaP zCc_Z%zh<cuSNb$D0&W-mdRG3lJ*T}PA21Lg+a^&unT_;&!+1-->@?UVtWHGhY+)o{ z@;@>?`a%!*SSr1O>cFvwct}S0DD`Gv2je=)7(lo5<nXVLtn(OHZF~T8DiIO5${d5_ zaE@S0BGiu4F#r&gkRM?qYV#X8#BYA~_U<q0<o@xW{F_SD#pP@gstQj?n|%qH&lD9B z0vU;AVzlS}P%hskSVf3+o#Z(^m80xF1Rg!`%n;Ar8;XPLbnI?<ho<`-`1>l<_&QEd zN|_+t*^RE<a_=%KG{bn(y`vG0M#_&vID9j@1(D&}(w3AGC&B4E{7#i*AUAzvfTy!H zGd~Io4IT-Na|_s4`mYL(M8^y?*vH5YkGtQ$?jD}q=uow%h|w88KPiVkX{WMP;p0~Y zw7icTzT^l!+rwx*o3{<6@-W}L{iaQF-sB8k-@R`))rZfo3w|pbq>pV*#u2E{UM_#$ z?ba@K-Sa%&Y%AVSy5$hzXOr$Q=!@6$dX?y9lheb=Gkch<@*c^RE10}0u3?<5fQ7es z*tgS}U)KxnLMX&PCRrJ3=>l16WW&i}uotps?|z)2WmrqAWOus1Jh$KRcFLXGN9F+R zGe*HWWy$`O?^hjNT~WbHZ<(MDtkFC6vuB*UfAW<c%+;Y%Hz0sMNQbz5(V~uS@PM;O zCW1ov$a&YDGdFfa{&?0Qi_LRSV?SBc;N(<vWOOk5OO`bVe%Vy9(rSymk)XqTc3iFj zNWLG!qw{(E0a`*AFYFP0>XZhkA(YV^A<<c9=oW}`m{Vy5N56(z&=)R)@aP7V{=C-6 zqZYra0sGbap37}E_rH8^Hn&;a%9w#Pd!QiR*{xs*{OgOpbKXg?=VQ9DdP|n!VI#+m z(t|W|V-G9a`R<jm-{~O7zDBmX@w!IR&Y5N!r7aNeT76w(1V(%*o9F0W7uCnpAwqv- zB|pK2Jf3s3DOD|BzL>9zwq(TjZyu1WC@lf45klvv?Ic(z56tW*h&$9_jge!GPYpd; zsNVvhq?Vq^rr<m*mdRQ!8<@%BMe@CmJ~}GGp8ZVc3#5}tzdEhz?WfOPQCIL*Tce@g z^Ql$w`)9B7Bk_O#o}o36mb?lo?jOt3n)Cb4?WFxBSg#^{&veJ5C6PAM*?<YX5MQ+E zpd{vSCK-fH@A&*G@C9>b=+uMFs5fJ7Fv2S<Hfxao;4kLSgSTaU+3RLzlkqwwfhIX^ z0<q7p(KkEp2HCDNpL}&#-B*4~le;!YX2$kS%M7>EwR-@DhvtraPLTVi*@bN|6rODu z81I|Wg)96~G{3jOlX#(LmbO(QL9<gf0qLZ~HOWL@G=}p8O2;lXQ;-eNFc|{0dfDj# z+RfmopR>Q}`&0g7KJzALY1)y!t)XI8qHJZ3`vr<ur;v@#PJ0gBU_gwYz$n?R4Ty%A zot<r_(ly%)|76*(I%63xoR;RI`*kzJUT2jhQ@tXSl_1vPSDj|#*E81YBpBt6?)*!^ z?t<iOUvT>Y-N}0S%d=;Crzh&lHsQ&a(O*M(qmfPEPnzf4c9ciZY{hk8IzKe?CuWK` zmXFajc}8wm8w}EMu@Z~?)K?u*Gu2jK2++?m{CFat(pk`S9T8$YuK;>sph|r&Emk_R zo6-sgqFt0j3fbq{^p?DKy#L&z2gy~(9v?c~y^=YfMuOVU!{7X%JM5*pW8hQm*fQ*p zS+2Z6IY9dRX@2@)xAI#(<iLOb&hM_HO~#I8iC))N{RDIOm5~Q6edzT1YTMS<R`0pI z`Eqawt3vWaVKtIEy*G<!ucLpRGG)du*zQ%PI;1N@oa@Y&VxWPPFM3b?3@}<kP|4w9 z@o06u_OUd&Xc(~eSAFh0xp;Kpbr*@gd)g9+Z}zGVuuFRGgBd(*f0Jm7m9<-|@g=O? zuR_j_wI%E_n^^n5S`k4NB7+SGB&+jSM^r|WbA0&n^JI$$vQy4^Qa)To6B(3Eh863q zdzB;Cz7k19ea8dh`A)~43+>!0p>?2=Yn;YU|0@eNAGbbGdeIJS^;BgI&}?S5vJO6T z;t`i0@>dCT_VEhV+WOiX>0Q<?^e=X~4U;nJfDIGHBx}R8UFl{1j7og9-#VlDGjX=G zh^?-Yqq>IX{BV3@e;wTNoR~CZrMq`x5wOnp3<8FW(NzJD&yE1TC;o<~lP;^19s@}h z(K%nI%<_bDZFP@K800ALiABTPF?+>wIQi7=InaG=hZT}XM#=wH2UaFpD>A>Lp6rp4 z!IjzxpE91wm~7>z18L}{L3z&gZr=XgV{$>&5<_$Tv_BKn5V)r-ja^5l&@9NxxE=Ln zQx1XL-F^G>-?{s{zx%tpzxuO3Uq#sa5-b0)cNPBdrKQag1l~FwjH8-oW`}`qq-v;! zVFHDE!h@*u*xAVp`bPAj@d#tt1Q;1N^-U;>gyX0a!2QYk6*e5~sRFyd-|kJA<-dfA z&cO}Ho^b+8h3gtkz6{CpT@DQiSnR||I)0!~*^j{-1Cp0xCVxgOpT=yEgQ=2E**Akb zimy<>oWom@or859(i~T1U|_xiDh>R20UO)>1Ler9GiAXpiEnbL-Yy6YuK;>_P#LSN zT!{BqYQC`je4|-a_LhTL_PV97Ib5OdmZDTq-ZUC!yZ3i>GQ8N{GMeX>qmG_&f7503 z#3Ld$OB$VMQF%vZa={Ir@U~zpBIrWrLY`E&-_0737FebKsM~b0OsAp>BqpoqWv`qx zzLtLuvC5fTo;Q<VdA3HFoKLVC4LAIAAk#s(`aJ{(FFhRG$#^v4H=KDz_kHQW*Zt{= zh9Z4Bxur?Rlg@;Ufj#-zVoOGqJ4XrAeNKYSl8rR*!nK1~a<Vg6^mTLcoSbYBRi`z$ zf*~EHGy2Ka55MGP*{9Ca$Lcm(?{f@W4pf~GT+Z0=mL+&TS1@Qs`0C_7CPx95nz7CR z`3H-;v5fRSheOV9YtD7bvaD##pXGz-qsK5ia{Qvr7}!$B**aXM2g9uH59#nX(e{t; zp6>qf`(|-HlUpG8q4GLY^Gj#|q%y*;es-+B!Gj%o@adfStbUY)Lnf<?tQsD+s5PUN zW2^L;?2<1uCfht?X<4dH?&;*{NC|zRqqojWx1*-tEpwui_}}Pf_n#*SzEuOW-Llii zi&jp&{oQZxo`3th&5E{nf?YGs)>IF-xk$vHk>*H24_m=ou)o$TT$K+$8>q^o%VS66 z$IS>-ceCG5&Fnq<S)J+13gY;Ndyg(O!%KE%#v(pE$+_9rYhdexvNe!wh)>bMdHALQ zvi!z}AAVD(RKyU;i~*lyTZiIvzN7ius7gM`^F=E|ERT9<miJ+^y)E0zudp}EO5exZ zhiEVZVvyv%XM;CtpR#l!-@BI#)G0ytdADGjTeZY3^vPBos=happz0Wzw-hk4v#&GI zLof3~x}$aE7H}|_C{_12YpXC{(%lVi<Vz>>*xQmq0S|p=GX{>nX;sYpUcA3fexASE z#$0uDz29`t?KY|;&j{_`*TKZ(ajghQoE}}CoNbO`<Ebkk(s30aj?Q?WU+ao-s|!|t ztRs}J%<}CW$pvBFDQjsfme!ViwQE+}!S*Y!K3JXec^yGM1)TI+Ky3LmAHk1kI|W<n zJ|4ieS(Jd$65azYZ3H$}x@NEa;%&FHOZCID^Wbk)L2%TmD%t3^<d6-$POjh^WVLCJ zcL@vdwi(W7iCzO3BoNG}#}C<G@KfgodE&LC{B7ykjbQe>p7rMs1dBRfdsk(?Z5;?a z1b1yf1=+uWoV8*{K*5SH3?Zxo?yjP{v+i-zlWg)5E7<W>aA}pyi{7=i7$^b^B!jI= zqhqg83;&mV9lQn<3`SZu>5&p9y1LV#^iT`1gU_F=O)H=G4hv!pY@^BSvdNAGx8*eh zC=OsN0iUcwU)_tBDoNUmW;r^dk<C?`%cm2Pjo4W*S~9=n$Ct60215;~f}0N6>z<Ju zkn+ah@x?@T@+j-r;~?=m8+R|F=f(VnguUSnLEtFwbJ~9p*kbvX!8MpT>ImMKb>=!H zj2-MeeU)XfWChn~E7*gtU5l}f`LPNw#tF*_swMCTuqV@K1J5k^mgaVY&A&?amM2@5 z>^-ipE8}&356Q8W$+g$&2O%Y&@sV#+$2kE~NVrzo@BuF>prd7W_u-p-bvBUO%)bUW zKk-qACD?mrl~O2ZpwIA^HzDYtS;aRAhF>R8TgpZQG9l3mX-?<#UixAKMjiYln(Xrl zlT%_qX>inl*gLW<pV&m6Zms;<k?`XSI)fPHs$7^l@6PJ0)iGzOa+xY`)2WZ`vizcz zhOd(wTVS8(5r_P5`M<Q12oH~9y*jgY|Nq=qyP?x(P(yS2CcAiFo5oKq?k@lPVhbC` zF>3=#8@w^#%Z9^)Ry>=*-VXd2>JUrh#7ZIGBg=@`{q2L$xktUW`+UFZ+Idb|>8{yN zcH!+O4?RX?bFl~*U3ACm=zzkj!|K_6G<y#(DTbKf152Lq8%QLfpX~J^<*CTN>ff#_ zrk!7$nV%4ks6URM4j#y_F07u>XX$5^mwUmG24qO5{Xl@Cj?%SNVs`F7udh}5w~zZ( zY!r7Khj`A<l7f&0M70=LwXi=#0Y2q*W6K50!JzB^xBd9*yFdQZU)=rTmw$fu2jBee zoD0K9el@Boq()@QBK(PwDC_nFQ}Ce{zv$gor@^Yw==LudB-v5c1l@T;^E?)=;rCwK z38M6Jcasto=rjVpj)*O-dlC=G+lf3J)~PhdC7kj`S;s?o4}SEkqR}6W%zjq_B7tgS zrQJrev{BQ|s0$}5H?mX?)eZ@B&I62t4u+WA$T^=Dys<GE%#boT*0%HD%^=7l7|MVB zRvrw;;FVFObbvX>(r=iKd?WDi-*4r}Y$KCk%o8hj$>)?A^l)qJ*Xc-x+lh4zU%;cE z-#O0(<VbU_oV!<ytYfm^%Z!bscP;ba=yY7-Wer@;l(eU=go|}DHClS8VF&QAf_N85 zI3N9F|6{&A+npZDaD*g3fPSkuS4AF&v!9#2gHpOfQH2HmNt5v6r)!E&wrf~No4k0) zw#&r%AY~0%FlH6fK_lPk6kUfNSRAmf&W#UxapUBfe8y*R>8|tD+4O;L^{T$bV6Kr_ z*>LzPPs|^v-9L0iPjqYvDt?i(>|_eQ8^FmE28P$WII&yu(pcB06ru^Uv50{CdM~4; zQnWjy{j)tk7-lwfK)gHmd^zvZ*%U`grxnyGF{3M>qGt};(yVP9)V;<@2mf?JqpdPJ ztU9$5WVh;n-F+W#-*xZT1=|1AGUe}Tl)O6VH#J1>%2O1jM0^VH=sF#CpG+r|{%_!; zOKNrRlD9Lum{5`t!CWf|<de>EyMJU30IeO5$hYCsZnru%zGm_kP)9fO<sY`eP{D_# zXm(rnYKRR6RL=RUI-Z`(Epq8qKcyGQKW}rP=l$AH<f)FG`PI(_E;fmReIw%0wb`Y9 z$sWD<p91hU*6>IM36l-=YsssMt}(MQ%VU1rEY4jUU_E=;CRm+6G~nf(yBfzYZR%n4 zR^a+nr$8XFXGD|5$Jz?M<X(QkSiV7U{^I4E-VdBE-nXA}&r#}l=!{qr>Nu}-sKb|S zL{#$7;oP1o+lc8y0f$*NKJB6C?fdN0pok#dJDa`3aI;9=e_3aOPAE%2yTCFWAJ<tf zt)vC1d{Xx7x$(~}U)w<*$&~b-E&b@+EQ$bKCw~J(@t=v4eAv@_l|_esv)!@%q9D_N zheZWxspp;B(;&TS6WGJ+(&e=zah+bzAE$Cl#yuaU(}p%1{uywd4UH>0%`s#rI@4^) z<0IsM`7FE(^6EBiz;d%?iCOzG-rGhUY}b4KD!DFT>soNLnG_W;o&}5xT00MOs)^rd zqdOf}uO||yc~7TK`^%mo=WlhK4Mc9~V{%uW*rEZW<F}(yz}2;YRsfnvhjX)%-M5@s zTdjltvBXf`Tx~*BJp*cx-mIDgv$*PlnebP951Qp+H`xKd$3;97q#BU28Cvic^akAX zdE2mwJc1)K;HUXtyN?^}T_BpR@hR#WykX~d7ErF%<ygk|EuH<DeMj@>I<)<q4o|XX zJ%K;^ppz0kgDyf*AKABeQyW0F%l#wy_puazE70P}>tq1c{u|uMQ)CYyaKA-3l~ZpV zWV_{<O<aJpfrIiczMHO(ov2G2+>1ukP!0%eU~EMr*@_*+BA0IAIQ&EqU%~DwC6>{) z@TWQ!=-cY0_$q0zlwCU*0C?6xabA45RTgVIOX2gv8G`bij+g;=%0=^;piswMAKQb3 ztvS|-iN6G~HUK}f6DQ?a$DmV#0dto0Ub*v#4U3U2xbk-aCrWlWPY-ySpwP_WN)O11 zWp6%c`prL7=5=Xr%lD>xZJ6A3Hr)Bzkglud`@YO6KD^1#s2ka^RX*zee6Z2|eEA01 z8a(@wfB4k(r}Fi{Y4Tth9vk7c0-6YJ>mD$dyUgN^64fc>AGSKEoNTA6F?-ygX|##q zaE&c?w7Qsn6Grd@-IsW-bia77V0qb;^Mu!k9sg?}b#Y1{s;!fsK_Pnn9Bm>t1MW(q z)$gZt{;3_7`J1>r>2;j!x{P49xxr~=^Ql$h>hKv%+JJ0>MT?P>$AW);j895u^N;x? z19|Vurw%Owik{g~JUF&WE$ny`Mv?<tRsRi9+32$>q$=EE33>bWVSId~oE{UKoXI9Q z{bh&QeLOtW?tA;m%eQZ8n+@1DiUw%1gv06zwOw6D_ltCnJo^o;{SQ``qk-->$P*kp zW2<NC=4gtp>Al?Q*uvfjnV%a)&Z(_BkD-p`=P&U@@f~nVCi@LmkV~|R`Q`_4pHEZI zOy=x!D?0$Ue@&jMNQXH0sDKH~I{YT|lKWvGAq&Xz10I7KFSB<>_1UITxc~7F|M2eb z|F{2i_eX#7Z$_L(`1{^L#W3D}s}rMw2WJQeJbW0tIUTpU!mK=qN149~pi5MCF<O44 zQT~Xy<v&cL9~5`N=szQOtMVY9e@+|+*Q6kQbTR%YPAPoN)d@c3b5es#YA|rb<*#hg zIQdod5L(hPCoTm60Xwu&+)*~Nx_RR(c%vOx<r&ROK1Np&>0kK^=GXHZoNkOymk!3{ zdmUGP`00fq8fn=9e%E9&hl@X#901y#-tcFx<9+4geX}DuMYFjYca5tJY3_@_Ue>S) zs_ee|>fud6O{2oulNl^|KGe(cYLs^`ni+^xm}c;Un;t^Eff)MP*FCf`K(eNj97HtI z!a9QVcjb2%@#BX>!uydw{^f&jI-2}$6>bbyD*9*d97~|qbPXi@IVm+0jo`x>?xZ>z zM}tb)eGXKboFhk>Zm(p&^6uz&_Or{*mxE(Dd5m_=u5P-(mwR9x497;-A*K564-ejg zf(LrO`I|1-Fq#fs=-Aov-*DzM4eXS#0Ng)$x>G|_<C$jz9Xihs8Vxq91-1<^?jt~b zg7?dUL4lVMxke?+Bf!vM9gNP=lLq^$gXED8y07D7_7Cks+1zms8^0!x002M$Nkl<Z zJWo>EBvn*zMon-Fh7Po#<GUK3-&F3`1=|1IhBJ0m{=WMkYE|E5{x-#ee2oX2f;%M7 zZX@=k5=3;+Z#*D$hM7EEcR3j^Tej5imZe4)r>`u*GduRV0mTOFgbn+!je@e5ja1rz zh)e~6aDl&|u)us90CwLhh%JGN*KJ%;eL}AWPKUw!Wxwd?RNo97?45cVxsBXccc})? zXbb*MqY>Q!+PyVm0=2F+!kFfhHV{CE*}#I5U~D!fpieCYf7guG>u-8=L5Ip(-~?bG z<-P#QNbLLcU^(R8+ZjwVnmXO2NS^`=4Yb)ajor83{ycMgd-wR=!`=5!|J1YHb&%2# z9lyxG82Ef>ZTzQC`JQNaj?dEG+E64qzi-vZyOyO3<j>BfZH5*uvFP*Oz3ZG05p3Ky zBStprIQue>tDW0SNVI$AX}$@5%QCSS4u>>&>54!%N>8BdC|RwBs0-+pE^og-ZZ_56 zM)%IlzCn&Uz+HP+vR4Dqfn|xW?SfjG<#BJq`AR3Tdj<`+dukn`L|iAhd~}dr1t#o| zW|`uiA<KTv*4cE1rL99(!RcLxqO$9ts}BuI(ASyu)p;mr>Qyt!(1Ss0fWe<HN|w&c zw!Hn9f`p_Ut`a_)9qImymeUEMPA37ZBo$o#Mtfr*hb`H_Y@_(q;cmxML1u?pyQczI zL8iRqPe<fy*4oB9I@E$+!4f>rS~a2GtOHy5wFA+jO<ZRk&ke>*zi7rshT(Nx1_xec zpE~aETk2;P*QQu-1U>(Qb2GU*o_yS~wRH^f7Mw?k>@Im5<ghwubXUjSXZMVQCmQmM zm2H!a0iGn$xd68SylaDof@wU{=~f=7Q_EjR8x4K6E2{hkA%f@iDjOh79y)wBpXrT% z*?#^$9UQqNukQ2RXIbLWHGgB!>NwAUc97F_ryh0g;P<E7^llcJeT~O>T0GJHZ8X*W zEB??q_|!m%$4s7*F=u6f34f<_GV07DOsE~IXq;4&g_!4RPZv<bNsr|@1O4%{TW4^c zUGh;X&WR`DONPFSnJVX4(4CykRB|Bv;c9m2d^Hfu-_^l?<1t;XJ?U2_Gf}!4d+dlK z?w-!!@wM?d`%9zQ(gql2)5osiagU{lsT$5$`^)US&d(qj->_%(`Ghi>wcm9YCK|K} zsc$xg7Asd~f8~vmXjhl&*xckTmOanwS125(^FjYE@RscPfb8*VS0>ZtU6%Q;YgcV{ zMOKSJ*)@}@pth3SfbDEHNYu0*g~KPdT+B^3K5U?}+Mubda(?H>lm$E)4SujCvI%~} z4E6H{5sMgFYj0(WuSQE}u{59Z7-awa>HXcu+BbuI>loJf1!lThf&Kw6KisR6Bfff= zT$0S{;dXfLu`?^==<KX4I%QWM2&VExK+gI}?40fDk3G}Dk0*TNOr23z4gS#~`|#|$ zxO5xs6$hw;h}}R%r$k0yi)VtVUa={k9i5Z^zJAyvnvyZyx$l3scHUXHD(wcj^*u7? z2b2Ru=7Wpg$aZxTY{~E`8xO+=k8(>y`z7yasJzuw`1$W0>*!tyh;gV?>)>G`pa6C{ zWsTrlo&~82ls*H`p}wl4@@K#N^Sl53|M)+9KKD=BG4p+ujUo^TZW2x4lrp&8CX8-P zj2wmURl#lPt@n-<c#hhRkmsZ;cxXjPa3+L)cXhkx!kzv4`SD!JkH^Vy6cM!OQemU0 zFGa#X;`-n3(Z-5*b@C^}8Q?8h>21UlzbZASIi*cC^mt^eJUwo5x?kno6F5#QC93rD zvmJ-V4ZLIAmpqm17~Qwi^Yiupbn*4-(2Z9Z_gh&8Oy}UpPyT}pF1{r?t(=cMGt{cD zBzCfqmRn<_LA31bzRhFyZpiqlP0h&)$O>Y!o%<Tsw{HqSV*2ObzPtOO&c{1TKf)pC z9L(Y5JS*RKOJ|~Ibd*oyB;Fa1Xpc7KI1hqjTQ^3qwtVs~=ola89+^%aer99QTKU`` zKNF}UZ_FNC%jjR(!&f@T?$`)&G{WaNvPN4s=rtJbjZcoOj9s2XnJ&~dfg92HKVc|) z(uTiVgIihkY4SK2Dt8=*x^Xlatn$<Go|Qi+k8KZY4N7Ui&+^d%?|9}+l2?ImzBD-8 zb@`9L#tRv5kRZ7!I-*60L8BiXB1@EwU~aaefRGF{9+n~sHo@C=_u(~AA`qkN64%){ zp-gbfry=n?FXd{Iz<ss^xEVtMCeFLhip}VK*UpOHH?8|G%@%!EL-t)e1oyXqMF*RF z$vJZOrMsiI^GgP<yIn4_bkeo^-Sz(*=j_UN$zvt2GL?fzd51c#kug(Y7RDwpX5rvi zrz$ye>Sm`-0Hf~cgdE+l_v;*<E@$6gnzcPk$@q-E8M9G+WPm-Y(J&i4d^%sFnC=<G z^jaQS+*oP!hXZYic$}xv(}))=Kh#0J_x#_pIs^@7eX34-9uWPO${B@!84Rx$(UC(C zs}fW_6GTMlWAEnH7Cp2Z^L@|z*Gp+|tj<Js*gSBZc)?q+bZ~lp7nobKpIv2#<wvXc zJqt|Kr}ckp+->q<;DyP27OZr>-Iar2=W?u{`j8E38}nmkm<5Lf=e>(;MIg9m@aUnW zPtj)iU$JFJIkHhTV*UY-!6Gxy^|BH&-M9Snm4efp&8r-mrN}zHI;&nCWk*$YPksT6 z&86Pd*?QBU;g%leFgMEuZsiPkZ00dsTLlx|b?~VBM(<OjJ7yfru8$&oCoA^I4!3J} zus*l10-jUS><)Y*{toACF|^4oi8E|AHQ&LO%JaqYl8$H)4}@lI<2o)blD{RZk8SHt z_aAivyJy*(j&*`xz^2psm~A~adc{AOY)arQ#f`A}n}Z|lk>hi#m1s<!YeVd?O2LQ3 zY$Dsp$9U)LnWc`tc>nydS7OD-Atf64)L347vw@pnm%dJRhPC|#@SohZUFa)u-}#XQ zaeRfe6J#TzyQA}pJNWGW&b=G`kvIAClgk%e0}Q+y$9`sk7+nR~*Wxer$I{I6I-sqx z2=DZoo$<+JR+ho~(rjEsiDlQ~kVAKNlf4LT1=D82zQ%!x#ULX3Jc^(^8g%#@9~_@_ zAQ%nX%Av`3F=u*F=G-g23;ssk)0sC&uy^&crCZ$^jmp5)g^!qMvTeEhmQ0ppRT25` zxj%KdyxRP)Z6!L&!xqS3|G--vzg_OOMAyfnF5cHRcF*H$bmBSU>2APA+W4CNqmmg{ zugD|nlUvvL668%d2i7{E5Td0dbStMmlMgK$gfMuO8v9D)^Xc9FzRvRx^C9Yxd|^KA zgaM_X@BzvB43>n$3a#w^>iFQd<iRuO$1oO)hL00kyx#ew(=XVb;nfKxj}1Br3_``8 z4M`h1BnX{UVw%qU_9b0na9(z2les+3_dD5^!I3?7cXaJeFxkWgUP|6T0T|Jx*ot<4 zxWMd&ID#+b`#e%%CCO7U=#y1L4TgKR+0tLHth3taQ_kS&hsWC>sSYn2Ldv0upXUql zvB!xzA>YvnXUHviHb`<Vk8aKY9e=HS`bn|V(M_)gQmqJ4|Je6gRdBQ0`CG7KsdD6` z18Y^q-Ve;z_~ti_$7<`~Kc45*KLduFG38gt1;z9h{pvRBIeJLO;=l6PV*%Yqlt1#1 z_p6R6IeG}`cJ6n2itc@)8%{EU6CWikt(4X6#4tI}CYK46N+Yo2(6-aB|EeD#okRuC zIo2S&6@)2(908*>8)uo4QH(iqjZcT`pa1;lcmMuB{@vYQ|NFnWd)=!mzW@GTGOjwn zJzw=u(8+Hk=D}a1A6(91RP+x@&P|;dTKAw2uiqn#-Kfk;4fpxyTEXl7?Yx4kTq}P| zUed`A&dDi5_inhBI+<MXB-1!-2m6Fu{^d|kVt?$7Lb9bUIi$)hUkUD0EZCgPV4eFa z-VN9xWfv95SV2-GFi<Sxh0oQMcIni;pC0aCX-A$1$~D4y-2>lO4PE|aJ4l`SqEnXr zc7EuPa>@u=GRxV7ie;(t>%Hre){9f?Tv%o^=i(VeBkIrJ7vR0Td)p2}-!=pE>et`Z zFekx`!pObR`KoQDj}t=y846gA#U9*f))8AnqJ<?GNBMS^4(EKw=aK*5oWzqCN0p<; zao6uEJ$&J<dILEAH6)t}C`}`if0*1fJeIJ*h3nalGF`88+c{ni?jZv5>orp(yJ;Q| zeU*@Z#^D;QIf)Xa-OkrQm5mHG>ZeS3IU}B>(+>3eR<3g{n3JFU`W?Q~R;~i-KYG_% z4OR`+Y=o?iO*49O+V0EcRFR#lHgIveFMFPGgIn=78Q*v`1JC&$EC)Y13lb-z&iN#- zpMlS-4#?K*D~%Y;@Vv0yoyh@LoM^H8{E3FwYl{T)zxm;*CCV)&3ib~*SntZNqa&a@ zazZdTC`dZMN%MpEzK-dlQ}%b+%5)NeClAS@q;lcEVC+sefdNAvOyLJIuXFguY*C#T zohl99ef%1+*WuZF536H>7abd~kvM@)jbkTvX*L75&Vzui`e13AS9`p8*)zGVv@nZh zGY-U|fK4KhZq(iJ-}%XaA4HP<u}Rt4y?{~Y$<iUZpG^GDR!)9_#>*ZY6UcpN@bhCq z#D~gwzoP(e@9YeoK-5xMGtlbr7t7^>WN<>qhM(B`yE7D>j?Z;So;ORqSDc~wvDXU) z<1u_@;_lnLs>co&Y~y3^l<dAGY>}PJ!f%yHw&$7f6LDr&;1<kSebU}my#qQJEyMFH zA{*NbXts_o&!HQT{Vam)5Y)i+J{bs9=kdscf|3b&>2w~?Q~vlw%PLd(0^8SMMfxrZ zvE<NhsX8UED`$XUeYyZ>Pdy6Yo_FVd^EP`)$DS4R$_2}o*^Z5>w)7o6$f&Leim8Z= z2%Pv>e)(fKXNLSlnZ0^yGoy5$kqZJp)?w1w*)zQDyYb|i<z%(aLxsJjW_4C)sQhMt zGM4#}BOi6EG`=CR?~CV71kg5C`c$RVHu>IXuiIfd-U1m9$tIpY3p%qqGn)oVCdKlD zF&THi)XL;1a?EV0%e6CtIRdb3+L_Ljy$9w9S}yOJ|CRsvv@(%f@-paYS5g7wV>08j z_Fmam3wY++fJsu!4B{ag_|{#QZ@=*g<~s7>C-9^5V6z_`c5+BBh?^{Ta-L7Vo^Oks z(YfXD$Rp?Q;fD^-;GVjf-Og_&^K_*XZ!pE94Y`oz+mh~R;<s$Tvn8blrtpw0srSk- zp!tCGsbkOY3F_%7D_R{E-)sN`zcN&wPq}804o}CAp!ModO(w}E%L-`4&{DdYU(Ys9 zAJv>~23NuPPAvNrpkrET2ee!+{CjtBJZZzoMXiKOeg87K;3ayxH(5)Ir=v3n4%9so z1vs}ETyik*#gx#Au5yn8Hi!nt*Y;vkC~x)%B6V#*$nWjDkZ=tVzHVj12S!%1d+_P3 zI?j?;zTkAy>Y_F{rVi$(vL)}z-urV)f8Ey#D}zE?4b+L1H5^GM-~J83$RI4^H=qH- zk?|yqh@-3S)31D!Q~1b#t1mExR&^VfV-lUD$xbA*1>&cZ&Xq3>zOOuYwmb^p8%*EZ z2VIM!C(Dy}a_;^*&x4hwqmzBb$i7Fvtg+8-(}S4tNOXRp`eJe>1moZDI<CotqUrt` z#M>$g1BBVv+W3IFH<)ZA9Qf1eea=_pACLlhl#Yj7*?3&6+(oW_{%yXS&#x^<?<KE{ z_OMgCXkzH8fkFEMklr?v>(r~i@cI~S{Kb9mJX*btc6dC#U;@CvzLiz>@pxJLEDm!_ zWa&wr5EJ}(gsW@c32+J0k4-B_4_BV0bWI-gz<=@;^31;%3((QD4CeCnbF-Vpf6)Ox z`I5uQ79#h`KfPxo5p?M4?5D>%x+jy$caZNIv3>lhh>&mOASb%nwXV&$tYSydCAi=J z!~fy#fBnDzue(3|qd%?@2wuSn7uUoAP%RBSOc`maisT?}27D1Xh7NA|nd1Z$pO{M? z9hg0aD$kDxVf^%v+BauJIH%&>U`}o*ILCq0|MS=Hf#rv@rF$-h;|fyON8n^MhX(^x zfkWadd>0%)g@b=pe1<b88}MBB;9fewBx4w?&W`~wfoY@Uqob1C8f@@anbGDx3WKq; z3r4zdFtV=(SlSHjCwf1y@P>yVrTbKccu;q5yblkWlEsos58n0d)+(1E0-cs8dkEer znPpuXNXzdcXiF3Ktge8nC5L7>JZ~td`~G>ms|KUc<v5SYlMHmp270`X-_aU99B?*i zrUKP5S>Dr#F`(m4QFvrT2I&6nL)yg;`*G=i_Y%lvBGzaIFF^^Qz))%<s%6zy9Z6;r zHGnj5WEcekm<~2IQ$vGvI4Y;gU3M~=l7D4Z(Zjb6-|{B?eh0VmE3^6<7>=T2PAY>k zddF7RDNu%jA(yQmdIaknIi&a;<noPP`ELh2=To_x;j5Fz6}%Hy&gVIF^;O%zN|ry` z&Z>p3g0aCg0dRD99(S{8{hm6|b?4~M?BmBTTkn3*c#v&=hVXD|@Xg+>o{9iF_<l=( zH3XJ3S|a<tWvjnwl=fYA#nCJCRL7^btb<IVb@jyMIJw>bk^kwMT$bYZ)Qv80$I1Iu zoN|&ASxg=y8MY(x7@RExla62IH*NG{N%BU6*=_nHOR<HH&7R5C39eNXlt>@2el1a2 zIhlK&YK4Ni7PO9)XX|P`lXo_g{7+nYqZtR|4R?W*Df*F*jkSZb$D^BV@>L^lj9wmr zv5z|0-}!cpJVBIz?BmDx&7fz`bjL^vG6bQI@8504zO@}~f^wE)&%aWRa{ONb$XV`= z&pPbgS0DEt#Ab6(5J}EtQ%9f%YpWUxs?eiT`>9T=jh(jRX7y@I{_5C17Yt;?Wn0JU z<Hm9f*7VJo9s|hsbfN@`1Y!jIjH*XhJYc7@mSnS2S^8i7?r$>D5!JyU4~LHC@z?CT zOk^CP(gi?!wl1J{N`5dPi0&X;&c5ezdlq-EXln)_P{U8KXZKtK)A>_D*2H}CkEN@V z4sFWEI%tB%?eqyZ4B;m)gy50K-KJA5F;*|t0e)N?A(&$8aOjZpcVyvXjFx{KkG1#f z3<pnV%gjQ`i`+W&F{|V2pwIqK4`-H&SgONxAMbpCI{o7e9a`C20lp4zGg6kkv(>%U z2Ca3r%r0sTW-n|wg2gEFKaHHMlNvAY)3tVCLZ~DESP;u9$b_Bq8_I%j8Sqof9N)ih z*>bbVn>~@<2M3-fH4{0Xsokm&->e-WgAE`CcY$VhrTwT_^e%b`$7vf@hAguyvDK<2 zhZ{#^q+=tl(qU%9Ck6bnutmBWVD?`A<m0(*X8ftaM?Pdrn&XvR4UUv;w(a@(ozn`v z&Q8-|`kJN^jC#*LwE2;622zsG+OK|hFPZV}+H`fQ+mpj)$SX4$b(22MZrgY*-{5q= zbGD^Z;*j6-#i#ys9YnN|`{@)!D?5w#P%d9=j#h&@Y|(%_fv-Ix*Z5!Cctd)qJo@y= z7QrqiRw|}eIv9Z+KWLF{zc(7?>BhcjTpSlKR;}P<I!o_#x``h__VTgm1MB+b=Y96b z(#mS9tLJ@fJVm#@uKBt>XC5A%-?Kcn0ldx)6zNb|!ffLx9p0CHAL{J#ZwBf1s=3O} z$9BCL=B}qqzwS-3aS^_)oa<N2OrGjC<!#VJI<{g`9k8hwPnNLDa`+r?;KiSTKE7N% z97^T+%09v;O#=O|p4L%QKh}W`zIbIY2Pu4&bsTN|s3+u2mciw6wiLhFTkQ)Khyz~L z#+bduj|~$)xAaS0fB&HY+w6)x%>P#=YO}R&b&eNwtLLkC2<Y4ZnL!mDV?Gy01_S2$ z@Q4qhjenCU{K0HcT@%M-xAVXGGOJy5bg#Vuw3VklBpW^=dZHVC{_yPZ91ZcB^&L3Q z!>3C5B`UnCH`|=DoNO%+mpYSGawjm5D{#K0bC5S#gRw8R@kMtDguYx~>FTNaaO8w< zK8!r#i+4dwWeyjU#I5|HQ@kIB3+>Xn@mt3_y4M}1u$iVY;OaU$r}Pja@}MFZgbPp( zAusF5{K=pG>D^!a)nBSTEe(9P*@llbW=}e}k!|_OE2HHzxr84Im>AradyFwR4t~!8 z$uTCoM?kX(^xQs&xU#7*ef;<L^-#`*qWd94H%_Kg%60h^J^#8U<Wu%4uhE`UhJ{g; z_XfS(DnmwnGfa7hZ^i>chV2HUVazvrl4|!<1`dJa0Q*N{IE06XK06qgvb$fI14nup z=nfC1(${5Bey?*SPsjL3aFvoiev$|HpO!zg4e5+<NW0Xe_`}k%k8<AZ<WxwTpgc62 z+upcUG|zD{S~CFxzGtmD6wrSv&r|82vlW$1U}n>mm%Wb2Obe6OVcBy@H#xIE6_EUg zf3l14_?Uj(MBem?zcEG1G998jbDYW|@6k&Ty4$$`q0@~7%Qsv{H{dPs?qtrYGN+z{ z?JozNI-sqZQ~3g5jrc`#Nw*9zW<Mdrf4&mZuQDCUx4h(g9UMKtI-5oj%^n=+>;O!k zj&Pq*IalP<*Qq?q;Joi_x8GglggGXcC@$l{?M`?&r#|E}N7!8;)L9J;SzWu1leko$ znucJJ^9g476wWwzH(c_po<#HHjrJS`tQwNh8~xj;DmX96tdH4R&*tJ^2SFgUm%A63 zc`xs~HkJ@@TE6$LM#hXFoR-Ehj_Izlmk(qM<RN)HmiIa)htjWlgs9~&gEZ&YuQHS2 z*W$t5aqyDs%I-3l5pS^PELnns0FG=E^r!&AGALmZ86i~;b!&lL1h0{k8Z51tSzVFM zc0x^Vj++L7El+v-YH$`nMAz)=miG!)*p72Z;V^J9Apsd6erf}tWI)1N)#%conN=Fh z=v&7_P$8hIZzA|I<FBq+cB}O0s6hvZojkRKbkE@gOJHLb@4n}o1m^aD(7D?zZ!Awn zby5NceZflUksVvDF6uWU+jFy3((RBOF9O8pjgs&APc1)YqEA3CIN7UVl&^F2VB;pU z?Bp8)LDEyt5%S&OHJ-BiC{5k;8~Dw#c<xpm(RLb;NP|a~;n*_Q@GWma=R<VB!%uFR zGdQ8t5qVqZ_f4CMdA2Vy(@O}*u3w!2Gx!D~#)_nyj=R$ZtoSlxZV75I^TXpOA+aNe z`=hB~QYS!ws)I0G^7SR_>9@Sk>u|Hh`LYUMx@6A+EwjT)B(8Xlk;-pr9$Gp#a|b@T ztm7Y@+Qr#(G=-wWOh*6LfjRltj?n;SK$*WqaM0%2=kcdwwxG}wc;)NRvHaDMU}Q(? zjn1rD*~e`1bI*OFahzmB-tlda%=7=-sk>CV^ZYzt_LNVtv5O_kYN)zz<pH>Ye(l!q z;f3td3#B}LYG9^&4l<bE=v-%c&zojzTcVzF=ZDH`C5yIjyj66|grjAz_X{?7+9ma_ z;-ixs)gQh@;LHx_nQbK4^Q|7ZPuFJX(^jiO@FJMzwaexkZyOZJ&JuJqXBXWw2=U&G zRpmW)v4P2;!0Rxnk-|FBp%&yvAO8BRqX#xR{cg5Ayg6kyQI^?*w8@XGIwxme8T`tt zLvOY!V9YQ)d_Z`!A-;oND;19TMT2~$4b~0+f!=MpNsjYzVL3<l__;o8AV3vAgI#3B zX6S0jEAKi$<*6L{`d+l7kw0Ds;bcR~fh~Ku=|u347VV8MwV|CqL*nUFrQ39J>?VBD z1Gbq|_d#v2N9PqOqmzK5$GO2H&j9l^+cdO%&p2lE`Lf%-T6T2?5Ns~KVt+BsFM&rk zmo1NO@JlzSYEY4$4L-_y3LX9FoOW|Oby6}6a2$B!q3f@c2q$^zlTEOd*+dAMI`{gc zt=<5-uX>2S>3ezItiI}aXD1%5lfHrC&#g>pQ1s(N{zm84Bu%Rfb#xzd@R@1w^U=x0 zn3HGi`H3&p1A_%yDm^KUi_jqAR>#<6_Py9<{Lu?OuL$*Kr}C*4(d|)<j}1D3q5VpX zH=36`x|L#&4=-AkqTPu`oBO?PvdN(MIgShngdF(CYGi)t_^s7LvLVClg3XeVQknQT zQqDo{j%6u*Ctq(Ua}KtH;A0m-!Yg?sKlO;e=;ktq;sUrdp3KLd8fOv_RNq5C5-uCL z=mO$8erq$TivWp3j0T@Lfd2v{5D_q{9qylz;AeNg^ZUPd_lv*yi{7F8^QAu~WE+DR zl@Q!>0&{@DM@(wnNR&|RjGzT9+7C<N?3`iGF$BYB9m&d`5uol6R>s1IDz~~bVI3&o zRcvK%z+oTZVL0dDb~bf&qQYLYRGi@n9*#f<i*jhSQVb2cLw~o%XYvCY1O1)you*6$ zHY!#j#sm~uZxm<rtjO*MVf=B#mrP=|yZ8@Q1_C#^OupS;MUi7N0O8=>XmDkQQ&IGl ze+JyerCUZMco^Jeir(_Wav4xrLQPsFB%d`zozf@5@yRheJk!uR<W(~437+u(w&jLf z4%h?z9L1}G#!r2}G)iVB;LV#l$1TY;JMhA@S{fVnBtQwSC6H^hROAR;a}q6ZpN|GJ zTFlZYFnRg)=Z5q1tD?^KyY{;vePwPo-hF`z=ZfDoBm!#kA6;}pLdk##I@5@=OPwgr zV)ByT{baO8w(B*rm7D&`KdRZY&rkIJ{}XmEOnM~QdEWta1Ly{3cEy_{OCoh4MbZie z6}BV%{lAf{-I)OzXaM^Eo_q^4ONYY+yj@jUndhD-PhKjEj4mCmg9#?RL0n$;=1#}% zmUsdk^sMd#Po6oG5~tgfro4Y>pfzy2op>gOZs3<EN+HaSIA3`V9eJQ*Co6E$TrQZY z1rS~&#X;~*?a4SorJ8lE#9*PF?RL8H+kHGOEgB$U0iJ{Avmo^Rx_Yrd!mMq=5X=b$ z&3rr;wA%6TNdOf2(rij~%|NaW+~kILJdLj#f4eS!BL9^~^!2-r$?SG>!MM(n4?kdF zwx2Y7l66njTfPeq0$$6U%(i%^Ri{XBFemSMQO*gP3jRtrtG7<gt)W1t<&-*Nud087 zmis>6)fSsCUcT*Ygc{o9;LK*}UOU82`B-$aMZO*XIt}O?z2&8W8|e$^KPUeqx0r}N z_Cl*Rf3mCVcGmsyp?7oh_UXswJ%JyLh0tKuIKQ$C+goQf%;Td@hqmT?N07$*)mf@$ z)xh^gc08=x6uLVzbCrH>6RNM#FiUCK-s(gRIb>PsI;pSv)DSHgBzX!)-`N{~Z{N0I zBFc|2_71UkQ$-^JcpVu&jBU}8!MjuvEp@b8t>W3~@LJMJPX!hPRoPj4{)68F(sEF~ zU#IT7tkT=rwU$+%j{KdOT(%H@>XF$nyJ0@G-@#)#-mDAW{E`E7js>R?=U!*Clv_t2 z?J>6R(fgtEO&eG}HXunbX7Kn6c14%kZ3+DF<QDJJ`LVU@(WY*l&cls{Bhu5h#WTMz z*g=mD47myFCh8KmX%hLS(+z}Xx0jvcjeTur=Seaev#rq+9&$H1{L1Haz`A}3#B9rS zm)t(~&RrNMi_nzcDuHk91tEy7voClIK0X{QeI4M8R98X0V9!rCImpJU%wp<Xd2VUD zayoNt_js#;3t{JEv5m7j<7sV0^v*ltDVa<z<kNHQK$oZK$B#R59LR8mV*^ChTT8S9 zrCLNhI#zOJ_)vpb1kX0;V))~SP0hx`y@94^H&Y~D5FDGtIGx4P!bc{jW5X^g6KqvT zo2adH%pNDR<X_rxPf;IS0}5O5SMmB)(b<KVJQ>QnZ?Oh1&>e?feEH_@gh(#^8;{GR z+|4Gc>z19zbO(M0WOYLs@;jZP0HRyA_*{GjS3GQ%vS*~17^5v1-HX%CD+mWB{TvOW z>+nowcwL)CJm*2>U9o!rPx+Bn{`u8z7AG96%YI^js0i<7y3(1IRyuBI<5$#qZ37C< z%)TAw`8lz7Z9@;XVr4MQ<TsGok0|L#9h)vYlM8>tZ7p7)zi2(WOD=$AV`NtLm1FZZ zX~Yv>Kwu|-mjU5(C%baYh~)>MGCHB;<oVUfO&lHh_cMYz*<5XlXW+?uXf7*R_s?Ko zm}j#-2gc{k2FYwRN29ux{Vj&V1^(eiLv*pPR}Cog=eFYan#Py>f<ZL(^!O1gH%iOl z=^(;kz$?^SrKIffgZVMAr}l$qujsUD$f_ire*P>Ez7<!?M+eb3*_HsGS2OOTACEfW zLf(TTlGXSAZ2&9&BWONo@+|+B`&VD@tf;h#D1Qgf>Ob2IKEA|9D)6g1_WYIuTy=fY zP2PNxvShDL4bIZS8!q+g=qWgiQfis}w3TwP758G`D+a7WjZdpk0<&0wPOf@#(Y)6< z2IW_{r>>&y;8yommxle<KfliChTMTUgv=Qzyh`s0g%T3sMNo_&*3O0gy}W;T@fR&u z{^$Su|LRK;eVZ{&2|SFFSZBVMutTwi6O+LXdN2}*|HF@l93_chh!Ai2q%4UfT%x6a z1jjHGU!$Oyf8kKR;uGFr$+O%3x?XKNX#fltd@2bf<Ixp4z!ALY+qr!3?}+~4^cNu= z?pI%Lx!|RG<@X@mc%Ya$iX6nAl`&NPZWqHT;iMmC(8B%TFFN)ZbWLUF?mauCxSFfl z{bm*}I-G;6Qr(btfi7i&fu?2H&B|Y$LKqaIN2IE7TLQ^h_s=YWWh{8K+0@%Mknycf z0nFpWy9I6c4Ubzk_OY~mi?!?5y~iu?Q^724_WR{UyLpC-W8_CU=8Nxcq6@Y0xHG=V zlzz$^J@lxc%DKR4l=l$fPL%@>tAlYarprMopT_0cw;aLkM`yhCZ12WDXv@zDpc8Pg z1U8-4p{v{+bb9jqa<FsW6kjS{fd}JAQ_gsZ5B72zglS67bsW}MDO0xDPS;<>*sw$c zd7kAl-Q%}%;8?;ZWLiDy{!mqx%D~EUO5V}c?cC}1eCP3)9)`PI7?2jN3tGm@?Hav3 z-snEq<dl5y;kfkRn!lNz2`^a3XCS6>gQ+81gNT-*B|*V+*WmM+$}ZT{SxP5(Y2^=4 z3&`NOc+#e7l!kA>;rR83yvsi*ccfFAydA5<ozI<%b9KQ`57e=BKEktd2+7vr+;YWA z`#hChsVyrsTlu=qjE-*O$_r)$g_hjv46oCmeBzs3SI$y6GH4~@eDG#%bdq#nY~u9L zW=_?=m%Whn<)t0bqcxbrKgV<G$<@Kd#!cemZTHJZ%1IP2U0HRpnW8#N>v)xlFLlnc z*0%)(-|jWqEr~Q!)O*5$12$<VW3##&IEt>xwk5jNwi>-Uq#@8T*zVKe(pK03*HUGH zz+%wSitDoZgi)i;rqq=p^3{jJHwqjtq1&?h1(nij&!!*sD}fjcI)R|2eCM54fzz|4 zuR25FA`^^*=yNgNdwgzLwoRGD41W3!`_^o5myod!eg%D>a`Ho?tImF(Keq%tp3f57 z@CXpnt3cHb%hOY`5-{0(%IAXEuuc601O`C_F6u0sbj@$r`#{jUj$Mvu1CHfcnbLp! z{qHv0Dj@k>eW5q2F|H2h*JSj|hhNq~*$iT3_~~`BQh-h@TNMzhhwO)tHb^iItAC}f z1Hxv?b9~vc6CL-pB@xbkEVmZePuAH8J0@#qK1C<jYd@>i<O&^oo0D~)RQTukF~|b% zlXCss%U71QNksI)s|@K7Z|WAi-Yks(v*qvsPmK8^g=`@oZVZwyo!Z5GaN$h{<*NRb z4_*D4@1>OP(CW|GF&dn6(8=NB$V3_Ki!wS6K}p{I(hD0^cjX@?!4{UWrlB3KO3pb% zL5T)dK*_>8wF*MTNgm$>^9qJ*^3=fv7q9)-Zm(Ua4jw!0Ss*sSfhP5LUe|S6N^i#r zR~!uJ0!VL(v2y7ygdVBaXVbyzR}p*?7+h@=nit%5HbZq6%{t-i2<}Y|&^a>u>0E$K z*RI#5VT<pbY#>BwXLTi*9--br1lkf@oHjaQ5nLubme{ZVlrb5}x1zIWC1-aLbHT|3 zm*-Xds>g%JEOuX9!1$oQ$!XBi16$AG>=7DQw0xG+vI)4VeM{#7Xy|o3KZvjT+}OL^ zolgrr#^<~4ANG2KnaA?=d(*=^dnRZ%gYPS2>%g;<Afq4OX9A@>WfI@n=uK=t9fx<> z`Xgp!KN}!&9~=_`#N$`i>5O5pr7U_+wgPRLq`_0h&VINgm*a2cKR<T4wBc2%qcnE0 zc&rpMgJbP^GM3IxMo9F>SkKC&4oIy$UF|5{v-zu5=orBKn%`Hy`L_*f>8NIFj*9LO zuNZi?QirXRq<C?AO{mKRo$XvP=+5!5<=Iio=Nz9Mt#Q8?KcdySz0xtUq??S{02<RV zu%(@3)fKN!B=c|@Ec=i{_z<1)zG)-KoN5Ee&FU79lkKbcLHzt<jTL(MV1T}P^@D$p zmoNnrMbU>Yf8&+R(0G*rYsdI-b!cC^!>%HDJSi7_Nvk|`MONw`27f({zo4gE8ebf5 zheU~JIM1%LJ9PcaL)<jRDt<Ip9!}&ibQ%|g=rCwxwj4DkbzU9v#p%Aw^zZ-fKfU<h z|M{P{J@->ibpcPG3c#>`8W5X-Fm$%2D21SFGpIKwMBz+G8Mz$<B%_qFj~T*}OXqD+ z6T&Jj;dvCCHB6-+>69k9A4tRN5!mG=XhJ+Wjxu34Gp7!Ky^Hb;_wa$EWE2cWh;M>E zm45(7ujh&2Tvy`Y54Lj4cFL+`;9;TMgIn&>j#domjLz_$Jn89%^Js*D_G}OF<~j%! zlCHrvnzBPh8QPP7MetYQIqfnHw{jWg<lJ-b8OXDMJ1g1<SB@D}^c%5--&uw6ox#n3 z6gWOe3+ZEf-`i~Fk3ap-M$=X19Jx+$&iX^U*}ZG_$&AGxUVcdSSp-{&7Xv69*k+zH zq{%D#P#WrFlB^<xjmbym2-7~{k6y}Iy0R!f{I28?+HA^f!6|Tb+uYdMZI2WJWK?b0 zyFMdW(Nw^*P9-YBo5go#&l+J%sKTA>7fe<7s{Erfnx^I8v0n{+ge?C?;ysT+qi}mi zD7fPlPxL5n*MeO^78Og`EJg5UyM)rg9!4hy`p-#EOm0h?^IDN0R7UVH2g19OX*xx- z&f(R#gTo?GwMNJFfF9k_P+3OCoOiJ3fg@ZUf_r%?7hKo)FU!#rM_KxG7L8jr-tz@S z1+*H#^D+3!O4k@9dBLcLLOG%F;P%IP18v#VY{C70LpYx&&y9pVQz%f$O3tpsIa)jK zURpnCtCRTHGx;<|w_rVaelBR>MJ*{(r|n?seIOf9y(utR$FZ^oS-$VGTfIAe<j5Zx zW?D`Id0?Y=?_4DlyUXe*TQ2%s&}(UL(M>!w`<a1~XNlD*@T%9r5&(N2bv3HjOyG~Y z*(#gbj6z(_zae1ujki{2)RF!gUSE<`@3j+_TYan}@mS~9F3*A`Bh#;%B{GX=$+3W^ z5~Ifqo1HBYWFC}lzKM>vTB{o5&wZ!%F5PZPZl%0y*OQ}@g4Z{XKNjK1TBo!bJPrG+ zzPl^vmoLgEhr2Dgl<pnp^RDkYEuVjBrnkMEeZMwcklE*!seP;isIzPNFg*!$>>j=E zzqWg?8RirG#D@kfIU4b22lM7B=4*im3M>z_bej)T7ZxCv?`t~}vs?8o?=su|1a7=U zX)>@}`n<=v_w48{dd@6NdhT9(h)(t6K6o}Wqu=R6z2&!}!!lx<YH>FF(V;iJl;=$! z<2=Dla*UQII&8Tf+gsZljCGQOt46Uuv(7r+`-D#LrNc?y__Uid+X5q&lN(vop{$%$ z2kOn2UTv`h_M2W?(J}j!{&cqCI<Kh+!#l>)<Lv6mfN6SvZIC2hz9cI<rJAMSTlVQG z_8i_<;qjT8kLis(`SICZ`OrDq!;kLGj`G*hx)n<0xl5*7QIWqDP_CmEp3?z4{^{z} zfy}A$Pv|e(d=a}Ad~OyM*6#U;Ef+4Y_iRhb4w6+pn}a*9qjkQ-Go8L@Aww*v^L(33 z+5u%x;F|nBqx1Mf&sMY;G;Uc-WGyB;gFeZqvO0_4y>4)1zBO8l?@I?=hm>E{2~F<O z*sXsM_0xfTlbrdlwQuBrq3+2B4!0ZhOSdtZZ;CEI&J|J02FooQIfI^uk9F9SQQ8>p zYcLEQe(OkQU{-R_x3=`)K6C`F+nfI^NnKIr$n6>!3QR{Z$~PaGJs`&SVby2yG2oEa zkhivC^!Dt?vb560b;GX=0lN3|FB;h&p2<&qt!{u%PC92N;>sS%msH9hO|HqXa&MDW zZ#T4#rSEGe%f|-L_D+A4y-AP0q5CcwSQ%7Rjp!+H188Q27t>0&XvIijw6PE0*WN4~ z{WR!^*H8R*G0gqDd`k6veAXbKvzy7D&8_VV<T=EZ`6P9{XXK7g`IX<GY#9e4+#5u@ zJu_JWHht2=K1CG2Rtf2Vo%Xb{1WLX)pV#Hmu(kB^PdCY^s|_0Nvv8bHhc>Sw(TB(U zZ2n=JBr?NjCWj5o!~@wZF02GT3=r^#d?dec?;GZPB0bS_fUSrykjwR}Gxn%qr`lvQ z&EWAh;zYZH-v#SSgK1w|jd=M6_C~hiHfF?UIlwW<w$*AqGjU|_WbJsk_&j|q92!u% z%h%r5M*Ec8*H?y^%>a`p1j#T1SS-jE)6dK8Pw><kjr|yGcus!0J@vGlqi;ktYoLyo zarC3x_34vz4v&9UN3r)AHuS43ol8?X=>6&MV4ZZ?XJ1{M)jZ((Nk7j<!@v0Bv(RjN zKX}GK2&5rqp6qsJXj>hg0SI_(5@2(Y*4Vvx|HJQJ{FlG~`xozi_d|@ROe*oItTrzo z>hBDrsFd%cMea)4OjMYUQFbpMCYCz|bf&m5?u@*iI<MmihFl6r@82afDF^E*<L|(q zT*I>&-YVq+)L}bN6kJdTA0YifBmIHT?$9A<-i%-A6pt<=pJb}s$}VqZy06F#YrNm` z4R+THjFg*kV~E-r*7>FvSi@Ukm2n-}vN6u_y@%4tgX9j3$rM8!yS@ku7dlUe?c@dr zR`S?}4|8gjtqfhA;H>NHV8#Z^=qi5|n=|pA!gh|Uf-#E<l{aToh18(`(l<5@kl)pz z{o4CVp9*3v4HKxpZx-tP!!P?z<VR~w6`!OJKKQe;aYh52V$|%O6YMflPdVu^H~d|V zcl<9ftTJhk57+(8VXCNs?}kw6!D&!HTHbS)jLHKKc&ve4RJ=c3sMP&VFk7O$=|h^_ z==@&i2(QA&{yYmtc-PR%4`$`(9OBZyi_h6(kCj(P9OQF4w1)<1r)<v(0s<Dbhs-&u z%Ao};Zgh0vsh@HjU5}#r#>XvfcGQCdQHIKNheIr(dyTj2o`JhEqW}%3%pjD9qea{B z%iH7rFYP)VY^9f<Yz4I&kXjF;^ccg(I0T+jz?qD9so;&c!{3;TX1vO_TxD7J$o(PW zM$h5l;=_4GMqprN{|&FpSK{*QA)4Y<V}iCCK|#5I#CK3_R<vL-7<{cPer(48qQ+OF z%HGroLDcB>ot-jjL?8Mn{KNbA#VL*8R+j$MEuF1zuj>Rx<CZoHTF@VUl4lFfG8~xa znm&$Px=$%&sR0zcpg{oqD!T#~PdW?2Yx?=6{Tg0B{!m?hU*|SnTW&x<{RxTr>SlK9 z6n-soIMp;b)kFAop1fmJw6xBE8DasSey>2#?4|=9fNu$OK<o{n6Kl2htKL`Ase9Sk zK$%aOsXLb2+F{ue<85LUtzX(G>(#er@lX~1fWEj(W^W3Zwv%bTZB1OA2fH#~!2&;c zI=bnj{9iuUk6_VFwBe_`W(PXkQ0h~=Pu~S|9fGi&fZHHL{FTQyFv;?@_rh9^ZASZT zv!?U$Ixf*h&u`MRG#%6cXD<yrcQ&Ag$NPLQpZoEbHUMi$!^=AU?;8ww_wI)w`1tYX zu#iJ^73|&LmXg_E$som3KAA7$kMZX_=c*Z-6Wo#enZ-{ZEtP-l6Hq$MKmGD^o#O@q z(25?g3k>;I^1-K>A$H<NE(jtIJ4qjZQ|zD-4R6epFFu1~x7P!&dhmq5X0-tC@a<O} zR&fIPU9j(3=3q&>j@TKf=cURYGlJ>K?grmrhIhJCO1x>uS^<%aeaksQXMb!>+e_Yj z$MGBa$zY;qtKHC?ebNnF<bX{BJp#40Gvz(LE*~aSI-AvX!~SqVHf39#SqhZOC&SrO z@Rccb`WTo}lu>6_SEKi|hn347&gOrrOoIe)#@_~O6y^m=Gq8F(faxQe=L1GBKG1)4 zIN08)i)O+NuyMl5%4ZNV3s`w_zE|JkZ?fpwG*2$&5iLqMJ`>Fc7pl$?q{_@b!q1PK z+3DbPjeN49f4GCR7zJLi23H<vDz6i>L2JNM9%{6qVw_Ir4C?4T`j~Ie?Yy*frek$+ za(1T>7U*JK2RY6?;wIN+sT_`7_Ycp&kppyH&b~@hpVjfZ)lqdWS;wD+AqGJkliTNS zbbKF@{X_X4Q^A|cu*<yX>~z;X5AEdFh}Y_y35JJuY_|gATZ1e1iRi(81|zF5-KMkP zp-i3k{;mO)hWp|pWcx)tyWr<yfW3dKE>;N+kJ6%D-JOk%M>=Nn<M`;Od%m6DI!7?O zpi?@T51cIBhoj$#caA)#F0^8FddRke#Xcr$sL+y*Pu++ov1-1Oua4|?<8R<B-@DzE z+qz%5)x}`Y?QAJ9XdyT6(my107+&@9Y0qC9M2%NFn)B%^lWbqsIjzAAcd*oxWc0OV z!%1RkI`g0Mfv;QPqYaxKB+yg;h*-JmN?=^;fEP6bxi1drFdHz|{_;mU*kv1SosMog z2RyY!Z$4k3F<D-`(MiwocQ(L-?8bNL(|0)bj~!2k<=Hjab{UHC7=6w|xf0~ob9FMs z8h}8H<M0^N;9NSDZopvjyXA8tm+Lrn{pjOLyUqqrM|`*sQI#IEr7w8*peOz@2=7cP zqrut8Uy@b<e*YJL`Qks<(S2Q1flwonFB_@v27=E0Qq)%lZUlc)ILo6>jszNxa;-cj z;u8_2Iv81o@|!e9aeK6U@*tOhTys>Eu=9De5~VC1KKVG@{K9Z6uY+Dw=5m6>&*&L4 z^i^)~@WqjID|00nh4bQV2GsS%6N4LFCr2PuWHi)Rc+_8b;8Vu6!ypPA%$6J(2jeCg zjlSnHZxA4O%5gIE=$NQ?tx-D9PkMBE*zeH2?1Q_K@`m*|{BW(I3^qrG4lrX}g(~Cj z1-oGC$O<fd7UF#Bq-AXdsB8FSXFtj6Lo*>y1>g70oP7QA_QlVC_#Z_cji}{t-W8-j zKK^m<>h8TYcu>?Ce_SEClNM6g)U+1dBOS~~YqC1JzUgr?IB>xF?GI1mj{+K*nk@~- zP?t7Vhu_s1%$bx12O+bE@}U832Y$H`+5Zwt`}H@R5<NoCF{YE@=2%v)vf~RsA-TRY zOLu6_&&&o6jxYynqsX&~3RedF(GjHYe0wzPhsG;#yKE4xNLnCw%g8cD@0dZ??U0uM z;EGQFR(Ls-IXMp<%9L-(^7a3w8~j{0sRMCjR|dok#(~4R+SPPHGx_#>cqhYi-`^Xx z*A-lGKyK{SzmisSyMSxHXt<UYq03{;2$bvZF8@FNjM8A>V|>M^^6U}M8b|LwYRrku zXM!G@<$UbC5%?NJ9omUJhhpT_eg~VS72NQ#f)a&m81qECHUqi(SDo5Br1=P++xf)r zRtIajw`@t!4>o?to8C`nw=)}a@9D%PmpfdQv}f5@=LH$H1A-m_r@^)DARFyp<MFBY zJ&lwLcHj1{a9hlYuOh?DWmcx6nH*qvYggfjvZ<4IlXRrKtFNPLBP*W{GMgcI8YLBS z&(?(^6=+5|U*fu@dA(7y&fvpC`vml>XCE8!QScx*Gt&EoQt~BLmId<<_rD(vdmk#e zv(<upfyz2s+1$sUf631BTV0bI9b6;h`;<#EzSlwI+oP|i>8SU|+g18>cIza!rL)ej znE`fq7rf6O(~q=D3TDj~zbt5qj5A}JJRQ$%tTugEiuR^9w=!nmbO3d#>_+XZ6Js#? zvnAXC4NdoHAU(XU<7!6w^S6(65|cqV?!Dt$rt=vk?M-xKPxxa?-};{M7kRQNpSC)( zY-wEAI<#9>m{sZE^F4fs0Z+9|u!L9keg&{s-5_H-@&}-m=hcG-dbSL`^wjd*PTA-7 z`N&@AnANbG$V5uN=nS7#5^Q3#qUuL!bU;qq&@2Aefh#f;$kLDw@q($YwW)X^<G0N& z8!Yl(?uXvnqn}xfzz|>kY+`0ftGa-Y<;Vx&OFdG-M{W2{`=S#_4hDtkKMK^j_%q0B zdFjgGO)!BL%5%zA@gXh9qmj>ZGv8M*Gs=4I9YC|mQF6*w%wQSKSQ(@kxH>KTwwO-R z-o?!R#3zDefw&bCTS6I);GrEE^Y>Wnem;XOm1llVo__K|7Rc~bKG{L!)sn4HielWD zecDQl;L^ng2v)v?jtz2<FWGfJzZxj+{@Hse!I-V)FV^;*T*FniLtp377Ci#&$&$p- zT7IM|h8|1A7o$l#$*X7cR?(pS8LwiqNIX<lG8*ZE>4~GsZP$a{a}7XxA$zdO*)>_9 z5*I7DGyif1c+z~=$LHwac3l<J(S7LRp?mM<>g>MvYgLd>3)y|yl3I1|ZTY;5Z+GRd z)nkUv{cRU{oxI8%Ddc-7w|d-0KGDvn=TFiryM1m|-hKNVc-Q{fO0{UVD#Orb7MD*k zh?V|ye$|uw#Ti_}Cw`Azn1NIu+2MF5jp$vcsk8TV-Jg|4x^m$tKRZ}Gy5w0N`l73A zaA7tFYJ#UzaLBq-hb#77dOR7hn7<?g^4C^|CuI9k*X-dp<;O?B=+~<yuaZALwNvbP z7`zj;_N7zE)I0v^Q@)t^@5p#CA?SH06Nuh{$LHR`<+wZcdSK7k)zQuIfm=$iPDP}$ zI=N;`%?;T%KubA)7L4t2&}tWL-l;>`R60N+N=#CY^3LQke}b-Htsa!;SN)V0U~q0i z?WyCEu}iWSpLylS6J;dRQ_m{PXIix*gFNK4cBFK5OTAQX4|gh42N(|MkFL-8y57Uv zAJDsuFbN0R08s26^(R$>FeMS#c1I407q@?cC1U>FfBDZZ{`znKt}V)2j+UUgdOw|7 zpvF`er-7T952ocR9Iw0_0V0g3=)@j&4sJXhcKh4)t93%oGmg~L9hJS#2i$?P>mGP| zu3@~H?h?u1DCh)n(Jp7tHVPVzIv~LBUfEf{!Y7?G7>tr;0G$~KFxN4hyN@pL$mpgp z$y1W@rE$V$Qa4kXv1Aoho*;C&p!8t-E?YPb=%|1f@lwuBXrhk+2OAzg`H$g7NxDS8 zQMi<N_*)84V3nU^@3HrKA~HodRkmw^-f!WJ1n{#D?}+Ww6~Sf;no}JV?@j3_b6nr5 z&>*Pb_stBvEB#%8{{j>ESKCH#w2~ahQ2t;H7rxNjc{Iki`$&w2!?R~=j7y)54;-qQ zF=ugjq~mV|44Z8!?KoAiJr7<853ljo1s<+6Sa}v=oO6h7?`MeV7tnw`jGiArY{z8+ zSbe*-cNBeSS{(`h9D@d$F3Z0^PKO^!b6_``2Yx8d^XaWT@LmB3y5XCgz(Gf6_ZNI; zDQC&hk@0EB4}A(<b`$|!qpxST3NV=9k^3$09I6!fJ1^*+ROMoi3Bz;FuJg*>^jPAa zNn<;ES2tYCx6`}b5C8x`07*naRJ@f7{}M*avLDAv9^mZX$qYXpV8Xs*<-2oUU{o5c z6ORo4KgUJO_iV_i@c1Z^9U^dnRx&dq<&!~nDHki6Wihk05#}4Mf;a(-#!{c>b@pMP zP6JCnI?t9T-PKV*ClT&_#&CVP1;B!)4O9kSp6yoKnT{5$XKSl!98Jgc;u&F*8@hMj zpK!0kz&@)`bg}Qkj=q*hM~|6@Ev1hsyZXNF-C*_ha{<zpUfy*0wx!Jv-Xpd=uzsAt z$ZV~pw*noruJ?VL{cC3(d!1l28fJb26dyJ6J^NDcmMqPX?;FH*1Ro!M2)E8p%g{3R z<Hy#r#bL6E{sr8@{ao@oQ}M>nvXfV(uR|R!GjaPo)6G7W=Q)+f&)42XHe>#(84|mk z&fn;)^z8oWq0Z$m&E)p{OS~rIZSsS^W^M1@20O8{&n-`E1FzGGZeXL}{h^gF5g!e= zS={&~Tk#bCdIlE@)(Sf5aGj~9tp$wt@4biHQtb3EQ2ObE8S-XmlgFE8VYMxm&s!GG z|I_t0GD~Nimv85i$78moP8h&Uv*Q`e*+lt1l<z6JpPJ3pX|pNXPrcv!Q-cHV>R_%8 zuq$Oc)CbGYw^3Br@9x{fAzd*@egKUNu9MNTWq%Eor24L(_TI2rV@tEui?h<<{>2Z` zxXyZfs=Hd8)stWvEE0h0d^A^X)#l_kyG~8~CwiPM72iN@hUWcV-2j77b699k=Rpdd zXC2Y-8QsapXIr-Gd-s&#lO=!Rn=8w<wtT#z26h~lwZo}_vVx25_=rH3n=eW?o&|G0 zgc#$Aa{@tYczla?E1avx3X30Pjel)*_h%3rKkSd1qX?+-ECvY|d`}JBY^fk3I%Zd$ zUnUEtjYZTM=+-&vZx6LoBo9`%(a29tufb8L!8sk`lFP#`Edw36^0(pbe9GQ626IQg z1|uO|=fq{<JU6hq3I{obc`3x-KRUVI2WE3R@QwqUC6}?vXK+Nh)d6yLcQe{^r&MW} zo~$ZX=VpVZM-Y3?b`_>GwEk8vr5v5ooAybb>JD74iTV7FF6Br|voZ08Z{cqCHoJeQ zjj+_#s~x*e7H@-TDf5;w_e^`TPm$HheK2rS_4>+rR>o&%3_K*h*>|omQqo#}rQRMw z!xug3YqFi}@?S3-^x}KI^?HO?AGARJ%TLc@C;H(7w$WU5PGm18T1O^kS7$IiSt|VN zv3g4g9dyUu$#{c7Y^gNy5TViJkyjTpwo^vp_G_W*<RH&f)EWE|PeDGkn0EFbOkZ!f z-s2x!vY@MK&|;fpE(YbBkG*sTGh)bx4jo&ykv-X^dTj$gs=oAZaZPb?-gt6VPxk%l z%4r|HTC^qGwPoYKdhxk$H-0o&J<<<7i@&>+r2bh7|0(*da&r$(N*G-_(64$8@T4b` z=-RH-`7iZc3_m-aGr^1W>f<FpoJE@-7I(VcU+GzFWpKYgmF?2+cC5d5il1ci%3f#v z=?JQf=ZL#!{_TI)V%E6XLC*a@w8-UIdh+|1M*|Uu=mA6Uff=w;+*e4OhmbkCp0Dv| z3{?<~;$yok|I`2Rf4=zF|L(6Vqe>bDQf5#`n1%`Z#J2PxA2Hx+G+?3(-3w4IQdb5Y zC_h{+&r(Vx9M>~0Mkg;oJp&FuAw1VW-12w%J#9}%H#jH%kv2Hef*GI-r;?)wt_r}p zV}%cf-K#8>!^4#a_=6dV!LF$1XEgELOFM)pcS@i`+F4!=Z@>86Xa~N7WkmIqEibxn zGy~yUg})B+T7x-M2gfQ?Sp?P&P*HcFpS!VG9@PP|LeJ548Z0CFSq@tJzvUOr<d{L& z#t(VhZC4-6tYAMIUA*l5ILnqbORuW<0+DrYbCUaZWX6M}jnD>LGkCtOcLrhhExPPx zbmDukZ<I&Jh`|fGcIVu$GOIXj{Pt`aJniv*<vTL3{Fpxv4}@eMTy#&y!6UIuse3Rx z=RAY3f2U#|xdEk&C;sc`PNr41>2|PWs4jF`+2KiVomaTiI+6o%^uM4X{L+=V2%?jN zKRH%+FMF)$ci0GCnbJ;OOp-vP4}p))<OU?r7VJNj*@(QA$5r?JT?f7^gm9J@{FPsk z(sjVn!Dvz}*#51QYe8A~Pv->1=a{{Ad4j+RVesW!pf(!SuJTl#_k|bas}p^56*qc& z@EaNY3Ipzoo@D{@|8<Nvcz$z?#&G_6cz$FDKHbs>d*9Bw`Bd-tEO1Ef0+fB{uu|iz zx}cnn?z_i2y9FxjAvYXvW}m#@n_upE6)T&9@6-vjoDOn9N%hW>-K`2uFFC5^RCmZA zb>#0O&aImn#E2Lj8!%Ik<4r#J-&BuZ-!)YmZoVmL<FwmG-v#dJ#fCH6JzAdiFph5K zn%F=n{L%QDiL`v%Zj2wB73RNmXw2Ape|DR61($}s?`V@mBi46yY_}&s&je>ymAtC+ z`!)KW^$0D~ipP-5o)a8bu)54f7O?hg{#Brcruf%sH3Mo{<U{Fe-wGzG7Lx-Zn9cP$ zk1u^r@9UQj;W3`BY&Kpe^1e?2-9Nt%Ml-eY)S-In^^LF1+<G;_XN&ks)RgJP*E)#L zbsBXFwgSM61AQb{1A=(@*m7E%H|fZ~X`sLcS^?R6wVzr(ZKn0Up!VInA74DSQKX$X zKlj--or-Uj+vonss&;$zjMc=8AWMBGswB1GOGk1`=flm$jMSgqhL6tZ6bv&yjSkEv zHz*lz?BS_h^+}X3*JjxNLp!0<u~ixDre~Hm%fD4)p2fdaJrOeg$#l!`OBavmEIt;* zZy9{>=>PTWHe^YDL0>Sc3X>hNjW2ZMrv=?+yx8&VkFNV?^_tBPeXrOuX8O}NcxS`4 z*wgtld$Q&Gd{}kpw7HQ<Mct!KhkBcIZ669;onVZfWuwQ~`tFmag9$xqv?G<!p<WQG zs+JZ9OXG9!WCqrZ{@Meu7<9+{Y_Rx_1+vLpez5|$n`P61L1QvFOHD`mbRsI>Y+CT> zh<tS32a7J?Kx@!!9HlNK$rqmtR+YMZJXAF6W*cB|MV~qq%8@$AXRvall-|)}<<ZXW z9H+BzR&(HBouTo~2j0BhI#frOn|z3n&CW+>Y-dL&-`WBR!6)<M@5_UUj`{N*gS5fO z!)-+IQ|RI&x(>$jM$dS@$$onojBhbB4*OSzX_Wjc8v{hs(I3zFo$O|)dd5fj*C~8% z#a!8Y*|$MmIy<wtEprWr+1tl#L7GhqZEPr>?lc;7KDXyi<*k}{*$l2u82Ud|m+j1J zCf%T@IBTC<W2a`^@)h<qpzp*o8?yv`-!jj)mZ4_>u3dSR@Af(x*=}EmV7MlLbv)y7 z>d#+pMlzV{kv#N0-x`wHcF!E@?<MQ2jx25lSJ9h{mbpJ@B(G6B9m$m3`?0IRQrCM{ zrXA~qYtPV??R&O~7k;_6?XHS%wGvsZohXliO7@Hfs|wVY#a~e{pJIj=?Jz{^X{%b@ zQ~F-l$=}gCf5^(&y0NspM`g@h(;1r78@31*X0z*lEQ`f%Cb+w&@Ov#mXZM+LB?Eq* zA5wl_3YmeakJYW@VWI~9`PgVN2uX6@dtR&*jM+|g>&RXmNRBsKA8TYyj@KE19egdm z$y=Lx;=HcQxBg8qwqhi{6j?oy_g21yTi%|PF6K~nQlR?|eqeQHxDVbvxc%AZg;oHt z0L+M;6UyH48Bk33JmFu)VQ0oSc5MsM@BiwrUi{sE`==L=zx&;c_sx(apb8RVjtu~Y zI`ZZy=I-$@W{E9e5DdpaL_B&fx|YTBpe((zscPlB49hH_=gi~K3?rvbhND5*{<%Sm zV<H{gbFZUevj<ORy-v#Acu??rndl>v(T$e=UCLhthDYTB4IOyw?od~HMNx#BRY3Xt zlTL*APY#Ot?V0pr?MvL!rk;?->6CXl7#D6BWTl5g?;4<xpoTNKcyK>BRW4<g?rQj@ z^)GtnorAZ^E@SB`=E19B(J@l_PC&C|bv>OE<2X4@4p~6bDu7Qvx3nR<5X=>pYPGVR zZ)Z79(Y`=LL(d3RP6WY?l*5x0azmfADrDKF`8o2E;uC)=3KV2MosfgHWb@qtf+Ia1 z+1gc!4#IH>QhB<b(>!S^Ae&s^gt(jTgFF~#6Or<+Ae4AHwu>IY?#S=@Zr6t{&>_<X z@^0RvnL#?0q!X#UL!h{{{z{uuNCp6NEE=$j-^mLt%5_#>cXU1emG7}Y;WR+t(Q_hP zUbPM$G#t2mYo+Cg!NZ@Fi`U@<K$^yWm*t-v4=wVX<JjDsTbS^3J-e=Vua5NZ(i56j z*9OM34)pq!cQ#Ox$DFTpdB7qsKYA66va`vs+$G(v%lw-I9P*&M3&us~Z?gS*dE*Zq z0_oSy*1an*Fr(`ox7UJ`M56<&f!R?2#`e{V`vR0l%YdsJf>X<Y*U_!Bvsqmo5*@r+ z%$MFrWs{Z#mwye<^byS(p_>Zus9y5hd?3XmbAD+eN-p$8HsK_TZh~|I!)>ln;Pc!w zRh0uco4k~<G=b=cX5S(@9;?UA6!OzPjUqs@d+|CAqfMv0=h5qPQD35SErzsq3>7@t zkvPFsHkuJraPl@hmh!$XVABzv9-~?3pg!fXeLUVox>?1p`80fP;0{lv8Eg>5;BXs_ zpf;swl()-qEUr@)>aAu8$2Pr4Xs6+Rhr5s_jNbcgIQ}eEi%zr}+IrrS?%t7Y7Br_( zhfQa-_lW7GAmiKnUhVks)83U;e=PCRVVM02xbWL->}$)r-@n`Efqc@<<|aDHpYK|h zoc&sw>=SNm!ji*>c;m0l?CVs1dio_H=ungvZGv>ty8Bcx)-0+z@c8~ATNMNdf_s|G z4KCP-kX>v;tI{<y8B*{3{jfooEnSW#`uo&-yMn1NW@(*gDC{oD_fvm$%s;g3d+@#M zmkpko#vsJM=UdVp2XEsmgFj2+vwchCZ8VjH(@kP+nch0k?6+WX8*>$ef4#LMbyW)> z(^vG+CB-uh%e2)5f&K!+bn!AhS}wY8*lPP)?x=IfZYIYHvT-v!>lE_em3Qz3n?*@x zTc)qBMaSw~vJ)H!CL+tP9G@d^<+c<vx#(aWd}OT7=**<W_)qx5VPGAMs~ww<t}H61 zAMJW<qD7)MX0vYWEz9!B6n=01Rwp-^fn}1zyR4%(9QY|`F#4${!5htJH{s+91t3nQ zWx-nd&@Pb4Y84w)JVFH1>~Tw)@f}{c9BbQd*YaH*)iNcUAPfH20U(nV7=36?F@vM- z7*Lt7AJp&$Gd9wHt1Db9>TmKo9hDN&3;8(sCVuZQhOY8PtAo5&K8BDmztc6}c6@1a z?jN0z?|ADhF5)7FJsqrU=#E%PM7dyAPYj-G3(iD9^|^e;cG}->@ALNpLz_>Xot7W7 z)5q$D_QAm7K1Wo3e$4yGnS5pQrTGm)Ab0WV20^Na&);mAR9^B8=Hkk|<9=*?n@Ht1 z_F6+Y$d#}B(k6a1`SRPtVj1m;Xq;?Thl5E%HfJK2)E4mMflC!VTx6q8IoKYWc9g#M zulu8)^01-Go!kgLS)G*HEu1dm1@^4Jdv@KmdQh4gvgP{fQ3VezQJzk0R9N4=jY#uX zZ4hNge*Rlsqjw!lKQIoSP#IaMt{LFiCQ#A2jd;aw8vx864RZ4TDZ@$|?e;_E9&6iu zbHHbf4Dco>CK>GPC0<MxtzPl*(Z1Q++FJWfn6dSWh0g91Ka~8o8D;+1-W8TK-=%*( zlk87SoMl$8L~{HwJDWYn44jVX#QD<2ctuZqPhZis^D=k6Qpxd_=a%o(nc$8e1SF>X zf<0s4mjKTCBtUdb{{$;Lz<d~;4c|@X-HT<u+sY~W{cqKT04o&c%I|uWF=jXF2iTRp z>p9EvQ;r7Z)sH{E_^W^SZ(scRzxmfy4uT)4$W6%_Mb71dn?aWWyb0`LepR`&aQ>Ef z$|djx|5J8Q6I|SsdBm0htghYm&q0U`;JA&GCcl4!*Yy;6a_{efCx_!0EuduK-UH%Y zzFo<4a8l7S^jzv0r8snWB#qtQDA`%g{K_gLte#18R_#?b4lec&?#`3VmXe%&E3rU9 z9%aHbd<PQezRD3CFh_}e0R`8OgP-xhTf%5zoSa88pKU0Kehz6m4V{F_PL5~<uhTNR z;(+!m;I5&VPO6L~b>D_6XL)A9?B_<ztKgrjc+TH^cBEO5yMn@(y$`i_b(;lwXi(*2 z&V|$9>`td?80SE7hsQ}Wx-o}8RH0Eoy|hvezt{6h;1zGti{ClGQHsBtZikbsDo@4- zb#>-cWaT_OHWw}EEZ^yDoy^Lv0*CKN0(s#k=h0BUW$jNkjSauzo26eks(owN$@qJ@ zvaHb`$l!JUUYEK<GhBliY%YKLM$|2@vor@>TZ#!%c+5;35S%}Pz&~_P7|MY!fB)qj z=>DLlq@_D~Z~}`PJs!$jdH6Xj5<=^-J9HiG9{cP8J-}9e|KxSdE;~<FGVQqp6a^<a zFL?wmX=(FO-Ci&~K_j~SJAtFygD9{&uDVms;dGV;|8LLV^MMC$&qqRMGnYEJb{MxT z)bif@jAy$F^KGODVV61}-qE#T)q{LBy7N&5mK)WquAN{&2f6Elmifn!8Q|Evgb9^| z&)@|{YS{W)##2wwr}M~nL+?PhI<!l)be~L*8<3tw3v|f2#Cx-+W&z4~WLKb^UoqqA zJ<u%;E(ls1le1f!BY3F1z<nLb>}>BCse64AX`P`uvED!4=278!+9nz;T~9uCa6dEJ z$wh}G+R<kQ;cEfLX5S*|Rk9vU(euihJQ|Mdip*Crk;_iV#d3dYnB5C<__O%k$i1r& zO^VSwyAJMMgLkiA`6g}8YbU=v6=)c*UqEj;Y8~H}QQPF`;axiw-`CL%hk(Zn$(Fss zt@EE8Up5muhSJOGd~m)M@XW`?gH51bH(PuEHaW!~bFoDHF}OCc@$Q`CTLF(*wa4Kx zd))iRy*F%D*Z|7j)hx(;*_zR}-}>%yWj0$;+hR5yqdFS<6{P7{dIwtozIVOieVvws z_%3>WC_XUQ^5T~|x#jy-@Ma0{r<UX{I1B-IqBC&@CXNr@5>_3p*?saYA01QIz9HGO z&6vR(0CsK0<0)Bxh@a=5{+Ncy3O&`Of=BI+fg>F@!J*C(dlM@-SU4G50?prvJ9Kos z4_^G6x~eDLTa}=*;oWiV5T9-qUu^QEqo|#WzI76M7O0+uql;7bhc1AX={cV_Ki2sS z)b%J>5x#WBxpo5{w5ku`Z^C*@M-6`9zyN}LWJX3?CJcXhOG>|8F95IZ7hDQz<<%c# z{BhEKavomKvl*RJ@JgExP9_Ey$c%W_vA$iO_e;q%Ac9wHBCMbMKC!dF89kNtn>;#C zNKXCp`I;5-+`s5HSaH$8m#focCGdBk9jwuXeh}zbkmcGhy3R7wgLj>~o~XzBWKOvJ zAK~Nqlu;h+E3OOqU`f}J0GAEoduk3ymmU4dZZ=U9oyu?U0+JpDC0uk{{l561qw=YX zoBamcb<hk-RFkR$($Yix?^m_7MA-o8yV`~yn(lqy*`SQP`*v$OGl&(c(Zy$p_ssy4 zqdm1|i#<JcqKnG#!`qB1TIb(M+5lT+cb}cVX!qWi1t|tk4D@`-C-d=V6+(kb29td2 zuykymn7T-bZB}NYLRPepbN~0dbbGZQY@02x33yhr%+pJ0lV@cCJZdN8euJlM7Ab#> zC$gSt-_i-3?%9yo!+kQDU-uw?$=(d`-?zs@wS2khU3-@VR`1aEtxCC1NtJ$zCd2CI zmt_CRMu1j21Rs%hgXc#_Bl!GIBNy}$d)a)SJZl$v{*-;85|<c4i~6OV0_RhCo=R{& z{*@lohe`xDMUD^k+n}C}g$*u~;@4eIG~eNmx8NRJWR`TxkJi-%WRR^K<mE@X$@7-T zkd7?n^MCen>I?WGQ+RcT?M%NM?UKVenDUje{Or=kga_YAKD40ev>T`FK>W#{thj<D zl{LVJpp!YE30#F5MV&NED%-Ui=!cZ_!w>IY{D;5!o0dd*-$>;wcX=3^ih7JW!>sdC z@ewpaFMObve*{OY&hGH1fLJR%g#;Ismm%+58M0b-7bJ;PIhP-<1Di8G6^gMS6TEZ4 zn-&M_TvHAx@GB3=$$O|+;wfL*jaX!a4sexKddR^I_c|b#0U%Ra8Fh-_6dZ9HGs=)< zdIyH*3G&E9nx!EJ4-{)q&{rNLLg8id&A7=vI1HdP3Q1U7a)@q~zT?n~Cb-BnSY;)% za~(bL$Iv<7uLVt)lZ12*1I^*E!~(z*M4n*wv8~Ma-d(sqS8)X+oW<J$!J@zJ<2zD} zntglSr%9TDxNF2qKtuL|rQdB+s-Ir`;pdk4p*iMN*u66sO=yq0p7a#{uAXx!_c`Al zm2}f)@VZ?v%jP!PDnWtD<9Anq+9n8tNw(~RJZfyq03J(ntv>XBaN$~o>rP-}Bz`2V ztUMZ(@Z?_5Kf00ZxqqdtF}&sHSm5x$zjb7=$=;L;#~S>ej~cvmfZJ0S?vf)KkB$U3 z>L@x?$YX0tl~#T><-AQoy4Ik`pBq~GV8T}(wB@!}mW|;<x*synBaR#m(0Pt5dO37; zIXXO8jVs^mb@>Jw2jk(KD<ADwy;Nr$;L?RVav2Tbn`)(Xy<=y3IP{aLvdXwv12+d> zZn}yu2YBV`-ud8jzTkR3*^%pHs~!eVc4z;_cXXm(*?#EIA${y!bW6z$>==cATQK4M zTY(8Huxdj`@3Hr*ewWYvL8qq1(@YYUgq}xBhj+lSv<+JFEuW*?cRK~(e1PR_l(KJE z7JwQ+nk^tW{P3{>RBoWEtAvz%_;f{eoPxyxH~7WBey$_)sQ}0O==ah27@c2hs6Pfv zXmHsGo7wjhqiHkIL>8}RZ+&)*eBiW!*2g+VW{AyJzN!Og3G~<e1i^gnokn&k7&GL) zhO&<6*I;>*a~-tU*$i5;vQNPH3D4IC()cW$f7W{RIAu+ytb-_QKvm?j8PSRbvmf4% z(8JI3&}~qX=gcd5$<wkiy7jF}0d9AFwul~W*pe^r9cBAjJT|lP_Ay%c!gQwIzsg6F z$8+!VeydZuHZ{4t%1_oJX6xBeJn`uU556S>pO1Q;!Q@Mm?d$h_ll-k&<DcV~KQ7P} z^hC>o(5Bw#%BEX7fL0bvkJ0hD&f-4R#g4jvY6<k$US2lqYKfy2U1kqHrr)Q2?0et7 zO%G<2AKsZ!?;Gfqd-}tt7k~WuL-z5pXDw&!@ZPxDaZ4rX+Cc|w<Z9QHw+kxE_IawO zUp{R2?#JxlUG0jUx7Q)ezI?ik4$kZqTW7aXWdLYEm%qTpv*@<7tQ8GkTPm*8{jtxb zSUSi}pMXAFVchY&7=k&NMWwp}#fR|vT-8tUt7BkB?6vQa7Tj*OGnrVGkos3g_))%K zwWw>i{%Cj1U~I;bu8(t^{hmRp<7>qUc*oc5YA`51u<2K^JxC6GA~|Y;%><3+9@96p z467pH=$;8kO9ukXj}1D!iAZvw7d{ba^r4w<<zL$o9`V55-8|GC{n14~wkZA}gUfeb zK5_)t*+KX5w*du<-oa7^?)AJ+8@bu)(Q-Pv@{$p{)jjn<9nP~=zM44N5B(J@yZRkq zf8%|-RLAJrL_+l_JHcO+oSDYSDw)$$_0tT#SXSo6$TDicySI`9pRXEJg6Di;MEepv z!XruN^3cgyna1Ok)_*?BfQ_7|y-4>_V<6>VOfk`UpO0nRwCUM8ww3j1A-l8Nh{~sh z9u0!#7mUYo589ILbI|nf*{`6)%6rA&_^YItLii>`(4S9(+B8so*#=W=C>|#9WW(0Z zQu2^=Po_RYv(+L^RD7$RY_KhO8=wfV8D#P~ok$(-<8L-lkc>QAj%2|=C-d+ajPZ)X z25qB*ytaxad9H|hFgc$(LKplaJmfCFth2A=n5yHOyb&ZH9qck1ySe#n{(Gw|(piez zD=X>;-uV_WE`M!M2y_E!vytq@Y`4`5c+$R`9NJ((d?;g20q@zOl?k%ZPhESZgil*r zm`wSox7nUfsii{fguK+t?GX{4Q~uOFbwaDW*gZPgcpMG)^w9t@J@EJ106t9HorDf8 zrOguZ%cn1({&yXIK5NLxO)=+i0P($klOz4%x%#p0KrqqGy!3ID90+vCUtYAV&rlh+ zWW2UK{^0bit6+N=t;skf<vB9<>f2Uy1hcFwTZTV5+9w19qXP`kI(GqP|EO^pN}G_& zZ`U^#!}<T&U;M?3zy6Q^@x_lnwAqISy`tW!TIZrNf+|AV`xhClk=NHVWC$p#JVQs^ z!MrJFBXKGf;&8dAC_2aKsJSc6scdEkPNl6B*s>DLuH5<EGT$KKAJnC;0D2Bxb84kc zE=n_=BzYhvgRTfawB>;t-p*;5h!zz0On%Cu#7utaV5$TTjWswRaz3068V*tAR|dd2 zqZ<wmcEvdZc?ukqFVH~GHOm0|1cVN{9@rCHAO0ltLw|W38&U0=qo$u3a@Sze(w1j+ z9{tf3cU3%r8{Vss1(cR`F;+h_Fr3SbIi3X-f?2BqI7%+vlHQkheQWoz%Ko+4TyC{@ zA_O}>{;t6Oe?GqWANRjh`8DF@iI%P270kpxJ4MerhuA?^0+}wuVMjd2bTLMwdGzIk zb3P6_m_7-~5!{k0)2~0ux`vAttR|ON9wnUpIsa~DrldVsh2J1SX-Vb=Ge~3%9^kIn zkgMxVu0Z4Oc0Crt#3}BRE~V2;Ohp2G$g5Puatz2ADFeL6qqp4S=cJs!=iRBUgF{a< z=5E)KD{XcV0csAI!*;`|3>0hR!>`QrTe>H*`Cav1=8=T<9&9#uW!xg3RVzo%LAX7W z_XMNho?};lC5u&to_IE2Qj!2p0=ar}?79rnpmGkr`~7x8b^l6Vd1>LE^S#kj(s=kS zeY3>?PG{4@;eph^=FA0}HDd+PW@q0Pyj#9h-3YFYhXg4`<w4i+)JQ+dR}k{98BR04 z>OCK(F<C%UFu=!>qX^rE8kQDl9JBc9WldoXYCYhVyV|fw<9G`og65m8r(vo-PxbxL z@a3Zx09W_Atb_niTL2gT9-f;`7v=Pg+{YJR%sAJPx$iSNMx8ZumgV}aje#U9g6N4& zFIduW#lMvu{K=P|Z-iP<8U1ey*33xiBpcw-sIOD#lR<Te*r_h0cIwEi6CL$WCqRAY zYd`fqtSoz{F&@Z}?kHwHvS&BfJUP;#$GpV%b_d+_nv^R~2G!`&_Fi-HI>A_ZZZ`0; z;Ex$tt}DN9QSRHg5u$@Qx|&tBJ2JoWB|c|6b*AnglTY-sIr|Zq0opzm$!nb@qSpz_ z@7f3nEVC}NF*G$<{3#jU3t)S$!<(ok^KICaoOyBSY~v3<|McSHAO5h}qHp=)k2<M7 zv(YkUokzkU<L79#^coC)VsHcDJ#ha1mpZ2Z^N)YrY_UNHd0u7X5tm&wSdm0+>}0Qx z1V0=)jN*#}tB!khge-@r;19o#uiwcY+-AnRUk7_~)FzQnyU=EL_J2?ho?8XAeV&4A zV=K$8fBNY|pFi@AWpb((R)(FR+W_j8Rg)vdPygD9IsxgApS3jnZr{0VNn-jgQ+3uR zFkK~=S3O@FT=7gSde#4AUQTcf_--j@_p5L5L*MXixqo?C7G4C88>H%<kDBqy*Cm?y zi}BFew~9~Om;H2axuoMPrRGO;M9be#V6G!!Cw5KX;=1^V^vQWK%jC)5^$WT9Z0`(K zb~BM|J>KwQe-5+28z3n*Jc9<9$G7%2n!}3;a@e<ozcgr&Jm6%nVy5|Ebj2H4kpUp{ zKfx*s#)o&E;vSy?$YYo4F#Z--<wMmsysS_(j2;FQj@51Yi~jio`OuNQHhFa51P{;a zaAe=*TsoeSf*vw(oM)Yr1<x|+vmbevrRa_vW)HN7p6IywVC2nb$lo=ql)n<2ebs?| z(}Txowlw)|o!`g(>g?{BK2ZZ##euI&Cp&|oRt>#u_JEx4^P|SY=mL(%CLL@{WyJy? zXJAm=<@c)g#;Y$UwoU&%J4^4?Gxq`Nw;lY0<=d}~ExmYE58PmmRR&%gnWTCSU%AHf zd{+s0?n(cSt-}@cwL4W_1Pwp?qf`HmS(6Igl;x&#D;7@NohE{_&Xqbn+mcVC2><?v zo8E)6WM{snVc8~Ov};N2#n--}{?q`MZH(vVqShzL^2i%-IEySR8x896{5kvS=X>>N zW$PcosXf+K8Z_D_;nBtJtycMe+Be}%^gPubyp48t@Fw03_H-NB+FtxdNA&AZ=i2wl zR}phVZ0XmaTX~Zk>x<LLe%HZru-Efxu`;G3EfRa&sv2^_bM&qw$v0LEFYG;5jx3c) zXwwDaI`F?S;E>{P?T@zRRE_Zi`Lg@d1NGFP3Hhv!W}ti^y{!%hm(GE>{D=KJB5^cp zhv@rEh#r}rx{jh>4?Bk|aRU^S0Z_S|B@)2$VC-1eQB+L6{@sr+{=?t?rx*YD-~Qpn zzxuNuquaL`GnD>DYJU@C%=<w;VJ0cF0IN8|bes~VD0a&<ZledIAvmK4XF)uNYi<yp zTY4wga$EwU1PKD>!(k5t3hoJ#nSnCYx5V3Xxeu<L8OZ4C&bglhy^1k9$7D5lj9$JQ zeeqviS|h=+g0+BZWh%$1aT?_@2yg>C*gYLYuJC0`-RL6m4VN3J<sf5$AHLS%mr7sq zpB%&K`jAlNM~Cv^2aA-H8GnI90C)^|GA)hN=R8W=Zhf*<Ip(}MjL96F(~vXH6J(M{ z{N+#u@vn2b-#!K{)Ed~2b#%YvobTFT=f&rr4z1p4D}eJZ;*UR=8GiNR=YlOXbKb_H zI3o#U&pnRUTLmH(Jng_&wCFG#2OF&w)!5HA%e0*?J984T6ut5UG1y=oc?F|_tJJ~N zpn*Bv-xTL`?nhYqAnO{D;H?n`yG&;k>cHQiL%3ItjK|5*2M$Pf0Sx+Xb?MjOozv`j z8O5RK_HX}7R30C*hm@ePn=|Mcp8PJG9*|1NYvgzxbG!$GQ`u(&z!;OE=vtWro0xuu zH5-Q?ZT&j|OWAMqS7^4^-=HhmUx?(coV3Z~xA~>RsVuy*J4(h^i6i!KJxF^dnVIik zGIZMwbi;e2MY#n(r4PpNbY0njuE1y-tizMbbp&PTs0QzhOohJ7Bsr9@@){D^j0C^U z#x3PHt9HJZ2yV0qP^wc`r=~chPH_Q9Haou4!QO2NhY@deVjEe(8GN&FTD@0wD#m+q z+&iSbFZ%V<nK^z{Lu{Gxx8Q1}bS&-kdK#%Coz38IPG(Tej^Q&{g-hY>TsHMt!~5z> z0dAxEU)vq|OP!79I_lmJH7i&TW4t`}S(`unT%+$ZVmg57;@Kw;3aaduY@luLa3zns z(&lq@2KkxNj{j3fwIgg8EskWHVCI98&}QkPX|{c<A65SO+0As#1|q&P)zJ8khge%@ zhu-NZSqta|C)*>S9Y($1slzaQ6<5D$mQJjkL7#x@b#gK&$1kB<OIDx10?EGTM%k+X z<?S3@IlHbc1B`?4uVe!Qb>oxi>vhn!G(24k4o)2@08W2qNcdWQ=~J6rX-5(D*-~LM z2{-yt`X*h4v1iSaer!{!Wbb>qcXdJyE<88$N(M<_9n5XYQhEMsekA^wfL)Kj^t%tI zcdjj+MEi%{!)+U`&GvrSuF*b!;@#ppA{Eqb_%`xao#*V$CpI=PgT^||_q7jcqh-!@ z2scZb|41>uv_KbXl%1V@Pniz(UU{}a?;8-xCO4qN7*wPjgEsC{Gq`4~_UVmev(9(+ zrUSFV+wz=uFw;%t1a|^Z*8+C=&1TaheSdt4_Es>^pN=^@^~&R?H`>1F8+DNojT@XH z!vag4T=ad3AM_fCVjs7h--EuuRj<_R!}Aq;@ZElNbXWaCzw6bTU~bjLEhw25!|QxD zd&>UfXYU8EUXpF_(xDk1bvo6?HyY!zAN=I(>0VC@-sO|XVKe;X6HVH*Gp5|CtmJ}b zgG0w0qoVtYFGhreKAzL_;-5sokHPe{cz~_3_rQ7(2T{?V`Ct4>FLzR?e57XUYnLlG zAI?@Pp#2#y<<?Fe9`PI|K$FMXsPrpM{N&*0;2Uu8)0Mi+{?ywA-XrLgM+^SOV|IOj z0{}!a4<7u=g=jP~q^u+SNBeYBLKxWHNUMxNDD^hq-xL1eAvo{D^+W#Vv3&3HCzdSh z`05Nl)S1<GWE$1Ca8gRIBYd&6R;RXfbrmgUfWMTcezS{xdaUzUBln(1;p*-_dlg|s zzwf)|d(2kuv!UTlN<Gs?c(?xOs8;9bBYMYQ`MeG=S<md*MK(q*H~U-MF%eca8m7Z! zMphdD=j+0?*g3dyIytcev6bKSOO=650t0VA^_9UOZCt-E(RtU39f8wbewlABYxT8( z)dsF!<#*Vq<-Uz_4aTc{z+GkUUuq|(%6vn<t-A8MLEbmD=|028e`yP>NP60C$w?+S zy2zix`?2Rbr`!B1B0uoK+1OJ)>3wzQq5ApAhS^LUvXKn}2A^NjIed!G!suq<#ej8o z`>9WsMAHems4x6(5+5!Mo`J9QQ#<zANNE1YS9A>WZ2+qLY;|pC6wj`M=2-pf+G+>& z?f5Q(OyTKw;?uA&Iewn8R8(8NxU2K!zxaJn<=YH8WyRP0MgUkuNc!VS?Te=D@2b<_ zoH~Wm_<}5&{^ikt{6G!JfR_pQ>PYONj{zNA5CA3(la@F9?SK8d7ytdg|I<chfBN~4 zjo4=R5uYVju8K3ui$oPBts{!!4huJ7B7bBYjK5;OF__Rt#6%)v_mXgPyFE8q6$MEz z11#yi;{=AP$$?YSE&YPklag*FC#YKrZv%)&lALbmt0K(^R@u(;gF_h<Xclv>7#v&@ z>^d1KztM=p{C5`jzE7a&7b;H1LnR4Hna$Sqgi7J(02tkt?#NT_#J_U=9d3c5rFimA zE+Lry@s@rjuNf-cRkVK#rlJ#UDJ$1Q4vVp6lQkk$F2-3v!NI6RKldpKL6+HE?;IWn zUPa4kKECTc+#Jit|B<7}juuqqAaXU~t+LffzbzOm%vg{H24`S5+56W8D-EF?cvY+# zR{UtZRI&g@YmlPhGWSF4O$KFIg&XhXz~}5b(N5RdjWY=n!iwb(Bu$4Bl7pzA`y*p$ zbI5^X8z`DHKu-w^LKFkDGwrM~1%J9a`BqN8@iEfkrPQ)rCFLJ=5INH4_ynsoI@7qV z5FX2%h>qzw_YaH!kM`MC*}-(^^j>m1c74lU{_7tQhq^&?bMQJ>9t?+3aAqUdlID~S zoy%~eXSgN9tjr`-4u!j3eE||P<-xjKBjen}t_*vyGW}VOb;@wJ@*tnbp_z{x?gae3 zb2}N9{RV3JD?()SK$nLfJSD60qho^wK$kXsXV+j(m!&Iv*@`mY+HmSk_3mv>{><K< zcW?K7#09XL#Pcqo&&s^5F){<CVfobPFd$}e*Fbko?Qilcf>68p+V?3k!qJjnov0d3 zzsWZmG|XN_(8$joyA;xryC7ixpubxxg#H*<hh)r9Rf%}X;9eI*8G0)8h_OE7({kIU zVC!Tz`}pbjI<sV-8yWvtN6NBZa<gkMigfS;UH}%1@O-WDg=X*E>I~QU`93Rb$!LD0 z@GsoW2qq7-sR>L3kA!3N-Jve7@vZUKt}Spc|LSPGo`IKH7AB9fQ6&H>AE25vPJkc$ zy7#PZHsxNHWjlIB1AlKoP%sw6e#to9*-_PxW%EM@lkm-NqstOo^Z@FN1wQo*Vg$eZ zTh19i0T{yY&Oq^KnXW$gbHSX0%s=(p(%S|+ihrZTvbgk6C-mble{5%BOOJ!0&5oaU z{PPdJUmX0OGa!Q$U-EZ4CXN$y)*+424T6N9KKLT<`mO_+y`e_{Bbc@<TKjXB5I5zM zPP|VmxXHOsS2`m$Xd%1jUUfo}>&NW(^6v&>_WDb3U-!QD+Mwj~!TZ0aQ*Q^`Stkkq zO`X`^VV$%dn9b1H{-Mn?c^48<CpT-6-PJ11jtn&EZ0R8KBikP$9qC+dhO_i1v$teg zd$pPN>f@U?Rz`#;{<PKVjPhn=$mUw2&SzW$RP=kbJDxA->p640oJZoQss=B6H@HGR z{LQyyrS04MYvJKDGKkd&HYCq>j_!Ihm8`Gw>Ng$v>6oMETXoB0pC;K7#~_jFV6e?} z4i}v+;8ZrfS<0^Nms+0iN1IK<j(0pPoX-7-o*Z<H$@eg+<oQP?CH5@a8*)BBoS+4p zu9WHTelksW<fcH+Xw|XuC)aGn<q6>9o;}lx*rk6ft4u$-07D1C)5#QD0mQd7dBi+d zzR@VHGDP4P8vzXZ`~)7{(@yk55013z-eQ?}818ILJ7N<lo{oK}V+|doOP>=u@8{ZK z`F-wAC)Y+s;-<HCgtk+EW%#1)P~USM+`FcIb#epRAY%TeGJNp(EWbe}9bW~_XzxI1 z_@?jDHqjAYc{cE+kIJ!T`}REG^FFt^-Is4Z=SFMvs-7RY@>MujmaND}8)VYJj?kjH z?O;wu{pdq|CPVU?Y+cXqIUhYtum}$RV&vJDy3&(ui7{;O@}`eCEGZk!_Qi|)ZnM`L z8u0t{oWHC7e#%GkmCt9Vr{({ek26Rob~QM?y%M-9HlvN8!{|ll<QfAj9{!JYbUy^| zLw@5Udo7RI;eGClpB_EI(uAd`r_a8*d)fgVQTpOTt^Coswu`dWI@;5{ev~}5IO2{i ztFPnkKJG^gO`M~v$%RZkj0RT;djEpw;2SQxj-$$yD-hJCpGUS!4;XQ~^^BgBU0bk# zlpYP31XJGWi2lV5+P8R1U~Bu-#~Yc_P8>z9uAzfP-RQI<{<I^v>)XYjobEY}Qx+2t zhk=&5E+wG;s?-6)Nu2RRp1%8iGrGN>`{#f8moI*)ftmwRN`MfP$DsgK8VX~og5<K( zjJDg2YGRiF2)2KmE+KY`X@7{Q^M0;xrKO{>yp`VdDo^<c@Z>*vDRNxhz@2sH%A&2G z?ByWM8}wWGo~ayF!sYdJvck+c)>)Dkj3D-pfskC+7wE|#Dk+zi%0J<k$Mu0WE@CMN zW2f{k=KQ3UZ~EvgAe_#@QQA3BBzX9d^W@*)LU1+<DtFglp;u|fwAoEB7gTW!Or++M zXXk-du)K8DW!K<*E|8cSsD<pRxKEArqvL#ou*S1=<>s(0X$0R4&O^)T3dn6v0uB}4 zS1}$6l%GEr$b2+gQLro+T4gwL+Y&(d`_UG@*{#_fa$it#O9s>Zq_HyP?QRvzW#uh7 zVSBqHmwt!Gb3I-5+*wDOI~IWUbOHp6F3I7HbPeqCfXdeBicNCpC!>T?x}Pfw1U8rn zUcf?!PFWY-lYKlUyV+khx!LJGK6PevfP?on9`TV%_ij+M?s;eSbilI5^9#&@JKn=D zL%CFY`2EfxR;l;}AtJAOzs4jEj}&_(Prv2tJeqGbEZC3F)h7ia_>3}ljmMQD?`}1! zU7*K@-Gh`&+^kr4(d8c;5xYT|_;bB_Chx$WJg%jHbNHCqO|~Au=?|OG0U55~u`}{l z(%%JKbOJtkb{2?wSGa^4mxCYQr!p&<9q(_mYPX=|U7M{v_IulO(A#D~?U-pa-iYq| z8r>foP<(86@{NuL*-YricBS1?&_0_3zM$G*%tIYZ^-K_HfatDrW^_MA({r6dos*Zn zPgX>;pFt`C?b7jb>+E<}XiNsHmUS{%L-nfQrTeGg@F@o6ymk4q58rM!Gn?}f-23YG zSF^G4^X+4J8yWXLq>YarS~`5!w^BEIqk$EGRli@wzopLf?{hBO6QaQ_n-p!iSAl`g z^#nCvpd*?$YerhzWS~u5Sf_$6{7V;pSEpfmK;P;`>G8TCH}$Nuh>w1OUmeT(lE=~S z)lSY1lO>x!17->^U`A7UwoAr0{jY-*-FAldxf(l0TTaeKzb(Kl7&t`}b8>j;ecUWM zUMy`Ui`3FDTQb|SfsU3an`KzAgZT0$8vMo4<T?wSP3kz)i6FG-sb28Mk9Gd)+<x-@ zbhh+Vp!d-7#aGGRMniO(^X;A3bP&9+`J2sJhGg|A?v5`yGI(y9`cw3frFVAG@vaTF z?DD*K^tz{yEqip1A%ma-$j$7eclz|cu9?;OnDkcG*|@<B0h1(gfu+&=oK9rwJbAb6 z!^g9l41L-O118|;?>`k>TIPH<%gk1k>&I56x&CZPeC@keWB4&kv<)t?Q9C>nq5AgL z%Z)<Ec>P@6v26Qvgmv`7lOE9H{bj!mNGE$U!gRLyCSS)+(5X(J*->=!Fxf=|xjGA7 zWDC`c1VN^3v|OVp@@LnV|L<ltG9Q_YCh^Yd<a~YhXXgFrBha<+r(GfDU;okT>PhgG zyM9+)iXi_h#Oof*rxVJV?@L}A)JTTY<&Bmt_ol=6njh;qzw=vM<Y8IjY`qPRwpuFP z0H2U+!`UGj#Z$=D3-U@8{nXa(k-~mGQ!hqr*QHImwYA{rJf?!|pg+lFdYPTB@%11; zaQEkS@T=?Og-iPC0G$1<d`C~}Yy>!zM-DxT0mv;pizg<-l`fxl6HdN=x8HTA?Y3gT zV5n6hubT*X)6yJu)u*oB*N(hfN7qu?+<LYP?RiJNviVj6qI)kk|FKY)UF1(vaP@)z zNRpKe)NFIHVYnvb1iXnVLMQJAgV-b-8(^sycUQf*v*DE21gdl`o(K;3`F~*IO}qE& zamv%><dM8ABbLwK=|pcYe=o+<1|3Ov+12DfaBSWENr&so#}6+vUEXlhp?_jGOBgnj zoK30^V#<BDzG7vIhw5y8YO|x@&-R-A2CEF}>zlh)FIADyYyj=V#K&jzGaJlN?~)-O z>C6xL!idP#K)_-O?e26h>Q)~e`IqveVXus21AI_slwUq={8K(=ZC^0q)3L@ambcLr zA0we3IUhU6Oe_$Z_9_~t11LL&d%6biXasE=+>%!YJis+$au3O&o9w)rM2A)J@zul9 z<T<(EUU_~C-|Bt^w<<)%?2w1PI>k@?sdwSg_FjI8U7rDyU+Ww?|K(9g6+KeBIL>hr zSsIb;879IO%ALbrAoKFYzxlWS+lzny*Z(2M-V&q)ZsVc+cEr>`-?CzMM@$|k&)hvM z^(HI^IovR0?4El(4$qYvDIF*}*C$T`MQ1lC-1BaZ6Q{&;ZAsEb)8#FvAZ5l*n3WnX z*P}OM(>tK#!}=iwz5SbkD03Z^qqIZ8O@Z#<xV0t%n~UmI(&Z=7AiCbYGAEa`b2YHT zJHwFgh7T?Nufqiw`oGh{IKVi007JKT>a1!q-am(u@d)C8-F;^bl}ap;beQ@K%$>X* z`8VFA9U4_w!A_ainC%^po1rcMEYN!WT%ZsR#`?CI10zx@zKUx($#Y9Qw)Q_5W+A+L zXJeZ)lU48%vKvL*;SG1jUixNH@P(KDpq^!o{zKO61pZapXgD$}C%9uI03E-*cdbzq zM0!_F`J;<t+qKzyW<*cAgX5f7l4Y#$C!<%xaP)F;s13%w<wd9R!>16MJYk2G8)$q8 z)^Eo}^JSC6kN5JE`E*qIZjasK<py^FLDy;xn!q?5l>lveaYp;b<~t)|9b0gc30e5# zbfpiDd>$p^)9AY|W%<$2qroaEUJt6$73t3)@(a=KZm?Y4E++r(9Y<!)at^^@U(art zCf7?|(ynVb(0;wkd_W|N_?ujjO->044;K#Dt^*C<XAtH006jN)HTr=VJo02lHk*2= zgZuu6-ns33y_fs8Xr;bio!mDs{;a(ZerTh=1&5XUP{7XD3Zm^Se9tbcbC!tOnB?(Y z%TGhf&WupM*3q>jwa$%3^Opkom%RrsP}iZ^h<napGrN_!^TP{aPA~CWOBuA;zW4Bi zIbUDa!7g}K?>@JKuq9sfsX>aW0-t<HGqK*+H`8?j7RyKL5QO_pJU$m_Z8_i(>}kld zz&nj;uykhd%@?hsLx%FQ>)A#1qK=zgK2fNKZg8W3Yi$)FcW4ypa`g(0U1RU6Q}p85 z_upy+4Z;&XqA1T&<U<1(<xp>2oEWf7(HP;Ciz0&v8vJBx5J%Q6nT}GQs^L%euBOPP zhipw-crAlHK+~llUo{w=rvvw;GQNLl9De@9vxwNHHSxVbAb4pqd(i=HR-$FfccyzA zg#7gMa~<WD9@ADGx^aX2c(e5FW6O_!>OI|0c6+w84U^Gm>7-eoylpZ$18oZieGVuh z%Qc<Zbc+9{7n`bB{<saV8sx;v=Wr7$Kb&~dy(P=d)bmx@w)z5A8jYUM4Wu{wTQF!x z>UTCK%dWOTRlz9!PwQ$4a^kMswS%)V0>C(1zU_3nIz##%@P9fX@g1BG@osse-OP2q zbut84=ZKr+KHqwSY1yXxPX+sCjV+6QYQS~_5fwuJcAAdPy>A>W?HW0s;4Yzu_gnl6 zd}lY^AHQ?FO(aHPM|F$o?Fi1PZ<Ss7IE)8*bt>^R|1aTooU7x9cRl(4T1T$>0p4se zJEF&{{zzvB1_E>}$!X{Atxh4O#SUEykRzb~H-eLofON}F%Lk@CIyR#gSb_XxLho!e zUdLB7Y7gLzsFH&T_vncC{*e;@Z9qJrWmRCQgRwd~2=J42S|Na7gS%P2&O1tyOcq3k z`uT<EUB`B1PF8;}Um)K)8R4$jDRbq$!MQrOo}=3_*b`Od;%|I(KK79oqgNdfj=8oX z!`indZO;sDEWgWEANpAx<Q-3|M6M;qR>$!t26eyz_xf%<63BS5S@OSL^)MJRKNh@o z+^R!@KC(*)F`E2ZdiyFOtmavIy0uHN%KWuXuYoc4?UObO7%|W>8w%&~y`6)3#6%+f zyQv{C!_9-y<ovz7{v|-B4x*I7y~U#3wKB_zw<R38PNyl}Cx5KK%S!}T2h%+tmsMqZ z>Y{_p_#_SM%O+#KtxS9u$1-b^HQt4OZY9Z6HpThu)r8L481}B+vg+Bat3H4_B9`E< zwzL~F<<r)s9v&dMrFVnWb>bwhlU%v^d3Z{*s{&sm7SO>)eJGGHysq(U^S#rC9(_y( zl_fQ8x0!eye?nb7VT<U9ceJ9-zxks|t*@pqT+D)uE8p!7XLc^Xy6V`(!|Jn#{VJ~v zxv!1~<C2&Bs}rM5o*S}Tx_n`l?UwJH+4Zk!%KYh(mu6fwSY+BW4fc%0Ur72focP@m zR6@3_?9IFPFaGu)|Lcpt`^SHXVN2|)fO^*{bAjU#Q^01L!C2FXz2QT~gmf_;o(0x3 zOo@Kn*~VXXr%VL(^X#_=3QHq&a2T$CWtG!;kE<v;zVcyq3X)fufm61h%DnO_y6g#d zK%~0A<u1)XxKF3~JktQpAf$&=rM8S<4bh~m{E_?AQ~m?-l)scFb&V?L6fRsXU&?mx z=C`zr#u?e5dpP>WOJ&fKxvxVw^;CWXF99NHJEd)wD14)fq2>V5&cMjY2=|s0qlR%s zM(y^Vts_|DMZ`9`d2Z>7gFJ1L<r|S3*{!Sq;B^BdZwtacSLR*I62A2Nma`<@F3aCi zPI+o<%?@~v(dH$VL_sp!j>gp|y5MvbMii&gwawj&7mxq|KmbWZK~$Rj6NC}joO(9A z>;BLQU%ZALAQd~OGYjyX3_Dx8Vz5Mhqr~huh|wBQVt{tIkIXeH<6FL-m23CQQ@+`L zX>(pTT1P3;>B2MT;IC}=Xm%)jH58lOh2WMxJsm$#o*-17twiGZI4uM@&r5v=ihq1A zAKK;b&k0zLd^U16z7D<-glA>@ciAFZ!29kCy2iw{AxH7Q41-U6lONgRt9u~#u3V4S zc`iY=Io>F{&bMkh9?|Z&&XX^?hWqey1u7SvH!fB_aza`@`X8Vgsqkua1{s^K(CFW2 z>fZl9!DCjf=hE@fkIfvr1B*`ihu*EKKKzhfzps<~u1@WP8Qwat-f8ujh~M|!(m(%K zzgw^=`1qv`!&5`$mOp)JV~jPM_tm=Uj~P$2_`Jze9fJi;mD%^st3Twu_hj+cb4#1e z0zZE%Y-)Db($rZrdaEm=IRQ@(4f<&m1uS3N5&hnKOesMv*eHB>Z1A*i1_u8Oyw$<g z$!%rE&Xx0N1@g7|jE=P3`#;)wy&yxt{0U7}M(^#yyV*;@Yw{p-GhaGo0w{w$XT~UH z<;3{>%@~q3Q6QJ_JDg8LdMpR!SK6h!@8_Go(IZ%ZS+I24#Y%p+Cz_lPAUNsKH#KyB z{EAjFLW0T0*YHO>{DWCKidGdDeD{u5GBbN&c6WhQda<<4JNR_U|9<6gqs=FbZ2Y)y z%0^dx$$qoao~!%e2|gd=d$PaO(X~;H?=-4c+=M_#2Q&fAjz?=z6Z^Gsm?e-OKlIM+ zAAj0x*0X_!Xk9xI5eua9%NvMjKt!;823XF3ruV-r_4e7MH#SjgxA1-2wk3J41ucR@ zyD~epecO!eCL5b8eQp4h{$Drf`GbL<K3T-}ykGYGtYZ|dtu)Xc&0hrv4c`CNCQWX2 zx?d;k?MPfb`njKXOY!lx9nbHYd0N0&d!(cP%%;BCkOrRGZaV#<U0`?KW8)i>bpfe% z^SSq;y?<wh<;lPVn~4WL#O7B9c-X#yj<dt_EGtUcX2Eta*!*l(zVyi^w^>dyV97z8 z4=pqGuAZIptSB8u>s~V`^RZ3zW(N#8I@Sh8KRMxh9g%P-t?Zw4oC&qG=_8%<KjJ*e zY~#!f$5ROlKG9o#cr&HtDWU)Q0Qut)B6-Y=d1Im?^GWkncv}>Sn9A32IfLfn4ccbQ zA<s9l1vb6sC5cfW0f8LO;I0SC^bgUyE2Znz+>%cIBWs}NvjcGkUV|5{V@BDST3JL( z7v-l*>DNJD4*AG84tEdsViArB|LU42gLQHxsvg04>i9Z4<-JeWW}|E>c3=6orTx(F zF?APW?PtJL$2NCb{VR`7Z`Z~beJ9sDqkE6NeDmu)U)#)CB~Ra1zvC0CUpnh-^}fAQ z3|i0`U#P=uf~49p+6O1b?o0Hl2pt)a(zaWfv(HCrSMp_EHM62lL9x?iXZAv|BmLyu z^L4z+r2R0<eALFSju?-~x<8;2G!a&=bA^sfE9Bp7h5eP+pA8`N%&pny^PaCxtu9dY zn_jS6-8W-RJ_ht!^19{3FU6<j+n|?rEtvKsFtFG=6ZymdC(GxSbeJ7i?~k9zA7uMp zW!OMSc+3EAmt})rS)qYlcB@__s@Vua_Zmz2w{J#FKI^NL)i>p%utB-n`*8AGCX2KY zI=+@P<JVI6yL|W?tHExQMS^wKr>>pNt-?nrq&C?lgKSV9_5JuCZIl6l%0<uWP3JG+ zsmN@$zrjlgH=V#xfdiLpJOaO;e3z}GQ`+TQriaR1XL-fZWX9&!4=PRm(SxR2{@<3t z(Ql6?1hCYBm@Z}tDr7eR9Adl1Q1=wAf&9yV^=B{s>p%Sci@*7szkcx{LbkL_2PD;P z=e>&ZKQuF^&0rF8YCU*vOe5Zb*$HW<{#-P8wtvfZXx(Lbesece(Kk5g1}DQf^p`bb zU{BnnykH*B_AB(0u1qpPPjHq7m7|-hLp!B<E-l!|m6sS748gE+r6wQGC^hk&G8J5h z`o{lxe&`<$;PhLE36kWulz?7(k@Ec@UpKdGC_nhe>5@G*@U_lcz%5s#%j|l%>^?U= zOUsan4-F)is~n8OKS2h+XJtIFgK^iig%|r(LZe9cy<32n%Mkaj?X&lFl~W+7{oXW8 z`St5V#+!Uv2KS|a!tAcbLFRpHvR!5$3Y1>IZuY1VwC9{8*cucvKO(|wuwuf1#_X@> zt03js=-s4rWHa8%%P}3LEYsj#cC<Vf9&~3!+<+0UV>wm6oDCk&h&5rxb9w2TywGx0 zOmzVrXePjNPqOTC<rJ5C5X&{#oba&$Hb?d{l*F#XH(9}3QP)TRC(pqpSa5`i?#ct7 zw83-VF}>4Ghd^R*h6~<gJzGBI;Tpo_{`Jpj=@!Vz0KFOhRWDX<Me&)&1nwOgR3Jym zZ|cnCjL)8(pykLw&WrYqB68611atfW+Htr+%SHE<a-M^;GTFlQL|$}WaLD24Xt|Ye zk)F#W<1O!e-Gvnl_&c+jOV&|QU|z6NBlPaE@8{N_`aHxtOGgVr-WMqR`H$~j{8^pc zANxcPIew^9Y6Bkc_Gn<XbjgfJ9b5M8a|3)uciZ{(O*Xf8L~9VN;xOBb$cO6q+oDV} zXPZ^DG_2=)f3mU~UGPqDNpF=Bg!74lu54G`6vT&M)!61o5oLgU_*2#F=<dGnuzEk3 z;|*q2eg4Lh)lZML(vp+;mpUBm#4foG^a#Gtq~3gKl?ThPahJ`i_?AQvGGTmyny5LM zR%~?XP)5RJf7yfcRR?=C`q=u>@3E)pyi)X>ds)4mo}<ys?%BAGWDbqfDjw!k%O3$? z9L(8umG;bPD1Yc<zv~c$d#hE_(?;bRxCqpOJ>42JT)=w2bR+laz&l#r#Y&*brr@># zjF$}{_;!=B$`}YdGPO*Wu6pOztlW>;j3tce`=LRUZ_j78^3$get5bZd4W%rf7w8mD zzj)cq>GNkhE~l^Bc1!Z7k6Vzj4X7Hd*|Ot;Wb$Ey4sy_;#W%mNQ|m_$I!T^yX>;^_ zYCngce(IgRp7}J<JF5`V14;8Y8;p%Nf%ikt-ZT)Rlj?q}hQfOWMUoGD2@bw(vV>l~ zLFcmM(yBkn&jwxI5hg>yETvlUV1RYszpeaJc{PZ9mv+WRE%-UBkhDAfQc~6Ml-;vn zIQP`f%%ewK6u;`s*)%M>E)N=6o0cS#?Y=q`EOC-|6|<h3 &%S+R0Ln-4cD1*(X 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%0D|Am9vHhjO5 z_jPli)YbL$7v9TtdHl=glbn#e&+6?d6U%<H{s3BP{fWb;{7$RekUc2Qm0!0kA08bs zIZ>Ygdh_-r_0IQpIVqi$_&uKG4v?J4uv|Kb(uTfru+2bRGkKcx4xb%zJF|mh54du| zTNv9mS0HO52Rpiik3F&lmonz=1=FMho8h#c^~^d|^)&XzHX1vy`YCUeA;Z|d%dz$r zrphdS@*Ja+v4JrWmpn^IcxXeT{^akUD3zDO`X{6kq;0@g9-VM*&CftlOp~~$MG0Pt zM&u#^x$h~jUwNncigxUhNrV6X-~Vm;!j88C-itnCmjc+apMygrPrGVa3TYy&>l#-( zQM$uB&shqThfR5C*wxJi?*N~XCrtg&1o>>rZV@L_%oE<n7C)b0Qw=jf9jwITd1M*Y zo~00_h_vtqGxmdK-lIkqvuBQ5cw&~lv`yG>i7!?0;1SD03(m>Uq7B@rmz6i@4Fo80 z=5PIq@7e}(+SY0sARH7cIRYobxG)fZ<eO3L{%}QCAaNv!ZQ>%w2v^MSuO^4z?~@iW z&yi^P+Ft;V0J=vW{eQ-_e9zGckC6~L{(tZielFW{@)}3oT)=tXI99N@SzMQ%%wU+f zBD~_QM8)<`Kmke~3Oi(M8(Zkit(5;kt17&)<(mG27XfuJ-iBSbq*r0%TUXN!2WAip zZ7%wjtxj)W{H8f?=$cjyAgm0=lxtl&t~#a?=N~3k)C~3jj~EzS->ch4B$ar1r;*{B zysAo9T*{UzF28=5N;@6Twug-hf-H4VNAIOs9S7-kWmd?Ne+k$8+VAxCm-tIu<K!7# z4Dd@Mgx`44*LZ=Mu|tTY#Twel#xJPEAZyvv&I<46(tvK!kh)s&nJr}>KmMA*?hUKC zzIXS))};qKJ<J5h-jKI!$xB<taieHuhhevo6vidl;H&Lz@Nu~;02hIdR=>7!>^gAd zr4CJ_S6-4l62vv@O4kM+EV^Qv7`v2B+Ma<jNk-unPSLS>v<%)GmXT0?cRBY9yyOC8 zq-7dV0*W(S#0dO|n589#du=|%8GMRNo@)S=45hE(rYU}h^~GA2QSVJRu0&GjW*_~D zS2O=QUNRvy{PE~ZdfTucoJ*X-kh(CPukzRReW!Wf<w?v19pib(M_*#QU21uJV44SZ z0$Os*fp(X+ZAjB|U}MKC-Fyv9inNtoY~g#5Rq{zzJ1lhoEO14&(pnc1prtIuF)&n` z)}?ioM&mS3ah1(`!wn;xN~dfiudAXP)ME#o^jmZIiK{<ueXGeBY>jUBtny?9+&arC zs~JoXZ^t#?)F$lqXIFw;eN;%(><r7(*X{DYFK~9!++OGVfOjkjUh%EZT{`-9bX<)) zpu@ezfcKWq#BA=-8GpkTOm%d!jKhe|Imy|Tje}i;u~*07BpMP2XSCwa2>7bM>Z`VL z8EqcMNB4vS0}gGzD}D4Gu}|q{8Pa8v5~QLx>}ote<Lo4=XUdijF#a>(agc*BIXF@% z+fV6JMr<>E?@v4V910C>P5zk6(yjrexixr8c$A^y4Nu|%L6S1~BUrq|GYp@iQgn!l z+|dAd4JKa2550m(7<r_qT2g~lWRtUlUSDZ>KreOi`<mvVpN86CM}Ql7A3SxLlbClL z>A50^?`Lc_F?0ql)EQSdUG2SQl<WZSjFY82c<Sdb=L~RJ$>p1`AI`3(W6H!8a2^_# z6=irSo%JeqA-*hE`YEe<x=!8-xlRQ)F7I2W5?Drjo)AB5Py?1>L-Ho}lrFzK(`5y} zWV5*Br<Thv_J>c(mT(Sm-S%((lGoY^n0zmlla+TF)Nbz`=F>s0;_e>unJu;}-?P&9 zk%=F-y8h+Ayva7?FP}f<-P(Wo{{8fk&(fS8f1UO@soZQkW<Z?h>$E@p_Unh~BL`5u zeDyMiPMtESa-i$?bKTPHR}g$B_bsm+S?}-3CqE_Rb3B7n^4qZW#X<2l+nYUI-9ef< z?lWm+yK((+9T*2%zHjT`Y!iDqSoW2JJMW<*5Bm^4XVWHQe+PBug9P)LER{%A8~MY% z19XVR{_+iY@J5{!XE?Jmbu$uHyD7ZIqM@J|Tcv#`O?2Z1;oM6j@ZqD3Ma#raGyi=5 zH!G9^Q*JDS7Koa_uxyO-!WMrI{JJ>hySYpf_=%_Ae)}!?>1U)eRRe0;O7*oITCkw0 zv+Sg;u-%kqO~GdOgm>Ch+q&w0#rwbJANw1KGZp&eg@?m!^C>swy`lbPvQ8EltyXiP zVLd{Q*vu<BRzEQkajQ<0T_z;_8%BzKm2)w$B^;XppzVvIe$fg2*wpf1K9;?$Pfi|y zTzMw{U_l38{_2S*Wg}7-J1u!aoK1{;eU3{mW)x_})j*fXPLo-Og_RMq42H%K=GSrh ztIl*?`*k<)`UYRr(9&N4?)Vvaf~#<=>3`<FS+(eW-?-{zAyByI^lRN4er}^VeCTqC z53uFAU3geqaf@^UZIepjUi>iVaKSVwasAEjt65maNy~J3S}2=i+0p`6>8V8Aq!AHm z=9-UDk`Pz8lvNW4l4Us+6v5@BaK&f%OZL{u;ECQeBi`&@0xf6zft9qhp%<OFsmd|< zkgmavE86v-5~<{~Vc-vZx7Sn$wP;CKJyJ0Nun|c{B#fe@yFyX6B+P?Cmxm&Lt7y6p zI%RMc6o9ntF_nyQNt+dnlDE<VFfPWgy4FL!ji<~uW;z=x8zi0Sa}sv=lHVf_%nUiq zX}ZNJohlmS`+L?s=$!aaJK=$R%<S?<9=xCUmftxi3tq6Qd&fzSj~qhfmKgd!X;@_% z^F<1%MV`u&`h12BSl)6PIw)&^BVUE8!K?7|*S1gl@+pl<ciGOZI)_6-fQqhV(g%XJ z(FvEqCbxv@&q|r{{e<Eu&!!cv(xV6)j_RRFSo+kp)-}`t2rmrgU;UR~6vwrr@RiRz zB3St+2)xwEj@&ZANXoLZ3qVpmW<}sOw3cB*%GUD5enSCycAHTTEXkEF$zNGKaj|e> zN=_|Vt_F#vZ)9Gim~M<hV5<0qC;8x;Gz65dL47}SA-F(_oEFV{qdKlZhOM>5QZENR z(xKxK>ke{6*rB0xKnMb%9k0sxps652nG&D-5_8Dka)%aB__3Q9!s087HuYXXyieQ= z$9tW1evu}u?NRa?t0AWc<G6yjL1)^*r5T@2GWB_vck9-fEx%`FpjbH=Y#rgBat?23 zuCWrk!K#m3Z|?YZBd5YDcWjjb0tplhKPzSj(1UFp+&TEoduc9a+;8&E8ocgVy`@8a zMVqm)amxXBY?-{hM3%kj^>=^6?sOva$qZJ5FOC@q@!leg_c+LkH49{=`$cEX2~2I| z?h>t?Z+rrm_XJaFl$JDXBu#b9fRxw`?SiWJ(umE5?Fl=8&vU`@fsS(<=bpH9wzP|X z8Bmp6k!1|9*0v}s?)q`dr|qb+I>Ug|%C_Cow&R;hWt?@CfBE<q4HVptpM1$vB{e?j z<`-=2>_txHPa+Y(`%4|Lal?gPe6W*T<vMLWeA2Z|1xGGz1BTz6bytrg*0hbtn=Qo1 zL^pd{cR<S^cbApIbUvBb*rcqfem10%R~sCNv(BW61I1hJFZr>6JAGzb@&`^<{=`7{ z7Y4dN9bZj9GsykIK;gnI^$2{+#Eb6&qgoE1a@Rlzp};zWvUG|`v^}wI!tENB002M$ zNkl<Z+P-eB(eZ~zw$ExQaI`7PpuKX8fy!v~eL7peT{UySYTl$X4tNIU;Cs3=1_+4- zElAq`(Jq!TZRX_3BP;mky91mJw(9R3yq$Jg#a&~?c75*^+xB1c86O6&n|sq|21XZ` z*V9`*0i<jnKm0nqIy#*G^8W2~al%257pHtah|l_=>sJpnVnB7oYOUq`3%jb6Z=cDd z`m~a#@^Uy8KkKb!>j+vq;H$dfgFSME@@PqNkZVEkiwV}t4OVb(u(yLKX=oD<Rk}hx zKY_IA;Z^XLma6+p#lo}v`Lj=S$Kcm~j}sl*(>my3T^7Jh^k_$jq&^Y04ZC-HK!}Rd zKgzn%-0Qqr#*DPqCyfh~aY;y=0!kCq^jp%bd1u^+7sq}AoB$7#_^Dxn@|TUq!lP5k zicZ{H&!v?(WV64t!TlxgN&8yH1^uF**|L1Y<euf|^qei>*x`bmZyU6Ob#NE2XQZsw z#KAgkqIv80aUH0x(Qd;9HcTS0wcGahmVCNkVPTE9E$sWqxeAZu*WJTj`h0u4FQ$W| zSJW}uS0*vD{aE>dPoEFEH}1AUrsTbQjhRfc4bj9}Beql@CODF3=$g7E&~V+)ECFpL zbmoV!RY$sSiePEGU>&{!TW2jR9$J@*T}6ZV%J<64Pz-HXmpe`#$!SqXtmQEiDvGh< zuxg`LipX=P@TwNY@ioNIsKVT~Yg}<=V4WO)PEVM|k*?(id!T5c3~zxita1AO{uvh< zO$4IND?S&K7GZ9bDY_F+d5`mcA!~q__XY9v+OQqlI(sj_{&l(}jnfx5ECx^Q)Iu-v zX26@Y$ov_6@eh?Jatp64R@ls37080OftKB*dDt{@lW&W(B4B*v=9coDu!Ye$3w#_f zy2K55@8`JluxY8RAS~iBgpF|;FKI)k(y9>>$HHZUQk@)ta5iE<Cgi=hiBp-TVZ03v z1g*-!l$VWO?xiVARXiC7CW_0}2F8kCGD=5fOV&V!wrq4sui%qw@&-mW3^pFmxzHp* zjdXPnFXT_h&>jZP>!LwG?sTlId}3xiUNdEGRphZ1yP4(z6`y|lIDP%f`*S?>PR>s_ zgoFl`hW3ue*G`3>ji3igIOc>mWFf6}Vng*e3LEG$18$!MK-KE_O0!eN!;uHF<z}D; zZ+@BUYrHhtj_o&mY!drdOlU&DoE=#+{GzeI2gVX$#quHO13D@+bM0su3lU`~`m0%G za(F_6XGq}0k-t(D`k<BAX3!dlGmKG$B3DDjmxr?IBx|s7yd}K2C4CVlP3OHXvMg8? zy~qlH&nCe-zslyb0T*dL7@cehU|k}Y_M=qEV#HcE3QqcSJYj_@=%AE32^!xityA03 z@-`GHwBnVA=uk>81+?m{dRIPhpBv?p&hlQ0)+GyMCX$5HP{KH<M4q;ZcD8&E#$cAL zKu9EX^`$v?@=H3hEogyT9SvEv&V|+Y>JocF)4ofb^bsM0U3FJNJL|q(n~AF-6Eq#L zS}51j=@F7nFgk5A5Ovk=iUWc+soS0&>!8a+Wpa9GROABnduZN5%YmYwQOW8ru=jip z#=~-y<AKiX)jFRQa)E<&y35O}yk~gy_>xttlWG42TRFGbVo4kGK<93q)!r|^{xF@g zjq`zlmMg=WK>JFsROPCzO(0%Pw^&uwettLAF1<R$0<<Zvy5755K?Uviz3iMj;Ozly za3R}yptRcBpD^5|ZS>x90%UkE;B6C>5&nXQ9`v1L@cE&WzpG%%C4L43(o$}4kS2KP zFb++lBhX^hv&lR~c5%cVvP2GniW~vyd-dlP7g)=#WsU6D$37dDWr|7aP-JHHmb|}r zn=!V#L8n{vxMOtfH*D`I6Y8Xe^UvVk0ao4}q|@J7Bim~_<)6vRPri?PaX)=zp!@6P zUHo6Zo-u)XF~xFByG5IZ@L!3N^GGFyL@*VYNkeYQ!`kw@%=Rm*3b_P4rrJ&wL< z7r=@B+F+C$f|d~{r&Gisl8(4GLq}`3HeCZo`-z_c8-Z=>O(KX#jyqOO&67>)gWK~r z_FqnGyPTTL;cG{{C+qjCA1LG7#9y$(;h1OYYX-S~F6c9#ps`FH9vw{AOay)X{E>kZ zE3NE&IOhzEJ65@0a=?@@pT4lwnTm9D_<}*r4WF<1I32?8Z-4z;wkZ1z*LUyUWSjCe zHs7VJ9dORZE(*FTxW%B>L#6x-px@v1FgXu8x@D5-kV&OoXnFXR&wf{G^L=avNtWR~ z>Y<tKO0I38WyOgt>yf7}YYv~?;#npfFj*e9_*#Pl;Pgq@hVHXJ{aN(kKQ^xVRAF)t zN>!%;g_L3GlfNJsO1%kG!4Zs08%_S3W7;bY&)S#zIQ*~(RpOO{cyaPfr=3fkwJZUc zXTS7-aUd9~*aJh5UpLd)@i_;9T};3H^b0%QK4**hITLlRWZyWsVExAy;cw$iysOT! z0d$S`AV7B}_#S+fPj(4te{OHhEAnWQa%!22B$P9^_O5L(naM;7mL~t5h@>o&=bSZI zE(XS;Fk>%E$~O!tk5W-z^%r!somQw3=j2k!jI8j6xEO_?9zJwHPF>V0;6j=>F2X7- z^3-#aXxkOyG@W4PkD%3$s(ZzS12@`UQf2pu7<l5jv4jZFt%J97mx1m)VjhlsL_~<; z8>f>|(!()P3%HJIzfzZU6ui?Gv?FBE94r<vjjz9oH&6R#!_t<wzZ5!UBC>UEUp~gq z{kmJZ4*U=#DVb*62+!%s)1R*WmdEmAWLS<waYyvRCgKjU;s<oV3EcO>B|P9Q^ofIL z%HoJ`-HmH!Fh4Go*_5!tDQQzt8s54v5S6!WW>i497;l|PTp|mu2XxZYHEzjNh211Y zw}NydX6H+qx>QE|3=DxwC24_-kG=!mc<2a2^TAEQN75LeIyb3EG62?wP-e;$-&?|h z>t_H-Bi6F{!0r{^ZZMip!x*pY``mCT*-O4o7sg-oYrx@$PSg;mjF`@u^nH+HID;ms zQ*{)$VFq2<-P)ph%==*vS7w-9KX;27jVuXn%eiEh*M=@_9(-fB6aa3dJ!FY}2)AF+ zHmYTte$UO0f#?m_HYh!{a}*j>|D4zM6nc&io62Q`l&TL_S43*1OPeZvHR#$XdSbA^ zj68|~ftow{eJeRT1EADu2v;(dZdKOBClB~r5SlX}TxrV8PkuAAD0Q3x<2x-(r7c~$ z20qxt6$F?>bJMcvm)%1x;U~6~dGPfuhu)SR4VQ8inBr5E<OnQ(rh}HNIDt|I{`!8A zKH!^D$17t7fZ&BPbPVW8sjuM&tbXhqehZN3C#-F4uq=m$sLVwRnx$l9%YYy}02y>+ zuRL;VuoR;x4C$?tFj8(8To`m+cpASbrHKyx;1|>rd#jJ)hS!i4FjsJs&(vq@Z8{fe z52RhXJy5sZx@=#imF12bXVCS{S9}Y<?E*U5CiJ_y4w%<i$;-+uov@5HY-8xmZgEnx z@9eFwI~fKaF#X>41=}f)b`Elq^9ie22R8?F@(+0r(NA*RPj7jL_weZZtom&|u+4Js z3vCWtGFhRxV+V*^CtWqmfCRa$GxobxA?><$@P|?<9~o>aJK~8%9<0;WWne~u5T@)| z9caTg0S<z@Qzt!L+Bw3p5uLxJr#`@&jx5($O}Nm3zHM+i@7N?lVn+u7nOJ~UVJMaL zk}IsFZ@KVSD`CbAz0^$^0MvgnFvx>>=&BB+gO;qc<7`m7kdSy|((&e2nPWp}<aBZJ zU0*y;PQGG!^_(;(Kz7jifP-<4q{)i!+9RukPH<q?eO57VnWVTTP5GHq$bibtJEv?_ z{+XrRpU<wRUl<g8IA_qyM93%d{R8jh9<%lHmORxaw!{AJeaOJCI?>8cz94Ux(^`>N zXB6gN#l~IPNn2Gy(hRG!wy{iFJ2Ge{HRZ?2TH&>k_R*KF`H_HiLOCK<Y*wpf<~4(V zeyJlIIJI-Yr})^CKe2*)z$b+Ktd?c#fHHoE-XDJbjk3Evy*xbP`RbO`b5?VY;P*J4 zuxrYCV>xm~^@73d8m|v+vhwHP`1tf>dco?Qf}9X`u<AJ)PVD$Op;s>sr<a_maZA17 zT=nVYckpKr>Su`Vh}+{mUhQQ0*&^&9^np6;smR$KLE0tnn)>>XyD5~z!R$6N`2KU9 zuuR?%w%n#nW1~$5Tn+-Yv!B(n{ND3gldIcx<_806-WAqXF{0%T8MLXE*U8IY2A24h z0RSWoI}0xi_u>|;rMX~C2n=PF0RMxY>ENZ#NCSLjFZy^oa8tjC);<9u&ep*)Q1w~9 z<nqw_nhCpW+A_C%n>T;|@h84W@nt$CU#?lj)n3{_PMK7T<W=6Hg)*k!6-Kb3-XNzo z+hpg>Hf^bb`8lCmCLXlkhGm%F1G^WTJg_h2Aoq$o=ETRItNs^<ydLlcre&`TB&kn* z4oj&=J%f(zi<3%`$0kDl+EydrM|gw&k!DCQ&xZ;iqH$2dueK+x?1(3yt+=?fo8Zcm z%NQqvJMt+&T*@}yiD!8z{K{|fO5QYS$}k`k7?(dB=t|EDX~QRav6-Vk4Hx^Tar3+9 z(&u#5Uw*phU@N7r|0sP9`&>9|2Cv~oM`5L{y&6V4ct7mBAUAB9dtp~)n&S%;8pH2< z{l?Sp@RRruTBcEc3U0(V@8CB9B2z&JO<_`?##OM2lN0n%&WbgU^Csj5aFf=LO+*wy zZz%UITNO;<8EzVeVY_e{G(n^b^CDpuFfE0gIKvIwel#8NkqbD*>k1~RIetB$s^aDp zIf424z$?9qN9aS>G#gOC)FTy^PD>4vB<{bsaw-|Mt@t)@;Vm7U;qVx6hC?r@%S*?n z@xw^1tG++e6Am3~to&@Le1H@k%T3c(R-JhMT35rm%#@NZo}_BI$+vc$F<fWcA@@G) zKuibOj)ISMTItZS;DrkOqGnw}xA_&D!F$-oG(k<%&qEWe(ogh~Erg!A%<W*Z_c|N) zr+Hs(nrTwBvtmZJ?nq@)T;wHGq_A~#)8@b|D&mrdyh^u0VCI3f;GsOiD#23jnam-g z{7YGyRK=JJmIGs@yyAWrG17@|=<ME@)xFT=GRzja#OktZxbjH-i$P|()xop?ln&Kt z9B`dLdhr(iseqvu-pjHq!Ic(iVGT=M*jZ-$%fqqgCoHcS3m?>dU*!uN`31LlMz_c~ zXbu|bjLmf<zROCND?2>N_>uXt&Tm#m+GZpzT*?<X?ayH{^9_+jCtEwtbehA44Qc84 zsi=0rPiKz$WxJCjd=j>;a*$OWF1Nka2%iqW0}O2C`?qV<{d+zg;z2^T8@qIb{dC3J znspzW0V^w4wOqNf-rKo#ODipk3E;ABkQGZ-7{G-b9eGY^=k(aa2Rg$U1hbuw6_1T| z&H!Nh<vFM9?lO>dg=>x7B3GxsPWv3%<BPjDH>cAhr<p!((k_8(2U?Rj^!A$e6$RAY zKkbSnqg}E?NSIE%b;mMc*>-Dd?2pv7b|^)$p~#@vd~lmyS~(+ePFe;6z3IPZk|6NJ z_Q~nKw`rE8{s818XJ|-SbJ3}FpkN2h&Rygs$$D9G)w80X89;@%7xhzG^@vMZ2G_D= z!EPrUah3<6O)nX^ng*=UP3N8l&KM^|svcnxa2z<@Vy6pi?<Xub_{Q<}=EJl{hkAz< z$tx!r9{7xu4J5km@~X=w2TbKHPX=>#^0&#aYgP)sp50HsU93$%pWIIW@!R?I3#(tp ztnME367I39VwNp__i0N@{(hfYwPJhh<N(7?_>ef05(yKhzWxZIW9gZ}3^;LQe)J~I zvhAwBw$Y_cb0RQzTrBfRuq^Q>UF@di%`?k~-;K}2j^C4oo_V-NdER6j={f`4twY|; zeZfjDgO&^4!+qoXvV?!+^FY1=@czv^2A}5)R*$IzzC*vpfkt1k=^b1Ax28*0W-s|% z(Doq*S^52X!Y3R?Bu~rAmlFoL*z0>vXWk|K!-wB8!Q{b_mTw1NuU;PJU0nyjcht8% zR&!I&IgWiFp1#k^gFS<!9R^jd0AJi+#0s9yY+L6x+->OZdQv+BW&0K$3YPk&-L(mR z+63#pVe-DVaGRI5MYJE8c)~`S93sMTA+NM)WnVHV;gK(RDVrmq>MQ_Y^x()EmhvwO z#Dq^9D6aVnag)+s$SC}*5jxu}ycU9>VtFf0Im-+3N*jB-RoPYQd&>0<yAb@mlh3|m zwv&Hlkb81`%7lY&mqWvHV}Lfr@+M7RDIxokN3lT|k%liFCH16v-<h_pbiu&``g}d) z(Md&?BDAUP_gV(K4tSYZfYTk5oUdp%H*YyC^!QgMB9&Wa=tZ8y_}Uy;>wDQtU2P|U zWoM6;NghRT*u^#qDV7ZvL0l#p@S~%+B&b6SO2EI^4PwbR>4+?U!os64<SWkSnD*#H zx@><dN%#;3775VDNxPiEW7~xq(rj^+K=+3OUFi*R6yqN{VOAN;kve@2)8X)0;n!(% z8virG;RT_&POH2+tz~Xs{;>-P##zzHpM{$R7jXu}c>>Q3`H{%+sCoh)94-MFa2*#y z#?4&wO@V`1-_Jk@S~!szp;K4@vRvr8@F-IX6mgL+X+o4M{JsOv`oV4ZaS6UO1mr$? z<5N!K`raGm5Xd^F6UKDosxmC;89R5vRmGuD!_3CM2XVrs(HIC7E}EUz>H4WeB*<F( z<q^nDIt@c$;iR8Vi#WoQCQcd&;;ON&PL_(8F73AMst;;hWB^~+a^+@rF~0E|u3_8P z=;4V_i!E@F%>z8-i%0IUSL>%vb|li^3>s#M4Y_#(RqmYWqxsBqYuQ0t+0mdi0@nuD zCQ?Y9%^)@)-9IU`?SyMxDlB|8Y=#WaoiMUl=s8bZ3D04|L;eZ`NplNQb#D~m6v2c| z#mUFO;McrS1bd-;^eNoX6$fW{0n5F#SDn@oZVub>>POy4Q8oh<S68JgJL*egS+2rN z`~|dlt8SiJ!l`GfUfmA5C7)%zWzw%QQfVEpyaN?xO1E@NS?96K^lycFfLyj9e`Zvh zTT^VCNXxQY58Gj%6$aXT;Rt&xWb-Lqii13>E#jU!Ag<}^-M_jg9Rn<EC7i8?kzrt> zfx_1pf9}Fp_?a^<ZH@7E0zwbG8ESY8oXC`nL?6LG>o&~6fORn2NLgWXyPI*2uI!-M z;kjp(PI#MW^ZAZdA-{dg{$mEZ?CD@Yw!;=iPiyvldKV(If=0c+%d>=bflk;Cp9<Py zrRmHSQ&u;8IQV%B+nIc32*K_d46SdnHIGi%IV-!a_U!GyfR!r{chd{L75e4lC*D~+ znf~PstGc&u>Cm&4lNB+#gsgb+t=|V$nBbjv%rX##AE#f@cVsQ2Y;8_z)!3V4S349- z-EvSKw0cr1u(7cQt#WKf-LUyDAv;{!(GH-t*G}e#G<)?fxEL`VFR+sr!2ABLWz%k> zWc4lQC8770tF)Gp*@3O}(>~)b<Rhd$>Xi$0-7ZgT=+$J8a)Tj|m+(<1@w_J<8V>l4 zNo)xU4ZFuenZfE|xe%OAvnklZ0k0BoQzp)kZP!myF;Ml4-VN~gnb`2v*o|!lSAHH! zJ%HKd{m?D9tdqwdPkbNuZu;@d&GZZJYkxeun@*v93h7H&KQcg4#yg%Vkvz6>fHd^C z%t6;}>&mH8XoM}`?T`CdMLmJzHuTbo791Qg3K`!_i9x`mjEa+YfJ2^qQ3t`nafRP9 zW^Ps;lsKzwu1-F%qRqsI->QD}(^}g{(>ep(^+Vpx<y*O~<eu>Ev7Zgv<x@T%I7I3T zTU-D3*S~Vg@*am#eS|lk-{O-%uA-hY(0y^ZpNXPV>eB=D@dfY5`flh~R(e(K5IXL% zy1u%d-o0mAGzVK9a~PEigKzoHu9L-|K5<YLgWR`oIpm6ZeZ%R@FQ}{g3|_DNL=h`} zFWDxoyQY4r-9D?rp0MmG>91bD&Z)}|a;;&TY>l<wcZUEDz^p47Y>{fam2Jt$m@xNF ziW}ZwRZ`pDuyVh_xd6T@QF&sHb#53gn_4WB7uwXu$rR#Db>~gWG4#?8Oc^GP{L6$! z@(Up0k(KN!M5BZ;VO*^y>hQq8uHs1=F7=3TwZY&~zOsc^NQ4l>2GLI{y3PE8_ouJf zk>Di78MgIMF!gs*&~J(>v%)|IIw?iyV~Zf|QC@+dxq>GmM}V@Wm>%$VeSHyF_0FpS z?5236ZQtUMuq_TeTW7T$W0OzY)2qWn4v9OSeq#dW3Ogt>%y7fb-eSA7lghxK+o;p` zqZSEo8<*ER5Zc`xfdQxTNlN6C6q7mBycpCPsYCXmv+eaGZNMX)NNMPjWE%xeCf)~b zwR6amj0cB!VN=JYDjdJG$x4#+p@(TJ?so%SK@?#QTOtu>S`v#&!onIqewFga*BObS zZqcP~U=(oirTM?gwY<{raE!=J`^{T%bnPcRZX&8UL`tV=38U*c18q0$Dtz0n;ReYi zjxd9U<uZk44kY5tg(mlAc=Iq>8FY;*-*lpAAkqOLErlk&kV{y@p#_e<uJMCIh8bT4 zy6`I93QGe2t!K;B_xdesHDblXu!X#SHgrqA6<Xf6+{UD0z+@iR@XE5}OJxI28^jHq zIbJGZ8*C7n(>H7b+&GaHxIA3(ks|VlI)^bVp75P!oU%0iBs_CzoH<^DHLkSGCV8lE zaFo@SUY`7H7y{S6GNqwGR_vr%7WOiaWTL4Q88SXVY4s|>Jf>0XJR${r0D*VlQOVxJ zbJ$DX%GEz{e4l4-Pvdl*N0C?E_^rCuJ-V(WF5=XcwB+k7Z&X4URr2D)C;gofZdseZ zU~Y|<QcSE}hEp_kFIXT@Tm3ahi)~zog<aUWi9mOOue3ht@Z$(ZAER)_dY_KuD9gr; zWI^IOu5>p_2nAP3{zJFqQoj0$Wn9@@U$>OM?u{-;uiDrSVi{#FYmm8!C1m>@-@c`{ z(+nwd=m1aygTgm{p00c?oBp@l6FtZrd1Y{{p7|3K+7Kz*TeeAA=-=`znJnZRbxx_J zRWd?O+5CfM>SZ_pBhBzx(h7ItO!HT?@#)apwp0hD@}=noMq1*?E-VYzwA5+pmr~dv zBMMuh7XwTB;-cl3Hi%BFolkRcop&+qSZf~#$(5~D?mh5k16nCO*oTcCS#9tD9EL#X z$)J#UJ7x0HMHU7^xA$z9<OJ9?Rs>IYANQ64!fQIxx4i#*!3vV^GrBF)PX6Wn!L<A8 zXxjSxa=JR<{lUFAtZ4E6;Mr$ZLh1Ok3MhG3O1Bv}FYBaA`LFG?y`67tfMTxAr7Srr z)(**EVYua@udcyCn+NK9wN2O!y-E+_VmNT@#52f;8qgw_eWNs&<RkK#Mv@XGF8R;B z^s-`%@0keZvuWWek)+p7Aj6F(qcp?HCzx%#c>#=niYGUJ364AUs^|VP7PR4j^#(zu zx@pIhn`-h1Yb(+$6Ic8$?^tyt<~6Ta*=cuTS@fyVC~W!M$gz`X+}<<#bo@Hnv#B zV+Gg)mp-1H*I<`H-)Ba)=dAu-As2n%<c$ke4yaQS)meFxkMh@w#vvg=S9k3|`>mtO zKT9vTB-ScVERKC3ZeuJi>6H%-IE(`wdj2Iph+7Q6?36PAs?V%A$T7b(SlJn)fJI$k zFy{Az*{Dliv-810E?br--pSoKdc#Y+M|@|P6b_|2<bB#>K0ou7Q<V=7nLu)Kh?QKw zjp_i?)z8zDQ?|R_PB+-@^5kqf!_Iym*Y6b{Gl05ci}N7|Svjb@x#qjOyZan6#XIh- z{GRb1uiKS9tSaAbMXJ{?UQ+hgr*l?*cX#U3LPVz>*konbcS5fjT)V>inokG%t=?<4 z$NGsPC%Ag@#dyn*TX8Lq^-XBo1t+_02N;wRe@l7Te5eTv+ku?a%sZyOp5(iux=mJw zExRIGChMJQCNw03aOQvI4>^;l5f>EgUasmyN<C!)921h&##P>$ue#*1d6#<tQ?Bq} zAf6m*@<^VB0|KUjBAeYX#H3C`$2P!E3f(eEaLsD@8LPVIuI}=?;y#mP5OQL`ftq&n z&pv?V()yq8Kc^q2gh+uf+EKmJr-GlKg}P+&A&1#fR#H|YF|t8pgGq<2ZQ540jX$n! zXL91;kbLB`Mo!R`0!4FSGx?}HZ4@c710Fs)QHLxu($+SyxH2cxv<3O@I|<Z}<e##j zCnF0JqnGWN;L*Xf+?Q^Z2W5w9?_eS#@)+{c`R1)nlPTIIPB`My785UT{;Rzzh{g4H z1KmNwypT^W5=+?I4vaM68pos#oBS=eLLxZQ6?e|-TloKMeE2|QRo2Kg7w#EGk#iOC z891Yw&nn&6j70K$VOQa8qUWyJv~4VG5?vMX$vroH-+t54x8U@{(t8VG>(ubJ{T3<- zr5ucelDqLuEEuj&Ty-9Zn&CA-Xm|szd=r$;a1}?xr*Vc8XYSG{5h<T$(t5RS!W-`U z*3tNeHLQX?2<u8^r!N%>A$@o%Nh-PYkj01ITqJpzcbU=Bc--5Wdcucv;glKj3)ehb z&PBpX!1Ot6!z*hV3DR|5+b)4eoLJJrgDy{K2#q`@4fL`XIDxZKE6o!xjIvjwRd|xn z7V=PadDsE5-&Gxt0Y{Sf{9`L^z?BI37}nLt=__A}PMYay9AmdGdjbE)7x_s?855q# z5=oSaI4G&9d7fzHH<%xn;W|#)R-JL3Cl!|Fpn)IT;G5R4`cIwqFvjwux8$AJao=)Q zzG6S(!waC_k%VB)Mt8~#67p&to<y5c<pU0bb?YSmd0IbgtQSkll|RBYUi;$z8P~LA zZ@BTzpH6E!Z3pj#OBsw#TCngJutZpHt8P?zU8N_i_Q<~vO=(qzgiOhT93Yl`v|W|Y z!fl?~93cOPP))1pEy|?!gNDD>wd;c#r!IvQVJj7`>rQUC_@EaTu;`ul$7WBHtVmgp zsb&tQTv^Dg2ee}fnE{NtG8puI+pW|`+7)PQu5suIE3oTs$z(uh#onZ2lh3Ds!}>4L zY^`Gpp3b_u!M00JuJxcI3v%qvO5YZPXO`>oUZATYerD)~6~5bB1`_bPrbB#s&Iz)t z2yX5&*u6ZS-qE>#`<L&h4~%{`ry~xc+Mmwh<#y(Kwl&{6ct>|n=FP4Y_}adhN3KE; zjVl|wt(u-2BC!gE<Z7>$U3QX}z-CyA4IJRx{j;O49%g9>!!Pfx;k)%%LViw3*f1nM zr$Lj+*85F6w>sjjH=U2Jt_$G6K^c;VKKIO*6daI~&aH$<t6U!Bpx^m!zU1&gmtT;> zKV?nXGHlTS-tuq0DvOZoL$4H9!GOsik-}nm2^5K<*EV5%<haz}93*zjw&WY~n>D`a z5E*wEL~XEQcj4*#{N1wEl0|g-!ffwdV*tR)<5#xLe&rqA3-a#zo)cgx3peVku9gwE zwo-N;)rB~>r~53?1X*cKo*7?t-i%2)A}MEN*0fQeY^EJdQR&j$uy%G5A=X+vhr$Ru zn3lZKR+RZiJN4*ceo4q{)jdiKbz^;dpVjPx96YtP&!mjoMp?~$U~qfJWPsn-{f<un zdBXWmKmEXJ=*INs&CBV_@oy3B_1pIuRC-#kC*^MQjod3Hb542h(*viN1<Fo`3r=9( zX4Tk1r7OS6a>&Y^b=s}ZTde50((5<vZ&^+M{=2u1Rrt)!hiq$hfUG@Sv2_r;v$qSs zJGLeB*)O*xv)X%4zHRa?-91(aQ6D;dHV{4@h-8^JUwxH9!Id>TYG^-fo3ymPgX4Q_ zd`JHIE-A^e9b>Qz(0y0e$ux&TPNvAm+=?;qEc2N-MOOZC<OhBQwZ8N!?<{MkP!g)1 znpjbRNj(XXf;W3DGnv>C7MBCv2A_(MqNT-hW&mG6puf9d{S^@(FO;Z1=I1RF559lv zw{t&!{>*A_y{mgooV+s_vwX)c;!0-3bCd7gQoO2cIZ;?P6y8rbsf>sD-NGxcbkQDe z*!Cb<CS@&uw9#wKUSetDUD4geX99ykxC<0zOYDQp5r9<bTIV-y2W(%oiGS*dpLh8K zMVLaAW@+H4gH<T2=p$pqi-TWelMXsqDneJ9q%<5!3s*S<7Ro1I%`fTU<(a39XlFUp z2_IPRl^a-5%7zQF3FMpI5pBq)H)w}Jprkv}XS^2$YL*=Ee{`9{8`dr8j>N&P68{%m zo3Et9i;HnB$DF0*Lf3Zba`K#v9XHe{L~%#x36B+^hG}0EK^Bf1Wtcl}Lv#418Q1ZB zFH8m~rlmj_W5KC-3zoC5!Q~Q~Tvqu3o`<FJ7See^HIBLx8p2tI8$Ztm(k%bVv1njq zgcGi9UpPeIjMEv{w1Uq~!;?aq_ZIeoH*PUlmd1z|E|ms94=FOU>F5^?fC&rR6@Ni% z$kG|pq$S^-|KJg!uhX|N@=hK#*cG$*EqEs8_ZN8!(=rUQiEHTaBB5sPN?iv)ap1O` z($U#i2FDChR-%(f+zKLQy|<)Z#EC<sFi97{$U)impEj==%S5ww0)N3^l%L`J5@|W8 zL3%pfq!r!HkIKK+yUVUPbEgiA{3I_MZWTrgv=zirU&T_lIQ8Psd(+EKzyae=r)T-D z)xOHdVa`ei!293DiTg}ike*yxm|-{Z`0LmPEpfOSz#cxJ;y1vmk3iBWJVU94i3q1k zh~PpNN9|t;mTN<06YzNu$&wiCm0G@d;B@&)z5!>t52N6Vf@^)`{WM-a^;hzepWt_X zNYk*ceJMA+C^U?}j0<@3r07&0Ds|BtdJVejpZLn?McFDU@`WS6VzaE1(H9(jU9AWa zh$6YjsM5-qRR)KRO)Ff>o;Je{{FKK&1UCssww4tfVe-QcdFWHHpM%jhsX54KyI@Cl zjn0yvr?{u`x-D^&j`yb9-{>r@XN8Q;6N80yPF;48=r&^q@UCAv(Df4<uEGJ3cH!pc zGK0c=1_GI*u0F8V(QKb)#nyK0imjM?ypOxR&C1{f-<V-=vqJ~{ib2r9{#L#TdU{NU zk@wMF@IK?o>Bavb?@hETNs=?Yo7k5G63Dfxy4ey(Gjopg{*S{mBCD6G${k4TtG@3y zx3~dR*1{oM<VX(O@XgHJ+}zy5_gGv5x5MfLLt;8^oKxf0_ZwD-$vA^ASC7>d@?c#y zU33(wkiIg7Uw--Q1p_F%f_7T%wCAEHcrq&)^uw>K#GXeEAqJifivcOR>Lm123_36w zKoXFZRS0=`PoYzmwza08vP>!vD&3AA5^kv55N}xZp2}3x<jtyPtuPO%i-v<xDOX&4 z5`!Pp5;l2OYiyhyG}1sT`x^ftmm-t2O-G)dFla5prfc`Kc#}VkNnEql)$Ov^40dmj z?L9hk3*HLbC%0M6^b=AybgmuXcx$p}doM`$6r6Jgx@W|l7|#G#x|a;lu88*{9ajh) z%&PNF7T}3Y^DTArk&MF=>1Hdl%o3i}H{BrCB!gR@&12;tmp~G&vD|d#os2uOHH^UA z(P1WmPy&{@??Fltho5?pXUo|qLCDSb;;K6l)Mr+4xA}z7#^Ja5CiFckxt9z!9R$5% zcY^P_cYHcX<U{n@+m5d|ufEHm*3bVq*<;;sTd|izy?y_Vl<&Dz>VO-U&lX=;Ews)) z<$JnU&^_g>?o%$Ka<F>LYOSA*dGqECyC1gliK3k?2CfWNkH4I7%kn8JyKkVqop0WI zG~wVm-|?m1pE^Kh;JMANj5BC@+0j!j$8smc1*^%*#v7P#IE(667S<W?t|iWks)%DH z+QGLnF~AjE^P0glTWE!G7m1T;!sU!8puWy6A^+9;;Y_*bU9L|0N4&;TiR7s(y4|5+ znyQ9XF<=9>JVXYd?4(r`V2H3`I_=UW0^!A!rRdW(Q+2EmVxlZ)2nv#wTx8@;^KSM2 z$ZGv5E4gP3dd~^Jq7J0*1cOhQNOTvA?V)`z@%>Ct+7IB!R=7(WfZKEap1D;t;@vQT zwC3c2E4tu`;CA^nK2f!?VS8GafaPX<_;%p!d2ab~xS7E$^>Ni3>HQ;pY2QN2_R@>` z(#}v1b4jReAN9zLyL-$y=6oV=2gnZi{pFKq5Q<!=6Ur%OgayxpFuMDvKY3N!gr{s9 z8-L#a5VH>8CEba#m<huQjY!V+&u|IPjOUz<FNAW&AC`)*_#4L{QGzx+4c0LKE7>Fa zir{C$F>Y>>ZyuJ{*Ye!7#F@v>@gna*)Nm8ElIphJX^WdU>^7mt<8fTWX-iw)I!xT) z8K(!63O#J&(Ag<$Ie<i2hJs3A=;yGDVy6Xq8Y}IjO+u!nTS(#Z4z0S9@OnX2+Qw<- z^xCcMujAWp-pUrn4yS}l@sqY*Tc&1yxKo)3OGT4la7?5ak>;Gf_`cMv%x0`BW3SkV zX1w77;S^{_R~85-OgN3vhV=j~ybw4~JAmU6+QI8`sfaX^18)wK28f0<sgceUXMntj zZu&F|HXzAY!fdc~5M;}2nd#@Jr3fQt;~dr6D6^EI-a;<$cB0BaAKI=Ch-|ce;pT%; zc{3lH<};r0@JfE+=Wz3Q-O5c9UgH{%O1kodyH-<xCll7W7;WNi2uK+I5i|hg*EI0@ z)57kwM$!rIe95aksgpT}gu8Lfs<^@$-*iG?dH^uENd3f(1g2Qy+OJM2z1FS4VzBMZ zM{dAq7gZq!{p6YO@p7=Um=5LyKk||M`jRy7(vtErrG!1;k7$f3F5?Pb?MwKSho)1! zN;WUG8NRe058^5}#w=x_@0U!MiSc$O{D!J8(d)>7a>DK4@)kL%Cy~&j!qKaYT7Kp& z^oVG;w!y+W8*hHIYG!$pmWx77TT<CF794V22|&^k#aQ8pOFh+wUdj_C(yi$>pz~Md zJftJKyaDIn+)H3`qbi+lJGpXq>)CqF%SHD|*Y4vghb(XCkmfQVzml4f5wLV}9o+h@ z%V-@m9T=D&w>;)zCER}dag`3&I(X--Y<RABhqHxjTxKBUw{tnq#vo~n4)6x)c!`TE zMxNVUMFDTv&bqeE3i160oqKWVfYX`3xO@*^d|qhp#bTRp?wW&J&Z}Kto}{A|&7ouF z8MR!nMg8)x3IjPPZ#s>vkz{o#^_BFqf=IqnR_KA9aOLagbgZKe-0cV^-XSu=^4zld z-f;Q34N0jVu4M6qt_eEer93Ey=oj(^D7X%^v!xo!($D96l&OR*9q?Uc0wF1srb|<Q z)e`AS&yq8r%lwu;izu{pT-c#D(R1U(2|wECo2BW*MD&<w=@F8@P%?k;$U;2wM|Yf6 zz`o^t>K*y?Vx>)3R@an+EACgw*4u*5DB~-1$4?VolD9i<CUaHRGpEW14$|@V;=?Cd zJtai82>0EZcdjxvN5G4bx@x}hCoh9jg=m)Qr$cClMZ%_jRbGXQBq^uDFS=>$<OiM1 zcVN+FDOj?m<!AJ~9LN<k>*p$4hc`G!zN2n(>D2Z<mrd=w$PLn-dwtH<VJC9__UC_M zOY70%Pk;IoW$|S3w;$gwcG&Lyl-rTd*>dc_#BbMnQIr=*sh*ph-}MZzgIXt^cDc#f z@7Q|Y{PnAstibLtsN%Cj41zoc;N@?}z<OTu`3qK*DGxv4^%S}eGQG%%q!}D@b29X$ ztsd5eQ!9%jjudP_!^wfZ-FIh~fjFzZ=S)1Qehy@nQQoOT&dNo<MAv*rcy68*dh2zh zO_^u13q9!pmq!Dfa8O??oBZG<?V@xk14}IWsNB^B<ZUVCyr}gRJj=i>$EHJ6AquMr z(jYdAOi5er>JA3(<BWb77Jk$}Xxj!tKYB)#^0Oat%|%mwib>t_mSZO(j+j(<&tTVc z)ogA+w{1`SgcI!vW#%WGY9f<1g?6~MecJ{=pGhPq)hu@hu(qWXPTE&@u&nZ(p!<7o zucq$7^9{6DSG=I?fXRn_WWBlAgtu$jMK|DFajxLTZRXIl+}uUtq|++AJCT=3XxeTN z@dE~KF40q-Od6K#98kB+Eel0v>b64UTv^};1-TFo@4oYF{`yFO?(9lI-hqXCf{HwL zs09XT!=ErDnYtPH_)QD>jCgV6%JPqk0L#R*%*xzkMOQd~L8MY7(K*!2Ey=*;Q4t+x zgqdw)p7qayI_f`--PzFg*O`~+$RvSAls__^g;h*FJMM9`;fWi->PY;)!&C~x35z{o zl0I(Xgx3f@nGt4%qih3L1&&8QfCD5b?G{$k^vh=&r7%UKL#11kCLX{yO&drX&^dqY z?zp5QIwtAy2pwpoeG%VGH%}dJ&<N`Rfp%CSt_KJW)8Rx-{KhRnM`Cy02I=w}KJb)5 z@CfV5Wrrt?5<vY@6~_3iR;4NuKzs%aHvZsrS`)njDSk#eo!;CQPyf&Gzrvfeh4t4R z-^Ptyi6dU}H8O1ntp?o&kq+{=o~m0)!iHngC(B0RXn=vW`~<d)B`I6thu_G^*F+&r z@Dma7Do*}vu;e>3#y!t-(&S+}bD4D6&%-*;Kf{NwZhz7inO_;kB)_ntH$lVJZJKQ= z5Atl8EOoxaD<4B1Ae$G%iYIC7u6!?fuW)Jn+yIO*sv7YU^gM5+u>l+Dl+IMh2!~%d zR(O?X>?LJgow)j-uV~1truc6d{j6>f*(<CaudSK$mw*x0a3)?Hk&+q5uifd+X>=J0 z-=<t45<2n`oLN5T8JLSkd0;mmmO-^8K*p_<iYI67#V)?$cpwL5KuHGQwy$WGZDQhe zm~Pt(>GjJ#c~$e^J+Rgk+<}oc@c!%sHV@K+P<V`cmQJTBEQrzDxTQs*CNBl#u!}RT zJgNV89;&2csT{88G`anFgBgA?>~!Um74#OWJ+lJ3vPC<{3Q~4?Fj!ehN1v5l2es*p z`F&fy-$-XJpSfVg=j`SLKEQKO2s3MJtxG3_RoqQFQ5m?9SI;Q2u(h~m^#cKB5Nx*H zrhLPo$nCD%Y|V7QU<Yn{n@_f|YIX_kCH2iqkgoX-t8&Yln*(>#Ov6N$;VH79_qa-L z&eag*wdVOl@ZEl=J~=S6tdL&H(e0dmBUC-%5twSelr?%laJDzAi|P(PP$WGWOU{lX z0O7AX_*K4l3<O-^v0h!7mXipiUXur4Mje#D>6-(o=rzvLs)Uly#EmkKJ``SZ13X!a zJlqB;pZ$|gwaL&D#YAwFU2Ow7N5+KY-*&*xxT!141zV79PbmX#6Fx&X>O0G9`Of4A zXEH4(-1^-nT-%uC34WpFr|ulUAr(6A<S;KF^Gqr#j69ltWj=OfU||@BsX7qQDnr6E z=(23&R&otYI>IZhQTr!+0)f_mFklc6!O$U}erI=$!M&HSkySugO=G2VlR@rNwko@Q z*<sHnpUy%#xSWU!*Qg(R=<m^|w^>=;W6-Gnyyeoh6VBA`a+C6v+xCx+QlC6ud&S`7 zlu4pJb}-zdx9|D3u664veo|%C^_&Z=cDZHwO;%jJoNA9%-h;z^(m17_TrB>}KmPAb z5_uN>V?G0Q0A2OZbEAiQI}BX8pompo2egNLm)E-NP0OCk-G{dFaci_YIjp032T<Uy z0J|OEbGWO-xmt$UC{N$#uF6xExUCyoPuRhc`d>O%1pz#1mfO`%OP<u!KWHiXsjr1D z7#^J<Vy*@TtH-9Da37=26Z8v4`h{a!^-hzn@9om}8Z^rbd;qKdCy~@cbwOpSv|PpY zf+cBM)*rYC>^=7jxDtPYKa-c#@fBp7JR%qM$J>)j&8<(?CY8zNnba6Lt{`KioHjEz z*>g<5H-)u?4gc`wz}PIpkGCyvJOw9v!Z~_EJz}TJ#^&DQ32i<pglBO`!rZ_vX;^O7 z4@atIcKoVs=t-eye(-V;A2e(aBP$rl3NV~X*I$(+wjQ&jt&@C7x6RybU1-zcmQA}Y z0cDp9u>idHZU#^+f=ZP<Rl^*;Yg%)g(>Dbw54xAE%)!bnUCUb2Iu*Bm9RPHEa;@L+ z|HMZAI?uW-7!@!EyPf*GoF3yOE(lBbIZWftX#{)#8E-koJKTn~lElW(|Af|jiqm)v zAzX(SM#H2!g-*xEhL}p#iq$y!^FkO5gePf()chrCAaq#U20w@&{&`sRMJ6zh@hTm8 zFs^gIr1^jjFkLy?mSC{3O`<7G@kw<VUOZHubvK-LXbm1(E`b@8rLQxM*^Ji&gCG6} z9UB;5rd_?8UeXcak?HuhA4N}m&cmD5gcAngkA#(ma#uQO0(Hxb4Van0EqGwcn*hV? z+}Rmynb3aaMd=x)yL@&8zm%0hh+vuTct`>S{fQ@3(>%_@DyDGf;WlXc8%MaG<#j@? zRN*9!q>IyB+J2>&WDTPwTv#<=m?}!ss{rG5FZrl&!z!+LYk%=pVa6*j?Z-0c^hPT1 z!yj_)e9mPshiy8Q&MXFgdK-Ig#wN-vn9qkMDLqK1X?2=Y8en&rG@7@^?xx@IZJSb? zrrCaN;Q|YsuYQf)iZapK$jvC>9vXNXIE^un@ARfJ0@lHe`n-%|@B>o#05Ah?>`qHK zVv9#B2WF02@d=*7_2s2Z-3njQoA|_S8RxIk3k}mAKk*ySx})iiL3J$c=*Z*X&6Y*k z;LjijY~k(9uF(5XvJNcVrfi3_bd13WooLUQuF;|LmMXuCnoEAd$1GiB=C^U_xzImi zP)n!H^NDMm!FAi5=lmR4I(u)Y&CaeJWxw(1mPwYufF~VD`p#p?AuwyuaFBS%>XL(0 zS7q0^rS+acxdYq{&OYvQ3-jlX*U)D*YUg0F#z5ef+kLm`uzLgW`N?MnuN&~dXHRIu z9A4VidVyTJl8S|nx*bcu%bK=G7$vM<x!Lw%nFlrvCLa!rVW}dJYGg^ilzVW&%cKAx znM9O`;KuXwMrqxqXBw7Fe#kf--avy(97&hnA)KtNf|v3q#`ttr38-BawkMu$F4*jz z!I#eU(3N|)K1!8Lg$L*tkCkY69I|k*Y5GYgj6m0pF!GWIdG;?IWc(|x)Di7Yg-bfU zcEMepO-C5pL8}u5p2F1apw$jA&QOygzNBYoJUUE%(}_0RXzLAOJP0Wa(IS=5kv$y9 z%Rx!Djsxp?*j(afzO4(cl%WTblw63(2yQgEDHA82UcvwjsM|V`k*l6p3{d!>5`){F zoG)is&vtsgkITf%CO0hmonb$dWtksy_STDv_MboHob9K@yAQ11@(G`V7l-*Y(5KIz zn6%+^GkpB`!`rOxy?ps1H}$&Rbc?gS-lTiZmgNn~@zxbKc=eJa2cEkOMvu9)%A0-N z((moa_sH9=$IrRBd4o>?z5VGYwk)44{_x-b3xi!&hOb!ZWd+!+#*S~U$)j#pk=^?2 zEzECTzs{$IK6BR8OP2N-h<jAwlEL#DGTh+OqYTdA+v9H5@zTu*Gdk`&CzBD%9yoV_ zSP%X5m^$SESwVZ=TT_x&+VKRZ+!RI?Q_45G9k8lfNjEsu0@5iu!TjY1JZPF{(7*$i zaB@_1Mx8KiYlXU_KIpDGPy2%YZ_q}uX3AvTMRqN?RoSxp!Y9&lOEq#!{<C6TGH}Aj zNsF}S>Mrak69?E1f)Qs1yX&i4IY#0Z@U-Eyk(cMRjj0&o__ksj_!<{bv2}TU^Jyks zoP=@f``$jce1BpaI&G*EyteQ1lJ6svzZ$TbW74B6B3t4k4+F!OZww}*C?>0fz=_i1 zu8Z<08t4hhA7Qq)HT<;-SG`MqB@1x3JE_~VF!^iKZe>$+DF@mj-#NZp9Qf8i+p;5l zan&dC_SkqLqcYYpX0F{G7a$oN`I47protNDbVeD3f*ID|@iVfMQ&Prj`}>bD57LK; z_M2asYQAF6{PJoTx?FI0be7O@3^T`T+R93|#&~5VUeZixJtEWLpTmn3S_4nGxtZvU zaIK~#UU1tcq7_bMnY&xrq+R@}r0P>EmoX3duK0&x1+{$2OXLPE-OcaZU39CVkf-Kt z&eM{jbc**W9-QC-G=I5I@pI&vdmi8E8r^bfdk!~4pWr%7xZr3L7{7J{jIf#a0gdKi zZVNln{fc`|JFujd7rqRnQ7Z^LPQGeN|CATuMri@tUTMS_hNIG^40Q_(pp8*=+=q@> znEr$q&X%2a=SN!Ic~2U%$2^ZVlnvMVHv@ejvw65~>BROi<zcwZkWTCYRskcdct%dM zHnizAp1AY8nP*M&-~0;qdrV{siI&l0+j!;uYvyt6V}IjzUYghT&*M9N!{+XW?J(^& z^RR~NIPHe*xc2)pTT+>0EZq&e3{k<Nfy<yrt~o!EU7<{c-h7B=r>WbFWm=YL>#h7( z0>&?4Dr`=x-P+BAP{A{&@<E=PVAE=NVcY!}zvHwuHB+yPx(G=JA@)gR)n7Urc24ox z{yJfk0S;$eO+(p_#vlW_>60xXK<9;lsw+C_7_p7cnKLh*GTbv{cU+iq!|D{N=UbcA zLB0%KJ3MJq=*g|nbGilohI75b%a<!Z;Sz>*ZUM)7aXO4%2(`s|!_AFtwnN|1`94@Y zr>B1Mi4`SQrRB$MfquHe^Jwe#Y~V}bTGmn~gA5j2awQx_>Q-qxn5Ie?9ZWCQan&SG z;FV9x$uj28veJrAQR#+X2WrN3r{CnnOTNsTjYrVshjz^LFv^_&f-~MUrAN9cicT=} zDnBM9PU}Q+$RHJTezsE%8f6r}=@Qy`sPrnXVZs~m$pg?8ZpKV!<lBq_(}Ne3qh8<! zgPE<}q~*C-SGd$WSDfsSGA{uw21Dwi%E+Ltcq~5c>l2X<vCd2kCHYD-JO`KD73;}Q z_yJFys(hJHx$9kLdJ^JCr~KikNsxH~r+%dVNnB#En6d`XI+Do*bi*y^M%pgia8vXO zI~aDh4;F{7{<v7<@~2C_Q@XSBl&!>jT>SK5amu96H{X4m385d~|A>9h>a8oX>{4Ko zM&2A?x<&bv0j8_IH^}bf^b_f?EcW+Uab<9M^yLeytPErrz__*9BLW9}I>-r^ckkY- z4W#p31{z<u$jSlmF0_7PkbA;l`ZX6`ndbQg17gkryAo_RU6I{}pIrvYZgF*j$Zzzj zPfjlR&hoM<FSkm0QI-yhHO4!ha5AQK%krp62la;XhrZ<>{emWh`HnXF;K#Iy&pBOW zs=h04)3vNpW^ybH{wmwV5}J|;oP5-n#&W?7t31E`>~z$FOx~Ct?jG<ZZTzNa8{szl zw5dYj2q*C8ZOC7aPT976mhH=KVfJjYs_G63FXg*pu<90n>%HGxuG`4fe+Ik)LPy<V z#7dr=478qb9Dul7(kV64ykq;aw?0QEQUhj{OUj(!dqO#_qEGh>zSqzf&-PwBk%*8s zne;%(;Mq3Kx+pnw0AJ?YN@odJKQWo~Biw<#Q0iEhLk6_aw5&537fj;KL;VjNDK3qD zH)*tKddk_KdNOx6oJ9KlC^}LjosphE;2LgQ<!%`Lk4?_#M$p6nTMyy%45kehKP`iF zOb4&R3KM1V91g>Or)ki+9X@_1{=XO4$V#$p<Cc8E$Zzp7@r^?{1{ZYYl|mT=nvV87 zE&11<*U=0%bn#neT|O3pMzA@ZX0mlCxWK41LW(cE_)Vi?mg%MqA2_Xacw;8IAhn`O z+VIY&fZ>&lbe!?+)^5W1VgLX@07*naRMvD@(w7+-8>V5}->_|0ewH*0*K`_oO3FW& zi;wtWx7Bpo|4Vk~wQb?V?Fwqetw#KpC_D`Bbkq45xShAQn`Xl{g-*9^!ymf?3!w+N zL#Wj#k1|6d&a9^}a0}8h>e<REpopR<Kva*glx9@^O3Oya4O{gmiZV(ZcCOW@Y@&au zB&0I<3i&yF2MoL6nqJHP5&9#nhhAmd9aah~nYB^Qr-HD15GvfSnNCx?Y2pfse9GJ0 z7}m7sxWZIEEW<g*(j7_K&|+E!bKCef9p3)7A97QiF0qOSVH-b#9FQo@Cb6_fxao#> zVB+rl8$QC8NK4wChH>IQ@IS(v)1A}$d$^UyoR@hTb6It`MQoXAcX`jtu)~D!x-4wB zP3lAI;sgsl^W1#2d^*0vn+N^2JKb?;_;gZ8tU4Sf%0D{fDwmsgJu7C%#~J>tnz_ml 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�s?tuGe_a_n*2+ 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 b^>X|J0I~g&6UeBF00000NkvXXu0mjf(wl<@ literal 0 HcmV?d00001 From 5e1bf817a92361a47bba3a56810b332b7a5153a7 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sat, 10 Oct 2015 15:12:04 -0400 Subject: [PATCH 06/86] segue added --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 50 +++++++++++++----- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 19c55b9d771e492e8bd96c9d2114b04e8540ec3f..17c5e3534ef32e865acff26a99eb3819bb2d9ba0 100644 GIT binary patch delta 18 ZcmZoMXffDuk&SWXWGQy5%{=Ts1OPw~237z7 delta 18 ZcmZoMXffDuk&W@;WGQy5%{=Ts1OP%n295v# diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index c4a1621..1ac0c4b 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -184,6 +184,9 @@ <constraint firstAttribute="bottom" secondItem="qle-iq-7ST" secondAttribute="bottom" id="pHl-JF-p0c"/> <constraint firstAttribute="trailing" secondItem="qle-iq-7ST" secondAttribute="trailing" id="vRx-Mn-xec"/> </constraints> + <connections> + <segue destination="0x4-Nu-mZ8" kind="show" id="psL-D4-ibn"/> + </connections> </collectionViewCell> </cells> <connections> @@ -208,23 +211,44 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="uPz-Ba-WOI"> - <rect key="frame" x="0.0" y="175" width="600" height="250"/> + <button opaque="NO" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vKE-8h-Ban"> + <rect key="frame" x="49" y="36" width="60" height="63"/> + <color key="backgroundColor" red="0.82745098039999998" green="0.82745098039999998" blue="0.82745098039999998" alpha="1" colorSpace="calibratedRGB"/> <constraints> - <constraint firstAttribute="height" constant="250" id="Dv1-Jq-UTf"/> + <constraint firstAttribute="width" constant="50" id="Ta5-89-V0g"/> + <constraint firstAttribute="height" constant="50" id="XbY-ap-ZtB"/> </constraints> - <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string> - <fontDescription key="fontDescription" type="system" pointSize="14"/> - <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> - </textView> + <state key="normal" title="Button"/> + </button> + <button opaque="NO" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Gl8-t7-8fe"> + <rect key="frame" x="176" y="36" width="60" height="63"/> + <color key="backgroundColor" red="0.82745098039999998" green="0.82745098039999998" blue="0.82745098039999998" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstAttribute="height" constant="50" id="LRZ-4k-zPJ"/> + <constraint firstAttribute="width" constant="50" id="dlR-SX-Jcx"/> + </constraints> + <state key="normal" title="Button"/> + </button> + <button opaque="NO" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="n1i-47-l5w"> + <rect key="frame" x="368" y="36" width="60" height="63"/> + <color key="backgroundColor" red="0.82745098039999998" green="0.82745098039999998" blue="0.82745098039999998" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstAttribute="height" constant="50" id="0Bz-es-dLs"/> + <constraint firstAttribute="width" constant="50" id="3Lb-Yz-FrN"/> + </constraints> + <state key="normal" title="Button"/> + </button> + <button opaque="NO" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="flq-xd-AXF"> + <rect key="frame" x="476" y="36" width="60" height="63"/> + <color key="backgroundColor" red="0.82745098039999998" green="0.82745098039999998" blue="0.82745098039999998" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstAttribute="height" constant="50" id="3A2-b3-c5k"/> + <constraint firstAttribute="width" constant="50" id="axB-X3-FYS"/> + </constraints> + <state key="normal" title="Button"/> + </button> </subviews> <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> - <constraints> - <constraint firstAttribute="trailingMargin" secondItem="uPz-Ba-WOI" secondAttribute="trailing" constant="-20" id="GJS-pf-uCT"/> - <constraint firstItem="uPz-Ba-WOI" firstAttribute="leading" secondItem="pfn-eQ-aux" secondAttribute="leadingMargin" constant="-20" id="PRv-Ga-Ld2"/> - <constraint firstItem="uPz-Ba-WOI" firstAttribute="centerX" secondItem="pfn-eQ-aux" secondAttribute="centerX" id="ZPn-hI-c43"/> - <constraint firstItem="uPz-Ba-WOI" firstAttribute="centerY" secondItem="pfn-eQ-aux" secondAttribute="centerY" id="jm9-iJ-17n"/> - </constraints> </view> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> From aa1cf2adfc937451870bfd93e89a077a86872377 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Sat, 10 Oct 2015 15:35:23 -0400 Subject: [PATCH 07/86] Updated Storyboard -JS --- .../Unit-2-Journal/Base.lproj/Main.storyboard | 167 +++++++++++++++--- 1 file changed, 141 insertions(+), 26 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 1ac0c4b..5d7198c 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Gih-78-N3X"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Gih-78-N3X"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -19,7 +19,7 @@ <rect key="frame" x="0.0" y="92" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -145,6 +145,7 @@ <collectionView key="view" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" id="gLS-Tq-kca"> <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <animations/> <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="Xes-6k-xNm"> <size key="itemSize" width="112" height="113"/> <size key="headerReferenceSize" width="0.0" height="0.0"/> @@ -164,8 +165,10 @@ <subviews> <imageView userInteractionEnabled="NO" tag="100" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="U4R-a0-sR9"> <rect key="frame" x="0.0" y="0.0" width="112" height="113"/> + <animations/> </imageView> </subviews> + <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <gestureRecognizers/> <constraints> @@ -176,8 +179,10 @@ </constraints> </view> </subviews> + <animations/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> </view> + <animations/> <constraints> <constraint firstItem="qle-iq-7ST" firstAttribute="top" secondItem="KiH-sl-ksa" secondAttribute="top" id="GNo-Hh-7cT"/> <constraint firstItem="qle-iq-7ST" firstAttribute="leading" secondItem="KiH-sl-ksa" secondAttribute="leading" id="L3Q-OO-kXM"/> @@ -211,44 +216,154 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <button opaque="NO" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vKE-8h-Ban"> - <rect key="frame" x="49" y="36" width="60" height="63"/> - <color key="backgroundColor" red="0.82745098039999998" green="0.82745098039999998" blue="0.82745098039999998" alpha="1" colorSpace="calibratedRGB"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ax7-Aa-cpl"> + <rect key="frame" x="0.0" y="20" width="300" height="100"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cfG-sQ-zQZ"> + <rect key="frame" x="0.0" y="0.0" width="150" height="100"/> + <animations/> + <state key="normal" title="Music"/> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CLE-DE-TTz"> + <rect key="frame" x="150" y="0.0" width="150" height="100"/> + <animations/> + <state key="normal" title="Movies"/> + </button> + </subviews> + <animations/> + <color key="backgroundColor" red="0.75457596599999999" green="0.86496030550000003" blue="1" alpha="1" colorSpace="calibratedRGB"/> <constraints> - <constraint firstAttribute="width" constant="50" id="Ta5-89-V0g"/> - <constraint firstAttribute="height" constant="50" id="XbY-ap-ZtB"/> + <constraint firstAttribute="bottom" secondItem="CLE-DE-TTz" secondAttribute="bottom" id="1FY-QK-57N"/> + <constraint firstItem="CLE-DE-TTz" firstAttribute="leading" secondItem="cfG-sQ-zQZ" secondAttribute="trailing" id="4Ko-Cz-FY2"/> + <constraint firstAttribute="trailing" secondItem="CLE-DE-TTz" secondAttribute="trailing" id="GHM-37-uSd"/> + <constraint firstItem="CLE-DE-TTz" firstAttribute="width" secondItem="cfG-sQ-zQZ" secondAttribute="width" id="LuE-pK-ZtR"/> + <constraint firstAttribute="height" constant="100" id="czI-fv-WYo"/> + <constraint firstItem="CLE-DE-TTz" firstAttribute="top" secondItem="Ax7-Aa-cpl" secondAttribute="top" id="iDw-jd-RPS"/> + <constraint firstItem="cfG-sQ-zQZ" firstAttribute="leading" secondItem="Ax7-Aa-cpl" secondAttribute="leading" id="lGS-z5-GTD"/> + <constraint firstItem="cfG-sQ-zQZ" firstAttribute="top" secondItem="Ax7-Aa-cpl" secondAttribute="top" id="n6B-mA-nIe"/> + <constraint firstItem="CLE-DE-TTz" firstAttribute="leading" secondItem="cfG-sQ-zQZ" secondAttribute="trailing" id="odv-sy-OFa"/> + <constraint firstAttribute="bottom" secondItem="cfG-sQ-zQZ" secondAttribute="bottom" id="yfI-BQ-Tjh"/> </constraints> - <state key="normal" title="Button"/> - </button> - <button opaque="NO" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Gl8-t7-8fe"> - <rect key="frame" x="176" y="36" width="60" height="63"/> - <color key="backgroundColor" red="0.82745098039999998" green="0.82745098039999998" blue="0.82745098039999998" alpha="1" colorSpace="calibratedRGB"/> + <variation key="default"> + <mask key="constraints"> + <exclude reference="odv-sy-OFa"/> + </mask> + </variation> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6gJ-up-Tie"> + <rect key="frame" x="300" y="20" width="300" height="100"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rgg-OH-neT"> + <rect key="frame" x="0.0" y="0.0" width="150" height="100"/> + <animations/> + <state key="normal" title="Books"/> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kEa-FP-z2a"> + <rect key="frame" x="150" y="0.0" width="150" height="100"/> + <animations/> + <state key="normal" title="Other"/> + </button> + </subviews> + <animations/> + <color key="backgroundColor" red="1" green="0.5210467205" blue="0.69047673470000004" alpha="1" colorSpace="calibratedRGB"/> <constraints> - <constraint firstAttribute="height" constant="50" id="LRZ-4k-zPJ"/> - <constraint firstAttribute="width" constant="50" id="dlR-SX-Jcx"/> + <constraint firstItem="kEa-FP-z2a" firstAttribute="leading" secondItem="rgg-OH-neT" secondAttribute="trailing" id="0xb-Bx-7TS"/> + <constraint firstAttribute="bottom" secondItem="kEa-FP-z2a" secondAttribute="bottom" id="1FV-jh-6oD"/> + <constraint firstItem="kEa-FP-z2a" firstAttribute="width" secondItem="rgg-OH-neT" secondAttribute="width" id="JaK-hx-7BV"/> + <constraint firstItem="rgg-OH-neT" firstAttribute="leading" secondItem="6gJ-up-Tie" secondAttribute="leading" id="aU3-tU-QYM"/> + <constraint firstAttribute="trailing" secondItem="kEa-FP-z2a" secondAttribute="trailing" id="q79-c2-qfR"/> + <constraint firstItem="kEa-FP-z2a" firstAttribute="leading" secondItem="rgg-OH-neT" secondAttribute="trailing" id="rEQ-Oo-14p"/> + <constraint firstAttribute="bottom" secondItem="rgg-OH-neT" secondAttribute="bottom" id="sni-YM-IqN"/> + <constraint firstItem="kEa-FP-z2a" firstAttribute="top" secondItem="6gJ-up-Tie" secondAttribute="top" id="uGT-pO-eUu"/> + <constraint firstItem="rgg-OH-neT" firstAttribute="top" secondItem="6gJ-up-Tie" secondAttribute="top" id="vUg-mZ-IOY"/> + <constraint firstAttribute="height" constant="100" id="xiZ-fC-OcP"/> </constraints> - <state key="normal" title="Button"/> - </button> - <button opaque="NO" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="n1i-47-l5w"> - <rect key="frame" x="368" y="36" width="60" height="63"/> - <color key="backgroundColor" red="0.82745098039999998" green="0.82745098039999998" blue="0.82745098039999998" alpha="1" colorSpace="calibratedRGB"/> + <variation key="default"> + <mask key="constraints"> + <exclude reference="rEQ-Oo-14p"/> + </mask> + </variation> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4h9-oR-C40"> + <rect key="frame" x="0.0" y="120" width="600" height="50"/> + <subviews> + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Search" textAlignment="natural" clearsOnBeginEditing="YES" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="zob-sY-qha"> + <rect key="frame" x="125" y="10" width="350" height="30"/> + <animations/> + <constraints> + <constraint firstAttribute="width" constant="350" id="FjN-tR-Pz2"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <textInputTraits key="textInputTraits"/> + </textField> + </subviews> + <animations/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <constraints> - <constraint firstAttribute="height" constant="50" id="0Bz-es-dLs"/> - <constraint firstAttribute="width" constant="50" id="3Lb-Yz-FrN"/> + <constraint firstItem="zob-sY-qha" firstAttribute="centerX" secondItem="4h9-oR-C40" secondAttribute="centerX" id="cbv-OU-esH"/> + <constraint firstAttribute="height" constant="50" id="fyg-AW-jv6"/> + <constraint firstItem="zob-sY-qha" firstAttribute="centerY" secondItem="4h9-oR-C40" secondAttribute="centerY" id="x76-Iu-Ldy"/> + </constraints> + </view> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q0c-Ez-WJB"> + <rect key="frame" x="0.0" y="550" width="300" height="50"/> + <animations/> + <color key="backgroundColor" red="0.75457596599999999" green="0.86496030550000003" blue="1" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstAttribute="height" constant="50" id="Obp-pq-hKR"/> </constraints> <state key="normal" title="Button"/> </button> - <button opaque="NO" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="flq-xd-AXF"> - <rect key="frame" x="476" y="36" width="60" height="63"/> - <color key="backgroundColor" red="0.82745098039999998" green="0.82745098039999998" blue="0.82745098039999998" alpha="1" colorSpace="calibratedRGB"/> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i6F-Oe-4xR"> + <rect key="frame" x="300" y="550" width="300" height="50"/> + <animations/> + <color key="backgroundColor" red="1" green="0.5210467205" blue="0.69047673470000004" alpha="1" colorSpace="calibratedRGB"/> <constraints> - <constraint firstAttribute="height" constant="50" id="3A2-b3-c5k"/> - <constraint firstAttribute="width" constant="50" id="axB-X3-FYS"/> + <constraint firstAttribute="height" constant="50" id="hZN-AM-gYR"/> </constraints> <state key="normal" title="Button"/> </button> + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="twc-ko-3Rx"> + <rect key="frame" x="0.0" y="170" width="600" height="380"/> + <animations/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <prototypes> + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="oHk-9R-1hr"> + <rect key="frame" x="0.0" y="28" width="600" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <autoresizingMask key="autoresizingMask"/> + <animations/> + </tableViewCellContentView> + <animations/> + </tableViewCell> + </prototypes> + </tableView> </subviews> + <animations/> <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstAttribute="trailing" secondItem="i6F-Oe-4xR" secondAttribute="trailing" id="1vY-Sv-N2G"/> + <constraint firstItem="Ax7-Aa-cpl" firstAttribute="width" secondItem="6gJ-up-Tie" secondAttribute="width" id="3Ks-3J-7vW"/> + <constraint firstItem="PPA-gt-rZ4" firstAttribute="top" secondItem="Q0c-Ez-WJB" secondAttribute="bottom" id="3L8-sb-LAC"/> + <constraint firstItem="Ax7-Aa-cpl" firstAttribute="leading" secondItem="pfn-eQ-aux" secondAttribute="leading" id="5sF-j5-6Wq"/> + <constraint firstItem="PPA-gt-rZ4" firstAttribute="top" secondItem="i6F-Oe-4xR" secondAttribute="bottom" id="7Fe-iU-INp"/> + <constraint firstItem="Ax7-Aa-cpl" firstAttribute="top" secondItem="pfn-eQ-aux" secondAttribute="top" constant="20" id="9C4-7H-9Cb"/> + <constraint firstItem="twc-ko-3Rx" firstAttribute="leading" secondItem="pfn-eQ-aux" secondAttribute="leading" id="FZd-hl-gkx"/> + <constraint firstItem="Q0c-Ez-WJB" firstAttribute="leading" secondItem="pfn-eQ-aux" secondAttribute="leading" id="Jbu-5t-pGE"/> + <constraint firstAttribute="trailing" secondItem="twc-ko-3Rx" secondAttribute="trailing" id="RGJ-uK-hld"/> + <constraint firstItem="i6F-Oe-4xR" firstAttribute="top" secondItem="twc-ko-3Rx" secondAttribute="bottom" id="VBu-IG-Jsg"/> + <constraint firstAttribute="trailing" secondItem="6gJ-up-Tie" secondAttribute="trailing" id="W2e-WV-pGs"/> + <constraint firstItem="i6F-Oe-4xR" firstAttribute="leading" secondItem="Q0c-Ez-WJB" secondAttribute="trailing" id="a8H-dW-uow"/> + <constraint firstItem="6gJ-up-Tie" firstAttribute="leading" secondItem="Ax7-Aa-cpl" secondAttribute="trailing" id="bU5-gb-wga"/> + <constraint firstItem="4h9-oR-C40" firstAttribute="leading" secondItem="pfn-eQ-aux" secondAttribute="leading" id="d1p-g0-bVH"/> + <constraint firstAttribute="trailing" secondItem="4h9-oR-C40" secondAttribute="trailing" id="ibm-d9-oMd"/> + <constraint firstItem="i6F-Oe-4xR" firstAttribute="width" secondItem="Q0c-Ez-WJB" secondAttribute="width" id="oxZ-9t-iDE"/> + <constraint firstItem="4h9-oR-C40" firstAttribute="top" secondItem="6gJ-up-Tie" secondAttribute="bottom" id="tRe-zX-Mub"/> + <constraint firstItem="6gJ-up-Tie" firstAttribute="top" secondItem="pfn-eQ-aux" secondAttribute="top" constant="20" id="uc6-RM-OMP"/> + <constraint firstItem="twc-ko-3Rx" firstAttribute="top" secondItem="4h9-oR-C40" secondAttribute="bottom" id="yzs-2t-Ycy"/> + </constraints> </view> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> From 0b06d390efc0be760c15a9cc41c374c3797df73b Mon Sep 17 00:00:00 2001 From: Brian <brianblanco1@gmail.comm> Date: Sat, 10 Oct 2015 16:12:27 -0400 Subject: [PATCH 08/86] added more storyboards --- .../Base.lproj/LaunchScreen.storyboard | 2 +- .../Unit-2-Journal/Base.lproj/Main.storyboard | 116 ++++++++++++++++++ 2 files changed, 117 insertions(+), 1 deletion(-) diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard index 5a9c4a6..900bc17 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> </dependencies> diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 5d7198c..4f29f86 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -322,6 +322,9 @@ <constraint firstAttribute="height" constant="50" id="hZN-AM-gYR"/> </constraints> <state key="normal" title="Button"/> + <connections> + <segue destination="WZe-UX-wgc" kind="show" id="S6k-uR-hRq"/> + </connections> </button> <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="twc-ko-3Rx"> <rect key="frame" x="0.0" y="170" width="600" height="380"/> @@ -371,6 +374,119 @@ <point key="canvasLocation" x="975" y="2134"/> </scene> <!--View Controller--> + <scene sceneID="3xO-3p-x8L"> + <objects> + <viewController id="aXS-um-aw2" sceneMemberID="viewController"> + <layoutGuides> + <viewControllerLayoutGuide type="top" id="35G-Te-D94"/> + <viewControllerLayoutGuide type="bottom" id="tF2-8H-bHx"/> + </layoutGuides> + <view key="view" contentMode="scaleToFill" id="p3u-dw-cX6"> + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3Hz-RL-Ugz"> + <rect key="frame" x="20" y="20" width="560" height="195"/> + <subviews> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="s1u-o4-hER"> + <rect key="frame" x="8" y="20" width="191" height="169"/> + <animations/> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9f5-lP-Hj7"> + <rect key="frame" x="207" y="20" width="42" height="19"/> + <animations/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XBM-dl-2qu"> + <rect key="frame" x="207" y="47" width="42" height="21"/> + <animations/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DBb-Mn-UHA"> + <rect key="frame" x="207" y="76" width="42" height="21"/> + <animations/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6L9-Jz-cRI"> + <rect key="frame" x="207" y="105" width="42" height="21"/> + <animations/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <animations/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + </view> + <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bcK-tE-Fho"> + <rect key="frame" x="20" y="223" width="560" height="249"/> + <subviews> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="vhl-Bh-MN5"> + <rect key="frame" x="8" y="0.0" width="552" height="249"/> + <animations/> + <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> + </textView> + </subviews> + <animations/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + </view> + <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sqd-7P-Gsl"> + <rect key="frame" x="20" y="480" width="560" height="92"/> + <animations/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + </view> + </subviews> + <animations/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + </view> + </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="TK9-37-5bs" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="1733" y="2912"/> + </scene> + <!--WIsh List--> + <scene sceneID="WUv-ax-PAc"> + <objects> + <tableViewController title="WIsh List" id="WZe-UX-wgc" sceneMemberID="viewController"> + <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="YJ5-uB-Kgw"> + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <animations/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <prototypes> + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="Ej0-R4-rXa"> + <rect key="frame" x="0.0" y="28" width="600" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <autoresizingMask key="autoresizingMask"/> + <animations/> + </tableViewCellContentView> + <animations/> + <connections> + <segue destination="aXS-um-aw2" kind="show" id="fje-S5-GG0"/> + </connections> + </tableViewCell> + </prototypes> + <connections> + <outlet property="dataSource" destination="WZe-UX-wgc" id="J1b-e6-bdB"/> + <outlet property="delegate" destination="WZe-UX-wgc" id="KJE-Pm-bbr"/> + </connections> + </tableView> + </tableViewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="vQP-Qq-o7U" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="1733" y="2136"/> + </scene> + <!--View Controller--> <scene sceneID="Sp1-uX-mf4"> <objects> <viewController id="CYq-PS-xt5" sceneMemberID="viewController"> From 222fc210c38d11d09bb5d339d6be49dea0438a93 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sat, 10 Oct 2015 16:28:15 -0400 Subject: [PATCH 09/86] fixed collection view constraints --- .DS_Store | Bin 6148 -> 8196 bytes Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 66 ++++-------------- 3 files changed, 14 insertions(+), 52 deletions(-) diff --git a/.DS_Store b/.DS_Store index 15dac3218ec952ab632b90eb6d20c38cc3cab49b..f22ecdfc38374a5d24103a42f21b414105f49b89 100644 GIT binary patch literal 8196 zcmeHLTWl0n82<lK=<IOmYzuY@F03gH6brVr(xP0pH?Yu3!}bok&hCuu#Mzn6&g^cn zqBSOhiP0!1YT|>CXrhrPh=~tIUyO;yOF|61_+moTCljB1s{c7>mTVVVVuF!`Ih%9- zbNRn>`R1E*_6z`EcTR5wPys-q$gHxGl3N7U&f-m>!mnXCBs@R{T-X6=(EF{Myn~8> zfq;R4fq;R4fq;R#fdM+RS&$Yv_eE=v1`GrY+>;Ej{UJ(`*_dzVgymZYCHx9NwvwuO zpgi3JI40`bm~ZEV<xuKV+#b+}qJPCe0jKsTb0-_~?VPXz4k+M&{>bRxP>_#KxF~lA zj0qd00RsU8H#5M_{t!$-797Zx-rt>6(sGj2%3i1g6t~XvKskUFVA3sLBb)(lzqP>k zyQO?}H)SOqhkqTYf&u7<9_WL|Ar5^DyTPMn-GtyMd3HfB43hOfGL#OCSIZD<U<7QM zs0Z6&C&fd2iCL=Cz*;yOJVw}46szXvDFs*(n=H5)pPcK-jAgoBOUqTPSXQ}wMU@ni z*{?eEM10yQ#68W+x!qd!7%!Q+k@WLJnm1j{4-+9b@>+7#Gztl2ZI5GnnrR!^66o<U z)7G6rx0ADVH=(Q>${Km{9@1=M)O5|HX_?*$Da3vWMV*~(eRx-Mw6&$}WOH=3qobuc z+TOP7<Vi`Y-_o}K@R&V&=ImQ<pL^%sOMK0M{@w~<QNEF0z8xdQ$I3cbk~+)H4+-ij zoLf-0Qtb`*$qA)~t?Ed|GacI<HL@<*gi`Giqx~tz_E$ZYa;#k1CLY2m%}V7g%`>_z zD{ek(xZ|EN<FVYN>twwi?l^7|menN`CFdGP4FZ^XqnBW=f}xLBty{mbVe9st9eb{< zUQ?}vYh-zno|x^KPn$+|q+sga^n~W73|lwtsj)mG+%kr3Ep3ExCKTeR`|4ErxK3RT zIy%GY%4JEkY^YP!W2~hoYf!375(jLGs`9W)vr;tQadV?A4?jZ>T5<hOo3_d7h@~YB zOVL9Dw&NjL9m@-9l*4{yTf3}|r<`<}Chdl?*{|;0t*TG5kq0!_JCZSMn$<Tn{N8>0 zSF3eucX27@OO&JuhU(IFnr%aDtI$J3tVLu(bY$1ln;4_F=QwQy88`v2!fWt4yayNH zB3yzm;A{96zK0*+N4N&p;Wzjl{(!$=9!YB`V>O1c25a$td;lA8GdAK5Y{y;Lft}ce z{dgD$a1ci^fk{lEj%j=jpT`$)4qw4H@Em@C=kWr5iWl)S{8CJ+qNw46qFhYzE6UwY zn*Li|F?K6yM*3<G{7=%nwn_-HcI`S}p<Oo~bJ>F}RT!6*&<)p9Q7>Gw3q*Q_WLv*} zgB%$l*%>qCLMRGEsS=`M-kYM4h$3+vvEt@NDpru#CEi!lwur1O<C12rq}GVCoQszg zNvE<>$>q(8ox7=Z1y?aE?%hYNAYLg}4mCz(+R^@v0MElG@HrRXPw+GR0>8qa@HfeB zIZ3V#>q&4C+=yGS2_M8}+)k3~#7FQ^+=G31kc4-Lq&G~$8^;NpB<UGAh0|za7Cp>k z0cY?<d<kF1Q+S$$_$Hpgv-m!KSSCSssFVc!hzd(eFdxs_mSazmUs1*-_&c6mCVEua ze}KNlzyIIyaf1#61_B1|9tN<oH{RP#^I2@uVR!8)#iuB;!2ITf<q%4k3#;eXakBn( ooYzJDwwQ0{gym4ea41=ElmG8O1T1nRpueWU`5&DB_saSI58mIL^Z)<= delta 108 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$jG@dU^g=(=Vl&(Jf_Jr#Pc^c u$T2Qv=im@z2C4!A0d64S3evE#@H_Klei=`Yb_OPhQ6SS9HplbKVFm!>(-Ca| diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 17c5e3534ef32e865acff26a99eb3819bb2d9ba0..08f325822f114603c9964be5348f413e5d06e6ea 100644 GIT binary patch delta 28 kcmZoMXffDufsHAwak3P<)np#_IgAAp3*$DkbNuB80F3$xmjD0& delta 28 kcmZoMXffDufsM&~<zy*#tI0g<a~KmQ7RGI6=lIJH0FH(UqyPW_ diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 4f29f86..8c80dd1 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Gih-78-N3X"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Gih-78-N3X"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -16,10 +16,10 @@ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <prototypes> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="4Uu-0J-i5z"> - <rect key="frame" x="0.0" y="92" width="600" height="44"/> + <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -120,24 +120,6 @@ </objects> <point key="canvasLocation" x="1988" y="641"/> </scene> - <!--Tab Bar Controller--> - <scene sceneID="E9b-uy-ybh"> - <objects> - <tabBarController id="1sd-aP-Fh3" sceneMemberID="viewController"> - <tabBar key="tabBar" contentMode="scaleToFill" id="hdE-Rt-A7Q"> - <rect key="frame" x="0.0" y="0.0" width="320" height="49"/> - <autoresizingMask key="autoresizingMask"/> - <animations/> - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> - </tabBar> - <connections> - <segue destination="Kz5-Pb-5x7" kind="relationship" relationship="viewControllers" id="OPs-1a-sWq"/> - </connections> - </tabBarController> - <placeholder placeholderIdentifier="IBFirstResponder" id="eVv-B5-Y28" userLabel="First Responder" sceneMemberID="firstResponder"/> - </objects> - <point key="canvasLocation" x="-393" y="861"/> - </scene> <!--Journal Main Collection View Controller--> <scene sceneID="IKu-XC-hmb"> <objects> @@ -147,24 +129,24 @@ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <animations/> <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="Xes-6k-xNm"> - <size key="itemSize" width="112" height="113"/> + <size key="itemSize" width="80" height="80"/> <size key="headerReferenceSize" width="0.0" height="0.0"/> <size key="footerReferenceSize" width="0.0" height="0.0"/> - <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/> + <inset key="sectionInset" minX="5" minY="20" maxX="5" maxY="0.0"/> </collectionViewFlowLayout> <cells> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="Cell" id="KiH-sl-ksa"> - <rect key="frame" x="0.0" y="0.0" width="112" height="113"/> + <rect key="frame" x="5" y="20" width="80" height="80"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> - <rect key="frame" x="0.0" y="0.0" width="112" height="113"/> + <rect key="frame" x="0.0" y="0.0" width="80" height="80"/> <autoresizingMask key="autoresizingMask"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qle-iq-7ST"> - <rect key="frame" x="0.0" y="0.0" width="112" height="113"/> + <rect key="frame" x="0.0" y="0.0" width="80" height="80"/> <subviews> - <imageView userInteractionEnabled="NO" tag="100" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="U4R-a0-sR9"> - <rect key="frame" x="0.0" y="0.0" width="112" height="113"/> + <imageView userInteractionEnabled="NO" tag="100" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="U4R-a0-sR9"> + <rect key="frame" x="0.0" y="0.0" width="80" height="80"/> <animations/> </imageView> </subviews> @@ -202,7 +184,7 @@ </collectionViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="blD-s8-5JB" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="303" y="2136"/> + <point key="canvasLocation" x="339" y="2136"/> </scene> <!--Create Item--> <scene sceneID="eAD-0s-cgb"> @@ -335,7 +317,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -371,7 +353,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="975" y="2134"/> + <point key="canvasLocation" x="1021" y="2136"/> </scene> <!--View Controller--> <scene sceneID="3xO-3p-x8L"> @@ -466,7 +448,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -530,25 +512,5 @@ </objects> <point key="canvasLocation" x="2643" y="641"/> </scene> - <!--Item--> - <scene sceneID="ia6-Nx-5sK"> - <objects> - <navigationController automaticallyAdjustsScrollViewInsets="NO" id="Kz5-Pb-5x7" sceneMemberID="viewController"> - <tabBarItem key="tabBarItem" title="Item" id="BEZ-8r-M5c"/> - <toolbarItems/> - <navigationBar key="navigationBar" contentMode="scaleToFill" id="jbK-yp-cdS"> - <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <animations/> - </navigationBar> - <nil name="viewControllers"/> - <connections> - <segue destination="6xj-t1-H8b" kind="relationship" relationship="rootViewController" id="78o-gk-P6y"/> - </connections> - </navigationController> - <placeholder placeholderIdentifier="IBFirstResponder" id="WK3-Eh-SRY" userLabel="First Responder" sceneMemberID="firstResponder"/> - </objects> - <point key="canvasLocation" x="499" y="641"/> - </scene> </scenes> </document> From 21a096e0f56144eee105fc9cac6e6ada83e4619d Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sat, 10 Oct 2015 17:56:29 -0400 Subject: [PATCH 10/86] added to storyboard --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 24 ++ .../Unit-2-Journal/Base.lproj/Main.storyboard | 336 +++++++++++++++--- .../CreateJournalEntryViewController.h | 13 + .../CreateJournalEntryViewController.m | 37 ++ .../JournalMainCollectionViewController.m | 1 + .../Unit-2-Journal/SearchAPIViewController.h | 13 + .../Unit-2-Journal/SearchAPIViewController.m | 55 +++ .../ViewCompletedEntryViewController.h | 13 + .../ViewCompletedEntryViewController.m | 37 ++ .../WishListTableViewController.h | 13 + .../WishListTableViewController.m | 95 +++++ 12 files changed, 587 insertions(+), 50 deletions(-) create mode 100644 Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h create mode 100644 Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m create mode 100644 Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.h create mode 100644 Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m create mode 100644 Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.h create mode 100644 Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m create mode 100644 Unit-2-Journal/Unit-2-Journal/WishListTableViewController.h create mode 100644 Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 08f325822f114603c9964be5348f413e5d06e6ea..f1d9f39a13afeba23e5b7d2f0cb86d8ea67f5d30 100644 GIT binary patch delta 75 zcmZoMXffE3!OGNCJb4|f+2jSRTuf>YCx2iy<IBxYaY-pHNoHWUWUsa!DCEL;U~(e6 f<>WlJB&OEylcm_LCiAe*VO%h=Fm5wD$6tN`{$m>1 delta 75 zcmZoMXffE3!OB!?I(Z$d+2jSRTudDMCVyZx<IBxYaY-pHNoHWUWDgc{Vcak|k==4~ d9$OMqSmR_VcB{!e>~k0kCKkqRX6N|J4*<%u8Cd`T diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 3efb50e..bff38bd 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -17,6 +17,10 @@ 4DCBE1421BC9943D0075BA2C /* talking_heads.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1391BC9943D0075BA2C /* talking_heads.png */; settings = {ASSET_TAGS = (); }; }; 4DCBE1431BC9943D0075BA2C /* true_detective.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE13A1BC9943D0075BA2C /* true_detective.png */; settings = {ASSET_TAGS = (); }; }; 4DCBE1441BC9943D0075BA2C /* x-files.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE13B1BC9943D0075BA2C /* x-files.png */; settings = {ASSET_TAGS = (); }; }; + 4DCBE1471BC9AD6A0075BA2C /* SearchAPIViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE1461BC9AD6A0075BA2C /* SearchAPIViewController.m */; settings = {ASSET_TAGS = (); }; }; + 4DCBE14A1BC9ADAE0075BA2C /* CreateJournalEntryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE1491BC9ADAE0075BA2C /* CreateJournalEntryViewController.m */; settings = {ASSET_TAGS = (); }; }; + 4DCBE14D1BC9ADE00075BA2C /* WishListTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE14C1BC9ADE00075BA2C /* WishListTableViewController.m */; settings = {ASSET_TAGS = (); }; }; + 4DCBE1501BC9BD800075BA2C /* ViewCompletedEntryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */; settings = {ASSET_TAGS = (); }; }; 5A50331A1BC8D0E4001CBA5C /* MainTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A5033191BC8D0E4001CBA5C /* MainTableViewController.m */; settings = {ASSET_TAGS = (); }; }; 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331C1BC8D99D001CBA5C /* LoginViewController.m */; settings = {ASSET_TAGS = (); }; }; 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331F1BC8D9B5001CBA5C /* SignUpViewController.m */; settings = {ASSET_TAGS = (); }; }; @@ -43,6 +47,14 @@ 4DCBE1391BC9943D0075BA2C /* talking_heads.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = talking_heads.png; sourceTree = "<group>"; }; 4DCBE13A1BC9943D0075BA2C /* true_detective.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = true_detective.png; sourceTree = "<group>"; }; 4DCBE13B1BC9943D0075BA2C /* x-files.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "x-files.png"; sourceTree = "<group>"; }; + 4DCBE1451BC9AD6A0075BA2C /* SearchAPIViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchAPIViewController.h; sourceTree = "<group>"; }; + 4DCBE1461BC9AD6A0075BA2C /* SearchAPIViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchAPIViewController.m; sourceTree = "<group>"; }; + 4DCBE1481BC9ADAE0075BA2C /* CreateJournalEntryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CreateJournalEntryViewController.h; sourceTree = "<group>"; }; + 4DCBE1491BC9ADAE0075BA2C /* CreateJournalEntryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CreateJournalEntryViewController.m; sourceTree = "<group>"; }; + 4DCBE14B1BC9ADE00075BA2C /* WishListTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WishListTableViewController.h; sourceTree = "<group>"; }; + 4DCBE14C1BC9ADE00075BA2C /* WishListTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WishListTableViewController.m; sourceTree = "<group>"; }; + 4DCBE14E1BC9BD800075BA2C /* ViewCompletedEntryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewCompletedEntryViewController.h; sourceTree = "<group>"; }; + 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewCompletedEntryViewController.m; sourceTree = "<group>"; }; 5A5033181BC8D0E4001CBA5C /* MainTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainTableViewController.h; sourceTree = "<group>"; }; 5A5033191BC8D0E4001CBA5C /* MainTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainTableViewController.m; sourceTree = "<group>"; }; 5A50331B1BC8D99D001CBA5C /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; }; @@ -130,6 +142,14 @@ 9A2FFC361BC84BF200E880D3 /* Main.storyboard */, 4DCBE1301BC98EF90075BA2C /* JournalMainCollectionViewController.h */, 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */, + 4DCBE1451BC9AD6A0075BA2C /* SearchAPIViewController.h */, + 4DCBE1461BC9AD6A0075BA2C /* SearchAPIViewController.m */, + 4DCBE1481BC9ADAE0075BA2C /* CreateJournalEntryViewController.h */, + 4DCBE1491BC9ADAE0075BA2C /* CreateJournalEntryViewController.m */, + 4DCBE14B1BC9ADE00075BA2C /* WishListTableViewController.h */, + 4DCBE14C1BC9ADE00075BA2C /* WishListTableViewController.m */, + 4DCBE14E1BC9BD800075BA2C /* ViewCompletedEntryViewController.h */, + 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */, 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */, 9A2FFC3E1BC84BF200E880D3 /* LaunchScreen.storyboard */, 9A2FFC411BC84BF200E880D3 /* Info.plist */, @@ -272,11 +292,15 @@ buildActionMask = 2147483647; files = ( 9A2FFC321BC84BF200E880D3 /* AppDelegate.m in Sources */, + 4DCBE14A1BC9ADAE0075BA2C /* CreateJournalEntryViewController.m in Sources */, 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */, 4DCBE1321BC98EF90075BA2C /* JournalMainCollectionViewController.m in Sources */, + 4DCBE1471BC9AD6A0075BA2C /* SearchAPIViewController.m in Sources */, 9A2FFC3B1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld in Sources */, + 4DCBE14D1BC9ADE00075BA2C /* WishListTableViewController.m in Sources */, 5A50331A1BC8D0E4001CBA5C /* MainTableViewController.m in Sources */, 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */, + 4DCBE1501BC9BD800075BA2C /* ViewCompletedEntryViewController.m in Sources */, 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 8c80dd1..5ed524d 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -128,6 +128,7 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <animations/> + <gestureRecognizers/> <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="Xes-6k-xNm"> <size key="itemSize" width="80" height="80"/> <size key="headerReferenceSize" width="0.0" height="0.0"/> @@ -172,7 +173,7 @@ <constraint firstAttribute="trailing" secondItem="qle-iq-7ST" secondAttribute="trailing" id="vRx-Mn-xec"/> </constraints> <connections> - <segue destination="0x4-Nu-mZ8" kind="show" id="psL-D4-ibn"/> + <segue destination="0x4-Nu-mZ8" kind="show" id="HbN-3P-AbF"/> </connections> </collectionViewCell> </cells> @@ -184,12 +185,12 @@ </collectionViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="blD-s8-5JB" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="339" y="2136"/> + <point key="canvasLocation" x="359" y="2136"/> </scene> - <!--Create Item--> + <!--Search --> <scene sceneID="eAD-0s-cgb"> <objects> - <viewController title="Create Item" id="0x4-Nu-mZ8" sceneMemberID="viewController"> + <viewController title="Search " id="0x4-Nu-mZ8" customClass="SearchAPIViewController" sceneMemberID="viewController"> <layoutGuides> <viewControllerLayoutGuide type="top" id="cYU-LH-eDv"/> <viewControllerLayoutGuide type="bottom" id="PPA-gt-rZ4"/> @@ -205,11 +206,17 @@ <rect key="frame" x="0.0" y="0.0" width="150" height="100"/> <animations/> <state key="normal" title="Music"/> + <connections> + <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="pgn-O1-WAi"/> + </connections> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CLE-DE-TTz"> <rect key="frame" x="150" y="0.0" width="150" height="100"/> <animations/> <state key="normal" title="Movies"/> + <connections> + <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="tdC-rt-Ts9"/> + </connections> </button> </subviews> <animations/> @@ -239,11 +246,17 @@ <rect key="frame" x="0.0" y="0.0" width="150" height="100"/> <animations/> <state key="normal" title="Books"/> + <connections> + <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="n38-IM-iTM"/> + </connections> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kEa-FP-z2a"> <rect key="frame" x="150" y="0.0" width="150" height="100"/> <animations/> <state key="normal" title="Other"/> + <connections> + <action selector="mediaButtonOther:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="XpB-L1-XNH"/> + </connections> </button> </subviews> <animations/> @@ -294,7 +307,11 @@ <constraints> <constraint firstAttribute="height" constant="50" id="Obp-pq-hKR"/> </constraints> - <state key="normal" title="Button"/> + <state key="normal" title="Create Journal Entry"/> + <connections> + <action selector="createJournalEntryButtonTapped:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="tTN-M9-kCZ"/> + <segue destination="aXS-um-aw2" kind="show" id="a4i-zx-cvK"/> + </connections> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i6F-Oe-4xR"> <rect key="frame" x="300" y="550" width="300" height="50"/> @@ -303,8 +320,9 @@ <constraints> <constraint firstAttribute="height" constant="50" id="hZN-AM-gYR"/> </constraints> - <state key="normal" title="Button"/> + <state key="normal" title="Add to Wish List"/> <connections> + <action selector="addToWishListButtonTapped:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="pGb-oC-cak"/> <segue destination="WZe-UX-wgc" kind="show" id="S6k-uR-hRq"/> </connections> </button> @@ -350,15 +368,23 @@ <constraint firstItem="twc-ko-3Rx" firstAttribute="top" secondItem="4h9-oR-C40" secondAttribute="bottom" id="yzs-2t-Ycy"/> </constraints> </view> + <connections> + <outlet property="booksButton" destination="rgg-OH-neT" id="Ucr-iy-A9p"/> + <outlet property="moviesButton" destination="CLE-DE-TTz" id="7LO-pm-d9U"/> + <outlet property="musicButton" destination="cfG-sQ-zQZ" id="rag-AL-MMx"/> + <outlet property="otherButton" destination="kEa-FP-z2a" id="zZJ-KO-l1f"/> + <outlet property="searchTextField" destination="zob-sY-qha" id="CSN-S0-Rzp"/> + <outlet property="tableView" destination="twc-ko-3Rx" id="4Cw-TH-Ai6"/> + </connections> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1021" y="2136"/> + <point key="canvasLocation" x="1061" y="2136"/> </scene> - <!--View Controller--> + <!--Create Journal Entry View Controller--> <scene sceneID="3xO-3p-x8L"> <objects> - <viewController id="aXS-um-aw2" sceneMemberID="viewController"> + <viewController id="aXS-um-aw2" customClass="CreateJournalEntryViewController" sceneMemberID="viewController"> <layoutGuides> <viewControllerLayoutGuide type="top" id="35G-Te-D94"/> <viewControllerLayoutGuide type="bottom" id="tF2-8H-bHx"/> @@ -367,89 +393,166 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3Hz-RL-Ugz"> - <rect key="frame" x="20" y="20" width="560" height="195"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3Hz-RL-Ugz"> + <rect key="frame" x="20" y="20" width="560" height="140"/> <subviews> - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="s1u-o4-hER"> - <rect key="frame" x="8" y="20" width="191" height="169"/> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="s1u-o4-hER"> + <rect key="frame" x="0.0" y="5" width="130" height="130"/> <animations/> + <constraints> + <constraint firstAttribute="width" constant="130" id="eSF-yA-Flh"/> + <constraint firstAttribute="height" constant="130" id="mgE-Dx-7HC"/> + </constraints> </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9f5-lP-Hj7"> - <rect key="frame" x="207" y="20" width="42" height="19"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="characterWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9f5-lP-Hj7"> + <rect key="frame" x="145" y="5" width="415" height="30"/> <animations/> - <fontDescription key="fontDescription" type="system" pointSize="17"/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="25"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XBM-dl-2qu"> - <rect key="frame" x="207" y="47" width="42" height="21"/> - <animations/> - <fontDescription key="fontDescription" type="system" pointSize="17"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HdG-mr-PTo"> + <rect key="frame" x="145" y="111" width="415" height="24"/> + <fontDescription key="fontDescription" type="system" pointSize="20"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DBb-Mn-UHA"> - <rect key="frame" x="207" y="76" width="42" height="21"/> - <animations/> - <fontDescription key="fontDescription" type="system" pointSize="17"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> - <nil key="highlightedColor"/> - </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6L9-Jz-cRI"> - <rect key="frame" x="207" y="105" width="42" height="21"/> - <animations/> - <fontDescription key="fontDescription" type="system" pointSize="17"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> + <rect key="frame" x="145" y="58" width="415" height="24"/> + <fontDescription key="fontDescription" type="system" pointSize="20"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> </label> </subviews> <animations/> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstItem="s1u-o4-hER" firstAttribute="top" secondItem="3Hz-RL-Ugz" secondAttribute="top" constant="5" id="Ez4-MK-s7B"/> + <constraint firstAttribute="trailing" secondItem="f6q-RS-lgS" secondAttribute="trailing" id="JmH-ju-U9V"/> + <constraint firstAttribute="bottom" secondItem="s1u-o4-hER" secondAttribute="bottom" constant="5" id="Kda-pQ-Ua1"/> + <constraint firstItem="f6q-RS-lgS" firstAttribute="centerY" secondItem="s1u-o4-hER" secondAttribute="centerY" id="QTX-hv-7Fq"/> + <constraint firstAttribute="trailing" secondItem="9f5-lP-Hj7" secondAttribute="trailing" id="V9g-rG-CLE"/> + <constraint firstItem="HdG-mr-PTo" firstAttribute="leading" secondItem="s1u-o4-hER" secondAttribute="trailing" constant="15" id="WcO-wz-iHe"/> + <constraint firstItem="HdG-mr-PTo" firstAttribute="bottom" secondItem="s1u-o4-hER" secondAttribute="bottom" id="XKV-KR-feV"/> + <constraint firstAttribute="trailing" secondItem="HdG-mr-PTo" secondAttribute="trailing" id="fa5-uD-Jqj"/> + <constraint firstItem="9f5-lP-Hj7" firstAttribute="leading" secondItem="s1u-o4-hER" secondAttribute="trailing" constant="15" id="h5l-7d-Iqa"/> + <constraint firstItem="9f5-lP-Hj7" firstAttribute="top" secondItem="s1u-o4-hER" secondAttribute="top" id="hfs-Kl-iTG"/> + <constraint firstItem="s1u-o4-hER" firstAttribute="centerY" secondItem="3Hz-RL-Ugz" secondAttribute="centerY" id="juK-x2-WdU"/> + <constraint firstItem="f6q-RS-lgS" firstAttribute="leading" secondItem="s1u-o4-hER" secondAttribute="trailing" constant="15" id="rIU-1n-M35"/> + <constraint firstItem="s1u-o4-hER" firstAttribute="leading" secondItem="3Hz-RL-Ugz" secondAttribute="leading" id="zY8-tn-NjM"/> + </constraints> </view> - <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bcK-tE-Fho"> - <rect key="frame" x="20" y="223" width="560" height="249"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bcK-tE-Fho"> + <rect key="frame" x="20" y="160" width="560" height="250"/> <subviews> - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="vhl-Bh-MN5"> - <rect key="frame" x="8" y="0.0" width="552" height="249"/> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" text="write your jounal entry here" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="vhl-Bh-MN5"> + <rect key="frame" x="5" y="5" width="550" height="240"/> <animations/> - <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string> <fontDescription key="fontDescription" type="system" pointSize="14"/> - <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> + <textInputTraits key="textInputTraits" autocapitalizationType="sentences" autocorrectionType="yes"/> </textView> </subviews> <animations/> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" red="1" green="0.77670592760000001" blue="0.97496195610000003" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstAttribute="bottom" secondItem="vhl-Bh-MN5" secondAttribute="bottom" constant="5" id="7R8-kT-HLm"/> + <constraint firstAttribute="trailing" secondItem="vhl-Bh-MN5" secondAttribute="trailing" constant="5" id="E6p-vH-BHx"/> + <constraint firstItem="vhl-Bh-MN5" firstAttribute="leading" secondItem="bcK-tE-Fho" secondAttribute="leading" constant="5" id="M21-AR-3nX"/> + <constraint firstItem="vhl-Bh-MN5" firstAttribute="top" secondItem="bcK-tE-Fho" secondAttribute="top" constant="5" id="My1-O9-95O"/> + </constraints> </view> - <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sqd-7P-Gsl"> - <rect key="frame" x="20" y="480" width="560" height="92"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RJM-Va-Q0I"> + <rect key="frame" x="20" y="485" width="560" height="115"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7yP-CD-6Bn"> + <rect key="frame" x="185" y="42" width="191" height="30"/> + <state key="normal" title="Save and Add to Completed"/> + <connections> + <segue destination="Gih-78-N3X" kind="show" id="AZL-rD-3yX"/> + </connections> + </button> + </subviews> + <color key="backgroundColor" red="0.99607843139999996" green="0.79215686269999996" blue="0.086274509799999996" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstItem="7yP-CD-6Bn" firstAttribute="centerY" secondItem="RJM-Va-Q0I" secondAttribute="centerY" id="a3v-fV-Vsm"/> + <constraint firstItem="7yP-CD-6Bn" firstAttribute="centerX" secondItem="RJM-Va-Q0I" secondAttribute="centerX" id="bWW-ls-ANv"/> + <constraint firstAttribute="height" constant="100" id="u3j-la-nuU"/> + </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="u3j-la-nuU"/> + </mask> + </variation> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sqd-7P-Gsl"> + <rect key="frame" x="20" y="410" width="560" height="75"/> <animations/> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <constraints> + <constraint firstAttribute="height" constant="75" id="ggG-rP-Gtk"/> + </constraints> </view> </subviews> <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstItem="3Hz-RL-Ugz" firstAttribute="trailing" secondItem="p3u-dw-cX6" secondAttribute="trailingMargin" id="1b0-Cy-sHW"/> + <constraint firstItem="bcK-tE-Fho" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leadingMargin" id="4EP-hk-Ams"/> + <constraint firstItem="bcK-tE-Fho" firstAttribute="trailing" secondItem="p3u-dw-cX6" secondAttribute="trailingMargin" id="4NT-3Y-c71"/> + <constraint firstItem="3Hz-RL-Ugz" firstAttribute="top" secondItem="35G-Te-D94" secondAttribute="bottom" id="CcV-Ir-Nos"/> + <constraint firstItem="3Hz-RL-Ugz" firstAttribute="top" secondItem="35G-Te-D94" secondAttribute="bottom" id="Dq8-Io-V9X"/> + <constraint firstItem="RJM-Va-Q0I" firstAttribute="top" secondItem="sqd-7P-Gsl" secondAttribute="bottom" id="FfO-A1-elu"/> + <constraint firstItem="sqd-7P-Gsl" firstAttribute="trailing" secondItem="p3u-dw-cX6" secondAttribute="trailingMargin" id="GIx-uD-ry1"/> + <constraint firstItem="sqd-7P-Gsl" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leadingMargin" id="J58-Az-kmW"/> + <constraint firstItem="sqd-7P-Gsl" firstAttribute="top" secondItem="bcK-tE-Fho" secondAttribute="bottom" id="Tto-d2-fbD"/> + <constraint firstItem="bcK-tE-Fho" firstAttribute="top" secondItem="3Hz-RL-Ugz" secondAttribute="bottom" id="V5n-CF-f13"/> + <constraint firstItem="3Hz-RL-Ugz" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leadingMargin" id="Wey-Ew-9Lu"/> + <constraint firstItem="RJM-Va-Q0I" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leadingMargin" id="bxG-q4-WEc"/> + <constraint firstItem="bcK-tE-Fho" firstAttribute="top" secondItem="3Hz-RL-Ugz" secondAttribute="bottom" id="jJl-L5-BxV"/> + <constraint firstItem="sqd-7P-Gsl" firstAttribute="top" secondItem="p3u-dw-cX6" secondAttribute="top" constant="410" id="maF-Wy-Dy6"/> + <constraint firstItem="bcK-tE-Fho" firstAttribute="top" secondItem="3Hz-RL-Ugz" secondAttribute="bottom" id="mzK-8W-Mwz"/> + <constraint firstItem="tF2-8H-bHx" firstAttribute="top" secondItem="RJM-Va-Q0I" secondAttribute="bottom" id="oX2-uC-Glh"/> + <constraint firstItem="RJM-Va-Q0I" firstAttribute="trailing" secondItem="p3u-dw-cX6" secondAttribute="trailingMargin" id="tOP-Xo-lDc"/> + </constraints> </view> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="TK9-37-5bs" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1733" y="2912"/> + <point key="canvasLocation" x="1433" y="3136"/> </scene> - <!--WIsh List--> + <!--Wish List--> <scene sceneID="WUv-ax-PAc"> <objects> - <tableViewController title="WIsh List" id="WZe-UX-wgc" sceneMemberID="viewController"> - <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="YJ5-uB-Kgw"> + <tableViewController title="Wish List" id="WZe-UX-wgc" customClass="WishListTableViewController" sceneMemberID="viewController"> + <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="64" sectionHeaderHeight="28" sectionFooterHeight="28" id="YJ5-uB-Kgw"> <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <prototypes> - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="Ej0-R4-rXa"> - <rect key="frame" x="0.0" y="28" width="600" height="44"/> + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="WishListIdentifier" rowHeight="64" id="Ej0-R4-rXa"> + <rect key="frame" x="0.0" y="28" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> <autoresizingMask key="autoresizingMask"/> + <subviews> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="346-CT-Uvl"> + <rect key="frame" x="8" y="0.0" width="58" height="60.5"/> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bdy-xS-1Zi"> + <rect key="frame" x="74" y="0.0" width="42" height="21"/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zzx-oe-N5F"> + <rect key="frame" x="74" y="39" width="42" height="21"/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + </subviews> <animations/> </tableViewCellContentView> <animations/> @@ -466,7 +569,7 @@ </tableViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="vQP-Qq-o7U" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1733" y="2136"/> + <point key="canvasLocation" x="-389" y="2136"/> </scene> <!--View Controller--> <scene sceneID="Sp1-uX-mf4"> @@ -512,5 +615,138 @@ </objects> <point key="canvasLocation" x="2643" y="641"/> </scene> + <!--View Completed Journal Entry--> + <scene sceneID="dbg-sY-EWD"> + <objects> + <viewController title="View Completed Journal Entry" id="z1K-z0-Vef" customClass="ViewCompletedEntryViewController" sceneMemberID="viewController"> + <layoutGuides> + <viewControllerLayoutGuide type="top" id="hxi-Oa-IvU"/> + <viewControllerLayoutGuide type="bottom" id="DF9-8P-jQU"/> + </layoutGuides> + <view key="view" contentMode="scaleToFill" id="EZl-sI-Vwl"> + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2sS-fd-D0X"> + <rect key="frame" x="20" y="20" width="560" height="140"/> + <subviews> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="P8h-8Q-AZm"> + <rect key="frame" x="0.0" y="5" width="130" height="130"/> + <constraints> + <constraint firstAttribute="width" constant="130" id="T4f-sf-dem"/> + <constraint firstAttribute="height" constant="130" id="ZGH-hy-6dT"/> + </constraints> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="characterWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uPb-Kv-PyA"> + <rect key="frame" x="145" y="5" width="415" height="30"/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="25"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eHa-Fq-bcU"> + <rect key="frame" x="145" y="111" width="415" height="24"/> + <fontDescription key="fontDescription" type="system" pointSize="20"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RUW-ww-VHC"> + <rect key="frame" x="145" y="58" width="415" height="24"/> + <fontDescription key="fontDescription" type="system" pointSize="20"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="top" constant="5" id="4Iw-Mk-e5C"/> + <constraint firstItem="eHa-Fq-bcU" firstAttribute="bottom" secondItem="P8h-8Q-AZm" secondAttribute="bottom" id="9Ij-qz-1nr"/> + <constraint firstItem="eHa-Fq-bcU" firstAttribute="leading" secondItem="P8h-8Q-AZm" secondAttribute="trailing" constant="15" id="AOR-fg-jjQ"/> + <constraint firstItem="RUW-ww-VHC" firstAttribute="centerY" secondItem="P8h-8Q-AZm" secondAttribute="centerY" id="B8H-cZ-Twb"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerY" secondItem="2sS-fd-D0X" secondAttribute="centerY" id="IsG-6d-QoO"/> + <constraint firstItem="uPb-Kv-PyA" firstAttribute="top" secondItem="P8h-8Q-AZm" secondAttribute="top" id="RKA-2y-eIC"/> + <constraint firstAttribute="bottom" secondItem="P8h-8Q-AZm" secondAttribute="bottom" constant="5" id="UCI-7U-pf5"/> + <constraint firstAttribute="trailing" secondItem="eHa-Fq-bcU" secondAttribute="trailing" id="gYy-RN-0dc"/> + <constraint firstItem="uPb-Kv-PyA" firstAttribute="leading" secondItem="P8h-8Q-AZm" secondAttribute="trailing" constant="15" id="gwF-Qt-P6G"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="leading" secondItem="2sS-fd-D0X" secondAttribute="leading" id="nTp-YF-tYN"/> + <constraint firstAttribute="trailing" secondItem="RUW-ww-VHC" secondAttribute="trailing" id="p8j-yz-JRL"/> + <constraint firstItem="RUW-ww-VHC" firstAttribute="leading" secondItem="P8h-8Q-AZm" secondAttribute="trailing" constant="15" id="wQg-ht-nEO"/> + <constraint firstAttribute="trailing" secondItem="uPb-Kv-PyA" secondAttribute="trailing" id="yeu-We-Dj2"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bI1-9Y-Lhn"> + <rect key="frame" x="20" y="160" width="560" height="250"/> + <subviews> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> + <rect key="frame" x="5" y="5" width="550" height="240"/> + <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> + </textView> + </subviews> + <color key="backgroundColor" red="1" green="0.77670592760000001" blue="0.97496195610000003" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstItem="riX-qw-M2j" firstAttribute="leading" secondItem="bI1-9Y-Lhn" secondAttribute="leading" constant="5" id="9qy-ow-Nql"/> + <constraint firstAttribute="trailing" secondItem="riX-qw-M2j" secondAttribute="trailing" constant="5" id="Gsp-CD-sDk"/> + <constraint firstAttribute="bottom" secondItem="riX-qw-M2j" secondAttribute="bottom" constant="5" id="HD8-LY-0od"/> + <constraint firstItem="riX-qw-M2j" firstAttribute="top" secondItem="bI1-9Y-Lhn" secondAttribute="top" constant="5" id="LNA-Mw-l4a"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="x4f-Ym-z1V"> + <rect key="frame" x="20" y="485" width="560" height="115"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> + <rect key="frame" x="258" y="42" width="45" height="30"/> + <state key="normal" title="Delete"/> + </button> + </subviews> + <color key="backgroundColor" red="0.99607843139999996" green="0.79215686269999996" blue="0.086274509799999996" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstAttribute="height" constant="100" id="4cP-Gz-KpJ"/> + <constraint firstItem="1br-zx-rKo" firstAttribute="centerY" secondItem="x4f-Ym-z1V" secondAttribute="centerY" id="PpI-nI-XT1"/> + <constraint firstItem="1br-zx-rKo" firstAttribute="centerX" secondItem="x4f-Ym-z1V" secondAttribute="centerX" id="kQc-qO-IbZ"/> + </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="4cP-Gz-KpJ"/> + </mask> + </variation> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ly8-tU-R6b"> + <rect key="frame" x="20" y="410" width="560" height="75"/> + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <constraints> + <constraint firstAttribute="height" constant="75" id="umD-ss-qeO"/> + </constraints> + </view> + </subviews> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstItem="Ly8-tU-R6b" firstAttribute="leading" secondItem="EZl-sI-Vwl" secondAttribute="leadingMargin" id="1T0-Ze-kQC"/> + <constraint firstItem="bI1-9Y-Lhn" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="bottom" id="3c5-ik-Auq"/> + <constraint firstItem="DF9-8P-jQU" firstAttribute="top" secondItem="x4f-Ym-z1V" secondAttribute="bottom" id="4Fa-3M-oyp"/> + <constraint firstItem="bI1-9Y-Lhn" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="bottom" id="4JK-ES-1ri"/> + <constraint firstItem="x4f-Ym-z1V" firstAttribute="top" secondItem="Ly8-tU-R6b" secondAttribute="bottom" id="5op-S4-Rvd"/> + <constraint firstItem="2sS-fd-D0X" firstAttribute="top" secondItem="hxi-Oa-IvU" secondAttribute="bottom" id="6j7-Pw-W91"/> + <constraint firstItem="2sS-fd-D0X" firstAttribute="trailing" secondItem="EZl-sI-Vwl" secondAttribute="trailingMargin" id="HN0-Bi-dhn"/> + <constraint firstItem="2sS-fd-D0X" firstAttribute="top" secondItem="hxi-Oa-IvU" secondAttribute="bottom" id="KCf-gF-e0e"/> + <constraint firstItem="bI1-9Y-Lhn" firstAttribute="trailing" secondItem="EZl-sI-Vwl" secondAttribute="trailingMargin" id="N93-6I-U69"/> + <constraint firstItem="Ly8-tU-R6b" firstAttribute="top" secondItem="EZl-sI-Vwl" secondAttribute="top" constant="410" id="S8h-Yj-9gp"/> + <constraint firstItem="2sS-fd-D0X" firstAttribute="leading" secondItem="EZl-sI-Vwl" secondAttribute="leadingMargin" id="WUr-xg-D5x"/> + <constraint firstItem="Ly8-tU-R6b" firstAttribute="top" secondItem="bI1-9Y-Lhn" secondAttribute="bottom" id="Zqz-eo-C42"/> + <constraint firstItem="Ly8-tU-R6b" firstAttribute="trailing" secondItem="EZl-sI-Vwl" secondAttribute="trailingMargin" id="fGr-sx-IUP"/> + <constraint firstItem="bI1-9Y-Lhn" firstAttribute="leading" secondItem="EZl-sI-Vwl" secondAttribute="leadingMargin" id="flc-is-VEs"/> + <constraint firstItem="bI1-9Y-Lhn" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="bottom" id="gL3-nR-tUc"/> + <constraint firstItem="x4f-Ym-z1V" firstAttribute="leading" secondItem="EZl-sI-Vwl" secondAttribute="leadingMargin" id="jwd-au-VUD"/> + <constraint firstItem="x4f-Ym-z1V" firstAttribute="trailing" secondItem="EZl-sI-Vwl" secondAttribute="trailingMargin" id="mnC-Mc-ilI"/> + </constraints> + </view> + </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="gKL-Ix-enk" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="345" y="3120"/> + </scene> </scenes> + <inferredMetricsTieBreakers> + <segue reference="a4i-zx-cvK"/> + </inferredMetricsTieBreakers> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h new file mode 100644 index 0000000..c6a19e7 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h @@ -0,0 +1,13 @@ +// +// CreateJournalEntryViewController.h +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface CreateJournalEntryViewController : UIViewController + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m new file mode 100644 index 0000000..c84f46d --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -0,0 +1,37 @@ +// +// CreateJournalEntryViewController.m +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "CreateJournalEntryViewController.h" + +@interface CreateJournalEntryViewController () + +@end + +@implementation CreateJournalEntryViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index bcb3558..b1f8940 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -24,6 +24,7 @@ - (void)viewDidLoad { // [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"]; } + - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.h b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.h new file mode 100644 index 0000000..9230c77 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.h @@ -0,0 +1,13 @@ +// +// SearchAPIViewController.h +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface SearchAPIViewController : UIViewController + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m new file mode 100644 index 0000000..b9e7fd8 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -0,0 +1,55 @@ +// +// SearchAPIViewController.m +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "SearchAPIViewController.h" + +@interface SearchAPIViewController () + +@property (weak, nonatomic) IBOutlet UITextField *searchTextField; +@property (weak, nonatomic) IBOutlet UITableView *tableView; +@property (weak, nonatomic) IBOutlet UIButton *musicButton; +@property (weak, nonatomic) IBOutlet UIButton *moviesButton; +@property (weak, nonatomic) IBOutlet UIButton *booksButton; +@property (weak, nonatomic) IBOutlet UIButton *otherButton; + +@end + +@implementation SearchAPIViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ +- (IBAction)mediaButtonTypeSelected:(id)sender { +} + +- (IBAction)mediaButtonOther:(id)sender { +} + +- (IBAction)createJournalEntryButtonTapped:(id)sender { +} + +- (IBAction)addToWishListButtonTapped:(id)sender { +} + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.h b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.h new file mode 100644 index 0000000..6e4d110 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.h @@ -0,0 +1,13 @@ +// +// ViewCompletedEntryViewController.h +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface ViewCompletedEntryViewController : UIViewController + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m new file mode 100644 index 0000000..7c7e3c0 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m @@ -0,0 +1,37 @@ +// +// ViewCompletedEntryViewController.m +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "ViewCompletedEntryViewController.h" + +@interface ViewCompletedEntryViewController () + +@end + +@implementation ViewCompletedEntryViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.h b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.h new file mode 100644 index 0000000..dd8b7b4 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.h @@ -0,0 +1,13 @@ +// +// WishListTableViewController.h +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface WishListTableViewController : UITableViewController + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m new file mode 100644 index 0000000..28ac88d --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -0,0 +1,95 @@ +// +// WishListTableViewController.m +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/10/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "WishListTableViewController.h" + +@interface WishListTableViewController () + +@end + +@implementation WishListTableViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + + // Uncomment the following line to preserve selection between presentations. + // self.clearsSelectionOnViewWillAppear = NO; + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + // self.navigationItem.rightBarButtonItem = self.editButtonItem; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +#pragma mark - Table view data source + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return 5; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"WishListIdentifier" forIndexPath:indexPath]; + + // Configure the cell... + + return cell; +} + + +/* +// Override to support conditional editing of the table view. +- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { + // Return NO if you do not want the specified item to be editable. + return YES; +} +*/ + +/* +// Override to support editing the table view. +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + if (editingStyle == UITableViewCellEditingStyleDelete) { + // Delete the row from the data source + [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; + } else if (editingStyle == UITableViewCellEditingStyleInsert) { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } +} +*/ + +/* +// Override to support rearranging the table view. +- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { +} +*/ + +/* +// Override to support conditional rearranging of the table view. +- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { + // Return NO if you do not want the item to be re-orderable. + return YES; +} +*/ + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end From 709105774b866a2658e9313dd841f9cd7f68858d Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Sat, 10 Oct 2015 21:35:14 -0400 Subject: [PATCH 11/86] swipe gestures for first three screens enabled --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes Unit-2-Journal/Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 110 +++++++++++++++--- .../JournalMainCollectionViewController.m | 41 ++++--- .../Unit-2-Journal/SearchAPIViewController.m | 40 +++++-- .../WishListTableViewController.m | 30 +++-- 6 files changed, 167 insertions(+), 54 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index f1d9f39a13afeba23e5b7d2f0cb86d8ea67f5d30..393046debb71ddc693bed21beacbd0e32e1c6c3d 100644 GIT binary patch delta 102 zcmZoMXffE3!OFBkc=9?{v&josxtLP7PX54Z#+RF);*wHYlFYzx$=-h%P{@Vx!Q@1C s%gK3cNlY%ilcm_LCiAd!GTZwfpPayMg{mGT<iVIQu`q5kJI7ys01Q7OqW}N^ delta 102 zcmZoMXffE3!OGNCJb4|f+2jSRTuf>YCx2iy<IBxYaY-pHNoHWUWUsa!DCEL;U~(e6 s<>WlJB&OEylcm_LCiAd!GTVK5H#vdb3Ryiw$b)gg#KO4E>>Pjj0ay7Y6951J diff --git a/Unit-2-Journal/Unit-2-Journal/.DS_Store b/Unit-2-Journal/Unit-2-Journal/.DS_Store index 96fc673ed2bd642f0c3f431e988c0854aa4098c8..1a065d6210036e06db310c1e4b69ba7a1445c0bf 100644 GIT binary patch delta 28 ecmZoMXffC@n~B-p=g8!FOzu$HX0r<O0}%j}3knec delta 28 ecmZoMXffC@n~B-(%f-p_nB1YX&1Mzm2O<Ee2Mc)s diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 5ed524d..4d45906 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -70,13 +70,13 @@ <state key="normal" title="Log In"/> </button> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jIF-cz-Aqv"> - <rect key="frame" x="20" y="417" width="560" height="36"/> + <rect key="frame" x="20" y="417" width="560" height="85"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Don't have an account?" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ive-nb-IEu"> <rect key="frame" x="109" y="8" width="179" height="21"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="17"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="s8y-Iw-Nef"> @@ -173,7 +173,7 @@ <constraint firstAttribute="trailing" secondItem="qle-iq-7ST" secondAttribute="trailing" id="vRx-Mn-xec"/> </constraints> <connections> - <segue destination="0x4-Nu-mZ8" kind="show" id="HbN-3P-AbF"/> + <segue destination="z1K-z0-Vef" kind="show" id="fYZ-7d-vsv"/> </connections> </collectionViewCell> </cells> @@ -182,10 +182,14 @@ <outlet property="delegate" destination="Gih-78-N3X" id="TWL-m7-WCV"/> </connections> </collectionView> + <connections> + <segue destination="0x4-Nu-mZ8" kind="show" identifier="pushToSearch" id="NAv-Qf-gYM"/> + <segue destination="WZe-UX-wgc" kind="show" identifier="pushToWishList" id="7YG-CM-bN7"/> + </connections> </collectionViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="blD-s8-5JB" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="359" y="2136"/> + <point key="canvasLocation" x="375" y="1676"/> </scene> <!--Search --> <scene sceneID="eAD-0s-cgb"> @@ -375,11 +379,12 @@ <outlet property="otherButton" destination="kEa-FP-z2a" id="zZJ-KO-l1f"/> <outlet property="searchTextField" destination="zob-sY-qha" id="CSN-S0-Rzp"/> <outlet property="tableView" destination="twc-ko-3Rx" id="4Cw-TH-Ai6"/> + <segue destination="Gih-78-N3X" kind="show" identifier="pushToJournalFromSearch" id="HwW-rI-Qas"/> </connections> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1061" y="2136"/> + <point key="canvasLocation" x="1103" y="1676"/> </scene> <!--Create Journal Entry View Controller--> <scene sceneID="3xO-3p-x8L"> @@ -408,19 +413,19 @@ <rect key="frame" x="145" y="5" width="415" height="30"/> <animations/> <fontDescription key="fontDescription" type="boldSystem" pointSize="25"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HdG-mr-PTo"> <rect key="frame" x="145" y="111" width="415" height="24"/> <fontDescription key="fontDescription" type="system" pointSize="20"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> <rect key="frame" x="145" y="58" width="415" height="24"/> <fontDescription key="fontDescription" type="system" pointSize="20"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> </subviews> @@ -486,10 +491,42 @@ </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sqd-7P-Gsl"> <rect key="frame" x="20" y="410" width="560" height="75"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="T1m-hx-A3U"> + <rect key="frame" x="262" y="23" width="36" height="30"/> + <state key="normal" title="three"/> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Qtk-Je-SxB"> + <rect key="frame" x="348" y="23" width="30" height="30"/> + <state key="normal" title="four"/> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uHJ-PQ-48N"> + <rect key="frame" x="428" y="23" width="30" height="30"/> + <state key="normal" title="five"/> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JGM-yq-jaY"> + <rect key="frame" x="102" y="23" width="30" height="30"/> + <state key="normal" title="one"/> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="090-cp-Tsv"> + <rect key="frame" x="182" y="23" width="30" height="30"/> + <state key="normal" title="two"/> + </button> + </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <constraints> + <constraint firstItem="T1m-hx-A3U" firstAttribute="centerX" secondItem="sqd-7P-Gsl" secondAttribute="centerX" id="9mJ-sz-Mke"/> + <constraint firstItem="JGM-yq-jaY" firstAttribute="centerY" secondItem="sqd-7P-Gsl" secondAttribute="centerY" id="EEa-F2-EkA"/> + <constraint firstItem="Qtk-Je-SxB" firstAttribute="centerY" secondItem="sqd-7P-Gsl" secondAttribute="centerY" id="Gf1-fk-x2Y"/> + <constraint firstItem="T1m-hx-A3U" firstAttribute="leading" secondItem="090-cp-Tsv" secondAttribute="trailing" constant="50" id="P3h-5S-o1y"/> + <constraint firstItem="uHJ-PQ-48N" firstAttribute="leading" secondItem="Qtk-Je-SxB" secondAttribute="trailing" constant="50" id="VbB-ak-tGu"/> + <constraint firstItem="Qtk-Je-SxB" firstAttribute="leading" secondItem="T1m-hx-A3U" secondAttribute="trailing" constant="50" id="Y6I-c6-xB6"/> + <constraint firstItem="T1m-hx-A3U" firstAttribute="centerY" secondItem="sqd-7P-Gsl" secondAttribute="centerY" id="bCZ-dI-FCz"/> + <constraint firstItem="090-cp-Tsv" firstAttribute="centerY" secondItem="sqd-7P-Gsl" secondAttribute="centerY" id="cM4-Nu-Odg"/> <constraint firstAttribute="height" constant="75" id="ggG-rP-Gtk"/> + <constraint firstItem="090-cp-Tsv" firstAttribute="leading" secondItem="JGM-yq-jaY" secondAttribute="trailing" constant="50" id="tHP-qh-v8A"/> + <constraint firstItem="uHJ-PQ-48N" firstAttribute="centerY" secondItem="sqd-7P-Gsl" secondAttribute="centerY" id="weY-sI-fm3"/> </constraints> </view> </subviews> @@ -518,7 +555,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="TK9-37-5bs" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1433" y="3136"/> + <point key="canvasLocation" x="1245" y="2710"/> </scene> <!--Wish List--> <scene sceneID="WUv-ax-PAc"> @@ -543,13 +580,13 @@ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bdy-xS-1Zi"> <rect key="frame" x="74" y="0.0" width="42" height="21"/> <fontDescription key="fontDescription" type="system" pointSize="17"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zzx-oe-N5F"> <rect key="frame" x="74" y="39" width="42" height="21"/> <fontDescription key="fontDescription" type="system" pointSize="17"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> </subviews> @@ -566,10 +603,13 @@ <outlet property="delegate" destination="WZe-UX-wgc" id="KJE-Pm-bbr"/> </connections> </tableView> + <connections> + <segue destination="Gih-78-N3X" kind="show" identifier="pushtoJournalFromWish" id="Rtf-dd-JWq"/> + </connections> </tableViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="vQP-Qq-o7U" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="-389" y="2136"/> + <point key="canvasLocation" x="-409" y="1664"/> </scene> <!--View Controller--> <scene sceneID="Sp1-uX-mf4"> @@ -640,19 +680,19 @@ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="characterWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uPb-Kv-PyA"> <rect key="frame" x="145" y="5" width="415" height="30"/> <fontDescription key="fontDescription" type="boldSystem" pointSize="25"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eHa-Fq-bcU"> <rect key="frame" x="145" y="111" width="415" height="24"/> <fontDescription key="fontDescription" type="system" pointSize="20"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RUW-ww-VHC"> <rect key="frame" x="145" y="58" width="415" height="24"/> <fontDescription key="fontDescription" type="system" pointSize="20"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> </subviews> @@ -713,9 +753,41 @@ </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ly8-tU-R6b"> <rect key="frame" x="20" y="410" width="560" height="75"/> - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rcY-Tz-IPf"> + <rect key="frame" x="102" y="23" width="30" height="30"/> + <state key="normal" title="one"/> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="M7h-zf-QrN"> + <rect key="frame" x="262" y="23" width="36" height="30"/> + <state key="normal" title="three"/> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JU3-mC-wxo"> + <rect key="frame" x="348" y="23" width="30" height="30"/> + <state key="normal" title="four"/> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Pt8-eG-uys"> + <rect key="frame" x="428" y="23" width="30" height="30"/> + <state key="normal" title="five"/> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zLL-Ls-a62"> + <rect key="frame" x="182" y="23" width="30" height="30"/> + <state key="normal" title="two"/> + </button> + </subviews> + <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <constraints> + <constraint firstItem="zLL-Ls-a62" firstAttribute="centerY" secondItem="Ly8-tU-R6b" secondAttribute="centerY" id="8YT-wf-Yyd"/> + <constraint firstItem="JU3-mC-wxo" firstAttribute="centerY" secondItem="Ly8-tU-R6b" secondAttribute="centerY" id="EYT-AS-Ucr"/> + <constraint firstItem="M7h-zf-QrN" firstAttribute="leading" secondItem="zLL-Ls-a62" secondAttribute="trailing" constant="50" id="M3j-5H-SKe"/> + <constraint firstItem="zLL-Ls-a62" firstAttribute="leading" secondItem="rcY-Tz-IPf" secondAttribute="trailing" constant="50" id="Nf0-Rf-UQF"/> + <constraint firstItem="Pt8-eG-uys" firstAttribute="centerY" secondItem="Ly8-tU-R6b" secondAttribute="centerY" id="Z0q-cs-6eh"/> + <constraint firstItem="Pt8-eG-uys" firstAttribute="leading" secondItem="JU3-mC-wxo" secondAttribute="trailing" constant="50" id="ZNI-vl-J2M"/> + <constraint firstItem="M7h-zf-QrN" firstAttribute="centerY" secondItem="Ly8-tU-R6b" secondAttribute="centerY" id="cD6-q0-u8V"/> + <constraint firstItem="M7h-zf-QrN" firstAttribute="centerX" secondItem="Ly8-tU-R6b" secondAttribute="centerX" id="gPb-rg-pLb"/> + <constraint firstItem="rcY-Tz-IPf" firstAttribute="centerY" secondItem="Ly8-tU-R6b" secondAttribute="centerY" id="tim-Fj-76d"/> <constraint firstAttribute="height" constant="75" id="umD-ss-qeO"/> + <constraint firstItem="JU3-mC-wxo" firstAttribute="leading" secondItem="M7h-zf-QrN" secondAttribute="trailing" constant="50" id="xSf-tn-Ha9"/> </constraints> </view> </subviews> @@ -743,10 +815,12 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="gKL-Ix-enk" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="345" y="3120"/> + <point key="canvasLocation" x="365" y="3146"/> </scene> </scenes> <inferredMetricsTieBreakers> + <segue reference="AZL-rD-3yX"/> <segue reference="a4i-zx-cvK"/> + <segue reference="S6k-uR-hRq"/> </inferredMetricsTieBreakers> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index b1f8940..6214172 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -16,36 +16,49 @@ @implementation JournalMainCollectionViewController //static NSString * const reuseIdentifier = @"Cell"; -- (void)viewDidLoad { +- (void)viewDidLoad +{ [super viewDidLoad]; collectionImages = [NSArray arrayWithObjects:@"destroyer.png", @"drake.png", @"big_nerd_ranch.png", @"talking_heads.png", @"true_detective", @"sleater_kinney.png", @"x-files.png", @"run_the_jewels.png", @"lean_startup.png", nil]; + [self setUpSwipeGestures]; + + self.collectionView.alwaysBounceVertical = YES; + // [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"]; } +#pragma mark - setup swipe gestures -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +- (void)setUpSwipeGestures { - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - - self.collectionView.alwaysBounceVertical = YES; + UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedLeft:)]; + swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; + [self.view addGestureRecognizer:swipeLeft]; - return self; + UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedRight:)]; + swipeRight.direction = UISwipeGestureRecognizerDirectionRight; + [self.view addGestureRecognizer:swipeRight]; } -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. +- (void)userSwipedLeft:(UISwipeGestureRecognizer*)swipe +{ + if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { + [self performSegueWithIdentifier:@"pushToSearch" sender:self]; + } +} + +- (void)userSwipedRight:(UISwipeGestureRecognizer*)swipe +{ + if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { + [self performSegueWithIdentifier:@"pushToWishList" sender:self]; + } } -/* #pragma mark - Navigation -// In a storyboard-based application, you will often want to do a little preparation before navigation +/* - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index b9e7fd8..47262fe 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -21,25 +21,41 @@ @interface SearchAPIViewController () @implementation SearchAPIViewController -- (void)viewDidLoad { +- (void)viewDidLoad +{ [super viewDidLoad]; - // Do any additional setup after loading the view. + [self setUpSwipeGestures]; } -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. +#pragma mark - setup swipe gestures + +- (void)setUpSwipeGestures +{ +// UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedLeft:)]; +// swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; +// [self.view addGestureRecognizer:swipeLeft]; + + UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedRight:)]; + swipeRight.direction = UISwipeGestureRecognizerDirectionRight; + [self.view addGestureRecognizer:swipeRight]; } -/* -#pragma mark - Navigation +//- (void)userSwipedLeft:(UISwipeGestureRecognizer*)swipe +//{ +// if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { +// [self performSegueWithIdentifier:@"pushToSearch" sender:self]; +// } +//} -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. +- (void)userSwipedRight:(UISwipeGestureRecognizer*)swipe +{ + if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { + [self performSegueWithIdentifier:@"pushToJournalFromSearch" sender:self]; + } } -*/ + +#pragma mark - setup buttons + - (IBAction)mediaButtonTypeSelected:(id)sender { } diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index 28ac88d..7e288e9 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -14,19 +14,29 @@ @interface WishListTableViewController () @implementation WishListTableViewController -- (void)viewDidLoad { +- (void)viewDidLoad +{ [super viewDidLoad]; - - // Uncomment the following line to preserve selection between presentations. - // self.clearsSelectionOnViewWillAppear = NO; - - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. - // self.navigationItem.rightBarButtonItem = self.editButtonItem; + [self setUpSwipeGestures]; +} + +#pragma mark - swipe gestures + +- (void)setUpSwipeGestures +{ + UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedLeft:)]; + swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; + [self.view addGestureRecognizer:swipeLeft]; } -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. +- (void)userSwipedLeft:(UISwipeGestureRecognizer*)swipe +{ + if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { + + CGPoint point = [swipe locationInView:self.tableView]; + NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:point]; + [self performSegueWithIdentifier:@"pushtoJournalFromWish" sender:self]; + } } #pragma mark - Table view data source From c413a2696815ebba4ff3a5428fd4e33070571c28 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Sat, 10 Oct 2015 23:22:01 -0400 Subject: [PATCH 12/86] connected iTunes search API --- .../Unit-2-Journal.xcodeproj/project.pbxproj | 44 +++++-- Unit-2-Journal/Unit-2-Journal/APIManager.h | 17 +++ Unit-2-Journal/Unit-2-Journal/APIManager.m | 36 ++++++ .../Unit-2-Journal/Base.lproj/Main.storyboard | 36 ++++-- .../Unit-2-Journal/SearchAPIViewController.m | 120 +++++++++++++++--- 5 files changed, 218 insertions(+), 35 deletions(-) create mode 100644 Unit-2-Journal/Unit-2-Journal/APIManager.h create mode 100644 Unit-2-Journal/Unit-2-Journal/APIManager.m diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index bff38bd..fb4d082 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -31,6 +31,7 @@ 9A2FFC3B1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC391BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld */; }; 9A2FFC3D1BC84BF200E880D3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */; }; 9A2FFC401BC84BF200E880D3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A2FFC3E1BC84BF200E880D3 /* LaunchScreen.storyboard */; }; + 9AAB40061BC9FABC00FD7227 /* APIManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AAB40051BC9FABC00FD7227 /* APIManager.m */; settings = {ASSET_TAGS = (); }; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -70,6 +71,8 @@ 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 9A2FFC3F1BC84BF200E880D3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 9A2FFC411BC84BF200E880D3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + 9AAB40041BC9FABC00FD7227 /* APIManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIManager.h; sourceTree = "<group>"; }; + 9AAB40051BC9FABC00FD7227 /* APIManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APIManager.m; sourceTree = "<group>"; }; FAF24AD380284C55768010A2 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -139,17 +142,8 @@ 5AE224801BC8BB4D004AEB77 /* Login/SignUp */, 9A2FFC301BC84BF200E880D3 /* AppDelegate.h */, 9A2FFC311BC84BF200E880D3 /* AppDelegate.m */, - 9A2FFC361BC84BF200E880D3 /* Main.storyboard */, - 4DCBE1301BC98EF90075BA2C /* JournalMainCollectionViewController.h */, - 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */, - 4DCBE1451BC9AD6A0075BA2C /* SearchAPIViewController.h */, - 4DCBE1461BC9AD6A0075BA2C /* SearchAPIViewController.m */, - 4DCBE1481BC9ADAE0075BA2C /* CreateJournalEntryViewController.h */, - 4DCBE1491BC9ADAE0075BA2C /* CreateJournalEntryViewController.m */, - 4DCBE14B1BC9ADE00075BA2C /* WishListTableViewController.h */, - 4DCBE14C1BC9ADE00075BA2C /* WishListTableViewController.m */, - 4DCBE14E1BC9BD800075BA2C /* ViewCompletedEntryViewController.h */, - 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */, + 9AAB40031BC9ECAA00FD7227 /* Classes & Managers */, + 9AAB40021BC9EC7300FD7227 /* ViewControllers */, 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */, 9A2FFC3E1BC84BF200E880D3 /* LaunchScreen.storyboard */, 9A2FFC411BC84BF200E880D3 /* Info.plist */, @@ -176,6 +170,33 @@ name = "Supporting Files"; sourceTree = "<group>"; }; + 9AAB40021BC9EC7300FD7227 /* ViewControllers */ = { + isa = PBXGroup; + children = ( + 4DCBE1301BC98EF90075BA2C /* JournalMainCollectionViewController.h */, + 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */, + 4DCBE1451BC9AD6A0075BA2C /* SearchAPIViewController.h */, + 4DCBE1461BC9AD6A0075BA2C /* SearchAPIViewController.m */, + 4DCBE1481BC9ADAE0075BA2C /* CreateJournalEntryViewController.h */, + 4DCBE1491BC9ADAE0075BA2C /* CreateJournalEntryViewController.m */, + 4DCBE14B1BC9ADE00075BA2C /* WishListTableViewController.h */, + 4DCBE14C1BC9ADE00075BA2C /* WishListTableViewController.m */, + 4DCBE14E1BC9BD800075BA2C /* ViewCompletedEntryViewController.h */, + 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */, + 9A2FFC361BC84BF200E880D3 /* Main.storyboard */, + ); + name = ViewControllers; + sourceTree = "<group>"; + }; + 9AAB40031BC9ECAA00FD7227 /* Classes & Managers */ = { + isa = PBXGroup; + children = ( + 9AAB40041BC9FABC00FD7227 /* APIManager.h */, + 9AAB40051BC9FABC00FD7227 /* APIManager.m */, + ); + name = "Classes & Managers"; + sourceTree = "<group>"; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -299,6 +320,7 @@ 9A2FFC3B1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld in Sources */, 4DCBE14D1BC9ADE00075BA2C /* WishListTableViewController.m in Sources */, 5A50331A1BC8D0E4001CBA5C /* MainTableViewController.m in Sources */, + 9AAB40061BC9FABC00FD7227 /* APIManager.m in Sources */, 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */, 4DCBE1501BC9BD800075BA2C /* ViewCompletedEntryViewController.m in Sources */, 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */, diff --git a/Unit-2-Journal/Unit-2-Journal/APIManager.h b/Unit-2-Journal/Unit-2-Journal/APIManager.h new file mode 100644 index 0000000..4c651a6 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/APIManager.h @@ -0,0 +1,17 @@ +// +// APIManager.h +// LearnAPI +// +// Created by Jamaal Sedayao on 9/20/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <Foundation/Foundation.h> + +@interface APIManager : NSObject + + ++ (void) GETRequestWithURL:(NSURL*)URL + completionHandler:(void(^)(NSData*data,NSURLResponse*response,NSError*error))completionHandler; + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/APIManager.m b/Unit-2-Journal/Unit-2-Journal/APIManager.m new file mode 100644 index 0000000..a7a24f4 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/APIManager.m @@ -0,0 +1,36 @@ +// +// APIManager.m +// LearnAPI +// +// Created by Jamaal Sedayao on 9/20/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "APIManager.h" + +@implementation APIManager + +//takes a url, make an http request and pop back into the main thread + +//create a class method - gives us ability to not have to call alloc init on it ++ (void) GETRequestWithURL:(NSURL*)URL + completionHandler:(void(^)(NSData*data,NSURLResponse*response,NSError*error)) +completionHandler { + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *task = [session dataTaskWithURL:URL completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { + + dispatch_async(dispatch_get_main_queue(), ^{ + + completionHandler(data, response, error); + + }); + }]; + + [task resume]; +} + + + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 5ed524d..51f2d96 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Gih-78-N3X"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Gih-78-N3X"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -19,7 +19,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -69,7 +69,7 @@ <animations/> <state key="normal" title="Log In"/> </button> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jIF-cz-Aqv"> + <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jIF-cz-Aqv"> <rect key="frame" x="20" y="417" width="560" height="36"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Don't have an account?" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ive-nb-IEu"> @@ -205,7 +205,7 @@ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cfG-sQ-zQZ"> <rect key="frame" x="0.0" y="0.0" width="150" height="100"/> <animations/> - <state key="normal" title="Music"/> + <state key="normal" title="music"/> <connections> <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="pgn-O1-WAi"/> </connections> @@ -213,7 +213,7 @@ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CLE-DE-TTz"> <rect key="frame" x="150" y="0.0" width="150" height="100"/> <animations/> - <state key="normal" title="Movies"/> + <state key="normal" title="movie"/> <connections> <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="tdC-rt-Ts9"/> </connections> @@ -331,11 +331,11 @@ <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <prototypes> - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="oHk-9R-1hr"> + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="APIResultsIdentifier" id="oHk-9R-1hr"> <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -413,12 +413,14 @@ </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HdG-mr-PTo"> <rect key="frame" x="145" y="111" width="415" height="24"/> + <animations/> <fontDescription key="fontDescription" type="system" pointSize="20"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> <rect key="frame" x="145" y="58" width="415" height="24"/> + <animations/> <fontDescription key="fontDescription" type="system" pointSize="20"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> @@ -466,12 +468,14 @@ <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7yP-CD-6Bn"> <rect key="frame" x="185" y="42" width="191" height="30"/> + <animations/> <state key="normal" title="Save and Add to Completed"/> <connections> <segue destination="Gih-78-N3X" kind="show" id="AZL-rD-3yX"/> </connections> </button> </subviews> + <animations/> <color key="backgroundColor" red="0.99607843139999996" green="0.79215686269999996" blue="0.086274509799999996" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="7yP-CD-6Bn" firstAttribute="centerY" secondItem="RJM-Va-Q0I" secondAttribute="centerY" id="a3v-fV-Vsm"/> @@ -534,20 +538,23 @@ <rect key="frame" x="0.0" y="28" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> - <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> + <rect key="frame" x="0.0" y="0.0" width="567" height="63"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="346-CT-Uvl"> - <rect key="frame" x="8" y="0.0" width="58" height="60.5"/> + <rect key="frame" x="8" y="0.0" width="58" height="61"/> + <animations/> </imageView> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bdy-xS-1Zi"> <rect key="frame" x="74" y="0.0" width="42" height="21"/> + <animations/> <fontDescription key="fontDescription" type="system" pointSize="17"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zzx-oe-N5F"> <rect key="frame" x="74" y="39" width="42" height="21"/> + <animations/> <fontDescription key="fontDescription" type="system" pointSize="17"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> @@ -632,6 +639,7 @@ <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="P8h-8Q-AZm"> <rect key="frame" x="0.0" y="5" width="130" height="130"/> + <animations/> <constraints> <constraint firstAttribute="width" constant="130" id="T4f-sf-dem"/> <constraint firstAttribute="height" constant="130" id="ZGH-hy-6dT"/> @@ -639,23 +647,27 @@ </imageView> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="characterWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uPb-Kv-PyA"> <rect key="frame" x="145" y="5" width="415" height="30"/> + <animations/> <fontDescription key="fontDescription" type="boldSystem" pointSize="25"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eHa-Fq-bcU"> <rect key="frame" x="145" y="111" width="415" height="24"/> + <animations/> <fontDescription key="fontDescription" type="system" pointSize="20"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RUW-ww-VHC"> <rect key="frame" x="145" y="58" width="415" height="24"/> + <animations/> <fontDescription key="fontDescription" type="system" pointSize="20"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> </label> </subviews> + <animations/> <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> <constraints> <constraint firstItem="P8h-8Q-AZm" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="top" constant="5" id="4Iw-Mk-e5C"/> @@ -678,11 +690,13 @@ <subviews> <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> <rect key="frame" x="5" y="5" width="550" height="240"/> + <animations/> <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string> <fontDescription key="fontDescription" type="system" pointSize="14"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> </textView> </subviews> + <animations/> <color key="backgroundColor" red="1" green="0.77670592760000001" blue="0.97496195610000003" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="riX-qw-M2j" firstAttribute="leading" secondItem="bI1-9Y-Lhn" secondAttribute="leading" constant="5" id="9qy-ow-Nql"/> @@ -696,9 +710,11 @@ <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> <rect key="frame" x="258" y="42" width="45" height="30"/> + <animations/> <state key="normal" title="Delete"/> </button> </subviews> + <animations/> <color key="backgroundColor" red="0.99607843139999996" green="0.79215686269999996" blue="0.086274509799999996" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstAttribute="height" constant="100" id="4cP-Gz-KpJ"/> @@ -713,12 +729,14 @@ </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ly8-tU-R6b"> <rect key="frame" x="20" y="410" width="560" height="75"/> + <animations/> <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <constraints> <constraint firstAttribute="height" constant="75" id="umD-ss-qeO"/> </constraints> </view> </subviews> + <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <constraints> <constraint firstItem="Ly8-tU-R6b" firstAttribute="leading" secondItem="EZl-sI-Vwl" secondAttribute="leadingMargin" id="1T0-Ze-kQC"/> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index b9e7fd8..72b33b8 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -7,8 +7,15 @@ // #import "SearchAPIViewController.h" +#import <AFNetworking/AFNetworking.h> +#import "APIManager.h" @interface SearchAPIViewController () +< +UITableViewDataSource, +UITableViewDelegate, +UITextFieldDelegate +> @property (weak, nonatomic) IBOutlet UITextField *searchTextField; @property (weak, nonatomic) IBOutlet UITableView *tableView; @@ -16,6 +23,7 @@ @interface SearchAPIViewController () @property (weak, nonatomic) IBOutlet UIButton *moviesButton; @property (weak, nonatomic) IBOutlet UIButton *booksButton; @property (weak, nonatomic) IBOutlet UIButton *otherButton; +@property (nonatomic) NSString *media; @end @@ -23,33 +31,115 @@ @implementation SearchAPIViewController - (void)viewDidLoad { [super viewDidLoad]; - // Do any additional setup after loading the view. + self.tableView.delegate = self; + self.tableView.dataSource = self; + self.searchTextField.delegate = self; + + } -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -/* -#pragma mark - Navigation -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. -} -*/ - (IBAction)mediaButtonTypeSelected:(id)sender { + self.media = [sender currentTitle]; + NSLog(@"Media: %@",self.media); } - - (IBAction)mediaButtonOther:(id)sender { } - (IBAction)createJournalEntryButtonTapped:(id)sender { + } - (IBAction)addToWishListButtonTapped:(id)sender { + +} +- (void) makeNewiTunesAPIRequestWithSearchTerm:(NSString *)term + inMedia:(NSString *)media + callbackBlock:(void(^)())block{ + + NSString *urlString = [NSString stringWithFormat: + @"https://itunes.apple.com/search?media=%@&term=%@",media,term]; + + NSString *encodedString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; + + NSLog(@"%@", encodedString); + + NSURL *url = [NSURL URLWithString:encodedString]; + + [APIManager GETRequestWithURL:url + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + + if (data != nil){ + NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; + + //NSLog(@"%@",json); + + NSArray *results = [json objectForKey:@"results"]; + + NSLog(@"Results: %@",results); + + //self.searchResults = [[NSMutableArray alloc]init]; + + +// for (NSDictionary *result in results){ +// +// NSString *artistName = [result objectForKey:@"artistName"]; +// NSString *albumName = [result objectForKey:@"collectionName"]; +// NSString *songName = [result objectForKey:@"trackName"]; +// NSURL *songPreview = [NSURL URLWithString:[result objectForKey:@"previewUrl"]]; +// +// iTunesMusicResults *musicObject = [[iTunesMusicResults alloc]init]; +// musicObject.artist = artistName; +// musicObject.album = albumName; +// musicObject.song = songName; +// musicObject.songURL = songPreview; +// +// // self.audioPlayer = musicObject.songPlayer; +// +// [self.searchResults addObject:musicObject]; +// } + + block(); + } + }]; + +} +- (BOOL)textFieldShouldReturn:(UITextField *)textField{ + + [self.view endEditing:YES]; + + //make an API request + [self makeNewiTunesAPIRequestWithSearchTerm:textField.text + inMedia:self.media + callbackBlock:^{ + [self.tableView reloadData]; + }]; + + return YES; } +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ + return 1; +} +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ + return 1; +} +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"APIResultsIdentifier" forIndexPath:indexPath]; + + + return cell; +} + + +/* + #pragma mark - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. + } + */ + @end From 608dd30812a12ffaa73e4770234359b9b1564ece Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 11 Oct 2015 11:47:47 -0400 Subject: [PATCH 13/86] added identifier --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 68 +++++++++--------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 393046debb71ddc693bed21beacbd0e32e1c6c3d..60e61fd6f209068a9d9eeedae57a6874bb288e62 100644 GIT binary patch delta 102 zcmZoMXffE3!OGNCJb4|f+2jSRTuf$-lRvPU@#W^HxTKVpBr`BvvIh&fFdmqk$Zk0~ qk1dHQuWzyxyVYbKc1~uyFYhKNuv;OkhX{EvHcTvx+sw}KmmdHg;3NeA delta 102 zcmZoMXffE3!OFBkc=9?{v&josxtLP7PX54Z#+RF);*wHYlFYzx$=-h%P{@Vx!Q@1C s%gK3cNlY%ilcm_LCiAd!GTZwfpPayMg{mGT<iVIQu`q5kJI7ys01Q7OqW}N^ diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 4d45906..cdf614b 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -209,7 +209,7 @@ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cfG-sQ-zQZ"> <rect key="frame" x="0.0" y="0.0" width="150" height="100"/> <animations/> - <state key="normal" title="Music"/> + <state key="normal" title="music"/> <connections> <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="pgn-O1-WAi"/> </connections> @@ -217,7 +217,7 @@ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CLE-DE-TTz"> <rect key="frame" x="150" y="0.0" width="150" height="100"/> <animations/> - <state key="normal" title="Movies"/> + <state key="normal" title="movie"/> <connections> <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="tdC-rt-Ts9"/> </connections> @@ -246,14 +246,6 @@ <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6gJ-up-Tie"> <rect key="frame" x="300" y="20" width="300" height="100"/> <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rgg-OH-neT"> - <rect key="frame" x="0.0" y="0.0" width="150" height="100"/> - <animations/> - <state key="normal" title="Books"/> - <connections> - <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="n38-IM-iTM"/> - </connections> - </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kEa-FP-z2a"> <rect key="frame" x="150" y="0.0" width="150" height="100"/> <animations/> @@ -262,6 +254,14 @@ <action selector="mediaButtonOther:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="XpB-L1-XNH"/> </connections> </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rgg-OH-neT"> + <rect key="frame" x="0.0" y="0.0" width="150" height="100"/> + <animations/> + <state key="normal" title="Books"/> + <connections> + <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="n38-IM-iTM"/> + </connections> + </button> </subviews> <animations/> <color key="backgroundColor" red="1" green="0.5210467205" blue="0.69047673470000004" alpha="1" colorSpace="calibratedRGB"/> @@ -283,27 +283,6 @@ </mask> </variation> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4h9-oR-C40"> - <rect key="frame" x="0.0" y="120" width="600" height="50"/> - <subviews> - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Search" textAlignment="natural" clearsOnBeginEditing="YES" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="zob-sY-qha"> - <rect key="frame" x="125" y="10" width="350" height="30"/> - <animations/> - <constraints> - <constraint firstAttribute="width" constant="350" id="FjN-tR-Pz2"/> - </constraints> - <fontDescription key="fontDescription" type="system" pointSize="14"/> - <textInputTraits key="textInputTraits"/> - </textField> - </subviews> - <animations/> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> - <constraints> - <constraint firstItem="zob-sY-qha" firstAttribute="centerX" secondItem="4h9-oR-C40" secondAttribute="centerX" id="cbv-OU-esH"/> - <constraint firstAttribute="height" constant="50" id="fyg-AW-jv6"/> - <constraint firstItem="zob-sY-qha" firstAttribute="centerY" secondItem="4h9-oR-C40" secondAttribute="centerY" id="x76-Iu-Ldy"/> - </constraints> - </view> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q0c-Ez-WJB"> <rect key="frame" x="0.0" y="550" width="300" height="50"/> <animations/> @@ -335,7 +314,7 @@ <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <prototypes> - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="oHk-9R-1hr"> + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="APIResultsIdentifier" id="oHk-9R-1hr"> <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> @@ -347,6 +326,27 @@ </tableViewCell> </prototypes> </tableView> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4h9-oR-C40"> + <rect key="frame" x="0.0" y="120" width="600" height="50"/> + <subviews> + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Search" textAlignment="natural" clearsOnBeginEditing="YES" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="zob-sY-qha"> + <rect key="frame" x="125" y="10" width="350" height="30"/> + <animations/> + <constraints> + <constraint firstAttribute="width" constant="350" id="FjN-tR-Pz2"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <textInputTraits key="textInputTraits"/> + </textField> + </subviews> + <animations/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstItem="zob-sY-qha" firstAttribute="centerX" secondItem="4h9-oR-C40" secondAttribute="centerX" id="cbv-OU-esH"/> + <constraint firstAttribute="height" constant="50" id="fyg-AW-jv6"/> + <constraint firstItem="zob-sY-qha" firstAttribute="centerY" secondItem="4h9-oR-C40" secondAttribute="centerY" id="x76-Iu-Ldy"/> + </constraints> + </view> </subviews> <animations/> <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> @@ -815,11 +815,11 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="gKL-Ix-enk" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="365" y="3146"/> + <point key="canvasLocation" x="405" y="2710"/> </scene> </scenes> <inferredMetricsTieBreakers> - <segue reference="AZL-rD-3yX"/> + <segue reference="HwW-rI-Qas"/> <segue reference="a4i-zx-cvK"/> <segue reference="S6k-uR-hRq"/> </inferredMetricsTieBreakers> From d1187e2091be76256274f7cc94d4e640815aee8f Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 11 Oct 2015 12:07:41 -0400 Subject: [PATCH 14/86] merge confilicts fixed, all is well --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 8 +++++- Unit-2-Journal/Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 18 +++----------- .../Unit-2-Journal/SearchAPIViewController.m | 23 +++--------------- 5 files changed, 14 insertions(+), 35 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 60e61fd6f209068a9d9eeedae57a6874bb288e62..556ff1f417d9f891616047d7f2d6946f950d5ce6 100644 GIT binary patch delta 84 zcmZoMXfc@J&&a<qU^g=(|70GPvy<nt$a1C>C+8&P=jSj^UdL)OnTs`!ssAdFX*PKQ nD<`vqnf&ArK=vcncT5$tCQGqfP3B>r!?<8#q3LFJj=%f>qZ=HF delta 62 zcmV-E0Kxx+FoZCWPXP|GP`d*G4wDQ7&65HJj{=Hwlm7%X18r|alMV(!lM4p!0&b3z UUj{gnGY6glfRS-tvj+(M4|E6=YybcN diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index fb4d082..e154ed6 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -230,7 +230,7 @@ TargetAttributes = { 9A2FFC291BC84BF100E880D3 = { CreatedOnToolsVersion = 7.0; - DevelopmentTeam = Z368FJ9ZFJ; + DevelopmentTeam = 5F2A5ZZ575; }; }; }; @@ -436,11 +436,14 @@ baseConfigurationReference = 2BC0A6490F88476E5C31E3B1 /* Pods.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.jamaalsedayao.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; }; name = Debug; }; @@ -449,11 +452,14 @@ baseConfigurationReference = 1F41A29CEEC52ED6A148CCE5 /* Pods.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.jamaalsedayao.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; }; name = Release; }; diff --git a/Unit-2-Journal/Unit-2-Journal/.DS_Store b/Unit-2-Journal/Unit-2-Journal/.DS_Store index 1a065d6210036e06db310c1e4b69ba7a1445c0bf..28285321c8104fafe1f23db8ee0e70013cc40c99 100644 GIT binary patch delta 102 zcmZoMXfc@JFUrcmz`)4BAi%(&$B@HNz)-}H&ycm*k$E|z5=e@R!HFS}p_m~RSvsXS pIVUMUKZkMh0w$};ZcL%fc3&<|p2y@4rENB=Fdt&s%+B$b9{^zK8odAj delta 72 zcmZoMXfc@JFUrEez`)4BAi%&7&tL?^UJUsRrJEC(moqZ5Og_kDH94Irl-b_r$mIP@ W?oirhvn%r<mWd6Do7p-3@&f=}krTxL diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index c9596c1..22f61f4 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Gih-78-N3X"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Gih-78-N3X"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -19,7 +19,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -69,13 +69,8 @@ <animations/> <state key="normal" title="Log In"/> </button> -<<<<<<< HEAD - <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jIF-cz-Aqv"> - <rect key="frame" x="20" y="417" width="560" height="36"/> -======= <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jIF-cz-Aqv"> <rect key="frame" x="20" y="417" width="560" height="85"/> ->>>>>>> 608dd30812a12ffaa73e4770234359b9b1564ece <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Don't have an account?" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ive-nb-IEu"> <rect key="frame" x="109" y="8" width="179" height="21"/> @@ -323,7 +318,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -580,7 +575,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> - <rect key="frame" x="0.0" y="0.0" width="567" height="63"/> + <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="346-CT-Uvl"> @@ -774,10 +769,6 @@ </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ly8-tU-R6b"> <rect key="frame" x="20" y="410" width="560" height="75"/> -<<<<<<< HEAD - <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> -======= <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rcY-Tz-IPf"> <rect key="frame" x="102" y="23" width="30" height="30"/> @@ -801,7 +792,6 @@ </button> </subviews> <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> ->>>>>>> 608dd30812a12ffaa73e4770234359b9b1564ece <constraints> <constraint firstItem="zLL-Ls-a62" firstAttribute="centerY" secondItem="Ly8-tU-R6b" secondAttribute="centerY" id="8YT-wf-Yyd"/> <constraint firstItem="JU3-mC-wxo" firstAttribute="centerY" secondItem="Ly8-tU-R6b" secondAttribute="centerY" id="EYT-AS-Ucr"/> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index f77a3d8..8f70bfc 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -32,39 +32,22 @@ @implementation SearchAPIViewController - (void)viewDidLoad { [super viewDidLoad]; -<<<<<<< HEAD + [self setUpSwipeGestures]; + self.tableView.delegate = self; self.tableView.dataSource = self; self.searchTextField.delegate = self; - - -} - - -======= - [self setUpSwipeGestures]; } #pragma mark - setup swipe gestures - (void)setUpSwipeGestures { -// UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedLeft:)]; -// swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; -// [self.view addGestureRecognizer:swipeLeft]; - UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedRight:)]; swipeRight.direction = UISwipeGestureRecognizerDirectionRight; [self.view addGestureRecognizer:swipeRight]; } -//- (void)userSwipedLeft:(UISwipeGestureRecognizer*)swipe -//{ -// if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { -// [self performSegueWithIdentifier:@"pushToSearch" sender:self]; -// } -//} - - (void)userSwipedRight:(UISwipeGestureRecognizer*)swipe { if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { @@ -74,11 +57,11 @@ - (void)userSwipedRight:(UISwipeGestureRecognizer*)swipe #pragma mark - setup buttons ->>>>>>> 608dd30812a12ffaa73e4770234359b9b1564ece - (IBAction)mediaButtonTypeSelected:(id)sender { self.media = [sender currentTitle]; NSLog(@"Media: %@",self.media); } + - (IBAction)mediaButtonOther:(id)sender { } From fab446aca622fe7f7199328e744ccd71d2e04d22 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 11 Oct 2015 13:05:27 -0400 Subject: [PATCH 15/86] removed segues from storyboard --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 54 +++++++++--------- .../Unit-2-Journal/SearchAPIViewController.m | 6 +- .../ViewCompletedEntryViewController.m | 20 +++++-- .../WishListTableViewController.m | 3 +- 5 files changed, 46 insertions(+), 37 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 556ff1f417d9f891616047d7f2d6946f950d5ce6..01eebb9e9f869bb92eaabb1c25254f32e4156179 100644 GIT binary patch delta 19 acmZoMXffFElZ~mgadJGH#b#snivj>k7Y7ai delta 19 acmZoMXffFElZ~lj*5r6Li_OOD7X<)JG6yOE diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 22f61f4..a8aaed3 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -379,7 +379,6 @@ <outlet property="otherButton" destination="kEa-FP-z2a" id="zZJ-KO-l1f"/> <outlet property="searchTextField" destination="zob-sY-qha" id="CSN-S0-Rzp"/> <outlet property="tableView" destination="twc-ko-3Rx" id="4Cw-TH-Ai6"/> - <segue destination="Gih-78-N3X" kind="show" identifier="pushToJournalFromSearch" id="HwW-rI-Qas"/> </connections> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> @@ -610,9 +609,6 @@ <outlet property="delegate" destination="WZe-UX-wgc" id="KJE-Pm-bbr"/> </connections> </tableView> - <connections> - <segue destination="Gih-78-N3X" kind="show" identifier="pushtoJournalFromWish" id="Rtf-dd-JWq"/> - </connections> </tableViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="vQP-Qq-o7U" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> @@ -745,28 +741,6 @@ <constraint firstItem="riX-qw-M2j" firstAttribute="top" secondItem="bI1-9Y-Lhn" secondAttribute="top" constant="5" id="LNA-Mw-l4a"/> </constraints> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="x4f-Ym-z1V"> - <rect key="frame" x="20" y="485" width="560" height="115"/> - <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> - <rect key="frame" x="258" y="42" width="45" height="30"/> - <animations/> - <state key="normal" title="Delete"/> - </button> - </subviews> - <animations/> - <color key="backgroundColor" red="0.99607843139999996" green="0.79215686269999996" blue="0.086274509799999996" alpha="1" colorSpace="calibratedRGB"/> - <constraints> - <constraint firstAttribute="height" constant="100" id="4cP-Gz-KpJ"/> - <constraint firstItem="1br-zx-rKo" firstAttribute="centerY" secondItem="x4f-Ym-z1V" secondAttribute="centerY" id="PpI-nI-XT1"/> - <constraint firstItem="1br-zx-rKo" firstAttribute="centerX" secondItem="x4f-Ym-z1V" secondAttribute="centerX" id="kQc-qO-IbZ"/> - </constraints> - <variation key="default"> - <mask key="constraints"> - <exclude reference="4cP-Gz-KpJ"/> - </mask> - </variation> - </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ly8-tU-R6b"> <rect key="frame" x="20" y="410" width="560" height="75"/> <subviews> @@ -806,6 +780,31 @@ <constraint firstItem="JU3-mC-wxo" firstAttribute="leading" secondItem="M7h-zf-QrN" secondAttribute="trailing" constant="50" id="xSf-tn-Ha9"/> </constraints> </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="x4f-Ym-z1V"> + <rect key="frame" x="20" y="485" width="560" height="115"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> + <rect key="frame" x="258" y="42" width="45" height="30"/> + <animations/> + <state key="normal" title="Delete"/> + <connections> + <action selector="deleteButtonTapped:" destination="z1K-z0-Vef" eventType="touchUpInside" id="umA-zo-2bu"/> + </connections> + </button> + </subviews> + <animations/> + <color key="backgroundColor" red="0.99607843139999996" green="0.79215686269999996" blue="0.086274509799999996" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstAttribute="height" constant="100" id="4cP-Gz-KpJ"/> + <constraint firstItem="1br-zx-rKo" firstAttribute="centerY" secondItem="x4f-Ym-z1V" secondAttribute="centerY" id="PpI-nI-XT1"/> + <constraint firstItem="1br-zx-rKo" firstAttribute="centerX" secondItem="x4f-Ym-z1V" secondAttribute="centerX" id="kQc-qO-IbZ"/> + </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="4cP-Gz-KpJ"/> + </mask> + </variation> + </view> </subviews> <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> @@ -836,8 +835,7 @@ </scene> </scenes> <inferredMetricsTieBreakers> - <segue reference="HwW-rI-Qas"/> - <segue reference="a4i-zx-cvK"/> <segue reference="S6k-uR-hRq"/> + <segue reference="a4i-zx-cvK"/> </inferredMetricsTieBreakers> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 8f70bfc..037e64c 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -51,7 +51,8 @@ - (void)setUpSwipeGestures - (void)userSwipedRight:(UISwipeGestureRecognizer*)swipe { if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { - [self performSegueWithIdentifier:@"pushToJournalFromSearch" sender:self]; + [self dismissViewControllerAnimated:YES completion:nil]; + // [self performSegueWithIdentifier:@"pushToJournalFromSearch" sender:self]; } } @@ -133,7 +134,6 @@ - (BOOL)textFieldShouldReturn:(UITextField *)textField{ callbackBlock:^{ [self.tableView reloadData]; }]; - return YES; } @@ -145,8 +145,6 @@ - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"APIResultsIdentifier" forIndexPath:indexPath]; - - return cell; } diff --git a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m index 7c7e3c0..e562aa0 100644 --- a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m @@ -14,16 +14,28 @@ @interface ViewCompletedEntryViewController () @implementation ViewCompletedEntryViewController -- (void)viewDidLoad { +- (void)viewDidLoad +{ [super viewDidLoad]; - // Do any additional setup after loading the view. + } -- (void)didReceiveMemoryWarning { +- (void)didReceiveMemoryWarning +{ [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. + } +#pragma mark - delete item + +- (IBAction)deleteButtonTapped:(id)sender +{ + // delete item from memory and storyboard + + [self dismissViewControllerAnimated:YES completion:nil]; +} + + /* #pragma mark - Navigation diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index 7e288e9..18f4fbc 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -35,7 +35,8 @@ - (void)userSwipedLeft:(UISwipeGestureRecognizer*)swipe CGPoint point = [swipe locationInView:self.tableView]; NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:point]; - [self performSegueWithIdentifier:@"pushtoJournalFromWish" sender:self]; + [self dismissViewControllerAnimated:YES completion:nil]; + //[self performSegueWithIdentifier:@"pushtoJournalFromWish" sender:self]; } } From c93bd520ce849d7d792cdb63829ae3f12433def7 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 11 Oct 2015 13:25:26 -0400 Subject: [PATCH 16/86] let's eat some lunch --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 5 +++-- .../CreateJournalEntryViewController.m | 7 +++++++ .../Unit-2-Journal/SearchAPIViewController.m | 3 +-- .../WishListTableViewController.m | 5 ++--- 5 files changed, 13 insertions(+), 7 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 01eebb9e9f869bb92eaabb1c25254f32e4156179..4edee5b6f324377b718a72da2ab0b32cc108d9e6 100644 GIT binary patch delta 19 acmZoMXffFElZ~n5-Q;*Si_OOD7X<)MP6v7b delta 19 acmZoMXffFElZ~mgadJGH#b#snivj>k7Y7ai diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index a8aaed3..2a91696 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -475,6 +475,7 @@ <animations/> <state key="normal" title="Save and Add to Completed"/> <connections> + <action selector="saveAndAddToCompletedButtonTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="TOx-Rp-ciC"/> <segue destination="Gih-78-N3X" kind="show" id="AZL-rD-3yX"/> </connections> </button> @@ -835,7 +836,7 @@ </scene> </scenes> <inferredMetricsTieBreakers> - <segue reference="S6k-uR-hRq"/> - <segue reference="a4i-zx-cvK"/> + <segue reference="7YG-CM-bN7"/> + <segue reference="fje-S5-GG0"/> </inferredMetricsTieBreakers> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index c84f46d..c4c01f6 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -34,4 +34,11 @@ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { } */ +#pragma mark - save items + +- (IBAction)saveAndAddToCompletedButtonTapped:(id)sender { + +} + + @end diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 037e64c..00f161c 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -52,7 +52,6 @@ - (void)userSwipedRight:(UISwipeGestureRecognizer*)swipe { if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { [self dismissViewControllerAnimated:YES completion:nil]; - // [self performSegueWithIdentifier:@"pushToJournalFromSearch" sender:self]; } } @@ -71,7 +70,7 @@ - (IBAction)createJournalEntryButtonTapped:(id)sender { } - (IBAction)addToWishListButtonTapped:(id)sender { - + } - (void) makeNewiTunesAPIRequestWithSearchTerm:(NSString *)term inMedia:(NSString *)media diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index 18f4fbc..55d041b 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -33,10 +33,9 @@ - (void)userSwipedLeft:(UISwipeGestureRecognizer*)swipe { if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { - CGPoint point = [swipe locationInView:self.tableView]; - NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:point]; +// CGPoint point = [swipe locationInView:self.tableView]; +// NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:point]; [self dismissViewControllerAnimated:YES completion:nil]; - //[self performSegueWithIdentifier:@"pushtoJournalFromWish" sender:self]; } } From 82cdc76c543210cbc63acd75a3f68252ab51d636 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Sun, 11 Oct 2015 15:09:58 -0400 Subject: [PATCH 17/86] working tableview --- .DS_Store | Bin 8196 -> 8196 bytes Unit-2-Journal/.DS_Store | Bin 6148 -> 8196 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 6 ++ Unit-2-Journal/Unit-2-Journal/.DS_Store | Bin 6148 -> 10244 bytes Unit-2-Journal/Unit-2-Journal/AppDelegate.m | 3 + .../Unit-2-Journal/Base.lproj/.DS_Store | Bin 0 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 19 +++-- Unit-2-Journal/Unit-2-Journal/Info.plist | 2 + .../Unit-2-Journal/SearchAPIViewController.m | 66 +++++++++++++----- .../Unit-2-Journal/iTunesSearchResult.h | 19 +++++ .../Unit-2-Journal/iTunesSearchResult.m | 24 +++++++ 11 files changed, 116 insertions(+), 23 deletions(-) create mode 100644 Unit-2-Journal/Unit-2-Journal/Base.lproj/.DS_Store create mode 100644 Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h create mode 100644 Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m diff --git a/.DS_Store b/.DS_Store index f22ecdfc38374a5d24103a42f21b414105f49b89..230b4e2a70d055d8f79ad89ebfd4c53ba322ebc3 100644 GIT binary patch delta 21 ccmZp1XmQx^Qjo*Q)Ko{o$kc4}M?qme08jb`mH+?% delta 21 ccmZp1XmQx^Qjo*Y)J#Xg(7<@}M?qme08hIHjQ{`u diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 556ff1f417d9f891616047d7f2d6946f950d5ce6..85401b414bc2c408e8379e91969e95bc1a23b159 100644 GIT binary patch delta 434 zcmZoMXmOBWU|?W$DortDU;r^WfEYvza8E20o2aMAD7Z0TH}hr%jz7$c**Q2SHn1=X zPUc}b!~;~r^8Y`OWMJT%EYBuWpHyC4kd%|31Qd9dRFIQdTw-8wgOQ1ug_Vt+gOdvc z`8i{QGxE!WOA<>;i=7gSqQSh(l++|BJ0P(n1I7-?&(DFg6O+O+Q_JH8M4a>UN)j{k zQj3tZ#)N0)rPSw_JLQ+=r4+{thz1m;mI0LqB<7`tWfo^9W#(j-RB~{FV7!1tb+w_X znT~>?fpM*lLbbWMfsTTSu~}^`2ZyA(vAuVAUiIWDQ>RUzF>?#pcMOb-5Sl>{O2eqF zKn5Q}C_^4YCPT?&bv6;+l;Y%^B%r%NI>4dAT^3xFmy@5D4iwn@k7WZRBkSh%Y!Qqb z8xAoEGD8fK;0DsJpdjBY$nl+dGQWuDWPctG4xk~R*kG6(&ogcE0e1I|4f~k@*1~Xx delta 132 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$jHAjU^g=(|70G4LmdCXfPrDM zppe334k4b&SA+~V7YbD~GBR&|D;&YNn4N<|kQt~O2n4u+ge%CPjfLNtC-cjAf{bNg Pf>;5vm0@!{&m3j|xpEt) diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index e154ed6..c708fc4 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -31,6 +31,7 @@ 9A2FFC3B1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC391BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld */; }; 9A2FFC3D1BC84BF200E880D3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */; }; 9A2FFC401BC84BF200E880D3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A2FFC3E1BC84BF200E880D3 /* LaunchScreen.storyboard */; }; + 9A34656D1BCACDF40049337C /* iTunesSearchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A34656C1BCACDF40049337C /* iTunesSearchResult.m */; settings = {ASSET_TAGS = (); }; }; 9AAB40061BC9FABC00FD7227 /* APIManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AAB40051BC9FABC00FD7227 /* APIManager.m */; settings = {ASSET_TAGS = (); }; }; /* End PBXBuildFile section */ @@ -71,6 +72,8 @@ 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 9A2FFC3F1BC84BF200E880D3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 9A2FFC411BC84BF200E880D3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + 9A34656B1BCACDF40049337C /* iTunesSearchResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iTunesSearchResult.h; sourceTree = "<group>"; }; + 9A34656C1BCACDF40049337C /* iTunesSearchResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iTunesSearchResult.m; sourceTree = "<group>"; }; 9AAB40041BC9FABC00FD7227 /* APIManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIManager.h; sourceTree = "<group>"; }; 9AAB40051BC9FABC00FD7227 /* APIManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APIManager.m; sourceTree = "<group>"; }; FAF24AD380284C55768010A2 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -193,6 +196,8 @@ children = ( 9AAB40041BC9FABC00FD7227 /* APIManager.h */, 9AAB40051BC9FABC00FD7227 /* APIManager.m */, + 9A34656B1BCACDF40049337C /* iTunesSearchResult.h */, + 9A34656C1BCACDF40049337C /* iTunesSearchResult.m */, ); name = "Classes & Managers"; sourceTree = "<group>"; @@ -313,6 +318,7 @@ buildActionMask = 2147483647; files = ( 9A2FFC321BC84BF200E880D3 /* AppDelegate.m in Sources */, + 9A34656D1BCACDF40049337C /* iTunesSearchResult.m in Sources */, 4DCBE14A1BC9ADAE0075BA2C /* CreateJournalEntryViewController.m in Sources */, 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */, 4DCBE1321BC98EF90075BA2C /* JournalMainCollectionViewController.m in Sources */, diff --git a/Unit-2-Journal/Unit-2-Journal/.DS_Store b/Unit-2-Journal/Unit-2-Journal/.DS_Store index 28285321c8104fafe1f23db8ee0e70013cc40c99..353695db4bf83f014cf2a5b6be3f1ec1b504809d 100644 GIT binary patch literal 10244 zcmeHM-EJF26h51T;-szWMidbtq*WzEkwWDVXt@I8x=4j0MYtqLP?=rt*4}o#YpvID zqbQQ!fxqwuJOI1{7u>*Ap8)Xy+=uU+*+jD&yQ*CaHPVbVbM|M>&wO*{%+4_pS+#+; zL1YtA36*L20-7;}-*Y`x7P2RAgIeGxawtM=lTXR1-sXWpz#w1{FbEg~3<56#0@$;; zl+G(^T7!T=z#wpf0LKR#m1#AjBSj^2pphd0=n@`F!8OhS!eeK&n$eM>!U~z{^k8MI zR(8a&6g%GA+#R%<(UGExoh-#pR;Jm?PAHaW2cIq7$*L-9T7!T=;4}h!cE3O$(-z&K z&vWPZ>(sdu#w|CDUG(8)^$F^=BPqC=%-1dO{ZZh%2z@>L>c|s>sBP#?K~HJ4zIbNN zf==s6f%6h{_VM$fsSiz$sRgYkPYM?ENDsA<u24;SvyCAvPbj8`1s)#dA*ywBgqCP5 zk2~!5GDQD&dtuN|E0rhK!s60P=Uy%?uki2E^8H399yU@Z9rSBX^0nLrp6_PYTTa?J zzP=a7;mNh*ZU_FbS$^eK9HmYW`H9B*%}x+`@vs&TBCp>pU)f6hUG&~^B7ZyR2W}7s z>0W7>f6el1`}-U3-&nUdDw_xE_WsSAm38~Q%^L>?rPA74n;(6)6YYQZ{SQC>boleH zGFGy(uuPZL{Ym@VBqY3kD|BH!GmeF7w~<6)9JTSD`>c{n0bHet6ceYHJX|H>ur2Cf zT6%ci&QFQBk3Nl8=@xkW%-uf4Bo1)TDXWlfgQmFKqiyK%X^6gY_AJJGcGP5yi?XB5 zTSvi}dEr?l%^fdd^gf)I?TulvvTO_j1gFe#E`yU%djy_|nB_QD5EvqQ06pA41UArH zz!@0ic;2Kuwj5XjNMS@3k}cRC2)<LHEl51pkeHvQBIb;ouBj{@zzNQ#AnyRj6#mnD z3XVGe6}pS@wgrc&#>}BCXUVfmDvpW$=pPNebJWdd<~kMo^7!?>YqCA?EZzf;D`-qN z4g~Y(lvuD)kkM^i#heUehEl`?A2an3?GQD@oQ?H&_NaxgG)&g0f&M(Z99PuFIMq0L z%{`~Y;y8g^PU5Sukz-**U&8;UvW_vESysU=!R~hryH%jfaZ+vP3Gja;{>~A5Zvy^| zmM-HmRu#u%#mVuWXVO93nlOVFqoYe$mAE(nS5x97e_E(`vx}>-ULdIGGF}I=5o}K( z<6YEzJX4<!o{ZDM8j3|vNM1fJGCqqRX!y)1HEeG*T5-3Bod#v$0h$>lb>n*78>B6w zzdro;PZ2k>ByUcVdL4aqHXC&{=hI!;clg822hKC@)4VEkb1@Gch4sLmnA7nF?ZAin z@Zh^b)0tx@R_&Z57i<<E{YCT9^Y}D=2m5^>D|y126Et-$aV66j1PlUa2Z2Rps?GWT z+mrwQKRW|5mKp>M0#hSkE!7+K8rY7LI7JDZYqwFqMdiZ%Mv4jx8cD~4N;)1loQ}VS z%6%(Lx!}5*(UGEfg7W|W8K81K$Jq$Z>lD9>`24G%-_7~|IE!P>|D1K3m=Qc9=l}lz DxnJ05 delta 149 zcmZn(XfcprU|?W$DortDU=RQ@Ie-{MGjUEV6q~50D9Q?w2aD-3<S-O46fxv8WNj>5 z&dA6*Sx-=cGo?5=Cn-NahjFsJq}Am0k{>sgu4h@y&cPwb4Acn(0^C5t6=dSZ!tczJ Z`BfZ2R)WlA0ntnlJHcX`<9X&V0|2IW88H9= diff --git a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m index e75c8af..edcd22c 100644 --- a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m +++ b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m @@ -10,6 +10,7 @@ #import <FBSDKCoreKit/FBSDKCoreKit.h> #import <FBSDKLoginKit/FBSDKLoginButton.h> #import <Parse/Parse.h> +#import "iTunesSearchResult.h" @interface AppDelegate () @@ -31,6 +32,8 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( [Parse setApplicationId:@"huGlqbY2KVINDuFfqju1fN0eB2QVANcqqHP0NVpY" clientKey:@"aohlSqEhCwaXtZbji5us0j97GNzemWqq3m3EJqwG"]; + + [iTunesSearchResult registerSubclass]; return YES; diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/.DS_Store b/Unit-2-Journal/Unit-2-Journal/Base.lproj/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..11afc076d5ab1e8ad98ce7512df635efb0f87d04 GIT binary patch literal 6148 zcmeHK%Sr=55Ukc50v^mwk8|`S_y<dff}p4TfZ0vJKyX3L!P|bI|Fl+3kILd6yeJ~w z&{IAAn3*luc>u8aetiMV08FVulQAN4kA@CPve5Dv4eqf-gGX#e2KtLGt^EWySYeL` zuKaWT8}`rfglDw;o)^@_6|MF4u5IdFTeDKMT~W{aEVO`Q+%j+b&FWWGQ?2h+91;u! z1HnKr5Dfe{13a@O(<8@dgMnZm82Dg7`$M7%tAd?l-a6Rm`mFdwD50%Ou`m^^3U-c+ zP|Qn-UTWouVO~yuDtT4G&e6+Zd1j7NW`2LXSe~8!l+$6AW3<6QFfe4`(7Q98|Cjt_ zMj!dZlIR5k!N5Obz$T03V$P2$XX}^G(^;FScT|b;IvEt&gG&HA+DA@v(Bnxq^QwZK VqehWGmlNY6kO_$<82AMS-T>(tE5`r; literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 22f61f4..f1160a3 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Gih-78-N3X"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Gih-78-N3X"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -19,7 +19,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -318,7 +318,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -498,22 +498,27 @@ <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="T1m-hx-A3U"> <rect key="frame" x="262" y="23" width="36" height="30"/> + <animations/> <state key="normal" title="three"/> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Qtk-Je-SxB"> <rect key="frame" x="348" y="23" width="30" height="30"/> + <animations/> <state key="normal" title="four"/> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uHJ-PQ-48N"> <rect key="frame" x="428" y="23" width="30" height="30"/> + <animations/> <state key="normal" title="five"/> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JGM-yq-jaY"> <rect key="frame" x="102" y="23" width="30" height="30"/> + <animations/> <state key="normal" title="one"/> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="090-cp-Tsv"> <rect key="frame" x="182" y="23" width="30" height="30"/> + <animations/> <state key="normal" title="two"/> </button> </subviews> @@ -575,7 +580,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> - <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> + <rect key="frame" x="0.0" y="0.0" width="567" height="63"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="346-CT-Uvl"> @@ -772,25 +777,31 @@ <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rcY-Tz-IPf"> <rect key="frame" x="102" y="23" width="30" height="30"/> + <animations/> <state key="normal" title="one"/> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="M7h-zf-QrN"> <rect key="frame" x="262" y="23" width="36" height="30"/> + <animations/> <state key="normal" title="three"/> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JU3-mC-wxo"> <rect key="frame" x="348" y="23" width="30" height="30"/> + <animations/> <state key="normal" title="four"/> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Pt8-eG-uys"> <rect key="frame" x="428" y="23" width="30" height="30"/> + <animations/> <state key="normal" title="five"/> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zLL-Ls-a62"> <rect key="frame" x="182" y="23" width="30" height="30"/> + <animations/> <state key="normal" title="two"/> </button> </subviews> + <animations/> <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="zLL-Ls-a62" firstAttribute="centerY" secondItem="Ly8-tU-R6b" secondAttribute="centerY" id="8YT-wf-Yyd"/> diff --git a/Unit-2-Journal/Unit-2-Journal/Info.plist b/Unit-2-Journal/Unit-2-Journal/Info.plist index 7954e7a..a470388 100644 --- a/Unit-2-Journal/Unit-2-Journal/Info.plist +++ b/Unit-2-Journal/Unit-2-Journal/Info.plist @@ -8,6 +8,8 @@ </array> <key>NSAppTransportSecurity</key> <dict> + <key>NSAllowsArbitraryLoads</key> + <true/> <key>NSExceptionDomains</key> <dict> <key>facebook.com</key> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 8f70bfc..c7a4cb2 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -9,6 +9,7 @@ #import "SearchAPIViewController.h" #import <AFNetworking/AFNetworking.h> #import "APIManager.h" +#import "iTunesSearchResult.h" @interface SearchAPIViewController () < @@ -24,6 +25,7 @@ @interface SearchAPIViewController () @property (weak, nonatomic) IBOutlet UIButton *booksButton; @property (weak, nonatomic) IBOutlet UIButton *otherButton; @property (nonatomic) NSString *media; +@property (nonatomic) NSMutableArray *searchResults; @end @@ -37,6 +39,10 @@ - (void)viewDidLoad self.tableView.delegate = self; self.tableView.dataSource = self; self.searchTextField.delegate = self; + +// iTunesSearchResult *searchResults = [[iTunesSearchResult alloc]init]; + + } #pragma mark - setup swipe gestures @@ -97,26 +103,31 @@ - (void) makeNewiTunesAPIRequestWithSearchTerm:(NSString *)term NSLog(@"Results: %@",results); - //self.searchResults = [[NSMutableArray alloc]init]; + self.searchResults = [[NSMutableArray alloc]init]; -// for (NSDictionary *result in results){ -// -// NSString *artistName = [result objectForKey:@"artistName"]; -// NSString *albumName = [result objectForKey:@"collectionName"]; -// NSString *songName = [result objectForKey:@"trackName"]; -// NSURL *songPreview = [NSURL URLWithString:[result objectForKey:@"previewUrl"]]; -// -// iTunesMusicResults *musicObject = [[iTunesMusicResults alloc]init]; -// musicObject.artist = artistName; -// musicObject.album = albumName; -// musicObject.song = songName; -// musicObject.songURL = songPreview; -// -// // self.audioPlayer = musicObject.songPlayer; -// -// [self.searchResults addObject:musicObject]; -// } + for (NSDictionary *result in results){ + + NSString *artistName = [result objectForKey:@"artistName"]; + NSString *albumName = [result objectForKey:@"collectionName"]; + NSString *movieName = [result objectForKey:@"trackName"]; + NSString *artworkURL = [result objectForKey:@"artworkUrl100"]; + + iTunesSearchResult *resultsObject = [[iTunesSearchResult alloc]init]; + + if ([self.media isEqualToString:@"movie"]){ + resultsObject.artistName = artistName; + resultsObject.albumOrMovieName = movieName; + resultsObject.artworkURL = artworkURL; + } else if ([self.media isEqualToString:@"music"]){ + resultsObject.artistName = artistName; + resultsObject.albumOrMovieName = albumName; + resultsObject.artworkURL = artworkURL; + + } + + [self.searchResults addObject:resultsObject]; + } block(); } @@ -138,14 +149,31 @@ - (BOOL)textFieldShouldReturn:(UITextField *)textField{ } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ - return 1; + return self.searchResults.count; + } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"APIResultsIdentifier" forIndexPath:indexPath]; + + iTunesSearchResult *searchResult = self.searchResults[indexPath.row]; + + cell.textLabel.text = searchResult.albumOrMovieName; + cell.detailTextLabel.text = searchResult.artistName; + + NSString *artworkString = searchResult.artworkURL; + NSURL *artworkURL = [NSURL URLWithString:artworkString]; + NSData *artworkData = [NSData dataWithContentsOfURL:artworkURL]; + UIImage *artworkImage = [UIImage imageWithData:artworkData]; + +// NSLog(@"Image String: %@", searchResult.artworkURL); +// NSLog(@"Image URL: %@", artworkURL); +// NSLog(@"Image Data: %@", artworkData); +// NSLog(@"Image: %@", artworkImage); + cell.imageView.image = artworkImage; return cell; } diff --git a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h new file mode 100644 index 0000000..fe39e0b --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h @@ -0,0 +1,19 @@ +// +// iTunesSearchResult.h +// Unit-2-Journal +// +// Created by Jamaal Sedayao on 10/11/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "PFObject.h" + +@interface iTunesSearchResult : PFObject <PFSubclassing> + +@property (nonatomic) NSString *artistName; +@property (nonatomic) NSString *albumOrMovieName; +@property (nonatomic) NSString *artworkURL; + + + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m new file mode 100644 index 0000000..21e66a8 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m @@ -0,0 +1,24 @@ +// +// iTunesSearchResult.m +// Unit-2-Journal +// +// Created by Jamaal Sedayao on 10/11/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "iTunesSearchResult.h" + +@implementation iTunesSearchResult + +@dynamic artistName; +@dynamic artworkURL; +@dynamic albumOrMovieName; + + ++(NSString *)parseClassName { + return @"iTunesSearchResult"; +} + + + +@end From 75973936be98f40a1caa57e83bd070ef8445f27c Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 11 Oct 2015 15:10:47 -0400 Subject: [PATCH 18/86] added navigation controllers --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 101 +++++++++++++++--- 2 files changed, 87 insertions(+), 14 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 4edee5b6f324377b718a72da2ab0b32cc108d9e6..ce9d534eaaeb6f7c80aa3545db584477ff5b04ad 100644 GIT binary patch delta 19 acmZoMXffFElZ~m=XmUK8#b#snivj>h0S3PS delta 19 acmZoMXffFElZ~n5-Q;*Si_OOD7X<)MP6v7b diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 2a91696..d936b27 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Gih-78-N3X"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="rWE-oc-Un1"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -137,7 +137,7 @@ </collectionViewFlowLayout> <cells> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="Cell" id="KiH-sl-ksa"> - <rect key="frame" x="5" y="20" width="80" height="80"/> + <rect key="frame" x="5" y="84" width="80" height="80"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> <rect key="frame" x="0.0" y="0.0" width="80" height="80"/> @@ -182,14 +182,15 @@ <outlet property="delegate" destination="Gih-78-N3X" id="TWL-m7-WCV"/> </connections> </collectionView> + <navigationItem key="navigationItem" id="Z1X-J6-1kq"/> <connections> - <segue destination="0x4-Nu-mZ8" kind="show" identifier="pushToSearch" id="NAv-Qf-gYM"/> - <segue destination="WZe-UX-wgc" kind="show" identifier="pushToWishList" id="7YG-CM-bN7"/> + <segue destination="y19-uS-lMB" kind="show" identifier="pushToWishList" id="7YG-CM-bN7"/> + <segue destination="owV-FY-Vnj" kind="show" identifier="pushToSearch" id="qAI-cx-Qg9"/> </connections> </collectionViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="blD-s8-5JB" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="375" y="1676"/> + <point key="canvasLocation" x="1835" y="1668"/> </scene> <!--Search --> <scene sceneID="eAD-0s-cgb"> @@ -306,7 +307,7 @@ <state key="normal" title="Add to Wish List"/> <connections> <action selector="addToWishListButtonTapped:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="pGb-oC-cak"/> - <segue destination="WZe-UX-wgc" kind="show" id="S6k-uR-hRq"/> + <segue destination="y19-uS-lMB" kind="show" id="S6k-uR-hRq"/> </connections> </button> <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="twc-ko-3Rx"> @@ -314,12 +315,28 @@ <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <prototypes> - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="APIResultsIdentifier" id="oHk-9R-1hr"> + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="APIResultsIdentifier" textLabel="wn8-3w-eKd" detailTextLabel="DsP-zu-9UZ" style="IBUITableViewCellStyleSubtitle" id="oHk-9R-1hr"> <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> + <subviews> + <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> + <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <fontDescription key="fontDescription" type="system" pointSize="16"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> + <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <fontDescription key="fontDescription" type="system" pointSize="11"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + </subviews> <animations/> </tableViewCellContentView> <animations/> @@ -372,6 +389,7 @@ <constraint firstItem="twc-ko-3Rx" firstAttribute="top" secondItem="4h9-oR-C40" secondAttribute="bottom" id="yzs-2t-Ycy"/> </constraints> </view> + <navigationItem key="navigationItem" id="gPV-bk-VJf"/> <connections> <outlet property="booksButton" destination="rgg-OH-neT" id="Ucr-iy-A9p"/> <outlet property="moviesButton" destination="CLE-DE-TTz" id="7LO-pm-d9U"/> @@ -383,7 +401,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1103" y="1676"/> + <point key="canvasLocation" x="4421" y="1696"/> </scene> <!--Create Journal Entry View Controller--> <scene sceneID="3xO-3p-x8L"> @@ -476,7 +494,7 @@ <state key="normal" title="Save and Add to Completed"/> <connections> <action selector="saveAndAddToCompletedButtonTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="TOx-Rp-ciC"/> - <segue destination="Gih-78-N3X" kind="show" id="AZL-rD-3yX"/> + <segue destination="rWE-oc-Un1" kind="show" id="AZL-rD-3yX"/> </connections> </button> </subviews> @@ -559,7 +577,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="TK9-37-5bs" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1245" y="2710"/> + <point key="canvasLocation" x="1517" y="2736"/> </scene> <!--Wish List--> <scene sceneID="WUv-ax-PAc"> @@ -572,7 +590,7 @@ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <prototypes> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="WishListIdentifier" rowHeight="64" id="Ej0-R4-rXa"> - <rect key="frame" x="0.0" y="28" width="600" height="64"/> + <rect key="frame" x="0.0" y="92" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> @@ -610,10 +628,11 @@ <outlet property="delegate" destination="WZe-UX-wgc" id="KJE-Pm-bbr"/> </connections> </tableView> + <navigationItem key="navigationItem" id="wvx-LN-Wn1"/> </tableViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="vQP-Qq-o7U" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="-409" y="1664"/> + <point key="canvasLocation" x="-151" y="668"/> </scene> <!--View Controller--> <scene sceneID="Sp1-uX-mf4"> @@ -832,11 +851,65 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="gKL-Ix-enk" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="405" y="2710"/> + <point key="canvasLocation" x="375" y="2806"/> + </scene> + <!--Navigation Controller--> + <scene sceneID="IPQ-wM-Z7c"> + <objects> + <navigationController automaticallyAdjustsScrollViewInsets="NO" id="rWE-oc-Un1" sceneMemberID="viewController"> + <toolbarItems/> + <navigationBar key="navigationBar" contentMode="scaleToFill" id="B2x-Uu-nc9"> + <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> + <autoresizingMask key="autoresizingMask"/> + </navigationBar> + <nil name="viewControllers"/> + <connections> + <segue destination="Gih-78-N3X" kind="relationship" relationship="rootViewController" id="io4-wH-TCe"/> + </connections> + </navigationController> + <placeholder placeholderIdentifier="IBFirstResponder" id="bGC-Ig-YI6" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="1071" y="1668"/> + </scene> + <!--Navigation Controller--> + <scene sceneID="dHl-po-e6M"> + <objects> + <navigationController automaticallyAdjustsScrollViewInsets="NO" id="owV-FY-Vnj" sceneMemberID="viewController"> + <toolbarItems/> + <navigationBar key="navigationBar" contentMode="scaleToFill" id="YLN-TD-ODV"> + <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> + <autoresizingMask key="autoresizingMask"/> + </navigationBar> + <nil name="viewControllers"/> + <connections> + <segue destination="0x4-Nu-mZ8" kind="relationship" relationship="rootViewController" id="VGq-lD-Cbs"/> + </connections> + </navigationController> + <placeholder placeholderIdentifier="IBFirstResponder" id="iI4-We-BJh" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="3609" y="1696"/> + </scene> + <!--Navigation Controller--> + <scene sceneID="QiZ-Qk-SDo"> + <objects> + <navigationController automaticallyAdjustsScrollViewInsets="NO" id="y19-uS-lMB" sceneMemberID="viewController"> + <toolbarItems/> + <navigationBar key="navigationBar" contentMode="scaleToFill" id="0ke-4S-SdO"> + <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> + <autoresizingMask key="autoresizingMask"/> + </navigationBar> + <nil name="viewControllers"/> + <connections> + <segue destination="WZe-UX-wgc" kind="relationship" relationship="rootViewController" id="mIA-J2-rad"/> + </connections> + </navigationController> + <placeholder placeholderIdentifier="IBFirstResponder" id="xA2-BW-f7F" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="-923" y="668"/> </scene> </scenes> <inferredMetricsTieBreakers> - <segue reference="7YG-CM-bN7"/> <segue reference="fje-S5-GG0"/> + <segue reference="S6k-uR-hRq"/> </inferredMetricsTieBreakers> </document> From ec81078b188ff90ec05522f2c6b5c82c337a0484 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 11 Oct 2015 15:46:33 -0400 Subject: [PATCH 19/86] pushing --- Unit-2-Journal/.DS_Store | Bin 8196 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 20 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 8b078ee38b7087deab4ed6c4c47277177d41eb52..5a1af68862b6d84995263ac22075dbc9f743eb20 100644 GIT binary patch delta 166 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$jHAjU^g=(|70G4LmdCXfPrDM zppXJ*N^x>dQht68!{m!XCX)+=;+Q5K12P?0%<X|HE()1V_7+~q$UOP2us7r4$&Dgb wlZ!<zEoSH75M&0L4+H|-K*AMd)yBf_%#-<LJV6#SFhLvvau>tqc%C`T049$pmjD0& delta 474 zcmZoMXmOBWU|?W$DortDU;r^WfEYvza8E20o2aMAD7Z0TH}hr%jz7$c**Q2SHn1=X zPUc}b!~;~r_WwVSWMJT%EYBuWpHyC4kd%|31Qd9dRFIQdTw-8wgOQ1ug_Vt+gOdvc z`8i{QGxE!WOA<>;i=7gSqQSh(l++|BJ0P(n1I7-?&(DFg6O+O+Q_JH8M4a>UN)j{k zQj3tZ#)N0)rPSw_JLQ+=r4+{thz1m;mI0LqB<7`tWfo^9W#(j-RB~{FV7!1tb+wVX zsg8n?v01H-LbbWMfsTR+kX_5cA*pU`?;W03J$cI1Y13!S+yeF;10y4ZW)OtZFlsB1 z!N(BFkjIe8P%>GaO@ue4I5{T?=x&e>aH#N<1sCPz<maUW1sEs)XPLy*e-%iX@aN{c zxTKVpBr`Bvaxjx;nEa2$bTT*FVn)`<>)E^+XHAZ0vzTnmer03BAtpg)h=mf|K-v`) mHJb%FzB5ne7xA3z&%?n1v<wt$43pz|rcFM;?!K{MKNA4oi+)}J diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 8b86769..eefe6ea 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -19,7 +19,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -319,7 +319,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> @@ -415,7 +415,7 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3Hz-RL-Ugz"> + <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3Hz-RL-Ugz"> <rect key="frame" x="20" y="20" width="560" height="140"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="s1u-o4-hER"> @@ -466,10 +466,10 @@ <constraint firstItem="s1u-o4-hER" firstAttribute="leading" secondItem="3Hz-RL-Ugz" secondAttribute="leading" id="zY8-tn-NjM"/> </constraints> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bcK-tE-Fho"> + <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bcK-tE-Fho"> <rect key="frame" x="20" y="160" width="560" height="250"/> <subviews> - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" text="write your jounal entry here" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="vhl-Bh-MN5"> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" misplaced="YES" text="write your jounal entry here" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="vhl-Bh-MN5"> <rect key="frame" x="5" y="5" width="550" height="240"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="14"/> @@ -598,7 +598,7 @@ <rect key="frame" x="0.0" y="92" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> - <rect key="frame" x="0.0" y="0.0" width="567" height="63"/> + <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="346-CT-Uvl"> @@ -695,7 +695,7 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2sS-fd-D0X"> + <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2sS-fd-D0X"> <rect key="frame" x="20" y="20" width="560" height="140"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="P8h-8Q-AZm"> @@ -746,10 +746,10 @@ <constraint firstAttribute="trailing" secondItem="uPb-Kv-PyA" secondAttribute="trailing" id="yeu-We-Dj2"/> </constraints> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bI1-9Y-Lhn"> + <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bI1-9Y-Lhn"> <rect key="frame" x="20" y="160" width="560" height="250"/> <subviews> - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" misplaced="YES" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> <rect key="frame" x="5" y="5" width="550" height="240"/> <animations/> <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string> @@ -920,7 +920,7 @@ </scene> </scenes> <inferredMetricsTieBreakers> - <segue reference="fje-S5-GG0"/> + <segue reference="a4i-zx-cvK"/> <segue reference="S6k-uR-hRq"/> </inferredMetricsTieBreakers> </document> From bafe2f32cae380da16373d99af1f0ebcc31f5096 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Sun, 11 Oct 2015 16:13:53 -0400 Subject: [PATCH 20/86] pass data to createJournalEntry --- .../CreateJournalEntryViewController.h | 4 +++ .../CreateJournalEntryViewController.m | 3 ++- .../Unit-2-Journal/SearchAPIViewController.m | 27 +++++++++++++------ 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h index c6a19e7..9ab1bb7 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h @@ -7,7 +7,11 @@ // #import <UIKit/UIKit.h> +#import "iTunesSearchResult.h" + @interface CreateJournalEntryViewController : UIViewController +@property (nonatomic) iTunesSearchResult *postSearchResult; + @end diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index c4c01f6..e7b968b 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -16,7 +16,8 @@ @implementation CreateJournalEntryViewController - (void)viewDidLoad { [super viewDidLoad]; - // Do any additional setup after loading the view. + + NSLog(@"Data has been passed: %@",self.postSearchResult); } - (void)didReceiveMemoryWarning { diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index a69c9e5..b7dfccf 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -10,6 +10,7 @@ #import <AFNetworking/AFNetworking.h> #import "APIManager.h" #import "iTunesSearchResult.h" +#import "CreateJournalEntryViewController.h" @interface SearchAPIViewController () < @@ -26,6 +27,7 @@ @interface SearchAPIViewController () @property (weak, nonatomic) IBOutlet UIButton *otherButton; @property (nonatomic) NSString *media; @property (nonatomic) NSMutableArray *searchResults; +@property (nonatomic) iTunesSearchResult *passSearchResult; @end @@ -40,8 +42,6 @@ - (void)viewDidLoad self.tableView.dataSource = self; self.searchTextField.delegate = self; -// iTunesSearchResult *searchResults = [[iTunesSearchResult alloc]init]; - } @@ -178,15 +178,26 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS return cell; } +-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ + + iTunesSearchResult *searchResult = self.searchResults[indexPath.row]; + + self.passSearchResult = searchResult; + + NSLog(@"%@", self.passSearchResult); + +} + + -/* #pragma mark - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation + - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. + + CreateJournalEntryViewController *viewController = segue.destinationViewController; + viewController.postSearchResult = self.passSearchResult; + } - */ + @end From e37449823a0e633744882908bcd4a183978b37fc Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 11 Oct 2015 17:39:34 -0400 Subject: [PATCH 21/86] swipe push working --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 77 +++++------------- .../JournalMainCollectionViewController.m | 11 ++- .../Unit-2-Journal/SearchAPIViewController.m | 21 +++-- .../WishListTableViewController.m | 8 +- 5 files changed, 45 insertions(+), 72 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 5a1af68862b6d84995263ac22075dbc9f743eb20..618a576be0b92e7e829b1ea4e65804b84fa55e74 100644 GIT binary patch delta 31 ncmZoMXffDunU%TpF~j74ET)sW+1@cVt)CpvX0h3r{h|N>#Y_v? delta 31 ncmZoMXffDunU&exo?-Go7SqYxZ10#V7Eg|6v)F9Reo+7bu)GT4 diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index eefe6ea..b12d505 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -137,7 +137,7 @@ </collectionViewFlowLayout> <cells> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="Cell" id="KiH-sl-ksa"> - <rect key="frame" x="5" y="84" width="80" height="80"/> + <rect key="frame" x="5" y="20" width="80" height="80"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> <rect key="frame" x="0.0" y="0.0" width="80" height="80"/> @@ -184,13 +184,13 @@ </collectionView> <navigationItem key="navigationItem" id="Z1X-J6-1kq"/> <connections> - <segue destination="y19-uS-lMB" kind="show" identifier="pushToWishList" id="7YG-CM-bN7"/> - <segue destination="owV-FY-Vnj" kind="show" identifier="pushToSearch" id="qAI-cx-Qg9"/> + <segue destination="0x4-Nu-mZ8" kind="show" identifier="pushToSearch" id="e8t-DM-qor"/> + <segue destination="WZe-UX-wgc" kind="show" identifier="pushToWishList" id="nBf-zY-MUB"/> </connections> </collectionViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="blD-s8-5JB" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1835" y="1668"/> + <point key="canvasLocation" x="1899" y="1678"/> </scene> <!--Search --> <scene sceneID="eAD-0s-cgb"> @@ -307,7 +307,6 @@ <state key="normal" title="Add to Wish List"/> <connections> <action selector="addToWishListButtonTapped:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="pGb-oC-cak"/> - <segue destination="y19-uS-lMB" kind="show" id="S6k-uR-hRq"/> </connections> </button> <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="twc-ko-3Rx"> @@ -397,11 +396,12 @@ <outlet property="otherButton" destination="kEa-FP-z2a" id="zZJ-KO-l1f"/> <outlet property="searchTextField" destination="zob-sY-qha" id="CSN-S0-Rzp"/> <outlet property="tableView" destination="twc-ko-3Rx" id="4Cw-TH-Ai6"/> + <segue destination="Gih-78-N3X" kind="show" identifier="pushBackHome" id="898-jd-zRS"/> </connections> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="4421" y="1696"/> + <point key="canvasLocation" x="2643" y="1678"/> </scene> <!--Create Journal Entry View Controller--> <scene sceneID="3xO-3p-x8L"> @@ -415,7 +415,7 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3Hz-RL-Ugz"> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3Hz-RL-Ugz"> <rect key="frame" x="20" y="20" width="560" height="140"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="s1u-o4-hER"> @@ -466,10 +466,10 @@ <constraint firstItem="s1u-o4-hER" firstAttribute="leading" secondItem="3Hz-RL-Ugz" secondAttribute="leading" id="zY8-tn-NjM"/> </constraints> </view> - <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bcK-tE-Fho"> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bcK-tE-Fho"> <rect key="frame" x="20" y="160" width="560" height="250"/> <subviews> - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" misplaced="YES" text="write your jounal entry here" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="vhl-Bh-MN5"> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" text="write your jounal entry here" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="vhl-Bh-MN5"> <rect key="frame" x="5" y="5" width="550" height="240"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="14"/> @@ -582,7 +582,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="TK9-37-5bs" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1517" y="2736"/> + <point key="canvasLocation" x="925" y="2568"/> </scene> <!--Wish List--> <scene sceneID="WUv-ax-PAc"> @@ -595,7 +595,7 @@ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <prototypes> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="WishListIdentifier" rowHeight="64" id="Ej0-R4-rXa"> - <rect key="frame" x="0.0" y="92" width="600" height="64"/> + <rect key="frame" x="0.0" y="28" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> @@ -634,10 +634,13 @@ </connections> </tableView> <navigationItem key="navigationItem" id="wvx-LN-Wn1"/> + <connections> + <segue destination="Gih-78-N3X" kind="show" identifier="pushToHomeList" id="4YM-8W-IJo"/> + </connections> </tableViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="vQP-Qq-o7U" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="-151" y="668"/> + <point key="canvasLocation" x="9" y="1588"/> </scene> <!--View Controller--> <scene sceneID="Sp1-uX-mf4"> @@ -695,7 +698,7 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2sS-fd-D0X"> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2sS-fd-D0X"> <rect key="frame" x="20" y="20" width="560" height="140"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="P8h-8Q-AZm"> @@ -746,10 +749,10 @@ <constraint firstAttribute="trailing" secondItem="uPb-Kv-PyA" secondAttribute="trailing" id="yeu-We-Dj2"/> </constraints> </view> - <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bI1-9Y-Lhn"> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bI1-9Y-Lhn"> <rect key="frame" x="20" y="160" width="560" height="250"/> <subviews> - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" misplaced="YES" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> <rect key="frame" x="5" y="5" width="550" height="240"/> <animations/> <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string> @@ -862,12 +865,12 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="gKL-Ix-enk" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="375" y="2806"/> + <point key="canvasLocation" x="1841" y="2536"/> </scene> <!--Navigation Controller--> <scene sceneID="IPQ-wM-Z7c"> <objects> - <navigationController automaticallyAdjustsScrollViewInsets="NO" id="rWE-oc-Un1" sceneMemberID="viewController"> + <navigationController automaticallyAdjustsScrollViewInsets="NO" navigationBarHidden="YES" id="rWE-oc-Un1" sceneMemberID="viewController"> <toolbarItems/> <navigationBar key="navigationBar" contentMode="scaleToFill" id="B2x-Uu-nc9"> <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> @@ -880,47 +883,11 @@ </navigationController> <placeholder placeholderIdentifier="IBFirstResponder" id="bGC-Ig-YI6" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1071" y="1668"/> - </scene> - <!--Navigation Controller--> - <scene sceneID="dHl-po-e6M"> - <objects> - <navigationController automaticallyAdjustsScrollViewInsets="NO" id="owV-FY-Vnj" sceneMemberID="viewController"> - <toolbarItems/> - <navigationBar key="navigationBar" contentMode="scaleToFill" id="YLN-TD-ODV"> - <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> - <autoresizingMask key="autoresizingMask"/> - </navigationBar> - <nil name="viewControllers"/> - <connections> - <segue destination="0x4-Nu-mZ8" kind="relationship" relationship="rootViewController" id="VGq-lD-Cbs"/> - </connections> - </navigationController> - <placeholder placeholderIdentifier="IBFirstResponder" id="iI4-We-BJh" userLabel="First Responder" sceneMemberID="firstResponder"/> - </objects> - <point key="canvasLocation" x="3609" y="1696"/> - </scene> - <!--Navigation Controller--> - <scene sceneID="QiZ-Qk-SDo"> - <objects> - <navigationController automaticallyAdjustsScrollViewInsets="NO" id="y19-uS-lMB" sceneMemberID="viewController"> - <toolbarItems/> - <navigationBar key="navigationBar" contentMode="scaleToFill" id="0ke-4S-SdO"> - <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> - <autoresizingMask key="autoresizingMask"/> - </navigationBar> - <nil name="viewControllers"/> - <connections> - <segue destination="WZe-UX-wgc" kind="relationship" relationship="rootViewController" id="mIA-J2-rad"/> - </connections> - </navigationController> - <placeholder placeholderIdentifier="IBFirstResponder" id="xA2-BW-f7F" userLabel="First Responder" sceneMemberID="firstResponder"/> - </objects> - <point key="canvasLocation" x="-923" y="668"/> + <point key="canvasLocation" x="931" y="1664"/> </scene> </scenes> <inferredMetricsTieBreakers> + <segue reference="898-jd-zRS"/> <segue reference="a4i-zx-cvK"/> - <segue reference="S6k-uR-hRq"/> </inferredMetricsTieBreakers> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index 6214172..c2038b7 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -58,12 +58,11 @@ - (void)userSwipedRight:(UISwipeGestureRecognizer*)swipe #pragma mark - Navigation -/* -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. -} -*/ + +//- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { +// +//} + #pragma mark <UICollectionViewDataSource> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index b7dfccf..ee34d01 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -57,7 +57,10 @@ - (void)setUpSwipeGestures - (void)userSwipedRight:(UISwipeGestureRecognizer*)swipe { if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { - [self dismissViewControllerAnimated:YES completion:nil]; + + [self performSegueWithIdentifier:@"pushBackHome" sender:self]; + + // [self dismissViewControllerAnimated:YES completion:nil]; } } @@ -186,18 +189,22 @@ -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath * NSLog(@"%@", self.passSearchResult); + // push view controller + } #pragma mark - Navigation - - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { +// - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { +// +// NSLog(@"segue"); +// +//// CreateJournalEntryViewController *viewController = segue.destinationViewController; +//// viewController.postSearchResult = self.passSearchResult; +// +// } - CreateJournalEntryViewController *viewController = segue.destinationViewController; - viewController.postSearchResult = self.passSearchResult; - - } - @end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index 55d041b..08d874d 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -32,10 +32,10 @@ - (void)setUpSwipeGestures - (void)userSwipedLeft:(UISwipeGestureRecognizer*)swipe { if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { - -// CGPoint point = [swipe locationInView:self.tableView]; -// NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:point]; - [self dismissViewControllerAnimated:YES completion:nil]; + + [self performSegueWithIdentifier:@"pushToHomeList" sender:self]; + + //[self dismissViewControllerAnimated:YES completion:nil]; } } From 79d83b1e21109b6100883b92b8cbd8208e9a67d0 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 11 Oct 2015 17:48:34 -0400 Subject: [PATCH 22/86] added identifier --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 2 +- .../Unit-2-Journal/SearchAPIViewController.m | 18 ++++++++++-------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 618a576be0b92e7e829b1ea4e65804b84fa55e74..78e44033e68a1b792e94061d12e67ecc78598916 100644 GIT binary patch delta 28 kcmZoMXffFElZ|P1$>ex8i^<09^B50IEHvHB&heKY0G((GiU0rr delta 28 kcmZoMXffFElZ~lq{p5Hyi^<09^B5OQEHvHB&heKY0G_o9i~s-t diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index b12d505..8402cb9 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -294,7 +294,7 @@ <state key="normal" title="Create Journal Entry"/> <connections> <action selector="createJournalEntryButtonTapped:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="tTN-M9-kCZ"/> - <segue destination="aXS-um-aw2" kind="show" id="a4i-zx-cvK"/> + <segue destination="aXS-um-aw2" kind="show" identifier="pushToCreateJournalEntry" id="a4i-zx-cvK"/> </connections> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i6F-Oe-4xR"> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index ee34d01..da03959 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -197,14 +197,16 @@ -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath * #pragma mark - Navigation -// - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { -// -// NSLog(@"segue"); -// -//// CreateJournalEntryViewController *viewController = segue.destinationViewController; -//// viewController.postSearchResult = self.passSearchResult; -// -// } + - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + + if ([[segue identifier]isEqualToString:@"pushToCreateJournalEntry"]) { + + NSLog(@"segue"); + CreateJournalEntryViewController *viewController = segue.destinationViewController; + viewController.postSearchResult = self.passSearchResult; + } + + } @end From 7af439680687f1b10396c50a52edfc7028d0c9d1 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Sun, 11 Oct 2015 17:49:37 -0400 Subject: [PATCH 23/86] js update --- .../Unit-2-Journal/CreateJournalEntryViewController.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index e7b968b..7fba348 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -8,7 +8,7 @@ #import "CreateJournalEntryViewController.h" -@interface CreateJournalEntryViewController () +@interface CreateJournalEntryViewController () <UITextViewDelegate> @end @@ -42,4 +42,5 @@ - (IBAction)saveAndAddToCompletedButtonTapped:(id)sender { } + @end From 67079aee3062182476c02ed7e11d5a7a56b0d17d Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Mon, 12 Oct 2015 00:04:19 -0400 Subject: [PATCH 24/86] updated some functionality and some parts of storyboard --- .../Unit-2-Journal.xcodeproj/project.pbxproj | 2 +- Unit-2-Journal/Unit-2-Journal/.DS_Store | Bin 10244 -> 10244 bytes .../Assets.xcassets/Contents.json | 6 + .../star.imageset/Contents.json | 21 ++ .../Assets.xcassets/star.imageset/star.png | Bin 0 -> 11206 bytes .../starFilled.imageset/Contents.json | 21 ++ .../starFilled.imageset/starFilled.jpg | Bin 0 -> 19860 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 274 ++++++++++-------- .../CreateJournalEntryViewController.m | 74 ++++- .../Unit-2-Journal/iTunesSearchResult.h | 1 - 10 files changed, 270 insertions(+), 129 deletions(-) create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/Contents.json create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/star.imageset/Contents.json create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/star.imageset/star.png create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/starFilled.imageset/Contents.json create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/starFilled.imageset/starFilled.jpg diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index c708fc4..0d6f44e 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -147,6 +147,7 @@ 9A2FFC311BC84BF200E880D3 /* AppDelegate.m */, 9AAB40031BC9ECAA00FD7227 /* Classes & Managers */, 9AAB40021BC9EC7300FD7227 /* ViewControllers */, + 9A2FFC361BC84BF200E880D3 /* Main.storyboard */, 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */, 9A2FFC3E1BC84BF200E880D3 /* LaunchScreen.storyboard */, 9A2FFC411BC84BF200E880D3 /* Info.plist */, @@ -186,7 +187,6 @@ 4DCBE14C1BC9ADE00075BA2C /* WishListTableViewController.m */, 4DCBE14E1BC9BD800075BA2C /* ViewCompletedEntryViewController.h */, 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */, - 9A2FFC361BC84BF200E880D3 /* Main.storyboard */, ); name = ViewControllers; sourceTree = "<group>"; diff --git a/Unit-2-Journal/Unit-2-Journal/.DS_Store b/Unit-2-Journal/Unit-2-Journal/.DS_Store index 993eaa03954e709f2b94b231a28630d36d10db7d..6d23ed7026c37745946fbb756272a924bb2baf1d 100644 GIT binary patch delta 50 zcmZn(XbIS0BFv~fd8V)<W8LI~BEpk9gazRIjbh@PKL`u+Y-U&Z&9eEQ2oo~^rKJ#v delta 61 zcmZn(XbIS0BFv~XdA6|Q<N_Jd$-Tn7P+p#d;O6(j5<C+dST?gO{AOV<W+-LIVJMk= MK|pM?vglJL0AS)1c>n+a diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/Contents.json b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/star.imageset/Contents.json b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/star.imageset/Contents.json new file mode 100644 index 0000000..a6b6629 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/star.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "star.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/star.imageset/star.png b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/star.imageset/star.png new file mode 100644 index 0000000000000000000000000000000000000000..252825ae16fa4615543a857517818568361b7d60 GIT binary patch literal 11206 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 CvAq!h literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/starFilled.imageset/Contents.json b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/starFilled.imageset/Contents.json new file mode 100644 index 0000000..49440a9 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/starFilled.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "starFilled.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/starFilled.imageset/starFilled.jpg b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/starFilled.imageset/starFilled.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e3f08a815639f079ebedd660133fbbc33427353b GIT binary patch literal 19860 zcmch91zb~Y|Mw6PL=-_<1e68|=|<Fn1BuZBf`}lDP*QppAR|U2C?MTTq+98RA>G~G zg8}au-uM07`8@Cc|Gb|UJ}0hocD7yDufD(9N&m?>=(3_bL>`2P2Lj;%|Dcm&kmOx; zu$-o<x&+g+r#!G1rq7t1Zt?OnaX8vr*gRu`C@L^1s(}@loJ0gTZ!+0B8e3U7xG+gG ziSZMk41w-~&YdMVM{xGsIf8S9gy)EeFB21=KTk|?iIn6rH3ba~H3bzF-8EK5x~t6e zR8&kinV8wwIk`A#8F~15IQUsPI5}`{f=5V5NK8b0g_!sX2OSk1$N%{6<Qs^L=#2Oo zU3|P7pfhB6_+)q|wID`dk_33Cf1qFf@Xp`^-<Oc+Jn;qK1qGKuXYlax&z!|4AUJy# zc(n&`A9R+Cfc*L`xpP;b#)LO)DFj{z#}hH%$^A~Lj$UUGd}8<JJTVnD4J{oj8#@Ol zmyocCsF=9K-Fskph5Hai4NWa=9o>g|CQnVxo|#*~>>V7PUOKzDzJ2HA?epFj5fT~} z9ufH=Dmo!CDLExIEj{CFUVcGgQE^FWbxmzueM4hYbJvgVp5DIxfx(H%sp*;7x%q{~ zjm@p?o!z~C%mHp*cp&_r(*pKCC-$d#kpc5MbM`F$Swh^r@XovhHhi+P1lMn!BbS2` z8rxpEA@G`r;!bdU?)US|g6iv(PwdddR4hUhtQ)wgozCq4Zenl#S2O!<V*i@gAczDX z4<H^s8Auj%kb>a&eCGebMsj4gw@gKPBY3u`InGFLq8wAcCfWuU%{gk2jj?c!*jjOY z9dOCSXPRc!EpBV!;mu^-x8LdMux0P<IiGA;%N>3}yY9gI?haK$H5Zo3Bu6got?Uvl zD@0duA9+~bDMns2JPN@w$Big&#+me=fa3I4mR2_DYnJ-KoU*PGvRjzrmr}!8e5UFx zW)x7cn*u)+Oac0DH+6ONe&-or_v_&{0V~hXw+%bJ1ywq|^|yy#9)l`@L97({YG?j> zqIJ=3TX$h~(U#dgeMfrfPH`Oh=n+coR($IVY~t{q>|9s5!6E-aAi28VUUI?-NH#=* zKffaTUTkA>YTc}IMJb<bfTX&gr7xlU_z`R+-}AwBw;fr%he1kLI9Iv1Oz-Y#FS-sN z@3cPX^N1hyTamsN_|z!;II-e|l}PT{$AK3uoz3=^izY?H5YNL785*z$eepF>KHVEI z0ng=ac;ev+NZ^)3MY3czdJwGy_DpepgPQ~e^tbic@5F<gE&(2xF@P}u#L9Depa`qN zjsEKw;+C2f#6tnSP4HiAv<D+={SFuwLUPgOI1K~ScZN@ghJwnEg<sb8Rl&NYlEecU z!`zDC>sU_fCzq=!b{0JgFexqp2fM=cvINr9D4o4yqFw&&qi{Zv`*Z%6QoNdT<!P7; zbblml*@y;jrph8=p6OIgR9f_+giFegr`L}=4VFFz)pjQgPRgN+W%W`nNthL;_$yuD zToudGCOBn%4ECP5spp)Q_#@pl2c@whi;YGV9CZ@%xqa8`)&@|uDz@}voV(J<ZLDP> zs@v`+!0h*%RYwDn*yCpbh~(uAp+aLYh0a%dum56ke!sAUQ(y`;yx(sMz?D-e@)Uvs zga`KjObNAKlxIz96O(MYESHC}Q4V+QUKOlrGiX-K(@+vvUDQ?SR++?iVF^bI<`qUp z!Dz4K6&TAdM?V-~<&p~>-Myi){1VZDy?k7kQ&Ac^Li6QA0n_g39aDpq_;}v-FzJU2 z-LcE)JfFtbI{T$@*%Fg{5>$7GZFkZI6}gwg#nS8?q*kAKn#38Ta}AR{JP6Z&N`5Jz zZ%N-ZNyZ=nAdXSCdhD&64=NK87?K*|33mL>ROzHA{%?bO%T}oNRtDYet{i^ftm=k; z>N_KM_U(7d+zG$2JR^(>{H18iw$0eYe$V=-@s5<<ySOrGMwG&VdxL-S3g?JTU@w9L z)s4K&k$?cn(s3lbA_n%SdKG^o0l@)E1ooi+;mv>0%2;zy0<s=i|B9FcYyS5G@(AD~ zlahgN0eq9+1{_PGZ|bWdaz_&wjYW97rSF&bEi${)eC*O~=FSOwE277W^bMpfJ2oev z35W%CC=p|=i!dg~4JQWGfEdVlz!@8N)&VKtt{7m(QEK3;PZK~1B>U3CK?g&}_FYCU z`~BVQ=xw`l*_$4Tw@|WQ0c}}~GG_jOm?aas=~Fzlq^lIpO7r;bqiauLUoiIP!(NPd z7R;Iz+qin7Z2}Qj@@CAalBovHzD;yI=(&AgoSsZyqn^z-vM>2bkQ`GW*j?oYeMsq| ztLBWONfjDJu=CC?^cRx#EKXwi+;%P3SlgLD&K!t7U(e~PQg7TM1wLO~*2Vlt$0&Br z&-YYpfQ6}e`$<s`pixM~Ps;pn1{?_?uc-dkcye;!nd3;FlnijeuY+HB0LKTojVmzM zW%ufN)+rZ^#?jQVy-ue826%0duRKgVkU=JU49nfnAxN5L%qmvpG7kt$#GE``WI<YJ ze|xTfi_GjaAIm}X5Bt}Fvx)hBO|S6xkZd^?otQq!_ZW@1byUYX%`<V1ooA`)mOB0D zuRe`MTFkRjaoM_cJUkv15->98BU0hAvRqDEFfX^JFL`3=J5~Jai>_{T(P6|k#8BIa z)+>3X;^B>~_rG7ul!W>{ef@2s^vKdp=WX++2Z=MDReJGKPs|k$wh#KMXT=m$>{2>Z z!j%T)Ian^seZO|`<$?5g<(EK1Q6yk+u(QSI&XSX!)$Z^@d3JbAm(<$Z;^awhz1Mi> z!SBT>@l>3;aN<OIDo($y)_-%9rNfCM{>G^o{*+IgjQ)p>(~=q|F!ozV-3+tEejKeo zR&DNVLRKvm>O`x|D>g45ubz^LGa}eU?Um=obl+^ruIN(#=zT23Hf9IwfMKYli~E}F znHAnavy+`kBjx9)E@RT7Z4*NpXJ33&JBQ`AsgO#%*g~!KVUm6K4#GgauQ<4wjnh_< zfS0T5@+)<;JXaUl#o-&1BU55c3(J<V25+>AnF|~#eY50d49;u1qxzN%MI7JFrDQZX zmi+LJEl;_WNYx}72xvXc?_A&Bz7aoHn8SSKPRm%@K`%GSGik6p!wvdSK!U;m3F>rk zLwgw04`7a$kn)Uk!cN5~Vk3{(!$$k}v*T_!3F@uVXcELpkjT+Y;*QZ=$>gMk8&?3& z8-PFtbN^`t|7Z6THvn0|kqX3-2$1UU2T2Kl#3=&Og*!=y?Y*h5hg2a~Kkt}y<>*|S z%p8;1zU_0X=KCH_jbZwNV`drEsudGFx6rOto5S-p>bnKx^JW9`X2rwU*IVRn(LaJV zUXLc^`8B^gm7s-A%%1*x%$3k1?yco>bXqJ4MW-T!rgOUNBC<$?LGox@SlmXHrz&e8 z5CaTPlV3WqiV<^Uhp^~za>7C`L*=E-GohCY2&T^fR9oxzfWh?GiQ0Ju2HsdpCPq8} z2zVo}fTmEXoHV>D#%6KdMdyqbBlpfh&xQB3onQABWePB(Chr{PxSq!^si(W$uQ{7| zCiScx5$Y~_jo|2=J)CjGcD^RtWy#+IY`w2?xV)D#0%*L~%Oh1ao7u&d{0AwV8lij7 zQacilWK8PScf(eT6f6LourT)?K*j(l`~SCT^q>d={6pz&>My(IE*MCEGII;)Xe6{{ zFUgjr9L4Ot839}ZRM|@a+Ug<N`MAj9$^n~G2oE?|6&+|8PfhJWVcd~M7fDSO*PImR z@EHn9QuQ%Z%|w`w5m^-?jQNkwC^UYGThO1ZF!*?(g<9K)ndIJaGl<hXp<+Amb|M8- zJLpXWf@{T?fFexY>PZ(AeD|@O8>qPG=`nBSPL7LMb8JE>qPi!3Gv{80jL!6tTc1~q zamjc_cJG`a9o+PTp1(fpsD$WNhB(J~I@8-A1=vW5zw&v*BZb~vde0}7RORCAj@{b} z&5I537SwN!t2w<z$$S|6C3*%Y%UM094L`n=E&G_7=Y%~0RhQ`<X|OgN!OznnC-r2t zj@@E;*&@HD_1#WDaQBK=|E(qY5AGSV9<cQ|Adv8i6gd5tlKX?k`yUN5qO<$I=7v1+ ze9WKNgH$Xsc!^kZKm2avGYyamzEf3S{%MK-z?)o)x^~+Tg)I{OMX2<y$4=Q#kFP!f zgv$Q)PFhyN=4V<)K|9!L4Cx^6cjjpoWly(PHHt}L+RHm!Z9J~bI?8Vw3)K|b#{{)9 z^tiX_G{eO>6rQ@MhlZ9Bb0lYXu}uQ*hGhR8D43GRpOe!(&FTqMPAHt`l_vEU-<1Jb zzl<Z;6Aw;qiC_&s|3Xu?AEn|+tEp*OD|dK8Rv8^nKruG3AdJo#FeCTY{$7U8Etk%( zffWk9l^6J{iy_~)r4=;><uB=p<8xkr-FTzo>iu%+T{0EYR(X0?{w2egOjE<!WAFIN z{eD=@?b&;bnVo=^PC#A`>+Qxn20C9)Wh@orUUOAxP-9j<vEY;pRVq@qf2GGCi1S|z zaDV{|D8<kC>j{8{#0{|Kz#tJAf@Fzhi2=H=;{e~4^#lOUD9RG+ao}<MYitCt76^C- zFnFZZNMLX#CEe*}*3%DDFKD2PZaNoW-jmaLAuhwUd%~HMEn^bP`qwcx4o6o`K)oj* zx;M?Ik~tiW9eaPP>QVh6$Ekrk0r3SdO{5=k8FV;3n8RPvFEy<Swi4i9*`jOy@%a$k z-`LE~R!Y3{Rf;t<n=iP-H?Cg}P($d!1}1eh1oDOWB1JflzaW@`&ik97oKRR)y492I zB(@O$ZV@~=p?6)Hg#uR_-4C6NCIOx3?UN=AcF+n)2hSKhhi+EMB3(D^tz@ONz@-u| zHV@et;;EWml9pnRg%#`-n4Yo-e0n3Pz0zuE#j0SKxTG6`VwkMt%@=2Pz(GedSGG{+ zB7oGliv9VwjeB!+D8~=iZfs;5Oo~^o<-vDwvT9UcrPY*s0y3<wPu!0{_P}H3d~xVe zxbt-Rv6emjzd&#tX>j%mS^axp{=c~j5SIg#01)dxZb3okRPjeMmEg~)4_ZFRZI22* z?9L>HZG{+S!FZPaG_^HLcR$6j@p@1yYev@Y)*NY)7ajI9P8m?zXA$rr@;y~fK;dmB zKAAiT4iq|^d<Zt##q30*y$^Bg86o>VYVgtp#=|t(9Lx61x`*yER5SBc?e*wyJ#O<( zJvtg?RNCsT{f(#0L&lrx#y3_Pxo!pL%5oo2QQ4CzkKWvnGNzTQ_Y!@X_x!me%$lSk z)kQ#G)6y@b-M)R6y#glw?Vwu(>Z0cF4=9M;IMP9zdU>e0@K!&GP(~Bjrad}T$?$zo z*9z7T8oX823Y($OneR@o_ora~DisB38u6kCi^{Ol2Cx9vRhoQtvykL36kCw4P(VBQ z8+1XV@4&9ol%$}+N{=bbLJ;2dlmyE%?j%)pfIW6qY`4|$^IH^JUJdjhrI7}k!N{yW zzQE~--qA$ra9hAKW3X;Ll4<4hih&hicSBi{$zh4au2ktb`?G>z4uHFY<gR6+w=?Ui zz91ayb&Y)zU!r83ksI-hP=sy^_&6I8r)H}aIw#OP$2QfPTv}0S`ox@T!O{%*Affz# zM`f3<#F4MF5FVrNS1Y=(7sGM_av|KV^U&hut5%wN7dd<a((r!h0nSsf2HOQYCm0_W z4vL(B91$m=0N|0`h9fI-)M2sggrOHNb4v!irNuR+N{OcB{6hx`Vs0)THx<u33K{>D z>^k@}zJsz45P&}n18#a!6|FCVvFNaL70DF6grLjv3e1BMrLBNQICWOf{JZ0+{yODL zWOHVVi#5P^?{yX@6CAHA8`_K}LMr@lp&v7)oP~`OP|G)y`HWM}^E=Mr{B#6jY%k`T zqoFgR)Wyb}fS7eB7F*2o+yJr3(KDhbIRR<G5=Y`>yV6@GCHD?fI8Hz#MjLG|JI<+m zJ~ixo;A1D@z;l@+x+`$HJGbeh$60$&GlzZZq<bo3Gg`3_Gg(O~pW#qLM?-<6DlbTt zb|mKG%}OJf!e=E9OPqjc9#GR}ge;Z1!#9U>x3$=c3yPvj<;ReeHwGTKdNFDk2#Xcb z%1)>&^{!z9sLn<2CpmoGkL`i?)CnHF;7Y3G3_1a26oLUV`JRA?n;uD5A#TgO73S)f zm)W{?#EnRCi|#peuk?l2M10w1?wan}M;sk5DKH+UAB$&%EJk*D9Hzs^d5SPv;rXxN z=R8xAbQ28UC$8skeeidDKB*0N6H*Lw@(pRb*>LkwN2M~?(1Q`?=M9Md;lv8IjWt~l z<)%^PuSbdV{yn)Lb_Qiqk{(H&fGFOsQ@-?61x1G&7sJag#O<HYj*r~3rfPCzR7dpR z1HM|ib{8I&_8_{vkor0Hs%MgBOH!*RHbW*#ctn*wn<xF4arWs_-E(Fs1-fl5Mlar( zoor3?6r-oMtQ;arsKs<KYfL+5{;BZju2EljYwV44SH<cHo?E<dq56yyOL($kM8wjb zv1+YZ3d)49MJAnHTr!Wiprj`#Kg<lVqc2_^5)mp47;laww&Yxd1t*8_#aC*|*KuMB zc+bhXe$k2?X;x=~q6H!9{nZFgLG}L2qu{yQ%`)rL9+tHF_~(l9p!sB?qXCcuojCvR zN5&~JQ3Vp8GFt10r7ei%kF->~wG(x}xpFezg^GOgSuG<)3D2tDOe=2-H;)RiIKTMH z;}Vz1m-pK@W$Auc%gF6LC0weL6E3K|um6V7z3<wCQmAq>TX3dF)TcrC-cxLye6K*@ zN7c@r4gqM7{l2;%QY(krC#B70`k8QkORwO*Jyby8Xoh)_`>{&QCTF##Y%Lc9l{C#! z;-bI#v~#<Olg45yr45hz0biLTANG6^T%uH+eKBq9Rf=%ZMJ&w$U7CCa<AgFwzEk{; z5jhnfnNjMf`82>;vNe=8d=!eZy+h3K(pq@HGvRm7R`ZAh^0%-8_&bzCs={p?SYiF0 zJZ$R-7x~Dwvxe*i&v$}a;~vlzQI(}Ooq%|n<K)%3gDg3HlvC$nY=u#-^<zH5L#hZt zIyjyBj?pyw<9BpK>)K>xLFCb+)(0N={ynecXbBNp^4dn_L<a~5yC&LJI|;^J74FhF zT8M=<63|5BwB;2ZQ4HbW7i6%$4UeI8)x(CDTbZ`bfk!eM2-Uqv>@7eI@qKTZ@{eqi z?b{ZJIFm4tn4eH$UamfMWStS`=&n^<t_mAlx)DX%NrqiQC)bKQDrXG!2p`ZYo!4>@ zP0MO5Xp>RJI1_u&-p>p+)K@yrnWQ=pL*0oGy{NzMc;krfR=9YBL(_cXW<u%vU){=E zYXyf&5A~QBbPUUGz25J2ujG7=F@+J9$-t8z8_Ka(bO%2mdZA)JHk#;XY&$#mJPp-q zYXJGsoRpB<l+&x{u_yiE@d8Usj%CZF(%fMJPU{$)fF#m+QE>Lr(ja)*<_U-^=H~b} zCL6*MVXp7w+h9g7+YV}E_C_z<jYl3Qv72qTFw-G-S8F>9H;e8MZO~-<r_J9^bl%H> zXDHfiT1T$%d==<zHtELO5$0N0!Kx5;nxUR=pZk=~ebm^0e6GOz+#z?!;{B9TSJLuU z&rh0}&xnpmj+71bl_HKwNbLv|ORXB#B#;fleX87PyFNQxf{u|7DI#e45}2@@1Nar@ zY!R}7>Yi^>ltl=ZN-9&zj6-`pZkjFCl!TVMbpfALq~1=jKz<D93yByqP4^7KP904F z`D0GF(d&=3yzl3F#p70M=Z??7w7!-;AOE&@qX>vUIM%QxRI&~5ksmPAI;4MGYfRh{ z7O=R0waYyq(N5-Zthrg!usqz>_i<58Szy4``*}K`7h`U&{7B;5_wPY)=g{c!??0}b z5>;1q64pBXRE;!>g093Tyg)KU%dnalC-=q>FprW6IpTa$x|OlKg&;(&|3Ytwf7dfW zWt>k+@b50fgGA$Ar$AvADl7^T3WG*R)KjRdo288NT5u#J=K?rDvyeXlXZK$fs2r_R z5_&4@v3;F|3)~qCcNy@qQFPCAvQ!j(Nqb-3wF_-X*2Q1%lYwlGetfqd5rH6dx^3NH zCKRiIEZup6&}J0mKE}AsB1ND*vWmH2stZ9EkXlC;)ebTV$xIC8KS<2s@6_l(!K53c z^+63+cJ9e~U4KoQhP6l;b~1rvuF?_p1{JNF%)>;!_#gEeA9TlRzFn<aQdsk;xSLE^ z$|;Ht|ET(WB8V{!P%|2rUIS`oOhj%kbUT?Ezckv%C#9i-SvY&fFt=!25E{;$#=N9| z#z7`=J@x$M6VPQWjDga@WEYhoz#OYv)dRT!s0ppK0=NC+m2RJ-WznrnZ;rT(>sT(4 zyjNRAjCXZZmnh&~P(agsis$ns2Tv+ZA69e9jvBzZil`C#$9jWrS5e3XgY8NF>3b09 zaJM5`Ri>4rj4S(K;P{ENp86rXwJ}O>q&4^QhU5#;ZT25RI*iZGMpECZBVz6MHz}&1 z+{PHf15uC?sN>B&J$lD4`3c9|*D6sd3TZXo)vZ;wN7BfG7kk>9gY9UQvPW>eZA5&g zMJ|lr+O`mUh#ZFRWEM#`ngps8T;t-ye(dYWJH&pio{V8{;i+Oq<d^ctWH&Q*<?lP5 zrGMLrXeuv^=yLLQ9Gu!@?$*fWeZX#M=d+FKSm=&9?<Rq0^CV2?Nar<=?mbqEyz)kK zk1*L%!NLZ_O&7fAl4a|oCf6uUlqsTPc5ZW~35n4`kKYnnYk~4<gk(MKnQSu+&{)kt zeoj>*V!CWc>Z*6ZQRg7`mO_0Jfo3AsyQPH4e@B6*gwV@>cP1jlUyJ3sc>?YdR7uB@ z2ry-#CRCw9VVWYh%##3SCTL?b$5}kT=m+Tg%6A`AyhBGT0-Os4tXy3iD}|;Az}PsG zSC<4>!7o%nU1o@nrxx)GRS4n^OrJ&_ihGVzC``>lM4)2&<BdUy0=0BrmMs?cA~|SZ z`{a_FUO;wWu|hbI!7-@&eH!Nv=hs0yw16i_V{*3#tmCMDXhMOZZyaJ?SW>@n(=x;} zC0PHgIkQ1*MVnfA>DKxC?N>^6lFCa3LVT;?5}5{CnPVe?^<R9nDS5KXi!`#-IG;WL zF&fd{t6$PfLv0_|=oY;y6eGeTaWPHw{+P#M+;M@cxQLR5K+I@Z@7lH@JUEt_JPmbA zC_q43f}WSo>~L*qSvoD7v>I_F@68a)5S<Ls<Jd4|7j5GKP-wO<CoI}s;@wr2iH2d% zMR;|w<q*Vb&it7H|GXR7A~!lCHr1Fa-o_-%*k{DHN7;SWC0KzUS&*Cz-p9zIW1Out zk}#&ZHG0Dz^a;bH6_R0RzA|yyk=}jyve$0FfF{*|p&^eH3bC~76d~nsMPN6t#4^}~ zYnfHy_k?No2`MjK&9fO|nPooEZVqZD4w9P(+keh_PyFd^XV1s0g@xA0P_iTLMS<mp zi0(yc$rI3{OI-OS1^OQ!L+|iAk|a?|6Qw?>4Ch|91yOv4g7t0#sY@UNh2Y4%e+Lbw zSY=8|6birSugA#&__~0Xq8RawLntZ<h--8KpeWtyu`(-#S#qwoc^fO`#aB>(L!v*v zG6Q@ZeHv)=U3r)d9srk4RV8l!lY`Eg1H1;P$X)~|r^uNe%O<B3bWc^dN-L!j!<#%7 zyH(x291?5K`*zs_*<vFj0YI#&R^s0v{WcJ#p@M)&<AH1Es;RYaSCW=)P>AiK1?87C zKXP)_?q2H|blA#+cZ}K8FWF2Aoc%oubcAd4szl4K1;k%~)uk_IvzEsgzqV^gUnWdX z&drP19S5J8j!pfF)Oge$WlR-k!|WF!l^2_3+0$ePnH8Li09d6e<TziTc2bMdv^d%@ z?o!;jMvVR5SQ+DbW<Jy?6`iQ^j#5Gq{fLxG-R@<?1eiiQ$&1koNLKDc_knn(X1CRo zs-jyD#22$9(sQn=eT}Xkuj2<CCLei*gbMPEMJly1{SPUOt6vsVyLCF|T<8U94i#NB zAG!VH8l|M=T`_Kb@7EP-JCqq&Uq73QYmDX<T&2z8C9%IG>*XU)d99%4_GkvcGBb)P zbcxAY4^iKC3~(%Sc(t&=0~PW9ICioK8r~^zS#y&p$C%dCU*OYQZ7Z8W^lqUZbGNG- z;^0%B;B<imQnlq6uTBpsl4<W5@$qWbds-qcS2_<51FIhNw{3ES9@p;WF!e5VD<HQE zs1uH4K#zPOR>UFWI-#(zD}aeqX7dN4Ba#FZ>Y5__2?#D5K$&pjcm&L<^qBT@*Rw9f zsji6z*el^9U@;|u2cy!g2-rfiDKv+T!K{=#ub>dM;g(!}nT>^q-D&aEZ0b7b%Ofo% zg?w_onNYC%kzQcdr>Gv90bL;T(h7W+KPHBMj<389?Rs^2ovW-QyfAenzQ1)yW3~I+ z&08TVphXK2?Qdsl--W&sXX!N^Y5FkXEO&r@X=f%z&os{!Z`F4ZHaxoQB=U|YlUmqP z^=tI;IGAY9Oq#+qTBzlG!G+iK%pki~SB{)D)vw;w!(b4AkdfLlDHZ-m=2&As3k^j} z6rA-S@1_bTR9oLSrN7SD=Eghwo)0@F+Vcrj%E^ipkJEo>D?N1%ISnT!<X`?-4Z`S! zt4o0H1M^`7cnG9Zm510Ju9KK%c;~3G$nDj=jd8%V+WDs+=1B0P?qInpR+4lgR!Ek@ zrAc3SfStvAA*#20q#V);J+N^*@jc$PrMw*`9V@BkjLhNEU`yt#G+Gt847!{c-Z+^i znWwV04R>VgGl$wcD;1b_7z!{AYy9EYxH159mDQD2lJI=sQAOhTOoFt+zBX3n>t_e1 z^m)q<0liO2Qkjm!pR_Nmu&kO$gFRGqq7S(>(vHR&C$kmev`WzG8aIMj{iU99x&2sL zbO{Sb*I42uB_NbvoyJK0If0lO&dkUO{Qx+JEd+sM5C{<e28@u#3lcO0tYktg2!Q}h z0t8IJ%Jo2?1OQz8rz+}I{=2R#xNA6rbphb6i%KS6^25|`5uaxVX_n}kJhi2x5{_f0 ze$v((Bb6fGu^#v)5k*b;emAG(sly%mcp%Vs{U4a--75iS3J^J{X+dkizpcPok0!s( zYXYq3beEQ8Lcvuz{EK@~JwyyYJ*y=%RM3@ao|89+q;3A~=Zq|S1K~{j!`%MS%Y|9$ z_S)MOGS>1_E$@vL#_Z8x-r!W_v|%fMYkvUPQ@{gWMu-GI)X(B)qi~dN+7VuvcA?1K z+%0fOsbU29hD4iF-5_^Z>4KP*HDJm>j_jF?8rtSSl$3kB)L}}I>$0{|{AA(uYBd5E zVa+9=@C5!rP=$$qrB8k<>ydkDO*wp#WT}L7R=V!RLE%T<7@0my!t>(esw3C6#jBal ztDntN)f&f=ouk^7R0X_x!>Ky9J&l5Y_|%s2HEy-IL{m3!uS#1Qa*~_x@iAkxq>Ua# zs(d8mx!}=o>@%7nCwS*DY-8B9Z#G-&dyj)9w~*_Ke8#MAg@xU2h;8e$j9#oj657Xq zM%kY1eyBo;>q~}k>Fk<8Ncaq?)($GU#a`9aTzOPBxIqsolWCvO#;QP)E@V6<PPm;q zTNwj^JfasVd=m-*Ul;la0%EYI`XgG=8(;u=m_8_}4Hv4#IqU#D2^GSr5a7bAlB5Kj za}OZ(plI)J=W&{dKLL358wU;p#oGgKC$^;CPpooI8Cv|YRgBTWGr#D{bBxX^;ETK| z|D??xH|$-%?o|N1oz8i{VE(K%`QwrK^5@WRpFu#p^Gs&Qk3vFX4%SqwOB9+}O(ZT- z97h(SJ>g%Hl5S0}Cw$ET_$0LY(wmUQ@#X;=3I|H)N88;T;+~Ri{j1efJ&3l@6`gz! zfk%oS>6^7x9vk0)fPUBfpk`^<KJ9%??ApSz^ioBBA)<@Gn}FDFsBg3a>vuguJfkNc z;F<kvV<R&ih&nE%2+89+4+m?W*?jp{289cFC@TZCQK3ZgpEQ}Wf~Q1=%5X~j-EYi+ zJHZ3kh604+An0wviN6f+C|k*ftI-c$2baDzkk3nQN>v{DY_eIkEweMKX<u`#mWQJG z8c;T2C}JC`(VD&+J#dU{*_7bl_W@%V9M5K7Sk(YDOEyWSfGM18LCsQ6Gupi@lFz1L z2Ci!IaJ?BV_Egp<+tWf!>l==FgpbVK7*=$*?u``2tUMhqk6)Cwv^yVSUQ=&Jx?nJU z<>o>-Rv}sWY=<@5^o%NW$w)5J%&;9DTK=#}J5n^g^9ls|T|kw_LCV!t)4MWU8S=== zR&U6Ql|tPLsCKxh{7n#Ynz0cCvnqenJ4Gyj8}|!hQR^q5O=>p>MyEUkC>6kzU4Y=! z5e`B7f2Y3rf{Q++=T*}9({-+}E$RtpqdACB{oVP>a7q{5Pa1J$7Xv0PzyP?I!wh83 z{w`Q9|2UC78UNgMc~wQ!mdYrC1C#pv9_7uzAcfFx*9fzfJal_wKQ9L<M2wU6ezkdK zp>I#mG0#!*sd?zrxD!LT@~7O{Vpxx(&@XILe5f7ao79r7Ji^nBT{|MI;Ppy^q$`zt zjcE3KwzJEyGdlGBS~)ib7r8JENC!Rr5Wim7u(Uw-i2E3?4d58hX;JLE!XiX3f%n<- zbp9YNAR)uOty?F@QTLF!!Mex^XNV}Yh<;7w{2{ON_cJ`5HD2hw&{}kJe6Tl>aP5+- z(!%ER2Nh)uSAX>P**}O7iVz6|llb$?tr^Nc4^wYVA6O91J7Nq*`_wA>ZAwjY(y^2H z#Lek-KFCYaLD?=m=o9k!V$X8BAdi96aaTB!BH)Vm-8bA@T=|)gxk`n@qmOft#&*3( zA?1EkHw)2Jm8sss&r$6D5{zlvIj*CoF#=-J4av$B$mdMX9oHJN-AX)-myZT4sqA`^ z+ZLa9U4iPi=QWhbk}UvGBR!qF!NfOHl0U&8fI9d>>Sn*FoQQ8gMhL*j=K-G{$OsYO z43`Z*VAmqP0YSu{TIDQ|A%cK)qQ@^?30-=qnMnuRq*Gpo+{~nz3+>n9WU;u)gHb1k zG);HugzA%Vl{!c;6OaM<u#)CqLq~r+COHw82!R9%Xr;M|FG@aLPk2T5vS|Vg5%N9j zBKvA5-I~=&T^nsf-iYI$Wob*cS$k$``v&6$h`o5QU&#S+%Chcs-$lj1#IODHUXrjn zvzsp2)`aq*>XGhIN~W@caJPQ-eK<H28l=Rl-lNK1=0>`avq=*|6CoCKgX0@?urlsO zBLi2z|DAjZ-V@NetY9d$pXO2HbIkd(x4x6t5x)zNKNHx)J_V*cpm>syRVd}Oii@^W zX#AG@{k!xckR4RyH2-||G%5I}6QF{O9AShjB%{5-^1kVYw>%Bgws5^=siba6#AUty zxH{<or?CKG^dn+1lBCCPJNv?;XN2;&4Dz~^o(&!2RS<6`a%Uq&0tQ7%e9meYlrKrx z*1V)B-3{!0U{*ws?K{^ad(abnHQ$C-g$UJZ3C)h|JykuA7^-cv8O%QhOMVCVq+7e9 zd`ZeJ65u~wksnzL^EGMd!GnaPw5VtJ$Z7OqRGT`WampZSLn?VGGm8>P#pp^eWr(39 zeSpw%bqIn}1n)lJ0Ku*TR?8o)Ve188;=(gsIM}jGp$^5xloii|o&x5H6LsTr3*8(2 zS7It2i+SV?EC9u<o|+^Hn+2zgPKUI2e4BuAaiB!(!$zj9Li7PAS{=aFf2Un6zsQB& z#xDjprBUjc4G(j~Yo%DXRsWcaVnVW`jF;3071y3bMDx@|Yrc_+`{vpUuAS*G_ld0z znY3#)yc^<5oYMM}T{1T%uB&_lc&B&F$3dZ+URjJAmbw8qURhI`XuF8&SG6M^eEV(Q zXklgTQMY++LegU{j&GpHct$$GPZ@O!naL~K{i?8}9i7v4lNjkn8y4FnXoh?|R33B< zl&X$4at~2#+yL}s3Q)ofpq4Pe4gt9R4+GqVUyakB3qx?m3KvTtYQCoU^$oxSqs1$3 z@|Jg=6`mc6O)Le1H(!$;(_9{Y`~6&b>ksb4DD~;|M17gDb;(2+<&3<JLNxPNep9g< zg*-D`@t5S!FKIarIcFD$KPfuP^t~aTSs2#iG*mC0XY@hde_khsR@N*3NF#SyMG>n0 zNJ-CG)^h3<UK^~}DMH4AafmWL`k<VACMl4veUn&G5Yk(!FGzw0Q;LFcx}hE@@Aygg zXzzMn3ocIfdsFGV8DAf)b&tCe&txLr35`V3h&+sNR3U8j$jAy2jQg;$0PX7gs6!_4 zaoL)N17I9&f(xf^4J!}eAwX{b9Q@Aj(OM;3(~-WYo5t%y?6Dw_Si*vuxzkE5si0U} z{2`a`dXsb}Om6me&0)(C_nC21!FkKjD=%3}>Cn0Ow@gCykFR#>ZD-eYg%=XO?gXOs zy%`MG3cc5K-dqiO@Qj@yiDdj(Yk~MonidG}8-9U@DCyJg4fqOWf&ZiI5e&xjnT#m; z!eQ{p8?FQ|F!ATdc%1-IJzs?*>Hlv^<8XCVzg36){R2^w7`3MB^9cP-illB0EAo<W zun?Dn<d#eJ*YUT$Ws{4f5E?%e`PSqRH677(?3m3yf@<V|^rUkkS7i6uD}<jW82zBW zd}R@amI=R@uu|yn1|)^DlS&>3&viT$0ajFV;5wMX`!r_T=P0*znTwSryuU%695kB= zaU7uD5Pmcgw?=M>ND(3Hl8ENAUeyno&{@USXF>$4G+xhhNpN?h`=)EWjL&!@2Sfk} z{t)N-g;)P_P2q(g*={;#j)1>(8r@aARwdm?2=bQ4`RtDxn`HBr5=XXnQ@OJxw%qsH zEEd=h2RAF_vn|+OoJEj!exlo6t1k~D&mt0I>dVw`WP2m7prBT>LAmSBti7J8ggydP zbpwOxHIo~vfFeb3FRSwZVV(c;0H<JZg&Vjk-P4K<06PA50#te^a>8*1alanoQB5-z z)I5u2a6#mf9%F#9bLFE_2ivzTjj~LnCm_A@<-wxd?^<ztMpN<GL|dAOE%6v(d)qiL zTfR{UXi0OsU{d~oxa#tVJ<T2^CgmJ8<fSwMIVv1xtwv}JrttqRulsrjm2S=4F|4Qf zdKKzwiY&Oj$2<1&f<eKpu=w6%uMF!*-B$wl@kc+qg&CDa2rGZcZ6Q}?ebL>}ge9&A zQk@U>E{$A5uc*bU3PBAt(mBhThVw)E0gemy`X>_o!*$A){ovk=MN40@3VE(hj7?<$ zLrRI))y`hZo`pQ!Di<07lKVBI6<2HQFoUd#FE8Y6iXDf~y~HQ?06WDJe)NpI`E-ju zb(0CcvotcHI9y!BIO~VKc>-$fV7%H@W#*s>XvhQx4xo|a_IWVS)$wmmPJ>Li!Z`q@ z{X+%3U94cJ;1KwzhX(@$K^+}y_G66%b;F!)Q+Pf+F4%I{(H|J6hestJ9Q&A^6V3Fj zwrKHt3@?XdQf+#bu#ij%wb*_gAxxN!f(hvM)j~s4B6;WB3o2SV?3o>|D-_&=n1n!N zw!^eT)5WnW(<~9+f#?v)-wX23^5Xw=4<*~eCCsz9S_ro>FJ<JA*|~mog88ro%IbiI zEVnyNd;EAr{c5JJty^~V_6aDsVJF9P+;eT-@@};NMsJ$=bMQmbnYabLX|0L~fw1zG zy@iA5Ns~7D``dhg#X<Fw#sOaQ&$0qs)e=wx5A1)|z@LJzUvHlIS6#v18e0w!O0p83 z4-+hw^}LHran3njRb}h7fERmJT{m<yE6XuCn5|^?=NjurKLTn#S*kR;T6#*7U@e=q zV-GZ}y_q}G6Q+;X7*b*`*TSSTXWL`n&L<$A{v#d#iN1fjPS!3+mVp1kr$E|U6A4ut zj0^XPPwvj~Rvt7?Ho615#%si^UJxmE;YR3ohww`^1B0SOkR^vdW3sJ!XtMfJVo7(! z{6K60_^v5m+_SS)TWHFvTN*mc=#WpE5v`cQtYv`P)ZYBNdW?_=ToZtzQ9S_i^l+Ny zFJ-epi8D~uj;kfY7p%2&(UaO={KkP*-PgIElJkrmZJDs)UuN|gDeJL?Aw8}zwy=B` zTydWg(?Q<78x`WSnS4;yz4OH{!q1~A$AzmvhKmrBb9+0Ja)w#w3*e$R{Sia|=X&bD zydFi`!kw*~F*j4fupM<jJA<!1V38=xMV<vV+TF*GKi}gkh5@pQ6X~nn&%o@fK;4K} z@|J_-6W25jIQ}tBHf*;1BJa}q$qr7owQtDd0*9&q&)hJr-F_~OO{LWz+fp|lxWJlR zynwb9PvQ9wr$-?mf-|Ks1>hRs;y(^faS|SwA`DaoBpB7s0Kqb#3+c}%cAmE)9jD3Q zwxXWTPC(gOH>s&wRv{_-fq>x0U85$J#nY%2xt)l%-2CLBYW+bweYS5Tb>2<QApgnx zNldEAP9`Nm+C+fr!|N?C5)hmre~1|TzFq8r3#CM?2M5ifNn?6n=scJ7rc$*(vFn}8 z7Wev~73;<=mI@iI#Jym*Yzemy6I0^P<sbyZcH>tHDlRHWJ-1wxlr$V9XUQ0C==`xL z>ZKq2J#7y{ZK$24U0H|VOy{b)`*z-9yB7EHOgKsX^OmtkFCna(W+Si0co!02L+w{O zsG4F)Z2L{PlQfo|VT$rC2S&BPc2X-Ts)D+6WL>K4xy_B`ja4iXsGcj6*jl^LGGnQY zkrGimX2#kYzBP(}k^S7_^~|w$-_k*>p^QkT=LF#MZKqz&$3aka_0H3!|LXwPenbdR z4;M-SsP~rv4!uEe4QgQpMrxr=xy7NS^|c<hP<7ZR`q36>@=KG~#qj*G#uLz1*B!W^ zUMT&&F~ydzkNP-Q+RTSPF);vPp3lRWls&7xXQg+B{O?IG>RFi(B@V_sVzUDD=~=*| z0AL|21t|aL2{S)5LhLi4#-kpYjkE_@b7aW+aHct4I}1uno9n^TVsful?t^9mm2c)L z5MygeZ%g!?UwgE9W!k9sYm9D<N3*{{A)m4>J@Z-r6Oe<p`(6kn=u+KohAKa816u-X z(qnO!?K36G>W)GKSLLJizAAhmEo<6IzdVB{6P}&C|73QK)JeJAFs>ecX)M5I*x3d> zu35x$CGDHlYDaGcOiDZe1vF%cY`Tgbx%AgNm#VoJiR<!C`}waL-POB1+#m{?s49i! z#3zsFhR(5>EH5>mfOawhT<mxIA0A4ir<4jR-AO1{PW93c$0+kl1;3cOkuK-L;x5`= z>62~b?L14P(XpreoH#djD5{xP5(%L^VDRAFxlm2Y`8~y#LD2V{LN-hpmHPw%lc*XI zTKucl6)^traVxcpES$MpO-NvP_WH_0YRf_k>fzqx^a(F$w+=N>8t05}P#o^eW~mCH zv`X6KV~RWs%*N1dFK!O&BwK7^dZ{)YN9aO#>O73j_4a171GO|lC!o8bw~#eA>L{Q_ zb}q)Ju>N;Q{x4&kGmT3N0DYc+-_ZE;)<Z+K$QJa>wF^OsTR`kk8#QIH=AT?wk^k_p zU4N7D$aQn8bhH6a+fe&(`$%~mJ)24K*upO=s)9hTWCji6xn+B`D7{Y6(=vF)C`wH` z1!<@{dK0K_E(!Wq%=7x=bC7SJ36ji+1sW(Xs6c8>*n5MG&BTL_DRQ*R-acrxrIFRs zdKVgXNi|tIT1@BW9YnJ97X5o~!t|ww?McQP0wK?zEQjD2j$=DRa7^;)JrShgjy%ML z)z>WT+CXJ^i$qtf-#tq@h>bE!B701m*1$mNu~usG{L5%>TAk*1K>41+IOFHFN8XX~ z5BrVZVDd;Y=GduuNgY(=Q<_hv$u_!s@Ps9dOO$q<MsmvXj6>C>k<p16#%I8zR{~W# zb&OIhsG?t-quFA2VT=G4%9Ao4SlYgk84MdWz6IFu(bz)&=F*c4E%f}G)0U5&c4MNm zm*wRaFFt`8G87fJ40%qf-j>nWcgpSnpmm9@GZ#&xoeskCU|?G)Ra<jpvO}u!$EuY+ zHCa%_C%e>*j915$3xSAvt#77M!24ufQ>uB<7Mb^)^#oMxqH#>QL5n=!o$4~dD6qVD z0%G512&Z>9O;)~SccD*(an7h0Rd>^#uUT$~FxzzW;qXI9;iQP_-TtGCce39QvCv@x zUGrHcps-Tu_9CJ-L$;dl?IvPEZ?y0F;vMwp^2NMhz3PK<Ee}x;z$Wo;Z|8i_^4}G- z$Zp`~CP{CT_-uY(+<*K)El=RneObD$>7iU{3dDDBxyIy_`~RXl1)d>a#7jyeO+%CC zX_*%{hu<ze=#CV@950;9%|a<hgAbdcSnMD5d9!Q@nafSbbHQbgD_-pMItx4)G62Vw zPE_3jd`gt67q^>~D{_mi%Ba)du7Z14f(zFuXu18P?w>mb|8fT?2gNnnBp|DCeTFy~ z_iN7$LQxMuaX{Z&@d=0qQl=It)5N%_3RFjy5s#P4@qNr3j{RPEe3x<)tFIq=HXhq$ z<TZx5R!lUSe0al>atIcSMU%D(7TkZ^@``j7wVk4e3`bVDYiflkxV<c62T}-)#2kr2 zAiyhZ8rM`6qi1J}W_G#sR1C-bh^<|@(EB%@0kS~Jah`ncm9(;E?Ea<ev@$6P_Wm+# zLLc{)o;~Fbxr5Y8mEJQ~z!LSGH@i6y>??dhTw08>Me1I1l7nynYj?y$y8)-0Jr~5E z8*ATmIQ+ObWKH&1B6mWeyH6*1-)wY@)Y%;)TZYA7Uwee{RQ7Es`++PQ0m|VCr<D!B z5)z{6trmmIqX{*QNV2`)V(77O?}F#G{JffG88rWD%?zWQzGA#4!Koupx%cqprHL0# zVSQ3%6_rZI^qWg2T$*TeFCY;=CJrp@FY9@V^?<?CTo!a#IA!M!i2!#@cewyE@{4uA z2}r7cW1pd?t4rsSC~u8PVvC{Z)?%eu{*nq1m7nd?{xQ%rGc1oTs)EO-p&Oafnfj83 z<tS^-#HSu!-ZeJpO`h;XrB)r~*<+FWeKoUE+=gCr-tHSKeaECNtI`s>^Qw^f)(?E| zC!xWM5<NZUvj*uT+*Hmfg+UEcR)LcIb!5$2U;VW*=d>(-xED~3xpXb0W+|I_h0O}? zt7r9#1wB6KappUGAUl318yk`%PveSM^t#_MVWup+L3)-f$c__M;u|z87zeXcZKr?S zGpxO=3}#~T4+QfF+ySOeyeB14AhYmN|Gsn{#7>aG<D#^Txwo6YW`P6xQIxNKC26Eh zJc~!HY&RoNbzw~QMsAV&Zp|h}uOfF@|M~2#ho+Psff8XSpz^9~7cCp2!y<!60o3MM z?Y{qut^Unu|M}#f@x)*6ynA(?{k5T8+pb@A!?7MDbU%8{@u7Q+$jkv5Z9^Zu&iTh> zIXXjZmDGNV_L_+bJx9AniPAUE<eM@p+P{x}f9?ju_E6#`-XiQC&28z-xzZSELMRj> zfWi-jPC{H`GQo9E6h81>XiBjPF*F$0^ridU0oPDdb@dHqY#&R0kd%M|^7Q+V9`akU z=Om+1(wiu<iw)h|8CO&`=^KY#oziGKVAHXz6-<_NkD5}VlEj03chhK_7V0F3OpC)5 zh=l^(INBUapLunV!+?N+6;ReJcuZM&;b!gB4D43b$Dy_351QF3h`p$`K|NI$zDVn< z_eVB5Jyc<f4jmU77+9*{x2oo%*Ao}r`tCkItBoca4=|A%04o_eM!u+LylBz4H?!|C z;t98%)oxI6y?al9ql@J{c?Q#b20wu;&;@<)G(=m0=oGy@_^l!HccH0&4w<}J?Y&S8 z{9Z&ac#j?#zhY3CI^px6;w{Dxkd3jo`wTmMXhR!W&g!YYwM3L7?zanC2P1AcR8qOT z^J5{Wh@#bX)TX%+N0Alqp+6mUw=%b=5^371c<d9;c-J5&b;5U|H9~og{gID1<CM|G z4=?K3FSvB>P0f^I;K2)B^*_>+@=bO5UQa^bE^-Z==bC#X4Sr0%kqe>lroSvtlpY@w zG%M0j;A~r~D4~3fJhg|;ThxD6FnB=)@_nLMn1s4{SWzU-u*Wo*g?1`-vNTbw&G2SZ zO6B!!ExQnK^CyJsgY23YFyA8MA0+i-iq<8q@Vn|{!GLF3&ao)tZQZp}9OO3p@i}|A zl-;GY?^Vn|t%Bbx53m+WK*vid$A3OBSDOFwZKib#I9+D4(ws$M$8f#iPJ=M43YHAj zN~QD5P+gO8QVP#MO&n;yA;pEP{?$A7cY{-h{ol5l|G{wF!fNqFCP|!tI^?yEtGY@& zc;L<}^SAUp1ta&I(D>aEvMmSEO+bt=&ovr5^ghGQpsfL;ZsY|tJM>lO=uxlAOk)?N z2^h;i9)+j-!;EZcg(>=M>*`;Men#;sD`>ZAm)^MNs}Y;p-K{aIz;Fk<veK2NYR^)B z#cP|=peWg{<4V`L;N;$WTf-2(F&k+@#hkW<+XU}H<f<Uz;UDhew)Q@yGWQI9));Gw zrc^Jytu;w)k>^!C7}@5s_hNOCq=6<jPcUo0ls@Ah`sh;BM3iaGm}pqsu%YgeDr~_@ z=+Kg4=sAtX2=XSJu4un+Xl9sGF+A1Jz2oZ;c5K|GAa^q&Y@2&vU}&J>>mVz5EiiS_ zt>+Zq9Q5B2nv5rSTFU&oaHRj#1=VEwPksD<SloXea4ynWXCF*XGU?|9(s&9tEqY!p zEo>PKl`{EqShK#iuVahDUZEeJ78`gLFk8ITKLLHm#8B7@b6Ran<x6sMjZXu0ExK<2 z$1$LImAkY%-%t7W6@e!zU3?c$Kz%t%8tXeF!F;4^lZ>@*XBnY5;aKH9JG^j+UM<3) z_U(Tp`=#nABr*~#%96VW9B8i5iFLrC1_#XwBwRfeEe(5Dx#wMVkR*5Y9ss%aL<Ms2 zkMM+Ztqq0dZ#KonOmZs@G)MJTNzPq#lvmWNi;~QyRn;_PHeTiOg2A{;`{V9hG}XDp zs%O?cR_ZiL8QR)K=8CauIf7?f=?ITE!C%^wNfQ}kt3KyMZlHSXxJHNgl6jlQoZ{jq zpCq<u-#_inLg{|{H(kZQ^&8`yUs+<H!7dHgE(gM<B_#s~00#X6g#I+Z57=-h+Yy#S zGvjZF%T8z+$BOZ&U5TiF!5KYVX_M_Rwz7gPJ`R_!Vr;eLbsj9B);?Z}J>r6w`9FN( zR>IoY-m^`qFGPp_;oz3JEP#rn-WyAuSTe{r*RJcHPNn9g6PJ%JL(|4A=__~Ip!hdQ zZ(PBuh|9`768V@g*gt_o=2M<ya)Sl3#D`L4??Uo7P{$)inLuY=`PP!jfyQAoom05w zV>~Z>$f*2G)j^LZZYGt@0mML+Q5OQ@pb*0;4n$}<5`kXAYzPkO{b`2(Jomr9g9`(l z;>FW9!UYq6enU`8_qLKGHjh0LfT$6^-?1K+!QI>3ZBmgJW~+gpu<=lUZF9*IZ`hOg zTnH$So{4lk$f=5p>QSIpkNB9_LT=NB>1lCGMPAjnJD^)CP$eBSGDW-lA~!ydAA#-k zB9Lw=A?;q1C!kp0Myv<-L@wqMA85F%+zr)NH0|n;E3{;hx2!LEs{<c3VqJ03teaEB z*%;{>$xPcpIjQ+6)yBk;LBqaUV7YrhQtGKEGa=UUD@wL=X0yOjd&i?Hj<L4_e;tJu zlP{9Fqy{%r-N*yXW>Z6b&z03TK&&%E><+**zp@TaX#%lMU>y?I0o)8=XF#<of^ezU zpX%0v)BMj_+fzjw@=9tA>V2Qj4Dy<^IM(g3yVNtv-hHg(&XuwvVs6Viz>ng|^lUkn zz77NnbmsbP7?SlFwf$!?#;A`~aXXvR7Lzk{&=9>mN##y!>la&|$IuZU{CRFegx;Y) z@1;O;hW2-wIy+VNtuYYIm!ZW#wV*=~?zeT$D?yZSKWy~#mv;X1=ue?gg5Qs?f2WZK zGR-7B8Z}OlF3z&(S=kXr&I9CnjuNzMO{mL#zazqVv^*W9m~r5Pb?!KxK*hH1!!P*y zrBgQX@l;wK(=5mPr=LsMQHV8PV%hsrcbRqX4AC;7>vrihmh|}RVrg@S*Sc-Im!n4S e^UcmI4;9#_3LF)Z0V@2AH=i#0@6Jh22L2CqbgLQw literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 8402cb9..d429087 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="rWE-oc-Un1"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="rWE-oc-Un1"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -19,7 +19,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -190,7 +190,7 @@ </collectionViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="blD-s8-5JB" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1899" y="1678"/> + <point key="canvasLocation" x="1777" y="1624"/> </scene> <!--Search --> <scene sceneID="eAD-0s-cgb"> @@ -318,19 +318,21 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> - <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> + <rect key="frame" x="15" y="5" width="32" height="20"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <animations/> <fontDescription key="fontDescription" type="system" pointSize="16"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> </label> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> - <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> + <rect key="frame" x="15" y="25" width="41" height="14"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <animations/> <fontDescription key="fontDescription" type="system" pointSize="11"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> @@ -346,18 +348,25 @@ <rect key="frame" x="0.0" y="120" width="600" height="50"/> <subviews> <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Search" textAlignment="natural" clearsOnBeginEditing="YES" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="zob-sY-qha"> - <rect key="frame" x="125" y="10" width="350" height="30"/> + <rect key="frame" x="40" y="10" width="520" height="30"/> <animations/> <constraints> <constraint firstAttribute="width" constant="350" id="FjN-tR-Pz2"/> </constraints> <fontDescription key="fontDescription" type="system" pointSize="14"/> <textInputTraits key="textInputTraits"/> + <variation key="default"> + <mask key="constraints"> + <exclude reference="FjN-tR-Pz2"/> + </mask> + </variation> </textField> </subviews> <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <constraints> + <constraint firstAttribute="trailing" secondItem="zob-sY-qha" secondAttribute="trailing" constant="40" id="2d1-5l-Hn0"/> + <constraint firstItem="zob-sY-qha" firstAttribute="leading" secondItem="4h9-oR-C40" secondAttribute="leading" constant="40" id="Yg5-BR-c5k"/> <constraint firstItem="zob-sY-qha" firstAttribute="centerX" secondItem="4h9-oR-C40" secondAttribute="centerX" id="cbv-OU-esH"/> <constraint firstAttribute="height" constant="50" id="fyg-AW-jv6"/> <constraint firstItem="zob-sY-qha" firstAttribute="centerY" secondItem="4h9-oR-C40" secondAttribute="centerY" id="x76-Iu-Ldy"/> @@ -401,7 +410,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="2643" y="1678"/> + <point key="canvasLocation" x="2515" y="1624"/> </scene> <!--Create Journal Entry View Controller--> <scene sceneID="3xO-3p-x8L"> @@ -416,144 +425,163 @@ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3Hz-RL-Ugz"> - <rect key="frame" x="20" y="20" width="560" height="140"/> + <rect key="frame" x="20" y="20" width="560" height="125"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="s1u-o4-hER"> - <rect key="frame" x="0.0" y="5" width="130" height="130"/> + <rect key="frame" x="0.0" y="0.0" width="120" height="120"/> <animations/> <constraints> - <constraint firstAttribute="width" constant="130" id="eSF-yA-Flh"/> - <constraint firstAttribute="height" constant="130" id="mgE-Dx-7HC"/> + <constraint firstAttribute="width" constant="120" id="eSF-yA-Flh"/> + <constraint firstAttribute="height" constant="120" id="mgE-Dx-7HC"/> </constraints> </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="characterWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9f5-lP-Hj7"> - <rect key="frame" x="145" y="5" width="415" height="30"/> - <animations/> - <fontDescription key="fontDescription" type="boldSystem" pointSize="25"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> - <nil key="highlightedColor"/> - </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HdG-mr-PTo"> - <rect key="frame" x="145" y="111" width="415" height="24"/> + <rect key="frame" x="128" y="103" width="412" height="17"/> <animations/> - <fontDescription key="fontDescription" type="system" pointSize="20"/> + <fontDescription key="fontDescription" type="system" pointSize="14"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> - <rect key="frame" x="145" y="58" width="415" height="24"/> + <rect key="frame" x="128" y="84" width="412" height="19"/> <animations/> - <fontDescription key="fontDescription" type="system" pointSize="20"/> + <fontDescription key="fontDescription" name="HelveticaNeue-Italic" family="Helvetica Neue" pointSize="16"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oCt-vd-4RS"> + <rect key="frame" x="515" y="0.0" width="37" height="30"/> + <animations/> + <state key="normal" title="Done"> + <color key="titleColor" red="0.98580998180000001" green="0.62003214620000002" blue="0.067037612610000005" alpha="1" colorSpace="calibratedRGB"/> + </state> + <connections> + <action selector="doneEditingTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="Yvg-fL-af4"/> + </connections> + </button> </subviews> <animations/> - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <constraints> - <constraint firstItem="s1u-o4-hER" firstAttribute="top" secondItem="3Hz-RL-Ugz" secondAttribute="top" constant="5" id="Ez4-MK-s7B"/> + <constraint firstItem="HdG-mr-PTo" firstAttribute="top" secondItem="f6q-RS-lgS" secondAttribute="bottom" id="2Li-DK-Gsd"/> + <constraint firstAttribute="trailing" secondItem="oCt-vd-4RS" secondAttribute="trailing" constant="8" id="4sW-VU-zvV"/> + <constraint firstAttribute="trailing" secondItem="HdG-mr-PTo" secondAttribute="trailing" constant="20" id="BnI-5v-XDn"/> + <constraint firstAttribute="trailing" secondItem="f6q-RS-lgS" secondAttribute="trailing" constant="20" id="Cqq-zM-wXc"/> + <constraint firstItem="s1u-o4-hER" firstAttribute="top" secondItem="3Hz-RL-Ugz" secondAttribute="top" id="Ez4-MK-s7B"/> <constraint firstAttribute="trailing" secondItem="f6q-RS-lgS" secondAttribute="trailing" id="JmH-ju-U9V"/> <constraint firstAttribute="bottom" secondItem="s1u-o4-hER" secondAttribute="bottom" constant="5" id="Kda-pQ-Ua1"/> + <constraint firstItem="oCt-vd-4RS" firstAttribute="top" secondItem="3Hz-RL-Ugz" secondAttribute="top" id="Oez-gR-vqC"/> <constraint firstItem="f6q-RS-lgS" firstAttribute="centerY" secondItem="s1u-o4-hER" secondAttribute="centerY" id="QTX-hv-7Fq"/> - <constraint firstAttribute="trailing" secondItem="9f5-lP-Hj7" secondAttribute="trailing" id="V9g-rG-CLE"/> - <constraint firstItem="HdG-mr-PTo" firstAttribute="leading" secondItem="s1u-o4-hER" secondAttribute="trailing" constant="15" id="WcO-wz-iHe"/> + <constraint firstItem="HdG-mr-PTo" firstAttribute="leading" secondItem="s1u-o4-hER" secondAttribute="trailing" constant="8" id="WcO-wz-iHe"/> <constraint firstItem="HdG-mr-PTo" firstAttribute="bottom" secondItem="s1u-o4-hER" secondAttribute="bottom" id="XKV-KR-feV"/> <constraint firstAttribute="trailing" secondItem="HdG-mr-PTo" secondAttribute="trailing" id="fa5-uD-Jqj"/> - <constraint firstItem="9f5-lP-Hj7" firstAttribute="leading" secondItem="s1u-o4-hER" secondAttribute="trailing" constant="15" id="h5l-7d-Iqa"/> - <constraint firstItem="9f5-lP-Hj7" firstAttribute="top" secondItem="s1u-o4-hER" secondAttribute="top" id="hfs-Kl-iTG"/> <constraint firstItem="s1u-o4-hER" firstAttribute="centerY" secondItem="3Hz-RL-Ugz" secondAttribute="centerY" id="juK-x2-WdU"/> - <constraint firstItem="f6q-RS-lgS" firstAttribute="leading" secondItem="s1u-o4-hER" secondAttribute="trailing" constant="15" id="rIU-1n-M35"/> + <constraint firstItem="f6q-RS-lgS" firstAttribute="leading" secondItem="s1u-o4-hER" secondAttribute="trailing" constant="8" id="rIU-1n-M35"/> <constraint firstItem="s1u-o4-hER" firstAttribute="leading" secondItem="3Hz-RL-Ugz" secondAttribute="leading" id="zY8-tn-NjM"/> </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="juK-x2-WdU"/> + <exclude reference="JmH-ju-U9V"/> + <exclude reference="QTX-hv-7Fq"/> + <exclude reference="fa5-uD-Jqj"/> + </mask> + </variation> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bcK-tE-Fho"> - <rect key="frame" x="20" y="160" width="560" height="250"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BCK-ON-IjJ"> + <rect key="frame" x="80" y="153" width="440" height="50"/> <subviews> - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" text="write your jounal entry here" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="vhl-Bh-MN5"> - <rect key="frame" x="5" y="5" width="550" height="240"/> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ofM-BY-Yzj"> + <rect key="frame" x="88" y="0.0" width="88" height="50"/> <animations/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> - <textInputTraits key="textInputTraits" autocapitalizationType="sentences" autocorrectionType="yes"/> - </textView> - </subviews> - <animations/> - <color key="backgroundColor" red="1" green="0.77670592760000001" blue="0.97496195610000003" alpha="1" colorSpace="calibratedRGB"/> - <constraints> - <constraint firstAttribute="bottom" secondItem="vhl-Bh-MN5" secondAttribute="bottom" constant="5" id="7R8-kT-HLm"/> - <constraint firstAttribute="trailing" secondItem="vhl-Bh-MN5" secondAttribute="trailing" constant="5" id="E6p-vH-BHx"/> - <constraint firstItem="vhl-Bh-MN5" firstAttribute="leading" secondItem="bcK-tE-Fho" secondAttribute="leading" constant="5" id="M21-AR-3nX"/> - <constraint firstItem="vhl-Bh-MN5" firstAttribute="top" secondItem="bcK-tE-Fho" secondAttribute="top" constant="5" id="My1-O9-95O"/> - </constraints> - </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RJM-Va-Q0I"> - <rect key="frame" x="20" y="485" width="560" height="115"/> - <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7yP-CD-6Bn"> - <rect key="frame" x="185" y="42" width="191" height="30"/> + <state key="normal" image="star"> + <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + </state> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZP9-Qg-4Le"> + <rect key="frame" x="176" y="0.0" width="88" height="50"/> + <animations/> + <state key="normal" title="Button" image="star"/> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Hue-C5-PHW"> + <rect key="frame" x="264" y="0.0" width="88" height="50"/> + <animations/> + <state key="normal" title="Button" image="star"/> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0G1-Em-Jng"> + <rect key="frame" x="352" y="0.0" width="88" height="50"/> <animations/> - <state key="normal" title="Save and Add to Completed"/> + <state key="normal" title="Button" image="star"/> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="KzN-ht-Jya"> + <rect key="frame" x="0.0" y="0.0" width="88" height="50"/> + <animations/> + <state key="normal" image="star"/> <connections> - <action selector="saveAndAddToCompletedButtonTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="TOx-Rp-ciC"/> - <segue destination="rWE-oc-Un1" kind="show" id="AZL-rD-3yX"/> + <action selector="starButtonTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="laE-nr-bJU"/> </connections> </button> </subviews> <animations/> - <color key="backgroundColor" red="0.99607843139999996" green="0.79215686269999996" blue="0.086274509799999996" alpha="1" colorSpace="calibratedRGB"/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <constraints> - <constraint firstItem="7yP-CD-6Bn" firstAttribute="centerY" secondItem="RJM-Va-Q0I" secondAttribute="centerY" id="a3v-fV-Vsm"/> - <constraint firstItem="7yP-CD-6Bn" firstAttribute="centerX" secondItem="RJM-Va-Q0I" secondAttribute="centerX" id="bWW-ls-ANv"/> - <constraint firstAttribute="height" constant="100" id="u3j-la-nuU"/> + <constraint firstItem="Hue-C5-PHW" firstAttribute="width" secondItem="0G1-Em-Jng" secondAttribute="width" id="2FZ-ZI-T0C"/> + <constraint firstItem="ZP9-Qg-4Le" firstAttribute="top" secondItem="BCK-ON-IjJ" secondAttribute="top" id="2p6-Tb-6HP"/> + <constraint firstAttribute="bottom" secondItem="0G1-Em-Jng" secondAttribute="bottom" id="3x6-9s-I5h"/> + <constraint firstAttribute="bottom" secondItem="ZP9-Qg-4Le" secondAttribute="bottom" id="4vm-Tw-U3R"/> + <constraint firstItem="ZP9-Qg-4Le" firstAttribute="leading" secondItem="ofM-BY-Yzj" secondAttribute="trailing" id="6aU-ox-HwV"/> + <constraint firstItem="Hue-C5-PHW" firstAttribute="top" secondItem="BCK-ON-IjJ" secondAttribute="top" id="7A4-tx-MqB"/> + <constraint firstItem="0G1-Em-Jng" firstAttribute="top" secondItem="BCK-ON-IjJ" secondAttribute="top" id="9Cb-JU-lAQ"/> + <constraint firstItem="Hue-C5-PHW" firstAttribute="leading" secondItem="ZP9-Qg-4Le" secondAttribute="trailing" id="CSy-0o-bR0"/> + <constraint firstItem="KzN-ht-Jya" firstAttribute="width" secondItem="ofM-BY-Yzj" secondAttribute="width" id="E1G-ub-wPn"/> + <constraint firstAttribute="bottom" secondItem="KzN-ht-Jya" secondAttribute="bottom" id="EpA-1l-8jY"/> + <constraint firstItem="ofM-BY-Yzj" firstAttribute="top" secondItem="BCK-ON-IjJ" secondAttribute="top" id="FqL-or-J5D"/> + <constraint firstItem="ofM-BY-Yzj" firstAttribute="width" secondItem="ZP9-Qg-4Le" secondAttribute="width" id="MDP-VR-C4f"/> + <constraint firstItem="ZP9-Qg-4Le" firstAttribute="width" secondItem="Hue-C5-PHW" secondAttribute="width" id="OTB-62-hNK"/> + <constraint firstAttribute="bottom" secondItem="Hue-C5-PHW" secondAttribute="bottom" id="OZH-mP-cs8"/> + <constraint firstAttribute="height" constant="50" id="R7d-D5-Gdp"/> + <constraint firstAttribute="bottom" secondItem="ofM-BY-Yzj" secondAttribute="bottom" id="Umh-F3-XTd"/> + <constraint firstAttribute="trailing" secondItem="0G1-Em-Jng" secondAttribute="trailing" id="V23-rs-yf7"/> + <constraint firstItem="ofM-BY-Yzj" firstAttribute="leading" secondItem="KzN-ht-Jya" secondAttribute="trailing" id="bsx-Dg-FWg"/> + <constraint firstItem="ofM-BY-Yzj" firstAttribute="leading" secondItem="KzN-ht-Jya" secondAttribute="trailing" id="iK1-9j-rfy"/> + <constraint firstItem="0G1-Em-Jng" firstAttribute="leading" secondItem="Hue-C5-PHW" secondAttribute="trailing" id="jC4-5Z-xk2"/> + <constraint firstItem="KzN-ht-Jya" firstAttribute="top" secondItem="BCK-ON-IjJ" secondAttribute="top" id="kk9-wn-v1r"/> + <constraint firstItem="KzN-ht-Jya" firstAttribute="leading" secondItem="BCK-ON-IjJ" secondAttribute="leading" id="qZL-NM-hV9"/> </constraints> <variation key="default"> <mask key="constraints"> - <exclude reference="u3j-la-nuU"/> + <exclude reference="bsx-Dg-FWg"/> </mask> </variation> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sqd-7P-Gsl"> - <rect key="frame" x="20" y="410" width="560" height="75"/> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="gMh-cq-aTG"> + <rect key="frame" x="20" y="219" width="560" height="305"/> + <animations/> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> + </textView> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ccY-ot-FYH"> + <rect key="frame" x="0.0" y="540" width="600" height="60"/> <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="T1m-hx-A3U"> - <rect key="frame" x="262" y="23" width="36" height="30"/> - <animations/> - <state key="normal" title="three"/> - </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Qtk-Je-SxB"> - <rect key="frame" x="348" y="23" width="30" height="30"/> - <animations/> - <state key="normal" title="four"/> - </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uHJ-PQ-48N"> - <rect key="frame" x="428" y="23" width="30" height="30"/> - <animations/> - <state key="normal" title="five"/> - </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JGM-yq-jaY"> - <rect key="frame" x="102" y="23" width="30" height="30"/> - <animations/> - <state key="normal" title="one"/> - </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="090-cp-Tsv"> - <rect key="frame" x="182" y="23" width="30" height="30"/> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bIK-7d-Vfl"> + <rect key="frame" x="0.0" y="0.0" width="600" height="60"/> <animations/> - <state key="normal" title="two"/> + <state key="normal" title="Log To Journal"> + <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + </state> + <connections> + <action selector="logToJournalButtonTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="bF7-vG-sm2"/> + </connections> </button> </subviews> <animations/> - <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> + <color key="backgroundColor" red="0.98580998180000001" green="0.62003214620000002" blue="0.067037612610000005" alpha="1" colorSpace="calibratedRGB"/> <constraints> - <constraint firstItem="T1m-hx-A3U" firstAttribute="centerX" secondItem="sqd-7P-Gsl" secondAttribute="centerX" id="9mJ-sz-Mke"/> - <constraint firstItem="JGM-yq-jaY" firstAttribute="centerY" secondItem="sqd-7P-Gsl" secondAttribute="centerY" id="EEa-F2-EkA"/> - <constraint firstItem="Qtk-Je-SxB" firstAttribute="centerY" secondItem="sqd-7P-Gsl" secondAttribute="centerY" id="Gf1-fk-x2Y"/> - <constraint firstItem="T1m-hx-A3U" firstAttribute="leading" secondItem="090-cp-Tsv" secondAttribute="trailing" constant="50" id="P3h-5S-o1y"/> - <constraint firstItem="uHJ-PQ-48N" firstAttribute="leading" secondItem="Qtk-Je-SxB" secondAttribute="trailing" constant="50" id="VbB-ak-tGu"/> - <constraint firstItem="Qtk-Je-SxB" firstAttribute="leading" secondItem="T1m-hx-A3U" secondAttribute="trailing" constant="50" id="Y6I-c6-xB6"/> - <constraint firstItem="T1m-hx-A3U" firstAttribute="centerY" secondItem="sqd-7P-Gsl" secondAttribute="centerY" id="bCZ-dI-FCz"/> - <constraint firstItem="090-cp-Tsv" firstAttribute="centerY" secondItem="sqd-7P-Gsl" secondAttribute="centerY" id="cM4-Nu-Odg"/> - <constraint firstAttribute="height" constant="75" id="ggG-rP-Gtk"/> - <constraint firstItem="090-cp-Tsv" firstAttribute="leading" secondItem="JGM-yq-jaY" secondAttribute="trailing" constant="50" id="tHP-qh-v8A"/> - <constraint firstItem="uHJ-PQ-48N" firstAttribute="centerY" secondItem="sqd-7P-Gsl" secondAttribute="centerY" id="weY-sI-fm3"/> + <constraint firstAttribute="height" constant="60" id="3us-vq-HY3"/> + <constraint firstAttribute="bottom" secondItem="bIK-7d-Vfl" secondAttribute="bottom" id="VPU-oO-xHC"/> + <constraint firstItem="bIK-7d-Vfl" firstAttribute="top" secondItem="ccY-ot-FYH" secondAttribute="top" id="XK3-cG-bF7"/> + <constraint firstAttribute="trailing" secondItem="bIK-7d-Vfl" secondAttribute="trailing" id="g1b-LY-Wtk"/> + <constraint firstItem="bIK-7d-Vfl" firstAttribute="leading" secondItem="ccY-ot-FYH" secondAttribute="leading" id="vT3-Hp-fjR"/> </constraints> </view> </subviews> @@ -561,28 +589,40 @@ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <constraints> <constraint firstItem="3Hz-RL-Ugz" firstAttribute="trailing" secondItem="p3u-dw-cX6" secondAttribute="trailingMargin" id="1b0-Cy-sHW"/> - <constraint firstItem="bcK-tE-Fho" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leadingMargin" id="4EP-hk-Ams"/> - <constraint firstItem="bcK-tE-Fho" firstAttribute="trailing" secondItem="p3u-dw-cX6" secondAttribute="trailingMargin" id="4NT-3Y-c71"/> <constraint firstItem="3Hz-RL-Ugz" firstAttribute="top" secondItem="35G-Te-D94" secondAttribute="bottom" id="CcV-Ir-Nos"/> <constraint firstItem="3Hz-RL-Ugz" firstAttribute="top" secondItem="35G-Te-D94" secondAttribute="bottom" id="Dq8-Io-V9X"/> - <constraint firstItem="RJM-Va-Q0I" firstAttribute="top" secondItem="sqd-7P-Gsl" secondAttribute="bottom" id="FfO-A1-elu"/> - <constraint firstItem="sqd-7P-Gsl" firstAttribute="trailing" secondItem="p3u-dw-cX6" secondAttribute="trailingMargin" id="GIx-uD-ry1"/> - <constraint firstItem="sqd-7P-Gsl" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leadingMargin" id="J58-Az-kmW"/> - <constraint firstItem="sqd-7P-Gsl" firstAttribute="top" secondItem="bcK-tE-Fho" secondAttribute="bottom" id="Tto-d2-fbD"/> - <constraint firstItem="bcK-tE-Fho" firstAttribute="top" secondItem="3Hz-RL-Ugz" secondAttribute="bottom" id="V5n-CF-f13"/> + <constraint firstItem="BCK-ON-IjJ" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leading" constant="80" id="PTt-IZ-aNy"/> + <constraint firstItem="tF2-8H-bHx" firstAttribute="top" secondItem="ccY-ot-FYH" secondAttribute="bottom" id="RUt-kn-b0q"/> + <constraint firstItem="gMh-cq-aTG" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leadingMargin" id="UUx-jy-Izz"/> <constraint firstItem="3Hz-RL-Ugz" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leadingMargin" id="Wey-Ew-9Lu"/> - <constraint firstItem="RJM-Va-Q0I" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leadingMargin" id="bxG-q4-WEc"/> - <constraint firstItem="bcK-tE-Fho" firstAttribute="top" secondItem="3Hz-RL-Ugz" secondAttribute="bottom" id="jJl-L5-BxV"/> - <constraint firstItem="sqd-7P-Gsl" firstAttribute="top" secondItem="p3u-dw-cX6" secondAttribute="top" constant="410" id="maF-Wy-Dy6"/> - <constraint firstItem="bcK-tE-Fho" firstAttribute="top" secondItem="3Hz-RL-Ugz" secondAttribute="bottom" id="mzK-8W-Mwz"/> - <constraint firstItem="tF2-8H-bHx" firstAttribute="top" secondItem="RJM-Va-Q0I" secondAttribute="bottom" id="oX2-uC-Glh"/> - <constraint firstItem="RJM-Va-Q0I" firstAttribute="trailing" secondItem="p3u-dw-cX6" secondAttribute="trailingMargin" id="tOP-Xo-lDc"/> + <constraint firstItem="ccY-ot-FYH" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leading" id="XZc-9R-T26"/> + <constraint firstItem="gMh-cq-aTG" firstAttribute="top" secondItem="BCK-ON-IjJ" secondAttribute="bottom" constant="16" id="Yag-O4-Uh7"/> + <constraint firstAttribute="trailing" secondItem="ccY-ot-FYH" secondAttribute="trailing" id="fbk-ya-YeF"/> + <constraint firstItem="ccY-ot-FYH" firstAttribute="top" secondItem="gMh-cq-aTG" secondAttribute="bottom" id="k9n-yQ-XiX"/> + <constraint firstAttribute="trailing" secondItem="BCK-ON-IjJ" secondAttribute="trailing" constant="80" id="pcb-Is-KNU"/> + <constraint firstItem="BCK-ON-IjJ" firstAttribute="top" secondItem="3Hz-RL-Ugz" secondAttribute="bottom" constant="8" id="t6s-ES-EUU"/> + <constraint firstItem="ccY-ot-FYH" firstAttribute="top" secondItem="gMh-cq-aTG" secondAttribute="bottom" constant="16" id="v7c-f8-4aB"/> + <constraint firstItem="gMh-cq-aTG" firstAttribute="trailing" secondItem="p3u-dw-cX6" secondAttribute="trailingMargin" id="ywD-3B-vc1"/> </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="CcV-Ir-Nos"/> + <exclude reference="k9n-yQ-XiX"/> + </mask> + </variation> </view> + <connections> + <outlet property="artistNameLabel" destination="HdG-mr-PTo" id="xoi-ku-dfy"/> + <outlet property="artworkImageView" destination="s1u-o4-hER" id="j5D-wO-ZJP"/> + <outlet property="doneEditingButton" destination="oCt-vd-4RS" id="cQZ-Tr-B0E"/> + <outlet property="movieOrAlbumNameLabel" destination="f6q-RS-lgS" id="ify-cv-Z2Y"/> + <outlet property="starButtonOne" destination="KzN-ht-Jya" id="FZL-kO-3hy"/> + <outlet property="textView" destination="gMh-cq-aTG" id="e7z-VE-aIf"/> + </connections> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="TK9-37-5bs" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="925" y="2568"/> + <point key="canvasLocation" x="253" y="3204"/> </scene> <!--Wish List--> <scene sceneID="WUv-ax-PAc"> @@ -598,7 +638,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> - <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> + <rect key="frame" x="0.0" y="0.0" width="567" height="63"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="346-CT-Uvl"> @@ -640,7 +680,7 @@ </tableViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="vQP-Qq-o7U" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="9" y="1588"/> + <point key="canvasLocation" x="253" y="2388"/> </scene> <!--View Controller--> <scene sceneID="Sp1-uX-mf4"> @@ -865,7 +905,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="gKL-Ix-enk" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1841" y="2536"/> + <point key="canvasLocation" x="1777" y="2512"/> </scene> <!--Navigation Controller--> <scene sceneID="IPQ-wM-Z7c"> @@ -875,6 +915,7 @@ <navigationBar key="navigationBar" contentMode="scaleToFill" id="B2x-Uu-nc9"> <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> <autoresizingMask key="autoresizingMask"/> + <animations/> </navigationBar> <nil name="viewControllers"/> <connections> @@ -883,9 +924,12 @@ </navigationController> <placeholder placeholderIdentifier="IBFirstResponder" id="bGC-Ig-YI6" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="931" y="1664"/> + <point key="canvasLocation" x="1003" y="1624"/> </scene> </scenes> + <resources> + <image name="star" width="300" height="273"/> + </resources> <inferredMetricsTieBreakers> <segue reference="898-jd-zRS"/> <segue reference="a4i-zx-cvK"/> diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index 7fba348..da8bca1 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -10,37 +10,87 @@ @interface CreateJournalEntryViewController () <UITextViewDelegate> +@property (strong, nonatomic) IBOutlet UILabel *movieOrAlbumNameLabel; +@property (strong, nonatomic) IBOutlet UILabel *artistNameLabel; +@property (strong, nonatomic) IBOutlet UIImageView *artworkImageView; +@property (strong, nonatomic) IBOutlet UITextView *textView; +@property (strong, nonatomic) IBOutlet UIButton *doneEditingButton; + +@property (strong, nonatomic) IBOutlet UIButton *starButtonOne; @end @implementation CreateJournalEntryViewController - (void)viewDidLoad { [super viewDidLoad]; + + self.doneEditingButton.hidden = YES; + + self.textView.delegate = self; + self.textView.text = @"Write your thoughts here..."; + self.textView.layer.borderWidth = 1.0f; + self.textView.layer.cornerRadius = 5.0f; + self.textView.layer.borderColor = [UIColor grayColor].CGColor; NSLog(@"Data has been passed: %@",self.postSearchResult); + + self.movieOrAlbumNameLabel.text = self.postSearchResult.albumOrMovieName; + self.artistNameLabel.text = self.postSearchResult.artistName; + + NSURL *artworkURL = [NSURL URLWithString:self.postSearchResult.artworkURL]; + NSData *artworkData = [NSData dataWithContentsOfURL:artworkURL]; + UIImage *artworkImage = [UIImage imageWithData:artworkData]; + + self.artworkImageView.image = artworkImage; + } -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. +//- (void)textViewDidEndEditing:(UITextView *)textView{ +// [self.textView resignFirstResponder]; +//} +- (void) textViewDidBeginEditing:(UITextView *)textView{ + self.textView.text = @""; + + self.doneEditingButton.hidden = NO; } -/* -#pragma mark - Navigation +- (IBAction)doneEditingTapped:(id)sender { + + self.doneEditingButton.hidden = YES; + +// if (self.textView.text == nil){ +// self.textView.text = @"Write your thoughts here..."; +// } +// +// [self.textView reloadInputViews]; + + [[[UIApplication sharedApplication] keyWindow] endEditing:YES]; -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. } -*/ +- (IBAction)starButtonTapped:(id)sender { + + self.starButtonOne.tintColor = [UIColor yellowColor]; + +} + + + #pragma mark - save items -- (IBAction)saveAndAddToCompletedButtonTapped:(id)sender { - + +- (IBAction)logToJournalButtonTapped:(id)sender { } +/* + #pragma mark - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. + } + */ @end diff --git a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h index fe39e0b..6afc7c2 100644 --- a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h +++ b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h @@ -15,5 +15,4 @@ @property (nonatomic) NSString *artworkURL; - @end From 8b38a832fe1fb315d1f9e3edf04aa9188a07466e Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Mon, 12 Oct 2015 12:35:59 -0400 Subject: [PATCH 25/86] added open source tab bar --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes Unit-2-Journal/Podfile | 3 + Unit-2-Journal/Podfile.lock | 5 +- .../YALSpringAnimation/YALSpringAnimation.h | 20 + .../YALSpringAnimation/YALSpringAnimation.m | 114 + .../CAAnimation+YALTabBarViewAnimations.h | 16 + .../CAAnimation+YALTabBarViewAnimations.m | 144 + ...n+TransactionWithAnimationsAndCompletion.h | 9 + ...n+TransactionWithAnimationsAndCompletion.m | 16 + .../Constants/YALAnimatingTabBarConstants.h | 60 + .../Constants/YALAnimatingTabBarConstants.m | 122 + .../YALFoldingTabBarController.h | 18 + .../YALFoldingTabBarController.m | 177 + .../Model/TabBarItem/YALTabBarItem.h | 16 + .../Model/TabBarItem/YALTabBarItem.m | 25 + .../TabBarInteracting/YALTabBarInteracting.h | 20 + .../View/FoldingTabBar/YALFoldingTabBar.h | 53 + .../View/FoldingTabBar/YALFoldingTabBar.m | 660 ++ Unit-2-Journal/Pods/FoldingTabBar/LICENSE | 22 + Unit-2-Journal/Pods/FoldingTabBar/README.md | 160 + .../CAAnimation+YALTabBarViewAnimations.h | 1 + ...n+TransactionWithAnimationsAndCompletion.h | 1 + .../YALAnimatingTabBarConstants.h | 1 + .../Private/FoldingTabBar/YALFoldingTabBar.h | 1 + .../YALFoldingTabBarController.h | 1 + .../FoldingTabBar/YALSpringAnimation.h | 1 + .../FoldingTabBar/YALTabBarInteracting.h | 1 + .../Private/FoldingTabBar/YALTabBarItem.h | 1 + .../CAAnimation+YALTabBarViewAnimations.h | 1 + ...n+TransactionWithAnimationsAndCompletion.h | 1 + .../YALAnimatingTabBarConstants.h | 1 + .../Public/FoldingTabBar/YALFoldingTabBar.h | 1 + .../YALFoldingTabBarController.h | 1 + .../Public/FoldingTabBar/YALSpringAnimation.h | 1 + .../FoldingTabBar/YALTabBarInteracting.h | 1 + .../Public/FoldingTabBar/YALTabBarItem.h | 1 + Unit-2-Journal/Pods/Manifest.lock | 5 +- .../Pods/Pods.xcodeproj/project.pbxproj | 8177 +++++++++-------- .../AFNetworking-Private.xcconfig | 6 - .../AFNetworking/AFNetworking.xcconfig | 6 +- .../Bolts/Bolts-Private.xcconfig | 5 - .../Target Support Files/Bolts/Bolts.xcconfig | 4 + .../FBSDKCoreKit-Private.xcconfig | 6 - .../FBSDKCoreKit/FBSDKCoreKit.xcconfig | 6 +- .../FBSDKLoginKit-Private.xcconfig | 6 - .../FBSDKLoginKit/FBSDKLoginKit.xcconfig | 6 +- .../FBSDKShareKit-Private.xcconfig | 6 - .../FBSDKShareKit/FBSDKShareKit.xcconfig | 6 +- .../FoldingTabBar/FoldingTabBar-dummy.m | 5 + .../FoldingTabBar/FoldingTabBar-prefix.pch | 4 + .../FoldingTabBar/FoldingTabBar.xcconfig | 5 + ...FormatterValueTransformer-Private.xcconfig | 5 - ...8601DateFormatterValueTransformer.xcconfig | 4 + .../Parse/Parse-Private.xcconfig | 6 - .../Target Support Files/Parse/Parse.xcconfig | 6 +- .../Pods/Pods-acknowledgements.markdown | 26 + .../Pods/Pods-acknowledgements.plist | 30 + .../Pods/Pods-frameworks.sh | 84 + .../Pods/Pods-resources.sh | 2 +- .../Pods/Pods.debug.xcconfig | 6 +- .../Pods/Pods.release.xcconfig | 6 +- .../RKValueTransformers-Private.xcconfig | 5 - .../RKValueTransformers.xcconfig | 4 + .../RestKit/RestKit-Private.xcconfig | 6 - .../RestKit/RestKit.xcconfig | 6 +- .../SOCKit/SOCKit-Private.xcconfig | 5 - .../SOCKit/SOCKit.xcconfig | 4 + .../TransitionKit-Private.xcconfig | 5 - .../TransitionKit/TransitionKit.xcconfig | 4 + .../Unit-2-Journal.xcodeproj/project.pbxproj | 22 + Unit-2-Journal/Unit-2-Journal/.DS_Store | Bin 10244 -> 10244 bytes Unit-2-Journal/Unit-2-Journal/AppDelegate.m | 51 +- .../AppIcon-1.appiconset/Contents.json | 38 + .../add.imageset/Contents.json | 21 + .../Assets.xcassets/add.imageset/add.png | Bin 0 -> 468 bytes .../idea.imageset/Contents.json | 21 + .../Assets.xcassets/idea.imageset/idea.png | Bin 0 -> 522 bytes .../plus.imageset/Contents.json | 21 + .../Assets.xcassets/plus.imageset/plus.png | Bin 0 -> 551 bytes .../settings.imageset/Contents.json | 21 + .../settings.imageset/settings.png | Bin 0 -> 680 bytes .../Assets.xcassets/star.imageset/star.png | Bin 11206 -> 550 bytes .../Base.lproj/LaunchScreen.storyboard | 2 +- .../Unit-2-Journal/Base.lproj/Main.storyboard | 151 +- .../JournalMainCollectionViewController.m | 54 +- .../Unit-2-Journal/SearchAPIViewController.m | 38 +- .../Unit-2-Journal/TabBarViewController.h | 22 + .../Unit-2-Journal/TabBarViewController.m | 181 + .../WishListTableViewController.m | 38 +- 89 files changed, 6640 insertions(+), 4184 deletions(-) create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.h create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.m create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.h create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.m create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.h create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.m create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Constants/YALAnimatingTabBarConstants.h create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Constants/YALAnimatingTabBarConstants.m create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.h create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.m create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Model/TabBarItem/YALTabBarItem.h create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Model/TabBarItem/YALTabBarItem.m create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Protocol/TabBarInteracting/YALTabBarInteracting.h create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.h create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.m create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/LICENSE create mode 100644 Unit-2-Journal/Pods/FoldingTabBar/README.md create mode 120000 Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/CAAnimation+YALTabBarViewAnimations.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/CATransaction+TransactionWithAnimationsAndCompletion.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALAnimatingTabBarConstants.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALFoldingTabBar.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALFoldingTabBarController.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALSpringAnimation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALTabBarInteracting.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALTabBarItem.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/CAAnimation+YALTabBarViewAnimations.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/CATransaction+TransactionWithAnimationsAndCompletion.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALAnimatingTabBarConstants.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALFoldingTabBar.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALFoldingTabBarController.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALSpringAnimation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALTabBarInteracting.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALTabBarItem.h delete mode 100644 Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-Private.xcconfig delete mode 100644 Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig delete mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig delete mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig delete mode 100644 Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig create mode 100644 Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar-dummy.m create mode 100644 Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar-prefix.pch create mode 100644 Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar.xcconfig delete mode 100644 Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-Private.xcconfig delete mode 100644 Unit-2-Journal/Pods/Target Support Files/Parse/Parse-Private.xcconfig create mode 100755 Unit-2-Journal/Pods/Target Support Files/Pods/Pods-frameworks.sh delete mode 100644 Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-Private.xcconfig delete mode 100644 Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-Private.xcconfig delete mode 100644 Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-Private.xcconfig delete mode 100644 Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-Private.xcconfig create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/AppIcon-1.appiconset/Contents.json create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/add.imageset/Contents.json create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/add.imageset/add.png create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/idea.imageset/Contents.json create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/idea.imageset/idea.png create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/plus.imageset/Contents.json create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/plus.imageset/plus.png create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/settings.imageset/Contents.json create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/settings.imageset/settings.png create mode 100644 Unit-2-Journal/Unit-2-Journal/TabBarViewController.h create mode 100644 Unit-2-Journal/Unit-2-Journal/TabBarViewController.m diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 78e44033e68a1b792e94061d12e67ecc78598916..f05543bb303d5bacae4cf19242638bfba946fd72 100644 GIT binary patch delta 115 zcmZoMXffC@k(Fty<K+J=Cj7biE-ophCCLm7mmFIo87BW@F`dlK#?1of__OgbewZA` yHk&CZZgM=E1s{?Qd;jB;9ob!(LG(s8EB=BE!{Frn+yVwLD41Aix|yBhFFydfp(Pps delta 115 zcmZoMXffC@k(FuEvC02gO!#y2U0hO1OOhEFE;*DwW|;hs#dI<^8#jx+StEqw&&J1i zU~(MWY^K>IljGSe_>gqieR((8k=>OUL~mrX;xEWB3{K9^EnonH0}~5PH?wp6<p%&k Ct|#FD diff --git a/Unit-2-Journal/Podfile b/Unit-2-Journal/Podfile index 587cd9d..36e9ba2 100644 --- a/Unit-2-Journal/Podfile +++ b/Unit-2-Journal/Podfile @@ -3,3 +3,6 @@ pod 'FBSDKShareKit', '~> 4.7' pod 'FBSDKLoginKit', '~> 4.7' pod 'Parse' pod 'RestKit/Testing', '~> 0.24.0' +pod ‘FoldingTabBar’, '~> 1.0.1’ + + diff --git a/Unit-2-Journal/Podfile.lock b/Unit-2-Journal/Podfile.lock index 4f021dd..ebf21a8 100644 --- a/Unit-2-Journal/Podfile.lock +++ b/Unit-2-Journal/Podfile.lock @@ -19,6 +19,7 @@ PODS: - FBSDKCoreKit - FBSDKShareKit (4.7.0): - FBSDKCoreKit + - FoldingTabBar (1.0.1) - ISO8601DateFormatterValueTransformer (0.6.1): - RKValueTransformers (~> 1.1.0) - Parse (1.9.0): @@ -44,6 +45,7 @@ DEPENDENCIES: - FBSDKCoreKit (~> 4.7) - FBSDKLoginKit (~> 4.7) - FBSDKShareKit (~> 4.7) + - FoldingTabBar (~> 1.0.1) - Parse - RestKit/Testing (~> 0.24.0) @@ -53,6 +55,7 @@ SPEC CHECKSUMS: FBSDKCoreKit: eb580bfc2040ad44f4c0b4f4d0befb1d35bce59c FBSDKLoginKit: 01bce8dd3f3a26a023b0ba4ffdde7ef5062889fe FBSDKShareKit: 1f927bb05e4d36a99d5d5bf2f4b1ff294ce3e15c + FoldingTabBar: 3e04c49dbe2b02c529561a4182bf017b928d04d2 ISO8601DateFormatterValueTransformer: 52da467d6ec899d6aedda8e48280ac92e8ee97e6 Parse: 712efbc476d4f47b0f96b70db7e53101575753aa RestKit: 1987b5efef289c6b27bd980714d6ca48d3871b78 @@ -60,4 +63,4 @@ SPEC CHECKSUMS: SOCKit: c7376ac262bea9115b8f749358f762522a47d392 TransitionKit: 3a14b6acc7cf2d1dd3e454e24dbad1cfab9a1ef1 -COCOAPODS: 0.38.2 +COCOAPODS: 0.39.0 diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.h b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.h new file mode 100644 index 0000000..93f0e62 --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.h @@ -0,0 +1,20 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import <QuartzCore/QuartzCore.h> + +@interface YALSpringAnimation : CAKeyframeAnimation + ++ (instancetype)animationWithKeyPath:(NSString *)keyPath + duration:(CFTimeInterval)duration + damping:(double)damping + velocity:(double)velocity + fromValue:(double)fromValue + toValue:(double)toValue; + ++ (instancetype)animationForRoundedRectPathWithduration:(CFTimeInterval)duration + damping:(double)damping + velocity:(double)velocity + fromValue:(CGRect)fromValue + toValue:(CGRect)toValue; + +@end diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.m b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.m new file mode 100644 index 0000000..0030796 --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.m @@ -0,0 +1,114 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import "YALSpringAnimation.h" +#import <UIKit/UIKit.h> + +static const NSUInteger kNumberOfPoints = 500; +static const double kDampingMutiplier = 10; +static const double kVelocityMutiplier = 10; + +double yal_normalizeAnimationValue(double value, double damping, double velocity); + +@implementation YALSpringAnimation + ++ (instancetype)animationWithKeyPath:(NSString *)keyPath + duration:(CFTimeInterval)duration + damping:(double)damping + velocity:(double)velocity + fromValue:(double)fromValue + toValue:(double)toValue +{ + YALSpringAnimation *animation = [self.class animationWithKeyPath:keyPath]; + + animation.removedOnCompletion = NO; + animation.fillMode = kCAFillModeForwards; + animation.duration = duration; + animation.values = [self animationValuesFromValue:fromValue + toValue:toValue + withDamping:damping + andVelocity:velocity]; + return animation; +} + ++ (instancetype)animationForRoundedRectPathWithduration:(CFTimeInterval)duration + damping:(double)damping + velocity:(double)velocity + fromValue:(CGRect)fromValue + toValue:(CGRect)toValue +{ + YALSpringAnimation *animation = [self.class animationWithKeyPath:@"path"]; + + animation.removedOnCompletion = NO; + animation.fillMode = kCAFillModeForwards; + animation.duration = duration; + animation.values = [self animationValuesForPathFromValue:fromValue + toValue:toValue + withDamping:damping + andVelocity:velocity]; + return animation; +} + ++ (NSArray *)animationValuesForPathFromValue:(CGRect)fromValue + toValue:(CGRect)toValue + withDamping:(double)damping + andVelocity:(double)velocity +{ + NSArray *xValues = [self animationValuesFromValue:fromValue.origin.x + toValue:toValue.origin.x + withDamping:damping + andVelocity:velocity]; + NSArray *widthValues = [self animationValuesFromValue:fromValue.size.width + toValue:toValue.size.width + withDamping:damping + andVelocity:velocity]; + NSMutableArray *pathValues = [NSMutableArray new]; + CGFloat cornerRadius = fromValue.size.height / 2.f; + CGRect rect = fromValue; + + for (NSInteger i = 0; i < xValues.count; ++i) { + CGFloat x = [(NSNumber *)xValues[i] floatValue]; + CGFloat width = [(NSNumber *)widthValues[i] floatValue]; + + rect.origin.x = x; + rect.size.width = width; + + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:cornerRadius]; + [pathValues addObject:(id)path.CGPath]; + } + + return [NSArray arrayWithArray:pathValues]; +} + +/* + * code below borrowed SpringAnimation.swift from:https://github.com/evgenyneu/SpringAnimationCALayer + */ + ++ (NSArray *)animationValuesFromValue:(double)fromValue + toValue:(double)toValue + withDamping:(double)damping + andVelocity:(double)velocity +{ + NSMutableArray *values = [NSMutableArray new]; + CGFloat distanceBetweenValues = toValue - fromValue; + velocity *= kVelocityMutiplier; + damping *= kDampingMutiplier; + + for (double i = 0; i < kNumberOfPoints; ++i) { + double x = i / kNumberOfPoints; + double normalizedValue = yal_normalizeAnimationValue(x, damping, velocity); + double value = toValue - distanceBetweenValues * normalizedValue; + [values addObject:@(value)]; + } + + // with different arguments alghorithm above produces values where + // last values not equal to toValue therefore line below is required(not a perfect fix for issue but will do for now) + [values addObject:@(toValue)]; + + return [NSArray arrayWithArray:values]; +} + +@end + +double yal_normalizeAnimationValue(double value, double damping, double velocity) { + return pow(M_E, -damping * value) * cos(velocity * value); +} diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.h b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.h new file mode 100644 index 0000000..b68e135 --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.h @@ -0,0 +1,16 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import <QuartzCore/QuartzCore.h> + +@interface CAAnimation (YALTabBarViewAnimations) + ++ (CAAnimation *)animationForAdditionalButton; ++ (CAAnimation *)animationForExtraLeftBarItem; ++ (CAAnimation *)animationForExtraRightBarItem; ++ (CAAnimation *)animationForTabBarExpandFromRect:(CGRect)fromRect toRect:(CGRect)toRect; ++ (CAAnimation *)animationForTabBarCollapseFromRect:(CGRect)fromRect toRect:(CGRect)toRect; ++ (CAAnimation *)animationForCenterButtonExpand; ++ (CAAnimation *)animationForCenterButtonCollapse; ++ (CAAnimation *)showSelectedDotAnimation; + +@end diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.m b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.m new file mode 100644 index 0000000..a427913 --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.m @@ -0,0 +1,144 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import "CAAnimation+YALTabBarViewAnimations.h" +#import "YALSpringAnimation.h" +#import "YALAnimatingTabBarConstants.h" + +@implementation CAAnimation (YALTabBarViewAnimations) + +#pragma mark - Additional buttons animations + ++ (CAAnimation *)animationForAdditionalButton { + CABasicAnimation *scaleX = [CABasicAnimation animationWithKeyPath:@"transform.scale.x"]; + scaleX.fromValue = @(kYALAdditionalButtonsAnimationsParameters.scaleX.fromValue); + scaleX.toValue = @(kYALAdditionalButtonsAnimationsParameters.scaleX.toValue); + scaleX.duration = kYALAdditionalButtonsAnimationsParameters.scaleX.duration; + + CABasicAnimation *scaleY = [CABasicAnimation animationWithKeyPath:@"transform.scale.y"]; + scaleY.fromValue = @(kYALAdditionalButtonsAnimationsParameters.scaleY.fromValue); + scaleY.toValue = @(kYALAdditionalButtonsAnimationsParameters.scaleY.toValue); + scaleY.duration = kYALAdditionalButtonsAnimationsParameters.scaleY.duration; + + CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; + rotation.fromValue = @(kYALAdditionalButtonsAnimationsParameters.rotation.fromValue); + rotation.toValue = @(kYALAdditionalButtonsAnimationsParameters.rotation.toValue); + rotation.duration = kYALAdditionalButtonsAnimationsParameters.rotation.duration; + rotation.fillMode = kCAFillModeForwards; + rotation.removedOnCompletion = NO; + + YALSpringAnimation *bouncedRotation = [self rotationBouncedAnimationFromValue:kYALAdditionalButtonsAnimationsParameters.bounce.fromValue + toValue:kYALAdditionalButtonsAnimationsParameters.bounce.toValue]; + bouncedRotation.beginTime = kYALAdditionalButtonsAnimationsParameters.bounce.beginTime; + + return [self groupWithAnimations:@[scaleX, scaleY, rotation, bouncedRotation] andDuration:kYALExpandAnimationDuration]; +} + +#pragma mark - Extra buttons animations + ++ (CAAnimation *)animationForExtraLeftBarItem { + return [YALSpringAnimation animationWithKeyPath:@"transform.rotation.z" + duration:kYALExtraLeftTabBarItemAnimationParameters.duration + damping:kYALExtraLeftTabBarItemAnimationParameters.damping + velocity:kYALExtraLeftTabBarItemAnimationParameters.velocity + fromValue:kYALExtraLeftTabBarItemAnimationParameters.fromValue + toValue:kYALExtraLeftTabBarItemAnimationParameters.toValue]; +} + ++ (CAAnimation *)animationForExtraRightBarItem { + return [YALSpringAnimation animationWithKeyPath:@"transform.rotation.z" + duration:kYALExtraRightTabBarItemAnimationParameters.duration + damping:kYALExtraRightTabBarItemAnimationParameters.damping + velocity:kYALExtraRightTabBarItemAnimationParameters.velocity + fromValue:kYALExtraRightTabBarItemAnimationParameters.fromValue + toValue:kYALExtraRightTabBarItemAnimationParameters.toValue]; +} + +#pragma mark - Tab bar view animations + ++ (CAAnimation *)animationForTabBarExpandFromRect:(CGRect)fromRect toRect:(CGRect)toRect { + return [YALSpringAnimation animationForRoundedRectPathWithduration:kYALTabBarExpandAnimationParameters.duration + damping:kYALTabBarExpandAnimationParameters.damping + velocity:kYALTabBarExpandAnimationParameters.velocity + fromValue:fromRect + toValue:toRect]; +} + ++ (CAAnimation *)animationForTabBarCollapseFromRect:(CGRect)fromRect toRect:(CGRect)toRect { + return [YALSpringAnimation animationForRoundedRectPathWithduration:kYALTabBarCollapseAnimationParameters.duration + damping:kYALTabBarCollapseAnimationParameters.damping + velocity:kYALTabBarCollapseAnimationParameters.velocity + fromValue:fromRect + toValue:toRect]; +} + +#pragma mark - Center button animation + ++ (CAAnimation *)animationForCenterButtonExpand { + CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; + rotation.fromValue = @(kYALCenterButtonExpandAnimationParameters.rotation.fromValue); + rotation.toValue = @(kYALCenterButtonExpandAnimationParameters.rotation.toValue); + rotation.duration = kYALCenterButtonExpandAnimationParameters.rotation.duration; + rotation.fillMode = kCAFillModeForwards; + rotation.removedOnCompletion = NO; + + YALSpringAnimation *bouncedRotation = [self rotationBouncedAnimationFromValue:kYALCenterButtonExpandAnimationParameters.bounce.fromValue + toValue:kYALCenterButtonExpandAnimationParameters.bounce.toValue]; + bouncedRotation.beginTime = kYALCenterButtonExpandAnimationParameters.bounce.beginTime; + + return [self groupWithAnimations:@[rotation, bouncedRotation] andDuration:kYALExpandAnimationDuration]; +} + ++ (CAAnimation *)animationForCenterButtonCollapse { + CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; + rotation.fromValue = @(kYALCenterButtonCollapseAnimationParameters.rotation.fromValue); + rotation.toValue = @(kYALCenterButtonCollapseAnimationParameters.rotation.toValue); + rotation.duration = kYALCenterButtonCollapseAnimationParameters.rotation.duration; + rotation.fillMode = kCAFillModeForwards; + rotation.removedOnCompletion = NO; + + YALSpringAnimation *bouncedRotation = [self rotationBouncedAnimationFromValue:kYALCenterButtonCollapseAnimationParameters.bounce.fromValue + toValue:kYALCenterButtonCollapseAnimationParameters.bounce.toValue]; + bouncedRotation.beginTime = kYALCenterButtonCollapseAnimationParameters.bounce.beginTime; + + return [self groupWithAnimations:@[rotation, bouncedRotation] andDuration:kYALExpandAnimationDuration]; +} + ++ (CAAnimation *)showSelectedDotAnimation { + CABasicAnimation *scaleX = [CABasicAnimation animationWithKeyPath:@"transform.scale.x"]; + scaleX.fromValue = @(kYALSelectedDotAnimationsParameters.scaleX.fromValue); + scaleX.toValue = @(kYALSelectedDotAnimationsParameters.scaleX.toValue); + scaleX.duration = kYALSelectedDotAnimationsParameters.scaleX.duration; + + CABasicAnimation *scaleY = [CABasicAnimation animationWithKeyPath:@"transform.scale.y"]; + scaleY.fromValue = @(kYALSelectedDotAnimationsParameters.scaleY.fromValue); + scaleY.toValue = @(kYALSelectedDotAnimationsParameters.scaleY.toValue); + scaleY.duration = kYALSelectedDotAnimationsParameters.scaleY.duration; + + return [self groupWithAnimations:@[scaleX, scaleY] andDuration:kYALExpandAnimationDuration / 2]; +} + +#pragma mark - Helpers - + +#pragma mark Group + ++ (CAAnimationGroup *)groupWithAnimations:(NSArray *)animations andDuration:(CFTimeInterval)duration { + CAAnimationGroup *group = [CAAnimationGroup animation]; + group.duration = duration; + group.animations = animations; + group.removedOnCompletion = NO; + group.fillMode = kCAFillModeForwards; + return group; +} + +#pragma mark Rotation bounce animation + ++ (YALSpringAnimation *)rotationBouncedAnimationFromValue:(double)fromValue toValue:(double)toValue { + return [YALSpringAnimation animationWithKeyPath:@"transform.rotation.z" + duration:kYALBounceAnimationParameters.duration + damping:kYALBounceAnimationParameters.damping + velocity:kYALBounceAnimationParameters.velocity + fromValue:fromValue + toValue:toValue]; +} + +@end diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.h b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.h new file mode 100644 index 0000000..aa99ff0 --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.h @@ -0,0 +1,9 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import <QuartzCore/QuartzCore.h> + +@interface CATransaction (TransactionWithAnimationsAndCompletion) + ++ (void)transactionWithAnimations:(void(^)(void))animations andCompletion:(void(^)(void))completion; + +@end diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.m b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.m new file mode 100644 index 0000000..2bd8f31 --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.m @@ -0,0 +1,16 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import "CATransaction+TransactionWithAnimationsAndCompletion.h" + +@implementation CATransaction (TransactionWithAnimationsAndCompletion) + ++ (void)transactionWithAnimations:(void(^)(void))animations andCompletion:(void(^)(void))completion { + [CATransaction begin]; { + [CATransaction setCompletionBlock:completion]; + if (animations) { + animations(); + } + } [CATransaction commit]; +} + +@end diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Constants/YALAnimatingTabBarConstants.h b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Constants/YALAnimatingTabBarConstants.h new file mode 100644 index 0000000..f6c1391 --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Constants/YALAnimatingTabBarConstants.h @@ -0,0 +1,60 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import <UIKit/UIKit.h> + +extern CGFloat const YALBottomSelectedDotDefaultSize; +extern CGFloat const YALBottomSelectedDotOffset; +extern CGFloat const YALTabBarViewDefaultHeight; +extern CGFloat const YALExtraTabBarItemsDefaultHeight; +extern CGFloat const YALForExtraTabBarItemsDefaultOffset; +extern UIEdgeInsets const YALTabBarViewHDefaultEdgeInsets; +extern UIEdgeInsets const YALTabBarViewItemsDefaultEdgeInsets; + + +extern CFTimeInterval const kYALExpandAnimationDuration; + +typedef struct { + CFTimeInterval beginTime; + CFTimeInterval duration; + double fromValue; + double toValue; + double damping; + double velocity; +} YALAnimationParameters; + +typedef struct { + YALAnimationParameters scaleX; + YALAnimationParameters scaleY; + YALAnimationParameters rotation; + YALAnimationParameters bounce; +} YALAdditionalButtonsAnimationsParameters; + +typedef struct { + YALAnimationParameters rotation; + YALAnimationParameters bounce; +} YALCenterButtonAnimationsParameters; + +typedef struct { + NSTimeInterval duration; + NSTimeInterval delay; + CGFloat damping; + CGFloat velocity; + UIViewAnimationOptions options; +} YALExtraTabBarItemViewAnimationParameters; + +typedef struct { + YALAnimationParameters scaleX; + YALAnimationParameters scaleY; +} YALSelectedDotAnimationsParameters; + +extern YALAdditionalButtonsAnimationsParameters const kYALAdditionalButtonsAnimationsParameters; +extern YALSelectedDotAnimationsParameters const kYALSelectedDotAnimationsParameters; +extern YALAnimationParameters const kYALExtraLeftTabBarItemAnimationParameters; +extern YALAnimationParameters const kYALExtraRightTabBarItemAnimationParameters; +extern YALAnimationParameters const kYALTabBarExpandAnimationParameters; +extern YALAnimationParameters const kYALTabBarCollapseAnimationParameters; +extern YALCenterButtonAnimationsParameters const kYALCenterButtonExpandAnimationParameters; +extern YALCenterButtonAnimationsParameters const kYALCenterButtonCollapseAnimationParameters; +extern YALAnimationParameters const kYALBounceAnimationParameters; +extern YALExtraTabBarItemViewAnimationParameters const kYALShowExtraTabBarItemViewAnimationParameters; +extern YALExtraTabBarItemViewAnimationParameters const kYALHideExtraTabBarItemViewAnimationParameters; \ No newline at end of file diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Constants/YALAnimatingTabBarConstants.m b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Constants/YALAnimatingTabBarConstants.m new file mode 100644 index 0000000..f61c2b7 --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Constants/YALAnimatingTabBarConstants.m @@ -0,0 +1,122 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import "YALAnimatingTabBarConstants.h" + +CGFloat const YALBottomSelectedDotDefaultSize = 4.f; +CGFloat const YALBottomSelectedDotOffset = 16.f; +CGFloat const YALTabBarViewDefaultHeight = 80.f; +CGFloat const YALExtraTabBarItemsDefaultHeight = 48.f; +CGFloat const YALForExtraTabBarItemsDefaultOffset = 15.f; +UIEdgeInsets const YALTabBarViewHDefaultEdgeInsets = {10.f, 14.f, 10.f, 14.f}; +UIEdgeInsets const YALTabBarViewItemsDefaultEdgeInsets = {0.f, 0.f, 0.f, 0.f}; + + +CFTimeInterval const kYALExpandAnimationDuration = 1.0; + +CGFloat const kDegreeToRadiansRatio = M_PI / 180.f; + +YALAnimationParameters const kYALBounceAnimationParameters = (YALAnimationParameters) { + .duration = kYALExpandAnimationDuration * 2.0 / 3.0, + .damping = 0.5, + .velocity = 3.0 +}; + +YALAnimationParameters const kYALExtraLeftTabBarItemAnimationParameters = (YALAnimationParameters) { + .duration = kYALExpandAnimationDuration * 3.0 / 4.0, + .damping = 0.74, + .velocity = 1.2, + .fromValue = 0.0, + .toValue = M_PI * 2.0 * 2.0 +}; + +YALAnimationParameters const kYALExtraRightTabBarItemAnimationParameters = (YALAnimationParameters) { + .duration = kYALExpandAnimationDuration * 3.0 / 4.0, + .damping = 0.74, + .velocity = 1.2, + .fromValue = 0.0, + .toValue = M_PI * 2.0 * -2.0 +}; + +YALAnimationParameters const kYALTabBarExpandAnimationParameters = (YALAnimationParameters) { + .duration = kYALExpandAnimationDuration / 2.0, + .damping = 0.5, + .velocity = 0.6 +}; + +YALAnimationParameters const kYALTabBarCollapseAnimationParameters = (YALAnimationParameters) { + .duration = kYALExpandAnimationDuration * 0.6, + .damping = 1, + .velocity = 0.2 +}; + +YALCenterButtonAnimationsParameters const kYALCenterButtonExpandAnimationParameters = (YALCenterButtonAnimationsParameters) { + .rotation = (YALAnimationParameters) { + .duration = kYALExpandAnimationDuration / 4.0, + .fromValue = 0.0, + .toValue = M_PI * 2.0 + 45.0 * kDegreeToRadiansRatio + }, + .bounce = (YALAnimationParameters) { + .beginTime = kYALExpandAnimationDuration / 4.0, + .fromValue = 45.0 * kDegreeToRadiansRatio + M_PI / 8.0, + .toValue = 45.0 * kDegreeToRadiansRatio + } +}; + +YALCenterButtonAnimationsParameters const kYALCenterButtonCollapseAnimationParameters = (YALCenterButtonAnimationsParameters) { + .rotation = (YALAnimationParameters) { + .duration = kYALExpandAnimationDuration / 4.0, + .fromValue = 0.0, + .toValue = 315.0 * kDegreeToRadiansRatio + }, + .bounce = (YALAnimationParameters) { + .beginTime = kYALExpandAnimationDuration / 4.0, + .fromValue = M_PI / 8.0, + .toValue = 0.0 + } +}; + +YALSelectedDotAnimationsParameters const kYALSelectedDotAnimationsParameters = +(YALSelectedDotAnimationsParameters) { + .scaleX = (YALAnimationParameters) { + .duration = kYALExpandAnimationDuration / 4.0, + .fromValue = 0.0, + .toValue = 1.0 + }, + .scaleY = (YALAnimationParameters) { + .duration = kYALExpandAnimationDuration / 4.0, + .fromValue = 0.0, + .toValue = 1.0 + } +}; + +YALAdditionalButtonsAnimationsParameters const kYALAdditionalButtonsAnimationsParameters = (YALAdditionalButtonsAnimationsParameters) { + .scaleX = (YALAnimationParameters) { + .duration = kYALExpandAnimationDuration / 4.0, + .fromValue = 0.0, + .toValue = 1.0 + }, + .scaleY = (YALAnimationParameters) { + .duration = kYALExpandAnimationDuration / 4.0, + .fromValue = 0.0, + .toValue = 1.0 + }, + .rotation = (YALAnimationParameters) { + .duration = kYALExpandAnimationDuration / 4.0, + .fromValue = 0.0, + .toValue = M_PI * 2.0 * 5.0 + }, + .bounce = (YALAnimationParameters) { + .beginTime = kYALExpandAnimationDuration / 4.0, + .fromValue = M_PI / 8.0, + .toValue = 0.0 + } +}; + +YALExtraTabBarItemViewAnimationParameters const kYALShowExtraTabBarItemViewAnimationParameters = (YALExtraTabBarItemViewAnimationParameters) { + .duration = kYALExpandAnimationDuration / 2.0, + .damping = 0.5f, +}; + +YALExtraTabBarItemViewAnimationParameters const kYALHideExtraTabBarItemViewAnimationParameters = (YALExtraTabBarItemViewAnimationParameters) { + .duration = kYALExpandAnimationDuration / 8.0, +}; diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.h b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.h new file mode 100644 index 0000000..197fc00 --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.h @@ -0,0 +1,18 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import <UIKit/UIKit.h> + +//view +#import "YALFoldingTabBar.h" + +@interface YALFoldingTabBarController : UITabBarController + +@property (nonatomic, copy) NSArray *leftBarItems; +@property (nonatomic, copy) NSArray *rightBarItems; +@property (nonatomic, strong) UIImage *centerButtonImage; + +@property (nonatomic, assign) CGFloat tabBarViewHeight; + +@property (nonatomic, strong) YALFoldingTabBar *tabBarView; + +@end diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.m b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.m new file mode 100644 index 0000000..481ce43 --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.m @@ -0,0 +1,177 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import "YALFoldingTabBarController.h" + +//model +#import "YALTabBarItem.h" + +//protocol +#import "YALTabBarInteracting.h" + +#import "YALAnimatingTabBarConstants.h" + +@interface YALFoldingTabBarController () <YALTabBarViewDataSource, YALTabBarViewDelegate> + +@property (nonatomic, assign) YALTabBarState state; + +@end + +@implementation YALFoldingTabBarController + +#pragma mark - Initialization + +- (instancetype)init { + self = [super init]; + if (self) { + [self setup]; + } + return self; +} + +- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + [self setup]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; + if (self) { + [self setup]; + } + return self; +} + +- (void)setup { + self.tabBarViewHeight = YALTabBarViewDefaultHeight; + + [self setupTabBarView]; +} + +#pragma mark - View & LifeCycle + +- (void)viewDidLoad { + [super viewDidLoad]; + + [self.tabBar setBackgroundImage:[[UIImage alloc] init]]; + [self.tabBar setShadowImage:[[UIImage alloc] init]]; + + self.tabBar.hidden = YES; +} + +- (void)viewWillLayoutSubviews { + [super viewWillLayoutSubviews]; + + CGRect tabFrame = self.tabBar.frame; + tabFrame.size.height = self.tabBarViewHeight; + tabFrame.origin.y = self.view.frame.size.height - self.tabBarViewHeight; + self.tabBar.frame = tabFrame; +} + +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; + + [self updateTabBarViewFrame]; +} + +- (void)setSelectedIndex:(NSUInteger)selectedIndex { + [super setSelectedIndex:selectedIndex]; + + self.tabBarView.selectedTabBarItemIndex = selectedIndex; + [self.tabBarView setNeedsLayout]; +} + +#pragma mark - Private + +- (void)updateTabBarViewFrame { + CGFloat tabBarViewOriginX = self.tabBar.frame.origin.x; + CGFloat tabBarViewOriginY = self.tabBar.frame.origin.y; + CGFloat tabBarViewSizeWidth = CGRectGetWidth(self.tabBar.frame); + + self.tabBarView.frame = CGRectMake(tabBarViewOriginX, tabBarViewOriginY, tabBarViewSizeWidth, self.tabBarViewHeight); + [self.tabBarView setNeedsLayout]; +} + +- (void)setupTabBarView { + self.tabBarView = [[YALFoldingTabBar alloc] initWithFrame:CGRectZero state:self.state]; + + self.tabBarView.dataSource = self; + self.tabBarView.delegate = self; + + [self.view addSubview:self.tabBarView]; +} + +- (id<YALTabBarInteracting>)currentInteractingViewController { + if ([self.selectedViewController isKindOfClass:[UINavigationController class]]) { + return (id<YALTabBarInteracting>)[(UINavigationController *)self.selectedViewController topViewController]; + } else { + return (id<YALTabBarInteracting>)self.selectedViewController; + } +} + +#pragma mark - YALTabBarViewDataSource + +- (NSArray *)leftTabBarItemsInTabBarView:(YALFoldingTabBar *)tabBarView { + return self.leftBarItems; +} + +- (NSArray *)rightTabBarItemsInTabBarView:(YALFoldingTabBar *)tabBarView { + return self.rightBarItems; +} + +- (UIImage *)centerImageInTabBarView:(YALFoldingTabBar *)tabBarView { + return self.centerButtonImage; +} + +#pragma mark - YALTabBarViewDelegate + +- (void)tabBarViewWillCollapse:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; + if ([viewController respondsToSelector:@selector(tabBarViewWillCollapse)]) { + [viewController tabBarViewWillCollapse]; + } +} + +- (void)tabBarViewDidCollapse:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; + if ([viewController respondsToSelector:@selector(tabBarViewDidCollapse)]) { + [viewController tabBarViewDidCollapse]; + } +} + +- (void)tabBarViewWillExpand:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; + if ([viewController respondsToSelector:@selector(tabBarViewWillExpand)]) { + [viewController tabBarViewWillExpand]; + } +} + +- (void)tabBarViewDidExpand:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; + if ([viewController respondsToSelector:@selector(tabBarViewDidExpand)]) { + [viewController tabBarViewDidExpand]; + } +} + +- (void)extraLeftItemDidPressInTabBarView:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; + if ([viewController respondsToSelector:@selector(extraLeftItemDidPress)]) { + [viewController extraLeftItemDidPress]; + } +} + +- (void)extraRightItemDidPressInTabBarView:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; + if ([viewController respondsToSelector:@selector(extraRightItemDidPress)]) { + [viewController extraRightItemDidPress]; + } +} + +- (void)itemInTabBarViewPressed:(YALFoldingTabBar *)tabBarView atIndex:(NSUInteger)index { + self.selectedViewController = [self.viewControllers objectAtIndex:index]; +} + + +@end diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Model/TabBarItem/YALTabBarItem.h b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Model/TabBarItem/YALTabBarItem.h new file mode 100644 index 0000000..6253fb0 --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Model/TabBarItem/YALTabBarItem.h @@ -0,0 +1,16 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import <Foundation/Foundation.h> +#import <UIKit/UIKit.h> + +@interface YALTabBarItem : NSObject + +@property (nonatomic, strong) UIImage *itemImage; +@property (nonatomic, strong) UIImage *leftImage; +@property (nonatomic, strong) UIImage *rightImage; + +- (instancetype)initWithItemImage:(UIImage *)itemImage + leftItemImage:(UIImage *)leftItemImage + rightItemImage:(UIImage *)rightItemImage; + +@end diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Model/TabBarItem/YALTabBarItem.m b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Model/TabBarItem/YALTabBarItem.m new file mode 100644 index 0000000..2f9b0da --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Model/TabBarItem/YALTabBarItem.m @@ -0,0 +1,25 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import "YALTabBarItem.h" + +@interface YALTabBarItem () + +@end + +@implementation YALTabBarItem + +#pragma mark - Initialization + +- (instancetype)initWithItemImage:(UIImage *)itemImage + leftItemImage:(UIImage *)leftItemImage + rightItemImage:(UIImage *)rightItemImage { + self = [super init]; + if (self) { + _itemImage = itemImage; + _leftImage = leftItemImage; + _rightImage = rightItemImage; + } + return self; +} + +@end diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Protocol/TabBarInteracting/YALTabBarInteracting.h b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Protocol/TabBarInteracting/YALTabBarInteracting.h new file mode 100644 index 0000000..811121a --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/Protocol/TabBarInteracting/YALTabBarInteracting.h @@ -0,0 +1,20 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import <Foundation/Foundation.h> + +@class YALFoldingTabBar; + +@protocol YALTabBarInteracting <NSObject> + +@optional + +- (void)tabBarViewWillCollapse; +- (void)tabBarViewWillExpand; + +- (void)tabBarViewDidCollapse; +- (void)tabBarViewDidExpand; + +- (void)extraLeftItemDidPress; +- (void)extraRightItemDidPress; + +@end diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.h b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.h new file mode 100644 index 0000000..7dc9762 --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.h @@ -0,0 +1,53 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import <UIKit/UIKit.h> + +@class YALFoldingTabBar; + +@protocol YALTabBarViewDataSource <NSObject> + +@required +- (NSArray *)leftTabBarItemsInTabBarView:(YALFoldingTabBar *)tabBarView; +- (NSArray *)rightTabBarItemsInTabBarView:(YALFoldingTabBar *)tabBarView; +- (UIImage *)centerImageInTabBarView:(YALFoldingTabBar *)tabBarView; + +@end + +@protocol YALTabBarViewDelegate <NSObject> + +@optional +- (void)itemInTabBarViewPressed:(YALFoldingTabBar *)tabBarView atIndex:(NSUInteger)index; + +- (void)tabBarViewWillCollapse:(YALFoldingTabBar *)tabBarView; +- (void)tabBarViewWillExpand:(YALFoldingTabBar *)tabBarView; + +- (void)tabBarViewDidCollapse:(YALFoldingTabBar *)tabBarView; +- (void)tabBarViewDidExpand:(YALFoldingTabBar *)tabBarView; + +- (void)extraLeftItemDidPressInTabBarView:(YALFoldingTabBar *)tabBarView; +- (void)extraRightItemDidPressInTabBarView:(YALFoldingTabBar *)tabBarView; + +@end + +typedef NS_ENUM(NSUInteger, YALTabBarState) { + YALStateCollapsed, + YALStateExpanded +}; + +@interface YALFoldingTabBar : UIView + +- (instancetype)initWithFrame:(CGRect)frame state:(YALTabBarState)state; + +@property (nonatomic, weak) IBOutlet id<YALTabBarViewDataSource> dataSource; +@property (nonatomic, weak) IBOutlet id<YALTabBarViewDelegate> delegate; + +@property (nonatomic, assign, readonly) YALTabBarState state; +@property (nonatomic, assign) NSUInteger selectedTabBarItemIndex; + +@property (nonatomic, copy) UIColor *tabBarColor; +@property (nonatomic, assign) UIEdgeInsets tabBarViewEdgeInsets; +@property (nonatomic, assign) UIEdgeInsets tabBarItemsEdgeInsets; +@property (nonatomic, assign) CGFloat extraTabBarItemHeight; +@property (nonatomic, assign) CGFloat offsetForExtraTabBarItems; + +@end diff --git a/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.m b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.m new file mode 100644 index 0000000..bf95c65 --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.m @@ -0,0 +1,660 @@ +// For License please refer to LICENSE file in the root of YALAnimatingTabBarController project + +#import "YALFoldingTabBar.h" + +//model +#import "YALTabBarItem.h" + +#import "CAAnimation+YALTabBarViewAnimations.h" +#import "CATransaction+TransactionWithAnimationsAndCompletion.h" + +typedef NS_ENUM(NSUInteger, YALAnimatingState) { + YALAnimatingStateCollapsing, + YALAnimatingStateExpanding +}; + +#import "YALAnimatingTabBarConstants.h" + +@interface YALFoldingTabBar () + +@property (nonatomic, strong) NSArray *allBarItems; + +@property (nonatomic, assign) YALTabBarState state; +@property (nonatomic, assign) YALAnimatingState animatingState; +@property (nonatomic, assign) BOOL isFinishedCenterButtonAnimation; + +@property (nonatomic, strong) UIButton *centerButton; +@property (nonatomic, strong) UIView *mainView; + +@property (nonatomic, assign) BOOL isAnimated; + +@property (nonatomic, assign) CGRect collapsedFrame; +@property (nonatomic, assign) CGRect expandedFrame; + +@property (nonatomic, assign) CGRect collapsedBounds; +@property (nonatomic, assign) CGRect expandedBounds; + +@property (nonatomic, assign) NSUInteger counter; + +//buttons used instead of native tabBarItems to switch between controllers +@property (nonatomic, strong) NSArray *leftButtonsArray; +@property (nonatomic, strong) NSArray *rightButtonsArray; + +//extra buttons 'tabBarItems' for each 'tabBarItem' +@property (nonatomic, strong) UIButton *extraLeftButton; +@property (nonatomic, strong) UIButton *extraRightButton; + +//model representation of tabBarItems. also contains info for extraBarItems: image, color, etc +@property (nonatomic, strong) NSDictionary *leftTabBarItems; +@property (nonatomic, strong) NSDictionary *rightTabBarItems; + +//array of all buttons just for simple switching between controllers by index +@property (nonatomic, strong) NSArray *allAdditionalButtons; +@property (nonatomic, strong) NSMutableArray *allAdditionalButtonsBottomView; + +@end + +@implementation YALFoldingTabBar + +#pragma mark - Initialations + +- (instancetype)initWithFrame:(CGRect)frame state:(YALTabBarState)state { + self = [super initWithFrame:frame]; + if (self) { + _state = state; + _selectedTabBarItemIndex = 0; + _counter = 0; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + [self setupUI]; +} + +#pragma mark - Private + +- (void)setupUI { + [self removeViewsBeforeUpdateUI]; + + [self setupMainView]; + [self setupCenterButton]; + + //collapsed frame equals to frame of the centerButton + self.collapsedFrame = self.centerButton.frame; + + [self setupAdditionalTabBarItems]; + + [self updateMaskLayer]; + + [self setupExtraTabBarItems]; + [self setupTabBarItemsViewRepresentation]; + [self setupBarItemsModelRepresentation]; + [self prepareTabBarViewForInitialState]; +} + +- (void)removeViewsBeforeUpdateUI { + + if (self.mainView) { + [self.mainView removeFromSuperview]; + self.mainView = nil; + } + + if (self.extraLeftButton) { + [self.extraLeftButton removeFromSuperview]; + self.extraLeftButton = nil; + } + + if (self.extraRightButton) { + [self.extraRightButton removeFromSuperview]; + self.extraRightButton = nil; + } + + if (self.centerButton) { + [self.centerButton removeFromSuperview]; + self.centerButton = nil; + } +} + +- (void)setupCenterButton { + self.centerButton = [[UIButton alloc] initWithFrame:CGRectMake(CGRectGetMidX(self.mainView.frame) - CGRectGetHeight(self.mainView.frame) / 2.0f, + CGRectGetMidY(self.mainView.frame) - CGRectGetHeight(self.mainView.frame) / 2.f, + CGRectGetHeight(self.mainView.frame), + CGRectGetHeight(self.mainView.frame))]; + + self.centerButton.layer.cornerRadius = CGRectGetHeight(self.mainView.bounds) / 2.f; + + if ([self.dataSource respondsToSelector:@selector(centerImageInTabBarView:)]) { + [self.centerButton setImage:[self.dataSource centerImageInTabBarView:self] forState:UIControlStateNormal]; + } + + [self.centerButton addTarget:self action:@selector(centerButtonPressed) forControlEvents:UIControlEventTouchUpInside]; + self.centerButton.adjustsImageWhenHighlighted = NO; + + [self addSubview:self.centerButton]; +} + +- (void)setupMainView { + self.mainView = [[UIView alloc] initWithFrame:UIEdgeInsetsInsetRect(self.bounds, self.tabBarViewEdgeInsets)]; + + self.expandedFrame = self.mainView.frame; + self.mainView.layer.cornerRadius = CGRectGetHeight(self.mainView.bounds) / 2.f; + self.mainView.layer.masksToBounds = YES; + self.mainView.backgroundColor = self.tabBarColor; + + [self addSubview:self.mainView]; +} + +- (void)setupAdditionalTabBarItems { + NSArray *leftTabBarItems = [self.dataSource leftTabBarItemsInTabBarView:self]; + NSArray *rightTabBarItems = [self.dataSource rightTabBarItemsInTabBarView:self]; + + NSUInteger numberOfLeftTabBarButtonItems = [leftTabBarItems count]; + NSUInteger numberOfRightTabBarButtonItems = [rightTabBarItems count]; + + //calculate available space for left and right side + CGFloat availableSpaceForAdditionalBarButtonItemLeft = CGRectGetWidth(self.mainView.frame) / 2.f - CGRectGetWidth(self.centerButton.frame) / 2.f - self.tabBarItemsEdgeInsets.left; + + CGFloat availableSpaceForAdditionalBarButtonItemRight = CGRectGetWidth(self.mainView.frame) / 2.f - CGRectGetWidth(self.centerButton.frame) / 2.f - self.tabBarItemsEdgeInsets.right; + + CGFloat maxWidthForLeftBarButonItem = availableSpaceForAdditionalBarButtonItemLeft / numberOfLeftTabBarButtonItems; + CGFloat maxWidthForRightBarButonItem = availableSpaceForAdditionalBarButtonItemRight / numberOfRightTabBarButtonItems; + + NSMutableArray * reverseArrayLeft = [NSMutableArray arrayWithCapacity:[self.leftButtonsArray count]]; + + for (id element in [leftTabBarItems reverseObjectEnumerator]) { + [reverseArrayLeft addObject:element]; + } + + NSMutableArray *mutableArray = [NSMutableArray array]; + NSMutableArray *mutableDotsArray = [NSMutableArray array]; + + CGFloat deltaLeft = 0.f; + if (maxWidthForLeftBarButonItem > CGRectGetWidth(self.centerButton.frame)) { + deltaLeft = maxWidthForLeftBarButonItem - CGRectGetWidth(self.centerButton.frame); + } + + CGFloat startPositionLeft = CGRectGetWidth(self.mainView.bounds) / 2.f - CGRectGetWidth(self.centerButton.frame) / 2.f - self.tabBarItemsEdgeInsets.left - deltaLeft / 2.f; + + for (int i = 0; i < numberOfLeftTabBarButtonItems; i++) { + CGFloat buttonOriginX = startPositionLeft - maxWidthForLeftBarButonItem * (i+1); + CGFloat buttonOriginY = 0.f; + + CGFloat buttonWidth = maxWidthForLeftBarButonItem; + CGFloat buttonHeight = CGRectGetHeight(self.mainView.frame); + + startPositionLeft -= self.tabBarItemsEdgeInsets.right; + + YALTabBarItem *item = reverseArrayLeft[i]; + UIImage *image = item.itemImage; + + UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(buttonOriginX, buttonOriginY, buttonWidth, buttonHeight)]; + + if (numberOfLeftTabBarButtonItems == 1) { + CGRect rect = button.frame; + rect.size.width = CGRectGetHeight(self.mainView.frame); + button.bounds = rect; + } + + [button setImage:image forState:UIControlStateNormal]; + [button addTarget:self action:@selector(barItemDidTapped:) forControlEvents:UIControlEventTouchUpInside]; + + if (self.state == YALStateCollapsed) { + button.hidden = YES; + } + + + [mutableArray addObject:button]; + button.adjustsImageWhenHighlighted = NO; + + [self.mainView addSubview:button]; + } + + NSMutableArray * reverseArrayLeftDotViews = [NSMutableArray arrayWithCapacity:[mutableDotsArray count]]; + + for (id element in [mutableDotsArray reverseObjectEnumerator]) { + [reverseArrayLeft addObject:element]; + } + mutableDotsArray = reverseArrayLeftDotViews; + + self.leftButtonsArray = [mutableArray copy]; + + [mutableArray removeAllObjects]; + + CGFloat rightDelta = 0.f; + if (maxWidthForRightBarButonItem > CGRectGetWidth(self.centerButton.frame)) { + rightDelta = maxWidthForRightBarButonItem - CGRectGetWidth(self.centerButton.frame); + } + + CGFloat rightOffset = self.tabBarItemsEdgeInsets.right; + CGFloat startPositionRight = CGRectGetWidth(self.mainView.bounds) / 2.f + CGRectGetWidth(self.centerButton.frame) / 2.f + self.tabBarItemsEdgeInsets.right + + rightDelta / 2.f; + + for (int i = 0; i < numberOfRightTabBarButtonItems; i++) { + CGFloat buttonOriginX = startPositionRight; + CGFloat buttonOriginY = 0.f; + CGFloat buttonWidth = maxWidthForRightBarButonItem; + CGFloat buttonHeight = CGRectGetHeight(self.mainView.frame); + + startPositionRight = buttonOriginX + maxWidthForRightBarButonItem + rightOffset; + + YALTabBarItem *item = rightTabBarItems [i]; + UIImage *image = item.itemImage; + + UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(buttonOriginX, buttonOriginY, buttonWidth, buttonHeight)]; + + if (numberOfLeftTabBarButtonItems == 1) { + CGRect rect = button.frame; + rect.size.width = CGRectGetHeight(self.mainView.frame); + button.bounds = rect; + } + + [button setImage:image forState:UIControlStateNormal]; + [button addTarget:self action:@selector(barItemDidTapped:) forControlEvents:UIControlEventTouchUpInside]; + + if (self.state == YALStateCollapsed) { + button.hidden = YES; + } + [mutableArray addObject:button]; + button.adjustsImageWhenHighlighted = NO; + [self.mainView addSubview:button]; + } + + self.rightButtonsArray = [mutableArray copy]; +} + +//collect all tabBarItems (models) to one array +- (void)setupBarItemsModelRepresentation { + NSMutableArray *tempMutableArrayOfBarItems = [NSMutableArray array]; + + NSArray *leftTabBarItems = [self.dataSource leftTabBarItemsInTabBarView:self]; + NSArray *rightTabBarItems = [self.dataSource rightTabBarItemsInTabBarView:self]; + + for (YALTabBarItem *item in leftTabBarItems) { + [tempMutableArrayOfBarItems addObject:item]; + } + + for (YALTabBarItem *item in rightTabBarItems) { + [tempMutableArrayOfBarItems addObject:item]; + } + + self.allBarItems = [tempMutableArrayOfBarItems copy]; +} + +- (void)setupExtraTabBarItems { + self.extraLeftButton = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, CGRectGetMidY(self.mainView.frame) - CGRectGetHeight(self.mainView.frame) / 2.f, self.extraTabBarItemHeight, self.extraTabBarItemHeight)]; + self.extraLeftButton.center = CGPointMake( - CGRectGetWidth(self.extraLeftButton.frame) / 2, self.mainView.center.y); + self.extraLeftButton.backgroundColor = self.tabBarColor; + self.extraLeftButton.layer.cornerRadius = CGRectGetWidth(self.extraLeftButton.frame) / 2.f; + self.extraLeftButton.layer.masksToBounds = YES; + + [self.extraLeftButton addTarget:self action:@selector(extraLeftButtonDidPress) forControlEvents:UIControlEventTouchUpInside]; + self.extraLeftButton.hidden = YES; + + [self addSubview:self.extraLeftButton]; + + self.extraRightButton = [[UIButton alloc] initWithFrame:CGRectMake(CGRectGetWidth(self.frame) - CGRectGetWidth(self.centerButton.frame), CGRectGetMidY(self.mainView.frame) - CGRectGetHeight(self.mainView.frame) / 2.f, self.extraTabBarItemHeight, self.extraTabBarItemHeight)]; + self.extraRightButton.center = CGPointMake(self.extraRightButton.center.x + CGRectGetWidth(self.extraRightButton.frame) , self.mainView.center.y); + self.extraRightButton.layer.cornerRadius = CGRectGetWidth(self.extraLeftButton.frame) / 2.f; + self.extraLeftButton.layer.masksToBounds = YES; + + self.extraRightButton.backgroundColor = self.tabBarColor; + [self.extraRightButton addTarget:self action:@selector(extraRightButtonDidPress) forControlEvents:UIControlEventTouchUpInside]; + self.extraRightButton.hidden = YES; + + [self addSubview:self.extraRightButton]; +} + +- (void)setupTabBarItemsViewRepresentation { + NSMutableArray *tempArray = [NSMutableArray array]; + NSMutableArray *reverseArray = [NSMutableArray arrayWithCapacity:[self.leftButtonsArray count]]; + + for (id element in [self.leftButtonsArray reverseObjectEnumerator]) { + [reverseArray addObject:element]; + } + + for (UIButton *button in [reverseArray arrayByAddingObjectsFromArray:self.rightButtonsArray]) { + [tempArray addObject:button]; + } + + self.allAdditionalButtons = [tempArray copy]; + + self.allAdditionalButtonsBottomView = [[NSMutableArray alloc] init];; + for (UIButton *button in self.allAdditionalButtons) { + UIView *dotView = [[UIView alloc] initWithFrame:CGRectMake(0.f, 0.f, YALBottomSelectedDotDefaultSize,YALBottomSelectedDotDefaultSize)]; + dotView.center = CGPointMake(button.center.x, button.center.y + YALBottomSelectedDotOffset); + dotView.layer.cornerRadius = CGRectGetHeight(dotView.frame) / 2.f; + dotView.backgroundColor = [UIColor blackColor]; + dotView.hidden = YES; + [self.mainView addSubview:dotView]; + [self.allAdditionalButtonsBottomView addObject:dotView]; + } +} + +- (void)prepareTabBarViewForInitialState { + + if (![self hasTabBarItems]) { + return ; + } + + //collapse mainView. tabBarItams are hidden. + if (self.state == YALStateExpanded) { + self.centerButton.transform = CGAffineTransformMakeRotation(M_PI_4); + } + self.mainView.frame = self.expandedFrame; + + //prepare current selected tabBarItem + NSUInteger index = self.selectedTabBarItemIndex; + + if (self.selectedTabBarItemIndex != index) { + UIView *previousSelectedDotView = self.allAdditionalButtonsBottomView [self.selectedTabBarItemIndex]; + previousSelectedDotView.hidden = YES; + [self.allAdditionalButtonsBottomView replaceObjectAtIndex:self.selectedTabBarItemIndex withObject:previousSelectedDotView]; + } + + if (self.state == YALStateExpanded) { + + UIView *previousSelectedDotView = self.allAdditionalButtonsBottomView [self.selectedTabBarItemIndex]; + previousSelectedDotView.hidden = NO; + [self.allAdditionalButtonsBottomView replaceObjectAtIndex:self.selectedTabBarItemIndex withObject:previousSelectedDotView]; + } + + if (self.state == YALStateExpanded && self.selectedTabBarItemIndex == index) { + [self hideExtraLeftTabBarItem]; + [self hideExtraRightTabBarItem]; + } + + self.selectedTabBarItemIndex = index; + + //check if selected view controller needs extraLeftButton or extraRightButton + YALTabBarItem *defaultSelectedTabBarItem = [self.allBarItems objectAtIndex:index]; + [self configureExtraTabBarItemWithModel:defaultSelectedTabBarItem]; + if (self.state == YALStateCollapsed) { + + + if (defaultSelectedTabBarItem.leftImage) { + self.extraLeftButton.center = CGPointMake(self.offsetForExtraTabBarItems + CGRectGetWidth(self.extraLeftButton.frame) / 2.f, self.extraLeftButton.center.y); + } + + if (defaultSelectedTabBarItem.rightImage) { + self.extraRightButton.center = CGPointMake(CGRectGetWidth(self.frame) - self.offsetForExtraTabBarItems - CGRectGetWidth(self.extraRightButton.frame) / 2.f, self.extraRightButton.center.y); + } + } +} + +- (void)configureExtraTabBarItemWithModel:(YALTabBarItem *)item { + if (item.leftImage) { + self.extraLeftButton.hidden = NO; + [self.extraLeftButton setImage:item.leftImage forState:UIControlStateNormal]; + } else { + self.extraLeftButton.hidden = YES; + } + if (item.rightImage) { + self.extraRightButton.hidden = NO; + [self.extraRightButton setImage:item.rightImage forState:UIControlStateNormal]; + } else { + self.extraRightButton.hidden = YES; + } +} + +- (BOOL)hasTabBarItems { + return (self.allBarItems.count); +} + +#pragma mark - Actions + +- (void)centerButtonPressed { + //we should wait until animation cycle is finished + + if (![self hasTabBarItems]) { + return ; + } + + self.counter ++; + + if (!self.isAnimated) { + if (self.state == YALStateCollapsed) { + [self expand]; + } else { + [self collapse]; + } + } else { + if (self.animatingState == YALAnimatingStateCollapsing) { + [self expand]; + } else if (self.animatingState == YALAnimatingStateExpanding) { + [self collapse]; + } + } +} + +- (IBAction)barItemDidTapped:(id)sender { + if (self.isAnimated) { + return; + } + + NSUInteger index = [self.allAdditionalButtons indexOfObject:sender]; + + if (self.selectedTabBarItemIndex != index) { + YALTabBarItem *item = [self.allBarItems objectAtIndex:index]; + [self configureExtraTabBarItemWithModel:item]; + + UIView *previousSelectedDotView = self.allAdditionalButtonsBottomView[self.selectedTabBarItemIndex]; + previousSelectedDotView.hidden = YES; + [self.allAdditionalButtonsBottomView replaceObjectAtIndex:self.selectedTabBarItemIndex withObject:previousSelectedDotView]; + } + + self.selectedTabBarItemIndex = index; + + if ([self.delegate respondsToSelector:@selector(tabBarViewWillCollapse:)]) { + [self.delegate tabBarViewWillCollapse:self]; + } + + [self collapse]; + + if ([self.delegate respondsToSelector:@selector(itemInTabBarViewPressed:atIndex:)]) { + [self.delegate itemInTabBarViewPressed:self atIndex:index]; + } +} + +- (void)extraLeftButtonDidPress { + if ([self.delegate respondsToSelector:@selector(extraLeftItemDidPressInTabBarView:)]) { + [self.delegate extraLeftItemDidPressInTabBarView:self]; + } +} + +- (void)extraRightButtonDidPress { + if ([self.delegate respondsToSelector:@selector(extraRightItemDidPressInTabBarView:)]) { + [self.delegate extraRightItemDidPressInTabBarView:self]; + } +} + +#pragma mark - expand/collapse + +- (void)expand { + self.isFinishedCenterButtonAnimation = NO; + self.animatingState = YALAnimatingStateExpanding; + self.state = YALStateExpanded; + + if ([self.delegate respondsToSelector:@selector(tabBarViewWillExpand:)]) { + [self.delegate tabBarViewWillExpand:self]; + } + + __block NSUInteger counterCurrentValue = self.counter; + + [CATransaction transactionWithAnimations:^{ + self.isAnimated = YES; + [self animateTabBarViewExpand]; + [self hideExtraLeftTabBarItem]; + [self hideExtraRightTabBarItem]; + [self animateCenterButtonExpand]; + [self animateAdditionalButtons]; + [self showSelectedDotView]; + } andCompletion:^{ + if (counterCurrentValue == self.counter) { + if ([self.delegate respondsToSelector:@selector(tabBarViewDidExpand:)]) { + [self.delegate tabBarViewDidExpand:self]; + } + self.isAnimated = NO; + } + }]; +} + +- (void)collapse { + self.isFinishedCenterButtonAnimation = NO; + self.animatingState = YALAnimatingStateCollapsing; + self.state = YALStateCollapsed; + + if ([self.delegate respondsToSelector:@selector(tabBarViewWillCollapse:)]) { + [self.delegate tabBarViewWillCollapse:self]; + } + + __block NSUInteger counterCurrentValue = self.counter; + + [CATransaction transactionWithAnimations:^{ + self.isAnimated = YES; + [self animateTabBarViewCollapse]; + [self showExtraLeftTabBarItem]; + [self showExtraRightTabBarItem]; + [self animateCenterButtonCollapse]; + [self hideSelectedDotView]; + [self animateAdditionalButtons]; + } andCompletion:^{ + if (counterCurrentValue == self.counter) { + if ([self.delegate respondsToSelector:@selector(tabBarViewDidCollapse:)]) { + [self.delegate tabBarViewDidCollapse:self]; + } + } + self.isAnimated = NO; + }]; +} + +- (void)hideSelectedDotView { + UIView *previousSelectedDotView = self.allAdditionalButtonsBottomView[self.selectedTabBarItemIndex]; + previousSelectedDotView.hidden = YES; + [self.allAdditionalButtonsBottomView replaceObjectAtIndex:self.selectedTabBarItemIndex withObject:previousSelectedDotView]; +} + +- (void)showSelectedDotView { + UIView *previousSelectedDotView = self.allAdditionalButtonsBottomView[self.selectedTabBarItemIndex]; + previousSelectedDotView.hidden = NO; + [previousSelectedDotView.layer addAnimation:[CAAnimation showSelectedDotAnimation] forKey:nil]; + [self.allAdditionalButtonsBottomView replaceObjectAtIndex:self.selectedTabBarItemIndex withObject:previousSelectedDotView]; +} + +#pragma mark - Animations + +- (void)animateAdditionalButtons { + for (UIView *button in self.allAdditionalButtons) { + if (button.hidden) { + [button.layer addAnimation:[CAAnimation animationForAdditionalButton] forKey:nil]; + } + + button.hidden = !button.hidden; + } +} + +- (void)animateTabBarViewExpand { + CAAnimation *animation = [CAAnimation animationForTabBarExpandFromRect:self.collapsedBounds toRect:self.expandedBounds]; + animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + [self.mainView.layer.mask addAnimation:animation forKey:nil]; +} + +- (void)animateTabBarViewCollapse { + CAAnimation *animation = [CAAnimation animationForTabBarCollapseFromRect:self.expandedBounds toRect:self.collapsedBounds]; + animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; + [self.mainView.layer.mask addAnimation:animation forKey:nil]; +} + +- (void)showExtraLeftTabBarItem { + [UIView animateWithDuration:kYALShowExtraTabBarItemViewAnimationParameters.duration + delay:kYALShowExtraTabBarItemViewAnimationParameters.delay + usingSpringWithDamping:kYALShowExtraTabBarItemViewAnimationParameters.damping + initialSpringVelocity:kYALShowExtraTabBarItemViewAnimationParameters.velocity + options:kYALShowExtraTabBarItemViewAnimationParameters.options + animations:^{ + self.extraLeftButton.center = CGPointMake(CGRectGetWidth(self.extraLeftButton.frame) / 2.f + self.offsetForExtraTabBarItems, self.extraLeftButton.center.y); + } completion:NULL]; + + CAAnimation *animation = [CAAnimation animationForExtraLeftBarItem]; + [self.extraLeftButton.layer addAnimation:animation forKey:nil]; +} + +- (void)showExtraRightTabBarItem { + [UIView animateWithDuration:kYALShowExtraTabBarItemViewAnimationParameters.duration + delay:kYALShowExtraTabBarItemViewAnimationParameters.delay + usingSpringWithDamping:kYALShowExtraTabBarItemViewAnimationParameters.damping + initialSpringVelocity:kYALShowExtraTabBarItemViewAnimationParameters.velocity + options:kYALShowExtraTabBarItemViewAnimationParameters.options + animations:^{ + self.extraRightButton.center = CGPointMake(CGRectGetWidth(self.frame) - CGRectGetWidth(self.extraRightButton.frame) / 2.f - self.offsetForExtraTabBarItems, self.extraRightButton.center.y); + } completion:NULL]; + + CAAnimation *animation = [CAAnimation animationForExtraRightBarItem]; + [self.extraRightButton.layer addAnimation:animation forKey:nil]; +} + +- (void)hideExtraLeftTabBarItem { + [UIView animateWithDuration:kYALHideExtraTabBarItemViewAnimationParameters.duration + animations:^{ + self.extraLeftButton.center = CGPointMake( - CGRectGetWidth(self.extraLeftButton.frame) / 2.f, self.extraLeftButton.center.y); + }]; +} + +- (void)hideExtraRightTabBarItem { + [UIView animateWithDuration:kYALHideExtraTabBarItemViewAnimationParameters.duration + animations:^{ + self.extraRightButton.center = CGPointMake(self.extraRightButton.center.x + CGRectGetWidth(self.extraRightButton.frame) + self.offsetForExtraTabBarItems, self.extraRightButton.center.y); + }]; +} + +- (void)animateCenterButtonExpand { + CAAnimation *animation = [CAAnimation animationForCenterButtonExpand]; + [self.centerButton.layer addAnimation:animation forKey:nil]; +} + +- (void)animateCenterButtonCollapse { + CAAnimation *animation = [CAAnimation animationForCenterButtonCollapse]; + [self.centerButton.layer addAnimation:animation forKey:nil]; +} + +#pragma mark - Mutators + +- (void)setCollapsedFrame:(CGRect)collapsedFrame { + _collapsedFrame = collapsedFrame; + + self.collapsedBounds = ({ + CGRect collapsedBounds = collapsedFrame; + collapsedBounds.origin = CGPointZero; + collapsedBounds.origin.x = CGRectGetWidth(self.expandedFrame) / 2 - CGRectGetWidth(collapsedBounds) / 2; + collapsedBounds; + }); + [self updateMaskLayer]; +} + +- (void)setExpandedFrame:(CGRect)expandedFrame { + _expandedFrame = expandedFrame; + + self.expandedBounds = ({ + CGRect expandedBounds = expandedFrame; + expandedBounds.origin = CGPointZero; + expandedBounds; + }); + [self updateMaskLayer]; +} + +#pragma mark - Private + +- (void)updateMaskLayer { + self.mainView.layer.mask = ({ + CAShapeLayer *layer = [CAShapeLayer new]; + CGRect rect = (self.state == YALStateExpanded) ? self.expandedBounds : self.collapsedBounds; + + layer.path = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:rect.size.height / 2].CGPath; + + layer; + }); +} + +@end diff --git a/Unit-2-Journal/Pods/FoldingTabBar/LICENSE b/Unit-2-Journal/Pods/FoldingTabBar/LICENSE new file mode 100644 index 0000000..01ace4b --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Yalantis + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/Unit-2-Journal/Pods/FoldingTabBar/README.md b/Unit-2-Journal/Pods/FoldingTabBar/README.md new file mode 100644 index 0000000..ca5f422 --- /dev/null +++ b/Unit-2-Journal/Pods/FoldingTabBar/README.md @@ -0,0 +1,160 @@ +# FoldingTabBar.iOS + +Folding Tab Bar and Tab Bar Controller + +Made in [![Yalantis](https://raw.githubusercontent.com/Yalantis/FoldingTabBar.iOS/master/Example/Example/Resources/Images/badge_orage_shadow.png)](http://yalantis.com/?utm_source=github) + +Inspired by [this project on Dribbble](https://dribbble.com/shots/2003376-Tab-Bar-Animation) + +Also, read how it was done in our [blog](http://yalantis.com/blog/how_we_created_tab_bar_animation_for_ios/?utm_source=github) + +![Preview](https://d13yacurqjgara.cloudfront.net/users/495792/screenshots/2003376/tab_bar_animation_fin-02.gif) + + +## Requirements +iOS 7.0 + +## Installation + +####[CocoaPods](http://cocoapods.org) +```ruby +pod 'FoldingTabBar', '~> 1.0.1' +``` + +####Manual Installation + +Alternatively you can directly add all the source files from FoldingTabBar folder to your project. + +1. Download the [latest code version](https://github.com/Yalantis/FoldingTabBar.iOS/archive/master.zip) or add the repository as a git submodule to your git-tracked project. +2. Open your project in Xcode, then drag and drop all the folder directories in FoldingTabBar folder onto your project (use the "Product Navigator view"). Make sure to select Copy items when asked if you extracted the code archive outside of your project. + + +##Introduction + +####YALFoldingTabBarController +`YALFoldingTabBarController` is a subclass of `UITabBarController` with custom animating `YALFoldingTabBar`. + +####YALFoldingTabBar +YALFoldingTabBar is a subclass of a standard UIView. We wanted to make this component expand and contract in response to a user tapping. When the component is closed you can only see a central button (“+”). When tapping on it, our custom Tab Bar expands letting other tabBarItems appear, so that the user can switch the controllers. + +Each separate tabBarItem can have two additional buttons on the left and right. These buttons can be used to let a user interact with a selected screen on the YALFoldingTabBarController without even having to leave it. + +####YALTabBarItem +`YALTabBarItem` is a model to configure your tab bar items with images. + + +##Usage + +Option 1: The simplest way is to use `YALFoldingTabBarController` as it is. You can also subclass it if you indend to change the default behaviour. + +Option 2: You can write your own implementation of `UITabBarController `and use `YALFoldingTabBar` or its subclass. + +Here is an instruction of how to use `YALFoldingTabBarController` in the Storyboard. + +1. Add native `UITabBarController` to the storyboard, establish relationships with its view controllers. +2. Choose `YALFoldingTabBarController` as custom class for `UITabBarController`. +3. In AppDelegate method take out an instance of `YALFoldingTabBarController` from the window.rootViewController and supply it with images for the left and right tabBarItems respectively. Also you can add your own image for the center button of `YALFoldingTabBar`. + +```objective-c + YALFoldingTabBarController *tabBarController = (YALFoldingTabBarController *) self.window.rootViewController; + + //prepare leftBarItems + YALTabBarItem *item1 = [[YALTabBarItem alloc] initWithItemImage:[UIImage imageNamed:@"nearby_icon"] + leftItemImage:nil + rightItemImage:nil]; + + + YALTabBarItem *item2 = [[YALTabBarItem alloc] initWithItemImage:[UIImage imageNamed:@"profile_icon"] + leftItemImage:[UIImage imageNamed:@"edit_icon"] + rightItemImage:nil]; + + tabBarController.leftBarItems = @[item1, item2]; + + //prepare rightBarItems + YALTabBarItem *item3 = [[YALTabBarItem alloc] initWithItemImage:[UIImage imageNamed:@"chats_icon"] + leftItemImage:[UIImage imageNamed:@"search_icon"] + rightItemImage:[UIImage imageNamed:@"new_chat_icon"]]; + + + YALTabBarItem *item4 = [[YALTabBarItem alloc] initWithItemImage:[UIImage imageNamed:@"settings_icon"] + leftItemImage:nil + rightItemImage:nil]; + +``` + +If you want to handle touches on extra tabBarItems import `YALTabBarInteracting` protocol to the subclass of the proper `UIVIewController` and implement these methods: + +```objective-c +- (void)extraLeftItemDidPressed; +- (void)extraRightItemDidPressed; +``` + If you want to observe contracting and expanding animation states in `YALFoldingTabBar` the following methods of `YALTabBarInteracting` protocol can be implemented: +```objective-c +- (void)tabBarViewWillCollapse; +- (void)tabBarViewWillExpand; + +- (void)tabBarViewDidCollapsed; +- (void)tabBarViewDidExpanded; +``` + +##Important notes +Because we changed the height of the default `UITabBar` you should adjust your content to the bottom of viewcontroller's superview, and ignore Bottom Layout Guide. You should also uncheck 'Under bottom bars' !['](http://i.stack.imgur.com/Owlcz.png) + +You can see how we did it on the example project. + +##Tips for customization +You can make the following configurations for custom tabBar: + +1) Specify height +```objective-c +tabBarController.tabBarViewHeight = YALTabBarViewDefaultHeight; +``` +2) Specify insets and offsets +```objective-c + tabBarController.tabBarView.tabBarViewEdgeInsets = YALTabBarViewHDefaultEdgeInsets; + tabBarController.tabBarView.tabBarItemsEdgeInsets = YALTabBarViewItemsDefaultEdgeInsets; + tabBarController.tabBarView.offsetForExtraTabBarItems = YALForExtraTabBarItemsDefaultOffset; + +``` +3) Specify colors +```objective-c + tabBarController.tabBarView.backgroundColor = [UIColor colorWithRed:94.0/255.0 green:91.0/255.0 blue:149.0/255.0 alpha:1]; + tabBarController.tabBarView.tabBarColor = [UIColor colorWithRed:72.0/255.0 green:211.0/255.0 blue:178.0/255.0 alpha:1]; +``` +4) Specify height for additional left and right buttons +```objective-c + tabBarController.tabBarView.extraTabBarItemHeight = YALExtraTabBarItemsDefaultHeight; +``` + +##License + + The MIT License (MIT) + + Copyright © 2015 Yalantis + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + + + + + + + + + diff --git a/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/CAAnimation+YALTabBarViewAnimations.h b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/CAAnimation+YALTabBarViewAnimations.h new file mode 120000 index 0000000..4300617 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/CAAnimation+YALTabBarViewAnimations.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/CATransaction+TransactionWithAnimationsAndCompletion.h b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/CATransaction+TransactionWithAnimationsAndCompletion.h new file mode 120000 index 0000000..6645404 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/CATransaction+TransactionWithAnimationsAndCompletion.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALAnimatingTabBarConstants.h b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALAnimatingTabBarConstants.h new file mode 120000 index 0000000..59a4e5b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALAnimatingTabBarConstants.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/Constants/YALAnimatingTabBarConstants.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALFoldingTabBar.h b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALFoldingTabBar.h new file mode 120000 index 0000000..7c9c72a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALFoldingTabBar.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALFoldingTabBarController.h b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALFoldingTabBarController.h new file mode 120000 index 0000000..8fb6aca --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALFoldingTabBarController.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALSpringAnimation.h b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALSpringAnimation.h new file mode 120000 index 0000000..3059fd1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALSpringAnimation.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALTabBarInteracting.h b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALTabBarInteracting.h new file mode 120000 index 0000000..87b5470 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALTabBarInteracting.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/Protocol/TabBarInteracting/YALTabBarInteracting.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALTabBarItem.h b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALTabBarItem.h new file mode 120000 index 0000000..d2b7d0a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/FoldingTabBar/YALTabBarItem.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/Model/TabBarItem/YALTabBarItem.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/CAAnimation+YALTabBarViewAnimations.h b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/CAAnimation+YALTabBarViewAnimations.h new file mode 120000 index 0000000..4300617 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/CAAnimation+YALTabBarViewAnimations.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/CATransaction+TransactionWithAnimationsAndCompletion.h b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/CATransaction+TransactionWithAnimationsAndCompletion.h new file mode 120000 index 0000000..6645404 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/CATransaction+TransactionWithAnimationsAndCompletion.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALAnimatingTabBarConstants.h b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALAnimatingTabBarConstants.h new file mode 120000 index 0000000..59a4e5b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALAnimatingTabBarConstants.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/Constants/YALAnimatingTabBarConstants.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALFoldingTabBar.h b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALFoldingTabBar.h new file mode 120000 index 0000000..7c9c72a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALFoldingTabBar.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALFoldingTabBarController.h b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALFoldingTabBarController.h new file mode 120000 index 0000000..8fb6aca --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALFoldingTabBarController.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALSpringAnimation.h b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALSpringAnimation.h new file mode 120000 index 0000000..3059fd1 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALSpringAnimation.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALTabBarInteracting.h b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALTabBarInteracting.h new file mode 120000 index 0000000..87b5470 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALTabBarInteracting.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/Protocol/TabBarInteracting/YALTabBarInteracting.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALTabBarItem.h b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALTabBarItem.h new file mode 120000 index 0000000..d2b7d0a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/FoldingTabBar/YALTabBarItem.h @@ -0,0 +1 @@ +../../../FoldingTabBar/FoldingTabBar/Model/TabBarItem/YALTabBarItem.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Manifest.lock b/Unit-2-Journal/Pods/Manifest.lock index 4f021dd..ebf21a8 100644 --- a/Unit-2-Journal/Pods/Manifest.lock +++ b/Unit-2-Journal/Pods/Manifest.lock @@ -19,6 +19,7 @@ PODS: - FBSDKCoreKit - FBSDKShareKit (4.7.0): - FBSDKCoreKit + - FoldingTabBar (1.0.1) - ISO8601DateFormatterValueTransformer (0.6.1): - RKValueTransformers (~> 1.1.0) - Parse (1.9.0): @@ -44,6 +45,7 @@ DEPENDENCIES: - FBSDKCoreKit (~> 4.7) - FBSDKLoginKit (~> 4.7) - FBSDKShareKit (~> 4.7) + - FoldingTabBar (~> 1.0.1) - Parse - RestKit/Testing (~> 0.24.0) @@ -53,6 +55,7 @@ SPEC CHECKSUMS: FBSDKCoreKit: eb580bfc2040ad44f4c0b4f4d0befb1d35bce59c FBSDKLoginKit: 01bce8dd3f3a26a023b0ba4ffdde7ef5062889fe FBSDKShareKit: 1f927bb05e4d36a99d5d5bf2f4b1ff294ce3e15c + FoldingTabBar: 3e04c49dbe2b02c529561a4182bf017b928d04d2 ISO8601DateFormatterValueTransformer: 52da467d6ec899d6aedda8e48280ac92e8ee97e6 Parse: 712efbc476d4f47b0f96b70db7e53101575753aa RestKit: 1987b5efef289c6b27bd980714d6ca48d3871b78 @@ -60,4 +63,4 @@ SPEC CHECKSUMS: SOCKit: c7376ac262bea9115b8f749358f762522a47d392 TransitionKit: 3a14b6acc7cf2d1dd3e454e24dbad1cfab9a1ef1 -COCOAPODS: 0.38.2 +COCOAPODS: 0.39.0 diff --git a/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj b/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj index 8fa11f6..db85125 100644 --- a/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj @@ -7,3778 +7,3902 @@ objects = { /* Begin PBXBuildFile section */ - 00535AC2B7EA20D7A306E029CAEC2EF4 /* PFAnalyticsController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB282470029D499E3074A164AABBC66C /* PFAnalyticsController.m */; }; - 006CF96B0EC8D4F5E5898DEE9891E373 /* PFOfflineObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 579EAC1B8D13822158FB03F012D3B85C /* PFOfflineObjectController.h */; }; - 008386D64340118381B5E74976611CFE /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = 49AA101256B7C595F77F9BA67DED0212 /* FBSDKWebDialogView.m */; }; - 00A6585F8ADCE867CC96F03DE0F8722A /* FBSDKAppInviteDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 0315685B7458D2A9C07F1B237F76CFF2 /* FBSDKAppInviteDialog.h */; }; - 00B7078D95685A047C5D6FFEF18D8C62 /* FBSDKLikeControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D3C379231F1FECE1C711149F33EBEFB /* FBSDKLikeControl.m */; }; - 00D7B126423D78CF3936664CEA3AE990 /* FBSDKLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = 06F0EB1FDCF792E30B358C159A66CE09 /* FBSDKLoginError.h */; }; - 018166E30D25E0D13BEA3E349F34A054 /* FBSDKAccessTokenCacheV3_17.h in Headers */ = {isa = PBXBuildFile; fileRef = A52CB1C60BA79230A59E65B9417DBEB7 /* FBSDKAccessTokenCacheV3_17.h */; }; - 01CE9AF82E8EDF5553D6BD60C15788C9 /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E3839692964A8570C65FDBF51FA010CE /* FBSDKGraphRequest+Internal.h */; }; - 0249DD298C4521858041ED1ABD27B4EB /* RKPathMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CFD6F4F94AD214D7B9CEF3544854F4D /* RKPathMatcher.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 02510F8446BAA50DDF30A10F1ECA9A6D /* RKTestNotificationObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = D497D888360D61A9F64F2DBB2A1FC8F0 /* RKTestNotificationObserver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 02B35C6C34045B1BF7204DFB7206A709 /* AFImageRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = BF7E4DF7E707F588FF550CDC66A6F7B7 /* AFImageRequestOperation.h */; }; - 02D6509EB39ED2BFBF6292D674D0C993 /* PFSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A7EE3C6BF7D5145AA91E9DE69EC0268 /* PFSession.m */; }; - 03510AEE10F8AFC7A9426E3FFBD758EE /* FBSDKSendButton.h in Headers */ = {isa = PBXBuildFile; fileRef = DFCBF9D0B251D3EABC70AD75A30E8294 /* FBSDKSendButton.h */; }; - 0417C2D8751D5D954ABBF8750A4DBA41 /* PFRole.m in Sources */ = {isa = PBXBuildFile; fileRef = C44F364C931B164F6223FDD37734D4B3 /* PFRole.m */; }; - 0563F4EED0D395AB1CE1203D89F71AA8 /* FBSDKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = A808BCEC34959F6ECE35E478017AAE04 /* FBSDKMacros.h */; }; - 05D4DCDBCD5FC6951A00E3EC1B772791 /* PFPinningEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 16ECC679D7E6944181A4143EBFFDF2B6 /* PFPinningEventuallyQueue.h */; }; - 05EEE4C30056440EC8E7A2CF218EB8B0 /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 88ED45C6893FA0E82BD12E765DBC00CA /* FBSDKProfile.h */; }; - 064DCF0B2619737983918A9B8B8CDBED /* PFCloud.h in Headers */ = {isa = PBXBuildFile; fileRef = 016D06C44A3331089F9E5A1C6DFB4678 /* PFCloud.h */; }; - 06B5B0BE46804817F2BA234F2F21AB40 /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F8E73E13D56D4420C7C239F8B5BF990 /* FBSDKAppEventsState.h */; }; - 0720845388625ACACFE5E090292E8C43 /* BFWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = F2C4601420612A6E42D46B435019EBC8 /* BFWebViewAppLinkResolver.h */; }; - 0722E90FFB0E0659D82D8E560CA2D2F1 /* TKStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = 4391678EE65327EC09710A2246AE3738 /* TKStateMachine.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 07B0FBE4D0E350E22E5F76033341F2AE /* ParseModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FFE01FDB1315C89C0A38D8E4378E0DF /* ParseModule.m */; }; - 08EA08F97E9E3BDA10151C17762295C3 /* PFKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 437CBC5E7E1B50CC1E72F15C88FF6AC7 /* PFKeychainStore.h */; }; - 09219068B5A97176CB293592657A1C1F /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C37F0ED993AA0D0D75072F2D2A6865AC /* Security.framework */; }; - 093B3BC924DCC60628EB3C4B02D53072 /* FBSDKTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = F32F686BFA58B3430620EE17161144FE /* FBSDKTooltipView.h */; }; - 095B67BB026AEC6B803356F0357D61B0 /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DF7C4CE6EE936098ABB3AC172D7B2FF1 /* AFImageRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 0978AC4917B7960598D540B0BCB407A4 /* PFPinningObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = E305C7FF3E6F92A0B09870D8A60E8D38 /* PFPinningObjectStore.h */; }; - 099082A1C7FAABBFBA2B4C428FF899F5 /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EB9B4230ED62ACBBFE1640BB61C32F /* BFCancellationToken.h */; }; - 0A6BF9949B8BEF6ED33EBBB89D3733DC /* FBSDKShareLinkContent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 99FF411F081193D28CAB98DD501F9F72 /* FBSDKShareLinkContent+Internal.h */; }; - 0B42591A57B35D10FAE5F939603C105F /* FBSDKAppGroupAddDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = DDE80DA7A434D17F0D915E284F20436A /* FBSDKAppGroupAddDialog.m */; }; - 0B6D9B4A94DAA97E2060C438E2866348 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E156596C9F5FF570264078E49A4643D4 /* AFNetworkActivityIndicatorManager.h */; }; - 0B981311B68BFD9DD86BC7C5598B56DF /* BFCancellationTokenRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 23ED3F16546340CE6D8F500DF0D81FA7 /* BFCancellationTokenRegistration.h */; }; - 0BDD8DFEDF81D4BEF214770B62B2DA74 /* FBSDKShareVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = 19DB73C3D0C75D9D0E53F4111D417C01 /* FBSDKShareVideo.h */; }; - 0C2BF68FAB2FC4C272026B79778040EC /* PFObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 23887764BFA845B70B1FFB0552AC2706 /* PFObjectController.h */; }; - 0CA715FE5F1135697D48CEADCCDF695E /* PFUserConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D47AE11AD48DDD6598E018331299E3 /* PFUserConstants.h */; }; - 0D3178232D43DE91EDF29D61D52D0DEF /* PFHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 010267A36F8E4347A122ABBE2CC67F43 /* PFHash.h */; }; - 0D4B5945A05AB5823580A86F062419DF /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D50D28CFFDB33D36C5123FE9819503C /* FBSDKBridgeAPIRequest.h */; }; - 0D7756638487F105933CDA9F734F7846 /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C58296A347F3D84D11A281BDEFE97B5 /* FBSDKBridgeAPIProtocol.h */; }; - 0DD8321B7E4063220C99652AD25B964C /* PFDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = A0D0E260844C900A61F03ACD640BF515 /* PFDecoder.h */; }; - 0DE5C9C558993B91C4234B0C04AF1E05 /* PFUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = C092CD3F2AEE6BAC465A007801D8D91A /* PFUserState.h */; }; - 0DEE41F44DA5A7BFBE8FE62391313D9D /* PFConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3951D3E423BE2ABCBF9DE0E746CE311B /* PFConfigController.h */; }; - 0E2C819942449D83510F76BE41B000AB /* Network.h in Headers */ = {isa = PBXBuildFile; fileRef = F6235B81BCC7427EC393417D0676C7DD /* Network.h */; }; - 0E6394122D9ED32FE89BDEFDF03C5562 /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = A029888328B7A6D3EFA37ED1B3C36DAE /* FBSDKAppEventsUtility.h */; }; - 0F3466A31A5A04E235B74EAF5ACFC3F8 /* PFMulticastDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 52E8F3EA417ABBE16B32E6AD85C0A91E /* PFMulticastDelegate.m */; }; - 0FAB264DFDA1EACC55A0E8E5646B7528 /* PFUserFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E0204ED6BDC62B268724EB7F3257243 /* PFUserFileCodingLogic.h */; }; - 0FABEDED805FF3C8419382ECF57A04E8 /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D0E4808B55472B808C0B84583C9BDD1 /* FBSDKGraphRequestDataAttachment.m */; }; - 0FD22CC68EB137F144F30A3A882E6B78 /* RKMappingOperationDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EE325AB5D11F8E0314EC1A65AFC915A /* RKMappingOperationDataSource.h */; }; - 0FD5249BE2888A4A4402696105ED8527 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DDCD516E785CE5AEDF724D7D5383676 /* FBSDKBridgeAPIProtocolWebV1.m */; }; - 0FE13D468968D686BA4AEDE0ED6B2130 /* FBSDKShareVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 73305F9BCF2563CCA2E4C15B8DDCFD68 /* FBSDKShareVideo.m */; }; - 10AABB95160AC54105C043949E1933DC /* PFPinningObjectStore.m in Sources */ = {isa = PBXBuildFile; fileRef = C3ADC7027A54E385AA38C96D3138EFFF /* PFPinningObjectStore.m */; }; - 10C2B5930F1B78F40CD24647D0816C15 /* FBSDKLoginButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A42C8D72C0DD9F94735982945AB06235 /* FBSDKLoginButton.m */; }; - 10E0911E33686C368550FF5884C27A5B /* FBSDKBridgeAPICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = D3FDBE0B0295691A9DA68BB91774B2DF /* FBSDKBridgeAPICrypto.h */; }; - 10EE3AADC2DDD3110F87A3F3A0AF7095 /* PFProductsRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 853ED2ED8383CAC8B42216E034C32866 /* PFProductsRequestHandler.m */; }; - 1234595A0A3952AF80B9D7B2A706D42C /* lcl_RK.m in Sources */ = {isa = PBXBuildFile; fileRef = E11FE2BB216DD98CBF3928F8E5E9A85B /* lcl_RK.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 12AB053235C6B70B0EB43476DDA2452E /* PFPinningEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AE5F75C04FAC19C4B94C834EC0C4E96 /* PFPinningEventuallyQueue.m */; }; - 12C286C63ABAD25C2339EA0D0A5C5D02 /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 06ED326096FE698B59E6B3A44613D460 /* FBSDKServerConfiguration.h */; }; - 130EDBB373B792D2E24C971FD38312DD /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B407FBFC5F897F4E485E1E0002B506FD /* AFXMLRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 135F87CE326B1BF6A73827E9F6ED971B /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 53DAE1074125BBBF142D3C53E50E06F1 /* FBSDKAppEvents+Internal.h */; }; - 1428029B7410F86E2E8670D8F2757842 /* FBSDKLoginConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = B43EF13062A276FCA06A9386DCA1F36F /* FBSDKLoginConstants.h */; }; - 150E35C95B7ED2A55FADB9990FDB22E9 /* PFFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = 80535C82708945F05047D894446087A4 /* PFFileState.m */; }; - 1559BC15F9F341A9E05942AD706D0833 /* PFMutableACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = F719BD99BA3538CAF974528DD1BA9EAF /* PFMutableACLState.m */; }; - 15978EA5F7C6F2A163C5083229330300 /* FBSDKShareVideoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9605F7221341E3EA07630ABF2DE6BC6F /* FBSDKShareVideoContent.h */; }; - 15A6C192D5AF8B7E13C7446853ECFBAD /* PFBase64Encoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 23D64D6AB75296AE7976248043BC6313 /* PFBase64Encoder.m */; }; - 15EE0A24606B3F4E67CB9D72923B661C /* PFFileController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B92CFB0FD23A754847A9505BDCE2BA5 /* PFFileController.h */; }; - 162784BAD212B53DA133219EA676ECD6 /* RKHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F33AA92E57D33A8DE7D71147E3BBDD3 /* RKHTTPRequestOperation.h */; }; - 165AFC43C7723E5B35C8E9DB4A1E119B /* PFFileStagingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DD35C52996E74EF6D68ED8C8CB3C5B1 /* PFFileStagingController.h */; }; - 16A3DD222EB47C7F95A50C5CA137F259 /* RKTestFixture.h in Headers */ = {isa = PBXBuildFile; fileRef = E51BB433D7AADF8C023202546330704A /* RKTestFixture.h */; }; - 16C27A1CBCD5A7969B2A158858A2CC9B /* FBSDKAppGroupJoinDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 35438CE7344049DBB7B9FFEB80DB1414 /* FBSDKAppGroupJoinDialog.m */; }; - 16CB7796FFD9018113359615F7C4713F /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BE5A10627DC0B9C01F875BD06336D9E /* BFAppLink_Internal.h */; }; - 17BCC234EFBB7A73B92E922E5104E5AE /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AF2FF1B953178FD56002A938919F24E /* BFAppLinkReturnToRefererView.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 18274740107DE9B259B065F47C67FEA7 /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 31B4E41F62E37AA98F6E9D5C10E984D0 /* FBSDKAppEventsDeviceInfo.m */; }; - 182D77EB8C269AD7EDAC680AD93DB72A /* PFCloudCodeController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6C82743CE345D0715A174740BEB724A /* PFCloudCodeController.m */; }; - 18CF12E7C98D66CE94DBE82619460126 /* RKOperationStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = 103E4A41DD6EB7EE5C4377711291077A /* RKOperationStateMachine.h */; }; - 18FD711698AFD5B3D0EC8082974B4271 /* Parse_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 8188F44B82CFACD44B2AA378C7BEEE4B /* Parse_Private.h */; }; - 19033C9781DE147AFF45BF404A35C4DA /* PFAnalyticsUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = BA77BF64FAFBF3F9E5DB590A4B0FB4A9 /* PFAnalyticsUtilities.h */; }; - 19E8ADBADA6FB3E090DE63349A607C83 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BAAF0724B9090137B718DFDA6EB9C1C7 /* MobileCoreServices.framework */; }; - 1A074041FA5308016DBEE2905C5EB2A5 /* RKNSJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = AA62DC87D5F1898752152729F580A3A0 /* RKNSJSONSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 1A09E869300C387E669CD4D45F577CC0 /* PFMutableQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = 10837937B6B53962D8F7B9D3F8E3EE03 /* PFMutableQueryState.m */; }; - 1AC411923BA89287B42855F90F199399 /* PFCommandRunningConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = CA33FED366B628BCA0A5D7DFD91E87D9 /* PFCommandRunningConstants.m */; }; - 1BF120A6893C7F1A47A8B6545D5BDF1A /* PFRESTAnalyticsCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 562E8BAC97316F785846B93E33C496DD /* PFRESTAnalyticsCommand.m */; }; - 1C56EBB47779DB8E4FCF3FA690AD04BE /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = DC2CCF0D50C6CF8EA37A8C6EECE1581E /* BFURL.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 1C61916D50D61F450ED07778959FD4EE /* PFCurrentConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D53FBFB124273A95BC60A578E870E0C /* PFCurrentConfigController.h */; }; - 1C798778DB7297C94C49F9B3CB284F50 /* PFRole.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C3140134D0A6A0E556CA3A287EC0FF5 /* PFRole.h */; }; - 1C826C6D676AF5E527AD50D044046E33 /* PFMultiProcessFileLockController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9779A223D892C242F0118CAD43BA556F /* PFMultiProcessFileLockController.m */; }; - 1CC3FC978D22B673543B66F14E3586CE /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = 4241AE7BF35421577B79454BFEF8418F /* FBSDKMath.m */; }; - 1CCC648B56B68EAD6BA5F7616615C0A3 /* PFSQLiteStatement.m in Sources */ = {isa = PBXBuildFile; fileRef = 0614A8CED09956ACEF0CD07B5F13C94F /* PFSQLiteStatement.m */; }; - 1D220DA77D9B24A58DE5F500242C4014 /* BFDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 26E148529A5018FB0DBA0E6E6EF425A7 /* BFDefines.h */; }; - 1D67DA48760D20CA411641C9102136D2 /* FBSDKLiking.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E5EF79FF8D3C83E7DCBD82CE96B138E /* FBSDKLiking.h */; }; - 1E4C78412D3C24B2A1993006925E1517 /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D8623E61A0D98F47738887CE7BE2378 /* FBSDKMutableCopying.h */; }; - 1E8825EF12CDA16FB2E5453FFDBCC311 /* FBSDKURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 818CFC14E623AB5BE69BCA0E501ABFD6 /* FBSDKURLConnection.h */; }; - 1EA875D07292CF4D051DB0E0B9F008DC /* FBSDKLikeDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = E060B56260BC85ECD94761E793A08F02 /* FBSDKLikeDialog.h */; }; - 1FC6D72957CEF9A24C72C4F8DFD41502 /* PFPropertyInfo_Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A2458DB30CB9D1EBB4393A5B3933BDA /* PFPropertyInfo_Runtime.m */; }; - 201C1B5EA1CD292E1B6B811C9D1A765B /* FBSDKLoginCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = F03034CE4131076A48731504480259EB /* FBSDKLoginCompletion.m */; }; - 205B45504EF447096404D53C3E5F07FE /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = A1A84243D8AF41257B228911CE638D24 /* FBSDKMonotonicTime.m */; }; - 20A9B114B37DD905332B7D23EF6F1A5E /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = BBA379404F39E04206E50A2AE079F9AE /* FBSDKBridgeAPIProtocolWebV1.h */; }; - 214D9B21E9B0C005DAA26F13F39C9122 /* Parse.h in Headers */ = {isa = PBXBuildFile; fileRef = E42FE23DCA3EFFB8F6025F9F9A8B3497 /* Parse.h */; }; - 21C047E0236B40B41B98B4AB051559F0 /* FBSDKGameRequestContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 54920BD88D6A715796BB19A547213023 /* FBSDKGameRequestContent.m */; }; - 21D9580410D5D36914C1738EF4824FE5 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE00E564F591F731C2B1E11065E0ACF7 /* CoreGraphics.framework */; }; - 221012772EFFCB2257ABC519107D42D4 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = DFC853444423A2B6AFB3F150BD3A93F8 /* BFCancellationTokenSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 22BC87A9F5080A50780C32CCE2555D4A /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A90605386336758A5E6828DC0AB5D68 /* FBSDKDialogConfiguration.h */; }; - 233A654EC18BADBA2DFBD887A993CFAF /* FBSDKLoginManagerLoginResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 908DBE6B62FE286E8E2B65AB8471172C /* FBSDKLoginManagerLoginResult+Internal.h */; }; - 233B0108145788C73B6DEE12D030FE98 /* PFRESTConfigCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B2BBEF7F76A0A9700A14D2C55164268 /* PFRESTConfigCommand.h */; }; - 2355CEA58CC12AC348752E940F41C856 /* FBSDKLikeBoxBorderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6358EB9DDDA9062C6B886A954CBC76D9 /* FBSDKLikeBoxBorderView.m */; }; - 2362D4F041145FA0576E5E6908705963 /* FBSDKLoginUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = D19C9E56F232605C57E9A412AF3031FA /* FBSDKLoginUtility.m */; }; - 23D8FDFC8CE4359208A7EF38A5FF1035 /* PFPushManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 135CD2563AE865A18CBC5672956D2875 /* PFPushManager.h */; }; - 23F002C90710E0EC3D183E8683FE8765 /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4214851D9461FC93F660FCB73142859E /* FBSDKCoreKit-dummy.m */; }; - 23F64C0DEB9100774DC815861B20FF24 /* RKObjectParameterization.h in Headers */ = {isa = PBXBuildFile; fileRef = FFEAA8C456F1D711FDBADC3559935B4B /* RKObjectParameterization.h */; }; - 242C15C9117EAC106F61B34CC69472D1 /* PFFileState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 922185D0977C1F99BFB47CC3EB889F72 /* PFFileState_Private.h */; }; - 243F5CF4634218E9A2B8CB8C58CA5B5C /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = 42849FC04B9D5B542DF3CC22E779A9A1 /* FBSDKTriStateBOOL.m */; }; - 247B8D0D633AEFC395D2B80429B1A91C /* PFPin.h in Headers */ = {isa = PBXBuildFile; fileRef = 587669D43EA945644A3A4CF47F37098B /* PFPin.h */; }; - 253CCABFC921C06E3305CE89A60B9181 /* PFCurrentUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 87B65FF1A2D48D2F1F0BF29F0A571A28 /* PFCurrentUserController.h */; }; - 2564365FB5C724F430D231922B775D60 /* RKPathMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 2109F27F00016BC697F3694A3C8A4EF0 /* RKPathMatcher.h */; }; - 256CEC5BA81F9DF5DDADBCCFBAC3CBBD /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 184E2F2A8FAA80A676143A0D7ED71EA6 /* BFMeasurementEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 25E65D69B09FF84C6B52973D81385EAD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 26352EBD95DA14640C8750C915C72984 /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = 24255CB705666DD05FB446873255ED8B /* FBSDKBridgeAPIProtocolType.h */; }; - 266D1F445295A861003F06F357CAB18B /* PFPushController.m in Sources */ = {isa = PBXBuildFile; fileRef = 83FAF66089BB2B25DAD32F318716E9B5 /* PFPushController.m */; }; - 2676FFF359D8A0EEE5C4B5A999B5B8F8 /* PFRESTQueryCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DE77267B05353B27C048F5B04016566 /* PFRESTQueryCommand.h */; }; - 2694BF27DA873BF154BE842A4638CC6D /* PFOfflineQueryLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D6E9F5DDD85504DE6DDBECF9E39A959 /* PFOfflineQueryLogic.m */; }; - 271E62B60998688EC159938AF3432FDE /* PFMutableObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = AE308F7FD55A37D38ABFDCED9CF0A8B3 /* PFMutableObjectState.h */; }; - 2773A2DA8DBDF9775A0F3853F3032127 /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = A460B6A4FC8055E468FF739FF0D108FE /* FBSDKAppLinkResolver.h */; }; - 27746C9143CAB9F08BA89403D37A40DC /* PFApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = DD1DBE77FAE408E2C2A7ED2A4C1C8A7A /* PFApplication.h */; }; - 27CB1B6BD10BBF2C8B1581E3C2A67020 /* RKBenchmark.h in Headers */ = {isa = PBXBuildFile; fileRef = B3430C5AC8208C2B671B4D7823955F60 /* RKBenchmark.h */; }; - 282AD9B008CDB7CA432F3F2551B2F38A /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 5923B48367DC6DA262FA7C70FFE94DB0 /* FBSDKTypeUtility.m */; }; - 282F90745F7864ABC8C81BFE6D755924 /* lcl_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D97C25717E3E4851FE4EFE780A45434 /* lcl_RK.h */; }; - 28CFDEF753D0D6972BAE795E1CF43C2C /* FBSDKAccessTokenCacheV3_21.m in Sources */ = {isa = PBXBuildFile; fileRef = A38B68BCFCED22FDC00C7FD4F3FFA717 /* FBSDKAccessTokenCacheV3_21.m */; }; - 29281066B368FEBFC9897E5C625ABBF0 /* PFURLSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 18307BC0EA14A69F26486ACEC94450C2 /* PFURLSession_Private.h */; }; - 29665B4CBF57ED49FE333D5DA6FE41D7 /* AFHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = B50ED7330E240BB1A16E10047FCC8E37 /* AFHTTPClient.h */; }; - 2A6AE3E4DDEEE593F6653E4A3A2E747E /* FBSDKAccessTokenCacheV3.h in Headers */ = {isa = PBXBuildFile; fileRef = CC2CE8BA55B6B6E6E126D87B37D05550 /* FBSDKAccessTokenCacheV3.h */; }; - 2AAF9F612DA70EAD241A04B84E617778 /* PFLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = D974B883607CC6537A01E19606D22B95 /* PFLogger.h */; }; - 2AB6F30B33BF99DB942666A62EA67837 /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 33AA2846801F30C2C7C711FD553C91A2 /* FBSDKBase64.m */; }; - 2B019E06A434B73512E960B5037F458D /* PFErrorUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D575196CED3C1360574CAC6B7FE08BE /* PFErrorUtilities.m */; }; - 2B03BE59ECF8AB8DB61087F8F4853534 /* RKDictionaryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = F008693162E318C7C2752AD302CFB95E /* RKDictionaryUtilities.h */; }; - 2B15B8C342792ECC98874B1C00037446 /* FBSDKLoginManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A2ACF4A5ED3EA611505A0F4017817898 /* FBSDKLoginManager+Internal.h */; }; - 2C46FF817FBEDF337CE624F0A893F0A6 /* PFFile_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F0211D9EDFAAA5807FCBE1B8C8F4B662 /* PFFile_Private.h */; }; - 2C82478070852B2BFF637238B76D1102 /* RKManagedObjectRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 773B71C6DCFE021055288283663560C9 /* RKManagedObjectRequestOperation.h */; }; - 2CD1ECA00B5641FC62A5681022C698F8 /* RKObjectManager.h in Headers */ = {isa = PBXBuildFile; fileRef = ECBDBCED6B21C2F082743CDE93ECBC76 /* RKObjectManager.h */; }; - 2CD8A153F9E6D040F47CB488191B4675 /* RKDynamicMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 98D59999C2F13A02F8927597F85000C8 /* RKDynamicMapping.h */; }; - 2CD9A0FAC248398D39B7BC82F3ED4BF7 /* PFFileDataStream.h in Headers */ = {isa = PBXBuildFile; fileRef = E8E31EEB8DA53180013FB1201C82EE81 /* PFFileDataStream.h */; }; - 2D37F6D243C16B2F3D8961995C27F706 /* FBSDKLoginKit.h in Headers */ = {isa = PBXBuildFile; fileRef = C771ECF49E63DA4D6AD0B964CDA4DC94 /* FBSDKLoginKit.h */; }; - 2E001B9E32766B89D068E48697778482 /* RKMIMETypes.h in Headers */ = {isa = PBXBuildFile; fileRef = E7C4A5E56ABED18C3E81AB6301A8CB78 /* RKMIMETypes.h */; }; - 2E10AF5AABE5FF7C918CC397AEEC1C7B /* PFSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EA5A298BA6815375F9BBA4D48B6E32C /* PFSession.h */; }; - 2E2E2877A7093FCC57D39DEEE91F34F1 /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CD896F18B0B8E074D5B6AC246B7278 /* FBSDKProfile.m */; }; - 2E3451E0F9E899B3485E85A091EBCB90 /* FBSDKLoginManagerLoginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF337FAA2E9DD4BA7619CC58CCFEE27 /* FBSDKLoginManagerLoginResult.m */; }; - 2E353986482700CBC86E955C4DDCFA0E /* PFPush.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD7322E2971743B34A65BD010CC3165 /* PFPush.m */; }; - 2E5619D195A0E92BAB39F541E7AD328E /* PFInstallationIdentifierStore_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F97330408CBCB9866B2403F56722EED /* PFInstallationIdentifierStore_Private.h */; }; - 2F3CC7CAE02FD6568812F880AA12E4F3 /* AFJSONRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = FB4066FE555FBBC7224915F81DDF0E65 /* AFJSONRequestOperation.h */; }; - 2F6E21DBD92BD6D98388D97F614B56AD /* PFObjectSubclassingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CE58398E0BE8D266923D16A28663EB6 /* PFObjectSubclassingController.m */; }; - 2F7B41D4DACC8C02B4AE6A30485A3911 /* PFDefaultACLController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E290B1D6DDD48B2FD0139DCD4B3348D /* PFDefaultACLController.h */; }; - 30231E4630A4A71D7311DD4463E21F51 /* PFInternalUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = A3B19063FF0B2F212D30AA107E73EAF3 /* PFInternalUtils.m */; }; - 3098ABDB8CEC8C01686E276C1935E3DE /* FBSDKSystemAccountStoreAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 45A6C38D859E4B8E2327A07A3AD329D0 /* FBSDKSystemAccountStoreAdapter.m */; }; - 30B5221471557DA4D9A2189E52471931 /* FBSDKShareDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F5835DFBC8A6E5D025F957021AE5352 /* FBSDKShareDialog.m */; }; - 3118E1B0367B386FAADF624C65F9668D /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 2651DC8D21016E6D886F1577AAA22972 /* FBSDKGraphErrorRecoveryProcessor.m */; }; - 314069A93A029213626B93EB93610079 /* RKMIMETypeSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = F43593C0DC2EA028CFDED6E93DD31EBD /* RKMIMETypeSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 31E03BBD64B8193A5A9C6C7FF049CDE3 /* RKDynamicMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = A0426D7149778C1DBF70DD5B3253A081 /* RKDynamicMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3242ACAE66A3D0C3A348362AE7EB96EB /* RKTestNotificationObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = D483D1D469EA00BF8839FA7029495D60 /* RKTestNotificationObserver.h */; }; - 32CADAEC3FC0CA1A4AB2759B8DB02C94 /* FBSDKLoginTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A643D621DB5B92B641E0E85372BA98E /* FBSDKLoginTooltipView.m */; }; - 336423D9526F48480AD694EC196FDCA7 /* PFAsyncTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 00EA57E2C906799ED67EBCFC4089A02C /* PFAsyncTaskQueue.m */; }; - 33C0113BD220073D53AF6158C83E6F35 /* PFQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = E1394AF99EBF307ACCE5AC895EAC2042 /* PFQuery.h */; }; - 33D75FFDA664AF78542007DCBC137A14 /* FBSDKAccessTokenCacheV4.h in Headers */ = {isa = PBXBuildFile; fileRef = ADE2CE2451E917A2482234B50A41DC19 /* FBSDKAccessTokenCacheV4.h */; }; - 34355DB3FC335D6F5F14E2C436E8B880 /* PFPushState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E21E2C6F0AD5061454FF796346F0484 /* PFPushState.h */; }; - 34800A407ADEB815F529E3CD4630210D /* PFConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 90E50367F9BC45C10EACF85808FF75BC /* PFConfig.h */; }; - 34B9717B9BD9E717234A4BA4FA9B23CF /* PFAnalyticsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A71824B576DDC6AD0FCFF11F0B133D6 /* PFAnalyticsController.h */; }; - 35CF2A0AFFFA1D48E9492B395E68BC95 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E46F0E48D76D7792ECCC0237C8E9CF /* _FBSDKTemporaryErrorRecoveryAttempter.h */; }; - 362CDA47E136CC1DFE150611DDCFFC99 /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = AD4EA5AF253C62AF6EE7B3838BE1FE11 /* FBSDKTimeSpentData.m */; }; - 363E8CE74C4DC35B9D68AAC353A116DB /* PFURLSessionDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = CEEDE6F5E4B91DB0462629F30CE2C5D3 /* PFURLSessionDataTaskDelegate.h */; }; - 367ED93EB2EB25B7F6CFC3191AD1ED66 /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 65CF7764149142958978827C966A07B1 /* FBSDKAudioResourceLoader.h */; }; - 36808C750EE4E138E79AC4A52BBBCDA1 /* PFObjectFilePersistenceController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8201C8136FA5647FA6E3D62C4EE1974 /* PFObjectFilePersistenceController.m */; }; - 371A5CF7297B29D0C41BEB53EBF1FED8 /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0820BC8566C53EE58544095722F3A841 /* FBSDKColor.h */; }; - 3722A927AABB3C7CC8B5562C9B42A4B1 /* FBSDKShareButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D3882165793F00E2FD03DD7A903E3AB4 /* FBSDKShareButton.m */; }; - 37C5A5F5F5C16AAF3BB95832F149E67B /* PFConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 09F2C7C83A1343D93FFA99723D546B25 /* PFConstants.m */; }; - 37C5B25DF6BEA25F244D3E1FC4185DDB /* FBSDKLoginCompletion+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C9FEB49ADBD54B9FD7533801BB5380F /* FBSDKLoginCompletion+Internal.h */; }; - 37C638B1F00DC6C36311A62BCD273269 /* FBSDKSharingContent.h in Headers */ = {isa = PBXBuildFile; fileRef = CC65F8627E5C5856896FED7D2BB1CF7B /* FBSDKSharingContent.h */; }; - 37D6C597E2AD01C1BB8B163D369B7AB0 /* FBSDKShareAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F3FAED1517988ED94F54E9B8DA4E0A /* FBSDKShareAPI.h */; }; - 37DC8354ABF030C71775008A29B0E4E3 /* lcl_config_extensions_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = B83F7B501488845012B0097456793ED7 /* lcl_config_extensions_RK.h */; }; - 384D12A6756ADD487295CE08615550C1 /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8FC29E783D5AAFA886556B21AFC84E /* FBSDKContainerViewController.h */; }; - 38C42E03CBD6DE6CD7C011646AF8AAE7 /* PFAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = D7C3DDABC4BC501093A232FA20368F5D /* PFAssert.h */; }; - 38CDA66FB02AD0480B135A0E9C4DDD09 /* PFCurrentObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = 55C549F5B8CF223004416FA7639F9E69 /* PFCurrentObjectControlling.h */; }; - 38CDA7AF96061D1CC4F9999F941314A4 /* PFInstallationIdentifierStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 886A664252B9125A43A5E8CDBC0A2C43 /* PFInstallationIdentifierStore.m */; }; - 39D96839924E83EA80B140F589FFCD47 /* PFRESTCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 680D7CAB02E8C5A1DCE74985204D4483 /* PFRESTCommand.m */; }; - 39FC8B6114BDCE13E07EB4160B959A8F /* PFAnonymousUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = A7162605D551027C56A2A37B943994C7 /* PFAnonymousUtils.m */; }; - 3A4E79016E170FCEA906AD959BAD0F4F /* RKISO8601DateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 83A77564DAB70186CD83920566902605 /* RKISO8601DateFormatter.h */; }; - 3A7EAC81C4FB2DAE1ECA0946918B859C /* PFURLSessionUploadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 53873BB442346D140446325544126600 /* PFURLSessionUploadTaskDelegate.m */; }; - 3AE182AECDA6FB112732923A4334D472 /* PFURLSessionCommandRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = E2A3EED08BBE4EF8E35776623B221D96 /* PFURLSessionCommandRunner.h */; }; - 3AE80C219B4B8E1118C4032D8A203C36 /* RKRoute.h in Headers */ = {isa = PBXBuildFile; fileRef = 82F4CF881DD119649C8445AB7AD1733A /* RKRoute.h */; }; - 3B16D2CF7B1C7C98DF560E1208D45CEE /* RKTestFixture.m in Sources */ = {isa = PBXBuildFile; fileRef = 4294F692EAF153601A3A4B780A9C0668 /* RKTestFixture.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3B2AE3090FBEF6A9A0AF03E43A77509A /* PFPropertyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = AED3A36F04E046594F39EA5EB90D97FD /* PFPropertyInfo.m */; }; - 3B3B3B7EADC2C13FBE5A51A8BD80AAD1 /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 72F7D5CD8944B77904BC197DDC8A0487 /* FBSDKAccessToken.m */; }; - 3B753F85E3CBF91C270E9DC07341B708 /* FBSDKSharingButton.h in Headers */ = {isa = PBXBuildFile; fileRef = FE6B1221BB48461DA615B55D5D19370E /* FBSDKSharingButton.h */; }; - 3B76C2CB31039AF1A29C4F595F684F2A /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = D659356F1EF1F1C346376A400B5070E9 /* FBSDKMaleSilhouetteIcon.h */; }; - 3B7EBA7886CB6F28D8C9BF552955CE2F /* RKRouteSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B949380B0A36EE9DCE1BE3DD205872D /* RKRouteSet.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3B80CE07A2168B1C91BACCCAED54E24A /* lcl_config_logger_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = B96FAE035A72F2B9E4745AA2941D21DC /* lcl_config_logger_RK.h */; }; - 3B885734C80A0A787B7A3FD563A54A99 /* FBSDKShareUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = BE300C64CFEC0B1AF5E5B10FCAD254AB /* FBSDKShareUtility.h */; }; - 3C73A01215B692C7C17F8CC6C7D74BE4 /* PFProduct.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A3A3C984D254DD2D0058DD599EAD348 /* PFProduct.m */; }; - 3CDB89F3725ED26B768FE843D82396EF /* RKRouter.m in Sources */ = {isa = PBXBuildFile; fileRef = D145E83E2215C35E1D66DCFD70095EAE /* RKRouter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3D366280CD3300E954FB9956F50437AD /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = D4FD1E6A7772359C67DC337EEDF88556 /* FBSDKAppEventsState.m */; }; - 3D5474C1E69D04F528875AC3F12BC26B /* RKErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 3954F2A0287065523FE93833957D805D /* RKErrors.h */; }; - 3D67F027014DB141F5CD6820ED830BA2 /* RKBenchmark.m in Sources */ = {isa = PBXBuildFile; fileRef = 8430E4A0A4791DC7D0F9CE485D860A00 /* RKBenchmark.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3D72D32F4B1A08F0DE53710D9B65D45A /* RKObjectMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DE47CA373FCE248BB502DF421F6B2A3 /* RKObjectMapping.h */; }; - 3DA234B60937F780C2D85257BAC8AFEF /* FBSDKLoginManagerLoginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 510604FAF87C394AFADB9A5D564F3AEB /* FBSDKLoginManagerLoginResult.h */; }; - 3DA7C9EC3F83FAF0FB19DC783FBBF412 /* RKPathUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 259C735ED2FFC41359586661CE813736 /* RKPathUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3DB2858B25E1C7C00547C227306254BE /* ParseInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 82DE2CCDEF80C1FF02649B195289A931 /* ParseInternal.h */; }; - 3DF26B936A4A112B5B60CE1C3EC8959F /* PFObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F51CD3717AB71F5E10A96BA8B666AACE /* PFObjectPrivate.h */; }; - 3E0E763F67DFDDA31AF5DBDEAAA1207E /* RKLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BADEB18E715ADFCC4E321048C18D8CF /* RKLog.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3EA664BC0A9CB70A6B95DF8A0AEDA68A /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 146309296F3083D07EB7A9F31D3148AB /* FBSDKApplicationDelegate.m */; }; - 3EAE0DAA5517A55E52E5A5D099DB7AA4 /* PFEventuallyQueue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 81D47F8C37692E3865019B411BDAEE3A /* PFEventuallyQueue_Private.h */; }; - 3ED276C208E4C2C431499BD98C10D6AC /* FBSDKShareOpenGraphContent.h in Headers */ = {isa = PBXBuildFile; fileRef = BE9C3BEACE061C48E9A8427C3059F7E5 /* FBSDKShareOpenGraphContent.h */; }; - 3EFA30742A712A0CDDFB5993F762C0EF /* FBSDKGameRequestDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 44335A04DAA32B00C92160838C5E789D /* FBSDKGameRequestDialog.m */; }; - 3F2315BDE91F31DA56D01EF5660DAE6D /* PFFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = FA021E3B9768C5B58BAAFC752622E888 /* PFFileState.h */; }; - 3F4D16C2F94D67B739CFFCB65181A7C0 /* RKResponseDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 22BCAB2ABFBB3566EC2E7ED45706F704 /* RKResponseDescriptor.h */; }; - 3F658F1814712CB2CA55F67CF852048A /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 879994DB9DEDD7064DD1B700F3FF8690 /* FBSDKConstants.h */; }; - 3FE71CD230D88EAD1B31C317695B466E /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = A43FA21715C3B6F62D38DAA843E6E28A /* AFPropertyListRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 402D95BB3E4B49C7E1DF15661C419498 /* FBSDKMessengerIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = ACB0039F3DE0903BD2479336BCB4AAF5 /* FBSDKMessengerIcon.m */; }; - 408F1B35F34DA7A3B64B32935531D02D /* FBSDKShareConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = D58E0BB2015D810A38A6E5641DCBDB8E /* FBSDKShareConstants.m */; }; - 40F9AB573C5837942460DA047E6127C4 /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C88718F1FAACE95C1F6DC1798456734 /* FBSDKErrorRecoveryAttempter.h */; }; - 42378B4C721065E6B0D901898104AE69 /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = B06587D0A22379F4450AB6A83497A7DA /* FBSDKIcon.m */; }; - 42CFF2A1DB5CD41505B76D81DDE5C106 /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 54BEF4E5D47F21E4FC7E996E4AE29C66 /* FBSDKPaymentObserver.h */; }; - 43019C013CEA899E11CFEBB8D60D87D2 /* PFNetworkCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = BDEB88DA6AF7347263BC6911DB8411FE /* PFNetworkCommand.h */; }; - 43A88B5ACE21230C0F2524DB074C8763 /* PFAnalytics_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F8035743B5B17155E2E7D8224603A87B /* PFAnalytics_Private.h */; }; - 4443DA164C04807EF22B9E2FE3A40CEE /* TKEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 02B4ADB1ECAC920122E657AE18B10BFE /* TKEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 44711F7187AE62533F10CC3591F92646 /* PFURLSessionFileDownloadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 71EFAC4FE3DE4D635A34BD873A1302F5 /* PFURLSessionFileDownloadTaskDelegate.m */; }; - 44963F3C624EFA6C4A3259B1167EC1AD /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = A01032B0129DF076CF6B8F1997C4BA6F /* FBSDKKeychainStoreViaBundleID.h */; }; - 44EEBB71B919C890EC133515DAADA53E /* SOCKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A98B34414903617DDCC4DD35D0ACC8 /* SOCKit.h */; }; - 452561965CF2A1AF6B261E3B86511A1A /* PFKeyValueCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 47BD5C685318CE8CD9CA1D43C28605B9 /* PFKeyValueCache_Private.h */; }; - 45A12AF03992E1460CE8A8F60E32BFB4 /* PFObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 31EB18FA1114A3D648354CA9461243B5 /* PFObject.m */; }; - 45AAE02BB82AA9DED26A85409DB656A6 /* PFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E102EFF955C784214778B35DA87ECEF /* PFNetworkActivityIndicatorManager.h */; }; - 4625C1214B5DB9343D91257A243125BC /* FBSDKSystemAccountStoreAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6474A77F06A843F81E145096D09D7711 /* FBSDKSystemAccountStoreAdapter.h */; }; - 46F3472C258501F3EB104F0CEFA49EAB /* PFFileController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B85AF138E6CEEDF8291F16978BAEAEC /* PFFileController.m */; }; - 4710D5B167AFEBA84243F46516E78202 /* PFObjectFileCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 53F32875FD8A66082F85E268CB4BC011 /* PFObjectFileCoder.m */; }; - 47260DBBF3AC80EBF7CB97A2F3EB322B /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B5D125F50E0B3A81028AB31CB76BF71 /* AFURLConnectionOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 476019024CC57A5B6C8E2D69E9EB636D /* PFRESTPushCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B83B68F2BA2D8926592978101024F709 /* PFRESTPushCommand.h */; }; - 479B013952E62955F632E5D881392901 /* PFRESTQueryCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 32369FE3517FE0DA85D6AC9113DFC4D4 /* PFRESTQueryCommand.m */; }; - 479E6787348037F3AB0BC2F71B64F8BA /* PFBaseState.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BA6D617D6C18C4F2260EB0CCC8EFBEA /* PFBaseState.m */; }; - 4858697360BC346D2A20761DC49285D2 /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EA7BE6071FB5DACC51089FB613BA39E /* FBSDKButton.h */; }; - 49183D48B7BA396016E94E50E7E508FC /* PFCommandCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 96A0F952DC35450695E4E710C00DA528 /* PFCommandCache_Private.h */; }; - 492225CAF7397433B1343717CEC233C2 /* PFPushPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F99B6F42887EE972402E88BB751D67A /* PFPushPrivate.h */; }; - 49DAA2044F870155F9BD5B0ECE15912A /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DE49CE008144B7919F76B3E247361EE /* FBSDKWebDialog.h */; }; - 49DFEEF3A4265D9B972B75025BF1EAB4 /* PFSessionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 916C1A84C0A37408A6F76D88348177DD /* PFSessionController.m */; }; - 49F3CD714650FD1C4A5B7388AADA6B34 /* PFURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 98A77CBFC3CB99CB7C20905C88715474 /* PFURLSession.h */; }; - 4BEC5A582E14C9CAF7FF2064863B7C31 /* RKMappingTest.h in Headers */ = {isa = PBXBuildFile; fileRef = A67A7F1AF95165EBD3C0D8E0060DB526 /* RKMappingTest.h */; }; - 4C8EF69C1B7610ADC270ADF5C27A92E3 /* RKTestHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = D587648C0089A8E5FF455C97FF2B368E /* RKTestHelpers.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 4CC36A73728C42160295B6C06F5C9E1F /* PFConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A603960FAC56B3596B29FEDBED2A1A /* PFConfig.m */; }; - 4D3AE09991081CE12C807E441C9D69E2 /* PFURLSessionCommandRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 25501EDA6B8396052C4721695FA27371 /* PFURLSessionCommandRunner.m */; }; - 4D46CDEAAFB03920B313BDBC2F235570 /* PFObjectEstimatedData.h in Headers */ = {isa = PBXBuildFile; fileRef = FE2ECE2F8FDD3511406B222FD89E37A5 /* PFObjectEstimatedData.h */; }; - 4DEC7B43535FE6D4218B12464ADF8D2C /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = C2D770ED2372F2017C6D6A85DD81705C /* FBSDKButton+Subclass.h */; }; - 4E6EF8C32E62178152875A0EF231C225 /* RKObjectMappingMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EFB8D910130BB4CE5DC011047B4653B /* RKObjectMappingMatcher.h */; }; - 4E7C7673802993B2D1AFF71028EECB42 /* PFPaymentTransactionObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 46DE20F02F523C0B14736898D3E8BBAC /* PFPaymentTransactionObserver.h */; }; - 4EDD2C991964C1B9BFB9CB3677CB0B0D /* PFSQLiteDatabaseResult.h in Headers */ = {isa = PBXBuildFile; fileRef = B00106BF0B6579DD98D56C67BD575CF0 /* PFSQLiteDatabaseResult.h */; }; - 4F208E8A4607477BA09171C93F9D65F7 /* FBSDKShareButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B0E9CC89B4C9510C51F6F8388E25C21 /* FBSDKShareButton.h */; }; - 4F71A1E65C43A417915F279E8DE8F186 /* PFCategoryLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = B2B9FD0D9C17DD96730E88C3240D975F /* PFCategoryLoader.m */; }; - 4F9695BA0230FA6050195FF6147FDAF2 /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = E00DAE8196002E6DC11BB84AA2B653B0 /* FBSDKAppLinkResolver.m */; }; - 4FBEA800074B2BCDC593781BACCE5269 /* RestKit.h in Headers */ = {isa = PBXBuildFile; fileRef = D68740C3275B619CD6272922B9616689 /* RestKit.h */; }; - 4FC26ED4C9894736D998A022CE894DFC /* PFMutablePushState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FAACBCE52471750369D9FA0ECEAEEE1 /* PFMutablePushState.h */; }; - 5002F32A1D34B6240D1C30F38349AD06 /* PFSQLiteStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8341246DF5F52B15F7D490893290D3 /* PFSQLiteStatement.h */; }; - 50FD61393BDAF57A7C8828614E4C04EE /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 63AA0219BE65F798CB2F7604B4733571 /* FBSDKBridgeAPIResponse.h */; }; - 512E2D4FEED38C66EC4923DBFB185CEF /* RKStringTokenizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 99CE24FEF0EA1F2943A8DFF00388C985 /* RKStringTokenizer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 51A265493014DED3E038034A805BC06B /* PFFileStagingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 992AFE5C5E747C1601862BCDAA0A7DD8 /* PFFileStagingController.m */; }; - 52D11AEE6C8D215ABB06624EB6260D37 /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = AEE98356256460D105F89B9C6DE23A69 /* FBSDKLogo.h */; }; - 52E6F3ADE5C66CCE50A4157FF354200D /* PFObjectSubclassInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = A4E495589FA749FBC303F264C9C6B80F /* PFObjectSubclassInfo.m */; }; - 530C3054D34C5772D012A7791BEBD97B /* RKMappingResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 757FF14AABAC587C4E6F945A1E8D4472 /* RKMappingResult.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 537DF62CE12445EB1DAD955A6C6ACC97 /* RKMapperOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DD2F082EFF4A90CEA1BD4B18821FD489 /* RKMapperOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 539B79B777A580A748F4B8A186BCC8F5 /* FBSDKShareDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = DF42A50DA3169ABB374EFAA43DCFDE36 /* FBSDKShareDefines.h */; }; - 545122765F77D3F755A9520AB3028996 /* PFFileDataStream.m in Sources */ = {isa = PBXBuildFile; fileRef = EAA3AE48267B27C576513BFE574F8AF8 /* PFFileDataStream.m */; }; - 5491227F12C974B21D03C53DD7B996C6 /* FBSDKLikeObjectType.m in Sources */ = {isa = PBXBuildFile; fileRef = B6DC44432F551A7E862B5307DF7F040D /* FBSDKLikeObjectType.m */; }; - 54A388B33BFD7BEDB7310245AD9CAD4F /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = EEA9D6955C305B5F1B6C27161FE11070 /* FBSDKTypeUtility.h */; }; - 54F5313BCCE28B89592A59E8729474A6 /* PFUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 051170D8AB31E65A6185350F81C989F8 /* PFUserController.h */; }; - 550329AC1FE186EB5562C870B738D881 /* FBSDKLoginTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 60E9ACA9DCB6DFF036B60A0C51E4A5FF /* FBSDKLoginTooltipView.h */; }; - 554247D0CBC21F3D62833C441D61F642 /* FBSDKLikeButtonPopWAV.m in Sources */ = {isa = PBXBuildFile; fileRef = 8379929D10F949C09F2BE6851EC97373 /* FBSDKLikeButtonPopWAV.m */; }; - 5587584620C8F74140437B4EAFDBD15E /* ObjectMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = D6264AE68EC2461B52D7BC087CC60C51 /* ObjectMapping.h */; }; - 5587DF8D7396BB77AECBE77910CB4DA8 /* PFTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = DFEE7E72D7CE52F1A712D597A33B153C /* PFTaskQueue.h */; }; - 55D4453F4098ED3D750DFADEC86A8A3A /* PFTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DD477EE3462803C03920D7EA94FCFF8 /* PFTaskQueue.m */; }; - 55DD89F9A164C6F15D3A0254F67CCFC6 /* PFGeoPointPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 37FB4F3FA6D54D38DE79356A63834230 /* PFGeoPointPrivate.h */; }; - 55F91C3F499DE45EA5B5AB3E27DEE170 /* FBSDKAccessTokenCacheV3.m in Sources */ = {isa = PBXBuildFile; fileRef = C652B9BA4AA5750AC29A27FB796AF725 /* FBSDKAccessTokenCacheV3.m */; }; - 55FAFAB3178952EB789197F3BD7F1EB6 /* PFOfflineQueryLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = D98AA728E2CAF01488250F97004A36A8 /* PFOfflineQueryLogic.h */; }; - 56B354AF9311CAA6CF3E4859B477862D /* PFUserPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D6ED3A53A136BCE4843E32025C76ED9 /* PFUserPrivate.h */; }; - 56CA6CD50DF1F5886E48D96A2D18186C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 56DDC808EA95231C01E95F82452FED13 /* FBSDKAppGroupContent.m in Sources */ = {isa = PBXBuildFile; fileRef = D155C2F3D678574A9479B645207148FB /* FBSDKAppGroupContent.m */; }; - 56E7498A46584C6C8109EAB46069D26D /* PFObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CCED09AA914A9CA2759E1F53B53226E /* PFObjectUtilities.m */; }; - 5726C95C5F7CC6A9F5A4315F05A7705C /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = B8D4E64BEFC88B60711EE57C1834C5F8 /* FBSDKErrorRecoveryAttempter.m */; }; - 573AB04F28243AFEA4E6460438D3A935 /* FBSDKLikeBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 00C31AE91F93FAC03797A08CB87C7EB4 /* FBSDKLikeBoxView.m */; }; - 582CE335157F67A7AC9C4F948C7BFBCB /* PFMutablePushState.m in Sources */ = {isa = PBXBuildFile; fileRef = 047273E0F6F9E9889E073EE49F2755C4 /* PFMutablePushState.m */; }; - 58A6BF39F429E731177F766F2747CCA4 /* PFInternalUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = CFF2742C181ACA4B29372E268153270F /* PFInternalUtils.h */; }; - 590737A2A29757D9B56910E182CE61E0 /* FBSDKAccessTokenCacheV3_21.h in Headers */ = {isa = PBXBuildFile; fileRef = 609E48B1FF82F30564A193C81AB2A1B5 /* FBSDKAccessTokenCacheV3_21.h */; }; - 591C4201A7B3C6EC8D826BBB1D1D5E26 /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B828DC073409B28F4FD2BAE7E834D87 /* FBSDKProfile+Internal.h */; }; - 594D9565A6631A0B899B1388B8E91492 /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = B37E9B2C0FC3DA2D2D135ED6BFBFCDD0 /* FBSDKTriStateBOOL.h */; }; - 59F177028361FDDB97A781AAE29E9B82 /* RKRoute.m in Sources */ = {isa = PBXBuildFile; fileRef = CDABF5602F0E0D707DDD4224CB032D0E /* RKRoute.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 59F4057F341FE5BAF86C9ED8FFEF7964 /* RKLumberjackLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 81C8A7F71F4AB5ED22FA83E37837CA80 /* RKLumberjackLogger.h */; }; - 59FCCEC297EE635331865784CB7C5FA7 /* PFFieldOperationDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = F3E2913672AE575B7293488062F00FD0 /* PFFieldOperationDecoder.h */; }; - 5A7ED655237DCFEE5E211AAED71DD267 /* PFSessionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = CB8C8762838FD01094119D687898F1B3 /* PFSessionUtilities.m */; }; - 5ABFF30DE688A485DC7D42DC3D152083 /* RKConnectionTestExpectation.h in Headers */ = {isa = PBXBuildFile; fileRef = 85C3C7141AE8131AC8868EF3F853AD3A /* RKConnectionTestExpectation.h */; }; - 5AC8E19A51D9F4860F4944BAE0DAEC96 /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F79510BB12DF693E6899A336B944ACA /* FBSDKSettings.h */; }; - 5AD718CF19228CE250EE9C5942ED28FB /* RKHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B31ADE78BF2D9A37DCAF22E2F0D53AC /* RKHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 5B08DE41E6A3A50C09C167F05DF8F50A /* PFInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CE46AC0E13A1092344C773AC969D749 /* PFInstallationController.h */; }; - 5B57FAB57B310D17F2EA7D85A7227C23 /* PFFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D91308BAD322ECAA4960D4D23C9A2C3 /* PFFile.m */; }; - 5B72DFD5FC0ECD42B595D7DF8797EFD6 /* FBSDKLoginKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C40CADC5F2DEB4D0282F02F7FDF18EF0 /* FBSDKLoginKit-dummy.m */; }; - 5B982F856921827D002F7C5CCE73DDAA /* PFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 874C68CE36C22FDD95A27779257F15A1 /* PFObject.h */; }; - 5CA15F5F3A0EFA7A94D7110E3F1F8137 /* PFPropertyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 85A34FD1B37C88CFB5EFD0D8E6DD8071 /* PFPropertyInfo.h */; }; - 5CE49091B82B4C91FFE7BB7ECB3EF5FF /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = F86C3277131832CC3F71CEDEA893D4D6 /* BFAppLinkTarget.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 5CFBEC31582E7093D61B791E3D6A89CE /* FBSDKAppGroupAddDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A369AE523AE5428A6D9F6550614FE9D /* FBSDKAppGroupAddDialog.h */; }; - 5D00DCC382EA0FE45A4A915033BBD326 /* PFRelation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2423DAEF9BB294E6E266E9CC7E5F196D /* PFRelation.m */; }; - 5D0FE10AAE4A7D55349612B668EC5BD3 /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 308B85DD48F9A76C1D714CB80189B6E1 /* FBSDKUIUtility.h */; }; - 5DA9A28E3169B2A7B8A809BAAD3E86C8 /* RKRelationshipMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = AD6755DF1120CF7F9CE51A66D317FC9F /* RKRelationshipMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 5E18C27CBCF0F5DBBC749F0C5609544C /* PFDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = C4F10ABEFA5CCF0EC39AA05DC7FCBE4A /* PFDateFormatter.h */; }; - 5E456DF19F8ECEC61FF4D1C3E7AC0278 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB19BCF4582BF9F10ABA1C43D14ED9A /* FBSDKLogger.m */; }; - 5E5C21A949A6A420773112D9DA4D08A9 /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = E016C3CC11A1E2541450703DF5F4DBA9 /* BFCancellationTokenRegistration.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 5EE125E8B7346490F3E3FFF8A69B2845 /* PFObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FBFA3525F472811286DDE3A9248666E /* PFObjectUtilities.h */; }; - 5F4B09393C8220183CE1E6DAC0BE9C74 /* RKISO8601DateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8700D74C7E8322F5645810F5DBA692B1 /* RKISO8601DateFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 5FAA4777EA70E15098063A2B1B314915 /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B68D5F4D24A36ACF45400FAB8AB23DE /* FBSDKGameRequestFrictionlessRecipientCache.m */; }; - 5FBCE36A6D25A4B44E4C0C9C6EB06093 /* FBSDKLikeActionControllerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B921F27786A108BF382F49799F4ECEFE /* FBSDKLikeActionControllerCache.m */; }; - 604439374F250448FC99A0F77B4CE15F /* PFCurrentInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E09472B01CB2E27BD636136A0066956 /* PFCurrentInstallationController.m */; }; - 60646FC6222FE516DCD6BFA761C57A54 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 52120DE46E6C7C888694B8D9A3F4DEC6 /* UIImageView+AFNetworking.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 60A6E403AFC9A0BA34A1924ED46E7661 /* PFPushState.m in Sources */ = {isa = PBXBuildFile; fileRef = A92BD29643970DCB9C0745A0406AD053 /* PFPushState.m */; }; - 60C5A2D3BE63055B71F68F64563474D0 /* PFDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = FACB310E0E9E78B498E89B7F93B98CBF /* PFDevice.m */; }; - 60F38A25DFDB6310A8E294B230FE8B6B /* RKRequestDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = C5BAEE02437FF882C669F3417F738447 /* RKRequestDescriptor.h */; }; - 612C5CF45F7C8EC9139258A6F1B23DE6 /* PFURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = EFC389DF1344C08739BE3B0D8561FC86 /* PFURLSession.m */; }; - 6133962C287FD9B396459F292C4CA3E2 /* RKObjectManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E94E46525AFB5C84058140D261543E17 /* RKObjectManager.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 6155D01C8B51697111A08412A9A15D81 /* BFAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 197B3FB536BC0102E5F4615D92F57286 /* BFAppLinkNavigation.h */; }; - 6176AD2985531B49564230661B07EE33 /* RKDictionaryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = D72FC75ED7ED1ECBB9A34AC1705CE17D /* RKDictionaryUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 61870EAC96BBBA435263587CC7F2E48F /* PFObjectFileCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = DD24927EB5C08D76DB2607695C173E2E /* PFObjectFileCoder.h */; }; - 619EC62BA7570655A32E0FD9DE0B81DB /* FBSDKLoginCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = C098C23FB2DF99933279373E8B3D452E /* FBSDKLoginCompletion.h */; }; - 61D3D1A601A46800EC2C2F1BC8AEE2B9 /* PFPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 282B79F0BE2F4372C754A93C4D8D6B3F /* PFPin.m */; }; - 6208EB35E2A3EF808B1C66D4D64C5DF0 /* PFLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 56E54211A06B3807A9F27AD7BEB6DA7C /* PFLogging.h */; }; - 62302556F6AC2F7B62A1E2C3C770FAFB /* PFDefaultACLController.m in Sources */ = {isa = PBXBuildFile; fileRef = FD44A295575FA6E021F34AF62C1FBB39 /* PFDefaultACLController.m */; }; - 625C91C53680F09517E0DC0872450374 /* PFLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = BE7E9FEA0A48E20BEAFE0E04D46D0913 /* PFLogger.m */; }; - 6274057AA5C456BF9DBCC15ED39BDF7D /* Testing.h in Headers */ = {isa = PBXBuildFile; fileRef = 778D4E4A3B190B10F0AEFE08CC88F279 /* Testing.h */; }; - 629C5E37F422AEAECF2125E1B8954DFA /* FBSDKLikeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 31A09CE6942D32E70D7AF420C0C28F98 /* FBSDKLikeDialog.m */; }; - 62F4B91A78FCE3413CBAC127D5151E2B /* PFObjectSubclassingController.h in Headers */ = {isa = PBXBuildFile; fileRef = CD8B46F21FA110AF5880D0648641BA7A /* PFObjectSubclassingController.h */; }; - 6309045AC92213B2E323792E8F779257 /* PFRESTObjectCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 5242A7AC90141AACB238B67ACEC33ED0 /* PFRESTObjectCommand.h */; }; - 638303B9767AD6CFA4EDD3CC9D438888 /* Bolts-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B76E48E1FD54E0BBE64291059DD0428 /* Bolts-dummy.m */; }; - 64027533F0F5F5E3D76E19A91E7C979A /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 83EED38CF3D996DFEA263619B0B9CBD1 /* FBSDKApplicationDelegate.h */; }; - 655154BFD72359BFDA301C638AEB234A /* RKTestConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 55C9501B071548071B0C87CDA9D032F8 /* RKTestConstants.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 655A0B669A924B4AE31129D70784FB93 /* RKMIMETypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 52EBAC1E14508349697276F8E0C80479 /* RKMIMETypes.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 656200477A7F591FCCCC7D6B74802BB9 /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = D069FE63005F6068C36B6B3E8C125E9D /* FBSDKUtility.h */; }; - 6564EACD1F229AC7C76D64958FD2084E /* BFAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5C6C0CB488B2B5EB58A44CB5006846 /* BFAppLinkReturnToRefererController.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 65B86E6A3D00FEE70CBCE039AD72DE43 /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 69DE218A0D590D2C3678DE52CDFAA862 /* FBSDKErrorConfiguration.h */; }; - 65BA644D4E07A43524D0B5B38DAEFF0A /* PFFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2554B79C64ECEFCFEE123612E3C5F6CA /* PFFileManager.m */; }; - 66060F4E52A075B9EF3ED69EAF8C4812 /* PFPaymentTransactionObserver_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CB354A886C3BB7D67D39EB3F5236AB3A /* PFPaymentTransactionObserver_Private.h */; }; - 6630D0D212E7B8AE5D69DEBC4909AAF5 /* RKManagedObjectRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = EC0A8BE947E2CBB52F80DE18D474CE39 /* RKManagedObjectRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 664BAAE15CB37598495A1B056695A4C6 /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = DC48544F9CAD4D07227D206EF611973D /* BFURL_Internal.h */; }; - 66F43085D42ED2365237DCA34897DADF /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 277CDEE8DFC2D7DBE20B8F1E0A377FC4 /* FBSDKTestUsersManager.h */; }; - 67891D5D94391676B0DA81592B29101C /* PFSQLiteDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BD061E291C8DA3E18934FCF5E92DC81 /* PFSQLiteDatabase.h */; }; - 67B5CAAE671A5C8A9B817CE3699AF6E3 /* PFFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E39DE60706FCD15CB26738B50295DCD8 /* PFFileManager.h */; }; - 67F70F417D99AB2BD60DC04C04993945 /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = EE1FCC8E5B8DC53DA187352C0FEF6F6D /* FBSDKServerConfigurationManager+Internal.h */; }; - 682E4A7F65C613EF767604374D7A4639 /* PFAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = A3D3B2AE6543B11628B3FD5B32D9E786 /* PFAlertView.m */; }; - 684F6D48516C29D70B837257203CB999 /* PFMulticastDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = EA90B11F9419C1CFB642C076EE6CCA4E /* PFMulticastDelegate.h */; }; - 686D001D6513106185D9F01DB6478979 /* PFAsyncTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 29EE40865F4426262E949C4C302BF226 /* PFAsyncTaskQueue.h */; }; - 69115D83A54F36A4D1BBCC573633632A /* FBSDKLoginManagerLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 48D467EF578B57E2381B95690763CFA8 /* FBSDKLoginManagerLogger.h */; }; - 6919E252E16FC787AD1D9B56375F7011 /* PFPropertyInfo_Runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 9866CB182F7690789F1CE9AC2C89303E /* PFPropertyInfo_Runtime.h */; }; - 6937F426816B16FCD4C8859174159C7E /* PFPropertyInfo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EFF22BC9B76855DF9E2359F492E11A4 /* PFPropertyInfo_Private.h */; }; - 6950392D69B8C200487A284BA5B8D0B3 /* PFRESTAnalyticsCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B3693A56CF492DA3BDAEDDBDA46ADC5D /* PFRESTAnalyticsCommand.h */; }; - 69A9A1FBEE8290A0146EC75F9958ACBE /* RKAttributeMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 49EA15DA07E51D9C44D29EF7BFB6F1E2 /* RKAttributeMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 69D20734E1F34055E468363CDA1F14A6 /* PFSessionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E82461A10900C11141F5132C28A7C0B /* PFSessionUtilities.h */; }; - 6A537578E971062D1471E30CAB354803 /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F96B01B6AD0F525E17F2074B2EA1EB1 /* FBSDKGraphRequestBody.m */; }; - 6A7C7334A9A8FCAE1C9E5992882D056E /* PFCategoryLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = CEC4CC0F1E5231E5AE5C1E4101E7CD5F /* PFCategoryLoader.h */; }; - 6A7F2C2C80852EBF6A620AF12E900D24 /* PFObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E8914751B900AC4DEF771BDEB8FE816 /* PFObjectState.h */; }; - 6AF334EF4BBC6A6FD3346EA40D5CA725 /* RKObjectMappingOperationDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7143CA35B7DBC71915BDD3C8FFA6F17B /* RKObjectMappingOperationDataSource.h */; }; - 6B34BA82691D0C8A7B4F32640D876F94 /* PFURLSessionCommandRunner_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 614A361C74DFD5A28DB5A4DBFAD80EAF /* PFURLSessionCommandRunner_Private.h */; }; - 6B9C6C5B8151AF0FFE0EADD023048BE5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 6BB51C3B2AEE77DE18DCF03B3176F68A /* ParseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AD0F8B79E3BDC24EF65F9BA34E2F1983 /* ParseManager.m */; }; - 6BE26C31629E37691C2026D34EF5FC1F /* FBSDKLikeBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = ADF8EC9446037AA127D75EE89650002F /* FBSDKLikeBoxView.h */; }; - 6C13D116F0AA2A78C4B546E3E0728D09 /* AFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = A3D86DE4F1B3EFCBA205A592DA3CCEFE /* AFURLConnectionOperation.h */; }; - 6C9905FED4C58879E1188A49CC03EC9B /* FBSDKLoginButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 9494BB00014D0192A01360063AA70BE0 /* FBSDKLoginButton.h */; }; - 6C9D7C55CB78713CFBEFB8F6823936DE /* FBSDKShareError.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BF25C2B0ED8E85EC0D52225FEAAF054 /* FBSDKShareError.h */; }; - 6D0555F3AFF71C16C54E98092E4304D3 /* PFACLPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 661148537E08B421366ECAD30B9523D7 /* PFACLPrivate.h */; }; - 6D4838695D90508DA37AFB4E8CEC4EF0 /* PFObjectBatchController.m in Sources */ = {isa = PBXBuildFile; fileRef = AF32577C470A14D1ED63BB4B6492F464 /* PFObjectBatchController.m */; }; - 6D4887AE8E844C608EED1EC8656610E5 /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = B2853B351DB05A9B0740AF256122A30E /* FBSDKBridgeAPIProtocolNativeV1.m */; }; - 6D61146E37009E249059A2813517FFD9 /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B538AE03EC7635223FC2B7353D18B63 /* FBSDKError.h */; }; - 6D82BD254178B3C9EECC246D810632E9 /* PFRESTCommand_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 5698E0F3BFBACA4A2F463DD697916F16 /* PFRESTCommand_Private.h */; }; - 6D8BC7410B446B1A8366CC22E0E1079B /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = F468CD8A34AFAA3F31C0B27B7124A4FF /* FBSDKProfilePictureView.h */; }; - 6DF393B100C28657E21257B71F6D7DB1 /* FBSDKShareOpenGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = CD8DCF741100D5A960D3D87F3F11EC5B /* FBSDKShareOpenGraphObject.m */; }; - 6E3BD44E7ACAEC339555B558F5E9E6F2 /* PFRESTConfigCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 06CCF32425B76D2DCB319BACF4D3874B /* PFRESTConfigCommand.m */; }; - 6E74859E6E9AE4DE6D8C2137C731DA7E /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 27000997EDF8B991F4B6E05E67C67113 /* FBSDKGraphRequestConnection.h */; }; - 6F05C7C3A58618ADF1E7C6672414D524 /* PFAnalytics.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BBF841A16205C45B1396307D83A7373 /* PFAnalytics.m */; }; - 6F322C51FD0B96990A4EE44BBA6275CA /* BoltsVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2F968FC5E9ACF4AC754AB79F42241F /* BoltsVersion.h */; }; - 6F538A8D204627652A295F762C5F1FC5 /* Support.h in Headers */ = {isa = PBXBuildFile; fileRef = 243B9EEDBFD73BC0E48417E798EB7D49 /* Support.h */; }; - 6FAE65259A4C6DE098E364FB6A55FCB5 /* PFRelationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3661FB21F4391073E8AAC82B6B840E75 /* PFRelationPrivate.h */; }; - 6FC52428542CBDD5AA17FD45E3EE5AA0 /* RKRouteSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 341EA091B57F44C4DE7AEFBD627D722D /* RKRouteSet.h */; }; - 7007DB3DFD0438A84AB08C841722E049 /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = 859C15C373D18E927177F1CA54850FFA /* BFAppLinkReturnToRefererController.h */; }; - 7023F33F30099D075DB99C2AD2DA1289 /* PFCurrentInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 02EDCF1DE69B8C5E506B9C40F67F083F /* PFCurrentInstallationController.h */; }; - 703F8255C8F3F10319E008C37F524F3B /* ParseModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F92059D97E5483DFD850AA95FFE5562 /* ParseModule.h */; }; - 70531F77925054688B5A2863B2209C32 /* RKPaginator.m in Sources */ = {isa = PBXBuildFile; fileRef = CAAEEA7D83368AA927E7EBCBA6F4E80E /* RKPaginator.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 70B6B8575F6F54B1324C1457BEB8BD05 /* RKSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EB160597E8E862ED9A4D2CDE6C5ECBB /* RKSerialization.h */; }; - 70E8E54EF340AE0D3D75A21AA31A37F0 /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CF14FE1AA01684F58CFF8617EC29EC7 /* FBSDKAccessTokenCaching.h */; }; - 712A6B5A32B445FE62502B2513745730 /* PFUserAuthenticationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = A083AB389EBB61C1E3AC66B85D0485EE /* PFUserAuthenticationDelegate.h */; }; - 71361F3DBB8A7FAD8040363913431A70 /* PFRESTObjectCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 6144F78DC1C2B2F8A260C15A0B7148BA /* PFRESTObjectCommand.m */; }; - 714FFA7F7570576D0CC3AB2471C2BBF9 /* PFWeakValue.h in Headers */ = {isa = PBXBuildFile; fileRef = FDF7CFCA28382A3A70269FF452DAF6DF /* PFWeakValue.h */; }; - 7155F162641F1D6675833714D700B403 /* RKObjectMappingMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 635550F96E6CB4B30D674CA6B3D59AAA /* RKObjectMappingMatcher.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 718B74711D901C679047E8E33676F378 /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D80E9A1290BCA30333F7035E22898FD4 /* BFMeasurementEvent.h */; }; - 71952ADC9172B4F79B433C367D5BB740 /* AFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EB0F987B2BFAD674CC1392DB885D94A /* AFHTTPRequestOperation.h */; }; - 71FDAA355554DC3828CB576F2053B15D /* PFObjectFilePersistenceController.h in Headers */ = {isa = PBXBuildFile; fileRef = F9D538F104DE1F531CF0C5A8DAA4E04B /* PFObjectFilePersistenceController.h */; }; - 724E7035BD3905FFA72B386599CE0F3B /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = 983296A9BF9A0D8836E833993EB26598 /* FBSDKLogo.m */; }; - 72FE90A10832697092610577418DDCFD /* PFDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = E09085454F042573BE0A1BCBEF8DAE7A /* PFDataProvider.h */; }; - 73207F1C397A877B01B1F68FF5D8310B /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = 93400D2B380DA1CACA54DEAAFAE23D12 /* FBSDKGraphRequestBody.h */; }; - 735F99AE8538E282317F759241D24669 /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = D8EA6434D262B562E0ABC8F28481403A /* FBSDKAppEventsDeviceInfo.h */; }; - 73C1B903BAB9CD9165C6D8C590C88DBC /* BFTask+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = BA51726FD1AA4091DA126768DFA80EE0 /* BFTask+Private.h */; }; - 73FD34365A5B80EC64B0B5A8E99AF46E /* TKState.h in Headers */ = {isa = PBXBuildFile; fileRef = A4F85A759F06DA2C165FC5F9C67479D9 /* TKState.h */; }; - 74351DB8FEAB681790B1508D8A128B55 /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = E6E72495A6EA20D898402EC82E0701BB /* FBSDKBase64.h */; }; - 744F76CA2535AE2E3E4749DD1D09AB76 /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F5ADC1E77EC8A29EE990ABF17E8326 /* FBSDKMath.h */; }; - 745C38783C1053304B73F0386AFA906C /* RKTestFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = BD77162D04BA4533037493C3BE145CFF /* RKTestFactory.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 748865BAC2CF0646028E14F1F901D0F3 /* PFAnonymousAuthenticationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 594B1C1B419F5D05CD82EE8F86518E69 /* PFAnonymousAuthenticationProvider.h */; }; - 75089BEF052080F9C53DD85E3E067A70 /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D2882D92D1796229569A9CC1C6A400 /* BFMeasurementEvent_Internal.h */; }; - 753534EF9F6BA68DDC2C0BB97ABF5595 /* PFKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D9A8A5EA7D67587E22F112968E8FA29 /* PFKeychainStore.m */; }; - 757C64059CB5443093CD909C0DEC74FE /* PFRelation.h in Headers */ = {isa = PBXBuildFile; fileRef = 03C5A44C8CE91BCF8B86912605825A8D /* PFRelation.h */; }; - 7622E77898A5E6339E7108532241FBF4 /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = D74C6F651D26C64847074B31212962B9 /* FBSDKGraphRequestConnection.m */; }; - 766272FA49F9F79139FBC5FDBC39007E /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 7244F71460BF559B73433E28D79F2BFD /* FBSDKButton.m */; }; - 769C8A2A5FD69C9E808BAFEBD91A620D /* FBSDKCheckmarkIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BE29891FEDF3029F65A3606EE7B3D88 /* FBSDKCheckmarkIcon.m */; }; - 7723A818ADD25F8105C149DDB4EE3972 /* PFPushState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 687225D9C30A2354D368E350F8C481FB /* PFPushState_Private.h */; }; - 773EF0868D6F02AD1A64B608F9F534B4 /* PFWeakValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EA794B89AD63BC09D01C4D28AB83FA6 /* PFWeakValue.m */; }; - 77822739473DC952F4F5A5AEAFC0DF35 /* PFObjectSubclassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 7915B369685221642E067005F680B451 /* PFObjectSubclassInfo.h */; }; - 77E441574FD39C4C4993CD33AB6A8DD1 /* PFFieldOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D3E83167931010DA87FD972EABFF257 /* PFFieldOperation.m */; }; - 78C9EE129A8B784811999428280E0BCA /* PFRESTObjectBatchCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = ED1A749E0B29949F6BE6DE5906C56DD6 /* PFRESTObjectBatchCommand.h */; }; - 78D7B0F4E3F947DDA6A98358B2A1C0E2 /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FB89A08C5C8B78FBEBC245FD9B7D1E3 /* BFURL.h */; }; - 796F6AD0A1615AD0072F7DF2F5E1E5D8 /* FBSDKSharePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 98522B603FC459FC9758D1108318CB8C /* FBSDKSharePhoto.m */; }; - 7A5A1F4552152A40E502176B3CD96B1A /* BFAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = 882529F2F51F25982209C54BD8E7C6F4 /* BFAppLinkReturnToRefererView.h */; }; - 7AE4B1EFB5BFFE292E6A983252506D65 /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 9402AA910E3CEEBA2FBF5C33C47593DC /* FBSDKKeychainStore.h */; }; - 7AED011BAA61F2E740F903C7336A780C /* PFFieldOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 556A94A3870C01C3B2634E1838E2D0B6 /* PFFieldOperation.h */; }; - 7C4E7B55808C75F154F7070302DAD51B /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61A8714F3E98EE48AF22222F6082A20E /* AudioToolbox.framework */; }; - 7C68061FCD10D87488EB98414D244611 /* RKMIMETypeSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = CC80DEFA3FC6190520C4E802B4E816FE /* RKMIMETypeSerialization.h */; }; - 7C8620E50070963E07EAF88D8CF4A37D /* RKAttributeMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = B563402F32E620824AD23105E63019A7 /* RKAttributeMapping.h */; }; - 7CF19BC1C67AA7C5AE473611DFA0C772 /* PFGeoPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 29DF82C03CFD45F592C6F19AE103BA06 /* PFGeoPoint.h */; }; - 7DF59E1435A9B5FF6E0527FDB56ECD09 /* RKPropertyMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CA7D87557CA7C23E2FD33B16F7B4A87 /* RKPropertyMapping.h */; }; - 7E2762508F6A1FF99C3EC5ACB2A10FED /* PFErrorUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = A83514721328D0D297D02197D617EB33 /* PFErrorUtilities.h */; }; - 7E30399388BC2602D048AAC96B5BC7CB /* ISO8601DateFormatterValueTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = A16F8952CC048721F5CA32D79E71B653 /* ISO8601DateFormatterValueTransformer.h */; }; - 7E438A7D61F9B7C06F0664B3920EBEB9 /* PFSQLiteDatabase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A13F413DC88512FDA54FE8057A667EAD /* PFSQLiteDatabase_Private.h */; }; - 7EC8DDF3DDAE56746E934F89307D7583 /* PFACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = 2561AF367B0B04A8C83CD5E1C4F0C08E /* PFACLState.m */; }; - 7ED422249D15540B85E10655FE6C988D /* PFMutableRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 28C76500BA7B3265FA9C1FBF8EC034FF /* PFMutableRelationState.h */; }; - 7EE537C6D56046389F1E274A3202A9CB /* FBSDKLikeBoxBorderView.h in Headers */ = {isa = PBXBuildFile; fileRef = B8C2915B7FBC79D5F729A8D454EC471C /* FBSDKLikeBoxBorderView.h */; }; - 7F1FDBA8B63D8F54C26A086D57228EAB /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0329086571C053B994B8FFFEABD553B5 /* FBSDKAppEventsStateManager.h */; }; - 7F31A5308B96FD7D40312D00F7FED8D1 /* PFOfflineQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D74017655C22EAC1CDB43F8CD2B468D /* PFOfflineQueryController.h */; }; - 7F476F4A55E0605F8B1BED1AAED083DB /* PFObjectState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 461D15480309D56D3AA4AFA926B8B93C /* PFObjectState_Private.h */; }; - 7F50BBCBF48D7D538ABB2F8B5C1BD9EA /* Parse.m in Sources */ = {isa = PBXBuildFile; fileRef = 700F2F5BA5994CFBE256028DFF7EC6CC /* Parse.m */; }; - 7F7A98BA075E1FD86DBC637F18F0D582 /* PFCoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A153F0DEB24B9E8B5723EFCB6F33B536 /* PFCoreManager.m */; }; - 7FC64428627661A597A1CE287993D8DD /* PFBase64Encoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E014614141F279B34D0F4EAFD7F4DFD /* PFBase64Encoder.h */; }; - 7FDD9544319E5EE9F6093720244BC5B1 /* FBSDKShareOpenGraphAction.m in Sources */ = {isa = PBXBuildFile; fileRef = DD3B394CF966217416F1237E9D4D804F /* FBSDKShareOpenGraphAction.m */; }; - 8034FE492667425492892E47331F2329 /* PFEventuallyPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 133D805C2313FF465674A3486EA36F90 /* PFEventuallyPin.m */; }; - 80355E0AA0F65BF9BC33663D2D5AAAAE /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 46229044B27E123F58A7778EF094817E /* FBSDKPaymentObserver.m */; }; - 807960496B84272FCA09089BD12D0F4B /* PFGeoPoint.m in Sources */ = {isa = PBXBuildFile; fileRef = 27DA1A860C5602304E507058E4A25B5B /* PFGeoPoint.m */; }; - 80B9F847DAA4DC85162B5CAF50DD8AAC /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 342BC152E1A501D98AA8468B20BC2FBF /* FBSDKWebDialog.m */; }; - 80BBA5295F8F2EDFB289DF9E1E0B5E12 /* ISO8601DateFormatterValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = A0A9019E56BAD1EE29D29A6AEDF3BC1A /* ISO8601DateFormatterValueTransformer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 80D7AE607ED5ABD55BDD03B17E072715 /* PFRESTSessionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 0435A677495AC526E61CDF8F62EC197C /* PFRESTSessionCommand.h */; }; - 811813531632404C8020D453107171DA /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 34DA5ED519561747CB24898F11335A79 /* FBSDKServerConfiguration.m */; }; - 815C939A552E956EFA94CD39E362CB79 /* FBSDKAccessTokenCacheV4.m in Sources */ = {isa = PBXBuildFile; fileRef = 831275D794F272F2349F89FC9BA48F1D /* FBSDKAccessTokenCacheV4.m */; }; - 81622EAF7B59D13198E4CBC0C3D1A714 /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 394002AEF7F5079BD3B473255A1C49AD /* FBSDKAccessTokenCache.h */; }; - 81C0AEE0BDA12DD25B4808A7E6DD9459 /* PFProduct+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E44E35724EFF38F735F8A1ACAD9AC6BA /* PFProduct+Private.h */; }; - 81D2A1174D2AB7C2A85A459309F1C871 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD70BB4643C9BA44BAC707BE6AB39DD /* AFNetworkActivityIndicatorManager.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 81F1E0666FE80C4D88A3B99E120771E4 /* PFProduct.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFFDA63A4181BD3B195487A833CECE4 /* PFProduct.h */; }; - 83C7505E35D5F6721B5600AC74ADAA16 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 845C26A4234F2FFB1203C918A6F64998 /* PFAnalyticsUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EC5BDE29DEA58916F31388DB4B8EE2D /* PFAnalyticsUtilities.m */; }; - 848C43C813771ECA299F1DFBFE42B192 /* FBSDKAppGroupJoinDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = C8A30076FFE0AE4D80EEE9B5F111E0C4 /* FBSDKAppGroupJoinDialog.h */; }; - 84CA51BF867492192A541AD60AB61E40 /* PFQueryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = E4B0E00C3C4BDBCA61E5E8E5A4098711 /* PFQueryUtilities.m */; }; - 852691CBD5FE158C07179096E9DC3590 /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = C691D2172575794DB216679D3693503D /* FBSDKInternalUtility.h */; }; - 8526C9EF4EE664BFA507C921AFACEF23 /* TransitionKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A3CCA72533E35C4376B1E8AECC9627F /* TransitionKit.h */; }; - 8533CBAFEDFAD5FBC4ADDEE1BB82F1E2 /* PFQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3448DD0E19AC2C9CA013ACD2BC7AD8C1 /* PFQueryController.m */; }; - 8535B91A7A7E444A84BA5F17C7C45A0B /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = BD4CC2409377CA987A2B2C5C57CEEE70 /* BFTaskCompletionSource.h */; }; - 859358B83393C54648A62C9CDA04C46D /* RKRequestDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 323152BA48F777D5C406ED5AE427B1AA /* RKRequestDescriptor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 85ACC60B4C7AEB569CA7A15552DECA2B /* FBSDKShareOpenGraphValueContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = E321A3BE2B4DC782EA81A69D33894C29 /* FBSDKShareOpenGraphValueContainer.h */; }; - 85FF1DA846D0199EBFECFCF6608778E8 /* PFJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = AAFC5698C81D8076342E19ECB0D2E550 /* PFJSONSerialization.m */; }; - 864964DDE4A49AA0C8BA369228DB2F0D /* FBSDKLoginConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = EF50F0DB0BC4C86C22F26686C14E853A /* FBSDKLoginConstants.m */; }; - 86DDE3CA5BB0A9832CC42F7D111A4E50 /* BFCancellationToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E4FE6BADC672C550203DCEEC5EE8020 /* BFCancellationToken.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 87555A986BB8D791D09CC1CF98CB05F0 /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 950203966AB13DB9DD6BF919571BCD7D /* BFExecutor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 87668BEB2644459D0714A1D916BD3EBC /* RKObjectParameterization.m in Sources */ = {isa = PBXBuildFile; fileRef = 585CBEC762B0BA2C71CFB9F0E84E8B1C /* RKObjectParameterization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 87C94373458C4511D89CF78EA0CF5B50 /* PFPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = D7F2E197DB454125A7957FE4881AD932 /* PFPurchase.m */; }; - 889A0ADF8C008FD622BB2611917818AB /* _FBSDKLoginRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CEDED5603A9C216D88239CD22DAD12F /* _FBSDKLoginRecoveryAttempter.m */; }; - 88AEFFFCE8B5D10A029F8591B492C4B6 /* PFCoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 975F4BA7752243B51CF71A4F5AF85FBB /* PFCoreManager.h */; }; - 890348D946DE9E11805D0184309D1414 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 660799EF24CF28527054B3FA6E25BE2A /* FBSDKBridgeAPIProtocolNativeV1.h */; }; - 8933370B0D400B59134BF817F36355D1 /* PFAnonymousUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9450452DCB495F010C9799C19CEDC25 /* PFAnonymousUtils.h */; }; - 89CAA391879710F0A18AA9983F1AAB9B /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F6E04668789EA254AADF60D794FE065E /* FBSDKApplicationDelegate+Internal.h */; }; - 89FFA572F2CF83E1771CCC8901980550 /* PFThreadsafety.h in Headers */ = {isa = PBXBuildFile; fileRef = BAFC73046A893C097CD25A41014D48A0 /* PFThreadsafety.h */; }; - 8A5D5875FC065737EB8E0B6C6E340C90 /* PFQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = B40C676461A3B7148111BB04D891F399 /* PFQueryState.m */; }; - 8AC9E8395C32554D980DB74ED4B0A3A1 /* AFPropertyListRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5917BAC53F580A1C1176F5DD749556A9 /* AFPropertyListRequestOperation.h */; }; - 8AD697C3CC37B002B3D24F61B96E3774 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CCC11B45A7E2D9A95182BA1D01D60F9 /* SystemConfiguration.framework */; }; - 8B02A33743FFEA58A1A3FAB553DA0113 /* PFAnonymousUtils_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C69E58A7811CD06105D466195B801328 /* PFAnonymousUtils_Private.h */; }; - 8B250CC7E95C824D1E75461C4C141765 /* RKPropertyInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AA98567E44F5A893A264AAAA201DC0A /* RKPropertyInspector.h */; }; - 8B3551C3785FF40691325863A18E92FA /* RKMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = DC32DADD67B93D4C8A1DC5D924364B07 /* RKMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 8B3E804859E5836A2204786E380B6996 /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2827FE6F0B040DD6EE347F254F0F17BB /* FBSDKGraphRequestPiggybackManager.h */; }; - 8B4A50CAB930AB9204EA6685CD51B1FB /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 94EDA6573DFD479F710386D53249C2EF /* FBSDKAppEventsUtility.m */; }; - 8BB62BE3D07ABABBEED035063D38A628 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BE2D580E317F0D1965AC68793F7AEBB /* FBSDKBridgeAPIProtocolWebV2.h */; }; - 8BF3DC4F915897B5B26F59D30BBECBA7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 8C2E0348444B4CCD4A79B4F0B7E2C680 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 8C80FAB2A1E33AB58F5A17B43E7E4610 /* PFUserConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 50A981FEAE41634E8F3C3CCF8AC56259 /* PFUserConstants.m */; }; - 8CF36F02672717CD65CA145BF33C8E99 /* FBSDKShareError.m in Sources */ = {isa = PBXBuildFile; fileRef = E3D7CAFA467CC207516594F8CA235BE1 /* FBSDKShareError.m */; }; - 8D34E8CC2BE98E98B00C3A7BD7744D34 /* RKResponseDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = AE1F88C360ED32A2DC0B77A0FB64F684 /* RKResponseDescriptor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 8D805E15087E4663C5274FC437B3D934 /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 120D59FB9C748DAA660CEDCF7C419164 /* FBSDKAccessTokenCache.m */; }; - 8DA8A753958D9E0D7C75532C0F108B6B /* FBSDKBridgeAPICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = E67D4E4FAAA111F401888720828746B0 /* FBSDKBridgeAPICrypto.m */; }; - 8EEA92CFB0319DC52DB310A78F1E4B09 /* PFObjectConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 457C5AA079BF304DBA165DC39799AC62 /* PFObjectConstants.m */; }; - 8F9A675846DC2C23572CCD8E4FFBDB93 /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CCE9BE6DF0576998191D1D52675A3EF /* Pods-dummy.m */; }; - 8FCF54FD9CEA3E07B0C913783C0B95A0 /* FBSDKAppInviteContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 73F2E6274BAD1AD8D9324B3838256FB6 /* FBSDKAppInviteContent.m */; }; - 8FE5788EF14F6E44BD11EA5B8C3C1587 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - 9006A9F90EE85EAC328A7CA6B21A74E0 /* FBSDKLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EA68C5837BA086C1AB0730D5D664A75 /* FBSDKLoginManager.m */; }; - 9047EED945F054752070AE2C7FD84036 /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F27E2022C1FBC9A8EF59AF5A0635F1 /* UIImageView+AFNetworking.h */; }; - 904E9698791C4696CD82E78D1D525A5A /* PFCommandRunning.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CA449F861B70FFB8296D4B48C050FBE /* PFCommandRunning.h */; }; - 90DF7AFB3CDCC7BDF91701989F51605E /* PFMutableUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = 20A09146C96CD4735D748F3A404D0813 /* PFMutableUserState.h */; }; - 90EC0380FEBB7E27ADAD47E582C3D580 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 46012E85A00B1012C8DE6CB3D5CC0DFB /* AFNetworking-dummy.m */; }; - 914774948471B0AB22200646BE0F480F /* RKLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 95B10AC59C183D139DF676CDC2DEF1B0 /* RKLog.h */; }; - 9158101B59990CB0ECE0851B57A3A86B /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8886812D5A18522530AA7A0B5774BB0A /* FBSDKProfilePictureView.m */; }; - 918020D013ED8C98F9A3A541854321D6 /* PFOperationSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D9FA4BADE605736317EE1596FAAD3B1 /* PFOperationSet.h */; }; - 923010B8F3329953E0A79793C8647EE1 /* PFQueryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = C45D1154E82FBFB1AEFB90141DBACC29 /* PFQueryUtilities.h */; }; - 9290D750E87E3578B9115CFB7E07A1EC /* PFRESTObjectBatchCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C4E9EF227BA506792955288087E82F /* PFRESTObjectBatchCommand.m */; }; - 92AE88B8C0C5A81DB777F447227395CD /* PFCurrentUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = C74E4DFE39D451AE68F6CB856DEF1D8B /* PFCurrentUserController.m */; }; - 92E9F455D701E6FAABAB2C36DB4B4BDF /* FBSDKLikeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 0133F272E02689C37483595FA9CE6B21 /* FBSDKLikeButton.m */; }; - 93D454B41C475DD7053A9F84BC1CB745 /* PFPurchaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A2F1425F21ABB04C1E959E932C6F415 /* PFPurchaseController.m */; }; - 9417E9466CCAACBCB2ABE8E77D01AAB9 /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = A558554954AE61057C9CF3B86E31AAF1 /* FBSDKKeychainStore.m */; }; - 94CE1B567D82681A537F32DF3DC5E515 /* PFUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EDBC476683341C63522CBC88AF10401 /* PFUser.m */; }; - 9526FC617DC03EB2394A82C62562094E /* RKMappingResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 905ADB423401F79FA90F610A1CEB29F1 /* RKMappingResult.h */; }; - 957B6B2AFA1B7311B98BC4ECA2D3A0E6 /* FBSDKShareAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C8807B3161750EADE6E8BD164724CE6 /* FBSDKShareAPI.m */; }; - 9586E7884852EFE6A87AA1FA26AAEAFD /* PFUser.h in Headers */ = {isa = PBXBuildFile; fileRef = E7E88640AA3150B82CBAC9BE5E95A136 /* PFUser.h */; }; - 95A30E62D31A893BCB37B77FD0ED25F7 /* PFSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A7133DBE9772758CC46F930B640FA577 /* PFSession_Private.h */; }; - 96142816EC1AA2045DFF5E56EA30F07D /* PFObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = F1E2800D7ABD0182A48B7D71B414FD92 /* PFObjectState.m */; }; - 98243A9B61B05CAD50CD1C18E5EB33EF /* BFWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 363004150CBDDD99121ED1C9FEE4CE8C /* BFWebViewAppLinkResolver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 98B5BFC65638844B3AF600A7AC6486D2 /* RKHTTPUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D15AFCABB51E916BD6FFE6D663CCBED /* RKHTTPUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 98F7D66B579B9C528F943E154A0DA118 /* PFRelationState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C2775986B8C8F3CC41C05FD3B939FF81 /* PFRelationState_Private.h */; }; - 9946DA29569182E4051D4F20EBCF389A /* FBSDKShareKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 225675EE77126480507353150E5D4EF3 /* FBSDKShareKit.h */; }; - 99F872BB5976264AD7648F8F8252D8B5 /* TKTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = F0CB4E3EC1ACD76F2309A54B490DF091 /* TKTransition.h */; }; - 9A2BEF19F863F33E38EBFAD7EA9701CB /* PFConfig_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 91F0975F1A27413EC0622237C3680849 /* PFConfig_Private.h */; }; - 9ACE7DB11559893303A60C131C1C651A /* PFObjectLocalIdStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 894852C03388A8B63E64B0E4307DA4C4 /* PFObjectLocalIdStore.h */; }; - 9B20CB3ED72C1E4476D8EC5896D6EE25 /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BC5A2D868E11F3896499C4C384C1057 /* BFTask.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 9B9FB5405327F50538A416EA24675972 /* FBSDKAccessTokenCacheV3_17.m in Sources */ = {isa = PBXBuildFile; fileRef = EBB7426F9BCC68E345009243DF01C283 /* FBSDKAccessTokenCacheV3_17.m */; }; - 9BC4B4C5BE92BABC56261D0983597C6D /* PFObjectController_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 63C834523FBD7AC3D226D67DBCAB0F4C /* PFObjectController_Private.h */; }; - 9C2018D3236C7170BE9FC1AFA36AE55E /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A3A0AEECB03ACB2C625D6A5BDD230FC /* Bolts.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 9C4AB8907669D2B957962CC3FEB63853 /* PFQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = 10E904E302F7D7767F91F58889C20F5A /* PFQueryState.h */; }; - 9D7FA3822D5504762ECA314C8A00DB7C /* RKPropertyMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 905A2264F8751CFD5E0FFE6C92CE7462 /* RKPropertyMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 9E495012585497CA83EBB7D85B66DE18 /* PFInstallation.h in Headers */ = {isa = PBXBuildFile; fileRef = 05D04D86B15EAD72ACA964052E4E5C94 /* PFInstallation.h */; }; - 9E80147EBF6B2588ED1ACE1EF8C08856 /* RKDotNetDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = D344D9A38E931E18FB1095D2364E21E6 /* RKDotNetDateFormatter.h */; }; - 9EB092E53EFD259C48531526018114D1 /* FBSDKMessageDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 71B842D80B25BEB8AE3A797A724D7CC5 /* FBSDKMessageDialog.h */; }; - 9EB9B579CE8B4A1750DFE203B0A4F013 /* PFDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D1520ADAF247AF6031216CDA841A5E1 /* PFDateFormatter.m */; }; - 9F0967492995CB98973A21AA30AFFC7F /* PFPushUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CE5F1B200B8D4F57C6A85199C9969FE /* PFPushUtilities.m */; }; - 9F4936D9F122DA751E92AEBFC0EE497F /* PFObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = 73A13DAF02B6E8A824568229C50FBBD3 /* PFObjectController.m */; }; - 9F4D529EEC0834DDEAC016EB49BB5AB2 /* FBSDKLikeControl.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A665A78A257570FD4F9CE8A2EF5694 /* FBSDKLikeControl.h */; }; - 9F564465F5C2681769FF253EC488E005 /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = FA5ECFC11F48F3DA152D886DDA9845D1 /* FBSDKBridgeAPIRequest.m */; }; - 9F705191F53966733FBA503F27BD14ED /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 279536DCCF7BB43F3A2CAF27A31B5C57 /* BFAppLinkReturnToRefererView_Internal.h */; }; - 9F8F9CAAF474967CD794E0BD4D083C24 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = DFC2DC00FAF97B8C741ADA0CE734750A /* BFExecutor.h */; }; - A07428954F0ECE2812C099F99EEBDCF9 /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AF0ABAFA5AB51B0A0101D5CBF73791F /* BFCancellationTokenSource.h */; }; - A0CB7D3DED639DB995CBBC511D37BF63 /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 249C09A58FE9BB84BAC197A821EC4678 /* FBSDKConstants.m */; }; - A0EF1086FDB0062AAE995ED6B69B7EB5 /* PFConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CA7CE3E5F98F41F8574F6D183CE2263 /* PFConfigController.m */; }; - A1EC89637E89B1A927B64A88D846F37C /* BFAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = BECD89C94556181D2DC5E1EC956F6551 /* BFAppLinkNavigation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - A2263CD966D196A5CE37ED110C62EE57 /* RKMappingErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = A47788042F4DC03B2F9C830BA9EA5567 /* RKMappingErrors.h */; }; - A2575C4641D3633910C02BC08860000C /* PFCommandRunning.m in Sources */ = {isa = PBXBuildFile; fileRef = 445422ACF05285D68F70D3C51879712A /* PFCommandRunning.m */; }; - A26DC0F983CC9217FBFCBAC0F78FD6F0 /* PFCloudCodeController.h in Headers */ = {isa = PBXBuildFile; fileRef = 62F4D5228E2384499C80602BA6C921F4 /* PFCloudCodeController.h */; }; - A2779E72E6F4F89BC10E9D187395B8BA /* FBSDKGameRequestDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 520663893D6DE2A86D1D57299989DD21 /* FBSDKGameRequestDialog.h */; }; - A2A8FA3EF7C62775D279A5B32E06B37E /* RKLumberjackLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 97E6EC52D54228978DD7489F931C7015 /* RKLumberjackLogger.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - A34464F1C2086A0692D5226C2EE6248A /* FBSDKShareOpenGraphContent.m in Sources */ = {isa = PBXBuildFile; fileRef = C0ACB6CAB80A7E3DC5CFFE36AC450565 /* FBSDKShareOpenGraphContent.m */; }; - A3829D2453619B3142F601B79951DEDD /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = BA4DA1672A2EE0D0650B35B2EE788AF2 /* FBSDKTimeSpentData.h */; }; - A3F8A0B84AE7493B8726F577B6E98134 /* PFSQLiteDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = B95FB2E5D926288C9E55B3572315CEE5 /* PFSQLiteDatabase.m */; }; - A48A2777BF06EEFBC6370A833DD677CD /* PFInstallationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 379C2A4AD2DFCF269463822AE535090C /* PFInstallationPrivate.h */; }; - A4DCD9C49CAF596816118268E0B6EACE /* FBSDKURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D859BEB9EC0DAF7A490519CC6ACB7D2 /* FBSDKURLConnection.m */; }; - A4E81B9C9078BC0F5D1113D16C8D1F42 /* PFQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = B43206E9EAB8BE07EDDF2DD6510F74C8 /* PFQuery.m */; }; - A4FE6309DFBFDAF52061F44861DF298C /* PFURLSessionJSONDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = EEBF3BA14A17CDD666F87ADB7FD612C9 /* PFURLSessionJSONDataTaskDelegate.h */; }; - A5EE9A504202A028AE4D6D43657078E6 /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A6880AAFC8F7351294B649E15B6AD7F /* FBSDKServerConfigurationManager.h */; }; - A6F08ED05A5539A09A9E61B403A990AF /* ISO8601DateFormatterValueTransformer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D9449B7AA0958A37C738C3F3113E6F86 /* ISO8601DateFormatterValueTransformer-dummy.m */; }; - A754C4958F744E68B858C4D0F1601B43 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - A767E96A6CE480E5FA45CC5E4EC95039 /* FBSDKShareOpenGraphObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B1DBB7A5A5EE9B44DE86876D074207E /* FBSDKShareOpenGraphObject.h */; }; - A793DA615575121ABF52B15F879ED84C /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83F2B1D939804694C73E7FCD9AAF4090 /* CFNetwork.framework */; }; - A7C100D8A127E28B765E732D8FECE0CF /* PFRESTSessionCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 880D1361F22BDCDCF4A160F7DC4D54E5 /* PFRESTSessionCommand.m */; }; - A81EAB16D5FC59CD05962E2FC522F0B2 /* PFInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95864D7FD5998A21194F9D8966583E5 /* PFInstallationController.m */; }; - A8309002BE3C8CB4B12C239A5946538C /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CB4A5DFDF0DD0D7EA9036EDB4D3554F2 /* FBSDKContainerViewController.m */; }; - A83BC9FF2850C219FA5FC77FF4111CBF /* PFObjectBatchController.h in Headers */ = {isa = PBXBuildFile; fileRef = A6AE518E9BB5E93989AFB92589707FBA /* PFObjectBatchController.h */; }; - A8993E29255743428F03B37112AA10F2 /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D8D1722F7CFA8E2CC3AE2D1CE6B99CF /* FBSDKSettings+Internal.h */; }; - A8BCAA6D6A877FBD2678E40ECE7689F4 /* PFMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = FBC88190F20BFFBCE3E07DD0D3914E48 /* PFMacros.h */; }; - A8D8E3DEAFABD7D676AF9512F9300E5D /* RKMappingOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0401D69DFE749735649FE64519D6905B /* RKMappingOperation.h */; }; - A8F268C9D52AC5573CA492C2F7E03B39 /* PFQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 63E89B2BE05AE41A084F3E0FA21250FA /* PFQueryController.h */; }; - A92DC8F6936BA258AE90BBD122B20E32 /* PFMutableFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = C1B00FE95A9B3F0051AAD3A5D6CE141D /* PFMutableFileState.m */; }; - A95E8A958E2B5FFE3CADAC891086BAD1 /* FBSDKShareVideoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 93C724D27975298397EBCBA024D076F2 /* FBSDKShareVideoContent.m */; }; - A9701262143DCEE268B962B9BFE490E5 /* PFURLSessionJSONDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 526321DDA0F9E9326B772985013A71DB /* PFURLSessionJSONDataTaskDelegate.m */; }; - A979FB0DFC6A823D22D18A7D0D37811D /* PFMutableObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = B009D5CAE876F03463C42923FD1BF780 /* PFMutableObjectState.m */; }; - AA27404CA04AC54AA9E61738546F037A /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = F8C129748EFBA2068A762010AD12AEAD /* FBSDKMaleSilhouetteIcon.m */; }; - AA6CA5E4490EFC5A8BC390DF50314B88 /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D597043658824DCA8FDD8CFFEE3BC6D /* FBSDKIcon.h */; }; - AA903B5AC7C383473DD981318E286C33 /* PFRESTUserCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = BD7AF50148F7E85655300B88C68AEFF3 /* PFRESTUserCommand.h */; }; - AAE115E50155948641D97F4C4782327B /* TKEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 40C40C0517D7C210D4A32215DEB225C1 /* TKEvent.h */; }; - AB24D4CAE762B51189295267F8E37C9A /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CD1576A49CCA998DA56187764ACAF229 /* FBSDKBridgeAPIRequest+Private.h */; }; - AB64F843B89251A4F54B7E8811C2AD5A /* RKPaginator.h in Headers */ = {isa = PBXBuildFile; fileRef = EEC81F732F4810E132758A0C613E431B /* RKPaginator.h */; }; - AC3660E82309B97BC9F36F249A31936F /* RKObjectRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9863ED0E0DE0D5BD0D54D80394E2278E /* RKObjectRequestOperation.h */; }; - AC568C3C40A675F03EAD39239E53BABC /* PFURLSessionDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F59D7CF8A402E68851985B96EE643B89 /* PFURLSessionDataTaskDelegate.m */; }; - ACA1A7271082155E745CD2B20E95ECA1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - ACB5EAF24E694839F813720C515B3BEF /* _FBSDKLoginRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 450E74CFABCD4AC3721543ED32395800 /* _FBSDKLoginRecoveryAttempter.h */; }; - AD1992ABEB845EEFCEAA32C8DF7D4115 /* FBSDKMessengerIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = CDD888F1AE46F190163FFB9C51D7BF06 /* FBSDKMessengerIcon.h */; }; - AD42E75F3FB722607BC393109C580249 /* RKErrorMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 45B3E4226F866D5C78E3AE4441683829 /* RKErrorMessage.h */; }; - ADB578FAF8C812D1521EF9D710A77A84 /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = A9CC220B3BB7353C4CE25F3392EC1458 /* FBSDKInternalUtility.m */; }; - AE78806AE38207F244401AB17528DD86 /* PFReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 8148FF7EFD96C224279A35AB3C828BC8 /* PFReachability.m */; }; - AED780AA3103CE272620ABA5144C7EB9 /* RKObjectRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = A771288DA627C1035D810FE2E4D30B4D /* RKObjectRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - AED7DD46159F1525CBAED2B765B6FBB2 /* SOCKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FE09EB1BAFD6593655A66644AD9F2C0 /* SOCKit-dummy.m */; }; - AEF152DEB9D69B47F9BBF7E427E90A0E /* TKStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = C7A3C431941CA5458B46FDA87ADD17E9 /* TKStateMachine.h */; }; - AEFB17E8179A42AC76C5C46678A1E984 /* PFMultiProcessFileLockController.h in Headers */ = {isa = PBXBuildFile; fileRef = CE9E97FF37E3D5E9F5A1F4E619520D56 /* PFMultiProcessFileLockController.h */; }; - AF0AB1770B1B73163384947DA948E4C5 /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 241D1E7CB01A87C87C02CE0340F5DF83 /* FBSDKErrorRecoveryConfiguration.m */; }; - AF5D4AA78614DEC968FD73B77E1DCA9F /* FBSDKAppGroupContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 309C5A18E36D89DDB6DB309BFFB3A074 /* FBSDKAppGroupContent.h */; }; - AF6EF01D6DE6C310DB3AC87B40F61750 /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = 4606174FBA2263954939C4357F44E377 /* FBSDKSettings.m */; }; - AFE0272593838261A88EF7BD17E68888 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C37F0ED993AA0D0D75072F2D2A6865AC /* Security.framework */; }; - AFE365CE206F3E6364AAC8BD50C0AACA /* FBSDKShareLinkContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D03DAC12EBD0056CB252F2F287B6402 /* FBSDKShareLinkContent.h */; }; - B0804AA5BB8D7B57D52A32F72AB5ECBB /* PFUserAuthenticationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 739CA807E35A38705E95A5061E4DB05F /* PFUserAuthenticationController.m */; }; - B0988D5E960A95FFD910D24D11B59AB1 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = 20D0533465677FE2928E4C7429447F7E /* FBSDKBridgeAPIProtocolWebV2.m */; }; - B0E57247D491FAA4B3F4B137595AD3E2 /* RKMappingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BAB7DDAE6FE91E089EBA417E69790BB /* RKMappingTest.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B0E5D758FA09DBF05C5A27C53D9EC1DF /* RKDotNetDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 079E082DB0D5553BF25A89DDB3AF9428 /* RKDotNetDateFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B12CD120D83F1BD943F435B1A23C520F /* PFLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 482DBED41E33C8058B42A4F92B753528 /* PFLocationManager.m */; }; - B19A97DC943FB4E19F93DDBA191CB207 /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BCB5525ABC0E01EC9A5E1CE8D86FA7E /* FBSDKAudioResourceLoader.m */; }; - B2C6E37E2C065FC66826699D97C5D1ED /* FBSDKAppInviteContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 705296E1BAA1CCE01D2761F16F9A39F9 /* FBSDKAppInviteContent.h */; }; - B2D1BE493F82C5FA62ACB829C637A9FD /* PFURLSessionFileDownloadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = D4AAA8F6AD3E666763DAE1F0E91D3778 /* PFURLSessionFileDownloadTaskDelegate.h */; }; - B2E3C4EDB24F3AB1FBA90FD0BE64084D /* FBSDKShareDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = E7626F8EE9D02540ADF0E346CC475FD9 /* FBSDKShareDialog.h */; }; - B3172572E215E917E15B5D1F66848737 /* FBSDKShareDialogMode.h in Headers */ = {isa = PBXBuildFile; fileRef = AA6E69D0F5432BE35E8DA343DA6002CE /* FBSDKShareDialogMode.h */; }; - B34BA7C37D5734BADFB67559C697D4C6 /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B33E74020A598273E33D945062DA71 /* FBSDKGraphRequest.m */; }; - B38FB84EF934643476AD18AC3DC7795F /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 56EBCB94D96659853670372C2E4764EA /* BFAppLink.h */; }; - B39FA2BABE548E38CAED91EA3521722A /* FBSDKLikeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 58D0E28B48A7E32F9FF7005DEE64C416 /* FBSDKLikeButton.h */; }; - B3C71031709F94AA5745619C081ECC54 /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = BA219A4F7C2E6E8A63E64A02CF33B649 /* FBSDKGraphRequestConnection+Internal.h */; }; - B40E3C07ABC858EDE2640EC014401187 /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = F05A809941BD13C88B6FA6CFB232C9FA /* FBSDKAppLinkUtility.h */; }; - B4275D37EB15EE59E93DD5EC6E51B9D4 /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = AE305CCADD2010E8C1E698C4DAC84DDB /* FBSDKGraphErrorRecoveryProcessor.h */; }; - B4EE6797178E18BDEFC03A41CF458AF1 /* PFEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 4077DBC410381FA11AC51C618CB81140 /* PFEventuallyQueue.m */; }; - B557BEE7C912C3A6C487A2FA3912A871 /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 87E3F9DDEC8ABB74E9B0B828E43E6A50 /* FBSDKGraphRequestMetadata.h */; }; - B636B7948DCCB21E44E36BE91F1E0AB4 /* PFEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CFDCCA1B3C5C08CF8E7EE0036580FCA /* PFEventuallyQueue.h */; }; - B6BF8650AC031C390261566634596617 /* RKObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A7897D08498CE169C9E0F8BA5015E80 /* RKObjectUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B6F7BF2A4B571A2A96D44A9E3D428C14 /* PFCommandURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B3BA8EBCD60ED1F31A2098334DB3278 /* PFCommandURLRequestConstructor.h */; }; - B6F9832AD636177E140EC01E3DC164B3 /* RKValueTransformers-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DD18A5D9607E9AB948A055344CD3E4C /* RKValueTransformers-dummy.m */; }; - B70D423A46D26F002B8E7833DD868993 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BF466CB1A2B08C6FD3F60694F3E8D34 /* AFHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B7AD629446C47B305E6630373410BFC2 /* FBSDKLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = A32731565F3850539FE9BBB6231B50DE /* FBSDKLoginError.m */; }; - B7D7114D6E9CBC710116992C71349DB2 /* PFRESTPushCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 9161913CD82800463279FFB15D5628FD /* PFRESTPushCommand.m */; }; - B7D722B63D54738AE3DFDE260A5EA8B1 /* PFObjectFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = C9335D1EB92B88713E8308C849C0EDF6 /* PFObjectFileCodingLogic.h */; }; - B81C208B8B66805EFD26D6173026AC2C /* PFACL.h in Headers */ = {isa = PBXBuildFile; fileRef = E9AD71E14E72EA9FB548AA268856C2EE /* PFACL.h */; }; - B8291EBC0CA538454602E54BDA92A1B7 /* TransitionKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 15854EBB45118A734AE77C8EFB408F10 /* TransitionKit-dummy.m */; }; - B91017DCA447D4FE665DFBD4F534207B /* RKPathUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 27D73CCE08122C37FC401A9805E8033F /* RKPathUtilities.h */; }; - B93DA9F9AAAC90B3CF0D7E92863E1E1A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - B9825AB10AEC3548EC0716A1880B163C /* RKMappingOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E201DE8EA287BAFA4B7303204B5FE3C9 /* RKMappingOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B9C0CE43FCAFA07D17732462A67DF31E /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DB6831426CD60ECF9EBFBFE5472A43A /* FBSDKAppLinkUtility.m */; }; - B9D14F6B67015F967B4F523B6669BB54 /* PFPushChannelsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 10A45B9F776F2A6EE5C3BE2ADD460FE3 /* PFPushChannelsController.h */; }; - BA5CC6A82E079E00AF7E360718D52E02 /* BFTask+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = F82017D76300F1C06DB5151CF37A726B /* BFTask+Private.m */; }; - BAAFB1BC360F105F6FDAEBF3E19F8195 /* RKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = CC29231A76F0E95942D3AC8EE9C06770 /* RKMacros.h */; }; - BB0C27D3702176E45994721057D7E9D2 /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = F65CAB845C91DF90E658BF037D025845 /* FBSDKBridgeAPIResponse.m */; }; - BB1475554304D738587A02F9B98E3D56 /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = FBE8E68D5C283727E833E0BB6BFC38D2 /* FBSDKCrypto.h */; }; - BB222C1527603C41557CA526BDCADD00 /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E20B6D6E904DDB31FF4F6654458B9DE0 /* FBSDKAppEventsStateManager.m */; }; - BB36C49D67D82E942DB0A83D4DFEE962 /* PFThreadsafety.m in Sources */ = {isa = PBXBuildFile; fileRef = E754D1AA7F49F27BDF54A28A7335AC74 /* PFThreadsafety.m */; }; - BBAFA237B5759EDF4ED29549B8B7B434 /* ParseManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 610CAB8E8825EC6BC293F21E90DD6315 /* ParseManager.h */; }; - BC4E7DE5246BF5D9DA0FAF8D6A8C86B6 /* PFCommandCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C7FC38C024D78EC53EEDA5E5B3C97E1 /* PFCommandCache.m */; }; - BC7941F946ADB340B252C6406E2DA921 /* PFSQLiteDatabaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = 453E27BE733413CA48A57B257194DA21 /* PFSQLiteDatabaseController.h */; }; - BCAAC8E1D0770BFFBC24DC2255F5110E /* FBSDKLikeControl+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A3B0127A1E076EFFEE0400BFD1119C /* FBSDKLikeControl+Internal.h */; }; - BD1266880C3D947593D65CCDF3FA2F04 /* RKStringTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CB0738F082CD21988DD84404C1406E6 /* RKStringTokenizer.h */; }; - BDF22FED7BDF2A1AC98DA87785F4990B /* PFEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = C4FECFD27C3DF785E2765FF781CE87C6 /* PFEncoder.m */; }; - BEFA1BB782F90B9B3A3F263F7E5A4F45 /* RKMapperOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15EE98D2719FAA6A81AAB54A7E471D /* RKMapperOperation.h */; }; - BF1C6799D780ADDDCDA7D058104CE7B7 /* FBSDKLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 31DC2BEB54C59BD2AC3FFC21BDBB71E5 /* FBSDKLoginManager.h */; }; - BF9D0B0AC5B64450EF283AD7DBF7BECB /* PFURLConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 814BAB5BB856170E11D9DFE9E26A888C /* PFURLConstructor.h */; }; - BFE2F9CF01E7E57239C3A42BFD1E94FA /* PFOfflineObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = F04D615547733AD44304C987C2896316 /* PFOfflineObjectController.m */; }; - BFFAFE33C8F059284278D6CE3904FA10 /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 746403A7CAF94F397758C55ECC719138 /* FBSDKServerConfigurationManager.m */; }; - C040AE49A4F217651810F5F139C425CD /* PFRESTCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 16784EC95D6273ED6752D7B64213E746 /* PFRESTCommand.h */; }; - C1B85ABD14ED49BA35A4D5265DEB7122 /* PFMutableUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = 81DB7CA7AE90A4BA6CA4297DF013CBB2 /* PFMutableUserState.m */; }; - C1DCBB421C9D9B70A11D5B59DF9021A7 /* FBSDKSendButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 23EF53286E86923DB4C02DDCCA3A21CA /* FBSDKSendButton.m */; }; - C1F4CDAC9CA5FE6D7CB0081CA2C324AA /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = FADD5491782A7EB7B850FCCD70452A0E /* BFAppLink.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - C2109470083A011CBF0F9E49068D88B1 /* FBSDKTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = F094D3053EC8059B43C8FDE85B6CC097 /* FBSDKTooltipView.m */; }; - C2406F161CC120D07B885E6D8D930DB3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - C2503B39C1C2D967300A807F22D1E892 /* RKMapperOperation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BA732D4BA53C90B93834949CEB41543 /* RKMapperOperation_Private.h */; }; - C2974D56740D2B143BA77AA3509AC10F /* PFObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = AE094855CA351D584BD24BBC12AFB3F8 /* PFObjectControlling.h */; }; - C329A2C3C249A90EDB60FC6A339EF9E7 /* PFSQLiteDatabaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB98FB4B596C25CC1243E4E50B93731A /* PFSQLiteDatabaseController.m */; }; - C343BA12ACC7E8A1AC5463DA206136D1 /* RKObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F840FB713741211963007A36C4C972B /* RKObjectUtilities.h */; }; - C3508C617AD42C6C7408ADD4A07E4676 /* RKValueTransformers.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B6C7232F24CC263AED71695EF279E34 /* RKValueTransformers.h */; }; - C3B1E6F9F461A3253BF8E3430905C0C2 /* PFMutableQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = 623C2B3361739718CF09561BA4D026B7 /* PFMutableQueryState.h */; }; - C3F55093F84D852D9EA113F49D7A45B2 /* AFXMLRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D2CAB276E3575E9D3DF2E0990BE0F69 /* AFXMLRequestOperation.h */; }; - C4EE4B4647BA408211F27846E6200FE3 /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 377BAEED2390B90A3A797FBF573227C9 /* AFJSONRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - C5172C7357A4F357EDE4944A55EB4799 /* PFURLConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 917E881A4D1DE9E99ED3B7606F09E16B /* PFURLConstructor.m */; }; - C53105DD999BE471CFE79E49C78876E4 /* PFJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EAF15F0F0DEC2E2FEC93095CB96203C /* PFJSONSerialization.h */; }; - C5393F0246F98DAE25615EC3DD478518 /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = CD2EA7078774EF7F78C945F81FD00274 /* FBSDKWebDialogView.h */; }; - C568E296A558287E14B65E5E078CB870 /* PFSessionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AEFD9424D0770F6E0BC692CE0AEE27B /* PFSessionController.h */; }; - C57EEF06E76A210624FE97692F3569DF /* PFObject+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = C26C64018F45E6E09F72163E759ED45B /* PFObject+Subclass.h */; }; - C5925266C50DA857D903C5BEB587E7F0 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */ = {isa = PBXBuildFile; fileRef = EDF463E3926C635EC2862C35B35EF0C0 /* FBSDKGameRequestFrictionlessRecipientCache.h */; }; - C5B1AF644B631A4EFD9F5906174E5580 /* FBSDKShareKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A2200960479E4759E2409514013ECE9 /* FBSDKShareKit+Internal.h */; }; - C65CB0D6735491709C9373251CB51613 /* PFDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 99E458C281E7B58FB283CD3DD6EC7CC7 /* PFDevice.h */; }; - C6643189C3F72B706900C785D63D1260 /* FBSDKSharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 433C981127868BA24B0F88745E7CB575 /* FBSDKSharing.h */; }; - C6F3BD5EC9F02F543DC1AE79F35DBDD2 /* FBSDKCheckmarkIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 81F2926280C12B9767563CFF770FAF7B /* FBSDKCheckmarkIcon.h */; }; - C7211D3C98D5D275A3598C792B879C2A /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = A49E03FC7C84FA3293B38677DC681CCE /* FBSDKErrorRecoveryConfiguration.h */; }; - C81E336F8975161708D61907D4BECB52 /* PFCommandURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC4419E8BD5B8ADC92BB34FE1D6FC78 /* PFCommandURLRequestConstructor.m */; }; - C8F19E6DFE73A0B5BCE6E47ED67E4904 /* PFSubclassing.h in Headers */ = {isa = PBXBuildFile; fileRef = 7329F4C215D23C5B157437CD3ED3DC86 /* PFSubclassing.h */; }; - C933A60476A5EBDB9A82574B7BFDAE6D /* RKOperationStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = A397240CB17A369FA7286D7ED09FBDD2 /* RKOperationStateMachine.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - C971A3D41DB725E39B62BB285C71C602 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = FA8008ED57F2E69D54C3AEA23F96BA4C /* Bolts.h */; }; - C9AAD787079AB91D540B2756E1EF5ACB /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8288294A4CE8FE42A9FED3E1514725 /* FBSDKDynamicFrameworkLoader.h */; }; - CA1C8CD372D64F4E529A6A9C938CE543 /* PFHTTPURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = C0F87532434A412B133BDCA0E76634EA /* PFHTTPURLRequestConstructor.m */; }; - CAD3986F778DBCF207A2C0FFCA781B8F /* RKValueTransformers.m in Sources */ = {isa = PBXBuildFile; fileRef = 704C843E9911E15531BA4307B0AB6D03 /* RKValueTransformers.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - CAFEF18BDA8E890B2A34E2F062ED481D /* PFMultiProcessFileLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EC7D96BC9F20D61C8C0611234289492 /* PFMultiProcessFileLock.h */; }; - CC4ABE41A3D33815B2E5D706EE5EB7A7 /* PFHTTPRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D56D65949ED50DA5A35630E0B93DDB5 /* PFHTTPRequest.h */; }; - CC991729BDA464C7B9795D7AAC0A8F49 /* PFRESTCloudCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = D47B3859C74BA3AE467FE98CFA3EF2A7 /* PFRESTCloudCommand.m */; }; - CD078679449BAC5362C1E6A7EC58D0F6 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C37F0ED993AA0D0D75072F2D2A6865AC /* Security.framework */; }; - CD0D8051BB45134BC9996732E8943B71 /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D2DCC014C9FB0F4706377719D5E23C9 /* FBSDKAppEvents.h */; }; - CD11060540E1FD78F974E30302AE395A /* PFKeyValueCache.h in Headers */ = {isa = PBXBuildFile; fileRef = FF82E57178981723142A0A7CBC372284 /* PFKeyValueCache.h */; }; - CDCDC39FD4BD597F9171D1C12AFEC71B /* PFOperationSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 2515970C08E7445D9A26AC8952E7FE41 /* PFOperationSet.m */; }; - CDF1776F197A349F242D0418BA069855 /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B98304BCBDE12F2AE18BD8F746580A4 /* FBSDKColor.m */; }; - CF3C3F13840C14F05C1855797B0B2E5E /* FBSDKSharePhotoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E52C541820F569B77A87A851D648583 /* FBSDKSharePhotoContent.m */; }; - CF40CA510403A77414543BB76DFE4884 /* FBSDKLikeActionControllerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 335878EBC1626AF73529ED5CDC829E08 /* FBSDKLikeActionControllerCache.h */; }; - D1840F29C46B62C16A3A6D9AD6989746 /* PFAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = CDD6D2BC7E281738DA57375BE59728C9 /* PFAnalytics.h */; }; - D18B21176DA8F8A2169AA06636F7D2FF /* PFSQLiteDatabaseResult.m in Sources */ = {isa = PBXBuildFile; fileRef = D4BD0B686B0EF4B81ABCF468BE4F3F99 /* PFSQLiteDatabaseResult.m */; }; - D1AF91CB46215FCCEA2F679CF6667F16 /* PFRESTFileCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 225CE2C43ADC4EF1A17EA9FF67B4F977 /* PFRESTFileCommand.h */; }; - D2B2D34B0D45985A59E6D8E0323DFEF3 /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 778AD9DB2CF0543C914F6BD394974650 /* FBSDKShareOpenGraphValueContainer+Internal.h */; }; - D2E9272E48AC9EE46E077B11011DD71E /* PFLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 26871A94013EE429FE6FE9F7ABF2A9A2 /* PFLocationManager.h */; }; - D2EAB48F7E5D4DD2A120803D4B599772 /* PFProductsRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E16BBB83C9F9B91092969D2266317F0 /* PFProductsRequestHandler.h */; }; - D348092A1C02C27E402FD7E5CE9DA7B1 /* PFPaymentTransactionObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 8786F55C6BCF0316006C8213CA9340CE /* PFPaymentTransactionObserver.m */; }; - D3493E749B7820B9A78BA0BCFF41952D /* PFFieldOperationDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FFC8DCDDC208CBB816476EDF7085EDB /* PFFieldOperationDecoder.m */; }; - D3B63387E28EC3AC74C36A14C22334D6 /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EDB6A316CDD5D018128E1D3136DFC1B /* FBSDKGraphRequestDataAttachment.h */; }; - D3D9D375FCD71243C619C6EF5026A26F /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 78FBD963927DF94B45B5FF19AAEDDEC0 /* FBSDKCloseIcon.m */; }; - D3F62AE3F95B41661AF77F4CB967EC60 /* PFRESTUserCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = C73D0298550B4AE265F9F155D23B10D7 /* PFRESTUserCommand.m */; }; - D4824EEE4046BDAF6F5A1C824CB8CD69 /* PFObjectEstimatedData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C6660D91D6167EB784831B0571E2F52 /* PFObjectEstimatedData.m */; }; - D4CE914F5ED7216451DEB5D5B9DCF76E /* FBSDKLikeObjectType.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C2E4681A2F967A6C4E522E08078ADC0 /* FBSDKLikeObjectType.h */; }; - D586EF4534B4B9C1ED860C49F9FFE6C9 /* RKTestHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 30E24C0CC2F297CA249BC9496B1273BA /* RKTestHelpers.h */; }; - D59A0303B864AF244B2644CFCBE81A58 /* PFReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D488D8E4B776014CDEE5E6EF762C08E /* PFReachability.h */; }; - D5A92CFE08A253A3C62DD4F37C8DDE86 /* PFOfflineStore.m in Sources */ = {isa = PBXBuildFile; fileRef = CC5344A37B8F373E012354E281A66841 /* PFOfflineStore.m */; }; - D5CEC5EAAA7E87EAFEF9CC6698EB64AF /* PFMutableRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D37164FA87C3325903A708109C92A81 /* PFMutableRelationState.m */; }; - D5E50E373823D2CBA317B52A85ECDB46 /* RKPropertyMappingTestExpectation.m in Sources */ = {isa = PBXBuildFile; fileRef = B34970E9607C4D5CA7FD440A0E9D4EB0 /* RKPropertyMappingTestExpectation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D640F592E8B89903E1F007453508AF11 /* PFInstallation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C3E03A90536DD5330B859DFE31570B6 /* PFInstallation.m */; }; - D645D7ECDB737643D71DFDC7D0EF51DC /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 323A920BBC78CC4F32DC36633840DF3E /* FBSDKCoreKit.h */; }; - D68C66187F69D3C94DECAD1721706031 /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = 49ECF8C520F56BF1EE925AEC28EE0110 /* FBSDKKeychainStoreViaBundleID.m */; }; - D68FAFBD744D9F40FBAF34C3ABBE57F9 /* PFCommandResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EB95732F4D4CA886A89094CFD467D4E /* PFCommandResult.h */; }; - D6AE65B5B0C104A53AFEBA40EE56BF0B /* FBSDKSharePhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = 63188CFF04051D2C52F225740A033D43 /* FBSDKSharePhoto.h */; }; - D77E4511F8389515B0EEC62D96418311 /* PFPushChannelsController.m in Sources */ = {isa = PBXBuildFile; fileRef = C45F387672BF56893F587F1601A4A671 /* PFPushChannelsController.m */; }; - D8393532E1BCB8F5A241FBD6B5915143 /* FBSDKLikeButton+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 38A6D9AA344FD2AE5B4D70FAD5062AB4 /* FBSDKLikeButton+Internal.h */; }; - D8731A50BC6E296EF8910706907303AC /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C961228BEA0830266F67F826D8BD866B /* FBSDKServerConfiguration+Internal.h */; }; - D88C209C8E7E7DE5ADA119895BE96C8D /* PFCoreDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A58330FB326FE4593BBBA3411078B43 /* PFCoreDataProvider.h */; }; - D8DD521788B7FF5F0F3DBD9D8A44BE4D /* FBSDKLoginUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DFCEA97612DEB2723DF40E6FFFC5D26 /* FBSDKLoginUtility.h */; }; - D913F5B9A2D6A81B047DC2805ACB7F91 /* PFPushUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CAACEFFE369BA8C9440D6CD08EC7727 /* PFPushUtilities.h */; }; - D936A464317E7189D4808D81F719F27E /* RKConnectionTestExpectation.m in Sources */ = {isa = PBXBuildFile; fileRef = DEF44C93EA8108B4B9EFC4B4644446CF /* RKConnectionTestExpectation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D984F13A369C80259E00E1ABACA927E8 /* PFQueryPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = E17F4E0596F024D9F44812A5786F7170 /* PFQueryPrivate.h */; }; - D998190E2220FC38EF0166E22F8A3ADF /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 29D48AAEE67B134EE8B0622C1BCF7F8D /* FBSDKGraphRequestMetadata.m */; }; - DA2BAF58CBAF597A7E6562226C6A40BC /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BAAF0724B9090137B718DFDA6EB9C1C7 /* MobileCoreServices.framework */; }; - DA6FEF39DE15D4138126AC5AB7118A35 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CCC11B45A7E2D9A95182BA1D01D60F9 /* SystemConfiguration.framework */; }; - DAA4EAED7C7A73C4124FBB17C2E2D07F /* RKURLEncodedSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C16B289C2694A9F01E5AC4A40F5BBC5 /* RKURLEncodedSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - DB644EAC2BB8ADC18B158F5E2B54ADEA /* PFURLSessionDataTaskDelegate_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C5BE6155E6E796DC929232CFE0BA3938 /* PFURLSessionDataTaskDelegate_Private.h */; }; - DB85C33A007936865BE9DB308E27B35E /* RKRouter.h in Headers */ = {isa = PBXBuildFile; fileRef = 596492B6CEEB060FE00A87B8565F380A /* RKRouter.h */; }; - DBCA64F9596F8284793034014DE1A649 /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 76865DCF9853952106158A4BF7621602 /* FBSDKUtility.m */; }; - DBDFC45578DA12608DC69FBC5E82DC30 /* PFDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 5221830B08D22B86274AFCA65E93CD48 /* PFDecoder.m */; }; - DBEA4B61BB4FCA89E6DEBF42D257395F /* RKResponseMapperOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E574880420D8D97A424642A6B5F02579 /* RKResponseMapperOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - DC3A6B49827A61D98003EB074A3463D9 /* FBSDKGameRequestContent.h in Headers */ = {isa = PBXBuildFile; fileRef = DE37807E0B1639A13221C0F6E94C015F /* FBSDKGameRequestContent.h */; }; - DC4AFBD593CD7C15E8C85BE50C2A4DA4 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CCC11B45A7E2D9A95182BA1D01D60F9 /* SystemConfiguration.framework */; }; - DC4B946518DF342C5E5287B7CCBCED86 /* PFRESTCloudCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = A6ABA5D37C50A0B8B9B785D774D332A5 /* PFRESTCloudCommand.h */; }; - DCC043007FBCC58468B29C60D3A74EF3 /* RKRelationshipMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = F9A46E7E5599417031AAC9FDEE8F6162 /* RKRelationshipMapping.h */; }; - DD31C197056FA652D3BF1274DF5E2908 /* PFACLState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = AD297F39854C24CB012AB880A8F72FE9 /* PFACLState_Private.h */; }; - DD70E09D858BF03C89C82858C764109B /* PFPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = E6525F64D2B6147E9FCBF6D10A5CB4AD /* PFPurchase.h */; }; - DD92EF07C28DE99B4E35DCB69981FFD0 /* FBSDKBoltsMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = A7E0C2515B7C55E949D9562B88288232 /* FBSDKBoltsMeasurementEventListener.m */; }; - DDE2AFE85B97C78711AE7DAA39EC0323 /* PFCommandCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DA2C4DB80EFCE1F0AA9350F23EA627D /* PFCommandCache.h */; }; - DDF12781498D7466B17FABB0F7B09EEA /* RKTestFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A04D42ACCA3BD87E3584E6ACC4F56E6 /* RKTestFactory.h */; }; - DE20A5E7464643352B7CBC57AA18AD28 /* RKMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = BE80753CE5B8297DCAAA5C864D7D7A5B /* RKMapping.h */; }; - DE391D622204F7FBD288734ADBF32665 /* FBSDKShareDialogMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 260BC0B46C2DA2BCD9F62462348F6673 /* FBSDKShareDialogMode.m */; }; - DE7CCCF622BD5C3BD1AE6AE50C35F297 /* PFUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = A9E407E843F2555171E0CF773AFE8CAA /* PFUserState.m */; }; - DED63556CD89F027BCB5024069D17BF9 /* PFURLSessionUploadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = EA9765B74BCB3C4EC7701224F0BF1249 /* PFURLSessionUploadTaskDelegate.h */; }; - DF333C3A04F0BFF1C78FAFDF99BC0C59 /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = C1A7C3AA5681EC1EBFD4DD40121772C1 /* FBSDKViewImpressionTracker.m */; }; - DF9C8DFC91AE8F06A56D1F42B67A6F4E /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 5927976E25757090DC699126B558DAD7 /* FBSDKErrorConfiguration.m */; }; - DFD7418E4229FADCB3AB85CF73F581F1 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F140AB891150C6CFED7DD2A7B4A62B2 /* AFNetworking.h */; }; - E0107B4D675BE030D6BB97600270B98F /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = E6FE7D7622EC7CAC9524E96D99D05722 /* FBSDKCloseIcon.h */; }; - E08AC3BF6B05C1466250A83E5863BDC3 /* FBSDKShareLinkContent.m in Sources */ = {isa = PBXBuildFile; fileRef = D2C9DD7C685BBD2CC7EAB4A3433549B4 /* FBSDKShareLinkContent.m */; }; - E0A83A172053DF72389A5B2646F8DDC7 /* PFUserState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 79EF5DA0025B0FFF67DFADD5492A17E1 /* PFUserState_Private.h */; }; - E0A85D8E914368D87DEE75F0ECE2082A /* PFPush.h in Headers */ = {isa = PBXBuildFile; fileRef = 26CFE764B4CDD5F929831F42EDA41A4D /* PFPush.h */; }; - E0EE720B924E4F4B4B269F9BFF9BEE6E /* RKErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = 0704D1A252C21153AADCFF76B76A34C8 /* RKErrors.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E159D9561B3F15E9433F18184C3572FD /* RKNSJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = EF5B4118C2BC93EF32D39A9E3A70073F /* RKNSJSONSerialization.h */; }; - E1DE390E8E60E0B867407C70A2829CA8 /* RKObjectMappingOperationDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C12D518D08748E88B0F70890764B8CD /* RKObjectMappingOperationDataSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E248EE46DFAF1C2BE7957D07F9951BD5 /* PFQueryState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E01D38ECEA62C477A8C7BEE503A7547 /* PFQueryState_Private.h */; }; - E2AD35CB32DF2CFD7505333AF7A6F4EA /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = F467F77ECC07330116C0DD45D3349ABE /* FBSDKAccessToken.h */; }; - E2B5F7FF677D9CA39663F3A0AD09874D /* PFCachedQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = CCBA933D3A40B5D03B01E6CC64A2A3A5 /* PFCachedQueryController.m */; }; - E2DC88E170ADC175F5C438C3C7CD0E87 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BBEDB49F89EFB9B6465EF82E36C1A49 /* FBSDKURLOpening.h */; }; - E36FAD435FEC0C33404BEE1546D263CA /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = F3DADC1F7DC40E0218DBF16280C4D6D7 /* BFTaskCompletionSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E3A082B2A0A8612B107247EC76E801BD /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83F2B1D939804694C73E7FCD9AAF4090 /* CFNetwork.framework */; }; - E3B5EAD8212CDE114D7D75603964B728 /* RKResponseMapperOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = CB3C48DDBE655AE51D1A39695796468E /* RKResponseMapperOperation.h */; }; - E46A37E2CEEDBB1B8811B7905FDEF504 /* PFMultiProcessFileLock.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E7251464FBD8CA6364DE9833E6D6E7 /* PFMultiProcessFileLock.m */; }; - E4C05F4451AAE50C0F479AB2E7405E44 /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AE04A545B1286F2CB61AF35B668B691 /* FBSDKMonotonicTime.h */; }; - E5A13167291337523078AB9C0CB3125B /* FBSDKShareOpenGraphValueContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = C3212BA31250F0C8DE1BD1FAF02207C7 /* FBSDKShareOpenGraphValueContainer.m */; }; - E5E59305DB00887CA8ED80A221284F32 /* PFRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = E1A63FDB8FFEBABA917E2E14E9051471 /* PFRelationState.m */; }; - E62754EFD8CE2472A35DABD367808319 /* PFRESTFileCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = B12980AF5F1F26F33906C73A2F38C5E2 /* PFRESTFileCommand.m */; }; - E63519CA8D7880BB295B7EA51A8166B6 /* RKPropertyInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = E85C8888E5F1BB8E85DC368D6DB18999 /* RKPropertyInspector.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E6F6345B4E00718444ACDCFD544E27E8 /* PFCurrentConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D3002035E29C7449C791970871E10EF /* PFCurrentConfigController.m */; }; - E7555C005BF32F0FB0FB32265B0B3122 /* PFACL.m in Sources */ = {isa = PBXBuildFile; fileRef = 622A44BCA22902069E3F240357CD45F3 /* PFACL.m */; }; - E79AF2F84270D6E6CE16DFEDABCF3E01 /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CA98D8F458A2FFECCD9C3CF7AAEECFA /* AFHTTPClient.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E7E38551016FB52D5C85B4E3B0B7A169 /* PFPurchaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = 786806355E0E877557AA2507DDEBACDD /* PFPurchaseController.h */; }; - E8E7BC50C1B835A84120AF1A5303B050 /* PFMutableACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = A3D3F0FD5623B320704891A12D20A91A /* PFMutableACLState.h */; }; - E8FF623864D7334389BCFE69E83CE7C0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */; }; - E9B4420EA45357975AB697B99F2AD065 /* FBSDKSharePhotoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 69A5C357BDE6663375E1CBBBE08B3440 /* FBSDKSharePhotoContent.h */; }; - E9CAA4FDAC6AE903159D04DC4BA45474 /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DCA15FE1B9E0D7F046522F5521C2102 /* FBSDKLogger.h */; }; - E9E1E5F9CE1A7DE976690D18B60B3F61 /* PFHTTPURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = D3EB8E5131AAEA8F16E17BF016FB5B61 /* PFHTTPURLRequestConstructor.h */; }; - EABAE5228ACD4A5BE6F30A53F80B9C1E /* TKTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A2306F062D21537BCCD17B8E1265AE8 /* TKTransition.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - EB51DA32AFB1341B412DC8DB1EA76D67 /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = AB4729343B161E71126051A18EF77E49 /* FBSDKCopying.h */; }; - EB6745E9ADD2F0BC654769A8E83E80B3 /* PFRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E6A42EE42B9EEE445B28BDD96FFB1C7 /* PFRelationState.h */; }; - EB6BD184A263DBDE2AA3BE77EF737DAD /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE00E564F591F731C2B1E11065E0ACF7 /* CoreGraphics.framework */; }; - EB73AF4C9D61D61F7B1BB0F6C573118D /* SOCKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 89622454B6309852AD9687B0820C02B0 /* SOCKit.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - EBA18B1D4DD6CDA28B9223682CAEFC44 /* PFHash.m in Sources */ = {isa = PBXBuildFile; fileRef = 5624419A8EA110F018B6E1D6B2D454AC /* PFHash.m */; }; - EBC1D03210026C1333FB24C053316AE0 /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 05E89D5ACCE63E55AA659EFB8A18A9B5 /* FBSDKCoreKit+Internal.h */; }; - EC1BBA6BC932AE411B6EC1C444056979 /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 24F93C0C8EA467DEFCB4CBDB150BE439 /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - EC4E03293E8AC92E74CAF38BCC259132 /* PFEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = D3C67EEA3F3F6628396F657744BD378C /* PFEncoder.h */; }; - ECB49CF77D90D2E003EEDB483338FE72 /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D9866C1156E2B6A59D2996350AB5075 /* FBSDKAppEvents.m */; }; - ED1BF10F7A865B6BCFB5E9077E589041 /* PFCommandResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E8E523D8195E9B1B9C90976CF0540B8 /* PFCommandResult.m */; }; - EE75A228F7AB72AFC98019C41213ED37 /* PFNullability.h in Headers */ = {isa = PBXBuildFile; fileRef = D4A9395593F078B48F3B87B9AC890E89 /* PFNullability.h */; }; - EED79B8DC9EFDFAC358B7D5AABBA7D95 /* FBSDKLikeButtonPopWAV.h in Headers */ = {isa = PBXBuildFile; fileRef = 14BB822079E39C44A662265EDC832BED /* FBSDKLikeButtonPopWAV.h */; }; - EEF20312B4111CDCF4165EC2CB7B5C54 /* lcl_config_components_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F73B326076ED018A7156E4BFED6A5EA /* lcl_config_components_RK.h */; }; - EF52CCC8678558CD77AF0992B2ED2B85 /* RKObjectMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B29A50B713DB33904E5298D3E082CA5 /* RKObjectMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - EF8361AF122087D0CA9C80EC6FFF6A5D /* FBSDKAppInviteDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = EBCC0954F36C8CBCF2C1BABC5BE29972 /* FBSDKAppInviteDialog.m */; }; - EF9B72EBED962989301AC194E32BF945 /* RKPropertyMappingTestExpectation.h in Headers */ = {isa = PBXBuildFile; fileRef = 056B8AC3C068967E144E9912F4D082E4 /* RKPropertyMappingTestExpectation.h */; }; - EFCAE7D0122CB2A05706BE24AA150329 /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D17058F2F424FB1C4E4BCDCBB95C1FE /* FBSDKViewImpressionTracker.h */; }; - F02B0D1C7F2D67E431DF0E4DE980BC34 /* PFCommandRunningConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 12DC95CF2C7DDD42977C94C97EB1637C /* PFCommandRunningConstants.h */; }; - F04F4F51E4FED1319EA3A101BE08B5CC /* PFOfflineStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 91BF5E929B1AC36CE7F99D1E1DC0ED30 /* PFOfflineStore.h */; }; - F062F607CD6999EC431C927F2213FFCB /* PFUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 12E1213C18161FD134F34314DF960015 /* PFUserController.m */; }; - F07F1D8F65ACCB3ED5CB7ABF7DA5FF0B /* PFAnonymousAuthenticationProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D28D403AA7A5A6F2AF7DDC6F991B98A /* PFAnonymousAuthenticationProvider.m */; }; - F0AE34C414FD3DF2264466C62BCBB1E4 /* PFUserAuthenticationController.h in Headers */ = {isa = PBXBuildFile; fileRef = E6D31BB8E52455350F1E5E4F1DB197CB /* PFUserAuthenticationController.h */; }; - F0E688E7768227054BDD40A9D2593406 /* FBSDKShareUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 25FA6116451E734C381D4F3606124CE3 /* FBSDKShareUtility.m */; }; - F0F01EFCBE05FF221F2083EDE6C2073F /* Parse-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FFAEA82C3ED7F7F1480E843DE336CB0B /* Parse-dummy.m */; }; - F0F027149637B8C7F6A7EA60C5CF8323 /* FBSDKBoltsMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C2FB169D00DE47B9815271C62B2D855 /* FBSDKBoltsMeasurementEventListener.h */; }; - F17179B7BA2DA6DADD5AA44942DDA6E9 /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = E6218FC4CE717BE3D2902995538A0A63 /* FBSDKDialogConfiguration.m */; }; - F17F8BEFC9816E31776391DA362ED4C0 /* PFInstallationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B187D31A1B35CF60BBFE402E7FEBF55 /* PFInstallationConstants.m */; }; - F18BE7AC26E9A094AE2C652CFC6218DF /* PFACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DEB605CCA159256A3305ABB92ADED70 /* PFACLState.h */; }; - F1B7580F71CE94519DF90F7301DFDC55 /* BFAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 989869E1193232EE4E322636E8236CEE /* BFAppLinkTarget.h */; }; - F1CBCA120CD2947B7C405851E7FFA7E6 /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C97568E00B081386FD3982DE3AD286B /* FBSDKGraphRequest.h */; }; - F1E0170758F896428FBE9811966F3E68 /* PFApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 87ABBAD2B5A5CAAE0AC4B4ACCADC1330 /* PFApplication.m */; }; - F1F3FB15F726B03CD49FC6A0195CF856 /* PFKeyValueCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 15218D870F12055E685D3D03517191A4 /* PFKeyValueCache.m */; }; - F1F9CEDCC428750CAF8C5CA8129E8F1D /* RKObjectRequestOperationSubclass.h in Headers */ = {isa = PBXBuildFile; fileRef = E22F95FAB4E982B3ABA1D6CB8C422794 /* RKObjectRequestOperationSubclass.h */; }; - F27976D070F7ADC10BE6FF4093AB9974 /* PFEventuallyPin.h in Headers */ = {isa = PBXBuildFile; fileRef = AE8C24FB91D52A7A902E7B6939B6EFC6 /* PFEventuallyPin.h */; }; - F3099F931E5CA8CA89707436CC765F2D /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBD6F5E77168A4A3133908261AEF1BFC /* StoreKit.framework */; }; - F3293A4DBA100B38D9669988A0E1524A /* FBSDKShareKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B10ADC87A857910D7585779303E279B5 /* FBSDKShareKit-dummy.m */; }; - F36C75B2D364521B66BFEB93F0AC8A47 /* PFObjectFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 6603759A59107C9EA23B8A6F0AC4524B /* PFObjectFileCodingLogic.m */; }; - F3DE094871B28D233F86D9227E7478D2 /* PFAlertView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1414B4582D8A53F4321084D4EB5C3291 /* PFAlertView.h */; }; - F413AB25B2BC215465A628FEE33F4246 /* FBSDKLikeActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AE382F6E1CC26178A9E3BBA1C473DEB /* FBSDKLikeActionController.h */; }; - F5382AA95E6ADCFF17F36184DCA008A6 /* FBSDKMessageDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BD5B84023B338476E31F24FC2D689A0 /* FBSDKMessageDialog.m */; }; - F54A30D366C9CEBE9424AC2EF31E195C /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 52BA832282A6296691283BA45A6A6C75 /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; - F570FB09B9F8F909125EE214EC64B5A5 /* PFBaseState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C258A4DB466828F6F75FA69D17B7A98 /* PFBaseState.h */; }; - F643790D3224850C9A4E9654A85B75A2 /* PFFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 034F3E05ED59E7ABCE82F0A079D5958F /* PFFile.h */; }; - F67264DD2600D04095272B1BB6F2636A /* PFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A226C9DD413F0CCC4F3BFD7DE0A82A88 /* PFNetworkActivityIndicatorManager.m */; }; - F6932B5A372E9D096040DE73D753E2A2 /* PFObjectLocalIdStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DFEAC992B1C77BFB80D23F81E446DDC /* PFObjectLocalIdStore.m */; }; - F788D05B1BCA23AD7E90E458BEA3FF05 /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = 36491A250DFAF0D996CC5E60467D5DDA /* FBSDKError.m */; }; - F7B6E9F743BE561A7C5252D196E1408A /* FBSDKLoginManagerLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = E657E2943C7D36EEAE242DB32FDDFA8D /* FBSDKLoginManagerLogger.m */; }; - F83612B741AE8F04DD7367C0069652FF /* RKErrorMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D726415722488F38181C0A46AB22051 /* RKErrorMessage.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - F845D092B8C31C4DFFAD4D932CC60A53 /* FBSDKLoginKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = ECA1143F260DB3AEBD94D656E8DF43EB /* FBSDKLoginKit+Internal.h */; }; - F8CA9FA9E14B2BB4F47A0DCCA484873B /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FB86554EB764C69DB563344FB6E4583 /* CoreLocation.framework */; }; - F8CCC74E3F902C66ADCB6FC49A518C3F /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 53BF5D67AF06F0302A007B18D6FBC694 /* BFTask.h */; }; - F8FE0C65F75E52F82F84E13D2B0A0F42 /* FBSDKShareConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A1DDF7D1694E9370A0A4CE320117CE /* FBSDKShareConstants.h */; }; - F9569D66DA03563FB9E44DFCB07FC939 /* PFInstallationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DC41CC348E544292C37294C5A1B50C4 /* PFInstallationConstants.h */; }; - F9FB9AC0BC858C6F6E2D684C255272FB /* PFPushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEDCBDD3D1427BBC37838C408E7AC2E /* PFPushManager.m */; }; - FA2C80A7C39D1B44B797709642EC08B2 /* PFInstallationIdentifierStore.h in Headers */ = {isa = PBXBuildFile; fileRef = F216A6FBB231D294F8E752EB582540AF /* PFInstallationIdentifierStore.h */; }; - FA40CE5BCFEBAFA19CE2916AE884FF57 /* BFAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = 2628FFC954B5343B03FF5E09727D6E1A /* BFAppLinkResolving.h */; }; - FA4C7EB7A14FB726E93A69F1A7810705 /* PFUserFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C330B991A689F502E36122BCC0AC499 /* PFUserFileCodingLogic.m */; }; - FA58F7FC3EC9BFFFCCCF855E5884803F /* RKURLEncodedSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = E2775131C0FDB72FDE0A1D5A4A819778 /* RKURLEncodedSerialization.h */; }; - FA618E7DD8CB586A62073380FA9E713C /* PFCachedQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E0C4FA92D8641B9361554A63982E78E /* PFCachedQueryController.h */; }; - FAA258E646C66811927302E7B2CC9809 /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E608FDFE07ABF00DB09AE6F9F9DA28 /* FBSDKCrypto.m */; }; - FADE57698ABC737DED667D6C7A77FB0E /* PFMutableFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = 71D26DA17DCBC3B6CC47B2FCA63BF991 /* PFMutableFileState.h */; }; - FBAD3370AEAD92CD2F7F60BB6743FEFD /* PFCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B613D1BE89F1E4403B99C3E5DCCD2E4 /* PFCloud.m */; }; - FBF30755BBEC3C5FBA7D5463CCBBA04F /* RestKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FD329036B04DED5ACADFC2A64E1A81E3 /* RestKit-dummy.m */; }; - FC80B648D04C0C24045319E648B2A3BC /* RKHTTPUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FAEC79833DB40A28030BB60070264FC /* RKHTTPUtilities.h */; }; - FCAF408597CAB99CF982209BB5537EC3 /* PFOfflineQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E2F75F68AFD577F425752D70A27C101 /* PFOfflineQueryController.m */; }; - FCBFA0453DBB0F8F4AF1357F4146786E /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5050C345988F196D52CCAA4890D4A5AC /* FBSDKGraphRequestPiggybackManager.m */; }; - FD2144C4BC84FA87FB99AF5DF4A659D4 /* TKState.m in Sources */ = {isa = PBXBuildFile; fileRef = 9936ED8D363FA6B09EA60941182E9F3B /* TKState.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - FDD7628668487CAD152512E075B03461 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C7078E789BF9691EB3849F6E4E49A44 /* QuartzCore.framework */; }; - FDD7E5D9ED6B3C14DA9AAC2E76E41BEB /* FBSDKLikeActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F072CC41C2003448531F2F1DD2C3BAF /* FBSDKLikeActionController.m */; }; - FDE2BCBED2CDDB457C2E9BAC04F2FD0F /* PFObjectConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CA3B417E38375FB5F145C27AD082AF9 /* PFObjectConstants.h */; }; - FE773D7E55768620FC122E7ACFBA4034 /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 657D21EB951543C1C5D4637E284EB184 /* FBSDKTestUsersManager.m */; }; - FEB09DE83CDF651DE7AA0D755192CD2A /* PFConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = EC9CD4C5A5B393EB5D90DB05D6FFB6BC /* PFConstants.h */; }; - FF079D3BEB117F01203AF1170BD693F9 /* FBSDKShareOpenGraphAction.h in Headers */ = {isa = PBXBuildFile; fileRef = C90D137341FF777D06387AF9304BB376 /* FBSDKShareOpenGraphAction.h */; }; - FF7BAEF5786AD43C26852E973A2DFD9C /* PFPushController.h in Headers */ = {isa = PBXBuildFile; fileRef = EEE7C4904A076EEBF17B54F44707AAB5 /* PFPushController.h */; }; + 00163060B2D0C8870906DF0994834474 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 310FB096BFCEB1B13B424CBD45CFD485 /* FBSDKBridgeAPIProtocolNativeV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0070EB3F66CDA21C66777FC4BF9452F8 /* TKState.h in Headers */ = {isa = PBXBuildFile; fileRef = 96D93EAF0FCC8B5FBB56E2E9C45F9D62 /* TKState.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 00CC1284C4EC48A67C89030A464A8E22 /* PFBaseState.h in Headers */ = {isa = PBXBuildFile; fileRef = 70AED028A0517D0D287C17C074D896DC /* PFBaseState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 00F8DED37CC833980AEAD7E7BD46C99E /* YALAnimatingTabBarConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 3110767D99127E63D027AD02ABECB5CC /* YALAnimatingTabBarConstants.m */; }; + 012374FC7BF3C42864F8A6D9790C7836 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 72320D3C2B4F77715F2449CF313C8A0F /* BFExecutor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 01A64680ACA654A0CAA6A98B76A2C015 /* PFProduct+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B3414A44DB406F571B8FC80279C438E3 /* PFProduct+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 01A9C95FB174BF00024C127D94FAE9F9 /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FEED7FB2327B849D9B3FB01D3E04329 /* FBSDKApplicationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 02437AFB910783C6BD25E492758C46D9 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EEBA4E2BFC884C1F4B170F5BC7DE8B77 /* CoreGraphics.framework */; }; + 02551F124693A0300B457431E75E3AF0 /* PFUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = 58EC4DACF873F5F93A5E6D16A993CFB8 /* PFUserState.m */; }; + 0277D1C85C0C1E1358C7AAD044B40757 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + 02A63183E1CD64A36C6C93A5A33A2CC8 /* PFObjectSubclassingController.m in Sources */ = {isa = PBXBuildFile; fileRef = C01287FF93CF82A4FDD567F7D956DF46 /* PFObjectSubclassingController.m */; }; + 02AB91490EAB577085129C629FFF9775 /* RKRouter.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D0C7535C92E775C8051BD27D3C5A4B /* RKRouter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 02CA14777A858D78607A52D739E01BFD /* RKLog.h in Headers */ = {isa = PBXBuildFile; fileRef = BA5E53C4F97DE65CA639266FC59D62B6 /* RKLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0301C8C6C03DB444A51A086E29571535 /* PFRelation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FEA53773CB8E3FB3A322C0B4389B7A5 /* PFRelation.m */; }; + 035EEE9572C6A81E25704CE1C650473E /* TKTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = B7A6D2F5DC2549FF82CCCCA100238F29 /* TKTransition.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 04562DEDFEB5549638FFF3A71A940FF3 /* FBSDKLoginManagerLoginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C154BACC4BC2017771F24B43682204 /* FBSDKLoginManagerLoginResult.m */; }; + 04BE2CB66242D07246BFC9F2F167E9D2 /* RKStringTokenizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 83B82BD0C23C3508B8C4235B574CB5CE /* RKStringTokenizer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 04C21C0C58DD5EF39D9E5A7C9E060F3C /* PFMutableUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = 128F630995A27DB0544A45BF67DE2E4D /* PFMutableUserState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 04CF8AD033C179325590EA52685AE224 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 733D51F628A8649F5A0790296BA3E42A /* CFNetwork.framework */; }; + 0524E3768D3DFCF2E4E232DCF896DC2D /* FBSDKLoginKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FF16FB1B2249D1B7C33F0B28BE8FB32 /* FBSDKLoginKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 05606336B17E8DE7AFBE9B0AD554763D /* PFRESTCommand_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F74C54135672148EAEB4C34B19F94625 /* PFRESTCommand_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 05B58B7A1E2075505350D130514006A1 /* Support.h in Headers */ = {isa = PBXBuildFile; fileRef = AEA5DE805E0990CD7BFA9099F1B80A0B /* Support.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 05E1825A084B452E32D6063463B3FDDB /* PFBase64Encoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 94115F4D46CF02AFA9A9A36A9D041A73 /* PFBase64Encoder.m */; }; + 05F9EB16C3ED571BD0592AE09986458D /* PFRESTPushCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E3D6F638163E7F25D3C3782B2DD5E9D /* PFRESTPushCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 06084AD9120FF151ADF37E92A8CDBE83 /* YALFoldingTabBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 6699EE8CE193D5123B3CF8DC8EFC4CA1 /* YALFoldingTabBar.m */; }; + 06B899F5B92A7366CDCCD71E3C28E039 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 733D51F628A8649F5A0790296BA3E42A /* CFNetwork.framework */; }; + 06CC5B30A43EF1C3B526DEE380D8FE8A /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A3F443B3D92D2C8F03FFCD004B43E5 /* BFCancellationToken.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 06D70E3ED56542E6E150732ACE707585 /* FBSDKLoginButton.h in Headers */ = {isa = PBXBuildFile; fileRef = A832477BE2A9E7163C4E27DAE8B3DD8C /* FBSDKLoginButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0799DA50D0F7AB26E77782D14A4D54AF /* PFAnonymousAuthenticationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 29076EEBE727F01C11336FE621EEA957 /* PFAnonymousAuthenticationProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 07B38C643DE61100C2471A5E2061DB6D /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 5454AEF03510A2D84BEA0194B430C57D /* BFAppLink.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 07ED5D3AADD2C1C41BD215C19C4E48C6 /* PFPushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B0A1E7C301317BD56AD13ED50A48B5C3 /* PFPushManager.m */; }; + 081F6FAFE0FC8BD6EFC6A517B0ADB614 /* FBSDKMessageDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 74462B5EFF7650ED4744047E928DA11C /* FBSDKMessageDialog.m */; }; + 082462DCFDC7A19F595743F10C8EC7EB /* PFInternalUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 03D900F84420FEA97FC38820C59BB2E6 /* PFInternalUtils.m */; }; + 083A7602FC1ED21B8878784115D662F1 /* PFSQLiteDatabaseResult.h in Headers */ = {isa = PBXBuildFile; fileRef = CCE7602032D39C48B4B558FFA15A83BF /* PFSQLiteDatabaseResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 087E876A250108F964ABA6E268BE5846 /* PFEventuallyPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 76268C1A5595073CBD957E1BD34F8AEE /* PFEventuallyPin.m */; }; + 08A92B11564DA8300821C2F9E8851DB2 /* PFAnalytics_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CB5646F48F8BFA683EF37662695C41B2 /* PFAnalytics_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 08D84FA7E2537052744E64C7025A84E7 /* PFPushController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBD6BD031241526C280059BD26BDE75 /* PFPushController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 091B7CD914893E81C39427757E3FB0FD /* RKValueTransformers.h in Headers */ = {isa = PBXBuildFile; fileRef = F3BDAD35FE37E535B22528CF954B4332 /* RKValueTransformers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 097CE360D698CD7CC46F59B370318ED1 /* FBSDKLiking.h in Headers */ = {isa = PBXBuildFile; fileRef = B9E52C40CE2CD49772146B44F17F058F /* FBSDKLiking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 097DE14824DA65BDF81E4C5A2D73566F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + 09B7E2F7D97660C4794BE77A6D3F805A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + 0A1E88ACE6A4D6D41EA0634DB6A94256 /* PFObjectSubclassingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E2A6616C4F11E50D862C39BA82A0764 /* PFObjectSubclassingController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0A444B70A312CB6B95D395C0CC7CD98F /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E62E80C06B8D2394C56D10220D1CCB6F /* MobileCoreServices.framework */; }; + 0A45B6A339543EC83754D28F87523802 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6114EBA3A5CB7CB8ECE0A9BEFA6DB026 /* Security.framework */; }; + 0A6A5BA0942FF096A2D641E8F49C0F79 /* FBSDKAppInviteContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E2286118EDD86F67D14DA0213725FB6 /* FBSDKAppInviteContent.m */; }; + 0A737FDD8E364395D31D09A4510E8833 /* TKState.m in Sources */ = {isa = PBXBuildFile; fileRef = DD38F8B2DEDE8021308CAA1FD5E08EA0 /* TKState.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 0AAD3502C3D2BB1E3E7F4377C5111691 /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 589A686D162F058AE68A85DC19762E4E /* BFTaskCompletionSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 0AD287666FAFC490CAD4CBFBF47431AE /* PFCommandRunning.m in Sources */ = {isa = PBXBuildFile; fileRef = 64C153FEAD3A0694849A9B9865BF597E /* PFCommandRunning.m */; }; + 0ADF250658B54EA51FC500CB76783CB5 /* PFInstallation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4805B0DB126DE968E42BAEA762A89F17 /* PFInstallation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0AE875BA34FB652137DC559C9691F736 /* RKErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = 88F4DDD745B9F0253403AF9B24C6F051 /* RKErrors.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 0BB5BE4B4A8C410F2248DE8D14BB4663 /* FBSDKGameRequestContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E2D4FECA8A777A6DD1410FCFBA85EBA /* FBSDKGameRequestContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0C08BCEA5FE46370A36AEF6BEFCC41EA /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = C3D4F1A7841BFF26FD3010CAB4A45340 /* FBSDKAppEvents.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0C132DF2B2F5648112EE398656EE0962 /* PFRelationState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B44F43FE13A2621B29F734B3AD99BF68 /* PFRelationState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0D0CFD86DC5D95BB25D65B84461D031B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + 0DA197860573F04B990BB55CED47EB2F /* PFRESTSessionCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = B407B07136A8C18FA91C2B5C0C66B115 /* PFRESTSessionCommand.m */; }; + 0DB80F6F97A5BEB7A1839EBAF3FCA9AF /* FBSDKSendButton.h in Headers */ = {isa = PBXBuildFile; fileRef = DBBFF8049227DD76047C14A4FC7F378D /* FBSDKSendButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0E089188D74319CC3ED824652B776895 /* FBSDKLikeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 65911DEF87A9DDCA7864D750D03DCF2A /* FBSDKLikeButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0E47EB82346F3A93F6FC3AF3AEA778E3 /* PFConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = 837C54D3D72E985D6E6FF3BBEA8D1EF1 /* PFConfigController.m */; }; + 0E688D49284AEE76C3B651E3CFE54C94 /* PFFileState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 697F8C874C7CA2299F6F34AF16B60BA4 /* PFFileState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0E6F9756BA82ADD778780C58B4055D79 /* RKManagedObjectRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 38716A9E624A2682EE064BB7A4E4B034 /* RKManagedObjectRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 0EA556CC3DBCD3806D56508332A5FB59 /* PFMutableACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = 653B2C591481812B2FB9DCA0C314CA21 /* PFMutableACLState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0ECA745830D272585C68ECDF8C5569D7 /* PFURLSessionCommandRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 006EA441F280F24D02FFA3BABCECC824 /* PFURLSessionCommandRunner.m */; }; + 0EEABB9AABDED87C8B9F585D82062063 /* AFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 82B067532E3BF3282258482B488C6D65 /* AFURLConnectionOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0EF19D78C0EAEF1A39F029284A518C6A /* RKNSJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = AEAF382A07FA2B9C90B3DA379C01ED05 /* RKNSJSONSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0EF3F474C4F968CC78351909F0C76A70 /* RKValueTransformers.m in Sources */ = {isa = PBXBuildFile; fileRef = 53750007AA7392F76DBC9237B62429C9 /* RKValueTransformers.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1002547EB73320964BC1B10D757EAE2D /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = A367DA3EC3F8D359202159E683A9BB6F /* FBSDKUtility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 10B055EF9DE001B011240568093FE8AB /* PFHTTPURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9171C157C53514711AFD5FF984F31433 /* PFHTTPURLRequestConstructor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 10B85E5BCE0729452FFC72D7BB376F59 /* FBSDKShareDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = B415178073B9AF9554447EA73F804B50 /* FBSDKShareDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 12824DFDC12C14097AF56D630AD2D8FB /* PFPushState.h in Headers */ = {isa = PBXBuildFile; fileRef = F197F5F3111E02DC7CFE618154DE5269 /* PFPushState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 12D4BF5F8785937DA809F9D90E6FB565 /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 52FB1857E533909822A211A7F21E7067 /* BFMeasurementEvent_Internal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 134441CFC16A905CB51B70597FF4B61B /* PFObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A325AA32060E16C9CED99F16E65FDE /* PFObjectPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1345483A67FB02C778D2D3639930AED7 /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E8EC5CFE550AB9001C39619CF9FB4D4 /* FBSDKBridgeAPIRequest.m */; }; + 138917EC340B4D359138CD16C4383D1D /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = CD2A28C739FE44128E510AA92662F1E1 /* FBSDKCopying.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14D6E494E0D7E904AD960AE602238451 /* PFObjectFileCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F962944E2CEA6B4A8913F2C5BDEB690 /* PFObjectFileCoder.m */; }; + 150FD95BCF7C18E9717A863C6B645DC6 /* PFPushChannelsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B25D2830AB2AF5C858A10271039E131 /* PFPushChannelsController.m */; }; + 1540A63B0BF8B0C782AE91A5B67FEF38 /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = F632B4241467D0929F63833DA56E7443 /* BFAppLinkTarget.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1546A097DB78CBCC3268F3EB5541DE8F /* PFUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EF9E7E124CF7FEC59917A8A59D36C9D /* PFUser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 156967851249D30F7710773EC47EB1F3 /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 68C02417550547218FA95151404F94A5 /* FBSDKCoreKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1570AA3EA1A480ADB0757319269174D1 /* PFAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 05D15859D636D2225F8443617E021DFC /* PFAssert.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 160CF44612AC90EC6ECF79F089BD4C6D /* RKRoute.m in Sources */ = {isa = PBXBuildFile; fileRef = 55F180B6F1337B63280EF7EE6FE6C2AC /* RKRoute.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 166FC271D473C88842832FCADFC20AC0 /* RKErrorMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FD6AC1526EDBB971021943756B7A67D /* RKErrorMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 168754543C69B5763F69864E4180CA20 /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AE60E42A7DAEEDEA8449020B959B680 /* AFHTTPClient.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 16E3CEBF59A2D8E5A9B04AF979FDF14A /* FBSDKShareLinkContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 64D0D3AB1BF1748F064867B7CE0DB23B /* FBSDKShareLinkContent.m */; }; + 1700592C1709E23CF04D2CA3F4BEC83D /* PFSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 45756A25BE2E60F2173BFFCAE8E9BABB /* PFSession_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1708C44508662C2D5867EB8DB869B93E /* PFQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = FD283F04FC1522E51E474E074287984C /* PFQueryController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 17D0DD03C923128099A9737F317E5D29 /* PFObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = F92FBE5E1BD5C2804DA747E481794947 /* PFObjectUtilities.m */; }; + 18128AAED9116077EDF701E1098C9954 /* PFQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = F141BBF337790457F2DAF41F1F0011E0 /* PFQueryState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1861C84C95D4B50B28765572F4F0E09C /* RKResponseDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 37287465895B3FA00A50FD0231EC03C2 /* RKResponseDescriptor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 188C54485E358878521C5C15A0AFE626 /* PFObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = A599CD4CAA3AC99E0EE59D0EE6ABBD4F /* PFObjectControlling.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 18BA1F40271FF44B3A0508ABFD1600FF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + 18C091723B432584B085686061A0CEE0 /* FBSDKShareOpenGraphValueContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = BEFC9E6A35A5430AE7926645007C9C25 /* FBSDKShareOpenGraphValueContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 18CF81105FB6E0685A26F83F128F4E47 /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F8562AEEC62C495A2C6A5DCD3FA7ADDE /* FBSDKButton.m */; }; + 18D7A90C450EC893C4428E23D8B47E9F /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 288890641419271C571594FA0568909D /* BFMeasurementEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 18EAF4167A160D50758673E49250402C /* FBSDKAppGroupContent.m in Sources */ = {isa = PBXBuildFile; fileRef = F89DFF8EBC2C4ED2A61178F8775BBBE3 /* FBSDKAppGroupContent.m */; }; + 195B7EACB9E277F950B7C1BC314BB968 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EEBA4E2BFC884C1F4B170F5BC7DE8B77 /* CoreGraphics.framework */; }; + 1961C4A9AD59A951688C260E91482AA0 /* PFPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 4395A73F86029763A96B4A9BDB9051CF /* PFPurchase.m */; }; + 196864B89AC2C8A21D31595D9A7E05A0 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A73024D1555D614CEC62670F070F5A9 /* BFCancellationTokenSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1A8EA6EABBDB4F9D5170BBC9F31E9FB9 /* PFRESTAnalyticsCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = C471619F560094B3BB41378638A0D362 /* PFRESTAnalyticsCommand.m */; }; + 1A9C308173F24606298E5693D359015C /* RKObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F6776613E173DE4D99A1473A4C0B7A3 /* RKObjectUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1AD36782B0606C9AB186A075420F1EA3 /* FBSDKShareUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = CC5F6833B3EC9A54CD4FD6CAFC5E61B3 /* FBSDKShareUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1AF2BFF9AAB59B86448DAD27986826D6 /* RKDotNetDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ADCEFE17BDF4D7075F5F77EB703339A /* RKDotNetDateFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1B11A9CD89258EFE81856DDA597C2826 /* PFGeoPointPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FD3D595219E68629445A5326DAF89B0 /* PFGeoPointPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1B3FD4504118844C3450B1F75C2EC2B1 /* PFObjectSubclassInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D9CA35ABDD2925A9EF401DDDFDF3DEA /* PFObjectSubclassInfo.m */; }; + 1B732797EE1CF10C328DFDC742E866A6 /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 656A6050B3AB59B9F95CC2C4394EC1D7 /* FBSDKErrorRecoveryConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1BBA57EDDB94507AC5DAA85D6489D942 /* FBSDKAppGroupJoinDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A8BB3FBFEE9E1BDDB295037754F4DEF /* FBSDKAppGroupJoinDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1BF89E326EBB865184A47A1B76EA44B6 /* PFOfflineQueryLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = ABCED4FB329CB88CEBB2D990F236F8D5 /* PFOfflineQueryLogic.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1BFCFA4856B9BE43C5FB24EA58662689 /* PFAnonymousAuthenticationProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CB585E247C1F3D47072B64F704F03B7 /* PFAnonymousAuthenticationProvider.m */; }; + 1C2AF8394E4C8C86B7F42AF545C80281 /* PFPropertyInfo_Runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = E76FEBC923D494E63C53B86C5D25ED29 /* PFPropertyInfo_Runtime.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1C5FC139D9A229EC782BD8D26071C29E /* BFTask+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = F786873C808C35EC234BC3F1215CB314 /* BFTask+Private.m */; }; + 1C906268C5AA213F8CFCDCC95D00C718 /* PFOfflineObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = AB08BCF1E8867BB674582E6292B917CD /* PFOfflineObjectController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1CE911A8315F4C7A5844415DC9933260 /* PFRESTObjectBatchCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F8DF2C96C207C665982A18CF849D6AF /* PFRESTObjectBatchCommand.m */; }; + 1CF19FB5FE95E9F9BB9D9249F8A28276 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + 1D66DABAD4D2C36AAF8062BE3D55C7DB /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = 421972FDDA0AE2550E0FB8F3DF8B6CB1 /* FBSDKTimeSpentData.m */; }; + 1D840EA09132B2B34413FA16BD0E1AA5 /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D2FB78825DE91D3944F3483650D27E29 /* FBSDKApplicationDelegate.m */; }; + 1DA6669105771BA38E2C69FDC90286A6 /* PFObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 7085A58614F89184F48256983144E2A4 /* PFObject.m */; }; + 1DBC9B7D710CE712D9F4C8E497DE1E0B /* PFSQLiteDatabaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = A88639112812A657127C2D4DEED2CDBB /* PFSQLiteDatabaseController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1DD387B9558E7C1759425FCA6C52D4F5 /* ParseModule.h in Headers */ = {isa = PBXBuildFile; fileRef = DBF30E4A65710CFBCCC809C891B94888 /* ParseModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1DD3895D39730377AEA9BEA6D66767CA /* PFDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = EFB4DB04B2AB3F83A62C1D8799687945 /* PFDateFormatter.m */; }; + 1DFA8E2E3190F5321761EE4BE95C9ADC /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = C3F7D1EEFCFA50F7F774EDE30F5EE02B /* FBSDKUIUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1E8874FFFC0B19D20C001681F1942855 /* FBSDKShareAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 633C2A9E54BC58AA24FD4CB18067F314 /* FBSDKShareAPI.m */; }; + 1F2BB357DDF0A1CE916761ED5DBB98D2 /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A5B85D86C64A90A0CF498813B504388 /* FBSDKGraphRequestBody.m */; }; + 1F3D5A5A5067181846196EEC61D25961 /* PFWeakValue.h in Headers */ = {isa = PBXBuildFile; fileRef = CF2F482CF92A6BBCE8E46F23475EA72B /* PFWeakValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1F85CC0A24315E41F1DB39068E4684A8 /* PFPaymentTransactionObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = B506CB574291FFD269E218DEE30A8D84 /* PFPaymentTransactionObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 200F941DC68314422A92DECA8D213082 /* PFObjectBatchController.h in Headers */ = {isa = PBXBuildFile; fileRef = 468F4C50CD145E1DB145B2A3D109CC5F /* PFObjectBatchController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 205E1195DEF1603010BA47F3A8A39ACA /* FBSDKShareKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 357EF8470BF313B33261C55EB4D12327 /* FBSDKShareKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 206B7172BAA6262F77700E4347C0F8D5 /* PFUserState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1402676BAF69E76E84C7957AD539C134 /* PFUserState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2086289033B670D4FFE18F8578E911F2 /* CATransaction+TransactionWithAnimationsAndCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A92D4243C0F137302709F07AA614754 /* CATransaction+TransactionWithAnimationsAndCompletion.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 20CA33378056E289649C0616BF5C5E08 /* FBSDKLikeBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D5EC58BD4863BEC2A2723C8FA5FE9B0 /* FBSDKLikeBoxView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 20F4BBA2D5179AFF7A95275C2A285DD4 /* RKObjectMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = EDB3A467B0EABBCD096D79DC9AC1FD8C /* RKObjectMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 210C00EF879DEDEA7EB09EC8C91A80A2 /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0820B0D5F4674F138EA3BB3292D26CD0 /* FBSDKSettings+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 211063C2E328D1BA057D5952FAE72961 /* RestKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BAA0C25C337D44ADABB547C00BFE0D1 /* RestKit-dummy.m */; }; + 2132812C756FB96D0AB12B601F84A802 /* PFRESTFileCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 92A46B5132CB11500CEFCB4DA5AF636C /* PFRESTFileCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 21463E177BB9A98F321678568399855C /* RKManagedObjectRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BBAC5D8DBA7BF3C8638920782DCB03D /* RKManagedObjectRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 216D6126C206D951C489C95FD37BD8CF /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = 037FA6D5161E6EA0F72B070763EA805A /* FBSDKAppEventsState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2195051CC84BF57B982BCDD58C5ED1D3 /* RKConnectionTestExpectation.h in Headers */ = {isa = PBXBuildFile; fileRef = 836DD34AA9FD86CA7B162C11FF60F67C /* RKConnectionTestExpectation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 21C13796DE839F92D14C6CA50671E5BF /* PFPushState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 99FE93E37D759F30B7B5B5162DEB3D20 /* PFPushState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 21E2ED6EFD8559848B98705909DEA010 /* FBSDKLikeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E44DF993841344E4915FFD31A91D4EC /* FBSDKLikeDialog.m */; }; + 22080662EA8952370B284F798F16D4B2 /* FBSDKShareVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = 468E01C4FC5A39A8E37ECC56F44B8F65 /* FBSDKShareVideo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 220F121D9EBCECA17B0FEC91209B88A9 /* RKResponseMapperOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = E7502CBF5FF5DDC2E45F3550840F4429 /* RKResponseMapperOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 225B422163530406C2D09DA1D7160390 /* RKObjectMappingOperationDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 420484544B85996994118EC3B407FE6F /* RKObjectMappingOperationDataSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 227CE567B059758E1C977990BFAD75AF /* PFDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = C3940D277F5BE2DF68360DE104260EC4 /* PFDevice.m */; }; + 22C38A31A84F31B9EF5B40892497DA44 /* PFLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A0F68606B3345FA797272EDF32783FC /* PFLocationManager.m */; }; + 22E435D60724A7D16B950FC453C5E34C /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = EE27DAB32337BD835F6F1C44CE941739 /* FBSDKConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 23F22339DEDBD778AB5D1DA13BFECC4F /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 373C4D681FFCFABB37EFA7C0EDB3C9E2 /* FBSDKGraphRequestMetadata.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 23F9280108D276942CBACF82E34E8821 /* RKRequestDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D68B95DF6CEEFD1E9A5D0DBEE6B89D8 /* RKRequestDescriptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2453E44572F93FE8CFB1E9C2B07F8142 /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = C49F84564221E62FADF63F94A1EA171D /* FBSDKInternalUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 246339D060F03B20F84E44F51AB7D0B1 /* RKErrorMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C6BB6FF4ABE22CD5FED5099BB5DA52F2 /* RKErrorMessage.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 24FA587A203EB1838E92394C128065EA /* FBSDKSystemAccountStoreAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = B385E214776DF89692B91553D7FCD7B7 /* FBSDKSystemAccountStoreAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 25435509864D8830160361E72AA5E31F /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = 363A2C942125F80203914292454D9AA9 /* FBSDKLogo.m */; }; + 2556A6696795A705FF3AAA00CAAF1879 /* PFCoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CCDD526B69067FC32BF946A540F4C00 /* PFCoreManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 25C893D3F81918CA2748927B5F02A595 /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = C0E3792F488D1F767C3F48F576C16951 /* FBSDKBase64.m */; }; + 25EFA69D90204A5BFBC506669A97C683 /* PFFileController.h in Headers */ = {isa = PBXBuildFile; fileRef = B900275E03F4A9C6416A5077A6E72931 /* PFFileController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2617C1651BDE360A04512FF5DFEE55B1 /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = A64CECFF3E3D0A64DA3BF8E6FB583C41 /* FBSDKMonotonicTime.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 264457704BDD888C92CAAEBE20E709FC /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A3F94D10D8725691A1ABC86A1405D5C /* FBSDKTestUsersManager.m */; }; + 267A29AA34A9D757450EBE41A4A5F40B /* PFInstallation.m in Sources */ = {isa = PBXBuildFile; fileRef = 212312E37823B602015F8558E2380BE5 /* PFInstallation.m */; }; + 269ABC30C8CD9E74E46491F5B6FB9D17 /* PFMutableQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = 23A9DA06DB5F829FD8BDD6FD23E82A45 /* PFMutableQueryState.m */; }; + 2763640E3F9F25BCE1BC36B60364A740 /* FBSDKSharePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 35B3E5E386C38B964CF695D9AB977807 /* FBSDKSharePhoto.m */; }; + 27DAF03799622546C24B79D72DFF1003 /* Parse_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BDEF7A52E57E764142D42EE5DB63FD2 /* Parse_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 27F35B04936EED379E9B73ADDEEE0EA8 /* RKURLEncodedSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 58EB40198CF6F7F4E677035D64534FDA /* RKURLEncodedSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 28748DDD8E8A2AEB3502CBF69AB4BDDB /* Testing.h in Headers */ = {isa = PBXBuildFile; fileRef = F0CFA77570DB7AAAE7861BC27A0A45A3 /* Testing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 28E0C7D4EAB83F94E8BED7A8A6588F17 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E566B5A1AF002DF94450B717E7E8A195 /* AFNetworkActivityIndicatorManager.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 28EBF852662F1A1004F220F004B2FB27 /* PFFileStagingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 54A2B00522521F43E6925FCB7040FA7A /* PFFileStagingController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 29E9B7D045DD5219B0D17A1289A1E228 /* FBSDKShareUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = E7CB4124E5934CC10279CE22C1F3D5E5 /* FBSDKShareUtility.m */; }; + 2A2484F1773729BB256973910B7340DB /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B388397746D26347C7AE282AEB53D77 /* FBSDKAppEventsUtility.m */; }; + 2A9CDB714501BF7551C376135E06CB77 /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 230215250F2BC4E1CCBB87F678DC507C /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 2ADFEB8C12A6F30CE83BC5AB3316C6E4 /* PFKeyValueCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 33EB14F8B74929AAF1B17B2931B6AF30 /* PFKeyValueCache.m */; }; + 2B868B020F9C681F76C506EF6BC9A801 /* FBSDKSharePhotoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 71197DCFE9C806E6F574A696BE01DFA8 /* FBSDKSharePhotoContent.m */; }; + 2BE316C68D11EAF02F9288B25FEFF2B8 /* PFPinningEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 79791F337B75C7A9E86B2C16831BA3B4 /* PFPinningEventuallyQueue.m */; }; + 2BFE426FBB2EF7A91EAC0893828A3F5C /* FBSDKShareKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A790CE27C36D138858150ED6C2FC85E5 /* FBSDKShareKit-dummy.m */; }; + 2C04A25EF87B39A7378F852D3A251514 /* PFQueryState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 698C95FE97ED8FCE0AF17A04C769ACD7 /* PFQueryState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2C61A57B4DA38760CFE42C7F3AFF489E /* PFURLSessionDataTaskDelegate_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 32D23F94B2A86BE0E61787BC2DB18576 /* PFURLSessionDataTaskDelegate_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2CC921A632237030D7C642FF4D3E2216 /* PFUserFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = AB067014760D1E79CE3A58172F0227EB /* PFUserFileCodingLogic.m */; }; + 2D3A10AB5D0CAECCEEDE49132B5F4330 /* AFHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B012D386ED7D06A4EF5353DAB2DD66D /* AFHTTPClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2D4F9228E33B7CB031B9344EA22E3AE7 /* PFRESTQueryCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C1AC18847E2EFD352913578BFCE568F /* PFRESTQueryCommand.m */; }; + 2D61DA1D31B497355FA3519736497111 /* TKStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = BB22C7EB016209266A6A46D552308368 /* TKStateMachine.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 2D6AF7788EA8D30E93BEB5F0CAC89C68 /* PFAnonymousUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 0149B0C82CA899926A01FA591E4710C4 /* PFAnonymousUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2D7129239566598FD9FC8204D9D26793 /* PFCloudCodeController.m in Sources */ = {isa = PBXBuildFile; fileRef = 95418B78D785BACFEAFC48B338DE9AF4 /* PFCloudCodeController.m */; }; + 2D8855CDA875AC8AD7AE0DFCC4250493 /* YALSpringAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 66FDB0B731FFB4CE1465D2BF7FDCD263 /* YALSpringAnimation.m */; }; + 2D8BA321D46E84251856DED2E84239DD /* PFPinningObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = B639B99C4CD7C16D2AD6DD82DD08FA5A /* PFPinningObjectStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2D9EF1B077CBAAEB072C4E04FDA46BD3 /* RKMappingTest.h in Headers */ = {isa = PBXBuildFile; fileRef = 491C07A26268A25977860299C1B04D2C /* RKMappingTest.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2DC488DF3C90086C17087C2BB72189AA /* FBSDKMessengerIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 05CCBF923371A8F436D56A7223B904D7 /* FBSDKMessengerIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2DE0A008B557C991779E119572071163 /* PFFieldOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B10427DA50494463C21D709E70487D33 /* PFFieldOperation.m */; }; + 2E29ABDC3BF7E6B7FF03C02FDD08B45F /* PFCommandRunningConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = DB1A535EDDE87E526D1C66FA9BEDAE70 /* PFCommandRunningConstants.m */; }; + 2E74D36D8D8BAD8D55380944015FD120 /* PFSQLiteDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = D01E708EE28BD1140C9AE0D2329F2E19 /* PFSQLiteDatabase.m */; }; + 2E8782D39FA5B415D526EBE5C8AFA32E /* PFAnalyticsUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 9151CBFA951CC2C02B03C255F48BDFEE /* PFAnalyticsUtilities.m */; }; + 2E87F7494BC2023ED83CCB2C93E67B69 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = FE17A124811A1964D6CA532CA4312C8C /* FBSDKBridgeAPIProtocolWebV2.m */; }; + 2E926A8C36CAE55E20568469F19BD6DB /* RKObjectMappingMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 33D211F268ABCC6126E0AA222AEFB496 /* RKObjectMappingMatcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2F4C116B777496BAB15E7D6442D221BF /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 768A924021D993B1CF8F4AA7BD2A0B5A /* FBSDKErrorConfiguration.m */; }; + 2F8A6D5D298FE5F63CFA909D0A63D26B /* PFRESTObjectCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A1B02F9DF967F2FFEC317D614A2136F /* PFRESTObjectCommand.m */; }; + 2FB0531893E490ACEC556B0F43C44591 /* FBSDKLikeActionControllerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 71C1EF327C1FCABF7C18FBE944C3E96B /* FBSDKLikeActionControllerCache.m */; }; + 2FBCC263A4CF83AF299AAC0CEE750AD6 /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 04FD35F060DAF86D25973ECA13C4B1C6 /* BFURL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2FC94CCAED9DD09203580A70DECF2A4A /* PFCommandURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = A0078CE9F7F7BB672D734ECE689D766B /* PFCommandURLRequestConstructor.m */; }; + 3053488EEEBCD0385576315DBE9EC11E /* FBSDKCheckmarkIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 664DB729E26FCE7792E743269AA1D35F /* FBSDKCheckmarkIcon.m */; }; + 307D54623092903A6C49A7C219BA3252 /* FBSDKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 99448AE40302A804BCEE91E92302B14D /* FBSDKMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 31A1542159DF368E8DFF632BA01E4B97 /* RKOperationStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C7247AC09710B122EB8AEBC235DE9F /* RKOperationStateMachine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 31B7827480A2AD779C80D1E428F0F758 /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EF150B806961F2973DC836A0D2A1391 /* FBSDKKeychainStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 324B462950BF05B9CF8C8B4E1556D1A3 /* PFOfflineQueryLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 01C1843D737F908141E29AADDC66AB8B /* PFOfflineQueryLogic.m */; }; + 32659ECDEF93706E5DE3C89FF10C3725 /* RKRelationshipMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = BD723A8B8848E0084E24732986ADB0F7 /* RKRelationshipMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 328528E69AE673F4223F2B27CF07EB90 /* RKPropertyMappingTestExpectation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F17239611A3B8B424D42FCD9B529DA9 /* RKPropertyMappingTestExpectation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 32FE2EE3C0D371A093A87DBD3D5A378C /* RKMappingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9BCA0158D3FA6ECF2FB4D804EA8A83 /* RKMappingTest.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 336B220F124974D444746D194367422A /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 016FE71D37A737A72140AC6154407A41 /* BFAppLink_Internal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 33808782CCEF801D53209D523D9C7358 /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = B9D34B12F05BF9127D139B7586C718A0 /* FBSDKButton+Subclass.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 33E51CF359A60B9BF66BE9C279AB3E43 /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 40FE4E083CC5C40D0DF65A6B08724A1A /* FBSDKAccessTokenCache.m */; }; + 343BA26395BFBF73CFC3F42871C03BB9 /* YALFoldingTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B9F9B80CBA1DEAEF33627D58AB7E3CE /* YALFoldingTabBarController.m */; }; + 34B1786FA4EBC179AC660B83CF1A4F82 /* FBSDKShareButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AC646B2CF1A54F8852DB65ABDB82D96 /* FBSDKShareButton.m */; }; + 34FE928299E6FCBB43826BDB66144FD7 /* FBSDKLikeObjectType.h in Headers */ = {isa = PBXBuildFile; fileRef = 572AFF6ED4416D1D697F241FDD4DA3FE /* FBSDKLikeObjectType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 350EB8FBF8DEF90D9AF0E48E068BFA92 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6114EBA3A5CB7CB8ECE0A9BEFA6DB026 /* Security.framework */; }; + 3515249853196B72457D26E35A75A0D5 /* PFUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB18FECF07D424856DF25DEFEAE675C /* PFUserController.m */; }; + 35599C4F9F10FC09064011AE354E20C5 /* FBSDKCheckmarkIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B79F3FA1E8F365CB494021D4EF3A3C1 /* FBSDKCheckmarkIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 35A2D271C4A91DC464251B9245103DB5 /* PFCommandCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 52CB9F69B642A0B3EAB1EA3DD8F5BCB9 /* PFCommandCache.m */; }; + 361A366D11CECA15C3B45FC3ACEDA050 /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = A8279D26889EDF822F6A7F2AEC767E66 /* FBSDKGraphRequestDataAttachment.m */; }; + 36CAD613B46C6F3F7B092EDDE2BFD87B /* PFApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 21AB5F2776814B493AE224A090442A49 /* PFApplication.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 36CB170B89C0B4642CB663616BC47E5B /* PFURLSessionDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 60F0D5F81E5A0E8F5FFDC41567CCE3CF /* PFURLSessionDataTaskDelegate.m */; }; + 379BA3F1B3C1F43A72C4C17B61215FDE /* PFProductsRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = AFAF91B7E5BA7253D501E8786B415520 /* PFProductsRequestHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 37C6195201D97353994A4B323BD7EC39 /* PFMutableFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EEED09807991F565F9159AB28C2112 /* PFMutableFileState.m */; }; + 37E32240C69433B8D41BF206C15BDE91 /* Parse.h in Headers */ = {isa = PBXBuildFile; fileRef = 321F060F2EAD3712AE8975662D9AE049 /* Parse.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 392D8D316A7A626D07173B6D67773E19 /* RKMapperOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = BF53A464C16A680DC9C16D7D05C05F74 /* RKMapperOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 392F1056919E38CEDEB5A545DA4C820B /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = 63D635232970F5FD839031F4052A247F /* FBSDKLogo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 397590A70BEFB683D21C67F996FD749C /* RKTestFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = ED7B68BD4BE4A662816CBE0A294F6500 /* RKTestFactory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 397DD286C0935623C81E4AA9AE2E4C2C /* PFPurchaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = B9943DF525E97D5F98EC58CF7865A2A0 /* PFPurchaseController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3A4A4D139CCD0A806197BF7A723800F2 /* AFJSONRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F5A634097C8C984304065334CBF5BCB /* AFJSONRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B2C344B306A3FB19169E1F4AA62E103 /* PFACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = DE71C8926E171BD5AB6618D07D0A3797 /* PFACLState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3B34B9CF9A34E235FD457006303C757D /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 91029F40DE711320BF2AA3DF5F22A51C /* FBSDKErrorRecoveryConfiguration.m */; }; + 3B88684885F6A92894F9B1C6DF2CB127 /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F5232ABD627549C1BEDB8630661C661 /* FBSDKAppEventsDeviceInfo.m */; }; + 3BC5621A2DA38E302E4D3A891CAD35CE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + 3BF789DD91B049645722960CC51287EB /* CATransaction+TransactionWithAnimationsAndCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = 75495EC377930B0233AFC77A4D61575F /* CATransaction+TransactionWithAnimationsAndCompletion.m */; }; + 3C0DEBB740DFB646BB292668FF187A3C /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = E8152227AD2D6CE25BC7888D919F6BD3 /* FBSDKCloseIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3C31ED01B7466FD05173FEB6F86953BA /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 202A67338938E6682685B9114E8F7E4D /* FBSDKTestUsersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C6DF2FA1EA6BE60192A77E7270D6212 /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4429585279C58269AAE37EC7814214BD /* FBSDKGameRequestFrictionlessRecipientCache.m */; }; + 3CCACCF079947A68FE7E62AF0303CAC3 /* PFConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = CD7593640586B201BCD9939EC8B13017 /* PFConfig.m */; }; + 3D91615B81BDE2505C751BD7D4FB5EDB /* FBSDKLoginTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 703806AC44DC3DAA0B029C076D84918C /* FBSDKLoginTooltipView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3DDFA2D0FCEE1978143B685D1C3A9D7A /* FBSDKLikeControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 75FD15A68FD0466D803569EEB9CEBBAD /* FBSDKLikeControl.m */; }; + 3E16E0BEF69F5BA97F8E9F07A617E509 /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D9BF17D12A6931CC30A002B5C28BF065 /* FBSDKAccessTokenCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3E41E38FF7A69B85994E73EABE7FF57F /* PFJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = FBD9F8EA50253D95A8AD97BAD86E10C0 /* PFJSONSerialization.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3E9B5AD53BD51F897F832FC014D1AF5D /* RKAttributeMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = FBA2D90AB903058236DD7AF5CE16650F /* RKAttributeMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3EC6C51767337E859A4F15C5FBC1770E /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A4AD6C82C6BD994B92B71460DABC8FC /* UIImageView+AFNetworking.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3F569B5B27E0603B07C858321F23FB9B /* PFInstallationIdentifierStore.h in Headers */ = {isa = PBXBuildFile; fileRef = E0812753D9AFC5C954E63E141EC3C899 /* PFInstallationIdentifierStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3F7A18D123E044CFAC2A0D1322E727BF /* FBSDKShareOpenGraphObject.h in Headers */ = {isa = PBXBuildFile; fileRef = FC83BAA3A130DE0ECB081A56D1DB7917 /* FBSDKShareOpenGraphObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3FBCAD82A3A69CB7850136E6D8613AD0 /* PFSessionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BEED67AEB0626E1D942E397F7BFE7C8 /* PFSessionController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4029E4F75B527907B5ADAD8E3E0264E2 /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BFB1907C3EE1ADA7D44437276AC93C07 /* FBSDKGraphRequestPiggybackManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4075B036E32B6718E9B9523BC0059DF2 /* PFProduct.m in Sources */ = {isa = PBXBuildFile; fileRef = 16D6292D8FAE18DC28FF78404DB719D9 /* PFProduct.m */; }; + 41CCAB61BAA581E58CB30F56F9F372F4 /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = FDE18DC658FE492CB30B98AA058CD6FA /* FBSDKGraphRequest.m */; }; + 41DDB4BD2A89F44F733C82B65BE76ACA /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 52CF96E683AFDF73C07731C7ADDADC31 /* FBSDKKeychainStore.m */; }; + 427DD66260DDD2F6345D7196B90E3DEE /* PFPropertyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 170E287A22801514CAF6C2EB522BE4A5 /* PFPropertyInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 42F787E07A69C27C09E049303C8E8530 /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EF647DA4D46882EAC603DA80B15C546 /* FBSDKServerConfiguration.m */; }; + 4348B4727F59DB738A1A33721BB29AA8 /* PFRESTCloudCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 10A0FDA427EFFCE744C8CB7862407B47 /* PFRESTCloudCommand.m */; }; + 435602DE03BDC37F6F724BE3A943F1AB /* FBSDKSharePhotoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3F27BBC16C6C75FB3E5345F12F61A9 /* FBSDKSharePhotoContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 438CA2F1118781D63B470E41E4C7889C /* PFFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3D98875600AB165C66C65D6E15E83A /* PFFileManager.m */; }; + 43A7D7D1E2E0828AC2FCD3155471E59E /* BoltsVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = B147CF02EE8864D4E87D27D74C926A6E /* BoltsVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 43EDB848BEACB773962B589EC73AA826 /* PFNetworkCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 5924FEF18CC5E1704FD384C65A5F55D9 /* PFNetworkCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4426214315E4D8313D27EE3F16CF8C13 /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 62A64EB7D48743BA4492B0267BB0BC95 /* BFURL.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 444F2DDB714D8D83F59764F223E6EE70 /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 005EDF3610A35FCCB1EC8C406162532C /* FBSDKServerConfigurationManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4458C6C127D3030A17A791B3BA9A0CE0 /* FBSDKShareConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0CF790970A7CBA811F918B49965546 /* FBSDKShareConstants.m */; }; + 44731A7D10EF496E7DED3DCA05410767 /* FBSDKShareDialogMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D1A4EB19150431EC20AA5717EFD6B46 /* FBSDKShareDialogMode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 44D4ACE5DF513BE2F82FE675BF0530C9 /* TKTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BDB55E9C39EE72564DF58E4922A0879 /* TKTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4505527808576A44D861B0A13154F425 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = CCB649BFD246522D91365614C0B9DD9D /* FBSDKURLOpening.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4508BEB10E935ADE1BBC8AD18BB3F581 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = CB84FD2F2C4E8EE506EE2E7DEC8B5F9C /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4575AA7C533C55013E14626E0CE50C35 /* lcl_config_extensions_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = 8714E7D607BECB036F81715B5C27F0ED /* lcl_config_extensions_RK.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 45F413D981B9ADFABBEA3675FE0017E3 /* lcl_config_components_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = DD920E6012362DC614A1701B8499680B /* lcl_config_components_RK.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 46434AF620227311479C776B81BA97F6 /* FBSDKLoginCompletion+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B3730F73EE5F25F746856381EB423BB1 /* FBSDKLoginCompletion+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 46A761F0B52B393302374F202159EF83 /* _FBSDKLoginRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B0743AD2B57375BCF911269DBE91815 /* _FBSDKLoginRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 46C77E33FBFB6CDD2042AFC7251C0192 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3783F1A59CCE93EEF653593AFAD5B5 /* CoreLocation.framework */; }; + 46E222D8EF5404BBB0ADEC81B1DF1874 /* PFRESTSessionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2B2346710518F3D818A44A68F02C5F /* PFRESTSessionCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4727F1C349747A7F96CA2EE6098BA7E6 /* FBSDKBridgeAPICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FBCAB70FB9A6977DE8D64B963124B26 /* FBSDKBridgeAPICrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 478F099B2EDD4376B8C1183745A5B4B9 /* PFHTTPRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F583CC3B015B36C3E3144C08D893552 /* PFHTTPRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 488F77FF13E79A72AD87E8B838E827E4 /* FBSDKShareOpenGraphAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 74F217FA9548DBD823F25F1DA863850B /* FBSDKShareOpenGraphAction.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 49A306F39FCE73FFB0E1A6589D331F35 /* BFAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = F5500331C2AE5ADC39A1AB40A74529FB /* BFAppLinkResolving.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 49F2BA3E1D32E882B51DC0A899D3C229 /* FBSDKLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BCE676F39C259B6C0BF1690EB5DBE25 /* FBSDKLoginManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4A4CF9C7D69DC9049FD677165FADA59E /* FBSDKShareDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 01FB35B0ADE41A152252E1ED0988B17D /* FBSDKShareDialog.m */; }; + 4A7FBB52488D368CFDFDB1B6516C2CE4 /* FBSDKMessengerIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = D52925260ED38A39BE15E60EFB8E7B49 /* FBSDKMessengerIcon.m */; }; + 4BABB36619011AA0B6039422203CFC5E /* PFInstallationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 35C47D77D154C6ACEBD15C0FA61A163F /* PFInstallationConstants.m */; }; + 4BC610C052636A802256616F808FD2AE /* FBSDKAccessTokenCacheV3_21.m in Sources */ = {isa = PBXBuildFile; fileRef = E736754D92F661C38E69F1CD3C7845B0 /* FBSDKAccessTokenCacheV3_21.m */; }; + 4C3A2F763EEE360861027C7097748A42 /* PFMutableObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = 48DF0E6F580F2A50C94F659383B45C1D /* PFMutableObjectState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4D2FE3A028403C4E9545B01159BBE9CB /* PFInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2694414E286680557D8AF8B1F6B64112 /* PFInstallationController.m */; }; + 4D4A07890A079F8AA2090CF76EF82A90 /* PFObjectLocalIdStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 8867D68940B55D23D0E9719E275BFA8B /* PFObjectLocalIdStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4E13085CB448418E957E9EB41D88F5E2 /* BFTask+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7A521656E2772319D441042C5D6FBB /* BFTask+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4E5A7BE76B5EC309DAB207FAFB7FE7FC /* FBSDKSharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 462B2CA402744EDC499ADDCECB7402D4 /* FBSDKSharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4EC1B8AAA4341E02B888E2CDBED626DD /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F8BEA71B93C60E891B29C80177AEC59 /* FBSDKApplicationDelegate+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4FA4189FA17793F898C1A79920893A7D /* PFMutableFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = 7677707275A2EF60830F578201163529 /* PFMutableFileState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4FC468A52568F12ED267007F0AD753FC /* PFPurchaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB99803775BDB8D089B8AAF8610F006F /* PFPurchaseController.m */; }; + 50570F0F317C5A916AD5BE1D82F49641 /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 01577EF1EEDCE5208D4B8AC6FDC7CC0B /* FBSDKGraphRequestDataAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 506994605B778659CB416E37C461D150 /* PFEventuallyPin.h in Headers */ = {isa = PBXBuildFile; fileRef = BF29DE6619DA26BE542969B766BDB8AE /* PFEventuallyPin.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 50A19E0D54B5ABC2DF718485876675BF /* PFRole.h in Headers */ = {isa = PBXBuildFile; fileRef = C206C3E9B3302C96684D3897F1D5A944 /* PFRole.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 50ED958AFAB156499B1D88CD2C0394B7 /* _FBSDKLoginRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 659D341D4BAADD4339DB44AC00772E9F /* _FBSDKLoginRecoveryAttempter.m */; }; + 512D2E7F3E98E29CD6338D40FC3CBEEE /* PFPin.h in Headers */ = {isa = PBXBuildFile; fileRef = 8780D2FFBC1992D6FDA23E5A3A81CF1E /* PFPin.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 516780FBAE8477C063977B67B0C4F64A /* PFCurrentConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1853537D2954FD958EC042517906C776 /* PFCurrentConfigController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 51EF9DAEFA15FFB025217BBE89F9A23C /* RKMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 05EF3ADB060D32A9DFF67851EBE647C0 /* RKMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 51F742896037EA588D6157B105922B77 /* FBSDKShareOpenGraphValueContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = BC784E483E0153507432EFCEFBC5638E /* FBSDKShareOpenGraphValueContainer.m */; }; + 5208CEE9E04A230A895075F81179E9C0 /* BFWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B2572E05EB18D8E55337D23E1AE67E35 /* BFWebViewAppLinkResolver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 52474B3F869DBA64CC57CC8E1031F87B /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 2041D4CFC252E37771FDA0674BAC5493 /* FBSDKSettings.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 530AC824CCD371BAA717F8ACAB33F958 /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 1231F575BA4305E598781441AF031F5E /* FBSDKAccessToken.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 531C2A042979E8EA3995593A85E4DDAE /* RKHTTPUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 542741718F1B59CF684D8D7D5EE9E4C8 /* RKHTTPUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5322CA0A34DB0348C3603AFAD04A7DF5 /* FBSDKLoginConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 2562632730FD0A59722B3C67E9C6C38E /* FBSDKLoginConstants.m */; }; + 5393685A37690EC1097162CBFDAD8964 /* RKPaginator.h in Headers */ = {isa = PBXBuildFile; fileRef = C9C2F85D16952EEE0714A294ED8EA605 /* RKPaginator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 53A73625D6FFEC0A47C83977EE7CDBCC /* PFDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E491204CD2D880B645C351FE76C1780 /* PFDataProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5449D946ADE982013F5C2069E0BE45F0 /* BFAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 048FF1F23681E364A43114EA047AB00E /* BFAppLinkTarget.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5482BE85008ECE92916F583C9A15378B /* PFCommandCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D05A09C1E9B8D6D162D9DBC753EA922 /* PFCommandCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 54D559AFA627AFA735FB0D6D878F5D7F /* FBSDKAppInviteContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 568923D709EECAD0783955444A4654F9 /* FBSDKAppInviteContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 555466B7EA6454B1E1968FB7A7BD1334 /* FBSDKBoltsMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 28C24077DDE26572ABFDFFBA58AEF0D2 /* FBSDKBoltsMeasurementEventListener.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5557E69BD0A14921486F9974F746737C /* PFCurrentInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = B98E96DBABDB51557464408244172B2A /* PFCurrentInstallationController.m */; }; + 55F36BBE4FE82BCCD0C9A4E06DC26BEF /* PFRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = 20476D5BF51291A996A02F8B096F7768 /* PFRelationState.m */; }; + 560BB49A70689476862EE5E1F179D36A /* PFQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 9892ACF2D0CAC9B9021724C9C93ABD4C /* PFQuery.m */; }; + 5624B5B3EB50D43FB54BACDDB45228AD /* PFPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B484974193BA8A4646BC070D4C0BBE7 /* PFPin.m */; }; + 565365EA7F73C65562A3FC4459E770B5 /* YALSpringAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 560B96C78B0C4903D500B1084F59BB7C /* YALSpringAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 57503516957EEFAFFAD7A789730E7B9C /* FBSDKShareVideoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 01B3303DA64A64E4B58FED1912BEFCDF /* FBSDKShareVideoContent.m */; }; + 5774AA430101105FF0F41887984D6011 /* PFURLSessionJSONDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DD3B16A2FA69C880D705EC37C05584 /* PFURLSessionJSONDataTaskDelegate.m */; }; + 577FB11637F9A3CF218053ADC3A5F10E /* PFCurrentConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = A2BE5AE5F0695B55E709A8CDFE17CA78 /* PFCurrentConfigController.m */; }; + 578485DD86226126B8E08842D826D2DC /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = A79078BF742E1C7360DBEE1FE59509E3 /* FBSDKWebDialog.m */; }; + 57B1A80BBFD88E6F9406FC50B423FB5D /* RKMIMETypes.h in Headers */ = {isa = PBXBuildFile; fileRef = D956488480F1233FFF8403DE1801CEC9 /* RKMIMETypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 57BDE2372BC4BBC34CAB643A2A95E416 /* PFSessionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C0999643940462D0D4D365C743346CF /* PFSessionController.m */; }; + 580B7575D5092F73CADB0DC057A8DD20 /* PFMutableUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E36BFDAADCD9869360BFDBB5DC7919A /* PFMutableUserState.m */; }; + 587ED101545A953414998ABFA4479B5D /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = ADF62BE10B4A5995FC90E5E1DF736C2F /* FBSDKContainerViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 58F4A4DF57C22014622BB042607EB8EE /* BFAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 113F75AFA14F88AEE7BCF0BBB4C858BE /* BFAppLinkNavigation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 591FE63D036F4A539784293BCAD97493 /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 145AAF7E6CD426F5DC9079DD9214733B /* FBSDKGraphRequestMetadata.m */; }; + 598CA7FEDEDFDBF38831C0015C044596 /* PFFile_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 245A8375DA02518A0D28196BA09BB15F /* PFFile_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 59B602D97CE0027EE607A6D59E7FAEC4 /* PFPaymentTransactionObserver_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A500D17BF17E1E4E6B95D311ECBC187E /* PFPaymentTransactionObserver_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 59F190ED1EA6826CEBBA51B9A461327E /* RKRelationshipMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E31A2D9DD96916FA15693B655848D1 /* RKRelationshipMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5A1CAD4EB911A5847CF09560EE37A110 /* RKPathUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 68A024759390FB7405C04F198DD88301 /* RKPathUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5A1CB5B72C92E43BF844377DC72DA072 /* FBSDKAppGroupContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 878D09AB47A4BDD9D340540825C9E015 /* FBSDKAppGroupContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5A3E09336161889373CC89326260ADE5 /* PFOfflineObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EF30CD48D59FE6544E248C632E1B4F7 /* PFOfflineObjectController.m */; }; + 5AAE55DFA2869211ADAE99C345C0192E /* PFObjectConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 783A3E8CD34175B563A9C12AA16DE8BD /* PFObjectConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5AF64E5EEA043722E238A8C5EE47A63A /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B92A2CAEF825132FB7B172C9FFF479D2 /* BFAppLinkReturnToRefererView_Internal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B619FB7B735B3AE6E29CD79496C39C0 /* PFACLPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D195E34301F1EADE93BB0B93F8BFAF0A /* PFACLPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5D8F8D57EC3D51CD74969DAA5BFBC15C /* PFQueryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DA1030B666DF215688696A02F383A6B /* PFQueryUtilities.m */; }; + 5DB44075B06EAE0B3D695B29CCF444DA /* PFURLSessionUploadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 57703EB1DCEB28A69BCC450CD2F4302B /* PFURLSessionUploadTaskDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5DD4705F866F09E0FA008D068DD31F48 /* PFKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8FE461F464D9C9483CDB150140EAF0 /* PFKeychainStore.m */; }; + 5E1AB8EC72407D7A56EE8074AC99F4AC /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 90EEFECBB8ABE95AB2BD379AE1A08389 /* FBSDKTypeUtility.m */; }; + 5E988F6DB39589E09F7216CE92E0FCD4 /* TKEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 310DAE7B650CE093469515EB7385030B /* TKEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5EEB7C03214B977E5D8925797BCCF7B1 /* FBSDKLoginManagerLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = E4FF2B92D70AA85F5430FA255B5930B8 /* FBSDKLoginManagerLogger.m */; }; + 5F2CF6350F306F78D40161C01EEDD731 /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DA381E5D6515F0A9C84527EF815CA28 /* FBSDKMutableCopying.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5FBDA19530CA26D2F5E37B02FFA15D50 /* PFMulticastDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F919170FF728D2BC8D0CA0FF2DFB83 /* PFMulticastDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5FCA3879482A03418CCB75CE50EEA9C1 /* FBSDKLikeButtonPopWAV.h in Headers */ = {isa = PBXBuildFile; fileRef = C6300BC631657D6ADCB1225268EF89BE /* FBSDKLikeButtonPopWAV.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6080A31C682280C87E76F93D3D1C7D42 /* PFSession.h in Headers */ = {isa = PBXBuildFile; fileRef = CF114CE627A26531EF546CEF5EFE34B2 /* PFSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 60F370DA778C2C58337885BA2E21047C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + 61BCC6DAB9276D969FCC0F848B69DB86 /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = A5EC9E79B357B5A2AC105BD544952297 /* FBSDKMaleSilhouetteIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 61C04EFBF42F1F1275B42E1DB6103AAC /* PFEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B6AC7B5CA03EFC1449CFA764CF607A99 /* PFEncoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 626EA657BFC628DA8317728BE78A3B4A /* RKPropertyMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 47CEE063B791E2A75D02580633A5F373 /* RKPropertyMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 62A4E5BEAC5F31E0EB99CDCB8179311B /* PFCurrentObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = EAFB52AC58711E75BD9749D21BB34897 /* PFCurrentObjectControlling.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 62D812F2EF8DA118C618FF5349055C57 /* PFRESTCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 29EEBBE595CAF744AD4307424F577DFD /* PFRESTCommand.m */; }; + 62DDEB5456833B4AD3A84F7AADBE9099 /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 46326E5CA01311B8CBC725FB12585BCE /* FBSDKGraphRequest+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 634D85A94A89FB79C887AEB085DECA60 /* Bolts-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 497BCC491078BD10E998532399FBE356 /* Bolts-dummy.m */; }; + 63B17895BA064D712385A40C63BD7EA2 /* PFFieldOperationDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 862487394328F3BC868EBBAC32F7D1AA /* PFFieldOperationDecoder.m */; }; + 641656C3A17793081B0B55EF4183369C /* PFObjectLocalIdStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3E68B1FF2DD23DBAFF7854AD495337 /* PFObjectLocalIdStore.m */; }; + 647E650A08B67B558A6C1A0041544B1D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B0F29E0D66F63131F371330D93CB4583 /* QuartzCore.framework */; }; + 64BD30EF98CC4A38D8BF92656D4A6AD0 /* FBSDKShareButton.h in Headers */ = {isa = PBXBuildFile; fileRef = AC3C9929DCA15B6D58724D42C5BD2DFB /* FBSDKShareButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 65719AA0C36A5882E89A8D02BD83CD32 /* RKURLEncodedSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = F90CCDF16C40C8073020CB017D02AC1D /* RKURLEncodedSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 658F5F398CDC2959D9D80E71D58CF261 /* PFQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DC92D832BC4F98CB9CDF7D7A7B176F3 /* PFQueryController.m */; }; + 6608AB736E0C33DCF8268F38C187F113 /* RKMIMETypeSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = B82D9F24AE9309326A0F5D37DA96F86D /* RKMIMETypeSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 6678A92E1C40BF48F96D3FCF476C03BC /* PFNullability.h in Headers */ = {isa = PBXBuildFile; fileRef = FDFB0625E5A8DE395A3BCB617FCD612D /* PFNullability.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 66866C90B76FFDB79EB2460DA948FFF6 /* RestKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0168088B34D75689673FA7BA85F0B641 /* RestKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 66F445220BAF1CCE856A11B0B7F803A4 /* PFInstallationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 57595B2EC946AD2720F477BBF1C1693B /* PFInstallationConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6765D67511A02AD8B1C22BFD59E32233 /* PFACLState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FD9787D3AC0A8EBB5A37E3E888F8DE4 /* PFACLState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 67767415823A98D8A2C93A953551A571 /* PFFieldOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 90BC9D720C96091D799BE399435389DA /* PFFieldOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 67F789F4A32CA7A82DE43CD27AEA87BD /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = A4371F9C1BEB37C1C9A7F487E96B039C /* FBSDKBridgeAPIRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6811D76FD209AF70990900C4FA2348E5 /* RKResponseMapperOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E3F86397116A780E41E893B85EDECB42 /* RKResponseMapperOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 693563EF1DB59CD00D1B0B8685D0819E /* PFReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = A615158242A3BF4F9C9D90078A2CE30F /* PFReachability.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 69F828062553D0A5623207630EB9FB21 /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 347915ED2D892D50E616DA8EACB44960 /* FBSDKUtility.m */; }; + 6A7AA0924113739F682D6E35E4B71540 /* PFFileDataStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 05528EC9662F1A87AE94B74D156D8CC0 /* PFFileDataStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6AAB88174D5DAE8A23C47D20961B3DDE /* PFConfig_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 2903E773C725846E7E37922E881B5B52 /* PFConfig_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6B00AF25CFB12372D5281D7B9D51E3E2 /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 194BBF93E1D47E864E12261443E6F23F /* FBSDKProfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B2DD9967AB4D947BDECC65AC4CCB1EE /* FBSDKLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = 432FAA5FD944A3CEB95D300D82A29D11 /* FBSDKLoginError.m */; }; + 6B6E69822F96D41917A1791C1873A1D1 /* PFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 95E86A54E3D8EFC5EAD2463D4E89A3CF /* PFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B8F8457EE06C9B9F37CA931F439DB4A /* PFKeyValueCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E89848483ABCCAEAAEDD2FF9965D52D7 /* PFKeyValueCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6C052D12CBAB4B9CEC3E0B97C3B0CA00 /* PFCloudCodeController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B5B5284F66A4663EFFDE2B8B5E336B1 /* PFCloudCodeController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6C6B44FB16E5ABD292E2D77D89DDFF32 /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CBE41855C229057359338A397CF9CBF /* FBSDKCloseIcon.m */; }; + 6CC372C70EE09A01AEC3B0C9A077B395 /* PFPinningEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 4332383098D7379489F2E1CF7653D948 /* PFPinningEventuallyQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6D1ED30B474D96450E7B0D1E548CDC60 /* PFEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = C56C90CA47F054F6B744E59125428689 /* PFEncoder.m */; }; + 6D2E47E46AED98D49CD7E1D7DCA449B3 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = F743580826B5C1B915C7431CC5442853 /* BFTaskCompletionSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6D3FD8968A8524A1D88687C9861581B7 /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D3B208164182946BFFFE3BB33CF2BEC1 /* AFXMLRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 6DFB846C756551ECD366F5AC7B189C2C /* YALTabBarInteracting.h in Headers */ = {isa = PBXBuildFile; fileRef = 708E2A05386B4566A5D2D2BC686ACF19 /* YALTabBarInteracting.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6E26161BE1EF97C776544437594061DF /* SOCKit.h in Headers */ = {isa = PBXBuildFile; fileRef = F9A89F784DA1F7AF78D9C06E04DAFF30 /* SOCKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6E33ED273C645E70EF87C0C05807D1A2 /* FBSDKLoginManagerLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = F196DD5AE8EA853E4EC89AF912198556 /* FBSDKLoginManagerLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6E7A504266921DE5FEDD84D1A38F473F /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FDE8A1A301D0824B588F44EE25B4664 /* AFHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 6E81F98DB0508128E08205B0290F7F66 /* FBSDKLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C773E3706A4438E1751AB41F39EB030 /* FBSDKLoginError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6EA031F1089FBD5D7E5DACD68EDC2F5A /* FBSDKShareLinkContent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 19F20D1F4CF5FCB81834DCE24BD63E00 /* FBSDKShareLinkContent+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6F5BB8563523FEB8914557A0C379361F /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 173E06370DF9F26EB5591EE929B03D16 /* FBSDKAccessTokenCaching.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7051CE40FD16869F0BF9CD028A658782 /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 83DE73D13A43E32C92686B974DE323D3 /* FBSDKCoreKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 705AA38F8B993508AEFEE4998DC8457F /* RKConnectionTestExpectation.m in Sources */ = {isa = PBXBuildFile; fileRef = EBA8382EE38E29B647AAA8D688CC23CE /* RKConnectionTestExpectation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 70905E1AFD8E61FF829458D67B744EB4 /* PFPushManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E93884F64E775CC94E71ED80F9FF08D4 /* PFPushManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 70C825F4D31DA952A01695D926762BBF /* RKTestConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 42E3420B261FCAE88A3371F0158DAA2A /* RKTestConstants.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 716A44DCF2417118DDAEAD57B69029BA /* PFSQLiteDatabaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = D1AF1FC1D27AABD7DC4C0948E9C059A3 /* PFSQLiteDatabaseController.m */; }; + 7171DEAFC5A2F780E670B8395EF8F07B /* BFDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B5BC191314D1C949957752D5E562E183 /* BFDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 72DDA136310E1878B3393479B38B83F9 /* FBSDKURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 37AC900D11C191E04655F282A675E5E0 /* FBSDKURLConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 73518A8EAF46D85112E2CB85D02BF9C0 /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 8470CA3B7EA842B7D1BE44214C739AF0 /* FBSDKCrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 73874B352F141AD7451291BE3C07619D /* RKPaginator.m in Sources */ = {isa = PBXBuildFile; fileRef = BED513156E118407B7BC1990E6EDADA5 /* RKPaginator.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 7491B632AA9E26DA9BC69374DE8BF0FA /* ISO8601DateFormatterValueTransformer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D0CD43CC78F18A69B36021FD018147B /* ISO8601DateFormatterValueTransformer-dummy.m */; }; + 74B1B04C2705C12FDA25D308C6F8F669 /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 60496328DA2C2D4EF5E4E2C9933AACD9 /* FBSDKAppEvents.m */; }; + 74D22BA7DDF7C44219CE3E793CE0AC6F /* FBSDKGameRequestDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 96AA4B508FBFE9971F929FB061B14436 /* FBSDKGameRequestDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 74EB4B274B8CF5543B9DB2B77394CC60 /* PFHTTPURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1578615981EB295CD3B68AD600652886 /* PFHTTPURLRequestConstructor.m */; }; + 75092C6F60330AA447A66ADEB43581C6 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C758B84874FBB01F1E2CE355BEA77660 /* StoreKit.framework */; }; + 7569FD90D7667E15A7B67B62E4A72E5D /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = FA149A0B2AF7E3F3EC903816EC962CFA /* FBSDKTriStateBOOL.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 75928CD63004AE9767341F79B565BEAC /* PFMultiProcessFileLockController.h in Headers */ = {isa = PBXBuildFile; fileRef = A3876C6C899E391617046DF5BA206C24 /* PFMultiProcessFileLockController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 75F412B1EE494A57BC9AED52E8F28700 /* FBSDKLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 942F4435C4E5B28ACF4995C1B58BC460 /* FBSDKLoginManager.m */; }; + 7623FF50D8894BEA849B2E84F9667BBF /* RKMappingResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 7937DE6BBA72253E75BE2C99AD624094 /* RKMappingResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 76EACBDAB632DF356DEB855DD97A09A6 /* FBSDKSharePhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = F16E9555C16A15C09F6E739388F4FE89 /* FBSDKSharePhoto.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 774E19492156820F5CC848D34D9AA4A6 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 00A6001B9377F35CFA12A27639003F73 /* FBSDKLogger.m */; }; + 77B5397CB9EB225E9C0BB7318B12E949 /* FBSDKBridgeAPICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 731BCFC9FA06980186D87DFACC655FFE /* FBSDKBridgeAPICrypto.m */; }; + 77CF177F2CDC9BEBEF5BE1DD296E1E2C /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B270479704A7D09440A3A5A8C04C228 /* FBSDKErrorRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 77D00913E6BC46EF1D8E536BA5A36A93 /* PFSQLiteDatabase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 01EDAA9B73CA1A9B90D5CCD0CE04D58F /* PFSQLiteDatabase_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 77DE7989C98CD1CCB807263C1BE7D419 /* RKRequestDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 23F8033FB2A702EC958A60D0DEF98AC8 /* RKRequestDescriptor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 78952ACEF38C155ADF7CA3B63C38A5E6 /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D8C0D8749CEE57E58CE3B5262781F8C /* FBSDKProfilePictureView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 791E4A4DAC2DF15F7846EBC44911F06E /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 6530D1C36D6D2481926600B02A05B330 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 796EC3DD53C2C28010D03E1E323A1DDB /* FBSDKLikeButtonPopWAV.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E43B3049BD47C0D7F0EE422E4818AC6 /* FBSDKLikeButtonPopWAV.m */; }; + 7A11240D567F7A3207F0F9882ED2AB75 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B0AE93D99549D7F950DBDC8C99044A2 /* _FBSDKTemporaryErrorRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7A67EA6F03AFFE55FAA759B11890E468 /* PFRESTConfigCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C081A1F7DD370C044B7D5118E27A38F /* PFRESTConfigCommand.m */; }; + 7B2C5166FD60B8D009CD534008D48C31 /* RKObjectMappingOperationDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9D6013B80CFF5948B0AEBB731354CC /* RKObjectMappingOperationDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7B38759EF062D9FF703E7D297DAB27E6 /* FBSDKLikeControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 180FF861DE91C6A915DA7C2A92862B35 /* FBSDKLikeControl.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7C0161AC9FE0AC577A2796CFE21D38D9 /* RKPropertyInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = C829B0848EFB7C93E7C376D5D7D2C2D6 /* RKPropertyInspector.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 7C60516B1E4A99AEF16F3B60AA91C41D /* RKObjectMappingMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D53FE7781D3C1C29653F7E97CD587C6 /* RKObjectMappingMatcher.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 7C9D94C465AE6FEED19A76EF32EE9DB0 /* PFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 519BAD12C8F4201D74BDD8453AE47655 /* PFNetworkActivityIndicatorManager.m */; }; + 7CAFF794C7BC2BB61BB7BF31E8278215 /* RKMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F0B1E9EBA20A4C290F0895CD4B960C0 /* RKMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 7CDB3C41071E6BE656221EA86B04C809 /* RKMIMETypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 16AACACB54568C35001E53CAB3D7D64B /* RKMIMETypes.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 7CE53AEEEB82A1729F0A343B85F1FA7E /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = FC1F61CB54C0673DD6D3F506261C1797 /* FBSDKAppLinkResolver.m */; }; + 7CFB4A9919959620E1C0514632BDB8CD /* RKTestFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = EBB561046AC0CC3E56743E5BB664B0B0 /* RKTestFactory.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 7DAD345A47688CC2FF5EEF4E6576DA9D /* PFObjectConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 86C52238DDC9FA7C9DCD49852E0DFE88 /* PFObjectConstants.m */; }; + 7E6125121D979F1802CAD8FB88B66E4C /* PFAsyncTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 520D88E4BD209071CB865B64DEB08BD3 /* PFAsyncTaskQueue.m */; }; + 7E7AB5CD972320B0ADA45CD3A96BF892 /* PFEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C605E7C0D2766C324CD9DAAE8BC0DCB /* PFEventuallyQueue.m */; }; + 7EE9BE9884D5807EC2C980930CB99B06 /* YALFoldingTabBarController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CAE8C5DA18BB8CA4DD074A31BA648D2 /* YALFoldingTabBarController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7F35603B737B2A4B465CAE4B481C34BB /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E63031380A944E9403D3B32AD1E27D4 /* FBSDKGraphErrorRecoveryProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 80511BB81FC091E526BECA78607C0FC2 /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = B36DC7EE87AFA9DC98ABEEA9F3A91C09 /* BFMeasurementEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 805398D3248C43C8DE072375177A8354 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E62E80C06B8D2394C56D10220D1CCB6F /* MobileCoreServices.framework */; }; + 8071A999E075ED48380A5AAACDA0E0E9 /* FBSDKGameRequestContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 1039AA115A854C64209875E6B8B20ADF /* FBSDKGameRequestContent.m */; }; + 808276E084690B816C4FE2938B4E3F38 /* PFDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = BF734DC57CA15A5ED1C02307CD3DE349 /* PFDateFormatter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 809C53B31BE1AC40886B82DFD238136D /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D98DD91B0C85D183FC3778CD8BF3EA40 /* FBSDKBridgeAPIProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 80AC86A7716C9D9FE484C461CECF64A5 /* PFMultiProcessFileLock.m in Sources */ = {isa = PBXBuildFile; fileRef = B492A7B19E294565EE58BF99C7ED8A4A /* PFMultiProcessFileLock.m */; }; + 81193EC84CBFB74E91526F896C9BA770 /* PFCurrentInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 146B3C6F4906B1DF01F844DF3C869939 /* PFCurrentInstallationController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 814807B51F230D7D561699CC6FCE8111 /* RKLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 7528F8DFCEB5328922BCA59B0054A221 /* RKLog.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 81A2A1E607483054B4C595CA92987E08 /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 9671F1EB06ECFCB5039E830159A8B807 /* FBSDKAudioResourceLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 81BBD301442755592686C551DE726C06 /* PFCategoryLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = C266997BE18B9F2389729AEE26E429C9 /* PFCategoryLoader.m */; }; + 81D3161E66F074CAE137695C259391D6 /* PFRelationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 55E3CD1BDE0CFAD0C13FAED8BEF08B52 /* PFRelationPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 82023A97B43D2DEC58CA0092A2A63835 /* PFUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = AB4CD2808D1181D48BD050A1E40BE976 /* PFUserState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 82360B32AC1B887E85DC592D62CB046F /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CCE2187DD9A71F1848E14301ED5B204 /* FBSDKSettings.m */; }; + 824F558CFBB6BFD7FC2D2E9FB1FCA5B3 /* PFMutableObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABC3BBED3C3C10F8A825E0751B3A6DB /* PFMutableObjectState.m */; }; + 827A9685D68B9BD092DD85970625C1F2 /* FBSDKShareDialogMode.m in Sources */ = {isa = PBXBuildFile; fileRef = E8466657B806FC125F113617F7DD42A9 /* FBSDKShareDialogMode.m */; }; + 8286DA65B1C86544369DF6D387CA87DB /* PFQueryPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D72826DF2E94C85D334B52CF10098D1A /* PFQueryPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8365B59553252085916A6D4ECCE383BB /* AFImageRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C98118F3A80B2EF7FE15655CF5DEBF93 /* AFImageRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8392255CCB63818562D4F58555DDDB08 /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E592A12CBAE13CEF22ACF96543534AE /* FBSDKColor.m */; }; + 83C5AD87D4B7BF94A4B000FC4C254798 /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = B6DAE6FCB32112F6B277354CCD641DFB /* FBSDKMaleSilhouetteIcon.m */; }; + 84418630ACDDA584CC0ACE287C54B25B /* RKTestFixture.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E2A5D66F6C75C8A872ECD3D71937EBB /* RKTestFixture.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 847C86711AC58480F93EE157EC762827 /* PFRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 15CCBEB339CF012A7EF123E309124318 /* PFRelationState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 85030A540670174CA31F4F4226C54C4F /* FBSDKAccessTokenCacheV3_17.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AC84CF788A165593B670BC7F8133D15 /* FBSDKAccessTokenCacheV3_17.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 854828D77E6CD3D9B82D9498EF24E92E /* PFObjectFilePersistenceController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6175C27DAC5A50D940DB696AE83B785D /* PFObjectFilePersistenceController.m */; }; + 85738B1734F9BE17BEE9520D89D2D133 /* PFAlertView.h in Headers */ = {isa = PBXBuildFile; fileRef = D13875E740DD491158EB8406E449FFEB /* PFAlertView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 857C325B0A6E76A01EACF737B6D4FD1A /* PFInstallationIdentifierStore.m in Sources */ = {isa = PBXBuildFile; fileRef = A8607AE13FD6F5114938F5C946462211 /* PFInstallationIdentifierStore.m */; }; + 86043DABC677904AEAAD37E3C8981439 /* PFFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 16343207944FB07AF9037C8A76C5F7A2 /* PFFile.m */; }; + 86201505E0AE8888C1DE7E594A2D17E9 /* PFConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = FF68CFC1D62A76A5756770DE83EAC745 /* PFConstants.m */; }; + 862FE930B3C40926DC7101D0D25931B1 /* PFThreadsafety.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F0A4B0C3848A8B587EDD0F613FFC91B /* PFThreadsafety.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 86444AC2A924F63C45BEC54A0DDB7E8E /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = CD4655E526EE9E09B596D7ADBA95AEC4 /* FBSDKBridgeAPIProtocolNativeV1.m */; }; + 864CF85CA92D5D4313B0A57692C45881 /* PFRESTPushCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 621694B9B8F4062ECD717CB818281308 /* PFRESTPushCommand.m */; }; + 86BB4E1C5A69021E6E28F46D2EBF2A3D /* RKPropertyMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 96D3047DA13118A3FB60F3DBE4812F52 /* RKPropertyMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 86EF71FE1E8C350F37E45235765F15F4 /* PFMutablePushState.m in Sources */ = {isa = PBXBuildFile; fileRef = AFE48A1CAAFB131917518CB852A268E8 /* PFMutablePushState.m */; }; + 87E208C4BC2E8A5C74E1D01087F195FF /* FBSDKMessageDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = B152467F018CE2A665F5C91D168A9A68 /* FBSDKMessageDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 88410794220AF1062177201E82FF9DBA /* YALTabBarItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E000C46BBB39E5ED5C9A8FEC95F0CB /* YALTabBarItem.m */; }; + 8854963B7559E45BA04D4A3AC29B26D2 /* RKObjectRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 047F85BB51947407A2598BD224EF6F03 /* RKObjectRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 88B5193C02621657A8A1599944D7966A /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16621039C0E3312C216165BEF8D567DE /* SystemConfiguration.framework */; }; + 890759733641D9CE6D871075C5C26820 /* RKRoute.h in Headers */ = {isa = PBXBuildFile; fileRef = DF85D1A5A93CD13D748D47C555B565CA /* RKRoute.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 89131DE7914EFB6BDBAF0E0BA46E0B81 /* PFRESTAnalyticsCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B9DF380862F77749D695F3104231B01 /* PFRESTAnalyticsCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 893E921270F96758F3799A3949DECB9E /* PFMutableRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = 2994AAC8F7BD43FAA64FEED836452945 /* PFMutableRelationState.m */; }; + 89564402FD876B2472994636049AC191 /* PFDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FB90FC608DB5150B3A5D742A227198E /* PFDecoder.m */; }; + 899C1F6FEAF906667F0E67D51EDA44FD /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = 856D46D1E0A3157D00390C58BC8DA218 /* FBSDKWebDialogView.m */; }; + 89E9143B078C3D9D56CDA6BE3AAA16D3 /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = FF107198F4983B8531483E65440A0F15 /* FBSDKTimeSpentData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8A0852C94F274C951A8FF2C0E53CC203 /* PFURLConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC38063B09099340C9BF218DC2CD4D2 /* PFURLConstructor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8A6946AC59129EA88D60D328CC1123A6 /* RKDictionaryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B51C3F037B7CB1FC1D26AD422819FAAA /* RKDictionaryUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8A96BC7922311E4546CA119B3CF1249D /* PFObjectBatchController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B34569D99B799FF8A6F749B10CCA86B /* PFObjectBatchController.m */; }; + 8A9D36221679B9C6AF86158044A8AB80 /* PFObjectEstimatedData.m in Sources */ = {isa = PBXBuildFile; fileRef = 0526EA7D5B6610515F179B3B16E6EDF2 /* PFObjectEstimatedData.m */; }; + 8AF36C0CC65E3A5D7AF4AEA8BEA5F8DD /* FBSDKShareKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1142FF164E91B0154F7D1B3E3CCD129D /* FBSDKShareKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8B1097E93AE1F424DE31FFB1D83C1E99 /* PFRESTObjectCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 211357AA873E1EF8383B30C370BE0F87 /* PFRESTObjectCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8BF233CF21110FBB9A78A0E9C6FCDD49 /* PFCategoryLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 80215F89C91F2E95ADA9D8D5F5443FD6 /* PFCategoryLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8C62414E0ABD89DD5A595B207B4F3DA8 /* PFObjectFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = FB06B7B325850C15B6DC9083FA9CC5C3 /* PFObjectFileCodingLogic.m */; }; + 8C66B8A503EE7CDAF2C8B843D7839113 /* FBSDKGameRequestDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 247CE7F46CACB36C92D0EF9B3F9FB9FF /* FBSDKGameRequestDialog.m */; }; + 8CDA43D636A5808F5E87A816EB9F0D78 /* PFPropertyInfo_Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = 4151DE560D48FE6B06CCFA7940B94CC5 /* PFPropertyInfo_Runtime.m */; }; + 8CDAFE25429AD7F8885827F293890076 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 58F9FC465CA00C27492735D604B485D3 /* FBSDKGraphErrorRecoveryProcessor.m */; }; + 8D66E14F4E946CF7C4A203E9DC27E301 /* AFPropertyListRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 76C5BB7D9A288AE9D8A835E210188D21 /* AFPropertyListRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8D9641967C1ACD51CE3ACACF1B1D2860 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + 8D9E418F4BF4FF9ABF3F4E5932589C3D /* FBSDKBoltsMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA62A8E667CE97DE59304A1724EC97B /* FBSDKBoltsMeasurementEventListener.m */; }; + 8E3F310FB34E020A985BF37D34582619 /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = 08C17176133A418BBA5506240483F44C /* FBSDKKeychainStoreViaBundleID.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8E562933760503079FD82D5E56CCCAF5 /* PFObjectSubclassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = A854E7B08674C60E1987E4A310DA531C /* PFObjectSubclassInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8E576F91BE595E20B1D97319B3E40EE0 /* PFURLSessionFileDownloadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 6194460804426F0A4B172D48D43424F3 /* PFURLSessionFileDownloadTaskDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8E5C4F9E02DA0CE1FB4656E19A803A23 /* PFHash.m in Sources */ = {isa = PBXBuildFile; fileRef = 87943BFB7F1004CFB75603B28BBF3C4A /* PFHash.m */; }; + 8EAD9F99B96C0786E0B85D4D00F096DC /* PFCommandURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D1E676461C5F40552D64DA33869E6F /* PFCommandURLRequestConstructor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8EE441E5EBD7EAFFDDCCB5F247B160F6 /* FBSDKLoginUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D1C86B95A8E3810D8B07D2319B3FF71 /* FBSDKLoginUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8F2E9F59088D572D947EE4A9FA45DC1A /* RKTestNotificationObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = FF93EF6EEE6883E55F75A0465EC5735F /* RKTestNotificationObserver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8FA163961DCFE696DD2BA76D1B0467AF /* PFConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = 30CDD959414B1BB05D9C7CC06B1A1DB9 /* PFConfigController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 905D0A5FE23B08D47AA9AB3F584B626D /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5077028CC903E90AEB2806C8A93C10A6 /* FBSDKContainerViewController.m */; }; + 909D78EE968D364B5DDD6C8CF7E375A2 /* PFMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = E9B097547004C3BD7DED3DEE274BAF78 /* PFMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 90F2175480DE7324ADEEF602757134D7 /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D4A6B0E6E31C764CA9C4AE79EB0572D4 /* FBSDKBridgeAPIRequest+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 91D8984FCF7711FFFA4E5A8795A49B19 /* PFPush.m in Sources */ = {isa = PBXBuildFile; fileRef = 204E788B570A793109481294415D9F28 /* PFPush.m */; }; + 92450C8A67B02D5312E98B29C29FE89C /* PFACL.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A0D078B3F700A4B5BC98F3B41F44FDC /* PFACL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 924D2586BFCD36A807E0E047454317A8 /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 15505CAD38B537EF229C41382091B2B7 /* FBSDKServerConfiguration+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 926F1FF1ADA93F8BE4339C7AE28BD968 /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = C206887391506A13483E7EBD66940BB2 /* FBSDKButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 92D14F626066984B8740E9484071B7C1 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */ = {isa = PBXBuildFile; fileRef = C3A37573B0B483DCF4CB2F542816D68E /* FBSDKGameRequestFrictionlessRecipientCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 92D3DBF67B9423C54D94F45652DA8073 /* RKOperationStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = 32D2CB4155B7B88153C547AB13333269 /* RKOperationStateMachine.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 93508BB9AD5671C0AB3E4E890FF01C95 /* PFAnalyticsUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DAC1FC2CA2D2B4A01038D5148555190 /* PFAnalyticsUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 93511A4AF61BEA29A4FD4EEE7157E023 /* PFUser.m in Sources */ = {isa = PBXBuildFile; fileRef = FD20928F422E57B36F0AF7C03A285F25 /* PFUser.m */; }; + 937DFB623FBFA9980FB84CB4DCB0D495 /* RKMappingErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 10761AFEB4163029E0BB84E7271803E8 /* RKMappingErrors.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 93BDA0F9D51A5F9D4EE287129BDBB99D /* PFProduct.h in Headers */ = {isa = PBXBuildFile; fileRef = A4C7B9F2E653733E71087633BB8C15F3 /* PFProduct.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 946BB4E027BBEDA5EC360607902B1EB0 /* PFQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C28405D1D8221A23C8D5CC2C7FFE4BD /* PFQueryState.m */; }; + 94812F8C5A752C24A9B6D7635CB77A89 /* PFErrorUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = C82858F9F81EFCA744E061FDCCC6A76A /* PFErrorUtilities.m */; }; + 949F1878AC4A43632EFADACFC8140683 /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = DA45B085FFDF032332BDCB8BFF793E5C /* FBSDKGraphRequestBody.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 958CCFDA315803AE6E8B769C3985BF57 /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AE7CF3C4BBBCA9F05072DF89F75C0B3 /* AFPropertyListRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 95D14872174A30E8C238C5334ED744D4 /* PFCoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CB666E8346B15C56F87F1C89B253C80 /* PFCoreManager.m */; }; + 9634B50A041722E070888114E161E4EE /* PFFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = 06A4FFC3574F662CBE4301546762B2B0 /* PFFileState.m */; }; + 96E1FE094390E35BE4E0D715675C16B0 /* BFAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 19F270B7BF779B177C75EA8CFAAA76CB /* BFAppLinkNavigation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 976C79EBB302D6FD69733210FFC97DDF /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B0F29E0D66F63131F371330D93CB4583 /* QuartzCore.framework */; }; + 977939FF92D57042F939439588EB0E6F /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 89638686460135E581F100965DB593A4 /* AFJSONRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 97996933B25E24DAF9D18F8E188B03CA /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = E4EE8B2F0AF96372A1E5A8E576C9B17A /* FBSDKMath.m */; }; + 97E73BF140E412BECB34ACF01B50C764 /* RKObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A03339B789E2FC72FB9CCFE5665A0C3 /* RKObjectUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 98350E1EE789CEB57D91ADF6F225D62E /* FBSDKShareError.m in Sources */ = {isa = PBXBuildFile; fileRef = 45E3175265DC81EF149FA06BB4EA951B /* FBSDKShareError.m */; }; + 9934291C79A7EBE51544EDDB2193FD01 /* PFUserConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 72B7D073C442C0EC9D3D4650B7CE4F23 /* PFUserConstants.m */; }; + 9988B7041D7B470C3F7D1938D965F654 /* PFMultiProcessFileLock.h in Headers */ = {isa = PBXBuildFile; fileRef = B6327D62365930A9BC127D1B6AA7C081 /* PFMultiProcessFileLock.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 99D055FF3D067DC24E05819741E06945 /* PFRESTConfigCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 95FB0DA8AF871D7246C122EF20326E70 /* PFRESTConfigCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9AB561BA236CB930E21B38DE886155A6 /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = BB08F921B445EECE7EA71D6B4554FF9E /* FBSDKViewImpressionTracker.m */; }; + 9B3982D6FA8CD29A66D47D7356C6FB67 /* RKHTTPUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = BAA0EDF40F153DD9E67C8C7F744785F8 /* RKHTTPUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9B516F3168787E2C9732AC0C00479971 /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = DF2A4D83628FCB3153D053BF5093B58A /* FBSDKAppLinkResolver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9B7B596E21B20063D8870D27F93990BF /* FBSDKAccessTokenCacheV3.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AAEA066289DB63479C8EA3E37BC7E15 /* FBSDKAccessTokenCacheV3.m */; }; + 9BFBEB3B8ABB7F24555374DAFDEE5A43 /* PFACL.m in Sources */ = {isa = PBXBuildFile; fileRef = D02A52C086D84F65295E5DA1562069FC /* PFACL.m */; }; + 9C61DEAAA276DF68E9CC9679C0FC3E64 /* RKMappingOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 31A4AD66C6637BF2C615D2A5ACFDFB97 /* RKMappingOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CBF1E478681F7C22EC2F5B1303DBEF8 /* PFPushUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DE00A9C031141A57AB8312D1DEF51E8 /* PFPushUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9CF9ABEBAA86E37078F793BAF2C4F18B /* ISO8601DateFormatterValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 12F4038DEE96BCA00C4F13577F8FB019 /* ISO8601DateFormatterValueTransformer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 9D1E20F07E1C09F60E2F35F6119A0F42 /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BD4E2FDA8D2C7FF9BEBBCB6D90B725F /* FBSDKError.m */; }; + 9D3D9A7D232F06FADE0D0D036D96A598 /* PFSQLiteDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C500DF14994F5DF82D1C7A4F1B29EE4 /* PFSQLiteDatabase.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9D8543C5F547215DBD30C9C18E525F33 /* PFURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 610383C50F7E8C3E94C191A91D507693 /* PFURLSession.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9D89845489A310CB56E647F143BEA677 /* PFLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = AF37684830F2DBB64CC294D7D1ED687C /* PFLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9D8A1173432B3D5D943B800A5A5E080C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + 9DA2B0C972429DD7AD7064E9E09475C3 /* PFPush.h in Headers */ = {isa = PBXBuildFile; fileRef = 35A723AF4E93A1BD6805BE7CABE6E033 /* PFPush.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9E1DFD298D2638A443CF2EA5B47BFC51 /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = DD5C257CFF734FBADEC42260C86AF53A /* FBSDKCrypto.m */; }; + 9EFC61F27D88241A96D3FB13EF831E02 /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F9AF6687FB731435E4D8A667BC21448 /* FBSDKProfile+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9EFD8B6E9A0DFB23D0458D0071283130 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 362C1D10E572107214CEFE116A4A3E9C /* AFNetworking-dummy.m */; }; + 9F04CB08F3037EDF755036F82BCC418F /* PFPushUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 53E751950C87EEEFB70685CD518122A2 /* PFPushUtilities.m */; }; + 9F309454D3B0FA1C2701DD3226C97074 /* PFCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = D4C698542F4955E8A40A8D39035EDAAC /* PFCloud.m */; }; + 9F3D3656F5864DED6AF668D1AB68975E /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = D347E102CA6826F9924372BD14C67494 /* FBSDKGraphRequestConnection.m */; }; + 9F836AA840436BDA62D7D6325F233221 /* PFUserFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = 8626A096D5442B8137154A62B0ADD414 /* PFUserFileCodingLogic.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9FE10640F0AED83B16480FFAD9CEA3CD /* PFFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 69FCCBED66F1FD4D49A5DF14367CB3F6 /* PFFileManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9FFCB2055332535163446E136EDF1E42 /* RKRouteSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 00595F6FB2C45EBEB4850162FFBAFBDA /* RKRouteSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A00E98DC15CC981738CFBE96AEB16EB6 /* PFPushChannelsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4662A7DF03B449C11ACAB6A82AA6CD0B /* PFPushChannelsController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A03EE16F31569592C179BC824D019DC9 /* PFRESTUserCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 812F56D962057B55B97DA7C2E81454B8 /* PFRESTUserCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A0F75CBE72EE4F9B74838F6F01191D06 /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 16D7414B803B24894CDD90ED3E31C1AB /* BFAppLinkReturnToRefererView.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + A1292411CD105DB99B42269F163F0616 /* TKEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 78AFC5613D6C0DB29F522A49E3BA144F /* TKEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + A161B6BDF507ABF1322BB74A9D437D4B /* FBSDKShareError.h in Headers */ = {isa = PBXBuildFile; fileRef = C94BA5EE86AA9925359209A89FD97B37 /* FBSDKShareError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A1752CBBCEED5A344FDA136B0EF771A5 /* PFCurrentUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = E3CC799DD4BB9892F589E02F63692D70 /* PFCurrentUserController.m */; }; + A18206D679C80B4AFF6654B5677DBFDB /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BC537E2F269396073213A29C99B4BFB8 /* FBSDKInternalUtility.m */; }; + A1B68435F82A632E4F331D60773C2869 /* RKDotNetDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 70A2C6CE14776F9B578042E6CC7C2126 /* RKDotNetDateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1B7647A3A40381C4430FBDBF794C699 /* PFCommandCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 057581746F9592678DE1D227AA52EB2D /* PFCommandCache_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A1D7AF47B734259F42226B7577014F7C /* PFUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D550D3103B9BC03C2B3CFD252981DA2 /* PFUserController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A1FCC931AC4A1A8D148E28C4572BB307 /* FBSDKShareDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 63BFA7CA55559EBDA4EFE89AE77C1E67 /* FBSDKShareDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A248810839C65E5881B7B7B3F264078F /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DEC5DFFD198D1C75250B16D5369348 /* FBSDKBridgeAPIProtocolWebV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A31552A8B1F14534DDBA1DFC4E09C195 /* FBSDKShareOpenGraphContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 10EABBE60B88CF3D2AF469F17208ADE9 /* FBSDKShareOpenGraphContent.m */; }; + A3353245628DEA268387441F4EF31877 /* PFSQLiteDatabaseResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 1300CB87D7929FE78AD13A425DD18939 /* PFSQLiteDatabaseResult.m */; }; + A41BB882FD7A74A2F25113D6A5644F7D /* PFObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = A73585EAE72B8B707372B14CD35D1CBB /* PFObjectState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A466E7239F778C5E117BA4008114B272 /* PFPushPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D5D2BA73D92C41B2C18785A9F6A34F3 /* PFPushPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A4A05FBBDDB993E56073550A63C1727E /* PFObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 70CE433A9DEB32F93FB37B35D6987006 /* PFObjectUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A4AA61EF4E7E175383F829835B3690B6 /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CC97C072FD18D2A4B73F527FCCF25A7 /* FBSDKCoreKit-dummy.m */; }; + A55D4E06A15BD0D7189518E2B96DB8A3 /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = 271C2DE3C7E7DE81A83712AE674A962A /* FBSDKWebDialogView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A56E60590F48B3C632A71A0B970F8E90 /* PFURLSessionUploadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B53B46467C6E67E66194FAC567CA3CE /* PFURLSessionUploadTaskDelegate.m */; }; + A5904B7145B927AF58B5B7F952A198E2 /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 272643F56613CA0D336AE3DBF19DC404 /* Pods-dummy.m */; }; + A5A2E68EC92D877AE2289A67BA94C9E7 /* CAAnimation+YALTabBarViewAnimations.m in Sources */ = {isa = PBXBuildFile; fileRef = 581431A48237CC104D54A0C2870FDF20 /* CAAnimation+YALTabBarViewAnimations.m */; }; + A5E23287231B8CED31D97C44BA2702F9 /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 16AA64D1CEC68C44DEDAD61DAFB42709 /* FBSDKGraphRequestConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A5EF7E6ADB37EC0A0DE6145812D8998D /* FoldingTabBar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B5C46025996A2C2D010B0AE8FF485D39 /* FoldingTabBar-dummy.m */; }; + A6381412CBAD67981B189C3D03FF02B6 /* PFEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 75C40E2C04EF1F38C17C8E45D198B60E /* PFEventuallyQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A661008071892B0148336A0636FC59A1 /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ABE21AAB21F6820C93F75F77BA84A8C /* FBSDKIcon.m */; }; + A6A403231A96C6C21C83BAEF0BB1093F /* CAAnimation+YALTabBarViewAnimations.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ACF71F0DC4813EA623149F93F528587 /* CAAnimation+YALTabBarViewAnimations.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6D8B881BC31F26E99F56A4B5144F72D /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BA2696770D8582A18F63F39A1AE5A973 /* FBSDKAppEventsDeviceInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A71645666E899BA6FCD0A105BCF4554D /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 457EA6762682C1C676C5980F65593923 /* AFImageRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + A721709FC277E75DE5C95BB094C3D554 /* PFAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9687B38FD53EC72E99246120219AFE41 /* PFAlertView.m */; }; + A72805273E466C273A4B10C6ACB993AA /* FBSDKShareAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = B0217E33F4AEC22A7E47353C29C06863 /* FBSDKShareAPI.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A734638E2FD9CD1F9174C76669F0DF6B /* PFObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AD43C7473FB3333A13A263F3DED7A13 /* PFObjectController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A75FE2B82568636BBA4E284DD4E782B8 /* PFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E632D3BFE8814A4C59897AC48C2FEAB7 /* PFObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A7730AC6B2549789F043366A4F6C0654 /* RKMappingOperationDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = B4752C6F4E6E53E7A4CD10A743CBB4C4 /* RKMappingOperationDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A7A7934DF6531ABC1DD87345712ABAC9 /* lcl_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BFC75DE2FA5676B4D6C11BB9AA254E8 /* lcl_RK.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A80A4BCE5F0BE99CC5D0D79ABC6EFC84 /* PFKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 36F6F2D4FA38537FEE30DC609BE6E066 /* PFKeychainStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A8FB9C2DF4996A5647C43D1D20B34154 /* FBSDKTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = B5C44FD3FAB358E3B466C4655865D9C1 /* FBSDKTooltipView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A8FFC32B766D8160348983C902A0FBCF /* PFRESTCloudCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 64BCD63E238F4FF3CD5D95CE6BF75584 /* PFRESTCloudCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A9514FF859C895C0BB0BCE528FF507D3 /* ISO8601DateFormatterValueTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D7D9AD22022709F66EBFB6726D41E5 /* ISO8601DateFormatterValueTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9821C932984F979E72D5984C1E3A87E /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = CFBF92A39FCC2FB32797855AB85DCAAE /* FBSDKIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A9D01434F1CFFFF1277E3429A43FA1C0 /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9826CDA12FAA5BC9CEF003E172733136 /* FBSDKAppEventsStateManager.m */; }; + A9F693EAD2DA785A4DC3C32E334C7B91 /* RKMapperOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1960AF182D01226FEBB84BF5AB083402 /* RKMapperOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + A9F8CCF3E9E7A1F8BB906AE75CDD76A1 /* PFMutableQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = 860438E9D197650BC7168E76CA8F76E1 /* PFMutableQueryState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AA196672E44A737889F2795FEA012F6D /* PFAnonymousUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 24019153F5EA642D0DE4B7AA9C56FE37 /* PFAnonymousUtils.m */; }; + AAEA1275B8DBCEDED978E0E5967D1440 /* FBSDKTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = F19E08580DB71ED59755E30D19440C85 /* FBSDKTooltipView.m */; }; + AB54E487727ABF1E4455A951FFEF2C82 /* PFRESTObjectBatchCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 74ED9759C7FE5F4ED33138ACAA88C82F /* PFRESTObjectBatchCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AB61AD540531ED95F49168BD4C8C1936 /* PFOfflineStore.m in Sources */ = {isa = PBXBuildFile; fileRef = C18D83A16673A9F0545F5AAC55CAF2F0 /* PFOfflineStore.m */; }; + AB7CAA7D0CB1D37DB84BF83644CF6E41 /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = DF22EF5561792630E4B16C5A5D546054 /* FBSDKAppEventsUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AB8D18ED889E13CC5F738DD1A59CC510 /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = A3E2D61AF8A35A030529BBF31DCB63EF /* FBSDKGraphRequest.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ABBA98083D66AA8745D3CE85508A4B54 /* PFFileController.m in Sources */ = {isa = PBXBuildFile; fileRef = FB2D447FC39896FA1BCA5534A076AB55 /* PFFileController.m */; }; + ABEF7325D5A438C60A9689BE4AF23E4E /* RKErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DC05CB9225FAFC12C400FAE32AD0626 /* RKErrors.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC0D3A56A07AF56CCCB9E6A24C68C969 /* PFMutablePushState.h in Headers */ = {isa = PBXBuildFile; fileRef = 84DE8F6C85087D8851CE8C93EF867DCD /* PFMutablePushState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AC70F2D05DDEE9CA1E15F5FBC259E974 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16621039C0E3312C216165BEF8D567DE /* SystemConfiguration.framework */; }; + AD0387E79E49576C00BEAED9E903F6B9 /* PFFileDataStream.m in Sources */ = {isa = PBXBuildFile; fileRef = CD9BD9332CB70D61FC117651727426D5 /* PFFileDataStream.m */; }; + ADA73C3403D0DCBA9ADC9737B71F448B /* PFRelation.h in Headers */ = {isa = PBXBuildFile; fileRef = 40C7C5CFB4E466FFB010AF6A0FD9D026 /* PFRelation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AE279B6C3893C1BB12A7D761A8F70EA1 /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = 504CFD03CAFDA04600823DA3FA4724B7 /* FBSDKError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AED1CD8AB9480299EB225BD4EDF8F195 /* RKDictionaryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D8A4BBD034C037A44B441447EDBD2AC /* RKDictionaryUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + AF896EF80A89E677C2FEAD7D25B5CA13 /* PFObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D65511E82CA8F7BA0B1D3A4D488BA84 /* PFObjectController.m */; }; + AFD33F9C5B99DD2201D2F07DBB808E79 /* Parse-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C5315150FD5B5F202952CF7B1140BA5 /* Parse-dummy.m */; }; + B00E930CCC7EF81612BF8392339E17A8 /* PFSQLiteStatement.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E3AF7DFDFAF8657D842E11B07B72C49 /* PFSQLiteStatement.m */; }; + B05B85B93FE4C40364989A851D0E4C95 /* FBSDKLoginConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = C93BEBD4E67678D6A0AF73501738D481 /* FBSDKLoginConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B072A694A0A46131BB3A56636471FAE1 /* PFGeoPoint.m in Sources */ = {isa = PBXBuildFile; fileRef = F120433DCBA609FFCA1AC8D7E66C715F /* PFGeoPoint.m */; }; + B09BFA78A6FA4E03872B3C6813F9CF52 /* ObjectMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 1801665BFA99C3E5F261CACB58723B11 /* ObjectMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B17336576943ADD8ABE250E808D8B72D /* FBSDKAppInviteDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = DA6483DCB5207821171D8E1785A354EC /* FBSDKAppInviteDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B1ACA353E817624A71E6EC76F82A051F /* RKBenchmark.h in Headers */ = {isa = PBXBuildFile; fileRef = E1FB03A638286D34951A35082DC8829E /* RKBenchmark.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B1B5542A3966742AC81F380E955AA85B /* BFAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = FE83EAA7D7F81F996C8A1FCC962D6EED /* BFAppLinkReturnToRefererController.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B1E2BB1A1186B0C02B35C1C6F5509D36 /* FBSDKLoginKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CF7867AD1B16B0D2CCD3E12388E307E6 /* FBSDKLoginKit-dummy.m */; }; + B220008A1D3DD1B6628E2AC2A64A02AA /* FBSDKShareConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F676232AD2D4E768D123E3880A987ED /* FBSDKShareConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B25E3751AB01594311494F5E9AFC5322 /* FBSDKLikeDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BF1F39539444FAA093EACF74048A6D6 /* FBSDKLikeDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B28E7BE90D0898F34164A3649D16E978 /* FBSDKLikeObjectType.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CE33DAD07C0504380B377D5B4E23F61 /* FBSDKLikeObjectType.m */; }; + B2C7E9065BD6BF8E3F3017B802865B56 /* FBSDKAccessTokenCacheV3.h in Headers */ = {isa = PBXBuildFile; fileRef = 81E97AE375AD2C365E560E20CFA6DD4A /* FBSDKAccessTokenCacheV3.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B2DB66509B953232772CC24828B2A2D6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6FDEF44D035ECEB171CF49BE68D54D0 /* UIKit.framework */; }; + B2ECB596CD8B0A8925E2221C87668493 /* PFPinningObjectStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D7CCA908675FF8F62C1721B4D2229BEA /* PFPinningObjectStore.m */; }; + B3539900ACA90E11ED43DD92C1AC3C8C /* ParseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 246B31118F4482AFD1E5B6FBDDEE6EB2 /* ParseManager.m */; }; + B3777DF9804F4FD5656FF7A89A266CC3 /* PFDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = C058566058269B2CA65AE1148198339C /* PFDevice.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B4035BD0031BD154E70AF698B10B48A7 /* FBSDKSendButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DA39AA231A2BC6DEF831A837F406512 /* FBSDKSendButton.m */; }; + B4E61680387E0E5146734C1EB81255C5 /* PFOfflineStore.h in Headers */ = {isa = PBXBuildFile; fileRef = C27E78AB76228CCD047CDFC9941CCB59 /* PFOfflineStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B50EA8AB3CF7CF9162E24421784D4BAD /* YALFoldingTabBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 821E516878F8F964D6941FE6C2AEB04D /* YALFoldingTabBar.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5983C745D96CF344F4DE9DEF60C5ECF /* PFInstallationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1154985103CE37155F52D0BFC04340EE /* PFInstallationPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B5F68ED030E3466DD38E0179122A8E45 /* RKPropertyInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DF6012AC3FEDDC30928DC38FC317836 /* RKPropertyInspector.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B60C299FB6D6C13D99621CDBF557AB27 /* PFCachedQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = E276164BF784A894BA33B42E12F10CCE /* PFCachedQueryController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B68EF6DB36966D13E557D2247702E8C5 /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1766F952ED7D24BA1223FECFB809EAEF /* BFExecutor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B71F48BE352CE58652003A3A8BE5EDC2 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F323D6CA68A5402E8D8D781B37B2A91C /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B7F654610A8DF8054D47B38623765DAA /* RKObjectManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8286A9C555581B1077CACA650C967E59 /* RKObjectManager.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B84F69EEEA9898307D85749FD54502D0 /* FBSDKLikeActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C12288DE642EF37C6B63C07FF664190 /* FBSDKLikeActionController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B8E9E3E768F9393C56CCF30EF6E92D76 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16621039C0E3312C216165BEF8D567DE /* SystemConfiguration.framework */; }; + B903E58329FDF7F6E815312255B967F7 /* PFCommandRunningConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 2739B66EFCA7F40FAF75E4F39A6A9A7E /* PFCommandRunningConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B91DBAED5B544D03577FAFF5722F865E /* PFMulticastDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 68655B40F89C27D89D53892FD3930D30 /* PFMulticastDelegate.m */; }; + B9A074BC3A31106AEC6667D7684FB0F6 /* PFDefaultACLController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0565BEC2CF133E7552070ADB0B6B25C7 /* PFDefaultACLController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BA348104C2089F3DB71A91E2E7AB4EED /* RKObjectMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 85005E81A14B03A9ADDF308A1C17B784 /* RKObjectMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + BA61EA5F3CCE71914D2E8405C76CE42A /* ParseInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = D1C051EE39EC2369E3712F32F65AAD73 /* ParseInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BA9C553426A8678957BAED9B891E4B96 /* PFReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 9568A44CB835524C00AA887038D28A2D /* PFReachability.m */; }; + BAB82247B24428DCAC2A4F4E9207F60A /* ParseModule.m in Sources */ = {isa = PBXBuildFile; fileRef = D807F253C1FC0EAD584DFA49AC3AFFE7 /* ParseModule.m */; }; + BABA3F412E61C8AF114390901E5EB8C2 /* lcl_RK.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E3A50746719F1DF8EA234DC24662F0A /* lcl_RK.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + BAD9633CD11A33F04613C1E42EC6EED9 /* TransitionKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D639B8AB8EC8DD751AE4F019F908401 /* TransitionKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BAF2CCC3F6782690F1534565B877278F /* FBSDKShareOpenGraphAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 4720A959FBF253E6C8315EC7BE3FFEBC /* FBSDKShareOpenGraphAction.m */; }; + BAFE82F7512A8C98F8C6D46D28F5B965 /* RKDynamicMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 72E01F510DB4DF12750DF5F0ED31E9CE /* RKDynamicMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + BB1151A40AE6E5AA064A5AAC684EEF46 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D3C1AE934C5238738DBEBC420E58024 /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; + BB166C005FECECA9EEC18109D86F3CE6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + BBD60D3DA8952B0318A965D2F4B9962D /* RKObjectParameterization.h in Headers */ = {isa = PBXBuildFile; fileRef = 305C1B44A7F7E61553779E2EFAA7E6E5 /* RKObjectParameterization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC030E43EB80D6D27AF2D44F80CD7CDE /* RKHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 640B12F7182C4EF36510C06BF87ACDD7 /* RKHTTPRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC852E5C003C0E1C337D9C642F826513 /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = F7E3E2499E10690D5CDBED7CFBB46CF4 /* FBSDKAppLinkUtility.m */; }; + BCC52FD8A4B950C4F0A918C1E7C04A8B /* FBSDKLoginManagerLoginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = F84F292500C57DA9F2C1AF294A4409F6 /* FBSDKLoginManagerLoginResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD3CB42C142417AFADFDF458A7B580E7 /* PFRESTCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 878B0AD059EDF719C2B350F1235F0A90 /* PFRESTCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BD6D648A05281F2FFA2E3F281BC9019A /* RKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = A066A1261BC2B943A2C58454D8594E4C /* RKMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD8A5E25C13BF645294D97EB1ED09CA0 /* PFAnalyticsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7963D53D53339137B7E1A3AB0F520174 /* PFAnalyticsController.m */; }; + BE0F6955D03D6DF536335CAC10A8CFC5 /* FBSDKAccessTokenCacheV3_21.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E780E029F38CD5DC4D44B959AE7B2CF /* FBSDKAccessTokenCacheV3_21.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BE269944FF4E5E554223D2E055E4F1A6 /* PFAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F25D79A6D9350DE097436ED2E549BE1 /* PFAnalytics.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BE28D5E4C90C546FA735DE393B33CDA3 /* RKObjectRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4966479D5117182D9BB2405C57BF9E48 /* RKObjectRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BEBFDE40361511989AD4318B1B5E578E /* PFObjectController_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C1EBD8327430E9BC4CE07572302C3B1 /* PFObjectController_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BEFC0134FE56543E669CD06873F5BB8F /* PFAnonymousUtils_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 466349270C59C68B7BB457BF69B9ABCE /* PFAnonymousUtils_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF7290A7C875C362F762B2D6C1B991B7 /* PFObjectState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = ACE5B2BD57D84096B68C686CF2A297F0 /* PFObjectState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BFA8895521CECBF82A30964B918DDD3A /* PFLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 985870310481EAF6D1AAD21D98000C42 /* PFLogging.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BFAAE2E16A1F2007BD7CDF1DB8D2CDAD /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = EB7387ED21F22A0C3ACF3899E4EF7872 /* FBSDKAudioResourceLoader.m */; }; + C0575A904CA77375C3DC6B600B99CEAD /* Parse.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CA213D7D985D157E1F5FE2776AE93F4 /* Parse.m */; }; + C09CA6A4AA52E14E894A7A328C0D8178 /* PFFieldOperationDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FB830A71452CCDB67D2616730944824 /* PFFieldOperationDecoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C0C7A1E73D584A4F93A286FA1753D5B1 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 35DC0FA9CFA673AEF41AF09AA45DFD4B /* FBSDKBridgeAPIProtocolWebV1.m */; }; + C0CA4956B32616DC4919F00A7EC9B92C /* PFCommandResult.m in Sources */ = {isa = PBXBuildFile; fileRef = AD4D3C55161D3874FAE6A6D4FA05E974 /* PFCommandResult.m */; }; + C15F9AD9C17E18B25E1EF6B788309E6F /* PFObjectFileCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BE43B9E9A14869E0D43BEAF29841B34 /* PFObjectFileCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C35F6A896E802A315D7EE2BB54CBEFA5 /* AFXMLRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D4A5E0FFDBB5F59ACC2A7671E2EE4ED /* AFXMLRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C412C0A9241FD8CB88314EB3BD8E528C /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D7F94B3DFD758F1C5AED31B6286D251 /* FBSDKWebDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C50BE142E604DE751E9B8AF5DD6B0363 /* FBSDKShareLinkContent.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C8F9BB226F40C4F7CE5B08939D6900 /* FBSDKShareLinkContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C5BCED302898250D42DAB9622E61A2D2 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3849FCCD9604B569E0277015CC30071D /* AudioToolbox.framework */; }; + C63F51531975AE0BE6BC871568A6475D /* PFTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 48CE51C08D38E74BB9D873799C3B56FF /* PFTaskQueue.m */; }; + C66C913D05F70FF30EC65B1143CDC84E /* PFSubclassing.h in Headers */ = {isa = PBXBuildFile; fileRef = E5F9060B3223AC9783E8EC3F9FD5582A /* PFSubclassing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C6976F7772E03E1FE2AB027F7AD1484B /* TransitionKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F6C85F64DFA1EA9920744621BC7D1A3A /* TransitionKit-dummy.m */; }; + C6A4588B17EC2FC562007331CB512C49 /* RKNSJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = C6E71AEE806FFD98620689D854D9722A /* RKNSJSONSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + C72DD6BF1D64A4F33EBF2D6B77A8824C /* ParseManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 94212D75F6067FFA601083EF41CC441A /* ParseManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C7ADD9A2DC3411145922D13FE552AD20 /* PFPaymentTransactionObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 44FCD8E48AE2854E6C68B55DE899278F /* PFPaymentTransactionObserver.m */; }; + C7DCD67DF808CAC96CFFB404088D2CC5 /* FBSDKLikeActionControllerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 262AAA5A94DB64464A971372C0A5C98D /* FBSDKLikeActionControllerCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C8650F51B96E23879C9133719B5CE14A /* PFCommandResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 4143EF2889DC7708FBFDFB6EB6F7F78C /* PFCommandResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C8A8F4BE07EDC15A6921CD68990C0F98 /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = DFD5810B96B239C3591705FE5D26D379 /* FBSDKBridgeAPIResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C8DF39D35A8ACF9F10F8392AF8C407A0 /* PFURLConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B465E244D44A3BE904CFF8C4A48E701 /* PFURLConstructor.m */; }; + C8E9B871537B5C88280E56A9778803A4 /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6447323ED6AD2EC1483AA3C66091EE93 /* FBSDKAppEventsStateManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C920759127C01FDD99644BB6806F24FC /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E758DEF5BEC8EEC9032BAC8EAEAA4C51 /* AFURLConnectionOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + C938FA47C6276A28C9F0E0C1933E3E51 /* PFCoreDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = DA54D490C8B9FDBC6989E68EFA54AF6D /* PFCoreDataProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C95B6FEA0DB3899E1F52C07D40DD4DA0 /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CE1ACDB733D2C97F7C82EA9FB83836C /* FBSDKDialogConfiguration.m */; }; + C9774E7792D3CF37A4D1C7C208FD14E2 /* PFPropertyInfo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 637A71462456BAA98EBD75DD2B6141C7 /* PFPropertyInfo_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C98D3A0AD03C7C00CB3C17CFEDED8552 /* RKMappingOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B43B4FF57FBEA73DE52BF4AEAD1F36C /* RKMappingOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + CA0A64C7187BFF5B6143C3D3A7FF8D94 /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A968895EE338B1992703020E6AA2A9 /* FBSDKAppEvents+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB3395E1F4E550A3333860410E07904D /* RKPathMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = C480EBF5CDD5C303A3C3A1D7B36A7E80 /* RKPathMatcher.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + CB4B0DCDDB21473382F6B2B6666EC6DC /* PFConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = A711FBFC3588B353719DDFFC023B9290 /* PFConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CB7A2EB58EBA82B7CE519F8C2EEAFBC4 /* FBSDKAccessTokenCacheV4.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CA2B777015AD911501F34BE9E2A08EB /* FBSDKAccessTokenCacheV4.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CBC28D34E7E02B4E254099B15B674080 /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 57F9B8722311F2DE9BFA34CD3DCA5DB9 /* BFAppLink.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CC0225659881638027E96EFF8EE41228 /* PFSQLiteStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8582EC197D28F9D94A384B032F5B2C58 /* PFSQLiteStatement.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CCF1CD4428BA2944666A829E767A6C15 /* PFCachedQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = F6A1AA7E3400E1B0C28309A8DB53D160 /* PFCachedQueryController.m */; }; + CD2E86E2BA9BE8DBAA7FE88993F1E41E /* PFSessionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C400573A5C886A59A391F89D0812135 /* PFSessionUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CD5054A2ECB96B3ABB0B3794A299A822 /* PFHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CA0240612F45CA8F80CC4045A3C4C7E /* PFHash.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CD6F43B3511A0FBF3E573962063BD5B9 /* PFCurrentUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E6629CCD335C17E0B583B60896F6F5D /* PFCurrentUserController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CD70F46AD007D42A6E7E4C03AD654B48 /* PFAsyncTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 817BE16BBDE06E00A285E8DEA40C2A92 /* PFAsyncTaskQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CD714C0FC030441A7466E26DE9A3AC29 /* PFOfflineQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 582FD07A79653DAE823A3A00F9AAB825 /* PFOfflineQueryController.m */; }; + CEA03E2CE5F3081E3865AA30CFDB3576 /* RKStringTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AD39F0020472100496314600E65AF2D /* RKStringTokenizer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CEB3B7738916847B38FA1E13D49981DC /* SOCKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FDC2AC9DD87123DFCCB762335374C3D /* SOCKit.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + CEF61BB75902C8E0148259A5DF63854E /* FBSDKAppInviteDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B632D115A665AE3E0A0F24A1BF865D7 /* FBSDKAppInviteDialog.m */; }; + CF49B64886C0C73CE0EB0549FA20E21F /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 05A01B956AE10C43AD0F5B2B2B7920BF /* FBSDKDynamicFrameworkLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CF49D485A500B363E1DDEF68072F9F36 /* PFSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 4483EB7CE5A6261A9164976F9D35F986 /* PFSession.m */; }; + CF61365D13FDC0E6A145C012AB9B98AE /* RKISO8601DateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7D839938133223C5D03CF7E035527E /* RKISO8601DateFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + CF6A6DAB258596DF234FDDA9F2B214CF /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B20C13881AFBB4E88D5826A0683F11 /* BFURL_Internal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CFA516A9B6268932E1375EE60F7A31DC /* RKResponseDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 01FEEA6D377107B1A0563028100F1FFD /* RKResponseDescriptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CFFAEE251FC130E14DF2831B504F748D /* FBSDKAppGroupJoinDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = FF5EAF38BE17B63D9DB9D69544387A2B /* FBSDKAppGroupJoinDialog.m */; }; + D041A6307B8BE12B6F1D2C7B11DB335F /* FBSDKLoginManagerLoginResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 702E8ADADAF9B688368323A9218E6461 /* FBSDKLoginManagerLoginResult+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D052ADE6387927B8A72F291AB6D821EF /* PFConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9193281C25815834A39FE54B319DD33D /* PFConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D16EF56685DA7EE0C6F714819F926216 /* PFURLSessionCommandRunner_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C79111BD3BBEC8AAB595BAD4F5BBFD90 /* PFURLSessionCommandRunner_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D183B6B66F20B85A64F5B7603D0A473B /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = D4B02834ED165224ED2B72E17A23F1C7 /* FBSDKDialogConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D1E16869A350E851F31AE83FAB93361B /* PFOperationSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 96725FE5D9936FFB88E9EF3C7354C6BF /* PFOperationSet.m */; }; + D1F17C848BA03A0D38CC8D8B815B75C8 /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 59A54DFF04E955ECF7F946017F365A27 /* FBSDKMath.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D224C6471A4DA408043B4E72EA97721E /* PFBaseState.m in Sources */ = {isa = PBXBuildFile; fileRef = CAECEB62E59C8EBCF2BFBB361AC28C39 /* PFBaseState.m */; }; + D270E51BC7362F767D5429DF7A368E0B /* PFBase64Encoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 442FE8495BC41626A686B84CE00354C4 /* PFBase64Encoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D2C8A050CA49DB3967B01D9B9354FC16 /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = D31B782B1DDF351A513DA07076DEB77A /* FBSDKViewImpressionTracker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D2DF8F3B252BED46B455366674FC5F8D /* PFLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 49A809ECA636BA098C492E0709054E30 /* PFLocationManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D33E2DE9B21F540B2BF1812B90F33155 /* PFURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 333FAC024F4389EAD8F3D15D9F29C1D8 /* PFURLSession.m */; }; + D3CBA0C9A2F20A2AE8D9E8FA5F2326DA /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = 4523E95A8F9A0D756D54DFC5E768BAEB /* FBSDKKeychainStoreViaBundleID.m */; }; + D4163483905F3CE49898DD8AAC0E0910 /* FBSDKAccessTokenCacheV3_17.m in Sources */ = {isa = PBXBuildFile; fileRef = B4D5CA49244C779E343DF9F173C32D69 /* FBSDKAccessTokenCacheV3_17.m */; }; + D41A41DB158B8E95575669C635CCD82D /* PFURLSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 931878F83D6F6F825E3F681B771690B9 /* PFURLSession_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D4315EE9D6AA73520E3C28206BB12A2E /* PFFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CB99487DF93544382D4E7BB83E98DDE /* PFFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D466AEB0B97EDC9663AFFD5F94C04630 /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 94AC9DE3CACB9F94683FD063FBB0D29B /* FBSDKErrorRecoveryAttempter.m */; }; + D491E4080F061A2DA0BE31AC5D94DEA7 /* RKRouteSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 307A4292CDEB528BBF94D77971EA42D8 /* RKRouteSet.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + D5101DAEAC2C4A3667D2CDB64B5B0F92 /* RKMappingResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 71C2E7C3225F1C71AB7801BD548C40BF /* RKMappingResult.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + D57E377DBC5DFE3FE279AA79A92A9BB3 /* RKTestNotificationObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = F62A65D495C27089A10FB5943BF3A012 /* RKTestNotificationObserver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + D5DE272410B216A538955743C7C9574F /* PFFileStagingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 27B39579BA1A116F78E9C52D8518C9D8 /* PFFileStagingController.m */; }; + D5EE317B7D0E35A376DF8328CEA3252B /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 213CA7050878B04AD0B0FEEFDE26FC3E /* FBSDKAccessToken.m */; }; + D6027C66071A9702E15C8A733DBF6FF6 /* PFPropertyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 03F801D486528ACB735E258BEAE163CE /* PFPropertyInfo.m */; }; + D637A12D921733D3173960A61DB8AE92 /* PFObjectEstimatedData.h in Headers */ = {isa = PBXBuildFile; fileRef = D4ED889D5C4216E8C328B8142E67A9CA /* PFObjectEstimatedData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D66BEA50BF7F894CCCA235694CF7590B /* PFInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = A126D8590E2C7ECBC16300C2C3A644D2 /* PFInstallationController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D6B9D996B48B90EB489E54CDC7A9D401 /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = C304A10CF6190FEEEE9590529DE3B5EA /* BFTask.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + D6C7199C3F4D973B0E6ACA2C6ACF5FF3 /* PFCommandRunning.h in Headers */ = {isa = PBXBuildFile; fileRef = 19333F981C770A5CDAFA1A9B6901522C /* PFCommandRunning.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D7B46B6BD03E88E70CAECBDCED8F4744 /* PFInstallationIdentifierStore_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 586A6FCD3982EF14DD7688A9C35821A8 /* PFInstallationIdentifierStore_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D808382848DE98DF7860D36066C0B58B /* PFPushController.m in Sources */ = {isa = PBXBuildFile; fileRef = 11590B62084307FCCBCBCD4CB7D71BA1 /* PFPushController.m */; }; + D8085207CDC6F2A69B21CC10BF0244C7 /* TKStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = C24ED85DEF7CEFA65A545211A7E9A27C /* TKStateMachine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D83032130352AB7F72E4AF6EE0024D11 /* PFDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2353E605872B5C10ED350AF2720B1ADC /* PFDecoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D8ADDAF044D6B1B3B763D0334FD8BDAD /* PFQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = D2E0F8156813BEB961019EA1C361691C /* PFQuery.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D8B32C5FF3597EEDD220A394295B194B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + D963CE53920E664E9CAD6F4B834B315C /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = A93AAAD8AD7E644F7EC9EC8AA665569F /* BFAppLinkReturnToRefererController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D97FDB91BBA6D010CA658A611FC4A9A1 /* FBSDKSystemAccountStoreAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4B2DFF792D6E7C2B1939641ED637C /* FBSDKSystemAccountStoreAdapter.m */; }; + D9D8B1CC492E4406C76092EFA10047F0 /* RKDynamicMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 78A8CA3DC6231EBEE1E0835C4B5FCE5E /* RKDynamicMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DA880A2094CF94108583D78E4097D554 /* FBSDKAppGroupAddDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 85A9C0088D1A20CD6084587FE37E8706 /* FBSDKAppGroupAddDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DA957B3EC09252118B3E9ABE033421A5 /* PFAnalytics.m in Sources */ = {isa = PBXBuildFile; fileRef = F3C909089E36795B0294E159BE83E353 /* PFAnalytics.m */; }; + DA96A28C136407B16A3F0C70656042AF /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = E353BD446B09E846E43AE7A8C9FBE5AA /* FBSDKProfilePictureView.m */; }; + DAD881A7C7DDA8848FF17E18DB99295C /* PFRESTQueryCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D74AE7682B21EDC5FA135CD84A526CF /* PFRESTQueryCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DB8CE9C5C660790137E0C7B7364E8E82 /* PFRESTUserCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = ED989C258CEF00D2F1701A073DD1C374 /* PFRESTUserCommand.m */; }; + DCA33BB2A983A45F3617A576ACBC26E1 /* PFDefaultACLController.m in Sources */ = {isa = PBXBuildFile; fileRef = 73A197191DE75F22F95C4B3C2E31527B /* PFDefaultACLController.m */; }; + DCF16A999DCFC281A8744148B305482C /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D485AE7D7829E5043DA9B3788867222 /* FBSDKServerConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DD60532519B073DDC5A56E7426B983B4 /* PFRESTFileCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B240507A5F5C3ACC7EDDA9A36CAEFEE /* PFRESTFileCommand.m */; }; + DDAB1F17EC68C8B719BA8C80FB5DC317 /* FBSDKURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = D558BDA6C0DE3DCBFD4EB1B7FB8D2C72 /* FBSDKURLConnection.m */; }; + DE479B83E277F9913E9A6CBE17BD6B3E /* FBSDKAppGroupAddDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 52249F35F2B3F990A6B5460810409C13 /* FBSDKAppGroupAddDialog.m */; }; + DE61C9B48F5213CCAB8012BE4C261842 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6114EBA3A5CB7CB8ECE0A9BEFA6DB026 /* Security.framework */; }; + DF5A96668809AF7FF9E04130C5D9A1D2 /* PFTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6C96E7CB161E28C9D346CD5CEAA5F8 /* PFTaskQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DF6FA2E0FCB935C5FF9824699BF32C2F /* PFLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = BA86A11DA2D2DE1430E01C7AA116C69C /* PFLogger.m */; }; + E0078B6CE5F3FA7BA899B72695D2F70B /* RKLumberjackLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = A63CD3C63759638B8C81445CC1AE5832 /* RKLumberjackLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E03421EE59E06D90EC9F0E07B93E1C2D /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 421AA4D00B6B66524A46DC0728150287 /* FBSDKColor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E0614739E177590ABDB7BE575E24118C /* PFCloud.h in Headers */ = {isa = PBXBuildFile; fileRef = 425C02C4E4B038FDE445DA322EF3113E /* PFCloud.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E06A12A765D316CFB2E9E26FB48C3AC1 /* PFPushState.m in Sources */ = {isa = PBXBuildFile; fileRef = DD4352603F7BBCDFDFBF51AA7E5470D8 /* PFPushState.m */; }; + E0724D062B05BEC513826196D0DF36F2 /* PFSessionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 697AC4B193E7B1C3AAB92E30576C70EB /* PFSessionUtilities.m */; }; + E0DEC8F4B52DC0BDAD4F633262232B7D /* PFURLSessionFileDownloadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E57F847AAD9A19486F1EB1BA4A0C9071 /* PFURLSessionFileDownloadTaskDelegate.m */; }; + E0E49C694EE64CD46539BAD3D4F08AC9 /* PFRole.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EC412AF8C018680357347F65018B124 /* PFRole.m */; }; + E0EAD57AC8EA4C3510C04CDDC9A28DE6 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = 29545B0051D4759CE30F62B98CE37FCB /* FBSDKBridgeAPIProtocolWebV2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E10A2574E0EE99F47BC9CAC0AF33FC47 /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 21378AD860758D2EA2336B59DC09BB68 /* FBSDKAppLinkUtility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E159EF1028A9794B189D47DD79C6A0CC /* FBSDKAccessTokenCacheV4.m in Sources */ = {isa = PBXBuildFile; fileRef = 486A8EBF63F7D80E6BB3BF1ACD672CFD /* FBSDKAccessTokenCacheV4.m */; }; + E15B9B510B4BFB5AAF2F8BFAC5EBC997 /* BFCancellationTokenRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = B2049AB603335D958370F042F249C577 /* BFCancellationTokenRegistration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E19528B349AA57299BED8F28FFCDB92D /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = C8C072F8CBBD8377A84639A146342212 /* FBSDKErrorConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E1B5FD2855EE2B8E7393E7DB0C494946 /* FBSDKLoginButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F08BE85063341A7E769D75F5763E3946 /* FBSDKLoginButton.m */; }; + E228987782C3CA4BC276D56CD25AA911 /* PFURLSessionDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 650251D49165102AF10424F8FE6CFF26 /* PFURLSessionDataTaskDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E288DE93014B057EC4C1871E17F3FA89 /* YALTabBarItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FE8823AC87A2EA7D2BF645AA039E957 /* YALTabBarItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E2D2F28DE8D25857A0143D0C99E1264C /* FBSDKShareOpenGraphContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 6802B9BFD996D3B878D450B785AC2060 /* FBSDKShareOpenGraphContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E30BD9620B97DF000E8F31104048D432 /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = FE161616D496831D4089B8F6813DBE39 /* FBSDKServerConfigurationManager+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E346D04E3F0539B358C1194F02FB8809 /* FBSDKLikeButton+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 81A5DB14272C6EBC7DA612E0D8FBD00A /* FBSDKLikeButton+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E347F996B822D8480FF7B718185C46DD /* BFAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = A1A2CA5B68B1C6F0052C73BE934D33D8 /* BFAppLinkReturnToRefererView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E35FADAE8EF72A1419545CEE70610D27 /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AEE4D8F9683C8D1ACEF10CAF4E41A9C /* FBSDKPaymentObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E461DC7FBE41300801EE6D160AE29860 /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBA64F9DA348CD22FB1AC87B9F75ACC /* FBSDKServerConfigurationManager.m */; }; + E46B5DC4D2646D5DD81881A2D4EA57F0 /* RKISO8601DateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = E8BE55CB57DEE8420789C65645ABEFF9 /* RKISO8601DateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E47D4E86203EFA7643A44E5109117967 /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1019C96E930FDF66BCD79751678FFFF6 /* FBSDKGraphRequestConnection+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E497F7EAC903A7C28D8CC1FD0D90CCDF /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 2965F8E850F9EB3EA40B7FDBC0F6924E /* FBSDKConstants.m */; }; + E538CE431B0B1742D219C8D91483FDEA /* FBSDKLoginTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = AA9C61E1204F6BD3E847A74FF29A1F91 /* FBSDKLoginTooltipView.m */; }; + E544AA008F4106DB432AFF71DD5B5654 /* PFUserAuthenticationController.h in Headers */ = {isa = PBXBuildFile; fileRef = DC01BFEAAAC847F4F08D2481C7229EEE /* PFUserAuthenticationController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E571D44B22235633760C6FB955906D99 /* FBSDKShareVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 76F892C34CC6406B1AB6E24B09138F86 /* FBSDKShareVideo.m */; }; + E5BE3915A6A2859B581A8300E69A2B8E /* PFWeakValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 69532310DA9419CB7D0183940081C37D /* PFWeakValue.m */; }; + E619774CBBC6B7DB599BB085A6F24102 /* RKTestFixture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9957AA65319B89D5DD0424050D460948 /* RKTestFixture.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + E6400BCB9E4DCC98CD30D74AC0F6B56A /* RKMapperOperation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 117FC8B2ADDE85F697FC85ECF51FD3F3 /* RKMapperOperation_Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E65B5BAA6FD361DED892118A76ECF21E /* FBSDKLoginManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A310034DF2EA59B12C3C17FA56A7D8CA /* FBSDKLoginManager+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E6D6A687F8FD1088F5EBB283308B0DC2 /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0100E24D37FE9C4A3412983EC266C1C7 /* FBSDKGraphRequestPiggybackManager.m */; }; + E6E0B008759D9B3D9EE25FD2FE56E715 /* YALAnimatingTabBarConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = C4A5204786239441709AD7ACC6C10DF1 /* YALAnimatingTabBarConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E7A1E7F0498A21036EE756DA807E34B0 /* PFKeyValueCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B01AD8E53CF8F54CAA21EB125198756C /* PFKeyValueCache_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7AC21B4D847D0F421132DCD478589F6 /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B16E71107186CBE636A34F02C7C0DC /* FBSDKBridgeAPIProtocolType.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7C91F488C152026DF77891E905E49BC /* PFACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E91BE2BF2B6ED7524B651D0202AC4E0 /* PFACLState.m */; }; + E7F0BB11E1A7B4F36F3B5C5473E30A10 /* RKTestHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E10976A217E52C40572C15A1627BDD2 /* RKTestHelpers.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + E7FCA88FB0851D5AF8DB69F2411E06E2 /* RKRouter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9404F58DCEDDFD27D11EDC156DE41058 /* RKRouter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + E81433D0931C25789180EA53A62C940E /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = D748BF0E60AF7374125A323AB6FA6176 /* FBSDKBridgeAPIResponse.m */; }; + E81D0A4FB179B72572B6E7521484EB16 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + E92D54EC2B8A52C24D9C34F2A37F2996 /* PFURLSessionJSONDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = EAB7C8D81307D67033C83A0116B517EA /* PFURLSessionJSONDataTaskDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E97B61F439BAE5B0BC4AE0382AF6E4B3 /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = EC53BB2A4757BDC90938CF004EC14FD9 /* FBSDKPaymentObserver.m */; }; + E998F4250A20099ECF4980ECA881988E /* PFUserConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F0161219DC8EBD1C3D61015979852A6 /* PFUserConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E9BBD9ED8781DB4B08B9A35068B2E0D9 /* FBSDKSharingButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B789CF6E62B4AFFE38A3E4538927DA /* FBSDKSharingButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EA3208DE2E2A3C5B240A0C832A77DDCF /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = 354D71ECE03FF896929A5DF65F72CA5D /* FBSDKTriStateBOOL.m */; }; + EB975D51FB0B6C984EC3A970061180C8 /* RKPathMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = F4E257A30B52BCA02E3AD226A28156E6 /* RKPathMatcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EBB6F0BB04FCFC82D12723EF3E740261 /* FBSDKLikeControl+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = D18D463A980049E0F00BD51E3DEFF7D8 /* FBSDKLikeControl+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EBDBE9612ABCEF630CC6E9B282086FD9 /* RKSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = B75D3CD9991E32D3045EFD508FE204E3 /* RKSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EBE1D926D326775167E082772E23D000 /* FBSDKShareOpenGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = CB98CBDFC30DCA09820317B62E92F7F2 /* FBSDKShareOpenGraphObject.m */; }; + EC5F8395D48ED1C0BE2C2D7EB7D9F4B9 /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B1D85199C350E1CC77B906C3E4938BF /* BFTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC7025C98AE47F5E2D9CBEA4AC041890 /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = D03DA3189A149B152CEA7A11F9C76649 /* Bolts.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + EC988E57B95BF4C3D8D67B5A3B382A8C /* PFMutableACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = 33BA0D4863A03D1948F483CFE7EA4EAB /* PFMutableACLState.m */; }; + ECECB6E62DA076603D8F2A805641CA27 /* FBSDKLoginKit.h in Headers */ = {isa = PBXBuildFile; fileRef = ABEC7A4F1C213D9FF650D68130BE307B /* FBSDKLoginKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ED089A748BCDC9F6C6872F5F7E21E412 /* lcl_config_logger_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = 16CCB8BB94AE34725A72A8769F301A7E /* lcl_config_logger_RK.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ED4ECDAC11F885A77723CE05B89A65AA /* AFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = EB41BA80088D3B05F30B5FE2B650F1E8 /* AFHTTPRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ED6B6D31DCF0E36BB88E225710AA83DB /* PFInternalUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A7EE25D0A40F414D480899041A5E485 /* PFInternalUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EDB2BA3AEA3A7A4EC735BAF9804D75D4 /* FBSDKShareVideoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 326B318804906FA458A65108849C0F78 /* FBSDKShareVideoContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EE0DAF5E510D971C9A34D617DA2438EC /* PFObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = B27A11D910EE7C9849CF8F140E280ED9 /* PFObjectState.m */; }; + EE76A64B08255C079A379BC77864B85F /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = ACC5D57E516CFFB2CE3244680661340D /* FBSDKProfile.m */; }; + EED88C9780961006A6F988AFECD7BED3 /* FBSDKLikeBoxBorderView.m in Sources */ = {isa = PBXBuildFile; fileRef = A911FD2DE04BBABF90935B374E405983 /* FBSDKLikeBoxBorderView.m */; }; + EF254F401AD05830A53E37EB6ED1A20D /* PFOfflineQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D8C8E5159871AD5FA5B7332A649FB5 /* PFOfflineQueryController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EF38756A5556C26335245407A2D3C876 /* FBSDKLoginCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = EB51571C4C582A26F710845CFAA3AAFE /* FBSDKLoginCompletion.m */; }; + EFB0AF9D9768F6BD8723FFCB40AD7D39 /* PFThreadsafety.m in Sources */ = {isa = PBXBuildFile; fileRef = 880D8A88A7684A55315EDE4547F17390 /* PFThreadsafety.m */; }; + F060AADC6126A31918F62A205D714C32 /* PFUserAuthenticationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4570CED15A9C16289C4D098BADB4988B /* PFUserAuthenticationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F08F2CBC9F704A5EA0102586DAC55989 /* RKMIMETypeSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A18E97231CDD5F751206CDE84F4B9BC /* RKMIMETypeSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F0DC437CA168984F852D7735048BC6C0 /* RKAttributeMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 979F775694C8742A140AFEFE090CA61A /* RKAttributeMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F0FE6F4E093E414D2956FA431E0C606C /* RKHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B12FBE677B57927C3F666FD0FD6511BC /* RKHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + F10CE2BA1CE785FB8EC2CE0595A7FBBE /* FBSDKLikeActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 943C0E46DB3D37D67FFBB0E81F8082D7 /* FBSDKLikeActionController.m */; }; + F1B80D56445F494B2F82BB577E4CB42A /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = FE19DAED716CA2A2722DED05F8DB92B4 /* FBSDKShareOpenGraphValueContainer+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F1FB40054787172F5817A61DF16AA000 /* PFProductsRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 2982D008CF0D29BDC45EE799823CC219 /* PFProductsRequestHandler.m */; }; + F21561635F6B62CFBA1A70ED0D86BE5A /* PFFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = EDB85417DB00C6BC36233DD8F5D526A6 /* PFFileState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F22E744D20ECE98DB31805F305E0BECC /* Network.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EAF198C3A7ADA68D4CEE15D8F5409E8 /* Network.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2614C38AA4BB27104AD7BAB99E2BDD3 /* FBSDKSharingContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CA5367E50A1A62A594A47FAA506499D /* FBSDKSharingContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F274F7BBA53230296D041E9788011840 /* RKPropertyMappingTestExpectation.h in Headers */ = {isa = PBXBuildFile; fileRef = 46EE1DE5D0F0015F4E7C0AE4FC9D85F6 /* RKPropertyMappingTestExpectation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2948A142B6234A6E12DF2AD5FC390CF /* PFObject+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E992BA048F5DF79A1CDCA82157BFEB8 /* PFObject+Subclass.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F350CF6BAA15E73067A174A0455B3D8A /* RKObjectManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E6EBF6F7C6F610013CFE4E847BD798F8 /* RKObjectManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3EDEEA557BF41B20EF260EEBE129831 /* RKObjectRequestOperationSubclass.h in Headers */ = {isa = PBXBuildFile; fileRef = EA755DA8F373AF93B1752260FBCD0DEE /* RKObjectRequestOperationSubclass.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F9AFABE12CF6EF4371A4A8DC5C9D46 /* PFPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = A7866E7BD22417E1E798E12FC8148126 /* PFPurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F4115B73585F11A711426EAE0B3B0B8C /* RKPathUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 73ADD1CAE6F397CC4738B0967E78B570 /* RKPathUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + F48F08F807C465B2DC535CE521E66D97 /* FBSDKLikeBoxBorderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 83EAF6F3D84D5233748529A8E8CB094D /* FBSDKLikeBoxBorderView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F4F96AF7AC5C83FA96E172128610B1F2 /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = B04554029C51C04C827384E9A03CC281 /* FBSDKBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F50BE85096146332D4C00C17546561DA /* BFCancellationToken.m in Sources */ = {isa = PBXBuildFile; fileRef = AC5662D51E6E075238B8E1970100B60A /* BFCancellationToken.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + F53BB2B5B2739CED55C0738568C22BE0 /* PFQueryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = D7FC083129BF68FB4CB980C41B463B48 /* PFQueryUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F54F01DCDD820F6EF621E915C1BF6E0D /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 7358191BB91547CAE16F05DBDB1BE31D /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6439BF34231EC9F4CBB3F01C862CEFA /* PFJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A801218C457ACD0660511E41F3A3A30 /* PFJSONSerialization.m */; }; + F6C1716F0805EA68532FF09E380B40D7 /* BFWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B163E967FEAF0C769D85F0A3A1EEB95 /* BFWebViewAppLinkResolver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + F7077CE67CBD9DAAAE91FBED372BA0CD /* PFURLSessionCommandRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = A504F227475EBEE681741A0C587CAE41 /* PFURLSessionCommandRunner.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F728C30DC692908961A286369C3A5D56 /* PFMultiProcessFileLockController.m in Sources */ = {isa = PBXBuildFile; fileRef = 773BC40E82A6994ABB953BECE34B7AA4 /* PFMultiProcessFileLockController.m */; }; + F743978153F2A7013B2066B1B306E5F5 /* PFUserAuthenticationController.m in Sources */ = {isa = PBXBuildFile; fileRef = E5AE21B40FF68080B94A984303BBCF2F /* PFUserAuthenticationController.m */; }; + F7A16A60215390EB56EFF7E65F4CF803 /* PFMutableRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 48B1E6D7D071B0E0ED3F61BA546629E4 /* PFMutableRelationState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F7CC6A2F5288951581078FA3B7C9A215 /* PFObjectFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A3D69E13596F5D45D883E1AE14D9B94 /* PFObjectFileCodingLogic.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F7DD4882D66BDDF093E01A1050E60F2E /* PFApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = F55189D706C6F0A7E7F9257ACEE9173C /* PFApplication.m */; }; + F7E42776080FF0BDBE07365A2AFE2834 /* FBSDKLikeBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 60C56926A1A601A3101BC398EFC92298 /* FBSDKLikeBoxView.m */; }; + F9198070ED60C8E1F3AF0910B05EA446 /* FBSDKLikeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 60B2A3058DFFA81A2091F7C428415666 /* FBSDKLikeButton.m */; }; + F9814C410ADDB3A0797E70914157D3A0 /* FBSDKLoginUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 42BFA9A32C67074761C10AC36BF1CA3D /* FBSDKLoginUtility.m */; }; + F9A49E306CE246D7F327C43091688131 /* FBSDKLoginCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = E8C9BEAE7AF61AB7F508B135815A7405 /* FBSDKLoginCompletion.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F9DC54B44C2DA79FEE1FE863F3185504 /* PFGeoPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4961DA34D602A21B6849256EB53A724D /* PFGeoPoint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FA27E23894DFC2F77A0EA14C2D1A3DD4 /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = DA692944B964141F5AC05B406C0139AE /* FBSDKMonotonicTime.m */; }; + FA8E3B41E8BBAC3A94F8040161250867 /* PFErrorUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F4B289AAAE3CB636116D0E2F1741DAD /* PFErrorUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FB1E08557D01F434CD5C340084CC4AE1 /* RKValueTransformers-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1537B3204A5DD70D808286FE603C4A97 /* RKValueTransformers-dummy.m */; }; + FB27D03B5B38BC7F5B6E70EF758693B9 /* PFEventuallyQueue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EA109C22D76467FD3FAB127642A18655 /* PFEventuallyQueue_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FB9237E38009CB01D2D2BC136D5924B7 /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AC4D864890FF57910E0C3F3ACE458D5 /* BFCancellationTokenSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FBFCD80E29C5DB1702D3FB255115D1C5 /* PFUserPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D1BEC4F5C959A0F3A590C62FFFAED54 /* PFUserPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FCDC22BD5A90775000A728831060EDCC /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = D85AEEF23A439D7C61100E8D5EFE0203 /* BFCancellationTokenRegistration.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + FD2A1B5A3B8F58A419B8030AB3B0C900 /* PFOperationSet.h in Headers */ = {isa = PBXBuildFile; fileRef = AAE5C3F24CDEB6F4DD19802AB2B9D8B4 /* PFOperationSet.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FD47F52F2CEDDB036100F734C1259055 /* RKTestHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C3ADF3356A01C102A78C499D44C195E /* RKTestHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FDF39F9BC888D9146BC087518C89A8F6 /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 948C70E84F724FF8F752385A5BD920DF /* FBSDKTypeUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FE2AAC4C194831168C51BE65F975CEC3 /* RKLumberjackLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 14424EF937E20F708472093A62D7D67B /* RKLumberjackLogger.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + FE3B8BC960347662443ADE923D1793C3 /* RKObjectParameterization.m in Sources */ = {isa = PBXBuildFile; fileRef = 78CD59E0BD6F1DE92BCA187E736EF6BE /* RKObjectParameterization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + FEAB4AF7F2C57BDEFD6081038CFD20FB /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 3678FC88ECC9E598059E5183A37EDEE1 /* FBSDKLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FEABBD556CE7DA2220EF2DA04C735136 /* SOCKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 83C232075A2AC8C59594FDDD1D494936 /* SOCKit-dummy.m */; }; + FEE35D4E0AC6882B8B643149854B0288 /* RKBenchmark.m in Sources */ = {isa = PBXBuildFile; fileRef = AB78F67642C251E7BFF0E9D2B17A8553 /* RKBenchmark.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + FF6C07931C151FAE59F3FB55F032AF23 /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = F0CB7F600F18B609668913010F45E215 /* FBSDKAppEventsState.m */; }; + FF7920785C7F9A6CBCDBFB44A8C63791 /* PFObjectFilePersistenceController.h in Headers */ = {isa = PBXBuildFile; fileRef = 29C1E470BE7725D82BB96486CEBA6B7A /* PFObjectFilePersistenceController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FFEDBF912F4CF43D78BC4F4331F09059 /* PFAnalyticsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 646C67B4157CB47C91F3D55E7BFA577C /* PFAnalyticsController.h */; settings = {ATTRIBUTES = (Project, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 07BFC67E4B108510AC71A0A5449A1488 /* PBXContainerItemProxy */ = { + 2CBE7910D2EC2D855C213F7D17AA7055 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 07B33CB3AC7A0FB33C3E2F87B3AAA6BB; - remoteInfo = FBSDKShareKit; + remoteGlobalIDString = 080AF914A09167DB5759A733917B840F; + remoteInfo = ISO8601DateFormatterValueTransformer; }; - 0F4B7338DE46F13905B30C9CD30ACD11 /* PBXContainerItemProxy */ = { + 339C469D88EE3434DAFA40C9E6F07FE1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = F70BF3EA9E69856AC06EB0A27F8F7F5E; - remoteInfo = Bolts; + remoteGlobalIDString = C47E006176ABF4755350B88C088C3F0D; + remoteInfo = RKValueTransformers; }; - 180401446108A5AAAA06D984EB79CE8E /* PBXContainerItemProxy */ = { + 349ED4A030A17CB37F5BFC4BE863A6F8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 38C996FDE9DF6549D8681DED0DF37B6D; - remoteInfo = FBSDKCoreKit; + remoteGlobalIDString = C47E006176ABF4755350B88C088C3F0D; + remoteInfo = RKValueTransformers; }; - 1AB990EC905BAD0E697E2BAC5D549712 /* PBXContainerItemProxy */ = { + 3EC57B4C7E05EAE5D8D0CEE64F908894 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = A2770197345BCE1622568AECE6B8E824; - remoteInfo = SOCKit; + remoteGlobalIDString = 5366B7F679CF2BA31EA583EA35CA2D90; + remoteInfo = Parse; }; - 1D5F94CFB0F913E9511CAF914A2C7D0E /* PBXContainerItemProxy */ = { + 47172F3F466D90D95F4A8AE2922E0EB8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 0EC7816D6AB1C0830108FC61D968488B; - remoteInfo = ISO8601DateFormatterValueTransformer; + remoteGlobalIDString = 7D2B4C2000D9D203AFCEB1913037D8E8; + remoteInfo = TransitionKit; }; - 29A6349C83120662A53BAEEE2F9ABC4C /* PBXContainerItemProxy */ = { + 52E7C227327DB7F4EF156454BC74CAA4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = BE61E7AE076C01CBC74564E4084B550D; - remoteInfo = RKValueTransformers; + remoteGlobalIDString = 61681BF0E677683490353B846C61A129; + remoteInfo = AFNetworking; }; - 2B44CF1EB2D215F539DD3C9096A747BF /* PBXContainerItemProxy */ = { + 5F9ACE740BBE74B9EF18ED10D402EBFB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 9350FE989EB5F0E5321B9054194D84DE; - remoteInfo = Parse; + remoteGlobalIDString = A48601FEE4437A924848DB48369BA809; + remoteInfo = Bolts; }; - 49B938426B06493DDBE9DBA4CC8167EF /* PBXContainerItemProxy */ = { + 753FA91ACDD9D25D657204E0ADBB6FE3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = CDF340FD050E9DF3676FDDB5D9FAB6D4; - remoteInfo = AFNetworking; + remoteGlobalIDString = A48601FEE4437A924848DB48369BA809; + remoteInfo = Bolts; }; - 5386A145A9F17749EC933FDD8A74359E /* PBXContainerItemProxy */ = { + 7FC4D59C7661F1F90B9637A4AA76565C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = F70BF3EA9E69856AC06EB0A27F8F7F5E; - remoteInfo = Bolts; + remoteGlobalIDString = C47E006176ABF4755350B88C088C3F0D; + remoteInfo = RKValueTransformers; }; - 575F96E46E0B5ADAE795139F2952EFDA /* PBXContainerItemProxy */ = { + 898060DAD9C6F56E39CBC74E7C3BF4CD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 158117D77AED03B83733E51D2D22983B; - remoteInfo = TransitionKit; + remoteGlobalIDString = 4E286D373D75563CE26E479A68203892; + remoteInfo = FBSDKLoginKit; }; - 5B461E7087ACB47CECF41951623B8F80 /* PBXContainerItemProxy */ = { + 8A21679C58B10CC321CF4F0A4AFE1D12 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = F70BF3EA9E69856AC06EB0A27F8F7F5E; - remoteInfo = Bolts; + remoteGlobalIDString = 9145E070690055EA2D82D264E78B0F71; + remoteInfo = FoldingTabBar; }; - 654EFE0AC2F47EF9497FFF8114F473D7 /* PBXContainerItemProxy */ = { + 96693A54A0BFA8B81D156BF21770C588 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 158117D77AED03B83733E51D2D22983B; - remoteInfo = TransitionKit; + remoteGlobalIDString = 81D7FE2A0FD9258247B1232874B837DA; + remoteInfo = FBSDKCoreKit; }; - 6B8FF1AF77E489E69AEB579F435326F7 /* PBXContainerItemProxy */ = { + 976E4F9B0513141FCEA3BAB7C51C8A0B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = CDF340FD050E9DF3676FDDB5D9FAB6D4; - remoteInfo = AFNetworking; + remoteGlobalIDString = BEE18208B27447ADBC42B142637E5653; + remoteInfo = SOCKit; }; - 877102F5600E4993D45569385031DED4 /* PBXContainerItemProxy */ = { + A1E2F802EE663F8DD0A6BE0FFD496B02 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 38C996FDE9DF6549D8681DED0DF37B6D; - remoteInfo = FBSDKCoreKit; + remoteGlobalIDString = 080AF914A09167DB5759A733917B840F; + remoteInfo = ISO8601DateFormatterValueTransformer; }; - A15359A20CD2F146F3CBD2E67023AD73 /* PBXContainerItemProxy */ = { + A3F917A717D8563642755DA31CDA523A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = BE61E7AE076C01CBC74564E4084B550D; - remoteInfo = RKValueTransformers; + remoteGlobalIDString = 7D2B4C2000D9D203AFCEB1913037D8E8; + remoteInfo = TransitionKit; }; - A373B3453AFBE2E4FEDDE5C90598DE2B /* PBXContainerItemProxy */ = { + A94178143C22B923AD7FB31DE66228B0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = A2770197345BCE1622568AECE6B8E824; - remoteInfo = SOCKit; + remoteGlobalIDString = A48601FEE4437A924848DB48369BA809; + remoteInfo = Bolts; }; - AA705DEA05C275BCCCAB7D4127377E6F /* PBXContainerItemProxy */ = { + B1239271F4A1FD7D59D205FD338D610B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = BE61E7AE076C01CBC74564E4084B550D; - remoteInfo = RKValueTransformers; + remoteGlobalIDString = BEE18208B27447ADBC42B142637E5653; + remoteInfo = SOCKit; }; - E7F7CD721264BF80F21FE180ACFBC031 /* PBXContainerItemProxy */ = { + D38BE89B6FB2301AC09AD26156B819E8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 0EC7816D6AB1C0830108FC61D968488B; - remoteInfo = ISO8601DateFormatterValueTransformer; + remoteGlobalIDString = 81D7FE2A0FD9258247B1232874B837DA; + remoteInfo = FBSDKCoreKit; }; - F22120048F68D4153949EDB8127B913F /* PBXContainerItemProxy */ = { + DD9ABECB9558235383385F6FC07092C1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 38C996FDE9DF6549D8681DED0DF37B6D; - remoteInfo = FBSDKCoreKit; + remoteGlobalIDString = 61681BF0E677683490353B846C61A129; + remoteInfo = AFNetworking; }; - F6396DD99C4035C157C64A537AB51678 /* PBXContainerItemProxy */ = { + E0E5E109337B187FD694994086A939B4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 4A563E15AD58F61DA31660DAC05A1819; - remoteInfo = FBSDKLoginKit; + remoteGlobalIDString = C78CAB9013653EB1A250B2DFD3BC7666; + remoteInfo = FBSDKShareKit; }; - FDC24DB1B6A19A6B4BE393C5E2FC474B /* PBXContainerItemProxy */ = { + EF48640673BF68A34C2B66E619477480 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 5A89C7736981130B2EEED27805B7A855; + remoteGlobalIDString = 950F7D9F52389DCF637F3C1313255F78; remoteInfo = RestKit; }; + F2525FB3B5405DC4B1BAF37F01F4D2AB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 81D7FE2A0FD9258247B1232874B837DA; + remoteInfo = FBSDKCoreKit; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00C31AE91F93FAC03797A08CB87C7EB4 /* FBSDKLikeBoxView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m; sourceTree = "<group>"; }; - 00EA57E2C906799ED67EBCFC4089A02C /* PFAsyncTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAsyncTaskQueue.m; path = Parse/Internal/PFAsyncTaskQueue.m; sourceTree = "<group>"; }; - 010267A36F8E4347A122ABBE2CC67F43 /* PFHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHash.h; path = Parse/Internal/PFHash.h; sourceTree = "<group>"; }; - 0133F272E02689C37483595FA9CE6B21 /* FBSDKLikeButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m; sourceTree = "<group>"; }; - 016D06C44A3331089F9E5A1C6DFB4678 /* PFCloud.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloud.h; path = Parse/PFCloud.h; sourceTree = "<group>"; }; - 02B4ADB1ECAC920122E657AE18B10BFE /* TKEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKEvent.m; path = Code/TKEvent.m; sourceTree = "<group>"; }; - 02EDCF1DE69B8C5E506B9C40F67F083F /* PFCurrentInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentInstallationController.h; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.h; sourceTree = "<group>"; }; - 0315685B7458D2A9C07F1B237F76CFF2 /* FBSDKAppInviteDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h; sourceTree = "<group>"; }; - 0329086571C053B994B8FFFEABD553B5 /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h; sourceTree = "<group>"; }; - 034F3E05ED59E7ABCE82F0A079D5958F /* PFFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile.h; path = Parse/PFFile.h; sourceTree = "<group>"; }; - 03C5A44C8CE91BCF8B86912605825A8D /* PFRelation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelation.h; path = Parse/PFRelation.h; sourceTree = "<group>"; }; - 0401D69DFE749735649FE64519D6905B /* RKMappingOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingOperation.h; path = Code/ObjectMapping/RKMappingOperation.h; sourceTree = "<group>"; }; - 0435A677495AC526E61CDF8F62EC197C /* PFRESTSessionCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTSessionCommand.h; path = Parse/Internal/Commands/PFRESTSessionCommand.h; sourceTree = "<group>"; }; - 047273E0F6F9E9889E073EE49F2755C4 /* PFMutablePushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutablePushState.m; path = Parse/Internal/Push/State/PFMutablePushState.m; sourceTree = "<group>"; }; - 051170D8AB31E65A6185350F81C989F8 /* PFUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserController.h; path = Parse/Internal/User/Controller/PFUserController.h; sourceTree = "<group>"; }; - 056B8AC3C068967E144E9912F4D082E4 /* RKPropertyMappingTestExpectation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyMappingTestExpectation.h; path = Code/Testing/RKPropertyMappingTestExpectation.h; sourceTree = "<group>"; }; - 05D04D86B15EAD72ACA964052E4E5C94 /* PFInstallation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallation.h; path = Parse/PFInstallation.h; sourceTree = "<group>"; }; - 05E89D5ACCE63E55AA659EFB8A18A9B5 /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = "<group>"; }; - 0614A8CED09956ACEF0CD07B5F13C94F /* PFSQLiteStatement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteStatement.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.m; sourceTree = "<group>"; }; - 06CCF32425B76D2DCB319BACF4D3874B /* PFRESTConfigCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTConfigCommand.m; path = Parse/Internal/Commands/PFRESTConfigCommand.m; sourceTree = "<group>"; }; - 06ED326096FE698B59E6B3A44613D460 /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = "<group>"; }; - 06F0EB1FDCF792E30B358C159A66CE09 /* FBSDKLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h; sourceTree = "<group>"; }; - 0704D1A252C21153AADCFF76B76A34C8 /* RKErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKErrors.m; path = Code/Support/RKErrors.m; sourceTree = "<group>"; }; - 079E082DB0D5553BF25A89DDB3AF9428 /* RKDotNetDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDotNetDateFormatter.m; path = Code/Support/RKDotNetDateFormatter.m; sourceTree = "<group>"; }; - 0820BC8566C53EE58544095722F3A841 /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = "<group>"; }; - 09F2C7C83A1343D93FFA99723D546B25 /* PFConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConstants.m; path = Parse/PFConstants.m; sourceTree = "<group>"; }; - 0A04D42ACCA3BD87E3584E6ACC4F56E6 /* RKTestFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestFactory.h; path = Code/Testing/RKTestFactory.h; sourceTree = "<group>"; }; - 0A2458DB30CB9D1EBB4393A5B3933BDA /* PFPropertyInfo_Runtime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo_Runtime.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.m; sourceTree = "<group>"; }; - 0A7EE3C6BF7D5145AA91E9DE69EC0268 /* PFSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSession.m; path = Parse/PFSession.m; sourceTree = "<group>"; }; - 0B24226F7C8491F1AB37ED40AB15E909 /* TransitionKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "TransitionKit-prefix.pch"; sourceTree = "<group>"; }; - 0BA6D617D6C18C4F2260EB0CCC8EFBEA /* PFBaseState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBaseState.m; path = Parse/Internal/PFBaseState.m; sourceTree = "<group>"; }; - 0BBF841A16205C45B1396307D83A7373 /* PFAnalytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalytics.m; path = Parse/PFAnalytics.m; sourceTree = "<group>"; }; - 0BD061E291C8DA3E18934FCF5E92DC81 /* PFSQLiteDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.h; sourceTree = "<group>"; }; - 0C330B991A689F502E36122BCC0AC499 /* PFUserFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserFileCodingLogic.m; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.m; sourceTree = "<group>"; }; - 0CA7CE3E5F98F41F8574F6D183CE2263 /* PFConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfigController.m; path = Parse/Internal/Config/Controller/PFConfigController.m; sourceTree = "<group>"; }; - 0CCED09AA914A9CA2759E1F53B53226E /* PFObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectUtilities.m; path = Parse/Internal/Object/Utilities/PFObjectUtilities.m; sourceTree = "<group>"; }; - 0D1520ADAF247AF6031216CDA841A5E1 /* PFDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDateFormatter.m; path = Parse/Internal/PFDateFormatter.m; sourceTree = "<group>"; }; - 0D3C379231F1FECE1C711149F33EBEFB /* FBSDKLikeControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeControl.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m; sourceTree = "<group>"; }; - 0D726415722488F38181C0A46AB22051 /* RKErrorMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKErrorMessage.m; path = Code/ObjectMapping/RKErrorMessage.m; sourceTree = "<group>"; }; - 0DA2C4DB80EFCE1F0AA9350F23EA627D /* PFCommandCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache.h; path = Parse/Internal/PFCommandCache.h; sourceTree = "<group>"; }; - 0E16BBB83C9F9B91092969D2266317F0 /* PFProductsRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProductsRequestHandler.h; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.h; sourceTree = "<group>"; }; - 0E290B1D6DDD48B2FD0139DCD4B3348D /* PFDefaultACLController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDefaultACLController.h; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.h; sourceTree = "<group>"; }; - 0EAF15F0F0DEC2E2FEC93095CB96203C /* PFJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFJSONSerialization.h; path = Parse/Internal/PFJSONSerialization.h; sourceTree = "<group>"; }; - 0EB0F987B2BFAD674CC1392DB885D94A /* AFHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPRequestOperation.h; path = AFNetworking/AFHTTPRequestOperation.h; sourceTree = "<group>"; }; - 0EB95732F4D4CA886A89094CFD467D4E /* PFCommandResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandResult.h; path = Parse/Internal/PFCommandResult.h; sourceTree = "<group>"; }; - 0EDBC476683341C63522CBC88AF10401 /* PFUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUser.m; path = Parse/PFUser.m; sourceTree = "<group>"; }; - 0F072CC41C2003448531F2F1DD2C3BAF /* FBSDKLikeActionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionController.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m; sourceTree = "<group>"; }; - 0F96B01B6AD0F525E17F2074B2EA1EB1 /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = "<group>"; }; - 0FFE01FDB1315C89C0A38D8E4378E0DF /* ParseModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseModule.m; path = Parse/Internal/ParseModule.m; sourceTree = "<group>"; }; - 103E4A41DD6EB7EE5C4377711291077A /* RKOperationStateMachine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKOperationStateMachine.h; path = Code/Support/RKOperationStateMachine.h; sourceTree = "<group>"; }; - 10837937B6B53962D8F7B9D3F8E3EE03 /* PFMutableQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableQueryState.m; path = Parse/Internal/Query/State/PFMutableQueryState.m; sourceTree = "<group>"; }; - 10A45B9F776F2A6EE5C3BE2ADD460FE3 /* PFPushChannelsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushChannelsController.h; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.h; sourceTree = "<group>"; }; - 10E904E302F7D7767F91F58889C20F5A /* PFQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState.h; path = Parse/Internal/Query/State/PFQueryState.h; sourceTree = "<group>"; }; - 120D59FB9C748DAA660CEDCF7C419164 /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = "<group>"; }; - 12DC95CF2C7DDD42977C94C97EB1637C /* PFCommandRunningConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunningConstants.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h; sourceTree = "<group>"; }; - 12E1213C18161FD134F34314DF960015 /* PFUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserController.m; path = Parse/Internal/User/Controller/PFUserController.m; sourceTree = "<group>"; }; - 133D805C2313FF465674A3486EA36F90 /* PFEventuallyPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyPin.m; path = Parse/Internal/PFEventuallyPin.m; sourceTree = "<group>"; }; - 135CD2563AE865A18CBC5672956D2875 /* PFPushManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushManager.h; path = Parse/Internal/Push/Manager/PFPushManager.h; sourceTree = "<group>"; }; - 1414B4582D8A53F4321084D4EB5C3291 /* PFAlertView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAlertView.h; path = Parse/Internal/PFAlertView.h; sourceTree = "<group>"; }; - 146309296F3083D07EB7A9F31D3148AB /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = "<group>"; }; - 149E15962A38A8DACF6A9781F4A92F22 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 14BB822079E39C44A662265EDC832BED /* FBSDKLikeButtonPopWAV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButtonPopWAV.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h; sourceTree = "<group>"; }; - 15218D870F12055E685D3D03517191A4 /* PFKeyValueCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeyValueCache.m; path = Parse/Internal/KeyValueCache/PFKeyValueCache.m; sourceTree = "<group>"; }; - 15854EBB45118A734AE77C8EFB408F10 /* TransitionKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "TransitionKit-dummy.m"; sourceTree = "<group>"; }; - 15A529C27057E4A57D259CBC6E6CE49C /* Pods-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-acknowledgements.markdown"; sourceTree = "<group>"; }; - 15CD896F18B0B8E074D5B6AC246B7278 /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = "<group>"; }; - 16784EC95D6273ED6752D7B64213E746 /* PFRESTCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand.h; path = Parse/Internal/Commands/PFRESTCommand.h; sourceTree = "<group>"; }; - 16ECC679D7E6944181A4143EBFFDF2B6 /* PFPinningEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningEventuallyQueue.h; path = Parse/Internal/PFPinningEventuallyQueue.h; sourceTree = "<group>"; }; - 18307BC0EA14A69F26486ACEC94450C2 /* PFURLSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession_Private.h; sourceTree = "<group>"; }; - 184E2F2A8FAA80A676143A0D7ED71EA6 /* BFMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFMeasurementEvent.m; path = Bolts/iOS/BFMeasurementEvent.m; sourceTree = "<group>"; }; - 197B3FB536BC0102E5F4615D92F57286 /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkNavigation.h; path = Bolts/iOS/BFAppLinkNavigation.h; sourceTree = "<group>"; }; - 19DB73C3D0C75D9D0E53F4111D417C01 /* FBSDKShareVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideo.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h; sourceTree = "<group>"; }; - 1A369AE523AE5428A6D9F6550614FE9D /* FBSDKAppGroupAddDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupAddDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h; sourceTree = "<group>"; }; - 1A71824B576DDC6AD0FCFF11F0B133D6 /* PFAnalyticsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsController.h; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.h; sourceTree = "<group>"; }; - 1B1DBB7A5A5EE9B44DE86876D074207E /* FBSDKShareOpenGraphObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphObject.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h; sourceTree = "<group>"; }; - 1B828DC073409B28F4FD2BAE7E834D87 /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = "<group>"; }; - 1B949380B0A36EE9DCE1BE3DD205872D /* RKRouteSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRouteSet.m; path = Code/Network/RKRouteSet.m; sourceTree = "<group>"; }; - 1BA732D4BA53C90B93834949CEB41543 /* RKMapperOperation_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapperOperation_Private.h; path = Code/ObjectMapping/RKMapperOperation_Private.h; sourceTree = "<group>"; }; - 1BD7322E2971743B34A65BD010CC3165 /* PFPush.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPush.m; path = Parse/PFPush.m; sourceTree = "<group>"; }; - 1C58296A347F3D84D11A281BDEFE97B5 /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = "<group>"; }; - 1C6660D91D6167EB784831B0571E2F52 /* PFObjectEstimatedData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectEstimatedData.m; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.m; sourceTree = "<group>"; }; - 1C7FC38C024D78EC53EEDA5E5B3C97E1 /* PFCommandCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandCache.m; path = Parse/Internal/PFCommandCache.m; sourceTree = "<group>"; }; - 1D9A8A5EA7D67587E22F112968E8FA29 /* PFKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeychainStore.m; path = Parse/Internal/PFKeychainStore.m; sourceTree = "<group>"; }; - 1D9FA4BADE605736317EE1596FAAD3B1 /* PFOperationSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOperationSet.h; path = Parse/Internal/Object/OperationSet/PFOperationSet.h; sourceTree = "<group>"; }; - 1DD477EE3462803C03920D7EA94FCFF8 /* PFTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFTaskQueue.m; path = Parse/Internal/PFTaskQueue.m; sourceTree = "<group>"; }; - 1E014614141F279B34D0F4EAFD7F4DFD /* PFBase64Encoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBase64Encoder.h; path = Parse/Internal/PFBase64Encoder.h; sourceTree = "<group>"; }; - 1E8E523D8195E9B1B9C90976CF0540B8 /* PFCommandResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandResult.m; path = Parse/Internal/PFCommandResult.m; sourceTree = "<group>"; }; - 1EC7D96BC9F20D61C8C0611234289492 /* PFMultiProcessFileLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLock.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.h; sourceTree = "<group>"; }; - 1F2F968FC5E9ACF4AC754AB79F42241F /* BoltsVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BoltsVersion.h; path = Bolts/Common/BoltsVersion.h; sourceTree = "<group>"; }; - 1F79510BB12DF693E6899A336B944ACA /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = "<group>"; }; - 1FAEC79833DB40A28030BB60070264FC /* RKHTTPUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKHTTPUtilities.h; path = Code/ObjectMapping/RKHTTPUtilities.h; sourceTree = "<group>"; }; - 1FB89A08C5C8B78FBEBC245FD9B7D1E3 /* BFURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL.h; path = Bolts/iOS/BFURL.h; sourceTree = "<group>"; }; - 20A09146C96CD4735D748F3A404D0813 /* PFMutableUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableUserState.h; path = Parse/Internal/User/State/PFMutableUserState.h; sourceTree = "<group>"; }; - 20D0533465677FE2928E4C7429447F7E /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = "<group>"; }; - 2109F27F00016BC697F3694A3C8A4EF0 /* RKPathMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPathMatcher.h; path = Code/Network/RKPathMatcher.h; sourceTree = "<group>"; }; - 225675EE77126480507353150E5D4EF3 /* FBSDKShareKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareKit.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h; sourceTree = "<group>"; }; - 225CE2C43ADC4EF1A17EA9FF67B4F977 /* PFRESTFileCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTFileCommand.h; path = Parse/Internal/Commands/PFRESTFileCommand.h; sourceTree = "<group>"; }; - 22BCAB2ABFBB3566EC2E7ED45706F704 /* RKResponseDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKResponseDescriptor.h; path = Code/Network/RKResponseDescriptor.h; sourceTree = "<group>"; }; - 23887764BFA845B70B1FFB0552AC2706 /* PFObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController.h; path = Parse/Internal/Object/Controller/PFObjectController.h; sourceTree = "<group>"; }; - 23D64D6AB75296AE7976248043BC6313 /* PFBase64Encoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBase64Encoder.m; path = Parse/Internal/PFBase64Encoder.m; sourceTree = "<group>"; }; - 23ED3F16546340CE6D8F500DF0D81FA7 /* BFCancellationTokenRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenRegistration.h; path = Bolts/Common/BFCancellationTokenRegistration.h; sourceTree = "<group>"; }; - 23EF53286E86923DB4C02DDCCA3A21CA /* FBSDKSendButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSendButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m; sourceTree = "<group>"; }; - 241767740C7A36BC4016F69B2DFCDFF5 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "ISO8601DateFormatterValueTransformer-Private.xcconfig"; sourceTree = "<group>"; }; - 241D1E7CB01A87C87C02CE0340F5DF83 /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = "<group>"; }; - 2423DAEF9BB294E6E266E9CC7E5F196D /* PFRelation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelation.m; path = Parse/PFRelation.m; sourceTree = "<group>"; }; - 24255CB705666DD05FB446873255ED8B /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = "<group>"; }; - 243B9EEDBFD73BC0E48417E798EB7D49 /* Support.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Support.h; path = Code/Support.h; sourceTree = "<group>"; }; - 249C09A58FE9BB84BAC197A821EC4678 /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = "<group>"; }; - 24F93C0C8EA467DEFCB4CBDB150BE439 /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m; sourceTree = "<group>"; }; - 2515970C08E7445D9A26AC8952E7FE41 /* PFOperationSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOperationSet.m; path = Parse/Internal/Object/OperationSet/PFOperationSet.m; sourceTree = "<group>"; }; - 25501EDA6B8396052C4721695FA27371 /* PFURLSessionCommandRunner.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionCommandRunner.m; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.m; sourceTree = "<group>"; }; - 2554B79C64ECEFCFEE123612E3C5F6CA /* PFFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileManager.m; path = Parse/Internal/PFFileManager.m; sourceTree = "<group>"; }; - 2561AF367B0B04A8C83CD5E1C4F0C08E /* PFACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACLState.m; path = Parse/Internal/ACL/State/PFACLState.m; sourceTree = "<group>"; }; - 259C735ED2FFC41359586661CE813736 /* RKPathUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPathUtilities.m; path = Code/Support/RKPathUtilities.m; sourceTree = "<group>"; }; - 25FA6116451E734C381D4F3606124CE3 /* FBSDKShareUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m; sourceTree = "<group>"; }; - 260BC0B46C2DA2BCD9F62462348F6673 /* FBSDKShareDialogMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialogMode.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m; sourceTree = "<group>"; }; - 2628FFC954B5343B03FF5E09727D6E1A /* BFAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkResolving.h; path = Bolts/iOS/BFAppLinkResolving.h; sourceTree = "<group>"; }; - 2651DC8D21016E6D886F1577AAA22972 /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = "<group>"; }; - 265CD502B435E47078A0F18F014D4A2C /* SOCKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SOCKit-prefix.pch"; sourceTree = "<group>"; }; - 26871A94013EE429FE6FE9F7ABF2A9A2 /* PFLocationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLocationManager.h; path = Parse/Internal/PFLocationManager.h; sourceTree = "<group>"; }; - 26CFE764B4CDD5F929831F42EDA41A4D /* PFPush.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPush.h; path = Parse/PFPush.h; sourceTree = "<group>"; }; - 26E148529A5018FB0DBA0E6E6EF425A7 /* BFDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFDefines.h; path = Bolts/Common/BFDefines.h; sourceTree = "<group>"; }; - 27000997EDF8B991F4B6E05E67C67113 /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = "<group>"; }; - 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 277CDEE8DFC2D7DBE20B8F1E0A377FC4 /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = "<group>"; }; - 279536DCCF7BB43F3A2CAF27A31B5C57 /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView_Internal.h; path = Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h; sourceTree = "<group>"; }; - 27D73CCE08122C37FC401A9805E8033F /* RKPathUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPathUtilities.h; path = Code/Support/RKPathUtilities.h; sourceTree = "<group>"; }; - 27DA1A860C5602304E507058E4A25B5B /* PFGeoPoint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFGeoPoint.m; path = Parse/PFGeoPoint.m; sourceTree = "<group>"; }; - 2827FE6F0B040DD6EE347F254F0F17BB /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = "<group>"; }; - 282B79F0BE2F4372C754A93C4D8D6B3F /* PFPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPin.m; path = Parse/Internal/LocalDataStore/Pin/PFPin.m; sourceTree = "<group>"; }; - 28C76500BA7B3265FA9C1FBF8EC034FF /* PFMutableRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableRelationState.h; path = Parse/Internal/Relation/State/PFMutableRelationState.h; sourceTree = "<group>"; }; - 29D48AAEE67B134EE8B0622C1BCF7F8D /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = "<group>"; }; - 29DF82C03CFD45F592C6F19AE103BA06 /* PFGeoPoint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPoint.h; path = Parse/PFGeoPoint.h; sourceTree = "<group>"; }; - 29EE40865F4426262E949C4C302BF226 /* PFAsyncTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAsyncTaskQueue.h; path = Parse/Internal/PFAsyncTaskQueue.h; sourceTree = "<group>"; }; - 2A2200960479E4759E2409514013ECE9 /* FBSDKShareKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareKit+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h"; sourceTree = "<group>"; }; - 2A2306F062D21537BCCD17B8E1265AE8 /* TKTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKTransition.m; path = Code/TKTransition.m; sourceTree = "<group>"; }; - 2A90605386336758A5E6828DC0AB5D68 /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = "<group>"; }; - 2B6C7232F24CC263AED71695EF279E34 /* RKValueTransformers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKValueTransformers.h; path = Code/RKValueTransformers.h; sourceTree = "<group>"; }; - 2B98304BCBDE12F2AE18BD8F746580A4 /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = "<group>"; }; - 2BD5B84023B338476E31F24FC2D689A0 /* FBSDKMessageDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessageDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m; sourceTree = "<group>"; }; - 2BE2D580E317F0D1965AC68793F7AEBB /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = "<group>"; }; - 2BF466CB1A2B08C6FD3F60694F3E8D34 /* AFHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPRequestOperation.m; path = AFNetworking/AFHTTPRequestOperation.m; sourceTree = "<group>"; }; - 2C16B289C2694A9F01E5AC4A40F5BBC5 /* RKURLEncodedSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKURLEncodedSerialization.m; path = Code/Support/RKURLEncodedSerialization.m; sourceTree = "<group>"; }; - 2C3E03A90536DD5330B859DFE31570B6 /* PFInstallation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallation.m; path = Parse/PFInstallation.m; sourceTree = "<group>"; }; - 2C7078E789BF9691EB3849F6E4E49A44 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 2C97568E00B081386FD3982DE3AD286B /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = "<group>"; }; - 2CA3B417E38375FB5F145C27AD082AF9 /* PFObjectConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectConstants.h; path = Parse/Internal/Object/Constants/PFObjectConstants.h; sourceTree = "<group>"; }; - 2D2CAB276E3575E9D3DF2E0990BE0F69 /* AFXMLRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFXMLRequestOperation.h; path = AFNetworking/AFXMLRequestOperation.h; sourceTree = "<group>"; }; - 2D3002035E29C7449C791970871E10EF /* PFCurrentConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentConfigController.m; path = Parse/Internal/Config/Controller/PFCurrentConfigController.m; sourceTree = "<group>"; }; - 2D582428208099E80BE466E2940ED2D0 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.debug.xcconfig; sourceTree = "<group>"; }; - 2E0204ED6BDC62B268724EB7F3257243 /* PFUserFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserFileCodingLogic.h; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.h; sourceTree = "<group>"; }; - 2E0C4FA92D8641B9361554A63982E78E /* PFCachedQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCachedQueryController.h; path = Parse/Internal/Query/Controller/PFCachedQueryController.h; sourceTree = "<group>"; }; - 2EE325AB5D11F8E0314EC1A65AFC915A /* RKMappingOperationDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingOperationDataSource.h; path = Code/ObjectMapping/RKMappingOperationDataSource.h; sourceTree = "<group>"; }; - 2F99B6F42887EE972402E88BB751D67A /* PFPushPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushPrivate.h; path = Parse/Internal/Push/PFPushPrivate.h; sourceTree = "<group>"; }; - 308B85DD48F9A76C1D714CB80189B6E1 /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = "<group>"; }; - 309C5A18E36D89DDB6DB309BFFB3A074 /* FBSDKAppGroupContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h; sourceTree = "<group>"; }; - 30E24C0CC2F297CA249BC9496B1273BA /* RKTestHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestHelpers.h; path = Code/Testing/RKTestHelpers.h; sourceTree = "<group>"; }; - 31A09CE6942D32E70D7AF420C0C28F98 /* FBSDKLikeDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeDialog.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m; sourceTree = "<group>"; }; - 31B4E41F62E37AA98F6E9D5C10E984D0 /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m; sourceTree = "<group>"; }; - 31DC2BEB54C59BD2AC3FFC21BDBB71E5 /* FBSDKLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h; sourceTree = "<group>"; }; - 31EB18FA1114A3D648354CA9461243B5 /* PFObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObject.m; path = Parse/PFObject.m; sourceTree = "<group>"; }; - 323152BA48F777D5C406ED5AE427B1AA /* RKRequestDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRequestDescriptor.m; path = Code/Network/RKRequestDescriptor.m; sourceTree = "<group>"; }; - 32369FE3517FE0DA85D6AC9113DFC4D4 /* PFRESTQueryCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTQueryCommand.m; path = Parse/Internal/Commands/PFRESTQueryCommand.m; sourceTree = "<group>"; }; - 323A920BBC78CC4F32DC36633840DF3E /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = "<group>"; }; - 325246AADDC0F382E655933B585A347B /* Bolts-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Bolts-Private.xcconfig"; sourceTree = "<group>"; }; - 335878EBC1626AF73529ED5CDC829E08 /* FBSDKLikeActionControllerCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionControllerCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h; sourceTree = "<group>"; }; - 33AA2846801F30C2C7C711FD553C91A2 /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = "<group>"; }; - 341EA091B57F44C4DE7AEFBD627D722D /* RKRouteSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRouteSet.h; path = Code/Network/RKRouteSet.h; sourceTree = "<group>"; }; - 342BC152E1A501D98AA8468B20BC2FBF /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = "<group>"; }; - 3448DD0E19AC2C9CA013ACD2BC7AD8C1 /* PFQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryController.m; path = Parse/Internal/Query/Controller/PFQueryController.m; sourceTree = "<group>"; }; - 34DA5ED519561747CB24898F11335A79 /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = "<group>"; }; - 35438CE7344049DBB7B9FFEB80DB1414 /* FBSDKAppGroupJoinDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupJoinDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m; sourceTree = "<group>"; }; - 35E46F0E48D76D7792ECCC0237C8E9CF /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = "<group>"; }; - 363004150CBDDD99121ED1C9FEE4CE8C /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFWebViewAppLinkResolver.m; path = Bolts/iOS/BFWebViewAppLinkResolver.m; sourceTree = "<group>"; }; - 36491A250DFAF0D996CC5E60467D5DDA /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = "<group>"; }; - 3661FB21F4391073E8AAC82B6B840E75 /* PFRelationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationPrivate.h; path = Parse/Internal/Relation/PFRelationPrivate.h; sourceTree = "<group>"; }; - 377BAEED2390B90A3A797FBF573227C9 /* AFJSONRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFJSONRequestOperation.m; path = AFNetworking/AFJSONRequestOperation.m; sourceTree = "<group>"; }; - 379C2A4AD2DFCF269463822AE535090C /* PFInstallationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationPrivate.h; path = Parse/Internal/Installation/PFInstallationPrivate.h; sourceTree = "<group>"; }; - 37FB4F3FA6D54D38DE79356A63834230 /* PFGeoPointPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPointPrivate.h; path = Parse/Internal/PFGeoPointPrivate.h; sourceTree = "<group>"; }; - 38A6D9AA344FD2AE5B4D70FAD5062AB4 /* FBSDKLikeButton+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeButton+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h"; sourceTree = "<group>"; }; - 38E608FDFE07ABF00DB09AE6F9F9DA28 /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = "<group>"; }; - 38E7251464FBD8CA6364DE9833E6D6E7 /* PFMultiProcessFileLock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLock.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.m; sourceTree = "<group>"; }; - 394002AEF7F5079BD3B473255A1C49AD /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = "<group>"; }; - 3951D3E423BE2ABCBF9DE0E746CE311B /* PFConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfigController.h; path = Parse/Internal/Config/Controller/PFConfigController.h; sourceTree = "<group>"; }; - 3954F2A0287065523FE93833957D805D /* RKErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKErrors.h; path = Code/Support/RKErrors.h; sourceTree = "<group>"; }; - 3A6880AAFC8F7351294B649E15B6AD7F /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = "<group>"; }; - 3B29A50B713DB33904E5298D3E082CA5 /* RKObjectMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMapping.m; path = Code/ObjectMapping/RKObjectMapping.m; sourceTree = "<group>"; }; - 3B5D125F50E0B3A81028AB31CB76BF71 /* AFURLConnectionOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLConnectionOperation.m; path = AFNetworking/AFURLConnectionOperation.m; sourceTree = "<group>"; }; - 3B76E48E1FD54E0BBE64291059DD0428 /* Bolts-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Bolts-dummy.m"; sourceTree = "<group>"; }; - 3B92CFB0FD23A754847A9505BDCE2BA5 /* PFFileController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileController.h; path = Parse/Internal/File/Controller/PFFileController.h; sourceTree = "<group>"; }; - 3BE5A10627DC0B9C01F875BD06336D9E /* BFAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink_Internal.h; path = Bolts/iOS/BFAppLink_Internal.h; sourceTree = "<group>"; }; - 3C15EE98D2719FAA6A81AAB54A7E471D /* RKMapperOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapperOperation.h; path = Code/ObjectMapping/RKMapperOperation.h; sourceTree = "<group>"; }; - 3CAC9E985D7035114C36728704534B05 /* RestKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "RestKit-Private.xcconfig"; sourceTree = "<group>"; }; - 3CCC11B45A7E2D9A95182BA1D01D60F9 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; - 3CE46AC0E13A1092344C773AC969D749 /* PFInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationController.h; path = Parse/Internal/Installation/Controller/PFInstallationController.h; sourceTree = "<group>"; }; - 3D17058F2F424FB1C4E4BCDCBB95C1FE /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = "<group>"; }; - 3D37164FA87C3325903A708109C92A81 /* PFMutableRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableRelationState.m; path = Parse/Internal/Relation/State/PFMutableRelationState.m; sourceTree = "<group>"; }; - 3D3E83167931010DA87FD972EABFF257 /* PFFieldOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperation.m; path = Parse/Internal/FieldOperation/PFFieldOperation.m; sourceTree = "<group>"; }; - 3D859BEB9EC0DAF7A490519CC6ACB7D2 /* FBSDKURLConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m; sourceTree = "<group>"; }; - 3DABBC1078165E5DDDEFA2E7472C5559 /* AFNetworking-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "AFNetworking-Private.xcconfig"; sourceTree = "<group>"; }; - 3E82461A10900C11141F5132C28A7C0B /* PFSessionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionUtilities.h; path = Parse/Internal/Session/Utilities/PFSessionUtilities.h; sourceTree = "<group>"; }; - 3EC5BDE29DEA58916F31388DB4B8EE2D /* PFAnalyticsUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsUtilities.m; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.m; sourceTree = "<group>"; }; - 3F97330408CBCB9866B2403F56722EED /* PFInstallationIdentifierStore_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore_Private.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore_Private.h; sourceTree = "<group>"; }; - 4077DBC410381FA11AC51C618CB81140 /* PFEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyQueue.m; path = Parse/Internal/PFEventuallyQueue.m; sourceTree = "<group>"; }; - 40C40C0517D7C210D4A32215DEB225C1 /* TKEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKEvent.h; path = Code/TKEvent.h; sourceTree = "<group>"; }; - 41BA0CE95AB03F346F54CA27DB00DE30 /* FBSDKLoginKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKLoginKit-prefix.pch"; sourceTree = "<group>"; }; - 41BC1E717C434D21A5472F44C601A2B7 /* libRKValueTransformers.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRKValueTransformers.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 4214851D9461FC93F660FCB73142859E /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = "<group>"; }; - 4241AE7BF35421577B79454BFEF8418F /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = "<group>"; }; - 42849FC04B9D5B542DF3CC22E779A9A1 /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = "<group>"; }; - 4294F692EAF153601A3A4B780A9C0668 /* RKTestFixture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestFixture.m; path = Code/Testing/RKTestFixture.m; sourceTree = "<group>"; }; - 433C981127868BA24B0F88745E7CB575 /* FBSDKSharing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharing.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h; sourceTree = "<group>"; }; - 437CBC5E7E1B50CC1E72F15C88FF6AC7 /* PFKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeychainStore.h; path = Parse/Internal/PFKeychainStore.h; sourceTree = "<group>"; }; - 4391678EE65327EC09710A2246AE3738 /* TKStateMachine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKStateMachine.m; path = Code/TKStateMachine.m; sourceTree = "<group>"; }; - 44335A04DAA32B00C92160838C5E789D /* FBSDKGameRequestDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m; sourceTree = "<group>"; }; - 445422ACF05285D68F70D3C51879712A /* PFCommandRunning.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunning.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.m; sourceTree = "<group>"; }; - 450E74CFABCD4AC3721543ED32395800 /* _FBSDKLoginRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKLoginRecoveryAttempter.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h; sourceTree = "<group>"; }; - 453E27BE733413CA48A57B257194DA21 /* PFSQLiteDatabaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseController.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.h; sourceTree = "<group>"; }; - 457C5AA079BF304DBA165DC39799AC62 /* PFObjectConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectConstants.m; path = Parse/Internal/Object/Constants/PFObjectConstants.m; sourceTree = "<group>"; }; - 45A6C38D859E4B8E2327A07A3AD329D0 /* FBSDKSystemAccountStoreAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSystemAccountStoreAdapter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m; sourceTree = "<group>"; }; - 45B3E4226F866D5C78E3AE4441683829 /* RKErrorMessage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKErrorMessage.h; path = Code/ObjectMapping/RKErrorMessage.h; sourceTree = "<group>"; }; - 46012E85A00B1012C8DE6CB3D5CC0DFB /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = "<group>"; }; - 4606174FBA2263954939C4357F44E377 /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = "<group>"; }; - 461D15480309D56D3AA4AFA926B8B93C /* PFObjectState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState_Private.h; path = Parse/Internal/Object/State/PFObjectState_Private.h; sourceTree = "<group>"; }; - 46229044B27E123F58A7778EF094817E /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m; sourceTree = "<group>"; }; - 46DE20F02F523C0B14736898D3E8BBAC /* PFPaymentTransactionObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.h; sourceTree = "<group>"; }; - 47BD5C685318CE8CD9CA1D43C28605B9 /* PFKeyValueCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache_Private.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache_Private.h; sourceTree = "<group>"; }; - 482DBED41E33C8058B42A4F92B753528 /* PFLocationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLocationManager.m; path = Parse/Internal/PFLocationManager.m; sourceTree = "<group>"; }; - 48D2279C54480FB712244BACA57F6212 /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 48D467EF578B57E2381B95690763CFA8 /* FBSDKLoginManagerLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLogger.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h; sourceTree = "<group>"; }; - 49AA101256B7C595F77F9BA67DED0212 /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = "<group>"; }; - 49EA15DA07E51D9C44D29EF7BFB6F1E2 /* RKAttributeMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKAttributeMapping.m; path = Code/ObjectMapping/RKAttributeMapping.m; sourceTree = "<group>"; }; - 49ECF8C520F56BF1EE925AEC28EE0110 /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = "<group>"; }; - 4A2F1425F21ABB04C1E959E932C6F415 /* PFPurchaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchaseController.m; path = Parse/Internal/Purchase/Controller/PFPurchaseController.m; sourceTree = "<group>"; }; - 4A58330FB326FE4593BBBA3411078B43 /* PFCoreDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreDataProvider.h; path = Parse/Internal/PFCoreDataProvider.h; sourceTree = "<group>"; }; - 4A643D621DB5B92B641E0E85372BA98E /* FBSDKLoginTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m; sourceTree = "<group>"; }; - 4AA98567E44F5A893A264AAAA201DC0A /* RKPropertyInspector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyInspector.h; path = Code/ObjectMapping/RKPropertyInspector.h; sourceTree = "<group>"; }; - 4AE04A545B1286F2CB61AF35B668B691 /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = "<group>"; }; - 4BAB7DDAE6FE91E089EBA417E69790BB /* RKMappingTest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingTest.m; path = Code/Testing/RKMappingTest.m; sourceTree = "<group>"; }; - 4BADEB18E715ADFCC4E321048C18D8CF /* RKLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKLog.m; path = Code/Support/RKLog.m; sourceTree = "<group>"; }; - 4BC5A2D868E11F3896499C4C384C1057 /* BFTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTask.m; path = Bolts/Common/BFTask.m; sourceTree = "<group>"; }; - 4BE29891FEDF3029F65A3606EE7B3D88 /* FBSDKCheckmarkIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCheckmarkIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m; sourceTree = "<group>"; }; - 4CC4419E8BD5B8ADC92BB34FE1D6FC78 /* PFCommandURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandURLRequestConstructor.m; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.m; sourceTree = "<group>"; }; - 4D03DAC12EBD0056CB252F2F287B6402 /* FBSDKShareLinkContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareLinkContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h; sourceTree = "<group>"; }; - 4D15AFCABB51E916BD6FFE6D663CCBED /* RKHTTPUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKHTTPUtilities.m; path = Code/ObjectMapping/RKHTTPUtilities.m; sourceTree = "<group>"; }; - 4D575196CED3C1360574CAC6B7FE08BE /* PFErrorUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFErrorUtilities.m; path = Parse/Internal/PFErrorUtilities.m; sourceTree = "<group>"; }; - 4D6E9F5DDD85504DE6DDBECF9E39A959 /* PFOfflineQueryLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryLogic.m; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m; sourceTree = "<group>"; }; - 4D8D1722F7CFA8E2CC3AE2D1CE6B99CF /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = "<group>"; }; - 4DC41CC348E544292C37294C5A1B50C4 /* PFInstallationConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationConstants.h; path = Parse/Internal/Installation/Constants/PFInstallationConstants.h; sourceTree = "<group>"; }; - 4DD35C52996E74EF6D68ED8C8CB3C5B1 /* PFFileStagingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileStagingController.h; path = Parse/Internal/File/Controller/PFFileStagingController.h; sourceTree = "<group>"; }; - 4DDCD516E785CE5AEDF724D7D5383676 /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = "<group>"; }; - 4DE77267B05353B27C048F5B04016566 /* PFRESTQueryCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTQueryCommand.h; path = Parse/Internal/Commands/PFRESTQueryCommand.h; sourceTree = "<group>"; }; - 4DFEAC992B1C77BFB80D23F81E446DDC /* PFObjectLocalIdStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectLocalIdStore.m; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.m; sourceTree = "<group>"; }; - 4E102EFF955C784214778B35DA87ECEF /* PFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkActivityIndicatorManager.h; path = Parse/PFNetworkActivityIndicatorManager.h; sourceTree = "<group>"; }; - 4E37F47F8B8CC9C91B39061A7536E3E9 /* libTransitionKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libTransitionKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 4F92059D97E5483DFD850AA95FFE5562 /* ParseModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseModule.h; path = Parse/Internal/ParseModule.h; sourceTree = "<group>"; }; - 4FE09EB1BAFD6593655A66644AD9F2C0 /* SOCKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SOCKit-dummy.m"; sourceTree = "<group>"; }; - 5050C345988F196D52CCAA4890D4A5AC /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = "<group>"; }; - 50A981FEAE41634E8F3C3CCF8AC56259 /* PFUserConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserConstants.m; path = Parse/Internal/User/Constants/PFUserConstants.m; sourceTree = "<group>"; }; - 510604FAF87C394AFADB9A5D564F3AEB /* FBSDKLoginManagerLoginResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLoginResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h; sourceTree = "<group>"; }; - 520663893D6DE2A86D1D57299989DD21 /* FBSDKGameRequestDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h; sourceTree = "<group>"; }; - 52120DE46E6C7C888694B8D9A3F4DEC6 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "AFNetworking/UIImageView+AFNetworking.m"; sourceTree = "<group>"; }; - 5221830B08D22B86274AFCA65E93CD48 /* PFDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDecoder.m; path = Parse/Internal/PFDecoder.m; sourceTree = "<group>"; }; - 5242A7AC90141AACB238B67ACEC33ED0 /* PFRESTObjectCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectCommand.h; path = Parse/Internal/Commands/PFRESTObjectCommand.h; sourceTree = "<group>"; }; - 526321DDA0F9E9326B772985013A71DB /* PFURLSessionJSONDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionJSONDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m; sourceTree = "<group>"; }; - 52BA832282A6296691283BA45A6A6C75 /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = "<group>"; }; - 52E8F3EA417ABBE16B32E6AD85C0A91E /* PFMulticastDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMulticastDelegate.m; path = Parse/Internal/PFMulticastDelegate.m; sourceTree = "<group>"; }; - 52EBAC1E14508349697276F8E0C80479 /* RKMIMETypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMIMETypes.m; path = Code/Support/RKMIMETypes.m; sourceTree = "<group>"; }; - 53873BB442346D140446325544126600 /* PFURLSessionUploadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionUploadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.m; sourceTree = "<group>"; }; - 53BF5D67AF06F0302A007B18D6FBC694 /* BFTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTask.h; path = Bolts/Common/BFTask.h; sourceTree = "<group>"; }; - 53DAE1074125BBBF142D3C53E50E06F1 /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h"; sourceTree = "<group>"; }; - 53F32875FD8A66082F85E268CB4BC011 /* PFObjectFileCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCoder.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.m; sourceTree = "<group>"; }; - 54920BD88D6A715796BB19A547213023 /* FBSDKGameRequestContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m; sourceTree = "<group>"; }; - 54BEF4E5D47F21E4FC7E996E4AE29C66 /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h; sourceTree = "<group>"; }; - 556A94A3870C01C3B2634E1838E2D0B6 /* PFFieldOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperation.h; path = Parse/Internal/FieldOperation/PFFieldOperation.h; sourceTree = "<group>"; }; - 55C549F5B8CF223004416FA7639F9E69 /* PFCurrentObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentObjectControlling.h; path = Parse/Internal/Object/CurrentController/PFCurrentObjectControlling.h; sourceTree = "<group>"; }; - 55C9501B071548071B0C87CDA9D032F8 /* RKTestConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestConstants.m; path = Code/Testing/RKTestConstants.m; sourceTree = "<group>"; }; - 5624419A8EA110F018B6E1D6B2D454AC /* PFHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHash.m; path = Parse/Internal/PFHash.m; sourceTree = "<group>"; }; - 562E8BAC97316F785846B93E33C496DD /* PFRESTAnalyticsCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTAnalyticsCommand.m; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.m; sourceTree = "<group>"; }; - 5698E0F3BFBACA4A2F463DD697916F16 /* PFRESTCommand_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand_Private.h; path = Parse/Internal/Commands/PFRESTCommand_Private.h; sourceTree = "<group>"; }; - 56E54211A06B3807A9F27AD7BEB6DA7C /* PFLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogging.h; path = Parse/Internal/PFLogging.h; sourceTree = "<group>"; }; - 56EBCB94D96659853670372C2E4764EA /* BFAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink.h; path = Bolts/iOS/BFAppLink.h; sourceTree = "<group>"; }; - 579EAC1B8D13822158FB03F012D3B85C /* PFOfflineObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineObjectController.h; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.h; sourceTree = "<group>"; }; - 585CBEC762B0BA2C71CFB9F0E84E8B1C /* RKObjectParameterization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectParameterization.m; path = Code/Network/RKObjectParameterization.m; sourceTree = "<group>"; }; - 587669D43EA945644A3A4CF47F37098B /* PFPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPin.h; path = Parse/Internal/LocalDataStore/Pin/PFPin.h; sourceTree = "<group>"; }; - 58D0E28B48A7E32F9FF7005DEE64C416 /* FBSDKLikeButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h; sourceTree = "<group>"; }; - 5917BAC53F580A1C1176F5DD749556A9 /* AFPropertyListRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFPropertyListRequestOperation.h; path = AFNetworking/AFPropertyListRequestOperation.h; sourceTree = "<group>"; }; - 5923B48367DC6DA262FA7C70FFE94DB0 /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m; sourceTree = "<group>"; }; - 5927976E25757090DC699126B558DAD7 /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = "<group>"; }; - 594B1C1B419F5D05CD82EE8F86518E69 /* PFAnonymousAuthenticationProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousAuthenticationProvider.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.h; sourceTree = "<group>"; }; - 596492B6CEEB060FE00A87B8565F380A /* RKRouter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRouter.h; path = Code/Network/RKRouter.h; sourceTree = "<group>"; }; - 5A3A3C984D254DD2D0058DD599EAD348 /* PFProduct.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProduct.m; path = Parse/PFProduct.m; sourceTree = "<group>"; }; - 5AF094AA3C85E325892EB2AE88799BB8 /* FBSDKLoginKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKLoginKit-Private.xcconfig"; sourceTree = "<group>"; }; - 5AF0ABAFA5AB51B0A0101D5CBF73791F /* BFCancellationTokenSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenSource.h; path = Bolts/Common/BFCancellationTokenSource.h; sourceTree = "<group>"; }; - 5B613D1BE89F1E4403B99C3E5DCCD2E4 /* PFCloud.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloud.m; path = Parse/PFCloud.m; sourceTree = "<group>"; }; - 5B68D5F4D24A36ACF45400FAB8AB23DE /* FBSDKGameRequestFrictionlessRecipientCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestFrictionlessRecipientCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m; sourceTree = "<group>"; }; - 5BD70BB4643C9BA44BAC707BE6AB39DD /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = AFNetworking/AFNetworkActivityIndicatorManager.m; sourceTree = "<group>"; }; - 5BEDCBDD3D1427BBC37838C408E7AC2E /* PFPushManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushManager.m; path = Parse/Internal/Push/Manager/PFPushManager.m; sourceTree = "<group>"; }; - 5CA7D87557CA7C23E2FD33B16F7B4A87 /* RKPropertyMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyMapping.h; path = Code/ObjectMapping/RKPropertyMapping.h; sourceTree = "<group>"; }; - 5CE58398E0BE8D266923D16A28663EB6 /* PFObjectSubclassingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassingController.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.m; sourceTree = "<group>"; }; - 5CEDED5603A9C216D88239CD22DAD12F /* _FBSDKLoginRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKLoginRecoveryAttempter.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m; sourceTree = "<group>"; }; - 5CF14FE1AA01684F58CFF8617EC29EC7 /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = "<group>"; }; - 5D488D8E4B776014CDEE5E6EF762C08E /* PFReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFReachability.h; path = Parse/Internal/PFReachability.h; sourceTree = "<group>"; }; - 5D50D28CFFDB33D36C5123FE9819503C /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = "<group>"; }; - 5D56D65949ED50DA5A35630E0B93DDB5 /* PFHTTPRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPRequest.h; path = Parse/Internal/HTTPRequest/PFHTTPRequest.h; sourceTree = "<group>"; }; - 5D97C25717E3E4851FE4EFE780A45434 /* lcl_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_RK.h; path = Vendor/LibComponentLogging/Core/lcl_RK.h; sourceTree = "<group>"; }; - 5DB6831426CD60ECF9EBFBFE5472A43A /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m; sourceTree = "<group>"; }; - 5DD18A5D9607E9AB948A055344CD3E4C /* RKValueTransformers-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RKValueTransformers-dummy.m"; sourceTree = "<group>"; }; - 5DEB605CCA159256A3305ABB92ADED70 /* PFACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState.h; path = Parse/Internal/ACL/State/PFACLState.h; sourceTree = "<group>"; }; - 5E5EF79FF8D3C83E7DCBD82CE96B138E /* FBSDKLiking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLiking.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h; sourceTree = "<group>"; }; - 5EA794B89AD63BC09D01C4D28AB83FA6 /* PFWeakValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFWeakValue.m; path = Parse/Internal/PFWeakValue.m; sourceTree = "<group>"; }; - 5EB160597E8E862ED9A4D2CDE6C5ECBB /* RKSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKSerialization.h; path = Code/Support/RKSerialization.h; sourceTree = "<group>"; }; - 609E48B1FF82F30564A193C81AB2A1B5 /* FBSDKAccessTokenCacheV3_21.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_21.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h; sourceTree = "<group>"; }; - 60E9ACA9DCB6DFF036B60A0C51E4A5FF /* FBSDKLoginTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h; sourceTree = "<group>"; }; - 610CAB8E8825EC6BC293F21E90DD6315 /* ParseManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseManager.h; path = Parse/Internal/ParseManager.h; sourceTree = "<group>"; }; - 6144F78DC1C2B2F8A260C15A0B7148BA /* PFRESTObjectCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectCommand.m; path = Parse/Internal/Commands/PFRESTObjectCommand.m; sourceTree = "<group>"; }; - 614A361C74DFD5A28DB5A4DBFAD80EAF /* PFURLSessionCommandRunner_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner_Private.h; sourceTree = "<group>"; }; - 61A8714F3E98EE48AF22222F6082A20E /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; - 622A44BCA22902069E3F240357CD45F3 /* PFACL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACL.m; path = Parse/PFACL.m; sourceTree = "<group>"; }; - 623C2B3361739718CF09561BA4D026B7 /* PFMutableQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableQueryState.h; path = Parse/Internal/Query/State/PFMutableQueryState.h; sourceTree = "<group>"; }; - 62F4D5228E2384499C80602BA6C921F4 /* PFCloudCodeController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloudCodeController.h; path = Parse/Internal/CloudCode/PFCloudCodeController.h; sourceTree = "<group>"; }; - 63188CFF04051D2C52F225740A033D43 /* FBSDKSharePhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhoto.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h; sourceTree = "<group>"; }; - 635550F96E6CB4B30D674CA6B3D59AAA /* RKObjectMappingMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMappingMatcher.m; path = Code/ObjectMapping/RKObjectMappingMatcher.m; sourceTree = "<group>"; }; - 6358EB9DDDA9062C6B886A954CBC76D9 /* FBSDKLikeBoxBorderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxBorderView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m; sourceTree = "<group>"; }; - 63AA0219BE65F798CB2F7604B4733571 /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = "<group>"; }; - 63C834523FBD7AC3D226D67DBCAB0F4C /* PFObjectController_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController_Private.h; path = Parse/Internal/Object/Controller/PFObjectController_Private.h; sourceTree = "<group>"; }; - 63E89B2BE05AE41A084F3E0FA21250FA /* PFQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryController.h; path = Parse/Internal/Query/Controller/PFQueryController.h; sourceTree = "<group>"; }; - 641AE05DD55E5E6AC1590CD7B4A18F97 /* Pods-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-resources.sh"; sourceTree = "<group>"; }; - 6448EFCEA795D12938825D3F8D395848 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = en.lproj; path = Parse/Resources/en.lproj; sourceTree = "<group>"; }; - 6474A77F06A843F81E145096D09D7711 /* FBSDKSystemAccountStoreAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSystemAccountStoreAdapter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h; sourceTree = "<group>"; }; - 648066E3DB510A8F72E964D968AAA219 /* libBolts.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBolts.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 657D21EB951543C1C5D4637E284EB184 /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = "<group>"; }; - 65CF7764149142958978827C966A07B1 /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = "<group>"; }; - 6603759A59107C9EA23B8A6F0AC4524B /* PFObjectFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCodingLogic.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.m; sourceTree = "<group>"; }; - 660799EF24CF28527054B3FA6E25BE2A /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = "<group>"; }; - 661148537E08B421366ECAD30B9523D7 /* PFACLPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLPrivate.h; path = Parse/Internal/ACL/PFACLPrivate.h; sourceTree = "<group>"; }; - 66FE320ED85B83804D275B29BFCDDCFF /* AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.xcconfig; sourceTree = "<group>"; }; - 680D7CAB02E8C5A1DCE74985204D4483 /* PFRESTCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCommand.m; path = Parse/Internal/Commands/PFRESTCommand.m; sourceTree = "<group>"; }; - 687225D9C30A2354D368E350F8C481FB /* PFPushState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState_Private.h; path = Parse/Internal/Push/State/PFPushState_Private.h; sourceTree = "<group>"; }; - 6930BA637A283F95CB5BE9E7F530E97C /* RestKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RestKit.xcconfig; sourceTree = "<group>"; }; - 69A5C357BDE6663375E1CBBBE08B3440 /* FBSDKSharePhotoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhotoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h; sourceTree = "<group>"; }; - 69DE218A0D590D2C3678DE52CDFAA862 /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = "<group>"; }; - 6B0E9CC89B4C9510C51F6F8388E25C21 /* FBSDKShareButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h; sourceTree = "<group>"; }; - 6C12D518D08748E88B0F70890764B8CD /* RKObjectMappingOperationDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMappingOperationDataSource.m; path = Code/ObjectMapping/RKObjectMappingOperationDataSource.m; sourceTree = "<group>"; }; - 6C88718F1FAACE95C1F6DC1798456734 /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = "<group>"; }; - 6C9FEB49ADBD54B9FD7533801BB5380F /* FBSDKLoginCompletion+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginCompletion+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h"; sourceTree = "<group>"; }; - 6CA98D8F458A2FFECCD9C3CF7AAEECFA /* AFHTTPClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPClient.m; path = AFNetworking/AFHTTPClient.m; sourceTree = "<group>"; }; - 6CFD6F4F94AD214D7B9CEF3544854F4D /* RKPathMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPathMatcher.m; path = Code/Network/RKPathMatcher.m; sourceTree = "<group>"; }; - 6CFDCCA1B3C5C08CF8E7EE0036580FCA /* PFEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue.h; path = Parse/Internal/PFEventuallyQueue.h; sourceTree = "<group>"; }; - 6D0E4808B55472B808C0B84583C9BDD1 /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = "<group>"; }; - 6D28D403AA7A5A6F2AF7DDC6F991B98A /* PFAnonymousAuthenticationProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousAuthenticationProvider.m; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.m; sourceTree = "<group>"; }; - 6D2DCC014C9FB0F4706377719D5E23C9 /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h; sourceTree = "<group>"; }; - 6D74017655C22EAC1CDB43F8CD2B468D /* PFOfflineQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryController.h; path = Parse/Internal/Query/Controller/PFOfflineQueryController.h; sourceTree = "<group>"; }; - 6D8623E61A0D98F47738887CE7BE2378 /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = "<group>"; }; - 6D9866C1156E2B6A59D2996350AB5075 /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m; sourceTree = "<group>"; }; - 6DCA15FE1B9E0D7F046522F5521C2102 /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = "<group>"; }; - 6E52C541820F569B77A87A851D648583 /* FBSDKSharePhotoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhotoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m; sourceTree = "<group>"; }; - 6E6A42EE42B9EEE445B28BDD96FFB1C7 /* PFRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState.h; path = Parse/Internal/Relation/State/PFRelationState.h; sourceTree = "<group>"; }; - 6EA7BE6071FB5DACC51089FB613BA39E /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = "<group>"; }; - 6EDB6A316CDD5D018128E1D3136DFC1B /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = "<group>"; }; - 6F140AB891150C6CFED7DD2A7B4A62B2 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = "<group>"; }; - 700F2F5BA5994CFBE256028DFF7EC6CC /* Parse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Parse.m; path = Parse/Parse.m; sourceTree = "<group>"; }; - 704C843E9911E15531BA4307B0AB6D03 /* RKValueTransformers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKValueTransformers.m; path = Code/RKValueTransformers.m; sourceTree = "<group>"; }; - 705296E1BAA1CCE01D2761F16F9A39F9 /* FBSDKAppInviteContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h; sourceTree = "<group>"; }; - 7143CA35B7DBC71915BDD3C8FFA6F17B /* RKObjectMappingOperationDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMappingOperationDataSource.h; path = Code/ObjectMapping/RKObjectMappingOperationDataSource.h; sourceTree = "<group>"; }; - 71B842D80B25BEB8AE3A797A724D7CC5 /* FBSDKMessageDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessageDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h; sourceTree = "<group>"; }; - 71D26DA17DCBC3B6CC47B2FCA63BF991 /* PFMutableFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableFileState.h; path = Parse/Internal/File/State/PFMutableFileState.h; sourceTree = "<group>"; }; - 71EFAC4FE3DE4D635A34BD873A1302F5 /* PFURLSessionFileDownloadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionFileDownloadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m; sourceTree = "<group>"; }; - 7244F71460BF559B73433E28D79F2BFD /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = "<group>"; }; - 72F7D5CD8944B77904BC197DDC8A0487 /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = "<group>"; }; - 7329F4C215D23C5B157437CD3ED3DC86 /* PFSubclassing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSubclassing.h; path = Parse/PFSubclassing.h; sourceTree = "<group>"; }; - 73305F9BCF2563CCA2E4C15B8DDCFD68 /* FBSDKShareVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideo.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m; sourceTree = "<group>"; }; - 739CA807E35A38705E95A5061E4DB05F /* PFUserAuthenticationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserAuthenticationController.m; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m; sourceTree = "<group>"; }; - 73A13DAF02B6E8A824568229C50FBBD3 /* PFObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectController.m; path = Parse/Internal/Object/Controller/PFObjectController.m; sourceTree = "<group>"; }; - 73F2E6274BAD1AD8D9324B3838256FB6 /* FBSDKAppInviteContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m; sourceTree = "<group>"; }; - 746403A7CAF94F397758C55ECC719138 /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = "<group>"; }; - 74D75C3A4E2A26AFDC39E1FAB71F6A80 /* FBSDKShareKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKShareKit-prefix.pch"; sourceTree = "<group>"; }; - 757FF14AABAC587C4E6F945A1E8D4472 /* RKMappingResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingResult.m; path = Code/ObjectMapping/RKMappingResult.m; sourceTree = "<group>"; }; - 76865DCF9853952106158A4BF7621602 /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = "<group>"; }; - 773B71C6DCFE021055288283663560C9 /* RKManagedObjectRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKManagedObjectRequestOperation.h; path = Code/Network/RKManagedObjectRequestOperation.h; sourceTree = "<group>"; }; - 778AD9DB2CF0543C914F6BD394974650 /* FBSDKShareOpenGraphValueContainer+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareOpenGraphValueContainer+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h"; sourceTree = "<group>"; }; - 778D4E4A3B190B10F0AEFE08CC88F279 /* Testing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Testing.h; path = Code/Testing.h; sourceTree = "<group>"; }; - 786806355E0E877557AA2507DDEBACDD /* PFPurchaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchaseController.h; path = Parse/Internal/Purchase/Controller/PFPurchaseController.h; sourceTree = "<group>"; }; - 78FBD963927DF94B45B5FF19AAEDDEC0 /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = "<group>"; }; - 7915B369685221642E067005F680B451 /* PFObjectSubclassInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassInfo.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.h; sourceTree = "<group>"; }; - 79EF5DA0025B0FFF67DFADD5492A17E1 /* PFUserState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState_Private.h; path = Parse/Internal/User/State/PFUserState_Private.h; sourceTree = "<group>"; }; - 7AE5F75C04FAC19C4B94C834EC0C4E96 /* PFPinningEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningEventuallyQueue.m; path = Parse/Internal/PFPinningEventuallyQueue.m; sourceTree = "<group>"; }; - 7B85AF138E6CEEDF8291F16978BAEAEC /* PFFileController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileController.m; path = Parse/Internal/File/Controller/PFFileController.m; sourceTree = "<group>"; }; - 7BCB5525ABC0E01EC9A5E1CE8D86FA7E /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = "<group>"; }; - 7BF25C2B0ED8E85EC0D52225FEAAF054 /* FBSDKShareError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareError.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h; sourceTree = "<group>"; }; - 7C2FB169D00DE47B9815271C62B2D855 /* FBSDKBoltsMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBoltsMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h; sourceTree = "<group>"; }; - 7CB0738F082CD21988DD84404C1406E6 /* RKStringTokenizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKStringTokenizer.h; path = Code/Support/RKStringTokenizer.h; sourceTree = "<group>"; }; - 7DE49CE008144B7919F76B3E247361EE /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = "<group>"; }; - 7DFCEA97612DEB2723DF40E6FFFC5D26 /* FBSDKLoginUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginUtility.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h; sourceTree = "<group>"; }; - 7E2F75F68AFD577F425752D70A27C101 /* PFOfflineQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryController.m; path = Parse/Internal/Query/Controller/PFOfflineQueryController.m; sourceTree = "<group>"; }; - 7E4FE6BADC672C550203DCEEC5EE8020 /* BFCancellationToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationToken.m; path = Bolts/Common/BFCancellationToken.m; sourceTree = "<group>"; }; - 7E8914751B900AC4DEF771BDEB8FE816 /* PFObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState.h; path = Parse/Internal/Object/State/PFObjectState.h; sourceTree = "<group>"; }; - 7EA68C5837BA086C1AB0730D5D664A75 /* FBSDKLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m; sourceTree = "<group>"; }; - 7EFB8D910130BB4CE5DC011047B4653B /* RKObjectMappingMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMappingMatcher.h; path = Code/ObjectMapping/RKObjectMappingMatcher.h; sourceTree = "<group>"; }; - 7EFF22BC9B76855DF9E2359F492E11A4 /* PFPropertyInfo_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Private.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Private.h; sourceTree = "<group>"; }; - 7F33AA92E57D33A8DE7D71147E3BBDD3 /* RKHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKHTTPRequestOperation.h; path = Code/Network/RKHTTPRequestOperation.h; sourceTree = "<group>"; }; - 7FB86554EB764C69DB563344FB6E4583 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreLocation.framework; sourceTree = DEVELOPER_DIR; }; - 7FFC8DCDDC208CBB816476EDF7085EDB /* PFFieldOperationDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperationDecoder.m; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.m; sourceTree = "<group>"; }; - 80535C82708945F05047D894446087A4 /* PFFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileState.m; path = Parse/Internal/File/State/PFFileState.m; sourceTree = "<group>"; }; - 8148FF7EFD96C224279A35AB3C828BC8 /* PFReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFReachability.m; path = Parse/Internal/PFReachability.m; sourceTree = "<group>"; }; - 814BAB5BB856170E11D9DFE9E26A888C /* PFURLConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLConstructor.h; path = Parse/Internal/HTTPRequest/PFURLConstructor.h; sourceTree = "<group>"; }; - 8188F44B82CFACD44B2AA378C7BEEE4B /* Parse_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse_Private.h; path = Parse/Internal/Parse_Private.h; sourceTree = "<group>"; }; - 818CFC14E623AB5BE69BCA0E501ABFD6 /* FBSDKURLConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h; sourceTree = "<group>"; }; - 81C8A7F71F4AB5ED22FA83E37837CA80 /* RKLumberjackLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKLumberjackLogger.h; path = Code/Support/RKLumberjackLogger.h; sourceTree = "<group>"; }; - 81D47F8C37692E3865019B411BDAEE3A /* PFEventuallyQueue_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue_Private.h; path = Parse/Internal/PFEventuallyQueue_Private.h; sourceTree = "<group>"; }; - 81DB7CA7AE90A4BA6CA4297DF013CBB2 /* PFMutableUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableUserState.m; path = Parse/Internal/User/State/PFMutableUserState.m; sourceTree = "<group>"; }; - 81F2926280C12B9767563CFF770FAF7B /* FBSDKCheckmarkIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCheckmarkIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h; sourceTree = "<group>"; }; - 82DE2CCDEF80C1FF02649B195289A931 /* ParseInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseInternal.h; path = Parse/Internal/ParseInternal.h; sourceTree = "<group>"; }; - 82E1375889C85A75C3D50613909984E7 /* Parse-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Parse-prefix.pch"; sourceTree = "<group>"; }; - 82F4CF881DD119649C8445AB7AD1733A /* RKRoute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRoute.h; path = Code/Network/RKRoute.h; sourceTree = "<group>"; }; - 831275D794F272F2349F89FC9BA48F1D /* FBSDKAccessTokenCacheV4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV4.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m; sourceTree = "<group>"; }; - 8379929D10F949C09F2BE6851EC97373 /* FBSDKLikeButtonPopWAV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButtonPopWAV.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m; sourceTree = "<group>"; }; - 83A77564DAB70186CD83920566902605 /* RKISO8601DateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKISO8601DateFormatter.h; path = Code/RKISO8601DateFormatter.h; sourceTree = "<group>"; }; - 83EED38CF3D996DFEA263619B0B9CBD1 /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = "<group>"; }; - 83F2B1D939804694C73E7FCD9AAF4090 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; - 83FAF66089BB2B25DAD32F318716E9B5 /* PFPushController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushController.m; path = Parse/Internal/Push/Controller/PFPushController.m; sourceTree = "<group>"; }; - 8430E4A0A4791DC7D0F9CE485D860A00 /* RKBenchmark.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKBenchmark.m; path = Code/Testing/RKBenchmark.m; sourceTree = "<group>"; }; - 84D47AE11AD48DDD6598E018331299E3 /* PFUserConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserConstants.h; path = Parse/Internal/User/Constants/PFUserConstants.h; sourceTree = "<group>"; }; - 853ED2ED8383CAC8B42216E034C32866 /* PFProductsRequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProductsRequestHandler.m; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.m; sourceTree = "<group>"; }; - 859C15C373D18E927177F1CA54850FFA /* BFAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererController.h; path = Bolts/iOS/BFAppLinkReturnToRefererController.h; sourceTree = "<group>"; }; - 85A34FD1B37C88CFB5EFD0D8E6DD8071 /* PFPropertyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo.h; sourceTree = "<group>"; }; - 85C3C7141AE8131AC8868EF3F853AD3A /* RKConnectionTestExpectation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKConnectionTestExpectation.h; path = Code/Testing/RKConnectionTestExpectation.h; sourceTree = "<group>"; }; - 8700D74C7E8322F5645810F5DBA692B1 /* RKISO8601DateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKISO8601DateFormatter.m; path = Code/RKISO8601DateFormatter.m; sourceTree = "<group>"; }; - 874C68CE36C22FDD95A27779257F15A1 /* PFObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObject.h; path = Parse/PFObject.h; sourceTree = "<group>"; }; - 8786F55C6BCF0316006C8213CA9340CE /* PFPaymentTransactionObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPaymentTransactionObserver.m; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.m; sourceTree = "<group>"; }; - 879994DB9DEDD7064DD1B700F3FF8690 /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = "<group>"; }; - 87ABBAD2B5A5CAAE0AC4B4ACCADC1330 /* PFApplication.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFApplication.m; path = Parse/Internal/PFApplication.m; sourceTree = "<group>"; }; - 87B65FF1A2D48D2F1F0BF29F0A571A28 /* PFCurrentUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentUserController.h; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.h; sourceTree = "<group>"; }; - 87E3F9DDEC8ABB74E9B0B828E43E6A50 /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = "<group>"; }; - 880D1361F22BDCDCF4A160F7DC4D54E5 /* PFRESTSessionCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTSessionCommand.m; path = Parse/Internal/Commands/PFRESTSessionCommand.m; sourceTree = "<group>"; }; - 882529F2F51F25982209C54BD8E7C6F4 /* BFAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView.h; path = Bolts/iOS/BFAppLinkReturnToRefererView.h; sourceTree = "<group>"; }; - 886A664252B9125A43A5E8CDBC0A2C43 /* PFInstallationIdentifierStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationIdentifierStore.m; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.m; sourceTree = "<group>"; }; - 8886812D5A18522530AA7A0B5774BB0A /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = "<group>"; }; - 88ED45C6893FA0E82BD12E765DBC00CA /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = "<group>"; }; - 894852C03388A8B63E64B0E4307DA4C4 /* PFObjectLocalIdStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectLocalIdStore.h; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h; sourceTree = "<group>"; }; - 89622454B6309852AD9687B0820C02B0 /* SOCKit.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SOCKit.m; sourceTree = "<group>"; }; - 8A3CCA72533E35C4376B1E8AECC9627F /* TransitionKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TransitionKit.h; path = Code/TransitionKit.h; sourceTree = "<group>"; }; - 8AE382F6E1CC26178A9E3BBA1C473DEB /* FBSDKLikeActionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionController.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h; sourceTree = "<group>"; }; - 8AEFD9424D0770F6E0BC692CE0AEE27B /* PFSessionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionController.h; path = Parse/Internal/Session/Controller/PFSessionController.h; sourceTree = "<group>"; }; - 8AF2FF1B953178FD56002A938919F24E /* BFAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererView.m; path = Bolts/iOS/BFAppLinkReturnToRefererView.m; sourceTree = "<group>"; }; - 8B187D31A1B35CF60BBFE402E7FEBF55 /* PFInstallationConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationConstants.m; path = Parse/Internal/Installation/Constants/PFInstallationConstants.m; sourceTree = "<group>"; }; - 8B31ADE78BF2D9A37DCAF22E2F0D53AC /* RKHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKHTTPRequestOperation.m; path = Code/Network/RKHTTPRequestOperation.m; sourceTree = "<group>"; }; - 8B538AE03EC7635223FC2B7353D18B63 /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = "<group>"; }; - 8BBEDB49F89EFB9B6465EF82E36C1A49 /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = "<group>"; }; - 8C2E4681A2F967A6C4E522E08078ADC0 /* FBSDKLikeObjectType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeObjectType.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h; sourceTree = "<group>"; }; - 8CA449F861B70FFB8296D4B48C050FBE /* PFCommandRunning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunning.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.h; sourceTree = "<group>"; }; - 8CAACEFFE369BA8C9440D6CD08EC7727 /* PFPushUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushUtilities.h; path = Parse/Internal/Push/Utilites/PFPushUtilities.h; sourceTree = "<group>"; }; - 8CCE9BE6DF0576998191D1D52675A3EF /* Pods-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-dummy.m"; sourceTree = "<group>"; }; - 8CE5F1B200B8D4F57C6A85199C9969FE /* PFPushUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushUtilities.m; path = Parse/Internal/Push/Utilites/PFPushUtilities.m; sourceTree = "<group>"; }; - 8D53FBFB124273A95BC60A578E870E0C /* PFCurrentConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentConfigController.h; path = Parse/Internal/Config/Controller/PFCurrentConfigController.h; sourceTree = "<group>"; }; - 8D597043658824DCA8FDD8CFFEE3BC6D /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = "<group>"; }; - 8D6ED3A53A136BCE4843E32025C76ED9 /* PFUserPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserPrivate.h; path = Parse/Internal/User/PFUserPrivate.h; sourceTree = "<group>"; }; - 8DD494B04A84F285624644430E1FF3A0 /* RKValueTransformers-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "RKValueTransformers-Private.xcconfig"; sourceTree = "<group>"; }; - 8DE47CA373FCE248BB502DF421F6B2A3 /* RKObjectMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMapping.h; path = Code/ObjectMapping/RKObjectMapping.h; sourceTree = "<group>"; }; - 8EA5A298BA6815375F9BBA4D48B6E32C /* PFSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession.h; path = Parse/PFSession.h; sourceTree = "<group>"; }; - 8F5835DFBC8A6E5D025F957021AE5352 /* FBSDKShareDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m; sourceTree = "<group>"; }; - 8F5ED0372250818DCE119C3430AB9B9C /* FBSDKCoreKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKCoreKit.xcconfig; sourceTree = "<group>"; }; - 8F840FB713741211963007A36C4C972B /* RKObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectUtilities.h; path = Code/ObjectMapping/RKObjectUtilities.h; sourceTree = "<group>"; }; - 905A2264F8751CFD5E0FFE6C92CE7462 /* RKPropertyMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyMapping.m; path = Code/ObjectMapping/RKPropertyMapping.m; sourceTree = "<group>"; }; - 905ADB423401F79FA90F610A1CEB29F1 /* RKMappingResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingResult.h; path = Code/ObjectMapping/RKMappingResult.h; sourceTree = "<group>"; }; - 908DBE6B62FE286E8E2B65AB8471172C /* FBSDKLoginManagerLoginResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManagerLoginResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h"; sourceTree = "<group>"; }; - 90E50367F9BC45C10EACF85808FF75BC /* PFConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig.h; path = Parse/PFConfig.h; sourceTree = "<group>"; }; - 9161913CD82800463279FFB15D5628FD /* PFRESTPushCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTPushCommand.m; path = Parse/Internal/Commands/PFRESTPushCommand.m; sourceTree = "<group>"; }; - 916C1A84C0A37408A6F76D88348177DD /* PFSessionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionController.m; path = Parse/Internal/Session/Controller/PFSessionController.m; sourceTree = "<group>"; }; - 917E881A4D1DE9E99ED3B7606F09E16B /* PFURLConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLConstructor.m; path = Parse/Internal/HTTPRequest/PFURLConstructor.m; sourceTree = "<group>"; }; - 91BF5E929B1AC36CE7F99D1E1DC0ED30 /* PFOfflineStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineStore.h; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.h; sourceTree = "<group>"; }; - 91F0975F1A27413EC0622237C3680849 /* PFConfig_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig_Private.h; path = Parse/Internal/Config/PFConfig_Private.h; sourceTree = "<group>"; }; - 922185D0977C1F99BFB47CC3EB889F72 /* PFFileState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState_Private.h; path = Parse/Internal/File/State/PFFileState_Private.h; sourceTree = "<group>"; }; - 93400D2B380DA1CACA54DEAAFAE23D12 /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = "<group>"; }; - 93BF262897FA3F05F3FDF601D8CB04A7 /* libFBSDKLoginKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKLoginKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 93C724D27975298397EBCBA024D076F2 /* FBSDKShareVideoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m; sourceTree = "<group>"; }; - 9402AA910E3CEEBA2FBF5C33C47593DC /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = "<group>"; }; - 9494BB00014D0192A01360063AA70BE0 /* FBSDKLoginButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginButton.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h; sourceTree = "<group>"; }; - 94EDA6573DFD479F710386D53249C2EF /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m; sourceTree = "<group>"; }; - 950203966AB13DB9DD6BF919571BCD7D /* BFExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFExecutor.m; path = Bolts/Common/BFExecutor.m; sourceTree = "<group>"; }; - 95ACACF8D7E55EF8FE0FEF697597C3D3 /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = "<group>"; }; - 95B10AC59C183D139DF676CDC2DEF1B0 /* RKLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKLog.h; path = Code/Support/RKLog.h; sourceTree = "<group>"; }; - 9605F7221341E3EA07630ABF2DE6BC6F /* FBSDKShareVideoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h; sourceTree = "<group>"; }; - 96A0F952DC35450695E4E710C00DA528 /* PFCommandCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache_Private.h; path = Parse/Internal/PFCommandCache_Private.h; sourceTree = "<group>"; }; - 96A98B34414903617DDCC4DD35D0ACC8 /* SOCKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SOCKit.h; sourceTree = "<group>"; }; - 975F4BA7752243B51CF71A4F5AF85FBB /* PFCoreManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreManager.h; path = Parse/Internal/PFCoreManager.h; sourceTree = "<group>"; }; - 9779A223D892C242F0118CAD43BA556F /* PFMultiProcessFileLockController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLockController.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.m; sourceTree = "<group>"; }; - 97E6EC52D54228978DD7489F931C7015 /* RKLumberjackLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKLumberjackLogger.m; path = Code/Support/RKLumberjackLogger.m; sourceTree = "<group>"; }; - 983296A9BF9A0D8836E833993EB26598 /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = "<group>"; }; - 98522B603FC459FC9758D1108318CB8C /* FBSDKSharePhoto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhoto.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m; sourceTree = "<group>"; }; - 9863ED0E0DE0D5BD0D54D80394E2278E /* RKObjectRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectRequestOperation.h; path = Code/Network/RKObjectRequestOperation.h; sourceTree = "<group>"; }; - 9866CB182F7690789F1CE9AC2C89303E /* PFPropertyInfo_Runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Runtime.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h; sourceTree = "<group>"; }; - 989869E1193232EE4E322636E8236CEE /* BFAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkTarget.h; path = Bolts/iOS/BFAppLinkTarget.h; sourceTree = "<group>"; }; - 98A77CBFC3CB99CB7C20905C88715474 /* PFURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.h; sourceTree = "<group>"; }; - 98D59999C2F13A02F8927597F85000C8 /* RKDynamicMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDynamicMapping.h; path = Code/ObjectMapping/RKDynamicMapping.h; sourceTree = "<group>"; }; - 992AFE5C5E747C1601862BCDAA0A7DD8 /* PFFileStagingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileStagingController.m; path = Parse/Internal/File/Controller/PFFileStagingController.m; sourceTree = "<group>"; }; - 9936ED8D363FA6B09EA60941182E9F3B /* TKState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKState.m; path = Code/TKState.m; sourceTree = "<group>"; }; - 99CE24FEF0EA1F2943A8DFF00388C985 /* RKStringTokenizer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKStringTokenizer.m; path = Code/Support/RKStringTokenizer.m; sourceTree = "<group>"; }; - 99E458C281E7B58FB283CD3DD6EC7CC7 /* PFDevice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDevice.h; path = Parse/Internal/PFDevice.h; sourceTree = "<group>"; }; - 99FF411F081193D28CAB98DD501F9F72 /* FBSDKShareLinkContent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareLinkContent+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h"; sourceTree = "<group>"; }; - 9A3A0AEECB03ACB2C625D6A5BDD230FC /* Bolts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Bolts.m; path = Bolts/Common/Bolts.m; sourceTree = "<group>"; }; - 9A7897D08498CE169C9E0F8BA5015E80 /* RKObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectUtilities.m; path = Code/ObjectMapping/RKObjectUtilities.m; sourceTree = "<group>"; }; - 9B2BBEF7F76A0A9700A14D2C55164268 /* PFRESTConfigCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTConfigCommand.h; path = Parse/Internal/Commands/PFRESTConfigCommand.h; sourceTree = "<group>"; }; - 9B3BA8EBCD60ED1F31A2098334DB3278 /* PFCommandURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandURLRequestConstructor.h; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.h; sourceTree = "<group>"; }; - 9C258A4DB466828F6F75FA69D17B7A98 /* PFBaseState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBaseState.h; path = Parse/Internal/PFBaseState.h; sourceTree = "<group>"; }; - 9C3140134D0A6A0E556CA3A287EC0FF5 /* PFRole.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRole.h; path = Parse/PFRole.h; sourceTree = "<group>"; }; - 9C8807B3161750EADE6E8BD164724CE6 /* FBSDKShareAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareAPI.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m; sourceTree = "<group>"; }; - 9CD8231FE026505A5E9872616FAABDD9 /* FBSDKCoreKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKCoreKit-Private.xcconfig"; sourceTree = "<group>"; }; - 9D91308BAD322ECAA4960D4D23C9A2C3 /* PFFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFile.m; path = Parse/PFFile.m; sourceTree = "<group>"; }; - 9E01D38ECEA62C477A8C7BEE503A7547 /* PFQueryState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState_Private.h; path = Parse/Internal/Query/State/PFQueryState_Private.h; sourceTree = "<group>"; }; - 9E042B3BA6CAF103736FF4527CF951FF /* libAFNetworking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAFNetworking.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 9E09472B01CB2E27BD636136A0066956 /* PFCurrentInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentInstallationController.m; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.m; sourceTree = "<group>"; }; - 9E21E2C6F0AD5061454FF796346F0484 /* PFPushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState.h; path = Parse/Internal/Push/State/PFPushState.h; sourceTree = "<group>"; }; - 9F73B326076ED018A7156E4BFED6A5EA /* lcl_config_components_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_components_RK.h; path = Code/Support/lcl_config_components_RK.h; sourceTree = "<group>"; }; - 9F8E73E13D56D4420C7C239F8B5BF990 /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h; sourceTree = "<group>"; }; - 9FAACBCE52471750369D9FA0ECEAEEE1 /* PFMutablePushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutablePushState.h; path = Parse/Internal/Push/State/PFMutablePushState.h; sourceTree = "<group>"; }; - 9FBFA3525F472811286DDE3A9248666E /* PFObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectUtilities.h; path = Parse/Internal/Object/Utilities/PFObjectUtilities.h; sourceTree = "<group>"; }; - 9FE092D9D9FA0698D276FB74E5D3C4EB /* libParse.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libParse.a; sourceTree = BUILT_PRODUCTS_DIR; }; - A01032B0129DF076CF6B8F1997C4BA6F /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = "<group>"; }; - A029888328B7A6D3EFA37ED1B3C36DAE /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h; sourceTree = "<group>"; }; - A0426D7149778C1DBF70DD5B3253A081 /* RKDynamicMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDynamicMapping.m; path = Code/ObjectMapping/RKDynamicMapping.m; sourceTree = "<group>"; }; - A083AB389EBB61C1E3AC66B85D0485EE /* PFUserAuthenticationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationDelegate.h; path = Parse/PFUserAuthenticationDelegate.h; sourceTree = "<group>"; }; - A0A9019E56BAD1EE29D29A6AEDF3BC1A /* ISO8601DateFormatterValueTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ISO8601DateFormatterValueTransformer.m; path = Code/ISO8601DateFormatterValueTransformer.m; sourceTree = "<group>"; }; - A0D0E260844C900A61F03ACD640BF515 /* PFDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDecoder.h; path = Parse/Internal/PFDecoder.h; sourceTree = "<group>"; }; - A13F413DC88512FDA54FE8057A667EAD /* PFSQLiteDatabase_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase_Private.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase_Private.h; sourceTree = "<group>"; }; - A153F0DEB24B9E8B5723EFCB6F33B536 /* PFCoreManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCoreManager.m; path = Parse/Internal/PFCoreManager.m; sourceTree = "<group>"; }; - A16F8952CC048721F5CA32D79E71B653 /* ISO8601DateFormatterValueTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ISO8601DateFormatterValueTransformer.h; path = Code/ISO8601DateFormatterValueTransformer.h; sourceTree = "<group>"; }; - A1A84243D8AF41257B228911CE638D24 /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = "<group>"; }; - A226C9DD413F0CCC4F3BFD7DE0A82A88 /* PFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFNetworkActivityIndicatorManager.m; path = Parse/PFNetworkActivityIndicatorManager.m; sourceTree = "<group>"; }; - A2ACF4A5ED3EA611505A0F4017817898 /* FBSDKLoginManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManager+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h"; sourceTree = "<group>"; }; - A32731565F3850539FE9BBB6231B50DE /* FBSDKLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m; sourceTree = "<group>"; }; - A38B68BCFCED22FDC00C7FD4F3FFA717 /* FBSDKAccessTokenCacheV3_21.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_21.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m; sourceTree = "<group>"; }; - A397240CB17A369FA7286D7ED09FBDD2 /* RKOperationStateMachine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKOperationStateMachine.m; path = Code/Support/RKOperationStateMachine.m; sourceTree = "<group>"; }; - A3B19063FF0B2F212D30AA107E73EAF3 /* PFInternalUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInternalUtils.m; path = Parse/Internal/PFInternalUtils.m; sourceTree = "<group>"; }; - A3D3B2AE6543B11628B3FD5B32D9E786 /* PFAlertView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAlertView.m; path = Parse/Internal/PFAlertView.m; sourceTree = "<group>"; }; - A3D3F0FD5623B320704891A12D20A91A /* PFMutableACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableACLState.h; path = Parse/Internal/ACL/State/PFMutableACLState.h; sourceTree = "<group>"; }; - A3D86DE4F1B3EFCBA205A592DA3CCEFE /* AFURLConnectionOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLConnectionOperation.h; path = AFNetworking/AFURLConnectionOperation.h; sourceTree = "<group>"; }; - A42C8D72C0DD9F94735982945AB06235 /* FBSDKLoginButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginButton.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m; sourceTree = "<group>"; }; - A43FA21715C3B6F62D38DAA843E6E28A /* AFPropertyListRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFPropertyListRequestOperation.m; path = AFNetworking/AFPropertyListRequestOperation.m; sourceTree = "<group>"; }; - A460B6A4FC8055E468FF739FF0D108FE /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h; sourceTree = "<group>"; }; - A47788042F4DC03B2F9C830BA9EA5567 /* RKMappingErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingErrors.h; path = Code/ObjectMapping/RKMappingErrors.h; sourceTree = "<group>"; }; - A49E03FC7C84FA3293B38677DC681CCE /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = "<group>"; }; - A4E495589FA749FBC303F264C9C6B80F /* PFObjectSubclassInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassInfo.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.m; sourceTree = "<group>"; }; - A4F85A759F06DA2C165FC5F9C67479D9 /* TKState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKState.h; path = Code/TKState.h; sourceTree = "<group>"; }; - A52CB1C60BA79230A59E65B9417DBEB7 /* FBSDKAccessTokenCacheV3_17.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_17.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h; sourceTree = "<group>"; }; - A54BA714770BA8ED007819BC352FEB7C /* libSOCKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSOCKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - A558554954AE61057C9CF3B86E31AAF1 /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = "<group>"; }; - A67A7F1AF95165EBD3C0D8E0060DB526 /* RKMappingTest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingTest.h; path = Code/Testing/RKMappingTest.h; sourceTree = "<group>"; }; - A6ABA5D37C50A0B8B9B785D774D332A5 /* PFRESTCloudCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCloudCommand.h; path = Parse/Internal/Commands/PFRESTCloudCommand.h; sourceTree = "<group>"; }; - A6AE518E9BB5E93989AFB92589707FBA /* PFObjectBatchController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectBatchController.h; path = Parse/Internal/Object/BatchController/PFObjectBatchController.h; sourceTree = "<group>"; }; - A7133DBE9772758CC46F930B640FA577 /* PFSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession_Private.h; path = Parse/Internal/Session/PFSession_Private.h; sourceTree = "<group>"; }; - A7162605D551027C56A2A37B943994C7 /* PFAnonymousUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousUtils.m; path = Parse/PFAnonymousUtils.m; sourceTree = "<group>"; }; - A73E1A20457CEF5005A485BBF4301935 /* Bolts-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Bolts-prefix.pch"; sourceTree = "<group>"; }; - A771288DA627C1035D810FE2E4D30B4D /* RKObjectRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectRequestOperation.m; path = Code/Network/RKObjectRequestOperation.m; sourceTree = "<group>"; }; - A7D2882D92D1796229569A9CC1C6A400 /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent_Internal.h; path = Bolts/iOS/BFMeasurementEvent_Internal.h; sourceTree = "<group>"; }; - A7E0C2515B7C55E949D9562B88288232 /* FBSDKBoltsMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBoltsMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m; sourceTree = "<group>"; }; - A808BCEC34959F6ECE35E478017AAE04 /* FBSDKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h; sourceTree = "<group>"; }; - A83514721328D0D297D02197D617EB33 /* PFErrorUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFErrorUtilities.h; path = Parse/Internal/PFErrorUtilities.h; sourceTree = "<group>"; }; - A8A665A78A257570FD4F9CE8A2EF5694 /* FBSDKLikeControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeControl.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h; sourceTree = "<group>"; }; - A8FA5F2052C43B6E4060DAF60265E858 /* SOCKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "SOCKit-Private.xcconfig"; sourceTree = "<group>"; }; - A92BD29643970DCB9C0745A0406AD053 /* PFPushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushState.m; path = Parse/Internal/Push/State/PFPushState.m; sourceTree = "<group>"; }; - A9450452DCB495F010C9799C19CEDC25 /* PFAnonymousUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils.h; path = Parse/PFAnonymousUtils.h; sourceTree = "<group>"; }; - A9CC220B3BB7353C4CE25F3392EC1458 /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = "<group>"; }; - A9E3691FF1A7CEBD5D9EFA1195090078 /* ISO8601DateFormatterValueTransformer.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ISO8601DateFormatterValueTransformer.xcconfig; sourceTree = "<group>"; }; - A9E407E843F2555171E0CF773AFE8CAA /* PFUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserState.m; path = Parse/Internal/User/State/PFUserState.m; sourceTree = "<group>"; }; - AA62DC87D5F1898752152729F580A3A0 /* RKNSJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKNSJSONSerialization.m; path = Code/Support/RKNSJSONSerialization.m; sourceTree = "<group>"; }; - AA6E69D0F5432BE35E8DA343DA6002CE /* FBSDKShareDialogMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialogMode.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h; sourceTree = "<group>"; }; - AAFC5698C81D8076342E19ECB0D2E550 /* PFJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFJSONSerialization.m; path = Parse/Internal/PFJSONSerialization.m; sourceTree = "<group>"; }; - AB4729343B161E71126051A18EF77E49 /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = "<group>"; }; - AB5F89C2FF338EB3D8A14F31581D0B13 /* TransitionKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "TransitionKit-Private.xcconfig"; sourceTree = "<group>"; }; - ACB0039F3DE0903BD2479336BCB4AAF5 /* FBSDKMessengerIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessengerIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m; sourceTree = "<group>"; }; - AD0F8B79E3BDC24EF65F9BA34E2F1983 /* ParseManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseManager.m; path = Parse/Internal/ParseManager.m; sourceTree = "<group>"; }; - AD297F39854C24CB012AB880A8F72FE9 /* PFACLState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState_Private.h; path = Parse/Internal/ACL/State/PFACLState_Private.h; sourceTree = "<group>"; }; - AD4EA5AF253C62AF6EE7B3838BE1FE11 /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m; sourceTree = "<group>"; }; - AD6755DF1120CF7F9CE51A66D317FC9F /* RKRelationshipMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRelationshipMapping.m; path = Code/ObjectMapping/RKRelationshipMapping.m; sourceTree = "<group>"; }; - ADE2CE2451E917A2482234B50A41DC19 /* FBSDKAccessTokenCacheV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV4.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h; sourceTree = "<group>"; }; - ADF8EC9446037AA127D75EE89650002F /* FBSDKLikeBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h; sourceTree = "<group>"; }; - AE094855CA351D584BD24BBC12AFB3F8 /* PFObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectControlling.h; path = Parse/Internal/Object/Controller/PFObjectControlling.h; sourceTree = "<group>"; }; - AE1F88C360ED32A2DC0B77A0FB64F684 /* RKResponseDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKResponseDescriptor.m; path = Code/Network/RKResponseDescriptor.m; sourceTree = "<group>"; }; - AE305CCADD2010E8C1E698C4DAC84DDB /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = "<group>"; }; - AE308F7FD55A37D38ABFDCED9CF0A8B3 /* PFMutableObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableObjectState.h; path = Parse/Internal/Object/State/PFMutableObjectState.h; sourceTree = "<group>"; }; - AE8C24FB91D52A7A902E7B6939B6EFC6 /* PFEventuallyPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyPin.h; path = Parse/Internal/PFEventuallyPin.h; sourceTree = "<group>"; }; - AED3A36F04E046594F39EA5EB90D97FD /* PFPropertyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo.m; sourceTree = "<group>"; }; - AEDE84F08919A050F7554C588C364506 /* TransitionKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = TransitionKit.xcconfig; sourceTree = "<group>"; }; - AEE98356256460D105F89B9C6DE23A69 /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = "<group>"; }; - AF32577C470A14D1ED63BB4B6492F464 /* PFObjectBatchController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectBatchController.m; path = Parse/Internal/Object/BatchController/PFObjectBatchController.m; sourceTree = "<group>"; }; - B00106BF0B6579DD98D56C67BD575CF0 /* PFSQLiteDatabaseResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseResult.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.h; sourceTree = "<group>"; }; - B009D5CAE876F03463C42923FD1BF780 /* PFMutableObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableObjectState.m; path = Parse/Internal/Object/State/PFMutableObjectState.m; sourceTree = "<group>"; }; - B06587D0A22379F4450AB6A83497A7DA /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = "<group>"; }; - B0F9682AC6A9C5259D9F3D4BCCD455B1 /* libRestKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRestKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - B10ADC87A857910D7585779303E279B5 /* FBSDKShareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKShareKit-dummy.m"; sourceTree = "<group>"; }; - B12980AF5F1F26F33906C73A2F38C5E2 /* PFRESTFileCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTFileCommand.m; path = Parse/Internal/Commands/PFRESTFileCommand.m; sourceTree = "<group>"; }; - B2853B351DB05A9B0740AF256122A30E /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = "<group>"; }; - B2B9FD0D9C17DD96730E88C3240D975F /* PFCategoryLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCategoryLoader.m; path = Parse/Internal/PFCategoryLoader.m; sourceTree = "<group>"; }; - B3430C5AC8208C2B671B4D7823955F60 /* RKBenchmark.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKBenchmark.h; path = Code/Testing/RKBenchmark.h; sourceTree = "<group>"; }; - B34970E9607C4D5CA7FD440A0E9D4EB0 /* RKPropertyMappingTestExpectation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyMappingTestExpectation.m; path = Code/Testing/RKPropertyMappingTestExpectation.m; sourceTree = "<group>"; }; - B3693A56CF492DA3BDAEDDBDA46ADC5D /* PFRESTAnalyticsCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTAnalyticsCommand.h; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.h; sourceTree = "<group>"; }; - B37E9B2C0FC3DA2D2D135ED6BFBFCDD0 /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = "<group>"; }; - B407FBFC5F897F4E485E1E0002B506FD /* AFXMLRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFXMLRequestOperation.m; path = AFNetworking/AFXMLRequestOperation.m; sourceTree = "<group>"; }; - B40C676461A3B7148111BB04D891F399 /* PFQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryState.m; path = Parse/Internal/Query/State/PFQueryState.m; sourceTree = "<group>"; }; - B43206E9EAB8BE07EDDF2DD6510F74C8 /* PFQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQuery.m; path = Parse/PFQuery.m; sourceTree = "<group>"; }; - B43EF13062A276FCA06A9386DCA1F36F /* FBSDKLoginConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginConstants.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h; sourceTree = "<group>"; }; - B50ED7330E240BB1A16E10047FCC8E37 /* AFHTTPClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPClient.h; path = AFNetworking/AFHTTPClient.h; sourceTree = "<group>"; }; - B563402F32E620824AD23105E63019A7 /* RKAttributeMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKAttributeMapping.h; path = Code/ObjectMapping/RKAttributeMapping.h; sourceTree = "<group>"; }; - B5EB9B4230ED62ACBBFE1640BB61C32F /* BFCancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationToken.h; path = Bolts/Common/BFCancellationToken.h; sourceTree = "<group>"; }; - B5F3FAED1517988ED94F54E9B8DA4E0A /* FBSDKShareAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareAPI.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h; sourceTree = "<group>"; }; - B5F5ADC1E77EC8A29EE990ABF17E8326 /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = "<group>"; }; - B6C82743CE345D0715A174740BEB724A /* PFCloudCodeController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloudCodeController.m; path = Parse/Internal/CloudCode/PFCloudCodeController.m; sourceTree = "<group>"; }; - B6DC44432F551A7E862B5307DF7F040D /* FBSDKLikeObjectType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeObjectType.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m; sourceTree = "<group>"; }; - B76A09E201EAD10D07E2C151D7EC5F26 /* FBSDKCoreKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKCoreKit-prefix.pch"; sourceTree = "<group>"; }; - B83B68F2BA2D8926592978101024F709 /* PFRESTPushCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTPushCommand.h; path = Parse/Internal/Commands/PFRESTPushCommand.h; sourceTree = "<group>"; }; - B83F7B501488845012B0097456793ED7 /* lcl_config_extensions_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_extensions_RK.h; path = Code/Support/lcl_config_extensions_RK.h; sourceTree = "<group>"; }; - B8409E3E09BE30CB9E0DB516F89ED930 /* SOCKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SOCKit.xcconfig; sourceTree = "<group>"; }; - B8C2915B7FBC79D5F729A8D454EC471C /* FBSDKLikeBoxBorderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxBorderView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h; sourceTree = "<group>"; }; - B8D4E64BEFC88B60711EE57C1834C5F8 /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = "<group>"; }; - B921F27786A108BF382F49799F4ECEFE /* FBSDKLikeActionControllerCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionControllerCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m; sourceTree = "<group>"; }; - B95FB2E5D926288C9E55B3572315CEE5 /* PFSQLiteDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabase.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m; sourceTree = "<group>"; }; - B96FAE035A72F2B9E4745AA2941D21DC /* lcl_config_logger_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_logger_RK.h; path = Code/Support/lcl_config_logger_RK.h; sourceTree = "<group>"; }; - B9A3B0127A1E076EFFEE0400BFD1119C /* FBSDKLikeControl+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeControl+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h"; sourceTree = "<group>"; }; - BA219A4F7C2E6E8A63E64A02CF33B649 /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = "<group>"; }; - BA4DA1672A2EE0D0650B35B2EE788AF2 /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h; sourceTree = "<group>"; }; - BA51726FD1AA4091DA126768DFA80EE0 /* BFTask+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BFTask+Private.h"; path = "Parse/Internal/BFTask+Private.h"; sourceTree = "<group>"; }; + 00595F6FB2C45EBEB4850162FFBAFBDA /* RKRouteSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRouteSet.h; path = Code/Network/RKRouteSet.h; sourceTree = "<group>"; }; + 005EDF3610A35FCCB1EC8C406162532C /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = "<group>"; }; + 006EA441F280F24D02FFA3BABCECC824 /* PFURLSessionCommandRunner.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionCommandRunner.m; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.m; sourceTree = "<group>"; }; + 00A6001B9377F35CFA12A27639003F73 /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = "<group>"; }; + 0100E24D37FE9C4A3412983EC266C1C7 /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = "<group>"; }; + 0149B0C82CA899926A01FA591E4710C4 /* PFAnonymousUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils.h; path = Parse/PFAnonymousUtils.h; sourceTree = "<group>"; }; + 01577EF1EEDCE5208D4B8AC6FDC7CC0B /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = "<group>"; }; + 0168088B34D75689673FA7BA85F0B641 /* RestKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RestKit.h; path = Code/RestKit.h; sourceTree = "<group>"; }; + 016FE71D37A737A72140AC6154407A41 /* BFAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink_Internal.h; path = Bolts/iOS/BFAppLink_Internal.h; sourceTree = "<group>"; }; + 01B3303DA64A64E4B58FED1912BEFCDF /* FBSDKShareVideoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m; sourceTree = "<group>"; }; + 01C1843D737F908141E29AADDC66AB8B /* PFOfflineQueryLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryLogic.m; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m; sourceTree = "<group>"; }; + 01EDAA9B73CA1A9B90D5CCD0CE04D58F /* PFSQLiteDatabase_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase_Private.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase_Private.h; sourceTree = "<group>"; }; + 01FB35B0ADE41A152252E1ED0988B17D /* FBSDKShareDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m; sourceTree = "<group>"; }; + 01FEEA6D377107B1A0563028100F1FFD /* RKResponseDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKResponseDescriptor.h; path = Code/Network/RKResponseDescriptor.h; sourceTree = "<group>"; }; + 037FA6D5161E6EA0F72B070763EA805A /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h; sourceTree = "<group>"; }; + 03D900F84420FEA97FC38820C59BB2E6 /* PFInternalUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInternalUtils.m; path = Parse/Internal/PFInternalUtils.m; sourceTree = "<group>"; }; + 03F801D486528ACB735E258BEAE163CE /* PFPropertyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo.m; sourceTree = "<group>"; }; + 047F85BB51947407A2598BD224EF6F03 /* RKObjectRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectRequestOperation.m; path = Code/Network/RKObjectRequestOperation.m; sourceTree = "<group>"; }; + 048FF1F23681E364A43114EA047AB00E /* BFAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkTarget.h; path = Bolts/iOS/BFAppLinkTarget.h; sourceTree = "<group>"; }; + 04FD35F060DAF86D25973ECA13C4B1C6 /* BFURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL.h; path = Bolts/iOS/BFURL.h; sourceTree = "<group>"; }; + 0526EA7D5B6610515F179B3B16E6EDF2 /* PFObjectEstimatedData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectEstimatedData.m; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.m; sourceTree = "<group>"; }; + 05528EC9662F1A87AE94B74D156D8CC0 /* PFFileDataStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileDataStream.h; path = Parse/Internal/File/FileDataStream/PFFileDataStream.h; sourceTree = "<group>"; }; + 0565BEC2CF133E7552070ADB0B6B25C7 /* PFDefaultACLController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDefaultACLController.h; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.h; sourceTree = "<group>"; }; + 057581746F9592678DE1D227AA52EB2D /* PFCommandCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache_Private.h; path = Parse/Internal/PFCommandCache_Private.h; sourceTree = "<group>"; }; + 05A01B956AE10C43AD0F5B2B2B7920BF /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = "<group>"; }; + 05CCBF923371A8F436D56A7223B904D7 /* FBSDKMessengerIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessengerIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h; sourceTree = "<group>"; }; + 05D15859D636D2225F8443617E021DFC /* PFAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAssert.h; path = Parse/Internal/PFAssert.h; sourceTree = "<group>"; }; + 05EF3ADB060D32A9DFF67851EBE647C0 /* RKMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapping.h; path = Code/ObjectMapping/RKMapping.h; sourceTree = "<group>"; }; + 06A4FFC3574F662CBE4301546762B2B0 /* PFFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileState.m; path = Parse/Internal/File/State/PFFileState.m; sourceTree = "<group>"; }; + 0711E2059F93A9DCBD5B583B9A11D2F5 /* libTransitionKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libTransitionKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 080DA549FB3DF87C2D0F356163642618 /* TransitionKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "TransitionKit-prefix.pch"; sourceTree = "<group>"; }; + 0820B0D5F4674F138EA3BB3292D26CD0 /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = "<group>"; }; + 08C17176133A418BBA5506240483F44C /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = "<group>"; }; + 0A3D69E13596F5D45D883E1AE14D9B94 /* PFObjectFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCodingLogic.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.h; sourceTree = "<group>"; }; + 0AAEA066289DB63479C8EA3E37BC7E15 /* FBSDKAccessTokenCacheV3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m; sourceTree = "<group>"; }; + 0ABC3BBED3C3C10F8A825E0751B3A6DB /* PFMutableObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableObjectState.m; path = Parse/Internal/Object/State/PFMutableObjectState.m; sourceTree = "<group>"; }; + 0AE7CF3C4BBBCA9F05072DF89F75C0B3 /* AFPropertyListRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFPropertyListRequestOperation.m; path = AFNetworking/AFPropertyListRequestOperation.m; sourceTree = "<group>"; }; + 0BD4E2FDA8D2C7FF9BEBBCB6D90B725F /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = "<group>"; }; + 0BEED67AEB0626E1D942E397F7BFE7C8 /* PFSessionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionController.h; path = Parse/Internal/Session/Controller/PFSessionController.h; sourceTree = "<group>"; }; + 0C3ADF3356A01C102A78C499D44C195E /* RKTestHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestHelpers.h; path = Code/Testing/RKTestHelpers.h; sourceTree = "<group>"; }; + 0CA2B777015AD911501F34BE9E2A08EB /* FBSDKAccessTokenCacheV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV4.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h; sourceTree = "<group>"; }; + 0CBE41855C229057359338A397CF9CBF /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = "<group>"; }; + 0CE33DAD07C0504380B377D5B4E23F61 /* FBSDKLikeObjectType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeObjectType.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m; sourceTree = "<group>"; }; + 0D5EC58BD4863BEC2A2723C8FA5FE9B0 /* FBSDKLikeBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h; sourceTree = "<group>"; }; + 0E780E029F38CD5DC4D44B959AE7B2CF /* FBSDKAccessTokenCacheV3_21.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_21.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h; sourceTree = "<group>"; }; + 0EF150B806961F2973DC836A0D2A1391 /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = "<group>"; }; + 0F962944E2CEA6B4A8913F2C5BDEB690 /* PFObjectFileCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCoder.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.m; sourceTree = "<group>"; }; + 0FBCAB70FB9A6977DE8D64B963124B26 /* FBSDKBridgeAPICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPICrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h; sourceTree = "<group>"; }; + 0FE8823AC87A2EA7D2BF645AA039E957 /* YALTabBarItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALTabBarItem.h; path = FoldingTabBar/Model/TabBarItem/YALTabBarItem.h; sourceTree = "<group>"; }; + 0FEA53773CB8E3FB3A322C0B4389B7A5 /* PFRelation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelation.m; path = Parse/PFRelation.m; sourceTree = "<group>"; }; + 1019C96E930FDF66BCD79751678FFFF6 /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = "<group>"; }; + 1039AA115A854C64209875E6B8B20ADF /* FBSDKGameRequestContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m; sourceTree = "<group>"; }; + 10761AFEB4163029E0BB84E7271803E8 /* RKMappingErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingErrors.h; path = Code/ObjectMapping/RKMappingErrors.h; sourceTree = "<group>"; }; + 10834806BD7B412BC24F347361FA2C8E /* Pods-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-acknowledgements.plist"; sourceTree = "<group>"; }; + 10A0FDA427EFFCE744C8CB7862407B47 /* PFRESTCloudCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCloudCommand.m; path = Parse/Internal/Commands/PFRESTCloudCommand.m; sourceTree = "<group>"; }; + 10EABBE60B88CF3D2AF469F17208ADE9 /* FBSDKShareOpenGraphContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m; sourceTree = "<group>"; }; + 113F75AFA14F88AEE7BCF0BBB4C858BE /* BFAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkNavigation.m; path = Bolts/iOS/BFAppLinkNavigation.m; sourceTree = "<group>"; }; + 1142FF164E91B0154F7D1B3E3CCD129D /* FBSDKShareKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareKit+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h"; sourceTree = "<group>"; }; + 1154985103CE37155F52D0BFC04340EE /* PFInstallationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationPrivate.h; path = Parse/Internal/Installation/PFInstallationPrivate.h; sourceTree = "<group>"; }; + 11590B62084307FCCBCBCD4CB7D71BA1 /* PFPushController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushController.m; path = Parse/Internal/Push/Controller/PFPushController.m; sourceTree = "<group>"; }; + 117FC8B2ADDE85F697FC85ECF51FD3F3 /* RKMapperOperation_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapperOperation_Private.h; path = Code/ObjectMapping/RKMapperOperation_Private.h; sourceTree = "<group>"; }; + 1231F575BA4305E598781441AF031F5E /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = "<group>"; }; + 128F630995A27DB0544A45BF67DE2E4D /* PFMutableUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableUserState.h; path = Parse/Internal/User/State/PFMutableUserState.h; sourceTree = "<group>"; }; + 12F4038DEE96BCA00C4F13577F8FB019 /* ISO8601DateFormatterValueTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ISO8601DateFormatterValueTransformer.m; path = Code/ISO8601DateFormatterValueTransformer.m; sourceTree = "<group>"; }; + 1300CB87D7929FE78AD13A425DD18939 /* PFSQLiteDatabaseResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseResult.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.m; sourceTree = "<group>"; }; + 1402676BAF69E76E84C7957AD539C134 /* PFUserState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState_Private.h; path = Parse/Internal/User/State/PFUserState_Private.h; sourceTree = "<group>"; }; + 14424EF937E20F708472093A62D7D67B /* RKLumberjackLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKLumberjackLogger.m; path = Code/Support/RKLumberjackLogger.m; sourceTree = "<group>"; }; + 145AAF7E6CD426F5DC9079DD9214733B /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = "<group>"; }; + 146B3C6F4906B1DF01F844DF3C869939 /* PFCurrentInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentInstallationController.h; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.h; sourceTree = "<group>"; }; + 1537B3204A5DD70D808286FE603C4A97 /* RKValueTransformers-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RKValueTransformers-dummy.m"; sourceTree = "<group>"; }; + 15505CAD38B537EF229C41382091B2B7 /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = "<group>"; }; + 1578615981EB295CD3B68AD600652886 /* PFHTTPURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHTTPURLRequestConstructor.m; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.m; sourceTree = "<group>"; }; + 15CCBEB339CF012A7EF123E309124318 /* PFRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState.h; path = Parse/Internal/Relation/State/PFRelationState.h; sourceTree = "<group>"; }; + 16343207944FB07AF9037C8A76C5F7A2 /* PFFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFile.m; path = Parse/PFFile.m; sourceTree = "<group>"; }; + 16621039C0E3312C216165BEF8D567DE /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; + 16AA64D1CEC68C44DEDAD61DAFB42709 /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = "<group>"; }; + 16AACACB54568C35001E53CAB3D7D64B /* RKMIMETypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMIMETypes.m; path = Code/Support/RKMIMETypes.m; sourceTree = "<group>"; }; + 16CCB8BB94AE34725A72A8769F301A7E /* lcl_config_logger_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_logger_RK.h; path = Code/Support/lcl_config_logger_RK.h; sourceTree = "<group>"; }; + 16D6292D8FAE18DC28FF78404DB719D9 /* PFProduct.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProduct.m; path = Parse/PFProduct.m; sourceTree = "<group>"; }; + 16D7414B803B24894CDD90ED3E31C1AB /* BFAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererView.m; path = Bolts/iOS/BFAppLinkReturnToRefererView.m; sourceTree = "<group>"; }; + 170E287A22801514CAF6C2EB522BE4A5 /* PFPropertyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo.h; sourceTree = "<group>"; }; + 173E06370DF9F26EB5591EE929B03D16 /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = "<group>"; }; + 1766F952ED7D24BA1223FECFB809EAEF /* BFExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFExecutor.m; path = Bolts/Common/BFExecutor.m; sourceTree = "<group>"; }; + 1801665BFA99C3E5F261CACB58723B11 /* ObjectMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ObjectMapping.h; path = Code/ObjectMapping.h; sourceTree = "<group>"; }; + 180FF861DE91C6A915DA7C2A92862B35 /* FBSDKLikeControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeControl.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h; sourceTree = "<group>"; }; + 1853537D2954FD958EC042517906C776 /* PFCurrentConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentConfigController.h; path = Parse/Internal/Config/Controller/PFCurrentConfigController.h; sourceTree = "<group>"; }; + 19333F981C770A5CDAFA1A9B6901522C /* PFCommandRunning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunning.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.h; sourceTree = "<group>"; }; + 194BBF93E1D47E864E12261443E6F23F /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = "<group>"; }; + 1960AF182D01226FEBB84BF5AB083402 /* RKMapperOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMapperOperation.m; path = Code/ObjectMapping/RKMapperOperation.m; sourceTree = "<group>"; }; + 19F20D1F4CF5FCB81834DCE24BD63E00 /* FBSDKShareLinkContent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareLinkContent+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h"; sourceTree = "<group>"; }; + 19F270B7BF779B177C75EA8CFAAA76CB /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkNavigation.h; path = Bolts/iOS/BFAppLinkNavigation.h; sourceTree = "<group>"; }; + 1B1D85199C350E1CC77B906C3E4938BF /* BFTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTask.h; path = Bolts/Common/BFTask.h; sourceTree = "<group>"; }; + 1B5B5284F66A4663EFFDE2B8B5E336B1 /* PFCloudCodeController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloudCodeController.h; path = Parse/Internal/CloudCode/PFCloudCodeController.h; sourceTree = "<group>"; }; + 1B632D115A665AE3E0A0F24A1BF865D7 /* FBSDKAppInviteDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m; sourceTree = "<group>"; }; + 1B9DF380862F77749D695F3104231B01 /* PFRESTAnalyticsCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTAnalyticsCommand.h; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.h; sourceTree = "<group>"; }; + 1C1EBD8327430E9BC4CE07572302C3B1 /* PFObjectController_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController_Private.h; path = Parse/Internal/Object/Controller/PFObjectController_Private.h; sourceTree = "<group>"; }; + 1CB585E247C1F3D47072B64F704F03B7 /* PFAnonymousAuthenticationProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousAuthenticationProvider.m; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.m; sourceTree = "<group>"; }; + 1CB99487DF93544382D4E7BB83E98DDE /* PFFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile.h; path = Parse/PFFile.h; sourceTree = "<group>"; }; + 1D3E68B1FF2DD23DBAFF7854AD495337 /* PFObjectLocalIdStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectLocalIdStore.m; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.m; sourceTree = "<group>"; }; + 1D8C0D8749CEE57E58CE3B5262781F8C /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = "<group>"; }; + 1E2286118EDD86F67D14DA0213725FB6 /* FBSDKAppInviteContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m; sourceTree = "<group>"; }; + 1E3783F1A59CCE93EEF653593AFAD5B5 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CoreLocation.framework; sourceTree = DEVELOPER_DIR; }; + 1EC4B2DFF792D6E7C2B1939641ED637C /* FBSDKSystemAccountStoreAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSystemAccountStoreAdapter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m; sourceTree = "<group>"; }; + 1F2B2346710518F3D818A44A68F02C5F /* PFRESTSessionCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTSessionCommand.h; path = Parse/Internal/Commands/PFRESTSessionCommand.h; sourceTree = "<group>"; }; + 1F5232ABD627549C1BEDB8630661C661 /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m; sourceTree = "<group>"; }; + 1F6776613E173DE4D99A1473A4C0B7A3 /* RKObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectUtilities.h; path = Code/ObjectMapping/RKObjectUtilities.h; sourceTree = "<group>"; }; + 1FDC2AC9DD87123DFCCB762335374C3D /* SOCKit.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SOCKit.m; sourceTree = "<group>"; }; + 202A67338938E6682685B9114E8F7E4D /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = "<group>"; }; + 2041D4CFC252E37771FDA0674BAC5493 /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = "<group>"; }; + 20476D5BF51291A996A02F8B096F7768 /* PFRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelationState.m; path = Parse/Internal/Relation/State/PFRelationState.m; sourceTree = "<group>"; }; + 204E788B570A793109481294415D9F28 /* PFPush.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPush.m; path = Parse/PFPush.m; sourceTree = "<group>"; }; + 211357AA873E1EF8383B30C370BE0F87 /* PFRESTObjectCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectCommand.h; path = Parse/Internal/Commands/PFRESTObjectCommand.h; sourceTree = "<group>"; }; + 212312E37823B602015F8558E2380BE5 /* PFInstallation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallation.m; path = Parse/PFInstallation.m; sourceTree = "<group>"; }; + 21378AD860758D2EA2336B59DC09BB68 /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h; sourceTree = "<group>"; }; + 213CA7050878B04AD0B0FEEFDE26FC3E /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = "<group>"; }; + 21AB5F2776814B493AE224A090442A49 /* PFApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFApplication.h; path = Parse/Internal/PFApplication.h; sourceTree = "<group>"; }; + 230215250F2BC4E1CCBB87F678DC507C /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m; sourceTree = "<group>"; }; + 2353E605872B5C10ED350AF2720B1ADC /* PFDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDecoder.h; path = Parse/Internal/PFDecoder.h; sourceTree = "<group>"; }; + 23A9DA06DB5F829FD8BDD6FD23E82A45 /* PFMutableQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableQueryState.m; path = Parse/Internal/Query/State/PFMutableQueryState.m; sourceTree = "<group>"; }; + 23F8033FB2A702EC958A60D0DEF98AC8 /* RKRequestDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRequestDescriptor.m; path = Code/Network/RKRequestDescriptor.m; sourceTree = "<group>"; }; + 24019153F5EA642D0DE4B7AA9C56FE37 /* PFAnonymousUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousUtils.m; path = Parse/PFAnonymousUtils.m; sourceTree = "<group>"; }; + 245A8375DA02518A0D28196BA09BB15F /* PFFile_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile_Private.h; path = Parse/Internal/File/PFFile_Private.h; sourceTree = "<group>"; }; + 246B31118F4482AFD1E5B6FBDDEE6EB2 /* ParseManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseManager.m; path = Parse/Internal/ParseManager.m; sourceTree = "<group>"; }; + 247CE7F46CACB36C92D0EF9B3F9FB9FF /* FBSDKGameRequestDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m; sourceTree = "<group>"; }; + 24D7D9AD22022709F66EBFB6726D41E5 /* ISO8601DateFormatterValueTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ISO8601DateFormatterValueTransformer.h; path = Code/ISO8601DateFormatterValueTransformer.h; sourceTree = "<group>"; }; + 2562632730FD0A59722B3C67E9C6C38E /* FBSDKLoginConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginConstants.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m; sourceTree = "<group>"; }; + 262AAA5A94DB64464A971372C0A5C98D /* FBSDKLikeActionControllerCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionControllerCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h; sourceTree = "<group>"; }; + 2694414E286680557D8AF8B1F6B64112 /* PFInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationController.m; path = Parse/Internal/Installation/Controller/PFInstallationController.m; sourceTree = "<group>"; }; + 271C2DE3C7E7DE81A83712AE674A962A /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = "<group>"; }; + 272643F56613CA0D336AE3DBF19DC404 /* Pods-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-dummy.m"; sourceTree = "<group>"; }; + 2739B66EFCA7F40FAF75E4F39A6A9A7E /* PFCommandRunningConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunningConstants.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h; sourceTree = "<group>"; }; + 27B39579BA1A116F78E9C52D8518C9D8 /* PFFileStagingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileStagingController.m; path = Parse/Internal/File/Controller/PFFileStagingController.m; sourceTree = "<group>"; }; + 288890641419271C571594FA0568909D /* BFMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFMeasurementEvent.m; path = Bolts/iOS/BFMeasurementEvent.m; sourceTree = "<group>"; }; + 28C24077DDE26572ABFDFFBA58AEF0D2 /* FBSDKBoltsMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBoltsMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h; sourceTree = "<group>"; }; + 2903E773C725846E7E37922E881B5B52 /* PFConfig_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig_Private.h; path = Parse/Internal/Config/PFConfig_Private.h; sourceTree = "<group>"; }; + 29076EEBE727F01C11336FE621EEA957 /* PFAnonymousAuthenticationProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousAuthenticationProvider.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.h; sourceTree = "<group>"; }; + 29545B0051D4759CE30F62B98CE37FCB /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = "<group>"; }; + 2965F8E850F9EB3EA40B7FDBC0F6924E /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = "<group>"; }; + 2982D008CF0D29BDC45EE799823CC219 /* PFProductsRequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProductsRequestHandler.m; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.m; sourceTree = "<group>"; }; + 2994AAC8F7BD43FAA64FEED836452945 /* PFMutableRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableRelationState.m; path = Parse/Internal/Relation/State/PFMutableRelationState.m; sourceTree = "<group>"; }; + 29C1E470BE7725D82BB96486CEBA6B7A /* PFObjectFilePersistenceController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFilePersistenceController.h; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.h; sourceTree = "<group>"; }; + 29EEBBE595CAF744AD4307424F577DFD /* PFRESTCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCommand.m; path = Parse/Internal/Commands/PFRESTCommand.m; sourceTree = "<group>"; }; + 2A5B85D86C64A90A0CF498813B504388 /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = "<group>"; }; + 2A73024D1555D614CEC62670F070F5A9 /* BFCancellationTokenSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenSource.m; path = Bolts/Common/BFCancellationTokenSource.m; sourceTree = "<group>"; }; + 2AC4D864890FF57910E0C3F3ACE458D5 /* BFCancellationTokenSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenSource.h; path = Bolts/Common/BFCancellationTokenSource.h; sourceTree = "<group>"; }; + 2ADCEFE17BDF4D7075F5F77EB703339A /* RKDotNetDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDotNetDateFormatter.m; path = Code/Support/RKDotNetDateFormatter.m; sourceTree = "<group>"; }; + 2AE60E42A7DAEEDEA8449020B959B680 /* AFHTTPClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPClient.m; path = AFNetworking/AFHTTPClient.m; sourceTree = "<group>"; }; + 2B9F9B80CBA1DEAEF33627D58AB7E3CE /* YALFoldingTabBarController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALFoldingTabBarController.m; path = FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.m; sourceTree = "<group>"; }; + 2BDB55E9C39EE72564DF58E4922A0879 /* TKTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKTransition.h; path = Code/TKTransition.h; sourceTree = "<group>"; }; + 2C197AC911176562F9C82890218D2927 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 2CA213D7D985D157E1F5FE2776AE93F4 /* Parse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Parse.m; path = Parse/Parse.m; sourceTree = "<group>"; }; + 2CCDD526B69067FC32BF946A540F4C00 /* PFCoreManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreManager.h; path = Parse/Internal/PFCoreManager.h; sourceTree = "<group>"; }; + 2CCE2187DD9A71F1848E14301ED5B204 /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = "<group>"; }; + 2D0CD43CC78F18A69B36021FD018147B /* ISO8601DateFormatterValueTransformer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ISO8601DateFormatterValueTransformer-dummy.m"; sourceTree = "<group>"; }; + 2D639B8AB8EC8DD751AE4F019F908401 /* TransitionKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TransitionKit.h; path = Code/TransitionKit.h; sourceTree = "<group>"; }; + 2DA1030B666DF215688696A02F383A6B /* PFQueryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryUtilities.m; path = Parse/Internal/Query/Utilities/PFQueryUtilities.m; sourceTree = "<group>"; }; + 2DE00A9C031141A57AB8312D1DEF51E8 /* PFPushUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushUtilities.h; path = Parse/Internal/Push/Utilites/PFPushUtilities.h; sourceTree = "<group>"; }; + 2DF6012AC3FEDDC30928DC38FC317836 /* RKPropertyInspector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyInspector.h; path = Code/ObjectMapping/RKPropertyInspector.h; sourceTree = "<group>"; }; + 2E10976A217E52C40572C15A1627BDD2 /* RKTestHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestHelpers.m; path = Code/Testing/RKTestHelpers.m; sourceTree = "<group>"; }; + 2E3AF7DFDFAF8657D842E11B07B72C49 /* PFSQLiteStatement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteStatement.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.m; sourceTree = "<group>"; }; + 2E491204CD2D880B645C351FE76C1780 /* PFDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDataProvider.h; path = Parse/Internal/PFDataProvider.h; sourceTree = "<group>"; }; + 2FB830A71452CCDB67D2616730944824 /* PFFieldOperationDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperationDecoder.h; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.h; sourceTree = "<group>"; }; + 2FD6AC1526EDBB971021943756B7A67D /* RKErrorMessage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKErrorMessage.h; path = Code/ObjectMapping/RKErrorMessage.h; sourceTree = "<group>"; }; + 2FF16FB1B2249D1B7C33F0B28BE8FB32 /* FBSDKLoginKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginKit+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h"; sourceTree = "<group>"; }; + 3055B7B57931D87F7E1D076B3EACD5FB /* Parse-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Parse-prefix.pch"; sourceTree = "<group>"; }; + 305C1B44A7F7E61553779E2EFAA7E6E5 /* RKObjectParameterization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectParameterization.h; path = Code/Network/RKObjectParameterization.h; sourceTree = "<group>"; }; + 307A4292CDEB528BBF94D77971EA42D8 /* RKRouteSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRouteSet.m; path = Code/Network/RKRouteSet.m; sourceTree = "<group>"; }; + 30CDD959414B1BB05D9C7CC06B1A1DB9 /* PFConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfigController.h; path = Parse/Internal/Config/Controller/PFConfigController.h; sourceTree = "<group>"; }; + 310DAE7B650CE093469515EB7385030B /* TKEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKEvent.h; path = Code/TKEvent.h; sourceTree = "<group>"; }; + 310FB096BFCEB1B13B424CBD45CFD485 /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = "<group>"; }; + 3110767D99127E63D027AD02ABECB5CC /* YALAnimatingTabBarConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALAnimatingTabBarConstants.m; path = FoldingTabBar/Constants/YALAnimatingTabBarConstants.m; sourceTree = "<group>"; }; + 31A4AD66C6637BF2C615D2A5ACFDFB97 /* RKMappingOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingOperation.h; path = Code/ObjectMapping/RKMappingOperation.h; sourceTree = "<group>"; }; + 321F060F2EAD3712AE8975662D9AE049 /* Parse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse.h; path = Parse/Parse.h; sourceTree = "<group>"; }; + 326B318804906FA458A65108849C0F78 /* FBSDKShareVideoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h; sourceTree = "<group>"; }; + 32D23F94B2A86BE0E61787BC2DB18576 /* PFURLSessionDataTaskDelegate_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate_Private.h; sourceTree = "<group>"; }; + 32D2CB4155B7B88153C547AB13333269 /* RKOperationStateMachine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKOperationStateMachine.m; path = Code/Support/RKOperationStateMachine.m; sourceTree = "<group>"; }; + 333FAC024F4389EAD8F3D15D9F29C1D8 /* PFURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSession.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.m; sourceTree = "<group>"; }; + 33BA0D4863A03D1948F483CFE7EA4EAB /* PFMutableACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableACLState.m; path = Parse/Internal/ACL/State/PFMutableACLState.m; sourceTree = "<group>"; }; + 33D211F268ABCC6126E0AA222AEFB496 /* RKObjectMappingMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMappingMatcher.h; path = Code/ObjectMapping/RKObjectMappingMatcher.h; sourceTree = "<group>"; }; + 33EB14F8B74929AAF1B17B2931B6AF30 /* PFKeyValueCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeyValueCache.m; path = Parse/Internal/KeyValueCache/PFKeyValueCache.m; sourceTree = "<group>"; }; + 347915ED2D892D50E616DA8EACB44960 /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = "<group>"; }; + 354D71ECE03FF896929A5DF65F72CA5D /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = "<group>"; }; + 357EF8470BF313B33261C55EB4D12327 /* FBSDKShareKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareKit.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h; sourceTree = "<group>"; }; + 35A723AF4E93A1BD6805BE7CABE6E033 /* PFPush.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPush.h; path = Parse/PFPush.h; sourceTree = "<group>"; }; + 35B3E5E386C38B964CF695D9AB977807 /* FBSDKSharePhoto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhoto.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m; sourceTree = "<group>"; }; + 35C47D77D154C6ACEBD15C0FA61A163F /* PFInstallationConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationConstants.m; path = Parse/Internal/Installation/Constants/PFInstallationConstants.m; sourceTree = "<group>"; }; + 35DC0FA9CFA673AEF41AF09AA45DFD4B /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = "<group>"; }; + 362C1D10E572107214CEFE116A4A3E9C /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = "<group>"; }; + 363A2C942125F80203914292454D9AA9 /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = "<group>"; }; + 3678FC88ECC9E598059E5183A37EDEE1 /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = "<group>"; }; + 36F6F2D4FA38537FEE30DC609BE6E066 /* PFKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeychainStore.h; path = Parse/Internal/PFKeychainStore.h; sourceTree = "<group>"; }; + 37287465895B3FA00A50FD0231EC03C2 /* RKResponseDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKResponseDescriptor.m; path = Code/Network/RKResponseDescriptor.m; sourceTree = "<group>"; }; + 373C4D681FFCFABB37EFA7C0EDB3C9E2 /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = "<group>"; }; + 37AC900D11C191E04655F282A675E5E0 /* FBSDKURLConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h; sourceTree = "<group>"; }; + 37DB56D75062CC75FCB0966E1C6E8A8E /* Pods-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-acknowledgements.markdown"; sourceTree = "<group>"; }; + 3849FCCD9604B569E0277015CC30071D /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; + 38716A9E624A2682EE064BB7A4E4B034 /* RKManagedObjectRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKManagedObjectRequestOperation.m; path = Code/Network/RKManagedObjectRequestOperation.m; sourceTree = "<group>"; }; + 389CEDD0DDA1F1BB4ACF1258BBC1A500 /* FoldingTabBar.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FoldingTabBar.xcconfig; sourceTree = "<group>"; }; + 3AC646B2CF1A54F8852DB65ABDB82D96 /* FBSDKShareButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m; sourceTree = "<group>"; }; + 3ACF71F0DC4813EA623149F93F528587 /* CAAnimation+YALTabBarViewAnimations.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CAAnimation+YALTabBarViewAnimations.h"; path = "FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.h"; sourceTree = "<group>"; }; + 3B34569D99B799FF8A6F749B10CCA86B /* PFObjectBatchController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectBatchController.m; path = Parse/Internal/Object/BatchController/PFObjectBatchController.m; sourceTree = "<group>"; }; + 3B388397746D26347C7AE282AEB53D77 /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m; sourceTree = "<group>"; }; + 3B79F3FA1E8F365CB494021D4EF3A3C1 /* FBSDKCheckmarkIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCheckmarkIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h; sourceTree = "<group>"; }; + 3BF1F39539444FAA093EACF74048A6D6 /* FBSDKLikeDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeDialog.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h; sourceTree = "<group>"; }; + 3BFC75DE2FA5676B4D6C11BB9AA254E8 /* lcl_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_RK.h; path = Vendor/LibComponentLogging/Core/lcl_RK.h; sourceTree = "<group>"; }; + 3C400573A5C886A59A391F89D0812135 /* PFSessionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionUtilities.h; path = Parse/Internal/Session/Utilities/PFSessionUtilities.h; sourceTree = "<group>"; }; + 3D1A4EB19150431EC20AA5717EFD6B46 /* FBSDKShareDialogMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialogMode.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h; sourceTree = "<group>"; }; + 3D5D2BA73D92C41B2C18785A9F6A34F3 /* PFPushPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushPrivate.h; path = Parse/Internal/Push/PFPushPrivate.h; sourceTree = "<group>"; }; + 3E592A12CBAE13CEF22ACF96543534AE /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = "<group>"; }; + 3EF30CD48D59FE6544E248C632E1B4F7 /* PFOfflineObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineObjectController.m; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m; sourceTree = "<group>"; }; + 3EF647DA4D46882EAC603DA80B15C546 /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = "<group>"; }; + 3FD3D595219E68629445A5326DAF89B0 /* PFGeoPointPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPointPrivate.h; path = Parse/Internal/PFGeoPointPrivate.h; sourceTree = "<group>"; }; + 3FD9787D3AC0A8EBB5A37E3E888F8DE4 /* PFACLState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState_Private.h; path = Parse/Internal/ACL/State/PFACLState_Private.h; sourceTree = "<group>"; }; + 40C7C5CFB4E466FFB010AF6A0FD9D026 /* PFRelation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelation.h; path = Parse/PFRelation.h; sourceTree = "<group>"; }; + 40FE4E083CC5C40D0DF65A6B08724A1A /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = "<group>"; }; + 412828DEC5B3F3C978D90B000561AC08 /* RestKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RestKit.xcconfig; sourceTree = "<group>"; }; + 4143EF2889DC7708FBFDFB6EB6F7F78C /* PFCommandResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandResult.h; path = Parse/Internal/PFCommandResult.h; sourceTree = "<group>"; }; + 4151DE560D48FE6B06CCFA7940B94CC5 /* PFPropertyInfo_Runtime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo_Runtime.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.m; sourceTree = "<group>"; }; + 420484544B85996994118EC3B407FE6F /* RKObjectMappingOperationDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMappingOperationDataSource.m; path = Code/ObjectMapping/RKObjectMappingOperationDataSource.m; sourceTree = "<group>"; }; + 421972FDDA0AE2550E0FB8F3DF8B6CB1 /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m; sourceTree = "<group>"; }; + 421AA4D00B6B66524A46DC0728150287 /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = "<group>"; }; + 424AE54B9E9D6A204E25E68A391EAC5C /* libRestKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRestKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 425C02C4E4B038FDE445DA322EF3113E /* PFCloud.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloud.h; path = Parse/PFCloud.h; sourceTree = "<group>"; }; + 42BFA9A32C67074761C10AC36BF1CA3D /* FBSDKLoginUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginUtility.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m; sourceTree = "<group>"; }; + 42E3420B261FCAE88A3371F0158DAA2A /* RKTestConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestConstants.m; path = Code/Testing/RKTestConstants.m; sourceTree = "<group>"; }; + 4313BE461C6D0AB4AEFF645FBD735809 /* ISO8601DateFormatterValueTransformer.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ISO8601DateFormatterValueTransformer.xcconfig; sourceTree = "<group>"; }; + 432FAA5FD944A3CEB95D300D82A29D11 /* FBSDKLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m; sourceTree = "<group>"; }; + 4332383098D7379489F2E1CF7653D948 /* PFPinningEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningEventuallyQueue.h; path = Parse/Internal/PFPinningEventuallyQueue.h; sourceTree = "<group>"; }; + 4395A73F86029763A96B4A9BDB9051CF /* PFPurchase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchase.m; path = Parse/PFPurchase.m; sourceTree = "<group>"; }; + 4429585279C58269AAE37EC7814214BD /* FBSDKGameRequestFrictionlessRecipientCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestFrictionlessRecipientCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m; sourceTree = "<group>"; }; + 442FE8495BC41626A686B84CE00354C4 /* PFBase64Encoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBase64Encoder.h; path = Parse/Internal/PFBase64Encoder.h; sourceTree = "<group>"; }; + 4483EB7CE5A6261A9164976F9D35F986 /* PFSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSession.m; path = Parse/PFSession.m; sourceTree = "<group>"; }; + 44FCD8E48AE2854E6C68B55DE899278F /* PFPaymentTransactionObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPaymentTransactionObserver.m; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.m; sourceTree = "<group>"; }; + 4523E95A8F9A0D756D54DFC5E768BAEB /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = "<group>"; }; + 4570CED15A9C16289C4D098BADB4988B /* PFUserAuthenticationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationDelegate.h; path = Parse/PFUserAuthenticationDelegate.h; sourceTree = "<group>"; }; + 45756A25BE2E60F2173BFFCAE8E9BABB /* PFSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession_Private.h; path = Parse/Internal/Session/PFSession_Private.h; sourceTree = "<group>"; }; + 457EA6762682C1C676C5980F65593923 /* AFImageRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageRequestOperation.m; path = AFNetworking/AFImageRequestOperation.m; sourceTree = "<group>"; }; + 45E3175265DC81EF149FA06BB4EA951B /* FBSDKShareError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareError.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m; sourceTree = "<group>"; }; + 462B2CA402744EDC499ADDCECB7402D4 /* FBSDKSharing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharing.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h; sourceTree = "<group>"; }; + 46326E5CA01311B8CBC725FB12585BCE /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = "<group>"; }; + 4662A7DF03B449C11ACAB6A82AA6CD0B /* PFPushChannelsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushChannelsController.h; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.h; sourceTree = "<group>"; }; + 466349270C59C68B7BB457BF69B9ABCE /* PFAnonymousUtils_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils_Private.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousUtils_Private.h; sourceTree = "<group>"; }; + 468E01C4FC5A39A8E37ECC56F44B8F65 /* FBSDKShareVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideo.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h; sourceTree = "<group>"; }; + 468F4C50CD145E1DB145B2A3D109CC5F /* PFObjectBatchController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectBatchController.h; path = Parse/Internal/Object/BatchController/PFObjectBatchController.h; sourceTree = "<group>"; }; + 46EE1DE5D0F0015F4E7C0AE4FC9D85F6 /* RKPropertyMappingTestExpectation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyMappingTestExpectation.h; path = Code/Testing/RKPropertyMappingTestExpectation.h; sourceTree = "<group>"; }; + 4720A959FBF253E6C8315EC7BE3FFEBC /* FBSDKShareOpenGraphAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphAction.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m; sourceTree = "<group>"; }; + 47CEE063B791E2A75D02580633A5F373 /* RKPropertyMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyMapping.m; path = Code/ObjectMapping/RKPropertyMapping.m; sourceTree = "<group>"; }; + 4805B0DB126DE968E42BAEA762A89F17 /* PFInstallation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallation.h; path = Parse/PFInstallation.h; sourceTree = "<group>"; }; + 486A8EBF63F7D80E6BB3BF1ACD672CFD /* FBSDKAccessTokenCacheV4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV4.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m; sourceTree = "<group>"; }; + 48B1E6D7D071B0E0ED3F61BA546629E4 /* PFMutableRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableRelationState.h; path = Parse/Internal/Relation/State/PFMutableRelationState.h; sourceTree = "<group>"; }; + 48CE51C08D38E74BB9D873799C3B56FF /* PFTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFTaskQueue.m; path = Parse/Internal/PFTaskQueue.m; sourceTree = "<group>"; }; + 48DF0E6F580F2A50C94F659383B45C1D /* PFMutableObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableObjectState.h; path = Parse/Internal/Object/State/PFMutableObjectState.h; sourceTree = "<group>"; }; + 491C07A26268A25977860299C1B04D2C /* RKMappingTest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingTest.h; path = Code/Testing/RKMappingTest.h; sourceTree = "<group>"; }; + 4961DA34D602A21B6849256EB53A724D /* PFGeoPoint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPoint.h; path = Parse/PFGeoPoint.h; sourceTree = "<group>"; }; + 4966479D5117182D9BB2405C57BF9E48 /* RKObjectRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectRequestOperation.h; path = Code/Network/RKObjectRequestOperation.h; sourceTree = "<group>"; }; + 497BCC491078BD10E998532399FBE356 /* Bolts-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Bolts-dummy.m"; sourceTree = "<group>"; }; + 49A809ECA636BA098C492E0709054E30 /* PFLocationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLocationManager.h; path = Parse/Internal/PFLocationManager.h; sourceTree = "<group>"; }; + 4A0F68606B3345FA797272EDF32783FC /* PFLocationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLocationManager.m; path = Parse/Internal/PFLocationManager.m; sourceTree = "<group>"; }; + 4A801218C457ACD0660511E41F3A3A30 /* PFJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFJSONSerialization.m; path = Parse/Internal/PFJSONSerialization.m; sourceTree = "<group>"; }; + 4B163E967FEAF0C769D85F0A3A1EEB95 /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFWebViewAppLinkResolver.m; path = Bolts/iOS/BFWebViewAppLinkResolver.m; sourceTree = "<group>"; }; + 4BBD6BD031241526C280059BD26BDE75 /* PFPushController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushController.h; path = Parse/Internal/Push/Controller/PFPushController.h; sourceTree = "<group>"; }; + 4BE43B9E9A14869E0D43BEAF29841B34 /* PFObjectFileCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCoder.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.h; sourceTree = "<group>"; }; + 4C500DF14994F5DF82D1C7A4F1B29EE4 /* PFSQLiteDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.h; sourceTree = "<group>"; }; + 4C773E3706A4438E1751AB41F39EB030 /* FBSDKLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h; sourceTree = "<group>"; }; + 4CB18FECF07D424856DF25DEFEAE675C /* PFUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserController.m; path = Parse/Internal/User/Controller/PFUserController.m; sourceTree = "<group>"; }; + 4D74AE7682B21EDC5FA135CD84A526CF /* PFRESTQueryCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTQueryCommand.h; path = Parse/Internal/Commands/PFRESTQueryCommand.h; sourceTree = "<group>"; }; + 4D8A4BBD034C037A44B441447EDBD2AC /* RKDictionaryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDictionaryUtilities.m; path = Code/Support/RKDictionaryUtilities.m; sourceTree = "<group>"; }; + 4DA381E5D6515F0A9C84527EF815CA28 /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = "<group>"; }; + 4DA39AA231A2BC6DEF831A837F406512 /* FBSDKSendButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSendButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m; sourceTree = "<group>"; }; + 4DC05CB9225FAFC12C400FAE32AD0626 /* RKErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKErrors.h; path = Code/Support/RKErrors.h; sourceTree = "<group>"; }; + 4E2D4FECA8A777A6DD1410FCFBA85EBA /* FBSDKGameRequestContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h; sourceTree = "<group>"; }; + 4E762F23EC34ED4A6FF3312D84E33A40 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.debug.xcconfig; sourceTree = "<group>"; }; + 4E8EC5CFE550AB9001C39619CF9FB4D4 /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = "<group>"; }; + 4E91BE2BF2B6ED7524B651D0202AC4E0 /* PFACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACLState.m; path = Parse/Internal/ACL/State/PFACLState.m; sourceTree = "<group>"; }; + 4E992BA048F5DF79A1CDCA82157BFEB8 /* PFObject+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFObject+Subclass.h"; path = "Parse/PFObject+Subclass.h"; sourceTree = "<group>"; }; + 4F583CC3B015B36C3E3144C08D893552 /* PFHTTPRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPRequest.h; path = Parse/Internal/HTTPRequest/PFHTTPRequest.h; sourceTree = "<group>"; }; + 4F8BEA71B93C60E891B29C80177AEC59 /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = "<group>"; }; + 4FDE8A1A301D0824B588F44EE25B4664 /* AFHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPRequestOperation.m; path = AFNetworking/AFHTTPRequestOperation.m; sourceTree = "<group>"; }; + 504CFD03CAFDA04600823DA3FA4724B7 /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = "<group>"; }; + 5077028CC903E90AEB2806C8A93C10A6 /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = "<group>"; }; + 519BAD12C8F4201D74BDD8453AE47655 /* PFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFNetworkActivityIndicatorManager.m; path = Parse/PFNetworkActivityIndicatorManager.m; sourceTree = "<group>"; }; + 520D88E4BD209071CB865B64DEB08BD3 /* PFAsyncTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAsyncTaskQueue.m; path = Parse/Internal/PFAsyncTaskQueue.m; sourceTree = "<group>"; }; + 52249F35F2B3F990A6B5460810409C13 /* FBSDKAppGroupAddDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupAddDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m; sourceTree = "<group>"; }; + 52CB9F69B642A0B3EAB1EA3DD8F5BCB9 /* PFCommandCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandCache.m; path = Parse/Internal/PFCommandCache.m; sourceTree = "<group>"; }; + 52CF96E683AFDF73C07731C7ADDADC31 /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = "<group>"; }; + 52FB1857E533909822A211A7F21E7067 /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent_Internal.h; path = Bolts/iOS/BFMeasurementEvent_Internal.h; sourceTree = "<group>"; }; + 53750007AA7392F76DBC9237B62429C9 /* RKValueTransformers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKValueTransformers.m; path = Code/RKValueTransformers.m; sourceTree = "<group>"; }; + 53E751950C87EEEFB70685CD518122A2 /* PFPushUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushUtilities.m; path = Parse/Internal/Push/Utilites/PFPushUtilities.m; sourceTree = "<group>"; }; + 542741718F1B59CF684D8D7D5EE9E4C8 /* RKHTTPUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKHTTPUtilities.m; path = Code/ObjectMapping/RKHTTPUtilities.m; sourceTree = "<group>"; }; + 54343AE2C02ECF5E183700CB786869CB /* libFBSDKLoginKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKLoginKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 5454AEF03510A2D84BEA0194B430C57D /* BFAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLink.m; path = Bolts/iOS/BFAppLink.m; sourceTree = "<group>"; }; + 54A2B00522521F43E6925FCB7040FA7A /* PFFileStagingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileStagingController.h; path = Parse/Internal/File/Controller/PFFileStagingController.h; sourceTree = "<group>"; }; + 54BA28BB9CDEB01C1E6CE26A23783B3F /* libAFNetworking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAFNetworking.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 55E3CD1BDE0CFAD0C13FAED8BEF08B52 /* PFRelationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationPrivate.h; path = Parse/Internal/Relation/PFRelationPrivate.h; sourceTree = "<group>"; }; + 55F180B6F1337B63280EF7EE6FE6C2AC /* RKRoute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRoute.m; path = Code/Network/RKRoute.m; sourceTree = "<group>"; }; + 560B96C78B0C4903D500B1084F59BB7C /* YALSpringAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALSpringAnimation.h; path = FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.h; sourceTree = "<group>"; }; + 568923D709EECAD0783955444A4654F9 /* FBSDKAppInviteContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h; sourceTree = "<group>"; }; + 56A325AA32060E16C9CED99F16E65FDE /* PFObjectPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectPrivate.h; path = Parse/Internal/Object/PFObjectPrivate.h; sourceTree = "<group>"; }; + 56DD3B16A2FA69C880D705EC37C05584 /* PFURLSessionJSONDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionJSONDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m; sourceTree = "<group>"; }; + 572AFF6ED4416D1D697F241FDD4DA3FE /* FBSDKLikeObjectType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeObjectType.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h; sourceTree = "<group>"; }; + 57595B2EC946AD2720F477BBF1C1693B /* PFInstallationConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationConstants.h; path = Parse/Internal/Installation/Constants/PFInstallationConstants.h; sourceTree = "<group>"; }; + 57703EB1DCEB28A69BCC450CD2F4302B /* PFURLSessionUploadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionUploadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.h; sourceTree = "<group>"; }; + 57F9B8722311F2DE9BFA34CD3DCA5DB9 /* BFAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink.h; path = Bolts/iOS/BFAppLink.h; sourceTree = "<group>"; }; + 581431A48237CC104D54A0C2870FDF20 /* CAAnimation+YALTabBarViewAnimations.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CAAnimation+YALTabBarViewAnimations.m"; path = "FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.m"; sourceTree = "<group>"; }; + 582FD07A79653DAE823A3A00F9AAB825 /* PFOfflineQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryController.m; path = Parse/Internal/Query/Controller/PFOfflineQueryController.m; sourceTree = "<group>"; }; + 586A6FCD3982EF14DD7688A9C35821A8 /* PFInstallationIdentifierStore_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore_Private.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore_Private.h; sourceTree = "<group>"; }; + 589A686D162F058AE68A85DC19762E4E /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTaskCompletionSource.m; path = Bolts/Common/BFTaskCompletionSource.m; sourceTree = "<group>"; }; + 58EB40198CF6F7F4E677035D64534FDA /* RKURLEncodedSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKURLEncodedSerialization.m; path = Code/Support/RKURLEncodedSerialization.m; sourceTree = "<group>"; }; + 58EC4DACF873F5F93A5E6D16A993CFB8 /* PFUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserState.m; path = Parse/Internal/User/State/PFUserState.m; sourceTree = "<group>"; }; + 58F9FC465CA00C27492735D604B485D3 /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = "<group>"; }; + 5924FEF18CC5E1704FD384C65A5F55D9 /* PFNetworkCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkCommand.h; path = Parse/Internal/PFNetworkCommand.h; sourceTree = "<group>"; }; + 59A54DFF04E955ECF7F946017F365A27 /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = "<group>"; }; + 5A03339B789E2FC72FB9CCFE5665A0C3 /* RKObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectUtilities.m; path = Code/ObjectMapping/RKObjectUtilities.m; sourceTree = "<group>"; }; + 5AD39F0020472100496314600E65AF2D /* RKStringTokenizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKStringTokenizer.h; path = Code/Support/RKStringTokenizer.h; sourceTree = "<group>"; }; + 5AEE4D8F9683C8D1ACEF10CAF4E41A9C /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h; sourceTree = "<group>"; }; + 5B0743AD2B57375BCF911269DBE91815 /* _FBSDKLoginRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKLoginRecoveryAttempter.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h; sourceTree = "<group>"; }; + 5B43B4FF57FBEA73DE52BF4AEAD1F36C /* RKMappingOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingOperation.m; path = Code/ObjectMapping/RKMappingOperation.m; sourceTree = "<group>"; }; + 5B53B46467C6E67E66194FAC567CA3CE /* PFURLSessionUploadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionUploadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.m; sourceTree = "<group>"; }; + 5BBAC5D8DBA7BF3C8638920782DCB03D /* RKManagedObjectRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKManagedObjectRequestOperation.h; path = Code/Network/RKManagedObjectRequestOperation.h; sourceTree = "<group>"; }; + 5C0999643940462D0D4D365C743346CF /* PFSessionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionController.m; path = Parse/Internal/Session/Controller/PFSessionController.m; sourceTree = "<group>"; }; + 5C28405D1D8221A23C8D5CC2C7FFE4BD /* PFQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryState.m; path = Parse/Internal/Query/State/PFQueryState.m; sourceTree = "<group>"; }; + 5D0CF790970A7CBA811F918B49965546 /* FBSDKShareConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareConstants.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m; sourceTree = "<group>"; }; + 5D1BEC4F5C959A0F3A590C62FFFAED54 /* PFUserPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserPrivate.h; path = Parse/Internal/User/PFUserPrivate.h; sourceTree = "<group>"; }; + 5D7F94B3DFD758F1C5AED31B6286D251 /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = "<group>"; }; + 5E36BFDAADCD9869360BFDBB5DC7919A /* PFMutableUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableUserState.m; path = Parse/Internal/User/State/PFMutableUserState.m; sourceTree = "<group>"; }; + 5E3D6F638163E7F25D3C3782B2DD5E9D /* PFRESTPushCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTPushCommand.h; path = Parse/Internal/Commands/PFRESTPushCommand.h; sourceTree = "<group>"; }; + 5E44DF993841344E4915FFD31A91D4EC /* FBSDKLikeDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeDialog.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m; sourceTree = "<group>"; }; + 5EAF198C3A7ADA68D4CEE15D8F5409E8 /* Network.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Network.h; path = Code/Network.h; sourceTree = "<group>"; }; + 5EC412AF8C018680357347F65018B124 /* PFRole.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRole.m; path = Parse/PFRole.m; sourceTree = "<group>"; }; + 5F0A4B0C3848A8B587EDD0F613FFC91B /* PFThreadsafety.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFThreadsafety.h; path = Parse/Internal/ThreadSafety/PFThreadsafety.h; sourceTree = "<group>"; }; + 5FB90FC608DB5150B3A5D742A227198E /* PFDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDecoder.m; path = Parse/Internal/PFDecoder.m; sourceTree = "<group>"; }; + 60496328DA2C2D4EF5E4E2C9933AACD9 /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m; sourceTree = "<group>"; }; + 60B2A3058DFFA81A2091F7C428415666 /* FBSDKLikeButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m; sourceTree = "<group>"; }; + 60C56926A1A601A3101BC398EFC92298 /* FBSDKLikeBoxView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m; sourceTree = "<group>"; }; + 60F0D5F81E5A0E8F5FFDC41567CCE3CF /* PFURLSessionDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.m; sourceTree = "<group>"; }; + 610383C50F7E8C3E94C191A91D507693 /* PFURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.h; sourceTree = "<group>"; }; + 6114EBA3A5CB7CB8ECE0A9BEFA6DB026 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; + 6175C27DAC5A50D940DB696AE83B785D /* PFObjectFilePersistenceController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFilePersistenceController.m; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.m; sourceTree = "<group>"; }; + 6194460804426F0A4B172D48D43424F3 /* PFURLSessionFileDownloadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionFileDownloadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.h; sourceTree = "<group>"; }; + 621694B9B8F4062ECD717CB818281308 /* PFRESTPushCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTPushCommand.m; path = Parse/Internal/Commands/PFRESTPushCommand.m; sourceTree = "<group>"; }; + 62A64EB7D48743BA4492B0267BB0BC95 /* BFURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFURL.m; path = Bolts/iOS/BFURL.m; sourceTree = "<group>"; }; + 62B1C84DAFBA62E9315595E2052A8728 /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 633C2A9E54BC58AA24FD4CB18067F314 /* FBSDKShareAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareAPI.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m; sourceTree = "<group>"; }; + 637A71462456BAA98EBD75DD2B6141C7 /* PFPropertyInfo_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Private.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Private.h; sourceTree = "<group>"; }; + 63BFA7CA55559EBDA4EFE89AE77C1E67 /* FBSDKShareDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDefines.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h; sourceTree = "<group>"; }; + 63D635232970F5FD839031F4052A247F /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = "<group>"; }; + 640B12F7182C4EF36510C06BF87ACDD7 /* RKHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKHTTPRequestOperation.h; path = Code/Network/RKHTTPRequestOperation.h; sourceTree = "<group>"; }; + 6447323ED6AD2EC1483AA3C66091EE93 /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h; sourceTree = "<group>"; }; + 646C67B4157CB47C91F3D55E7BFA577C /* PFAnalyticsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsController.h; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.h; sourceTree = "<group>"; }; + 64BCD63E238F4FF3CD5D95CE6BF75584 /* PFRESTCloudCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCloudCommand.h; path = Parse/Internal/Commands/PFRESTCloudCommand.h; sourceTree = "<group>"; }; + 64C153FEAD3A0694849A9B9865BF597E /* PFCommandRunning.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunning.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.m; sourceTree = "<group>"; }; + 64D0D3AB1BF1748F064867B7CE0DB23B /* FBSDKShareLinkContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareLinkContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m; sourceTree = "<group>"; }; + 650251D49165102AF10424F8FE6CFF26 /* PFURLSessionDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.h; sourceTree = "<group>"; }; + 6530D1C36D6D2481926600B02A05B330 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "AFNetworking/UIImageView+AFNetworking.h"; sourceTree = "<group>"; }; + 653B2C591481812B2FB9DCA0C314CA21 /* PFMutableACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableACLState.h; path = Parse/Internal/ACL/State/PFMutableACLState.h; sourceTree = "<group>"; }; + 656A6050B3AB59B9F95CC2C4394EC1D7 /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = "<group>"; }; + 65911DEF87A9DDCA7864D750D03DCF2A /* FBSDKLikeButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h; sourceTree = "<group>"; }; + 659D341D4BAADD4339DB44AC00772E9F /* _FBSDKLoginRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKLoginRecoveryAttempter.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m; sourceTree = "<group>"; }; + 664DB729E26FCE7792E743269AA1D35F /* FBSDKCheckmarkIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCheckmarkIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m; sourceTree = "<group>"; }; + 6699EE8CE193D5123B3CF8DC8EFC4CA1 /* YALFoldingTabBar.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALFoldingTabBar.m; path = FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.m; sourceTree = "<group>"; }; + 66FDB0B731FFB4CE1465D2BF7FDCD263 /* YALSpringAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALSpringAnimation.m; path = FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.m; sourceTree = "<group>"; }; + 6802B9BFD996D3B878D450B785AC2060 /* FBSDKShareOpenGraphContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h; sourceTree = "<group>"; }; + 68655B40F89C27D89D53892FD3930D30 /* PFMulticastDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMulticastDelegate.m; path = Parse/Internal/PFMulticastDelegate.m; sourceTree = "<group>"; }; + 68A024759390FB7405C04F198DD88301 /* RKPathUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPathUtilities.h; path = Code/Support/RKPathUtilities.h; sourceTree = "<group>"; }; + 68C02417550547218FA95151404F94A5 /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = "<group>"; }; + 6911BECA35E7518D864239B7E898EEF3 /* Pods-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-frameworks.sh"; sourceTree = "<group>"; }; + 69532310DA9419CB7D0183940081C37D /* PFWeakValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFWeakValue.m; path = Parse/Internal/PFWeakValue.m; sourceTree = "<group>"; }; + 697AC4B193E7B1C3AAB92E30576C70EB /* PFSessionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionUtilities.m; path = Parse/Internal/Session/Utilities/PFSessionUtilities.m; sourceTree = "<group>"; }; + 697F8C874C7CA2299F6F34AF16B60BA4 /* PFFileState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState_Private.h; path = Parse/Internal/File/State/PFFileState_Private.h; sourceTree = "<group>"; }; + 698C95FE97ED8FCE0AF17A04C769ACD7 /* PFQueryState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState_Private.h; path = Parse/Internal/Query/State/PFQueryState_Private.h; sourceTree = "<group>"; }; + 69FCCBED66F1FD4D49A5DF14367CB3F6 /* PFFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileManager.h; path = Parse/Internal/PFFileManager.h; sourceTree = "<group>"; }; + 6A0D078B3F700A4B5BC98F3B41F44FDC /* PFACL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACL.h; path = Parse/PFACL.h; sourceTree = "<group>"; }; + 6A4AD6C82C6BD994B92B71460DABC8FC /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "AFNetworking/UIImageView+AFNetworking.m"; sourceTree = "<group>"; }; + 6A92D4243C0F137302709F07AA614754 /* CATransaction+TransactionWithAnimationsAndCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CATransaction+TransactionWithAnimationsAndCompletion.h"; path = "FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.h"; sourceTree = "<group>"; }; + 6AB27F170175D24AE67E7FE4DE679D4B /* TransitionKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = TransitionKit.xcconfig; sourceTree = "<group>"; }; + 6B6718A558812C369FEAEEE13F58304E /* Bolts.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bolts.xcconfig; sourceTree = "<group>"; }; + 6BCE676F39C259B6C0BF1690EB5DBE25 /* FBSDKLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h; sourceTree = "<group>"; }; + 6C1AC18847E2EFD352913578BFCE568F /* PFRESTQueryCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTQueryCommand.m; path = Parse/Internal/Commands/PFRESTQueryCommand.m; sourceTree = "<group>"; }; + 6CAE8C5DA18BB8CA4DD074A31BA648D2 /* YALFoldingTabBarController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALFoldingTabBarController.h; path = FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.h; sourceTree = "<group>"; }; + 6D53FE7781D3C1C29653F7E97CD587C6 /* RKObjectMappingMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMappingMatcher.m; path = Code/ObjectMapping/RKObjectMappingMatcher.m; sourceTree = "<group>"; }; + 6D550D3103B9BC03C2B3CFD252981DA2 /* PFUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserController.h; path = Parse/Internal/User/Controller/PFUserController.h; sourceTree = "<group>"; }; + 6DE5893A62D5A2BB957C613ACF80A5D8 /* FBSDKCoreKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKCoreKit-prefix.pch"; sourceTree = "<group>"; }; + 6F8DF2C96C207C665982A18CF849D6AF /* PFRESTObjectBatchCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectBatchCommand.m; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.m; sourceTree = "<group>"; }; + 702E8ADADAF9B688368323A9218E6461 /* FBSDKLoginManagerLoginResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManagerLoginResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h"; sourceTree = "<group>"; }; + 703806AC44DC3DAA0B029C076D84918C /* FBSDKLoginTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h; sourceTree = "<group>"; }; + 7085A58614F89184F48256983144E2A4 /* PFObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObject.m; path = Parse/PFObject.m; sourceTree = "<group>"; }; + 708E2A05386B4566A5D2D2BC686ACF19 /* YALTabBarInteracting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALTabBarInteracting.h; path = FoldingTabBar/Protocol/TabBarInteracting/YALTabBarInteracting.h; sourceTree = "<group>"; }; + 70A2C6CE14776F9B578042E6CC7C2126 /* RKDotNetDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDotNetDateFormatter.h; path = Code/Support/RKDotNetDateFormatter.h; sourceTree = "<group>"; }; + 70AED028A0517D0D287C17C074D896DC /* PFBaseState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBaseState.h; path = Parse/Internal/PFBaseState.h; sourceTree = "<group>"; }; + 70CE433A9DEB32F93FB37B35D6987006 /* PFObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectUtilities.h; path = Parse/Internal/Object/Utilities/PFObjectUtilities.h; sourceTree = "<group>"; }; + 71197DCFE9C806E6F574A696BE01DFA8 /* FBSDKSharePhotoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhotoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m; sourceTree = "<group>"; }; + 71C1EF327C1FCABF7C18FBE944C3E96B /* FBSDKLikeActionControllerCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionControllerCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m; sourceTree = "<group>"; }; + 71C2E7C3225F1C71AB7801BD548C40BF /* RKMappingResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingResult.m; path = Code/ObjectMapping/RKMappingResult.m; sourceTree = "<group>"; }; + 72320D3C2B4F77715F2449CF313C8A0F /* BFExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFExecutor.h; path = Bolts/Common/BFExecutor.h; sourceTree = "<group>"; }; + 72B7D073C442C0EC9D3D4650B7CE4F23 /* PFUserConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserConstants.m; path = Parse/Internal/User/Constants/PFUserConstants.m; sourceTree = "<group>"; }; + 72E01F510DB4DF12750DF5F0ED31E9CE /* RKDynamicMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDynamicMapping.m; path = Code/ObjectMapping/RKDynamicMapping.m; sourceTree = "<group>"; }; + 731BCFC9FA06980186D87DFACC655FFE /* FBSDKBridgeAPICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPICrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m; sourceTree = "<group>"; }; + 733D51F628A8649F5A0790296BA3E42A /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; + 7358191BB91547CAE16F05DBDB1BE31D /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = "<group>"; }; + 73A197191DE75F22F95C4B3C2E31527B /* PFDefaultACLController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDefaultACLController.m; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.m; sourceTree = "<group>"; }; + 73ADD1CAE6F397CC4738B0967E78B570 /* RKPathUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPathUtilities.m; path = Code/Support/RKPathUtilities.m; sourceTree = "<group>"; }; + 74462B5EFF7650ED4744047E928DA11C /* FBSDKMessageDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessageDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m; sourceTree = "<group>"; }; + 74ED9759C7FE5F4ED33138ACAA88C82F /* PFRESTObjectBatchCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectBatchCommand.h; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.h; sourceTree = "<group>"; }; + 74F217FA9548DBD823F25F1DA863850B /* FBSDKShareOpenGraphAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphAction.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h; sourceTree = "<group>"; }; + 7528F8DFCEB5328922BCA59B0054A221 /* RKLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKLog.m; path = Code/Support/RKLog.m; sourceTree = "<group>"; }; + 75495EC377930B0233AFC77A4D61575F /* CATransaction+TransactionWithAnimationsAndCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CATransaction+TransactionWithAnimationsAndCompletion.m"; path = "FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.m"; sourceTree = "<group>"; }; + 75C40E2C04EF1F38C17C8E45D198B60E /* PFEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue.h; path = Parse/Internal/PFEventuallyQueue.h; sourceTree = "<group>"; }; + 75FD15A68FD0466D803569EEB9CEBBAD /* FBSDKLikeControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeControl.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m; sourceTree = "<group>"; }; + 76268C1A5595073CBD957E1BD34F8AEE /* PFEventuallyPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyPin.m; path = Parse/Internal/PFEventuallyPin.m; sourceTree = "<group>"; }; + 7677707275A2EF60830F578201163529 /* PFMutableFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableFileState.h; path = Parse/Internal/File/State/PFMutableFileState.h; sourceTree = "<group>"; }; + 768A924021D993B1CF8F4AA7BD2A0B5A /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = "<group>"; }; + 76C5BB7D9A288AE9D8A835E210188D21 /* AFPropertyListRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFPropertyListRequestOperation.h; path = AFNetworking/AFPropertyListRequestOperation.h; sourceTree = "<group>"; }; + 76F892C34CC6406B1AB6E24B09138F86 /* FBSDKShareVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideo.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m; sourceTree = "<group>"; }; + 773BC40E82A6994ABB953BECE34B7AA4 /* PFMultiProcessFileLockController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLockController.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.m; sourceTree = "<group>"; }; + 783A3E8CD34175B563A9C12AA16DE8BD /* PFObjectConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectConstants.h; path = Parse/Internal/Object/Constants/PFObjectConstants.h; sourceTree = "<group>"; }; + 78A46E6623C4E1A7D565B7AC5751DE2C /* RKValueTransformers.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RKValueTransformers.xcconfig; sourceTree = "<group>"; }; + 78A8CA3DC6231EBEE1E0835C4B5FCE5E /* RKDynamicMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDynamicMapping.h; path = Code/ObjectMapping/RKDynamicMapping.h; sourceTree = "<group>"; }; + 78AFC5613D6C0DB29F522A49E3BA144F /* TKEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKEvent.m; path = Code/TKEvent.m; sourceTree = "<group>"; }; + 78CD59E0BD6F1DE92BCA187E736EF6BE /* RKObjectParameterization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectParameterization.m; path = Code/Network/RKObjectParameterization.m; sourceTree = "<group>"; }; + 7937DE6BBA72253E75BE2C99AD624094 /* RKMappingResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingResult.h; path = Code/ObjectMapping/RKMappingResult.h; sourceTree = "<group>"; }; + 7963D53D53339137B7E1A3AB0F520174 /* PFAnalyticsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsController.m; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.m; sourceTree = "<group>"; }; + 79791F337B75C7A9E86B2C16831BA3B4 /* PFPinningEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningEventuallyQueue.m; path = Parse/Internal/PFPinningEventuallyQueue.m; sourceTree = "<group>"; }; + 7A18E97231CDD5F751206CDE84F4B9BC /* RKMIMETypeSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMIMETypeSerialization.h; path = Code/Support/RKMIMETypeSerialization.h; sourceTree = "<group>"; }; + 7A1B02F9DF967F2FFEC317D614A2136F /* PFRESTObjectCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectCommand.m; path = Parse/Internal/Commands/PFRESTObjectCommand.m; sourceTree = "<group>"; }; + 7ABE21AAB21F6820C93F75F77BA84A8C /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = "<group>"; }; + 7AC84CF788A165593B670BC7F8133D15 /* FBSDKAccessTokenCacheV3_17.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_17.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h; sourceTree = "<group>"; }; + 7AD43C7473FB3333A13A263F3DED7A13 /* PFObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController.h; path = Parse/Internal/Object/Controller/PFObjectController.h; sourceTree = "<group>"; }; + 7B0AE93D99549D7F950DBDC8C99044A2 /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = "<group>"; }; + 7B240507A5F5C3ACC7EDDA9A36CAEFEE /* PFRESTFileCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTFileCommand.m; path = Parse/Internal/Commands/PFRESTFileCommand.m; sourceTree = "<group>"; }; + 7C12288DE642EF37C6B63C07FF664190 /* FBSDKLikeActionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionController.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h; sourceTree = "<group>"; }; + 7C605E7C0D2766C324CD9DAAE8BC0DCB /* PFEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyQueue.m; path = Parse/Internal/PFEventuallyQueue.m; sourceTree = "<group>"; }; + 7CB666E8346B15C56F87F1C89B253C80 /* PFCoreManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCoreManager.m; path = Parse/Internal/PFCoreManager.m; sourceTree = "<group>"; }; + 7D1C86B95A8E3810D8B07D2319B3FF71 /* FBSDKLoginUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginUtility.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h; sourceTree = "<group>"; }; + 7DAC1FC2CA2D2B4A01038D5148555190 /* PFAnalyticsUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsUtilities.h; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.h; sourceTree = "<group>"; }; + 7E54575097CC4D7273F152CBCC1DE9FB /* FBSDKShareKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKShareKit.xcconfig; sourceTree = "<group>"; }; + 7E7A521656E2772319D441042C5D6FBB /* BFTask+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BFTask+Private.h"; path = "Parse/Internal/BFTask+Private.h"; sourceTree = "<group>"; }; + 7F0B1E9EBA20A4C290F0895CD4B960C0 /* RKMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMapping.m; path = Code/ObjectMapping/RKMapping.m; sourceTree = "<group>"; }; + 7F5A634097C8C984304065334CBF5BCB /* AFJSONRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFJSONRequestOperation.h; path = AFNetworking/AFJSONRequestOperation.h; sourceTree = "<group>"; }; + 7F9AF6687FB731435E4D8A667BC21448 /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = "<group>"; }; + 7FEED7FB2327B849D9B3FB01D3E04329 /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = "<group>"; }; + 80215F89C91F2E95ADA9D8D5F5443FD6 /* PFCategoryLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCategoryLoader.h; path = Parse/Internal/PFCategoryLoader.h; sourceTree = "<group>"; }; + 812F56D962057B55B97DA7C2E81454B8 /* PFRESTUserCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTUserCommand.h; path = Parse/Internal/Commands/PFRESTUserCommand.h; sourceTree = "<group>"; }; + 817BE16BBDE06E00A285E8DEA40C2A92 /* PFAsyncTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAsyncTaskQueue.h; path = Parse/Internal/PFAsyncTaskQueue.h; sourceTree = "<group>"; }; + 81A5DB14272C6EBC7DA612E0D8FBD00A /* FBSDKLikeButton+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeButton+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h"; sourceTree = "<group>"; }; + 81E97AE375AD2C365E560E20CFA6DD4A /* FBSDKAccessTokenCacheV3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h; sourceTree = "<group>"; }; + 821E516878F8F964D6941FE6C2AEB04D /* YALFoldingTabBar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALFoldingTabBar.h; path = FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.h; sourceTree = "<group>"; }; + 8286A9C555581B1077CACA650C967E59 /* RKObjectManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectManager.m; path = Code/Network/RKObjectManager.m; sourceTree = "<group>"; }; + 82B067532E3BF3282258482B488C6D65 /* AFURLConnectionOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLConnectionOperation.h; path = AFNetworking/AFURLConnectionOperation.h; sourceTree = "<group>"; }; + 836DD34AA9FD86CA7B162C11FF60F67C /* RKConnectionTestExpectation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKConnectionTestExpectation.h; path = Code/Testing/RKConnectionTestExpectation.h; sourceTree = "<group>"; }; + 837C54D3D72E985D6E6FF3BBEA8D1EF1 /* PFConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfigController.m; path = Parse/Internal/Config/Controller/PFConfigController.m; sourceTree = "<group>"; }; + 83B82BD0C23C3508B8C4235B574CB5CE /* RKStringTokenizer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKStringTokenizer.m; path = Code/Support/RKStringTokenizer.m; sourceTree = "<group>"; }; + 83C232075A2AC8C59594FDDD1D494936 /* SOCKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SOCKit-dummy.m"; sourceTree = "<group>"; }; + 83DE73D13A43E32C92686B974DE323D3 /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = "<group>"; }; + 83EAF6F3D84D5233748529A8E8CB094D /* FBSDKLikeBoxBorderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxBorderView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h; sourceTree = "<group>"; }; + 8470CA3B7EA842B7D1BE44214C739AF0 /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = "<group>"; }; + 84AD6D354E9C8F6B153ED2A34AC28FAC /* libParse.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libParse.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 84DE8F6C85087D8851CE8C93EF867DCD /* PFMutablePushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutablePushState.h; path = Parse/Internal/Push/State/PFMutablePushState.h; sourceTree = "<group>"; }; + 85005E81A14B03A9ADDF308A1C17B784 /* RKObjectMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMapping.m; path = Code/ObjectMapping/RKObjectMapping.m; sourceTree = "<group>"; }; + 856D46D1E0A3157D00390C58BC8DA218 /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = "<group>"; }; + 8582EC197D28F9D94A384B032F5B2C58 /* PFSQLiteStatement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteStatement.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.h; sourceTree = "<group>"; }; + 85A9C0088D1A20CD6084587FE37E8706 /* FBSDKAppGroupAddDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupAddDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h; sourceTree = "<group>"; }; + 860438E9D197650BC7168E76CA8F76E1 /* PFMutableQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableQueryState.h; path = Parse/Internal/Query/State/PFMutableQueryState.h; sourceTree = "<group>"; }; + 862487394328F3BC868EBBAC32F7D1AA /* PFFieldOperationDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperationDecoder.m; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.m; sourceTree = "<group>"; }; + 8626A096D5442B8137154A62B0ADD414 /* PFUserFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserFileCodingLogic.h; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.h; sourceTree = "<group>"; }; + 86C52238DDC9FA7C9DCD49852E0DFE88 /* PFObjectConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectConstants.m; path = Parse/Internal/Object/Constants/PFObjectConstants.m; sourceTree = "<group>"; }; + 86E31A2D9DD96916FA15693B655848D1 /* RKRelationshipMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRelationshipMapping.h; path = Code/ObjectMapping/RKRelationshipMapping.h; sourceTree = "<group>"; }; + 8714E7D607BECB036F81715B5C27F0ED /* lcl_config_extensions_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_extensions_RK.h; path = Code/Support/lcl_config_extensions_RK.h; sourceTree = "<group>"; }; + 8780D2FFBC1992D6FDA23E5A3A81CF1E /* PFPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPin.h; path = Parse/Internal/LocalDataStore/Pin/PFPin.h; sourceTree = "<group>"; }; + 878B0AD059EDF719C2B350F1235F0A90 /* PFRESTCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand.h; path = Parse/Internal/Commands/PFRESTCommand.h; sourceTree = "<group>"; }; + 878D09AB47A4BDD9D340540825C9E015 /* FBSDKAppGroupContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h; sourceTree = "<group>"; }; + 87943BFB7F1004CFB75603B28BBF3C4A /* PFHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHash.m; path = Parse/Internal/PFHash.m; sourceTree = "<group>"; }; + 87CD736E8B954F15E500CE7D55A80EE1 /* ISO8601DateFormatterValueTransformer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ISO8601DateFormatterValueTransformer-prefix.pch"; sourceTree = "<group>"; }; + 880D8A88A7684A55315EDE4547F17390 /* PFThreadsafety.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFThreadsafety.m; path = Parse/Internal/ThreadSafety/PFThreadsafety.m; sourceTree = "<group>"; }; + 8867D68940B55D23D0E9719E275BFA8B /* PFObjectLocalIdStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectLocalIdStore.h; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h; sourceTree = "<group>"; }; + 88F4DDD745B9F0253403AF9B24C6F051 /* RKErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKErrors.m; path = Code/Support/RKErrors.m; sourceTree = "<group>"; }; + 89638686460135E581F100965DB593A4 /* AFJSONRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFJSONRequestOperation.m; path = AFNetworking/AFJSONRequestOperation.m; sourceTree = "<group>"; }; + 8A3F94D10D8725691A1ABC86A1405D5C /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = "<group>"; }; + 8B012D386ED7D06A4EF5353DAB2DD66D /* AFHTTPClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPClient.h; path = AFNetworking/AFHTTPClient.h; sourceTree = "<group>"; }; + 8B25D2830AB2AF5C858A10271039E131 /* PFPushChannelsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushChannelsController.m; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.m; sourceTree = "<group>"; }; + 8B270479704A7D09440A3A5A8C04C228 /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = "<group>"; }; + 8B3F27BBC16C6C75FB3E5345F12F61A9 /* FBSDKSharePhotoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhotoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h; sourceTree = "<group>"; }; + 8B465E244D44A3BE904CFF8C4A48E701 /* PFURLConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLConstructor.m; path = Parse/Internal/HTTPRequest/PFURLConstructor.m; sourceTree = "<group>"; }; + 8BAA0C25C337D44ADABB547C00BFE0D1 /* RestKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RestKit-dummy.m"; sourceTree = "<group>"; }; + 8BDEF7A52E57E764142D42EE5DB63FD2 /* Parse_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse_Private.h; path = Parse/Internal/Parse_Private.h; sourceTree = "<group>"; }; + 8C081A1F7DD370C044B7D5118E27A38F /* PFRESTConfigCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTConfigCommand.m; path = Parse/Internal/Commands/PFRESTConfigCommand.m; sourceTree = "<group>"; }; + 8C5315150FD5B5F202952CF7B1140BA5 /* Parse-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Parse-dummy.m"; sourceTree = "<group>"; }; + 8CA0240612F45CA8F80CC4045A3C4C7E /* PFHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHash.h; path = Parse/Internal/PFHash.h; sourceTree = "<group>"; }; + 8CA5367E50A1A62A594A47FAA506499D /* FBSDKSharingContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h; sourceTree = "<group>"; }; + 8D05A09C1E9B8D6D162D9DBC753EA922 /* PFCommandCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache.h; path = Parse/Internal/PFCommandCache.h; sourceTree = "<group>"; }; + 8D3C1AE934C5238738DBEBC420E58024 /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = "<group>"; }; + 8D4A5E0FFDBB5F59ACC2A7671E2EE4ED /* AFXMLRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFXMLRequestOperation.h; path = AFNetworking/AFXMLRequestOperation.h; sourceTree = "<group>"; }; + 8D68B95DF6CEEFD1E9A5D0DBEE6B89D8 /* RKRequestDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRequestDescriptor.h; path = Code/Network/RKRequestDescriptor.h; sourceTree = "<group>"; }; + 8D9CA35ABDD2925A9EF401DDDFDF3DEA /* PFObjectSubclassInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassInfo.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.m; sourceTree = "<group>"; }; + 8DC92D832BC4F98CB9CDF7D7A7B176F3 /* PFQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryController.m; path = Parse/Internal/Query/Controller/PFQueryController.m; sourceTree = "<group>"; }; + 8E2A6616C4F11E50D862C39BA82A0764 /* PFObjectSubclassingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassingController.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.h; sourceTree = "<group>"; }; + 8F17239611A3B8B424D42FCD9B529DA9 /* RKPropertyMappingTestExpectation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyMappingTestExpectation.m; path = Code/Testing/RKPropertyMappingTestExpectation.m; sourceTree = "<group>"; }; + 902CDE40ABBA4BCA68994F6995BEE047 /* SOCKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SOCKit-prefix.pch"; sourceTree = "<group>"; }; + 90BC9D720C96091D799BE399435389DA /* PFFieldOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperation.h; path = Parse/Internal/FieldOperation/PFFieldOperation.h; sourceTree = "<group>"; }; + 90EEFECBB8ABE95AB2BD379AE1A08389 /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m; sourceTree = "<group>"; }; + 91029F40DE711320BF2AA3DF5F22A51C /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = "<group>"; }; + 9151CBFA951CC2C02B03C255F48BDFEE /* PFAnalyticsUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsUtilities.m; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.m; sourceTree = "<group>"; }; + 9171C157C53514711AFD5FF984F31433 /* PFHTTPURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPURLRequestConstructor.h; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.h; sourceTree = "<group>"; }; + 9193281C25815834A39FE54B319DD33D /* PFConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConstants.h; path = Parse/PFConstants.h; sourceTree = "<group>"; }; + 91E000C46BBB39E5ED5C9A8FEC95F0CB /* YALTabBarItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALTabBarItem.m; path = FoldingTabBar/Model/TabBarItem/YALTabBarItem.m; sourceTree = "<group>"; }; + 91E3599579258E326AC94189503BED96 /* libFBSDKShareKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKShareKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 92A46B5132CB11500CEFCB4DA5AF636C /* PFRESTFileCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTFileCommand.h; path = Parse/Internal/Commands/PFRESTFileCommand.h; sourceTree = "<group>"; }; + 931878F83D6F6F825E3F681B771690B9 /* PFURLSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession_Private.h; sourceTree = "<group>"; }; + 9404F58DCEDDFD27D11EDC156DE41058 /* RKRouter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRouter.m; path = Code/Network/RKRouter.m; sourceTree = "<group>"; }; + 94115F4D46CF02AFA9A9A36A9D041A73 /* PFBase64Encoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBase64Encoder.m; path = Parse/Internal/PFBase64Encoder.m; sourceTree = "<group>"; }; + 94212D75F6067FFA601083EF41CC441A /* ParseManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseManager.h; path = Parse/Internal/ParseManager.h; sourceTree = "<group>"; }; + 942F4435C4E5B28ACF4995C1B58BC460 /* FBSDKLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m; sourceTree = "<group>"; }; + 943C0E46DB3D37D67FFBB0E81F8082D7 /* FBSDKLikeActionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionController.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m; sourceTree = "<group>"; }; + 948C70E84F724FF8F752385A5BD920DF /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h; sourceTree = "<group>"; }; + 94AC9DE3CACB9F94683FD063FBB0D29B /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = "<group>"; }; + 95418B78D785BACFEAFC48B338DE9AF4 /* PFCloudCodeController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloudCodeController.m; path = Parse/Internal/CloudCode/PFCloudCodeController.m; sourceTree = "<group>"; }; + 9568A44CB835524C00AA887038D28A2D /* PFReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFReachability.m; path = Parse/Internal/PFReachability.m; sourceTree = "<group>"; }; + 95E86A54E3D8EFC5EAD2463D4E89A3CF /* PFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkActivityIndicatorManager.h; path = Parse/PFNetworkActivityIndicatorManager.h; sourceTree = "<group>"; }; + 95FB0DA8AF871D7246C122EF20326E70 /* PFRESTConfigCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTConfigCommand.h; path = Parse/Internal/Commands/PFRESTConfigCommand.h; sourceTree = "<group>"; }; + 9671F1EB06ECFCB5039E830159A8B807 /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = "<group>"; }; + 96725FE5D9936FFB88E9EF3C7354C6BF /* PFOperationSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOperationSet.m; path = Parse/Internal/Object/OperationSet/PFOperationSet.m; sourceTree = "<group>"; }; + 9687B38FD53EC72E99246120219AFE41 /* PFAlertView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAlertView.m; path = Parse/Internal/PFAlertView.m; sourceTree = "<group>"; }; + 96AA4B508FBFE9971F929FB061B14436 /* FBSDKGameRequestDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h; sourceTree = "<group>"; }; + 96B789CF6E62B4AFFE38A3E4538927DA /* FBSDKSharingButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h; sourceTree = "<group>"; }; + 96D3047DA13118A3FB60F3DBE4812F52 /* RKPropertyMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyMapping.h; path = Code/ObjectMapping/RKPropertyMapping.h; sourceTree = "<group>"; }; + 96D93EAF0FCC8B5FBB56E2E9C45F9D62 /* TKState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKState.h; path = Code/TKState.h; sourceTree = "<group>"; }; + 979F775694C8742A140AFEFE090CA61A /* RKAttributeMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKAttributeMapping.h; path = Code/ObjectMapping/RKAttributeMapping.h; sourceTree = "<group>"; }; + 9826CDA12FAA5BC9CEF003E172733136 /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m; sourceTree = "<group>"; }; + 985870310481EAF6D1AAD21D98000C42 /* PFLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogging.h; path = Parse/Internal/PFLogging.h; sourceTree = "<group>"; }; + 9892ACF2D0CAC9B9021724C9C93ABD4C /* PFQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQuery.m; path = Parse/PFQuery.m; sourceTree = "<group>"; }; + 98C98CDFB3F20F2925F6CD1F141BB14F /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.release.xcconfig; sourceTree = "<group>"; }; + 99448AE40302A804BCEE91E92302B14D /* FBSDKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h; sourceTree = "<group>"; }; + 9957AA65319B89D5DD0424050D460948 /* RKTestFixture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestFixture.m; path = Code/Testing/RKTestFixture.m; sourceTree = "<group>"; }; + 99FE93E37D759F30B7B5B5162DEB3D20 /* PFPushState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState_Private.h; path = Parse/Internal/Push/State/PFPushState_Private.h; sourceTree = "<group>"; }; + 9A7EE25D0A40F414D480899041A5E485 /* PFInternalUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInternalUtils.h; path = Parse/Internal/PFInternalUtils.h; sourceTree = "<group>"; }; + 9A8BB3FBFEE9E1BDDB295037754F4DEF /* FBSDKAppGroupJoinDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupJoinDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h; sourceTree = "<group>"; }; + 9B40691DF0E6BC33074AC41A275DB164 /* FBSDKLoginKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKLoginKit.xcconfig; sourceTree = "<group>"; }; + 9B484974193BA8A4646BC070D4C0BBE7 /* PFPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPin.m; path = Parse/Internal/LocalDataStore/Pin/PFPin.m; sourceTree = "<group>"; }; + 9BA62A8E667CE97DE59304A1724EC97B /* FBSDKBoltsMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBoltsMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m; sourceTree = "<group>"; }; + 9C2BCF9C99AEDE045D2BBFA1DF8CC208 /* libISO8601DateFormatterValueTransformer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libISO8601DateFormatterValueTransformer.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 9CAF4B15DDC52D849508A1E602814624 /* Bolts-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Bolts-prefix.pch"; sourceTree = "<group>"; }; + 9CC97C072FD18D2A4B73F527FCCF25A7 /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = "<group>"; }; + 9CE1ACDB733D2C97F7C82EA9FB83836C /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = "<group>"; }; + 9D3D98875600AB165C66C65D6E15E83A /* PFFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileManager.m; path = Parse/Internal/PFFileManager.m; sourceTree = "<group>"; }; + 9D485AE7D7829E5043DA9B3788867222 /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = "<group>"; }; + 9D65511E82CA8F7BA0B1D3A4D488BA84 /* PFObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectController.m; path = Parse/Internal/Object/Controller/PFObjectController.m; sourceTree = "<group>"; }; + 9D7D839938133223C5D03CF7E035527E /* RKISO8601DateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKISO8601DateFormatter.m; path = Code/RKISO8601DateFormatter.m; sourceTree = "<group>"; }; + 9DC5F129D162F601A2EB31F819BCC00D /* Parse.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Parse.xcconfig; sourceTree = "<group>"; }; + 9E2A5D66F6C75C8A872ECD3D71937EBB /* RKTestFixture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestFixture.h; path = Code/Testing/RKTestFixture.h; sourceTree = "<group>"; }; + 9E3A50746719F1DF8EA234DC24662F0A /* lcl_RK.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = lcl_RK.m; path = Vendor/LibComponentLogging/Core/lcl_RK.m; sourceTree = "<group>"; }; + 9E43B3049BD47C0D7F0EE422E4818AC6 /* FBSDKLikeButtonPopWAV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButtonPopWAV.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m; sourceTree = "<group>"; }; + 9E63031380A944E9403D3B32AD1E27D4 /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = "<group>"; }; + 9E6629CCD335C17E0B583B60896F6F5D /* PFCurrentUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentUserController.h; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.h; sourceTree = "<group>"; }; + 9EF9E7E124CF7FEC59917A8A59D36C9D /* PFUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUser.h; path = Parse/PFUser.h; sourceTree = "<group>"; }; + 9F0161219DC8EBD1C3D61015979852A6 /* PFUserConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserConstants.h; path = Parse/Internal/User/Constants/PFUserConstants.h; sourceTree = "<group>"; }; + 9F25D79A6D9350DE097436ED2E549BE1 /* PFAnalytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics.h; path = Parse/PFAnalytics.h; sourceTree = "<group>"; }; + 9F4B289AAAE3CB636116D0E2F1741DAD /* PFErrorUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFErrorUtilities.h; path = Parse/Internal/PFErrorUtilities.h; sourceTree = "<group>"; }; + 9F676232AD2D4E768D123E3880A987ED /* FBSDKShareConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareConstants.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h; sourceTree = "<group>"; }; + A0078CE9F7F7BB672D734ECE689D766B /* PFCommandURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandURLRequestConstructor.m; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.m; sourceTree = "<group>"; }; + A066A1261BC2B943A2C58454D8594E4C /* RKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMacros.h; path = Code/Support/RKMacros.h; sourceTree = "<group>"; }; + A126D8590E2C7ECBC16300C2C3A644D2 /* PFInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationController.h; path = Parse/Internal/Installation/Controller/PFInstallationController.h; sourceTree = "<group>"; }; + A1A2CA5B68B1C6F0052C73BE934D33D8 /* BFAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView.h; path = Bolts/iOS/BFAppLinkReturnToRefererView.h; sourceTree = "<group>"; }; + A1A36D34413696BE466E2CA0AFF194DA /* Pods-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-resources.sh"; sourceTree = "<group>"; }; + A2BE5AE5F0695B55E709A8CDFE17CA78 /* PFCurrentConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentConfigController.m; path = Parse/Internal/Config/Controller/PFCurrentConfigController.m; sourceTree = "<group>"; }; + A310034DF2EA59B12C3C17FA56A7D8CA /* FBSDKLoginManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManager+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h"; sourceTree = "<group>"; }; + A367DA3EC3F8D359202159E683A9BB6F /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = "<group>"; }; + A3876C6C899E391617046DF5BA206C24 /* PFMultiProcessFileLockController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLockController.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.h; sourceTree = "<group>"; }; + A3E2D61AF8A35A030529BBF31DCB63EF /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = "<group>"; }; + A4371F9C1BEB37C1C9A7F487E96B039C /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = "<group>"; }; + A4C7B9F2E653733E71087633BB8C15F3 /* PFProduct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProduct.h; path = Parse/PFProduct.h; sourceTree = "<group>"; }; + A4F05EE46BF909C52D434101394A8D68 /* SOCKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SOCKit.xcconfig; sourceTree = "<group>"; }; + A500D17BF17E1E4E6B95D311ECBC187E /* PFPaymentTransactionObserver_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver_Private.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h; sourceTree = "<group>"; }; + A504F227475EBEE681741A0C587CAE41 /* PFURLSessionCommandRunner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.h; sourceTree = "<group>"; }; + A599CD4CAA3AC99E0EE59D0EE6ABBD4F /* PFObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectControlling.h; path = Parse/Internal/Object/Controller/PFObjectControlling.h; sourceTree = "<group>"; }; + A5D82F87A7D9B6D1BA5B926D5CC28320 /* AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.xcconfig; sourceTree = "<group>"; }; + A5EC9E79B357B5A2AC105BD544952297 /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = "<group>"; }; + A615158242A3BF4F9C9D90078A2CE30F /* PFReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFReachability.h; path = Parse/Internal/PFReachability.h; sourceTree = "<group>"; }; + A634E305E726A2D18B89914E5F8909D3 /* libFoldingTabBar.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFoldingTabBar.a; sourceTree = BUILT_PRODUCTS_DIR; }; + A63CD3C63759638B8C81445CC1AE5832 /* RKLumberjackLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKLumberjackLogger.h; path = Code/Support/RKLumberjackLogger.h; sourceTree = "<group>"; }; + A64CECFF3E3D0A64DA3BF8E6FB583C41 /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = "<group>"; }; + A711FBFC3588B353719DDFFC023B9290 /* PFConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig.h; path = Parse/PFConfig.h; sourceTree = "<group>"; }; + A73585EAE72B8B707372B14CD35D1CBB /* PFObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState.h; path = Parse/Internal/Object/State/PFObjectState.h; sourceTree = "<group>"; }; + A7866E7BD22417E1E798E12FC8148126 /* PFPurchase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchase.h; path = Parse/PFPurchase.h; sourceTree = "<group>"; }; + A79078BF742E1C7360DBEE1FE59509E3 /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = "<group>"; }; + A790CE27C36D138858150ED6C2FC85E5 /* FBSDKShareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKShareKit-dummy.m"; sourceTree = "<group>"; }; + A8279D26889EDF822F6A7F2AEC767E66 /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = "<group>"; }; + A832477BE2A9E7163C4E27DAE8B3DD8C /* FBSDKLoginButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginButton.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h; sourceTree = "<group>"; }; + A854E7B08674C60E1987E4A310DA531C /* PFObjectSubclassInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassInfo.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.h; sourceTree = "<group>"; }; + A8607AE13FD6F5114938F5C946462211 /* PFInstallationIdentifierStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationIdentifierStore.m; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.m; sourceTree = "<group>"; }; + A88639112812A657127C2D4DEED2CDBB /* PFSQLiteDatabaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseController.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.h; sourceTree = "<group>"; }; + A8C154BACC4BC2017771F24B43682204 /* FBSDKLoginManagerLoginResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLoginResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m; sourceTree = "<group>"; }; + A911FD2DE04BBABF90935B374E405983 /* FBSDKLikeBoxBorderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxBorderView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m; sourceTree = "<group>"; }; + A93AAAD8AD7E644F7EC9EC8AA665569F /* BFAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererController.h; path = Bolts/iOS/BFAppLinkReturnToRefererController.h; sourceTree = "<group>"; }; + A9F919170FF728D2BC8D0CA0FF2DFB83 /* PFMulticastDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMulticastDelegate.h; path = Parse/Internal/PFMulticastDelegate.h; sourceTree = "<group>"; }; + AA9C61E1204F6BD3E847A74FF29A1F91 /* FBSDKLoginTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m; sourceTree = "<group>"; }; + AAE5C3F24CDEB6F4DD19802AB2B9D8B4 /* PFOperationSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOperationSet.h; path = Parse/Internal/Object/OperationSet/PFOperationSet.h; sourceTree = "<group>"; }; + AB067014760D1E79CE3A58172F0227EB /* PFUserFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserFileCodingLogic.m; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.m; sourceTree = "<group>"; }; + AB08BCF1E8867BB674582E6292B917CD /* PFOfflineObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineObjectController.h; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.h; sourceTree = "<group>"; }; + AB4CD2808D1181D48BD050A1E40BE976 /* PFUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState.h; path = Parse/Internal/User/State/PFUserState.h; sourceTree = "<group>"; }; + AB78F67642C251E7BFF0E9D2B17A8553 /* RKBenchmark.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKBenchmark.m; path = Code/Testing/RKBenchmark.m; sourceTree = "<group>"; }; + ABCED4FB329CB88CEBB2D990F236F8D5 /* PFOfflineQueryLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryLogic.h; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.h; sourceTree = "<group>"; }; + ABEC7A4F1C213D9FF650D68130BE307B /* FBSDKLoginKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginKit.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h; sourceTree = "<group>"; }; + AC3C9929DCA15B6D58724D42C5BD2DFB /* FBSDKShareButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h; sourceTree = "<group>"; }; + AC5662D51E6E075238B8E1970100B60A /* BFCancellationToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationToken.m; path = Bolts/Common/BFCancellationToken.m; sourceTree = "<group>"; }; + ACC5D57E516CFFB2CE3244680661340D /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = "<group>"; }; + ACE5B2BD57D84096B68C686CF2A297F0 /* PFObjectState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState_Private.h; path = Parse/Internal/Object/State/PFObjectState_Private.h; sourceTree = "<group>"; }; + AD4D3C55161D3874FAE6A6D4FA05E974 /* PFCommandResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandResult.m; path = Parse/Internal/PFCommandResult.m; sourceTree = "<group>"; }; + ADF62BE10B4A5995FC90E5E1DF736C2F /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = "<group>"; }; + AEA5DE805E0990CD7BFA9099F1B80A0B /* Support.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Support.h; path = Code/Support.h; sourceTree = "<group>"; }; + AEAF382A07FA2B9C90B3DA379C01ED05 /* RKNSJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKNSJSONSerialization.h; path = Code/Support/RKNSJSONSerialization.h; sourceTree = "<group>"; }; + AF37684830F2DBB64CC294D7D1ED687C /* PFLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogger.h; path = Parse/Internal/PFLogger.h; sourceTree = "<group>"; }; + AF6C96E7CB161E28C9D346CD5CEAA5F8 /* PFTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFTaskQueue.h; path = Parse/Internal/PFTaskQueue.h; sourceTree = "<group>"; }; + AFAF91B7E5BA7253D501E8786B415520 /* PFProductsRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProductsRequestHandler.h; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.h; sourceTree = "<group>"; }; + AFE48A1CAAFB131917518CB852A268E8 /* PFMutablePushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutablePushState.m; path = Parse/Internal/Push/State/PFMutablePushState.m; sourceTree = "<group>"; }; + B01AD8E53CF8F54CAA21EB125198756C /* PFKeyValueCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache_Private.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache_Private.h; sourceTree = "<group>"; }; + B0217E33F4AEC22A7E47353C29C06863 /* FBSDKShareAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareAPI.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h; sourceTree = "<group>"; }; + B04554029C51C04C827384E9A03CC281 /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = "<group>"; }; + B0A1E7C301317BD56AD13ED50A48B5C3 /* PFPushManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushManager.m; path = Parse/Internal/Push/Manager/PFPushManager.m; sourceTree = "<group>"; }; + B0F29E0D66F63131F371330D93CB4583 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B10427DA50494463C21D709E70487D33 /* PFFieldOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperation.m; path = Parse/Internal/FieldOperation/PFFieldOperation.m; sourceTree = "<group>"; }; + B12FBE677B57927C3F666FD0FD6511BC /* RKHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKHTTPRequestOperation.m; path = Code/Network/RKHTTPRequestOperation.m; sourceTree = "<group>"; }; + B147CF02EE8864D4E87D27D74C926A6E /* BoltsVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BoltsVersion.h; path = Bolts/Common/BoltsVersion.h; sourceTree = "<group>"; }; + B152467F018CE2A665F5C91D168A9A68 /* FBSDKMessageDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessageDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h; sourceTree = "<group>"; }; + B2049AB603335D958370F042F249C577 /* BFCancellationTokenRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenRegistration.h; path = Bolts/Common/BFCancellationTokenRegistration.h; sourceTree = "<group>"; }; + B2572E05EB18D8E55337D23E1AE67E35 /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFWebViewAppLinkResolver.h; path = Bolts/iOS/BFWebViewAppLinkResolver.h; sourceTree = "<group>"; }; + B27A11D910EE7C9849CF8F140E280ED9 /* PFObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectState.m; path = Parse/Internal/Object/State/PFObjectState.m; sourceTree = "<group>"; }; + B3414A44DB406F571B8FC80279C438E3 /* PFProduct+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFProduct+Private.h"; path = "Parse/Internal/Product/PFProduct+Private.h"; sourceTree = "<group>"; }; + B36DC7EE87AFA9DC98ABEEA9F3A91C09 /* BFMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent.h; path = Bolts/iOS/BFMeasurementEvent.h; sourceTree = "<group>"; }; + B3730F73EE5F25F746856381EB423BB1 /* FBSDKLoginCompletion+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginCompletion+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h"; sourceTree = "<group>"; }; + B385E214776DF89692B91553D7FCD7B7 /* FBSDKSystemAccountStoreAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSystemAccountStoreAdapter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h; sourceTree = "<group>"; }; + B407B07136A8C18FA91C2B5C0C66B115 /* PFRESTSessionCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTSessionCommand.m; path = Parse/Internal/Commands/PFRESTSessionCommand.m; sourceTree = "<group>"; }; + B415178073B9AF9554447EA73F804B50 /* FBSDKShareDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h; sourceTree = "<group>"; }; + B44F43FE13A2621B29F734B3AD99BF68 /* PFRelationState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState_Private.h; path = Parse/Internal/Relation/State/PFRelationState_Private.h; sourceTree = "<group>"; }; + B4752C6F4E6E53E7A4CD10A743CBB4C4 /* RKMappingOperationDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingOperationDataSource.h; path = Code/ObjectMapping/RKMappingOperationDataSource.h; sourceTree = "<group>"; }; + B492A7B19E294565EE58BF99C7ED8A4A /* PFMultiProcessFileLock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLock.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.m; sourceTree = "<group>"; }; + B4D5CA49244C779E343DF9F173C32D69 /* FBSDKAccessTokenCacheV3_17.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_17.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m; sourceTree = "<group>"; }; + B506CB574291FFD269E218DEE30A8D84 /* PFPaymentTransactionObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.h; sourceTree = "<group>"; }; + B51C3F037B7CB1FC1D26AD422819FAAA /* RKDictionaryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDictionaryUtilities.h; path = Code/Support/RKDictionaryUtilities.h; sourceTree = "<group>"; }; + B58613265294354C23D293C133BAC6B2 /* RestKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RestKit-prefix.pch"; sourceTree = "<group>"; }; + B5BC191314D1C949957752D5E562E183 /* BFDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFDefines.h; path = Bolts/Common/BFDefines.h; sourceTree = "<group>"; }; + B5C44FD3FAB358E3B466C4655865D9C1 /* FBSDKTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h; sourceTree = "<group>"; }; + B5C46025996A2C2D010B0AE8FF485D39 /* FoldingTabBar-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FoldingTabBar-dummy.m"; sourceTree = "<group>"; }; + B6327D62365930A9BC127D1B6AA7C081 /* PFMultiProcessFileLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLock.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.h; sourceTree = "<group>"; }; + B639B99C4CD7C16D2AD6DD82DD08FA5A /* PFPinningObjectStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningObjectStore.h; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.h; sourceTree = "<group>"; }; + B6AC7B5CA03EFC1449CFA764CF607A99 /* PFEncoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEncoder.h; path = Parse/Internal/PFEncoder.h; sourceTree = "<group>"; }; + B6DAE6FCB32112F6B277354CCD641DFB /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = "<group>"; }; + B6FDEF44D035ECEB171CF49BE68D54D0 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + B75D3CD9991E32D3045EFD508FE204E3 /* RKSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKSerialization.h; path = Code/Support/RKSerialization.h; sourceTree = "<group>"; }; + B7A6D2F5DC2549FF82CCCCA100238F29 /* TKTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKTransition.m; path = Code/TKTransition.m; sourceTree = "<group>"; }; + B7D0C7535C92E775C8051BD27D3C5A4B /* RKRouter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRouter.h; path = Code/Network/RKRouter.h; sourceTree = "<group>"; }; + B7D1E676461C5F40552D64DA33869E6F /* PFCommandURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandURLRequestConstructor.h; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.h; sourceTree = "<group>"; }; + B82D9F24AE9309326A0F5D37DA96F86D /* RKMIMETypeSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMIMETypeSerialization.m; path = Code/Support/RKMIMETypeSerialization.m; sourceTree = "<group>"; }; + B900275E03F4A9C6416A5077A6E72931 /* PFFileController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileController.h; path = Parse/Internal/File/Controller/PFFileController.h; sourceTree = "<group>"; }; + B92A2CAEF825132FB7B172C9FFF479D2 /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView_Internal.h; path = Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h; sourceTree = "<group>"; }; + B98E96DBABDB51557464408244172B2A /* PFCurrentInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentInstallationController.m; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.m; sourceTree = "<group>"; }; + B9943DF525E97D5F98EC58CF7865A2A0 /* PFPurchaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchaseController.h; path = Parse/Internal/Purchase/Controller/PFPurchaseController.h; sourceTree = "<group>"; }; + B9A3F443B3D92D2C8F03FFCD004B43E5 /* BFCancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationToken.h; path = Bolts/Common/BFCancellationToken.h; sourceTree = "<group>"; }; + B9A968895EE338B1992703020E6AA2A9 /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h"; sourceTree = "<group>"; }; + B9D34B12F05BF9127D139B7586C718A0 /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = "<group>"; }; + B9E52C40CE2CD49772146B44F17F058F /* FBSDKLiking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLiking.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h; sourceTree = "<group>"; }; + BA2696770D8582A18F63F39A1AE5A973 /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h; sourceTree = "<group>"; }; + BA5E53C4F97DE65CA639266FC59D62B6 /* RKLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKLog.h; path = Code/Support/RKLog.h; sourceTree = "<group>"; }; BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - BA77BF64FAFBF3F9E5DB590A4B0FB4A9 /* PFAnalyticsUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsUtilities.h; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.h; sourceTree = "<group>"; }; - BAAF0724B9090137B718DFDA6EB9C1C7 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; - BAD26E583A45E51D16E0FA2F67CB7CA3 /* libISO8601DateFormatterValueTransformer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libISO8601DateFormatterValueTransformer.a; sourceTree = BUILT_PRODUCTS_DIR; }; - BAFC73046A893C097CD25A41014D48A0 /* PFThreadsafety.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFThreadsafety.h; path = Parse/Internal/ThreadSafety/PFThreadsafety.h; sourceTree = "<group>"; }; - BB282470029D499E3074A164AABBC66C /* PFAnalyticsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsController.m; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.m; sourceTree = "<group>"; }; - BB98FB4B596C25CC1243E4E50B93731A /* PFSQLiteDatabaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseController.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.m; sourceTree = "<group>"; }; - BBA379404F39E04206E50A2AE079F9AE /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = "<group>"; }; - BC5C6C0CB488B2B5EB58A44CB5006846 /* BFAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererController.m; path = Bolts/iOS/BFAppLinkReturnToRefererController.m; sourceTree = "<group>"; }; - BC8341246DF5F52B15F7D490893290D3 /* PFSQLiteStatement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteStatement.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.h; sourceTree = "<group>"; }; - BD4CC2409377CA987A2B2C5C57CEEE70 /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTaskCompletionSource.h; path = Bolts/Common/BFTaskCompletionSource.h; sourceTree = "<group>"; }; - BD77162D04BA4533037493C3BE145CFF /* RKTestFactory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestFactory.m; path = Code/Testing/RKTestFactory.m; sourceTree = "<group>"; }; - BD7AF50148F7E85655300B88C68AEFF3 /* PFRESTUserCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTUserCommand.h; path = Parse/Internal/Commands/PFRESTUserCommand.h; sourceTree = "<group>"; }; - BDB19BCF4582BF9F10ABA1C43D14ED9A /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = "<group>"; }; - BDEB88DA6AF7347263BC6911DB8411FE /* PFNetworkCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkCommand.h; path = Parse/Internal/PFNetworkCommand.h; sourceTree = "<group>"; }; - BE300C64CFEC0B1AF5E5B10FCAD254AB /* FBSDKShareUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h; sourceTree = "<group>"; }; - BE7E9FEA0A48E20BEAFE0E04D46D0913 /* PFLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLogger.m; path = Parse/Internal/PFLogger.m; sourceTree = "<group>"; }; - BE80753CE5B8297DCAAA5C864D7D7A5B /* RKMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapping.h; path = Code/ObjectMapping/RKMapping.h; sourceTree = "<group>"; }; - BE9C3BEACE061C48E9A8427C3059F7E5 /* FBSDKShareOpenGraphContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h; sourceTree = "<group>"; }; - BECD89C94556181D2DC5E1EC956F6551 /* BFAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkNavigation.m; path = Bolts/iOS/BFAppLinkNavigation.m; sourceTree = "<group>"; }; - BF59BC15D23E1E1912C8F334E7236813 /* Pods-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-acknowledgements.plist"; sourceTree = "<group>"; }; - BF7E4DF7E707F588FF550CDC66A6F7B7 /* AFImageRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageRequestOperation.h; path = AFNetworking/AFImageRequestOperation.h; sourceTree = "<group>"; }; - C092CD3F2AEE6BAC465A007801D8D91A /* PFUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState.h; path = Parse/Internal/User/State/PFUserState.h; sourceTree = "<group>"; }; - C098C23FB2DF99933279373E8B3D452E /* FBSDKLoginCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginCompletion.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h; sourceTree = "<group>"; }; - C0ACB6CAB80A7E3DC5CFFE36AC450565 /* FBSDKShareOpenGraphContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m; sourceTree = "<group>"; }; - C0F87532434A412B133BDCA0E76634EA /* PFHTTPURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHTTPURLRequestConstructor.m; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.m; sourceTree = "<group>"; }; - C1A7C3AA5681EC1EBFD4DD40121772C1 /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = "<group>"; }; - C1B00FE95A9B3F0051AAD3A5D6CE141D /* PFMutableFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableFileState.m; path = Parse/Internal/File/State/PFMutableFileState.m; sourceTree = "<group>"; }; - C26C64018F45E6E09F72163E759ED45B /* PFObject+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFObject+Subclass.h"; path = "Parse/PFObject+Subclass.h"; sourceTree = "<group>"; }; - C2775986B8C8F3CC41C05FD3B939FF81 /* PFRelationState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState_Private.h; path = Parse/Internal/Relation/State/PFRelationState_Private.h; sourceTree = "<group>"; }; - C2D770ED2372F2017C6D6A85DD81705C /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = "<group>"; }; - C3212BA31250F0C8DE1BD1FAF02207C7 /* FBSDKShareOpenGraphValueContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphValueContainer.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m; sourceTree = "<group>"; }; - C37F0ED993AA0D0D75072F2D2A6865AC /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; - C3ADC7027A54E385AA38C96D3138EFFF /* PFPinningObjectStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningObjectStore.m; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.m; sourceTree = "<group>"; }; - C40CADC5F2DEB4D0282F02F7FDF18EF0 /* FBSDKLoginKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKLoginKit-dummy.m"; sourceTree = "<group>"; }; - C44F364C931B164F6223FDD37734D4B3 /* PFRole.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRole.m; path = Parse/PFRole.m; sourceTree = "<group>"; }; - C45A766C3A6755202AD9BF0DD47F95E9 /* RKValueTransformers.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RKValueTransformers.xcconfig; sourceTree = "<group>"; }; - C45D1154E82FBFB1AEFB90141DBACC29 /* PFQueryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryUtilities.h; path = Parse/Internal/Query/Utilities/PFQueryUtilities.h; sourceTree = "<group>"; }; - C45F387672BF56893F587F1601A4A671 /* PFPushChannelsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushChannelsController.m; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.m; sourceTree = "<group>"; }; - C4F10ABEFA5CCF0EC39AA05DC7FCBE4A /* PFDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDateFormatter.h; path = Parse/Internal/PFDateFormatter.h; sourceTree = "<group>"; }; - C4FECFD27C3DF785E2765FF781CE87C6 /* PFEncoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEncoder.m; path = Parse/Internal/PFEncoder.m; sourceTree = "<group>"; }; - C5BAEE02437FF882C669F3417F738447 /* RKRequestDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRequestDescriptor.h; path = Code/Network/RKRequestDescriptor.h; sourceTree = "<group>"; }; - C5BE6155E6E796DC929232CFE0BA3938 /* PFURLSessionDataTaskDelegate_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate_Private.h; sourceTree = "<group>"; }; - C652B9BA4AA5750AC29A27FB796AF725 /* FBSDKAccessTokenCacheV3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m; sourceTree = "<group>"; }; - C691D2172575794DB216679D3693503D /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = "<group>"; }; - C69E58A7811CD06105D466195B801328 /* PFAnonymousUtils_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils_Private.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousUtils_Private.h; sourceTree = "<group>"; }; - C6F27E2022C1FBC9A8EF59AF5A0635F1 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "AFNetworking/UIImageView+AFNetworking.h"; sourceTree = "<group>"; }; - C73D0298550B4AE265F9F155D23B10D7 /* PFRESTUserCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTUserCommand.m; path = Parse/Internal/Commands/PFRESTUserCommand.m; sourceTree = "<group>"; }; - C74E4DFE39D451AE68F6CB856DEF1D8B /* PFCurrentUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentUserController.m; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.m; sourceTree = "<group>"; }; - C771ECF49E63DA4D6AD0B964CDA4DC94 /* FBSDKLoginKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginKit.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h; sourceTree = "<group>"; }; - C7A3C431941CA5458B46FDA87ADD17E9 /* TKStateMachine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKStateMachine.h; path = Code/TKStateMachine.h; sourceTree = "<group>"; }; - C8A30076FFE0AE4D80EEE9B5F111E0C4 /* FBSDKAppGroupJoinDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupJoinDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h; sourceTree = "<group>"; }; - C90D137341FF777D06387AF9304BB376 /* FBSDKShareOpenGraphAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphAction.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h; sourceTree = "<group>"; }; - C9335D1EB92B88713E8308C849C0EDF6 /* PFObjectFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCodingLogic.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.h; sourceTree = "<group>"; }; - C961228BEA0830266F67F826D8BD866B /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = "<group>"; }; - CA33FED366B628BCA0A5D7DFD91E87D9 /* PFCommandRunningConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunningConstants.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.m; sourceTree = "<group>"; }; - CAAEEA7D83368AA927E7EBCBA6F4E80E /* RKPaginator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPaginator.m; path = Code/Network/RKPaginator.m; sourceTree = "<group>"; }; - CB354A886C3BB7D67D39EB3F5236AB3A /* PFPaymentTransactionObserver_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver_Private.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h; sourceTree = "<group>"; }; - CB3C48DDBE655AE51D1A39695796468E /* RKResponseMapperOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKResponseMapperOperation.h; path = Code/Network/RKResponseMapperOperation.h; sourceTree = "<group>"; }; - CB4A5DFDF0DD0D7EA9036EDB4D3554F2 /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = "<group>"; }; - CB8C8762838FD01094119D687898F1B3 /* PFSessionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionUtilities.m; path = Parse/Internal/Session/Utilities/PFSessionUtilities.m; sourceTree = "<group>"; }; - CC29231A76F0E95942D3AC8EE9C06770 /* RKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMacros.h; path = Code/Support/RKMacros.h; sourceTree = "<group>"; }; - CC2CE8BA55B6B6E6E126D87B37D05550 /* FBSDKAccessTokenCacheV3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h; sourceTree = "<group>"; }; - CC5344A37B8F373E012354E281A66841 /* PFOfflineStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineStore.m; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m; sourceTree = "<group>"; }; - CC65F8627E5C5856896FED7D2BB1CF7B /* FBSDKSharingContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h; sourceTree = "<group>"; }; - CC80DEFA3FC6190520C4E802B4E816FE /* RKMIMETypeSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMIMETypeSerialization.h; path = Code/Support/RKMIMETypeSerialization.h; sourceTree = "<group>"; }; - CCBA933D3A40B5D03B01E6CC64A2A3A5 /* PFCachedQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCachedQueryController.m; path = Parse/Internal/Query/Controller/PFCachedQueryController.m; sourceTree = "<group>"; }; - CD1576A49CCA998DA56187764ACAF229 /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = "<group>"; }; - CD2EA7078774EF7F78C945F81FD00274 /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = "<group>"; }; - CD8B46F21FA110AF5880D0648641BA7A /* PFObjectSubclassingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassingController.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.h; sourceTree = "<group>"; }; - CD8DCF741100D5A960D3D87F3F11EC5B /* FBSDKShareOpenGraphObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphObject.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m; sourceTree = "<group>"; }; - CDABF5602F0E0D707DDD4224CB032D0E /* RKRoute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRoute.m; path = Code/Network/RKRoute.m; sourceTree = "<group>"; }; - CDB7AF2EC4C8BD16B16801E52002B702 /* libFBSDKShareKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKShareKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - CDD6D2BC7E281738DA57375BE59728C9 /* PFAnalytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics.h; path = Parse/PFAnalytics.h; sourceTree = "<group>"; }; - CDD888F1AE46F190163FFB9C51D7BF06 /* FBSDKMessengerIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessengerIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h; sourceTree = "<group>"; }; - CE9E97FF37E3D5E9F5A1F4E619520D56 /* PFMultiProcessFileLockController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLockController.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.h; sourceTree = "<group>"; }; - CEC4CC0F1E5231E5AE5C1E4101E7CD5F /* PFCategoryLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCategoryLoader.h; path = Parse/Internal/PFCategoryLoader.h; sourceTree = "<group>"; }; - CEEDE6F5E4B91DB0462629F30CE2C5D3 /* PFURLSessionDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.h; sourceTree = "<group>"; }; - CFF2742C181ACA4B29372E268153270F /* PFInternalUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInternalUtils.h; path = Parse/Internal/PFInternalUtils.h; sourceTree = "<group>"; }; - D069FE63005F6068C36B6B3E8C125E9D /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = "<group>"; }; - D145E83E2215C35E1D66DCFD70095EAE /* RKRouter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRouter.m; path = Code/Network/RKRouter.m; sourceTree = "<group>"; }; - D155C2F3D678574A9479B645207148FB /* FBSDKAppGroupContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m; sourceTree = "<group>"; }; - D19C9E56F232605C57E9A412AF3031FA /* FBSDKLoginUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginUtility.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m; sourceTree = "<group>"; }; - D2C9DD7C685BBD2CC7EAB4A3433549B4 /* FBSDKShareLinkContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareLinkContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m; sourceTree = "<group>"; }; - D344D9A38E931E18FB1095D2364E21E6 /* RKDotNetDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDotNetDateFormatter.h; path = Code/Support/RKDotNetDateFormatter.h; sourceTree = "<group>"; }; - D3882165793F00E2FD03DD7A903E3AB4 /* FBSDKShareButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m; sourceTree = "<group>"; }; - D3C4E9EF227BA506792955288087E82F /* PFRESTObjectBatchCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectBatchCommand.m; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.m; sourceTree = "<group>"; }; - D3C67EEA3F3F6628396F657744BD378C /* PFEncoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEncoder.h; path = Parse/Internal/PFEncoder.h; sourceTree = "<group>"; }; - D3EB8E5131AAEA8F16E17BF016FB5B61 /* PFHTTPURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPURLRequestConstructor.h; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.h; sourceTree = "<group>"; }; - D3FDBE0B0295691A9DA68BB91774B2DF /* FBSDKBridgeAPICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPICrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h; sourceTree = "<group>"; }; - D47B3859C74BA3AE467FE98CFA3EF2A7 /* PFRESTCloudCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCloudCommand.m; path = Parse/Internal/Commands/PFRESTCloudCommand.m; sourceTree = "<group>"; }; - D483D1D469EA00BF8839FA7029495D60 /* RKTestNotificationObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestNotificationObserver.h; path = Code/Testing/RKTestNotificationObserver.h; sourceTree = "<group>"; }; - D497D888360D61A9F64F2DBB2A1FC8F0 /* RKTestNotificationObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestNotificationObserver.m; path = Code/Testing/RKTestNotificationObserver.m; sourceTree = "<group>"; }; - D4A9395593F078B48F3B87B9AC890E89 /* PFNullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNullability.h; path = Parse/PFNullability.h; sourceTree = "<group>"; }; - D4AAA8F6AD3E666763DAE1F0E91D3778 /* PFURLSessionFileDownloadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionFileDownloadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.h; sourceTree = "<group>"; }; - D4BD0B686B0EF4B81ABCF468BE4F3F99 /* PFSQLiteDatabaseResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseResult.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.m; sourceTree = "<group>"; }; - D4FD1E6A7772359C67DC337EEDF88556 /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m; sourceTree = "<group>"; }; - D587648C0089A8E5FF455C97FF2B368E /* RKTestHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestHelpers.m; path = Code/Testing/RKTestHelpers.m; sourceTree = "<group>"; }; - D58E0BB2015D810A38A6E5641DCBDB8E /* FBSDKShareConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareConstants.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m; sourceTree = "<group>"; }; - D6264AE68EC2461B52D7BC087CC60C51 /* ObjectMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ObjectMapping.h; path = Code/ObjectMapping.h; sourceTree = "<group>"; }; - D659356F1EF1F1C346376A400B5070E9 /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = "<group>"; }; - D68740C3275B619CD6272922B9616689 /* RestKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RestKit.h; path = Code/RestKit.h; sourceTree = "<group>"; }; - D72FC75ED7ED1ECBB9A34AC1705CE17D /* RKDictionaryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDictionaryUtilities.m; path = Code/Support/RKDictionaryUtilities.m; sourceTree = "<group>"; }; - D74C6F651D26C64847074B31212962B9 /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = "<group>"; }; - D7C3DDABC4BC501093A232FA20368F5D /* PFAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAssert.h; path = Parse/Internal/PFAssert.h; sourceTree = "<group>"; }; - D7F2E197DB454125A7957FE4881AD932 /* PFPurchase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchase.m; path = Parse/PFPurchase.m; sourceTree = "<group>"; }; - D80E9A1290BCA30333F7035E22898FD4 /* BFMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent.h; path = Bolts/iOS/BFMeasurementEvent.h; sourceTree = "<group>"; }; - D87881EF697A62AD256CC2A668F12186 /* FBSDKShareKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKShareKit.xcconfig; sourceTree = "<group>"; }; - D8BDF9D0A4444BAF6AB702315EC72D13 /* Parse.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Parse.xcconfig; sourceTree = "<group>"; }; - D8EA6434D262B562E0ABC8F28481403A /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h; sourceTree = "<group>"; }; - D9449B7AA0958A37C738C3F3113E6F86 /* ISO8601DateFormatterValueTransformer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ISO8601DateFormatterValueTransformer-dummy.m"; sourceTree = "<group>"; }; - D974B883607CC6537A01E19606D22B95 /* PFLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogger.h; path = Parse/Internal/PFLogger.h; sourceTree = "<group>"; }; - D98AA728E2CAF01488250F97004A36A8 /* PFOfflineQueryLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryLogic.h; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.h; sourceTree = "<group>"; }; - DBFFDA63A4181BD3B195487A833CECE4 /* PFProduct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProduct.h; path = Parse/PFProduct.h; sourceTree = "<group>"; }; - DC2CCF0D50C6CF8EA37A8C6EECE1581E /* BFURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFURL.m; path = Bolts/iOS/BFURL.m; sourceTree = "<group>"; }; - DC32DADD67B93D4C8A1DC5D924364B07 /* RKMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMapping.m; path = Code/ObjectMapping/RKMapping.m; sourceTree = "<group>"; }; - DC48544F9CAD4D07227D206EF611973D /* BFURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL_Internal.h; path = Bolts/iOS/BFURL_Internal.h; sourceTree = "<group>"; }; - DD1DBE77FAE408E2C2A7ED2A4C1C8A7A /* PFApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFApplication.h; path = Parse/Internal/PFApplication.h; sourceTree = "<group>"; }; - DD24927EB5C08D76DB2607695C173E2E /* PFObjectFileCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCoder.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.h; sourceTree = "<group>"; }; - DD2F082EFF4A90CEA1BD4B18821FD489 /* RKMapperOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMapperOperation.m; path = Code/ObjectMapping/RKMapperOperation.m; sourceTree = "<group>"; }; - DD3B394CF966217416F1237E9D4D804F /* FBSDKShareOpenGraphAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphAction.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m; sourceTree = "<group>"; }; - DDE80DA7A434D17F0D915E284F20436A /* FBSDKAppGroupAddDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupAddDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m; sourceTree = "<group>"; }; - DE37807E0B1639A13221C0F6E94C015F /* FBSDKGameRequestContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h; sourceTree = "<group>"; }; - DEF44C93EA8108B4B9EFC4B4644446CF /* RKConnectionTestExpectation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKConnectionTestExpectation.m; path = Code/Testing/RKConnectionTestExpectation.m; sourceTree = "<group>"; }; - DF42A50DA3169ABB374EFAA43DCFDE36 /* FBSDKShareDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDefines.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h; sourceTree = "<group>"; }; - DF7C4CE6EE936098ABB3AC172D7B2FF1 /* AFImageRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageRequestOperation.m; path = AFNetworking/AFImageRequestOperation.m; sourceTree = "<group>"; }; - DFC2DC00FAF97B8C741ADA0CE734750A /* BFExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFExecutor.h; path = Bolts/Common/BFExecutor.h; sourceTree = "<group>"; }; - DFC853444423A2B6AFB3F150BD3A93F8 /* BFCancellationTokenSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenSource.m; path = Bolts/Common/BFCancellationTokenSource.m; sourceTree = "<group>"; }; - DFCBF9D0B251D3EABC70AD75A30E8294 /* FBSDKSendButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSendButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h; sourceTree = "<group>"; }; - DFEE7E72D7CE52F1A712D597A33B153C /* PFTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFTaskQueue.h; path = Parse/Internal/PFTaskQueue.h; sourceTree = "<group>"; }; - E00DAE8196002E6DC11BB84AA2B653B0 /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m; sourceTree = "<group>"; }; - E016C3CC11A1E2541450703DF5F4DBA9 /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = "<group>"; }; - E060B56260BC85ECD94761E793A08F02 /* FBSDKLikeDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeDialog.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h; sourceTree = "<group>"; }; - E09085454F042573BE0A1BCBEF8DAE7A /* PFDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDataProvider.h; path = Parse/Internal/PFDataProvider.h; sourceTree = "<group>"; }; - E0CC0033498B3D96CF358C75CCE120A9 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.release.xcconfig; sourceTree = "<group>"; }; - E11FE2BB216DD98CBF3928F8E5E9A85B /* lcl_RK.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = lcl_RK.m; path = Vendor/LibComponentLogging/Core/lcl_RK.m; sourceTree = "<group>"; }; - E1394AF99EBF307ACCE5AC895EAC2042 /* PFQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQuery.h; path = Parse/PFQuery.h; sourceTree = "<group>"; }; - E156596C9F5FF570264078E49A4643D4 /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = AFNetworking/AFNetworkActivityIndicatorManager.h; sourceTree = "<group>"; }; - E17F4E0596F024D9F44812A5786F7170 /* PFQueryPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryPrivate.h; path = Parse/Internal/Query/PFQueryPrivate.h; sourceTree = "<group>"; }; - E1A63FDB8FFEBABA917E2E14E9051471 /* PFRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelationState.m; path = Parse/Internal/Relation/State/PFRelationState.m; sourceTree = "<group>"; }; - E201DE8EA287BAFA4B7303204B5FE3C9 /* RKMappingOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingOperation.m; path = Code/ObjectMapping/RKMappingOperation.m; sourceTree = "<group>"; }; - E20B6D6E904DDB31FF4F6654458B9DE0 /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m; sourceTree = "<group>"; }; - E22F95FAB4E982B3ABA1D6CB8C422794 /* RKObjectRequestOperationSubclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectRequestOperationSubclass.h; path = Code/Network/RKObjectRequestOperationSubclass.h; sourceTree = "<group>"; }; - E2775131C0FDB72FDE0A1D5A4A819778 /* RKURLEncodedSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKURLEncodedSerialization.h; path = Code/Support/RKURLEncodedSerialization.h; sourceTree = "<group>"; }; - E2A3EED08BBE4EF8E35776623B221D96 /* PFURLSessionCommandRunner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.h; sourceTree = "<group>"; }; - E305C7FF3E6F92A0B09870D8A60E8D38 /* PFPinningObjectStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningObjectStore.h; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.h; sourceTree = "<group>"; }; - E321A3BE2B4DC782EA81A69D33894C29 /* FBSDKShareOpenGraphValueContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphValueContainer.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h; sourceTree = "<group>"; }; - E3839692964A8570C65FDBF51FA010CE /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = "<group>"; }; - E39DE60706FCD15CB26738B50295DCD8 /* PFFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileManager.h; path = Parse/Internal/PFFileManager.h; sourceTree = "<group>"; }; - E3D7CAFA467CC207516594F8CA235BE1 /* FBSDKShareError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareError.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m; sourceTree = "<group>"; }; - E42FE23DCA3EFFB8F6025F9F9A8B3497 /* Parse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse.h; path = Parse/Parse.h; sourceTree = "<group>"; }; - E4437BD232D035D19C87DFB253692F24 /* Bolts.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bolts.xcconfig; sourceTree = "<group>"; }; - E44E35724EFF38F735F8A1ACAD9AC6BA /* PFProduct+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFProduct+Private.h"; path = "Parse/Internal/Product/PFProduct+Private.h"; sourceTree = "<group>"; }; - E4B0E00C3C4BDBCA61E5E8E5A4098711 /* PFQueryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryUtilities.m; path = Parse/Internal/Query/Utilities/PFQueryUtilities.m; sourceTree = "<group>"; }; - E51BB433D7AADF8C023202546330704A /* RKTestFixture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestFixture.h; path = Code/Testing/RKTestFixture.h; sourceTree = "<group>"; }; - E574880420D8D97A424642A6B5F02579 /* RKResponseMapperOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKResponseMapperOperation.m; path = Code/Network/RKResponseMapperOperation.m; sourceTree = "<group>"; }; - E6218FC4CE717BE3D2902995538A0A63 /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = "<group>"; }; - E6525F64D2B6147E9FCBF6D10A5CB4AD /* PFPurchase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchase.h; path = Parse/PFPurchase.h; sourceTree = "<group>"; }; - E657E2943C7D36EEAE242DB32FDDFA8D /* FBSDKLoginManagerLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLogger.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m; sourceTree = "<group>"; }; - E67D4E4FAAA111F401888720828746B0 /* FBSDKBridgeAPICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPICrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m; sourceTree = "<group>"; }; - E6A1DDF7D1694E9370A0A4CE320117CE /* FBSDKShareConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareConstants.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h; sourceTree = "<group>"; }; - E6A603960FAC56B3596B29FEDBED2A1A /* PFConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfig.m; path = Parse/PFConfig.m; sourceTree = "<group>"; }; - E6D31BB8E52455350F1E5E4F1DB197CB /* PFUserAuthenticationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationController.h; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.h; sourceTree = "<group>"; }; - E6E72495A6EA20D898402EC82E0701BB /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = "<group>"; }; - E6FE7D7622EC7CAC9524E96D99D05722 /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = "<group>"; }; - E754D1AA7F49F27BDF54A28A7335AC74 /* PFThreadsafety.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFThreadsafety.m; path = Parse/Internal/ThreadSafety/PFThreadsafety.m; sourceTree = "<group>"; }; - E7626F8EE9D02540ADF0E346CC475FD9 /* FBSDKShareDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h; sourceTree = "<group>"; }; - E7C4A5E56ABED18C3E81AB6301A8CB78 /* RKMIMETypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMIMETypes.h; path = Code/Support/RKMIMETypes.h; sourceTree = "<group>"; }; - E7E88640AA3150B82CBAC9BE5E95A136 /* PFUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUser.h; path = Parse/PFUser.h; sourceTree = "<group>"; }; - E8201C8136FA5647FA6E3D62C4EE1974 /* PFObjectFilePersistenceController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFilePersistenceController.m; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.m; sourceTree = "<group>"; }; - E85C8888E5F1BB8E85DC368D6DB18999 /* RKPropertyInspector.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyInspector.m; path = Code/ObjectMapping/RKPropertyInspector.m; sourceTree = "<group>"; }; - E8E31EEB8DA53180013FB1201C82EE81 /* PFFileDataStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileDataStream.h; path = Parse/Internal/File/FileDataStream/PFFileDataStream.h; sourceTree = "<group>"; }; - E94E46525AFB5C84058140D261543E17 /* RKObjectManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectManager.m; path = Code/Network/RKObjectManager.m; sourceTree = "<group>"; }; - E95864D7FD5998A21194F9D8966583E5 /* PFInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationController.m; path = Parse/Internal/Installation/Controller/PFInstallationController.m; sourceTree = "<group>"; }; - E9AD71E14E72EA9FB548AA268856C2EE /* PFACL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACL.h; path = Parse/PFACL.h; sourceTree = "<group>"; }; - EA90B11F9419C1CFB642C076EE6CCA4E /* PFMulticastDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMulticastDelegate.h; path = Parse/Internal/PFMulticastDelegate.h; sourceTree = "<group>"; }; - EA9765B74BCB3C4EC7701224F0BF1249 /* PFURLSessionUploadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionUploadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.h; sourceTree = "<group>"; }; - EAA3AE48267B27C576513BFE574F8AF8 /* PFFileDataStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileDataStream.m; path = Parse/Internal/File/FileDataStream/PFFileDataStream.m; sourceTree = "<group>"; }; - EBB6883C7F57FAA6E0F4E3A4DCD0836A /* FBSDKShareKit-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSDKShareKit-Private.xcconfig"; sourceTree = "<group>"; }; - EBB7426F9BCC68E345009243DF01C283 /* FBSDKAccessTokenCacheV3_17.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_17.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m; sourceTree = "<group>"; }; - EBCC0954F36C8CBCF2C1BABC5BE29972 /* FBSDKAppInviteDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m; sourceTree = "<group>"; }; - EBD6F5E77168A4A3133908261AEF1BFC /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; - EC0A8BE947E2CBB52F80DE18D474CE39 /* RKManagedObjectRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKManagedObjectRequestOperation.m; path = Code/Network/RKManagedObjectRequestOperation.m; sourceTree = "<group>"; }; - EC8288294A4CE8FE42A9FED3E1514725 /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = "<group>"; }; - EC9CD4C5A5B393EB5D90DB05D6FFB6BC /* PFConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConstants.h; path = Parse/PFConstants.h; sourceTree = "<group>"; }; - ECA1143F260DB3AEBD94D656E8DF43EB /* FBSDKLoginKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginKit+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h"; sourceTree = "<group>"; }; - ECBDBCED6B21C2F082743CDE93ECBC76 /* RKObjectManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectManager.h; path = Code/Network/RKObjectManager.h; sourceTree = "<group>"; }; - ED1A749E0B29949F6BE6DE5906C56DD6 /* PFRESTObjectBatchCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectBatchCommand.h; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.h; sourceTree = "<group>"; }; - ED23ACC2E4D25AF32F09735D7343AC88 /* RestKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RestKit-prefix.pch"; sourceTree = "<group>"; }; - ED8FC29E783D5AAFA886556B21AFC84E /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = "<group>"; }; - EDF463E3926C635EC2862C35B35EF0C0 /* FBSDKGameRequestFrictionlessRecipientCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestFrictionlessRecipientCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h; sourceTree = "<group>"; }; - EE00E564F591F731C2B1E11065E0ACF7 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - EE1FCC8E5B8DC53DA187352C0FEF6F6D /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = "<group>"; }; - EEA9D6955C305B5F1B6C27161FE11070 /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h; sourceTree = "<group>"; }; - EEBF3BA14A17CDD666F87ADB7FD612C9 /* PFURLSessionJSONDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionJSONDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.h; sourceTree = "<group>"; }; - EEC81F732F4810E132758A0C613E431B /* RKPaginator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPaginator.h; path = Code/Network/RKPaginator.h; sourceTree = "<group>"; }; - EEE7C4904A076EEBF17B54F44707AAB5 /* PFPushController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushController.h; path = Parse/Internal/Push/Controller/PFPushController.h; sourceTree = "<group>"; }; - EF50F0DB0BC4C86C22F26686C14E853A /* FBSDKLoginConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginConstants.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m; sourceTree = "<group>"; }; - EF5B4118C2BC93EF32D39A9E3A70073F /* RKNSJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKNSJSONSerialization.h; path = Code/Support/RKNSJSONSerialization.h; sourceTree = "<group>"; }; - EFC389DF1344C08739BE3B0D8561FC86 /* PFURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSession.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.m; sourceTree = "<group>"; }; - F008693162E318C7C2752AD302CFB95E /* RKDictionaryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDictionaryUtilities.h; path = Code/Support/RKDictionaryUtilities.h; sourceTree = "<group>"; }; - F0211D9EDFAAA5807FCBE1B8C8F4B662 /* PFFile_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile_Private.h; path = Parse/Internal/File/PFFile_Private.h; sourceTree = "<group>"; }; - F03034CE4131076A48731504480259EB /* FBSDKLoginCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginCompletion.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m; sourceTree = "<group>"; }; - F04D615547733AD44304C987C2896316 /* PFOfflineObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineObjectController.m; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m; sourceTree = "<group>"; }; - F05A809941BD13C88B6FA6CFB232C9FA /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h; sourceTree = "<group>"; }; - F094D3053EC8059B43C8FDE85B6CC097 /* FBSDKTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m; sourceTree = "<group>"; }; - F0CB4E3EC1ACD76F2309A54B490DF091 /* TKTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKTransition.h; path = Code/TKTransition.h; sourceTree = "<group>"; }; - F1E2800D7ABD0182A48B7D71B414FD92 /* PFObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectState.m; path = Parse/Internal/Object/State/PFObjectState.m; sourceTree = "<group>"; }; - F216A6FBB231D294F8E752EB582540AF /* PFInstallationIdentifierStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.h; sourceTree = "<group>"; }; - F2C4601420612A6E42D46B435019EBC8 /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFWebViewAppLinkResolver.h; path = Bolts/iOS/BFWebViewAppLinkResolver.h; sourceTree = "<group>"; }; - F32F686BFA58B3430620EE17161144FE /* FBSDKTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h; sourceTree = "<group>"; }; - F3DADC1F7DC40E0218DBF16280C4D6D7 /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTaskCompletionSource.m; path = Bolts/Common/BFTaskCompletionSource.m; sourceTree = "<group>"; }; - F3E2913672AE575B7293488062F00FD0 /* PFFieldOperationDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperationDecoder.h; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.h; sourceTree = "<group>"; }; - F43593C0DC2EA028CFDED6E93DD31EBD /* RKMIMETypeSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMIMETypeSerialization.m; path = Code/Support/RKMIMETypeSerialization.m; sourceTree = "<group>"; }; - F467F77ECC07330116C0DD45D3349ABE /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = "<group>"; }; - F468CD8A34AFAA3F31C0B27B7124A4FF /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = "<group>"; }; - F49F7453B2E504EC63FDF48EFAA54EEA /* ISO8601DateFormatterValueTransformer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ISO8601DateFormatterValueTransformer-prefix.pch"; sourceTree = "<group>"; }; - F51CD3717AB71F5E10A96BA8B666AACE /* PFObjectPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectPrivate.h; path = Parse/Internal/Object/PFObjectPrivate.h; sourceTree = "<group>"; }; - F59D7CF8A402E68851985B96EE643B89 /* PFURLSessionDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.m; sourceTree = "<group>"; }; - F5B33E74020A598273E33D945062DA71 /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = "<group>"; }; - F5BD02FE7C99C9BD2CBC566B75BB0558 /* RKValueTransformers-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RKValueTransformers-prefix.pch"; sourceTree = "<group>"; }; - F6235B81BCC7427EC393417D0676C7DD /* Network.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Network.h; path = Code/Network.h; sourceTree = "<group>"; }; - F65CAB845C91DF90E658BF037D025845 /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = "<group>"; }; - F6E04668789EA254AADF60D794FE065E /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = "<group>"; }; - F6E9E4399B6F13E900FC0A4DACCD4E15 /* Parse-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Parse-Private.xcconfig"; sourceTree = "<group>"; }; - F719BD99BA3538CAF974528DD1BA9EAF /* PFMutableACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableACLState.m; path = Parse/Internal/ACL/State/PFMutableACLState.m; sourceTree = "<group>"; }; - F8035743B5B17155E2E7D8224603A87B /* PFAnalytics_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics_Private.h; path = Parse/Internal/Analytics/PFAnalytics_Private.h; sourceTree = "<group>"; }; - F82017D76300F1C06DB5151CF37A726B /* BFTask+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "BFTask+Private.m"; path = "Parse/Internal/BFTask+Private.m"; sourceTree = "<group>"; }; - F86C3277131832CC3F71CEDEA893D4D6 /* BFAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkTarget.m; path = Bolts/iOS/BFAppLinkTarget.m; sourceTree = "<group>"; }; - F8C129748EFBA2068A762010AD12AEAD /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = "<group>"; }; - F9A46E7E5599417031AAC9FDEE8F6162 /* RKRelationshipMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRelationshipMapping.h; path = Code/ObjectMapping/RKRelationshipMapping.h; sourceTree = "<group>"; }; - F9D538F104DE1F531CF0C5A8DAA4E04B /* PFObjectFilePersistenceController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFilePersistenceController.h; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.h; sourceTree = "<group>"; }; - FA021E3B9768C5B58BAAFC752622E888 /* PFFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState.h; path = Parse/Internal/File/State/PFFileState.h; sourceTree = "<group>"; }; - FA5ECFC11F48F3DA152D886DDA9845D1 /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = "<group>"; }; - FA8008ED57F2E69D54C3AEA23F96BA4C /* Bolts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bolts.h; path = Bolts/Common/Bolts.h; sourceTree = "<group>"; }; - FACB310E0E9E78B498E89B7F93B98CBF /* PFDevice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDevice.m; path = Parse/Internal/PFDevice.m; sourceTree = "<group>"; }; - FADD5491782A7EB7B850FCCD70452A0E /* BFAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLink.m; path = Bolts/iOS/BFAppLink.m; sourceTree = "<group>"; }; - FB4066FE555FBBC7224915F81DDF0E65 /* AFJSONRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFJSONRequestOperation.h; path = AFNetworking/AFJSONRequestOperation.h; sourceTree = "<group>"; }; - FBC88190F20BFFBCE3E07DD0D3914E48 /* PFMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMacros.h; path = Parse/Internal/PFMacros.h; sourceTree = "<group>"; }; - FBE8E68D5C283727E833E0BB6BFC38D2 /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = "<group>"; }; - FBEDC82BBD883110BC94F1B62D5DCF07 /* FBSDKLoginKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKLoginKit.xcconfig; sourceTree = "<group>"; }; - FD329036B04DED5ACADFC2A64E1A81E3 /* RestKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RestKit-dummy.m"; sourceTree = "<group>"; }; - FD44A295575FA6E021F34AF62C1FBB39 /* PFDefaultACLController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDefaultACLController.m; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.m; sourceTree = "<group>"; }; - FDF7CFCA28382A3A70269FF452DAF6DF /* PFWeakValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFWeakValue.h; path = Parse/Internal/PFWeakValue.h; sourceTree = "<group>"; }; - FE2ECE2F8FDD3511406B222FD89E37A5 /* PFObjectEstimatedData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectEstimatedData.h; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.h; sourceTree = "<group>"; }; - FE6B1221BB48461DA615B55D5D19370E /* FBSDKSharingButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h; sourceTree = "<group>"; }; - FEF337FAA2E9DD4BA7619CC58CCFEE27 /* FBSDKLoginManagerLoginResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLoginResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m; sourceTree = "<group>"; }; - FF82E57178981723142A0A7CBC372284 /* PFKeyValueCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache.h; sourceTree = "<group>"; }; - FFAEA82C3ED7F7F1480E843DE336CB0B /* Parse-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Parse-dummy.m"; sourceTree = "<group>"; }; - FFEAA8C456F1D711FDBADC3559935B4B /* RKObjectParameterization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectParameterization.h; path = Code/Network/RKObjectParameterization.h; sourceTree = "<group>"; }; + BA86A11DA2D2DE1430E01C7AA116C69C /* PFLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLogger.m; path = Parse/Internal/PFLogger.m; sourceTree = "<group>"; }; + BAA0EDF40F153DD9E67C8C7F744785F8 /* RKHTTPUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKHTTPUtilities.h; path = Code/ObjectMapping/RKHTTPUtilities.h; sourceTree = "<group>"; }; + BB08F921B445EECE7EA71D6B4554FF9E /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = "<group>"; }; + BB22C7EB016209266A6A46D552308368 /* TKStateMachine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKStateMachine.m; path = Code/TKStateMachine.m; sourceTree = "<group>"; }; + BB99803775BDB8D089B8AAF8610F006F /* PFPurchaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchaseController.m; path = Parse/Internal/Purchase/Controller/PFPurchaseController.m; sourceTree = "<group>"; }; + BC537E2F269396073213A29C99B4BFB8 /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = "<group>"; }; + BC784E483E0153507432EFCEFBC5638E /* FBSDKShareOpenGraphValueContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphValueContainer.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m; sourceTree = "<group>"; }; + BC9BCA0158D3FA6ECF2FB4D804EA8A83 /* RKMappingTest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingTest.m; path = Code/Testing/RKMappingTest.m; sourceTree = "<group>"; }; + BC9D6013B80CFF5948B0AEBB731354CC /* RKObjectMappingOperationDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMappingOperationDataSource.h; path = Code/ObjectMapping/RKObjectMappingOperationDataSource.h; sourceTree = "<group>"; }; + BCBA64F9DA348CD22FB1AC87B9F75ACC /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = "<group>"; }; + BD723A8B8848E0084E24732986ADB0F7 /* RKRelationshipMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRelationshipMapping.m; path = Code/ObjectMapping/RKRelationshipMapping.m; sourceTree = "<group>"; }; + BED513156E118407B7BC1990E6EDADA5 /* RKPaginator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPaginator.m; path = Code/Network/RKPaginator.m; sourceTree = "<group>"; }; + BEFC9E6A35A5430AE7926645007C9C25 /* FBSDKShareOpenGraphValueContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphValueContainer.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h; sourceTree = "<group>"; }; + BF29DE6619DA26BE542969B766BDB8AE /* PFEventuallyPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyPin.h; path = Parse/Internal/PFEventuallyPin.h; sourceTree = "<group>"; }; + BF53A464C16A680DC9C16D7D05C05F74 /* RKMapperOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapperOperation.h; path = Code/ObjectMapping/RKMapperOperation.h; sourceTree = "<group>"; }; + BF734DC57CA15A5ED1C02307CD3DE349 /* PFDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDateFormatter.h; path = Parse/Internal/PFDateFormatter.h; sourceTree = "<group>"; }; + BFB1907C3EE1ADA7D44437276AC93C07 /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = "<group>"; }; + C01287FF93CF82A4FDD567F7D956DF46 /* PFObjectSubclassingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassingController.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.m; sourceTree = "<group>"; }; + C058566058269B2CA65AE1148198339C /* PFDevice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDevice.h; path = Parse/Internal/PFDevice.h; sourceTree = "<group>"; }; + C0CF8B831B45A8AE37417FB01F6EE72A /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = en.lproj; path = Parse/Resources/en.lproj; sourceTree = "<group>"; }; + C0E3792F488D1F767C3F48F576C16951 /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = "<group>"; }; + C0EEED09807991F565F9159AB28C2112 /* PFMutableFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableFileState.m; path = Parse/Internal/File/State/PFMutableFileState.m; sourceTree = "<group>"; }; + C18D83A16673A9F0545F5AAC55CAF2F0 /* PFOfflineStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineStore.m; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m; sourceTree = "<group>"; }; + C1F0927ADAF3F2EE080C8CFB1EB02510 /* FBSDKLoginKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKLoginKit-prefix.pch"; sourceTree = "<group>"; }; + C206887391506A13483E7EBD66940BB2 /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = "<group>"; }; + C206C3E9B3302C96684D3897F1D5A944 /* PFRole.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRole.h; path = Parse/PFRole.h; sourceTree = "<group>"; }; + C24ED85DEF7CEFA65A545211A7E9A27C /* TKStateMachine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKStateMachine.h; path = Code/TKStateMachine.h; sourceTree = "<group>"; }; + C266997BE18B9F2389729AEE26E429C9 /* PFCategoryLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCategoryLoader.m; path = Parse/Internal/PFCategoryLoader.m; sourceTree = "<group>"; }; + C27E78AB76228CCD047CDFC9941CCB59 /* PFOfflineStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineStore.h; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.h; sourceTree = "<group>"; }; + C304A10CF6190FEEEE9590529DE3B5EA /* BFTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTask.m; path = Bolts/Common/BFTask.m; sourceTree = "<group>"; }; + C3940D277F5BE2DF68360DE104260EC4 /* PFDevice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDevice.m; path = Parse/Internal/PFDevice.m; sourceTree = "<group>"; }; + C3A37573B0B483DCF4CB2F542816D68E /* FBSDKGameRequestFrictionlessRecipientCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestFrictionlessRecipientCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h; sourceTree = "<group>"; }; + C3D4F1A7841BFF26FD3010CAB4A45340 /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h; sourceTree = "<group>"; }; + C3F7D1EEFCFA50F7F774EDE30F5EE02B /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = "<group>"; }; + C471619F560094B3BB41378638A0D362 /* PFRESTAnalyticsCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTAnalyticsCommand.m; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.m; sourceTree = "<group>"; }; + C480EBF5CDD5C303A3C3A1D7B36A7E80 /* RKPathMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPathMatcher.m; path = Code/Network/RKPathMatcher.m; sourceTree = "<group>"; }; + C49F84564221E62FADF63F94A1EA171D /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = "<group>"; }; + C4A5204786239441709AD7ACC6C10DF1 /* YALAnimatingTabBarConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALAnimatingTabBarConstants.h; path = FoldingTabBar/Constants/YALAnimatingTabBarConstants.h; sourceTree = "<group>"; }; + C4B20C13881AFBB4E88D5826A0683F11 /* BFURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL_Internal.h; path = Bolts/iOS/BFURL_Internal.h; sourceTree = "<group>"; }; + C5194995AA71A8339D3CCFB61EAB2D2F /* FoldingTabBar-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FoldingTabBar-prefix.pch"; sourceTree = "<group>"; }; + C56C90CA47F054F6B744E59125428689 /* PFEncoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEncoder.m; path = Parse/Internal/PFEncoder.m; sourceTree = "<group>"; }; + C6300BC631657D6ADCB1225268EF89BE /* FBSDKLikeButtonPopWAV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButtonPopWAV.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h; sourceTree = "<group>"; }; + C6BB6FF4ABE22CD5FED5099BB5DA52F2 /* RKErrorMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKErrorMessage.m; path = Code/ObjectMapping/RKErrorMessage.m; sourceTree = "<group>"; }; + C6E71AEE806FFD98620689D854D9722A /* RKNSJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKNSJSONSerialization.m; path = Code/Support/RKNSJSONSerialization.m; sourceTree = "<group>"; }; + C758B84874FBB01F1E2CE355BEA77660 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; + C79111BD3BBEC8AAB595BAD4F5BBFD90 /* PFURLSessionCommandRunner_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner_Private.h; sourceTree = "<group>"; }; + C82858F9F81EFCA744E061FDCCC6A76A /* PFErrorUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFErrorUtilities.m; path = Parse/Internal/PFErrorUtilities.m; sourceTree = "<group>"; }; + C829B0848EFB7C93E7C376D5D7D2C2D6 /* RKPropertyInspector.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyInspector.m; path = Code/ObjectMapping/RKPropertyInspector.m; sourceTree = "<group>"; }; + C8C072F8CBBD8377A84639A146342212 /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = "<group>"; }; + C93BEBD4E67678D6A0AF73501738D481 /* FBSDKLoginConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginConstants.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h; sourceTree = "<group>"; }; + C94BA5EE86AA9925359209A89FD97B37 /* FBSDKShareError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareError.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h; sourceTree = "<group>"; }; + C98118F3A80B2EF7FE15655CF5DEBF93 /* AFImageRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageRequestOperation.h; path = AFNetworking/AFImageRequestOperation.h; sourceTree = "<group>"; }; + C9C2F85D16952EEE0714A294ED8EA605 /* RKPaginator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPaginator.h; path = Code/Network/RKPaginator.h; sourceTree = "<group>"; }; + CAECEB62E59C8EBCF2BFBB361AC28C39 /* PFBaseState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBaseState.m; path = Parse/Internal/PFBaseState.m; sourceTree = "<group>"; }; + CB5646F48F8BFA683EF37662695C41B2 /* PFAnalytics_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics_Private.h; path = Parse/Internal/Analytics/PFAnalytics_Private.h; sourceTree = "<group>"; }; + CB84FD2F2C4E8EE506EE2E7DEC8B5F9C /* Bolts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bolts.h; path = Bolts/Common/Bolts.h; sourceTree = "<group>"; }; + CB98CBDFC30DCA09820317B62E92F7F2 /* FBSDKShareOpenGraphObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphObject.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m; sourceTree = "<group>"; }; + CBA3A41947E01023E459EDEF3961C5B6 /* libBolts.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBolts.a; sourceTree = BUILT_PRODUCTS_DIR; }; + CC5F6833B3EC9A54CD4FD6CAFC5E61B3 /* FBSDKShareUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h; sourceTree = "<group>"; }; + CCB649BFD246522D91365614C0B9DD9D /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = "<group>"; }; + CCE7602032D39C48B4B558FFA15A83BF /* PFSQLiteDatabaseResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseResult.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.h; sourceTree = "<group>"; }; + CCF08CD19CC8E81472432439E658917F /* libSOCKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSOCKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + CD2A28C739FE44128E510AA92662F1E1 /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = "<group>"; }; + CD4655E526EE9E09B596D7ADBA95AEC4 /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = "<group>"; }; + CD540DA6FE69BCC3A353182F52EFE0BF /* libRKValueTransformers.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRKValueTransformers.a; sourceTree = BUILT_PRODUCTS_DIR; }; + CD7593640586B201BCD9939EC8B13017 /* PFConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfig.m; path = Parse/PFConfig.m; sourceTree = "<group>"; }; + CD9BD9332CB70D61FC117651727426D5 /* PFFileDataStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileDataStream.m; path = Parse/Internal/File/FileDataStream/PFFileDataStream.m; sourceTree = "<group>"; }; + CF114CE627A26531EF546CEF5EFE34B2 /* PFSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession.h; path = Parse/PFSession.h; sourceTree = "<group>"; }; + CF2F482CF92A6BBCE8E46F23475EA72B /* PFWeakValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFWeakValue.h; path = Parse/Internal/PFWeakValue.h; sourceTree = "<group>"; }; + CF7867AD1B16B0D2CCD3E12388E307E6 /* FBSDKLoginKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKLoginKit-dummy.m"; sourceTree = "<group>"; }; + CFBF92A39FCC2FB32797855AB85DCAAE /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = "<group>"; }; + D01E708EE28BD1140C9AE0D2329F2E19 /* PFSQLiteDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabase.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m; sourceTree = "<group>"; }; + D02A52C086D84F65295E5DA1562069FC /* PFACL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACL.m; path = Parse/PFACL.m; sourceTree = "<group>"; }; + D03DA3189A149B152CEA7A11F9C76649 /* Bolts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Bolts.m; path = Bolts/Common/Bolts.m; sourceTree = "<group>"; }; + D0C7247AC09710B122EB8AEBC235DE9F /* RKOperationStateMachine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKOperationStateMachine.h; path = Code/Support/RKOperationStateMachine.h; sourceTree = "<group>"; }; + D13875E740DD491158EB8406E449FFEB /* PFAlertView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAlertView.h; path = Parse/Internal/PFAlertView.h; sourceTree = "<group>"; }; + D18D463A980049E0F00BD51E3DEFF7D8 /* FBSDKLikeControl+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeControl+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h"; sourceTree = "<group>"; }; + D195E34301F1EADE93BB0B93F8BFAF0A /* PFACLPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLPrivate.h; path = Parse/Internal/ACL/PFACLPrivate.h; sourceTree = "<group>"; }; + D1AF1FC1D27AABD7DC4C0948E9C059A3 /* PFSQLiteDatabaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseController.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.m; sourceTree = "<group>"; }; + D1C051EE39EC2369E3712F32F65AAD73 /* ParseInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseInternal.h; path = Parse/Internal/ParseInternal.h; sourceTree = "<group>"; }; + D2DEC5DFFD198D1C75250B16D5369348 /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = "<group>"; }; + D2E0F8156813BEB961019EA1C361691C /* PFQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQuery.h; path = Parse/PFQuery.h; sourceTree = "<group>"; }; + D2FB78825DE91D3944F3483650D27E29 /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = "<group>"; }; + D31B782B1DDF351A513DA07076DEB77A /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = "<group>"; }; + D347E102CA6826F9924372BD14C67494 /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = "<group>"; }; + D3B208164182946BFFFE3BB33CF2BEC1 /* AFXMLRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFXMLRequestOperation.m; path = AFNetworking/AFXMLRequestOperation.m; sourceTree = "<group>"; }; + D4A6B0E6E31C764CA9C4AE79EB0572D4 /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = "<group>"; }; + D4B02834ED165224ED2B72E17A23F1C7 /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = "<group>"; }; + D4C698542F4955E8A40A8D39035EDAAC /* PFCloud.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloud.m; path = Parse/PFCloud.m; sourceTree = "<group>"; }; + D4ED889D5C4216E8C328B8142E67A9CA /* PFObjectEstimatedData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectEstimatedData.h; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.h; sourceTree = "<group>"; }; + D52925260ED38A39BE15E60EFB8E7B49 /* FBSDKMessengerIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessengerIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m; sourceTree = "<group>"; }; + D558BDA6C0DE3DCBFD4EB1B7FB8D2C72 /* FBSDKURLConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m; sourceTree = "<group>"; }; + D72826DF2E94C85D334B52CF10098D1A /* PFQueryPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryPrivate.h; path = Parse/Internal/Query/PFQueryPrivate.h; sourceTree = "<group>"; }; + D748BF0E60AF7374125A323AB6FA6176 /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = "<group>"; }; + D74B454C0FDB49038C515C190B7D0040 /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = "<group>"; }; + D7CCA908675FF8F62C1721B4D2229BEA /* PFPinningObjectStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningObjectStore.m; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.m; sourceTree = "<group>"; }; + D7FC083129BF68FB4CB980C41B463B48 /* PFQueryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryUtilities.h; path = Parse/Internal/Query/Utilities/PFQueryUtilities.h; sourceTree = "<group>"; }; + D807F253C1FC0EAD584DFA49AC3AFFE7 /* ParseModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseModule.m; path = Parse/Internal/ParseModule.m; sourceTree = "<group>"; }; + D85AEEF23A439D7C61100E8D5EFE0203 /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = "<group>"; }; + D956488480F1233FFF8403DE1801CEC9 /* RKMIMETypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMIMETypes.h; path = Code/Support/RKMIMETypes.h; sourceTree = "<group>"; }; + D98DD91B0C85D183FC3778CD8BF3EA40 /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = "<group>"; }; + D9BF17D12A6931CC30A002B5C28BF065 /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = "<group>"; }; + DA45B085FFDF032332BDCB8BFF793E5C /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = "<group>"; }; + DA54D490C8B9FDBC6989E68EFA54AF6D /* PFCoreDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreDataProvider.h; path = Parse/Internal/PFCoreDataProvider.h; sourceTree = "<group>"; }; + DA6483DCB5207821171D8E1785A354EC /* FBSDKAppInviteDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h; sourceTree = "<group>"; }; + DA692944B964141F5AC05B406C0139AE /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = "<group>"; }; + DA8FE461F464D9C9483CDB150140EAF0 /* PFKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeychainStore.m; path = Parse/Internal/PFKeychainStore.m; sourceTree = "<group>"; }; + DAC38063B09099340C9BF218DC2CD4D2 /* PFURLConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLConstructor.h; path = Parse/Internal/HTTPRequest/PFURLConstructor.h; sourceTree = "<group>"; }; + DB1A535EDDE87E526D1C66FA9BEDAE70 /* PFCommandRunningConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunningConstants.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.m; sourceTree = "<group>"; }; + DBBFF8049227DD76047C14A4FC7F378D /* FBSDKSendButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSendButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h; sourceTree = "<group>"; }; + DBF30E4A65710CFBCCC809C891B94888 /* ParseModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseModule.h; path = Parse/Internal/ParseModule.h; sourceTree = "<group>"; }; + DC01BFEAAAC847F4F08D2481C7229EEE /* PFUserAuthenticationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationController.h; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.h; sourceTree = "<group>"; }; + DD38F8B2DEDE8021308CAA1FD5E08EA0 /* TKState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKState.m; path = Code/TKState.m; sourceTree = "<group>"; }; + DD4352603F7BBCDFDFBF51AA7E5470D8 /* PFPushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushState.m; path = Parse/Internal/Push/State/PFPushState.m; sourceTree = "<group>"; }; + DD5C257CFF734FBADEC42260C86AF53A /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = "<group>"; }; + DD920E6012362DC614A1701B8499680B /* lcl_config_components_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_components_RK.h; path = Code/Support/lcl_config_components_RK.h; sourceTree = "<group>"; }; + DE71C8926E171BD5AB6618D07D0A3797 /* PFACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState.h; path = Parse/Internal/ACL/State/PFACLState.h; sourceTree = "<group>"; }; + DF22EF5561792630E4B16C5A5D546054 /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h; sourceTree = "<group>"; }; + DF2A4D83628FCB3153D053BF5093B58A /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h; sourceTree = "<group>"; }; + DF85D1A5A93CD13D748D47C555B565CA /* RKRoute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRoute.h; path = Code/Network/RKRoute.h; sourceTree = "<group>"; }; + DFD5810B96B239C3591705FE5D26D379 /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = "<group>"; }; + E0812753D9AFC5C954E63E141EC3C899 /* PFInstallationIdentifierStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.h; sourceTree = "<group>"; }; + E1FB03A638286D34951A35082DC8829E /* RKBenchmark.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKBenchmark.h; path = Code/Testing/RKBenchmark.h; sourceTree = "<group>"; }; + E276164BF784A894BA33B42E12F10CCE /* PFCachedQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCachedQueryController.h; path = Parse/Internal/Query/Controller/PFCachedQueryController.h; sourceTree = "<group>"; }; + E353BD446B09E846E43AE7A8C9FBE5AA /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = "<group>"; }; + E3CC799DD4BB9892F589E02F63692D70 /* PFCurrentUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentUserController.m; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.m; sourceTree = "<group>"; }; + E3F86397116A780E41E893B85EDECB42 /* RKResponseMapperOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKResponseMapperOperation.m; path = Code/Network/RKResponseMapperOperation.m; sourceTree = "<group>"; }; + E4D8C8E5159871AD5FA5B7332A649FB5 /* PFOfflineQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryController.h; path = Parse/Internal/Query/Controller/PFOfflineQueryController.h; sourceTree = "<group>"; }; + E4EE8B2F0AF96372A1E5A8E576C9B17A /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = "<group>"; }; + E4FF2B92D70AA85F5430FA255B5930B8 /* FBSDKLoginManagerLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLogger.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m; sourceTree = "<group>"; }; + E566B5A1AF002DF94450B717E7E8A195 /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = AFNetworking/AFNetworkActivityIndicatorManager.m; sourceTree = "<group>"; }; + E57F847AAD9A19486F1EB1BA4A0C9071 /* PFURLSessionFileDownloadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionFileDownloadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m; sourceTree = "<group>"; }; + E5AE21B40FF68080B94A984303BBCF2F /* PFUserAuthenticationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserAuthenticationController.m; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m; sourceTree = "<group>"; }; + E5F9060B3223AC9783E8EC3F9FD5582A /* PFSubclassing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSubclassing.h; path = Parse/PFSubclassing.h; sourceTree = "<group>"; }; + E601C5D0D43FA69BCDE6E2ECFF6B02CC /* FBSDKCoreKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKCoreKit.xcconfig; sourceTree = "<group>"; }; + E62E80C06B8D2394C56D10220D1CCB6F /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; + E632D3BFE8814A4C59897AC48C2FEAB7 /* PFObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObject.h; path = Parse/PFObject.h; sourceTree = "<group>"; }; + E6EBF6F7C6F610013CFE4E847BD798F8 /* RKObjectManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectManager.h; path = Code/Network/RKObjectManager.h; sourceTree = "<group>"; }; + E736754D92F661C38E69F1CD3C7845B0 /* FBSDKAccessTokenCacheV3_21.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_21.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m; sourceTree = "<group>"; }; + E7502CBF5FF5DDC2E45F3550840F4429 /* RKResponseMapperOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKResponseMapperOperation.h; path = Code/Network/RKResponseMapperOperation.h; sourceTree = "<group>"; }; + E758DEF5BEC8EEC9032BAC8EAEAA4C51 /* AFURLConnectionOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLConnectionOperation.m; path = AFNetworking/AFURLConnectionOperation.m; sourceTree = "<group>"; }; + E76FEBC923D494E63C53B86C5D25ED29 /* PFPropertyInfo_Runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Runtime.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h; sourceTree = "<group>"; }; + E7CB4124E5934CC10279CE22C1F3D5E5 /* FBSDKShareUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m; sourceTree = "<group>"; }; + E8152227AD2D6CE25BC7888D919F6BD3 /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = "<group>"; }; + E8466657B806FC125F113617F7DD42A9 /* FBSDKShareDialogMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialogMode.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m; sourceTree = "<group>"; }; + E89848483ABCCAEAAEDD2FF9965D52D7 /* PFKeyValueCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache.h; sourceTree = "<group>"; }; + E8BE55CB57DEE8420789C65645ABEFF9 /* RKISO8601DateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKISO8601DateFormatter.h; path = Code/RKISO8601DateFormatter.h; sourceTree = "<group>"; }; + E8C9BEAE7AF61AB7F508B135815A7405 /* FBSDKLoginCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginCompletion.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h; sourceTree = "<group>"; }; + E93884F64E775CC94E71ED80F9FF08D4 /* PFPushManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushManager.h; path = Parse/Internal/Push/Manager/PFPushManager.h; sourceTree = "<group>"; }; + E9B097547004C3BD7DED3DEE274BAF78 /* PFMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMacros.h; path = Parse/Internal/PFMacros.h; sourceTree = "<group>"; }; + EA109C22D76467FD3FAB127642A18655 /* PFEventuallyQueue_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue_Private.h; path = Parse/Internal/PFEventuallyQueue_Private.h; sourceTree = "<group>"; }; + EA755DA8F373AF93B1752260FBCD0DEE /* RKObjectRequestOperationSubclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectRequestOperationSubclass.h; path = Code/Network/RKObjectRequestOperationSubclass.h; sourceTree = "<group>"; }; + EAB7C8D81307D67033C83A0116B517EA /* PFURLSessionJSONDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionJSONDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.h; sourceTree = "<group>"; }; + EAFB52AC58711E75BD9749D21BB34897 /* PFCurrentObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentObjectControlling.h; path = Parse/Internal/Object/CurrentController/PFCurrentObjectControlling.h; sourceTree = "<group>"; }; + EB41BA80088D3B05F30B5FE2B650F1E8 /* AFHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPRequestOperation.h; path = AFNetworking/AFHTTPRequestOperation.h; sourceTree = "<group>"; }; + EB51571C4C582A26F710845CFAA3AAFE /* FBSDKLoginCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginCompletion.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m; sourceTree = "<group>"; }; + EB7387ED21F22A0C3ACF3899E4EF7872 /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = "<group>"; }; + EBA8382EE38E29B647AAA8D688CC23CE /* RKConnectionTestExpectation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKConnectionTestExpectation.m; path = Code/Testing/RKConnectionTestExpectation.m; sourceTree = "<group>"; }; + EBB561046AC0CC3E56743E5BB664B0B0 /* RKTestFactory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestFactory.m; path = Code/Testing/RKTestFactory.m; sourceTree = "<group>"; }; + EC53BB2A4757BDC90938CF004EC14FD9 /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m; sourceTree = "<group>"; }; + ED7B68BD4BE4A662816CBE0A294F6500 /* RKTestFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestFactory.h; path = Code/Testing/RKTestFactory.h; sourceTree = "<group>"; }; + ED989C258CEF00D2F1701A073DD1C374 /* PFRESTUserCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTUserCommand.m; path = Parse/Internal/Commands/PFRESTUserCommand.m; sourceTree = "<group>"; }; + EDB3A467B0EABBCD096D79DC9AC1FD8C /* RKObjectMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMapping.h; path = Code/ObjectMapping/RKObjectMapping.h; sourceTree = "<group>"; }; + EDB85417DB00C6BC36233DD8F5D526A6 /* PFFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState.h; path = Parse/Internal/File/State/PFFileState.h; sourceTree = "<group>"; }; + EE27DAB32337BD835F6F1C44CE941739 /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = "<group>"; }; + EEB6507B7B3A6A759DE71FB3D665F68C /* RKValueTransformers-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RKValueTransformers-prefix.pch"; sourceTree = "<group>"; }; + EEBA4E2BFC884C1F4B170F5BC7DE8B77 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + EFB4DB04B2AB3F83A62C1D8799687945 /* PFDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDateFormatter.m; path = Parse/Internal/PFDateFormatter.m; sourceTree = "<group>"; }; + F08BE85063341A7E769D75F5763E3946 /* FBSDKLoginButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginButton.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m; sourceTree = "<group>"; }; + F0CB7F600F18B609668913010F45E215 /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m; sourceTree = "<group>"; }; + F0CFA77570DB7AAAE7861BC27A0A45A3 /* Testing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Testing.h; path = Code/Testing.h; sourceTree = "<group>"; }; + F120433DCBA609FFCA1AC8D7E66C715F /* PFGeoPoint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFGeoPoint.m; path = Parse/PFGeoPoint.m; sourceTree = "<group>"; }; + F141BBF337790457F2DAF41F1F0011E0 /* PFQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState.h; path = Parse/Internal/Query/State/PFQueryState.h; sourceTree = "<group>"; }; + F16E9555C16A15C09F6E739388F4FE89 /* FBSDKSharePhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhoto.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h; sourceTree = "<group>"; }; + F196DD5AE8EA853E4EC89AF912198556 /* FBSDKLoginManagerLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLogger.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h; sourceTree = "<group>"; }; + F197F5F3111E02DC7CFE618154DE5269 /* PFPushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState.h; path = Parse/Internal/Push/State/PFPushState.h; sourceTree = "<group>"; }; + F19E08580DB71ED59755E30D19440C85 /* FBSDKTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m; sourceTree = "<group>"; }; + F323D6CA68A5402E8D8D781B37B2A91C /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = AFNetworking/AFNetworkActivityIndicatorManager.h; sourceTree = "<group>"; }; + F3BDAD35FE37E535B22528CF954B4332 /* RKValueTransformers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKValueTransformers.h; path = Code/RKValueTransformers.h; sourceTree = "<group>"; }; + F3C909089E36795B0294E159BE83E353 /* PFAnalytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalytics.m; path = Parse/PFAnalytics.m; sourceTree = "<group>"; }; + F43FCDFCE19EE9AB392AF998DE9DF52F /* FBSDKShareKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKShareKit-prefix.pch"; sourceTree = "<group>"; }; + F4E257A30B52BCA02E3AD226A28156E6 /* RKPathMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPathMatcher.h; path = Code/Network/RKPathMatcher.h; sourceTree = "<group>"; }; + F5500331C2AE5ADC39A1AB40A74529FB /* BFAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkResolving.h; path = Bolts/iOS/BFAppLinkResolving.h; sourceTree = "<group>"; }; + F55189D706C6F0A7E7F9257ACEE9173C /* PFApplication.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFApplication.m; path = Parse/Internal/PFApplication.m; sourceTree = "<group>"; }; + F5B16E71107186CBE636A34F02C7C0DC /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = "<group>"; }; + F62A65D495C27089A10FB5943BF3A012 /* RKTestNotificationObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestNotificationObserver.m; path = Code/Testing/RKTestNotificationObserver.m; sourceTree = "<group>"; }; + F632B4241467D0929F63833DA56E7443 /* BFAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkTarget.m; path = Bolts/iOS/BFAppLinkTarget.m; sourceTree = "<group>"; }; + F6A1AA7E3400E1B0C28309A8DB53D160 /* PFCachedQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCachedQueryController.m; path = Parse/Internal/Query/Controller/PFCachedQueryController.m; sourceTree = "<group>"; }; + F6C85F64DFA1EA9920744621BC7D1A3A /* TransitionKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "TransitionKit-dummy.m"; sourceTree = "<group>"; }; + F743580826B5C1B915C7431CC5442853 /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTaskCompletionSource.h; path = Bolts/Common/BFTaskCompletionSource.h; sourceTree = "<group>"; }; + F74C54135672148EAEB4C34B19F94625 /* PFRESTCommand_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand_Private.h; path = Parse/Internal/Commands/PFRESTCommand_Private.h; sourceTree = "<group>"; }; + F786873C808C35EC234BC3F1215CB314 /* BFTask+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "BFTask+Private.m"; path = "Parse/Internal/BFTask+Private.m"; sourceTree = "<group>"; }; + F7C8F9BB226F40C4F7CE5B08939D6900 /* FBSDKShareLinkContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareLinkContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h; sourceTree = "<group>"; }; + F7E3E2499E10690D5CDBED7CFBB46CF4 /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m; sourceTree = "<group>"; }; + F84F292500C57DA9F2C1AF294A4409F6 /* FBSDKLoginManagerLoginResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLoginResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h; sourceTree = "<group>"; }; + F8562AEEC62C495A2C6A5DCD3FA7ADDE /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = "<group>"; }; + F89DFF8EBC2C4ED2A61178F8775BBBE3 /* FBSDKAppGroupContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m; sourceTree = "<group>"; }; + F90CCDF16C40C8073020CB017D02AC1D /* RKURLEncodedSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKURLEncodedSerialization.h; path = Code/Support/RKURLEncodedSerialization.h; sourceTree = "<group>"; }; + F92FBE5E1BD5C2804DA747E481794947 /* PFObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectUtilities.m; path = Parse/Internal/Object/Utilities/PFObjectUtilities.m; sourceTree = "<group>"; }; + F9A89F784DA1F7AF78D9C06E04DAFF30 /* SOCKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SOCKit.h; sourceTree = "<group>"; }; + FA149A0B2AF7E3F3EC903816EC962CFA /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = "<group>"; }; + FB06B7B325850C15B6DC9083FA9CC5C3 /* PFObjectFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCodingLogic.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.m; sourceTree = "<group>"; }; + FB2D447FC39896FA1BCA5534A076AB55 /* PFFileController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileController.m; path = Parse/Internal/File/Controller/PFFileController.m; sourceTree = "<group>"; }; + FBA2D90AB903058236DD7AF5CE16650F /* RKAttributeMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKAttributeMapping.m; path = Code/ObjectMapping/RKAttributeMapping.m; sourceTree = "<group>"; }; + FBD9F8EA50253D95A8AD97BAD86E10C0 /* PFJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFJSONSerialization.h; path = Parse/Internal/PFJSONSerialization.h; sourceTree = "<group>"; }; + FC1F61CB54C0673DD6D3F506261C1797 /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m; sourceTree = "<group>"; }; + FC83BAA3A130DE0ECB081A56D1DB7917 /* FBSDKShareOpenGraphObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphObject.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h; sourceTree = "<group>"; }; + FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + FD20928F422E57B36F0AF7C03A285F25 /* PFUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUser.m; path = Parse/PFUser.m; sourceTree = "<group>"; }; + FD283F04FC1522E51E474E074287984C /* PFQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryController.h; path = Parse/Internal/Query/Controller/PFQueryController.h; sourceTree = "<group>"; }; + FDE18DC658FE492CB30B98AA058CD6FA /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = "<group>"; }; + FDFB0625E5A8DE395A3BCB617FCD612D /* PFNullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNullability.h; path = Parse/PFNullability.h; sourceTree = "<group>"; }; + FE161616D496831D4089B8F6813DBE39 /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = "<group>"; }; + FE17A124811A1964D6CA532CA4312C8C /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = "<group>"; }; + FE19DAED716CA2A2722DED05F8DB92B4 /* FBSDKShareOpenGraphValueContainer+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareOpenGraphValueContainer+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h"; sourceTree = "<group>"; }; + FE83EAA7D7F81F996C8A1FCC962D6EED /* BFAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererController.m; path = Bolts/iOS/BFAppLinkReturnToRefererController.m; sourceTree = "<group>"; }; + FF107198F4983B8531483E65440A0F15 /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h; sourceTree = "<group>"; }; + FF5EAF38BE17B63D9DB9D69544387A2B /* FBSDKAppGroupJoinDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupJoinDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m; sourceTree = "<group>"; }; + FF68CFC1D62A76A5756770DE83EAC745 /* PFConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConstants.m; path = Parse/PFConstants.m; sourceTree = "<group>"; }; + FF93EF6EEE6883E55F75A0465EC5735F /* RKTestNotificationObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestNotificationObserver.h; path = Code/Testing/RKTestNotificationObserver.h; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 0DF38BD589367916C785FD03B2C12311 /* Frameworks */ = { + 06397B19B46BC23B4020A7016F06E806 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 097DE14824DA65BDF81E4C5A2D73566F /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4401489EF5E0F90A00960F1C61D98D00 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 21D9580410D5D36914C1738EF4824FE5 /* CoreGraphics.framework in Frameworks */, - B93DA9F9AAAC90B3CF0D7E92863E1E1A /* Foundation.framework in Frameworks */, - 19E8ADBADA6FB3E090DE63349A607C83 /* MobileCoreServices.framework in Frameworks */, - CD078679449BAC5362C1E6A7EC58D0F6 /* Security.framework in Frameworks */, - 8AD697C3CC37B002B3D24F61B96E3774 /* SystemConfiguration.framework in Frameworks */, + BB166C005FECECA9EEC18109D86F3CE6 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1762E4D7A46B35D56224AE0D4FAC1493 /* Frameworks */ = { + 4B6ED4A1B1BED7DD189B582654C25EB6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8BF3DC4F915897B5B26F59D30BBECBA7 /* Foundation.framework in Frameworks */, + D8B32C5FF3597EEDD220A394295B194B /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1F2E35A78CF2189DDA736BBDBEE166CB /* Frameworks */ = { + 4B6FCC51F24F6991AAA4CC61597FD2DA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6B9C6C5B8151AF0FFE0EADD023048BE5 /* Foundation.framework in Frameworks */, + 8D9641967C1ACD51CE3ACACF1B1D2860 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 324C7B0261F2E0EEC195A44011E1B1F7 /* Frameworks */ = { + 6772349FF73FC6301A658A55439FAB73 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 25E65D69B09FF84C6B52973D81385EAD /* Foundation.framework in Frameworks */, + 0277D1C85C0C1E1358C7AAD044B40757 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5972652DA8E3CB6256417EE7BCB541BA /* Frameworks */ = { + 8303124DDA063FE89C9AEFC94E6AB54E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C2406F161CC120D07B885E6D8D930DB3 /* Foundation.framework in Frameworks */, + 0D0CFD86DC5D95BB25D65B84461D031B /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 630C69A258B987845E55E720F274F821 /* Frameworks */ = { + AB6236FDABEA71A344A72311A20E9129 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E8FF623864D7334389BCFE69E83CE7C0 /* Foundation.framework in Frameworks */, + 60F370DA778C2C58337885BA2E21047C /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 672DA56A5E00AC88E14A8FCA7D0851AA /* Frameworks */ = { + CA3A57779CCE39F4B6C39B2E0BD75892 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ACA1A7271082155E745CD2B20E95ECA1 /* Foundation.framework in Frameworks */, + 06B899F5B92A7366CDCCD71E3C28E039 /* CFNetwork.framework in Frameworks */, + 1CF19FB5FE95E9F9BB9D9249F8A28276 /* Foundation.framework in Frameworks */, + 0A444B70A312CB6B95D395C0CC7CD98F /* MobileCoreServices.framework in Frameworks */, + 350EB8FBF8DEF90D9AF0E48E068BFA92 /* Security.framework in Frameworks */, + B8E9E3E768F9393C56CCF30EF6E92D76 /* SystemConfiguration.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 677EAF3CA8C9E0CED61D9E6EFCCE8FDF /* Frameworks */ = { + D3AB408B503F4AE1027F1851D3201F2E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E3A082B2A0A8612B107247EC76E801BD /* CFNetwork.framework in Frameworks */, - A754C4958F744E68B858C4D0F1601B43 /* Foundation.framework in Frameworks */, - DA2BAF58CBAF597A7E6562226C6A40BC /* MobileCoreServices.framework in Frameworks */, - 09219068B5A97176CB293592657A1C1F /* Security.framework in Frameworks */, - DA6FEF39DE15D4138126AC5AB7118A35 /* SystemConfiguration.framework in Frameworks */, + 9D8A1173432B3D5D943B800A5A5E080C /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 67CFF8AD8DC741D9FD2BA13A98B8BEF0 /* Frameworks */ = { + D6260A8A745BE7433644EE05C6F9EE0A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8FE5788EF14F6E44BD11EA5B8C3C1587 /* Foundation.framework in Frameworks */, + 09B7E2F7D97660C4794BE77A6D3F805A /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 964BF1A7B9CA108D543A5A683388E78B /* Frameworks */ = { + E2152948655C0A221BBD699822F629C0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8C2E0348444B4CCD4A79B4F0B7E2C680 /* Foundation.framework in Frameworks */, + C5BCED302898250D42DAB9622E61A2D2 /* AudioToolbox.framework in Frameworks */, + 04CF8AD033C179325590EA52685AE224 /* CFNetwork.framework in Frameworks */, + 02437AFB910783C6BD25E492758C46D9 /* CoreGraphics.framework in Frameworks */, + 46C77E33FBFB6CDD2042AFC7251C0192 /* CoreLocation.framework in Frameworks */, + E81D0A4FB179B72572B6E7521484EB16 /* Foundation.framework in Frameworks */, + 976C79EBB302D6FD69733210FFC97DDF /* QuartzCore.framework in Frameworks */, + DE61C9B48F5213CCAB8012BE4C261842 /* Security.framework in Frameworks */, + 75092C6F60330AA447A66ADEB43581C6 /* StoreKit.framework in Frameworks */, + AC70F2D05DDEE9CA1E15F5FBC259E974 /* SystemConfiguration.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DF734AC2570E46994A4B54AF3E2E31BF /* Frameworks */ = { + E3E27D1553990F260E018F2FD31F237C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7C4E7B55808C75F154F7070302DAD51B /* AudioToolbox.framework in Frameworks */, - A793DA615575121ABF52B15F879ED84C /* CFNetwork.framework in Frameworks */, - EB6BD184A263DBDE2AA3BE77EF737DAD /* CoreGraphics.framework in Frameworks */, - F8CA9FA9E14B2BB4F47A0DCCA484873B /* CoreLocation.framework in Frameworks */, - 83C7505E35D5F6721B5600AC74ADAA16 /* Foundation.framework in Frameworks */, - FDD7628668487CAD152512E075B03461 /* QuartzCore.framework in Frameworks */, - AFE0272593838261A88EF7BD17E68888 /* Security.framework in Frameworks */, - F3099F931E5CA8CA89707436CC765F2D /* StoreKit.framework in Frameworks */, - DC4AFBD593CD7C15E8C85BE50C2A4DA4 /* SystemConfiguration.framework in Frameworks */, + 3BC5621A2DA38E302E4D3A891CAD35CE /* Foundation.framework in Frameworks */, + 647E650A08B67B558A6C1A0041544B1D /* QuartzCore.framework in Frameworks */, + B2DB66509B953232772CC24828B2A2D6 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - EC1C8A09858403D758096FE64EC98281 /* Frameworks */ = { + FF1132C1F746513DE93738ED48AFAB38 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 56CA6CD50DF1F5886E48D96A2D18186C /* Foundation.framework in Frameworks */, + 195B7EACB9E277F950B7C1BC314BB968 /* CoreGraphics.framework in Frameworks */, + 18BA1F40271FF44B3A0508ABFD1600FF /* Foundation.framework in Frameworks */, + 805398D3248C43C8DE072375177A8354 /* MobileCoreServices.framework in Frameworks */, + 0A45B6A339543EC83754D28F87523802 /* Security.framework in Frameworks */, + 88B5193C02621657A8A1599944D7966A /* SystemConfiguration.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0130513E0255D02467FEFD0F582D89F7 /* FBSDKCoreKit */ = { + 037C0CA694176A3C0915F62C9D20B3E6 /* Targets Support Files */ = { isa = PBXGroup; children = ( - 25C2C3F30E3A330D39A55F4B043B9186 /* Support Files */, - DB7767554DE90C6D7F4BD0C504716532 /* arc */, - 315BCA9F4FC37F26FCA0A241609C1D8C /* no-arc */, + B3D1D13E0C6553800746CB8FD61CF946 /* Pods */, ); - path = FBSDKCoreKit; + name = "Targets Support Files"; sourceTree = "<group>"; }; - 02F7B739B92EB301B3782F121C4BA83E /* Parse */ = { + 04461214A708CDEEF3A5C282A64ACD80 /* Resources */ = { isa = PBXGroup; children = ( - BA51726FD1AA4091DA126768DFA80EE0 /* BFTask+Private.h */, - F82017D76300F1C06DB5151CF37A726B /* BFTask+Private.m */, - E9AD71E14E72EA9FB548AA268856C2EE /* PFACL.h */, - 622A44BCA22902069E3F240357CD45F3 /* PFACL.m */, - 661148537E08B421366ECAD30B9523D7 /* PFACLPrivate.h */, - 5DEB605CCA159256A3305ABB92ADED70 /* PFACLState.h */, - 2561AF367B0B04A8C83CD5E1C4F0C08E /* PFACLState.m */, - AD297F39854C24CB012AB880A8F72FE9 /* PFACLState_Private.h */, - 1414B4582D8A53F4321084D4EB5C3291 /* PFAlertView.h */, - A3D3B2AE6543B11628B3FD5B32D9E786 /* PFAlertView.m */, - CDD6D2BC7E281738DA57375BE59728C9 /* PFAnalytics.h */, - 0BBF841A16205C45B1396307D83A7373 /* PFAnalytics.m */, - 1A71824B576DDC6AD0FCFF11F0B133D6 /* PFAnalyticsController.h */, - BB282470029D499E3074A164AABBC66C /* PFAnalyticsController.m */, - BA77BF64FAFBF3F9E5DB590A4B0FB4A9 /* PFAnalyticsUtilities.h */, - 3EC5BDE29DEA58916F31388DB4B8EE2D /* PFAnalyticsUtilities.m */, - F8035743B5B17155E2E7D8224603A87B /* PFAnalytics_Private.h */, - 594B1C1B419F5D05CD82EE8F86518E69 /* PFAnonymousAuthenticationProvider.h */, - 6D28D403AA7A5A6F2AF7DDC6F991B98A /* PFAnonymousAuthenticationProvider.m */, - A9450452DCB495F010C9799C19CEDC25 /* PFAnonymousUtils.h */, - A7162605D551027C56A2A37B943994C7 /* PFAnonymousUtils.m */, - C69E58A7811CD06105D466195B801328 /* PFAnonymousUtils_Private.h */, - DD1DBE77FAE408E2C2A7ED2A4C1C8A7A /* PFApplication.h */, - 87ABBAD2B5A5CAAE0AC4B4ACCADC1330 /* PFApplication.m */, - D7C3DDABC4BC501093A232FA20368F5D /* PFAssert.h */, - 29EE40865F4426262E949C4C302BF226 /* PFAsyncTaskQueue.h */, - 00EA57E2C906799ED67EBCFC4089A02C /* PFAsyncTaskQueue.m */, - 1E014614141F279B34D0F4EAFD7F4DFD /* PFBase64Encoder.h */, - 23D64D6AB75296AE7976248043BC6313 /* PFBase64Encoder.m */, - 9C258A4DB466828F6F75FA69D17B7A98 /* PFBaseState.h */, - 0BA6D617D6C18C4F2260EB0CCC8EFBEA /* PFBaseState.m */, - 2E0C4FA92D8641B9361554A63982E78E /* PFCachedQueryController.h */, - CCBA933D3A40B5D03B01E6CC64A2A3A5 /* PFCachedQueryController.m */, - CEC4CC0F1E5231E5AE5C1E4101E7CD5F /* PFCategoryLoader.h */, - B2B9FD0D9C17DD96730E88C3240D975F /* PFCategoryLoader.m */, - 016D06C44A3331089F9E5A1C6DFB4678 /* PFCloud.h */, - 5B613D1BE89F1E4403B99C3E5DCCD2E4 /* PFCloud.m */, - 62F4D5228E2384499C80602BA6C921F4 /* PFCloudCodeController.h */, - B6C82743CE345D0715A174740BEB724A /* PFCloudCodeController.m */, - 0DA2C4DB80EFCE1F0AA9350F23EA627D /* PFCommandCache.h */, - 1C7FC38C024D78EC53EEDA5E5B3C97E1 /* PFCommandCache.m */, - 96A0F952DC35450695E4E710C00DA528 /* PFCommandCache_Private.h */, - 0EB95732F4D4CA886A89094CFD467D4E /* PFCommandResult.h */, - 1E8E523D8195E9B1B9C90976CF0540B8 /* PFCommandResult.m */, - 8CA449F861B70FFB8296D4B48C050FBE /* PFCommandRunning.h */, - 445422ACF05285D68F70D3C51879712A /* PFCommandRunning.m */, - 12DC95CF2C7DDD42977C94C97EB1637C /* PFCommandRunningConstants.h */, - CA33FED366B628BCA0A5D7DFD91E87D9 /* PFCommandRunningConstants.m */, - 9B3BA8EBCD60ED1F31A2098334DB3278 /* PFCommandURLRequestConstructor.h */, - 4CC4419E8BD5B8ADC92BB34FE1D6FC78 /* PFCommandURLRequestConstructor.m */, - 90E50367F9BC45C10EACF85808FF75BC /* PFConfig.h */, - E6A603960FAC56B3596B29FEDBED2A1A /* PFConfig.m */, - 3951D3E423BE2ABCBF9DE0E746CE311B /* PFConfigController.h */, - 0CA7CE3E5F98F41F8574F6D183CE2263 /* PFConfigController.m */, - 91F0975F1A27413EC0622237C3680849 /* PFConfig_Private.h */, - EC9CD4C5A5B393EB5D90DB05D6FFB6BC /* PFConstants.h */, - 09F2C7C83A1343D93FFA99723D546B25 /* PFConstants.m */, - 4A58330FB326FE4593BBBA3411078B43 /* PFCoreDataProvider.h */, - 975F4BA7752243B51CF71A4F5AF85FBB /* PFCoreManager.h */, - A153F0DEB24B9E8B5723EFCB6F33B536 /* PFCoreManager.m */, - 8D53FBFB124273A95BC60A578E870E0C /* PFCurrentConfigController.h */, - 2D3002035E29C7449C791970871E10EF /* PFCurrentConfigController.m */, - 02EDCF1DE69B8C5E506B9C40F67F083F /* PFCurrentInstallationController.h */, - 9E09472B01CB2E27BD636136A0066956 /* PFCurrentInstallationController.m */, - 55C549F5B8CF223004416FA7639F9E69 /* PFCurrentObjectControlling.h */, - 87B65FF1A2D48D2F1F0BF29F0A571A28 /* PFCurrentUserController.h */, - C74E4DFE39D451AE68F6CB856DEF1D8B /* PFCurrentUserController.m */, - E09085454F042573BE0A1BCBEF8DAE7A /* PFDataProvider.h */, - C4F10ABEFA5CCF0EC39AA05DC7FCBE4A /* PFDateFormatter.h */, - 0D1520ADAF247AF6031216CDA841A5E1 /* PFDateFormatter.m */, - A0D0E260844C900A61F03ACD640BF515 /* PFDecoder.h */, - 5221830B08D22B86274AFCA65E93CD48 /* PFDecoder.m */, - 0E290B1D6DDD48B2FD0139DCD4B3348D /* PFDefaultACLController.h */, - FD44A295575FA6E021F34AF62C1FBB39 /* PFDefaultACLController.m */, - 99E458C281E7B58FB283CD3DD6EC7CC7 /* PFDevice.h */, - FACB310E0E9E78B498E89B7F93B98CBF /* PFDevice.m */, - D3C67EEA3F3F6628396F657744BD378C /* PFEncoder.h */, - C4FECFD27C3DF785E2765FF781CE87C6 /* PFEncoder.m */, - A83514721328D0D297D02197D617EB33 /* PFErrorUtilities.h */, - 4D575196CED3C1360574CAC6B7FE08BE /* PFErrorUtilities.m */, - AE8C24FB91D52A7A902E7B6939B6EFC6 /* PFEventuallyPin.h */, - 133D805C2313FF465674A3486EA36F90 /* PFEventuallyPin.m */, - 6CFDCCA1B3C5C08CF8E7EE0036580FCA /* PFEventuallyQueue.h */, - 4077DBC410381FA11AC51C618CB81140 /* PFEventuallyQueue.m */, - 81D47F8C37692E3865019B411BDAEE3A /* PFEventuallyQueue_Private.h */, - 556A94A3870C01C3B2634E1838E2D0B6 /* PFFieldOperation.h */, - 3D3E83167931010DA87FD972EABFF257 /* PFFieldOperation.m */, - F3E2913672AE575B7293488062F00FD0 /* PFFieldOperationDecoder.h */, - 7FFC8DCDDC208CBB816476EDF7085EDB /* PFFieldOperationDecoder.m */, - 034F3E05ED59E7ABCE82F0A079D5958F /* PFFile.h */, - 9D91308BAD322ECAA4960D4D23C9A2C3 /* PFFile.m */, - 3B92CFB0FD23A754847A9505BDCE2BA5 /* PFFileController.h */, - 7B85AF138E6CEEDF8291F16978BAEAEC /* PFFileController.m */, - E8E31EEB8DA53180013FB1201C82EE81 /* PFFileDataStream.h */, - EAA3AE48267B27C576513BFE574F8AF8 /* PFFileDataStream.m */, - E39DE60706FCD15CB26738B50295DCD8 /* PFFileManager.h */, - 2554B79C64ECEFCFEE123612E3C5F6CA /* PFFileManager.m */, - 4DD35C52996E74EF6D68ED8C8CB3C5B1 /* PFFileStagingController.h */, - 992AFE5C5E747C1601862BCDAA0A7DD8 /* PFFileStagingController.m */, - FA021E3B9768C5B58BAAFC752622E888 /* PFFileState.h */, - 80535C82708945F05047D894446087A4 /* PFFileState.m */, - 922185D0977C1F99BFB47CC3EB889F72 /* PFFileState_Private.h */, - F0211D9EDFAAA5807FCBE1B8C8F4B662 /* PFFile_Private.h */, - 29DF82C03CFD45F592C6F19AE103BA06 /* PFGeoPoint.h */, - 27DA1A860C5602304E507058E4A25B5B /* PFGeoPoint.m */, - 37FB4F3FA6D54D38DE79356A63834230 /* PFGeoPointPrivate.h */, - 5D56D65949ED50DA5A35630E0B93DDB5 /* PFHTTPRequest.h */, - D3EB8E5131AAEA8F16E17BF016FB5B61 /* PFHTTPURLRequestConstructor.h */, - C0F87532434A412B133BDCA0E76634EA /* PFHTTPURLRequestConstructor.m */, - 010267A36F8E4347A122ABBE2CC67F43 /* PFHash.h */, - 5624419A8EA110F018B6E1D6B2D454AC /* PFHash.m */, - 05D04D86B15EAD72ACA964052E4E5C94 /* PFInstallation.h */, - 2C3E03A90536DD5330B859DFE31570B6 /* PFInstallation.m */, - 4DC41CC348E544292C37294C5A1B50C4 /* PFInstallationConstants.h */, - 8B187D31A1B35CF60BBFE402E7FEBF55 /* PFInstallationConstants.m */, - 3CE46AC0E13A1092344C773AC969D749 /* PFInstallationController.h */, - E95864D7FD5998A21194F9D8966583E5 /* PFInstallationController.m */, - F216A6FBB231D294F8E752EB582540AF /* PFInstallationIdentifierStore.h */, - 886A664252B9125A43A5E8CDBC0A2C43 /* PFInstallationIdentifierStore.m */, - 3F97330408CBCB9866B2403F56722EED /* PFInstallationIdentifierStore_Private.h */, - 379C2A4AD2DFCF269463822AE535090C /* PFInstallationPrivate.h */, - CFF2742C181ACA4B29372E268153270F /* PFInternalUtils.h */, - A3B19063FF0B2F212D30AA107E73EAF3 /* PFInternalUtils.m */, - 0EAF15F0F0DEC2E2FEC93095CB96203C /* PFJSONSerialization.h */, - AAFC5698C81D8076342E19ECB0D2E550 /* PFJSONSerialization.m */, - FF82E57178981723142A0A7CBC372284 /* PFKeyValueCache.h */, - 15218D870F12055E685D3D03517191A4 /* PFKeyValueCache.m */, - 47BD5C685318CE8CD9CA1D43C28605B9 /* PFKeyValueCache_Private.h */, - 437CBC5E7E1B50CC1E72F15C88FF6AC7 /* PFKeychainStore.h */, - 1D9A8A5EA7D67587E22F112968E8FA29 /* PFKeychainStore.m */, - 26871A94013EE429FE6FE9F7ABF2A9A2 /* PFLocationManager.h */, - 482DBED41E33C8058B42A4F92B753528 /* PFLocationManager.m */, - D974B883607CC6537A01E19606D22B95 /* PFLogger.h */, - BE7E9FEA0A48E20BEAFE0E04D46D0913 /* PFLogger.m */, - 56E54211A06B3807A9F27AD7BEB6DA7C /* PFLogging.h */, - FBC88190F20BFFBCE3E07DD0D3914E48 /* PFMacros.h */, - 1EC7D96BC9F20D61C8C0611234289492 /* PFMultiProcessFileLock.h */, - 38E7251464FBD8CA6364DE9833E6D6E7 /* PFMultiProcessFileLock.m */, - CE9E97FF37E3D5E9F5A1F4E619520D56 /* PFMultiProcessFileLockController.h */, - 9779A223D892C242F0118CAD43BA556F /* PFMultiProcessFileLockController.m */, - EA90B11F9419C1CFB642C076EE6CCA4E /* PFMulticastDelegate.h */, - 52E8F3EA417ABBE16B32E6AD85C0A91E /* PFMulticastDelegate.m */, - A3D3F0FD5623B320704891A12D20A91A /* PFMutableACLState.h */, - F719BD99BA3538CAF974528DD1BA9EAF /* PFMutableACLState.m */, - 71D26DA17DCBC3B6CC47B2FCA63BF991 /* PFMutableFileState.h */, - C1B00FE95A9B3F0051AAD3A5D6CE141D /* PFMutableFileState.m */, - AE308F7FD55A37D38ABFDCED9CF0A8B3 /* PFMutableObjectState.h */, - B009D5CAE876F03463C42923FD1BF780 /* PFMutableObjectState.m */, - 9FAACBCE52471750369D9FA0ECEAEEE1 /* PFMutablePushState.h */, - 047273E0F6F9E9889E073EE49F2755C4 /* PFMutablePushState.m */, - 623C2B3361739718CF09561BA4D026B7 /* PFMutableQueryState.h */, - 10837937B6B53962D8F7B9D3F8E3EE03 /* PFMutableQueryState.m */, - 28C76500BA7B3265FA9C1FBF8EC034FF /* PFMutableRelationState.h */, - 3D37164FA87C3325903A708109C92A81 /* PFMutableRelationState.m */, - 20A09146C96CD4735D748F3A404D0813 /* PFMutableUserState.h */, - 81DB7CA7AE90A4BA6CA4297DF013CBB2 /* PFMutableUserState.m */, - 4E102EFF955C784214778B35DA87ECEF /* PFNetworkActivityIndicatorManager.h */, - A226C9DD413F0CCC4F3BFD7DE0A82A88 /* PFNetworkActivityIndicatorManager.m */, - BDEB88DA6AF7347263BC6911DB8411FE /* PFNetworkCommand.h */, - D4A9395593F078B48F3B87B9AC890E89 /* PFNullability.h */, - 874C68CE36C22FDD95A27779257F15A1 /* PFObject.h */, - 31EB18FA1114A3D648354CA9461243B5 /* PFObject.m */, - C26C64018F45E6E09F72163E759ED45B /* PFObject+Subclass.h */, - A6AE518E9BB5E93989AFB92589707FBA /* PFObjectBatchController.h */, - AF32577C470A14D1ED63BB4B6492F464 /* PFObjectBatchController.m */, - 2CA3B417E38375FB5F145C27AD082AF9 /* PFObjectConstants.h */, - 457C5AA079BF304DBA165DC39799AC62 /* PFObjectConstants.m */, - 23887764BFA845B70B1FFB0552AC2706 /* PFObjectController.h */, - 73A13DAF02B6E8A824568229C50FBBD3 /* PFObjectController.m */, - 63C834523FBD7AC3D226D67DBCAB0F4C /* PFObjectController_Private.h */, - AE094855CA351D584BD24BBC12AFB3F8 /* PFObjectControlling.h */, - FE2ECE2F8FDD3511406B222FD89E37A5 /* PFObjectEstimatedData.h */, - 1C6660D91D6167EB784831B0571E2F52 /* PFObjectEstimatedData.m */, - DD24927EB5C08D76DB2607695C173E2E /* PFObjectFileCoder.h */, - 53F32875FD8A66082F85E268CB4BC011 /* PFObjectFileCoder.m */, - C9335D1EB92B88713E8308C849C0EDF6 /* PFObjectFileCodingLogic.h */, - 6603759A59107C9EA23B8A6F0AC4524B /* PFObjectFileCodingLogic.m */, - F9D538F104DE1F531CF0C5A8DAA4E04B /* PFObjectFilePersistenceController.h */, - E8201C8136FA5647FA6E3D62C4EE1974 /* PFObjectFilePersistenceController.m */, - 894852C03388A8B63E64B0E4307DA4C4 /* PFObjectLocalIdStore.h */, - 4DFEAC992B1C77BFB80D23F81E446DDC /* PFObjectLocalIdStore.m */, - F51CD3717AB71F5E10A96BA8B666AACE /* PFObjectPrivate.h */, - 7E8914751B900AC4DEF771BDEB8FE816 /* PFObjectState.h */, - F1E2800D7ABD0182A48B7D71B414FD92 /* PFObjectState.m */, - 461D15480309D56D3AA4AFA926B8B93C /* PFObjectState_Private.h */, - 7915B369685221642E067005F680B451 /* PFObjectSubclassInfo.h */, - A4E495589FA749FBC303F264C9C6B80F /* PFObjectSubclassInfo.m */, - CD8B46F21FA110AF5880D0648641BA7A /* PFObjectSubclassingController.h */, - 5CE58398E0BE8D266923D16A28663EB6 /* PFObjectSubclassingController.m */, - 9FBFA3525F472811286DDE3A9248666E /* PFObjectUtilities.h */, - 0CCED09AA914A9CA2759E1F53B53226E /* PFObjectUtilities.m */, - 579EAC1B8D13822158FB03F012D3B85C /* PFOfflineObjectController.h */, - F04D615547733AD44304C987C2896316 /* PFOfflineObjectController.m */, - 6D74017655C22EAC1CDB43F8CD2B468D /* PFOfflineQueryController.h */, - 7E2F75F68AFD577F425752D70A27C101 /* PFOfflineQueryController.m */, - D98AA728E2CAF01488250F97004A36A8 /* PFOfflineQueryLogic.h */, - 4D6E9F5DDD85504DE6DDBECF9E39A959 /* PFOfflineQueryLogic.m */, - 91BF5E929B1AC36CE7F99D1E1DC0ED30 /* PFOfflineStore.h */, - CC5344A37B8F373E012354E281A66841 /* PFOfflineStore.m */, - 1D9FA4BADE605736317EE1596FAAD3B1 /* PFOperationSet.h */, - 2515970C08E7445D9A26AC8952E7FE41 /* PFOperationSet.m */, - 46DE20F02F523C0B14736898D3E8BBAC /* PFPaymentTransactionObserver.h */, - 8786F55C6BCF0316006C8213CA9340CE /* PFPaymentTransactionObserver.m */, - CB354A886C3BB7D67D39EB3F5236AB3A /* PFPaymentTransactionObserver_Private.h */, - 587669D43EA945644A3A4CF47F37098B /* PFPin.h */, - 282B79F0BE2F4372C754A93C4D8D6B3F /* PFPin.m */, - 16ECC679D7E6944181A4143EBFFDF2B6 /* PFPinningEventuallyQueue.h */, - 7AE5F75C04FAC19C4B94C834EC0C4E96 /* PFPinningEventuallyQueue.m */, - E305C7FF3E6F92A0B09870D8A60E8D38 /* PFPinningObjectStore.h */, - C3ADC7027A54E385AA38C96D3138EFFF /* PFPinningObjectStore.m */, - DBFFDA63A4181BD3B195487A833CECE4 /* PFProduct.h */, - 5A3A3C984D254DD2D0058DD599EAD348 /* PFProduct.m */, - E44E35724EFF38F735F8A1ACAD9AC6BA /* PFProduct+Private.h */, - 0E16BBB83C9F9B91092969D2266317F0 /* PFProductsRequestHandler.h */, - 853ED2ED8383CAC8B42216E034C32866 /* PFProductsRequestHandler.m */, - 85A34FD1B37C88CFB5EFD0D8E6DD8071 /* PFPropertyInfo.h */, - AED3A36F04E046594F39EA5EB90D97FD /* PFPropertyInfo.m */, - 7EFF22BC9B76855DF9E2359F492E11A4 /* PFPropertyInfo_Private.h */, - 9866CB182F7690789F1CE9AC2C89303E /* PFPropertyInfo_Runtime.h */, - 0A2458DB30CB9D1EBB4393A5B3933BDA /* PFPropertyInfo_Runtime.m */, - E6525F64D2B6147E9FCBF6D10A5CB4AD /* PFPurchase.h */, - D7F2E197DB454125A7957FE4881AD932 /* PFPurchase.m */, - 786806355E0E877557AA2507DDEBACDD /* PFPurchaseController.h */, - 4A2F1425F21ABB04C1E959E932C6F415 /* PFPurchaseController.m */, - 26CFE764B4CDD5F929831F42EDA41A4D /* PFPush.h */, - 1BD7322E2971743B34A65BD010CC3165 /* PFPush.m */, - 10A45B9F776F2A6EE5C3BE2ADD460FE3 /* PFPushChannelsController.h */, - C45F387672BF56893F587F1601A4A671 /* PFPushChannelsController.m */, - EEE7C4904A076EEBF17B54F44707AAB5 /* PFPushController.h */, - 83FAF66089BB2B25DAD32F318716E9B5 /* PFPushController.m */, - 135CD2563AE865A18CBC5672956D2875 /* PFPushManager.h */, - 5BEDCBDD3D1427BBC37838C408E7AC2E /* PFPushManager.m */, - 2F99B6F42887EE972402E88BB751D67A /* PFPushPrivate.h */, - 9E21E2C6F0AD5061454FF796346F0484 /* PFPushState.h */, - A92BD29643970DCB9C0745A0406AD053 /* PFPushState.m */, - 687225D9C30A2354D368E350F8C481FB /* PFPushState_Private.h */, - 8CAACEFFE369BA8C9440D6CD08EC7727 /* PFPushUtilities.h */, - 8CE5F1B200B8D4F57C6A85199C9969FE /* PFPushUtilities.m */, - E1394AF99EBF307ACCE5AC895EAC2042 /* PFQuery.h */, - B43206E9EAB8BE07EDDF2DD6510F74C8 /* PFQuery.m */, - 63E89B2BE05AE41A084F3E0FA21250FA /* PFQueryController.h */, - 3448DD0E19AC2C9CA013ACD2BC7AD8C1 /* PFQueryController.m */, - E17F4E0596F024D9F44812A5786F7170 /* PFQueryPrivate.h */, - 10E904E302F7D7767F91F58889C20F5A /* PFQueryState.h */, - B40C676461A3B7148111BB04D891F399 /* PFQueryState.m */, - 9E01D38ECEA62C477A8C7BEE503A7547 /* PFQueryState_Private.h */, - C45D1154E82FBFB1AEFB90141DBACC29 /* PFQueryUtilities.h */, - E4B0E00C3C4BDBCA61E5E8E5A4098711 /* PFQueryUtilities.m */, - B3693A56CF492DA3BDAEDDBDA46ADC5D /* PFRESTAnalyticsCommand.h */, - 562E8BAC97316F785846B93E33C496DD /* PFRESTAnalyticsCommand.m */, - A6ABA5D37C50A0B8B9B785D774D332A5 /* PFRESTCloudCommand.h */, - D47B3859C74BA3AE467FE98CFA3EF2A7 /* PFRESTCloudCommand.m */, - 16784EC95D6273ED6752D7B64213E746 /* PFRESTCommand.h */, - 680D7CAB02E8C5A1DCE74985204D4483 /* PFRESTCommand.m */, - 5698E0F3BFBACA4A2F463DD697916F16 /* PFRESTCommand_Private.h */, - 9B2BBEF7F76A0A9700A14D2C55164268 /* PFRESTConfigCommand.h */, - 06CCF32425B76D2DCB319BACF4D3874B /* PFRESTConfigCommand.m */, - 225CE2C43ADC4EF1A17EA9FF67B4F977 /* PFRESTFileCommand.h */, - B12980AF5F1F26F33906C73A2F38C5E2 /* PFRESTFileCommand.m */, - ED1A749E0B29949F6BE6DE5906C56DD6 /* PFRESTObjectBatchCommand.h */, - D3C4E9EF227BA506792955288087E82F /* PFRESTObjectBatchCommand.m */, - 5242A7AC90141AACB238B67ACEC33ED0 /* PFRESTObjectCommand.h */, - 6144F78DC1C2B2F8A260C15A0B7148BA /* PFRESTObjectCommand.m */, - B83B68F2BA2D8926592978101024F709 /* PFRESTPushCommand.h */, - 9161913CD82800463279FFB15D5628FD /* PFRESTPushCommand.m */, - 4DE77267B05353B27C048F5B04016566 /* PFRESTQueryCommand.h */, - 32369FE3517FE0DA85D6AC9113DFC4D4 /* PFRESTQueryCommand.m */, - 0435A677495AC526E61CDF8F62EC197C /* PFRESTSessionCommand.h */, - 880D1361F22BDCDCF4A160F7DC4D54E5 /* PFRESTSessionCommand.m */, - BD7AF50148F7E85655300B88C68AEFF3 /* PFRESTUserCommand.h */, - C73D0298550B4AE265F9F155D23B10D7 /* PFRESTUserCommand.m */, - 5D488D8E4B776014CDEE5E6EF762C08E /* PFReachability.h */, - 8148FF7EFD96C224279A35AB3C828BC8 /* PFReachability.m */, - 03C5A44C8CE91BCF8B86912605825A8D /* PFRelation.h */, - 2423DAEF9BB294E6E266E9CC7E5F196D /* PFRelation.m */, - 3661FB21F4391073E8AAC82B6B840E75 /* PFRelationPrivate.h */, - 6E6A42EE42B9EEE445B28BDD96FFB1C7 /* PFRelationState.h */, - E1A63FDB8FFEBABA917E2E14E9051471 /* PFRelationState.m */, - C2775986B8C8F3CC41C05FD3B939FF81 /* PFRelationState_Private.h */, - 9C3140134D0A6A0E556CA3A287EC0FF5 /* PFRole.h */, - C44F364C931B164F6223FDD37734D4B3 /* PFRole.m */, - 0BD061E291C8DA3E18934FCF5E92DC81 /* PFSQLiteDatabase.h */, - B95FB2E5D926288C9E55B3572315CEE5 /* PFSQLiteDatabase.m */, - 453E27BE733413CA48A57B257194DA21 /* PFSQLiteDatabaseController.h */, - BB98FB4B596C25CC1243E4E50B93731A /* PFSQLiteDatabaseController.m */, - B00106BF0B6579DD98D56C67BD575CF0 /* PFSQLiteDatabaseResult.h */, - D4BD0B686B0EF4B81ABCF468BE4F3F99 /* PFSQLiteDatabaseResult.m */, - A13F413DC88512FDA54FE8057A667EAD /* PFSQLiteDatabase_Private.h */, - BC8341246DF5F52B15F7D490893290D3 /* PFSQLiteStatement.h */, - 0614A8CED09956ACEF0CD07B5F13C94F /* PFSQLiteStatement.m */, - 8EA5A298BA6815375F9BBA4D48B6E32C /* PFSession.h */, - 0A7EE3C6BF7D5145AA91E9DE69EC0268 /* PFSession.m */, - 8AEFD9424D0770F6E0BC692CE0AEE27B /* PFSessionController.h */, - 916C1A84C0A37408A6F76D88348177DD /* PFSessionController.m */, - 3E82461A10900C11141F5132C28A7C0B /* PFSessionUtilities.h */, - CB8C8762838FD01094119D687898F1B3 /* PFSessionUtilities.m */, - A7133DBE9772758CC46F930B640FA577 /* PFSession_Private.h */, - 7329F4C215D23C5B157437CD3ED3DC86 /* PFSubclassing.h */, - DFEE7E72D7CE52F1A712D597A33B153C /* PFTaskQueue.h */, - 1DD477EE3462803C03920D7EA94FCFF8 /* PFTaskQueue.m */, - BAFC73046A893C097CD25A41014D48A0 /* PFThreadsafety.h */, - E754D1AA7F49F27BDF54A28A7335AC74 /* PFThreadsafety.m */, - 814BAB5BB856170E11D9DFE9E26A888C /* PFURLConstructor.h */, - 917E881A4D1DE9E99ED3B7606F09E16B /* PFURLConstructor.m */, - 98A77CBFC3CB99CB7C20905C88715474 /* PFURLSession.h */, - EFC389DF1344C08739BE3B0D8561FC86 /* PFURLSession.m */, - E2A3EED08BBE4EF8E35776623B221D96 /* PFURLSessionCommandRunner.h */, - 25501EDA6B8396052C4721695FA27371 /* PFURLSessionCommandRunner.m */, - 614A361C74DFD5A28DB5A4DBFAD80EAF /* PFURLSessionCommandRunner_Private.h */, - CEEDE6F5E4B91DB0462629F30CE2C5D3 /* PFURLSessionDataTaskDelegate.h */, - F59D7CF8A402E68851985B96EE643B89 /* PFURLSessionDataTaskDelegate.m */, - C5BE6155E6E796DC929232CFE0BA3938 /* PFURLSessionDataTaskDelegate_Private.h */, - D4AAA8F6AD3E666763DAE1F0E91D3778 /* PFURLSessionFileDownloadTaskDelegate.h */, - 71EFAC4FE3DE4D635A34BD873A1302F5 /* PFURLSessionFileDownloadTaskDelegate.m */, - EEBF3BA14A17CDD666F87ADB7FD612C9 /* PFURLSessionJSONDataTaskDelegate.h */, - 526321DDA0F9E9326B772985013A71DB /* PFURLSessionJSONDataTaskDelegate.m */, - EA9765B74BCB3C4EC7701224F0BF1249 /* PFURLSessionUploadTaskDelegate.h */, - 53873BB442346D140446325544126600 /* PFURLSessionUploadTaskDelegate.m */, - 18307BC0EA14A69F26486ACEC94450C2 /* PFURLSession_Private.h */, - E7E88640AA3150B82CBAC9BE5E95A136 /* PFUser.h */, - 0EDBC476683341C63522CBC88AF10401 /* PFUser.m */, - E6D31BB8E52455350F1E5E4F1DB197CB /* PFUserAuthenticationController.h */, - 739CA807E35A38705E95A5061E4DB05F /* PFUserAuthenticationController.m */, - A083AB389EBB61C1E3AC66B85D0485EE /* PFUserAuthenticationDelegate.h */, - 84D47AE11AD48DDD6598E018331299E3 /* PFUserConstants.h */, - 50A981FEAE41634E8F3C3CCF8AC56259 /* PFUserConstants.m */, - 051170D8AB31E65A6185350F81C989F8 /* PFUserController.h */, - 12E1213C18161FD134F34314DF960015 /* PFUserController.m */, - 2E0204ED6BDC62B268724EB7F3257243 /* PFUserFileCodingLogic.h */, - 0C330B991A689F502E36122BCC0AC499 /* PFUserFileCodingLogic.m */, - 8D6ED3A53A136BCE4843E32025C76ED9 /* PFUserPrivate.h */, - C092CD3F2AEE6BAC465A007801D8D91A /* PFUserState.h */, - A9E407E843F2555171E0CF773AFE8CAA /* PFUserState.m */, - 79EF5DA0025B0FFF67DFADD5492A17E1 /* PFUserState_Private.h */, - FDF7CFCA28382A3A70269FF452DAF6DF /* PFWeakValue.h */, - 5EA794B89AD63BC09D01C4D28AB83FA6 /* PFWeakValue.m */, - E42FE23DCA3EFFB8F6025F9F9A8B3497 /* Parse.h */, - 700F2F5BA5994CFBE256028DFF7EC6CC /* Parse.m */, - 82DE2CCDEF80C1FF02649B195289A931 /* ParseInternal.h */, - 610CAB8E8825EC6BC293F21E90DD6315 /* ParseManager.h */, - AD0F8B79E3BDC24EF65F9BA34E2F1983 /* ParseManager.m */, - 4F92059D97E5483DFD850AA95FFE5562 /* ParseModule.h */, - 0FFE01FDB1315C89C0A38D8E4378E0DF /* ParseModule.m */, - 8188F44B82CFACD44B2AA378C7BEEE4B /* Parse_Private.h */, - 3262FA25CACCB75652ABE94C6AAE0895 /* Resources */, - 6E1FE4EB7D0D493F9F1D1977F4A35013 /* Support Files */, + C0CF8B831B45A8AE37417FB01F6EE72A /* en.lproj */, ); - path = Parse; + name = Resources; sourceTree = "<group>"; }; - 0E03188E9A4BF5C7937C9A2A68F675D0 /* Tasks */ = { + 0E07C05DC93911C736F9163ED8A5612E /* Products */ = { isa = PBXGroup; children = ( - B5EB9B4230ED62ACBBFE1640BB61C32F /* BFCancellationToken.h */, - 7E4FE6BADC672C550203DCEEC5EE8020 /* BFCancellationToken.m */, - 23ED3F16546340CE6D8F500DF0D81FA7 /* BFCancellationTokenRegistration.h */, - E016C3CC11A1E2541450703DF5F4DBA9 /* BFCancellationTokenRegistration.m */, - 5AF0ABAFA5AB51B0A0101D5CBF73791F /* BFCancellationTokenSource.h */, - DFC853444423A2B6AFB3F150BD3A93F8 /* BFCancellationTokenSource.m */, - 26E148529A5018FB0DBA0E6E6EF425A7 /* BFDefines.h */, - DFC2DC00FAF97B8C741ADA0CE734750A /* BFExecutor.h */, - 950203966AB13DB9DD6BF919571BCD7D /* BFExecutor.m */, - 53BF5D67AF06F0302A007B18D6FBC694 /* BFTask.h */, - 4BC5A2D868E11F3896499C4C384C1057 /* BFTask.m */, - BD4CC2409377CA987A2B2C5C57CEEE70 /* BFTaskCompletionSource.h */, - F3DADC1F7DC40E0218DBF16280C4D6D7 /* BFTaskCompletionSource.m */, - FA8008ED57F2E69D54C3AEA23F96BA4C /* Bolts.h */, - 9A3A0AEECB03ACB2C625D6A5BDD230FC /* Bolts.m */, - 1F2F968FC5E9ACF4AC754AB79F42241F /* BoltsVersion.h */, + 54BA28BB9CDEB01C1E6CE26A23783B3F /* libAFNetworking.a */, + CBA3A41947E01023E459EDEF3961C5B6 /* libBolts.a */, + 62B1C84DAFBA62E9315595E2052A8728 /* libFBSDKCoreKit.a */, + 54343AE2C02ECF5E183700CB786869CB /* libFBSDKLoginKit.a */, + 91E3599579258E326AC94189503BED96 /* libFBSDKShareKit.a */, + A634E305E726A2D18B89914E5F8909D3 /* libFoldingTabBar.a */, + 9C2BCF9C99AEDE045D2BBFA1DF8CC208 /* libISO8601DateFormatterValueTransformer.a */, + 84AD6D354E9C8F6B153ED2A34AC28FAC /* libParse.a */, + 2C197AC911176562F9C82890218D2927 /* libPods.a */, + 424AE54B9E9D6A204E25E68A391EAC5C /* libRestKit.a */, + CD540DA6FE69BCC3A353182F52EFE0BF /* libRKValueTransformers.a */, + CCF08CD19CC8E81472432439E658917F /* libSOCKit.a */, + 0711E2059F93A9DCBD5B583B9A11D2F5 /* libTransitionKit.a */, ); - name = Tasks; + name = Products; sourceTree = "<group>"; }; - 1440A3238D63F76B4474109B3C960C81 /* Support Files */ = { + 32E52DBF68DD0A7BC5494B503C88C62A /* RestKit */ = { isa = PBXGroup; children = ( - C45A766C3A6755202AD9BF0DD47F95E9 /* RKValueTransformers.xcconfig */, - 8DD494B04A84F285624644430E1FF3A0 /* RKValueTransformers-Private.xcconfig */, - 5DD18A5D9607E9AB948A055344CD3E4C /* RKValueTransformers-dummy.m */, - F5BD02FE7C99C9BD2CBC566B75BB0558 /* RKValueTransformers-prefix.pch */, + 4182CACC1DDBA19305C1FAB586BB627E /* Network */, + B26581610BB70A9CA9939B308037AB3B /* ObjectMapping */, + D1027468D8455255D7B8844321D9376E /* Support */, + 6B14877BDD14A1CFCF73960813DBE594 /* Support Files */, + 6C0CFA49494A8874225CD6BE0417E474 /* Testing */, ); - name = "Support Files"; - path = "../Target Support Files/RKValueTransformers"; + path = RestKit; sourceTree = "<group>"; }; - 20C6A3B1763BEF1D2A45847DA52F6720 /* iOS */ = { + 36F3E3D009A33DE3EB27FA31CBCE358C /* iOS */ = { isa = PBXGroup; children = ( - 61A8714F3E98EE48AF22222F6082A20E /* AudioToolbox.framework */, - 83F2B1D939804694C73E7FCD9AAF4090 /* CFNetwork.framework */, - EE00E564F591F731C2B1E11065E0ACF7 /* CoreGraphics.framework */, - 7FB86554EB764C69DB563344FB6E4583 /* CoreLocation.framework */, - 2763EF8A157B940CA30BFB421AC0ABA8 /* Foundation.framework */, - BAAF0724B9090137B718DFDA6EB9C1C7 /* MobileCoreServices.framework */, - 2C7078E789BF9691EB3849F6E4E49A44 /* QuartzCore.framework */, - C37F0ED993AA0D0D75072F2D2A6865AC /* Security.framework */, - EBD6F5E77168A4A3133908261AEF1BFC /* StoreKit.framework */, - 3CCC11B45A7E2D9A95182BA1D01D60F9 /* SystemConfiguration.framework */, + 3849FCCD9604B569E0277015CC30071D /* AudioToolbox.framework */, + 733D51F628A8649F5A0790296BA3E42A /* CFNetwork.framework */, + EEBA4E2BFC884C1F4B170F5BC7DE8B77 /* CoreGraphics.framework */, + 1E3783F1A59CCE93EEF653593AFAD5B5 /* CoreLocation.framework */, + FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */, + E62E80C06B8D2394C56D10220D1CCB6F /* MobileCoreServices.framework */, + B0F29E0D66F63131F371330D93CB4583 /* QuartzCore.framework */, + 6114EBA3A5CB7CB8ECE0A9BEFA6DB026 /* Security.framework */, + C758B84874FBB01F1E2CE355BEA77660 /* StoreKit.framework */, + 16621039C0E3312C216165BEF8D567DE /* SystemConfiguration.framework */, + B6FDEF44D035ECEB171CF49BE68D54D0 /* UIKit.framework */, ); name = iOS; sourceTree = "<group>"; }; - 25C2C3F30E3A330D39A55F4B043B9186 /* Support Files */ = { + 398335382CFCFDC50EAD72EC7F6E6979 /* FBSDKLoginKit */ = { isa = PBXGroup; children = ( - 8F5ED0372250818DCE119C3430AB9B9C /* FBSDKCoreKit.xcconfig */, - 9CD8231FE026505A5E9872616FAABDD9 /* FBSDKCoreKit-Private.xcconfig */, - 4214851D9461FC93F660FCB73142859E /* FBSDKCoreKit-dummy.m */, - B76A09E201EAD10D07E2C151D7EC5F26 /* FBSDKCoreKit-prefix.pch */, + 5B0743AD2B57375BCF911269DBE91815 /* _FBSDKLoginRecoveryAttempter.h */, + 659D341D4BAADD4339DB44AC00772E9F /* _FBSDKLoginRecoveryAttempter.m */, + A832477BE2A9E7163C4E27DAE8B3DD8C /* FBSDKLoginButton.h */, + F08BE85063341A7E769D75F5763E3946 /* FBSDKLoginButton.m */, + E8C9BEAE7AF61AB7F508B135815A7405 /* FBSDKLoginCompletion.h */, + EB51571C4C582A26F710845CFAA3AAFE /* FBSDKLoginCompletion.m */, + B3730F73EE5F25F746856381EB423BB1 /* FBSDKLoginCompletion+Internal.h */, + C93BEBD4E67678D6A0AF73501738D481 /* FBSDKLoginConstants.h */, + 2562632730FD0A59722B3C67E9C6C38E /* FBSDKLoginConstants.m */, + 4C773E3706A4438E1751AB41F39EB030 /* FBSDKLoginError.h */, + 432FAA5FD944A3CEB95D300D82A29D11 /* FBSDKLoginError.m */, + ABEC7A4F1C213D9FF650D68130BE307B /* FBSDKLoginKit.h */, + 2FF16FB1B2249D1B7C33F0B28BE8FB32 /* FBSDKLoginKit+Internal.h */, + 6BCE676F39C259B6C0BF1690EB5DBE25 /* FBSDKLoginManager.h */, + 942F4435C4E5B28ACF4995C1B58BC460 /* FBSDKLoginManager.m */, + A310034DF2EA59B12C3C17FA56A7D8CA /* FBSDKLoginManager+Internal.h */, + F196DD5AE8EA853E4EC89AF912198556 /* FBSDKLoginManagerLogger.h */, + E4FF2B92D70AA85F5430FA255B5930B8 /* FBSDKLoginManagerLogger.m */, + F84F292500C57DA9F2C1AF294A4409F6 /* FBSDKLoginManagerLoginResult.h */, + A8C154BACC4BC2017771F24B43682204 /* FBSDKLoginManagerLoginResult.m */, + 702E8ADADAF9B688368323A9218E6461 /* FBSDKLoginManagerLoginResult+Internal.h */, + 703806AC44DC3DAA0B029C076D84918C /* FBSDKLoginTooltipView.h */, + AA9C61E1204F6BD3E847A74FF29A1F91 /* FBSDKLoginTooltipView.m */, + 7D1C86B95A8E3810D8B07D2319B3FF71 /* FBSDKLoginUtility.h */, + 42BFA9A32C67074761C10AC36BF1CA3D /* FBSDKLoginUtility.m */, + B5C44FD3FAB358E3B466C4655865D9C1 /* FBSDKTooltipView.h */, + F19E08580DB71ED59755E30D19440C85 /* FBSDKTooltipView.m */, + 68DB75D5B1E2AFB8C566442266809B7B /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/FBSDKCoreKit"; + path = FBSDKLoginKit; sourceTree = "<group>"; }; - 30B8E8FB632D39C4AD04195963D8DD50 /* Support Files */ = { + 4182CACC1DDBA19305C1FAB586BB627E /* Network */ = { isa = PBXGroup; children = ( - A9E3691FF1A7CEBD5D9EFA1195090078 /* ISO8601DateFormatterValueTransformer.xcconfig */, - 241767740C7A36BC4016F69B2DFCDFF5 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */, - D9449B7AA0958A37C738C3F3113E6F86 /* ISO8601DateFormatterValueTransformer-dummy.m */, - F49F7453B2E504EC63FDF48EFAA54EEA /* ISO8601DateFormatterValueTransformer-prefix.pch */, + 5EAF198C3A7ADA68D4CEE15D8F5409E8 /* Network.h */, + 640B12F7182C4EF36510C06BF87ACDD7 /* RKHTTPRequestOperation.h */, + B12FBE677B57927C3F666FD0FD6511BC /* RKHTTPRequestOperation.m */, + 5BBAC5D8DBA7BF3C8638920782DCB03D /* RKManagedObjectRequestOperation.h */, + 38716A9E624A2682EE064BB7A4E4B034 /* RKManagedObjectRequestOperation.m */, + E6EBF6F7C6F610013CFE4E847BD798F8 /* RKObjectManager.h */, + 8286A9C555581B1077CACA650C967E59 /* RKObjectManager.m */, + 305C1B44A7F7E61553779E2EFAA7E6E5 /* RKObjectParameterization.h */, + 78CD59E0BD6F1DE92BCA187E736EF6BE /* RKObjectParameterization.m */, + 4966479D5117182D9BB2405C57BF9E48 /* RKObjectRequestOperation.h */, + 047F85BB51947407A2598BD224EF6F03 /* RKObjectRequestOperation.m */, + EA755DA8F373AF93B1752260FBCD0DEE /* RKObjectRequestOperationSubclass.h */, + C9C2F85D16952EEE0714A294ED8EA605 /* RKPaginator.h */, + BED513156E118407B7BC1990E6EDADA5 /* RKPaginator.m */, + F4E257A30B52BCA02E3AD226A28156E6 /* RKPathMatcher.h */, + C480EBF5CDD5C303A3C3A1D7B36A7E80 /* RKPathMatcher.m */, + 8D68B95DF6CEEFD1E9A5D0DBEE6B89D8 /* RKRequestDescriptor.h */, + 23F8033FB2A702EC958A60D0DEF98AC8 /* RKRequestDescriptor.m */, + 01FEEA6D377107B1A0563028100F1FFD /* RKResponseDescriptor.h */, + 37287465895B3FA00A50FD0231EC03C2 /* RKResponseDescriptor.m */, + E7502CBF5FF5DDC2E45F3550840F4429 /* RKResponseMapperOperation.h */, + E3F86397116A780E41E893B85EDECB42 /* RKResponseMapperOperation.m */, + DF85D1A5A93CD13D748D47C555B565CA /* RKRoute.h */, + 55F180B6F1337B63280EF7EE6FE6C2AC /* RKRoute.m */, + B7D0C7535C92E775C8051BD27D3C5A4B /* RKRouter.h */, + 9404F58DCEDDFD27D11EDC156DE41058 /* RKRouter.m */, + 00595F6FB2C45EBEB4850162FFBAFBDA /* RKRouteSet.h */, + 307A4292CDEB528BBF94D77971EA42D8 /* RKRouteSet.m */, ); - name = "Support Files"; - path = "../Target Support Files/ISO8601DateFormatterValueTransformer"; + name = Network; sourceTree = "<group>"; }; - 315BCA9F4FC37F26FCA0A241609C1D8C /* no-arc */ = { + 48BAF56AE6C0489F1FCA47EF6B76ED60 /* Bolts */ = { isa = PBXGroup; children = ( - 24F93C0C8EA467DEFCB4CBDB150BE439 /* FBSDKDynamicFrameworkLoader.m */, + B266F969C74DA0ED10F0759EC49E7B55 /* AppLinks */, + 6973475DD091F83E6E12FEACEE70A8B7 /* Support Files */, + 8EC76371940273004FE75954FB9D30AE /* Tasks */, ); - name = "no-arc"; + path = Bolts; sourceTree = "<group>"; }; - 3262FA25CACCB75652ABE94C6AAE0895 /* Resources */ = { + 4BDE6BC6D6EDB59EFFD668FA19CCCE3F /* Support Files */ = { isa = PBXGroup; children = ( - 6448EFCEA795D12938825D3F8D395848 /* en.lproj */, + E601C5D0D43FA69BCDE6E2ECFF6B02CC /* FBSDKCoreKit.xcconfig */, + 9CC97C072FD18D2A4B73F527FCCF25A7 /* FBSDKCoreKit-dummy.m */, + 6DE5893A62D5A2BB957C613ACF80A5D8 /* FBSDKCoreKit-prefix.pch */, ); - name = Resources; + name = "Support Files"; + path = "../Target Support Files/FBSDKCoreKit"; sourceTree = "<group>"; }; - 3469EB0551979288C3680B8569507614 /* Support Files */ = { + 57BBFCFCD99BD0361B60E276554280F2 /* no-arc */ = { isa = PBXGroup; children = ( - FBEDC82BBD883110BC94F1B62D5DCF07 /* FBSDKLoginKit.xcconfig */, - 5AF094AA3C85E325892EB2AE88799BB8 /* FBSDKLoginKit-Private.xcconfig */, - C40CADC5F2DEB4D0282F02F7FDF18EF0 /* FBSDKLoginKit-dummy.m */, - 41BA0CE95AB03F346F54CA27DB00DE30 /* FBSDKLoginKit-prefix.pch */, + 230215250F2BC4E1CCBB87F678DC507C /* FBSDKDynamicFrameworkLoader.m */, + ); + name = "no-arc"; + sourceTree = "<group>"; + }; + 58F28BB65A4E60C0F3B1B5623B914693 /* Support Files */ = { + isa = PBXGroup; + children = ( + A4F05EE46BF909C52D434101394A8D68 /* SOCKit.xcconfig */, + 83C232075A2AC8C59594FDDD1D494936 /* SOCKit-dummy.m */, + 902CDE40ABBA4BCA68994F6995BEE047 /* SOCKit-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/FBSDKLoginKit"; + path = "../Target Support Files/SOCKit"; sourceTree = "<group>"; }; - 355216D0B68C5F751E356F16CC39393B /* AFNetworking */ = { + 5C8186ED15642E873839F0DDB95C2543 /* Pods */ = { isa = PBXGroup; children = ( - B50ED7330E240BB1A16E10047FCC8E37 /* AFHTTPClient.h */, - 6CA98D8F458A2FFECCD9C3CF7AAEECFA /* AFHTTPClient.m */, - 0EB0F987B2BFAD674CC1392DB885D94A /* AFHTTPRequestOperation.h */, - 2BF466CB1A2B08C6FD3F60694F3E8D34 /* AFHTTPRequestOperation.m */, - BF7E4DF7E707F588FF550CDC66A6F7B7 /* AFImageRequestOperation.h */, - DF7C4CE6EE936098ABB3AC172D7B2FF1 /* AFImageRequestOperation.m */, - FB4066FE555FBBC7224915F81DDF0E65 /* AFJSONRequestOperation.h */, - 377BAEED2390B90A3A797FBF573227C9 /* AFJSONRequestOperation.m */, - E156596C9F5FF570264078E49A4643D4 /* AFNetworkActivityIndicatorManager.h */, - 5BD70BB4643C9BA44BAC707BE6AB39DD /* AFNetworkActivityIndicatorManager.m */, - 6F140AB891150C6CFED7DD2A7B4A62B2 /* AFNetworking.h */, - 5917BAC53F580A1C1176F5DD749556A9 /* AFPropertyListRequestOperation.h */, - A43FA21715C3B6F62D38DAA843E6E28A /* AFPropertyListRequestOperation.m */, - A3D86DE4F1B3EFCBA205A592DA3CCEFE /* AFURLConnectionOperation.h */, - 3B5D125F50E0B3A81028AB31CB76BF71 /* AFURLConnectionOperation.m */, - 2D2CAB276E3575E9D3DF2E0990BE0F69 /* AFXMLRequestOperation.h */, - B407FBFC5F897F4E485E1E0002B506FD /* AFXMLRequestOperation.m */, - C6F27E2022C1FBC9A8EF59AF5A0635F1 /* UIImageView+AFNetworking.h */, - 52120DE46E6C7C888694B8D9A3F4DEC6 /* UIImageView+AFNetworking.m */, - 58D63C29FC12061DC6628DE00FFC3251 /* Support Files */, + 96B35301A98DC85CF3E789D00C82FCD1 /* AFNetworking */, + 48BAF56AE6C0489F1FCA47EF6B76ED60 /* Bolts */, + D73428F5EDCF779302B1A54ABA56A999 /* FBSDKCoreKit */, + 398335382CFCFDC50EAD72EC7F6E6979 /* FBSDKLoginKit */, + B00045A969C9B957931CDE72F26ADF92 /* FBSDKShareKit */, + CC7D196E45BE148ABAFD7FE4B9D5DBA2 /* FoldingTabBar */, + B445D30E7E199FDE3F32BE28EFDCA2C1 /* ISO8601DateFormatterValueTransformer */, + CE717DC41894FDFAB0EAAB3ACDAFD9EF /* Parse */, + 32E52DBF68DD0A7BC5494B503C88C62A /* RestKit */, + 9ADBD9D7E7BDC1CE457493113BE6A09B /* RKValueTransformers */, + 96D009122D3A910B98FD674C4F1970E7 /* SOCKit */, + F6FFB7F933FD72A4DE0BC8F277933B4E /* TransitionKit */, ); - path = AFNetworking; + name = Pods; sourceTree = "<group>"; }; - 3C56505E72D2FE8EBB1539F6D52CDF90 /* Support Files */ = { + 5DD9B920B87D66939DDC49BA336BA03E /* Support Files */ = { isa = PBXGroup; children = ( - D87881EF697A62AD256CC2A668F12186 /* FBSDKShareKit.xcconfig */, - EBB6883C7F57FAA6E0F4E3A4DCD0836A /* FBSDKShareKit-Private.xcconfig */, - B10ADC87A857910D7585779303E279B5 /* FBSDKShareKit-dummy.m */, - 74D75C3A4E2A26AFDC39E1FAB71F6A80 /* FBSDKShareKit-prefix.pch */, + 4313BE461C6D0AB4AEFF645FBD735809 /* ISO8601DateFormatterValueTransformer.xcconfig */, + 2D0CD43CC78F18A69B36021FD018147B /* ISO8601DateFormatterValueTransformer-dummy.m */, + 87CD736E8B954F15E500CE7D55A80EE1 /* ISO8601DateFormatterValueTransformer-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/FBSDKShareKit"; + path = "../Target Support Files/ISO8601DateFormatterValueTransformer"; sourceTree = "<group>"; }; - 3D11579387DAC97787D951FD267B9902 /* TransitionKit */ = { + 62F2052A6198E568D3BCBF22C09868EB /* Support Files */ = { isa = PBXGroup; children = ( - 40C40C0517D7C210D4A32215DEB225C1 /* TKEvent.h */, - 02B4ADB1ECAC920122E657AE18B10BFE /* TKEvent.m */, - A4F85A759F06DA2C165FC5F9C67479D9 /* TKState.h */, - 9936ED8D363FA6B09EA60941182E9F3B /* TKState.m */, - C7A3C431941CA5458B46FDA87ADD17E9 /* TKStateMachine.h */, - 4391678EE65327EC09710A2246AE3738 /* TKStateMachine.m */, - F0CB4E3EC1ACD76F2309A54B490DF091 /* TKTransition.h */, - 2A2306F062D21537BCCD17B8E1265AE8 /* TKTransition.m */, - 8A3CCA72533E35C4376B1E8AECC9627F /* TransitionKit.h */, - 67AF22CFECD20E6348CB8AB93DD93EE0 /* Support Files */, + A5D82F87A7D9B6D1BA5B926D5CC28320 /* AFNetworking.xcconfig */, + 362C1D10E572107214CEFE116A4A3E9C /* AFNetworking-dummy.m */, + D74B454C0FDB49038C515C190B7D0040 /* AFNetworking-prefix.pch */, ); - path = TransitionKit; + name = "Support Files"; + path = "../Target Support Files/AFNetworking"; sourceTree = "<group>"; }; - 419D143B243406657CF78820DB7B76BD /* Support Files */ = { + 68DB75D5B1E2AFB8C566442266809B7B /* Support Files */ = { isa = PBXGroup; children = ( - B8409E3E09BE30CB9E0DB516F89ED930 /* SOCKit.xcconfig */, - A8FA5F2052C43B6E4060DAF60265E858 /* SOCKit-Private.xcconfig */, - 4FE09EB1BAFD6593655A66644AD9F2C0 /* SOCKit-dummy.m */, - 265CD502B435E47078A0F18F014D4A2C /* SOCKit-prefix.pch */, + 9B40691DF0E6BC33074AC41A275DB164 /* FBSDKLoginKit.xcconfig */, + CF7867AD1B16B0D2CCD3E12388E307E6 /* FBSDKLoginKit-dummy.m */, + C1F0927ADAF3F2EE080C8CFB1EB02510 /* FBSDKLoginKit-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/SOCKit"; + path = "../Target Support Files/FBSDKLoginKit"; sourceTree = "<group>"; }; - 43BA83142E3B59FFFBF477B5A1309DB9 /* Testing */ = { + 6973475DD091F83E6E12FEACEE70A8B7 /* Support Files */ = { isa = PBXGroup; children = ( - B3430C5AC8208C2B671B4D7823955F60 /* RKBenchmark.h */, - 8430E4A0A4791DC7D0F9CE485D860A00 /* RKBenchmark.m */, - 85C3C7141AE8131AC8868EF3F853AD3A /* RKConnectionTestExpectation.h */, - DEF44C93EA8108B4B9EFC4B4644446CF /* RKConnectionTestExpectation.m */, - A67A7F1AF95165EBD3C0D8E0060DB526 /* RKMappingTest.h */, - 4BAB7DDAE6FE91E089EBA417E69790BB /* RKMappingTest.m */, - 056B8AC3C068967E144E9912F4D082E4 /* RKPropertyMappingTestExpectation.h */, - B34970E9607C4D5CA7FD440A0E9D4EB0 /* RKPropertyMappingTestExpectation.m */, - 55C9501B071548071B0C87CDA9D032F8 /* RKTestConstants.m */, - 0A04D42ACCA3BD87E3584E6ACC4F56E6 /* RKTestFactory.h */, - BD77162D04BA4533037493C3BE145CFF /* RKTestFactory.m */, - E51BB433D7AADF8C023202546330704A /* RKTestFixture.h */, - 4294F692EAF153601A3A4B780A9C0668 /* RKTestFixture.m */, - 30E24C0CC2F297CA249BC9496B1273BA /* RKTestHelpers.h */, - D587648C0089A8E5FF455C97FF2B368E /* RKTestHelpers.m */, - D483D1D469EA00BF8839FA7029495D60 /* RKTestNotificationObserver.h */, - D497D888360D61A9F64F2DBB2A1FC8F0 /* RKTestNotificationObserver.m */, - 778D4E4A3B190B10F0AEFE08CC88F279 /* Testing.h */, + 6B6718A558812C369FEAEEE13F58304E /* Bolts.xcconfig */, + 497BCC491078BD10E998532399FBE356 /* Bolts-dummy.m */, + 9CAF4B15DDC52D849508A1E602814624 /* Bolts-prefix.pch */, ); - name = Testing; + name = "Support Files"; + path = "../Target Support Files/Bolts"; sourceTree = "<group>"; }; - 551C7C3268E07F208322331004B7AB9D /* Support */ = { + 6A281583AE86BEBA831DCD4AA7F89334 /* Support Files */ = { isa = PBXGroup; children = ( - F008693162E318C7C2752AD302CFB95E /* RKDictionaryUtilities.h */, - D72FC75ED7ED1ECBB9A34AC1705CE17D /* RKDictionaryUtilities.m */, - D344D9A38E931E18FB1095D2364E21E6 /* RKDotNetDateFormatter.h */, - 079E082DB0D5553BF25A89DDB3AF9428 /* RKDotNetDateFormatter.m */, - 3954F2A0287065523FE93833957D805D /* RKErrors.h */, - 0704D1A252C21153AADCFF76B76A34C8 /* RKErrors.m */, - 95B10AC59C183D139DF676CDC2DEF1B0 /* RKLog.h */, - 4BADEB18E715ADFCC4E321048C18D8CF /* RKLog.m */, - 81C8A7F71F4AB5ED22FA83E37837CA80 /* RKLumberjackLogger.h */, - 97E6EC52D54228978DD7489F931C7015 /* RKLumberjackLogger.m */, - CC80DEFA3FC6190520C4E802B4E816FE /* RKMIMETypeSerialization.h */, - F43593C0DC2EA028CFDED6E93DD31EBD /* RKMIMETypeSerialization.m */, - E7C4A5E56ABED18C3E81AB6301A8CB78 /* RKMIMETypes.h */, - 52EBAC1E14508349697276F8E0C80479 /* RKMIMETypes.m */, - CC29231A76F0E95942D3AC8EE9C06770 /* RKMacros.h */, - EF5B4118C2BC93EF32D39A9E3A70073F /* RKNSJSONSerialization.h */, - AA62DC87D5F1898752152729F580A3A0 /* RKNSJSONSerialization.m */, - 103E4A41DD6EB7EE5C4377711291077A /* RKOperationStateMachine.h */, - A397240CB17A369FA7286D7ED09FBDD2 /* RKOperationStateMachine.m */, - 27D73CCE08122C37FC401A9805E8033F /* RKPathUtilities.h */, - 259C735ED2FFC41359586661CE813736 /* RKPathUtilities.m */, - 5EB160597E8E862ED9A4D2CDE6C5ECBB /* RKSerialization.h */, - 7CB0738F082CD21988DD84404C1406E6 /* RKStringTokenizer.h */, - 99CE24FEF0EA1F2943A8DFF00388C985 /* RKStringTokenizer.m */, - E2775131C0FDB72FDE0A1D5A4A819778 /* RKURLEncodedSerialization.h */, - 2C16B289C2694A9F01E5AC4A40F5BBC5 /* RKURLEncodedSerialization.m */, - D68740C3275B619CD6272922B9616689 /* RestKit.h */, - 243B9EEDBFD73BC0E48417E798EB7D49 /* Support.h */, - 5D97C25717E3E4851FE4EFE780A45434 /* lcl_RK.h */, - E11FE2BB216DD98CBF3928F8E5E9A85B /* lcl_RK.m */, - 9F73B326076ED018A7156E4BFED6A5EA /* lcl_config_components_RK.h */, - B83F7B501488845012B0097456793ED7 /* lcl_config_extensions_RK.h */, - B96FAE035A72F2B9E4745AA2941D21DC /* lcl_config_logger_RK.h */, + 6AB27F170175D24AE67E7FE4DE679D4B /* TransitionKit.xcconfig */, + F6C85F64DFA1EA9920744621BC7D1A3A /* TransitionKit-dummy.m */, + 080DA549FB3DF87C2D0F356163642618 /* TransitionKit-prefix.pch */, ); - name = Support; + name = "Support Files"; + path = "../Target Support Files/TransitionKit"; sourceTree = "<group>"; }; - 58D63C29FC12061DC6628DE00FFC3251 /* Support Files */ = { + 6B14877BDD14A1CFCF73960813DBE594 /* Support Files */ = { isa = PBXGroup; children = ( - 66FE320ED85B83804D275B29BFCDDCFF /* AFNetworking.xcconfig */, - 3DABBC1078165E5DDDEFA2E7472C5559 /* AFNetworking-Private.xcconfig */, - 46012E85A00B1012C8DE6CB3D5CC0DFB /* AFNetworking-dummy.m */, - 95ACACF8D7E55EF8FE0FEF697597C3D3 /* AFNetworking-prefix.pch */, + 412828DEC5B3F3C978D90B000561AC08 /* RestKit.xcconfig */, + 8BAA0C25C337D44ADABB547C00BFE0D1 /* RestKit-dummy.m */, + B58613265294354C23D293C133BAC6B2 /* RestKit-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/AFNetworking"; + path = "../Target Support Files/RestKit"; sourceTree = "<group>"; }; - 614979C883124F8704942FAF0E455380 /* Support Files */ = { + 6C0CFA49494A8874225CD6BE0417E474 /* Testing */ = { isa = PBXGroup; children = ( - E4437BD232D035D19C87DFB253692F24 /* Bolts.xcconfig */, - 325246AADDC0F382E655933B585A347B /* Bolts-Private.xcconfig */, - 3B76E48E1FD54E0BBE64291059DD0428 /* Bolts-dummy.m */, - A73E1A20457CEF5005A485BBF4301935 /* Bolts-prefix.pch */, + E1FB03A638286D34951A35082DC8829E /* RKBenchmark.h */, + AB78F67642C251E7BFF0E9D2B17A8553 /* RKBenchmark.m */, + 836DD34AA9FD86CA7B162C11FF60F67C /* RKConnectionTestExpectation.h */, + EBA8382EE38E29B647AAA8D688CC23CE /* RKConnectionTestExpectation.m */, + 491C07A26268A25977860299C1B04D2C /* RKMappingTest.h */, + BC9BCA0158D3FA6ECF2FB4D804EA8A83 /* RKMappingTest.m */, + 46EE1DE5D0F0015F4E7C0AE4FC9D85F6 /* RKPropertyMappingTestExpectation.h */, + 8F17239611A3B8B424D42FCD9B529DA9 /* RKPropertyMappingTestExpectation.m */, + 42E3420B261FCAE88A3371F0158DAA2A /* RKTestConstants.m */, + ED7B68BD4BE4A662816CBE0A294F6500 /* RKTestFactory.h */, + EBB561046AC0CC3E56743E5BB664B0B0 /* RKTestFactory.m */, + 9E2A5D66F6C75C8A872ECD3D71937EBB /* RKTestFixture.h */, + 9957AA65319B89D5DD0424050D460948 /* RKTestFixture.m */, + 0C3ADF3356A01C102A78C499D44C195E /* RKTestHelpers.h */, + 2E10976A217E52C40572C15A1627BDD2 /* RKTestHelpers.m */, + FF93EF6EEE6883E55F75A0465EC5735F /* RKTestNotificationObserver.h */, + F62A65D495C27089A10FB5943BF3A012 /* RKTestNotificationObserver.m */, + F0CFA77570DB7AAAE7861BC27A0A45A3 /* Testing.h */, ); - name = "Support Files"; - path = "../Target Support Files/Bolts"; + name = Testing; sourceTree = "<group>"; }; - 67AF22CFECD20E6348CB8AB93DD93EE0 /* Support Files */ = { + 7570B82DE211C26B079734047EEA1BAE /* Support Files */ = { isa = PBXGroup; children = ( - AEDE84F08919A050F7554C588C364506 /* TransitionKit.xcconfig */, - AB5F89C2FF338EB3D8A14F31581D0B13 /* TransitionKit-Private.xcconfig */, - 15854EBB45118A734AE77C8EFB408F10 /* TransitionKit-dummy.m */, - 0B24226F7C8491F1AB37ED40AB15E909 /* TransitionKit-prefix.pch */, + 389CEDD0DDA1F1BB4ACF1258BBC1A500 /* FoldingTabBar.xcconfig */, + B5C46025996A2C2D010B0AE8FF485D39 /* FoldingTabBar-dummy.m */, + C5194995AA71A8339D3CCFB61EAB2D2F /* FoldingTabBar-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/TransitionKit"; + path = "../Target Support Files/FoldingTabBar"; sourceTree = "<group>"; }; - 6E1FE4EB7D0D493F9F1D1977F4A35013 /* Support Files */ = { + 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( - D8BDF9D0A4444BAF6AB702315EC72D13 /* Parse.xcconfig */, - F6E9E4399B6F13E900FC0A4DACCD4E15 /* Parse-Private.xcconfig */, - FFAEA82C3ED7F7F1480E843DE336CB0B /* Parse-dummy.m */, - 82E1375889C85A75C3D50613909984E7 /* Parse-prefix.pch */, + BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, + EB57DDB3388FBC701046A1E93218737F /* Frameworks */, + 5C8186ED15642E873839F0DDB95C2543 /* Pods */, + 0E07C05DC93911C736F9163ED8A5612E /* Products */, + 037C0CA694176A3C0915F62C9D20B3E6 /* Targets Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Parse"; sourceTree = "<group>"; }; - 70DD5CAFF1569E609E264EB069CCDCBD /* Network */ = { + 7FF6D0DC6576982B9137F657B4A8DF71 /* arc */ = { isa = PBXGroup; children = ( - F6235B81BCC7427EC393417D0676C7DD /* Network.h */, - 7F33AA92E57D33A8DE7D71147E3BBDD3 /* RKHTTPRequestOperation.h */, - 8B31ADE78BF2D9A37DCAF22E2F0D53AC /* RKHTTPRequestOperation.m */, - 773B71C6DCFE021055288283663560C9 /* RKManagedObjectRequestOperation.h */, - EC0A8BE947E2CBB52F80DE18D474CE39 /* RKManagedObjectRequestOperation.m */, - ECBDBCED6B21C2F082743CDE93ECBC76 /* RKObjectManager.h */, - E94E46525AFB5C84058140D261543E17 /* RKObjectManager.m */, - FFEAA8C456F1D711FDBADC3559935B4B /* RKObjectParameterization.h */, - 585CBEC762B0BA2C71CFB9F0E84E8B1C /* RKObjectParameterization.m */, - 9863ED0E0DE0D5BD0D54D80394E2278E /* RKObjectRequestOperation.h */, - A771288DA627C1035D810FE2E4D30B4D /* RKObjectRequestOperation.m */, - E22F95FAB4E982B3ABA1D6CB8C422794 /* RKObjectRequestOperationSubclass.h */, - EEC81F732F4810E132758A0C613E431B /* RKPaginator.h */, - CAAEEA7D83368AA927E7EBCBA6F4E80E /* RKPaginator.m */, - 2109F27F00016BC697F3694A3C8A4EF0 /* RKPathMatcher.h */, - 6CFD6F4F94AD214D7B9CEF3544854F4D /* RKPathMatcher.m */, - C5BAEE02437FF882C669F3417F738447 /* RKRequestDescriptor.h */, - 323152BA48F777D5C406ED5AE427B1AA /* RKRequestDescriptor.m */, - 22BCAB2ABFBB3566EC2E7ED45706F704 /* RKResponseDescriptor.h */, - AE1F88C360ED32A2DC0B77A0FB64F684 /* RKResponseDescriptor.m */, - CB3C48DDBE655AE51D1A39695796468E /* RKResponseMapperOperation.h */, - E574880420D8D97A424642A6B5F02579 /* RKResponseMapperOperation.m */, - 82F4CF881DD119649C8445AB7AD1733A /* RKRoute.h */, - CDABF5602F0E0D707DDD4224CB032D0E /* RKRoute.m */, - 341EA091B57F44C4DE7AEFBD627D722D /* RKRouteSet.h */, - 1B949380B0A36EE9DCE1BE3DD205872D /* RKRouteSet.m */, - 596492B6CEEB060FE00A87B8565F380A /* RKRouter.h */, - D145E83E2215C35E1D66DCFD70095EAE /* RKRouter.m */, + 7B0AE93D99549D7F950DBDC8C99044A2 /* _FBSDKTemporaryErrorRecoveryAttempter.h */, + 8D3C1AE934C5238738DBEBC420E58024 /* _FBSDKTemporaryErrorRecoveryAttempter.m */, + 1231F575BA4305E598781441AF031F5E /* FBSDKAccessToken.h */, + 213CA7050878B04AD0B0FEEFDE26FC3E /* FBSDKAccessToken.m */, + D9BF17D12A6931CC30A002B5C28BF065 /* FBSDKAccessTokenCache.h */, + 40FE4E083CC5C40D0DF65A6B08724A1A /* FBSDKAccessTokenCache.m */, + 81E97AE375AD2C365E560E20CFA6DD4A /* FBSDKAccessTokenCacheV3.h */, + 0AAEA066289DB63479C8EA3E37BC7E15 /* FBSDKAccessTokenCacheV3.m */, + 7AC84CF788A165593B670BC7F8133D15 /* FBSDKAccessTokenCacheV3_17.h */, + B4D5CA49244C779E343DF9F173C32D69 /* FBSDKAccessTokenCacheV3_17.m */, + 0E780E029F38CD5DC4D44B959AE7B2CF /* FBSDKAccessTokenCacheV3_21.h */, + E736754D92F661C38E69F1CD3C7845B0 /* FBSDKAccessTokenCacheV3_21.m */, + 0CA2B777015AD911501F34BE9E2A08EB /* FBSDKAccessTokenCacheV4.h */, + 486A8EBF63F7D80E6BB3BF1ACD672CFD /* FBSDKAccessTokenCacheV4.m */, + 173E06370DF9F26EB5591EE929B03D16 /* FBSDKAccessTokenCaching.h */, + C3D4F1A7841BFF26FD3010CAB4A45340 /* FBSDKAppEvents.h */, + 60496328DA2C2D4EF5E4E2C9933AACD9 /* FBSDKAppEvents.m */, + B9A968895EE338B1992703020E6AA2A9 /* FBSDKAppEvents+Internal.h */, + BA2696770D8582A18F63F39A1AE5A973 /* FBSDKAppEventsDeviceInfo.h */, + 1F5232ABD627549C1BEDB8630661C661 /* FBSDKAppEventsDeviceInfo.m */, + 037FA6D5161E6EA0F72B070763EA805A /* FBSDKAppEventsState.h */, + F0CB7F600F18B609668913010F45E215 /* FBSDKAppEventsState.m */, + 6447323ED6AD2EC1483AA3C66091EE93 /* FBSDKAppEventsStateManager.h */, + 9826CDA12FAA5BC9CEF003E172733136 /* FBSDKAppEventsStateManager.m */, + DF22EF5561792630E4B16C5A5D546054 /* FBSDKAppEventsUtility.h */, + 3B388397746D26347C7AE282AEB53D77 /* FBSDKAppEventsUtility.m */, + 7FEED7FB2327B849D9B3FB01D3E04329 /* FBSDKApplicationDelegate.h */, + D2FB78825DE91D3944F3483650D27E29 /* FBSDKApplicationDelegate.m */, + 4F8BEA71B93C60E891B29C80177AEC59 /* FBSDKApplicationDelegate+Internal.h */, + DF2A4D83628FCB3153D053BF5093B58A /* FBSDKAppLinkResolver.h */, + FC1F61CB54C0673DD6D3F506261C1797 /* FBSDKAppLinkResolver.m */, + 21378AD860758D2EA2336B59DC09BB68 /* FBSDKAppLinkUtility.h */, + F7E3E2499E10690D5CDBED7CFBB46CF4 /* FBSDKAppLinkUtility.m */, + 9671F1EB06ECFCB5039E830159A8B807 /* FBSDKAudioResourceLoader.h */, + EB7387ED21F22A0C3ACF3899E4EF7872 /* FBSDKAudioResourceLoader.m */, + B04554029C51C04C827384E9A03CC281 /* FBSDKBase64.h */, + C0E3792F488D1F767C3F48F576C16951 /* FBSDKBase64.m */, + 28C24077DDE26572ABFDFFBA58AEF0D2 /* FBSDKBoltsMeasurementEventListener.h */, + 9BA62A8E667CE97DE59304A1724EC97B /* FBSDKBoltsMeasurementEventListener.m */, + 0FBCAB70FB9A6977DE8D64B963124B26 /* FBSDKBridgeAPICrypto.h */, + 731BCFC9FA06980186D87DFACC655FFE /* FBSDKBridgeAPICrypto.m */, + D98DD91B0C85D183FC3778CD8BF3EA40 /* FBSDKBridgeAPIProtocol.h */, + 310FB096BFCEB1B13B424CBD45CFD485 /* FBSDKBridgeAPIProtocolNativeV1.h */, + CD4655E526EE9E09B596D7ADBA95AEC4 /* FBSDKBridgeAPIProtocolNativeV1.m */, + F5B16E71107186CBE636A34F02C7C0DC /* FBSDKBridgeAPIProtocolType.h */, + D2DEC5DFFD198D1C75250B16D5369348 /* FBSDKBridgeAPIProtocolWebV1.h */, + 35DC0FA9CFA673AEF41AF09AA45DFD4B /* FBSDKBridgeAPIProtocolWebV1.m */, + 29545B0051D4759CE30F62B98CE37FCB /* FBSDKBridgeAPIProtocolWebV2.h */, + FE17A124811A1964D6CA532CA4312C8C /* FBSDKBridgeAPIProtocolWebV2.m */, + A4371F9C1BEB37C1C9A7F487E96B039C /* FBSDKBridgeAPIRequest.h */, + 4E8EC5CFE550AB9001C39619CF9FB4D4 /* FBSDKBridgeAPIRequest.m */, + D4A6B0E6E31C764CA9C4AE79EB0572D4 /* FBSDKBridgeAPIRequest+Private.h */, + DFD5810B96B239C3591705FE5D26D379 /* FBSDKBridgeAPIResponse.h */, + D748BF0E60AF7374125A323AB6FA6176 /* FBSDKBridgeAPIResponse.m */, + C206887391506A13483E7EBD66940BB2 /* FBSDKButton.h */, + F8562AEEC62C495A2C6A5DCD3FA7ADDE /* FBSDKButton.m */, + B9D34B12F05BF9127D139B7586C718A0 /* FBSDKButton+Subclass.h */, + E8152227AD2D6CE25BC7888D919F6BD3 /* FBSDKCloseIcon.h */, + 0CBE41855C229057359338A397CF9CBF /* FBSDKCloseIcon.m */, + 421AA4D00B6B66524A46DC0728150287 /* FBSDKColor.h */, + 3E592A12CBAE13CEF22ACF96543534AE /* FBSDKColor.m */, + EE27DAB32337BD835F6F1C44CE941739 /* FBSDKConstants.h */, + 2965F8E850F9EB3EA40B7FDBC0F6924E /* FBSDKConstants.m */, + ADF62BE10B4A5995FC90E5E1DF736C2F /* FBSDKContainerViewController.h */, + 5077028CC903E90AEB2806C8A93C10A6 /* FBSDKContainerViewController.m */, + CD2A28C739FE44128E510AA92662F1E1 /* FBSDKCopying.h */, + 68C02417550547218FA95151404F94A5 /* FBSDKCoreKit.h */, + 83DE73D13A43E32C92686B974DE323D3 /* FBSDKCoreKit+Internal.h */, + 8470CA3B7EA842B7D1BE44214C739AF0 /* FBSDKCrypto.h */, + DD5C257CFF734FBADEC42260C86AF53A /* FBSDKCrypto.m */, + D4B02834ED165224ED2B72E17A23F1C7 /* FBSDKDialogConfiguration.h */, + 9CE1ACDB733D2C97F7C82EA9FB83836C /* FBSDKDialogConfiguration.m */, + 05A01B956AE10C43AD0F5B2B2B7920BF /* FBSDKDynamicFrameworkLoader.h */, + 504CFD03CAFDA04600823DA3FA4724B7 /* FBSDKError.h */, + 0BD4E2FDA8D2C7FF9BEBBCB6D90B725F /* FBSDKError.m */, + C8C072F8CBBD8377A84639A146342212 /* FBSDKErrorConfiguration.h */, + 768A924021D993B1CF8F4AA7BD2A0B5A /* FBSDKErrorConfiguration.m */, + 8B270479704A7D09440A3A5A8C04C228 /* FBSDKErrorRecoveryAttempter.h */, + 94AC9DE3CACB9F94683FD063FBB0D29B /* FBSDKErrorRecoveryAttempter.m */, + 656A6050B3AB59B9F95CC2C4394EC1D7 /* FBSDKErrorRecoveryConfiguration.h */, + 91029F40DE711320BF2AA3DF5F22A51C /* FBSDKErrorRecoveryConfiguration.m */, + 9E63031380A944E9403D3B32AD1E27D4 /* FBSDKGraphErrorRecoveryProcessor.h */, + 58F9FC465CA00C27492735D604B485D3 /* FBSDKGraphErrorRecoveryProcessor.m */, + A3E2D61AF8A35A030529BBF31DCB63EF /* FBSDKGraphRequest.h */, + FDE18DC658FE492CB30B98AA058CD6FA /* FBSDKGraphRequest.m */, + 46326E5CA01311B8CBC725FB12585BCE /* FBSDKGraphRequest+Internal.h */, + DA45B085FFDF032332BDCB8BFF793E5C /* FBSDKGraphRequestBody.h */, + 2A5B85D86C64A90A0CF498813B504388 /* FBSDKGraphRequestBody.m */, + 16AA64D1CEC68C44DEDAD61DAFB42709 /* FBSDKGraphRequestConnection.h */, + D347E102CA6826F9924372BD14C67494 /* FBSDKGraphRequestConnection.m */, + 1019C96E930FDF66BCD79751678FFFF6 /* FBSDKGraphRequestConnection+Internal.h */, + 01577EF1EEDCE5208D4B8AC6FDC7CC0B /* FBSDKGraphRequestDataAttachment.h */, + A8279D26889EDF822F6A7F2AEC767E66 /* FBSDKGraphRequestDataAttachment.m */, + 373C4D681FFCFABB37EFA7C0EDB3C9E2 /* FBSDKGraphRequestMetadata.h */, + 145AAF7E6CD426F5DC9079DD9214733B /* FBSDKGraphRequestMetadata.m */, + BFB1907C3EE1ADA7D44437276AC93C07 /* FBSDKGraphRequestPiggybackManager.h */, + 0100E24D37FE9C4A3412983EC266C1C7 /* FBSDKGraphRequestPiggybackManager.m */, + CFBF92A39FCC2FB32797855AB85DCAAE /* FBSDKIcon.h */, + 7ABE21AAB21F6820C93F75F77BA84A8C /* FBSDKIcon.m */, + C49F84564221E62FADF63F94A1EA171D /* FBSDKInternalUtility.h */, + BC537E2F269396073213A29C99B4BFB8 /* FBSDKInternalUtility.m */, + 0EF150B806961F2973DC836A0D2A1391 /* FBSDKKeychainStore.h */, + 52CF96E683AFDF73C07731C7ADDADC31 /* FBSDKKeychainStore.m */, + 08C17176133A418BBA5506240483F44C /* FBSDKKeychainStoreViaBundleID.h */, + 4523E95A8F9A0D756D54DFC5E768BAEB /* FBSDKKeychainStoreViaBundleID.m */, + 3678FC88ECC9E598059E5183A37EDEE1 /* FBSDKLogger.h */, + 00A6001B9377F35CFA12A27639003F73 /* FBSDKLogger.m */, + 63D635232970F5FD839031F4052A247F /* FBSDKLogo.h */, + 363A2C942125F80203914292454D9AA9 /* FBSDKLogo.m */, + 99448AE40302A804BCEE91E92302B14D /* FBSDKMacros.h */, + A5EC9E79B357B5A2AC105BD544952297 /* FBSDKMaleSilhouetteIcon.h */, + B6DAE6FCB32112F6B277354CCD641DFB /* FBSDKMaleSilhouetteIcon.m */, + 59A54DFF04E955ECF7F946017F365A27 /* FBSDKMath.h */, + E4EE8B2F0AF96372A1E5A8E576C9B17A /* FBSDKMath.m */, + A64CECFF3E3D0A64DA3BF8E6FB583C41 /* FBSDKMonotonicTime.h */, + DA692944B964141F5AC05B406C0139AE /* FBSDKMonotonicTime.m */, + 4DA381E5D6515F0A9C84527EF815CA28 /* FBSDKMutableCopying.h */, + 5AEE4D8F9683C8D1ACEF10CAF4E41A9C /* FBSDKPaymentObserver.h */, + EC53BB2A4757BDC90938CF004EC14FD9 /* FBSDKPaymentObserver.m */, + 194BBF93E1D47E864E12261443E6F23F /* FBSDKProfile.h */, + ACC5D57E516CFFB2CE3244680661340D /* FBSDKProfile.m */, + 7F9AF6687FB731435E4D8A667BC21448 /* FBSDKProfile+Internal.h */, + 1D8C0D8749CEE57E58CE3B5262781F8C /* FBSDKProfilePictureView.h */, + E353BD446B09E846E43AE7A8C9FBE5AA /* FBSDKProfilePictureView.m */, + 9D485AE7D7829E5043DA9B3788867222 /* FBSDKServerConfiguration.h */, + 3EF647DA4D46882EAC603DA80B15C546 /* FBSDKServerConfiguration.m */, + 15505CAD38B537EF229C41382091B2B7 /* FBSDKServerConfiguration+Internal.h */, + 005EDF3610A35FCCB1EC8C406162532C /* FBSDKServerConfigurationManager.h */, + BCBA64F9DA348CD22FB1AC87B9F75ACC /* FBSDKServerConfigurationManager.m */, + FE161616D496831D4089B8F6813DBE39 /* FBSDKServerConfigurationManager+Internal.h */, + 2041D4CFC252E37771FDA0674BAC5493 /* FBSDKSettings.h */, + 2CCE2187DD9A71F1848E14301ED5B204 /* FBSDKSettings.m */, + 0820B0D5F4674F138EA3BB3292D26CD0 /* FBSDKSettings+Internal.h */, + B385E214776DF89692B91553D7FCD7B7 /* FBSDKSystemAccountStoreAdapter.h */, + 1EC4B2DFF792D6E7C2B1939641ED637C /* FBSDKSystemAccountStoreAdapter.m */, + 202A67338938E6682685B9114E8F7E4D /* FBSDKTestUsersManager.h */, + 8A3F94D10D8725691A1ABC86A1405D5C /* FBSDKTestUsersManager.m */, + FF107198F4983B8531483E65440A0F15 /* FBSDKTimeSpentData.h */, + 421972FDDA0AE2550E0FB8F3DF8B6CB1 /* FBSDKTimeSpentData.m */, + FA149A0B2AF7E3F3EC903816EC962CFA /* FBSDKTriStateBOOL.h */, + 354D71ECE03FF896929A5DF65F72CA5D /* FBSDKTriStateBOOL.m */, + 948C70E84F724FF8F752385A5BD920DF /* FBSDKTypeUtility.h */, + 90EEFECBB8ABE95AB2BD379AE1A08389 /* FBSDKTypeUtility.m */, + C3F7D1EEFCFA50F7F774EDE30F5EE02B /* FBSDKUIUtility.h */, + 37AC900D11C191E04655F282A675E5E0 /* FBSDKURLConnection.h */, + D558BDA6C0DE3DCBFD4EB1B7FB8D2C72 /* FBSDKURLConnection.m */, + CCB649BFD246522D91365614C0B9DD9D /* FBSDKURLOpening.h */, + A367DA3EC3F8D359202159E683A9BB6F /* FBSDKUtility.h */, + 347915ED2D892D50E616DA8EACB44960 /* FBSDKUtility.m */, + D31B782B1DDF351A513DA07076DEB77A /* FBSDKViewImpressionTracker.h */, + BB08F921B445EECE7EA71D6B4554FF9E /* FBSDKViewImpressionTracker.m */, + 5D7F94B3DFD758F1C5AED31B6286D251 /* FBSDKWebDialog.h */, + A79078BF742E1C7360DBEE1FE59509E3 /* FBSDKWebDialog.m */, + 271C2DE3C7E7DE81A83712AE674A962A /* FBSDKWebDialogView.h */, + 856D46D1E0A3157D00390C58BC8DA218 /* FBSDKWebDialogView.m */, ); - name = Network; + name = arc; sourceTree = "<group>"; }; - 7490A55B722705CF9527A1ABFF0F0686 /* Pods */ = { + 84996DF569A72E800921F16A58D2771A /* Support Files */ = { isa = PBXGroup; children = ( - 355216D0B68C5F751E356F16CC39393B /* AFNetworking */, - A44DF63067E2F57A156F6F26E4E8FDB6 /* Bolts */, - 0130513E0255D02467FEFD0F582D89F7 /* FBSDKCoreKit */, - D8FA314E92C275EA40D64B30C667D251 /* FBSDKLoginKit */, - F479732DA6868638434BB551820FE0FD /* FBSDKShareKit */, - 86234D7B88F187C4500B915C24222CCD /* ISO8601DateFormatterValueTransformer */, - 02F7B739B92EB301B3782F121C4BA83E /* Parse */, - BF85FC055E4FBCDB6CE766DACB11B064 /* RKValueTransformers */, - 7ED1743B44F7B4BD32819FDFD269E1A9 /* RestKit */, - 85378FF92E4A77A8725650504F513C26 /* SOCKit */, - 3D11579387DAC97787D951FD267B9902 /* TransitionKit */, + 9DC5F129D162F601A2EB31F819BCC00D /* Parse.xcconfig */, + 8C5315150FD5B5F202952CF7B1140BA5 /* Parse-dummy.m */, + 3055B7B57931D87F7E1D076B3EACD5FB /* Parse-prefix.pch */, ); - name = Pods; + name = "Support Files"; + path = "../Target Support Files/Parse"; sourceTree = "<group>"; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 8EC76371940273004FE75954FB9D30AE /* Tasks */ = { isa = PBXGroup; children = ( - BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, - 876F80F8AFD1240ED0B7B9EA9C5BFAD8 /* Frameworks */, - 7490A55B722705CF9527A1ABFF0F0686 /* Pods */, - CCA510CFBEA2D207524CDA0D73C3B561 /* Products */, - D2411A5FE7F7A004607BED49990C37F4 /* Targets Support Files */, + B9A3F443B3D92D2C8F03FFCD004B43E5 /* BFCancellationToken.h */, + AC5662D51E6E075238B8E1970100B60A /* BFCancellationToken.m */, + B2049AB603335D958370F042F249C577 /* BFCancellationTokenRegistration.h */, + D85AEEF23A439D7C61100E8D5EFE0203 /* BFCancellationTokenRegistration.m */, + 2AC4D864890FF57910E0C3F3ACE458D5 /* BFCancellationTokenSource.h */, + 2A73024D1555D614CEC62670F070F5A9 /* BFCancellationTokenSource.m */, + B5BC191314D1C949957752D5E562E183 /* BFDefines.h */, + 72320D3C2B4F77715F2449CF313C8A0F /* BFExecutor.h */, + 1766F952ED7D24BA1223FECFB809EAEF /* BFExecutor.m */, + 1B1D85199C350E1CC77B906C3E4938BF /* BFTask.h */, + C304A10CF6190FEEEE9590529DE3B5EA /* BFTask.m */, + F743580826B5C1B915C7431CC5442853 /* BFTaskCompletionSource.h */, + 589A686D162F058AE68A85DC19762E4E /* BFTaskCompletionSource.m */, + CB84FD2F2C4E8EE506EE2E7DEC8B5F9C /* Bolts.h */, + D03DA3189A149B152CEA7A11F9C76649 /* Bolts.m */, + B147CF02EE8864D4E87D27D74C926A6E /* BoltsVersion.h */, ); + name = Tasks; sourceTree = "<group>"; }; - 7ED1743B44F7B4BD32819FDFD269E1A9 /* RestKit */ = { + 96B35301A98DC85CF3E789D00C82FCD1 /* AFNetworking */ = { isa = PBXGroup; children = ( - 70DD5CAFF1569E609E264EB069CCDCBD /* Network */, - 9C8C714211C016387ACB6DEC4E72E5FC /* ObjectMapping */, - 551C7C3268E07F208322331004B7AB9D /* Support */, - F948C552CF9EFB5B5DF8C06A725EEA7A /* Support Files */, - 43BA83142E3B59FFFBF477B5A1309DB9 /* Testing */, + 8B012D386ED7D06A4EF5353DAB2DD66D /* AFHTTPClient.h */, + 2AE60E42A7DAEEDEA8449020B959B680 /* AFHTTPClient.m */, + EB41BA80088D3B05F30B5FE2B650F1E8 /* AFHTTPRequestOperation.h */, + 4FDE8A1A301D0824B588F44EE25B4664 /* AFHTTPRequestOperation.m */, + C98118F3A80B2EF7FE15655CF5DEBF93 /* AFImageRequestOperation.h */, + 457EA6762682C1C676C5980F65593923 /* AFImageRequestOperation.m */, + 7F5A634097C8C984304065334CBF5BCB /* AFJSONRequestOperation.h */, + 89638686460135E581F100965DB593A4 /* AFJSONRequestOperation.m */, + F323D6CA68A5402E8D8D781B37B2A91C /* AFNetworkActivityIndicatorManager.h */, + E566B5A1AF002DF94450B717E7E8A195 /* AFNetworkActivityIndicatorManager.m */, + 7358191BB91547CAE16F05DBDB1BE31D /* AFNetworking.h */, + 76C5BB7D9A288AE9D8A835E210188D21 /* AFPropertyListRequestOperation.h */, + 0AE7CF3C4BBBCA9F05072DF89F75C0B3 /* AFPropertyListRequestOperation.m */, + 82B067532E3BF3282258482B488C6D65 /* AFURLConnectionOperation.h */, + E758DEF5BEC8EEC9032BAC8EAEAA4C51 /* AFURLConnectionOperation.m */, + 8D4A5E0FFDBB5F59ACC2A7671E2EE4ED /* AFXMLRequestOperation.h */, + D3B208164182946BFFFE3BB33CF2BEC1 /* AFXMLRequestOperation.m */, + 6530D1C36D6D2481926600B02A05B330 /* UIImageView+AFNetworking.h */, + 6A4AD6C82C6BD994B92B71460DABC8FC /* UIImageView+AFNetworking.m */, + 62F2052A6198E568D3BCBF22C09868EB /* Support Files */, ); - path = RestKit; + path = AFNetworking; sourceTree = "<group>"; }; - 85378FF92E4A77A8725650504F513C26 /* SOCKit */ = { + 96D009122D3A910B98FD674C4F1970E7 /* SOCKit */ = { isa = PBXGroup; children = ( - 96A98B34414903617DDCC4DD35D0ACC8 /* SOCKit.h */, - 89622454B6309852AD9687B0820C02B0 /* SOCKit.m */, - 419D143B243406657CF78820DB7B76BD /* Support Files */, + F9A89F784DA1F7AF78D9C06E04DAFF30 /* SOCKit.h */, + 1FDC2AC9DD87123DFCCB762335374C3D /* SOCKit.m */, + 58F28BB65A4E60C0F3B1B5623B914693 /* Support Files */, ); path = SOCKit; sourceTree = "<group>"; }; - 86234D7B88F187C4500B915C24222CCD /* ISO8601DateFormatterValueTransformer */ = { + 994F80D16536EFFF7BA6E2D07A9DA6DF /* Support Files */ = { isa = PBXGroup; children = ( - A16F8952CC048721F5CA32D79E71B653 /* ISO8601DateFormatterValueTransformer.h */, - A0A9019E56BAD1EE29D29A6AEDF3BC1A /* ISO8601DateFormatterValueTransformer.m */, - 83A77564DAB70186CD83920566902605 /* RKISO8601DateFormatter.h */, - 8700D74C7E8322F5645810F5DBA692B1 /* RKISO8601DateFormatter.m */, - 30B8E8FB632D39C4AD04195963D8DD50 /* Support Files */, + 78A46E6623C4E1A7D565B7AC5751DE2C /* RKValueTransformers.xcconfig */, + 1537B3204A5DD70D808286FE603C4A97 /* RKValueTransformers-dummy.m */, + EEB6507B7B3A6A759DE71FB3D665F68C /* RKValueTransformers-prefix.pch */, ); - path = ISO8601DateFormatterValueTransformer; + name = "Support Files"; + path = "../Target Support Files/RKValueTransformers"; sourceTree = "<group>"; }; - 876F80F8AFD1240ED0B7B9EA9C5BFAD8 /* Frameworks */ = { + 9ADBD9D7E7BDC1CE457493113BE6A09B /* RKValueTransformers */ = { isa = PBXGroup; children = ( - 20C6A3B1763BEF1D2A45847DA52F6720 /* iOS */, + F3BDAD35FE37E535B22528CF954B4332 /* RKValueTransformers.h */, + 53750007AA7392F76DBC9237B62429C9 /* RKValueTransformers.m */, + 994F80D16536EFFF7BA6E2D07A9DA6DF /* Support Files */, ); - name = Frameworks; + path = RKValueTransformers; sourceTree = "<group>"; }; - 952EEBFAF8F7E620423C9F156F25A506 /* Pods */ = { + A07760E449229D464886128FBB584239 /* Support Files */ = { isa = PBXGroup; children = ( - 15A529C27057E4A57D259CBC6E6CE49C /* Pods-acknowledgements.markdown */, - BF59BC15D23E1E1912C8F334E7236813 /* Pods-acknowledgements.plist */, - 8CCE9BE6DF0576998191D1D52675A3EF /* Pods-dummy.m */, - 641AE05DD55E5E6AC1590CD7B4A18F97 /* Pods-resources.sh */, - 2D582428208099E80BE466E2940ED2D0 /* Pods.debug.xcconfig */, - E0CC0033498B3D96CF358C75CCE120A9 /* Pods.release.xcconfig */, + 7E54575097CC4D7273F152CBCC1DE9FB /* FBSDKShareKit.xcconfig */, + A790CE27C36D138858150ED6C2FC85E5 /* FBSDKShareKit-dummy.m */, + F43FCDFCE19EE9AB392AF998DE9DF52F /* FBSDKShareKit-prefix.pch */, ); - name = Pods; - path = "Target Support Files/Pods"; + name = "Support Files"; + path = "../Target Support Files/FBSDKShareKit"; sourceTree = "<group>"; }; - 9C8C714211C016387ACB6DEC4E72E5FC /* ObjectMapping */ = { + B00045A969C9B957931CDE72F26ADF92 /* FBSDKShareKit */ = { isa = PBXGroup; children = ( - D6264AE68EC2461B52D7BC087CC60C51 /* ObjectMapping.h */, - B563402F32E620824AD23105E63019A7 /* RKAttributeMapping.h */, - 49EA15DA07E51D9C44D29EF7BFB6F1E2 /* RKAttributeMapping.m */, - 98D59999C2F13A02F8927597F85000C8 /* RKDynamicMapping.h */, - A0426D7149778C1DBF70DD5B3253A081 /* RKDynamicMapping.m */, - 45B3E4226F866D5C78E3AE4441683829 /* RKErrorMessage.h */, - 0D726415722488F38181C0A46AB22051 /* RKErrorMessage.m */, - 1FAEC79833DB40A28030BB60070264FC /* RKHTTPUtilities.h */, - 4D15AFCABB51E916BD6FFE6D663CCBED /* RKHTTPUtilities.m */, - 3C15EE98D2719FAA6A81AAB54A7E471D /* RKMapperOperation.h */, - DD2F082EFF4A90CEA1BD4B18821FD489 /* RKMapperOperation.m */, - 1BA732D4BA53C90B93834949CEB41543 /* RKMapperOperation_Private.h */, - BE80753CE5B8297DCAAA5C864D7D7A5B /* RKMapping.h */, - DC32DADD67B93D4C8A1DC5D924364B07 /* RKMapping.m */, - A47788042F4DC03B2F9C830BA9EA5567 /* RKMappingErrors.h */, - 0401D69DFE749735649FE64519D6905B /* RKMappingOperation.h */, - E201DE8EA287BAFA4B7303204B5FE3C9 /* RKMappingOperation.m */, - 2EE325AB5D11F8E0314EC1A65AFC915A /* RKMappingOperationDataSource.h */, - 905ADB423401F79FA90F610A1CEB29F1 /* RKMappingResult.h */, - 757FF14AABAC587C4E6F945A1E8D4472 /* RKMappingResult.m */, - 8DE47CA373FCE248BB502DF421F6B2A3 /* RKObjectMapping.h */, - 3B29A50B713DB33904E5298D3E082CA5 /* RKObjectMapping.m */, - 7EFB8D910130BB4CE5DC011047B4653B /* RKObjectMappingMatcher.h */, - 635550F96E6CB4B30D674CA6B3D59AAA /* RKObjectMappingMatcher.m */, - 7143CA35B7DBC71915BDD3C8FFA6F17B /* RKObjectMappingOperationDataSource.h */, - 6C12D518D08748E88B0F70890764B8CD /* RKObjectMappingOperationDataSource.m */, - 8F840FB713741211963007A36C4C972B /* RKObjectUtilities.h */, - 9A7897D08498CE169C9E0F8BA5015E80 /* RKObjectUtilities.m */, - 4AA98567E44F5A893A264AAAA201DC0A /* RKPropertyInspector.h */, - E85C8888E5F1BB8E85DC368D6DB18999 /* RKPropertyInspector.m */, - 5CA7D87557CA7C23E2FD33B16F7B4A87 /* RKPropertyMapping.h */, - 905A2264F8751CFD5E0FFE6C92CE7462 /* RKPropertyMapping.m */, - F9A46E7E5599417031AAC9FDEE8F6162 /* RKRelationshipMapping.h */, - AD6755DF1120CF7F9CE51A66D317FC9F /* RKRelationshipMapping.m */, + 85A9C0088D1A20CD6084587FE37E8706 /* FBSDKAppGroupAddDialog.h */, + 52249F35F2B3F990A6B5460810409C13 /* FBSDKAppGroupAddDialog.m */, + 878D09AB47A4BDD9D340540825C9E015 /* FBSDKAppGroupContent.h */, + F89DFF8EBC2C4ED2A61178F8775BBBE3 /* FBSDKAppGroupContent.m */, + 9A8BB3FBFEE9E1BDDB295037754F4DEF /* FBSDKAppGroupJoinDialog.h */, + FF5EAF38BE17B63D9DB9D69544387A2B /* FBSDKAppGroupJoinDialog.m */, + 568923D709EECAD0783955444A4654F9 /* FBSDKAppInviteContent.h */, + 1E2286118EDD86F67D14DA0213725FB6 /* FBSDKAppInviteContent.m */, + DA6483DCB5207821171D8E1785A354EC /* FBSDKAppInviteDialog.h */, + 1B632D115A665AE3E0A0F24A1BF865D7 /* FBSDKAppInviteDialog.m */, + 3B79F3FA1E8F365CB494021D4EF3A3C1 /* FBSDKCheckmarkIcon.h */, + 664DB729E26FCE7792E743269AA1D35F /* FBSDKCheckmarkIcon.m */, + 4E2D4FECA8A777A6DD1410FCFBA85EBA /* FBSDKGameRequestContent.h */, + 1039AA115A854C64209875E6B8B20ADF /* FBSDKGameRequestContent.m */, + 96AA4B508FBFE9971F929FB061B14436 /* FBSDKGameRequestDialog.h */, + 247CE7F46CACB36C92D0EF9B3F9FB9FF /* FBSDKGameRequestDialog.m */, + C3A37573B0B483DCF4CB2F542816D68E /* FBSDKGameRequestFrictionlessRecipientCache.h */, + 4429585279C58269AAE37EC7814214BD /* FBSDKGameRequestFrictionlessRecipientCache.m */, + 7C12288DE642EF37C6B63C07FF664190 /* FBSDKLikeActionController.h */, + 943C0E46DB3D37D67FFBB0E81F8082D7 /* FBSDKLikeActionController.m */, + 262AAA5A94DB64464A971372C0A5C98D /* FBSDKLikeActionControllerCache.h */, + 71C1EF327C1FCABF7C18FBE944C3E96B /* FBSDKLikeActionControllerCache.m */, + 83EAF6F3D84D5233748529A8E8CB094D /* FBSDKLikeBoxBorderView.h */, + A911FD2DE04BBABF90935B374E405983 /* FBSDKLikeBoxBorderView.m */, + 0D5EC58BD4863BEC2A2723C8FA5FE9B0 /* FBSDKLikeBoxView.h */, + 60C56926A1A601A3101BC398EFC92298 /* FBSDKLikeBoxView.m */, + 65911DEF87A9DDCA7864D750D03DCF2A /* FBSDKLikeButton.h */, + 60B2A3058DFFA81A2091F7C428415666 /* FBSDKLikeButton.m */, + 81A5DB14272C6EBC7DA612E0D8FBD00A /* FBSDKLikeButton+Internal.h */, + C6300BC631657D6ADCB1225268EF89BE /* FBSDKLikeButtonPopWAV.h */, + 9E43B3049BD47C0D7F0EE422E4818AC6 /* FBSDKLikeButtonPopWAV.m */, + 180FF861DE91C6A915DA7C2A92862B35 /* FBSDKLikeControl.h */, + 75FD15A68FD0466D803569EEB9CEBBAD /* FBSDKLikeControl.m */, + D18D463A980049E0F00BD51E3DEFF7D8 /* FBSDKLikeControl+Internal.h */, + 3BF1F39539444FAA093EACF74048A6D6 /* FBSDKLikeDialog.h */, + 5E44DF993841344E4915FFD31A91D4EC /* FBSDKLikeDialog.m */, + 572AFF6ED4416D1D697F241FDD4DA3FE /* FBSDKLikeObjectType.h */, + 0CE33DAD07C0504380B377D5B4E23F61 /* FBSDKLikeObjectType.m */, + B9E52C40CE2CD49772146B44F17F058F /* FBSDKLiking.h */, + B152467F018CE2A665F5C91D168A9A68 /* FBSDKMessageDialog.h */, + 74462B5EFF7650ED4744047E928DA11C /* FBSDKMessageDialog.m */, + 05CCBF923371A8F436D56A7223B904D7 /* FBSDKMessengerIcon.h */, + D52925260ED38A39BE15E60EFB8E7B49 /* FBSDKMessengerIcon.m */, + DBBFF8049227DD76047C14A4FC7F378D /* FBSDKSendButton.h */, + 4DA39AA231A2BC6DEF831A837F406512 /* FBSDKSendButton.m */, + B0217E33F4AEC22A7E47353C29C06863 /* FBSDKShareAPI.h */, + 633C2A9E54BC58AA24FD4CB18067F314 /* FBSDKShareAPI.m */, + AC3C9929DCA15B6D58724D42C5BD2DFB /* FBSDKShareButton.h */, + 3AC646B2CF1A54F8852DB65ABDB82D96 /* FBSDKShareButton.m */, + 9F676232AD2D4E768D123E3880A987ED /* FBSDKShareConstants.h */, + 5D0CF790970A7CBA811F918B49965546 /* FBSDKShareConstants.m */, + 63BFA7CA55559EBDA4EFE89AE77C1E67 /* FBSDKShareDefines.h */, + B415178073B9AF9554447EA73F804B50 /* FBSDKShareDialog.h */, + 01FB35B0ADE41A152252E1ED0988B17D /* FBSDKShareDialog.m */, + 3D1A4EB19150431EC20AA5717EFD6B46 /* FBSDKShareDialogMode.h */, + E8466657B806FC125F113617F7DD42A9 /* FBSDKShareDialogMode.m */, + C94BA5EE86AA9925359209A89FD97B37 /* FBSDKShareError.h */, + 45E3175265DC81EF149FA06BB4EA951B /* FBSDKShareError.m */, + 357EF8470BF313B33261C55EB4D12327 /* FBSDKShareKit.h */, + 1142FF164E91B0154F7D1B3E3CCD129D /* FBSDKShareKit+Internal.h */, + F7C8F9BB226F40C4F7CE5B08939D6900 /* FBSDKShareLinkContent.h */, + 64D0D3AB1BF1748F064867B7CE0DB23B /* FBSDKShareLinkContent.m */, + 19F20D1F4CF5FCB81834DCE24BD63E00 /* FBSDKShareLinkContent+Internal.h */, + 74F217FA9548DBD823F25F1DA863850B /* FBSDKShareOpenGraphAction.h */, + 4720A959FBF253E6C8315EC7BE3FFEBC /* FBSDKShareOpenGraphAction.m */, + 6802B9BFD996D3B878D450B785AC2060 /* FBSDKShareOpenGraphContent.h */, + 10EABBE60B88CF3D2AF469F17208ADE9 /* FBSDKShareOpenGraphContent.m */, + FC83BAA3A130DE0ECB081A56D1DB7917 /* FBSDKShareOpenGraphObject.h */, + CB98CBDFC30DCA09820317B62E92F7F2 /* FBSDKShareOpenGraphObject.m */, + BEFC9E6A35A5430AE7926645007C9C25 /* FBSDKShareOpenGraphValueContainer.h */, + BC784E483E0153507432EFCEFBC5638E /* FBSDKShareOpenGraphValueContainer.m */, + FE19DAED716CA2A2722DED05F8DB92B4 /* FBSDKShareOpenGraphValueContainer+Internal.h */, + F16E9555C16A15C09F6E739388F4FE89 /* FBSDKSharePhoto.h */, + 35B3E5E386C38B964CF695D9AB977807 /* FBSDKSharePhoto.m */, + 8B3F27BBC16C6C75FB3E5345F12F61A9 /* FBSDKSharePhotoContent.h */, + 71197DCFE9C806E6F574A696BE01DFA8 /* FBSDKSharePhotoContent.m */, + CC5F6833B3EC9A54CD4FD6CAFC5E61B3 /* FBSDKShareUtility.h */, + E7CB4124E5934CC10279CE22C1F3D5E5 /* FBSDKShareUtility.m */, + 468E01C4FC5A39A8E37ECC56F44B8F65 /* FBSDKShareVideo.h */, + 76F892C34CC6406B1AB6E24B09138F86 /* FBSDKShareVideo.m */, + 326B318804906FA458A65108849C0F78 /* FBSDKShareVideoContent.h */, + 01B3303DA64A64E4B58FED1912BEFCDF /* FBSDKShareVideoContent.m */, + 462B2CA402744EDC499ADDCECB7402D4 /* FBSDKSharing.h */, + 96B789CF6E62B4AFFE38A3E4538927DA /* FBSDKSharingButton.h */, + 8CA5367E50A1A62A594A47FAA506499D /* FBSDKSharingContent.h */, + A07760E449229D464886128FBB584239 /* Support Files */, + ); + path = FBSDKShareKit; + sourceTree = "<group>"; + }; + B26581610BB70A9CA9939B308037AB3B /* ObjectMapping */ = { + isa = PBXGroup; + children = ( + 1801665BFA99C3E5F261CACB58723B11 /* ObjectMapping.h */, + 979F775694C8742A140AFEFE090CA61A /* RKAttributeMapping.h */, + FBA2D90AB903058236DD7AF5CE16650F /* RKAttributeMapping.m */, + 78A8CA3DC6231EBEE1E0835C4B5FCE5E /* RKDynamicMapping.h */, + 72E01F510DB4DF12750DF5F0ED31E9CE /* RKDynamicMapping.m */, + 2FD6AC1526EDBB971021943756B7A67D /* RKErrorMessage.h */, + C6BB6FF4ABE22CD5FED5099BB5DA52F2 /* RKErrorMessage.m */, + BAA0EDF40F153DD9E67C8C7F744785F8 /* RKHTTPUtilities.h */, + 542741718F1B59CF684D8D7D5EE9E4C8 /* RKHTTPUtilities.m */, + BF53A464C16A680DC9C16D7D05C05F74 /* RKMapperOperation.h */, + 1960AF182D01226FEBB84BF5AB083402 /* RKMapperOperation.m */, + 117FC8B2ADDE85F697FC85ECF51FD3F3 /* RKMapperOperation_Private.h */, + 05EF3ADB060D32A9DFF67851EBE647C0 /* RKMapping.h */, + 7F0B1E9EBA20A4C290F0895CD4B960C0 /* RKMapping.m */, + 10761AFEB4163029E0BB84E7271803E8 /* RKMappingErrors.h */, + 31A4AD66C6637BF2C615D2A5ACFDFB97 /* RKMappingOperation.h */, + 5B43B4FF57FBEA73DE52BF4AEAD1F36C /* RKMappingOperation.m */, + B4752C6F4E6E53E7A4CD10A743CBB4C4 /* RKMappingOperationDataSource.h */, + 7937DE6BBA72253E75BE2C99AD624094 /* RKMappingResult.h */, + 71C2E7C3225F1C71AB7801BD548C40BF /* RKMappingResult.m */, + EDB3A467B0EABBCD096D79DC9AC1FD8C /* RKObjectMapping.h */, + 85005E81A14B03A9ADDF308A1C17B784 /* RKObjectMapping.m */, + 33D211F268ABCC6126E0AA222AEFB496 /* RKObjectMappingMatcher.h */, + 6D53FE7781D3C1C29653F7E97CD587C6 /* RKObjectMappingMatcher.m */, + BC9D6013B80CFF5948B0AEBB731354CC /* RKObjectMappingOperationDataSource.h */, + 420484544B85996994118EC3B407FE6F /* RKObjectMappingOperationDataSource.m */, + 1F6776613E173DE4D99A1473A4C0B7A3 /* RKObjectUtilities.h */, + 5A03339B789E2FC72FB9CCFE5665A0C3 /* RKObjectUtilities.m */, + 2DF6012AC3FEDDC30928DC38FC317836 /* RKPropertyInspector.h */, + C829B0848EFB7C93E7C376D5D7D2C2D6 /* RKPropertyInspector.m */, + 96D3047DA13118A3FB60F3DBE4812F52 /* RKPropertyMapping.h */, + 47CEE063B791E2A75D02580633A5F373 /* RKPropertyMapping.m */, + 86E31A2D9DD96916FA15693B655848D1 /* RKRelationshipMapping.h */, + BD723A8B8848E0084E24732986ADB0F7 /* RKRelationshipMapping.m */, ); name = ObjectMapping; sourceTree = "<group>"; }; - A44DF63067E2F57A156F6F26E4E8FDB6 /* Bolts */ = { + B266F969C74DA0ED10F0759EC49E7B55 /* AppLinks */ = { isa = PBXGroup; children = ( - EFF0EAAC511F6D20942CACAD5560A527 /* AppLinks */, - 614979C883124F8704942FAF0E455380 /* Support Files */, - 0E03188E9A4BF5C7937C9A2A68F675D0 /* Tasks */, + 57F9B8722311F2DE9BFA34CD3DCA5DB9 /* BFAppLink.h */, + 5454AEF03510A2D84BEA0194B430C57D /* BFAppLink.m */, + 016FE71D37A737A72140AC6154407A41 /* BFAppLink_Internal.h */, + 19F270B7BF779B177C75EA8CFAAA76CB /* BFAppLinkNavigation.h */, + 113F75AFA14F88AEE7BCF0BBB4C858BE /* BFAppLinkNavigation.m */, + F5500331C2AE5ADC39A1AB40A74529FB /* BFAppLinkResolving.h */, + A93AAAD8AD7E644F7EC9EC8AA665569F /* BFAppLinkReturnToRefererController.h */, + FE83EAA7D7F81F996C8A1FCC962D6EED /* BFAppLinkReturnToRefererController.m */, + A1A2CA5B68B1C6F0052C73BE934D33D8 /* BFAppLinkReturnToRefererView.h */, + 16D7414B803B24894CDD90ED3E31C1AB /* BFAppLinkReturnToRefererView.m */, + B92A2CAEF825132FB7B172C9FFF479D2 /* BFAppLinkReturnToRefererView_Internal.h */, + 048FF1F23681E364A43114EA047AB00E /* BFAppLinkTarget.h */, + F632B4241467D0929F63833DA56E7443 /* BFAppLinkTarget.m */, + B36DC7EE87AFA9DC98ABEEA9F3A91C09 /* BFMeasurementEvent.h */, + 288890641419271C571594FA0568909D /* BFMeasurementEvent.m */, + 52FB1857E533909822A211A7F21E7067 /* BFMeasurementEvent_Internal.h */, + 04FD35F060DAF86D25973ECA13C4B1C6 /* BFURL.h */, + 62A64EB7D48743BA4492B0267BB0BC95 /* BFURL.m */, + C4B20C13881AFBB4E88D5826A0683F11 /* BFURL_Internal.h */, + B2572E05EB18D8E55337D23E1AE67E35 /* BFWebViewAppLinkResolver.h */, + 4B163E967FEAF0C769D85F0A3A1EEB95 /* BFWebViewAppLinkResolver.m */, ); - path = Bolts; + name = AppLinks; sourceTree = "<group>"; }; - BF85FC055E4FBCDB6CE766DACB11B064 /* RKValueTransformers */ = { + B3D1D13E0C6553800746CB8FD61CF946 /* Pods */ = { isa = PBXGroup; children = ( - 2B6C7232F24CC263AED71695EF279E34 /* RKValueTransformers.h */, - 704C843E9911E15531BA4307B0AB6D03 /* RKValueTransformers.m */, - 1440A3238D63F76B4474109B3C960C81 /* Support Files */, + 37DB56D75062CC75FCB0966E1C6E8A8E /* Pods-acknowledgements.markdown */, + 10834806BD7B412BC24F347361FA2C8E /* Pods-acknowledgements.plist */, + 272643F56613CA0D336AE3DBF19DC404 /* Pods-dummy.m */, + 6911BECA35E7518D864239B7E898EEF3 /* Pods-frameworks.sh */, + A1A36D34413696BE466E2CA0AFF194DA /* Pods-resources.sh */, + 4E762F23EC34ED4A6FF3312D84E33A40 /* Pods.debug.xcconfig */, + 98C98CDFB3F20F2925F6CD1F141BB14F /* Pods.release.xcconfig */, ); - path = RKValueTransformers; + name = Pods; + path = "Target Support Files/Pods"; sourceTree = "<group>"; }; - CCA510CFBEA2D207524CDA0D73C3B561 /* Products */ = { + B445D30E7E199FDE3F32BE28EFDCA2C1 /* ISO8601DateFormatterValueTransformer */ = { isa = PBXGroup; children = ( - 9E042B3BA6CAF103736FF4527CF951FF /* libAFNetworking.a */, - 648066E3DB510A8F72E964D968AAA219 /* libBolts.a */, - 48D2279C54480FB712244BACA57F6212 /* libFBSDKCoreKit.a */, - 93BF262897FA3F05F3FDF601D8CB04A7 /* libFBSDKLoginKit.a */, - CDB7AF2EC4C8BD16B16801E52002B702 /* libFBSDKShareKit.a */, - BAD26E583A45E51D16E0FA2F67CB7CA3 /* libISO8601DateFormatterValueTransformer.a */, - 9FE092D9D9FA0698D276FB74E5D3C4EB /* libParse.a */, - 149E15962A38A8DACF6A9781F4A92F22 /* libPods.a */, - 41BC1E717C434D21A5472F44C601A2B7 /* libRKValueTransformers.a */, - B0F9682AC6A9C5259D9F3D4BCCD455B1 /* libRestKit.a */, - A54BA714770BA8ED007819BC352FEB7C /* libSOCKit.a */, - 4E37F47F8B8CC9C91B39061A7536E3E9 /* libTransitionKit.a */, + 24D7D9AD22022709F66EBFB6726D41E5 /* ISO8601DateFormatterValueTransformer.h */, + 12F4038DEE96BCA00C4F13577F8FB019 /* ISO8601DateFormatterValueTransformer.m */, + E8BE55CB57DEE8420789C65645ABEFF9 /* RKISO8601DateFormatter.h */, + 9D7D839938133223C5D03CF7E035527E /* RKISO8601DateFormatter.m */, + 5DD9B920B87D66939DDC49BA336BA03E /* Support Files */, ); - name = Products; + path = ISO8601DateFormatterValueTransformer; sourceTree = "<group>"; }; - D2411A5FE7F7A004607BED49990C37F4 /* Targets Support Files */ = { + CC7D196E45BE148ABAFD7FE4B9D5DBA2 /* FoldingTabBar */ = { isa = PBXGroup; children = ( - 952EEBFAF8F7E620423C9F156F25A506 /* Pods */, + 3ACF71F0DC4813EA623149F93F528587 /* CAAnimation+YALTabBarViewAnimations.h */, + 581431A48237CC104D54A0C2870FDF20 /* CAAnimation+YALTabBarViewAnimations.m */, + 6A92D4243C0F137302709F07AA614754 /* CATransaction+TransactionWithAnimationsAndCompletion.h */, + 75495EC377930B0233AFC77A4D61575F /* CATransaction+TransactionWithAnimationsAndCompletion.m */, + C4A5204786239441709AD7ACC6C10DF1 /* YALAnimatingTabBarConstants.h */, + 3110767D99127E63D027AD02ABECB5CC /* YALAnimatingTabBarConstants.m */, + 821E516878F8F964D6941FE6C2AEB04D /* YALFoldingTabBar.h */, + 6699EE8CE193D5123B3CF8DC8EFC4CA1 /* YALFoldingTabBar.m */, + 6CAE8C5DA18BB8CA4DD074A31BA648D2 /* YALFoldingTabBarController.h */, + 2B9F9B80CBA1DEAEF33627D58AB7E3CE /* YALFoldingTabBarController.m */, + 560B96C78B0C4903D500B1084F59BB7C /* YALSpringAnimation.h */, + 66FDB0B731FFB4CE1465D2BF7FDCD263 /* YALSpringAnimation.m */, + 708E2A05386B4566A5D2D2BC686ACF19 /* YALTabBarInteracting.h */, + 0FE8823AC87A2EA7D2BF645AA039E957 /* YALTabBarItem.h */, + 91E000C46BBB39E5ED5C9A8FEC95F0CB /* YALTabBarItem.m */, + 7570B82DE211C26B079734047EEA1BAE /* Support Files */, ); - name = "Targets Support Files"; + path = FoldingTabBar; sourceTree = "<group>"; }; - D8FA314E92C275EA40D64B30C667D251 /* FBSDKLoginKit */ = { + CE717DC41894FDFAB0EAAB3ACDAFD9EF /* Parse */ = { isa = PBXGroup; children = ( - 9494BB00014D0192A01360063AA70BE0 /* FBSDKLoginButton.h */, - A42C8D72C0DD9F94735982945AB06235 /* FBSDKLoginButton.m */, - C098C23FB2DF99933279373E8B3D452E /* FBSDKLoginCompletion.h */, - F03034CE4131076A48731504480259EB /* FBSDKLoginCompletion.m */, - 6C9FEB49ADBD54B9FD7533801BB5380F /* FBSDKLoginCompletion+Internal.h */, - B43EF13062A276FCA06A9386DCA1F36F /* FBSDKLoginConstants.h */, - EF50F0DB0BC4C86C22F26686C14E853A /* FBSDKLoginConstants.m */, - 06F0EB1FDCF792E30B358C159A66CE09 /* FBSDKLoginError.h */, - A32731565F3850539FE9BBB6231B50DE /* FBSDKLoginError.m */, - C771ECF49E63DA4D6AD0B964CDA4DC94 /* FBSDKLoginKit.h */, - ECA1143F260DB3AEBD94D656E8DF43EB /* FBSDKLoginKit+Internal.h */, - 31DC2BEB54C59BD2AC3FFC21BDBB71E5 /* FBSDKLoginManager.h */, - 7EA68C5837BA086C1AB0730D5D664A75 /* FBSDKLoginManager.m */, - A2ACF4A5ED3EA611505A0F4017817898 /* FBSDKLoginManager+Internal.h */, - 48D467EF578B57E2381B95690763CFA8 /* FBSDKLoginManagerLogger.h */, - E657E2943C7D36EEAE242DB32FDDFA8D /* FBSDKLoginManagerLogger.m */, - 510604FAF87C394AFADB9A5D564F3AEB /* FBSDKLoginManagerLoginResult.h */, - FEF337FAA2E9DD4BA7619CC58CCFEE27 /* FBSDKLoginManagerLoginResult.m */, - 908DBE6B62FE286E8E2B65AB8471172C /* FBSDKLoginManagerLoginResult+Internal.h */, - 60E9ACA9DCB6DFF036B60A0C51E4A5FF /* FBSDKLoginTooltipView.h */, - 4A643D621DB5B92B641E0E85372BA98E /* FBSDKLoginTooltipView.m */, - 7DFCEA97612DEB2723DF40E6FFFC5D26 /* FBSDKLoginUtility.h */, - D19C9E56F232605C57E9A412AF3031FA /* FBSDKLoginUtility.m */, - F32F686BFA58B3430620EE17161144FE /* FBSDKTooltipView.h */, - F094D3053EC8059B43C8FDE85B6CC097 /* FBSDKTooltipView.m */, - 450E74CFABCD4AC3721543ED32395800 /* _FBSDKLoginRecoveryAttempter.h */, - 5CEDED5603A9C216D88239CD22DAD12F /* _FBSDKLoginRecoveryAttempter.m */, - 3469EB0551979288C3680B8569507614 /* Support Files */, + 7E7A521656E2772319D441042C5D6FBB /* BFTask+Private.h */, + F786873C808C35EC234BC3F1215CB314 /* BFTask+Private.m */, + 321F060F2EAD3712AE8975662D9AE049 /* Parse.h */, + 2CA213D7D985D157E1F5FE2776AE93F4 /* Parse.m */, + 8BDEF7A52E57E764142D42EE5DB63FD2 /* Parse_Private.h */, + D1C051EE39EC2369E3712F32F65AAD73 /* ParseInternal.h */, + 94212D75F6067FFA601083EF41CC441A /* ParseManager.h */, + 246B31118F4482AFD1E5B6FBDDEE6EB2 /* ParseManager.m */, + DBF30E4A65710CFBCCC809C891B94888 /* ParseModule.h */, + D807F253C1FC0EAD584DFA49AC3AFFE7 /* ParseModule.m */, + 6A0D078B3F700A4B5BC98F3B41F44FDC /* PFACL.h */, + D02A52C086D84F65295E5DA1562069FC /* PFACL.m */, + D195E34301F1EADE93BB0B93F8BFAF0A /* PFACLPrivate.h */, + DE71C8926E171BD5AB6618D07D0A3797 /* PFACLState.h */, + 4E91BE2BF2B6ED7524B651D0202AC4E0 /* PFACLState.m */, + 3FD9787D3AC0A8EBB5A37E3E888F8DE4 /* PFACLState_Private.h */, + D13875E740DD491158EB8406E449FFEB /* PFAlertView.h */, + 9687B38FD53EC72E99246120219AFE41 /* PFAlertView.m */, + 9F25D79A6D9350DE097436ED2E549BE1 /* PFAnalytics.h */, + F3C909089E36795B0294E159BE83E353 /* PFAnalytics.m */, + CB5646F48F8BFA683EF37662695C41B2 /* PFAnalytics_Private.h */, + 646C67B4157CB47C91F3D55E7BFA577C /* PFAnalyticsController.h */, + 7963D53D53339137B7E1A3AB0F520174 /* PFAnalyticsController.m */, + 7DAC1FC2CA2D2B4A01038D5148555190 /* PFAnalyticsUtilities.h */, + 9151CBFA951CC2C02B03C255F48BDFEE /* PFAnalyticsUtilities.m */, + 29076EEBE727F01C11336FE621EEA957 /* PFAnonymousAuthenticationProvider.h */, + 1CB585E247C1F3D47072B64F704F03B7 /* PFAnonymousAuthenticationProvider.m */, + 0149B0C82CA899926A01FA591E4710C4 /* PFAnonymousUtils.h */, + 24019153F5EA642D0DE4B7AA9C56FE37 /* PFAnonymousUtils.m */, + 466349270C59C68B7BB457BF69B9ABCE /* PFAnonymousUtils_Private.h */, + 21AB5F2776814B493AE224A090442A49 /* PFApplication.h */, + F55189D706C6F0A7E7F9257ACEE9173C /* PFApplication.m */, + 05D15859D636D2225F8443617E021DFC /* PFAssert.h */, + 817BE16BBDE06E00A285E8DEA40C2A92 /* PFAsyncTaskQueue.h */, + 520D88E4BD209071CB865B64DEB08BD3 /* PFAsyncTaskQueue.m */, + 442FE8495BC41626A686B84CE00354C4 /* PFBase64Encoder.h */, + 94115F4D46CF02AFA9A9A36A9D041A73 /* PFBase64Encoder.m */, + 70AED028A0517D0D287C17C074D896DC /* PFBaseState.h */, + CAECEB62E59C8EBCF2BFBB361AC28C39 /* PFBaseState.m */, + E276164BF784A894BA33B42E12F10CCE /* PFCachedQueryController.h */, + F6A1AA7E3400E1B0C28309A8DB53D160 /* PFCachedQueryController.m */, + 80215F89C91F2E95ADA9D8D5F5443FD6 /* PFCategoryLoader.h */, + C266997BE18B9F2389729AEE26E429C9 /* PFCategoryLoader.m */, + 425C02C4E4B038FDE445DA322EF3113E /* PFCloud.h */, + D4C698542F4955E8A40A8D39035EDAAC /* PFCloud.m */, + 1B5B5284F66A4663EFFDE2B8B5E336B1 /* PFCloudCodeController.h */, + 95418B78D785BACFEAFC48B338DE9AF4 /* PFCloudCodeController.m */, + 8D05A09C1E9B8D6D162D9DBC753EA922 /* PFCommandCache.h */, + 52CB9F69B642A0B3EAB1EA3DD8F5BCB9 /* PFCommandCache.m */, + 057581746F9592678DE1D227AA52EB2D /* PFCommandCache_Private.h */, + 4143EF2889DC7708FBFDFB6EB6F7F78C /* PFCommandResult.h */, + AD4D3C55161D3874FAE6A6D4FA05E974 /* PFCommandResult.m */, + 19333F981C770A5CDAFA1A9B6901522C /* PFCommandRunning.h */, + 64C153FEAD3A0694849A9B9865BF597E /* PFCommandRunning.m */, + 2739B66EFCA7F40FAF75E4F39A6A9A7E /* PFCommandRunningConstants.h */, + DB1A535EDDE87E526D1C66FA9BEDAE70 /* PFCommandRunningConstants.m */, + B7D1E676461C5F40552D64DA33869E6F /* PFCommandURLRequestConstructor.h */, + A0078CE9F7F7BB672D734ECE689D766B /* PFCommandURLRequestConstructor.m */, + A711FBFC3588B353719DDFFC023B9290 /* PFConfig.h */, + CD7593640586B201BCD9939EC8B13017 /* PFConfig.m */, + 2903E773C725846E7E37922E881B5B52 /* PFConfig_Private.h */, + 30CDD959414B1BB05D9C7CC06B1A1DB9 /* PFConfigController.h */, + 837C54D3D72E985D6E6FF3BBEA8D1EF1 /* PFConfigController.m */, + 9193281C25815834A39FE54B319DD33D /* PFConstants.h */, + FF68CFC1D62A76A5756770DE83EAC745 /* PFConstants.m */, + DA54D490C8B9FDBC6989E68EFA54AF6D /* PFCoreDataProvider.h */, + 2CCDD526B69067FC32BF946A540F4C00 /* PFCoreManager.h */, + 7CB666E8346B15C56F87F1C89B253C80 /* PFCoreManager.m */, + 1853537D2954FD958EC042517906C776 /* PFCurrentConfigController.h */, + A2BE5AE5F0695B55E709A8CDFE17CA78 /* PFCurrentConfigController.m */, + 146B3C6F4906B1DF01F844DF3C869939 /* PFCurrentInstallationController.h */, + B98E96DBABDB51557464408244172B2A /* PFCurrentInstallationController.m */, + EAFB52AC58711E75BD9749D21BB34897 /* PFCurrentObjectControlling.h */, + 9E6629CCD335C17E0B583B60896F6F5D /* PFCurrentUserController.h */, + E3CC799DD4BB9892F589E02F63692D70 /* PFCurrentUserController.m */, + 2E491204CD2D880B645C351FE76C1780 /* PFDataProvider.h */, + BF734DC57CA15A5ED1C02307CD3DE349 /* PFDateFormatter.h */, + EFB4DB04B2AB3F83A62C1D8799687945 /* PFDateFormatter.m */, + 2353E605872B5C10ED350AF2720B1ADC /* PFDecoder.h */, + 5FB90FC608DB5150B3A5D742A227198E /* PFDecoder.m */, + 0565BEC2CF133E7552070ADB0B6B25C7 /* PFDefaultACLController.h */, + 73A197191DE75F22F95C4B3C2E31527B /* PFDefaultACLController.m */, + C058566058269B2CA65AE1148198339C /* PFDevice.h */, + C3940D277F5BE2DF68360DE104260EC4 /* PFDevice.m */, + B6AC7B5CA03EFC1449CFA764CF607A99 /* PFEncoder.h */, + C56C90CA47F054F6B744E59125428689 /* PFEncoder.m */, + 9F4B289AAAE3CB636116D0E2F1741DAD /* PFErrorUtilities.h */, + C82858F9F81EFCA744E061FDCCC6A76A /* PFErrorUtilities.m */, + BF29DE6619DA26BE542969B766BDB8AE /* PFEventuallyPin.h */, + 76268C1A5595073CBD957E1BD34F8AEE /* PFEventuallyPin.m */, + 75C40E2C04EF1F38C17C8E45D198B60E /* PFEventuallyQueue.h */, + 7C605E7C0D2766C324CD9DAAE8BC0DCB /* PFEventuallyQueue.m */, + EA109C22D76467FD3FAB127642A18655 /* PFEventuallyQueue_Private.h */, + 90BC9D720C96091D799BE399435389DA /* PFFieldOperation.h */, + B10427DA50494463C21D709E70487D33 /* PFFieldOperation.m */, + 2FB830A71452CCDB67D2616730944824 /* PFFieldOperationDecoder.h */, + 862487394328F3BC868EBBAC32F7D1AA /* PFFieldOperationDecoder.m */, + 1CB99487DF93544382D4E7BB83E98DDE /* PFFile.h */, + 16343207944FB07AF9037C8A76C5F7A2 /* PFFile.m */, + 245A8375DA02518A0D28196BA09BB15F /* PFFile_Private.h */, + B900275E03F4A9C6416A5077A6E72931 /* PFFileController.h */, + FB2D447FC39896FA1BCA5534A076AB55 /* PFFileController.m */, + 05528EC9662F1A87AE94B74D156D8CC0 /* PFFileDataStream.h */, + CD9BD9332CB70D61FC117651727426D5 /* PFFileDataStream.m */, + 69FCCBED66F1FD4D49A5DF14367CB3F6 /* PFFileManager.h */, + 9D3D98875600AB165C66C65D6E15E83A /* PFFileManager.m */, + 54A2B00522521F43E6925FCB7040FA7A /* PFFileStagingController.h */, + 27B39579BA1A116F78E9C52D8518C9D8 /* PFFileStagingController.m */, + EDB85417DB00C6BC36233DD8F5D526A6 /* PFFileState.h */, + 06A4FFC3574F662CBE4301546762B2B0 /* PFFileState.m */, + 697F8C874C7CA2299F6F34AF16B60BA4 /* PFFileState_Private.h */, + 4961DA34D602A21B6849256EB53A724D /* PFGeoPoint.h */, + F120433DCBA609FFCA1AC8D7E66C715F /* PFGeoPoint.m */, + 3FD3D595219E68629445A5326DAF89B0 /* PFGeoPointPrivate.h */, + 8CA0240612F45CA8F80CC4045A3C4C7E /* PFHash.h */, + 87943BFB7F1004CFB75603B28BBF3C4A /* PFHash.m */, + 4F583CC3B015B36C3E3144C08D893552 /* PFHTTPRequest.h */, + 9171C157C53514711AFD5FF984F31433 /* PFHTTPURLRequestConstructor.h */, + 1578615981EB295CD3B68AD600652886 /* PFHTTPURLRequestConstructor.m */, + 4805B0DB126DE968E42BAEA762A89F17 /* PFInstallation.h */, + 212312E37823B602015F8558E2380BE5 /* PFInstallation.m */, + 57595B2EC946AD2720F477BBF1C1693B /* PFInstallationConstants.h */, + 35C47D77D154C6ACEBD15C0FA61A163F /* PFInstallationConstants.m */, + A126D8590E2C7ECBC16300C2C3A644D2 /* PFInstallationController.h */, + 2694414E286680557D8AF8B1F6B64112 /* PFInstallationController.m */, + E0812753D9AFC5C954E63E141EC3C899 /* PFInstallationIdentifierStore.h */, + A8607AE13FD6F5114938F5C946462211 /* PFInstallationIdentifierStore.m */, + 586A6FCD3982EF14DD7688A9C35821A8 /* PFInstallationIdentifierStore_Private.h */, + 1154985103CE37155F52D0BFC04340EE /* PFInstallationPrivate.h */, + 9A7EE25D0A40F414D480899041A5E485 /* PFInternalUtils.h */, + 03D900F84420FEA97FC38820C59BB2E6 /* PFInternalUtils.m */, + FBD9F8EA50253D95A8AD97BAD86E10C0 /* PFJSONSerialization.h */, + 4A801218C457ACD0660511E41F3A3A30 /* PFJSONSerialization.m */, + 36F6F2D4FA38537FEE30DC609BE6E066 /* PFKeychainStore.h */, + DA8FE461F464D9C9483CDB150140EAF0 /* PFKeychainStore.m */, + E89848483ABCCAEAAEDD2FF9965D52D7 /* PFKeyValueCache.h */, + 33EB14F8B74929AAF1B17B2931B6AF30 /* PFKeyValueCache.m */, + B01AD8E53CF8F54CAA21EB125198756C /* PFKeyValueCache_Private.h */, + 49A809ECA636BA098C492E0709054E30 /* PFLocationManager.h */, + 4A0F68606B3345FA797272EDF32783FC /* PFLocationManager.m */, + AF37684830F2DBB64CC294D7D1ED687C /* PFLogger.h */, + BA86A11DA2D2DE1430E01C7AA116C69C /* PFLogger.m */, + 985870310481EAF6D1AAD21D98000C42 /* PFLogging.h */, + E9B097547004C3BD7DED3DEE274BAF78 /* PFMacros.h */, + A9F919170FF728D2BC8D0CA0FF2DFB83 /* PFMulticastDelegate.h */, + 68655B40F89C27D89D53892FD3930D30 /* PFMulticastDelegate.m */, + B6327D62365930A9BC127D1B6AA7C081 /* PFMultiProcessFileLock.h */, + B492A7B19E294565EE58BF99C7ED8A4A /* PFMultiProcessFileLock.m */, + A3876C6C899E391617046DF5BA206C24 /* PFMultiProcessFileLockController.h */, + 773BC40E82A6994ABB953BECE34B7AA4 /* PFMultiProcessFileLockController.m */, + 653B2C591481812B2FB9DCA0C314CA21 /* PFMutableACLState.h */, + 33BA0D4863A03D1948F483CFE7EA4EAB /* PFMutableACLState.m */, + 7677707275A2EF60830F578201163529 /* PFMutableFileState.h */, + C0EEED09807991F565F9159AB28C2112 /* PFMutableFileState.m */, + 48DF0E6F580F2A50C94F659383B45C1D /* PFMutableObjectState.h */, + 0ABC3BBED3C3C10F8A825E0751B3A6DB /* PFMutableObjectState.m */, + 84DE8F6C85087D8851CE8C93EF867DCD /* PFMutablePushState.h */, + AFE48A1CAAFB131917518CB852A268E8 /* PFMutablePushState.m */, + 860438E9D197650BC7168E76CA8F76E1 /* PFMutableQueryState.h */, + 23A9DA06DB5F829FD8BDD6FD23E82A45 /* PFMutableQueryState.m */, + 48B1E6D7D071B0E0ED3F61BA546629E4 /* PFMutableRelationState.h */, + 2994AAC8F7BD43FAA64FEED836452945 /* PFMutableRelationState.m */, + 128F630995A27DB0544A45BF67DE2E4D /* PFMutableUserState.h */, + 5E36BFDAADCD9869360BFDBB5DC7919A /* PFMutableUserState.m */, + 95E86A54E3D8EFC5EAD2463D4E89A3CF /* PFNetworkActivityIndicatorManager.h */, + 519BAD12C8F4201D74BDD8453AE47655 /* PFNetworkActivityIndicatorManager.m */, + 5924FEF18CC5E1704FD384C65A5F55D9 /* PFNetworkCommand.h */, + FDFB0625E5A8DE395A3BCB617FCD612D /* PFNullability.h */, + E632D3BFE8814A4C59897AC48C2FEAB7 /* PFObject.h */, + 7085A58614F89184F48256983144E2A4 /* PFObject.m */, + 4E992BA048F5DF79A1CDCA82157BFEB8 /* PFObject+Subclass.h */, + 468F4C50CD145E1DB145B2A3D109CC5F /* PFObjectBatchController.h */, + 3B34569D99B799FF8A6F749B10CCA86B /* PFObjectBatchController.m */, + 783A3E8CD34175B563A9C12AA16DE8BD /* PFObjectConstants.h */, + 86C52238DDC9FA7C9DCD49852E0DFE88 /* PFObjectConstants.m */, + 7AD43C7473FB3333A13A263F3DED7A13 /* PFObjectController.h */, + 9D65511E82CA8F7BA0B1D3A4D488BA84 /* PFObjectController.m */, + 1C1EBD8327430E9BC4CE07572302C3B1 /* PFObjectController_Private.h */, + A599CD4CAA3AC99E0EE59D0EE6ABBD4F /* PFObjectControlling.h */, + D4ED889D5C4216E8C328B8142E67A9CA /* PFObjectEstimatedData.h */, + 0526EA7D5B6610515F179B3B16E6EDF2 /* PFObjectEstimatedData.m */, + 4BE43B9E9A14869E0D43BEAF29841B34 /* PFObjectFileCoder.h */, + 0F962944E2CEA6B4A8913F2C5BDEB690 /* PFObjectFileCoder.m */, + 0A3D69E13596F5D45D883E1AE14D9B94 /* PFObjectFileCodingLogic.h */, + FB06B7B325850C15B6DC9083FA9CC5C3 /* PFObjectFileCodingLogic.m */, + 29C1E470BE7725D82BB96486CEBA6B7A /* PFObjectFilePersistenceController.h */, + 6175C27DAC5A50D940DB696AE83B785D /* PFObjectFilePersistenceController.m */, + 8867D68940B55D23D0E9719E275BFA8B /* PFObjectLocalIdStore.h */, + 1D3E68B1FF2DD23DBAFF7854AD495337 /* PFObjectLocalIdStore.m */, + 56A325AA32060E16C9CED99F16E65FDE /* PFObjectPrivate.h */, + A73585EAE72B8B707372B14CD35D1CBB /* PFObjectState.h */, + B27A11D910EE7C9849CF8F140E280ED9 /* PFObjectState.m */, + ACE5B2BD57D84096B68C686CF2A297F0 /* PFObjectState_Private.h */, + A854E7B08674C60E1987E4A310DA531C /* PFObjectSubclassInfo.h */, + 8D9CA35ABDD2925A9EF401DDDFDF3DEA /* PFObjectSubclassInfo.m */, + 8E2A6616C4F11E50D862C39BA82A0764 /* PFObjectSubclassingController.h */, + C01287FF93CF82A4FDD567F7D956DF46 /* PFObjectSubclassingController.m */, + 70CE433A9DEB32F93FB37B35D6987006 /* PFObjectUtilities.h */, + F92FBE5E1BD5C2804DA747E481794947 /* PFObjectUtilities.m */, + AB08BCF1E8867BB674582E6292B917CD /* PFOfflineObjectController.h */, + 3EF30CD48D59FE6544E248C632E1B4F7 /* PFOfflineObjectController.m */, + E4D8C8E5159871AD5FA5B7332A649FB5 /* PFOfflineQueryController.h */, + 582FD07A79653DAE823A3A00F9AAB825 /* PFOfflineQueryController.m */, + ABCED4FB329CB88CEBB2D990F236F8D5 /* PFOfflineQueryLogic.h */, + 01C1843D737F908141E29AADDC66AB8B /* PFOfflineQueryLogic.m */, + C27E78AB76228CCD047CDFC9941CCB59 /* PFOfflineStore.h */, + C18D83A16673A9F0545F5AAC55CAF2F0 /* PFOfflineStore.m */, + AAE5C3F24CDEB6F4DD19802AB2B9D8B4 /* PFOperationSet.h */, + 96725FE5D9936FFB88E9EF3C7354C6BF /* PFOperationSet.m */, + B506CB574291FFD269E218DEE30A8D84 /* PFPaymentTransactionObserver.h */, + 44FCD8E48AE2854E6C68B55DE899278F /* PFPaymentTransactionObserver.m */, + A500D17BF17E1E4E6B95D311ECBC187E /* PFPaymentTransactionObserver_Private.h */, + 8780D2FFBC1992D6FDA23E5A3A81CF1E /* PFPin.h */, + 9B484974193BA8A4646BC070D4C0BBE7 /* PFPin.m */, + 4332383098D7379489F2E1CF7653D948 /* PFPinningEventuallyQueue.h */, + 79791F337B75C7A9E86B2C16831BA3B4 /* PFPinningEventuallyQueue.m */, + B639B99C4CD7C16D2AD6DD82DD08FA5A /* PFPinningObjectStore.h */, + D7CCA908675FF8F62C1721B4D2229BEA /* PFPinningObjectStore.m */, + A4C7B9F2E653733E71087633BB8C15F3 /* PFProduct.h */, + 16D6292D8FAE18DC28FF78404DB719D9 /* PFProduct.m */, + B3414A44DB406F571B8FC80279C438E3 /* PFProduct+Private.h */, + AFAF91B7E5BA7253D501E8786B415520 /* PFProductsRequestHandler.h */, + 2982D008CF0D29BDC45EE799823CC219 /* PFProductsRequestHandler.m */, + 170E287A22801514CAF6C2EB522BE4A5 /* PFPropertyInfo.h */, + 03F801D486528ACB735E258BEAE163CE /* PFPropertyInfo.m */, + 637A71462456BAA98EBD75DD2B6141C7 /* PFPropertyInfo_Private.h */, + E76FEBC923D494E63C53B86C5D25ED29 /* PFPropertyInfo_Runtime.h */, + 4151DE560D48FE6B06CCFA7940B94CC5 /* PFPropertyInfo_Runtime.m */, + A7866E7BD22417E1E798E12FC8148126 /* PFPurchase.h */, + 4395A73F86029763A96B4A9BDB9051CF /* PFPurchase.m */, + B9943DF525E97D5F98EC58CF7865A2A0 /* PFPurchaseController.h */, + BB99803775BDB8D089B8AAF8610F006F /* PFPurchaseController.m */, + 35A723AF4E93A1BD6805BE7CABE6E033 /* PFPush.h */, + 204E788B570A793109481294415D9F28 /* PFPush.m */, + 4662A7DF03B449C11ACAB6A82AA6CD0B /* PFPushChannelsController.h */, + 8B25D2830AB2AF5C858A10271039E131 /* PFPushChannelsController.m */, + 4BBD6BD031241526C280059BD26BDE75 /* PFPushController.h */, + 11590B62084307FCCBCBCD4CB7D71BA1 /* PFPushController.m */, + E93884F64E775CC94E71ED80F9FF08D4 /* PFPushManager.h */, + B0A1E7C301317BD56AD13ED50A48B5C3 /* PFPushManager.m */, + 3D5D2BA73D92C41B2C18785A9F6A34F3 /* PFPushPrivate.h */, + F197F5F3111E02DC7CFE618154DE5269 /* PFPushState.h */, + DD4352603F7BBCDFDFBF51AA7E5470D8 /* PFPushState.m */, + 99FE93E37D759F30B7B5B5162DEB3D20 /* PFPushState_Private.h */, + 2DE00A9C031141A57AB8312D1DEF51E8 /* PFPushUtilities.h */, + 53E751950C87EEEFB70685CD518122A2 /* PFPushUtilities.m */, + D2E0F8156813BEB961019EA1C361691C /* PFQuery.h */, + 9892ACF2D0CAC9B9021724C9C93ABD4C /* PFQuery.m */, + FD283F04FC1522E51E474E074287984C /* PFQueryController.h */, + 8DC92D832BC4F98CB9CDF7D7A7B176F3 /* PFQueryController.m */, + D72826DF2E94C85D334B52CF10098D1A /* PFQueryPrivate.h */, + F141BBF337790457F2DAF41F1F0011E0 /* PFQueryState.h */, + 5C28405D1D8221A23C8D5CC2C7FFE4BD /* PFQueryState.m */, + 698C95FE97ED8FCE0AF17A04C769ACD7 /* PFQueryState_Private.h */, + D7FC083129BF68FB4CB980C41B463B48 /* PFQueryUtilities.h */, + 2DA1030B666DF215688696A02F383A6B /* PFQueryUtilities.m */, + A615158242A3BF4F9C9D90078A2CE30F /* PFReachability.h */, + 9568A44CB835524C00AA887038D28A2D /* PFReachability.m */, + 40C7C5CFB4E466FFB010AF6A0FD9D026 /* PFRelation.h */, + 0FEA53773CB8E3FB3A322C0B4389B7A5 /* PFRelation.m */, + 55E3CD1BDE0CFAD0C13FAED8BEF08B52 /* PFRelationPrivate.h */, + 15CCBEB339CF012A7EF123E309124318 /* PFRelationState.h */, + 20476D5BF51291A996A02F8B096F7768 /* PFRelationState.m */, + B44F43FE13A2621B29F734B3AD99BF68 /* PFRelationState_Private.h */, + 1B9DF380862F77749D695F3104231B01 /* PFRESTAnalyticsCommand.h */, + C471619F560094B3BB41378638A0D362 /* PFRESTAnalyticsCommand.m */, + 64BCD63E238F4FF3CD5D95CE6BF75584 /* PFRESTCloudCommand.h */, + 10A0FDA427EFFCE744C8CB7862407B47 /* PFRESTCloudCommand.m */, + 878B0AD059EDF719C2B350F1235F0A90 /* PFRESTCommand.h */, + 29EEBBE595CAF744AD4307424F577DFD /* PFRESTCommand.m */, + F74C54135672148EAEB4C34B19F94625 /* PFRESTCommand_Private.h */, + 95FB0DA8AF871D7246C122EF20326E70 /* PFRESTConfigCommand.h */, + 8C081A1F7DD370C044B7D5118E27A38F /* PFRESTConfigCommand.m */, + 92A46B5132CB11500CEFCB4DA5AF636C /* PFRESTFileCommand.h */, + 7B240507A5F5C3ACC7EDDA9A36CAEFEE /* PFRESTFileCommand.m */, + 74ED9759C7FE5F4ED33138ACAA88C82F /* PFRESTObjectBatchCommand.h */, + 6F8DF2C96C207C665982A18CF849D6AF /* PFRESTObjectBatchCommand.m */, + 211357AA873E1EF8383B30C370BE0F87 /* PFRESTObjectCommand.h */, + 7A1B02F9DF967F2FFEC317D614A2136F /* PFRESTObjectCommand.m */, + 5E3D6F638163E7F25D3C3782B2DD5E9D /* PFRESTPushCommand.h */, + 621694B9B8F4062ECD717CB818281308 /* PFRESTPushCommand.m */, + 4D74AE7682B21EDC5FA135CD84A526CF /* PFRESTQueryCommand.h */, + 6C1AC18847E2EFD352913578BFCE568F /* PFRESTQueryCommand.m */, + 1F2B2346710518F3D818A44A68F02C5F /* PFRESTSessionCommand.h */, + B407B07136A8C18FA91C2B5C0C66B115 /* PFRESTSessionCommand.m */, + 812F56D962057B55B97DA7C2E81454B8 /* PFRESTUserCommand.h */, + ED989C258CEF00D2F1701A073DD1C374 /* PFRESTUserCommand.m */, + C206C3E9B3302C96684D3897F1D5A944 /* PFRole.h */, + 5EC412AF8C018680357347F65018B124 /* PFRole.m */, + CF114CE627A26531EF546CEF5EFE34B2 /* PFSession.h */, + 4483EB7CE5A6261A9164976F9D35F986 /* PFSession.m */, + 45756A25BE2E60F2173BFFCAE8E9BABB /* PFSession_Private.h */, + 0BEED67AEB0626E1D942E397F7BFE7C8 /* PFSessionController.h */, + 5C0999643940462D0D4D365C743346CF /* PFSessionController.m */, + 3C400573A5C886A59A391F89D0812135 /* PFSessionUtilities.h */, + 697AC4B193E7B1C3AAB92E30576C70EB /* PFSessionUtilities.m */, + 4C500DF14994F5DF82D1C7A4F1B29EE4 /* PFSQLiteDatabase.h */, + D01E708EE28BD1140C9AE0D2329F2E19 /* PFSQLiteDatabase.m */, + 01EDAA9B73CA1A9B90D5CCD0CE04D58F /* PFSQLiteDatabase_Private.h */, + A88639112812A657127C2D4DEED2CDBB /* PFSQLiteDatabaseController.h */, + D1AF1FC1D27AABD7DC4C0948E9C059A3 /* PFSQLiteDatabaseController.m */, + CCE7602032D39C48B4B558FFA15A83BF /* PFSQLiteDatabaseResult.h */, + 1300CB87D7929FE78AD13A425DD18939 /* PFSQLiteDatabaseResult.m */, + 8582EC197D28F9D94A384B032F5B2C58 /* PFSQLiteStatement.h */, + 2E3AF7DFDFAF8657D842E11B07B72C49 /* PFSQLiteStatement.m */, + E5F9060B3223AC9783E8EC3F9FD5582A /* PFSubclassing.h */, + AF6C96E7CB161E28C9D346CD5CEAA5F8 /* PFTaskQueue.h */, + 48CE51C08D38E74BB9D873799C3B56FF /* PFTaskQueue.m */, + 5F0A4B0C3848A8B587EDD0F613FFC91B /* PFThreadsafety.h */, + 880D8A88A7684A55315EDE4547F17390 /* PFThreadsafety.m */, + DAC38063B09099340C9BF218DC2CD4D2 /* PFURLConstructor.h */, + 8B465E244D44A3BE904CFF8C4A48E701 /* PFURLConstructor.m */, + 610383C50F7E8C3E94C191A91D507693 /* PFURLSession.h */, + 333FAC024F4389EAD8F3D15D9F29C1D8 /* PFURLSession.m */, + 931878F83D6F6F825E3F681B771690B9 /* PFURLSession_Private.h */, + A504F227475EBEE681741A0C587CAE41 /* PFURLSessionCommandRunner.h */, + 006EA441F280F24D02FFA3BABCECC824 /* PFURLSessionCommandRunner.m */, + C79111BD3BBEC8AAB595BAD4F5BBFD90 /* PFURLSessionCommandRunner_Private.h */, + 650251D49165102AF10424F8FE6CFF26 /* PFURLSessionDataTaskDelegate.h */, + 60F0D5F81E5A0E8F5FFDC41567CCE3CF /* PFURLSessionDataTaskDelegate.m */, + 32D23F94B2A86BE0E61787BC2DB18576 /* PFURLSessionDataTaskDelegate_Private.h */, + 6194460804426F0A4B172D48D43424F3 /* PFURLSessionFileDownloadTaskDelegate.h */, + E57F847AAD9A19486F1EB1BA4A0C9071 /* PFURLSessionFileDownloadTaskDelegate.m */, + EAB7C8D81307D67033C83A0116B517EA /* PFURLSessionJSONDataTaskDelegate.h */, + 56DD3B16A2FA69C880D705EC37C05584 /* PFURLSessionJSONDataTaskDelegate.m */, + 57703EB1DCEB28A69BCC450CD2F4302B /* PFURLSessionUploadTaskDelegate.h */, + 5B53B46467C6E67E66194FAC567CA3CE /* PFURLSessionUploadTaskDelegate.m */, + 9EF9E7E124CF7FEC59917A8A59D36C9D /* PFUser.h */, + FD20928F422E57B36F0AF7C03A285F25 /* PFUser.m */, + DC01BFEAAAC847F4F08D2481C7229EEE /* PFUserAuthenticationController.h */, + E5AE21B40FF68080B94A984303BBCF2F /* PFUserAuthenticationController.m */, + 4570CED15A9C16289C4D098BADB4988B /* PFUserAuthenticationDelegate.h */, + 9F0161219DC8EBD1C3D61015979852A6 /* PFUserConstants.h */, + 72B7D073C442C0EC9D3D4650B7CE4F23 /* PFUserConstants.m */, + 6D550D3103B9BC03C2B3CFD252981DA2 /* PFUserController.h */, + 4CB18FECF07D424856DF25DEFEAE675C /* PFUserController.m */, + 8626A096D5442B8137154A62B0ADD414 /* PFUserFileCodingLogic.h */, + AB067014760D1E79CE3A58172F0227EB /* PFUserFileCodingLogic.m */, + 5D1BEC4F5C959A0F3A590C62FFFAED54 /* PFUserPrivate.h */, + AB4CD2808D1181D48BD050A1E40BE976 /* PFUserState.h */, + 58EC4DACF873F5F93A5E6D16A993CFB8 /* PFUserState.m */, + 1402676BAF69E76E84C7957AD539C134 /* PFUserState_Private.h */, + CF2F482CF92A6BBCE8E46F23475EA72B /* PFWeakValue.h */, + 69532310DA9419CB7D0183940081C37D /* PFWeakValue.m */, + 04461214A708CDEEF3A5C282A64ACD80 /* Resources */, + 84996DF569A72E800921F16A58D2771A /* Support Files */, ); - path = FBSDKLoginKit; + path = Parse; sourceTree = "<group>"; }; - DB7767554DE90C6D7F4BD0C504716532 /* arc */ = { + D1027468D8455255D7B8844321D9376E /* Support */ = { isa = PBXGroup; children = ( - F467F77ECC07330116C0DD45D3349ABE /* FBSDKAccessToken.h */, - 72F7D5CD8944B77904BC197DDC8A0487 /* FBSDKAccessToken.m */, - 394002AEF7F5079BD3B473255A1C49AD /* FBSDKAccessTokenCache.h */, - 120D59FB9C748DAA660CEDCF7C419164 /* FBSDKAccessTokenCache.m */, - CC2CE8BA55B6B6E6E126D87B37D05550 /* FBSDKAccessTokenCacheV3.h */, - C652B9BA4AA5750AC29A27FB796AF725 /* FBSDKAccessTokenCacheV3.m */, - A52CB1C60BA79230A59E65B9417DBEB7 /* FBSDKAccessTokenCacheV3_17.h */, - EBB7426F9BCC68E345009243DF01C283 /* FBSDKAccessTokenCacheV3_17.m */, - 609E48B1FF82F30564A193C81AB2A1B5 /* FBSDKAccessTokenCacheV3_21.h */, - A38B68BCFCED22FDC00C7FD4F3FFA717 /* FBSDKAccessTokenCacheV3_21.m */, - ADE2CE2451E917A2482234B50A41DC19 /* FBSDKAccessTokenCacheV4.h */, - 831275D794F272F2349F89FC9BA48F1D /* FBSDKAccessTokenCacheV4.m */, - 5CF14FE1AA01684F58CFF8617EC29EC7 /* FBSDKAccessTokenCaching.h */, - 6D2DCC014C9FB0F4706377719D5E23C9 /* FBSDKAppEvents.h */, - 6D9866C1156E2B6A59D2996350AB5075 /* FBSDKAppEvents.m */, - 53DAE1074125BBBF142D3C53E50E06F1 /* FBSDKAppEvents+Internal.h */, - D8EA6434D262B562E0ABC8F28481403A /* FBSDKAppEventsDeviceInfo.h */, - 31B4E41F62E37AA98F6E9D5C10E984D0 /* FBSDKAppEventsDeviceInfo.m */, - 9F8E73E13D56D4420C7C239F8B5BF990 /* FBSDKAppEventsState.h */, - D4FD1E6A7772359C67DC337EEDF88556 /* FBSDKAppEventsState.m */, - 0329086571C053B994B8FFFEABD553B5 /* FBSDKAppEventsStateManager.h */, - E20B6D6E904DDB31FF4F6654458B9DE0 /* FBSDKAppEventsStateManager.m */, - A029888328B7A6D3EFA37ED1B3C36DAE /* FBSDKAppEventsUtility.h */, - 94EDA6573DFD479F710386D53249C2EF /* FBSDKAppEventsUtility.m */, - A460B6A4FC8055E468FF739FF0D108FE /* FBSDKAppLinkResolver.h */, - E00DAE8196002E6DC11BB84AA2B653B0 /* FBSDKAppLinkResolver.m */, - F05A809941BD13C88B6FA6CFB232C9FA /* FBSDKAppLinkUtility.h */, - 5DB6831426CD60ECF9EBFBFE5472A43A /* FBSDKAppLinkUtility.m */, - 83EED38CF3D996DFEA263619B0B9CBD1 /* FBSDKApplicationDelegate.h */, - 146309296F3083D07EB7A9F31D3148AB /* FBSDKApplicationDelegate.m */, - F6E04668789EA254AADF60D794FE065E /* FBSDKApplicationDelegate+Internal.h */, - 65CF7764149142958978827C966A07B1 /* FBSDKAudioResourceLoader.h */, - 7BCB5525ABC0E01EC9A5E1CE8D86FA7E /* FBSDKAudioResourceLoader.m */, - E6E72495A6EA20D898402EC82E0701BB /* FBSDKBase64.h */, - 33AA2846801F30C2C7C711FD553C91A2 /* FBSDKBase64.m */, - 7C2FB169D00DE47B9815271C62B2D855 /* FBSDKBoltsMeasurementEventListener.h */, - A7E0C2515B7C55E949D9562B88288232 /* FBSDKBoltsMeasurementEventListener.m */, - D3FDBE0B0295691A9DA68BB91774B2DF /* FBSDKBridgeAPICrypto.h */, - E67D4E4FAAA111F401888720828746B0 /* FBSDKBridgeAPICrypto.m */, - 1C58296A347F3D84D11A281BDEFE97B5 /* FBSDKBridgeAPIProtocol.h */, - 660799EF24CF28527054B3FA6E25BE2A /* FBSDKBridgeAPIProtocolNativeV1.h */, - B2853B351DB05A9B0740AF256122A30E /* FBSDKBridgeAPIProtocolNativeV1.m */, - 24255CB705666DD05FB446873255ED8B /* FBSDKBridgeAPIProtocolType.h */, - BBA379404F39E04206E50A2AE079F9AE /* FBSDKBridgeAPIProtocolWebV1.h */, - 4DDCD516E785CE5AEDF724D7D5383676 /* FBSDKBridgeAPIProtocolWebV1.m */, - 2BE2D580E317F0D1965AC68793F7AEBB /* FBSDKBridgeAPIProtocolWebV2.h */, - 20D0533465677FE2928E4C7429447F7E /* FBSDKBridgeAPIProtocolWebV2.m */, - 5D50D28CFFDB33D36C5123FE9819503C /* FBSDKBridgeAPIRequest.h */, - FA5ECFC11F48F3DA152D886DDA9845D1 /* FBSDKBridgeAPIRequest.m */, - CD1576A49CCA998DA56187764ACAF229 /* FBSDKBridgeAPIRequest+Private.h */, - 63AA0219BE65F798CB2F7604B4733571 /* FBSDKBridgeAPIResponse.h */, - F65CAB845C91DF90E658BF037D025845 /* FBSDKBridgeAPIResponse.m */, - 6EA7BE6071FB5DACC51089FB613BA39E /* FBSDKButton.h */, - 7244F71460BF559B73433E28D79F2BFD /* FBSDKButton.m */, - C2D770ED2372F2017C6D6A85DD81705C /* FBSDKButton+Subclass.h */, - E6FE7D7622EC7CAC9524E96D99D05722 /* FBSDKCloseIcon.h */, - 78FBD963927DF94B45B5FF19AAEDDEC0 /* FBSDKCloseIcon.m */, - 0820BC8566C53EE58544095722F3A841 /* FBSDKColor.h */, - 2B98304BCBDE12F2AE18BD8F746580A4 /* FBSDKColor.m */, - 879994DB9DEDD7064DD1B700F3FF8690 /* FBSDKConstants.h */, - 249C09A58FE9BB84BAC197A821EC4678 /* FBSDKConstants.m */, - ED8FC29E783D5AAFA886556B21AFC84E /* FBSDKContainerViewController.h */, - CB4A5DFDF0DD0D7EA9036EDB4D3554F2 /* FBSDKContainerViewController.m */, - AB4729343B161E71126051A18EF77E49 /* FBSDKCopying.h */, - 323A920BBC78CC4F32DC36633840DF3E /* FBSDKCoreKit.h */, - 05E89D5ACCE63E55AA659EFB8A18A9B5 /* FBSDKCoreKit+Internal.h */, - FBE8E68D5C283727E833E0BB6BFC38D2 /* FBSDKCrypto.h */, - 38E608FDFE07ABF00DB09AE6F9F9DA28 /* FBSDKCrypto.m */, - 2A90605386336758A5E6828DC0AB5D68 /* FBSDKDialogConfiguration.h */, - E6218FC4CE717BE3D2902995538A0A63 /* FBSDKDialogConfiguration.m */, - EC8288294A4CE8FE42A9FED3E1514725 /* FBSDKDynamicFrameworkLoader.h */, - 8B538AE03EC7635223FC2B7353D18B63 /* FBSDKError.h */, - 36491A250DFAF0D996CC5E60467D5DDA /* FBSDKError.m */, - 69DE218A0D590D2C3678DE52CDFAA862 /* FBSDKErrorConfiguration.h */, - 5927976E25757090DC699126B558DAD7 /* FBSDKErrorConfiguration.m */, - 6C88718F1FAACE95C1F6DC1798456734 /* FBSDKErrorRecoveryAttempter.h */, - B8D4E64BEFC88B60711EE57C1834C5F8 /* FBSDKErrorRecoveryAttempter.m */, - A49E03FC7C84FA3293B38677DC681CCE /* FBSDKErrorRecoveryConfiguration.h */, - 241D1E7CB01A87C87C02CE0340F5DF83 /* FBSDKErrorRecoveryConfiguration.m */, - AE305CCADD2010E8C1E698C4DAC84DDB /* FBSDKGraphErrorRecoveryProcessor.h */, - 2651DC8D21016E6D886F1577AAA22972 /* FBSDKGraphErrorRecoveryProcessor.m */, - 2C97568E00B081386FD3982DE3AD286B /* FBSDKGraphRequest.h */, - F5B33E74020A598273E33D945062DA71 /* FBSDKGraphRequest.m */, - E3839692964A8570C65FDBF51FA010CE /* FBSDKGraphRequest+Internal.h */, - 93400D2B380DA1CACA54DEAAFAE23D12 /* FBSDKGraphRequestBody.h */, - 0F96B01B6AD0F525E17F2074B2EA1EB1 /* FBSDKGraphRequestBody.m */, - 27000997EDF8B991F4B6E05E67C67113 /* FBSDKGraphRequestConnection.h */, - D74C6F651D26C64847074B31212962B9 /* FBSDKGraphRequestConnection.m */, - BA219A4F7C2E6E8A63E64A02CF33B649 /* FBSDKGraphRequestConnection+Internal.h */, - 6EDB6A316CDD5D018128E1D3136DFC1B /* FBSDKGraphRequestDataAttachment.h */, - 6D0E4808B55472B808C0B84583C9BDD1 /* FBSDKGraphRequestDataAttachment.m */, - 87E3F9DDEC8ABB74E9B0B828E43E6A50 /* FBSDKGraphRequestMetadata.h */, - 29D48AAEE67B134EE8B0622C1BCF7F8D /* FBSDKGraphRequestMetadata.m */, - 2827FE6F0B040DD6EE347F254F0F17BB /* FBSDKGraphRequestPiggybackManager.h */, - 5050C345988F196D52CCAA4890D4A5AC /* FBSDKGraphRequestPiggybackManager.m */, - 8D597043658824DCA8FDD8CFFEE3BC6D /* FBSDKIcon.h */, - B06587D0A22379F4450AB6A83497A7DA /* FBSDKIcon.m */, - C691D2172575794DB216679D3693503D /* FBSDKInternalUtility.h */, - A9CC220B3BB7353C4CE25F3392EC1458 /* FBSDKInternalUtility.m */, - 9402AA910E3CEEBA2FBF5C33C47593DC /* FBSDKKeychainStore.h */, - A558554954AE61057C9CF3B86E31AAF1 /* FBSDKKeychainStore.m */, - A01032B0129DF076CF6B8F1997C4BA6F /* FBSDKKeychainStoreViaBundleID.h */, - 49ECF8C520F56BF1EE925AEC28EE0110 /* FBSDKKeychainStoreViaBundleID.m */, - 6DCA15FE1B9E0D7F046522F5521C2102 /* FBSDKLogger.h */, - BDB19BCF4582BF9F10ABA1C43D14ED9A /* FBSDKLogger.m */, - AEE98356256460D105F89B9C6DE23A69 /* FBSDKLogo.h */, - 983296A9BF9A0D8836E833993EB26598 /* FBSDKLogo.m */, - A808BCEC34959F6ECE35E478017AAE04 /* FBSDKMacros.h */, - D659356F1EF1F1C346376A400B5070E9 /* FBSDKMaleSilhouetteIcon.h */, - F8C129748EFBA2068A762010AD12AEAD /* FBSDKMaleSilhouetteIcon.m */, - B5F5ADC1E77EC8A29EE990ABF17E8326 /* FBSDKMath.h */, - 4241AE7BF35421577B79454BFEF8418F /* FBSDKMath.m */, - 4AE04A545B1286F2CB61AF35B668B691 /* FBSDKMonotonicTime.h */, - A1A84243D8AF41257B228911CE638D24 /* FBSDKMonotonicTime.m */, - 6D8623E61A0D98F47738887CE7BE2378 /* FBSDKMutableCopying.h */, - 54BEF4E5D47F21E4FC7E996E4AE29C66 /* FBSDKPaymentObserver.h */, - 46229044B27E123F58A7778EF094817E /* FBSDKPaymentObserver.m */, - 88ED45C6893FA0E82BD12E765DBC00CA /* FBSDKProfile.h */, - 15CD896F18B0B8E074D5B6AC246B7278 /* FBSDKProfile.m */, - 1B828DC073409B28F4FD2BAE7E834D87 /* FBSDKProfile+Internal.h */, - F468CD8A34AFAA3F31C0B27B7124A4FF /* FBSDKProfilePictureView.h */, - 8886812D5A18522530AA7A0B5774BB0A /* FBSDKProfilePictureView.m */, - 06ED326096FE698B59E6B3A44613D460 /* FBSDKServerConfiguration.h */, - 34DA5ED519561747CB24898F11335A79 /* FBSDKServerConfiguration.m */, - C961228BEA0830266F67F826D8BD866B /* FBSDKServerConfiguration+Internal.h */, - 3A6880AAFC8F7351294B649E15B6AD7F /* FBSDKServerConfigurationManager.h */, - 746403A7CAF94F397758C55ECC719138 /* FBSDKServerConfigurationManager.m */, - EE1FCC8E5B8DC53DA187352C0FEF6F6D /* FBSDKServerConfigurationManager+Internal.h */, - 1F79510BB12DF693E6899A336B944ACA /* FBSDKSettings.h */, - 4606174FBA2263954939C4357F44E377 /* FBSDKSettings.m */, - 4D8D1722F7CFA8E2CC3AE2D1CE6B99CF /* FBSDKSettings+Internal.h */, - 6474A77F06A843F81E145096D09D7711 /* FBSDKSystemAccountStoreAdapter.h */, - 45A6C38D859E4B8E2327A07A3AD329D0 /* FBSDKSystemAccountStoreAdapter.m */, - 277CDEE8DFC2D7DBE20B8F1E0A377FC4 /* FBSDKTestUsersManager.h */, - 657D21EB951543C1C5D4637E284EB184 /* FBSDKTestUsersManager.m */, - BA4DA1672A2EE0D0650B35B2EE788AF2 /* FBSDKTimeSpentData.h */, - AD4EA5AF253C62AF6EE7B3838BE1FE11 /* FBSDKTimeSpentData.m */, - B37E9B2C0FC3DA2D2D135ED6BFBFCDD0 /* FBSDKTriStateBOOL.h */, - 42849FC04B9D5B542DF3CC22E779A9A1 /* FBSDKTriStateBOOL.m */, - EEA9D6955C305B5F1B6C27161FE11070 /* FBSDKTypeUtility.h */, - 5923B48367DC6DA262FA7C70FFE94DB0 /* FBSDKTypeUtility.m */, - 308B85DD48F9A76C1D714CB80189B6E1 /* FBSDKUIUtility.h */, - 818CFC14E623AB5BE69BCA0E501ABFD6 /* FBSDKURLConnection.h */, - 3D859BEB9EC0DAF7A490519CC6ACB7D2 /* FBSDKURLConnection.m */, - 8BBEDB49F89EFB9B6465EF82E36C1A49 /* FBSDKURLOpening.h */, - D069FE63005F6068C36B6B3E8C125E9D /* FBSDKUtility.h */, - 76865DCF9853952106158A4BF7621602 /* FBSDKUtility.m */, - 3D17058F2F424FB1C4E4BCDCBB95C1FE /* FBSDKViewImpressionTracker.h */, - C1A7C3AA5681EC1EBFD4DD40121772C1 /* FBSDKViewImpressionTracker.m */, - 7DE49CE008144B7919F76B3E247361EE /* FBSDKWebDialog.h */, - 342BC152E1A501D98AA8468B20BC2FBF /* FBSDKWebDialog.m */, - CD2EA7078774EF7F78C945F81FD00274 /* FBSDKWebDialogView.h */, - 49AA101256B7C595F77F9BA67DED0212 /* FBSDKWebDialogView.m */, - 35E46F0E48D76D7792ECCC0237C8E9CF /* _FBSDKTemporaryErrorRecoveryAttempter.h */, - 52BA832282A6296691283BA45A6A6C75 /* _FBSDKTemporaryErrorRecoveryAttempter.m */, + DD920E6012362DC614A1701B8499680B /* lcl_config_components_RK.h */, + 8714E7D607BECB036F81715B5C27F0ED /* lcl_config_extensions_RK.h */, + 16CCB8BB94AE34725A72A8769F301A7E /* lcl_config_logger_RK.h */, + 3BFC75DE2FA5676B4D6C11BB9AA254E8 /* lcl_RK.h */, + 9E3A50746719F1DF8EA234DC24662F0A /* lcl_RK.m */, + 0168088B34D75689673FA7BA85F0B641 /* RestKit.h */, + B51C3F037B7CB1FC1D26AD422819FAAA /* RKDictionaryUtilities.h */, + 4D8A4BBD034C037A44B441447EDBD2AC /* RKDictionaryUtilities.m */, + 70A2C6CE14776F9B578042E6CC7C2126 /* RKDotNetDateFormatter.h */, + 2ADCEFE17BDF4D7075F5F77EB703339A /* RKDotNetDateFormatter.m */, + 4DC05CB9225FAFC12C400FAE32AD0626 /* RKErrors.h */, + 88F4DDD745B9F0253403AF9B24C6F051 /* RKErrors.m */, + BA5E53C4F97DE65CA639266FC59D62B6 /* RKLog.h */, + 7528F8DFCEB5328922BCA59B0054A221 /* RKLog.m */, + A63CD3C63759638B8C81445CC1AE5832 /* RKLumberjackLogger.h */, + 14424EF937E20F708472093A62D7D67B /* RKLumberjackLogger.m */, + A066A1261BC2B943A2C58454D8594E4C /* RKMacros.h */, + D956488480F1233FFF8403DE1801CEC9 /* RKMIMETypes.h */, + 16AACACB54568C35001E53CAB3D7D64B /* RKMIMETypes.m */, + 7A18E97231CDD5F751206CDE84F4B9BC /* RKMIMETypeSerialization.h */, + B82D9F24AE9309326A0F5D37DA96F86D /* RKMIMETypeSerialization.m */, + AEAF382A07FA2B9C90B3DA379C01ED05 /* RKNSJSONSerialization.h */, + C6E71AEE806FFD98620689D854D9722A /* RKNSJSONSerialization.m */, + D0C7247AC09710B122EB8AEBC235DE9F /* RKOperationStateMachine.h */, + 32D2CB4155B7B88153C547AB13333269 /* RKOperationStateMachine.m */, + 68A024759390FB7405C04F198DD88301 /* RKPathUtilities.h */, + 73ADD1CAE6F397CC4738B0967E78B570 /* RKPathUtilities.m */, + B75D3CD9991E32D3045EFD508FE204E3 /* RKSerialization.h */, + 5AD39F0020472100496314600E65AF2D /* RKStringTokenizer.h */, + 83B82BD0C23C3508B8C4235B574CB5CE /* RKStringTokenizer.m */, + F90CCDF16C40C8073020CB017D02AC1D /* RKURLEncodedSerialization.h */, + 58EB40198CF6F7F4E677035D64534FDA /* RKURLEncodedSerialization.m */, + AEA5DE805E0990CD7BFA9099F1B80A0B /* Support.h */, ); - name = arc; + name = Support; sourceTree = "<group>"; }; - EFF0EAAC511F6D20942CACAD5560A527 /* AppLinks */ = { + D73428F5EDCF779302B1A54ABA56A999 /* FBSDKCoreKit */ = { isa = PBXGroup; children = ( - 56EBCB94D96659853670372C2E4764EA /* BFAppLink.h */, - FADD5491782A7EB7B850FCCD70452A0E /* BFAppLink.m */, - 197B3FB536BC0102E5F4615D92F57286 /* BFAppLinkNavigation.h */, - BECD89C94556181D2DC5E1EC956F6551 /* BFAppLinkNavigation.m */, - 2628FFC954B5343B03FF5E09727D6E1A /* BFAppLinkResolving.h */, - 859C15C373D18E927177F1CA54850FFA /* BFAppLinkReturnToRefererController.h */, - BC5C6C0CB488B2B5EB58A44CB5006846 /* BFAppLinkReturnToRefererController.m */, - 882529F2F51F25982209C54BD8E7C6F4 /* BFAppLinkReturnToRefererView.h */, - 8AF2FF1B953178FD56002A938919F24E /* BFAppLinkReturnToRefererView.m */, - 279536DCCF7BB43F3A2CAF27A31B5C57 /* BFAppLinkReturnToRefererView_Internal.h */, - 989869E1193232EE4E322636E8236CEE /* BFAppLinkTarget.h */, - F86C3277131832CC3F71CEDEA893D4D6 /* BFAppLinkTarget.m */, - 3BE5A10627DC0B9C01F875BD06336D9E /* BFAppLink_Internal.h */, - D80E9A1290BCA30333F7035E22898FD4 /* BFMeasurementEvent.h */, - 184E2F2A8FAA80A676143A0D7ED71EA6 /* BFMeasurementEvent.m */, - A7D2882D92D1796229569A9CC1C6A400 /* BFMeasurementEvent_Internal.h */, - 1FB89A08C5C8B78FBEBC245FD9B7D1E3 /* BFURL.h */, - DC2CCF0D50C6CF8EA37A8C6EECE1581E /* BFURL.m */, - DC48544F9CAD4D07227D206EF611973D /* BFURL_Internal.h */, - F2C4601420612A6E42D46B435019EBC8 /* BFWebViewAppLinkResolver.h */, - 363004150CBDDD99121ED1C9FEE4CE8C /* BFWebViewAppLinkResolver.m */, + 7FF6D0DC6576982B9137F657B4A8DF71 /* arc */, + 57BBFCFCD99BD0361B60E276554280F2 /* no-arc */, + 4BDE6BC6D6EDB59EFFD668FA19CCCE3F /* Support Files */, ); - name = AppLinks; + path = FBSDKCoreKit; sourceTree = "<group>"; }; - F479732DA6868638434BB551820FE0FD /* FBSDKShareKit */ = { + EB57DDB3388FBC701046A1E93218737F /* Frameworks */ = { isa = PBXGroup; children = ( - 1A369AE523AE5428A6D9F6550614FE9D /* FBSDKAppGroupAddDialog.h */, - DDE80DA7A434D17F0D915E284F20436A /* FBSDKAppGroupAddDialog.m */, - 309C5A18E36D89DDB6DB309BFFB3A074 /* FBSDKAppGroupContent.h */, - D155C2F3D678574A9479B645207148FB /* FBSDKAppGroupContent.m */, - C8A30076FFE0AE4D80EEE9B5F111E0C4 /* FBSDKAppGroupJoinDialog.h */, - 35438CE7344049DBB7B9FFEB80DB1414 /* FBSDKAppGroupJoinDialog.m */, - 705296E1BAA1CCE01D2761F16F9A39F9 /* FBSDKAppInviteContent.h */, - 73F2E6274BAD1AD8D9324B3838256FB6 /* FBSDKAppInviteContent.m */, - 0315685B7458D2A9C07F1B237F76CFF2 /* FBSDKAppInviteDialog.h */, - EBCC0954F36C8CBCF2C1BABC5BE29972 /* FBSDKAppInviteDialog.m */, - 81F2926280C12B9767563CFF770FAF7B /* FBSDKCheckmarkIcon.h */, - 4BE29891FEDF3029F65A3606EE7B3D88 /* FBSDKCheckmarkIcon.m */, - DE37807E0B1639A13221C0F6E94C015F /* FBSDKGameRequestContent.h */, - 54920BD88D6A715796BB19A547213023 /* FBSDKGameRequestContent.m */, - 520663893D6DE2A86D1D57299989DD21 /* FBSDKGameRequestDialog.h */, - 44335A04DAA32B00C92160838C5E789D /* FBSDKGameRequestDialog.m */, - EDF463E3926C635EC2862C35B35EF0C0 /* FBSDKGameRequestFrictionlessRecipientCache.h */, - 5B68D5F4D24A36ACF45400FAB8AB23DE /* FBSDKGameRequestFrictionlessRecipientCache.m */, - 8AE382F6E1CC26178A9E3BBA1C473DEB /* FBSDKLikeActionController.h */, - 0F072CC41C2003448531F2F1DD2C3BAF /* FBSDKLikeActionController.m */, - 335878EBC1626AF73529ED5CDC829E08 /* FBSDKLikeActionControllerCache.h */, - B921F27786A108BF382F49799F4ECEFE /* FBSDKLikeActionControllerCache.m */, - B8C2915B7FBC79D5F729A8D454EC471C /* FBSDKLikeBoxBorderView.h */, - 6358EB9DDDA9062C6B886A954CBC76D9 /* FBSDKLikeBoxBorderView.m */, - ADF8EC9446037AA127D75EE89650002F /* FBSDKLikeBoxView.h */, - 00C31AE91F93FAC03797A08CB87C7EB4 /* FBSDKLikeBoxView.m */, - 58D0E28B48A7E32F9FF7005DEE64C416 /* FBSDKLikeButton.h */, - 0133F272E02689C37483595FA9CE6B21 /* FBSDKLikeButton.m */, - 38A6D9AA344FD2AE5B4D70FAD5062AB4 /* FBSDKLikeButton+Internal.h */, - 14BB822079E39C44A662265EDC832BED /* FBSDKLikeButtonPopWAV.h */, - 8379929D10F949C09F2BE6851EC97373 /* FBSDKLikeButtonPopWAV.m */, - A8A665A78A257570FD4F9CE8A2EF5694 /* FBSDKLikeControl.h */, - 0D3C379231F1FECE1C711149F33EBEFB /* FBSDKLikeControl.m */, - B9A3B0127A1E076EFFEE0400BFD1119C /* FBSDKLikeControl+Internal.h */, - E060B56260BC85ECD94761E793A08F02 /* FBSDKLikeDialog.h */, - 31A09CE6942D32E70D7AF420C0C28F98 /* FBSDKLikeDialog.m */, - 8C2E4681A2F967A6C4E522E08078ADC0 /* FBSDKLikeObjectType.h */, - B6DC44432F551A7E862B5307DF7F040D /* FBSDKLikeObjectType.m */, - 5E5EF79FF8D3C83E7DCBD82CE96B138E /* FBSDKLiking.h */, - 71B842D80B25BEB8AE3A797A724D7CC5 /* FBSDKMessageDialog.h */, - 2BD5B84023B338476E31F24FC2D689A0 /* FBSDKMessageDialog.m */, - CDD888F1AE46F190163FFB9C51D7BF06 /* FBSDKMessengerIcon.h */, - ACB0039F3DE0903BD2479336BCB4AAF5 /* FBSDKMessengerIcon.m */, - DFCBF9D0B251D3EABC70AD75A30E8294 /* FBSDKSendButton.h */, - 23EF53286E86923DB4C02DDCCA3A21CA /* FBSDKSendButton.m */, - B5F3FAED1517988ED94F54E9B8DA4E0A /* FBSDKShareAPI.h */, - 9C8807B3161750EADE6E8BD164724CE6 /* FBSDKShareAPI.m */, - 6B0E9CC89B4C9510C51F6F8388E25C21 /* FBSDKShareButton.h */, - D3882165793F00E2FD03DD7A903E3AB4 /* FBSDKShareButton.m */, - E6A1DDF7D1694E9370A0A4CE320117CE /* FBSDKShareConstants.h */, - D58E0BB2015D810A38A6E5641DCBDB8E /* FBSDKShareConstants.m */, - DF42A50DA3169ABB374EFAA43DCFDE36 /* FBSDKShareDefines.h */, - E7626F8EE9D02540ADF0E346CC475FD9 /* FBSDKShareDialog.h */, - 8F5835DFBC8A6E5D025F957021AE5352 /* FBSDKShareDialog.m */, - AA6E69D0F5432BE35E8DA343DA6002CE /* FBSDKShareDialogMode.h */, - 260BC0B46C2DA2BCD9F62462348F6673 /* FBSDKShareDialogMode.m */, - 7BF25C2B0ED8E85EC0D52225FEAAF054 /* FBSDKShareError.h */, - E3D7CAFA467CC207516594F8CA235BE1 /* FBSDKShareError.m */, - 225675EE77126480507353150E5D4EF3 /* FBSDKShareKit.h */, - 2A2200960479E4759E2409514013ECE9 /* FBSDKShareKit+Internal.h */, - 4D03DAC12EBD0056CB252F2F287B6402 /* FBSDKShareLinkContent.h */, - D2C9DD7C685BBD2CC7EAB4A3433549B4 /* FBSDKShareLinkContent.m */, - 99FF411F081193D28CAB98DD501F9F72 /* FBSDKShareLinkContent+Internal.h */, - C90D137341FF777D06387AF9304BB376 /* FBSDKShareOpenGraphAction.h */, - DD3B394CF966217416F1237E9D4D804F /* FBSDKShareOpenGraphAction.m */, - BE9C3BEACE061C48E9A8427C3059F7E5 /* FBSDKShareOpenGraphContent.h */, - C0ACB6CAB80A7E3DC5CFFE36AC450565 /* FBSDKShareOpenGraphContent.m */, - 1B1DBB7A5A5EE9B44DE86876D074207E /* FBSDKShareOpenGraphObject.h */, - CD8DCF741100D5A960D3D87F3F11EC5B /* FBSDKShareOpenGraphObject.m */, - E321A3BE2B4DC782EA81A69D33894C29 /* FBSDKShareOpenGraphValueContainer.h */, - C3212BA31250F0C8DE1BD1FAF02207C7 /* FBSDKShareOpenGraphValueContainer.m */, - 778AD9DB2CF0543C914F6BD394974650 /* FBSDKShareOpenGraphValueContainer+Internal.h */, - 63188CFF04051D2C52F225740A033D43 /* FBSDKSharePhoto.h */, - 98522B603FC459FC9758D1108318CB8C /* FBSDKSharePhoto.m */, - 69A5C357BDE6663375E1CBBBE08B3440 /* FBSDKSharePhotoContent.h */, - 6E52C541820F569B77A87A851D648583 /* FBSDKSharePhotoContent.m */, - BE300C64CFEC0B1AF5E5B10FCAD254AB /* FBSDKShareUtility.h */, - 25FA6116451E734C381D4F3606124CE3 /* FBSDKShareUtility.m */, - 19DB73C3D0C75D9D0E53F4111D417C01 /* FBSDKShareVideo.h */, - 73305F9BCF2563CCA2E4C15B8DDCFD68 /* FBSDKShareVideo.m */, - 9605F7221341E3EA07630ABF2DE6BC6F /* FBSDKShareVideoContent.h */, - 93C724D27975298397EBCBA024D076F2 /* FBSDKShareVideoContent.m */, - 433C981127868BA24B0F88745E7CB575 /* FBSDKSharing.h */, - FE6B1221BB48461DA615B55D5D19370E /* FBSDKSharingButton.h */, - CC65F8627E5C5856896FED7D2BB1CF7B /* FBSDKSharingContent.h */, - 3C56505E72D2FE8EBB1539F6D52CDF90 /* Support Files */, + 36F3E3D009A33DE3EB27FA31CBCE358C /* iOS */, ); - path = FBSDKShareKit; + name = Frameworks; sourceTree = "<group>"; }; - F948C552CF9EFB5B5DF8C06A725EEA7A /* Support Files */ = { + F6FFB7F933FD72A4DE0BC8F277933B4E /* TransitionKit */ = { isa = PBXGroup; children = ( - 6930BA637A283F95CB5BE9E7F530E97C /* RestKit.xcconfig */, - 3CAC9E985D7035114C36728704534B05 /* RestKit-Private.xcconfig */, - FD329036B04DED5ACADFC2A64E1A81E3 /* RestKit-dummy.m */, - ED23ACC2E4D25AF32F09735D7343AC88 /* RestKit-prefix.pch */, + 310DAE7B650CE093469515EB7385030B /* TKEvent.h */, + 78AFC5613D6C0DB29F522A49E3BA144F /* TKEvent.m */, + 96D93EAF0FCC8B5FBB56E2E9C45F9D62 /* TKState.h */, + DD38F8B2DEDE8021308CAA1FD5E08EA0 /* TKState.m */, + C24ED85DEF7CEFA65A545211A7E9A27C /* TKStateMachine.h */, + BB22C7EB016209266A6A46D552308368 /* TKStateMachine.m */, + 2BDB55E9C39EE72564DF58E4922A0879 /* TKTransition.h */, + B7A6D2F5DC2549FF82CCCCA100238F29 /* TKTransition.m */, + 2D639B8AB8EC8DD751AE4F019F908401 /* TransitionKit.h */, + 6A281583AE86BEBA831DCD4AA7F89334 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/RestKit"; + path = TransitionKit; sourceTree = "<group>"; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 3115B24E624C7DD822717FD35A51E1FF /* Headers */ = { + 0DDAA8E16E00423BC6858ACC657DA26B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 29665B4CBF57ED49FE333D5DA6FE41D7 /* AFHTTPClient.h in Headers */, - 71952ADC9172B4F79B433C367D5BB740 /* AFHTTPRequestOperation.h in Headers */, - 02B35C6C34045B1BF7204DFB7206A709 /* AFImageRequestOperation.h in Headers */, - 2F3CC7CAE02FD6568812F880AA12E4F3 /* AFJSONRequestOperation.h in Headers */, - 0B6D9B4A94DAA97E2060C438E2866348 /* AFNetworkActivityIndicatorManager.h in Headers */, - DFD7418E4229FADCB3AB85CF73F581F1 /* AFNetworking.h in Headers */, - 8AC9E8395C32554D980DB74ED4B0A3A1 /* AFPropertyListRequestOperation.h in Headers */, - 6C13D116F0AA2A78C4B546E3E0728D09 /* AFURLConnectionOperation.h in Headers */, - C3F55093F84D852D9EA113F49D7A45B2 /* AFXMLRequestOperation.h in Headers */, - 9047EED945F054752070AE2C7FD84036 /* UIImageView+AFNetworking.h in Headers */, + 46A761F0B52B393302374F202159EF83 /* _FBSDKLoginRecoveryAttempter.h in Headers */, + 06D70E3ED56542E6E150732ACE707585 /* FBSDKLoginButton.h in Headers */, + 46434AF620227311479C776B81BA97F6 /* FBSDKLoginCompletion+Internal.h in Headers */, + F9A49E306CE246D7F327C43091688131 /* FBSDKLoginCompletion.h in Headers */, + B05B85B93FE4C40364989A851D0E4C95 /* FBSDKLoginConstants.h in Headers */, + 6E81F98DB0508128E08205B0290F7F66 /* FBSDKLoginError.h in Headers */, + 0524E3768D3DFCF2E4E232DCF896DC2D /* FBSDKLoginKit+Internal.h in Headers */, + ECECB6E62DA076603D8F2A805641CA27 /* FBSDKLoginKit.h in Headers */, + E65B5BAA6FD361DED892118A76ECF21E /* FBSDKLoginManager+Internal.h in Headers */, + 49F2BA3E1D32E882B51DC0A899D3C229 /* FBSDKLoginManager.h in Headers */, + 6E33ED273C645E70EF87C0C05807D1A2 /* FBSDKLoginManagerLogger.h in Headers */, + D041A6307B8BE12B6F1D2C7B11DB335F /* FBSDKLoginManagerLoginResult+Internal.h in Headers */, + BCC52FD8A4B950C4F0A918C1E7C04A8B /* FBSDKLoginManagerLoginResult.h in Headers */, + 3D91615B81BDE2505C751BD7D4FB5EDB /* FBSDKLoginTooltipView.h in Headers */, + 8EE441E5EBD7EAFFDDCCB5F247B160F6 /* FBSDKLoginUtility.h in Headers */, + A8FB9C2DF4996A5647C43D1D20B34154 /* FBSDKTooltipView.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3A1F7870E56AFBCFF878F6276B003CAA /* Headers */ = { + 19C2B07A862CD221D4D5B9309876BAC3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 73C1B903BAB9CD9165C6D8C590C88DBC /* BFTask+Private.h in Headers */, - B81C208B8B66805EFD26D6173026AC2C /* PFACL.h in Headers */, - 6D0555F3AFF71C16C54E98092E4304D3 /* PFACLPrivate.h in Headers */, - F18BE7AC26E9A094AE2C652CFC6218DF /* PFACLState.h in Headers */, - DD31C197056FA652D3BF1274DF5E2908 /* PFACLState_Private.h in Headers */, - F3DE094871B28D233F86D9227E7478D2 /* PFAlertView.h in Headers */, - D1840F29C46B62C16A3A6D9AD6989746 /* PFAnalytics.h in Headers */, - 34B9717B9BD9E717234A4BA4FA9B23CF /* PFAnalyticsController.h in Headers */, - 19033C9781DE147AFF45BF404A35C4DA /* PFAnalyticsUtilities.h in Headers */, - 43A88B5ACE21230C0F2524DB074C8763 /* PFAnalytics_Private.h in Headers */, - 748865BAC2CF0646028E14F1F901D0F3 /* PFAnonymousAuthenticationProvider.h in Headers */, - 8933370B0D400B59134BF817F36355D1 /* PFAnonymousUtils.h in Headers */, - 8B02A33743FFEA58A1A3FAB553DA0113 /* PFAnonymousUtils_Private.h in Headers */, - 27746C9143CAB9F08BA89403D37A40DC /* PFApplication.h in Headers */, - 38C42E03CBD6DE6CD7C011646AF8AAE7 /* PFAssert.h in Headers */, - 686D001D6513106185D9F01DB6478979 /* PFAsyncTaskQueue.h in Headers */, - 7FC64428627661A597A1CE287993D8DD /* PFBase64Encoder.h in Headers */, - F570FB09B9F8F909125EE214EC64B5A5 /* PFBaseState.h in Headers */, - FA618E7DD8CB586A62073380FA9E713C /* PFCachedQueryController.h in Headers */, - 6A7C7334A9A8FCAE1C9E5992882D056E /* PFCategoryLoader.h in Headers */, - 064DCF0B2619737983918A9B8B8CDBED /* PFCloud.h in Headers */, - A26DC0F983CC9217FBFCBAC0F78FD6F0 /* PFCloudCodeController.h in Headers */, - DDE2AFE85B97C78711AE7DAA39EC0323 /* PFCommandCache.h in Headers */, - 49183D48B7BA396016E94E50E7E508FC /* PFCommandCache_Private.h in Headers */, - D68FAFBD744D9F40FBAF34C3ABBE57F9 /* PFCommandResult.h in Headers */, - 904E9698791C4696CD82E78D1D525A5A /* PFCommandRunning.h in Headers */, - F02B0D1C7F2D67E431DF0E4DE980BC34 /* PFCommandRunningConstants.h in Headers */, - B6F7BF2A4B571A2A96D44A9E3D428C14 /* PFCommandURLRequestConstructor.h in Headers */, - 34800A407ADEB815F529E3CD4630210D /* PFConfig.h in Headers */, - 0DEE41F44DA5A7BFBE8FE62391313D9D /* PFConfigController.h in Headers */, - 9A2BEF19F863F33E38EBFAD7EA9701CB /* PFConfig_Private.h in Headers */, - FEB09DE83CDF651DE7AA0D755192CD2A /* PFConstants.h in Headers */, - D88C209C8E7E7DE5ADA119895BE96C8D /* PFCoreDataProvider.h in Headers */, - 88AEFFFCE8B5D10A029F8591B492C4B6 /* PFCoreManager.h in Headers */, - 1C61916D50D61F450ED07778959FD4EE /* PFCurrentConfigController.h in Headers */, - 7023F33F30099D075DB99C2AD2DA1289 /* PFCurrentInstallationController.h in Headers */, - 38CDA66FB02AD0480B135A0E9C4DDD09 /* PFCurrentObjectControlling.h in Headers */, - 253CCABFC921C06E3305CE89A60B9181 /* PFCurrentUserController.h in Headers */, - 72FE90A10832697092610577418DDCFD /* PFDataProvider.h in Headers */, - 5E18C27CBCF0F5DBBC749F0C5609544C /* PFDateFormatter.h in Headers */, - 0DD8321B7E4063220C99652AD25B964C /* PFDecoder.h in Headers */, - 2F7B41D4DACC8C02B4AE6A30485A3911 /* PFDefaultACLController.h in Headers */, - C65CB0D6735491709C9373251CB51613 /* PFDevice.h in Headers */, - EC4E03293E8AC92E74CAF38BCC259132 /* PFEncoder.h in Headers */, - 7E2762508F6A1FF99C3EC5ACB2A10FED /* PFErrorUtilities.h in Headers */, - F27976D070F7ADC10BE6FF4093AB9974 /* PFEventuallyPin.h in Headers */, - B636B7948DCCB21E44E36BE91F1E0AB4 /* PFEventuallyQueue.h in Headers */, - 3EAE0DAA5517A55E52E5A5D099DB7AA4 /* PFEventuallyQueue_Private.h in Headers */, - 7AED011BAA61F2E740F903C7336A780C /* PFFieldOperation.h in Headers */, - 59FCCEC297EE635331865784CB7C5FA7 /* PFFieldOperationDecoder.h in Headers */, - F643790D3224850C9A4E9654A85B75A2 /* PFFile.h in Headers */, - 15EE0A24606B3F4E67CB9D72923B661C /* PFFileController.h in Headers */, - 2CD9A0FAC248398D39B7BC82F3ED4BF7 /* PFFileDataStream.h in Headers */, - 67B5CAAE671A5C8A9B817CE3699AF6E3 /* PFFileManager.h in Headers */, - 165AFC43C7723E5B35C8E9DB4A1E119B /* PFFileStagingController.h in Headers */, - 3F2315BDE91F31DA56D01EF5660DAE6D /* PFFileState.h in Headers */, - 242C15C9117EAC106F61B34CC69472D1 /* PFFileState_Private.h in Headers */, - 2C46FF817FBEDF337CE624F0A893F0A6 /* PFFile_Private.h in Headers */, - 7CF19BC1C67AA7C5AE473611DFA0C772 /* PFGeoPoint.h in Headers */, - 55DD89F9A164C6F15D3A0254F67CCFC6 /* PFGeoPointPrivate.h in Headers */, - CC4ABE41A3D33815B2E5D706EE5EB7A7 /* PFHTTPRequest.h in Headers */, - E9E1E5F9CE1A7DE976690D18B60B3F61 /* PFHTTPURLRequestConstructor.h in Headers */, - 0D3178232D43DE91EDF29D61D52D0DEF /* PFHash.h in Headers */, - 9E495012585497CA83EBB7D85B66DE18 /* PFInstallation.h in Headers */, - F9569D66DA03563FB9E44DFCB07FC939 /* PFInstallationConstants.h in Headers */, - 5B08DE41E6A3A50C09C167F05DF8F50A /* PFInstallationController.h in Headers */, - FA2C80A7C39D1B44B797709642EC08B2 /* PFInstallationIdentifierStore.h in Headers */, - 2E5619D195A0E92BAB39F541E7AD328E /* PFInstallationIdentifierStore_Private.h in Headers */, - A48A2777BF06EEFBC6370A833DD677CD /* PFInstallationPrivate.h in Headers */, - 58A6BF39F429E731177F766F2747CCA4 /* PFInternalUtils.h in Headers */, - C53105DD999BE471CFE79E49C78876E4 /* PFJSONSerialization.h in Headers */, - CD11060540E1FD78F974E30302AE395A /* PFKeyValueCache.h in Headers */, - 452561965CF2A1AF6B261E3B86511A1A /* PFKeyValueCache_Private.h in Headers */, - 08EA08F97E9E3BDA10151C17762295C3 /* PFKeychainStore.h in Headers */, - D2E9272E48AC9EE46E077B11011DD71E /* PFLocationManager.h in Headers */, - 2AAF9F612DA70EAD241A04B84E617778 /* PFLogger.h in Headers */, - 6208EB35E2A3EF808B1C66D4D64C5DF0 /* PFLogging.h in Headers */, - A8BCAA6D6A877FBD2678E40ECE7689F4 /* PFMacros.h in Headers */, - CAFEF18BDA8E890B2A34E2F062ED481D /* PFMultiProcessFileLock.h in Headers */, - AEFB17E8179A42AC76C5C46678A1E984 /* PFMultiProcessFileLockController.h in Headers */, - 684F6D48516C29D70B837257203CB999 /* PFMulticastDelegate.h in Headers */, - E8E7BC50C1B835A84120AF1A5303B050 /* PFMutableACLState.h in Headers */, - FADE57698ABC737DED667D6C7A77FB0E /* PFMutableFileState.h in Headers */, - 271E62B60998688EC159938AF3432FDE /* PFMutableObjectState.h in Headers */, - 4FC26ED4C9894736D998A022CE894DFC /* PFMutablePushState.h in Headers */, - C3B1E6F9F461A3253BF8E3430905C0C2 /* PFMutableQueryState.h in Headers */, - 7ED422249D15540B85E10655FE6C988D /* PFMutableRelationState.h in Headers */, - 90DF7AFB3CDCC7BDF91701989F51605E /* PFMutableUserState.h in Headers */, - 45AAE02BB82AA9DED26A85409DB656A6 /* PFNetworkActivityIndicatorManager.h in Headers */, - 43019C013CEA899E11CFEBB8D60D87D2 /* PFNetworkCommand.h in Headers */, - EE75A228F7AB72AFC98019C41213ED37 /* PFNullability.h in Headers */, - C57EEF06E76A210624FE97692F3569DF /* PFObject+Subclass.h in Headers */, - 5B982F856921827D002F7C5CCE73DDAA /* PFObject.h in Headers */, - A83BC9FF2850C219FA5FC77FF4111CBF /* PFObjectBatchController.h in Headers */, - FDE2BCBED2CDDB457C2E9BAC04F2FD0F /* PFObjectConstants.h in Headers */, - 0C2BF68FAB2FC4C272026B79778040EC /* PFObjectController.h in Headers */, - 9BC4B4C5BE92BABC56261D0983597C6D /* PFObjectController_Private.h in Headers */, - C2974D56740D2B143BA77AA3509AC10F /* PFObjectControlling.h in Headers */, - 4D46CDEAAFB03920B313BDBC2F235570 /* PFObjectEstimatedData.h in Headers */, - 61870EAC96BBBA435263587CC7F2E48F /* PFObjectFileCoder.h in Headers */, - B7D722B63D54738AE3DFDE260A5EA8B1 /* PFObjectFileCodingLogic.h in Headers */, - 71FDAA355554DC3828CB576F2053B15D /* PFObjectFilePersistenceController.h in Headers */, - 9ACE7DB11559893303A60C131C1C651A /* PFObjectLocalIdStore.h in Headers */, - 3DF26B936A4A112B5B60CE1C3EC8959F /* PFObjectPrivate.h in Headers */, - 6A7F2C2C80852EBF6A620AF12E900D24 /* PFObjectState.h in Headers */, - 7F476F4A55E0605F8B1BED1AAED083DB /* PFObjectState_Private.h in Headers */, - 77822739473DC952F4F5A5AEAFC0DF35 /* PFObjectSubclassInfo.h in Headers */, - 62F4B91A78FCE3413CBAC127D5151E2B /* PFObjectSubclassingController.h in Headers */, - 5EE125E8B7346490F3E3FFF8A69B2845 /* PFObjectUtilities.h in Headers */, - 006CF96B0EC8D4F5E5898DEE9891E373 /* PFOfflineObjectController.h in Headers */, - 7F31A5308B96FD7D40312D00F7FED8D1 /* PFOfflineQueryController.h in Headers */, - 55FAFAB3178952EB789197F3BD7F1EB6 /* PFOfflineQueryLogic.h in Headers */, - F04F4F51E4FED1319EA3A101BE08B5CC /* PFOfflineStore.h in Headers */, - 918020D013ED8C98F9A3A541854321D6 /* PFOperationSet.h in Headers */, - 4E7C7673802993B2D1AFF71028EECB42 /* PFPaymentTransactionObserver.h in Headers */, - 66060F4E52A075B9EF3ED69EAF8C4812 /* PFPaymentTransactionObserver_Private.h in Headers */, - 247B8D0D633AEFC395D2B80429B1A91C /* PFPin.h in Headers */, - 05D4DCDBCD5FC6951A00E3EC1B772791 /* PFPinningEventuallyQueue.h in Headers */, - 0978AC4917B7960598D540B0BCB407A4 /* PFPinningObjectStore.h in Headers */, - 81C0AEE0BDA12DD25B4808A7E6DD9459 /* PFProduct+Private.h in Headers */, - 81F1E0666FE80C4D88A3B99E120771E4 /* PFProduct.h in Headers */, - D2EAB48F7E5D4DD2A120803D4B599772 /* PFProductsRequestHandler.h in Headers */, - 5CA15F5F3A0EFA7A94D7110E3F1F8137 /* PFPropertyInfo.h in Headers */, - 6937F426816B16FCD4C8859174159C7E /* PFPropertyInfo_Private.h in Headers */, - 6919E252E16FC787AD1D9B56375F7011 /* PFPropertyInfo_Runtime.h in Headers */, - DD70E09D858BF03C89C82858C764109B /* PFPurchase.h in Headers */, - E7E38551016FB52D5C85B4E3B0B7A169 /* PFPurchaseController.h in Headers */, - E0A85D8E914368D87DEE75F0ECE2082A /* PFPush.h in Headers */, - B9D14F6B67015F967B4F523B6669BB54 /* PFPushChannelsController.h in Headers */, - FF7BAEF5786AD43C26852E973A2DFD9C /* PFPushController.h in Headers */, - 23D8FDFC8CE4359208A7EF38A5FF1035 /* PFPushManager.h in Headers */, - 492225CAF7397433B1343717CEC233C2 /* PFPushPrivate.h in Headers */, - 34355DB3FC335D6F5F14E2C436E8B880 /* PFPushState.h in Headers */, - 7723A818ADD25F8105C149DDB4EE3972 /* PFPushState_Private.h in Headers */, - D913F5B9A2D6A81B047DC2805ACB7F91 /* PFPushUtilities.h in Headers */, - 33C0113BD220073D53AF6158C83E6F35 /* PFQuery.h in Headers */, - A8F268C9D52AC5573CA492C2F7E03B39 /* PFQueryController.h in Headers */, - D984F13A369C80259E00E1ABACA927E8 /* PFQueryPrivate.h in Headers */, - 9C4AB8907669D2B957962CC3FEB63853 /* PFQueryState.h in Headers */, - E248EE46DFAF1C2BE7957D07F9951BD5 /* PFQueryState_Private.h in Headers */, - 923010B8F3329953E0A79793C8647EE1 /* PFQueryUtilities.h in Headers */, - 6950392D69B8C200487A284BA5B8D0B3 /* PFRESTAnalyticsCommand.h in Headers */, - DC4B946518DF342C5E5287B7CCBCED86 /* PFRESTCloudCommand.h in Headers */, - C040AE49A4F217651810F5F139C425CD /* PFRESTCommand.h in Headers */, - 6D82BD254178B3C9EECC246D810632E9 /* PFRESTCommand_Private.h in Headers */, - 233B0108145788C73B6DEE12D030FE98 /* PFRESTConfigCommand.h in Headers */, - D1AF91CB46215FCCEA2F679CF6667F16 /* PFRESTFileCommand.h in Headers */, - 78C9EE129A8B784811999428280E0BCA /* PFRESTObjectBatchCommand.h in Headers */, - 6309045AC92213B2E323792E8F779257 /* PFRESTObjectCommand.h in Headers */, - 476019024CC57A5B6C8E2D69E9EB636D /* PFRESTPushCommand.h in Headers */, - 2676FFF359D8A0EEE5C4B5A999B5B8F8 /* PFRESTQueryCommand.h in Headers */, - 80D7AE607ED5ABD55BDD03B17E072715 /* PFRESTSessionCommand.h in Headers */, - AA903B5AC7C383473DD981318E286C33 /* PFRESTUserCommand.h in Headers */, - D59A0303B864AF244B2644CFCBE81A58 /* PFReachability.h in Headers */, - 757C64059CB5443093CD909C0DEC74FE /* PFRelation.h in Headers */, - 6FAE65259A4C6DE098E364FB6A55FCB5 /* PFRelationPrivate.h in Headers */, - EB6745E9ADD2F0BC654769A8E83E80B3 /* PFRelationState.h in Headers */, - 98F7D66B579B9C528F943E154A0DA118 /* PFRelationState_Private.h in Headers */, - 1C798778DB7297C94C49F9B3CB284F50 /* PFRole.h in Headers */, - 67891D5D94391676B0DA81592B29101C /* PFSQLiteDatabase.h in Headers */, - BC7941F946ADB340B252C6406E2DA921 /* PFSQLiteDatabaseController.h in Headers */, - 4EDD2C991964C1B9BFB9CB3677CB0B0D /* PFSQLiteDatabaseResult.h in Headers */, - 7E438A7D61F9B7C06F0664B3920EBEB9 /* PFSQLiteDatabase_Private.h in Headers */, - 5002F32A1D34B6240D1C30F38349AD06 /* PFSQLiteStatement.h in Headers */, - 2E10AF5AABE5FF7C918CC397AEEC1C7B /* PFSession.h in Headers */, - C568E296A558287E14B65E5E078CB870 /* PFSessionController.h in Headers */, - 69D20734E1F34055E468363CDA1F14A6 /* PFSessionUtilities.h in Headers */, - 95A30E62D31A893BCB37B77FD0ED25F7 /* PFSession_Private.h in Headers */, - C8F19E6DFE73A0B5BCE6E47ED67E4904 /* PFSubclassing.h in Headers */, - 5587DF8D7396BB77AECBE77910CB4DA8 /* PFTaskQueue.h in Headers */, - 89FFA572F2CF83E1771CCC8901980550 /* PFThreadsafety.h in Headers */, - BF9D0B0AC5B64450EF283AD7DBF7BECB /* PFURLConstructor.h in Headers */, - 49F3CD714650FD1C4A5B7388AADA6B34 /* PFURLSession.h in Headers */, - 3AE182AECDA6FB112732923A4334D472 /* PFURLSessionCommandRunner.h in Headers */, - 6B34BA82691D0C8A7B4F32640D876F94 /* PFURLSessionCommandRunner_Private.h in Headers */, - 363E8CE74C4DC35B9D68AAC353A116DB /* PFURLSessionDataTaskDelegate.h in Headers */, - DB644EAC2BB8ADC18B158F5E2B54ADEA /* PFURLSessionDataTaskDelegate_Private.h in Headers */, - B2D1BE493F82C5FA62ACB829C637A9FD /* PFURLSessionFileDownloadTaskDelegate.h in Headers */, - A4FE6309DFBFDAF52061F44861DF298C /* PFURLSessionJSONDataTaskDelegate.h in Headers */, - DED63556CD89F027BCB5024069D17BF9 /* PFURLSessionUploadTaskDelegate.h in Headers */, - 29281066B368FEBFC9897E5C625ABBF0 /* PFURLSession_Private.h in Headers */, - 9586E7884852EFE6A87AA1FA26AAEAFD /* PFUser.h in Headers */, - F0AE34C414FD3DF2264466C62BCBB1E4 /* PFUserAuthenticationController.h in Headers */, - 712A6B5A32B445FE62502B2513745730 /* PFUserAuthenticationDelegate.h in Headers */, - 0CA715FE5F1135697D48CEADCCDF695E /* PFUserConstants.h in Headers */, - 54F5313BCCE28B89592A59E8729474A6 /* PFUserController.h in Headers */, - 0FAB264DFDA1EACC55A0E8E5646B7528 /* PFUserFileCodingLogic.h in Headers */, - 56B354AF9311CAA6CF3E4859B477862D /* PFUserPrivate.h in Headers */, - 0DE5C9C558993B91C4234B0C04AF1E05 /* PFUserState.h in Headers */, - E0A83A172053DF72389A5B2646F8DDC7 /* PFUserState_Private.h in Headers */, - 714FFA7F7570576D0CC3AB2471C2BBF9 /* PFWeakValue.h in Headers */, - 214D9B21E9B0C005DAA26F13F39C9122 /* Parse.h in Headers */, - 3DB2858B25E1C7C00547C227306254BE /* ParseInternal.h in Headers */, - BBAFA237B5759EDF4ED29549B8B7B434 /* ParseManager.h in Headers */, - 703F8255C8F3F10319E008C37F524F3B /* ParseModule.h in Headers */, - 18FD711698AFD5B3D0EC8082974B4271 /* Parse_Private.h in Headers */, + 7A11240D567F7A3207F0F9882ED2AB75 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */, + 530AC824CCD371BAA717F8ACAB33F958 /* FBSDKAccessToken.h in Headers */, + 3E16E0BEF69F5BA97F8E9F07A617E509 /* FBSDKAccessTokenCache.h in Headers */, + B2C7E9065BD6BF8E3F3017B802865B56 /* FBSDKAccessTokenCacheV3.h in Headers */, + 85030A540670174CA31F4F4226C54C4F /* FBSDKAccessTokenCacheV3_17.h in Headers */, + BE0F6955D03D6DF536335CAC10A8CFC5 /* FBSDKAccessTokenCacheV3_21.h in Headers */, + CB7A2EB58EBA82B7CE519F8C2EEAFBC4 /* FBSDKAccessTokenCacheV4.h in Headers */, + 6F5BB8563523FEB8914557A0C379361F /* FBSDKAccessTokenCaching.h in Headers */, + CA0A64C7187BFF5B6143C3D3A7FF8D94 /* FBSDKAppEvents+Internal.h in Headers */, + 0C08BCEA5FE46370A36AEF6BEFCC41EA /* FBSDKAppEvents.h in Headers */, + A6D8B881BC31F26E99F56A4B5144F72D /* FBSDKAppEventsDeviceInfo.h in Headers */, + 216D6126C206D951C489C95FD37BD8CF /* FBSDKAppEventsState.h in Headers */, + C8E9B871537B5C88280E56A9778803A4 /* FBSDKAppEventsStateManager.h in Headers */, + AB7CAA7D0CB1D37DB84BF83644CF6E41 /* FBSDKAppEventsUtility.h in Headers */, + 4EC1B8AAA4341E02B888E2CDBED626DD /* FBSDKApplicationDelegate+Internal.h in Headers */, + 01A9C95FB174BF00024C127D94FAE9F9 /* FBSDKApplicationDelegate.h in Headers */, + 9B516F3168787E2C9732AC0C00479971 /* FBSDKAppLinkResolver.h in Headers */, + E10A2574E0EE99F47BC9CAC0AF33FC47 /* FBSDKAppLinkUtility.h in Headers */, + 81A2A1E607483054B4C595CA92987E08 /* FBSDKAudioResourceLoader.h in Headers */, + F4F96AF7AC5C83FA96E172128610B1F2 /* FBSDKBase64.h in Headers */, + 555466B7EA6454B1E1968FB7A7BD1334 /* FBSDKBoltsMeasurementEventListener.h in Headers */, + 4727F1C349747A7F96CA2EE6098BA7E6 /* FBSDKBridgeAPICrypto.h in Headers */, + 809C53B31BE1AC40886B82DFD238136D /* FBSDKBridgeAPIProtocol.h in Headers */, + 00163060B2D0C8870906DF0994834474 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */, + E7AC21B4D847D0F421132DCD478589F6 /* FBSDKBridgeAPIProtocolType.h in Headers */, + A248810839C65E5881B7B7B3F264078F /* FBSDKBridgeAPIProtocolWebV1.h in Headers */, + E0EAD57AC8EA4C3510C04CDDC9A28DE6 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */, + 90F2175480DE7324ADEEF602757134D7 /* FBSDKBridgeAPIRequest+Private.h in Headers */, + 67F789F4A32CA7A82DE43CD27AEA87BD /* FBSDKBridgeAPIRequest.h in Headers */, + C8A8F4BE07EDC15A6921CD68990C0F98 /* FBSDKBridgeAPIResponse.h in Headers */, + 33808782CCEF801D53209D523D9C7358 /* FBSDKButton+Subclass.h in Headers */, + 926F1FF1ADA93F8BE4339C7AE28BD968 /* FBSDKButton.h in Headers */, + 3C0DEBB740DFB646BB292668FF187A3C /* FBSDKCloseIcon.h in Headers */, + E03421EE59E06D90EC9F0E07B93E1C2D /* FBSDKColor.h in Headers */, + 22E435D60724A7D16B950FC453C5E34C /* FBSDKConstants.h in Headers */, + 587ED101545A953414998ABFA4479B5D /* FBSDKContainerViewController.h in Headers */, + 138917EC340B4D359138CD16C4383D1D /* FBSDKCopying.h in Headers */, + 7051CE40FD16869F0BF9CD028A658782 /* FBSDKCoreKit+Internal.h in Headers */, + 156967851249D30F7710773EC47EB1F3 /* FBSDKCoreKit.h in Headers */, + 73518A8EAF46D85112E2CB85D02BF9C0 /* FBSDKCrypto.h in Headers */, + D183B6B66F20B85A64F5B7603D0A473B /* FBSDKDialogConfiguration.h in Headers */, + CF49B64886C0C73CE0EB0549FA20E21F /* FBSDKDynamicFrameworkLoader.h in Headers */, + AE279B6C3893C1BB12A7D761A8F70EA1 /* FBSDKError.h in Headers */, + E19528B349AA57299BED8F28FFCDB92D /* FBSDKErrorConfiguration.h in Headers */, + 77CF177F2CDC9BEBEF5BE1DD296E1E2C /* FBSDKErrorRecoveryAttempter.h in Headers */, + 1B732797EE1CF10C328DFDC742E866A6 /* FBSDKErrorRecoveryConfiguration.h in Headers */, + 7F35603B737B2A4B465CAE4B481C34BB /* FBSDKGraphErrorRecoveryProcessor.h in Headers */, + 62DDEB5456833B4AD3A84F7AADBE9099 /* FBSDKGraphRequest+Internal.h in Headers */, + AB8D18ED889E13CC5F738DD1A59CC510 /* FBSDKGraphRequest.h in Headers */, + 949F1878AC4A43632EFADACFC8140683 /* FBSDKGraphRequestBody.h in Headers */, + E47D4E86203EFA7643A44E5109117967 /* FBSDKGraphRequestConnection+Internal.h in Headers */, + A5E23287231B8CED31D97C44BA2702F9 /* FBSDKGraphRequestConnection.h in Headers */, + 50570F0F317C5A916AD5BE1D82F49641 /* FBSDKGraphRequestDataAttachment.h in Headers */, + 23F22339DEDBD778AB5D1DA13BFECC4F /* FBSDKGraphRequestMetadata.h in Headers */, + 4029E4F75B527907B5ADAD8E3E0264E2 /* FBSDKGraphRequestPiggybackManager.h in Headers */, + A9821C932984F979E72D5984C1E3A87E /* FBSDKIcon.h in Headers */, + 2453E44572F93FE8CFB1E9C2B07F8142 /* FBSDKInternalUtility.h in Headers */, + 31B7827480A2AD779C80D1E428F0F758 /* FBSDKKeychainStore.h in Headers */, + 8E3F310FB34E020A985BF37D34582619 /* FBSDKKeychainStoreViaBundleID.h in Headers */, + FEAB4AF7F2C57BDEFD6081038CFD20FB /* FBSDKLogger.h in Headers */, + 392F1056919E38CEDEB5A545DA4C820B /* FBSDKLogo.h in Headers */, + 307D54623092903A6C49A7C219BA3252 /* FBSDKMacros.h in Headers */, + 61BCC6DAB9276D969FCC0F848B69DB86 /* FBSDKMaleSilhouetteIcon.h in Headers */, + D1F17C848BA03A0D38CC8D8B815B75C8 /* FBSDKMath.h in Headers */, + 2617C1651BDE360A04512FF5DFEE55B1 /* FBSDKMonotonicTime.h in Headers */, + 5F2CF6350F306F78D40161C01EEDD731 /* FBSDKMutableCopying.h in Headers */, + E35FADAE8EF72A1419545CEE70610D27 /* FBSDKPaymentObserver.h in Headers */, + 9EFC61F27D88241A96D3FB13EF831E02 /* FBSDKProfile+Internal.h in Headers */, + 6B00AF25CFB12372D5281D7B9D51E3E2 /* FBSDKProfile.h in Headers */, + 78952ACEF38C155ADF7CA3B63C38A5E6 /* FBSDKProfilePictureView.h in Headers */, + 924D2586BFCD36A807E0E047454317A8 /* FBSDKServerConfiguration+Internal.h in Headers */, + DCF16A999DCFC281A8744148B305482C /* FBSDKServerConfiguration.h in Headers */, + E30BD9620B97DF000E8F31104048D432 /* FBSDKServerConfigurationManager+Internal.h in Headers */, + 444F2DDB714D8D83F59764F223E6EE70 /* FBSDKServerConfigurationManager.h in Headers */, + 210C00EF879DEDEA7EB09EC8C91A80A2 /* FBSDKSettings+Internal.h in Headers */, + 52474B3F869DBA64CC57CC8E1031F87B /* FBSDKSettings.h in Headers */, + 24FA587A203EB1838E92394C128065EA /* FBSDKSystemAccountStoreAdapter.h in Headers */, + 3C31ED01B7466FD05173FEB6F86953BA /* FBSDKTestUsersManager.h in Headers */, + 89E9143B078C3D9D56CDA6BE3AAA16D3 /* FBSDKTimeSpentData.h in Headers */, + 7569FD90D7667E15A7B67B62E4A72E5D /* FBSDKTriStateBOOL.h in Headers */, + FDF39F9BC888D9146BC087518C89A8F6 /* FBSDKTypeUtility.h in Headers */, + 1DFA8E2E3190F5321761EE4BE95C9ADC /* FBSDKUIUtility.h in Headers */, + 72DDA136310E1878B3393479B38B83F9 /* FBSDKURLConnection.h in Headers */, + 4505527808576A44D861B0A13154F425 /* FBSDKURLOpening.h in Headers */, + 1002547EB73320964BC1B10D757EAE2D /* FBSDKUtility.h in Headers */, + D2C8A050CA49DB3967B01D9B9354FC16 /* FBSDKViewImpressionTracker.h in Headers */, + C412C0A9241FD8CB88314EB3BD8E528C /* FBSDKWebDialog.h in Headers */, + A55D4E06A15BD0D7189518E2B96DB8A3 /* FBSDKWebDialogView.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6B3C2F9572AD4D466314F78D8FC4A5D5 /* Headers */ = { + 24CC375AC6BF6375B73651BB0872C62A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 7E30399388BC2602D048AAC96B5BC7CB /* ISO8601DateFormatterValueTransformer.h in Headers */, - 3A4E79016E170FCEA906AD959BAD0F4F /* RKISO8601DateFormatter.h in Headers */, + CBC28D34E7E02B4E254099B15B674080 /* BFAppLink.h in Headers */, + 336B220F124974D444746D194367422A /* BFAppLink_Internal.h in Headers */, + 96E1FE094390E35BE4E0D715675C16B0 /* BFAppLinkNavigation.h in Headers */, + 49A306F39FCE73FFB0E1A6589D331F35 /* BFAppLinkResolving.h in Headers */, + D963CE53920E664E9CAD6F4B834B315C /* BFAppLinkReturnToRefererController.h in Headers */, + E347F996B822D8480FF7B718185C46DD /* BFAppLinkReturnToRefererView.h in Headers */, + 5AF64E5EEA043722E238A8C5EE47A63A /* BFAppLinkReturnToRefererView_Internal.h in Headers */, + 5449D946ADE982013F5C2069E0BE45F0 /* BFAppLinkTarget.h in Headers */, + 06CC5B30A43EF1C3B526DEE380D8FE8A /* BFCancellationToken.h in Headers */, + E15B9B510B4BFB5AAF2F8BFAC5EBC997 /* BFCancellationTokenRegistration.h in Headers */, + FB9237E38009CB01D2D2BC136D5924B7 /* BFCancellationTokenSource.h in Headers */, + 7171DEAFC5A2F780E670B8395EF8F07B /* BFDefines.h in Headers */, + 012374FC7BF3C42864F8A6D9790C7836 /* BFExecutor.h in Headers */, + 80511BB81FC091E526BECA78607C0FC2 /* BFMeasurementEvent.h in Headers */, + 12D4BF5F8785937DA809F9D90E6FB565 /* BFMeasurementEvent_Internal.h in Headers */, + EC5F8395D48ED1C0BE2C2D7EB7D9F4B9 /* BFTask.h in Headers */, + 6D2E47E46AED98D49CD7E1D7DCA449B3 /* BFTaskCompletionSource.h in Headers */, + 2FBCC263A4CF83AF299AAC0CEE750AD6 /* BFURL.h in Headers */, + CF6A6DAB258596DF234FDDA9F2B214CF /* BFURL_Internal.h in Headers */, + 5208CEE9E04A230A895075F81179E9C0 /* BFWebViewAppLinkResolver.h in Headers */, + 4508BEB10E935ADE1BBC8AD18BB3F581 /* Bolts.h in Headers */, + 43A7D7D1E2E0828AC2FCD3155471E59E /* BoltsVersion.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7AC25458D2D7F6FE32B1DE4F25D46767 /* Headers */ = { + 3B4A9D40B5373A9E33560665CB9E94AA /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 5CFBEC31582E7093D61B791E3D6A89CE /* FBSDKAppGroupAddDialog.h in Headers */, - AF5D4AA78614DEC968FD73B77E1DCA9F /* FBSDKAppGroupContent.h in Headers */, - 848C43C813771ECA299F1DFBFE42B192 /* FBSDKAppGroupJoinDialog.h in Headers */, - B2C6E37E2C065FC66826699D97C5D1ED /* FBSDKAppInviteContent.h in Headers */, - 00A6585F8ADCE867CC96F03DE0F8722A /* FBSDKAppInviteDialog.h in Headers */, - C6F3BD5EC9F02F543DC1AE79F35DBDD2 /* FBSDKCheckmarkIcon.h in Headers */, - DC3A6B49827A61D98003EB074A3463D9 /* FBSDKGameRequestContent.h in Headers */, - A2779E72E6F4F89BC10E9D187395B8BA /* FBSDKGameRequestDialog.h in Headers */, - C5925266C50DA857D903C5BEB587E7F0 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */, - F413AB25B2BC215465A628FEE33F4246 /* FBSDKLikeActionController.h in Headers */, - CF40CA510403A77414543BB76DFE4884 /* FBSDKLikeActionControllerCache.h in Headers */, - 7EE537C6D56046389F1E274A3202A9CB /* FBSDKLikeBoxBorderView.h in Headers */, - 6BE26C31629E37691C2026D34EF5FC1F /* FBSDKLikeBoxView.h in Headers */, - D8393532E1BCB8F5A241FBD6B5915143 /* FBSDKLikeButton+Internal.h in Headers */, - B39FA2BABE548E38CAED91EA3521722A /* FBSDKLikeButton.h in Headers */, - EED79B8DC9EFDFAC358B7D5AABBA7D95 /* FBSDKLikeButtonPopWAV.h in Headers */, - BCAAC8E1D0770BFFBC24DC2255F5110E /* FBSDKLikeControl+Internal.h in Headers */, - 9F4D529EEC0834DDEAC016EB49BB5AB2 /* FBSDKLikeControl.h in Headers */, - 1EA875D07292CF4D051DB0E0B9F008DC /* FBSDKLikeDialog.h in Headers */, - D4CE914F5ED7216451DEB5D5B9DCF76E /* FBSDKLikeObjectType.h in Headers */, - 1D67DA48760D20CA411641C9102136D2 /* FBSDKLiking.h in Headers */, - 9EB092E53EFD259C48531526018114D1 /* FBSDKMessageDialog.h in Headers */, - AD1992ABEB845EEFCEAA32C8DF7D4115 /* FBSDKMessengerIcon.h in Headers */, - 03510AEE10F8AFC7A9426E3FFBD758EE /* FBSDKSendButton.h in Headers */, - 37D6C597E2AD01C1BB8B163D369B7AB0 /* FBSDKShareAPI.h in Headers */, - 4F208E8A4607477BA09171C93F9D65F7 /* FBSDKShareButton.h in Headers */, - F8FE0C65F75E52F82F84E13D2B0A0F42 /* FBSDKShareConstants.h in Headers */, - 539B79B777A580A748F4B8A186BCC8F5 /* FBSDKShareDefines.h in Headers */, - B2E3C4EDB24F3AB1FBA90FD0BE64084D /* FBSDKShareDialog.h in Headers */, - B3172572E215E917E15B5D1F66848737 /* FBSDKShareDialogMode.h in Headers */, - 6C9D7C55CB78713CFBEFB8F6823936DE /* FBSDKShareError.h in Headers */, - C5B1AF644B631A4EFD9F5906174E5580 /* FBSDKShareKit+Internal.h in Headers */, - 9946DA29569182E4051D4F20EBCF389A /* FBSDKShareKit.h in Headers */, - 0A6BF9949B8BEF6ED33EBBB89D3733DC /* FBSDKShareLinkContent+Internal.h in Headers */, - AFE365CE206F3E6364AAC8BD50C0AACA /* FBSDKShareLinkContent.h in Headers */, - FF079D3BEB117F01203AF1170BD693F9 /* FBSDKShareOpenGraphAction.h in Headers */, - 3ED276C208E4C2C431499BD98C10D6AC /* FBSDKShareOpenGraphContent.h in Headers */, - A767E96A6CE480E5FA45CC5E4EC95039 /* FBSDKShareOpenGraphObject.h in Headers */, - D2B2D34B0D45985A59E6D8E0323DFEF3 /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */, - 85ACC60B4C7AEB569CA7A15552DECA2B /* FBSDKShareOpenGraphValueContainer.h in Headers */, - D6AE65B5B0C104A53AFEBA40EE56BF0B /* FBSDKSharePhoto.h in Headers */, - E9B4420EA45357975AB697B99F2AD065 /* FBSDKSharePhotoContent.h in Headers */, - 3B885734C80A0A787B7A3FD563A54A99 /* FBSDKShareUtility.h in Headers */, - 0BDD8DFEDF81D4BEF214770B62B2DA74 /* FBSDKShareVideo.h in Headers */, - 15978EA5F7C6F2A163C5083229330300 /* FBSDKShareVideoContent.h in Headers */, - C6643189C3F72B706900C785D63D1260 /* FBSDKSharing.h in Headers */, - 3B753F85E3CBF91C270E9DC07341B708 /* FBSDKSharingButton.h in Headers */, - 37C638B1F00DC6C36311A62BCD273269 /* FBSDKSharingContent.h in Headers */, + 4E13085CB448418E957E9EB41D88F5E2 /* BFTask+Private.h in Headers */, + 37E32240C69433B8D41BF206C15BDE91 /* Parse.h in Headers */, + 27DAF03799622546C24B79D72DFF1003 /* Parse_Private.h in Headers */, + BA61EA5F3CCE71914D2E8405C76CE42A /* ParseInternal.h in Headers */, + C72DD6BF1D64A4F33EBF2D6B77A8824C /* ParseManager.h in Headers */, + 1DD387B9558E7C1759425FCA6C52D4F5 /* ParseModule.h in Headers */, + 92450C8A67B02D5312E98B29C29FE89C /* PFACL.h in Headers */, + 5B619FB7B735B3AE6E29CD79496C39C0 /* PFACLPrivate.h in Headers */, + 3B2C344B306A3FB19169E1F4AA62E103 /* PFACLState.h in Headers */, + 6765D67511A02AD8B1C22BFD59E32233 /* PFACLState_Private.h in Headers */, + 85738B1734F9BE17BEE9520D89D2D133 /* PFAlertView.h in Headers */, + BE269944FF4E5E554223D2E055E4F1A6 /* PFAnalytics.h in Headers */, + 08A92B11564DA8300821C2F9E8851DB2 /* PFAnalytics_Private.h in Headers */, + FFEDBF912F4CF43D78BC4F4331F09059 /* PFAnalyticsController.h in Headers */, + 93508BB9AD5671C0AB3E4E890FF01C95 /* PFAnalyticsUtilities.h in Headers */, + 0799DA50D0F7AB26E77782D14A4D54AF /* PFAnonymousAuthenticationProvider.h in Headers */, + 2D6AF7788EA8D30E93BEB5F0CAC89C68 /* PFAnonymousUtils.h in Headers */, + BEFC0134FE56543E669CD06873F5BB8F /* PFAnonymousUtils_Private.h in Headers */, + 36CAD613B46C6F3F7B092EDDE2BFD87B /* PFApplication.h in Headers */, + 1570AA3EA1A480ADB0757319269174D1 /* PFAssert.h in Headers */, + CD70F46AD007D42A6E7E4C03AD654B48 /* PFAsyncTaskQueue.h in Headers */, + D270E51BC7362F767D5429DF7A368E0B /* PFBase64Encoder.h in Headers */, + 00CC1284C4EC48A67C89030A464A8E22 /* PFBaseState.h in Headers */, + B60C299FB6D6C13D99621CDBF557AB27 /* PFCachedQueryController.h in Headers */, + 8BF233CF21110FBB9A78A0E9C6FCDD49 /* PFCategoryLoader.h in Headers */, + E0614739E177590ABDB7BE575E24118C /* PFCloud.h in Headers */, + 6C052D12CBAB4B9CEC3E0B97C3B0CA00 /* PFCloudCodeController.h in Headers */, + 5482BE85008ECE92916F583C9A15378B /* PFCommandCache.h in Headers */, + A1B7647A3A40381C4430FBDBF794C699 /* PFCommandCache_Private.h in Headers */, + C8650F51B96E23879C9133719B5CE14A /* PFCommandResult.h in Headers */, + D6C7199C3F4D973B0E6ACA2C6ACF5FF3 /* PFCommandRunning.h in Headers */, + B903E58329FDF7F6E815312255B967F7 /* PFCommandRunningConstants.h in Headers */, + 8EAD9F99B96C0786E0B85D4D00F096DC /* PFCommandURLRequestConstructor.h in Headers */, + CB4B0DCDDB21473382F6B2B6666EC6DC /* PFConfig.h in Headers */, + 6AAB88174D5DAE8A23C47D20961B3DDE /* PFConfig_Private.h in Headers */, + 8FA163961DCFE696DD2BA76D1B0467AF /* PFConfigController.h in Headers */, + D052ADE6387927B8A72F291AB6D821EF /* PFConstants.h in Headers */, + C938FA47C6276A28C9F0E0C1933E3E51 /* PFCoreDataProvider.h in Headers */, + 2556A6696795A705FF3AAA00CAAF1879 /* PFCoreManager.h in Headers */, + 516780FBAE8477C063977B67B0C4F64A /* PFCurrentConfigController.h in Headers */, + 81193EC84CBFB74E91526F896C9BA770 /* PFCurrentInstallationController.h in Headers */, + 62A4E5BEAC5F31E0EB99CDCB8179311B /* PFCurrentObjectControlling.h in Headers */, + CD6F43B3511A0FBF3E573962063BD5B9 /* PFCurrentUserController.h in Headers */, + 53A73625D6FFEC0A47C83977EE7CDBCC /* PFDataProvider.h in Headers */, + 808276E084690B816C4FE2938B4E3F38 /* PFDateFormatter.h in Headers */, + D83032130352AB7F72E4AF6EE0024D11 /* PFDecoder.h in Headers */, + B9A074BC3A31106AEC6667D7684FB0F6 /* PFDefaultACLController.h in Headers */, + B3777DF9804F4FD5656FF7A89A266CC3 /* PFDevice.h in Headers */, + 61C04EFBF42F1F1275B42E1DB6103AAC /* PFEncoder.h in Headers */, + FA8E3B41E8BBAC3A94F8040161250867 /* PFErrorUtilities.h in Headers */, + 506994605B778659CB416E37C461D150 /* PFEventuallyPin.h in Headers */, + A6381412CBAD67981B189C3D03FF02B6 /* PFEventuallyQueue.h in Headers */, + FB27D03B5B38BC7F5B6E70EF758693B9 /* PFEventuallyQueue_Private.h in Headers */, + 67767415823A98D8A2C93A953551A571 /* PFFieldOperation.h in Headers */, + C09CA6A4AA52E14E894A7A328C0D8178 /* PFFieldOperationDecoder.h in Headers */, + D4315EE9D6AA73520E3C28206BB12A2E /* PFFile.h in Headers */, + 598CA7FEDEDFDBF38831C0015C044596 /* PFFile_Private.h in Headers */, + 25EFA69D90204A5BFBC506669A97C683 /* PFFileController.h in Headers */, + 6A7AA0924113739F682D6E35E4B71540 /* PFFileDataStream.h in Headers */, + 9FE10640F0AED83B16480FFAD9CEA3CD /* PFFileManager.h in Headers */, + 28EBF852662F1A1004F220F004B2FB27 /* PFFileStagingController.h in Headers */, + F21561635F6B62CFBA1A70ED0D86BE5A /* PFFileState.h in Headers */, + 0E688D49284AEE76C3B651E3CFE54C94 /* PFFileState_Private.h in Headers */, + F9DC54B44C2DA79FEE1FE863F3185504 /* PFGeoPoint.h in Headers */, + 1B11A9CD89258EFE81856DDA597C2826 /* PFGeoPointPrivate.h in Headers */, + CD5054A2ECB96B3ABB0B3794A299A822 /* PFHash.h in Headers */, + 478F099B2EDD4376B8C1183745A5B4B9 /* PFHTTPRequest.h in Headers */, + 10B055EF9DE001B011240568093FE8AB /* PFHTTPURLRequestConstructor.h in Headers */, + 0ADF250658B54EA51FC500CB76783CB5 /* PFInstallation.h in Headers */, + 66F445220BAF1CCE856A11B0B7F803A4 /* PFInstallationConstants.h in Headers */, + D66BEA50BF7F894CCCA235694CF7590B /* PFInstallationController.h in Headers */, + 3F569B5B27E0603B07C858321F23FB9B /* PFInstallationIdentifierStore.h in Headers */, + D7B46B6BD03E88E70CAECBDCED8F4744 /* PFInstallationIdentifierStore_Private.h in Headers */, + B5983C745D96CF344F4DE9DEF60C5ECF /* PFInstallationPrivate.h in Headers */, + ED6B6D31DCF0E36BB88E225710AA83DB /* PFInternalUtils.h in Headers */, + 3E41E38FF7A69B85994E73EABE7FF57F /* PFJSONSerialization.h in Headers */, + A80A4BCE5F0BE99CC5D0D79ABC6EFC84 /* PFKeychainStore.h in Headers */, + 6B8F8457EE06C9B9F37CA931F439DB4A /* PFKeyValueCache.h in Headers */, + E7A1E7F0498A21036EE756DA807E34B0 /* PFKeyValueCache_Private.h in Headers */, + D2DF8F3B252BED46B455366674FC5F8D /* PFLocationManager.h in Headers */, + 9D89845489A310CB56E647F143BEA677 /* PFLogger.h in Headers */, + BFA8895521CECBF82A30964B918DDD3A /* PFLogging.h in Headers */, + 909D78EE968D364B5DDD6C8CF7E375A2 /* PFMacros.h in Headers */, + 5FBDA19530CA26D2F5E37B02FFA15D50 /* PFMulticastDelegate.h in Headers */, + 9988B7041D7B470C3F7D1938D965F654 /* PFMultiProcessFileLock.h in Headers */, + 75928CD63004AE9767341F79B565BEAC /* PFMultiProcessFileLockController.h in Headers */, + 0EA556CC3DBCD3806D56508332A5FB59 /* PFMutableACLState.h in Headers */, + 4FA4189FA17793F898C1A79920893A7D /* PFMutableFileState.h in Headers */, + 4C3A2F763EEE360861027C7097748A42 /* PFMutableObjectState.h in Headers */, + AC0D3A56A07AF56CCCB9E6A24C68C969 /* PFMutablePushState.h in Headers */, + A9F8CCF3E9E7A1F8BB906AE75CDD76A1 /* PFMutableQueryState.h in Headers */, + F7A16A60215390EB56EFF7E65F4CF803 /* PFMutableRelationState.h in Headers */, + 04C21C0C58DD5EF39D9E5A7C9E060F3C /* PFMutableUserState.h in Headers */, + 6B6E69822F96D41917A1791C1873A1D1 /* PFNetworkActivityIndicatorManager.h in Headers */, + 43EDB848BEACB773962B589EC73AA826 /* PFNetworkCommand.h in Headers */, + 6678A92E1C40BF48F96D3FCF476C03BC /* PFNullability.h in Headers */, + F2948A142B6234A6E12DF2AD5FC390CF /* PFObject+Subclass.h in Headers */, + A75FE2B82568636BBA4E284DD4E782B8 /* PFObject.h in Headers */, + 200F941DC68314422A92DECA8D213082 /* PFObjectBatchController.h in Headers */, + 5AAE55DFA2869211ADAE99C345C0192E /* PFObjectConstants.h in Headers */, + A734638E2FD9CD1F9174C76669F0DF6B /* PFObjectController.h in Headers */, + BEBFDE40361511989AD4318B1B5E578E /* PFObjectController_Private.h in Headers */, + 188C54485E358878521C5C15A0AFE626 /* PFObjectControlling.h in Headers */, + D637A12D921733D3173960A61DB8AE92 /* PFObjectEstimatedData.h in Headers */, + C15F9AD9C17E18B25E1EF6B788309E6F /* PFObjectFileCoder.h in Headers */, + F7CC6A2F5288951581078FA3B7C9A215 /* PFObjectFileCodingLogic.h in Headers */, + FF7920785C7F9A6CBCDBFB44A8C63791 /* PFObjectFilePersistenceController.h in Headers */, + 4D4A07890A079F8AA2090CF76EF82A90 /* PFObjectLocalIdStore.h in Headers */, + 134441CFC16A905CB51B70597FF4B61B /* PFObjectPrivate.h in Headers */, + A41BB882FD7A74A2F25113D6A5644F7D /* PFObjectState.h in Headers */, + BF7290A7C875C362F762B2D6C1B991B7 /* PFObjectState_Private.h in Headers */, + 8E562933760503079FD82D5E56CCCAF5 /* PFObjectSubclassInfo.h in Headers */, + 0A1E88ACE6A4D6D41EA0634DB6A94256 /* PFObjectSubclassingController.h in Headers */, + A4A05FBBDDB993E56073550A63C1727E /* PFObjectUtilities.h in Headers */, + 1C906268C5AA213F8CFCDCC95D00C718 /* PFOfflineObjectController.h in Headers */, + EF254F401AD05830A53E37EB6ED1A20D /* PFOfflineQueryController.h in Headers */, + 1BF89E326EBB865184A47A1B76EA44B6 /* PFOfflineQueryLogic.h in Headers */, + B4E61680387E0E5146734C1EB81255C5 /* PFOfflineStore.h in Headers */, + FD2A1B5A3B8F58A419B8030AB3B0C900 /* PFOperationSet.h in Headers */, + 1F85CC0A24315E41F1DB39068E4684A8 /* PFPaymentTransactionObserver.h in Headers */, + 59B602D97CE0027EE607A6D59E7FAEC4 /* PFPaymentTransactionObserver_Private.h in Headers */, + 512D2E7F3E98E29CD6338D40FC3CBEEE /* PFPin.h in Headers */, + 6CC372C70EE09A01AEC3B0C9A077B395 /* PFPinningEventuallyQueue.h in Headers */, + 2D8BA321D46E84251856DED2E84239DD /* PFPinningObjectStore.h in Headers */, + 01A64680ACA654A0CAA6A98B76A2C015 /* PFProduct+Private.h in Headers */, + 93BDA0F9D51A5F9D4EE287129BDBB99D /* PFProduct.h in Headers */, + 379BA3F1B3C1F43A72C4C17B61215FDE /* PFProductsRequestHandler.h in Headers */, + 427DD66260DDD2F6345D7196B90E3DEE /* PFPropertyInfo.h in Headers */, + C9774E7792D3CF37A4D1C7C208FD14E2 /* PFPropertyInfo_Private.h in Headers */, + 1C2AF8394E4C8C86B7F42AF545C80281 /* PFPropertyInfo_Runtime.h in Headers */, + F3F9AFABE12CF6EF4371A4A8DC5C9D46 /* PFPurchase.h in Headers */, + 397DD286C0935623C81E4AA9AE2E4C2C /* PFPurchaseController.h in Headers */, + 9DA2B0C972429DD7AD7064E9E09475C3 /* PFPush.h in Headers */, + A00E98DC15CC981738CFBE96AEB16EB6 /* PFPushChannelsController.h in Headers */, + 08D84FA7E2537052744E64C7025A84E7 /* PFPushController.h in Headers */, + 70905E1AFD8E61FF829458D67B744EB4 /* PFPushManager.h in Headers */, + A466E7239F778C5E117BA4008114B272 /* PFPushPrivate.h in Headers */, + 12824DFDC12C14097AF56D630AD2D8FB /* PFPushState.h in Headers */, + 21C13796DE839F92D14C6CA50671E5BF /* PFPushState_Private.h in Headers */, + 9CBF1E478681F7C22EC2F5B1303DBEF8 /* PFPushUtilities.h in Headers */, + D8ADDAF044D6B1B3B763D0334FD8BDAD /* PFQuery.h in Headers */, + 1708C44508662C2D5867EB8DB869B93E /* PFQueryController.h in Headers */, + 8286DA65B1C86544369DF6D387CA87DB /* PFQueryPrivate.h in Headers */, + 18128AAED9116077EDF701E1098C9954 /* PFQueryState.h in Headers */, + 2C04A25EF87B39A7378F852D3A251514 /* PFQueryState_Private.h in Headers */, + F53BB2B5B2739CED55C0738568C22BE0 /* PFQueryUtilities.h in Headers */, + 693563EF1DB59CD00D1B0B8685D0819E /* PFReachability.h in Headers */, + ADA73C3403D0DCBA9ADC9737B71F448B /* PFRelation.h in Headers */, + 81D3161E66F074CAE137695C259391D6 /* PFRelationPrivate.h in Headers */, + 847C86711AC58480F93EE157EC762827 /* PFRelationState.h in Headers */, + 0C132DF2B2F5648112EE398656EE0962 /* PFRelationState_Private.h in Headers */, + 89131DE7914EFB6BDBAF0E0BA46E0B81 /* PFRESTAnalyticsCommand.h in Headers */, + A8FFC32B766D8160348983C902A0FBCF /* PFRESTCloudCommand.h in Headers */, + BD3CB42C142417AFADFDF458A7B580E7 /* PFRESTCommand.h in Headers */, + 05606336B17E8DE7AFBE9B0AD554763D /* PFRESTCommand_Private.h in Headers */, + 99D055FF3D067DC24E05819741E06945 /* PFRESTConfigCommand.h in Headers */, + 2132812C756FB96D0AB12B601F84A802 /* PFRESTFileCommand.h in Headers */, + AB54E487727ABF1E4455A951FFEF2C82 /* PFRESTObjectBatchCommand.h in Headers */, + 8B1097E93AE1F424DE31FFB1D83C1E99 /* PFRESTObjectCommand.h in Headers */, + 05F9EB16C3ED571BD0592AE09986458D /* PFRESTPushCommand.h in Headers */, + DAD881A7C7DDA8848FF17E18DB99295C /* PFRESTQueryCommand.h in Headers */, + 46E222D8EF5404BBB0ADEC81B1DF1874 /* PFRESTSessionCommand.h in Headers */, + A03EE16F31569592C179BC824D019DC9 /* PFRESTUserCommand.h in Headers */, + 50A19E0D54B5ABC2DF718485876675BF /* PFRole.h in Headers */, + 6080A31C682280C87E76F93D3D1C7D42 /* PFSession.h in Headers */, + 1700592C1709E23CF04D2CA3F4BEC83D /* PFSession_Private.h in Headers */, + 3FBCAD82A3A69CB7850136E6D8613AD0 /* PFSessionController.h in Headers */, + CD2E86E2BA9BE8DBAA7FE88993F1E41E /* PFSessionUtilities.h in Headers */, + 9D3D9A7D232F06FADE0D0D036D96A598 /* PFSQLiteDatabase.h in Headers */, + 77D00913E6BC46EF1D8E536BA5A36A93 /* PFSQLiteDatabase_Private.h in Headers */, + 1DBC9B7D710CE712D9F4C8E497DE1E0B /* PFSQLiteDatabaseController.h in Headers */, + 083A7602FC1ED21B8878784115D662F1 /* PFSQLiteDatabaseResult.h in Headers */, + CC0225659881638027E96EFF8EE41228 /* PFSQLiteStatement.h in Headers */, + C66C913D05F70FF30EC65B1143CDC84E /* PFSubclassing.h in Headers */, + DF5A96668809AF7FF9E04130C5D9A1D2 /* PFTaskQueue.h in Headers */, + 862FE930B3C40926DC7101D0D25931B1 /* PFThreadsafety.h in Headers */, + 8A0852C94F274C951A8FF2C0E53CC203 /* PFURLConstructor.h in Headers */, + 9D8543C5F547215DBD30C9C18E525F33 /* PFURLSession.h in Headers */, + D41A41DB158B8E95575669C635CCD82D /* PFURLSession_Private.h in Headers */, + F7077CE67CBD9DAAAE91FBED372BA0CD /* PFURLSessionCommandRunner.h in Headers */, + D16EF56685DA7EE0C6F714819F926216 /* PFURLSessionCommandRunner_Private.h in Headers */, + E228987782C3CA4BC276D56CD25AA911 /* PFURLSessionDataTaskDelegate.h in Headers */, + 2C61A57B4DA38760CFE42C7F3AFF489E /* PFURLSessionDataTaskDelegate_Private.h in Headers */, + 8E576F91BE595E20B1D97319B3E40EE0 /* PFURLSessionFileDownloadTaskDelegate.h in Headers */, + E92D54EC2B8A52C24D9C34F2A37F2996 /* PFURLSessionJSONDataTaskDelegate.h in Headers */, + 5DB44075B06EAE0B3D695B29CCF444DA /* PFURLSessionUploadTaskDelegate.h in Headers */, + 1546A097DB78CBCC3268F3EB5541DE8F /* PFUser.h in Headers */, + E544AA008F4106DB432AFF71DD5B5654 /* PFUserAuthenticationController.h in Headers */, + F060AADC6126A31918F62A205D714C32 /* PFUserAuthenticationDelegate.h in Headers */, + E998F4250A20099ECF4980ECA881988E /* PFUserConstants.h in Headers */, + A1D7AF47B734259F42226B7577014F7C /* PFUserController.h in Headers */, + 9F836AA840436BDA62D7D6325F233221 /* PFUserFileCodingLogic.h in Headers */, + FBFCD80E29C5DB1702D3FB255115D1C5 /* PFUserPrivate.h in Headers */, + 82023A97B43D2DEC58CA0092A2A63835 /* PFUserState.h in Headers */, + 206B7172BAA6262F77700E4347C0F8D5 /* PFUserState_Private.h in Headers */, + 1F3D5A5A5067181846196EEC61D25961 /* PFWeakValue.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8AAB5C9C35D21E7DE9BABB9F3AE359CA /* Headers */ = { + 3EB13134BE830329BA711C2AA10931C8 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 44EEBB71B919C890EC133515DAADA53E /* SOCKit.h in Headers */, + DA880A2094CF94108583D78E4097D554 /* FBSDKAppGroupAddDialog.h in Headers */, + 5A1CB5B72C92E43BF844377DC72DA072 /* FBSDKAppGroupContent.h in Headers */, + 1BBA57EDDB94507AC5DAA85D6489D942 /* FBSDKAppGroupJoinDialog.h in Headers */, + 54D559AFA627AFA735FB0D6D878F5D7F /* FBSDKAppInviteContent.h in Headers */, + B17336576943ADD8ABE250E808D8B72D /* FBSDKAppInviteDialog.h in Headers */, + 35599C4F9F10FC09064011AE354E20C5 /* FBSDKCheckmarkIcon.h in Headers */, + 0BB5BE4B4A8C410F2248DE8D14BB4663 /* FBSDKGameRequestContent.h in Headers */, + 74D22BA7DDF7C44219CE3E793CE0AC6F /* FBSDKGameRequestDialog.h in Headers */, + 92D14F626066984B8740E9484071B7C1 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */, + B84F69EEEA9898307D85749FD54502D0 /* FBSDKLikeActionController.h in Headers */, + C7DCD67DF808CAC96CFFB404088D2CC5 /* FBSDKLikeActionControllerCache.h in Headers */, + F48F08F807C465B2DC535CE521E66D97 /* FBSDKLikeBoxBorderView.h in Headers */, + 20CA33378056E289649C0616BF5C5E08 /* FBSDKLikeBoxView.h in Headers */, + E346D04E3F0539B358C1194F02FB8809 /* FBSDKLikeButton+Internal.h in Headers */, + 0E089188D74319CC3ED824652B776895 /* FBSDKLikeButton.h in Headers */, + 5FCA3879482A03418CCB75CE50EEA9C1 /* FBSDKLikeButtonPopWAV.h in Headers */, + EBB6F0BB04FCFC82D12723EF3E740261 /* FBSDKLikeControl+Internal.h in Headers */, + 7B38759EF062D9FF703E7D297DAB27E6 /* FBSDKLikeControl.h in Headers */, + B25E3751AB01594311494F5E9AFC5322 /* FBSDKLikeDialog.h in Headers */, + 34FE928299E6FCBB43826BDB66144FD7 /* FBSDKLikeObjectType.h in Headers */, + 097CE360D698CD7CC46F59B370318ED1 /* FBSDKLiking.h in Headers */, + 87E208C4BC2E8A5C74E1D01087F195FF /* FBSDKMessageDialog.h in Headers */, + 2DC488DF3C90086C17087C2BB72189AA /* FBSDKMessengerIcon.h in Headers */, + 0DB80F6F97A5BEB7A1839EBAF3FCA9AF /* FBSDKSendButton.h in Headers */, + A72805273E466C273A4B10C6ACB993AA /* FBSDKShareAPI.h in Headers */, + 64BD30EF98CC4A38D8BF92656D4A6AD0 /* FBSDKShareButton.h in Headers */, + B220008A1D3DD1B6628E2AC2A64A02AA /* FBSDKShareConstants.h in Headers */, + A1FCC931AC4A1A8D148E28C4572BB307 /* FBSDKShareDefines.h in Headers */, + 10B85E5BCE0729452FFC72D7BB376F59 /* FBSDKShareDialog.h in Headers */, + 44731A7D10EF496E7DED3DCA05410767 /* FBSDKShareDialogMode.h in Headers */, + A161B6BDF507ABF1322BB74A9D437D4B /* FBSDKShareError.h in Headers */, + 8AF36C0CC65E3A5D7AF4AEA8BEA5F8DD /* FBSDKShareKit+Internal.h in Headers */, + 205E1195DEF1603010BA47F3A8A39ACA /* FBSDKShareKit.h in Headers */, + 6EA031F1089FBD5D7E5DACD68EDC2F5A /* FBSDKShareLinkContent+Internal.h in Headers */, + C50BE142E604DE751E9B8AF5DD6B0363 /* FBSDKShareLinkContent.h in Headers */, + 488F77FF13E79A72AD87E8B838E827E4 /* FBSDKShareOpenGraphAction.h in Headers */, + E2D2F28DE8D25857A0143D0C99E1264C /* FBSDKShareOpenGraphContent.h in Headers */, + 3F7A18D123E044CFAC2A0D1322E727BF /* FBSDKShareOpenGraphObject.h in Headers */, + F1B80D56445F494B2F82BB577E4CB42A /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */, + 18C091723B432584B085686061A0CEE0 /* FBSDKShareOpenGraphValueContainer.h in Headers */, + 76EACBDAB632DF356DEB855DD97A09A6 /* FBSDKSharePhoto.h in Headers */, + 435602DE03BDC37F6F724BE3A943F1AB /* FBSDKSharePhotoContent.h in Headers */, + 1AD36782B0606C9AB186A075420F1EA3 /* FBSDKShareUtility.h in Headers */, + 22080662EA8952370B284F798F16D4B2 /* FBSDKShareVideo.h in Headers */, + EDB2BA3AEA3A7A4EC735BAF9804D75D4 /* FBSDKShareVideoContent.h in Headers */, + 4E5A7BE76B5EC309DAB207FAFB7FE7FC /* FBSDKSharing.h in Headers */, + E9BBD9ED8781DB4B08B9A35068B2E0D9 /* FBSDKSharingButton.h in Headers */, + F2614C38AA4BB27104AD7BAB99E2BDD3 /* FBSDKSharingContent.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 94860BC1989372135FC8127BBC4C1B0A /* Headers */ = { + 425A09876C51EDD275BEAF10092919C0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 6C9905FED4C58879E1188A49CC03EC9B /* FBSDKLoginButton.h in Headers */, - 37C5B25DF6BEA25F244D3E1FC4185DDB /* FBSDKLoginCompletion+Internal.h in Headers */, - 619EC62BA7570655A32E0FD9DE0B81DB /* FBSDKLoginCompletion.h in Headers */, - 1428029B7410F86E2E8670D8F2757842 /* FBSDKLoginConstants.h in Headers */, - 00D7B126423D78CF3936664CEA3AE990 /* FBSDKLoginError.h in Headers */, - F845D092B8C31C4DFFAD4D932CC60A53 /* FBSDKLoginKit+Internal.h in Headers */, - 2D37F6D243C16B2F3D8961995C27F706 /* FBSDKLoginKit.h in Headers */, - 2B15B8C342792ECC98874B1C00037446 /* FBSDKLoginManager+Internal.h in Headers */, - BF1C6799D780ADDDCDA7D058104CE7B7 /* FBSDKLoginManager.h in Headers */, - 69115D83A54F36A4D1BBCC573633632A /* FBSDKLoginManagerLogger.h in Headers */, - 233A654EC18BADBA2DFBD887A993CFAF /* FBSDKLoginManagerLoginResult+Internal.h in Headers */, - 3DA234B60937F780C2D85257BAC8AFEF /* FBSDKLoginManagerLoginResult.h in Headers */, - 550329AC1FE186EB5562C870B738D881 /* FBSDKLoginTooltipView.h in Headers */, - D8DD521788B7FF5F0F3DBD9D8A44BE4D /* FBSDKLoginUtility.h in Headers */, - 093B3BC924DCC60628EB3C4B02D53072 /* FBSDKTooltipView.h in Headers */, - ACB5EAF24E694839F813720C515B3BEF /* _FBSDKLoginRecoveryAttempter.h in Headers */, + 6E26161BE1EF97C776544437594061DF /* SOCKit.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - AB65C60BCF41EA7218C1E1B0FB235A25 /* Headers */ = { + 5B893C40E516471E59001046BD80B3B3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - C3508C617AD42C6C7408ADD4A07E4676 /* RKValueTransformers.h in Headers */, + 2D3A10AB5D0CAECCEEDE49132B5F4330 /* AFHTTPClient.h in Headers */, + ED4ECDAC11F885A77723CE05B89A65AA /* AFHTTPRequestOperation.h in Headers */, + 8365B59553252085916A6D4ECCE383BB /* AFImageRequestOperation.h in Headers */, + 3A4A4D139CCD0A806197BF7A723800F2 /* AFJSONRequestOperation.h in Headers */, + B71F48BE352CE58652003A3A8BE5EDC2 /* AFNetworkActivityIndicatorManager.h in Headers */, + F54F01DCDD820F6EF621E915C1BF6E0D /* AFNetworking.h in Headers */, + 8D66E14F4E946CF7C4A203E9DC27E301 /* AFPropertyListRequestOperation.h in Headers */, + 0EEABB9AABDED87C8B9F585D82062063 /* AFURLConnectionOperation.h in Headers */, + C35F6A896E802A315D7EE2BB54CBEFA5 /* AFXMLRequestOperation.h in Headers */, + 791E4A4DAC2DF15F7846EBC44911F06E /* UIImageView+AFNetworking.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - B8DA0630A0A7B0876DA944FBB8B99A30 /* Headers */ = { + 7BAB51A16596C67D638F977F2523AD29 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - E2AD35CB32DF2CFD7505333AF7A6F4EA /* FBSDKAccessToken.h in Headers */, - 81622EAF7B59D13198E4CBC0C3D1A714 /* FBSDKAccessTokenCache.h in Headers */, - 2A6AE3E4DDEEE593F6653E4A3A2E747E /* FBSDKAccessTokenCacheV3.h in Headers */, - 018166E30D25E0D13BEA3E349F34A054 /* FBSDKAccessTokenCacheV3_17.h in Headers */, - 590737A2A29757D9B56910E182CE61E0 /* FBSDKAccessTokenCacheV3_21.h in Headers */, - 33D75FFDA664AF78542007DCBC137A14 /* FBSDKAccessTokenCacheV4.h in Headers */, - 70E8E54EF340AE0D3D75A21AA31A37F0 /* FBSDKAccessTokenCaching.h in Headers */, - 135F87CE326B1BF6A73827E9F6ED971B /* FBSDKAppEvents+Internal.h in Headers */, - CD0D8051BB45134BC9996732E8943B71 /* FBSDKAppEvents.h in Headers */, - 735F99AE8538E282317F759241D24669 /* FBSDKAppEventsDeviceInfo.h in Headers */, - 06B5B0BE46804817F2BA234F2F21AB40 /* FBSDKAppEventsState.h in Headers */, - 7F1FDBA8B63D8F54C26A086D57228EAB /* FBSDKAppEventsStateManager.h in Headers */, - 0E6394122D9ED32FE89BDEFDF03C5562 /* FBSDKAppEventsUtility.h in Headers */, - 2773A2DA8DBDF9775A0F3853F3032127 /* FBSDKAppLinkResolver.h in Headers */, - B40E3C07ABC858EDE2640EC014401187 /* FBSDKAppLinkUtility.h in Headers */, - 89CAA391879710F0A18AA9983F1AAB9B /* FBSDKApplicationDelegate+Internal.h in Headers */, - 64027533F0F5F5E3D76E19A91E7C979A /* FBSDKApplicationDelegate.h in Headers */, - 367ED93EB2EB25B7F6CFC3191AD1ED66 /* FBSDKAudioResourceLoader.h in Headers */, - 74351DB8FEAB681790B1508D8A128B55 /* FBSDKBase64.h in Headers */, - F0F027149637B8C7F6A7EA60C5CF8323 /* FBSDKBoltsMeasurementEventListener.h in Headers */, - 10E0911E33686C368550FF5884C27A5B /* FBSDKBridgeAPICrypto.h in Headers */, - 0D7756638487F105933CDA9F734F7846 /* FBSDKBridgeAPIProtocol.h in Headers */, - 890348D946DE9E11805D0184309D1414 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */, - 26352EBD95DA14640C8750C915C72984 /* FBSDKBridgeAPIProtocolType.h in Headers */, - 20A9B114B37DD905332B7D23EF6F1A5E /* FBSDKBridgeAPIProtocolWebV1.h in Headers */, - 8BB62BE3D07ABABBEED035063D38A628 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */, - AB24D4CAE762B51189295267F8E37C9A /* FBSDKBridgeAPIRequest+Private.h in Headers */, - 0D4B5945A05AB5823580A86F062419DF /* FBSDKBridgeAPIRequest.h in Headers */, - 50FD61393BDAF57A7C8828614E4C04EE /* FBSDKBridgeAPIResponse.h in Headers */, - 4DEC7B43535FE6D4218B12464ADF8D2C /* FBSDKButton+Subclass.h in Headers */, - 4858697360BC346D2A20761DC49285D2 /* FBSDKButton.h in Headers */, - E0107B4D675BE030D6BB97600270B98F /* FBSDKCloseIcon.h in Headers */, - 371A5CF7297B29D0C41BEB53EBF1FED8 /* FBSDKColor.h in Headers */, - 3F658F1814712CB2CA55F67CF852048A /* FBSDKConstants.h in Headers */, - 384D12A6756ADD487295CE08615550C1 /* FBSDKContainerViewController.h in Headers */, - EB51DA32AFB1341B412DC8DB1EA76D67 /* FBSDKCopying.h in Headers */, - EBC1D03210026C1333FB24C053316AE0 /* FBSDKCoreKit+Internal.h in Headers */, - D645D7ECDB737643D71DFDC7D0EF51DC /* FBSDKCoreKit.h in Headers */, - BB1475554304D738587A02F9B98E3D56 /* FBSDKCrypto.h in Headers */, - 22BC87A9F5080A50780C32CCE2555D4A /* FBSDKDialogConfiguration.h in Headers */, - C9AAD787079AB91D540B2756E1EF5ACB /* FBSDKDynamicFrameworkLoader.h in Headers */, - 6D61146E37009E249059A2813517FFD9 /* FBSDKError.h in Headers */, - 65B86E6A3D00FEE70CBCE039AD72DE43 /* FBSDKErrorConfiguration.h in Headers */, - 40F9AB573C5837942460DA047E6127C4 /* FBSDKErrorRecoveryAttempter.h in Headers */, - C7211D3C98D5D275A3598C792B879C2A /* FBSDKErrorRecoveryConfiguration.h in Headers */, - B4275D37EB15EE59E93DD5EC6E51B9D4 /* FBSDKGraphErrorRecoveryProcessor.h in Headers */, - 01CE9AF82E8EDF5553D6BD60C15788C9 /* FBSDKGraphRequest+Internal.h in Headers */, - F1CBCA120CD2947B7C405851E7FFA7E6 /* FBSDKGraphRequest.h in Headers */, - 73207F1C397A877B01B1F68FF5D8310B /* FBSDKGraphRequestBody.h in Headers */, - B3C71031709F94AA5745619C081ECC54 /* FBSDKGraphRequestConnection+Internal.h in Headers */, - 6E74859E6E9AE4DE6D8C2137C731DA7E /* FBSDKGraphRequestConnection.h in Headers */, - D3B63387E28EC3AC74C36A14C22334D6 /* FBSDKGraphRequestDataAttachment.h in Headers */, - B557BEE7C912C3A6C487A2FA3912A871 /* FBSDKGraphRequestMetadata.h in Headers */, - 8B3E804859E5836A2204786E380B6996 /* FBSDKGraphRequestPiggybackManager.h in Headers */, - AA6CA5E4490EFC5A8BC390DF50314B88 /* FBSDKIcon.h in Headers */, - 852691CBD5FE158C07179096E9DC3590 /* FBSDKInternalUtility.h in Headers */, - 7AE4B1EFB5BFFE292E6A983252506D65 /* FBSDKKeychainStore.h in Headers */, - 44963F3C624EFA6C4A3259B1167EC1AD /* FBSDKKeychainStoreViaBundleID.h in Headers */, - E9CAA4FDAC6AE903159D04DC4BA45474 /* FBSDKLogger.h in Headers */, - 52D11AEE6C8D215ABB06624EB6260D37 /* FBSDKLogo.h in Headers */, - 0563F4EED0D395AB1CE1203D89F71AA8 /* FBSDKMacros.h in Headers */, - 3B76C2CB31039AF1A29C4F595F684F2A /* FBSDKMaleSilhouetteIcon.h in Headers */, - 744F76CA2535AE2E3E4749DD1D09AB76 /* FBSDKMath.h in Headers */, - E4C05F4451AAE50C0F479AB2E7405E44 /* FBSDKMonotonicTime.h in Headers */, - 1E4C78412D3C24B2A1993006925E1517 /* FBSDKMutableCopying.h in Headers */, - 42CFF2A1DB5CD41505B76D81DDE5C106 /* FBSDKPaymentObserver.h in Headers */, - 591C4201A7B3C6EC8D826BBB1D1D5E26 /* FBSDKProfile+Internal.h in Headers */, - 05EEE4C30056440EC8E7A2CF218EB8B0 /* FBSDKProfile.h in Headers */, - 6D8BC7410B446B1A8366CC22E0E1079B /* FBSDKProfilePictureView.h in Headers */, - D8731A50BC6E296EF8910706907303AC /* FBSDKServerConfiguration+Internal.h in Headers */, - 12C286C63ABAD25C2339EA0D0A5C5D02 /* FBSDKServerConfiguration.h in Headers */, - 67F70F417D99AB2BD60DC04C04993945 /* FBSDKServerConfigurationManager+Internal.h in Headers */, - A5EE9A504202A028AE4D6D43657078E6 /* FBSDKServerConfigurationManager.h in Headers */, - A8993E29255743428F03B37112AA10F2 /* FBSDKSettings+Internal.h in Headers */, - 5AC8E19A51D9F4860F4944BAE0DAEC96 /* FBSDKSettings.h in Headers */, - 4625C1214B5DB9343D91257A243125BC /* FBSDKSystemAccountStoreAdapter.h in Headers */, - 66F43085D42ED2365237DCA34897DADF /* FBSDKTestUsersManager.h in Headers */, - A3829D2453619B3142F601B79951DEDD /* FBSDKTimeSpentData.h in Headers */, - 594D9565A6631A0B899B1388B8E91492 /* FBSDKTriStateBOOL.h in Headers */, - 54A388B33BFD7BEDB7310245AD9CAD4F /* FBSDKTypeUtility.h in Headers */, - 5D0FE10AAE4A7D55349612B668EC5BD3 /* FBSDKUIUtility.h in Headers */, - 1E8825EF12CDA16FB2E5453FFDBCC311 /* FBSDKURLConnection.h in Headers */, - E2DC88E170ADC175F5C438C3C7CD0E87 /* FBSDKURLOpening.h in Headers */, - 656200477A7F591FCCCC7D6B74802BB9 /* FBSDKUtility.h in Headers */, - EFCAE7D0122CB2A05706BE24AA150329 /* FBSDKViewImpressionTracker.h in Headers */, - 49DAA2044F870155F9BD5B0ECE15912A /* FBSDKWebDialog.h in Headers */, - C5393F0246F98DAE25615EC3DD478518 /* FBSDKWebDialogView.h in Headers */, - 35CF2A0AFFFA1D48E9492B395E68BC95 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */, + A6A403231A96C6C21C83BAEF0BB1093F /* CAAnimation+YALTabBarViewAnimations.h in Headers */, + 2086289033B670D4FFE18F8578E911F2 /* CATransaction+TransactionWithAnimationsAndCompletion.h in Headers */, + E6E0B008759D9B3D9EE25FD2FE56E715 /* YALAnimatingTabBarConstants.h in Headers */, + B50EA8AB3CF7CF9162E24421784D4BAD /* YALFoldingTabBar.h in Headers */, + 7EE9BE9884D5807EC2C980930CB99B06 /* YALFoldingTabBarController.h in Headers */, + 565365EA7F73C65562A3FC4459E770B5 /* YALSpringAnimation.h in Headers */, + 6DFB846C756551ECD366F5AC7B189C2C /* YALTabBarInteracting.h in Headers */, + E288DE93014B057EC4C1871E17F3FA89 /* YALTabBarItem.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - D20BF03AA59C506A4D5AA6791C98E606 /* Headers */ = { + 9C2A60614E0D3502F6D764E564E1FF45 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - AAE115E50155948641D97F4C4782327B /* TKEvent.h in Headers */, - 73FD34365A5B80EC64B0B5A8E99AF46E /* TKState.h in Headers */, - AEF152DEB9D69B47F9BBF7E427E90A0E /* TKStateMachine.h in Headers */, - 99F872BB5976264AD7648F8F8252D8B5 /* TKTransition.h in Headers */, - 8526C9EF4EE664BFA507C921AFACEF23 /* TransitionKit.h in Headers */, + 091B7CD914893E81C39427757E3FB0FD /* RKValueTransformers.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - F4BD1AB2FD8D0BB7241C2F997A0D3F60 /* Headers */ = { + A82A973B2CDE8E30CC1AFF120E3041F5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 0E2C819942449D83510F76BE41B000AB /* Network.h in Headers */, - 5587584620C8F74140437B4EAFDBD15E /* ObjectMapping.h in Headers */, - 7C8620E50070963E07EAF88D8CF4A37D /* RKAttributeMapping.h in Headers */, - 27CB1B6BD10BBF2C8B1581E3C2A67020 /* RKBenchmark.h in Headers */, - 5ABFF30DE688A485DC7D42DC3D152083 /* RKConnectionTestExpectation.h in Headers */, - 2B03BE59ECF8AB8DB61087F8F4853534 /* RKDictionaryUtilities.h in Headers */, - 9E80147EBF6B2588ED1ACE1EF8C08856 /* RKDotNetDateFormatter.h in Headers */, - 2CD8A153F9E6D040F47CB488191B4675 /* RKDynamicMapping.h in Headers */, - AD42E75F3FB722607BC393109C580249 /* RKErrorMessage.h in Headers */, - 3D5474C1E69D04F528875AC3F12BC26B /* RKErrors.h in Headers */, - 162784BAD212B53DA133219EA676ECD6 /* RKHTTPRequestOperation.h in Headers */, - FC80B648D04C0C24045319E648B2A3BC /* RKHTTPUtilities.h in Headers */, - 914774948471B0AB22200646BE0F480F /* RKLog.h in Headers */, - 59F4057F341FE5BAF86C9ED8FFEF7964 /* RKLumberjackLogger.h in Headers */, - 7C68061FCD10D87488EB98414D244611 /* RKMIMETypeSerialization.h in Headers */, - 2E001B9E32766B89D068E48697778482 /* RKMIMETypes.h in Headers */, - BAAFB1BC360F105F6FDAEBF3E19F8195 /* RKMacros.h in Headers */, - 2C82478070852B2BFF637238B76D1102 /* RKManagedObjectRequestOperation.h in Headers */, - BEFA1BB782F90B9B3A3F263F7E5A4F45 /* RKMapperOperation.h in Headers */, - C2503B39C1C2D967300A807F22D1E892 /* RKMapperOperation_Private.h in Headers */, - DE20A5E7464643352B7CBC57AA18AD28 /* RKMapping.h in Headers */, - A2263CD966D196A5CE37ED110C62EE57 /* RKMappingErrors.h in Headers */, - A8D8E3DEAFABD7D676AF9512F9300E5D /* RKMappingOperation.h in Headers */, - 0FD22CC68EB137F144F30A3A882E6B78 /* RKMappingOperationDataSource.h in Headers */, - 9526FC617DC03EB2394A82C62562094E /* RKMappingResult.h in Headers */, - 4BEC5A582E14C9CAF7FF2064863B7C31 /* RKMappingTest.h in Headers */, - E159D9561B3F15E9433F18184C3572FD /* RKNSJSONSerialization.h in Headers */, - 2CD1ECA00B5641FC62A5681022C698F8 /* RKObjectManager.h in Headers */, - 3D72D32F4B1A08F0DE53710D9B65D45A /* RKObjectMapping.h in Headers */, - 4E6EF8C32E62178152875A0EF231C225 /* RKObjectMappingMatcher.h in Headers */, - 6AF334EF4BBC6A6FD3346EA40D5CA725 /* RKObjectMappingOperationDataSource.h in Headers */, - 23F64C0DEB9100774DC815861B20FF24 /* RKObjectParameterization.h in Headers */, - AC3660E82309B97BC9F36F249A31936F /* RKObjectRequestOperation.h in Headers */, - F1F9CEDCC428750CAF8C5CA8129E8F1D /* RKObjectRequestOperationSubclass.h in Headers */, - C343BA12ACC7E8A1AC5463DA206136D1 /* RKObjectUtilities.h in Headers */, - 18CF12E7C98D66CE94DBE82619460126 /* RKOperationStateMachine.h in Headers */, - AB64F843B89251A4F54B7E8811C2AD5A /* RKPaginator.h in Headers */, - 2564365FB5C724F430D231922B775D60 /* RKPathMatcher.h in Headers */, - B91017DCA447D4FE665DFBD4F534207B /* RKPathUtilities.h in Headers */, - 8B250CC7E95C824D1E75461C4C141765 /* RKPropertyInspector.h in Headers */, - 7DF59E1435A9B5FF6E0527FDB56ECD09 /* RKPropertyMapping.h in Headers */, - EF9B72EBED962989301AC194E32BF945 /* RKPropertyMappingTestExpectation.h in Headers */, - DCC043007FBCC58468B29C60D3A74EF3 /* RKRelationshipMapping.h in Headers */, - 60F38A25DFDB6310A8E294B230FE8B6B /* RKRequestDescriptor.h in Headers */, - 3F4D16C2F94D67B739CFFCB65181A7C0 /* RKResponseDescriptor.h in Headers */, - E3B5EAD8212CDE114D7D75603964B728 /* RKResponseMapperOperation.h in Headers */, - 3AE80C219B4B8E1118C4032D8A203C36 /* RKRoute.h in Headers */, - 6FC52428542CBDD5AA17FD45E3EE5AA0 /* RKRouteSet.h in Headers */, - DB85C33A007936865BE9DB308E27B35E /* RKRouter.h in Headers */, - 70B6B8575F6F54B1324C1457BEB8BD05 /* RKSerialization.h in Headers */, - BD1266880C3D947593D65CCDF3FA2F04 /* RKStringTokenizer.h in Headers */, - DDF12781498D7466B17FABB0F7B09EEA /* RKTestFactory.h in Headers */, - 16A3DD222EB47C7F95A50C5CA137F259 /* RKTestFixture.h in Headers */, - D586EF4534B4B9C1ED860C49F9FFE6C9 /* RKTestHelpers.h in Headers */, - 3242ACAE66A3D0C3A348362AE7EB96EB /* RKTestNotificationObserver.h in Headers */, - FA58F7FC3EC9BFFFCCCF855E5884803F /* RKURLEncodedSerialization.h in Headers */, - 4FBEA800074B2BCDC593781BACCE5269 /* RestKit.h in Headers */, - 6F538A8D204627652A295F762C5F1FC5 /* Support.h in Headers */, - 6274057AA5C456BF9DBCC15ED39BDF7D /* Testing.h in Headers */, - 282F90745F7864ABC8C81BFE6D755924 /* lcl_RK.h in Headers */, - EEF20312B4111CDCF4165EC2CB7B5C54 /* lcl_config_components_RK.h in Headers */, - 37DC8354ABF030C71775008A29B0E4E3 /* lcl_config_extensions_RK.h in Headers */, - 3B80CE07A2168B1C91BACCCAED54E24A /* lcl_config_logger_RK.h in Headers */, + 5E988F6DB39589E09F7216CE92E0FCD4 /* TKEvent.h in Headers */, + 0070EB3F66CDA21C66777FC4BF9452F8 /* TKState.h in Headers */, + D8085207CDC6F2A69B21CC10BF0244C7 /* TKStateMachine.h in Headers */, + 44D4ACE5DF513BE2F82FE675BF0530C9 /* TKTransition.h in Headers */, + BAD9633CD11A33F04613C1E42EC6EED9 /* TransitionKit.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - FAE0373BB2F25E550F8DE65664593BD4 /* Headers */ = { + E26EEF9536E33C04CAD5660D5465C478 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B38FB84EF934643476AD18AC3DC7795F /* BFAppLink.h in Headers */, - 6155D01C8B51697111A08412A9A15D81 /* BFAppLinkNavigation.h in Headers */, - FA40CE5BCFEBAFA19CE2916AE884FF57 /* BFAppLinkResolving.h in Headers */, - 7007DB3DFD0438A84AB08C841722E049 /* BFAppLinkReturnToRefererController.h in Headers */, - 7A5A1F4552152A40E502176B3CD96B1A /* BFAppLinkReturnToRefererView.h in Headers */, - 9F705191F53966733FBA503F27BD14ED /* BFAppLinkReturnToRefererView_Internal.h in Headers */, - F1B7580F71CE94519DF90F7301DFDC55 /* BFAppLinkTarget.h in Headers */, - 16CB7796FFD9018113359615F7C4713F /* BFAppLink_Internal.h in Headers */, - 099082A1C7FAABBFBA2B4C428FF899F5 /* BFCancellationToken.h in Headers */, - 0B981311B68BFD9DD86BC7C5598B56DF /* BFCancellationTokenRegistration.h in Headers */, - A07428954F0ECE2812C099F99EEBDCF9 /* BFCancellationTokenSource.h in Headers */, - 1D220DA77D9B24A58DE5F500242C4014 /* BFDefines.h in Headers */, - 9F8F9CAAF474967CD794E0BD4D083C24 /* BFExecutor.h in Headers */, - 718B74711D901C679047E8E33676F378 /* BFMeasurementEvent.h in Headers */, - 75089BEF052080F9C53DD85E3E067A70 /* BFMeasurementEvent_Internal.h in Headers */, - F8CCC74E3F902C66ADCB6FC49A518C3F /* BFTask.h in Headers */, - 8535B91A7A7E444A84BA5F17C7C45A0B /* BFTaskCompletionSource.h in Headers */, - 78D7B0F4E3F947DDA6A98358B2A1C0E2 /* BFURL.h in Headers */, - 664BAAE15CB37598495A1B056695A4C6 /* BFURL_Internal.h in Headers */, - 0720845388625ACACFE5E090292E8C43 /* BFWebViewAppLinkResolver.h in Headers */, - C971A3D41DB725E39B62BB285C71C602 /* Bolts.h in Headers */, - 6F322C51FD0B96990A4EE44BBA6275CA /* BoltsVersion.h in Headers */, + A9514FF859C895C0BB0BCE528FF507D3 /* ISO8601DateFormatterValueTransformer.h in Headers */, + E46B5DC4D2646D5DD81881A2D4EA57F0 /* RKISO8601DateFormatter.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F04DEE87FCBC7031A98CD60748D5481E /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 45F413D981B9ADFABBEA3675FE0017E3 /* lcl_config_components_RK.h in Headers */, + 4575AA7C533C55013E14626E0CE50C35 /* lcl_config_extensions_RK.h in Headers */, + ED089A748BCDC9F6C6872F5F7E21E412 /* lcl_config_logger_RK.h in Headers */, + A7A7934DF6531ABC1DD87345712ABAC9 /* lcl_RK.h in Headers */, + F22E744D20ECE98DB31805F305E0BECC /* Network.h in Headers */, + B09BFA78A6FA4E03872B3C6813F9CF52 /* ObjectMapping.h in Headers */, + 66866C90B76FFDB79EB2460DA948FFF6 /* RestKit.h in Headers */, + F0DC437CA168984F852D7735048BC6C0 /* RKAttributeMapping.h in Headers */, + B1ACA353E817624A71E6EC76F82A051F /* RKBenchmark.h in Headers */, + 2195051CC84BF57B982BCDD58C5ED1D3 /* RKConnectionTestExpectation.h in Headers */, + 8A6946AC59129EA88D60D328CC1123A6 /* RKDictionaryUtilities.h in Headers */, + A1B68435F82A632E4F331D60773C2869 /* RKDotNetDateFormatter.h in Headers */, + D9D8B1CC492E4406C76092EFA10047F0 /* RKDynamicMapping.h in Headers */, + 166FC271D473C88842832FCADFC20AC0 /* RKErrorMessage.h in Headers */, + ABEF7325D5A438C60A9689BE4AF23E4E /* RKErrors.h in Headers */, + BC030E43EB80D6D27AF2D44F80CD7CDE /* RKHTTPRequestOperation.h in Headers */, + 9B3982D6FA8CD29A66D47D7356C6FB67 /* RKHTTPUtilities.h in Headers */, + 02CA14777A858D78607A52D739E01BFD /* RKLog.h in Headers */, + E0078B6CE5F3FA7BA899B72695D2F70B /* RKLumberjackLogger.h in Headers */, + BD6D648A05281F2FFA2E3F281BC9019A /* RKMacros.h in Headers */, + 21463E177BB9A98F321678568399855C /* RKManagedObjectRequestOperation.h in Headers */, + 392D8D316A7A626D07173B6D67773E19 /* RKMapperOperation.h in Headers */, + E6400BCB9E4DCC98CD30D74AC0F6B56A /* RKMapperOperation_Private.h in Headers */, + 51EF9DAEFA15FFB025217BBE89F9A23C /* RKMapping.h in Headers */, + 937DFB623FBFA9980FB84CB4DCB0D495 /* RKMappingErrors.h in Headers */, + 9C61DEAAA276DF68E9CC9679C0FC3E64 /* RKMappingOperation.h in Headers */, + A7730AC6B2549789F043366A4F6C0654 /* RKMappingOperationDataSource.h in Headers */, + 7623FF50D8894BEA849B2E84F9667BBF /* RKMappingResult.h in Headers */, + 2D9EF1B077CBAAEB072C4E04FDA46BD3 /* RKMappingTest.h in Headers */, + 57B1A80BBFD88E6F9406FC50B423FB5D /* RKMIMETypes.h in Headers */, + F08F2CBC9F704A5EA0102586DAC55989 /* RKMIMETypeSerialization.h in Headers */, + 0EF19D78C0EAEF1A39F029284A518C6A /* RKNSJSONSerialization.h in Headers */, + F350CF6BAA15E73067A174A0455B3D8A /* RKObjectManager.h in Headers */, + 20F4BBA2D5179AFF7A95275C2A285DD4 /* RKObjectMapping.h in Headers */, + 2E926A8C36CAE55E20568469F19BD6DB /* RKObjectMappingMatcher.h in Headers */, + 7B2C5166FD60B8D009CD534008D48C31 /* RKObjectMappingOperationDataSource.h in Headers */, + BBD60D3DA8952B0318A965D2F4B9962D /* RKObjectParameterization.h in Headers */, + BE28D5E4C90C546FA735DE393B33CDA3 /* RKObjectRequestOperation.h in Headers */, + F3EDEEA557BF41B20EF260EEBE129831 /* RKObjectRequestOperationSubclass.h in Headers */, + 1A9C308173F24606298E5693D359015C /* RKObjectUtilities.h in Headers */, + 31A1542159DF368E8DFF632BA01E4B97 /* RKOperationStateMachine.h in Headers */, + 5393685A37690EC1097162CBFDAD8964 /* RKPaginator.h in Headers */, + EB975D51FB0B6C984EC3A970061180C8 /* RKPathMatcher.h in Headers */, + 5A1CAD4EB911A5847CF09560EE37A110 /* RKPathUtilities.h in Headers */, + B5F68ED030E3466DD38E0179122A8E45 /* RKPropertyInspector.h in Headers */, + 86BB4E1C5A69021E6E28F46D2EBF2A3D /* RKPropertyMapping.h in Headers */, + F274F7BBA53230296D041E9788011840 /* RKPropertyMappingTestExpectation.h in Headers */, + 59F190ED1EA6826CEBBA51B9A461327E /* RKRelationshipMapping.h in Headers */, + 23F9280108D276942CBACF82E34E8821 /* RKRequestDescriptor.h in Headers */, + CFA516A9B6268932E1375EE60F7A31DC /* RKResponseDescriptor.h in Headers */, + 220F121D9EBCECA17B0FEC91209B88A9 /* RKResponseMapperOperation.h in Headers */, + 890759733641D9CE6D871075C5C26820 /* RKRoute.h in Headers */, + 02AB91490EAB577085129C629FFF9775 /* RKRouter.h in Headers */, + 9FFCB2055332535163446E136EDF1E42 /* RKRouteSet.h in Headers */, + EBDBE9612ABCEF630CC6E9B282086FD9 /* RKSerialization.h in Headers */, + CEA03E2CE5F3081E3865AA30CFDB3576 /* RKStringTokenizer.h in Headers */, + 397590A70BEFB683D21C67F996FD749C /* RKTestFactory.h in Headers */, + 84418630ACDDA584CC0ACE287C54B25B /* RKTestFixture.h in Headers */, + FD47F52F2CEDDB036100F734C1259055 /* RKTestHelpers.h in Headers */, + 8F2E9F59088D572D947EE4A9FA45DC1A /* RKTestNotificationObserver.h in Headers */, + 65719AA0C36A5882E89A8D02BD83CD32 /* RKURLEncodedSerialization.h in Headers */, + 05B58B7A1E2075505350D130514006A1 /* Support.h in Headers */, + 28748DDD8E8A2AEB3502CBF69AB4BDDB /* Testing.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 07B33CB3AC7A0FB33C3E2F87B3AAA6BB /* FBSDKShareKit */ = { + 080AF914A09167DB5759A733917B840F /* ISO8601DateFormatterValueTransformer */ = { isa = PBXNativeTarget; - buildConfigurationList = E177E6414A58969A070CFA1A4938E1C6 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */; + buildConfigurationList = D698E21AD6E8699A3BDEA8BF928C6677 /* Build configuration list for PBXNativeTarget "ISO8601DateFormatterValueTransformer" */; buildPhases = ( - D4C81EA36A6BFE3288457472CA4368FB /* Sources */, - 672DA56A5E00AC88E14A8FCA7D0851AA /* Frameworks */, - 7AC25458D2D7F6FE32B1DE4F25D46767 /* Headers */, + 6831413FDAC4F2DD02AF35510D60199B /* Sources */, + 8303124DDA063FE89C9AEFC94E6AB54E /* Frameworks */, + E26EEF9536E33C04CAD5660D5465C478 /* Headers */, ); buildRules = ( ); dependencies = ( - A9D82D4BD1C13674DA7E9AE702119B04 /* PBXTargetDependency */, + E36E70253F374409C8D0E675B83B8B9A /* PBXTargetDependency */, ); - name = FBSDKShareKit; - productName = FBSDKShareKit; - productReference = CDB7AF2EC4C8BD16B16801E52002B702 /* libFBSDKShareKit.a */; + name = ISO8601DateFormatterValueTransformer; + productName = ISO8601DateFormatterValueTransformer; + productReference = 9C2BCF9C99AEDE045D2BBFA1DF8CC208 /* libISO8601DateFormatterValueTransformer.a */; productType = "com.apple.product-type.library.static"; }; - 0EC7816D6AB1C0830108FC61D968488B /* ISO8601DateFormatterValueTransformer */ = { + 0DC1ECBDD92B997AEA23F9950AA90665 /* Pods */ = { isa = PBXNativeTarget; - buildConfigurationList = D0CD18500801AD4B06991D66CCFE7ED7 /* Build configuration list for PBXNativeTarget "ISO8601DateFormatterValueTransformer" */; + buildConfigurationList = 6E61F3AE6B149150E949E22581757F27 /* Build configuration list for PBXNativeTarget "Pods" */; buildPhases = ( - E6D802C085D3329BFB6C5D9329920583 /* Sources */, - 630C69A258B987845E55E720F274F821 /* Frameworks */, - 6B3C2F9572AD4D466314F78D8FC4A5D5 /* Headers */, + AC963ADF58EEFB6DD58B1D7B88F235B2 /* Sources */, + D6260A8A745BE7433644EE05C6F9EE0A /* Frameworks */, ); buildRules = ( ); dependencies = ( - D947B19C1CDA42B26F803FECA6935D92 /* PBXTargetDependency */, + 53E1ACBEC50B09EE6B9FAF3DD1C524CA /* PBXTargetDependency */, + FA73EB3C4B3C4CCF6F4BE44B47E79A7E /* PBXTargetDependency */, + 4C637EB26D3202CB6C05595A6B8AD136 /* PBXTargetDependency */, + 588BC898457A8CE2024D7B177E940551 /* PBXTargetDependency */, + 262635609BC8D3C2B4226143E6FEC97E /* PBXTargetDependency */, + 43621BF92BB185CA3558DB05A6B6C68C /* PBXTargetDependency */, + B220F8A9EB48E9D10B8ABF5D4CBFEC84 /* PBXTargetDependency */, + 70C54CCFB7FE7F502C81A2A38F6273AA /* PBXTargetDependency */, + F5A0B5F2A7452B83268CDBAF04660413 /* PBXTargetDependency */, + 8B6EA1DF52BBA239D811EE0FACCD74DD /* PBXTargetDependency */, + 1DAA33AFB0B62CA577654225852D35F5 /* PBXTargetDependency */, + 8A82CEED3128313AAF29DFA0CFD81CE3 /* PBXTargetDependency */, ); - name = ISO8601DateFormatterValueTransformer; - productName = ISO8601DateFormatterValueTransformer; - productReference = BAD26E583A45E51D16E0FA2F67CB7CA3 /* libISO8601DateFormatterValueTransformer.a */; + name = Pods; + productName = Pods; + productReference = 2C197AC911176562F9C82890218D2927 /* libPods.a */; productType = "com.apple.product-type.library.static"; }; - 146F659281512C0B5FB603D6893AD31E /* Pods */ = { + 4E286D373D75563CE26E479A68203892 /* FBSDKLoginKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 683CE3AABFE44522F37E2A109C346787 /* Build configuration list for PBXNativeTarget "Pods" */; + buildConfigurationList = D73F005C56A801E3CEDE801CC9ECFC4A /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */; buildPhases = ( - 6D2B8A8A757FB427940FBB3F122854B2 /* Sources */, - 1762E4D7A46B35D56224AE0D4FAC1493 /* Frameworks */, + 2347071535D409729A663A058F04F2DB /* Sources */, + 6772349FF73FC6301A658A55439FAB73 /* Frameworks */, + 0DDAA8E16E00423BC6858ACC657DA26B /* Headers */, ); buildRules = ( ); dependencies = ( - E48AE3EDCEF605AF86E58F2AB34B3720 /* PBXTargetDependency */, - 20B7A46BE41F3AA6B35791B84829E235 /* PBXTargetDependency */, - 5476A9F788FDF749003DA969A09B8EDF /* PBXTargetDependency */, - B61A4D1E2DD3FF9BD98C9F70D1A5671D /* PBXTargetDependency */, - 4E333A737FBED4611FA065CD43804799 /* PBXTargetDependency */, - 58E3FDF3353FBEF4CD1513221CAF29B7 /* PBXTargetDependency */, - A3494C8ED2345467EA49874CD21B00C6 /* PBXTargetDependency */, - B5E2B6580F9E52AB6B90083B1EE38486 /* PBXTargetDependency */, - D435EE953A395D8BA469CF50BAFFB40C /* PBXTargetDependency */, - 740BD01DC926CE40B57F37BA758691F0 /* PBXTargetDependency */, - 820B3947E446D75C8D9868A33BA2F0C5 /* PBXTargetDependency */, + 9A5270C4EC04E2D2E511996DDEDD58C5 /* PBXTargetDependency */, ); - name = Pods; - productName = Pods; - productReference = 149E15962A38A8DACF6A9781F4A92F22 /* libPods.a */; + name = FBSDKLoginKit; + productName = FBSDKLoginKit; + productReference = 54343AE2C02ECF5E183700CB786869CB /* libFBSDKLoginKit.a */; productType = "com.apple.product-type.library.static"; }; - 158117D77AED03B83733E51D2D22983B /* TransitionKit */ = { + 5366B7F679CF2BA31EA583EA35CA2D90 /* Parse */ = { isa = PBXNativeTarget; - buildConfigurationList = EC5884D823C95D73657B127F496ED2E3 /* Build configuration list for PBXNativeTarget "TransitionKit" */; + buildConfigurationList = 107C08C918B3D3433F2E017FB4FDB128 /* Build configuration list for PBXNativeTarget "Parse" */; buildPhases = ( - 3F093A1EE91BCE92AFC73A3B72540240 /* Sources */, - 67CFF8AD8DC741D9FD2BA13A98B8BEF0 /* Frameworks */, - D20BF03AA59C506A4D5AA6791C98E606 /* Headers */, + 688B805CEFC0CF8022B905243A59A50E /* Sources */, + E2152948655C0A221BBD699822F629C0 /* Frameworks */, + 3B4A9D40B5373A9E33560665CB9E94AA /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + B724649E56667B1CEB768EA1EBEFD8D4 /* PBXTargetDependency */, + ); + name = Parse; + productName = Parse; + productReference = 84AD6D354E9C8F6B153ED2A34AC28FAC /* libParse.a */; + productType = "com.apple.product-type.library.static"; + }; + 61681BF0E677683490353B846C61A129 /* AFNetworking */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9B712D281AB5A267FCA1AC12339CC749 /* Build configuration list for PBXNativeTarget "AFNetworking" */; + buildPhases = ( + 78D1430387219E1CEECF694664B47298 /* Sources */, + FF1132C1F746513DE93738ED48AFAB38 /* Frameworks */, + 5B893C40E516471E59001046BD80B3B3 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = AFNetworking; + productName = AFNetworking; + productReference = 54BA28BB9CDEB01C1E6CE26A23783B3F /* libAFNetworking.a */; + productType = "com.apple.product-type.library.static"; + }; + 7D2B4C2000D9D203AFCEB1913037D8E8 /* TransitionKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9852559B1969F150F04DFA5F99B41CCE /* Build configuration list for PBXNativeTarget "TransitionKit" */; + buildPhases = ( + 833A0D9FF4B4BFBC7B95E79131ECCCE2 /* Sources */, + 4401489EF5E0F90A00960F1C61D98D00 /* Frameworks */, + A82A973B2CDE8E30CC1AFF120E3041F5 /* Headers */, ); buildRules = ( ); @@ -3786,92 +3910,90 @@ ); name = TransitionKit; productName = TransitionKit; - productReference = 4E37F47F8B8CC9C91B39061A7536E3E9 /* libTransitionKit.a */; + productReference = 0711E2059F93A9DCBD5B583B9A11D2F5 /* libTransitionKit.a */; productType = "com.apple.product-type.library.static"; }; - 38C996FDE9DF6549D8681DED0DF37B6D /* FBSDKCoreKit */ = { + 81D7FE2A0FD9258247B1232874B837DA /* FBSDKCoreKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 552C7D808ECBB92F668A2DB3200A4D1C /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */; + buildConfigurationList = 9D5140DAF776FF373AAB7D42B9292675 /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */; buildPhases = ( - 4B1F1B7307145BD524E6EF10229A36B7 /* Sources */, - 1F2E35A78CF2189DDA736BBDBEE166CB /* Frameworks */, - B8DA0630A0A7B0876DA944FBB8B99A30 /* Headers */, + 678CA587F9F0CD82C2737EC72B7D49E6 /* Sources */, + 06397B19B46BC23B4020A7016F06E806 /* Frameworks */, + 19C2B07A862CD221D4D5B9309876BAC3 /* Headers */, ); buildRules = ( ); dependencies = ( - F9718E79C8C9C0AD0A55FB991F0E078D /* PBXTargetDependency */, + F7688FE10814D6B183CC1B9B3F9F7B56 /* PBXTargetDependency */, ); name = FBSDKCoreKit; productName = FBSDKCoreKit; - productReference = 48D2279C54480FB712244BACA57F6212 /* libFBSDKCoreKit.a */; + productReference = 62B1C84DAFBA62E9315595E2052A8728 /* libFBSDKCoreKit.a */; productType = "com.apple.product-type.library.static"; }; - 4A563E15AD58F61DA31660DAC05A1819 /* FBSDKLoginKit */ = { + 9145E070690055EA2D82D264E78B0F71 /* FoldingTabBar */ = { isa = PBXNativeTarget; - buildConfigurationList = FBA64B3614CC52E9FFFD42D7968A2621 /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */; + buildConfigurationList = 3D9BA71030A144DE354FA087AE0AC89C /* Build configuration list for PBXNativeTarget "FoldingTabBar" */; buildPhases = ( - E4378E9400771DD3F49170B9CB4F27E4 /* Sources */, - EC1C8A09858403D758096FE64EC98281 /* Frameworks */, - 94860BC1989372135FC8127BBC4C1B0A /* Headers */, + 1B24A6DE00BF454C0B785A62F56A9B24 /* Sources */, + E3E27D1553990F260E018F2FD31F237C /* Frameworks */, + 7BAB51A16596C67D638F977F2523AD29 /* Headers */, ); buildRules = ( ); dependencies = ( - 1DB21EB238ED3CDBEDA6D8B7DCF90C09 /* PBXTargetDependency */, ); - name = FBSDKLoginKit; - productName = FBSDKLoginKit; - productReference = 93BF262897FA3F05F3FDF601D8CB04A7 /* libFBSDKLoginKit.a */; + name = FoldingTabBar; + productName = FoldingTabBar; + productReference = A634E305E726A2D18B89914E5F8909D3 /* libFoldingTabBar.a */; productType = "com.apple.product-type.library.static"; }; - 5A89C7736981130B2EEED27805B7A855 /* RestKit */ = { + 950F7D9F52389DCF637F3C1313255F78 /* RestKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 5F01894250044CF47766C321EA913C84 /* Build configuration list for PBXNativeTarget "RestKit" */; + buildConfigurationList = 1B423BA565331874236054257C35AAEB /* Build configuration list for PBXNativeTarget "RestKit" */; buildPhases = ( - 09D794CED70B7E37F4246A92E1B6EB12 /* Sources */, - 677EAF3CA8C9E0CED61D9E6EFCCE8FDF /* Frameworks */, - F4BD1AB2FD8D0BB7241C2F997A0D3F60 /* Headers */, + DF252A3FF4DBA662945DE8964852F37A /* Sources */, + CA3A57779CCE39F4B6C39B2E0BD75892 /* Frameworks */, + F04DEE87FCBC7031A98CD60748D5481E /* Headers */, ); buildRules = ( ); dependencies = ( - D96E033200C99E888BB967DAAFA162FD /* PBXTargetDependency */, - C1C363F76C8B8310F81BD7794F18CF24 /* PBXTargetDependency */, - FE40B3843EDCA5F39E824ADC4B3FCC8B /* PBXTargetDependency */, - 98573BF74E4FBE4F6612588F871734DE /* PBXTargetDependency */, - 74BE66951935B4884173BE8571A70445 /* PBXTargetDependency */, + C055826DE32AA06E3C4C842D66DC51E3 /* PBXTargetDependency */, + 947B8A9ACA161B88A2A9EC0FF69FA490 /* PBXTargetDependency */, + 08A8AEB8966E2E43A9431D0003593952 /* PBXTargetDependency */, + AD57BFB78693C8FE8F933AF8EB6946C1 /* PBXTargetDependency */, + 9080548E04B19332D7C26C84C5DA6A24 /* PBXTargetDependency */, ); name = RestKit; productName = RestKit; - productReference = B0F9682AC6A9C5259D9F3D4BCCD455B1 /* libRestKit.a */; + productReference = 424AE54B9E9D6A204E25E68A391EAC5C /* libRestKit.a */; productType = "com.apple.product-type.library.static"; }; - 9350FE989EB5F0E5321B9054194D84DE /* Parse */ = { + A48601FEE4437A924848DB48369BA809 /* Bolts */ = { isa = PBXNativeTarget; - buildConfigurationList = 9E125BC8CF613466796A1A3602F5CBD5 /* Build configuration list for PBXNativeTarget "Parse" */; + buildConfigurationList = CA34C800AB38CCECE78A9E7D6EB38344 /* Build configuration list for PBXNativeTarget "Bolts" */; buildPhases = ( - 3CD284D7C1CDA6C8A6D7D5D1742ECD2F /* Sources */, - DF734AC2570E46994A4B54AF3E2E31BF /* Frameworks */, - 3A1F7870E56AFBCFF878F6276B003CAA /* Headers */, + 020ACAA02DAD5E45B62595CFFE1CC884 /* Sources */, + 4B6FCC51F24F6991AAA4CC61597FD2DA /* Frameworks */, + 24CC375AC6BF6375B73651BB0872C62A /* Headers */, ); buildRules = ( ); dependencies = ( - 6C5A8B64810D2A925A10471E1DD15B6F /* PBXTargetDependency */, ); - name = Parse; - productName = Parse; - productReference = 9FE092D9D9FA0698D276FB74E5D3C4EB /* libParse.a */; + name = Bolts; + productName = Bolts; + productReference = CBA3A41947E01023E459EDEF3961C5B6 /* libBolts.a */; productType = "com.apple.product-type.library.static"; }; - A2770197345BCE1622568AECE6B8E824 /* SOCKit */ = { + BEE18208B27447ADBC42B142637E5653 /* SOCKit */ = { isa = PBXNativeTarget; - buildConfigurationList = BE9B407615E85CA189C0133A977CB6E4 /* Build configuration list for PBXNativeTarget "SOCKit" */; + buildConfigurationList = 0A0B770E5D4A040A278256FB0958784D /* Build configuration list for PBXNativeTarget "SOCKit" */; buildPhases = ( - 3B27D6A53A40DB67B708280465D0F21C /* Sources */, - 5972652DA8E3CB6256417EE7BCB541BA /* Frameworks */, - 8AAB5C9C35D21E7DE9BABB9F3AE359CA /* Headers */, + 997D1E51BED10335B3974C35733B13EA /* Sources */, + D3AB408B503F4AE1027F1851D3201F2E /* Frameworks */, + 425A09876C51EDD275BEAF10092919C0 /* Headers */, ); buildRules = ( ); @@ -3879,16 +4001,16 @@ ); name = SOCKit; productName = SOCKit; - productReference = A54BA714770BA8ED007819BC352FEB7C /* libSOCKit.a */; + productReference = CCF08CD19CC8E81472432439E658917F /* libSOCKit.a */; productType = "com.apple.product-type.library.static"; }; - BE61E7AE076C01CBC74564E4084B550D /* RKValueTransformers */ = { + C47E006176ABF4755350B88C088C3F0D /* RKValueTransformers */ = { isa = PBXNativeTarget; - buildConfigurationList = 98311CD083858EB460528FDAF09B4351 /* Build configuration list for PBXNativeTarget "RKValueTransformers" */; + buildConfigurationList = 5F071AF9EBB9B88FCF6AD4FC486502B8 /* Build configuration list for PBXNativeTarget "RKValueTransformers" */; buildPhases = ( - 746445DB8AFCFABF5687FB7B2A2301DE /* Sources */, - 324C7B0261F2E0EEC195A44011E1B1F7 /* Frameworks */, - AB65C60BCF41EA7218C1E1B0FB235A25 /* Headers */, + 7A32D54FA40FEF860E67B9E9E2AE0993 /* Sources */, + 4B6ED4A1B1BED7DD189B582654C25EB6 /* Frameworks */, + 9C2A60614E0D3502F6D764E564E1FF45 /* Headers */, ); buildRules = ( ); @@ -3896,41 +4018,25 @@ ); name = RKValueTransformers; productName = RKValueTransformers; - productReference = 41BC1E717C434D21A5472F44C601A2B7 /* libRKValueTransformers.a */; - productType = "com.apple.product-type.library.static"; - }; - CDF340FD050E9DF3676FDDB5D9FAB6D4 /* AFNetworking */ = { - isa = PBXNativeTarget; - buildConfigurationList = 6EC6BD2999BC540B28D524C6412A861E /* Build configuration list for PBXNativeTarget "AFNetworking" */; - buildPhases = ( - 06669AABE02B639D470205BF63ACC3CA /* Sources */, - 0DF38BD589367916C785FD03B2C12311 /* Frameworks */, - 3115B24E624C7DD822717FD35A51E1FF /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = AFNetworking; - productName = AFNetworking; - productReference = 9E042B3BA6CAF103736FF4527CF951FF /* libAFNetworking.a */; + productReference = CD540DA6FE69BCC3A353182F52EFE0BF /* libRKValueTransformers.a */; productType = "com.apple.product-type.library.static"; }; - F70BF3EA9E69856AC06EB0A27F8F7F5E /* Bolts */ = { + C78CAB9013653EB1A250B2DFD3BC7666 /* FBSDKShareKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 9C5223A409DF8B195DDC90B0247CD9E3 /* Build configuration list for PBXNativeTarget "Bolts" */; + buildConfigurationList = 58770B39DB702F4BF658BBDB3D144297 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */; buildPhases = ( - F6444182B3E4AA19EE41E56E02FF8AA6 /* Sources */, - 964BF1A7B9CA108D543A5A683388E78B /* Frameworks */, - FAE0373BB2F25E550F8DE65664593BD4 /* Headers */, + 6D58EE024B08316911051FCE3FA6EBDC /* Sources */, + AB6236FDABEA71A344A72311A20E9129 /* Frameworks */, + 3EB13134BE830329BA711C2AA10931C8 /* Headers */, ); buildRules = ( ); dependencies = ( + CD37FC7A32B6A7B6629457EB67E933A8 /* PBXTargetDependency */, ); - name = Bolts; - productName = Bolts; - productReference = 648066E3DB510A8F72E964D968AAA219 /* libBolts.a */; + name = FBSDKShareKit; + productName = FBSDKShareKit; + productReference = 91E3599579258E326AC94189503BED96 /* libFBSDKShareKit.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -3950,760 +4056,801 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = CCA510CFBEA2D207524CDA0D73C3B561 /* Products */; + productRefGroup = 0E07C05DC93911C736F9163ED8A5612E /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - CDF340FD050E9DF3676FDDB5D9FAB6D4 /* AFNetworking */, - F70BF3EA9E69856AC06EB0A27F8F7F5E /* Bolts */, - 38C996FDE9DF6549D8681DED0DF37B6D /* FBSDKCoreKit */, - 4A563E15AD58F61DA31660DAC05A1819 /* FBSDKLoginKit */, - 07B33CB3AC7A0FB33C3E2F87B3AAA6BB /* FBSDKShareKit */, - 0EC7816D6AB1C0830108FC61D968488B /* ISO8601DateFormatterValueTransformer */, - 9350FE989EB5F0E5321B9054194D84DE /* Parse */, - 146F659281512C0B5FB603D6893AD31E /* Pods */, - BE61E7AE076C01CBC74564E4084B550D /* RKValueTransformers */, - 5A89C7736981130B2EEED27805B7A855 /* RestKit */, - A2770197345BCE1622568AECE6B8E824 /* SOCKit */, - 158117D77AED03B83733E51D2D22983B /* TransitionKit */, + 61681BF0E677683490353B846C61A129 /* AFNetworking */, + A48601FEE4437A924848DB48369BA809 /* Bolts */, + 81D7FE2A0FD9258247B1232874B837DA /* FBSDKCoreKit */, + 4E286D373D75563CE26E479A68203892 /* FBSDKLoginKit */, + C78CAB9013653EB1A250B2DFD3BC7666 /* FBSDKShareKit */, + 9145E070690055EA2D82D264E78B0F71 /* FoldingTabBar */, + 080AF914A09167DB5759A733917B840F /* ISO8601DateFormatterValueTransformer */, + 5366B7F679CF2BA31EA583EA35CA2D90 /* Parse */, + 0DC1ECBDD92B997AEA23F9950AA90665 /* Pods */, + 950F7D9F52389DCF637F3C1313255F78 /* RestKit */, + C47E006176ABF4755350B88C088C3F0D /* RKValueTransformers */, + BEE18208B27447ADBC42B142637E5653 /* SOCKit */, + 7D2B4C2000D9D203AFCEB1913037D8E8 /* TransitionKit */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 06669AABE02B639D470205BF63ACC3CA /* Sources */ = { + 020ACAA02DAD5E45B62595CFFE1CC884 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E79AF2F84270D6E6CE16DFEDABCF3E01 /* AFHTTPClient.m in Sources */, - B70D423A46D26F002B8E7833DD868993 /* AFHTTPRequestOperation.m in Sources */, - 095B67BB026AEC6B803356F0357D61B0 /* AFImageRequestOperation.m in Sources */, - C4EE4B4647BA408211F27846E6200FE3 /* AFJSONRequestOperation.m in Sources */, - 81D2A1174D2AB7C2A85A459309F1C871 /* AFNetworkActivityIndicatorManager.m in Sources */, - 90EC0380FEBB7E27ADAD47E582C3D580 /* AFNetworking-dummy.m in Sources */, - 3FE71CD230D88EAD1B31C317695B466E /* AFPropertyListRequestOperation.m in Sources */, - 47260DBBF3AC80EBF7CB97A2F3EB322B /* AFURLConnectionOperation.m in Sources */, - 130EDBB373B792D2E24C971FD38312DD /* AFXMLRequestOperation.m in Sources */, - 60646FC6222FE516DCD6BFA761C57A54 /* UIImageView+AFNetworking.m in Sources */, + 07B38C643DE61100C2471A5E2061DB6D /* BFAppLink.m in Sources */, + 58F4A4DF57C22014622BB042607EB8EE /* BFAppLinkNavigation.m in Sources */, + B1B5542A3966742AC81F380E955AA85B /* BFAppLinkReturnToRefererController.m in Sources */, + A0F75CBE72EE4F9B74838F6F01191D06 /* BFAppLinkReturnToRefererView.m in Sources */, + 1540A63B0BF8B0C782AE91A5B67FEF38 /* BFAppLinkTarget.m in Sources */, + F50BE85096146332D4C00C17546561DA /* BFCancellationToken.m in Sources */, + FCDC22BD5A90775000A728831060EDCC /* BFCancellationTokenRegistration.m in Sources */, + 196864B89AC2C8A21D31595D9A7E05A0 /* BFCancellationTokenSource.m in Sources */, + B68EF6DB36966D13E557D2247702E8C5 /* BFExecutor.m in Sources */, + 18D7A90C450EC893C4428E23D8B47E9F /* BFMeasurementEvent.m in Sources */, + D6B9D996B48B90EB489E54CDC7A9D401 /* BFTask.m in Sources */, + 0AAD3502C3D2BB1E3E7F4377C5111691 /* BFTaskCompletionSource.m in Sources */, + 4426214315E4D8313D27EE3F16CF8C13 /* BFURL.m in Sources */, + F6C1716F0805EA68532FF09E380B40D7 /* BFWebViewAppLinkResolver.m in Sources */, + 634D85A94A89FB79C887AEB085DECA60 /* Bolts-dummy.m in Sources */, + EC7025C98AE47F5E2D9CBEA4AC041890 /* Bolts.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 09D794CED70B7E37F4246A92E1B6EB12 /* Sources */ = { + 1B24A6DE00BF454C0B785A62F56A9B24 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 69A9A1FBEE8290A0146EC75F9958ACBE /* RKAttributeMapping.m in Sources */, - 3D67F027014DB141F5CD6820ED830BA2 /* RKBenchmark.m in Sources */, - D936A464317E7189D4808D81F719F27E /* RKConnectionTestExpectation.m in Sources */, - 6176AD2985531B49564230661B07EE33 /* RKDictionaryUtilities.m in Sources */, - B0E5D758FA09DBF05C5A27C53D9EC1DF /* RKDotNetDateFormatter.m in Sources */, - 31E03BBD64B8193A5A9C6C7FF049CDE3 /* RKDynamicMapping.m in Sources */, - F83612B741AE8F04DD7367C0069652FF /* RKErrorMessage.m in Sources */, - E0EE720B924E4F4B4B269F9BFF9BEE6E /* RKErrors.m in Sources */, - 5AD718CF19228CE250EE9C5942ED28FB /* RKHTTPRequestOperation.m in Sources */, - 98B5BFC65638844B3AF600A7AC6486D2 /* RKHTTPUtilities.m in Sources */, - 3E0E763F67DFDDA31AF5DBDEAAA1207E /* RKLog.m in Sources */, - A2A8FA3EF7C62775D279A5B32E06B37E /* RKLumberjackLogger.m in Sources */, - 314069A93A029213626B93EB93610079 /* RKMIMETypeSerialization.m in Sources */, - 655A0B669A924B4AE31129D70784FB93 /* RKMIMETypes.m in Sources */, - 6630D0D212E7B8AE5D69DEBC4909AAF5 /* RKManagedObjectRequestOperation.m in Sources */, - 537DF62CE12445EB1DAD955A6C6ACC97 /* RKMapperOperation.m in Sources */, - 8B3551C3785FF40691325863A18E92FA /* RKMapping.m in Sources */, - B9825AB10AEC3548EC0716A1880B163C /* RKMappingOperation.m in Sources */, - 530C3054D34C5772D012A7791BEBD97B /* RKMappingResult.m in Sources */, - B0E57247D491FAA4B3F4B137595AD3E2 /* RKMappingTest.m in Sources */, - 1A074041FA5308016DBEE2905C5EB2A5 /* RKNSJSONSerialization.m in Sources */, - 6133962C287FD9B396459F292C4CA3E2 /* RKObjectManager.m in Sources */, - EF52CCC8678558CD77AF0992B2ED2B85 /* RKObjectMapping.m in Sources */, - 7155F162641F1D6675833714D700B403 /* RKObjectMappingMatcher.m in Sources */, - E1DE390E8E60E0B867407C70A2829CA8 /* RKObjectMappingOperationDataSource.m in Sources */, - 87668BEB2644459D0714A1D916BD3EBC /* RKObjectParameterization.m in Sources */, - AED780AA3103CE272620ABA5144C7EB9 /* RKObjectRequestOperation.m in Sources */, - B6BF8650AC031C390261566634596617 /* RKObjectUtilities.m in Sources */, - C933A60476A5EBDB9A82574B7BFDAE6D /* RKOperationStateMachine.m in Sources */, - 70531F77925054688B5A2863B2209C32 /* RKPaginator.m in Sources */, - 0249DD298C4521858041ED1ABD27B4EB /* RKPathMatcher.m in Sources */, - 3DA7C9EC3F83FAF0FB19DC783FBBF412 /* RKPathUtilities.m in Sources */, - E63519CA8D7880BB295B7EA51A8166B6 /* RKPropertyInspector.m in Sources */, - 9D7FA3822D5504762ECA314C8A00DB7C /* RKPropertyMapping.m in Sources */, - D5E50E373823D2CBA317B52A85ECDB46 /* RKPropertyMappingTestExpectation.m in Sources */, - 5DA9A28E3169B2A7B8A809BAAD3E86C8 /* RKRelationshipMapping.m in Sources */, - 859358B83393C54648A62C9CDA04C46D /* RKRequestDescriptor.m in Sources */, - 8D34E8CC2BE98E98B00C3A7BD7744D34 /* RKResponseDescriptor.m in Sources */, - DBEA4B61BB4FCA89E6DEBF42D257395F /* RKResponseMapperOperation.m in Sources */, - 59F177028361FDDB97A781AAE29E9B82 /* RKRoute.m in Sources */, - 3B7EBA7886CB6F28D8C9BF552955CE2F /* RKRouteSet.m in Sources */, - 3CDB89F3725ED26B768FE843D82396EF /* RKRouter.m in Sources */, - 512E2D4FEED38C66EC4923DBFB185CEF /* RKStringTokenizer.m in Sources */, - 655154BFD72359BFDA301C638AEB234A /* RKTestConstants.m in Sources */, - 745C38783C1053304B73F0386AFA906C /* RKTestFactory.m in Sources */, - 3B16D2CF7B1C7C98DF560E1208D45CEE /* RKTestFixture.m in Sources */, - 4C8EF69C1B7610ADC270ADF5C27A92E3 /* RKTestHelpers.m in Sources */, - 02510F8446BAA50DDF30A10F1ECA9A6D /* RKTestNotificationObserver.m in Sources */, - DAA4EAED7C7A73C4124FBB17C2E2D07F /* RKURLEncodedSerialization.m in Sources */, - FBF30755BBEC3C5FBA7D5463CCBBA04F /* RestKit-dummy.m in Sources */, - 1234595A0A3952AF80B9D7B2A706D42C /* lcl_RK.m in Sources */, + A5A2E68EC92D877AE2289A67BA94C9E7 /* CAAnimation+YALTabBarViewAnimations.m in Sources */, + 3BF789DD91B049645722960CC51287EB /* CATransaction+TransactionWithAnimationsAndCompletion.m in Sources */, + A5EF7E6ADB37EC0A0DE6145812D8998D /* FoldingTabBar-dummy.m in Sources */, + 00F8DED37CC833980AEAD7E7BD46C99E /* YALAnimatingTabBarConstants.m in Sources */, + 06084AD9120FF151ADF37E92A8CDBE83 /* YALFoldingTabBar.m in Sources */, + 343BA26395BFBF73CFC3F42871C03BB9 /* YALFoldingTabBarController.m in Sources */, + 2D8855CDA875AC8AD7AE0DFCC4250493 /* YALSpringAnimation.m in Sources */, + 88410794220AF1062177201E82FF9DBA /* YALTabBarItem.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3B27D6A53A40DB67B708280465D0F21C /* Sources */ = { + 2347071535D409729A663A058F04F2DB /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - AED7DD46159F1525CBAED2B765B6FBB2 /* SOCKit-dummy.m in Sources */, - EB73AF4C9D61D61F7B1BB0F6C573118D /* SOCKit.m in Sources */, + 50ED958AFAB156499B1D88CD2C0394B7 /* _FBSDKLoginRecoveryAttempter.m in Sources */, + E1B5FD2855EE2B8E7393E7DB0C494946 /* FBSDKLoginButton.m in Sources */, + EF38756A5556C26335245407A2D3C876 /* FBSDKLoginCompletion.m in Sources */, + 5322CA0A34DB0348C3603AFAD04A7DF5 /* FBSDKLoginConstants.m in Sources */, + 6B2DD9967AB4D947BDECC65AC4CCB1EE /* FBSDKLoginError.m in Sources */, + B1E2BB1A1186B0C02B35C1C6F5509D36 /* FBSDKLoginKit-dummy.m in Sources */, + 75F412B1EE494A57BC9AED52E8F28700 /* FBSDKLoginManager.m in Sources */, + 5EEB7C03214B977E5D8925797BCCF7B1 /* FBSDKLoginManagerLogger.m in Sources */, + 04562DEDFEB5549638FFF3A71A940FF3 /* FBSDKLoginManagerLoginResult.m in Sources */, + E538CE431B0B1742D219C8D91483FDEA /* FBSDKLoginTooltipView.m in Sources */, + F9814C410ADDB3A0797E70914157D3A0 /* FBSDKLoginUtility.m in Sources */, + AAEA1275B8DBCEDED978E0E5967D1440 /* FBSDKTooltipView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3CD284D7C1CDA6C8A6D7D5D1742ECD2F /* Sources */ = { + 678CA587F9F0CD82C2737EC72B7D49E6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - BA5CC6A82E079E00AF7E360718D52E02 /* BFTask+Private.m in Sources */, - E7555C005BF32F0FB0FB32265B0B3122 /* PFACL.m in Sources */, - 7EC8DDF3DDAE56746E934F89307D7583 /* PFACLState.m in Sources */, - 682E4A7F65C613EF767604374D7A4639 /* PFAlertView.m in Sources */, - 6F05C7C3A58618ADF1E7C6672414D524 /* PFAnalytics.m in Sources */, - 00535AC2B7EA20D7A306E029CAEC2EF4 /* PFAnalyticsController.m in Sources */, - 845C26A4234F2FFB1203C918A6F64998 /* PFAnalyticsUtilities.m in Sources */, - F07F1D8F65ACCB3ED5CB7ABF7DA5FF0B /* PFAnonymousAuthenticationProvider.m in Sources */, - 39FC8B6114BDCE13E07EB4160B959A8F /* PFAnonymousUtils.m in Sources */, - F1E0170758F896428FBE9811966F3E68 /* PFApplication.m in Sources */, - 336423D9526F48480AD694EC196FDCA7 /* PFAsyncTaskQueue.m in Sources */, - 15A6C192D5AF8B7E13C7446853ECFBAD /* PFBase64Encoder.m in Sources */, - 479E6787348037F3AB0BC2F71B64F8BA /* PFBaseState.m in Sources */, - E2B5F7FF677D9CA39663F3A0AD09874D /* PFCachedQueryController.m in Sources */, - 4F71A1E65C43A417915F279E8DE8F186 /* PFCategoryLoader.m in Sources */, - FBAD3370AEAD92CD2F7F60BB6743FEFD /* PFCloud.m in Sources */, - 182D77EB8C269AD7EDAC680AD93DB72A /* PFCloudCodeController.m in Sources */, - BC4E7DE5246BF5D9DA0FAF8D6A8C86B6 /* PFCommandCache.m in Sources */, - ED1BF10F7A865B6BCFB5E9077E589041 /* PFCommandResult.m in Sources */, - A2575C4641D3633910C02BC08860000C /* PFCommandRunning.m in Sources */, - 1AC411923BA89287B42855F90F199399 /* PFCommandRunningConstants.m in Sources */, - C81E336F8975161708D61907D4BECB52 /* PFCommandURLRequestConstructor.m in Sources */, - 4CC36A73728C42160295B6C06F5C9E1F /* PFConfig.m in Sources */, - A0EF1086FDB0062AAE995ED6B69B7EB5 /* PFConfigController.m in Sources */, - 37C5A5F5F5C16AAF3BB95832F149E67B /* PFConstants.m in Sources */, - 7F7A98BA075E1FD86DBC637F18F0D582 /* PFCoreManager.m in Sources */, - E6F6345B4E00718444ACDCFD544E27E8 /* PFCurrentConfigController.m in Sources */, - 604439374F250448FC99A0F77B4CE15F /* PFCurrentInstallationController.m in Sources */, - 92AE88B8C0C5A81DB777F447227395CD /* PFCurrentUserController.m in Sources */, - 9EB9B579CE8B4A1750DFE203B0A4F013 /* PFDateFormatter.m in Sources */, - DBDFC45578DA12608DC69FBC5E82DC30 /* PFDecoder.m in Sources */, - 62302556F6AC2F7B62A1E2C3C770FAFB /* PFDefaultACLController.m in Sources */, - 60C5A2D3BE63055B71F68F64563474D0 /* PFDevice.m in Sources */, - BDF22FED7BDF2A1AC98DA87785F4990B /* PFEncoder.m in Sources */, - 2B019E06A434B73512E960B5037F458D /* PFErrorUtilities.m in Sources */, - 8034FE492667425492892E47331F2329 /* PFEventuallyPin.m in Sources */, - B4EE6797178E18BDEFC03A41CF458AF1 /* PFEventuallyQueue.m in Sources */, - 77E441574FD39C4C4993CD33AB6A8DD1 /* PFFieldOperation.m in Sources */, - D3493E749B7820B9A78BA0BCFF41952D /* PFFieldOperationDecoder.m in Sources */, - 5B57FAB57B310D17F2EA7D85A7227C23 /* PFFile.m in Sources */, - 46F3472C258501F3EB104F0CEFA49EAB /* PFFileController.m in Sources */, - 545122765F77D3F755A9520AB3028996 /* PFFileDataStream.m in Sources */, - 65BA644D4E07A43524D0B5B38DAEFF0A /* PFFileManager.m in Sources */, - 51A265493014DED3E038034A805BC06B /* PFFileStagingController.m in Sources */, - 150E35C95B7ED2A55FADB9990FDB22E9 /* PFFileState.m in Sources */, - 807960496B84272FCA09089BD12D0F4B /* PFGeoPoint.m in Sources */, - CA1C8CD372D64F4E529A6A9C938CE543 /* PFHTTPURLRequestConstructor.m in Sources */, - EBA18B1D4DD6CDA28B9223682CAEFC44 /* PFHash.m in Sources */, - D640F592E8B89903E1F007453508AF11 /* PFInstallation.m in Sources */, - F17F8BEFC9816E31776391DA362ED4C0 /* PFInstallationConstants.m in Sources */, - A81EAB16D5FC59CD05962E2FC522F0B2 /* PFInstallationController.m in Sources */, - 38CDA7AF96061D1CC4F9999F941314A4 /* PFInstallationIdentifierStore.m in Sources */, - 30231E4630A4A71D7311DD4463E21F51 /* PFInternalUtils.m in Sources */, - 85FF1DA846D0199EBFECFCF6608778E8 /* PFJSONSerialization.m in Sources */, - F1F3FB15F726B03CD49FC6A0195CF856 /* PFKeyValueCache.m in Sources */, - 753534EF9F6BA68DDC2C0BB97ABF5595 /* PFKeychainStore.m in Sources */, - B12CD120D83F1BD943F435B1A23C520F /* PFLocationManager.m in Sources */, - 625C91C53680F09517E0DC0872450374 /* PFLogger.m in Sources */, - E46A37E2CEEDBB1B8811B7905FDEF504 /* PFMultiProcessFileLock.m in Sources */, - 1C826C6D676AF5E527AD50D044046E33 /* PFMultiProcessFileLockController.m in Sources */, - 0F3466A31A5A04E235B74EAF5ACFC3F8 /* PFMulticastDelegate.m in Sources */, - 1559BC15F9F341A9E05942AD706D0833 /* PFMutableACLState.m in Sources */, - A92DC8F6936BA258AE90BBD122B20E32 /* PFMutableFileState.m in Sources */, - A979FB0DFC6A823D22D18A7D0D37811D /* PFMutableObjectState.m in Sources */, - 582CE335157F67A7AC9C4F948C7BFBCB /* PFMutablePushState.m in Sources */, - 1A09E869300C387E669CD4D45F577CC0 /* PFMutableQueryState.m in Sources */, - D5CEC5EAAA7E87EAFEF9CC6698EB64AF /* PFMutableRelationState.m in Sources */, - C1B85ABD14ED49BA35A4D5265DEB7122 /* PFMutableUserState.m in Sources */, - F67264DD2600D04095272B1BB6F2636A /* PFNetworkActivityIndicatorManager.m in Sources */, - 45A12AF03992E1460CE8A8F60E32BFB4 /* PFObject.m in Sources */, - 6D4838695D90508DA37AFB4E8CEC4EF0 /* PFObjectBatchController.m in Sources */, - 8EEA92CFB0319DC52DB310A78F1E4B09 /* PFObjectConstants.m in Sources */, - 9F4936D9F122DA751E92AEBFC0EE497F /* PFObjectController.m in Sources */, - D4824EEE4046BDAF6F5A1C824CB8CD69 /* PFObjectEstimatedData.m in Sources */, - 4710D5B167AFEBA84243F46516E78202 /* PFObjectFileCoder.m in Sources */, - F36C75B2D364521B66BFEB93F0AC8A47 /* PFObjectFileCodingLogic.m in Sources */, - 36808C750EE4E138E79AC4A52BBBCDA1 /* PFObjectFilePersistenceController.m in Sources */, - F6932B5A372E9D096040DE73D753E2A2 /* PFObjectLocalIdStore.m in Sources */, - 96142816EC1AA2045DFF5E56EA30F07D /* PFObjectState.m in Sources */, - 52E6F3ADE5C66CCE50A4157FF354200D /* PFObjectSubclassInfo.m in Sources */, - 2F6E21DBD92BD6D98388D97F614B56AD /* PFObjectSubclassingController.m in Sources */, - 56E7498A46584C6C8109EAB46069D26D /* PFObjectUtilities.m in Sources */, - BFE2F9CF01E7E57239C3A42BFD1E94FA /* PFOfflineObjectController.m in Sources */, - FCAF408597CAB99CF982209BB5537EC3 /* PFOfflineQueryController.m in Sources */, - 2694BF27DA873BF154BE842A4638CC6D /* PFOfflineQueryLogic.m in Sources */, - D5A92CFE08A253A3C62DD4F37C8DDE86 /* PFOfflineStore.m in Sources */, - CDCDC39FD4BD597F9171D1C12AFEC71B /* PFOperationSet.m in Sources */, - D348092A1C02C27E402FD7E5CE9DA7B1 /* PFPaymentTransactionObserver.m in Sources */, - 61D3D1A601A46800EC2C2F1BC8AEE2B9 /* PFPin.m in Sources */, - 12AB053235C6B70B0EB43476DDA2452E /* PFPinningEventuallyQueue.m in Sources */, - 10AABB95160AC54105C043949E1933DC /* PFPinningObjectStore.m in Sources */, - 3C73A01215B692C7C17F8CC6C7D74BE4 /* PFProduct.m in Sources */, - 10EE3AADC2DDD3110F87A3F3A0AF7095 /* PFProductsRequestHandler.m in Sources */, - 3B2AE3090FBEF6A9A0AF03E43A77509A /* PFPropertyInfo.m in Sources */, - 1FC6D72957CEF9A24C72C4F8DFD41502 /* PFPropertyInfo_Runtime.m in Sources */, - 87C94373458C4511D89CF78EA0CF5B50 /* PFPurchase.m in Sources */, - 93D454B41C475DD7053A9F84BC1CB745 /* PFPurchaseController.m in Sources */, - 2E353986482700CBC86E955C4DDCFA0E /* PFPush.m in Sources */, - D77E4511F8389515B0EEC62D96418311 /* PFPushChannelsController.m in Sources */, - 266D1F445295A861003F06F357CAB18B /* PFPushController.m in Sources */, - F9FB9AC0BC858C6F6E2D684C255272FB /* PFPushManager.m in Sources */, - 60A6E403AFC9A0BA34A1924ED46E7661 /* PFPushState.m in Sources */, - 9F0967492995CB98973A21AA30AFFC7F /* PFPushUtilities.m in Sources */, - A4E81B9C9078BC0F5D1113D16C8D1F42 /* PFQuery.m in Sources */, - 8533CBAFEDFAD5FBC4ADDEE1BB82F1E2 /* PFQueryController.m in Sources */, - 8A5D5875FC065737EB8E0B6C6E340C90 /* PFQueryState.m in Sources */, - 84CA51BF867492192A541AD60AB61E40 /* PFQueryUtilities.m in Sources */, - 1BF120A6893C7F1A47A8B6545D5BDF1A /* PFRESTAnalyticsCommand.m in Sources */, - CC991729BDA464C7B9795D7AAC0A8F49 /* PFRESTCloudCommand.m in Sources */, - 39D96839924E83EA80B140F589FFCD47 /* PFRESTCommand.m in Sources */, - 6E3BD44E7ACAEC339555B558F5E9E6F2 /* PFRESTConfigCommand.m in Sources */, - E62754EFD8CE2472A35DABD367808319 /* PFRESTFileCommand.m in Sources */, - 9290D750E87E3578B9115CFB7E07A1EC /* PFRESTObjectBatchCommand.m in Sources */, - 71361F3DBB8A7FAD8040363913431A70 /* PFRESTObjectCommand.m in Sources */, - B7D7114D6E9CBC710116992C71349DB2 /* PFRESTPushCommand.m in Sources */, - 479B013952E62955F632E5D881392901 /* PFRESTQueryCommand.m in Sources */, - A7C100D8A127E28B765E732D8FECE0CF /* PFRESTSessionCommand.m in Sources */, - D3F62AE3F95B41661AF77F4CB967EC60 /* PFRESTUserCommand.m in Sources */, - AE78806AE38207F244401AB17528DD86 /* PFReachability.m in Sources */, - 5D00DCC382EA0FE45A4A915033BBD326 /* PFRelation.m in Sources */, - E5E59305DB00887CA8ED80A221284F32 /* PFRelationState.m in Sources */, - 0417C2D8751D5D954ABBF8750A4DBA41 /* PFRole.m in Sources */, - A3F8A0B84AE7493B8726F577B6E98134 /* PFSQLiteDatabase.m in Sources */, - C329A2C3C249A90EDB60FC6A339EF9E7 /* PFSQLiteDatabaseController.m in Sources */, - D18B21176DA8F8A2169AA06636F7D2FF /* PFSQLiteDatabaseResult.m in Sources */, - 1CCC648B56B68EAD6BA5F7616615C0A3 /* PFSQLiteStatement.m in Sources */, - 02D6509EB39ED2BFBF6292D674D0C993 /* PFSession.m in Sources */, - 49DFEEF3A4265D9B972B75025BF1EAB4 /* PFSessionController.m in Sources */, - 5A7ED655237DCFEE5E211AAED71DD267 /* PFSessionUtilities.m in Sources */, - 55D4453F4098ED3D750DFADEC86A8A3A /* PFTaskQueue.m in Sources */, - BB36C49D67D82E942DB0A83D4DFEE962 /* PFThreadsafety.m in Sources */, - C5172C7357A4F357EDE4944A55EB4799 /* PFURLConstructor.m in Sources */, - 612C5CF45F7C8EC9139258A6F1B23DE6 /* PFURLSession.m in Sources */, - 4D3AE09991081CE12C807E441C9D69E2 /* PFURLSessionCommandRunner.m in Sources */, - AC568C3C40A675F03EAD39239E53BABC /* PFURLSessionDataTaskDelegate.m in Sources */, - 44711F7187AE62533F10CC3591F92646 /* PFURLSessionFileDownloadTaskDelegate.m in Sources */, - A9701262143DCEE268B962B9BFE490E5 /* PFURLSessionJSONDataTaskDelegate.m in Sources */, - 3A7EAC81C4FB2DAE1ECA0946918B859C /* PFURLSessionUploadTaskDelegate.m in Sources */, - 94CE1B567D82681A537F32DF3DC5E515 /* PFUser.m in Sources */, - B0804AA5BB8D7B57D52A32F72AB5ECBB /* PFUserAuthenticationController.m in Sources */, - 8C80FAB2A1E33AB58F5A17B43E7E4610 /* PFUserConstants.m in Sources */, - F062F607CD6999EC431C927F2213FFCB /* PFUserController.m in Sources */, - FA4C7EB7A14FB726E93A69F1A7810705 /* PFUserFileCodingLogic.m in Sources */, - DE7CCCF622BD5C3BD1AE6AE50C35F297 /* PFUserState.m in Sources */, - 773EF0868D6F02AD1A64B608F9F534B4 /* PFWeakValue.m in Sources */, - F0F01EFCBE05FF221F2083EDE6C2073F /* Parse-dummy.m in Sources */, - 7F50BBCBF48D7D538ABB2F8B5C1BD9EA /* Parse.m in Sources */, - 6BB51C3B2AEE77DE18DCF03B3176F68A /* ParseManager.m in Sources */, - 07B0FBE4D0E350E22E5F76033341F2AE /* ParseModule.m in Sources */, + BB1151A40AE6E5AA064A5AAC684EEF46 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */, + D5EE317B7D0E35A376DF8328CEA3252B /* FBSDKAccessToken.m in Sources */, + 33E51CF359A60B9BF66BE9C279AB3E43 /* FBSDKAccessTokenCache.m in Sources */, + 9B7B596E21B20063D8870D27F93990BF /* FBSDKAccessTokenCacheV3.m in Sources */, + D4163483905F3CE49898DD8AAC0E0910 /* FBSDKAccessTokenCacheV3_17.m in Sources */, + 4BC610C052636A802256616F808FD2AE /* FBSDKAccessTokenCacheV3_21.m in Sources */, + E159EF1028A9794B189D47DD79C6A0CC /* FBSDKAccessTokenCacheV4.m in Sources */, + 74B1B04C2705C12FDA25D308C6F8F669 /* FBSDKAppEvents.m in Sources */, + 3B88684885F6A92894F9B1C6DF2CB127 /* FBSDKAppEventsDeviceInfo.m in Sources */, + FF6C07931C151FAE59F3FB55F032AF23 /* FBSDKAppEventsState.m in Sources */, + A9D01434F1CFFFF1277E3429A43FA1C0 /* FBSDKAppEventsStateManager.m in Sources */, + 2A2484F1773729BB256973910B7340DB /* FBSDKAppEventsUtility.m in Sources */, + 1D840EA09132B2B34413FA16BD0E1AA5 /* FBSDKApplicationDelegate.m in Sources */, + 7CE53AEEEB82A1729F0A343B85F1FA7E /* FBSDKAppLinkResolver.m in Sources */, + BC852E5C003C0E1C337D9C642F826513 /* FBSDKAppLinkUtility.m in Sources */, + BFAAE2E16A1F2007BD7CDF1DB8D2CDAD /* FBSDKAudioResourceLoader.m in Sources */, + 25C893D3F81918CA2748927B5F02A595 /* FBSDKBase64.m in Sources */, + 8D9E418F4BF4FF9ABF3F4E5932589C3D /* FBSDKBoltsMeasurementEventListener.m in Sources */, + 77B5397CB9EB225E9C0BB7318B12E949 /* FBSDKBridgeAPICrypto.m in Sources */, + 86444AC2A924F63C45BEC54A0DDB7E8E /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */, + C0C7A1E73D584A4F93A286FA1753D5B1 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */, + 2E87F7494BC2023ED83CCB2C93E67B69 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */, + 1345483A67FB02C778D2D3639930AED7 /* FBSDKBridgeAPIRequest.m in Sources */, + E81433D0931C25789180EA53A62C940E /* FBSDKBridgeAPIResponse.m in Sources */, + 18CF81105FB6E0685A26F83F128F4E47 /* FBSDKButton.m in Sources */, + 6C6B44FB16E5ABD292E2D77D89DDFF32 /* FBSDKCloseIcon.m in Sources */, + 8392255CCB63818562D4F58555DDDB08 /* FBSDKColor.m in Sources */, + E497F7EAC903A7C28D8CC1FD0D90CCDF /* FBSDKConstants.m in Sources */, + 905D0A5FE23B08D47AA9AB3F584B626D /* FBSDKContainerViewController.m in Sources */, + A4AA61EF4E7E175383F829835B3690B6 /* FBSDKCoreKit-dummy.m in Sources */, + 9E1DFD298D2638A443CF2EA5B47BFC51 /* FBSDKCrypto.m in Sources */, + C95B6FEA0DB3899E1F52C07D40DD4DA0 /* FBSDKDialogConfiguration.m in Sources */, + 2A9CDB714501BF7551C376135E06CB77 /* FBSDKDynamicFrameworkLoader.m in Sources */, + 9D1E20F07E1C09F60E2F35F6119A0F42 /* FBSDKError.m in Sources */, + 2F4C116B777496BAB15E7D6442D221BF /* FBSDKErrorConfiguration.m in Sources */, + D466AEB0B97EDC9663AFFD5F94C04630 /* FBSDKErrorRecoveryAttempter.m in Sources */, + 3B34B9CF9A34E235FD457006303C757D /* FBSDKErrorRecoveryConfiguration.m in Sources */, + 8CDAFE25429AD7F8885827F293890076 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */, + 41CCAB61BAA581E58CB30F56F9F372F4 /* FBSDKGraphRequest.m in Sources */, + 1F2BB357DDF0A1CE916761ED5DBB98D2 /* FBSDKGraphRequestBody.m in Sources */, + 9F3D3656F5864DED6AF668D1AB68975E /* FBSDKGraphRequestConnection.m in Sources */, + 361A366D11CECA15C3B45FC3ACEDA050 /* FBSDKGraphRequestDataAttachment.m in Sources */, + 591FE63D036F4A539784293BCAD97493 /* FBSDKGraphRequestMetadata.m in Sources */, + E6D6A687F8FD1088F5EBB283308B0DC2 /* FBSDKGraphRequestPiggybackManager.m in Sources */, + A661008071892B0148336A0636FC59A1 /* FBSDKIcon.m in Sources */, + A18206D679C80B4AFF6654B5677DBFDB /* FBSDKInternalUtility.m in Sources */, + 41DDB4BD2A89F44F733C82B65BE76ACA /* FBSDKKeychainStore.m in Sources */, + D3CBA0C9A2F20A2AE8D9E8FA5F2326DA /* FBSDKKeychainStoreViaBundleID.m in Sources */, + 774E19492156820F5CC848D34D9AA4A6 /* FBSDKLogger.m in Sources */, + 25435509864D8830160361E72AA5E31F /* FBSDKLogo.m in Sources */, + 83C5AD87D4B7BF94A4B000FC4C254798 /* FBSDKMaleSilhouetteIcon.m in Sources */, + 97996933B25E24DAF9D18F8E188B03CA /* FBSDKMath.m in Sources */, + FA27E23894DFC2F77A0EA14C2D1A3DD4 /* FBSDKMonotonicTime.m in Sources */, + E97B61F439BAE5B0BC4AE0382AF6E4B3 /* FBSDKPaymentObserver.m in Sources */, + EE76A64B08255C079A379BC77864B85F /* FBSDKProfile.m in Sources */, + DA96A28C136407B16A3F0C70656042AF /* FBSDKProfilePictureView.m in Sources */, + 42F787E07A69C27C09E049303C8E8530 /* FBSDKServerConfiguration.m in Sources */, + E461DC7FBE41300801EE6D160AE29860 /* FBSDKServerConfigurationManager.m in Sources */, + 82360B32AC1B887E85DC592D62CB046F /* FBSDKSettings.m in Sources */, + D97FDB91BBA6D010CA658A611FC4A9A1 /* FBSDKSystemAccountStoreAdapter.m in Sources */, + 264457704BDD888C92CAAEBE20E709FC /* FBSDKTestUsersManager.m in Sources */, + 1D66DABAD4D2C36AAF8062BE3D55C7DB /* FBSDKTimeSpentData.m in Sources */, + EA3208DE2E2A3C5B240A0C832A77DDCF /* FBSDKTriStateBOOL.m in Sources */, + 5E1AB8EC72407D7A56EE8074AC99F4AC /* FBSDKTypeUtility.m in Sources */, + DDAB1F17EC68C8B719BA8C80FB5DC317 /* FBSDKURLConnection.m in Sources */, + 69F828062553D0A5623207630EB9FB21 /* FBSDKUtility.m in Sources */, + 9AB561BA236CB930E21B38DE886155A6 /* FBSDKViewImpressionTracker.m in Sources */, + 578485DD86226126B8E08842D826D2DC /* FBSDKWebDialog.m in Sources */, + 899C1F6FEAF906667F0E67D51EDA44FD /* FBSDKWebDialogView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3F093A1EE91BCE92AFC73A3B72540240 /* Sources */ = { + 6831413FDAC4F2DD02AF35510D60199B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4443DA164C04807EF22B9E2FE3A40CEE /* TKEvent.m in Sources */, - FD2144C4BC84FA87FB99AF5DF4A659D4 /* TKState.m in Sources */, - 0722E90FFB0E0659D82D8E560CA2D2F1 /* TKStateMachine.m in Sources */, - EABAE5228ACD4A5BE6F30A53F80B9C1E /* TKTransition.m in Sources */, - B8291EBC0CA538454602E54BDA92A1B7 /* TransitionKit-dummy.m in Sources */, + 7491B632AA9E26DA9BC69374DE8BF0FA /* ISO8601DateFormatterValueTransformer-dummy.m in Sources */, + 9CF9ABEBAA86E37078F793BAF2C4F18B /* ISO8601DateFormatterValueTransformer.m in Sources */, + CF61365D13FDC0E6A145C012AB9B98AE /* RKISO8601DateFormatter.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4B1F1B7307145BD524E6EF10229A36B7 /* Sources */ = { + 688B805CEFC0CF8022B905243A59A50E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3B3B3B7EADC2C13FBE5A51A8BD80AAD1 /* FBSDKAccessToken.m in Sources */, - 8D805E15087E4663C5274FC437B3D934 /* FBSDKAccessTokenCache.m in Sources */, - 55F91C3F499DE45EA5B5AB3E27DEE170 /* FBSDKAccessTokenCacheV3.m in Sources */, - 9B9FB5405327F50538A416EA24675972 /* FBSDKAccessTokenCacheV3_17.m in Sources */, - 28CFDEF753D0D6972BAE795E1CF43C2C /* FBSDKAccessTokenCacheV3_21.m in Sources */, - 815C939A552E956EFA94CD39E362CB79 /* FBSDKAccessTokenCacheV4.m in Sources */, - ECB49CF77D90D2E003EEDB483338FE72 /* FBSDKAppEvents.m in Sources */, - 18274740107DE9B259B065F47C67FEA7 /* FBSDKAppEventsDeviceInfo.m in Sources */, - 3D366280CD3300E954FB9956F50437AD /* FBSDKAppEventsState.m in Sources */, - BB222C1527603C41557CA526BDCADD00 /* FBSDKAppEventsStateManager.m in Sources */, - 8B4A50CAB930AB9204EA6685CD51B1FB /* FBSDKAppEventsUtility.m in Sources */, - 4F9695BA0230FA6050195FF6147FDAF2 /* FBSDKAppLinkResolver.m in Sources */, - B9C0CE43FCAFA07D17732462A67DF31E /* FBSDKAppLinkUtility.m in Sources */, - 3EA664BC0A9CB70A6B95DF8A0AEDA68A /* FBSDKApplicationDelegate.m in Sources */, - B19A97DC943FB4E19F93DDBA191CB207 /* FBSDKAudioResourceLoader.m in Sources */, - 2AB6F30B33BF99DB942666A62EA67837 /* FBSDKBase64.m in Sources */, - DD92EF07C28DE99B4E35DCB69981FFD0 /* FBSDKBoltsMeasurementEventListener.m in Sources */, - 8DA8A753958D9E0D7C75532C0F108B6B /* FBSDKBridgeAPICrypto.m in Sources */, - 6D4887AE8E844C608EED1EC8656610E5 /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */, - 0FD5249BE2888A4A4402696105ED8527 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */, - B0988D5E960A95FFD910D24D11B59AB1 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */, - 9F564465F5C2681769FF253EC488E005 /* FBSDKBridgeAPIRequest.m in Sources */, - BB0C27D3702176E45994721057D7E9D2 /* FBSDKBridgeAPIResponse.m in Sources */, - 766272FA49F9F79139FBC5FDBC39007E /* FBSDKButton.m in Sources */, - D3D9D375FCD71243C619C6EF5026A26F /* FBSDKCloseIcon.m in Sources */, - CDF1776F197A349F242D0418BA069855 /* FBSDKColor.m in Sources */, - A0CB7D3DED639DB995CBBC511D37BF63 /* FBSDKConstants.m in Sources */, - A8309002BE3C8CB4B12C239A5946538C /* FBSDKContainerViewController.m in Sources */, - 23F002C90710E0EC3D183E8683FE8765 /* FBSDKCoreKit-dummy.m in Sources */, - FAA258E646C66811927302E7B2CC9809 /* FBSDKCrypto.m in Sources */, - F17179B7BA2DA6DADD5AA44942DDA6E9 /* FBSDKDialogConfiguration.m in Sources */, - EC1BBA6BC932AE411B6EC1C444056979 /* FBSDKDynamicFrameworkLoader.m in Sources */, - F788D05B1BCA23AD7E90E458BEA3FF05 /* FBSDKError.m in Sources */, - DF9C8DFC91AE8F06A56D1F42B67A6F4E /* FBSDKErrorConfiguration.m in Sources */, - 5726C95C5F7CC6A9F5A4315F05A7705C /* FBSDKErrorRecoveryAttempter.m in Sources */, - AF0AB1770B1B73163384947DA948E4C5 /* FBSDKErrorRecoveryConfiguration.m in Sources */, - 3118E1B0367B386FAADF624C65F9668D /* FBSDKGraphErrorRecoveryProcessor.m in Sources */, - B34BA7C37D5734BADFB67559C697D4C6 /* FBSDKGraphRequest.m in Sources */, - 6A537578E971062D1471E30CAB354803 /* FBSDKGraphRequestBody.m in Sources */, - 7622E77898A5E6339E7108532241FBF4 /* FBSDKGraphRequestConnection.m in Sources */, - 0FABEDED805FF3C8419382ECF57A04E8 /* FBSDKGraphRequestDataAttachment.m in Sources */, - D998190E2220FC38EF0166E22F8A3ADF /* FBSDKGraphRequestMetadata.m in Sources */, - FCBFA0453DBB0F8F4AF1357F4146786E /* FBSDKGraphRequestPiggybackManager.m in Sources */, - 42378B4C721065E6B0D901898104AE69 /* FBSDKIcon.m in Sources */, - ADB578FAF8C812D1521EF9D710A77A84 /* FBSDKInternalUtility.m in Sources */, - 9417E9466CCAACBCB2ABE8E77D01AAB9 /* FBSDKKeychainStore.m in Sources */, - D68C66187F69D3C94DECAD1721706031 /* FBSDKKeychainStoreViaBundleID.m in Sources */, - 5E456DF19F8ECEC61FF4D1C3E7AC0278 /* FBSDKLogger.m in Sources */, - 724E7035BD3905FFA72B386599CE0F3B /* FBSDKLogo.m in Sources */, - AA27404CA04AC54AA9E61738546F037A /* FBSDKMaleSilhouetteIcon.m in Sources */, - 1CC3FC978D22B673543B66F14E3586CE /* FBSDKMath.m in Sources */, - 205B45504EF447096404D53C3E5F07FE /* FBSDKMonotonicTime.m in Sources */, - 80355E0AA0F65BF9BC33663D2D5AAAAE /* FBSDKPaymentObserver.m in Sources */, - 2E2E2877A7093FCC57D39DEEE91F34F1 /* FBSDKProfile.m in Sources */, - 9158101B59990CB0ECE0851B57A3A86B /* FBSDKProfilePictureView.m in Sources */, - 811813531632404C8020D453107171DA /* FBSDKServerConfiguration.m in Sources */, - BFFAFE33C8F059284278D6CE3904FA10 /* FBSDKServerConfigurationManager.m in Sources */, - AF6EF01D6DE6C310DB3AC87B40F61750 /* FBSDKSettings.m in Sources */, - 3098ABDB8CEC8C01686E276C1935E3DE /* FBSDKSystemAccountStoreAdapter.m in Sources */, - FE773D7E55768620FC122E7ACFBA4034 /* FBSDKTestUsersManager.m in Sources */, - 362CDA47E136CC1DFE150611DDCFFC99 /* FBSDKTimeSpentData.m in Sources */, - 243F5CF4634218E9A2B8CB8C58CA5B5C /* FBSDKTriStateBOOL.m in Sources */, - 282AD9B008CDB7CA432F3F2551B2F38A /* FBSDKTypeUtility.m in Sources */, - A4DCD9C49CAF596816118268E0B6EACE /* FBSDKURLConnection.m in Sources */, - DBCA64F9596F8284793034014DE1A649 /* FBSDKUtility.m in Sources */, - DF333C3A04F0BFF1C78FAFDF99BC0C59 /* FBSDKViewImpressionTracker.m in Sources */, - 80B9F847DAA4DC85162B5CAF50DD8AAC /* FBSDKWebDialog.m in Sources */, - 008386D64340118381B5E74976611CFE /* FBSDKWebDialogView.m in Sources */, - F54A30D366C9CEBE9424AC2EF31E195C /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */, + 1C5FC139D9A229EC782BD8D26071C29E /* BFTask+Private.m in Sources */, + AFD33F9C5B99DD2201D2F07DBB808E79 /* Parse-dummy.m in Sources */, + C0575A904CA77375C3DC6B600B99CEAD /* Parse.m in Sources */, + B3539900ACA90E11ED43DD92C1AC3C8C /* ParseManager.m in Sources */, + BAB82247B24428DCAC2A4F4E9207F60A /* ParseModule.m in Sources */, + 9BFBEB3B8ABB7F24555374DAFDEE5A43 /* PFACL.m in Sources */, + E7C91F488C152026DF77891E905E49BC /* PFACLState.m in Sources */, + A721709FC277E75DE5C95BB094C3D554 /* PFAlertView.m in Sources */, + DA957B3EC09252118B3E9ABE033421A5 /* PFAnalytics.m in Sources */, + BD8A5E25C13BF645294D97EB1ED09CA0 /* PFAnalyticsController.m in Sources */, + 2E8782D39FA5B415D526EBE5C8AFA32E /* PFAnalyticsUtilities.m in Sources */, + 1BFCFA4856B9BE43C5FB24EA58662689 /* PFAnonymousAuthenticationProvider.m in Sources */, + AA196672E44A737889F2795FEA012F6D /* PFAnonymousUtils.m in Sources */, + F7DD4882D66BDDF093E01A1050E60F2E /* PFApplication.m in Sources */, + 7E6125121D979F1802CAD8FB88B66E4C /* PFAsyncTaskQueue.m in Sources */, + 05E1825A084B452E32D6063463B3FDDB /* PFBase64Encoder.m in Sources */, + D224C6471A4DA408043B4E72EA97721E /* PFBaseState.m in Sources */, + CCF1CD4428BA2944666A829E767A6C15 /* PFCachedQueryController.m in Sources */, + 81BBD301442755592686C551DE726C06 /* PFCategoryLoader.m in Sources */, + 9F309454D3B0FA1C2701DD3226C97074 /* PFCloud.m in Sources */, + 2D7129239566598FD9FC8204D9D26793 /* PFCloudCodeController.m in Sources */, + 35A2D271C4A91DC464251B9245103DB5 /* PFCommandCache.m in Sources */, + C0CA4956B32616DC4919F00A7EC9B92C /* PFCommandResult.m in Sources */, + 0AD287666FAFC490CAD4CBFBF47431AE /* PFCommandRunning.m in Sources */, + 2E29ABDC3BF7E6B7FF03C02FDD08B45F /* PFCommandRunningConstants.m in Sources */, + 2FC94CCAED9DD09203580A70DECF2A4A /* PFCommandURLRequestConstructor.m in Sources */, + 3CCACCF079947A68FE7E62AF0303CAC3 /* PFConfig.m in Sources */, + 0E47EB82346F3A93F6FC3AF3AEA778E3 /* PFConfigController.m in Sources */, + 86201505E0AE8888C1DE7E594A2D17E9 /* PFConstants.m in Sources */, + 95D14872174A30E8C238C5334ED744D4 /* PFCoreManager.m in Sources */, + 577FB11637F9A3CF218053ADC3A5F10E /* PFCurrentConfigController.m in Sources */, + 5557E69BD0A14921486F9974F746737C /* PFCurrentInstallationController.m in Sources */, + A1752CBBCEED5A344FDA136B0EF771A5 /* PFCurrentUserController.m in Sources */, + 1DD3895D39730377AEA9BEA6D66767CA /* PFDateFormatter.m in Sources */, + 89564402FD876B2472994636049AC191 /* PFDecoder.m in Sources */, + DCA33BB2A983A45F3617A576ACBC26E1 /* PFDefaultACLController.m in Sources */, + 227CE567B059758E1C977990BFAD75AF /* PFDevice.m in Sources */, + 6D1ED30B474D96450E7B0D1E548CDC60 /* PFEncoder.m in Sources */, + 94812F8C5A752C24A9B6D7635CB77A89 /* PFErrorUtilities.m in Sources */, + 087E876A250108F964ABA6E268BE5846 /* PFEventuallyPin.m in Sources */, + 7E7AB5CD972320B0ADA45CD3A96BF892 /* PFEventuallyQueue.m in Sources */, + 2DE0A008B557C991779E119572071163 /* PFFieldOperation.m in Sources */, + 63B17895BA064D712385A40C63BD7EA2 /* PFFieldOperationDecoder.m in Sources */, + 86043DABC677904AEAAD37E3C8981439 /* PFFile.m in Sources */, + ABBA98083D66AA8745D3CE85508A4B54 /* PFFileController.m in Sources */, + AD0387E79E49576C00BEAED9E903F6B9 /* PFFileDataStream.m in Sources */, + 438CA2F1118781D63B470E41E4C7889C /* PFFileManager.m in Sources */, + D5DE272410B216A538955743C7C9574F /* PFFileStagingController.m in Sources */, + 9634B50A041722E070888114E161E4EE /* PFFileState.m in Sources */, + B072A694A0A46131BB3A56636471FAE1 /* PFGeoPoint.m in Sources */, + 8E5C4F9E02DA0CE1FB4656E19A803A23 /* PFHash.m in Sources */, + 74EB4B274B8CF5543B9DB2B77394CC60 /* PFHTTPURLRequestConstructor.m in Sources */, + 267A29AA34A9D757450EBE41A4A5F40B /* PFInstallation.m in Sources */, + 4BABB36619011AA0B6039422203CFC5E /* PFInstallationConstants.m in Sources */, + 4D2FE3A028403C4E9545B01159BBE9CB /* PFInstallationController.m in Sources */, + 857C325B0A6E76A01EACF737B6D4FD1A /* PFInstallationIdentifierStore.m in Sources */, + 082462DCFDC7A19F595743F10C8EC7EB /* PFInternalUtils.m in Sources */, + F6439BF34231EC9F4CBB3F01C862CEFA /* PFJSONSerialization.m in Sources */, + 5DD4705F866F09E0FA008D068DD31F48 /* PFKeychainStore.m in Sources */, + 2ADFEB8C12A6F30CE83BC5AB3316C6E4 /* PFKeyValueCache.m in Sources */, + 22C38A31A84F31B9EF5B40892497DA44 /* PFLocationManager.m in Sources */, + DF6FA2E0FCB935C5FF9824699BF32C2F /* PFLogger.m in Sources */, + B91DBAED5B544D03577FAFF5722F865E /* PFMulticastDelegate.m in Sources */, + 80AC86A7716C9D9FE484C461CECF64A5 /* PFMultiProcessFileLock.m in Sources */, + F728C30DC692908961A286369C3A5D56 /* PFMultiProcessFileLockController.m in Sources */, + EC988E57B95BF4C3D8D67B5A3B382A8C /* PFMutableACLState.m in Sources */, + 37C6195201D97353994A4B323BD7EC39 /* PFMutableFileState.m in Sources */, + 824F558CFBB6BFD7FC2D2E9FB1FCA5B3 /* PFMutableObjectState.m in Sources */, + 86EF71FE1E8C350F37E45235765F15F4 /* PFMutablePushState.m in Sources */, + 269ABC30C8CD9E74E46491F5B6FB9D17 /* PFMutableQueryState.m in Sources */, + 893E921270F96758F3799A3949DECB9E /* PFMutableRelationState.m in Sources */, + 580B7575D5092F73CADB0DC057A8DD20 /* PFMutableUserState.m in Sources */, + 7C9D94C465AE6FEED19A76EF32EE9DB0 /* PFNetworkActivityIndicatorManager.m in Sources */, + 1DA6669105771BA38E2C69FDC90286A6 /* PFObject.m in Sources */, + 8A96BC7922311E4546CA119B3CF1249D /* PFObjectBatchController.m in Sources */, + 7DAD345A47688CC2FF5EEF4E6576DA9D /* PFObjectConstants.m in Sources */, + AF896EF80A89E677C2FEAD7D25B5CA13 /* PFObjectController.m in Sources */, + 8A9D36221679B9C6AF86158044A8AB80 /* PFObjectEstimatedData.m in Sources */, + 14D6E494E0D7E904AD960AE602238451 /* PFObjectFileCoder.m in Sources */, + 8C62414E0ABD89DD5A595B207B4F3DA8 /* PFObjectFileCodingLogic.m in Sources */, + 854828D77E6CD3D9B82D9498EF24E92E /* PFObjectFilePersistenceController.m in Sources */, + 641656C3A17793081B0B55EF4183369C /* PFObjectLocalIdStore.m in Sources */, + EE0DAF5E510D971C9A34D617DA2438EC /* PFObjectState.m in Sources */, + 1B3FD4504118844C3450B1F75C2EC2B1 /* PFObjectSubclassInfo.m in Sources */, + 02A63183E1CD64A36C6C93A5A33A2CC8 /* PFObjectSubclassingController.m in Sources */, + 17D0DD03C923128099A9737F317E5D29 /* PFObjectUtilities.m in Sources */, + 5A3E09336161889373CC89326260ADE5 /* PFOfflineObjectController.m in Sources */, + CD714C0FC030441A7466E26DE9A3AC29 /* PFOfflineQueryController.m in Sources */, + 324B462950BF05B9CF8C8B4E1556D1A3 /* PFOfflineQueryLogic.m in Sources */, + AB61AD540531ED95F49168BD4C8C1936 /* PFOfflineStore.m in Sources */, + D1E16869A350E851F31AE83FAB93361B /* PFOperationSet.m in Sources */, + C7ADD9A2DC3411145922D13FE552AD20 /* PFPaymentTransactionObserver.m in Sources */, + 5624B5B3EB50D43FB54BACDDB45228AD /* PFPin.m in Sources */, + 2BE316C68D11EAF02F9288B25FEFF2B8 /* PFPinningEventuallyQueue.m in Sources */, + B2ECB596CD8B0A8925E2221C87668493 /* PFPinningObjectStore.m in Sources */, + 4075B036E32B6718E9B9523BC0059DF2 /* PFProduct.m in Sources */, + F1FB40054787172F5817A61DF16AA000 /* PFProductsRequestHandler.m in Sources */, + D6027C66071A9702E15C8A733DBF6FF6 /* PFPropertyInfo.m in Sources */, + 8CDA43D636A5808F5E87A816EB9F0D78 /* PFPropertyInfo_Runtime.m in Sources */, + 1961C4A9AD59A951688C260E91482AA0 /* PFPurchase.m in Sources */, + 4FC468A52568F12ED267007F0AD753FC /* PFPurchaseController.m in Sources */, + 91D8984FCF7711FFFA4E5A8795A49B19 /* PFPush.m in Sources */, + 150FD95BCF7C18E9717A863C6B645DC6 /* PFPushChannelsController.m in Sources */, + D808382848DE98DF7860D36066C0B58B /* PFPushController.m in Sources */, + 07ED5D3AADD2C1C41BD215C19C4E48C6 /* PFPushManager.m in Sources */, + E06A12A765D316CFB2E9E26FB48C3AC1 /* PFPushState.m in Sources */, + 9F04CB08F3037EDF755036F82BCC418F /* PFPushUtilities.m in Sources */, + 560BB49A70689476862EE5E1F179D36A /* PFQuery.m in Sources */, + 658F5F398CDC2959D9D80E71D58CF261 /* PFQueryController.m in Sources */, + 946BB4E027BBEDA5EC360607902B1EB0 /* PFQueryState.m in Sources */, + 5D8F8D57EC3D51CD74969DAA5BFBC15C /* PFQueryUtilities.m in Sources */, + BA9C553426A8678957BAED9B891E4B96 /* PFReachability.m in Sources */, + 0301C8C6C03DB444A51A086E29571535 /* PFRelation.m in Sources */, + 55F36BBE4FE82BCCD0C9A4E06DC26BEF /* PFRelationState.m in Sources */, + 1A8EA6EABBDB4F9D5170BBC9F31E9FB9 /* PFRESTAnalyticsCommand.m in Sources */, + 4348B4727F59DB738A1A33721BB29AA8 /* PFRESTCloudCommand.m in Sources */, + 62D812F2EF8DA118C618FF5349055C57 /* PFRESTCommand.m in Sources */, + 7A67EA6F03AFFE55FAA759B11890E468 /* PFRESTConfigCommand.m in Sources */, + DD60532519B073DDC5A56E7426B983B4 /* PFRESTFileCommand.m in Sources */, + 1CE911A8315F4C7A5844415DC9933260 /* PFRESTObjectBatchCommand.m in Sources */, + 2F8A6D5D298FE5F63CFA909D0A63D26B /* PFRESTObjectCommand.m in Sources */, + 864CF85CA92D5D4313B0A57692C45881 /* PFRESTPushCommand.m in Sources */, + 2D4F9228E33B7CB031B9344EA22E3AE7 /* PFRESTQueryCommand.m in Sources */, + 0DA197860573F04B990BB55CED47EB2F /* PFRESTSessionCommand.m in Sources */, + DB8CE9C5C660790137E0C7B7364E8E82 /* PFRESTUserCommand.m in Sources */, + E0E49C694EE64CD46539BAD3D4F08AC9 /* PFRole.m in Sources */, + CF49D485A500B363E1DDEF68072F9F36 /* PFSession.m in Sources */, + 57BDE2372BC4BBC34CAB643A2A95E416 /* PFSessionController.m in Sources */, + E0724D062B05BEC513826196D0DF36F2 /* PFSessionUtilities.m in Sources */, + 2E74D36D8D8BAD8D55380944015FD120 /* PFSQLiteDatabase.m in Sources */, + 716A44DCF2417118DDAEAD57B69029BA /* PFSQLiteDatabaseController.m in Sources */, + A3353245628DEA268387441F4EF31877 /* PFSQLiteDatabaseResult.m in Sources */, + B00E930CCC7EF81612BF8392339E17A8 /* PFSQLiteStatement.m in Sources */, + C63F51531975AE0BE6BC871568A6475D /* PFTaskQueue.m in Sources */, + EFB0AF9D9768F6BD8723FFCB40AD7D39 /* PFThreadsafety.m in Sources */, + C8DF39D35A8ACF9F10F8392AF8C407A0 /* PFURLConstructor.m in Sources */, + D33E2DE9B21F540B2BF1812B90F33155 /* PFURLSession.m in Sources */, + 0ECA745830D272585C68ECDF8C5569D7 /* PFURLSessionCommandRunner.m in Sources */, + 36CB170B89C0B4642CB663616BC47E5B /* PFURLSessionDataTaskDelegate.m in Sources */, + E0DEC8F4B52DC0BDAD4F633262232B7D /* PFURLSessionFileDownloadTaskDelegate.m in Sources */, + 5774AA430101105FF0F41887984D6011 /* PFURLSessionJSONDataTaskDelegate.m in Sources */, + A56E60590F48B3C632A71A0B970F8E90 /* PFURLSessionUploadTaskDelegate.m in Sources */, + 93511A4AF61BEA29A4FD4EEE7157E023 /* PFUser.m in Sources */, + F743978153F2A7013B2066B1B306E5F5 /* PFUserAuthenticationController.m in Sources */, + 9934291C79A7EBE51544EDDB2193FD01 /* PFUserConstants.m in Sources */, + 3515249853196B72457D26E35A75A0D5 /* PFUserController.m in Sources */, + 2CC921A632237030D7C642FF4D3E2216 /* PFUserFileCodingLogic.m in Sources */, + 02551F124693A0300B457431E75E3AF0 /* PFUserState.m in Sources */, + E5BE3915A6A2859B581A8300E69A2B8E /* PFWeakValue.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6D2B8A8A757FB427940FBB3F122854B2 /* Sources */ = { + 6D58EE024B08316911051FCE3FA6EBDC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8F9A675846DC2C23572CCD8E4FFBDB93 /* Pods-dummy.m in Sources */, + DE479B83E277F9913E9A6CBE17BD6B3E /* FBSDKAppGroupAddDialog.m in Sources */, + 18EAF4167A160D50758673E49250402C /* FBSDKAppGroupContent.m in Sources */, + CFFAEE251FC130E14DF2831B504F748D /* FBSDKAppGroupJoinDialog.m in Sources */, + 0A6A5BA0942FF096A2D641E8F49C0F79 /* FBSDKAppInviteContent.m in Sources */, + CEF61BB75902C8E0148259A5DF63854E /* FBSDKAppInviteDialog.m in Sources */, + 3053488EEEBCD0385576315DBE9EC11E /* FBSDKCheckmarkIcon.m in Sources */, + 8071A999E075ED48380A5AAACDA0E0E9 /* FBSDKGameRequestContent.m in Sources */, + 8C66B8A503EE7CDAF2C8B843D7839113 /* FBSDKGameRequestDialog.m in Sources */, + 3C6DF2FA1EA6BE60192A77E7270D6212 /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */, + F10CE2BA1CE785FB8EC2CE0595A7FBBE /* FBSDKLikeActionController.m in Sources */, + 2FB0531893E490ACEC556B0F43C44591 /* FBSDKLikeActionControllerCache.m in Sources */, + EED88C9780961006A6F988AFECD7BED3 /* FBSDKLikeBoxBorderView.m in Sources */, + F7E42776080FF0BDBE07365A2AFE2834 /* FBSDKLikeBoxView.m in Sources */, + F9198070ED60C8E1F3AF0910B05EA446 /* FBSDKLikeButton.m in Sources */, + 796EC3DD53C2C28010D03E1E323A1DDB /* FBSDKLikeButtonPopWAV.m in Sources */, + 3DDFA2D0FCEE1978143B685D1C3A9D7A /* FBSDKLikeControl.m in Sources */, + 21E2ED6EFD8559848B98705909DEA010 /* FBSDKLikeDialog.m in Sources */, + B28E7BE90D0898F34164A3649D16E978 /* FBSDKLikeObjectType.m in Sources */, + 081F6FAFE0FC8BD6EFC6A517B0ADB614 /* FBSDKMessageDialog.m in Sources */, + 4A7FBB52488D368CFDFDB1B6516C2CE4 /* FBSDKMessengerIcon.m in Sources */, + B4035BD0031BD154E70AF698B10B48A7 /* FBSDKSendButton.m in Sources */, + 1E8874FFFC0B19D20C001681F1942855 /* FBSDKShareAPI.m in Sources */, + 34B1786FA4EBC179AC660B83CF1A4F82 /* FBSDKShareButton.m in Sources */, + 4458C6C127D3030A17A791B3BA9A0CE0 /* FBSDKShareConstants.m in Sources */, + 4A4CF9C7D69DC9049FD677165FADA59E /* FBSDKShareDialog.m in Sources */, + 827A9685D68B9BD092DD85970625C1F2 /* FBSDKShareDialogMode.m in Sources */, + 98350E1EE789CEB57D91ADF6F225D62E /* FBSDKShareError.m in Sources */, + 2BFE426FBB2EF7A91EAC0893828A3F5C /* FBSDKShareKit-dummy.m in Sources */, + 16E3CEBF59A2D8E5A9B04AF979FDF14A /* FBSDKShareLinkContent.m in Sources */, + BAF2CCC3F6782690F1534565B877278F /* FBSDKShareOpenGraphAction.m in Sources */, + A31552A8B1F14534DDBA1DFC4E09C195 /* FBSDKShareOpenGraphContent.m in Sources */, + EBE1D926D326775167E082772E23D000 /* FBSDKShareOpenGraphObject.m in Sources */, + 51F742896037EA588D6157B105922B77 /* FBSDKShareOpenGraphValueContainer.m in Sources */, + 2763640E3F9F25BCE1BC36B60364A740 /* FBSDKSharePhoto.m in Sources */, + 2B868B020F9C681F76C506EF6BC9A801 /* FBSDKSharePhotoContent.m in Sources */, + 29E9B7D045DD5219B0D17A1289A1E228 /* FBSDKShareUtility.m in Sources */, + E571D44B22235633760C6FB955906D99 /* FBSDKShareVideo.m in Sources */, + 57503516957EEFAFFAD7A789730E7B9C /* FBSDKShareVideoContent.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 746445DB8AFCFABF5687FB7B2A2301DE /* Sources */ = { + 78D1430387219E1CEECF694664B47298 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B6F9832AD636177E140EC01E3DC164B3 /* RKValueTransformers-dummy.m in Sources */, - CAD3986F778DBCF207A2C0FFCA781B8F /* RKValueTransformers.m in Sources */, + 168754543C69B5763F69864E4180CA20 /* AFHTTPClient.m in Sources */, + 6E7A504266921DE5FEDD84D1A38F473F /* AFHTTPRequestOperation.m in Sources */, + A71645666E899BA6FCD0A105BCF4554D /* AFImageRequestOperation.m in Sources */, + 977939FF92D57042F939439588EB0E6F /* AFJSONRequestOperation.m in Sources */, + 28E0C7D4EAB83F94E8BED7A8A6588F17 /* AFNetworkActivityIndicatorManager.m in Sources */, + 9EFD8B6E9A0DFB23D0458D0071283130 /* AFNetworking-dummy.m in Sources */, + 958CCFDA315803AE6E8B769C3985BF57 /* AFPropertyListRequestOperation.m in Sources */, + C920759127C01FDD99644BB6806F24FC /* AFURLConnectionOperation.m in Sources */, + 6D3FD8968A8524A1D88687C9861581B7 /* AFXMLRequestOperation.m in Sources */, + 3EC6C51767337E859A4F15C5FBC1770E /* UIImageView+AFNetworking.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D4C81EA36A6BFE3288457472CA4368FB /* Sources */ = { + 7A32D54FA40FEF860E67B9E9E2AE0993 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0B42591A57B35D10FAE5F939603C105F /* FBSDKAppGroupAddDialog.m in Sources */, - 56DDC808EA95231C01E95F82452FED13 /* FBSDKAppGroupContent.m in Sources */, - 16C27A1CBCD5A7969B2A158858A2CC9B /* FBSDKAppGroupJoinDialog.m in Sources */, - 8FCF54FD9CEA3E07B0C913783C0B95A0 /* FBSDKAppInviteContent.m in Sources */, - EF8361AF122087D0CA9C80EC6FFF6A5D /* FBSDKAppInviteDialog.m in Sources */, - 769C8A2A5FD69C9E808BAFEBD91A620D /* FBSDKCheckmarkIcon.m in Sources */, - 21C047E0236B40B41B98B4AB051559F0 /* FBSDKGameRequestContent.m in Sources */, - 3EFA30742A712A0CDDFB5993F762C0EF /* FBSDKGameRequestDialog.m in Sources */, - 5FAA4777EA70E15098063A2B1B314915 /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */, - FDD7E5D9ED6B3C14DA9AAC2E76E41BEB /* FBSDKLikeActionController.m in Sources */, - 5FBCE36A6D25A4B44E4C0C9C6EB06093 /* FBSDKLikeActionControllerCache.m in Sources */, - 2355CEA58CC12AC348752E940F41C856 /* FBSDKLikeBoxBorderView.m in Sources */, - 573AB04F28243AFEA4E6460438D3A935 /* FBSDKLikeBoxView.m in Sources */, - 92E9F455D701E6FAABAB2C36DB4B4BDF /* FBSDKLikeButton.m in Sources */, - 554247D0CBC21F3D62833C441D61F642 /* FBSDKLikeButtonPopWAV.m in Sources */, - 00B7078D95685A047C5D6FFEF18D8C62 /* FBSDKLikeControl.m in Sources */, - 629C5E37F422AEAECF2125E1B8954DFA /* FBSDKLikeDialog.m in Sources */, - 5491227F12C974B21D03C53DD7B996C6 /* FBSDKLikeObjectType.m in Sources */, - F5382AA95E6ADCFF17F36184DCA008A6 /* FBSDKMessageDialog.m in Sources */, - 402D95BB3E4B49C7E1DF15661C419498 /* FBSDKMessengerIcon.m in Sources */, - C1DCBB421C9D9B70A11D5B59DF9021A7 /* FBSDKSendButton.m in Sources */, - 957B6B2AFA1B7311B98BC4ECA2D3A0E6 /* FBSDKShareAPI.m in Sources */, - 3722A927AABB3C7CC8B5562C9B42A4B1 /* FBSDKShareButton.m in Sources */, - 408F1B35F34DA7A3B64B32935531D02D /* FBSDKShareConstants.m in Sources */, - 30B5221471557DA4D9A2189E52471931 /* FBSDKShareDialog.m in Sources */, - DE391D622204F7FBD288734ADBF32665 /* FBSDKShareDialogMode.m in Sources */, - 8CF36F02672717CD65CA145BF33C8E99 /* FBSDKShareError.m in Sources */, - F3293A4DBA100B38D9669988A0E1524A /* FBSDKShareKit-dummy.m in Sources */, - E08AC3BF6B05C1466250A83E5863BDC3 /* FBSDKShareLinkContent.m in Sources */, - 7FDD9544319E5EE9F6093720244BC5B1 /* FBSDKShareOpenGraphAction.m in Sources */, - A34464F1C2086A0692D5226C2EE6248A /* FBSDKShareOpenGraphContent.m in Sources */, - 6DF393B100C28657E21257B71F6D7DB1 /* FBSDKShareOpenGraphObject.m in Sources */, - E5A13167291337523078AB9C0CB3125B /* FBSDKShareOpenGraphValueContainer.m in Sources */, - 796F6AD0A1615AD0072F7DF2F5E1E5D8 /* FBSDKSharePhoto.m in Sources */, - CF3C3F13840C14F05C1855797B0B2E5E /* FBSDKSharePhotoContent.m in Sources */, - F0E688E7768227054BDD40A9D2593406 /* FBSDKShareUtility.m in Sources */, - 0FE13D468968D686BA4AEDE0ED6B2130 /* FBSDKShareVideo.m in Sources */, - A95E8A958E2B5FFE3CADAC891086BAD1 /* FBSDKShareVideoContent.m in Sources */, + FB1E08557D01F434CD5C340084CC4AE1 /* RKValueTransformers-dummy.m in Sources */, + 0EF3F474C4F968CC78351909F0C76A70 /* RKValueTransformers.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - E4378E9400771DD3F49170B9CB4F27E4 /* Sources */ = { + 833A0D9FF4B4BFBC7B95E79131ECCCE2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 10C2B5930F1B78F40CD24647D0816C15 /* FBSDKLoginButton.m in Sources */, - 201C1B5EA1CD292E1B6B811C9D1A765B /* FBSDKLoginCompletion.m in Sources */, - 864964DDE4A49AA0C8BA369228DB2F0D /* FBSDKLoginConstants.m in Sources */, - B7AD629446C47B305E6630373410BFC2 /* FBSDKLoginError.m in Sources */, - 5B72DFD5FC0ECD42B595D7DF8797EFD6 /* FBSDKLoginKit-dummy.m in Sources */, - 9006A9F90EE85EAC328A7CA6B21A74E0 /* FBSDKLoginManager.m in Sources */, - F7B6E9F743BE561A7C5252D196E1408A /* FBSDKLoginManagerLogger.m in Sources */, - 2E3451E0F9E899B3485E85A091EBCB90 /* FBSDKLoginManagerLoginResult.m in Sources */, - 32CADAEC3FC0CA1A4AB2759B8DB02C94 /* FBSDKLoginTooltipView.m in Sources */, - 2362D4F041145FA0576E5E6908705963 /* FBSDKLoginUtility.m in Sources */, - C2109470083A011CBF0F9E49068D88B1 /* FBSDKTooltipView.m in Sources */, - 889A0ADF8C008FD622BB2611917818AB /* _FBSDKLoginRecoveryAttempter.m in Sources */, + A1292411CD105DB99B42269F163F0616 /* TKEvent.m in Sources */, + 0A737FDD8E364395D31D09A4510E8833 /* TKState.m in Sources */, + 2D61DA1D31B497355FA3519736497111 /* TKStateMachine.m in Sources */, + 035EEE9572C6A81E25704CE1C650473E /* TKTransition.m in Sources */, + C6976F7772E03E1FE2AB027F7AD1484B /* TransitionKit-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - E6D802C085D3329BFB6C5D9329920583 /* Sources */ = { + 997D1E51BED10335B3974C35733B13EA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A6F08ED05A5539A09A9E61B403A990AF /* ISO8601DateFormatterValueTransformer-dummy.m in Sources */, - 80BBA5295F8F2EDFB289DF9E1E0B5E12 /* ISO8601DateFormatterValueTransformer.m in Sources */, - 5F4B09393C8220183CE1E6DAC0BE9C74 /* RKISO8601DateFormatter.m in Sources */, + FEABBD556CE7DA2220EF2DA04C735136 /* SOCKit-dummy.m in Sources */, + CEB3B7738916847B38FA1E13D49981DC /* SOCKit.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - F6444182B3E4AA19EE41E56E02FF8AA6 /* Sources */ = { + AC963ADF58EEFB6DD58B1D7B88F235B2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C1F4CDAC9CA5FE6D7CB0081CA2C324AA /* BFAppLink.m in Sources */, - A1EC89637E89B1A927B64A88D846F37C /* BFAppLinkNavigation.m in Sources */, - 6564EACD1F229AC7C76D64958FD2084E /* BFAppLinkReturnToRefererController.m in Sources */, - 17BCC234EFBB7A73B92E922E5104E5AE /* BFAppLinkReturnToRefererView.m in Sources */, - 5CE49091B82B4C91FFE7BB7ECB3EF5FF /* BFAppLinkTarget.m in Sources */, - 86DDE3CA5BB0A9832CC42F7D111A4E50 /* BFCancellationToken.m in Sources */, - 5E5C21A949A6A420773112D9DA4D08A9 /* BFCancellationTokenRegistration.m in Sources */, - 221012772EFFCB2257ABC519107D42D4 /* BFCancellationTokenSource.m in Sources */, - 87555A986BB8D791D09CC1CF98CB05F0 /* BFExecutor.m in Sources */, - 256CEC5BA81F9DF5DDADBCCFBAC3CBBD /* BFMeasurementEvent.m in Sources */, - 9B20CB3ED72C1E4476D8EC5896D6EE25 /* BFTask.m in Sources */, - E36FAD435FEC0C33404BEE1546D263CA /* BFTaskCompletionSource.m in Sources */, - 1C56EBB47779DB8E4FCF3FA690AD04BE /* BFURL.m in Sources */, - 98243A9B61B05CAD50CD1C18E5EB33EF /* BFWebViewAppLinkResolver.m in Sources */, - 638303B9767AD6CFA4EDD3CC9D438888 /* Bolts-dummy.m in Sources */, - 9C2018D3236C7170BE9FC1AFA36AE55E /* Bolts.m in Sources */, + A5904B7145B927AF58B5B7F952A198E2 /* Pods-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DF252A3FF4DBA662945DE8964852F37A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BABA3F412E61C8AF114390901E5EB8C2 /* lcl_RK.m in Sources */, + 211063C2E328D1BA057D5952FAE72961 /* RestKit-dummy.m in Sources */, + 3E9B5AD53BD51F897F832FC014D1AF5D /* RKAttributeMapping.m in Sources */, + FEE35D4E0AC6882B8B643149854B0288 /* RKBenchmark.m in Sources */, + 705AA38F8B993508AEFEE4998DC8457F /* RKConnectionTestExpectation.m in Sources */, + AED1CD8AB9480299EB225BD4EDF8F195 /* RKDictionaryUtilities.m in Sources */, + 1AF2BFF9AAB59B86448DAD27986826D6 /* RKDotNetDateFormatter.m in Sources */, + BAFE82F7512A8C98F8C6D46D28F5B965 /* RKDynamicMapping.m in Sources */, + 246339D060F03B20F84E44F51AB7D0B1 /* RKErrorMessage.m in Sources */, + 0AE875BA34FB652137DC559C9691F736 /* RKErrors.m in Sources */, + F0FE6F4E093E414D2956FA431E0C606C /* RKHTTPRequestOperation.m in Sources */, + 531C2A042979E8EA3995593A85E4DDAE /* RKHTTPUtilities.m in Sources */, + 814807B51F230D7D561699CC6FCE8111 /* RKLog.m in Sources */, + FE2AAC4C194831168C51BE65F975CEC3 /* RKLumberjackLogger.m in Sources */, + 0E6F9756BA82ADD778780C58B4055D79 /* RKManagedObjectRequestOperation.m in Sources */, + A9F693EAD2DA785A4DC3C32E334C7B91 /* RKMapperOperation.m in Sources */, + 7CAFF794C7BC2BB61BB7BF31E8278215 /* RKMapping.m in Sources */, + C98D3A0AD03C7C00CB3C17CFEDED8552 /* RKMappingOperation.m in Sources */, + D5101DAEAC2C4A3667D2CDB64B5B0F92 /* RKMappingResult.m in Sources */, + 32FE2EE3C0D371A093A87DBD3D5A378C /* RKMappingTest.m in Sources */, + 7CDB3C41071E6BE656221EA86B04C809 /* RKMIMETypes.m in Sources */, + 6608AB736E0C33DCF8268F38C187F113 /* RKMIMETypeSerialization.m in Sources */, + C6A4588B17EC2FC562007331CB512C49 /* RKNSJSONSerialization.m in Sources */, + B7F654610A8DF8054D47B38623765DAA /* RKObjectManager.m in Sources */, + BA348104C2089F3DB71A91E2E7AB4EED /* RKObjectMapping.m in Sources */, + 7C60516B1E4A99AEF16F3B60AA91C41D /* RKObjectMappingMatcher.m in Sources */, + 225B422163530406C2D09DA1D7160390 /* RKObjectMappingOperationDataSource.m in Sources */, + FE3B8BC960347662443ADE923D1793C3 /* RKObjectParameterization.m in Sources */, + 8854963B7559E45BA04D4A3AC29B26D2 /* RKObjectRequestOperation.m in Sources */, + 97E73BF140E412BECB34ACF01B50C764 /* RKObjectUtilities.m in Sources */, + 92D3DBF67B9423C54D94F45652DA8073 /* RKOperationStateMachine.m in Sources */, + 73874B352F141AD7451291BE3C07619D /* RKPaginator.m in Sources */, + CB3395E1F4E550A3333860410E07904D /* RKPathMatcher.m in Sources */, + F4115B73585F11A711426EAE0B3B0B8C /* RKPathUtilities.m in Sources */, + 7C0161AC9FE0AC577A2796CFE21D38D9 /* RKPropertyInspector.m in Sources */, + 626EA657BFC628DA8317728BE78A3B4A /* RKPropertyMapping.m in Sources */, + 328528E69AE673F4223F2B27CF07EB90 /* RKPropertyMappingTestExpectation.m in Sources */, + 32659ECDEF93706E5DE3C89FF10C3725 /* RKRelationshipMapping.m in Sources */, + 77DE7989C98CD1CCB807263C1BE7D419 /* RKRequestDescriptor.m in Sources */, + 1861C84C95D4B50B28765572F4F0E09C /* RKResponseDescriptor.m in Sources */, + 6811D76FD209AF70990900C4FA2348E5 /* RKResponseMapperOperation.m in Sources */, + 160CF44612AC90EC6ECF79F089BD4C6D /* RKRoute.m in Sources */, + E7FCA88FB0851D5AF8DB69F2411E06E2 /* RKRouter.m in Sources */, + D491E4080F061A2DA0BE31AC5D94DEA7 /* RKRouteSet.m in Sources */, + 04BE2CB66242D07246BFC9F2F167E9D2 /* RKStringTokenizer.m in Sources */, + 70C825F4D31DA952A01695D926762BBF /* RKTestConstants.m in Sources */, + 7CFB4A9919959620E1C0514632BDB8CD /* RKTestFactory.m in Sources */, + E619774CBBC6B7DB599BB085A6F24102 /* RKTestFixture.m in Sources */, + E7F0BB11E1A7B4F36F3B5C5473E30A10 /* RKTestHelpers.m in Sources */, + D57E377DBC5DFE3FE279AA79A92A9BB3 /* RKTestNotificationObserver.m in Sources */, + 27F35B04936EED379E9B73ADDEEE0EA8 /* RKURLEncodedSerialization.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 1DB21EB238ED3CDBEDA6D8B7DCF90C09 /* PBXTargetDependency */ = { + 08A8AEB8966E2E43A9431D0003593952 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKCoreKit; - target = 38C996FDE9DF6549D8681DED0DF37B6D /* FBSDKCoreKit */; - targetProxy = F22120048F68D4153949EDB8127B913F /* PBXContainerItemProxy */; + name = RKValueTransformers; + target = C47E006176ABF4755350B88C088C3F0D /* RKValueTransformers */; + targetProxy = 339C469D88EE3434DAFA40C9E6F07FE1 /* PBXContainerItemProxy */; }; - 20B7A46BE41F3AA6B35791B84829E235 /* PBXTargetDependency */ = { + 1DAA33AFB0B62CA577654225852D35F5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Bolts; - target = F70BF3EA9E69856AC06EB0A27F8F7F5E /* Bolts */; - targetProxy = 5B461E7087ACB47CECF41951623B8F80 /* PBXContainerItemProxy */; + name = SOCKit; + target = BEE18208B27447ADBC42B142637E5653 /* SOCKit */; + targetProxy = B1239271F4A1FD7D59D205FD338D610B /* PBXContainerItemProxy */; }; - 4E333A737FBED4611FA065CD43804799 /* PBXTargetDependency */ = { + 262635609BC8D3C2B4226143E6FEC97E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FBSDKShareKit; - target = 07B33CB3AC7A0FB33C3E2F87B3AAA6BB /* FBSDKShareKit */; - targetProxy = 07BFC67E4B108510AC71A0A5449A1488 /* PBXContainerItemProxy */; + target = C78CAB9013653EB1A250B2DFD3BC7666 /* FBSDKShareKit */; + targetProxy = E0E5E109337B187FD694994086A939B4 /* PBXContainerItemProxy */; }; - 5476A9F788FDF749003DA969A09B8EDF /* PBXTargetDependency */ = { + 43621BF92BB185CA3558DB05A6B6C68C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FoldingTabBar; + target = 9145E070690055EA2D82D264E78B0F71 /* FoldingTabBar */; + targetProxy = 8A21679C58B10CC321CF4F0A4AFE1D12 /* PBXContainerItemProxy */; + }; + 4C637EB26D3202CB6C05595A6B8AD136 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FBSDKCoreKit; - target = 38C996FDE9DF6549D8681DED0DF37B6D /* FBSDKCoreKit */; - targetProxy = 877102F5600E4993D45569385031DED4 /* PBXContainerItemProxy */; + target = 81D7FE2A0FD9258247B1232874B837DA /* FBSDKCoreKit */; + targetProxy = 96693A54A0BFA8B81D156BF21770C588 /* PBXContainerItemProxy */; }; - 58E3FDF3353FBEF4CD1513221CAF29B7 /* PBXTargetDependency */ = { + 53E1ACBEC50B09EE6B9FAF3DD1C524CA /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = ISO8601DateFormatterValueTransformer; - target = 0EC7816D6AB1C0830108FC61D968488B /* ISO8601DateFormatterValueTransformer */; - targetProxy = 1D5F94CFB0F913E9511CAF914A2C7D0E /* PBXContainerItemProxy */; + name = AFNetworking; + target = 61681BF0E677683490353B846C61A129 /* AFNetworking */; + targetProxy = DD9ABECB9558235383385F6FC07092C1 /* PBXContainerItemProxy */; }; - 6C5A8B64810D2A925A10471E1DD15B6F /* PBXTargetDependency */ = { + 588BC898457A8CE2024D7B177E940551 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Bolts; - target = F70BF3EA9E69856AC06EB0A27F8F7F5E /* Bolts */; - targetProxy = 0F4B7338DE46F13905B30C9CD30ACD11 /* PBXContainerItemProxy */; + name = FBSDKLoginKit; + target = 4E286D373D75563CE26E479A68203892 /* FBSDKLoginKit */; + targetProxy = 898060DAD9C6F56E39CBC74E7C3BF4CD /* PBXContainerItemProxy */; }; - 740BD01DC926CE40B57F37BA758691F0 /* PBXTargetDependency */ = { + 70C54CCFB7FE7F502C81A2A38F6273AA /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SOCKit; - target = A2770197345BCE1622568AECE6B8E824 /* SOCKit */; - targetProxy = A373B3453AFBE2E4FEDDE5C90598DE2B /* PBXContainerItemProxy */; + name = Parse; + target = 5366B7F679CF2BA31EA583EA35CA2D90 /* Parse */; + targetProxy = 3EC57B4C7E05EAE5D8D0CEE64F908894 /* PBXContainerItemProxy */; }; - 74BE66951935B4884173BE8571A70445 /* PBXTargetDependency */ = { + 8A82CEED3128313AAF29DFA0CFD81CE3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = TransitionKit; - target = 158117D77AED03B83733E51D2D22983B /* TransitionKit */; - targetProxy = 575F96E46E0B5ADAE795139F2952EFDA /* PBXContainerItemProxy */; + target = 7D2B4C2000D9D203AFCEB1913037D8E8 /* TransitionKit */; + targetProxy = A3F917A717D8563642755DA31CDA523A /* PBXContainerItemProxy */; }; - 820B3947E446D75C8D9868A33BA2F0C5 /* PBXTargetDependency */ = { + 8B6EA1DF52BBA239D811EE0FACCD74DD /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = TransitionKit; - target = 158117D77AED03B83733E51D2D22983B /* TransitionKit */; - targetProxy = 654EFE0AC2F47EF9497FFF8114F473D7 /* PBXContainerItemProxy */; + name = RestKit; + target = 950F7D9F52389DCF637F3C1313255F78 /* RestKit */; + targetProxy = EF48640673BF68A34C2B66E619477480 /* PBXContainerItemProxy */; }; - 98573BF74E4FBE4F6612588F871734DE /* PBXTargetDependency */ = { + 9080548E04B19332D7C26C84C5DA6A24 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SOCKit; - target = A2770197345BCE1622568AECE6B8E824 /* SOCKit */; - targetProxy = 1AB990EC905BAD0E697E2BAC5D549712 /* PBXContainerItemProxy */; + name = TransitionKit; + target = 7D2B4C2000D9D203AFCEB1913037D8E8 /* TransitionKit */; + targetProxy = 47172F3F466D90D95F4A8AE2922E0EB8 /* PBXContainerItemProxy */; }; - A3494C8ED2345467EA49874CD21B00C6 /* PBXTargetDependency */ = { + 947B8A9ACA161B88A2A9EC0FF69FA490 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Parse; - target = 9350FE989EB5F0E5321B9054194D84DE /* Parse */; - targetProxy = 2B44CF1EB2D215F539DD3C9096A747BF /* PBXContainerItemProxy */; + name = ISO8601DateFormatterValueTransformer; + target = 080AF914A09167DB5759A733917B840F /* ISO8601DateFormatterValueTransformer */; + targetProxy = A1E2F802EE663F8DD0A6BE0FFD496B02 /* PBXContainerItemProxy */; }; - A9D82D4BD1C13674DA7E9AE702119B04 /* PBXTargetDependency */ = { + 9A5270C4EC04E2D2E511996DDEDD58C5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FBSDKCoreKit; - target = 38C996FDE9DF6549D8681DED0DF37B6D /* FBSDKCoreKit */; - targetProxy = 180401446108A5AAAA06D984EB79CE8E /* PBXContainerItemProxy */; + target = 81D7FE2A0FD9258247B1232874B837DA /* FBSDKCoreKit */; + targetProxy = D38BE89B6FB2301AC09AD26156B819E8 /* PBXContainerItemProxy */; }; - B5E2B6580F9E52AB6B90083B1EE38486 /* PBXTargetDependency */ = { + AD57BFB78693C8FE8F933AF8EB6946C1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RKValueTransformers; - target = BE61E7AE076C01CBC74564E4084B550D /* RKValueTransformers */; - targetProxy = AA705DEA05C275BCCCAB7D4127377E6F /* PBXContainerItemProxy */; + name = SOCKit; + target = BEE18208B27447ADBC42B142637E5653 /* SOCKit */; + targetProxy = 976E4F9B0513141FCEA3BAB7C51C8A0B /* PBXContainerItemProxy */; }; - B61A4D1E2DD3FF9BD98C9F70D1A5671D /* PBXTargetDependency */ = { + B220F8A9EB48E9D10B8ABF5D4CBFEC84 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKLoginKit; - target = 4A563E15AD58F61DA31660DAC05A1819 /* FBSDKLoginKit */; - targetProxy = F6396DD99C4035C157C64A537AB51678 /* PBXContainerItemProxy */; + name = ISO8601DateFormatterValueTransformer; + target = 080AF914A09167DB5759A733917B840F /* ISO8601DateFormatterValueTransformer */; + targetProxy = 2CBE7910D2EC2D855C213F7D17AA7055 /* PBXContainerItemProxy */; }; - C1C363F76C8B8310F81BD7794F18CF24 /* PBXTargetDependency */ = { + B724649E56667B1CEB768EA1EBEFD8D4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = ISO8601DateFormatterValueTransformer; - target = 0EC7816D6AB1C0830108FC61D968488B /* ISO8601DateFormatterValueTransformer */; - targetProxy = E7F7CD721264BF80F21FE180ACFBC031 /* PBXContainerItemProxy */; + name = Bolts; + target = A48601FEE4437A924848DB48369BA809 /* Bolts */; + targetProxy = A94178143C22B923AD7FB31DE66228B0 /* PBXContainerItemProxy */; }; - D435EE953A395D8BA469CF50BAFFB40C /* PBXTargetDependency */ = { + C055826DE32AA06E3C4C842D66DC51E3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RestKit; - target = 5A89C7736981130B2EEED27805B7A855 /* RestKit */; - targetProxy = FDC24DB1B6A19A6B4BE393C5E2FC474B /* PBXContainerItemProxy */; + name = AFNetworking; + target = 61681BF0E677683490353B846C61A129 /* AFNetworking */; + targetProxy = 52E7C227327DB7F4EF156454BC74CAA4 /* PBXContainerItemProxy */; }; - D947B19C1CDA42B26F803FECA6935D92 /* PBXTargetDependency */ = { + CD37FC7A32B6A7B6629457EB67E933A8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RKValueTransformers; - target = BE61E7AE076C01CBC74564E4084B550D /* RKValueTransformers */; - targetProxy = A15359A20CD2F146F3CBD2E67023AD73 /* PBXContainerItemProxy */; + name = FBSDKCoreKit; + target = 81D7FE2A0FD9258247B1232874B837DA /* FBSDKCoreKit */; + targetProxy = F2525FB3B5405DC4B1BAF37F01F4D2AB /* PBXContainerItemProxy */; }; - D96E033200C99E888BB967DAAFA162FD /* PBXTargetDependency */ = { + E36E70253F374409C8D0E675B83B8B9A /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = AFNetworking; - target = CDF340FD050E9DF3676FDDB5D9FAB6D4 /* AFNetworking */; - targetProxy = 49B938426B06493DDBE9DBA4CC8167EF /* PBXContainerItemProxy */; + name = RKValueTransformers; + target = C47E006176ABF4755350B88C088C3F0D /* RKValueTransformers */; + targetProxy = 7FC4D59C7661F1F90B9637A4AA76565C /* PBXContainerItemProxy */; }; - E48AE3EDCEF605AF86E58F2AB34B3720 /* PBXTargetDependency */ = { + F5A0B5F2A7452B83268CDBAF04660413 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = AFNetworking; - target = CDF340FD050E9DF3676FDDB5D9FAB6D4 /* AFNetworking */; - targetProxy = 6B8FF1AF77E489E69AEB579F435326F7 /* PBXContainerItemProxy */; + name = RKValueTransformers; + target = C47E006176ABF4755350B88C088C3F0D /* RKValueTransformers */; + targetProxy = 349ED4A030A17CB37F5BFC4BE863A6F8 /* PBXContainerItemProxy */; }; - F9718E79C8C9C0AD0A55FB991F0E078D /* PBXTargetDependency */ = { + F7688FE10814D6B183CC1B9B3F9F7B56 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Bolts; - target = F70BF3EA9E69856AC06EB0A27F8F7F5E /* Bolts */; - targetProxy = 5386A145A9F17749EC933FDD8A74359E /* PBXContainerItemProxy */; + target = A48601FEE4437A924848DB48369BA809 /* Bolts */; + targetProxy = 5F9ACE740BBE74B9EF18ED10D402EBFB /* PBXContainerItemProxy */; }; - FE40B3843EDCA5F39E824ADC4B3FCC8B /* PBXTargetDependency */ = { + FA73EB3C4B3C4CCF6F4BE44B47E79A7E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RKValueTransformers; - target = BE61E7AE076C01CBC74564E4084B550D /* RKValueTransformers */; - targetProxy = 29A6349C83120662A53BAEEE2F9ABC4C /* PBXContainerItemProxy */; + name = Bolts; + target = A48601FEE4437A924848DB48369BA809 /* Bolts */; + targetProxy = 753FA91ACDD9D25D657204E0ADBB6FE3 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 062F6E0FF7EF17C19EABA35DE8FA45D7 /* Release */ = { + 075D18FF81784FE54E8A3A866A441FC2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3CAC9E985D7035114C36728704534B05 /* RestKit-Private.xcconfig */; + baseConfigurationReference = 9B40691DF0E6BC33074AC41A275DB164 /* FBSDKLoginKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/RestKit/RestKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Release; + name = Debug; }; - 151C1F059AC71919A74567CABC6C249F /* Release */ = { + 0BEB7BFC34D620410E8215AD748D2773 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 325246AADDC0F382E655933B585A347B /* Bolts-Private.xcconfig */; + baseConfigurationReference = E601C5D0D43FA69BCDE6E2ECFF6B02CC /* FBSDKCoreKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Release; }; - 1613D299E6C12EC750981F72447F2D39 /* Release */ = { + 0FA2BBAFEC75EEB3BB81C9E2C428F353 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AB5F89C2FF338EB3D8A14F31581D0B13 /* TransitionKit-Private.xcconfig */; + baseConfigurationReference = 9DC5F129D162F601A2EB31F819BCC00D /* Parse.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/TransitionKit/TransitionKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Release; }; - 17883521419BF92032816EF185EDA158 /* Release */ = { + 209E94899E6B4FE507E0CF7D788E0268 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DD494B04A84F285624644430E1FF3A0 /* RKValueTransformers-Private.xcconfig */; + baseConfigurationReference = 7E54575097CC4D7273F152CBCC1DE9FB /* FBSDKShareKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Release; }; - 237D171C7043338D923750109E6D9759 /* Release */ = { + 2A2525A28950F774C68E99A4ADD025E0 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5AF094AA3C85E325892EB2AE88799BB8 /* FBSDKLoginKit-Private.xcconfig */; + baseConfigurationReference = 389CEDD0DDA1F1BB4ACF1258BBC1A500 /* FoldingTabBar.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FoldingTabBar/FoldingTabBar-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Release; + name = Debug; }; - 28CCE120D48EBB362AE18440B3B88DF9 /* Debug */ = { + 310F83012AE9AC7B9E295F347FCD0607 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EBB6883C7F57FAA6E0F4E3A4DCD0836A /* FBSDKShareKit-Private.xcconfig */; + baseConfigurationReference = A4F05EE46BF909C52D434101394A8D68 /* SOCKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/SOCKit/SOCKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Debug; }; - 3EC9E1A9512F9D544D5BDC1096E61BFA /* Release */ = { + 33B47AD17A7B9B8939CA59D91757B215 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E0CC0033498B3D96CF358C75CCE120A9 /* Pods.release.xcconfig */; + baseConfigurationReference = 78A46E6623C4E1A7D565B7AC5751DE2C /* RKValueTransformers.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Release; }; - 47087391176B22F53520485DF012A7E9 /* Debug */ = { + 3CDB0026CDE3D1B62A37670AE864CD4D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3DABBC1078165E5DDDEFA2E7472C5559 /* AFNetworking-Private.xcconfig */; + baseConfigurationReference = 4313BE461C6D0AB4AEFF645FBD735809 /* ISO8601DateFormatterValueTransformer.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; - 490EA856AD7C65DA7CC02C9B4964E857 /* Debug */ = { + 40EA4AFA7E36163B0B79EC293646FE2B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 241767740C7A36BC4016F69B2DFCDFF5 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */; + baseConfigurationReference = 6AB27F170175D24AE67E7FE4DE679D4B /* TransitionKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/TransitionKit/TransitionKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; - 57E301D7C33C28BED6841389AB36D92F /* Debug */ = { + 51CCDBF9990FA326F739800A607857AD /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AB5F89C2FF338EB3D8A14F31581D0B13 /* TransitionKit-Private.xcconfig */; + baseConfigurationReference = 98C98CDFB3F20F2925F6CD1F141BB14F /* Pods.release.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/TransitionKit/TransitionKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MACH_O_TYPE = staticlib; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; 5CE5176205D06FF3FFE3DDDA9291E44B /* Debug */ = { isa = XCBuildConfiguration; @@ -4744,53 +4891,41 @@ }; name = Debug; }; - 6072A1D28F5C8475C056B0CEDF5B764B /* Debug */ = { + 658C1A12EF15301743B29B1908F2C375 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2D582428208099E80BE466E2940ED2D0 /* Pods.debug.xcconfig */; + baseConfigurationReference = E601C5D0D43FA69BCDE6E2ECFF6B02CC /* FBSDKCoreKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Debug; }; - 6970934B86C31043F2B7B6B72B11FB54 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EBB6883C7F57FAA6E0F4E3A4DCD0836A /* FBSDKShareKit-Private.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; - 6BBE9279CF790A4F67AFFC5416B9BF58 /* Release */ = { + 704A9D1ACE8BE44C524946CD091EF5F4 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F6E9E4399B6F13E900FC0A4DACCD4E15 /* Parse-Private.xcconfig */; + baseConfigurationReference = 9DC5F129D162F601A2EB31F819BCC00D /* Parse.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Release; + name = Debug; }; 74857149DC1E0D599B8A01A78349A926 /* Release */ = { isa = XCBuildConfiguration; @@ -4826,177 +4961,252 @@ }; name = Release; }; - 76CC7D06EE9F3344B775E7CBFB3B7A0B /* Debug */ = { + 84F9D6817269FC6C1B544D2ACAB1637D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3CAC9E985D7035114C36728704534B05 /* RestKit-Private.xcconfig */; + baseConfigurationReference = 412828DEC5B3F3C978D90B000561AC08 /* RestKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/RestKit/RestKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; - 8D20C2CFA6C2516F2C933D6F81D61C8C /* Debug */ = { + 8A2E88FDA46F4E88E1259304BB1B260E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5AF094AA3C85E325892EB2AE88799BB8 /* FBSDKLoginKit-Private.xcconfig */; + baseConfigurationReference = A4F05EE46BF909C52D434101394A8D68 /* SOCKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/SOCKit/SOCKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; - AB6BDA4144F0FBF7B6EC25762481DEF5 /* Debug */ = { + 8EAB94A02D205E4A7347D989269FA52D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DD494B04A84F285624644430E1FF3A0 /* RKValueTransformers-Private.xcconfig */; + baseConfigurationReference = 4313BE461C6D0AB4AEFF645FBD735809 /* ISO8601DateFormatterValueTransformer.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Debug; }; - ACE9AD4DF5FBD57DBEA4912A088B254B /* Debug */ = { + 8FB2FB45C292505173E27DB11AAAB26B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 325246AADDC0F382E655933B585A347B /* Bolts-Private.xcconfig */; + baseConfigurationReference = 9B40691DF0E6BC33074AC41A275DB164 /* FBSDKLoginKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + ACB789C3CA49E71A9A37C7BA1E12D67A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 412828DEC5B3F3C978D90B000561AC08 /* RestKit.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/RestKit/RestKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Debug; }; - BB47AF4B4F2EB227EFE5DD25F74ABB44 /* Release */ = { + C8703C001541D98EBDDB5A3A2B8B0852 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3DABBC1078165E5DDDEFA2E7472C5559 /* AFNetworking-Private.xcconfig */; + baseConfigurationReference = 389CEDD0DDA1F1BB4ACF1258BBC1A500 /* FoldingTabBar.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FoldingTabBar/FoldingTabBar-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Release; }; - C85D73546CD52F1C1A52C397E1178D3F /* Release */ = { + CA0E04A18B30F1C108D0F841BF1407CE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A8FA5F2052C43B6E4060DAF60265E858 /* SOCKit-Private.xcconfig */; + baseConfigurationReference = A5D82F87A7D9B6D1BA5B926D5CC28320 /* AFNetworking.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SOCKit/SOCKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Release; }; - CF3A527F185607546641C5490F6977B2 /* Debug */ = { + CE7040F2AD1B940DD8D73BF7BFFCA65A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A8FA5F2052C43B6E4060DAF60265E858 /* SOCKit-Private.xcconfig */; + baseConfigurationReference = A5D82F87A7D9B6D1BA5B926D5CC28320 /* AFNetworking.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SOCKit/SOCKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Debug; }; - D6D8CA082021CFD99521942EB7B1C6CC /* Debug */ = { + D2F8E494AB4D6A0498F75F99A59F171D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F6E9E4399B6F13E900FC0A4DACCD4E15 /* Parse-Private.xcconfig */; + baseConfigurationReference = 78A46E6623C4E1A7D565B7AC5751DE2C /* RKValueTransformers.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Debug; }; - EB53A5B4F068449E8B33C3232AEA1B37 /* Release */ = { + D689AF640E2BF5F8E3A205170BDAF0EA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9CD8231FE026505A5E9872616FAABDD9 /* FBSDKCoreKit-Private.xcconfig */; + baseConfigurationReference = 4E762F23EC34ED4A6FF3312D84E33A40 /* Pods.debug.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; + MACH_O_TYPE = staticlib; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Release; + name = Debug; }; - F59359E3686B534894DBB9EC3B56C1B5 /* Debug */ = { + E62FA63D299CD84D275CC054B507D56F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9CD8231FE026505A5E9872616FAABDD9 /* FBSDKCoreKit-Private.xcconfig */; + baseConfigurationReference = 6AB27F170175D24AE67E7FE4DE679D4B /* TransitionKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/TransitionKit/TransitionKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Debug; }; - F83EB62BBDB1895EDFAA2205951A52A3 /* Release */ = { + E6F99486C4730AA5797898005863FB56 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 241767740C7A36BC4016F69B2DFCDFF5 /* ISO8601DateFormatterValueTransformer-Private.xcconfig */; + baseConfigurationReference = 7E54575097CC4D7273F152CBCC1DE9FB /* FBSDKShareKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + E8E3ABDAF12C8378694EE61A9091F787 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6B6718A558812C369FEAEEE13F58304E /* Bolts.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + F5526807BF2C14D6BD59E488B888E604 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6B6718A558812C369FEAEEE13F58304E /* Bolts.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; @@ -5005,119 +5215,128 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 0A0B770E5D4A040A278256FB0958784D /* Build configuration list for PBXNativeTarget "SOCKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 5CE5176205D06FF3FFE3DDDA9291E44B /* Debug */, - 74857149DC1E0D599B8A01A78349A926 /* Release */, + 310F83012AE9AC7B9E295F347FCD0607 /* Debug */, + 8A2E88FDA46F4E88E1259304BB1B260E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 107C08C918B3D3433F2E017FB4FDB128 /* Build configuration list for PBXNativeTarget "Parse" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 704A9D1ACE8BE44C524946CD091EF5F4 /* Debug */, + 0FA2BBAFEC75EEB3BB81C9E2C428F353 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 552C7D808ECBB92F668A2DB3200A4D1C /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */ = { + 1B423BA565331874236054257C35AAEB /* Build configuration list for PBXNativeTarget "RestKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - F59359E3686B534894DBB9EC3B56C1B5 /* Debug */, - EB53A5B4F068449E8B33C3232AEA1B37 /* Release */, + ACB789C3CA49E71A9A37C7BA1E12D67A /* Debug */, + 84F9D6817269FC6C1B544D2ACAB1637D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 5F01894250044CF47766C321EA913C84 /* Build configuration list for PBXNativeTarget "RestKit" */ = { + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 76CC7D06EE9F3344B775E7CBFB3B7A0B /* Debug */, - 062F6E0FF7EF17C19EABA35DE8FA45D7 /* Release */, + 5CE5176205D06FF3FFE3DDDA9291E44B /* Debug */, + 74857149DC1E0D599B8A01A78349A926 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 683CE3AABFE44522F37E2A109C346787 /* Build configuration list for PBXNativeTarget "Pods" */ = { + 3D9BA71030A144DE354FA087AE0AC89C /* Build configuration list for PBXNativeTarget "FoldingTabBar" */ = { isa = XCConfigurationList; buildConfigurations = ( - 6072A1D28F5C8475C056B0CEDF5B764B /* Debug */, - 3EC9E1A9512F9D544D5BDC1096E61BFA /* Release */, + 2A2525A28950F774C68E99A4ADD025E0 /* Debug */, + C8703C001541D98EBDDB5A3A2B8B0852 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6EC6BD2999BC540B28D524C6412A861E /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { + 58770B39DB702F4BF658BBDB3D144297 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 47087391176B22F53520485DF012A7E9 /* Debug */, - BB47AF4B4F2EB227EFE5DD25F74ABB44 /* Release */, + E6F99486C4730AA5797898005863FB56 /* Debug */, + 209E94899E6B4FE507E0CF7D788E0268 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 98311CD083858EB460528FDAF09B4351 /* Build configuration list for PBXNativeTarget "RKValueTransformers" */ = { + 5F071AF9EBB9B88FCF6AD4FC486502B8 /* Build configuration list for PBXNativeTarget "RKValueTransformers" */ = { isa = XCConfigurationList; buildConfigurations = ( - AB6BDA4144F0FBF7B6EC25762481DEF5 /* Debug */, - 17883521419BF92032816EF185EDA158 /* Release */, + D2F8E494AB4D6A0498F75F99A59F171D /* Debug */, + 33B47AD17A7B9B8939CA59D91757B215 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9C5223A409DF8B195DDC90B0247CD9E3 /* Build configuration list for PBXNativeTarget "Bolts" */ = { + 6E61F3AE6B149150E949E22581757F27 /* Build configuration list for PBXNativeTarget "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - ACE9AD4DF5FBD57DBEA4912A088B254B /* Debug */, - 151C1F059AC71919A74567CABC6C249F /* Release */, + D689AF640E2BF5F8E3A205170BDAF0EA /* Debug */, + 51CCDBF9990FA326F739800A607857AD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9E125BC8CF613466796A1A3602F5CBD5 /* Build configuration list for PBXNativeTarget "Parse" */ = { + 9852559B1969F150F04DFA5F99B41CCE /* Build configuration list for PBXNativeTarget "TransitionKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - D6D8CA082021CFD99521942EB7B1C6CC /* Debug */, - 6BBE9279CF790A4F67AFFC5416B9BF58 /* Release */, + E62FA63D299CD84D275CC054B507D56F /* Debug */, + 40EA4AFA7E36163B0B79EC293646FE2B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BE9B407615E85CA189C0133A977CB6E4 /* Build configuration list for PBXNativeTarget "SOCKit" */ = { + 9B712D281AB5A267FCA1AC12339CC749 /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { isa = XCConfigurationList; buildConfigurations = ( - CF3A527F185607546641C5490F6977B2 /* Debug */, - C85D73546CD52F1C1A52C397E1178D3F /* Release */, + CE7040F2AD1B940DD8D73BF7BFFCA65A /* Debug */, + CA0E04A18B30F1C108D0F841BF1407CE /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D0CD18500801AD4B06991D66CCFE7ED7 /* Build configuration list for PBXNativeTarget "ISO8601DateFormatterValueTransformer" */ = { + 9D5140DAF776FF373AAB7D42B9292675 /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 490EA856AD7C65DA7CC02C9B4964E857 /* Debug */, - F83EB62BBDB1895EDFAA2205951A52A3 /* Release */, + 658C1A12EF15301743B29B1908F2C375 /* Debug */, + 0BEB7BFC34D620410E8215AD748D2773 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E177E6414A58969A070CFA1A4938E1C6 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */ = { + CA34C800AB38CCECE78A9E7D6EB38344 /* Build configuration list for PBXNativeTarget "Bolts" */ = { isa = XCConfigurationList; buildConfigurations = ( - 28CCE120D48EBB362AE18440B3B88DF9 /* Debug */, - 6970934B86C31043F2B7B6B72B11FB54 /* Release */, + E8E3ABDAF12C8378694EE61A9091F787 /* Debug */, + F5526807BF2C14D6BD59E488B888E604 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - EC5884D823C95D73657B127F496ED2E3 /* Build configuration list for PBXNativeTarget "TransitionKit" */ = { + D698E21AD6E8699A3BDEA8BF928C6677 /* Build configuration list for PBXNativeTarget "ISO8601DateFormatterValueTransformer" */ = { isa = XCConfigurationList; buildConfigurations = ( - 57E301D7C33C28BED6841389AB36D92F /* Debug */, - 1613D299E6C12EC750981F72447F2D39 /* Release */, + 8EAB94A02D205E4A7347D989269FA52D /* Debug */, + 3CDB0026CDE3D1B62A37670AE864CD4D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - FBA64B3614CC52E9FFFD42D7968A2621 /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */ = { + D73F005C56A801E3CEDE801CC9ECFC4A /* Build configuration list for PBXNativeTarget "FBSDKLoginKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8D20C2CFA6C2516F2C933D6F81D61C8C /* Debug */, - 237D171C7043338D923750109E6D9759 /* Release */, + 075D18FF81784FE54E8A3A866A441FC2 /* Debug */, + 8FB2FB45C292505173E27DB11AAAB26B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-Private.xcconfig deleted file mode 100644 index 926c13c..0000000 --- a/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking-Private.xcconfig +++ /dev/null @@ -1,6 +0,0 @@ -#include "AFNetworking.xcconfig" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AFNetworking" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -OTHER_LDFLAGS = ${AFNETWORKING_OTHER_LDFLAGS} -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig b/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig index b0b2d52..1f8ff58 100644 --- a/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig @@ -1 +1,5 @@ -AFNETWORKING_OTHER_LDFLAGS = -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" \ No newline at end of file +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AFNetworking" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +OTHER_LDFLAGS = -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig deleted file mode 100644 index ec077d8..0000000 --- a/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts-Private.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -#include "Bolts.xcconfig" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Bolts" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts.xcconfig index e69de29..b004e8f 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts.xcconfig @@ -0,0 +1,4 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Bolts" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig deleted file mode 100644 index dacd8fe..0000000 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit-Private.xcconfig +++ /dev/null @@ -1,6 +0,0 @@ -#include "FBSDKCoreKit.xcconfig" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppEvents" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/AppLink" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Base64" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/BridgeAPI/ProtocolVersions" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Cryptography" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ErrorRecovery" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/Network" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/ServerConfiguration" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/TokenCaching" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/UI" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit/FBSDKCoreKit/WebDialog" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -OTHER_LDFLAGS = ${FBSDKCOREKIT_OTHER_LDFLAGS} -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig index a71de60..a0600cb 100644 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig @@ -1 +1,5 @@ -FBSDKCOREKIT_OTHER_LDFLAGS = -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" \ No newline at end of file +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +OTHER_LDFLAGS = -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig deleted file mode 100644 index 209d18a..0000000 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit-Private.xcconfig +++ /dev/null @@ -1,6 +0,0 @@ -#include "FBSDKLoginKit.xcconfig" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -OTHER_LDFLAGS = ${FBSDKLOGINKIT_OTHER_LDFLAGS} -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig index 845ac71..c0a1aa7 100644 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig @@ -1 +1,5 @@ -FBSDKLOGINKIT_OTHER_LDFLAGS = -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" \ No newline at end of file +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +OTHER_LDFLAGS = -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig deleted file mode 100644 index 163b98e..0000000 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit-Private.xcconfig +++ /dev/null @@ -1,6 +0,0 @@ -#include "FBSDKShareKit.xcconfig" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKShareKit" "${PODS_ROOT}/Headers/Private/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -OTHER_LDFLAGS = ${FBSDKSHAREKIT_OTHER_LDFLAGS} -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig index 7dcc632..a9a898f 100644 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig @@ -1 +1,5 @@ -FBSDKSHAREKIT_OTHER_LDFLAGS = -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" \ No newline at end of file +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKShareKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +OTHER_LDFLAGS = -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar-dummy.m b/Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar-dummy.m new file mode 100644 index 0000000..0b0eeb2 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar-dummy.m @@ -0,0 +1,5 @@ +#import <Foundation/Foundation.h> +@interface PodsDummy_FoldingTabBar : NSObject +@end +@implementation PodsDummy_FoldingTabBar +@end diff --git a/Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar-prefix.pch b/Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar-prefix.pch new file mode 100644 index 0000000..aa992a4 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import <UIKit/UIKit.h> +#endif + diff --git a/Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar.xcconfig new file mode 100644 index 0000000..4197705 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar.xcconfig @@ -0,0 +1,5 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FoldingTabBar" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +OTHER_LDFLAGS = -framework "QuartzCore" -framework "UIKit" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-Private.xcconfig deleted file mode 100644 index 7752c7a..0000000 --- a/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-Private.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -#include "ISO8601DateFormatterValueTransformer.xcconfig" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.xcconfig b/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.xcconfig index e69de29..e8ce69a 100644 --- a/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.xcconfig @@ -0,0 +1,4 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Parse/Parse-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Parse/Parse-Private.xcconfig deleted file mode 100644 index 98561b5..0000000 --- a/Unit-2-Journal/Pods/Target Support Files/Parse/Parse-Private.xcconfig +++ /dev/null @@ -1,6 +0,0 @@ -#include "Parse.xcconfig" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Parse" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -OTHER_LDFLAGS = ${PARSE_OTHER_LDFLAGS} -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Parse/Parse.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Parse/Parse.xcconfig index 4b7b805..48dc57a 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Parse/Parse.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/Parse/Parse.xcconfig @@ -1 +1,5 @@ -PARSE_OTHER_LDFLAGS = -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -weak_framework "Accounts" -weak_framework "Social" \ No newline at end of file +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Parse" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +OTHER_LDFLAGS = -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -weak_framework "Accounts" -weak_framework "Social" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown index 3bdf30d..e79993e 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown @@ -120,6 +120,32 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## FoldingTabBar + +The MIT License (MIT) + +Copyright (c) 2015 Yalantis + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + ## ISO8601DateFormatterValueTransformer Apache License diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist index b0fd20a..9ce749a 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist @@ -151,6 +151,36 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. <key>Type</key> <string>PSGroupSpecifier</string> </dict> + <dict> + <key>FooterText</key> + <string>The MIT License (MIT) + +Copyright (c) 2015 Yalantis + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +</string> + <key>Title</key> + <string>FoldingTabBar</string> + <key>Type</key> + <string>PSGroupSpecifier</string> + </dict> <dict> <key>FooterText</key> <string>Apache License diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-frameworks.sh b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-frameworks.sh new file mode 100755 index 0000000..6f76344 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-frameworks.sh @@ -0,0 +1,84 @@ +#!/bin/sh +set -e + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + # use filter instead of exclude so missing patterns dont' throw errors + echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identitiy + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\"" + /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current file + archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + stripped="" + for arch in $archs; do + if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi +} + diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-resources.sh b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-resources.sh index a0fbc2e..bac2d3a 100755 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-resources.sh +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-resources.sh @@ -66,7 +66,7 @@ fi mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]]; then +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" fi diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig index a160052..de56752 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" -isystem "${PODS_ROOT}/Headers/Public/Parse" -isystem "${PODS_ROOT}/Headers/Public/RKValueTransformers" -isystem "${PODS_ROOT}/Headers/Public/RestKit" -isystem "${PODS_ROOT}/Headers/Public/RestKit/Network" -isystem "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" -isystem "${PODS_ROOT}/Headers/Public/RestKit/Support" -isystem "${PODS_ROOT}/Headers/Public/RestKit/Testing" -isystem "${PODS_ROOT}/Headers/Public/SOCKit" -isystem "${PODS_ROOT}/Headers/Public/TransitionKit" -isystem "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -l"ISO8601DateFormatterValueTransformer" -l"Parse" -l"RKValueTransformers" -l"RestKit" -l"SOCKit" -l"TransitionKit" -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FoldingTabBar" -isystem "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" -isystem "${PODS_ROOT}/Headers/Public/Parse" -isystem "${PODS_ROOT}/Headers/Public/RKValueTransformers" -isystem "${PODS_ROOT}/Headers/Public/RestKit" -isystem "${PODS_ROOT}/Headers/Public/SOCKit" -isystem "${PODS_ROOT}/Headers/Public/TransitionKit" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -l"FoldingTabBar" -l"ISO8601DateFormatterValueTransformer" -l"Parse" -l"RKValueTransformers" -l"RestKit" -l"SOCKit" -l"TransitionKit" -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig index a160052..de56752 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" -isystem "${PODS_ROOT}/Headers/Public/Parse" -isystem "${PODS_ROOT}/Headers/Public/RKValueTransformers" -isystem "${PODS_ROOT}/Headers/Public/RestKit" -isystem "${PODS_ROOT}/Headers/Public/RestKit/Network" -isystem "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" -isystem "${PODS_ROOT}/Headers/Public/RestKit/Support" -isystem "${PODS_ROOT}/Headers/Public/RestKit/Testing" -isystem "${PODS_ROOT}/Headers/Public/SOCKit" -isystem "${PODS_ROOT}/Headers/Public/TransitionKit" -isystem "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -l"ISO8601DateFormatterValueTransformer" -l"Parse" -l"RKValueTransformers" -l"RestKit" -l"SOCKit" -l"TransitionKit" -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FoldingTabBar" -isystem "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" -isystem "${PODS_ROOT}/Headers/Public/Parse" -isystem "${PODS_ROOT}/Headers/Public/RKValueTransformers" -isystem "${PODS_ROOT}/Headers/Public/RestKit" -isystem "${PODS_ROOT}/Headers/Public/SOCKit" -isystem "${PODS_ROOT}/Headers/Public/TransitionKit" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -l"FoldingTabBar" -l"ISO8601DateFormatterValueTransformer" -l"Parse" -l"RKValueTransformers" -l"RestKit" -l"SOCKit" -l"TransitionKit" -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-Private.xcconfig deleted file mode 100644 index 1e7eaa9..0000000 --- a/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers-Private.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -#include "RKValueTransformers.xcconfig" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RKValueTransformers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers.xcconfig b/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers.xcconfig index e69de29..a045914 100644 --- a/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers.xcconfig @@ -0,0 +1,4 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RKValueTransformers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-Private.xcconfig deleted file mode 100644 index 50069d4..0000000 --- a/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit-Private.xcconfig +++ /dev/null @@ -1,6 +0,0 @@ -#include "RestKit.xcconfig" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RestKit" "${PODS_ROOT}/Headers/Private/RestKit/Network" "${PODS_ROOT}/Headers/Private/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Private/RestKit/Support" "${PODS_ROOT}/Headers/Private/RestKit/Testing" "${PODS_ROOT}/Headers/Private/Vendor/LibComponentLogging/Core" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -OTHER_LDFLAGS = ${RESTKIT_OTHER_LDFLAGS} -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit.xcconfig index 65ed0d2..230f1c5 100644 --- a/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit.xcconfig @@ -1 +1,5 @@ -RESTKIT_OTHER_LDFLAGS = -framework "CFNetwork" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" \ No newline at end of file +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RestKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +OTHER_LDFLAGS = -framework "CFNetwork" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-Private.xcconfig deleted file mode 100644 index 42b6200..0000000 --- a/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit-Private.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -#include "SOCKit.xcconfig" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SOCKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit.xcconfig index e69de29..abd8c7e 100644 --- a/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit.xcconfig @@ -0,0 +1,4 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SOCKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-Private.xcconfig b/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-Private.xcconfig deleted file mode 100644 index b8f7e46..0000000 --- a/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit-Private.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -#include "TransitionKit.xcconfig" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/TransitionKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/RestKit/Network" "${PODS_ROOT}/Headers/Public/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/Public/RestKit/Support" "${PODS_ROOT}/Headers/Public/RestKit/Testing" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/Vendor/LibComponentLogging/Core" -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit.xcconfig index e69de29..0e2f9d3 100644 --- a/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit.xcconfig @@ -0,0 +1,4 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/TransitionKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 0d6f44e..0f6c150 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 4D7FE2941BCC12050036E58E /* TabBarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7FE2931BCC12050036E58E /* TabBarViewController.m */; settings = {ASSET_TAGS = (); }; }; 4DCBE1321BC98EF90075BA2C /* JournalMainCollectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */; settings = {ASSET_TAGS = (); }; }; 4DCBE13C1BC9943D0075BA2C /* big_nerd_ranch.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1331BC9943D0075BA2C /* big_nerd_ranch.png */; settings = {ASSET_TAGS = (); }; }; 4DCBE13D1BC9943D0075BA2C /* destroyer.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1341BC9943D0075BA2C /* destroyer.png */; settings = {ASSET_TAGS = (); }; }; @@ -38,6 +39,8 @@ /* Begin PBXFileReference section */ 1F41A29CEEC52ED6A148CCE5 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = "<group>"; }; 2BC0A6490F88476E5C31E3B1 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = "<group>"; }; + 4D7FE2921BCC12050036E58E /* TabBarViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TabBarViewController.h; sourceTree = "<group>"; }; + 4D7FE2931BCC12050036E58E /* TabBarViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TabBarViewController.m; sourceTree = "<group>"; }; 4DCBE1301BC98EF90075BA2C /* JournalMainCollectionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalMainCollectionViewController.h; sourceTree = "<group>"; }; 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalMainCollectionViewController.m; sourceTree = "<group>"; }; 4DCBE1331BC9943D0075BA2C /* big_nerd_ranch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = big_nerd_ranch.png; sourceTree = "<group>"; }; @@ -187,6 +190,8 @@ 4DCBE14C1BC9ADE00075BA2C /* WishListTableViewController.m */, 4DCBE14E1BC9BD800075BA2C /* ViewCompletedEntryViewController.h */, 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */, + 4D7FE2921BCC12050036E58E /* TabBarViewController.h */, + 4D7FE2931BCC12050036E58E /* TabBarViewController.m */, ); name = ViewControllers; sourceTree = "<group>"; @@ -214,6 +219,7 @@ 9A2FFC271BC84BF100E880D3 /* Frameworks */, 9A2FFC281BC84BF100E880D3 /* Resources */, 7C374323F34F7199EEEEB87E /* Copy Pods Resources */, + 9B427652685F9EFC62D0C14E /* Embed Pods Frameworks */, ); buildRules = ( ); @@ -310,6 +316,21 @@ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; showEnvVarsInLog = 0; }; + 9B427652685F9EFC62D0C14E /* Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -319,6 +340,7 @@ files = ( 9A2FFC321BC84BF200E880D3 /* AppDelegate.m in Sources */, 9A34656D1BCACDF40049337C /* iTunesSearchResult.m in Sources */, + 4D7FE2941BCC12050036E58E /* TabBarViewController.m in Sources */, 4DCBE14A1BC9ADAE0075BA2C /* CreateJournalEntryViewController.m in Sources */, 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */, 4DCBE1321BC98EF90075BA2C /* JournalMainCollectionViewController.m in Sources */, diff --git a/Unit-2-Journal/Unit-2-Journal/.DS_Store b/Unit-2-Journal/Unit-2-Journal/.DS_Store index 6d23ed7026c37745946fbb756272a924bb2baf1d..e24fe8b4f79596311dfe00470af89e836580a0b2 100644 GIT binary patch delta 69 zcmZn(XbG6$XEU^hRb=42j$=bQBfS(!G8Tw!Cj_c=0IQQC$tH$TNCrL-iOf#DKR ZXtSd9GnS1F9E_XU6@Ig9<`QFK1^^=c7Fz%S delta 179 zcmZn(XbG6$F8U^hRb&SV~e=Zt)l8wA7|>o#8y&|p$kW^iUGVn}63WGDfWUJUsR zr9gfjke|cg3ZzSbyvoTFMP(W5CT|oMGh&$W9}E~kfE3LKrNx*SIX1r)y3fXJ_vPZ` a^OEjR+Gca8)GC(E><YhGHvbZ4Vg>-R1U0Sz diff --git a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m index edcd22c..a9a2eb1 100644 --- a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m +++ b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m @@ -12,6 +12,11 @@ #import <Parse/Parse.h> #import "iTunesSearchResult.h" +//for custom tab bar: +#import "YALTabBarItem.h" //model +#import "YALFoldingTabBarController.h" //controller +#import "YALAnimatingTabBarConstants.h" //helpers + @interface AppDelegate () @end @@ -34,11 +39,55 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( clientKey:@"aohlSqEhCwaXtZbji5us0j97GNzemWqq3m3EJqwG"]; [iTunesSearchResult registerSubclass]; - + + [self setupYALTabBarController]; // setup tab bar controller return YES; } +#pragma mark - setup custom tab bar + +- (void)setupYALTabBarController { + YALFoldingTabBarController *tabBarController = (YALFoldingTabBarController *) self.window.rootViewController; + + //prepare leftBarItems + YALTabBarItem *item1 = [[YALTabBarItem alloc] initWithItemImage:[UIImage imageNamed:@"idea"] + leftItemImage:nil + rightItemImage:nil]; + + + YALTabBarItem *item2 = [[YALTabBarItem alloc] initWithItemImage:[UIImage imageNamed:@"add"] + leftItemImage:[UIImage imageNamed:@"idea"] + rightItemImage:[UIImage imageNamed:@"star"]]; + + tabBarController.leftBarItems = @[item1, item2]; + + //prepare rightBarItems + YALTabBarItem *item3 = [[YALTabBarItem alloc] initWithItemImage:[UIImage imageNamed:@"star"] + leftItemImage:nil + rightItemImage:nil]; + + + YALTabBarItem *item4 = [[YALTabBarItem alloc] initWithItemImage:[UIImage imageNamed:@"settings"] + leftItemImage:nil + rightItemImage:nil]; + + tabBarController.rightBarItems = @[item3, item4]; + + tabBarController.centerButtonImage = [UIImage imageNamed:@"plus"]; + + tabBarController.selectedIndex = 2; + + //customize tabBarView + tabBarController.tabBarView.extraTabBarItemHeight = YALExtraTabBarItemsDefaultHeight; + tabBarController.tabBarView.offsetForExtraTabBarItems = YALForExtraTabBarItemsDefaultOffset; + tabBarController.tabBarView.backgroundColor = [UIColor colorWithRed:0.0/255.0 green:0.0/255.0 blue:0.0/255.0 alpha:1]; + tabBarController.tabBarView.tabBarColor = [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1]; + tabBarController.tabBarViewHeight = YALTabBarViewDefaultHeight; + tabBarController.tabBarView.tabBarViewEdgeInsets = YALTabBarViewHDefaultEdgeInsets; + tabBarController.tabBarView.tabBarItemsEdgeInsets = YALTabBarViewItemsDefaultEdgeInsets; +} + - (void)applicationWillResignActive:(UIApplication *)application { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/AppIcon-1.appiconset/Contents.json b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/AppIcon-1.appiconset/Contents.json new file mode 100644 index 0000000..118c98f --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/AppIcon-1.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/add.imageset/Contents.json b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/add.imageset/Contents.json new file mode 100644 index 0000000..a625689 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/add.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "add.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/add.imageset/add.png b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/add.imageset/add.png new file mode 100644 index 0000000000000000000000000000000000000000..3d921ecbb5922a093d9131ba5ad4bd6c0a59d91a GIT binary patch literal 468 zcmV;_0W1EAP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0004-Nkl<Zc-pPi zO(+Cm9LMozm82BO#X(Mc!8%AOM~9WfVdLb$S;}RL+?A6Q4i3sq%0+VU6183uky>sJ zt6Y@4MC8QxX`V-qr)SLU%x--SyEFUyJ@cR0eG;NHuXfbq7*FPbM9kn?tfLOM=s+*7 zN>L!g_ml~IBZEcs=#r=fI{Xx)*0Db&Q3_=EE*_CY7YdG&d8CRh&@10ZR;@nkQ?h}T zVhVJ4IUdl5PoI)9Tw^3`fgX!Ag=IASQ!<Apq{9^GmG5BESm7or93}GHR&?VvsK6C2 z)Jj)zhD!9~L!Dct!{v#IfN(t)SNI@~jB(uv?}zpq{$D}R%4K-Y7*`%|cDP?bQ1}22 zjn8M%=?Zrhgc(aNY`9%e%veH&+XZWAMoZkW_!Y=sr+nlZ@f>&Mc0tmZz1%RiOA&4s z4684V<3e3YChAyR1xvzvmKW4L*i!doMqN>)aI+w<uHsU?ms{X8hH#IUDB-%G26w{S zv{P!On%o8tFcu|T7o>&v&-f+0jr+t<h!ScSRHF^&c#j)szkUGeG=s8IlR@|Z0000< KMNUMnLSTZQ`P1J3 literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/idea.imageset/Contents.json b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/idea.imageset/Contents.json new file mode 100644 index 0000000..786e343 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/idea.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "idea.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/idea.imageset/idea.png b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/idea.imageset/idea.png new file mode 100644 index 0000000000000000000000000000000000000000..e3250bebbb8a807ad91dbc66793a89a598e454b5 GIT binary patch literal 522 zcmV+l0`>igP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0005eNkl<Zc-pnp zO(>;N9LMovp}fq7A`Dqrc$rZ&X(m~)Kxvd>fiep<qf9BAyD?01XG6_GAt?(=QByQS z%%rT8Q1UioAtpqmW-(rt^F5t&o5#uHIo!v;KArpg@9q4$&vTxCgm~nNu>4&H%JnL1 z7jt?ID<B!YD8^T8>HafRVgW5Uen>zTeqa<qTpHiU-~$>^ieL8$h{YPZG34<t-y(oK zT-XMDL?-IJ?y;^h?4Z*&-~biaunfq>4AN`@(y@rAmYav_2!;6V74Q=Mc;V=!ARe3g zTArdmdecy?q8UqG0nagk97nG}sAF2CuP22%rpu1s{6vlTf0SJVqH!wJJMh=hFT;rb z{0840-^J-$lZb1t09jL*#emW8)@#7%cOV;e=0<J-^8Qcb74{wdF1@xpdL<Ya>e=nt z2FPl~I~3vEB_Lnls#?t7wu#p)`YhDQsBj5bM~_hB<ks>Eh{TCd$MVDoNW}`0?%Kd+ zT+8G4TBy<N43MMyn@|tew}4FD+wnU<z7N+%KMGI$3XpUE(CEu&5cDgc8rw!+j*>5a z1bo7KTp4{iQu@#qZh))=4C__a85;F^XW0hGk`J^=e;yP!2cc{I1Hm_288q!@8~^|S M07*qoM6N<$g81b1e*gdg literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/plus.imageset/Contents.json b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/plus.imageset/Contents.json new file mode 100644 index 0000000..efcc220 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/plus.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "plus.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/plus.imageset/plus.png b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/plus.imageset/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..e39dad6916016d0c4c3779c79e3688f2765fdf5d GIT binary patch literal 551 zcmV+?0@(eDP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0005*Nkl<Zc-rk& zOHKko5Ve8u3zN(SgwY5qK7jz<Ko5X{1X*$b!U;G4Comp>r4lvh9zB8l0_+rn1XgJH zBz(s4^)R{s1~5#b3oGe#(W$A|{pwXWWM>2O`FshLN|hpnaDpJvr55INxm-S9_bpi$ z;C8#CI-TwU33&j#N&tHp>gjYEt5&PotpEanKn_!AG#W+f_4*B6b2^=2gTZhO_qJFp zo@@o+_xtnM`BA6SakSg*23@mQEOx8a`h@id030g<faDH<hyZ4@*>1DhlmP%mc}xoc z9LGJwz5n|sPz1o^@kF&+Z5%GMBqoT#%24!%QCRX#Z!(!=sDz2sL}wxzOpt^=@5`J( zHeQ%nlAwr9IJ?mKX}8;blwuZaFc>t4!y!+7^nluAGVL#=gpeJUWe@dw{Uv^OD8L7j zzLZKO$GUp_#85j*;Q<ApTW+9OiUJ_-H-JbHin5ZTe!t%YO(I1`qfyN;%u0$Nni)l2 zuQ#F5XlRjFN>)Zit4!c|J}D-3xm@(dj02tdIsx5@<OkuiGAepUOkpmb`aOsygUd1d z`<?uM7i~<@{DT7k#VE>Qr=jt99I4f6;*$y0g`v7Dtlw?@WKs#^URnC+qd8*$-R{w+ pCN*P9N=y-2XrgqbQd#@A<rC6ObM}#Lc6a~)002ovPDHLkV1k;6^t=E7 literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/settings.imageset/Contents.json b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/settings.imageset/Contents.json new file mode 100644 index 0000000..77b2e1f --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/settings.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "settings.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/settings.imageset/settings.png b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/settings.imageset/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..351c00bc4c188af9af4a5de93c87d1bdecd70266 GIT binary patch literal 680 zcmV;Z0$2TsP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0007SNkl<Zc-p<z zYiN&A9KiA4_$!g7m_(8m=3cfXB{lDmJ8ve+G#jN{mTg`T!sMEeOUYeHNfHTrF(oBz zBKJ}AVlFS-mKyT?b$(C(<MBNEKPFCnYR@^(|M{JBe&@0*Nme@GGdkJxNAyVY!>oh> za&aB~?YSAF@wz<$*5fITdv#M$j!E`>4O?;9duJZ{qNc3?TkIn#+{I$_#wNVN3VUxC z`k)%`uowCGhBMd@6<{sqpa@^E1GDf0CvXst?cF>JUTp2>u^e4ci=#HeUjod;HjKh2 zs~d-V;u0KHvMm?2_S_BiSc!8{Q*_ws7Gz3ZOgVz@SQwWB?ZFEhO<kz17slA%x9}#^ zJ^?2&$eV%R0t^+m9CIxXS~`kLa;be-EYKmWwjOKgj%O&qOFw{aq5&9&5<I~wFQ~4p zv6$`kT1RshH&N-my9YTok_Twi04;cH6%VoBdJ=r-k+@Y8o|34xAvV%H>u`<+XqEI4 z5H3@&1QTQ0FJT`p#I(2mmjLg@?Z5`y7q=^)|HTxQVFZRF6|ACuR<TH2lKsT}X_9-2 z+sWG5rhl<a3(**SFdQJ;re`{CL`+GhjdohxM*9#K;FP$_q+Hrp^g!&2xlsY;qe|RP zY_YoWxFc;JcKJ4~VjsVa%{UegP-T&Is9&*L(ie;#*9XKc04;;XE#G3xfnGdI(b<CO zNxCL#iZ)`Jq|fzb;x3jN%T0y7w^Q8hRc*P@3#iCOeo?%Y6?J9m#nWKD2#O|MSJ7m9 zzKZSQHd;_-U?kT0A4_`a55yI5hoY8doBO6rKTH}x_kt!mWzUKKZTSh*Mx68q1^ul6 O0000<MNUMnLSTZkdpi~Y literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/star.imageset/star.png b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/star.imageset/star.png index 252825ae16fa4615543a857517818568361b7d60..5f7f7222c4072027790a0ac75a9359803a3eec05 100644 GIT binary patch literal 550 zcmV+>0@?kEP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0005)Nkl<Zc-pnq zO-NKx6u|L2>LP@OK%_uQU1Vho4R<1vTO-AWK6DePi$c_0K}2FmP&*5;MG9`ziVD-( zCL!)bTjWP=N(l-HqJe0k(*JPJ;GN5Syhk$^e%yH<bI*I{-g95Xglk8%{~q)Yk&ppy zX#XHz0oJuYnU4Ssc%r|%v5@Nk<Ji#OC(xP800*&&Q+m9HV~FP}fTZL+TJ?AavrfwX zJHR6D>%c|>-9&wm0G0acQB6hEb4Uj|iXHu55w<k&FZ}kzwO@<qAd_gu96ozDN&gAU z-ou?imGe-E{<x;|4LTAjD!`DOKnzO(Q|GrjywC@}jXi%3E@K3}m<l;~J0772Pu)52 zTP<GU8E#=W%fN-Whf8R~ihD8LDk{Zu{J{nMO>^G?yhJfBV%xtV(=si?DoV`$>hYVb zrk|+Bw^TP|3UI~PNpH!LqSwYw>U7uuWB7oF&be~!zdGmoP=l_p0lpYp8<Hkj#<DsF z^xB}Yt8Guy^A;6h0!RV9Gj<-N%H3_+c*nBwN&cIREyzFtuA>nj(T}^%6C3A^?qC?F z@gAc=14uQV!#u8Ox>7Ys%VV51c58?Q2_S_dpGMg_CQPt))!3~;KBY;8nJR#6T2eSa o0uG*Nhm9@Fq>oV8kACR(53l!PNb@@v9{>OV07*qoM6N<$f@aG5F8}}l literal 11206 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 CvAq!h diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard index 900bc17..5a9c4a6 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> </dependencies> diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index d429087..f02f291 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="rWE-oc-Un1"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -19,7 +19,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -120,7 +120,7 @@ </objects> <point key="canvasLocation" x="1988" y="641"/> </scene> - <!--Journal Main Collection View Controller--> + <!--Item--> <scene sceneID="IKu-XC-hmb"> <objects> <collectionViewController id="Gih-78-N3X" customClass="JournalMainCollectionViewController" sceneMemberID="viewController"> @@ -182,15 +182,43 @@ <outlet property="delegate" destination="Gih-78-N3X" id="TWL-m7-WCV"/> </connections> </collectionView> + <tabBarItem key="tabBarItem" title="Item" id="uMb-MY-8On"/> <navigationItem key="navigationItem" id="Z1X-J6-1kq"/> - <connections> - <segue destination="0x4-Nu-mZ8" kind="show" identifier="pushToSearch" id="e8t-DM-qor"/> - <segue destination="WZe-UX-wgc" kind="show" identifier="pushToWishList" id="nBf-zY-MUB"/> - </connections> </collectionViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="blD-s8-5JB" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1777" y="1624"/> + <point key="canvasLocation" x="549" y="2512"/> + </scene> + <!--settings--> + <scene sceneID="PlQ-SS-pZx"> + <objects> + <viewController title="settings" id="Oeh-Ah-1CX" sceneMemberID="viewController"> + <layoutGuides> + <viewControllerLayoutGuide type="top" id="OjC-qE-o96"/> + <viewControllerLayoutGuide type="bottom" id="HPN-sF-Bn8"/> + </layoutGuides> + <view key="view" contentMode="scaleToFill" id="qWh-Hz-BDE"> + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="lets add the social stuff over here! " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qLr-OV-7JA"> + <rect key="frame" x="168.5" y="290.5" width="264" height="20.5"/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstItem="qLr-OV-7JA" firstAttribute="centerX" secondItem="qWh-Hz-BDE" secondAttribute="centerX" id="els-Ct-0Lj"/> + <constraint firstItem="qLr-OV-7JA" firstAttribute="centerY" secondItem="qWh-Hz-BDE" secondAttribute="centerY" id="iFg-8y-wzh"/> + </constraints> + </view> + <tabBarItem key="tabBarItem" title="Item" id="aF0-rA-Z24"/> + </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="Ure-Ti-78A" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="1285" y="2512"/> </scene> <!--Search --> <scene sceneID="eAD-0s-cgb"> @@ -284,21 +312,8 @@ </mask> </variation> </view> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q0c-Ez-WJB"> - <rect key="frame" x="0.0" y="550" width="300" height="50"/> - <animations/> - <color key="backgroundColor" red="0.75457596599999999" green="0.86496030550000003" blue="1" alpha="1" colorSpace="calibratedRGB"/> - <constraints> - <constraint firstAttribute="height" constant="50" id="Obp-pq-hKR"/> - </constraints> - <state key="normal" title="Create Journal Entry"/> - <connections> - <action selector="createJournalEntryButtonTapped:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="tTN-M9-kCZ"/> - <segue destination="aXS-um-aw2" kind="show" identifier="pushToCreateJournalEntry" id="a4i-zx-cvK"/> - </connections> - </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i6F-Oe-4xR"> - <rect key="frame" x="300" y="550" width="300" height="50"/> + <rect key="frame" x="300" y="426" width="300" height="50"/> <animations/> <color key="backgroundColor" red="1" green="0.5210467205" blue="0.69047673470000004" alpha="1" colorSpace="calibratedRGB"/> <constraints> @@ -310,7 +325,7 @@ </connections> </button> <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="twc-ko-3Rx"> - <rect key="frame" x="0.0" y="170" width="600" height="380"/> + <rect key="frame" x="0.0" y="170" width="600" height="256"/> <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <prototypes> @@ -318,11 +333,11 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> - <rect key="frame" x="15" y="5" width="32" height="20"/> + <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="16"/> @@ -330,7 +345,7 @@ <nil key="highlightedColor"/> </label> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> - <rect key="frame" x="15" y="25" width="41" height="14"/> + <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="11"/> @@ -372,15 +387,28 @@ <constraint firstItem="zob-sY-qha" firstAttribute="centerY" secondItem="4h9-oR-C40" secondAttribute="centerY" id="x76-Iu-Ldy"/> </constraints> </view> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q0c-Ez-WJB"> + <rect key="frame" x="0.0" y="426" width="300" height="50"/> + <animations/> + <color key="backgroundColor" red="0.75457596599999999" green="0.86496030550000003" blue="1" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstAttribute="height" constant="50" id="Obp-pq-hKR"/> + </constraints> + <state key="normal" title="Create Journal Entry"/> + <connections> + <action selector="createJournalEntryButtonTapped:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="tTN-M9-kCZ"/> + <segue destination="aXS-um-aw2" kind="show" identifier="pushToCreateJournalEntry" id="a4i-zx-cvK"/> + </connections> + </button> </subviews> <animations/> <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> <constraints> <constraint firstAttribute="trailing" secondItem="i6F-Oe-4xR" secondAttribute="trailing" id="1vY-Sv-N2G"/> <constraint firstItem="Ax7-Aa-cpl" firstAttribute="width" secondItem="6gJ-up-Tie" secondAttribute="width" id="3Ks-3J-7vW"/> - <constraint firstItem="PPA-gt-rZ4" firstAttribute="top" secondItem="Q0c-Ez-WJB" secondAttribute="bottom" id="3L8-sb-LAC"/> + <constraint firstItem="PPA-gt-rZ4" firstAttribute="top" secondItem="Q0c-Ez-WJB" secondAttribute="bottom" constant="75" id="3L8-sb-LAC"/> <constraint firstItem="Ax7-Aa-cpl" firstAttribute="leading" secondItem="pfn-eQ-aux" secondAttribute="leading" id="5sF-j5-6Wq"/> - <constraint firstItem="PPA-gt-rZ4" firstAttribute="top" secondItem="i6F-Oe-4xR" secondAttribute="bottom" id="7Fe-iU-INp"/> + <constraint firstItem="PPA-gt-rZ4" firstAttribute="top" secondItem="i6F-Oe-4xR" secondAttribute="bottom" constant="75" id="7Fe-iU-INp"/> <constraint firstItem="Ax7-Aa-cpl" firstAttribute="top" secondItem="pfn-eQ-aux" secondAttribute="top" constant="20" id="9C4-7H-9Cb"/> <constraint firstItem="twc-ko-3Rx" firstAttribute="leading" secondItem="pfn-eQ-aux" secondAttribute="leading" id="FZd-hl-gkx"/> <constraint firstItem="Q0c-Ez-WJB" firstAttribute="leading" secondItem="pfn-eQ-aux" secondAttribute="leading" id="Jbu-5t-pGE"/> @@ -397,6 +425,7 @@ <constraint firstItem="twc-ko-3Rx" firstAttribute="top" secondItem="4h9-oR-C40" secondAttribute="bottom" id="yzs-2t-Ycy"/> </constraints> </view> + <tabBarItem key="tabBarItem" title="Item" id="a8h-Hd-5Ai"/> <navigationItem key="navigationItem" id="gPV-bk-VJf"/> <connections> <outlet property="booksButton" destination="rgg-OH-neT" id="Ucr-iy-A9p"/> @@ -405,12 +434,11 @@ <outlet property="otherButton" destination="kEa-FP-z2a" id="zZJ-KO-l1f"/> <outlet property="searchTextField" destination="zob-sY-qha" id="CSN-S0-Rzp"/> <outlet property="tableView" destination="twc-ko-3Rx" id="4Cw-TH-Ai6"/> - <segue destination="Gih-78-N3X" kind="show" identifier="pushBackHome" id="898-jd-zRS"/> </connections> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="2515" y="1624"/> + <point key="canvasLocation" x="-201" y="2504"/> </scene> <!--Create Journal Entry View Controller--> <scene sceneID="3xO-3p-x8L"> @@ -555,13 +583,13 @@ </variation> </view> <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="gMh-cq-aTG"> - <rect key="frame" x="20" y="219" width="560" height="305"/> + <rect key="frame" x="20" y="219" width="560" height="256"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="14"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> </textView> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ccY-ot-FYH"> - <rect key="frame" x="0.0" y="540" width="600" height="60"/> + <rect key="frame" x="0.0" y="491" width="600" height="60"/> <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bIK-7d-Vfl"> <rect key="frame" x="0.0" y="0.0" width="600" height="60"/> @@ -622,7 +650,28 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="TK9-37-5bs" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="253" y="3204"/> + <point key="canvasLocation" x="-551" y="3332"/> + </scene> + <!--Folding Tab Bar Controller--> + <scene sceneID="bxL-4q-Pom"> + <objects> + <tabBarController id="sU9-FA-LDO" customClass="YALFoldingTabBarController" sceneMemberID="viewController"> + <extendedEdge key="edgesForExtendedLayout" top="YES"/> + <tabBar key="tabBar" contentMode="scaleToFill" id="vp1-Fh-t9g"> + <rect key="frame" x="0.0" y="0.0" width="320" height="49"/> + <autoresizingMask key="autoresizingMask"/> + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> + </tabBar> + <connections> + <segue destination="WZe-UX-wgc" kind="relationship" relationship="viewControllers" id="J0X-l6-QQi"/> + <segue destination="0x4-Nu-mZ8" kind="relationship" relationship="viewControllers" id="cwP-3d-peb"/> + <segue destination="Gih-78-N3X" kind="relationship" relationship="viewControllers" id="0Uq-id-h7h"/> + <segue destination="Oeh-Ah-1CX" kind="relationship" relationship="viewControllers" id="gqs-7r-Ydd"/> + </connections> + </tabBarController> + <placeholder placeholderIdentifier="IBFirstResponder" id="1hc-eJ-lg1" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="171" y="1647"/> </scene> <!--Wish List--> <scene sceneID="WUv-ax-PAc"> @@ -638,7 +687,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> - <rect key="frame" x="0.0" y="0.0" width="567" height="63"/> + <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="346-CT-Uvl"> @@ -673,14 +722,12 @@ <outlet property="delegate" destination="WZe-UX-wgc" id="KJE-Pm-bbr"/> </connections> </tableView> + <tabBarItem key="tabBarItem" title="Item" id="XuX-sx-3nt"/> <navigationItem key="navigationItem" id="wvx-LN-Wn1"/> - <connections> - <segue destination="Gih-78-N3X" kind="show" identifier="pushToHomeList" id="4YM-8W-IJo"/> - </connections> </tableViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="vQP-Qq-o7U" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="253" y="2388"/> + <point key="canvasLocation" x="-907" y="2504"/> </scene> <!--View Controller--> <scene sceneID="Sp1-uX-mf4"> @@ -854,10 +901,10 @@ <constraint firstItem="JU3-mC-wxo" firstAttribute="leading" secondItem="M7h-zf-QrN" secondAttribute="trailing" constant="50" id="xSf-tn-Ha9"/> </constraints> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="x4f-Ym-z1V"> + <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="x4f-Ym-z1V"> <rect key="frame" x="20" y="485" width="560" height="115"/> <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> + <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> <rect key="frame" x="258" y="42" width="45" height="30"/> <animations/> <state key="normal" title="Delete"/> @@ -905,33 +952,13 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="gKL-Ix-enk" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1777" y="2512"/> - </scene> - <!--Navigation Controller--> - <scene sceneID="IPQ-wM-Z7c"> - <objects> - <navigationController automaticallyAdjustsScrollViewInsets="NO" navigationBarHidden="YES" id="rWE-oc-Un1" sceneMemberID="viewController"> - <toolbarItems/> - <navigationBar key="navigationBar" contentMode="scaleToFill" id="B2x-Uu-nc9"> - <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <animations/> - </navigationBar> - <nil name="viewControllers"/> - <connections> - <segue destination="Gih-78-N3X" kind="relationship" relationship="rootViewController" id="io4-wH-TCe"/> - </connections> - </navigationController> - <placeholder placeholderIdentifier="IBFirstResponder" id="bGC-Ig-YI6" userLabel="First Responder" sceneMemberID="firstResponder"/> - </objects> - <point key="canvasLocation" x="1003" y="1624"/> + <point key="canvasLocation" x="549" y="3332"/> </scene> </scenes> <resources> - <image name="star" width="300" height="273"/> + <image name="star" width="24" height="24"/> </resources> <inferredMetricsTieBreakers> - <segue reference="898-jd-zRS"/> <segue reference="a4i-zx-cvK"/> </inferredMetricsTieBreakers> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index c2038b7..db07dce 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -22,39 +22,39 @@ - (void)viewDidLoad collectionImages = [NSArray arrayWithObjects:@"destroyer.png", @"drake.png", @"big_nerd_ranch.png", @"talking_heads.png", @"true_detective", @"sleater_kinney.png", @"x-files.png", @"run_the_jewels.png", @"lean_startup.png", nil]; - [self setUpSwipeGestures]; + //[self setUpSwipeGestures]; self.collectionView.alwaysBounceVertical = YES; // [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"]; } -#pragma mark - setup swipe gestures - -- (void)setUpSwipeGestures -{ - UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedLeft:)]; - swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; - [self.view addGestureRecognizer:swipeLeft]; - - UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedRight:)]; - swipeRight.direction = UISwipeGestureRecognizerDirectionRight; - [self.view addGestureRecognizer:swipeRight]; -} - -- (void)userSwipedLeft:(UISwipeGestureRecognizer*)swipe -{ - if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { - [self performSegueWithIdentifier:@"pushToSearch" sender:self]; - } -} - -- (void)userSwipedRight:(UISwipeGestureRecognizer*)swipe -{ - if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { - [self performSegueWithIdentifier:@"pushToWishList" sender:self]; - } -} +//#pragma mark - setup swipe gestures +// +//- (void)setUpSwipeGestures +//{ +// UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedLeft:)]; +// swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; +// [self.view addGestureRecognizer:swipeLeft]; +// +// UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedRight:)]; +// swipeRight.direction = UISwipeGestureRecognizerDirectionRight; +// [self.view addGestureRecognizer:swipeRight]; +//} +// +//- (void)userSwipedLeft:(UISwipeGestureRecognizer*)swipe +//{ +// if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { +// [self performSegueWithIdentifier:@"pushToSearch" sender:self]; +// } +//} +// +//- (void)userSwipedRight:(UISwipeGestureRecognizer*)swipe +//{ +// if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { +// [self performSegueWithIdentifier:@"pushToWishList" sender:self]; +// } +//} #pragma mark - Navigation diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index da03959..d7060e6 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -36,7 +36,7 @@ @implementation SearchAPIViewController - (void)viewDidLoad { [super viewDidLoad]; - [self setUpSwipeGestures]; + // [self setUpSwipeGestures]; self.tableView.delegate = self; self.tableView.dataSource = self; @@ -45,24 +45,24 @@ - (void)viewDidLoad } -#pragma mark - setup swipe gestures - -- (void)setUpSwipeGestures -{ - UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedRight:)]; - swipeRight.direction = UISwipeGestureRecognizerDirectionRight; - [self.view addGestureRecognizer:swipeRight]; -} - -- (void)userSwipedRight:(UISwipeGestureRecognizer*)swipe -{ - if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { - - [self performSegueWithIdentifier:@"pushBackHome" sender:self]; - - // [self dismissViewControllerAnimated:YES completion:nil]; - } -} +//#pragma mark - setup swipe gestures +// +//- (void)setUpSwipeGestures +//{ +// UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedRight:)]; +// swipeRight.direction = UISwipeGestureRecognizerDirectionRight; +// [self.view addGestureRecognizer:swipeRight]; +//} +// +//- (void)userSwipedRight:(UISwipeGestureRecognizer*)swipe +//{ +// if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { +// +// [self performSegueWithIdentifier:@"pushBackHome" sender:self]; +// +// // [self dismissViewControllerAnimated:YES completion:nil]; +// } +//} #pragma mark - setup buttons diff --git a/Unit-2-Journal/Unit-2-Journal/TabBarViewController.h b/Unit-2-Journal/Unit-2-Journal/TabBarViewController.h new file mode 100644 index 0000000..5e96469 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/TabBarViewController.h @@ -0,0 +1,22 @@ +// +// TabBarViewController.h +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/12/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> +#import "YALFoldingTabBar.h" + +@interface TabBarViewController : UITabBarController + +@property (nonatomic, copy) NSArray *leftBarItems; +@property (nonatomic, copy) NSArray *rightBarItems; +@property (nonatomic, strong) UIImage *centerButtonImage; + +@property (nonatomic, assign) CGFloat tabBarViewHeight; + +@property (nonatomic, strong) YALFoldingTabBar *tabBarView; + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/TabBarViewController.m b/Unit-2-Journal/Unit-2-Journal/TabBarViewController.m new file mode 100644 index 0000000..78c095f --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/TabBarViewController.m @@ -0,0 +1,181 @@ +// +// TabBarViewController.m +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/12/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "TabBarViewController.h" + +#import "YALTabBarItem.h" //model +#import "YALTabBarInteracting.h" //protocol +#import "YALAnimatingTabBarConstants.h" + +@interface TabBarViewController () + +<YALTabBarViewDataSource, +YALTabBarViewDelegate> + +@property (nonatomic, assign) YALTabBarState state; + +@end + +@implementation TabBarViewController + +#pragma mark - Initialization + +- (instancetype)init { + self = [super init]; + if (self) { + [self setup]; + } + return self; +} + +- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + [self setup]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; + if (self) { + [self setup]; + } + return self; +} + +- (void)setup { + self.tabBarViewHeight = YALTabBarViewDefaultHeight; + + [self setupTabBarView]; +} + +#pragma mark - View & LifeCycle + +- (void)viewDidLoad { + [super viewDidLoad]; + + [self.tabBar setBackgroundImage:[[UIImage alloc] init]]; + [self.tabBar setShadowImage:[[UIImage alloc] init]]; + + self.tabBar.hidden = YES; +} + +- (void)viewWillLayoutSubviews { + [super viewWillLayoutSubviews]; + + CGRect tabFrame = self.tabBar.frame; + tabFrame.size.height = self.tabBarViewHeight; + tabFrame.origin.y = self.view.frame.size.height - self.tabBarViewHeight; + self.tabBar.frame = tabFrame; +} + +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; + + [self updateTabBarViewFrame]; +} + +- (void)setSelectedIndex:(NSUInteger)selectedIndex { + [super setSelectedIndex:selectedIndex]; + + self.tabBarView.selectedTabBarItemIndex = selectedIndex; + [self.tabBarView setNeedsLayout]; +} + +#pragma mark - Private + +- (void)updateTabBarViewFrame { + CGFloat tabBarViewOriginX = self.tabBar.frame.origin.x; + CGFloat tabBarViewOriginY = self.tabBar.frame.origin.y; + CGFloat tabBarViewSizeWidth = CGRectGetWidth(self.tabBar.frame); + + self.tabBarView.frame = CGRectMake(tabBarViewOriginX, tabBarViewOriginY, tabBarViewSizeWidth, self.tabBarViewHeight); + [self.tabBarView setNeedsLayout]; +} + +- (void)setupTabBarView { + self.tabBarView = [[YALFoldingTabBar alloc] initWithFrame:CGRectZero state:self.state]; + + self.tabBarView.dataSource = self; + self.tabBarView.delegate = self; + + [self.view addSubview:self.tabBarView]; +} + +- (id<YALTabBarInteracting>)currentInteractingViewController { + if ([self.selectedViewController isKindOfClass:[UINavigationController class]]) { + return (id<YALTabBarInteracting>)[(UINavigationController *)self.selectedViewController topViewController]; + } else { + return (id<YALTabBarInteracting>)self.selectedViewController; + } +} + +#pragma mark - YALTabBarViewDataSource + +- (NSArray *)leftTabBarItemsInTabBarView:(YALFoldingTabBar *)tabBarView { + return self.leftBarItems; +} + +- (NSArray *)rightTabBarItemsInTabBarView:(YALFoldingTabBar *)tabBarView { + return self.rightBarItems; +} + +- (UIImage *)centerImageInTabBarView:(YALFoldingTabBar *)tabBarView { + return self.centerButtonImage; +} + +#pragma mark - YALTabBarViewDelegate + +- (void)tabBarViewWillCollapse:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; + if ([viewController respondsToSelector:@selector(tabBarViewWillCollapse)]) { + [viewController tabBarViewWillCollapse]; + } +} + +- (void)tabBarViewDidCollapse:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; + if ([viewController respondsToSelector:@selector(tabBarViewDidCollapse)]) { + [viewController tabBarViewDidCollapse]; + } +} + +- (void)tabBarViewWillExpand:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; + if ([viewController respondsToSelector:@selector(tabBarViewWillExpand)]) { + [viewController tabBarViewWillExpand]; + } +} + +- (void)tabBarViewDidExpand:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; + if ([viewController respondsToSelector:@selector(tabBarViewDidExpand)]) { + [viewController tabBarViewDidExpand]; + } +} + +- (void)extraLeftItemDidPressInTabBarView:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; + if ([viewController respondsToSelector:@selector(extraLeftItemDidPress)]) { + [viewController extraLeftItemDidPress]; + } +} + +- (void)extraRightItemDidPressInTabBarView:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; + if ([viewController respondsToSelector:@selector(extraRightItemDidPress)]) { + [viewController extraRightItemDidPress]; + } +} + +- (void)itemInTabBarViewPressed:(YALFoldingTabBar *)tabBarView atIndex:(NSUInteger)index { + self.selectedViewController = [self.viewControllers objectAtIndex:index]; +} + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index 08d874d..2d6b9b9 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -17,27 +17,27 @@ @implementation WishListTableViewController - (void)viewDidLoad { [super viewDidLoad]; - [self setUpSwipeGestures]; +// [self setUpSwipeGestures]; } -#pragma mark - swipe gestures - -- (void)setUpSwipeGestures -{ - UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedLeft:)]; - swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; - [self.view addGestureRecognizer:swipeLeft]; -} - -- (void)userSwipedLeft:(UISwipeGestureRecognizer*)swipe -{ - if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { - - [self performSegueWithIdentifier:@"pushToHomeList" sender:self]; - - //[self dismissViewControllerAnimated:YES completion:nil]; - } -} +//#pragma mark - swipe gestures +// +//- (void)setUpSwipeGestures +//{ +// UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedLeft:)]; +// swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; +// [self.view addGestureRecognizer:swipeLeft]; +//} +// +//- (void)userSwipedLeft:(UISwipeGestureRecognizer*)swipe +//{ +// if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { +// +// [self performSegueWithIdentifier:@"pushToHomeList" sender:self]; +// +// //[self dismissViewControllerAnimated:YES completion:nil]; +// } +//} #pragma mark - Table view data source From ae1a71dfeffc0eee83a60a85706da3d1b5e912df Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Mon, 12 Oct 2015 12:42:08 -0400 Subject: [PATCH 26/86] updated code -JS --- .../CreateJournalEntryViewController.m | 21 ++++--------------- .../Unit-2-Journal/iTunesSearchResult.h | 1 + 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index da8bca1..7d8857d 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -24,30 +24,26 @@ @implementation CreateJournalEntryViewController - (void)viewDidLoad { [super viewDidLoad]; + NSLog(@"Data has been passed: %@",self.postSearchResult); + self.doneEditingButton.hidden = YES; + //manage textview self.textView.delegate = self; self.textView.text = @"Write your thoughts here..."; self.textView.layer.borderWidth = 1.0f; self.textView.layer.cornerRadius = 5.0f; self.textView.layer.borderColor = [UIColor grayColor].CGColor; - NSLog(@"Data has been passed: %@",self.postSearchResult); - + //populate journal header self.movieOrAlbumNameLabel.text = self.postSearchResult.albumOrMovieName; self.artistNameLabel.text = self.postSearchResult.artistName; - NSURL *artworkURL = [NSURL URLWithString:self.postSearchResult.artworkURL]; NSData *artworkData = [NSData dataWithContentsOfURL:artworkURL]; UIImage *artworkImage = [UIImage imageWithData:artworkData]; - self.artworkImageView.image = artworkImage; } - -//- (void)textViewDidEndEditing:(UITextView *)textView{ -// [self.textView resignFirstResponder]; -//} - (void) textViewDidBeginEditing:(UITextView *)textView{ self.textView.text = @""; @@ -58,12 +54,6 @@ - (IBAction)doneEditingTapped:(id)sender { self.doneEditingButton.hidden = YES; -// if (self.textView.text == nil){ -// self.textView.text = @"Write your thoughts here..."; -// } -// -// [self.textView reloadInputViews]; - [[[UIApplication sharedApplication] keyWindow] endEditing:YES]; } @@ -73,9 +63,6 @@ - (IBAction)starButtonTapped:(id)sender { } - - - #pragma mark - save items diff --git a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h index 6afc7c2..66bd1cf 100644 --- a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h +++ b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h @@ -6,6 +6,7 @@ // Copyright © 2015 Jamaal Sedayao. All rights reserved. // +#import <Parse/PFObject+Subclass.h> #import "PFObject.h" @interface iTunesSearchResult : PFObject <PFSubclassing> From e43e136cf0bf555b4662a6de008878bb43a810f0 Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Mon, 12 Oct 2015 13:27:10 -0400 Subject: [PATCH 27/86] added segue --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 10 ++++++---- .../Unit-2-Journal/SearchAPIViewController.m | 4 ++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index f05543bb303d5bacae4cf19242638bfba946fd72..c300cc7a049ea32a066005029758f612e3b81ef1 100644 GIT binary patch delta 18 ZcmZoMXffFEi;Z#K<ajoV&Bp8(1pq`E2DShI delta 18 ZcmZoMXffFEi;XdEay*;GW@Gk?0sujp26g}d diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index f02f291..5a5317a 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -599,6 +599,7 @@ </state> <connections> <action selector="logToJournalButtonTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="bF7-vG-sm2"/> + <segue destination="WZe-UX-wgc" kind="show" identifier="logToJournalSegue" id="j87-kS-bSt"/> </connections> </button> </subviews> @@ -901,11 +902,11 @@ <constraint firstItem="JU3-mC-wxo" firstAttribute="leading" secondItem="M7h-zf-QrN" secondAttribute="trailing" constant="50" id="xSf-tn-Ha9"/> </constraints> </view> - <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="x4f-Ym-z1V"> - <rect key="frame" x="20" y="485" width="560" height="115"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="x4f-Ym-z1V"> + <rect key="frame" x="20" y="485" width="560" height="66"/> <subviews> - <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> - <rect key="frame" x="258" y="42" width="45" height="30"/> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> + <rect key="frame" x="258" y="18" width="45" height="30"/> <animations/> <state key="normal" title="Delete"/> <connections> @@ -960,5 +961,6 @@ </resources> <inferredMetricsTieBreakers> <segue reference="a4i-zx-cvK"/> + <segue reference="j87-kS-bSt"/> </inferredMetricsTieBreakers> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index d7060e6..0d3b4b8 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -177,6 +177,10 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS // NSLog(@"Image: %@", artworkImage); cell.imageView.image = artworkImage; + + cell.imageView.layer.borderWidth = 2.0; + cell.imageView.layer.borderColor = [UIColor blackColor].CGColor; + cell.imageView.layer.cornerRadius = 3.0; return cell; } From 420a6b8a95c5e139971855a24b05672cb1af6334 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Mon, 12 Oct 2015 13:53:51 -0400 Subject: [PATCH 28/86] added journalpost.h class --- .../Unit-2-Journal.xcodeproj/project.pbxproj | 6 ++++++ Unit-2-Journal/Unit-2-Journal/AppDelegate.m | 3 +++ .../Base.lproj/LaunchScreen.storyboard | 2 +- .../Unit-2-Journal/Base.lproj/Main.storyboard | 19 ++++++++++-------- .../CreateJournalEntryViewController.m | 9 +++++++++ Unit-2-Journal/Unit-2-Journal/JournalPost.h | 17 ++++++++++++++++ Unit-2-Journal/Unit-2-Journal/JournalPost.m | 20 +++++++++++++++++++ 7 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 Unit-2-Journal/Unit-2-Journal/JournalPost.h create mode 100644 Unit-2-Journal/Unit-2-Journal/JournalPost.m diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 0f6c150..795529e 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -26,6 +26,7 @@ 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331C1BC8D99D001CBA5C /* LoginViewController.m */; settings = {ASSET_TAGS = (); }; }; 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331F1BC8D9B5001CBA5C /* SignUpViewController.m */; settings = {ASSET_TAGS = (); }; }; 617F8769EFBE79517A02E6D0 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAF24AD380284C55768010A2 /* libPods.a */; }; + 9A2937201BCC26FE00ACEEE0 /* JournalPost.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A29371F1BCC26FE00ACEEE0 /* JournalPost.m */; settings = {ASSET_TAGS = (); }; }; 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC2E1BC84BF200E880D3 /* main.m */; }; 9A2FFC321BC84BF200E880D3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC311BC84BF200E880D3 /* AppDelegate.m */; }; 9A2FFC381BC84BF200E880D3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A2FFC361BC84BF200E880D3 /* Main.storyboard */; }; @@ -66,6 +67,8 @@ 5A50331C1BC8D99D001CBA5C /* LoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = "<group>"; }; 5A50331E1BC8D9B5001CBA5C /* SignUpViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SignUpViewController.h; sourceTree = "<group>"; }; 5A50331F1BC8D9B5001CBA5C /* SignUpViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SignUpViewController.m; sourceTree = "<group>"; }; + 9A29371E1BCC26FE00ACEEE0 /* JournalPost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalPost.h; sourceTree = "<group>"; }; + 9A29371F1BCC26FE00ACEEE0 /* JournalPost.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalPost.m; sourceTree = "<group>"; }; 9A2FFC2A1BC84BF200E880D3 /* Unit-2-Journal.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Unit-2-Journal.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 9A2FFC2E1BC84BF200E880D3 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; 9A2FFC301BC84BF200E880D3 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; @@ -203,6 +206,8 @@ 9AAB40051BC9FABC00FD7227 /* APIManager.m */, 9A34656B1BCACDF40049337C /* iTunesSearchResult.h */, 9A34656C1BCACDF40049337C /* iTunesSearchResult.m */, + 9A29371E1BCC26FE00ACEEE0 /* JournalPost.h */, + 9A29371F1BCC26FE00ACEEE0 /* JournalPost.m */, ); name = "Classes & Managers"; sourceTree = "<group>"; @@ -346,6 +351,7 @@ 4DCBE1321BC98EF90075BA2C /* JournalMainCollectionViewController.m in Sources */, 4DCBE1471BC9AD6A0075BA2C /* SearchAPIViewController.m in Sources */, 9A2FFC3B1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld in Sources */, + 9A2937201BCC26FE00ACEEE0 /* JournalPost.m in Sources */, 4DCBE14D1BC9ADE00075BA2C /* WishListTableViewController.m in Sources */, 5A50331A1BC8D0E4001CBA5C /* MainTableViewController.m in Sources */, 9AAB40061BC9FABC00FD7227 /* APIManager.m in Sources */, diff --git a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m index a9a2eb1..b140675 100644 --- a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m +++ b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m @@ -11,6 +11,7 @@ #import <FBSDKLoginKit/FBSDKLoginButton.h> #import <Parse/Parse.h> #import "iTunesSearchResult.h" +#import "JournalPost.h" //for custom tab bar: #import "YALTabBarItem.h" //model @@ -38,7 +39,9 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( [Parse setApplicationId:@"huGlqbY2KVINDuFfqju1fN0eB2QVANcqqHP0NVpY" clientKey:@"aohlSqEhCwaXtZbji5us0j97GNzemWqq3m3EJqwG"]; + //registering subclases to parse [iTunesSearchResult registerSubclass]; + [JournalPost registerSubclass]; [self setupYALTabBarController]; // setup tab bar controller diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard index 5a9c4a6..900bc17 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> </dependencies> diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 5a5317a..9868396 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -19,7 +19,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -201,13 +201,15 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="lets add the social stuff over here! " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qLr-OV-7JA"> - <rect key="frame" x="168.5" y="290.5" width="264" height="20.5"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="lets add the social stuff over here! " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qLr-OV-7JA"> + <rect key="frame" x="169" y="291" width="264" height="20"/> + <animations/> <fontDescription key="fontDescription" type="system" pointSize="17"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> </label> </subviews> + <animations/> <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> <constraints> <constraint firstItem="qLr-OV-7JA" firstAttribute="centerX" secondItem="qWh-Hz-BDE" secondAttribute="centerX" id="els-Ct-0Lj"/> @@ -333,11 +335,11 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> - <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> + <rect key="frame" x="15" y="5" width="32" height="20"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="16"/> @@ -345,7 +347,7 @@ <nil key="highlightedColor"/> </label> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> - <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> + <rect key="frame" x="15" y="25" width="41" height="14"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="11"/> @@ -661,6 +663,7 @@ <tabBar key="tabBar" contentMode="scaleToFill" id="vp1-Fh-t9g"> <rect key="frame" x="0.0" y="0.0" width="320" height="49"/> <autoresizingMask key="autoresizingMask"/> + <animations/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> </tabBar> <connections> @@ -688,7 +691,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> - <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> + <rect key="frame" x="0.0" y="0.0" width="567" height="63"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="346-CT-Uvl"> diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index 7d8857d..3c417fe 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -7,6 +7,7 @@ // #import "CreateJournalEntryViewController.h" +#import "JournalPost.h" @interface CreateJournalEntryViewController () <UITextViewDelegate> @@ -67,6 +68,14 @@ - (IBAction)starButtonTapped:(id)sender { - (IBAction)logToJournalButtonTapped:(id)sender { + + JournalPost *journalPost = [[JournalPost alloc]init]; + + journalPost.postText = self.textView.text; + journalPost.postSubject = self.postSearchResult; + + NSLog(@"Journal Post: %@",journalPost); + } /* diff --git a/Unit-2-Journal/Unit-2-Journal/JournalPost.h b/Unit-2-Journal/Unit-2-Journal/JournalPost.h new file mode 100644 index 0000000..0b01248 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/JournalPost.h @@ -0,0 +1,17 @@ +// +// JournalPost.h +// Unit-2-Journal +// +// Created by Jamaal Sedayao on 10/12/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <Parse/Parse.h> +#import "iTunesSearchResult.h" + +@interface JournalPost : PFObject <PFSubclassing> + +@property (nonatomic) NSString *postText; +@property (nonatomic) iTunesSearchResult *postSubject; + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalPost.m b/Unit-2-Journal/Unit-2-Journal/JournalPost.m new file mode 100644 index 0000000..4b7c448 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/JournalPost.m @@ -0,0 +1,20 @@ +// +// JournalPost.m +// Unit-2-Journal +// +// Created by Jamaal Sedayao on 10/12/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "JournalPost.h" + +@implementation JournalPost + +@dynamic postText; +@dynamic postSubject; + ++(NSString *)parseClassName { + return @"JournalPost"; +} + +@end From 80eb24ca1da6dfa4ac38dc9e6e91095da9e76572 Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Mon, 12 Oct 2015 13:54:10 -0400 Subject: [PATCH 29/86] fixed segue --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 10 ++++++ .../Unit-2-Journal/Base.lproj/Main.storyboard | 4 +-- .../Unit-2-Journal/JournalMainHeaderView.h | 15 ++++++++ .../Unit-2-Journal/JournalMainHeaderView.m | 21 ++++++++++++ .../Unit-2-Journal/JournalMainHeaderView.xib | 32 ++++++++++++++++++ .../Unit-2-Journal/iTunesSearchResult.h | 1 + .../Unit-2-Journal/iTunesSearchResult.m | 1 + 8 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.h create mode 100644 Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.m create mode 100644 Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.xib diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index c300cc7a049ea32a066005029758f612e3b81ef1..866584d756fb497de9a3975a36bfc13949a557c7 100644 GIT binary patch delta 59 zcmV-B0L1@<FoZC$kp%*}Uz7g?G!JcWL_}nDbYlPj(m|qU0F(X%HIoYl?gC_*lV1in RlQRdN0f3QlHM0i@{SS;l6;J>G delta 47 zcmV+~0MP%0FoZC$kp%*^L6iRkGy`pKM3W8%L6Zvx?gCPtlV1inlQRdN0dSFVHM0i@ F{SS!n5D@?X diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 0f6c150..79bd4d9 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -8,6 +8,8 @@ /* Begin PBXBuildFile section */ 4D7FE2941BCC12050036E58E /* TabBarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7FE2931BCC12050036E58E /* TabBarViewController.m */; settings = {ASSET_TAGS = (); }; }; + 4D7FE2971BCC29210036E58E /* JournalMainHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7FE2961BCC29210036E58E /* JournalMainHeaderView.m */; settings = {ASSET_TAGS = (); }; }; + 4D7FE2991BCC29650036E58E /* JournalMainHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4D7FE2981BCC29650036E58E /* JournalMainHeaderView.xib */; settings = {ASSET_TAGS = (); }; }; 4DCBE1321BC98EF90075BA2C /* JournalMainCollectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */; settings = {ASSET_TAGS = (); }; }; 4DCBE13C1BC9943D0075BA2C /* big_nerd_ranch.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1331BC9943D0075BA2C /* big_nerd_ranch.png */; settings = {ASSET_TAGS = (); }; }; 4DCBE13D1BC9943D0075BA2C /* destroyer.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1341BC9943D0075BA2C /* destroyer.png */; settings = {ASSET_TAGS = (); }; }; @@ -41,6 +43,9 @@ 2BC0A6490F88476E5C31E3B1 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = "<group>"; }; 4D7FE2921BCC12050036E58E /* TabBarViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TabBarViewController.h; sourceTree = "<group>"; }; 4D7FE2931BCC12050036E58E /* TabBarViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TabBarViewController.m; sourceTree = "<group>"; }; + 4D7FE2951BCC29210036E58E /* JournalMainHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalMainHeaderView.h; sourceTree = "<group>"; }; + 4D7FE2961BCC29210036E58E /* JournalMainHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalMainHeaderView.m; sourceTree = "<group>"; }; + 4D7FE2981BCC29650036E58E /* JournalMainHeaderView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = JournalMainHeaderView.xib; sourceTree = "<group>"; }; 4DCBE1301BC98EF90075BA2C /* JournalMainCollectionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalMainCollectionViewController.h; sourceTree = "<group>"; }; 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalMainCollectionViewController.m; sourceTree = "<group>"; }; 4DCBE1331BC9943D0075BA2C /* big_nerd_ranch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = big_nerd_ranch.png; sourceTree = "<group>"; }; @@ -182,6 +187,9 @@ children = ( 4DCBE1301BC98EF90075BA2C /* JournalMainCollectionViewController.h */, 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */, + 4D7FE2951BCC29210036E58E /* JournalMainHeaderView.h */, + 4D7FE2961BCC29210036E58E /* JournalMainHeaderView.m */, + 4D7FE2981BCC29650036E58E /* JournalMainHeaderView.xib */, 4DCBE1451BC9AD6A0075BA2C /* SearchAPIViewController.h */, 4DCBE1461BC9AD6A0075BA2C /* SearchAPIViewController.m */, 4DCBE1481BC9ADAE0075BA2C /* CreateJournalEntryViewController.h */, @@ -279,6 +287,7 @@ 9A2FFC3D1BC84BF200E880D3 /* Assets.xcassets in Resources */, 4DCBE13C1BC9943D0075BA2C /* big_nerd_ranch.png in Resources */, 9A2FFC381BC84BF200E880D3 /* Main.storyboard in Resources */, + 4D7FE2991BCC29650036E58E /* JournalMainHeaderView.xib in Resources */, 4DCBE1431BC9943D0075BA2C /* true_detective.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -339,6 +348,7 @@ buildActionMask = 2147483647; files = ( 9A2FFC321BC84BF200E880D3 /* AppDelegate.m in Sources */, + 4D7FE2971BCC29210036E58E /* JournalMainHeaderView.m in Sources */, 9A34656D1BCACDF40049337C /* iTunesSearchResult.m in Sources */, 4D7FE2941BCC12050036E58E /* TabBarViewController.m in Sources */, 4DCBE14A1BC9ADAE0075BA2C /* CreateJournalEntryViewController.m in Sources */, diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 5a5317a..20efe08 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -599,7 +599,7 @@ </state> <connections> <action selector="logToJournalButtonTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="bF7-vG-sm2"/> - <segue destination="WZe-UX-wgc" kind="show" identifier="logToJournalSegue" id="j87-kS-bSt"/> + <segue destination="Gih-78-N3X" kind="show" identifier="logToJournalSegue" id="uPF-D8-Ln2"/> </connections> </button> </subviews> @@ -961,6 +961,6 @@ </resources> <inferredMetricsTieBreakers> <segue reference="a4i-zx-cvK"/> - <segue reference="j87-kS-bSt"/> + <segue reference="uPF-D8-Ln2"/> </inferredMetricsTieBreakers> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.h b/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.h new file mode 100644 index 0000000..1d82204 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.h @@ -0,0 +1,15 @@ +// +// JournalMainHeaderView.h +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/12/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface JournalMainHeaderView : UITableViewHeaderFooterView + +@property (strong, nonatomic) IBOutlet UILabel *sectionHeaderLabel; + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.m b/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.m new file mode 100644 index 0000000..90614a0 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.m @@ -0,0 +1,21 @@ +// +// JournalMainHeaderView.m +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/12/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "JournalMainHeaderView.h" + +@implementation JournalMainHeaderView + +/* +// Only override drawRect: if you perform custom drawing. +// An empty implementation adversely affects performance during animation. +- (void)drawRect:(CGRect)rect { + // Drawing code +} +*/ + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.xib b/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.xib new file mode 100644 index 0000000..1b62355 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.xib @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> + <dependencies> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> + </dependencies> + <objects> + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <view contentMode="scaleToFill" id="CGd-9b-SxA" customClass="JournalMainHeaderView"> + <rect key="frame" x="0.0" y="0.0" width="600" height="50"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MONTH, YEAR" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bge-hj-SpZ"> + <rect key="frame" x="240.5" y="15" width="119.5" height="20.5"/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/> + <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstItem="bge-hj-SpZ" firstAttribute="centerX" secondItem="CGd-9b-SxA" secondAttribute="centerX" id="UOg-Qj-doK"/> + <constraint firstItem="bge-hj-SpZ" firstAttribute="centerY" secondItem="CGd-9b-SxA" secondAttribute="centerY" id="syH-eg-UwH"/> + </constraints> + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> + <connections> + <outlet property="sectionHeaderLabel" destination="bge-hj-SpZ" id="CvL-BT-14U"/> + </connections> + <point key="canvasLocation" x="587" y="391"/> + </view> + </objects> +</document> diff --git a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h index 6afc7c2..0c13594 100644 --- a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h +++ b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h @@ -13,6 +13,7 @@ @property (nonatomic) NSString *artistName; @property (nonatomic) NSString *albumOrMovieName; @property (nonatomic) NSString *artworkURL; +@property (nonatomic) NSDate *addedDate; @end diff --git a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m index 21e66a8..37569a1 100644 --- a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m +++ b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m @@ -13,6 +13,7 @@ @implementation iTunesSearchResult @dynamic artistName; @dynamic artworkURL; @dynamic albumOrMovieName; +@dynamic addedDate; +(NSString *)parseClassName { From 30a6fb1ba7b929e27a7190d4ac3a39731a384a93 Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Mon, 12 Oct 2015 15:51:57 -0400 Subject: [PATCH 30/86] added custom table view cells --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 30 +++++--- .../JournalMainCollectionViewController.m | 34 ++------- .../Unit-2-Journal/JournalMainHeaderView.h | 15 ---- .../Unit-2-Journal/JournalMainHeaderView.m | 21 ------ .../Unit-2-Journal/JournalMainHeaderView.xib | 32 --------- .../Unit-2-Journal/SearchAPITableViewCell.h | 17 +++++ .../Unit-2-Journal/SearchAPITableViewCell.m | 28 ++++++++ .../Unit-2-Journal/SearchAPITableViewCell.xib | 67 +++++++++++++++++ .../Unit-2-Journal/SearchAPIViewController.m | 45 +++++------- .../Unit-2-Journal/WishListTableViewCell.h | 17 +++++ .../Unit-2-Journal/WishListTableViewCell.m | 28 ++++++++ .../Unit-2-Journal/WishListTableViewCell.xib | 68 ++++++++++++++++++ .../WishListTableViewController.m | 16 ++++- 14 files changed, 278 insertions(+), 140 deletions(-) delete mode 100644 Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.h delete mode 100644 Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.m delete mode 100644 Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.xib create mode 100644 Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.h create mode 100644 Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.m create mode 100644 Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib create mode 100644 Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.h create mode 100644 Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m create mode 100644 Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 866584d756fb497de9a3975a36bfc13949a557c7..7a0da41e4d73b40df44d9a60f667045de01b1f3f 100644 GIT binary patch delta 59 zcmV-B0L1@<FoZC$kp%+3jFbNaG!JcWL_}nDbYlPj(m}e90F(X%HIoYl?gDlElV1in RlQRdN0g#b#HM0i@{ST)L7DWI6 delta 59 zcmV-B0L1@<FoZC$kp%*}Uz7g?G!JcWL_}nDbYlPj(m|qU0F(X%HIoYl?gC_*lV1in RlQRdN0f3QlHM0i@{SS;l6;J>G diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 79bd4d9..e734707 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -8,8 +8,10 @@ /* Begin PBXBuildFile section */ 4D7FE2941BCC12050036E58E /* TabBarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7FE2931BCC12050036E58E /* TabBarViewController.m */; settings = {ASSET_TAGS = (); }; }; - 4D7FE2971BCC29210036E58E /* JournalMainHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7FE2961BCC29210036E58E /* JournalMainHeaderView.m */; settings = {ASSET_TAGS = (); }; }; - 4D7FE2991BCC29650036E58E /* JournalMainHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4D7FE2981BCC29650036E58E /* JournalMainHeaderView.xib */; settings = {ASSET_TAGS = (); }; }; + 4D7FE29D1BCC32170036E58E /* SearchAPITableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7FE29B1BCC32170036E58E /* SearchAPITableViewCell.m */; settings = {ASSET_TAGS = (); }; }; + 4D7FE29E1BCC32170036E58E /* SearchAPITableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4D7FE29C1BCC32170036E58E /* SearchAPITableViewCell.xib */; settings = {ASSET_TAGS = (); }; }; + 4D7FE2A51BCC41A00036E58E /* WishListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7FE2A31BCC41A00036E58E /* WishListTableViewCell.m */; settings = {ASSET_TAGS = (); }; }; + 4D7FE2A61BCC41A00036E58E /* WishListTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4D7FE2A41BCC41A00036E58E /* WishListTableViewCell.xib */; settings = {ASSET_TAGS = (); }; }; 4DCBE1321BC98EF90075BA2C /* JournalMainCollectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */; settings = {ASSET_TAGS = (); }; }; 4DCBE13C1BC9943D0075BA2C /* big_nerd_ranch.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1331BC9943D0075BA2C /* big_nerd_ranch.png */; settings = {ASSET_TAGS = (); }; }; 4DCBE13D1BC9943D0075BA2C /* destroyer.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1341BC9943D0075BA2C /* destroyer.png */; settings = {ASSET_TAGS = (); }; }; @@ -43,9 +45,12 @@ 2BC0A6490F88476E5C31E3B1 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = "<group>"; }; 4D7FE2921BCC12050036E58E /* TabBarViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TabBarViewController.h; sourceTree = "<group>"; }; 4D7FE2931BCC12050036E58E /* TabBarViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TabBarViewController.m; sourceTree = "<group>"; }; - 4D7FE2951BCC29210036E58E /* JournalMainHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalMainHeaderView.h; sourceTree = "<group>"; }; - 4D7FE2961BCC29210036E58E /* JournalMainHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalMainHeaderView.m; sourceTree = "<group>"; }; - 4D7FE2981BCC29650036E58E /* JournalMainHeaderView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = JournalMainHeaderView.xib; sourceTree = "<group>"; }; + 4D7FE29A1BCC32170036E58E /* SearchAPITableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchAPITableViewCell.h; sourceTree = "<group>"; }; + 4D7FE29B1BCC32170036E58E /* SearchAPITableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchAPITableViewCell.m; sourceTree = "<group>"; }; + 4D7FE29C1BCC32170036E58E /* SearchAPITableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchAPITableViewCell.xib; sourceTree = "<group>"; }; + 4D7FE2A21BCC41A00036E58E /* WishListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WishListTableViewCell.h; sourceTree = "<group>"; }; + 4D7FE2A31BCC41A00036E58E /* WishListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WishListTableViewCell.m; sourceTree = "<group>"; }; + 4D7FE2A41BCC41A00036E58E /* WishListTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WishListTableViewCell.xib; sourceTree = "<group>"; }; 4DCBE1301BC98EF90075BA2C /* JournalMainCollectionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalMainCollectionViewController.h; sourceTree = "<group>"; }; 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalMainCollectionViewController.m; sourceTree = "<group>"; }; 4DCBE1331BC9943D0075BA2C /* big_nerd_ranch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = big_nerd_ranch.png; sourceTree = "<group>"; }; @@ -187,15 +192,18 @@ children = ( 4DCBE1301BC98EF90075BA2C /* JournalMainCollectionViewController.h */, 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */, - 4D7FE2951BCC29210036E58E /* JournalMainHeaderView.h */, - 4D7FE2961BCC29210036E58E /* JournalMainHeaderView.m */, - 4D7FE2981BCC29650036E58E /* JournalMainHeaderView.xib */, 4DCBE1451BC9AD6A0075BA2C /* SearchAPIViewController.h */, 4DCBE1461BC9AD6A0075BA2C /* SearchAPIViewController.m */, + 4D7FE29A1BCC32170036E58E /* SearchAPITableViewCell.h */, + 4D7FE29B1BCC32170036E58E /* SearchAPITableViewCell.m */, + 4D7FE29C1BCC32170036E58E /* SearchAPITableViewCell.xib */, 4DCBE1481BC9ADAE0075BA2C /* CreateJournalEntryViewController.h */, 4DCBE1491BC9ADAE0075BA2C /* CreateJournalEntryViewController.m */, 4DCBE14B1BC9ADE00075BA2C /* WishListTableViewController.h */, 4DCBE14C1BC9ADE00075BA2C /* WishListTableViewController.m */, + 4D7FE2A21BCC41A00036E58E /* WishListTableViewCell.h */, + 4D7FE2A31BCC41A00036E58E /* WishListTableViewCell.m */, + 4D7FE2A41BCC41A00036E58E /* WishListTableViewCell.xib */, 4DCBE14E1BC9BD800075BA2C /* ViewCompletedEntryViewController.h */, 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */, 4D7FE2921BCC12050036E58E /* TabBarViewController.h */, @@ -278,6 +286,8 @@ files = ( 4DCBE13F1BC9943D0075BA2C /* lean_startup.png in Resources */, 9A2FFC401BC84BF200E880D3 /* LaunchScreen.storyboard in Resources */, + 4D7FE2A61BCC41A00036E58E /* WishListTableViewCell.xib in Resources */, + 4D7FE29E1BCC32170036E58E /* SearchAPITableViewCell.xib in Resources */, 4DCBE1441BC9943D0075BA2C /* x-files.png in Resources */, 4DCBE13E1BC9943D0075BA2C /* drake.png in Resources */, 4DCBE1401BC9943D0075BA2C /* run_the_jewels.png in Resources */, @@ -287,7 +297,6 @@ 9A2FFC3D1BC84BF200E880D3 /* Assets.xcassets in Resources */, 4DCBE13C1BC9943D0075BA2C /* big_nerd_ranch.png in Resources */, 9A2FFC381BC84BF200E880D3 /* Main.storyboard in Resources */, - 4D7FE2991BCC29650036E58E /* JournalMainHeaderView.xib in Resources */, 4DCBE1431BC9943D0075BA2C /* true_detective.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -348,7 +357,6 @@ buildActionMask = 2147483647; files = ( 9A2FFC321BC84BF200E880D3 /* AppDelegate.m in Sources */, - 4D7FE2971BCC29210036E58E /* JournalMainHeaderView.m in Sources */, 9A34656D1BCACDF40049337C /* iTunesSearchResult.m in Sources */, 4D7FE2941BCC12050036E58E /* TabBarViewController.m in Sources */, 4DCBE14A1BC9ADAE0075BA2C /* CreateJournalEntryViewController.m in Sources */, @@ -360,8 +368,10 @@ 5A50331A1BC8D0E4001CBA5C /* MainTableViewController.m in Sources */, 9AAB40061BC9FABC00FD7227 /* APIManager.m in Sources */, 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */, + 4D7FE2A51BCC41A00036E58E /* WishListTableViewCell.m in Sources */, 4DCBE1501BC9BD800075BA2C /* ViewCompletedEntryViewController.m in Sources */, 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */, + 4D7FE29D1BCC32170036E58E /* SearchAPITableViewCell.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index db07dce..a4686ee 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -22,43 +22,17 @@ - (void)viewDidLoad collectionImages = [NSArray arrayWithObjects:@"destroyer.png", @"drake.png", @"big_nerd_ranch.png", @"talking_heads.png", @"true_detective", @"sleater_kinney.png", @"x-files.png", @"run_the_jewels.png", @"lean_startup.png", nil]; - //[self setUpSwipeGestures]; - self.collectionView.alwaysBounceVertical = YES; +// UINib *headerNib = [UINib nibWithNibName:@"CollectionHeaderIdentifier" bundle:nil]; // header nib +// [self.collectionView registerNib:headerNib +// forCellWithReuseIdentifier:@"CollectionHeaderIdentifier"]; + // [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"]; } -//#pragma mark - setup swipe gestures -// -//- (void)setUpSwipeGestures -//{ -// UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedLeft:)]; -// swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; -// [self.view addGestureRecognizer:swipeLeft]; -// -// UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedRight:)]; -// swipeRight.direction = UISwipeGestureRecognizerDirectionRight; -// [self.view addGestureRecognizer:swipeRight]; -//} -// -//- (void)userSwipedLeft:(UISwipeGestureRecognizer*)swipe -//{ -// if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { -// [self performSegueWithIdentifier:@"pushToSearch" sender:self]; -// } -//} -// -//- (void)userSwipedRight:(UISwipeGestureRecognizer*)swipe -//{ -// if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { -// [self performSegueWithIdentifier:@"pushToWishList" sender:self]; -// } -//} - #pragma mark - Navigation - //- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // //} diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.h b/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.h deleted file mode 100644 index 1d82204..0000000 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// JournalMainHeaderView.h -// Unit-2-Journal -// -// Created by Shena Yoshida on 10/12/15. -// Copyright © 2015 Jamaal Sedayao. All rights reserved. -// - -#import <UIKit/UIKit.h> - -@interface JournalMainHeaderView : UITableViewHeaderFooterView - -@property (strong, nonatomic) IBOutlet UILabel *sectionHeaderLabel; - -@end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.m b/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.m deleted file mode 100644 index 90614a0..0000000 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.m +++ /dev/null @@ -1,21 +0,0 @@ -// -// JournalMainHeaderView.m -// Unit-2-Journal -// -// Created by Shena Yoshida on 10/12/15. -// Copyright © 2015 Jamaal Sedayao. All rights reserved. -// - -#import "JournalMainHeaderView.h" - -@implementation JournalMainHeaderView - -/* -// Only override drawRect: if you perform custom drawing. -// An empty implementation adversely affects performance during animation. -- (void)drawRect:(CGRect)rect { - // Drawing code -} -*/ - -@end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.xib b/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.xib deleted file mode 100644 index 1b62355..0000000 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainHeaderView.xib +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> - <dependencies> - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> - </dependencies> - <objects> - <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> - <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> - <view contentMode="scaleToFill" id="CGd-9b-SxA" customClass="JournalMainHeaderView"> - <rect key="frame" x="0.0" y="0.0" width="600" height="50"/> - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <subviews> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MONTH, YEAR" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bge-hj-SpZ"> - <rect key="frame" x="240.5" y="15" width="119.5" height="20.5"/> - <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/> - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> - <nil key="highlightedColor"/> - </label> - </subviews> - <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> - <constraints> - <constraint firstItem="bge-hj-SpZ" firstAttribute="centerX" secondItem="CGd-9b-SxA" secondAttribute="centerX" id="UOg-Qj-doK"/> - <constraint firstItem="bge-hj-SpZ" firstAttribute="centerY" secondItem="CGd-9b-SxA" secondAttribute="centerY" id="syH-eg-UwH"/> - </constraints> - <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> - <connections> - <outlet property="sectionHeaderLabel" destination="bge-hj-SpZ" id="CvL-BT-14U"/> - </connections> - <point key="canvasLocation" x="587" y="391"/> - </view> - </objects> -</document> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.h b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.h new file mode 100644 index 0000000..35f2df8 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.h @@ -0,0 +1,17 @@ +// +// SearchAPITableViewCell.h +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/12/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface SearchAPITableViewCell : UITableViewCell + +@property (weak, nonatomic) IBOutlet UILabel *titleLabel; +@property (weak, nonatomic) IBOutlet UILabel *authorArtistDirectorLabel; +@property (weak, nonatomic) IBOutlet UIImageView *artworkImage; + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.m b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.m new file mode 100644 index 0000000..da2983d --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.m @@ -0,0 +1,28 @@ +// +// SearchAPITableViewCell.m +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/12/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "SearchAPITableViewCell.h" + +@implementation SearchAPITableViewCell + +- (void)awakeFromNib { + // Initialization code + + self.artworkImage.clipsToBounds = YES; + self.artworkImage.layer.borderColor = [UIColor blackColor].CGColor; + self.artworkImage.layer.borderWidth = 2.0; + self.artworkImage.layer.cornerRadius = 25.0; +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib new file mode 100644 index 0000000..cea2c62 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> + <dependencies> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> + <capability name="Constraints to layout margins" minToolsVersion="6.0"/> + </dependencies> + <objects> + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="SearchAPITableViewCellIdentifier" rowHeight="88" id="KGk-i7-Jjw" customClass="SearchAPITableViewCell"> + <rect key="frame" x="0.0" y="0.0" width="406" height="88"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> + <rect key="frame" x="0.0" y="0.0" width="406" height="87.5"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Fq8-dI-Pdu"> + <rect key="frame" x="8" y="13" width="70" height="70"/> + <constraints> + <constraint firstAttribute="width" constant="70" id="2eV-5F-kaH"/> + <constraint firstAttribute="height" constant="70" id="WWX-Va-u7Y"/> + </constraints> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Author/Director/Artist" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="y9p-St-OV6"> + <rect key="frame" x="86" y="58" width="312" height="20.5"/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TITLE" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Sl4-bL-ILp"> + <rect key="frame" x="86" y="18" width="312" height="27"/> + <constraints> + <constraint firstAttribute="height" constant="27" id="fZh-sd-hfl"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <constraints> + <constraint firstItem="y9p-St-OV6" firstAttribute="trailing" secondItem="H2p-sc-9uM" secondAttribute="trailingMargin" id="1NL-wd-c56"/> + <constraint firstItem="Sl4-bL-ILp" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="topMargin" constant="10" id="2LX-s8-bqg"/> + <constraint firstItem="Sl4-bL-ILp" firstAttribute="leading" secondItem="Fq8-dI-Pdu" secondAttribute="trailing" constant="8" id="4zK-8N-uNE"/> + <constraint firstItem="Fq8-dI-Pdu" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leadingMargin" id="9WI-Oh-7QL"/> + <constraint firstItem="Fq8-dI-Pdu" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="topMargin" constant="5" id="Gca-vO-hfg"/> + <constraint firstItem="y9p-St-OV6" firstAttribute="top" secondItem="Sl4-bL-ILp" secondAttribute="bottom" constant="14" id="V0g-po-TYt"/> + <constraint firstItem="Sl4-bL-ILp" firstAttribute="trailing" secondItem="H2p-sc-9uM" secondAttribute="trailingMargin" id="WGp-qV-6gR"/> + <constraint firstItem="Fq8-dI-Pdu" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="aws-T4-erZ"/> + <constraint firstItem="y9p-St-OV6" firstAttribute="leading" secondItem="Fq8-dI-Pdu" secondAttribute="trailing" constant="8" id="cu3-eQ-m2z"/> + <constraint firstAttribute="bottomMargin" secondItem="Fq8-dI-Pdu" secondAttribute="bottom" constant="5" id="j8X-Ke-Y17"/> + <constraint firstAttribute="bottomMargin" secondItem="y9p-St-OV6" secondAttribute="bottom" constant="10" id="rIz-lU-OFg"/> + </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="V0g-po-TYt"/> + </mask> + </variation> + </tableViewCellContentView> + <accessibility key="accessibilityConfiguration" identifier=""/> + <connections> + <outlet property="artworkImage" destination="Fq8-dI-Pdu" id="vEj-X3-ezi"/> + <outlet property="authorArtistDirectorLabel" destination="y9p-St-OV6" id="8CJ-K5-qPV"/> + <outlet property="titleLabel" destination="Sl4-bL-ILp" id="npm-fk-f0W"/> + </connections> + <point key="canvasLocation" x="622" y="492"/> + </tableViewCell> + </objects> +</document> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 0d3b4b8..f44fc45 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -11,6 +11,7 @@ #import "APIManager.h" #import "iTunesSearchResult.h" #import "CreateJournalEntryViewController.h" +#import "SearchAPITableViewCell.h" // add custom cell @interface SearchAPIViewController () < @@ -36,34 +37,19 @@ @implementation SearchAPIViewController - (void)viewDidLoad { [super viewDidLoad]; - // [self setUpSwipeGestures]; self.tableView.delegate = self; self.tableView.dataSource = self; self.searchTextField.delegate = self; + // set up custom cell .xib + UINib *nib = [UINib nibWithNibName:@"SearchAPITableViewCell" bundle:nil]; + [self.tableView registerNib:nib forCellReuseIdentifier:@"SearchAPITableViewCellIdentifier"]; + self.tableView.rowHeight = UITableViewAutomaticDimension; + self.tableView.estimatedRowHeight = 35.0; } -//#pragma mark - setup swipe gestures -// -//- (void)setUpSwipeGestures -//{ -// UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(userSwipedRight:)]; -// swipeRight.direction = UISwipeGestureRecognizerDirectionRight; -// [self.view addGestureRecognizer:swipeRight]; -//} -// -//- (void)userSwipedRight:(UISwipeGestureRecognizer*)swipe -//{ -// if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { -// -// [self performSegueWithIdentifier:@"pushBackHome" sender:self]; -// -// // [self dismissViewControllerAnimated:YES completion:nil]; -// } -//} - #pragma mark - setup buttons - (IBAction)mediaButtonTypeSelected:(id)sender { @@ -150,21 +136,22 @@ - (BOOL)textFieldShouldReturn:(UITextField *)textField{ return YES; } -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ - return self.searchResults.count; - -} - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1; } --(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"APIResultsIdentifier" forIndexPath:indexPath]; +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ + return self.searchResults.count; +} + +-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + SearchAPITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SearchAPITableViewCellIdentifier" forIndexPath:indexPath]; iTunesSearchResult *searchResult = self.searchResults[indexPath.row]; - cell.textLabel.text = searchResult.albumOrMovieName; - cell.detailTextLabel.text = searchResult.artistName; + cell.titleLabel.text = searchResult.albumOrMovieName; + cell.authorArtistDirectorLabel.text = searchResult.artistName; NSString *artworkString = searchResult.artworkURL; NSURL *artworkURL = [NSURL URLWithString:artworkString]; @@ -176,7 +163,7 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS // NSLog(@"Image Data: %@", artworkData); // NSLog(@"Image: %@", artworkImage); - cell.imageView.image = artworkImage; + cell.artworkImage.image = artworkImage; cell.imageView.layer.borderWidth = 2.0; cell.imageView.layer.borderColor = [UIColor blackColor].CGColor; diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.h b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.h new file mode 100644 index 0000000..0f834b4 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.h @@ -0,0 +1,17 @@ +// +// WishListTableViewCell.h +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/12/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface WishListTableViewCell : UITableViewCell + +@property (weak, nonatomic) IBOutlet UILabel *titleLabel; +@property (weak, nonatomic) IBOutlet UILabel *authorArtistDirectorLabel; +@property (weak, nonatomic) IBOutlet UIImageView *artworkImage; + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m new file mode 100644 index 0000000..91a1cb7 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m @@ -0,0 +1,28 @@ +// +// WishListTableViewCell.m +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/12/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "WishListTableViewCell.h" + +@implementation WishListTableViewCell + +- (void)awakeFromNib { + // Initialization code + + self.artworkImage.clipsToBounds = YES; + self.artworkImage.layer.borderColor = [UIColor blackColor].CGColor; + self.artworkImage.layer.borderWidth = 2.0; + self.artworkImage.layer.cornerRadius = 25.0; +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib new file mode 100644 index 0000000..f339eeb --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> + <dependencies> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> + <capability name="Constraints to layout margins" minToolsVersion="6.0"/> + </dependencies> + <objects> + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="WishListTableViewCellIdentifier" rowHeight="95" id="KGk-i7-Jjw" customClass="WishListTableViewCell"> + <rect key="frame" x="0.0" y="0.0" width="349" height="95"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> + <rect key="frame" x="0.0" y="0.0" width="349" height="94.5"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ywi-Ne-nLf"> + <rect key="frame" x="93" y="18" width="248" height="21"/> + <constraints> + <constraint firstAttribute="height" constant="21" id="VyS-9k-VPX"/> + </constraints> + <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Vb0-5u-rmQ"> + <rect key="frame" x="13" y="13" width="70" height="70"/> + <constraints> + <constraint firstAttribute="height" constant="70" id="5AS-OM-vRD"/> + <constraint firstAttribute="width" constant="70" id="7pJ-oI-6VV"/> + </constraints> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TR1-Ae-Cd4"> + <rect key="frame" x="93" y="63" width="248" height="20.5"/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <constraints> + <constraint firstItem="Vb0-5u-rmQ" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="09g-Mw-Qwu"/> + <constraint firstItem="TR1-Ae-Cd4" firstAttribute="leading" secondItem="Vb0-5u-rmQ" secondAttribute="trailing" constant="10" id="4OP-GU-9RR"/> + <constraint firstItem="Vb0-5u-rmQ" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="Ev5-Ck-zXA"/> + <constraint firstItem="TR1-Ae-Cd4" firstAttribute="trailing" secondItem="H2p-sc-9uM" secondAttribute="trailingMargin" id="EzE-1F-wek"/> + <constraint firstAttribute="bottomMargin" secondItem="Vb0-5u-rmQ" secondAttribute="bottom" constant="5" id="aca-sS-buy"/> + <constraint firstItem="ywi-Ne-nLf" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="topMargin" constant="10" id="c8i-sE-pUZ"/> + <constraint firstItem="TR1-Ae-Cd4" firstAttribute="top" secondItem="ywi-Ne-nLf" secondAttribute="bottom" constant="24" id="cJ7-RE-dJF"/> + <constraint firstItem="Vb0-5u-rmQ" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leadingMargin" constant="5" id="eWz-lZ-geO"/> + <constraint firstAttribute="bottomMargin" secondItem="TR1-Ae-Cd4" secondAttribute="bottom" constant="10" id="h2x-1e-3Hu"/> + <constraint firstItem="ywi-Ne-nLf" firstAttribute="trailing" secondItem="H2p-sc-9uM" secondAttribute="trailingMargin" id="ixp-vc-hZB"/> + <constraint firstItem="ywi-Ne-nLf" firstAttribute="leading" secondItem="Vb0-5u-rmQ" secondAttribute="trailing" constant="10" id="l25-Mm-zvV"/> + <constraint firstItem="Vb0-5u-rmQ" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="topMargin" constant="5" id="syJ-0J-drL"/> + </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="Ev5-Ck-zXA"/> + </mask> + </variation> + </tableViewCellContentView> + <connections> + <outlet property="artworkImage" destination="Vb0-5u-rmQ" id="YH4-Ar-buq"/> + <outlet property="authorArtistDirectorLabel" destination="TR1-Ae-Cd4" id="MLM-qU-syZ"/> + <outlet property="titleLabel" destination="ywi-Ne-nLf" id="8lN-ad-NzW"/> + </connections> + <point key="canvasLocation" x="594.5" y="436.5"/> + </tableViewCell> + </objects> +</document> diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index 2d6b9b9..1e1c236 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -7,6 +7,7 @@ // #import "WishListTableViewController.h" +#import "WishListTableViewCell.h" @interface WishListTableViewController () @@ -17,7 +18,15 @@ @implementation WishListTableViewController - (void)viewDidLoad { [super viewDidLoad]; -// [self setUpSwipeGestures]; + + // [self setUpSwipeGestures]; + + // set up custom cell .xib + UINib *nib = [UINib nibWithNibName:@"WishListTableViewCell" bundle:nil]; + [self.tableView registerNib:nib forCellReuseIdentifier:@"WishListTableViewCellIdentifier"]; + + self.tableView.rowHeight = UITableViewAutomaticDimension; + self.tableView.estimatedRowHeight = 35.0; } //#pragma mark - swipe gestures @@ -49,8 +58,9 @@ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger return 5; } -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"WishListIdentifier" forIndexPath:indexPath]; +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + WishListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"WishListTableViewCellIdentifier" forIndexPath:indexPath]; // Configure the cell... From fa3551fedd0f7f0db03fdc6674e77da312ded791 Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Mon, 12 Oct 2015 16:01:38 -0400 Subject: [PATCH 31/86] moved segue --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 3 +-- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 7a0da41e4d73b40df44d9a60f667045de01b1f3f..859b7772206b08bc14019b0899becfb77df7829d 100644 GIT binary patch delta 19 acmZoMXffFElZ~n9{^WQzi_OOD7X<)Lq6cXJ delta 19 acmZoMXffFElZ~nL&*XSEi_OOD7X<)M<p+rX diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 20efe08..74b7bbf 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -599,7 +599,7 @@ </state> <connections> <action selector="logToJournalButtonTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="bF7-vG-sm2"/> - <segue destination="Gih-78-N3X" kind="show" identifier="logToJournalSegue" id="uPF-D8-Ln2"/> + <segue destination="sU9-FA-LDO" kind="show" identifier="logToJournalSegue" id="1dJ-1Z-3H8"/> </connections> </button> </subviews> @@ -961,6 +961,5 @@ </resources> <inferredMetricsTieBreakers> <segue reference="a4i-zx-cvK"/> - <segue reference="uPF-D8-Ln2"/> </inferredMetricsTieBreakers> </document> From ab09e0fc6f37ff15163dbf649d89d3be6ec7eb4a Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Mon, 12 Oct 2015 16:05:33 -0400 Subject: [PATCH 32/86] moved wish list segue to cell --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 859b7772206b08bc14019b0899becfb77df7829d..550e1de93617bc1332f3fb54cc697948d1ba9d31 100644 GIT binary patch delta 18 ZcmZoMXffFElZ~->avYoGW@Gk?0sul?28sXx delta 19 acmZoMXffFElZ~n9{^WQzi_OOD7X<)Lq6cXJ diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 74b7bbf..d4bc46d 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -714,7 +714,7 @@ </tableViewCellContentView> <animations/> <connections> - <segue destination="aXS-um-aw2" kind="show" id="fje-S5-GG0"/> + <segue destination="aXS-um-aw2" kind="show" id="Ggq-sb-ccX"/> </connections> </tableViewCell> </prototypes> @@ -960,6 +960,6 @@ <image name="star" width="24" height="24"/> </resources> <inferredMetricsTieBreakers> - <segue reference="a4i-zx-cvK"/> + <segue reference="Ggq-sb-ccX"/> </inferredMetricsTieBreakers> </document> From 954b8535aed49f4188b669d924bddfae6806d342 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Mon, 12 Oct 2015 18:48:49 -0400 Subject: [PATCH 33/86] trying to pass data to JournalMain --- Unit-2-Journal/Unit-2-Journal/.DS_Store | Bin 10244 -> 10244 bytes .../CreateJournalEntryViewController.m | 25 +++++++++++++----- .../JournalMainCollectionViewController.h | 6 ++++- .../JournalMainCollectionViewController.m | 10 ++++++- 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/.DS_Store b/Unit-2-Journal/Unit-2-Journal/.DS_Store index e24fe8b4f79596311dfe00470af89e836580a0b2..69b0e76089fd7eeeefe9f3f56f1ed26e9ea305a0 100644 GIT binary patch delta 46 vcmZn(XbIS$A;PFOSyRNFv2Jp{h%%ggP+EBN8xe8t&Fl)lSvLO@VPXaVMxqWv delta 49 zcmZn(XbIS$A;PFSSyRM)vVoZ3<Yo~;C@)J~aPxZ+3GRsvESuRCezR<56J=rs0B4mA A^8f$< diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index 3c417fe..5a6c66f 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -8,6 +8,7 @@ #import "CreateJournalEntryViewController.h" #import "JournalPost.h" +#import "JournalMainCollectionViewController.h" @interface CreateJournalEntryViewController () <UITextViewDelegate> @@ -18,6 +19,9 @@ @interface CreateJournalEntryViewController () <UITextViewDelegate> @property (strong, nonatomic) IBOutlet UIButton *doneEditingButton; @property (strong, nonatomic) IBOutlet UIButton *starButtonOne; +@property (nonatomic) JournalPost *journalPost; +@property (nonatomic) NSMutableArray *journalPostArray; + @end @implementation CreateJournalEntryViewController @@ -25,6 +29,8 @@ @implementation CreateJournalEntryViewController - (void)viewDidLoad { [super viewDidLoad]; + self.journalPostArray = [[NSMutableArray alloc]init]; + NSLog(@"Data has been passed: %@",self.postSearchResult); self.doneEditingButton.hidden = YES; @@ -74,19 +80,26 @@ - (IBAction)logToJournalButtonTapped:(id)sender { journalPost.postText = self.textView.text; journalPost.postSubject = self.postSearchResult; - NSLog(@"Journal Post: %@",journalPost); + self.journalPost = journalPost; + + [self.journalPostArray addObject:self.journalPost]; + + NSLog(@"Journal Post: %@",self.journalPost); } -/* #pragma mark - Navigation - // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. + + NSLog(@"Segue"); + + if ([[segue identifier]isEqualToString:@"logToJournalSegue"]) { + JournalMainCollectionViewController *viewController = segue.destinationViewController; + [viewController.allJournalPosts addObjectsFromArray:self.journalPostArray]; + } } - */ + @end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h index 65a2f26..61f50fe 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h @@ -7,11 +7,15 @@ // #import <UIKit/UIKit.h> +#import "JournalPost.h" +#import "CreateJournalEntryViewController.h" @interface JournalMainCollectionViewController : UICollectionViewController { - NSArray *collectionImages; + NSMutableArray *collectionImages; } +@property (nonatomic) NSMutableArray *allJournalPosts; +@property (nonatomic) JournalPost *journalPostToAdd; @end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index db07dce..97fe2f5 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -20,7 +20,15 @@ - (void)viewDidLoad { [super viewDidLoad]; - collectionImages = [NSArray arrayWithObjects:@"destroyer.png", @"drake.png", @"big_nerd_ranch.png", @"talking_heads.png", @"true_detective", @"sleater_kinney.png", @"x-files.png", @"run_the_jewels.png", @"lean_startup.png", nil]; + if (self.allJournalPosts == nil){ + self.allJournalPosts = [[NSMutableArray alloc]init]; + } else { + nil; + } + + NSLog(@"All Journal Posts: %@", self.allJournalPosts); + + collectionImages = [NSMutableArray arrayWithObjects:@"destroyer.png", @"drake.png", @"big_nerd_ranch.png", @"talking_heads.png", @"true_detective", @"sleater_kinney.png", @"x-files.png", @"run_the_jewels.png", @"lean_startup.png", nil]; //[self setUpSwipeGestures]; From 6f725cb37f6345fae6c3a7528497f2b01a29e09a Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Mon, 12 Oct 2015 20:16:04 -0400 Subject: [PATCH 34/86] able to add journal entry to JournalMainViewController --- .DS_Store | Bin 8196 -> 8196 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 12 ++++---- .../Unit-2-Journal/Base.lproj/Main.storyboard | 2 +- .../CreateJournalEntryViewController.m | 20 ++++++++++---- .../JournalMainCollectionViewController.m | 26 ++++++++++++++++-- 5 files changed, 45 insertions(+), 15 deletions(-) diff --git a/.DS_Store b/.DS_Store index 535d7a832296e85908de1d363b760b71f7d1940c..230b4e2a70d055d8f79ad89ebfd4c53ba322ebc3 100644 GIT binary patch delta 19 acmZp1XmQx^N|4ReR7b(cbn^#65k3G!jRq|M delta 19 acmZp1XmQx^N|4RmR7b(cc=HEA5k3G!mj*2W diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 79ca65e..4a073b3 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -197,16 +197,10 @@ 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */, 4DCBE1451BC9AD6A0075BA2C /* SearchAPIViewController.h */, 4DCBE1461BC9AD6A0075BA2C /* SearchAPIViewController.m */, - 4D7FE29A1BCC32170036E58E /* SearchAPITableViewCell.h */, - 4D7FE29B1BCC32170036E58E /* SearchAPITableViewCell.m */, - 4D7FE29C1BCC32170036E58E /* SearchAPITableViewCell.xib */, 4DCBE1481BC9ADAE0075BA2C /* CreateJournalEntryViewController.h */, 4DCBE1491BC9ADAE0075BA2C /* CreateJournalEntryViewController.m */, 4DCBE14B1BC9ADE00075BA2C /* WishListTableViewController.h */, 4DCBE14C1BC9ADE00075BA2C /* WishListTableViewController.m */, - 4D7FE2A21BCC41A00036E58E /* WishListTableViewCell.h */, - 4D7FE2A31BCC41A00036E58E /* WishListTableViewCell.m */, - 4D7FE2A41BCC41A00036E58E /* WishListTableViewCell.xib */, 4DCBE14E1BC9BD800075BA2C /* ViewCompletedEntryViewController.h */, 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */, 4D7FE2921BCC12050036E58E /* TabBarViewController.h */, @@ -224,6 +218,12 @@ 9A34656C1BCACDF40049337C /* iTunesSearchResult.m */, 9A29371E1BCC26FE00ACEEE0 /* JournalPost.h */, 9A29371F1BCC26FE00ACEEE0 /* JournalPost.m */, + 4D7FE29A1BCC32170036E58E /* SearchAPITableViewCell.h */, + 4D7FE29B1BCC32170036E58E /* SearchAPITableViewCell.m */, + 4D7FE29C1BCC32170036E58E /* SearchAPITableViewCell.xib */, + 4D7FE2A21BCC41A00036E58E /* WishListTableViewCell.h */, + 4D7FE2A31BCC41A00036E58E /* WishListTableViewCell.m */, + 4D7FE2A41BCC41A00036E58E /* WishListTableViewCell.xib */, ); name = "Classes & Managers"; sourceTree = "<group>"; diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 39030ff..e9cd97f 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -187,7 +187,7 @@ </collectionViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="blD-s8-5JB" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="549" y="2512"/> + <point key="canvasLocation" x="537" y="2528"/> </scene> <!--settings--> <scene sceneID="PlQ-SS-pZx"> diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index 5a6c66f..e56046d 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -8,6 +8,7 @@ #import "CreateJournalEntryViewController.h" #import "JournalPost.h" +#import "TabBarViewController.h" #import "JournalMainCollectionViewController.h" @interface CreateJournalEntryViewController () <UITextViewDelegate> @@ -94,12 +95,21 @@ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { NSLog(@"Segue"); - if ([[segue identifier]isEqualToString:@"logToJournalSegue"]) { - JournalMainCollectionViewController *viewController = segue.destinationViewController; - [viewController.allJournalPosts addObjectsFromArray:self.journalPostArray]; - } +// if ([[segue identifier]isEqualToString:@"logToJournalSegue"]) { +// +// NSLog(@"Segue to Tab"); +// JournalMainCollectionViewController *viewController = [[JournalMainCollectionViewController alloc]init]; + TabBarViewController *tabVC = segue.destinationViewController; + JournalMainCollectionViewController *viewController = [[tabVC viewControllers] objectAtIndex:2]; + //[viewController.allJournalPosts addObjectsFromArray:self.journalPostArray]; + + viewController.journalPostToAdd = self. journalPost; + [tabVC setSelectedIndex:2]; + // } } - +//locationsHome* vc = [[locationsHome alloc] init]; +//UITabBarController* tbc = [segue destinationViewController]; +//vc = (locationsHome *)[[tbc customizableViewControllers] objectAtIndex:0]; @end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index 81da6d5..063f2fc 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -25,8 +25,15 @@ - (void)viewDidLoad } else { nil; } + + NSLog(@"Current Journal Post: %@", self.journalPostToAdd); + + if (self.journalPostToAdd != nil){ + [self. allJournalPosts addObject:self.journalPostToAdd]; + } + + NSLog(@"All Journal Posts: %@", self.allJournalPosts); - NSLog(@"All Journal Posts: %@", self.allJournalPosts); collectionImages = [NSMutableArray arrayWithObjects:@"destroyer.png", @"drake.png", @"big_nerd_ranch.png", @"talking_heads.png", @"true_detective", @"sleater_kinney.png", @"x-files.png", @"run_the_jewels.png", @"lean_startup.png", nil]; @@ -54,7 +61,8 @@ - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return collectionImages.count; + //return collectionImages.count; + return self.allJournalPosts.count; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ @@ -63,7 +71,19 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; UIImageView *collectionImageView = (UIImageView *)[cell viewWithTag:100]; - collectionImageView.image = [UIImage imageNamed:[collectionImages objectAtIndex:indexPath.row]]; + + //collectionImageView.image = [UIImage imageNamed:[collectionImages objectAtIndex:indexPath.row]]; + + JournalPost *thisResult = self.allJournalPosts[indexPath.row]; + iTunesSearchResult *iTunes = thisResult.postSubject; + + NSString *imageString = iTunes.artworkURL; + NSURL *imageURL = [NSURL URLWithString:imageString]; + NSData *imageData = [NSData dataWithContentsOfURL:imageURL]; + UIImage *image = [UIImage imageWithData:imageData]; + + collectionImageView.image = image; + cell.layer.borderWidth = 2.0; cell.layer.borderColor = [UIColor blackColor].CGColor; From 500674f8c5b20ba869dc7b9db47215cbbe33de71 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Mon, 12 Oct 2015 23:40:22 -0400 Subject: [PATCH 35/86] added book and podcast searchability --- .../Unit-2-Journal/Base.lproj/Main.storyboard | 10 +++---- .../Unit-2-Journal/SearchAPIViewController.m | 28 +++++++++++++------ 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index e9cd97f..1841a7e 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -280,15 +280,15 @@ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kEa-FP-z2a"> <rect key="frame" x="150" y="0.0" width="150" height="100"/> <animations/> - <state key="normal" title="Other"/> + <state key="normal" title="podcast"/> <connections> - <action selector="mediaButtonOther:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="XpB-L1-XNH"/> + <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="aFT-bH-Jsi"/> </connections> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rgg-OH-neT"> <rect key="frame" x="0.0" y="0.0" width="150" height="100"/> <animations/> - <state key="normal" title="Books"/> + <state key="normal" title="books"/> <connections> <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="n38-IM-iTM"/> </connections> @@ -433,7 +433,7 @@ <outlet property="booksButton" destination="rgg-OH-neT" id="Ucr-iy-A9p"/> <outlet property="moviesButton" destination="CLE-DE-TTz" id="7LO-pm-d9U"/> <outlet property="musicButton" destination="cfG-sQ-zQZ" id="rag-AL-MMx"/> - <outlet property="otherButton" destination="kEa-FP-z2a" id="zZJ-KO-l1f"/> + <outlet property="podcastButton" destination="kEa-FP-z2a" id="tuc-aH-43L"/> <outlet property="searchTextField" destination="zob-sY-qha" id="CSN-S0-Rzp"/> <outlet property="tableView" destination="twc-ko-3Rx" id="4Cw-TH-Ai6"/> </connections> @@ -963,6 +963,6 @@ <image name="star" width="24" height="24"/> </resources> <inferredMetricsTieBreakers> - <segue reference="Ggq-sb-ccX"/> + <segue reference="a4i-zx-cvK"/> </inferredMetricsTieBreakers> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index f44fc45..38a9ce5 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -25,7 +25,7 @@ @interface SearchAPIViewController () @property (weak, nonatomic) IBOutlet UIButton *musicButton; @property (weak, nonatomic) IBOutlet UIButton *moviesButton; @property (weak, nonatomic) IBOutlet UIButton *booksButton; -@property (weak, nonatomic) IBOutlet UIButton *otherButton; +@property (strong, nonatomic) IBOutlet UIButton *podcastButton; @property (nonatomic) NSString *media; @property (nonatomic) NSMutableArray *searchResults; @property (nonatomic) iTunesSearchResult *passSearchResult; @@ -53,11 +53,16 @@ - (void)viewDidLoad #pragma mark - setup buttons - (IBAction)mediaButtonTypeSelected:(id)sender { - self.media = [sender currentTitle]; - NSLog(@"Media: %@",self.media); -} - -- (IBAction)mediaButtonOther:(id)sender { + + if (self.musicButton.isTouchInside){ + self.media = @"music&entity=album"; + } else if (self.booksButton.isTouchInside){ + self.media = @"ebook"; + } else { + self.media = [sender currentTitle]; + } + + NSLog(@"Media: %@",self.media); } - (IBAction)createJournalEntryButtonTapped:(id)sender { @@ -66,6 +71,8 @@ - (IBAction)createJournalEntryButtonTapped:(id)sender { - (IBAction)addToWishListButtonTapped:(id)sender { + + } - (void) makeNewiTunesAPIRequestWithSearchTerm:(NSString *)term inMedia:(NSString *)media @@ -104,15 +111,18 @@ - (void) makeNewiTunesAPIRequestWithSearchTerm:(NSString *)term iTunesSearchResult *resultsObject = [[iTunesSearchResult alloc]init]; - if ([self.media isEqualToString:@"movie"]){ + if ([self.media isEqualToString:@"movie"] || [self.media isEqualToString:@"podcast"] ){ resultsObject.artistName = artistName; resultsObject.albumOrMovieName = movieName; resultsObject.artworkURL = artworkURL; - } else if ([self.media isEqualToString:@"music"]){ + } else if ([self.media isEqualToString:@"music&entity=album"]){ resultsObject.artistName = artistName; resultsObject.albumOrMovieName = albumName; resultsObject.artworkURL = artworkURL; - + } else if ([self.media isEqualToString:@"ebook"]){ + resultsObject.artistName = artistName; + resultsObject.albumOrMovieName = movieName; + resultsObject.artworkURL = artworkURL; } [self.searchResults addObject:resultsObject]; From b96c7560f70a7b4f09cd96ba8c021ba4fa5a8c43 Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Tue, 13 Oct 2015 11:31:19 -0400 Subject: [PATCH 36/86] added navigation controller --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 46 ++++++++++++------ .../CreateJournalEntryViewController.m | 5 ++ 3 files changed, 37 insertions(+), 14 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 550e1de93617bc1332f3fb54cc697948d1ba9d31..084f368de45469747652eefb40ee75b1c9abbb30 100644 GIT binary patch delta 50 zcmV-20L}k|FoZC$kp%+6K9m0hG?T{#4FaJ6ll}xXlM4p!0)%;!Uj{gnGY6glppkJk Ivj+(M57{6RCIA2c delta 49 zcmV-10M7q}FoZC$kp%+3jFbNaG?T{#4FZn<ll}xXlM4p!0dtdH204>62c7|tk#RM% H2MGNS%xMwC diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 1841a7e..3855fd2 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -19,7 +19,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -335,11 +335,11 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> - <rect key="frame" x="15" y="5" width="32" height="20"/> + <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="16"/> @@ -347,7 +347,7 @@ <nil key="highlightedColor"/> </label> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> - <rect key="frame" x="15" y="25" width="41" height="14"/> + <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="11"/> @@ -427,7 +427,6 @@ <constraint firstItem="twc-ko-3Rx" firstAttribute="top" secondItem="4h9-oR-C40" secondAttribute="bottom" id="yzs-2t-Ycy"/> </constraints> </view> - <tabBarItem key="tabBarItem" title="Item" id="a8h-Hd-5Ai"/> <navigationItem key="navigationItem" id="gPV-bk-VJf"/> <connections> <outlet property="booksButton" destination="rgg-OH-neT" id="Ucr-iy-A9p"/> @@ -440,7 +439,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="-201" y="2504"/> + <point key="canvasLocation" x="-131" y="3314"/> </scene> <!--Create Journal Entry View Controller--> <scene sceneID="3xO-3p-x8L"> @@ -585,13 +584,13 @@ </variation> </view> <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="gMh-cq-aTG"> - <rect key="frame" x="20" y="219" width="560" height="256"/> + <rect key="frame" x="20" y="219" width="560" height="216"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="14"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> </textView> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ccY-ot-FYH"> - <rect key="frame" x="0.0" y="491" width="600" height="60"/> + <rect key="frame" x="0.0" y="451" width="600" height="60"/> <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bIK-7d-Vfl"> <rect key="frame" x="0.0" y="0.0" width="600" height="60"/> @@ -623,7 +622,7 @@ <constraint firstItem="3Hz-RL-Ugz" firstAttribute="top" secondItem="35G-Te-D94" secondAttribute="bottom" id="CcV-Ir-Nos"/> <constraint firstItem="3Hz-RL-Ugz" firstAttribute="top" secondItem="35G-Te-D94" secondAttribute="bottom" id="Dq8-Io-V9X"/> <constraint firstItem="BCK-ON-IjJ" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leading" constant="80" id="PTt-IZ-aNy"/> - <constraint firstItem="tF2-8H-bHx" firstAttribute="top" secondItem="ccY-ot-FYH" secondAttribute="bottom" id="RUt-kn-b0q"/> + <constraint firstItem="tF2-8H-bHx" firstAttribute="top" secondItem="ccY-ot-FYH" secondAttribute="bottom" constant="40" id="RUt-kn-b0q"/> <constraint firstItem="gMh-cq-aTG" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leadingMargin" id="UUx-jy-Izz"/> <constraint firstItem="3Hz-RL-Ugz" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leadingMargin" id="Wey-Ew-9Lu"/> <constraint firstItem="ccY-ot-FYH" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leading" id="XZc-9R-T26"/> @@ -653,7 +652,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="TK9-37-5bs" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="-551" y="3332"/> + <point key="canvasLocation" x="-907" y="3486"/> </scene> <!--Folding Tab Bar Controller--> <scene sceneID="bxL-4q-Pom"> @@ -668,7 +667,7 @@ </tabBar> <connections> <segue destination="WZe-UX-wgc" kind="relationship" relationship="viewControllers" id="J0X-l6-QQi"/> - <segue destination="0x4-Nu-mZ8" kind="relationship" relationship="viewControllers" id="cwP-3d-peb"/> + <segue destination="egC-fa-mOn" kind="relationship" relationship="viewControllers" id="cwP-3d-peb"/> <segue destination="Gih-78-N3X" kind="relationship" relationship="viewControllers" id="0Uq-id-h7h"/> <segue destination="Oeh-Ah-1CX" kind="relationship" relationship="viewControllers" id="gqs-7r-Ydd"/> </connections> @@ -691,7 +690,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> - <rect key="frame" x="0.0" y="0.0" width="567" height="63"/> + <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="346-CT-Uvl"> @@ -956,7 +955,26 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="gKL-Ix-enk" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="549" y="3332"/> + <point key="canvasLocation" x="1361" y="3332"/> + </scene> + <!--Item--> + <scene sceneID="vDd-FV-eA9"> + <objects> + <navigationController automaticallyAdjustsScrollViewInsets="NO" navigationBarHidden="YES" id="egC-fa-mOn" sceneMemberID="viewController"> + <tabBarItem key="tabBarItem" title="Item" id="a8h-Hd-5Ai"/> + <toolbarItems/> + <navigationBar key="navigationBar" contentMode="scaleToFill" id="f3P-d5-xaE"> + <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> + <autoresizingMask key="autoresizingMask"/> + </navigationBar> + <nil name="viewControllers"/> + <connections> + <segue destination="0x4-Nu-mZ8" kind="relationship" relationship="rootViewController" id="y2K-pO-xKu"/> + </connections> + </navigationController> + <placeholder placeholderIdentifier="IBFirstResponder" id="gsC-GX-MnN" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="-131" y="2528"/> </scene> </scenes> <resources> diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index e56046d..405580e 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -87,6 +87,9 @@ - (IBAction)logToJournalButtonTapped:(id)sender { NSLog(@"Journal Post: %@",self.journalPost); + // [self.navigationController popToRootViewControllerAnimated:YES]; + + } #pragma mark - Navigation @@ -105,6 +108,8 @@ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { viewController.journalPostToAdd = self. journalPost; [tabVC setSelectedIndex:2]; + + // } } From 9ae6b2891a28a23e0b29bb403a910bf8cd3bf89a Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Tue, 13 Oct 2015 11:55:12 -0400 Subject: [PATCH 37/86] tried to pass data to wishlist --- Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m | 6 ++++++ Unit-2-Journal/Unit-2-Journal/WishListTableViewController.h | 3 +++ Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m | 2 ++ 3 files changed, 11 insertions(+) diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 38a9ce5..08f6198 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -12,6 +12,8 @@ #import "iTunesSearchResult.h" #import "CreateJournalEntryViewController.h" #import "SearchAPITableViewCell.h" // add custom cell +#import "TabBarViewController.h" +#import "WishListTableViewController.h" @interface SearchAPIViewController () < @@ -70,7 +72,11 @@ - (IBAction)createJournalEntryButtonTapped:(id)sender { } - (IBAction)addToWishListButtonTapped:(id)sender { + + WishListTableViewController *viewController = [[WishListTableViewController alloc]init]; + viewController.searchResult = self.passSearchResult; + [self.tabBarController setSelectedIndex:0]; } diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.h b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.h index dd8b7b4..b6840c3 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.h +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.h @@ -7,7 +7,10 @@ // #import <UIKit/UIKit.h> +#import "iTunesSearchResult.h" @interface WishListTableViewController : UITableViewController +@property (nonatomic) iTunesSearchResult *searchResult; + @end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index 1e1c236..df4bfbf 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -19,6 +19,8 @@ - (void)viewDidLoad { [super viewDidLoad]; + NSLog(@"Wish List Result: %@",self.searchResult); + // [self setUpSwipeGestures]; // set up custom cell .xib From d9efd68108f70e70f2f81f746e87ab964e0c3ff8 Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Tue, 13 Oct 2015 17:26:06 -0400 Subject: [PATCH 38/86] star rating system up and working --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../rating_star.imageset/Contents.json | 21 +++ .../rating_star.imageset/rating_star.png | Bin 0 -> 2094 bytes .../rating_star_filled.imageset/Contents.json | 21 +++ .../rating_star_filled.png | Bin 0 -> 1865 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 105 +++++++++------ .../CreateJournalEntryViewController.m | 123 +++++++++++++++++- 7 files changed, 223 insertions(+), 47 deletions(-) create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star.imageset/Contents.json create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star.imageset/rating_star.png create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star_filled.imageset/Contents.json create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star_filled.imageset/rating_star_filled.png diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 084f368de45469747652eefb40ee75b1c9abbb30..696e9072e339d8ec00c98a8d53ff6482b65cfbe8 100644 GIT binary patch delta 28 kcmZoMXffFElZ|QXl*#dI7L$$H=P_QGSZKPLo#QV*0HR<D)Bpeg delta 28 kcmZoMXffFElZ~mRa&kPI#bjgld5jAt7MgBm=lIJH0GithSO5S3 diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star.imageset/Contents.json b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star.imageset/Contents.json new file mode 100644 index 0000000..ec54025 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "rating_star.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star.imageset/rating_star.png b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star.imageset/rating_star.png new file mode 100644 index 0000000000000000000000000000000000000000..24e5d0c76e00a210a11aee1846be4fcbc2280da8 GIT binary patch literal 2094 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 YAKLAFyLVq^0{{R307*qoM6N<$g8P5YT>t<8 literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star_filled.imageset/Contents.json b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star_filled.imageset/Contents.json new file mode 100644 index 0000000..a153585 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star_filled.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "rating_star_filled.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star_filled.imageset/rating_star_filled.png b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star_filled.imageset/rating_star_filled.png new file mode 100644 index 0000000000000000000000000000000000000000..8087242643ed9a6fbe22ee4c303e3c6a56201f0c GIT binary patch literal 1865 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 D(jh+i literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 3855fd2..8ae6b71 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -205,7 +205,7 @@ <rect key="frame" x="169" y="291" width="264" height="20"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="17"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> </subviews> @@ -343,7 +343,7 @@ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="16"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> @@ -351,7 +351,7 @@ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="11"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> </subviews> @@ -518,50 +518,66 @@ </variation> </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BCK-ON-IjJ"> - <rect key="frame" x="80" y="153" width="440" height="50"/> + <rect key="frame" x="15" y="153" width="570" height="50"/> <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ofM-BY-Yzj"> - <rect key="frame" x="88" y="0.0" width="88" height="50"/> - <animations/> - <state key="normal" image="star"> - <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> - </state> - </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZP9-Qg-4Le"> - <rect key="frame" x="176" y="0.0" width="88" height="50"/> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0G1-Em-Jng"> + <rect key="frame" x="464" y="0.0" width="106" height="50"/> <animations/> - <state key="normal" title="Button" image="star"/> + <state key="normal" backgroundImage="rating_star"/> + <connections> + <action selector="fiveStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="lF4-Jk-XCm"/> + </connections> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Hue-C5-PHW"> - <rect key="frame" x="264" y="0.0" width="88" height="50"/> + <rect key="frame" x="348" y="0.0" width="106" height="50"/> <animations/> - <state key="normal" title="Button" image="star"/> + <state key="normal" backgroundImage="rating_star"/> + <connections> + <action selector="fourStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="pCL-4u-Duz"/> + </connections> </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0G1-Em-Jng"> - <rect key="frame" x="352" y="0.0" width="88" height="50"/> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZP9-Qg-4Le"> + <rect key="frame" x="232" y="0.0" width="106" height="50"/> <animations/> - <state key="normal" title="Button" image="star"/> + <state key="normal" backgroundImage="rating_star"/> + <connections> + <action selector="threeStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="F0g-su-LVO"/> + </connections> </button> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="KzN-ht-Jya"> - <rect key="frame" x="0.0" y="0.0" width="88" height="50"/> + <rect key="frame" x="0.0" y="0.0" width="106" height="50"/> + <animations/> + <color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <state key="normal" image="rating_star"/> + <state key="highlighted" image="rating_star_filled"/> + <connections> + <action selector="oneStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="5jC-Qf-LPh"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ofM-BY-Yzj"> + <rect key="frame" x="114" y="0.0" width="102" height="50"/> <animations/> - <state key="normal" image="star"/> + <state key="normal" backgroundImage="rating_star"> + <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + </state> + <state key="selected" backgroundImage="rating_star_filled"/> + <state key="highlighted" backgroundImage="rating_star_filled"/> <connections> - <action selector="starButtonTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="laE-nr-bJU"/> + <action selector="twoStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="uc8-kM-fow"/> </connections> </button> </subviews> <animations/> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> <constraints> <constraint firstItem="Hue-C5-PHW" firstAttribute="width" secondItem="0G1-Em-Jng" secondAttribute="width" id="2FZ-ZI-T0C"/> <constraint firstItem="ZP9-Qg-4Le" firstAttribute="top" secondItem="BCK-ON-IjJ" secondAttribute="top" id="2p6-Tb-6HP"/> <constraint firstAttribute="bottom" secondItem="0G1-Em-Jng" secondAttribute="bottom" id="3x6-9s-I5h"/> <constraint firstAttribute="bottom" secondItem="ZP9-Qg-4Le" secondAttribute="bottom" id="4vm-Tw-U3R"/> - <constraint firstItem="ZP9-Qg-4Le" firstAttribute="leading" secondItem="ofM-BY-Yzj" secondAttribute="trailing" id="6aU-ox-HwV"/> + <constraint firstItem="ZP9-Qg-4Le" firstAttribute="leading" secondItem="ofM-BY-Yzj" secondAttribute="trailing" constant="10" id="6aU-ox-HwV"/> <constraint firstItem="Hue-C5-PHW" firstAttribute="top" secondItem="BCK-ON-IjJ" secondAttribute="top" id="7A4-tx-MqB"/> <constraint firstItem="0G1-Em-Jng" firstAttribute="top" secondItem="BCK-ON-IjJ" secondAttribute="top" id="9Cb-JU-lAQ"/> - <constraint firstItem="Hue-C5-PHW" firstAttribute="leading" secondItem="ZP9-Qg-4Le" secondAttribute="trailing" id="CSy-0o-bR0"/> + <constraint firstItem="Hue-C5-PHW" firstAttribute="leading" secondItem="ZP9-Qg-4Le" secondAttribute="trailing" constant="10" id="CSy-0o-bR0"/> <constraint firstItem="KzN-ht-Jya" firstAttribute="width" secondItem="ofM-BY-Yzj" secondAttribute="width" id="E1G-ub-wPn"/> <constraint firstAttribute="bottom" secondItem="KzN-ht-Jya" secondAttribute="bottom" id="EpA-1l-8jY"/> <constraint firstItem="ofM-BY-Yzj" firstAttribute="top" secondItem="BCK-ON-IjJ" secondAttribute="top" id="FqL-or-J5D"/> @@ -572,8 +588,8 @@ <constraint firstAttribute="bottom" secondItem="ofM-BY-Yzj" secondAttribute="bottom" id="Umh-F3-XTd"/> <constraint firstAttribute="trailing" secondItem="0G1-Em-Jng" secondAttribute="trailing" id="V23-rs-yf7"/> <constraint firstItem="ofM-BY-Yzj" firstAttribute="leading" secondItem="KzN-ht-Jya" secondAttribute="trailing" id="bsx-Dg-FWg"/> - <constraint firstItem="ofM-BY-Yzj" firstAttribute="leading" secondItem="KzN-ht-Jya" secondAttribute="trailing" id="iK1-9j-rfy"/> - <constraint firstItem="0G1-Em-Jng" firstAttribute="leading" secondItem="Hue-C5-PHW" secondAttribute="trailing" id="jC4-5Z-xk2"/> + <constraint firstItem="ofM-BY-Yzj" firstAttribute="leading" secondItem="KzN-ht-Jya" secondAttribute="trailing" constant="10" id="iK1-9j-rfy"/> + <constraint firstItem="0G1-Em-Jng" firstAttribute="leading" secondItem="Hue-C5-PHW" secondAttribute="trailing" constant="10" id="jC4-5Z-xk2"/> <constraint firstItem="KzN-ht-Jya" firstAttribute="top" secondItem="BCK-ON-IjJ" secondAttribute="top" id="kk9-wn-v1r"/> <constraint firstItem="KzN-ht-Jya" firstAttribute="leading" secondItem="BCK-ON-IjJ" secondAttribute="leading" id="qZL-NM-hV9"/> </constraints> @@ -583,17 +599,11 @@ </mask> </variation> </view> - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="gMh-cq-aTG"> - <rect key="frame" x="20" y="219" width="560" height="216"/> - <animations/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> - <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> - </textView> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ccY-ot-FYH"> - <rect key="frame" x="0.0" y="451" width="600" height="60"/> + <rect key="frame" x="0.0" y="411" width="600" height="60"/> <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bIK-7d-Vfl"> - <rect key="frame" x="0.0" y="0.0" width="600" height="60"/> + <rect key="frame" x="250" y="15" width="101" height="30"/> <animations/> <state key="normal" title="Log To Journal"> <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> @@ -608,12 +618,16 @@ <color key="backgroundColor" red="0.98580998180000001" green="0.62003214620000002" blue="0.067037612610000005" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstAttribute="height" constant="60" id="3us-vq-HY3"/> - <constraint firstAttribute="bottom" secondItem="bIK-7d-Vfl" secondAttribute="bottom" id="VPU-oO-xHC"/> - <constraint firstItem="bIK-7d-Vfl" firstAttribute="top" secondItem="ccY-ot-FYH" secondAttribute="top" id="XK3-cG-bF7"/> - <constraint firstAttribute="trailing" secondItem="bIK-7d-Vfl" secondAttribute="trailing" id="g1b-LY-Wtk"/> - <constraint firstItem="bIK-7d-Vfl" firstAttribute="leading" secondItem="ccY-ot-FYH" secondAttribute="leading" id="vT3-Hp-fjR"/> + <constraint firstItem="bIK-7d-Vfl" firstAttribute="centerX" secondItem="ccY-ot-FYH" secondAttribute="centerX" id="67t-uq-gMg"/> + <constraint firstItem="bIK-7d-Vfl" firstAttribute="centerY" secondItem="ccY-ot-FYH" secondAttribute="centerY" id="ZwE-L5-xQD"/> </constraints> </view> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="gMh-cq-aTG"> + <rect key="frame" x="20" y="219" width="560" height="176"/> + <animations/> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> + </textView> </subviews> <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> @@ -621,15 +635,15 @@ <constraint firstItem="3Hz-RL-Ugz" firstAttribute="trailing" secondItem="p3u-dw-cX6" secondAttribute="trailingMargin" id="1b0-Cy-sHW"/> <constraint firstItem="3Hz-RL-Ugz" firstAttribute="top" secondItem="35G-Te-D94" secondAttribute="bottom" id="CcV-Ir-Nos"/> <constraint firstItem="3Hz-RL-Ugz" firstAttribute="top" secondItem="35G-Te-D94" secondAttribute="bottom" id="Dq8-Io-V9X"/> - <constraint firstItem="BCK-ON-IjJ" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leading" constant="80" id="PTt-IZ-aNy"/> - <constraint firstItem="tF2-8H-bHx" firstAttribute="top" secondItem="ccY-ot-FYH" secondAttribute="bottom" constant="40" id="RUt-kn-b0q"/> + <constraint firstItem="BCK-ON-IjJ" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leading" constant="15" id="PTt-IZ-aNy"/> + <constraint firstItem="tF2-8H-bHx" firstAttribute="top" secondItem="ccY-ot-FYH" secondAttribute="bottom" constant="80" id="RUt-kn-b0q"/> <constraint firstItem="gMh-cq-aTG" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leadingMargin" id="UUx-jy-Izz"/> <constraint firstItem="3Hz-RL-Ugz" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leadingMargin" id="Wey-Ew-9Lu"/> <constraint firstItem="ccY-ot-FYH" firstAttribute="leading" secondItem="p3u-dw-cX6" secondAttribute="leading" id="XZc-9R-T26"/> <constraint firstItem="gMh-cq-aTG" firstAttribute="top" secondItem="BCK-ON-IjJ" secondAttribute="bottom" constant="16" id="Yag-O4-Uh7"/> <constraint firstAttribute="trailing" secondItem="ccY-ot-FYH" secondAttribute="trailing" id="fbk-ya-YeF"/> <constraint firstItem="ccY-ot-FYH" firstAttribute="top" secondItem="gMh-cq-aTG" secondAttribute="bottom" id="k9n-yQ-XiX"/> - <constraint firstAttribute="trailing" secondItem="BCK-ON-IjJ" secondAttribute="trailing" constant="80" id="pcb-Is-KNU"/> + <constraint firstAttribute="trailing" secondItem="BCK-ON-IjJ" secondAttribute="trailing" constant="15" id="pcb-Is-KNU"/> <constraint firstItem="BCK-ON-IjJ" firstAttribute="top" secondItem="3Hz-RL-Ugz" secondAttribute="bottom" constant="8" id="t6s-ES-EUU"/> <constraint firstItem="ccY-ot-FYH" firstAttribute="top" secondItem="gMh-cq-aTG" secondAttribute="bottom" constant="16" id="v7c-f8-4aB"/> <constraint firstItem="gMh-cq-aTG" firstAttribute="trailing" secondItem="p3u-dw-cX6" secondAttribute="trailingMargin" id="ywD-3B-vc1"/> @@ -646,7 +660,11 @@ <outlet property="artworkImageView" destination="s1u-o4-hER" id="j5D-wO-ZJP"/> <outlet property="doneEditingButton" destination="oCt-vd-4RS" id="cQZ-Tr-B0E"/> <outlet property="movieOrAlbumNameLabel" destination="f6q-RS-lgS" id="ify-cv-Z2Y"/> + <outlet property="starButtonFive" destination="0G1-Em-Jng" id="gsy-gR-Ohg"/> + <outlet property="starButtonFour" destination="Hue-C5-PHW" id="alq-WC-E1Z"/> <outlet property="starButtonOne" destination="KzN-ht-Jya" id="FZL-kO-3hy"/> + <outlet property="starButtonThree" destination="ZP9-Qg-4Le" id="r3s-AV-lHf"/> + <outlet property="starButtonTwo" destination="ofM-BY-Yzj" id="lyV-o3-dHx"/> <outlet property="textView" destination="gMh-cq-aTG" id="e7z-VE-aIf"/> </connections> </viewController> @@ -978,7 +996,8 @@ </scene> </scenes> <resources> - <image name="star" width="24" height="24"/> + <image name="rating_star" width="128" height="128"/> + <image name="rating_star_filled" width="128" height="128"/> </resources> <inferredMetricsTieBreakers> <segue reference="a4i-zx-cvK"/> diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index 405580e..82f96d0 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -20,6 +20,12 @@ @interface CreateJournalEntryViewController () <UITextViewDelegate> @property (strong, nonatomic) IBOutlet UIButton *doneEditingButton; @property (strong, nonatomic) IBOutlet UIButton *starButtonOne; +@property (strong, nonatomic) IBOutlet UIButton *starButtonTwo; +@property (strong, nonatomic) IBOutlet UIButton *starButtonThree; +@property (strong, nonatomic) IBOutlet UIButton *starButtonFour; +@property (strong, nonatomic) IBOutlet UIButton *starButtonFive; +@property (nonatomic) BOOL userRated; + @property (nonatomic) JournalPost *journalPost; @property (nonatomic) NSMutableArray *journalPostArray; @@ -30,6 +36,8 @@ @implementation CreateJournalEntryViewController - (void)viewDidLoad { [super viewDidLoad]; + self.userRated = NO; + self.journalPostArray = [[NSMutableArray alloc]init]; NSLog(@"Data has been passed: %@",self.postSearchResult); @@ -50,7 +58,7 @@ - (void)viewDidLoad { NSData *artworkData = [NSData dataWithContentsOfURL:artworkURL]; UIImage *artworkImage = [UIImage imageWithData:artworkData]; self.artworkImageView.image = artworkImage; - + } - (void) textViewDidBeginEditing:(UITextView *)textView{ self.textView.text = @""; @@ -63,12 +71,117 @@ - (IBAction)doneEditingTapped:(id)sender { self.doneEditingButton.hidden = YES; [[[UIApplication sharedApplication] keyWindow] endEditing:YES]; - } -- (IBAction)starButtonTapped:(id)sender { + +#pragma mark - star rating + +- (IBAction)oneStarTapped:(id)sender +{ + if (self.userRated == NO) { + self.userRated = YES; // change to yes + [self resetStars]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - self.starButtonOne.tintColor = [UIColor yellowColor]; + } else + if (self.userRated == YES) { + self.userRated = NO; // change to yes + [self resetStars]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + } +} + +- (IBAction)twoStarTapped:(id)sender +{ + if (self.userRated == NO) { + self.userRated = YES; // change to yes + [self resetStars]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + + } else + + if (self.userRated == YES) { + self.userRated = NO; // change to yes + [self resetStars]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + } +} + +- (IBAction)threeStarTapped:(id)sender +{ + if (self.userRated == NO) { + self.userRated = YES; // change to yes + [self resetStars]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + + } else + + if (self.userRated == YES) { + self.userRated = NO; // change to yes + [self resetStars]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + } +} + +- (IBAction)fourStarTapped:(id)sender +{ + if (self.userRated == NO) { + self.userRated = YES; // change to yes + [self resetStars]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + + + } else + + if (self.userRated == YES) { + self.userRated = NO; // change to yes + [self resetStars]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + } +} +- (IBAction)fiveStarTapped:(id)sender +{ + if (self.userRated == NO) { + self.userRated = YES; // change to yes + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonFive setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + + + } else + + if (self.userRated == YES) { + self.userRated = NO; // change to yes + [self resetStars]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonFive setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + } +} + +- (void)resetStars +{ + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starButtonFive setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; } #pragma mark - save items @@ -102,8 +215,10 @@ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // // NSLog(@"Segue to Tab"); // JournalMainCollectionViewController *viewController = [[JournalMainCollectionViewController alloc]init]; + TabBarViewController *tabVC = segue.destinationViewController; JournalMainCollectionViewController *viewController = [[tabVC viewControllers] objectAtIndex:2]; + //[viewController.allJournalPosts addObjectsFromArray:self.journalPostArray]; viewController.journalPostToAdd = self. journalPost; From 2fe30ab5d8c3a2d621951033ebd94e9f6c589d5a Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Tue, 13 Oct 2015 17:41:12 -0400 Subject: [PATCH 39/86] refactored rating code --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../CreateJournalEntryViewController.m | 86 ++++++++++-------- 2 files changed, 47 insertions(+), 39 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 696e9072e339d8ec00c98a8d53ff6482b65cfbe8..a08cef075f3f1870cfc5b6375ea6b29b4ebcbe52 100644 GIT binary patch delta 18 ZcmZoMXffFEi;Z#S<ajoV&Bp8(1pq_n2C)DD delta 18 ZcmZoMXffFEi;Z#0<ajoV&Bp8(1pq^~2CM)8 diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index 82f96d0..45679de 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -58,7 +58,7 @@ - (void)viewDidLoad { NSData *artworkData = [NSData dataWithContentsOfURL:artworkURL]; UIImage *artworkImage = [UIImage imageWithData:artworkData]; self.artworkImageView.image = artworkImage; - + } - (void) textViewDidBeginEditing:(UITextView *)textView{ self.textView.text = @""; @@ -79,15 +79,14 @@ - (IBAction)oneStarTapped:(id)sender { if (self.userRated == NO) { self.userRated = YES; // change to yes - [self resetStars]; - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - + [self resetStars]; + [self oneStarRating]; } else - + if (self.userRated == YES) { self.userRated = NO; // change to yes [self resetStars]; - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self oneStarRating]; } } @@ -95,17 +94,15 @@ - (IBAction)twoStarTapped:(id)sender { if (self.userRated == NO) { self.userRated = YES; // change to yes - [self resetStars]; - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self resetStars]; + [self twoStarRating]; } else if (self.userRated == YES) { self.userRated = NO; // change to yes [self resetStars]; - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self twoStarRating]; } } @@ -113,19 +110,15 @@ - (IBAction)threeStarTapped:(id)sender { if (self.userRated == NO) { self.userRated = YES; // change to yes - [self resetStars]; - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self resetStars]; + [self threeStarRating]; } else if (self.userRated == YES) { self.userRated = NO; // change to yes [self resetStars]; - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self threeStarRating]; } } @@ -133,45 +126,29 @@ - (IBAction)fourStarTapped:(id)sender { if (self.userRated == NO) { self.userRated = YES; // change to yes - [self resetStars]; - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - + [self resetStars]; + [self fourStarRating]; } else if (self.userRated == YES) { self.userRated = NO; // change to yes [self resetStars]; - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self fourStarRating]; } } - (IBAction)fiveStarTapped:(id)sender { if (self.userRated == NO) { self.userRated = YES; // change to yes - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonFive setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - + [self fiveStarRating]; } else if (self.userRated == YES) { self.userRated = NO; // change to yes [self resetStars]; - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonFive setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self fiveStarRating]; } } @@ -184,6 +161,37 @@ - (void)resetStars [self.starButtonFive setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; } +- (void)oneStarRating { + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; +} + +- (void)twoStarRating { + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; +} + +- (void)threeStarRating { + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; +} + +- (void)fourStarRating { + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; +} + +- (void)fiveStarRating { + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonFive setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; +} + + #pragma mark - save items From 10020cb76d29946ca34989e18a06df36043d8361 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Tue, 13 Oct 2015 22:04:09 -0400 Subject: [PATCH 40/86] journal entry returns to correct tab bar item --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes Unit-2-Journal/Podfile | 2 +- Unit-2-Journal/Unit-2-Journal/AppDelegate.m | 4 +- .../Base.lproj/LaunchScreen.storyboard | 2 +- .../Unit-2-Journal/Base.lproj/Main.storyboard | 37 ++++++------ .../CreateJournalEntryViewController.h | 3 +- .../CreateJournalEntryViewController.m | 56 +++++++++++------- 7 files changed, 60 insertions(+), 44 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index a08cef075f3f1870cfc5b6375ea6b29b4ebcbe52..80216d46d4329f6bcaef6255915ba9c6b8930836 100644 GIT binary patch delta 96 zcmZoMXffC@k(Fu5yvhGrO!#y2U0hO1OOhEFE;+3^$T0aIi|J%;Hf|O;$DfUl@xtUd jw%JTedM3xSS@0q0u>10EvLm}IGl<^EX0`b+yQ2UAvY#Wn delta 96 zcmZoMXffC@k(KF?-Q@o)Cj7biE-ophCCLm7mmGI3WSIPq#dI<^8#jw%Yb1o@&&J32 mVR9VXY^JR<C&#l{@FD52_dh<_k=>OUL~mrX+I*PZQ2+pHqal6( diff --git a/Unit-2-Journal/Podfile b/Unit-2-Journal/Podfile index 36e9ba2..491388f 100644 --- a/Unit-2-Journal/Podfile +++ b/Unit-2-Journal/Podfile @@ -3,6 +3,6 @@ pod 'FBSDKShareKit', '~> 4.7' pod 'FBSDKLoginKit', '~> 4.7' pod 'Parse' pod 'RestKit/Testing', '~> 0.24.0' -pod ‘FoldingTabBar’, '~> 1.0.1’ +pod 'FoldingTabBar', '~> 1.0.1’ diff --git a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m index b140675..d1eac9d 100644 --- a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m +++ b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m @@ -60,8 +60,8 @@ - (void)setupYALTabBarController { YALTabBarItem *item2 = [[YALTabBarItem alloc] initWithItemImage:[UIImage imageNamed:@"add"] - leftItemImage:[UIImage imageNamed:@"idea"] - rightItemImage:[UIImage imageNamed:@"star"]]; + leftItemImage:[UIImage imageNamed:@"star"] + rightItemImage:[UIImage imageNamed:@"idea"]]; tabBarController.leftBarItems = @[item1, item2]; diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard index 900bc17..5a9c4a6 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> </dependencies> diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 8ae6b71..b50318b 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -314,7 +314,7 @@ </mask> </variation> </view> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i6F-Oe-4xR"> + <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i6F-Oe-4xR"> <rect key="frame" x="300" y="426" width="300" height="50"/> <animations/> <color key="backgroundColor" red="1" green="0.5210467205" blue="0.69047673470000004" alpha="1" colorSpace="calibratedRGB"/> @@ -326,7 +326,7 @@ <action selector="addToWishListButtonTapped:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="pGb-oC-cak"/> </connections> </button> - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="twc-ko-3Rx"> + <tableView clipsSubviews="YES" contentMode="scaleToFill" misplaced="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="twc-ko-3Rx"> <rect key="frame" x="0.0" y="170" width="600" height="256"/> <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> @@ -389,7 +389,7 @@ <constraint firstItem="zob-sY-qha" firstAttribute="centerY" secondItem="4h9-oR-C40" secondAttribute="centerY" id="x76-Iu-Ldy"/> </constraints> </view> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q0c-Ez-WJB"> + <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q0c-Ez-WJB"> <rect key="frame" x="0.0" y="426" width="300" height="50"/> <animations/> <color key="backgroundColor" red="0.75457596599999999" green="0.86496030550000003" blue="1" alpha="1" colorSpace="calibratedRGB"/> @@ -439,7 +439,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="-131" y="3314"/> + <point key="canvasLocation" x="681" y="3314"/> </scene> <!--Create Journal Entry View Controller--> <scene sceneID="3xO-3p-x8L"> @@ -610,7 +610,6 @@ </state> <connections> <action selector="logToJournalButtonTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="bF7-vG-sm2"/> - <segue destination="sU9-FA-LDO" kind="show" identifier="logToJournalSegue" id="1dJ-1Z-3H8"/> </connections> </button> </subviews> @@ -684,10 +683,10 @@ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> </tabBar> <connections> - <segue destination="WZe-UX-wgc" kind="relationship" relationship="viewControllers" id="J0X-l6-QQi"/> - <segue destination="egC-fa-mOn" kind="relationship" relationship="viewControllers" id="cwP-3d-peb"/> - <segue destination="Gih-78-N3X" kind="relationship" relationship="viewControllers" id="0Uq-id-h7h"/> - <segue destination="Oeh-Ah-1CX" kind="relationship" relationship="viewControllers" id="gqs-7r-Ydd"/> + <segue destination="WZe-UX-wgc" kind="relationship" relationship="viewControllers" id="bAR-Zf-Kaj"/> + <segue destination="UUP-oh-FLI" kind="relationship" relationship="viewControllers" id="67Z-In-Vm1"/> + <segue destination="Gih-78-N3X" kind="relationship" relationship="viewControllers" id="gbO-Fx-x82"/> + <segue destination="Oeh-Ah-1CX" kind="relationship" relationship="viewControllers" id="vba-B8-xOk"/> </connections> </tabBarController> <placeholder placeholderIdentifier="IBFirstResponder" id="1hc-eJ-lg1" userLabel="First Responder" sceneMemberID="firstResponder"/> @@ -922,10 +921,10 @@ <constraint firstItem="JU3-mC-wxo" firstAttribute="leading" secondItem="M7h-zf-QrN" secondAttribute="trailing" constant="50" id="xSf-tn-Ha9"/> </constraints> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="x4f-Ym-z1V"> + <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="x4f-Ym-z1V"> <rect key="frame" x="20" y="485" width="560" height="66"/> <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> + <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> <rect key="frame" x="258" y="18" width="45" height="30"/> <animations/> <state key="normal" title="Delete"/> @@ -973,26 +972,26 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="gKL-Ix-enk" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1361" y="3332"/> + <point key="canvasLocation" x="2173" y="3332"/> </scene> <!--Item--> - <scene sceneID="vDd-FV-eA9"> + <scene sceneID="lqz-ju-jUl"> <objects> - <navigationController automaticallyAdjustsScrollViewInsets="NO" navigationBarHidden="YES" id="egC-fa-mOn" sceneMemberID="viewController"> - <tabBarItem key="tabBarItem" title="Item" id="a8h-Hd-5Ai"/> + <navigationController automaticallyAdjustsScrollViewInsets="NO" navigationBarHidden="YES" id="UUP-oh-FLI" sceneMemberID="viewController"> + <tabBarItem key="tabBarItem" title="Item" id="DsW-2U-fk2"/> <toolbarItems/> - <navigationBar key="navigationBar" contentMode="scaleToFill" id="f3P-d5-xaE"> + <navigationBar key="navigationBar" contentMode="scaleToFill" id="H6d-AU-tTl"> <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> <autoresizingMask key="autoresizingMask"/> </navigationBar> <nil name="viewControllers"/> <connections> - <segue destination="0x4-Nu-mZ8" kind="relationship" relationship="rootViewController" id="y2K-pO-xKu"/> + <segue destination="0x4-Nu-mZ8" kind="relationship" relationship="rootViewController" id="Thc-kb-GNn"/> </connections> </navigationController> - <placeholder placeholderIdentifier="IBFirstResponder" id="gsC-GX-MnN" userLabel="First Responder" sceneMemberID="firstResponder"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="1ok-11-KLp" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="-131" y="2528"/> + <point key="canvasLocation" x="-131" y="3314"/> </scene> </scenes> <resources> diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h index 9ab1bb7..f72804f 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h @@ -8,9 +8,10 @@ #import <UIKit/UIKit.h> #import "iTunesSearchResult.h" +#import "YALTabBarInteracting.h" -@interface CreateJournalEntryViewController : UIViewController +@interface CreateJournalEntryViewController : UIViewController <YALTabBarInteracting> @property (nonatomic) iTunesSearchResult *postSearchResult; diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index 45679de..550bef1 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -11,6 +11,7 @@ #import "TabBarViewController.h" #import "JournalMainCollectionViewController.h" + @interface CreateJournalEntryViewController () <UITextViewDelegate> @property (strong, nonatomic) IBOutlet UILabel *movieOrAlbumNameLabel; @@ -73,6 +74,19 @@ - (IBAction)doneEditingTapped:(id)sender { [[[UIApplication sharedApplication] keyWindow] endEditing:YES]; } +#pragma mark - custom buttons tapped + +- (void)extraRightItemDidPress { + NSLog(@"left button tapped!!!"); +} +- (void)extraLeftItemDidPressed { // + +} + +- (void)extraRightItemDidPressed { // + NSLog(@"right button tapped!!!"); +} + #pragma mark - star rating - (IBAction)oneStarTapped:(id)sender @@ -210,31 +224,33 @@ - (IBAction)logToJournalButtonTapped:(id)sender { // [self.navigationController popToRootViewControllerAnimated:YES]; + [self.tabBarController setSelectedIndex:2]; // send to correct tab } #pragma mark - Navigation - - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - - NSLog(@"Segue"); - -// if ([[segue identifier]isEqualToString:@"logToJournalSegue"]) { -// -// NSLog(@"Segue to Tab"); -// JournalMainCollectionViewController *viewController = [[JournalMainCollectionViewController alloc]init]; - - TabBarViewController *tabVC = segue.destinationViewController; - JournalMainCollectionViewController *viewController = [[tabVC viewControllers] objectAtIndex:2]; - - //[viewController.allJournalPosts addObjectsFromArray:self.journalPostArray]; - - viewController.journalPostToAdd = self. journalPost; - [tabVC setSelectedIndex:2]; - - - // } - } +// - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { +// +// NSLog(@"Segue"); +// +//// if ([[segue identifier]isEqualToString:@"logToJournalSegue"]) { +//// +//// NSLog(@"Segue to Tab"); +//// JournalMainCollectionViewController *viewController = [[JournalMainCollectionViewController alloc]init]; +// +// TabBarViewController *tabVC = segue.destinationViewController; // this is a new tab bar +// +// JournalMainCollectionViewController *viewController = [[tabVC viewControllers] objectAtIndex:2]; +// +// //[viewController.allJournalPosts addObjectsFromArray:self.journalPostArray]; +// +// viewController.journalPostToAdd = self. journalPost; +// [tabVC setSelectedIndex:2]; +// +// +// // } +// } //locationsHome* vc = [[locationsHome alloc] init]; //UITabBarController* tbc = [segue destinationViewController]; From 804b4af852d4bfa25a3d822596b853014362c816 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Tue, 13 Oct 2015 23:14:27 -0400 Subject: [PATCH 41/86] removed extra tab bar buttons --- Unit-2-Journal/Unit-2-Journal/AppDelegate.m | 4 ++-- .../Unit-2-Journal/Base.lproj/Main.storyboard | 10 +++++----- .../CreateJournalEntryViewController.h | 4 ++-- .../CreateJournalEntryViewController.m | 13 ------------- .../Unit-2-Journal/SearchAPIViewController.h | 3 ++- .../Unit-2-Journal/SearchAPIViewController.m | 3 +-- 6 files changed, 12 insertions(+), 25 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m index d1eac9d..d184225 100644 --- a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m +++ b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m @@ -60,8 +60,8 @@ - (void)setupYALTabBarController { YALTabBarItem *item2 = [[YALTabBarItem alloc] initWithItemImage:[UIImage imageNamed:@"add"] - leftItemImage:[UIImage imageNamed:@"star"] - rightItemImage:[UIImage imageNamed:@"idea"]]; + leftItemImage:nil + rightItemImage:nil]; tabBarController.leftBarItems = @[item1, item2]; diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index b50318b..4d06f64 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -314,7 +314,7 @@ </mask> </variation> </view> - <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i6F-Oe-4xR"> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i6F-Oe-4xR"> <rect key="frame" x="300" y="426" width="300" height="50"/> <animations/> <color key="backgroundColor" red="1" green="0.5210467205" blue="0.69047673470000004" alpha="1" colorSpace="calibratedRGB"/> @@ -326,7 +326,7 @@ <action selector="addToWishListButtonTapped:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="pGb-oC-cak"/> </connections> </button> - <tableView clipsSubviews="YES" contentMode="scaleToFill" misplaced="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="twc-ko-3Rx"> + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="twc-ko-3Rx"> <rect key="frame" x="0.0" y="170" width="600" height="256"/> <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> @@ -389,7 +389,7 @@ <constraint firstItem="zob-sY-qha" firstAttribute="centerY" secondItem="4h9-oR-C40" secondAttribute="centerY" id="x76-Iu-Ldy"/> </constraints> </view> - <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q0c-Ez-WJB"> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q0c-Ez-WJB"> <rect key="frame" x="0.0" y="426" width="300" height="50"/> <animations/> <color key="backgroundColor" red="0.75457596599999999" green="0.86496030550000003" blue="1" alpha="1" colorSpace="calibratedRGB"/> @@ -921,10 +921,10 @@ <constraint firstItem="JU3-mC-wxo" firstAttribute="leading" secondItem="M7h-zf-QrN" secondAttribute="trailing" constant="50" id="xSf-tn-Ha9"/> </constraints> </view> - <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="x4f-Ym-z1V"> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="x4f-Ym-z1V"> <rect key="frame" x="20" y="485" width="560" height="66"/> <subviews> - <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> <rect key="frame" x="258" y="18" width="45" height="30"/> <animations/> <state key="normal" title="Delete"/> diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h index f72804f..47f0efd 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h @@ -8,10 +8,10 @@ #import <UIKit/UIKit.h> #import "iTunesSearchResult.h" -#import "YALTabBarInteracting.h" -@interface CreateJournalEntryViewController : UIViewController <YALTabBarInteracting> + +@interface CreateJournalEntryViewController : UIViewController @property (nonatomic) iTunesSearchResult *postSearchResult; diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index 550bef1..2e3b3c2 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -74,19 +74,6 @@ - (IBAction)doneEditingTapped:(id)sender { [[[UIApplication sharedApplication] keyWindow] endEditing:YES]; } -#pragma mark - custom buttons tapped - -- (void)extraRightItemDidPress { - NSLog(@"left button tapped!!!"); -} -- (void)extraLeftItemDidPressed { // - -} - -- (void)extraRightItemDidPressed { // - NSLog(@"right button tapped!!!"); -} - #pragma mark - star rating - (IBAction)oneStarTapped:(id)sender diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.h b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.h index 9230c77..35a3f41 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.h +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.h @@ -8,6 +8,7 @@ #import <UIKit/UIKit.h> -@interface SearchAPIViewController : UIViewController + +@interface SearchAPIViewController : UIViewController @end diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 38a9ce5..20122e9 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -194,8 +194,6 @@ -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath * } - - #pragma mark - Navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { @@ -210,4 +208,5 @@ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { } + @end From edf43339bab672b104ade9dca8255fd79588d3ef Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Tue, 13 Oct 2015 23:31:56 -0400 Subject: [PATCH 42/86] create entry pops back to first view --- .../Unit-2-Journal/CreateJournalEntryViewController.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index 2e3b3c2..d52d454 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -209,7 +209,7 @@ - (IBAction)logToJournalButtonTapped:(id)sender { NSLog(@"Journal Post: %@",self.journalPost); - // [self.navigationController popToRootViewControllerAnimated:YES]; + [self.navigationController popToRootViewControllerAnimated:YES]; [self.tabBarController setSelectedIndex:2]; // send to correct tab @@ -226,7 +226,7 @@ - (IBAction)logToJournalButtonTapped:(id)sender { //// NSLog(@"Segue to Tab"); //// JournalMainCollectionViewController *viewController = [[JournalMainCollectionViewController alloc]init]; // -// TabBarViewController *tabVC = segue.destinationViewController; // this is a new tab bar +// TabBarViewController *tabVC = segue.destinationViewController; // this creates a new tab bar // // JournalMainCollectionViewController *viewController = [[tabVC viewControllers] objectAtIndex:2]; // From 335a5ab47cf60248fd52507db3ca7c260887c880 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Wed, 14 Oct 2015 09:49:44 -0400 Subject: [PATCH 43/86] adding second API search for TV results --- .../Unit-2-Journal/SearchAPIViewController.m | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 08f6198..a69e4d4 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -30,6 +30,8 @@ @interface SearchAPIViewController () @property (strong, nonatomic) IBOutlet UIButton *podcastButton; @property (nonatomic) NSString *media; @property (nonatomic) NSMutableArray *searchResults; +@property (nonatomic) NSMutableArray *searchResultsTwo; +@property (nonatomic) NSMutableArray *allSearchResults; @property (nonatomic) iTunesSearchResult *passSearchResult; @end @@ -107,7 +109,6 @@ - (void) makeNewiTunesAPIRequestWithSearchTerm:(NSString *)term self.searchResults = [[NSMutableArray alloc]init]; - for (NSDictionary *result in results){ NSString *artistName = [result objectForKey:@"artistName"]; @@ -122,7 +123,8 @@ - (void) makeNewiTunesAPIRequestWithSearchTerm:(NSString *)term resultsObject.albumOrMovieName = movieName; resultsObject.artworkURL = artworkURL; } else if ([self.media isEqualToString:@"music&entity=album"]){ - resultsObject.artistName = artistName; + + resultsObject.artistName = artistName; resultsObject.albumOrMovieName = albumName; resultsObject.artworkURL = artworkURL; } else if ([self.media isEqualToString:@"ebook"]){ @@ -134,10 +136,33 @@ - (void) makeNewiTunesAPIRequestWithSearchTerm:(NSString *)term [self.searchResults addObject:resultsObject]; } + block(); } }]; + NSString *urlStringTwo = @"http://api.tvmaze.com/search/shows?q=broad%20city"; + NSURL *urlTwo = [NSURL URLWithString:urlStringTwo]; + + [APIManager GETRequestWithURL:urlTwo + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + + if (data != nil){ + NSDictionary *jsonTwo = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; + + NSLog(@"jsonTwo: %@",jsonTwo); + + //NSArray *results = [jsonTwo objectForKey:@"results"]; + + //NSLog(@"Results: %@",results); + + //self.searchResultsTwo = [[NSMutableArray alloc]init]; + } + + block(); + + }]; + } - (BOOL)textFieldShouldReturn:(UITextField *)textField{ From 41b184b0ce1d1c3f61d1727035f22fd4bc0c62b6 Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Wed, 14 Oct 2015 17:22:21 -0400 Subject: [PATCH 44/86] animated stars --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes Unit-2-Journal/Podfile | 1 + Unit-2-Journal/Podfile.lock | 3 + .../Headers/Private/pop/FloatConversion.h | 1 + Unit-2-Journal/Pods/Headers/Private/pop/POP.h | 1 + .../Pods/Headers/Private/pop/POPAction.h | 1 + .../Private/pop/POPAnimatableProperty.h | 1 + .../Pods/Headers/Private/pop/POPAnimation.h | 1 + .../Headers/Private/pop/POPAnimationEvent.h | 1 + .../Private/pop/POPAnimationEventInternal.h | 1 + .../Headers/Private/pop/POPAnimationExtras.h | 1 + .../Private/pop/POPAnimationInternal.h | 1 + .../Headers/Private/pop/POPAnimationPrivate.h | 1 + .../Headers/Private/pop/POPAnimationRuntime.h | 1 + .../Headers/Private/pop/POPAnimationTracer.h | 1 + .../Private/pop/POPAnimationTracerInternal.h | 1 + .../Pods/Headers/Private/pop/POPAnimator.h | 1 + .../Headers/Private/pop/POPAnimatorPrivate.h | 1 + .../Headers/Private/pop/POPBasicAnimation.h | 1 + .../Private/pop/POPBasicAnimationInternal.h | 1 + .../Pods/Headers/Private/pop/POPCGUtils.h | 1 + .../Headers/Private/pop/POPCustomAnimation.h | 1 + .../Headers/Private/pop/POPDecayAnimation.h | 1 + .../Private/pop/POPDecayAnimationInternal.h | 1 + .../Pods/Headers/Private/pop/POPDefines.h | 1 + .../Pods/Headers/Private/pop/POPGeometry.h | 1 + .../Pods/Headers/Private/pop/POPLayerExtras.h | 1 + .../Pods/Headers/Private/pop/POPMath.h | 1 + .../Private/pop/POPPropertyAnimation.h | 1 + .../pop/POPPropertyAnimationInternal.h | 1 + .../Headers/Private/pop/POPSpringAnimation.h | 1 + .../Private/pop/POPSpringAnimationInternal.h | 1 + .../Headers/Private/pop/POPSpringSolver.h | 1 + .../Pods/Headers/Private/pop/POPVector.h | 1 + .../Private/pop/TransformationMatrix.h | 1 + .../Pods/Headers/Private/pop/UnitBezier.h | 1 + Unit-2-Journal/Pods/Headers/Public/pop/POP.h | 1 + .../Public/pop/POPAnimatableProperty.h | 1 + .../Pods/Headers/Public/pop/POPAnimation.h | 1 + .../Headers/Public/pop/POPAnimationEvent.h | 1 + .../Headers/Public/pop/POPAnimationExtras.h | 1 + .../Headers/Public/pop/POPAnimationTracer.h | 1 + .../Pods/Headers/Public/pop/POPAnimator.h | 1 + .../Headers/Public/pop/POPBasicAnimation.h | 1 + .../Headers/Public/pop/POPCustomAnimation.h | 1 + .../Headers/Public/pop/POPDecayAnimation.h | 1 + .../Pods/Headers/Public/pop/POPDefines.h | 1 + .../Pods/Headers/Public/pop/POPGeometry.h | 1 + .../Pods/Headers/Public/pop/POPLayerExtras.h | 1 + .../Headers/Public/pop/POPPropertyAnimation.h | 1 + .../Headers/Public/pop/POPSpringAnimation.h | 1 + Unit-2-Journal/Pods/Manifest.lock | 3 + .../Pods/Pods.xcodeproj/project.pbxproj | 6687 +++++++++-------- .../AFNetworking/AFNetworking.xcconfig | 2 +- .../Target Support Files/Bolts/Bolts.xcconfig | 2 +- .../FBSDKCoreKit/FBSDKCoreKit.xcconfig | 2 +- .../FBSDKLoginKit/FBSDKLoginKit.xcconfig | 2 +- .../FBSDKShareKit/FBSDKShareKit.xcconfig | 2 +- .../FoldingTabBar/FoldingTabBar.xcconfig | 2 +- ...8601DateFormatterValueTransformer.xcconfig | 2 +- .../Target Support Files/Parse/Parse.xcconfig | 2 +- .../Pods/Pods-acknowledgements.markdown | 34 + .../Pods/Pods-acknowledgements.plist | 38 + .../Pods/Pods.debug.xcconfig | 6 +- .../Pods/Pods.release.xcconfig | 6 +- .../RKValueTransformers.xcconfig | 2 +- .../RestKit/RestKit.xcconfig | 2 +- .../SOCKit/SOCKit.xcconfig | 2 +- .../TransitionKit/TransitionKit.xcconfig | 2 +- .../Pods/Target Support Files/pop/pop-dummy.m | 5 + .../Target Support Files/pop/pop-prefix.pch | 4 + .../Target Support Files/pop/pop.xcconfig | 7 + Unit-2-Journal/Pods/pop/LICENSE | 30 + Unit-2-Journal/Pods/pop/README.md | 203 + Unit-2-Journal/Pods/pop/pop/POP.h | 29 + Unit-2-Journal/Pods/pop/pop/POPAction.h | 67 + .../Pods/pop/pop/POPAnimatableProperty.h | 249 + .../Pods/pop/pop/POPAnimatableProperty.mm | 1282 ++++ Unit-2-Journal/Pods/pop/pop/POPAnimation.h | 188 + Unit-2-Journal/Pods/pop/pop/POPAnimation.mm | 303 + .../Pods/pop/pop/POPAnimationEvent.h | 69 + .../Pods/pop/pop/POPAnimationEvent.mm | 108 + .../Pods/pop/pop/POPAnimationEventInternal.h | 41 + .../Pods/pop/pop/POPAnimationExtras.h | 43 + .../Pods/pop/pop/POPAnimationExtras.mm | 117 + .../Pods/pop/pop/POPAnimationInternal.h | 505 ++ .../Pods/pop/pop/POPAnimationPrivate.h | 16 + .../Pods/pop/pop/POPAnimationRuntime.h | 103 + .../Pods/pop/pop/POPAnimationRuntime.mm | 329 + .../Pods/pop/pop/POPAnimationTracer.h | 60 + .../Pods/pop/pop/POPAnimationTracer.mm | 191 + .../Pods/pop/pop/POPAnimationTracerInternal.h | 96 + Unit-2-Journal/Pods/pop/pop/POPAnimator.h | 47 + Unit-2-Journal/Pods/pop/pop/POPAnimator.mm | 806 ++ .../Pods/pop/pop/POPAnimatorPrivate.h | 68 + .../Pods/pop/pop/POPBasicAnimation.h | 71 + .../Pods/pop/pop/POPBasicAnimation.mm | 106 + .../Pods/pop/pop/POPBasicAnimationInternal.h | 97 + Unit-2-Journal/Pods/pop/pop/POPCGUtils.h | 152 + Unit-2-Journal/Pods/pop/pop/POPCGUtils.mm | 150 + .../Pods/pop/pop/POPCustomAnimation.h | 46 + .../Pods/pop/pop/POPCustomAnimation.mm | 75 + .../Pods/pop/pop/POPDecayAnimation.h | 66 + .../Pods/pop/pop/POPDecayAnimation.mm | 203 + .../Pods/pop/pop/POPDecayAnimationInternal.h | 127 + Unit-2-Journal/Pods/pop/pop/POPDefines.h | 37 + Unit-2-Journal/Pods/pop/pop/POPGeometry.h | 73 + Unit-2-Journal/Pods/pop/pop/POPGeometry.mm | 94 + Unit-2-Journal/Pods/pop/pop/POPLayerExtras.h | 196 + Unit-2-Journal/Pods/pop/pop/POPLayerExtras.mm | 288 + Unit-2-Journal/Pods/pop/pop/POPMath.h | 56 + Unit-2-Journal/Pods/pop/pop/POPMath.mm | 83 + .../Pods/pop/pop/POPPropertyAnimation.h | 65 + .../Pods/pop/pop/POPPropertyAnimation.mm | 125 + .../pop/pop/POPPropertyAnimationInternal.h | 359 + .../Pods/pop/pop/POPSpringAnimation.h | 67 + .../Pods/pop/pop/POPSpringAnimation.mm | 192 + .../Pods/pop/pop/POPSpringAnimationInternal.h | 132 + Unit-2-Journal/Pods/pop/pop/POPSpringSolver.h | 190 + Unit-2-Journal/Pods/pop/pop/POPVector.h | 394 + Unit-2-Journal/Pods/pop/pop/POPVector.mm | 334 + .../Pods/pop/pop/WebCore/FloatConversion.h | 56 + .../pop/pop/WebCore/TransformationMatrix.cpp | 1074 +++ .../pop/pop/WebCore/TransformationMatrix.h | 279 + .../Pods/pop/pop/WebCore/UnitBezier.h | 123 + .../Unit-2-Journal.xcodeproj/project.pbxproj | 20 +- .../Unit-2-Journal/Base.lproj/Main.storyboard | 34 +- .../CreateJournalEntryViewController.m | 101 +- .../JournalMainCollectionViewController.m | 5 +- .../Unit-2-Journal/SearchAPITableViewCell.m | 29 +- .../Unit-2-Journal/SearchAPITableViewCell.xib | 53 +- .../Unit-2-Journal/SearchAPIViewController.m | 19 +- .../Unit-2-Journal/WishListTableViewCell.m | 25 + .../Unit-2-Journal/WishListTableViewCell.xib | 68 +- 134 files changed, 14133 insertions(+), 3347 deletions(-) create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/FloatConversion.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POP.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPAction.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPAnimatableProperty.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPAnimation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationEvent.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationEventInternal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationExtras.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationInternal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationPrivate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationRuntime.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationTracer.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationTracerInternal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPAnimator.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPAnimatorPrivate.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPBasicAnimation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPBasicAnimationInternal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPCGUtils.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPCustomAnimation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPDecayAnimation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPDecayAnimationInternal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPDefines.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPGeometry.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPLayerExtras.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPMath.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPPropertyAnimation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPPropertyAnimationInternal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPSpringAnimation.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPSpringAnimationInternal.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPSpringSolver.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/POPVector.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/TransformationMatrix.h create mode 120000 Unit-2-Journal/Pods/Headers/Private/pop/UnitBezier.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POP.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POPAnimatableProperty.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POPAnimation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POPAnimationEvent.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POPAnimationExtras.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POPAnimationTracer.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POPAnimator.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POPBasicAnimation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POPCustomAnimation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POPDecayAnimation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POPDefines.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POPGeometry.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POPLayerExtras.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POPPropertyAnimation.h create mode 120000 Unit-2-Journal/Pods/Headers/Public/pop/POPSpringAnimation.h create mode 100644 Unit-2-Journal/Pods/Target Support Files/pop/pop-dummy.m create mode 100644 Unit-2-Journal/Pods/Target Support Files/pop/pop-prefix.pch create mode 100644 Unit-2-Journal/Pods/Target Support Files/pop/pop.xcconfig create mode 100644 Unit-2-Journal/Pods/pop/LICENSE create mode 100644 Unit-2-Journal/Pods/pop/README.md create mode 100644 Unit-2-Journal/Pods/pop/pop/POP.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAction.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimatableProperty.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimatableProperty.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimation.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimation.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimationEvent.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimationEvent.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimationEventInternal.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimationExtras.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimationExtras.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimationInternal.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimationPrivate.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimationRuntime.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimationRuntime.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimationTracer.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimationTracer.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimationTracerInternal.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimator.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimator.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPAnimatorPrivate.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPBasicAnimation.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPBasicAnimation.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPBasicAnimationInternal.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPCGUtils.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPCGUtils.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPCustomAnimation.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPCustomAnimation.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPDecayAnimation.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPDecayAnimation.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPDecayAnimationInternal.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPDefines.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPGeometry.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPGeometry.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPLayerExtras.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPLayerExtras.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPMath.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPMath.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPPropertyAnimation.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPPropertyAnimation.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPPropertyAnimationInternal.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPSpringAnimation.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPSpringAnimation.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/POPSpringAnimationInternal.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPSpringSolver.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPVector.h create mode 100644 Unit-2-Journal/Pods/pop/pop/POPVector.mm create mode 100644 Unit-2-Journal/Pods/pop/pop/WebCore/FloatConversion.h create mode 100644 Unit-2-Journal/Pods/pop/pop/WebCore/TransformationMatrix.cpp create mode 100644 Unit-2-Journal/Pods/pop/pop/WebCore/TransformationMatrix.h create mode 100644 Unit-2-Journal/Pods/pop/pop/WebCore/UnitBezier.h diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 80216d46d4329f6bcaef6255915ba9c6b8930836..add258239e9b509fc82fd71c5d252468bfaa5f5b 100644 GIT binary patch delta 100 zcmZoMXffC@k(KGN%;f(pCj7biE-ophCCLm7ms~827$*N?F`dlK#?9hl!2#j;v+*)A pPTt67HF-K)64UCE$?<F!d`P<N{f|#}WOro-(Lhz353@T8002`>AUOa4 delta 97 zcmZoMXffC@k(Fu5yvhGrO!#y2U0hO1OOhEFE;+3^$T0aIi|J%;Hf|O;$DfUtiQ&TJ kIJVhLOL`{9vsv&VX|enAZn7i0D>I1R$Y!<qFuS7w0L1Jgy8r+H diff --git a/Unit-2-Journal/Podfile b/Unit-2-Journal/Podfile index 491388f..c489430 100644 --- a/Unit-2-Journal/Podfile +++ b/Unit-2-Journal/Podfile @@ -4,5 +4,6 @@ pod 'FBSDKLoginKit', '~> 4.7' pod 'Parse' pod 'RestKit/Testing', '~> 0.24.0' pod 'FoldingTabBar', '~> 1.0.1’ +pod 'pop', '~> 1.0' diff --git a/Unit-2-Journal/Podfile.lock b/Unit-2-Journal/Podfile.lock index ebf21a8..87b4d91 100644 --- a/Unit-2-Journal/Podfile.lock +++ b/Unit-2-Journal/Podfile.lock @@ -24,6 +24,7 @@ PODS: - RKValueTransformers (~> 1.1.0) - Parse (1.9.0): - Bolts/Tasks (>= 1.3.0) + - pop (1.0.8) - RestKit/Network (0.24.1): - AFNetworking (~> 1.3.0) - RestKit/ObjectMapping @@ -47,6 +48,7 @@ DEPENDENCIES: - FBSDKShareKit (~> 4.7) - FoldingTabBar (~> 1.0.1) - Parse + - pop (~> 1.0) - RestKit/Testing (~> 0.24.0) SPEC CHECKSUMS: @@ -58,6 +60,7 @@ SPEC CHECKSUMS: FoldingTabBar: 3e04c49dbe2b02c529561a4182bf017b928d04d2 ISO8601DateFormatterValueTransformer: 52da467d6ec899d6aedda8e48280ac92e8ee97e6 Parse: 712efbc476d4f47b0f96b70db7e53101575753aa + pop: bb773ae2c791ca2629de13b347e7a8b450fa6a57 RestKit: 1987b5efef289c6b27bd980714d6ca48d3871b78 RKValueTransformers: 66ac5e4f077fdbe3496e792d89eeff4c3eb67701 SOCKit: c7376ac262bea9115b8f749358f762522a47d392 diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/FloatConversion.h b/Unit-2-Journal/Pods/Headers/Private/pop/FloatConversion.h new file mode 120000 index 0000000..aea012a --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/FloatConversion.h @@ -0,0 +1 @@ +../../../pop/pop/WebCore/FloatConversion.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POP.h b/Unit-2-Journal/Pods/Headers/Private/pop/POP.h new file mode 120000 index 0000000..dd15660 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POP.h @@ -0,0 +1 @@ +../../../pop/pop/POP.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPAction.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPAction.h new file mode 120000 index 0000000..78f9372 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPAction.h @@ -0,0 +1 @@ +../../../pop/pop/POPAction.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimatableProperty.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimatableProperty.h new file mode 120000 index 0000000..48fd8c4 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimatableProperty.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimatableProperty.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimation.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimation.h new file mode 120000 index 0000000..dfe8a85 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimation.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationEvent.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationEvent.h new file mode 120000 index 0000000..5d40492 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationEvent.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimationEvent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationEventInternal.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationEventInternal.h new file mode 120000 index 0000000..8263df6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationEventInternal.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimationEventInternal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationExtras.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationExtras.h new file mode 120000 index 0000000..3a1bc7e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationExtras.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimationExtras.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationInternal.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationInternal.h new file mode 120000 index 0000000..6aebf45 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationInternal.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimationInternal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationPrivate.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationPrivate.h new file mode 120000 index 0000000..ea5956d --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationPrivate.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimationPrivate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationRuntime.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationRuntime.h new file mode 120000 index 0000000..0651d06 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationRuntime.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimationRuntime.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationTracer.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationTracer.h new file mode 120000 index 0000000..64fff66 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationTracer.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimationTracer.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationTracerInternal.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationTracerInternal.h new file mode 120000 index 0000000..b76b731 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimationTracerInternal.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimationTracerInternal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimator.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimator.h new file mode 120000 index 0000000..89707ea --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimator.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimator.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimatorPrivate.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimatorPrivate.h new file mode 120000 index 0000000..89650c6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPAnimatorPrivate.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimatorPrivate.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPBasicAnimation.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPBasicAnimation.h new file mode 120000 index 0000000..50184f2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPBasicAnimation.h @@ -0,0 +1 @@ +../../../pop/pop/POPBasicAnimation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPBasicAnimationInternal.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPBasicAnimationInternal.h new file mode 120000 index 0000000..fa8cb0b --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPBasicAnimationInternal.h @@ -0,0 +1 @@ +../../../pop/pop/POPBasicAnimationInternal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPCGUtils.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPCGUtils.h new file mode 120000 index 0000000..d050fb4 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPCGUtils.h @@ -0,0 +1 @@ +../../../pop/pop/POPCGUtils.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPCustomAnimation.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPCustomAnimation.h new file mode 120000 index 0000000..5025bd6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPCustomAnimation.h @@ -0,0 +1 @@ +../../../pop/pop/POPCustomAnimation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPDecayAnimation.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPDecayAnimation.h new file mode 120000 index 0000000..dba2796 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPDecayAnimation.h @@ -0,0 +1 @@ +../../../pop/pop/POPDecayAnimation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPDecayAnimationInternal.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPDecayAnimationInternal.h new file mode 120000 index 0000000..4d5c959 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPDecayAnimationInternal.h @@ -0,0 +1 @@ +../../../pop/pop/POPDecayAnimationInternal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPDefines.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPDefines.h new file mode 120000 index 0000000..4b10036 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPDefines.h @@ -0,0 +1 @@ +../../../pop/pop/POPDefines.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPGeometry.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPGeometry.h new file mode 120000 index 0000000..9b29189 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPGeometry.h @@ -0,0 +1 @@ +../../../pop/pop/POPGeometry.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPLayerExtras.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPLayerExtras.h new file mode 120000 index 0000000..e11f4c6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPLayerExtras.h @@ -0,0 +1 @@ +../../../pop/pop/POPLayerExtras.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPMath.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPMath.h new file mode 120000 index 0000000..cc52b21 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPMath.h @@ -0,0 +1 @@ +../../../pop/pop/POPMath.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPPropertyAnimation.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPPropertyAnimation.h new file mode 120000 index 0000000..0fae4c5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPPropertyAnimation.h @@ -0,0 +1 @@ +../../../pop/pop/POPPropertyAnimation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPPropertyAnimationInternal.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPPropertyAnimationInternal.h new file mode 120000 index 0000000..5783767 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPPropertyAnimationInternal.h @@ -0,0 +1 @@ +../../../pop/pop/POPPropertyAnimationInternal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPSpringAnimation.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPSpringAnimation.h new file mode 120000 index 0000000..152f663 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPSpringAnimation.h @@ -0,0 +1 @@ +../../../pop/pop/POPSpringAnimation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPSpringAnimationInternal.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPSpringAnimationInternal.h new file mode 120000 index 0000000..afdc982 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPSpringAnimationInternal.h @@ -0,0 +1 @@ +../../../pop/pop/POPSpringAnimationInternal.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPSpringSolver.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPSpringSolver.h new file mode 120000 index 0000000..6ed1ee6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPSpringSolver.h @@ -0,0 +1 @@ +../../../pop/pop/POPSpringSolver.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/POPVector.h b/Unit-2-Journal/Pods/Headers/Private/pop/POPVector.h new file mode 120000 index 0000000..73f01f9 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/POPVector.h @@ -0,0 +1 @@ +../../../pop/pop/POPVector.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/TransformationMatrix.h b/Unit-2-Journal/Pods/Headers/Private/pop/TransformationMatrix.h new file mode 120000 index 0000000..f1232b9 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/TransformationMatrix.h @@ -0,0 +1 @@ +../../../pop/pop/WebCore/TransformationMatrix.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Private/pop/UnitBezier.h b/Unit-2-Journal/Pods/Headers/Private/pop/UnitBezier.h new file mode 120000 index 0000000..fbd11a0 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Private/pop/UnitBezier.h @@ -0,0 +1 @@ +../../../pop/pop/WebCore/UnitBezier.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POP.h b/Unit-2-Journal/Pods/Headers/Public/pop/POP.h new file mode 120000 index 0000000..dd15660 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POP.h @@ -0,0 +1 @@ +../../../pop/pop/POP.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimatableProperty.h b/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimatableProperty.h new file mode 120000 index 0000000..48fd8c4 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimatableProperty.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimatableProperty.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimation.h b/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimation.h new file mode 120000 index 0000000..dfe8a85 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimation.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimationEvent.h b/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimationEvent.h new file mode 120000 index 0000000..5d40492 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimationEvent.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimationEvent.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimationExtras.h b/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimationExtras.h new file mode 120000 index 0000000..3a1bc7e --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimationExtras.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimationExtras.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimationTracer.h b/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimationTracer.h new file mode 120000 index 0000000..64fff66 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimationTracer.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimationTracer.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimator.h b/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimator.h new file mode 120000 index 0000000..89707ea --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POPAnimator.h @@ -0,0 +1 @@ +../../../pop/pop/POPAnimator.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POPBasicAnimation.h b/Unit-2-Journal/Pods/Headers/Public/pop/POPBasicAnimation.h new file mode 120000 index 0000000..50184f2 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POPBasicAnimation.h @@ -0,0 +1 @@ +../../../pop/pop/POPBasicAnimation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POPCustomAnimation.h b/Unit-2-Journal/Pods/Headers/Public/pop/POPCustomAnimation.h new file mode 120000 index 0000000..5025bd6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POPCustomAnimation.h @@ -0,0 +1 @@ +../../../pop/pop/POPCustomAnimation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POPDecayAnimation.h b/Unit-2-Journal/Pods/Headers/Public/pop/POPDecayAnimation.h new file mode 120000 index 0000000..dba2796 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POPDecayAnimation.h @@ -0,0 +1 @@ +../../../pop/pop/POPDecayAnimation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POPDefines.h b/Unit-2-Journal/Pods/Headers/Public/pop/POPDefines.h new file mode 120000 index 0000000..4b10036 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POPDefines.h @@ -0,0 +1 @@ +../../../pop/pop/POPDefines.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POPGeometry.h b/Unit-2-Journal/Pods/Headers/Public/pop/POPGeometry.h new file mode 120000 index 0000000..9b29189 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POPGeometry.h @@ -0,0 +1 @@ +../../../pop/pop/POPGeometry.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POPLayerExtras.h b/Unit-2-Journal/Pods/Headers/Public/pop/POPLayerExtras.h new file mode 120000 index 0000000..e11f4c6 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POPLayerExtras.h @@ -0,0 +1 @@ +../../../pop/pop/POPLayerExtras.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POPPropertyAnimation.h b/Unit-2-Journal/Pods/Headers/Public/pop/POPPropertyAnimation.h new file mode 120000 index 0000000..0fae4c5 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POPPropertyAnimation.h @@ -0,0 +1 @@ +../../../pop/pop/POPPropertyAnimation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Headers/Public/pop/POPSpringAnimation.h b/Unit-2-Journal/Pods/Headers/Public/pop/POPSpringAnimation.h new file mode 120000 index 0000000..152f663 --- /dev/null +++ b/Unit-2-Journal/Pods/Headers/Public/pop/POPSpringAnimation.h @@ -0,0 +1 @@ +../../../pop/pop/POPSpringAnimation.h \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Manifest.lock b/Unit-2-Journal/Pods/Manifest.lock index ebf21a8..87b4d91 100644 --- a/Unit-2-Journal/Pods/Manifest.lock +++ b/Unit-2-Journal/Pods/Manifest.lock @@ -24,6 +24,7 @@ PODS: - RKValueTransformers (~> 1.1.0) - Parse (1.9.0): - Bolts/Tasks (>= 1.3.0) + - pop (1.0.8) - RestKit/Network (0.24.1): - AFNetworking (~> 1.3.0) - RestKit/ObjectMapping @@ -47,6 +48,7 @@ DEPENDENCIES: - FBSDKShareKit (~> 4.7) - FoldingTabBar (~> 1.0.1) - Parse + - pop (~> 1.0) - RestKit/Testing (~> 0.24.0) SPEC CHECKSUMS: @@ -58,6 +60,7 @@ SPEC CHECKSUMS: FoldingTabBar: 3e04c49dbe2b02c529561a4182bf017b928d04d2 ISO8601DateFormatterValueTransformer: 52da467d6ec899d6aedda8e48280ac92e8ee97e6 Parse: 712efbc476d4f47b0f96b70db7e53101575753aa + pop: bb773ae2c791ca2629de13b347e7a8b450fa6a57 RestKit: 1987b5efef289c6b27bd980714d6ca48d3871b78 RKValueTransformers: 66ac5e4f077fdbe3496e792d89eeff4c3eb67701 SOCKit: c7376ac262bea9115b8f749358f762522a47d392 diff --git a/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj b/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj index db85125..ee44097 100644 --- a/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Pods/Pods.xcodeproj/project.pbxproj @@ -7,907 +7,946 @@ objects = { /* Begin PBXBuildFile section */ - 00163060B2D0C8870906DF0994834474 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 310FB096BFCEB1B13B424CBD45CFD485 /* FBSDKBridgeAPIProtocolNativeV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0070EB3F66CDA21C66777FC4BF9452F8 /* TKState.h in Headers */ = {isa = PBXBuildFile; fileRef = 96D93EAF0FCC8B5FBB56E2E9C45F9D62 /* TKState.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 00CC1284C4EC48A67C89030A464A8E22 /* PFBaseState.h in Headers */ = {isa = PBXBuildFile; fileRef = 70AED028A0517D0D287C17C074D896DC /* PFBaseState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 00F8DED37CC833980AEAD7E7BD46C99E /* YALAnimatingTabBarConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 3110767D99127E63D027AD02ABECB5CC /* YALAnimatingTabBarConstants.m */; }; - 012374FC7BF3C42864F8A6D9790C7836 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 72320D3C2B4F77715F2449CF313C8A0F /* BFExecutor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 01A64680ACA654A0CAA6A98B76A2C015 /* PFProduct+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B3414A44DB406F571B8FC80279C438E3 /* PFProduct+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 01A9C95FB174BF00024C127D94FAE9F9 /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FEED7FB2327B849D9B3FB01D3E04329 /* FBSDKApplicationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 00163060B2D0C8870906DF0994834474 /* FBSDKBridgeAPIProtocolNativeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CE70D7D33DCB5A7B77D431309FF7DED /* FBSDKBridgeAPIProtocolNativeV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0059AAF7BDA07F6056221CE7D55CFE28 /* RKTestConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A986FCBAFF66C34031E230F059A2DCF /* RKTestConstants.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 007D207B3BF73369E36B01A53A09538A /* lcl_config_extensions_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = 18811D86AFD569DE58C69DE2D674A00D /* lcl_config_extensions_RK.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 00CC1284C4EC48A67C89030A464A8E22 /* PFBaseState.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB9F7182025D4FEB1027A192204588E /* PFBaseState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 00F8DED37CC833980AEAD7E7BD46C99E /* YALAnimatingTabBarConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 2870EF5BFCF54FA3B58A74A16C8DEA99 /* YALAnimatingTabBarConstants.m */; }; + 012374FC7BF3C42864F8A6D9790C7836 /* BFExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D63D25E0D4B1B1573FC3216A3041E64 /* BFExecutor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 01A64680ACA654A0CAA6A98B76A2C015 /* PFProduct+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D18572FD7945CECB627B25FAFC28DF5 /* PFProduct+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 01A9C95FB174BF00024C127D94FAE9F9 /* FBSDKApplicationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = D8B4BCA52E13031B048A091F56EDD1FE /* FBSDKApplicationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 01CEDCC7CB1512AB0E0F3D84C2F12918 /* RKTestFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 530B742954AE4C60876DC3128D82F154 /* RKTestFactory.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; 02437AFB910783C6BD25E492758C46D9 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EEBA4E2BFC884C1F4B170F5BC7DE8B77 /* CoreGraphics.framework */; }; - 02551F124693A0300B457431E75E3AF0 /* PFUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = 58EC4DACF873F5F93A5E6D16A993CFB8 /* PFUserState.m */; }; + 02551F124693A0300B457431E75E3AF0 /* PFUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = C4FAEDC2711A67FEFF48FE305A9A04C6 /* PFUserState.m */; }; 0277D1C85C0C1E1358C7AAD044B40757 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; - 02A63183E1CD64A36C6C93A5A33A2CC8 /* PFObjectSubclassingController.m in Sources */ = {isa = PBXBuildFile; fileRef = C01287FF93CF82A4FDD567F7D956DF46 /* PFObjectSubclassingController.m */; }; - 02AB91490EAB577085129C629FFF9775 /* RKRouter.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D0C7535C92E775C8051BD27D3C5A4B /* RKRouter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 02CA14777A858D78607A52D739E01BFD /* RKLog.h in Headers */ = {isa = PBXBuildFile; fileRef = BA5E53C4F97DE65CA639266FC59D62B6 /* RKLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0301C8C6C03DB444A51A086E29571535 /* PFRelation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FEA53773CB8E3FB3A322C0B4389B7A5 /* PFRelation.m */; }; - 035EEE9572C6A81E25704CE1C650473E /* TKTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = B7A6D2F5DC2549FF82CCCCA100238F29 /* TKTransition.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 04562DEDFEB5549638FFF3A71A940FF3 /* FBSDKLoginManagerLoginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C154BACC4BC2017771F24B43682204 /* FBSDKLoginManagerLoginResult.m */; }; - 04BE2CB66242D07246BFC9F2F167E9D2 /* RKStringTokenizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 83B82BD0C23C3508B8C4235B574CB5CE /* RKStringTokenizer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 04C21C0C58DD5EF39D9E5A7C9E060F3C /* PFMutableUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = 128F630995A27DB0544A45BF67DE2E4D /* PFMutableUserState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 02A63183E1CD64A36C6C93A5A33A2CC8 /* PFObjectSubclassingController.m in Sources */ = {isa = PBXBuildFile; fileRef = F9E40B348CF74929CFC2ED015A0099CE /* PFObjectSubclassingController.m */; }; + 0301C8C6C03DB444A51A086E29571535 /* PFRelation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25EF987A717711C8CEAE29DFF3C12EA0 /* PFRelation.m */; }; + 03FB2588038E1FF08053127B70281205 /* RKAttributeMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 776A46D7EBDABB85B1A452ED93BEFBF9 /* RKAttributeMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 04562DEDFEB5549638FFF3A71A940FF3 /* FBSDKLoginManagerLoginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F5D256457EA109A0FD3C2B7F2AFFFD8 /* FBSDKLoginManagerLoginResult.m */; }; + 04885DFC809E60B33C73D0262CCD3D7B /* RestKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D169B7683E9DA4DE1D139D6CD10D190 /* RestKit-dummy.m */; }; + 04C21C0C58DD5EF39D9E5A7C9E060F3C /* PFMutableUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D052546B61C8CA0E3EB34475BFB60D0 /* PFMutableUserState.h */; settings = {ATTRIBUTES = (Project, ); }; }; 04CF8AD033C179325590EA52685AE224 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 733D51F628A8649F5A0790296BA3E42A /* CFNetwork.framework */; }; - 0524E3768D3DFCF2E4E232DCF896DC2D /* FBSDKLoginKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FF16FB1B2249D1B7C33F0B28BE8FB32 /* FBSDKLoginKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 05606336B17E8DE7AFBE9B0AD554763D /* PFRESTCommand_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F74C54135672148EAEB4C34B19F94625 /* PFRESTCommand_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 05B58B7A1E2075505350D130514006A1 /* Support.h in Headers */ = {isa = PBXBuildFile; fileRef = AEA5DE805E0990CD7BFA9099F1B80A0B /* Support.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 05E1825A084B452E32D6063463B3FDDB /* PFBase64Encoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 94115F4D46CF02AFA9A9A36A9D041A73 /* PFBase64Encoder.m */; }; - 05F9EB16C3ED571BD0592AE09986458D /* PFRESTPushCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E3D6F638163E7F25D3C3782B2DD5E9D /* PFRESTPushCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 06084AD9120FF151ADF37E92A8CDBE83 /* YALFoldingTabBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 6699EE8CE193D5123B3CF8DC8EFC4CA1 /* YALFoldingTabBar.m */; }; - 06B899F5B92A7366CDCCD71E3C28E039 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 733D51F628A8649F5A0790296BA3E42A /* CFNetwork.framework */; }; - 06CC5B30A43EF1C3B526DEE380D8FE8A /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A3F443B3D92D2C8F03FFCD004B43E5 /* BFCancellationToken.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 06D70E3ED56542E6E150732ACE707585 /* FBSDKLoginButton.h in Headers */ = {isa = PBXBuildFile; fileRef = A832477BE2A9E7163C4E27DAE8B3DD8C /* FBSDKLoginButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0799DA50D0F7AB26E77782D14A4D54AF /* PFAnonymousAuthenticationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 29076EEBE727F01C11336FE621EEA957 /* PFAnonymousAuthenticationProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 07B38C643DE61100C2471A5E2061DB6D /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 5454AEF03510A2D84BEA0194B430C57D /* BFAppLink.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 07ED5D3AADD2C1C41BD215C19C4E48C6 /* PFPushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B0A1E7C301317BD56AD13ED50A48B5C3 /* PFPushManager.m */; }; - 081F6FAFE0FC8BD6EFC6A517B0ADB614 /* FBSDKMessageDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 74462B5EFF7650ED4744047E928DA11C /* FBSDKMessageDialog.m */; }; - 082462DCFDC7A19F595743F10C8EC7EB /* PFInternalUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 03D900F84420FEA97FC38820C59BB2E6 /* PFInternalUtils.m */; }; - 083A7602FC1ED21B8878784115D662F1 /* PFSQLiteDatabaseResult.h in Headers */ = {isa = PBXBuildFile; fileRef = CCE7602032D39C48B4B558FFA15A83BF /* PFSQLiteDatabaseResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 087E876A250108F964ABA6E268BE5846 /* PFEventuallyPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 76268C1A5595073CBD957E1BD34F8AEE /* PFEventuallyPin.m */; }; - 08A92B11564DA8300821C2F9E8851DB2 /* PFAnalytics_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CB5646F48F8BFA683EF37662695C41B2 /* PFAnalytics_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 08D84FA7E2537052744E64C7025A84E7 /* PFPushController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBD6BD031241526C280059BD26BDE75 /* PFPushController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 091B7CD914893E81C39427757E3FB0FD /* RKValueTransformers.h in Headers */ = {isa = PBXBuildFile; fileRef = F3BDAD35FE37E535B22528CF954B4332 /* RKValueTransformers.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 097CE360D698CD7CC46F59B370318ED1 /* FBSDKLiking.h in Headers */ = {isa = PBXBuildFile; fileRef = B9E52C40CE2CD49772146B44F17F058F /* FBSDKLiking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0524E3768D3DFCF2E4E232DCF896DC2D /* FBSDKLoginKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B3362FF57BC5AE2D2552F6F4C4ACD2C9 /* FBSDKLoginKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 05606336B17E8DE7AFBE9B0AD554763D /* PFRESTCommand_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 37F7E3AF617E0BF5874DE052CCFF4A53 /* PFRESTCommand_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 05E1825A084B452E32D6063463B3FDDB /* PFBase64Encoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E39257A1062D3B3E8CA265E73AF9795 /* PFBase64Encoder.m */; }; + 05F9EB16C3ED571BD0592AE09986458D /* PFRESTPushCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = EBC06CCF32BA9A3FEE34142E70D19588 /* PFRESTPushCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0601A5D463502C68B57F87216DC01E47 /* RKAttributeMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 2551AB6C3C2A1C521E0184550321DE02 /* RKAttributeMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 06084AD9120FF151ADF37E92A8CDBE83 /* YALFoldingTabBar.m in Sources */ = {isa = PBXBuildFile; fileRef = F83D6439675ABF2D6040C5D9F2FFF217 /* YALFoldingTabBar.m */; }; + 06CC5B30A43EF1C3B526DEE380D8FE8A /* BFCancellationToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EB6FC1B35894D58DCAA447BFB3BB370 /* BFCancellationToken.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 06D70E3ED56542E6E150732ACE707585 /* FBSDKLoginButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A6E4A459DD6D5E686E59DC08B4D07F1 /* FBSDKLoginButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0799DA50D0F7AB26E77782D14A4D54AF /* PFAnonymousAuthenticationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 36C75B01624E2DCB9059D7ABADC2B668 /* PFAnonymousAuthenticationProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 07B38C643DE61100C2471A5E2061DB6D /* BFAppLink.m in Sources */ = {isa = PBXBuildFile; fileRef = C1C4E1C48CDDA8FCF1C074DCC0D2A656 /* BFAppLink.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 07ED5D3AADD2C1C41BD215C19C4E48C6 /* PFPushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AFDCBEB6665886D2633CB5495726E387 /* PFPushManager.m */; }; + 081F6FAFE0FC8BD6EFC6A517B0ADB614 /* FBSDKMessageDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 85F8F13323C74D0619E9E4B4BBB27CEE /* FBSDKMessageDialog.m */; }; + 082462DCFDC7A19F595743F10C8EC7EB /* PFInternalUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = B16892D13DE46A8E0F04B376575D7B5C /* PFInternalUtils.m */; }; + 083A7602FC1ED21B8878784115D662F1 /* PFSQLiteDatabaseResult.h in Headers */ = {isa = PBXBuildFile; fileRef = EAA88DECC60605475F4AA3869B36A8FB /* PFSQLiteDatabaseResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 087E876A250108F964ABA6E268BE5846 /* PFEventuallyPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 98262DA8D9F983FFA347D99C232021E5 /* PFEventuallyPin.m */; }; + 08A92B11564DA8300821C2F9E8851DB2 /* PFAnalytics_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = BC07203CD82FF286D245D3A0306E62C5 /* PFAnalytics_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 08D84FA7E2537052744E64C7025A84E7 /* PFPushController.h in Headers */ = {isa = PBXBuildFile; fileRef = 10C11BD85333AB6363CF6EC82E870605 /* PFPushController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 091B7CD914893E81C39427757E3FB0FD /* RKValueTransformers.h in Headers */ = {isa = PBXBuildFile; fileRef = 37FC535483D9258C485125E0488ED3EF /* RKValueTransformers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 097CE360D698CD7CC46F59B370318ED1 /* FBSDKLiking.h in Headers */ = {isa = PBXBuildFile; fileRef = 672B96E281A19DA7F2F22511F1093D16 /* FBSDKLiking.h */; settings = {ATTRIBUTES = (Public, ); }; }; 097DE14824DA65BDF81E4C5A2D73566F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; - 09B7E2F7D97660C4794BE77A6D3F805A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; - 0A1E88ACE6A4D6D41EA0634DB6A94256 /* PFObjectSubclassingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E2A6616C4F11E50D862C39BA82A0764 /* PFObjectSubclassingController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0A444B70A312CB6B95D395C0CC7CD98F /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E62E80C06B8D2394C56D10220D1CCB6F /* MobileCoreServices.framework */; }; + 09FF1B52A8DE609DF1E2EF7378210758 /* RKDotNetDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = F2ACCE7F5437F868E4BA7E2A0C645D43 /* RKDotNetDateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A1E88ACE6A4D6D41EA0634DB6A94256 /* PFObjectSubclassingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F2BB3EBFE218C47714938D29CF23EF9 /* PFObjectSubclassingController.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0A45B6A339543EC83754D28F87523802 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6114EBA3A5CB7CB8ECE0A9BEFA6DB026 /* Security.framework */; }; - 0A6A5BA0942FF096A2D641E8F49C0F79 /* FBSDKAppInviteContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E2286118EDD86F67D14DA0213725FB6 /* FBSDKAppInviteContent.m */; }; - 0A737FDD8E364395D31D09A4510E8833 /* TKState.m in Sources */ = {isa = PBXBuildFile; fileRef = DD38F8B2DEDE8021308CAA1FD5E08EA0 /* TKState.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 0AAD3502C3D2BB1E3E7F4377C5111691 /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 589A686D162F058AE68A85DC19762E4E /* BFTaskCompletionSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 0AD287666FAFC490CAD4CBFBF47431AE /* PFCommandRunning.m in Sources */ = {isa = PBXBuildFile; fileRef = 64C153FEAD3A0694849A9B9865BF597E /* PFCommandRunning.m */; }; - 0ADF250658B54EA51FC500CB76783CB5 /* PFInstallation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4805B0DB126DE968E42BAEA762A89F17 /* PFInstallation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0AE875BA34FB652137DC559C9691F736 /* RKErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = 88F4DDD745B9F0253403AF9B24C6F051 /* RKErrors.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 0BB5BE4B4A8C410F2248DE8D14BB4663 /* FBSDKGameRequestContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E2D4FECA8A777A6DD1410FCFBA85EBA /* FBSDKGameRequestContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0C08BCEA5FE46370A36AEF6BEFCC41EA /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = C3D4F1A7841BFF26FD3010CAB4A45340 /* FBSDKAppEvents.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0C132DF2B2F5648112EE398656EE0962 /* PFRelationState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B44F43FE13A2621B29F734B3AD99BF68 /* PFRelationState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0A6A5BA0942FF096A2D641E8F49C0F79 /* FBSDKAppInviteContent.m in Sources */ = {isa = PBXBuildFile; fileRef = D24F985E3661241D2C0921E8022E66C2 /* FBSDKAppInviteContent.m */; }; + 0AAD3502C3D2BB1E3E7F4377C5111691 /* BFTaskCompletionSource.m in Sources */ = {isa = PBXBuildFile; fileRef = F6F4C2DDD2D3755D276BC06E4C5B319E /* BFTaskCompletionSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 0AD287666FAFC490CAD4CBFBF47431AE /* PFCommandRunning.m in Sources */ = {isa = PBXBuildFile; fileRef = A94107D173054A31E231EA3E081AC080 /* PFCommandRunning.m */; }; + 0ADF250658B54EA51FC500CB76783CB5 /* PFInstallation.h in Headers */ = {isa = PBXBuildFile; fileRef = A51B1A321088E7B66FD0BCAE78FD96F9 /* PFInstallation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0B96F448CA70A5E1B7389BD7015EFE01 /* RKObjectMappingOperationDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DFC0AEEC2FC3F3A422A6A76F818E344 /* RKObjectMappingOperationDataSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 0BB5BE4B4A8C410F2248DE8D14BB4663 /* FBSDKGameRequestContent.h in Headers */ = {isa = PBXBuildFile; fileRef = EFF0339213287B595E2857A1BCA7B7E8 /* FBSDKGameRequestContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0C08BCEA5FE46370A36AEF6BEFCC41EA /* FBSDKAppEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D7387AFD498FF6D486BEF5755B9D7B3 /* FBSDKAppEvents.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0C132DF2B2F5648112EE398656EE0962 /* PFRelationState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CD4D52B14CF2360DE429DCB655B00642 /* PFRelationState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0C4D309AE4178F282BAD4DC9EB1E5B03 /* RKNSJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 8275725385A9F6C10AF8B7A642A129F8 /* RKNSJSONSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0CA55F1868EDE312E4DD0713C9AEAE99 /* POPLayerExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = BDEF6D63702D3C9DE58BBBC7977D10BA /* POPLayerExtras.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0CAA65756A68A9D5C473ABECAA0B50BF /* POPAnimationExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 325AD4A9548841B8B429CC3D00DF02E4 /* POPAnimationExtras.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0D0CFD86DC5D95BB25D65B84461D031B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; - 0DA197860573F04B990BB55CED47EB2F /* PFRESTSessionCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = B407B07136A8C18FA91C2B5C0C66B115 /* PFRESTSessionCommand.m */; }; - 0DB80F6F97A5BEB7A1839EBAF3FCA9AF /* FBSDKSendButton.h in Headers */ = {isa = PBXBuildFile; fileRef = DBBFF8049227DD76047C14A4FC7F378D /* FBSDKSendButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0E089188D74319CC3ED824652B776895 /* FBSDKLikeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 65911DEF87A9DDCA7864D750D03DCF2A /* FBSDKLikeButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0E47EB82346F3A93F6FC3AF3AEA778E3 /* PFConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = 837C54D3D72E985D6E6FF3BBEA8D1EF1 /* PFConfigController.m */; }; - 0E688D49284AEE76C3B651E3CFE54C94 /* PFFileState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 697F8C874C7CA2299F6F34AF16B60BA4 /* PFFileState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0E6F9756BA82ADD778780C58B4055D79 /* RKManagedObjectRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 38716A9E624A2682EE064BB7A4E4B034 /* RKManagedObjectRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 0EA556CC3DBCD3806D56508332A5FB59 /* PFMutableACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = 653B2C591481812B2FB9DCA0C314CA21 /* PFMutableACLState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0ECA745830D272585C68ECDF8C5569D7 /* PFURLSessionCommandRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 006EA441F280F24D02FFA3BABCECC824 /* PFURLSessionCommandRunner.m */; }; - 0EEABB9AABDED87C8B9F585D82062063 /* AFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 82B067532E3BF3282258482B488C6D65 /* AFURLConnectionOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0EF19D78C0EAEF1A39F029284A518C6A /* RKNSJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = AEAF382A07FA2B9C90B3DA379C01ED05 /* RKNSJSONSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0EF3F474C4F968CC78351909F0C76A70 /* RKValueTransformers.m in Sources */ = {isa = PBXBuildFile; fileRef = 53750007AA7392F76DBC9237B62429C9 /* RKValueTransformers.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 1002547EB73320964BC1B10D757EAE2D /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = A367DA3EC3F8D359202159E683A9BB6F /* FBSDKUtility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 10B055EF9DE001B011240568093FE8AB /* PFHTTPURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9171C157C53514711AFD5FF984F31433 /* PFHTTPURLRequestConstructor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 10B85E5BCE0729452FFC72D7BB376F59 /* FBSDKShareDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = B415178073B9AF9554447EA73F804B50 /* FBSDKShareDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 12824DFDC12C14097AF56D630AD2D8FB /* PFPushState.h in Headers */ = {isa = PBXBuildFile; fileRef = F197F5F3111E02DC7CFE618154DE5269 /* PFPushState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 12D4BF5F8785937DA809F9D90E6FB565 /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 52FB1857E533909822A211A7F21E7067 /* BFMeasurementEvent_Internal.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 134441CFC16A905CB51B70597FF4B61B /* PFObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A325AA32060E16C9CED99F16E65FDE /* PFObjectPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1345483A67FB02C778D2D3639930AED7 /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E8EC5CFE550AB9001C39619CF9FB4D4 /* FBSDKBridgeAPIRequest.m */; }; - 138917EC340B4D359138CD16C4383D1D /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = CD2A28C739FE44128E510AA92662F1E1 /* FBSDKCopying.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14D6E494E0D7E904AD960AE602238451 /* PFObjectFileCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F962944E2CEA6B4A8913F2C5BDEB690 /* PFObjectFileCoder.m */; }; - 150FD95BCF7C18E9717A863C6B645DC6 /* PFPushChannelsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B25D2830AB2AF5C858A10271039E131 /* PFPushChannelsController.m */; }; - 1540A63B0BF8B0C782AE91A5B67FEF38 /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = F632B4241467D0929F63833DA56E7443 /* BFAppLinkTarget.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 1546A097DB78CBCC3268F3EB5541DE8F /* PFUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EF9E7E124CF7FEC59917A8A59D36C9D /* PFUser.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 156967851249D30F7710773EC47EB1F3 /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 68C02417550547218FA95151404F94A5 /* FBSDKCoreKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1570AA3EA1A480ADB0757319269174D1 /* PFAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 05D15859D636D2225F8443617E021DFC /* PFAssert.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 160CF44612AC90EC6ECF79F089BD4C6D /* RKRoute.m in Sources */ = {isa = PBXBuildFile; fileRef = 55F180B6F1337B63280EF7EE6FE6C2AC /* RKRoute.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 166FC271D473C88842832FCADFC20AC0 /* RKErrorMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FD6AC1526EDBB971021943756B7A67D /* RKErrorMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 168754543C69B5763F69864E4180CA20 /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AE60E42A7DAEEDEA8449020B959B680 /* AFHTTPClient.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 16E3CEBF59A2D8E5A9B04AF979FDF14A /* FBSDKShareLinkContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 64D0D3AB1BF1748F064867B7CE0DB23B /* FBSDKShareLinkContent.m */; }; - 1700592C1709E23CF04D2CA3F4BEC83D /* PFSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 45756A25BE2E60F2173BFFCAE8E9BABB /* PFSession_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1708C44508662C2D5867EB8DB869B93E /* PFQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = FD283F04FC1522E51E474E074287984C /* PFQueryController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 17D0DD03C923128099A9737F317E5D29 /* PFObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = F92FBE5E1BD5C2804DA747E481794947 /* PFObjectUtilities.m */; }; - 18128AAED9116077EDF701E1098C9954 /* PFQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = F141BBF337790457F2DAF41F1F0011E0 /* PFQueryState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1861C84C95D4B50B28765572F4F0E09C /* RKResponseDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 37287465895B3FA00A50FD0231EC03C2 /* RKResponseDescriptor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 188C54485E358878521C5C15A0AFE626 /* PFObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = A599CD4CAA3AC99E0EE59D0EE6ABBD4F /* PFObjectControlling.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0D52952BF5B3A015FA024A23981EA5BD /* RKRouter.h in Headers */ = {isa = PBXBuildFile; fileRef = 868CF57091A5F8B47E4CF9B82CD4715D /* RKRouter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0D5354A9FFC479301962382BF42F5597 /* RKMapperOperation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 433B51CC13747ACBE8AA93F02C6D784A /* RKMapperOperation_Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0D6F37CCD07F22936439247F6189A056 /* RKPathUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EB1F29228069356CCA0E5D8E0C8DA3C /* RKPathUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0DA197860573F04B990BB55CED47EB2F /* PFRESTSessionCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 030B329DF20766AE685434CD734BC3B2 /* PFRESTSessionCommand.m */; }; + 0DB80F6F97A5BEB7A1839EBAF3FCA9AF /* FBSDKSendButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 8039DDB4E996A03FF15AD2DF8D4D1CA9 /* FBSDKSendButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0E089188D74319CC3ED824652B776895 /* FBSDKLikeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D7D382B54C6E6B265B154F079E1CDDB /* FBSDKLikeButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0E47EB82346F3A93F6FC3AF3AEA778E3 /* PFConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = E1F89AA6B095AAB2C7CEB2BEAC5A7F1B /* PFConfigController.m */; }; + 0E688D49284AEE76C3B651E3CFE54C94 /* PFFileState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EC599B21BE1C0853A0234AD38F8FC07E /* PFFileState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0EA556CC3DBCD3806D56508332A5FB59 /* PFMutableACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E3480D6C7EF4C1D5B97238AFFE8D127 /* PFMutableACLState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0ECA745830D272585C68ECDF8C5569D7 /* PFURLSessionCommandRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D0B957E23560E8729AFBC541E7F0401 /* PFURLSessionCommandRunner.m */; }; + 0EEABB9AABDED87C8B9F585D82062063 /* AFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 35CC150A7EE20543758EB2CBCB3D0D9D /* AFURLConnectionOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0EF3F474C4F968CC78351909F0C76A70 /* RKValueTransformers.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DDC6BF6D637CEFC8BEDA82F87D0A60D /* RKValueTransformers.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 0F4202BC6561358918BED3708C095673 /* POPAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 11CBB787D4E85EE9F313E56D6B653B6F /* POPAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1002547EB73320964BC1B10D757EAE2D /* FBSDKUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = A9971360D666FDBC3DDD421157793868 /* FBSDKUtility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1005515B34A7CCF2EF97A317B71D2632 /* POPVector.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7F6E4B0E19B7E3633F89483FC21D852C /* POPVector.mm */; }; + 10B055EF9DE001B011240568093FE8AB /* PFHTTPURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5733C650048839167646DC7974A01ABA /* PFHTTPURLRequestConstructor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 10B85E5BCE0729452FFC72D7BB376F59 /* FBSDKShareDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = A8051434722A3494196DC122D8029D34 /* FBSDKShareDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 12824DFDC12C14097AF56D630AD2D8FB /* PFPushState.h in Headers */ = {isa = PBXBuildFile; fileRef = AB87FFD2A22D9F8F81F29DD24782E89A /* PFPushState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 12D4BF5F8785937DA809F9D90E6FB565 /* BFMeasurementEvent_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CB172E497F3C842C06931402446C2D4B /* BFMeasurementEvent_Internal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 134441CFC16A905CB51B70597FF4B61B /* PFObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 31AE16032795BC110759FE0D71DD7F32 /* PFObjectPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1345483A67FB02C778D2D3639930AED7 /* FBSDKBridgeAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = F44E8E904E1CD028316E671E43453DCE /* FBSDKBridgeAPIRequest.m */; }; + 138917EC340B4D359138CD16C4383D1D /* FBSDKCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = BA69ED7E54B79F2B468E042414006FC8 /* FBSDKCopying.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 13F6C4E6B73C633E8D58029DEB14DF5A /* RKStringTokenizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 2562927BDB580A25FD1C5DE23213DD83 /* RKStringTokenizer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 14545C481D346027B2C0E703B8AFDAAA /* RKResponseMapperOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 033F7B99C3A65CD435C0B7A09C59F876 /* RKResponseMapperOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1497B8CAE9DE252B51DC38604B76AD7A /* RKResponseDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = AEA43D8F8666C7D28DA8F862B304C5B8 /* RKResponseDescriptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14D6E494E0D7E904AD960AE602238451 /* PFObjectFileCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 45C1F3D82C36D976C5759677F623553F /* PFObjectFileCoder.m */; }; + 150FD95BCF7C18E9717A863C6B645DC6 /* PFPushChannelsController.m in Sources */ = {isa = PBXBuildFile; fileRef = FB90E78B06FCB922FD3083DB6AFE5ECA /* PFPushChannelsController.m */; }; + 1540A63B0BF8B0C782AE91A5B67FEF38 /* BFAppLinkTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = F22BFE44135812D7404BBDAF34C010E3 /* BFAppLinkTarget.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1546A097DB78CBCC3268F3EB5541DE8F /* PFUser.h in Headers */ = {isa = PBXBuildFile; fileRef = FCDD09913DC7F28BA260222EED8670BE /* PFUser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 156967851249D30F7710773EC47EB1F3 /* FBSDKCoreKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 2423BDB586DF4DF3F1525A1B5C40C54F /* FBSDKCoreKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1570AA3EA1A480ADB0757319269174D1 /* PFAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C7BBFE7402E447E0363B1BF78CFD3A0 /* PFAssert.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 15C98EE5B0B19EC8B2B69FFF3836F90A /* POPAnimationTracer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A5C02D17E47A222D470066E80F5230B /* POPAnimationTracer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 168754543C69B5763F69864E4180CA20 /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 764FFD75345B6B6A979A9D10F2D2907B /* AFHTTPClient.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 16A0D1D260C2A0C9456093033B7B2704 /* TKState.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CB6F2CF47DB783D84FBBB6F2B1A451F /* TKState.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 16ADFA9976DB0641CC700CE33921E328 /* RKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = F09DC66B579DD76F90EDE78627D95BB3 /* RKMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 16E3CEBF59A2D8E5A9B04AF979FDF14A /* FBSDKShareLinkContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 864B619977C41FA41083B23778DFD471 /* FBSDKShareLinkContent.m */; }; + 1700592C1709E23CF04D2CA3F4BEC83D /* PFSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B03B11C4675A010812829BDD0481A90F /* PFSession_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1708C44508662C2D5867EB8DB869B93E /* PFQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 137AE6FE411D32FD166221B1257A8D27 /* PFQueryController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1742414744E4A0DF8BB946045C2EB827 /* POPAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 761DB1B71490B54C854E88186480B4EA /* POPAnimationInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 17D0DD03C923128099A9737F317E5D29 /* PFObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = C78765A1425D0F41319511A796357B1F /* PFObjectUtilities.m */; }; + 18128AAED9116077EDF701E1098C9954 /* PFQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = BD91B010ED73759E99DB85B7CA9FA867 /* PFQueryState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 188C54485E358878521C5C15A0AFE626 /* PFObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = 20512742319C64711FFF5148A7214E8D /* PFObjectControlling.h */; settings = {ATTRIBUTES = (Project, ); }; }; 18BA1F40271FF44B3A0508ABFD1600FF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; - 18C091723B432584B085686061A0CEE0 /* FBSDKShareOpenGraphValueContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = BEFC9E6A35A5430AE7926645007C9C25 /* FBSDKShareOpenGraphValueContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 18CF81105FB6E0685A26F83F128F4E47 /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F8562AEEC62C495A2C6A5DCD3FA7ADDE /* FBSDKButton.m */; }; - 18D7A90C450EC893C4428E23D8B47E9F /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 288890641419271C571594FA0568909D /* BFMeasurementEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 18EAF4167A160D50758673E49250402C /* FBSDKAppGroupContent.m in Sources */ = {isa = PBXBuildFile; fileRef = F89DFF8EBC2C4ED2A61178F8775BBBE3 /* FBSDKAppGroupContent.m */; }; + 18C091723B432584B085686061A0CEE0 /* FBSDKShareOpenGraphValueContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B1BBDE1A0182E4AAFF80CDBBDF1DAB9 /* FBSDKShareOpenGraphValueContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 18CF81105FB6E0685A26F83F128F4E47 /* FBSDKButton.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4A6D24A88D4B18ED3D60681DF68270 /* FBSDKButton.m */; }; + 18D7A90C450EC893C4428E23D8B47E9F /* BFMeasurementEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = FB3A9DED47A72521C01855CCB13A10EA /* BFMeasurementEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 18EAF4167A160D50758673E49250402C /* FBSDKAppGroupContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CFFE5B32D8DD018AAF9EB4733D6315B /* FBSDKAppGroupContent.m */; }; 195B7EACB9E277F950B7C1BC314BB968 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EEBA4E2BFC884C1F4B170F5BC7DE8B77 /* CoreGraphics.framework */; }; - 1961C4A9AD59A951688C260E91482AA0 /* PFPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 4395A73F86029763A96B4A9BDB9051CF /* PFPurchase.m */; }; - 196864B89AC2C8A21D31595D9A7E05A0 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A73024D1555D614CEC62670F070F5A9 /* BFCancellationTokenSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 1A8EA6EABBDB4F9D5170BBC9F31E9FB9 /* PFRESTAnalyticsCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = C471619F560094B3BB41378638A0D362 /* PFRESTAnalyticsCommand.m */; }; - 1A9C308173F24606298E5693D359015C /* RKObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F6776613E173DE4D99A1473A4C0B7A3 /* RKObjectUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1AD36782B0606C9AB186A075420F1EA3 /* FBSDKShareUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = CC5F6833B3EC9A54CD4FD6CAFC5E61B3 /* FBSDKShareUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1AF2BFF9AAB59B86448DAD27986826D6 /* RKDotNetDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ADCEFE17BDF4D7075F5F77EB703339A /* RKDotNetDateFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 1B11A9CD89258EFE81856DDA597C2826 /* PFGeoPointPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FD3D595219E68629445A5326DAF89B0 /* PFGeoPointPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1B3FD4504118844C3450B1F75C2EC2B1 /* PFObjectSubclassInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D9CA35ABDD2925A9EF401DDDFDF3DEA /* PFObjectSubclassInfo.m */; }; - 1B732797EE1CF10C328DFDC742E866A6 /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 656A6050B3AB59B9F95CC2C4394EC1D7 /* FBSDKErrorRecoveryConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1BBA57EDDB94507AC5DAA85D6489D942 /* FBSDKAppGroupJoinDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A8BB3FBFEE9E1BDDB295037754F4DEF /* FBSDKAppGroupJoinDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1BF89E326EBB865184A47A1B76EA44B6 /* PFOfflineQueryLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = ABCED4FB329CB88CEBB2D990F236F8D5 /* PFOfflineQueryLogic.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1BFCFA4856B9BE43C5FB24EA58662689 /* PFAnonymousAuthenticationProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CB585E247C1F3D47072B64F704F03B7 /* PFAnonymousAuthenticationProvider.m */; }; - 1C2AF8394E4C8C86B7F42AF545C80281 /* PFPropertyInfo_Runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = E76FEBC923D494E63C53B86C5D25ED29 /* PFPropertyInfo_Runtime.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1C5FC139D9A229EC782BD8D26071C29E /* BFTask+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = F786873C808C35EC234BC3F1215CB314 /* BFTask+Private.m */; }; - 1C906268C5AA213F8CFCDCC95D00C718 /* PFOfflineObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = AB08BCF1E8867BB674582E6292B917CD /* PFOfflineObjectController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1CE911A8315F4C7A5844415DC9933260 /* PFRESTObjectBatchCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F8DF2C96C207C665982A18CF849D6AF /* PFRESTObjectBatchCommand.m */; }; - 1CF19FB5FE95E9F9BB9D9249F8A28276 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; - 1D66DABAD4D2C36AAF8062BE3D55C7DB /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = 421972FDDA0AE2550E0FB8F3DF8B6CB1 /* FBSDKTimeSpentData.m */; }; - 1D840EA09132B2B34413FA16BD0E1AA5 /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D2FB78825DE91D3944F3483650D27E29 /* FBSDKApplicationDelegate.m */; }; - 1DA6669105771BA38E2C69FDC90286A6 /* PFObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 7085A58614F89184F48256983144E2A4 /* PFObject.m */; }; - 1DBC9B7D710CE712D9F4C8E497DE1E0B /* PFSQLiteDatabaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = A88639112812A657127C2D4DEED2CDBB /* PFSQLiteDatabaseController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1DD387B9558E7C1759425FCA6C52D4F5 /* ParseModule.h in Headers */ = {isa = PBXBuildFile; fileRef = DBF30E4A65710CFBCCC809C891B94888 /* ParseModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1DD3895D39730377AEA9BEA6D66767CA /* PFDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = EFB4DB04B2AB3F83A62C1D8799687945 /* PFDateFormatter.m */; }; - 1DFA8E2E3190F5321761EE4BE95C9ADC /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = C3F7D1EEFCFA50F7F774EDE30F5EE02B /* FBSDKUIUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E8874FFFC0B19D20C001681F1942855 /* FBSDKShareAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 633C2A9E54BC58AA24FD4CB18067F314 /* FBSDKShareAPI.m */; }; - 1F2BB357DDF0A1CE916761ED5DBB98D2 /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A5B85D86C64A90A0CF498813B504388 /* FBSDKGraphRequestBody.m */; }; - 1F3D5A5A5067181846196EEC61D25961 /* PFWeakValue.h in Headers */ = {isa = PBXBuildFile; fileRef = CF2F482CF92A6BBCE8E46F23475EA72B /* PFWeakValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1F85CC0A24315E41F1DB39068E4684A8 /* PFPaymentTransactionObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = B506CB574291FFD269E218DEE30A8D84 /* PFPaymentTransactionObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 200F941DC68314422A92DECA8D213082 /* PFObjectBatchController.h in Headers */ = {isa = PBXBuildFile; fileRef = 468F4C50CD145E1DB145B2A3D109CC5F /* PFObjectBatchController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 205E1195DEF1603010BA47F3A8A39ACA /* FBSDKShareKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 357EF8470BF313B33261C55EB4D12327 /* FBSDKShareKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 206B7172BAA6262F77700E4347C0F8D5 /* PFUserState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1402676BAF69E76E84C7957AD539C134 /* PFUserState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2086289033B670D4FFE18F8578E911F2 /* CATransaction+TransactionWithAnimationsAndCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A92D4243C0F137302709F07AA614754 /* CATransaction+TransactionWithAnimationsAndCompletion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 20CA33378056E289649C0616BF5C5E08 /* FBSDKLikeBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D5EC58BD4863BEC2A2723C8FA5FE9B0 /* FBSDKLikeBoxView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 20F4BBA2D5179AFF7A95275C2A285DD4 /* RKObjectMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = EDB3A467B0EABBCD096D79DC9AC1FD8C /* RKObjectMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 210C00EF879DEDEA7EB09EC8C91A80A2 /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0820B0D5F4674F138EA3BB3292D26CD0 /* FBSDKSettings+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 211063C2E328D1BA057D5952FAE72961 /* RestKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BAA0C25C337D44ADABB547C00BFE0D1 /* RestKit-dummy.m */; }; - 2132812C756FB96D0AB12B601F84A802 /* PFRESTFileCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 92A46B5132CB11500CEFCB4DA5AF636C /* PFRESTFileCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 21463E177BB9A98F321678568399855C /* RKManagedObjectRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BBAC5D8DBA7BF3C8638920782DCB03D /* RKManagedObjectRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 216D6126C206D951C489C95FD37BD8CF /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = 037FA6D5161E6EA0F72B070763EA805A /* FBSDKAppEventsState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2195051CC84BF57B982BCDD58C5ED1D3 /* RKConnectionTestExpectation.h in Headers */ = {isa = PBXBuildFile; fileRef = 836DD34AA9FD86CA7B162C11FF60F67C /* RKConnectionTestExpectation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 21C13796DE839F92D14C6CA50671E5BF /* PFPushState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 99FE93E37D759F30B7B5B5162DEB3D20 /* PFPushState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 21E2ED6EFD8559848B98705909DEA010 /* FBSDKLikeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E44DF993841344E4915FFD31A91D4EC /* FBSDKLikeDialog.m */; }; - 22080662EA8952370B284F798F16D4B2 /* FBSDKShareVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = 468E01C4FC5A39A8E37ECC56F44B8F65 /* FBSDKShareVideo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 220F121D9EBCECA17B0FEC91209B88A9 /* RKResponseMapperOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = E7502CBF5FF5DDC2E45F3550840F4429 /* RKResponseMapperOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 225B422163530406C2D09DA1D7160390 /* RKObjectMappingOperationDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 420484544B85996994118EC3B407FE6F /* RKObjectMappingOperationDataSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 227CE567B059758E1C977990BFAD75AF /* PFDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = C3940D277F5BE2DF68360DE104260EC4 /* PFDevice.m */; }; - 22C38A31A84F31B9EF5B40892497DA44 /* PFLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A0F68606B3345FA797272EDF32783FC /* PFLocationManager.m */; }; - 22E435D60724A7D16B950FC453C5E34C /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = EE27DAB32337BD835F6F1C44CE941739 /* FBSDKConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 23F22339DEDBD778AB5D1DA13BFECC4F /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 373C4D681FFCFABB37EFA7C0EDB3C9E2 /* FBSDKGraphRequestMetadata.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 23F9280108D276942CBACF82E34E8821 /* RKRequestDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D68B95DF6CEEFD1E9A5D0DBEE6B89D8 /* RKRequestDescriptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2453E44572F93FE8CFB1E9C2B07F8142 /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = C49F84564221E62FADF63F94A1EA171D /* FBSDKInternalUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 246339D060F03B20F84E44F51AB7D0B1 /* RKErrorMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = C6BB6FF4ABE22CD5FED5099BB5DA52F2 /* RKErrorMessage.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 24FA587A203EB1838E92394C128065EA /* FBSDKSystemAccountStoreAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = B385E214776DF89692B91553D7FCD7B7 /* FBSDKSystemAccountStoreAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 25435509864D8830160361E72AA5E31F /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = 363A2C942125F80203914292454D9AA9 /* FBSDKLogo.m */; }; - 2556A6696795A705FF3AAA00CAAF1879 /* PFCoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CCDD526B69067FC32BF946A540F4C00 /* PFCoreManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 25C893D3F81918CA2748927B5F02A595 /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = C0E3792F488D1F767C3F48F576C16951 /* FBSDKBase64.m */; }; - 25EFA69D90204A5BFBC506669A97C683 /* PFFileController.h in Headers */ = {isa = PBXBuildFile; fileRef = B900275E03F4A9C6416A5077A6E72931 /* PFFileController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2617C1651BDE360A04512FF5DFEE55B1 /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = A64CECFF3E3D0A64DA3BF8E6FB583C41 /* FBSDKMonotonicTime.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 264457704BDD888C92CAAEBE20E709FC /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A3F94D10D8725691A1ABC86A1405D5C /* FBSDKTestUsersManager.m */; }; - 267A29AA34A9D757450EBE41A4A5F40B /* PFInstallation.m in Sources */ = {isa = PBXBuildFile; fileRef = 212312E37823B602015F8558E2380BE5 /* PFInstallation.m */; }; - 269ABC30C8CD9E74E46491F5B6FB9D17 /* PFMutableQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = 23A9DA06DB5F829FD8BDD6FD23E82A45 /* PFMutableQueryState.m */; }; - 2763640E3F9F25BCE1BC36B60364A740 /* FBSDKSharePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 35B3E5E386C38B964CF695D9AB977807 /* FBSDKSharePhoto.m */; }; - 27DAF03799622546C24B79D72DFF1003 /* Parse_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BDEF7A52E57E764142D42EE5DB63FD2 /* Parse_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 27F35B04936EED379E9B73ADDEEE0EA8 /* RKURLEncodedSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 58EB40198CF6F7F4E677035D64534FDA /* RKURLEncodedSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 28748DDD8E8A2AEB3502CBF69AB4BDDB /* Testing.h in Headers */ = {isa = PBXBuildFile; fileRef = F0CFA77570DB7AAAE7861BC27A0A45A3 /* Testing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 28E0C7D4EAB83F94E8BED7A8A6588F17 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E566B5A1AF002DF94450B717E7E8A195 /* AFNetworkActivityIndicatorManager.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 28EBF852662F1A1004F220F004B2FB27 /* PFFileStagingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 54A2B00522521F43E6925FCB7040FA7A /* PFFileStagingController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 29E9B7D045DD5219B0D17A1289A1E228 /* FBSDKShareUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = E7CB4124E5934CC10279CE22C1F3D5E5 /* FBSDKShareUtility.m */; }; - 2A2484F1773729BB256973910B7340DB /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B388397746D26347C7AE282AEB53D77 /* FBSDKAppEventsUtility.m */; }; - 2A9CDB714501BF7551C376135E06CB77 /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 230215250F2BC4E1CCBB87F678DC507C /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 2ADFEB8C12A6F30CE83BC5AB3316C6E4 /* PFKeyValueCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 33EB14F8B74929AAF1B17B2931B6AF30 /* PFKeyValueCache.m */; }; - 2B868B020F9C681F76C506EF6BC9A801 /* FBSDKSharePhotoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 71197DCFE9C806E6F574A696BE01DFA8 /* FBSDKSharePhotoContent.m */; }; - 2BE316C68D11EAF02F9288B25FEFF2B8 /* PFPinningEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 79791F337B75C7A9E86B2C16831BA3B4 /* PFPinningEventuallyQueue.m */; }; - 2BFE426FBB2EF7A91EAC0893828A3F5C /* FBSDKShareKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A790CE27C36D138858150ED6C2FC85E5 /* FBSDKShareKit-dummy.m */; }; - 2C04A25EF87B39A7378F852D3A251514 /* PFQueryState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 698C95FE97ED8FCE0AF17A04C769ACD7 /* PFQueryState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2C61A57B4DA38760CFE42C7F3AFF489E /* PFURLSessionDataTaskDelegate_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 32D23F94B2A86BE0E61787BC2DB18576 /* PFURLSessionDataTaskDelegate_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2CC921A632237030D7C642FF4D3E2216 /* PFUserFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = AB067014760D1E79CE3A58172F0227EB /* PFUserFileCodingLogic.m */; }; - 2D3A10AB5D0CAECCEEDE49132B5F4330 /* AFHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B012D386ED7D06A4EF5353DAB2DD66D /* AFHTTPClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2D4F9228E33B7CB031B9344EA22E3AE7 /* PFRESTQueryCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C1AC18847E2EFD352913578BFCE568F /* PFRESTQueryCommand.m */; }; - 2D61DA1D31B497355FA3519736497111 /* TKStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = BB22C7EB016209266A6A46D552308368 /* TKStateMachine.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 2D6AF7788EA8D30E93BEB5F0CAC89C68 /* PFAnonymousUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 0149B0C82CA899926A01FA591E4710C4 /* PFAnonymousUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2D7129239566598FD9FC8204D9D26793 /* PFCloudCodeController.m in Sources */ = {isa = PBXBuildFile; fileRef = 95418B78D785BACFEAFC48B338DE9AF4 /* PFCloudCodeController.m */; }; - 2D8855CDA875AC8AD7AE0DFCC4250493 /* YALSpringAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 66FDB0B731FFB4CE1465D2BF7FDCD263 /* YALSpringAnimation.m */; }; - 2D8BA321D46E84251856DED2E84239DD /* PFPinningObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = B639B99C4CD7C16D2AD6DD82DD08FA5A /* PFPinningObjectStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2D9EF1B077CBAAEB072C4E04FDA46BD3 /* RKMappingTest.h in Headers */ = {isa = PBXBuildFile; fileRef = 491C07A26268A25977860299C1B04D2C /* RKMappingTest.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2DC488DF3C90086C17087C2BB72189AA /* FBSDKMessengerIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 05CCBF923371A8F436D56A7223B904D7 /* FBSDKMessengerIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2DE0A008B557C991779E119572071163 /* PFFieldOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B10427DA50494463C21D709E70487D33 /* PFFieldOperation.m */; }; - 2E29ABDC3BF7E6B7FF03C02FDD08B45F /* PFCommandRunningConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = DB1A535EDDE87E526D1C66FA9BEDAE70 /* PFCommandRunningConstants.m */; }; - 2E74D36D8D8BAD8D55380944015FD120 /* PFSQLiteDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = D01E708EE28BD1140C9AE0D2329F2E19 /* PFSQLiteDatabase.m */; }; - 2E8782D39FA5B415D526EBE5C8AFA32E /* PFAnalyticsUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 9151CBFA951CC2C02B03C255F48BDFEE /* PFAnalyticsUtilities.m */; }; - 2E87F7494BC2023ED83CCB2C93E67B69 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = FE17A124811A1964D6CA532CA4312C8C /* FBSDKBridgeAPIProtocolWebV2.m */; }; - 2E926A8C36CAE55E20568469F19BD6DB /* RKObjectMappingMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 33D211F268ABCC6126E0AA222AEFB496 /* RKObjectMappingMatcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2F4C116B777496BAB15E7D6442D221BF /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 768A924021D993B1CF8F4AA7BD2A0B5A /* FBSDKErrorConfiguration.m */; }; - 2F8A6D5D298FE5F63CFA909D0A63D26B /* PFRESTObjectCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A1B02F9DF967F2FFEC317D614A2136F /* PFRESTObjectCommand.m */; }; - 2FB0531893E490ACEC556B0F43C44591 /* FBSDKLikeActionControllerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 71C1EF327C1FCABF7C18FBE944C3E96B /* FBSDKLikeActionControllerCache.m */; }; - 2FBCC263A4CF83AF299AAC0CEE750AD6 /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 04FD35F060DAF86D25973ECA13C4B1C6 /* BFURL.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2FC94CCAED9DD09203580A70DECF2A4A /* PFCommandURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = A0078CE9F7F7BB672D734ECE689D766B /* PFCommandURLRequestConstructor.m */; }; - 3053488EEEBCD0385576315DBE9EC11E /* FBSDKCheckmarkIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 664DB729E26FCE7792E743269AA1D35F /* FBSDKCheckmarkIcon.m */; }; - 307D54623092903A6C49A7C219BA3252 /* FBSDKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 99448AE40302A804BCEE91E92302B14D /* FBSDKMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 31A1542159DF368E8DFF632BA01E4B97 /* RKOperationStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C7247AC09710B122EB8AEBC235DE9F /* RKOperationStateMachine.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 31B7827480A2AD779C80D1E428F0F758 /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EF150B806961F2973DC836A0D2A1391 /* FBSDKKeychainStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 324B462950BF05B9CF8C8B4E1556D1A3 /* PFOfflineQueryLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 01C1843D737F908141E29AADDC66AB8B /* PFOfflineQueryLogic.m */; }; - 32659ECDEF93706E5DE3C89FF10C3725 /* RKRelationshipMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = BD723A8B8848E0084E24732986ADB0F7 /* RKRelationshipMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 328528E69AE673F4223F2B27CF07EB90 /* RKPropertyMappingTestExpectation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F17239611A3B8B424D42FCD9B529DA9 /* RKPropertyMappingTestExpectation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 32FE2EE3C0D371A093A87DBD3D5A378C /* RKMappingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9BCA0158D3FA6ECF2FB4D804EA8A83 /* RKMappingTest.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 336B220F124974D444746D194367422A /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 016FE71D37A737A72140AC6154407A41 /* BFAppLink_Internal.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 33808782CCEF801D53209D523D9C7358 /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = B9D34B12F05BF9127D139B7586C718A0 /* FBSDKButton+Subclass.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 33E51CF359A60B9BF66BE9C279AB3E43 /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 40FE4E083CC5C40D0DF65A6B08724A1A /* FBSDKAccessTokenCache.m */; }; - 343BA26395BFBF73CFC3F42871C03BB9 /* YALFoldingTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B9F9B80CBA1DEAEF33627D58AB7E3CE /* YALFoldingTabBarController.m */; }; - 34B1786FA4EBC179AC660B83CF1A4F82 /* FBSDKShareButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AC646B2CF1A54F8852DB65ABDB82D96 /* FBSDKShareButton.m */; }; - 34FE928299E6FCBB43826BDB66144FD7 /* FBSDKLikeObjectType.h in Headers */ = {isa = PBXBuildFile; fileRef = 572AFF6ED4416D1D697F241FDD4DA3FE /* FBSDKLikeObjectType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 350EB8FBF8DEF90D9AF0E48E068BFA92 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6114EBA3A5CB7CB8ECE0A9BEFA6DB026 /* Security.framework */; }; - 3515249853196B72457D26E35A75A0D5 /* PFUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB18FECF07D424856DF25DEFEAE675C /* PFUserController.m */; }; - 35599C4F9F10FC09064011AE354E20C5 /* FBSDKCheckmarkIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B79F3FA1E8F365CB494021D4EF3A3C1 /* FBSDKCheckmarkIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 35A2D271C4A91DC464251B9245103DB5 /* PFCommandCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 52CB9F69B642A0B3EAB1EA3DD8F5BCB9 /* PFCommandCache.m */; }; - 361A366D11CECA15C3B45FC3ACEDA050 /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = A8279D26889EDF822F6A7F2AEC767E66 /* FBSDKGraphRequestDataAttachment.m */; }; - 36CAD613B46C6F3F7B092EDDE2BFD87B /* PFApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 21AB5F2776814B493AE224A090442A49 /* PFApplication.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 36CB170B89C0B4642CB663616BC47E5B /* PFURLSessionDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 60F0D5F81E5A0E8F5FFDC41567CCE3CF /* PFURLSessionDataTaskDelegate.m */; }; - 379BA3F1B3C1F43A72C4C17B61215FDE /* PFProductsRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = AFAF91B7E5BA7253D501E8786B415520 /* PFProductsRequestHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 37C6195201D97353994A4B323BD7EC39 /* PFMutableFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EEED09807991F565F9159AB28C2112 /* PFMutableFileState.m */; }; - 37E32240C69433B8D41BF206C15BDE91 /* Parse.h in Headers */ = {isa = PBXBuildFile; fileRef = 321F060F2EAD3712AE8975662D9AE049 /* Parse.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 392D8D316A7A626D07173B6D67773E19 /* RKMapperOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = BF53A464C16A680DC9C16D7D05C05F74 /* RKMapperOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 392F1056919E38CEDEB5A545DA4C820B /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = 63D635232970F5FD839031F4052A247F /* FBSDKLogo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 397590A70BEFB683D21C67F996FD749C /* RKTestFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = ED7B68BD4BE4A662816CBE0A294F6500 /* RKTestFactory.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 397DD286C0935623C81E4AA9AE2E4C2C /* PFPurchaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = B9943DF525E97D5F98EC58CF7865A2A0 /* PFPurchaseController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A4A4D139CCD0A806197BF7A723800F2 /* AFJSONRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F5A634097C8C984304065334CBF5BCB /* AFJSONRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B2C344B306A3FB19169E1F4AA62E103 /* PFACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = DE71C8926E171BD5AB6618D07D0A3797 /* PFACLState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3B34B9CF9A34E235FD457006303C757D /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 91029F40DE711320BF2AA3DF5F22A51C /* FBSDKErrorRecoveryConfiguration.m */; }; - 3B88684885F6A92894F9B1C6DF2CB127 /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F5232ABD627549C1BEDB8630661C661 /* FBSDKAppEventsDeviceInfo.m */; }; + 1961C4A9AD59A951688C260E91482AA0 /* PFPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 01A50C2394596A1AAF49C7A2877C776E /* PFPurchase.m */; }; + 196864B89AC2C8A21D31595D9A7E05A0 /* BFCancellationTokenSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B8AE15FBFEC0BE016020B8970ADE865 /* BFCancellationTokenSource.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1A8EA6EABBDB4F9D5170BBC9F31E9FB9 /* PFRESTAnalyticsCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = FB1CFA906E2A5ECA69FDBCAC00497F72 /* PFRESTAnalyticsCommand.m */; }; + 1AD36782B0606C9AB186A075420F1EA3 /* FBSDKShareUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E3D3427A00B557DE42EED0B4C015942 /* FBSDKShareUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1B11A9CD89258EFE81856DDA597C2826 /* PFGeoPointPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 407C402A54C0C81D42BEA7147982FA35 /* PFGeoPointPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1B3C45012DD6C877AF2B3757B48D2CEA /* RKMappingOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FE7C0F12060A4C3CEE3C5427762A616 /* RKMappingOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1B3FD4504118844C3450B1F75C2EC2B1 /* PFObjectSubclassInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = A7AAF29A747A53F757B1A76CF477460A /* PFObjectSubclassInfo.m */; }; + 1B732797EE1CF10C328DFDC742E866A6 /* FBSDKErrorRecoveryConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = BDA6A8C4B5B6F7C4E38F45C438720C50 /* FBSDKErrorRecoveryConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1B7C3D5167896D20FDA7AD2B99B9B442 /* RKObjectManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 114DF71DB16E01CD9902FA71F5FCB868 /* RKObjectManager.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1BBA57EDDB94507AC5DAA85D6489D942 /* FBSDKAppGroupJoinDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 79630B324053224BBFAB6E9D26A18148 /* FBSDKAppGroupJoinDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1BF89E326EBB865184A47A1B76EA44B6 /* PFOfflineQueryLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EA63193596C0C6A36407E53BE350DC2 /* PFOfflineQueryLogic.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1BFCFA4856B9BE43C5FB24EA58662689 /* PFAnonymousAuthenticationProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = D46B8631F4A20A30B5C1E47D9F2A6FEB /* PFAnonymousAuthenticationProvider.m */; }; + 1C2AF8394E4C8C86B7F42AF545C80281 /* PFPropertyInfo_Runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = F29DD5432F60CE09614541D4BE9A4FB8 /* PFPropertyInfo_Runtime.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1C5FC139D9A229EC782BD8D26071C29E /* BFTask+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F0F7C3B1D42E74B34C118D7F55D56DC /* BFTask+Private.m */; }; + 1C906268C5AA213F8CFCDCC95D00C718 /* PFOfflineObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 129476AE26D881F46C3F727D95A2D8EE /* PFOfflineObjectController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1CE911A8315F4C7A5844415DC9933260 /* PFRESTObjectBatchCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = DAF50A43880E07D46E8A97B575A92405 /* PFRESTObjectBatchCommand.m */; }; + 1D66DABAD4D2C36AAF8062BE3D55C7DB /* FBSDKTimeSpentData.m in Sources */ = {isa = PBXBuildFile; fileRef = 84E5CF3BD81C4C414BE88556EB18D08F /* FBSDKTimeSpentData.m */; }; + 1D840EA09132B2B34413FA16BD0E1AA5 /* FBSDKApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7558DBD1AF61B17AF39F3565B9F68601 /* FBSDKApplicationDelegate.m */; }; + 1DA6669105771BA38E2C69FDC90286A6 /* PFObject.m in Sources */ = {isa = PBXBuildFile; fileRef = A12B03B24DC7C654F172A6A53E9C7603 /* PFObject.m */; }; + 1DBC9B7D710CE712D9F4C8E497DE1E0B /* PFSQLiteDatabaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = 19397C043A357D696BBA9A55EFD5B167 /* PFSQLiteDatabaseController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1DD387B9558E7C1759425FCA6C52D4F5 /* ParseModule.h in Headers */ = {isa = PBXBuildFile; fileRef = BD6DD4F4195C174C8DC06D3C85DDF8A8 /* ParseModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1DD3895D39730377AEA9BEA6D66767CA /* PFDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 99B423A79E8F8A42FC5D676612B33E2F /* PFDateFormatter.m */; }; + 1DFA8E2E3190F5321761EE4BE95C9ADC /* FBSDKUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = D849F8915909B1847A03276B640112BC /* FBSDKUIUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1E37A7B04ECBE439CE8A683823B663B7 /* RKDynamicMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 849262636C1FD7E1D283D86137BE70B8 /* RKDynamicMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1E8874FFFC0B19D20C001681F1942855 /* FBSDKShareAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = ADBAF2BABA39070672917C80E4F74CBA /* FBSDKShareAPI.m */; }; + 1F2BB357DDF0A1CE916761ED5DBB98D2 /* FBSDKGraphRequestBody.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E7D0F10FA61E6BAC091324113D02F2 /* FBSDKGraphRequestBody.m */; }; + 1F2C79C7C24FCC4784A09BF594C6F1ED /* RestKit.h in Headers */ = {isa = PBXBuildFile; fileRef = F2FBDEBC39B29A9DA41247E2D96331E6 /* RestKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1F3D5A5A5067181846196EEC61D25961 /* PFWeakValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 205214C203BF751A124F1153AD9CBA8E /* PFWeakValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1F85CC0A24315E41F1DB39068E4684A8 /* PFPaymentTransactionObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 60D3C2480A1362A32E373ED42790BD7C /* PFPaymentTransactionObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 200F941DC68314422A92DECA8D213082 /* PFObjectBatchController.h in Headers */ = {isa = PBXBuildFile; fileRef = ADBEDE77334D88F47F1AD897ECEFAC8D /* PFObjectBatchController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 205E1195DEF1603010BA47F3A8A39ACA /* FBSDKShareKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B468DC6F25FAF7381C563D8A3A3C32E /* FBSDKShareKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 206B7172BAA6262F77700E4347C0F8D5 /* PFUserState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 138471689F57812BFA9933C75A79A7D5 /* PFUserState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2086289033B670D4FFE18F8578E911F2 /* CATransaction+TransactionWithAnimationsAndCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = FBFE9966A9FB854C5D85375D24F936C5 /* CATransaction+TransactionWithAnimationsAndCompletion.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 20A2B211D75692571DE1A418220365D2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + 20CA33378056E289649C0616BF5C5E08 /* FBSDKLikeBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = A8710983B393BA50AECE51EA8D90E727 /* FBSDKLikeBoxView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 210C00EF879DEDEA7EB09EC8C91A80A2 /* FBSDKSettings+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B432A363E0081BD273051415B767D749 /* FBSDKSettings+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2132812C756FB96D0AB12B601F84A802 /* PFRESTFileCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = A1F131A4365C559659FC1FBB194A13E9 /* PFRESTFileCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 216D6126C206D951C489C95FD37BD8CF /* FBSDKAppEventsState.h in Headers */ = {isa = PBXBuildFile; fileRef = E75B973B4239A8C33C3DF18D0F41168D /* FBSDKAppEventsState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 21C13796DE839F92D14C6CA50671E5BF /* PFPushState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C3843CD6AEFE5F515E6142799F801CA /* PFPushState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 21E2ED6EFD8559848B98705909DEA010 /* FBSDKLikeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 3394EE87DFC9E88439AB265D59382138 /* FBSDKLikeDialog.m */; }; + 22080662EA8952370B284F798F16D4B2 /* FBSDKShareVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3135C42A396F109267EA88F6641A9194 /* FBSDKShareVideo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 227CE567B059758E1C977990BFAD75AF /* PFDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BAE999CCCB6D83C2D4DFA288FE9C7BF /* PFDevice.m */; }; + 229318A2EF0A83A1BC417DBB54FAE450 /* POPCGUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 09343BA3B921E20A6185A17744E53B63 /* POPCGUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 22BB0A3493753E3DE40426F8E2A8D98F /* RKResponseMapperOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AC2271F01F29748BDF976CEF2EE767A /* RKResponseMapperOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 22C38A31A84F31B9EF5B40892497DA44 /* PFLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1804AEAE0A042ABB0AB0F3B3CCD54B2A /* PFLocationManager.m */; }; + 22E435D60724A7D16B950FC453C5E34C /* FBSDKConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E867F3D72745F4BA824FC362CEBFACB /* FBSDKConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 231A46F0855F96400AFB1832C605FF6F /* RKLog.h in Headers */ = {isa = PBXBuildFile; fileRef = E8A3F0FA2907B71EC0DCB074D0E32D52 /* RKLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 23F22339DEDBD778AB5D1DA13BFECC4F /* FBSDKGraphRequestMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 190B3059AD121705B18018211A6B6C66 /* FBSDKGraphRequestMetadata.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2453E44572F93FE8CFB1E9C2B07F8142 /* FBSDKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 20EA58DC0A0DC1E01333E2DC71658378 /* FBSDKInternalUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 24FA587A203EB1838E92394C128065EA /* FBSDKSystemAccountStoreAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = E2E5158BDE2438D1F296202C6A65CAD9 /* FBSDKSystemAccountStoreAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 25435509864D8830160361E72AA5E31F /* FBSDKLogo.m in Sources */ = {isa = PBXBuildFile; fileRef = B80B9804F9EC77183DFB3A54E58272CF /* FBSDKLogo.m */; }; + 2556A6696795A705FF3AAA00CAAF1879 /* PFCoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C5E9FB336C0917EC02E4034B2B66FE /* PFCoreManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 25C7617B2D122A04E33E3B78CA426B60 /* Support.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ADB5C6CFDD59CB906870DA9025B3B8A /* Support.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 25C893D3F81918CA2748927B5F02A595 /* FBSDKBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 56FE36E9C6BEFFC89DD1BC36E6289234 /* FBSDKBase64.m */; }; + 25EFA69D90204A5BFBC506669A97C683 /* PFFileController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FE19DF082B2711D3D79E3BDF50FA146 /* PFFileController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2617C1651BDE360A04512FF5DFEE55B1 /* FBSDKMonotonicTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 933D9439D53FAC2493C8D8F5ADD21D74 /* FBSDKMonotonicTime.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 264457704BDD888C92CAAEBE20E709FC /* FBSDKTestUsersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 324AAABDF5EC040480FF7DD0137ACC3A /* FBSDKTestUsersManager.m */; }; + 267A29AA34A9D757450EBE41A4A5F40B /* PFInstallation.m in Sources */ = {isa = PBXBuildFile; fileRef = 892F0F257D5AF973E182934E5D03C911 /* PFInstallation.m */; }; + 269ABC30C8CD9E74E46491F5B6FB9D17 /* PFMutableQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F9A3C84F3CC18CABCD97E1DFB774A49 /* PFMutableQueryState.m */; }; + 273413858783060A2A4F5AB76A2855CE /* RKObjectMappingMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = E5C990C91B211AE926078950B8630516 /* RKObjectMappingMatcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 275BF668E4B40AEBF35F411A56F05B6D /* RKTestNotificationObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = F6FB42658DA37641EE0F5D6EE5236722 /* RKTestNotificationObserver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 2763640E3F9F25BCE1BC36B60364A740 /* FBSDKSharePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CE70DA06AD37A88DD393A98C73C7D07 /* FBSDKSharePhoto.m */; }; + 27DAF03799622546C24B79D72DFF1003 /* Parse_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 503253CFCA3206291EBDFF00B0FDE5BF /* Parse_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 27F8C6DBEE3149A4A1FE4682E23111A5 /* POPAction.h in Headers */ = {isa = PBXBuildFile; fileRef = C70FA986190A848DD39EB171EF041F33 /* POPAction.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2894A71BD9B82830C0DE27EDB9DEC7E0 /* lcl_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = D284CA3DDD91571D70CF7256A3C248FE /* lcl_RK.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 28BA0A9D61D5B23A53B9D09A7A9896CC /* RKObjectMappingOperationDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = F25269A960ACE3EBB3FE45F44DE4D5BC /* RKObjectMappingOperationDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 28E0C7D4EAB83F94E8BED7A8A6588F17 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D57E341463F67AF53255008B5CAB0A /* AFNetworkActivityIndicatorManager.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 28EBF852662F1A1004F220F004B2FB27 /* PFFileStagingController.h in Headers */ = {isa = PBXBuildFile; fileRef = FCB8001E15C66CA1A4ADC3B7AB26C08D /* PFFileStagingController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 29A195C90E8CFB19E874DE1984AF015E /* RKTestHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = F3BB79D7E31BCBC04BA5D076D3B1A9BC /* RKTestHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 29E9B7D045DD5219B0D17A1289A1E228 /* FBSDKShareUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = C5934D49963F991DC729306B6D2ECA94 /* FBSDKShareUtility.m */; }; + 2A2484F1773729BB256973910B7340DB /* FBSDKAppEventsUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 8904DD3C8A8AC8A1A2F48DEB0DBC1B95 /* FBSDKAppEventsUtility.m */; }; + 2A9CDB714501BF7551C376135E06CB77 /* FBSDKDynamicFrameworkLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 8988609857673ACE16552A1C00D45091 /* FBSDKDynamicFrameworkLoader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 2ADFEB8C12A6F30CE83BC5AB3316C6E4 /* PFKeyValueCache.m in Sources */ = {isa = PBXBuildFile; fileRef = E22A1C7E80FE2BA8CE59C7C924410D0E /* PFKeyValueCache.m */; }; + 2B19F33BE94964880FAA3A6B58CCE963 /* RKOperationStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E668F82944D74008FA69DF68A0E96F9 /* RKOperationStateMachine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2B868B020F9C681F76C506EF6BC9A801 /* FBSDKSharePhotoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B16533489604D2247F7EC997C13BA975 /* FBSDKSharePhotoContent.m */; }; + 2BE316C68D11EAF02F9288B25FEFF2B8 /* PFPinningEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 131783F296EC8FE80CA0ACE2C3C056CC /* PFPinningEventuallyQueue.m */; }; + 2BFE426FBB2EF7A91EAC0893828A3F5C /* FBSDKShareKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EAA5D41EBB47944D263EB028AA677026 /* FBSDKShareKit-dummy.m */; }; + 2C04A25EF87B39A7378F852D3A251514 /* PFQueryState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A6D705A7C393E18FCFACEC1D2F07D098 /* PFQueryState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2C61A57B4DA38760CFE42C7F3AFF489E /* PFURLSessionDataTaskDelegate_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 42CBEF54F1256217E4780DB8ABBF5AC3 /* PFURLSessionDataTaskDelegate_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2CC921A632237030D7C642FF4D3E2216 /* PFUserFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = D605FE4F41A283271B93F93C8E0C5932 /* PFUserFileCodingLogic.m */; }; + 2D3A10AB5D0CAECCEEDE49132B5F4330 /* AFHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C1CC5AA0EB4EDA9432A7D5463BE4901 /* AFHTTPClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2D4F9228E33B7CB031B9344EA22E3AE7 /* PFRESTQueryCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 0842DD1DCDFD9683C89B6A9078E9D0FC /* PFRESTQueryCommand.m */; }; + 2D6AF7788EA8D30E93BEB5F0CAC89C68 /* PFAnonymousUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 13B2A7FD3B5E9C5F68CC0E991780A0EC /* PFAnonymousUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2D7129239566598FD9FC8204D9D26793 /* PFCloudCodeController.m in Sources */ = {isa = PBXBuildFile; fileRef = E758F865F37D77788EE4B4551EF1487D /* PFCloudCodeController.m */; }; + 2D8855CDA875AC8AD7AE0DFCC4250493 /* YALSpringAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = BD5D724AF948672175ECFB8781A0F2F5 /* YALSpringAnimation.m */; }; + 2D8BA321D46E84251856DED2E84239DD /* PFPinningObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = B70778A88E35241FD05E8017A5D78CFD /* PFPinningObjectStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2DC488DF3C90086C17087C2BB72189AA /* FBSDKMessengerIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 804F2F0EDB0F2FE68B74F5D2D1ED5A94 /* FBSDKMessengerIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2DE0A008B557C991779E119572071163 /* PFFieldOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E9125BDC1505BCE865985502732B9D /* PFFieldOperation.m */; }; + 2E29ABDC3BF7E6B7FF03C02FDD08B45F /* PFCommandRunningConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 26A9C85767DC8FE594E7F2DF14F867B2 /* PFCommandRunningConstants.m */; }; + 2E74D36D8D8BAD8D55380944015FD120 /* PFSQLiteDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 255D43CCCFDFD52C9090EF3B8972D72C /* PFSQLiteDatabase.m */; }; + 2E8782D39FA5B415D526EBE5C8AFA32E /* PFAnalyticsUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 32584F1C40CC0FB3ACD703733332AA08 /* PFAnalyticsUtilities.m */; }; + 2E87F7494BC2023ED83CCB2C93E67B69 /* FBSDKBridgeAPIProtocolWebV2.m in Sources */ = {isa = PBXBuildFile; fileRef = AE15675496460EEA4051AF5F4AB4E504 /* FBSDKBridgeAPIProtocolWebV2.m */; }; + 2EF035CF21D5D9B2F876D73D145DCBAC /* POPAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E0A91B803AD2D9F9BBC9C9C40485EFB /* POPAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2F4C116B777496BAB15E7D6442D221BF /* FBSDKErrorConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = E436D932FA7C17E15674EB32E957ABE2 /* FBSDKErrorConfiguration.m */; }; + 2F67C0F2B19DD7478B7C6089401D10D8 /* POPDecayAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 64DFE094C387E0DA1F62DB6912006497 /* POPDecayAnimationInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2F8A6D5D298FE5F63CFA909D0A63D26B /* PFRESTObjectCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = E0650188B522893BF764569662B5E542 /* PFRESTObjectCommand.m */; }; + 2FB0531893E490ACEC556B0F43C44591 /* FBSDKLikeActionControllerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 68133029060DA29FD5C9C26119CFA51B /* FBSDKLikeActionControllerCache.m */; }; + 2FBCC263A4CF83AF299AAC0CEE750AD6 /* BFURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F63108EF1315E6D7E404F9ABF304F1A /* BFURL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2FC94CCAED9DD09203580A70DECF2A4A /* PFCommandURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 87EE4B2AFFD85E9F75C94F5661D717F2 /* PFCommandURLRequestConstructor.m */; }; + 2FD8DABDCB30DFD548402447EDD982B7 /* POPGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = 25913693021196FC72C7A8E7A937AFCC /* POPGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3053488EEEBCD0385576315DBE9EC11E /* FBSDKCheckmarkIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E4E096EFFA1494BC822896BB3BD15AB /* FBSDKCheckmarkIcon.m */; }; + 307D54623092903A6C49A7C219BA3252 /* FBSDKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 851FD672C97DC80E95B543E7678B133F /* FBSDKMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 313C10C6A642FC61680D2E00D59E5FD5 /* POPAnimationTracerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8D8339F84A5B54DDC0F0B6C03E6C30 /* POPAnimationTracerInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 31B7827480A2AD779C80D1E428F0F758 /* FBSDKKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 42B37BE48C6B242CC345A82EFFCA35CD /* FBSDKKeychainStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 324B462950BF05B9CF8C8B4E1556D1A3 /* PFOfflineQueryLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 778D8D7F4CD22FFBC60450393224961A /* PFOfflineQueryLogic.m */; }; + 329EEBF461254C9F4C4F7DFF196498F3 /* RKMapperOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0803B22C601D5D4145A1B91DB87E04E3 /* RKMapperOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 32E214F119A1BF1D749C05323F252756 /* POPSpringSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D50729BCCBCCC5A423CBB509507C3DC /* POPSpringSolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3358C947C2329AD593909B5A55839B9C /* Network.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B4596D7B3771E5ABD20C9631F9B18A /* Network.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 336A9DE5FB7C4ED8DF5B7E6EC76D0822 /* RKRoute.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C78256463C46E887FB8962C96ADF343 /* RKRoute.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 336B220F124974D444746D194367422A /* BFAppLink_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 5732F9BC7E2742FFFC7C3BA8F1225459 /* BFAppLink_Internal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 33808782CCEF801D53209D523D9C7358 /* FBSDKButton+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = 79EE570F7AF0D238D396B8C1BD1233F8 /* FBSDKButton+Subclass.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 33E51CF359A60B9BF66BE9C279AB3E43 /* FBSDKAccessTokenCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 17713158760C0CE314D469EF9DAB5E98 /* FBSDKAccessTokenCache.m */; }; + 34139CCA6481211B5C8BC57918F8FF3B /* POPSpringAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7915DC37B74D252F701BF85B55880ACF /* POPSpringAnimationInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 343BA26395BFBF73CFC3F42871C03BB9 /* YALFoldingTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = AE3ADE078ECB5E4868892A8EA3936EA5 /* YALFoldingTabBarController.m */; }; + 34B1786FA4EBC179AC660B83CF1A4F82 /* FBSDKShareButton.m in Sources */ = {isa = PBXBuildFile; fileRef = BEEE1441A35504F5C1462BCBEE30EE7F /* FBSDKShareButton.m */; }; + 34FE928299E6FCBB43826BDB66144FD7 /* FBSDKLikeObjectType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AB618D67D94F32578DF5336651E7855 /* FBSDKLikeObjectType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3515249853196B72457D26E35A75A0D5 /* PFUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = C1A37998F9BF6B81FA68488F9A55BC50 /* PFUserController.m */; }; + 35599C4F9F10FC09064011AE354E20C5 /* FBSDKCheckmarkIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = C2E9C149FB61E88BEF76CE74D5776813 /* FBSDKCheckmarkIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 35A2D271C4A91DC464251B9245103DB5 /* PFCommandCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 999823937ADC925F2F63F241A5995EFE /* PFCommandCache.m */; }; + 3618426AB7A42805D853A084743D6138 /* TKStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = A78C310CE96FB8C96AB74FE6A10686E7 /* TKStateMachine.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 361A366D11CECA15C3B45FC3ACEDA050 /* FBSDKGraphRequestDataAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 45911FDD1904204B994BBBABE59D8DAA /* FBSDKGraphRequestDataAttachment.m */; }; + 36CAD613B46C6F3F7B092EDDE2BFD87B /* PFApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = E516EBEC7356A04879F93CDEB1C0A839 /* PFApplication.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 36CB170B89C0B4642CB663616BC47E5B /* PFURLSessionDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E1D8AA11E50E9A37281052037D86FF /* PFURLSessionDataTaskDelegate.m */; }; + 37623963889357DF56CD5A4023A293D0 /* RKMIMETypeSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = DDB0E62AEBB7CEA6AAB32321B17C4DA4 /* RKMIMETypeSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 379BA3F1B3C1F43A72C4C17B61215FDE /* PFProductsRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = E7909E9598E022C3C0A3969A59F14279 /* PFProductsRequestHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 37C6195201D97353994A4B323BD7EC39 /* PFMutableFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = 800204DFA7DE3E6060355FB89A24FEB1 /* PFMutableFileState.m */; }; + 37E32240C69433B8D41BF206C15BDE91 /* Parse.h in Headers */ = {isa = PBXBuildFile; fileRef = D8C9CB701E4F6C654174000392CF24D9 /* Parse.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 390565C6A1B7B2060B10FCF3BCC97989 /* lcl_config_components_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C6C852E7C915FBEDD2E5B3C2CDD20A8 /* lcl_config_components_RK.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 392F1056919E38CEDEB5A545DA4C820B /* FBSDKLogo.h in Headers */ = {isa = PBXBuildFile; fileRef = 947DE8E91AEF7DBF7FD80A52A76B2360 /* FBSDKLogo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 397DD286C0935623C81E4AA9AE2E4C2C /* PFPurchaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = A0DE6D1F31DEFED040F4E85B6631177D /* PFPurchaseController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3A4A4D139CCD0A806197BF7A723800F2 /* AFJSONRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 3880A4A4324ED988B85901DAD4519018 /* AFJSONRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B2C344B306A3FB19169E1F4AA62E103 /* PFACLState.h in Headers */ = {isa = PBXBuildFile; fileRef = 95C137F2DF407C83936DE0B2BB3D6F86 /* PFACLState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3B34B9CF9A34E235FD457006303C757D /* FBSDKErrorRecoveryConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AE4C9BDAE4E6537716122FED10B39E1 /* FBSDKErrorRecoveryConfiguration.m */; }; + 3B88684885F6A92894F9B1C6DF2CB127 /* FBSDKAppEventsDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 503DF747F3430012E621A5BB819767FB /* FBSDKAppEventsDeviceInfo.m */; }; 3BC5621A2DA38E302E4D3A891CAD35CE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; - 3BF789DD91B049645722960CC51287EB /* CATransaction+TransactionWithAnimationsAndCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = 75495EC377930B0233AFC77A4D61575F /* CATransaction+TransactionWithAnimationsAndCompletion.m */; }; - 3C0DEBB740DFB646BB292668FF187A3C /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = E8152227AD2D6CE25BC7888D919F6BD3 /* FBSDKCloseIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3C31ED01B7466FD05173FEB6F86953BA /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 202A67338938E6682685B9114E8F7E4D /* FBSDKTestUsersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3C6DF2FA1EA6BE60192A77E7270D6212 /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4429585279C58269AAE37EC7814214BD /* FBSDKGameRequestFrictionlessRecipientCache.m */; }; - 3CCACCF079947A68FE7E62AF0303CAC3 /* PFConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = CD7593640586B201BCD9939EC8B13017 /* PFConfig.m */; }; - 3D91615B81BDE2505C751BD7D4FB5EDB /* FBSDKLoginTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 703806AC44DC3DAA0B029C076D84918C /* FBSDKLoginTooltipView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3DDFA2D0FCEE1978143B685D1C3A9D7A /* FBSDKLikeControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 75FD15A68FD0466D803569EEB9CEBBAD /* FBSDKLikeControl.m */; }; - 3E16E0BEF69F5BA97F8E9F07A617E509 /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D9BF17D12A6931CC30A002B5C28BF065 /* FBSDKAccessTokenCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3E41E38FF7A69B85994E73EABE7FF57F /* PFJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = FBD9F8EA50253D95A8AD97BAD86E10C0 /* PFJSONSerialization.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3E9B5AD53BD51F897F832FC014D1AF5D /* RKAttributeMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = FBA2D90AB903058236DD7AF5CE16650F /* RKAttributeMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3EC6C51767337E859A4F15C5FBC1770E /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A4AD6C82C6BD994B92B71460DABC8FC /* UIImageView+AFNetworking.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3F569B5B27E0603B07C858321F23FB9B /* PFInstallationIdentifierStore.h in Headers */ = {isa = PBXBuildFile; fileRef = E0812753D9AFC5C954E63E141EC3C899 /* PFInstallationIdentifierStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3F7A18D123E044CFAC2A0D1322E727BF /* FBSDKShareOpenGraphObject.h in Headers */ = {isa = PBXBuildFile; fileRef = FC83BAA3A130DE0ECB081A56D1DB7917 /* FBSDKShareOpenGraphObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3FBCAD82A3A69CB7850136E6D8613AD0 /* PFSessionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BEED67AEB0626E1D942E397F7BFE7C8 /* PFSessionController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4029E4F75B527907B5ADAD8E3E0264E2 /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BFB1907C3EE1ADA7D44437276AC93C07 /* FBSDKGraphRequestPiggybackManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4075B036E32B6718E9B9523BC0059DF2 /* PFProduct.m in Sources */ = {isa = PBXBuildFile; fileRef = 16D6292D8FAE18DC28FF78404DB719D9 /* PFProduct.m */; }; - 41CCAB61BAA581E58CB30F56F9F372F4 /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = FDE18DC658FE492CB30B98AA058CD6FA /* FBSDKGraphRequest.m */; }; - 41DDB4BD2A89F44F733C82B65BE76ACA /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 52CF96E683AFDF73C07731C7ADDADC31 /* FBSDKKeychainStore.m */; }; - 427DD66260DDD2F6345D7196B90E3DEE /* PFPropertyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 170E287A22801514CAF6C2EB522BE4A5 /* PFPropertyInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 42F787E07A69C27C09E049303C8E8530 /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EF647DA4D46882EAC603DA80B15C546 /* FBSDKServerConfiguration.m */; }; - 4348B4727F59DB738A1A33721BB29AA8 /* PFRESTCloudCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 10A0FDA427EFFCE744C8CB7862407B47 /* PFRESTCloudCommand.m */; }; - 435602DE03BDC37F6F724BE3A943F1AB /* FBSDKSharePhotoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3F27BBC16C6C75FB3E5345F12F61A9 /* FBSDKSharePhotoContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 438CA2F1118781D63B470E41E4C7889C /* PFFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3D98875600AB165C66C65D6E15E83A /* PFFileManager.m */; }; - 43A7D7D1E2E0828AC2FCD3155471E59E /* BoltsVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = B147CF02EE8864D4E87D27D74C926A6E /* BoltsVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 43EDB848BEACB773962B589EC73AA826 /* PFNetworkCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 5924FEF18CC5E1704FD384C65A5F55D9 /* PFNetworkCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4426214315E4D8313D27EE3F16CF8C13 /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 62A64EB7D48743BA4492B0267BB0BC95 /* BFURL.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 444F2DDB714D8D83F59764F223E6EE70 /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 005EDF3610A35FCCB1EC8C406162532C /* FBSDKServerConfigurationManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4458C6C127D3030A17A791B3BA9A0CE0 /* FBSDKShareConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0CF790970A7CBA811F918B49965546 /* FBSDKShareConstants.m */; }; - 44731A7D10EF496E7DED3DCA05410767 /* FBSDKShareDialogMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D1A4EB19150431EC20AA5717EFD6B46 /* FBSDKShareDialogMode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 44D4ACE5DF513BE2F82FE675BF0530C9 /* TKTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BDB55E9C39EE72564DF58E4922A0879 /* TKTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4505527808576A44D861B0A13154F425 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = CCB649BFD246522D91365614C0B9DD9D /* FBSDKURLOpening.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4508BEB10E935ADE1BBC8AD18BB3F581 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = CB84FD2F2C4E8EE506EE2E7DEC8B5F9C /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4575AA7C533C55013E14626E0CE50C35 /* lcl_config_extensions_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = 8714E7D607BECB036F81715B5C27F0ED /* lcl_config_extensions_RK.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 45F413D981B9ADFABBEA3675FE0017E3 /* lcl_config_components_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = DD920E6012362DC614A1701B8499680B /* lcl_config_components_RK.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 46434AF620227311479C776B81BA97F6 /* FBSDKLoginCompletion+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B3730F73EE5F25F746856381EB423BB1 /* FBSDKLoginCompletion+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 46A761F0B52B393302374F202159EF83 /* _FBSDKLoginRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B0743AD2B57375BCF911269DBE91815 /* _FBSDKLoginRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3BF789DD91B049645722960CC51287EB /* CATransaction+TransactionWithAnimationsAndCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = 266541F607EB34A777991BD29D5D2556 /* CATransaction+TransactionWithAnimationsAndCompletion.m */; }; + 3C0DEBB740DFB646BB292668FF187A3C /* FBSDKCloseIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = ADCF28A6ED4B159F06F12E95D86E08B2 /* FBSDKCloseIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3C31ED01B7466FD05173FEB6F86953BA /* FBSDKTestUsersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B625AE6C787AB113D7EF7F05FB0637 /* FBSDKTestUsersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C6DF2FA1EA6BE60192A77E7270D6212 /* FBSDKGameRequestFrictionlessRecipientCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A99D66855595DD2F9E379F9A258C7FD4 /* FBSDKGameRequestFrictionlessRecipientCache.m */; }; + 3CCACCF079947A68FE7E62AF0303CAC3 /* PFConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 163A2E68515F17EBB397973CE01A2E02 /* PFConfig.m */; }; + 3D91615B81BDE2505C751BD7D4FB5EDB /* FBSDKLoginTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 87C33535E86A40250BA126A6209213CC /* FBSDKLoginTooltipView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3D9DF25BBCE11AC3A9A684C418F6C89F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + 3DDFA2D0FCEE1978143B685D1C3A9D7A /* FBSDKLikeControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E3DEF8E2E27C00D59DC5DE4C876E0D1 /* FBSDKLikeControl.m */; }; + 3E00A40C8893EE63BA63D4A9008594A7 /* RKHTTPUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DA6FF9AD89559AE8FE2FD106DCB87C5 /* RKHTTPUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3E16E0BEF69F5BA97F8E9F07A617E509 /* FBSDKAccessTokenCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA4ADF879DDDE1CAAA0ABFB4BC7210D /* FBSDKAccessTokenCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3E41E38FF7A69B85994E73EABE7FF57F /* PFJSONSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BF07391CA6A2181CE0A3C3765B8F4BF /* PFJSONSerialization.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3EC6C51767337E859A4F15C5FBC1770E /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = C345096A388C3F1F4E486E39C9D61CD4 /* UIImageView+AFNetworking.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3F569B5B27E0603B07C858321F23FB9B /* PFInstallationIdentifierStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FC50F7EF899B70145D9D7DB1F55E927 /* PFInstallationIdentifierStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3F7A18D123E044CFAC2A0D1322E727BF /* FBSDKShareOpenGraphObject.h in Headers */ = {isa = PBXBuildFile; fileRef = DA3EA52DCFB7D558F88A88501D54E2B9 /* FBSDKShareOpenGraphObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3FBCAD82A3A69CB7850136E6D8613AD0 /* PFSessionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1375129BA8E11876FE8F3530124E4FF9 /* PFSessionController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4029E4F75B527907B5ADAD8E3E0264E2 /* FBSDKGraphRequestPiggybackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B9BFA03B5504E854577C5000A356AFB /* FBSDKGraphRequestPiggybackManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4075B036E32B6718E9B9523BC0059DF2 /* PFProduct.m in Sources */ = {isa = PBXBuildFile; fileRef = 5076A61842278BC01BD246CD9F6A6831 /* PFProduct.m */; }; + 40987DD554F4D5EB29B8B0948FCAC33B /* RKMapperOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 65962B65C068EE02DAE719D8D70CA321 /* RKMapperOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4172EFFB5E73F4A2625FDD8790ADA86F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + 41CCAB61BAA581E58CB30F56F9F372F4 /* FBSDKGraphRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = CC27E380BD4D02E6D8E8A25280C06A29 /* FBSDKGraphRequest.m */; }; + 41DDB4BD2A89F44F733C82B65BE76ACA /* FBSDKKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BFB7F5189C7630850B466033A6828EF /* FBSDKKeychainStore.m */; }; + 427DD66260DDD2F6345D7196B90E3DEE /* PFPropertyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E051BB78BF5591341C31848B9AE0E0B /* PFPropertyInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 429897FA95FC01863ACF624955ED030D /* FloatConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F7C74984ABBD35EBF1A84D46747BF45 /* FloatConversion.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 42F787E07A69C27C09E049303C8E8530 /* FBSDKServerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 473792C704D2EB34B69FD30D4C8A4195 /* FBSDKServerConfiguration.m */; }; + 4348B4727F59DB738A1A33721BB29AA8 /* PFRESTCloudCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = CAEFED956777B69C5958C0E809EC11BB /* PFRESTCloudCommand.m */; }; + 434F58B870A20B1FFBF38579DF600676 /* RKObjectRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = D5B9C19265F524EBC4ED733155E3DB3B /* RKObjectRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 435602DE03BDC37F6F724BE3A943F1AB /* FBSDKSharePhotoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = A7AC1819EBC907C93BA5F2B790C16D0E /* FBSDKSharePhotoContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 438CA2F1118781D63B470E41E4C7889C /* PFFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C0773511F8B57D80E82BBCED6576C5D2 /* PFFileManager.m */; }; + 43A7D7D1E2E0828AC2FCD3155471E59E /* BoltsVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 29DAD99804B5BD08F3A74008FD65BAE7 /* BoltsVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 43EDB848BEACB773962B589EC73AA826 /* PFNetworkCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = C303ED3A2C18CE2AAADCC69948039080 /* PFNetworkCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 440457C5E92E83101E8970FFC6086762 /* RKResponseDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = BA0DEBD43672CEB35AC053C3EDBD0BF9 /* RKResponseDescriptor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 4426214315E4D8313D27EE3F16CF8C13 /* BFURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C6681893EA2BE8AA8ED08B44B774980 /* BFURL.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 444F2DDB714D8D83F59764F223E6EE70 /* FBSDKServerConfigurationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B5920113D86FC36BEBC6F899C9034F7 /* FBSDKServerConfigurationManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4458C6C127D3030A17A791B3BA9A0CE0 /* FBSDKShareConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = B53170EBE3F4D7BAA67CDA6A2C198542 /* FBSDKShareConstants.m */; }; + 44731A7D10EF496E7DED3DCA05410767 /* FBSDKShareDialogMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F3FC0B3D497637B402F51B44E5B28F5 /* FBSDKShareDialogMode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 44A5248789F660D19C2D6D8CBCCC7C13 /* RKMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = CB3D0EFB3CB9EFB991A6BD44384669BB /* RKMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4505527808576A44D861B0A13154F425 /* FBSDKURLOpening.h in Headers */ = {isa = PBXBuildFile; fileRef = 68FE49164D11028318A5BFC6389C361A /* FBSDKURLOpening.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4508BEB10E935ADE1BBC8AD18BB3F581 /* Bolts.h in Headers */ = {isa = PBXBuildFile; fileRef = C5052DE726F89E27E1CA5D188FD32C5D /* Bolts.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 451A0964C7CDBD5043BBD97DD3BB59EF /* RKTestFixture.m in Sources */ = {isa = PBXBuildFile; fileRef = BF6BCF95270D89143AE2BD11E8C58467 /* RKTestFixture.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 452F0DCF8F0D3525E9DC890D389684D9 /* RKMappingOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = FD07183D5459C1861CCC80EC5514A9AA /* RKMappingOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 46434AF620227311479C776B81BA97F6 /* FBSDKLoginCompletion+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 517FE5FCB5C6241B8A66BE083CA1AAE6 /* FBSDKLoginCompletion+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 467E37A4D9DFFFA4BE812456B18B5766 /* TransformationMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = DD2FCA295F0F6EC84DC796D623DC209F /* TransformationMatrix.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 46A761F0B52B393302374F202159EF83 /* _FBSDKLoginRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D540B5BA940B77762F525759CD9E2F7 /* _FBSDKLoginRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 46C77E33FBFB6CDD2042AFC7251C0192 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3783F1A59CCE93EEF653593AFAD5B5 /* CoreLocation.framework */; }; - 46E222D8EF5404BBB0ADEC81B1DF1874 /* PFRESTSessionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2B2346710518F3D818A44A68F02C5F /* PFRESTSessionCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4727F1C349747A7F96CA2EE6098BA7E6 /* FBSDKBridgeAPICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FBCAB70FB9A6977DE8D64B963124B26 /* FBSDKBridgeAPICrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 478F099B2EDD4376B8C1183745A5B4B9 /* PFHTTPRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F583CC3B015B36C3E3144C08D893552 /* PFHTTPRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 488F77FF13E79A72AD87E8B838E827E4 /* FBSDKShareOpenGraphAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 74F217FA9548DBD823F25F1DA863850B /* FBSDKShareOpenGraphAction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 49A306F39FCE73FFB0E1A6589D331F35 /* BFAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = F5500331C2AE5ADC39A1AB40A74529FB /* BFAppLinkResolving.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 49F2BA3E1D32E882B51DC0A899D3C229 /* FBSDKLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BCE676F39C259B6C0BF1690EB5DBE25 /* FBSDKLoginManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4A4CF9C7D69DC9049FD677165FADA59E /* FBSDKShareDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 01FB35B0ADE41A152252E1ED0988B17D /* FBSDKShareDialog.m */; }; - 4A7FBB52488D368CFDFDB1B6516C2CE4 /* FBSDKMessengerIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = D52925260ED38A39BE15E60EFB8E7B49 /* FBSDKMessengerIcon.m */; }; - 4BABB36619011AA0B6039422203CFC5E /* PFInstallationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 35C47D77D154C6ACEBD15C0FA61A163F /* PFInstallationConstants.m */; }; - 4BC610C052636A802256616F808FD2AE /* FBSDKAccessTokenCacheV3_21.m in Sources */ = {isa = PBXBuildFile; fileRef = E736754D92F661C38E69F1CD3C7845B0 /* FBSDKAccessTokenCacheV3_21.m */; }; - 4C3A2F763EEE360861027C7097748A42 /* PFMutableObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = 48DF0E6F580F2A50C94F659383B45C1D /* PFMutableObjectState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4D2FE3A028403C4E9545B01159BBE9CB /* PFInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2694414E286680557D8AF8B1F6B64112 /* PFInstallationController.m */; }; - 4D4A07890A079F8AA2090CF76EF82A90 /* PFObjectLocalIdStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 8867D68940B55D23D0E9719E275BFA8B /* PFObjectLocalIdStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4E13085CB448418E957E9EB41D88F5E2 /* BFTask+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7A521656E2772319D441042C5D6FBB /* BFTask+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4E5A7BE76B5EC309DAB207FAFB7FE7FC /* FBSDKSharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 462B2CA402744EDC499ADDCECB7402D4 /* FBSDKSharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4EC1B8AAA4341E02B888E2CDBED626DD /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F8BEA71B93C60E891B29C80177AEC59 /* FBSDKApplicationDelegate+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4FA4189FA17793F898C1A79920893A7D /* PFMutableFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = 7677707275A2EF60830F578201163529 /* PFMutableFileState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4FC468A52568F12ED267007F0AD753FC /* PFPurchaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB99803775BDB8D089B8AAF8610F006F /* PFPurchaseController.m */; }; - 50570F0F317C5A916AD5BE1D82F49641 /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 01577EF1EEDCE5208D4B8AC6FDC7CC0B /* FBSDKGraphRequestDataAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 506994605B778659CB416E37C461D150 /* PFEventuallyPin.h in Headers */ = {isa = PBXBuildFile; fileRef = BF29DE6619DA26BE542969B766BDB8AE /* PFEventuallyPin.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 50A19E0D54B5ABC2DF718485876675BF /* PFRole.h in Headers */ = {isa = PBXBuildFile; fileRef = C206C3E9B3302C96684D3897F1D5A944 /* PFRole.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 50ED958AFAB156499B1D88CD2C0394B7 /* _FBSDKLoginRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 659D341D4BAADD4339DB44AC00772E9F /* _FBSDKLoginRecoveryAttempter.m */; }; - 512D2E7F3E98E29CD6338D40FC3CBEEE /* PFPin.h in Headers */ = {isa = PBXBuildFile; fileRef = 8780D2FFBC1992D6FDA23E5A3A81CF1E /* PFPin.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 516780FBAE8477C063977B67B0C4F64A /* PFCurrentConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1853537D2954FD958EC042517906C776 /* PFCurrentConfigController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 51EF9DAEFA15FFB025217BBE89F9A23C /* RKMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 05EF3ADB060D32A9DFF67851EBE647C0 /* RKMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 51F742896037EA588D6157B105922B77 /* FBSDKShareOpenGraphValueContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = BC784E483E0153507432EFCEFBC5638E /* FBSDKShareOpenGraphValueContainer.m */; }; - 5208CEE9E04A230A895075F81179E9C0 /* BFWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B2572E05EB18D8E55337D23E1AE67E35 /* BFWebViewAppLinkResolver.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 52474B3F869DBA64CC57CC8E1031F87B /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 2041D4CFC252E37771FDA0674BAC5493 /* FBSDKSettings.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 530AC824CCD371BAA717F8ACAB33F958 /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 1231F575BA4305E598781441AF031F5E /* FBSDKAccessToken.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 531C2A042979E8EA3995593A85E4DDAE /* RKHTTPUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 542741718F1B59CF684D8D7D5EE9E4C8 /* RKHTTPUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 5322CA0A34DB0348C3603AFAD04A7DF5 /* FBSDKLoginConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 2562632730FD0A59722B3C67E9C6C38E /* FBSDKLoginConstants.m */; }; - 5393685A37690EC1097162CBFDAD8964 /* RKPaginator.h in Headers */ = {isa = PBXBuildFile; fileRef = C9C2F85D16952EEE0714A294ED8EA605 /* RKPaginator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 53A73625D6FFEC0A47C83977EE7CDBCC /* PFDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E491204CD2D880B645C351FE76C1780 /* PFDataProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5449D946ADE982013F5C2069E0BE45F0 /* BFAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 048FF1F23681E364A43114EA047AB00E /* BFAppLinkTarget.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5482BE85008ECE92916F583C9A15378B /* PFCommandCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D05A09C1E9B8D6D162D9DBC753EA922 /* PFCommandCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 54D559AFA627AFA735FB0D6D878F5D7F /* FBSDKAppInviteContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 568923D709EECAD0783955444A4654F9 /* FBSDKAppInviteContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 555466B7EA6454B1E1968FB7A7BD1334 /* FBSDKBoltsMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 28C24077DDE26572ABFDFFBA58AEF0D2 /* FBSDKBoltsMeasurementEventListener.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5557E69BD0A14921486F9974F746737C /* PFCurrentInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = B98E96DBABDB51557464408244172B2A /* PFCurrentInstallationController.m */; }; - 55F36BBE4FE82BCCD0C9A4E06DC26BEF /* PFRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = 20476D5BF51291A996A02F8B096F7768 /* PFRelationState.m */; }; - 560BB49A70689476862EE5E1F179D36A /* PFQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 9892ACF2D0CAC9B9021724C9C93ABD4C /* PFQuery.m */; }; - 5624B5B3EB50D43FB54BACDDB45228AD /* PFPin.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B484974193BA8A4646BC070D4C0BBE7 /* PFPin.m */; }; - 565365EA7F73C65562A3FC4459E770B5 /* YALSpringAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 560B96C78B0C4903D500B1084F59BB7C /* YALSpringAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 57503516957EEFAFFAD7A789730E7B9C /* FBSDKShareVideoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 01B3303DA64A64E4B58FED1912BEFCDF /* FBSDKShareVideoContent.m */; }; - 5774AA430101105FF0F41887984D6011 /* PFURLSessionJSONDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DD3B16A2FA69C880D705EC37C05584 /* PFURLSessionJSONDataTaskDelegate.m */; }; - 577FB11637F9A3CF218053ADC3A5F10E /* PFCurrentConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = A2BE5AE5F0695B55E709A8CDFE17CA78 /* PFCurrentConfigController.m */; }; - 578485DD86226126B8E08842D826D2DC /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = A79078BF742E1C7360DBEE1FE59509E3 /* FBSDKWebDialog.m */; }; - 57B1A80BBFD88E6F9406FC50B423FB5D /* RKMIMETypes.h in Headers */ = {isa = PBXBuildFile; fileRef = D956488480F1233FFF8403DE1801CEC9 /* RKMIMETypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 57BDE2372BC4BBC34CAB643A2A95E416 /* PFSessionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C0999643940462D0D4D365C743346CF /* PFSessionController.m */; }; - 580B7575D5092F73CADB0DC057A8DD20 /* PFMutableUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E36BFDAADCD9869360BFDBB5DC7919A /* PFMutableUserState.m */; }; - 587ED101545A953414998ABFA4479B5D /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = ADF62BE10B4A5995FC90E5E1DF736C2F /* FBSDKContainerViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 58F4A4DF57C22014622BB042607EB8EE /* BFAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 113F75AFA14F88AEE7BCF0BBB4C858BE /* BFAppLinkNavigation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 591FE63D036F4A539784293BCAD97493 /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 145AAF7E6CD426F5DC9079DD9214733B /* FBSDKGraphRequestMetadata.m */; }; - 598CA7FEDEDFDBF38831C0015C044596 /* PFFile_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 245A8375DA02518A0D28196BA09BB15F /* PFFile_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 59B602D97CE0027EE607A6D59E7FAEC4 /* PFPaymentTransactionObserver_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A500D17BF17E1E4E6B95D311ECBC187E /* PFPaymentTransactionObserver_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 59F190ED1EA6826CEBBA51B9A461327E /* RKRelationshipMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E31A2D9DD96916FA15693B655848D1 /* RKRelationshipMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5A1CAD4EB911A5847CF09560EE37A110 /* RKPathUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 68A024759390FB7405C04F198DD88301 /* RKPathUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5A1CB5B72C92E43BF844377DC72DA072 /* FBSDKAppGroupContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 878D09AB47A4BDD9D340540825C9E015 /* FBSDKAppGroupContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5A3E09336161889373CC89326260ADE5 /* PFOfflineObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EF30CD48D59FE6544E248C632E1B4F7 /* PFOfflineObjectController.m */; }; - 5AAE55DFA2869211ADAE99C345C0192E /* PFObjectConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 783A3E8CD34175B563A9C12AA16DE8BD /* PFObjectConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5AF64E5EEA043722E238A8C5EE47A63A /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B92A2CAEF825132FB7B172C9FFF479D2 /* BFAppLinkReturnToRefererView_Internal.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5B619FB7B735B3AE6E29CD79496C39C0 /* PFACLPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D195E34301F1EADE93BB0B93F8BFAF0A /* PFACLPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5D8F8D57EC3D51CD74969DAA5BFBC15C /* PFQueryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DA1030B666DF215688696A02F383A6B /* PFQueryUtilities.m */; }; - 5DB44075B06EAE0B3D695B29CCF444DA /* PFURLSessionUploadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 57703EB1DCEB28A69BCC450CD2F4302B /* PFURLSessionUploadTaskDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5DD4705F866F09E0FA008D068DD31F48 /* PFKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8FE461F464D9C9483CDB150140EAF0 /* PFKeychainStore.m */; }; - 5E1AB8EC72407D7A56EE8074AC99F4AC /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 90EEFECBB8ABE95AB2BD379AE1A08389 /* FBSDKTypeUtility.m */; }; - 5E988F6DB39589E09F7216CE92E0FCD4 /* TKEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 310DAE7B650CE093469515EB7385030B /* TKEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5EEB7C03214B977E5D8925797BCCF7B1 /* FBSDKLoginManagerLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = E4FF2B92D70AA85F5430FA255B5930B8 /* FBSDKLoginManagerLogger.m */; }; - 5F2CF6350F306F78D40161C01EEDD731 /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DA381E5D6515F0A9C84527EF815CA28 /* FBSDKMutableCopying.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5FBDA19530CA26D2F5E37B02FFA15D50 /* PFMulticastDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F919170FF728D2BC8D0CA0FF2DFB83 /* PFMulticastDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5FCA3879482A03418CCB75CE50EEA9C1 /* FBSDKLikeButtonPopWAV.h in Headers */ = {isa = PBXBuildFile; fileRef = C6300BC631657D6ADCB1225268EF89BE /* FBSDKLikeButtonPopWAV.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6080A31C682280C87E76F93D3D1C7D42 /* PFSession.h in Headers */ = {isa = PBXBuildFile; fileRef = CF114CE627A26531EF546CEF5EFE34B2 /* PFSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 46E222D8EF5404BBB0ADEC81B1DF1874 /* PFRESTSessionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = F8B8D967E928682C85109A85124DEEC4 /* PFRESTSessionCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4727F1C349747A7F96CA2EE6098BA7E6 /* FBSDKBridgeAPICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 950E0A9F91ED212D2423C57E6D94CE04 /* FBSDKBridgeAPICrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 478F099B2EDD4376B8C1183745A5B4B9 /* PFHTTPRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 209E38BB2ADFFA4C0E2497F629810AEB /* PFHTTPRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4864EC253C572D7696B5849BB72291D0 /* RKPropertyMappingTestExpectation.m in Sources */ = {isa = PBXBuildFile; fileRef = 20B291B44372ECD90FA4961CB9F9C9C4 /* RKPropertyMappingTestExpectation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 488F77FF13E79A72AD87E8B838E827E4 /* FBSDKShareOpenGraphAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 6768924E65317D0E30521724DC081C08 /* FBSDKShareOpenGraphAction.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 49A306F39FCE73FFB0E1A6589D331F35 /* BFAppLinkResolving.h in Headers */ = {isa = PBXBuildFile; fileRef = B99772D5AE952C0693DC05AAA4538D94 /* BFAppLinkResolving.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 49F2BA3E1D32E882B51DC0A899D3C229 /* FBSDKLoginManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EAFD88B92A3912D4951328AF334D28 /* FBSDKLoginManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 49FB341D2B6AB6B34B968D145F42A04C /* RKErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E3E506FDF95C78237F089FED94DAB76 /* RKErrors.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4A30A8F0DDE8E4D807E1F48C169CA7EE /* SOCKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C4081A3EAA34140F505CCBE9D98C0C8 /* SOCKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4A4CF9C7D69DC9049FD677165FADA59E /* FBSDKShareDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 6569377CC0B0AA51EBA394C782985089 /* FBSDKShareDialog.m */; }; + 4A7FBB52488D368CFDFDB1B6516C2CE4 /* FBSDKMessengerIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 134ACDC2444EE29856334D3196F53AC0 /* FBSDKMessengerIcon.m */; }; + 4BABB36619011AA0B6039422203CFC5E /* PFInstallationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F77D342CCB58DBAA7457C6289C028C /* PFInstallationConstants.m */; }; + 4BC610C052636A802256616F808FD2AE /* FBSDKAccessTokenCacheV3_21.m in Sources */ = {isa = PBXBuildFile; fileRef = BF44B45F9B1A350C1FB2F6D209A9BC4D /* FBSDKAccessTokenCacheV3_21.m */; }; + 4C3A2F763EEE360861027C7097748A42 /* PFMutableObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = 924EED608166B7F9A30865D80A87407F /* PFMutableObjectState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4CB1746E41309F454F4CB59CCB120634 /* RKErrorMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EA0BB06D8B077DFC855CBF92505F74A /* RKErrorMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4D07C5CE0CD51D48D58268926E71C534 /* POPAnimationEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 632D62E7B544FFB77F14C130A2EC4510 /* POPAnimationEventInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4D2FE3A028403C4E9545B01159BBE9CB /* PFInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 19393B003CB10D5DCBF525994DDE8462 /* PFInstallationController.m */; }; + 4D4A07890A079F8AA2090CF76EF82A90 /* PFObjectLocalIdStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C114A540E5318937EFA769F5D2A5372 /* PFObjectLocalIdStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4E13085CB448418E957E9EB41D88F5E2 /* BFTask+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 882472CF6BA62D86D2BF8542B479D3CB /* BFTask+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4E5A7BE76B5EC309DAB207FAFB7FE7FC /* FBSDKSharing.h in Headers */ = {isa = PBXBuildFile; fileRef = AF22BCCC30F4473554DFAAAEBC740BE7 /* FBSDKSharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4E7740FDD29E3D20879999C4584BA7E0 /* RKTestFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EE2EBDC54FDE1E50CD9A33DDF48404D /* RKTestFactory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4EC1B8AAA4341E02B888E2CDBED626DD /* FBSDKApplicationDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CA018EEB50C81D92939C0E4379941FE9 /* FBSDKApplicationDelegate+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4FA4189FA17793F898C1A79920893A7D /* PFMutableFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = B93B968FDB3F20E1EB2FA742FA119F61 /* PFMutableFileState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4FC468A52568F12ED267007F0AD753FC /* PFPurchaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0648A7B89F8F0C429E649E87FBFBD699 /* PFPurchaseController.m */; }; + 50570F0F317C5A916AD5BE1D82F49641 /* FBSDKGraphRequestDataAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = C3743DDF0F64379FD843ED463460FF90 /* FBSDKGraphRequestDataAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 506994605B778659CB416E37C461D150 /* PFEventuallyPin.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AAB2C033ACD2C5EDF5AFECCDE5BC95D /* PFEventuallyPin.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 50A19E0D54B5ABC2DF718485876675BF /* PFRole.h in Headers */ = {isa = PBXBuildFile; fileRef = 409EF16B93600F84E2CC3287F2C35D7E /* PFRole.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 50ED958AFAB156499B1D88CD2C0394B7 /* _FBSDKLoginRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = C5C2B2C9BECEC9F64477D3C8051CFDB5 /* _FBSDKLoginRecoveryAttempter.m */; }; + 512D2E7F3E98E29CD6338D40FC3CBEEE /* PFPin.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AE7C57230B414B51B418F0B88252FB /* PFPin.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 516780FBAE8477C063977B67B0C4F64A /* PFCurrentConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = F19938456DF0C30C53CBE44847B3E479 /* PFCurrentConfigController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 51A4B3F64553C8AF7DAD4F16035044C7 /* RKObjectMappingMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = C42E29EF756BB8A7BCE6151C6229BA3D /* RKObjectMappingMatcher.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 51F742896037EA588D6157B105922B77 /* FBSDKShareOpenGraphValueContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C6CEAC74231F31EC9DDED4C3E2BBF48 /* FBSDKShareOpenGraphValueContainer.m */; }; + 5208CEE9E04A230A895075F81179E9C0 /* BFWebViewAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 9045C664399C37132A893F2E170BEA3C /* BFWebViewAppLinkResolver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 52474B3F869DBA64CC57CC8E1031F87B /* FBSDKSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = B477BB1DB6E55636C30151FED839DBEC /* FBSDKSettings.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5290E96A370ECE9B13F91391BFECE059 /* RKLumberjackLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AFF7959F2290BD0027C49FBA305DFE5 /* RKLumberjackLogger.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 52D0E5B4BE2960D5264CA76B3287BA53 /* RKRoute.m in Sources */ = {isa = PBXBuildFile; fileRef = 58E4CECC242634F51EA5250B5A8FF795 /* RKRoute.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 530AC824CCD371BAA717F8ACAB33F958 /* FBSDKAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = C537E17C3097299FCBF860A93C47B723 /* FBSDKAccessToken.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5322CA0A34DB0348C3603AFAD04A7DF5 /* FBSDKLoginConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = E160D14CDAB0E17CC1D0024A8673A34C /* FBSDKLoginConstants.m */; }; + 53A73625D6FFEC0A47C83977EE7CDBCC /* PFDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = D9F9A1B8EB6CBAF33BDC895542AB64E9 /* PFDataProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5449D946ADE982013F5C2069E0BE45F0 /* BFAppLinkTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = E362D4507FC775D8570A80D797BC3E91 /* BFAppLinkTarget.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5482BE85008ECE92916F583C9A15378B /* PFCommandCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 36C8AD8E2390F415DC7425C9734EFAFB /* PFCommandCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 54D559AFA627AFA735FB0D6D878F5D7F /* FBSDKAppInviteContent.h in Headers */ = {isa = PBXBuildFile; fileRef = BF8BD2902C2FE3B67C86F30BFEAE4A3E /* FBSDKAppInviteContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 555466B7EA6454B1E1968FB7A7BD1334 /* FBSDKBoltsMeasurementEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 41DE8F8508C70E584E9DC322D6E30DB1 /* FBSDKBoltsMeasurementEventListener.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5557E69BD0A14921486F9974F746737C /* PFCurrentInstallationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 40AB5DCC80577C96F4732C2FA58B903D /* PFCurrentInstallationController.m */; }; + 558CA36485EBAAE1ACFC94ECF26A4C13 /* RKDotNetDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 57A42437229DCF10EA2D792B45EC0449 /* RKDotNetDateFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 55F36BBE4FE82BCCD0C9A4E06DC26BEF /* PFRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = 468C80083455F41B26E5C3D366E6F467 /* PFRelationState.m */; }; + 560BB49A70689476862EE5E1F179D36A /* PFQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = F19CD8D613E04AF9291C97EC57B1C08D /* PFQuery.m */; }; + 5621D0F1F50874AACD396E2AC5A8ED7B /* RKStringTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9766DA2E569D10FE157FA2E355CC9802 /* RKStringTokenizer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5624B5B3EB50D43FB54BACDDB45228AD /* PFPin.m in Sources */ = {isa = PBXBuildFile; fileRef = DAB59734D65B77DD76ADC6A7069BEFCA /* PFPin.m */; }; + 562CF85B86D5B01C4F9A7B9ADB016D2C /* RKObjectRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A7550A91022A017F5AFB8DF01AAFDFA /* RKObjectRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 565365EA7F73C65562A3FC4459E770B5 /* YALSpringAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = B7B6A72DD28FBD988E0B1E6A930C1BCA /* YALSpringAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 57503516957EEFAFFAD7A789730E7B9C /* FBSDKShareVideoContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 69B2823ABCAD80D975C9E8C29A5E869F /* FBSDKShareVideoContent.m */; }; + 5774AA430101105FF0F41887984D6011 /* PFURLSessionJSONDataTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B1126558A8CA869CAE3169CD0485A400 /* PFURLSessionJSONDataTaskDelegate.m */; }; + 577FB11637F9A3CF218053ADC3A5F10E /* PFCurrentConfigController.m in Sources */ = {isa = PBXBuildFile; fileRef = 012EA998B79C045DB5F3DF0D066F78B1 /* PFCurrentConfigController.m */; }; + 578485DD86226126B8E08842D826D2DC /* FBSDKWebDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FC2F31E95438D43C0ACB4E6B5287B8D /* FBSDKWebDialog.m */; }; + 57B1DEE062B9373E350E5EB3DC657FC8 /* POPCustomAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1C9E34AAA6316628D1EF4D8BC3CDCAB1 /* POPCustomAnimation.mm */; }; + 57BDE2372BC4BBC34CAB643A2A95E416 /* PFSessionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 73136CB5DF8D9FDC9C0B3FF336E53790 /* PFSessionController.m */; }; + 580B7575D5092F73CADB0DC057A8DD20 /* PFMutableUserState.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E5A00420D365F9C27CF6F943E8EB990 /* PFMutableUserState.m */; }; + 58597619340E5853CDA8DBC80D53D577 /* RKBenchmark.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C7FFDC2B7A4F0D5C315F44B0165D091 /* RKBenchmark.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 587ED101545A953414998ABFA4479B5D /* FBSDKContainerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AA04EC3FE92A62CDADA2A69B932DDF3 /* FBSDKContainerViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 58F4A4DF57C22014622BB042607EB8EE /* BFAppLinkNavigation.m in Sources */ = {isa = PBXBuildFile; fileRef = CFEE369DBDB3AF968FCC81B9E15BD259 /* BFAppLinkNavigation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 591282C08F383491158606060CF4799A /* RKLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 667F8446CCEAF60B9DCD4E68CCB9ED5E /* RKLog.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 591FE63D036F4A539784293BCAD97493 /* FBSDKGraphRequestMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 370FAC093160183505C296D12A84BF0A /* FBSDKGraphRequestMetadata.m */; }; + 5925CFB0F01031178978AF59986A8836 /* TKEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 62923837C0899ECA2BAD6224F5A7B22E /* TKEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 598CA7FEDEDFDBF38831C0015C044596 /* PFFile_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D298D539E71478D6340E3FA832E4778 /* PFFile_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 59B602D97CE0027EE607A6D59E7FAEC4 /* PFPaymentTransactionObserver_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 305A419FED9C718C8ACAE5D2F9173F27 /* PFPaymentTransactionObserver_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5A1CB5B72C92E43BF844377DC72DA072 /* FBSDKAppGroupContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 87352A5CFA4016F286A66829B0D2BFB9 /* FBSDKAppGroupContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5A3E09336161889373CC89326260ADE5 /* PFOfflineObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = E53C7B0A7D27C453923DDE2311E75A27 /* PFOfflineObjectController.m */; }; + 5AAE55DFA2869211ADAE99C345C0192E /* PFObjectConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 936E7B213612ECBF1630386CE6D7B1D2 /* PFObjectConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5AF64E5EEA043722E238A8C5EE47A63A /* BFAppLinkReturnToRefererView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = D7AC47EB8D0E9C9582957C2869B7517D /* BFAppLinkReturnToRefererView_Internal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B619FB7B735B3AE6E29CD79496C39C0 /* PFACLPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = C4DAAE6C562288FB95B1415AF6763317 /* PFACLPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5BAB981C0B0E5CA4456C701E0D4C8C3D /* RKPropertyMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B9E4087FDB2FFD655EB8FA58B697B4E /* RKPropertyMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5D8F8D57EC3D51CD74969DAA5BFBC15C /* PFQueryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 512FA3A57C3C25DEB20BFDE24938517B /* PFQueryUtilities.m */; }; + 5DB44075B06EAE0B3D695B29CCF444DA /* PFURLSessionUploadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EB6E9BC99D4CE39BCEA9AB574501691 /* PFURLSessionUploadTaskDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5DD4705F866F09E0FA008D068DD31F48 /* PFKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 6674B326B12A30BE2A6BCDFC2F890324 /* PFKeychainStore.m */; }; + 5E1AB8EC72407D7A56EE8074AC99F4AC /* FBSDKTypeUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 1488210FE220BBA6CCA5EBE2C7D73FA7 /* FBSDKTypeUtility.m */; }; + 5EEB7C03214B977E5D8925797BCCF7B1 /* FBSDKLoginManagerLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = C45478301558D880893FA55C99879E3C /* FBSDKLoginManagerLogger.m */; }; + 5F2CF6350F306F78D40161C01EEDD731 /* FBSDKMutableCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BE12FA64DB24FF7A1DF7937AEF98D6 /* FBSDKMutableCopying.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5F51961B26B43B74BC1F3504C2AA68ED /* RKRouteSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 66C350784D8C52C699FE7DD47EF906FB /* RKRouteSet.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5FBB039F53D31783622E144DF3B0DC7B /* POPBasicAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 96A6F76476CACBAADE4A258C71998683 /* POPBasicAnimation.mm */; }; + 5FBDA19530CA26D2F5E37B02FFA15D50 /* PFMulticastDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BBAD9DCAFF06BB669E8D77482B04BDB /* PFMulticastDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5FCA3879482A03418CCB75CE50EEA9C1 /* FBSDKLikeButtonPopWAV.h in Headers */ = {isa = PBXBuildFile; fileRef = CEF0CE91FC9080D9E33E9B362D760F18 /* FBSDKLikeButtonPopWAV.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6080A31C682280C87E76F93D3D1C7D42 /* PFSession.h in Headers */ = {isa = PBXBuildFile; fileRef = B0AF344F89667D8F50F4A22C146ACF21 /* PFSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 609CCC1A9F655B5B7E6F6D3FF89E80D5 /* RKRequestDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B09A465BA0ED9168954ACE5D869AD1 /* RKRequestDescriptor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; 60F370DA778C2C58337885BA2E21047C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; - 61BCC6DAB9276D969FCC0F848B69DB86 /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = A5EC9E79B357B5A2AC105BD544952297 /* FBSDKMaleSilhouetteIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 61C04EFBF42F1F1275B42E1DB6103AAC /* PFEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B6AC7B5CA03EFC1449CFA764CF607A99 /* PFEncoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 626EA657BFC628DA8317728BE78A3B4A /* RKPropertyMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 47CEE063B791E2A75D02580633A5F373 /* RKPropertyMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 62A4E5BEAC5F31E0EB99CDCB8179311B /* PFCurrentObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = EAFB52AC58711E75BD9749D21BB34897 /* PFCurrentObjectControlling.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 62D812F2EF8DA118C618FF5349055C57 /* PFRESTCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 29EEBBE595CAF744AD4307424F577DFD /* PFRESTCommand.m */; }; - 62DDEB5456833B4AD3A84F7AADBE9099 /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 46326E5CA01311B8CBC725FB12585BCE /* FBSDKGraphRequest+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 634D85A94A89FB79C887AEB085DECA60 /* Bolts-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 497BCC491078BD10E998532399FBE356 /* Bolts-dummy.m */; }; - 63B17895BA064D712385A40C63BD7EA2 /* PFFieldOperationDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 862487394328F3BC868EBBAC32F7D1AA /* PFFieldOperationDecoder.m */; }; - 641656C3A17793081B0B55EF4183369C /* PFObjectLocalIdStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3E68B1FF2DD23DBAFF7854AD495337 /* PFObjectLocalIdStore.m */; }; + 61BCC6DAB9276D969FCC0F848B69DB86 /* FBSDKMaleSilhouetteIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D4E7099B46D1C3E524DA77BA96A3960 /* FBSDKMaleSilhouetteIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 61C04EFBF42F1F1275B42E1DB6103AAC /* PFEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8837B1CB6DAF343BD8C545163EA2DA58 /* PFEncoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6239684B7D89D4F446BF5B4383804BFE /* RKRelationshipMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A3DEC35A890AB8929D5A78F2D24DC7A /* RKRelationshipMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 62A4E5BEAC5F31E0EB99CDCB8179311B /* PFCurrentObjectControlling.h in Headers */ = {isa = PBXBuildFile; fileRef = 658BD9C8EBCC6CE298417312A7B194FF /* PFCurrentObjectControlling.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 62D812F2EF8DA118C618FF5349055C57 /* PFRESTCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 3962BED4A779536F2E41B1C36D6285AB /* PFRESTCommand.m */; }; + 62DDEB5456833B4AD3A84F7AADBE9099 /* FBSDKGraphRequest+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F87C75C1F03CFABBB54EC631815288C0 /* FBSDKGraphRequest+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 630A23A824A9AE5B03C54172F5F9556F /* POPAnimationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8707552112C343BFF840516C1AAD0D31 /* POPAnimationPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 634D85A94A89FB79C887AEB085DECA60 /* Bolts-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DA196AA463D20F7402232B546DE1EEC4 /* Bolts-dummy.m */; }; + 6370111F8E53B9FCB359DE67FB0A5768 /* RKDictionaryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 611F4CE6ED5017088CB427383A3D1445 /* RKDictionaryUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 63B17895BA064D712385A40C63BD7EA2 /* PFFieldOperationDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ABF2667D317A8E92F4DAB58CAEEB37A /* PFFieldOperationDecoder.m */; }; + 641656C3A17793081B0B55EF4183369C /* PFObjectLocalIdStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 6426FFE9B7D5877E4580324A76A08178 /* PFObjectLocalIdStore.m */; }; 647E650A08B67B558A6C1A0041544B1D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B0F29E0D66F63131F371330D93CB4583 /* QuartzCore.framework */; }; - 64BD30EF98CC4A38D8BF92656D4A6AD0 /* FBSDKShareButton.h in Headers */ = {isa = PBXBuildFile; fileRef = AC3C9929DCA15B6D58724D42C5BD2DFB /* FBSDKShareButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 65719AA0C36A5882E89A8D02BD83CD32 /* RKURLEncodedSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = F90CCDF16C40C8073020CB017D02AC1D /* RKURLEncodedSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 658F5F398CDC2959D9D80E71D58CF261 /* PFQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DC92D832BC4F98CB9CDF7D7A7B176F3 /* PFQueryController.m */; }; - 6608AB736E0C33DCF8268F38C187F113 /* RKMIMETypeSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = B82D9F24AE9309326A0F5D37DA96F86D /* RKMIMETypeSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 6678A92E1C40BF48F96D3FCF476C03BC /* PFNullability.h in Headers */ = {isa = PBXBuildFile; fileRef = FDFB0625E5A8DE395A3BCB617FCD612D /* PFNullability.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 66866C90B76FFDB79EB2460DA948FFF6 /* RestKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0168088B34D75689673FA7BA85F0B641 /* RestKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 66F445220BAF1CCE856A11B0B7F803A4 /* PFInstallationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 57595B2EC946AD2720F477BBF1C1693B /* PFInstallationConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6765D67511A02AD8B1C22BFD59E32233 /* PFACLState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FD9787D3AC0A8EBB5A37E3E888F8DE4 /* PFACLState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 67767415823A98D8A2C93A953551A571 /* PFFieldOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 90BC9D720C96091D799BE399435389DA /* PFFieldOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 67F789F4A32CA7A82DE43CD27AEA87BD /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = A4371F9C1BEB37C1C9A7F487E96B039C /* FBSDKBridgeAPIRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6811D76FD209AF70990900C4FA2348E5 /* RKResponseMapperOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E3F86397116A780E41E893B85EDECB42 /* RKResponseMapperOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 693563EF1DB59CD00D1B0B8685D0819E /* PFReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = A615158242A3BF4F9C9D90078A2CE30F /* PFReachability.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 69F828062553D0A5623207630EB9FB21 /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 347915ED2D892D50E616DA8EACB44960 /* FBSDKUtility.m */; }; - 6A7AA0924113739F682D6E35E4B71540 /* PFFileDataStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 05528EC9662F1A87AE94B74D156D8CC0 /* PFFileDataStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6AAB88174D5DAE8A23C47D20961B3DDE /* PFConfig_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 2903E773C725846E7E37922E881B5B52 /* PFConfig_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B00AF25CFB12372D5281D7B9D51E3E2 /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 194BBF93E1D47E864E12261443E6F23F /* FBSDKProfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6B2DD9967AB4D947BDECC65AC4CCB1EE /* FBSDKLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = 432FAA5FD944A3CEB95D300D82A29D11 /* FBSDKLoginError.m */; }; - 6B6E69822F96D41917A1791C1873A1D1 /* PFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 95E86A54E3D8EFC5EAD2463D4E89A3CF /* PFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6B8F8457EE06C9B9F37CA931F439DB4A /* PFKeyValueCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E89848483ABCCAEAAEDD2FF9965D52D7 /* PFKeyValueCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6C052D12CBAB4B9CEC3E0B97C3B0CA00 /* PFCloudCodeController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B5B5284F66A4663EFFDE2B8B5E336B1 /* PFCloudCodeController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6C6B44FB16E5ABD292E2D77D89DDFF32 /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CBE41855C229057359338A397CF9CBF /* FBSDKCloseIcon.m */; }; - 6CC372C70EE09A01AEC3B0C9A077B395 /* PFPinningEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 4332383098D7379489F2E1CF7653D948 /* PFPinningEventuallyQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6D1ED30B474D96450E7B0D1E548CDC60 /* PFEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = C56C90CA47F054F6B744E59125428689 /* PFEncoder.m */; }; - 6D2E47E46AED98D49CD7E1D7DCA449B3 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = F743580826B5C1B915C7431CC5442853 /* BFTaskCompletionSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6D3FD8968A8524A1D88687C9861581B7 /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D3B208164182946BFFFE3BB33CF2BEC1 /* AFXMLRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 6DFB846C756551ECD366F5AC7B189C2C /* YALTabBarInteracting.h in Headers */ = {isa = PBXBuildFile; fileRef = 708E2A05386B4566A5D2D2BC686ACF19 /* YALTabBarInteracting.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6E26161BE1EF97C776544437594061DF /* SOCKit.h in Headers */ = {isa = PBXBuildFile; fileRef = F9A89F784DA1F7AF78D9C06E04DAFF30 /* SOCKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6E33ED273C645E70EF87C0C05807D1A2 /* FBSDKLoginManagerLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = F196DD5AE8EA853E4EC89AF912198556 /* FBSDKLoginManagerLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6E7A504266921DE5FEDD84D1A38F473F /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FDE8A1A301D0824B588F44EE25B4664 /* AFHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 6E81F98DB0508128E08205B0290F7F66 /* FBSDKLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C773E3706A4438E1751AB41F39EB030 /* FBSDKLoginError.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6EA031F1089FBD5D7E5DACD68EDC2F5A /* FBSDKShareLinkContent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 19F20D1F4CF5FCB81834DCE24BD63E00 /* FBSDKShareLinkContent+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6F5BB8563523FEB8914557A0C379361F /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 173E06370DF9F26EB5591EE929B03D16 /* FBSDKAccessTokenCaching.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7051CE40FD16869F0BF9CD028A658782 /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 83DE73D13A43E32C92686B974DE323D3 /* FBSDKCoreKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 705AA38F8B993508AEFEE4998DC8457F /* RKConnectionTestExpectation.m in Sources */ = {isa = PBXBuildFile; fileRef = EBA8382EE38E29B647AAA8D688CC23CE /* RKConnectionTestExpectation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 70905E1AFD8E61FF829458D67B744EB4 /* PFPushManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E93884F64E775CC94E71ED80F9FF08D4 /* PFPushManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 70C825F4D31DA952A01695D926762BBF /* RKTestConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 42E3420B261FCAE88A3371F0158DAA2A /* RKTestConstants.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 716A44DCF2417118DDAEAD57B69029BA /* PFSQLiteDatabaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = D1AF1FC1D27AABD7DC4C0948E9C059A3 /* PFSQLiteDatabaseController.m */; }; - 7171DEAFC5A2F780E670B8395EF8F07B /* BFDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B5BC191314D1C949957752D5E562E183 /* BFDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 72DDA136310E1878B3393479B38B83F9 /* FBSDKURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 37AC900D11C191E04655F282A675E5E0 /* FBSDKURLConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 73518A8EAF46D85112E2CB85D02BF9C0 /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 8470CA3B7EA842B7D1BE44214C739AF0 /* FBSDKCrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 73874B352F141AD7451291BE3C07619D /* RKPaginator.m in Sources */ = {isa = PBXBuildFile; fileRef = BED513156E118407B7BC1990E6EDADA5 /* RKPaginator.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 7491B632AA9E26DA9BC69374DE8BF0FA /* ISO8601DateFormatterValueTransformer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D0CD43CC78F18A69B36021FD018147B /* ISO8601DateFormatterValueTransformer-dummy.m */; }; - 74B1B04C2705C12FDA25D308C6F8F669 /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 60496328DA2C2D4EF5E4E2C9933AACD9 /* FBSDKAppEvents.m */; }; - 74D22BA7DDF7C44219CE3E793CE0AC6F /* FBSDKGameRequestDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 96AA4B508FBFE9971F929FB061B14436 /* FBSDKGameRequestDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 74EB4B274B8CF5543B9DB2B77394CC60 /* PFHTTPURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1578615981EB295CD3B68AD600652886 /* PFHTTPURLRequestConstructor.m */; }; + 64BD30EF98CC4A38D8BF92656D4A6AD0 /* FBSDKShareButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CBCFD5CCB1FD15EED54F82E909DC031 /* FBSDKShareButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 658F5F398CDC2959D9D80E71D58CF261 /* PFQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = ABE4BA05E14673159DDEE660B13A5B00 /* PFQueryController.m */; }; + 666C8261EF1AB3272F89C4CA09FC631D /* POPAnimatorPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5251CF87DD5578A90ADED5D340FF960B /* POPAnimatorPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6678A92E1C40BF48F96D3FCF476C03BC /* PFNullability.h in Headers */ = {isa = PBXBuildFile; fileRef = B27AB7689D28F34F8A9D466ACAB162DA /* PFNullability.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 66F445220BAF1CCE856A11B0B7F803A4 /* PFInstallationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = DCDABFE826ADB96F79D0DFB7BF9C4259 /* PFInstallationConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6713CDF473C3A1F71B852C8F354780A0 /* RKMappingErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = FBEB6D4BDCEFC529A9705D5228053B04 /* RKMappingErrors.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6765D67511A02AD8B1C22BFD59E32233 /* PFACLState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B6054861B48456D5D8D1E661F92EE5D /* PFACLState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 67767415823A98D8A2C93A953551A571 /* PFFieldOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 97D4677BC9F2D88DF946E204DF242D38 /* PFFieldOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 67F789F4A32CA7A82DE43CD27AEA87BD /* FBSDKBridgeAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B7304E8EFDCC873E1CE3D2CA2076A74 /* FBSDKBridgeAPIRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 693563EF1DB59CD00D1B0B8685D0819E /* PFReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B799574EF27A1E8D4FD50ADAA42EC77 /* PFReachability.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 696305155D2765894FA3E5EBC092A650 /* RKMappingOperationDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = B7478D31F88F47602170505B415F4CEB /* RKMappingOperationDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69F828062553D0A5623207630EB9FB21 /* FBSDKUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = E4528F78B1F397E3730075143FD93C99 /* FBSDKUtility.m */; }; + 6A7AA0924113739F682D6E35E4B71540 /* PFFileDataStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 49BFECAFEA1EF171D5BA9CFAFE63B895 /* PFFileDataStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6AAB88174D5DAE8A23C47D20961B3DDE /* PFConfig_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 58DD77FFA76457DC7826A465EB970094 /* PFConfig_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6B00AF25CFB12372D5281D7B9D51E3E2 /* FBSDKProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 55DBD79D6CDD908C9E0151AF56A3EFCE /* FBSDKProfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B2DD9967AB4D947BDECC65AC4CCB1EE /* FBSDKLoginError.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E2D1B4FCC4918686DEAF9094B908917 /* FBSDKLoginError.m */; }; + 6B6E69822F96D41917A1791C1873A1D1 /* PFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = ADC8E7B23140B59FA2BE5667DEC580B9 /* PFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B8F8457EE06C9B9F37CA931F439DB4A /* PFKeyValueCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B754CD741EB603D2A92BACC3F38A430 /* PFKeyValueCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6B980244FC648CB685E9AD30A9780D1C /* RKObjectMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = F4EC41878B622B137CC4B622FC53F3ED /* RKObjectMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6C003AB01A869DC27CDDCD6CCC0CACE9 /* pop-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C03EC589275AA21D375F405EB48AB374 /* pop-dummy.m */; }; + 6C052D12CBAB4B9CEC3E0B97C3B0CA00 /* PFCloudCodeController.h in Headers */ = {isa = PBXBuildFile; fileRef = 74B44F24917A72CA781246EA2632A00C /* PFCloudCodeController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6C13E0E83471C1104A40CB5D928C5C78 /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 272643F56613CA0D336AE3DBF19DC404 /* Pods-dummy.m */; }; + 6C6B44FB16E5ABD292E2D77D89DDFF32 /* FBSDKCloseIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 7719F6B5924888F0A267790B6E5647FD /* FBSDKCloseIcon.m */; }; + 6CC372C70EE09A01AEC3B0C9A077B395 /* PFPinningEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = A7540E284803A52212B2DE3FD4678F87 /* PFPinningEventuallyQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6D1ED30B474D96450E7B0D1E548CDC60 /* PFEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D8A98D56E6D538D6FA0B232BBCBA03 /* PFEncoder.m */; }; + 6D2E47E46AED98D49CD7E1D7DCA449B3 /* BFTaskCompletionSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 72766C115F290B685E1C527E77EDEDEE /* BFTaskCompletionSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6D3FD8968A8524A1D88687C9861581B7 /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = A9CA1C8C41256C5E7CEDBAF354C19AE5 /* AFXMLRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 6DFB846C756551ECD366F5AC7B189C2C /* YALTabBarInteracting.h in Headers */ = {isa = PBXBuildFile; fileRef = CCD58C1FE0A285B35DC39096400FF8C5 /* YALTabBarInteracting.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6E33ED273C645E70EF87C0C05807D1A2 /* FBSDKLoginManagerLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = EF79FDCF0AF41A384FB770643D79F0E6 /* FBSDKLoginManagerLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6E7A504266921DE5FEDD84D1A38F473F /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C544CA6F07611BFE8BFC800E9D59E5AE /* AFHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 6E81F98DB0508128E08205B0290F7F66 /* FBSDKLoginError.h in Headers */ = {isa = PBXBuildFile; fileRef = 044941FE89AB594A010087B94F17D923 /* FBSDKLoginError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6EA031F1089FBD5D7E5DACD68EDC2F5A /* FBSDKShareLinkContent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A9E08B70AB72ECE4DA87BFED9B17F956 /* FBSDKShareLinkContent+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6EFA282EB5DD6C5347CCE430844E5CAA /* POPMath.h in Headers */ = {isa = PBXBuildFile; fileRef = A303568877AD7BACE17E962FDF4513C1 /* POPMath.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6F5BB8563523FEB8914557A0C379361F /* FBSDKAccessTokenCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FB151E5B82946D404F611FAC81C546B /* FBSDKAccessTokenCaching.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7051CE40FD16869F0BF9CD028A658782 /* FBSDKCoreKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 95A9E38BEC3EF5836FF1194D04DDB98F /* FBSDKCoreKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 70687046EC0243F807433D9D44DB7EB1 /* POPAnimationRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = 6467B92BD94142011900B81E0476CB0E /* POPAnimationRuntime.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 70905E1AFD8E61FF829458D67B744EB4 /* PFPushManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 368A5760A18AE27F46F5243BA3BFD13C /* PFPushManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 716A44DCF2417118DDAEAD57B69029BA /* PFSQLiteDatabaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = 97044BE056C705C44778E090F30A538B /* PFSQLiteDatabaseController.m */; }; + 7171DEAFC5A2F780E670B8395EF8F07B /* BFDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B1F248FA3EE75C351E1B383AB977DF7 /* BFDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 72DDA136310E1878B3393479B38B83F9 /* FBSDKURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BD1AFE5456BC7AAC15A5D308229EC88 /* FBSDKURLConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 73518A8EAF46D85112E2CB85D02BF9C0 /* FBSDKCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = D9C1F4F92487D9DCADCD60039710D816 /* FBSDKCrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7491B632AA9E26DA9BC69374DE8BF0FA /* ISO8601DateFormatterValueTransformer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A0C95D96D102F597D4543F77E2DBE642 /* ISO8601DateFormatterValueTransformer-dummy.m */; }; + 74935B997B546A6E2D523ECE6E06E4FC /* POPAnimatableProperty.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5ADBAA054DAFCE013EB3EF9DF965F744 /* POPAnimatableProperty.mm */; }; + 74B1B04C2705C12FDA25D308C6F8F669 /* FBSDKAppEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = CA3482F3977AA386E991A54C5181BDE1 /* FBSDKAppEvents.m */; }; + 74D22BA7DDF7C44219CE3E793CE0AC6F /* FBSDKGameRequestDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 346CED5D6B988E5318DBD8CC9C98A073 /* FBSDKGameRequestDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 74EB4B274B8CF5543B9DB2B77394CC60 /* PFHTTPURLRequestConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BCD0EFCBE498C67A5B0097360333011 /* PFHTTPURLRequestConstructor.m */; }; 75092C6F60330AA447A66ADEB43581C6 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C758B84874FBB01F1E2CE355BEA77660 /* StoreKit.framework */; }; - 7569FD90D7667E15A7B67B62E4A72E5D /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = FA149A0B2AF7E3F3EC903816EC962CFA /* FBSDKTriStateBOOL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 75928CD63004AE9767341F79B565BEAC /* PFMultiProcessFileLockController.h in Headers */ = {isa = PBXBuildFile; fileRef = A3876C6C899E391617046DF5BA206C24 /* PFMultiProcessFileLockController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 75F412B1EE494A57BC9AED52E8F28700 /* FBSDKLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 942F4435C4E5B28ACF4995C1B58BC460 /* FBSDKLoginManager.m */; }; - 7623FF50D8894BEA849B2E84F9667BBF /* RKMappingResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 7937DE6BBA72253E75BE2C99AD624094 /* RKMappingResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 76EACBDAB632DF356DEB855DD97A09A6 /* FBSDKSharePhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = F16E9555C16A15C09F6E739388F4FE89 /* FBSDKSharePhoto.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 774E19492156820F5CC848D34D9AA4A6 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 00A6001B9377F35CFA12A27639003F73 /* FBSDKLogger.m */; }; - 77B5397CB9EB225E9C0BB7318B12E949 /* FBSDKBridgeAPICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 731BCFC9FA06980186D87DFACC655FFE /* FBSDKBridgeAPICrypto.m */; }; - 77CF177F2CDC9BEBEF5BE1DD296E1E2C /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B270479704A7D09440A3A5A8C04C228 /* FBSDKErrorRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 77D00913E6BC46EF1D8E536BA5A36A93 /* PFSQLiteDatabase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 01EDAA9B73CA1A9B90D5CCD0CE04D58F /* PFSQLiteDatabase_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 77DE7989C98CD1CCB807263C1BE7D419 /* RKRequestDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 23F8033FB2A702EC958A60D0DEF98AC8 /* RKRequestDescriptor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 78952ACEF38C155ADF7CA3B63C38A5E6 /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D8C0D8749CEE57E58CE3B5262781F8C /* FBSDKProfilePictureView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 791E4A4DAC2DF15F7846EBC44911F06E /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 6530D1C36D6D2481926600B02A05B330 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 796EC3DD53C2C28010D03E1E323A1DDB /* FBSDKLikeButtonPopWAV.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E43B3049BD47C0D7F0EE422E4818AC6 /* FBSDKLikeButtonPopWAV.m */; }; - 7A11240D567F7A3207F0F9882ED2AB75 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B0AE93D99549D7F950DBDC8C99044A2 /* _FBSDKTemporaryErrorRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7A67EA6F03AFFE55FAA759B11890E468 /* PFRESTConfigCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C081A1F7DD370C044B7D5118E27A38F /* PFRESTConfigCommand.m */; }; - 7B2C5166FD60B8D009CD534008D48C31 /* RKObjectMappingOperationDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9D6013B80CFF5948B0AEBB731354CC /* RKObjectMappingOperationDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7B38759EF062D9FF703E7D297DAB27E6 /* FBSDKLikeControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 180FF861DE91C6A915DA7C2A92862B35 /* FBSDKLikeControl.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7C0161AC9FE0AC577A2796CFE21D38D9 /* RKPropertyInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = C829B0848EFB7C93E7C376D5D7D2C2D6 /* RKPropertyInspector.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 7C60516B1E4A99AEF16F3B60AA91C41D /* RKObjectMappingMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D53FE7781D3C1C29653F7E97CD587C6 /* RKObjectMappingMatcher.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 7C9D94C465AE6FEED19A76EF32EE9DB0 /* PFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 519BAD12C8F4201D74BDD8453AE47655 /* PFNetworkActivityIndicatorManager.m */; }; - 7CAFF794C7BC2BB61BB7BF31E8278215 /* RKMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F0B1E9EBA20A4C290F0895CD4B960C0 /* RKMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 7CDB3C41071E6BE656221EA86B04C809 /* RKMIMETypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 16AACACB54568C35001E53CAB3D7D64B /* RKMIMETypes.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 7CE53AEEEB82A1729F0A343B85F1FA7E /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = FC1F61CB54C0673DD6D3F506261C1797 /* FBSDKAppLinkResolver.m */; }; - 7CFB4A9919959620E1C0514632BDB8CD /* RKTestFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = EBB561046AC0CC3E56743E5BB664B0B0 /* RKTestFactory.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 7DAD345A47688CC2FF5EEF4E6576DA9D /* PFObjectConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 86C52238DDC9FA7C9DCD49852E0DFE88 /* PFObjectConstants.m */; }; - 7E6125121D979F1802CAD8FB88B66E4C /* PFAsyncTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 520D88E4BD209071CB865B64DEB08BD3 /* PFAsyncTaskQueue.m */; }; - 7E7AB5CD972320B0ADA45CD3A96BF892 /* PFEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C605E7C0D2766C324CD9DAAE8BC0DCB /* PFEventuallyQueue.m */; }; - 7EE9BE9884D5807EC2C980930CB99B06 /* YALFoldingTabBarController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CAE8C5DA18BB8CA4DD074A31BA648D2 /* YALFoldingTabBarController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7F35603B737B2A4B465CAE4B481C34BB /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E63031380A944E9403D3B32AD1E27D4 /* FBSDKGraphErrorRecoveryProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 80511BB81FC091E526BECA78607C0FC2 /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = B36DC7EE87AFA9DC98ABEEA9F3A91C09 /* BFMeasurementEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7569FD90D7667E15A7B67B62E4A72E5D /* FBSDKTriStateBOOL.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C268AB8BD173983B11C4C2D404A9C57 /* FBSDKTriStateBOOL.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 75928CD63004AE9767341F79B565BEAC /* PFMultiProcessFileLockController.h in Headers */ = {isa = PBXBuildFile; fileRef = 5404656CDC7518E20D0C557EF9C53B63 /* PFMultiProcessFileLockController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 75F412B1EE494A57BC9AED52E8F28700 /* FBSDKLoginManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 03549C9A2FD883CD12D063617A47E0D3 /* FBSDKLoginManager.m */; }; + 76EACBDAB632DF356DEB855DD97A09A6 /* FBSDKSharePhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = B91E34DFD041EF9B4895EC618300E024 /* FBSDKSharePhoto.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 774E19492156820F5CC848D34D9AA4A6 /* FBSDKLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D28D5F66862955E51F3A4E12B34C7A6 /* FBSDKLogger.m */; }; + 77B5397CB9EB225E9C0BB7318B12E949 /* FBSDKBridgeAPICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = FA60E1C8D40A78F03AAD7CA1CAE03991 /* FBSDKBridgeAPICrypto.m */; }; + 77CF177F2CDC9BEBEF5BE1DD296E1E2C /* FBSDKErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FE12F1A4097AA56DD490CFF1B57E4AB /* FBSDKErrorRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 77D00913E6BC46EF1D8E536BA5A36A93 /* PFSQLiteDatabase_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 31EC6AF4DEA7F85F68A5CE8C3ECA3280 /* PFSQLiteDatabase_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 78952ACEF38C155ADF7CA3B63C38A5E6 /* FBSDKProfilePictureView.h in Headers */ = {isa = PBXBuildFile; fileRef = E1657F05C4EF96882F28C1692CBF05CE /* FBSDKProfilePictureView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 791E4A4DAC2DF15F7846EBC44911F06E /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB3B5641F66495915C56779C21569E7 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 796EC3DD53C2C28010D03E1E323A1DDB /* FBSDKLikeButtonPopWAV.m in Sources */ = {isa = PBXBuildFile; fileRef = F2575C28B5137ABEB1B9557B34F3448C /* FBSDKLikeButtonPopWAV.m */; }; + 798D21067BF1C22C12D8A94001BF5A59 /* RKObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 0673474C0D02C740FB04EE10B58213D9 /* RKObjectUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 7A11240D567F7A3207F0F9882ED2AB75 /* _FBSDKTemporaryErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = A585F71D8045AD5FFA838F5907C9DCFE /* _FBSDKTemporaryErrorRecoveryAttempter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7A67EA6F03AFFE55FAA759B11890E468 /* PFRESTConfigCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E4BCF2AF417571FAAD5D3A0AF5FFB93 /* PFRESTConfigCommand.m */; }; + 7AE92FAE0E12991264A8E657D4187884 /* POPSpringAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = BDC0554AEE7F2D9DF98C2D8FC049FD2A /* POPSpringAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7B38759EF062D9FF703E7D297DAB27E6 /* FBSDKLikeControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 424184F6AAB828CA2D22E450BB52A081 /* FBSDKLikeControl.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7C9D94C465AE6FEED19A76EF32EE9DB0 /* PFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FE38696DEEE3653F1AF4FB0CA7BC07F /* PFNetworkActivityIndicatorManager.m */; }; + 7CE53AEEEB82A1729F0A343B85F1FA7E /* FBSDKAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FBD3B84E14ADBD2E513A3522C2777DC /* FBSDKAppLinkResolver.m */; }; + 7D1605EE6FF513FDFB9A9827C2930B89 /* RKRouteSet.h in Headers */ = {isa = PBXBuildFile; fileRef = C7FD5D8AEF9C721E9A8B50A73398561A /* RKRouteSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7DAD345A47688CC2FF5EEF4E6576DA9D /* PFObjectConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = D0E010198F9F57F3C1F5251591AC52B6 /* PFObjectConstants.m */; }; + 7E50C34963B8ED1D60B79E534C5627AC /* RKTestFixture.h in Headers */ = {isa = PBXBuildFile; fileRef = D5B2F6DAB138D6C0AFB76C250456D0A9 /* RKTestFixture.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7E6125121D979F1802CAD8FB88B66E4C /* PFAsyncTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEC90C5581726DE80B840585A9F4174 /* PFAsyncTaskQueue.m */; }; + 7E7AB5CD972320B0ADA45CD3A96BF892 /* PFEventuallyQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 41BB788E886BFA89367834A4426A765E /* PFEventuallyQueue.m */; }; + 7EE9BE9884D5807EC2C980930CB99B06 /* YALFoldingTabBarController.h in Headers */ = {isa = PBXBuildFile; fileRef = 352259996AE7807E58AB7D6E88FAC9F7 /* YALFoldingTabBarController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7F35603B737B2A4B465CAE4B481C34BB /* FBSDKGraphErrorRecoveryProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 405BEEF0AFD44793580DDB9D43634820 /* FBSDKGraphErrorRecoveryProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 80511BB81FC091E526BECA78607C0FC2 /* BFMeasurementEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = E5A9EBDF50D04397C922F9D0AB7B0512 /* BFMeasurementEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; 805398D3248C43C8DE072375177A8354 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E62E80C06B8D2394C56D10220D1CCB6F /* MobileCoreServices.framework */; }; - 8071A999E075ED48380A5AAACDA0E0E9 /* FBSDKGameRequestContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 1039AA115A854C64209875E6B8B20ADF /* FBSDKGameRequestContent.m */; }; - 808276E084690B816C4FE2938B4E3F38 /* PFDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = BF734DC57CA15A5ED1C02307CD3DE349 /* PFDateFormatter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 809C53B31BE1AC40886B82DFD238136D /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D98DD91B0C85D183FC3778CD8BF3EA40 /* FBSDKBridgeAPIProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 80AC86A7716C9D9FE484C461CECF64A5 /* PFMultiProcessFileLock.m in Sources */ = {isa = PBXBuildFile; fileRef = B492A7B19E294565EE58BF99C7ED8A4A /* PFMultiProcessFileLock.m */; }; - 81193EC84CBFB74E91526F896C9BA770 /* PFCurrentInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 146B3C6F4906B1DF01F844DF3C869939 /* PFCurrentInstallationController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 814807B51F230D7D561699CC6FCE8111 /* RKLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 7528F8DFCEB5328922BCA59B0054A221 /* RKLog.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 81A2A1E607483054B4C595CA92987E08 /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 9671F1EB06ECFCB5039E830159A8B807 /* FBSDKAudioResourceLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 81BBD301442755592686C551DE726C06 /* PFCategoryLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = C266997BE18B9F2389729AEE26E429C9 /* PFCategoryLoader.m */; }; - 81D3161E66F074CAE137695C259391D6 /* PFRelationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 55E3CD1BDE0CFAD0C13FAED8BEF08B52 /* PFRelationPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 82023A97B43D2DEC58CA0092A2A63835 /* PFUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = AB4CD2808D1181D48BD050A1E40BE976 /* PFUserState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 82360B32AC1B887E85DC592D62CB046F /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CCE2187DD9A71F1848E14301ED5B204 /* FBSDKSettings.m */; }; - 824F558CFBB6BFD7FC2D2E9FB1FCA5B3 /* PFMutableObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABC3BBED3C3C10F8A825E0751B3A6DB /* PFMutableObjectState.m */; }; - 827A9685D68B9BD092DD85970625C1F2 /* FBSDKShareDialogMode.m in Sources */ = {isa = PBXBuildFile; fileRef = E8466657B806FC125F113617F7DD42A9 /* FBSDKShareDialogMode.m */; }; - 8286DA65B1C86544369DF6D387CA87DB /* PFQueryPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D72826DF2E94C85D334B52CF10098D1A /* PFQueryPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8365B59553252085916A6D4ECCE383BB /* AFImageRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C98118F3A80B2EF7FE15655CF5DEBF93 /* AFImageRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8392255CCB63818562D4F58555DDDB08 /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E592A12CBAE13CEF22ACF96543534AE /* FBSDKColor.m */; }; - 83C5AD87D4B7BF94A4B000FC4C254798 /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = B6DAE6FCB32112F6B277354CCD641DFB /* FBSDKMaleSilhouetteIcon.m */; }; - 84418630ACDDA584CC0ACE287C54B25B /* RKTestFixture.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E2A5D66F6C75C8A872ECD3D71937EBB /* RKTestFixture.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 847C86711AC58480F93EE157EC762827 /* PFRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 15CCBEB339CF012A7EF123E309124318 /* PFRelationState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 85030A540670174CA31F4F4226C54C4F /* FBSDKAccessTokenCacheV3_17.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AC84CF788A165593B670BC7F8133D15 /* FBSDKAccessTokenCacheV3_17.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 854828D77E6CD3D9B82D9498EF24E92E /* PFObjectFilePersistenceController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6175C27DAC5A50D940DB696AE83B785D /* PFObjectFilePersistenceController.m */; }; - 85738B1734F9BE17BEE9520D89D2D133 /* PFAlertView.h in Headers */ = {isa = PBXBuildFile; fileRef = D13875E740DD491158EB8406E449FFEB /* PFAlertView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 857C325B0A6E76A01EACF737B6D4FD1A /* PFInstallationIdentifierStore.m in Sources */ = {isa = PBXBuildFile; fileRef = A8607AE13FD6F5114938F5C946462211 /* PFInstallationIdentifierStore.m */; }; - 86043DABC677904AEAAD37E3C8981439 /* PFFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 16343207944FB07AF9037C8A76C5F7A2 /* PFFile.m */; }; - 86201505E0AE8888C1DE7E594A2D17E9 /* PFConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = FF68CFC1D62A76A5756770DE83EAC745 /* PFConstants.m */; }; - 862FE930B3C40926DC7101D0D25931B1 /* PFThreadsafety.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F0A4B0C3848A8B587EDD0F613FFC91B /* PFThreadsafety.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 86444AC2A924F63C45BEC54A0DDB7E8E /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = CD4655E526EE9E09B596D7ADBA95AEC4 /* FBSDKBridgeAPIProtocolNativeV1.m */; }; - 864CF85CA92D5D4313B0A57692C45881 /* PFRESTPushCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 621694B9B8F4062ECD717CB818281308 /* PFRESTPushCommand.m */; }; - 86BB4E1C5A69021E6E28F46D2EBF2A3D /* RKPropertyMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 96D3047DA13118A3FB60F3DBE4812F52 /* RKPropertyMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 86EF71FE1E8C350F37E45235765F15F4 /* PFMutablePushState.m in Sources */ = {isa = PBXBuildFile; fileRef = AFE48A1CAAFB131917518CB852A268E8 /* PFMutablePushState.m */; }; - 87E208C4BC2E8A5C74E1D01087F195FF /* FBSDKMessageDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = B152467F018CE2A665F5C91D168A9A68 /* FBSDKMessageDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 88410794220AF1062177201E82FF9DBA /* YALTabBarItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E000C46BBB39E5ED5C9A8FEC95F0CB /* YALTabBarItem.m */; }; - 8854963B7559E45BA04D4A3AC29B26D2 /* RKObjectRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 047F85BB51947407A2598BD224EF6F03 /* RKObjectRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 8071A999E075ED48380A5AAACDA0E0E9 /* FBSDKGameRequestContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DAC4524798CD2351824DF502E226F2E /* FBSDKGameRequestContent.m */; }; + 808276E084690B816C4FE2938B4E3F38 /* PFDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4035095FBC067B91C5DECADD26277EB1 /* PFDateFormatter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 809C53B31BE1AC40886B82DFD238136D /* FBSDKBridgeAPIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 502875FAB22E086DDEA2AD3FB860D1A5 /* FBSDKBridgeAPIProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 80AC86A7716C9D9FE484C461CECF64A5 /* PFMultiProcessFileLock.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F8116D4E8780C6E74C186A8402C69F9 /* PFMultiProcessFileLock.m */; }; + 81193EC84CBFB74E91526F896C9BA770 /* PFCurrentInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2572DB6B289BFC9AA6F1D1DCFF16D994 /* PFCurrentInstallationController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 813ADFF01E988125B016E0A604A0FCC4 /* RKRequestDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 4521F82969CCAF3A290F34A7DA26A9DF /* RKRequestDescriptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8173E2EA7A6ED5AF96950F1C983E7D8E /* RKMIMETypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E4DB2AB05ABDFB2096CBD1A0D1C960A /* RKMIMETypes.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 81A2A1E607483054B4C595CA92987E08 /* FBSDKAudioResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 83831950A74E93412A274C95A90D1337 /* FBSDKAudioResourceLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 81BBD301442755592686C551DE726C06 /* PFCategoryLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AA9561725BB1FB9134A92D8DC5A504B /* PFCategoryLoader.m */; }; + 81D3161E66F074CAE137695C259391D6 /* PFRelationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = B5439DB8932AAF79667AED53097CC2C9 /* PFRelationPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 82023A97B43D2DEC58CA0092A2A63835 /* PFUserState.h in Headers */ = {isa = PBXBuildFile; fileRef = 099E673F2FD9E7D461C9590B6D38BA1F /* PFUserState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 82360B32AC1B887E85DC592D62CB046F /* FBSDKSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = DCE8B19B5BBBF2EEE591030CB12399C6 /* FBSDKSettings.m */; }; + 824F558CFBB6BFD7FC2D2E9FB1FCA5B3 /* PFMutableObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = B5D03113C677A7DDA961E0D9E46E949A /* PFMutableObjectState.m */; }; + 827A9685D68B9BD092DD85970625C1F2 /* FBSDKShareDialogMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 36A9A82E6520CD02FD9422940934EACB /* FBSDKShareDialogMode.m */; }; + 8286DA65B1C86544369DF6D387CA87DB /* PFQueryPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D18B76D6F749D3B45BAA4E3B0F2EFFD1 /* PFQueryPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8365B59553252085916A6D4ECCE383BB /* AFImageRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = A3794B030BCB9C4408CA8A2839964ED1 /* AFImageRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8392255CCB63818562D4F58555DDDB08 /* FBSDKColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 615339A2EDD3CE627A27EBB1ECFF21B3 /* FBSDKColor.m */; }; + 83A32D0DCD7B1179BE18D0B98A61B20D /* RKMappingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 817589AA5C8BA17E8B2F9808EC23788B /* RKMappingTest.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 83C5AD87D4B7BF94A4B000FC4C254798 /* FBSDKMaleSilhouetteIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 650F210D5B2E4ADBF30ED15408D730D3 /* FBSDKMaleSilhouetteIcon.m */; }; + 847C86711AC58480F93EE157EC762827 /* PFRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9441797DDFA8DBDB595E9BA19BE1342D /* PFRelationState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 85030A540670174CA31F4F4226C54C4F /* FBSDKAccessTokenCacheV3_17.h in Headers */ = {isa = PBXBuildFile; fileRef = D9AA4942A33D49D6BD6342E82EF21F2F /* FBSDKAccessTokenCacheV3_17.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 854828D77E6CD3D9B82D9498EF24E92E /* PFObjectFilePersistenceController.m in Sources */ = {isa = PBXBuildFile; fileRef = 39D2341AC19A6B3AD747ABBF9D3A13E5 /* PFObjectFilePersistenceController.m */; }; + 85738B1734F9BE17BEE9520D89D2D133 /* PFAlertView.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EEF5F821C5CAF35FB96774AFF53120A /* PFAlertView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 857C325B0A6E76A01EACF737B6D4FD1A /* PFInstallationIdentifierStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 79A12CFC76EC1B0BF26367E0922426FD /* PFInstallationIdentifierStore.m */; }; + 86043DABC677904AEAAD37E3C8981439 /* PFFile.m in Sources */ = {isa = PBXBuildFile; fileRef = E3F194E608C0A87A1EA1DBA9B49CDFC8 /* PFFile.m */; }; + 86201505E0AE8888C1DE7E594A2D17E9 /* PFConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F70D98B41C9E7EEBC1231E9885224AA /* PFConstants.m */; }; + 862060E613DA5CEF2678D462DA797828 /* POPMath.mm in Sources */ = {isa = PBXBuildFile; fileRef = 723C3B2158211623464D6751F8AB7101 /* POPMath.mm */; }; + 862FE930B3C40926DC7101D0D25931B1 /* PFThreadsafety.h in Headers */ = {isa = PBXBuildFile; fileRef = 909C0AD7538FB9457B86EC3AC7D973FD /* PFThreadsafety.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 86444AC2A924F63C45BEC54A0DDB7E8E /* FBSDKBridgeAPIProtocolNativeV1.m in Sources */ = {isa = PBXBuildFile; fileRef = BC931BFEE302F10CF84316FC396B1F01 /* FBSDKBridgeAPIProtocolNativeV1.m */; }; + 864CF85CA92D5D4313B0A57692C45881 /* PFRESTPushCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C5EB9BE6709541AB17E0F38FB1BB1A /* PFRESTPushCommand.m */; }; + 86EF71FE1E8C350F37E45235765F15F4 /* PFMutablePushState.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DC8BFB1DFE3D689F572296A0DA6E236 /* PFMutablePushState.m */; }; + 872A4C2396A30AA64CF2786166CB6562 /* RKPropertyInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = CF3513EE8625253892B05EFF20F16B57 /* RKPropertyInspector.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 87E208C4BC2E8A5C74E1D01087F195FF /* FBSDKMessageDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = BF50A2188E832EC70F211B3F3932C51C /* FBSDKMessageDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 88410794220AF1062177201E82FF9DBA /* YALTabBarItem.m in Sources */ = {isa = PBXBuildFile; fileRef = A75314C0637DF9AD59C4F573E3CB78C6 /* YALTabBarItem.m */; }; 88B5193C02621657A8A1599944D7966A /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16621039C0E3312C216165BEF8D567DE /* SystemConfiguration.framework */; }; - 890759733641D9CE6D871075C5C26820 /* RKRoute.h in Headers */ = {isa = PBXBuildFile; fileRef = DF85D1A5A93CD13D748D47C555B565CA /* RKRoute.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 89131DE7914EFB6BDBAF0E0BA46E0B81 /* PFRESTAnalyticsCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B9DF380862F77749D695F3104231B01 /* PFRESTAnalyticsCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 893E921270F96758F3799A3949DECB9E /* PFMutableRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = 2994AAC8F7BD43FAA64FEED836452945 /* PFMutableRelationState.m */; }; - 89564402FD876B2472994636049AC191 /* PFDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FB90FC608DB5150B3A5D742A227198E /* PFDecoder.m */; }; - 899C1F6FEAF906667F0E67D51EDA44FD /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = 856D46D1E0A3157D00390C58BC8DA218 /* FBSDKWebDialogView.m */; }; - 89E9143B078C3D9D56CDA6BE3AAA16D3 /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = FF107198F4983B8531483E65440A0F15 /* FBSDKTimeSpentData.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A0852C94F274C951A8FF2C0E53CC203 /* PFURLConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC38063B09099340C9BF218DC2CD4D2 /* PFURLConstructor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A6946AC59129EA88D60D328CC1123A6 /* RKDictionaryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B51C3F037B7CB1FC1D26AD422819FAAA /* RKDictionaryUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8A96BC7922311E4546CA119B3CF1249D /* PFObjectBatchController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B34569D99B799FF8A6F749B10CCA86B /* PFObjectBatchController.m */; }; - 8A9D36221679B9C6AF86158044A8AB80 /* PFObjectEstimatedData.m in Sources */ = {isa = PBXBuildFile; fileRef = 0526EA7D5B6610515F179B3B16E6EDF2 /* PFObjectEstimatedData.m */; }; - 8AF36C0CC65E3A5D7AF4AEA8BEA5F8DD /* FBSDKShareKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1142FF164E91B0154F7D1B3E3CCD129D /* FBSDKShareKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8B1097E93AE1F424DE31FFB1D83C1E99 /* PFRESTObjectCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 211357AA873E1EF8383B30C370BE0F87 /* PFRESTObjectCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8BF233CF21110FBB9A78A0E9C6FCDD49 /* PFCategoryLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 80215F89C91F2E95ADA9D8D5F5443FD6 /* PFCategoryLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C62414E0ABD89DD5A595B207B4F3DA8 /* PFObjectFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = FB06B7B325850C15B6DC9083FA9CC5C3 /* PFObjectFileCodingLogic.m */; }; - 8C66B8A503EE7CDAF2C8B843D7839113 /* FBSDKGameRequestDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 247CE7F46CACB36C92D0EF9B3F9FB9FF /* FBSDKGameRequestDialog.m */; }; - 8CDA43D636A5808F5E87A816EB9F0D78 /* PFPropertyInfo_Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = 4151DE560D48FE6B06CCFA7940B94CC5 /* PFPropertyInfo_Runtime.m */; }; - 8CDAFE25429AD7F8885827F293890076 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 58F9FC465CA00C27492735D604B485D3 /* FBSDKGraphErrorRecoveryProcessor.m */; }; - 8D66E14F4E946CF7C4A203E9DC27E301 /* AFPropertyListRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 76C5BB7D9A288AE9D8A835E210188D21 /* AFPropertyListRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 89131DE7914EFB6BDBAF0E0BA46E0B81 /* PFRESTAnalyticsCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B9E911ACAAECA0172448CD4E62137AF4 /* PFRESTAnalyticsCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8933272E50BAE580EAB845528BE0E364 /* POPDecayAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4659EF2651456627D2DF254CD1ABA4FB /* POPDecayAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 893E921270F96758F3799A3949DECB9E /* PFMutableRelationState.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ED50EE6CEF264393D61B359E4FD13BB /* PFMutableRelationState.m */; }; + 89564402FD876B2472994636049AC191 /* PFDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 11575C24EBD20B38803926830ED63640 /* PFDecoder.m */; }; + 899C1F6FEAF906667F0E67D51EDA44FD /* FBSDKWebDialogView.m in Sources */ = {isa = PBXBuildFile; fileRef = 47B246252A39D38E7CC3D6CD2C4549AA /* FBSDKWebDialogView.m */; }; + 89BD9A798D541EC62FA93EDC9B45CFAA /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E62E80C06B8D2394C56D10220D1CCB6F /* MobileCoreServices.framework */; }; + 89E9143B078C3D9D56CDA6BE3AAA16D3 /* FBSDKTimeSpentData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DDC81A1F4448D392C77D59D57719404 /* FBSDKTimeSpentData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8A0852C94F274C951A8FF2C0E53CC203 /* PFURLConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 55DFDBF9FA07FC6282738752A376B991 /* PFURLConstructor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8A96BC7922311E4546CA119B3CF1249D /* PFObjectBatchController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC451FC53B248606339FEF2A083812CA /* PFObjectBatchController.m */; }; + 8A9D36221679B9C6AF86158044A8AB80 /* PFObjectEstimatedData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DC337098F42B8A25439D02AF67102E7 /* PFObjectEstimatedData.m */; }; + 8AF36C0CC65E3A5D7AF4AEA8BEA5F8DD /* FBSDKShareKit+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DE175F2297AFCBB1C62B1B16B5891F1 /* FBSDKShareKit+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8B1097E93AE1F424DE31FFB1D83C1E99 /* PFRESTObjectCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = F1B5BCEFFE5D1ED352C01484C83D6924 /* PFRESTObjectCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8BF233CF21110FBB9A78A0E9C6FCDD49 /* PFCategoryLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 1747B6933EBB45F17399984642773739 /* PFCategoryLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8C62414E0ABD89DD5A595B207B4F3DA8 /* PFObjectFileCodingLogic.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FF111BF52B8C1648F8023FC642FF2C8 /* PFObjectFileCodingLogic.m */; }; + 8C66B8A503EE7CDAF2C8B843D7839113 /* FBSDKGameRequestDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F609FCDD81EB1ADED68C1FE461C3594 /* FBSDKGameRequestDialog.m */; }; + 8CDA43D636A5808F5E87A816EB9F0D78 /* PFPropertyInfo_Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = C52117BAFED1734D3269D56FE3D842E0 /* PFPropertyInfo_Runtime.m */; }; + 8CDAFE25429AD7F8885827F293890076 /* FBSDKGraphErrorRecoveryProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 5030E7EB9027091137C392A948E0D5A8 /* FBSDKGraphErrorRecoveryProcessor.m */; }; + 8D606E6C43F0BE373F14A15848E78FE8 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16621039C0E3312C216165BEF8D567DE /* SystemConfiguration.framework */; }; + 8D66E14F4E946CF7C4A203E9DC27E301 /* AFPropertyListRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 89CDFA61E00364C5AE6882B31CA90BB4 /* AFPropertyListRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8D9641967C1ACD51CE3ACACF1B1D2860 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; - 8D9E418F4BF4FF9ABF3F4E5932589C3D /* FBSDKBoltsMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA62A8E667CE97DE59304A1724EC97B /* FBSDKBoltsMeasurementEventListener.m */; }; - 8E3F310FB34E020A985BF37D34582619 /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = 08C17176133A418BBA5506240483F44C /* FBSDKKeychainStoreViaBundleID.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E562933760503079FD82D5E56CCCAF5 /* PFObjectSubclassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = A854E7B08674C60E1987E4A310DA531C /* PFObjectSubclassInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E576F91BE595E20B1D97319B3E40EE0 /* PFURLSessionFileDownloadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 6194460804426F0A4B172D48D43424F3 /* PFURLSessionFileDownloadTaskDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E5C4F9E02DA0CE1FB4656E19A803A23 /* PFHash.m in Sources */ = {isa = PBXBuildFile; fileRef = 87943BFB7F1004CFB75603B28BBF3C4A /* PFHash.m */; }; - 8EAD9F99B96C0786E0B85D4D00F096DC /* PFCommandURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D1E676461C5F40552D64DA33869E6F /* PFCommandURLRequestConstructor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8EE441E5EBD7EAFFDDCCB5F247B160F6 /* FBSDKLoginUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D1C86B95A8E3810D8B07D2319B3FF71 /* FBSDKLoginUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8F2E9F59088D572D947EE4A9FA45DC1A /* RKTestNotificationObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = FF93EF6EEE6883E55F75A0465EC5735F /* RKTestNotificationObserver.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8FA163961DCFE696DD2BA76D1B0467AF /* PFConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = 30CDD959414B1BB05D9C7CC06B1A1DB9 /* PFConfigController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 905D0A5FE23B08D47AA9AB3F584B626D /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5077028CC903E90AEB2806C8A93C10A6 /* FBSDKContainerViewController.m */; }; - 909D78EE968D364B5DDD6C8CF7E375A2 /* PFMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = E9B097547004C3BD7DED3DEE274BAF78 /* PFMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 90F2175480DE7324ADEEF602757134D7 /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D4A6B0E6E31C764CA9C4AE79EB0572D4 /* FBSDKBridgeAPIRequest+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 91D8984FCF7711FFFA4E5A8795A49B19 /* PFPush.m in Sources */ = {isa = PBXBuildFile; fileRef = 204E788B570A793109481294415D9F28 /* PFPush.m */; }; - 92450C8A67B02D5312E98B29C29FE89C /* PFACL.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A0D078B3F700A4B5BC98F3B41F44FDC /* PFACL.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 924D2586BFCD36A807E0E047454317A8 /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 15505CAD38B537EF229C41382091B2B7 /* FBSDKServerConfiguration+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 926F1FF1ADA93F8BE4339C7AE28BD968 /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = C206887391506A13483E7EBD66940BB2 /* FBSDKButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 92D14F626066984B8740E9484071B7C1 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */ = {isa = PBXBuildFile; fileRef = C3A37573B0B483DCF4CB2F542816D68E /* FBSDKGameRequestFrictionlessRecipientCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 92D3DBF67B9423C54D94F45652DA8073 /* RKOperationStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = 32D2CB4155B7B88153C547AB13333269 /* RKOperationStateMachine.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 93508BB9AD5671C0AB3E4E890FF01C95 /* PFAnalyticsUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DAC1FC2CA2D2B4A01038D5148555190 /* PFAnalyticsUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 93511A4AF61BEA29A4FD4EEE7157E023 /* PFUser.m in Sources */ = {isa = PBXBuildFile; fileRef = FD20928F422E57B36F0AF7C03A285F25 /* PFUser.m */; }; - 937DFB623FBFA9980FB84CB4DCB0D495 /* RKMappingErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 10761AFEB4163029E0BB84E7271803E8 /* RKMappingErrors.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 93BDA0F9D51A5F9D4EE287129BDBB99D /* PFProduct.h in Headers */ = {isa = PBXBuildFile; fileRef = A4C7B9F2E653733E71087633BB8C15F3 /* PFProduct.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 946BB4E027BBEDA5EC360607902B1EB0 /* PFQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C28405D1D8221A23C8D5CC2C7FFE4BD /* PFQueryState.m */; }; - 94812F8C5A752C24A9B6D7635CB77A89 /* PFErrorUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = C82858F9F81EFCA744E061FDCCC6A76A /* PFErrorUtilities.m */; }; - 949F1878AC4A43632EFADACFC8140683 /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = DA45B085FFDF032332BDCB8BFF793E5C /* FBSDKGraphRequestBody.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 958CCFDA315803AE6E8B769C3985BF57 /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AE7CF3C4BBBCA9F05072DF89F75C0B3 /* AFPropertyListRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 95D14872174A30E8C238C5334ED744D4 /* PFCoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CB666E8346B15C56F87F1C89B253C80 /* PFCoreManager.m */; }; - 9634B50A041722E070888114E161E4EE /* PFFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = 06A4FFC3574F662CBE4301546762B2B0 /* PFFileState.m */; }; - 96E1FE094390E35BE4E0D715675C16B0 /* BFAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 19F270B7BF779B177C75EA8CFAAA76CB /* BFAppLinkNavigation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8D9E418F4BF4FF9ABF3F4E5932589C3D /* FBSDKBoltsMeasurementEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 8030921BFF7BB8CE71AE970906855522 /* FBSDKBoltsMeasurementEventListener.m */; }; + 8E3F310FB34E020A985BF37D34582619 /* FBSDKKeychainStoreViaBundleID.h in Headers */ = {isa = PBXBuildFile; fileRef = 67CF036576967715D363A2E7C16E4AAD /* FBSDKKeychainStoreViaBundleID.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8E562933760503079FD82D5E56CCCAF5 /* PFObjectSubclassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = FE58183D7C1721963488765C5C8C2AC5 /* PFObjectSubclassInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8E576F91BE595E20B1D97319B3E40EE0 /* PFURLSessionFileDownloadTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DFC97B9CEA18DDABF91F38573337059 /* PFURLSessionFileDownloadTaskDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8E5C4F9E02DA0CE1FB4656E19A803A23 /* PFHash.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1BD0504C0DB02DE656D603F622159C /* PFHash.m */; }; + 8EAD9F99B96C0786E0B85D4D00F096DC /* PFCommandURLRequestConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = C2DF84BAF1C49F7A7466D1F88D650A50 /* PFCommandURLRequestConstructor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8EE441E5EBD7EAFFDDCCB5F247B160F6 /* FBSDKLoginUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 957013533FBA66B6F24FF31441FF1EC3 /* FBSDKLoginUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8F8BE93BB0467F675822961A702D55F1 /* RKMappingResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 903947141B4DCB4B32507DADE29354A1 /* RKMappingResult.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 8FA163961DCFE696DD2BA76D1B0467AF /* PFConfigController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6447BB55EEB3096AE38B4D07B1F5F620 /* PFConfigController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 905D0A5FE23B08D47AA9AB3F584B626D /* FBSDKContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3FA9E55331EB6F5C9D6ABE4173AF97 /* FBSDKContainerViewController.m */; }; + 909D78EE968D364B5DDD6C8CF7E375A2 /* PFMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 96EB5396864F3EE4D9E7D3994DBD1015 /* PFMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 90A1C18005CD010BC306C9E32ED37C72 /* POPAnimatableProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FDB069FE07BA949728D658261EA3E40 /* POPAnimatableProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 90F2175480DE7324ADEEF602757134D7 /* FBSDKBridgeAPIRequest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CBA6686079E7409ED27CC9A6ADEBF36A /* FBSDKBridgeAPIRequest+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 916B7BBE0652142389AB4290D8E4ECB2 /* POPGeometry.mm in Sources */ = {isa = PBXBuildFile; fileRef = 696513A0EDF7E7D3B1DA9E8871E05685 /* POPGeometry.mm */; }; + 91D8984FCF7711FFFA4E5A8795A49B19 /* PFPush.m in Sources */ = {isa = PBXBuildFile; fileRef = CBF4F2328A16C47BFD1BCF837B76EB35 /* PFPush.m */; }; + 92450C8A67B02D5312E98B29C29FE89C /* PFACL.h in Headers */ = {isa = PBXBuildFile; fileRef = B934A04F1A258C2A0713237E8C4DB79E /* PFACL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 924D2586BFCD36A807E0E047454317A8 /* FBSDKServerConfiguration+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E55C935E4DD635C29A2B334C8AB06254 /* FBSDKServerConfiguration+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 926F1FF1ADA93F8BE4339C7AE28BD968 /* FBSDKButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A840F03EBE584ACE4D413A297B04FC9 /* FBSDKButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 92C02E7583FDE1D396BB88B19EE2831E /* RKPathMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = CD158942FBF8358677B8D9A4BEA9332E /* RKPathMatcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 92CC0855895CFD948F305B30546B0414 /* TransitionKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F1DA5784F757925FC9B2C359AE8F07C /* TransitionKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 92D14F626066984B8740E9484071B7C1 /* FBSDKGameRequestFrictionlessRecipientCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E73D941475103F44552CBBF7A9C2578A /* FBSDKGameRequestFrictionlessRecipientCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 93508BB9AD5671C0AB3E4E890FF01C95 /* PFAnalyticsUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CBDBFAF7E5AFEF7AE3D397FB6EE762 /* PFAnalyticsUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 93511A4AF61BEA29A4FD4EEE7157E023 /* PFUser.m in Sources */ = {isa = PBXBuildFile; fileRef = DE726D284DFE5BC0144139D8575114FE /* PFUser.m */; }; + 939F928ECFFE801E912A133DB6158E86 /* POPPropertyAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 80519B32A7AC044BA72391DA03E6E140 /* POPPropertyAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 93BDA0F9D51A5F9D4EE287129BDBB99D /* PFProduct.h in Headers */ = {isa = PBXBuildFile; fileRef = 4920838C7C35EE540CFF086D92C435AC /* PFProduct.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 946BB4E027BBEDA5EC360607902B1EB0 /* PFQueryState.m in Sources */ = {isa = PBXBuildFile; fileRef = DD4E641A4F7583F57A2818E33113A0CF /* PFQueryState.m */; }; + 94812F8C5A752C24A9B6D7635CB77A89 /* PFErrorUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = D4F5FFBEC5EF679476BD610B31B04B36 /* PFErrorUtilities.m */; }; + 949F1878AC4A43632EFADACFC8140683 /* FBSDKGraphRequestBody.h in Headers */ = {isa = PBXBuildFile; fileRef = B9BAFC471A7F7E390879132FBD1B3B21 /* FBSDKGraphRequestBody.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 94C8C1F85C2C32F8D8C4843B10603DF0 /* RKPropertyInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 33A88DE3DA4EB5064A997FFAF0C23DCF /* RKPropertyInspector.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 94E9756648CDAC618994DEA3D28ECC18 /* RKConnectionTestExpectation.h in Headers */ = {isa = PBXBuildFile; fileRef = EA4EBDCE8C9C8A5582D7231A544E96A8 /* RKConnectionTestExpectation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9519538BB8C70220B80F280767FD1CE4 /* lcl_RK.m in Sources */ = {isa = PBXBuildFile; fileRef = 997269FD4178F2BC0707886B0C405A8D /* lcl_RK.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 954B302CD45EB32FEC37295F3EC0206C /* POPPropertyAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = B53D5E1A96FE30D9B7F8D596BF9E2F80 /* POPPropertyAnimation.mm */; }; + 958CCFDA315803AE6E8B769C3985BF57 /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = CC7C0590FD149B2C227C59AB38DF61DC /* AFPropertyListRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 95D14872174A30E8C238C5334ED744D4 /* PFCoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FD81CD43134464279746BA1F66D5A48 /* PFCoreManager.m */; }; + 9634B50A041722E070888114E161E4EE /* PFFileState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FD94F67395BDA44DD37B2CEBB86BB64 /* PFFileState.m */; }; + 96E1FE094390E35BE4E0D715675C16B0 /* BFAppLinkNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FDE21F99879BAFCD8007510D41FD42B /* BFAppLinkNavigation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 976C79EBB302D6FD69733210FFC97DDF /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B0F29E0D66F63131F371330D93CB4583 /* QuartzCore.framework */; }; - 977939FF92D57042F939439588EB0E6F /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 89638686460135E581F100965DB593A4 /* AFJSONRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 97996933B25E24DAF9D18F8E188B03CA /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = E4EE8B2F0AF96372A1E5A8E576C9B17A /* FBSDKMath.m */; }; - 97E73BF140E412BECB34ACF01B50C764 /* RKObjectUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A03339B789E2FC72FB9CCFE5665A0C3 /* RKObjectUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 98350E1EE789CEB57D91ADF6F225D62E /* FBSDKShareError.m in Sources */ = {isa = PBXBuildFile; fileRef = 45E3175265DC81EF149FA06BB4EA951B /* FBSDKShareError.m */; }; - 9934291C79A7EBE51544EDDB2193FD01 /* PFUserConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 72B7D073C442C0EC9D3D4650B7CE4F23 /* PFUserConstants.m */; }; - 9988B7041D7B470C3F7D1938D965F654 /* PFMultiProcessFileLock.h in Headers */ = {isa = PBXBuildFile; fileRef = B6327D62365930A9BC127D1B6AA7C081 /* PFMultiProcessFileLock.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 99D055FF3D067DC24E05819741E06945 /* PFRESTConfigCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 95FB0DA8AF871D7246C122EF20326E70 /* PFRESTConfigCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9AB561BA236CB930E21B38DE886155A6 /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = BB08F921B445EECE7EA71D6B4554FF9E /* FBSDKViewImpressionTracker.m */; }; - 9B3982D6FA8CD29A66D47D7356C6FB67 /* RKHTTPUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = BAA0EDF40F153DD9E67C8C7F744785F8 /* RKHTTPUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9B516F3168787E2C9732AC0C00479971 /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = DF2A4D83628FCB3153D053BF5093B58A /* FBSDKAppLinkResolver.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9B7B596E21B20063D8870D27F93990BF /* FBSDKAccessTokenCacheV3.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AAEA066289DB63479C8EA3E37BC7E15 /* FBSDKAccessTokenCacheV3.m */; }; - 9BFBEB3B8ABB7F24555374DAFDEE5A43 /* PFACL.m in Sources */ = {isa = PBXBuildFile; fileRef = D02A52C086D84F65295E5DA1562069FC /* PFACL.m */; }; - 9C61DEAAA276DF68E9CC9679C0FC3E64 /* RKMappingOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 31A4AD66C6637BF2C615D2A5ACFDFB97 /* RKMappingOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9CBF1E478681F7C22EC2F5B1303DBEF8 /* PFPushUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DE00A9C031141A57AB8312D1DEF51E8 /* PFPushUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9CF9ABEBAA86E37078F793BAF2C4F18B /* ISO8601DateFormatterValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 12F4038DEE96BCA00C4F13577F8FB019 /* ISO8601DateFormatterValueTransformer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 9D1E20F07E1C09F60E2F35F6119A0F42 /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BD4E2FDA8D2C7FF9BEBBCB6D90B725F /* FBSDKError.m */; }; - 9D3D9A7D232F06FADE0D0D036D96A598 /* PFSQLiteDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C500DF14994F5DF82D1C7A4F1B29EE4 /* PFSQLiteDatabase.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9D8543C5F547215DBD30C9C18E525F33 /* PFURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 610383C50F7E8C3E94C191A91D507693 /* PFURLSession.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9D89845489A310CB56E647F143BEA677 /* PFLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = AF37684830F2DBB64CC294D7D1ED687C /* PFLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9D8A1173432B3D5D943B800A5A5E080C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; - 9DA2B0C972429DD7AD7064E9E09475C3 /* PFPush.h in Headers */ = {isa = PBXBuildFile; fileRef = 35A723AF4E93A1BD6805BE7CABE6E033 /* PFPush.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E1DFD298D2638A443CF2EA5B47BFC51 /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = DD5C257CFF734FBADEC42260C86AF53A /* FBSDKCrypto.m */; }; - 9EFC61F27D88241A96D3FB13EF831E02 /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F9AF6687FB731435E4D8A667BC21448 /* FBSDKProfile+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9EFD8B6E9A0DFB23D0458D0071283130 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 362C1D10E572107214CEFE116A4A3E9C /* AFNetworking-dummy.m */; }; - 9F04CB08F3037EDF755036F82BCC418F /* PFPushUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 53E751950C87EEEFB70685CD518122A2 /* PFPushUtilities.m */; }; - 9F309454D3B0FA1C2701DD3226C97074 /* PFCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = D4C698542F4955E8A40A8D39035EDAAC /* PFCloud.m */; }; - 9F3D3656F5864DED6AF668D1AB68975E /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = D347E102CA6826F9924372BD14C67494 /* FBSDKGraphRequestConnection.m */; }; - 9F836AA840436BDA62D7D6325F233221 /* PFUserFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = 8626A096D5442B8137154A62B0ADD414 /* PFUserFileCodingLogic.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9FE10640F0AED83B16480FFAD9CEA3CD /* PFFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 69FCCBED66F1FD4D49A5DF14367CB3F6 /* PFFileManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9FFCB2055332535163446E136EDF1E42 /* RKRouteSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 00595F6FB2C45EBEB4850162FFBAFBDA /* RKRouteSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A00E98DC15CC981738CFBE96AEB16EB6 /* PFPushChannelsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4662A7DF03B449C11ACAB6A82AA6CD0B /* PFPushChannelsController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A03EE16F31569592C179BC824D019DC9 /* PFRESTUserCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 812F56D962057B55B97DA7C2E81454B8 /* PFRESTUserCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A0F75CBE72EE4F9B74838F6F01191D06 /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 16D7414B803B24894CDD90ED3E31C1AB /* BFAppLinkReturnToRefererView.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - A1292411CD105DB99B42269F163F0616 /* TKEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 78AFC5613D6C0DB29F522A49E3BA144F /* TKEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - A161B6BDF507ABF1322BB74A9D437D4B /* FBSDKShareError.h in Headers */ = {isa = PBXBuildFile; fileRef = C94BA5EE86AA9925359209A89FD97B37 /* FBSDKShareError.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A1752CBBCEED5A344FDA136B0EF771A5 /* PFCurrentUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = E3CC799DD4BB9892F589E02F63692D70 /* PFCurrentUserController.m */; }; - A18206D679C80B4AFF6654B5677DBFDB /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BC537E2F269396073213A29C99B4BFB8 /* FBSDKInternalUtility.m */; }; - A1B68435F82A632E4F331D60773C2869 /* RKDotNetDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 70A2C6CE14776F9B578042E6CC7C2126 /* RKDotNetDateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1B7647A3A40381C4430FBDBF794C699 /* PFCommandCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 057581746F9592678DE1D227AA52EB2D /* PFCommandCache_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A1D7AF47B734259F42226B7577014F7C /* PFUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D550D3103B9BC03C2B3CFD252981DA2 /* PFUserController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A1FCC931AC4A1A8D148E28C4572BB307 /* FBSDKShareDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 63BFA7CA55559EBDA4EFE89AE77C1E67 /* FBSDKShareDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A248810839C65E5881B7B7B3F264078F /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = D2DEC5DFFD198D1C75250B16D5369348 /* FBSDKBridgeAPIProtocolWebV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A31552A8B1F14534DDBA1DFC4E09C195 /* FBSDKShareOpenGraphContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 10EABBE60B88CF3D2AF469F17208ADE9 /* FBSDKShareOpenGraphContent.m */; }; - A3353245628DEA268387441F4EF31877 /* PFSQLiteDatabaseResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 1300CB87D7929FE78AD13A425DD18939 /* PFSQLiteDatabaseResult.m */; }; - A41BB882FD7A74A2F25113D6A5644F7D /* PFObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = A73585EAE72B8B707372B14CD35D1CBB /* PFObjectState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A466E7239F778C5E117BA4008114B272 /* PFPushPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D5D2BA73D92C41B2C18785A9F6A34F3 /* PFPushPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A4A05FBBDDB993E56073550A63C1727E /* PFObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 70CE433A9DEB32F93FB37B35D6987006 /* PFObjectUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A4AA61EF4E7E175383F829835B3690B6 /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CC97C072FD18D2A4B73F527FCCF25A7 /* FBSDKCoreKit-dummy.m */; }; - A55D4E06A15BD0D7189518E2B96DB8A3 /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = 271C2DE3C7E7DE81A83712AE674A962A /* FBSDKWebDialogView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A56E60590F48B3C632A71A0B970F8E90 /* PFURLSessionUploadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B53B46467C6E67E66194FAC567CA3CE /* PFURLSessionUploadTaskDelegate.m */; }; - A5904B7145B927AF58B5B7F952A198E2 /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 272643F56613CA0D336AE3DBF19DC404 /* Pods-dummy.m */; }; - A5A2E68EC92D877AE2289A67BA94C9E7 /* CAAnimation+YALTabBarViewAnimations.m in Sources */ = {isa = PBXBuildFile; fileRef = 581431A48237CC104D54A0C2870FDF20 /* CAAnimation+YALTabBarViewAnimations.m */; }; - A5E23287231B8CED31D97C44BA2702F9 /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 16AA64D1CEC68C44DEDAD61DAFB42709 /* FBSDKGraphRequestConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A5EF7E6ADB37EC0A0DE6145812D8998D /* FoldingTabBar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B5C46025996A2C2D010B0AE8FF485D39 /* FoldingTabBar-dummy.m */; }; - A6381412CBAD67981B189C3D03FF02B6 /* PFEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 75C40E2C04EF1F38C17C8E45D198B60E /* PFEventuallyQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A661008071892B0148336A0636FC59A1 /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ABE21AAB21F6820C93F75F77BA84A8C /* FBSDKIcon.m */; }; - A6A403231A96C6C21C83BAEF0BB1093F /* CAAnimation+YALTabBarViewAnimations.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ACF71F0DC4813EA623149F93F528587 /* CAAnimation+YALTabBarViewAnimations.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6D8B881BC31F26E99F56A4B5144F72D /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BA2696770D8582A18F63F39A1AE5A973 /* FBSDKAppEventsDeviceInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A71645666E899BA6FCD0A105BCF4554D /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 457EA6762682C1C676C5980F65593923 /* AFImageRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - A721709FC277E75DE5C95BB094C3D554 /* PFAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9687B38FD53EC72E99246120219AFE41 /* PFAlertView.m */; }; - A72805273E466C273A4B10C6ACB993AA /* FBSDKShareAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = B0217E33F4AEC22A7E47353C29C06863 /* FBSDKShareAPI.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A734638E2FD9CD1F9174C76669F0DF6B /* PFObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AD43C7473FB3333A13A263F3DED7A13 /* PFObjectController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A75FE2B82568636BBA4E284DD4E782B8 /* PFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E632D3BFE8814A4C59897AC48C2FEAB7 /* PFObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A7730AC6B2549789F043366A4F6C0654 /* RKMappingOperationDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = B4752C6F4E6E53E7A4CD10A743CBB4C4 /* RKMappingOperationDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A7A7934DF6531ABC1DD87345712ABAC9 /* lcl_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BFC75DE2FA5676B4D6C11BB9AA254E8 /* lcl_RK.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A80A4BCE5F0BE99CC5D0D79ABC6EFC84 /* PFKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 36F6F2D4FA38537FEE30DC609BE6E066 /* PFKeychainStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A8FB9C2DF4996A5647C43D1D20B34154 /* FBSDKTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = B5C44FD3FAB358E3B466C4655865D9C1 /* FBSDKTooltipView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A8FFC32B766D8160348983C902A0FBCF /* PFRESTCloudCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 64BCD63E238F4FF3CD5D95CE6BF75584 /* PFRESTCloudCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A9514FF859C895C0BB0BCE528FF507D3 /* ISO8601DateFormatterValueTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D7D9AD22022709F66EBFB6726D41E5 /* ISO8601DateFormatterValueTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A9821C932984F979E72D5984C1E3A87E /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = CFBF92A39FCC2FB32797855AB85DCAAE /* FBSDKIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A9D01434F1CFFFF1277E3429A43FA1C0 /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9826CDA12FAA5BC9CEF003E172733136 /* FBSDKAppEventsStateManager.m */; }; - A9F693EAD2DA785A4DC3C32E334C7B91 /* RKMapperOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1960AF182D01226FEBB84BF5AB083402 /* RKMapperOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - A9F8CCF3E9E7A1F8BB906AE75CDD76A1 /* PFMutableQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = 860438E9D197650BC7168E76CA8F76E1 /* PFMutableQueryState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AA196672E44A737889F2795FEA012F6D /* PFAnonymousUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 24019153F5EA642D0DE4B7AA9C56FE37 /* PFAnonymousUtils.m */; }; - AAEA1275B8DBCEDED978E0E5967D1440 /* FBSDKTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = F19E08580DB71ED59755E30D19440C85 /* FBSDKTooltipView.m */; }; - AB54E487727ABF1E4455A951FFEF2C82 /* PFRESTObjectBatchCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 74ED9759C7FE5F4ED33138ACAA88C82F /* PFRESTObjectBatchCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AB61AD540531ED95F49168BD4C8C1936 /* PFOfflineStore.m in Sources */ = {isa = PBXBuildFile; fileRef = C18D83A16673A9F0545F5AAC55CAF2F0 /* PFOfflineStore.m */; }; - AB7CAA7D0CB1D37DB84BF83644CF6E41 /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = DF22EF5561792630E4B16C5A5D546054 /* FBSDKAppEventsUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AB8D18ED889E13CC5F738DD1A59CC510 /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = A3E2D61AF8A35A030529BBF31DCB63EF /* FBSDKGraphRequest.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ABBA98083D66AA8745D3CE85508A4B54 /* PFFileController.m in Sources */ = {isa = PBXBuildFile; fileRef = FB2D447FC39896FA1BCA5534A076AB55 /* PFFileController.m */; }; - ABEF7325D5A438C60A9689BE4AF23E4E /* RKErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DC05CB9225FAFC12C400FAE32AD0626 /* RKErrors.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AC0D3A56A07AF56CCCB9E6A24C68C969 /* PFMutablePushState.h in Headers */ = {isa = PBXBuildFile; fileRef = 84DE8F6C85087D8851CE8C93EF867DCD /* PFMutablePushState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 977939FF92D57042F939439588EB0E6F /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 82E57F9588CEC77612BC5E9A20CCC2E5 /* AFJSONRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 97996933B25E24DAF9D18F8E188B03CA /* FBSDKMath.m in Sources */ = {isa = PBXBuildFile; fileRef = ADAFAB54F5C5506CF7186CD16CA90EFA /* FBSDKMath.m */; }; + 98350E1EE789CEB57D91ADF6F225D62E /* FBSDKShareError.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B843EB1DFCFEE6E5EE55AC6767E4E13 /* FBSDKShareError.m */; }; + 9934291C79A7EBE51544EDDB2193FD01 /* PFUserConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CA0A29FC7FC84E10BBE7CB9F915C818 /* PFUserConstants.m */; }; + 9988B7041D7B470C3F7D1938D965F654 /* PFMultiProcessFileLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A5BA6A301883961C6DA165D6089A985 /* PFMultiProcessFileLock.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 99D055FF3D067DC24E05819741E06945 /* PFRESTConfigCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E03D377B70A81B7EE7DF0A8F510E529 /* PFRESTConfigCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9AB561BA236CB930E21B38DE886155A6 /* FBSDKViewImpressionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = CA3CDC2D78E68FD7654C42F67C29EF3A /* FBSDKViewImpressionTracker.m */; }; + 9B516F3168787E2C9732AC0C00479971 /* FBSDKAppLinkResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 5783E79BEDB98581985EEC5EEAD67953 /* FBSDKAppLinkResolver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9B7B596E21B20063D8870D27F93990BF /* FBSDKAccessTokenCacheV3.m in Sources */ = {isa = PBXBuildFile; fileRef = 80E3A4DA55D79A2A163A82080683C403 /* FBSDKAccessTokenCacheV3.m */; }; + 9BFBEB3B8ABB7F24555374DAFDEE5A43 /* PFACL.m in Sources */ = {isa = PBXBuildFile; fileRef = FD8688B0EFB589FA74DDBEE72083D4A3 /* PFACL.m */; }; + 9CBF1E478681F7C22EC2F5B1303DBEF8 /* PFPushUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4235B0900E27A7ECBA96EAFDECF2D5A0 /* PFPushUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9CF9ABEBAA86E37078F793BAF2C4F18B /* ISO8601DateFormatterValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = E4C5528C376F1D824C32FC5049A22958 /* ISO8601DateFormatterValueTransformer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 9D1E20F07E1C09F60E2F35F6119A0F42 /* FBSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1F87198E6B2738076E71BB2C4A8C71 /* FBSDKError.m */; }; + 9D3D9A7D232F06FADE0D0D036D96A598 /* PFSQLiteDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AD029CD6F8ADD2E864E5FE1699BB70D /* PFSQLiteDatabase.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9D8543C5F547215DBD30C9C18E525F33 /* PFURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 7981192FA1E3FF14D8C9EBA4511FD33B /* PFURLSession.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9D89845489A310CB56E647F143BEA677 /* PFLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = F9C6A17A0DB2E5C15C0B38508DC16669 /* PFLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9DA2B0C972429DD7AD7064E9E09475C3 /* PFPush.h in Headers */ = {isa = PBXBuildFile; fileRef = FE71E48A323238BEC2BB8D62940ED886 /* PFPush.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9DC8CA8457330A93C4CCC547F530F6A0 /* TKTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = E83EDDC94D7F78C9A89A9BBF973667B6 /* TKTransition.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 9E1DFD298D2638A443CF2EA5B47BFC51 /* FBSDKCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 860BB3AFC2DD08EF4599D8D42484D2CC /* FBSDKCrypto.m */; }; + 9EFC61F27D88241A96D3FB13EF831E02 /* FBSDKProfile+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C4E2E6E86AEBB3B50EE86E4B1074A32 /* FBSDKProfile+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9EFD8B6E9A0DFB23D0458D0071283130 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E089DC06AFABF3AB162039B0DCA20D14 /* AFNetworking-dummy.m */; }; + 9F04CB08F3037EDF755036F82BCC418F /* PFPushUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = A3152B830DE11B9029E12D3C5B928C17 /* PFPushUtilities.m */; }; + 9F309454D3B0FA1C2701DD3226C97074 /* PFCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = 37382D15DA0BBCC18167A1B61E72CD64 /* PFCloud.m */; }; + 9F3D3656F5864DED6AF668D1AB68975E /* FBSDKGraphRequestConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = B40775302C0516B1FB09E3523DC34D30 /* FBSDKGraphRequestConnection.m */; }; + 9F6482097A50B68DAE48BE9D3CB3D28D /* RKMIMETypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AD9092DA1F9CCC04506CAA7CAD0EC83 /* RKMIMETypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9F836AA840436BDA62D7D6325F233221 /* PFUserFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AC4F0EFC27421FCDFE376464524DBB /* PFUserFileCodingLogic.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9FCAE5105CB7AB9D7B5CD6457B323B06 /* RKObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B037353120BA03ACEF0F5DA52B84530E /* RKObjectUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9FE10640F0AED83B16480FFAD9CEA3CD /* PFFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B818BE16D0901DD3F720DF4447B592B0 /* PFFileManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A00E98DC15CC981738CFBE96AEB16EB6 /* PFPushChannelsController.h in Headers */ = {isa = PBXBuildFile; fileRef = DAE43287C4A621BABEBFD4D7ACA4D0CB /* PFPushChannelsController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A03EE16F31569592C179BC824D019DC9 /* PFRESTUserCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = D3AD3AB61D09EFC9C322C57F9239AFF8 /* PFRESTUserCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A0F75CBE72EE4F9B74838F6F01191D06 /* BFAppLinkReturnToRefererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E3D7476264442440AC1374D1E0418A1 /* BFAppLinkReturnToRefererView.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + A161B6BDF507ABF1322BB74A9D437D4B /* FBSDKShareError.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D612FDB5856A0B0DC71C9A83AF67537 /* FBSDKShareError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A1732411203D091E1FC231EB20F5A8C7 /* POPCGUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 05A46A1CCAAB75FBBA2C67F460435143 /* POPCGUtils.mm */; }; + A1752CBBCEED5A344FDA136B0EF771A5 /* PFCurrentUserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FF8DA1F7EEE96CC61CEEB687513A615 /* PFCurrentUserController.m */; }; + A18206D679C80B4AFF6654B5677DBFDB /* FBSDKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = CA8D44F0BCF9802F38A1799B6EBF1407 /* FBSDKInternalUtility.m */; }; + A1B7647A3A40381C4430FBDBF794C699 /* PFCommandCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B8C1F1B3446748EE4B4240C0CC009D67 /* PFCommandCache_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A1D7AF47B734259F42226B7577014F7C /* PFUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 092AA11ADB8FDDCC538A0ABDD75F38E8 /* PFUserController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A1FCC931AC4A1A8D148E28C4572BB307 /* FBSDKShareDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B9C80D740936B42747C456E06BD4210 /* FBSDKShareDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A248810839C65E5881B7B7B3F264078F /* FBSDKBridgeAPIProtocolWebV1.h in Headers */ = {isa = PBXBuildFile; fileRef = F7114C7234DA9F23563BF6C254E6458A /* FBSDKBridgeAPIProtocolWebV1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A2B99500387BF0FB3062AB1D0FFD57A5 /* POPAnimationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = F3D3B7CDCE9EF138FF8BB043F7239498 /* POPAnimationEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A31552A8B1F14534DDBA1DFC4E09C195 /* FBSDKShareOpenGraphContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 26576E563FF51DD9C6683E959913991D /* FBSDKShareOpenGraphContent.m */; }; + A3353245628DEA268387441F4EF31877 /* PFSQLiteDatabaseResult.m in Sources */ = {isa = PBXBuildFile; fileRef = C60BCCB74CDC88B04B7014C507F2D137 /* PFSQLiteDatabaseResult.m */; }; + A3C1C7BA97AC39DFAB85B13E827BD182 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 733D51F628A8649F5A0790296BA3E42A /* CFNetwork.framework */; }; + A3F739BF4CBFB653314B4737DABB5E7B /* RKTestHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = FF461E4535F2215F6A9DDAA832E1BC7F /* RKTestHelpers.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + A41BB882FD7A74A2F25113D6A5644F7D /* PFObjectState.h in Headers */ = {isa = PBXBuildFile; fileRef = 81E010F8251FD4453C9DDE44ED09C4F4 /* PFObjectState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A466E7239F778C5E117BA4008114B272 /* PFPushPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B791C6AA6D3B48C2C1AA9496E0790AD /* PFPushPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A48B34E8A4056CAF37BF815D80F851FB /* TKEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = FBBB3B26B24BB1791ACE441DFDA19FF2 /* TKEvent.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + A4A05FBBDDB993E56073550A63C1727E /* PFObjectUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = D65E69134BE531C727A15EAC5D6BD404 /* PFObjectUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A4AA61EF4E7E175383F829835B3690B6 /* FBSDKCoreKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 231F7C139C4CE6856490CCC6331A4BB0 /* FBSDKCoreKit-dummy.m */; }; + A51B5663618D00E23D7124EC97861DD4 /* RKDynamicMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D6A9F671AC5AAF2E4BDEE1D46C1A2DF /* RKDynamicMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A55D4E06A15BD0D7189518E2B96DB8A3 /* FBSDKWebDialogView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DE9B680DB183FA614D58C42EADD38D7 /* FBSDKWebDialogView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A56E60590F48B3C632A71A0B970F8E90 /* PFURLSessionUploadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F129E4F0636DB79526F8F6270198B942 /* PFURLSessionUploadTaskDelegate.m */; }; + A5A2E68EC92D877AE2289A67BA94C9E7 /* CAAnimation+YALTabBarViewAnimations.m in Sources */ = {isa = PBXBuildFile; fileRef = 26B6710576834D59FB5352DD3F5EB069 /* CAAnimation+YALTabBarViewAnimations.m */; }; + A5E23287231B8CED31D97C44BA2702F9 /* FBSDKGraphRequestConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = FE89E1667DF47EC79AB1E8C414DE79EB /* FBSDKGraphRequestConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A5EF7E6ADB37EC0A0DE6145812D8998D /* FoldingTabBar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FDF375C76C5BA4A7F1EA1C46DC3B142C /* FoldingTabBar-dummy.m */; }; + A6381412CBAD67981B189C3D03FF02B6 /* PFEventuallyQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = A43A3FE9CF5B7E721E9179EB461EBDD7 /* PFEventuallyQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A661008071892B0148336A0636FC59A1 /* FBSDKIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = F2D002F7CD0CB8A3551420036A594D40 /* FBSDKIcon.m */; }; + A6A403231A96C6C21C83BAEF0BB1093F /* CAAnimation+YALTabBarViewAnimations.h in Headers */ = {isa = PBXBuildFile; fileRef = 955C4C780B4D5A0582BF89B0379CB61E /* CAAnimation+YALTabBarViewAnimations.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6D8B881BC31F26E99F56A4B5144F72D /* FBSDKAppEventsDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C1B7244F3402CF0B20BFF0228719CDD1 /* FBSDKAppEventsDeviceInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A71645666E899BA6FCD0A105BCF4554D /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F0414F682EAAC899BF6D1350B23F4920 /* AFImageRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + A721709FC277E75DE5C95BB094C3D554 /* PFAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FBA963311C705B8BC3B0E2FC0EB8529 /* PFAlertView.m */; }; + A72805273E466C273A4B10C6ACB993AA /* FBSDKShareAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCED2B89C49FCB98FAE1186D1725F5B /* FBSDKShareAPI.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A734638E2FD9CD1F9174C76669F0DF6B /* PFObjectController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8334729245B982D2786A77F61C281C /* PFObjectController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A75FE2B82568636BBA4E284DD4E782B8 /* PFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = C5363E7D4FF99528A9F857EE9F2DF437 /* PFObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A7B200E0CE52F38A4D17E432C3D5D44B /* RKHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DDC10303447DF4E3E657F2B4AD92925 /* RKHTTPRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A80A4BCE5F0BE99CC5D0D79ABC6EFC84 /* PFKeychainStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C08FCA3A865F9181B3EAED5D081E6DB /* PFKeychainStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A8FB9C2DF4996A5647C43D1D20B34154 /* FBSDKTooltipView.h in Headers */ = {isa = PBXBuildFile; fileRef = DF3BBA8D585F58897AE3BA414EDE35C2 /* FBSDKTooltipView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A8FFC32B766D8160348983C902A0FBCF /* PFRESTCloudCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B1E4C81276B30550CB3CDA51070D862 /* PFRESTCloudCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A9514FF859C895C0BB0BCE528FF507D3 /* ISO8601DateFormatterValueTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = DAB70DB4EE93F869DBC66617E527E62E /* ISO8601DateFormatterValueTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9821C932984F979E72D5984C1E3A87E /* FBSDKIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BA86EF4EAFD3D4475A169859BB0B633 /* FBSDKIcon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A9D01434F1CFFFF1277E3429A43FA1C0 /* FBSDKAppEventsStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 57EA8E1B5446775F4608110823A9BF8C /* FBSDKAppEventsStateManager.m */; }; + A9F8CCF3E9E7A1F8BB906AE75CDD76A1 /* PFMutableQueryState.h in Headers */ = {isa = PBXBuildFile; fileRef = AA02D2B63E8F9A35484FF74BB175EDCF /* PFMutableQueryState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AA196672E44A737889F2795FEA012F6D /* PFAnonymousUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AA9ED123D1A01B9CE0864DF21669E32 /* PFAnonymousUtils.m */; }; + AAB25408151750ECBBDAD5A765D5C652 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + AABB7281DE92C99CC47D5985438FFAF8 /* RKMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 40C31A1DA0DE91B3BDC70194B9B9E75B /* RKMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + AAEA1275B8DBCEDED978E0E5967D1440 /* FBSDKTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = BFBDACDD0805704D189CA36FE17373B8 /* FBSDKTooltipView.m */; }; + AB54E487727ABF1E4455A951FFEF2C82 /* PFRESTObjectBatchCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 1635AF96EB71FB3FEBEE52A4395CFA1B /* PFRESTObjectBatchCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AB61AD540531ED95F49168BD4C8C1936 /* PFOfflineStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 632C18854DE2E319E9B6834A93514CC5 /* PFOfflineStore.m */; }; + AB7CAA7D0CB1D37DB84BF83644CF6E41 /* FBSDKAppEventsUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = A16A70655423A834331503E4979C4422 /* FBSDKAppEventsUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AB8D18ED889E13CC5F738DD1A59CC510 /* FBSDKGraphRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = CF6DFEAD49E3B96B670A4AB662D78229 /* FBSDKGraphRequest.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ABBA98083D66AA8745D3CE85508A4B54 /* PFFileController.m in Sources */ = {isa = PBXBuildFile; fileRef = 39F780E56F26B16CAF1CF2F0EBC58660 /* PFFileController.m */; }; + AC0D3A56A07AF56CCCB9E6A24C68C969 /* PFMutablePushState.h in Headers */ = {isa = PBXBuildFile; fileRef = 240CCFABDE66FE6ADE38A4B02CB89687 /* PFMutablePushState.h */; settings = {ATTRIBUTES = (Project, ); }; }; AC70F2D05DDEE9CA1E15F5FBC259E974 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16621039C0E3312C216165BEF8D567DE /* SystemConfiguration.framework */; }; - AD0387E79E49576C00BEAED9E903F6B9 /* PFFileDataStream.m in Sources */ = {isa = PBXBuildFile; fileRef = CD9BD9332CB70D61FC117651727426D5 /* PFFileDataStream.m */; }; - ADA73C3403D0DCBA9ADC9737B71F448B /* PFRelation.h in Headers */ = {isa = PBXBuildFile; fileRef = 40C7C5CFB4E466FFB010AF6A0FD9D026 /* PFRelation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AE279B6C3893C1BB12A7D761A8F70EA1 /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = 504CFD03CAFDA04600823DA3FA4724B7 /* FBSDKError.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AED1CD8AB9480299EB225BD4EDF8F195 /* RKDictionaryUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D8A4BBD034C037A44B441447EDBD2AC /* RKDictionaryUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - AF896EF80A89E677C2FEAD7D25B5CA13 /* PFObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D65511E82CA8F7BA0B1D3A4D488BA84 /* PFObjectController.m */; }; - AFD33F9C5B99DD2201D2F07DBB808E79 /* Parse-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C5315150FD5B5F202952CF7B1140BA5 /* Parse-dummy.m */; }; - B00E930CCC7EF81612BF8392339E17A8 /* PFSQLiteStatement.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E3AF7DFDFAF8657D842E11B07B72C49 /* PFSQLiteStatement.m */; }; - B05B85B93FE4C40364989A851D0E4C95 /* FBSDKLoginConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = C93BEBD4E67678D6A0AF73501738D481 /* FBSDKLoginConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B072A694A0A46131BB3A56636471FAE1 /* PFGeoPoint.m in Sources */ = {isa = PBXBuildFile; fileRef = F120433DCBA609FFCA1AC8D7E66C715F /* PFGeoPoint.m */; }; - B09BFA78A6FA4E03872B3C6813F9CF52 /* ObjectMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 1801665BFA99C3E5F261CACB58723B11 /* ObjectMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B17336576943ADD8ABE250E808D8B72D /* FBSDKAppInviteDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = DA6483DCB5207821171D8E1785A354EC /* FBSDKAppInviteDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B1ACA353E817624A71E6EC76F82A051F /* RKBenchmark.h in Headers */ = {isa = PBXBuildFile; fileRef = E1FB03A638286D34951A35082DC8829E /* RKBenchmark.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B1B5542A3966742AC81F380E955AA85B /* BFAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = FE83EAA7D7F81F996C8A1FCC962D6EED /* BFAppLinkReturnToRefererController.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B1E2BB1A1186B0C02B35C1C6F5509D36 /* FBSDKLoginKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CF7867AD1B16B0D2CCD3E12388E307E6 /* FBSDKLoginKit-dummy.m */; }; - B220008A1D3DD1B6628E2AC2A64A02AA /* FBSDKShareConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F676232AD2D4E768D123E3880A987ED /* FBSDKShareConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B25E3751AB01594311494F5E9AFC5322 /* FBSDKLikeDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BF1F39539444FAA093EACF74048A6D6 /* FBSDKLikeDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B28E7BE90D0898F34164A3649D16E978 /* FBSDKLikeObjectType.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CE33DAD07C0504380B377D5B4E23F61 /* FBSDKLikeObjectType.m */; }; - B2C7E9065BD6BF8E3F3017B802865B56 /* FBSDKAccessTokenCacheV3.h in Headers */ = {isa = PBXBuildFile; fileRef = 81E97AE375AD2C365E560E20CFA6DD4A /* FBSDKAccessTokenCacheV3.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AD0387E79E49576C00BEAED9E903F6B9 /* PFFileDataStream.m in Sources */ = {isa = PBXBuildFile; fileRef = D24D9A1393699B9007901EB5221D9018 /* PFFileDataStream.m */; }; + AD94C0E58E9E796C2461FB990370B8B9 /* RKDictionaryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B5AA14CFC28475D9E28E32A363674B8F /* RKDictionaryUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ADA73C3403D0DCBA9ADC9737B71F448B /* PFRelation.h in Headers */ = {isa = PBXBuildFile; fileRef = AC8C608A0D3BE700536D0C6D4011931A /* PFRelation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ADDFED5198FA5284E28022251BA98C1D /* RKLumberjackLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = EE16E8E41B610CE73E8BC061D6E6E102 /* RKLumberjackLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AE279B6C3893C1BB12A7D761A8F70EA1 /* FBSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = 1851DD5C5804EC9A837131EDAC8D3EDB /* FBSDKError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AEC8FB690EB9BAD0F86F1B972089BD4A /* POPPropertyAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 59F15D7F5CA85CC8436BD1872518AB18 /* POPPropertyAnimationInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AECC0656F68B2EF64F2FE95EE733659A /* RKPropertyMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = D4D4E125C0EFD510E0171C24783AD02F /* RKPropertyMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF896EF80A89E677C2FEAD7D25B5CA13 /* PFObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = F9F517D67552371A385D10A6D780C46C /* PFObjectController.m */; }; + AF923C2C11D76B65500D200EF0BAFA33 /* TKTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 76BDB3E82FE4A935AACD2F637F371589 /* TKTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AFC9F60694818B7903ED6065CA9E7E38 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; + AFCC73E1C178EA83628FBECB44C75A50 /* RKPathUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = F288F2786DB87278DEB0D83B15A2B5B2 /* RKPathUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + AFD33F9C5B99DD2201D2F07DBB808E79 /* Parse-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD8C56BA64752CBF457FB1F3473747F /* Parse-dummy.m */; }; + B00E930CCC7EF81612BF8392339E17A8 /* PFSQLiteStatement.m in Sources */ = {isa = PBXBuildFile; fileRef = 06FB17807D8F9BB90C006F1AA1422EEB /* PFSQLiteStatement.m */; }; + B05B85B93FE4C40364989A851D0E4C95 /* FBSDKLoginConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 25070753B1B37A1665F1F5332C0EF515 /* FBSDKLoginConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B072A694A0A46131BB3A56636471FAE1 /* PFGeoPoint.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B650BB26CA49F23280F611BC06CAB7A /* PFGeoPoint.m */; }; + B0C1C3993C766809A801540862C105E2 /* RKRouter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A36A67D8095CA8BA88F3D9C867BF723 /* RKRouter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B16764D185993A3DA87BD56929F05480 /* POPAnimator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 996415B7247FE7D0C37780B180517ACB /* POPAnimator.mm */; }; + B17336576943ADD8ABE250E808D8B72D /* FBSDKAppInviteDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 49293A25955435D7FC5E29D841FA4456 /* FBSDKAppInviteDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B1864DAD1E71AE119D92AD90D4075B44 /* RKErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = C31FC859AAD2E2012636FC6B877D6EB6 /* RKErrors.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B1B5542A3966742AC81F380E955AA85B /* BFAppLinkReturnToRefererController.m in Sources */ = {isa = PBXBuildFile; fileRef = 91D5B36C33B97E32AFA561C868667F87 /* BFAppLinkReturnToRefererController.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B1E2BB1A1186B0C02B35C1C6F5509D36 /* FBSDKLoginKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 880C326DB82974026154DE2FEE6DF8EA /* FBSDKLoginKit-dummy.m */; }; + B220008A1D3DD1B6628E2AC2A64A02AA /* FBSDKShareConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 29B13B33590257BF7A80C3602DC87B09 /* FBSDKShareConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B253780C6017BCC8E3B9457E3048462C /* TransformationMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6A2F4083D494D045689BC3A072187C3B /* TransformationMatrix.cpp */; }; + B25E3751AB01594311494F5E9AFC5322 /* FBSDKLikeDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F1B1BCD1E0ECE22C24CC82032B14A95 /* FBSDKLikeDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B28E7BE90D0898F34164A3649D16E978 /* FBSDKLikeObjectType.m in Sources */ = {isa = PBXBuildFile; fileRef = B8DA6BF199DF0CAB4F3B6FE8589F18F9 /* FBSDKLikeObjectType.m */; }; + B2C7E9065BD6BF8E3F3017B802865B56 /* FBSDKAccessTokenCacheV3.h in Headers */ = {isa = PBXBuildFile; fileRef = A0356870F75E493C4A0C432FFFDF4798 /* FBSDKAccessTokenCacheV3.h */; settings = {ATTRIBUTES = (Project, ); }; }; B2DB66509B953232772CC24828B2A2D6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6FDEF44D035ECEB171CF49BE68D54D0 /* UIKit.framework */; }; - B2ECB596CD8B0A8925E2221C87668493 /* PFPinningObjectStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D7CCA908675FF8F62C1721B4D2229BEA /* PFPinningObjectStore.m */; }; - B3539900ACA90E11ED43DD92C1AC3C8C /* ParseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 246B31118F4482AFD1E5B6FBDDEE6EB2 /* ParseManager.m */; }; - B3777DF9804F4FD5656FF7A89A266CC3 /* PFDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = C058566058269B2CA65AE1148198339C /* PFDevice.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B4035BD0031BD154E70AF698B10B48A7 /* FBSDKSendButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DA39AA231A2BC6DEF831A837F406512 /* FBSDKSendButton.m */; }; - B4E61680387E0E5146734C1EB81255C5 /* PFOfflineStore.h in Headers */ = {isa = PBXBuildFile; fileRef = C27E78AB76228CCD047CDFC9941CCB59 /* PFOfflineStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B50EA8AB3CF7CF9162E24421784D4BAD /* YALFoldingTabBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 821E516878F8F964D6941FE6C2AEB04D /* YALFoldingTabBar.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B5983C745D96CF344F4DE9DEF60C5ECF /* PFInstallationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1154985103CE37155F52D0BFC04340EE /* PFInstallationPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B5F68ED030E3466DD38E0179122A8E45 /* RKPropertyInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DF6012AC3FEDDC30928DC38FC317836 /* RKPropertyInspector.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B60C299FB6D6C13D99621CDBF557AB27 /* PFCachedQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = E276164BF784A894BA33B42E12F10CCE /* PFCachedQueryController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B68EF6DB36966D13E557D2247702E8C5 /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1766F952ED7D24BA1223FECFB809EAEF /* BFExecutor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B71F48BE352CE58652003A3A8BE5EDC2 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F323D6CA68A5402E8D8D781B37B2A91C /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B7F654610A8DF8054D47B38623765DAA /* RKObjectManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8286A9C555581B1077CACA650C967E59 /* RKObjectManager.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B84F69EEEA9898307D85749FD54502D0 /* FBSDKLikeActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C12288DE642EF37C6B63C07FF664190 /* FBSDKLikeActionController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B8E9E3E768F9393C56CCF30EF6E92D76 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16621039C0E3312C216165BEF8D567DE /* SystemConfiguration.framework */; }; - B903E58329FDF7F6E815312255B967F7 /* PFCommandRunningConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 2739B66EFCA7F40FAF75E4F39A6A9A7E /* PFCommandRunningConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B91DBAED5B544D03577FAFF5722F865E /* PFMulticastDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 68655B40F89C27D89D53892FD3930D30 /* PFMulticastDelegate.m */; }; - B9A074BC3A31106AEC6667D7684FB0F6 /* PFDefaultACLController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0565BEC2CF133E7552070ADB0B6B25C7 /* PFDefaultACLController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BA348104C2089F3DB71A91E2E7AB4EED /* RKObjectMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 85005E81A14B03A9ADDF308A1C17B784 /* RKObjectMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - BA61EA5F3CCE71914D2E8405C76CE42A /* ParseInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = D1C051EE39EC2369E3712F32F65AAD73 /* ParseInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BA9C553426A8678957BAED9B891E4B96 /* PFReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 9568A44CB835524C00AA887038D28A2D /* PFReachability.m */; }; - BAB82247B24428DCAC2A4F4E9207F60A /* ParseModule.m in Sources */ = {isa = PBXBuildFile; fileRef = D807F253C1FC0EAD584DFA49AC3AFFE7 /* ParseModule.m */; }; - BABA3F412E61C8AF114390901E5EB8C2 /* lcl_RK.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E3A50746719F1DF8EA234DC24662F0A /* lcl_RK.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - BAD9633CD11A33F04613C1E42EC6EED9 /* TransitionKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D639B8AB8EC8DD751AE4F019F908401 /* TransitionKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BAF2CCC3F6782690F1534565B877278F /* FBSDKShareOpenGraphAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 4720A959FBF253E6C8315EC7BE3FFEBC /* FBSDKShareOpenGraphAction.m */; }; - BAFE82F7512A8C98F8C6D46D28F5B965 /* RKDynamicMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 72E01F510DB4DF12750DF5F0ED31E9CE /* RKDynamicMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - BB1151A40AE6E5AA064A5AAC684EEF46 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D3C1AE934C5238738DBEBC420E58024 /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; - BB166C005FECECA9EEC18109D86F3CE6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; - BBD60D3DA8952B0318A965D2F4B9962D /* RKObjectParameterization.h in Headers */ = {isa = PBXBuildFile; fileRef = 305C1B44A7F7E61553779E2EFAA7E6E5 /* RKObjectParameterization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC030E43EB80D6D27AF2D44F80CD7CDE /* RKHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 640B12F7182C4EF36510C06BF87ACDD7 /* RKHTTPRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC852E5C003C0E1C337D9C642F826513 /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = F7E3E2499E10690D5CDBED7CFBB46CF4 /* FBSDKAppLinkUtility.m */; }; - BCC52FD8A4B950C4F0A918C1E7C04A8B /* FBSDKLoginManagerLoginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = F84F292500C57DA9F2C1AF294A4409F6 /* FBSDKLoginManagerLoginResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BD3CB42C142417AFADFDF458A7B580E7 /* PFRESTCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 878B0AD059EDF719C2B350F1235F0A90 /* PFRESTCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BD6D648A05281F2FFA2E3F281BC9019A /* RKMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = A066A1261BC2B943A2C58454D8594E4C /* RKMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BD8A5E25C13BF645294D97EB1ED09CA0 /* PFAnalyticsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7963D53D53339137B7E1A3AB0F520174 /* PFAnalyticsController.m */; }; - BE0F6955D03D6DF536335CAC10A8CFC5 /* FBSDKAccessTokenCacheV3_21.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E780E029F38CD5DC4D44B959AE7B2CF /* FBSDKAccessTokenCacheV3_21.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BE269944FF4E5E554223D2E055E4F1A6 /* PFAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F25D79A6D9350DE097436ED2E549BE1 /* PFAnalytics.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BE28D5E4C90C546FA735DE393B33CDA3 /* RKObjectRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4966479D5117182D9BB2405C57BF9E48 /* RKObjectRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BEBFDE40361511989AD4318B1B5E578E /* PFObjectController_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C1EBD8327430E9BC4CE07572302C3B1 /* PFObjectController_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BEFC0134FE56543E669CD06873F5BB8F /* PFAnonymousUtils_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 466349270C59C68B7BB457BF69B9ABCE /* PFAnonymousUtils_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BF7290A7C875C362F762B2D6C1B991B7 /* PFObjectState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = ACE5B2BD57D84096B68C686CF2A297F0 /* PFObjectState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BFA8895521CECBF82A30964B918DDD3A /* PFLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 985870310481EAF6D1AAD21D98000C42 /* PFLogging.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BFAAE2E16A1F2007BD7CDF1DB8D2CDAD /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = EB7387ED21F22A0C3ACF3899E4EF7872 /* FBSDKAudioResourceLoader.m */; }; - C0575A904CA77375C3DC6B600B99CEAD /* Parse.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CA213D7D985D157E1F5FE2776AE93F4 /* Parse.m */; }; - C09CA6A4AA52E14E894A7A328C0D8178 /* PFFieldOperationDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FB830A71452CCDB67D2616730944824 /* PFFieldOperationDecoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C0C7A1E73D584A4F93A286FA1753D5B1 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 35DC0FA9CFA673AEF41AF09AA45DFD4B /* FBSDKBridgeAPIProtocolWebV1.m */; }; - C0CA4956B32616DC4919F00A7EC9B92C /* PFCommandResult.m in Sources */ = {isa = PBXBuildFile; fileRef = AD4D3C55161D3874FAE6A6D4FA05E974 /* PFCommandResult.m */; }; - C15F9AD9C17E18B25E1EF6B788309E6F /* PFObjectFileCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BE43B9E9A14869E0D43BEAF29841B34 /* PFObjectFileCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C35F6A896E802A315D7EE2BB54CBEFA5 /* AFXMLRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D4A5E0FFDBB5F59ACC2A7671E2EE4ED /* AFXMLRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C412C0A9241FD8CB88314EB3BD8E528C /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D7F94B3DFD758F1C5AED31B6286D251 /* FBSDKWebDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C50BE142E604DE751E9B8AF5DD6B0363 /* FBSDKShareLinkContent.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C8F9BB226F40C4F7CE5B08939D6900 /* FBSDKShareLinkContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B2ECB596CD8B0A8925E2221C87668493 /* PFPinningObjectStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 82EA1A7E2F5B25D7DECB8BE35B3072F0 /* PFPinningObjectStore.m */; }; + B3539900ACA90E11ED43DD92C1AC3C8C /* ParseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 02AEBA17B69A4D55F659D4F44440127E /* ParseManager.m */; }; + B3777DF9804F4FD5656FF7A89A266CC3 /* PFDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = DC4C06AF4A9CCA7E3F9A2C7F97FFCE87 /* PFDevice.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B4035BD0031BD154E70AF698B10B48A7 /* FBSDKSendButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 92D9BAF18D3C2495B07204C2404BFEEB /* FBSDKSendButton.m */; }; + B4AECD7B0079602334FD0CA11106AC3F /* RKPathMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 09BC6A273BD14FEC82E66ADE94F2D7AB /* RKPathMatcher.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B4E61680387E0E5146734C1EB81255C5 /* PFOfflineStore.h in Headers */ = {isa = PBXBuildFile; fileRef = C1D9153F43B4ABADD58C382A1292332B /* PFOfflineStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B50EA8AB3CF7CF9162E24421784D4BAD /* YALFoldingTabBar.h in Headers */ = {isa = PBXBuildFile; fileRef = F7EEEC622363411316A89CF3A6941695 /* YALFoldingTabBar.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5983C745D96CF344F4DE9DEF60C5ECF /* PFInstallationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ABAB9B040DE06F9C8CAD85CCC2D4A4D /* PFInstallationPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B60AAB7F842EAE538F42641F811DBC07 /* SOCKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DD24718CA4BD9604C201D989FD03218 /* SOCKit-dummy.m */; }; + B60C299FB6D6C13D99621CDBF557AB27 /* PFCachedQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9152B5335813665EC6B08F73411A813E /* PFCachedQueryController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B63E72E378C0C4DEBC0EF1A6EE5CAD25 /* POPAnimationRuntime.mm in Sources */ = {isa = PBXBuildFile; fileRef = 54E5949F2C78F11D2017067D065794BD /* POPAnimationRuntime.mm */; }; + B68EF6DB36966D13E557D2247702E8C5 /* BFExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 2775CBEED05B03B513848BE46301ECA6 /* BFExecutor.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B71F48BE352CE58652003A3A8BE5EDC2 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CEB32A7ACC2D1268332E3ED6413E04AE /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B7BBC12792F777B1ACF0CF3C28355EEB /* POPCustomAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 09A74F4E5B1694ED02FEFEE3567FD5C4 /* POPCustomAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B84F69EEEA9898307D85749FD54502D0 /* FBSDKLikeActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = BFAC7C03033A9B1F15075F4565BC1328 /* FBSDKLikeActionController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B85FA9794E00DFF09C3ECB91A3D45882 /* POP.h in Headers */ = {isa = PBXBuildFile; fileRef = 78A05813E9EC11B010C6A344D9AAC05A /* POP.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B903E58329FDF7F6E815312255B967F7 /* PFCommandRunningConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 34467D773B15C784E43F77DA67A5790C /* PFCommandRunningConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B91DBAED5B544D03577FAFF5722F865E /* PFMulticastDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FE71002F43E4EE07FF4CEB964FE6D44 /* PFMulticastDelegate.m */; }; + B9A074BC3A31106AEC6667D7684FB0F6 /* PFDefaultACLController.h in Headers */ = {isa = PBXBuildFile; fileRef = 951E09F02C4842CACF36CAD6D5398E11 /* PFDefaultACLController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BA61EA5F3CCE71914D2E8405C76CE42A /* ParseInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 749A8D41E182E9883688C41D2D257554 /* ParseInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BA9C553426A8678957BAED9B891E4B96 /* PFReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 20FCD32AE2B10221B23EC19A5B380953 /* PFReachability.m */; }; + BAB82247B24428DCAC2A4F4E9207F60A /* ParseModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 67B4C66668FC14A61182B73575A193DE /* ParseModule.m */; }; + BADD59CEDAC52C54651BF484D6490C67 /* RKObjectParameterization.m in Sources */ = {isa = PBXBuildFile; fileRef = 73C100898C88FF4043F6002195DD6293 /* RKObjectParameterization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + BAF2CCC3F6782690F1534565B877278F /* FBSDKShareOpenGraphAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 05D4509ED8E7E863F79C2BDF6FE4471C /* FBSDKShareOpenGraphAction.m */; }; + BAF2D4F797832511A4718AE2F9D4C9E2 /* RKConnectionTestExpectation.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BC4913285E98A56C951839A999352AB /* RKConnectionTestExpectation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + BB1151A40AE6E5AA064A5AAC684EEF46 /* _FBSDKTemporaryErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 19A473DF4573D2A6FDD72DA3BA1C2C04 /* _FBSDKTemporaryErrorRecoveryAttempter.m */; }; + BC852E5C003C0E1C337D9C642F826513 /* FBSDKAppLinkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = F9DBE01AF3666AF5DF673F0B8302A852 /* FBSDKAppLinkUtility.m */; }; + BCC52FD8A4B950C4F0A918C1E7C04A8B /* FBSDKLoginManagerLoginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 826C988F437410449787F4BDCE07E6B7 /* FBSDKLoginManagerLoginResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD3CB42C142417AFADFDF458A7B580E7 /* PFRESTCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C9A888CC23B37A508B946C18FBA51D5 /* PFRESTCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BD8A5E25C13BF645294D97EB1ED09CA0 /* PFAnalyticsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 77DB8925A606DF13F24DBF2AD343EB8D /* PFAnalyticsController.m */; }; + BE0F6955D03D6DF536335CAC10A8CFC5 /* FBSDKAccessTokenCacheV3_21.h in Headers */ = {isa = PBXBuildFile; fileRef = 735D8A9263762B7D4E5C5EDB816A7CB6 /* FBSDKAccessTokenCacheV3_21.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BE269944FF4E5E554223D2E055E4F1A6 /* PFAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = D4AB7EDD51484D69712FC0BAF2EEFB20 /* PFAnalytics.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BE695DFD8590BE457047A5B07B829199 /* POPAnimationTracer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 72B29870F05A80283BE95E71DEBEE1D2 /* POPAnimationTracer.mm */; }; + BEBFDE40361511989AD4318B1B5E578E /* PFObjectController_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 10475FA9B1F63748681C1D95ED038819 /* PFObjectController_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BEFC0134FE56543E669CD06873F5BB8F /* PFAnonymousUtils_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE23EA20C48234573BE370B97423C3A /* PFAnonymousUtils_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF7290A7C875C362F762B2D6C1B991B7 /* PFObjectState_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E37BF385DA04A9EDE7E17A3AD82FB48D /* PFObjectState_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BFA8895521CECBF82A30964B918DDD3A /* PFLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = B92B54D733F8824AD766092F58A3F50C /* PFLogging.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BFAAE2E16A1F2007BD7CDF1DB8D2CDAD /* FBSDKAudioResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = B8046097AB97D9EBA30FEAF579C44F56 /* FBSDKAudioResourceLoader.m */; }; + C03ACB5DC566E5F4BCC725F8A8D6F195 /* POPLayerExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = 79F07C09208B3EA7236791BBBDD1D459 /* POPLayerExtras.mm */; }; + C0575A904CA77375C3DC6B600B99CEAD /* Parse.m in Sources */ = {isa = PBXBuildFile; fileRef = D1B966C2A921DE73042AA8B317E629EA /* Parse.m */; }; + C067F0759FE44C28F074EFF6C754A11D /* POPAnimationEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 996EADA337EAC02210FEC4506EB335B5 /* POPAnimationEvent.mm */; }; + C09CA6A4AA52E14E894A7A328C0D8178 /* PFFieldOperationDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AAE8E50B932782D92F325DCE2EDEBBB /* PFFieldOperationDecoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C0C7A1E73D584A4F93A286FA1753D5B1 /* FBSDKBridgeAPIProtocolWebV1.m in Sources */ = {isa = PBXBuildFile; fileRef = 95FF2C409A7211FB7720DA60E56153C4 /* FBSDKBridgeAPIProtocolWebV1.m */; }; + C0CA4956B32616DC4919F00A7EC9B92C /* PFCommandResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 6273DBD91B70BE5A81E0EF6B816A31E1 /* PFCommandResult.m */; }; + C15F9AD9C17E18B25E1EF6B788309E6F /* PFObjectFileCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = ACE07B046AA72822B46EAC882E565640 /* PFObjectFileCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C195E761865347834BB306A41FBFD8B7 /* RKSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E0DB2127804727AC549721870914323 /* RKSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C234A73209753EDCFE73464F05EA45E1 /* POPAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0C43080C0B2655A28B3CE9D3DD9B32B2 /* POPAnimation.mm */; }; + C35F6A896E802A315D7EE2BB54CBEFA5 /* AFXMLRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = F51C083C4D1E3AAFE06A8F4BDF8EBB88 /* AFXMLRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C412C0A9241FD8CB88314EB3BD8E528C /* FBSDKWebDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = AEB3E3D5DFF77A79169D2E7390145CE7 /* FBSDKWebDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C419D5E278F540F1644BA4741785CC8A /* RKObjectManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A4DD5212BA2630DC90D52AB2A7B05B85 /* RKObjectManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C46A8064365E409811A4E812177A4041 /* POPSpringAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = D3359292FE89A636801514727B628BCA /* POPSpringAnimation.mm */; }; + C50BE142E604DE751E9B8AF5DD6B0363 /* FBSDKShareLinkContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EE26090EAD13C1FFD39BB6A7C89193B /* FBSDKShareLinkContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; C5BCED302898250D42DAB9622E61A2D2 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3849FCCD9604B569E0277015CC30071D /* AudioToolbox.framework */; }; - C63F51531975AE0BE6BC871568A6475D /* PFTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 48CE51C08D38E74BB9D873799C3B56FF /* PFTaskQueue.m */; }; - C66C913D05F70FF30EC65B1143CDC84E /* PFSubclassing.h in Headers */ = {isa = PBXBuildFile; fileRef = E5F9060B3223AC9783E8EC3F9FD5582A /* PFSubclassing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C6976F7772E03E1FE2AB027F7AD1484B /* TransitionKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F6C85F64DFA1EA9920744621BC7D1A3A /* TransitionKit-dummy.m */; }; - C6A4588B17EC2FC562007331CB512C49 /* RKNSJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = C6E71AEE806FFD98620689D854D9722A /* RKNSJSONSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - C72DD6BF1D64A4F33EBF2D6B77A8824C /* ParseManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 94212D75F6067FFA601083EF41CC441A /* ParseManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C7ADD9A2DC3411145922D13FE552AD20 /* PFPaymentTransactionObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 44FCD8E48AE2854E6C68B55DE899278F /* PFPaymentTransactionObserver.m */; }; - C7DCD67DF808CAC96CFFB404088D2CC5 /* FBSDKLikeActionControllerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 262AAA5A94DB64464A971372C0A5C98D /* FBSDKLikeActionControllerCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C8650F51B96E23879C9133719B5CE14A /* PFCommandResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 4143EF2889DC7708FBFDFB6EB6F7F78C /* PFCommandResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C8A8F4BE07EDC15A6921CD68990C0F98 /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = DFD5810B96B239C3591705FE5D26D379 /* FBSDKBridgeAPIResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C8DF39D35A8ACF9F10F8392AF8C407A0 /* PFURLConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B465E244D44A3BE904CFF8C4A48E701 /* PFURLConstructor.m */; }; - C8E9B871537B5C88280E56A9778803A4 /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6447323ED6AD2EC1483AA3C66091EE93 /* FBSDKAppEventsStateManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C920759127C01FDD99644BB6806F24FC /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E758DEF5BEC8EEC9032BAC8EAEAA4C51 /* AFURLConnectionOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - C938FA47C6276A28C9F0E0C1933E3E51 /* PFCoreDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = DA54D490C8B9FDBC6989E68EFA54AF6D /* PFCoreDataProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C95B6FEA0DB3899E1F52C07D40DD4DA0 /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CE1ACDB733D2C97F7C82EA9FB83836C /* FBSDKDialogConfiguration.m */; }; - C9774E7792D3CF37A4D1C7C208FD14E2 /* PFPropertyInfo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 637A71462456BAA98EBD75DD2B6141C7 /* PFPropertyInfo_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C98D3A0AD03C7C00CB3C17CFEDED8552 /* RKMappingOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B43B4FF57FBEA73DE52BF4AEAD1F36C /* RKMappingOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - CA0A64C7187BFF5B6143C3D3A7FF8D94 /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A968895EE338B1992703020E6AA2A9 /* FBSDKAppEvents+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CB3395E1F4E550A3333860410E07904D /* RKPathMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = C480EBF5CDD5C303A3C3A1D7B36A7E80 /* RKPathMatcher.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - CB4B0DCDDB21473382F6B2B6666EC6DC /* PFConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = A711FBFC3588B353719DDFFC023B9290 /* PFConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CB7A2EB58EBA82B7CE519F8C2EEAFBC4 /* FBSDKAccessTokenCacheV4.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CA2B777015AD911501F34BE9E2A08EB /* FBSDKAccessTokenCacheV4.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CBC28D34E7E02B4E254099B15B674080 /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 57F9B8722311F2DE9BFA34CD3DCA5DB9 /* BFAppLink.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CC0225659881638027E96EFF8EE41228 /* PFSQLiteStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8582EC197D28F9D94A384B032F5B2C58 /* PFSQLiteStatement.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CCF1CD4428BA2944666A829E767A6C15 /* PFCachedQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = F6A1AA7E3400E1B0C28309A8DB53D160 /* PFCachedQueryController.m */; }; - CD2E86E2BA9BE8DBAA7FE88993F1E41E /* PFSessionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C400573A5C886A59A391F89D0812135 /* PFSessionUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CD5054A2ECB96B3ABB0B3794A299A822 /* PFHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CA0240612F45CA8F80CC4045A3C4C7E /* PFHash.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CD6F43B3511A0FBF3E573962063BD5B9 /* PFCurrentUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E6629CCD335C17E0B583B60896F6F5D /* PFCurrentUserController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CD70F46AD007D42A6E7E4C03AD654B48 /* PFAsyncTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 817BE16BBDE06E00A285E8DEA40C2A92 /* PFAsyncTaskQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CD714C0FC030441A7466E26DE9A3AC29 /* PFOfflineQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 582FD07A79653DAE823A3A00F9AAB825 /* PFOfflineQueryController.m */; }; - CEA03E2CE5F3081E3865AA30CFDB3576 /* RKStringTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AD39F0020472100496314600E65AF2D /* RKStringTokenizer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CEB3B7738916847B38FA1E13D49981DC /* SOCKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FDC2AC9DD87123DFCCB762335374C3D /* SOCKit.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - CEF61BB75902C8E0148259A5DF63854E /* FBSDKAppInviteDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B632D115A665AE3E0A0F24A1BF865D7 /* FBSDKAppInviteDialog.m */; }; - CF49B64886C0C73CE0EB0549FA20E21F /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 05A01B956AE10C43AD0F5B2B2B7920BF /* FBSDKDynamicFrameworkLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CF49D485A500B363E1DDEF68072F9F36 /* PFSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 4483EB7CE5A6261A9164976F9D35F986 /* PFSession.m */; }; - CF61365D13FDC0E6A145C012AB9B98AE /* RKISO8601DateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7D839938133223C5D03CF7E035527E /* RKISO8601DateFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - CF6A6DAB258596DF234FDDA9F2B214CF /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B20C13881AFBB4E88D5826A0683F11 /* BFURL_Internal.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CFA516A9B6268932E1375EE60F7A31DC /* RKResponseDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 01FEEA6D377107B1A0563028100F1FFD /* RKResponseDescriptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CFFAEE251FC130E14DF2831B504F748D /* FBSDKAppGroupJoinDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = FF5EAF38BE17B63D9DB9D69544387A2B /* FBSDKAppGroupJoinDialog.m */; }; - D041A6307B8BE12B6F1D2C7B11DB335F /* FBSDKLoginManagerLoginResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 702E8ADADAF9B688368323A9218E6461 /* FBSDKLoginManagerLoginResult+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D052ADE6387927B8A72F291AB6D821EF /* PFConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9193281C25815834A39FE54B319DD33D /* PFConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D16EF56685DA7EE0C6F714819F926216 /* PFURLSessionCommandRunner_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C79111BD3BBEC8AAB595BAD4F5BBFD90 /* PFURLSessionCommandRunner_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D183B6B66F20B85A64F5B7603D0A473B /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = D4B02834ED165224ED2B72E17A23F1C7 /* FBSDKDialogConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D1E16869A350E851F31AE83FAB93361B /* PFOperationSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 96725FE5D9936FFB88E9EF3C7354C6BF /* PFOperationSet.m */; }; - D1F17C848BA03A0D38CC8D8B815B75C8 /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 59A54DFF04E955ECF7F946017F365A27 /* FBSDKMath.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D224C6471A4DA408043B4E72EA97721E /* PFBaseState.m in Sources */ = {isa = PBXBuildFile; fileRef = CAECEB62E59C8EBCF2BFBB361AC28C39 /* PFBaseState.m */; }; - D270E51BC7362F767D5429DF7A368E0B /* PFBase64Encoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 442FE8495BC41626A686B84CE00354C4 /* PFBase64Encoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D2C8A050CA49DB3967B01D9B9354FC16 /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = D31B782B1DDF351A513DA07076DEB77A /* FBSDKViewImpressionTracker.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D2DF8F3B252BED46B455366674FC5F8D /* PFLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 49A809ECA636BA098C492E0709054E30 /* PFLocationManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D33E2DE9B21F540B2BF1812B90F33155 /* PFURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 333FAC024F4389EAD8F3D15D9F29C1D8 /* PFURLSession.m */; }; - D3CBA0C9A2F20A2AE8D9E8FA5F2326DA /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = 4523E95A8F9A0D756D54DFC5E768BAEB /* FBSDKKeychainStoreViaBundleID.m */; }; - D4163483905F3CE49898DD8AAC0E0910 /* FBSDKAccessTokenCacheV3_17.m in Sources */ = {isa = PBXBuildFile; fileRef = B4D5CA49244C779E343DF9F173C32D69 /* FBSDKAccessTokenCacheV3_17.m */; }; - D41A41DB158B8E95575669C635CCD82D /* PFURLSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 931878F83D6F6F825E3F681B771690B9 /* PFURLSession_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D4315EE9D6AA73520E3C28206BB12A2E /* PFFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CB99487DF93544382D4E7BB83E98DDE /* PFFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D466AEB0B97EDC9663AFFD5F94C04630 /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 94AC9DE3CACB9F94683FD063FBB0D29B /* FBSDKErrorRecoveryAttempter.m */; }; - D491E4080F061A2DA0BE31AC5D94DEA7 /* RKRouteSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 307A4292CDEB528BBF94D77971EA42D8 /* RKRouteSet.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D5101DAEAC2C4A3667D2CDB64B5B0F92 /* RKMappingResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 71C2E7C3225F1C71AB7801BD548C40BF /* RKMappingResult.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D57E377DBC5DFE3FE279AA79A92A9BB3 /* RKTestNotificationObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = F62A65D495C27089A10FB5943BF3A012 /* RKTestNotificationObserver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D5DE272410B216A538955743C7C9574F /* PFFileStagingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 27B39579BA1A116F78E9C52D8518C9D8 /* PFFileStagingController.m */; }; - D5EE317B7D0E35A376DF8328CEA3252B /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 213CA7050878B04AD0B0FEEFDE26FC3E /* FBSDKAccessToken.m */; }; - D6027C66071A9702E15C8A733DBF6FF6 /* PFPropertyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 03F801D486528ACB735E258BEAE163CE /* PFPropertyInfo.m */; }; - D637A12D921733D3173960A61DB8AE92 /* PFObjectEstimatedData.h in Headers */ = {isa = PBXBuildFile; fileRef = D4ED889D5C4216E8C328B8142E67A9CA /* PFObjectEstimatedData.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D66BEA50BF7F894CCCA235694CF7590B /* PFInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = A126D8590E2C7ECBC16300C2C3A644D2 /* PFInstallationController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D6B9D996B48B90EB489E54CDC7A9D401 /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = C304A10CF6190FEEEE9590529DE3B5EA /* BFTask.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D6C7199C3F4D973B0E6ACA2C6ACF5FF3 /* PFCommandRunning.h in Headers */ = {isa = PBXBuildFile; fileRef = 19333F981C770A5CDAFA1A9B6901522C /* PFCommandRunning.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D7B46B6BD03E88E70CAECBDCED8F4744 /* PFInstallationIdentifierStore_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 586A6FCD3982EF14DD7688A9C35821A8 /* PFInstallationIdentifierStore_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D808382848DE98DF7860D36066C0B58B /* PFPushController.m in Sources */ = {isa = PBXBuildFile; fileRef = 11590B62084307FCCBCBCD4CB7D71BA1 /* PFPushController.m */; }; - D8085207CDC6F2A69B21CC10BF0244C7 /* TKStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = C24ED85DEF7CEFA65A545211A7E9A27C /* TKStateMachine.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D83032130352AB7F72E4AF6EE0024D11 /* PFDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2353E605872B5C10ED350AF2720B1ADC /* PFDecoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D8ADDAF044D6B1B3B763D0334FD8BDAD /* PFQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = D2E0F8156813BEB961019EA1C361691C /* PFQuery.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C63F51531975AE0BE6BC871568A6475D /* PFTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 79A805E2776C2CC27AB7764874C93173 /* PFTaskQueue.m */; }; + C66C913D05F70FF30EC65B1143CDC84E /* PFSubclassing.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C8E5BBEB36882FAEA0C74B322ADC266 /* PFSubclassing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C674B4D84DEE46658392F9A5C6CE6429 /* RKBenchmark.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F6B679BDA82770D971194798F95DC69 /* RKBenchmark.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + C72DD6BF1D64A4F33EBF2D6B77A8824C /* ParseManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 23397924D53E7B536CB59C3373E47BCC /* ParseManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C7ADD9A2DC3411145922D13FE552AD20 /* PFPaymentTransactionObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B6241CE08565BB6864AEF668F68FA18 /* PFPaymentTransactionObserver.m */; }; + C7DCD67DF808CAC96CFFB404088D2CC5 /* FBSDKLikeActionControllerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 535545A6AC7290701119A0B61C887EFF /* FBSDKLikeActionControllerCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C8650F51B96E23879C9133719B5CE14A /* PFCommandResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 45A41F6A2E3BF848EF5F335556B27EC1 /* PFCommandResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C8A8F4BE07EDC15A6921CD68990C0F98 /* FBSDKBridgeAPIResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = C01B234F69300CBE9F042A18823A2C64 /* FBSDKBridgeAPIResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C8DF39D35A8ACF9F10F8392AF8C407A0 /* PFURLConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = FF57BE3A8EF2D78A282E7FEE79783DB3 /* PFURLConstructor.m */; }; + C8E9B871537B5C88280E56A9778803A4 /* FBSDKAppEventsStateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A2FAF2092D4C51EAE9E68E2B1EB0071B /* FBSDKAppEventsStateManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C920759127C01FDD99644BB6806F24FC /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AF2857CEDB6464020434166DEB5A36F /* AFURLConnectionOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + C938FA47C6276A28C9F0E0C1933E3E51 /* PFCoreDataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = D8EF0F918739185C24D9BE7DDED005BB /* PFCoreDataProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C95B6FEA0DB3899E1F52C07D40DD4DA0 /* FBSDKDialogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = E0976F3A16E6127C870E863609F006DF /* FBSDKDialogConfiguration.m */; }; + C9774E7792D3CF37A4D1C7C208FD14E2 /* PFPropertyInfo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B4A9DBE857C85DBC4FCF8511B67E7FF3 /* PFPropertyInfo_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C981DB324F5A971F06590A5FDEB937F0 /* RKObjectParameterization.h in Headers */ = {isa = PBXBuildFile; fileRef = 12148D9B34DE0B074CF161C3B74EA2F9 /* RKObjectParameterization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9ADB5534B9078FBD0215BCB05701219 /* TKState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DA5437028A51B95A1C0B0B8B5CB334B /* TKState.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA0A64C7187BFF5B6143C3D3A7FF8D94 /* FBSDKAppEvents+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EC237868E24D8CCBA8AA21DB4F43584 /* FBSDKAppEvents+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB0C14620CFC843788BBAF4AC8A4E6DB /* POPBasicAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 280AB1BDCC3841953AE8E7E78F9326A1 /* POPBasicAnimationInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB4B0DCDDB21473382F6B2B6666EC6DC /* PFConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DA32C8430B17D1CEF6CC0C2F20702C6 /* PFConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CB7A2EB58EBA82B7CE519F8C2EEAFBC4 /* FBSDKAccessTokenCacheV4.h in Headers */ = {isa = PBXBuildFile; fileRef = 8496664844E09F7B412D05544D90E123 /* FBSDKAccessTokenCacheV4.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CBC28D34E7E02B4E254099B15B674080 /* BFAppLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 74089267A9387B60B1CE108DFAA883BC /* BFAppLink.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CC0225659881638027E96EFF8EE41228 /* PFSQLiteStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4788A28C6827C4BF85BEB5920CADFEE4 /* PFSQLiteStatement.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CCF1CD4428BA2944666A829E767A6C15 /* PFCachedQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AECAEEB58E4CB5EFF8D61951BC17DB1 /* PFCachedQueryController.m */; }; + CD2E86E2BA9BE8DBAA7FE88993F1E41E /* PFSessionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = A4B28BD09271EAECA8D4D7EE69556765 /* PFSessionUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CD5054A2ECB96B3ABB0B3794A299A822 /* PFHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A1EA9C9D41AE2090A25AEB7774EFF7F /* PFHash.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CD6F43B3511A0FBF3E573962063BD5B9 /* PFCurrentUserController.h in Headers */ = {isa = PBXBuildFile; fileRef = F105D77D5F0461FECD9BAEB70A50AE87 /* PFCurrentUserController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CD70F46AD007D42A6E7E4C03AD654B48 /* PFAsyncTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BB5593B161ABABA1D0209ECA5074EA3 /* PFAsyncTaskQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CD714C0FC030441A7466E26DE9A3AC29 /* PFOfflineQueryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 136503C1BC94CD505033988EB9C16090 /* PFOfflineQueryController.m */; }; + CDD83F91D134051FA132923E3D4096DD /* RKMappingResult.h in Headers */ = {isa = PBXBuildFile; fileRef = DECD8E5B530D5D0B9FB27660D6A00BA3 /* RKMappingResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CEF61BB75902C8E0148259A5DF63854E /* FBSDKAppInviteDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 3265A08CD5F3A28A6541A985B0B75664 /* FBSDKAppInviteDialog.m */; }; + CF027C0D4F7C6873C8BEA392044BE467 /* RKPaginator.m in Sources */ = {isa = PBXBuildFile; fileRef = A0A6F3B1842359B2087C2C8FE2CDB03A /* RKPaginator.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + CF49B64886C0C73CE0EB0549FA20E21F /* FBSDKDynamicFrameworkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 74338BD705AD4CAADD5CA90BD8EF2D96 /* FBSDKDynamicFrameworkLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CF49D485A500B363E1DDEF68072F9F36 /* PFSession.m in Sources */ = {isa = PBXBuildFile; fileRef = A7780E3BA6732D798F3374CA43890F7C /* PFSession.m */; }; + CF61365D13FDC0E6A145C012AB9B98AE /* RKISO8601DateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6101E1788344FEF66BFB8A3BD80CF650 /* RKISO8601DateFormatter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + CF6A6DAB258596DF234FDDA9F2B214CF /* BFURL_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 44420C2483949613227FDC09A152A3F2 /* BFURL_Internal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CFFAEE251FC130E14DF2831B504F748D /* FBSDKAppGroupJoinDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 610EC8334EB48B27B2BBE37D785AF2B2 /* FBSDKAppGroupJoinDialog.m */; }; + D041A6307B8BE12B6F1D2C7B11DB335F /* FBSDKLoginManagerLoginResult+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C737DBF986FE1FF02706679384A58608 /* FBSDKLoginManagerLoginResult+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D052ADE6387927B8A72F291AB6D821EF /* PFConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 1516B2B4A8F91019AE5E4283AA8F5E5D /* PFConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D16EF56685DA7EE0C6F714819F926216 /* PFURLSessionCommandRunner_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 55116A6D2C15718DE59AF5A2B7B5C7F2 /* PFURLSessionCommandRunner_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D183B6B66F20B85A64F5B7603D0A473B /* FBSDKDialogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = F48BCECC8EA184F5975C3532819CFFA2 /* FBSDKDialogConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D1E16869A350E851F31AE83FAB93361B /* PFOperationSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 108401CAD15D4703C0D17F39835C74AE /* PFOperationSet.m */; }; + D1F17C848BA03A0D38CC8D8B815B75C8 /* FBSDKMath.h in Headers */ = {isa = PBXBuildFile; fileRef = E511AFB10E1282BD8E6813EEEAD607E0 /* FBSDKMath.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D224C6471A4DA408043B4E72EA97721E /* PFBaseState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CDDA61BB7A1F8AD65676757226E8A74 /* PFBaseState.m */; }; + D270E51BC7362F767D5429DF7A368E0B /* PFBase64Encoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A7261E40A7493778EDD34738B42676E /* PFBase64Encoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D279CC9D345EBC4120F60408E3392608 /* SOCKit.m in Sources */ = {isa = PBXBuildFile; fileRef = D011D1FC8B93C93581E9C03ABF791BCF /* SOCKit.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + D2B66E29F3D4324178B40D412922503D /* POPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = C66092953B80DE287E77614DFA2D2FE3 /* POPDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D2C8A050CA49DB3967B01D9B9354FC16 /* FBSDKViewImpressionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = FEE6386026272731739CFEE82C813032 /* FBSDKViewImpressionTracker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D2DF8F3B252BED46B455366674FC5F8D /* PFLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B0314DD062570E8416F2523D03B9EF6 /* PFLocationManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D33E2DE9B21F540B2BF1812B90F33155 /* PFURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 24851AC75A717461DF249C574A7E59B5 /* PFURLSession.m */; }; + D3A453D5AB624E0B9703A6E8542657A0 /* RKHTTPUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB59A851D792D3D60B16A08B9F07134 /* RKHTTPUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D3CBA0C9A2F20A2AE8D9E8FA5F2326DA /* FBSDKKeychainStoreViaBundleID.m in Sources */ = {isa = PBXBuildFile; fileRef = CC228E158C60DD94DF7B3EA5E18D8125 /* FBSDKKeychainStoreViaBundleID.m */; }; + D4163483905F3CE49898DD8AAC0E0910 /* FBSDKAccessTokenCacheV3_17.m in Sources */ = {isa = PBXBuildFile; fileRef = B7B30077DB15E3549CCF53E8707A36D6 /* FBSDKAccessTokenCacheV3_17.m */; }; + D41A41DB158B8E95575669C635CCD82D /* PFURLSession_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F9A0A5F9F3C3457E2ECD91932E225F1F /* PFURLSession_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D4315EE9D6AA73520E3C28206BB12A2E /* PFFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CDD229A4ED63D296862C7CC3E93D079 /* PFFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D466AEB0B97EDC9663AFFD5F94C04630 /* FBSDKErrorRecoveryAttempter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B4CFCBF40F579D60F6CA51813334980 /* FBSDKErrorRecoveryAttempter.m */; }; + D5DE272410B216A538955743C7C9574F /* PFFileStagingController.m in Sources */ = {isa = PBXBuildFile; fileRef = E4865AB05BFD84B7B6E65342C643E18E /* PFFileStagingController.m */; }; + D5EE317B7D0E35A376DF8328CEA3252B /* FBSDKAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 06292442821AF9572A443AF0D949122D /* FBSDKAccessToken.m */; }; + D6027C66071A9702E15C8A733DBF6FF6 /* PFPropertyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F8A42FF495AB8897D09E00CAD01440B /* PFPropertyInfo.m */; }; + D637A12D921733D3173960A61DB8AE92 /* PFObjectEstimatedData.h in Headers */ = {isa = PBXBuildFile; fileRef = EFC29774AABC76F1B26B97B146F2A1C9 /* PFObjectEstimatedData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D66BEA50BF7F894CCCA235694CF7590B /* PFInstallationController.h in Headers */ = {isa = PBXBuildFile; fileRef = BC16505461748776619D43C6BDC6A703 /* PFInstallationController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D6B9D996B48B90EB489E54CDC7A9D401 /* BFTask.m in Sources */ = {isa = PBXBuildFile; fileRef = BE404DC24F62FA97CDAEF063B4413139 /* BFTask.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + D6C7199C3F4D973B0E6ACA2C6ACF5FF3 /* PFCommandRunning.h in Headers */ = {isa = PBXBuildFile; fileRef = 5ED668482FAFCC7E2F744E4B45E21C00 /* PFCommandRunning.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D7B46B6BD03E88E70CAECBDCED8F4744 /* PFInstallationIdentifierStore_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F0E8603DBA1064D73E0E7EB92BED0DA0 /* PFInstallationIdentifierStore_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D808382848DE98DF7860D36066C0B58B /* PFPushController.m in Sources */ = {isa = PBXBuildFile; fileRef = 13E16ED5531463D4705B39EE950AF115 /* PFPushController.m */; }; + D83032130352AB7F72E4AF6EE0024D11 /* PFDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = E2C63AFAC34B0E794D2603EF0F27DF0E /* PFDecoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D8ADDAF044D6B1B3B763D0334FD8BDAD /* PFQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = 616A0DE1DAFFD10BF5A8DD300548447E /* PFQuery.h */; settings = {ATTRIBUTES = (Public, ); }; }; D8B32C5FF3597EEDD220A394295B194B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; - D963CE53920E664E9CAD6F4B834B315C /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = A93AAAD8AD7E644F7EC9EC8AA665569F /* BFAppLinkReturnToRefererController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D97FDB91BBA6D010CA658A611FC4A9A1 /* FBSDKSystemAccountStoreAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4B2DFF792D6E7C2B1939641ED637C /* FBSDKSystemAccountStoreAdapter.m */; }; - D9D8B1CC492E4406C76092EFA10047F0 /* RKDynamicMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 78A8CA3DC6231EBEE1E0835C4B5FCE5E /* RKDynamicMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA880A2094CF94108583D78E4097D554 /* FBSDKAppGroupAddDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 85A9C0088D1A20CD6084587FE37E8706 /* FBSDKAppGroupAddDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA957B3EC09252118B3E9ABE033421A5 /* PFAnalytics.m in Sources */ = {isa = PBXBuildFile; fileRef = F3C909089E36795B0294E159BE83E353 /* PFAnalytics.m */; }; - DA96A28C136407B16A3F0C70656042AF /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = E353BD446B09E846E43AE7A8C9FBE5AA /* FBSDKProfilePictureView.m */; }; - DAD881A7C7DDA8848FF17E18DB99295C /* PFRESTQueryCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D74AE7682B21EDC5FA135CD84A526CF /* PFRESTQueryCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DB8CE9C5C660790137E0C7B7364E8E82 /* PFRESTUserCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = ED989C258CEF00D2F1701A073DD1C374 /* PFRESTUserCommand.m */; }; - DCA33BB2A983A45F3617A576ACBC26E1 /* PFDefaultACLController.m in Sources */ = {isa = PBXBuildFile; fileRef = 73A197191DE75F22F95C4B3C2E31527B /* PFDefaultACLController.m */; }; - DCF16A999DCFC281A8744148B305482C /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D485AE7D7829E5043DA9B3788867222 /* FBSDKServerConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DD60532519B073DDC5A56E7426B983B4 /* PFRESTFileCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B240507A5F5C3ACC7EDDA9A36CAEFEE /* PFRESTFileCommand.m */; }; - DDAB1F17EC68C8B719BA8C80FB5DC317 /* FBSDKURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = D558BDA6C0DE3DCBFD4EB1B7FB8D2C72 /* FBSDKURLConnection.m */; }; - DE479B83E277F9913E9A6CBE17BD6B3E /* FBSDKAppGroupAddDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 52249F35F2B3F990A6B5460810409C13 /* FBSDKAppGroupAddDialog.m */; }; + D963CE53920E664E9CAD6F4B834B315C /* BFAppLinkReturnToRefererController.h in Headers */ = {isa = PBXBuildFile; fileRef = AE3D34F74057747813B67E0E716F8275 /* BFAppLinkReturnToRefererController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D97FDB91BBA6D010CA658A611FC4A9A1 /* FBSDKSystemAccountStoreAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C13271F07F590F5CD4297A3A11F07EA /* FBSDKSystemAccountStoreAdapter.m */; }; + D985CD1702B209DE6E69F600B59751DC /* RKURLEncodedSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 10D33DBF4C307AD2EA9D10FA2001F6E0 /* RKURLEncodedSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D9CF728584EBF7AD231EF28A2BB2F158 /* RKErrorMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 6380D4168C668F109E1A03B20D714BBE /* RKErrorMessage.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + DA62A034CB079FDF722A66A09E878E5E /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6114EBA3A5CB7CB8ECE0A9BEFA6DB026 /* Security.framework */; }; + DA880A2094CF94108583D78E4097D554 /* FBSDKAppGroupAddDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 0587E0A5FA037D15DDF1E0DD7E70CD5D /* FBSDKAppGroupAddDialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DA957B3EC09252118B3E9ABE033421A5 /* PFAnalytics.m in Sources */ = {isa = PBXBuildFile; fileRef = D9283FF2298CF4AB76D39E0BB4601791 /* PFAnalytics.m */; }; + DA96A28C136407B16A3F0C70656042AF /* FBSDKProfilePictureView.m in Sources */ = {isa = PBXBuildFile; fileRef = 11A34265733816DD6719407EE51BEDD9 /* FBSDKProfilePictureView.m */; }; + DAD881A7C7DDA8848FF17E18DB99295C /* PFRESTQueryCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 118B70D2949B865CA76511460D9D0C92 /* PFRESTQueryCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DB8CE9C5C660790137E0C7B7364E8E82 /* PFRESTUserCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F097273140B23B664D84C6DF75EE2D1 /* PFRESTUserCommand.m */; }; + DCA33BB2A983A45F3617A576ACBC26E1 /* PFDefaultACLController.m in Sources */ = {isa = PBXBuildFile; fileRef = F51B8874D2E27F0F4E6BB3A745216087 /* PFDefaultACLController.m */; }; + DCF16A999DCFC281A8744148B305482C /* FBSDKServerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = DC702CD32C7B1F95EBB4525985776E1A /* FBSDKServerConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DD60532519B073DDC5A56E7426B983B4 /* PFRESTFileCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = D5F29001AB83C450101AC6122BCC4EA0 /* PFRESTFileCommand.m */; }; + DDAB1F17EC68C8B719BA8C80FB5DC317 /* FBSDKURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E03B26327B08731B36701D28A33B9C9 /* FBSDKURLConnection.m */; }; + DE479B83E277F9913E9A6CBE17BD6B3E /* FBSDKAppGroupAddDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 782AF7A5FC9A3571F42003CD07FE5A3C /* FBSDKAppGroupAddDialog.m */; }; DE61C9B48F5213CCAB8012BE4C261842 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6114EBA3A5CB7CB8ECE0A9BEFA6DB026 /* Security.framework */; }; - DF5A96668809AF7FF9E04130C5D9A1D2 /* PFTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6C96E7CB161E28C9D346CD5CEAA5F8 /* PFTaskQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DF6FA2E0FCB935C5FF9824699BF32C2F /* PFLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = BA86A11DA2D2DE1430E01C7AA116C69C /* PFLogger.m */; }; - E0078B6CE5F3FA7BA899B72695D2F70B /* RKLumberjackLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = A63CD3C63759638B8C81445CC1AE5832 /* RKLumberjackLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E03421EE59E06D90EC9F0E07B93E1C2D /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 421AA4D00B6B66524A46DC0728150287 /* FBSDKColor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E0614739E177590ABDB7BE575E24118C /* PFCloud.h in Headers */ = {isa = PBXBuildFile; fileRef = 425C02C4E4B038FDE445DA322EF3113E /* PFCloud.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E06A12A765D316CFB2E9E26FB48C3AC1 /* PFPushState.m in Sources */ = {isa = PBXBuildFile; fileRef = DD4352603F7BBCDFDFBF51AA7E5470D8 /* PFPushState.m */; }; - E0724D062B05BEC513826196D0DF36F2 /* PFSessionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 697AC4B193E7B1C3AAB92E30576C70EB /* PFSessionUtilities.m */; }; - E0DEC8F4B52DC0BDAD4F633262232B7D /* PFURLSessionFileDownloadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E57F847AAD9A19486F1EB1BA4A0C9071 /* PFURLSessionFileDownloadTaskDelegate.m */; }; - E0E49C694EE64CD46539BAD3D4F08AC9 /* PFRole.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EC412AF8C018680357347F65018B124 /* PFRole.m */; }; - E0EAD57AC8EA4C3510C04CDDC9A28DE6 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = 29545B0051D4759CE30F62B98CE37FCB /* FBSDKBridgeAPIProtocolWebV2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E10A2574E0EE99F47BC9CAC0AF33FC47 /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 21378AD860758D2EA2336B59DC09BB68 /* FBSDKAppLinkUtility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E159EF1028A9794B189D47DD79C6A0CC /* FBSDKAccessTokenCacheV4.m in Sources */ = {isa = PBXBuildFile; fileRef = 486A8EBF63F7D80E6BB3BF1ACD672CFD /* FBSDKAccessTokenCacheV4.m */; }; - E15B9B510B4BFB5AAF2F8BFAC5EBC997 /* BFCancellationTokenRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = B2049AB603335D958370F042F249C577 /* BFCancellationTokenRegistration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E19528B349AA57299BED8F28FFCDB92D /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = C8C072F8CBBD8377A84639A146342212 /* FBSDKErrorConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E1B5FD2855EE2B8E7393E7DB0C494946 /* FBSDKLoginButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F08BE85063341A7E769D75F5763E3946 /* FBSDKLoginButton.m */; }; - E228987782C3CA4BC276D56CD25AA911 /* PFURLSessionDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 650251D49165102AF10424F8FE6CFF26 /* PFURLSessionDataTaskDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E288DE93014B057EC4C1871E17F3FA89 /* YALTabBarItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FE8823AC87A2EA7D2BF645AA039E957 /* YALTabBarItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E2D2F28DE8D25857A0143D0C99E1264C /* FBSDKShareOpenGraphContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 6802B9BFD996D3B878D450B785AC2060 /* FBSDKShareOpenGraphContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E30BD9620B97DF000E8F31104048D432 /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = FE161616D496831D4089B8F6813DBE39 /* FBSDKServerConfigurationManager+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E346D04E3F0539B358C1194F02FB8809 /* FBSDKLikeButton+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 81A5DB14272C6EBC7DA612E0D8FBD00A /* FBSDKLikeButton+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E347F996B822D8480FF7B718185C46DD /* BFAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = A1A2CA5B68B1C6F0052C73BE934D33D8 /* BFAppLinkReturnToRefererView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E35FADAE8EF72A1419545CEE70610D27 /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AEE4D8F9683C8D1ACEF10CAF4E41A9C /* FBSDKPaymentObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E461DC7FBE41300801EE6D160AE29860 /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBA64F9DA348CD22FB1AC87B9F75ACC /* FBSDKServerConfigurationManager.m */; }; - E46B5DC4D2646D5DD81881A2D4EA57F0 /* RKISO8601DateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = E8BE55CB57DEE8420789C65645ABEFF9 /* RKISO8601DateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E47D4E86203EFA7643A44E5109117967 /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1019C96E930FDF66BCD79751678FFFF6 /* FBSDKGraphRequestConnection+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E497F7EAC903A7C28D8CC1FD0D90CCDF /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 2965F8E850F9EB3EA40B7FDBC0F6924E /* FBSDKConstants.m */; }; - E538CE431B0B1742D219C8D91483FDEA /* FBSDKLoginTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = AA9C61E1204F6BD3E847A74FF29A1F91 /* FBSDKLoginTooltipView.m */; }; - E544AA008F4106DB432AFF71DD5B5654 /* PFUserAuthenticationController.h in Headers */ = {isa = PBXBuildFile; fileRef = DC01BFEAAAC847F4F08D2481C7229EEE /* PFUserAuthenticationController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E571D44B22235633760C6FB955906D99 /* FBSDKShareVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 76F892C34CC6406B1AB6E24B09138F86 /* FBSDKShareVideo.m */; }; - E5BE3915A6A2859B581A8300E69A2B8E /* PFWeakValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 69532310DA9419CB7D0183940081C37D /* PFWeakValue.m */; }; - E619774CBBC6B7DB599BB085A6F24102 /* RKTestFixture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9957AA65319B89D5DD0424050D460948 /* RKTestFixture.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E6400BCB9E4DCC98CD30D74AC0F6B56A /* RKMapperOperation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 117FC8B2ADDE85F697FC85ECF51FD3F3 /* RKMapperOperation_Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E65B5BAA6FD361DED892118A76ECF21E /* FBSDKLoginManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A310034DF2EA59B12C3C17FA56A7D8CA /* FBSDKLoginManager+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E6D6A687F8FD1088F5EBB283308B0DC2 /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0100E24D37FE9C4A3412983EC266C1C7 /* FBSDKGraphRequestPiggybackManager.m */; }; - E6E0B008759D9B3D9EE25FD2FE56E715 /* YALAnimatingTabBarConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = C4A5204786239441709AD7ACC6C10DF1 /* YALAnimatingTabBarConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E7A1E7F0498A21036EE756DA807E34B0 /* PFKeyValueCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B01AD8E53CF8F54CAA21EB125198756C /* PFKeyValueCache_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E7AC21B4D847D0F421132DCD478589F6 /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B16E71107186CBE636A34F02C7C0DC /* FBSDKBridgeAPIProtocolType.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E7C91F488C152026DF77891E905E49BC /* PFACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E91BE2BF2B6ED7524B651D0202AC4E0 /* PFACLState.m */; }; - E7F0BB11E1A7B4F36F3B5C5473E30A10 /* RKTestHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E10976A217E52C40572C15A1627BDD2 /* RKTestHelpers.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E7FCA88FB0851D5AF8DB69F2411E06E2 /* RKRouter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9404F58DCEDDFD27D11EDC156DE41058 /* RKRouter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E81433D0931C25789180EA53A62C940E /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = D748BF0E60AF7374125A323AB6FA6176 /* FBSDKBridgeAPIResponse.m */; }; + DF5A96668809AF7FF9E04130C5D9A1D2 /* PFTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CE3CC21857556B51CB17BCFCF1EE7B1 /* PFTaskQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DF6FA2E0FCB935C5FF9824699BF32C2F /* PFLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = AEA3B8A0B629E223E8AD2FFCA8C65F21 /* PFLogger.m */; }; + E03421EE59E06D90EC9F0E07B93E1C2D /* FBSDKColor.h in Headers */ = {isa = PBXBuildFile; fileRef = D68CBFCA3F276272B2040E6469C8D1DE /* FBSDKColor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E0614739E177590ABDB7BE575E24118C /* PFCloud.h in Headers */ = {isa = PBXBuildFile; fileRef = EC54205F1719C5C45D60A2253F84C5ED /* PFCloud.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E06A12A765D316CFB2E9E26FB48C3AC1 /* PFPushState.m in Sources */ = {isa = PBXBuildFile; fileRef = 939D831BAB14BEA5394F15D3E348976C /* PFPushState.m */; }; + E0724D062B05BEC513826196D0DF36F2 /* PFSessionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 72C1FA5A8BDBCEC19E41771957BEB9E3 /* PFSessionUtilities.m */; }; + E0DEC8F4B52DC0BDAD4F633262232B7D /* PFURLSessionFileDownloadTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 423887AF6686942102218A073BC526E2 /* PFURLSessionFileDownloadTaskDelegate.m */; }; + E0E49C694EE64CD46539BAD3D4F08AC9 /* PFRole.m in Sources */ = {isa = PBXBuildFile; fileRef = 66754BB67AA131A94D10F42D109E8523 /* PFRole.m */; }; + E0EAD57AC8EA4C3510C04CDDC9A28DE6 /* FBSDKBridgeAPIProtocolWebV2.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A17ADE2F078B621C983D99D2F0F0047 /* FBSDKBridgeAPIProtocolWebV2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E10A2574E0EE99F47BC9CAC0AF33FC47 /* FBSDKAppLinkUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = C651AC06095B97EDAEF872B6D7032F4E /* FBSDKAppLinkUtility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E10ED2683F83860B93799B1241CE8C22 /* RKNSJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB19F616008A121FAA50E14B62D67A0 /* RKNSJSONSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + E159EF1028A9794B189D47DD79C6A0CC /* FBSDKAccessTokenCacheV4.m in Sources */ = {isa = PBXBuildFile; fileRef = B352E84B1EE885140F4F4DC84329D6CB /* FBSDKAccessTokenCacheV4.m */; }; + E15B9B510B4BFB5AAF2F8BFAC5EBC997 /* BFCancellationTokenRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = F22636EFE5E1A5651E0A1520C5F281E5 /* BFCancellationTokenRegistration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E19528B349AA57299BED8F28FFCDB92D /* FBSDKErrorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 49B69C4B030D1D72B8261D35EB560A56 /* FBSDKErrorConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E1A643D9DE8D164F5D1179CF5117F763 /* RKMappingTest.h in Headers */ = {isa = PBXBuildFile; fileRef = CA3CB4DD07E35F520C793BA9032F51FC /* RKMappingTest.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E1B5FD2855EE2B8E7393E7DB0C494946 /* FBSDKLoginButton.m in Sources */ = {isa = PBXBuildFile; fileRef = DD91926B9C031018B2F9CB9019718F3E /* FBSDKLoginButton.m */; }; + E228987782C3CA4BC276D56CD25AA911 /* PFURLSessionDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 701190361150FF2EEDEF10D05ABE7065 /* PFURLSessionDataTaskDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E2360651E2E5A293C9E59863EC157308 /* RKObjectMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = ADD34821324463B1C81B2802AFA7B01C /* RKObjectMapping.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + E288DE93014B057EC4C1871E17F3FA89 /* YALTabBarItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 44A2841E1C0E28AFEE0B7288D6E47D4E /* YALTabBarItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E2D2F28DE8D25857A0143D0C99E1264C /* FBSDKShareOpenGraphContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 97F4FC4FF392B72657F42F96261BBC3F /* FBSDKShareOpenGraphContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E30BD9620B97DF000E8F31104048D432 /* FBSDKServerConfigurationManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DB170D4C4F763AED7B36159D448013E /* FBSDKServerConfigurationManager+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E346D04E3F0539B358C1194F02FB8809 /* FBSDKLikeButton+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DEFDD3A6DB314308247D22FF14AFA98 /* FBSDKLikeButton+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E347F996B822D8480FF7B718185C46DD /* BFAppLinkReturnToRefererView.h in Headers */ = {isa = PBXBuildFile; fileRef = 5444C22939A582C105AC91CE65D666F4 /* BFAppLinkReturnToRefererView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E35FADAE8EF72A1419545CEE70610D27 /* FBSDKPaymentObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = B163A0D63692C83B09ED63F3D357CC5D /* FBSDKPaymentObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E459591E18120BB2457AA3AB88FD94E5 /* RKTestNotificationObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EDCBE9EDEE91346EC864E690AF4D08E /* RKTestNotificationObserver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E461DC7FBE41300801EE6D160AE29860 /* FBSDKServerConfigurationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 21E3824444DF9349B08182DF250A028D /* FBSDKServerConfigurationManager.m */; }; + E46B5DC4D2646D5DD81881A2D4EA57F0 /* RKISO8601DateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = D68125D407CB86FE46338C7579765331 /* RKISO8601DateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E47D4E86203EFA7643A44E5109117967 /* FBSDKGraphRequestConnection+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7239EC1173010662F747781299C375DA /* FBSDKGraphRequestConnection+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E497F7EAC903A7C28D8CC1FD0D90CCDF /* FBSDKConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 48C62F55A4F3241648089904B527F6D1 /* FBSDKConstants.m */; }; + E538CE431B0B1742D219C8D91483FDEA /* FBSDKLoginTooltipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 335A3DE810AEDFE589A9325169A59E46 /* FBSDKLoginTooltipView.m */; }; + E544AA008F4106DB432AFF71DD5B5654 /* PFUserAuthenticationController.h in Headers */ = {isa = PBXBuildFile; fileRef = A36C3225AB6FDE49BE8F8859C30A7D7D /* PFUserAuthenticationController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E571D44B22235633760C6FB955906D99 /* FBSDKShareVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = E6D171B8D3792811D774B92580727FAB /* FBSDKShareVideo.m */; }; + E5BE3915A6A2859B581A8300E69A2B8E /* PFWeakValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 03C91AECE7686A27F9032A4DCC43165E /* PFWeakValue.m */; }; + E65B5BAA6FD361DED892118A76ECF21E /* FBSDKLoginManager+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 20B8F6A2F2E484CD2E09B61345C563A0 /* FBSDKLoginManager+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E6D6A687F8FD1088F5EBB283308B0DC2 /* FBSDKGraphRequestPiggybackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A473C610615EE15F20D33C59B9CC54B8 /* FBSDKGraphRequestPiggybackManager.m */; }; + E6E0B008759D9B3D9EE25FD2FE56E715 /* YALAnimatingTabBarConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 57319DCE064A4F4C9DD2D290FD88D642 /* YALAnimatingTabBarConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E704C533E6A5D7805AAF9761C8017D51 /* RKMIMETypeSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 93EE612E26F15D494EE5870F082534C2 /* RKMIMETypeSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E7A1E7F0498A21036EE756DA807E34B0 /* PFKeyValueCache_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E043164BEB509D5E2D2B9698903390E7 /* PFKeyValueCache_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7AC21B4D847D0F421132DCD478589F6 /* FBSDKBridgeAPIProtocolType.h in Headers */ = {isa = PBXBuildFile; fileRef = 568C2C82ED942F4F6D68EBFBDD16316F /* FBSDKBridgeAPIProtocolType.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7C91F488C152026DF77891E905E49BC /* PFACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = 62BEED70070D14A0FF9C95200AA22741 /* PFACLState.m */; }; + E81433D0931C25789180EA53A62C940E /* FBSDKBridgeAPIResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E7F67EBB1F0265AF0F708FA1006B162 /* FBSDKBridgeAPIResponse.m */; }; E81D0A4FB179B72572B6E7521484EB16 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */; }; - E92D54EC2B8A52C24D9C34F2A37F2996 /* PFURLSessionJSONDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = EAB7C8D81307D67033C83A0116B517EA /* PFURLSessionJSONDataTaskDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E97B61F439BAE5B0BC4AE0382AF6E4B3 /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = EC53BB2A4757BDC90938CF004EC14FD9 /* FBSDKPaymentObserver.m */; }; - E998F4250A20099ECF4980ECA881988E /* PFUserConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F0161219DC8EBD1C3D61015979852A6 /* PFUserConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E9BBD9ED8781DB4B08B9A35068B2E0D9 /* FBSDKSharingButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B789CF6E62B4AFFE38A3E4538927DA /* FBSDKSharingButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EA3208DE2E2A3C5B240A0C832A77DDCF /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = 354D71ECE03FF896929A5DF65F72CA5D /* FBSDKTriStateBOOL.m */; }; - EB975D51FB0B6C984EC3A970061180C8 /* RKPathMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = F4E257A30B52BCA02E3AD226A28156E6 /* RKPathMatcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EBB6F0BB04FCFC82D12723EF3E740261 /* FBSDKLikeControl+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = D18D463A980049E0F00BD51E3DEFF7D8 /* FBSDKLikeControl+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EBDBE9612ABCEF630CC6E9B282086FD9 /* RKSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = B75D3CD9991E32D3045EFD508FE204E3 /* RKSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EBE1D926D326775167E082772E23D000 /* FBSDKShareOpenGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = CB98CBDFC30DCA09820317B62E92F7F2 /* FBSDKShareOpenGraphObject.m */; }; - EC5F8395D48ED1C0BE2C2D7EB7D9F4B9 /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B1D85199C350E1CC77B906C3E4938BF /* BFTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC7025C98AE47F5E2D9CBEA4AC041890 /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = D03DA3189A149B152CEA7A11F9C76649 /* Bolts.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - EC988E57B95BF4C3D8D67B5A3B382A8C /* PFMutableACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = 33BA0D4863A03D1948F483CFE7EA4EAB /* PFMutableACLState.m */; }; - ECECB6E62DA076603D8F2A805641CA27 /* FBSDKLoginKit.h in Headers */ = {isa = PBXBuildFile; fileRef = ABEC7A4F1C213D9FF650D68130BE307B /* FBSDKLoginKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ED089A748BCDC9F6C6872F5F7E21E412 /* lcl_config_logger_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = 16CCB8BB94AE34725A72A8769F301A7E /* lcl_config_logger_RK.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ED4ECDAC11F885A77723CE05B89A65AA /* AFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = EB41BA80088D3B05F30B5FE2B650F1E8 /* AFHTTPRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ED6B6D31DCF0E36BB88E225710AA83DB /* PFInternalUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A7EE25D0A40F414D480899041A5E485 /* PFInternalUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EDB2BA3AEA3A7A4EC735BAF9804D75D4 /* FBSDKShareVideoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 326B318804906FA458A65108849C0F78 /* FBSDKShareVideoContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EE0DAF5E510D971C9A34D617DA2438EC /* PFObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = B27A11D910EE7C9849CF8F140E280ED9 /* PFObjectState.m */; }; - EE76A64B08255C079A379BC77864B85F /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = ACC5D57E516CFFB2CE3244680661340D /* FBSDKProfile.m */; }; - EED88C9780961006A6F988AFECD7BED3 /* FBSDKLikeBoxBorderView.m in Sources */ = {isa = PBXBuildFile; fileRef = A911FD2DE04BBABF90935B374E405983 /* FBSDKLikeBoxBorderView.m */; }; - EF254F401AD05830A53E37EB6ED1A20D /* PFOfflineQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D8C8E5159871AD5FA5B7332A649FB5 /* PFOfflineQueryController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EF38756A5556C26335245407A2D3C876 /* FBSDKLoginCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = EB51571C4C582A26F710845CFAA3AAFE /* FBSDKLoginCompletion.m */; }; - EFB0AF9D9768F6BD8723FFCB40AD7D39 /* PFThreadsafety.m in Sources */ = {isa = PBXBuildFile; fileRef = 880D8A88A7684A55315EDE4547F17390 /* PFThreadsafety.m */; }; - F060AADC6126A31918F62A205D714C32 /* PFUserAuthenticationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4570CED15A9C16289C4D098BADB4988B /* PFUserAuthenticationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F08F2CBC9F704A5EA0102586DAC55989 /* RKMIMETypeSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A18E97231CDD5F751206CDE84F4B9BC /* RKMIMETypeSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F0DC437CA168984F852D7735048BC6C0 /* RKAttributeMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 979F775694C8742A140AFEFE090CA61A /* RKAttributeMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F0FE6F4E093E414D2956FA431E0C606C /* RKHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B12FBE677B57927C3F666FD0FD6511BC /* RKHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - F10CE2BA1CE785FB8EC2CE0595A7FBBE /* FBSDKLikeActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 943C0E46DB3D37D67FFBB0E81F8082D7 /* FBSDKLikeActionController.m */; }; - F1B80D56445F494B2F82BB577E4CB42A /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = FE19DAED716CA2A2722DED05F8DB92B4 /* FBSDKShareOpenGraphValueContainer+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F1FB40054787172F5817A61DF16AA000 /* PFProductsRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 2982D008CF0D29BDC45EE799823CC219 /* PFProductsRequestHandler.m */; }; - F21561635F6B62CFBA1A70ED0D86BE5A /* PFFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = EDB85417DB00C6BC36233DD8F5D526A6 /* PFFileState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F22E744D20ECE98DB31805F305E0BECC /* Network.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EAF198C3A7ADA68D4CEE15D8F5409E8 /* Network.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2614C38AA4BB27104AD7BAB99E2BDD3 /* FBSDKSharingContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CA5367E50A1A62A594A47FAA506499D /* FBSDKSharingContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F274F7BBA53230296D041E9788011840 /* RKPropertyMappingTestExpectation.h in Headers */ = {isa = PBXBuildFile; fileRef = 46EE1DE5D0F0015F4E7C0AE4FC9D85F6 /* RKPropertyMappingTestExpectation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2948A142B6234A6E12DF2AD5FC390CF /* PFObject+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E992BA048F5DF79A1CDCA82157BFEB8 /* PFObject+Subclass.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F350CF6BAA15E73067A174A0455B3D8A /* RKObjectManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E6EBF6F7C6F610013CFE4E847BD798F8 /* RKObjectManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F3EDEEA557BF41B20EF260EEBE129831 /* RKObjectRequestOperationSubclass.h in Headers */ = {isa = PBXBuildFile; fileRef = EA755DA8F373AF93B1752260FBCD0DEE /* RKObjectRequestOperationSubclass.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F3F9AFABE12CF6EF4371A4A8DC5C9D46 /* PFPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = A7866E7BD22417E1E798E12FC8148126 /* PFPurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F4115B73585F11A711426EAE0B3B0B8C /* RKPathUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 73ADD1CAE6F397CC4738B0967E78B570 /* RKPathUtilities.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - F48F08F807C465B2DC535CE521E66D97 /* FBSDKLikeBoxBorderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 83EAF6F3D84D5233748529A8E8CB094D /* FBSDKLikeBoxBorderView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F4F96AF7AC5C83FA96E172128610B1F2 /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = B04554029C51C04C827384E9A03CC281 /* FBSDKBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F50BE85096146332D4C00C17546561DA /* BFCancellationToken.m in Sources */ = {isa = PBXBuildFile; fileRef = AC5662D51E6E075238B8E1970100B60A /* BFCancellationToken.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - F53BB2B5B2739CED55C0738568C22BE0 /* PFQueryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = D7FC083129BF68FB4CB980C41B463B48 /* PFQueryUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F54F01DCDD820F6EF621E915C1BF6E0D /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 7358191BB91547CAE16F05DBDB1BE31D /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F6439BF34231EC9F4CBB3F01C862CEFA /* PFJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A801218C457ACD0660511E41F3A3A30 /* PFJSONSerialization.m */; }; - F6C1716F0805EA68532FF09E380B40D7 /* BFWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B163E967FEAF0C769D85F0A3A1EEB95 /* BFWebViewAppLinkResolver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - F7077CE67CBD9DAAAE91FBED372BA0CD /* PFURLSessionCommandRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = A504F227475EBEE681741A0C587CAE41 /* PFURLSessionCommandRunner.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F728C30DC692908961A286369C3A5D56 /* PFMultiProcessFileLockController.m in Sources */ = {isa = PBXBuildFile; fileRef = 773BC40E82A6994ABB953BECE34B7AA4 /* PFMultiProcessFileLockController.m */; }; - F743978153F2A7013B2066B1B306E5F5 /* PFUserAuthenticationController.m in Sources */ = {isa = PBXBuildFile; fileRef = E5AE21B40FF68080B94A984303BBCF2F /* PFUserAuthenticationController.m */; }; - F7A16A60215390EB56EFF7E65F4CF803 /* PFMutableRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 48B1E6D7D071B0E0ED3F61BA546629E4 /* PFMutableRelationState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F7CC6A2F5288951581078FA3B7C9A215 /* PFObjectFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A3D69E13596F5D45D883E1AE14D9B94 /* PFObjectFileCodingLogic.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F7DD4882D66BDDF093E01A1050E60F2E /* PFApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = F55189D706C6F0A7E7F9257ACEE9173C /* PFApplication.m */; }; - F7E42776080FF0BDBE07365A2AFE2834 /* FBSDKLikeBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 60C56926A1A601A3101BC398EFC92298 /* FBSDKLikeBoxView.m */; }; - F9198070ED60C8E1F3AF0910B05EA446 /* FBSDKLikeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 60B2A3058DFFA81A2091F7C428415666 /* FBSDKLikeButton.m */; }; - F9814C410ADDB3A0797E70914157D3A0 /* FBSDKLoginUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 42BFA9A32C67074761C10AC36BF1CA3D /* FBSDKLoginUtility.m */; }; - F9A49E306CE246D7F327C43091688131 /* FBSDKLoginCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = E8C9BEAE7AF61AB7F508B135815A7405 /* FBSDKLoginCompletion.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F9DC54B44C2DA79FEE1FE863F3185504 /* PFGeoPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4961DA34D602A21B6849256EB53A724D /* PFGeoPoint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FA27E23894DFC2F77A0EA14C2D1A3DD4 /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = DA692944B964141F5AC05B406C0139AE /* FBSDKMonotonicTime.m */; }; - FA8E3B41E8BBAC3A94F8040161250867 /* PFErrorUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F4B289AAAE3CB636116D0E2F1741DAD /* PFErrorUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FB1E08557D01F434CD5C340084CC4AE1 /* RKValueTransformers-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1537B3204A5DD70D808286FE603C4A97 /* RKValueTransformers-dummy.m */; }; - FB27D03B5B38BC7F5B6E70EF758693B9 /* PFEventuallyQueue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = EA109C22D76467FD3FAB127642A18655 /* PFEventuallyQueue_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FB9237E38009CB01D2D2BC136D5924B7 /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AC4D864890FF57910E0C3F3ACE458D5 /* BFCancellationTokenSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FBFCD80E29C5DB1702D3FB255115D1C5 /* PFUserPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D1BEC4F5C959A0F3A590C62FFFAED54 /* PFUserPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FCDC22BD5A90775000A728831060EDCC /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = D85AEEF23A439D7C61100E8D5EFE0203 /* BFCancellationTokenRegistration.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - FD2A1B5A3B8F58A419B8030AB3B0C900 /* PFOperationSet.h in Headers */ = {isa = PBXBuildFile; fileRef = AAE5C3F24CDEB6F4DD19802AB2B9D8B4 /* PFOperationSet.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FD47F52F2CEDDB036100F734C1259055 /* RKTestHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C3ADF3356A01C102A78C499D44C195E /* RKTestHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FDF39F9BC888D9146BC087518C89A8F6 /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 948C70E84F724FF8F752385A5BD920DF /* FBSDKTypeUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FE2AAC4C194831168C51BE65F975CEC3 /* RKLumberjackLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 14424EF937E20F708472093A62D7D67B /* RKLumberjackLogger.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - FE3B8BC960347662443ADE923D1793C3 /* RKObjectParameterization.m in Sources */ = {isa = PBXBuildFile; fileRef = 78CD59E0BD6F1DE92BCA187E736EF6BE /* RKObjectParameterization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - FEAB4AF7F2C57BDEFD6081038CFD20FB /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 3678FC88ECC9E598059E5183A37EDEE1 /* FBSDKLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FEABBD556CE7DA2220EF2DA04C735136 /* SOCKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 83C232075A2AC8C59594FDDD1D494936 /* SOCKit-dummy.m */; }; - FEE35D4E0AC6882B8B643149854B0288 /* RKBenchmark.m in Sources */ = {isa = PBXBuildFile; fileRef = AB78F67642C251E7BFF0E9D2B17A8553 /* RKBenchmark.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - FF6C07931C151FAE59F3FB55F032AF23 /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = F0CB7F600F18B609668913010F45E215 /* FBSDKAppEventsState.m */; }; - FF7920785C7F9A6CBCDBFB44A8C63791 /* PFObjectFilePersistenceController.h in Headers */ = {isa = PBXBuildFile; fileRef = 29C1E470BE7725D82BB96486CEBA6B7A /* PFObjectFilePersistenceController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FFEDBF912F4CF43D78BC4F4331F09059 /* PFAnalyticsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 646C67B4157CB47C91F3D55E7BFA577C /* PFAnalyticsController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E92D54EC2B8A52C24D9C34F2A37F2996 /* PFURLSessionJSONDataTaskDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3198F91D01D488AAEE2E37C91C36109C /* PFURLSessionJSONDataTaskDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E936CBE6114F820C4E7408AC11114C9F /* UnitBezier.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CFCEB3A58ECB73BB6D930BB1A66A2DE /* UnitBezier.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E97B61F439BAE5B0BC4AE0382AF6E4B3 /* FBSDKPaymentObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 98D1A4CAC7340A038BDCFECC7E0BFE95 /* FBSDKPaymentObserver.m */; }; + E998F4250A20099ECF4980ECA881988E /* PFUserConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 616C83AFE6D3B13DB326EFFDA4E56218 /* PFUserConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E9BBD9ED8781DB4B08B9A35068B2E0D9 /* FBSDKSharingButton.h in Headers */ = {isa = PBXBuildFile; fileRef = D80B172E70B3B5E8CAEA6069D1DE5D71 /* FBSDKSharingButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EA3208DE2E2A3C5B240A0C832A77DDCF /* FBSDKTriStateBOOL.m in Sources */ = {isa = PBXBuildFile; fileRef = 592AA9AF2651D5C86E7E8D122F958616 /* FBSDKTriStateBOOL.m */; }; + EBB6F0BB04FCFC82D12723EF3E740261 /* FBSDKLikeControl+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BB0273CAD372752E68ECCBCD48E5842 /* FBSDKLikeControl+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EBE1D926D326775167E082772E23D000 /* FBSDKShareOpenGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 224595D0364E886259E4B2F44C937D02 /* FBSDKShareOpenGraphObject.m */; }; + EC5F8395D48ED1C0BE2C2D7EB7D9F4B9 /* BFTask.h in Headers */ = {isa = PBXBuildFile; fileRef = D2A208C22FB8BC1DAFD34F05A88E7349 /* BFTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC7025C98AE47F5E2D9CBEA4AC041890 /* Bolts.m in Sources */ = {isa = PBXBuildFile; fileRef = 20D1F9C0BECD5D6036F5F1A63383C39D /* Bolts.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + EC988E57B95BF4C3D8D67B5A3B382A8C /* PFMutableACLState.m in Sources */ = {isa = PBXBuildFile; fileRef = 24B58875AADE4ED78AB3942781E1AECC /* PFMutableACLState.m */; }; + ECECB6E62DA076603D8F2A805641CA27 /* FBSDKLoginKit.h in Headers */ = {isa = PBXBuildFile; fileRef = AEB4D0E3F5DD747BCD44340E26E9755F /* FBSDKLoginKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ED4ECDAC11F885A77723CE05B89A65AA /* AFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7771BB9434E69A691392A0970DD10E28 /* AFHTTPRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ED6709D08D9B015AB6FC3F9A6B207DD3 /* RKManagedObjectRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 078AB2530E4CDAB1E634AE38A5545949 /* RKManagedObjectRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + ED6B6D31DCF0E36BB88E225710AA83DB /* PFInternalUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = A3FBF62848DF8B263E30542353335091 /* PFInternalUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ED6FD3AB4D6A18C000AEA269BC8D7F29 /* RKManagedObjectRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BECD1A40487A504B56D704C9D21E36C /* RKManagedObjectRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDB2BA3AEA3A7A4EC735BAF9804D75D4 /* FBSDKShareVideoContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 56EDB2104DA13588CD5B4334FF77452F /* FBSDKShareVideoContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDE804E78EDBA4011460F800C7E8F9FB /* RKRelationshipMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = E49DAAC9A8E0D5362E749A6821734AF0 /* RKRelationshipMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EE0DAF5E510D971C9A34D617DA2438EC /* PFObjectState.m in Sources */ = {isa = PBXBuildFile; fileRef = DC865D74F3C01339E7A0C969FDED834E /* PFObjectState.m */; }; + EE76A64B08255C079A379BC77864B85F /* FBSDKProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C86B91E8FA37A02DFCBC13C26C5599E /* FBSDKProfile.m */; }; + EED88C9780961006A6F988AFECD7BED3 /* FBSDKLikeBoxBorderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 95C0B6DA20609F0B05D9D1AB1D2FC475 /* FBSDKLikeBoxBorderView.m */; }; + EF10BDF15001F7DFC2CB2B2F898A40B9 /* RKPaginator.h in Headers */ = {isa = PBXBuildFile; fileRef = 55B8770724B1C27628F366C0CF2D3B85 /* RKPaginator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EF254F401AD05830A53E37EB6ED1A20D /* PFOfflineQueryController.h in Headers */ = {isa = PBXBuildFile; fileRef = B6D4806630F08E4A693BB13FD80E2B85 /* PFOfflineQueryController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EF38756A5556C26335245407A2D3C876 /* FBSDKLoginCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = BBB5809E48E2B4BEFFDD671C03A673A1 /* FBSDKLoginCompletion.m */; }; + EFB0AF9D9768F6BD8723FFCB40AD7D39 /* PFThreadsafety.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BDC71820826E3AC85B7BE2E689790EA /* PFThreadsafety.m */; }; + F060AADC6126A31918F62A205D714C32 /* PFUserAuthenticationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 40E39D31FE7DC01DD03AA4AF8530EC8D /* PFUserAuthenticationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F10CE2BA1CE785FB8EC2CE0595A7FBBE /* FBSDKLikeActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = ECF9B9F2BA04D70CD7253751FF94CCD5 /* FBSDKLikeActionController.m */; }; + F1B80D56445F494B2F82BB577E4CB42A /* FBSDKShareOpenGraphValueContainer+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F42B1B0D93B9783D48D27AAF873BC978 /* FBSDKShareOpenGraphValueContainer+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F1FB40054787172F5817A61DF16AA000 /* PFProductsRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 2246103381BDCE264B43C19253CCF7C6 /* PFProductsRequestHandler.m */; }; + F21561635F6B62CFBA1A70ED0D86BE5A /* PFFileState.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F16209AB717FBAFF4C2730320EF9840 /* PFFileState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F2614C38AA4BB27104AD7BAB99E2BDD3 /* FBSDKSharingContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ACEDF4D677834B067A9DD0F82954897 /* FBSDKSharingContent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2948A142B6234A6E12DF2AD5FC390CF /* PFObject+Subclass.h in Headers */ = {isa = PBXBuildFile; fileRef = D1361066E091AA4FB6E9B94B50118177 /* PFObject+Subclass.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3D8FC254CCC51A7FBC764EDCF823A3C /* POPVector.h in Headers */ = {isa = PBXBuildFile; fileRef = 64E0C0D87C1527E39C8527751DB7D005 /* POPVector.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F3F9AFABE12CF6EF4371A4A8DC5C9D46 /* PFPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = BF0336CCD7C95A339E279331D898870E /* PFPurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F48F08F807C465B2DC535CE521E66D97 /* FBSDKLikeBoxBorderView.h in Headers */ = {isa = PBXBuildFile; fileRef = CF478811F261A5C3A4200EF18BD59E46 /* FBSDKLikeBoxBorderView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F4F96AF7AC5C83FA96E172128610B1F2 /* FBSDKBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 2784369F5F5CCA4ADE551377F245E131 /* FBSDKBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F50BE85096146332D4C00C17546561DA /* BFCancellationToken.m in Sources */ = {isa = PBXBuildFile; fileRef = D340DC8D2BC61B7C8A044A46F47ED4D0 /* BFCancellationToken.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + F53BB2B5B2739CED55C0738568C22BE0 /* PFQueryUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 76EDBE5B4444693672560F0B38D5C4D3 /* PFQueryUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F54F01DCDD820F6EF621E915C1BF6E0D /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F529E412A09BF39D8AEC42AFFDF2F46 /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F636A430FBAA6F63A249AD7B432C57CD /* lcl_config_logger_RK.h in Headers */ = {isa = PBXBuildFile; fileRef = C3B87B3E4AC8A18214858CF42A599D50 /* lcl_config_logger_RK.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6439BF34231EC9F4CBB3F01C862CEFA /* PFJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F93FF0560F945FADCA311FD06CA31D3 /* PFJSONSerialization.m */; }; + F69121DAB7F11950A7942C4D70A1B556 /* RKPropertyMappingTestExpectation.h in Headers */ = {isa = PBXBuildFile; fileRef = 10FAFCCD6FB4FC9E877FCB27902EA1F7 /* RKPropertyMappingTestExpectation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6B3F611DF383CE5E1E8E62665449291 /* TKStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD657A091CF82605FA8A0100D16E83E /* TKStateMachine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6C1716F0805EA68532FF09E380B40D7 /* BFWebViewAppLinkResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = EED2B7513CB5A03507BE982601143DEC /* BFWebViewAppLinkResolver.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + F7077CE67CBD9DAAAE91FBED372BA0CD /* PFURLSessionCommandRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = 327724504C5129C28E647306963F3042 /* PFURLSessionCommandRunner.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F728C30DC692908961A286369C3A5D56 /* PFMultiProcessFileLockController.m in Sources */ = {isa = PBXBuildFile; fileRef = 04E79E027951925EA1691B4B8E395973 /* PFMultiProcessFileLockController.m */; }; + F743978153F2A7013B2066B1B306E5F5 /* PFUserAuthenticationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 16AA732281290E4169524C7073D0E8C9 /* PFUserAuthenticationController.m */; }; + F751CEADDC757850DAE30E3411FD494D /* POPAnimationExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = EF2907AA3AD4FE98405EC818A63855DA /* POPAnimationExtras.mm */; }; + F7A16A60215390EB56EFF7E65F4CF803 /* PFMutableRelationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B162D277A2037FD2A114DD8C9CB5922 /* PFMutableRelationState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F7B6B5468F0E365CBF4AC5F003E17684 /* RKOperationStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A3FF0A4A486E57DD176B3DF5F619173 /* RKOperationStateMachine.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + F7CC6A2F5288951581078FA3B7C9A215 /* PFObjectFileCodingLogic.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E44BCC5A1A8313C135B429B4AA92FE8 /* PFObjectFileCodingLogic.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F7DD4882D66BDDF093E01A1050E60F2E /* PFApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = B78A7E4B40882223B829568BDECFF65F /* PFApplication.m */; }; + F7E42776080FF0BDBE07365A2AFE2834 /* FBSDKLikeBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = A473E7C40F24CE11C1FE9F416C8E5EC2 /* FBSDKLikeBoxView.m */; }; + F9198070ED60C8E1F3AF0910B05EA446 /* FBSDKLikeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 64264592576D6C230E966AC098067DAB /* FBSDKLikeButton.m */; }; + F935343777FB6C7405A086E0FA59F28C /* TransitionKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 83319D45D8AE5D8BF57D365983A41750 /* TransitionKit-dummy.m */; }; + F9814C410ADDB3A0797E70914157D3A0 /* FBSDKLoginUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = DB72A1AC246E5FC4E81A0DBB8B1F0737 /* FBSDKLoginUtility.m */; }; + F9A49E306CE246D7F327C43091688131 /* FBSDKLoginCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = 763D59D54C57DA2AAFAD336EE912908D /* FBSDKLoginCompletion.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F9DC54B44C2DA79FEE1FE863F3185504 /* PFGeoPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 40DC3C427F03295338C11BDDD89C3D2A /* PFGeoPoint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FA27E23894DFC2F77A0EA14C2D1A3DD4 /* FBSDKMonotonicTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 26A9B6AD16C16524DC90D9F1759B3E86 /* FBSDKMonotonicTime.m */; }; + FA3330484B355C821E59E5DE1C0BA454 /* ObjectMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = C647E341C56F994FDA336B094DDC681B /* ObjectMapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FA8E3B41E8BBAC3A94F8040161250867 /* PFErrorUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = E5FEF8F1937676245479BD46246EE956 /* PFErrorUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FAE3BF2AD91A39EB7B33F722AB050FDF /* Testing.h in Headers */ = {isa = PBXBuildFile; fileRef = B25EAE7B7171B287489EDA0C0A129426 /* Testing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FB1E08557D01F434CD5C340084CC4AE1 /* RKValueTransformers-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A1C16BDC310A2EF19DE55901CD5B41 /* RKValueTransformers-dummy.m */; }; + FB27D03B5B38BC7F5B6E70EF758693B9 /* PFEventuallyQueue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 33D917AEA2C6B3BD1FB6DE5E32B94689 /* PFEventuallyQueue_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FB9237E38009CB01D2D2BC136D5924B7 /* BFCancellationTokenSource.h in Headers */ = {isa = PBXBuildFile; fileRef = D147E7F72F838ED5D3C66A4E3546EC11 /* BFCancellationTokenSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FBFCD80E29C5DB1702D3FB255115D1C5 /* PFUserPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EBA7EC1BD2D3653F709A5C97063B990 /* PFUserPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FCAB2361E009734F6BE467ED760F2E00 /* RKURLEncodedSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F756E1A3BA52E99D6635DE49C0331CB /* RKURLEncodedSerialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + FCDC22BD5A90775000A728831060EDCC /* BFCancellationTokenRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE55AE735F6A67726031719677B1B38 /* BFCancellationTokenRegistration.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + FD2A1B5A3B8F58A419B8030AB3B0C900 /* PFOperationSet.h in Headers */ = {isa = PBXBuildFile; fileRef = F918BC0806DF4B41E1EF8762440B3FAF /* PFOperationSet.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FD60C452AEB7A05724E5BC76D389C794 /* RKHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9086156C9220E522C597B7BE572F6BFB /* RKHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + FDF39F9BC888D9146BC087518C89A8F6 /* FBSDKTypeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 220DF0DD34431D9668F2D2A15D25B3E7 /* FBSDKTypeUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FE0C5ACB05FF0C1803B48C2A0FDBFB2D /* POPBasicAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CDA9E34CFAB4648EC74D9ED76EF02AC /* POPBasicAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FE44D1FCA03026E71140FBE5FE12FBAA /* RKObjectRequestOperationSubclass.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E3AF8A6E915006D004A9CF92CA325D /* RKObjectRequestOperationSubclass.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FEAB4AF7F2C57BDEFD6081038CFD20FB /* FBSDKLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 9860C0C7692D5A2C0C40448F5323C485 /* FBSDKLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FF185ADF983855172EE9FA3D34A91DD6 /* POPDecayAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 55795C67F8572CA13753F14AC059940B /* POPDecayAnimation.mm */; }; + FF6C07931C151FAE59F3FB55F032AF23 /* FBSDKAppEventsState.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D1059A8B21D1214B8EA1A8BCF6B2CE5 /* FBSDKAppEventsState.m */; }; + FF7920785C7F9A6CBCDBFB44A8C63791 /* PFObjectFilePersistenceController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1906627F9057BDB4DC26FC8D67A0AD0D /* PFObjectFilePersistenceController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FFEDBF912F4CF43D78BC4F4331F09059 /* PFAnalyticsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D9C8B62E94BADCE53C2B3A336B91A66 /* PFAnalyticsController.h */; settings = {ATTRIBUTES = (Project, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 2CBE7910D2EC2D855C213F7D17AA7055 /* PBXContainerItemProxy */ = { + 0AF81BBB1D00CE9364E007A09C3C2829 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 080AF914A09167DB5759A733917B840F; - remoteInfo = ISO8601DateFormatterValueTransformer; - }; - 339C469D88EE3434DAFA40C9E6F07FE1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = C47E006176ABF4755350B88C088C3F0D; - remoteInfo = RKValueTransformers; - }; - 349ED4A030A17CB37F5BFC4BE863A6F8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = C47E006176ABF4755350B88C088C3F0D; - remoteInfo = RKValueTransformers; + remoteGlobalIDString = A48601FEE4437A924848DB48369BA809; + remoteInfo = Bolts; }; - 3EC57B4C7E05EAE5D8D0CEE64F908894 /* PBXContainerItemProxy */ = { + 276A34C32823D237C256532097A068EB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 5366B7F679CF2BA31EA583EA35CA2D90; - remoteInfo = Parse; + remoteGlobalIDString = C78CAB9013653EB1A250B2DFD3BC7666; + remoteInfo = FBSDKShareKit; }; - 47172F3F466D90D95F4A8AE2922E0EB8 /* PBXContainerItemProxy */ = { + 302ED64CEF8BCEB768A5A5686F9E9202 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 7D2B4C2000D9D203AFCEB1913037D8E8; - remoteInfo = TransitionKit; + remoteGlobalIDString = 81D7FE2A0FD9258247B1232874B837DA; + remoteInfo = FBSDKCoreKit; }; - 52E7C227327DB7F4EF156454BC74CAA4 /* PBXContainerItemProxy */ = { + 4201516B1237D71DE5D182C3E05A7889 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 61681BF0E677683490353B846C61A129; - remoteInfo = AFNetworking; + remoteGlobalIDString = C47E006176ABF4755350B88C088C3F0D; + remoteInfo = RKValueTransformers; }; 5F9ACE740BBE74B9EF18ED10D402EBFB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -916,12 +955,12 @@ remoteGlobalIDString = A48601FEE4437A924848DB48369BA809; remoteInfo = Bolts; }; - 753FA91ACDD9D25D657204E0ADBB6FE3 /* PBXContainerItemProxy */ = { + 675BFDC98D3AE67CA01D558BDCB9A6B7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = A48601FEE4437A924848DB48369BA809; - remoteInfo = Bolts; + remoteGlobalIDString = 4E286D373D75563CE26E479A68203892; + remoteInfo = FBSDKLoginKit; }; 7FC4D59C7661F1F90B9637A4AA76565C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -930,61 +969,61 @@ remoteGlobalIDString = C47E006176ABF4755350B88C088C3F0D; remoteInfo = RKValueTransformers; }; - 898060DAD9C6F56E39CBC74E7C3BF4CD /* PBXContainerItemProxy */ = { + A909E61D233546F6A1FB381F7E377CA7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 4E286D373D75563CE26E479A68203892; - remoteInfo = FBSDKLoginKit; + remoteGlobalIDString = 080AF914A09167DB5759A733917B840F; + remoteInfo = ISO8601DateFormatterValueTransformer; }; - 8A21679C58B10CC321CF4F0A4AFE1D12 /* PBXContainerItemProxy */ = { + A94178143C22B923AD7FB31DE66228B0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 9145E070690055EA2D82D264E78B0F71; - remoteInfo = FoldingTabBar; + remoteGlobalIDString = A48601FEE4437A924848DB48369BA809; + remoteInfo = Bolts; }; - 96693A54A0BFA8B81D156BF21770C588 /* PBXContainerItemProxy */ = { + AF0BFB883EC6A98CD8AE8E24C8F426B1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 81D7FE2A0FD9258247B1232874B837DA; - remoteInfo = FBSDKCoreKit; + remoteGlobalIDString = 0EB292B9319B2DAFB20D9A12B70C9D45; + remoteInfo = RestKit; }; - 976E4F9B0513141FCEA3BAB7C51C8A0B /* PBXContainerItemProxy */ = { + B1A299548977B6ABB67A7B67B42367D6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = BEE18208B27447ADBC42B142637E5653; - remoteInfo = SOCKit; + remoteGlobalIDString = 080AF914A09167DB5759A733917B840F; + remoteInfo = ISO8601DateFormatterValueTransformer; }; - A1E2F802EE663F8DD0A6BE0FFD496B02 /* PBXContainerItemProxy */ = { + B523CD37BCE78A7AE1C6DB51DA33B0C8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 080AF914A09167DB5759A733917B840F; - remoteInfo = ISO8601DateFormatterValueTransformer; + remoteGlobalIDString = 05AF921757BAF218468C62708B020AA6; + remoteInfo = TransitionKit; }; - A3F917A717D8563642755DA31CDA523A /* PBXContainerItemProxy */ = { + BAACCA3BC071717750DC231D62B73AD2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 7D2B4C2000D9D203AFCEB1913037D8E8; - remoteInfo = TransitionKit; + remoteGlobalIDString = 61681BF0E677683490353B846C61A129; + remoteInfo = AFNetworking; }; - A94178143C22B923AD7FB31DE66228B0 /* PBXContainerItemProxy */ = { + D0849CD3CF9A05520CE20A883B2B4F39 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = A48601FEE4437A924848DB48369BA809; - remoteInfo = Bolts; + remoteGlobalIDString = C47E006176ABF4755350B88C088C3F0D; + remoteInfo = RKValueTransformers; }; - B1239271F4A1FD7D59D205FD338D610B /* PBXContainerItemProxy */ = { + D1818ED7610953D782FE1124E1218D77 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = BEE18208B27447ADBC42B142637E5653; - remoteInfo = SOCKit; + remoteGlobalIDString = 05AF921757BAF218468C62708B020AA6; + remoteInfo = TransitionKit; }; D38BE89B6FB2301AC09AD26156B819E8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -993,26 +1032,26 @@ remoteGlobalIDString = 81D7FE2A0FD9258247B1232874B837DA; remoteInfo = FBSDKCoreKit; }; - DD9ABECB9558235383385F6FC07092C1 /* PBXContainerItemProxy */ = { + E06E7B292C6EE211982F723016ADBF4B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 61681BF0E677683490353B846C61A129; - remoteInfo = AFNetworking; + remoteGlobalIDString = 5366B7F679CF2BA31EA583EA35CA2D90; + remoteInfo = Parse; }; - E0E5E109337B187FD694994086A939B4 /* PBXContainerItemProxy */ = { + E530D725F329BCA4799A9262ABCAE598 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = C78CAB9013653EB1A250B2DFD3BC7666; - remoteInfo = FBSDKShareKit; + remoteGlobalIDString = DD71C0AD634DC4E364BC189688A42294; + remoteInfo = pop; }; - EF48640673BF68A34C2B66E619477480 /* PBXContainerItemProxy */ = { + E92B930C85A1D208110782E0EDC04E3C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 950F7D9F52389DCF637F3C1313255F78; - remoteInfo = RestKit; + remoteGlobalIDString = D8FDBC10A40DB83968987CBA76E4F7DD; + remoteInfo = SOCKit; }; F2525FB3B5405DC4B1BAF37F01F4D2AB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -1021,891 +1060,967 @@ remoteGlobalIDString = 81D7FE2A0FD9258247B1232874B837DA; remoteInfo = FBSDKCoreKit; }; + FAD9FE9F58E1BE6A32DD807949F6E4A4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9145E070690055EA2D82D264E78B0F71; + remoteInfo = FoldingTabBar; + }; + FDFB1A8326188F82A80CD07E5ACA2D87 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 61681BF0E677683490353B846C61A129; + remoteInfo = AFNetworking; + }; + FE69D65D7B77276503ADD40689F26FD5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = D8FDBC10A40DB83968987CBA76E4F7DD; + remoteInfo = SOCKit; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00595F6FB2C45EBEB4850162FFBAFBDA /* RKRouteSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRouteSet.h; path = Code/Network/RKRouteSet.h; sourceTree = "<group>"; }; - 005EDF3610A35FCCB1EC8C406162532C /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = "<group>"; }; - 006EA441F280F24D02FFA3BABCECC824 /* PFURLSessionCommandRunner.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionCommandRunner.m; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.m; sourceTree = "<group>"; }; - 00A6001B9377F35CFA12A27639003F73 /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = "<group>"; }; - 0100E24D37FE9C4A3412983EC266C1C7 /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = "<group>"; }; - 0149B0C82CA899926A01FA591E4710C4 /* PFAnonymousUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils.h; path = Parse/PFAnonymousUtils.h; sourceTree = "<group>"; }; - 01577EF1EEDCE5208D4B8AC6FDC7CC0B /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = "<group>"; }; - 0168088B34D75689673FA7BA85F0B641 /* RestKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RestKit.h; path = Code/RestKit.h; sourceTree = "<group>"; }; - 016FE71D37A737A72140AC6154407A41 /* BFAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink_Internal.h; path = Bolts/iOS/BFAppLink_Internal.h; sourceTree = "<group>"; }; - 01B3303DA64A64E4B58FED1912BEFCDF /* FBSDKShareVideoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m; sourceTree = "<group>"; }; - 01C1843D737F908141E29AADDC66AB8B /* PFOfflineQueryLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryLogic.m; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m; sourceTree = "<group>"; }; - 01EDAA9B73CA1A9B90D5CCD0CE04D58F /* PFSQLiteDatabase_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase_Private.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase_Private.h; sourceTree = "<group>"; }; - 01FB35B0ADE41A152252E1ED0988B17D /* FBSDKShareDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m; sourceTree = "<group>"; }; - 01FEEA6D377107B1A0563028100F1FFD /* RKResponseDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKResponseDescriptor.h; path = Code/Network/RKResponseDescriptor.h; sourceTree = "<group>"; }; - 037FA6D5161E6EA0F72B070763EA805A /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h; sourceTree = "<group>"; }; - 03D900F84420FEA97FC38820C59BB2E6 /* PFInternalUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInternalUtils.m; path = Parse/Internal/PFInternalUtils.m; sourceTree = "<group>"; }; - 03F801D486528ACB735E258BEAE163CE /* PFPropertyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo.m; sourceTree = "<group>"; }; - 047F85BB51947407A2598BD224EF6F03 /* RKObjectRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectRequestOperation.m; path = Code/Network/RKObjectRequestOperation.m; sourceTree = "<group>"; }; - 048FF1F23681E364A43114EA047AB00E /* BFAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkTarget.h; path = Bolts/iOS/BFAppLinkTarget.h; sourceTree = "<group>"; }; - 04FD35F060DAF86D25973ECA13C4B1C6 /* BFURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL.h; path = Bolts/iOS/BFURL.h; sourceTree = "<group>"; }; - 0526EA7D5B6610515F179B3B16E6EDF2 /* PFObjectEstimatedData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectEstimatedData.m; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.m; sourceTree = "<group>"; }; - 05528EC9662F1A87AE94B74D156D8CC0 /* PFFileDataStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileDataStream.h; path = Parse/Internal/File/FileDataStream/PFFileDataStream.h; sourceTree = "<group>"; }; - 0565BEC2CF133E7552070ADB0B6B25C7 /* PFDefaultACLController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDefaultACLController.h; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.h; sourceTree = "<group>"; }; - 057581746F9592678DE1D227AA52EB2D /* PFCommandCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache_Private.h; path = Parse/Internal/PFCommandCache_Private.h; sourceTree = "<group>"; }; - 05A01B956AE10C43AD0F5B2B2B7920BF /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = "<group>"; }; - 05CCBF923371A8F436D56A7223B904D7 /* FBSDKMessengerIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessengerIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h; sourceTree = "<group>"; }; - 05D15859D636D2225F8443617E021DFC /* PFAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAssert.h; path = Parse/Internal/PFAssert.h; sourceTree = "<group>"; }; - 05EF3ADB060D32A9DFF67851EBE647C0 /* RKMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapping.h; path = Code/ObjectMapping/RKMapping.h; sourceTree = "<group>"; }; - 06A4FFC3574F662CBE4301546762B2B0 /* PFFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileState.m; path = Parse/Internal/File/State/PFFileState.m; sourceTree = "<group>"; }; - 0711E2059F93A9DCBD5B583B9A11D2F5 /* libTransitionKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libTransitionKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 080DA549FB3DF87C2D0F356163642618 /* TransitionKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "TransitionKit-prefix.pch"; sourceTree = "<group>"; }; - 0820B0D5F4674F138EA3BB3292D26CD0 /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = "<group>"; }; - 08C17176133A418BBA5506240483F44C /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = "<group>"; }; - 0A3D69E13596F5D45D883E1AE14D9B94 /* PFObjectFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCodingLogic.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.h; sourceTree = "<group>"; }; - 0AAEA066289DB63479C8EA3E37BC7E15 /* FBSDKAccessTokenCacheV3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m; sourceTree = "<group>"; }; - 0ABC3BBED3C3C10F8A825E0751B3A6DB /* PFMutableObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableObjectState.m; path = Parse/Internal/Object/State/PFMutableObjectState.m; sourceTree = "<group>"; }; - 0AE7CF3C4BBBCA9F05072DF89F75C0B3 /* AFPropertyListRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFPropertyListRequestOperation.m; path = AFNetworking/AFPropertyListRequestOperation.m; sourceTree = "<group>"; }; - 0BD4E2FDA8D2C7FF9BEBBCB6D90B725F /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = "<group>"; }; - 0BEED67AEB0626E1D942E397F7BFE7C8 /* PFSessionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionController.h; path = Parse/Internal/Session/Controller/PFSessionController.h; sourceTree = "<group>"; }; - 0C3ADF3356A01C102A78C499D44C195E /* RKTestHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestHelpers.h; path = Code/Testing/RKTestHelpers.h; sourceTree = "<group>"; }; - 0CA2B777015AD911501F34BE9E2A08EB /* FBSDKAccessTokenCacheV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV4.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h; sourceTree = "<group>"; }; - 0CBE41855C229057359338A397CF9CBF /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = "<group>"; }; - 0CE33DAD07C0504380B377D5B4E23F61 /* FBSDKLikeObjectType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeObjectType.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m; sourceTree = "<group>"; }; - 0D5EC58BD4863BEC2A2723C8FA5FE9B0 /* FBSDKLikeBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h; sourceTree = "<group>"; }; - 0E780E029F38CD5DC4D44B959AE7B2CF /* FBSDKAccessTokenCacheV3_21.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_21.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h; sourceTree = "<group>"; }; - 0EF150B806961F2973DC836A0D2A1391 /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = "<group>"; }; - 0F962944E2CEA6B4A8913F2C5BDEB690 /* PFObjectFileCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCoder.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.m; sourceTree = "<group>"; }; - 0FBCAB70FB9A6977DE8D64B963124B26 /* FBSDKBridgeAPICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPICrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h; sourceTree = "<group>"; }; - 0FE8823AC87A2EA7D2BF645AA039E957 /* YALTabBarItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALTabBarItem.h; path = FoldingTabBar/Model/TabBarItem/YALTabBarItem.h; sourceTree = "<group>"; }; - 0FEA53773CB8E3FB3A322C0B4389B7A5 /* PFRelation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelation.m; path = Parse/PFRelation.m; sourceTree = "<group>"; }; - 1019C96E930FDF66BCD79751678FFFF6 /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = "<group>"; }; - 1039AA115A854C64209875E6B8B20ADF /* FBSDKGameRequestContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m; sourceTree = "<group>"; }; - 10761AFEB4163029E0BB84E7271803E8 /* RKMappingErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingErrors.h; path = Code/ObjectMapping/RKMappingErrors.h; sourceTree = "<group>"; }; + 00867696A579EF950503FFC6BFDC74DD /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = "<group>"; }; + 011534C01155F79E4047CADDE68EF6B8 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 012EA998B79C045DB5F3DF0D066F78B1 /* PFCurrentConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentConfigController.m; path = Parse/Internal/Config/Controller/PFCurrentConfigController.m; sourceTree = "<group>"; }; + 01A50C2394596A1AAF49C7A2877C776E /* PFPurchase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchase.m; path = Parse/PFPurchase.m; sourceTree = "<group>"; }; + 02AEBA17B69A4D55F659D4F44440127E /* ParseManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseManager.m; path = Parse/Internal/ParseManager.m; sourceTree = "<group>"; }; + 030B329DF20766AE685434CD734BC3B2 /* PFRESTSessionCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTSessionCommand.m; path = Parse/Internal/Commands/PFRESTSessionCommand.m; sourceTree = "<group>"; }; + 033F7B99C3A65CD435C0B7A09C59F876 /* RKResponseMapperOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKResponseMapperOperation.h; path = Code/Network/RKResponseMapperOperation.h; sourceTree = "<group>"; }; + 03549C9A2FD883CD12D063617A47E0D3 /* FBSDKLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m; sourceTree = "<group>"; }; + 03B64D2A236E8A41E92A66B21F198BFB /* FBSDKCoreKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKCoreKit-prefix.pch"; sourceTree = "<group>"; }; + 03C91AECE7686A27F9032A4DCC43165E /* PFWeakValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFWeakValue.m; path = Parse/Internal/PFWeakValue.m; sourceTree = "<group>"; }; + 044941FE89AB594A010087B94F17D923 /* FBSDKLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h; sourceTree = "<group>"; }; + 04E79E027951925EA1691B4B8E395973 /* PFMultiProcessFileLockController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLockController.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.m; sourceTree = "<group>"; }; + 0587E0A5FA037D15DDF1E0DD7E70CD5D /* FBSDKAppGroupAddDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupAddDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h; sourceTree = "<group>"; }; + 05A46A1CCAAB75FBBA2C67F460435143 /* POPCGUtils.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPCGUtils.mm; path = pop/POPCGUtils.mm; sourceTree = "<group>"; }; + 05D4509ED8E7E863F79C2BDF6FE4471C /* FBSDKShareOpenGraphAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphAction.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m; sourceTree = "<group>"; }; + 06292442821AF9572A443AF0D949122D /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = "<group>"; }; + 0648A7B89F8F0C429E649E87FBFBD699 /* PFPurchaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchaseController.m; path = Parse/Internal/Purchase/Controller/PFPurchaseController.m; sourceTree = "<group>"; }; + 0673474C0D02C740FB04EE10B58213D9 /* RKObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectUtilities.m; path = Code/ObjectMapping/RKObjectUtilities.m; sourceTree = "<group>"; }; + 06FB17807D8F9BB90C006F1AA1422EEB /* PFSQLiteStatement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteStatement.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.m; sourceTree = "<group>"; }; + 078AB2530E4CDAB1E634AE38A5545949 /* RKManagedObjectRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKManagedObjectRequestOperation.m; path = Code/Network/RKManagedObjectRequestOperation.m; sourceTree = "<group>"; }; + 07D8A98D56E6D538D6FA0B232BBCBA03 /* PFEncoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEncoder.m; path = Parse/Internal/PFEncoder.m; sourceTree = "<group>"; }; + 0803B22C601D5D4145A1B91DB87E04E3 /* RKMapperOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMapperOperation.m; path = Code/ObjectMapping/RKMapperOperation.m; sourceTree = "<group>"; }; + 0842DD1DCDFD9683C89B6A9078E9D0FC /* PFRESTQueryCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTQueryCommand.m; path = Parse/Internal/Commands/PFRESTQueryCommand.m; sourceTree = "<group>"; }; + 092AA11ADB8FDDCC538A0ABDD75F38E8 /* PFUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserController.h; path = Parse/Internal/User/Controller/PFUserController.h; sourceTree = "<group>"; }; + 09343BA3B921E20A6185A17744E53B63 /* POPCGUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPCGUtils.h; path = pop/POPCGUtils.h; sourceTree = "<group>"; }; + 099E673F2FD9E7D461C9590B6D38BA1F /* PFUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState.h; path = Parse/Internal/User/State/PFUserState.h; sourceTree = "<group>"; }; + 09A74F4E5B1694ED02FEFEE3567FD5C4 /* POPCustomAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPCustomAnimation.h; path = pop/POPCustomAnimation.h; sourceTree = "<group>"; }; + 09BC6A273BD14FEC82E66ADE94F2D7AB /* RKPathMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPathMatcher.m; path = Code/Network/RKPathMatcher.m; sourceTree = "<group>"; }; + 0A1EA9C9D41AE2090A25AEB7774EFF7F /* PFHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHash.h; path = Parse/Internal/PFHash.h; sourceTree = "<group>"; }; + 0A36A67D8095CA8BA88F3D9C867BF723 /* RKRouter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRouter.m; path = Code/Network/RKRouter.m; sourceTree = "<group>"; }; + 0A7261E40A7493778EDD34738B42676E /* PFBase64Encoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBase64Encoder.h; path = Parse/Internal/PFBase64Encoder.h; sourceTree = "<group>"; }; + 0B0314DD062570E8416F2523D03B9EF6 /* PFLocationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLocationManager.h; path = Parse/Internal/PFLocationManager.h; sourceTree = "<group>"; }; + 0B843EB1DFCFEE6E5EE55AC6767E4E13 /* FBSDKShareError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareError.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m; sourceTree = "<group>"; }; + 0B8AE15FBFEC0BE016020B8970ADE865 /* BFCancellationTokenSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenSource.m; path = Bolts/Common/BFCancellationTokenSource.m; sourceTree = "<group>"; }; + 0BAE999CCCB6D83C2D4DFA288FE9C7BF /* PFDevice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDevice.m; path = Parse/Internal/PFDevice.m; sourceTree = "<group>"; }; + 0C43080C0B2655A28B3CE9D3DD9B32B2 /* POPAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimation.mm; path = pop/POPAnimation.mm; sourceTree = "<group>"; }; + 0D0B957E23560E8729AFBC541E7F0401 /* PFURLSessionCommandRunner.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionCommandRunner.m; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.m; sourceTree = "<group>"; }; + 0D612FDB5856A0B0DC71C9A83AF67537 /* FBSDKShareError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareError.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h; sourceTree = "<group>"; }; + 0D63D25E0D4B1B1573FC3216A3041E64 /* BFExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFExecutor.h; path = Bolts/Common/BFExecutor.h; sourceTree = "<group>"; }; + 0D6A9F671AC5AAF2E4BDEE1D46C1A2DF /* RKDynamicMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDynamicMapping.h; path = Code/ObjectMapping/RKDynamicMapping.h; sourceTree = "<group>"; }; + 0EB6E9BC99D4CE39BCEA9AB574501691 /* PFURLSessionUploadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionUploadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.h; sourceTree = "<group>"; }; + 0EDCBE9EDEE91346EC864E690AF4D08E /* RKTestNotificationObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestNotificationObserver.h; path = Code/Testing/RKTestNotificationObserver.h; sourceTree = "<group>"; }; + 0FBD3B84E14ADBD2E513A3522C2777DC /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m; sourceTree = "<group>"; }; + 0FCED2B89C49FCB98FAE1186D1725F5B /* FBSDKShareAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareAPI.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h; sourceTree = "<group>"; }; + 0FD81CD43134464279746BA1F66D5A48 /* PFCoreManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCoreManager.m; path = Parse/Internal/PFCoreManager.m; sourceTree = "<group>"; }; + 10475FA9B1F63748681C1D95ED038819 /* PFObjectController_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController_Private.h; path = Parse/Internal/Object/Controller/PFObjectController_Private.h; sourceTree = "<group>"; }; 10834806BD7B412BC24F347361FA2C8E /* Pods-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-acknowledgements.plist"; sourceTree = "<group>"; }; - 10A0FDA427EFFCE744C8CB7862407B47 /* PFRESTCloudCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCloudCommand.m; path = Parse/Internal/Commands/PFRESTCloudCommand.m; sourceTree = "<group>"; }; - 10EABBE60B88CF3D2AF469F17208ADE9 /* FBSDKShareOpenGraphContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m; sourceTree = "<group>"; }; - 113F75AFA14F88AEE7BCF0BBB4C858BE /* BFAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkNavigation.m; path = Bolts/iOS/BFAppLinkNavigation.m; sourceTree = "<group>"; }; - 1142FF164E91B0154F7D1B3E3CCD129D /* FBSDKShareKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareKit+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h"; sourceTree = "<group>"; }; - 1154985103CE37155F52D0BFC04340EE /* PFInstallationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationPrivate.h; path = Parse/Internal/Installation/PFInstallationPrivate.h; sourceTree = "<group>"; }; - 11590B62084307FCCBCBCD4CB7D71BA1 /* PFPushController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushController.m; path = Parse/Internal/Push/Controller/PFPushController.m; sourceTree = "<group>"; }; - 117FC8B2ADDE85F697FC85ECF51FD3F3 /* RKMapperOperation_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapperOperation_Private.h; path = Code/ObjectMapping/RKMapperOperation_Private.h; sourceTree = "<group>"; }; - 1231F575BA4305E598781441AF031F5E /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = "<group>"; }; - 128F630995A27DB0544A45BF67DE2E4D /* PFMutableUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableUserState.h; path = Parse/Internal/User/State/PFMutableUserState.h; sourceTree = "<group>"; }; - 12F4038DEE96BCA00C4F13577F8FB019 /* ISO8601DateFormatterValueTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ISO8601DateFormatterValueTransformer.m; path = Code/ISO8601DateFormatterValueTransformer.m; sourceTree = "<group>"; }; - 1300CB87D7929FE78AD13A425DD18939 /* PFSQLiteDatabaseResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseResult.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.m; sourceTree = "<group>"; }; - 1402676BAF69E76E84C7957AD539C134 /* PFUserState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState_Private.h; path = Parse/Internal/User/State/PFUserState_Private.h; sourceTree = "<group>"; }; - 14424EF937E20F708472093A62D7D67B /* RKLumberjackLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKLumberjackLogger.m; path = Code/Support/RKLumberjackLogger.m; sourceTree = "<group>"; }; - 145AAF7E6CD426F5DC9079DD9214733B /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = "<group>"; }; - 146B3C6F4906B1DF01F844DF3C869939 /* PFCurrentInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentInstallationController.h; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.h; sourceTree = "<group>"; }; - 1537B3204A5DD70D808286FE603C4A97 /* RKValueTransformers-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RKValueTransformers-dummy.m"; sourceTree = "<group>"; }; - 15505CAD38B537EF229C41382091B2B7 /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = "<group>"; }; - 1578615981EB295CD3B68AD600652886 /* PFHTTPURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHTTPURLRequestConstructor.m; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.m; sourceTree = "<group>"; }; - 15CCBEB339CF012A7EF123E309124318 /* PFRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState.h; path = Parse/Internal/Relation/State/PFRelationState.h; sourceTree = "<group>"; }; - 16343207944FB07AF9037C8A76C5F7A2 /* PFFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFile.m; path = Parse/PFFile.m; sourceTree = "<group>"; }; + 108401CAD15D4703C0D17F39835C74AE /* PFOperationSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOperationSet.m; path = Parse/Internal/Object/OperationSet/PFOperationSet.m; sourceTree = "<group>"; }; + 10C11BD85333AB6363CF6EC82E870605 /* PFPushController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushController.h; path = Parse/Internal/Push/Controller/PFPushController.h; sourceTree = "<group>"; }; + 10D33DBF4C307AD2EA9D10FA2001F6E0 /* RKURLEncodedSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKURLEncodedSerialization.h; path = Code/Support/RKURLEncodedSerialization.h; sourceTree = "<group>"; }; + 10FAFCCD6FB4FC9E877FCB27902EA1F7 /* RKPropertyMappingTestExpectation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyMappingTestExpectation.h; path = Code/Testing/RKPropertyMappingTestExpectation.h; sourceTree = "<group>"; }; + 114DF71DB16E01CD9902FA71F5FCB868 /* RKObjectManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectManager.m; path = Code/Network/RKObjectManager.m; sourceTree = "<group>"; }; + 11575C24EBD20B38803926830ED63640 /* PFDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDecoder.m; path = Parse/Internal/PFDecoder.m; sourceTree = "<group>"; }; + 118B70D2949B865CA76511460D9D0C92 /* PFRESTQueryCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTQueryCommand.h; path = Parse/Internal/Commands/PFRESTQueryCommand.h; sourceTree = "<group>"; }; + 11A34265733816DD6719407EE51BEDD9 /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = "<group>"; }; + 11CBB787D4E85EE9F313E56D6B653B6F /* POPAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimator.h; path = pop/POPAnimator.h; sourceTree = "<group>"; }; + 12148D9B34DE0B074CF161C3B74EA2F9 /* RKObjectParameterization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectParameterization.h; path = Code/Network/RKObjectParameterization.h; sourceTree = "<group>"; }; + 129476AE26D881F46C3F727D95A2D8EE /* PFOfflineObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineObjectController.h; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.h; sourceTree = "<group>"; }; + 131783F296EC8FE80CA0ACE2C3C056CC /* PFPinningEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningEventuallyQueue.m; path = Parse/Internal/PFPinningEventuallyQueue.m; sourceTree = "<group>"; }; + 134ACDC2444EE29856334D3196F53AC0 /* FBSDKMessengerIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessengerIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m; sourceTree = "<group>"; }; + 136503C1BC94CD505033988EB9C16090 /* PFOfflineQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryController.m; path = Parse/Internal/Query/Controller/PFOfflineQueryController.m; sourceTree = "<group>"; }; + 1375129BA8E11876FE8F3530124E4FF9 /* PFSessionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionController.h; path = Parse/Internal/Session/Controller/PFSessionController.h; sourceTree = "<group>"; }; + 137AE6FE411D32FD166221B1257A8D27 /* PFQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryController.h; path = Parse/Internal/Query/Controller/PFQueryController.h; sourceTree = "<group>"; }; + 138471689F57812BFA9933C75A79A7D5 /* PFUserState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState_Private.h; path = Parse/Internal/User/State/PFUserState_Private.h; sourceTree = "<group>"; }; + 13B2A7FD3B5E9C5F68CC0E991780A0EC /* PFAnonymousUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils.h; path = Parse/PFAnonymousUtils.h; sourceTree = "<group>"; }; + 13E16ED5531463D4705B39EE950AF115 /* PFPushController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushController.m; path = Parse/Internal/Push/Controller/PFPushController.m; sourceTree = "<group>"; }; + 1488210FE220BBA6CCA5EBE2C7D73FA7 /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m; sourceTree = "<group>"; }; + 1516B2B4A8F91019AE5E4283AA8F5E5D /* PFConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConstants.h; path = Parse/PFConstants.h; sourceTree = "<group>"; }; + 1635AF96EB71FB3FEBEE52A4395CFA1B /* PFRESTObjectBatchCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectBatchCommand.h; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.h; sourceTree = "<group>"; }; + 163A2E68515F17EBB397973CE01A2E02 /* PFConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfig.m; path = Parse/PFConfig.m; sourceTree = "<group>"; }; 16621039C0E3312C216165BEF8D567DE /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; - 16AA64D1CEC68C44DEDAD61DAFB42709 /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = "<group>"; }; - 16AACACB54568C35001E53CAB3D7D64B /* RKMIMETypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMIMETypes.m; path = Code/Support/RKMIMETypes.m; sourceTree = "<group>"; }; - 16CCB8BB94AE34725A72A8769F301A7E /* lcl_config_logger_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_logger_RK.h; path = Code/Support/lcl_config_logger_RK.h; sourceTree = "<group>"; }; - 16D6292D8FAE18DC28FF78404DB719D9 /* PFProduct.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProduct.m; path = Parse/PFProduct.m; sourceTree = "<group>"; }; - 16D7414B803B24894CDD90ED3E31C1AB /* BFAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererView.m; path = Bolts/iOS/BFAppLinkReturnToRefererView.m; sourceTree = "<group>"; }; - 170E287A22801514CAF6C2EB522BE4A5 /* PFPropertyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo.h; sourceTree = "<group>"; }; - 173E06370DF9F26EB5591EE929B03D16 /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = "<group>"; }; - 1766F952ED7D24BA1223FECFB809EAEF /* BFExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFExecutor.m; path = Bolts/Common/BFExecutor.m; sourceTree = "<group>"; }; - 1801665BFA99C3E5F261CACB58723B11 /* ObjectMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ObjectMapping.h; path = Code/ObjectMapping.h; sourceTree = "<group>"; }; - 180FF861DE91C6A915DA7C2A92862B35 /* FBSDKLikeControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeControl.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h; sourceTree = "<group>"; }; - 1853537D2954FD958EC042517906C776 /* PFCurrentConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentConfigController.h; path = Parse/Internal/Config/Controller/PFCurrentConfigController.h; sourceTree = "<group>"; }; - 19333F981C770A5CDAFA1A9B6901522C /* PFCommandRunning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunning.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.h; sourceTree = "<group>"; }; - 194BBF93E1D47E864E12261443E6F23F /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = "<group>"; }; - 1960AF182D01226FEBB84BF5AB083402 /* RKMapperOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMapperOperation.m; path = Code/ObjectMapping/RKMapperOperation.m; sourceTree = "<group>"; }; - 19F20D1F4CF5FCB81834DCE24BD63E00 /* FBSDKShareLinkContent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareLinkContent+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h"; sourceTree = "<group>"; }; - 19F270B7BF779B177C75EA8CFAAA76CB /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkNavigation.h; path = Bolts/iOS/BFAppLinkNavigation.h; sourceTree = "<group>"; }; - 1B1D85199C350E1CC77B906C3E4938BF /* BFTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTask.h; path = Bolts/Common/BFTask.h; sourceTree = "<group>"; }; - 1B5B5284F66A4663EFFDE2B8B5E336B1 /* PFCloudCodeController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloudCodeController.h; path = Parse/Internal/CloudCode/PFCloudCodeController.h; sourceTree = "<group>"; }; - 1B632D115A665AE3E0A0F24A1BF865D7 /* FBSDKAppInviteDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m; sourceTree = "<group>"; }; - 1B9DF380862F77749D695F3104231B01 /* PFRESTAnalyticsCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTAnalyticsCommand.h; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.h; sourceTree = "<group>"; }; - 1C1EBD8327430E9BC4CE07572302C3B1 /* PFObjectController_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController_Private.h; path = Parse/Internal/Object/Controller/PFObjectController_Private.h; sourceTree = "<group>"; }; - 1CB585E247C1F3D47072B64F704F03B7 /* PFAnonymousAuthenticationProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousAuthenticationProvider.m; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.m; sourceTree = "<group>"; }; - 1CB99487DF93544382D4E7BB83E98DDE /* PFFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile.h; path = Parse/PFFile.h; sourceTree = "<group>"; }; - 1D3E68B1FF2DD23DBAFF7854AD495337 /* PFObjectLocalIdStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectLocalIdStore.m; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.m; sourceTree = "<group>"; }; - 1D8C0D8749CEE57E58CE3B5262781F8C /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = "<group>"; }; - 1E2286118EDD86F67D14DA0213725FB6 /* FBSDKAppInviteContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m; sourceTree = "<group>"; }; + 16AA732281290E4169524C7073D0E8C9 /* PFUserAuthenticationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserAuthenticationController.m; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m; sourceTree = "<group>"; }; + 1747B6933EBB45F17399984642773739 /* PFCategoryLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCategoryLoader.h; path = Parse/Internal/PFCategoryLoader.h; sourceTree = "<group>"; }; + 17713158760C0CE314D469EF9DAB5E98 /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = "<group>"; }; + 17E73976887C42E701026CD6E8B7F4E4 /* FBSDKLoginKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKLoginKit-prefix.pch"; sourceTree = "<group>"; }; + 1804AEAE0A042ABB0AB0F3B3CCD54B2A /* PFLocationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLocationManager.m; path = Parse/Internal/PFLocationManager.m; sourceTree = "<group>"; }; + 1851DD5C5804EC9A837131EDAC8D3EDB /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = "<group>"; }; + 1851F12158736155A52C64E33E513999 /* RKValueTransformers-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RKValueTransformers-prefix.pch"; sourceTree = "<group>"; }; + 18811D86AFD569DE58C69DE2D674A00D /* lcl_config_extensions_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_extensions_RK.h; path = Code/Support/lcl_config_extensions_RK.h; sourceTree = "<group>"; }; + 1906627F9057BDB4DC26FC8D67A0AD0D /* PFObjectFilePersistenceController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFilePersistenceController.h; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.h; sourceTree = "<group>"; }; + 190B3059AD121705B18018211A6B6C66 /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = "<group>"; }; + 19393B003CB10D5DCBF525994DDE8462 /* PFInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationController.m; path = Parse/Internal/Installation/Controller/PFInstallationController.m; sourceTree = "<group>"; }; + 19397C043A357D696BBA9A55EFD5B167 /* PFSQLiteDatabaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseController.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.h; sourceTree = "<group>"; }; + 19A473DF4573D2A6FDD72DA3BA1C2C04 /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = "<group>"; }; + 19FFE36E5537E1838031F0725CD641C2 /* Bolts.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bolts.xcconfig; sourceTree = "<group>"; }; + 1ABF2667D317A8E92F4DAB58CAEEB37A /* PFFieldOperationDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperationDecoder.m; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.m; sourceTree = "<group>"; }; + 1AF2857CEDB6464020434166DEB5A36F /* AFURLConnectionOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLConnectionOperation.m; path = AFNetworking/AFURLConnectionOperation.m; sourceTree = "<group>"; }; + 1B162D277A2037FD2A114DD8C9CB5922 /* PFMutableRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableRelationState.h; path = Parse/Internal/Relation/State/PFMutableRelationState.h; sourceTree = "<group>"; }; + 1B1BBDE1A0182E4AAFF80CDBBDF1DAB9 /* FBSDKShareOpenGraphValueContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphValueContainer.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h; sourceTree = "<group>"; }; + 1B4CFCBF40F579D60F6CA51813334980 /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = "<group>"; }; + 1B6241CE08565BB6864AEF668F68FA18 /* PFPaymentTransactionObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPaymentTransactionObserver.m; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.m; sourceTree = "<group>"; }; + 1BDC71820826E3AC85B7BE2E689790EA /* PFThreadsafety.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFThreadsafety.m; path = Parse/Internal/ThreadSafety/PFThreadsafety.m; sourceTree = "<group>"; }; + 1C268AB8BD173983B11C4C2D404A9C57 /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = "<group>"; }; + 1C6681893EA2BE8AA8ED08B44B774980 /* BFURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFURL.m; path = Bolts/iOS/BFURL.m; sourceTree = "<group>"; }; + 1C9E34AAA6316628D1EF4D8BC3CDCAB1 /* POPCustomAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPCustomAnimation.mm; path = pop/POPCustomAnimation.mm; sourceTree = "<group>"; }; + 1CE3CC21857556B51CB17BCFCF1EE7B1 /* PFTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFTaskQueue.h; path = Parse/Internal/PFTaskQueue.h; sourceTree = "<group>"; }; + 1D50729BCCBCCC5A423CBB509507C3DC /* POPSpringSolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPSpringSolver.h; path = pop/POPSpringSolver.h; sourceTree = "<group>"; }; + 1D9362003B89F08493A37902350DA1BC /* libParse.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libParse.a; sourceTree = BUILT_PRODUCTS_DIR; }; 1E3783F1A59CCE93EEF653593AFAD5B5 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CoreLocation.framework; sourceTree = DEVELOPER_DIR; }; - 1EC4B2DFF792D6E7C2B1939641ED637C /* FBSDKSystemAccountStoreAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSystemAccountStoreAdapter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m; sourceTree = "<group>"; }; - 1F2B2346710518F3D818A44A68F02C5F /* PFRESTSessionCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTSessionCommand.h; path = Parse/Internal/Commands/PFRESTSessionCommand.h; sourceTree = "<group>"; }; - 1F5232ABD627549C1BEDB8630661C661 /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m; sourceTree = "<group>"; }; - 1F6776613E173DE4D99A1473A4C0B7A3 /* RKObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectUtilities.h; path = Code/ObjectMapping/RKObjectUtilities.h; sourceTree = "<group>"; }; - 1FDC2AC9DD87123DFCCB762335374C3D /* SOCKit.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SOCKit.m; sourceTree = "<group>"; }; - 202A67338938E6682685B9114E8F7E4D /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = "<group>"; }; - 2041D4CFC252E37771FDA0674BAC5493 /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = "<group>"; }; - 20476D5BF51291A996A02F8B096F7768 /* PFRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelationState.m; path = Parse/Internal/Relation/State/PFRelationState.m; sourceTree = "<group>"; }; - 204E788B570A793109481294415D9F28 /* PFPush.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPush.m; path = Parse/PFPush.m; sourceTree = "<group>"; }; - 211357AA873E1EF8383B30C370BE0F87 /* PFRESTObjectCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectCommand.h; path = Parse/Internal/Commands/PFRESTObjectCommand.h; sourceTree = "<group>"; }; - 212312E37823B602015F8558E2380BE5 /* PFInstallation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallation.m; path = Parse/PFInstallation.m; sourceTree = "<group>"; }; - 21378AD860758D2EA2336B59DC09BB68 /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h; sourceTree = "<group>"; }; - 213CA7050878B04AD0B0FEEFDE26FC3E /* FBSDKAccessToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessToken.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m; sourceTree = "<group>"; }; - 21AB5F2776814B493AE224A090442A49 /* PFApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFApplication.h; path = Parse/Internal/PFApplication.h; sourceTree = "<group>"; }; - 230215250F2BC4E1CCBB87F678DC507C /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m; sourceTree = "<group>"; }; - 2353E605872B5C10ED350AF2720B1ADC /* PFDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDecoder.h; path = Parse/Internal/PFDecoder.h; sourceTree = "<group>"; }; - 23A9DA06DB5F829FD8BDD6FD23E82A45 /* PFMutableQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableQueryState.m; path = Parse/Internal/Query/State/PFMutableQueryState.m; sourceTree = "<group>"; }; - 23F8033FB2A702EC958A60D0DEF98AC8 /* RKRequestDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRequestDescriptor.m; path = Code/Network/RKRequestDescriptor.m; sourceTree = "<group>"; }; - 24019153F5EA642D0DE4B7AA9C56FE37 /* PFAnonymousUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousUtils.m; path = Parse/PFAnonymousUtils.m; sourceTree = "<group>"; }; - 245A8375DA02518A0D28196BA09BB15F /* PFFile_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile_Private.h; path = Parse/Internal/File/PFFile_Private.h; sourceTree = "<group>"; }; - 246B31118F4482AFD1E5B6FBDDEE6EB2 /* ParseManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseManager.m; path = Parse/Internal/ParseManager.m; sourceTree = "<group>"; }; - 247CE7F46CACB36C92D0EF9B3F9FB9FF /* FBSDKGameRequestDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m; sourceTree = "<group>"; }; - 24D7D9AD22022709F66EBFB6726D41E5 /* ISO8601DateFormatterValueTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ISO8601DateFormatterValueTransformer.h; path = Code/ISO8601DateFormatterValueTransformer.h; sourceTree = "<group>"; }; - 2562632730FD0A59722B3C67E9C6C38E /* FBSDKLoginConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginConstants.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m; sourceTree = "<group>"; }; - 262AAA5A94DB64464A971372C0A5C98D /* FBSDKLikeActionControllerCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionControllerCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h; sourceTree = "<group>"; }; - 2694414E286680557D8AF8B1F6B64112 /* PFInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationController.m; path = Parse/Internal/Installation/Controller/PFInstallationController.m; sourceTree = "<group>"; }; - 271C2DE3C7E7DE81A83712AE674A962A /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = "<group>"; }; + 1EA0BB06D8B077DFC855CBF92505F74A /* RKErrorMessage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKErrorMessage.h; path = Code/ObjectMapping/RKErrorMessage.h; sourceTree = "<group>"; }; + 1EC237868E24D8CCBA8AA21DB4F43584 /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h"; sourceTree = "<group>"; }; + 1EE55AE735F6A67726031719677B1B38 /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = "<group>"; }; + 1FB151E5B82946D404F611FAC81C546B /* FBSDKAccessTokenCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCaching.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCaching.h; sourceTree = "<group>"; }; + 1FC50F7EF899B70145D9D7DB1F55E927 /* PFInstallationIdentifierStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.h; sourceTree = "<group>"; }; + 20512742319C64711FFF5148A7214E8D /* PFObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectControlling.h; path = Parse/Internal/Object/Controller/PFObjectControlling.h; sourceTree = "<group>"; }; + 205214C203BF751A124F1153AD9CBA8E /* PFWeakValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFWeakValue.h; path = Parse/Internal/PFWeakValue.h; sourceTree = "<group>"; }; + 207C347476CAA87AD1032D236FA290A2 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = en.lproj; path = Parse/Resources/en.lproj; sourceTree = "<group>"; }; + 209E38BB2ADFFA4C0E2497F629810AEB /* PFHTTPRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPRequest.h; path = Parse/Internal/HTTPRequest/PFHTTPRequest.h; sourceTree = "<group>"; }; + 20B291B44372ECD90FA4961CB9F9C9C4 /* RKPropertyMappingTestExpectation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyMappingTestExpectation.m; path = Code/Testing/RKPropertyMappingTestExpectation.m; sourceTree = "<group>"; }; + 20B8F6A2F2E484CD2E09B61345C563A0 /* FBSDKLoginManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManager+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h"; sourceTree = "<group>"; }; + 20D1F9C0BECD5D6036F5F1A63383C39D /* Bolts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Bolts.m; path = Bolts/Common/Bolts.m; sourceTree = "<group>"; }; + 20EA58DC0A0DC1E01333E2DC71658378 /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = "<group>"; }; + 20FCD32AE2B10221B23EC19A5B380953 /* PFReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFReachability.m; path = Parse/Internal/PFReachability.m; sourceTree = "<group>"; }; + 21E3824444DF9349B08182DF250A028D /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = "<group>"; }; + 220DF0DD34431D9668F2D2A15D25B3E7 /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h; sourceTree = "<group>"; }; + 224595D0364E886259E4B2F44C937D02 /* FBSDKShareOpenGraphObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphObject.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m; sourceTree = "<group>"; }; + 2246103381BDCE264B43C19253CCF7C6 /* PFProductsRequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProductsRequestHandler.m; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.m; sourceTree = "<group>"; }; + 22E1D8AA11E50E9A37281052037D86FF /* PFURLSessionDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.m; sourceTree = "<group>"; }; + 22F77D342CCB58DBAA7457C6289C028C /* PFInstallationConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationConstants.m; path = Parse/Internal/Installation/Constants/PFInstallationConstants.m; sourceTree = "<group>"; }; + 231F7C139C4CE6856490CCC6331A4BB0 /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = "<group>"; }; + 23397924D53E7B536CB59C3373E47BCC /* ParseManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseManager.h; path = Parse/Internal/ParseManager.h; sourceTree = "<group>"; }; + 240CCFABDE66FE6ADE38A4B02CB89687 /* PFMutablePushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutablePushState.h; path = Parse/Internal/Push/State/PFMutablePushState.h; sourceTree = "<group>"; }; + 2423BDB586DF4DF3F1525A1B5C40C54F /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = "<group>"; }; + 24851AC75A717461DF249C574A7E59B5 /* PFURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSession.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.m; sourceTree = "<group>"; }; + 24B58875AADE4ED78AB3942781E1AECC /* PFMutableACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableACLState.m; path = Parse/Internal/ACL/State/PFMutableACLState.m; sourceTree = "<group>"; }; + 25070753B1B37A1665F1F5332C0EF515 /* FBSDKLoginConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginConstants.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h; sourceTree = "<group>"; }; + 2551AB6C3C2A1C521E0184550321DE02 /* RKAttributeMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKAttributeMapping.m; path = Code/ObjectMapping/RKAttributeMapping.m; sourceTree = "<group>"; }; + 255D43CCCFDFD52C9090EF3B8972D72C /* PFSQLiteDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabase.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m; sourceTree = "<group>"; }; + 2562927BDB580A25FD1C5DE23213DD83 /* RKStringTokenizer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKStringTokenizer.m; path = Code/Support/RKStringTokenizer.m; sourceTree = "<group>"; }; + 2572DB6B289BFC9AA6F1D1DCFF16D994 /* PFCurrentInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentInstallationController.h; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.h; sourceTree = "<group>"; }; + 25913693021196FC72C7A8E7A937AFCC /* POPGeometry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPGeometry.h; path = pop/POPGeometry.h; sourceTree = "<group>"; }; + 25EF987A717711C8CEAE29DFF3C12EA0 /* PFRelation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelation.m; path = Parse/PFRelation.m; sourceTree = "<group>"; }; + 26576E563FF51DD9C6683E959913991D /* FBSDKShareOpenGraphContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.m; sourceTree = "<group>"; }; + 266541F607EB34A777991BD29D5D2556 /* CATransaction+TransactionWithAnimationsAndCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CATransaction+TransactionWithAnimationsAndCompletion.m"; path = "FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.m"; sourceTree = "<group>"; }; + 26A9B6AD16C16524DC90D9F1759B3E86 /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = "<group>"; }; + 26A9C85767DC8FE594E7F2DF14F867B2 /* PFCommandRunningConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunningConstants.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.m; sourceTree = "<group>"; }; + 26B6710576834D59FB5352DD3F5EB069 /* CAAnimation+YALTabBarViewAnimations.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CAAnimation+YALTabBarViewAnimations.m"; path = "FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.m"; sourceTree = "<group>"; }; + 26BE12FA64DB24FF7A1DF7937AEF98D6 /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = "<group>"; }; 272643F56613CA0D336AE3DBF19DC404 /* Pods-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-dummy.m"; sourceTree = "<group>"; }; - 2739B66EFCA7F40FAF75E4F39A6A9A7E /* PFCommandRunningConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunningConstants.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h; sourceTree = "<group>"; }; - 27B39579BA1A116F78E9C52D8518C9D8 /* PFFileStagingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileStagingController.m; path = Parse/Internal/File/Controller/PFFileStagingController.m; sourceTree = "<group>"; }; - 288890641419271C571594FA0568909D /* BFMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFMeasurementEvent.m; path = Bolts/iOS/BFMeasurementEvent.m; sourceTree = "<group>"; }; - 28C24077DDE26572ABFDFFBA58AEF0D2 /* FBSDKBoltsMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBoltsMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h; sourceTree = "<group>"; }; - 2903E773C725846E7E37922E881B5B52 /* PFConfig_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig_Private.h; path = Parse/Internal/Config/PFConfig_Private.h; sourceTree = "<group>"; }; - 29076EEBE727F01C11336FE621EEA957 /* PFAnonymousAuthenticationProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousAuthenticationProvider.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.h; sourceTree = "<group>"; }; - 29545B0051D4759CE30F62B98CE37FCB /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = "<group>"; }; - 2965F8E850F9EB3EA40B7FDBC0F6924E /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = "<group>"; }; - 2982D008CF0D29BDC45EE799823CC219 /* PFProductsRequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProductsRequestHandler.m; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.m; sourceTree = "<group>"; }; - 2994AAC8F7BD43FAA64FEED836452945 /* PFMutableRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableRelationState.m; path = Parse/Internal/Relation/State/PFMutableRelationState.m; sourceTree = "<group>"; }; - 29C1E470BE7725D82BB96486CEBA6B7A /* PFObjectFilePersistenceController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFilePersistenceController.h; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.h; sourceTree = "<group>"; }; - 29EEBBE595CAF744AD4307424F577DFD /* PFRESTCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCommand.m; path = Parse/Internal/Commands/PFRESTCommand.m; sourceTree = "<group>"; }; - 2A5B85D86C64A90A0CF498813B504388 /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = "<group>"; }; - 2A73024D1555D614CEC62670F070F5A9 /* BFCancellationTokenSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenSource.m; path = Bolts/Common/BFCancellationTokenSource.m; sourceTree = "<group>"; }; - 2AC4D864890FF57910E0C3F3ACE458D5 /* BFCancellationTokenSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenSource.h; path = Bolts/Common/BFCancellationTokenSource.h; sourceTree = "<group>"; }; - 2ADCEFE17BDF4D7075F5F77EB703339A /* RKDotNetDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDotNetDateFormatter.m; path = Code/Support/RKDotNetDateFormatter.m; sourceTree = "<group>"; }; - 2AE60E42A7DAEEDEA8449020B959B680 /* AFHTTPClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPClient.m; path = AFNetworking/AFHTTPClient.m; sourceTree = "<group>"; }; - 2B9F9B80CBA1DEAEF33627D58AB7E3CE /* YALFoldingTabBarController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALFoldingTabBarController.m; path = FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.m; sourceTree = "<group>"; }; - 2BDB55E9C39EE72564DF58E4922A0879 /* TKTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKTransition.h; path = Code/TKTransition.h; sourceTree = "<group>"; }; - 2C197AC911176562F9C82890218D2927 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 2CA213D7D985D157E1F5FE2776AE93F4 /* Parse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Parse.m; path = Parse/Parse.m; sourceTree = "<group>"; }; - 2CCDD526B69067FC32BF946A540F4C00 /* PFCoreManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreManager.h; path = Parse/Internal/PFCoreManager.h; sourceTree = "<group>"; }; - 2CCE2187DD9A71F1848E14301ED5B204 /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = "<group>"; }; - 2D0CD43CC78F18A69B36021FD018147B /* ISO8601DateFormatterValueTransformer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ISO8601DateFormatterValueTransformer-dummy.m"; sourceTree = "<group>"; }; - 2D639B8AB8EC8DD751AE4F019F908401 /* TransitionKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TransitionKit.h; path = Code/TransitionKit.h; sourceTree = "<group>"; }; - 2DA1030B666DF215688696A02F383A6B /* PFQueryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryUtilities.m; path = Parse/Internal/Query/Utilities/PFQueryUtilities.m; sourceTree = "<group>"; }; - 2DE00A9C031141A57AB8312D1DEF51E8 /* PFPushUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushUtilities.h; path = Parse/Internal/Push/Utilites/PFPushUtilities.h; sourceTree = "<group>"; }; - 2DF6012AC3FEDDC30928DC38FC317836 /* RKPropertyInspector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyInspector.h; path = Code/ObjectMapping/RKPropertyInspector.h; sourceTree = "<group>"; }; - 2E10976A217E52C40572C15A1627BDD2 /* RKTestHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestHelpers.m; path = Code/Testing/RKTestHelpers.m; sourceTree = "<group>"; }; - 2E3AF7DFDFAF8657D842E11B07B72C49 /* PFSQLiteStatement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteStatement.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.m; sourceTree = "<group>"; }; - 2E491204CD2D880B645C351FE76C1780 /* PFDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDataProvider.h; path = Parse/Internal/PFDataProvider.h; sourceTree = "<group>"; }; - 2FB830A71452CCDB67D2616730944824 /* PFFieldOperationDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperationDecoder.h; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.h; sourceTree = "<group>"; }; - 2FD6AC1526EDBB971021943756B7A67D /* RKErrorMessage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKErrorMessage.h; path = Code/ObjectMapping/RKErrorMessage.h; sourceTree = "<group>"; }; - 2FF16FB1B2249D1B7C33F0B28BE8FB32 /* FBSDKLoginKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginKit+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h"; sourceTree = "<group>"; }; - 3055B7B57931D87F7E1D076B3EACD5FB /* Parse-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Parse-prefix.pch"; sourceTree = "<group>"; }; - 305C1B44A7F7E61553779E2EFAA7E6E5 /* RKObjectParameterization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectParameterization.h; path = Code/Network/RKObjectParameterization.h; sourceTree = "<group>"; }; - 307A4292CDEB528BBF94D77971EA42D8 /* RKRouteSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRouteSet.m; path = Code/Network/RKRouteSet.m; sourceTree = "<group>"; }; - 30CDD959414B1BB05D9C7CC06B1A1DB9 /* PFConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfigController.h; path = Parse/Internal/Config/Controller/PFConfigController.h; sourceTree = "<group>"; }; - 310DAE7B650CE093469515EB7385030B /* TKEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKEvent.h; path = Code/TKEvent.h; sourceTree = "<group>"; }; - 310FB096BFCEB1B13B424CBD45CFD485 /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = "<group>"; }; - 3110767D99127E63D027AD02ABECB5CC /* YALAnimatingTabBarConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALAnimatingTabBarConstants.m; path = FoldingTabBar/Constants/YALAnimatingTabBarConstants.m; sourceTree = "<group>"; }; - 31A4AD66C6637BF2C615D2A5ACFDFB97 /* RKMappingOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingOperation.h; path = Code/ObjectMapping/RKMappingOperation.h; sourceTree = "<group>"; }; - 321F060F2EAD3712AE8975662D9AE049 /* Parse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse.h; path = Parse/Parse.h; sourceTree = "<group>"; }; - 326B318804906FA458A65108849C0F78 /* FBSDKShareVideoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h; sourceTree = "<group>"; }; - 32D23F94B2A86BE0E61787BC2DB18576 /* PFURLSessionDataTaskDelegate_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate_Private.h; sourceTree = "<group>"; }; - 32D2CB4155B7B88153C547AB13333269 /* RKOperationStateMachine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKOperationStateMachine.m; path = Code/Support/RKOperationStateMachine.m; sourceTree = "<group>"; }; - 333FAC024F4389EAD8F3D15D9F29C1D8 /* PFURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSession.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.m; sourceTree = "<group>"; }; - 33BA0D4863A03D1948F483CFE7EA4EAB /* PFMutableACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableACLState.m; path = Parse/Internal/ACL/State/PFMutableACLState.m; sourceTree = "<group>"; }; - 33D211F268ABCC6126E0AA222AEFB496 /* RKObjectMappingMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMappingMatcher.h; path = Code/ObjectMapping/RKObjectMappingMatcher.h; sourceTree = "<group>"; }; - 33EB14F8B74929AAF1B17B2931B6AF30 /* PFKeyValueCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeyValueCache.m; path = Parse/Internal/KeyValueCache/PFKeyValueCache.m; sourceTree = "<group>"; }; - 347915ED2D892D50E616DA8EACB44960 /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = "<group>"; }; - 354D71ECE03FF896929A5DF65F72CA5D /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = "<group>"; }; - 357EF8470BF313B33261C55EB4D12327 /* FBSDKShareKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareKit.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h; sourceTree = "<group>"; }; - 35A723AF4E93A1BD6805BE7CABE6E033 /* PFPush.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPush.h; path = Parse/PFPush.h; sourceTree = "<group>"; }; - 35B3E5E386C38B964CF695D9AB977807 /* FBSDKSharePhoto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhoto.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m; sourceTree = "<group>"; }; - 35C47D77D154C6ACEBD15C0FA61A163F /* PFInstallationConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationConstants.m; path = Parse/Internal/Installation/Constants/PFInstallationConstants.m; sourceTree = "<group>"; }; - 35DC0FA9CFA673AEF41AF09AA45DFD4B /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = "<group>"; }; - 362C1D10E572107214CEFE116A4A3E9C /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = "<group>"; }; - 363A2C942125F80203914292454D9AA9 /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = "<group>"; }; - 3678FC88ECC9E598059E5183A37EDEE1 /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = "<group>"; }; - 36F6F2D4FA38537FEE30DC609BE6E066 /* PFKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeychainStore.h; path = Parse/Internal/PFKeychainStore.h; sourceTree = "<group>"; }; - 37287465895B3FA00A50FD0231EC03C2 /* RKResponseDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKResponseDescriptor.m; path = Code/Network/RKResponseDescriptor.m; sourceTree = "<group>"; }; - 373C4D681FFCFABB37EFA7C0EDB3C9E2 /* FBSDKGraphRequestMetadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestMetadata.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.h; sourceTree = "<group>"; }; - 37AC900D11C191E04655F282A675E5E0 /* FBSDKURLConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h; sourceTree = "<group>"; }; + 2775CBEED05B03B513848BE46301ECA6 /* BFExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFExecutor.m; path = Bolts/Common/BFExecutor.m; sourceTree = "<group>"; }; + 2784369F5F5CCA4ADE551377F245E131 /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = "<group>"; }; + 280AB1BDCC3841953AE8E7E78F9326A1 /* POPBasicAnimationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPBasicAnimationInternal.h; path = pop/POPBasicAnimationInternal.h; sourceTree = "<group>"; }; + 2870EF5BFCF54FA3B58A74A16C8DEA99 /* YALAnimatingTabBarConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALAnimatingTabBarConstants.m; path = FoldingTabBar/Constants/YALAnimatingTabBarConstants.m; sourceTree = "<group>"; }; + 28ACD3CB82BEF500AB8A021A9907BF32 /* libRKValueTransformers.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRKValueTransformers.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 29B13B33590257BF7A80C3602DC87B09 /* FBSDKShareConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareConstants.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h; sourceTree = "<group>"; }; + 29DAD99804B5BD08F3A74008FD65BAE7 /* BoltsVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BoltsVersion.h; path = Bolts/Common/BoltsVersion.h; sourceTree = "<group>"; }; + 2A17ADE2F078B621C983D99D2F0F0047 /* FBSDKBridgeAPIProtocolWebV2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV2.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.h; sourceTree = "<group>"; }; + 2AA04EC3FE92A62CDADA2A69B932DDF3 /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = "<group>"; }; + 2AA9ED123D1A01B9CE0864DF21669E32 /* PFAnonymousUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousUtils.m; path = Parse/PFAnonymousUtils.m; sourceTree = "<group>"; }; + 2AECAEEB58E4CB5EFF8D61951BC17DB1 /* PFCachedQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCachedQueryController.m; path = Parse/Internal/Query/Controller/PFCachedQueryController.m; sourceTree = "<group>"; }; + 2B468DC6F25FAF7381C563D8A3A3C32E /* FBSDKShareKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareKit.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareKit.h; sourceTree = "<group>"; }; + 2BB0273CAD372752E68ECCBCD48E5842 /* FBSDKLikeControl+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeControl+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h"; sourceTree = "<group>"; }; + 2CFCEB3A58ECB73BB6D930BB1A66A2DE /* UnitBezier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UnitBezier.h; path = pop/WebCore/UnitBezier.h; sourceTree = "<group>"; }; + 2DA32C8430B17D1CEF6CC0C2F20702C6 /* PFConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig.h; path = Parse/PFConfig.h; sourceTree = "<group>"; }; + 2DDC81A1F4448D392C77D59D57719404 /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h; sourceTree = "<group>"; }; + 2DE175F2297AFCBB1C62B1B16B5891F1 /* FBSDKShareKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareKit+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareKit+Internal.h"; sourceTree = "<group>"; }; + 2DFC0AEEC2FC3F3A422A6A76F818E344 /* RKObjectMappingOperationDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMappingOperationDataSource.m; path = Code/ObjectMapping/RKObjectMappingOperationDataSource.m; sourceTree = "<group>"; }; + 2E051BB78BF5591341C31848B9AE0E0B /* PFPropertyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo.h; sourceTree = "<group>"; }; + 2E3E506FDF95C78237F089FED94DAB76 /* RKErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKErrors.h; path = Code/Support/RKErrors.h; sourceTree = "<group>"; }; + 2E4BCF2AF417571FAAD5D3A0AF5FFB93 /* PFRESTConfigCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTConfigCommand.m; path = Parse/Internal/Commands/PFRESTConfigCommand.m; sourceTree = "<group>"; }; + 2E4DB2AB05ABDFB2096CBD1A0D1C960A /* RKMIMETypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMIMETypes.m; path = Code/Support/RKMIMETypes.m; sourceTree = "<group>"; }; + 2E7F67EBB1F0265AF0F708FA1006B162 /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = "<group>"; }; + 2E867F3D72745F4BA824FC362CEBFACB /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = "<group>"; }; + 2F0F7C3B1D42E74B34C118D7F55D56DC /* BFTask+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "BFTask+Private.m"; path = "Parse/Internal/BFTask+Private.m"; sourceTree = "<group>"; }; + 305A419FED9C718C8ACAE5D2F9173F27 /* PFPaymentTransactionObserver_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver_Private.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h; sourceTree = "<group>"; }; + 3135C42A396F109267EA88F6641A9194 /* FBSDKShareVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideo.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h; sourceTree = "<group>"; }; + 3198F91D01D488AAEE2E37C91C36109C /* PFURLSessionJSONDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionJSONDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.h; sourceTree = "<group>"; }; + 31AE16032795BC110759FE0D71DD7F32 /* PFObjectPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectPrivate.h; path = Parse/Internal/Object/PFObjectPrivate.h; sourceTree = "<group>"; }; + 31EC6AF4DEA7F85F68A5CE8C3ECA3280 /* PFSQLiteDatabase_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase_Private.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase_Private.h; sourceTree = "<group>"; }; + 324AAABDF5EC040480FF7DD0137ACC3A /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = "<group>"; }; + 32584F1C40CC0FB3ACD703733332AA08 /* PFAnalyticsUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsUtilities.m; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.m; sourceTree = "<group>"; }; + 325AD4A9548841B8B429CC3D00DF02E4 /* POPAnimationExtras.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationExtras.h; path = pop/POPAnimationExtras.h; sourceTree = "<group>"; }; + 3265A08CD5F3A28A6541A985B0B75664 /* FBSDKAppInviteDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.m; sourceTree = "<group>"; }; + 327724504C5129C28E647306963F3042 /* PFURLSessionCommandRunner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.h; sourceTree = "<group>"; }; + 335A3DE810AEDFE589A9325169A59E46 /* FBSDKLoginTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m; sourceTree = "<group>"; }; + 3394EE87DFC9E88439AB265D59382138 /* FBSDKLikeDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeDialog.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m; sourceTree = "<group>"; }; + 33A88DE3DA4EB5064A997FFAF0C23DCF /* RKPropertyInspector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyInspector.h; path = Code/ObjectMapping/RKPropertyInspector.h; sourceTree = "<group>"; }; + 33D917AEA2C6B3BD1FB6DE5E32B94689 /* PFEventuallyQueue_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue_Private.h; path = Parse/Internal/PFEventuallyQueue_Private.h; sourceTree = "<group>"; }; + 34467D773B15C784E43F77DA67A5790C /* PFCommandRunningConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunningConstants.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h; sourceTree = "<group>"; }; + 346CED5D6B988E5318DBD8CC9C98A073 /* FBSDKGameRequestDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h; sourceTree = "<group>"; }; + 34C584E3410A80115A9107E13C995E70 /* libSOCKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSOCKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 352259996AE7807E58AB7D6E88FAC9F7 /* YALFoldingTabBarController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALFoldingTabBarController.h; path = FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.h; sourceTree = "<group>"; }; + 35CC150A7EE20543758EB2CBCB3D0D9D /* AFURLConnectionOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLConnectionOperation.h; path = AFNetworking/AFURLConnectionOperation.h; sourceTree = "<group>"; }; + 368A5760A18AE27F46F5243BA3BFD13C /* PFPushManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushManager.h; path = Parse/Internal/Push/Manager/PFPushManager.h; sourceTree = "<group>"; }; + 36A9A82E6520CD02FD9422940934EACB /* FBSDKShareDialogMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialogMode.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m; sourceTree = "<group>"; }; + 36C75B01624E2DCB9059D7ABADC2B668 /* PFAnonymousAuthenticationProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousAuthenticationProvider.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.h; sourceTree = "<group>"; }; + 36C8AD8E2390F415DC7425C9734EFAFB /* PFCommandCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache.h; path = Parse/Internal/PFCommandCache.h; sourceTree = "<group>"; }; + 370FAC093160183505C296D12A84BF0A /* FBSDKGraphRequestMetadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestMetadata.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestMetadata.m; sourceTree = "<group>"; }; + 37382D15DA0BBCC18167A1B61E72CD64 /* PFCloud.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloud.m; path = Parse/PFCloud.m; sourceTree = "<group>"; }; 37DB56D75062CC75FCB0966E1C6E8A8E /* Pods-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-acknowledgements.markdown"; sourceTree = "<group>"; }; + 37F7E3AF617E0BF5874DE052CCFF4A53 /* PFRESTCommand_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand_Private.h; path = Parse/Internal/Commands/PFRESTCommand_Private.h; sourceTree = "<group>"; }; + 37FC535483D9258C485125E0488ED3EF /* RKValueTransformers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKValueTransformers.h; path = Code/RKValueTransformers.h; sourceTree = "<group>"; }; 3849FCCD9604B569E0277015CC30071D /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; - 38716A9E624A2682EE064BB7A4E4B034 /* RKManagedObjectRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKManagedObjectRequestOperation.m; path = Code/Network/RKManagedObjectRequestOperation.m; sourceTree = "<group>"; }; - 389CEDD0DDA1F1BB4ACF1258BBC1A500 /* FoldingTabBar.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FoldingTabBar.xcconfig; sourceTree = "<group>"; }; - 3AC646B2CF1A54F8852DB65ABDB82D96 /* FBSDKShareButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m; sourceTree = "<group>"; }; - 3ACF71F0DC4813EA623149F93F528587 /* CAAnimation+YALTabBarViewAnimations.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CAAnimation+YALTabBarViewAnimations.h"; path = "FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.h"; sourceTree = "<group>"; }; - 3B34569D99B799FF8A6F749B10CCA86B /* PFObjectBatchController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectBatchController.m; path = Parse/Internal/Object/BatchController/PFObjectBatchController.m; sourceTree = "<group>"; }; - 3B388397746D26347C7AE282AEB53D77 /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m; sourceTree = "<group>"; }; - 3B79F3FA1E8F365CB494021D4EF3A3C1 /* FBSDKCheckmarkIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCheckmarkIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h; sourceTree = "<group>"; }; - 3BF1F39539444FAA093EACF74048A6D6 /* FBSDKLikeDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeDialog.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h; sourceTree = "<group>"; }; - 3BFC75DE2FA5676B4D6C11BB9AA254E8 /* lcl_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_RK.h; path = Vendor/LibComponentLogging/Core/lcl_RK.h; sourceTree = "<group>"; }; - 3C400573A5C886A59A391F89D0812135 /* PFSessionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionUtilities.h; path = Parse/Internal/Session/Utilities/PFSessionUtilities.h; sourceTree = "<group>"; }; - 3D1A4EB19150431EC20AA5717EFD6B46 /* FBSDKShareDialogMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialogMode.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h; sourceTree = "<group>"; }; - 3D5D2BA73D92C41B2C18785A9F6A34F3 /* PFPushPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushPrivate.h; path = Parse/Internal/Push/PFPushPrivate.h; sourceTree = "<group>"; }; - 3E592A12CBAE13CEF22ACF96543534AE /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = "<group>"; }; - 3EF30CD48D59FE6544E248C632E1B4F7 /* PFOfflineObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineObjectController.m; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m; sourceTree = "<group>"; }; - 3EF647DA4D46882EAC603DA80B15C546 /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = "<group>"; }; - 3FD3D595219E68629445A5326DAF89B0 /* PFGeoPointPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPointPrivate.h; path = Parse/Internal/PFGeoPointPrivate.h; sourceTree = "<group>"; }; - 3FD9787D3AC0A8EBB5A37E3E888F8DE4 /* PFACLState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState_Private.h; path = Parse/Internal/ACL/State/PFACLState_Private.h; sourceTree = "<group>"; }; - 40C7C5CFB4E466FFB010AF6A0FD9D026 /* PFRelation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelation.h; path = Parse/PFRelation.h; sourceTree = "<group>"; }; - 40FE4E083CC5C40D0DF65A6B08724A1A /* FBSDKAccessTokenCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCache.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.m; sourceTree = "<group>"; }; - 412828DEC5B3F3C978D90B000561AC08 /* RestKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RestKit.xcconfig; sourceTree = "<group>"; }; - 4143EF2889DC7708FBFDFB6EB6F7F78C /* PFCommandResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandResult.h; path = Parse/Internal/PFCommandResult.h; sourceTree = "<group>"; }; - 4151DE560D48FE6B06CCFA7940B94CC5 /* PFPropertyInfo_Runtime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo_Runtime.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.m; sourceTree = "<group>"; }; - 420484544B85996994118EC3B407FE6F /* RKObjectMappingOperationDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMappingOperationDataSource.m; path = Code/ObjectMapping/RKObjectMappingOperationDataSource.m; sourceTree = "<group>"; }; - 421972FDDA0AE2550E0FB8F3DF8B6CB1 /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m; sourceTree = "<group>"; }; - 421AA4D00B6B66524A46DC0728150287 /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = "<group>"; }; - 424AE54B9E9D6A204E25E68A391EAC5C /* libRestKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRestKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 425C02C4E4B038FDE445DA322EF3113E /* PFCloud.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloud.h; path = Parse/PFCloud.h; sourceTree = "<group>"; }; - 42BFA9A32C67074761C10AC36BF1CA3D /* FBSDKLoginUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginUtility.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m; sourceTree = "<group>"; }; - 42E3420B261FCAE88A3371F0158DAA2A /* RKTestConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestConstants.m; path = Code/Testing/RKTestConstants.m; sourceTree = "<group>"; }; - 4313BE461C6D0AB4AEFF645FBD735809 /* ISO8601DateFormatterValueTransformer.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ISO8601DateFormatterValueTransformer.xcconfig; sourceTree = "<group>"; }; - 432FAA5FD944A3CEB95D300D82A29D11 /* FBSDKLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m; sourceTree = "<group>"; }; - 4332383098D7379489F2E1CF7653D948 /* PFPinningEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningEventuallyQueue.h; path = Parse/Internal/PFPinningEventuallyQueue.h; sourceTree = "<group>"; }; - 4395A73F86029763A96B4A9BDB9051CF /* PFPurchase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchase.m; path = Parse/PFPurchase.m; sourceTree = "<group>"; }; - 4429585279C58269AAE37EC7814214BD /* FBSDKGameRequestFrictionlessRecipientCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestFrictionlessRecipientCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m; sourceTree = "<group>"; }; - 442FE8495BC41626A686B84CE00354C4 /* PFBase64Encoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBase64Encoder.h; path = Parse/Internal/PFBase64Encoder.h; sourceTree = "<group>"; }; - 4483EB7CE5A6261A9164976F9D35F986 /* PFSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSession.m; path = Parse/PFSession.m; sourceTree = "<group>"; }; - 44FCD8E48AE2854E6C68B55DE899278F /* PFPaymentTransactionObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPaymentTransactionObserver.m; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.m; sourceTree = "<group>"; }; - 4523E95A8F9A0D756D54DFC5E768BAEB /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = "<group>"; }; - 4570CED15A9C16289C4D098BADB4988B /* PFUserAuthenticationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationDelegate.h; path = Parse/PFUserAuthenticationDelegate.h; sourceTree = "<group>"; }; - 45756A25BE2E60F2173BFFCAE8E9BABB /* PFSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession_Private.h; path = Parse/Internal/Session/PFSession_Private.h; sourceTree = "<group>"; }; - 457EA6762682C1C676C5980F65593923 /* AFImageRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageRequestOperation.m; path = AFNetworking/AFImageRequestOperation.m; sourceTree = "<group>"; }; - 45E3175265DC81EF149FA06BB4EA951B /* FBSDKShareError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareError.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.m; sourceTree = "<group>"; }; - 462B2CA402744EDC499ADDCECB7402D4 /* FBSDKSharing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharing.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h; sourceTree = "<group>"; }; - 46326E5CA01311B8CBC725FB12585BCE /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = "<group>"; }; - 4662A7DF03B449C11ACAB6A82AA6CD0B /* PFPushChannelsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushChannelsController.h; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.h; sourceTree = "<group>"; }; - 466349270C59C68B7BB457BF69B9ABCE /* PFAnonymousUtils_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils_Private.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousUtils_Private.h; sourceTree = "<group>"; }; - 468E01C4FC5A39A8E37ECC56F44B8F65 /* FBSDKShareVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideo.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.h; sourceTree = "<group>"; }; - 468F4C50CD145E1DB145B2A3D109CC5F /* PFObjectBatchController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectBatchController.h; path = Parse/Internal/Object/BatchController/PFObjectBatchController.h; sourceTree = "<group>"; }; - 46EE1DE5D0F0015F4E7C0AE4FC9D85F6 /* RKPropertyMappingTestExpectation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyMappingTestExpectation.h; path = Code/Testing/RKPropertyMappingTestExpectation.h; sourceTree = "<group>"; }; - 4720A959FBF253E6C8315EC7BE3FFEBC /* FBSDKShareOpenGraphAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphAction.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.m; sourceTree = "<group>"; }; - 47CEE063B791E2A75D02580633A5F373 /* RKPropertyMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyMapping.m; path = Code/ObjectMapping/RKPropertyMapping.m; sourceTree = "<group>"; }; - 4805B0DB126DE968E42BAEA762A89F17 /* PFInstallation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallation.h; path = Parse/PFInstallation.h; sourceTree = "<group>"; }; - 486A8EBF63F7D80E6BB3BF1ACD672CFD /* FBSDKAccessTokenCacheV4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV4.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m; sourceTree = "<group>"; }; - 48B1E6D7D071B0E0ED3F61BA546629E4 /* PFMutableRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableRelationState.h; path = Parse/Internal/Relation/State/PFMutableRelationState.h; sourceTree = "<group>"; }; - 48CE51C08D38E74BB9D873799C3B56FF /* PFTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFTaskQueue.m; path = Parse/Internal/PFTaskQueue.m; sourceTree = "<group>"; }; - 48DF0E6F580F2A50C94F659383B45C1D /* PFMutableObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableObjectState.h; path = Parse/Internal/Object/State/PFMutableObjectState.h; sourceTree = "<group>"; }; - 491C07A26268A25977860299C1B04D2C /* RKMappingTest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingTest.h; path = Code/Testing/RKMappingTest.h; sourceTree = "<group>"; }; - 4961DA34D602A21B6849256EB53A724D /* PFGeoPoint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPoint.h; path = Parse/PFGeoPoint.h; sourceTree = "<group>"; }; - 4966479D5117182D9BB2405C57BF9E48 /* RKObjectRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectRequestOperation.h; path = Code/Network/RKObjectRequestOperation.h; sourceTree = "<group>"; }; - 497BCC491078BD10E998532399FBE356 /* Bolts-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Bolts-dummy.m"; sourceTree = "<group>"; }; - 49A809ECA636BA098C492E0709054E30 /* PFLocationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLocationManager.h; path = Parse/Internal/PFLocationManager.h; sourceTree = "<group>"; }; - 4A0F68606B3345FA797272EDF32783FC /* PFLocationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLocationManager.m; path = Parse/Internal/PFLocationManager.m; sourceTree = "<group>"; }; - 4A801218C457ACD0660511E41F3A3A30 /* PFJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFJSONSerialization.m; path = Parse/Internal/PFJSONSerialization.m; sourceTree = "<group>"; }; - 4B163E967FEAF0C769D85F0A3A1EEB95 /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFWebViewAppLinkResolver.m; path = Bolts/iOS/BFWebViewAppLinkResolver.m; sourceTree = "<group>"; }; - 4BBD6BD031241526C280059BD26BDE75 /* PFPushController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushController.h; path = Parse/Internal/Push/Controller/PFPushController.h; sourceTree = "<group>"; }; - 4BE43B9E9A14869E0D43BEAF29841B34 /* PFObjectFileCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCoder.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.h; sourceTree = "<group>"; }; - 4C500DF14994F5DF82D1C7A4F1B29EE4 /* PFSQLiteDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.h; sourceTree = "<group>"; }; - 4C773E3706A4438E1751AB41F39EB030 /* FBSDKLoginError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginError.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.h; sourceTree = "<group>"; }; - 4CB18FECF07D424856DF25DEFEAE675C /* PFUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserController.m; path = Parse/Internal/User/Controller/PFUserController.m; sourceTree = "<group>"; }; - 4D74AE7682B21EDC5FA135CD84A526CF /* PFRESTQueryCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTQueryCommand.h; path = Parse/Internal/Commands/PFRESTQueryCommand.h; sourceTree = "<group>"; }; - 4D8A4BBD034C037A44B441447EDBD2AC /* RKDictionaryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDictionaryUtilities.m; path = Code/Support/RKDictionaryUtilities.m; sourceTree = "<group>"; }; - 4DA381E5D6515F0A9C84527EF815CA28 /* FBSDKMutableCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMutableCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMutableCopying.h; sourceTree = "<group>"; }; - 4DA39AA231A2BC6DEF831A837F406512 /* FBSDKSendButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSendButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m; sourceTree = "<group>"; }; - 4DC05CB9225FAFC12C400FAE32AD0626 /* RKErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKErrors.h; path = Code/Support/RKErrors.h; sourceTree = "<group>"; }; - 4E2D4FECA8A777A6DD1410FCFBA85EBA /* FBSDKGameRequestContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h; sourceTree = "<group>"; }; + 3880A4A4324ED988B85901DAD4519018 /* AFJSONRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFJSONRequestOperation.h; path = AFNetworking/AFJSONRequestOperation.h; sourceTree = "<group>"; }; + 3962BED4A779536F2E41B1C36D6285AB /* PFRESTCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCommand.m; path = Parse/Internal/Commands/PFRESTCommand.m; sourceTree = "<group>"; }; + 39D2341AC19A6B3AD747ABBF9D3A13E5 /* PFObjectFilePersistenceController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFilePersistenceController.m; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.m; sourceTree = "<group>"; }; + 39F780E56F26B16CAF1CF2F0EBC58660 /* PFFileController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileController.m; path = Parse/Internal/File/Controller/PFFileController.m; sourceTree = "<group>"; }; + 3ACEDF4D677834B067A9DD0F82954897 /* FBSDKSharingContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h; sourceTree = "<group>"; }; + 3B1F248FA3EE75C351E1B383AB977DF7 /* BFDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFDefines.h; path = Bolts/Common/BFDefines.h; sourceTree = "<group>"; }; + 3B5920113D86FC36BEBC6F899C9034F7 /* FBSDKServerConfigurationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfigurationManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.h; sourceTree = "<group>"; }; + 3BCD0EFCBE498C67A5B0097360333011 /* PFHTTPURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHTTPURLRequestConstructor.m; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.m; sourceTree = "<group>"; }; + 3BF16968FBC656E49A7B643EED4B84F6 /* ISO8601DateFormatterValueTransformer.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ISO8601DateFormatterValueTransformer.xcconfig; sourceTree = "<group>"; }; + 3C1CC5AA0EB4EDA9432A7D5463BE4901 /* AFHTTPClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPClient.h; path = AFNetworking/AFHTTPClient.h; sourceTree = "<group>"; }; + 3C4E2E6E86AEBB3B50EE86E4B1074A32 /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = "<group>"; }; + 3C6C852E7C915FBEDD2E5B3C2CDD20A8 /* lcl_config_components_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_components_RK.h; path = Code/Support/lcl_config_components_RK.h; sourceTree = "<group>"; }; + 3C9A888CC23B37A508B946C18FBA51D5 /* PFRESTCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand.h; path = Parse/Internal/Commands/PFRESTCommand.h; sourceTree = "<group>"; }; + 3CE5F2F0D15646E1D82418047325DB76 /* FoldingTabBar-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FoldingTabBar-prefix.pch"; sourceTree = "<group>"; }; + 3CFFE5B32D8DD018AAF9EB4733D6315B /* FBSDKAppGroupContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m; sourceTree = "<group>"; }; + 3D1059A8B21D1214B8EA1A8BCF6B2CE5 /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m; sourceTree = "<group>"; }; + 3D9C8B62E94BADCE53C2B3A336B91A66 /* PFAnalyticsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsController.h; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.h; sourceTree = "<group>"; }; + 3DD24718CA4BD9604C201D989FD03218 /* SOCKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SOCKit-dummy.m"; sourceTree = "<group>"; }; + 3DDC10303447DF4E3E657F2B4AD92925 /* RKHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKHTTPRequestOperation.h; path = Code/Network/RKHTTPRequestOperation.h; sourceTree = "<group>"; }; + 3E03D377B70A81B7EE7DF0A8F510E529 /* PFRESTConfigCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTConfigCommand.h; path = Parse/Internal/Commands/PFRESTConfigCommand.h; sourceTree = "<group>"; }; + 3E4E096EFFA1494BC822896BB3BD15AB /* FBSDKCheckmarkIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCheckmarkIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m; sourceTree = "<group>"; }; + 3ED50EE6CEF264393D61B359E4FD13BB /* PFMutableRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableRelationState.m; path = Parse/Internal/Relation/State/PFMutableRelationState.m; sourceTree = "<group>"; }; + 3EE26090EAD13C1FFD39BB6A7C89193B /* FBSDKShareLinkContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareLinkContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h; sourceTree = "<group>"; }; + 3F045700822563CB163FE8B3F606352C /* FBSDKLoginKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKLoginKit.xcconfig; sourceTree = "<group>"; }; + 3F16209AB717FBAFF4C2730320EF9840 /* PFFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState.h; path = Parse/Internal/File/State/PFFileState.h; sourceTree = "<group>"; }; + 3F3FC0B3D497637B402F51B44E5B28F5 /* FBSDKShareDialogMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialogMode.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.h; sourceTree = "<group>"; }; + 3F756E1A3BA52E99D6635DE49C0331CB /* RKURLEncodedSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKURLEncodedSerialization.m; path = Code/Support/RKURLEncodedSerialization.m; sourceTree = "<group>"; }; + 3FE19DF082B2711D3D79E3BDF50FA146 /* PFFileController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileController.h; path = Parse/Internal/File/Controller/PFFileController.h; sourceTree = "<group>"; }; + 4035095FBC067B91C5DECADD26277EB1 /* PFDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDateFormatter.h; path = Parse/Internal/PFDateFormatter.h; sourceTree = "<group>"; }; + 405BEEF0AFD44793580DDB9D43634820 /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = "<group>"; }; + 407C402A54C0C81D42BEA7147982FA35 /* PFGeoPointPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPointPrivate.h; path = Parse/Internal/PFGeoPointPrivate.h; sourceTree = "<group>"; }; + 409EF16B93600F84E2CC3287F2C35D7E /* PFRole.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRole.h; path = Parse/PFRole.h; sourceTree = "<group>"; }; + 40AB5DCC80577C96F4732C2FA58B903D /* PFCurrentInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentInstallationController.m; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.m; sourceTree = "<group>"; }; + 40C31A1DA0DE91B3BDC70194B9B9E75B /* RKMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMapping.m; path = Code/ObjectMapping/RKMapping.m; sourceTree = "<group>"; }; + 40DC3C427F03295338C11BDDD89C3D2A /* PFGeoPoint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFGeoPoint.h; path = Parse/PFGeoPoint.h; sourceTree = "<group>"; }; + 40E39D31FE7DC01DD03AA4AF8530EC8D /* PFUserAuthenticationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationDelegate.h; path = Parse/PFUserAuthenticationDelegate.h; sourceTree = "<group>"; }; + 41BB788E886BFA89367834A4426A765E /* PFEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyQueue.m; path = Parse/Internal/PFEventuallyQueue.m; sourceTree = "<group>"; }; + 41DE8F8508C70E584E9DC322D6E30DB1 /* FBSDKBoltsMeasurementEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBoltsMeasurementEventListener.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.h; sourceTree = "<group>"; }; + 4235B0900E27A7ECBA96EAFDECF2D5A0 /* PFPushUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushUtilities.h; path = Parse/Internal/Push/Utilites/PFPushUtilities.h; sourceTree = "<group>"; }; + 423887AF6686942102218A073BC526E2 /* PFURLSessionFileDownloadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionFileDownloadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m; sourceTree = "<group>"; }; + 424184F6AAB828CA2D22E450BB52A081 /* FBSDKLikeControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeControl.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.h; sourceTree = "<group>"; }; + 42B37BE48C6B242CC345A82EFFCA35CD /* FBSDKKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStore.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.h; sourceTree = "<group>"; }; + 42CBEF54F1256217E4780DB8ABBF5AC3 /* PFURLSessionDataTaskDelegate_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate_Private.h; sourceTree = "<group>"; }; + 433B51CC13747ACBE8AA93F02C6D784A /* RKMapperOperation_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapperOperation_Private.h; path = Code/ObjectMapping/RKMapperOperation_Private.h; sourceTree = "<group>"; }; + 44420C2483949613227FDC09A152A3F2 /* BFURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL_Internal.h; path = Bolts/iOS/BFURL_Internal.h; sourceTree = "<group>"; }; + 44A2841E1C0E28AFEE0B7288D6E47D4E /* YALTabBarItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALTabBarItem.h; path = FoldingTabBar/Model/TabBarItem/YALTabBarItem.h; sourceTree = "<group>"; }; + 4521F82969CCAF3A290F34A7DA26A9DF /* RKRequestDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRequestDescriptor.h; path = Code/Network/RKRequestDescriptor.h; sourceTree = "<group>"; }; + 45911FDD1904204B994BBBABE59D8DAA /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = "<group>"; }; + 45A41F6A2E3BF848EF5F335556B27EC1 /* PFCommandResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandResult.h; path = Parse/Internal/PFCommandResult.h; sourceTree = "<group>"; }; + 45C1F3D82C36D976C5759677F623553F /* PFObjectFileCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCoder.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.m; sourceTree = "<group>"; }; + 4659EF2651456627D2DF254CD1ABA4FB /* POPDecayAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPDecayAnimation.h; path = pop/POPDecayAnimation.h; sourceTree = "<group>"; }; + 468C80083455F41B26E5C3D366E6F467 /* PFRelationState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRelationState.m; path = Parse/Internal/Relation/State/PFRelationState.m; sourceTree = "<group>"; }; + 473792C704D2EB34B69FD30D4C8A4195 /* FBSDKServerConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.m; sourceTree = "<group>"; }; + 4788A28C6827C4BF85BEB5920CADFEE4 /* PFSQLiteStatement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteStatement.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.h; sourceTree = "<group>"; }; + 47B246252A39D38E7CC3D6CD2C4549AA /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = "<group>"; }; + 47C5EB9BE6709541AB17E0F38FB1BB1A /* PFRESTPushCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTPushCommand.m; path = Parse/Internal/Commands/PFRESTPushCommand.m; sourceTree = "<group>"; }; + 48C62F55A4F3241648089904B527F6D1 /* FBSDKConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKConstants.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.m; sourceTree = "<group>"; }; + 4920838C7C35EE540CFF086D92C435AC /* PFProduct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProduct.h; path = Parse/PFProduct.h; sourceTree = "<group>"; }; + 49293A25955435D7FC5E29D841FA4456 /* FBSDKAppInviteDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h; sourceTree = "<group>"; }; + 49B69C4B030D1D72B8261D35EB560A56 /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = "<group>"; }; + 49BFECAFEA1EF171D5BA9CFAFE63B895 /* PFFileDataStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileDataStream.h; path = Parse/Internal/File/FileDataStream/PFFileDataStream.h; sourceTree = "<group>"; }; + 4A3FF0A4A486E57DD176B3DF5F619173 /* RKOperationStateMachine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKOperationStateMachine.m; path = Code/Support/RKOperationStateMachine.m; sourceTree = "<group>"; }; + 4A5BA6A301883961C6DA165D6089A985 /* PFMultiProcessFileLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLock.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.h; sourceTree = "<group>"; }; + 4AB618D67D94F32578DF5336651E7855 /* FBSDKLikeObjectType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeObjectType.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h; sourceTree = "<group>"; }; + 4B9BFA03B5504E854577C5000A356AFB /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = "<group>"; }; + 4BF07391CA6A2181CE0A3C3765B8F4BF /* PFJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFJSONSerialization.h; path = Parse/Internal/PFJSONSerialization.h; sourceTree = "<group>"; }; + 4C08FCA3A865F9181B3EAED5D081E6DB /* PFKeychainStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeychainStore.h; path = Parse/Internal/PFKeychainStore.h; sourceTree = "<group>"; }; + 4C3FA9E55331EB6F5C9D6ABE4173AF97 /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = "<group>"; }; + 4C7FFDC2B7A4F0D5C315F44B0165D091 /* RKBenchmark.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKBenchmark.h; path = Code/Testing/RKBenchmark.h; sourceTree = "<group>"; }; + 4C86B91E8FA37A02DFCBC13C26C5599E /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = "<group>"; }; + 4C8E5BBEB36882FAEA0C74B322ADC266 /* PFSubclassing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSubclassing.h; path = Parse/PFSubclassing.h; sourceTree = "<group>"; }; + 4CDA9E34CFAB4648EC74D9ED76EF02AC /* POPBasicAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPBasicAnimation.h; path = pop/POPBasicAnimation.h; sourceTree = "<group>"; }; + 4CDDA61BB7A1F8AD65676757226E8A74 /* PFBaseState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBaseState.m; path = Parse/Internal/PFBaseState.m; sourceTree = "<group>"; }; + 4D18572FD7945CECB627B25FAFC28DF5 /* PFProduct+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFProduct+Private.h"; path = "Parse/Internal/Product/PFProduct+Private.h"; sourceTree = "<group>"; }; + 4DA5437028A51B95A1C0B0B8B5CB334B /* TKState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKState.h; path = Code/TKState.h; sourceTree = "<group>"; }; + 4DC337098F42B8A25439D02AF67102E7 /* PFObjectEstimatedData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectEstimatedData.m; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.m; sourceTree = "<group>"; }; 4E762F23EC34ED4A6FF3312D84E33A40 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.debug.xcconfig; sourceTree = "<group>"; }; - 4E8EC5CFE550AB9001C39619CF9FB4D4 /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = "<group>"; }; - 4E91BE2BF2B6ED7524B651D0202AC4E0 /* PFACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACLState.m; path = Parse/Internal/ACL/State/PFACLState.m; sourceTree = "<group>"; }; - 4E992BA048F5DF79A1CDCA82157BFEB8 /* PFObject+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFObject+Subclass.h"; path = "Parse/PFObject+Subclass.h"; sourceTree = "<group>"; }; - 4F583CC3B015B36C3E3144C08D893552 /* PFHTTPRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPRequest.h; path = Parse/Internal/HTTPRequest/PFHTTPRequest.h; sourceTree = "<group>"; }; - 4F8BEA71B93C60E891B29C80177AEC59 /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = "<group>"; }; - 4FDE8A1A301D0824B588F44EE25B4664 /* AFHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPRequestOperation.m; path = AFNetworking/AFHTTPRequestOperation.m; sourceTree = "<group>"; }; - 504CFD03CAFDA04600823DA3FA4724B7 /* FBSDKError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKError.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.h; sourceTree = "<group>"; }; - 5077028CC903E90AEB2806C8A93C10A6 /* FBSDKContainerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKContainerViewController.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.m; sourceTree = "<group>"; }; - 519BAD12C8F4201D74BDD8453AE47655 /* PFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFNetworkActivityIndicatorManager.m; path = Parse/PFNetworkActivityIndicatorManager.m; sourceTree = "<group>"; }; - 520D88E4BD209071CB865B64DEB08BD3 /* PFAsyncTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAsyncTaskQueue.m; path = Parse/Internal/PFAsyncTaskQueue.m; sourceTree = "<group>"; }; - 52249F35F2B3F990A6B5460810409C13 /* FBSDKAppGroupAddDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupAddDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m; sourceTree = "<group>"; }; - 52CB9F69B642A0B3EAB1EA3DD8F5BCB9 /* PFCommandCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandCache.m; path = Parse/Internal/PFCommandCache.m; sourceTree = "<group>"; }; - 52CF96E683AFDF73C07731C7ADDADC31 /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = "<group>"; }; - 52FB1857E533909822A211A7F21E7067 /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent_Internal.h; path = Bolts/iOS/BFMeasurementEvent_Internal.h; sourceTree = "<group>"; }; - 53750007AA7392F76DBC9237B62429C9 /* RKValueTransformers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKValueTransformers.m; path = Code/RKValueTransformers.m; sourceTree = "<group>"; }; - 53E751950C87EEEFB70685CD518122A2 /* PFPushUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushUtilities.m; path = Parse/Internal/Push/Utilites/PFPushUtilities.m; sourceTree = "<group>"; }; - 542741718F1B59CF684D8D7D5EE9E4C8 /* RKHTTPUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKHTTPUtilities.m; path = Code/ObjectMapping/RKHTTPUtilities.m; sourceTree = "<group>"; }; - 54343AE2C02ECF5E183700CB786869CB /* libFBSDKLoginKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKLoginKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 5454AEF03510A2D84BEA0194B430C57D /* BFAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLink.m; path = Bolts/iOS/BFAppLink.m; sourceTree = "<group>"; }; - 54A2B00522521F43E6925FCB7040FA7A /* PFFileStagingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileStagingController.h; path = Parse/Internal/File/Controller/PFFileStagingController.h; sourceTree = "<group>"; }; - 54BA28BB9CDEB01C1E6CE26A23783B3F /* libAFNetworking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAFNetworking.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 55E3CD1BDE0CFAD0C13FAED8BEF08B52 /* PFRelationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationPrivate.h; path = Parse/Internal/Relation/PFRelationPrivate.h; sourceTree = "<group>"; }; - 55F180B6F1337B63280EF7EE6FE6C2AC /* RKRoute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRoute.m; path = Code/Network/RKRoute.m; sourceTree = "<group>"; }; - 560B96C78B0C4903D500B1084F59BB7C /* YALSpringAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALSpringAnimation.h; path = FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.h; sourceTree = "<group>"; }; - 568923D709EECAD0783955444A4654F9 /* FBSDKAppInviteContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h; sourceTree = "<group>"; }; - 56A325AA32060E16C9CED99F16E65FDE /* PFObjectPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectPrivate.h; path = Parse/Internal/Object/PFObjectPrivate.h; sourceTree = "<group>"; }; - 56DD3B16A2FA69C880D705EC37C05584 /* PFURLSessionJSONDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionJSONDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m; sourceTree = "<group>"; }; - 572AFF6ED4416D1D697F241FDD4DA3FE /* FBSDKLikeObjectType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeObjectType.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.h; sourceTree = "<group>"; }; - 57595B2EC946AD2720F477BBF1C1693B /* PFInstallationConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationConstants.h; path = Parse/Internal/Installation/Constants/PFInstallationConstants.h; sourceTree = "<group>"; }; - 57703EB1DCEB28A69BCC450CD2F4302B /* PFURLSessionUploadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionUploadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.h; sourceTree = "<group>"; }; - 57F9B8722311F2DE9BFA34CD3DCA5DB9 /* BFAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink.h; path = Bolts/iOS/BFAppLink.h; sourceTree = "<group>"; }; - 581431A48237CC104D54A0C2870FDF20 /* CAAnimation+YALTabBarViewAnimations.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CAAnimation+YALTabBarViewAnimations.m"; path = "FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.m"; sourceTree = "<group>"; }; - 582FD07A79653DAE823A3A00F9AAB825 /* PFOfflineQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryController.m; path = Parse/Internal/Query/Controller/PFOfflineQueryController.m; sourceTree = "<group>"; }; - 586A6FCD3982EF14DD7688A9C35821A8 /* PFInstallationIdentifierStore_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore_Private.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore_Private.h; sourceTree = "<group>"; }; - 589A686D162F058AE68A85DC19762E4E /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTaskCompletionSource.m; path = Bolts/Common/BFTaskCompletionSource.m; sourceTree = "<group>"; }; - 58EB40198CF6F7F4E677035D64534FDA /* RKURLEncodedSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKURLEncodedSerialization.m; path = Code/Support/RKURLEncodedSerialization.m; sourceTree = "<group>"; }; - 58EC4DACF873F5F93A5E6D16A993CFB8 /* PFUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserState.m; path = Parse/Internal/User/State/PFUserState.m; sourceTree = "<group>"; }; - 58F9FC465CA00C27492735D604B485D3 /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = "<group>"; }; - 5924FEF18CC5E1704FD384C65A5F55D9 /* PFNetworkCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkCommand.h; path = Parse/Internal/PFNetworkCommand.h; sourceTree = "<group>"; }; - 59A54DFF04E955ECF7F946017F365A27 /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = "<group>"; }; - 5A03339B789E2FC72FB9CCFE5665A0C3 /* RKObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectUtilities.m; path = Code/ObjectMapping/RKObjectUtilities.m; sourceTree = "<group>"; }; - 5AD39F0020472100496314600E65AF2D /* RKStringTokenizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKStringTokenizer.h; path = Code/Support/RKStringTokenizer.h; sourceTree = "<group>"; }; - 5AEE4D8F9683C8D1ACEF10CAF4E41A9C /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h; sourceTree = "<group>"; }; - 5B0743AD2B57375BCF911269DBE91815 /* _FBSDKLoginRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKLoginRecoveryAttempter.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h; sourceTree = "<group>"; }; - 5B43B4FF57FBEA73DE52BF4AEAD1F36C /* RKMappingOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingOperation.m; path = Code/ObjectMapping/RKMappingOperation.m; sourceTree = "<group>"; }; - 5B53B46467C6E67E66194FAC567CA3CE /* PFURLSessionUploadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionUploadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.m; sourceTree = "<group>"; }; - 5BBAC5D8DBA7BF3C8638920782DCB03D /* RKManagedObjectRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKManagedObjectRequestOperation.h; path = Code/Network/RKManagedObjectRequestOperation.h; sourceTree = "<group>"; }; - 5C0999643940462D0D4D365C743346CF /* PFSessionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionController.m; path = Parse/Internal/Session/Controller/PFSessionController.m; sourceTree = "<group>"; }; - 5C28405D1D8221A23C8D5CC2C7FFE4BD /* PFQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryState.m; path = Parse/Internal/Query/State/PFQueryState.m; sourceTree = "<group>"; }; - 5D0CF790970A7CBA811F918B49965546 /* FBSDKShareConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareConstants.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m; sourceTree = "<group>"; }; - 5D1BEC4F5C959A0F3A590C62FFFAED54 /* PFUserPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserPrivate.h; path = Parse/Internal/User/PFUserPrivate.h; sourceTree = "<group>"; }; - 5D7F94B3DFD758F1C5AED31B6286D251 /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = "<group>"; }; - 5E36BFDAADCD9869360BFDBB5DC7919A /* PFMutableUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableUserState.m; path = Parse/Internal/User/State/PFMutableUserState.m; sourceTree = "<group>"; }; - 5E3D6F638163E7F25D3C3782B2DD5E9D /* PFRESTPushCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTPushCommand.h; path = Parse/Internal/Commands/PFRESTPushCommand.h; sourceTree = "<group>"; }; - 5E44DF993841344E4915FFD31A91D4EC /* FBSDKLikeDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeDialog.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.m; sourceTree = "<group>"; }; - 5EAF198C3A7ADA68D4CEE15D8F5409E8 /* Network.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Network.h; path = Code/Network.h; sourceTree = "<group>"; }; - 5EC412AF8C018680357347F65018B124 /* PFRole.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRole.m; path = Parse/PFRole.m; sourceTree = "<group>"; }; - 5F0A4B0C3848A8B587EDD0F613FFC91B /* PFThreadsafety.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFThreadsafety.h; path = Parse/Internal/ThreadSafety/PFThreadsafety.h; sourceTree = "<group>"; }; - 5FB90FC608DB5150B3A5D742A227198E /* PFDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDecoder.m; path = Parse/Internal/PFDecoder.m; sourceTree = "<group>"; }; - 60496328DA2C2D4EF5E4E2C9933AACD9 /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m; sourceTree = "<group>"; }; - 60B2A3058DFFA81A2091F7C428415666 /* FBSDKLikeButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m; sourceTree = "<group>"; }; - 60C56926A1A601A3101BC398EFC92298 /* FBSDKLikeBoxView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m; sourceTree = "<group>"; }; - 60F0D5F81E5A0E8F5FFDC41567CCE3CF /* PFURLSessionDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.m; sourceTree = "<group>"; }; - 610383C50F7E8C3E94C191A91D507693 /* PFURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.h; sourceTree = "<group>"; }; + 4EA63193596C0C6A36407E53BE350DC2 /* PFOfflineQueryLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryLogic.h; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.h; sourceTree = "<group>"; }; + 4EB1F29228069356CCA0E5D8E0C8DA3C /* RKPathUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPathUtilities.h; path = Code/Support/RKPathUtilities.h; sourceTree = "<group>"; }; + 4F609FCDD81EB1ADED68C1FE461C3594 /* FBSDKGameRequestDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.m; sourceTree = "<group>"; }; + 4F6B679BDA82770D971194798F95DC69 /* RKBenchmark.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKBenchmark.m; path = Code/Testing/RKBenchmark.m; sourceTree = "<group>"; }; + 4F70D98B41C9E7EEBC1231E9885224AA /* PFConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConstants.m; path = Parse/PFConstants.m; sourceTree = "<group>"; }; + 4F93FF0560F945FADCA311FD06CA31D3 /* PFJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFJSONSerialization.m; path = Parse/Internal/PFJSONSerialization.m; sourceTree = "<group>"; }; + 4F9A3C84F3CC18CABCD97E1DFB774A49 /* PFMutableQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableQueryState.m; path = Parse/Internal/Query/State/PFMutableQueryState.m; sourceTree = "<group>"; }; + 4FD94F67395BDA44DD37B2CEBB86BB64 /* PFFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileState.m; path = Parse/Internal/File/State/PFFileState.m; sourceTree = "<group>"; }; + 4FE71002F43E4EE07FF4CEB964FE6D44 /* PFMulticastDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMulticastDelegate.m; path = Parse/Internal/PFMulticastDelegate.m; sourceTree = "<group>"; }; + 502875FAB22E086DDEA2AD3FB860D1A5 /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = "<group>"; }; + 5030E7EB9027091137C392A948E0D5A8 /* FBSDKGraphErrorRecoveryProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphErrorRecoveryProcessor.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.m; sourceTree = "<group>"; }; + 503253CFCA3206291EBDFF00B0FDE5BF /* Parse_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse_Private.h; path = Parse/Internal/Parse_Private.h; sourceTree = "<group>"; }; + 503DF747F3430012E621A5BB819767FB /* FBSDKAppEventsDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsDeviceInfo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.m; sourceTree = "<group>"; }; + 5076A61842278BC01BD246CD9F6A6831 /* PFProduct.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFProduct.m; path = Parse/PFProduct.m; sourceTree = "<group>"; }; + 512FA3A57C3C25DEB20BFDE24938517B /* PFQueryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryUtilities.m; path = Parse/Internal/Query/Utilities/PFQueryUtilities.m; sourceTree = "<group>"; }; + 517FE5FCB5C6241B8A66BE083CA1AAE6 /* FBSDKLoginCompletion+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginCompletion+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h"; sourceTree = "<group>"; }; + 5251CF87DD5578A90ADED5D340FF960B /* POPAnimatorPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimatorPrivate.h; path = pop/POPAnimatorPrivate.h; sourceTree = "<group>"; }; + 525A38283E17DE63638B7101EDD603A5 /* FBSDKCoreKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKCoreKit.xcconfig; sourceTree = "<group>"; }; + 530B742954AE4C60876DC3128D82F154 /* RKTestFactory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestFactory.m; path = Code/Testing/RKTestFactory.m; sourceTree = "<group>"; }; + 535545A6AC7290701119A0B61C887EFF /* FBSDKLikeActionControllerCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionControllerCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.h; sourceTree = "<group>"; }; + 5404656CDC7518E20D0C557EF9C53B63 /* PFMultiProcessFileLockController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLockController.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.h; sourceTree = "<group>"; }; + 5444C22939A582C105AC91CE65D666F4 /* BFAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView.h; path = Bolts/iOS/BFAppLinkReturnToRefererView.h; sourceTree = "<group>"; }; + 54E5949F2C78F11D2017067D065794BD /* POPAnimationRuntime.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimationRuntime.mm; path = pop/POPAnimationRuntime.mm; sourceTree = "<group>"; }; + 55116A6D2C15718DE59AF5A2B7B5C7F2 /* PFURLSessionCommandRunner_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner_Private.h; sourceTree = "<group>"; }; + 556F7F390D364FD2B3DA48C98E500E2C /* TransitionKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = TransitionKit.xcconfig; sourceTree = "<group>"; }; + 55795C67F8572CA13753F14AC059940B /* POPDecayAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPDecayAnimation.mm; path = pop/POPDecayAnimation.mm; sourceTree = "<group>"; }; + 55B8770724B1C27628F366C0CF2D3B85 /* RKPaginator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPaginator.h; path = Code/Network/RKPaginator.h; sourceTree = "<group>"; }; + 55DBD79D6CDD908C9E0151AF56A3EFCE /* FBSDKProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfile.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.h; sourceTree = "<group>"; }; + 55DFDBF9FA07FC6282738752A376B991 /* PFURLConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLConstructor.h; path = Parse/Internal/HTTPRequest/PFURLConstructor.h; sourceTree = "<group>"; }; + 568C2C82ED942F4F6D68EBFBDD16316F /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = "<group>"; }; + 56EDB2104DA13588CD5B4334FF77452F /* FBSDKShareVideoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareVideoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.h; sourceTree = "<group>"; }; + 56FE36E9C6BEFFC89DD1BC36E6289234 /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = "<group>"; }; + 57319DCE064A4F4C9DD2D290FD88D642 /* YALAnimatingTabBarConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALAnimatingTabBarConstants.h; path = FoldingTabBar/Constants/YALAnimatingTabBarConstants.h; sourceTree = "<group>"; }; + 5732F9BC7E2742FFFC7C3BA8F1225459 /* BFAppLink_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink_Internal.h; path = Bolts/iOS/BFAppLink_Internal.h; sourceTree = "<group>"; }; + 5733C650048839167646DC7974A01ABA /* PFHTTPURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPURLRequestConstructor.h; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.h; sourceTree = "<group>"; }; + 5783E79BEDB98581985EEC5EEAD67953 /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h; sourceTree = "<group>"; }; + 57A42437229DCF10EA2D792B45EC0449 /* RKDotNetDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDotNetDateFormatter.m; path = Code/Support/RKDotNetDateFormatter.m; sourceTree = "<group>"; }; + 57B625AE6C787AB113D7EF7F05FB0637 /* FBSDKTestUsersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTestUsersManager.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.h; sourceTree = "<group>"; }; + 57EA8E1B5446775F4608110823A9BF8C /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m; sourceTree = "<group>"; }; + 58DD77FFA76457DC7826A465EB970094 /* PFConfig_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig_Private.h; path = Parse/Internal/Config/PFConfig_Private.h; sourceTree = "<group>"; }; + 58E4CECC242634F51EA5250B5A8FF795 /* RKRoute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRoute.m; path = Code/Network/RKRoute.m; sourceTree = "<group>"; }; + 592AA9AF2651D5C86E7E8D122F958616 /* FBSDKTriStateBOOL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTriStateBOOL.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.m; sourceTree = "<group>"; }; + 59EAFD88B92A3912D4951328AF334D28 /* FBSDKLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h; sourceTree = "<group>"; }; + 59F15D7F5CA85CC8436BD1872518AB18 /* POPPropertyAnimationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPPropertyAnimationInternal.h; path = pop/POPPropertyAnimationInternal.h; sourceTree = "<group>"; }; + 5A5C02D17E47A222D470066E80F5230B /* POPAnimationTracer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationTracer.h; path = pop/POPAnimationTracer.h; sourceTree = "<group>"; }; + 5A840F03EBE584ACE4D413A297B04FC9 /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = "<group>"; }; + 5AAE8E50B932782D92F325DCE2EDEBBB /* PFFieldOperationDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperationDecoder.h; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.h; sourceTree = "<group>"; }; + 5ADBAA054DAFCE013EB3EF9DF965F744 /* POPAnimatableProperty.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimatableProperty.mm; path = pop/POPAnimatableProperty.mm; sourceTree = "<group>"; }; + 5B791C6AA6D3B48C2C1AA9496E0790AD /* PFPushPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushPrivate.h; path = Parse/Internal/Push/PFPushPrivate.h; sourceTree = "<group>"; }; + 5B799574EF27A1E8D4FD50ADAA42EC77 /* PFReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFReachability.h; path = Parse/Internal/PFReachability.h; sourceTree = "<group>"; }; + 5BEC90C5581726DE80B840585A9F4174 /* PFAsyncTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAsyncTaskQueue.m; path = Parse/Internal/PFAsyncTaskQueue.m; sourceTree = "<group>"; }; + 5C4081A3EAA34140F505CCBE9D98C0C8 /* SOCKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SOCKit.h; sourceTree = "<group>"; }; + 5CA0A29FC7FC84E10BBE7CB9F915C818 /* PFUserConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserConstants.m; path = Parse/Internal/User/Constants/PFUserConstants.m; sourceTree = "<group>"; }; + 5DDC6BF6D637CEFC8BEDA82F87D0A60D /* RKValueTransformers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKValueTransformers.m; path = Code/RKValueTransformers.m; sourceTree = "<group>"; }; + 5E0DB2127804727AC549721870914323 /* RKSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKSerialization.h; path = Code/Support/RKSerialization.h; sourceTree = "<group>"; }; + 5E44BCC5A1A8313C135B429B4AA92FE8 /* PFObjectFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCodingLogic.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.h; sourceTree = "<group>"; }; + 5ED668482FAFCC7E2F744E4B45E21C00 /* PFCommandRunning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandRunning.h; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.h; sourceTree = "<group>"; }; + 5EEF5F821C5CAF35FB96774AFF53120A /* PFAlertView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAlertView.h; path = Parse/Internal/PFAlertView.h; sourceTree = "<group>"; }; + 5F5D256457EA109A0FD3C2B7F2AFFFD8 /* FBSDKLoginManagerLoginResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLoginResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m; sourceTree = "<group>"; }; + 5F8A42FF495AB8897D09E00CAD01440B /* PFPropertyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo.m; sourceTree = "<group>"; }; + 5FC2F31E95438D43C0ACB4E6B5287B8D /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = "<group>"; }; + 5FDB069FE07BA949728D658261EA3E40 /* POPAnimatableProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimatableProperty.h; path = pop/POPAnimatableProperty.h; sourceTree = "<group>"; }; + 60D3C2480A1362A32E373ED42790BD7C /* PFPaymentTransactionObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.h; sourceTree = "<group>"; }; + 6101E1788344FEF66BFB8A3BD80CF650 /* RKISO8601DateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKISO8601DateFormatter.m; path = Code/RKISO8601DateFormatter.m; sourceTree = "<group>"; }; + 610EC8334EB48B27B2BBE37D785AF2B2 /* FBSDKAppGroupJoinDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupJoinDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m; sourceTree = "<group>"; }; 6114EBA3A5CB7CB8ECE0A9BEFA6DB026 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; - 6175C27DAC5A50D940DB696AE83B785D /* PFObjectFilePersistenceController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFilePersistenceController.m; path = Parse/Internal/Object/FilePersistence/PFObjectFilePersistenceController.m; sourceTree = "<group>"; }; - 6194460804426F0A4B172D48D43424F3 /* PFURLSessionFileDownloadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionFileDownloadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.h; sourceTree = "<group>"; }; - 621694B9B8F4062ECD717CB818281308 /* PFRESTPushCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTPushCommand.m; path = Parse/Internal/Commands/PFRESTPushCommand.m; sourceTree = "<group>"; }; - 62A64EB7D48743BA4492B0267BB0BC95 /* BFURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFURL.m; path = Bolts/iOS/BFURL.m; sourceTree = "<group>"; }; - 62B1C84DAFBA62E9315595E2052A8728 /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 633C2A9E54BC58AA24FD4CB18067F314 /* FBSDKShareAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareAPI.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m; sourceTree = "<group>"; }; - 637A71462456BAA98EBD75DD2B6141C7 /* PFPropertyInfo_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Private.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Private.h; sourceTree = "<group>"; }; - 63BFA7CA55559EBDA4EFE89AE77C1E67 /* FBSDKShareDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDefines.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h; sourceTree = "<group>"; }; - 63D635232970F5FD839031F4052A247F /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = "<group>"; }; - 640B12F7182C4EF36510C06BF87ACDD7 /* RKHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKHTTPRequestOperation.h; path = Code/Network/RKHTTPRequestOperation.h; sourceTree = "<group>"; }; - 6447323ED6AD2EC1483AA3C66091EE93 /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h; sourceTree = "<group>"; }; - 646C67B4157CB47C91F3D55E7BFA577C /* PFAnalyticsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsController.h; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.h; sourceTree = "<group>"; }; - 64BCD63E238F4FF3CD5D95CE6BF75584 /* PFRESTCloudCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCloudCommand.h; path = Parse/Internal/Commands/PFRESTCloudCommand.h; sourceTree = "<group>"; }; - 64C153FEAD3A0694849A9B9865BF597E /* PFCommandRunning.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunning.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.m; sourceTree = "<group>"; }; - 64D0D3AB1BF1748F064867B7CE0DB23B /* FBSDKShareLinkContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareLinkContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m; sourceTree = "<group>"; }; - 650251D49165102AF10424F8FE6CFF26 /* PFURLSessionDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.h; sourceTree = "<group>"; }; - 6530D1C36D6D2481926600B02A05B330 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "AFNetworking/UIImageView+AFNetworking.h"; sourceTree = "<group>"; }; - 653B2C591481812B2FB9DCA0C314CA21 /* PFMutableACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableACLState.h; path = Parse/Internal/ACL/State/PFMutableACLState.h; sourceTree = "<group>"; }; - 656A6050B3AB59B9F95CC2C4394EC1D7 /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = "<group>"; }; - 65911DEF87A9DDCA7864D750D03DCF2A /* FBSDKLikeButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h; sourceTree = "<group>"; }; - 659D341D4BAADD4339DB44AC00772E9F /* _FBSDKLoginRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKLoginRecoveryAttempter.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m; sourceTree = "<group>"; }; - 664DB729E26FCE7792E743269AA1D35F /* FBSDKCheckmarkIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCheckmarkIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.m; sourceTree = "<group>"; }; - 6699EE8CE193D5123B3CF8DC8EFC4CA1 /* YALFoldingTabBar.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALFoldingTabBar.m; path = FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.m; sourceTree = "<group>"; }; - 66FDB0B731FFB4CE1465D2BF7FDCD263 /* YALSpringAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALSpringAnimation.m; path = FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.m; sourceTree = "<group>"; }; - 6802B9BFD996D3B878D450B785AC2060 /* FBSDKShareOpenGraphContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h; sourceTree = "<group>"; }; - 68655B40F89C27D89D53892FD3930D30 /* PFMulticastDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMulticastDelegate.m; path = Parse/Internal/PFMulticastDelegate.m; sourceTree = "<group>"; }; - 68A024759390FB7405C04F198DD88301 /* RKPathUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPathUtilities.h; path = Code/Support/RKPathUtilities.h; sourceTree = "<group>"; }; - 68C02417550547218FA95151404F94A5 /* FBSDKCoreKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCoreKit.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit.h; sourceTree = "<group>"; }; + 611F4CE6ED5017088CB427383A3D1445 /* RKDictionaryUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDictionaryUtilities.m; path = Code/Support/RKDictionaryUtilities.m; sourceTree = "<group>"; }; + 615339A2EDD3CE627A27EBB1ECFF21B3 /* FBSDKColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKColor.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.m; sourceTree = "<group>"; }; + 616A0DE1DAFFD10BF5A8DD300548447E /* PFQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQuery.h; path = Parse/PFQuery.h; sourceTree = "<group>"; }; + 616C83AFE6D3B13DB326EFFDA4E56218 /* PFUserConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserConstants.h; path = Parse/Internal/User/Constants/PFUserConstants.h; sourceTree = "<group>"; }; + 6273DBD91B70BE5A81E0EF6B816A31E1 /* PFCommandResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandResult.m; path = Parse/Internal/PFCommandResult.m; sourceTree = "<group>"; }; + 62923837C0899ECA2BAD6224F5A7B22E /* TKEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKEvent.h; path = Code/TKEvent.h; sourceTree = "<group>"; }; + 62BEED70070D14A0FF9C95200AA22741 /* PFACLState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACLState.m; path = Parse/Internal/ACL/State/PFACLState.m; sourceTree = "<group>"; }; + 632C18854DE2E319E9B6834A93514CC5 /* PFOfflineStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineStore.m; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m; sourceTree = "<group>"; }; + 632D62E7B544FFB77F14C130A2EC4510 /* POPAnimationEventInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationEventInternal.h; path = pop/POPAnimationEventInternal.h; sourceTree = "<group>"; }; + 6380D4168C668F109E1A03B20D714BBE /* RKErrorMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKErrorMessage.m; path = Code/ObjectMapping/RKErrorMessage.m; sourceTree = "<group>"; }; + 64264592576D6C230E966AC098067DAB /* FBSDKLikeButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.m; sourceTree = "<group>"; }; + 6426FFE9B7D5877E4580324A76A08178 /* PFObjectLocalIdStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectLocalIdStore.m; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.m; sourceTree = "<group>"; }; + 6447BB55EEB3096AE38B4D07B1F5F620 /* PFConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfigController.h; path = Parse/Internal/Config/Controller/PFConfigController.h; sourceTree = "<group>"; }; + 6467B92BD94142011900B81E0476CB0E /* POPAnimationRuntime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationRuntime.h; path = pop/POPAnimationRuntime.h; sourceTree = "<group>"; }; + 64DFE094C387E0DA1F62DB6912006497 /* POPDecayAnimationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPDecayAnimationInternal.h; path = pop/POPDecayAnimationInternal.h; sourceTree = "<group>"; }; + 64E0C0D87C1527E39C8527751DB7D005 /* POPVector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPVector.h; path = pop/POPVector.h; sourceTree = "<group>"; }; + 650F210D5B2E4ADBF30ED15408D730D3 /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = "<group>"; }; + 655746194AED6433F130ACB5AA120F9B /* SOCKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SOCKit.xcconfig; sourceTree = "<group>"; }; + 6569377CC0B0AA51EBA394C782985089 /* FBSDKShareDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.m; sourceTree = "<group>"; }; + 658BD9C8EBCC6CE298417312A7B194FF /* PFCurrentObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentObjectControlling.h; path = Parse/Internal/Object/CurrentController/PFCurrentObjectControlling.h; sourceTree = "<group>"; }; + 65962B65C068EE02DAE719D8D70CA321 /* RKMapperOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapperOperation.h; path = Code/ObjectMapping/RKMapperOperation.h; sourceTree = "<group>"; }; + 6674B326B12A30BE2A6BCDFC2F890324 /* PFKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeychainStore.m; path = Parse/Internal/PFKeychainStore.m; sourceTree = "<group>"; }; + 66754BB67AA131A94D10F42D109E8523 /* PFRole.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRole.m; path = Parse/PFRole.m; sourceTree = "<group>"; }; + 667F8446CCEAF60B9DCD4E68CCB9ED5E /* RKLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKLog.m; path = Code/Support/RKLog.m; sourceTree = "<group>"; }; + 66C350784D8C52C699FE7DD47EF906FB /* RKRouteSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRouteSet.m; path = Code/Network/RKRouteSet.m; sourceTree = "<group>"; }; + 672B96E281A19DA7F2F22511F1093D16 /* FBSDKLiking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLiking.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h; sourceTree = "<group>"; }; + 6768924E65317D0E30521724DC081C08 /* FBSDKShareOpenGraphAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphAction.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h; sourceTree = "<group>"; }; + 67B4C66668FC14A61182B73575A193DE /* ParseModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseModule.m; path = Parse/Internal/ParseModule.m; sourceTree = "<group>"; }; + 67CF036576967715D363A2E7C16E4AAD /* FBSDKKeychainStoreViaBundleID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKKeychainStoreViaBundleID.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.h; sourceTree = "<group>"; }; + 67DBA3140A542C45905BA912DF9D6D93 /* RestKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RestKit.xcconfig; sourceTree = "<group>"; }; + 68133029060DA29FD5C9C26119CFA51B /* FBSDKLikeActionControllerCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionControllerCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m; sourceTree = "<group>"; }; + 68FE49164D11028318A5BFC6389C361A /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = "<group>"; }; 6911BECA35E7518D864239B7E898EEF3 /* Pods-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-frameworks.sh"; sourceTree = "<group>"; }; - 69532310DA9419CB7D0183940081C37D /* PFWeakValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFWeakValue.m; path = Parse/Internal/PFWeakValue.m; sourceTree = "<group>"; }; - 697AC4B193E7B1C3AAB92E30576C70EB /* PFSessionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionUtilities.m; path = Parse/Internal/Session/Utilities/PFSessionUtilities.m; sourceTree = "<group>"; }; - 697F8C874C7CA2299F6F34AF16B60BA4 /* PFFileState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState_Private.h; path = Parse/Internal/File/State/PFFileState_Private.h; sourceTree = "<group>"; }; - 698C95FE97ED8FCE0AF17A04C769ACD7 /* PFQueryState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState_Private.h; path = Parse/Internal/Query/State/PFQueryState_Private.h; sourceTree = "<group>"; }; - 69FCCBED66F1FD4D49A5DF14367CB3F6 /* PFFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileManager.h; path = Parse/Internal/PFFileManager.h; sourceTree = "<group>"; }; - 6A0D078B3F700A4B5BC98F3B41F44FDC /* PFACL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACL.h; path = Parse/PFACL.h; sourceTree = "<group>"; }; - 6A4AD6C82C6BD994B92B71460DABC8FC /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "AFNetworking/UIImageView+AFNetworking.m"; sourceTree = "<group>"; }; - 6A92D4243C0F137302709F07AA614754 /* CATransaction+TransactionWithAnimationsAndCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CATransaction+TransactionWithAnimationsAndCompletion.h"; path = "FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.h"; sourceTree = "<group>"; }; - 6AB27F170175D24AE67E7FE4DE679D4B /* TransitionKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = TransitionKit.xcconfig; sourceTree = "<group>"; }; - 6B6718A558812C369FEAEEE13F58304E /* Bolts.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bolts.xcconfig; sourceTree = "<group>"; }; - 6BCE676F39C259B6C0BF1690EB5DBE25 /* FBSDKLoginManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManager.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.h; sourceTree = "<group>"; }; - 6C1AC18847E2EFD352913578BFCE568F /* PFRESTQueryCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTQueryCommand.m; path = Parse/Internal/Commands/PFRESTQueryCommand.m; sourceTree = "<group>"; }; - 6CAE8C5DA18BB8CA4DD074A31BA648D2 /* YALFoldingTabBarController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALFoldingTabBarController.h; path = FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.h; sourceTree = "<group>"; }; - 6D53FE7781D3C1C29653F7E97CD587C6 /* RKObjectMappingMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMappingMatcher.m; path = Code/ObjectMapping/RKObjectMappingMatcher.m; sourceTree = "<group>"; }; - 6D550D3103B9BC03C2B3CFD252981DA2 /* PFUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserController.h; path = Parse/Internal/User/Controller/PFUserController.h; sourceTree = "<group>"; }; - 6DE5893A62D5A2BB957C613ACF80A5D8 /* FBSDKCoreKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKCoreKit-prefix.pch"; sourceTree = "<group>"; }; - 6F8DF2C96C207C665982A18CF849D6AF /* PFRESTObjectBatchCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectBatchCommand.m; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.m; sourceTree = "<group>"; }; - 702E8ADADAF9B688368323A9218E6461 /* FBSDKLoginManagerLoginResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManagerLoginResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h"; sourceTree = "<group>"; }; - 703806AC44DC3DAA0B029C076D84918C /* FBSDKLoginTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h; sourceTree = "<group>"; }; - 7085A58614F89184F48256983144E2A4 /* PFObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObject.m; path = Parse/PFObject.m; sourceTree = "<group>"; }; - 708E2A05386B4566A5D2D2BC686ACF19 /* YALTabBarInteracting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALTabBarInteracting.h; path = FoldingTabBar/Protocol/TabBarInteracting/YALTabBarInteracting.h; sourceTree = "<group>"; }; - 70A2C6CE14776F9B578042E6CC7C2126 /* RKDotNetDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDotNetDateFormatter.h; path = Code/Support/RKDotNetDateFormatter.h; sourceTree = "<group>"; }; - 70AED028A0517D0D287C17C074D896DC /* PFBaseState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBaseState.h; path = Parse/Internal/PFBaseState.h; sourceTree = "<group>"; }; - 70CE433A9DEB32F93FB37B35D6987006 /* PFObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectUtilities.h; path = Parse/Internal/Object/Utilities/PFObjectUtilities.h; sourceTree = "<group>"; }; - 71197DCFE9C806E6F574A696BE01DFA8 /* FBSDKSharePhotoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhotoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m; sourceTree = "<group>"; }; - 71C1EF327C1FCABF7C18FBE944C3E96B /* FBSDKLikeActionControllerCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionControllerCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionControllerCache.m; sourceTree = "<group>"; }; - 71C2E7C3225F1C71AB7801BD548C40BF /* RKMappingResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingResult.m; path = Code/ObjectMapping/RKMappingResult.m; sourceTree = "<group>"; }; - 72320D3C2B4F77715F2449CF313C8A0F /* BFExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFExecutor.h; path = Bolts/Common/BFExecutor.h; sourceTree = "<group>"; }; - 72B7D073C442C0EC9D3D4650B7CE4F23 /* PFUserConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserConstants.m; path = Parse/Internal/User/Constants/PFUserConstants.m; sourceTree = "<group>"; }; - 72E01F510DB4DF12750DF5F0ED31E9CE /* RKDynamicMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDynamicMapping.m; path = Code/ObjectMapping/RKDynamicMapping.m; sourceTree = "<group>"; }; - 731BCFC9FA06980186D87DFACC655FFE /* FBSDKBridgeAPICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPICrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m; sourceTree = "<group>"; }; + 696513A0EDF7E7D3B1DA9E8871E05685 /* POPGeometry.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPGeometry.mm; path = pop/POPGeometry.mm; sourceTree = "<group>"; }; + 69B2823ABCAD80D975C9E8C29A5E869F /* FBSDKShareVideoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideoContent.m; sourceTree = "<group>"; }; + 6A2F4083D494D045689BC3A072187C3B /* TransformationMatrix.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = TransformationMatrix.cpp; path = pop/WebCore/TransformationMatrix.cpp; sourceTree = "<group>"; }; + 6A45C57C5D3CBC79D400F49C075773AE /* libAFNetworking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAFNetworking.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 6A986FCBAFF66C34031E230F059A2DCF /* RKTestConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestConstants.m; path = Code/Testing/RKTestConstants.m; sourceTree = "<group>"; }; + 6AD9092DA1F9CCC04506CAA7CAD0EC83 /* RKMIMETypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMIMETypes.h; path = Code/Support/RKMIMETypes.h; sourceTree = "<group>"; }; + 6AE20D46FEA8C73D4CD5828D72E4D47B /* ISO8601DateFormatterValueTransformer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ISO8601DateFormatterValueTransformer-prefix.pch"; sourceTree = "<group>"; }; + 6AFF7959F2290BD0027C49FBA305DFE5 /* RKLumberjackLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKLumberjackLogger.m; path = Code/Support/RKLumberjackLogger.m; sourceTree = "<group>"; }; + 6B650BB26CA49F23280F611BC06CAB7A /* PFGeoPoint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFGeoPoint.m; path = Parse/PFGeoPoint.m; sourceTree = "<group>"; }; + 6B7304E8EFDCC873E1CE3D2CA2076A74 /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = "<group>"; }; + 6BBAD9DCAFF06BB669E8D77482B04BDB /* PFMulticastDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMulticastDelegate.h; path = Parse/Internal/PFMulticastDelegate.h; sourceTree = "<group>"; }; + 6BD1AFE5456BC7AAC15A5D308229EC88 /* FBSDKURLConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.h; sourceTree = "<group>"; }; + 6BFB7F5189C7630850B466033A6828EF /* FBSDKKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStore.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStore.m; sourceTree = "<group>"; }; + 6C3843CD6AEFE5F515E6142799F801CA /* PFPushState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState_Private.h; path = Parse/Internal/Push/State/PFPushState_Private.h; sourceTree = "<group>"; }; + 6D052546B61C8CA0E3EB34475BFB60D0 /* PFMutableUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableUserState.h; path = Parse/Internal/User/State/PFMutableUserState.h; sourceTree = "<group>"; }; + 6D169B7683E9DA4DE1D139D6CD10D190 /* RestKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RestKit-dummy.m"; sourceTree = "<group>"; }; + 6D298D539E71478D6340E3FA832E4778 /* PFFile_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile_Private.h; path = Parse/Internal/File/PFFile_Private.h; sourceTree = "<group>"; }; + 6D540B5BA940B77762F525759CD9E2F7 /* _FBSDKLoginRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKLoginRecoveryAttempter.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.h; sourceTree = "<group>"; }; + 6D7387AFD498FF6D486BEF5755B9D7B3 /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h; sourceTree = "<group>"; }; + 6DC8BFB1DFE3D689F572296A0DA6E236 /* PFMutablePushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutablePushState.m; path = Parse/Internal/Push/State/PFMutablePushState.m; sourceTree = "<group>"; }; + 6E2D1B4FCC4918686DEAF9094B908917 /* FBSDKLoginError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginError.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginError.m; sourceTree = "<group>"; }; + 6E3D7476264442440AC1374D1E0418A1 /* BFAppLinkReturnToRefererView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererView.m; path = Bolts/iOS/BFAppLinkReturnToRefererView.m; sourceTree = "<group>"; }; + 6EBA7EC1BD2D3653F709A5C97063B990 /* PFUserPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserPrivate.h; path = Parse/Internal/User/PFUserPrivate.h; sourceTree = "<group>"; }; + 6F2BB3EBFE218C47714938D29CF23EF9 /* PFObjectSubclassingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassingController.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.h; sourceTree = "<group>"; }; + 6F529E412A09BF39D8AEC42AFFDF2F46 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = "<group>"; }; + 6FE7C0F12060A4C3CEE3C5427762A616 /* RKMappingOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingOperation.m; path = Code/ObjectMapping/RKMappingOperation.m; sourceTree = "<group>"; }; + 6FF111BF52B8C1648F8023FC642FF2C8 /* PFObjectFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCodingLogic.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.m; sourceTree = "<group>"; }; + 6FF8DA1F7EEE96CC61CEEB687513A615 /* PFCurrentUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentUserController.m; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.m; sourceTree = "<group>"; }; + 701190361150FF2EEDEF10D05ABE7065 /* PFURLSessionDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.h; sourceTree = "<group>"; }; + 7239EC1173010662F747781299C375DA /* FBSDKGraphRequestConnection+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequestConnection+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestConnection+Internal.h"; sourceTree = "<group>"; }; + 723C3B2158211623464D6751F8AB7101 /* POPMath.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPMath.mm; path = pop/POPMath.mm; sourceTree = "<group>"; }; + 72766C115F290B685E1C527E77EDEDEE /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTaskCompletionSource.h; path = Bolts/Common/BFTaskCompletionSource.h; sourceTree = "<group>"; }; + 72B29870F05A80283BE95E71DEBEE1D2 /* POPAnimationTracer.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimationTracer.mm; path = pop/POPAnimationTracer.mm; sourceTree = "<group>"; }; + 72C1FA5A8BDBCEC19E41771957BEB9E3 /* PFSessionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionUtilities.m; path = Parse/Internal/Session/Utilities/PFSessionUtilities.m; sourceTree = "<group>"; }; + 73136CB5DF8D9FDC9C0B3FF336E53790 /* PFSessionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSessionController.m; path = Parse/Internal/Session/Controller/PFSessionController.m; sourceTree = "<group>"; }; 733D51F628A8649F5A0790296BA3E42A /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; - 7358191BB91547CAE16F05DBDB1BE31D /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = "<group>"; }; - 73A197191DE75F22F95C4B3C2E31527B /* PFDefaultACLController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDefaultACLController.m; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.m; sourceTree = "<group>"; }; - 73ADD1CAE6F397CC4738B0967E78B570 /* RKPathUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPathUtilities.m; path = Code/Support/RKPathUtilities.m; sourceTree = "<group>"; }; - 74462B5EFF7650ED4744047E928DA11C /* FBSDKMessageDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessageDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m; sourceTree = "<group>"; }; - 74ED9759C7FE5F4ED33138ACAA88C82F /* PFRESTObjectBatchCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectBatchCommand.h; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.h; sourceTree = "<group>"; }; - 74F217FA9548DBD823F25F1DA863850B /* FBSDKShareOpenGraphAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphAction.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphAction.h; sourceTree = "<group>"; }; - 7528F8DFCEB5328922BCA59B0054A221 /* RKLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKLog.m; path = Code/Support/RKLog.m; sourceTree = "<group>"; }; - 75495EC377930B0233AFC77A4D61575F /* CATransaction+TransactionWithAnimationsAndCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CATransaction+TransactionWithAnimationsAndCompletion.m"; path = "FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.m"; sourceTree = "<group>"; }; - 75C40E2C04EF1F38C17C8E45D198B60E /* PFEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue.h; path = Parse/Internal/PFEventuallyQueue.h; sourceTree = "<group>"; }; - 75FD15A68FD0466D803569EEB9CEBBAD /* FBSDKLikeControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeControl.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m; sourceTree = "<group>"; }; - 76268C1A5595073CBD957E1BD34F8AEE /* PFEventuallyPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyPin.m; path = Parse/Internal/PFEventuallyPin.m; sourceTree = "<group>"; }; - 7677707275A2EF60830F578201163529 /* PFMutableFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableFileState.h; path = Parse/Internal/File/State/PFMutableFileState.h; sourceTree = "<group>"; }; - 768A924021D993B1CF8F4AA7BD2A0B5A /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = "<group>"; }; - 76C5BB7D9A288AE9D8A835E210188D21 /* AFPropertyListRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFPropertyListRequestOperation.h; path = AFNetworking/AFPropertyListRequestOperation.h; sourceTree = "<group>"; }; - 76F892C34CC6406B1AB6E24B09138F86 /* FBSDKShareVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideo.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m; sourceTree = "<group>"; }; - 773BC40E82A6994ABB953BECE34B7AA4 /* PFMultiProcessFileLockController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLockController.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.m; sourceTree = "<group>"; }; - 783A3E8CD34175B563A9C12AA16DE8BD /* PFObjectConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectConstants.h; path = Parse/Internal/Object/Constants/PFObjectConstants.h; sourceTree = "<group>"; }; - 78A46E6623C4E1A7D565B7AC5751DE2C /* RKValueTransformers.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RKValueTransformers.xcconfig; sourceTree = "<group>"; }; - 78A8CA3DC6231EBEE1E0835C4B5FCE5E /* RKDynamicMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDynamicMapping.h; path = Code/ObjectMapping/RKDynamicMapping.h; sourceTree = "<group>"; }; - 78AFC5613D6C0DB29F522A49E3BA144F /* TKEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKEvent.m; path = Code/TKEvent.m; sourceTree = "<group>"; }; - 78CD59E0BD6F1DE92BCA187E736EF6BE /* RKObjectParameterization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectParameterization.m; path = Code/Network/RKObjectParameterization.m; sourceTree = "<group>"; }; - 7937DE6BBA72253E75BE2C99AD624094 /* RKMappingResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingResult.h; path = Code/ObjectMapping/RKMappingResult.h; sourceTree = "<group>"; }; - 7963D53D53339137B7E1A3AB0F520174 /* PFAnalyticsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsController.m; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.m; sourceTree = "<group>"; }; - 79791F337B75C7A9E86B2C16831BA3B4 /* PFPinningEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningEventuallyQueue.m; path = Parse/Internal/PFPinningEventuallyQueue.m; sourceTree = "<group>"; }; - 7A18E97231CDD5F751206CDE84F4B9BC /* RKMIMETypeSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMIMETypeSerialization.h; path = Code/Support/RKMIMETypeSerialization.h; sourceTree = "<group>"; }; - 7A1B02F9DF967F2FFEC317D614A2136F /* PFRESTObjectCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectCommand.m; path = Parse/Internal/Commands/PFRESTObjectCommand.m; sourceTree = "<group>"; }; - 7ABE21AAB21F6820C93F75F77BA84A8C /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = "<group>"; }; - 7AC84CF788A165593B670BC7F8133D15 /* FBSDKAccessTokenCacheV3_17.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_17.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h; sourceTree = "<group>"; }; - 7AD43C7473FB3333A13A263F3DED7A13 /* PFObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController.h; path = Parse/Internal/Object/Controller/PFObjectController.h; sourceTree = "<group>"; }; - 7B0AE93D99549D7F950DBDC8C99044A2 /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = "<group>"; }; - 7B240507A5F5C3ACC7EDDA9A36CAEFEE /* PFRESTFileCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTFileCommand.m; path = Parse/Internal/Commands/PFRESTFileCommand.m; sourceTree = "<group>"; }; - 7C12288DE642EF37C6B63C07FF664190 /* FBSDKLikeActionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionController.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h; sourceTree = "<group>"; }; - 7C605E7C0D2766C324CD9DAAE8BC0DCB /* PFEventuallyQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyQueue.m; path = Parse/Internal/PFEventuallyQueue.m; sourceTree = "<group>"; }; - 7CB666E8346B15C56F87F1C89B253C80 /* PFCoreManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCoreManager.m; path = Parse/Internal/PFCoreManager.m; sourceTree = "<group>"; }; - 7D1C86B95A8E3810D8B07D2319B3FF71 /* FBSDKLoginUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginUtility.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h; sourceTree = "<group>"; }; - 7DAC1FC2CA2D2B4A01038D5148555190 /* PFAnalyticsUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsUtilities.h; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.h; sourceTree = "<group>"; }; - 7E54575097CC4D7273F152CBCC1DE9FB /* FBSDKShareKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKShareKit.xcconfig; sourceTree = "<group>"; }; - 7E7A521656E2772319D441042C5D6FBB /* BFTask+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BFTask+Private.h"; path = "Parse/Internal/BFTask+Private.h"; sourceTree = "<group>"; }; - 7F0B1E9EBA20A4C290F0895CD4B960C0 /* RKMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMapping.m; path = Code/ObjectMapping/RKMapping.m; sourceTree = "<group>"; }; - 7F5A634097C8C984304065334CBF5BCB /* AFJSONRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFJSONRequestOperation.h; path = AFNetworking/AFJSONRequestOperation.h; sourceTree = "<group>"; }; - 7F9AF6687FB731435E4D8A667BC21448 /* FBSDKProfile+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKProfile+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKProfile+Internal.h"; sourceTree = "<group>"; }; - 7FEED7FB2327B849D9B3FB01D3E04329 /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = "<group>"; }; - 80215F89C91F2E95ADA9D8D5F5443FD6 /* PFCategoryLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCategoryLoader.h; path = Parse/Internal/PFCategoryLoader.h; sourceTree = "<group>"; }; - 812F56D962057B55B97DA7C2E81454B8 /* PFRESTUserCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTUserCommand.h; path = Parse/Internal/Commands/PFRESTUserCommand.h; sourceTree = "<group>"; }; - 817BE16BBDE06E00A285E8DEA40C2A92 /* PFAsyncTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAsyncTaskQueue.h; path = Parse/Internal/PFAsyncTaskQueue.h; sourceTree = "<group>"; }; - 81A5DB14272C6EBC7DA612E0D8FBD00A /* FBSDKLikeButton+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeButton+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h"; sourceTree = "<group>"; }; - 81E97AE375AD2C365E560E20CFA6DD4A /* FBSDKAccessTokenCacheV3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h; sourceTree = "<group>"; }; - 821E516878F8F964D6941FE6C2AEB04D /* YALFoldingTabBar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALFoldingTabBar.h; path = FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.h; sourceTree = "<group>"; }; - 8286A9C555581B1077CACA650C967E59 /* RKObjectManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectManager.m; path = Code/Network/RKObjectManager.m; sourceTree = "<group>"; }; - 82B067532E3BF3282258482B488C6D65 /* AFURLConnectionOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLConnectionOperation.h; path = AFNetworking/AFURLConnectionOperation.h; sourceTree = "<group>"; }; - 836DD34AA9FD86CA7B162C11FF60F67C /* RKConnectionTestExpectation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKConnectionTestExpectation.h; path = Code/Testing/RKConnectionTestExpectation.h; sourceTree = "<group>"; }; - 837C54D3D72E985D6E6FF3BBEA8D1EF1 /* PFConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfigController.m; path = Parse/Internal/Config/Controller/PFConfigController.m; sourceTree = "<group>"; }; - 83B82BD0C23C3508B8C4235B574CB5CE /* RKStringTokenizer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKStringTokenizer.m; path = Code/Support/RKStringTokenizer.m; sourceTree = "<group>"; }; - 83C232075A2AC8C59594FDDD1D494936 /* SOCKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SOCKit-dummy.m"; sourceTree = "<group>"; }; - 83DE73D13A43E32C92686B974DE323D3 /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = "<group>"; }; - 83EAF6F3D84D5233748529A8E8CB094D /* FBSDKLikeBoxBorderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxBorderView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h; sourceTree = "<group>"; }; - 8470CA3B7EA842B7D1BE44214C739AF0 /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = "<group>"; }; - 84AD6D354E9C8F6B153ED2A34AC28FAC /* libParse.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libParse.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 84DE8F6C85087D8851CE8C93EF867DCD /* PFMutablePushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutablePushState.h; path = Parse/Internal/Push/State/PFMutablePushState.h; sourceTree = "<group>"; }; - 85005E81A14B03A9ADDF308A1C17B784 /* RKObjectMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMapping.m; path = Code/ObjectMapping/RKObjectMapping.m; sourceTree = "<group>"; }; - 856D46D1E0A3157D00390C58BC8DA218 /* FBSDKWebDialogView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialogView.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.m; sourceTree = "<group>"; }; - 8582EC197D28F9D94A384B032F5B2C58 /* PFSQLiteStatement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteStatement.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.h; sourceTree = "<group>"; }; - 85A9C0088D1A20CD6084587FE37E8706 /* FBSDKAppGroupAddDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupAddDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.h; sourceTree = "<group>"; }; - 860438E9D197650BC7168E76CA8F76E1 /* PFMutableQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableQueryState.h; path = Parse/Internal/Query/State/PFMutableQueryState.h; sourceTree = "<group>"; }; - 862487394328F3BC868EBBAC32F7D1AA /* PFFieldOperationDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperationDecoder.m; path = Parse/Internal/FieldOperation/PFFieldOperationDecoder.m; sourceTree = "<group>"; }; - 8626A096D5442B8137154A62B0ADD414 /* PFUserFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserFileCodingLogic.h; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.h; sourceTree = "<group>"; }; - 86C52238DDC9FA7C9DCD49852E0DFE88 /* PFObjectConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectConstants.m; path = Parse/Internal/Object/Constants/PFObjectConstants.m; sourceTree = "<group>"; }; - 86E31A2D9DD96916FA15693B655848D1 /* RKRelationshipMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRelationshipMapping.h; path = Code/ObjectMapping/RKRelationshipMapping.h; sourceTree = "<group>"; }; - 8714E7D607BECB036F81715B5C27F0ED /* lcl_config_extensions_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_extensions_RK.h; path = Code/Support/lcl_config_extensions_RK.h; sourceTree = "<group>"; }; - 8780D2FFBC1992D6FDA23E5A3A81CF1E /* PFPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPin.h; path = Parse/Internal/LocalDataStore/Pin/PFPin.h; sourceTree = "<group>"; }; - 878B0AD059EDF719C2B350F1235F0A90 /* PFRESTCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand.h; path = Parse/Internal/Commands/PFRESTCommand.h; sourceTree = "<group>"; }; - 878D09AB47A4BDD9D340540825C9E015 /* FBSDKAppGroupContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h; sourceTree = "<group>"; }; - 87943BFB7F1004CFB75603B28BBF3C4A /* PFHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHash.m; path = Parse/Internal/PFHash.m; sourceTree = "<group>"; }; - 87CD736E8B954F15E500CE7D55A80EE1 /* ISO8601DateFormatterValueTransformer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ISO8601DateFormatterValueTransformer-prefix.pch"; sourceTree = "<group>"; }; - 880D8A88A7684A55315EDE4547F17390 /* PFThreadsafety.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFThreadsafety.m; path = Parse/Internal/ThreadSafety/PFThreadsafety.m; sourceTree = "<group>"; }; - 8867D68940B55D23D0E9719E275BFA8B /* PFObjectLocalIdStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectLocalIdStore.h; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h; sourceTree = "<group>"; }; - 88F4DDD745B9F0253403AF9B24C6F051 /* RKErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKErrors.m; path = Code/Support/RKErrors.m; sourceTree = "<group>"; }; - 89638686460135E581F100965DB593A4 /* AFJSONRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFJSONRequestOperation.m; path = AFNetworking/AFJSONRequestOperation.m; sourceTree = "<group>"; }; - 8A3F94D10D8725691A1ABC86A1405D5C /* FBSDKTestUsersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTestUsersManager.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKTestUsersManager.m; sourceTree = "<group>"; }; - 8B012D386ED7D06A4EF5353DAB2DD66D /* AFHTTPClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPClient.h; path = AFNetworking/AFHTTPClient.h; sourceTree = "<group>"; }; - 8B25D2830AB2AF5C858A10271039E131 /* PFPushChannelsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushChannelsController.m; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.m; sourceTree = "<group>"; }; - 8B270479704A7D09440A3A5A8C04C228 /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = "<group>"; }; - 8B3F27BBC16C6C75FB3E5345F12F61A9 /* FBSDKSharePhotoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhotoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h; sourceTree = "<group>"; }; - 8B465E244D44A3BE904CFF8C4A48E701 /* PFURLConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLConstructor.m; path = Parse/Internal/HTTPRequest/PFURLConstructor.m; sourceTree = "<group>"; }; - 8BAA0C25C337D44ADABB547C00BFE0D1 /* RestKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RestKit-dummy.m"; sourceTree = "<group>"; }; - 8BDEF7A52E57E764142D42EE5DB63FD2 /* Parse_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse_Private.h; path = Parse/Internal/Parse_Private.h; sourceTree = "<group>"; }; - 8C081A1F7DD370C044B7D5118E27A38F /* PFRESTConfigCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTConfigCommand.m; path = Parse/Internal/Commands/PFRESTConfigCommand.m; sourceTree = "<group>"; }; - 8C5315150FD5B5F202952CF7B1140BA5 /* Parse-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Parse-dummy.m"; sourceTree = "<group>"; }; - 8CA0240612F45CA8F80CC4045A3C4C7E /* PFHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHash.h; path = Parse/Internal/PFHash.h; sourceTree = "<group>"; }; - 8CA5367E50A1A62A594A47FAA506499D /* FBSDKSharingContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingContent.h; sourceTree = "<group>"; }; - 8D05A09C1E9B8D6D162D9DBC753EA922 /* PFCommandCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache.h; path = Parse/Internal/PFCommandCache.h; sourceTree = "<group>"; }; - 8D3C1AE934C5238738DBEBC420E58024 /* _FBSDKTemporaryErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKTemporaryErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.m; sourceTree = "<group>"; }; - 8D4A5E0FFDBB5F59ACC2A7671E2EE4ED /* AFXMLRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFXMLRequestOperation.h; path = AFNetworking/AFXMLRequestOperation.h; sourceTree = "<group>"; }; - 8D68B95DF6CEEFD1E9A5D0DBEE6B89D8 /* RKRequestDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRequestDescriptor.h; path = Code/Network/RKRequestDescriptor.h; sourceTree = "<group>"; }; - 8D9CA35ABDD2925A9EF401DDDFDF3DEA /* PFObjectSubclassInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassInfo.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.m; sourceTree = "<group>"; }; - 8DC92D832BC4F98CB9CDF7D7A7B176F3 /* PFQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryController.m; path = Parse/Internal/Query/Controller/PFQueryController.m; sourceTree = "<group>"; }; - 8E2A6616C4F11E50D862C39BA82A0764 /* PFObjectSubclassingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassingController.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.h; sourceTree = "<group>"; }; - 8F17239611A3B8B424D42FCD9B529DA9 /* RKPropertyMappingTestExpectation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyMappingTestExpectation.m; path = Code/Testing/RKPropertyMappingTestExpectation.m; sourceTree = "<group>"; }; - 902CDE40ABBA4BCA68994F6995BEE047 /* SOCKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SOCKit-prefix.pch"; sourceTree = "<group>"; }; - 90BC9D720C96091D799BE399435389DA /* PFFieldOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperation.h; path = Parse/Internal/FieldOperation/PFFieldOperation.h; sourceTree = "<group>"; }; - 90EEFECBB8ABE95AB2BD379AE1A08389 /* FBSDKTypeUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTypeUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.m; sourceTree = "<group>"; }; - 91029F40DE711320BF2AA3DF5F22A51C /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = "<group>"; }; - 9151CBFA951CC2C02B03C255F48BDFEE /* PFAnalyticsUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsUtilities.m; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.m; sourceTree = "<group>"; }; - 9171C157C53514711AFD5FF984F31433 /* PFHTTPURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFHTTPURLRequestConstructor.h; path = Parse/Internal/HTTPRequest/PFHTTPURLRequestConstructor.h; sourceTree = "<group>"; }; - 9193281C25815834A39FE54B319DD33D /* PFConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConstants.h; path = Parse/PFConstants.h; sourceTree = "<group>"; }; - 91E000C46BBB39E5ED5C9A8FEC95F0CB /* YALTabBarItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALTabBarItem.m; path = FoldingTabBar/Model/TabBarItem/YALTabBarItem.m; sourceTree = "<group>"; }; - 91E3599579258E326AC94189503BED96 /* libFBSDKShareKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKShareKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 92A46B5132CB11500CEFCB4DA5AF636C /* PFRESTFileCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTFileCommand.h; path = Parse/Internal/Commands/PFRESTFileCommand.h; sourceTree = "<group>"; }; - 931878F83D6F6F825E3F681B771690B9 /* PFURLSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession_Private.h; sourceTree = "<group>"; }; - 9404F58DCEDDFD27D11EDC156DE41058 /* RKRouter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRouter.m; path = Code/Network/RKRouter.m; sourceTree = "<group>"; }; - 94115F4D46CF02AFA9A9A36A9D041A73 /* PFBase64Encoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBase64Encoder.m; path = Parse/Internal/PFBase64Encoder.m; sourceTree = "<group>"; }; - 94212D75F6067FFA601083EF41CC441A /* ParseManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseManager.h; path = Parse/Internal/ParseManager.h; sourceTree = "<group>"; }; - 942F4435C4E5B28ACF4995C1B58BC460 /* FBSDKLoginManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManager.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManager.m; sourceTree = "<group>"; }; - 943C0E46DB3D37D67FFBB0E81F8082D7 /* FBSDKLikeActionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionController.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m; sourceTree = "<group>"; }; - 948C70E84F724FF8F752385A5BD920DF /* FBSDKTypeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTypeUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTypeUtility.h; sourceTree = "<group>"; }; - 94AC9DE3CACB9F94683FD063FBB0D29B /* FBSDKErrorRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryAttempter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.m; sourceTree = "<group>"; }; - 95418B78D785BACFEAFC48B338DE9AF4 /* PFCloudCodeController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloudCodeController.m; path = Parse/Internal/CloudCode/PFCloudCodeController.m; sourceTree = "<group>"; }; - 9568A44CB835524C00AA887038D28A2D /* PFReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFReachability.m; path = Parse/Internal/PFReachability.m; sourceTree = "<group>"; }; - 95E86A54E3D8EFC5EAD2463D4E89A3CF /* PFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkActivityIndicatorManager.h; path = Parse/PFNetworkActivityIndicatorManager.h; sourceTree = "<group>"; }; - 95FB0DA8AF871D7246C122EF20326E70 /* PFRESTConfigCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTConfigCommand.h; path = Parse/Internal/Commands/PFRESTConfigCommand.h; sourceTree = "<group>"; }; - 9671F1EB06ECFCB5039E830159A8B807 /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = "<group>"; }; - 96725FE5D9936FFB88E9EF3C7354C6BF /* PFOperationSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOperationSet.m; path = Parse/Internal/Object/OperationSet/PFOperationSet.m; sourceTree = "<group>"; }; - 9687B38FD53EC72E99246120219AFE41 /* PFAlertView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAlertView.m; path = Parse/Internal/PFAlertView.m; sourceTree = "<group>"; }; - 96AA4B508FBFE9971F929FB061B14436 /* FBSDKGameRequestDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestDialog.h; sourceTree = "<group>"; }; - 96B789CF6E62B4AFFE38A3E4538927DA /* FBSDKSharingButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h; sourceTree = "<group>"; }; - 96D3047DA13118A3FB60F3DBE4812F52 /* RKPropertyMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyMapping.h; path = Code/ObjectMapping/RKPropertyMapping.h; sourceTree = "<group>"; }; - 96D93EAF0FCC8B5FBB56E2E9C45F9D62 /* TKState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKState.h; path = Code/TKState.h; sourceTree = "<group>"; }; - 979F775694C8742A140AFEFE090CA61A /* RKAttributeMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKAttributeMapping.h; path = Code/ObjectMapping/RKAttributeMapping.h; sourceTree = "<group>"; }; - 9826CDA12FAA5BC9CEF003E172733136 /* FBSDKAppEventsStateManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsStateManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.m; sourceTree = "<group>"; }; - 985870310481EAF6D1AAD21D98000C42 /* PFLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogging.h; path = Parse/Internal/PFLogging.h; sourceTree = "<group>"; }; - 9892ACF2D0CAC9B9021724C9C93ABD4C /* PFQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQuery.m; path = Parse/PFQuery.m; sourceTree = "<group>"; }; + 735D8A9263762B7D4E5C5EDB816A7CB6 /* FBSDKAccessTokenCacheV3_21.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_21.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.h; sourceTree = "<group>"; }; + 73C100898C88FF4043F6002195DD6293 /* RKObjectParameterization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectParameterization.m; path = Code/Network/RKObjectParameterization.m; sourceTree = "<group>"; }; + 74089267A9387B60B1CE108DFAA883BC /* BFAppLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLink.h; path = Bolts/iOS/BFAppLink.h; sourceTree = "<group>"; }; + 74338BD705AD4CAADD5CA90BD8EF2D96 /* FBSDKDynamicFrameworkLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDynamicFrameworkLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.h; sourceTree = "<group>"; }; + 749A8D41E182E9883688C41D2D257554 /* ParseInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseInternal.h; path = Parse/Internal/ParseInternal.h; sourceTree = "<group>"; }; + 74B44F24917A72CA781246EA2632A00C /* PFCloudCodeController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloudCodeController.h; path = Parse/Internal/CloudCode/PFCloudCodeController.h; sourceTree = "<group>"; }; + 7558DBD1AF61B17AF39F3565B9F68601 /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = "<group>"; }; + 761DB1B71490B54C854E88186480B4EA /* POPAnimationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationInternal.h; path = pop/POPAnimationInternal.h; sourceTree = "<group>"; }; + 763D59D54C57DA2AAFAD336EE912908D /* FBSDKLoginCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginCompletion.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h; sourceTree = "<group>"; }; + 764FFD75345B6B6A979A9D10F2D2907B /* AFHTTPClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPClient.m; path = AFNetworking/AFHTTPClient.m; sourceTree = "<group>"; }; + 76BDB3E82FE4A935AACD2F637F371589 /* TKTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKTransition.h; path = Code/TKTransition.h; sourceTree = "<group>"; }; + 76EDBE5B4444693672560F0B38D5C4D3 /* PFQueryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryUtilities.h; path = Parse/Internal/Query/Utilities/PFQueryUtilities.h; sourceTree = "<group>"; }; + 7719F6B5924888F0A267790B6E5647FD /* FBSDKCloseIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCloseIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.m; sourceTree = "<group>"; }; + 776A46D7EBDABB85B1A452ED93BEFBF9 /* RKAttributeMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKAttributeMapping.h; path = Code/ObjectMapping/RKAttributeMapping.h; sourceTree = "<group>"; }; + 7771BB9434E69A691392A0970DD10E28 /* AFHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPRequestOperation.h; path = AFNetworking/AFHTTPRequestOperation.h; sourceTree = "<group>"; }; + 778D8D7F4CD22FFBC60450393224961A /* PFOfflineQueryLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineQueryLogic.m; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m; sourceTree = "<group>"; }; + 77DB8925A606DF13F24DBF2AD343EB8D /* PFAnalyticsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalyticsController.m; path = Parse/Internal/Analytics/Controller/PFAnalyticsController.m; sourceTree = "<group>"; }; + 782AF7A5FC9A3571F42003CD07FE5A3C /* FBSDKAppGroupAddDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupAddDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupAddDialog.m; sourceTree = "<group>"; }; + 78A05813E9EC11B010C6A344D9AAC05A /* POP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POP.h; path = pop/POP.h; sourceTree = "<group>"; }; + 7915DC37B74D252F701BF85B55880ACF /* POPSpringAnimationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPSpringAnimationInternal.h; path = pop/POPSpringAnimationInternal.h; sourceTree = "<group>"; }; + 79630B324053224BBFAB6E9D26A18148 /* FBSDKAppGroupJoinDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupJoinDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h; sourceTree = "<group>"; }; + 7981192FA1E3FF14D8C9EBA4511FD33B /* PFURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession.h; sourceTree = "<group>"; }; + 79A12CFC76EC1B0BF26367E0922426FD /* PFInstallationIdentifierStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationIdentifierStore.m; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.m; sourceTree = "<group>"; }; + 79A805E2776C2CC27AB7764874C93173 /* PFTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFTaskQueue.m; path = Parse/Internal/PFTaskQueue.m; sourceTree = "<group>"; }; + 79EE570F7AF0D238D396B8C1BD1233F8 /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = "<group>"; }; + 79F07C09208B3EA7236791BBBDD1D459 /* POPLayerExtras.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPLayerExtras.mm; path = pop/POPLayerExtras.mm; sourceTree = "<group>"; }; + 7A71B1896C184DD250A8FB4EF534051E /* FBSDKShareKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKShareKit-prefix.pch"; sourceTree = "<group>"; }; + 7AAB2C033ACD2C5EDF5AFECCDE5BC95D /* PFEventuallyPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyPin.h; path = Parse/Internal/PFEventuallyPin.h; sourceTree = "<group>"; }; + 7AC2271F01F29748BDF976CEF2EE767A /* RKResponseMapperOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKResponseMapperOperation.m; path = Code/Network/RKResponseMapperOperation.m; sourceTree = "<group>"; }; + 7AD029CD6F8ADD2E864E5FE1699BB70D /* PFSQLiteDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabase.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.h; sourceTree = "<group>"; }; + 7B6054861B48456D5D8D1E661F92EE5D /* PFACLState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState_Private.h; path = Parse/Internal/ACL/State/PFACLState_Private.h; sourceTree = "<group>"; }; + 7B754CD741EB603D2A92BACC3F38A430 /* PFKeyValueCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache.h; sourceTree = "<group>"; }; + 7BA86EF4EAFD3D4475A169859BB0B633 /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = "<group>"; }; + 7BB5593B161ABABA1D0209ECA5074EA3 /* PFAsyncTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAsyncTaskQueue.h; path = Parse/Internal/PFAsyncTaskQueue.h; sourceTree = "<group>"; }; + 7BC4913285E98A56C951839A999352AB /* RKConnectionTestExpectation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKConnectionTestExpectation.m; path = Code/Testing/RKConnectionTestExpectation.m; sourceTree = "<group>"; }; + 7C114A540E5318937EFA769F5D2A5372 /* PFObjectLocalIdStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectLocalIdStore.h; path = Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h; sourceTree = "<group>"; }; + 7C6CEAC74231F31EC9DDED4C3E2BBF48 /* FBSDKShareOpenGraphValueContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphValueContainer.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m; sourceTree = "<group>"; }; + 7C7BBFE7402E447E0363B1BF78CFD3A0 /* PFAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAssert.h; path = Parse/Internal/PFAssert.h; sourceTree = "<group>"; }; + 7CB6F2CF47DB783D84FBBB6F2B1A451F /* TKState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKState.m; path = Code/TKState.m; sourceTree = "<group>"; }; + 7CE70DA06AD37A88DD393A98C73C7D07 /* FBSDKSharePhoto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhoto.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.m; sourceTree = "<group>"; }; + 7DA6FF9AD89559AE8FE2FD106DCB87C5 /* RKHTTPUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKHTTPUtilities.m; path = Code/ObjectMapping/RKHTTPUtilities.m; sourceTree = "<group>"; }; + 7DAC4524798CD2351824DF502E226F2E /* FBSDKGameRequestContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.m; sourceTree = "<group>"; }; + 7DEFDD3A6DB314308247D22FF14AFA98 /* FBSDKLikeButton+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeButton+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButton+Internal.h"; sourceTree = "<group>"; }; + 7DFC97B9CEA18DDABF91F38573337059 /* PFURLSessionFileDownloadTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionFileDownloadTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.h; sourceTree = "<group>"; }; + 7E03B26327B08731B36701D28A33B9C9 /* FBSDKURLConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m; sourceTree = "<group>"; }; + 7E0A91B803AD2D9F9BBC9C9C40485EFB /* POPAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimation.h; path = pop/POPAnimation.h; sourceTree = "<group>"; }; + 7E3480D6C7EF4C1D5B97238AFFE8D127 /* PFMutableACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableACLState.h; path = Parse/Internal/ACL/State/PFMutableACLState.h; sourceTree = "<group>"; }; + 7E668F82944D74008FA69DF68A0E96F9 /* RKOperationStateMachine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKOperationStateMachine.h; path = Code/Support/RKOperationStateMachine.h; sourceTree = "<group>"; }; + 7EE2EBDC54FDE1E50CD9A33DDF48404D /* RKTestFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestFactory.h; path = Code/Testing/RKTestFactory.h; sourceTree = "<group>"; }; + 7F1DA5784F757925FC9B2C359AE8F07C /* TransitionKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TransitionKit.h; path = Code/TransitionKit.h; sourceTree = "<group>"; }; + 7F63108EF1315E6D7E404F9ABF304F1A /* BFURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL.h; path = Bolts/iOS/BFURL.h; sourceTree = "<group>"; }; + 7F6E4B0E19B7E3633F89483FC21D852C /* POPVector.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPVector.mm; path = pop/POPVector.mm; sourceTree = "<group>"; }; + 7FDE21F99879BAFCD8007510D41FD42B /* BFAppLinkNavigation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkNavigation.h; path = Bolts/iOS/BFAppLinkNavigation.h; sourceTree = "<group>"; }; + 800204DFA7DE3E6060355FB89A24FEB1 /* PFMutableFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableFileState.m; path = Parse/Internal/File/State/PFMutableFileState.m; sourceTree = "<group>"; }; + 8030921BFF7BB8CE71AE970906855522 /* FBSDKBoltsMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBoltsMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m; sourceTree = "<group>"; }; + 8039DDB4E996A03FF15AD2DF8D4D1CA9 /* FBSDKSendButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSendButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h; sourceTree = "<group>"; }; + 804F2F0EDB0F2FE68B74F5D2D1ED5A94 /* FBSDKMessengerIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessengerIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.h; sourceTree = "<group>"; }; + 80519B32A7AC044BA72391DA03E6E140 /* POPPropertyAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPPropertyAnimation.h; path = pop/POPPropertyAnimation.h; sourceTree = "<group>"; }; + 80D183F090FB2841492B19FAC5CD77B6 /* libRestKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRestKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 80E3A4DA55D79A2A163A82080683C403 /* FBSDKAccessTokenCacheV3.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.m; sourceTree = "<group>"; }; + 80E5F5E0AE0F6B7B2757A6066BCC8612 /* libFoldingTabBar.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFoldingTabBar.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 817589AA5C8BA17E8B2F9808EC23788B /* RKMappingTest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingTest.m; path = Code/Testing/RKMappingTest.m; sourceTree = "<group>"; }; + 81E010F8251FD4453C9DDE44ED09C4F4 /* PFObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState.h; path = Parse/Internal/Object/State/PFObjectState.h; sourceTree = "<group>"; }; + 826C988F437410449787F4BDCE07E6B7 /* FBSDKLoginManagerLoginResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLoginResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h; sourceTree = "<group>"; }; + 8275725385A9F6C10AF8B7A642A129F8 /* RKNSJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKNSJSONSerialization.h; path = Code/Support/RKNSJSONSerialization.h; sourceTree = "<group>"; }; + 82E57F9588CEC77612BC5E9A20CCC2E5 /* AFJSONRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFJSONRequestOperation.m; path = AFNetworking/AFJSONRequestOperation.m; sourceTree = "<group>"; }; + 82EA1A7E2F5B25D7DECB8BE35B3072F0 /* PFPinningObjectStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningObjectStore.m; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.m; sourceTree = "<group>"; }; + 83319D45D8AE5D8BF57D365983A41750 /* TransitionKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "TransitionKit-dummy.m"; sourceTree = "<group>"; }; + 83831950A74E93412A274C95A90D1337 /* FBSDKAudioResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAudioResourceLoader.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.h; sourceTree = "<group>"; }; + 83A7B0C8AF063198C8EBF6559688D469 /* Bolts-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Bolts-prefix.pch"; sourceTree = "<group>"; }; + 83C5E9FB336C0917EC02E4034B2B66FE /* PFCoreManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreManager.h; path = Parse/Internal/PFCoreManager.h; sourceTree = "<group>"; }; + 849262636C1FD7E1D283D86137BE70B8 /* RKDynamicMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKDynamicMapping.m; path = Code/ObjectMapping/RKDynamicMapping.m; sourceTree = "<group>"; }; + 8496664844E09F7B412D05544D90E123 /* FBSDKAccessTokenCacheV4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV4.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.h; sourceTree = "<group>"; }; + 84E5CF3BD81C4C414BE88556EB18D08F /* FBSDKTimeSpentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTimeSpentData.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.m; sourceTree = "<group>"; }; + 851FD672C97DC80E95B543E7678B133F /* FBSDKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h; sourceTree = "<group>"; }; + 85B4596D7B3771E5ABD20C9631F9B18A /* Network.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Network.h; path = Code/Network.h; sourceTree = "<group>"; }; + 85F8F13323C74D0619E9E4B4BBB27CEE /* FBSDKMessageDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessageDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.m; sourceTree = "<group>"; }; + 860BB3AFC2DD08EF4599D8D42484D2CC /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = "<group>"; }; + 864B619977C41FA41083B23778DFD471 /* FBSDKShareLinkContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareLinkContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.m; sourceTree = "<group>"; }; + 868CF57091A5F8B47E4CF9B82CD4715D /* RKRouter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRouter.h; path = Code/Network/RKRouter.h; sourceTree = "<group>"; }; + 8707552112C343BFF840516C1AAD0D31 /* POPAnimationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationPrivate.h; path = pop/POPAnimationPrivate.h; sourceTree = "<group>"; }; + 87352A5CFA4016F286A66829B0D2BFB9 /* FBSDKAppGroupContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.h; sourceTree = "<group>"; }; + 87C33535E86A40250BA126A6209213CC /* FBSDKLoginTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.h; sourceTree = "<group>"; }; + 87EE4B2AFFD85E9F75C94F5661D717F2 /* PFCommandURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandURLRequestConstructor.m; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.m; sourceTree = "<group>"; }; + 880C326DB82974026154DE2FEE6DF8EA /* FBSDKLoginKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKLoginKit-dummy.m"; sourceTree = "<group>"; }; + 882472CF6BA62D86D2BF8542B479D3CB /* BFTask+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BFTask+Private.h"; path = "Parse/Internal/BFTask+Private.h"; sourceTree = "<group>"; }; + 8837B1CB6DAF343BD8C545163EA2DA58 /* PFEncoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEncoder.h; path = Parse/Internal/PFEncoder.h; sourceTree = "<group>"; }; + 8904DD3C8A8AC8A1A2F48DEB0DBC1B95 /* FBSDKAppEventsUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m; sourceTree = "<group>"; }; + 892F0F257D5AF973E182934E5D03C911 /* PFInstallation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallation.m; path = Parse/PFInstallation.m; sourceTree = "<group>"; }; + 8988609857673ACE16552A1C00D45091 /* FBSDKDynamicFrameworkLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDynamicFrameworkLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDynamicFrameworkLoader.m; sourceTree = "<group>"; }; + 89CDFA61E00364C5AE6882B31CA90BB4 /* AFPropertyListRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFPropertyListRequestOperation.h; path = AFNetworking/AFPropertyListRequestOperation.h; sourceTree = "<group>"; }; + 8A6E4A459DD6D5E686E59DC08B4D07F1 /* FBSDKLoginButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginButton.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h; sourceTree = "<group>"; }; + 8A7550A91022A017F5AFB8DF01AAFDFA /* RKObjectRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectRequestOperation.m; path = Code/Network/RKObjectRequestOperation.m; sourceTree = "<group>"; }; + 8B1E4C81276B30550CB3CDA51070D862 /* PFRESTCloudCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCloudCommand.h; path = Parse/Internal/Commands/PFRESTCloudCommand.h; sourceTree = "<group>"; }; + 8B9E4087FDB2FFD655EB8FA58B697B4E /* RKPropertyMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyMapping.m; path = Code/ObjectMapping/RKPropertyMapping.m; sourceTree = "<group>"; }; + 8BECD1A40487A504B56D704C9D21E36C /* RKManagedObjectRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKManagedObjectRequestOperation.h; path = Code/Network/RKManagedObjectRequestOperation.h; sourceTree = "<group>"; }; + 8C78256463C46E887FB8962C96ADF343 /* RKRoute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRoute.h; path = Code/Network/RKRoute.h; sourceTree = "<group>"; }; + 8CBCFD5CCB1FD15EED54F82E909DC031 /* FBSDKShareButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h; sourceTree = "<group>"; }; + 8D28D5F66862955E51F3A4E12B34C7A6 /* FBSDKLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogger.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.m; sourceTree = "<group>"; }; + 8DB170D4C4F763AED7B36159D448013E /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = "<group>"; }; + 8DE9B680DB183FA614D58C42EADD38D7 /* FBSDKWebDialogView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialogView.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialogView.h; sourceTree = "<group>"; }; + 8E39257A1062D3B3E8CA265E73AF9795 /* PFBase64Encoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBase64Encoder.m; path = Parse/Internal/PFBase64Encoder.m; sourceTree = "<group>"; }; + 8F8116D4E8780C6E74C186A8402C69F9 /* PFMultiProcessFileLock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLock.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.m; sourceTree = "<group>"; }; + 8F8334729245B982D2786A77F61C281C /* PFObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectController.h; path = Parse/Internal/Object/Controller/PFObjectController.h; sourceTree = "<group>"; }; + 8FB19F616008A121FAA50E14B62D67A0 /* RKNSJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKNSJSONSerialization.m; path = Code/Support/RKNSJSONSerialization.m; sourceTree = "<group>"; }; + 903947141B4DCB4B32507DADE29354A1 /* RKMappingResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingResult.m; path = Code/ObjectMapping/RKMappingResult.m; sourceTree = "<group>"; }; + 9045C664399C37132A893F2E170BEA3C /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFWebViewAppLinkResolver.h; path = Bolts/iOS/BFWebViewAppLinkResolver.h; sourceTree = "<group>"; }; + 9086156C9220E522C597B7BE572F6BFB /* RKHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKHTTPRequestOperation.m; path = Code/Network/RKHTTPRequestOperation.m; sourceTree = "<group>"; }; + 909C0AD7538FB9457B86EC3AC7D973FD /* PFThreadsafety.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFThreadsafety.h; path = Parse/Internal/ThreadSafety/PFThreadsafety.h; sourceTree = "<group>"; }; + 9152B5335813665EC6B08F73411A813E /* PFCachedQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCachedQueryController.h; path = Parse/Internal/Query/Controller/PFCachedQueryController.h; sourceTree = "<group>"; }; + 91D5B36C33B97E32AFA561C868667F87 /* BFAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererController.m; path = Bolts/iOS/BFAppLinkReturnToRefererController.m; sourceTree = "<group>"; }; + 91E9125BDC1505BCE865985502732B9D /* PFFieldOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperation.m; path = Parse/Internal/FieldOperation/PFFieldOperation.m; sourceTree = "<group>"; }; + 924EED608166B7F9A30865D80A87407F /* PFMutableObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableObjectState.h; path = Parse/Internal/Object/State/PFMutableObjectState.h; sourceTree = "<group>"; }; + 92D9BAF18D3C2495B07204C2404BFEEB /* FBSDKSendButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSendButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.m; sourceTree = "<group>"; }; + 933D9439D53FAC2493C8D8F5ADD21D74 /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = "<group>"; }; + 936E7B213612ECBF1630386CE6D7B1D2 /* PFObjectConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectConstants.h; path = Parse/Internal/Object/Constants/PFObjectConstants.h; sourceTree = "<group>"; }; + 939D831BAB14BEA5394F15D3E348976C /* PFPushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushState.m; path = Parse/Internal/Push/State/PFPushState.m; sourceTree = "<group>"; }; + 93EE612E26F15D494EE5870F082534C2 /* RKMIMETypeSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMIMETypeSerialization.h; path = Code/Support/RKMIMETypeSerialization.h; sourceTree = "<group>"; }; + 9441797DDFA8DBDB595E9BA19BE1342D /* PFRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState.h; path = Parse/Internal/Relation/State/PFRelationState.h; sourceTree = "<group>"; }; + 947DE8E91AEF7DBF7FD80A52A76B2360 /* FBSDKLogo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.h; sourceTree = "<group>"; }; + 950E0A9F91ED212D2423C57E6D94CE04 /* FBSDKBridgeAPICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPICrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.h; sourceTree = "<group>"; }; + 951E09F02C4842CACF36CAD6D5398E11 /* PFDefaultACLController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDefaultACLController.h; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.h; sourceTree = "<group>"; }; + 955C4C780B4D5A0582BF89B0379CB61E /* CAAnimation+YALTabBarViewAnimations.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CAAnimation+YALTabBarViewAnimations.h"; path = "FoldingTabBar/Category/CAAnimation/CAAnimation+YALTabBarViewAnimations/CAAnimation+YALTabBarViewAnimations.h"; sourceTree = "<group>"; }; + 957013533FBA66B6F24FF31441FF1EC3 /* FBSDKLoginUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginUtility.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.h; sourceTree = "<group>"; }; + 95A9E38BEC3EF5836FF1194D04DDB98F /* FBSDKCoreKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKCoreKit+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h"; sourceTree = "<group>"; }; + 95C0B6DA20609F0B05D9D1AB1D2FC475 /* FBSDKLikeBoxBorderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxBorderView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m; sourceTree = "<group>"; }; + 95C137F2DF407C83936DE0B2BB3D6F86 /* PFACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState.h; path = Parse/Internal/ACL/State/PFACLState.h; sourceTree = "<group>"; }; + 95FF2C409A7211FB7720DA60E56153C4 /* FBSDKBridgeAPIProtocolWebV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.m; sourceTree = "<group>"; }; + 96A6F76476CACBAADE4A258C71998683 /* POPBasicAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPBasicAnimation.mm; path = pop/POPBasicAnimation.mm; sourceTree = "<group>"; }; + 96EB5396864F3EE4D9E7D3994DBD1015 /* PFMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMacros.h; path = Parse/Internal/PFMacros.h; sourceTree = "<group>"; }; + 97044BE056C705C44778E090F30A538B /* PFSQLiteDatabaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseController.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.m; sourceTree = "<group>"; }; + 9766DA2E569D10FE157FA2E355CC9802 /* RKStringTokenizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKStringTokenizer.h; path = Code/Support/RKStringTokenizer.h; sourceTree = "<group>"; }; + 979C040C22C6D7527C085E98ED8D71A0 /* libFBSDKShareKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKShareKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 97D4677BC9F2D88DF946E204DF242D38 /* PFFieldOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperation.h; path = Parse/Internal/FieldOperation/PFFieldOperation.h; sourceTree = "<group>"; }; + 97F4FC4FF392B72657F42F96261BBC3F /* FBSDKShareOpenGraphContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphContent.h; sourceTree = "<group>"; }; + 98262DA8D9F983FFA347D99C232021E5 /* PFEventuallyPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEventuallyPin.m; path = Parse/Internal/PFEventuallyPin.m; sourceTree = "<group>"; }; + 9860C0C7692D5A2C0C40448F5323C485 /* FBSDKLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLogger.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKLogger.h; sourceTree = "<group>"; }; 98C98CDFB3F20F2925F6CD1F141BB14F /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.release.xcconfig; sourceTree = "<group>"; }; - 99448AE40302A804BCEE91E92302B14D /* FBSDKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMacros.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKMacros.h; sourceTree = "<group>"; }; - 9957AA65319B89D5DD0424050D460948 /* RKTestFixture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestFixture.m; path = Code/Testing/RKTestFixture.m; sourceTree = "<group>"; }; - 99FE93E37D759F30B7B5B5162DEB3D20 /* PFPushState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState_Private.h; path = Parse/Internal/Push/State/PFPushState_Private.h; sourceTree = "<group>"; }; - 9A7EE25D0A40F414D480899041A5E485 /* PFInternalUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInternalUtils.h; path = Parse/Internal/PFInternalUtils.h; sourceTree = "<group>"; }; - 9A8BB3FBFEE9E1BDDB295037754F4DEF /* FBSDKAppGroupJoinDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppGroupJoinDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.h; sourceTree = "<group>"; }; - 9B40691DF0E6BC33074AC41A275DB164 /* FBSDKLoginKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKLoginKit.xcconfig; sourceTree = "<group>"; }; - 9B484974193BA8A4646BC070D4C0BBE7 /* PFPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPin.m; path = Parse/Internal/LocalDataStore/Pin/PFPin.m; sourceTree = "<group>"; }; - 9BA62A8E667CE97DE59304A1724EC97B /* FBSDKBoltsMeasurementEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBoltsMeasurementEventListener.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppLink/FBSDKBoltsMeasurementEventListener.m; sourceTree = "<group>"; }; - 9C2BCF9C99AEDE045D2BBFA1DF8CC208 /* libISO8601DateFormatterValueTransformer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libISO8601DateFormatterValueTransformer.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 9CAF4B15DDC52D849508A1E602814624 /* Bolts-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Bolts-prefix.pch"; sourceTree = "<group>"; }; - 9CC97C072FD18D2A4B73F527FCCF25A7 /* FBSDKCoreKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKCoreKit-dummy.m"; sourceTree = "<group>"; }; - 9CE1ACDB733D2C97F7C82EA9FB83836C /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = "<group>"; }; - 9D3D98875600AB165C66C65D6E15E83A /* PFFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileManager.m; path = Parse/Internal/PFFileManager.m; sourceTree = "<group>"; }; - 9D485AE7D7829E5043DA9B3788867222 /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = "<group>"; }; - 9D65511E82CA8F7BA0B1D3A4D488BA84 /* PFObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectController.m; path = Parse/Internal/Object/Controller/PFObjectController.m; sourceTree = "<group>"; }; - 9D7D839938133223C5D03CF7E035527E /* RKISO8601DateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKISO8601DateFormatter.m; path = Code/RKISO8601DateFormatter.m; sourceTree = "<group>"; }; - 9DC5F129D162F601A2EB31F819BCC00D /* Parse.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Parse.xcconfig; sourceTree = "<group>"; }; - 9E2A5D66F6C75C8A872ECD3D71937EBB /* RKTestFixture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestFixture.h; path = Code/Testing/RKTestFixture.h; sourceTree = "<group>"; }; - 9E3A50746719F1DF8EA234DC24662F0A /* lcl_RK.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = lcl_RK.m; path = Vendor/LibComponentLogging/Core/lcl_RK.m; sourceTree = "<group>"; }; - 9E43B3049BD47C0D7F0EE422E4818AC6 /* FBSDKLikeButtonPopWAV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButtonPopWAV.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m; sourceTree = "<group>"; }; - 9E63031380A944E9403D3B32AD1E27D4 /* FBSDKGraphErrorRecoveryProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphErrorRecoveryProcessor.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphErrorRecoveryProcessor.h; sourceTree = "<group>"; }; - 9E6629CCD335C17E0B583B60896F6F5D /* PFCurrentUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentUserController.h; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.h; sourceTree = "<group>"; }; - 9EF9E7E124CF7FEC59917A8A59D36C9D /* PFUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUser.h; path = Parse/PFUser.h; sourceTree = "<group>"; }; - 9F0161219DC8EBD1C3D61015979852A6 /* PFUserConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserConstants.h; path = Parse/Internal/User/Constants/PFUserConstants.h; sourceTree = "<group>"; }; - 9F25D79A6D9350DE097436ED2E549BE1 /* PFAnalytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics.h; path = Parse/PFAnalytics.h; sourceTree = "<group>"; }; - 9F4B289AAAE3CB636116D0E2F1741DAD /* PFErrorUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFErrorUtilities.h; path = Parse/Internal/PFErrorUtilities.h; sourceTree = "<group>"; }; - 9F676232AD2D4E768D123E3880A987ED /* FBSDKShareConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareConstants.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.h; sourceTree = "<group>"; }; - A0078CE9F7F7BB672D734ECE689D766B /* PFCommandURLRequestConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandURLRequestConstructor.m; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.m; sourceTree = "<group>"; }; - A066A1261BC2B943A2C58454D8594E4C /* RKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMacros.h; path = Code/Support/RKMacros.h; sourceTree = "<group>"; }; - A126D8590E2C7ECBC16300C2C3A644D2 /* PFInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationController.h; path = Parse/Internal/Installation/Controller/PFInstallationController.h; sourceTree = "<group>"; }; - A1A2CA5B68B1C6F0052C73BE934D33D8 /* BFAppLinkReturnToRefererView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView.h; path = Bolts/iOS/BFAppLinkReturnToRefererView.h; sourceTree = "<group>"; }; + 98D1A4CAC7340A038BDCFECC7E0BFE95 /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m; sourceTree = "<group>"; }; + 996415B7247FE7D0C37780B180517ACB /* POPAnimator.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimator.mm; path = pop/POPAnimator.mm; sourceTree = "<group>"; }; + 996EADA337EAC02210FEC4506EB335B5 /* POPAnimationEvent.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimationEvent.mm; path = pop/POPAnimationEvent.mm; sourceTree = "<group>"; }; + 997269FD4178F2BC0707886B0C405A8D /* lcl_RK.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = lcl_RK.m; path = Vendor/LibComponentLogging/Core/lcl_RK.m; sourceTree = "<group>"; }; + 999823937ADC925F2F63F241A5995EFE /* PFCommandCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandCache.m; path = Parse/Internal/PFCommandCache.m; sourceTree = "<group>"; }; + 99B423A79E8F8A42FC5D676612B33E2F /* PFDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDateFormatter.m; path = Parse/Internal/PFDateFormatter.m; sourceTree = "<group>"; }; + 9A3DEC35A890AB8929D5A78F2D24DC7A /* RKRelationshipMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRelationshipMapping.m; path = Code/ObjectMapping/RKRelationshipMapping.m; sourceTree = "<group>"; }; + 9AA9561725BB1FB9134A92D8DC5A504B /* PFCategoryLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCategoryLoader.m; path = Parse/Internal/PFCategoryLoader.m; sourceTree = "<group>"; }; + 9ABAB9B040DE06F9C8CAD85CCC2D4A4D /* PFInstallationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationPrivate.h; path = Parse/Internal/Installation/PFInstallationPrivate.h; sourceTree = "<group>"; }; + 9ADB5C6CFDD59CB906870DA9025B3B8A /* Support.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Support.h; path = Code/Support.h; sourceTree = "<group>"; }; + 9AE4C9BDAE4E6537716122FED10B39E1 /* FBSDKErrorRecoveryConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorRecoveryConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.m; sourceTree = "<group>"; }; + 9B9C80D740936B42747C456E06BD4210 /* FBSDKShareDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDefines.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareDefines.h; sourceTree = "<group>"; }; + 9BD8C56BA64752CBF457FB1F3473747F /* Parse-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Parse-dummy.m"; sourceTree = "<group>"; }; + 9C13271F07F590F5CD4297A3A11F07EA /* FBSDKSystemAccountStoreAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSystemAccountStoreAdapter.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.m; sourceTree = "<group>"; }; + 9CDD229A4ED63D296862C7CC3E93D079 /* PFFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFile.h; path = Parse/PFFile.h; sourceTree = "<group>"; }; + 9CE70D7D33DCB5A7B77D431309FF7DED /* FBSDKBridgeAPIProtocolNativeV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolNativeV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.h; sourceTree = "<group>"; }; + 9D4E7099B46D1C3E524DA77BA96A3960 /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = "<group>"; }; + 9D7377386CC3EBA3E3B7C409D23C69B6 /* libFBSDKLoginKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKLoginKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 9D7D382B54C6E6B265B154F079E1CDDB /* FBSDKLikeButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeButton.h; sourceTree = "<group>"; }; + 9E3D3427A00B557DE42EED0B4C015942 /* FBSDKShareUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h; sourceTree = "<group>"; }; + 9E3DEF8E2E27C00D59DC5DE4C876E0D1 /* FBSDKLikeControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeControl.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeControl.m; sourceTree = "<group>"; }; + 9E5A00420D365F9C27CF6F943E8EB990 /* PFMutableUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableUserState.m; path = Parse/Internal/User/State/PFMutableUserState.m; sourceTree = "<group>"; }; + 9EB6FC1B35894D58DCAA447BFB3BB370 /* BFCancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationToken.h; path = Bolts/Common/BFCancellationToken.h; sourceTree = "<group>"; }; + 9F097273140B23B664D84C6DF75EE2D1 /* PFRESTUserCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTUserCommand.m; path = Parse/Internal/Commands/PFRESTUserCommand.m; sourceTree = "<group>"; }; + 9F1B1BCD1E0ECE22C24CC82032B14A95 /* FBSDKLikeDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeDialog.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeDialog.h; sourceTree = "<group>"; }; + 9F7C74984ABBD35EBF1A84D46747BF45 /* FloatConversion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FloatConversion.h; path = pop/WebCore/FloatConversion.h; sourceTree = "<group>"; }; + 9FBA963311C705B8BC3B0E2FC0EB8529 /* PFAlertView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAlertView.m; path = Parse/Internal/PFAlertView.m; sourceTree = "<group>"; }; + 9FE12F1A4097AA56DD490CFF1B57E4AB /* FBSDKErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/FBSDKErrorRecoveryAttempter.h; sourceTree = "<group>"; }; + 9FE38696DEEE3653F1AF4FB0CA7BC07F /* PFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFNetworkActivityIndicatorManager.m; path = Parse/PFNetworkActivityIndicatorManager.m; sourceTree = "<group>"; }; + A0356870F75E493C4A0C432FFFDF4798 /* FBSDKAccessTokenCacheV3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3.h; sourceTree = "<group>"; }; + A0A6F3B1842359B2087C2C8FE2CDB03A /* RKPaginator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPaginator.m; path = Code/Network/RKPaginator.m; sourceTree = "<group>"; }; + A0C95D96D102F597D4543F77E2DBE642 /* ISO8601DateFormatterValueTransformer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ISO8601DateFormatterValueTransformer-dummy.m"; sourceTree = "<group>"; }; + A0DE6D1F31DEFED040F4E85B6631177D /* PFPurchaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchaseController.h; path = Parse/Internal/Purchase/Controller/PFPurchaseController.h; sourceTree = "<group>"; }; + A12B03B24DC7C654F172A6A53E9C7603 /* PFObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObject.m; path = Parse/PFObject.m; sourceTree = "<group>"; }; + A16A70655423A834331503E4979C4422 /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h; sourceTree = "<group>"; }; A1A36D34413696BE466E2CA0AFF194DA /* Pods-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-resources.sh"; sourceTree = "<group>"; }; - A2BE5AE5F0695B55E709A8CDFE17CA78 /* PFCurrentConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentConfigController.m; path = Parse/Internal/Config/Controller/PFCurrentConfigController.m; sourceTree = "<group>"; }; - A310034DF2EA59B12C3C17FA56A7D8CA /* FBSDKLoginManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManager+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManager+Internal.h"; sourceTree = "<group>"; }; - A367DA3EC3F8D359202159E683A9BB6F /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = "<group>"; }; - A3876C6C899E391617046DF5BA206C24 /* PFMultiProcessFileLockController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLockController.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLockController.h; sourceTree = "<group>"; }; - A3E2D61AF8A35A030529BBF31DCB63EF /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = "<group>"; }; - A4371F9C1BEB37C1C9A7F487E96B039C /* FBSDKBridgeAPIRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.h; sourceTree = "<group>"; }; - A4C7B9F2E653733E71087633BB8C15F3 /* PFProduct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProduct.h; path = Parse/PFProduct.h; sourceTree = "<group>"; }; - A4F05EE46BF909C52D434101394A8D68 /* SOCKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SOCKit.xcconfig; sourceTree = "<group>"; }; - A500D17BF17E1E4E6B95D311ECBC187E /* PFPaymentTransactionObserver_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver_Private.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h; sourceTree = "<group>"; }; - A504F227475EBEE681741A0C587CAE41 /* PFURLSessionCommandRunner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner.h; sourceTree = "<group>"; }; - A599CD4CAA3AC99E0EE59D0EE6ABBD4F /* PFObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectControlling.h; path = Parse/Internal/Object/Controller/PFObjectControlling.h; sourceTree = "<group>"; }; - A5D82F87A7D9B6D1BA5B926D5CC28320 /* AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.xcconfig; sourceTree = "<group>"; }; - A5EC9E79B357B5A2AC105BD544952297 /* FBSDKMaleSilhouetteIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMaleSilhouetteIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.h; sourceTree = "<group>"; }; - A615158242A3BF4F9C9D90078A2CE30F /* PFReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFReachability.h; path = Parse/Internal/PFReachability.h; sourceTree = "<group>"; }; - A634E305E726A2D18B89914E5F8909D3 /* libFoldingTabBar.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFoldingTabBar.a; sourceTree = BUILT_PRODUCTS_DIR; }; - A63CD3C63759638B8C81445CC1AE5832 /* RKLumberjackLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKLumberjackLogger.h; path = Code/Support/RKLumberjackLogger.h; sourceTree = "<group>"; }; - A64CECFF3E3D0A64DA3BF8E6FB583C41 /* FBSDKMonotonicTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMonotonicTime.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.h; sourceTree = "<group>"; }; - A711FBFC3588B353719DDFFC023B9290 /* PFConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFConfig.h; path = Parse/PFConfig.h; sourceTree = "<group>"; }; - A73585EAE72B8B707372B14CD35D1CBB /* PFObjectState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState.h; path = Parse/Internal/Object/State/PFObjectState.h; sourceTree = "<group>"; }; - A7866E7BD22417E1E798E12FC8148126 /* PFPurchase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchase.h; path = Parse/PFPurchase.h; sourceTree = "<group>"; }; - A79078BF742E1C7360DBEE1FE59509E3 /* FBSDKWebDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKWebDialog.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.m; sourceTree = "<group>"; }; - A790CE27C36D138858150ED6C2FC85E5 /* FBSDKShareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKShareKit-dummy.m"; sourceTree = "<group>"; }; - A8279D26889EDF822F6A7F2AEC767E66 /* FBSDKGraphRequestDataAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestDataAttachment.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.m; sourceTree = "<group>"; }; - A832477BE2A9E7163C4E27DAE8B3DD8C /* FBSDKLoginButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginButton.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.h; sourceTree = "<group>"; }; - A854E7B08674C60E1987E4A310DA531C /* PFObjectSubclassInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassInfo.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.h; sourceTree = "<group>"; }; - A8607AE13FD6F5114938F5C946462211 /* PFInstallationIdentifierStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationIdentifierStore.m; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.m; sourceTree = "<group>"; }; - A88639112812A657127C2D4DEED2CDBB /* PFSQLiteDatabaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseController.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.h; sourceTree = "<group>"; }; - A8C154BACC4BC2017771F24B43682204 /* FBSDKLoginManagerLoginResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLoginResult.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.m; sourceTree = "<group>"; }; - A911FD2DE04BBABF90935B374E405983 /* FBSDKLikeBoxBorderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxBorderView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.m; sourceTree = "<group>"; }; - A93AAAD8AD7E644F7EC9EC8AA665569F /* BFAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererController.h; path = Bolts/iOS/BFAppLinkReturnToRefererController.h; sourceTree = "<group>"; }; - A9F919170FF728D2BC8D0CA0FF2DFB83 /* PFMulticastDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMulticastDelegate.h; path = Parse/Internal/PFMulticastDelegate.h; sourceTree = "<group>"; }; - AA9C61E1204F6BD3E847A74FF29A1F91 /* FBSDKLoginTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginTooltipView.m; sourceTree = "<group>"; }; - AAE5C3F24CDEB6F4DD19802AB2B9D8B4 /* PFOperationSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOperationSet.h; path = Parse/Internal/Object/OperationSet/PFOperationSet.h; sourceTree = "<group>"; }; - AB067014760D1E79CE3A58172F0227EB /* PFUserFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserFileCodingLogic.m; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.m; sourceTree = "<group>"; }; - AB08BCF1E8867BB674582E6292B917CD /* PFOfflineObjectController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineObjectController.h; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.h; sourceTree = "<group>"; }; - AB4CD2808D1181D48BD050A1E40BE976 /* PFUserState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserState.h; path = Parse/Internal/User/State/PFUserState.h; sourceTree = "<group>"; }; - AB78F67642C251E7BFF0E9D2B17A8553 /* RKBenchmark.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKBenchmark.m; path = Code/Testing/RKBenchmark.m; sourceTree = "<group>"; }; - ABCED4FB329CB88CEBB2D990F236F8D5 /* PFOfflineQueryLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryLogic.h; path = Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.h; sourceTree = "<group>"; }; - ABEC7A4F1C213D9FF650D68130BE307B /* FBSDKLoginKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginKit.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h; sourceTree = "<group>"; }; - AC3C9929DCA15B6D58724D42C5BD2DFB /* FBSDKShareButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.h; sourceTree = "<group>"; }; - AC5662D51E6E075238B8E1970100B60A /* BFCancellationToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationToken.m; path = Bolts/Common/BFCancellationToken.m; sourceTree = "<group>"; }; - ACC5D57E516CFFB2CE3244680661340D /* FBSDKProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfile.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfile.m; sourceTree = "<group>"; }; - ACE5B2BD57D84096B68C686CF2A297F0 /* PFObjectState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState_Private.h; path = Parse/Internal/Object/State/PFObjectState_Private.h; sourceTree = "<group>"; }; - AD4D3C55161D3874FAE6A6D4FA05E974 /* PFCommandResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandResult.m; path = Parse/Internal/PFCommandResult.m; sourceTree = "<group>"; }; - ADF62BE10B4A5995FC90E5E1DF736C2F /* FBSDKContainerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKContainerViewController.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKContainerViewController.h; sourceTree = "<group>"; }; - AEA5DE805E0990CD7BFA9099F1B80A0B /* Support.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Support.h; path = Code/Support.h; sourceTree = "<group>"; }; - AEAF382A07FA2B9C90B3DA379C01ED05 /* RKNSJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKNSJSONSerialization.h; path = Code/Support/RKNSJSONSerialization.h; sourceTree = "<group>"; }; - AF37684830F2DBB64CC294D7D1ED687C /* PFLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogger.h; path = Parse/Internal/PFLogger.h; sourceTree = "<group>"; }; - AF6C96E7CB161E28C9D346CD5CEAA5F8 /* PFTaskQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFTaskQueue.h; path = Parse/Internal/PFTaskQueue.h; sourceTree = "<group>"; }; - AFAF91B7E5BA7253D501E8786B415520 /* PFProductsRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProductsRequestHandler.h; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.h; sourceTree = "<group>"; }; - AFE48A1CAAFB131917518CB852A268E8 /* PFMutablePushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutablePushState.m; path = Parse/Internal/Push/State/PFMutablePushState.m; sourceTree = "<group>"; }; - B01AD8E53CF8F54CAA21EB125198756C /* PFKeyValueCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache_Private.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache_Private.h; sourceTree = "<group>"; }; - B0217E33F4AEC22A7E47353C29C06863 /* FBSDKShareAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareAPI.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.h; sourceTree = "<group>"; }; - B04554029C51C04C827384E9A03CC281 /* FBSDKBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBase64.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.h; sourceTree = "<group>"; }; - B0A1E7C301317BD56AD13ED50A48B5C3 /* PFPushManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushManager.m; path = Parse/Internal/Push/Manager/PFPushManager.m; sourceTree = "<group>"; }; + A1F131A4365C559659FC1FBB194A13E9 /* PFRESTFileCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTFileCommand.h; path = Parse/Internal/Commands/PFRESTFileCommand.h; sourceTree = "<group>"; }; + A28864FB7EB36A5080B6D12B1B94125F /* AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.xcconfig; sourceTree = "<group>"; }; + A2D57E341463F67AF53255008B5CAB0A /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = AFNetworking/AFNetworkActivityIndicatorManager.m; sourceTree = "<group>"; }; + A2FAF2092D4C51EAE9E68E2B1EB0071B /* FBSDKAppEventsStateManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsStateManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsStateManager.h; sourceTree = "<group>"; }; + A303568877AD7BACE17E962FDF4513C1 /* POPMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPMath.h; path = pop/POPMath.h; sourceTree = "<group>"; }; + A3152B830DE11B9029E12D3C5B928C17 /* PFPushUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushUtilities.m; path = Parse/Internal/Push/Utilites/PFPushUtilities.m; sourceTree = "<group>"; }; + A36C3225AB6FDE49BE8F8859C30A7D7D /* PFUserAuthenticationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationController.h; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.h; sourceTree = "<group>"; }; + A3794B030BCB9C4408CA8A2839964ED1 /* AFImageRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageRequestOperation.h; path = AFNetworking/AFImageRequestOperation.h; sourceTree = "<group>"; }; + A38DBD435D9B08BE5E3BBE4C171BB0B9 /* Parse.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Parse.xcconfig; sourceTree = "<group>"; }; + A3FBF62848DF8B263E30542353335091 /* PFInternalUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInternalUtils.h; path = Parse/Internal/PFInternalUtils.h; sourceTree = "<group>"; }; + A43A3FE9CF5B7E721E9179EB461EBDD7 /* PFEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue.h; path = Parse/Internal/PFEventuallyQueue.h; sourceTree = "<group>"; }; + A473C610615EE15F20D33C59B9CC54B8 /* FBSDKGraphRequestPiggybackManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestPiggybackManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.m; sourceTree = "<group>"; }; + A473E7C40F24CE11C1FE9F416C8E5EC2 /* FBSDKLikeBoxView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeBoxView.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.m; sourceTree = "<group>"; }; + A4B28BD09271EAECA8D4D7EE69556765 /* PFSessionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSessionUtilities.h; path = Parse/Internal/Session/Utilities/PFSessionUtilities.h; sourceTree = "<group>"; }; + A4DD5212BA2630DC90D52AB2A7B05B85 /* RKObjectManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectManager.h; path = Code/Network/RKObjectManager.h; sourceTree = "<group>"; }; + A51B1A321088E7B66FD0BCAE78FD96F9 /* PFInstallation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallation.h; path = Parse/PFInstallation.h; sourceTree = "<group>"; }; + A585F71D8045AD5FFA838F5907C9DCFE /* _FBSDKTemporaryErrorRecoveryAttempter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = _FBSDKTemporaryErrorRecoveryAttempter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ErrorRecovery/_FBSDKTemporaryErrorRecoveryAttempter.h; sourceTree = "<group>"; }; + A6D705A7C393E18FCFACEC1D2F07D098 /* PFQueryState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState_Private.h; path = Parse/Internal/Query/State/PFQueryState_Private.h; sourceTree = "<group>"; }; + A75314C0637DF9AD59C4F573E3CB78C6 /* YALTabBarItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALTabBarItem.m; path = FoldingTabBar/Model/TabBarItem/YALTabBarItem.m; sourceTree = "<group>"; }; + A7540E284803A52212B2DE3FD4678F87 /* PFPinningEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningEventuallyQueue.h; path = Parse/Internal/PFPinningEventuallyQueue.h; sourceTree = "<group>"; }; + A7780E3BA6732D798F3374CA43890F7C /* PFSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSession.m; path = Parse/PFSession.m; sourceTree = "<group>"; }; + A78C310CE96FB8C96AB74FE6A10686E7 /* TKStateMachine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKStateMachine.m; path = Code/TKStateMachine.m; sourceTree = "<group>"; }; + A7AAF29A747A53F757B1A76CF477460A /* PFObjectSubclassInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassInfo.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.m; sourceTree = "<group>"; }; + A7AC1819EBC907C93BA5F2B790C16D0E /* FBSDKSharePhotoContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhotoContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.h; sourceTree = "<group>"; }; + A8051434722A3494196DC122D8029D34 /* FBSDKShareDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h; sourceTree = "<group>"; }; + A8710983B393BA50AECE51EA8D90E727 /* FBSDKLikeBoxView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxView.h; sourceTree = "<group>"; }; + A8E3AF8A6E915006D004A9CF92CA325D /* RKObjectRequestOperationSubclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectRequestOperationSubclass.h; path = Code/Network/RKObjectRequestOperationSubclass.h; sourceTree = "<group>"; }; + A94107D173054A31E231EA3E081AC080 /* PFCommandRunning.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunning.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunning.m; sourceTree = "<group>"; }; + A9971360D666FDBC3DDD421157793868 /* FBSDKUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.h; sourceTree = "<group>"; }; + A99D66855595DD2F9E379F9A258C7FD4 /* FBSDKGameRequestFrictionlessRecipientCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGameRequestFrictionlessRecipientCache.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.m; sourceTree = "<group>"; }; + A9CA1C8C41256C5E7CEDBAF354C19AE5 /* AFXMLRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFXMLRequestOperation.m; path = AFNetworking/AFXMLRequestOperation.m; sourceTree = "<group>"; }; + A9E08B70AB72ECE4DA87BFED9B17F956 /* FBSDKShareLinkContent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareLinkContent+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareLinkContent+Internal.h"; sourceTree = "<group>"; }; + AA02D2B63E8F9A35484FF74BB175EDCF /* PFMutableQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableQueryState.h; path = Parse/Internal/Query/State/PFMutableQueryState.h; sourceTree = "<group>"; }; + AA158698DE160B78310B78C6F5F5EEBF /* SOCKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SOCKit-prefix.pch"; sourceTree = "<group>"; }; + AA2DB152E74138129BF1919667D8AA5C /* RestKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RestKit-prefix.pch"; sourceTree = "<group>"; }; + AAB9F7182025D4FEB1027A192204588E /* PFBaseState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFBaseState.h; path = Parse/Internal/PFBaseState.h; sourceTree = "<group>"; }; + AB87FFD2A22D9F8F81F29DD24782E89A /* PFPushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState.h; path = Parse/Internal/Push/State/PFPushState.h; sourceTree = "<group>"; }; + ABE4BA05E14673159DDEE660B13A5B00 /* PFQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryController.m; path = Parse/Internal/Query/Controller/PFQueryController.m; sourceTree = "<group>"; }; + AC8C608A0D3BE700536D0C6D4011931A /* PFRelation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelation.h; path = Parse/PFRelation.h; sourceTree = "<group>"; }; + ACE07B046AA72822B46EAC882E565640 /* PFObjectFileCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectFileCoder.h; path = Parse/Internal/Object/Coder/File/PFObjectFileCoder.h; sourceTree = "<group>"; }; + ADAFAB54F5C5506CF7186CD16CA90EFA /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = "<group>"; }; + ADBAF2BABA39070672917C80E4F74CBA /* FBSDKShareAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareAPI.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareAPI.m; sourceTree = "<group>"; }; + ADBEDE77334D88F47F1AD897ECEFAC8D /* PFObjectBatchController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectBatchController.h; path = Parse/Internal/Object/BatchController/PFObjectBatchController.h; sourceTree = "<group>"; }; + ADC8E7B23140B59FA2BE5667DEC580B9 /* PFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkActivityIndicatorManager.h; path = Parse/PFNetworkActivityIndicatorManager.h; sourceTree = "<group>"; }; + ADCF28A6ED4B159F06F12E95D86E08B2 /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = "<group>"; }; + ADD34821324463B1C81B2802AFA7B01C /* RKObjectMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMapping.m; path = Code/ObjectMapping/RKObjectMapping.m; sourceTree = "<group>"; }; + AE15675496460EEA4051AF5F4AB4E504 /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = "<group>"; }; + AE3ADE078ECB5E4868892A8EA3936EA5 /* YALFoldingTabBarController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALFoldingTabBarController.m; path = FoldingTabBar/Controller/FoldingTabBarController/YALFoldingTabBarController.m; sourceTree = "<group>"; }; + AE3D34F74057747813B67E0E716F8275 /* BFAppLinkReturnToRefererController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererController.h; path = Bolts/iOS/BFAppLinkReturnToRefererController.h; sourceTree = "<group>"; }; + AEA3B8A0B629E223E8AD2FFCA8C65F21 /* PFLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLogger.m; path = Parse/Internal/PFLogger.m; sourceTree = "<group>"; }; + AEA43D8F8666C7D28DA8F862B304C5B8 /* RKResponseDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKResponseDescriptor.h; path = Code/Network/RKResponseDescriptor.h; sourceTree = "<group>"; }; + AEB3E3D5DFF77A79169D2E7390145CE7 /* FBSDKWebDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKWebDialog.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/WebDialog/FBSDKWebDialog.h; sourceTree = "<group>"; }; + AEB4D0E3F5DD747BCD44340E26E9755F /* FBSDKLoginKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginKit.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginKit.h; sourceTree = "<group>"; }; + AF22BCCC30F4473554DFAAAEBC740BE7 /* FBSDKSharing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharing.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h; sourceTree = "<group>"; }; + AFDCBEB6665886D2633CB5495726E387 /* PFPushManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushManager.m; path = Parse/Internal/Push/Manager/PFPushManager.m; sourceTree = "<group>"; }; + B037353120BA03ACEF0F5DA52B84530E /* RKObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectUtilities.h; path = Code/ObjectMapping/RKObjectUtilities.h; sourceTree = "<group>"; }; + B03B11C4675A010812829BDD0481A90F /* PFSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession_Private.h; path = Parse/Internal/Session/PFSession_Private.h; sourceTree = "<group>"; }; + B0AF344F89667D8F50F4A22C146ACF21 /* PFSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession.h; path = Parse/PFSession.h; sourceTree = "<group>"; }; B0F29E0D66F63131F371330D93CB4583 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - B10427DA50494463C21D709E70487D33 /* PFFieldOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFieldOperation.m; path = Parse/Internal/FieldOperation/PFFieldOperation.m; sourceTree = "<group>"; }; - B12FBE677B57927C3F666FD0FD6511BC /* RKHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKHTTPRequestOperation.m; path = Code/Network/RKHTTPRequestOperation.m; sourceTree = "<group>"; }; - B147CF02EE8864D4E87D27D74C926A6E /* BoltsVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BoltsVersion.h; path = Bolts/Common/BoltsVersion.h; sourceTree = "<group>"; }; - B152467F018CE2A665F5C91D168A9A68 /* FBSDKMessageDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessageDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h; sourceTree = "<group>"; }; - B2049AB603335D958370F042F249C577 /* BFCancellationTokenRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenRegistration.h; path = Bolts/Common/BFCancellationTokenRegistration.h; sourceTree = "<group>"; }; - B2572E05EB18D8E55337D23E1AE67E35 /* BFWebViewAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFWebViewAppLinkResolver.h; path = Bolts/iOS/BFWebViewAppLinkResolver.h; sourceTree = "<group>"; }; - B27A11D910EE7C9849CF8F140E280ED9 /* PFObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectState.m; path = Parse/Internal/Object/State/PFObjectState.m; sourceTree = "<group>"; }; - B3414A44DB406F571B8FC80279C438E3 /* PFProduct+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFProduct+Private.h"; path = "Parse/Internal/Product/PFProduct+Private.h"; sourceTree = "<group>"; }; - B36DC7EE87AFA9DC98ABEEA9F3A91C09 /* BFMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent.h; path = Bolts/iOS/BFMeasurementEvent.h; sourceTree = "<group>"; }; - B3730F73EE5F25F746856381EB423BB1 /* FBSDKLoginCompletion+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginCompletion+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion+Internal.h"; sourceTree = "<group>"; }; - B385E214776DF89692B91553D7FCD7B7 /* FBSDKSystemAccountStoreAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSystemAccountStoreAdapter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h; sourceTree = "<group>"; }; - B407B07136A8C18FA91C2B5C0C66B115 /* PFRESTSessionCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTSessionCommand.m; path = Parse/Internal/Commands/PFRESTSessionCommand.m; sourceTree = "<group>"; }; - B415178073B9AF9554447EA73F804B50 /* FBSDKShareDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialog.h; sourceTree = "<group>"; }; - B44F43FE13A2621B29F734B3AD99BF68 /* PFRelationState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState_Private.h; path = Parse/Internal/Relation/State/PFRelationState_Private.h; sourceTree = "<group>"; }; - B4752C6F4E6E53E7A4CD10A743CBB4C4 /* RKMappingOperationDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingOperationDataSource.h; path = Code/ObjectMapping/RKMappingOperationDataSource.h; sourceTree = "<group>"; }; - B492A7B19E294565EE58BF99C7ED8A4A /* PFMultiProcessFileLock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMultiProcessFileLock.m; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.m; sourceTree = "<group>"; }; - B4D5CA49244C779E343DF9F173C32D69 /* FBSDKAccessTokenCacheV3_17.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_17.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m; sourceTree = "<group>"; }; - B506CB574291FFD269E218DEE30A8D84 /* PFPaymentTransactionObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver.h; path = Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver.h; sourceTree = "<group>"; }; - B51C3F037B7CB1FC1D26AD422819FAAA /* RKDictionaryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDictionaryUtilities.h; path = Code/Support/RKDictionaryUtilities.h; sourceTree = "<group>"; }; - B58613265294354C23D293C133BAC6B2 /* RestKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RestKit-prefix.pch"; sourceTree = "<group>"; }; - B5BC191314D1C949957752D5E562E183 /* BFDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFDefines.h; path = Bolts/Common/BFDefines.h; sourceTree = "<group>"; }; - B5C44FD3FAB358E3B466C4655865D9C1 /* FBSDKTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h; sourceTree = "<group>"; }; - B5C46025996A2C2D010B0AE8FF485D39 /* FoldingTabBar-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FoldingTabBar-dummy.m"; sourceTree = "<group>"; }; - B6327D62365930A9BC127D1B6AA7C081 /* PFMultiProcessFileLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMultiProcessFileLock.h; path = Parse/Internal/MultiProcessLock/PFMultiProcessFileLock.h; sourceTree = "<group>"; }; - B639B99C4CD7C16D2AD6DD82DD08FA5A /* PFPinningObjectStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningObjectStore.h; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.h; sourceTree = "<group>"; }; - B6AC7B5CA03EFC1449CFA764CF607A99 /* PFEncoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEncoder.h; path = Parse/Internal/PFEncoder.h; sourceTree = "<group>"; }; - B6DAE6FCB32112F6B277354CCD641DFB /* FBSDKMaleSilhouetteIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMaleSilhouetteIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKMaleSilhouetteIcon.m; sourceTree = "<group>"; }; + B1126558A8CA869CAE3169CD0485A400 /* PFURLSessionJSONDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionJSONDataTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m; sourceTree = "<group>"; }; + B163A0D63692C83B09ED63F3D357CC5D /* FBSDKPaymentObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKPaymentObserver.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.h; sourceTree = "<group>"; }; + B16533489604D2247F7EC997C13BA975 /* FBSDKSharePhotoContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSharePhotoContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhotoContent.m; sourceTree = "<group>"; }; + B16892D13DE46A8E0F04B376575D7B5C /* PFInternalUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInternalUtils.m; path = Parse/Internal/PFInternalUtils.m; sourceTree = "<group>"; }; + B25EAE7B7171B287489EDA0C0A129426 /* Testing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Testing.h; path = Code/Testing.h; sourceTree = "<group>"; }; + B27AB7689D28F34F8A9D466ACAB162DA /* PFNullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNullability.h; path = Parse/PFNullability.h; sourceTree = "<group>"; }; + B3362FF57BC5AE2D2552F6F4C4ACD2C9 /* FBSDKLoginKit+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginKit+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginKit+Internal.h"; sourceTree = "<group>"; }; + B352E84B1EE885140F4F4DC84329D6CB /* FBSDKAccessTokenCacheV4.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV4.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV4.m; sourceTree = "<group>"; }; + B3AC4F0EFC27421FCDFE376464524DBB /* PFUserFileCodingLogic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserFileCodingLogic.h; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.h; sourceTree = "<group>"; }; + B3AE7C57230B414B51B418F0B88252FB /* PFPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPin.h; path = Parse/Internal/LocalDataStore/Pin/PFPin.h; sourceTree = "<group>"; }; + B40775302C0516B1FB09E3523DC34D30 /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = "<group>"; }; + B432A363E0081BD273051415B767D749 /* FBSDKSettings+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKSettings+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h"; sourceTree = "<group>"; }; + B477BB1DB6E55636C30151FED839DBEC /* FBSDKSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSettings.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.h; sourceTree = "<group>"; }; + B4A9DBE857C85DBC4FCF8511B67E7FF3 /* PFPropertyInfo_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Private.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Private.h; sourceTree = "<group>"; }; + B53170EBE3F4D7BAA67CDA6A2C198542 /* FBSDKShareConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareConstants.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareConstants.m; sourceTree = "<group>"; }; + B53D5E1A96FE30D9B7F8D596BF9E2F80 /* POPPropertyAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPPropertyAnimation.mm; path = pop/POPPropertyAnimation.mm; sourceTree = "<group>"; }; + B5439DB8932AAF79667AED53097CC2C9 /* PFRelationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationPrivate.h; path = Parse/Internal/Relation/PFRelationPrivate.h; sourceTree = "<group>"; }; + B5AA14CFC28475D9E28E32A363674B8F /* RKDictionaryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDictionaryUtilities.h; path = Code/Support/RKDictionaryUtilities.h; sourceTree = "<group>"; }; + B5D03113C677A7DDA961E0D9E46E949A /* PFMutableObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableObjectState.m; path = Parse/Internal/Object/State/PFMutableObjectState.m; sourceTree = "<group>"; }; + B6CBDBFAF7E5AFEF7AE3D397FB6EE762 /* PFAnalyticsUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalyticsUtilities.h; path = Parse/Internal/Analytics/Utilities/PFAnalyticsUtilities.h; sourceTree = "<group>"; }; + B6D4806630F08E4A693BB13FD80E2B85 /* PFOfflineQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryController.h; path = Parse/Internal/Query/Controller/PFOfflineQueryController.h; sourceTree = "<group>"; }; + B6E7D0F10FA61E6BAC091324113D02F2 /* FBSDKGraphRequestBody.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestBody.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.m; sourceTree = "<group>"; }; B6FDEF44D035ECEB171CF49BE68D54D0 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - B75D3CD9991E32D3045EFD508FE204E3 /* RKSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKSerialization.h; path = Code/Support/RKSerialization.h; sourceTree = "<group>"; }; - B7A6D2F5DC2549FF82CCCCA100238F29 /* TKTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKTransition.m; path = Code/TKTransition.m; sourceTree = "<group>"; }; - B7D0C7535C92E775C8051BD27D3C5A4B /* RKRouter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRouter.h; path = Code/Network/RKRouter.h; sourceTree = "<group>"; }; - B7D1E676461C5F40552D64DA33869E6F /* PFCommandURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandURLRequestConstructor.h; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.h; sourceTree = "<group>"; }; - B82D9F24AE9309326A0F5D37DA96F86D /* RKMIMETypeSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMIMETypeSerialization.m; path = Code/Support/RKMIMETypeSerialization.m; sourceTree = "<group>"; }; - B900275E03F4A9C6416A5077A6E72931 /* PFFileController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileController.h; path = Parse/Internal/File/Controller/PFFileController.h; sourceTree = "<group>"; }; - B92A2CAEF825132FB7B172C9FFF479D2 /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView_Internal.h; path = Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h; sourceTree = "<group>"; }; - B98E96DBABDB51557464408244172B2A /* PFCurrentInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentInstallationController.m; path = Parse/Internal/Installation/CurrentInstallationController/PFCurrentInstallationController.m; sourceTree = "<group>"; }; - B9943DF525E97D5F98EC58CF7865A2A0 /* PFPurchaseController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchaseController.h; path = Parse/Internal/Purchase/Controller/PFPurchaseController.h; sourceTree = "<group>"; }; - B9A3F443B3D92D2C8F03FFCD004B43E5 /* BFCancellationToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationToken.h; path = Bolts/Common/BFCancellationToken.h; sourceTree = "<group>"; }; - B9A968895EE338B1992703020E6AA2A9 /* FBSDKAppEvents+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKAppEvents+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h"; sourceTree = "<group>"; }; - B9D34B12F05BF9127D139B7586C718A0 /* FBSDKButton+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKButton+Subclass.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKButton+Subclass.h"; sourceTree = "<group>"; }; - B9E52C40CE2CD49772146B44F17F058F /* FBSDKLiking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLiking.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKLiking.h; sourceTree = "<group>"; }; - BA2696770D8582A18F63F39A1AE5A973 /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h; sourceTree = "<group>"; }; - BA5E53C4F97DE65CA639266FC59D62B6 /* RKLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKLog.h; path = Code/Support/RKLog.h; sourceTree = "<group>"; }; + B70778A88E35241FD05E8017A5D78CFD /* PFPinningObjectStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningObjectStore.h; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.h; sourceTree = "<group>"; }; + B7478D31F88F47602170505B415F4CEB /* RKMappingOperationDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingOperationDataSource.h; path = Code/ObjectMapping/RKMappingOperationDataSource.h; sourceTree = "<group>"; }; + B78A7E4B40882223B829568BDECFF65F /* PFApplication.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFApplication.m; path = Parse/Internal/PFApplication.m; sourceTree = "<group>"; }; + B7B30077DB15E3549CCF53E8707A36D6 /* FBSDKAccessTokenCacheV3_17.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_17.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.m; sourceTree = "<group>"; }; + B7B6A72DD28FBD988E0B1E6A930C1BCA /* YALSpringAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALSpringAnimation.h; path = FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.h; sourceTree = "<group>"; }; + B8046097AB97D9EBA30FEAF579C44F56 /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = "<group>"; }; + B80B9804F9EC77183DFB3A54E58272CF /* FBSDKLogo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLogo.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKLogo.m; sourceTree = "<group>"; }; + B818BE16D0901DD3F720DF4447B592B0 /* PFFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileManager.h; path = Parse/Internal/PFFileManager.h; sourceTree = "<group>"; }; + B8C1F1B3446748EE4B4240C0CC009D67 /* PFCommandCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandCache_Private.h; path = Parse/Internal/PFCommandCache_Private.h; sourceTree = "<group>"; }; + B8DA6BF199DF0CAB4F3B6FE8589F18F9 /* FBSDKLikeObjectType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeObjectType.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKLikeObjectType.m; sourceTree = "<group>"; }; + B91E34DFD041EF9B4895EC618300E024 /* FBSDKSharePhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhoto.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h; sourceTree = "<group>"; }; + B92B54D733F8824AD766092F58A3F50C /* PFLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogging.h; path = Parse/Internal/PFLogging.h; sourceTree = "<group>"; }; + B934A04F1A258C2A0713237E8C4DB79E /* PFACL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACL.h; path = Parse/PFACL.h; sourceTree = "<group>"; }; + B93B968FDB3F20E1EB2FA742FA119F61 /* PFMutableFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMutableFileState.h; path = Parse/Internal/File/State/PFMutableFileState.h; sourceTree = "<group>"; }; + B99772D5AE952C0693DC05AAA4538D94 /* BFAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkResolving.h; path = Bolts/iOS/BFAppLinkResolving.h; sourceTree = "<group>"; }; + B9BAFC471A7F7E390879132FBD1B3B21 /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = "<group>"; }; + B9E911ACAAECA0172448CD4E62137AF4 /* PFRESTAnalyticsCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTAnalyticsCommand.h; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.h; sourceTree = "<group>"; }; + BA0DEBD43672CEB35AC053C3EDBD0BF9 /* RKResponseDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKResponseDescriptor.m; path = Code/Network/RKResponseDescriptor.m; sourceTree = "<group>"; }; BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - BA86A11DA2D2DE1430E01C7AA116C69C /* PFLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFLogger.m; path = Parse/Internal/PFLogger.m; sourceTree = "<group>"; }; - BAA0EDF40F153DD9E67C8C7F744785F8 /* RKHTTPUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKHTTPUtilities.h; path = Code/ObjectMapping/RKHTTPUtilities.h; sourceTree = "<group>"; }; - BB08F921B445EECE7EA71D6B4554FF9E /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = "<group>"; }; - BB22C7EB016209266A6A46D552308368 /* TKStateMachine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKStateMachine.m; path = Code/TKStateMachine.m; sourceTree = "<group>"; }; - BB99803775BDB8D089B8AAF8610F006F /* PFPurchaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPurchaseController.m; path = Parse/Internal/Purchase/Controller/PFPurchaseController.m; sourceTree = "<group>"; }; - BC537E2F269396073213A29C99B4BFB8 /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = "<group>"; }; - BC784E483E0153507432EFCEFBC5638E /* FBSDKShareOpenGraphValueContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphValueContainer.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.m; sourceTree = "<group>"; }; - BC9BCA0158D3FA6ECF2FB4D804EA8A83 /* RKMappingTest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMappingTest.m; path = Code/Testing/RKMappingTest.m; sourceTree = "<group>"; }; - BC9D6013B80CFF5948B0AEBB731354CC /* RKObjectMappingOperationDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMappingOperationDataSource.h; path = Code/ObjectMapping/RKObjectMappingOperationDataSource.h; sourceTree = "<group>"; }; - BCBA64F9DA348CD22FB1AC87B9F75ACC /* FBSDKServerConfigurationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKServerConfigurationManager.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m; sourceTree = "<group>"; }; - BD723A8B8848E0084E24732986ADB0F7 /* RKRelationshipMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRelationshipMapping.m; path = Code/ObjectMapping/RKRelationshipMapping.m; sourceTree = "<group>"; }; - BED513156E118407B7BC1990E6EDADA5 /* RKPaginator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPaginator.m; path = Code/Network/RKPaginator.m; sourceTree = "<group>"; }; - BEFC9E6A35A5430AE7926645007C9C25 /* FBSDKShareOpenGraphValueContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphValueContainer.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphValueContainer.h; sourceTree = "<group>"; }; - BF29DE6619DA26BE542969B766BDB8AE /* PFEventuallyPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyPin.h; path = Parse/Internal/PFEventuallyPin.h; sourceTree = "<group>"; }; - BF53A464C16A680DC9C16D7D05C05F74 /* RKMapperOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapperOperation.h; path = Code/ObjectMapping/RKMapperOperation.h; sourceTree = "<group>"; }; - BF734DC57CA15A5ED1C02307CD3DE349 /* PFDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDateFormatter.h; path = Parse/Internal/PFDateFormatter.h; sourceTree = "<group>"; }; - BFB1907C3EE1ADA7D44437276AC93C07 /* FBSDKGraphRequestPiggybackManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestPiggybackManager.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h; sourceTree = "<group>"; }; - C01287FF93CF82A4FDD567F7D956DF46 /* PFObjectSubclassingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassingController.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.m; sourceTree = "<group>"; }; - C058566058269B2CA65AE1148198339C /* PFDevice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDevice.h; path = Parse/Internal/PFDevice.h; sourceTree = "<group>"; }; - C0CF8B831B45A8AE37417FB01F6EE72A /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = en.lproj; path = Parse/Resources/en.lproj; sourceTree = "<group>"; }; - C0E3792F488D1F767C3F48F576C16951 /* FBSDKBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBase64.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Base64/FBSDKBase64.m; sourceTree = "<group>"; }; - C0EEED09807991F565F9159AB28C2112 /* PFMutableFileState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFMutableFileState.m; path = Parse/Internal/File/State/PFMutableFileState.m; sourceTree = "<group>"; }; - C18D83A16673A9F0545F5AAC55CAF2F0 /* PFOfflineStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineStore.m; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m; sourceTree = "<group>"; }; - C1F0927ADAF3F2EE080C8CFB1EB02510 /* FBSDKLoginKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKLoginKit-prefix.pch"; sourceTree = "<group>"; }; - C206887391506A13483E7EBD66940BB2 /* FBSDKButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKButton.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.h; sourceTree = "<group>"; }; - C206C3E9B3302C96684D3897F1D5A944 /* PFRole.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRole.h; path = Parse/PFRole.h; sourceTree = "<group>"; }; - C24ED85DEF7CEFA65A545211A7E9A27C /* TKStateMachine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKStateMachine.h; path = Code/TKStateMachine.h; sourceTree = "<group>"; }; - C266997BE18B9F2389729AEE26E429C9 /* PFCategoryLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCategoryLoader.m; path = Parse/Internal/PFCategoryLoader.m; sourceTree = "<group>"; }; - C27E78AB76228CCD047CDFC9941CCB59 /* PFOfflineStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineStore.h; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.h; sourceTree = "<group>"; }; - C304A10CF6190FEEEE9590529DE3B5EA /* BFTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTask.m; path = Bolts/Common/BFTask.m; sourceTree = "<group>"; }; - C3940D277F5BE2DF68360DE104260EC4 /* PFDevice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDevice.m; path = Parse/Internal/PFDevice.m; sourceTree = "<group>"; }; - C3A37573B0B483DCF4CB2F542816D68E /* FBSDKGameRequestFrictionlessRecipientCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestFrictionlessRecipientCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h; sourceTree = "<group>"; }; - C3D4F1A7841BFF26FD3010CAB4A45340 /* FBSDKAppEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEvents.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.h; sourceTree = "<group>"; }; - C3F7D1EEFCFA50F7F774EDE30F5EE02B /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = "<group>"; }; - C471619F560094B3BB41378638A0D362 /* PFRESTAnalyticsCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTAnalyticsCommand.m; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.m; sourceTree = "<group>"; }; - C480EBF5CDD5C303A3C3A1D7B36A7E80 /* RKPathMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPathMatcher.m; path = Code/Network/RKPathMatcher.m; sourceTree = "<group>"; }; - C49F84564221E62FADF63F94A1EA171D /* FBSDKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKInternalUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.h; sourceTree = "<group>"; }; - C4A5204786239441709AD7ACC6C10DF1 /* YALAnimatingTabBarConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALAnimatingTabBarConstants.h; path = FoldingTabBar/Constants/YALAnimatingTabBarConstants.h; sourceTree = "<group>"; }; - C4B20C13881AFBB4E88D5826A0683F11 /* BFURL_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFURL_Internal.h; path = Bolts/iOS/BFURL_Internal.h; sourceTree = "<group>"; }; - C5194995AA71A8339D3CCFB61EAB2D2F /* FoldingTabBar-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FoldingTabBar-prefix.pch"; sourceTree = "<group>"; }; - C56C90CA47F054F6B744E59125428689 /* PFEncoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFEncoder.m; path = Parse/Internal/PFEncoder.m; sourceTree = "<group>"; }; - C6300BC631657D6ADCB1225268EF89BE /* FBSDKLikeButtonPopWAV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButtonPopWAV.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h; sourceTree = "<group>"; }; - C6BB6FF4ABE22CD5FED5099BB5DA52F2 /* RKErrorMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKErrorMessage.m; path = Code/ObjectMapping/RKErrorMessage.m; sourceTree = "<group>"; }; - C6E71AEE806FFD98620689D854D9722A /* RKNSJSONSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKNSJSONSerialization.m; path = Code/Support/RKNSJSONSerialization.m; sourceTree = "<group>"; }; + BA69ED7E54B79F2B468E042414006FC8 /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = "<group>"; }; + BBB5809E48E2B4BEFFDD671C03A673A1 /* FBSDKLoginCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginCompletion.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m; sourceTree = "<group>"; }; + BC07203CD82FF286D245D3A0306E62C5 /* PFAnalytics_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics_Private.h; path = Parse/Internal/Analytics/PFAnalytics_Private.h; sourceTree = "<group>"; }; + BC16505461748776619D43C6BDC6A703 /* PFInstallationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationController.h; path = Parse/Internal/Installation/Controller/PFInstallationController.h; sourceTree = "<group>"; }; + BC451FC53B248606339FEF2A083812CA /* PFObjectBatchController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectBatchController.m; path = Parse/Internal/Object/BatchController/PFObjectBatchController.m; sourceTree = "<group>"; }; + BC8D8339F84A5B54DDC0F0B6C03E6C30 /* POPAnimationTracerInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationTracerInternal.h; path = pop/POPAnimationTracerInternal.h; sourceTree = "<group>"; }; + BC931BFEE302F10CF84316FC396B1F01 /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = "<group>"; }; + BCA4ADF879DDDE1CAAA0ABFB4BC7210D /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = "<group>"; }; + BCB59A851D792D3D60B16A08B9F07134 /* RKHTTPUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKHTTPUtilities.h; path = Code/ObjectMapping/RKHTTPUtilities.h; sourceTree = "<group>"; }; + BD5D724AF948672175ECFB8781A0F2F5 /* YALSpringAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALSpringAnimation.m; path = FoldingTabBar/Animation/YALSpringAnimation/YALSpringAnimation.m; sourceTree = "<group>"; }; + BD6DD4F4195C174C8DC06D3C85DDF8A8 /* ParseModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseModule.h; path = Parse/Internal/ParseModule.h; sourceTree = "<group>"; }; + BD91B010ED73759E99DB85B7CA9FA867 /* PFQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState.h; path = Parse/Internal/Query/State/PFQueryState.h; sourceTree = "<group>"; }; + BDA6A8C4B5B6F7C4E38F45C438720C50 /* FBSDKErrorRecoveryConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorRecoveryConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorRecoveryConfiguration.h; sourceTree = "<group>"; }; + BDC0554AEE7F2D9DF98C2D8FC049FD2A /* POPSpringAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPSpringAnimation.h; path = pop/POPSpringAnimation.h; sourceTree = "<group>"; }; + BDEF6D63702D3C9DE58BBBC7977D10BA /* POPLayerExtras.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPLayerExtras.h; path = pop/POPLayerExtras.h; sourceTree = "<group>"; }; + BE404DC24F62FA97CDAEF063B4413139 /* BFTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTask.m; path = Bolts/Common/BFTask.m; sourceTree = "<group>"; }; + BEEE1441A35504F5C1462BCBEE30EE7F /* FBSDKShareButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareButton.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m; sourceTree = "<group>"; }; + BF0336CCD7C95A339E279331D898870E /* PFPurchase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPurchase.h; path = Parse/PFPurchase.h; sourceTree = "<group>"; }; + BF428BEC06706AA0A98B6805206833C2 /* RKValueTransformers.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RKValueTransformers.xcconfig; sourceTree = "<group>"; }; + BF44B45F9B1A350C1FB2F6D209A9BC4D /* FBSDKAccessTokenCacheV3_21.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_21.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m; sourceTree = "<group>"; }; + BF50A2188E832EC70F211B3F3932C51C /* FBSDKMessageDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMessageDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKMessageDialog.h; sourceTree = "<group>"; }; + BF6BCF95270D89143AE2BD11E8C58467 /* RKTestFixture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestFixture.m; path = Code/Testing/RKTestFixture.m; sourceTree = "<group>"; }; + BF8BD2902C2FE3B67C86F30BFEAE4A3E /* FBSDKAppInviteContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.h; sourceTree = "<group>"; }; + BFAC7C03033A9B1F15075F4565BC1328 /* FBSDKLikeActionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeActionController.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.h; sourceTree = "<group>"; }; + BFBDACDD0805704D189CA36FE17373B8 /* FBSDKTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m; sourceTree = "<group>"; }; + BFCC23211BE47A527079FEF69772F5CE /* libBolts.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBolts.a; sourceTree = BUILT_PRODUCTS_DIR; }; + C01B234F69300CBE9F042A18823A2C64 /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = "<group>"; }; + C03EC589275AA21D375F405EB48AB374 /* pop-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "pop-dummy.m"; sourceTree = "<group>"; }; + C0773511F8B57D80E82BBCED6576C5D2 /* PFFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileManager.m; path = Parse/Internal/PFFileManager.m; sourceTree = "<group>"; }; + C1A37998F9BF6B81FA68488F9A55BC50 /* PFUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserController.m; path = Parse/Internal/User/Controller/PFUserController.m; sourceTree = "<group>"; }; + C1B7244F3402CF0B20BFF0228719CDD1 /* FBSDKAppEventsDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsDeviceInfo.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsDeviceInfo.h; sourceTree = "<group>"; }; + C1C4E1C48CDDA8FCF1C074DCC0D2A656 /* BFAppLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLink.m; path = Bolts/iOS/BFAppLink.m; sourceTree = "<group>"; }; + C1D9153F43B4ABADD58C382A1292332B /* PFOfflineStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineStore.h; path = Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.h; sourceTree = "<group>"; }; + C2DF84BAF1C49F7A7466D1F88D650A50 /* PFCommandURLRequestConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCommandURLRequestConstructor.h; path = Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.h; sourceTree = "<group>"; }; + C2E9C149FB61E88BEF76CE74D5776813 /* FBSDKCheckmarkIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCheckmarkIcon.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKCheckmarkIcon.h; sourceTree = "<group>"; }; + C303ED3A2C18CE2AAADCC69948039080 /* PFNetworkCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNetworkCommand.h; path = Parse/Internal/PFNetworkCommand.h; sourceTree = "<group>"; }; + C31FC859AAD2E2012636FC6B877D6EB6 /* RKErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKErrors.m; path = Code/Support/RKErrors.m; sourceTree = "<group>"; }; + C345096A388C3F1F4E486E39C9D61CD4 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "AFNetworking/UIImageView+AFNetworking.m"; sourceTree = "<group>"; }; + C3743DDF0F64379FD843ED463460FF90 /* FBSDKGraphRequestDataAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestDataAttachment.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestDataAttachment.h; sourceTree = "<group>"; }; + C3B87B3E4AC8A18214858CF42A599D50 /* lcl_config_logger_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_logger_RK.h; path = Code/Support/lcl_config_logger_RK.h; sourceTree = "<group>"; }; + C42E29EF756BB8A7BCE6151C6229BA3D /* RKObjectMappingMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKObjectMappingMatcher.m; path = Code/ObjectMapping/RKObjectMappingMatcher.m; sourceTree = "<group>"; }; + C45478301558D880893FA55C99879E3C /* FBSDKLoginManagerLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLogger.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m; sourceTree = "<group>"; }; + C4DAAE6C562288FB95B1415AF6763317 /* PFACLPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLPrivate.h; path = Parse/Internal/ACL/PFACLPrivate.h; sourceTree = "<group>"; }; + C4FAEDC2711A67FEFF48FE305A9A04C6 /* PFUserState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserState.m; path = Parse/Internal/User/State/PFUserState.m; sourceTree = "<group>"; }; + C5052DE726F89E27E1CA5D188FD32C5D /* Bolts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bolts.h; path = Bolts/Common/Bolts.h; sourceTree = "<group>"; }; + C52117BAFED1734D3269D56FE3D842E0 /* PFPropertyInfo_Runtime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo_Runtime.m; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.m; sourceTree = "<group>"; }; + C5363E7D4FF99528A9F857EE9F2DF437 /* PFObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObject.h; path = Parse/PFObject.h; sourceTree = "<group>"; }; + C537E17C3097299FCBF860A93C47B723 /* FBSDKAccessToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessToken.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.h; sourceTree = "<group>"; }; + C544CA6F07611BFE8BFC800E9D59E5AE /* AFHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPRequestOperation.m; path = AFNetworking/AFHTTPRequestOperation.m; sourceTree = "<group>"; }; + C5934D49963F991DC729306B6D2ECA94 /* FBSDKShareUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m; sourceTree = "<group>"; }; + C5C2B2C9BECEC9F64477D3C8051CFDB5 /* _FBSDKLoginRecoveryAttempter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = _FBSDKLoginRecoveryAttempter.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/_FBSDKLoginRecoveryAttempter.m; sourceTree = "<group>"; }; + C5F83C7A2BEAFF6FFAEAD7A6F73B7D49 /* libISO8601DateFormatterValueTransformer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libISO8601DateFormatterValueTransformer.a; sourceTree = BUILT_PRODUCTS_DIR; }; + C60BCCB74CDC88B04B7014C507F2D137 /* PFSQLiteDatabaseResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseResult.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.m; sourceTree = "<group>"; }; + C647E341C56F994FDA336B094DDC681B /* ObjectMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ObjectMapping.h; path = Code/ObjectMapping.h; sourceTree = "<group>"; }; + C651AC06095B97EDAEF872B6D7032F4E /* FBSDKAppLinkUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.h; sourceTree = "<group>"; }; + C66092953B80DE287E77614DFA2D2FE3 /* POPDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPDefines.h; path = pop/POPDefines.h; sourceTree = "<group>"; }; + C70FA986190A848DD39EB171EF041F33 /* POPAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAction.h; path = pop/POPAction.h; sourceTree = "<group>"; }; + C737DBF986FE1FF02706679384A58608 /* FBSDKLoginManagerLoginResult+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLoginManagerLoginResult+Internal.h"; path = "FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLoginResult+Internal.h"; sourceTree = "<group>"; }; C758B84874FBB01F1E2CE355BEA77660 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; - C79111BD3BBEC8AAB595BAD4F5BBFD90 /* PFURLSessionCommandRunner_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionCommandRunner_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/PFURLSessionCommandRunner_Private.h; sourceTree = "<group>"; }; - C82858F9F81EFCA744E061FDCCC6A76A /* PFErrorUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFErrorUtilities.m; path = Parse/Internal/PFErrorUtilities.m; sourceTree = "<group>"; }; - C829B0848EFB7C93E7C376D5D7D2C2D6 /* RKPropertyInspector.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyInspector.m; path = Code/ObjectMapping/RKPropertyInspector.m; sourceTree = "<group>"; }; - C8C072F8CBBD8377A84639A146342212 /* FBSDKErrorConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKErrorConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.h; sourceTree = "<group>"; }; - C93BEBD4E67678D6A0AF73501738D481 /* FBSDKLoginConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginConstants.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.h; sourceTree = "<group>"; }; - C94BA5EE86AA9925359209A89FD97B37 /* FBSDKShareError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareError.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareError.h; sourceTree = "<group>"; }; - C98118F3A80B2EF7FE15655CF5DEBF93 /* AFImageRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageRequestOperation.h; path = AFNetworking/AFImageRequestOperation.h; sourceTree = "<group>"; }; - C9C2F85D16952EEE0714A294ED8EA605 /* RKPaginator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPaginator.h; path = Code/Network/RKPaginator.h; sourceTree = "<group>"; }; - CAECEB62E59C8EBCF2BFBB361AC28C39 /* PFBaseState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFBaseState.m; path = Parse/Internal/PFBaseState.m; sourceTree = "<group>"; }; - CB5646F48F8BFA683EF37662695C41B2 /* PFAnalytics_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics_Private.h; path = Parse/Internal/Analytics/PFAnalytics_Private.h; sourceTree = "<group>"; }; - CB84FD2F2C4E8EE506EE2E7DEC8B5F9C /* Bolts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bolts.h; path = Bolts/Common/Bolts.h; sourceTree = "<group>"; }; - CB98CBDFC30DCA09820317B62E92F7F2 /* FBSDKShareOpenGraphObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareOpenGraphObject.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.m; sourceTree = "<group>"; }; - CBA3A41947E01023E459EDEF3961C5B6 /* libBolts.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBolts.a; sourceTree = BUILT_PRODUCTS_DIR; }; - CC5F6833B3EC9A54CD4FD6CAFC5E61B3 /* FBSDKShareUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareUtility.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.h; sourceTree = "<group>"; }; - CCB649BFD246522D91365614C0B9DD9D /* FBSDKURLOpening.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKURLOpening.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKURLOpening.h; sourceTree = "<group>"; }; - CCE7602032D39C48B4B558FFA15A83BF /* PFSQLiteDatabaseResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseResult.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.h; sourceTree = "<group>"; }; - CCF08CD19CC8E81472432439E658917F /* libSOCKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSOCKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - CD2A28C739FE44128E510AA92662F1E1 /* FBSDKCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCopying.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKCopying.h; sourceTree = "<group>"; }; - CD4655E526EE9E09B596D7ADBA95AEC4 /* FBSDKBridgeAPIProtocolNativeV1.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolNativeV1.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolNativeV1.m; sourceTree = "<group>"; }; - CD540DA6FE69BCC3A353182F52EFE0BF /* libRKValueTransformers.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRKValueTransformers.a; sourceTree = BUILT_PRODUCTS_DIR; }; - CD7593640586B201BCD9939EC8B13017 /* PFConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfig.m; path = Parse/PFConfig.m; sourceTree = "<group>"; }; - CD9BD9332CB70D61FC117651727426D5 /* PFFileDataStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileDataStream.m; path = Parse/Internal/File/FileDataStream/PFFileDataStream.m; sourceTree = "<group>"; }; - CF114CE627A26531EF546CEF5EFE34B2 /* PFSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSession.h; path = Parse/PFSession.h; sourceTree = "<group>"; }; - CF2F482CF92A6BBCE8E46F23475EA72B /* PFWeakValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFWeakValue.h; path = Parse/Internal/PFWeakValue.h; sourceTree = "<group>"; }; - CF7867AD1B16B0D2CCD3E12388E307E6 /* FBSDKLoginKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKLoginKit-dummy.m"; sourceTree = "<group>"; }; - CFBF92A39FCC2FB32797855AB85DCAAE /* FBSDKIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.h; sourceTree = "<group>"; }; - D01E708EE28BD1140C9AE0D2329F2E19 /* PFSQLiteDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabase.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m; sourceTree = "<group>"; }; - D02A52C086D84F65295E5DA1562069FC /* PFACL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACL.m; path = Parse/PFACL.m; sourceTree = "<group>"; }; - D03DA3189A149B152CEA7A11F9C76649 /* Bolts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Bolts.m; path = Bolts/Common/Bolts.m; sourceTree = "<group>"; }; - D0C7247AC09710B122EB8AEBC235DE9F /* RKOperationStateMachine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKOperationStateMachine.h; path = Code/Support/RKOperationStateMachine.h; sourceTree = "<group>"; }; - D13875E740DD491158EB8406E449FFEB /* PFAlertView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAlertView.h; path = Parse/Internal/PFAlertView.h; sourceTree = "<group>"; }; - D18D463A980049E0F00BD51E3DEFF7D8 /* FBSDKLikeControl+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKLikeControl+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeControl+Internal.h"; sourceTree = "<group>"; }; - D195E34301F1EADE93BB0B93F8BFAF0A /* PFACLPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLPrivate.h; path = Parse/Internal/ACL/PFACLPrivate.h; sourceTree = "<group>"; }; - D1AF1FC1D27AABD7DC4C0948E9C059A3 /* PFSQLiteDatabaseController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFSQLiteDatabaseController.m; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseController.m; sourceTree = "<group>"; }; - D1C051EE39EC2369E3712F32F65AAD73 /* ParseInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseInternal.h; path = Parse/Internal/ParseInternal.h; sourceTree = "<group>"; }; - D2DEC5DFFD198D1C75250B16D5369348 /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = "<group>"; }; - D2E0F8156813BEB961019EA1C361691C /* PFQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQuery.h; path = Parse/PFQuery.h; sourceTree = "<group>"; }; - D2FB78825DE91D3944F3483650D27E29 /* FBSDKApplicationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKApplicationDelegate.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.m; sourceTree = "<group>"; }; - D31B782B1DDF351A513DA07076DEB77A /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = "<group>"; }; - D347E102CA6826F9924372BD14C67494 /* FBSDKGraphRequestConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequestConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.m; sourceTree = "<group>"; }; - D3B208164182946BFFFE3BB33CF2BEC1 /* AFXMLRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFXMLRequestOperation.m; path = AFNetworking/AFXMLRequestOperation.m; sourceTree = "<group>"; }; - D4A6B0E6E31C764CA9C4AE79EB0572D4 /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = "<group>"; }; - D4B02834ED165224ED2B72E17A23F1C7 /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = "<group>"; }; - D4C698542F4955E8A40A8D39035EDAAC /* PFCloud.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloud.m; path = Parse/PFCloud.m; sourceTree = "<group>"; }; - D4ED889D5C4216E8C328B8142E67A9CA /* PFObjectEstimatedData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectEstimatedData.h; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.h; sourceTree = "<group>"; }; - D52925260ED38A39BE15E60EFB8E7B49 /* FBSDKMessengerIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMessengerIcon.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKMessengerIcon.m; sourceTree = "<group>"; }; - D558BDA6C0DE3DCBFD4EB1B7FB8D2C72 /* FBSDKURLConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKURLConnection.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKURLConnection.m; sourceTree = "<group>"; }; - D72826DF2E94C85D334B52CF10098D1A /* PFQueryPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryPrivate.h; path = Parse/Internal/Query/PFQueryPrivate.h; sourceTree = "<group>"; }; - D748BF0E60AF7374125A323AB6FA6176 /* FBSDKBridgeAPIResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIResponse.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.m; sourceTree = "<group>"; }; - D74B454C0FDB49038C515C190B7D0040 /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = "<group>"; }; - D7CCA908675FF8F62C1721B4D2229BEA /* PFPinningObjectStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPinningObjectStore.m; path = Parse/Internal/Object/PinningStore/PFPinningObjectStore.m; sourceTree = "<group>"; }; - D7FC083129BF68FB4CB980C41B463B48 /* PFQueryUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryUtilities.h; path = Parse/Internal/Query/Utilities/PFQueryUtilities.h; sourceTree = "<group>"; }; - D807F253C1FC0EAD584DFA49AC3AFFE7 /* ParseModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ParseModule.m; path = Parse/Internal/ParseModule.m; sourceTree = "<group>"; }; - D85AEEF23A439D7C61100E8D5EFE0203 /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = "<group>"; }; - D956488480F1233FFF8403DE1801CEC9 /* RKMIMETypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMIMETypes.h; path = Code/Support/RKMIMETypes.h; sourceTree = "<group>"; }; - D98DD91B0C85D183FC3778CD8BF3EA40 /* FBSDKBridgeAPIProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocol.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocol.h; sourceTree = "<group>"; }; - D9BF17D12A6931CC30A002B5C28BF065 /* FBSDKAccessTokenCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCache.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCache.h; sourceTree = "<group>"; }; - DA45B085FFDF032332BDCB8BFF793E5C /* FBSDKGraphRequestBody.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestBody.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestBody.h; sourceTree = "<group>"; }; - DA54D490C8B9FDBC6989E68EFA54AF6D /* PFCoreDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreDataProvider.h; path = Parse/Internal/PFCoreDataProvider.h; sourceTree = "<group>"; }; - DA6483DCB5207821171D8E1785A354EC /* FBSDKAppInviteDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppInviteDialog.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteDialog.h; sourceTree = "<group>"; }; - DA692944B964141F5AC05B406C0139AE /* FBSDKMonotonicTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMonotonicTime.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMonotonicTime.m; sourceTree = "<group>"; }; - DA8FE461F464D9C9483CDB150140EAF0 /* PFKeychainStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeychainStore.m; path = Parse/Internal/PFKeychainStore.m; sourceTree = "<group>"; }; - DAC38063B09099340C9BF218DC2CD4D2 /* PFURLConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLConstructor.h; path = Parse/Internal/HTTPRequest/PFURLConstructor.h; sourceTree = "<group>"; }; - DB1A535EDDE87E526D1C66FA9BEDAE70 /* PFCommandRunningConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCommandRunningConstants.m; path = Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.m; sourceTree = "<group>"; }; - DBBFF8049227DD76047C14A4FC7F378D /* FBSDKSendButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSendButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSendButton.h; sourceTree = "<group>"; }; - DBF30E4A65710CFBCCC809C891B94888 /* ParseModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseModule.h; path = Parse/Internal/ParseModule.h; sourceTree = "<group>"; }; - DC01BFEAAAC847F4F08D2481C7229EEE /* PFUserAuthenticationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUserAuthenticationController.h; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.h; sourceTree = "<group>"; }; - DD38F8B2DEDE8021308CAA1FD5E08EA0 /* TKState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKState.m; path = Code/TKState.m; sourceTree = "<group>"; }; - DD4352603F7BBCDFDFBF51AA7E5470D8 /* PFPushState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushState.m; path = Parse/Internal/Push/State/PFPushState.m; sourceTree = "<group>"; }; - DD5C257CFF734FBADEC42260C86AF53A /* FBSDKCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKCrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.m; sourceTree = "<group>"; }; - DD920E6012362DC614A1701B8499680B /* lcl_config_components_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_config_components_RK.h; path = Code/Support/lcl_config_components_RK.h; sourceTree = "<group>"; }; - DE71C8926E171BD5AB6618D07D0A3797 /* PFACLState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFACLState.h; path = Parse/Internal/ACL/State/PFACLState.h; sourceTree = "<group>"; }; - DF22EF5561792630E4B16C5A5D546054 /* FBSDKAppEventsUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.h; sourceTree = "<group>"; }; - DF2A4D83628FCB3153D053BF5093B58A /* FBSDKAppLinkResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppLinkResolver.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.h; sourceTree = "<group>"; }; - DF85D1A5A93CD13D748D47C555B565CA /* RKRoute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRoute.h; path = Code/Network/RKRoute.h; sourceTree = "<group>"; }; - DFD5810B96B239C3591705FE5D26D379 /* FBSDKBridgeAPIResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIResponse.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIResponse.h; sourceTree = "<group>"; }; - E0812753D9AFC5C954E63E141EC3C899 /* PFInstallationIdentifierStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore.h; sourceTree = "<group>"; }; - E1FB03A638286D34951A35082DC8829E /* RKBenchmark.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKBenchmark.h; path = Code/Testing/RKBenchmark.h; sourceTree = "<group>"; }; - E276164BF784A894BA33B42E12F10CCE /* PFCachedQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCachedQueryController.h; path = Parse/Internal/Query/Controller/PFCachedQueryController.h; sourceTree = "<group>"; }; - E353BD446B09E846E43AE7A8C9FBE5AA /* FBSDKProfilePictureView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKProfilePictureView.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.m; sourceTree = "<group>"; }; - E3CC799DD4BB9892F589E02F63692D70 /* PFCurrentUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentUserController.m; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.m; sourceTree = "<group>"; }; - E3F86397116A780E41E893B85EDECB42 /* RKResponseMapperOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKResponseMapperOperation.m; path = Code/Network/RKResponseMapperOperation.m; sourceTree = "<group>"; }; - E4D8C8E5159871AD5FA5B7332A649FB5 /* PFOfflineQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOfflineQueryController.h; path = Parse/Internal/Query/Controller/PFOfflineQueryController.h; sourceTree = "<group>"; }; - E4EE8B2F0AF96372A1E5A8E576C9B17A /* FBSDKMath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKMath.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.m; sourceTree = "<group>"; }; - E4FF2B92D70AA85F5430FA255B5930B8 /* FBSDKLoginManagerLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginManagerLogger.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.m; sourceTree = "<group>"; }; - E566B5A1AF002DF94450B717E7E8A195 /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = AFNetworking/AFNetworkActivityIndicatorManager.m; sourceTree = "<group>"; }; - E57F847AAD9A19486F1EB1BA4A0C9071 /* PFURLSessionFileDownloadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionFileDownloadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m; sourceTree = "<group>"; }; - E5AE21B40FF68080B94A984303BBCF2F /* PFUserAuthenticationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserAuthenticationController.m; path = Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m; sourceTree = "<group>"; }; - E5F9060B3223AC9783E8EC3F9FD5582A /* PFSubclassing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSubclassing.h; path = Parse/PFSubclassing.h; sourceTree = "<group>"; }; - E601C5D0D43FA69BCDE6E2ECFF6B02CC /* FBSDKCoreKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKCoreKit.xcconfig; sourceTree = "<group>"; }; + C78765A1425D0F41319511A796357B1F /* PFObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectUtilities.m; path = Parse/Internal/Object/Utilities/PFObjectUtilities.m; sourceTree = "<group>"; }; + C7FD5D8AEF9C721E9A8B50A73398561A /* RKRouteSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRouteSet.h; path = Code/Network/RKRouteSet.h; sourceTree = "<group>"; }; + CA018EEB50C81D92939C0E4379941FE9 /* FBSDKApplicationDelegate+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKApplicationDelegate+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKApplicationDelegate+Internal.h"; sourceTree = "<group>"; }; + CA3482F3977AA386E991A54C5181BDE1 /* FBSDKAppEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEvents.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppEvents.m; sourceTree = "<group>"; }; + CA3CB4DD07E35F520C793BA9032F51FC /* RKMappingTest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingTest.h; path = Code/Testing/RKMappingTest.h; sourceTree = "<group>"; }; + CA3CDC2D78E68FD7654C42F67C29EF3A /* FBSDKViewImpressionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKViewImpressionTracker.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.m; sourceTree = "<group>"; }; + CA8D44F0BCF9802F38A1799B6EBF1407 /* FBSDKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKInternalUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m; sourceTree = "<group>"; }; + CAEFED956777B69C5958C0E809EC11BB /* PFRESTCloudCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTCloudCommand.m; path = Parse/Internal/Commands/PFRESTCloudCommand.m; sourceTree = "<group>"; }; + CB172E497F3C842C06931402446C2D4B /* BFMeasurementEvent_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent_Internal.h; path = Bolts/iOS/BFMeasurementEvent_Internal.h; sourceTree = "<group>"; }; + CB3D0EFB3CB9EFB991A6BD44384669BB /* RKMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMapping.h; path = Code/ObjectMapping/RKMapping.h; sourceTree = "<group>"; }; + CBA6686079E7409ED27CC9A6ADEBF36A /* FBSDKBridgeAPIRequest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKBridgeAPIRequest+Private.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest+Private.h"; sourceTree = "<group>"; }; + CBF4F2328A16C47BFD1BCF837B76EB35 /* PFPush.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPush.m; path = Parse/PFPush.m; sourceTree = "<group>"; }; + CC228E158C60DD94DF7B3EA5E18D8125 /* FBSDKKeychainStoreViaBundleID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKKeychainStoreViaBundleID.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKKeychainStoreViaBundleID.m; sourceTree = "<group>"; }; + CC27E380BD4D02E6D8E8A25280C06A29 /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = "<group>"; }; + CC7C0590FD149B2C227C59AB38DF61DC /* AFPropertyListRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFPropertyListRequestOperation.m; path = AFNetworking/AFPropertyListRequestOperation.m; sourceTree = "<group>"; }; + CCD58C1FE0A285B35DC39096400FF8C5 /* YALTabBarInteracting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALTabBarInteracting.h; path = FoldingTabBar/Protocol/TabBarInteracting/YALTabBarInteracting.h; sourceTree = "<group>"; }; + CCE6CAC57669DAF95F75350ACA64D8F5 /* Parse-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Parse-prefix.pch"; sourceTree = "<group>"; }; + CD158942FBF8358677B8D9A4BEA9332E /* RKPathMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPathMatcher.h; path = Code/Network/RKPathMatcher.h; sourceTree = "<group>"; }; + CD1F87198E6B2738076E71BB2C4A8C71 /* FBSDKError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKError.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKError.m; sourceTree = "<group>"; }; + CD4D52B14CF2360DE429DCB655B00642 /* PFRelationState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState_Private.h; path = Parse/Internal/Relation/State/PFRelationState_Private.h; sourceTree = "<group>"; }; + CEB32A7ACC2D1268332E3ED6413E04AE /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = AFNetworking/AFNetworkActivityIndicatorManager.h; sourceTree = "<group>"; }; + CEF0CE91FC9080D9E33E9B362D760F18 /* FBSDKLikeButtonPopWAV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeButtonPopWAV.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.h; sourceTree = "<group>"; }; + CF09A05A7A248669395E6778DD2838AE /* TransitionKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "TransitionKit-prefix.pch"; sourceTree = "<group>"; }; + CF3513EE8625253892B05EFF20F16B57 /* RKPropertyInspector.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPropertyInspector.m; path = Code/ObjectMapping/RKPropertyInspector.m; sourceTree = "<group>"; }; + CF478811F261A5C3A4200EF18BD59E46 /* FBSDKLikeBoxBorderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLikeBoxBorderView.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeBoxBorderView.h; sourceTree = "<group>"; }; + CF6DFEAD49E3B96B670A4AB662D78229 /* FBSDKGraphRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequest.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.h; sourceTree = "<group>"; }; + CFEE369DBDB3AF968FCC81B9E15BD259 /* BFAppLinkNavigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkNavigation.m; path = Bolts/iOS/BFAppLinkNavigation.m; sourceTree = "<group>"; }; + D011D1FC8B93C93581E9C03ABF791BCF /* SOCKit.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SOCKit.m; sourceTree = "<group>"; }; + D0E010198F9F57F3C1F5251591AC52B6 /* PFObjectConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectConstants.m; path = Parse/Internal/Object/Constants/PFObjectConstants.m; sourceTree = "<group>"; }; + D1361066E091AA4FB6E9B94B50118177 /* PFObject+Subclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFObject+Subclass.h"; path = "Parse/PFObject+Subclass.h"; sourceTree = "<group>"; }; + D147E7F72F838ED5D3C66A4E3546EC11 /* BFCancellationTokenSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenSource.h; path = Bolts/Common/BFCancellationTokenSource.h; sourceTree = "<group>"; }; + D18B76D6F749D3B45BAA4E3B0F2EFFD1 /* PFQueryPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryPrivate.h; path = Parse/Internal/Query/PFQueryPrivate.h; sourceTree = "<group>"; }; + D1B966C2A921DE73042AA8B317E629EA /* Parse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Parse.m; path = Parse/Parse.m; sourceTree = "<group>"; }; + D24D9A1393699B9007901EB5221D9018 /* PFFileDataStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileDataStream.m; path = Parse/Internal/File/FileDataStream/PFFileDataStream.m; sourceTree = "<group>"; }; + D24F985E3661241D2C0921E8022E66C2 /* FBSDKAppInviteContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppInviteContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppInviteContent.m; sourceTree = "<group>"; }; + D284CA3DDD91571D70CF7256A3C248FE /* lcl_RK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lcl_RK.h; path = Vendor/LibComponentLogging/Core/lcl_RK.h; sourceTree = "<group>"; }; + D2A208C22FB8BC1DAFD34F05A88E7349 /* BFTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTask.h; path = Bolts/Common/BFTask.h; sourceTree = "<group>"; }; + D3359292FE89A636801514727B628BCA /* POPSpringAnimation.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPSpringAnimation.mm; path = pop/POPSpringAnimation.mm; sourceTree = "<group>"; }; + D340DC8D2BC61B7C8A044A46F47ED4D0 /* BFCancellationToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationToken.m; path = Bolts/Common/BFCancellationToken.m; sourceTree = "<group>"; }; + D3AD3AB61D09EFC9C322C57F9239AFF8 /* PFRESTUserCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTUserCommand.h; path = Parse/Internal/Commands/PFRESTUserCommand.h; sourceTree = "<group>"; }; + D46B8631F4A20A30B5C1E47D9F2A6FEB /* PFAnonymousAuthenticationProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnonymousAuthenticationProvider.m; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousAuthenticationProvider.m; sourceTree = "<group>"; }; + D4AB7EDD51484D69712FC0BAF2EEFB20 /* PFAnalytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics.h; path = Parse/PFAnalytics.h; sourceTree = "<group>"; }; + D4D4E125C0EFD510E0171C24783AD02F /* RKPropertyMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPropertyMapping.h; path = Code/ObjectMapping/RKPropertyMapping.h; sourceTree = "<group>"; }; + D4F5FFBEC5EF679476BD610B31B04B36 /* PFErrorUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFErrorUtilities.m; path = Parse/Internal/PFErrorUtilities.m; sourceTree = "<group>"; }; + D5B2F6DAB138D6C0AFB76C250456D0A9 /* RKTestFixture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestFixture.h; path = Code/Testing/RKTestFixture.h; sourceTree = "<group>"; }; + D5B9C19265F524EBC4ED733155E3DB3B /* RKObjectRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectRequestOperation.h; path = Code/Network/RKObjectRequestOperation.h; sourceTree = "<group>"; }; + D5F29001AB83C450101AC6122BCC4EA0 /* PFRESTFileCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTFileCommand.m; path = Parse/Internal/Commands/PFRESTFileCommand.m; sourceTree = "<group>"; }; + D605FE4F41A283271B93F93C8E0C5932 /* PFUserFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserFileCodingLogic.m; path = Parse/Internal/User/Coder/File/PFUserFileCodingLogic.m; sourceTree = "<group>"; }; + D65E69134BE531C727A15EAC5D6BD404 /* PFObjectUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectUtilities.h; path = Parse/Internal/Object/Utilities/PFObjectUtilities.h; sourceTree = "<group>"; }; + D68125D407CB86FE46338C7579765331 /* RKISO8601DateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKISO8601DateFormatter.h; path = Code/RKISO8601DateFormatter.h; sourceTree = "<group>"; }; + D68CBFCA3F276272B2040E6469C8D1DE /* FBSDKColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKColor.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKColor.h; sourceTree = "<group>"; }; + D7AC47EB8D0E9C9582957C2869B7517D /* BFAppLinkReturnToRefererView_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkReturnToRefererView_Internal.h; path = Bolts/iOS/BFAppLinkReturnToRefererView_Internal.h; sourceTree = "<group>"; }; + D80B172E70B3B5E8CAEA6069D1DE5D71 /* FBSDKSharingButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharingButton.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharingButton.h; sourceTree = "<group>"; }; + D849F8915909B1847A03276B640112BC /* FBSDKUIUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKUIUtility.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKUIUtility.h; sourceTree = "<group>"; }; + D8B4BCA52E13031B048A091F56EDD1FE /* FBSDKApplicationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKApplicationDelegate.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h; sourceTree = "<group>"; }; + D8C9CB701E4F6C654174000392CF24D9 /* Parse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Parse.h; path = Parse/Parse.h; sourceTree = "<group>"; }; + D8EF0F918739185C24D9BE7DDED005BB /* PFCoreDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCoreDataProvider.h; path = Parse/Internal/PFCoreDataProvider.h; sourceTree = "<group>"; }; + D9283FF2298CF4AB76D39E0BB4601791 /* PFAnalytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalytics.m; path = Parse/PFAnalytics.m; sourceTree = "<group>"; }; + D9AA4942A33D49D6BD6342E82EF21F2F /* FBSDKAccessTokenCacheV3_17.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAccessTokenCacheV3_17.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_17.h; sourceTree = "<group>"; }; + D9C1F4F92487D9DCADCD60039710D816 /* FBSDKCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCrypto.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/Cryptography/FBSDKCrypto.h; sourceTree = "<group>"; }; + D9F9A1B8EB6CBAF33BDC895542AB64E9 /* PFDataProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDataProvider.h; path = Parse/Internal/PFDataProvider.h; sourceTree = "<group>"; }; + DA196AA463D20F7402232B546DE1EEC4 /* Bolts-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Bolts-dummy.m"; sourceTree = "<group>"; }; + DA1BD0504C0DB02DE656D603F622159C /* PFHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFHash.m; path = Parse/Internal/PFHash.m; sourceTree = "<group>"; }; + DA3EA52DCFB7D558F88A88501D54E2B9 /* FBSDKShareOpenGraphObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphObject.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h; sourceTree = "<group>"; }; + DA4A6D24A88D4B18ED3D60681DF68270 /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = "<group>"; }; + DAB59734D65B77DD76ADC6A7069BEFCA /* PFPin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPin.m; path = Parse/Internal/LocalDataStore/Pin/PFPin.m; sourceTree = "<group>"; }; + DAB70DB4EE93F869DBC66617E527E62E /* ISO8601DateFormatterValueTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ISO8601DateFormatterValueTransformer.h; path = Code/ISO8601DateFormatterValueTransformer.h; sourceTree = "<group>"; }; + DAD657A091CF82605FA8A0100D16E83E /* TKStateMachine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TKStateMachine.h; path = Code/TKStateMachine.h; sourceTree = "<group>"; }; + DAE43287C4A621BABEBFD4D7ACA4D0CB /* PFPushChannelsController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushChannelsController.h; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.h; sourceTree = "<group>"; }; + DAF50A43880E07D46E8A97B575A92405 /* PFRESTObjectBatchCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectBatchCommand.m; path = Parse/Internal/Commands/PFRESTObjectBatchCommand.m; sourceTree = "<group>"; }; + DB72A1AC246E5FC4E81A0DBB8B1F0737 /* FBSDKLoginUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginUtility.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginUtility.m; sourceTree = "<group>"; }; + DC4C06AF4A9CCA7E3F9A2C7F97FFCE87 /* PFDevice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDevice.h; path = Parse/Internal/PFDevice.h; sourceTree = "<group>"; }; + DC702CD32C7B1F95EBB4525985776E1A /* FBSDKServerConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKServerConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration.h; sourceTree = "<group>"; }; + DC865D74F3C01339E7A0C969FDED834E /* PFObjectState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectState.m; path = Parse/Internal/Object/State/PFObjectState.m; sourceTree = "<group>"; }; + DCDABFE826ADB96F79D0DFB7BF9C4259 /* PFInstallationConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationConstants.h; path = Parse/Internal/Installation/Constants/PFInstallationConstants.h; sourceTree = "<group>"; }; + DCE8B19B5BBBF2EEE591030CB12399C6 /* FBSDKSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKSettings.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m; sourceTree = "<group>"; }; + DD2FCA295F0F6EC84DC796D623DC209F /* TransformationMatrix.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TransformationMatrix.h; path = pop/WebCore/TransformationMatrix.h; sourceTree = "<group>"; }; + DD4E641A4F7583F57A2818E33113A0CF /* PFQueryState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryState.m; path = Parse/Internal/Query/State/PFQueryState.m; sourceTree = "<group>"; }; + DD91926B9C031018B2F9CB9019718F3E /* FBSDKLoginButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginButton.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m; sourceTree = "<group>"; }; + DDB0E62AEBB7CEA6AAB32321B17C4DA4 /* RKMIMETypeSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKMIMETypeSerialization.m; path = Code/Support/RKMIMETypeSerialization.m; sourceTree = "<group>"; }; + DE726D284DFE5BC0144139D8575114FE /* PFUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUser.m; path = Parse/PFUser.m; sourceTree = "<group>"; }; + DECD8E5B530D5D0B9FB27660D6A00BA3 /* RKMappingResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingResult.h; path = Code/ObjectMapping/RKMappingResult.h; sourceTree = "<group>"; }; + DF3BBA8D585F58897AE3BA414EDE35C2 /* FBSDKTooltipView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTooltipView.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.h; sourceTree = "<group>"; }; + E043164BEB509D5E2D2B9698903390E7 /* PFKeyValueCache_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache_Private.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache_Private.h; sourceTree = "<group>"; }; + E0650188B522893BF764569662B5E542 /* PFRESTObjectCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTObjectCommand.m; path = Parse/Internal/Commands/PFRESTObjectCommand.m; sourceTree = "<group>"; }; + E089DC06AFABF3AB162039B0DCA20D14 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = "<group>"; }; + E0976F3A16E6127C870E863609F006DF /* FBSDKDialogConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKDialogConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.m; sourceTree = "<group>"; }; + E0BEF4CC671BA1E579779C38712DC769 /* FBSDKShareKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSDKShareKit.xcconfig; sourceTree = "<group>"; }; + E0E0D90BB11B78E84D92384725A9534E /* libFBSDKCoreKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFBSDKCoreKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E160D14CDAB0E17CC1D0024A8673A34C /* FBSDKLoginConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginConstants.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginConstants.m; sourceTree = "<group>"; }; + E1657F05C4EF96882F28C1692CBF05CE /* FBSDKProfilePictureView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKProfilePictureView.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKProfilePictureView.h; sourceTree = "<group>"; }; + E1F89AA6B095AAB2C7CEB2BEAC5A7F1B /* PFConfigController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConfigController.m; path = Parse/Internal/Config/Controller/PFConfigController.m; sourceTree = "<group>"; }; + E22A1C7E80FE2BA8CE59C7C924410D0E /* PFKeyValueCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFKeyValueCache.m; path = Parse/Internal/KeyValueCache/PFKeyValueCache.m; sourceTree = "<group>"; }; + E2C63AFAC34B0E794D2603EF0F27DF0E /* PFDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFDecoder.h; path = Parse/Internal/PFDecoder.h; sourceTree = "<group>"; }; + E2E5158BDE2438D1F296202C6A65CAD9 /* FBSDKSystemAccountStoreAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSystemAccountStoreAdapter.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSystemAccountStoreAdapter.h; sourceTree = "<group>"; }; + E362D4507FC775D8570A80D797BC3E91 /* BFAppLinkTarget.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkTarget.h; path = Bolts/iOS/BFAppLinkTarget.h; sourceTree = "<group>"; }; + E37BF385DA04A9EDE7E17A3AD82FB48D /* PFObjectState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectState_Private.h; path = Parse/Internal/Object/State/PFObjectState_Private.h; sourceTree = "<group>"; }; + E3F194E608C0A87A1EA1DBA9B49CDFC8 /* PFFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFile.m; path = Parse/PFFile.m; sourceTree = "<group>"; }; + E436D932FA7C17E15674EB32E957ABE2 /* FBSDKErrorConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKErrorConfiguration.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKErrorConfiguration.m; sourceTree = "<group>"; }; + E4528F78B1F397E3730075143FD93C99 /* FBSDKUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKUtility.m; sourceTree = "<group>"; }; + E4865AB05BFD84B7B6E65342C643E18E /* PFFileStagingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileStagingController.m; path = Parse/Internal/File/Controller/PFFileStagingController.m; sourceTree = "<group>"; }; + E49DAAC9A8E0D5362E749A6821734AF0 /* RKRelationshipMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKRelationshipMapping.h; path = Code/ObjectMapping/RKRelationshipMapping.h; sourceTree = "<group>"; }; + E4C5528C376F1D824C32FC5049A22958 /* ISO8601DateFormatterValueTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ISO8601DateFormatterValueTransformer.m; path = Code/ISO8601DateFormatterValueTransformer.m; sourceTree = "<group>"; }; + E511AFB10E1282BD8E6813EEEAD607E0 /* FBSDKMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKMath.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKMath.h; sourceTree = "<group>"; }; + E516EBEC7356A04879F93CDEB1C0A839 /* PFApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFApplication.h; path = Parse/Internal/PFApplication.h; sourceTree = "<group>"; }; + E53C7B0A7D27C453923DDE2311E75A27 /* PFOfflineObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFOfflineObjectController.m; path = Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m; sourceTree = "<group>"; }; + E55C935E4DD635C29A2B334C8AB06254 /* FBSDKServerConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfiguration+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfiguration+Internal.h"; sourceTree = "<group>"; }; + E5A9EBDF50D04397C922F9D0AB7B0512 /* BFMeasurementEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFMeasurementEvent.h; path = Bolts/iOS/BFMeasurementEvent.h; sourceTree = "<group>"; }; + E5C990C91B211AE926078950B8630516 /* RKObjectMappingMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMappingMatcher.h; path = Code/ObjectMapping/RKObjectMappingMatcher.h; sourceTree = "<group>"; }; + E5FEF8F1937676245479BD46246EE956 /* PFErrorUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFErrorUtilities.h; path = Parse/Internal/PFErrorUtilities.h; sourceTree = "<group>"; }; E62E80C06B8D2394C56D10220D1CCB6F /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; - E632D3BFE8814A4C59897AC48C2FEAB7 /* PFObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObject.h; path = Parse/PFObject.h; sourceTree = "<group>"; }; - E6EBF6F7C6F610013CFE4E847BD798F8 /* RKObjectManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectManager.h; path = Code/Network/RKObjectManager.h; sourceTree = "<group>"; }; - E736754D92F661C38E69F1CD3C7845B0 /* FBSDKAccessTokenCacheV3_21.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAccessTokenCacheV3_21.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/TokenCaching/FBSDKAccessTokenCacheV3_21.m; sourceTree = "<group>"; }; - E7502CBF5FF5DDC2E45F3550840F4429 /* RKResponseMapperOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKResponseMapperOperation.h; path = Code/Network/RKResponseMapperOperation.h; sourceTree = "<group>"; }; - E758DEF5BEC8EEC9032BAC8EAEAA4C51 /* AFURLConnectionOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLConnectionOperation.m; path = AFNetworking/AFURLConnectionOperation.m; sourceTree = "<group>"; }; - E76FEBC923D494E63C53B86C5D25ED29 /* PFPropertyInfo_Runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Runtime.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h; sourceTree = "<group>"; }; - E7CB4124E5934CC10279CE22C1F3D5E5 /* FBSDKShareUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareUtility.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareUtility.m; sourceTree = "<group>"; }; - E8152227AD2D6CE25BC7888D919F6BD3 /* FBSDKCloseIcon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKCloseIcon.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKCloseIcon.h; sourceTree = "<group>"; }; - E8466657B806FC125F113617F7DD42A9 /* FBSDKShareDialogMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareDialogMode.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareDialogMode.m; sourceTree = "<group>"; }; - E89848483ABCCAEAAEDD2FF9965D52D7 /* PFKeyValueCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFKeyValueCache.h; path = Parse/Internal/KeyValueCache/PFKeyValueCache.h; sourceTree = "<group>"; }; - E8BE55CB57DEE8420789C65645ABEFF9 /* RKISO8601DateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKISO8601DateFormatter.h; path = Code/RKISO8601DateFormatter.h; sourceTree = "<group>"; }; - E8C9BEAE7AF61AB7F508B135815A7405 /* FBSDKLoginCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginCompletion.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.h; sourceTree = "<group>"; }; - E93884F64E775CC94E71ED80F9FF08D4 /* PFPushManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushManager.h; path = Parse/Internal/Push/Manager/PFPushManager.h; sourceTree = "<group>"; }; - E9B097547004C3BD7DED3DEE274BAF78 /* PFMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFMacros.h; path = Parse/Internal/PFMacros.h; sourceTree = "<group>"; }; - EA109C22D76467FD3FAB127642A18655 /* PFEventuallyQueue_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyQueue_Private.h; path = Parse/Internal/PFEventuallyQueue_Private.h; sourceTree = "<group>"; }; - EA755DA8F373AF93B1752260FBCD0DEE /* RKObjectRequestOperationSubclass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectRequestOperationSubclass.h; path = Code/Network/RKObjectRequestOperationSubclass.h; sourceTree = "<group>"; }; - EAB7C8D81307D67033C83A0116B517EA /* PFURLSessionJSONDataTaskDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSessionJSONDataTaskDelegate.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.h; sourceTree = "<group>"; }; - EAFB52AC58711E75BD9749D21BB34897 /* PFCurrentObjectControlling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentObjectControlling.h; path = Parse/Internal/Object/CurrentController/PFCurrentObjectControlling.h; sourceTree = "<group>"; }; - EB41BA80088D3B05F30B5FE2B650F1E8 /* AFHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPRequestOperation.h; path = AFNetworking/AFHTTPRequestOperation.h; sourceTree = "<group>"; }; - EB51571C4C582A26F710845CFAA3AAFE /* FBSDKLoginCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginCompletion.m; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginCompletion.m; sourceTree = "<group>"; }; - EB7387ED21F22A0C3ACF3899E4EF7872 /* FBSDKAudioResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAudioResourceLoader.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKAudioResourceLoader.m; sourceTree = "<group>"; }; - EBA8382EE38E29B647AAA8D688CC23CE /* RKConnectionTestExpectation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKConnectionTestExpectation.m; path = Code/Testing/RKConnectionTestExpectation.m; sourceTree = "<group>"; }; - EBB561046AC0CC3E56743E5BB664B0B0 /* RKTestFactory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestFactory.m; path = Code/Testing/RKTestFactory.m; sourceTree = "<group>"; }; - EC53BB2A4757BDC90938CF004EC14FD9 /* FBSDKPaymentObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKPaymentObserver.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKPaymentObserver.m; sourceTree = "<group>"; }; - ED7B68BD4BE4A662816CBE0A294F6500 /* RKTestFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestFactory.h; path = Code/Testing/RKTestFactory.h; sourceTree = "<group>"; }; - ED989C258CEF00D2F1701A073DD1C374 /* PFRESTUserCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTUserCommand.m; path = Parse/Internal/Commands/PFRESTUserCommand.m; sourceTree = "<group>"; }; - EDB3A467B0EABBCD096D79DC9AC1FD8C /* RKObjectMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMapping.h; path = Code/ObjectMapping/RKObjectMapping.h; sourceTree = "<group>"; }; - EDB85417DB00C6BC36233DD8F5D526A6 /* PFFileState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState.h; path = Parse/Internal/File/State/PFFileState.h; sourceTree = "<group>"; }; - EE27DAB32337BD835F6F1C44CE941739 /* FBSDKConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKConstants.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKConstants.h; sourceTree = "<group>"; }; - EEB6507B7B3A6A759DE71FB3D665F68C /* RKValueTransformers-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RKValueTransformers-prefix.pch"; sourceTree = "<group>"; }; + E6D171B8D3792811D774B92580727FAB /* FBSDKShareVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKShareVideo.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareVideo.m; sourceTree = "<group>"; }; + E73D941475103F44552CBBF7A9C2578A /* FBSDKGameRequestFrictionlessRecipientCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestFrictionlessRecipientCache.h; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKGameRequestFrictionlessRecipientCache.h; sourceTree = "<group>"; }; + E758F865F37D77788EE4B4551EF1487D /* PFCloudCodeController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloudCodeController.m; path = Parse/Internal/CloudCode/PFCloudCodeController.m; sourceTree = "<group>"; }; + E75B973B4239A8C33C3DF18D0F41168D /* FBSDKAppEventsState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKAppEventsState.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.h; sourceTree = "<group>"; }; + E7909E9598E022C3C0A3969A59F14279 /* PFProductsRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFProductsRequestHandler.h; path = Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.h; sourceTree = "<group>"; }; + E83EDDC94D7F78C9A89A9BBF973667B6 /* TKTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKTransition.m; path = Code/TKTransition.m; sourceTree = "<group>"; }; + E8A1C16BDC310A2EF19DE55901CD5B41 /* RKValueTransformers-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RKValueTransformers-dummy.m"; sourceTree = "<group>"; }; + E8A3F0FA2907B71EC0DCB074D0E32D52 /* RKLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKLog.h; path = Code/Support/RKLog.h; sourceTree = "<group>"; }; + EA4EBDCE8C9C8A5582D7231A544E96A8 /* RKConnectionTestExpectation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKConnectionTestExpectation.h; path = Code/Testing/RKConnectionTestExpectation.h; sourceTree = "<group>"; }; + EAA5D41EBB47944D263EB028AA677026 /* FBSDKShareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSDKShareKit-dummy.m"; sourceTree = "<group>"; }; + EAA88DECC60605475F4AA3869B36A8FB /* PFSQLiteDatabaseResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFSQLiteDatabaseResult.h; path = Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.h; sourceTree = "<group>"; }; + EB97CD8D9BDC16D9E1CE5F863965790B /* pop.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = pop.xcconfig; sourceTree = "<group>"; }; + EBC06CCF32BA9A3FEE34142E70D19588 /* PFRESTPushCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTPushCommand.h; path = Parse/Internal/Commands/PFRESTPushCommand.h; sourceTree = "<group>"; }; + EBF45573BC8D86EF53B4B16396F99411 /* pop-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "pop-prefix.pch"; sourceTree = "<group>"; }; + EC54205F1719C5C45D60A2253F84C5ED /* PFCloud.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCloud.h; path = Parse/PFCloud.h; sourceTree = "<group>"; }; + EC599B21BE1C0853A0234AD38F8FC07E /* PFFileState_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileState_Private.h; path = Parse/Internal/File/State/PFFileState_Private.h; sourceTree = "<group>"; }; + ECE23EA20C48234573BE370B97423C3A /* PFAnonymousUtils_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnonymousUtils_Private.h; path = Parse/Internal/User/AuthenticationProviders/Providers/Anonymous/PFAnonymousUtils_Private.h; sourceTree = "<group>"; }; + ECF9B9F2BA04D70CD7253751FF94CCD5 /* FBSDKLikeActionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeActionController.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeActionController.m; sourceTree = "<group>"; }; + EE16E8E41B610CE73E8BC061D6E6E102 /* RKLumberjackLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKLumberjackLogger.h; path = Code/Support/RKLumberjackLogger.h; sourceTree = "<group>"; }; EEBA4E2BFC884C1F4B170F5BC7DE8B77 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - EFB4DB04B2AB3F83A62C1D8799687945 /* PFDateFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDateFormatter.m; path = Parse/Internal/PFDateFormatter.m; sourceTree = "<group>"; }; - F08BE85063341A7E769D75F5763E3946 /* FBSDKLoginButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLoginButton.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginButton.m; sourceTree = "<group>"; }; - F0CB7F600F18B609668913010F45E215 /* FBSDKAppEventsState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppEventsState.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsState.m; sourceTree = "<group>"; }; - F0CFA77570DB7AAAE7861BC27A0A45A3 /* Testing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Testing.h; path = Code/Testing.h; sourceTree = "<group>"; }; - F120433DCBA609FFCA1AC8D7E66C715F /* PFGeoPoint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFGeoPoint.m; path = Parse/PFGeoPoint.m; sourceTree = "<group>"; }; - F141BBF337790457F2DAF41F1F0011E0 /* PFQueryState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryState.h; path = Parse/Internal/Query/State/PFQueryState.h; sourceTree = "<group>"; }; - F16E9555C16A15C09F6E739388F4FE89 /* FBSDKSharePhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKSharePhoto.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKSharePhoto.h; sourceTree = "<group>"; }; - F196DD5AE8EA853E4EC89AF912198556 /* FBSDKLoginManagerLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLogger.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h; sourceTree = "<group>"; }; - F197F5F3111E02DC7CFE618154DE5269 /* PFPushState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPushState.h; path = Parse/Internal/Push/State/PFPushState.h; sourceTree = "<group>"; }; - F19E08580DB71ED59755E30D19440C85 /* FBSDKTooltipView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKTooltipView.m; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKTooltipView.m; sourceTree = "<group>"; }; - F323D6CA68A5402E8D8D781B37B2A91C /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = AFNetworking/AFNetworkActivityIndicatorManager.h; sourceTree = "<group>"; }; - F3BDAD35FE37E535B22528CF954B4332 /* RKValueTransformers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKValueTransformers.h; path = Code/RKValueTransformers.h; sourceTree = "<group>"; }; - F3C909089E36795B0294E159BE83E353 /* PFAnalytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAnalytics.m; path = Parse/PFAnalytics.m; sourceTree = "<group>"; }; - F43FCDFCE19EE9AB392AF998DE9DF52F /* FBSDKShareKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSDKShareKit-prefix.pch"; sourceTree = "<group>"; }; - F4E257A30B52BCA02E3AD226A28156E6 /* RKPathMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKPathMatcher.h; path = Code/Network/RKPathMatcher.h; sourceTree = "<group>"; }; - F5500331C2AE5ADC39A1AB40A74529FB /* BFAppLinkResolving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFAppLinkResolving.h; path = Bolts/iOS/BFAppLinkResolving.h; sourceTree = "<group>"; }; - F55189D706C6F0A7E7F9257ACEE9173C /* PFApplication.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFApplication.m; path = Parse/Internal/PFApplication.m; sourceTree = "<group>"; }; - F5B16E71107186CBE636A34F02C7C0DC /* FBSDKBridgeAPIProtocolType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolType.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIProtocolType.h; sourceTree = "<group>"; }; - F62A65D495C27089A10FB5943BF3A012 /* RKTestNotificationObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestNotificationObserver.m; path = Code/Testing/RKTestNotificationObserver.m; sourceTree = "<group>"; }; - F632B4241467D0929F63833DA56E7443 /* BFAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkTarget.m; path = Bolts/iOS/BFAppLinkTarget.m; sourceTree = "<group>"; }; - F6A1AA7E3400E1B0C28309A8DB53D160 /* PFCachedQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCachedQueryController.m; path = Parse/Internal/Query/Controller/PFCachedQueryController.m; sourceTree = "<group>"; }; - F6C85F64DFA1EA9920744621BC7D1A3A /* TransitionKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "TransitionKit-dummy.m"; sourceTree = "<group>"; }; - F743580826B5C1B915C7431CC5442853 /* BFTaskCompletionSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFTaskCompletionSource.h; path = Bolts/Common/BFTaskCompletionSource.h; sourceTree = "<group>"; }; - F74C54135672148EAEB4C34B19F94625 /* PFRESTCommand_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTCommand_Private.h; path = Parse/Internal/Commands/PFRESTCommand_Private.h; sourceTree = "<group>"; }; - F786873C808C35EC234BC3F1215CB314 /* BFTask+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "BFTask+Private.m"; path = "Parse/Internal/BFTask+Private.m"; sourceTree = "<group>"; }; - F7C8F9BB226F40C4F7CE5B08939D6900 /* FBSDKShareLinkContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareLinkContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareLinkContent.h; sourceTree = "<group>"; }; - F7E3E2499E10690D5CDBED7CFBB46CF4 /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m; sourceTree = "<group>"; }; - F84F292500C57DA9F2C1AF294A4409F6 /* FBSDKLoginManagerLoginResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLoginResult.h; path = FBSDKLoginKit/FBSDKLoginKit/FBSDKLoginManagerLoginResult.h; sourceTree = "<group>"; }; - F8562AEEC62C495A2C6A5DCD3FA7ADDE /* FBSDKButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKButton.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKButton.m; sourceTree = "<group>"; }; - F89DFF8EBC2C4ED2A61178F8775BBBE3 /* FBSDKAppGroupContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupContent.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupContent.m; sourceTree = "<group>"; }; - F90CCDF16C40C8073020CB017D02AC1D /* RKURLEncodedSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKURLEncodedSerialization.h; path = Code/Support/RKURLEncodedSerialization.h; sourceTree = "<group>"; }; - F92FBE5E1BD5C2804DA747E481794947 /* PFObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectUtilities.m; path = Parse/Internal/Object/Utilities/PFObjectUtilities.m; sourceTree = "<group>"; }; - F9A89F784DA1F7AF78D9C06E04DAFF30 /* SOCKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SOCKit.h; sourceTree = "<group>"; }; - FA149A0B2AF7E3F3EC903816EC962CFA /* FBSDKTriStateBOOL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTriStateBOOL.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKTriStateBOOL.h; sourceTree = "<group>"; }; - FB06B7B325850C15B6DC9083FA9CC5C3 /* PFObjectFileCodingLogic.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectFileCodingLogic.m; path = Parse/Internal/Object/Coder/File/PFObjectFileCodingLogic.m; sourceTree = "<group>"; }; - FB2D447FC39896FA1BCA5534A076AB55 /* PFFileController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFFileController.m; path = Parse/Internal/File/Controller/PFFileController.m; sourceTree = "<group>"; }; - FBA2D90AB903058236DD7AF5CE16650F /* RKAttributeMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKAttributeMapping.m; path = Code/ObjectMapping/RKAttributeMapping.m; sourceTree = "<group>"; }; - FBD9F8EA50253D95A8AD97BAD86E10C0 /* PFJSONSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFJSONSerialization.h; path = Parse/Internal/PFJSONSerialization.h; sourceTree = "<group>"; }; - FC1F61CB54C0673DD6D3F506261C1797 /* FBSDKAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkResolver.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkResolver.m; sourceTree = "<group>"; }; - FC83BAA3A130DE0ECB081A56D1DB7917 /* FBSDKShareOpenGraphObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKShareOpenGraphObject.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKShareOpenGraphObject.h; sourceTree = "<group>"; }; + EED2B7513CB5A03507BE982601143DEC /* BFWebViewAppLinkResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFWebViewAppLinkResolver.m; path = Bolts/iOS/BFWebViewAppLinkResolver.m; sourceTree = "<group>"; }; + EF2907AA3AD4FE98405EC818A63855DA /* POPAnimationExtras.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimationExtras.mm; path = pop/POPAnimationExtras.mm; sourceTree = "<group>"; }; + EF79FDCF0AF41A384FB770643D79F0E6 /* FBSDKLoginManagerLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKLoginManagerLogger.h; path = FBSDKLoginKit/FBSDKLoginKit/Internal/FBSDKLoginManagerLogger.h; sourceTree = "<group>"; }; + EFC29774AABC76F1B26B97B146F2A1C9 /* PFObjectEstimatedData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectEstimatedData.h; path = Parse/Internal/Object/EstimatedData/PFObjectEstimatedData.h; sourceTree = "<group>"; }; + EFF0339213287B595E2857A1BCA7B7E8 /* FBSDKGameRequestContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGameRequestContent.h; path = FBSDKShareKit/FBSDKShareKit/FBSDKGameRequestContent.h; sourceTree = "<group>"; }; + F0414F682EAAC899BF6D1350B23F4920 /* AFImageRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageRequestOperation.m; path = AFNetworking/AFImageRequestOperation.m; sourceTree = "<group>"; }; + F09DC66B579DD76F90EDE78627D95BB3 /* RKMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMacros.h; path = Code/Support/RKMacros.h; sourceTree = "<group>"; }; + F0E8603DBA1064D73E0E7EB92BED0DA0 /* PFInstallationIdentifierStore_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationIdentifierStore_Private.h; path = Parse/Internal/Installation/InstallationIdentifierStore/PFInstallationIdentifierStore_Private.h; sourceTree = "<group>"; }; + F105D77D5F0461FECD9BAEB70A50AE87 /* PFCurrentUserController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentUserController.h; path = Parse/Internal/User/CurrentUserController/PFCurrentUserController.h; sourceTree = "<group>"; }; + F129E4F0636DB79526F8F6270198B942 /* PFURLSessionUploadTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionUploadTaskDelegate.m; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionUploadTaskDelegate.m; sourceTree = "<group>"; }; + F19938456DF0C30C53CBE44847B3E479 /* PFCurrentConfigController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFCurrentConfigController.h; path = Parse/Internal/Config/Controller/PFCurrentConfigController.h; sourceTree = "<group>"; }; + F19CD8D613E04AF9291C97EC57B1C08D /* PFQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQuery.m; path = Parse/PFQuery.m; sourceTree = "<group>"; }; + F1B5BCEFFE5D1ED352C01484C83D6924 /* PFRESTObjectCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTObjectCommand.h; path = Parse/Internal/Commands/PFRESTObjectCommand.h; sourceTree = "<group>"; }; + F22636EFE5E1A5651E0A1520C5F281E5 /* BFCancellationTokenRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BFCancellationTokenRegistration.h; path = Bolts/Common/BFCancellationTokenRegistration.h; sourceTree = "<group>"; }; + F22BFE44135812D7404BBDAF34C010E3 /* BFAppLinkTarget.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkTarget.m; path = Bolts/iOS/BFAppLinkTarget.m; sourceTree = "<group>"; }; + F25269A960ACE3EBB3FE45F44DE4D5BC /* RKObjectMappingOperationDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMappingOperationDataSource.h; path = Code/ObjectMapping/RKObjectMappingOperationDataSource.h; sourceTree = "<group>"; }; + F2575C28B5137ABEB1B9557B34F3448C /* FBSDKLikeButtonPopWAV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKLikeButtonPopWAV.m; path = FBSDKShareKit/FBSDKShareKit/Internal/FBSDKLikeButtonPopWAV.m; sourceTree = "<group>"; }; + F288F2786DB87278DEB0D83B15A2B5B2 /* RKPathUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKPathUtilities.m; path = Code/Support/RKPathUtilities.m; sourceTree = "<group>"; }; + F29DD5432F60CE09614541D4BE9A4FB8 /* PFPropertyInfo_Runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Runtime.h; path = Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h; sourceTree = "<group>"; }; + F2ACCE7F5437F868E4BA7E2A0C645D43 /* RKDotNetDateFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKDotNetDateFormatter.h; path = Code/Support/RKDotNetDateFormatter.h; sourceTree = "<group>"; }; + F2D002F7CD0CB8A3551420036A594D40 /* FBSDKIcon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKIcon.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKIcon.m; sourceTree = "<group>"; }; + F2FBDEBC39B29A9DA41247E2D96331E6 /* RestKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RestKit.h; path = Code/RestKit.h; sourceTree = "<group>"; }; + F3BB79D7E31BCBC04BA5D076D3B1A9BC /* RKTestHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestHelpers.h; path = Code/Testing/RKTestHelpers.h; sourceTree = "<group>"; }; + F3D3B7CDCE9EF138FF8BB043F7239498 /* POPAnimationEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = POPAnimationEvent.h; path = pop/POPAnimationEvent.h; sourceTree = "<group>"; }; + F42B1B0D93B9783D48D27AAF873BC978 /* FBSDKShareOpenGraphValueContainer+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareOpenGraphValueContainer+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h"; sourceTree = "<group>"; }; + F44E8E904E1CD028316E671E43453DCE /* FBSDKBridgeAPIRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPIRequest.m; sourceTree = "<group>"; }; + F48BCECC8EA184F5975C3532819CFFA2 /* FBSDKDialogConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKDialogConfiguration.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKDialogConfiguration.h; sourceTree = "<group>"; }; + F4B09A465BA0ED9168954ACE5D869AD1 /* RKRequestDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKRequestDescriptor.m; path = Code/Network/RKRequestDescriptor.m; sourceTree = "<group>"; }; + F4EC41878B622B137CC4B622FC53F3ED /* RKObjectMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKObjectMapping.h; path = Code/ObjectMapping/RKObjectMapping.h; sourceTree = "<group>"; }; + F51B8874D2E27F0F4E6BB3A745216087 /* PFDefaultACLController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDefaultACLController.m; path = Parse/Internal/ACL/DefaultACLController/PFDefaultACLController.m; sourceTree = "<group>"; }; + F51C083C4D1E3AAFE06A8F4BDF8EBB88 /* AFXMLRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFXMLRequestOperation.h; path = AFNetworking/AFXMLRequestOperation.h; sourceTree = "<group>"; }; + F6F4C2DDD2D3755D276BC06E4C5B319E /* BFTaskCompletionSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFTaskCompletionSource.m; path = Bolts/Common/BFTaskCompletionSource.m; sourceTree = "<group>"; }; + F6FB42658DA37641EE0F5D6EE5236722 /* RKTestNotificationObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestNotificationObserver.m; path = Code/Testing/RKTestNotificationObserver.m; sourceTree = "<group>"; }; + F7114C7234DA9F23563BF6C254E6458A /* FBSDKBridgeAPIProtocolWebV1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKBridgeAPIProtocolWebV1.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV1.h; sourceTree = "<group>"; }; + F7EEEC622363411316A89CF3A6941695 /* YALFoldingTabBar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YALFoldingTabBar.h; path = FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.h; sourceTree = "<group>"; }; + F83D6439675ABF2D6040C5D9F2FFF217 /* YALFoldingTabBar.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YALFoldingTabBar.m; path = FoldingTabBar/View/FoldingTabBar/YALFoldingTabBar.m; sourceTree = "<group>"; }; + F87C75C1F03CFABBB54EC631815288C0 /* FBSDKGraphRequest+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKGraphRequest+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequest+Internal.h"; sourceTree = "<group>"; }; + F8B8D967E928682C85109A85124DEEC4 /* PFRESTSessionCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTSessionCommand.h; path = Parse/Internal/Commands/PFRESTSessionCommand.h; sourceTree = "<group>"; }; + F918BC0806DF4B41E1EF8762440B3FAF /* PFOperationSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFOperationSet.h; path = Parse/Internal/Object/OperationSet/PFOperationSet.h; sourceTree = "<group>"; }; + F970BE5082817C3185CB918CBDAFE49B /* libTransitionKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libTransitionKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + F9A0A5F9F3C3457E2ECD91932E225F1F /* PFURLSession_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFURLSession_Private.h; path = Parse/Internal/Commands/CommandRunner/URLSession/Session/PFURLSession_Private.h; sourceTree = "<group>"; }; + F9C6A17A0DB2E5C15C0B38508DC16669 /* PFLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogger.h; path = Parse/Internal/PFLogger.h; sourceTree = "<group>"; }; + F9DBE01AF3666AF5DF673F0B8302A852 /* FBSDKAppLinkUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppLinkUtility.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKAppLinkUtility.m; sourceTree = "<group>"; }; + F9E40B348CF74929CFC2ED015A0099CE /* PFObjectSubclassingController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassingController.m; path = Parse/Internal/Object/Subclassing/PFObjectSubclassingController.m; sourceTree = "<group>"; }; + F9F517D67552371A385D10A6D780C46C /* PFObjectController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectController.m; path = Parse/Internal/Object/Controller/PFObjectController.m; sourceTree = "<group>"; }; + FA60E1C8D40A78F03AAD7CA1CAE03991 /* FBSDKBridgeAPICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPICrypto.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/FBSDKBridgeAPICrypto.m; sourceTree = "<group>"; }; + FB1CFA906E2A5ECA69FDBCAC00497F72 /* PFRESTAnalyticsCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFRESTAnalyticsCommand.m; path = Parse/Internal/Commands/PFRESTAnalyticsCommand.m; sourceTree = "<group>"; }; + FB3A9DED47A72521C01855CCB13A10EA /* BFMeasurementEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFMeasurementEvent.m; path = Bolts/iOS/BFMeasurementEvent.m; sourceTree = "<group>"; }; + FB90E78B06FCB922FD3083DB6AFE5ECA /* PFPushChannelsController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushChannelsController.m; path = Parse/Internal/Push/ChannelsController/PFPushChannelsController.m; sourceTree = "<group>"; }; + FBB3B5641F66495915C56779C21569E7 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "AFNetworking/UIImageView+AFNetworking.h"; sourceTree = "<group>"; }; + FBBB3B26B24BB1791ACE441DFDA19FF2 /* TKEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TKEvent.m; path = Code/TKEvent.m; sourceTree = "<group>"; }; + FBEB6D4BDCEFC529A9705D5228053B04 /* RKMappingErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingErrors.h; path = Code/ObjectMapping/RKMappingErrors.h; sourceTree = "<group>"; }; + FBFE9966A9FB854C5D85375D24F936C5 /* CATransaction+TransactionWithAnimationsAndCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CATransaction+TransactionWithAnimationsAndCompletion.h"; path = "FoldingTabBar/Category/CATransaction/CATransaction+TransactionWithAnimationsAndCompletion/CATransaction+TransactionWithAnimationsAndCompletion.h"; sourceTree = "<group>"; }; FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - FD20928F422E57B36F0AF7C03A285F25 /* PFUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUser.m; path = Parse/PFUser.m; sourceTree = "<group>"; }; - FD283F04FC1522E51E474E074287984C /* PFQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryController.h; path = Parse/Internal/Query/Controller/PFQueryController.h; sourceTree = "<group>"; }; - FDE18DC658FE492CB30B98AA058CD6FA /* FBSDKGraphRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKGraphRequest.m; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequest.m; sourceTree = "<group>"; }; - FDFB0625E5A8DE395A3BCB617FCD612D /* PFNullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFNullability.h; path = Parse/PFNullability.h; sourceTree = "<group>"; }; - FE161616D496831D4089B8F6813DBE39 /* FBSDKServerConfigurationManager+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKServerConfigurationManager+Internal.h"; path = "FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager+Internal.h"; sourceTree = "<group>"; }; - FE17A124811A1964D6CA532CA4312C8C /* FBSDKBridgeAPIProtocolWebV2.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKBridgeAPIProtocolWebV2.m; path = FBSDKCoreKit/FBSDKCoreKit/Internal/BridgeAPI/ProtocolVersions/FBSDKBridgeAPIProtocolWebV2.m; sourceTree = "<group>"; }; - FE19DAED716CA2A2722DED05F8DB92B4 /* FBSDKShareOpenGraphValueContainer+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBSDKShareOpenGraphValueContainer+Internal.h"; path = "FBSDKShareKit/FBSDKShareKit/Internal/FBSDKShareOpenGraphValueContainer+Internal.h"; sourceTree = "<group>"; }; - FE83EAA7D7F81F996C8A1FCC962D6EED /* BFAppLinkReturnToRefererController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFAppLinkReturnToRefererController.m; path = Bolts/iOS/BFAppLinkReturnToRefererController.m; sourceTree = "<group>"; }; - FF107198F4983B8531483E65440A0F15 /* FBSDKTimeSpentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKTimeSpentData.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKTimeSpentData.h; sourceTree = "<group>"; }; - FF5EAF38BE17B63D9DB9D69544387A2B /* FBSDKAppGroupJoinDialog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSDKAppGroupJoinDialog.m; path = FBSDKShareKit/FBSDKShareKit/FBSDKAppGroupJoinDialog.m; sourceTree = "<group>"; }; - FF68CFC1D62A76A5756770DE83EAC745 /* PFConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFConstants.m; path = Parse/PFConstants.m; sourceTree = "<group>"; }; - FF93EF6EEE6883E55F75A0465EC5735F /* RKTestNotificationObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKTestNotificationObserver.h; path = Code/Testing/RKTestNotificationObserver.h; sourceTree = "<group>"; }; + FCB8001E15C66CA1A4ADC3B7AB26C08D /* PFFileStagingController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFileStagingController.h; path = Parse/Internal/File/Controller/PFFileStagingController.h; sourceTree = "<group>"; }; + FCDD09913DC7F28BA260222EED8670BE /* PFUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFUser.h; path = Parse/PFUser.h; sourceTree = "<group>"; }; + FD07183D5459C1861CCC80EC5514A9AA /* RKMappingOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RKMappingOperation.h; path = Code/ObjectMapping/RKMappingOperation.h; sourceTree = "<group>"; }; + FD8688B0EFB589FA74DDBEE72083D4A3 /* PFACL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFACL.m; path = Parse/PFACL.m; sourceTree = "<group>"; }; + FDF375C76C5BA4A7F1EA1C46DC3B142C /* FoldingTabBar-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FoldingTabBar-dummy.m"; sourceTree = "<group>"; }; + FE3AAD9A2F31FBC9D00D7715F65FDB26 /* libpop.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpop.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FE58183D7C1721963488765C5C8C2AC5 /* PFObjectSubclassInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectSubclassInfo.h; path = Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.h; sourceTree = "<group>"; }; + FE71E48A323238BEC2BB8D62940ED886 /* PFPush.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPush.h; path = Parse/PFPush.h; sourceTree = "<group>"; }; + FE89E1667DF47EC79AB1E8C414DE79EB /* FBSDKGraphRequestConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKGraphRequestConnection.h; path = FBSDKCoreKit/FBSDKCoreKit/FBSDKGraphRequestConnection.h; sourceTree = "<group>"; }; + FEE6386026272731739CFEE82C813032 /* FBSDKViewImpressionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSDKViewImpressionTracker.h; path = FBSDKCoreKit/FBSDKCoreKit/Internal/UI/FBSDKViewImpressionTracker.h; sourceTree = "<group>"; }; + FF461E4535F2215F6A9DDAA832E1BC7F /* RKTestHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RKTestHelpers.m; path = Code/Testing/RKTestHelpers.m; sourceTree = "<group>"; }; + FF57BE3A8EF2D78A282E7FEE79783DB3 /* PFURLConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLConstructor.m; path = Parse/Internal/HTTPRequest/PFURLConstructor.m; sourceTree = "<group>"; }; + FF5B972C0D2221C57AE6060DE6C9A600 /* FoldingTabBar.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FoldingTabBar.xcconfig; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -1917,79 +2032,79 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 4401489EF5E0F90A00960F1C61D98D00 /* Frameworks */ = { + 4B6ED4A1B1BED7DD189B582654C25EB6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BB166C005FECECA9EEC18109D86F3CE6 /* Foundation.framework in Frameworks */, + D8B32C5FF3597EEDD220A394295B194B /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4B6ED4A1B1BED7DD189B582654C25EB6 /* Frameworks */ = { + 4B6FCC51F24F6991AAA4CC61597FD2DA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D8B32C5FF3597EEDD220A394295B194B /* Foundation.framework in Frameworks */, + 8D9641967C1ACD51CE3ACACF1B1D2860 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4B6FCC51F24F6991AAA4CC61597FD2DA /* Frameworks */ = { + 5585D11E7E0A5A702DA209671365FADF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8D9641967C1ACD51CE3ACACF1B1D2860 /* Foundation.framework in Frameworks */, + AAB25408151750ECBBDAD5A765D5C652 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6772349FF73FC6301A658A55439FAB73 /* Frameworks */ = { + 633F46B6757F8B68507D56B231750794 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0277D1C85C0C1E1358C7AAD044B40757 /* Foundation.framework in Frameworks */, + 3D9DF25BBCE11AC3A9A684C418F6C89F /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8303124DDA063FE89C9AEFC94E6AB54E /* Frameworks */ = { + 63458E103C17B332F0872EC549B57894 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0D0CFD86DC5D95BB25D65B84461D031B /* Foundation.framework in Frameworks */, + A3C1C7BA97AC39DFAB85B13E827BD182 /* CFNetwork.framework in Frameworks */, + 20A2B211D75692571DE1A418220365D2 /* Foundation.framework in Frameworks */, + 89BD9A798D541EC62FA93EDC9B45CFAA /* MobileCoreServices.framework in Frameworks */, + DA62A034CB079FDF722A66A09E878E5E /* Security.framework in Frameworks */, + 8D606E6C43F0BE373F14A15848E78FE8 /* SystemConfiguration.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - AB6236FDABEA71A344A72311A20E9129 /* Frameworks */ = { + 6772349FF73FC6301A658A55439FAB73 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 60F370DA778C2C58337885BA2E21047C /* Foundation.framework in Frameworks */, + 0277D1C85C0C1E1358C7AAD044B40757 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - CA3A57779CCE39F4B6C39B2E0BD75892 /* Frameworks */ = { + 8303124DDA063FE89C9AEFC94E6AB54E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 06B899F5B92A7366CDCCD71E3C28E039 /* CFNetwork.framework in Frameworks */, - 1CF19FB5FE95E9F9BB9D9249F8A28276 /* Foundation.framework in Frameworks */, - 0A444B70A312CB6B95D395C0CC7CD98F /* MobileCoreServices.framework in Frameworks */, - 350EB8FBF8DEF90D9AF0E48E068BFA92 /* Security.framework in Frameworks */, - B8E9E3E768F9393C56CCF30EF6E92D76 /* SystemConfiguration.framework in Frameworks */, + 0D0CFD86DC5D95BB25D65B84461D031B /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D3AB408B503F4AE1027F1851D3201F2E /* Frameworks */ = { + AAABAAEC6D245621B8DDE1ACF9BB7918 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9D8A1173432B3D5D943B800A5A5E080C /* Foundation.framework in Frameworks */, + 4172EFFB5E73F4A2625FDD8790ADA86F /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D6260A8A745BE7433644EE05C6F9EE0A /* Frameworks */ = { + AB6236FDABEA71A344A72311A20E9129 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 09B7E2F7D97660C4794BE77A6D3F805A /* Foundation.framework in Frameworks */, + 60F370DA778C2C58337885BA2E21047C /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2019,6 +2134,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F1E353087C983AF68F393D9A09D83CDA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + AFC9F60694818B7903ED6065CA9E7E38 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; FF1132C1F746513DE93738ED48AFAB38 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -2034,6 +2157,17 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 030A5B3E44F0F6E57B1380DD185339D1 /* Support Files */ = { + isa = PBXGroup; + children = ( + E0BEF4CC671BA1E579779C38712DC769 /* FBSDKShareKit.xcconfig */, + EAA5D41EBB47944D263EB028AA677026 /* FBSDKShareKit-dummy.m */, + 7A71B1896C184DD250A8FB4EF534051E /* FBSDKShareKit-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/FBSDKShareKit"; + sourceTree = "<group>"; + }; 037C0CA694176A3C0915F62C9D20B3E6 /* Targets Support Files */ = { isa = PBXGroup; children = ( @@ -2042,293 +2176,728 @@ name = "Targets Support Files"; sourceTree = "<group>"; }; - 04461214A708CDEEF3A5C282A64ACD80 /* Resources */ = { + 072B748C4ABC47FF5DD09E14AFCFA80C /* Bolts */ = { isa = PBXGroup; children = ( - C0CF8B831B45A8AE37417FB01F6EE72A /* en.lproj */, + F7647B87DD09DE1D36642AA78D579180 /* AppLinks */, + AB60DD59D35FBC4FEF669D67E4191C38 /* Support Files */, + 4380A3F473F199836A3C72502983239A /* Tasks */, ); - name = Resources; + path = Bolts; sourceTree = "<group>"; }; - 0E07C05DC93911C736F9163ED8A5612E /* Products */ = { + 0BFBFBF37DD4FBC676345E304C5B6CE7 /* Testing */ = { isa = PBXGroup; children = ( - 54BA28BB9CDEB01C1E6CE26A23783B3F /* libAFNetworking.a */, - CBA3A41947E01023E459EDEF3961C5B6 /* libBolts.a */, - 62B1C84DAFBA62E9315595E2052A8728 /* libFBSDKCoreKit.a */, - 54343AE2C02ECF5E183700CB786869CB /* libFBSDKLoginKit.a */, - 91E3599579258E326AC94189503BED96 /* libFBSDKShareKit.a */, - A634E305E726A2D18B89914E5F8909D3 /* libFoldingTabBar.a */, - 9C2BCF9C99AEDE045D2BBFA1DF8CC208 /* libISO8601DateFormatterValueTransformer.a */, - 84AD6D354E9C8F6B153ED2A34AC28FAC /* libParse.a */, - 2C197AC911176562F9C82890218D2927 /* libPods.a */, - 424AE54B9E9D6A204E25E68A391EAC5C /* libRestKit.a */, - CD540DA6FE69BCC3A353182F52EFE0BF /* libRKValueTransformers.a */, - CCF08CD19CC8E81472432439E658917F /* libSOCKit.a */, - 0711E2059F93A9DCBD5B583B9A11D2F5 /* libTransitionKit.a */, + 4C7FFDC2B7A4F0D5C315F44B0165D091 /* RKBenchmark.h */, + 4F6B679BDA82770D971194798F95DC69 /* RKBenchmark.m */, + EA4EBDCE8C9C8A5582D7231A544E96A8 /* RKConnectionTestExpectation.h */, + 7BC4913285E98A56C951839A999352AB /* RKConnectionTestExpectation.m */, + CA3CB4DD07E35F520C793BA9032F51FC /* RKMappingTest.h */, + 817589AA5C8BA17E8B2F9808EC23788B /* RKMappingTest.m */, + 10FAFCCD6FB4FC9E877FCB27902EA1F7 /* RKPropertyMappingTestExpectation.h */, + 20B291B44372ECD90FA4961CB9F9C9C4 /* RKPropertyMappingTestExpectation.m */, + 6A986FCBAFF66C34031E230F059A2DCF /* RKTestConstants.m */, + 7EE2EBDC54FDE1E50CD9A33DDF48404D /* RKTestFactory.h */, + 530B742954AE4C60876DC3128D82F154 /* RKTestFactory.m */, + D5B2F6DAB138D6C0AFB76C250456D0A9 /* RKTestFixture.h */, + BF6BCF95270D89143AE2BD11E8C58467 /* RKTestFixture.m */, + F3BB79D7E31BCBC04BA5D076D3B1A9BC /* RKTestHelpers.h */, + FF461E4535F2215F6A9DDAA832E1BC7F /* RKTestHelpers.m */, + 0EDCBE9EDEE91346EC864E690AF4D08E /* RKTestNotificationObserver.h */, + F6FB42658DA37641EE0F5D6EE5236722 /* RKTestNotificationObserver.m */, + B25EAE7B7171B287489EDA0C0A129426 /* Testing.h */, ); - name = Products; + name = Testing; sourceTree = "<group>"; }; - 32E52DBF68DD0A7BC5494B503C88C62A /* RestKit */ = { + 102D02B51D25F8C5C815B69B7CB61B08 /* Support */ = { isa = PBXGroup; children = ( - 4182CACC1DDBA19305C1FAB586BB627E /* Network */, - B26581610BB70A9CA9939B308037AB3B /* ObjectMapping */, - D1027468D8455255D7B8844321D9376E /* Support */, - 6B14877BDD14A1CFCF73960813DBE594 /* Support Files */, - 6C0CFA49494A8874225CD6BE0417E474 /* Testing */, + 3C6C852E7C915FBEDD2E5B3C2CDD20A8 /* lcl_config_components_RK.h */, + 18811D86AFD569DE58C69DE2D674A00D /* lcl_config_extensions_RK.h */, + C3B87B3E4AC8A18214858CF42A599D50 /* lcl_config_logger_RK.h */, + D284CA3DDD91571D70CF7256A3C248FE /* lcl_RK.h */, + 997269FD4178F2BC0707886B0C405A8D /* lcl_RK.m */, + F2FBDEBC39B29A9DA41247E2D96331E6 /* RestKit.h */, + B5AA14CFC28475D9E28E32A363674B8F /* RKDictionaryUtilities.h */, + 611F4CE6ED5017088CB427383A3D1445 /* RKDictionaryUtilities.m */, + F2ACCE7F5437F868E4BA7E2A0C645D43 /* RKDotNetDateFormatter.h */, + 57A42437229DCF10EA2D792B45EC0449 /* RKDotNetDateFormatter.m */, + 2E3E506FDF95C78237F089FED94DAB76 /* RKErrors.h */, + C31FC859AAD2E2012636FC6B877D6EB6 /* RKErrors.m */, + E8A3F0FA2907B71EC0DCB074D0E32D52 /* RKLog.h */, + 667F8446CCEAF60B9DCD4E68CCB9ED5E /* RKLog.m */, + EE16E8E41B610CE73E8BC061D6E6E102 /* RKLumberjackLogger.h */, + 6AFF7959F2290BD0027C49FBA305DFE5 /* RKLumberjackLogger.m */, + F09DC66B579DD76F90EDE78627D95BB3 /* RKMacros.h */, + 6AD9092DA1F9CCC04506CAA7CAD0EC83 /* RKMIMETypes.h */, + 2E4DB2AB05ABDFB2096CBD1A0D1C960A /* RKMIMETypes.m */, + 93EE612E26F15D494EE5870F082534C2 /* RKMIMETypeSerialization.h */, + DDB0E62AEBB7CEA6AAB32321B17C4DA4 /* RKMIMETypeSerialization.m */, + 8275725385A9F6C10AF8B7A642A129F8 /* RKNSJSONSerialization.h */, + 8FB19F616008A121FAA50E14B62D67A0 /* RKNSJSONSerialization.m */, + 7E668F82944D74008FA69DF68A0E96F9 /* RKOperationStateMachine.h */, + 4A3FF0A4A486E57DD176B3DF5F619173 /* RKOperationStateMachine.m */, + 4EB1F29228069356CCA0E5D8E0C8DA3C /* RKPathUtilities.h */, + F288F2786DB87278DEB0D83B15A2B5B2 /* RKPathUtilities.m */, + 5E0DB2127804727AC549721870914323 /* RKSerialization.h */, + 9766DA2E569D10FE157FA2E355CC9802 /* RKStringTokenizer.h */, + 2562927BDB580A25FD1C5DE23213DD83 /* RKStringTokenizer.m */, + 10D33DBF4C307AD2EA9D10FA2001F6E0 /* RKURLEncodedSerialization.h */, + 3F756E1A3BA52E99D6635DE49C0331CB /* RKURLEncodedSerialization.m */, + 9ADB5C6CFDD59CB906870DA9025B3B8A /* Support.h */, ); - path = RestKit; + name = Support; sourceTree = "<group>"; }; - 36F3E3D009A33DE3EB27FA31CBCE358C /* iOS */ = { + 1ABD97751947F20E67D4F852B3655259 /* Parse */ = { isa = PBXGroup; children = ( - 3849FCCD9604B569E0277015CC30071D /* AudioToolbox.framework */, - 733D51F628A8649F5A0790296BA3E42A /* CFNetwork.framework */, - EEBA4E2BFC884C1F4B170F5BC7DE8B77 /* CoreGraphics.framework */, - 1E3783F1A59CCE93EEF653593AFAD5B5 /* CoreLocation.framework */, - FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */, - E62E80C06B8D2394C56D10220D1CCB6F /* MobileCoreServices.framework */, - B0F29E0D66F63131F371330D93CB4583 /* QuartzCore.framework */, - 6114EBA3A5CB7CB8ECE0A9BEFA6DB026 /* Security.framework */, - C758B84874FBB01F1E2CE355BEA77660 /* StoreKit.framework */, - 16621039C0E3312C216165BEF8D567DE /* SystemConfiguration.framework */, - B6FDEF44D035ECEB171CF49BE68D54D0 /* UIKit.framework */, + 882472CF6BA62D86D2BF8542B479D3CB /* BFTask+Private.h */, + 2F0F7C3B1D42E74B34C118D7F55D56DC /* BFTask+Private.m */, + D8C9CB701E4F6C654174000392CF24D9 /* Parse.h */, + D1B966C2A921DE73042AA8B317E629EA /* Parse.m */, + 503253CFCA3206291EBDFF00B0FDE5BF /* Parse_Private.h */, + 749A8D41E182E9883688C41D2D257554 /* ParseInternal.h */, + 23397924D53E7B536CB59C3373E47BCC /* ParseManager.h */, + 02AEBA17B69A4D55F659D4F44440127E /* ParseManager.m */, + BD6DD4F4195C174C8DC06D3C85DDF8A8 /* ParseModule.h */, + 67B4C66668FC14A61182B73575A193DE /* ParseModule.m */, + B934A04F1A258C2A0713237E8C4DB79E /* PFACL.h */, + FD8688B0EFB589FA74DDBEE72083D4A3 /* PFACL.m */, + C4DAAE6C562288FB95B1415AF6763317 /* PFACLPrivate.h */, + 95C137F2DF407C83936DE0B2BB3D6F86 /* PFACLState.h */, + 62BEED70070D14A0FF9C95200AA22741 /* PFACLState.m */, + 7B6054861B48456D5D8D1E661F92EE5D /* PFACLState_Private.h */, + 5EEF5F821C5CAF35FB96774AFF53120A /* PFAlertView.h */, + 9FBA963311C705B8BC3B0E2FC0EB8529 /* PFAlertView.m */, + D4AB7EDD51484D69712FC0BAF2EEFB20 /* PFAnalytics.h */, + D9283FF2298CF4AB76D39E0BB4601791 /* PFAnalytics.m */, + BC07203CD82FF286D245D3A0306E62C5 /* PFAnalytics_Private.h */, + 3D9C8B62E94BADCE53C2B3A336B91A66 /* PFAnalyticsController.h */, + 77DB8925A606DF13F24DBF2AD343EB8D /* PFAnalyticsController.m */, + B6CBDBFAF7E5AFEF7AE3D397FB6EE762 /* PFAnalyticsUtilities.h */, + 32584F1C40CC0FB3ACD703733332AA08 /* PFAnalyticsUtilities.m */, + 36C75B01624E2DCB9059D7ABADC2B668 /* PFAnonymousAuthenticationProvider.h */, + D46B8631F4A20A30B5C1E47D9F2A6FEB /* PFAnonymousAuthenticationProvider.m */, + 13B2A7FD3B5E9C5F68CC0E991780A0EC /* PFAnonymousUtils.h */, + 2AA9ED123D1A01B9CE0864DF21669E32 /* PFAnonymousUtils.m */, + ECE23EA20C48234573BE370B97423C3A /* PFAnonymousUtils_Private.h */, + E516EBEC7356A04879F93CDEB1C0A839 /* PFApplication.h */, + B78A7E4B40882223B829568BDECFF65F /* PFApplication.m */, + 7C7BBFE7402E447E0363B1BF78CFD3A0 /* PFAssert.h */, + 7BB5593B161ABABA1D0209ECA5074EA3 /* PFAsyncTaskQueue.h */, + 5BEC90C5581726DE80B840585A9F4174 /* PFAsyncTaskQueue.m */, + 0A7261E40A7493778EDD34738B42676E /* PFBase64Encoder.h */, + 8E39257A1062D3B3E8CA265E73AF9795 /* PFBase64Encoder.m */, + AAB9F7182025D4FEB1027A192204588E /* PFBaseState.h */, + 4CDDA61BB7A1F8AD65676757226E8A74 /* PFBaseState.m */, + 9152B5335813665EC6B08F73411A813E /* PFCachedQueryController.h */, + 2AECAEEB58E4CB5EFF8D61951BC17DB1 /* PFCachedQueryController.m */, + 1747B6933EBB45F17399984642773739 /* PFCategoryLoader.h */, + 9AA9561725BB1FB9134A92D8DC5A504B /* PFCategoryLoader.m */, + EC54205F1719C5C45D60A2253F84C5ED /* PFCloud.h */, + 37382D15DA0BBCC18167A1B61E72CD64 /* PFCloud.m */, + 74B44F24917A72CA781246EA2632A00C /* PFCloudCodeController.h */, + E758F865F37D77788EE4B4551EF1487D /* PFCloudCodeController.m */, + 36C8AD8E2390F415DC7425C9734EFAFB /* PFCommandCache.h */, + 999823937ADC925F2F63F241A5995EFE /* PFCommandCache.m */, + B8C1F1B3446748EE4B4240C0CC009D67 /* PFCommandCache_Private.h */, + 45A41F6A2E3BF848EF5F335556B27EC1 /* PFCommandResult.h */, + 6273DBD91B70BE5A81E0EF6B816A31E1 /* PFCommandResult.m */, + 5ED668482FAFCC7E2F744E4B45E21C00 /* PFCommandRunning.h */, + A94107D173054A31E231EA3E081AC080 /* PFCommandRunning.m */, + 34467D773B15C784E43F77DA67A5790C /* PFCommandRunningConstants.h */, + 26A9C85767DC8FE594E7F2DF14F867B2 /* PFCommandRunningConstants.m */, + C2DF84BAF1C49F7A7466D1F88D650A50 /* PFCommandURLRequestConstructor.h */, + 87EE4B2AFFD85E9F75C94F5661D717F2 /* PFCommandURLRequestConstructor.m */, + 2DA32C8430B17D1CEF6CC0C2F20702C6 /* PFConfig.h */, + 163A2E68515F17EBB397973CE01A2E02 /* PFConfig.m */, + 58DD77FFA76457DC7826A465EB970094 /* PFConfig_Private.h */, + 6447BB55EEB3096AE38B4D07B1F5F620 /* PFConfigController.h */, + E1F89AA6B095AAB2C7CEB2BEAC5A7F1B /* PFConfigController.m */, + 1516B2B4A8F91019AE5E4283AA8F5E5D /* PFConstants.h */, + 4F70D98B41C9E7EEBC1231E9885224AA /* PFConstants.m */, + D8EF0F918739185C24D9BE7DDED005BB /* PFCoreDataProvider.h */, + 83C5E9FB336C0917EC02E4034B2B66FE /* PFCoreManager.h */, + 0FD81CD43134464279746BA1F66D5A48 /* PFCoreManager.m */, + F19938456DF0C30C53CBE44847B3E479 /* PFCurrentConfigController.h */, + 012EA998B79C045DB5F3DF0D066F78B1 /* PFCurrentConfigController.m */, + 2572DB6B289BFC9AA6F1D1DCFF16D994 /* PFCurrentInstallationController.h */, + 40AB5DCC80577C96F4732C2FA58B903D /* PFCurrentInstallationController.m */, + 658BD9C8EBCC6CE298417312A7B194FF /* PFCurrentObjectControlling.h */, + F105D77D5F0461FECD9BAEB70A50AE87 /* PFCurrentUserController.h */, + 6FF8DA1F7EEE96CC61CEEB687513A615 /* PFCurrentUserController.m */, + D9F9A1B8EB6CBAF33BDC895542AB64E9 /* PFDataProvider.h */, + 4035095FBC067B91C5DECADD26277EB1 /* PFDateFormatter.h */, + 99B423A79E8F8A42FC5D676612B33E2F /* PFDateFormatter.m */, + E2C63AFAC34B0E794D2603EF0F27DF0E /* PFDecoder.h */, + 11575C24EBD20B38803926830ED63640 /* PFDecoder.m */, + 951E09F02C4842CACF36CAD6D5398E11 /* PFDefaultACLController.h */, + F51B8874D2E27F0F4E6BB3A745216087 /* PFDefaultACLController.m */, + DC4C06AF4A9CCA7E3F9A2C7F97FFCE87 /* PFDevice.h */, + 0BAE999CCCB6D83C2D4DFA288FE9C7BF /* PFDevice.m */, + 8837B1CB6DAF343BD8C545163EA2DA58 /* PFEncoder.h */, + 07D8A98D56E6D538D6FA0B232BBCBA03 /* PFEncoder.m */, + E5FEF8F1937676245479BD46246EE956 /* PFErrorUtilities.h */, + D4F5FFBEC5EF679476BD610B31B04B36 /* PFErrorUtilities.m */, + 7AAB2C033ACD2C5EDF5AFECCDE5BC95D /* PFEventuallyPin.h */, + 98262DA8D9F983FFA347D99C232021E5 /* PFEventuallyPin.m */, + A43A3FE9CF5B7E721E9179EB461EBDD7 /* PFEventuallyQueue.h */, + 41BB788E886BFA89367834A4426A765E /* PFEventuallyQueue.m */, + 33D917AEA2C6B3BD1FB6DE5E32B94689 /* PFEventuallyQueue_Private.h */, + 97D4677BC9F2D88DF946E204DF242D38 /* PFFieldOperation.h */, + 91E9125BDC1505BCE865985502732B9D /* PFFieldOperation.m */, + 5AAE8E50B932782D92F325DCE2EDEBBB /* PFFieldOperationDecoder.h */, + 1ABF2667D317A8E92F4DAB58CAEEB37A /* PFFieldOperationDecoder.m */, + 9CDD229A4ED63D296862C7CC3E93D079 /* PFFile.h */, + E3F194E608C0A87A1EA1DBA9B49CDFC8 /* PFFile.m */, + 6D298D539E71478D6340E3FA832E4778 /* PFFile_Private.h */, + 3FE19DF082B2711D3D79E3BDF50FA146 /* PFFileController.h */, + 39F780E56F26B16CAF1CF2F0EBC58660 /* PFFileController.m */, + 49BFECAFEA1EF171D5BA9CFAFE63B895 /* PFFileDataStream.h */, + D24D9A1393699B9007901EB5221D9018 /* PFFileDataStream.m */, + B818BE16D0901DD3F720DF4447B592B0 /* PFFileManager.h */, + C0773511F8B57D80E82BBCED6576C5D2 /* PFFileManager.m */, + FCB8001E15C66CA1A4ADC3B7AB26C08D /* PFFileStagingController.h */, + E4865AB05BFD84B7B6E65342C643E18E /* PFFileStagingController.m */, + 3F16209AB717FBAFF4C2730320EF9840 /* PFFileState.h */, + 4FD94F67395BDA44DD37B2CEBB86BB64 /* PFFileState.m */, + EC599B21BE1C0853A0234AD38F8FC07E /* PFFileState_Private.h */, + 40DC3C427F03295338C11BDDD89C3D2A /* PFGeoPoint.h */, + 6B650BB26CA49F23280F611BC06CAB7A /* PFGeoPoint.m */, + 407C402A54C0C81D42BEA7147982FA35 /* PFGeoPointPrivate.h */, + 0A1EA9C9D41AE2090A25AEB7774EFF7F /* PFHash.h */, + DA1BD0504C0DB02DE656D603F622159C /* PFHash.m */, + 209E38BB2ADFFA4C0E2497F629810AEB /* PFHTTPRequest.h */, + 5733C650048839167646DC7974A01ABA /* PFHTTPURLRequestConstructor.h */, + 3BCD0EFCBE498C67A5B0097360333011 /* PFHTTPURLRequestConstructor.m */, + A51B1A321088E7B66FD0BCAE78FD96F9 /* PFInstallation.h */, + 892F0F257D5AF973E182934E5D03C911 /* PFInstallation.m */, + DCDABFE826ADB96F79D0DFB7BF9C4259 /* PFInstallationConstants.h */, + 22F77D342CCB58DBAA7457C6289C028C /* PFInstallationConstants.m */, + BC16505461748776619D43C6BDC6A703 /* PFInstallationController.h */, + 19393B003CB10D5DCBF525994DDE8462 /* PFInstallationController.m */, + 1FC50F7EF899B70145D9D7DB1F55E927 /* PFInstallationIdentifierStore.h */, + 79A12CFC76EC1B0BF26367E0922426FD /* PFInstallationIdentifierStore.m */, + F0E8603DBA1064D73E0E7EB92BED0DA0 /* PFInstallationIdentifierStore_Private.h */, + 9ABAB9B040DE06F9C8CAD85CCC2D4A4D /* PFInstallationPrivate.h */, + A3FBF62848DF8B263E30542353335091 /* PFInternalUtils.h */, + B16892D13DE46A8E0F04B376575D7B5C /* PFInternalUtils.m */, + 4BF07391CA6A2181CE0A3C3765B8F4BF /* PFJSONSerialization.h */, + 4F93FF0560F945FADCA311FD06CA31D3 /* PFJSONSerialization.m */, + 4C08FCA3A865F9181B3EAED5D081E6DB /* PFKeychainStore.h */, + 6674B326B12A30BE2A6BCDFC2F890324 /* PFKeychainStore.m */, + 7B754CD741EB603D2A92BACC3F38A430 /* PFKeyValueCache.h */, + E22A1C7E80FE2BA8CE59C7C924410D0E /* PFKeyValueCache.m */, + E043164BEB509D5E2D2B9698903390E7 /* PFKeyValueCache_Private.h */, + 0B0314DD062570E8416F2523D03B9EF6 /* PFLocationManager.h */, + 1804AEAE0A042ABB0AB0F3B3CCD54B2A /* PFLocationManager.m */, + F9C6A17A0DB2E5C15C0B38508DC16669 /* PFLogger.h */, + AEA3B8A0B629E223E8AD2FFCA8C65F21 /* PFLogger.m */, + B92B54D733F8824AD766092F58A3F50C /* PFLogging.h */, + 96EB5396864F3EE4D9E7D3994DBD1015 /* PFMacros.h */, + 6BBAD9DCAFF06BB669E8D77482B04BDB /* PFMulticastDelegate.h */, + 4FE71002F43E4EE07FF4CEB964FE6D44 /* PFMulticastDelegate.m */, + 4A5BA6A301883961C6DA165D6089A985 /* PFMultiProcessFileLock.h */, + 8F8116D4E8780C6E74C186A8402C69F9 /* PFMultiProcessFileLock.m */, + 5404656CDC7518E20D0C557EF9C53B63 /* PFMultiProcessFileLockController.h */, + 04E79E027951925EA1691B4B8E395973 /* PFMultiProcessFileLockController.m */, + 7E3480D6C7EF4C1D5B97238AFFE8D127 /* PFMutableACLState.h */, + 24B58875AADE4ED78AB3942781E1AECC /* PFMutableACLState.m */, + B93B968FDB3F20E1EB2FA742FA119F61 /* PFMutableFileState.h */, + 800204DFA7DE3E6060355FB89A24FEB1 /* PFMutableFileState.m */, + 924EED608166B7F9A30865D80A87407F /* PFMutableObjectState.h */, + B5D03113C677A7DDA961E0D9E46E949A /* PFMutableObjectState.m */, + 240CCFABDE66FE6ADE38A4B02CB89687 /* PFMutablePushState.h */, + 6DC8BFB1DFE3D689F572296A0DA6E236 /* PFMutablePushState.m */, + AA02D2B63E8F9A35484FF74BB175EDCF /* PFMutableQueryState.h */, + 4F9A3C84F3CC18CABCD97E1DFB774A49 /* PFMutableQueryState.m */, + 1B162D277A2037FD2A114DD8C9CB5922 /* PFMutableRelationState.h */, + 3ED50EE6CEF264393D61B359E4FD13BB /* PFMutableRelationState.m */, + 6D052546B61C8CA0E3EB34475BFB60D0 /* PFMutableUserState.h */, + 9E5A00420D365F9C27CF6F943E8EB990 /* PFMutableUserState.m */, + ADC8E7B23140B59FA2BE5667DEC580B9 /* PFNetworkActivityIndicatorManager.h */, + 9FE38696DEEE3653F1AF4FB0CA7BC07F /* PFNetworkActivityIndicatorManager.m */, + C303ED3A2C18CE2AAADCC69948039080 /* PFNetworkCommand.h */, + B27AB7689D28F34F8A9D466ACAB162DA /* PFNullability.h */, + C5363E7D4FF99528A9F857EE9F2DF437 /* PFObject.h */, + A12B03B24DC7C654F172A6A53E9C7603 /* PFObject.m */, + D1361066E091AA4FB6E9B94B50118177 /* PFObject+Subclass.h */, + ADBEDE77334D88F47F1AD897ECEFAC8D /* PFObjectBatchController.h */, + BC451FC53B248606339FEF2A083812CA /* PFObjectBatchController.m */, + 936E7B213612ECBF1630386CE6D7B1D2 /* PFObjectConstants.h */, + D0E010198F9F57F3C1F5251591AC52B6 /* PFObjectConstants.m */, + 8F8334729245B982D2786A77F61C281C /* PFObjectController.h */, + F9F517D67552371A385D10A6D780C46C /* PFObjectController.m */, + 10475FA9B1F63748681C1D95ED038819 /* PFObjectController_Private.h */, + 20512742319C64711FFF5148A7214E8D /* PFObjectControlling.h */, + EFC29774AABC76F1B26B97B146F2A1C9 /* PFObjectEstimatedData.h */, + 4DC337098F42B8A25439D02AF67102E7 /* PFObjectEstimatedData.m */, + ACE07B046AA72822B46EAC882E565640 /* PFObjectFileCoder.h */, + 45C1F3D82C36D976C5759677F623553F /* PFObjectFileCoder.m */, + 5E44BCC5A1A8313C135B429B4AA92FE8 /* PFObjectFileCodingLogic.h */, + 6FF111BF52B8C1648F8023FC642FF2C8 /* PFObjectFileCodingLogic.m */, + 1906627F9057BDB4DC26FC8D67A0AD0D /* PFObjectFilePersistenceController.h */, + 39D2341AC19A6B3AD747ABBF9D3A13E5 /* PFObjectFilePersistenceController.m */, + 7C114A540E5318937EFA769F5D2A5372 /* PFObjectLocalIdStore.h */, + 6426FFE9B7D5877E4580324A76A08178 /* PFObjectLocalIdStore.m */, + 31AE16032795BC110759FE0D71DD7F32 /* PFObjectPrivate.h */, + 81E010F8251FD4453C9DDE44ED09C4F4 /* PFObjectState.h */, + DC865D74F3C01339E7A0C969FDED834E /* PFObjectState.m */, + E37BF385DA04A9EDE7E17A3AD82FB48D /* PFObjectState_Private.h */, + FE58183D7C1721963488765C5C8C2AC5 /* PFObjectSubclassInfo.h */, + A7AAF29A747A53F757B1A76CF477460A /* PFObjectSubclassInfo.m */, + 6F2BB3EBFE218C47714938D29CF23EF9 /* PFObjectSubclassingController.h */, + F9E40B348CF74929CFC2ED015A0099CE /* PFObjectSubclassingController.m */, + D65E69134BE531C727A15EAC5D6BD404 /* PFObjectUtilities.h */, + C78765A1425D0F41319511A796357B1F /* PFObjectUtilities.m */, + 129476AE26D881F46C3F727D95A2D8EE /* PFOfflineObjectController.h */, + E53C7B0A7D27C453923DDE2311E75A27 /* PFOfflineObjectController.m */, + B6D4806630F08E4A693BB13FD80E2B85 /* PFOfflineQueryController.h */, + 136503C1BC94CD505033988EB9C16090 /* PFOfflineQueryController.m */, + 4EA63193596C0C6A36407E53BE350DC2 /* PFOfflineQueryLogic.h */, + 778D8D7F4CD22FFBC60450393224961A /* PFOfflineQueryLogic.m */, + C1D9153F43B4ABADD58C382A1292332B /* PFOfflineStore.h */, + 632C18854DE2E319E9B6834A93514CC5 /* PFOfflineStore.m */, + F918BC0806DF4B41E1EF8762440B3FAF /* PFOperationSet.h */, + 108401CAD15D4703C0D17F39835C74AE /* PFOperationSet.m */, + 60D3C2480A1362A32E373ED42790BD7C /* PFPaymentTransactionObserver.h */, + 1B6241CE08565BB6864AEF668F68FA18 /* PFPaymentTransactionObserver.m */, + 305A419FED9C718C8ACAE5D2F9173F27 /* PFPaymentTransactionObserver_Private.h */, + B3AE7C57230B414B51B418F0B88252FB /* PFPin.h */, + DAB59734D65B77DD76ADC6A7069BEFCA /* PFPin.m */, + A7540E284803A52212B2DE3FD4678F87 /* PFPinningEventuallyQueue.h */, + 131783F296EC8FE80CA0ACE2C3C056CC /* PFPinningEventuallyQueue.m */, + B70778A88E35241FD05E8017A5D78CFD /* PFPinningObjectStore.h */, + 82EA1A7E2F5B25D7DECB8BE35B3072F0 /* PFPinningObjectStore.m */, + 4920838C7C35EE540CFF086D92C435AC /* PFProduct.h */, + 5076A61842278BC01BD246CD9F6A6831 /* PFProduct.m */, + 4D18572FD7945CECB627B25FAFC28DF5 /* PFProduct+Private.h */, + E7909E9598E022C3C0A3969A59F14279 /* PFProductsRequestHandler.h */, + 2246103381BDCE264B43C19253CCF7C6 /* PFProductsRequestHandler.m */, + 2E051BB78BF5591341C31848B9AE0E0B /* PFPropertyInfo.h */, + 5F8A42FF495AB8897D09E00CAD01440B /* PFPropertyInfo.m */, + B4A9DBE857C85DBC4FCF8511B67E7FF3 /* PFPropertyInfo_Private.h */, + F29DD5432F60CE09614541D4BE9A4FB8 /* PFPropertyInfo_Runtime.h */, + C52117BAFED1734D3269D56FE3D842E0 /* PFPropertyInfo_Runtime.m */, + BF0336CCD7C95A339E279331D898870E /* PFPurchase.h */, + 01A50C2394596A1AAF49C7A2877C776E /* PFPurchase.m */, + A0DE6D1F31DEFED040F4E85B6631177D /* PFPurchaseController.h */, + 0648A7B89F8F0C429E649E87FBFBD699 /* PFPurchaseController.m */, + FE71E48A323238BEC2BB8D62940ED886 /* PFPush.h */, + CBF4F2328A16C47BFD1BCF837B76EB35 /* PFPush.m */, + DAE43287C4A621BABEBFD4D7ACA4D0CB /* PFPushChannelsController.h */, + FB90E78B06FCB922FD3083DB6AFE5ECA /* PFPushChannelsController.m */, + 10C11BD85333AB6363CF6EC82E870605 /* PFPushController.h */, + 13E16ED5531463D4705B39EE950AF115 /* PFPushController.m */, + 368A5760A18AE27F46F5243BA3BFD13C /* PFPushManager.h */, + AFDCBEB6665886D2633CB5495726E387 /* PFPushManager.m */, + 5B791C6AA6D3B48C2C1AA9496E0790AD /* PFPushPrivate.h */, + AB87FFD2A22D9F8F81F29DD24782E89A /* PFPushState.h */, + 939D831BAB14BEA5394F15D3E348976C /* PFPushState.m */, + 6C3843CD6AEFE5F515E6142799F801CA /* PFPushState_Private.h */, + 4235B0900E27A7ECBA96EAFDECF2D5A0 /* PFPushUtilities.h */, + A3152B830DE11B9029E12D3C5B928C17 /* PFPushUtilities.m */, + 616A0DE1DAFFD10BF5A8DD300548447E /* PFQuery.h */, + F19CD8D613E04AF9291C97EC57B1C08D /* PFQuery.m */, + 137AE6FE411D32FD166221B1257A8D27 /* PFQueryController.h */, + ABE4BA05E14673159DDEE660B13A5B00 /* PFQueryController.m */, + D18B76D6F749D3B45BAA4E3B0F2EFFD1 /* PFQueryPrivate.h */, + BD91B010ED73759E99DB85B7CA9FA867 /* PFQueryState.h */, + DD4E641A4F7583F57A2818E33113A0CF /* PFQueryState.m */, + A6D705A7C393E18FCFACEC1D2F07D098 /* PFQueryState_Private.h */, + 76EDBE5B4444693672560F0B38D5C4D3 /* PFQueryUtilities.h */, + 512FA3A57C3C25DEB20BFDE24938517B /* PFQueryUtilities.m */, + 5B799574EF27A1E8D4FD50ADAA42EC77 /* PFReachability.h */, + 20FCD32AE2B10221B23EC19A5B380953 /* PFReachability.m */, + AC8C608A0D3BE700536D0C6D4011931A /* PFRelation.h */, + 25EF987A717711C8CEAE29DFF3C12EA0 /* PFRelation.m */, + B5439DB8932AAF79667AED53097CC2C9 /* PFRelationPrivate.h */, + 9441797DDFA8DBDB595E9BA19BE1342D /* PFRelationState.h */, + 468C80083455F41B26E5C3D366E6F467 /* PFRelationState.m */, + CD4D52B14CF2360DE429DCB655B00642 /* PFRelationState_Private.h */, + B9E911ACAAECA0172448CD4E62137AF4 /* PFRESTAnalyticsCommand.h */, + FB1CFA906E2A5ECA69FDBCAC00497F72 /* PFRESTAnalyticsCommand.m */, + 8B1E4C81276B30550CB3CDA51070D862 /* PFRESTCloudCommand.h */, + CAEFED956777B69C5958C0E809EC11BB /* PFRESTCloudCommand.m */, + 3C9A888CC23B37A508B946C18FBA51D5 /* PFRESTCommand.h */, + 3962BED4A779536F2E41B1C36D6285AB /* PFRESTCommand.m */, + 37F7E3AF617E0BF5874DE052CCFF4A53 /* PFRESTCommand_Private.h */, + 3E03D377B70A81B7EE7DF0A8F510E529 /* PFRESTConfigCommand.h */, + 2E4BCF2AF417571FAAD5D3A0AF5FFB93 /* PFRESTConfigCommand.m */, + A1F131A4365C559659FC1FBB194A13E9 /* PFRESTFileCommand.h */, + D5F29001AB83C450101AC6122BCC4EA0 /* PFRESTFileCommand.m */, + 1635AF96EB71FB3FEBEE52A4395CFA1B /* PFRESTObjectBatchCommand.h */, + DAF50A43880E07D46E8A97B575A92405 /* PFRESTObjectBatchCommand.m */, + F1B5BCEFFE5D1ED352C01484C83D6924 /* PFRESTObjectCommand.h */, + E0650188B522893BF764569662B5E542 /* PFRESTObjectCommand.m */, + EBC06CCF32BA9A3FEE34142E70D19588 /* PFRESTPushCommand.h */, + 47C5EB9BE6709541AB17E0F38FB1BB1A /* PFRESTPushCommand.m */, + 118B70D2949B865CA76511460D9D0C92 /* PFRESTQueryCommand.h */, + 0842DD1DCDFD9683C89B6A9078E9D0FC /* PFRESTQueryCommand.m */, + F8B8D967E928682C85109A85124DEEC4 /* PFRESTSessionCommand.h */, + 030B329DF20766AE685434CD734BC3B2 /* PFRESTSessionCommand.m */, + D3AD3AB61D09EFC9C322C57F9239AFF8 /* PFRESTUserCommand.h */, + 9F097273140B23B664D84C6DF75EE2D1 /* PFRESTUserCommand.m */, + 409EF16B93600F84E2CC3287F2C35D7E /* PFRole.h */, + 66754BB67AA131A94D10F42D109E8523 /* PFRole.m */, + B0AF344F89667D8F50F4A22C146ACF21 /* PFSession.h */, + A7780E3BA6732D798F3374CA43890F7C /* PFSession.m */, + B03B11C4675A010812829BDD0481A90F /* PFSession_Private.h */, + 1375129BA8E11876FE8F3530124E4FF9 /* PFSessionController.h */, + 73136CB5DF8D9FDC9C0B3FF336E53790 /* PFSessionController.m */, + A4B28BD09271EAECA8D4D7EE69556765 /* PFSessionUtilities.h */, + 72C1FA5A8BDBCEC19E41771957BEB9E3 /* PFSessionUtilities.m */, + 7AD029CD6F8ADD2E864E5FE1699BB70D /* PFSQLiteDatabase.h */, + 255D43CCCFDFD52C9090EF3B8972D72C /* PFSQLiteDatabase.m */, + 31EC6AF4DEA7F85F68A5CE8C3ECA3280 /* PFSQLiteDatabase_Private.h */, + 19397C043A357D696BBA9A55EFD5B167 /* PFSQLiteDatabaseController.h */, + 97044BE056C705C44778E090F30A538B /* PFSQLiteDatabaseController.m */, + EAA88DECC60605475F4AA3869B36A8FB /* PFSQLiteDatabaseResult.h */, + C60BCCB74CDC88B04B7014C507F2D137 /* PFSQLiteDatabaseResult.m */, + 4788A28C6827C4BF85BEB5920CADFEE4 /* PFSQLiteStatement.h */, + 06FB17807D8F9BB90C006F1AA1422EEB /* PFSQLiteStatement.m */, + 4C8E5BBEB36882FAEA0C74B322ADC266 /* PFSubclassing.h */, + 1CE3CC21857556B51CB17BCFCF1EE7B1 /* PFTaskQueue.h */, + 79A805E2776C2CC27AB7764874C93173 /* PFTaskQueue.m */, + 909C0AD7538FB9457B86EC3AC7D973FD /* PFThreadsafety.h */, + 1BDC71820826E3AC85B7BE2E689790EA /* PFThreadsafety.m */, + 55DFDBF9FA07FC6282738752A376B991 /* PFURLConstructor.h */, + FF57BE3A8EF2D78A282E7FEE79783DB3 /* PFURLConstructor.m */, + 7981192FA1E3FF14D8C9EBA4511FD33B /* PFURLSession.h */, + 24851AC75A717461DF249C574A7E59B5 /* PFURLSession.m */, + F9A0A5F9F3C3457E2ECD91932E225F1F /* PFURLSession_Private.h */, + 327724504C5129C28E647306963F3042 /* PFURLSessionCommandRunner.h */, + 0D0B957E23560E8729AFBC541E7F0401 /* PFURLSessionCommandRunner.m */, + 55116A6D2C15718DE59AF5A2B7B5C7F2 /* PFURLSessionCommandRunner_Private.h */, + 701190361150FF2EEDEF10D05ABE7065 /* PFURLSessionDataTaskDelegate.h */, + 22E1D8AA11E50E9A37281052037D86FF /* PFURLSessionDataTaskDelegate.m */, + 42CBEF54F1256217E4780DB8ABBF5AC3 /* PFURLSessionDataTaskDelegate_Private.h */, + 7DFC97B9CEA18DDABF91F38573337059 /* PFURLSessionFileDownloadTaskDelegate.h */, + 423887AF6686942102218A073BC526E2 /* PFURLSessionFileDownloadTaskDelegate.m */, + 3198F91D01D488AAEE2E37C91C36109C /* PFURLSessionJSONDataTaskDelegate.h */, + B1126558A8CA869CAE3169CD0485A400 /* PFURLSessionJSONDataTaskDelegate.m */, + 0EB6E9BC99D4CE39BCEA9AB574501691 /* PFURLSessionUploadTaskDelegate.h */, + F129E4F0636DB79526F8F6270198B942 /* PFURLSessionUploadTaskDelegate.m */, + FCDD09913DC7F28BA260222EED8670BE /* PFUser.h */, + DE726D284DFE5BC0144139D8575114FE /* PFUser.m */, + A36C3225AB6FDE49BE8F8859C30A7D7D /* PFUserAuthenticationController.h */, + 16AA732281290E4169524C7073D0E8C9 /* PFUserAuthenticationController.m */, + 40E39D31FE7DC01DD03AA4AF8530EC8D /* PFUserAuthenticationDelegate.h */, + 616C83AFE6D3B13DB326EFFDA4E56218 /* PFUserConstants.h */, + 5CA0A29FC7FC84E10BBE7CB9F915C818 /* PFUserConstants.m */, + 092AA11ADB8FDDCC538A0ABDD75F38E8 /* PFUserController.h */, + C1A37998F9BF6B81FA68488F9A55BC50 /* PFUserController.m */, + B3AC4F0EFC27421FCDFE376464524DBB /* PFUserFileCodingLogic.h */, + D605FE4F41A283271B93F93C8E0C5932 /* PFUserFileCodingLogic.m */, + 6EBA7EC1BD2D3653F709A5C97063B990 /* PFUserPrivate.h */, + 099E673F2FD9E7D461C9590B6D38BA1F /* PFUserState.h */, + C4FAEDC2711A67FEFF48FE305A9A04C6 /* PFUserState.m */, + 138471689F57812BFA9933C75A79A7D5 /* PFUserState_Private.h */, + 205214C203BF751A124F1153AD9CBA8E /* PFWeakValue.h */, + 03C91AECE7686A27F9032A4DCC43165E /* PFWeakValue.m */, + 622C8AD332559FDD50912FB3F2114FD2 /* Resources */, + 558DF5C9649361A2C6A16D52D1F75A0A /* Support Files */, ); - name = iOS; + path = Parse; sourceTree = "<group>"; }; - 398335382CFCFDC50EAD72EC7F6E6979 /* FBSDKLoginKit */ = { + 25510258318D770B38C09C4CA0D2DC7C /* Support Files */ = { isa = PBXGroup; children = ( - 5B0743AD2B57375BCF911269DBE91815 /* _FBSDKLoginRecoveryAttempter.h */, - 659D341D4BAADD4339DB44AC00772E9F /* _FBSDKLoginRecoveryAttempter.m */, - A832477BE2A9E7163C4E27DAE8B3DD8C /* FBSDKLoginButton.h */, - F08BE85063341A7E769D75F5763E3946 /* FBSDKLoginButton.m */, - E8C9BEAE7AF61AB7F508B135815A7405 /* FBSDKLoginCompletion.h */, - EB51571C4C582A26F710845CFAA3AAFE /* FBSDKLoginCompletion.m */, - B3730F73EE5F25F746856381EB423BB1 /* FBSDKLoginCompletion+Internal.h */, - C93BEBD4E67678D6A0AF73501738D481 /* FBSDKLoginConstants.h */, - 2562632730FD0A59722B3C67E9C6C38E /* FBSDKLoginConstants.m */, - 4C773E3706A4438E1751AB41F39EB030 /* FBSDKLoginError.h */, - 432FAA5FD944A3CEB95D300D82A29D11 /* FBSDKLoginError.m */, - ABEC7A4F1C213D9FF650D68130BE307B /* FBSDKLoginKit.h */, - 2FF16FB1B2249D1B7C33F0B28BE8FB32 /* FBSDKLoginKit+Internal.h */, - 6BCE676F39C259B6C0BF1690EB5DBE25 /* FBSDKLoginManager.h */, - 942F4435C4E5B28ACF4995C1B58BC460 /* FBSDKLoginManager.m */, - A310034DF2EA59B12C3C17FA56A7D8CA /* FBSDKLoginManager+Internal.h */, - F196DD5AE8EA853E4EC89AF912198556 /* FBSDKLoginManagerLogger.h */, - E4FF2B92D70AA85F5430FA255B5930B8 /* FBSDKLoginManagerLogger.m */, - F84F292500C57DA9F2C1AF294A4409F6 /* FBSDKLoginManagerLoginResult.h */, - A8C154BACC4BC2017771F24B43682204 /* FBSDKLoginManagerLoginResult.m */, - 702E8ADADAF9B688368323A9218E6461 /* FBSDKLoginManagerLoginResult+Internal.h */, - 703806AC44DC3DAA0B029C076D84918C /* FBSDKLoginTooltipView.h */, - AA9C61E1204F6BD3E847A74FF29A1F91 /* FBSDKLoginTooltipView.m */, - 7D1C86B95A8E3810D8B07D2319B3FF71 /* FBSDKLoginUtility.h */, - 42BFA9A32C67074761C10AC36BF1CA3D /* FBSDKLoginUtility.m */, - B5C44FD3FAB358E3B466C4655865D9C1 /* FBSDKTooltipView.h */, - F19E08580DB71ED59755E30D19440C85 /* FBSDKTooltipView.m */, - 68DB75D5B1E2AFB8C566442266809B7B /* Support Files */, + EB97CD8D9BDC16D9E1CE5F863965790B /* pop.xcconfig */, + C03EC589275AA21D375F405EB48AB374 /* pop-dummy.m */, + EBF45573BC8D86EF53B4B16396F99411 /* pop-prefix.pch */, ); - path = FBSDKLoginKit; + name = "Support Files"; + path = "../Target Support Files/pop"; sourceTree = "<group>"; }; - 4182CACC1DDBA19305C1FAB586BB627E /* Network */ = { + 2612628171849F4DEDE2DDD5C2B94566 /* Support Files */ = { isa = PBXGroup; children = ( - 5EAF198C3A7ADA68D4CEE15D8F5409E8 /* Network.h */, - 640B12F7182C4EF36510C06BF87ACDD7 /* RKHTTPRequestOperation.h */, - B12FBE677B57927C3F666FD0FD6511BC /* RKHTTPRequestOperation.m */, - 5BBAC5D8DBA7BF3C8638920782DCB03D /* RKManagedObjectRequestOperation.h */, - 38716A9E624A2682EE064BB7A4E4B034 /* RKManagedObjectRequestOperation.m */, - E6EBF6F7C6F610013CFE4E847BD798F8 /* RKObjectManager.h */, - 8286A9C555581B1077CACA650C967E59 /* RKObjectManager.m */, - 305C1B44A7F7E61553779E2EFAA7E6E5 /* RKObjectParameterization.h */, - 78CD59E0BD6F1DE92BCA187E736EF6BE /* RKObjectParameterization.m */, - 4966479D5117182D9BB2405C57BF9E48 /* RKObjectRequestOperation.h */, - 047F85BB51947407A2598BD224EF6F03 /* RKObjectRequestOperation.m */, - EA755DA8F373AF93B1752260FBCD0DEE /* RKObjectRequestOperationSubclass.h */, - C9C2F85D16952EEE0714A294ED8EA605 /* RKPaginator.h */, - BED513156E118407B7BC1990E6EDADA5 /* RKPaginator.m */, - F4E257A30B52BCA02E3AD226A28156E6 /* RKPathMatcher.h */, - C480EBF5CDD5C303A3C3A1D7B36A7E80 /* RKPathMatcher.m */, - 8D68B95DF6CEEFD1E9A5D0DBEE6B89D8 /* RKRequestDescriptor.h */, - 23F8033FB2A702EC958A60D0DEF98AC8 /* RKRequestDescriptor.m */, - 01FEEA6D377107B1A0563028100F1FFD /* RKResponseDescriptor.h */, - 37287465895B3FA00A50FD0231EC03C2 /* RKResponseDescriptor.m */, - E7502CBF5FF5DDC2E45F3550840F4429 /* RKResponseMapperOperation.h */, - E3F86397116A780E41E893B85EDECB42 /* RKResponseMapperOperation.m */, - DF85D1A5A93CD13D748D47C555B565CA /* RKRoute.h */, - 55F180B6F1337B63280EF7EE6FE6C2AC /* RKRoute.m */, - B7D0C7535C92E775C8051BD27D3C5A4B /* RKRouter.h */, - 9404F58DCEDDFD27D11EDC156DE41058 /* RKRouter.m */, - 00595F6FB2C45EBEB4850162FFBAFBDA /* RKRouteSet.h */, - 307A4292CDEB528BBF94D77971EA42D8 /* RKRouteSet.m */, + 556F7F390D364FD2B3DA48C98E500E2C /* TransitionKit.xcconfig */, + 83319D45D8AE5D8BF57D365983A41750 /* TransitionKit-dummy.m */, + CF09A05A7A248669395E6778DD2838AE /* TransitionKit-prefix.pch */, ); - name = Network; + name = "Support Files"; + path = "../Target Support Files/TransitionKit"; sourceTree = "<group>"; }; - 48BAF56AE6C0489F1FCA47EF6B76ED60 /* Bolts */ = { + 2935474A12329277E07A08BD4241480F /* Support Files */ = { isa = PBXGroup; children = ( - B266F969C74DA0ED10F0759EC49E7B55 /* AppLinks */, - 6973475DD091F83E6E12FEACEE70A8B7 /* Support Files */, - 8EC76371940273004FE75954FB9D30AE /* Tasks */, + 3BF16968FBC656E49A7B643EED4B84F6 /* ISO8601DateFormatterValueTransformer.xcconfig */, + A0C95D96D102F597D4543F77E2DBE642 /* ISO8601DateFormatterValueTransformer-dummy.m */, + 6AE20D46FEA8C73D4CD5828D72E4D47B /* ISO8601DateFormatterValueTransformer-prefix.pch */, ); - path = Bolts; + name = "Support Files"; + path = "../Target Support Files/ISO8601DateFormatterValueTransformer"; sourceTree = "<group>"; }; - 4BDE6BC6D6EDB59EFFD668FA19CCCE3F /* Support Files */ = { + 328D5BB5F21E344E9FBB7B9C794DCDBE /* FBSDKLoginKit */ = { isa = PBXGroup; children = ( - E601C5D0D43FA69BCDE6E2ECFF6B02CC /* FBSDKCoreKit.xcconfig */, - 9CC97C072FD18D2A4B73F527FCCF25A7 /* FBSDKCoreKit-dummy.m */, - 6DE5893A62D5A2BB957C613ACF80A5D8 /* FBSDKCoreKit-prefix.pch */, + 6D540B5BA940B77762F525759CD9E2F7 /* _FBSDKLoginRecoveryAttempter.h */, + C5C2B2C9BECEC9F64477D3C8051CFDB5 /* _FBSDKLoginRecoveryAttempter.m */, + 8A6E4A459DD6D5E686E59DC08B4D07F1 /* FBSDKLoginButton.h */, + DD91926B9C031018B2F9CB9019718F3E /* FBSDKLoginButton.m */, + 763D59D54C57DA2AAFAD336EE912908D /* FBSDKLoginCompletion.h */, + BBB5809E48E2B4BEFFDD671C03A673A1 /* FBSDKLoginCompletion.m */, + 517FE5FCB5C6241B8A66BE083CA1AAE6 /* FBSDKLoginCompletion+Internal.h */, + 25070753B1B37A1665F1F5332C0EF515 /* FBSDKLoginConstants.h */, + E160D14CDAB0E17CC1D0024A8673A34C /* FBSDKLoginConstants.m */, + 044941FE89AB594A010087B94F17D923 /* FBSDKLoginError.h */, + 6E2D1B4FCC4918686DEAF9094B908917 /* FBSDKLoginError.m */, + AEB4D0E3F5DD747BCD44340E26E9755F /* FBSDKLoginKit.h */, + B3362FF57BC5AE2D2552F6F4C4ACD2C9 /* FBSDKLoginKit+Internal.h */, + 59EAFD88B92A3912D4951328AF334D28 /* FBSDKLoginManager.h */, + 03549C9A2FD883CD12D063617A47E0D3 /* FBSDKLoginManager.m */, + 20B8F6A2F2E484CD2E09B61345C563A0 /* FBSDKLoginManager+Internal.h */, + EF79FDCF0AF41A384FB770643D79F0E6 /* FBSDKLoginManagerLogger.h */, + C45478301558D880893FA55C99879E3C /* FBSDKLoginManagerLogger.m */, + 826C988F437410449787F4BDCE07E6B7 /* FBSDKLoginManagerLoginResult.h */, + 5F5D256457EA109A0FD3C2B7F2AFFFD8 /* FBSDKLoginManagerLoginResult.m */, + C737DBF986FE1FF02706679384A58608 /* FBSDKLoginManagerLoginResult+Internal.h */, + 87C33535E86A40250BA126A6209213CC /* FBSDKLoginTooltipView.h */, + 335A3DE810AEDFE589A9325169A59E46 /* FBSDKLoginTooltipView.m */, + 957013533FBA66B6F24FF31441FF1EC3 /* FBSDKLoginUtility.h */, + DB72A1AC246E5FC4E81A0DBB8B1F0737 /* FBSDKLoginUtility.m */, + DF3BBA8D585F58897AE3BA414EDE35C2 /* FBSDKTooltipView.h */, + BFBDACDD0805704D189CA36FE17373B8 /* FBSDKTooltipView.m */, + 4B78A7C79EF8E74431E1D08F13B47675 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/FBSDKCoreKit"; + path = FBSDKLoginKit; sourceTree = "<group>"; }; - 57BBFCFCD99BD0361B60E276554280F2 /* no-arc */ = { + 36F3E3D009A33DE3EB27FA31CBCE358C /* iOS */ = { isa = PBXGroup; children = ( - 230215250F2BC4E1CCBB87F678DC507C /* FBSDKDynamicFrameworkLoader.m */, + 3849FCCD9604B569E0277015CC30071D /* AudioToolbox.framework */, + 733D51F628A8649F5A0790296BA3E42A /* CFNetwork.framework */, + EEBA4E2BFC884C1F4B170F5BC7DE8B77 /* CoreGraphics.framework */, + 1E3783F1A59CCE93EEF653593AFAD5B5 /* CoreLocation.framework */, + FC8F8CB8538044AF0B76C816D7CAF811 /* Foundation.framework */, + E62E80C06B8D2394C56D10220D1CCB6F /* MobileCoreServices.framework */, + B0F29E0D66F63131F371330D93CB4583 /* QuartzCore.framework */, + 6114EBA3A5CB7CB8ECE0A9BEFA6DB026 /* Security.framework */, + C758B84874FBB01F1E2CE355BEA77660 /* StoreKit.framework */, + 16621039C0E3312C216165BEF8D567DE /* SystemConfiguration.framework */, + B6FDEF44D035ECEB171CF49BE68D54D0 /* UIKit.framework */, ); - name = "no-arc"; + name = iOS; sourceTree = "<group>"; }; - 58F28BB65A4E60C0F3B1B5623B914693 /* Support Files */ = { + 4380A3F473F199836A3C72502983239A /* Tasks */ = { isa = PBXGroup; children = ( - A4F05EE46BF909C52D434101394A8D68 /* SOCKit.xcconfig */, - 83C232075A2AC8C59594FDDD1D494936 /* SOCKit-dummy.m */, - 902CDE40ABBA4BCA68994F6995BEE047 /* SOCKit-prefix.pch */, + 9EB6FC1B35894D58DCAA447BFB3BB370 /* BFCancellationToken.h */, + D340DC8D2BC61B7C8A044A46F47ED4D0 /* BFCancellationToken.m */, + F22636EFE5E1A5651E0A1520C5F281E5 /* BFCancellationTokenRegistration.h */, + 1EE55AE735F6A67726031719677B1B38 /* BFCancellationTokenRegistration.m */, + D147E7F72F838ED5D3C66A4E3546EC11 /* BFCancellationTokenSource.h */, + 0B8AE15FBFEC0BE016020B8970ADE865 /* BFCancellationTokenSource.m */, + 3B1F248FA3EE75C351E1B383AB977DF7 /* BFDefines.h */, + 0D63D25E0D4B1B1573FC3216A3041E64 /* BFExecutor.h */, + 2775CBEED05B03B513848BE46301ECA6 /* BFExecutor.m */, + D2A208C22FB8BC1DAFD34F05A88E7349 /* BFTask.h */, + BE404DC24F62FA97CDAEF063B4413139 /* BFTask.m */, + 72766C115F290B685E1C527E77EDEDEE /* BFTaskCompletionSource.h */, + F6F4C2DDD2D3755D276BC06E4C5B319E /* BFTaskCompletionSource.m */, + C5052DE726F89E27E1CA5D188FD32C5D /* Bolts.h */, + 20D1F9C0BECD5D6036F5F1A63383C39D /* Bolts.m */, + 29DAD99804B5BD08F3A74008FD65BAE7 /* BoltsVersion.h */, ); - name = "Support Files"; - path = "../Target Support Files/SOCKit"; + name = Tasks; sourceTree = "<group>"; }; - 5C8186ED15642E873839F0DDB95C2543 /* Pods */ = { + 443FE6FAC9F77ED18F698A1F1AD2DF9E /* FoldingTabBar */ = { isa = PBXGroup; children = ( - 96B35301A98DC85CF3E789D00C82FCD1 /* AFNetworking */, - 48BAF56AE6C0489F1FCA47EF6B76ED60 /* Bolts */, - D73428F5EDCF779302B1A54ABA56A999 /* FBSDKCoreKit */, - 398335382CFCFDC50EAD72EC7F6E6979 /* FBSDKLoginKit */, - B00045A969C9B957931CDE72F26ADF92 /* FBSDKShareKit */, - CC7D196E45BE148ABAFD7FE4B9D5DBA2 /* FoldingTabBar */, - B445D30E7E199FDE3F32BE28EFDCA2C1 /* ISO8601DateFormatterValueTransformer */, - CE717DC41894FDFAB0EAAB3ACDAFD9EF /* Parse */, - 32E52DBF68DD0A7BC5494B503C88C62A /* RestKit */, - 9ADBD9D7E7BDC1CE457493113BE6A09B /* RKValueTransformers */, - 96D009122D3A910B98FD674C4F1970E7 /* SOCKit */, - F6FFB7F933FD72A4DE0BC8F277933B4E /* TransitionKit */, + 955C4C780B4D5A0582BF89B0379CB61E /* CAAnimation+YALTabBarViewAnimations.h */, + 26B6710576834D59FB5352DD3F5EB069 /* CAAnimation+YALTabBarViewAnimations.m */, + FBFE9966A9FB854C5D85375D24F936C5 /* CATransaction+TransactionWithAnimationsAndCompletion.h */, + 266541F607EB34A777991BD29D5D2556 /* CATransaction+TransactionWithAnimationsAndCompletion.m */, + 57319DCE064A4F4C9DD2D290FD88D642 /* YALAnimatingTabBarConstants.h */, + 2870EF5BFCF54FA3B58A74A16C8DEA99 /* YALAnimatingTabBarConstants.m */, + F7EEEC622363411316A89CF3A6941695 /* YALFoldingTabBar.h */, + F83D6439675ABF2D6040C5D9F2FFF217 /* YALFoldingTabBar.m */, + 352259996AE7807E58AB7D6E88FAC9F7 /* YALFoldingTabBarController.h */, + AE3ADE078ECB5E4868892A8EA3936EA5 /* YALFoldingTabBarController.m */, + B7B6A72DD28FBD988E0B1E6A930C1BCA /* YALSpringAnimation.h */, + BD5D724AF948672175ECFB8781A0F2F5 /* YALSpringAnimation.m */, + CCD58C1FE0A285B35DC39096400FF8C5 /* YALTabBarInteracting.h */, + 44A2841E1C0E28AFEE0B7288D6E47D4E /* YALTabBarItem.h */, + A75314C0637DF9AD59C4F573E3CB78C6 /* YALTabBarItem.m */, + CE2D9BA208321FEB30B86BE7BEF38787 /* Support Files */, ); - name = Pods; + path = FoldingTabBar; sourceTree = "<group>"; }; - 5DD9B920B87D66939DDC49BA336BA03E /* Support Files */ = { + 4B78A7C79EF8E74431E1D08F13B47675 /* Support Files */ = { isa = PBXGroup; children = ( - 4313BE461C6D0AB4AEFF645FBD735809 /* ISO8601DateFormatterValueTransformer.xcconfig */, - 2D0CD43CC78F18A69B36021FD018147B /* ISO8601DateFormatterValueTransformer-dummy.m */, - 87CD736E8B954F15E500CE7D55A80EE1 /* ISO8601DateFormatterValueTransformer-prefix.pch */, + 3F045700822563CB163FE8B3F606352C /* FBSDKLoginKit.xcconfig */, + 880C326DB82974026154DE2FEE6DF8EA /* FBSDKLoginKit-dummy.m */, + 17E73976887C42E701026CD6E8B7F4E4 /* FBSDKLoginKit-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/ISO8601DateFormatterValueTransformer"; + path = "../Target Support Files/FBSDKLoginKit"; sourceTree = "<group>"; }; - 62F2052A6198E568D3BCBF22C09868EB /* Support Files */ = { + 558DF5C9649361A2C6A16D52D1F75A0A /* Support Files */ = { isa = PBXGroup; children = ( - A5D82F87A7D9B6D1BA5B926D5CC28320 /* AFNetworking.xcconfig */, - 362C1D10E572107214CEFE116A4A3E9C /* AFNetworking-dummy.m */, - D74B454C0FDB49038C515C190B7D0040 /* AFNetworking-prefix.pch */, + A38DBD435D9B08BE5E3BBE4C171BB0B9 /* Parse.xcconfig */, + 9BD8C56BA64752CBF457FB1F3473747F /* Parse-dummy.m */, + CCE6CAC57669DAF95F75350ACA64D8F5 /* Parse-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/AFNetworking"; + path = "../Target Support Files/Parse"; sourceTree = "<group>"; }; - 68DB75D5B1E2AFB8C566442266809B7B /* Support Files */ = { + 622C8AD332559FDD50912FB3F2114FD2 /* Resources */ = { isa = PBXGroup; children = ( - 9B40691DF0E6BC33074AC41A275DB164 /* FBSDKLoginKit.xcconfig */, - CF7867AD1B16B0D2CCD3E12388E307E6 /* FBSDKLoginKit-dummy.m */, - C1F0927ADAF3F2EE080C8CFB1EB02510 /* FBSDKLoginKit-prefix.pch */, + 207C347476CAA87AD1032D236FA290A2 /* en.lproj */, ); - name = "Support Files"; - path = "../Target Support Files/FBSDKLoginKit"; + name = Resources; sourceTree = "<group>"; }; - 6973475DD091F83E6E12FEACEE70A8B7 /* Support Files */ = { + 6D2B535DFEFC2D59F09AAFC33373431E /* RestKit */ = { isa = PBXGroup; children = ( - 6B6718A558812C369FEAEEE13F58304E /* Bolts.xcconfig */, - 497BCC491078BD10E998532399FBE356 /* Bolts-dummy.m */, - 9CAF4B15DDC52D849508A1E602814624 /* Bolts-prefix.pch */, + 934AFBAB81ECCF7F631DBEAE9DF1B13A /* Network */, + 7EABF82AC8B75AB60FFA4D4094FA0800 /* ObjectMapping */, + 102D02B51D25F8C5C815B69B7CB61B08 /* Support */, + D1A12668CBBAF479BBDDE11E900C7DFB /* Support Files */, + 0BFBFBF37DD4FBC676345E304C5B6CE7 /* Testing */, ); - name = "Support Files"; - path = "../Target Support Files/Bolts"; + path = RestKit; sourceTree = "<group>"; }; - 6A281583AE86BEBA831DCD4AA7F89334 /* Support Files */ = { + 730A0971E2B05CA436436CFBECBFAA5E /* FBSDKShareKit */ = { isa = PBXGroup; children = ( - 6AB27F170175D24AE67E7FE4DE679D4B /* TransitionKit.xcconfig */, - F6C85F64DFA1EA9920744621BC7D1A3A /* TransitionKit-dummy.m */, - 080DA549FB3DF87C2D0F356163642618 /* TransitionKit-prefix.pch */, + 0587E0A5FA037D15DDF1E0DD7E70CD5D /* FBSDKAppGroupAddDialog.h */, + 782AF7A5FC9A3571F42003CD07FE5A3C /* FBSDKAppGroupAddDialog.m */, + 87352A5CFA4016F286A66829B0D2BFB9 /* FBSDKAppGroupContent.h */, + 3CFFE5B32D8DD018AAF9EB4733D6315B /* FBSDKAppGroupContent.m */, + 79630B324053224BBFAB6E9D26A18148 /* FBSDKAppGroupJoinDialog.h */, + 610EC8334EB48B27B2BBE37D785AF2B2 /* FBSDKAppGroupJoinDialog.m */, + BF8BD2902C2FE3B67C86F30BFEAE4A3E /* FBSDKAppInviteContent.h */, + D24F985E3661241D2C0921E8022E66C2 /* FBSDKAppInviteContent.m */, + 49293A25955435D7FC5E29D841FA4456 /* FBSDKAppInviteDialog.h */, + 3265A08CD5F3A28A6541A985B0B75664 /* FBSDKAppInviteDialog.m */, + C2E9C149FB61E88BEF76CE74D5776813 /* FBSDKCheckmarkIcon.h */, + 3E4E096EFFA1494BC822896BB3BD15AB /* FBSDKCheckmarkIcon.m */, + EFF0339213287B595E2857A1BCA7B7E8 /* FBSDKGameRequestContent.h */, + 7DAC4524798CD2351824DF502E226F2E /* FBSDKGameRequestContent.m */, + 346CED5D6B988E5318DBD8CC9C98A073 /* FBSDKGameRequestDialog.h */, + 4F609FCDD81EB1ADED68C1FE461C3594 /* FBSDKGameRequestDialog.m */, + E73D941475103F44552CBBF7A9C2578A /* FBSDKGameRequestFrictionlessRecipientCache.h */, + A99D66855595DD2F9E379F9A258C7FD4 /* FBSDKGameRequestFrictionlessRecipientCache.m */, + BFAC7C03033A9B1F15075F4565BC1328 /* FBSDKLikeActionController.h */, + ECF9B9F2BA04D70CD7253751FF94CCD5 /* FBSDKLikeActionController.m */, + 535545A6AC7290701119A0B61C887EFF /* FBSDKLikeActionControllerCache.h */, + 68133029060DA29FD5C9C26119CFA51B /* FBSDKLikeActionControllerCache.m */, + CF478811F261A5C3A4200EF18BD59E46 /* FBSDKLikeBoxBorderView.h */, + 95C0B6DA20609F0B05D9D1AB1D2FC475 /* FBSDKLikeBoxBorderView.m */, + A8710983B393BA50AECE51EA8D90E727 /* FBSDKLikeBoxView.h */, + A473E7C40F24CE11C1FE9F416C8E5EC2 /* FBSDKLikeBoxView.m */, + 9D7D382B54C6E6B265B154F079E1CDDB /* FBSDKLikeButton.h */, + 64264592576D6C230E966AC098067DAB /* FBSDKLikeButton.m */, + 7DEFDD3A6DB314308247D22FF14AFA98 /* FBSDKLikeButton+Internal.h */, + CEF0CE91FC9080D9E33E9B362D760F18 /* FBSDKLikeButtonPopWAV.h */, + F2575C28B5137ABEB1B9557B34F3448C /* FBSDKLikeButtonPopWAV.m */, + 424184F6AAB828CA2D22E450BB52A081 /* FBSDKLikeControl.h */, + 9E3DEF8E2E27C00D59DC5DE4C876E0D1 /* FBSDKLikeControl.m */, + 2BB0273CAD372752E68ECCBCD48E5842 /* FBSDKLikeControl+Internal.h */, + 9F1B1BCD1E0ECE22C24CC82032B14A95 /* FBSDKLikeDialog.h */, + 3394EE87DFC9E88439AB265D59382138 /* FBSDKLikeDialog.m */, + 4AB618D67D94F32578DF5336651E7855 /* FBSDKLikeObjectType.h */, + B8DA6BF199DF0CAB4F3B6FE8589F18F9 /* FBSDKLikeObjectType.m */, + 672B96E281A19DA7F2F22511F1093D16 /* FBSDKLiking.h */, + BF50A2188E832EC70F211B3F3932C51C /* FBSDKMessageDialog.h */, + 85F8F13323C74D0619E9E4B4BBB27CEE /* FBSDKMessageDialog.m */, + 804F2F0EDB0F2FE68B74F5D2D1ED5A94 /* FBSDKMessengerIcon.h */, + 134ACDC2444EE29856334D3196F53AC0 /* FBSDKMessengerIcon.m */, + 8039DDB4E996A03FF15AD2DF8D4D1CA9 /* FBSDKSendButton.h */, + 92D9BAF18D3C2495B07204C2404BFEEB /* FBSDKSendButton.m */, + 0FCED2B89C49FCB98FAE1186D1725F5B /* FBSDKShareAPI.h */, + ADBAF2BABA39070672917C80E4F74CBA /* FBSDKShareAPI.m */, + 8CBCFD5CCB1FD15EED54F82E909DC031 /* FBSDKShareButton.h */, + BEEE1441A35504F5C1462BCBEE30EE7F /* FBSDKShareButton.m */, + 29B13B33590257BF7A80C3602DC87B09 /* FBSDKShareConstants.h */, + B53170EBE3F4D7BAA67CDA6A2C198542 /* FBSDKShareConstants.m */, + 9B9C80D740936B42747C456E06BD4210 /* FBSDKShareDefines.h */, + A8051434722A3494196DC122D8029D34 /* FBSDKShareDialog.h */, + 6569377CC0B0AA51EBA394C782985089 /* FBSDKShareDialog.m */, + 3F3FC0B3D497637B402F51B44E5B28F5 /* FBSDKShareDialogMode.h */, + 36A9A82E6520CD02FD9422940934EACB /* FBSDKShareDialogMode.m */, + 0D612FDB5856A0B0DC71C9A83AF67537 /* FBSDKShareError.h */, + 0B843EB1DFCFEE6E5EE55AC6767E4E13 /* FBSDKShareError.m */, + 2B468DC6F25FAF7381C563D8A3A3C32E /* FBSDKShareKit.h */, + 2DE175F2297AFCBB1C62B1B16B5891F1 /* FBSDKShareKit+Internal.h */, + 3EE26090EAD13C1FFD39BB6A7C89193B /* FBSDKShareLinkContent.h */, + 864B619977C41FA41083B23778DFD471 /* FBSDKShareLinkContent.m */, + A9E08B70AB72ECE4DA87BFED9B17F956 /* FBSDKShareLinkContent+Internal.h */, + 6768924E65317D0E30521724DC081C08 /* FBSDKShareOpenGraphAction.h */, + 05D4509ED8E7E863F79C2BDF6FE4471C /* FBSDKShareOpenGraphAction.m */, + 97F4FC4FF392B72657F42F96261BBC3F /* FBSDKShareOpenGraphContent.h */, + 26576E563FF51DD9C6683E959913991D /* FBSDKShareOpenGraphContent.m */, + DA3EA52DCFB7D558F88A88501D54E2B9 /* FBSDKShareOpenGraphObject.h */, + 224595D0364E886259E4B2F44C937D02 /* FBSDKShareOpenGraphObject.m */, + 1B1BBDE1A0182E4AAFF80CDBBDF1DAB9 /* FBSDKShareOpenGraphValueContainer.h */, + 7C6CEAC74231F31EC9DDED4C3E2BBF48 /* FBSDKShareOpenGraphValueContainer.m */, + F42B1B0D93B9783D48D27AAF873BC978 /* FBSDKShareOpenGraphValueContainer+Internal.h */, + B91E34DFD041EF9B4895EC618300E024 /* FBSDKSharePhoto.h */, + 7CE70DA06AD37A88DD393A98C73C7D07 /* FBSDKSharePhoto.m */, + A7AC1819EBC907C93BA5F2B790C16D0E /* FBSDKSharePhotoContent.h */, + B16533489604D2247F7EC997C13BA975 /* FBSDKSharePhotoContent.m */, + 9E3D3427A00B557DE42EED0B4C015942 /* FBSDKShareUtility.h */, + C5934D49963F991DC729306B6D2ECA94 /* FBSDKShareUtility.m */, + 3135C42A396F109267EA88F6641A9194 /* FBSDKShareVideo.h */, + E6D171B8D3792811D774B92580727FAB /* FBSDKShareVideo.m */, + 56EDB2104DA13588CD5B4334FF77452F /* FBSDKShareVideoContent.h */, + 69B2823ABCAD80D975C9E8C29A5E869F /* FBSDKShareVideoContent.m */, + AF22BCCC30F4473554DFAAAEBC740BE7 /* FBSDKSharing.h */, + D80B172E70B3B5E8CAEA6069D1DE5D71 /* FBSDKSharingButton.h */, + 3ACEDF4D677834B067A9DD0F82954897 /* FBSDKSharingContent.h */, + 030A5B3E44F0F6E57B1380DD185339D1 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/TransitionKit"; + path = FBSDKShareKit; sourceTree = "<group>"; }; - 6B14877BDD14A1CFCF73960813DBE594 /* Support Files */ = { + 73C1CB09E0328129B45C632E136DEE53 /* no-arc */ = { isa = PBXGroup; children = ( - 412828DEC5B3F3C978D90B000561AC08 /* RestKit.xcconfig */, - 8BAA0C25C337D44ADABB547C00BFE0D1 /* RestKit-dummy.m */, - B58613265294354C23D293C133BAC6B2 /* RestKit-prefix.pch */, + 8988609857673ACE16552A1C00D45091 /* FBSDKDynamicFrameworkLoader.m */, ); - name = "Support Files"; - path = "../Target Support Files/RestKit"; + name = "no-arc"; sourceTree = "<group>"; }; - 6C0CFA49494A8874225CD6BE0417E474 /* Testing */ = { + 7ADA1DE4AC552D9180233F1D5A34429C /* Support Files */ = { isa = PBXGroup; children = ( - E1FB03A638286D34951A35082DC8829E /* RKBenchmark.h */, - AB78F67642C251E7BFF0E9D2B17A8553 /* RKBenchmark.m */, - 836DD34AA9FD86CA7B162C11FF60F67C /* RKConnectionTestExpectation.h */, - EBA8382EE38E29B647AAA8D688CC23CE /* RKConnectionTestExpectation.m */, - 491C07A26268A25977860299C1B04D2C /* RKMappingTest.h */, - BC9BCA0158D3FA6ECF2FB4D804EA8A83 /* RKMappingTest.m */, - 46EE1DE5D0F0015F4E7C0AE4FC9D85F6 /* RKPropertyMappingTestExpectation.h */, - 8F17239611A3B8B424D42FCD9B529DA9 /* RKPropertyMappingTestExpectation.m */, - 42E3420B261FCAE88A3371F0158DAA2A /* RKTestConstants.m */, - ED7B68BD4BE4A662816CBE0A294F6500 /* RKTestFactory.h */, - EBB561046AC0CC3E56743E5BB664B0B0 /* RKTestFactory.m */, - 9E2A5D66F6C75C8A872ECD3D71937EBB /* RKTestFixture.h */, - 9957AA65319B89D5DD0424050D460948 /* RKTestFixture.m */, - 0C3ADF3356A01C102A78C499D44C195E /* RKTestHelpers.h */, - 2E10976A217E52C40572C15A1627BDD2 /* RKTestHelpers.m */, - FF93EF6EEE6883E55F75A0465EC5735F /* RKTestNotificationObserver.h */, - F62A65D495C27089A10FB5943BF3A012 /* RKTestNotificationObserver.m */, - F0CFA77570DB7AAAE7861BC27A0A45A3 /* Testing.h */, + A28864FB7EB36A5080B6D12B1B94125F /* AFNetworking.xcconfig */, + E089DC06AFABF3AB162039B0DCA20D14 /* AFNetworking-dummy.m */, + 00867696A579EF950503FFC6BFDC74DD /* AFNetworking-prefix.pch */, ); - name = Testing; + name = "Support Files"; + path = "../Target Support Files/AFNetworking"; sourceTree = "<group>"; }; - 7570B82DE211C26B079734047EEA1BAE /* Support Files */ = { + 7DA921C2C956313F56FEBC0296B7C6F4 /* FBSDKCoreKit */ = { isa = PBXGroup; children = ( - 389CEDD0DDA1F1BB4ACF1258BBC1A500 /* FoldingTabBar.xcconfig */, - B5C46025996A2C2D010B0AE8FF485D39 /* FoldingTabBar-dummy.m */, - C5194995AA71A8339D3CCFB61EAB2D2F /* FoldingTabBar-prefix.pch */, + D29F10A74F6ECD83F33B3134ECE1076E /* arc */, + 73C1CB09E0328129B45C632E136DEE53 /* no-arc */, + F46DF5AF30AF4F7D4DFAC67E03AEE55E /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/FoldingTabBar"; + path = FBSDKCoreKit; sourceTree = "<group>"; }; 7DB346D0F39D3F0E887471402A8071AB = { @@ -2336,915 +2905,541 @@ children = ( BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, EB57DDB3388FBC701046A1E93218737F /* Frameworks */, - 5C8186ED15642E873839F0DDB95C2543 /* Pods */, - 0E07C05DC93911C736F9163ED8A5612E /* Products */, + 98D46EC37B626EB861E505D9911A6B4C /* Pods */, + 8C2957D7B83B63ED6950DC1F89AD93E3 /* Products */, 037C0CA694176A3C0915F62C9D20B3E6 /* Targets Support Files */, ); sourceTree = "<group>"; }; - 7FF6D0DC6576982B9137F657B4A8DF71 /* arc */ = { + 7EABF82AC8B75AB60FFA4D4094FA0800 /* ObjectMapping */ = { isa = PBXGroup; children = ( - 7B0AE93D99549D7F950DBDC8C99044A2 /* _FBSDKTemporaryErrorRecoveryAttempter.h */, - 8D3C1AE934C5238738DBEBC420E58024 /* _FBSDKTemporaryErrorRecoveryAttempter.m */, - 1231F575BA4305E598781441AF031F5E /* FBSDKAccessToken.h */, - 213CA7050878B04AD0B0FEEFDE26FC3E /* FBSDKAccessToken.m */, - D9BF17D12A6931CC30A002B5C28BF065 /* FBSDKAccessTokenCache.h */, - 40FE4E083CC5C40D0DF65A6B08724A1A /* FBSDKAccessTokenCache.m */, - 81E97AE375AD2C365E560E20CFA6DD4A /* FBSDKAccessTokenCacheV3.h */, - 0AAEA066289DB63479C8EA3E37BC7E15 /* FBSDKAccessTokenCacheV3.m */, - 7AC84CF788A165593B670BC7F8133D15 /* FBSDKAccessTokenCacheV3_17.h */, - B4D5CA49244C779E343DF9F173C32D69 /* FBSDKAccessTokenCacheV3_17.m */, - 0E780E029F38CD5DC4D44B959AE7B2CF /* FBSDKAccessTokenCacheV3_21.h */, - E736754D92F661C38E69F1CD3C7845B0 /* FBSDKAccessTokenCacheV3_21.m */, - 0CA2B777015AD911501F34BE9E2A08EB /* FBSDKAccessTokenCacheV4.h */, - 486A8EBF63F7D80E6BB3BF1ACD672CFD /* FBSDKAccessTokenCacheV4.m */, - 173E06370DF9F26EB5591EE929B03D16 /* FBSDKAccessTokenCaching.h */, - C3D4F1A7841BFF26FD3010CAB4A45340 /* FBSDKAppEvents.h */, - 60496328DA2C2D4EF5E4E2C9933AACD9 /* FBSDKAppEvents.m */, - B9A968895EE338B1992703020E6AA2A9 /* FBSDKAppEvents+Internal.h */, - BA2696770D8582A18F63F39A1AE5A973 /* FBSDKAppEventsDeviceInfo.h */, - 1F5232ABD627549C1BEDB8630661C661 /* FBSDKAppEventsDeviceInfo.m */, - 037FA6D5161E6EA0F72B070763EA805A /* FBSDKAppEventsState.h */, - F0CB7F600F18B609668913010F45E215 /* FBSDKAppEventsState.m */, - 6447323ED6AD2EC1483AA3C66091EE93 /* FBSDKAppEventsStateManager.h */, - 9826CDA12FAA5BC9CEF003E172733136 /* FBSDKAppEventsStateManager.m */, - DF22EF5561792630E4B16C5A5D546054 /* FBSDKAppEventsUtility.h */, - 3B388397746D26347C7AE282AEB53D77 /* FBSDKAppEventsUtility.m */, - 7FEED7FB2327B849D9B3FB01D3E04329 /* FBSDKApplicationDelegate.h */, - D2FB78825DE91D3944F3483650D27E29 /* FBSDKApplicationDelegate.m */, - 4F8BEA71B93C60E891B29C80177AEC59 /* FBSDKApplicationDelegate+Internal.h */, - DF2A4D83628FCB3153D053BF5093B58A /* FBSDKAppLinkResolver.h */, - FC1F61CB54C0673DD6D3F506261C1797 /* FBSDKAppLinkResolver.m */, - 21378AD860758D2EA2336B59DC09BB68 /* FBSDKAppLinkUtility.h */, - F7E3E2499E10690D5CDBED7CFBB46CF4 /* FBSDKAppLinkUtility.m */, - 9671F1EB06ECFCB5039E830159A8B807 /* FBSDKAudioResourceLoader.h */, - EB7387ED21F22A0C3ACF3899E4EF7872 /* FBSDKAudioResourceLoader.m */, - B04554029C51C04C827384E9A03CC281 /* FBSDKBase64.h */, - C0E3792F488D1F767C3F48F576C16951 /* FBSDKBase64.m */, - 28C24077DDE26572ABFDFFBA58AEF0D2 /* FBSDKBoltsMeasurementEventListener.h */, - 9BA62A8E667CE97DE59304A1724EC97B /* FBSDKBoltsMeasurementEventListener.m */, - 0FBCAB70FB9A6977DE8D64B963124B26 /* FBSDKBridgeAPICrypto.h */, - 731BCFC9FA06980186D87DFACC655FFE /* FBSDKBridgeAPICrypto.m */, - D98DD91B0C85D183FC3778CD8BF3EA40 /* FBSDKBridgeAPIProtocol.h */, - 310FB096BFCEB1B13B424CBD45CFD485 /* FBSDKBridgeAPIProtocolNativeV1.h */, - CD4655E526EE9E09B596D7ADBA95AEC4 /* FBSDKBridgeAPIProtocolNativeV1.m */, - F5B16E71107186CBE636A34F02C7C0DC /* FBSDKBridgeAPIProtocolType.h */, - D2DEC5DFFD198D1C75250B16D5369348 /* FBSDKBridgeAPIProtocolWebV1.h */, - 35DC0FA9CFA673AEF41AF09AA45DFD4B /* FBSDKBridgeAPIProtocolWebV1.m */, - 29545B0051D4759CE30F62B98CE37FCB /* FBSDKBridgeAPIProtocolWebV2.h */, - FE17A124811A1964D6CA532CA4312C8C /* FBSDKBridgeAPIProtocolWebV2.m */, - A4371F9C1BEB37C1C9A7F487E96B039C /* FBSDKBridgeAPIRequest.h */, - 4E8EC5CFE550AB9001C39619CF9FB4D4 /* FBSDKBridgeAPIRequest.m */, - D4A6B0E6E31C764CA9C4AE79EB0572D4 /* FBSDKBridgeAPIRequest+Private.h */, - DFD5810B96B239C3591705FE5D26D379 /* FBSDKBridgeAPIResponse.h */, - D748BF0E60AF7374125A323AB6FA6176 /* FBSDKBridgeAPIResponse.m */, - C206887391506A13483E7EBD66940BB2 /* FBSDKButton.h */, - F8562AEEC62C495A2C6A5DCD3FA7ADDE /* FBSDKButton.m */, - B9D34B12F05BF9127D139B7586C718A0 /* FBSDKButton+Subclass.h */, - E8152227AD2D6CE25BC7888D919F6BD3 /* FBSDKCloseIcon.h */, - 0CBE41855C229057359338A397CF9CBF /* FBSDKCloseIcon.m */, - 421AA4D00B6B66524A46DC0728150287 /* FBSDKColor.h */, - 3E592A12CBAE13CEF22ACF96543534AE /* FBSDKColor.m */, - EE27DAB32337BD835F6F1C44CE941739 /* FBSDKConstants.h */, - 2965F8E850F9EB3EA40B7FDBC0F6924E /* FBSDKConstants.m */, - ADF62BE10B4A5995FC90E5E1DF736C2F /* FBSDKContainerViewController.h */, - 5077028CC903E90AEB2806C8A93C10A6 /* FBSDKContainerViewController.m */, - CD2A28C739FE44128E510AA92662F1E1 /* FBSDKCopying.h */, - 68C02417550547218FA95151404F94A5 /* FBSDKCoreKit.h */, - 83DE73D13A43E32C92686B974DE323D3 /* FBSDKCoreKit+Internal.h */, - 8470CA3B7EA842B7D1BE44214C739AF0 /* FBSDKCrypto.h */, - DD5C257CFF734FBADEC42260C86AF53A /* FBSDKCrypto.m */, - D4B02834ED165224ED2B72E17A23F1C7 /* FBSDKDialogConfiguration.h */, - 9CE1ACDB733D2C97F7C82EA9FB83836C /* FBSDKDialogConfiguration.m */, - 05A01B956AE10C43AD0F5B2B2B7920BF /* FBSDKDynamicFrameworkLoader.h */, - 504CFD03CAFDA04600823DA3FA4724B7 /* FBSDKError.h */, - 0BD4E2FDA8D2C7FF9BEBBCB6D90B725F /* FBSDKError.m */, - C8C072F8CBBD8377A84639A146342212 /* FBSDKErrorConfiguration.h */, - 768A924021D993B1CF8F4AA7BD2A0B5A /* FBSDKErrorConfiguration.m */, - 8B270479704A7D09440A3A5A8C04C228 /* FBSDKErrorRecoveryAttempter.h */, - 94AC9DE3CACB9F94683FD063FBB0D29B /* FBSDKErrorRecoveryAttempter.m */, - 656A6050B3AB59B9F95CC2C4394EC1D7 /* FBSDKErrorRecoveryConfiguration.h */, - 91029F40DE711320BF2AA3DF5F22A51C /* FBSDKErrorRecoveryConfiguration.m */, - 9E63031380A944E9403D3B32AD1E27D4 /* FBSDKGraphErrorRecoveryProcessor.h */, - 58F9FC465CA00C27492735D604B485D3 /* FBSDKGraphErrorRecoveryProcessor.m */, - A3E2D61AF8A35A030529BBF31DCB63EF /* FBSDKGraphRequest.h */, - FDE18DC658FE492CB30B98AA058CD6FA /* FBSDKGraphRequest.m */, - 46326E5CA01311B8CBC725FB12585BCE /* FBSDKGraphRequest+Internal.h */, - DA45B085FFDF032332BDCB8BFF793E5C /* FBSDKGraphRequestBody.h */, - 2A5B85D86C64A90A0CF498813B504388 /* FBSDKGraphRequestBody.m */, - 16AA64D1CEC68C44DEDAD61DAFB42709 /* FBSDKGraphRequestConnection.h */, - D347E102CA6826F9924372BD14C67494 /* FBSDKGraphRequestConnection.m */, - 1019C96E930FDF66BCD79751678FFFF6 /* FBSDKGraphRequestConnection+Internal.h */, - 01577EF1EEDCE5208D4B8AC6FDC7CC0B /* FBSDKGraphRequestDataAttachment.h */, - A8279D26889EDF822F6A7F2AEC767E66 /* FBSDKGraphRequestDataAttachment.m */, - 373C4D681FFCFABB37EFA7C0EDB3C9E2 /* FBSDKGraphRequestMetadata.h */, - 145AAF7E6CD426F5DC9079DD9214733B /* FBSDKGraphRequestMetadata.m */, - BFB1907C3EE1ADA7D44437276AC93C07 /* FBSDKGraphRequestPiggybackManager.h */, - 0100E24D37FE9C4A3412983EC266C1C7 /* FBSDKGraphRequestPiggybackManager.m */, - CFBF92A39FCC2FB32797855AB85DCAAE /* FBSDKIcon.h */, - 7ABE21AAB21F6820C93F75F77BA84A8C /* FBSDKIcon.m */, - C49F84564221E62FADF63F94A1EA171D /* FBSDKInternalUtility.h */, - BC537E2F269396073213A29C99B4BFB8 /* FBSDKInternalUtility.m */, - 0EF150B806961F2973DC836A0D2A1391 /* FBSDKKeychainStore.h */, - 52CF96E683AFDF73C07731C7ADDADC31 /* FBSDKKeychainStore.m */, - 08C17176133A418BBA5506240483F44C /* FBSDKKeychainStoreViaBundleID.h */, - 4523E95A8F9A0D756D54DFC5E768BAEB /* FBSDKKeychainStoreViaBundleID.m */, - 3678FC88ECC9E598059E5183A37EDEE1 /* FBSDKLogger.h */, - 00A6001B9377F35CFA12A27639003F73 /* FBSDKLogger.m */, - 63D635232970F5FD839031F4052A247F /* FBSDKLogo.h */, - 363A2C942125F80203914292454D9AA9 /* FBSDKLogo.m */, - 99448AE40302A804BCEE91E92302B14D /* FBSDKMacros.h */, - A5EC9E79B357B5A2AC105BD544952297 /* FBSDKMaleSilhouetteIcon.h */, - B6DAE6FCB32112F6B277354CCD641DFB /* FBSDKMaleSilhouetteIcon.m */, - 59A54DFF04E955ECF7F946017F365A27 /* FBSDKMath.h */, - E4EE8B2F0AF96372A1E5A8E576C9B17A /* FBSDKMath.m */, - A64CECFF3E3D0A64DA3BF8E6FB583C41 /* FBSDKMonotonicTime.h */, - DA692944B964141F5AC05B406C0139AE /* FBSDKMonotonicTime.m */, - 4DA381E5D6515F0A9C84527EF815CA28 /* FBSDKMutableCopying.h */, - 5AEE4D8F9683C8D1ACEF10CAF4E41A9C /* FBSDKPaymentObserver.h */, - EC53BB2A4757BDC90938CF004EC14FD9 /* FBSDKPaymentObserver.m */, - 194BBF93E1D47E864E12261443E6F23F /* FBSDKProfile.h */, - ACC5D57E516CFFB2CE3244680661340D /* FBSDKProfile.m */, - 7F9AF6687FB731435E4D8A667BC21448 /* FBSDKProfile+Internal.h */, - 1D8C0D8749CEE57E58CE3B5262781F8C /* FBSDKProfilePictureView.h */, - E353BD446B09E846E43AE7A8C9FBE5AA /* FBSDKProfilePictureView.m */, - 9D485AE7D7829E5043DA9B3788867222 /* FBSDKServerConfiguration.h */, - 3EF647DA4D46882EAC603DA80B15C546 /* FBSDKServerConfiguration.m */, - 15505CAD38B537EF229C41382091B2B7 /* FBSDKServerConfiguration+Internal.h */, - 005EDF3610A35FCCB1EC8C406162532C /* FBSDKServerConfigurationManager.h */, - BCBA64F9DA348CD22FB1AC87B9F75ACC /* FBSDKServerConfigurationManager.m */, - FE161616D496831D4089B8F6813DBE39 /* FBSDKServerConfigurationManager+Internal.h */, - 2041D4CFC252E37771FDA0674BAC5493 /* FBSDKSettings.h */, - 2CCE2187DD9A71F1848E14301ED5B204 /* FBSDKSettings.m */, - 0820B0D5F4674F138EA3BB3292D26CD0 /* FBSDKSettings+Internal.h */, - B385E214776DF89692B91553D7FCD7B7 /* FBSDKSystemAccountStoreAdapter.h */, - 1EC4B2DFF792D6E7C2B1939641ED637C /* FBSDKSystemAccountStoreAdapter.m */, - 202A67338938E6682685B9114E8F7E4D /* FBSDKTestUsersManager.h */, - 8A3F94D10D8725691A1ABC86A1405D5C /* FBSDKTestUsersManager.m */, - FF107198F4983B8531483E65440A0F15 /* FBSDKTimeSpentData.h */, - 421972FDDA0AE2550E0FB8F3DF8B6CB1 /* FBSDKTimeSpentData.m */, - FA149A0B2AF7E3F3EC903816EC962CFA /* FBSDKTriStateBOOL.h */, - 354D71ECE03FF896929A5DF65F72CA5D /* FBSDKTriStateBOOL.m */, - 948C70E84F724FF8F752385A5BD920DF /* FBSDKTypeUtility.h */, - 90EEFECBB8ABE95AB2BD379AE1A08389 /* FBSDKTypeUtility.m */, - C3F7D1EEFCFA50F7F774EDE30F5EE02B /* FBSDKUIUtility.h */, - 37AC900D11C191E04655F282A675E5E0 /* FBSDKURLConnection.h */, - D558BDA6C0DE3DCBFD4EB1B7FB8D2C72 /* FBSDKURLConnection.m */, - CCB649BFD246522D91365614C0B9DD9D /* FBSDKURLOpening.h */, - A367DA3EC3F8D359202159E683A9BB6F /* FBSDKUtility.h */, - 347915ED2D892D50E616DA8EACB44960 /* FBSDKUtility.m */, - D31B782B1DDF351A513DA07076DEB77A /* FBSDKViewImpressionTracker.h */, - BB08F921B445EECE7EA71D6B4554FF9E /* FBSDKViewImpressionTracker.m */, - 5D7F94B3DFD758F1C5AED31B6286D251 /* FBSDKWebDialog.h */, - A79078BF742E1C7360DBEE1FE59509E3 /* FBSDKWebDialog.m */, - 271C2DE3C7E7DE81A83712AE674A962A /* FBSDKWebDialogView.h */, - 856D46D1E0A3157D00390C58BC8DA218 /* FBSDKWebDialogView.m */, + C647E341C56F994FDA336B094DDC681B /* ObjectMapping.h */, + 776A46D7EBDABB85B1A452ED93BEFBF9 /* RKAttributeMapping.h */, + 2551AB6C3C2A1C521E0184550321DE02 /* RKAttributeMapping.m */, + 0D6A9F671AC5AAF2E4BDEE1D46C1A2DF /* RKDynamicMapping.h */, + 849262636C1FD7E1D283D86137BE70B8 /* RKDynamicMapping.m */, + 1EA0BB06D8B077DFC855CBF92505F74A /* RKErrorMessage.h */, + 6380D4168C668F109E1A03B20D714BBE /* RKErrorMessage.m */, + BCB59A851D792D3D60B16A08B9F07134 /* RKHTTPUtilities.h */, + 7DA6FF9AD89559AE8FE2FD106DCB87C5 /* RKHTTPUtilities.m */, + 65962B65C068EE02DAE719D8D70CA321 /* RKMapperOperation.h */, + 0803B22C601D5D4145A1B91DB87E04E3 /* RKMapperOperation.m */, + 433B51CC13747ACBE8AA93F02C6D784A /* RKMapperOperation_Private.h */, + CB3D0EFB3CB9EFB991A6BD44384669BB /* RKMapping.h */, + 40C31A1DA0DE91B3BDC70194B9B9E75B /* RKMapping.m */, + FBEB6D4BDCEFC529A9705D5228053B04 /* RKMappingErrors.h */, + FD07183D5459C1861CCC80EC5514A9AA /* RKMappingOperation.h */, + 6FE7C0F12060A4C3CEE3C5427762A616 /* RKMappingOperation.m */, + B7478D31F88F47602170505B415F4CEB /* RKMappingOperationDataSource.h */, + DECD8E5B530D5D0B9FB27660D6A00BA3 /* RKMappingResult.h */, + 903947141B4DCB4B32507DADE29354A1 /* RKMappingResult.m */, + F4EC41878B622B137CC4B622FC53F3ED /* RKObjectMapping.h */, + ADD34821324463B1C81B2802AFA7B01C /* RKObjectMapping.m */, + E5C990C91B211AE926078950B8630516 /* RKObjectMappingMatcher.h */, + C42E29EF756BB8A7BCE6151C6229BA3D /* RKObjectMappingMatcher.m */, + F25269A960ACE3EBB3FE45F44DE4D5BC /* RKObjectMappingOperationDataSource.h */, + 2DFC0AEEC2FC3F3A422A6A76F818E344 /* RKObjectMappingOperationDataSource.m */, + B037353120BA03ACEF0F5DA52B84530E /* RKObjectUtilities.h */, + 0673474C0D02C740FB04EE10B58213D9 /* RKObjectUtilities.m */, + 33A88DE3DA4EB5064A997FFAF0C23DCF /* RKPropertyInspector.h */, + CF3513EE8625253892B05EFF20F16B57 /* RKPropertyInspector.m */, + D4D4E125C0EFD510E0171C24783AD02F /* RKPropertyMapping.h */, + 8B9E4087FDB2FFD655EB8FA58B697B4E /* RKPropertyMapping.m */, + E49DAAC9A8E0D5362E749A6821734AF0 /* RKRelationshipMapping.h */, + 9A3DEC35A890AB8929D5A78F2D24DC7A /* RKRelationshipMapping.m */, ); - name = arc; + name = ObjectMapping; sourceTree = "<group>"; }; - 84996DF569A72E800921F16A58D2771A /* Support Files */ = { + 8C2957D7B83B63ED6950DC1F89AD93E3 /* Products */ = { isa = PBXGroup; children = ( - 9DC5F129D162F601A2EB31F819BCC00D /* Parse.xcconfig */, - 8C5315150FD5B5F202952CF7B1140BA5 /* Parse-dummy.m */, - 3055B7B57931D87F7E1D076B3EACD5FB /* Parse-prefix.pch */, + 6A45C57C5D3CBC79D400F49C075773AE /* libAFNetworking.a */, + BFCC23211BE47A527079FEF69772F5CE /* libBolts.a */, + E0E0D90BB11B78E84D92384725A9534E /* libFBSDKCoreKit.a */, + 9D7377386CC3EBA3E3B7C409D23C69B6 /* libFBSDKLoginKit.a */, + 979C040C22C6D7527C085E98ED8D71A0 /* libFBSDKShareKit.a */, + 80E5F5E0AE0F6B7B2757A6066BCC8612 /* libFoldingTabBar.a */, + C5F83C7A2BEAFF6FFAEAD7A6F73B7D49 /* libISO8601DateFormatterValueTransformer.a */, + 1D9362003B89F08493A37902350DA1BC /* libParse.a */, + 011534C01155F79E4047CADDE68EF6B8 /* libPods.a */, + FE3AAD9A2F31FBC9D00D7715F65FDB26 /* libpop.a */, + 80D183F090FB2841492B19FAC5CD77B6 /* libRestKit.a */, + 28ACD3CB82BEF500AB8A021A9907BF32 /* libRKValueTransformers.a */, + 34C584E3410A80115A9107E13C995E70 /* libSOCKit.a */, + F970BE5082817C3185CB918CBDAFE49B /* libTransitionKit.a */, ); - name = "Support Files"; - path = "../Target Support Files/Parse"; + name = Products; sourceTree = "<group>"; }; - 8EC76371940273004FE75954FB9D30AE /* Tasks */ = { + 934AFBAB81ECCF7F631DBEAE9DF1B13A /* Network */ = { isa = PBXGroup; children = ( - B9A3F443B3D92D2C8F03FFCD004B43E5 /* BFCancellationToken.h */, - AC5662D51E6E075238B8E1970100B60A /* BFCancellationToken.m */, - B2049AB603335D958370F042F249C577 /* BFCancellationTokenRegistration.h */, - D85AEEF23A439D7C61100E8D5EFE0203 /* BFCancellationTokenRegistration.m */, - 2AC4D864890FF57910E0C3F3ACE458D5 /* BFCancellationTokenSource.h */, - 2A73024D1555D614CEC62670F070F5A9 /* BFCancellationTokenSource.m */, - B5BC191314D1C949957752D5E562E183 /* BFDefines.h */, - 72320D3C2B4F77715F2449CF313C8A0F /* BFExecutor.h */, - 1766F952ED7D24BA1223FECFB809EAEF /* BFExecutor.m */, - 1B1D85199C350E1CC77B906C3E4938BF /* BFTask.h */, - C304A10CF6190FEEEE9590529DE3B5EA /* BFTask.m */, - F743580826B5C1B915C7431CC5442853 /* BFTaskCompletionSource.h */, - 589A686D162F058AE68A85DC19762E4E /* BFTaskCompletionSource.m */, - CB84FD2F2C4E8EE506EE2E7DEC8B5F9C /* Bolts.h */, - D03DA3189A149B152CEA7A11F9C76649 /* Bolts.m */, - B147CF02EE8864D4E87D27D74C926A6E /* BoltsVersion.h */, + 85B4596D7B3771E5ABD20C9631F9B18A /* Network.h */, + 3DDC10303447DF4E3E657F2B4AD92925 /* RKHTTPRequestOperation.h */, + 9086156C9220E522C597B7BE572F6BFB /* RKHTTPRequestOperation.m */, + 8BECD1A40487A504B56D704C9D21E36C /* RKManagedObjectRequestOperation.h */, + 078AB2530E4CDAB1E634AE38A5545949 /* RKManagedObjectRequestOperation.m */, + A4DD5212BA2630DC90D52AB2A7B05B85 /* RKObjectManager.h */, + 114DF71DB16E01CD9902FA71F5FCB868 /* RKObjectManager.m */, + 12148D9B34DE0B074CF161C3B74EA2F9 /* RKObjectParameterization.h */, + 73C100898C88FF4043F6002195DD6293 /* RKObjectParameterization.m */, + D5B9C19265F524EBC4ED733155E3DB3B /* RKObjectRequestOperation.h */, + 8A7550A91022A017F5AFB8DF01AAFDFA /* RKObjectRequestOperation.m */, + A8E3AF8A6E915006D004A9CF92CA325D /* RKObjectRequestOperationSubclass.h */, + 55B8770724B1C27628F366C0CF2D3B85 /* RKPaginator.h */, + A0A6F3B1842359B2087C2C8FE2CDB03A /* RKPaginator.m */, + CD158942FBF8358677B8D9A4BEA9332E /* RKPathMatcher.h */, + 09BC6A273BD14FEC82E66ADE94F2D7AB /* RKPathMatcher.m */, + 4521F82969CCAF3A290F34A7DA26A9DF /* RKRequestDescriptor.h */, + F4B09A465BA0ED9168954ACE5D869AD1 /* RKRequestDescriptor.m */, + AEA43D8F8666C7D28DA8F862B304C5B8 /* RKResponseDescriptor.h */, + BA0DEBD43672CEB35AC053C3EDBD0BF9 /* RKResponseDescriptor.m */, + 033F7B99C3A65CD435C0B7A09C59F876 /* RKResponseMapperOperation.h */, + 7AC2271F01F29748BDF976CEF2EE767A /* RKResponseMapperOperation.m */, + 8C78256463C46E887FB8962C96ADF343 /* RKRoute.h */, + 58E4CECC242634F51EA5250B5A8FF795 /* RKRoute.m */, + 868CF57091A5F8B47E4CF9B82CD4715D /* RKRouter.h */, + 0A36A67D8095CA8BA88F3D9C867BF723 /* RKRouter.m */, + C7FD5D8AEF9C721E9A8B50A73398561A /* RKRouteSet.h */, + 66C350784D8C52C699FE7DD47EF906FB /* RKRouteSet.m */, ); - name = Tasks; + name = Network; sourceTree = "<group>"; }; - 96B35301A98DC85CF3E789D00C82FCD1 /* AFNetworking */ = { + 98D46EC37B626EB861E505D9911A6B4C /* Pods */ = { isa = PBXGroup; children = ( - 8B012D386ED7D06A4EF5353DAB2DD66D /* AFHTTPClient.h */, - 2AE60E42A7DAEEDEA8449020B959B680 /* AFHTTPClient.m */, - EB41BA80088D3B05F30B5FE2B650F1E8 /* AFHTTPRequestOperation.h */, - 4FDE8A1A301D0824B588F44EE25B4664 /* AFHTTPRequestOperation.m */, - C98118F3A80B2EF7FE15655CF5DEBF93 /* AFImageRequestOperation.h */, - 457EA6762682C1C676C5980F65593923 /* AFImageRequestOperation.m */, - 7F5A634097C8C984304065334CBF5BCB /* AFJSONRequestOperation.h */, - 89638686460135E581F100965DB593A4 /* AFJSONRequestOperation.m */, - F323D6CA68A5402E8D8D781B37B2A91C /* AFNetworkActivityIndicatorManager.h */, - E566B5A1AF002DF94450B717E7E8A195 /* AFNetworkActivityIndicatorManager.m */, - 7358191BB91547CAE16F05DBDB1BE31D /* AFNetworking.h */, - 76C5BB7D9A288AE9D8A835E210188D21 /* AFPropertyListRequestOperation.h */, - 0AE7CF3C4BBBCA9F05072DF89F75C0B3 /* AFPropertyListRequestOperation.m */, - 82B067532E3BF3282258482B488C6D65 /* AFURLConnectionOperation.h */, - E758DEF5BEC8EEC9032BAC8EAEAA4C51 /* AFURLConnectionOperation.m */, - 8D4A5E0FFDBB5F59ACC2A7671E2EE4ED /* AFXMLRequestOperation.h */, - D3B208164182946BFFFE3BB33CF2BEC1 /* AFXMLRequestOperation.m */, - 6530D1C36D6D2481926600B02A05B330 /* UIImageView+AFNetworking.h */, - 6A4AD6C82C6BD994B92B71460DABC8FC /* UIImageView+AFNetworking.m */, - 62F2052A6198E568D3BCBF22C09868EB /* Support Files */, + F3E1399D1C84A330951106CBABE88495 /* AFNetworking */, + 072B748C4ABC47FF5DD09E14AFCFA80C /* Bolts */, + 7DA921C2C956313F56FEBC0296B7C6F4 /* FBSDKCoreKit */, + 328D5BB5F21E344E9FBB7B9C794DCDBE /* FBSDKLoginKit */, + 730A0971E2B05CA436436CFBECBFAA5E /* FBSDKShareKit */, + 443FE6FAC9F77ED18F698A1F1AD2DF9E /* FoldingTabBar */, + F857921DBBA1D9C322F3F67E01AFB360 /* ISO8601DateFormatterValueTransformer */, + 1ABD97751947F20E67D4F852B3655259 /* Parse */, + B5CD2A18216E1078206AFA80363085DD /* pop */, + 6D2B535DFEFC2D59F09AAFC33373431E /* RestKit */, + A04613DD58C52E9A63CB9D94B14E2294 /* RKValueTransformers */, + E6CD57F66907DFAC966EF1CEDD16256D /* SOCKit */, + C3E971172C19A0ACC450FC8DB45F69D0 /* TransitionKit */, ); - path = AFNetworking; + name = Pods; sourceTree = "<group>"; }; - 96D009122D3A910B98FD674C4F1970E7 /* SOCKit */ = { + 99D520B74A305C5859B3ACBF3975932C /* Support Files */ = { isa = PBXGroup; children = ( - F9A89F784DA1F7AF78D9C06E04DAFF30 /* SOCKit.h */, - 1FDC2AC9DD87123DFCCB762335374C3D /* SOCKit.m */, - 58F28BB65A4E60C0F3B1B5623B914693 /* Support Files */, + 655746194AED6433F130ACB5AA120F9B /* SOCKit.xcconfig */, + 3DD24718CA4BD9604C201D989FD03218 /* SOCKit-dummy.m */, + AA158698DE160B78310B78C6F5F5EEBF /* SOCKit-prefix.pch */, ); - path = SOCKit; + name = "Support Files"; + path = "../Target Support Files/SOCKit"; sourceTree = "<group>"; }; - 994F80D16536EFFF7BA6E2D07A9DA6DF /* Support Files */ = { + 9AD6A794574889432B6393E390E643E4 /* Support Files */ = { isa = PBXGroup; children = ( - 78A46E6623C4E1A7D565B7AC5751DE2C /* RKValueTransformers.xcconfig */, - 1537B3204A5DD70D808286FE603C4A97 /* RKValueTransformers-dummy.m */, - EEB6507B7B3A6A759DE71FB3D665F68C /* RKValueTransformers-prefix.pch */, + BF428BEC06706AA0A98B6805206833C2 /* RKValueTransformers.xcconfig */, + E8A1C16BDC310A2EF19DE55901CD5B41 /* RKValueTransformers-dummy.m */, + 1851F12158736155A52C64E33E513999 /* RKValueTransformers-prefix.pch */, ); name = "Support Files"; path = "../Target Support Files/RKValueTransformers"; sourceTree = "<group>"; }; - 9ADBD9D7E7BDC1CE457493113BE6A09B /* RKValueTransformers */ = { + A04613DD58C52E9A63CB9D94B14E2294 /* RKValueTransformers */ = { isa = PBXGroup; children = ( - F3BDAD35FE37E535B22528CF954B4332 /* RKValueTransformers.h */, - 53750007AA7392F76DBC9237B62429C9 /* RKValueTransformers.m */, - 994F80D16536EFFF7BA6E2D07A9DA6DF /* Support Files */, + 37FC535483D9258C485125E0488ED3EF /* RKValueTransformers.h */, + 5DDC6BF6D637CEFC8BEDA82F87D0A60D /* RKValueTransformers.m */, + 9AD6A794574889432B6393E390E643E4 /* Support Files */, ); path = RKValueTransformers; sourceTree = "<group>"; }; - A07760E449229D464886128FBB584239 /* Support Files */ = { + AB60DD59D35FBC4FEF669D67E4191C38 /* Support Files */ = { isa = PBXGroup; children = ( - 7E54575097CC4D7273F152CBCC1DE9FB /* FBSDKShareKit.xcconfig */, - A790CE27C36D138858150ED6C2FC85E5 /* FBSDKShareKit-dummy.m */, - F43FCDFCE19EE9AB392AF998DE9DF52F /* FBSDKShareKit-prefix.pch */, + 19FFE36E5537E1838031F0725CD641C2 /* Bolts.xcconfig */, + DA196AA463D20F7402232B546DE1EEC4 /* Bolts-dummy.m */, + 83A7B0C8AF063198C8EBF6559688D469 /* Bolts-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/FBSDKShareKit"; + path = "../Target Support Files/Bolts"; sourceTree = "<group>"; }; - B00045A969C9B957931CDE72F26ADF92 /* FBSDKShareKit */ = { + B3D1D13E0C6553800746CB8FD61CF946 /* Pods */ = { isa = PBXGroup; children = ( - 85A9C0088D1A20CD6084587FE37E8706 /* FBSDKAppGroupAddDialog.h */, - 52249F35F2B3F990A6B5460810409C13 /* FBSDKAppGroupAddDialog.m */, - 878D09AB47A4BDD9D340540825C9E015 /* FBSDKAppGroupContent.h */, - F89DFF8EBC2C4ED2A61178F8775BBBE3 /* FBSDKAppGroupContent.m */, - 9A8BB3FBFEE9E1BDDB295037754F4DEF /* FBSDKAppGroupJoinDialog.h */, - FF5EAF38BE17B63D9DB9D69544387A2B /* FBSDKAppGroupJoinDialog.m */, - 568923D709EECAD0783955444A4654F9 /* FBSDKAppInviteContent.h */, - 1E2286118EDD86F67D14DA0213725FB6 /* FBSDKAppInviteContent.m */, - DA6483DCB5207821171D8E1785A354EC /* FBSDKAppInviteDialog.h */, - 1B632D115A665AE3E0A0F24A1BF865D7 /* FBSDKAppInviteDialog.m */, - 3B79F3FA1E8F365CB494021D4EF3A3C1 /* FBSDKCheckmarkIcon.h */, - 664DB729E26FCE7792E743269AA1D35F /* FBSDKCheckmarkIcon.m */, - 4E2D4FECA8A777A6DD1410FCFBA85EBA /* FBSDKGameRequestContent.h */, - 1039AA115A854C64209875E6B8B20ADF /* FBSDKGameRequestContent.m */, - 96AA4B508FBFE9971F929FB061B14436 /* FBSDKGameRequestDialog.h */, - 247CE7F46CACB36C92D0EF9B3F9FB9FF /* FBSDKGameRequestDialog.m */, - C3A37573B0B483DCF4CB2F542816D68E /* FBSDKGameRequestFrictionlessRecipientCache.h */, - 4429585279C58269AAE37EC7814214BD /* FBSDKGameRequestFrictionlessRecipientCache.m */, - 7C12288DE642EF37C6B63C07FF664190 /* FBSDKLikeActionController.h */, - 943C0E46DB3D37D67FFBB0E81F8082D7 /* FBSDKLikeActionController.m */, - 262AAA5A94DB64464A971372C0A5C98D /* FBSDKLikeActionControllerCache.h */, - 71C1EF327C1FCABF7C18FBE944C3E96B /* FBSDKLikeActionControllerCache.m */, - 83EAF6F3D84D5233748529A8E8CB094D /* FBSDKLikeBoxBorderView.h */, - A911FD2DE04BBABF90935B374E405983 /* FBSDKLikeBoxBorderView.m */, - 0D5EC58BD4863BEC2A2723C8FA5FE9B0 /* FBSDKLikeBoxView.h */, - 60C56926A1A601A3101BC398EFC92298 /* FBSDKLikeBoxView.m */, - 65911DEF87A9DDCA7864D750D03DCF2A /* FBSDKLikeButton.h */, - 60B2A3058DFFA81A2091F7C428415666 /* FBSDKLikeButton.m */, - 81A5DB14272C6EBC7DA612E0D8FBD00A /* FBSDKLikeButton+Internal.h */, - C6300BC631657D6ADCB1225268EF89BE /* FBSDKLikeButtonPopWAV.h */, - 9E43B3049BD47C0D7F0EE422E4818AC6 /* FBSDKLikeButtonPopWAV.m */, - 180FF861DE91C6A915DA7C2A92862B35 /* FBSDKLikeControl.h */, - 75FD15A68FD0466D803569EEB9CEBBAD /* FBSDKLikeControl.m */, - D18D463A980049E0F00BD51E3DEFF7D8 /* FBSDKLikeControl+Internal.h */, - 3BF1F39539444FAA093EACF74048A6D6 /* FBSDKLikeDialog.h */, - 5E44DF993841344E4915FFD31A91D4EC /* FBSDKLikeDialog.m */, - 572AFF6ED4416D1D697F241FDD4DA3FE /* FBSDKLikeObjectType.h */, - 0CE33DAD07C0504380B377D5B4E23F61 /* FBSDKLikeObjectType.m */, - B9E52C40CE2CD49772146B44F17F058F /* FBSDKLiking.h */, - B152467F018CE2A665F5C91D168A9A68 /* FBSDKMessageDialog.h */, - 74462B5EFF7650ED4744047E928DA11C /* FBSDKMessageDialog.m */, - 05CCBF923371A8F436D56A7223B904D7 /* FBSDKMessengerIcon.h */, - D52925260ED38A39BE15E60EFB8E7B49 /* FBSDKMessengerIcon.m */, - DBBFF8049227DD76047C14A4FC7F378D /* FBSDKSendButton.h */, - 4DA39AA231A2BC6DEF831A837F406512 /* FBSDKSendButton.m */, - B0217E33F4AEC22A7E47353C29C06863 /* FBSDKShareAPI.h */, - 633C2A9E54BC58AA24FD4CB18067F314 /* FBSDKShareAPI.m */, - AC3C9929DCA15B6D58724D42C5BD2DFB /* FBSDKShareButton.h */, - 3AC646B2CF1A54F8852DB65ABDB82D96 /* FBSDKShareButton.m */, - 9F676232AD2D4E768D123E3880A987ED /* FBSDKShareConstants.h */, - 5D0CF790970A7CBA811F918B49965546 /* FBSDKShareConstants.m */, - 63BFA7CA55559EBDA4EFE89AE77C1E67 /* FBSDKShareDefines.h */, - B415178073B9AF9554447EA73F804B50 /* FBSDKShareDialog.h */, - 01FB35B0ADE41A152252E1ED0988B17D /* FBSDKShareDialog.m */, - 3D1A4EB19150431EC20AA5717EFD6B46 /* FBSDKShareDialogMode.h */, - E8466657B806FC125F113617F7DD42A9 /* FBSDKShareDialogMode.m */, - C94BA5EE86AA9925359209A89FD97B37 /* FBSDKShareError.h */, - 45E3175265DC81EF149FA06BB4EA951B /* FBSDKShareError.m */, - 357EF8470BF313B33261C55EB4D12327 /* FBSDKShareKit.h */, - 1142FF164E91B0154F7D1B3E3CCD129D /* FBSDKShareKit+Internal.h */, - F7C8F9BB226F40C4F7CE5B08939D6900 /* FBSDKShareLinkContent.h */, - 64D0D3AB1BF1748F064867B7CE0DB23B /* FBSDKShareLinkContent.m */, - 19F20D1F4CF5FCB81834DCE24BD63E00 /* FBSDKShareLinkContent+Internal.h */, - 74F217FA9548DBD823F25F1DA863850B /* FBSDKShareOpenGraphAction.h */, - 4720A959FBF253E6C8315EC7BE3FFEBC /* FBSDKShareOpenGraphAction.m */, - 6802B9BFD996D3B878D450B785AC2060 /* FBSDKShareOpenGraphContent.h */, - 10EABBE60B88CF3D2AF469F17208ADE9 /* FBSDKShareOpenGraphContent.m */, - FC83BAA3A130DE0ECB081A56D1DB7917 /* FBSDKShareOpenGraphObject.h */, - CB98CBDFC30DCA09820317B62E92F7F2 /* FBSDKShareOpenGraphObject.m */, - BEFC9E6A35A5430AE7926645007C9C25 /* FBSDKShareOpenGraphValueContainer.h */, - BC784E483E0153507432EFCEFBC5638E /* FBSDKShareOpenGraphValueContainer.m */, - FE19DAED716CA2A2722DED05F8DB92B4 /* FBSDKShareOpenGraphValueContainer+Internal.h */, - F16E9555C16A15C09F6E739388F4FE89 /* FBSDKSharePhoto.h */, - 35B3E5E386C38B964CF695D9AB977807 /* FBSDKSharePhoto.m */, - 8B3F27BBC16C6C75FB3E5345F12F61A9 /* FBSDKSharePhotoContent.h */, - 71197DCFE9C806E6F574A696BE01DFA8 /* FBSDKSharePhotoContent.m */, - CC5F6833B3EC9A54CD4FD6CAFC5E61B3 /* FBSDKShareUtility.h */, - E7CB4124E5934CC10279CE22C1F3D5E5 /* FBSDKShareUtility.m */, - 468E01C4FC5A39A8E37ECC56F44B8F65 /* FBSDKShareVideo.h */, - 76F892C34CC6406B1AB6E24B09138F86 /* FBSDKShareVideo.m */, - 326B318804906FA458A65108849C0F78 /* FBSDKShareVideoContent.h */, - 01B3303DA64A64E4B58FED1912BEFCDF /* FBSDKShareVideoContent.m */, - 462B2CA402744EDC499ADDCECB7402D4 /* FBSDKSharing.h */, - 96B789CF6E62B4AFFE38A3E4538927DA /* FBSDKSharingButton.h */, - 8CA5367E50A1A62A594A47FAA506499D /* FBSDKSharingContent.h */, - A07760E449229D464886128FBB584239 /* Support Files */, + 37DB56D75062CC75FCB0966E1C6E8A8E /* Pods-acknowledgements.markdown */, + 10834806BD7B412BC24F347361FA2C8E /* Pods-acknowledgements.plist */, + 272643F56613CA0D336AE3DBF19DC404 /* Pods-dummy.m */, + 6911BECA35E7518D864239B7E898EEF3 /* Pods-frameworks.sh */, + A1A36D34413696BE466E2CA0AFF194DA /* Pods-resources.sh */, + 4E762F23EC34ED4A6FF3312D84E33A40 /* Pods.debug.xcconfig */, + 98C98CDFB3F20F2925F6CD1F141BB14F /* Pods.release.xcconfig */, ); - path = FBSDKShareKit; + name = Pods; + path = "Target Support Files/Pods"; + sourceTree = "<group>"; + }; + B5CD2A18216E1078206AFA80363085DD /* pop */ = { + isa = PBXGroup; + children = ( + 9F7C74984ABBD35EBF1A84D46747BF45 /* FloatConversion.h */, + 78A05813E9EC11B010C6A344D9AAC05A /* POP.h */, + C70FA986190A848DD39EB171EF041F33 /* POPAction.h */, + 5FDB069FE07BA949728D658261EA3E40 /* POPAnimatableProperty.h */, + 5ADBAA054DAFCE013EB3EF9DF965F744 /* POPAnimatableProperty.mm */, + 7E0A91B803AD2D9F9BBC9C9C40485EFB /* POPAnimation.h */, + 0C43080C0B2655A28B3CE9D3DD9B32B2 /* POPAnimation.mm */, + F3D3B7CDCE9EF138FF8BB043F7239498 /* POPAnimationEvent.h */, + 996EADA337EAC02210FEC4506EB335B5 /* POPAnimationEvent.mm */, + 632D62E7B544FFB77F14C130A2EC4510 /* POPAnimationEventInternal.h */, + 325AD4A9548841B8B429CC3D00DF02E4 /* POPAnimationExtras.h */, + EF2907AA3AD4FE98405EC818A63855DA /* POPAnimationExtras.mm */, + 761DB1B71490B54C854E88186480B4EA /* POPAnimationInternal.h */, + 8707552112C343BFF840516C1AAD0D31 /* POPAnimationPrivate.h */, + 6467B92BD94142011900B81E0476CB0E /* POPAnimationRuntime.h */, + 54E5949F2C78F11D2017067D065794BD /* POPAnimationRuntime.mm */, + 5A5C02D17E47A222D470066E80F5230B /* POPAnimationTracer.h */, + 72B29870F05A80283BE95E71DEBEE1D2 /* POPAnimationTracer.mm */, + BC8D8339F84A5B54DDC0F0B6C03E6C30 /* POPAnimationTracerInternal.h */, + 11CBB787D4E85EE9F313E56D6B653B6F /* POPAnimator.h */, + 996415B7247FE7D0C37780B180517ACB /* POPAnimator.mm */, + 5251CF87DD5578A90ADED5D340FF960B /* POPAnimatorPrivate.h */, + 4CDA9E34CFAB4648EC74D9ED76EF02AC /* POPBasicAnimation.h */, + 96A6F76476CACBAADE4A258C71998683 /* POPBasicAnimation.mm */, + 280AB1BDCC3841953AE8E7E78F9326A1 /* POPBasicAnimationInternal.h */, + 09343BA3B921E20A6185A17744E53B63 /* POPCGUtils.h */, + 05A46A1CCAAB75FBBA2C67F460435143 /* POPCGUtils.mm */, + 09A74F4E5B1694ED02FEFEE3567FD5C4 /* POPCustomAnimation.h */, + 1C9E34AAA6316628D1EF4D8BC3CDCAB1 /* POPCustomAnimation.mm */, + 4659EF2651456627D2DF254CD1ABA4FB /* POPDecayAnimation.h */, + 55795C67F8572CA13753F14AC059940B /* POPDecayAnimation.mm */, + 64DFE094C387E0DA1F62DB6912006497 /* POPDecayAnimationInternal.h */, + C66092953B80DE287E77614DFA2D2FE3 /* POPDefines.h */, + 25913693021196FC72C7A8E7A937AFCC /* POPGeometry.h */, + 696513A0EDF7E7D3B1DA9E8871E05685 /* POPGeometry.mm */, + BDEF6D63702D3C9DE58BBBC7977D10BA /* POPLayerExtras.h */, + 79F07C09208B3EA7236791BBBDD1D459 /* POPLayerExtras.mm */, + A303568877AD7BACE17E962FDF4513C1 /* POPMath.h */, + 723C3B2158211623464D6751F8AB7101 /* POPMath.mm */, + 80519B32A7AC044BA72391DA03E6E140 /* POPPropertyAnimation.h */, + B53D5E1A96FE30D9B7F8D596BF9E2F80 /* POPPropertyAnimation.mm */, + 59F15D7F5CA85CC8436BD1872518AB18 /* POPPropertyAnimationInternal.h */, + BDC0554AEE7F2D9DF98C2D8FC049FD2A /* POPSpringAnimation.h */, + D3359292FE89A636801514727B628BCA /* POPSpringAnimation.mm */, + 7915DC37B74D252F701BF85B55880ACF /* POPSpringAnimationInternal.h */, + 1D50729BCCBCCC5A423CBB509507C3DC /* POPSpringSolver.h */, + 64E0C0D87C1527E39C8527751DB7D005 /* POPVector.h */, + 7F6E4B0E19B7E3633F89483FC21D852C /* POPVector.mm */, + 6A2F4083D494D045689BC3A072187C3B /* TransformationMatrix.cpp */, + DD2FCA295F0F6EC84DC796D623DC209F /* TransformationMatrix.h */, + 2CFCEB3A58ECB73BB6D930BB1A66A2DE /* UnitBezier.h */, + 25510258318D770B38C09C4CA0D2DC7C /* Support Files */, + ); + path = pop; sourceTree = "<group>"; }; - B26581610BB70A9CA9939B308037AB3B /* ObjectMapping */ = { + C3E971172C19A0ACC450FC8DB45F69D0 /* TransitionKit */ = { isa = PBXGroup; children = ( - 1801665BFA99C3E5F261CACB58723B11 /* ObjectMapping.h */, - 979F775694C8742A140AFEFE090CA61A /* RKAttributeMapping.h */, - FBA2D90AB903058236DD7AF5CE16650F /* RKAttributeMapping.m */, - 78A8CA3DC6231EBEE1E0835C4B5FCE5E /* RKDynamicMapping.h */, - 72E01F510DB4DF12750DF5F0ED31E9CE /* RKDynamicMapping.m */, - 2FD6AC1526EDBB971021943756B7A67D /* RKErrorMessage.h */, - C6BB6FF4ABE22CD5FED5099BB5DA52F2 /* RKErrorMessage.m */, - BAA0EDF40F153DD9E67C8C7F744785F8 /* RKHTTPUtilities.h */, - 542741718F1B59CF684D8D7D5EE9E4C8 /* RKHTTPUtilities.m */, - BF53A464C16A680DC9C16D7D05C05F74 /* RKMapperOperation.h */, - 1960AF182D01226FEBB84BF5AB083402 /* RKMapperOperation.m */, - 117FC8B2ADDE85F697FC85ECF51FD3F3 /* RKMapperOperation_Private.h */, - 05EF3ADB060D32A9DFF67851EBE647C0 /* RKMapping.h */, - 7F0B1E9EBA20A4C290F0895CD4B960C0 /* RKMapping.m */, - 10761AFEB4163029E0BB84E7271803E8 /* RKMappingErrors.h */, - 31A4AD66C6637BF2C615D2A5ACFDFB97 /* RKMappingOperation.h */, - 5B43B4FF57FBEA73DE52BF4AEAD1F36C /* RKMappingOperation.m */, - B4752C6F4E6E53E7A4CD10A743CBB4C4 /* RKMappingOperationDataSource.h */, - 7937DE6BBA72253E75BE2C99AD624094 /* RKMappingResult.h */, - 71C2E7C3225F1C71AB7801BD548C40BF /* RKMappingResult.m */, - EDB3A467B0EABBCD096D79DC9AC1FD8C /* RKObjectMapping.h */, - 85005E81A14B03A9ADDF308A1C17B784 /* RKObjectMapping.m */, - 33D211F268ABCC6126E0AA222AEFB496 /* RKObjectMappingMatcher.h */, - 6D53FE7781D3C1C29653F7E97CD587C6 /* RKObjectMappingMatcher.m */, - BC9D6013B80CFF5948B0AEBB731354CC /* RKObjectMappingOperationDataSource.h */, - 420484544B85996994118EC3B407FE6F /* RKObjectMappingOperationDataSource.m */, - 1F6776613E173DE4D99A1473A4C0B7A3 /* RKObjectUtilities.h */, - 5A03339B789E2FC72FB9CCFE5665A0C3 /* RKObjectUtilities.m */, - 2DF6012AC3FEDDC30928DC38FC317836 /* RKPropertyInspector.h */, - C829B0848EFB7C93E7C376D5D7D2C2D6 /* RKPropertyInspector.m */, - 96D3047DA13118A3FB60F3DBE4812F52 /* RKPropertyMapping.h */, - 47CEE063B791E2A75D02580633A5F373 /* RKPropertyMapping.m */, - 86E31A2D9DD96916FA15693B655848D1 /* RKRelationshipMapping.h */, - BD723A8B8848E0084E24732986ADB0F7 /* RKRelationshipMapping.m */, + 62923837C0899ECA2BAD6224F5A7B22E /* TKEvent.h */, + FBBB3B26B24BB1791ACE441DFDA19FF2 /* TKEvent.m */, + 4DA5437028A51B95A1C0B0B8B5CB334B /* TKState.h */, + 7CB6F2CF47DB783D84FBBB6F2B1A451F /* TKState.m */, + DAD657A091CF82605FA8A0100D16E83E /* TKStateMachine.h */, + A78C310CE96FB8C96AB74FE6A10686E7 /* TKStateMachine.m */, + 76BDB3E82FE4A935AACD2F637F371589 /* TKTransition.h */, + E83EDDC94D7F78C9A89A9BBF973667B6 /* TKTransition.m */, + 7F1DA5784F757925FC9B2C359AE8F07C /* TransitionKit.h */, + 2612628171849F4DEDE2DDD5C2B94566 /* Support Files */, ); - name = ObjectMapping; + path = TransitionKit; sourceTree = "<group>"; }; - B266F969C74DA0ED10F0759EC49E7B55 /* AppLinks */ = { + CE2D9BA208321FEB30B86BE7BEF38787 /* Support Files */ = { isa = PBXGroup; children = ( - 57F9B8722311F2DE9BFA34CD3DCA5DB9 /* BFAppLink.h */, - 5454AEF03510A2D84BEA0194B430C57D /* BFAppLink.m */, - 016FE71D37A737A72140AC6154407A41 /* BFAppLink_Internal.h */, - 19F270B7BF779B177C75EA8CFAAA76CB /* BFAppLinkNavigation.h */, - 113F75AFA14F88AEE7BCF0BBB4C858BE /* BFAppLinkNavigation.m */, - F5500331C2AE5ADC39A1AB40A74529FB /* BFAppLinkResolving.h */, - A93AAAD8AD7E644F7EC9EC8AA665569F /* BFAppLinkReturnToRefererController.h */, - FE83EAA7D7F81F996C8A1FCC962D6EED /* BFAppLinkReturnToRefererController.m */, - A1A2CA5B68B1C6F0052C73BE934D33D8 /* BFAppLinkReturnToRefererView.h */, - 16D7414B803B24894CDD90ED3E31C1AB /* BFAppLinkReturnToRefererView.m */, - B92A2CAEF825132FB7B172C9FFF479D2 /* BFAppLinkReturnToRefererView_Internal.h */, - 048FF1F23681E364A43114EA047AB00E /* BFAppLinkTarget.h */, - F632B4241467D0929F63833DA56E7443 /* BFAppLinkTarget.m */, - B36DC7EE87AFA9DC98ABEEA9F3A91C09 /* BFMeasurementEvent.h */, - 288890641419271C571594FA0568909D /* BFMeasurementEvent.m */, - 52FB1857E533909822A211A7F21E7067 /* BFMeasurementEvent_Internal.h */, - 04FD35F060DAF86D25973ECA13C4B1C6 /* BFURL.h */, - 62A64EB7D48743BA4492B0267BB0BC95 /* BFURL.m */, - C4B20C13881AFBB4E88D5826A0683F11 /* BFURL_Internal.h */, - B2572E05EB18D8E55337D23E1AE67E35 /* BFWebViewAppLinkResolver.h */, - 4B163E967FEAF0C769D85F0A3A1EEB95 /* BFWebViewAppLinkResolver.m */, + FF5B972C0D2221C57AE6060DE6C9A600 /* FoldingTabBar.xcconfig */, + FDF375C76C5BA4A7F1EA1C46DC3B142C /* FoldingTabBar-dummy.m */, + 3CE5F2F0D15646E1D82418047325DB76 /* FoldingTabBar-prefix.pch */, ); - name = AppLinks; + name = "Support Files"; + path = "../Target Support Files/FoldingTabBar"; sourceTree = "<group>"; }; - B3D1D13E0C6553800746CB8FD61CF946 /* Pods */ = { + D1A12668CBBAF479BBDDE11E900C7DFB /* Support Files */ = { isa = PBXGroup; children = ( - 37DB56D75062CC75FCB0966E1C6E8A8E /* Pods-acknowledgements.markdown */, - 10834806BD7B412BC24F347361FA2C8E /* Pods-acknowledgements.plist */, - 272643F56613CA0D336AE3DBF19DC404 /* Pods-dummy.m */, - 6911BECA35E7518D864239B7E898EEF3 /* Pods-frameworks.sh */, - A1A36D34413696BE466E2CA0AFF194DA /* Pods-resources.sh */, - 4E762F23EC34ED4A6FF3312D84E33A40 /* Pods.debug.xcconfig */, - 98C98CDFB3F20F2925F6CD1F141BB14F /* Pods.release.xcconfig */, + 67DBA3140A542C45905BA912DF9D6D93 /* RestKit.xcconfig */, + 6D169B7683E9DA4DE1D139D6CD10D190 /* RestKit-dummy.m */, + AA2DB152E74138129BF1919667D8AA5C /* RestKit-prefix.pch */, ); - name = Pods; - path = "Target Support Files/Pods"; + name = "Support Files"; + path = "../Target Support Files/RestKit"; sourceTree = "<group>"; }; - B445D30E7E199FDE3F32BE28EFDCA2C1 /* ISO8601DateFormatterValueTransformer */ = { + D29F10A74F6ECD83F33B3134ECE1076E /* arc */ = { isa = PBXGroup; children = ( - 24D7D9AD22022709F66EBFB6726D41E5 /* ISO8601DateFormatterValueTransformer.h */, - 12F4038DEE96BCA00C4F13577F8FB019 /* ISO8601DateFormatterValueTransformer.m */, - E8BE55CB57DEE8420789C65645ABEFF9 /* RKISO8601DateFormatter.h */, - 9D7D839938133223C5D03CF7E035527E /* RKISO8601DateFormatter.m */, - 5DD9B920B87D66939DDC49BA336BA03E /* Support Files */, + A585F71D8045AD5FFA838F5907C9DCFE /* _FBSDKTemporaryErrorRecoveryAttempter.h */, + 19A473DF4573D2A6FDD72DA3BA1C2C04 /* _FBSDKTemporaryErrorRecoveryAttempter.m */, + C537E17C3097299FCBF860A93C47B723 /* FBSDKAccessToken.h */, + 06292442821AF9572A443AF0D949122D /* FBSDKAccessToken.m */, + BCA4ADF879DDDE1CAAA0ABFB4BC7210D /* FBSDKAccessTokenCache.h */, + 17713158760C0CE314D469EF9DAB5E98 /* FBSDKAccessTokenCache.m */, + A0356870F75E493C4A0C432FFFDF4798 /* FBSDKAccessTokenCacheV3.h */, + 80E3A4DA55D79A2A163A82080683C403 /* FBSDKAccessTokenCacheV3.m */, + D9AA4942A33D49D6BD6342E82EF21F2F /* FBSDKAccessTokenCacheV3_17.h */, + B7B30077DB15E3549CCF53E8707A36D6 /* FBSDKAccessTokenCacheV3_17.m */, + 735D8A9263762B7D4E5C5EDB816A7CB6 /* FBSDKAccessTokenCacheV3_21.h */, + BF44B45F9B1A350C1FB2F6D209A9BC4D /* FBSDKAccessTokenCacheV3_21.m */, + 8496664844E09F7B412D05544D90E123 /* FBSDKAccessTokenCacheV4.h */, + B352E84B1EE885140F4F4DC84329D6CB /* FBSDKAccessTokenCacheV4.m */, + 1FB151E5B82946D404F611FAC81C546B /* FBSDKAccessTokenCaching.h */, + 6D7387AFD498FF6D486BEF5755B9D7B3 /* FBSDKAppEvents.h */, + CA3482F3977AA386E991A54C5181BDE1 /* FBSDKAppEvents.m */, + 1EC237868E24D8CCBA8AA21DB4F43584 /* FBSDKAppEvents+Internal.h */, + C1B7244F3402CF0B20BFF0228719CDD1 /* FBSDKAppEventsDeviceInfo.h */, + 503DF747F3430012E621A5BB819767FB /* FBSDKAppEventsDeviceInfo.m */, + E75B973B4239A8C33C3DF18D0F41168D /* FBSDKAppEventsState.h */, + 3D1059A8B21D1214B8EA1A8BCF6B2CE5 /* FBSDKAppEventsState.m */, + A2FAF2092D4C51EAE9E68E2B1EB0071B /* FBSDKAppEventsStateManager.h */, + 57EA8E1B5446775F4608110823A9BF8C /* FBSDKAppEventsStateManager.m */, + A16A70655423A834331503E4979C4422 /* FBSDKAppEventsUtility.h */, + 8904DD3C8A8AC8A1A2F48DEB0DBC1B95 /* FBSDKAppEventsUtility.m */, + D8B4BCA52E13031B048A091F56EDD1FE /* FBSDKApplicationDelegate.h */, + 7558DBD1AF61B17AF39F3565B9F68601 /* FBSDKApplicationDelegate.m */, + CA018EEB50C81D92939C0E4379941FE9 /* FBSDKApplicationDelegate+Internal.h */, + 5783E79BEDB98581985EEC5EEAD67953 /* FBSDKAppLinkResolver.h */, + 0FBD3B84E14ADBD2E513A3522C2777DC /* FBSDKAppLinkResolver.m */, + C651AC06095B97EDAEF872B6D7032F4E /* FBSDKAppLinkUtility.h */, + F9DBE01AF3666AF5DF673F0B8302A852 /* FBSDKAppLinkUtility.m */, + 83831950A74E93412A274C95A90D1337 /* FBSDKAudioResourceLoader.h */, + B8046097AB97D9EBA30FEAF579C44F56 /* FBSDKAudioResourceLoader.m */, + 2784369F5F5CCA4ADE551377F245E131 /* FBSDKBase64.h */, + 56FE36E9C6BEFFC89DD1BC36E6289234 /* FBSDKBase64.m */, + 41DE8F8508C70E584E9DC322D6E30DB1 /* FBSDKBoltsMeasurementEventListener.h */, + 8030921BFF7BB8CE71AE970906855522 /* FBSDKBoltsMeasurementEventListener.m */, + 950E0A9F91ED212D2423C57E6D94CE04 /* FBSDKBridgeAPICrypto.h */, + FA60E1C8D40A78F03AAD7CA1CAE03991 /* FBSDKBridgeAPICrypto.m */, + 502875FAB22E086DDEA2AD3FB860D1A5 /* FBSDKBridgeAPIProtocol.h */, + 9CE70D7D33DCB5A7B77D431309FF7DED /* FBSDKBridgeAPIProtocolNativeV1.h */, + BC931BFEE302F10CF84316FC396B1F01 /* FBSDKBridgeAPIProtocolNativeV1.m */, + 568C2C82ED942F4F6D68EBFBDD16316F /* FBSDKBridgeAPIProtocolType.h */, + F7114C7234DA9F23563BF6C254E6458A /* FBSDKBridgeAPIProtocolWebV1.h */, + 95FF2C409A7211FB7720DA60E56153C4 /* FBSDKBridgeAPIProtocolWebV1.m */, + 2A17ADE2F078B621C983D99D2F0F0047 /* FBSDKBridgeAPIProtocolWebV2.h */, + AE15675496460EEA4051AF5F4AB4E504 /* FBSDKBridgeAPIProtocolWebV2.m */, + 6B7304E8EFDCC873E1CE3D2CA2076A74 /* FBSDKBridgeAPIRequest.h */, + F44E8E904E1CD028316E671E43453DCE /* FBSDKBridgeAPIRequest.m */, + CBA6686079E7409ED27CC9A6ADEBF36A /* FBSDKBridgeAPIRequest+Private.h */, + C01B234F69300CBE9F042A18823A2C64 /* FBSDKBridgeAPIResponse.h */, + 2E7F67EBB1F0265AF0F708FA1006B162 /* FBSDKBridgeAPIResponse.m */, + 5A840F03EBE584ACE4D413A297B04FC9 /* FBSDKButton.h */, + DA4A6D24A88D4B18ED3D60681DF68270 /* FBSDKButton.m */, + 79EE570F7AF0D238D396B8C1BD1233F8 /* FBSDKButton+Subclass.h */, + ADCF28A6ED4B159F06F12E95D86E08B2 /* FBSDKCloseIcon.h */, + 7719F6B5924888F0A267790B6E5647FD /* FBSDKCloseIcon.m */, + D68CBFCA3F276272B2040E6469C8D1DE /* FBSDKColor.h */, + 615339A2EDD3CE627A27EBB1ECFF21B3 /* FBSDKColor.m */, + 2E867F3D72745F4BA824FC362CEBFACB /* FBSDKConstants.h */, + 48C62F55A4F3241648089904B527F6D1 /* FBSDKConstants.m */, + 2AA04EC3FE92A62CDADA2A69B932DDF3 /* FBSDKContainerViewController.h */, + 4C3FA9E55331EB6F5C9D6ABE4173AF97 /* FBSDKContainerViewController.m */, + BA69ED7E54B79F2B468E042414006FC8 /* FBSDKCopying.h */, + 2423BDB586DF4DF3F1525A1B5C40C54F /* FBSDKCoreKit.h */, + 95A9E38BEC3EF5836FF1194D04DDB98F /* FBSDKCoreKit+Internal.h */, + D9C1F4F92487D9DCADCD60039710D816 /* FBSDKCrypto.h */, + 860BB3AFC2DD08EF4599D8D42484D2CC /* FBSDKCrypto.m */, + F48BCECC8EA184F5975C3532819CFFA2 /* FBSDKDialogConfiguration.h */, + E0976F3A16E6127C870E863609F006DF /* FBSDKDialogConfiguration.m */, + 74338BD705AD4CAADD5CA90BD8EF2D96 /* FBSDKDynamicFrameworkLoader.h */, + 1851DD5C5804EC9A837131EDAC8D3EDB /* FBSDKError.h */, + CD1F87198E6B2738076E71BB2C4A8C71 /* FBSDKError.m */, + 49B69C4B030D1D72B8261D35EB560A56 /* FBSDKErrorConfiguration.h */, + E436D932FA7C17E15674EB32E957ABE2 /* FBSDKErrorConfiguration.m */, + 9FE12F1A4097AA56DD490CFF1B57E4AB /* FBSDKErrorRecoveryAttempter.h */, + 1B4CFCBF40F579D60F6CA51813334980 /* FBSDKErrorRecoveryAttempter.m */, + BDA6A8C4B5B6F7C4E38F45C438720C50 /* FBSDKErrorRecoveryConfiguration.h */, + 9AE4C9BDAE4E6537716122FED10B39E1 /* FBSDKErrorRecoveryConfiguration.m */, + 405BEEF0AFD44793580DDB9D43634820 /* FBSDKGraphErrorRecoveryProcessor.h */, + 5030E7EB9027091137C392A948E0D5A8 /* FBSDKGraphErrorRecoveryProcessor.m */, + CF6DFEAD49E3B96B670A4AB662D78229 /* FBSDKGraphRequest.h */, + CC27E380BD4D02E6D8E8A25280C06A29 /* FBSDKGraphRequest.m */, + F87C75C1F03CFABBB54EC631815288C0 /* FBSDKGraphRequest+Internal.h */, + B9BAFC471A7F7E390879132FBD1B3B21 /* FBSDKGraphRequestBody.h */, + B6E7D0F10FA61E6BAC091324113D02F2 /* FBSDKGraphRequestBody.m */, + FE89E1667DF47EC79AB1E8C414DE79EB /* FBSDKGraphRequestConnection.h */, + B40775302C0516B1FB09E3523DC34D30 /* FBSDKGraphRequestConnection.m */, + 7239EC1173010662F747781299C375DA /* FBSDKGraphRequestConnection+Internal.h */, + C3743DDF0F64379FD843ED463460FF90 /* FBSDKGraphRequestDataAttachment.h */, + 45911FDD1904204B994BBBABE59D8DAA /* FBSDKGraphRequestDataAttachment.m */, + 190B3059AD121705B18018211A6B6C66 /* FBSDKGraphRequestMetadata.h */, + 370FAC093160183505C296D12A84BF0A /* FBSDKGraphRequestMetadata.m */, + 4B9BFA03B5504E854577C5000A356AFB /* FBSDKGraphRequestPiggybackManager.h */, + A473C610615EE15F20D33C59B9CC54B8 /* FBSDKGraphRequestPiggybackManager.m */, + 7BA86EF4EAFD3D4475A169859BB0B633 /* FBSDKIcon.h */, + F2D002F7CD0CB8A3551420036A594D40 /* FBSDKIcon.m */, + 20EA58DC0A0DC1E01333E2DC71658378 /* FBSDKInternalUtility.h */, + CA8D44F0BCF9802F38A1799B6EBF1407 /* FBSDKInternalUtility.m */, + 42B37BE48C6B242CC345A82EFFCA35CD /* FBSDKKeychainStore.h */, + 6BFB7F5189C7630850B466033A6828EF /* FBSDKKeychainStore.m */, + 67CF036576967715D363A2E7C16E4AAD /* FBSDKKeychainStoreViaBundleID.h */, + CC228E158C60DD94DF7B3EA5E18D8125 /* FBSDKKeychainStoreViaBundleID.m */, + 9860C0C7692D5A2C0C40448F5323C485 /* FBSDKLogger.h */, + 8D28D5F66862955E51F3A4E12B34C7A6 /* FBSDKLogger.m */, + 947DE8E91AEF7DBF7FD80A52A76B2360 /* FBSDKLogo.h */, + B80B9804F9EC77183DFB3A54E58272CF /* FBSDKLogo.m */, + 851FD672C97DC80E95B543E7678B133F /* FBSDKMacros.h */, + 9D4E7099B46D1C3E524DA77BA96A3960 /* FBSDKMaleSilhouetteIcon.h */, + 650F210D5B2E4ADBF30ED15408D730D3 /* FBSDKMaleSilhouetteIcon.m */, + E511AFB10E1282BD8E6813EEEAD607E0 /* FBSDKMath.h */, + ADAFAB54F5C5506CF7186CD16CA90EFA /* FBSDKMath.m */, + 933D9439D53FAC2493C8D8F5ADD21D74 /* FBSDKMonotonicTime.h */, + 26A9B6AD16C16524DC90D9F1759B3E86 /* FBSDKMonotonicTime.m */, + 26BE12FA64DB24FF7A1DF7937AEF98D6 /* FBSDKMutableCopying.h */, + B163A0D63692C83B09ED63F3D357CC5D /* FBSDKPaymentObserver.h */, + 98D1A4CAC7340A038BDCFECC7E0BFE95 /* FBSDKPaymentObserver.m */, + 55DBD79D6CDD908C9E0151AF56A3EFCE /* FBSDKProfile.h */, + 4C86B91E8FA37A02DFCBC13C26C5599E /* FBSDKProfile.m */, + 3C4E2E6E86AEBB3B50EE86E4B1074A32 /* FBSDKProfile+Internal.h */, + E1657F05C4EF96882F28C1692CBF05CE /* FBSDKProfilePictureView.h */, + 11A34265733816DD6719407EE51BEDD9 /* FBSDKProfilePictureView.m */, + DC702CD32C7B1F95EBB4525985776E1A /* FBSDKServerConfiguration.h */, + 473792C704D2EB34B69FD30D4C8A4195 /* FBSDKServerConfiguration.m */, + E55C935E4DD635C29A2B334C8AB06254 /* FBSDKServerConfiguration+Internal.h */, + 3B5920113D86FC36BEBC6F899C9034F7 /* FBSDKServerConfigurationManager.h */, + 21E3824444DF9349B08182DF250A028D /* FBSDKServerConfigurationManager.m */, + 8DB170D4C4F763AED7B36159D448013E /* FBSDKServerConfigurationManager+Internal.h */, + B477BB1DB6E55636C30151FED839DBEC /* FBSDKSettings.h */, + DCE8B19B5BBBF2EEE591030CB12399C6 /* FBSDKSettings.m */, + B432A363E0081BD273051415B767D749 /* FBSDKSettings+Internal.h */, + E2E5158BDE2438D1F296202C6A65CAD9 /* FBSDKSystemAccountStoreAdapter.h */, + 9C13271F07F590F5CD4297A3A11F07EA /* FBSDKSystemAccountStoreAdapter.m */, + 57B625AE6C787AB113D7EF7F05FB0637 /* FBSDKTestUsersManager.h */, + 324AAABDF5EC040480FF7DD0137ACC3A /* FBSDKTestUsersManager.m */, + 2DDC81A1F4448D392C77D59D57719404 /* FBSDKTimeSpentData.h */, + 84E5CF3BD81C4C414BE88556EB18D08F /* FBSDKTimeSpentData.m */, + 1C268AB8BD173983B11C4C2D404A9C57 /* FBSDKTriStateBOOL.h */, + 592AA9AF2651D5C86E7E8D122F958616 /* FBSDKTriStateBOOL.m */, + 220DF0DD34431D9668F2D2A15D25B3E7 /* FBSDKTypeUtility.h */, + 1488210FE220BBA6CCA5EBE2C7D73FA7 /* FBSDKTypeUtility.m */, + D849F8915909B1847A03276B640112BC /* FBSDKUIUtility.h */, + 6BD1AFE5456BC7AAC15A5D308229EC88 /* FBSDKURLConnection.h */, + 7E03B26327B08731B36701D28A33B9C9 /* FBSDKURLConnection.m */, + 68FE49164D11028318A5BFC6389C361A /* FBSDKURLOpening.h */, + A9971360D666FDBC3DDD421157793868 /* FBSDKUtility.h */, + E4528F78B1F397E3730075143FD93C99 /* FBSDKUtility.m */, + FEE6386026272731739CFEE82C813032 /* FBSDKViewImpressionTracker.h */, + CA3CDC2D78E68FD7654C42F67C29EF3A /* FBSDKViewImpressionTracker.m */, + AEB3E3D5DFF77A79169D2E7390145CE7 /* FBSDKWebDialog.h */, + 5FC2F31E95438D43C0ACB4E6B5287B8D /* FBSDKWebDialog.m */, + 8DE9B680DB183FA614D58C42EADD38D7 /* FBSDKWebDialogView.h */, + 47B246252A39D38E7CC3D6CD2C4549AA /* FBSDKWebDialogView.m */, ); - path = ISO8601DateFormatterValueTransformer; + name = arc; sourceTree = "<group>"; }; - CC7D196E45BE148ABAFD7FE4B9D5DBA2 /* FoldingTabBar */ = { + E6CD57F66907DFAC966EF1CEDD16256D /* SOCKit */ = { isa = PBXGroup; children = ( - 3ACF71F0DC4813EA623149F93F528587 /* CAAnimation+YALTabBarViewAnimations.h */, - 581431A48237CC104D54A0C2870FDF20 /* CAAnimation+YALTabBarViewAnimations.m */, - 6A92D4243C0F137302709F07AA614754 /* CATransaction+TransactionWithAnimationsAndCompletion.h */, - 75495EC377930B0233AFC77A4D61575F /* CATransaction+TransactionWithAnimationsAndCompletion.m */, - C4A5204786239441709AD7ACC6C10DF1 /* YALAnimatingTabBarConstants.h */, - 3110767D99127E63D027AD02ABECB5CC /* YALAnimatingTabBarConstants.m */, - 821E516878F8F964D6941FE6C2AEB04D /* YALFoldingTabBar.h */, - 6699EE8CE193D5123B3CF8DC8EFC4CA1 /* YALFoldingTabBar.m */, - 6CAE8C5DA18BB8CA4DD074A31BA648D2 /* YALFoldingTabBarController.h */, - 2B9F9B80CBA1DEAEF33627D58AB7E3CE /* YALFoldingTabBarController.m */, - 560B96C78B0C4903D500B1084F59BB7C /* YALSpringAnimation.h */, - 66FDB0B731FFB4CE1465D2BF7FDCD263 /* YALSpringAnimation.m */, - 708E2A05386B4566A5D2D2BC686ACF19 /* YALTabBarInteracting.h */, - 0FE8823AC87A2EA7D2BF645AA039E957 /* YALTabBarItem.h */, - 91E000C46BBB39E5ED5C9A8FEC95F0CB /* YALTabBarItem.m */, - 7570B82DE211C26B079734047EEA1BAE /* Support Files */, + 5C4081A3EAA34140F505CCBE9D98C0C8 /* SOCKit.h */, + D011D1FC8B93C93581E9C03ABF791BCF /* SOCKit.m */, + 99D520B74A305C5859B3ACBF3975932C /* Support Files */, ); - path = FoldingTabBar; + path = SOCKit; sourceTree = "<group>"; }; - CE717DC41894FDFAB0EAAB3ACDAFD9EF /* Parse */ = { + EB57DDB3388FBC701046A1E93218737F /* Frameworks */ = { isa = PBXGroup; children = ( - 7E7A521656E2772319D441042C5D6FBB /* BFTask+Private.h */, - F786873C808C35EC234BC3F1215CB314 /* BFTask+Private.m */, - 321F060F2EAD3712AE8975662D9AE049 /* Parse.h */, - 2CA213D7D985D157E1F5FE2776AE93F4 /* Parse.m */, - 8BDEF7A52E57E764142D42EE5DB63FD2 /* Parse_Private.h */, - D1C051EE39EC2369E3712F32F65AAD73 /* ParseInternal.h */, - 94212D75F6067FFA601083EF41CC441A /* ParseManager.h */, - 246B31118F4482AFD1E5B6FBDDEE6EB2 /* ParseManager.m */, - DBF30E4A65710CFBCCC809C891B94888 /* ParseModule.h */, - D807F253C1FC0EAD584DFA49AC3AFFE7 /* ParseModule.m */, - 6A0D078B3F700A4B5BC98F3B41F44FDC /* PFACL.h */, - D02A52C086D84F65295E5DA1562069FC /* PFACL.m */, - D195E34301F1EADE93BB0B93F8BFAF0A /* PFACLPrivate.h */, - DE71C8926E171BD5AB6618D07D0A3797 /* PFACLState.h */, - 4E91BE2BF2B6ED7524B651D0202AC4E0 /* PFACLState.m */, - 3FD9787D3AC0A8EBB5A37E3E888F8DE4 /* PFACLState_Private.h */, - D13875E740DD491158EB8406E449FFEB /* PFAlertView.h */, - 9687B38FD53EC72E99246120219AFE41 /* PFAlertView.m */, - 9F25D79A6D9350DE097436ED2E549BE1 /* PFAnalytics.h */, - F3C909089E36795B0294E159BE83E353 /* PFAnalytics.m */, - CB5646F48F8BFA683EF37662695C41B2 /* PFAnalytics_Private.h */, - 646C67B4157CB47C91F3D55E7BFA577C /* PFAnalyticsController.h */, - 7963D53D53339137B7E1A3AB0F520174 /* PFAnalyticsController.m */, - 7DAC1FC2CA2D2B4A01038D5148555190 /* PFAnalyticsUtilities.h */, - 9151CBFA951CC2C02B03C255F48BDFEE /* PFAnalyticsUtilities.m */, - 29076EEBE727F01C11336FE621EEA957 /* PFAnonymousAuthenticationProvider.h */, - 1CB585E247C1F3D47072B64F704F03B7 /* PFAnonymousAuthenticationProvider.m */, - 0149B0C82CA899926A01FA591E4710C4 /* PFAnonymousUtils.h */, - 24019153F5EA642D0DE4B7AA9C56FE37 /* PFAnonymousUtils.m */, - 466349270C59C68B7BB457BF69B9ABCE /* PFAnonymousUtils_Private.h */, - 21AB5F2776814B493AE224A090442A49 /* PFApplication.h */, - F55189D706C6F0A7E7F9257ACEE9173C /* PFApplication.m */, - 05D15859D636D2225F8443617E021DFC /* PFAssert.h */, - 817BE16BBDE06E00A285E8DEA40C2A92 /* PFAsyncTaskQueue.h */, - 520D88E4BD209071CB865B64DEB08BD3 /* PFAsyncTaskQueue.m */, - 442FE8495BC41626A686B84CE00354C4 /* PFBase64Encoder.h */, - 94115F4D46CF02AFA9A9A36A9D041A73 /* PFBase64Encoder.m */, - 70AED028A0517D0D287C17C074D896DC /* PFBaseState.h */, - CAECEB62E59C8EBCF2BFBB361AC28C39 /* PFBaseState.m */, - E276164BF784A894BA33B42E12F10CCE /* PFCachedQueryController.h */, - F6A1AA7E3400E1B0C28309A8DB53D160 /* PFCachedQueryController.m */, - 80215F89C91F2E95ADA9D8D5F5443FD6 /* PFCategoryLoader.h */, - C266997BE18B9F2389729AEE26E429C9 /* PFCategoryLoader.m */, - 425C02C4E4B038FDE445DA322EF3113E /* PFCloud.h */, - D4C698542F4955E8A40A8D39035EDAAC /* PFCloud.m */, - 1B5B5284F66A4663EFFDE2B8B5E336B1 /* PFCloudCodeController.h */, - 95418B78D785BACFEAFC48B338DE9AF4 /* PFCloudCodeController.m */, - 8D05A09C1E9B8D6D162D9DBC753EA922 /* PFCommandCache.h */, - 52CB9F69B642A0B3EAB1EA3DD8F5BCB9 /* PFCommandCache.m */, - 057581746F9592678DE1D227AA52EB2D /* PFCommandCache_Private.h */, - 4143EF2889DC7708FBFDFB6EB6F7F78C /* PFCommandResult.h */, - AD4D3C55161D3874FAE6A6D4FA05E974 /* PFCommandResult.m */, - 19333F981C770A5CDAFA1A9B6901522C /* PFCommandRunning.h */, - 64C153FEAD3A0694849A9B9865BF597E /* PFCommandRunning.m */, - 2739B66EFCA7F40FAF75E4F39A6A9A7E /* PFCommandRunningConstants.h */, - DB1A535EDDE87E526D1C66FA9BEDAE70 /* PFCommandRunningConstants.m */, - B7D1E676461C5F40552D64DA33869E6F /* PFCommandURLRequestConstructor.h */, - A0078CE9F7F7BB672D734ECE689D766B /* PFCommandURLRequestConstructor.m */, - A711FBFC3588B353719DDFFC023B9290 /* PFConfig.h */, - CD7593640586B201BCD9939EC8B13017 /* PFConfig.m */, - 2903E773C725846E7E37922E881B5B52 /* PFConfig_Private.h */, - 30CDD959414B1BB05D9C7CC06B1A1DB9 /* PFConfigController.h */, - 837C54D3D72E985D6E6FF3BBEA8D1EF1 /* PFConfigController.m */, - 9193281C25815834A39FE54B319DD33D /* PFConstants.h */, - FF68CFC1D62A76A5756770DE83EAC745 /* PFConstants.m */, - DA54D490C8B9FDBC6989E68EFA54AF6D /* PFCoreDataProvider.h */, - 2CCDD526B69067FC32BF946A540F4C00 /* PFCoreManager.h */, - 7CB666E8346B15C56F87F1C89B253C80 /* PFCoreManager.m */, - 1853537D2954FD958EC042517906C776 /* PFCurrentConfigController.h */, - A2BE5AE5F0695B55E709A8CDFE17CA78 /* PFCurrentConfigController.m */, - 146B3C6F4906B1DF01F844DF3C869939 /* PFCurrentInstallationController.h */, - B98E96DBABDB51557464408244172B2A /* PFCurrentInstallationController.m */, - EAFB52AC58711E75BD9749D21BB34897 /* PFCurrentObjectControlling.h */, - 9E6629CCD335C17E0B583B60896F6F5D /* PFCurrentUserController.h */, - E3CC799DD4BB9892F589E02F63692D70 /* PFCurrentUserController.m */, - 2E491204CD2D880B645C351FE76C1780 /* PFDataProvider.h */, - BF734DC57CA15A5ED1C02307CD3DE349 /* PFDateFormatter.h */, - EFB4DB04B2AB3F83A62C1D8799687945 /* PFDateFormatter.m */, - 2353E605872B5C10ED350AF2720B1ADC /* PFDecoder.h */, - 5FB90FC608DB5150B3A5D742A227198E /* PFDecoder.m */, - 0565BEC2CF133E7552070ADB0B6B25C7 /* PFDefaultACLController.h */, - 73A197191DE75F22F95C4B3C2E31527B /* PFDefaultACLController.m */, - C058566058269B2CA65AE1148198339C /* PFDevice.h */, - C3940D277F5BE2DF68360DE104260EC4 /* PFDevice.m */, - B6AC7B5CA03EFC1449CFA764CF607A99 /* PFEncoder.h */, - C56C90CA47F054F6B744E59125428689 /* PFEncoder.m */, - 9F4B289AAAE3CB636116D0E2F1741DAD /* PFErrorUtilities.h */, - C82858F9F81EFCA744E061FDCCC6A76A /* PFErrorUtilities.m */, - BF29DE6619DA26BE542969B766BDB8AE /* PFEventuallyPin.h */, - 76268C1A5595073CBD957E1BD34F8AEE /* PFEventuallyPin.m */, - 75C40E2C04EF1F38C17C8E45D198B60E /* PFEventuallyQueue.h */, - 7C605E7C0D2766C324CD9DAAE8BC0DCB /* PFEventuallyQueue.m */, - EA109C22D76467FD3FAB127642A18655 /* PFEventuallyQueue_Private.h */, - 90BC9D720C96091D799BE399435389DA /* PFFieldOperation.h */, - B10427DA50494463C21D709E70487D33 /* PFFieldOperation.m */, - 2FB830A71452CCDB67D2616730944824 /* PFFieldOperationDecoder.h */, - 862487394328F3BC868EBBAC32F7D1AA /* PFFieldOperationDecoder.m */, - 1CB99487DF93544382D4E7BB83E98DDE /* PFFile.h */, - 16343207944FB07AF9037C8A76C5F7A2 /* PFFile.m */, - 245A8375DA02518A0D28196BA09BB15F /* PFFile_Private.h */, - B900275E03F4A9C6416A5077A6E72931 /* PFFileController.h */, - FB2D447FC39896FA1BCA5534A076AB55 /* PFFileController.m */, - 05528EC9662F1A87AE94B74D156D8CC0 /* PFFileDataStream.h */, - CD9BD9332CB70D61FC117651727426D5 /* PFFileDataStream.m */, - 69FCCBED66F1FD4D49A5DF14367CB3F6 /* PFFileManager.h */, - 9D3D98875600AB165C66C65D6E15E83A /* PFFileManager.m */, - 54A2B00522521F43E6925FCB7040FA7A /* PFFileStagingController.h */, - 27B39579BA1A116F78E9C52D8518C9D8 /* PFFileStagingController.m */, - EDB85417DB00C6BC36233DD8F5D526A6 /* PFFileState.h */, - 06A4FFC3574F662CBE4301546762B2B0 /* PFFileState.m */, - 697F8C874C7CA2299F6F34AF16B60BA4 /* PFFileState_Private.h */, - 4961DA34D602A21B6849256EB53A724D /* PFGeoPoint.h */, - F120433DCBA609FFCA1AC8D7E66C715F /* PFGeoPoint.m */, - 3FD3D595219E68629445A5326DAF89B0 /* PFGeoPointPrivate.h */, - 8CA0240612F45CA8F80CC4045A3C4C7E /* PFHash.h */, - 87943BFB7F1004CFB75603B28BBF3C4A /* PFHash.m */, - 4F583CC3B015B36C3E3144C08D893552 /* PFHTTPRequest.h */, - 9171C157C53514711AFD5FF984F31433 /* PFHTTPURLRequestConstructor.h */, - 1578615981EB295CD3B68AD600652886 /* PFHTTPURLRequestConstructor.m */, - 4805B0DB126DE968E42BAEA762A89F17 /* PFInstallation.h */, - 212312E37823B602015F8558E2380BE5 /* PFInstallation.m */, - 57595B2EC946AD2720F477BBF1C1693B /* PFInstallationConstants.h */, - 35C47D77D154C6ACEBD15C0FA61A163F /* PFInstallationConstants.m */, - A126D8590E2C7ECBC16300C2C3A644D2 /* PFInstallationController.h */, - 2694414E286680557D8AF8B1F6B64112 /* PFInstallationController.m */, - E0812753D9AFC5C954E63E141EC3C899 /* PFInstallationIdentifierStore.h */, - A8607AE13FD6F5114938F5C946462211 /* PFInstallationIdentifierStore.m */, - 586A6FCD3982EF14DD7688A9C35821A8 /* PFInstallationIdentifierStore_Private.h */, - 1154985103CE37155F52D0BFC04340EE /* PFInstallationPrivate.h */, - 9A7EE25D0A40F414D480899041A5E485 /* PFInternalUtils.h */, - 03D900F84420FEA97FC38820C59BB2E6 /* PFInternalUtils.m */, - FBD9F8EA50253D95A8AD97BAD86E10C0 /* PFJSONSerialization.h */, - 4A801218C457ACD0660511E41F3A3A30 /* PFJSONSerialization.m */, - 36F6F2D4FA38537FEE30DC609BE6E066 /* PFKeychainStore.h */, - DA8FE461F464D9C9483CDB150140EAF0 /* PFKeychainStore.m */, - E89848483ABCCAEAAEDD2FF9965D52D7 /* PFKeyValueCache.h */, - 33EB14F8B74929AAF1B17B2931B6AF30 /* PFKeyValueCache.m */, - B01AD8E53CF8F54CAA21EB125198756C /* PFKeyValueCache_Private.h */, - 49A809ECA636BA098C492E0709054E30 /* PFLocationManager.h */, - 4A0F68606B3345FA797272EDF32783FC /* PFLocationManager.m */, - AF37684830F2DBB64CC294D7D1ED687C /* PFLogger.h */, - BA86A11DA2D2DE1430E01C7AA116C69C /* PFLogger.m */, - 985870310481EAF6D1AAD21D98000C42 /* PFLogging.h */, - E9B097547004C3BD7DED3DEE274BAF78 /* PFMacros.h */, - A9F919170FF728D2BC8D0CA0FF2DFB83 /* PFMulticastDelegate.h */, - 68655B40F89C27D89D53892FD3930D30 /* PFMulticastDelegate.m */, - B6327D62365930A9BC127D1B6AA7C081 /* PFMultiProcessFileLock.h */, - B492A7B19E294565EE58BF99C7ED8A4A /* PFMultiProcessFileLock.m */, - A3876C6C899E391617046DF5BA206C24 /* PFMultiProcessFileLockController.h */, - 773BC40E82A6994ABB953BECE34B7AA4 /* PFMultiProcessFileLockController.m */, - 653B2C591481812B2FB9DCA0C314CA21 /* PFMutableACLState.h */, - 33BA0D4863A03D1948F483CFE7EA4EAB /* PFMutableACLState.m */, - 7677707275A2EF60830F578201163529 /* PFMutableFileState.h */, - C0EEED09807991F565F9159AB28C2112 /* PFMutableFileState.m */, - 48DF0E6F580F2A50C94F659383B45C1D /* PFMutableObjectState.h */, - 0ABC3BBED3C3C10F8A825E0751B3A6DB /* PFMutableObjectState.m */, - 84DE8F6C85087D8851CE8C93EF867DCD /* PFMutablePushState.h */, - AFE48A1CAAFB131917518CB852A268E8 /* PFMutablePushState.m */, - 860438E9D197650BC7168E76CA8F76E1 /* PFMutableQueryState.h */, - 23A9DA06DB5F829FD8BDD6FD23E82A45 /* PFMutableQueryState.m */, - 48B1E6D7D071B0E0ED3F61BA546629E4 /* PFMutableRelationState.h */, - 2994AAC8F7BD43FAA64FEED836452945 /* PFMutableRelationState.m */, - 128F630995A27DB0544A45BF67DE2E4D /* PFMutableUserState.h */, - 5E36BFDAADCD9869360BFDBB5DC7919A /* PFMutableUserState.m */, - 95E86A54E3D8EFC5EAD2463D4E89A3CF /* PFNetworkActivityIndicatorManager.h */, - 519BAD12C8F4201D74BDD8453AE47655 /* PFNetworkActivityIndicatorManager.m */, - 5924FEF18CC5E1704FD384C65A5F55D9 /* PFNetworkCommand.h */, - FDFB0625E5A8DE395A3BCB617FCD612D /* PFNullability.h */, - E632D3BFE8814A4C59897AC48C2FEAB7 /* PFObject.h */, - 7085A58614F89184F48256983144E2A4 /* PFObject.m */, - 4E992BA048F5DF79A1CDCA82157BFEB8 /* PFObject+Subclass.h */, - 468F4C50CD145E1DB145B2A3D109CC5F /* PFObjectBatchController.h */, - 3B34569D99B799FF8A6F749B10CCA86B /* PFObjectBatchController.m */, - 783A3E8CD34175B563A9C12AA16DE8BD /* PFObjectConstants.h */, - 86C52238DDC9FA7C9DCD49852E0DFE88 /* PFObjectConstants.m */, - 7AD43C7473FB3333A13A263F3DED7A13 /* PFObjectController.h */, - 9D65511E82CA8F7BA0B1D3A4D488BA84 /* PFObjectController.m */, - 1C1EBD8327430E9BC4CE07572302C3B1 /* PFObjectController_Private.h */, - A599CD4CAA3AC99E0EE59D0EE6ABBD4F /* PFObjectControlling.h */, - D4ED889D5C4216E8C328B8142E67A9CA /* PFObjectEstimatedData.h */, - 0526EA7D5B6610515F179B3B16E6EDF2 /* PFObjectEstimatedData.m */, - 4BE43B9E9A14869E0D43BEAF29841B34 /* PFObjectFileCoder.h */, - 0F962944E2CEA6B4A8913F2C5BDEB690 /* PFObjectFileCoder.m */, - 0A3D69E13596F5D45D883E1AE14D9B94 /* PFObjectFileCodingLogic.h */, - FB06B7B325850C15B6DC9083FA9CC5C3 /* PFObjectFileCodingLogic.m */, - 29C1E470BE7725D82BB96486CEBA6B7A /* PFObjectFilePersistenceController.h */, - 6175C27DAC5A50D940DB696AE83B785D /* PFObjectFilePersistenceController.m */, - 8867D68940B55D23D0E9719E275BFA8B /* PFObjectLocalIdStore.h */, - 1D3E68B1FF2DD23DBAFF7854AD495337 /* PFObjectLocalIdStore.m */, - 56A325AA32060E16C9CED99F16E65FDE /* PFObjectPrivate.h */, - A73585EAE72B8B707372B14CD35D1CBB /* PFObjectState.h */, - B27A11D910EE7C9849CF8F140E280ED9 /* PFObjectState.m */, - ACE5B2BD57D84096B68C686CF2A297F0 /* PFObjectState_Private.h */, - A854E7B08674C60E1987E4A310DA531C /* PFObjectSubclassInfo.h */, - 8D9CA35ABDD2925A9EF401DDDFDF3DEA /* PFObjectSubclassInfo.m */, - 8E2A6616C4F11E50D862C39BA82A0764 /* PFObjectSubclassingController.h */, - C01287FF93CF82A4FDD567F7D956DF46 /* PFObjectSubclassingController.m */, - 70CE433A9DEB32F93FB37B35D6987006 /* PFObjectUtilities.h */, - F92FBE5E1BD5C2804DA747E481794947 /* PFObjectUtilities.m */, - AB08BCF1E8867BB674582E6292B917CD /* PFOfflineObjectController.h */, - 3EF30CD48D59FE6544E248C632E1B4F7 /* PFOfflineObjectController.m */, - E4D8C8E5159871AD5FA5B7332A649FB5 /* PFOfflineQueryController.h */, - 582FD07A79653DAE823A3A00F9AAB825 /* PFOfflineQueryController.m */, - ABCED4FB329CB88CEBB2D990F236F8D5 /* PFOfflineQueryLogic.h */, - 01C1843D737F908141E29AADDC66AB8B /* PFOfflineQueryLogic.m */, - C27E78AB76228CCD047CDFC9941CCB59 /* PFOfflineStore.h */, - C18D83A16673A9F0545F5AAC55CAF2F0 /* PFOfflineStore.m */, - AAE5C3F24CDEB6F4DD19802AB2B9D8B4 /* PFOperationSet.h */, - 96725FE5D9936FFB88E9EF3C7354C6BF /* PFOperationSet.m */, - B506CB574291FFD269E218DEE30A8D84 /* PFPaymentTransactionObserver.h */, - 44FCD8E48AE2854E6C68B55DE899278F /* PFPaymentTransactionObserver.m */, - A500D17BF17E1E4E6B95D311ECBC187E /* PFPaymentTransactionObserver_Private.h */, - 8780D2FFBC1992D6FDA23E5A3A81CF1E /* PFPin.h */, - 9B484974193BA8A4646BC070D4C0BBE7 /* PFPin.m */, - 4332383098D7379489F2E1CF7653D948 /* PFPinningEventuallyQueue.h */, - 79791F337B75C7A9E86B2C16831BA3B4 /* PFPinningEventuallyQueue.m */, - B639B99C4CD7C16D2AD6DD82DD08FA5A /* PFPinningObjectStore.h */, - D7CCA908675FF8F62C1721B4D2229BEA /* PFPinningObjectStore.m */, - A4C7B9F2E653733E71087633BB8C15F3 /* PFProduct.h */, - 16D6292D8FAE18DC28FF78404DB719D9 /* PFProduct.m */, - B3414A44DB406F571B8FC80279C438E3 /* PFProduct+Private.h */, - AFAF91B7E5BA7253D501E8786B415520 /* PFProductsRequestHandler.h */, - 2982D008CF0D29BDC45EE799823CC219 /* PFProductsRequestHandler.m */, - 170E287A22801514CAF6C2EB522BE4A5 /* PFPropertyInfo.h */, - 03F801D486528ACB735E258BEAE163CE /* PFPropertyInfo.m */, - 637A71462456BAA98EBD75DD2B6141C7 /* PFPropertyInfo_Private.h */, - E76FEBC923D494E63C53B86C5D25ED29 /* PFPropertyInfo_Runtime.h */, - 4151DE560D48FE6B06CCFA7940B94CC5 /* PFPropertyInfo_Runtime.m */, - A7866E7BD22417E1E798E12FC8148126 /* PFPurchase.h */, - 4395A73F86029763A96B4A9BDB9051CF /* PFPurchase.m */, - B9943DF525E97D5F98EC58CF7865A2A0 /* PFPurchaseController.h */, - BB99803775BDB8D089B8AAF8610F006F /* PFPurchaseController.m */, - 35A723AF4E93A1BD6805BE7CABE6E033 /* PFPush.h */, - 204E788B570A793109481294415D9F28 /* PFPush.m */, - 4662A7DF03B449C11ACAB6A82AA6CD0B /* PFPushChannelsController.h */, - 8B25D2830AB2AF5C858A10271039E131 /* PFPushChannelsController.m */, - 4BBD6BD031241526C280059BD26BDE75 /* PFPushController.h */, - 11590B62084307FCCBCBCD4CB7D71BA1 /* PFPushController.m */, - E93884F64E775CC94E71ED80F9FF08D4 /* PFPushManager.h */, - B0A1E7C301317BD56AD13ED50A48B5C3 /* PFPushManager.m */, - 3D5D2BA73D92C41B2C18785A9F6A34F3 /* PFPushPrivate.h */, - F197F5F3111E02DC7CFE618154DE5269 /* PFPushState.h */, - DD4352603F7BBCDFDFBF51AA7E5470D8 /* PFPushState.m */, - 99FE93E37D759F30B7B5B5162DEB3D20 /* PFPushState_Private.h */, - 2DE00A9C031141A57AB8312D1DEF51E8 /* PFPushUtilities.h */, - 53E751950C87EEEFB70685CD518122A2 /* PFPushUtilities.m */, - D2E0F8156813BEB961019EA1C361691C /* PFQuery.h */, - 9892ACF2D0CAC9B9021724C9C93ABD4C /* PFQuery.m */, - FD283F04FC1522E51E474E074287984C /* PFQueryController.h */, - 8DC92D832BC4F98CB9CDF7D7A7B176F3 /* PFQueryController.m */, - D72826DF2E94C85D334B52CF10098D1A /* PFQueryPrivate.h */, - F141BBF337790457F2DAF41F1F0011E0 /* PFQueryState.h */, - 5C28405D1D8221A23C8D5CC2C7FFE4BD /* PFQueryState.m */, - 698C95FE97ED8FCE0AF17A04C769ACD7 /* PFQueryState_Private.h */, - D7FC083129BF68FB4CB980C41B463B48 /* PFQueryUtilities.h */, - 2DA1030B666DF215688696A02F383A6B /* PFQueryUtilities.m */, - A615158242A3BF4F9C9D90078A2CE30F /* PFReachability.h */, - 9568A44CB835524C00AA887038D28A2D /* PFReachability.m */, - 40C7C5CFB4E466FFB010AF6A0FD9D026 /* PFRelation.h */, - 0FEA53773CB8E3FB3A322C0B4389B7A5 /* PFRelation.m */, - 55E3CD1BDE0CFAD0C13FAED8BEF08B52 /* PFRelationPrivate.h */, - 15CCBEB339CF012A7EF123E309124318 /* PFRelationState.h */, - 20476D5BF51291A996A02F8B096F7768 /* PFRelationState.m */, - B44F43FE13A2621B29F734B3AD99BF68 /* PFRelationState_Private.h */, - 1B9DF380862F77749D695F3104231B01 /* PFRESTAnalyticsCommand.h */, - C471619F560094B3BB41378638A0D362 /* PFRESTAnalyticsCommand.m */, - 64BCD63E238F4FF3CD5D95CE6BF75584 /* PFRESTCloudCommand.h */, - 10A0FDA427EFFCE744C8CB7862407B47 /* PFRESTCloudCommand.m */, - 878B0AD059EDF719C2B350F1235F0A90 /* PFRESTCommand.h */, - 29EEBBE595CAF744AD4307424F577DFD /* PFRESTCommand.m */, - F74C54135672148EAEB4C34B19F94625 /* PFRESTCommand_Private.h */, - 95FB0DA8AF871D7246C122EF20326E70 /* PFRESTConfigCommand.h */, - 8C081A1F7DD370C044B7D5118E27A38F /* PFRESTConfigCommand.m */, - 92A46B5132CB11500CEFCB4DA5AF636C /* PFRESTFileCommand.h */, - 7B240507A5F5C3ACC7EDDA9A36CAEFEE /* PFRESTFileCommand.m */, - 74ED9759C7FE5F4ED33138ACAA88C82F /* PFRESTObjectBatchCommand.h */, - 6F8DF2C96C207C665982A18CF849D6AF /* PFRESTObjectBatchCommand.m */, - 211357AA873E1EF8383B30C370BE0F87 /* PFRESTObjectCommand.h */, - 7A1B02F9DF967F2FFEC317D614A2136F /* PFRESTObjectCommand.m */, - 5E3D6F638163E7F25D3C3782B2DD5E9D /* PFRESTPushCommand.h */, - 621694B9B8F4062ECD717CB818281308 /* PFRESTPushCommand.m */, - 4D74AE7682B21EDC5FA135CD84A526CF /* PFRESTQueryCommand.h */, - 6C1AC18847E2EFD352913578BFCE568F /* PFRESTQueryCommand.m */, - 1F2B2346710518F3D818A44A68F02C5F /* PFRESTSessionCommand.h */, - B407B07136A8C18FA91C2B5C0C66B115 /* PFRESTSessionCommand.m */, - 812F56D962057B55B97DA7C2E81454B8 /* PFRESTUserCommand.h */, - ED989C258CEF00D2F1701A073DD1C374 /* PFRESTUserCommand.m */, - C206C3E9B3302C96684D3897F1D5A944 /* PFRole.h */, - 5EC412AF8C018680357347F65018B124 /* PFRole.m */, - CF114CE627A26531EF546CEF5EFE34B2 /* PFSession.h */, - 4483EB7CE5A6261A9164976F9D35F986 /* PFSession.m */, - 45756A25BE2E60F2173BFFCAE8E9BABB /* PFSession_Private.h */, - 0BEED67AEB0626E1D942E397F7BFE7C8 /* PFSessionController.h */, - 5C0999643940462D0D4D365C743346CF /* PFSessionController.m */, - 3C400573A5C886A59A391F89D0812135 /* PFSessionUtilities.h */, - 697AC4B193E7B1C3AAB92E30576C70EB /* PFSessionUtilities.m */, - 4C500DF14994F5DF82D1C7A4F1B29EE4 /* PFSQLiteDatabase.h */, - D01E708EE28BD1140C9AE0D2329F2E19 /* PFSQLiteDatabase.m */, - 01EDAA9B73CA1A9B90D5CCD0CE04D58F /* PFSQLiteDatabase_Private.h */, - A88639112812A657127C2D4DEED2CDBB /* PFSQLiteDatabaseController.h */, - D1AF1FC1D27AABD7DC4C0948E9C059A3 /* PFSQLiteDatabaseController.m */, - CCE7602032D39C48B4B558FFA15A83BF /* PFSQLiteDatabaseResult.h */, - 1300CB87D7929FE78AD13A425DD18939 /* PFSQLiteDatabaseResult.m */, - 8582EC197D28F9D94A384B032F5B2C58 /* PFSQLiteStatement.h */, - 2E3AF7DFDFAF8657D842E11B07B72C49 /* PFSQLiteStatement.m */, - E5F9060B3223AC9783E8EC3F9FD5582A /* PFSubclassing.h */, - AF6C96E7CB161E28C9D346CD5CEAA5F8 /* PFTaskQueue.h */, - 48CE51C08D38E74BB9D873799C3B56FF /* PFTaskQueue.m */, - 5F0A4B0C3848A8B587EDD0F613FFC91B /* PFThreadsafety.h */, - 880D8A88A7684A55315EDE4547F17390 /* PFThreadsafety.m */, - DAC38063B09099340C9BF218DC2CD4D2 /* PFURLConstructor.h */, - 8B465E244D44A3BE904CFF8C4A48E701 /* PFURLConstructor.m */, - 610383C50F7E8C3E94C191A91D507693 /* PFURLSession.h */, - 333FAC024F4389EAD8F3D15D9F29C1D8 /* PFURLSession.m */, - 931878F83D6F6F825E3F681B771690B9 /* PFURLSession_Private.h */, - A504F227475EBEE681741A0C587CAE41 /* PFURLSessionCommandRunner.h */, - 006EA441F280F24D02FFA3BABCECC824 /* PFURLSessionCommandRunner.m */, - C79111BD3BBEC8AAB595BAD4F5BBFD90 /* PFURLSessionCommandRunner_Private.h */, - 650251D49165102AF10424F8FE6CFF26 /* PFURLSessionDataTaskDelegate.h */, - 60F0D5F81E5A0E8F5FFDC41567CCE3CF /* PFURLSessionDataTaskDelegate.m */, - 32D23F94B2A86BE0E61787BC2DB18576 /* PFURLSessionDataTaskDelegate_Private.h */, - 6194460804426F0A4B172D48D43424F3 /* PFURLSessionFileDownloadTaskDelegate.h */, - E57F847AAD9A19486F1EB1BA4A0C9071 /* PFURLSessionFileDownloadTaskDelegate.m */, - EAB7C8D81307D67033C83A0116B517EA /* PFURLSessionJSONDataTaskDelegate.h */, - 56DD3B16A2FA69C880D705EC37C05584 /* PFURLSessionJSONDataTaskDelegate.m */, - 57703EB1DCEB28A69BCC450CD2F4302B /* PFURLSessionUploadTaskDelegate.h */, - 5B53B46467C6E67E66194FAC567CA3CE /* PFURLSessionUploadTaskDelegate.m */, - 9EF9E7E124CF7FEC59917A8A59D36C9D /* PFUser.h */, - FD20928F422E57B36F0AF7C03A285F25 /* PFUser.m */, - DC01BFEAAAC847F4F08D2481C7229EEE /* PFUserAuthenticationController.h */, - E5AE21B40FF68080B94A984303BBCF2F /* PFUserAuthenticationController.m */, - 4570CED15A9C16289C4D098BADB4988B /* PFUserAuthenticationDelegate.h */, - 9F0161219DC8EBD1C3D61015979852A6 /* PFUserConstants.h */, - 72B7D073C442C0EC9D3D4650B7CE4F23 /* PFUserConstants.m */, - 6D550D3103B9BC03C2B3CFD252981DA2 /* PFUserController.h */, - 4CB18FECF07D424856DF25DEFEAE675C /* PFUserController.m */, - 8626A096D5442B8137154A62B0ADD414 /* PFUserFileCodingLogic.h */, - AB067014760D1E79CE3A58172F0227EB /* PFUserFileCodingLogic.m */, - 5D1BEC4F5C959A0F3A590C62FFFAED54 /* PFUserPrivate.h */, - AB4CD2808D1181D48BD050A1E40BE976 /* PFUserState.h */, - 58EC4DACF873F5F93A5E6D16A993CFB8 /* PFUserState.m */, - 1402676BAF69E76E84C7957AD539C134 /* PFUserState_Private.h */, - CF2F482CF92A6BBCE8E46F23475EA72B /* PFWeakValue.h */, - 69532310DA9419CB7D0183940081C37D /* PFWeakValue.m */, - 04461214A708CDEEF3A5C282A64ACD80 /* Resources */, - 84996DF569A72E800921F16A58D2771A /* Support Files */, + 36F3E3D009A33DE3EB27FA31CBCE358C /* iOS */, ); - path = Parse; + name = Frameworks; sourceTree = "<group>"; }; - D1027468D8455255D7B8844321D9376E /* Support */ = { + F3E1399D1C84A330951106CBABE88495 /* AFNetworking */ = { isa = PBXGroup; children = ( - DD920E6012362DC614A1701B8499680B /* lcl_config_components_RK.h */, - 8714E7D607BECB036F81715B5C27F0ED /* lcl_config_extensions_RK.h */, - 16CCB8BB94AE34725A72A8769F301A7E /* lcl_config_logger_RK.h */, - 3BFC75DE2FA5676B4D6C11BB9AA254E8 /* lcl_RK.h */, - 9E3A50746719F1DF8EA234DC24662F0A /* lcl_RK.m */, - 0168088B34D75689673FA7BA85F0B641 /* RestKit.h */, - B51C3F037B7CB1FC1D26AD422819FAAA /* RKDictionaryUtilities.h */, - 4D8A4BBD034C037A44B441447EDBD2AC /* RKDictionaryUtilities.m */, - 70A2C6CE14776F9B578042E6CC7C2126 /* RKDotNetDateFormatter.h */, - 2ADCEFE17BDF4D7075F5F77EB703339A /* RKDotNetDateFormatter.m */, - 4DC05CB9225FAFC12C400FAE32AD0626 /* RKErrors.h */, - 88F4DDD745B9F0253403AF9B24C6F051 /* RKErrors.m */, - BA5E53C4F97DE65CA639266FC59D62B6 /* RKLog.h */, - 7528F8DFCEB5328922BCA59B0054A221 /* RKLog.m */, - A63CD3C63759638B8C81445CC1AE5832 /* RKLumberjackLogger.h */, - 14424EF937E20F708472093A62D7D67B /* RKLumberjackLogger.m */, - A066A1261BC2B943A2C58454D8594E4C /* RKMacros.h */, - D956488480F1233FFF8403DE1801CEC9 /* RKMIMETypes.h */, - 16AACACB54568C35001E53CAB3D7D64B /* RKMIMETypes.m */, - 7A18E97231CDD5F751206CDE84F4B9BC /* RKMIMETypeSerialization.h */, - B82D9F24AE9309326A0F5D37DA96F86D /* RKMIMETypeSerialization.m */, - AEAF382A07FA2B9C90B3DA379C01ED05 /* RKNSJSONSerialization.h */, - C6E71AEE806FFD98620689D854D9722A /* RKNSJSONSerialization.m */, - D0C7247AC09710B122EB8AEBC235DE9F /* RKOperationStateMachine.h */, - 32D2CB4155B7B88153C547AB13333269 /* RKOperationStateMachine.m */, - 68A024759390FB7405C04F198DD88301 /* RKPathUtilities.h */, - 73ADD1CAE6F397CC4738B0967E78B570 /* RKPathUtilities.m */, - B75D3CD9991E32D3045EFD508FE204E3 /* RKSerialization.h */, - 5AD39F0020472100496314600E65AF2D /* RKStringTokenizer.h */, - 83B82BD0C23C3508B8C4235B574CB5CE /* RKStringTokenizer.m */, - F90CCDF16C40C8073020CB017D02AC1D /* RKURLEncodedSerialization.h */, - 58EB40198CF6F7F4E677035D64534FDA /* RKURLEncodedSerialization.m */, - AEA5DE805E0990CD7BFA9099F1B80A0B /* Support.h */, + 3C1CC5AA0EB4EDA9432A7D5463BE4901 /* AFHTTPClient.h */, + 764FFD75345B6B6A979A9D10F2D2907B /* AFHTTPClient.m */, + 7771BB9434E69A691392A0970DD10E28 /* AFHTTPRequestOperation.h */, + C544CA6F07611BFE8BFC800E9D59E5AE /* AFHTTPRequestOperation.m */, + A3794B030BCB9C4408CA8A2839964ED1 /* AFImageRequestOperation.h */, + F0414F682EAAC899BF6D1350B23F4920 /* AFImageRequestOperation.m */, + 3880A4A4324ED988B85901DAD4519018 /* AFJSONRequestOperation.h */, + 82E57F9588CEC77612BC5E9A20CCC2E5 /* AFJSONRequestOperation.m */, + CEB32A7ACC2D1268332E3ED6413E04AE /* AFNetworkActivityIndicatorManager.h */, + A2D57E341463F67AF53255008B5CAB0A /* AFNetworkActivityIndicatorManager.m */, + 6F529E412A09BF39D8AEC42AFFDF2F46 /* AFNetworking.h */, + 89CDFA61E00364C5AE6882B31CA90BB4 /* AFPropertyListRequestOperation.h */, + CC7C0590FD149B2C227C59AB38DF61DC /* AFPropertyListRequestOperation.m */, + 35CC150A7EE20543758EB2CBCB3D0D9D /* AFURLConnectionOperation.h */, + 1AF2857CEDB6464020434166DEB5A36F /* AFURLConnectionOperation.m */, + F51C083C4D1E3AAFE06A8F4BDF8EBB88 /* AFXMLRequestOperation.h */, + A9CA1C8C41256C5E7CEDBAF354C19AE5 /* AFXMLRequestOperation.m */, + FBB3B5641F66495915C56779C21569E7 /* UIImageView+AFNetworking.h */, + C345096A388C3F1F4E486E39C9D61CD4 /* UIImageView+AFNetworking.m */, + 7ADA1DE4AC552D9180233F1D5A34429C /* Support Files */, ); - name = Support; + path = AFNetworking; sourceTree = "<group>"; }; - D73428F5EDCF779302B1A54ABA56A999 /* FBSDKCoreKit */ = { + F46DF5AF30AF4F7D4DFAC67E03AEE55E /* Support Files */ = { isa = PBXGroup; children = ( - 7FF6D0DC6576982B9137F657B4A8DF71 /* arc */, - 57BBFCFCD99BD0361B60E276554280F2 /* no-arc */, - 4BDE6BC6D6EDB59EFFD668FA19CCCE3F /* Support Files */, + 525A38283E17DE63638B7101EDD603A5 /* FBSDKCoreKit.xcconfig */, + 231F7C139C4CE6856490CCC6331A4BB0 /* FBSDKCoreKit-dummy.m */, + 03B64D2A236E8A41E92A66B21F198BFB /* FBSDKCoreKit-prefix.pch */, ); - path = FBSDKCoreKit; + name = "Support Files"; + path = "../Target Support Files/FBSDKCoreKit"; sourceTree = "<group>"; }; - EB57DDB3388FBC701046A1E93218737F /* Frameworks */ = { + F7647B87DD09DE1D36642AA78D579180 /* AppLinks */ = { isa = PBXGroup; children = ( - 36F3E3D009A33DE3EB27FA31CBCE358C /* iOS */, + 74089267A9387B60B1CE108DFAA883BC /* BFAppLink.h */, + C1C4E1C48CDDA8FCF1C074DCC0D2A656 /* BFAppLink.m */, + 5732F9BC7E2742FFFC7C3BA8F1225459 /* BFAppLink_Internal.h */, + 7FDE21F99879BAFCD8007510D41FD42B /* BFAppLinkNavigation.h */, + CFEE369DBDB3AF968FCC81B9E15BD259 /* BFAppLinkNavigation.m */, + B99772D5AE952C0693DC05AAA4538D94 /* BFAppLinkResolving.h */, + AE3D34F74057747813B67E0E716F8275 /* BFAppLinkReturnToRefererController.h */, + 91D5B36C33B97E32AFA561C868667F87 /* BFAppLinkReturnToRefererController.m */, + 5444C22939A582C105AC91CE65D666F4 /* BFAppLinkReturnToRefererView.h */, + 6E3D7476264442440AC1374D1E0418A1 /* BFAppLinkReturnToRefererView.m */, + D7AC47EB8D0E9C9582957C2869B7517D /* BFAppLinkReturnToRefererView_Internal.h */, + E362D4507FC775D8570A80D797BC3E91 /* BFAppLinkTarget.h */, + F22BFE44135812D7404BBDAF34C010E3 /* BFAppLinkTarget.m */, + E5A9EBDF50D04397C922F9D0AB7B0512 /* BFMeasurementEvent.h */, + FB3A9DED47A72521C01855CCB13A10EA /* BFMeasurementEvent.m */, + CB172E497F3C842C06931402446C2D4B /* BFMeasurementEvent_Internal.h */, + 7F63108EF1315E6D7E404F9ABF304F1A /* BFURL.h */, + 1C6681893EA2BE8AA8ED08B44B774980 /* BFURL.m */, + 44420C2483949613227FDC09A152A3F2 /* BFURL_Internal.h */, + 9045C664399C37132A893F2E170BEA3C /* BFWebViewAppLinkResolver.h */, + EED2B7513CB5A03507BE982601143DEC /* BFWebViewAppLinkResolver.m */, ); - name = Frameworks; + name = AppLinks; sourceTree = "<group>"; }; - F6FFB7F933FD72A4DE0BC8F277933B4E /* TransitionKit */ = { + F857921DBBA1D9C322F3F67E01AFB360 /* ISO8601DateFormatterValueTransformer */ = { isa = PBXGroup; children = ( - 310DAE7B650CE093469515EB7385030B /* TKEvent.h */, - 78AFC5613D6C0DB29F522A49E3BA144F /* TKEvent.m */, - 96D93EAF0FCC8B5FBB56E2E9C45F9D62 /* TKState.h */, - DD38F8B2DEDE8021308CAA1FD5E08EA0 /* TKState.m */, - C24ED85DEF7CEFA65A545211A7E9A27C /* TKStateMachine.h */, - BB22C7EB016209266A6A46D552308368 /* TKStateMachine.m */, - 2BDB55E9C39EE72564DF58E4922A0879 /* TKTransition.h */, - B7A6D2F5DC2549FF82CCCCA100238F29 /* TKTransition.m */, - 2D639B8AB8EC8DD751AE4F019F908401 /* TransitionKit.h */, - 6A281583AE86BEBA831DCD4AA7F89334 /* Support Files */, + DAB70DB4EE93F869DBC66617E527E62E /* ISO8601DateFormatterValueTransformer.h */, + E4C5528C376F1D824C32FC5049A22958 /* ISO8601DateFormatterValueTransformer.m */, + D68125D407CB86FE46338C7579765331 /* RKISO8601DateFormatter.h */, + 6101E1788344FEF66BFB8A3BD80CF650 /* RKISO8601DateFormatter.m */, + 2935474A12329277E07A08BD4241480F /* Support Files */, ); - path = TransitionKit; + path = ISO8601DateFormatterValueTransformer; sourceTree = "<group>"; }; /* End PBXGroup section */ @@ -3368,6 +3563,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 235759BBA87FE7B50D5CDEC6E14CA7A8 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 5925CFB0F01031178978AF59986A8836 /* TKEvent.h in Headers */, + C9ADB5534B9078FBD0215BCB05701219 /* TKState.h in Headers */, + F6B3F611DF383CE5E1E8E62665449291 /* TKStateMachine.h in Headers */, + AF923C2C11D76B65500D200EF0BAFA33 /* TKTransition.h in Headers */, + 92CC0855895CFD948F305B30546B0414 /* TransitionKit.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 24CC375AC6BF6375B73651BB0872C62A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -3655,11 +3862,43 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 425A09876C51EDD275BEAF10092919C0 /* Headers */ = { + 48BE40436AC830EF2C4CB6035A80602C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 6E26161BE1EF97C776544437594061DF /* SOCKit.h in Headers */, + 429897FA95FC01863ACF624955ED030D /* FloatConversion.h in Headers */, + B85FA9794E00DFF09C3ECB91A3D45882 /* POP.h in Headers */, + 27F8C6DBEE3149A4A1FE4682E23111A5 /* POPAction.h in Headers */, + 90A1C18005CD010BC306C9E32ED37C72 /* POPAnimatableProperty.h in Headers */, + 2EF035CF21D5D9B2F876D73D145DCBAC /* POPAnimation.h in Headers */, + A2B99500387BF0FB3062AB1D0FFD57A5 /* POPAnimationEvent.h in Headers */, + 4D07C5CE0CD51D48D58268926E71C534 /* POPAnimationEventInternal.h in Headers */, + 0CAA65756A68A9D5C473ABECAA0B50BF /* POPAnimationExtras.h in Headers */, + 1742414744E4A0DF8BB946045C2EB827 /* POPAnimationInternal.h in Headers */, + 630A23A824A9AE5B03C54172F5F9556F /* POPAnimationPrivate.h in Headers */, + 70687046EC0243F807433D9D44DB7EB1 /* POPAnimationRuntime.h in Headers */, + 15C98EE5B0B19EC8B2B69FFF3836F90A /* POPAnimationTracer.h in Headers */, + 313C10C6A642FC61680D2E00D59E5FD5 /* POPAnimationTracerInternal.h in Headers */, + 0F4202BC6561358918BED3708C095673 /* POPAnimator.h in Headers */, + 666C8261EF1AB3272F89C4CA09FC631D /* POPAnimatorPrivate.h in Headers */, + FE0C5ACB05FF0C1803B48C2A0FDBFB2D /* POPBasicAnimation.h in Headers */, + CB0C14620CFC843788BBAF4AC8A4E6DB /* POPBasicAnimationInternal.h in Headers */, + 229318A2EF0A83A1BC417DBB54FAE450 /* POPCGUtils.h in Headers */, + B7BBC12792F777B1ACF0CF3C28355EEB /* POPCustomAnimation.h in Headers */, + 8933272E50BAE580EAB845528BE0E364 /* POPDecayAnimation.h in Headers */, + 2F67C0F2B19DD7478B7C6089401D10D8 /* POPDecayAnimationInternal.h in Headers */, + D2B66E29F3D4324178B40D412922503D /* POPDefines.h in Headers */, + 2FD8DABDCB30DFD548402447EDD982B7 /* POPGeometry.h in Headers */, + 0CA55F1868EDE312E4DD0713C9AEAE99 /* POPLayerExtras.h in Headers */, + 6EFA282EB5DD6C5347CCE430844E5CAA /* POPMath.h in Headers */, + 939F928ECFFE801E912A133DB6158E86 /* POPPropertyAnimation.h in Headers */, + AEC8FB690EB9BAD0F86F1B972089BD4A /* POPPropertyAnimationInternal.h in Headers */, + 7AE92FAE0E12991264A8E657D4187884 /* POPSpringAnimation.h in Headers */, + 34139CCA6481211B5C8BC57918F8FF3B /* POPSpringAnimationInternal.h in Headers */, + 32E214F119A1BF1D749C05323F252756 /* POPSpringSolver.h in Headers */, + F3D8FC254CCC51A7FBC764EDCF823A3C /* POPVector.h in Headers */, + 467E37A4D9DFFFA4BE812456B18B5766 /* TransformationMatrix.h in Headers */, + E936CBE6114F820C4E7408AC11114C9F /* UnitBezier.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3680,6 +3919,76 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 6BD109D1C8BF4F54CE2A7C6F7F91C5E8 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 390565C6A1B7B2060B10FCF3BCC97989 /* lcl_config_components_RK.h in Headers */, + 007D207B3BF73369E36B01A53A09538A /* lcl_config_extensions_RK.h in Headers */, + F636A430FBAA6F63A249AD7B432C57CD /* lcl_config_logger_RK.h in Headers */, + 2894A71BD9B82830C0DE27EDB9DEC7E0 /* lcl_RK.h in Headers */, + 3358C947C2329AD593909B5A55839B9C /* Network.h in Headers */, + FA3330484B355C821E59E5DE1C0BA454 /* ObjectMapping.h in Headers */, + 1F2C79C7C24FCC4784A09BF594C6F1ED /* RestKit.h in Headers */, + 03FB2588038E1FF08053127B70281205 /* RKAttributeMapping.h in Headers */, + 58597619340E5853CDA8DBC80D53D577 /* RKBenchmark.h in Headers */, + 94E9756648CDAC618994DEA3D28ECC18 /* RKConnectionTestExpectation.h in Headers */, + AD94C0E58E9E796C2461FB990370B8B9 /* RKDictionaryUtilities.h in Headers */, + 09FF1B52A8DE609DF1E2EF7378210758 /* RKDotNetDateFormatter.h in Headers */, + A51B5663618D00E23D7124EC97861DD4 /* RKDynamicMapping.h in Headers */, + 4CB1746E41309F454F4CB59CCB120634 /* RKErrorMessage.h in Headers */, + 49FB341D2B6AB6B34B968D145F42A04C /* RKErrors.h in Headers */, + A7B200E0CE52F38A4D17E432C3D5D44B /* RKHTTPRequestOperation.h in Headers */, + D3A453D5AB624E0B9703A6E8542657A0 /* RKHTTPUtilities.h in Headers */, + 231A46F0855F96400AFB1832C605FF6F /* RKLog.h in Headers */, + ADDFED5198FA5284E28022251BA98C1D /* RKLumberjackLogger.h in Headers */, + 16ADFA9976DB0641CC700CE33921E328 /* RKMacros.h in Headers */, + ED6FD3AB4D6A18C000AEA269BC8D7F29 /* RKManagedObjectRequestOperation.h in Headers */, + 40987DD554F4D5EB29B8B0948FCAC33B /* RKMapperOperation.h in Headers */, + 0D5354A9FFC479301962382BF42F5597 /* RKMapperOperation_Private.h in Headers */, + 44A5248789F660D19C2D6D8CBCCC7C13 /* RKMapping.h in Headers */, + 6713CDF473C3A1F71B852C8F354780A0 /* RKMappingErrors.h in Headers */, + 452F0DCF8F0D3525E9DC890D389684D9 /* RKMappingOperation.h in Headers */, + 696305155D2765894FA3E5EBC092A650 /* RKMappingOperationDataSource.h in Headers */, + CDD83F91D134051FA132923E3D4096DD /* RKMappingResult.h in Headers */, + E1A643D9DE8D164F5D1179CF5117F763 /* RKMappingTest.h in Headers */, + 9F6482097A50B68DAE48BE9D3CB3D28D /* RKMIMETypes.h in Headers */, + E704C533E6A5D7805AAF9761C8017D51 /* RKMIMETypeSerialization.h in Headers */, + 0C4D309AE4178F282BAD4DC9EB1E5B03 /* RKNSJSONSerialization.h in Headers */, + C419D5E278F540F1644BA4741785CC8A /* RKObjectManager.h in Headers */, + 6B980244FC648CB685E9AD30A9780D1C /* RKObjectMapping.h in Headers */, + 273413858783060A2A4F5AB76A2855CE /* RKObjectMappingMatcher.h in Headers */, + 28BA0A9D61D5B23A53B9D09A7A9896CC /* RKObjectMappingOperationDataSource.h in Headers */, + C981DB324F5A971F06590A5FDEB937F0 /* RKObjectParameterization.h in Headers */, + 434F58B870A20B1FFBF38579DF600676 /* RKObjectRequestOperation.h in Headers */, + FE44D1FCA03026E71140FBE5FE12FBAA /* RKObjectRequestOperationSubclass.h in Headers */, + 9FCAE5105CB7AB9D7B5CD6457B323B06 /* RKObjectUtilities.h in Headers */, + 2B19F33BE94964880FAA3A6B58CCE963 /* RKOperationStateMachine.h in Headers */, + EF10BDF15001F7DFC2CB2B2F898A40B9 /* RKPaginator.h in Headers */, + 92C02E7583FDE1D396BB88B19EE2831E /* RKPathMatcher.h in Headers */, + 0D6F37CCD07F22936439247F6189A056 /* RKPathUtilities.h in Headers */, + 94C8C1F85C2C32F8D8C4843B10603DF0 /* RKPropertyInspector.h in Headers */, + AECC0656F68B2EF64F2FE95EE733659A /* RKPropertyMapping.h in Headers */, + F69121DAB7F11950A7942C4D70A1B556 /* RKPropertyMappingTestExpectation.h in Headers */, + EDE804E78EDBA4011460F800C7E8F9FB /* RKRelationshipMapping.h in Headers */, + 813ADFF01E988125B016E0A604A0FCC4 /* RKRequestDescriptor.h in Headers */, + 1497B8CAE9DE252B51DC38604B76AD7A /* RKResponseDescriptor.h in Headers */, + 14545C481D346027B2C0E703B8AFDAAA /* RKResponseMapperOperation.h in Headers */, + 336A9DE5FB7C4ED8DF5B7E6EC76D0822 /* RKRoute.h in Headers */, + 0D52952BF5B3A015FA024A23981EA5BD /* RKRouter.h in Headers */, + 7D1605EE6FF513FDFB9A9827C2930B89 /* RKRouteSet.h in Headers */, + C195E761865347834BB306A41FBFD8B7 /* RKSerialization.h in Headers */, + 5621D0F1F50874AACD396E2AC5A8ED7B /* RKStringTokenizer.h in Headers */, + 4E7740FDD29E3D20879999C4584BA7E0 /* RKTestFactory.h in Headers */, + 7E50C34963B8ED1D60B79E534C5627AC /* RKTestFixture.h in Headers */, + 29A195C90E8CFB19E874DE1984AF015E /* RKTestHelpers.h in Headers */, + E459591E18120BB2457AA3AB88FD94E5 /* RKTestNotificationObserver.h in Headers */, + D985CD1702B209DE6E69F600B59751DC /* RKURLEncodedSerialization.h in Headers */, + 25C7617B2D122A04E33E3B78CA426B60 /* Support.h in Headers */, + FAE3BF2AD91A39EB7B33F722AB050FDF /* Testing.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 7BAB51A16596C67D638F977F2523AD29 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -3703,15 +4012,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A82A973B2CDE8E30CC1AFF120E3041F5 /* Headers */ = { + C49083680F8B4A2C2894B47349E1B59A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 5E988F6DB39589E09F7216CE92E0FCD4 /* TKEvent.h in Headers */, - 0070EB3F66CDA21C66777FC4BF9452F8 /* TKState.h in Headers */, - D8085207CDC6F2A69B21CC10BF0244C7 /* TKStateMachine.h in Headers */, - 44D4ACE5DF513BE2F82FE675BF0530C9 /* TKTransition.h in Headers */, - BAD9633CD11A33F04613C1E42EC6EED9 /* TransitionKit.h in Headers */, + 4A30A8F0DDE8E4D807E1F48C169CA7EE /* SOCKit.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3724,79 +4029,26 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - F04DEE87FCBC7031A98CD60748D5481E /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 45F413D981B9ADFABBEA3675FE0017E3 /* lcl_config_components_RK.h in Headers */, - 4575AA7C533C55013E14626E0CE50C35 /* lcl_config_extensions_RK.h in Headers */, - ED089A748BCDC9F6C6872F5F7E21E412 /* lcl_config_logger_RK.h in Headers */, - A7A7934DF6531ABC1DD87345712ABAC9 /* lcl_RK.h in Headers */, - F22E744D20ECE98DB31805F305E0BECC /* Network.h in Headers */, - B09BFA78A6FA4E03872B3C6813F9CF52 /* ObjectMapping.h in Headers */, - 66866C90B76FFDB79EB2460DA948FFF6 /* RestKit.h in Headers */, - F0DC437CA168984F852D7735048BC6C0 /* RKAttributeMapping.h in Headers */, - B1ACA353E817624A71E6EC76F82A051F /* RKBenchmark.h in Headers */, - 2195051CC84BF57B982BCDD58C5ED1D3 /* RKConnectionTestExpectation.h in Headers */, - 8A6946AC59129EA88D60D328CC1123A6 /* RKDictionaryUtilities.h in Headers */, - A1B68435F82A632E4F331D60773C2869 /* RKDotNetDateFormatter.h in Headers */, - D9D8B1CC492E4406C76092EFA10047F0 /* RKDynamicMapping.h in Headers */, - 166FC271D473C88842832FCADFC20AC0 /* RKErrorMessage.h in Headers */, - ABEF7325D5A438C60A9689BE4AF23E4E /* RKErrors.h in Headers */, - BC030E43EB80D6D27AF2D44F80CD7CDE /* RKHTTPRequestOperation.h in Headers */, - 9B3982D6FA8CD29A66D47D7356C6FB67 /* RKHTTPUtilities.h in Headers */, - 02CA14777A858D78607A52D739E01BFD /* RKLog.h in Headers */, - E0078B6CE5F3FA7BA899B72695D2F70B /* RKLumberjackLogger.h in Headers */, - BD6D648A05281F2FFA2E3F281BC9019A /* RKMacros.h in Headers */, - 21463E177BB9A98F321678568399855C /* RKManagedObjectRequestOperation.h in Headers */, - 392D8D316A7A626D07173B6D67773E19 /* RKMapperOperation.h in Headers */, - E6400BCB9E4DCC98CD30D74AC0F6B56A /* RKMapperOperation_Private.h in Headers */, - 51EF9DAEFA15FFB025217BBE89F9A23C /* RKMapping.h in Headers */, - 937DFB623FBFA9980FB84CB4DCB0D495 /* RKMappingErrors.h in Headers */, - 9C61DEAAA276DF68E9CC9679C0FC3E64 /* RKMappingOperation.h in Headers */, - A7730AC6B2549789F043366A4F6C0654 /* RKMappingOperationDataSource.h in Headers */, - 7623FF50D8894BEA849B2E84F9667BBF /* RKMappingResult.h in Headers */, - 2D9EF1B077CBAAEB072C4E04FDA46BD3 /* RKMappingTest.h in Headers */, - 57B1A80BBFD88E6F9406FC50B423FB5D /* RKMIMETypes.h in Headers */, - F08F2CBC9F704A5EA0102586DAC55989 /* RKMIMETypeSerialization.h in Headers */, - 0EF19D78C0EAEF1A39F029284A518C6A /* RKNSJSONSerialization.h in Headers */, - F350CF6BAA15E73067A174A0455B3D8A /* RKObjectManager.h in Headers */, - 20F4BBA2D5179AFF7A95275C2A285DD4 /* RKObjectMapping.h in Headers */, - 2E926A8C36CAE55E20568469F19BD6DB /* RKObjectMappingMatcher.h in Headers */, - 7B2C5166FD60B8D009CD534008D48C31 /* RKObjectMappingOperationDataSource.h in Headers */, - BBD60D3DA8952B0318A965D2F4B9962D /* RKObjectParameterization.h in Headers */, - BE28D5E4C90C546FA735DE393B33CDA3 /* RKObjectRequestOperation.h in Headers */, - F3EDEEA557BF41B20EF260EEBE129831 /* RKObjectRequestOperationSubclass.h in Headers */, - 1A9C308173F24606298E5693D359015C /* RKObjectUtilities.h in Headers */, - 31A1542159DF368E8DFF632BA01E4B97 /* RKOperationStateMachine.h in Headers */, - 5393685A37690EC1097162CBFDAD8964 /* RKPaginator.h in Headers */, - EB975D51FB0B6C984EC3A970061180C8 /* RKPathMatcher.h in Headers */, - 5A1CAD4EB911A5847CF09560EE37A110 /* RKPathUtilities.h in Headers */, - B5F68ED030E3466DD38E0179122A8E45 /* RKPropertyInspector.h in Headers */, - 86BB4E1C5A69021E6E28F46D2EBF2A3D /* RKPropertyMapping.h in Headers */, - F274F7BBA53230296D041E9788011840 /* RKPropertyMappingTestExpectation.h in Headers */, - 59F190ED1EA6826CEBBA51B9A461327E /* RKRelationshipMapping.h in Headers */, - 23F9280108D276942CBACF82E34E8821 /* RKRequestDescriptor.h in Headers */, - CFA516A9B6268932E1375EE60F7A31DC /* RKResponseDescriptor.h in Headers */, - 220F121D9EBCECA17B0FEC91209B88A9 /* RKResponseMapperOperation.h in Headers */, - 890759733641D9CE6D871075C5C26820 /* RKRoute.h in Headers */, - 02AB91490EAB577085129C629FFF9775 /* RKRouter.h in Headers */, - 9FFCB2055332535163446E136EDF1E42 /* RKRouteSet.h in Headers */, - EBDBE9612ABCEF630CC6E9B282086FD9 /* RKSerialization.h in Headers */, - CEA03E2CE5F3081E3865AA30CFDB3576 /* RKStringTokenizer.h in Headers */, - 397590A70BEFB683D21C67F996FD749C /* RKTestFactory.h in Headers */, - 84418630ACDDA584CC0ACE287C54B25B /* RKTestFixture.h in Headers */, - FD47F52F2CEDDB036100F734C1259055 /* RKTestHelpers.h in Headers */, - 8F2E9F59088D572D947EE4A9FA45DC1A /* RKTestNotificationObserver.h in Headers */, - 65719AA0C36A5882E89A8D02BD83CD32 /* RKURLEncodedSerialization.h in Headers */, - 05B58B7A1E2075505350D130514006A1 /* Support.h in Headers */, - 28748DDD8E8A2AEB3502CBF69AB4BDDB /* Testing.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + 05AF921757BAF218468C62708B020AA6 /* TransitionKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 776BD5F5971B32DDF8E6A10063D3C2F5 /* Build configuration list for PBXNativeTarget "TransitionKit" */; + buildPhases = ( + 8FDCE15764753ADC3473510DD6B2D8B5 /* Sources */, + 5585D11E7E0A5A702DA209671365FADF /* Frameworks */, + 235759BBA87FE7B50D5CDEC6E14CA7A8 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TransitionKit; + productName = TransitionKit; + productReference = F970BE5082817C3185CB918CBDAFE49B /* libTransitionKit.a */; + productType = "com.apple.product-type.library.static"; + }; 080AF914A09167DB5759A733917B840F /* ISO8601DateFormatterValueTransformer */ = { isa = PBXNativeTarget; buildConfigurationList = D698E21AD6E8699A3BDEA8BF928C6677 /* Build configuration list for PBXNativeTarget "ISO8601DateFormatterValueTransformer" */; @@ -3812,35 +4064,29 @@ ); name = ISO8601DateFormatterValueTransformer; productName = ISO8601DateFormatterValueTransformer; - productReference = 9C2BCF9C99AEDE045D2BBFA1DF8CC208 /* libISO8601DateFormatterValueTransformer.a */; + productReference = C5F83C7A2BEAFF6FFAEAD7A6F73B7D49 /* libISO8601DateFormatterValueTransformer.a */; productType = "com.apple.product-type.library.static"; }; - 0DC1ECBDD92B997AEA23F9950AA90665 /* Pods */ = { + 0EB292B9319B2DAFB20D9A12B70C9D45 /* RestKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 6E61F3AE6B149150E949E22581757F27 /* Build configuration list for PBXNativeTarget "Pods" */; + buildConfigurationList = 6A3F4B905459EE391C08BBDEFCD88A2D /* Build configuration list for PBXNativeTarget "RestKit" */; buildPhases = ( - AC963ADF58EEFB6DD58B1D7B88F235B2 /* Sources */, - D6260A8A745BE7433644EE05C6F9EE0A /* Frameworks */, + E890AF42CB01E48E4575A2E6468A4288 /* Sources */, + 63458E103C17B332F0872EC549B57894 /* Frameworks */, + 6BD109D1C8BF4F54CE2A7C6F7F91C5E8 /* Headers */, ); buildRules = ( ); dependencies = ( - 53E1ACBEC50B09EE6B9FAF3DD1C524CA /* PBXTargetDependency */, - FA73EB3C4B3C4CCF6F4BE44B47E79A7E /* PBXTargetDependency */, - 4C637EB26D3202CB6C05595A6B8AD136 /* PBXTargetDependency */, - 588BC898457A8CE2024D7B177E940551 /* PBXTargetDependency */, - 262635609BC8D3C2B4226143E6FEC97E /* PBXTargetDependency */, - 43621BF92BB185CA3558DB05A6B6C68C /* PBXTargetDependency */, - B220F8A9EB48E9D10B8ABF5D4CBFEC84 /* PBXTargetDependency */, - 70C54CCFB7FE7F502C81A2A38F6273AA /* PBXTargetDependency */, - F5A0B5F2A7452B83268CDBAF04660413 /* PBXTargetDependency */, - 8B6EA1DF52BBA239D811EE0FACCD74DD /* PBXTargetDependency */, - 1DAA33AFB0B62CA577654225852D35F5 /* PBXTargetDependency */, - 8A82CEED3128313AAF29DFA0CFD81CE3 /* PBXTargetDependency */, + B3CB3A784EC01BD22BD2A2D7715117F4 /* PBXTargetDependency */, + 9FCD970EABEC67BFA1394916D7ED1CC9 /* PBXTargetDependency */, + 4909A8706666DFDB01A2C76C5D573D69 /* PBXTargetDependency */, + A40864DBEEF11A082B652791FA04C24C /* PBXTargetDependency */, + DC9F00594A01E8A9FF3ACFF59CDEE467 /* PBXTargetDependency */, ); - name = Pods; - productName = Pods; - productReference = 2C197AC911176562F9C82890218D2927 /* libPods.a */; + name = RestKit; + productName = RestKit; + productReference = 80D183F090FB2841492B19FAC5CD77B6 /* libRestKit.a */; productType = "com.apple.product-type.library.static"; }; 4E286D373D75563CE26E479A68203892 /* FBSDKLoginKit */ = { @@ -3858,7 +4104,7 @@ ); name = FBSDKLoginKit; productName = FBSDKLoginKit; - productReference = 54343AE2C02ECF5E183700CB786869CB /* libFBSDKLoginKit.a */; + productReference = 9D7377386CC3EBA3E3B7C409D23C69B6 /* libFBSDKLoginKit.a */; productType = "com.apple.product-type.library.static"; }; 5366B7F679CF2BA31EA583EA35CA2D90 /* Parse */ = { @@ -3876,7 +4122,7 @@ ); name = Parse; productName = Parse; - productReference = 84AD6D354E9C8F6B153ED2A34AC28FAC /* libParse.a */; + productReference = 1D9362003B89F08493A37902350DA1BC /* libParse.a */; productType = "com.apple.product-type.library.static"; }; 61681BF0E677683490353B846C61A129 /* AFNetworking */ = { @@ -3893,42 +4139,54 @@ ); name = AFNetworking; productName = AFNetworking; - productReference = 54BA28BB9CDEB01C1E6CE26A23783B3F /* libAFNetworking.a */; + productReference = 6A45C57C5D3CBC79D400F49C075773AE /* libAFNetworking.a */; productType = "com.apple.product-type.library.static"; }; - 7D2B4C2000D9D203AFCEB1913037D8E8 /* TransitionKit */ = { + 81D7FE2A0FD9258247B1232874B837DA /* FBSDKCoreKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 9852559B1969F150F04DFA5F99B41CCE /* Build configuration list for PBXNativeTarget "TransitionKit" */; + buildConfigurationList = 9D5140DAF776FF373AAB7D42B9292675 /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */; buildPhases = ( - 833A0D9FF4B4BFBC7B95E79131ECCCE2 /* Sources */, - 4401489EF5E0F90A00960F1C61D98D00 /* Frameworks */, - A82A973B2CDE8E30CC1AFF120E3041F5 /* Headers */, + 678CA587F9F0CD82C2737EC72B7D49E6 /* Sources */, + 06397B19B46BC23B4020A7016F06E806 /* Frameworks */, + 19C2B07A862CD221D4D5B9309876BAC3 /* Headers */, ); buildRules = ( ); dependencies = ( + F7688FE10814D6B183CC1B9B3F9F7B56 /* PBXTargetDependency */, ); - name = TransitionKit; - productName = TransitionKit; - productReference = 0711E2059F93A9DCBD5B583B9A11D2F5 /* libTransitionKit.a */; + name = FBSDKCoreKit; + productName = FBSDKCoreKit; + productReference = E0E0D90BB11B78E84D92384725A9534E /* libFBSDKCoreKit.a */; productType = "com.apple.product-type.library.static"; }; - 81D7FE2A0FD9258247B1232874B837DA /* FBSDKCoreKit */ = { + 83077DC47C917DFA4D9F81629D0AA80C /* Pods */ = { isa = PBXNativeTarget; - buildConfigurationList = 9D5140DAF776FF373AAB7D42B9292675 /* Build configuration list for PBXNativeTarget "FBSDKCoreKit" */; + buildConfigurationList = A1C2EE2AE7BD563B4A49CDA59286CA4E /* Build configuration list for PBXNativeTarget "Pods" */; buildPhases = ( - 678CA587F9F0CD82C2737EC72B7D49E6 /* Sources */, - 06397B19B46BC23B4020A7016F06E806 /* Frameworks */, - 19C2B07A862CD221D4D5B9309876BAC3 /* Headers */, + 626D5271FA62C2E787E92C0C06118473 /* Sources */, + 633F46B6757F8B68507D56B231750794 /* Frameworks */, ); buildRules = ( ); dependencies = ( - F7688FE10814D6B183CC1B9B3F9F7B56 /* PBXTargetDependency */, + BE47033188B8D72402B90474E4F2A905 /* PBXTargetDependency */, + FC9A62FC396F057A9D3B1657CB55DC6D /* PBXTargetDependency */, + 3E4988ED810AD321E1E9DFEC13FEC872 /* PBXTargetDependency */, + C9563FCB47B04BAFDE797E98AC96E16B /* PBXTargetDependency */, + 1B3E7005E90372159541C07635478C09 /* PBXTargetDependency */, + 2E0A25F4A4A85AC834C7F15468F5B337 /* PBXTargetDependency */, + 80F8A239034C4CB916F792A309A7D049 /* PBXTargetDependency */, + 0165668441754BC1FA06647E5E8B1BC2 /* PBXTargetDependency */, + 2F5F18AEAFEBEC26EA2C13A32E9D1852 /* PBXTargetDependency */, + 311341FA67358AAF209E4F9F0C4466F3 /* PBXTargetDependency */, + 7ED5415B6800424874AAD35E3516EE07 /* PBXTargetDependency */, + 29DDDD2855AC6B907DDB5A2453363AD9 /* PBXTargetDependency */, + FAA8A8573D840D2F7E36B520A72135BF /* PBXTargetDependency */, ); - name = FBSDKCoreKit; - productName = FBSDKCoreKit; - productReference = 62B1C84DAFBA62E9315595E2052A8728 /* libFBSDKCoreKit.a */; + name = Pods; + productName = Pods; + productReference = 011534C01155F79E4047CADDE68EF6B8 /* libPods.a */; productType = "com.apple.product-type.library.static"; }; 9145E070690055EA2D82D264E78B0F71 /* FoldingTabBar */ = { @@ -3945,29 +4203,7 @@ ); name = FoldingTabBar; productName = FoldingTabBar; - productReference = A634E305E726A2D18B89914E5F8909D3 /* libFoldingTabBar.a */; - productType = "com.apple.product-type.library.static"; - }; - 950F7D9F52389DCF637F3C1313255F78 /* RestKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1B423BA565331874236054257C35AAEB /* Build configuration list for PBXNativeTarget "RestKit" */; - buildPhases = ( - DF252A3FF4DBA662945DE8964852F37A /* Sources */, - CA3A57779CCE39F4B6C39B2E0BD75892 /* Frameworks */, - F04DEE87FCBC7031A98CD60748D5481E /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - C055826DE32AA06E3C4C842D66DC51E3 /* PBXTargetDependency */, - 947B8A9ACA161B88A2A9EC0FF69FA490 /* PBXTargetDependency */, - 08A8AEB8966E2E43A9431D0003593952 /* PBXTargetDependency */, - AD57BFB78693C8FE8F933AF8EB6946C1 /* PBXTargetDependency */, - 9080548E04B19332D7C26C84C5DA6A24 /* PBXTargetDependency */, - ); - name = RestKit; - productName = RestKit; - productReference = 424AE54B9E9D6A204E25E68A391EAC5C /* libRestKit.a */; + productReference = 80E5F5E0AE0F6B7B2757A6066BCC8612 /* libFoldingTabBar.a */; productType = "com.apple.product-type.library.static"; }; A48601FEE4437A924848DB48369BA809 /* Bolts */ = { @@ -3984,24 +4220,7 @@ ); name = Bolts; productName = Bolts; - productReference = CBA3A41947E01023E459EDEF3961C5B6 /* libBolts.a */; - productType = "com.apple.product-type.library.static"; - }; - BEE18208B27447ADBC42B142637E5653 /* SOCKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0A0B770E5D4A040A278256FB0958784D /* Build configuration list for PBXNativeTarget "SOCKit" */; - buildPhases = ( - 997D1E51BED10335B3974C35733B13EA /* Sources */, - D3AB408B503F4AE1027F1851D3201F2E /* Frameworks */, - 425A09876C51EDD275BEAF10092919C0 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SOCKit; - productName = SOCKit; - productReference = CCF08CD19CC8E81472432439E658917F /* libSOCKit.a */; + productReference = BFCC23211BE47A527079FEF69772F5CE /* libBolts.a */; productType = "com.apple.product-type.library.static"; }; C47E006176ABF4755350B88C088C3F0D /* RKValueTransformers */ = { @@ -4018,7 +4237,7 @@ ); name = RKValueTransformers; productName = RKValueTransformers; - productReference = CD540DA6FE69BCC3A353182F52EFE0BF /* libRKValueTransformers.a */; + productReference = 28ACD3CB82BEF500AB8A021A9907BF32 /* libRKValueTransformers.a */; productType = "com.apple.product-type.library.static"; }; C78CAB9013653EB1A250B2DFD3BC7666 /* FBSDKShareKit */ = { @@ -4036,7 +4255,41 @@ ); name = FBSDKShareKit; productName = FBSDKShareKit; - productReference = 91E3599579258E326AC94189503BED96 /* libFBSDKShareKit.a */; + productReference = 979C040C22C6D7527C085E98ED8D71A0 /* libFBSDKShareKit.a */; + productType = "com.apple.product-type.library.static"; + }; + D8FDBC10A40DB83968987CBA76E4F7DD /* SOCKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = CB03CA1862F38085257433BFD1800B62 /* Build configuration list for PBXNativeTarget "SOCKit" */; + buildPhases = ( + 097BC0EE360EE40371D791F02C321299 /* Sources */, + F1E353087C983AF68F393D9A09D83CDA /* Frameworks */, + C49083680F8B4A2C2894B47349E1B59A /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SOCKit; + productName = SOCKit; + productReference = 34C584E3410A80115A9107E13C995E70 /* libSOCKit.a */; + productType = "com.apple.product-type.library.static"; + }; + DD71C0AD634DC4E364BC189688A42294 /* pop */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3E62EC71A9D0016F784F7C6B8D081224 /* Build configuration list for PBXNativeTarget "pop" */; + buildPhases = ( + 236C57FBEE351C3C8D87B75C117C8782 /* Sources */, + AAABAAEC6D245621B8DDE1ACF9BB7918 /* Frameworks */, + 48BE40436AC830EF2C4CB6035A80602C /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = pop; + productName = pop; + productReference = FE3AAD9A2F31FBC9D00D7715F65FDB26 /* libpop.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -4056,7 +4309,7 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 0E07C05DC93911C736F9163ED8A5612E /* Products */; + productRefGroup = 8C2957D7B83B63ED6950DC1F89AD93E3 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -4068,11 +4321,12 @@ 9145E070690055EA2D82D264E78B0F71 /* FoldingTabBar */, 080AF914A09167DB5759A733917B840F /* ISO8601DateFormatterValueTransformer */, 5366B7F679CF2BA31EA583EA35CA2D90 /* Parse */, - 0DC1ECBDD92B997AEA23F9950AA90665 /* Pods */, - 950F7D9F52389DCF637F3C1313255F78 /* RestKit */, + 83077DC47C917DFA4D9F81629D0AA80C /* Pods */, + DD71C0AD634DC4E364BC189688A42294 /* pop */, + 0EB292B9319B2DAFB20D9A12B70C9D45 /* RestKit */, C47E006176ABF4755350B88C088C3F0D /* RKValueTransformers */, - BEE18208B27447ADBC42B142637E5653 /* SOCKit */, - 7D2B4C2000D9D203AFCEB1913037D8E8 /* TransitionKit */, + D8FDBC10A40DB83968987CBA76E4F7DD /* SOCKit */, + 05AF921757BAF218468C62708B020AA6 /* TransitionKit */, ); }; /* End PBXProject section */ @@ -4101,6 +4355,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 097BC0EE360EE40371D791F02C321299 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B60AAB7F842EAE538F42641F811DBC07 /* SOCKit-dummy.m in Sources */, + D279CC9D345EBC4120F60408E3392608 /* SOCKit.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 1B24A6DE00BF454C0B785A62F56A9B24 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4135,6 +4398,40 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 236C57FBEE351C3C8D87B75C117C8782 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6C003AB01A869DC27CDDCD6CCC0CACE9 /* pop-dummy.m in Sources */, + 74935B997B546A6E2D523ECE6E06E4FC /* POPAnimatableProperty.mm in Sources */, + C234A73209753EDCFE73464F05EA45E1 /* POPAnimation.mm in Sources */, + C067F0759FE44C28F074EFF6C754A11D /* POPAnimationEvent.mm in Sources */, + F751CEADDC757850DAE30E3411FD494D /* POPAnimationExtras.mm in Sources */, + B63E72E378C0C4DEBC0EF1A6EE5CAD25 /* POPAnimationRuntime.mm in Sources */, + BE695DFD8590BE457047A5B07B829199 /* POPAnimationTracer.mm in Sources */, + B16764D185993A3DA87BD56929F05480 /* POPAnimator.mm in Sources */, + 5FBB039F53D31783622E144DF3B0DC7B /* POPBasicAnimation.mm in Sources */, + A1732411203D091E1FC231EB20F5A8C7 /* POPCGUtils.mm in Sources */, + 57B1DEE062B9373E350E5EB3DC657FC8 /* POPCustomAnimation.mm in Sources */, + FF185ADF983855172EE9FA3D34A91DD6 /* POPDecayAnimation.mm in Sources */, + 916B7BBE0652142389AB4290D8E4ECB2 /* POPGeometry.mm in Sources */, + C03ACB5DC566E5F4BCC725F8A8D6F195 /* POPLayerExtras.mm in Sources */, + 862060E613DA5CEF2678D462DA797828 /* POPMath.mm in Sources */, + 954B302CD45EB32FEC37295F3EC0206C /* POPPropertyAnimation.mm in Sources */, + C46A8064365E409811A4E812177A4041 /* POPSpringAnimation.mm in Sources */, + 1005515B34A7CCF2EF97A317B71D2632 /* POPVector.mm in Sources */, + B253780C6017BCC8E3B9457E3048462C /* TransformationMatrix.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 626D5271FA62C2E787E92C0C06118473 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6C13E0E83471C1104A40CB5D928C5C78 /* Pods-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 678CA587F9F0CD82C2737EC72B7D49E6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4448,167 +4745,138 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 833A0D9FF4B4BFBC7B95E79131ECCCE2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - A1292411CD105DB99B42269F163F0616 /* TKEvent.m in Sources */, - 0A737FDD8E364395D31D09A4510E8833 /* TKState.m in Sources */, - 2D61DA1D31B497355FA3519736497111 /* TKStateMachine.m in Sources */, - 035EEE9572C6A81E25704CE1C650473E /* TKTransition.m in Sources */, - C6976F7772E03E1FE2AB027F7AD1484B /* TransitionKit-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 997D1E51BED10335B3974C35733B13EA /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FEABBD556CE7DA2220EF2DA04C735136 /* SOCKit-dummy.m in Sources */, - CEB3B7738916847B38FA1E13D49981DC /* SOCKit.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AC963ADF58EEFB6DD58B1D7B88F235B2 /* Sources */ = { + 8FDCE15764753ADC3473510DD6B2D8B5 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A5904B7145B927AF58B5B7F952A198E2 /* Pods-dummy.m in Sources */, + A48B34E8A4056CAF37BF815D80F851FB /* TKEvent.m in Sources */, + 16A0D1D260C2A0C9456093033B7B2704 /* TKState.m in Sources */, + 3618426AB7A42805D853A084743D6138 /* TKStateMachine.m in Sources */, + 9DC8CA8457330A93C4CCC547F530F6A0 /* TKTransition.m in Sources */, + F935343777FB6C7405A086E0FA59F28C /* TransitionKit-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DF252A3FF4DBA662945DE8964852F37A /* Sources */ = { + E890AF42CB01E48E4575A2E6468A4288 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - BABA3F412E61C8AF114390901E5EB8C2 /* lcl_RK.m in Sources */, - 211063C2E328D1BA057D5952FAE72961 /* RestKit-dummy.m in Sources */, - 3E9B5AD53BD51F897F832FC014D1AF5D /* RKAttributeMapping.m in Sources */, - FEE35D4E0AC6882B8B643149854B0288 /* RKBenchmark.m in Sources */, - 705AA38F8B993508AEFEE4998DC8457F /* RKConnectionTestExpectation.m in Sources */, - AED1CD8AB9480299EB225BD4EDF8F195 /* RKDictionaryUtilities.m in Sources */, - 1AF2BFF9AAB59B86448DAD27986826D6 /* RKDotNetDateFormatter.m in Sources */, - BAFE82F7512A8C98F8C6D46D28F5B965 /* RKDynamicMapping.m in Sources */, - 246339D060F03B20F84E44F51AB7D0B1 /* RKErrorMessage.m in Sources */, - 0AE875BA34FB652137DC559C9691F736 /* RKErrors.m in Sources */, - F0FE6F4E093E414D2956FA431E0C606C /* RKHTTPRequestOperation.m in Sources */, - 531C2A042979E8EA3995593A85E4DDAE /* RKHTTPUtilities.m in Sources */, - 814807B51F230D7D561699CC6FCE8111 /* RKLog.m in Sources */, - FE2AAC4C194831168C51BE65F975CEC3 /* RKLumberjackLogger.m in Sources */, - 0E6F9756BA82ADD778780C58B4055D79 /* RKManagedObjectRequestOperation.m in Sources */, - A9F693EAD2DA785A4DC3C32E334C7B91 /* RKMapperOperation.m in Sources */, - 7CAFF794C7BC2BB61BB7BF31E8278215 /* RKMapping.m in Sources */, - C98D3A0AD03C7C00CB3C17CFEDED8552 /* RKMappingOperation.m in Sources */, - D5101DAEAC2C4A3667D2CDB64B5B0F92 /* RKMappingResult.m in Sources */, - 32FE2EE3C0D371A093A87DBD3D5A378C /* RKMappingTest.m in Sources */, - 7CDB3C41071E6BE656221EA86B04C809 /* RKMIMETypes.m in Sources */, - 6608AB736E0C33DCF8268F38C187F113 /* RKMIMETypeSerialization.m in Sources */, - C6A4588B17EC2FC562007331CB512C49 /* RKNSJSONSerialization.m in Sources */, - B7F654610A8DF8054D47B38623765DAA /* RKObjectManager.m in Sources */, - BA348104C2089F3DB71A91E2E7AB4EED /* RKObjectMapping.m in Sources */, - 7C60516B1E4A99AEF16F3B60AA91C41D /* RKObjectMappingMatcher.m in Sources */, - 225B422163530406C2D09DA1D7160390 /* RKObjectMappingOperationDataSource.m in Sources */, - FE3B8BC960347662443ADE923D1793C3 /* RKObjectParameterization.m in Sources */, - 8854963B7559E45BA04D4A3AC29B26D2 /* RKObjectRequestOperation.m in Sources */, - 97E73BF140E412BECB34ACF01B50C764 /* RKObjectUtilities.m in Sources */, - 92D3DBF67B9423C54D94F45652DA8073 /* RKOperationStateMachine.m in Sources */, - 73874B352F141AD7451291BE3C07619D /* RKPaginator.m in Sources */, - CB3395E1F4E550A3333860410E07904D /* RKPathMatcher.m in Sources */, - F4115B73585F11A711426EAE0B3B0B8C /* RKPathUtilities.m in Sources */, - 7C0161AC9FE0AC577A2796CFE21D38D9 /* RKPropertyInspector.m in Sources */, - 626EA657BFC628DA8317728BE78A3B4A /* RKPropertyMapping.m in Sources */, - 328528E69AE673F4223F2B27CF07EB90 /* RKPropertyMappingTestExpectation.m in Sources */, - 32659ECDEF93706E5DE3C89FF10C3725 /* RKRelationshipMapping.m in Sources */, - 77DE7989C98CD1CCB807263C1BE7D419 /* RKRequestDescriptor.m in Sources */, - 1861C84C95D4B50B28765572F4F0E09C /* RKResponseDescriptor.m in Sources */, - 6811D76FD209AF70990900C4FA2348E5 /* RKResponseMapperOperation.m in Sources */, - 160CF44612AC90EC6ECF79F089BD4C6D /* RKRoute.m in Sources */, - E7FCA88FB0851D5AF8DB69F2411E06E2 /* RKRouter.m in Sources */, - D491E4080F061A2DA0BE31AC5D94DEA7 /* RKRouteSet.m in Sources */, - 04BE2CB66242D07246BFC9F2F167E9D2 /* RKStringTokenizer.m in Sources */, - 70C825F4D31DA952A01695D926762BBF /* RKTestConstants.m in Sources */, - 7CFB4A9919959620E1C0514632BDB8CD /* RKTestFactory.m in Sources */, - E619774CBBC6B7DB599BB085A6F24102 /* RKTestFixture.m in Sources */, - E7F0BB11E1A7B4F36F3B5C5473E30A10 /* RKTestHelpers.m in Sources */, - D57E377DBC5DFE3FE279AA79A92A9BB3 /* RKTestNotificationObserver.m in Sources */, - 27F35B04936EED379E9B73ADDEEE0EA8 /* RKURLEncodedSerialization.m in Sources */, + 9519538BB8C70220B80F280767FD1CE4 /* lcl_RK.m in Sources */, + 04885DFC809E60B33C73D0262CCD3D7B /* RestKit-dummy.m in Sources */, + 0601A5D463502C68B57F87216DC01E47 /* RKAttributeMapping.m in Sources */, + C674B4D84DEE46658392F9A5C6CE6429 /* RKBenchmark.m in Sources */, + BAF2D4F797832511A4718AE2F9D4C9E2 /* RKConnectionTestExpectation.m in Sources */, + 6370111F8E53B9FCB359DE67FB0A5768 /* RKDictionaryUtilities.m in Sources */, + 558CA36485EBAAE1ACFC94ECF26A4C13 /* RKDotNetDateFormatter.m in Sources */, + 1E37A7B04ECBE439CE8A683823B663B7 /* RKDynamicMapping.m in Sources */, + D9CF728584EBF7AD231EF28A2BB2F158 /* RKErrorMessage.m in Sources */, + B1864DAD1E71AE119D92AD90D4075B44 /* RKErrors.m in Sources */, + FD60C452AEB7A05724E5BC76D389C794 /* RKHTTPRequestOperation.m in Sources */, + 3E00A40C8893EE63BA63D4A9008594A7 /* RKHTTPUtilities.m in Sources */, + 591282C08F383491158606060CF4799A /* RKLog.m in Sources */, + 5290E96A370ECE9B13F91391BFECE059 /* RKLumberjackLogger.m in Sources */, + ED6709D08D9B015AB6FC3F9A6B207DD3 /* RKManagedObjectRequestOperation.m in Sources */, + 329EEBF461254C9F4C4F7DFF196498F3 /* RKMapperOperation.m in Sources */, + AABB7281DE92C99CC47D5985438FFAF8 /* RKMapping.m in Sources */, + 1B3C45012DD6C877AF2B3757B48D2CEA /* RKMappingOperation.m in Sources */, + 8F8BE93BB0467F675822961A702D55F1 /* RKMappingResult.m in Sources */, + 83A32D0DCD7B1179BE18D0B98A61B20D /* RKMappingTest.m in Sources */, + 8173E2EA7A6ED5AF96950F1C983E7D8E /* RKMIMETypes.m in Sources */, + 37623963889357DF56CD5A4023A293D0 /* RKMIMETypeSerialization.m in Sources */, + E10ED2683F83860B93799B1241CE8C22 /* RKNSJSONSerialization.m in Sources */, + 1B7C3D5167896D20FDA7AD2B99B9B442 /* RKObjectManager.m in Sources */, + E2360651E2E5A293C9E59863EC157308 /* RKObjectMapping.m in Sources */, + 51A4B3F64553C8AF7DAD4F16035044C7 /* RKObjectMappingMatcher.m in Sources */, + 0B96F448CA70A5E1B7389BD7015EFE01 /* RKObjectMappingOperationDataSource.m in Sources */, + BADD59CEDAC52C54651BF484D6490C67 /* RKObjectParameterization.m in Sources */, + 562CF85B86D5B01C4F9A7B9ADB016D2C /* RKObjectRequestOperation.m in Sources */, + 798D21067BF1C22C12D8A94001BF5A59 /* RKObjectUtilities.m in Sources */, + F7B6B5468F0E365CBF4AC5F003E17684 /* RKOperationStateMachine.m in Sources */, + CF027C0D4F7C6873C8BEA392044BE467 /* RKPaginator.m in Sources */, + B4AECD7B0079602334FD0CA11106AC3F /* RKPathMatcher.m in Sources */, + AFCC73E1C178EA83628FBECB44C75A50 /* RKPathUtilities.m in Sources */, + 872A4C2396A30AA64CF2786166CB6562 /* RKPropertyInspector.m in Sources */, + 5BAB981C0B0E5CA4456C701E0D4C8C3D /* RKPropertyMapping.m in Sources */, + 4864EC253C572D7696B5849BB72291D0 /* RKPropertyMappingTestExpectation.m in Sources */, + 6239684B7D89D4F446BF5B4383804BFE /* RKRelationshipMapping.m in Sources */, + 609CCC1A9F655B5B7E6F6D3FF89E80D5 /* RKRequestDescriptor.m in Sources */, + 440457C5E92E83101E8970FFC6086762 /* RKResponseDescriptor.m in Sources */, + 22BB0A3493753E3DE40426F8E2A8D98F /* RKResponseMapperOperation.m in Sources */, + 52D0E5B4BE2960D5264CA76B3287BA53 /* RKRoute.m in Sources */, + B0C1C3993C766809A801540862C105E2 /* RKRouter.m in Sources */, + 5F51961B26B43B74BC1F3504C2AA68ED /* RKRouteSet.m in Sources */, + 13F6C4E6B73C633E8D58029DEB14DF5A /* RKStringTokenizer.m in Sources */, + 0059AAF7BDA07F6056221CE7D55CFE28 /* RKTestConstants.m in Sources */, + 01CEDCC7CB1512AB0E0F3D84C2F12918 /* RKTestFactory.m in Sources */, + 451A0964C7CDBD5043BBD97DD3BB59EF /* RKTestFixture.m in Sources */, + A3F739BF4CBFB653314B4737DABB5E7B /* RKTestHelpers.m in Sources */, + 275BF668E4B40AEBF35F411A56F05B6D /* RKTestNotificationObserver.m in Sources */, + FCAB2361E009734F6BE467ED760F2E00 /* RKURLEncodedSerialization.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 08A8AEB8966E2E43A9431D0003593952 /* PBXTargetDependency */ = { + 0165668441754BC1FA06647E5E8B1BC2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RKValueTransformers; - target = C47E006176ABF4755350B88C088C3F0D /* RKValueTransformers */; - targetProxy = 339C469D88EE3434DAFA40C9E6F07FE1 /* PBXContainerItemProxy */; - }; - 1DAA33AFB0B62CA577654225852D35F5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SOCKit; - target = BEE18208B27447ADBC42B142637E5653 /* SOCKit */; - targetProxy = B1239271F4A1FD7D59D205FD338D610B /* PBXContainerItemProxy */; + name = Parse; + target = 5366B7F679CF2BA31EA583EA35CA2D90 /* Parse */; + targetProxy = E06E7B292C6EE211982F723016ADBF4B /* PBXContainerItemProxy */; }; - 262635609BC8D3C2B4226143E6FEC97E /* PBXTargetDependency */ = { + 1B3E7005E90372159541C07635478C09 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FBSDKShareKit; target = C78CAB9013653EB1A250B2DFD3BC7666 /* FBSDKShareKit */; - targetProxy = E0E5E109337B187FD694994086A939B4 /* PBXContainerItemProxy */; - }; - 43621BF92BB185CA3558DB05A6B6C68C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FoldingTabBar; - target = 9145E070690055EA2D82D264E78B0F71 /* FoldingTabBar */; - targetProxy = 8A21679C58B10CC321CF4F0A4AFE1D12 /* PBXContainerItemProxy */; + targetProxy = 276A34C32823D237C256532097A068EB /* PBXContainerItemProxy */; }; - 4C637EB26D3202CB6C05595A6B8AD136 /* PBXTargetDependency */ = { + 29DDDD2855AC6B907DDB5A2453363AD9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKCoreKit; - target = 81D7FE2A0FD9258247B1232874B837DA /* FBSDKCoreKit */; - targetProxy = 96693A54A0BFA8B81D156BF21770C588 /* PBXContainerItemProxy */; + name = TransitionKit; + target = 05AF921757BAF218468C62708B020AA6 /* TransitionKit */; + targetProxy = D1818ED7610953D782FE1124E1218D77 /* PBXContainerItemProxy */; }; - 53E1ACBEC50B09EE6B9FAF3DD1C524CA /* PBXTargetDependency */ = { + 2E0A25F4A4A85AC834C7F15468F5B337 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = AFNetworking; - target = 61681BF0E677683490353B846C61A129 /* AFNetworking */; - targetProxy = DD9ABECB9558235383385F6FC07092C1 /* PBXContainerItemProxy */; + name = FoldingTabBar; + target = 9145E070690055EA2D82D264E78B0F71 /* FoldingTabBar */; + targetProxy = FAD9FE9F58E1BE6A32DD807949F6E4A4 /* PBXContainerItemProxy */; }; - 588BC898457A8CE2024D7B177E940551 /* PBXTargetDependency */ = { + 2F5F18AEAFEBEC26EA2C13A32E9D1852 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSDKLoginKit; - target = 4E286D373D75563CE26E479A68203892 /* FBSDKLoginKit */; - targetProxy = 898060DAD9C6F56E39CBC74E7C3BF4CD /* PBXContainerItemProxy */; + name = RKValueTransformers; + target = C47E006176ABF4755350B88C088C3F0D /* RKValueTransformers */; + targetProxy = D0849CD3CF9A05520CE20A883B2B4F39 /* PBXContainerItemProxy */; }; - 70C54CCFB7FE7F502C81A2A38F6273AA /* PBXTargetDependency */ = { + 311341FA67358AAF209E4F9F0C4466F3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Parse; - target = 5366B7F679CF2BA31EA583EA35CA2D90 /* Parse */; - targetProxy = 3EC57B4C7E05EAE5D8D0CEE64F908894 /* PBXContainerItemProxy */; + name = RestKit; + target = 0EB292B9319B2DAFB20D9A12B70C9D45 /* RestKit */; + targetProxy = AF0BFB883EC6A98CD8AE8E24C8F426B1 /* PBXContainerItemProxy */; }; - 8A82CEED3128313AAF29DFA0CFD81CE3 /* PBXTargetDependency */ = { + 3E4988ED810AD321E1E9DFEC13FEC872 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = TransitionKit; - target = 7D2B4C2000D9D203AFCEB1913037D8E8 /* TransitionKit */; - targetProxy = A3F917A717D8563642755DA31CDA523A /* PBXContainerItemProxy */; + name = FBSDKCoreKit; + target = 81D7FE2A0FD9258247B1232874B837DA /* FBSDKCoreKit */; + targetProxy = 302ED64CEF8BCEB768A5A5686F9E9202 /* PBXContainerItemProxy */; }; - 8B6EA1DF52BBA239D811EE0FACCD74DD /* PBXTargetDependency */ = { + 4909A8706666DFDB01A2C76C5D573D69 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RestKit; - target = 950F7D9F52389DCF637F3C1313255F78 /* RestKit */; - targetProxy = EF48640673BF68A34C2B66E619477480 /* PBXContainerItemProxy */; + name = RKValueTransformers; + target = C47E006176ABF4755350B88C088C3F0D /* RKValueTransformers */; + targetProxy = 4201516B1237D71DE5D182C3E05A7889 /* PBXContainerItemProxy */; }; - 9080548E04B19332D7C26C84C5DA6A24 /* PBXTargetDependency */ = { + 7ED5415B6800424874AAD35E3516EE07 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = TransitionKit; - target = 7D2B4C2000D9D203AFCEB1913037D8E8 /* TransitionKit */; - targetProxy = 47172F3F466D90D95F4A8AE2922E0EB8 /* PBXContainerItemProxy */; + name = SOCKit; + target = D8FDBC10A40DB83968987CBA76E4F7DD /* SOCKit */; + targetProxy = FE69D65D7B77276503ADD40689F26FD5 /* PBXContainerItemProxy */; }; - 947B8A9ACA161B88A2A9EC0FF69FA490 /* PBXTargetDependency */ = { + 80F8A239034C4CB916F792A309A7D049 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ISO8601DateFormatterValueTransformer; target = 080AF914A09167DB5759A733917B840F /* ISO8601DateFormatterValueTransformer */; - targetProxy = A1E2F802EE663F8DD0A6BE0FFD496B02 /* PBXContainerItemProxy */; + targetProxy = A909E61D233546F6A1FB381F7E377CA7 /* PBXContainerItemProxy */; }; 9A5270C4EC04E2D2E511996DDEDD58C5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -4616,17 +4884,23 @@ target = 81D7FE2A0FD9258247B1232874B837DA /* FBSDKCoreKit */; targetProxy = D38BE89B6FB2301AC09AD26156B819E8 /* PBXContainerItemProxy */; }; - AD57BFB78693C8FE8F933AF8EB6946C1 /* PBXTargetDependency */ = { + 9FCD970EABEC67BFA1394916D7ED1CC9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ISO8601DateFormatterValueTransformer; + target = 080AF914A09167DB5759A733917B840F /* ISO8601DateFormatterValueTransformer */; + targetProxy = B1A299548977B6ABB67A7B67B42367D6 /* PBXContainerItemProxy */; + }; + A40864DBEEF11A082B652791FA04C24C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SOCKit; - target = BEE18208B27447ADBC42B142637E5653 /* SOCKit */; - targetProxy = 976E4F9B0513141FCEA3BAB7C51C8A0B /* PBXContainerItemProxy */; + target = D8FDBC10A40DB83968987CBA76E4F7DD /* SOCKit */; + targetProxy = E92B930C85A1D208110782E0EDC04E3C /* PBXContainerItemProxy */; }; - B220F8A9EB48E9D10B8ABF5D4CBFEC84 /* PBXTargetDependency */ = { + B3CB3A784EC01BD22BD2A2D7715117F4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = ISO8601DateFormatterValueTransformer; - target = 080AF914A09167DB5759A733917B840F /* ISO8601DateFormatterValueTransformer */; - targetProxy = 2CBE7910D2EC2D855C213F7D17AA7055 /* PBXContainerItemProxy */; + name = AFNetworking; + target = 61681BF0E677683490353B846C61A129 /* AFNetworking */; + targetProxy = BAACCA3BC071717750DC231D62B73AD2 /* PBXContainerItemProxy */; }; B724649E56667B1CEB768EA1EBEFD8D4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -4634,11 +4908,17 @@ target = A48601FEE4437A924848DB48369BA809 /* Bolts */; targetProxy = A94178143C22B923AD7FB31DE66228B0 /* PBXContainerItemProxy */; }; - C055826DE32AA06E3C4C842D66DC51E3 /* PBXTargetDependency */ = { + BE47033188B8D72402B90474E4F2A905 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = AFNetworking; target = 61681BF0E677683490353B846C61A129 /* AFNetworking */; - targetProxy = 52E7C227327DB7F4EF156454BC74CAA4 /* PBXContainerItemProxy */; + targetProxy = FDFB1A8326188F82A80CD07E5ACA2D87 /* PBXContainerItemProxy */; + }; + C9563FCB47B04BAFDE797E98AC96E16B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBSDKLoginKit; + target = 4E286D373D75563CE26E479A68203892 /* FBSDKLoginKit */; + targetProxy = 675BFDC98D3AE67CA01D558BDCB9A6B7 /* PBXContainerItemProxy */; }; CD37FC7A32B6A7B6629457EB67E933A8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -4646,17 +4926,17 @@ target = 81D7FE2A0FD9258247B1232874B837DA /* FBSDKCoreKit */; targetProxy = F2525FB3B5405DC4B1BAF37F01F4D2AB /* PBXContainerItemProxy */; }; - E36E70253F374409C8D0E675B83B8B9A /* PBXTargetDependency */ = { + DC9F00594A01E8A9FF3ACFF59CDEE467 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RKValueTransformers; - target = C47E006176ABF4755350B88C088C3F0D /* RKValueTransformers */; - targetProxy = 7FC4D59C7661F1F90B9637A4AA76565C /* PBXContainerItemProxy */; + name = TransitionKit; + target = 05AF921757BAF218468C62708B020AA6 /* TransitionKit */; + targetProxy = B523CD37BCE78A7AE1C6DB51DA33B0C8 /* PBXContainerItemProxy */; }; - F5A0B5F2A7452B83268CDBAF04660413 /* PBXTargetDependency */ = { + E36E70253F374409C8D0E675B83B8B9A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RKValueTransformers; target = C47E006176ABF4755350B88C088C3F0D /* RKValueTransformers */; - targetProxy = 349ED4A030A17CB37F5BFC4BE863A6F8 /* PBXContainerItemProxy */; + targetProxy = 7FC4D59C7661F1F90B9637A4AA76565C /* PBXContainerItemProxy */; }; F7688FE10814D6B183CC1B9B3F9F7B56 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -4664,18 +4944,24 @@ target = A48601FEE4437A924848DB48369BA809 /* Bolts */; targetProxy = 5F9ACE740BBE74B9EF18ED10D402EBFB /* PBXContainerItemProxy */; }; - FA73EB3C4B3C4CCF6F4BE44B47E79A7E /* PBXTargetDependency */ = { + FAA8A8573D840D2F7E36B520A72135BF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = pop; + target = DD71C0AD634DC4E364BC189688A42294 /* pop */; + targetProxy = E530D725F329BCA4799A9262ABCAE598 /* PBXContainerItemProxy */; + }; + FC9A62FC396F057A9D3B1657CB55DC6D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Bolts; target = A48601FEE4437A924848DB48369BA809 /* Bolts */; - targetProxy = 753FA91ACDD9D25D657204E0ADBB6FE3 /* PBXContainerItemProxy */; + targetProxy = 0AF81BBB1D00CE9364E007A09C3C2829 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ 075D18FF81784FE54E8A3A866A441FC2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9B40691DF0E6BC33074AC41A275DB164 /* FBSDKLoginKit.xcconfig */; + baseConfigurationReference = 3F045700822563CB163FE8B3F606352C /* FBSDKLoginKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; @@ -4693,7 +4979,7 @@ }; 0BEB7BFC34D620410E8215AD748D2773 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E601C5D0D43FA69BCDE6E2ECFF6B02CC /* FBSDKCoreKit.xcconfig */; + baseConfigurationReference = 525A38283E17DE63638B7101EDD603A5 /* FBSDKCoreKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; @@ -4711,7 +4997,7 @@ }; 0FA2BBAFEC75EEB3BB81C9E2C428F353 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9DC5F129D162F601A2EB31F819BCC00D /* Parse.xcconfig */; + baseConfigurationReference = A38DBD435D9B08BE5E3BBE4C171BB0B9 /* Parse.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; @@ -4727,12 +5013,12 @@ }; name = Release; }; - 209E94899E6B4FE507E0CF7D788E0268 /* Release */ = { + 19F3A60D9C6B93D07B9511478DCE6908 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7E54575097CC4D7273F152CBCC1DE9FB /* FBSDKShareKit.xcconfig */; + baseConfigurationReference = 655746194AED6433F130ACB5AA120F9B /* SOCKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/SOCKit/SOCKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -4745,14 +5031,14 @@ }; name = Release; }; - 2A2525A28950F774C68E99A4ADD025E0 /* Debug */ = { + 209E94899E6B4FE507E0CF7D788E0268 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 389CEDD0DDA1F1BB4ACF1258BBC1A500 /* FoldingTabBar.xcconfig */; + baseConfigurationReference = E0BEF4CC671BA1E579779C38712DC769 /* FBSDKShareKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FoldingTabBar/FoldingTabBar-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; @@ -4761,14 +5047,31 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; - 310F83012AE9AC7B9E295F347FCD0607 /* Debug */ = { + 2917FD7E4C82E84F9EC674674E45ACE0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A4F05EE46BF909C52D434101394A8D68 /* SOCKit.xcconfig */; + baseConfigurationReference = 98C98CDFB3F20F2925F6CD1F141BB14F /* Pods.release.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SOCKit/SOCKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MACH_O_TYPE = staticlib; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 2A2525A28950F774C68E99A4ADD025E0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FF5B972C0D2221C57AE6060DE6C9A600 /* FoldingTabBar.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/FoldingTabBar/FoldingTabBar-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; @@ -4783,7 +5086,7 @@ }; 33B47AD17A7B9B8939CA59D91757B215 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 78A46E6623C4E1A7D565B7AC5751DE2C /* RKValueTransformers.xcconfig */; + baseConfigurationReference = BF428BEC06706AA0A98B6805206833C2 /* RKValueTransformers.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch"; @@ -4801,7 +5104,7 @@ }; 3CDB0026CDE3D1B62A37670AE864CD4D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4313BE461C6D0AB4AEFF645FBD735809 /* ISO8601DateFormatterValueTransformer.xcconfig */; + baseConfigurationReference = 3BF16968FBC656E49A7B643EED4B84F6 /* ISO8601DateFormatterValueTransformer.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch"; @@ -4817,12 +5120,30 @@ }; name = Release; }; - 40EA4AFA7E36163B0B79EC293646FE2B /* Release */ = { + 4B27AC8BA944D996C0A841E604EAB6EE /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6AB27F170175D24AE67E7FE4DE679D4B /* TransitionKit.xcconfig */; + baseConfigurationReference = 655746194AED6433F130ACB5AA120F9B /* SOCKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/TransitionKit/TransitionKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/SOCKit/SOCKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 4EAEE715E42BF14B7FC62DCAFFF4CB80 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EB97CD8D9BDC16D9E1CE5F863965790B /* pop.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/pop/pop-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -4835,18 +5156,19 @@ }; name = Release; }; - 51CCDBF9990FA326F739800A607857AD /* Release */ = { + 50A7216646F9DE949301F8230EBDF91C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 98C98CDFB3F20F2925F6CD1F141BB14F /* Pods.release.xcconfig */; + baseConfigurationReference = 67DBA3140A542C45905BA912DF9D6D93 /* RestKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/RestKit/RestKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MACH_O_TYPE = staticlib; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; @@ -4893,7 +5215,7 @@ }; 658C1A12EF15301743B29B1908F2C375 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E601C5D0D43FA69BCDE6E2ECFF6B02CC /* FBSDKCoreKit.xcconfig */; + baseConfigurationReference = 525A38283E17DE63638B7101EDD603A5 /* FBSDKCoreKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/FBSDKCoreKit/FBSDKCoreKit-prefix.pch"; @@ -4911,7 +5233,7 @@ }; 704A9D1ACE8BE44C524946CD091EF5F4 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9DC5F129D162F601A2EB31F819BCC00D /* Parse.xcconfig */; + baseConfigurationReference = A38DBD435D9B08BE5E3BBE4C171BB0B9 /* Parse.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; @@ -4961,14 +5283,14 @@ }; name = Release; }; - 84F9D6817269FC6C1B544D2ACAB1637D /* Release */ = { + 8EAB94A02D205E4A7347D989269FA52D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 412828DEC5B3F3C978D90B000561AC08 /* RestKit.xcconfig */; + baseConfigurationReference = 3BF16968FBC656E49A7B643EED4B84F6 /* ISO8601DateFormatterValueTransformer.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/RestKit/RestKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; @@ -4977,14 +5299,14 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Release; + name = Debug; }; - 8A2E88FDA46F4E88E1259304BB1B260E /* Release */ = { + 8FB2FB45C292505173E27DB11AAAB26B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A4F05EE46BF909C52D434101394A8D68 /* SOCKit.xcconfig */; + baseConfigurationReference = 3F045700822563CB163FE8B3F606352C /* FBSDKLoginKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SOCKit/SOCKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -4997,12 +5319,12 @@ }; name = Release; }; - 8EAB94A02D205E4A7347D989269FA52D /* Debug */ = { + 97E881AEE973FC07B2D5CDF1BFA633EE /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4313BE461C6D0AB4AEFF645FBD735809 /* ISO8601DateFormatterValueTransformer.xcconfig */; + baseConfigurationReference = 67DBA3140A542C45905BA912DF9D6D93 /* RestKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/RestKit/RestKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; @@ -5015,12 +5337,12 @@ }; name = Debug; }; - 8FB2FB45C292505173E27DB11AAAB26B /* Release */ = { + AE9DDACFB9BFED8AC09071B4DB675BEA /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9B40691DF0E6BC33074AC41A275DB164 /* FBSDKLoginKit.xcconfig */; + baseConfigurationReference = 556F7F390D364FD2B3DA48C98E500E2C /* TransitionKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSDKLoginKit/FBSDKLoginKit-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/TransitionKit/TransitionKit-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -5033,27 +5355,9 @@ }; name = Release; }; - ACB789C3CA49E71A9A37C7BA1E12D67A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 412828DEC5B3F3C978D90B000561AC08 /* RestKit.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/RestKit/RestKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Debug; - }; C8703C001541D98EBDDB5A3A2B8B0852 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 389CEDD0DDA1F1BB4ACF1258BBC1A500 /* FoldingTabBar.xcconfig */; + baseConfigurationReference = FF5B972C0D2221C57AE6060DE6C9A600 /* FoldingTabBar.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/FoldingTabBar/FoldingTabBar-prefix.pch"; @@ -5071,7 +5375,7 @@ }; CA0E04A18B30F1C108D0F841BF1407CE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A5D82F87A7D9B6D1BA5B926D5CC28320 /* AFNetworking.xcconfig */; + baseConfigurationReference = A28864FB7EB36A5080B6D12B1B94125F /* AFNetworking.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; @@ -5089,7 +5393,7 @@ }; CE7040F2AD1B940DD8D73BF7BFFCA65A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A5D82F87A7D9B6D1BA5B926D5CC28320 /* AFNetworking.xcconfig */; + baseConfigurationReference = A28864FB7EB36A5080B6D12B1B94125F /* AFNetworking.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; @@ -5107,7 +5411,7 @@ }; D2F8E494AB4D6A0498F75F99A59F171D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 78A46E6623C4E1A7D565B7AC5751DE2C /* RKValueTransformers.xcconfig */; + baseConfigurationReference = BF428BEC06706AA0A98B6805206833C2 /* RKValueTransformers.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/RKValueTransformers/RKValueTransformers-prefix.pch"; @@ -5123,7 +5427,7 @@ }; name = Debug; }; - D689AF640E2BF5F8E3A205170BDAF0EA /* Debug */ = { + D5CF7EA2CB7125B4F2BDA5C1713C5096 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 4E762F23EC34ED4A6FF3312D84E33A40 /* Pods.debug.xcconfig */; buildSettings = { @@ -5140,9 +5444,9 @@ }; name = Debug; }; - E62FA63D299CD84D275CC054B507D56F /* Debug */ = { + D9F08FB4D97391272615BECB95956C38 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6AB27F170175D24AE67E7FE4DE679D4B /* TransitionKit.xcconfig */; + baseConfigurationReference = 556F7F390D364FD2B3DA48C98E500E2C /* TransitionKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/TransitionKit/TransitionKit-prefix.pch"; @@ -5160,7 +5464,7 @@ }; E6F99486C4730AA5797898005863FB56 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7E54575097CC4D7273F152CBCC1DE9FB /* FBSDKShareKit.xcconfig */; + baseConfigurationReference = E0BEF4CC671BA1E579779C38712DC769 /* FBSDKShareKit.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/FBSDKShareKit/FBSDKShareKit-prefix.pch"; @@ -5178,7 +5482,7 @@ }; E8E3ABDAF12C8378694EE61A9091F787 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6B6718A558812C369FEAEEE13F58304E /* Bolts.xcconfig */; + baseConfigurationReference = 19FFE36E5537E1838031F0725CD641C2 /* Bolts.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; @@ -5196,7 +5500,7 @@ }; F5526807BF2C14D6BD59E488B888E604 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6B6718A558812C369FEAEEE13F58304E /* Bolts.xcconfig */; + baseConfigurationReference = 19FFE36E5537E1838031F0725CD641C2 /* Bolts.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; @@ -5212,18 +5516,27 @@ }; name = Release; }; + FFB28E6E15EB6C5874FE8AB400E94E49 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EB97CD8D9BDC16D9E1CE5F863965790B /* pop.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/pop/pop-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0A0B770E5D4A040A278256FB0958784D /* Build configuration list for PBXNativeTarget "SOCKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 310F83012AE9AC7B9E295F347FCD0607 /* Debug */, - 8A2E88FDA46F4E88E1259304BB1B260E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 107C08C918B3D3433F2E017FB4FDB128 /* Build configuration list for PBXNativeTarget "Parse" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5233,15 +5546,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 1B423BA565331874236054257C35AAEB /* Build configuration list for PBXNativeTarget "RestKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ACB789C3CA49E71A9A37C7BA1E12D67A /* Debug */, - 84F9D6817269FC6C1B544D2ACAB1637D /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5260,6 +5564,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 3E62EC71A9D0016F784F7C6B8D081224 /* Build configuration list for PBXNativeTarget "pop" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FFB28E6E15EB6C5874FE8AB400E94E49 /* Debug */, + 4EAEE715E42BF14B7FC62DCAFFF4CB80 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 58770B39DB702F4BF658BBDB3D144297 /* Build configuration list for PBXNativeTarget "FBSDKShareKit" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5278,20 +5591,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6E61F3AE6B149150E949E22581757F27 /* Build configuration list for PBXNativeTarget "Pods" */ = { + 6A3F4B905459EE391C08BBDEFCD88A2D /* Build configuration list for PBXNativeTarget "RestKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - D689AF640E2BF5F8E3A205170BDAF0EA /* Debug */, - 51CCDBF9990FA326F739800A607857AD /* Release */, + 97E881AEE973FC07B2D5CDF1BFA633EE /* Debug */, + 50A7216646F9DE949301F8230EBDF91C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9852559B1969F150F04DFA5F99B41CCE /* Build configuration list for PBXNativeTarget "TransitionKit" */ = { + 776BD5F5971B32DDF8E6A10063D3C2F5 /* Build configuration list for PBXNativeTarget "TransitionKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - E62FA63D299CD84D275CC054B507D56F /* Debug */, - 40EA4AFA7E36163B0B79EC293646FE2B /* Release */, + D9F08FB4D97391272615BECB95956C38 /* Debug */, + AE9DDACFB9BFED8AC09071B4DB675BEA /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5314,6 +5627,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + A1C2EE2AE7BD563B4A49CDA59286CA4E /* Build configuration list for PBXNativeTarget "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D5CF7EA2CB7125B4F2BDA5C1713C5096 /* Debug */, + 2917FD7E4C82E84F9EC674674E45ACE0 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; CA34C800AB38CCECE78A9E7D6EB38344 /* Build configuration list for PBXNativeTarget "Bolts" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5323,6 +5645,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + CB03CA1862F38085257433BFD1800B62 /* Build configuration list for PBXNativeTarget "SOCKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4B27AC8BA944D996C0A841E604EAB6EE /* Debug */, + 19F3A60D9C6B93D07B9511478DCE6908 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; D698E21AD6E8699A3BDEA8BF928C6677 /* Build configuration list for PBXNativeTarget "ISO8601DateFormatterValueTransformer" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig b/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig index 1f8ff58..104b316 100644 --- a/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AFNetworking" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AFNetworking" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" OTHER_LDFLAGS = -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts.xcconfig index b004e8f..6f90d1f 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/Bolts/Bolts.xcconfig @@ -1,4 +1,4 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Bolts" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Bolts" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig index a0600cb..d056884 100644 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKCoreKit/FBSDKCoreKit.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" OTHER_LDFLAGS = -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig index c0a1aa7..490a4b8 100644 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKLoginKit/FBSDKLoginKit.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" OTHER_LDFLAGS = -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig index a9a898f..dc1d18e 100644 --- a/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/FBSDKShareKit/FBSDKShareKit.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKShareKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSDKShareKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" OTHER_LDFLAGS = -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar.xcconfig b/Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar.xcconfig index 4197705..faecaec 100644 --- a/Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/FoldingTabBar/FoldingTabBar.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FoldingTabBar" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FoldingTabBar" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" OTHER_LDFLAGS = -framework "QuartzCore" -framework "UIKit" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.xcconfig b/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.xcconfig index e8ce69a..4f6b42a 100644 --- a/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/ISO8601DateFormatterValueTransformer/ISO8601DateFormatterValueTransformer.xcconfig @@ -1,4 +1,4 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Parse/Parse.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Parse/Parse.xcconfig index 48dc57a..fe8aeab 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Parse/Parse.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/Parse/Parse.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Parse" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Parse" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" OTHER_LDFLAGS = -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -weak_framework "Accounts" -weak_framework "Social" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown index e79993e..0577482 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown @@ -1157,4 +1157,38 @@ third-party archives. See the License for the specific language governing permissions and limitations under the License. + +## pop + +BSD License + +For Pop software + +Copyright (c) 2014, Facebook, Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + Generated by CocoaPods - http://cocoapods.org diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist index 9ce749a..6d840be 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods-acknowledgements.plist @@ -1217,6 +1217,44 @@ third-party archives. <key>Type</key> <string>PSGroupSpecifier</string> </dict> + <dict> + <key>FooterText</key> + <string>BSD License + +For Pop software + +Copyright (c) 2014, Facebook, Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</string> + <key>Title</key> + <string>pop</string> + <key>Type</key> + <string>PSGroupSpecifier</string> + </dict> <dict> <key>FooterText</key> <string>Generated by CocoaPods - http://cocoapods.org</string> diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig index de56752..9e83c6d 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.debug.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FoldingTabBar" -isystem "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" -isystem "${PODS_ROOT}/Headers/Public/Parse" -isystem "${PODS_ROOT}/Headers/Public/RKValueTransformers" -isystem "${PODS_ROOT}/Headers/Public/RestKit" -isystem "${PODS_ROOT}/Headers/Public/SOCKit" -isystem "${PODS_ROOT}/Headers/Public/TransitionKit" -OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -l"FoldingTabBar" -l"ISO8601DateFormatterValueTransformer" -l"Parse" -l"RKValueTransformers" -l"RestKit" -l"SOCKit" -l"TransitionKit" -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FoldingTabBar" -isystem "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" -isystem "${PODS_ROOT}/Headers/Public/Parse" -isystem "${PODS_ROOT}/Headers/Public/RKValueTransformers" -isystem "${PODS_ROOT}/Headers/Public/RestKit" -isystem "${PODS_ROOT}/Headers/Public/SOCKit" -isystem "${PODS_ROOT}/Headers/Public/TransitionKit" -isystem "${PODS_ROOT}/Headers/Public/pop" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -l"FoldingTabBar" -l"ISO8601DateFormatterValueTransformer" -l"Parse" -l"RKValueTransformers" -l"RestKit" -l"SOCKit" -l"TransitionKit" -l"c++" -l"pop" -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig index de56752..9e83c6d 100644 --- a/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/Pods/Pods.release.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FoldingTabBar" -isystem "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" -isystem "${PODS_ROOT}/Headers/Public/Parse" -isystem "${PODS_ROOT}/Headers/Public/RKValueTransformers" -isystem "${PODS_ROOT}/Headers/Public/RestKit" -isystem "${PODS_ROOT}/Headers/Public/SOCKit" -isystem "${PODS_ROOT}/Headers/Public/TransitionKit" -OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -l"FoldingTabBar" -l"ISO8601DateFormatterValueTransformer" -l"Parse" -l"RKValueTransformers" -l"RestKit" -l"SOCKit" -l"TransitionKit" -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/Bolts" -isystem "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" -isystem "${PODS_ROOT}/Headers/Public/FBSDKShareKit" -isystem "${PODS_ROOT}/Headers/Public/FoldingTabBar" -isystem "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" -isystem "${PODS_ROOT}/Headers/Public/Parse" -isystem "${PODS_ROOT}/Headers/Public/RKValueTransformers" -isystem "${PODS_ROOT}/Headers/Public/RestKit" -isystem "${PODS_ROOT}/Headers/Public/SOCKit" -isystem "${PODS_ROOT}/Headers/Public/TransitionKit" -isystem "${PODS_ROOT}/Headers/Public/pop" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"Bolts" -l"FBSDKCoreKit" -l"FBSDKLoginKit" -l"FBSDKShareKit" -l"FoldingTabBar" -l"ISO8601DateFormatterValueTransformer" -l"Parse" -l"RKValueTransformers" -l"RestKit" -l"SOCKit" -l"TransitionKit" -l"c++" -l"pop" -l"sqlite3" -l"z" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreLocation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -weak_framework "Accounts" -weak_framework "AudioToolbox" -weak_framework "CoreGraphics" -weak_framework "CoreLocation" -weak_framework "Foundation" -weak_framework "QuartzCore" -weak_framework "Security" -weak_framework "Social" -weak_framework "UIKit" PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers.xcconfig b/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers.xcconfig index a045914..8dd44ec 100644 --- a/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/RKValueTransformers/RKValueTransformers.xcconfig @@ -1,4 +1,4 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RKValueTransformers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RKValueTransformers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit.xcconfig index 230f1c5..e074d5c 100644 --- a/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/RestKit/RestKit.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RestKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RestKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" OTHER_LDFLAGS = -framework "CFNetwork" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit.xcconfig index abd8c7e..ee8d8c2 100644 --- a/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/SOCKit/SOCKit.xcconfig @@ -1,4 +1,4 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SOCKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SOCKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit.xcconfig b/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit.xcconfig index 0e2f9d3..7add391 100644 --- a/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit.xcconfig +++ b/Unit-2-Journal/Pods/Target Support Files/TransitionKit/TransitionKit.xcconfig @@ -1,4 +1,4 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/TransitionKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/TransitionKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/Target Support Files/pop/pop-dummy.m b/Unit-2-Journal/Pods/Target Support Files/pop/pop-dummy.m new file mode 100644 index 0000000..19ed261 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/pop/pop-dummy.m @@ -0,0 +1,5 @@ +#import <Foundation/Foundation.h> +@interface PodsDummy_pop : NSObject +@end +@implementation PodsDummy_pop +@end diff --git a/Unit-2-Journal/Pods/Target Support Files/pop/pop-prefix.pch b/Unit-2-Journal/Pods/Target Support Files/pop/pop-prefix.pch new file mode 100644 index 0000000..aa992a4 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/pop/pop-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import <UIKit/UIKit.h> +#endif + diff --git a/Unit-2-Journal/Pods/Target Support Files/pop/pop.xcconfig b/Unit-2-Journal/Pods/Target Support Files/pop/pop.xcconfig new file mode 100644 index 0000000..3a75c64 --- /dev/null +++ b/Unit-2-Journal/Pods/Target Support Files/pop/pop.xcconfig @@ -0,0 +1,7 @@ +CLANG_CXX_LANGUAGE_STANDARD = c++11 +CLANG_CXX_LIBRARY = libc++ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/pop" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Bolts" "${PODS_ROOT}/Headers/Public/FBSDKCoreKit" "${PODS_ROOT}/Headers/Public/FBSDKLoginKit" "${PODS_ROOT}/Headers/Public/FBSDKShareKit" "${PODS_ROOT}/Headers/Public/FoldingTabBar" "${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer" "${PODS_ROOT}/Headers/Public/Parse" "${PODS_ROOT}/Headers/Public/RKValueTransformers" "${PODS_ROOT}/Headers/Public/RestKit" "${PODS_ROOT}/Headers/Public/SOCKit" "${PODS_ROOT}/Headers/Public/TransitionKit" "${PODS_ROOT}/Headers/Public/pop" +OTHER_LDFLAGS = -l"c++" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/Unit-2-Journal/Pods/pop/LICENSE b/Unit-2-Journal/Pods/pop/LICENSE new file mode 100644 index 0000000..642126f --- /dev/null +++ b/Unit-2-Journal/Pods/pop/LICENSE @@ -0,0 +1,30 @@ +BSD License + +For Pop software + +Copyright (c) 2014, Facebook, Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Unit-2-Journal/Pods/pop/README.md b/Unit-2-Journal/Pods/pop/README.md new file mode 100644 index 0000000..addb18a --- /dev/null +++ b/Unit-2-Journal/Pods/pop/README.md @@ -0,0 +1,203 @@ +![pop](https://github.com/facebook/pop/blob/master/Images/pop.gif?raw=true) + +Pop is an extensible animation engine for iOS and OS X. In addition to basic static animations, it supports spring and decay dynamic animations, making it useful for building realistic, physics-based interactions. The API allows quick integration with existing Objective-C codebases and enables the animation of any property on any object. It's a mature and well-tested framework that drives all the animations and transitions in [Paper](http://www.facebook.com/paper). + +[![Build Status](https://travis-ci.org/facebook/pop.svg)](https://travis-ci.org/facebook/pop) + +## Installation + +Pop is available on [CocoaPods](http://cocoapods.org). Just add the following to your project Podfile: + +```ruby +pod 'pop', '~> 1.0' +``` + +Bugs are first fixed in master and then made available via a designated release. If you tend to live on the bleeding edge, you can use Pop from master with the following Podfile entry: + +```ruby +pod 'pop', :git => 'https://github.com/facebook/pop.git' +``` + +## Non-CocoaPods Installation + +### iOS 8 Embedded Framework +By adding the project to your project and adding pop.embedded framework to the Embedded Binaries section on the General tab of your app's target, you can set up pop in seconds! This also enables `@import pop` syntax with header modules. + +**Note**: because of some awkward limitations with Xcode, embedded binaries must share the same name as the module and must have `.framework` as an extension. This means that you'll see two pop.frameworks when adding embedded binaries (one for OS X, and one for iOS). You'll need to be sure to add the iOS one, and since this list is populated in order of targets, it's safe to assume it's the second one. You can verify the correct one was chosen by checking the path next to the framework listed: `Debug-iphoneos`. + +![Embedded Binaries](Images/EmbeddedBinaries.png?raw=true) + +**Note 2**: this method does not currently play nicely with workspaces. For some unknown reason, Xcode simply rejects adding pop.framework as an embedded binary when pop.xcodeproj is placed in the workspace. This only works when pop.xcodeproj is added as a subproject to the current target's project. + +### Advanced +Alternatively, you can add the project to your workspace and adopt the provided configuration files or manually copy the files under the pop subdirectory into your project. If installing manually, ensure the C++ standard library is also linked by including `-lc++` to your project linker flags. + +## Usage + +Pop adopts the Core Animation explicit animation programming model. Use by including the following import: + +```objective-c +#import <pop/POP.h> +``` + +or if you're using the embedded framework: + +```objective-c +@import pop; +``` + +### Start, Stop & Update + +To start an animation, add it to the object you wish to animate: + +```objective-c +POPSpringAnimation *anim = [POPSpringAnimation animation]; +... +[layer pop_addAnimation:anim forKey:@"myKey"]; +``` + +To stop an animation, remove it from the object referencing the key specified on start: + +```objective-c +[layer pop_removeAnimationForKey:@"myKey"]; +``` + +The key can also be used to query for the existence of an animation. Updating the toValue of a running animation can provide the most seamless way to change course: + +```objective-c +anim = [layer pop_animationForKey:@"myKey"]; +if (anim) { + /* update to value to new destination */ + anim.toValue = @(42.0); +} else { + /* create and start a new animation */ + .... +} +``` + +While a layer was used in the above examples, the Pop interface is implemented as a category addition on NSObject. Any NSObject or subclass can be animated. + +### Types + +There are four concrete animation types: spring, decay, basic and custom. + +Spring animations can be used to give objects a delightful bounce. In this example, we use a spring animation to animate a layer's bounds from its current value to (0, 0, 400, 400): + +```objective-c +POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerBounds]; +anim.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 400, 400)]; +[layer pop_addAnimation:anim forKey:@"size"]; +``` +Decay animations can be used to gradually slow an object to a halt. In this example, we decay a layer's positionX from it's current value and velocity 1000pts per second: + +```objective-c +POPDecayAnimation *anim = [POPDecayAnimation animationWithPropertyNamed:kPOPLayerPositionX]; +anim.velocity = @(1000.); +[layer pop_addAnimation:anim forKey:@"slide"]; +``` + +Basic animations can be used to interpolate values over a specified time period. To use an ease-in ease-out animation to animate a view's alpha from 0.0 to 1.0 over the default duration: +```objective-c +POPBasicAnimation *anim = [POPBasicAnimation animationWithPropertyNamed:kPOPViewAlpha]; +anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; +anim.fromValue = @(0.0); +anim.toValue = @(1.0); +[view pop_addAnimation:anim forKey:@"fade"]; +``` +`POPCustomAnimation` makes creating custom animations and transitions easier by handling CADisplayLink and associated time-step management. See header for more details. + + +### Properties + +The property animated is specified by the `POPAnimatableProperty` class. In this example we create a spring animation and explicitly set the animatable property corresponding to `-[CALayer bounds]`: + +```objective-c +POPSpringAnimation *anim = [POPSpringAnimation animation]; +anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerBounds]; +``` + +The framework provides many common layer and view animatable properties out of box. You can animate a custom property by creating a new instance of the class. In this example, we declare a custom volume property: + +```objective-c +prop = [POPAnimatableProperty propertyWithName:@"com.foo.radio.volume" initializer:^(POPMutableAnimatableProperty *prop) { + // read value + prop.readBlock = ^(id obj, CGFloat values[]) { + values[0] = [obj volume]; + }; + // write value + prop.writeBlock = ^(id obj, const CGFloat values[]) { + [obj setVolume:values[0]]; + }; + // dynamics threshold + prop.threshold = 0.01; +}]; + +anim.property = prop; +``` + +For a complete listing of provided animatable properties, as well more information on declaring custom properties see `POPAnimatableProperty.h`. + + +### Debugging + +Here are a few tips when debugging. Pop obeys the Simulator's Toggle Slow Animations setting. Try enabling it to slow down animations and more easily observe interactions. + +Consider naming your animations. This will allow you to more easily identify them when referencing them, either via logging or in the debugger: + +```objective-c +anim.name = @"springOpen"; +``` + +Each animation comes with an associated tracer. The tracer allows you to record all animation-related events, in a fast and efficient manner, allowing you to query and analyze them after animation completion. The below example starts the tracer and configures it to log all events on animation completion: + +```objective-c +POPAnimationTracer *tracer = anim.tracer; +tracer.shouldLogAndResetOnCompletion = YES; +[tracer start]; +``` + +See `POPAnimationTracer.h` for more details. + +## Testing + +Pop has extensive unit test coverage. To install test dependencies, navigate to the root pop directory and type: + +```sh +pod install +``` + +Assuming CocoaPods is installed, this will include the necessary OCMock dependency to the unit test targets. + +## SceneKit + +Due to SceneKit requiring iOS 8 and OS X 10.9, POP's SceneKit extensions aren't provided out of box. Unfortunately, [weakly linked frameworks](https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html) cannot be used due to issues mentioned in the [Xcode 6.1 Release Notes](https://developer.apple.com/library/ios/releasenotes/DeveloperTools/RN-Xcode/Chapters/xc6_release_notes.html). + +To remedy this, you can easily opt-in to use SceneKit! Simply add this to the Preprocessor Macros section of your Xcode Project: + +``` +POP_USE_SCENEKIT=1 +``` + +## Resources + +A collection of links to external resources that may prove valuable: + +* [AGGeometryKit+POP - Animating Quadrilaterals with Pop](https://github.com/hfossli/aggeometrykit-pop) +* [Apple – Core Animation Programming Guide](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html) +* [iOS Development Tips – UIScrollView-like deceleration with Pop](http://iosdevtips.co/post/84571595353/replicating-uiscrollviews-deceleration-with-facebook) +* [Pop Playground – Repository of Pop animation examples](https://github.com/callmeed/pop-playground) +* [Pop Playground 2 – Playing with Facebook's framework](http://victorbaro.com/2014/05/pop-playground-playing-with-facebooks-framework/) +* [POP-MCAnimate – Concise syntax for the Pop animation framework](https://github.com/matthewcheok/POP-MCAnimate) +* [Popping - Great examples in one project](https://github.com/schneiderandre/popping) +* [Rebound – Spring Animations for Android](http://facebook.github.io/rebound/) +* [Tapity Tutorial – Getting Started with Pop](http://tapity.com/tutorial-getting-started-with-pop/) +* [Tweaks – Easily adjust parameters for iOS apps in development](https://github.com/facebook/tweaks) +* [POP Tutorial in 5 steps](https://github.com/maxmyers/FacebookPop) +* [VBFPopFlatButton – Flat animatable button, using Pop to transition between states](https://github.com/victorBaro/VBFPopFlatButton) + +## Contributing +See the CONTRIBUTING file for how to help out. + +## License + +Pop is released under a BSD License. See LICENSE file for details. diff --git a/Unit-2-Journal/Pods/pop/pop/POP.h b/Unit-2-Journal/Pods/pop/pop/POP.h new file mode 100644 index 0000000..72adba7 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POP.h @@ -0,0 +1,29 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#ifndef POP_POP_H +#define POP_POP_H + +#import <pop/POPDefines.h> + +#import <pop/POPAnimatableProperty.h> +#import <pop/POPAnimation.h> +#import <pop/POPAnimationEvent.h> +#import <pop/POPAnimationExtras.h> +#import <pop/POPAnimationTracer.h> +#import <pop/POPAnimator.h> +#import <pop/POPBasicAnimation.h> +#import <pop/POPCustomAnimation.h> +#import <pop/POPDecayAnimation.h> +#import <pop/POPGeometry.h> +#import <pop/POPLayerExtras.h> +#import <pop/POPPropertyAnimation.h> +#import <pop/POPSpringAnimation.h> + +#endif /* POP_POP_H */ diff --git a/Unit-2-Journal/Pods/pop/pop/POPAction.h b/Unit-2-Journal/Pods/pop/pop/POPAction.h new file mode 100644 index 0000000..85cca19 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAction.h @@ -0,0 +1,67 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#ifndef POPACTION_H +#define POPACTION_H + +#import <QuartzCore/CATransaction.h> + +#import <pop/POPDefines.h> + +#ifdef __cplusplus + +namespace POP { + + /** + @abstract Disables Core Animation actions using RAII. + @discussion The disablement of actions is scoped to the current transaction. + */ + class ActionDisabler + { + BOOL state; + + public: + ActionDisabler() POP_NOTHROW + { + state = [CATransaction disableActions]; + [CATransaction setDisableActions:YES]; + } + + ~ActionDisabler() + { + [CATransaction setDisableActions:state]; + } + }; + + /** + @abstract Enables Core Animation actions using RAII. + @discussion The enablement of actions is scoped to the current transaction. + */ + class ActionEnabler + { + BOOL state; + + public: + ActionEnabler() POP_NOTHROW + { + state = [CATransaction disableActions]; + [CATransaction setDisableActions:NO]; + } + + ~ActionEnabler() + { + [CATransaction setDisableActions:state]; + } + }; + +} + +#endif /* __cplusplus */ + +#endif /* POPACTION_H */ diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimatableProperty.h b/Unit-2-Journal/Pods/pop/pop/POPAnimatableProperty.h new file mode 100644 index 0000000..1636783 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimatableProperty.h @@ -0,0 +1,249 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <CoreGraphics/CoreGraphics.h> + +#import <Foundation/NSObject.h> + +#import <pop/POPDefines.h> + +@class POPMutableAnimatableProperty; + +/** + @abstract Describes an animatable property. + */ +@interface POPAnimatableProperty : NSObject <NSCopying, NSMutableCopying> + +/** + @abstract Property accessor. + @param name The name of the property. + @return The animatable property with that name or nil if it does not exist. + @discussion Common animatable properties are included by default. Use the provided constants to reference. + */ ++ (id)propertyWithName:(NSString *)name; + +/** + @abstract The designated initializer. + @param name The name of the property. + @param block The block used to configure the property on creation. + @return The animatable property with name if it exists, otherwise a newly created instance configured by block. + @discussion Custom properties should use reverse-DNS naming. A newly created instance is only mutable in the scope of block. Once constructed, a property becomes immutable. + */ ++ (id)propertyWithName:(NSString *)name initializer:(void (^)(POPMutableAnimatableProperty *prop))block; + +/** + @abstract The name of the property. + @discussion Used to uniquely identify an animatable property. + */ +@property (readonly, nonatomic, copy) NSString *name; + +/** + @abstract Block used to read values from a property into an array of floats. + */ +@property (readonly, nonatomic, copy) void (^readBlock)(id obj, CGFloat values[]); + +/** + @abstract Block used to write values from an array of floats into a property. + */ +@property (readonly, nonatomic, copy) void (^writeBlock)(id obj, const CGFloat values[]); + +/** + @abstract The threshold value used when determining completion of dynamics simulations. + */ +@property (readonly, nonatomic, assign) CGFloat threshold; + +@end + +/** + @abstract A mutable animatable property intended for configuration. + */ +@interface POPMutableAnimatableProperty : POPAnimatableProperty + +/** + @abstract A read-write version of POPAnimatableProperty name property. + */ +@property (readwrite, nonatomic, copy) NSString *name; + +/** + @abstract A read-write version of POPAnimatableProperty readBlock property. + */ +@property (readwrite, nonatomic, copy) void (^readBlock)(id obj, CGFloat values[]); + +/** + @abstract A read-write version of POPAnimatableProperty writeBlock property. + */ +@property (readwrite, nonatomic, copy) void (^writeBlock)(id obj, const CGFloat values[]); + +/** + @abstract A read-write version of POPAnimatableProperty threshold property. + */ +@property (readwrite, nonatomic, assign) CGFloat threshold; + +@end + +/** + Common CALayer property names. + */ +extern NSString * const kPOPLayerBackgroundColor; +extern NSString * const kPOPLayerBounds; +extern NSString * const kPOPLayerCornerRadius; +extern NSString * const kPOPLayerBorderWidth; +extern NSString * const kPOPLayerBorderColor; +extern NSString * const kPOPLayerOpacity; +extern NSString * const kPOPLayerPosition; +extern NSString * const kPOPLayerPositionX; +extern NSString * const kPOPLayerPositionY; +extern NSString * const kPOPLayerRotation; +extern NSString * const kPOPLayerRotationX; +extern NSString * const kPOPLayerRotationY; +extern NSString * const kPOPLayerScaleX; +extern NSString * const kPOPLayerScaleXY; +extern NSString * const kPOPLayerScaleY; +extern NSString * const kPOPLayerSize; +extern NSString * const kPOPLayerSubscaleXY; +extern NSString * const kPOPLayerSubtranslationX; +extern NSString * const kPOPLayerSubtranslationXY; +extern NSString * const kPOPLayerSubtranslationY; +extern NSString * const kPOPLayerSubtranslationZ; +extern NSString * const kPOPLayerTranslationX; +extern NSString * const kPOPLayerTranslationXY; +extern NSString * const kPOPLayerTranslationY; +extern NSString * const kPOPLayerTranslationZ; +extern NSString * const kPOPLayerZPosition; +extern NSString * const kPOPLayerShadowColor; +extern NSString * const kPOPLayerShadowOffset; +extern NSString * const kPOPLayerShadowOpacity; +extern NSString * const kPOPLayerShadowRadius; + +/** + Common CAShapeLayer property names. + */ +extern NSString * const kPOPShapeLayerStrokeStart; +extern NSString * const kPOPShapeLayerStrokeEnd; +extern NSString * const kPOPShapeLayerStrokeColor; +extern NSString * const kPOPShapeLayerFillColor; +extern NSString * const kPOPShapeLayerLineWidth; + +/** + Common NSLayoutConstraint property names. + */ +extern NSString * const kPOPLayoutConstraintConstant; + + +#if TARGET_OS_IPHONE + +/** + Common UIView property names. + */ +extern NSString * const kPOPViewAlpha; +extern NSString * const kPOPViewBackgroundColor; +extern NSString * const kPOPViewBounds; +extern NSString * const kPOPViewCenter; +extern NSString * const kPOPViewFrame; +extern NSString * const kPOPViewScaleX; +extern NSString * const kPOPViewScaleXY; +extern NSString * const kPOPViewScaleY; +extern NSString * const kPOPViewSize; +extern NSString * const kPOPViewTintColor; + +/** + Common UIScrollView property names. + */ +extern NSString * const kPOPScrollViewContentOffset; +extern NSString * const kPOPScrollViewContentSize; +extern NSString * const kPOPScrollViewZoomScale; +extern NSString * const kPOPScrollViewContentInset; + +/** + Common UITableView property names. + */ +extern NSString * const kPOPTableViewContentOffset; +extern NSString * const kPOPTableViewContentSize; + +/** + Common UICollectionView property names. + */ +extern NSString * const kPOPCollectionViewContentOffset; +extern NSString * const kPOPCollectionViewContentSize; + +/** + Common UINavigationBar property names. + */ +extern NSString * const kPOPNavigationBarBarTintColor; + +/** + Common UIToolbar property names. + */ +extern NSString * const kPOPToolbarBarTintColor; + +/** + Common UITabBar property names. + */ +extern NSString * const kPOPTabBarBarTintColor; + +/** + Common UILabel property names. + */ +extern NSString * const kPOPLabelTextColor; + +#else + +/** + Common NSView property names. + */ +extern NSString * const kPOPViewFrame; +extern NSString * const kPOPViewBounds; +extern NSString * const kPOPViewAlphaValue; +extern NSString * const kPOPViewFrameRotation; +extern NSString * const kPOPViewFrameCenterRotation; +extern NSString * const kPOPViewBoundsRotation; + +/** + Common NSWindow property names. + */ +extern NSString * const kPOPWindowFrame; +extern NSString * const kPOPWindowAlphaValue; +extern NSString * const kPOPWindowBackgroundColor; + +#endif + +#if SCENEKIT_SDK_AVAILABLE + +/** + Common SceneKit property names. + */ +extern NSString * const kPOPSCNNodePosition; +extern NSString * const kPOPSCNNodePositionX; +extern NSString * const kPOPSCNNodePositionY; +extern NSString * const kPOPSCNNodePositionZ; +extern NSString * const kPOPSCNNodeTranslation; +extern NSString * const kPOPSCNNodeTranslationX; +extern NSString * const kPOPSCNNodeTranslationY; +extern NSString * const kPOPSCNNodeTranslationZ; +extern NSString * const kPOPSCNNodeRotation; +extern NSString * const kPOPSCNNodeRotationX; +extern NSString * const kPOPSCNNodeRotationY; +extern NSString * const kPOPSCNNodeRotationZ; +extern NSString * const kPOPSCNNodeRotationW; +extern NSString * const kPOPSCNNodeEulerAngles; +extern NSString * const kPOPSCNNodeEulerAnglesX; +extern NSString * const kPOPSCNNodeEulerAnglesY; +extern NSString * const kPOPSCNNodeEulerAnglesZ; +extern NSString * const kPOPSCNNodeOrientation; +extern NSString * const kPOPSCNNodeOrientationX; +extern NSString * const kPOPSCNNodeOrientationY; +extern NSString * const kPOPSCNNodeOrientationZ; +extern NSString * const kPOPSCNNodeOrientationW; +extern NSString * const kPOPSCNNodeScale; +extern NSString * const kPOPSCNNodeScaleX; +extern NSString * const kPOPSCNNodeScaleY; +extern NSString * const kPOPSCNNodeScaleZ; +extern NSString * const kPOPSCNNodeScaleXY; + +#endif diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimatableProperty.mm b/Unit-2-Journal/Pods/pop/pop/POPAnimatableProperty.mm new file mode 100644 index 0000000..c8b3130 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimatableProperty.mm @@ -0,0 +1,1282 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPAnimatableProperty.h" + +#import <QuartzCore/QuartzCore.h> + +#import "POPAnimationRuntime.h" +#import "POPCGUtils.h" +#import "POPDefines.h" +#import "POPLayerExtras.h" + +// common threshold definitions +static CGFloat const kPOPThresholdColor = 0.01; +static CGFloat const kPOPThresholdPoint = 1.0; +static CGFloat const kPOPThresholdOpacity = 0.01; +static CGFloat const kPOPThresholdScale = 0.005; +static CGFloat const kPOPThresholdRotation = 0.01; +static CGFloat const kPOPThresholdRadius = 0.01; + +#pragma mark - Static + +// CALayer +NSString * const kPOPLayerBackgroundColor = @"backgroundColor"; +NSString * const kPOPLayerBounds = @"bounds"; +NSString * const kPOPLayerCornerRadius = @"cornerRadius"; +NSString * const kPOPLayerBorderWidth = @"borderWidth"; +NSString * const kPOPLayerBorderColor = @"borderColor"; +NSString * const kPOPLayerOpacity = @"opacity"; +NSString * const kPOPLayerPosition = @"position"; +NSString * const kPOPLayerPositionX = @"positionX"; +NSString * const kPOPLayerPositionY = @"positionY"; +NSString * const kPOPLayerRotation = @"rotation"; +NSString * const kPOPLayerRotationX = @"rotationX"; +NSString * const kPOPLayerRotationY = @"rotationY"; +NSString * const kPOPLayerScaleX = @"scaleX"; +NSString * const kPOPLayerScaleXY = @"scaleXY"; +NSString * const kPOPLayerScaleY = @"scaleY"; +NSString * const kPOPLayerSize = @"size"; +NSString * const kPOPLayerSubscaleXY = @"subscaleXY"; +NSString * const kPOPLayerSubtranslationX = @"subtranslationX"; +NSString * const kPOPLayerSubtranslationXY = @"subtranslationXY"; +NSString * const kPOPLayerSubtranslationY = @"subtranslationY"; +NSString * const kPOPLayerSubtranslationZ = @"subtranslationZ"; +NSString * const kPOPLayerTranslationX = @"translationX"; +NSString * const kPOPLayerTranslationXY = @"translationXY"; +NSString * const kPOPLayerTranslationY = @"translationY"; +NSString * const kPOPLayerTranslationZ = @"translationZ"; +NSString * const kPOPLayerZPosition = @"zPosition"; +NSString * const kPOPLayerShadowColor = @"shadowColor"; +NSString * const kPOPLayerShadowOffset = @"shadowOffset"; +NSString * const kPOPLayerShadowOpacity = @"shadowOpacity"; +NSString * const kPOPLayerShadowRadius = @"shadowRadius"; + +// CAShapeLayer +NSString * const kPOPShapeLayerStrokeStart = @"shapeLayer.strokeStart"; +NSString * const kPOPShapeLayerStrokeEnd = @"shapeLayer.strokeEnd"; +NSString * const kPOPShapeLayerStrokeColor = @"shapeLayer.strokeColor"; +NSString * const kPOPShapeLayerFillColor = @"shapeLayer.fillColor"; +NSString * const kPOPShapeLayerLineWidth = @"shapeLayer.lineWidth"; + +// NSLayoutConstraint +NSString * const kPOPLayoutConstraintConstant = @"layoutConstraint.constant"; + +#if TARGET_OS_IPHONE + +// UIView +NSString * const kPOPViewAlpha = @"view.alpha"; +NSString * const kPOPViewBackgroundColor = @"view.backgroundColor"; +NSString * const kPOPViewBounds = kPOPLayerBounds; +NSString * const kPOPViewCenter = @"view.center"; +NSString * const kPOPViewFrame = @"view.frame"; +NSString * const kPOPViewScaleX = @"view.scaleX"; +NSString * const kPOPViewScaleXY = @"view.scaleXY"; +NSString * const kPOPViewScaleY = @"view.scaleY"; +NSString * const kPOPViewSize = kPOPLayerSize; +NSString * const kPOPViewTintColor = @"view.tintColor"; + +// UIScrollView +NSString * const kPOPScrollViewContentOffset = @"scrollView.contentOffset"; +NSString * const kPOPScrollViewContentSize = @"scrollView.contentSize"; +NSString * const kPOPScrollViewZoomScale = @"scrollView.zoomScale"; +NSString * const kPOPScrollViewContentInset = @"scrollView.contentInset"; + +// UITableView +NSString * const kPOPTableViewContentOffset = kPOPScrollViewContentOffset; +NSString * const kPOPTableViewContentSize = kPOPScrollViewContentSize; + +// UICollectionView +NSString * const kPOPCollectionViewContentOffset = kPOPScrollViewContentOffset; +NSString * const kPOPCollectionViewContentSize = kPOPScrollViewContentSize; + +// UINavigationBar +NSString * const kPOPNavigationBarBarTintColor = @"navigationBar.barTintColor"; + +// UIToolbar +NSString * const kPOPToolbarBarTintColor = kPOPNavigationBarBarTintColor; + +// UITabBar +NSString * const kPOPTabBarBarTintColor = kPOPNavigationBarBarTintColor; + +// UILabel +NSString * const kPOPLabelTextColor = @"label.textColor"; + +#else + +// NSView +NSString * const kPOPViewFrame = @"view.frame"; +NSString * const kPOPViewBounds = @"view.bounds"; +NSString * const kPOPViewAlphaValue = @"view.alphaValue"; +NSString * const kPOPViewFrameRotation = @"view.frameRotation"; +NSString * const kPOPViewFrameCenterRotation = @"view.frameCenterRotation"; +NSString * const kPOPViewBoundsRotation = @"view.boundsRotation"; + +// NSWindow +NSString * const kPOPWindowFrame = @"window.frame"; +NSString * const kPOPWindowAlphaValue = @"window.alphaValue"; +NSString * const kPOPWindowBackgroundColor = @"window.backgroundColor"; + +#endif + +#if SCENEKIT_SDK_AVAILABLE + +// SceneKit +NSString * const kPOPSCNNodePosition = @"scnode.position"; +NSString * const kPOPSCNNodePositionX = @"scnnode.position.x"; +NSString * const kPOPSCNNodePositionY = @"scnnode.position.y"; +NSString * const kPOPSCNNodePositionZ = @"scnnode.position.z"; +NSString * const kPOPSCNNodeTranslation = @"scnnode.translation"; +NSString * const kPOPSCNNodeTranslationX = @"scnnode.translation.x"; +NSString * const kPOPSCNNodeTranslationY = @"scnnode.translation.y"; +NSString * const kPOPSCNNodeTranslationZ = @"scnnode.translation.z"; +NSString * const kPOPSCNNodeRotation = @"scnnode.rotation"; +NSString * const kPOPSCNNodeRotationX = @"scnnode.rotation.x"; +NSString * const kPOPSCNNodeRotationY = @"scnnode.rotation.y"; +NSString * const kPOPSCNNodeRotationZ = @"scnnode.rotation.z"; +NSString * const kPOPSCNNodeRotationW = @"scnnode.rotation.w"; +NSString * const kPOPSCNNodeEulerAngles = @"scnnode.eulerAngles"; +NSString * const kPOPSCNNodeEulerAnglesX = @"scnnode.eulerAngles.x"; +NSString * const kPOPSCNNodeEulerAnglesY = @"scnnode.eulerAngles.y"; +NSString * const kPOPSCNNodeEulerAnglesZ = @"scnnode.eulerAngles.z"; +NSString * const kPOPSCNNodeOrientation = @"scnnode.orientation"; +NSString * const kPOPSCNNodeOrientationX = @"scnnode.orientation.x"; +NSString * const kPOPSCNNodeOrientationY = @"scnnode.orientation.y"; +NSString * const kPOPSCNNodeOrientationZ = @"scnnode.orientation.z"; +NSString * const kPOPSCNNodeOrientationW = @"scnnode.orientation.w"; +NSString * const kPOPSCNNodeScale = @"scnnode.scale"; +NSString * const kPOPSCNNodeScaleX = @"scnnode.scale.x"; +NSString * const kPOPSCNNodeScaleY = @"scnnode.scale.y"; +NSString * const kPOPSCNNodeScaleZ = @"scnnode.scale.z"; +NSString * const kPOPSCNNodeScaleXY = @"scnnode.scale.xy"; + +#endif + +/** + State structure internal to static animatable property. + */ +typedef struct +{ + NSString *name; + pop_animatable_read_block readBlock; + pop_animatable_write_block writeBlock; + CGFloat threshold; +} _POPStaticAnimatablePropertyState; +typedef _POPStaticAnimatablePropertyState POPStaticAnimatablePropertyState; + +static POPStaticAnimatablePropertyState _staticStates[] = +{ + /* CALayer */ + + {kPOPLayerBackgroundColor, + ^(CALayer *obj, CGFloat values[]) { + POPCGColorGetRGBAComponents(obj.backgroundColor, values); + }, + ^(CALayer *obj, const CGFloat values[]) { + CGColorRef color = POPCGColorRGBACreate(values); + [obj setBackgroundColor:color]; + CGColorRelease(color); + }, + kPOPThresholdColor + }, + + {kPOPLayerBounds, + ^(CALayer *obj, CGFloat values[]) { + values_from_rect(values, [obj bounds]); + }, + ^(CALayer *obj, const CGFloat values[]) { + [obj setBounds:values_to_rect(values)]; + }, + kPOPThresholdPoint + }, + + {kPOPLayerCornerRadius, + ^(CALayer *obj, CGFloat values[]) { + values[0] = [obj cornerRadius]; + }, + ^(CALayer *obj, const CGFloat values[]) { + [obj setCornerRadius:values[0]]; + }, + kPOPThresholdRadius + }, + + {kPOPLayerBorderWidth, + ^(CALayer *obj, CGFloat values[]) { + values[0] = [obj borderWidth]; + }, + ^(CALayer *obj, const CGFloat values[]) { + [obj setBorderWidth:values[0]]; + }, + 0.01 + }, + + {kPOPLayerBorderColor, + ^(CALayer *obj, CGFloat values[]) { + POPCGColorGetRGBAComponents(obj.borderColor, values); + }, + ^(CALayer *obj, const CGFloat values[]) { + CGColorRef color = POPCGColorRGBACreate(values); + [obj setBorderColor:color]; + CGColorRelease(color); + }, + kPOPThresholdColor + }, + + {kPOPLayerPosition, + ^(CALayer *obj, CGFloat values[]) { + values_from_point(values, [(CALayer *)obj position]); + }, + ^(CALayer *obj, const CGFloat values[]) { + [obj setPosition:values_to_point(values)]; + }, + kPOPThresholdPoint + }, + + {kPOPLayerPositionX, + ^(CALayer *obj, CGFloat values[]) { + values[0] = [(CALayer *)obj position].x; + }, + ^(CALayer *obj, const CGFloat values[]) { + CGPoint p = [(CALayer *)obj position]; + p.x = values[0]; + [obj setPosition:p]; + }, + kPOPThresholdPoint + }, + + {kPOPLayerPositionY, + ^(CALayer *obj, CGFloat values[]) { + values[0] = [(CALayer *)obj position].y; + }, + ^(CALayer *obj, const CGFloat values[]) { + CGPoint p = [(CALayer *)obj position]; + p.y = values[0]; + [obj setPosition:p]; + }, + kPOPThresholdPoint + }, + + {kPOPLayerOpacity, + ^(CALayer *obj, CGFloat values[]) { + values[0] = [obj opacity]; + }, + ^(CALayer *obj, const CGFloat values[]) { + [obj setOpacity:((float)values[0])]; + }, + kPOPThresholdOpacity + }, + + {kPOPLayerScaleX, + ^(CALayer *obj, CGFloat values[]) { + values[0] = POPLayerGetScaleX(obj); + }, + ^(CALayer *obj, const CGFloat values[]) { + POPLayerSetScaleX(obj, values[0]); + }, + kPOPThresholdScale + }, + + {kPOPLayerScaleY, + ^(CALayer *obj, CGFloat values[]) { + values[0] = POPLayerGetScaleY(obj); + }, + ^(CALayer *obj, const CGFloat values[]) { + POPLayerSetScaleY(obj, values[0]); + }, + kPOPThresholdScale + }, + + {kPOPLayerScaleXY, + ^(CALayer *obj, CGFloat values[]) { + values_from_point(values, POPLayerGetScaleXY(obj)); + }, + ^(CALayer *obj, const CGFloat values[]) { + POPLayerSetScaleXY(obj, values_to_point(values)); + }, + kPOPThresholdScale + }, + + {kPOPLayerSubscaleXY, + ^(CALayer *obj, CGFloat values[]) { + values_from_point(values, POPLayerGetSubScaleXY(obj)); + }, + ^(CALayer *obj, const CGFloat values[]) { + POPLayerSetSubScaleXY(obj, values_to_point(values)); + }, + kPOPThresholdScale + }, + + {kPOPLayerTranslationX, + ^(CALayer *obj, CGFloat values[]) { + values[0] = POPLayerGetTranslationX(obj); + }, + ^(CALayer *obj, const CGFloat values[]) { + POPLayerSetTranslationX(obj, values[0]); + }, + kPOPThresholdPoint + }, + + {kPOPLayerTranslationY, + ^(CALayer *obj, CGFloat values[]) { + values[0] = POPLayerGetTranslationY(obj); + }, + ^(CALayer *obj, const CGFloat values[]) { + POPLayerSetTranslationY(obj, values[0]); + }, + kPOPThresholdPoint + }, + + {kPOPLayerTranslationZ, + ^(CALayer *obj, CGFloat values[]) { + values[0] = POPLayerGetTranslationZ(obj); + }, + ^(CALayer *obj, const CGFloat values[]) { + POPLayerSetTranslationZ(obj, values[0]); + }, + kPOPThresholdPoint + }, + + {kPOPLayerTranslationXY, + ^(CALayer *obj, CGFloat values[]) { + values_from_point(values, POPLayerGetTranslationXY(obj)); + }, + ^(CALayer *obj, const CGFloat values[]) { + POPLayerSetTranslationXY(obj, values_to_point(values)); + }, + kPOPThresholdPoint + }, + + {kPOPLayerSubtranslationX, + ^(CALayer *obj, CGFloat values[]) { + values[0] = POPLayerGetSubTranslationX(obj); + }, + ^(CALayer *obj, const CGFloat values[]) { + POPLayerSetSubTranslationX(obj, values[0]); + }, + kPOPThresholdPoint + }, + + {kPOPLayerSubtranslationY, + ^(CALayer *obj, CGFloat values[]) { + values[0] = POPLayerGetSubTranslationY(obj); + }, + ^(CALayer *obj, const CGFloat values[]) { + POPLayerSetSubTranslationY(obj, values[0]); + }, + kPOPThresholdPoint + }, + + {kPOPLayerSubtranslationZ, + ^(CALayer *obj, CGFloat values[]) { + values[0] = POPLayerGetSubTranslationZ(obj); + }, + ^(CALayer *obj, const CGFloat values[]) { + POPLayerSetSubTranslationZ(obj, values[0]); + }, + kPOPThresholdPoint + }, + + {kPOPLayerSubtranslationXY, + ^(CALayer *obj, CGFloat values[]) { + values_from_point(values, POPLayerGetSubTranslationXY(obj)); + }, + ^(CALayer *obj, const CGFloat values[]) { + POPLayerSetSubTranslationXY(obj, values_to_point(values)); + }, + kPOPThresholdPoint + }, + + {kPOPLayerZPosition, + ^(CALayer *obj, CGFloat values[]) { + values[0] = [obj zPosition]; + }, + ^(CALayer *obj, const CGFloat values[]) { + [obj setZPosition:values[0]]; + }, + kPOPThresholdPoint + }, + + {kPOPLayerSize, + ^(CALayer *obj, CGFloat values[]) { + values_from_size(values, [obj bounds].size); + }, + ^(CALayer *obj, const CGFloat values[]) { + CGSize size = values_to_size(values); + if (size.width < 0. || size.height < 0.) + return; + + CGRect b = [obj bounds]; + b.size = size; + [obj setBounds:b]; + }, + kPOPThresholdPoint + }, + + {kPOPLayerRotation, + ^(CALayer *obj, CGFloat values[]) { + values[0] = POPLayerGetRotation(obj); + }, + ^(CALayer *obj, const CGFloat values[]) { + POPLayerSetRotation(obj, values[0]); + }, + kPOPThresholdRotation + }, + + {kPOPLayerRotationY, + ^(CALayer *obj, CGFloat values[]) { + values[0] = POPLayerGetRotationY(obj); + }, + ^(id obj, const CGFloat values[]) { + POPLayerSetRotationY(obj, values[0]); + }, + kPOPThresholdRotation + }, + + {kPOPLayerRotationX, + ^(CALayer *obj, CGFloat values[]) { + values[0] = POPLayerGetRotationX(obj); + }, + ^(CALayer *obj, const CGFloat values[]) { + POPLayerSetRotationX(obj, values[0]); + }, + kPOPThresholdRotation + }, + + {kPOPLayerShadowColor, + ^(CALayer *obj, CGFloat values[]) { + POPCGColorGetRGBAComponents(obj.shadowColor, values); + }, + ^(CALayer *obj, const CGFloat values[]) { + CGColorRef color = POPCGColorRGBACreate(values); + [obj setShadowColor:color]; + CGColorRelease(color); + }, + 0.01 + }, + + {kPOPLayerShadowOffset, + ^(CALayer *obj, CGFloat values[]) { + values_from_size(values, [obj shadowOffset]); + }, + ^(CALayer *obj, const CGFloat values[]) { + CGSize size = values_to_size(values); + [obj setShadowOffset:size]; + }, + 0.01 + }, + + {kPOPLayerShadowOpacity, + ^(CALayer *obj, CGFloat values[]) { + values[0] = [obj shadowOpacity]; + }, + ^(CALayer *obj, const CGFloat values[]) { + [obj setShadowOpacity:values[0]]; + }, + kPOPThresholdOpacity + }, + + {kPOPLayerShadowRadius, + ^(CALayer *obj, CGFloat values[]) { + values[0] = [obj shadowRadius]; + }, + ^(CALayer *obj, const CGFloat values[]) { + [obj setShadowRadius:values[0]]; + }, + kPOPThresholdRadius + }, + + /* CAShapeLayer */ + + {kPOPShapeLayerStrokeStart, + ^(CAShapeLayer *obj, CGFloat values[]) { + values[0] = obj.strokeStart; + }, + ^(CAShapeLayer *obj, const CGFloat values[]) { + obj.strokeStart = values[0]; + }, + 0.01 + }, + + {kPOPShapeLayerStrokeEnd, + ^(CAShapeLayer *obj, CGFloat values[]) { + values[0] = obj.strokeEnd; + }, + ^(CAShapeLayer *obj, const CGFloat values[]) { + obj.strokeEnd = values[0]; + }, + 0.01 + }, + + {kPOPShapeLayerStrokeColor, + ^(CAShapeLayer *obj, CGFloat values[]) { + POPCGColorGetRGBAComponents(obj.strokeColor, values); + }, + ^(CAShapeLayer *obj, const CGFloat values[]) { + CGColorRef color = POPCGColorRGBACreate(values); + [obj setStrokeColor:color]; + CGColorRelease(color); + }, + kPOPThresholdColor + }, + + {kPOPShapeLayerFillColor, + ^(CAShapeLayer *obj, CGFloat values[]) { + POPCGColorGetRGBAComponents(obj.fillColor, values); + }, + ^(CAShapeLayer *obj, const CGFloat values[]) { + CGColorRef color = POPCGColorRGBACreate(values); + [obj setFillColor:color]; + CGColorRelease(color); + }, + kPOPThresholdColor + }, + + {kPOPShapeLayerLineWidth, + ^(CAShapeLayer *obj, CGFloat values[]) { + values[0] = obj.lineWidth; + }, + ^(CAShapeLayer *obj, const CGFloat values[]) { + obj.lineWidth = values[0]; + }, + 0.01 + }, + + {kPOPLayoutConstraintConstant, + ^(NSLayoutConstraint *obj, CGFloat values[]) { + values[0] = obj.constant; + }, + ^(NSLayoutConstraint *obj, const CGFloat values[]) { + obj.constant = values[0]; + }, + 0.01 + }, + +#if TARGET_OS_IPHONE + + /* UIView */ + + {kPOPViewAlpha, + ^(UIView *obj, CGFloat values[]) { + values[0] = obj.alpha; + }, + ^(UIView *obj, const CGFloat values[]) { + obj.alpha = values[0]; + }, + kPOPThresholdOpacity + }, + + {kPOPViewBackgroundColor, + ^(UIView *obj, CGFloat values[]) { + POPUIColorGetRGBAComponents(obj.backgroundColor, values); + }, + ^(UIView *obj, const CGFloat values[]) { + obj.backgroundColor = POPUIColorRGBACreate(values); + }, + kPOPThresholdColor + }, + + {kPOPViewCenter, + ^(UIView *obj, CGFloat values[]) { + values_from_point(values, obj.center); + }, + ^(UIView *obj, const CGFloat values[]) { + obj.center = values_to_point(values); + }, + kPOPThresholdPoint + }, + + {kPOPViewFrame, + ^(UIView *obj, CGFloat values[]) { + values_from_rect(values, obj.frame); + }, + ^(UIView *obj, const CGFloat values[]) { + obj.frame = values_to_rect(values); + }, + kPOPThresholdPoint + }, + + {kPOPViewScaleX, + ^(UIView *obj, CGFloat values[]) { + values[0] = POPLayerGetScaleX(obj.layer); + }, + ^(UIView *obj, const CGFloat values[]) { + POPLayerSetScaleX(obj.layer, values[0]); + }, + kPOPThresholdScale + }, + + {kPOPViewScaleY, + ^(UIView *obj, CGFloat values[]) { + values[0] = POPLayerGetScaleY(obj.layer); + }, + ^(UIView *obj, const CGFloat values[]) { + POPLayerSetScaleY(obj.layer, values[0]); + }, + kPOPThresholdScale + }, + + {kPOPViewScaleXY, + ^(UIView *obj, CGFloat values[]) { + values_from_point(values, POPLayerGetScaleXY(obj.layer)); + }, + ^(UIView *obj, const CGFloat values[]) { + POPLayerSetScaleXY(obj.layer, values_to_point(values)); + }, + kPOPThresholdScale + }, + + {kPOPViewTintColor, + ^(UIView *obj, CGFloat values[]) { + POPUIColorGetRGBAComponents(obj.tintColor, values); + }, + ^(UIView *obj, const CGFloat values[]) { + obj.tintColor = POPUIColorRGBACreate(values); + }, + kPOPThresholdColor + }, + + /* UIScrollView */ + + {kPOPScrollViewContentOffset, + ^(UIScrollView *obj, CGFloat values[]) { + values_from_point(values, obj.contentOffset); + }, + ^(UIScrollView *obj, const CGFloat values[]) { + [obj setContentOffset:values_to_point(values) animated:NO]; + }, + kPOPThresholdPoint + }, + + {kPOPScrollViewContentSize, + ^(UIScrollView *obj, CGFloat values[]) { + values_from_size(values, obj.contentSize); + }, + ^(UIScrollView *obj, const CGFloat values[]) { + obj.contentSize = values_to_size(values); + }, + kPOPThresholdPoint + }, + + {kPOPScrollViewZoomScale, + ^(UIScrollView *obj, CGFloat values[]) { + values[0]=obj.zoomScale; + }, + ^(UIScrollView *obj, const CGFloat values[]) { + obj.zoomScale=values[0]; + }, + kPOPThresholdScale + }, + + {kPOPScrollViewContentInset, + ^(UIScrollView *obj, CGFloat values[]) { + values[0] = obj.contentInset.top; + values[1] = obj.contentInset.left; + values[2] = obj.contentInset.bottom; + values[3] = obj.contentInset.right; + }, + ^(UIScrollView *obj, const CGFloat values[]) { + obj.contentInset = values_to_edge_insets(values); + }, + kPOPThresholdPoint + }, + + /* UINavigationBar */ + + {kPOPNavigationBarBarTintColor, + ^(UINavigationBar *obj, CGFloat values[]) { + POPUIColorGetRGBAComponents(obj.barTintColor, values); + }, + ^(UINavigationBar *obj, const CGFloat values[]) { + obj.barTintColor = POPUIColorRGBACreate(values); + }, + kPOPThresholdColor + }, + + /* UILabel */ + + {kPOPLabelTextColor, + ^(UILabel *obj, CGFloat values[]) { + POPUIColorGetRGBAComponents(obj.textColor, values); + }, + ^(UILabel *obj, const CGFloat values[]) { + obj.textColor = POPUIColorRGBACreate(values); + }, + kPOPThresholdColor + }, + +#else + + /* NSView */ + + {kPOPViewFrame, + ^(NSView *obj, CGFloat values[]) { + values_from_rect(values, NSRectToCGRect(obj.frame)); + }, + ^(NSView *obj, const CGFloat values[]) { + obj.frame = NSRectFromCGRect(values_to_rect(values)); + }, + kPOPThresholdPoint + }, + + {kPOPViewBounds, + ^(NSView *obj, CGFloat values[]) { + values_from_rect(values, NSRectToCGRect(obj.frame)); + }, + ^(NSView *obj, const CGFloat values[]) { + obj.bounds = NSRectFromCGRect(values_to_rect(values)); + }, + kPOPThresholdPoint + }, + + {kPOPViewAlphaValue, + ^(NSView *obj, CGFloat values[]) { + values[0] = obj.alphaValue; + }, + ^(NSView *obj, const CGFloat values[]) { + obj.alphaValue = values[0]; + }, + kPOPThresholdOpacity + }, + + {kPOPViewFrameRotation, + ^(NSView *obj, CGFloat values[]) { + values[0] = obj.frameRotation; + }, + ^(NSView *obj, const CGFloat values[]) { + obj.frameRotation = values[0]; + }, + kPOPThresholdRotation + }, + + {kPOPViewFrameCenterRotation, + ^(NSView *obj, CGFloat values[]) { + values[0] = obj.frameCenterRotation; + }, + ^(NSView *obj, const CGFloat values[]) { + obj.frameCenterRotation = values[0]; + }, + kPOPThresholdRotation + }, + + {kPOPViewBoundsRotation, + ^(NSView *obj, CGFloat values[]) { + values[0] = obj.boundsRotation; + }, + ^(NSView *obj, const CGFloat values[]) { + obj.boundsRotation = values[0]; + }, + kPOPThresholdRotation + }, + + /* NSWindow */ + + {kPOPWindowFrame, + ^(NSWindow *obj, CGFloat values[]) { + values_from_rect(values, NSRectToCGRect(obj.frame)); + }, + ^(NSWindow *obj, const CGFloat values[]) { + [obj setFrame:NSRectFromCGRect(values_to_rect(values)) display:YES]; + }, + kPOPThresholdPoint + }, + + {kPOPWindowAlphaValue, + ^(NSWindow *obj, CGFloat values[]) { + values[0] = obj.alphaValue; + }, + ^(NSWindow *obj, const CGFloat values[]) { + obj.alphaValue = values[0]; + }, + kPOPThresholdOpacity + }, + + {kPOPWindowBackgroundColor, + ^(NSWindow *obj, CGFloat values[]) { + POPNSColorGetRGBAComponents(obj.backgroundColor, values); + }, + ^(NSWindow *obj, const CGFloat values[]) { + obj.backgroundColor = POPNSColorRGBACreate(values); + }, + kPOPThresholdColor + }, + +#endif + +#if SCENEKIT_SDK_AVAILABLE + + /* SceneKit */ + + {kPOPSCNNodePosition, + ^(SCNNode *obj, CGFloat values[]) { + values_from_vec3(values, obj.position); + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.position = values_to_vec3(values); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodePositionX, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.position.x; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.position = SCNVector3Make(values[0], obj.position.y, obj.position.z); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodePositionY, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.position.y; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.position = SCNVector3Make(obj.position.x, values[0], obj.position.z); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodePositionZ, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.position.z; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.position = SCNVector3Make(obj.position.x, obj.position.y, values[0]); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeTranslation, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.transform.m41; + values[1] = obj.transform.m42; + values[2] = obj.transform.m43; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.transform = SCNMatrix4MakeTranslation(values[0], values[1], values[2]); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeTranslationX, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.transform.m41; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.transform = SCNMatrix4MakeTranslation(values[0], obj.transform.m42, obj.transform.m43); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeTranslationY, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.transform.m42; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.transform = SCNMatrix4MakeTranslation(obj.transform.m41, values[0], obj.transform.m43); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeTranslationY, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.transform.m43; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.transform = SCNMatrix4MakeTranslation(obj.transform.m41, obj.transform.m42, values[0]); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeRotation, + ^(SCNNode *obj, CGFloat values[]) { + values_from_vec4(values, obj.rotation); + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.rotation = values_to_vec4(values); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeRotationX, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.rotation.x; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.rotation = SCNVector4Make(1.0, obj.rotation.y, obj.rotation.z, values[0]); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeRotationY, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.rotation.y; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.rotation = SCNVector4Make(obj.rotation.x, 1.0, obj.rotation.z, values[0]); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeRotationZ, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.rotation.z; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.rotation = SCNVector4Make(obj.rotation.x, obj.rotation.y, 1.0, values[0]); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeRotationW, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.rotation.w; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.rotation = SCNVector4Make(obj.rotation.x, obj.rotation.y, obj.rotation.z, values[0]); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeEulerAngles, + ^(SCNNode *obj, CGFloat values[]) { + values_from_vec3(values, obj.eulerAngles); + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.eulerAngles = values_to_vec3(values); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeEulerAnglesX, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.eulerAngles.x; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.eulerAngles = SCNVector3Make(values[0], obj.eulerAngles.y, obj.eulerAngles.z); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeEulerAnglesY, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.eulerAngles.y; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.eulerAngles = SCNVector3Make(obj.eulerAngles.x, values[0], obj.eulerAngles.z); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeEulerAnglesZ, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.eulerAngles.z; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.eulerAngles = SCNVector3Make(obj.eulerAngles.x, obj.eulerAngles.y, values[0]); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeOrientation, + ^(SCNNode *obj, CGFloat values[]) { + values_from_vec4(values, obj.orientation); + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.orientation = values_to_vec4(values); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeOrientationX, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.orientation.x; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.orientation = SCNVector4Make(values[0], obj.orientation.y, obj.orientation.z, obj.orientation.w); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeOrientationY, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.orientation.y; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.orientation = SCNVector4Make(obj.orientation.x, values[0], obj.orientation.z, obj.orientation.w); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeOrientationZ, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.orientation.z; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.orientation = SCNVector4Make(obj.orientation.x, obj.orientation.y, values[0], obj.orientation.w); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeOrientationW, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.orientation.w; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.orientation = SCNVector4Make(obj.orientation.x, obj.orientation.y, obj.orientation.z, values[0]); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeScale, + ^(SCNNode *obj, CGFloat values[]) { + values_from_vec3(values, obj.scale); + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.scale = values_to_vec3(values); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeScaleX, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.scale.x; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.scale = SCNVector3Make(values[0], obj.scale.y, obj.scale.z); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeScaleY, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.scale.y; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.position = SCNVector3Make(obj.scale.x, values[0], obj.scale.z); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeScaleZ, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.scale.z; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.scale = SCNVector3Make(obj.scale.x, obj.scale.y, values[0]); + }, + kPOPThresholdScale + }, + + {kPOPSCNNodeScaleXY, + ^(SCNNode *obj, CGFloat values[]) { + values[0] = obj.scale.x; + values[1] = obj.scale.y; + }, + ^(SCNNode *obj, const CGFloat values[]) { + obj.scale = SCNVector3Make(values[0], values[1], obj.scale.z); + }, + kPOPThresholdScale + }, + +#endif + +}; + +static NSUInteger staticIndexWithName(NSString *aName) +{ + NSUInteger idx = 0; + + while (idx < POP_ARRAY_COUNT(_staticStates)) { + if ([_staticStates[idx].name isEqualToString:aName]) + return idx; + idx++; + } + + return NSNotFound; +} + +/** + Concrete static property class. + */ +@interface POPStaticAnimatableProperty : POPAnimatableProperty +{ +@public + POPStaticAnimatablePropertyState *_state; +} +@end + +@implementation POPStaticAnimatableProperty + +- (NSString *)name +{ + return _state->name; +} + +- (pop_animatable_read_block)readBlock +{ + return _state->readBlock; +} + +- (pop_animatable_write_block)writeBlock +{ + return _state->writeBlock; +} + +- (CGFloat)threshold +{ + return _state->threshold; +} + +@end + +#pragma mark - Concrete + +/** + Concrete immutable property class. + */ +@interface POPConcreteAnimatableProperty : POPAnimatableProperty +- (instancetype)initWithName:(NSString *)name readBlock:(pop_animatable_read_block)read writeBlock:(pop_animatable_write_block)write threshold:(CGFloat)threshold; +@end + +@implementation POPConcreteAnimatableProperty + +// default synthesis +@synthesize name, readBlock, writeBlock, threshold; + +- (instancetype)initWithName:(NSString *)aName readBlock:(pop_animatable_read_block)aReadBlock writeBlock:(pop_animatable_write_block)aWriteBlock threshold:(CGFloat)aThreshold +{ + self = [super init]; + if (nil != self) { + name = [aName copy]; + readBlock = [aReadBlock copy]; + writeBlock = [aWriteBlock copy]; + threshold = aThreshold; + } + return self; +} +@end + +#pragma mark - Mutable + +@implementation POPMutableAnimatableProperty + +// default synthesis +@synthesize name, readBlock, writeBlock, threshold; + +@end + +#pragma mark - Cluster + +/** + Singleton placeholder property class to support class cluster. + */ +@interface POPPlaceholderAnimatableProperty : POPAnimatableProperty + +@end + +@implementation POPPlaceholderAnimatableProperty + +// default synthesis +@synthesize name, readBlock, writeBlock, threshold; + +@end + +/** + Cluster class. + */ +@implementation POPAnimatableProperty + +// avoid creating backing ivars +@dynamic name, readBlock, writeBlock, threshold; + +static POPAnimatableProperty *placeholder = nil; + ++ (void)initialize +{ + if (self == [POPAnimatableProperty class]) { + placeholder = [POPPlaceholderAnimatableProperty alloc]; + } +} + ++ (id)allocWithZone:(struct _NSZone *)zone +{ + if (self == [POPAnimatableProperty class]) { + if (nil == placeholder) { + placeholder = [super allocWithZone:zone]; + } + return placeholder; + } + return [super allocWithZone:zone]; +} + +- (id)copyWithZone:(NSZone *)zone +{ + if ([self isKindOfClass:[POPMutableAnimatableProperty class]]) { + POPConcreteAnimatableProperty *copyProperty = [[POPConcreteAnimatableProperty alloc] initWithName:self.name readBlock:self.readBlock writeBlock:self.writeBlock threshold:self.threshold]; + return copyProperty; + } else { + return self; + } +} + +- (id)mutableCopyWithZone:(NSZone *)zone +{ + POPMutableAnimatableProperty *copyProperty = [[POPMutableAnimatableProperty alloc] init]; + copyProperty.name = self.name; + copyProperty.readBlock = self.readBlock; + copyProperty.writeBlock = self.writeBlock; + copyProperty.threshold = self.threshold; + return copyProperty; +} + ++ (id)propertyWithName:(NSString *)aName +{ + return [self propertyWithName:aName initializer:NULL]; +} + ++ (id)propertyWithName:(NSString *)aName initializer:(void (^)(POPMutableAnimatableProperty *prop))aBlock +{ + POPAnimatableProperty *prop = nil; + + static NSMutableDictionary *_propertyDict = nil; + if (nil == _propertyDict) { + _propertyDict = [[NSMutableDictionary alloc] initWithCapacity:10]; + } + + prop = _propertyDict[aName]; + if (nil != prop) { + return prop; + } + + NSUInteger staticIdx = staticIndexWithName(aName); + + if (NSNotFound != staticIdx) { + POPStaticAnimatableProperty *staticProp = [[POPStaticAnimatableProperty alloc] init]; + staticProp->_state = &_staticStates[staticIdx]; + _propertyDict[aName] = staticProp; + prop = staticProp; + } else if (NULL != aBlock) { + POPMutableAnimatableProperty *mutableProp = [[POPMutableAnimatableProperty alloc] init]; + mutableProp.name = aName; + mutableProp.threshold = 1.0; + aBlock(mutableProp); + prop = [mutableProp copy]; + } + + return prop; +} + +- (NSString *)description +{ + NSMutableString *s = [NSMutableString stringWithFormat:@"%@ name:%@ threshold:%f", super.description, self.name, self.threshold]; + return s; +} + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimation.h b/Unit-2-Journal/Pods/pop/pop/POPAnimation.h new file mode 100644 index 0000000..3c710f2 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimation.h @@ -0,0 +1,188 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <Foundation/NSObject.h> + +#import <pop/POPAnimationTracer.h> +#import <pop/POPGeometry.h> + +@class CAMediaTimingFunction; + +/** + @abstract The abstract animation base class. + @discussion Instantiate and use one of the concrete animation subclasses. + */ +@interface POPAnimation : NSObject + +/** + @abstract The name of the animation. + @discussion Optional property to help identify the animation. + */ +@property (copy, nonatomic) NSString *name; + +/** + @abstract The beginTime of the animation in media time. + @discussion Defaults to 0 and starts immediately. + */ +@property (assign, nonatomic) CFTimeInterval beginTime; + +/** + @abstract The animation delegate. + @discussion See {@ref POPAnimationDelegate} for details. + */ +@property (weak, nonatomic) id delegate; + +/** + @abstract The animation tracer. + @discussion Returns the existing tracer, creating one if needed. Call start/stop on the tracer to toggle event collection. + */ +@property (readonly, nonatomic) POPAnimationTracer *tracer; + +/** + @abstract Optional block called on animation start. + */ +@property (copy, nonatomic) void (^animationDidStartBlock)(POPAnimation *anim); + +/** + @abstract Optional block called when value meets or exceeds to value. + */ +@property (copy, nonatomic) void (^animationDidReachToValueBlock)(POPAnimation *anim); + +/** + @abstract Optional block called on animation completion. + */ +@property (copy, nonatomic) void (^completionBlock)(POPAnimation *anim, BOOL finished); + +/** + @abstract Optional block called each frame animation is applied. + */ +@property (copy, nonatomic) void (^animationDidApplyBlock)(POPAnimation *anim); + +/** + @abstract Flag indicating whether animation should be removed on completion. + @discussion Setting to NO can facilitate animation reuse. Defaults to YES. + */ +@property (assign, nonatomic) BOOL removedOnCompletion; + +/** + @abstract Flag indicating whether animation is paused. + @discussion A paused animation is excluded from the list of active animations. On initial creation, defaults to YES. On animation addition, the animation is implicity unpaused. On animation completion, the animation is implicity paused including for animations with removedOnCompletion set to NO. + */ +@property (assign, nonatomic, getter = isPaused) BOOL paused; + +/** + @abstract Flag indicating whether animation autoreverses. + @discussion An animation that autoreverses will have twice the duration before it is considered finished. It will animate to the toValue, stop, then animate back to the original fromValue. The delegate methods are called as follows: + + 1) animationDidStart: is called at the beginning, as usual, and then after each toValue is reached and the autoreverse is going to start. + 2) animationDidReachToValue: is called every time the toValue is reached. The toValue is swapped with the fromValue at the end of each animation segment. This means that with autoreverses set to YES, the animationDidReachToValue: delegate method will be called a minimum of twice. + 3) animationDidStop:finished: is called every time the toValue is reached, the finished argument will be NO if the autoreverse is not yet complete. + */ +@property (assign, nonatomic) BOOL autoreverses; + +/** + @abstract The number of times to repeat the animation. + @discussion A repeatCount of 0 or 1 means that the animation will not repeat, just like Core Animation. A repeatCount of 2 or greater means that the animation will run that many times before stopping. The delegate methods are called as follows: + + 1) animationDidStart: is called at the beginning of each animation repeat. + 2) animationDidReachToValue: is called every time the toValue is reached. + 3) animationDidStop:finished: is called every time the toValue is reached, the finished argument will be NO if the autoreverse is not yet complete. + +When combined with the autoreverses property, a singular animation is effectively twice as long. + */ +@property (assign, nonatomic) NSInteger repeatCount; + +/** + @abstract Repeat the animation forever. + @discussion This property will make the animation repeat forever. The value of the repeatCount property is undefined when this property is set. The finished parameter of the delegate callback animationDidStop:finished: will always be NO. + */ +@property (assign, nonatomic) BOOL repeatForever; + +@end + +/** + @abstract The animation delegate. + */ +@protocol POPAnimationDelegate <NSObject> +@optional + +/** + @abstract Called on animation start. + @param anim The relevant animation. + */ +- (void)pop_animationDidStart:(POPAnimation *)anim; + +/** + @abstract Called when value meets or exceeds to value. + @param anim The relevant animation. + */ +- (void)pop_animationDidReachToValue:(POPAnimation *)anim; + +/** + @abstract Called on animation stop. + @param anim The relevant animation. + @param finished Flag indicating finished state. Flag is true if the animation reached completion before being removed. + */ +- (void)pop_animationDidStop:(POPAnimation *)anim finished:(BOOL)finished; + +/** + @abstract Called each frame animation is applied. + @param anim The relevant animation. + */ +- (void)pop_animationDidApply:(POPAnimation *)anim; + +@end + + +@interface NSObject (POP) + +/** + @abstract Add an animation to the reciver. + @param anim The animation to add. + @param key The key used to identify the animation. + @discussion The 'key' may be any string such that only one animation per unique key is added per object. + */ +- (void)pop_addAnimation:(POPAnimation *)anim forKey:(NSString *)key; + +/** + @abstract Remove all animations attached to the receiver. + */ +- (void)pop_removeAllAnimations; + +/** + @abstract Remove any animation attached to the receiver for 'key'. + @param key The key used to identify the animation. + */ +- (void)pop_removeAnimationForKey:(NSString *)key; + +/** + @abstract Returns an array containing the keys of all animations currently attached to the receiver. + @param The order of keys reflects the order in which animations will be applied. + */ +- (NSArray *)pop_animationKeys; + +/** + @abstract Returns any animation attached to the receiver. + @param key The key used to identify the animation. + @returns The animation currently attached, or nil if no such animation exists. + */ +- (id)pop_animationForKey:(NSString *)key; + +@end + +/** + * This implementation of NSCopying does not do any copying of animation's state, but only configuration. + * i.e. you cannot copy an animation and expect to apply it to a view and have the copied animation pick up where the original left off. + * Two common uses of copying animations: + * * you need to apply the same animation to multiple different views. + * * you need to absolutely ensure that the the caller of your function cannot mutate the animation once it's been passed in. + */ +@interface POPAnimation (NSCopying) <NSCopying> + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimation.mm b/Unit-2-Journal/Pods/pop/pop/POPAnimation.mm new file mode 100644 index 0000000..75bdeb1 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimation.mm @@ -0,0 +1,303 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPAnimationExtras.h" +#import "POPAnimationInternal.h" + +#import <objc/runtime.h> + +#import "POPAction.h" +#import "POPAnimationRuntime.h" +#import "POPAnimationTracerInternal.h" +#import "POPAnimatorPrivate.h" + +using namespace POP; + +#pragma mark - POPAnimation + +@implementation POPAnimation +@synthesize solver = _solver; +@synthesize currentValue = _currentValue; +@synthesize progressMarkers = _progressMarkers; + +#pragma mark - Lifecycle + +- (id)init +{ + [NSException raise:NSStringFromClass([self class]) format:@"Attempting to instantiate an abstract class. Use a concrete subclass instead."]; + return nil; +} + +- (id)_init +{ + self = [super init]; + if (nil != self) { + [self _initState]; + } + return self; +} + +- (void)_initState +{ + _state = new POPAnimationState(self); +} + +- (void)dealloc +{ + if (_state) { + delete _state; + _state = NULL; + }; +} + +#pragma mark - Properties + +- (id)delegate +{ + return _state->delegate; +} + +- (void)setDelegate:(id)delegate +{ + _state->setDelegate(delegate); +} + +- (BOOL)isPaused +{ + return _state->paused; +} + +- (void)setPaused:(BOOL)paused +{ + _state->setPaused(paused ? true : false); +} + +- (NSInteger)repeatCount +{ + if (_state->autoreverses) { + return _state->repeatCount / 2; + } else { + return _state->repeatCount; + } +} + +- (void)setRepeatCount:(NSInteger)repeatCount +{ + if (repeatCount > 0) { + if (repeatCount > NSIntegerMax / 2) { + repeatCount = NSIntegerMax / 2; + } + + if (_state->autoreverses) { + _state->repeatCount = (repeatCount * 2); + } else { + _state->repeatCount = repeatCount; + } + } +} + +- (BOOL)autoreverses +{ + return _state->autoreverses; +} + +- (void)setAutoreverses:(BOOL)autoreverses +{ + _state->autoreverses = autoreverses; + if (autoreverses) { + if (_state->repeatCount == 0) { + [self setRepeatCount:1]; + } + } +} + +FB_PROPERTY_GET(POPAnimationState, type, POPAnimationType); +DEFINE_RW_PROPERTY_OBJ_COPY(POPAnimationState, animationDidStartBlock, setAnimationDidStartBlock:, POPAnimationDidStartBlock); +DEFINE_RW_PROPERTY_OBJ_COPY(POPAnimationState, animationDidReachToValueBlock, setAnimationDidReachToValueBlock:, POPAnimationDidReachToValueBlock); +DEFINE_RW_PROPERTY_OBJ_COPY(POPAnimationState, completionBlock, setCompletionBlock:, POPAnimationCompletionBlock); +DEFINE_RW_PROPERTY_OBJ_COPY(POPAnimationState, animationDidApplyBlock, setAnimationDidApplyBlock:, POPAnimationDidApplyBlock); +DEFINE_RW_PROPERTY_OBJ_COPY(POPAnimationState, name, setName:, NSString*); +DEFINE_RW_PROPERTY(POPAnimationState, beginTime, setBeginTime:, CFTimeInterval); +DEFINE_RW_FLAG(POPAnimationState, removedOnCompletion, removedOnCompletion, setRemovedOnCompletion:); +DEFINE_RW_FLAG(POPAnimationState, repeatForever, repeatForever, setRepeatForever:); + +- (id)valueForUndefinedKey:(NSString *)key +{ + return _state->dict[key]; +} + +- (void)setValue:(id)value forUndefinedKey:(NSString *)key +{ + if (!value) { + [_state->dict removeObjectForKey:key]; + } else { + if (!_state->dict) + _state->dict = [[NSMutableDictionary alloc] init]; + _state->dict[key] = value; + } +} + +- (POPAnimationTracer *)tracer +{ + if (!_state->tracer) { + _state->tracer = [[POPAnimationTracer alloc] initWithAnimation:self]; + } + return _state->tracer; +} + +- (NSString *)description +{ + NSMutableString *s = [NSMutableString stringWithFormat:@"<%@:%p", NSStringFromClass([self class]), self]; + [self _appendDescription:s debug:NO]; + [s appendString:@">"]; + return s; +} + +- (NSString *)debugDescription +{ + NSMutableString *s = [NSMutableString stringWithFormat:@"<%@:%p", NSStringFromClass([self class]), self]; + [self _appendDescription:s debug:YES]; + [s appendString:@">"]; + return s; +} + +#pragma mark - Utility + +POPAnimationState *POPAnimationGetState(POPAnimation *a) +{ + return a->_state; +} + +- (BOOL)_advance:(id)object currentTime:(CFTimeInterval)currentTime elapsedTime:(CFTimeInterval)elapsedTime +{ + return YES; +} + +- (void)_appendDescription:(NSMutableString *)s debug:(BOOL)debug +{ + if (_state->name) + [s appendFormat:@"; name = %@", _state->name]; + + if (!self.removedOnCompletion) + [s appendFormat:@"; removedOnCompletion = %@", POPStringFromBOOL(self.removedOnCompletion)]; + + if (debug) { + if (_state->active) + [s appendFormat:@"; active = %@", POPStringFromBOOL(_state->active)]; + + if (_state->paused) + [s appendFormat:@"; paused = %@", POPStringFromBOOL(_state->paused)]; + } + + if (_state->beginTime) { + [s appendFormat:@"; beginTime = %f", _state->beginTime]; + } + + for (NSString *key in _state->dict) { + [s appendFormat:@"; %@ = %@", key, _state->dict[key]]; + } +} + +@end + + +#pragma mark - POPPropertyAnimation + +#pragma mark - POPBasicAnimation + +#pragma mark - POPDecayAnimation + +@implementation NSObject (POP) + +- (void)pop_addAnimation:(POPAnimation *)anim forKey:(NSString *)key +{ + [[POPAnimator sharedAnimator] addAnimation:anim forObject:self key:key]; +} + +- (void)pop_removeAllAnimations +{ + [[POPAnimator sharedAnimator] removeAllAnimationsForObject:self]; +} + +- (void)pop_removeAnimationForKey:(NSString *)key +{ + [[POPAnimator sharedAnimator] removeAnimationForObject:self key:key]; +} + +- (NSArray *)pop_animationKeys +{ + return [[POPAnimator sharedAnimator] animationKeysForObject:self]; +} + +- (id)pop_animationForKey:(NSString *)key +{ + return [[POPAnimator sharedAnimator] animationForObject:self key:key]; +} + +@end + +@implementation NSProxy (POP) + +- (void)pop_addAnimation:(POPAnimation *)anim forKey:(NSString *)key +{ + [[POPAnimator sharedAnimator] addAnimation:anim forObject:self key:key]; +} + +- (void)pop_removeAllAnimations +{ + [[POPAnimator sharedAnimator] removeAllAnimationsForObject:self]; +} + +- (void)pop_removeAnimationForKey:(NSString *)key +{ + [[POPAnimator sharedAnimator] removeAnimationForObject:self key:key]; +} + +- (NSArray *)pop_animationKeys +{ + return [[POPAnimator sharedAnimator] animationKeysForObject:self]; +} + +- (id)pop_animationForKey:(NSString *)key +{ + return [[POPAnimator sharedAnimator] animationForObject:self key:key]; +} + +@end + +@implementation POPAnimation (NSCopying) + +- (instancetype)copyWithZone:(NSZone *)zone +{ + /* + * Must use [self class] instead of POPAnimation so that subclasses can call this via super. + * Even though POPAnimation and POPPropertyAnimation throw exceptions on init, + * it's safe to call it since you can only copy objects that have been successfully created. + */ + POPAnimation *copy = [[[self class] allocWithZone:zone] init]; + + if (copy) { + copy.name = self.name; + copy.beginTime = self.beginTime; + copy.delegate = self.delegate; + copy.animationDidStartBlock = self.animationDidStartBlock; + copy.animationDidReachToValueBlock = self.animationDidReachToValueBlock; + copy.completionBlock = self.completionBlock; + copy.animationDidApplyBlock = self.animationDidApplyBlock; + copy.removedOnCompletion = self.removedOnCompletion; + + copy.autoreverses = self.autoreverses; + copy.repeatCount = self.repeatCount; + copy.repeatForever = self.repeatForever; + } + + return copy; +} + +@end \ No newline at end of file diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimationEvent.h b/Unit-2-Journal/Pods/pop/pop/POPAnimationEvent.h new file mode 100644 index 0000000..e761091 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimationEvent.h @@ -0,0 +1,69 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <Foundation/Foundation.h> + +/** + @abstract Enumeraton of animation event types. + */ +typedef NS_ENUM(NSUInteger, POPAnimationEventType) { + kPOPAnimationEventPropertyRead = 0, + kPOPAnimationEventPropertyWrite, + kPOPAnimationEventToValueUpdate, + kPOPAnimationEventFromValueUpdate, + kPOPAnimationEventVelocityUpdate, + kPOPAnimationEventBouncinessUpdate, + kPOPAnimationEventSpeedUpdate, + kPOPAnimationEventFrictionUpdate, + kPOPAnimationEventMassUpdate, + kPOPAnimationEventTensionUpdate, + kPOPAnimationEventDidStart, + kPOPAnimationEventDidStop, + kPOPAnimationEventDidReachToValue, + kPOPAnimationEventAutoreversed +}; + +/** + @abstract The base animation event class. + */ +@interface POPAnimationEvent : NSObject + +/** + @abstract The event type. See {@ref POPAnimationEventType} for possible values. + */ +@property (readonly, nonatomic, assign) POPAnimationEventType type; + +/** + @abstract The time of event. + */ +@property (readonly, nonatomic, assign) CFTimeInterval time; + +/** + @abstract Optional string describing the animation at time of event. + */ +@property (readonly, nonatomic, copy) NSString *animationDescription; + +@end + +/** + @abstract An animation event subclass for recording value and velocity. + */ +@interface POPAnimationValueEvent : POPAnimationEvent + +/** + @abstract The value recorded. + */ +@property (readonly, nonatomic, strong) id value; + +/** + @abstract The velocity recorded, if any. + */ +@property (readonly, nonatomic, strong) id velocity; + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimationEvent.mm b/Unit-2-Journal/Pods/pop/pop/POPAnimationEvent.mm new file mode 100644 index 0000000..d3a13b6 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimationEvent.mm @@ -0,0 +1,108 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPAnimationEvent.h" +#import "POPAnimationEventInternal.h" + +static NSString *stringFromType(POPAnimationEventType aType) +{ + switch (aType) { + case kPOPAnimationEventPropertyRead: + return @"read"; + case kPOPAnimationEventPropertyWrite: + return @"write"; + case kPOPAnimationEventToValueUpdate: + return @"toValue"; + case kPOPAnimationEventFromValueUpdate: + return @"fromValue"; + case kPOPAnimationEventVelocityUpdate: + return @"velocity"; + case kPOPAnimationEventSpeedUpdate: + return @"speed"; + case kPOPAnimationEventBouncinessUpdate: + return @"bounciness"; + case kPOPAnimationEventFrictionUpdate: + return @"friction"; + case kPOPAnimationEventMassUpdate: + return @"mass"; + case kPOPAnimationEventTensionUpdate: + return @"tension"; + case kPOPAnimationEventDidStart: + return @"didStart"; + case kPOPAnimationEventDidStop: + return @"didStop"; + case kPOPAnimationEventDidReachToValue: + return @"didReachToValue"; + case kPOPAnimationEventAutoreversed: + return @"autoreversed"; + default: + return nil; + } +} + +@implementation POPAnimationEvent +@synthesize type = _type; +@synthesize time = _time; +@synthesize animationDescription = _animationDescription; + +- (instancetype)initWithType:(POPAnimationEventType)aType time:(CFTimeInterval)aTime +{ + self = [super init]; + if (nil != self) { + _type = aType; + _time = aTime; + } + return self; +} + +- (NSString *)description +{ + NSMutableString *s = [NSMutableString stringWithFormat:@"<POPAnimationEvent:%f; type = %@", _time, stringFromType(_type)]; + [self _appendDescription:s]; + [s appendString:@">"]; + return s; +} + +// subclass override +- (void)_appendDescription:(NSMutableString *)s +{ + if (0 != _animationDescription.length) { + [s appendFormat:@"; animation = %@", _animationDescription]; + } +} + +@end + +@implementation POPAnimationValueEvent +@synthesize value = _value; +@synthesize velocity = _velocity; + +- (instancetype)initWithType:(POPAnimationEventType)aType time:(CFTimeInterval)aTime value:(id)aValue +{ + self = [self initWithType:aType time:aTime]; + if (nil != self) { + _value = aValue; + } + return self; +} + +- (void)_appendDescription:(NSMutableString *)s +{ + [super _appendDescription:s]; + + if (nil != _value) { + [s appendFormat:@"; value = %@", _value]; + } + + if (nil != _velocity) { + [s appendFormat:@"; velocity = %@", _velocity]; + } +} + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimationEventInternal.h b/Unit-2-Journal/Pods/pop/pop/POPAnimationEventInternal.h new file mode 100644 index 0000000..398d59b --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimationEventInternal.h @@ -0,0 +1,41 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <Foundation/Foundation.h> + +#import "POPAnimationEvent.h" + +@interface POPAnimationEvent () + +/** + @abstract Default initializer. + */ +- (instancetype)initWithType:(POPAnimationEventType)type time:(CFTimeInterval)time; + +/** + @abstract Readwrite redefinition of public property. + */ +@property (readwrite, nonatomic, copy) NSString *animationDescription; + +@end + +@interface POPAnimationValueEvent () + +/** + @abstract Default initializer. + */ +- (instancetype)initWithType:(POPAnimationEventType)type time:(CFTimeInterval)time value:(id)value; + +/** + @abstract Readwrite redefinition of public property. + */ +@property (readwrite, nonatomic, strong) id velocity; + +@end + diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimationExtras.h b/Unit-2-Journal/Pods/pop/pop/POPAnimationExtras.h new file mode 100644 index 0000000..4b3d237 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimationExtras.h @@ -0,0 +1,43 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <QuartzCore/CAAnimation.h> + +#import <pop/POPDefines.h> +#import <pop/POPSpringAnimation.h> + +/** + @abstract The current drag coefficient. + @discussion A value greater than 1.0 indicates Simulator slow-motion animations are enabled. Defaults to 1.0. + */ +extern CGFloat POPAnimationDragCoefficient(); + +@interface CAAnimation (POPAnimationExtras) + +/** + @abstract Apply the current drag coefficient to animation speed. + @discussion Convenience utility to respect Simulator slow-motion animation settings. + */ +- (void)pop_applyDragCoefficient; + +@end + +@interface POPSpringAnimation (POPAnimationExtras) + +/** + @abstract Converts from spring bounciness and speed to tension, friction and mass dynamics values. + */ ++ (void)convertBounciness:(CGFloat)bounciness speed:(CGFloat)speed toTension:(CGFloat *)outTension friction:(CGFloat *)outFriction mass:(CGFloat *)outMass; + +/** + @abstract Converts from dynamics tension, friction and mass to spring bounciness and speed values. + */ ++ (void)convertTension:(CGFloat)tension friction:(CGFloat)friction toBounciness:(CGFloat *)outBounciness speed:(CGFloat *)outSpeed; + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimationExtras.mm b/Unit-2-Journal/Pods/pop/pop/POPAnimationExtras.mm new file mode 100644 index 0000000..0a6d6c9 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimationExtras.mm @@ -0,0 +1,117 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPAnimationExtras.h" +#import "POPAnimationPrivate.h" + +#if TARGET_OS_IPHONE +#import <UIKit/UIKit.h> +#endif + +#if TARGET_IPHONE_SIMULATOR +UIKIT_EXTERN float UIAnimationDragCoefficient(); // UIKit private drag coeffient, use judiciously +#endif + +#import "POPMath.h" + +CGFloat POPAnimationDragCoefficient() +{ +#if TARGET_IPHONE_SIMULATOR + return UIAnimationDragCoefficient(); +#else + return 1.0; +#endif +} + +@implementation CAAnimation (POPAnimationExtras) + +- (void)pop_applyDragCoefficient +{ + CGFloat k = POPAnimationDragCoefficient(); + if (k != 0 && k != 1) + self.speed = 1 / k; +} + +@end + +@implementation POPSpringAnimation (POPAnimationExtras) + +static const CGFloat POPBouncy3NormalizationRange = 20.0; +static const CGFloat POPBouncy3NormalizationScale = 1.7; +static const CGFloat POPBouncy3BouncinessNormalizedMin = 0.0; +static const CGFloat POPBouncy3BouncinessNormalizedMax = 0.8; +static const CGFloat POPBouncy3SpeedNormalizedMin = 0.5; +static const CGFloat POPBouncy3SpeedNormalizedMax = 200; +static const CGFloat POPBouncy3FrictionInterpolationMax = 0.01; + ++ (void)convertBounciness:(CGFloat)bounciness speed:(CGFloat)speed toTension:(CGFloat *)outTension friction:(CGFloat *)outFriction mass:(CGFloat *)outMass +{ + double b = POPNormalize(bounciness / POPBouncy3NormalizationScale, 0, POPBouncy3NormalizationRange); + b = POPProjectNormal(b, POPBouncy3BouncinessNormalizedMin, POPBouncy3BouncinessNormalizedMax); + + double s = POPNormalize(speed / POPBouncy3NormalizationScale, 0, POPBouncy3NormalizationRange); + + CGFloat tension = POPProjectNormal(s, POPBouncy3SpeedNormalizedMin, POPBouncy3SpeedNormalizedMax); + CGFloat friction = POPQuadraticOutInterpolation(b, POPBouncy3NoBounce(tension), POPBouncy3FrictionInterpolationMax); + + tension = POP_ANIMATION_TENSION_FOR_QC_TENSION(tension); + friction = POP_ANIMATION_FRICTION_FOR_QC_FRICTION(friction); + + if (outTension) { + *outTension = tension; + } + + if (outFriction) { + *outFriction = friction; + } + + if (outMass) { + *outMass = 1.0; + } +} + ++ (void)convertTension:(CGFloat)tension friction:(CGFloat)friction toBounciness:(CGFloat *)outBounciness speed:(CGFloat *)outSpeed +{ + // Convert to QC values, in which our calculations are done. + CGFloat qcFriction = QC_FRICTION_FOR_POP_ANIMATION_FRICTION(friction); + CGFloat qcTension = QC_TENSION_FOR_POP_ANIMATION_TENSION(tension); + + // Friction is a function of bounciness and tension, according to the following: + // friction = POPQuadraticOutInterpolation(b, POPBouncy3NoBounce(tension), POPBouncy3FrictionInterpolationMax); + // Solve for bounciness, given a tension and friction. + + CGFloat nobounceTension = POPBouncy3NoBounce(qcTension); + CGFloat bounciness1, bounciness2; + + POPQuadraticSolve((nobounceTension - POPBouncy3FrictionInterpolationMax), // a + 2 * (POPBouncy3FrictionInterpolationMax - nobounceTension), // b + (nobounceTension - qcFriction), // c + bounciness1, // x1 + bounciness2); // x2 + + + // Choose the quadratic solution within the normalized bounciness range + CGFloat projectedNormalizedBounciness = (bounciness2 < POPBouncy3BouncinessNormalizedMax) ? bounciness2 : bounciness1; + CGFloat projectedNormalizedSpeed = qcTension; + + // Reverse projection + normalization + CGFloat bounciness = ((POPBouncy3NormalizationRange * POPBouncy3NormalizationScale) / (POPBouncy3BouncinessNormalizedMax - POPBouncy3BouncinessNormalizedMin)) * (projectedNormalizedBounciness - POPBouncy3BouncinessNormalizedMin); + CGFloat speed = ((POPBouncy3NormalizationRange * POPBouncy3NormalizationScale) / (POPBouncy3SpeedNormalizedMax - POPBouncy3SpeedNormalizedMin)) * (projectedNormalizedSpeed - POPBouncy3SpeedNormalizedMin); + + // Write back results + if (outBounciness) { + *outBounciness = bounciness; + } + + if (outSpeed) { + *outSpeed = speed; + } +} + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimationInternal.h b/Unit-2-Journal/Pods/pop/pop/POPAnimationInternal.h new file mode 100644 index 0000000..317364f --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimationInternal.h @@ -0,0 +1,505 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPAnimation.h" + +#import <QuartzCore/CAMediaTimingFunction.h> + +#import "POPAction.h" +#import "POPAnimationRuntime.h" +#import "POPAnimationTracerInternal.h" +#import "POPSpringSolver.h" + +using namespace POP; + +/** + Enumeration of supported animation types. + */ +enum POPAnimationType +{ + kPOPAnimationSpring, + kPOPAnimationDecay, + kPOPAnimationBasic, + kPOPAnimationCustom, +}; + +typedef struct +{ + CGFloat progress; + bool reached; +} POPProgressMarker; + +typedef void (^POPAnimationDidStartBlock)(POPAnimation *anim); +typedef void (^POPAnimationDidReachToValueBlock)(POPAnimation *anim); +typedef void (^POPAnimationCompletionBlock)(POPAnimation *anim, BOOL finished); +typedef void (^POPAnimationDidApplyBlock)(POPAnimation *anim); + +@interface POPAnimation() +- (instancetype)_init; + +@property (assign, nonatomic) SpringSolver4d *solver; +@property (readonly, nonatomic) POPAnimationType type; + +/** + The current animation value, updated while animation is progressing. + */ +@property (copy, nonatomic, readonly) id currentValue; + +/** + An array of optional progress markers. For each marker specified, the animation delegate will be informed when progress meets or exceeds the value specified. Specifying values outside of the [0, 1] range will give undefined results. + */ +@property (copy, nonatomic) NSArray *progressMarkers; + +/** + Return YES to indicate animation should continue animating. + */ +- (BOOL)_advance:(id)object currentTime:(CFTimeInterval)currentTime elapsedTime:(CFTimeInterval)elapsedTime; + +/** + Subclass override point to append animation description. + */ +- (void)_appendDescription:(NSMutableString *)s debug:(BOOL)debug; + +@end + +NS_INLINE NSString *describe(VectorConstRef vec) +{ + return NULL == vec ? @"null" : vec->toString(); +} + +NS_INLINE Vector4r vector4(VectorConstRef vec) +{ + return NULL == vec ? Vector4r::Zero() : vec->vector4r(); +} + +NS_INLINE Vector4d vector4d(VectorConstRef vec) +{ + if (NULL == vec) { + return Vector4d::Zero(); + } else { + return vec->vector4r().cast<double>(); + } +} + +NS_INLINE bool vec_equal(VectorConstRef v1, VectorConstRef v2) +{ + if (v1 == v2) { + return true; + } + if (!v1 || !v2) { + return false; + } + return *v1 == *v2; +} + +NS_INLINE CGFloat * vec_data(VectorRef vec) +{ + return NULL == vec ? NULL : vec->data(); +} + +template<class T> +struct ComputeProgressFunctor { + CGFloat operator()(const T &value, const T &start, const T &end) const { + return 0; + } +}; + +template<> +struct ComputeProgressFunctor<Vector4r> { + CGFloat operator()(const Vector4r &value, const Vector4r &start, const Vector4r &end) const { + CGFloat s = (value - start).squaredNorm(); // distance from start + CGFloat e = (value - end).squaredNorm(); // distance from end + CGFloat d = (end - start).squaredNorm(); // distance from start to end + + if (0 == d) { + return 1; + } else if (s > e) { + // s -------- p ---- e OR s ------- e ---- p + return sqrtr(s/d); + } else { + // s --- p --------- e OR p ---- s ------- e + return 1 - sqrtr(e/d); + } + } +}; + +struct _POPAnimationState; +struct _POPDecayAnimationState; +struct _POPPropertyAnimationState; + +extern _POPAnimationState *POPAnimationGetState(POPAnimation *a); + + +#define FB_FLAG_GET(stype, flag, getter) \ +- (BOOL)getter { \ + return ((stype *)_state)->flag; \ +} + +#define FB_FLAG_SET(stype, flag, mutator) \ +- (void)mutator (BOOL)value { \ + if (value == ((stype *)_state)->flag) \ + return; \ + ((stype *)_state)->flag = value; \ +} + +#define DEFINE_RW_FLAG(stype, flag, getter, mutator) \ + FB_FLAG_GET (stype, flag, getter) \ + FB_FLAG_SET (stype, flag, mutator) + +#define FB_PROPERTY_GET(stype, property, ctype) \ +- (ctype)property { \ + return ((stype *)_state)->property; \ +} + +#define FB_PROPERTY_SET(stype, property, mutator, ctype, ...) \ +- (void)mutator (ctype)value { \ + if (value == ((stype *)_state)->property) \ + return; \ + ((stype *)_state)->property = value; \ + __VA_ARGS__ \ +} + +#define FB_PROPERTY_SET_OBJ_COPY(stype, property, mutator, ctype, ...) \ +- (void)mutator (ctype)value { \ + if (value == ((stype *)_state)->property) \ + return; \ + ((stype *)_state)->property = [value copy]; \ + __VA_ARGS__ \ +} + +#define DEFINE_RW_PROPERTY(stype, flag, mutator, ctype, ...) \ + FB_PROPERTY_GET (stype, flag, ctype) \ + FB_PROPERTY_SET (stype, flag, mutator, ctype, __VA_ARGS__) + +#define DEFINE_RW_PROPERTY_OBJ(stype, flag, mutator, ctype, ...) \ + FB_PROPERTY_GET (stype, flag, ctype) \ + FB_PROPERTY_SET (stype, flag, mutator, ctype, __VA_ARGS__) + +#define DEFINE_RW_PROPERTY_OBJ_COPY(stype, flag, mutator, ctype, ...) \ + FB_PROPERTY_GET (stype, flag, ctype) \ + FB_PROPERTY_SET_OBJ_COPY (stype, flag, mutator, ctype, __VA_ARGS__) + + +/** + Internal delegate definition. + */ +@interface NSObject (POPAnimationDelegateInternal) +- (void)pop_animation:(POPAnimation *)anim didReachProgress:(CGFloat)progress; +@end + +struct _POPAnimationState +{ + id __unsafe_unretained self; + POPAnimationType type; + NSString *name; + NSUInteger ID; + CFTimeInterval beginTime; + CFTimeInterval startTime; + CFTimeInterval lastTime; + id __weak delegate; + POPAnimationDidStartBlock animationDidStartBlock; + POPAnimationDidReachToValueBlock animationDidReachToValueBlock; + POPAnimationCompletionBlock completionBlock; + POPAnimationDidApplyBlock animationDidApplyBlock; + NSMutableDictionary *dict; + POPAnimationTracer *tracer; + CGFloat progress; + NSInteger repeatCount; + + bool active:1; + bool paused:1; + bool removedOnCompletion:1; + + bool delegateDidStart:1; + bool delegateDidStop:1; + bool delegateDidProgress:1; + bool delegateDidApply:1; + bool delegateDidReachToValue:1; + + bool additive:1; + bool didReachToValue:1; + bool tracing:1; // corresponds to tracer started + bool userSpecifiedDynamics:1; + bool autoreverses:1; + bool repeatForever:1; + bool customFinished:1; + + _POPAnimationState(id __unsafe_unretained anim) : + self(anim), + type((POPAnimationType)0), + name(nil), + ID(0), + beginTime(0), + startTime(0), + lastTime(0), + delegate(nil), + animationDidStartBlock(nil), + animationDidReachToValueBlock(nil), + completionBlock(nil), + animationDidApplyBlock(nil), + dict(nil), + tracer(nil), + progress(0), + repeatCount(0), + active(false), + paused(true), + removedOnCompletion(true), + delegateDidStart(false), + delegateDidStop(false), + delegateDidProgress(false), + delegateDidApply(false), + delegateDidReachToValue(false), + additive(false), + didReachToValue(false), + tracing(false), + userSpecifiedDynamics(false), + autoreverses(false), + repeatForever(false), + customFinished(false) {} + + virtual ~_POPAnimationState() + { + name = nil; + dict = nil; + tracer = nil; + animationDidStartBlock = NULL; + animationDidReachToValueBlock = NULL; + completionBlock = NULL; + animationDidApplyBlock = NULL; + } + + bool isCustom() { + return kPOPAnimationCustom == type; + } + + bool isStarted() { + return 0 != startTime; + } + + id getDelegate() { + return delegate; + } + + void setDelegate(id d) { + if (d != delegate) { + delegate = d; + delegateDidStart = [d respondsToSelector:@selector(pop_animationDidStart:)]; + delegateDidStop = [d respondsToSelector:@selector(pop_animationDidStop:finished:)]; + delegateDidProgress = [d respondsToSelector:@selector(pop_animation:didReachProgress:)]; + delegateDidApply = [d respondsToSelector:@selector(pop_animationDidApply:)]; + delegateDidReachToValue = [d respondsToSelector:@selector(pop_animationDidReachToValue:)]; + } + } + + bool getPaused() { + return paused; + } + + void setPaused(bool f) { + if (f != paused) { + paused = f; + if (!paused) { + reset(false); + } + } + } + + CGFloat getProgress() { + return progress; + } + + /* returns true if started */ + bool startIfNeeded(id obj, CFTimeInterval time, CFTimeInterval offset) + { + bool started = false; + + // detect start based on time + if (0 == startTime && time >= beginTime + offset) { + + // activate & unpause + active = true; + setPaused(false); + + // note start time + startTime = lastTime = time; + started = true; + } + + // ensure values for running animation + bool running = active && !paused; + if (running) { + willRun(started, obj); + } + + // handle start + if (started) { + handleDidStart(); + } + + return started; + } + + void stop(bool removing, bool done) { + if (active) + { + // delegate progress one last time + if (done) { + delegateProgress(); + } + + if (removing) { + active = false; + } + + handleDidStop(done); + } else { + + // stopped before even started + // delegate start and stop regardless; matches CA behavior + if (!isStarted()) { + handleDidStart(); + handleDidStop(false); + } + } + + setPaused(true); + } + + virtual void handleDidStart() + { + if (delegateDidStart) { + ActionEnabler enabler; + [delegate pop_animationDidStart:self]; + } + + POPAnimationDidStartBlock block = animationDidStartBlock; + if (block != NULL) { + ActionEnabler enabler; + block(self); + } + + if (tracing) { + [tracer didStart]; + } + } + + void handleDidStop(BOOL done) + { + if (delegateDidStop) { + ActionEnabler enabler; + [delegate pop_animationDidStop:self finished:done]; + } + + // add another strong reference to completion block before callout + POPAnimationCompletionBlock block = completionBlock; + if (block != NULL) { + ActionEnabler enabler; + block(self, done); + } + + if (tracing) { + [tracer didStop:done]; + } + } + + /* virtual functions */ + virtual bool isDone() { + if (isCustom()) { + return customFinished; + } + + return false; + } + + bool advanceTime(CFTimeInterval time, id obj) { + bool advanced = false; + bool computedProgress = false; + CFTimeInterval dt = time - lastTime; + + switch (type) { + case kPOPAnimationSpring: + advanced = advance(time, dt, obj); + break; + case kPOPAnimationDecay: + advanced = advance(time, dt, obj); + break; + case kPOPAnimationBasic: { + advanced = advance(time, dt, obj); + computedProgress = true; + break; + } + case kPOPAnimationCustom: { + customFinished = [self _advance:obj currentTime:time elapsedTime:dt] ? false : true; + advanced = true; + break; + } + default: + break; + } + + if (advanced) { + + // estimate progress + if (!computedProgress) { + computeProgress(); + } + + // delegate progress + delegateProgress(); + + // update time + lastTime = time; + } + + return advanced; + } + + virtual void willRun(bool started, id obj) {} + virtual bool advance(CFTimeInterval time, CFTimeInterval dt, id obj) { return false; } + virtual void computeProgress() {} + virtual void delegateProgress() {} + + virtual void delegateApply() { + if (delegateDidApply) { + ActionEnabler enabler; + [delegate pop_animationDidApply:self]; + } + + POPAnimationDidApplyBlock block = animationDidApplyBlock; + if (block != NULL) { + ActionEnabler enabler; + block(self); + } + } + + virtual void reset(bool all) { + startTime = 0; + lastTime = 0; + } +}; + +typedef struct _POPAnimationState POPAnimationState; + + +@interface POPAnimation () +{ +@protected + struct _POPAnimationState *_state; +} + +@end + +// NSProxy extensions, for testing pursposes +@interface NSProxy (POP) +- (void)pop_addAnimation:(POPAnimation *)anim forKey:(NSString *)key; +- (void)pop_removeAllAnimations; +- (void)pop_removeAnimationForKey:(NSString *)key; +- (NSArray *)pop_animationKeys; +- (POPAnimation *)pop_animationForKey:(NSString *)key; +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimationPrivate.h b/Unit-2-Journal/Pods/pop/pop/POPAnimationPrivate.h new file mode 100644 index 0000000..c0f06c5 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimationPrivate.h @@ -0,0 +1,16 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <pop/POPAnimation.h> + +#define POP_ANIMATION_FRICTION_FOR_QC_FRICTION(qcFriction) (25.0 + (((qcFriction - 8.0) / 2.0) * (25.0 - 19.0))) +#define POP_ANIMATION_TENSION_FOR_QC_TENSION(qcTension) (194.0 + (((qcTension - 30.0) / 50.0) * (375.0 - 194.0))) + +#define QC_FRICTION_FOR_POP_ANIMATION_FRICTION(fbFriction) (8.0 + 2.0 * ((fbFriction - 25.0)/(25.0 - 19.0))) +#define QC_TENSION_FOR_POP_ANIMATION_TENSION(fbTension) (30.0 + 50.0 * ((fbTension - 194.0)/(375.0 - 194.0))) diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimationRuntime.h b/Unit-2-Journal/Pods/pop/pop/POPAnimationRuntime.h new file mode 100644 index 0000000..902c312 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimationRuntime.h @@ -0,0 +1,103 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <objc/runtime.h> + +#import <Foundation/Foundation.h> + +#import "POPVector.h" + +enum POPValueType +{ + kPOPValueUnknown = 0, + kPOPValueInteger, + kPOPValueFloat, + kPOPValuePoint, + kPOPValueSize, + kPOPValueRect, + kPOPValueEdgeInsets, + kPOPValueAffineTransform, + kPOPValueTransform, + kPOPValueRange, + kPOPValueColor, + kPOPValueSCNVector3, + kPOPValueSCNVector4, +}; + +using namespace POP; + +/** + Returns value type based on objc type description, given list of supported value types and length. + */ +extern POPValueType POPSelectValueType(const char *objctype, const POPValueType *types, size_t length); + +/** + Returns value type based on objc object, given a list of supported value types and length. + */ +extern POPValueType POPSelectValueType(id obj, const POPValueType *types, size_t length); + +/** + Array of all value types. + */ +extern const POPValueType kPOPAnimatableAllTypes[12]; + +/** + Array of all value types supported for animation. + */ +extern const POPValueType kPOPAnimatableSupportTypes[10]; + +/** + Returns a string description of a value type. + */ +extern NSString *POPValueTypeToString(POPValueType t); + +/** + Returns a mutable dictionary of weak pointer keys to weak pointer values. + */ +extern CFMutableDictionaryRef POPDictionaryCreateMutableWeakPointerToWeakPointer(NSUInteger capacity) CF_RETURNS_RETAINED; + +/** + Returns a mutable dictionary of weak pointer keys to weak pointer values. + */ +extern CFMutableDictionaryRef POPDictionaryCreateMutableWeakPointerToStrongObject(NSUInteger capacity) CF_RETURNS_RETAINED; + +/** + Box a vector. + */ +extern id POPBox(VectorConstRef vec, POPValueType type, bool force = false); + +/** + Unbox a vector. + */ +extern VectorRef POPUnbox(id value, POPValueType &type, NSUInteger &count, bool validate); + +/** + Read/write block typedefs for convenience. + */ +typedef void(^pop_animatable_read_block)(id obj, CGFloat *value); +typedef void(^pop_animatable_write_block)(id obj, const CGFloat *value); + +/** + Read object value and return a Vector4r. + */ +NS_INLINE Vector4r read_values(pop_animatable_read_block read, id obj, size_t count) +{ + Vector4r vec = Vector4r::Zero(); + if (0 == count) + return vec; + + read(obj, vec.data()); + + return vec; +} + +NS_INLINE NSString *POPStringFromBOOL(BOOL value) +{ + return value ? @"YES" : @"NO"; +} diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimationRuntime.mm b/Unit-2-Journal/Pods/pop/pop/POPAnimationRuntime.mm new file mode 100644 index 0000000..371e009 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimationRuntime.mm @@ -0,0 +1,329 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPAnimationRuntime.h" + +#import <objc/objc.h> + +#import <QuartzCore/QuartzCore.h> + +#if TARGET_OS_IPHONE +#import <UIKit/UIKit.h> +#endif + +#import "POPCGUtils.h" +#import "POPDefines.h" +#import "POPGeometry.h" +#import "POPVector.h" + +static Boolean pointerEqual(const void *ptr1, const void *ptr2) { + return ptr1 == ptr2; +} + +static CFHashCode pointerHash(const void *ptr) { + return (CFHashCode)(ptr); +} + +CFMutableDictionaryRef POPDictionaryCreateMutableWeakPointerToWeakPointer(NSUInteger capacity) +{ + CFDictionaryKeyCallBacks kcb = kCFTypeDictionaryKeyCallBacks; + + // weak, pointer keys + kcb.retain = NULL; + kcb.release = NULL; + kcb.equal = pointerEqual; + kcb.hash = pointerHash; + + CFDictionaryValueCallBacks vcb = kCFTypeDictionaryValueCallBacks; + + // weak, pointer values + vcb.retain = NULL; + vcb.release = NULL; + vcb.equal = pointerEqual; + + return CFDictionaryCreateMutable(NULL, capacity, &kcb, &vcb); +} + +CFMutableDictionaryRef POPDictionaryCreateMutableWeakPointerToStrongObject(NSUInteger capacity) +{ + CFDictionaryKeyCallBacks kcb = kCFTypeDictionaryKeyCallBacks; + + // weak, pointer keys + kcb.retain = NULL; + kcb.release = NULL; + kcb.equal = pointerEqual; + kcb.hash = pointerHash; + + // strong, object values + CFDictionaryValueCallBacks vcb = kCFTypeDictionaryValueCallBacks; + + return CFDictionaryCreateMutable(NULL, capacity, &kcb, &vcb); +} + +static bool FBCompareTypeEncoding(const char *objctype, POPValueType type) +{ + switch (type) + { + case kPOPValueFloat: + return (strcmp(objctype, @encode(float)) == 0 + || strcmp(objctype, @encode(double)) == 0 + ); + + case kPOPValuePoint: + return (strcmp(objctype, @encode(CGPoint)) == 0 +#if !TARGET_OS_IPHONE + || strcmp(objctype, @encode(NSPoint)) == 0 +#endif + ); + + case kPOPValueSize: + return (strcmp(objctype, @encode(CGSize)) == 0 +#if !TARGET_OS_IPHONE + || strcmp(objctype, @encode(NSSize)) == 0 +#endif + ); + + case kPOPValueRect: + return (strcmp(objctype, @encode(CGRect)) == 0 +#if !TARGET_OS_IPHONE + || strcmp(objctype, @encode(NSRect)) == 0 +#endif + ); + case kPOPValueEdgeInsets: +#if TARGET_OS_IPHONE + return strcmp(objctype, @encode(UIEdgeInsets)) == 0; +#else + return false; +#endif + + case kPOPValueAffineTransform: + return strcmp(objctype, @encode(CGAffineTransform)) == 0; + + case kPOPValueTransform: + return strcmp(objctype, @encode(CATransform3D)) == 0; + + case kPOPValueRange: + return strcmp(objctype, @encode(CFRange)) == 0 + || strcmp(objctype, @encode (NSRange)) == 0; + + case kPOPValueInteger: + return (strcmp(objctype, @encode(int)) == 0 + || strcmp(objctype, @encode(unsigned int)) == 0 + || strcmp(objctype, @encode(short)) == 0 + || strcmp(objctype, @encode(unsigned short)) == 0 + || strcmp(objctype, @encode(long)) == 0 + || strcmp(objctype, @encode(unsigned long)) == 0 + || strcmp(objctype, @encode(long long)) == 0 + || strcmp(objctype, @encode(unsigned long long)) == 0 + ); + + case kPOPValueSCNVector3: +#if SCENEKIT_SDK_AVAILABLE + return strcmp(objctype, @encode(SCNVector3)) == 0; +#else + return false; +#endif + + case kPOPValueSCNVector4: +#if SCENEKIT_SDK_AVAILABLE + return strcmp(objctype, @encode(SCNVector4)) == 0; +#else + return false; +#endif + + default: + return false; + } +} + +POPValueType POPSelectValueType(const char *objctype, const POPValueType *types, size_t length) +{ + if (NULL != objctype) { + for (size_t idx = 0; idx < length; idx++) { + if (FBCompareTypeEncoding(objctype, types[idx])) + return types[idx]; + } + } + return kPOPValueUnknown; +} + +POPValueType POPSelectValueType(id obj, const POPValueType *types, size_t length) +{ + if ([obj isKindOfClass:[NSValue class]]) { + return POPSelectValueType([obj objCType], types, length); + } else if (NULL != POPCGColorWithColor(obj)) { + return kPOPValueColor; + } + return kPOPValueUnknown; +} + +const POPValueType kPOPAnimatableAllTypes[12] = {kPOPValueInteger, kPOPValueFloat, kPOPValuePoint, kPOPValueSize, kPOPValueRect, kPOPValueEdgeInsets, kPOPValueAffineTransform, kPOPValueTransform, kPOPValueRange, kPOPValueColor, kPOPValueSCNVector3, kPOPValueSCNVector4}; + +const POPValueType kPOPAnimatableSupportTypes[10] = {kPOPValueInteger, kPOPValueFloat, kPOPValuePoint, kPOPValueSize, kPOPValueRect, kPOPValueEdgeInsets, kPOPValueColor, kPOPValueSCNVector3, kPOPValueSCNVector4}; + +NSString *POPValueTypeToString(POPValueType t) +{ + switch (t) { + case kPOPValueUnknown: + return @"unknown"; + case kPOPValueInteger: + return @"int"; + case kPOPValueFloat: + return @"CGFloat"; + case kPOPValuePoint: + return @"CGPoint"; + case kPOPValueSize: + return @"CGSize"; + case kPOPValueRect: + return @"CGRect"; + case kPOPValueEdgeInsets: + return @"UIEdgeInsets"; + case kPOPValueAffineTransform: + return @"CGAffineTransform"; + case kPOPValueTransform: + return @"CATransform3D"; + case kPOPValueRange: + return @"CFRange"; + case kPOPValueColor: + return @"CGColorRef"; + case kPOPValueSCNVector3: + return @"SCNVector3"; + case kPOPValueSCNVector4: + return @"SCNVector4"; + default: + return nil; + } +} + +id POPBox(VectorConstRef vec, POPValueType type, bool force) +{ + if (NULL == vec) + return nil; + + switch (type) { + case kPOPValueInteger: + case kPOPValueFloat: + return @(vec->data()[0]); + break; + case kPOPValuePoint: + return [NSValue valueWithCGPoint:vec->cg_point()]; + break; + case kPOPValueSize: + return [NSValue valueWithCGSize:vec->cg_size()]; + break; + case kPOPValueRect: + return [NSValue valueWithCGRect:vec->cg_rect()]; + break; +#if TARGET_OS_IPHONE + case kPOPValueEdgeInsets: + return [NSValue valueWithUIEdgeInsets:vec->ui_edge_insets()]; + break; +#endif + case kPOPValueColor: { + return (__bridge_transfer id)vec->cg_color(); + break; + } +#if SCENEKIT_SDK_AVAILABLE + case kPOPValueSCNVector3: { + return [NSValue valueWithSCNVector3:vec->scn_vector3()]; + break; + } + case kPOPValueSCNVector4: { + return [NSValue valueWithSCNVector4:vec->scn_vector4()]; + break; + } +#endif + default: + return force ? [NSValue valueWithCGPoint:vec->cg_point()] : nil; + break; + } +} + +static VectorRef vectorize(id value, POPValueType type) +{ + Vector *vec = NULL; + + switch (type) { + case kPOPValueInteger: + case kPOPValueFloat: +#if CGFLOAT_IS_DOUBLE + vec = Vector::new_cg_float([value doubleValue]); +#else + vec = Vector::new_cg_float([value floatValue]); +#endif + break; + case kPOPValuePoint: + vec = Vector::new_cg_point([value CGPointValue]); + break; + case kPOPValueSize: + vec = Vector::new_cg_size([value CGSizeValue]); + break; + case kPOPValueRect: + vec = Vector::new_cg_rect([value CGRectValue]); + break; +#if TARGET_OS_IPHONE + case kPOPValueEdgeInsets: + vec = Vector::new_ui_edge_insets([value UIEdgeInsetsValue]); + break; +#endif + case kPOPValueAffineTransform: + vec = Vector::new_cg_affine_transform([value CGAffineTransformValue]); + break; + case kPOPValueColor: + vec = Vector::new_cg_color(POPCGColorWithColor(value)); + break; +#if SCENEKIT_SDK_AVAILABLE + case kPOPValueSCNVector3: + vec = Vector::new_scn_vector3([value SCNVector3Value]); + break; + case kPOPValueSCNVector4: + vec = Vector::new_scn_vector4([value SCNVector4Value]); + break; +#endif + default: + break; + } + + return VectorRef(vec); +} + +VectorRef POPUnbox(id value, POPValueType &animationType, NSUInteger &count, bool validate) +{ + if (nil == value) { + count = 0; + return VectorRef(NULL); + } + + // determine type of value + POPValueType valueType = POPSelectValueType(value, kPOPAnimatableSupportTypes, POP_ARRAY_COUNT(kPOPAnimatableSupportTypes)); + + // handle unknown types + if (kPOPValueUnknown == valueType) { + NSString *valueDesc = [[value class] description]; + [NSException raise:@"Unsuported value" format:@"Animating %@ values is not supported", valueDesc]; + } + + // vectorize + VectorRef vec = vectorize(value, valueType); + + if (kPOPValueUnknown == animationType || 0 == count) { + // update animation type based on value type + animationType = valueType; + if (NULL != vec) { + count = vec->size(); + } + } else if (validate) { + // allow for mismatched types, so long as vector size matches + if (count != vec->size()) { + [NSException raise:@"Invalid value" format:@"%@ should be of type %@", value, POPValueTypeToString(animationType)]; + } + } + + return vec; +} diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimationTracer.h b/Unit-2-Journal/Pods/pop/pop/POPAnimationTracer.h new file mode 100644 index 0000000..72b26c3 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimationTracer.h @@ -0,0 +1,60 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <Foundation/Foundation.h> + +#import <pop/POPAnimationEvent.h> + +@class POPAnimation; + +/** + @abstract Tracer of animation events to fasciliate unit testing & debugging. + */ +@interface POPAnimationTracer : NSObject + +/** + @abstract Start recording events. + */ +- (void)start; + +/** + @abstract Stop recording events. + */ +- (void)stop; + +/** + @abstract Resets any recoded events. Continues recording events if already started. + */ +- (void)reset; + +/** + @abstract Property representing all recorded events. + @discussion Events are returned in order of occurence. + */ +@property (nonatomic, assign, readonly) NSArray *allEvents; + +/** + @abstract Property representing all recorded write events for convenience. + @discussion Events are returned in order of occurence. + */ +@property (nonatomic, assign, readonly) NSArray *writeEvents; + +/** + @abstract Queries for events of specified type. + @param type The type of event to return. + @returns An array of events of specified type in order of occurence. + */ +- (NSArray *)eventsWithType:(POPAnimationEventType)type; + +/** + @abstract Property indicating whether tracer should automatically log events and reset collection on animation completion. + */ +@property (nonatomic, assign) BOOL shouldLogAndResetOnCompletion; + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimationTracer.mm b/Unit-2-Journal/Pods/pop/pop/POPAnimationTracer.mm new file mode 100644 index 0000000..243fb9b --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimationTracer.mm @@ -0,0 +1,191 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPAnimationTracer.h" + +#import <QuartzCore/QuartzCore.h> + +#import "POPAnimationEventInternal.h" +#import "POPAnimationInternal.h" +#import "POPSpringAnimation.h" + +@implementation POPAnimationTracer +{ + __weak POPAnimation *_animation; + POPAnimationState *_animationState; + NSMutableArray *_events; + BOOL _animationHasVelocity; +} +@synthesize shouldLogAndResetOnCompletion = _shouldLogAndResetOnCompletion; + +static POPAnimationEvent *create_event(POPAnimationTracer *self, POPAnimationEventType type, id value = nil, bool recordAnimation = false) +{ + bool useLocalTime = 0 != self->_animationState->startTime; + CFTimeInterval time = useLocalTime + ? self->_animationState->lastTime - self->_animationState->startTime + : self->_animationState->lastTime; + + POPAnimationEvent *event; + + if (!value) { + event = [[POPAnimationEvent alloc] initWithType:type time:time]; + } else { + event = [[POPAnimationValueEvent alloc] initWithType:type time:time value:value]; + if (self->_animationHasVelocity) { + [(POPAnimationValueEvent *)event setVelocity:[(POPSpringAnimation *)self->_animation velocity]]; + } + } + + if (recordAnimation) { + event.animationDescription = [self->_animation description]; + } + + return event; +} + +- (id)initWithAnimation:(POPAnimation *)anAnim +{ + self = [super init]; + if (nil != self) { + _animation = anAnim; + _animationState = POPAnimationGetState(anAnim); + _events = [[NSMutableArray alloc] initWithCapacity:50]; + _animationHasVelocity = [anAnim respondsToSelector:@selector(velocity)]; + } + return self; +} + +- (void)readPropertyValue:(id)aValue +{ + POPAnimationEvent *event = create_event(self, kPOPAnimationEventPropertyRead, aValue); + [_events addObject:event]; +} + +- (void)writePropertyValue:(id)aValue +{ + POPAnimationEvent *event = create_event(self, kPOPAnimationEventPropertyWrite, aValue); + [_events addObject:event]; +} + +- (void)updateToValue:(id)aValue +{ + POPAnimationEvent *event = create_event(self, kPOPAnimationEventToValueUpdate, aValue); + [_events addObject:event]; +} + +- (void)updateFromValue:(id)aValue +{ + POPAnimationEvent *event = create_event(self, kPOPAnimationEventFromValueUpdate, aValue); + [_events addObject:event]; +} + +- (void)updateVelocity:(id)aValue +{ + POPAnimationEvent *event = create_event(self, kPOPAnimationEventVelocityUpdate, aValue); + [_events addObject:event]; +} + +- (void)updateSpeed:(float)aFloat +{ + POPAnimationEvent *event = create_event(self, kPOPAnimationEventSpeedUpdate, @(aFloat)); + [_events addObject:event]; +} + +- (void)updateBounciness:(float)aFloat +{ + POPAnimationEvent *event = create_event(self, kPOPAnimationEventBouncinessUpdate, @(aFloat)); + [_events addObject:event]; +} + +- (void)updateFriction:(float)aFloat +{ + POPAnimationEvent *event = create_event(self, kPOPAnimationEventFrictionUpdate, @(aFloat)); + [_events addObject:event]; +} + +- (void)updateMass:(float)aFloat +{ + POPAnimationEvent *event = create_event(self, kPOPAnimationEventMassUpdate, @(aFloat)); + [_events addObject:event]; +} + +- (void)updateTension:(float)aFloat +{ + POPAnimationEvent *event = create_event(self, kPOPAnimationEventTensionUpdate, @(aFloat)); + [_events addObject:event]; +} + +- (void)didStart +{ + POPAnimationEvent *event = create_event(self, kPOPAnimationEventDidStart, nil, true); + [_events addObject:event]; +} + +- (void)didStop:(BOOL)finished +{ + POPAnimationEvent *event = create_event(self, kPOPAnimationEventDidStop, @(finished), true); + [_events addObject:event]; + + if (_shouldLogAndResetOnCompletion) { + NSLog(@"events:%@", self.allEvents); + [self reset]; + } +} + +- (void)didReachToValue:(id)aValue +{ + POPAnimationEvent *event = create_event(self, kPOPAnimationEventDidReachToValue, aValue); + [_events addObject:event]; +} + +- (void)autoreversed +{ + POPAnimationEvent *event = create_event(self, kPOPAnimationEventAutoreversed); + [_events addObject:event]; +} + +- (void)start +{ + POPAnimationState *s = POPAnimationGetState(_animation); + s->tracing = true; +} + +- (void)stop +{ + POPAnimationState *s = POPAnimationGetState(_animation); + s->tracing = false; +} + +- (void)reset +{ + [_events removeAllObjects]; +} + +- (NSArray *)allEvents +{ + return [_events copy]; +} + +- (NSArray *)writeEvents +{ + return [self eventsWithType:kPOPAnimationEventPropertyWrite]; +} + +- (NSArray *)eventsWithType:(POPAnimationEventType)aType +{ + NSMutableArray *array = [NSMutableArray array]; + for (POPAnimationEvent *event in _events) { + if (aType == event.type) { + [array addObject:event]; + } + } + return array; +} + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimationTracerInternal.h b/Unit-2-Journal/Pods/pop/pop/POPAnimationTracerInternal.h new file mode 100644 index 0000000..00958e1 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimationTracerInternal.h @@ -0,0 +1,96 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <Foundation/Foundation.h> + +#import <pop/POPAnimationTracer.h> + +@interface POPAnimationTracer (Internal) + +/** + @abstract Designated initalizer. Pass the animation being traced. + */ +- (instancetype)initWithAnimation:(POPAnimation *)anAnim; + +/** + @abstract Records read value. + */ +- (void)readPropertyValue:(id)aValue; + +/** + @abstract Records write value. + */ +- (void)writePropertyValue:(id)aValue; + +/** + Records to value update. + */ +- (void)updateToValue:(id)aValue; + +/** + @abstract Records from value update. + */ +- (void)updateFromValue:(id)aValue; + +/** + @abstract Records from value update. + */ +- (void)updateVelocity:(id)aValue; + +/** + @abstract Records bounciness update. + */ +- (void)updateBounciness:(float)aFloat; + +/** + @abstract Records speed update. + */ +- (void)updateSpeed:(float)aFloat; + +/** + @abstract Records friction update. + */ +- (void)updateFriction:(float)aFloat; + +/** + @abstract Records mass update. + */ +- (void)updateMass:(float)aFloat; + +/** + @abstract Records tension update. + */ +- (void)updateTension:(float)aFloat; + +/** + @abstract Records did add. + */ +- (void)didAdd; + +/** + @abstract Records did start. + */ +- (void)didStart; + +/** + @abstract Records did stop. + */ +- (void)didStop:(BOOL)finished; + +/** + @abstract Records did reach to value. + */ +- (void)didReachToValue:(id)aValue; + +/** + @abstract Records when an autoreverse animation takes place. + */ +- (void)autoreversed; + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimator.h b/Unit-2-Journal/Pods/pop/pop/POPAnimator.h new file mode 100644 index 0000000..5310bed --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimator.h @@ -0,0 +1,47 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <Foundation/Foundation.h> + +@protocol POPAnimatorDelegate; + +/** + @abstract The animator class renders animations. + */ +@interface POPAnimator : NSObject + +/** + @abstract The shared animator instance. + @discussion Consumers should generally use the shared instance in lieu of creating new instances. + */ ++ (instancetype)sharedAnimator; + +/** + @abstract The optional animator delegate. + */ +@property (weak, nonatomic) id<POPAnimatorDelegate> delegate; + +@end + +/** + @abstract The animator delegate. + */ +@protocol POPAnimatorDelegate <NSObject> + +/** + @abstract Called on each frame before animation application. + */ +- (void)animatorWillAnimate:(POPAnimator *)animator; + +/** + @abstract Called on each frame after animation application. + */ +- (void)animatorDidAnimate:(POPAnimator *)animator; + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimator.mm b/Unit-2-Journal/Pods/pop/pop/POPAnimator.mm new file mode 100644 index 0000000..6b2a770 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimator.mm @@ -0,0 +1,806 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPAnimator.h" +#import "POPAnimatorPrivate.h" + +#import <list> +#import <vector> + +#if !TARGET_OS_IPHONE +#import <libkern/OSAtomic.h> +#endif + +#import <objc/objc-auto.h> + +#import <QuartzCore/QuartzCore.h> + +#import "POPAnimation.h" +#import "POPAnimationExtras.h" +#import "POPBasicAnimationInternal.h" +#import "POPDecayAnimation.h" + +using namespace std; +using namespace POP; + +#define ENABLE_LOGGING_DEBUG 0 +#define ENABLE_LOGGING_INFO 0 + +#if ENABLE_LOGGING_DEBUG +#define FBLogAnimDebug NSLog +#else +#define FBLogAnimDebug(...) +#endif + +#if ENABLE_LOGGING_INFO +#define FBLogAnimInfo NSLog +#else +#define FBLogAnimInfo(...) +#endif + +class POPAnimatorItem +{ +public: + id __weak object; + NSString *key; + POPAnimation *animation; + NSInteger refCount; + id __unsafe_unretained unretainedObject; + + POPAnimatorItem(id o, NSString *k, POPAnimation *a) POP_NOTHROW + { + object = o; + key = [k copy]; + animation = a; + refCount = 1; + unretainedObject = o; + } + + ~POPAnimatorItem() + { + } + + bool operator==(const POPAnimatorItem& o) const { + return unretainedObject == o.unretainedObject && animation == o.animation && [key isEqualToString:o.key]; + } + +}; + +typedef std::shared_ptr<POPAnimatorItem> POPAnimatorItemRef; +typedef std::shared_ptr<const POPAnimatorItem> POPAnimatorItemConstRef; + +typedef std::list<POPAnimatorItemRef> POPAnimatorItemList; +typedef POPAnimatorItemList::iterator POPAnimatorItemListIterator; +typedef POPAnimatorItemList::const_iterator POPAnimatorItemListConstIterator; + +static BOOL _disableBackgroundThread = YES; + +@interface POPAnimator () +{ +#if TARGET_OS_IPHONE + CADisplayLink *_displayLink; +#else + CVDisplayLinkRef _displayLink; + int32_t _enqueuedRender; +#endif + POPAnimatorItemList _list; + CFMutableDictionaryRef _dict; + NSMutableArray *_observers; + POPAnimatorItemList _pendingList; + CFRunLoopObserverRef _pendingListObserver; + CFTimeInterval _slowMotionStartTime; + CFTimeInterval _slowMotionLastTime; + CFTimeInterval _slowMotionAccumulator; + CFTimeInterval _beginTime; + OSSpinLock _lock; + BOOL _disableDisplayLink; +} +@end + +@implementation POPAnimator +@synthesize delegate = _delegate; +@synthesize disableDisplayLink = _disableDisplayLink; +@synthesize beginTime = _beginTime; + +#if !TARGET_OS_IPHONE +static CVReturn displayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeStamp *now, const CVTimeStamp *outputTime, CVOptionFlags flagsIn, CVOptionFlags *flagsOut, void *context) +{ + if (_disableBackgroundThread) { + __unsafe_unretained POPAnimator *pa = (__bridge POPAnimator *)context; + int32_t* enqueuedRender = &pa->_enqueuedRender; + if (*enqueuedRender == 0) { + OSAtomicIncrement32(enqueuedRender); + dispatch_async(dispatch_get_main_queue(), ^{ + [(__bridge POPAnimator*)context render]; + OSAtomicDecrement32(enqueuedRender); + }); + } + } else { + [(__bridge POPAnimator*)context render]; + } + return kCVReturnSuccess; +} +#endif + +// call while holding lock +static void updateDisplayLink(POPAnimator *self) +{ + BOOL paused = (0 == self->_observers.count && self->_list.empty()) || self->_disableDisplayLink; + +#if TARGET_OS_IPHONE + if (paused != self->_displayLink.paused) { + FBLogAnimInfo(paused ? @"pausing display link" : @"unpausing display link"); + self->_displayLink.paused = paused; + } +#else + if (paused == CVDisplayLinkIsRunning(self->_displayLink)) { + FBLogAnimInfo(paused ? @"pausing display link" : @"unpausing display link"); + if (paused) { + CVDisplayLinkStop(self->_displayLink); + } else { + CVDisplayLinkStart(self->_displayLink); + } + } +#endif +} + +static void updateAnimatable(id obj, POPPropertyAnimationState *anim, bool shouldAvoidExtraneousWrite = false) +{ + // handle user-initiated stop or pause; hault animation + if (!anim->active || anim->paused) + return; + + if (anim->hasValue()) { + pop_animatable_write_block write = anim->property.writeBlock; + if (NULL == write) + return; + + // current animation value + VectorRef currentVec = anim->currentValue(); + + if (!anim->additive) { + + // if avoiding extraneous writes and we have a read block defined + if (shouldAvoidExtraneousWrite) { + + pop_animatable_read_block read = anim->property.readBlock; + if (read) { + // compare current animation value with object value + Vector4r currentValue = currentVec->vector4r(); + Vector4r objectValue = read_values(read, obj, anim->valueCount); + if (objectValue == currentValue) { + return; + } + } + } + + // update previous values; support animation convergence + anim->previous2Vec = anim->previousVec; + anim->previousVec = currentVec; + + // write value + write(obj, currentVec->data()); + if (anim->tracing) { + [anim->tracer writePropertyValue:POPBox(currentVec, anim->valueType, true)]; + } + } else { + pop_animatable_read_block read = anim->property.readBlock; + NSCAssert(read, @"additive requires an animatable property readBlock"); + if (NULL == read) { + return; + } + + // object value + Vector4r objectValue = read_values(read, obj, anim->valueCount); + + // current value + Vector4r currentValue = currentVec->vector4r(); + + // determine animation change + if (anim->previousVec) { + Vector4r previousValue = anim->previousVec->vector4r(); + currentValue -= previousValue; + } + + // avoid writing no change + if (shouldAvoidExtraneousWrite && currentValue == Vector4r::Zero()) { + return; + } + + // add to object value + currentValue += objectValue; + + // update previous values; support animation convergence + anim->previous2Vec = anim->previousVec; + anim->previousVec = currentVec; + + // write value + write(obj, currentValue.data()); + if (anim->tracing) { + [anim->tracer writePropertyValue:POPBox(currentVec, anim->valueType, true)]; + } + } + } +} + +static void applyAnimationTime(id obj, POPAnimationState *state, CFTimeInterval time) +{ + if (!state->advanceTime(time, obj)) { + return; + } + + POPPropertyAnimationState *ps = dynamic_cast<POPPropertyAnimationState*>(state); + if (NULL != ps) { + updateAnimatable(obj, ps); + } + + state->delegateApply(); +} + +static void applyAnimationToValue(id obj, POPAnimationState *state) +{ + POPPropertyAnimationState *ps = dynamic_cast<POPPropertyAnimationState*>(state); + + if (NULL != ps) { + + // finalize progress + ps->finalizeProgress(); + + // write to value, updating only if needed + updateAnimatable(obj, ps, true); + } + + state->delegateApply(); +} + +static POPAnimation *deleteDictEntry(POPAnimator *self, id __unsafe_unretained obj, NSString *key, BOOL cleanup = YES) +{ + POPAnimation *anim = nil; + + // lock + OSSpinLockLock(&self->_lock); + + NSMutableDictionary *keyAnimationsDict = (__bridge id)CFDictionaryGetValue(self->_dict, (__bridge void *)obj); + if (keyAnimationsDict) { + + anim = keyAnimationsDict[key]; + if (anim) { + + // remove key + [keyAnimationsDict removeObjectForKey:key]; + + // cleanup empty dictionaries + if (cleanup && 0 == keyAnimationsDict.count) { + CFDictionaryRemoveValue(self->_dict, (__bridge void *)obj); + } + } + } + + // unlock + OSSpinLockUnlock(&self->_lock); + return anim; +} + +static void stopAndCleanup(POPAnimator *self, POPAnimatorItemRef item, bool shouldRemove, bool finished) +{ + // remove + if (shouldRemove) { + deleteDictEntry(self, item->unretainedObject, item->key); + } + + // stop + POPAnimationState *state = POPAnimationGetState(item->animation); + state->stop(shouldRemove, finished); + + if (shouldRemove) { + // lock + OSSpinLockLock(&self->_lock); + + // find item in list + // may have already been removed on animationDidStop: + POPAnimatorItemListIterator find_iter = find(self->_list.begin(), self->_list.end(), item); + BOOL found = find_iter != self->_list.end(); + + if (found) { + self->_list.erase(find_iter); + } + + // unlock + OSSpinLockUnlock(&self->_lock); + } +} + ++ (id)sharedAnimator +{ + static POPAnimator* _animator = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _animator = [[POPAnimator alloc] init]; + }); + return _animator; +} + ++ (BOOL)disableBackgroundThread +{ + return _disableBackgroundThread; +} + ++ (void)setDisableBackgroundThread:(BOOL)flag +{ + _disableBackgroundThread = flag; +} + +#pragma mark - Lifecycle + +- (id)init +{ + self = [super init]; + if (nil == self) return nil; + +#if TARGET_OS_IPHONE + _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(render)]; + _displayLink.paused = YES; + [_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; +#else + CVDisplayLinkCreateWithActiveCGDisplays(&_displayLink); + CVDisplayLinkSetOutputCallback(_displayLink, displayLinkCallback, (__bridge void *)self); +#endif + + _dict = POPDictionaryCreateMutableWeakPointerToStrongObject(5); + _lock = OS_SPINLOCK_INIT; + + return self; +} + +- (void)dealloc +{ +#if TARGET_OS_IPHONE + [_displayLink invalidate]; +#else + CVDisplayLinkStop(_displayLink); + CVDisplayLinkRelease(_displayLink); +#endif + [self _clearPendingListObserver]; +} + +#pragma mark - Utility + +- (void)_processPendingList +{ + // rendering pending animations + CFTimeInterval time = [self _currentRenderTime]; + [self _renderTime:(0 != _beginTime) ? _beginTime : time items:_pendingList]; + + // lock + OSSpinLockLock(&_lock); + + // clear list and observer + _pendingList.clear(); + [self _clearPendingListObserver]; + + // unlock + OSSpinLockUnlock(&_lock); +} + +- (void)_clearPendingListObserver +{ + if (_pendingListObserver) { + CFRunLoopRemoveObserver(CFRunLoopGetMain(), _pendingListObserver, kCFRunLoopCommonModes); + CFRelease(_pendingListObserver); + _pendingListObserver = NULL; + } +} + +- (void)_scheduleProcessPendingList +{ + // see WebKit for magic numbers, eg http://trac.webkit.org/changeset/166540 + static const CFIndex CATransactionCommitRunLoopOrder = 2000000; + static const CFIndex POPAnimationApplyRunLoopOrder = CATransactionCommitRunLoopOrder - 1; + + // lock + OSSpinLockLock(&_lock); + + if (!_pendingListObserver) { + __weak POPAnimator *weakSelf = self; + + _pendingListObserver = CFRunLoopObserverCreateWithHandler(kCFAllocatorDefault, kCFRunLoopBeforeWaiting | kCFRunLoopExit, false, POPAnimationApplyRunLoopOrder, ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) { + [weakSelf _processPendingList]; + }); + + if (_pendingListObserver) { + CFRunLoopAddObserver(CFRunLoopGetMain(), _pendingListObserver, kCFRunLoopCommonModes); + } + } + + // unlock + OSSpinLockUnlock(&_lock); +} + +- (void)_renderTime:(CFTimeInterval)time items:(std::list<POPAnimatorItemRef>)items +{ + // begin transaction with actions disabled + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + + // notify delegate + __strong __typeof__(_delegate) delegate = _delegate; + [delegate animatorWillAnimate:self]; + + // lock + OSSpinLockLock(&_lock); + + // count active animations + const NSUInteger count = items.size(); + if (0 == count) { + // unlock + OSSpinLockUnlock(&_lock); + } else { + // copy list into vector + std::vector<POPAnimatorItemRef> vector{ items.begin(), items.end() }; + + // unlock + OSSpinLockUnlock(&_lock); + + for (auto item : vector) { + [self _renderTime:time item:item]; + } + } + + // notify observers + for (id observer in self.observers) { + [observer animatorDidAnimate:(id)self]; + } + + // lock + OSSpinLockLock(&_lock); + + // update display link + updateDisplayLink(self); + + // unlock + OSSpinLockUnlock(&_lock); + + // notify delegate and commit + [delegate animatorDidAnimate:self]; + [CATransaction commit]; +} + +- (void)_renderTime:(CFTimeInterval)time item:(POPAnimatorItemRef)item +{ + id obj = item->object; + POPAnimation *anim = item->animation; + POPAnimationState *state = POPAnimationGetState(anim); + + if (nil == obj) { + // object exists not; stop animating + NSAssert(item->unretainedObject, @"object should exist"); + stopAndCleanup(self, item, true, false); + } else { + + // start if needed + state->startIfNeeded(obj, time, _slowMotionAccumulator); + + // only run active, not paused animations + if (state->active && !state->paused) { + // object exists; animate + applyAnimationTime(obj, state, time); + + FBLogAnimDebug(@"time:%f running:%@", time, item->animation); + if (state->isDone()) { + // set end value + applyAnimationToValue(obj, state); + + state->repeatCount--; + if (state->repeatForever || state->repeatCount > 0) { + if ([anim isKindOfClass:[POPPropertyAnimation class]]) { + POPPropertyAnimation *propAnim = (POPPropertyAnimation *)anim; + id oldFromValue = propAnim.fromValue; + propAnim.fromValue = propAnim.toValue; + + if (state->autoreverses) { + if (state->tracing) { + [state->tracer autoreversed]; + } + + if (state->type == kPOPAnimationDecay) { + POPDecayAnimation *decayAnimation = (POPDecayAnimation *)propAnim; + decayAnimation.velocity = [decayAnimation reversedVelocity]; + } else { + propAnim.toValue = oldFromValue; + } + } else { + if (state->type == kPOPAnimationDecay) { + POPDecayAnimation *decayAnimation = (POPDecayAnimation *)propAnim; + id originalVelocity = decayAnimation.originalVelocity; + decayAnimation.velocity = originalVelocity; + } else { + propAnim.fromValue = oldFromValue; + } + } + } + + state->stop(NO, NO); + state->reset(true); + + state->startIfNeeded(obj, time, _slowMotionAccumulator); + } else { + stopAndCleanup(self, item, state->removedOnCompletion, YES); + } + } + } + } +} + +#pragma mark - API + +- (NSArray *)observers +{ + // lock + OSSpinLockLock(&_lock); + + // get observers + NSArray *observers = 0 != _observers.count ? [_observers copy] : nil; + + // unlock + OSSpinLockUnlock(&_lock); + return observers; +} + +- (void)addAnimation:(POPAnimation *)anim forObject:(id)obj key:(NSString *)key +{ + if (!anim || !obj) { + return; + } + + // support arbitrarily many nil keys + if (!key) { + key = [[NSUUID UUID] UUIDString]; + } + + // lock + OSSpinLockLock(&_lock); + + // get key, animation dict associated with object + NSMutableDictionary *keyAnimationDict = (__bridge id)CFDictionaryGetValue(_dict, (__bridge void *)obj); + + // update associated animation state + if (nil == keyAnimationDict) { + keyAnimationDict = [NSMutableDictionary dictionary]; + CFDictionarySetValue(_dict, (__bridge void *)obj, (__bridge void *)keyAnimationDict); + } else { + // if the animation instance already exists, avoid cancelling only to restart + POPAnimation *existingAnim = keyAnimationDict[key]; + if (existingAnim) { + // unlock + OSSpinLockUnlock(&_lock); + + if (existingAnim == anim) { + return; + } + [self removeAnimationForObject:obj key:key cleanupDict:NO]; + + // lock + OSSpinLockLock(&_lock); + } + } + keyAnimationDict[key] = anim; + + // create entry after potential removal + POPAnimatorItemRef item(new POPAnimatorItem(obj, key, anim)); + + // add to list and pending list + _list.push_back(item); + _pendingList.push_back(item); + + // support animation re-use, reset all animation state + POPAnimationGetState(anim)->reset(true); + + // update display link + updateDisplayLink(self); + + // unlock + OSSpinLockUnlock(&_lock); + + // schedule runloop processing of pending animations + [self _scheduleProcessPendingList]; +} + +- (void)removeAllAnimationsForObject:(id)obj +{ + // lock + OSSpinLockLock(&_lock); + + NSArray *animations = [(__bridge id)CFDictionaryGetValue(_dict, (__bridge void *)obj) allValues]; + CFDictionaryRemoveValue(_dict, (__bridge void *)obj); + + // unlock + OSSpinLockUnlock(&_lock); + + if (0 == animations.count) { + return; + } + + NSHashTable *animationSet = [[NSHashTable alloc] initWithOptions:NSHashTableObjectPointerPersonality capacity:animations.count]; + for (id animation in animations) { + [animationSet addObject:animation]; + } + + // lock + OSSpinLockLock(&_lock); + + POPAnimatorItemRef item; + for (auto iter = _list.begin(); iter != _list.end();) { + item = *iter; + if(![animationSet containsObject:item->animation]) { + iter++; + } else { + iter = _list.erase(iter); + } + } + + // unlock + OSSpinLockUnlock(&_lock); + + for (POPAnimation *anim in animations) { + POPAnimationState *state = POPAnimationGetState(anim); + state->stop(true, !state->active); + } +} + +- (void)removeAnimationForObject:(id)obj key:(NSString *)key cleanupDict:(BOOL)cleanupDict +{ + POPAnimation *anim = deleteDictEntry(self, obj, key, cleanupDict); + if (nil == anim) { + return; + } + + // lock + OSSpinLockLock(&_lock); + + // remove from list + POPAnimatorItemRef item; + for (auto iter = _list.begin(); iter != _list.end();) { + item = *iter; + if(anim == item->animation) { + _list.erase(iter); + break; + } else { + iter++; + } + } + + // remove from pending list + for (auto iter = _pendingList.begin(); iter != _pendingList.end();) { + item = *iter; + if(anim == item->animation) { + _pendingList.erase(iter); + break; + } else { + iter++; + } + } + + // unlock + OSSpinLockUnlock(&_lock); + + // stop animation and callout + POPAnimationState *state = POPAnimationGetState(anim); + state->stop(true, (!state->active && !state->paused)); +} + +- (void)removeAnimationForObject:(id)obj key:(NSString *)key +{ + [self removeAnimationForObject:obj key:key cleanupDict:YES]; +} + +- (NSArray *)animationKeysForObject:(id)obj +{ + // lock + OSSpinLockLock(&_lock); + + // get keys + NSArray *keys = [(__bridge id)CFDictionaryGetValue(_dict, (__bridge void *)obj) allKeys]; + + // unlock + OSSpinLockUnlock(&_lock); + return keys; +} + +- (id)animationForObject:(id)obj key:(NSString *)key +{ + // lock + OSSpinLockLock(&_lock); + + // lookup animation + NSDictionary *keyAnimationsDict = (__bridge id)CFDictionaryGetValue(_dict, (__bridge void *)obj); + POPAnimation *animation = keyAnimationsDict[key]; + + // unlock + OSSpinLockUnlock(&_lock); + return animation; +} + +- (CFTimeInterval)_currentRenderTime +{ + CFTimeInterval time = CACurrentMediaTime(); + +#if TARGET_IPHONE_SIMULATOR + // support slow-motion animations + time += _slowMotionAccumulator; + float f = POPAnimationDragCoefficient(); + + if (f > 1.0) { + if (!_slowMotionStartTime) { + _slowMotionStartTime = time; + } else { + time = (time - _slowMotionStartTime) / f + _slowMotionStartTime; + _slowMotionLastTime = time; + } + } else if (_slowMotionStartTime) { + CFTimeInterval dt = (_slowMotionLastTime - time); + time += dt; + _slowMotionAccumulator += dt; + _slowMotionStartTime = 0; + } +#endif + + return time; +} + +- (void)render +{ + CFTimeInterval time = [self _currentRenderTime]; + [self renderTime:time]; +} + +- (void)renderTime:(CFTimeInterval)time +{ + [self _renderTime:time items:_list]; +} + +- (void)addObserver:(id<POPAnimatorObserving>)observer +{ + NSAssert(nil != observer, @"attempting to add nil %@ observer", self); + if (nil == observer) { + return; + } + + // lock + OSSpinLockLock(&_lock); + + if (!_observers) { + // use ordered collection for deterministic callout + _observers = [[NSMutableArray alloc] initWithCapacity:1]; + } + + [_observers addObject:observer]; + updateDisplayLink(self); + + // unlock + OSSpinLockUnlock(&_lock); +} + +- (void)removeObserver:(id<POPAnimatorObserving>)observer +{ + NSAssert(nil != observer, @"attempting to remove nil %@ observer", self); + if (nil == observer) { + return; + } + + // lock + OSSpinLockLock(&_lock); + + [_observers removeObject:observer]; + updateDisplayLink(self); + + // unlock + OSSpinLockUnlock(&_lock); +} + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPAnimatorPrivate.h b/Unit-2-Journal/Pods/pop/pop/POPAnimatorPrivate.h new file mode 100644 index 0000000..5fba912 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPAnimatorPrivate.h @@ -0,0 +1,68 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <pop/POPAnimator.h> + +@class POPAnimation; + +@protocol POPAnimatorObserving <NSObject> +@required + +/** + @abstract Called on each observer after animator has advanced. Core Animation actions are disabled by default. + */ +- (void)animatorDidAnimate:(POPAnimator *)animator; + +@end + +@interface POPAnimator () + +#if !TARGET_OS_IPHONE +/** + Determines whether or not to use a high priority background thread for animation updates. Using a background thread can result in faster, more responsive updates, but may be less compatible. Defaults to YES. + */ ++ (BOOL)disableBackgroundThread; ++ (void)setDisableBackgroundThread:(BOOL)flag; +#endif + +/** + Used for externally driven animator instances. + */ +@property (assign, nonatomic) BOOL disableDisplayLink; + +/** + Time used when starting animations. Defaults to 0 meaning current media time is used. Exposed for unit testing. + */ +@property (assign, nonatomic) CFTimeInterval beginTime; + +/** + Exposed for unit testing. + */ +- (void)renderTime:(CFTimeInterval)time; + +/** + Funnel methods for category additions. + */ +- (void)addAnimation:(POPAnimation *)anim forObject:(id)obj key:(NSString *)key; +- (void)removeAllAnimationsForObject:(id)obj; +- (void)removeAnimationForObject:(id)obj key:(NSString *)key; +- (NSArray *)animationKeysForObject:(id)obj; +- (POPAnimation *)animationForObject:(id)obj key:(NSString *)key; + +/** + @abstract Add an animator observer. Observer will be notified of each subsequent animator advance until removal. + */ +- (void)addObserver:(id<POPAnimatorObserving>)observer; + +/** + @abstract Remove an animator observer. + */ +- (void)removeObserver:(id<POPAnimatorObserving>)observer; + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPBasicAnimation.h b/Unit-2-Journal/Pods/pop/pop/POPBasicAnimation.h new file mode 100644 index 0000000..ce2e23a --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPBasicAnimation.h @@ -0,0 +1,71 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <pop/POPPropertyAnimation.h> + +/** + @abstract A concrete basic animation class. + @discussion Animation is achieved through interpolation. + */ +@interface POPBasicAnimation : POPPropertyAnimation + +/** + @abstract The designated initializer. + @returns An instance of a basic animation. + */ ++ (instancetype)animation; + +/** + @abstract Convenience initializer that returns an animation with animatable property of name. + @param name The name of the animatable property. + @returns An instance of a basic animation configured with specified animatable property. + */ ++ (instancetype)animationWithPropertyNamed:(NSString *)name; + +/** + @abstract Convenience constructor. + @returns Returns a basic animation with kCAMediaTimingFunctionDefault timing function. + */ ++ (instancetype)defaultAnimation; + +/** + @abstract Convenience constructor. + @returns Returns a basic animation with kCAMediaTimingFunctionLinear timing function. + */ ++ (instancetype)linearAnimation; + +/** + @abstract Convenience constructor. + @returns Returns a basic animation with kCAMediaTimingFunctionEaseIn timing function. + */ ++ (instancetype)easeInAnimation; + +/** + @abstract Convenience constructor. + @returns Returns a basic animation with kCAMediaTimingFunctionEaseOut timing function. + */ ++ (instancetype)easeOutAnimation; + +/** + @abstract Convenience constructor. + @returns Returns a basic animation with kCAMediaTimingFunctionEaseInEaseOut timing function. + */ ++ (instancetype)easeInEaseOutAnimation; + +/** + @abstract The duration in seconds. Defaults to 0.4. + */ +@property (assign, nonatomic) CFTimeInterval duration; + +/** + @abstract A timing function defining the pacing of the animation. Defaults to nil indicating pacing according to kCAMediaTimingFunctionDefault. + */ +@property (strong, nonatomic) CAMediaTimingFunction *timingFunction; + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPBasicAnimation.mm b/Unit-2-Journal/Pods/pop/pop/POPBasicAnimation.mm new file mode 100644 index 0000000..2843c99 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPBasicAnimation.mm @@ -0,0 +1,106 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPBasicAnimationInternal.h" + +@implementation POPBasicAnimation + +#undef __state +#define __state ((POPBasicAnimationState *)_state) + +#pragma mark - Lifecycle + ++ (instancetype)animation +{ + return [[self alloc] init]; +} + ++ (instancetype)animationWithPropertyNamed:(NSString *)aName +{ + POPBasicAnimation *anim = [self animation]; + anim.property = [POPAnimatableProperty propertyWithName:aName]; + return anim; +} + +- (void)_initState +{ + _state = new POPBasicAnimationState(self); +} + ++ (instancetype)linearAnimation +{ + POPBasicAnimation *anim = [self animation]; + anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; + return anim; +} + ++ (instancetype)easeInAnimation +{ + POPBasicAnimation *anim = [self animation]; + anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; + return anim; +} + ++ (instancetype)easeOutAnimation +{ + POPBasicAnimation *anim = [self animation]; + anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; + return anim; +} + ++ (instancetype)easeInEaseOutAnimation +{ + POPBasicAnimation *anim = [self animation]; + anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + return anim; +} + ++ (instancetype)defaultAnimation +{ + POPBasicAnimation *anim = [self animation]; + anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]; + return anim; +} + +- (id)init +{ + return [self _init]; +} + +#pragma mark - Properties + +DEFINE_RW_PROPERTY(POPBasicAnimationState, duration, setDuration:, CFTimeInterval); +DEFINE_RW_PROPERTY_OBJ(POPBasicAnimationState, timingFunction, setTimingFunction:, CAMediaTimingFunction*, __state->updatedTimingFunction();); + +#pragma mark - Utility + +- (void)_appendDescription:(NSMutableString *)s debug:(BOOL)debug +{ + [super _appendDescription:s debug:debug]; + if (__state->duration) + [s appendFormat:@"; duration = %f", __state->duration]; +} + +@end + +@implementation POPBasicAnimation (NSCopying) + +- (instancetype)copyWithZone:(NSZone *)zone { + + POPBasicAnimation *copy = [super copyWithZone:zone]; + + if (copy) { + copy.duration = self.duration; + copy.timingFunction = self.timingFunction; // not a 'copy', but timing functions are publicly immutable. + } + + return copy; +} + +@end \ No newline at end of file diff --git a/Unit-2-Journal/Pods/pop/pop/POPBasicAnimationInternal.h b/Unit-2-Journal/Pods/pop/pop/POPBasicAnimationInternal.h new file mode 100644 index 0000000..1027670 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPBasicAnimationInternal.h @@ -0,0 +1,97 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPBasicAnimation.h" + +#import "POPPropertyAnimationInternal.h" + +// default animation duration +static CGFloat const kPOPAnimationDurationDefault = 0.4; + +// progress threshold for computing done +static CGFloat const kPOPProgressThreshold = 1e-6; + +static void interpolate(POPValueType valueType, NSUInteger count, const CGFloat *fromVec, const CGFloat *toVec, CGFloat *outVec, CGFloat p) +{ + switch (valueType) { + case kPOPValueInteger: + case kPOPValueFloat: + case kPOPValuePoint: + case kPOPValueSize: + case kPOPValueRect: + case kPOPValueEdgeInsets: + case kPOPValueColor: + POPInterpolateVector(count, outVec, fromVec, toVec, p); + break; + default: + NSCAssert(false, @"unhandled type %d", valueType); + break; + } +} + +struct _POPBasicAnimationState : _POPPropertyAnimationState +{ + CAMediaTimingFunction *timingFunction; + double timingControlPoints[4]; + CFTimeInterval duration; + CFTimeInterval timeProgress; + + _POPBasicAnimationState(id __unsafe_unretained anim) : _POPPropertyAnimationState(anim), + timingFunction(nil), + timingControlPoints{0.}, + duration(kPOPAnimationDurationDefault), + timeProgress(0.) + { + type = kPOPAnimationBasic; + } + + bool isDone() { + if (_POPPropertyAnimationState::isDone()) { + return true; + } + return timeProgress + kPOPProgressThreshold >= 1.; + } + + void updatedTimingFunction() + { + float vec[4] = {0.}; + [timingFunction getControlPointAtIndex:1 values:&vec[0]]; + [timingFunction getControlPointAtIndex:2 values:&vec[2]]; + for (NSUInteger idx = 0; idx < POP_ARRAY_COUNT(vec); idx++) { + timingControlPoints[idx] = vec[idx]; + } + } + + bool advance(CFTimeInterval time, CFTimeInterval dt, id obj) { + // default timing function + if (!timingFunction) { + ((POPBasicAnimation *)self).timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]; + } + + // solve for normalized time, aka progresss [0, 1] + CGFloat p = 1.0f; + if (duration > 0.0f) { + // cap local time to duration + CFTimeInterval t = MIN(time - startTime, duration) / duration; + p = POPTimingFunctionSolve(timingControlPoints, t, SOLVE_EPS(duration)); + timeProgress = t; + } else { + timeProgress = 1.; + } + + // interpolate and advance + interpolate(valueType, valueCount, fromVec->data(), toVec->data(), currentVec->data(), p); + progress = p; + clampCurrentValue(); + + return true; + } +}; + +typedef struct _POPBasicAnimationState POPBasicAnimationState; diff --git a/Unit-2-Journal/Pods/pop/pop/POPCGUtils.h b/Unit-2-Journal/Pods/pop/pop/POPCGUtils.h new file mode 100644 index 0000000..c843947 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPCGUtils.h @@ -0,0 +1,152 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <CoreGraphics/CoreGraphics.h> + +#if TARGET_OS_IPHONE +#import <UIKit/UIKit.h> +#else +#import <AppKit/AppKit.h> +#endif + +#import "POPDefines.h" + +#if SCENEKIT_SDK_AVAILABLE +#import <SceneKit/SceneKit.h> +#endif + +POP_EXTERN_C_BEGIN + +NS_INLINE CGPoint values_to_point(const CGFloat values[]) +{ + return CGPointMake(values[0], values[1]); +} + +NS_INLINE CGSize values_to_size(const CGFloat values[]) +{ + return CGSizeMake(values[0], values[1]); +} + +NS_INLINE CGRect values_to_rect(const CGFloat values[]) +{ + return CGRectMake(values[0], values[1], values[2], values[3]); +} + +#if SCENEKIT_SDK_AVAILABLE +NS_INLINE SCNVector3 values_to_vec3(const CGFloat values[]) +{ + return SCNVector3Make(values[0], values[1], values[2]); +} + +NS_INLINE SCNVector4 values_to_vec4(const CGFloat values[]) +{ + return SCNVector4Make(values[0], values[1], values[2], values[3]); +} +#endif + +#if TARGET_OS_IPHONE + +NS_INLINE UIEdgeInsets values_to_edge_insets(const CGFloat values[]) +{ + return UIEdgeInsetsMake(values[0], values[1], values[2], values[3]); +} + +#endif + +NS_INLINE void values_from_point(CGFloat values[], CGPoint p) +{ + values[0] = p.x; + values[1] = p.y; +} + +NS_INLINE void values_from_size(CGFloat values[], CGSize s) +{ + values[0] = s.width; + values[1] = s.height; +} + +NS_INLINE void values_from_rect(CGFloat values[], CGRect r) +{ + values[0] = r.origin.x; + values[1] = r.origin.y; + values[2] = r.size.width; + values[3] = r.size.height; +} + +#if SCENEKIT_SDK_AVAILABLE +NS_INLINE void values_from_vec3(CGFloat values[], SCNVector3 v) +{ + values[0] = v.x; + values[1] = v.y; + values[2] = v.z; +} + +NS_INLINE void values_from_vec4(CGFloat values[], SCNVector4 v) +{ + values[0] = v.x; + values[1] = v.y; + values[2] = v.z; + values[3] = v.w; +} +#endif + +#if TARGET_OS_IPHONE + +NS_INLINE void values_from_edge_insets(CGFloat values[], UIEdgeInsets i) +{ + values[0] = i.top; + values[1] = i.left; + values[2] = i.bottom; + values[3] = i.right; +} + +#endif + +/** + Takes a CGColorRef and converts it into RGBA components, if necessary. + */ +extern void POPCGColorGetRGBAComponents(CGColorRef color, CGFloat components[]); + +/** + Takes RGBA components and returns a CGColorRef. + */ +extern CGColorRef POPCGColorRGBACreate(const CGFloat components[]) CF_RETURNS_RETAINED; + +/** + Takes a color reference and returns a CGColor. + */ +extern CGColorRef POPCGColorWithColor(id color) CF_RETURNS_NOT_RETAINED; + +#if TARGET_OS_IPHONE + +/** + Takes a UIColor and converts it into RGBA components, if necessary. + */ +extern void POPUIColorGetRGBAComponents(UIColor *color, CGFloat components[]); + +/** + Takes RGBA components and returns a UIColor. + */ +extern UIColor *POPUIColorRGBACreate(const CGFloat components[]) NS_RETURNS_RETAINED; + +#else + +/** + Takes a NSColor and converts it into RGBA components, if necessary. + */ +extern void POPNSColorGetRGBAComponents(NSColor *color, CGFloat components[]); + +/** + Takes RGBA components and returns a NSColor. + */ +extern NSColor *POPNSColorRGBACreate(const CGFloat components[]) NS_RETURNS_RETAINED; + +#endif + +POP_EXTERN_C_END diff --git a/Unit-2-Journal/Pods/pop/pop/POPCGUtils.mm b/Unit-2-Journal/Pods/pop/pop/POPCGUtils.mm new file mode 100644 index 0000000..72a2d36 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPCGUtils.mm @@ -0,0 +1,150 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPCGUtils.h" + +#import <objc/runtime.h> + +void POPCGColorGetRGBAComponents(CGColorRef color, CGFloat components[]) +{ + if (color) { + const CGFloat *colors = CGColorGetComponents(color); + size_t count = CGColorGetNumberOfComponents(color); + + if (4 == count) { + // RGB colorspace + components[0] = colors[0]; + components[1] = colors[1]; + components[2] = colors[2]; + components[3] = colors[3]; + } else if (2 == count) { + // Grey colorspace + components[0] = components[1] = components[2] = colors[0]; + components[3] = colors[1]; + } else { + // Use CI to convert + CIColor *ciColor = [CIColor colorWithCGColor:color]; + components[0] = ciColor.red; + components[1] = ciColor.green; + components[2] = ciColor.blue; + components[3] = ciColor.alpha; + } + } else { + memset(components, 0, 4 * sizeof(components[0])); + } +} + +CGColorRef POPCGColorRGBACreate(const CGFloat components[]) +{ +#if TARGET_OS_IPHONE + CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB(); + CGColorRef color = CGColorCreate(space, components); + CGColorSpaceRelease(space); + return color; +#else + return CGColorCreateGenericRGB(components[0], components[1], components[2], components[3]); +#endif +} + +CGColorRef POPCGColorWithColor(id color) +{ + if (CFGetTypeID((__bridge CFTypeRef)color) == CGColorGetTypeID()) { + return ((__bridge CGColorRef)color); + } +#if TARGET_OS_IPHONE + else if ([color isKindOfClass:[UIColor class]]) { + return [color CGColor]; + } +#else + else if ([color isKindOfClass:[NSColor class]]) { + // -[NSColor CGColor] is only supported since OSX 10.8+ + if ([color respondsToSelector:@selector(CGColor)]) { + return [color CGColor]; + } + + /* + * Otherwise create a CGColorRef manually. + * + * The original accessor is (or would be) declared as: + * @property(readonly) CGColorRef CGColor; + * - (CGColorRef)CGColor NS_RETURNS_INNER_POINTER CF_RETURNS_NOT_RETAINED; + * + * (Please note that OSX' accessor is atomic, while iOS' isn't.) + * + * The access to the NSColor object must thus be synchronized + * and the CGColorRef be stored as an associated object, + * to return a reference which doesn't need to be released manually. + */ + @synchronized(color) { + static const void* key = &key; + + CGColorRef colorRef = (__bridge CGColorRef)objc_getAssociatedObject(color, key); + + if (!colorRef) { + size_t numberOfComponents = [color numberOfComponents]; + CGFloat components[numberOfComponents]; + CGColorSpaceRef colorSpace = [[color colorSpace] CGColorSpace]; + + [color getComponents:components]; + + colorRef = CGColorCreate(colorSpace, components); + + objc_setAssociatedObject(color, key, (__bridge id)colorRef, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + CGColorRelease(colorRef); + } + + return colorRef; + } + } +#endif + return nil; +} + +#if TARGET_OS_IPHONE + +void POPUIColorGetRGBAComponents(UIColor *color, CGFloat components[]) +{ + return POPCGColorGetRGBAComponents(POPCGColorWithColor(color), components); +} + +UIColor *POPUIColorRGBACreate(const CGFloat components[]) +{ + CGColorRef colorRef = POPCGColorRGBACreate(components); + UIColor *color = [[UIColor alloc] initWithCGColor:colorRef]; + CGColorRelease(colorRef); + return color; +} + +#else + +void POPNSColorGetRGBAComponents(NSColor *color, CGFloat components[]) +{ + return POPCGColorGetRGBAComponents(POPCGColorWithColor(color), components); +} + +NSColor *POPNSColorRGBACreate(const CGFloat components[]) +{ + CGColorRef colorRef = POPCGColorRGBACreate(components); + NSColor *color = nil; + + if (colorRef) { + if ([NSColor respondsToSelector:@selector(colorWithCGColor:)]) { + color = [NSColor colorWithCGColor:colorRef]; + } else { + color = [NSColor colorWithCIColor:[CIColor colorWithCGColor:colorRef]]; + } + + CGColorRelease(colorRef); + } + + return color; +} + +#endif + diff --git a/Unit-2-Journal/Pods/pop/pop/POPCustomAnimation.h b/Unit-2-Journal/Pods/pop/pop/POPCustomAnimation.h new file mode 100644 index 0000000..501a755 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPCustomAnimation.h @@ -0,0 +1,46 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <pop/POPAnimation.h> + +@class POPCustomAnimation; + +/** + @abstract POPCustomAnimationBlock is the callback block of a custom animation. + @discussion This block will be executed for each animation frame and should update the property or properties being animated based on current timing. + @param target The object being animated. Reference the passed in target to help avoid retain loops. + @param animation The custom animation instance. Use to determine the current and elapsed time since last callback. Reference the passed in animation to help avoid retain loops. + @return Flag indicating whether the animation should continue animating. Return NO to indicate animation is done. + */ +typedef BOOL (^POPCustomAnimationBlock)(id target, POPCustomAnimation *animation); + +/** + @abstract POPCustomAnimation is a concrete animation subclass for custom animations. + */ +@interface POPCustomAnimation : POPAnimation + +/** +@abstract Creates and returns an initialized custom animation instance. +@discussion This is the designated initializer. +@param block The custom animation callback block. See {@ref POPCustomAnimationBlock}. +@return The initialized custom animation instance. +*/ ++ (instancetype)animationWithBlock:(POPCustomAnimationBlock)block; + +/** + @abstract The current animation time at time of callback. + */ +@property (readonly, nonatomic) CFTimeInterval currentTime; + +/** + @abstract The elapsed animation time since last callback. + */ +@property (readonly, nonatomic) CFTimeInterval elapsedTime; + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPCustomAnimation.mm b/Unit-2-Journal/Pods/pop/pop/POPCustomAnimation.mm new file mode 100644 index 0000000..8cb7913 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPCustomAnimation.mm @@ -0,0 +1,75 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPAnimationInternal.h" + +#import "POPCustomAnimation.h" + +@interface POPCustomAnimation () +@property (nonatomic, copy) POPCustomAnimationBlock animate; +@end + +@implementation POPCustomAnimation +@synthesize currentTime = _currentTime; +@synthesize elapsedTime = _elapsedTime; +@synthesize animate = _animate; + ++ (instancetype)animationWithBlock:(BOOL(^)(id target, POPCustomAnimation *))block +{ + POPCustomAnimation *b = [[self alloc] _init]; + b.animate = block; + return b; +} + +- (id)_init +{ + self = [super _init]; + if (nil != self) { + _state->type = kPOPAnimationCustom; + } + return self; +} + +- (CFTimeInterval)beginTime +{ + POPAnimationState *s = POPAnimationGetState(self); + return s->startTime > 0 ? s->startTime : s->beginTime; +} + +- (BOOL)_advance:(id)object currentTime:(CFTimeInterval)currentTime elapsedTime:(CFTimeInterval)elapsedTime +{ + _currentTime = currentTime; + _elapsedTime = elapsedTime; + return _animate(object, self); +} + +- (void)_appendDescription:(NSMutableString *)s debug:(BOOL)debug +{ + [s appendFormat:@"; elapsedTime = %f; currentTime = %f;", _elapsedTime, _currentTime]; +} + +@end + +/** + * Note that only the animate block is copied, but not the current/elapsed times + */ +@implementation POPCustomAnimation (NSCopying) + +- (instancetype)copyWithZone:(NSZone *)zone { + + POPCustomAnimation *copy = [super copyWithZone:zone]; + + if (copy) { + copy.animate = self.animate; + } + + return copy; +} + +@end \ No newline at end of file diff --git a/Unit-2-Journal/Pods/pop/pop/POPDecayAnimation.h b/Unit-2-Journal/Pods/pop/pop/POPDecayAnimation.h new file mode 100644 index 0000000..92c6b60 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPDecayAnimation.h @@ -0,0 +1,66 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <pop/POPPropertyAnimation.h> + +/** + @abstract A concrete decay animation class. + @discussion Animation is achieved through gradual decay of animation value. + */ +@interface POPDecayAnimation : POPPropertyAnimation + +/** + @abstract The designated initializer. + @returns An instance of a decay animation. + */ ++ (instancetype)animation; + +/** + @abstract Convenience initializer that returns an animation with animatable property of name. + @param name The name of the animatable property. + @returns An instance of a decay animation configured with specified animatable property. + */ ++ (instancetype)animationWithPropertyNamed:(NSString *)name; + +/** + @abstract The current velocity value. + @discussion Set before animation start to account for initial velocity. Expressed in change of value units per second. The only POPValueTypes supported for velocity are: kPOPValuePoint, kPOPValueInteger, kPOPValueFloat, kPOPValueRect, and kPOPValueSize. + */ +@property (copy, nonatomic) id velocity; + +/** + @abstract The original velocity value. + @discussion Since the velocity property is modified as the animation progresses, this property stores the original, passed in velocity to support autoreverse and repeatCount. + */ +@property (copy, nonatomic, readonly) id originalVelocity; + +/** + @abstract The deceleration factor. + @discussion Values specifies should be in the range [0, 1]. Lower values results in faster deceleration. Defaults to 0.998. + */ +@property (assign, nonatomic) CGFloat deceleration; + +/** + @abstract The expected duration. + @discussion Derived based on input velocity and deceleration values. + */ +@property (readonly, assign, nonatomic) CFTimeInterval duration; + +/** + The to value is derived based on input velocity and deceleration. + */ +- (void)setToValue:(id)toValue NS_UNAVAILABLE; + +/** + @abstract The reversed velocity. + @discussion The reversed velocity based on the originalVelocity when the animation was set up. + */ +- (id)reversedVelocity; + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPDecayAnimation.mm b/Unit-2-Journal/Pods/pop/pop/POPDecayAnimation.mm new file mode 100644 index 0000000..4698fd0 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPDecayAnimation.mm @@ -0,0 +1,203 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPDecayAnimationInternal.h" + +#if TARGET_OS_IPHONE +#import <UIKit/UIKit.h> +#endif + +const POPValueType supportedVelocityTypes[6] = { kPOPValuePoint, kPOPValueInteger, kPOPValueFloat, kPOPValueRect, kPOPValueSize, kPOPValueEdgeInsets }; + +@implementation POPDecayAnimation + +#pragma mark - Lifecycle + +#undef __state +#define __state ((POPDecayAnimationState *)_state) + ++ (instancetype)animation +{ + return [[self alloc] init]; +} + ++ (instancetype)animationWithPropertyNamed:(NSString *)aName +{ + POPDecayAnimation *anim = [self animation]; + anim.property = [POPAnimatableProperty propertyWithName:aName]; + return anim; +} + +- (id)init +{ + return [self _init]; +} + +- (void)_initState +{ + _state = new POPDecayAnimationState(self); +} + +#pragma mark - Properties + +DEFINE_RW_PROPERTY(POPDecayAnimationState, deceleration, setDeceleration:, CGFloat, __state->toVec = NULL;); + +@dynamic velocity; + +- (id)toValue +{ + [self _ensureComputedProperties]; + return POPBox(__state->toVec, __state->valueType); +} + +- (CFTimeInterval)duration +{ + [self _ensureComputedProperties]; + return __state->duration; +} + +- (void)setFromValue:(id)fromValue +{ + super.fromValue = fromValue; + [self _invalidateComputedProperties]; +} + +- (void)setToValue:(id)aValue +{ + // no-op + NSLog(@"ignoring to value on decay animation %@", self); +} + +- (id)reversedVelocity +{ + id reversedVelocity = nil; + + POPValueType velocityType = POPSelectValueType(self.originalVelocity, supportedVelocityTypes, POP_ARRAY_COUNT(supportedVelocityTypes)); + if (velocityType == kPOPValueFloat) { +#if CGFLOAT_IS_DOUBLE + CGFloat originalVelocityFloat = [(NSNumber *)self.originalVelocity doubleValue]; +#else + CGFloat originalVelocityFloat = [(NSNumber *)self.originalVelocity floatValue]; +#endif + NSNumber *negativeOriginalVelocityNumber = @(-originalVelocityFloat); + reversedVelocity = negativeOriginalVelocityNumber; + } else if (velocityType == kPOPValueInteger) { + NSInteger originalVelocityInteger = [(NSNumber *)self.originalVelocity integerValue]; + NSNumber *negativeOriginalVelocityNumber = @(-originalVelocityInteger); + reversedVelocity = negativeOriginalVelocityNumber; + } else if (velocityType == kPOPValuePoint) { + CGPoint originalVelocityPoint = [self.originalVelocity CGPointValue]; + CGPoint negativeOriginalVelocityPoint = CGPointMake(-originalVelocityPoint.x, -originalVelocityPoint.y); + reversedVelocity = [NSValue valueWithCGPoint:negativeOriginalVelocityPoint]; + } else if (velocityType == kPOPValueRect) { + CGRect originalVelocityRect = [self.originalVelocity CGRectValue]; + CGRect negativeOriginalVelocityRect = CGRectMake(-originalVelocityRect.origin.x, -originalVelocityRect.origin.y, -originalVelocityRect.size.width, -originalVelocityRect.size.height); + reversedVelocity = [NSValue valueWithCGRect:negativeOriginalVelocityRect]; + } else if (velocityType == kPOPValueSize) { + CGSize originalVelocitySize = [self.originalVelocity CGSizeValue]; + CGSize negativeOriginalVelocitySize = CGSizeMake(-originalVelocitySize.width, -originalVelocitySize.height); + reversedVelocity = [NSValue valueWithCGSize:negativeOriginalVelocitySize]; + } else if (velocityType == kPOPValueEdgeInsets) { +#if TARGET_OS_IPHONE + UIEdgeInsets originalVelocityInsets = [self.originalVelocity UIEdgeInsetsValue]; + UIEdgeInsets negativeOriginalVelocityInsets = UIEdgeInsetsMake(-originalVelocityInsets.top, -originalVelocityInsets.left, -originalVelocityInsets.bottom, -originalVelocityInsets.right); + reversedVelocity = [NSValue valueWithUIEdgeInsets:negativeOriginalVelocityInsets]; +#endif + } + + return reversedVelocity; +} + +- (id)originalVelocity +{ + return POPBox(__state->originalVelocityVec, __state->valueType); +} + +- (id)velocity +{ + return POPBox(__state->velocityVec, __state->valueType); +} + +- (void)setVelocity:(id)aValue +{ + POPValueType valueType = POPSelectValueType(aValue, supportedVelocityTypes, POP_ARRAY_COUNT(supportedVelocityTypes)); + if (valueType != kPOPValueUnknown) { + VectorRef vec = POPUnbox(aValue, __state->valueType, __state->valueCount, YES); + VectorRef origVec = POPUnbox(aValue, __state->valueType, __state->valueCount, YES); + + if (!vec_equal(vec, __state->velocityVec)) { + __state->velocityVec = vec; + __state->originalVelocityVec = origVec; + + if (__state->tracing) { + [__state->tracer updateVelocity:aValue]; + } + + [self _invalidateComputedProperties]; + + // automatically unpause active animations + if (__state->active && __state->paused) { + __state->fromVec = NULL; + __state->setPaused(false); + } + } + } else { + __state->velocityVec = NULL; + NSLog(@"Invalid velocity value for the decayAnimation: %@", aValue); + } +} + +#pragma mark - Utility + +- (void)_ensureComputedProperties +{ + if (NULL == __state->toVec) { + __state->computeDuration(); + __state->computeToValue(); + } +} + +- (void)_invalidateComputedProperties +{ + __state->toVec = NULL; + __state->duration = 0; +} + +- (void)_appendDescription:(NSMutableString *)s debug:(BOOL)debug +{ + [super _appendDescription:s debug:debug]; + + if (0 != self.duration) { + [s appendFormat:@"; duration = %f", self.duration]; + } + + if (__state->deceleration) { + [s appendFormat:@"; deceleration = %f", __state->deceleration]; + } +} + +@end + +@implementation POPDecayAnimation (NSCopying) + +- (instancetype)copyWithZone:(NSZone *)zone { + + POPDecayAnimation *copy = [super copyWithZone:zone]; + + if (copy) { + // Set the velocity to the animation's original velocity, not its current. + copy.velocity = self.originalVelocity; + copy.deceleration = self.deceleration; + + } + + return copy; +} + +@end \ No newline at end of file diff --git a/Unit-2-Journal/Pods/pop/pop/POPDecayAnimationInternal.h b/Unit-2-Journal/Pods/pop/pop/POPDecayAnimationInternal.h new file mode 100644 index 0000000..c101761 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPDecayAnimationInternal.h @@ -0,0 +1,127 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPDecayAnimation.h" + +#import <cmath> + +#import "POPPropertyAnimationInternal.h" + +// minimal velocity factor before decay animation is considered complete, in units / s +static CGFloat kPOPAnimationDecayMinimalVelocityFactor = 5.; + +// default decay animation deceleration +static CGFloat kPOPAnimationDecayDecelerationDefault = 0.998; + +static void decay_position(CGFloat *x, CGFloat *v, NSUInteger count, CFTimeInterval dt, CGFloat deceleration) +{ + dt *= 1000; + + // v0 = v / 1000 + // v = v0 * powf(deceleration, dt); + // v = v * 1000; + + // x0 = x; + // x = x0 + v0 * deceleration * (1 - powf(deceleration, dt)) / (1 - deceleration) + float v0[count]; + float kv = powf(deceleration, dt); + float kx = deceleration * (1 - kv) / (1 - deceleration); + + for (NSUInteger idx = 0; idx < count; idx++) { + v0[idx] = v[idx] / 1000.; + v[idx] = v0[idx] * kv * 1000.; + x[idx] = x[idx] + v0[idx] * kx; + } +} + +struct _POPDecayAnimationState : _POPPropertyAnimationState +{ + double deceleration; + CFTimeInterval duration; + + _POPDecayAnimationState(id __unsafe_unretained anim) : + _POPPropertyAnimationState(anim), + deceleration(kPOPAnimationDecayDecelerationDefault), + duration(0) + { + type = kPOPAnimationDecay; + } + + bool isDone() { + if (_POPPropertyAnimationState::isDone()) { + return true; + } + + CGFloat f = dynamicsThreshold * kPOPAnimationDecayMinimalVelocityFactor; + const CGFloat *velocityValues = vec_data(velocityVec); + for (NSUInteger idx = 0; idx < valueCount; idx++) { + if (std::abs((velocityValues[idx])) >= f) + return false; + } + return true; + + } + + void computeDuration() { + + // compute duration till threshold velocity + Vector4r scaledVelocity = vector4(velocityVec) / 1000.; + + double k = dynamicsThreshold * kPOPAnimationDecayMinimalVelocityFactor / 1000.; + double vx = k / scaledVelocity.x; + double vy = k / scaledVelocity.y; + double vz = k / scaledVelocity.z; + double vw = k / scaledVelocity.w; + double d = log(deceleration) * 1000.; + duration = MAX(MAX(MAX(log(fabs(vx)) / d, log(fabs(vy)) / d), log(fabs(vz)) / d), log(fabs(vw)) / d); + + // ensure velocity threshold is exceeded + if (std::isnan(duration) || duration < 0) { + duration = 0; + } + } + + void computeToValue() { + // to value assuming final velocity as a factor of dynamics threshold + // derived from v' = v * d^dt used in decay_position + // to compute the to value with maximal dt, p' = p + (v * d) / (1 - d) + VectorRef fromValue = NULL != currentVec ? currentVec : fromVec; + if (!fromValue) { + return; + } + + // ensure duration is computed + if (0 == duration) { + computeDuration(); + } + + // compute to value + VectorRef toValue(Vector::new_vector(fromValue.get())); + Vector4r velocity = velocityVec->vector4r(); + decay_position(toValue->data(), velocity.data(), valueCount, duration, deceleration); + toVec = toValue; + } + + bool advance(CFTimeInterval time, CFTimeInterval dt, id obj) { + // advance past not yet initialized animations + if (NULL == currentVec) { + return false; + } + + decay_position(currentVec->data(), velocityVec->data(), valueCount, dt, deceleration); + + // clamp to compute end value; avoid possibility of decaying past + clampCurrentValue(kPOPAnimationClampEnd | clampMode); + + return true; + } + +}; + +typedef struct _POPDecayAnimationState POPDecayAnimationState; diff --git a/Unit-2-Journal/Pods/pop/pop/POPDefines.h b/Unit-2-Journal/Pods/pop/pop/POPDefines.h new file mode 100644 index 0000000..eb28781 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPDefines.h @@ -0,0 +1,37 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#ifndef POP_POPDefines_h +#define POP_POPDefines_h + +#import <Availability.h> + +#ifdef __cplusplus +# define POP_EXTERN_C_BEGIN extern "C" { +# define POP_EXTERN_C_END } +#else +# define POP_EXTERN_C_BEGIN +# define POP_EXTERN_C_END +#endif + +#define POP_ARRAY_COUNT(x) sizeof(x) / sizeof(x[0]) + +#if defined (__cplusplus) && defined (__GNUC__) +# define POP_NOTHROW __attribute__ ((nothrow)) +#else +# define POP_NOTHROW +#endif + +#if TARGET_OS_MAC + #define SCENEKIT_SDK_AVAILABLE defined(POP_USE_SCENEKIT) +#elif TARGET_OS_IPHONE + #define SCENEKIT_SDK_AVAILABLE defined(POP_USE_SCENEKIT) +#endif + +#endif diff --git a/Unit-2-Journal/Pods/pop/pop/POPGeometry.h b/Unit-2-Journal/Pods/pop/pop/POPGeometry.h new file mode 100644 index 0000000..8ba07e3 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPGeometry.h @@ -0,0 +1,73 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <Foundation/Foundation.h> + +#if TARGET_OS_IPHONE +#import <UIKit/UIGeometry.h> +#endif + +#if !TARGET_OS_IPHONE + +/** NSValue extensions to support animatable types. */ +@interface NSValue (POP) + +/** + @abstract Creates an NSValue given a CGPoint. + */ ++ (NSValue *)valueWithCGPoint:(CGPoint)point; + +/** + @abstract Creates an NSValue given a CGSize. + */ ++ (NSValue *)valueWithCGSize:(CGSize)size; + +/** + @abstract Creates an NSValue given a CGRect. + */ ++ (NSValue *)valueWithCGRect:(CGRect)rect; + +/** + @abstract Creates an NSValue given a CFRange. + */ ++ (NSValue *)valueWithCFRange:(CFRange)range; + +/** + @abstract Creates an NSValue given a CGAffineTransform. + */ ++ (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform; + +/** + @abstract Returns the underlying CGPoint value. + */ +- (CGPoint)CGPointValue; + +/** + @abstract Returns the underlying CGSize value. + */ +- (CGSize)CGSizeValue; + +/** + @abstract Returns the underlying CGRect value. + */ +- (CGRect)CGRectValue; + +/** + @abstract Returns the underlying CFRange value. + */ +- (CFRange)CFRangeValue; + +/** + @abstract Returns the underlying CGAffineTransform value. + */ +- (CGAffineTransform)CGAffineTransformValue; + +@end + +#endif diff --git a/Unit-2-Journal/Pods/pop/pop/POPGeometry.mm b/Unit-2-Journal/Pods/pop/pop/POPGeometry.mm new file mode 100644 index 0000000..41998b1 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPGeometry.mm @@ -0,0 +1,94 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPGeometry.h" + +#if !TARGET_OS_IPHONE +@implementation NSValue (POP) + ++ (NSValue *)valueWithCGPoint:(CGPoint)point { + return [NSValue valueWithBytes:&point objCType:@encode(CGPoint)]; +} + ++ (NSValue *)valueWithCGSize:(CGSize)size { + return [NSValue valueWithBytes:&size objCType:@encode(CGSize)]; +} + ++ (NSValue *)valueWithCGRect:(CGRect)rect { + return [NSValue valueWithBytes:&rect objCType:@encode(CGRect)]; +} + ++ (NSValue *)valueWithCFRange:(CFRange)range { + return [NSValue valueWithBytes:&range objCType:@encode(CFRange)]; +} + ++ (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform +{ + return [NSValue valueWithBytes:&transform objCType:@encode(CGAffineTransform)]; +} + +- (CGPoint)CGPointValue { + CGPoint result; + [self getValue:&result]; + return result; +} + +- (CGSize)CGSizeValue { + CGSize result; + [self getValue:&result]; + return result; +} + +- (CGRect)CGRectValue { + CGRect result; + [self getValue:&result]; + return result; +} + +- (CFRange)CFRangeValue { + CFRange result; + [self getValue:&result]; + return result; +} + +- (CGAffineTransform)CGAffineTransformValue { + CGAffineTransform result; + [self getValue:&result]; + return result; +} +@end + +#endif + +#if TARGET_OS_IPHONE +#import "POPDefines.h" + +#if SCENEKIT_SDK_AVAILABLE +#import <SceneKit/SceneKit.h> + +/** + Dirty hacks because iOS is weird and decided to define both SCNVector3's and SCNVector4's objCType as "t". However @encode(SCNVector3) and @encode(SCNVector4) both return the proper definition ("{SCNVector3=fff}" and "{SCNVector4=ffff}" respectively) + + [[NSValue valueWithSCNVector3:SCNVector3Make(0.0, 0.0, 0.0)] objcType] returns "t", whereas it should return "{SCNVector3=fff}". + + *flips table* + */ +@implementation NSValue (SceneKitFixes) + ++ (NSValue *)valueWithSCNVector3:(SCNVector3)vec3 { + return [NSValue valueWithBytes:&vec3 objCType:@encode(SCNVector3)]; +} + ++ (NSValue *)valueWithSCNVector4:(SCNVector4)vec4 { + return [NSValue valueWithBytes:&vec4 objCType:@encode(SCNVector4)]; +} + +@end +#endif +#endif diff --git a/Unit-2-Journal/Pods/pop/pop/POPLayerExtras.h b/Unit-2-Journal/Pods/pop/pop/POPLayerExtras.h new file mode 100644 index 0000000..ec4c29a --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPLayerExtras.h @@ -0,0 +1,196 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <QuartzCore/QuartzCore.h> + +#import <pop/POPDefines.h> + +POP_EXTERN_C_BEGIN + +#pragma mark - Scale + +/** + @abstract Returns layer scale factor for the x axis. + */ +extern CGFloat POPLayerGetScaleX(CALayer *l); + +/** + @abstract Set layer scale factor for the x axis. + */ +extern void POPLayerSetScaleX(CALayer *l, CGFloat f); + +/** + @abstract Returns layer scale factor for the y axis. + */ +extern CGFloat POPLayerGetScaleY(CALayer *l); + +/** + @abstract Set layer scale factor for the y axis. + */ +extern void POPLayerSetScaleY(CALayer *l, CGFloat f); + +/** + @abstract Returns layer scale factor for the z axis. + */ +extern CGFloat POPLayerGetScaleZ(CALayer *l); + +/** + @abstract Set layer scale factor for the z axis. + */ +extern void POPLayerSetScaleZ(CALayer *l, CGFloat f); + +/** + @abstract Returns layer scale factors for x and y access as point. + */ +extern CGPoint POPLayerGetScaleXY(CALayer *l); + +/** + @abstract Sets layer x and y scale factors given point. + */ +extern void POPLayerSetScaleXY(CALayer *l, CGPoint p); + +#pragma mark - Translation + +/** + @abstract Returns layer translation factor for the x axis. + */ +extern CGFloat POPLayerGetTranslationX(CALayer *l); + +/** + @abstract Set layer translation factor for the x axis. + */ +extern void POPLayerSetTranslationX(CALayer *l, CGFloat f); + +/** + @abstract Returns layer translation factor for the y axis. + */ +extern CGFloat POPLayerGetTranslationY(CALayer *l); + +/** + @abstract Set layer translation factor for the y axis. + */ +extern void POPLayerSetTranslationY(CALayer *l, CGFloat f); + +/** + @abstract Returns layer translation factor for the z axis. + */ +extern CGFloat POPLayerGetTranslationZ(CALayer *l); + +/** + @abstract Set layer translation factor for the z axis. + */ +extern void POPLayerSetTranslationZ(CALayer *l, CGFloat f); + +/** + @abstract Returns layer translation factors for x and y access as point. + */ +extern CGPoint POPLayerGetTranslationXY(CALayer *l); + +/** + @abstract Sets layer x and y translation factors given point. + */ +extern void POPLayerSetTranslationXY(CALayer *l, CGPoint p); + +#pragma mark - Rotation + +/** + @abstract Returns layer rotation, in radians, in the X axis. + */ +extern CGFloat POPLayerGetRotationX(CALayer *l); + +/** + @abstract Sets layer rotation, in radians, in the X axis. + */ +extern void POPLayerSetRotationX(CALayer *l, CGFloat f); + +/** + @abstract Returns layer rotation, in radians, in the Y axis. + */ +extern CGFloat POPLayerGetRotationY(CALayer *l); + +/** + @abstract Sets layer rotation, in radians, in the Y axis. + */ +extern void POPLayerSetRotationY(CALayer *l, CGFloat f); + +/** + @abstract Returns layer rotation, in radians, in the Z axis. + */ +extern CGFloat POPLayerGetRotationZ(CALayer *l); + +/** + @abstract Sets layer rotation, in radians, in the Z axis. + */ +extern void POPLayerSetRotationZ(CALayer *l, CGFloat f); + +/** + @abstract Returns layer rotation, in radians, in the Z axis. + */ +extern CGFloat POPLayerGetRotation(CALayer *l); + +/** + @abstract Sets layer rotation, in radians, in the Z axis. + */ +extern void POPLayerSetRotation(CALayer *l, CGFloat f); + +#pragma mark - Sublayer Scale + +/** + @abstract Returns sublayer scale factors for x and y access as point. + */ +extern CGPoint POPLayerGetSubScaleXY(CALayer *l); + +/** + @abstract Sets sublayer x and y scale factors given point. + */ +extern void POPLayerSetSubScaleXY(CALayer *l, CGPoint p); + +#pragma mark - Sublayer Translation + +/** + @abstract Returns sublayer translation factor for the x axis. + */ +extern CGFloat POPLayerGetSubTranslationX(CALayer *l); + +/** + @abstract Set sublayer translation factor for the x axis. + */ +extern void POPLayerSetSubTranslationX(CALayer *l, CGFloat f); + +/** + @abstract Returns sublayer translation factor for the y axis. + */ +extern CGFloat POPLayerGetSubTranslationY(CALayer *l); + +/** + @abstract Set sublayer translation factor for the y axis. + */ +extern void POPLayerSetSubTranslationY(CALayer *l, CGFloat f); + +/** + @abstract Returns sublayer translation factor for the z axis. + */ +extern CGFloat POPLayerGetSubTranslationZ(CALayer *l); + +/** + @abstract Set sublayer translation factor for the z axis. + */ +extern void POPLayerSetSubTranslationZ(CALayer *l, CGFloat f); + +/** + @abstract Returns sublayer translation factors for x and y access as point. + */ +extern CGPoint POPLayerGetSubTranslationXY(CALayer *l); + +/** + @abstract Sets sublayer x and y translation factors given point. + */ +extern void POPLayerSetSubTranslationXY(CALayer *l, CGPoint p); + +POP_EXTERN_C_END diff --git a/Unit-2-Journal/Pods/pop/pop/POPLayerExtras.mm b/Unit-2-Journal/Pods/pop/pop/POPLayerExtras.mm new file mode 100644 index 0000000..c8ad7f9 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPLayerExtras.mm @@ -0,0 +1,288 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPLayerExtras.h" + +#include "TransformationMatrix.h" + +using namespace WebCore; + +#define DECOMPOSE_TRANSFORM(L) \ + TransformationMatrix _m(L.transform); \ + TransformationMatrix::DecomposedType _d; \ + _m.decompose(_d); + +#define RECOMPOSE_TRANSFORM(L) \ + _m.recompose(_d); \ + L.transform = _m.transform3d(); + +#define RECOMPOSE_ROT_TRANSFORM(L) \ + _m.recompose(_d, true); \ + L.transform = _m.transform3d(); + +#define DECOMPOSE_SUBLAYER_TRANSFORM(L) \ + TransformationMatrix _m(L.sublayerTransform); \ + TransformationMatrix::DecomposedType _d; \ + _m.decompose(_d); + +#define RECOMPOSE_SUBLAYER_TRANSFORM(L) \ + _m.recompose(_d); \ + L.sublayerTransform = _m.transform3d(); + +#pragma mark - Scale + +NS_INLINE void ensureNonZeroValue(CGFloat &f) +{ + if (f == 0) { + f = 1e-6; + } +} + +NS_INLINE void ensureNonZeroValue(CGPoint &p) +{ + if (p.x == 0 && p.y == 0) { + p.x = 1e-6; + p.y = 1e-6; + } +} + +CGFloat POPLayerGetScaleX(CALayer *l) +{ + DECOMPOSE_TRANSFORM(l); + return _d.scaleX; +} + +void POPLayerSetScaleX(CALayer *l, CGFloat f) +{ + ensureNonZeroValue(f); + DECOMPOSE_TRANSFORM(l); + _d.scaleX = f; + RECOMPOSE_TRANSFORM(l); +} + +CGFloat POPLayerGetScaleY(CALayer *l) +{ + DECOMPOSE_TRANSFORM(l); + return _d.scaleY; +} + +void POPLayerSetScaleY(CALayer *l, CGFloat f) +{ + ensureNonZeroValue(f); + DECOMPOSE_TRANSFORM(l); + _d.scaleY = f; + RECOMPOSE_TRANSFORM(l); +} + +CGFloat POPLayerGetScaleZ(CALayer *l) +{ + DECOMPOSE_TRANSFORM(l); + return _d.scaleZ; +} + +void POPLayerSetScaleZ(CALayer *l, CGFloat f) +{ + ensureNonZeroValue(f); + DECOMPOSE_TRANSFORM(l); + _d.scaleZ = f; + RECOMPOSE_TRANSFORM(l); +} + +CGPoint POPLayerGetScaleXY(CALayer *l) +{ + DECOMPOSE_TRANSFORM(l); + return CGPointMake(_d.scaleX, _d.scaleY); +} + +void POPLayerSetScaleXY(CALayer *l, CGPoint p) +{ + ensureNonZeroValue(p); + DECOMPOSE_TRANSFORM(l); + _d.scaleX = p.x; + _d.scaleY = p.y; + RECOMPOSE_TRANSFORM(l); +} + +#pragma mark - Translation + +CGFloat POPLayerGetTranslationX(CALayer *l) +{ + DECOMPOSE_TRANSFORM(l); + return _d.translateX; +} + +void POPLayerSetTranslationX(CALayer *l, CGFloat f) +{ + DECOMPOSE_TRANSFORM(l); + _d.translateX = f; + RECOMPOSE_TRANSFORM(l); +} + +CGFloat POPLayerGetTranslationY(CALayer *l) +{ + DECOMPOSE_TRANSFORM(l); + return _d.translateY; +} + +void POPLayerSetTranslationY(CALayer *l, CGFloat f) +{ + DECOMPOSE_TRANSFORM(l); + _d.translateY = f; + RECOMPOSE_TRANSFORM(l); +} + +CGFloat POPLayerGetTranslationZ(CALayer *l) +{ + DECOMPOSE_TRANSFORM(l); + return _d.translateZ; +} + +void POPLayerSetTranslationZ(CALayer *l, CGFloat f) +{ + DECOMPOSE_TRANSFORM(l); + _d.translateZ = f; + RECOMPOSE_TRANSFORM(l); +} + +CGPoint POPLayerGetTranslationXY(CALayer *l) +{ + DECOMPOSE_TRANSFORM(l); + return CGPointMake(_d.translateX, _d.translateY); +} + +void POPLayerSetTranslationXY(CALayer *l, CGPoint p) +{ + DECOMPOSE_TRANSFORM(l); + _d.translateX = p.x; + _d.translateY = p.y; + RECOMPOSE_TRANSFORM(l); +} + +#pragma mark - Rotation + +CGFloat POPLayerGetRotationX(CALayer *l) +{ + DECOMPOSE_TRANSFORM(l); + return _d.rotateX; +} + +void POPLayerSetRotationX(CALayer *l, CGFloat f) +{ + DECOMPOSE_TRANSFORM(l); + _d.rotateX = f; + RECOMPOSE_ROT_TRANSFORM(l); +} + +CGFloat POPLayerGetRotationY(CALayer *l) +{ + DECOMPOSE_TRANSFORM(l); + return _d.rotateY; +} + +void POPLayerSetRotationY(CALayer *l, CGFloat f) +{ + DECOMPOSE_TRANSFORM(l); + _d.rotateY = f; + RECOMPOSE_ROT_TRANSFORM(l); +} + +CGFloat POPLayerGetRotationZ(CALayer *l) +{ + DECOMPOSE_TRANSFORM(l); + return _d.rotateZ; +} + +void POPLayerSetRotationZ(CALayer *l, CGFloat f) +{ + DECOMPOSE_TRANSFORM(l); + _d.rotateZ = f; + RECOMPOSE_ROT_TRANSFORM(l); +} + +CGFloat POPLayerGetRotation(CALayer *l) +{ + return POPLayerGetRotationZ(l); +} + +void POPLayerSetRotation(CALayer *l, CGFloat f) +{ + POPLayerSetRotationZ(l, f); +} + +#pragma mark - Sublayer Scale + +CGPoint POPLayerGetSubScaleXY(CALayer *l) +{ + DECOMPOSE_SUBLAYER_TRANSFORM(l); + return CGPointMake(_d.scaleX, _d.scaleY); +} + +void POPLayerSetSubScaleXY(CALayer *l, CGPoint p) +{ + ensureNonZeroValue(p); + DECOMPOSE_SUBLAYER_TRANSFORM(l); + _d.scaleX = p.x; + _d.scaleY = p.y; + RECOMPOSE_SUBLAYER_TRANSFORM(l); +} + +#pragma mark - Sublayer Translation + +extern CGFloat POPLayerGetSubTranslationX(CALayer *l) +{ + DECOMPOSE_SUBLAYER_TRANSFORM(l); + return _d.translateX; +} + +extern void POPLayerSetSubTranslationX(CALayer *l, CGFloat f) +{ + DECOMPOSE_SUBLAYER_TRANSFORM(l); + _d.translateX = f; + RECOMPOSE_SUBLAYER_TRANSFORM(l); +} + +extern CGFloat POPLayerGetSubTranslationY(CALayer *l) +{ + DECOMPOSE_SUBLAYER_TRANSFORM(l); + return _d.translateY; +} + +extern void POPLayerSetSubTranslationY(CALayer *l, CGFloat f) +{ + DECOMPOSE_SUBLAYER_TRANSFORM(l); + _d.translateY = f; + RECOMPOSE_SUBLAYER_TRANSFORM(l); +} + +extern CGFloat POPLayerGetSubTranslationZ(CALayer *l) +{ + DECOMPOSE_SUBLAYER_TRANSFORM(l); + return _d.translateZ; +} + +extern void POPLayerSetSubTranslationZ(CALayer *l, CGFloat f) +{ + DECOMPOSE_SUBLAYER_TRANSFORM(l); + _d.translateZ = f; + RECOMPOSE_SUBLAYER_TRANSFORM(l); +} + +extern CGPoint POPLayerGetSubTranslationXY(CALayer *l) +{ + DECOMPOSE_SUBLAYER_TRANSFORM(l); + return CGPointMake(_d.translateX, _d.translateY); +} + +extern void POPLayerSetSubTranslationXY(CALayer *l, CGPoint p) +{ + DECOMPOSE_SUBLAYER_TRANSFORM(l); + _d.translateX = p.x; + _d.translateY = p.y; + RECOMPOSE_SUBLAYER_TRANSFORM(l); +} diff --git a/Unit-2-Journal/Pods/pop/pop/POPMath.h b/Unit-2-Journal/Pods/pop/pop/POPMath.h new file mode 100644 index 0000000..0c6f5e2 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPMath.h @@ -0,0 +1,56 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <Foundation/Foundation.h> + +#import <CoreGraphics/CoreGraphics.h> + +#import "POPDefines.h" +#import "POPVector.h" + +NS_INLINE CGFloat sqrtr(CGFloat f) +{ +#if CGFLOAT_IS_DOUBLE + return sqrt(f); +#else + return sqrtf(f); +#endif +} + +// round to nearest sub; pass 2.0 to round to every 0.5 (eg: retina pixels) +NS_INLINE CGFloat POPSubRound(CGFloat f, CGFloat sub) +{ + return round(f * sub) / sub; +} + +#define MIX(a, b, f) ((a) + (f) * ((b) - (a))) + +// the longer the duration, the higher the necessary precision +#define SOLVE_EPS(dur) (1. / (1000. * (dur))) + +#define _EQLF_(x, y, epsilon) (fabsf ((x) - (y)) < epsilon) + +extern void POPInterpolateVector(NSUInteger count, CGFloat *dst, const CGFloat *from, const CGFloat *to, CGFloat f); + +extern double POPTimingFunctionSolve(const double vec[4], double t, double eps); + +// quadratic mapping of t [0, 1] to [start, end] +extern double POPQuadraticOutInterpolation(double t, double start, double end); + +// normalize value to [0, 1] based on its range [startValue, endValue] +extern double POPNormalize(double value, double startValue, double endValue); + +// project a normalized value [0, 1] to a given range [start, end] +extern double POPProjectNormal(double n, double start, double end); + +// solve a quadratic equation of the form a * x^2 + b * x + c = 0 +extern void POPQuadraticSolve(CGFloat a, CGFloat b, CGFloat c, CGFloat &x1, CGFloat &x2); + +// for a given tension return the bouncy 3 friction that produces no bounce +extern double POPBouncy3NoBounce(double tension); diff --git a/Unit-2-Journal/Pods/pop/pop/POPMath.mm b/Unit-2-Journal/Pods/pop/pop/POPMath.mm new file mode 100644 index 0000000..69a506a --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPMath.mm @@ -0,0 +1,83 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPMath.h" + +#import "POPAnimationPrivate.h" +#import "UnitBezier.h" + +void POPInterpolateVector(NSUInteger count, CGFloat *dst, const CGFloat *from, const CGFloat *to, CGFloat f) +{ + for (NSUInteger idx = 0; idx < count; idx++) { + dst[idx] = MIX(from[idx], to[idx], f); + } +} + +double POPTimingFunctionSolve(const double vec[4], double t, double eps) +{ + WebCore::UnitBezier bezier(vec[0], vec[1], vec[2], vec[3]); + return bezier.solve(t, eps); +} + +double POPNormalize(double value, double startValue, double endValue) +{ + return (value - startValue) / (endValue - startValue); +} + +double POPProjectNormal(double n, double start, double end) +{ + return start + (n * (end - start)); +} + +static double linear_interpolation(double t, double start, double end) +{ + return t * end + (1.f - t) * start; +} + +double POPQuadraticOutInterpolation(double t, double start, double end) +{ + return linear_interpolation(2*t - t*t, start, end); +} + +static double b3_friction1(double x) +{ + return (0.0007 * pow(x, 3)) - (0.031 * pow(x, 2)) + 0.64 * x + 1.28; +} + +static double b3_friction2(double x) +{ + return (0.000044 * pow(x, 3)) - (0.006 * pow(x, 2)) + 0.36 * x + 2.; +} + +static double b3_friction3(double x) +{ + return (0.00000045 * pow(x, 3)) - (0.000332 * pow(x, 2)) + 0.1078 * x + 5.84; +} + +double POPBouncy3NoBounce(double tension) +{ + double friction = 0; + if (tension <= 18.) { + friction = b3_friction1(tension); + } else if (tension > 18 && tension <= 44) { + friction = b3_friction2(tension); + } else if (tension > 44) { + friction = b3_friction3(tension); + } else { + assert(false); + } + return friction; +} + +void POPQuadraticSolve(CGFloat a, CGFloat b, CGFloat c, CGFloat &x1, CGFloat &x2) +{ + CGFloat discriminant = sqrt(b * b - 4 * a * c); + x1 = (-b + discriminant) / (2 * a); + x2 = (-b - discriminant) / (2 * a); +} diff --git a/Unit-2-Journal/Pods/pop/pop/POPPropertyAnimation.h b/Unit-2-Journal/Pods/pop/pop/POPPropertyAnimation.h new file mode 100644 index 0000000..2861665 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPPropertyAnimation.h @@ -0,0 +1,65 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <pop/POPAnimatableProperty.h> +#import <pop/POPAnimation.h> + +/** + @abstract Flags for clamping animation values. + @discussion Animation values can optionally be clamped to avoid overshoot. kPOPAnimationClampStart ensures values are more than fromValue and kPOPAnimationClampEnd ensures values are less than toValue. + */ +typedef NS_OPTIONS(NSUInteger, POPAnimationClampFlags) +{ + kPOPAnimationClampNone = 0, + kPOPAnimationClampStart = 1UL << 0, + kPOPAnimationClampEnd = 1UL << 1, + kPOPAnimationClampBoth = kPOPAnimationClampStart | kPOPAnimationClampEnd, +}; + +/** + @abstract The semi-concrete property animation subclass. + */ +@interface POPPropertyAnimation : POPAnimation + +/** + @abstract The property to animate. + */ +@property (strong, nonatomic) POPAnimatableProperty *property; + +/** + @abstract The value to animate from. + @discussion The value type should match the property. If unspecified, the value is initialized to the object's current value on animation start. + */ +@property (copy, nonatomic) id fromValue; + +/** + @abstract The value to animate to. + @discussion The value type should match the property. If unspecified, the value is initialized to the object's current value on animation start. + */ +@property (copy, nonatomic) id toValue; + +/** + @abstract The rounding factor applied to the current animated value. + @discussion Specify 1.0 to animate between integral values. Defaults to 0 meaning no rounding. + */ +@property (assign, nonatomic) CGFloat roundingFactor; + +/** + @abstract The clamp mode applied to the current animated value. + @discussion See {@ref POPAnimationClampFlags} for possible values. Defaults to kPOPAnimationClampNone. + */ +@property (assign, nonatomic) NSUInteger clampMode; + +/** + @abstract The flag indicating whether values should be "added" each frame, rather than set. + @discussion Addition may be type dependent. Defaults to NO. + */ +@property (assign, nonatomic, getter = isAdditive) BOOL additive; + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPPropertyAnimation.mm b/Unit-2-Journal/Pods/pop/pop/POPPropertyAnimation.mm new file mode 100644 index 0000000..56a9e5c --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPPropertyAnimation.mm @@ -0,0 +1,125 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPPropertyAnimationInternal.h" + +@implementation POPPropertyAnimation + +#pragma mark - Lifecycle + +#undef __state +#define __state ((POPPropertyAnimationState *)_state) + +- (void)_initState +{ + _state = new POPPropertyAnimationState(self); +} + +#pragma mark - Properties + +DEFINE_RW_FLAG(POPPropertyAnimationState, additive, isAdditive, setAdditive:); +DEFINE_RW_PROPERTY(POPPropertyAnimationState, roundingFactor, setRoundingFactor:, CGFloat); +DEFINE_RW_PROPERTY(POPPropertyAnimationState, clampMode, setClampMode:, NSUInteger); +DEFINE_RW_PROPERTY_OBJ(POPPropertyAnimationState, property, setProperty:, POPAnimatableProperty*, ((POPPropertyAnimationState*)_state)->updatedDynamicsThreshold();); +DEFINE_RW_PROPERTY_OBJ_COPY(POPPropertyAnimationState, progressMarkers, setProgressMarkers:, NSArray*, ((POPPropertyAnimationState*)_state)->updatedProgressMarkers();); + +- (id)fromValue +{ + return POPBox(__state->fromVec, __state->valueType); +} + +- (void)setFromValue:(id)aValue +{ + POPPropertyAnimationState *s = __state; + VectorRef vec = POPUnbox(aValue, s->valueType, s->valueCount, YES); + if (!vec_equal(vec, s->fromVec)) { + s->fromVec = vec; + + if (s->tracing) { + [s->tracer updateFromValue:aValue]; + } + } +} + +- (id)toValue +{ + return POPBox(__state->toVec, __state->valueType); +} + +- (void)setToValue:(id)aValue +{ + POPPropertyAnimationState *s = __state; + VectorRef vec = POPUnbox(aValue, s->valueType, s->valueCount, YES); + + if (!vec_equal(vec, s->toVec)) { + s->toVec = vec; + + // invalidate to dependent state + s->didReachToValue = false; + s->distanceVec = NULL; + + if (s->tracing) { + [s->tracer updateToValue:aValue]; + } + + // automatically unpause active animations + if (s->active && s->paused) { + s->setPaused(false); + } + } +} + +- (id)currentValue +{ + return POPBox(__state->currentValue(), __state->valueType); +} + +#pragma mark - Utility + +- (void)_appendDescription:(NSMutableString *)s debug:(BOOL)debug +{ + [s appendFormat:@"; from = %@; to = %@", describe(__state->fromVec), describe(__state->toVec)]; + + if (_state->active) + [s appendFormat:@"; currentValue = %@", describe(__state->currentValue())]; + + if (__state->velocityVec && 0 != __state->velocityVec->norm()) + [s appendFormat:@"; velocity = %@", describe(__state->velocityVec)]; + + if (!self.removedOnCompletion) + [s appendFormat:@"; removedOnCompletion = %@", POPStringFromBOOL(self.removedOnCompletion)]; + + if (__state->progressMarkers) + [s appendFormat:@"; progressMarkers = [%@]", [__state->progressMarkers componentsJoinedByString:@", "]]; + + if (_state->active) + [s appendFormat:@"; progress = %f", __state->progress]; +} + +@end + +@implementation POPPropertyAnimation (NSCopying) + +- (instancetype)copyWithZone:(NSZone *)zone { + + POPPropertyAnimation *copy = [super copyWithZone:zone]; + + if (copy) { + copy.property = [self.property copyWithZone:zone]; + copy.fromValue = self.fromValue; + copy.toValue = self.toValue; + copy.roundingFactor = self.roundingFactor; + copy.clampMode = self.clampMode; + copy.additive = self.additive; + } + + return copy; +} + +@end \ No newline at end of file diff --git a/Unit-2-Journal/Pods/pop/pop/POPPropertyAnimationInternal.h b/Unit-2-Journal/Pods/pop/pop/POPPropertyAnimationInternal.h new file mode 100644 index 0000000..9f2aee4 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPPropertyAnimationInternal.h @@ -0,0 +1,359 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPAnimationInternal.h" +#import "POPPropertyAnimation.h" + +static void clampValue(CGFloat &value, CGFloat fromValue, CGFloat toValue, NSUInteger clamp) +{ + BOOL increasing = (toValue > fromValue); + + // Clamp start of animation. + if ((kPOPAnimationClampStart & clamp) && + ((increasing && (value < fromValue)) || (!increasing && (value > fromValue)))) { + value = fromValue; + } + + // Clamp end of animation. + if ((kPOPAnimationClampEnd & clamp) && + ((increasing && (value > toValue)) || (!increasing && (value < toValue)))) { + value = toValue; + } +} + +struct _POPPropertyAnimationState : _POPAnimationState +{ + POPAnimatableProperty *property; + POPValueType valueType; + NSUInteger valueCount; + VectorRef fromVec; + VectorRef toVec; + VectorRef currentVec; + VectorRef previousVec; + VectorRef previous2Vec; + VectorRef velocityVec; + VectorRef originalVelocityVec; + VectorRef distanceVec; + CGFloat roundingFactor; + NSUInteger clampMode; + NSArray *progressMarkers; + POPProgressMarker *progressMarkerState; + NSUInteger progressMarkerCount; + NSUInteger nextProgressMarkerIdx; + CGFloat dynamicsThreshold; + + _POPPropertyAnimationState(id __unsafe_unretained anim) : _POPAnimationState(anim), + property(nil), + valueType((POPValueType)0), + valueCount(0), + fromVec(nullptr), + toVec(nullptr), + currentVec(nullptr), + previousVec(nullptr), + previous2Vec(nullptr), + velocityVec(nullptr), + originalVelocityVec(nullptr), + distanceVec(nullptr), + roundingFactor(0), + clampMode(0), + progressMarkers(nil), + progressMarkerState(nil), + progressMarkerCount(0), + nextProgressMarkerIdx(0), + dynamicsThreshold(0) + { + type = kPOPAnimationBasic; + } + + ~_POPPropertyAnimationState() + { + if (progressMarkerState) { + free(progressMarkerState); + progressMarkerState = NULL; + } + } + + bool canProgress() { + return hasValue(); + } + + bool shouldRound() { + return 0 != roundingFactor; + } + + bool hasValue() { + return 0 != valueCount; + } + + bool isDone() { + // inherit done + if (_POPAnimationState::isDone()) { + return true; + } + + // consider an animation with no values done + if (!hasValue() && !isCustom()) { + return true; + } + + return false; + } + + // returns a copy of the currentVec, rounding if needed + VectorRef currentValue() { + VectorRef vec = VectorRef(Vector::new_vector(currentVec.get())); + if (shouldRound()) { + vec->subRound(1 / roundingFactor); + } + return vec; + } + + void resetProgressMarkerState() + { + for (NSUInteger idx = 0; idx < progressMarkerCount; idx++) + progressMarkerState[idx].reached = false; + + nextProgressMarkerIdx = 0; + } + + void updatedProgressMarkers() + { + if (progressMarkerState) { + free(progressMarkerState); + progressMarkerState = NULL; + } + + progressMarkerCount = progressMarkers.count; + + if (0 != progressMarkerCount) { + progressMarkerState = (POPProgressMarker *)malloc(progressMarkerCount * sizeof(POPProgressMarker)); + [progressMarkers enumerateObjectsUsingBlock:^(NSNumber *progressMarker, NSUInteger idx, BOOL *stop) { + progressMarkerState[idx].reached = false; + progressMarkerState[idx].progress = [progressMarker floatValue]; + }]; + } + + nextProgressMarkerIdx = 0; + } + + virtual void updatedDynamicsThreshold() + { + dynamicsThreshold = property.threshold; + } + + void finalizeProgress() + { + progress = 1.0; + NSUInteger count = valueCount; + VectorRef outVec(Vector::new_vector(count, NULL)); + + if (outVec && toVec) { + *outVec = *toVec; + } + + currentVec = outVec; + clampCurrentValue(); + delegateProgress(); + } + + void computeProgress() { + if (!canProgress()) { + return; + } + + static ComputeProgressFunctor<Vector4r> func; + Vector4r v = vector4(currentVec); + Vector4r f = vector4(fromVec); + Vector4r t = vector4(toVec); + progress = func(v, f, t); + } + + void delegateProgress() { + if (!canProgress()) { + return; + } + + if (delegateDidProgress && progressMarkerState) { + + while (nextProgressMarkerIdx < progressMarkerCount) { + if (progress < progressMarkerState[nextProgressMarkerIdx].progress) + break; + + if (!progressMarkerState[nextProgressMarkerIdx].reached) { + ActionEnabler enabler; + [delegate pop_animation:self didReachProgress:progressMarkerState[nextProgressMarkerIdx].progress]; + progressMarkerState[nextProgressMarkerIdx].reached = true; + } + + nextProgressMarkerIdx++; + } + } + + if (!didReachToValue) { + bool didReachToValue = false; + if (0 == valueCount) { + didReachToValue = true; + } else { + Vector4r distance = toVec->vector4r(); + distance -= currentVec->vector4r(); + + if (0 == distance.squaredNorm()) { + didReachToValue = true; + } else { + // components + if (distanceVec) { + didReachToValue = true; + const CGFloat *distanceValues = distanceVec->data(); + for (NSUInteger idx = 0; idx < valueCount; idx++) { + didReachToValue &= (signbit(distance[idx]) != signbit(distanceValues[idx])); + } + } + } + } + + if (didReachToValue) { + handleDidReachToValue(); + } + } + } + + void handleDidReachToValue() { + didReachToValue = true; + + if (delegateDidReachToValue) { + ActionEnabler enabler; + [delegate pop_animationDidReachToValue:self]; + } + + POPAnimationDidReachToValueBlock block = animationDidReachToValueBlock; + if (block != NULL) { + ActionEnabler enabler; + block(self); + } + + if (tracing) { + [tracer didReachToValue:POPBox(currentValue(), valueType, true)]; + } + } + + void readObjectValue(VectorRef *ptrVec, id obj) + { + // use current object value as from value + pop_animatable_read_block read = property.readBlock; + if (NULL != read) { + + Vector4r vec = read_values(read, obj, valueCount); + *ptrVec = VectorRef(Vector::new_vector(valueCount, vec)); + + if (tracing) { + [tracer readPropertyValue:POPBox(*ptrVec, valueType, true)]; + } + } + } + + virtual void willRun(bool started, id obj) { + // ensure from value initialized + if (NULL == fromVec) { + readObjectValue(&fromVec, obj); + } + + // ensure to value initialized + if (NULL == toVec) { + // compute decay to value + if (kPOPAnimationDecay == type) { + [self toValue]; + } else { + // read to value + readObjectValue(&toVec, obj); + } + } + + // handle one time value initialization on start + if (started) { + + // initialize current vec + if (!currentVec) { + currentVec = VectorRef(Vector::new_vector(valueCount, NULL)); + + // initialize current value with from value + // only do this on initial creation to avoid overwriting current value + // on paused animation continuation + if (currentVec && fromVec) { + *currentVec = *fromVec; + } + } + + // ensure velocity values + if (!velocityVec) { + velocityVec = VectorRef(Vector::new_vector(valueCount, NULL)); + } + if (!originalVelocityVec) { + originalVelocityVec = VectorRef(Vector::new_vector(valueCount, NULL)); + } + } + + // ensure distance value initialized + // depends on current value set on one time start + if (NULL == distanceVec) { + + // not yet started animations may not have current value + VectorRef fromVec2 = NULL != currentVec ? currentVec : fromVec; + + if (fromVec2 && toVec) { + Vector4r distance = toVec->vector4r(); + distance -= fromVec2->vector4r(); + + if (0 != distance.squaredNorm()) { + distanceVec = VectorRef(Vector::new_vector(valueCount, distance)); + } + } + } + } + + virtual void reset(bool all) { + _POPAnimationState::reset(all); + + if (all) { + currentVec = NULL; + previousVec = NULL; + previous2Vec = NULL; + } + progress = 0; + resetProgressMarkerState(); + didReachToValue = false; + distanceVec = NULL; + } + + void clampCurrentValue(NSUInteger clamp) + { + if (kPOPAnimationClampNone == clamp) + return; + + // Clamp all vector values + CGFloat *currentValues = currentVec->data(); + const CGFloat *fromValues = fromVec->data(); + const CGFloat *toValues = toVec->data(); + + for (NSUInteger idx = 0; idx < valueCount; idx++) { + clampValue(currentValues[idx], fromValues[idx], toValues[idx], clamp); + } + } + + void clampCurrentValue() + { + clampCurrentValue(clampMode); + } +}; + +typedef struct _POPPropertyAnimationState POPPropertyAnimationState; + +@interface POPPropertyAnimation () + +@end + diff --git a/Unit-2-Journal/Pods/pop/pop/POPSpringAnimation.h b/Unit-2-Journal/Pods/pop/pop/POPSpringAnimation.h new file mode 100644 index 0000000..a22cd5b --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPSpringAnimation.h @@ -0,0 +1,67 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <pop/POPPropertyAnimation.h> + +/** + @abstract A concrete spring animation class. + @discussion Animation is achieved through modeling spring dynamics. + */ +@interface POPSpringAnimation : POPPropertyAnimation + +/** + @abstract The designated initializer. + @returns An instance of a spring animation. + */ ++ (instancetype)animation; + +/** + @abstract Convenience initializer that returns an animation with animatable property of name. + @param name The name of the animatable property. + @returns An instance of a spring animation configured with specified animatable property. + */ ++ (instancetype)animationWithPropertyNamed:(NSString *)name; + +/** + @abstract The current velocity value. + @discussion Set before animation start to account for initial velocity. Expressed in change of value units per second. + */ +@property (copy, nonatomic) id velocity; + +/** + @abstract The effective bounciness. + @discussion Use in conjunction with 'springSpeed' to change animation effect. Values are converted into corresponding dynamics constants. Higher values increase spring movement range resulting in more oscillations and springiness. Defined as a value in the range [0, 20]. Defaults to 4. + */ +@property (assign, nonatomic) CGFloat springBounciness; + +/** + @abstract The effective speed. + @discussion Use in conjunction with 'springBounciness' to change animation effect. Values are converted into corresponding dynamics constants. Higher values increase the dampening power of the spring resulting in a faster initial velocity and more rapid bounce slowdown. Defined as a value in the range [0, 20]. Defaults to 12. + */ +@property (assign, nonatomic) CGFloat springSpeed; + +/** + @abstract The tension used in the dynamics simulation. + @discussion Can be used over bounciness and speed for finer grain tweaking of animation effect. + */ +@property (assign, nonatomic) CGFloat dynamicsTension; + +/** + @abstract The friction used in the dynamics simulation. + @discussion Can be used over bounciness and speed for finer grain tweaking of animation effect. + */ +@property (assign, nonatomic) CGFloat dynamicsFriction; + +/** + @abstract The mass used in the dynamics simulation. + @discussion Can be used over bounciness and speed for finer grain tweaking of animation effect. + */ +@property (assign, nonatomic) CGFloat dynamicsMass; + +@end diff --git a/Unit-2-Journal/Pods/pop/pop/POPSpringAnimation.mm b/Unit-2-Journal/Pods/pop/pop/POPSpringAnimation.mm new file mode 100644 index 0000000..d299770 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPSpringAnimation.mm @@ -0,0 +1,192 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPSpringAnimationInternal.h" + +@implementation POPSpringAnimation + +#pragma mark - Lifecycle + +#undef __state +#define __state ((POPSpringAnimationState *)_state) + ++ (instancetype)animation +{ + return [[self alloc] init]; +} + ++ (instancetype)animationWithPropertyNamed:(NSString *)aName +{ + POPSpringAnimation *anim = [self animation]; + anim.property = [POPAnimatableProperty propertyWithName:aName]; + return anim; +} + +- (void)_initState +{ + _state = new POPSpringAnimationState(self); +} + +- (id)init +{ + self = [super _init]; + if (nil != self) { + __state->solver = new SpringSolver4d(1, 1, 1); + __state->updatedDynamicsThreshold(); + __state->updatedBouncinessAndSpeed(); + } + return self; +} + +- (void)dealloc +{ + if (__state) { + delete __state->solver; + __state->solver = NULL; + } +} + +#pragma mark - Properties + +- (id)velocity +{ + return POPBox(__state->velocityVec, __state->valueType); +} + +- (void)setVelocity:(id)aValue +{ + POPPropertyAnimationState *s = __state; + VectorRef vec = POPUnbox(aValue, s->valueType, s->valueCount, YES); + VectorRef origVec = POPUnbox(aValue, s->valueType, s->valueCount, YES); + if (!vec_equal(vec, s->velocityVec)) { + s->velocityVec = vec; + s->originalVelocityVec = origVec; + + if (s->tracing) { + [s->tracer updateVelocity:aValue]; + } + } +} + +DEFINE_RW_PROPERTY(POPSpringAnimationState, dynamicsTension, setDynamicsTension:, CGFloat, [self _updatedDynamicsTension];); +DEFINE_RW_PROPERTY(POPSpringAnimationState, dynamicsFriction, setDynamicsFriction:, CGFloat, [self _updatedDynamicsFriction];); +DEFINE_RW_PROPERTY(POPSpringAnimationState, dynamicsMass, setDynamicsMass:, CGFloat, [self _updatedDynamicsMass];); + +FB_PROPERTY_GET(POPSpringAnimationState, springSpeed, CGFloat); +- (void)setSpringSpeed:(CGFloat)aFloat +{ + POPSpringAnimationState *s = __state; + if (s->userSpecifiedDynamics || aFloat != s->springSpeed) { + s->springSpeed = aFloat; + s->userSpecifiedDynamics = false; + s->updatedBouncinessAndSpeed(); + if (s->tracing) { + [s->tracer updateSpeed:aFloat]; + } + } +} + +FB_PROPERTY_GET(POPSpringAnimationState, springBounciness, CGFloat); +- (void)setSpringBounciness:(CGFloat)aFloat +{ + POPSpringAnimationState *s = __state; + if (s->userSpecifiedDynamics || aFloat != s->springBounciness) { + s->springBounciness = aFloat; + s->userSpecifiedDynamics = false; + s->updatedBouncinessAndSpeed(); + if (s->tracing) { + [s->tracer updateBounciness:aFloat]; + } + } +} + +- (SpringSolver4d *)solver +{ + return __state->solver; +} + +- (void)setSolver:(SpringSolver4d *)aSolver +{ + if (aSolver != __state->solver) { + if (__state->solver) { + delete(__state->solver); + } + __state->solver = aSolver; + } +} + +#pragma mark - Utility + +- (void)_updatedDynamicsTension +{ + __state->userSpecifiedDynamics = true; + if(__state->tracing) { + [__state->tracer updateTension:__state->dynamicsTension]; + } + __state->updatedDynamics(); +} + +- (void)_updatedDynamicsFriction +{ + __state->userSpecifiedDynamics = true; + if(__state->tracing) { + [__state->tracer updateFriction:__state->dynamicsFriction]; + } + __state->updatedDynamics(); +} + +- (void)_updatedDynamicsMass +{ + __state->userSpecifiedDynamics = true; + if(__state->tracing) { + [__state->tracer updateMass:__state->dynamicsMass]; + } + __state->updatedDynamics(); +} + +- (void)_appendDescription:(NSMutableString *)s debug:(BOOL)debug +{ + [super _appendDescription:s debug:debug]; + + if (debug) { + if (_state->userSpecifiedDynamics) { + [s appendFormat:@"; dynamics = (tension:%f, friction:%f, mass:%f)", __state->dynamicsTension, __state->dynamicsFriction, __state->dynamicsMass]; + } else { + [s appendFormat:@"; bounciness = %f; speed = %f", __state->springBounciness, __state->springSpeed]; + } + } +} + +@end + +@implementation POPSpringAnimation (NSCopying) + +- (instancetype)copyWithZone:(NSZone *)zone { + + POPSpringAnimation *copy = [super copyWithZone:zone]; + + if (copy) { + id velocity = POPBox(__state->originalVelocityVec, __state->valueType); + + // If velocity never gets set, then POPBox will return nil, messing up __state->valueCount. + if (velocity) { + copy.velocity = velocity; + } + + copy.springBounciness = self.springBounciness; + copy.springSpeed = self.springSpeed; + copy.dynamicsTension = self.dynamicsTension; + copy.dynamicsFriction = self.dynamicsFriction; + copy.dynamicsMass = self.dynamicsMass; + } + + return copy; +} + +@end \ No newline at end of file diff --git a/Unit-2-Journal/Pods/pop/pop/POPSpringAnimationInternal.h b/Unit-2-Journal/Pods/pop/pop/POPSpringAnimationInternal.h new file mode 100644 index 0000000..6a72a43 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPSpringAnimationInternal.h @@ -0,0 +1,132 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <cmath> + +#import "POPAnimationExtras.h" +#import "POPPropertyAnimationInternal.h" + +struct _POPSpringAnimationState : _POPPropertyAnimationState +{ + SpringSolver4d *solver; + CGFloat springSpeed; + CGFloat springBounciness; // normalized springiness + CGFloat dynamicsTension; // tension + CGFloat dynamicsFriction; // friction + CGFloat dynamicsMass; // mass + + _POPSpringAnimationState(id __unsafe_unretained anim) : _POPPropertyAnimationState(anim), + solver(nullptr), + springSpeed(12.), + springBounciness(4.), + dynamicsTension(0), + dynamicsFriction(0), + dynamicsMass(0) + { + type = kPOPAnimationSpring; + } + + bool hasConverged() + { + NSUInteger count = valueCount; + if (shouldRound()) { + return vec_equal(previous2Vec, previousVec) && vec_equal(previousVec, toVec); + } else { + if (!previousVec || !previous2Vec) + return false; + + CGFloat t = dynamicsThreshold / 5; + + const CGFloat *toValues = toVec->data(); + const CGFloat *previousValues = previousVec->data(); + const CGFloat *previous2Values = previous2Vec->data(); + + for (NSUInteger idx = 0; idx < count; idx++) { + if ((std::abs(toValues[idx] - previousValues[idx]) >= t) || (std::abs(previous2Values[idx] - previousValues[idx]) >= t)) { + return false; + } + } + return true; + } + } + + bool isDone() { + if (_POPPropertyAnimationState::isDone()) { + return true; + } + return solver->started() && (hasConverged() || solver->hasConverged()); + } + + void updatedDynamics() + { + if (NULL != solver) { + solver->setConstants(dynamicsTension, dynamicsFriction, dynamicsMass); + } + } + + void updatedDynamicsThreshold() + { + _POPPropertyAnimationState::updatedDynamicsThreshold(); + if (NULL != solver) { + solver->setThreshold(dynamicsThreshold); + } + } + + void updatedBouncinessAndSpeed() { + [POPSpringAnimation convertBounciness:springBounciness speed:springSpeed toTension:&dynamicsTension friction:&dynamicsFriction mass:&dynamicsMass]; + updatedDynamics(); + } + + bool advance(CFTimeInterval time, CFTimeInterval dt, id obj) { + // advance past not yet initialized animations + if (NULL == currentVec) { + return false; + } + + CFTimeInterval localTime = time - startTime; + + Vector4d value = vector4d(currentVec); + Vector4d toValue = vector4d(toVec); + Vector4d velocity = vector4d(velocityVec); + + SSState4d state; + state.p = toValue - value; + + // the solver assumes a spring of size zero + // flip the velocity from user perspective to solver perspective + state.v = velocity * -1; + + solver->advance(state, localTime, dt); + value = toValue - state.p; + + // flip velocity back to user perspective + velocity = state.v * -1; + + *currentVec = value; + + if (velocityVec) { + *velocityVec = velocity; + } + + clampCurrentValue(); + + return true; + } + + virtual void reset(bool all) { + _POPPropertyAnimationState::reset(all); + + if (solver) { + solver->setConstants(dynamicsTension, dynamicsFriction, dynamicsMass); + solver->reset(); + } + } +}; + +typedef struct _POPSpringAnimationState POPSpringAnimationState; diff --git a/Unit-2-Journal/Pods/pop/pop/POPSpringSolver.h b/Unit-2-Journal/Pods/pop/pop/POPSpringSolver.h new file mode 100644 index 0000000..df485bf --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPSpringSolver.h @@ -0,0 +1,190 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import <Foundation/Foundation.h> + +#import "POPVector.h" + +namespace POP { + + template <typename T> + struct SSState + { + T p; + T v; + }; + + template <typename T> + struct SSDerivative + { + T dp; + T dv; + }; + + typedef SSState<Vector4d> SSState4d; + typedef SSDerivative<Vector4d> SSDerivative4d; + + const CFTimeInterval solverDt = 0.001f; + const CFTimeInterval maxSolverDt = 30.0f; + + /** + Templated spring solver class. + */ + template <typename T> + class SpringSolver + { + double _k; // stiffness + double _b; // dampening + double _m; // mass + + double _tp; // threshold + double _tv; // threshold velocity + double _ta; // threshold acceleration + + CFTimeInterval _accumulatedTime; + SSState<T> _lastState; + T _lastDv; + bool _started; + + public: + SpringSolver(double k, double b, double m = 1) : _k(k), _b(b), _m(m), _started(false) + { + _accumulatedTime = 0; + _lastState.p = T::Zero(); + _lastState.v = T::Zero(); + _lastDv = T::Zero(); + setThreshold(1.); + } + + ~SpringSolver() + { + } + + bool started() + { + return _started; + } + + void setConstants(double k, double b, double m) + { + _k = k; + _b = b; + _m = m; + } + + void setThreshold(double t) + { + _tp = t / 2; // half a unit + _tv = 25.0 * t; // 5 units per second, squared for comparison + _ta = 625.0 * t * t; // 5 units per second squared, squared for comparison + } + + T acceleration(const SSState<T> &state, double t) + { + return state.p*(-_k/_m) - state.v*(_b/_m); + } + + SSDerivative<T> evaluate(const SSState<T> &initial, double t) + { + SSDerivative<T> output; + output.dp = initial.v; + output.dv = acceleration(initial, t); + return output; + } + + SSDerivative<T> evaluate(const SSState<T> &initial, double t, double dt, const SSDerivative<T> &d) + { + SSState<T> state; + state.p = initial.p + d.dp*dt; + state.v = initial.v + d.dv*dt; + SSDerivative<T> output; + output.dp = state.v; + output.dv = acceleration(state, t+dt); + return output; + } + + void integrate(SSState<T> &state, double t, double dt) + { + SSDerivative<T> a = evaluate(state, t); + SSDerivative<T> b = evaluate(state, t, dt*0.5, a); + SSDerivative<T> c = evaluate(state, t, dt*0.5, b); + SSDerivative<T> d = evaluate(state, t, dt, c); + + T dpdt = (a.dp + (b.dp + c.dp)*2.0 + d.dp) * (1.0/6.0); + T dvdt = (a.dv + (b.dv + c.dv)*2.0 + d.dv) * (1.0/6.0); + + state.p = state.p + dpdt*dt; + state.v = state.v + dvdt*dt; + + _lastDv = dvdt; + } + + SSState<T> interpolate(const SSState<T> &previous, const SSState<T> ¤t, double alpha) + { + SSState<T> state; + state.p = current.p*alpha + previous.p*(1-alpha); + state.v = current.v*alpha + previous.v*(1-alpha); + return state; + } + + void advance(SSState<T> &state, double t, double dt) + { + _started = true; + + if (dt > maxSolverDt) { + // excessive time step, force shut down + _lastDv = _lastState.v = _lastState.p = T::Zero(); + } else { + _accumulatedTime += dt; + + SSState<T> previousState = state, currentState = state; + while (_accumulatedTime >= solverDt) { + previousState = currentState; + this->integrate(currentState, t, solverDt); + t += solverDt; + _accumulatedTime -= solverDt; + } + CFTimeInterval alpha = _accumulatedTime / solverDt; + _lastState = state = this->interpolate(previousState, currentState, alpha); + } + } + + bool hasConverged() + { + if (!_started) { + return false; + } + + for (size_t idx = 0; idx < _lastState.p.size(); idx++) { + if (fabs(_lastState.p(idx)) >= _tp) { + return false; + } + } + + return (_lastState.v.squaredNorm() < _tv) && (_lastDv.squaredNorm() < _ta); + } + + void reset() + { + _accumulatedTime = 0; + _lastState.p = T::Zero(); + _lastState.v = T::Zero(); + _lastDv = T::Zero(); + _started = false; + } + }; + + /** + Convenience spring solver type definitions. + */ + typedef SpringSolver<Vector2d> SpringSolver2d; + typedef SpringSolver<Vector3d> SpringSolver3d; + typedef SpringSolver<Vector4d> SpringSolver4d; +} + diff --git a/Unit-2-Journal/Pods/pop/pop/POPVector.h b/Unit-2-Journal/Pods/pop/pop/POPVector.h new file mode 100644 index 0000000..44d4e9f --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPVector.h @@ -0,0 +1,394 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#ifndef __POP__FBVector__ +#define __POP__FBVector__ + +#include <iostream> +#include <vector> + +#import <objc/NSObjCRuntime.h> + +#import <CoreGraphics/CoreGraphics.h> + +#import "POPDefines.h" + +#if SCENEKIT_SDK_AVAILABLE +#import <SceneKit/SceneKit.h> +#endif + +#if TARGET_OS_IPHONE +#import <UIKit/UIKit.h> +#endif + +#import "POPMath.h" + +namespace POP { + + /** Fixed two-size vector class */ + template <typename T> + struct Vector2 + { + private: + typedef T Vector2<T>::* const _data[2]; + static const _data _v; + + public: + T x; + T y; + + // Zero vector + static const Vector2 Zero() { return Vector2(0); } + + // Constructors + Vector2() {} + explicit Vector2(T v) { x = v; y = v; }; + explicit Vector2(T x0, T y0) : x(x0), y(y0) {}; + explicit Vector2(const CGPoint &p) : x(p.x), y (p.y) {} + explicit Vector2(const CGSize &s) : x(s.width), y (s.height) {} + + // Copy constructor + template<typename U> explicit Vector2(const Vector2<U> &v) : x(v.x), y(v.y) {} + + // Index operators + const T& operator[](size_t i) const { return this->*_v[i]; } + T& operator[](size_t i) { return this->*_v[i]; } + const T& operator()(size_t i) const { return this->*_v[i]; } + T& operator()(size_t i) { return this->*_v[i]; } + + // Backing data + T * data() { return &(this->*_v[0]); } + const T * data() const { return &(this->*_v[0]); } + + // Size + inline size_t size() const { return 2; } + + // Assignment + Vector2 &operator= (T v) { x = v; y = v; return *this;} + template<typename U> Vector2 &operator= (const Vector2<U> &v) { x = v.x; y = v.y; return *this;} + + // Negation + Vector2 operator- (void) const { return Vector2<T>(-x, -y); } + + // Equality + bool operator== (T v) const { return (x == v && y == v); } + bool operator== (const Vector2 &v) const { return (x == v.x && y == v.y); } + + // Inequality + bool operator!= (T v) const {return (x != v || y != v); } + bool operator!= (const Vector2 &v) const { return (x != v.x || y != v.y); } + + // Scalar Math + Vector2 operator+ (T v) const { return Vector2(x + v, y + v); } + Vector2 operator- (T v) const { return Vector2(x - v, y - v); } + Vector2 operator* (T v) const { return Vector2(x * v, y * v); } + Vector2 operator/ (T v) const { return Vector2(x / v, y / v); } + Vector2 &operator+= (T v) { x += v; y += v; return *this; }; + Vector2 &operator-= (T v) { x -= v; y -= v; return *this; }; + Vector2 &operator*= (T v) { x *= v; y *= v; return *this; }; + Vector2 &operator/= (T v) { x /= v; y /= v; return *this; }; + + // Vector Math + Vector2 operator+ (const Vector2 &v) const { return Vector2(x + v.x, y + v.y); } + Vector2 operator- (const Vector2 &v) const { return Vector2(x - v.x, y - v.y); } + Vector2 &operator+= (const Vector2 &v) { x += v.x; y += v.y; return *this; }; + Vector2 &operator-= (const Vector2 &v) { x -= v.x; y -= v.y; return *this; }; + + // Norms + CGFloat norm() const { return sqrtr(squaredNorm()); } + CGFloat squaredNorm() const { return x * x + y * y; } + + // Cast + template<typename U> Vector2<U> cast() const { return Vector2<U>(x, y); } + CGPoint cg_point() const { return CGPointMake(x, y); }; + }; + + template<typename T> + const typename Vector2<T>::_data Vector2<T>::_v = { &Vector2<T>::x, &Vector2<T>::y }; + + /** Fixed three-size vector class */ + template <typename T> + struct Vector3 + { + private: + typedef T Vector3<T>::* const _data[3]; + static const _data _v; + + public: + T x; + T y; + T z; + + // Zero vector + static const Vector3 Zero() { return Vector3(0); }; + + // Constructors + Vector3() {} + explicit Vector3(T v) : x(v), y(v), z(v) {}; + explicit Vector3(T x0, T y0, T z0) : x(x0), y(y0), z(z0) {}; + + // Copy constructor + template<typename U> explicit Vector3(const Vector3<U> &v) : x(v.x), y(v.y), z(v.z) {} + + // Index operators + const T& operator[](size_t i) const { return this->*_v[i]; } + T& operator[](size_t i) { return this->*_v[i]; } + const T& operator()(size_t i) const { return this->*_v[i]; } + T& operator()(size_t i) { return this->*_v[i]; } + + // Backing data + T * data() { return &(this->*_v[0]); } + const T * data() const { return &(this->*_v[0]); } + + // Size + inline size_t size() const { return 3; } + + // Assignment + Vector3 &operator= (T v) { x = v; y = v; z = v; return *this;} + template<typename U> Vector3 &operator= (const Vector3<U> &v) { x = v.x; y = v.y; z = v.z; return *this;} + + // Negation + Vector3 operator- (void) const { return Vector3<T>(-x, -y, -z); } + + // Equality + bool operator== (T v) const { return (x == v && y == v && z = v); } + bool operator== (const Vector3 &v) const { return (x == v.x && y == v.y && z == v.z); } + + // Inequality + bool operator!= (T v) const {return (x != v || y != v || z != v); } + bool operator!= (const Vector3 &v) const { return (x != v.x || y != v.y || z != v.z); } + + // Scalar Math + Vector3 operator+ (T v) const { return Vector3(x + v, y + v, z + v); } + Vector3 operator- (T v) const { return Vector3(x - v, y - v, z - v); } + Vector3 operator* (T v) const { return Vector3(x * v, y * v, z * v); } + Vector3 operator/ (T v) const { return Vector3(x / v, y / v, z / v); } + Vector3 &operator+= (T v) { x += v; y += v; z += v; return *this; }; + Vector3 &operator-= (T v) { x -= v; y -= v; z -= v; return *this; }; + Vector3 &operator*= (T v) { x *= v; y *= v; z *= v; return *this; }; + Vector3 &operator/= (T v) { x /= v; y /= v; z /= v; return *this; }; + + // Vector Math + Vector3 operator+ (const Vector3 &v) const { return Vector3(x + v.x, y + v.y, z + v.z); } + Vector3 operator- (const Vector3 &v) const { return Vector3(x - v.x, y - v.y, z - v.z); } + Vector3 &operator+= (const Vector3 &v) { x += v.x; y += v.y; z += v.z; return *this; }; + Vector3 &operator-= (const Vector3 &v) { x -= v.x; y -= v.y; z -= v.z; return *this; }; + + // Norms + CGFloat norm() const { return sqrtr(squaredNorm()); } + CGFloat squaredNorm() const { return x * x + y * y + z * z; } + + // Cast + template<typename U> Vector3<U> cast() const { return Vector3<U>(x, y, z); } + }; + + template<typename T> + const typename Vector3<T>::_data Vector3<T>::_v = { &Vector3<T>::x, &Vector3<T>::y, &Vector3<T>::z }; + + /** Fixed four-size vector class */ + template <typename T> + struct Vector4 + { + private: + typedef T Vector4<T>::* const _data[4]; + static const _data _v; + + public: + T x; + T y; + T z; + T w; + + // Zero vector + static const Vector4 Zero() { return Vector4(0); }; + + // Constructors + Vector4() {} + explicit Vector4(T v) : x(v), y(v), z(v), w(v) {}; + explicit Vector4(T x0, T y0, T z0, T w0) : x(x0), y(y0), z(z0), w(w0) {}; + + // Copy constructor + template<typename U> explicit Vector4(const Vector4<U> &v) : x(v.x), y(v.y), z(v.z), w(v.w) {} + + // Index operators + const T& operator[](size_t i) const { return this->*_v[i]; } + T& operator[](size_t i) { return this->*_v[i]; } + const T& operator()(size_t i) const { return this->*_v[i]; } + T& operator()(size_t i) { return this->*_v[i]; } + + // Backing data + T * data() { return &(this->*_v[0]); } + const T * data() const { return &(this->*_v[0]); } + + // Size + inline size_t size() const { return 4; } + + // Assignment + Vector4 &operator= (T v) { x = v; y = v; z = v; w = v; return *this;} + template<typename U> Vector4 &operator= (const Vector4<U> &v) { x = v.x; y = v.y; z = v.z; w = v.w; return *this;} + + // Negation + Vector4 operator- (void) const { return Vector4<T>(-x, -y, -z, -w); } + + // Equality + bool operator== (T v) const { return (x == v && y == v && z = v, w = v); } + bool operator== (const Vector4 &v) const { return (x == v.x && y == v.y && z == v.z && w == v.w); } + + // Inequality + bool operator!= (T v) const {return (x != v || y != v || z != v || w != v); } + bool operator!= (const Vector4 &v) const { return (x != v.x || y != v.y || z != v.z || w != v.w); } + + // Scalar Math + Vector4 operator+ (T v) const { return Vector4(x + v, y + v, z + v, w + v); } + Vector4 operator- (T v) const { return Vector4(x - v, y - v, z - v, w - v); } + Vector4 operator* (T v) const { return Vector4(x * v, y * v, z * v, w * v); } + Vector4 operator/ (T v) const { return Vector4(x / v, y / v, z / v, w / v); } + Vector4 &operator+= (T v) { x += v; y += v; z += v; w += v; return *this; }; + Vector4 &operator-= (T v) { x -= v; y -= v; z -= v; w -= v; return *this; }; + Vector4 &operator*= (T v) { x *= v; y *= v; z *= v; w *= v; return *this; }; + Vector4 &operator/= (T v) { x /= v; y /= v; z /= v; w /= v; return *this; }; + + // Vector Math + Vector4 operator+ (const Vector4 &v) const { return Vector4(x + v.x, y + v.y, z + v.z, w + v.w); } + Vector4 operator- (const Vector4 &v) const { return Vector4(x - v.x, y - v.y, z - v.z, w - v.w); } + Vector4 &operator+= (const Vector4 &v) { x += v.x; y += v.y; z += v.z; w += v.w; return *this; }; + Vector4 &operator-= (const Vector4 &v) { x -= v.x; y -= v.y; z -= v.z; w -= v.w; return *this; }; + + // Norms + CGFloat norm() const { return sqrtr(squaredNorm()); } + CGFloat squaredNorm() const { return x * x + y * y + z * z + w * w; } + + // Cast + template<typename U> Vector4<U> cast() const { return Vector4<U>(x, y, z, w); } + }; + + template<typename T> + const typename Vector4<T>::_data Vector4<T>::_v = { &Vector4<T>::x, &Vector4<T>::y, &Vector4<T>::z, &Vector4<T>::w }; + + /** Convenience typedefs */ + typedef Vector2<float> Vector2f; + typedef Vector2<double> Vector2d; + typedef Vector2<CGFloat> Vector2r; + typedef Vector3<float> Vector3f; + typedef Vector3<double> Vector3d; + typedef Vector3<CGFloat> Vector3r; + typedef Vector4<float> Vector4f; + typedef Vector4<double> Vector4d; + typedef Vector4<CGFloat> Vector4r; + + /** Variable-sized vector class */ + class Vector + { + size_t _count; + CGFloat *_values; + + private: + Vector(size_t); + Vector(const Vector& other); + + public: + ~Vector(); + + // Creates a new vector instance of count with values. Initializing a vector of size 0 returns NULL. + static Vector *new_vector(NSUInteger count, const CGFloat *values); + + // Creates a new vector given a pointer to another. Can return NULL. + static Vector *new_vector(const Vector * const other); + + // Creates a variable size vector given a static vector and count. + static Vector *new_vector(NSUInteger count, Vector4r vec); + + // Size of vector + NSUInteger size() const { return _count; } + + // Returns array of values + CGFloat *data () { return _values; } + const CGFloat *data () const { return _values; }; + + // Vector2r support + Vector2r vector2r() const; + + // Vector4r support + Vector4r vector4r() const; + + // CGFloat support + static Vector *new_cg_float(CGFloat f); + + // CGPoint support + CGPoint cg_point() const; + static Vector *new_cg_point(const CGPoint &p); + + // CGSize support + CGSize cg_size() const; + static Vector *new_cg_size(const CGSize &s); + + // CGRect support + CGRect cg_rect() const; + static Vector *new_cg_rect(const CGRect &r); + +#if TARGET_OS_IPHONE + // UIEdgeInsets support + UIEdgeInsets ui_edge_insets() const; + static Vector *new_ui_edge_insets(const UIEdgeInsets &i); +#endif + + // CGAffineTransform support + CGAffineTransform cg_affine_transform() const; + static Vector *new_cg_affine_transform(const CGAffineTransform &t); + + // CGColorRef support + CGColorRef cg_color() const CF_RETURNS_RETAINED; + static Vector *new_cg_color(CGColorRef color); + +#if SCENEKIT_SDK_AVAILABLE + // SCNVector3 support + SCNVector3 scn_vector3() const; + static Vector *new_scn_vector3(const SCNVector3 &vec3); + + // SCNVector4 support + SCNVector4 scn_vector4() const; + static Vector *new_scn_vector4(const SCNVector4 &vec4); +#endif + + // operator overloads + CGFloat &operator[](size_t i) const { + NSCAssert(size() > i, @"unexpected vector size:%lu", (unsigned long)size()); + return _values[i]; + } + + // Returns the mathematical length + CGFloat norm() const; + CGFloat squaredNorm() const; + + // Round to nearest sub + void subRound(CGFloat sub); + + // Returns string description + NSString * toString() const; + + // Operator overloads + template<typename U> Vector& operator= (const Vector4<U>& other) { + size_t count = MIN(_count, other.size()); + for (size_t i = 0; i < count; i++) { + _values[i] = other[i]; + } + return *this; + } + Vector& operator= (const Vector& other); + void swap(Vector &first, Vector &second); + bool operator==(const Vector &other) const; + bool operator!=(const Vector &other) const; + }; + + /** Convenience typedefs */ + typedef std::shared_ptr<Vector> VectorRef; + typedef std::shared_ptr<const Vector> VectorConstRef; + +} +#endif /* defined(__POP__FBVector__) */ diff --git a/Unit-2-Journal/Pods/pop/pop/POPVector.mm b/Unit-2-Journal/Pods/pop/pop/POPVector.mm new file mode 100644 index 0000000..96cee24 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/POPVector.mm @@ -0,0 +1,334 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "POPVector.h" + +#import "POPDefines.h" +#import "POPCGUtils.h" + +namespace POP +{ + + Vector::Vector(const size_t count) + { + _count = count; + _values = 0 != count ? (CGFloat *)calloc(count, sizeof(CGFloat)) : NULL; + } + + Vector::Vector(const Vector& other) + { + _count = other.size(); + _values = 0 != _count ? (CGFloat *)calloc(_count, sizeof(CGFloat)) : NULL; + if (0 != _count) { + memcpy(_values, other.data(), _count * sizeof(CGFloat)); + } + } + + Vector::~Vector() + { + if (NULL != _values) { + free(_values); + _values = NULL; + } + _count = 0; + } + + void Vector::swap(Vector &first, Vector &second) + { + using std::swap; + swap(first._count, second._count); + swap(first._values, second._values); + } + + Vector& Vector::operator=(const Vector& other) + { + Vector temp(other); + swap(*this, temp); + return *this; + } + + bool Vector::operator==(const Vector &other) const { + if (_count != other.size()) { + return false; + } + + const CGFloat * const values = other.data(); + + for (NSUInteger idx = 0; idx < _count; idx++) { + if (_values[idx] != values[idx]) { + return false; + } + } + + return true; + } + + bool Vector::operator!=(const Vector &other) const { + if (_count == other.size()) { + return false; + } + + const CGFloat * const values = other.data(); + + for (NSUInteger idx = 0; idx < _count; idx++) { + if (_values[idx] != values[idx]) { + return false; + } + } + + return true; + } + + Vector *Vector::new_vector(NSUInteger count, const CGFloat *values) + { + if (0 == count) { + return NULL; + } + + Vector *v = new Vector(count); + if (NULL != values) { + memcpy(v->_values, values, count * sizeof(CGFloat)); + } + return v; + } + + Vector *Vector::new_vector(const Vector * const other) + { + if (NULL == other) { + return NULL; + } + + return Vector::new_vector(other->size(), other->data()); + } + + Vector *Vector::new_vector(NSUInteger count, Vector4r vec) + { + if (0 == count) { + return NULL; + } + + Vector *v = new Vector(count); + + NSCAssert(count <= 4, @"unexpected count %lu", (unsigned long)count); + for (NSUInteger i = 0; i < MIN(count, (NSUInteger)4); i++) { + v->_values[i] = vec[i]; + } + + return v; + } + + Vector4r Vector::vector4r() const + { + Vector4r v = Vector4r::Zero(); + for (size_t i = 0; i < _count; i++) { + v(i) = _values[i]; + } + return v; + } + + Vector2r Vector::vector2r() const + { + Vector2r v = Vector2r::Zero(); + if (_count > 0) v(0) = _values[0]; + if (_count > 1) v(1) = _values[1]; + return v; + } + + Vector *Vector::new_cg_float(CGFloat f) + { + Vector *v = new Vector(1); + v->_values[0] = f; + return v; + } + + CGPoint Vector::cg_point () const + { + Vector2r v = vector2r(); + return CGPointMake(v(0), v(1)); + } + + Vector *Vector::new_cg_point(const CGPoint &p) + { + Vector *v = new Vector(2); + v->_values[0] = p.x; + v->_values[1] = p.y; + return v; + } + + CGSize Vector::cg_size () const + { + Vector2r v = vector2r(); + return CGSizeMake(v(0), v(1)); + } + + Vector *Vector::new_cg_size(const CGSize &s) + { + Vector *v = new Vector(2); + v->_values[0] = s.width; + v->_values[1] = s.height; + return v; + } + + CGRect Vector::cg_rect() const + { + return _count < 4 ? CGRectZero : CGRectMake(_values[0], _values[1], _values[2], _values[3]); + } + + Vector *Vector::new_cg_rect(const CGRect &r) + { + Vector *v = new Vector(4); + v->_values[0] = r.origin.x; + v->_values[1] = r.origin.y; + v->_values[2] = r.size.width; + v->_values[3] = r.size.height; + return v; + } + +#if TARGET_OS_IPHONE + + UIEdgeInsets Vector::ui_edge_insets() const + { + return _count < 4 ? UIEdgeInsetsZero : UIEdgeInsetsMake(_values[0], _values[1], _values[2], _values[3]); + } + + Vector *Vector::new_ui_edge_insets(const UIEdgeInsets &i) + { + Vector *v = new Vector(4); + v->_values[0] = i.top; + v->_values[1] = i.left; + v->_values[2] = i.bottom; + v->_values[3] = i.right; + return v; + } + +#endif + + CGAffineTransform Vector::cg_affine_transform() const + { + if (_count < 6) { + return CGAffineTransformIdentity; + } + + NSCAssert(size() >= 6, @"unexpected vector size:%lu", (unsigned long)size()); + CGAffineTransform t; + t.a = _values[0]; + t.b = _values[1]; + t.c = _values[2]; + t.d = _values[3]; + t.tx = _values[4]; + t.ty = _values[5]; + return t; + } + + Vector *Vector::new_cg_affine_transform(const CGAffineTransform &t) + { + Vector *v = new Vector(6); + v->_values[0] = t.a; + v->_values[1] = t.b; + v->_values[2] = t.c; + v->_values[3] = t.d; + v->_values[4] = t.tx; + v->_values[5] = t.ty; + return v; + } + + CGColorRef Vector::cg_color() const + { + if (_count < 4) { + return NULL; + } + return POPCGColorRGBACreate(_values); + } + + Vector *Vector::new_cg_color(CGColorRef color) + { + CGFloat rgba[4]; + POPCGColorGetRGBAComponents(color, rgba); + return new_vector(4, rgba); + } + +#if SCENEKIT_SDK_AVAILABLE + SCNVector3 Vector::scn_vector3() const + { + return _count < 3 ? SCNVector3Make(0.0, 0.0, 0.0) : SCNVector3Make(_values[0], _values[1], _values[2]); + } + + Vector *Vector::new_scn_vector3(const SCNVector3 &vec3) + { + Vector *v = new Vector(3); + v->_values[0] = vec3.x; + v->_values[1] = vec3.y; + v->_values[2] = vec3.z; + return v; + } + + SCNVector4 Vector::scn_vector4() const + { + return _count < 4 ? SCNVector4Make(0.0, 0.0, 0.0, 0.0) : SCNVector4Make(_values[0], _values[1], _values[2], _values[3]); + } + + Vector *Vector::new_scn_vector4(const SCNVector4 &vec4) + { + Vector *v = new Vector(4); + v->_values[0] = vec4.x; + v->_values[1] = vec4.y; + v->_values[2] = vec4.z; + v->_values[3] = vec4.w; + return v; + } +#endif + + void Vector::subRound(CGFloat sub) + { + for (NSUInteger idx = 0; idx < _count; idx++) { + _values[idx] = POPSubRound(_values[idx], sub); + } + } + + CGFloat Vector::norm() const + { + return sqrtr(squaredNorm()); + } + + CGFloat Vector::squaredNorm() const + { + CGFloat d = 0; + for (NSUInteger idx = 0; idx < _count; idx++) { + d += (_values[idx] * _values[idx]); + } + return d; + } + + NSString * Vector::toString() const + { + if (0 == _count) + return @"()"; + + if (1 == _count) + return [NSString stringWithFormat:@"%f", _values[0]]; + + if (2 == _count) + return [NSString stringWithFormat:@"(%.3f, %.3f)", _values[0], _values[1]]; + + NSMutableString *s = [NSMutableString stringWithCapacity:10]; + + for (NSUInteger idx = 0; idx < _count; idx++) { + if (0 == idx) { + [s appendFormat:@"[%.3f", _values[idx]]; + } else if (idx == _count - 1) { + [s appendFormat:@", %.3f]", _values[idx]]; + } else { + [s appendFormat:@", %.3f", _values[idx]]; + } + } + + return s; + + } +} diff --git a/Unit-2-Journal/Pods/pop/pop/WebCore/FloatConversion.h b/Unit-2-Journal/Pods/pop/pop/WebCore/FloatConversion.h new file mode 100644 index 0000000..4a16166 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/WebCore/FloatConversion.h @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2007 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FloatConversion_h +#define FloatConversion_h + +#include <CoreGraphics/CGBase.h> + +namespace WebCore { + + template<typename T> + float narrowPrecisionToFloat(T); + + template<> + inline float narrowPrecisionToFloat(double number) + { + return static_cast<float>(number); + } + + template<typename T> + CGFloat narrowPrecisionToCGFloat(T); + + template<> + inline CGFloat narrowPrecisionToCGFloat(double number) + { + return static_cast<CGFloat>(number); + } + +} // namespace WebCore + +#endif // FloatConversion_h diff --git a/Unit-2-Journal/Pods/pop/pop/WebCore/TransformationMatrix.cpp b/Unit-2-Journal/Pods/pop/pop/WebCore/TransformationMatrix.cpp new file mode 100644 index 0000000..7264ab5 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/WebCore/TransformationMatrix.cpp @@ -0,0 +1,1074 @@ +/* + * Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved. + * Copyright (C) 2009 Torch Mobile, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "TransformationMatrix.h" + +#include <math.h> + +#include "FloatConversion.h" + +inline double deg2rad(double d) { return d * M_PI / 180.0; } +inline double rad2deg(double r) { return r * 180.0 / M_PI; } +inline double deg2grad(double d) { return d * 400.0 / 360.0; } +inline double grad2deg(double g) { return g * 360.0 / 400.0; } +inline double turn2deg(double t) { return t * 360.0; } +inline double deg2turn(double d) { return d / 360.0; } +inline double rad2grad(double r) { return r * 200.0 / M_PI; } +inline double grad2rad(double g) { return g * M_PI / 200.0; } + +//using namespace std; + +namespace WebCore { + + // + // Supporting Math Functions + // + // This is a set of function from various places (attributed inline) to do things like + // inversion and decomposition of a 4x4 matrix. They are used throughout the code + // + + // + // Adapted from Matrix Inversion by Richard Carling, Graphics Gems <http://tog.acm.org/GraphicsGems/index.html>. + + // EULA: The Graphics Gems code is copyright-protected. In other words, you cannot claim the text of the code + // as your own and resell it. Using the code is permitted in any program, product, or library, non-commercial + // or commercial. Giving credit is not required, though is a nice gesture. The code comes as-is, and if there + // are any flaws or problems with any Gems code, nobody involved with Gems - authors, editors, publishers, or + // webmasters - are to be held responsible. Basically, don't be a jerk, and remember that anything free comes + // with no guarantee. + + // A clarification about the storage of matrix elements + // + // This class uses a 2 dimensional array internally to store the elements of the matrix. The first index into + // the array refers to the column that the element lies in; the second index refers to the row. + // + // In other words, this is the layout of the matrix: + // + // | m_matrix[0][0] m_matrix[1][0] m_matrix[2][0] m_matrix[3][0] | + // | m_matrix[0][1] m_matrix[1][1] m_matrix[2][1] m_matrix[3][1] | + // | m_matrix[0][2] m_matrix[1][2] m_matrix[2][2] m_matrix[3][2] | + // | m_matrix[0][3] m_matrix[1][3] m_matrix[2][3] m_matrix[3][3] | + + typedef double Vector4[4]; + typedef double Vector3[3]; + + const double SMALL_NUMBER = 1.e-8; + + // inverse(original_matrix, inverse_matrix) + // + // calculate the inverse of a 4x4 matrix + // + // -1 + // A = ___1__ adjoint A + // det A + + // double = determinant2x2(double a, double b, double c, double d) + // + // calculate the determinant of a 2x2 matrix. + + static double determinant2x2(double a, double b, double c, double d) + { + return a * d - b * c; + } + + // double = determinant3x3(a1, a2, a3, b1, b2, b3, c1, c2, c3) + // + // Calculate the determinant of a 3x3 matrix + // in the form + // + // | a1, b1, c1 | + // | a2, b2, c2 | + // | a3, b3, c3 | + + static double determinant3x3(double a1, double a2, double a3, double b1, double b2, double b3, double c1, double c2, double c3) + { + return a1 * determinant2x2(b2, b3, c2, c3) + - b1 * determinant2x2(a2, a3, c2, c3) + + c1 * determinant2x2(a2, a3, b2, b3); + } + + // double = determinant4x4(matrix) + // + // calculate the determinant of a 4x4 matrix. + + static double determinant4x4(const TransformationMatrix::Matrix4& m) + { + // Assign to individual variable names to aid selecting + // correct elements + + double a1 = m[0][0]; + double b1 = m[0][1]; + double c1 = m[0][2]; + double d1 = m[0][3]; + + double a2 = m[1][0]; + double b2 = m[1][1]; + double c2 = m[1][2]; + double d2 = m[1][3]; + + double a3 = m[2][0]; + double b3 = m[2][1]; + double c3 = m[2][2]; + double d3 = m[2][3]; + + double a4 = m[3][0]; + double b4 = m[3][1]; + double c4 = m[3][2]; + double d4 = m[3][3]; + + return a1 * determinant3x3(b2, b3, b4, c2, c3, c4, d2, d3, d4) + - b1 * determinant3x3(a2, a3, a4, c2, c3, c4, d2, d3, d4) + + c1 * determinant3x3(a2, a3, a4, b2, b3, b4, d2, d3, d4) + - d1 * determinant3x3(a2, a3, a4, b2, b3, b4, c2, c3, c4); + } + + // adjoint( original_matrix, inverse_matrix ) + // + // calculate the adjoint of a 4x4 matrix + // + // Let a denote the minor determinant of matrix A obtained by + // ij + // + // deleting the ith row and jth column from A. + // + // i+j + // Let b = (-1) a + // ij ji + // + // The matrix B = (b ) is the adjoint of A + // ij + + static void adjoint(const TransformationMatrix::Matrix4& matrix, TransformationMatrix::Matrix4& result) + { + // Assign to individual variable names to aid + // selecting correct values + double a1 = matrix[0][0]; + double b1 = matrix[0][1]; + double c1 = matrix[0][2]; + double d1 = matrix[0][3]; + + double a2 = matrix[1][0]; + double b2 = matrix[1][1]; + double c2 = matrix[1][2]; + double d2 = matrix[1][3]; + + double a3 = matrix[2][0]; + double b3 = matrix[2][1]; + double c3 = matrix[2][2]; + double d3 = matrix[2][3]; + + double a4 = matrix[3][0]; + double b4 = matrix[3][1]; + double c4 = matrix[3][2]; + double d4 = matrix[3][3]; + + // Row column labeling reversed since we transpose rows & columns + result[0][0] = determinant3x3(b2, b3, b4, c2, c3, c4, d2, d3, d4); + result[1][0] = - determinant3x3(a2, a3, a4, c2, c3, c4, d2, d3, d4); + result[2][0] = determinant3x3(a2, a3, a4, b2, b3, b4, d2, d3, d4); + result[3][0] = - determinant3x3(a2, a3, a4, b2, b3, b4, c2, c3, c4); + + result[0][1] = - determinant3x3(b1, b3, b4, c1, c3, c4, d1, d3, d4); + result[1][1] = determinant3x3(a1, a3, a4, c1, c3, c4, d1, d3, d4); + result[2][1] = - determinant3x3(a1, a3, a4, b1, b3, b4, d1, d3, d4); + result[3][1] = determinant3x3(a1, a3, a4, b1, b3, b4, c1, c3, c4); + + result[0][2] = determinant3x3(b1, b2, b4, c1, c2, c4, d1, d2, d4); + result[1][2] = - determinant3x3(a1, a2, a4, c1, c2, c4, d1, d2, d4); + result[2][2] = determinant3x3(a1, a2, a4, b1, b2, b4, d1, d2, d4); + result[3][2] = - determinant3x3(a1, a2, a4, b1, b2, b4, c1, c2, c4); + + result[0][3] = - determinant3x3(b1, b2, b3, c1, c2, c3, d1, d2, d3); + result[1][3] = determinant3x3(a1, a2, a3, c1, c2, c3, d1, d2, d3); + result[2][3] = - determinant3x3(a1, a2, a3, b1, b2, b3, d1, d2, d3); + result[3][3] = determinant3x3(a1, a2, a3, b1, b2, b3, c1, c2, c3); + } + + // Returns false if the matrix is not invertible + static bool inverse(const TransformationMatrix::Matrix4& matrix, TransformationMatrix::Matrix4& result) + { + // Calculate the adjoint matrix + adjoint(matrix, result); + + // Calculate the 4x4 determinant + // If the determinant is zero, + // then the inverse matrix is not unique. + double det = determinant4x4(matrix); + + if (fabs(det) < SMALL_NUMBER) + return false; + + // Scale the adjoint matrix to get the inverse + + for (int i = 0; i < 4; i++) + for (int j = 0; j < 4; j++) + result[i][j] = result[i][j] / det; + + return true; + } + + // End of code adapted from Matrix Inversion by Richard Carling + + // Perform a decomposition on the passed matrix, return false if unsuccessful + // From Graphics Gems: unmatrix.c + + // Transpose rotation portion of matrix a, return b + static void transposeMatrix4(const TransformationMatrix::Matrix4& a, TransformationMatrix::Matrix4& b) + { + for (int i = 0; i < 4; i++) + for (int j = 0; j < 4; j++) + b[i][j] = a[j][i]; + } + + // Multiply a homogeneous point by a matrix and return the transformed point + static void v4MulPointByMatrix(const Vector4 p, const TransformationMatrix::Matrix4& m, Vector4 result) + { + result[0] = (p[0] * m[0][0]) + (p[1] * m[1][0]) + + (p[2] * m[2][0]) + (p[3] * m[3][0]); + result[1] = (p[0] * m[0][1]) + (p[1] * m[1][1]) + + (p[2] * m[2][1]) + (p[3] * m[3][1]); + result[2] = (p[0] * m[0][2]) + (p[1] * m[1][2]) + + (p[2] * m[2][2]) + (p[3] * m[3][2]); + result[3] = (p[0] * m[0][3]) + (p[1] * m[1][3]) + + (p[2] * m[2][3]) + (p[3] * m[3][3]); + } + + static double v3Length(Vector3 a) + { + return sqrt((a[0] * a[0]) + (a[1] * a[1]) + (a[2] * a[2])); + } + + static void v3Scale(Vector3 v, double desiredLength) + { + double len = v3Length(v); + if (len != 0) { + double l = desiredLength / len; + v[0] *= l; + v[1] *= l; + v[2] *= l; + } + } + + static double v3Dot(const Vector3 a, const Vector3 b) + { + return (a[0] * b[0]) + (a[1] * b[1]) + (a[2] * b[2]); + } + + // Make a linear combination of two vectors and return the result. + // result = (a * ascl) + (b * bscl) + static void v3Combine(const Vector3 a, const Vector3 b, Vector3 result, double ascl, double bscl) + { + result[0] = (ascl * a[0]) + (bscl * b[0]); + result[1] = (ascl * a[1]) + (bscl * b[1]); + result[2] = (ascl * a[2]) + (bscl * b[2]); + } + + // Return the cross product result = a cross b */ + static void v3Cross(const Vector3 a, const Vector3 b, Vector3 result) + { + result[0] = (a[1] * b[2]) - (a[2] * b[1]); + result[1] = (a[2] * b[0]) - (a[0] * b[2]); + result[2] = (a[0] * b[1]) - (a[1] * b[0]); + } + + static bool decompose(const TransformationMatrix::Matrix4& mat, TransformationMatrix::DecomposedType& result) + { + TransformationMatrix::Matrix4 localMatrix; + memcpy(localMatrix, mat, sizeof(TransformationMatrix::Matrix4)); + + // Normalize the matrix. + if (localMatrix[3][3] == 0) + return false; + + int i, j; + for (i = 0; i < 4; i++) + for (j = 0; j < 4; j++) + localMatrix[i][j] /= localMatrix[3][3]; + + // perspectiveMatrix is used to solve for perspective, but it also provides + // an easy way to test for singularity of the upper 3x3 component. + TransformationMatrix::Matrix4 perspectiveMatrix; + memcpy(perspectiveMatrix, localMatrix, sizeof(TransformationMatrix::Matrix4)); + for (i = 0; i < 3; i++) + perspectiveMatrix[i][3] = 0; + perspectiveMatrix[3][3] = 1; + + if (determinant4x4(perspectiveMatrix) == 0) + return false; + + // First, isolate perspective. This is the messiest. + if (localMatrix[0][3] != 0 || localMatrix[1][3] != 0 || localMatrix[2][3] != 0) { + // rightHandSide is the right hand side of the equation. + Vector4 rightHandSide; + rightHandSide[0] = localMatrix[0][3]; + rightHandSide[1] = localMatrix[1][3]; + rightHandSide[2] = localMatrix[2][3]; + rightHandSide[3] = localMatrix[3][3]; + + // Solve the equation by inverting perspectiveMatrix and multiplying + // rightHandSide by the inverse. (This is the easiest way, not + // necessarily the best.) + TransformationMatrix::Matrix4 inversePerspectiveMatrix, transposedInversePerspectiveMatrix; + inverse(perspectiveMatrix, inversePerspectiveMatrix); + transposeMatrix4(inversePerspectiveMatrix, transposedInversePerspectiveMatrix); + + Vector4 perspectivePoint; + v4MulPointByMatrix(rightHandSide, transposedInversePerspectiveMatrix, perspectivePoint); + + result.perspectiveX = perspectivePoint[0]; + result.perspectiveY = perspectivePoint[1]; + result.perspectiveZ = perspectivePoint[2]; + result.perspectiveW = perspectivePoint[3]; + + // Clear the perspective partition + localMatrix[0][3] = localMatrix[1][3] = localMatrix[2][3] = 0; + localMatrix[3][3] = 1; + } else { + // No perspective. + result.perspectiveX = result.perspectiveY = result.perspectiveZ = 0; + result.perspectiveW = 1; + } + + // Next take care of translation (easy). + result.translateX = localMatrix[3][0]; + localMatrix[3][0] = 0; + result.translateY = localMatrix[3][1]; + localMatrix[3][1] = 0; + result.translateZ = localMatrix[3][2]; + localMatrix[3][2] = 0; + + // Vector4 type and functions need to be added to the common set. + Vector3 row[3], pdum3; + + // Now get scale and shear. + for (i = 0; i < 3; i++) { + row[i][0] = localMatrix[i][0]; + row[i][1] = localMatrix[i][1]; + row[i][2] = localMatrix[i][2]; + } + + // Compute X scale factor and normalize first row. + result.scaleX = v3Length(row[0]); + v3Scale(row[0], 1.0); + + // Compute XY shear factor and make 2nd row orthogonal to 1st. + result.skewXY = v3Dot(row[0], row[1]); + v3Combine(row[1], row[0], row[1], 1.0, -result.skewXY); + + // Now, compute Y scale and normalize 2nd row. + result.scaleY = v3Length(row[1]); + v3Scale(row[1], 1.0); + result.skewXY /= result.scaleY; + + // Compute XZ and YZ shears, orthogonalize 3rd row. + result.skewXZ = v3Dot(row[0], row[2]); + v3Combine(row[2], row[0], row[2], 1.0, -result.skewXZ); + result.skewYZ = v3Dot(row[1], row[2]); + v3Combine(row[2], row[1], row[2], 1.0, -result.skewYZ); + + // Next, get Z scale and normalize 3rd row. + result.scaleZ = v3Length(row[2]); + v3Scale(row[2], 1.0); + result.skewXZ /= result.scaleZ; + result.skewYZ /= result.scaleZ; + + // At this point, the matrix (in rows[]) is orthonormal. + // Check for a coordinate system flip. If the determinant + // is -1, then negate the matrix and the scaling factors. + v3Cross(row[1], row[2], pdum3); + if (v3Dot(row[0], pdum3) < 0) { + + result.scaleX *= -1; + result.scaleY *= -1; + result.scaleZ *= -1; + + for (i = 0; i < 3; i++) { + row[i][0] *= -1; + row[i][1] *= -1; + row[i][2] *= -1; + } + } + + // Now, get the rotations out, as described in the gem. + + result.rotateY = asin(-row[0][2]); + if (cos(result.rotateY) != 0) { + result.rotateX = atan2(row[1][2], row[2][2]); + result.rotateZ = atan2(row[0][1], row[0][0]); + } else { + result.rotateX = atan2(-row[2][0], row[1][1]); + result.rotateZ = 0; + } + + double s, t, x, y, z, w; + + t = row[0][0] + row[1][1] + row[2][2] + 1.0; + + if (t > 1e-4) { + s = 0.5 / sqrt(t); + w = 0.25 / s; + x = (row[2][1] - row[1][2]) * s; + y = (row[0][2] - row[2][0]) * s; + z = (row[1][0] - row[0][1]) * s; + } else if (row[0][0] > row[1][1] && row[0][0] > row[2][2]) { + s = sqrt (1.0 + row[0][0] - row[1][1] - row[2][2]) * 2.0; // S=4*qx + x = 0.25 * s; + y = (row[0][1] + row[1][0]) / s; + z = (row[0][2] + row[2][0]) / s; + w = (row[2][1] - row[1][2]) / s; + } else if (row[1][1] > row[2][2]) { + s = sqrt (1.0 + row[1][1] - row[0][0] - row[2][2]) * 2.0; // S=4*qy + x = (row[0][1] + row[1][0]) / s; + y = 0.25 * s; + z = (row[1][2] + row[2][1]) / s; + w = (row[0][2] - row[2][0]) / s; + } else { + s = sqrt(1.0 + row[2][2] - row[0][0] - row[1][1]) * 2.0; // S=4*qz + x = (row[0][2] + row[2][0]) / s; + y = (row[1][2] + row[2][1]) / s; + z = 0.25 * s; + w = (row[1][0] - row[0][1]) / s; + } + + result.quaternionX = x; + result.quaternionY = y; + result.quaternionZ = z; + result.quaternionW = w; + + return true; + } + + // Perform a spherical linear interpolation between the two + // passed quaternions with 0 <= t <= 1 + static void slerp(double qa[4], const double qb[4], double t) + { + double ax, ay, az, aw; + double bx, by, bz, bw; + double cx, cy, cz, cw; + double angle; + double th, invth, scale, invscale; + + ax = qa[0]; ay = qa[1]; az = qa[2]; aw = qa[3]; + bx = qb[0]; by = qb[1]; bz = qb[2]; bw = qb[3]; + + angle = ax * bx + ay * by + az * bz + aw * bw; + + if (angle < 0.0) { + ax = -ax; ay = -ay; + az = -az; aw = -aw; + angle = -angle; + } + + if (angle + 1.0 > .05) { + if (1.0 - angle >= .05) { + th = acos (angle); + invth = 1.0 / sin (th); + scale = sin (th * (1.0 - t)) * invth; + invscale = sin (th * t) * invth; + } else { + scale = 1.0 - t; + invscale = t; + } + } else { + bx = -ay; + by = ax; + bz = -aw; + bw = az; + scale = sin(M_PI * (.5 - t)); + invscale = sin (M_PI * t); + } + + cx = ax * scale + bx * invscale; + cy = ay * scale + by * invscale; + cz = az * scale + bz * invscale; + cw = aw * scale + bw * invscale; + + qa[0] = cx; qa[1] = cy; qa[2] = cz; qa[3] = cw; + } + + // End of Supporting Math Functions + + TransformationMatrix::TransformationMatrix(const CGAffineTransform& t) + { + setMatrix(t.a, t.b, t.c, t.d, t.tx, t.ty); + } + + TransformationMatrix::TransformationMatrix(const CATransform3D& t) + { + setMatrix( + t.m11, t.m12, t.m13, t.m14, + t.m21, t.m22, t.m23, t.m24, + t.m31, t.m32, t.m33, t.m34, + t.m41, t.m42, t.m43, t.m44); + } + + CATransform3D TransformationMatrix::transform3d() const + { + CATransform3D t; + t.m11 = narrowPrecisionToFloat(m11()); + t.m12 = narrowPrecisionToFloat(m12()); + t.m13 = narrowPrecisionToFloat(m13()); + t.m14 = narrowPrecisionToFloat(m14()); + t.m21 = narrowPrecisionToFloat(m21()); + t.m22 = narrowPrecisionToFloat(m22()); + t.m23 = narrowPrecisionToFloat(m23()); + t.m24 = narrowPrecisionToFloat(m24()); + t.m31 = narrowPrecisionToFloat(m31()); + t.m32 = narrowPrecisionToFloat(m32()); + t.m33 = narrowPrecisionToFloat(m33()); + t.m34 = narrowPrecisionToFloat(m34()); + t.m41 = narrowPrecisionToFloat(m41()); + t.m42 = narrowPrecisionToFloat(m42()); + t.m43 = narrowPrecisionToFloat(m43()); + t.m44 = narrowPrecisionToFloat(m44()); + return t; + } + + CGAffineTransform TransformationMatrix::affineTransform () const + { + CGAffineTransform t; + t.a = narrowPrecisionToFloat(m11()); + t.b = narrowPrecisionToFloat(m12()); + t.c = narrowPrecisionToFloat(m21()); + t.d = narrowPrecisionToFloat(m22()); + t.tx = narrowPrecisionToFloat(m41()); + t.ty = narrowPrecisionToFloat(m42()); + return t; + } + + TransformationMatrix::operator CATransform3D() const + { + return transform3d(); + } + + TransformationMatrix& TransformationMatrix::scale(double s) + { + return scaleNonUniform(s, s); + } + + TransformationMatrix& TransformationMatrix::rotateFromVector(double x, double y) + { + return rotate(rad2deg(atan2(y, x))); + } + + TransformationMatrix& TransformationMatrix::flipX() + { + return scaleNonUniform(-1.0, 1.0); + } + + TransformationMatrix& TransformationMatrix::flipY() + { + return scaleNonUniform(1.0, -1.0); + } + + TransformationMatrix& TransformationMatrix::scaleNonUniform(double sx, double sy) + { + m_matrix[0][0] *= sx; + m_matrix[0][1] *= sx; + m_matrix[0][2] *= sx; + m_matrix[0][3] *= sx; + + m_matrix[1][0] *= sy; + m_matrix[1][1] *= sy; + m_matrix[1][2] *= sy; + m_matrix[1][3] *= sy; + return *this; + } + + TransformationMatrix& TransformationMatrix::scale3d(double sx, double sy, double sz) + { + scaleNonUniform(sx, sy); + + m_matrix[2][0] *= sz; + m_matrix[2][1] *= sz; + m_matrix[2][2] *= sz; + m_matrix[2][3] *= sz; + return *this; + } + + TransformationMatrix& TransformationMatrix::rotate3d(double x, double y, double z, double angle) + { + // Normalize the axis of rotation + double length = sqrt(x * x + y * y + z * z); + if (length == 0) { + // A direction vector that cannot be normalized, such as [0, 0, 0], will cause the rotation to not be applied. + return *this; + } else if (length != 1) { + x /= length; + y /= length; + z /= length; + } + + // Angles are in degrees. Switch to radians. + angle = deg2rad(angle); + + double sinTheta = sin(angle); + double cosTheta = cos(angle); + + TransformationMatrix mat; + + // Optimize cases where the axis is along a major axis + if (x == 1.0 && y == 0.0 && z == 0.0) { + mat.m_matrix[0][0] = 1.0; + mat.m_matrix[0][1] = 0.0; + mat.m_matrix[0][2] = 0.0; + mat.m_matrix[1][0] = 0.0; + mat.m_matrix[1][1] = cosTheta; + mat.m_matrix[1][2] = sinTheta; + mat.m_matrix[2][0] = 0.0; + mat.m_matrix[2][1] = -sinTheta; + mat.m_matrix[2][2] = cosTheta; + mat.m_matrix[0][3] = mat.m_matrix[1][3] = mat.m_matrix[2][3] = 0.0; + mat.m_matrix[3][0] = mat.m_matrix[3][1] = mat.m_matrix[3][2] = 0.0; + mat.m_matrix[3][3] = 1.0; + } else if (x == 0.0 && y == 1.0 && z == 0.0) { + mat.m_matrix[0][0] = cosTheta; + mat.m_matrix[0][1] = 0.0; + mat.m_matrix[0][2] = -sinTheta; + mat.m_matrix[1][0] = 0.0; + mat.m_matrix[1][1] = 1.0; + mat.m_matrix[1][2] = 0.0; + mat.m_matrix[2][0] = sinTheta; + mat.m_matrix[2][1] = 0.0; + mat.m_matrix[2][2] = cosTheta; + mat.m_matrix[0][3] = mat.m_matrix[1][3] = mat.m_matrix[2][3] = 0.0; + mat.m_matrix[3][0] = mat.m_matrix[3][1] = mat.m_matrix[3][2] = 0.0; + mat.m_matrix[3][3] = 1.0; + } else if (x == 0.0 && y == 0.0 && z == 1.0) { + mat.m_matrix[0][0] = cosTheta; + mat.m_matrix[0][1] = sinTheta; + mat.m_matrix[0][2] = 0.0; + mat.m_matrix[1][0] = -sinTheta; + mat.m_matrix[1][1] = cosTheta; + mat.m_matrix[1][2] = 0.0; + mat.m_matrix[2][0] = 0.0; + mat.m_matrix[2][1] = 0.0; + mat.m_matrix[2][2] = 1.0; + mat.m_matrix[0][3] = mat.m_matrix[1][3] = mat.m_matrix[2][3] = 0.0; + mat.m_matrix[3][0] = mat.m_matrix[3][1] = mat.m_matrix[3][2] = 0.0; + mat.m_matrix[3][3] = 1.0; + } else { + // This case is the rotation about an arbitrary unit vector. + // + // Formula is adapted from Wikipedia article on Rotation matrix, + // http://en.wikipedia.org/wiki/Rotation_matrix#Rotation_matrix_from_axis_and_angle + // + // An alternate resource with the same matrix: http://www.fastgraph.com/makegames/3drotation/ + // + double oneMinusCosTheta = 1 - cosTheta; + mat.m_matrix[0][0] = cosTheta + x * x * oneMinusCosTheta; + mat.m_matrix[0][1] = y * x * oneMinusCosTheta + z * sinTheta; + mat.m_matrix[0][2] = z * x * oneMinusCosTheta - y * sinTheta; + mat.m_matrix[1][0] = x * y * oneMinusCosTheta - z * sinTheta; + mat.m_matrix[1][1] = cosTheta + y * y * oneMinusCosTheta; + mat.m_matrix[1][2] = z * y * oneMinusCosTheta + x * sinTheta; + mat.m_matrix[2][0] = x * z * oneMinusCosTheta + y * sinTheta; + mat.m_matrix[2][1] = y * z * oneMinusCosTheta - x * sinTheta; + mat.m_matrix[2][2] = cosTheta + z * z * oneMinusCosTheta; + mat.m_matrix[0][3] = mat.m_matrix[1][3] = mat.m_matrix[2][3] = 0.0; + mat.m_matrix[3][0] = mat.m_matrix[3][1] = mat.m_matrix[3][2] = 0.0; + mat.m_matrix[3][3] = 1.0; + } + multiply(mat); + return *this; + } + + TransformationMatrix& TransformationMatrix::rotate3d(double rx, double ry, double rz) + { + // Angles are in degrees. Switch to radians. + rx = deg2rad(rx); + ry = deg2rad(ry); + rz = deg2rad(rz); + + TransformationMatrix mat; + + double sinTheta = sin(rz); + double cosTheta = cos(rz); + + mat.m_matrix[0][0] = cosTheta; + mat.m_matrix[0][1] = sinTheta; + mat.m_matrix[0][2] = 0.0; + mat.m_matrix[1][0] = -sinTheta; + mat.m_matrix[1][1] = cosTheta; + mat.m_matrix[1][2] = 0.0; + mat.m_matrix[2][0] = 0.0; + mat.m_matrix[2][1] = 0.0; + mat.m_matrix[2][2] = 1.0; + mat.m_matrix[0][3] = mat.m_matrix[1][3] = mat.m_matrix[2][3] = 0.0; + mat.m_matrix[3][0] = mat.m_matrix[3][1] = mat.m_matrix[3][2] = 0.0; + mat.m_matrix[3][3] = 1.0; + + TransformationMatrix rmat(mat); + + sinTheta = sin(ry); + cosTheta = cos(ry); + + mat.m_matrix[0][0] = cosTheta; + mat.m_matrix[0][1] = 0.0; + mat.m_matrix[0][2] = -sinTheta; + mat.m_matrix[1][0] = 0.0; + mat.m_matrix[1][1] = 1.0; + mat.m_matrix[1][2] = 0.0; + mat.m_matrix[2][0] = sinTheta; + mat.m_matrix[2][1] = 0.0; + mat.m_matrix[2][2] = cosTheta; + mat.m_matrix[0][3] = mat.m_matrix[1][3] = mat.m_matrix[2][3] = 0.0; + mat.m_matrix[3][0] = mat.m_matrix[3][1] = mat.m_matrix[3][2] = 0.0; + mat.m_matrix[3][3] = 1.0; + + rmat.multiply(mat); + + sinTheta = sin(rx); + cosTheta = cos(rx); + + mat.m_matrix[0][0] = 1.0; + mat.m_matrix[0][1] = 0.0; + mat.m_matrix[0][2] = 0.0; + mat.m_matrix[1][0] = 0.0; + mat.m_matrix[1][1] = cosTheta; + mat.m_matrix[1][2] = sinTheta; + mat.m_matrix[2][0] = 0.0; + mat.m_matrix[2][1] = -sinTheta; + mat.m_matrix[2][2] = cosTheta; + mat.m_matrix[0][3] = mat.m_matrix[1][3] = mat.m_matrix[2][3] = 0.0; + mat.m_matrix[3][0] = mat.m_matrix[3][1] = mat.m_matrix[3][2] = 0.0; + mat.m_matrix[3][3] = 1.0; + + rmat.multiply(mat); + + multiply(rmat); + return *this; + } + + TransformationMatrix& TransformationMatrix::translate(double tx, double ty) + { + m_matrix[3][0] += tx * m_matrix[0][0] + ty * m_matrix[1][0]; + m_matrix[3][1] += tx * m_matrix[0][1] + ty * m_matrix[1][1]; + m_matrix[3][2] += tx * m_matrix[0][2] + ty * m_matrix[1][2]; + m_matrix[3][3] += tx * m_matrix[0][3] + ty * m_matrix[1][3]; + return *this; + } + + TransformationMatrix& TransformationMatrix::translate3d(double tx, double ty, double tz) + { + m_matrix[3][0] += tx * m_matrix[0][0] + ty * m_matrix[1][0] + tz * m_matrix[2][0]; + m_matrix[3][1] += tx * m_matrix[0][1] + ty * m_matrix[1][1] + tz * m_matrix[2][1]; + m_matrix[3][2] += tx * m_matrix[0][2] + ty * m_matrix[1][2] + tz * m_matrix[2][2]; + m_matrix[3][3] += tx * m_matrix[0][3] + ty * m_matrix[1][3] + tz * m_matrix[2][3]; + return *this; + } + + TransformationMatrix& TransformationMatrix::translateRight(double tx, double ty) + { + if (tx != 0) { + m_matrix[0][0] += m_matrix[0][3] * tx; + m_matrix[1][0] += m_matrix[1][3] * tx; + m_matrix[2][0] += m_matrix[2][3] * tx; + m_matrix[3][0] += m_matrix[3][3] * tx; + } + + if (ty != 0) { + m_matrix[0][1] += m_matrix[0][3] * ty; + m_matrix[1][1] += m_matrix[1][3] * ty; + m_matrix[2][1] += m_matrix[2][3] * ty; + m_matrix[3][1] += m_matrix[3][3] * ty; + } + + return *this; + } + + TransformationMatrix& TransformationMatrix::translateRight3d(double tx, double ty, double tz) + { + translateRight(tx, ty); + if (tz != 0) { + m_matrix[0][2] += m_matrix[0][3] * tz; + m_matrix[1][2] += m_matrix[1][3] * tz; + m_matrix[2][2] += m_matrix[2][3] * tz; + m_matrix[3][2] += m_matrix[3][3] * tz; + } + + return *this; + } + + TransformationMatrix& TransformationMatrix::skew(double sx, double sy) + { + // angles are in degrees. Switch to radians + sx = deg2rad(sx); + sy = deg2rad(sy); + + TransformationMatrix mat; + mat.m_matrix[0][1] = tan(sy); // note that the y shear goes in the first row + mat.m_matrix[1][0] = tan(sx); // and the x shear in the second row + + multiply(mat); + return *this; + } + + TransformationMatrix& TransformationMatrix::applyPerspective(double p) + { + TransformationMatrix mat; + if (p != 0) + mat.m_matrix[2][3] = -1/p; + + multiply(mat); + return *this; + } + + // this = mat * this. + TransformationMatrix& TransformationMatrix::multiply(const TransformationMatrix& mat) + { + Matrix4 tmp; + + tmp[0][0] = (mat.m_matrix[0][0] * m_matrix[0][0] + mat.m_matrix[0][1] * m_matrix[1][0] + + mat.m_matrix[0][2] * m_matrix[2][0] + mat.m_matrix[0][3] * m_matrix[3][0]); + tmp[0][1] = (mat.m_matrix[0][0] * m_matrix[0][1] + mat.m_matrix[0][1] * m_matrix[1][1] + + mat.m_matrix[0][2] * m_matrix[2][1] + mat.m_matrix[0][3] * m_matrix[3][1]); + tmp[0][2] = (mat.m_matrix[0][0] * m_matrix[0][2] + mat.m_matrix[0][1] * m_matrix[1][2] + + mat.m_matrix[0][2] * m_matrix[2][2] + mat.m_matrix[0][3] * m_matrix[3][2]); + tmp[0][3] = (mat.m_matrix[0][0] * m_matrix[0][3] + mat.m_matrix[0][1] * m_matrix[1][3] + + mat.m_matrix[0][2] * m_matrix[2][3] + mat.m_matrix[0][3] * m_matrix[3][3]); + + tmp[1][0] = (mat.m_matrix[1][0] * m_matrix[0][0] + mat.m_matrix[1][1] * m_matrix[1][0] + + mat.m_matrix[1][2] * m_matrix[2][0] + mat.m_matrix[1][3] * m_matrix[3][0]); + tmp[1][1] = (mat.m_matrix[1][0] * m_matrix[0][1] + mat.m_matrix[1][1] * m_matrix[1][1] + + mat.m_matrix[1][2] * m_matrix[2][1] + mat.m_matrix[1][3] * m_matrix[3][1]); + tmp[1][2] = (mat.m_matrix[1][0] * m_matrix[0][2] + mat.m_matrix[1][1] * m_matrix[1][2] + + mat.m_matrix[1][2] * m_matrix[2][2] + mat.m_matrix[1][3] * m_matrix[3][2]); + tmp[1][3] = (mat.m_matrix[1][0] * m_matrix[0][3] + mat.m_matrix[1][1] * m_matrix[1][3] + + mat.m_matrix[1][2] * m_matrix[2][3] + mat.m_matrix[1][3] * m_matrix[3][3]); + + tmp[2][0] = (mat.m_matrix[2][0] * m_matrix[0][0] + mat.m_matrix[2][1] * m_matrix[1][0] + + mat.m_matrix[2][2] * m_matrix[2][0] + mat.m_matrix[2][3] * m_matrix[3][0]); + tmp[2][1] = (mat.m_matrix[2][0] * m_matrix[0][1] + mat.m_matrix[2][1] * m_matrix[1][1] + + mat.m_matrix[2][2] * m_matrix[2][1] + mat.m_matrix[2][3] * m_matrix[3][1]); + tmp[2][2] = (mat.m_matrix[2][0] * m_matrix[0][2] + mat.m_matrix[2][1] * m_matrix[1][2] + + mat.m_matrix[2][2] * m_matrix[2][2] + mat.m_matrix[2][3] * m_matrix[3][2]); + tmp[2][3] = (mat.m_matrix[2][0] * m_matrix[0][3] + mat.m_matrix[2][1] * m_matrix[1][3] + + mat.m_matrix[2][2] * m_matrix[2][3] + mat.m_matrix[2][3] * m_matrix[3][3]); + + tmp[3][0] = (mat.m_matrix[3][0] * m_matrix[0][0] + mat.m_matrix[3][1] * m_matrix[1][0] + + mat.m_matrix[3][2] * m_matrix[2][0] + mat.m_matrix[3][3] * m_matrix[3][0]); + tmp[3][1] = (mat.m_matrix[3][0] * m_matrix[0][1] + mat.m_matrix[3][1] * m_matrix[1][1] + + mat.m_matrix[3][2] * m_matrix[2][1] + mat.m_matrix[3][3] * m_matrix[3][1]); + tmp[3][2] = (mat.m_matrix[3][0] * m_matrix[0][2] + mat.m_matrix[3][1] * m_matrix[1][2] + + mat.m_matrix[3][2] * m_matrix[2][2] + mat.m_matrix[3][3] * m_matrix[3][2]); + tmp[3][3] = (mat.m_matrix[3][0] * m_matrix[0][3] + mat.m_matrix[3][1] * m_matrix[1][3] + + mat.m_matrix[3][2] * m_matrix[2][3] + mat.m_matrix[3][3] * m_matrix[3][3]); + + setMatrix(tmp); + return *this; + } + + void TransformationMatrix::multVecMatrix(double x, double y, double& resultX, double& resultY) const + { + resultX = m_matrix[3][0] + x * m_matrix[0][0] + y * m_matrix[1][0]; + resultY = m_matrix[3][1] + x * m_matrix[0][1] + y * m_matrix[1][1]; + double w = m_matrix[3][3] + x * m_matrix[0][3] + y * m_matrix[1][3]; + if (w != 1 && w != 0) { + resultX /= w; + resultY /= w; + } + } + + void TransformationMatrix::multVecMatrix(double x, double y, double z, double& resultX, double& resultY, double& resultZ) const + { + resultX = m_matrix[3][0] + x * m_matrix[0][0] + y * m_matrix[1][0] + z * m_matrix[2][0]; + resultY = m_matrix[3][1] + x * m_matrix[0][1] + y * m_matrix[1][1] + z * m_matrix[2][1]; + resultZ = m_matrix[3][2] + x * m_matrix[0][2] + y * m_matrix[1][2] + z * m_matrix[2][2]; + double w = m_matrix[3][3] + x * m_matrix[0][3] + y * m_matrix[1][3] + z * m_matrix[2][3]; + if (w != 1 && w != 0) { + resultX /= w; + resultY /= w; + resultZ /= w; + } + } + + bool TransformationMatrix::isInvertible() const + { + if (isIdentityOrTranslation()) + return true; + + double det = WebCore::determinant4x4(m_matrix); + + if (fabs(det) < SMALL_NUMBER) + return false; + + return true; + } + + TransformationMatrix TransformationMatrix::inverse() const + { + if (isIdentityOrTranslation()) { + // identity matrix + if (m_matrix[3][0] == 0 && m_matrix[3][1] == 0 && m_matrix[3][2] == 0) + return TransformationMatrix(); + + // translation + return TransformationMatrix(1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + -m_matrix[3][0], -m_matrix[3][1], -m_matrix[3][2], 1); + } + + TransformationMatrix invMat; + bool inverted = WebCore::inverse(m_matrix, invMat.m_matrix); + if (!inverted) + return TransformationMatrix(); + + return invMat; + } + + void TransformationMatrix::makeAffine() + { + m_matrix[0][2] = 0; + m_matrix[0][3] = 0; + + m_matrix[1][2] = 0; + m_matrix[1][3] = 0; + + m_matrix[2][0] = 0; + m_matrix[2][1] = 0; + m_matrix[2][2] = 1; + m_matrix[2][3] = 0; + + m_matrix[3][2] = 0; + m_matrix[3][3] = 1; + } + + static inline void blendFloat(double& from, double to, double progress) + { + if (from != to) + from = from + (to - from) * progress; + } + + void TransformationMatrix::blend(const TransformationMatrix& from, double progress) + { + if (from.isIdentity() && isIdentity()) + return; + + // decompose + DecomposedType fromDecomp; + DecomposedType toDecomp; + from.decompose(fromDecomp); + decompose(toDecomp); + + // interpolate + blendFloat(fromDecomp.scaleX, toDecomp.scaleX, progress); + blendFloat(fromDecomp.scaleY, toDecomp.scaleY, progress); + blendFloat(fromDecomp.scaleZ, toDecomp.scaleZ, progress); + blendFloat(fromDecomp.skewXY, toDecomp.skewXY, progress); + blendFloat(fromDecomp.skewXZ, toDecomp.skewXZ, progress); + blendFloat(fromDecomp.skewYZ, toDecomp.skewYZ, progress); + blendFloat(fromDecomp.translateX, toDecomp.translateX, progress); + blendFloat(fromDecomp.translateY, toDecomp.translateY, progress); + blendFloat(fromDecomp.translateZ, toDecomp.translateZ, progress); + blendFloat(fromDecomp.perspectiveX, toDecomp.perspectiveX, progress); + blendFloat(fromDecomp.perspectiveY, toDecomp.perspectiveY, progress); + blendFloat(fromDecomp.perspectiveZ, toDecomp.perspectiveZ, progress); + blendFloat(fromDecomp.perspectiveW, toDecomp.perspectiveW, progress); + + slerp(&fromDecomp.quaternionX, &toDecomp.quaternionX, progress); + + // recompose + recompose(fromDecomp); + } + + bool TransformationMatrix::decompose(DecomposedType& decomp) const + { + if (isIdentity()) { + memset(&decomp, 0, sizeof(decomp)); + decomp.perspectiveW = 1; + decomp.scaleX = 1; + decomp.scaleY = 1; + decomp.scaleZ = 1; + } + + if (!WebCore::decompose(m_matrix, decomp)) + return false; + return true; + } + + void TransformationMatrix::recompose(const DecomposedType& decomp, bool useEulerAngle) + { + makeIdentity(); + + // first apply perspective + m_matrix[0][3] = decomp.perspectiveX; + m_matrix[1][3] = decomp.perspectiveY; + m_matrix[2][3] = decomp.perspectiveZ; + m_matrix[3][3] = decomp.perspectiveW; + + // now translate + translate3d(decomp.translateX, decomp.translateY, decomp.translateZ); + + if (!useEulerAngle) { + // apply rotation + double xx = decomp.quaternionX * decomp.quaternionX; + double xy = decomp.quaternionX * decomp.quaternionY; + double xz = decomp.quaternionX * decomp.quaternionZ; + double xw = decomp.quaternionX * decomp.quaternionW; + double yy = decomp.quaternionY * decomp.quaternionY; + double yz = decomp.quaternionY * decomp.quaternionZ; + double yw = decomp.quaternionY * decomp.quaternionW; + double zz = decomp.quaternionZ * decomp.quaternionZ; + double zw = decomp.quaternionZ * decomp.quaternionW; + + // Construct a composite rotation matrix from the quaternion values + TransformationMatrix rotationMatrix(1 - 2 * (yy + zz), 2 * (xy - zw), 2 * (xz + yw), 0, + 2 * (xy + zw), 1 - 2 * (xx + zz), 2 * (yz - xw), 0, + 2 * (xz - yw), 2 * (yz + xw), 1 - 2 * (xx + yy), 0, + 0, 0, 0, 1); + + multiply(rotationMatrix); + } else { + rotate3d(1.0, 0.0, 0.0, rad2deg(decomp.rotateX)); + rotate3d(0.0, 1.0, 0.0, rad2deg(decomp.rotateY)); + rotate3d(0.0, 0.0, 1.0, rad2deg(decomp.rotateZ)); + } + + // now apply skew + if (decomp.skewYZ) { + TransformationMatrix tmp; + tmp.setM32(decomp.skewYZ); + multiply(tmp); + } + + if (decomp.skewXZ) { + TransformationMatrix tmp; + tmp.setM31(decomp.skewXZ); + multiply(tmp); + } + + if (decomp.skewXY) { + TransformationMatrix tmp; + tmp.setM21(decomp.skewXY); + multiply(tmp); + } + + // finally, apply scale + scale3d(decomp.scaleX, decomp.scaleY, decomp.scaleZ); + } +} \ No newline at end of file diff --git a/Unit-2-Journal/Pods/pop/pop/WebCore/TransformationMatrix.h b/Unit-2-Journal/Pods/pop/pop/WebCore/TransformationMatrix.h new file mode 100644 index 0000000..b99ae89 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/WebCore/TransformationMatrix.h @@ -0,0 +1,279 @@ +/* + * Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef TransformationMatrix_h +#define TransformationMatrix_h + +#include <string.h> //for memcpy + +#include <CoreGraphics/CGAffineTransform.h> + +#include <QuartzCore/QuartzCore.h> + +namespace WebCore { + + class TransformationMatrix { + public: + + typedef double Matrix4[4][4]; + + TransformationMatrix() { makeIdentity(); } + TransformationMatrix(const TransformationMatrix& t) { *this = t; } + TransformationMatrix(double a, double b, double c, double d, double e, double f) { setMatrix(a, b, c, d, e, f); } + TransformationMatrix(double m11, double m12, double m13, double m14, + double m21, double m22, double m23, double m24, + double m31, double m32, double m33, double m34, + double m41, double m42, double m43, double m44) + { + setMatrix(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44); + } + + void setMatrix(double a, double b, double c, double d, double e, double f) + { + m_matrix[0][0] = a; m_matrix[0][1] = b; m_matrix[0][2] = 0; m_matrix[0][3] = 0; + m_matrix[1][0] = c; m_matrix[1][1] = d; m_matrix[1][2] = 0; m_matrix[1][3] = 0; + m_matrix[2][0] = 0; m_matrix[2][1] = 0; m_matrix[2][2] = 1; m_matrix[2][3] = 0; + m_matrix[3][0] = e; m_matrix[3][1] = f; m_matrix[3][2] = 0; m_matrix[3][3] = 1; + } + + void setMatrix(double m11, double m12, double m13, double m14, + double m21, double m22, double m23, double m24, + double m31, double m32, double m33, double m34, + double m41, double m42, double m43, double m44) + { + m_matrix[0][0] = m11; m_matrix[0][1] = m12; m_matrix[0][2] = m13; m_matrix[0][3] = m14; + m_matrix[1][0] = m21; m_matrix[1][1] = m22; m_matrix[1][2] = m23; m_matrix[1][3] = m24; + m_matrix[2][0] = m31; m_matrix[2][1] = m32; m_matrix[2][2] = m33; m_matrix[2][3] = m34; + m_matrix[3][0] = m41; m_matrix[3][1] = m42; m_matrix[3][2] = m43; m_matrix[3][3] = m44; + } + + TransformationMatrix& operator =(const TransformationMatrix &t) + { + setMatrix(t.m_matrix); + return *this; + } + + TransformationMatrix& makeIdentity() + { + setMatrix(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); + return *this; + } + + bool isIdentity() const + { + return m_matrix[0][0] == 1 && m_matrix[0][1] == 0 && m_matrix[0][2] == 0 && m_matrix[0][3] == 0 && + m_matrix[1][0] == 0 && m_matrix[1][1] == 1 && m_matrix[1][2] == 0 && m_matrix[1][3] == 0 && + m_matrix[2][0] == 0 && m_matrix[2][1] == 0 && m_matrix[2][2] == 1 && m_matrix[2][3] == 0 && + m_matrix[3][0] == 0 && m_matrix[3][1] == 0 && m_matrix[3][2] == 0 && m_matrix[3][3] == 1; + } + + // This form preserves the double math from input to output + void map(double x, double y, double& x2, double& y2) const { multVecMatrix(x, y, x2, y2); } + + double m11() const { return m_matrix[0][0]; } + void setM11(double f) { m_matrix[0][0] = f; } + double m12() const { return m_matrix[0][1]; } + void setM12(double f) { m_matrix[0][1] = f; } + double m13() const { return m_matrix[0][2]; } + void setM13(double f) { m_matrix[0][2] = f; } + double m14() const { return m_matrix[0][3]; } + void setM14(double f) { m_matrix[0][3] = f; } + double m21() const { return m_matrix[1][0]; } + void setM21(double f) { m_matrix[1][0] = f; } + double m22() const { return m_matrix[1][1]; } + void setM22(double f) { m_matrix[1][1] = f; } + double m23() const { return m_matrix[1][2]; } + void setM23(double f) { m_matrix[1][2] = f; } + double m24() const { return m_matrix[1][3]; } + void setM24(double f) { m_matrix[1][3] = f; } + double m31() const { return m_matrix[2][0]; } + void setM31(double f) { m_matrix[2][0] = f; } + double m32() const { return m_matrix[2][1]; } + void setM32(double f) { m_matrix[2][1] = f; } + double m33() const { return m_matrix[2][2]; } + void setM33(double f) { m_matrix[2][2] = f; } + double m34() const { return m_matrix[2][3]; } + void setM34(double f) { m_matrix[2][3] = f; } + double m41() const { return m_matrix[3][0]; } + void setM41(double f) { m_matrix[3][0] = f; } + double m42() const { return m_matrix[3][1]; } + void setM42(double f) { m_matrix[3][1] = f; } + double m43() const { return m_matrix[3][2]; } + void setM43(double f) { m_matrix[3][2] = f; } + double m44() const { return m_matrix[3][3]; } + void setM44(double f) { m_matrix[3][3] = f; } + + double a() const { return m_matrix[0][0]; } + void setA(double a) { m_matrix[0][0] = a; } + + double b() const { return m_matrix[0][1]; } + void setB(double b) { m_matrix[0][1] = b; } + + double c() const { return m_matrix[1][0]; } + void setC(double c) { m_matrix[1][0] = c; } + + double d() const { return m_matrix[1][1]; } + void setD(double d) { m_matrix[1][1] = d; } + + double e() const { return m_matrix[3][0]; } + void setE(double e) { m_matrix[3][0] = e; } + + double f() const { return m_matrix[3][1]; } + void setF(double f) { m_matrix[3][1] = f; } + + // this = this * mat + TransformationMatrix& multiply(const TransformationMatrix&); + + TransformationMatrix& scale(double); + TransformationMatrix& scaleNonUniform(double sx, double sy); + TransformationMatrix& scale3d(double sx, double sy, double sz); + + TransformationMatrix& rotate(double d) { return rotate3d(0, 0, d); } + TransformationMatrix& rotateFromVector(double x, double y); + TransformationMatrix& rotate3d(double rx, double ry, double rz); + + // The vector (x,y,z) is normalized if it's not already. A vector of + // (0,0,0) uses a vector of (0,0,1). + TransformationMatrix& rotate3d(double x, double y, double z, double angle); + + TransformationMatrix& translate(double tx, double ty); + TransformationMatrix& translate3d(double tx, double ty, double tz); + + // translation added with a post-multiply + TransformationMatrix& translateRight(double tx, double ty); + TransformationMatrix& translateRight3d(double tx, double ty, double tz); + + TransformationMatrix& flipX(); + TransformationMatrix& flipY(); + TransformationMatrix& skew(double angleX, double angleY); + TransformationMatrix& skewX(double angle) { return skew(angle, 0); } + TransformationMatrix& skewY(double angle) { return skew(0, angle); } + + TransformationMatrix& applyPerspective(double p); + bool hasPerspective() const { return m_matrix[2][3] != 0.0f; } + + bool isInvertible() const; + + // This method returns the identity matrix if it is not invertible. + // Use isInvertible() before calling this if you need to know. + TransformationMatrix inverse() const; + + // decompose the matrix into its component parts + typedef struct { + double scaleX, scaleY, scaleZ; + double skewXY, skewXZ, skewYZ; + double rotateX, rotateY, rotateZ; + double quaternionX, quaternionY, quaternionZ, quaternionW; + double translateX, translateY, translateZ; + double perspectiveX, perspectiveY, perspectiveZ, perspectiveW; + } DecomposedType; + + bool decompose(DecomposedType& decomp) const; + void recompose(const DecomposedType& decomp, bool useEulerAngle = false); + + void blend(const TransformationMatrix& from, double progress); + + bool isAffine() const + { + return (m13() == 0 && m14() == 0 && m23() == 0 && m24() == 0 && + m31() == 0 && m32() == 0 && m33() == 1 && m34() == 0 && m43() == 0 && m44() == 1); + } + + // Throw away the non-affine parts of the matrix (lossy!) + void makeAffine(); + + bool operator==(const TransformationMatrix& m2) const + { + return (m_matrix[0][0] == m2.m_matrix[0][0] && + m_matrix[0][1] == m2.m_matrix[0][1] && + m_matrix[0][2] == m2.m_matrix[0][2] && + m_matrix[0][3] == m2.m_matrix[0][3] && + m_matrix[1][0] == m2.m_matrix[1][0] && + m_matrix[1][1] == m2.m_matrix[1][1] && + m_matrix[1][2] == m2.m_matrix[1][2] && + m_matrix[1][3] == m2.m_matrix[1][3] && + m_matrix[2][0] == m2.m_matrix[2][0] && + m_matrix[2][1] == m2.m_matrix[2][1] && + m_matrix[2][2] == m2.m_matrix[2][2] && + m_matrix[2][3] == m2.m_matrix[2][3] && + m_matrix[3][0] == m2.m_matrix[3][0] && + m_matrix[3][1] == m2.m_matrix[3][1] && + m_matrix[3][2] == m2.m_matrix[3][2] && + m_matrix[3][3] == m2.m_matrix[3][3]); + } + + bool operator!=(const TransformationMatrix& other) const { return !(*this == other); } + + // *this = *this * t (i.e., a multRight) + TransformationMatrix& operator*=(const TransformationMatrix& t) + { + return multiply(t); + } + + // result = *this * t (i.e., a multRight) + TransformationMatrix operator*(const TransformationMatrix& t) + { + TransformationMatrix result = *this; + result.multiply(t); + return result; + } + + CATransform3D transform3d () const; + CGAffineTransform affineTransform () const; + + TransformationMatrix(const CATransform3D&); + operator CATransform3D() const; + + TransformationMatrix(const CGAffineTransform&); + operator CGAffineTransform() const; + + private: + + // multiply passed 2D point by matrix (assume z=0) + void multVecMatrix(double x, double y, double& dstX, double& dstY) const; + + // multiply passed 3D point by matrix + void multVecMatrix(double x, double y, double z, double& dstX, double& dstY, double& dstZ) const; + + void setMatrix(const Matrix4 m) + { + if (m && m != m_matrix) + memcpy(m_matrix, m, sizeof(Matrix4)); + } + + bool isIdentityOrTranslation() const + { + return m_matrix[0][0] == 1 && m_matrix[0][1] == 0 && m_matrix[0][2] == 0 && m_matrix[0][3] == 0 && + m_matrix[1][0] == 0 && m_matrix[1][1] == 1 && m_matrix[1][2] == 0 && m_matrix[1][3] == 0 && + m_matrix[2][0] == 0 && m_matrix[2][1] == 0 && m_matrix[2][2] == 1 && m_matrix[2][3] == 0 && + m_matrix[3][3] == 1; + } + + Matrix4 m_matrix; + }; + +} // namespace WebCore + +#endif // TransformationMatrix_h diff --git a/Unit-2-Journal/Pods/pop/pop/WebCore/UnitBezier.h b/Unit-2-Journal/Pods/pop/pop/WebCore/UnitBezier.h new file mode 100644 index 0000000..0f847a0 --- /dev/null +++ b/Unit-2-Journal/Pods/pop/pop/WebCore/UnitBezier.h @@ -0,0 +1,123 @@ +/* + * Copyright (C) 2008 Apple Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef UnitBezier_h +#define UnitBezier_h + +#include <math.h> + +namespace WebCore { + + struct UnitBezier { + UnitBezier(double p1x, double p1y, double p2x, double p2y) + { + // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1). + cx = 3.0 * p1x; + bx = 3.0 * (p2x - p1x) - cx; + ax = 1.0 - cx -bx; + + cy = 3.0 * p1y; + by = 3.0 * (p2y - p1y) - cy; + ay = 1.0 - cy - by; + } + + double sampleCurveX(double t) + { + // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule. + return ((ax * t + bx) * t + cx) * t; + } + + double sampleCurveY(double t) + { + return ((ay * t + by) * t + cy) * t; + } + + double sampleCurveDerivativeX(double t) + { + return (3.0 * ax * t + 2.0 * bx) * t + cx; + } + + // Given an x value, find a parametric value it came from. + double solveCurveX(double x, double epsilon) + { + double t0; + double t1; + double t2; + double x2; + double d2; + int i; + + // First try a few iterations of Newton's method -- normally very fast. + for (t2 = x, i = 0; i < 8; i++) { + x2 = sampleCurveX(t2) - x; + if (fabs (x2) < epsilon) + return t2; + d2 = sampleCurveDerivativeX(t2); + if (fabs(d2) < 1e-6) + break; + t2 = t2 - x2 / d2; + } + + // Fall back to the bisection method for reliability. + t0 = 0.0; + t1 = 1.0; + t2 = x; + + if (t2 < t0) + return t0; + if (t2 > t1) + return t1; + + while (t0 < t1) { + x2 = sampleCurveX(t2); + if (fabs(x2 - x) < epsilon) + return t2; + if (x > x2) + t0 = t2; + else + t1 = t2; + t2 = (t1 - t0) * .5 + t0; + } + + // Failure. + return t2; + } + + double solve(double x, double epsilon) + { + return sampleCurveY(solveCurveX(x, epsilon)); + } + + private: + double ax; + double bx; + double cx; + + double ay; + double by; + double cy; + }; +} +#endif diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 4a073b3..a6b8541 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -115,6 +115,19 @@ name = Frameworks; sourceTree = "<group>"; }; + 4D64F9D01BCEBF080079086C /* Custom Views & .XIBs */ = { + isa = PBXGroup; + children = ( + 4D7FE29A1BCC32170036E58E /* SearchAPITableViewCell.h */, + 4D7FE29B1BCC32170036E58E /* SearchAPITableViewCell.m */, + 4D7FE29C1BCC32170036E58E /* SearchAPITableViewCell.xib */, + 4D7FE2A21BCC41A00036E58E /* WishListTableViewCell.h */, + 4D7FE2A31BCC41A00036E58E /* WishListTableViewCell.m */, + 4D7FE2A41BCC41A00036E58E /* WishListTableViewCell.xib */, + ); + name = "Custom Views & .XIBs"; + sourceTree = "<group>"; + }; 5A43989E2A6AD60B52B523E0 /* Pods */ = { isa = PBXGroup; children = ( @@ -162,6 +175,7 @@ 9A2FFC301BC84BF200E880D3 /* AppDelegate.h */, 9A2FFC311BC84BF200E880D3 /* AppDelegate.m */, 9AAB40031BC9ECAA00FD7227 /* Classes & Managers */, + 4D64F9D01BCEBF080079086C /* Custom Views & .XIBs */, 9AAB40021BC9EC7300FD7227 /* ViewControllers */, 9A2FFC361BC84BF200E880D3 /* Main.storyboard */, 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */, @@ -218,12 +232,6 @@ 9A34656C1BCACDF40049337C /* iTunesSearchResult.m */, 9A29371E1BCC26FE00ACEEE0 /* JournalPost.h */, 9A29371F1BCC26FE00ACEEE0 /* JournalPost.m */, - 4D7FE29A1BCC32170036E58E /* SearchAPITableViewCell.h */, - 4D7FE29B1BCC32170036E58E /* SearchAPITableViewCell.m */, - 4D7FE29C1BCC32170036E58E /* SearchAPITableViewCell.xib */, - 4D7FE2A21BCC41A00036E58E /* WishListTableViewCell.h */, - 4D7FE2A31BCC41A00036E58E /* WishListTableViewCell.m */, - 4D7FE2A41BCC41A00036E58E /* WishListTableViewCell.xib */, ); name = "Classes & Managers"; sourceTree = "<group>"; diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 4d06f64..76aac70 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -15,7 +15,7 @@ <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <prototypes> - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="4Uu-0J-i5z"> + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" id="4Uu-0J-i5z"> <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> @@ -331,14 +331,14 @@ <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <prototypes> - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="APIResultsIdentifier" textLabel="wn8-3w-eKd" detailTextLabel="DsP-zu-9UZ" style="IBUITableViewCellStyleSubtitle" id="oHk-9R-1hr"> + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="APIResultsIdentifier" textLabel="wn8-3w-eKd" detailTextLabel="DsP-zu-9UZ" style="IBUITableViewCellStyleSubtitle" id="oHk-9R-1hr"> <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> - <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> + <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> @@ -346,7 +346,7 @@ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> + <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> @@ -364,14 +364,14 @@ <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4h9-oR-C40"> <rect key="frame" x="0.0" y="120" width="600" height="50"/> <subviews> - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Search" textAlignment="natural" clearsOnBeginEditing="YES" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="zob-sY-qha"> + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Search" textAlignment="natural" clearsOnBeginEditing="YES" minimumFontSize="20" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="zob-sY-qha"> <rect key="frame" x="40" y="10" width="520" height="30"/> <animations/> <constraints> <constraint firstAttribute="width" constant="350" id="FjN-tR-Pz2"/> </constraints> <fontDescription key="fontDescription" type="system" pointSize="14"/> - <textInputTraits key="textInputTraits"/> + <textInputTraits key="textInputTraits" autocapitalizationType="words" autocorrectionType="yes" spellCheckingType="yes"/> <variation key="default"> <mask key="constraints"> <exclude reference="FjN-tR-Pz2"/> @@ -464,17 +464,17 @@ <constraint firstAttribute="height" constant="120" id="mgE-Dx-7HC"/> </constraints> </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HdG-mr-PTo"> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HdG-mr-PTo"> <rect key="frame" x="128" y="103" width="412" height="17"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="14"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> - <rect key="frame" x="128" y="84" width="412" height="19"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> + <rect key="frame" x="128" y="83.5" width="412" height="19.5"/> <animations/> - <fontDescription key="fontDescription" name="HelveticaNeue-Italic" family="Helvetica Neue" pointSize="16"/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> @@ -520,7 +520,7 @@ <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BCK-ON-IjJ"> <rect key="frame" x="15" y="153" width="570" height="50"/> <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0G1-Em-Jng"> + <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0G1-Em-Jng"> <rect key="frame" x="464" y="0.0" width="106" height="50"/> <animations/> <state key="normal" backgroundImage="rating_star"/> @@ -528,7 +528,7 @@ <action selector="fiveStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="lF4-Jk-XCm"/> </connections> </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Hue-C5-PHW"> + <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Hue-C5-PHW"> <rect key="frame" x="348" y="0.0" width="106" height="50"/> <animations/> <state key="normal" backgroundImage="rating_star"/> @@ -536,7 +536,7 @@ <action selector="fourStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="pCL-4u-Duz"/> </connections> </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZP9-Qg-4Le"> + <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZP9-Qg-4Le"> <rect key="frame" x="232" y="0.0" width="106" height="50"/> <animations/> <state key="normal" backgroundImage="rating_star"/> @@ -544,7 +544,7 @@ <action selector="threeStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="F0g-su-LVO"/> </connections> </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="KzN-ht-Jya"> + <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="KzN-ht-Jya"> <rect key="frame" x="0.0" y="0.0" width="106" height="50"/> <animations/> <color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> @@ -554,8 +554,8 @@ <action selector="oneStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="5jC-Qf-LPh"/> </connections> </button> - <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ofM-BY-Yzj"> - <rect key="frame" x="114" y="0.0" width="102" height="50"/> + <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ofM-BY-Yzj"> + <rect key="frame" x="116" y="0.0" width="106" height="50"/> <animations/> <state key="normal" backgroundImage="rating_star"> <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> @@ -703,7 +703,7 @@ <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <prototypes> - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="WishListIdentifier" rowHeight="64" id="Ej0-R4-rXa"> + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="WishListIdentifier" rowHeight="64" id="Ej0-R4-rXa"> <rect key="frame" x="0.0" y="28" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index d52d454..8b9f506 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -10,6 +10,7 @@ #import "JournalPost.h" #import "TabBarViewController.h" #import "JournalMainCollectionViewController.h" +#import <pop/POP.h> @interface CreateJournalEntryViewController () <UITextViewDelegate> @@ -25,7 +26,6 @@ @interface CreateJournalEntryViewController () <UITextViewDelegate> @property (strong, nonatomic) IBOutlet UIButton *starButtonThree; @property (strong, nonatomic) IBOutlet UIButton *starButtonFour; @property (strong, nonatomic) IBOutlet UIButton *starButtonFive; -@property (nonatomic) BOOL userRated; @property (nonatomic) JournalPost *journalPost; @property (nonatomic) NSMutableArray *journalPostArray; @@ -37,8 +37,6 @@ @implementation CreateJournalEntryViewController - (void)viewDidLoad { [super viewDidLoad]; - self.userRated = NO; - self.journalPostArray = [[NSMutableArray alloc]init]; NSLog(@"Data has been passed: %@",self.postSearchResult); @@ -60,6 +58,12 @@ - (void)viewDidLoad { UIImage *artworkImage = [UIImage imageWithData:artworkData]; self.artworkImageView.image = artworkImage; + //round image corners + self.artworkImageView.clipsToBounds = YES; + self.artworkImageView.layer.borderColor = [UIColor blackColor].CGColor; + self.artworkImageView.layer.borderWidth = 2.0; + self.artworkImageView.layer.cornerRadius = 25.0; + } - (void) textViewDidBeginEditing:(UITextView *)textView{ self.textView.text = @""; @@ -78,79 +82,36 @@ - (IBAction)doneEditingTapped:(id)sender { - (IBAction)oneStarTapped:(id)sender { - if (self.userRated == NO) { - self.userRated = YES; // change to yes - [self resetStars]; - [self oneStarRating]; - } else - - if (self.userRated == YES) { - self.userRated = NO; // change to yes - [self resetStars]; - [self oneStarRating]; - } + [self resetStars]; + [self oneStarRating]; + [self startAnimation]; } - (IBAction)twoStarTapped:(id)sender { - if (self.userRated == NO) { - self.userRated = YES; // change to yes - [self resetStars]; - [self twoStarRating]; - - } else - - if (self.userRated == YES) { - self.userRated = NO; // change to yes - [self resetStars]; - [self twoStarRating]; - } + [self resetStars]; + [self twoStarRating]; + [self startAnimation]; } - (IBAction)threeStarTapped:(id)sender { - if (self.userRated == NO) { - self.userRated = YES; // change to yes - [self resetStars]; - [self threeStarRating]; - - } else - - if (self.userRated == YES) { - self.userRated = NO; // change to yes - [self resetStars]; - [self threeStarRating]; - } + [self resetStars]; + [self threeStarRating]; + [self startAnimation]; } - (IBAction)fourStarTapped:(id)sender { - if (self.userRated == NO) { - self.userRated = YES; // change to yes - [self resetStars]; - [self fourStarRating]; - - } else - - if (self.userRated == YES) { - self.userRated = NO; // change to yes - [self resetStars]; - [self fourStarRating]; - } + [self resetStars]; + [self fourStarRating]; + [self startAnimation]; } - (IBAction)fiveStarTapped:(id)sender { - if (self.userRated == NO) { - self.userRated = YES; // change to yes - [self fiveStarRating]; - - } else - - if (self.userRated == YES) { - self.userRated = NO; // change to yes - [self resetStars]; - [self fiveStarRating]; - } + [self resetStars]; + [self fiveStarRating]; + [self startAnimation]; } - (void)resetStars @@ -192,6 +153,24 @@ - (void)fiveStarRating { [self.starButtonFive setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; } +#pragma mark - animate all + +- (void)startAnimation { + + POPSpringAnimation *spin = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerRotation]; + + spin.fromValue = @(M_PI / 4); + spin.toValue = @(5); + spin.springBounciness = 5; + spin.velocity = @(1); + + [self.starButtonOne.layer pop_addAnimation:spin forKey:nil]; + [self.starButtonTwo.layer pop_addAnimation:spin forKey:nil]; + [self.starButtonThree.layer pop_addAnimation:spin forKey:nil]; + [self.starButtonFour.layer pop_addAnimation:spin forKey:nil]; + [self.starButtonFive.layer pop_addAnimation:spin forKey:nil]; +} + #pragma mark - save items diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index 063f2fc..26db13a 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -84,7 +84,7 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell collectionImageView.image = image; - + // round corners cell.layer.borderWidth = 2.0; cell.layer.borderColor = [UIColor blackColor].CGColor; cell.layer.cornerRadius = 30.0; @@ -93,9 +93,6 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell return cell; } - - - #pragma mark <UICollectionViewDelegate> /* diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.m b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.m index da2983d..772444d 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.m @@ -7,22 +7,47 @@ // #import "SearchAPITableViewCell.h" +#import <pop/POP.h> @implementation SearchAPITableViewCell - (void)awakeFromNib { - // Initialization code + // round corners self.artworkImage.clipsToBounds = YES; self.artworkImage.layer.borderColor = [UIColor blackColor].CGColor; self.artworkImage.layer.borderWidth = 2.0; self.artworkImage.layer.cornerRadius = 25.0; + } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; + +} - // Configure the view for the selected state +// animate custom cells +- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated { + + [super setHighlighted:highlighted animated:animated]; + + if (self.highlighted) { + POPBasicAnimation *scaleAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewScaleXY]; + scaleAnimation.duration = 0.1; + scaleAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(1, 1)]; + [self.titleLabel pop_addAnimation:scaleAnimation forKey:nil]; + [self.authorArtistDirectorLabel pop_addAnimation:scaleAnimation forKey:nil]; + [self.artworkImage pop_addAnimation:scaleAnimation forKey:nil]; + + } else { + POPSpringAnimation *sprintAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewScaleXY]; + sprintAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(0.9, 0.9)]; + sprintAnimation.velocity = [NSValue valueWithCGPoint:CGPointMake(2, 2)]; + sprintAnimation.springBounciness = 20.f; + [self.titleLabel pop_addAnimation:sprintAnimation forKey:nil]; + [self.authorArtistDirectorLabel pop_addAnimation:sprintAnimation forKey:nil]; + [self.artworkImage pop_addAnimation:sprintAnimation forKey:nil]; + } } @end diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib index cea2c62..1460f76 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib @@ -7,51 +7,50 @@ <objects> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> - <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="SearchAPITableViewCellIdentifier" rowHeight="88" id="KGk-i7-Jjw" customClass="SearchAPITableViewCell"> - <rect key="frame" x="0.0" y="0.0" width="406" height="88"/> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="SearchAPITableViewCellIdentifier" rowHeight="101" id="KGk-i7-Jjw" customClass="SearchAPITableViewCell"> + <rect key="frame" x="0.0" y="0.0" width="340" height="125"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> - <rect key="frame" x="0.0" y="0.0" width="406" height="87.5"/> + <rect key="frame" x="0.0" y="0.0" width="340" height="124.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Fq8-dI-Pdu"> - <rect key="frame" x="8" y="13" width="70" height="70"/> + <rect key="frame" x="18" y="33" width="60" height="60"/> <constraints> - <constraint firstAttribute="width" constant="70" id="2eV-5F-kaH"/> - <constraint firstAttribute="height" constant="70" id="WWX-Va-u7Y"/> + <constraint firstAttribute="width" constant="60" id="TzC-rK-Lse"/> + <constraint firstAttribute="height" constant="60" id="VZE-5H-hlD"/> </constraints> </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Author/Director/Artist" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="y9p-St-OV6"> - <rect key="frame" x="86" y="58" width="312" height="20.5"/> - <fontDescription key="fontDescription" type="system" pointSize="17"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Author/Director/Artist" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="y9p-St-OV6"> + <rect key="frame" x="86" y="62" width="254" height="46"/> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TITLE" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Sl4-bL-ILp"> - <rect key="frame" x="86" y="18" width="312" height="27"/> - <constraints> - <constraint firstAttribute="height" constant="27" id="fZh-sd-hfl"/> - </constraints> - <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TITLE" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Sl4-bL-ILp"> + <rect key="frame" x="86" y="16" width="254" height="46.5"/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/> <nil key="highlightedColor"/> </label> </subviews> <constraints> - <constraint firstItem="y9p-St-OV6" firstAttribute="trailing" secondItem="H2p-sc-9uM" secondAttribute="trailingMargin" id="1NL-wd-c56"/> - <constraint firstItem="Sl4-bL-ILp" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="topMargin" constant="10" id="2LX-s8-bqg"/> - <constraint firstItem="Sl4-bL-ILp" firstAttribute="leading" secondItem="Fq8-dI-Pdu" secondAttribute="trailing" constant="8" id="4zK-8N-uNE"/> - <constraint firstItem="Fq8-dI-Pdu" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leadingMargin" id="9WI-Oh-7QL"/> - <constraint firstItem="Fq8-dI-Pdu" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="topMargin" constant="5" id="Gca-vO-hfg"/> + <constraint firstAttribute="bottomMargin" secondItem="y9p-St-OV6" secondAttribute="bottom" constant="8" id="77R-9I-uAO"/> + <constraint firstItem="Fq8-dI-Pdu" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leadingMargin" constant="10" id="BKX-nf-3UF"/> + <constraint firstItem="Fq8-dI-Pdu" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="Gzs-0c-Laa"/> + <constraint firstItem="y9p-St-OV6" firstAttribute="leading" secondItem="Fq8-dI-Pdu" secondAttribute="trailing" constant="8" id="MQL-JE-6d4"/> <constraint firstItem="y9p-St-OV6" firstAttribute="top" secondItem="Sl4-bL-ILp" secondAttribute="bottom" constant="14" id="V0g-po-TYt"/> - <constraint firstItem="Sl4-bL-ILp" firstAttribute="trailing" secondItem="H2p-sc-9uM" secondAttribute="trailingMargin" id="WGp-qV-6gR"/> - <constraint firstItem="Fq8-dI-Pdu" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="aws-T4-erZ"/> - <constraint firstItem="y9p-St-OV6" firstAttribute="leading" secondItem="Fq8-dI-Pdu" secondAttribute="trailing" constant="8" id="cu3-eQ-m2z"/> - <constraint firstAttribute="bottomMargin" secondItem="Fq8-dI-Pdu" secondAttribute="bottom" constant="5" id="j8X-Ke-Y17"/> - <constraint firstAttribute="bottomMargin" secondItem="y9p-St-OV6" secondAttribute="bottom" constant="10" id="rIz-lU-OFg"/> + <constraint firstItem="y9p-St-OV6" firstAttribute="top" secondItem="Sl4-bL-ILp" secondAttribute="bottom" id="bHZ-Z7-z2l"/> + <constraint firstItem="Sl4-bL-ILp" firstAttribute="trailing" secondItem="H2p-sc-9uM" secondAttribute="trailingMargin" constant="8" id="kgx-qh-5UO"/> + <constraint firstItem="y9p-St-OV6" firstAttribute="top" secondItem="Sl4-bL-ILp" secondAttribute="bottom" id="le4-IJ-Wvq"/> + <constraint firstItem="Sl4-bL-ILp" firstAttribute="leading" secondItem="Fq8-dI-Pdu" secondAttribute="trailing" constant="8" id="vU8-rv-A7q"/> + <constraint firstItem="y9p-St-OV6" firstAttribute="trailing" secondItem="H2p-sc-9uM" secondAttribute="trailingMargin" constant="8" id="xks-nZ-DDK"/> + <constraint firstItem="Sl4-bL-ILp" firstAttribute="height" secondItem="y9p-St-OV6" secondAttribute="height" id="y4H-0j-aNh"/> + <constraint firstItem="Sl4-bL-ILp" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="topMargin" constant="8" id="zAg-1w-DVm"/> </constraints> <variation key="default"> <mask key="constraints"> <exclude reference="V0g-po-TYt"/> + <exclude reference="bHZ-Z7-z2l"/> </mask> </variation> </tableViewCellContentView> @@ -61,7 +60,7 @@ <outlet property="authorArtistDirectorLabel" destination="y9p-St-OV6" id="8CJ-K5-qPV"/> <outlet property="titleLabel" destination="Sl4-bL-ILp" id="npm-fk-f0W"/> </connections> - <point key="canvasLocation" x="622" y="492"/> + <point key="canvasLocation" x="622" y="497.5"/> </tableViewCell> </objects> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 20122e9..8a96dbd 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -12,6 +12,7 @@ #import "iTunesSearchResult.h" #import "CreateJournalEntryViewController.h" #import "SearchAPITableViewCell.h" // add custom cell +//#import <pop/POP.h> @interface SearchAPIViewController () < @@ -48,6 +49,7 @@ - (void)viewDidLoad self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimatedRowHeight = 35.0; + } #pragma mark - setup buttons @@ -65,15 +67,19 @@ - (IBAction)mediaButtonTypeSelected:(id)sender { NSLog(@"Media: %@",self.media); } +#pragma mark - add to list buttons + - (IBAction)createJournalEntryButtonTapped:(id)sender { - + } - (IBAction)addToWishListButtonTapped:(id)sender { - } + +#pragma mark - API request + - (void) makeNewiTunesAPIRequestWithSearchTerm:(NSString *)term inMedia:(NSString *)media callbackBlock:(void(^)())block{ @@ -146,6 +152,8 @@ - (BOOL)textFieldShouldReturn:(UITextField *)textField{ return YES; } +#pragma mark - set up table view + - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1; } @@ -175,10 +183,11 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS cell.artworkImage.image = artworkImage; + // round corners cell.imageView.layer.borderWidth = 2.0; cell.imageView.layer.borderColor = [UIColor blackColor].CGColor; cell.imageView.layer.cornerRadius = 3.0; - + return cell; } @@ -190,7 +199,7 @@ -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath * NSLog(@"%@", self.passSearchResult); - // push view controller + // push view controller } @@ -204,9 +213,11 @@ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { CreateJournalEntryViewController *viewController = segue.destinationViewController; viewController.postSearchResult = self.passSearchResult; + } } + @end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m index 91a1cb7..ff6c919 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m @@ -7,6 +7,7 @@ // #import "WishListTableViewCell.h" +#import <pop/POP.h> @implementation WishListTableViewCell @@ -25,4 +26,28 @@ - (void)setSelected:(BOOL)selected animated:(BOOL)animated { // Configure the view for the selected state } +// animate custom cells +- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated { + + [super setHighlighted:highlighted animated:animated]; + + if (self.highlighted) { + POPBasicAnimation *scaleAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewScaleXY]; + scaleAnimation.duration = 0.1; + scaleAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(1, 1)]; + [self.titleLabel pop_addAnimation:scaleAnimation forKey:nil]; + [self.authorArtistDirectorLabel pop_addAnimation:scaleAnimation forKey:nil]; + [self.artworkImage pop_addAnimation:scaleAnimation forKey:nil]; + + } else { + POPSpringAnimation *sprintAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewScaleXY]; + sprintAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(0.9, 0.9)]; + sprintAnimation.velocity = [NSValue valueWithCGPoint:CGPointMake(2, 2)]; + sprintAnimation.springBounciness = 20.f; + [self.titleLabel pop_addAnimation:sprintAnimation forKey:nil]; + [self.authorArtistDirectorLabel pop_addAnimation:sprintAnimation forKey:nil]; + [self.artworkImage pop_addAnimation:sprintAnimation forKey:nil]; + } +} + @end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib index f339eeb..37febe7 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib @@ -7,53 +7,61 @@ <objects> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> - <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="WishListTableViewCellIdentifier" rowHeight="95" id="KGk-i7-Jjw" customClass="WishListTableViewCell"> - <rect key="frame" x="0.0" y="0.0" width="349" height="95"/> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="WishListTableViewCellIdentifier" rowHeight="66" id="KGk-i7-Jjw" customClass="WishListTableViewCell"> + <rect key="frame" x="0.0" y="0.0" width="340" height="125"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> - <rect key="frame" x="0.0" y="0.0" width="349" height="94.5"/> + <rect key="frame" x="0.0" y="0.0" width="340" height="124.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ywi-Ne-nLf"> - <rect key="frame" x="93" y="18" width="248" height="21"/> - <constraints> - <constraint firstAttribute="height" constant="21" id="VyS-9k-VPX"/> - </constraints> - <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> - <nil key="highlightedColor"/> - </label> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Vb0-5u-rmQ"> - <rect key="frame" x="13" y="13" width="70" height="70"/> + <rect key="frame" x="18" y="32" width="60" height="60"/> <constraints> - <constraint firstAttribute="height" constant="70" id="5AS-OM-vRD"/> - <constraint firstAttribute="width" constant="70" id="7pJ-oI-6VV"/> + <constraint firstAttribute="height" constant="60" id="LLD-64-jSM"/> + <constraint firstAttribute="width" constant="60" id="fag-dr-LW7"/> </constraints> </imageView> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TR1-Ae-Cd4"> - <rect key="frame" x="93" y="63" width="248" height="20.5"/> - <fontDescription key="fontDescription" type="system" pointSize="17"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <rect key="frame" x="86" y="62.5" width="238" height="46"/> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ywi-Ne-nLf"> + <rect key="frame" x="86" y="16" width="238" height="46.5"/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> </subviews> <constraints> - <constraint firstItem="Vb0-5u-rmQ" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="09g-Mw-Qwu"/> - <constraint firstItem="TR1-Ae-Cd4" firstAttribute="leading" secondItem="Vb0-5u-rmQ" secondAttribute="trailing" constant="10" id="4OP-GU-9RR"/> + <constraint firstItem="Vb0-5u-rmQ" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="05Q-DJ-JMP"/> + <constraint firstItem="TR1-Ae-Cd4" firstAttribute="leading" secondItem="Vb0-5u-rmQ" secondAttribute="trailing" constant="8" id="4aK-xN-uGi"/> + <constraint firstItem="Vb0-5u-rmQ" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leadingMargin" constant="10" id="C8a-B1-WwL"/> <constraint firstItem="Vb0-5u-rmQ" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="Ev5-Ck-zXA"/> - <constraint firstItem="TR1-Ae-Cd4" firstAttribute="trailing" secondItem="H2p-sc-9uM" secondAttribute="trailingMargin" id="EzE-1F-wek"/> - <constraint firstAttribute="bottomMargin" secondItem="Vb0-5u-rmQ" secondAttribute="bottom" constant="5" id="aca-sS-buy"/> - <constraint firstItem="ywi-Ne-nLf" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="topMargin" constant="10" id="c8i-sE-pUZ"/> - <constraint firstItem="TR1-Ae-Cd4" firstAttribute="top" secondItem="ywi-Ne-nLf" secondAttribute="bottom" constant="24" id="cJ7-RE-dJF"/> - <constraint firstItem="Vb0-5u-rmQ" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leadingMargin" constant="5" id="eWz-lZ-geO"/> - <constraint firstAttribute="bottomMargin" secondItem="TR1-Ae-Cd4" secondAttribute="bottom" constant="10" id="h2x-1e-3Hu"/> - <constraint firstItem="ywi-Ne-nLf" firstAttribute="trailing" secondItem="H2p-sc-9uM" secondAttribute="trailingMargin" id="ixp-vc-hZB"/> - <constraint firstItem="ywi-Ne-nLf" firstAttribute="leading" secondItem="Vb0-5u-rmQ" secondAttribute="trailing" constant="10" id="l25-Mm-zvV"/> - <constraint firstItem="Vb0-5u-rmQ" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="topMargin" constant="5" id="syJ-0J-drL"/> + <constraint firstAttribute="trailingMargin" secondItem="ywi-Ne-nLf" secondAttribute="trailing" constant="8" id="FFQ-NJ-9ou"/> + <constraint firstItem="TR1-Ae-Cd4" firstAttribute="top" secondItem="ywi-Ne-nLf" secondAttribute="bottom" id="HAv-m5-yWX"/> + <constraint firstAttribute="trailingMargin" secondItem="TR1-Ae-Cd4" secondAttribute="trailing" constant="8" id="Jka-bL-f27"/> + <constraint firstItem="ywi-Ne-nLf" firstAttribute="leading" secondItem="Vb0-5u-rmQ" secondAttribute="trailing" constant="8" id="L74-k4-9jb"/> + <constraint firstItem="ywi-Ne-nLf" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="topMargin" constant="8" id="Pag-db-ddS"/> + <constraint firstItem="TR1-Ae-Cd4" firstAttribute="leading" secondItem="Vb0-5u-rmQ" secondAttribute="trailing" constant="8" id="Vai-2j-7Lw"/> + <constraint firstItem="TR1-Ae-Cd4" firstAttribute="leading" secondItem="Vb0-5u-rmQ" secondAttribute="trailing" constant="8" id="bGk-BF-l5b"/> + <constraint firstItem="ywi-Ne-nLf" firstAttribute="height" secondItem="TR1-Ae-Cd4" secondAttribute="height" id="bRc-7p-JRM"/> + <constraint firstAttribute="bottomMargin" secondItem="TR1-Ae-Cd4" secondAttribute="bottom" constant="8" id="bUl-jU-Y6L"/> + <constraint firstItem="ywi-Ne-nLf" firstAttribute="top" secondItem="Vb0-5u-rmQ" secondAttribute="top" id="bjp-5S-AIA"/> + <constraint firstItem="TR1-Ae-Cd4" firstAttribute="trailing" secondItem="H2p-sc-9uM" secondAttribute="trailingMargin" id="lt5-VN-osh"/> + <constraint firstItem="TR1-Ae-Cd4" firstAttribute="top" secondItem="ywi-Ne-nLf" secondAttribute="bottom" id="wJo-s4-Ays"/> + <constraint firstItem="TR1-Ae-Cd4" firstAttribute="top" secondItem="ywi-Ne-nLf" secondAttribute="bottom" id="zJ7-QU-glF"/> </constraints> <variation key="default"> <mask key="constraints"> <exclude reference="Ev5-Ck-zXA"/> + <exclude reference="bjp-5S-AIA"/> + <exclude reference="4aK-xN-uGi"/> + <exclude reference="Vai-2j-7Lw"/> + <exclude reference="lt5-VN-osh"/> + <exclude reference="wJo-s4-Ays"/> + <exclude reference="zJ7-QU-glF"/> </mask> </variation> </tableViewCellContentView> @@ -62,7 +70,7 @@ <outlet property="authorArtistDirectorLabel" destination="TR1-Ae-Cd4" id="MLM-qU-syZ"/> <outlet property="titleLabel" destination="ywi-Ne-nLf" id="8lN-ad-NzW"/> </connections> - <point key="canvasLocation" x="594.5" y="436.5"/> + <point key="canvasLocation" x="616.5" y="429.5"/> </tableViewCell> </objects> </document> From 2e66c762397b504c0fa62929a44facb897f26416 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Thu, 15 Oct 2015 14:08:04 -0400 Subject: [PATCH 45/86] added TV searchability --- .../Unit-2-Journal/SearchAPIViewController.m | 98 ++++++++++++------- 1 file changed, 61 insertions(+), 37 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 2438286..7afa707 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -12,12 +12,10 @@ #import "iTunesSearchResult.h" #import "CreateJournalEntryViewController.h" #import "SearchAPITableViewCell.h" // add custom cell -<<<<<<< HEAD #import "TabBarViewController.h" #import "WishListTableViewController.h" -======= //#import <pop/POP.h> ->>>>>>> 41b184b0ce1d1c3f61d1727035f22fd4bc0c62b6 + @interface SearchAPIViewController () < @@ -37,6 +35,8 @@ @interface SearchAPIViewController () @property (nonatomic) NSMutableArray *searchResultsTwo; @property (nonatomic) NSMutableArray *allSearchResults; @property (nonatomic) iTunesSearchResult *passSearchResult; +@property (nonatomic) BOOL isITunesSearch; +@property (nonatomic) BOOL isTVSearch; @end @@ -65,8 +65,12 @@ - (IBAction)mediaButtonTypeSelected:(id)sender { if (self.musicButton.isTouchInside){ self.media = @"music&entity=album"; + self.isTVSearch = FALSE; + self.isITunesSearch = TRUE; } else if (self.booksButton.isTouchInside){ self.media = @"ebook"; + self.isTVSearch = TRUE; + self.isTVSearch = FALSE; } else { self.media = [sender currentTitle]; } @@ -91,22 +95,22 @@ - (IBAction)addToWishListButtonTapped:(id)sender { #pragma mark - API request -- (void) makeNewiTunesAPIRequestWithSearchTerm:(NSString *)term - inMedia:(NSString *)media - callbackBlock:(void(^)())block{ +- (void) makeNewAPIRequestWithSearchTerm:(NSString *)term + inMedia:(NSString *)media{ + + self.searchResults = [[NSMutableArray alloc]init]; + + //First API Request NSString *urlString = [NSString stringWithFormat: @"https://itunes.apple.com/search?media=%@&term=%@",media,term]; - NSString *encodedString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; - - NSLog(@"%@", encodedString); - NSURL *url = [NSURL URLWithString:encodedString]; [APIManager GETRequestWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (data != nil){ NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; @@ -114,9 +118,7 @@ - (void) makeNewiTunesAPIRequestWithSearchTerm:(NSString *)term NSArray *results = [json objectForKey:@"results"]; - NSLog(@"Results: %@",results); - - self.searchResults = [[NSMutableArray alloc]init]; + //NSLog(@"Results: %@",results); for (NSDictionary *result in results){ @@ -127,13 +129,12 @@ - (void) makeNewiTunesAPIRequestWithSearchTerm:(NSString *)term iTunesSearchResult *resultsObject = [[iTunesSearchResult alloc]init]; - if ([self.media isEqualToString:@"movie"] || [self.media isEqualToString:@"podcast"] ){ + if ([self.media isEqualToString:@"podcast"]){ resultsObject.artistName = artistName; resultsObject.albumOrMovieName = movieName; resultsObject.artworkURL = artworkURL; } else if ([self.media isEqualToString:@"music&entity=album"]){ - - resultsObject.artistName = artistName; + resultsObject.artistName = artistName; resultsObject.albumOrMovieName = albumName; resultsObject.artworkURL = artworkURL; } else if ([self.media isEqualToString:@"ebook"]){ @@ -144,45 +145,68 @@ - (void) makeNewiTunesAPIRequestWithSearchTerm:(NSString *)term [self.searchResults addObject:resultsObject]; } - - - block(); - } - }]; + [self.tableView reloadData]; + }}]; - NSString *urlStringTwo = @"http://api.tvmaze.com/search/shows?q=broad%20city"; - NSURL *urlTwo = [NSURL URLWithString:urlStringTwo]; + //Second API Request + + NSString *urlStringTwo = [NSString stringWithFormat:@"http://api.tvmaze.com/search/shows?q=%@",term]; + NSString *encodedStringTwo = [urlStringTwo stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; + NSURL *urlTwo = [NSURL URLWithString:encodedStringTwo]; [APIManager GETRequestWithURL:urlTwo completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { if (data != nil){ - NSDictionary *jsonTwo = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; + NSArray *jsonTwo = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - NSLog(@"jsonTwo: %@",jsonTwo); + NSLog(@"JSonTwo: %@",jsonTwo); - //NSArray *results = [jsonTwo objectForKey:@"results"]; + NSDictionary *shows = [jsonTwo valueForKey:@"show"]; + + for (NSDictionary *show in shows){ + + NSString *name = [show valueForKey:@"name"]; + NSArray *image = [show valueForKey:@"image"]; + NSString *imageURL = [image valueForKey:@"medium"]; + NSArray *network = [show valueForKey:@"network"]; + NSString *channel = [network valueForKey:@"name"]; + + iTunesSearchResult *searchResult = [[iTunesSearchResult alloc]init]; + searchResult.artistName = channel; + searchResult.albumOrMovieName = name; + searchResult.artworkURL = imageURL; + + NSLog(@"Show: %@",searchResult.albumOrMovieName); + NSLog(@"Artwork: %@",searchResult.artworkURL); + NSLog(@"Channel: %@",searchResult.artistName); + + [self.searchResults addObject:searchResult]; + + } - //NSLog(@"Results: %@",results); - //self.searchResultsTwo = [[NSMutableArray alloc]init]; } - block(); - - }]; + [self.tableView reloadData]; + }]; + + } + + + + +// https://api.themoviedb.org/3/search/movie?api_key=a958839150c7c7c6333fd335128ea066&query=django - (BOOL)textFieldShouldReturn:(UITextField *)textField{ [self.view endEditing:YES]; - //make an API request - [self makeNewiTunesAPIRequestWithSearchTerm:textField.text - inMedia:self.media - callbackBlock:^{ - [self.tableView reloadData]; - }]; + [self makeNewAPIRequestWithSearchTerm:textField.text + inMedia:self.media]; + + return YES; } From 03328e683a1ca67ae7faecdce08ec2573b166513 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Thu, 15 Oct 2015 15:27:53 -0400 Subject: [PATCH 46/86] added movie searchability --- .../Unit-2-Journal/Base.lproj/Main.storyboard | 186 +++++++++--------- .../Unit-2-Journal/SearchAPIViewController.m | 109 ++++++---- 2 files changed, 166 insertions(+), 129 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 076b99a..30b9966 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -234,86 +234,6 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ax7-Aa-cpl"> - <rect key="frame" x="0.0" y="20" width="300" height="100"/> - <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cfG-sQ-zQZ"> - <rect key="frame" x="0.0" y="0.0" width="150" height="100"/> - <animations/> - <state key="normal" title="music"/> - <connections> - <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="pgn-O1-WAi"/> - </connections> - </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CLE-DE-TTz"> - <rect key="frame" x="150" y="0.0" width="150" height="100"/> - <animations/> - <state key="normal" title="movie"/> - <connections> - <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="tdC-rt-Ts9"/> - </connections> - </button> - </subviews> - <animations/> - <color key="backgroundColor" red="0.75457596599999999" green="0.86496030550000003" blue="1" alpha="1" colorSpace="calibratedRGB"/> - <constraints> - <constraint firstAttribute="bottom" secondItem="CLE-DE-TTz" secondAttribute="bottom" id="1FY-QK-57N"/> - <constraint firstItem="CLE-DE-TTz" firstAttribute="leading" secondItem="cfG-sQ-zQZ" secondAttribute="trailing" id="4Ko-Cz-FY2"/> - <constraint firstAttribute="trailing" secondItem="CLE-DE-TTz" secondAttribute="trailing" id="GHM-37-uSd"/> - <constraint firstItem="CLE-DE-TTz" firstAttribute="width" secondItem="cfG-sQ-zQZ" secondAttribute="width" id="LuE-pK-ZtR"/> - <constraint firstAttribute="height" constant="100" id="czI-fv-WYo"/> - <constraint firstItem="CLE-DE-TTz" firstAttribute="top" secondItem="Ax7-Aa-cpl" secondAttribute="top" id="iDw-jd-RPS"/> - <constraint firstItem="cfG-sQ-zQZ" firstAttribute="leading" secondItem="Ax7-Aa-cpl" secondAttribute="leading" id="lGS-z5-GTD"/> - <constraint firstItem="cfG-sQ-zQZ" firstAttribute="top" secondItem="Ax7-Aa-cpl" secondAttribute="top" id="n6B-mA-nIe"/> - <constraint firstItem="CLE-DE-TTz" firstAttribute="leading" secondItem="cfG-sQ-zQZ" secondAttribute="trailing" id="odv-sy-OFa"/> - <constraint firstAttribute="bottom" secondItem="cfG-sQ-zQZ" secondAttribute="bottom" id="yfI-BQ-Tjh"/> - </constraints> - <variation key="default"> - <mask key="constraints"> - <exclude reference="odv-sy-OFa"/> - </mask> - </variation> - </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6gJ-up-Tie"> - <rect key="frame" x="300" y="20" width="300" height="100"/> - <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kEa-FP-z2a"> - <rect key="frame" x="150" y="0.0" width="150" height="100"/> - <animations/> - <state key="normal" title="podcast"/> - <connections> - <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="aFT-bH-Jsi"/> - </connections> - </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rgg-OH-neT"> - <rect key="frame" x="0.0" y="0.0" width="150" height="100"/> - <animations/> - <state key="normal" title="books"/> - <connections> - <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="n38-IM-iTM"/> - </connections> - </button> - </subviews> - <animations/> - <color key="backgroundColor" red="1" green="0.5210467205" blue="0.69047673470000004" alpha="1" colorSpace="calibratedRGB"/> - <constraints> - <constraint firstItem="kEa-FP-z2a" firstAttribute="leading" secondItem="rgg-OH-neT" secondAttribute="trailing" id="0xb-Bx-7TS"/> - <constraint firstAttribute="bottom" secondItem="kEa-FP-z2a" secondAttribute="bottom" id="1FV-jh-6oD"/> - <constraint firstItem="kEa-FP-z2a" firstAttribute="width" secondItem="rgg-OH-neT" secondAttribute="width" id="JaK-hx-7BV"/> - <constraint firstItem="rgg-OH-neT" firstAttribute="leading" secondItem="6gJ-up-Tie" secondAttribute="leading" id="aU3-tU-QYM"/> - <constraint firstAttribute="trailing" secondItem="kEa-FP-z2a" secondAttribute="trailing" id="q79-c2-qfR"/> - <constraint firstItem="kEa-FP-z2a" firstAttribute="leading" secondItem="rgg-OH-neT" secondAttribute="trailing" id="rEQ-Oo-14p"/> - <constraint firstAttribute="bottom" secondItem="rgg-OH-neT" secondAttribute="bottom" id="sni-YM-IqN"/> - <constraint firstItem="kEa-FP-z2a" firstAttribute="top" secondItem="6gJ-up-Tie" secondAttribute="top" id="uGT-pO-eUu"/> - <constraint firstItem="rgg-OH-neT" firstAttribute="top" secondItem="6gJ-up-Tie" secondAttribute="top" id="vUg-mZ-IOY"/> - <constraint firstAttribute="height" constant="100" id="xiZ-fC-OcP"/> - </constraints> - <variation key="default"> - <mask key="constraints"> - <exclude reference="rEQ-Oo-14p"/> - </mask> - </variation> - </view> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i6F-Oe-4xR"> <rect key="frame" x="300" y="426" width="300" height="50"/> <animations/> @@ -327,7 +247,7 @@ </connections> </button> <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="twc-ko-3Rx"> - <rect key="frame" x="0.0" y="170" width="600" height="256"/> + <rect key="frame" x="0.0" y="120" width="600" height="306"/> <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <prototypes> @@ -362,7 +282,7 @@ </prototypes> </tableView> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4h9-oR-C40"> - <rect key="frame" x="0.0" y="120" width="600" height="50"/> + <rect key="frame" x="0.0" y="70" width="600" height="50"/> <subviews> <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Search" textAlignment="natural" clearsOnBeginEditing="YES" minimumFontSize="20" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="zob-sY-qha"> <rect key="frame" x="40" y="10" width="520" height="30"/> @@ -402,39 +322,119 @@ <segue destination="aXS-um-aw2" kind="show" identifier="pushToCreateJournalEntry" id="a4i-zx-cvK"/> </connections> </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="EJ6-uf-zLo"> + <rect key="frame" x="0.0" y="20" width="120" height="50"/> + <animations/> + <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstAttribute="height" constant="50" id="nSu-DZ-G40"/> + </constraints> + <state key="normal" title="music"> + <color key="titleColor" red="1" green="0.96580194144491827" blue="0.065849877366854659" alpha="1" colorSpace="calibratedRGB"/> + </state> + <connections> + <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="K8k-JQ-me2"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4y1-WC-sKi"> + <rect key="frame" x="120" y="20" width="120" height="50"/> + <animations/> + <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> + <state key="normal" title="movie"> + <color key="titleColor" red="0.0" green="0.98431378599999997" blue="0.31764706970000001" alpha="1" colorSpace="deviceRGB"/> + </state> + <connections> + <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="Elw-iE-OuH"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VhT-rh-Xlh"> + <rect key="frame" x="480" y="20" width="120" height="50"/> + <animations/> + <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> + <state key="normal" title="book"> + <color key="titleColor" red="1" green="0.30034427511886808" blue="0.46572456648647631" alpha="1" colorSpace="calibratedRGB"/> + </state> + <connections> + <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="GWX-Np-N9z"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XjD-vV-PU3"> + <rect key="frame" x="360" y="20" width="120" height="50"/> + <animations/> + <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> + <state key="normal" title="podcast"> + <color key="titleColor" red="0.98580998180000001" green="0.62003214620000002" blue="0.067037612610000005" alpha="1" colorSpace="calibratedRGB"/> + </state> + <connections> + <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="D5e-mV-ILd"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pgh-XG-GUn"> + <rect key="frame" x="240" y="20" width="120" height="50"/> + <animations/> + <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> + <state key="normal" title="tv"> + <color key="titleColor" red="0.68431816999999995" green="0.90332986250000002" blue="1" alpha="1" colorSpace="calibratedRGB"/> + </state> + <connections> + <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="OaW-gN-Lra"/> + </connections> + </button> </subviews> <animations/> <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> <constraints> <constraint firstAttribute="trailing" secondItem="i6F-Oe-4xR" secondAttribute="trailing" id="1vY-Sv-N2G"/> - <constraint firstItem="Ax7-Aa-cpl" firstAttribute="width" secondItem="6gJ-up-Tie" secondAttribute="width" id="3Ks-3J-7vW"/> <constraint firstItem="PPA-gt-rZ4" firstAttribute="top" secondItem="Q0c-Ez-WJB" secondAttribute="bottom" constant="75" id="3L8-sb-LAC"/> - <constraint firstItem="Ax7-Aa-cpl" firstAttribute="leading" secondItem="pfn-eQ-aux" secondAttribute="leading" id="5sF-j5-6Wq"/> + <constraint firstItem="EJ6-uf-zLo" firstAttribute="leading" secondItem="pfn-eQ-aux" secondAttribute="leading" id="3fl-WU-y8e"/> + <constraint firstItem="4y1-WC-sKi" firstAttribute="width" secondItem="pgh-XG-GUn" secondAttribute="width" id="5cN-Iv-IUj"/> + <constraint firstItem="EJ6-uf-zLo" firstAttribute="top" secondItem="cYU-LH-eDv" secondAttribute="bottom" id="702-Kc-wk3"/> <constraint firstItem="PPA-gt-rZ4" firstAttribute="top" secondItem="i6F-Oe-4xR" secondAttribute="bottom" constant="75" id="7Fe-iU-INp"/> - <constraint firstItem="Ax7-Aa-cpl" firstAttribute="top" secondItem="pfn-eQ-aux" secondAttribute="top" constant="20" id="9C4-7H-9Cb"/> + <constraint firstItem="4y1-WC-sKi" firstAttribute="leading" secondItem="EJ6-uf-zLo" secondAttribute="trailing" id="7qG-bN-0G6"/> + <constraint firstItem="pgh-XG-GUn" firstAttribute="leading" secondItem="4y1-WC-sKi" secondAttribute="trailing" id="CFk-7Q-TPD"/> <constraint firstItem="twc-ko-3Rx" firstAttribute="leading" secondItem="pfn-eQ-aux" secondAttribute="leading" id="FZd-hl-gkx"/> + <constraint firstItem="4y1-WC-sKi" firstAttribute="top" secondItem="cYU-LH-eDv" secondAttribute="bottom" id="GzD-M9-fes"/> <constraint firstItem="Q0c-Ez-WJB" firstAttribute="leading" secondItem="pfn-eQ-aux" secondAttribute="leading" id="Jbu-5t-pGE"/> + <constraint firstItem="4h9-oR-C40" firstAttribute="top" secondItem="EJ6-uf-zLo" secondAttribute="bottom" id="KCP-pN-06l"/> + <constraint firstItem="4h9-oR-C40" firstAttribute="top" secondItem="VhT-rh-Xlh" secondAttribute="bottom" id="L3n-uD-pBY"/> + <constraint firstItem="4h9-oR-C40" firstAttribute="top" secondItem="pgh-XG-GUn" secondAttribute="bottom" id="ONC-I9-zux"/> + <constraint firstItem="pgh-XG-GUn" firstAttribute="width" secondItem="XjD-vV-PU3" secondAttribute="width" id="OoV-U9-MyF"/> + <constraint firstItem="VhT-rh-Xlh" firstAttribute="top" secondItem="cYU-LH-eDv" secondAttribute="bottom" id="Qdu-Ej-kde"/> <constraint firstAttribute="trailing" secondItem="twc-ko-3Rx" secondAttribute="trailing" id="RGJ-uK-hld"/> <constraint firstItem="i6F-Oe-4xR" firstAttribute="top" secondItem="twc-ko-3Rx" secondAttribute="bottom" id="VBu-IG-Jsg"/> - <constraint firstAttribute="trailing" secondItem="6gJ-up-Tie" secondAttribute="trailing" id="W2e-WV-pGs"/> + <constraint firstItem="XjD-vV-PU3" firstAttribute="top" secondItem="cYU-LH-eDv" secondAttribute="bottom" id="Wck-9n-HMh"/> + <constraint firstItem="XjD-vV-PU3" firstAttribute="width" secondItem="VhT-rh-Xlh" secondAttribute="width" id="XD2-ng-XU7"/> <constraint firstItem="i6F-Oe-4xR" firstAttribute="leading" secondItem="Q0c-Ez-WJB" secondAttribute="trailing" id="a8H-dW-uow"/> - <constraint firstItem="6gJ-up-Tie" firstAttribute="leading" secondItem="Ax7-Aa-cpl" secondAttribute="trailing" id="bU5-gb-wga"/> + <constraint firstItem="pgh-XG-GUn" firstAttribute="top" secondItem="cYU-LH-eDv" secondAttribute="bottom" id="bZD-iv-nvA"/> <constraint firstItem="4h9-oR-C40" firstAttribute="leading" secondItem="pfn-eQ-aux" secondAttribute="leading" id="d1p-g0-bVH"/> + <constraint firstItem="XjD-vV-PU3" firstAttribute="leading" secondItem="pgh-XG-GUn" secondAttribute="trailing" id="eey-3o-tcm"/> + <constraint firstItem="4y1-WC-sKi" firstAttribute="leading" secondItem="EJ6-uf-zLo" secondAttribute="trailing" id="iCz-NF-JsT"/> <constraint firstAttribute="trailing" secondItem="4h9-oR-C40" secondAttribute="trailing" id="ibm-d9-oMd"/> + <constraint firstItem="4h9-oR-C40" firstAttribute="top" secondItem="XjD-vV-PU3" secondAttribute="bottom" id="jgB-OU-dbZ"/> + <constraint firstAttribute="trailing" secondItem="VhT-rh-Xlh" secondAttribute="trailing" id="mn3-hb-GIV"/> + <constraint firstItem="VhT-rh-Xlh" firstAttribute="leading" secondItem="XjD-vV-PU3" secondAttribute="trailing" id="o1q-gt-kne"/> <constraint firstItem="i6F-Oe-4xR" firstAttribute="width" secondItem="Q0c-Ez-WJB" secondAttribute="width" id="oxZ-9t-iDE"/> - <constraint firstItem="4h9-oR-C40" firstAttribute="top" secondItem="6gJ-up-Tie" secondAttribute="bottom" id="tRe-zX-Mub"/> - <constraint firstItem="6gJ-up-Tie" firstAttribute="top" secondItem="pfn-eQ-aux" secondAttribute="top" constant="20" id="uc6-RM-OMP"/> + <constraint firstItem="pgh-XG-GUn" firstAttribute="leading" secondItem="4y1-WC-sKi" secondAttribute="trailing" id="rVq-84-wya"/> + <constraint firstItem="EJ6-uf-zLo" firstAttribute="width" secondItem="4y1-WC-sKi" secondAttribute="width" id="tZP-Pd-3cS"/> + <constraint firstItem="4h9-oR-C40" firstAttribute="top" secondItem="4y1-WC-sKi" secondAttribute="bottom" id="xE8-Gn-PK2"/> <constraint firstItem="twc-ko-3Rx" firstAttribute="top" secondItem="4h9-oR-C40" secondAttribute="bottom" id="yzs-2t-Ycy"/> </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="7qG-bN-0G6"/> + <exclude reference="CFk-7Q-TPD"/> + </mask> + </variation> </view> <navigationItem key="navigationItem" id="gPV-bk-VJf"/> <connections> - <outlet property="booksButton" destination="rgg-OH-neT" id="Ucr-iy-A9p"/> - <outlet property="moviesButton" destination="CLE-DE-TTz" id="7LO-pm-d9U"/> - <outlet property="musicButton" destination="cfG-sQ-zQZ" id="rag-AL-MMx"/> - <outlet property="podcastButton" destination="kEa-FP-z2a" id="tuc-aH-43L"/> + <outlet property="booksButton" destination="VhT-rh-Xlh" id="lft-lw-MG6"/> + <outlet property="moviesButton" destination="4y1-WC-sKi" id="MrR-aE-OEy"/> + <outlet property="musicButton" destination="EJ6-uf-zLo" id="uE7-0x-fSK"/> + <outlet property="podcastButton" destination="XjD-vV-PU3" id="056-o8-aEu"/> <outlet property="searchTextField" destination="zob-sY-qha" id="CSN-S0-Rzp"/> <outlet property="tableView" destination="twc-ko-3Rx" id="4Cw-TH-Ai6"/> + <outlet property="televisionButton" destination="pgh-XG-GUn" id="VIW-gO-3XS"/> </connections> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 7afa707..17d45c0 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -26,17 +26,14 @@ @interface SearchAPIViewController () @property (weak, nonatomic) IBOutlet UITextField *searchTextField; @property (weak, nonatomic) IBOutlet UITableView *tableView; -@property (weak, nonatomic) IBOutlet UIButton *musicButton; -@property (weak, nonatomic) IBOutlet UIButton *moviesButton; -@property (weak, nonatomic) IBOutlet UIButton *booksButton; +@property (strong, nonatomic) IBOutlet UIButton *musicButton; +@property (strong, nonatomic) IBOutlet UIButton *moviesButton; +@property (strong, nonatomic) IBOutlet UIButton *booksButton; @property (strong, nonatomic) IBOutlet UIButton *podcastButton; +@property (strong, nonatomic) IBOutlet UIButton *televisionButton; @property (nonatomic) NSString *media; @property (nonatomic) NSMutableArray *searchResults; -@property (nonatomic) NSMutableArray *searchResultsTwo; -@property (nonatomic) NSMutableArray *allSearchResults; @property (nonatomic) iTunesSearchResult *passSearchResult; -@property (nonatomic) BOOL isITunesSearch; -@property (nonatomic) BOOL isTVSearch; @end @@ -65,12 +62,12 @@ - (IBAction)mediaButtonTypeSelected:(id)sender { if (self.musicButton.isTouchInside){ self.media = @"music&entity=album"; - self.isTVSearch = FALSE; - self.isITunesSearch = TRUE; + } else if (self.booksButton.isTouchInside){ self.media = @"ebook"; - self.isTVSearch = TRUE; - self.isTVSearch = FALSE; + + } else if (self.televisionButton.isTouchInside){ + self.media = @"television"; } else { self.media = [sender currentTitle]; } @@ -100,7 +97,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term self.searchResults = [[NSMutableArray alloc]init]; - //First API Request +//First API Request - iTunes (music, ebooks, podcast) NSString *urlString = [NSString stringWithFormat: @"https://itunes.apple.com/search?media=%@&term=%@",media,term]; @@ -118,7 +115,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term NSArray *results = [json objectForKey:@"results"]; - //NSLog(@"Results: %@",results); + NSLog(@"iTunes Results: %@",results); for (NSDictionary *result in results){ @@ -129,7 +126,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term iTunesSearchResult *resultsObject = [[iTunesSearchResult alloc]init]; - if ([self.media isEqualToString:@"podcast"]){ + if ([self.media isEqualToString:@"podcast"] || [self.media isEqualToString:@"movie"]){ resultsObject.artistName = artistName; resultsObject.albumOrMovieName = movieName; resultsObject.artworkURL = artworkURL; @@ -148,7 +145,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term [self.tableView reloadData]; }}]; - //Second API Request +//Second API Request - for television NSString *urlStringTwo = [NSString stringWithFormat:@"http://api.tvmaze.com/search/shows?q=%@",term]; NSString *encodedStringTwo = [urlStringTwo stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; @@ -160,45 +157,85 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term if (data != nil){ NSArray *jsonTwo = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - NSLog(@"JSonTwo: %@",jsonTwo); + NSLog(@"TV results: %@",jsonTwo); NSDictionary *shows = [jsonTwo valueForKey:@"show"]; for (NSDictionary *show in shows){ - + NSString *name = [show valueForKey:@"name"]; NSArray *image = [show valueForKey:@"image"]; NSString *imageURL = [image valueForKey:@"medium"]; NSArray *network = [show valueForKey:@"network"]; NSString *channel = [network valueForKey:@"name"]; - iTunesSearchResult *searchResult = [[iTunesSearchResult alloc]init]; - searchResult.artistName = channel; - searchResult.albumOrMovieName = name; - searchResult.artworkURL = imageURL; - - NSLog(@"Show: %@",searchResult.albumOrMovieName); - NSLog(@"Artwork: %@",searchResult.artworkURL); - NSLog(@"Channel: %@",searchResult.artistName); - - [self.searchResults addObject:searchResult]; - + if ([self.media isEqualToString:@"television"]){ + + iTunesSearchResult *searchResult = [[iTunesSearchResult alloc]init]; + searchResult.artistName = channel; + searchResult.albumOrMovieName = name; + searchResult.artworkURL = imageURL; + + [self.searchResults addObject:searchResult]; + + } } - - } - [self.tableView reloadData]; }]; + +//Third API Request - for movies, including in-theatre + +// https://api.themoviedb.org/3/search/movie?api_key=a958839150c7c7c6333fd335128ea066&query=django - -} + NSString *urlStringThree = [NSString stringWithFormat:@"https://api.themoviedb.org/3/search/%@?api_key=a958839150c7c7c6333fd335128ea066&query=%@",media,term]; + + NSString *encodedStringThree = [urlStringThree stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; + + NSLog(@"Movie String: %@",encodedStringThree); + + NSURL *urlThree = [NSURL URLWithString:encodedStringThree]; + [APIManager GETRequestWithURL:urlThree + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + + if (data != nil){ + NSArray *jsonThree = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; + + NSDictionary *results = [jsonThree valueForKey:@"results"]; + + NSLog(@"Movie Results: %@",results); + + for (NSDictionary *result in results){ + + NSString *name = [result valueForKey:@"title"]; + NSString *releaseDate = [result valueForKey:@"release_date"]; + NSString *posterPath = [result valueForKey:@"poster_path"]; + + //http://image.tmdb.org/t/p/w500 + + if ([self.media isEqualToString:@"movie"]){ + + iTunesSearchResult *movieResult = [[iTunesSearchResult alloc]init]; + + movieResult.albumOrMovieName = name; + movieResult.artistName = releaseDate; + movieResult.artworkURL = [NSString stringWithFormat:@"http://image.tmdb.org/t/p/w500%@",posterPath]; + + [self.searchResults addObject:movieResult]; + + } + + [self.tableView reloadData]; + + } + + } + + }]; + } - - -// https://api.themoviedb.org/3/search/movie?api_key=a958839150c7c7c6333fd335128ea066&query=django - (BOOL)textFieldShouldReturn:(UITextField *)textField{ [self.view endEditing:YES]; From f43cbbb544b8030d0ccf54d90db7ca60ebd2f204 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Fri, 16 Oct 2015 15:17:53 -0400 Subject: [PATCH 47/86] Parse now saves journal entry --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes Unit-2-Journal/Unit-2-Journal/AppDelegate.m | 11 +----- .../Unit-2-Journal/Base.lproj/Main.storyboard | 14 +++---- .../CreateJournalEntryViewController.m | 28 +++++++++++++- Unit-2-Journal/Unit-2-Journal/JournalPost.h | 8 ++++ Unit-2-Journal/Unit-2-Journal/JournalPost.m | 8 ++++ .../Unit-2-Journal/SearchAPIViewController.m | 35 ++++++++++++------ .../Unit-2-Journal/iTunesSearchResult.h | 4 +- .../Unit-2-Journal/iTunesSearchResult.m | 4 +- 9 files changed, 80 insertions(+), 32 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index add258239e9b509fc82fd71c5d252468bfaa5f5b..c180c7ebada8f8e7965ab26991b8f55dc55f3694 100644 GIT binary patch delta 116 zcmZoMXffC@k(Fs_&E)?qCj7biE-ophCCLm7mt6nZF--o)Vmg_djhh9|@n_>@Vt6n) zj%_wmujS-;HVZx^Ep}htO?G5=Wd_k3*{t{rG7N*0^K%Orz+l6~LetIc9Dn%%RoN%y delta 119 zcmZoMXffC@k(KGN%;f(pCj7biE-ophCCLm7ms~827$*N?F`dlK#?9hl!2#j;v+*)A zPTt67HF-K)64UCE$?<F!d`P<N{f|#}WOro-(Lh!F1sR6H$@#ej3}A3!Vxj3~c8<UN E0N`LHS^xk5 diff --git a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m index d184225..2fb6b39 100644 --- a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m +++ b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m @@ -24,20 +24,13 @@ @interface AppDelegate () @implementation AppDelegate -//- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -//{ -// [Parse setApplicationId:@"huGlqbY2KVINDuFfqju1fN0eB2QVANcqqHP0NVpY" -// clientKey:@"aohlSqEhCwaXtZbji5us0j97GNzemWqq3m3EJqwG"]; -// return YES; -//} - - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];; - [Parse setApplicationId:@"huGlqbY2KVINDuFfqju1fN0eB2QVANcqqHP0NVpY" - clientKey:@"aohlSqEhCwaXtZbji5us0j97GNzemWqq3m3EJqwG"]; + [Parse setApplicationId:@"hCzKKPDr1l6QLDRastUEgUvunGWfxAYdQTI8zbdS" + clientKey:@"8ayioRGrdvQNTzwQfJ7KG9H4yLHz43ZKgvgqTIdt"]; //registering subclases to parse [iTunesSearchResult registerSubclass]; diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 30b9966..636d033 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -19,7 +19,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -255,11 +255,11 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> - <rect key="frame" x="15" y="5" width="32" height="20"/> + <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="16"/> @@ -267,7 +267,7 @@ <nil key="highlightedColor"/> </label> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> - <rect key="frame" x="15" y="25" width="41" height="14"/> + <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="11"/> @@ -471,7 +471,7 @@ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="Title" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> <rect key="frame" x="128" y="84" width="412" height="19"/> <animations/> <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/> @@ -707,7 +707,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> - <rect key="frame" x="0.0" y="0.0" width="567" height="63"/> + <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="346-CT-Uvl"> diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index 8b9f506..22421b5 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -11,6 +11,7 @@ #import "TabBarViewController.h" #import "JournalMainCollectionViewController.h" #import <pop/POP.h> +#import <Parse/Parse.h> @interface CreateJournalEntryViewController () <UITextViewDelegate> @@ -26,6 +27,7 @@ @interface CreateJournalEntryViewController () <UITextViewDelegate> @property (strong, nonatomic) IBOutlet UIButton *starButtonThree; @property (strong, nonatomic) IBOutlet UIButton *starButtonFour; @property (strong, nonatomic) IBOutlet UIButton *starButtonFive; +@property (strong, nonatomic) NSNumber *rating; @property (nonatomic) JournalPost *journalPost; @property (nonatomic) NSMutableArray *journalPostArray; @@ -48,7 +50,7 @@ - (void)viewDidLoad { self.textView.text = @"Write your thoughts here..."; self.textView.layer.borderWidth = 1.0f; self.textView.layer.cornerRadius = 5.0f; - self.textView.layer.borderColor = [UIColor grayColor].CGColor; + self.textView.layer.borderColor = [UIColor blackColor].CGColor; //populate journal header self.movieOrAlbumNameLabel.text = self.postSearchResult.albumOrMovieName; @@ -85,6 +87,7 @@ - (IBAction)oneStarTapped:(id)sender [self resetStars]; [self oneStarRating]; [self startAnimation]; + } - (IBAction)twoStarTapped:(id)sender @@ -124,21 +127,25 @@ - (void)resetStars } - (void)oneStarRating { + self.rating = @1; // assign rating for parse [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; } - (void)twoStarRating { + self.rating = @2; // assign rating for parse [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; } - (void)threeStarRating { + self.rating = @3; // assign rating for parse [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; } - (void)fourStarRating { + self.rating = @4; // assign rating for parse [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; @@ -146,6 +153,7 @@ - (void)fourStarRating { } - (void)fiveStarRating { + self.rating = @5; // assign rating for parse [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; @@ -188,10 +196,26 @@ - (IBAction)logToJournalButtonTapped:(id)sender { NSLog(@"Journal Post: %@",self.journalPost); - [self.navigationController popToRootViewControllerAnimated:YES]; + [self.navigationController popToRootViewControllerAnimated:YES]; // pop back to root controller [self.tabBarController setSelectedIndex:2]; // send to correct tab + NSLog(@"my journal text is: %@", self.textView.text); + + // SAVE it all to Parse + JournalPost *myJournalPost = [[JournalPost alloc] init]; // most of this is a repeat of above. + + myJournalPost[@"starRating"] = self.rating; + myJournalPost[@"postText"] = self.textView.text; + myJournalPost[@"title"] = self.postSearchResult.albumOrMovieName; + myJournalPost[@"creator"] = self.postSearchResult.artistName; + myJournalPost[@"dateEntered"] = [NSDate date]; + myJournalPost[@"typeOfMedia"] = self.postSearchResult.mediaType; + myJournalPost[@"imageForMedia"] = self.postSearchResult.artworkURL; + + [myJournalPost saveEventually]; // save your entry, even if offline + + } #pragma mark - Navigation diff --git a/Unit-2-Journal/Unit-2-Journal/JournalPost.h b/Unit-2-Journal/Unit-2-Journal/JournalPost.h index 0b01248..d2f24c7 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalPost.h +++ b/Unit-2-Journal/Unit-2-Journal/JournalPost.h @@ -14,4 +14,12 @@ @property (nonatomic) NSString *postText; @property (nonatomic) iTunesSearchResult *postSubject; +// added +@property (nonatomic) NSString *title; +@property (nonatomic) NSString *creator; // artist, writer, director +@property (nonatomic) NSDate *dateEntered; +@property (nonatomic) NSNumber *starRating; +@property (nonatomic) NSString *typeOfMedia; // ie book, album, movie, tv +@property (nonatomic) NSString *imageForMedia; + @end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalPost.m b/Unit-2-Journal/Unit-2-Journal/JournalPost.m index 4b7c448..a9d1fba 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalPost.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalPost.m @@ -13,6 +13,14 @@ @implementation JournalPost @dynamic postText; @dynamic postSubject; +// added +@dynamic title; +@dynamic creator; // artist, writer, director +@dynamic dateEntered; +@dynamic starRating; +@dynamic typeOfMedia; // ie book, album, movie, tv +@dynamic imageForMedia; + +(NSString *)parseClassName { return @"JournalPost"; } diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 17d45c0..e010029 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -14,8 +14,8 @@ #import "SearchAPITableViewCell.h" // add custom cell #import "TabBarViewController.h" #import "WishListTableViewController.h" -//#import <pop/POP.h> +//#import "JournalPost.h" @interface SearchAPIViewController () < @@ -62,23 +62,26 @@ - (IBAction)mediaButtonTypeSelected:(id)sender { if (self.musicButton.isTouchInside){ self.media = @"music&entity=album"; - + } else if (self.booksButton.isTouchInside){ self.media = @"ebook"; } else if (self.televisionButton.isTouchInside){ self.media = @"television"; + + } else if (self.podcastButton.isTouchInside) { + } else { self.media = [sender currentTitle]; } - - NSLog(@"Media: %@",self.media); + + NSLog(@"Media button tapped: %@",self.media); } #pragma mark - add to list buttons - (IBAction)createJournalEntryButtonTapped:(id)sender { - + } - (IBAction)addToWishListButtonTapped:(id)sender { @@ -115,7 +118,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term NSArray *results = [json objectForKey:@"results"]; - NSLog(@"iTunes Results: %@",results); + // NSLog(@"iTunes Results: %@",results); for (NSDictionary *result in results){ @@ -130,14 +133,19 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term resultsObject.artistName = artistName; resultsObject.albumOrMovieName = movieName; resultsObject.artworkURL = artworkURL; + resultsObject.mediaType = @"podcast"; + } else if ([self.media isEqualToString:@"music&entity=album"]){ resultsObject.artistName = artistName; resultsObject.albumOrMovieName = albumName; resultsObject.artworkURL = artworkURL; + resultsObject.mediaType = @"album"; + } else if ([self.media isEqualToString:@"ebook"]){ resultsObject.artistName = artistName; resultsObject.albumOrMovieName = movieName; resultsObject.artworkURL = artworkURL; + resultsObject.mediaType = @"book"; } [self.searchResults addObject:resultsObject]; @@ -145,7 +153,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term [self.tableView reloadData]; }}]; -//Second API Request - for television +// Second API Request - for television NSString *urlStringTwo = [NSString stringWithFormat:@"http://api.tvmaze.com/search/shows?q=%@",term]; NSString *encodedStringTwo = [urlStringTwo stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; @@ -157,7 +165,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term if (data != nil){ NSArray *jsonTwo = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - NSLog(@"TV results: %@",jsonTwo); + // NSLog(@"TV results: %@",jsonTwo); NSDictionary *shows = [jsonTwo valueForKey:@"show"]; @@ -175,6 +183,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term searchResult.artistName = channel; searchResult.albumOrMovieName = name; searchResult.artworkURL = imageURL; + searchResult.mediaType = @"tv"; [self.searchResults addObject:searchResult]; @@ -184,7 +193,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term [self.tableView reloadData]; }]; -//Third API Request - for movies, including in-theatre +// Third API Request - for movies, including in-theatre // https://api.themoviedb.org/3/search/movie?api_key=a958839150c7c7c6333fd335128ea066&query=django @@ -193,7 +202,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term NSString *encodedStringThree = [urlStringThree stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; - NSLog(@"Movie String: %@",encodedStringThree); + // NSLog(@"Movie String: %@",encodedStringThree); NSURL *urlThree = [NSURL URLWithString:encodedStringThree]; @@ -205,7 +214,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term NSDictionary *results = [jsonThree valueForKey:@"results"]; - NSLog(@"Movie Results: %@",results); + // NSLog(@"Movie Results: %@",results); for (NSDictionary *result in results){ @@ -222,6 +231,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term movieResult.albumOrMovieName = name; movieResult.artistName = releaseDate; movieResult.artworkURL = [NSString stringWithFormat:@"http://image.tmdb.org/t/p/w500%@",posterPath]; + movieResult.mediaType = @"movie"; [self.searchResults addObject:movieResult]; @@ -291,8 +301,9 @@ -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath * iTunesSearchResult *searchResult = self.searchResults[indexPath.row]; self.passSearchResult = searchResult; + - NSLog(@"%@", self.passSearchResult); + NSLog(@"passed search results: %@", self.passSearchResult); // push view controller diff --git a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h index a2cce05..90d8e3c 100644 --- a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h +++ b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h @@ -14,7 +14,9 @@ @property (nonatomic) NSString *artistName; @property (nonatomic) NSString *albumOrMovieName; @property (nonatomic) NSString *artworkURL; -@property (nonatomic) NSDate *addedDate; +@property (nonatomic) NSDate *addedDate; + +@property (nonatomic) NSString *mediaType; @end diff --git a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m index 37569a1..dbd95d2 100644 --- a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m +++ b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m @@ -13,7 +13,9 @@ @implementation iTunesSearchResult @dynamic artistName; @dynamic artworkURL; @dynamic albumOrMovieName; -@dynamic addedDate; +@dynamic addedDate; + +@dynamic mediaType; +(NSString *)parseClassName { From 17611521182ef4fd3c7a9e6e50d09cd7ce20b2db Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Fri, 16 Oct 2015 15:18:39 -0400 Subject: [PATCH 48/86] added more notes --- .../Unit-2-Journal/CreateJournalEntryViewController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index 22421b5..35ef8ca 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -202,7 +202,7 @@ - (IBAction)logToJournalButtonTapped:(id)sender { NSLog(@"my journal text is: %@", self.textView.text); - // SAVE it all to Parse + // when we log the journal entry, SAVE it all to Parse JournalPost *myJournalPost = [[JournalPost alloc] init]; // most of this is a repeat of above. myJournalPost[@"starRating"] = self.rating; From ca0c9db2ae0c1590154cab569fc12e88c1705f1f Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Fri, 16 Oct 2015 16:59:02 -0400 Subject: [PATCH 49/86] fixed podcast connection to Parse --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes Unit-2-Journal/Unit-2-Journal/AppDelegate.m | 4 ++-- .../Unit-2-Journal/SearchAPIViewController.m | 19 ++++++++++++------ 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index c180c7ebada8f8e7965ab26991b8f55dc55f3694..2d9db79c7f54c4a2edfe555990531afada2c917a 100644 GIT binary patch delta 119 zcmZoMXffC@k(KGN%;f(pCj7biE-ophCCLm7ms~7T87BW@F`dlK#?1of__OgcGEUye zW;J;_TN2Y8g~{=37JNv$?EQ~Vc4T*D2GKxO`~?|?!O8i#1q@(tU}B-^W_FIh`~din BC3gS- delta 116 zcmZoMXffC@k(Fs_&E)?qCj7biE-ophCCLm7mt6nZF--o)Vmg_djhh9|@n_>@Vt6n) zj%_wmujS-;HVZx^Ep}htO?G5=Wd_k3*{t{rG7N*0^K%Orz+l6~LetIc9Dn%%RoN%y diff --git a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m index 2fb6b39..4bf1a32 100644 --- a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m +++ b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m @@ -29,8 +29,8 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];; - [Parse setApplicationId:@"hCzKKPDr1l6QLDRastUEgUvunGWfxAYdQTI8zbdS" - clientKey:@"8ayioRGrdvQNTzwQfJ7KG9H4yLHz43ZKgvgqTIdt"]; + [Parse setApplicationId:@"huGlqbY2KVINDuFfqju1fN0eB2QVANcqqHP0NVpY" + clientKey:@"aohlSqEhCwaXtZbji5us0j97GNzemWqq3m3EJqwG"]; //registering subclases to parse [iTunesSearchResult registerSubclass]; diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index e010029..bdf9e27 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -69,8 +69,8 @@ - (IBAction)mediaButtonTypeSelected:(id)sender { } else if (self.televisionButton.isTouchInside){ self.media = @"television"; - } else if (self.podcastButton.isTouchInside) { - + // } else if (self.podcastButton.isTouchInside) { + } else { self.media = [sender currentTitle]; } @@ -114,11 +114,11 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term if (data != nil){ NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - //NSLog(@"%@",json); + NSLog(@"%@",json); NSArray *results = [json objectForKey:@"results"]; - // NSLog(@"iTunes Results: %@",results); + // NSLog(@"iTunes Results: %@",results); for (NSDictionary *result in results){ @@ -129,11 +129,18 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term iTunesSearchResult *resultsObject = [[iTunesSearchResult alloc]init]; - if ([self.media isEqualToString:@"podcast"] || [self.media isEqualToString:@"movie"]){ + if ([self.media isEqualToString:@"movie"]){ + resultsObject.artistName = artistName; + resultsObject.albumOrMovieName = movieName; + resultsObject.artworkURL = artworkURL; + resultsObject.mediaType = @"movie"; + + } else if ([self.media isEqualToString:@"podcast"]) { resultsObject.artistName = artistName; resultsObject.albumOrMovieName = movieName; resultsObject.artworkURL = artworkURL; - resultsObject.mediaType = @"podcast"; + resultsObject.mediaType = @"podcast"; // add media type to iTunesSearchObject so that we can add it to Parse later + } else if ([self.media isEqualToString:@"music&entity=album"]){ resultsObject.artistName = artistName; From 81c4d3941ad7b9416362c63c9ed77691e9dfa4aa Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Fri, 16 Oct 2015 20:12:40 -0400 Subject: [PATCH 50/86] parse data fills collection cells but images are missing --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 6 +++ Unit-2-Journal/Unit-2-Journal/.DS_Store | Bin 10244 -> 10244 bytes .../CreateJournalEntryViewController.m | 1 - .../JournalMainCollectionViewCell.h | 13 ++++++ .../JournalMainCollectionViewCell.m | 13 ++++++ .../JournalMainCollectionViewController.m | 40 +++++++++++++++--- .../Unit-2-Journal/SearchAPIViewController.m | 4 +- 8 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.h create mode 100644 Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.m diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 2d9db79c7f54c4a2edfe555990531afada2c917a..e8acab8b7a83bb77a49df8cdda29531548440436 100644 GIT binary patch delta 79 zcmZoMXffC@k(KFy_T>L8Cj7biE-ophCCLm7m)vC!F--o)Vmg_djhh9|@n_>@V)!sQ dj%_y6QuE32Y!;J^+2=7{m{@4KnVsV=KL9qD8nyrc delta 82 zcmZoMXffC@k(KGN%;f(pCj7biE-ophCCLm7ms~7T87BW@F`dlK#?1of__OgcGEUye gW;J;_TN2Y8g~{=37L$$H=P@3bSZKPLo#QV*09*|kga7~l diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index a6b8541..ee49735 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -26,6 +26,7 @@ 4DCBE14A1BC9ADAE0075BA2C /* CreateJournalEntryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE1491BC9ADAE0075BA2C /* CreateJournalEntryViewController.m */; settings = {ASSET_TAGS = (); }; }; 4DCBE14D1BC9ADE00075BA2C /* WishListTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE14C1BC9ADE00075BA2C /* WishListTableViewController.m */; settings = {ASSET_TAGS = (); }; }; 4DCBE1501BC9BD800075BA2C /* ViewCompletedEntryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */; settings = {ASSET_TAGS = (); }; }; + 4DFECE8B1BD1A4C000CC8DF6 /* JournalMainCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DFECE8A1BD1A4C000CC8DF6 /* JournalMainCollectionViewCell.m */; settings = {ASSET_TAGS = (); }; }; 5A50331A1BC8D0E4001CBA5C /* MainTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A5033191BC8D0E4001CBA5C /* MainTableViewController.m */; settings = {ASSET_TAGS = (); }; }; 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331C1BC8D99D001CBA5C /* LoginViewController.m */; settings = {ASSET_TAGS = (); }; }; 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331F1BC8D9B5001CBA5C /* SignUpViewController.m */; settings = {ASSET_TAGS = (); }; }; @@ -71,6 +72,8 @@ 4DCBE14C1BC9ADE00075BA2C /* WishListTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WishListTableViewController.m; sourceTree = "<group>"; }; 4DCBE14E1BC9BD800075BA2C /* ViewCompletedEntryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewCompletedEntryViewController.h; sourceTree = "<group>"; }; 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewCompletedEntryViewController.m; sourceTree = "<group>"; }; + 4DFECE891BD1A4C000CC8DF6 /* JournalMainCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalMainCollectionViewCell.h; sourceTree = "<group>"; }; + 4DFECE8A1BD1A4C000CC8DF6 /* JournalMainCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalMainCollectionViewCell.m; sourceTree = "<group>"; }; 5A5033181BC8D0E4001CBA5C /* MainTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainTableViewController.h; sourceTree = "<group>"; }; 5A5033191BC8D0E4001CBA5C /* MainTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainTableViewController.m; sourceTree = "<group>"; }; 5A50331B1BC8D99D001CBA5C /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; }; @@ -124,6 +127,8 @@ 4D7FE2A21BCC41A00036E58E /* WishListTableViewCell.h */, 4D7FE2A31BCC41A00036E58E /* WishListTableViewCell.m */, 4D7FE2A41BCC41A00036E58E /* WishListTableViewCell.xib */, + 4DFECE891BD1A4C000CC8DF6 /* JournalMainCollectionViewCell.h */, + 4DFECE8A1BD1A4C000CC8DF6 /* JournalMainCollectionViewCell.m */, ); name = "Custom Views & .XIBs"; sourceTree = "<group>"; @@ -384,6 +389,7 @@ 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */, 4D7FE2A51BCC41A00036E58E /* WishListTableViewCell.m in Sources */, 4DCBE1501BC9BD800075BA2C /* ViewCompletedEntryViewController.m in Sources */, + 4DFECE8B1BD1A4C000CC8DF6 /* JournalMainCollectionViewCell.m in Sources */, 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */, 4D7FE29D1BCC32170036E58E /* SearchAPITableViewCell.m in Sources */, ); diff --git a/Unit-2-Journal/Unit-2-Journal/.DS_Store b/Unit-2-Journal/Unit-2-Journal/.DS_Store index 69b0e76089fd7eeeefe9f3f56f1ed26e9ea305a0..ca0ad334ab0012b53c5afcc30771b56f0912ec42 100644 GIT binary patch delta 44 zcmZn(XbG6$mJU^hRb`eq&h8J10=?A#L@Zfs^(_|3wc$&fdBqp0xa52A0F07Xm> A82|tP delta 188 zcmZn(XbG6$XEU^hRb=4KuN85T`71}}zuhEj$ihCGHuh8zZ8AejkdI|D^?fH0LI znV|$Il0UgnMBcZKL60HBGbcYeDJMUPfq_8)h}{?%7%TpR0g%VQK$3})AQN-ZOgsZJ UakH$55cg(wh2JcjwM3Yh0s9&)LI3~& diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index 35ef8ca..625b457 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -215,7 +215,6 @@ - (IBAction)logToJournalButtonTapped:(id)sender { [myJournalPost saveEventually]; // save your entry, even if offline - } #pragma mark - Navigation diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.h b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.h new file mode 100644 index 0000000..20c8ee0 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.h @@ -0,0 +1,13 @@ +// +// JournalMainCollectionViewCell.h +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/16/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface JournalMainCollectionViewCell : UICollectionViewCell + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.m new file mode 100644 index 0000000..ce30bcd --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.m @@ -0,0 +1,13 @@ +// +// JournalMainCollectionViewCell.m +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/16/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "JournalMainCollectionViewCell.h" + +@implementation JournalMainCollectionViewCell + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index 26db13a..c45b90c 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -7,6 +7,7 @@ // #import "JournalMainCollectionViewController.h" +#import <Parse/Parse.h> @interface JournalMainCollectionViewController () @@ -44,14 +45,34 @@ - (void)viewDidLoad // forCellWithReuseIdentifier:@"CollectionHeaderIdentifier"]; // [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"]; + +// PFQuery *query = [PFQuery queryWithClassName:@"JournalPost"]; +// [query selectKeys:@[@"imageForMedia"]]; +// [query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) { +// +// collectionImages = [NSMutableArray arrayWithObjects:objects, nil]; + + + + // NSLog(@"saved images: %@", objects); + +// }]; + + [self runQuery]; // run Parse query to fetch saved data } -#pragma mark - Navigation - -//- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { -// -//} - +- (void)runQuery { + PFQuery *query = [PFQuery queryWithClassName:@"JournalPost"]; + [query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) { + + self.allJournalPosts = objects; // pull all images from Parse + NSLog(@"info fetched from parse: %@", self.allJournalPosts); // test it! + + // right now the posts are saved as a URL... change this back to image somehow + + [self.collectionView reloadData]; // reload tableView + }]; +} #pragma mark <UICollectionViewDataSource> @@ -61,7 +82,6 @@ - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - //return collectionImages.count; return self.allJournalPosts.count; } @@ -69,6 +89,12 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell static NSString *identifier = @"Cell"; UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; + + + PFObject *post = self.allJournalPosts[indexPath.row]; // pulling out parse data here + PFFile *file = post[@"imageForMedia"]; // this returns urls for each image + // [cell.imageView loadInBackground]; // broken + UIImageView *collectionImageView = (UIImageView *)[cell viewWithTag:100]; diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index bdf9e27..5c6e310 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -133,13 +133,13 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term resultsObject.artistName = artistName; resultsObject.albumOrMovieName = movieName; resultsObject.artworkURL = artworkURL; - resultsObject.mediaType = @"movie"; + resultsObject.mediaType = @"movie"; // add media type to iTunesSearchObject so that we can pass it to Parse later } else if ([self.media isEqualToString:@"podcast"]) { resultsObject.artistName = artistName; resultsObject.albumOrMovieName = movieName; resultsObject.artworkURL = artworkURL; - resultsObject.mediaType = @"podcast"; // add media type to iTunesSearchObject so that we can add it to Parse later + resultsObject.mediaType = @"podcast"; } else if ([self.media isEqualToString:@"music&entity=album"]){ From e6de8dabed684e8c058ab5790cd0757e03be898f Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 18 Oct 2015 11:21:36 -0400 Subject: [PATCH 51/86] images running on collection view --- .../JournalMainCollectionViewController.m | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index c45b90c..b9a6ddb 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -17,6 +17,10 @@ @implementation JournalMainCollectionViewController //static NSString * const reuseIdentifier = @"Cell"; +- (void) viewDidAppear:(BOOL)animated{ + [self.collectionView reloadData]; +} + - (void)viewDidLoad { [super viewDidLoad]; @@ -40,27 +44,11 @@ - (void)viewDidLoad self.collectionView.alwaysBounceVertical = YES; -// UINib *headerNib = [UINib nibWithNibName:@"CollectionHeaderIdentifier" bundle:nil]; // header nib -// [self.collectionView registerNib:headerNib -// forCellWithReuseIdentifier:@"CollectionHeaderIdentifier"]; - - // [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"]; - -// PFQuery *query = [PFQuery queryWithClassName:@"JournalPost"]; -// [query selectKeys:@[@"imageForMedia"]]; -// [query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) { -// -// collectionImages = [NSMutableArray arrayWithObjects:objects, nil]; - - - - // NSLog(@"saved images: %@", objects); - -// }]; - [self runQuery]; // run Parse query to fetch saved data } +#pragma mark - fetch saved data from Parse + - (void)runQuery { PFQuery *query = [PFQuery queryWithClassName:@"JournalPost"]; [query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) { @@ -94,7 +82,12 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell PFObject *post = self.allJournalPosts[indexPath.row]; // pulling out parse data here PFFile *file = post[@"imageForMedia"]; // this returns urls for each image // [cell.imageView loadInBackground]; // broken + NSLog(@"file: %@", file); + NSString *fileString = [NSString stringWithFormat:@"%@",file]; + NSURL *fileURL = [NSURL URLWithString:fileString]; + NSData *fileData = [NSData dataWithContentsOfURL:fileURL]; + UIImage *fileImage = [UIImage imageWithData:fileData]; UIImageView *collectionImageView = (UIImageView *)[cell viewWithTag:100]; @@ -106,9 +99,9 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell NSString *imageString = iTunes.artworkURL; NSURL *imageURL = [NSURL URLWithString:imageString]; NSData *imageData = [NSData dataWithContentsOfURL:imageURL]; - UIImage *image = [UIImage imageWithData:imageData]; + // UIImage *image = [UIImage imageWithData:imageData]; - collectionImageView.image = image; + collectionImageView.image = fileImage; // round corners cell.layer.borderWidth = 2.0; From 4c30424555bb8bec89c97bd1650aa7e56118f062 Mon Sep 17 00:00:00 2001 From: Brian <brianblanco1@gmail.comm> Date: Sun, 18 Oct 2015 14:26:28 -0400 Subject: [PATCH 52/86] updated launch screen --- .DS_Store | Bin 8196 -> 6148 bytes Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 10 ++- Unit-2-Journal/Unit-2-Journal/.DS_Store | Bin 10244 -> 12292 bytes .../Base.lproj/LaunchScreen.storyboard | 75 +++++++++++++++- Unit-2-Journal/Unit-2-Journal/Info.plist | 82 +++++++++--------- .../Unit-2-Journal/basictitlefont.ttf | Bin 0 -> 33244 bytes 7 files changed, 124 insertions(+), 43 deletions(-) create mode 100755 Unit-2-Journal/Unit-2-Journal/basictitlefont.ttf diff --git a/.DS_Store b/.DS_Store index 230b4e2a70d055d8f79ad89ebfd4c53ba322ebc3..1dce55acc4c6f3b1018c89df0b3237bac264c31a 100644 GIT binary patch delta 121 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$jG@dU^g=(=Vl&(yNnzr28KEc zh9(x1KMHnEo*|yUu|bY;F*^r`ATv-45D0Js30IKrjfLNtC-cjAg3MxIf|v`kieYm+ H&m3j|TJaTs literal 8196 zcmeHLTWB0r82<k>ZDyyJ%qESQv~IhShBh^cF})<!UN*PZ^kPG9o21coc4tfmXJ?k3 z+1=DwjR>}aDB5aO@WB=o6#LX7_#pZsg5m{=v@gC0MST){@+to3oY|0j5h@lsXF2CT zm;XDLZ@xKa&j0{+<n)IDQ~;1DGOMhmWQoAqSzHuK{2GQs!UJT$g(gUY-eWED4k`i$ z0tNyG0tNyG0tW5|2I$OYL0abA7p*}WFc2_sPcp#vhbTp6W4@ghmTw)D@GAh>QmW>G z@^la2n5b`KzMU49L#a=3dq5wG{uKiSoZ6$zoovjv)4~ckpnwDVBcp#qK|VU+qTC%Y zCTx%f3<L};W`LdjAsB}&IFOrre|J(z%Slozd!Y_f+%dxg<p9=zNw<8Ba0a+N);!<u zR`S)|l$CTG{&k=XjzbT0LN`1P{m?zX8|+)qO$hqPvmLtN1X=$h!`y-K#sb6!7zCRp z>Omv4P&~?)n58-mtoftCV}w0Rv213BQh*h)$%32l$+?xxSf=YWH{ZaLRi&%flu03( z{mMg6^iMd2eoymqZikjV#Y?7cB>jA^=1mmy14PJdUP}&{Mj@eW>~w5TGi@U~2Rarv zZQUt!I5}H)6G~NY*2t50uVx!VrfVim%k)l5A@)ls>eN)ro;?lGmOXpVG(@LbTbmoA zyLat9b4HSCw(mN0EN)Mozwp-E7vFjJDql08zqdkIlxNdxw_~LESXl=vQfImOUO`=n zvjlZ()vj>2oKPy*s!nD+)3MzlBkPh)DCI6O+LLl@f7S7nW98B|@eodFRw`#{p3!bu z{pPcVJM0;g9?OloPS)$>j>9HlSzSU=a<0*55WvhET?BI#41K(=YSWh59gQum`>(Ix zP_Be4WO<aHnC+QQn?`o9VCvq)h~}mYTQ}|Tc%Bh%83VSKHo`a=3USnZ)v7$EQ<o<k zo#Axlnj~5_SF7qN*3y|ZDAgs21GYw0dBCMvDVp!NtxlE)o}mY=xPGVgJ7smy(vpUy z=pg}XdPr8|c|nbG%&*+FTULitPC8AKcEi}<SGVm`)hF4=$2HeGnK5jd)i*T!frE$E ztJP{paVZOzC`ls>)voI_+uGO;p@-U7v&e+#$gZI`F-C9C7;OX@I1R7DYw$X}2bbXr zT!k;-YxowvhaccaxCyu5H~1a?fWKe{Noy!$Ifk(UEAf7O0Bdm@)?pLw#=Y2zZP<=I zcnpu@2^_)%CNYINrtvv^9$&y|d<EaYi}(Rv!prz6Uct}sOEIaEqK1!%axulPD0e$) z`fqhfd?{&0x+@R=Ptv@(P6)DcW0kMa_Swh0;K9yS7?+jM4cAjqFI=+oM0%ZMTeE4i z92q3p8IuczP!xz#CPc-&w?-ooMdCVQ#cg#|EFrN=ys!G55m{NqCCyq%tr2B47cVQ4 zPGzN(%bOM3_EGB^u3}a^aFAL-yi%+js*A|9qx~BJUV=~Hb1uH0;Ai*+euY2bZ<5_= zl3X>`kl-S?1-D~8K8Ow2NRn&ANAOYHkKK5Lgm;vrH$cK0#t|GP=@~eV6KG-<J<MYP zC-Fsm317yuc#eelCZ5L&_&$EPK!WU0nG^6MDy%5Me1F!q9DAJniZY&qzvJ0eqDPhe z2k2h@`~MvuH|Q{6AYkC`VE{|J`nx)4KFe)7?5-W9_!LDJnBTOp96||mVfFkvPS(GU o^SY?t7W3`2upCMl4kasY^8fvZfMsq3^w%^v|AX`YUOE5&0bQ${{Qv*} diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index e8acab8b7a83bb77a49df8cdda29531548440436..b565dd98bb419524e704b2f361afecb797846bf7 100644 GIT binary patch delta 118 zcmZoMXffC@k(KGN%;f(pCj7biE-ophCCLm7ms~7T87BW@F`dlK#?1of__OgcGEUye zW;J;_TM|=#*5r6L3qB-W_JU_8JF>em0V$v&{(=m{;N<+=0tPT>m{@4KnVsV=KLE;0 BB&7fV delta 115 zcmZoMXffC@k(KFy_T>L8Cj7biE-ophCCLm7m)vC!F--o)Vmg_djhh9|@n_>@V)!sQ zj%_y6QuE32Y!-Y-TI~IgPj+N?V**ke*{t{rG7N*0^K%Orz~I8fLetIc9Dn%%w1XvT diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index ee49735..6791223 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -30,6 +30,7 @@ 5A50331A1BC8D0E4001CBA5C /* MainTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A5033191BC8D0E4001CBA5C /* MainTableViewController.m */; settings = {ASSET_TAGS = (); }; }; 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331C1BC8D99D001CBA5C /* LoginViewController.m */; settings = {ASSET_TAGS = (); }; }; 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331F1BC8D9B5001CBA5C /* SignUpViewController.m */; settings = {ASSET_TAGS = (); }; }; + 5A6A22811BD3FE31006E9FE7 /* basictitlefont.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5A6A22801BD3FDFF006E9FE7 /* basictitlefont.ttf */; }; 617F8769EFBE79517A02E6D0 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAF24AD380284C55768010A2 /* libPods.a */; }; 9A2937201BCC26FE00ACEEE0 /* JournalPost.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A29371F1BCC26FE00ACEEE0 /* JournalPost.m */; settings = {ASSET_TAGS = (); }; }; 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC2E1BC84BF200E880D3 /* main.m */; }; @@ -80,6 +81,7 @@ 5A50331C1BC8D99D001CBA5C /* LoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = "<group>"; }; 5A50331E1BC8D9B5001CBA5C /* SignUpViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SignUpViewController.h; sourceTree = "<group>"; }; 5A50331F1BC8D9B5001CBA5C /* SignUpViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SignUpViewController.m; sourceTree = "<group>"; }; + 5A6A22801BD3FDFF006E9FE7 /* basictitlefont.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = basictitlefont.ttf; sourceTree = "<group>"; }; 9A29371E1BCC26FE00ACEEE0 /* JournalPost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalPost.h; sourceTree = "<group>"; }; 9A29371F1BCC26FE00ACEEE0 /* JournalPost.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalPost.m; sourceTree = "<group>"; }; 9A2FFC2A1BC84BF200E880D3 /* Unit-2-Journal.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Unit-2-Journal.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -195,6 +197,7 @@ 9A2FFC2D1BC84BF200E880D3 /* Supporting Files */ = { isa = PBXGroup; children = ( + 5A6A22801BD3FDFF006E9FE7 /* basictitlefont.ttf */, 4DCBE1331BC9943D0075BA2C /* big_nerd_ranch.png */, 4DCBE1341BC9943D0075BA2C /* destroyer.png */, 4DCBE1351BC9943D0075BA2C /* drake.png */, @@ -275,7 +278,7 @@ TargetAttributes = { 9A2FFC291BC84BF100E880D3 = { CreatedOnToolsVersion = 7.0; - DevelopmentTeam = 5F2A5ZZ575; + DevelopmentTeam = Z6GBYPK592; }; }; }; @@ -302,6 +305,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 5A6A22811BD3FE31006E9FE7 /* basictitlefont.ttf in Resources */, 4DCBE13F1BC9943D0075BA2C /* lean_startup.png in Resources */, 9A2FFC401BC84BF200E880D3 /* LaunchScreen.storyboard in Resources */, 4D7FE2A61BCC41A00036E58E /* WishListTableViewCell.xib in Resources */, @@ -509,7 +513,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.jamaalsedayao.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.brianblanco.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; @@ -525,7 +529,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.jamaalsedayao.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.brianblanco.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; diff --git a/Unit-2-Journal/Unit-2-Journal/.DS_Store b/Unit-2-Journal/Unit-2-Journal/.DS_Store index ca0ad334ab0012b53c5afcc30771b56f0912ec42..7d5541670a4bcd2f65eed797c2d65c87c8070381 100644 GIT binary patch delta 1419 zcmZn(Xh~3DU|?W$DortDV9)?EIe-{M3-ADmb_NCo?uiQOvdlmZBM_SdF_105z>vw1 z#}LAh$dJU4GqF&4vVjT<D@Xy$<Z@Bd$q&Q?CTEHAPEHa~-dM!MzL}kag@aKVC^eH& zVzQu^@MI%V5zSPF93a$V$nea`Pfp6oPXcNO8qDAZG^OJ|7yx+;4467{(R7?a(;)@3 zLlI_21<<`osJa+~K)NP}i`fF5%RjkZoON@Um=z<h7}Q%%K+hFTJ}71+h2k1i>5EcE zOe{Y(w~Ak9VicboE2YW`wsEq(m>3_+4<t_@OHM?WlmzL->((1UxBl21D7B4sW5ZV_ zM(NEw0&ke4l^C2EiWpLX4lMzaUJUsRr9gfjke@Soy`+T>BTyT|3?x_J*PuE1gOo56 zBgf{qLe`A+@~8$f_yUauMY=Q48c@WgG9&}7%>?rD7{Y*bDnmI?4i?~8B9*ZM$t46$ zPs3|GmK1<uyehGdpIj(nU<FQc5=gEiMY|#})C3YiNf6ltUNi>;0K=&m7+x639h?k_ z&^dXcm@q3S8AxoF72#l<{76bz1{k}npd13svD`qy6*<>#EPT&AnP0__kzuk8k2DJ~ cZ*ok|P?=Q^P95})OhjD9U`Z>ZkqL}U0R9?cN&o-= delta 213 zcmZokXbF&DU|?W$DortDU{C-uIe-{M3-C-V6q~3gIoUvmMH0woPzPd0pg03VB10Y! zr!%B76m1TaSj@heor8sgQGGLy!W*W|2b2vMCx21<J8?qL#0jR87bx>j4iE^P{94dx za-2H<=39dHjGH$KpJCdZExwvnkQrn$&_Zq?;R>>JvmoPl=E?jzhO9ul7#b!!>PT}i XL0qLVIYDRE<a6rEc#NLBQMd#Eo7FWa diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard index 5a9c4a6..06e4fc2 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> </dependencies> @@ -15,8 +15,78 @@ <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Rate It" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="j2q-Vy-UO8"> + <rect key="frame" x="148" y="146" width="305" height="142"/> + <animations/> + <constraints> + <constraint firstAttribute="height" constant="142" id="DJr-5U-LGO"/> + <constraint firstAttribute="width" constant="305" id="T3c-iU-jOA"/> + </constraints> + <fontDescription key="fontDescription" name="IowanOldStyle-Roman" family="Iowan Old Style" pointSize="100"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <color key="highlightedColor" red="0.40000000600000002" green="0.40000000600000002" blue="0.40000000600000002" alpha="1" colorSpace="calibratedRGB"/> + <color key="shadowColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/> + <size key="shadowOffset" width="2" height="-1"/> + </label> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rating_star_filled" translatesAutoresizingMaskIntoConstraints="NO" id="r92-Pp-sGu"> + <rect key="frame" x="148" y="278" width="60" height="60"/> + <animations/> + <constraints> + <constraint firstAttribute="width" constant="60" id="0Kv-zE-laH"/> + <constraint firstAttribute="height" constant="60" id="Gy3-sl-70j"/> + </constraints> + </imageView> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rating_star_filled" translatesAutoresizingMaskIntoConstraints="NO" id="ziX-3c-ZhK"> + <rect key="frame" x="270" y="278" width="60" height="60"/> + <animations/> + <constraints> + <constraint firstAttribute="height" constant="60" id="XtN-IC-I2J"/> + <constraint firstAttribute="width" constant="60" id="g7o-8m-NZF"/> + </constraints> + </imageView> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rating_star_filled" translatesAutoresizingMaskIntoConstraints="NO" id="0L6-ec-PpF"> + <rect key="frame" x="332" y="278" width="60" height="60"/> + <animations/> + <constraints> + <constraint firstAttribute="height" constant="60" id="B7e-84-ide"/> + <constraint firstAttribute="width" constant="60" id="cVT-nK-qtc"/> + </constraints> + </imageView> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rating_star_filled" translatesAutoresizingMaskIntoConstraints="NO" id="Hd4-1H-gES"> + <rect key="frame" x="207" y="278" width="60" height="60"/> + <animations/> + <constraints> + <constraint firstAttribute="height" constant="60" id="Uc8-zf-puh"/> + <constraint firstAttribute="width" constant="60" id="hEI-nU-1lO"/> + </constraints> + </imageView> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rating_star_filled" translatesAutoresizingMaskIntoConstraints="NO" id="6el-0s-hhb"> + <rect key="frame" x="393" y="278" width="60" height="60"/> + <animations/> + <constraints> + <constraint firstAttribute="height" constant="60" id="Oii-Sw-U6V"/> + <constraint firstAttribute="width" constant="60" id="fEz-kV-Ad3"/> + </constraints> + </imageView> + </subviews> <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> + <rect key="contentStretch" x="0.0" y="0.0" width="1" height="0.0"/> + <constraints> + <constraint firstItem="Hd4-1H-gES" firstAttribute="leading" secondItem="r92-Pp-sGu" secondAttribute="trailing" constant="-1" id="3ii-5q-hRb"/> + <constraint firstItem="ziX-3c-ZhK" firstAttribute="leading" secondItem="Hd4-1H-gES" secondAttribute="trailing" constant="3" id="6pO-HJ-Pil"/> + <constraint firstItem="Hd4-1H-gES" firstAttribute="top" secondItem="j2q-Vy-UO8" secondAttribute="bottom" constant="-10" id="7BO-jJ-39y"/> + <constraint firstItem="ziX-3c-ZhK" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="F5B-G9-hXv"/> + <constraint firstItem="j2q-Vy-UO8" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="GJk-9P-XTt"/> + <constraint firstItem="0L6-ec-PpF" firstAttribute="leading" secondItem="ziX-3c-ZhK" secondAttribute="trailing" constant="2" id="MeQ-CK-lT0"/> + <constraint firstItem="ziX-3c-ZhK" firstAttribute="top" secondItem="j2q-Vy-UO8" secondAttribute="bottom" constant="-10" id="amX-r4-PdM"/> + <constraint firstItem="6el-0s-hhb" firstAttribute="top" secondItem="j2q-Vy-UO8" secondAttribute="bottom" constant="-10" id="ayZ-42-MHT"/> + <constraint firstItem="0L6-ec-PpF" firstAttribute="top" secondItem="j2q-Vy-UO8" secondAttribute="bottom" constant="-10" id="gaJ-NX-OT6"/> + <constraint firstItem="6el-0s-hhb" firstAttribute="leading" secondItem="0L6-ec-PpF" secondAttribute="trailing" constant="1" id="jWH-VE-bAX"/> + <constraint firstItem="r92-Pp-sGu" firstAttribute="top" secondItem="j2q-Vy-UO8" secondAttribute="bottom" constant="-10" id="q7p-HH-IfM"/> + <constraint firstItem="j2q-Vy-UO8" firstAttribute="top" secondItem="Llm-lL-Icb" secondAttribute="bottom" constant="126" id="ucC-Ud-8N3"/> + </constraints> </view> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> @@ -24,4 +94,7 @@ <point key="canvasLocation" x="53" y="375"/> </scene> </scenes> + <resources> + <image name="rating_star_filled" width="128" height="128"/> + </resources> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/Info.plist b/Unit-2-Journal/Unit-2-Journal/Info.plist index a470388..af66eeb 100644 --- a/Unit-2-Journal/Unit-2-Journal/Info.plist +++ b/Unit-2-Journal/Unit-2-Journal/Info.plist @@ -2,72 +2,76 @@ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> + <key>CFBundleDevelopmentRegion</key> + <string>en</string> + <key>CFBundleExecutable</key> + <string>$(EXECUTABLE_NAME)</string> + <key>CFBundleIdentifier</key> + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>$(PRODUCT_NAME)</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleURLTypes</key> + <array> + <dict> + <key>CFBundleURLSchemes</key> + <array> + <string>fb762432797195822</string> + </array> + </dict> + </array> + <key>CFBundleVersion</key> + <string>1</string> + <key>FacebookAppID</key> + <string>762432797195822</string> + <key>FacebookDisplayName</key> + <string>Unit-2-Journal</string> <key>LSApplicationQueriesSchemes</key> <array> <string>fbauth2</string> </array> + <key>LSRequiresIPhoneOS</key> + <true/> <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> <key>NSExceptionDomains</key> <dict> - <key>facebook.com</key> + <key>akamaihd.net</key> <dict> + <key>NSExceptionRequiresForwardSecrecy</key> + <false/> <key>NSIncludesSubdomains</key> <true/> + </dict> + <key>facebook.com</key> + <dict> <key>NSExceptionRequiresForwardSecrecy</key> <false/> + <key>NSIncludesSubdomains</key> + <true/> </dict> <key>fbcdn.net</key> <dict> - <key>NSIncludesSubdomains</key> - <true/> <key>NSExceptionRequiresForwardSecrecy</key> <false/> - </dict> - <key>akamaihd.net</key> - <dict> <key>NSIncludesSubdomains</key> <true/> - <key>NSExceptionRequiresForwardSecrecy</key> - <false/> </dict> </dict> </dict> - <key>CFBundleURLTypes</key> + <key>UIAppFonts</key> <array> - <dict> - <key>CFBundleURLSchemes</key> - <array> - <string>fb762432797195822</string> - </array> - </dict> + <string>basictitlefont.ttf</string> </array> - <key>FacebookAppID</key> - <string>762432797195822</string> - <key>FacebookDisplayName</key> - <string>Unit-2-Journal</string> - <key>CFBundleDevelopmentRegion</key> - <string>en</string> - <key>CFBundleExecutable</key> - <string>$(EXECUTABLE_NAME)</string> - <key>CFBundleIdentifier</key> - <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>$(PRODUCT_NAME)</string> - <key>CFBundlePackageType</key> - <string>APPL</string> - <key>CFBundleShortVersionString</key> - <string>1.0</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>1</string> - <key>LSRequiresIPhoneOS</key> - <true/> <key>UILaunchStoryboardName</key> <string>LaunchScreen</string> <key>UIMainStoryboardFile</key> diff --git a/Unit-2-Journal/Unit-2-Journal/basictitlefont.ttf b/Unit-2-Journal/Unit-2-Journal/basictitlefont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..a8db369a8e8e8ba403edfc19c7ee182355b70d50 GIT binary patch literal 33244 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 E11?9Ir2qf` literal 0 HcmV?d00001 From ec3978ead0e49f602836f39950c5849f141bf858 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 18 Oct 2015 15:04:02 -0400 Subject: [PATCH 53/86] now we can pull data from Parse and populate the wishlist --- .../CreateJournalEntryViewController.m | 14 ++++--- .../JournalMainCollectionViewController.m | 30 +++++++++----- Unit-2-Journal/Unit-2-Journal/JournalPost.h | 3 +- Unit-2-Journal/Unit-2-Journal/JournalPost.m | 3 +- .../Unit-2-Journal/SearchAPIViewController.m | 35 ++++++++++++---- .../WishListTableViewController.h | 1 + .../WishListTableViewController.m | 40 ++++++++++++++++++- 7 files changed, 100 insertions(+), 26 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index 625b457..daedd26 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -41,7 +41,7 @@ - (void)viewDidLoad { self.journalPostArray = [[NSMutableArray alloc]init]; - NSLog(@"Data has been passed: %@",self.postSearchResult); + // NSLog(@"Data has been passed: %@",self.postSearchResult); self.doneEditingButton.hidden = YES; @@ -179,10 +179,8 @@ - (void)startAnimation { [self.starButtonFive.layer pop_addAnimation:spin forKey:nil]; } - #pragma mark - save items - - (IBAction)logToJournalButtonTapped:(id)sender { JournalPost *journalPost = [[JournalPost alloc]init]; @@ -190,17 +188,20 @@ - (IBAction)logToJournalButtonTapped:(id)sender { journalPost.postText = self.textView.text; journalPost.postSubject = self.postSearchResult; + //journalPost.reviewed = YES; + self.journalPost = journalPost; + [self.journalPostArray addObject:self.journalPost]; - NSLog(@"Journal Post: %@",self.journalPost); + // NSLog(@"Journal Post: %@",self.journalPost); [self.navigationController popToRootViewControllerAnimated:YES]; // pop back to root controller [self.tabBarController setSelectedIndex:2]; // send to correct tab - NSLog(@"my journal text is: %@", self.textView.text); + // NSLog(@"my journal text is: %@", self.textView.text); // when we log the journal entry, SAVE it all to Parse JournalPost *myJournalPost = [[JournalPost alloc] init]; // most of this is a repeat of above. @@ -212,11 +213,14 @@ - (IBAction)logToJournalButtonTapped:(id)sender { myJournalPost[@"dateEntered"] = [NSDate date]; myJournalPost[@"typeOfMedia"] = self.postSearchResult.mediaType; myJournalPost[@"imageForMedia"] = self.postSearchResult.artworkURL; + myJournalPost[@"reviewed"] = [NSNumber numberWithBool:YES]; [myJournalPost saveEventually]; // save your entry, even if offline } + + #pragma mark - Navigation // - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index b9a6ddb..6a9a5d9 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -18,7 +18,8 @@ @implementation JournalMainCollectionViewController //static NSString * const reuseIdentifier = @"Cell"; - (void) viewDidAppear:(BOOL)animated{ - [self.collectionView reloadData]; + + [self runQuery]; } - (void)viewDidLoad @@ -31,13 +32,13 @@ - (void)viewDidLoad nil; } - NSLog(@"Current Journal Post: %@", self.journalPostToAdd); + // NSLog(@"Current Journal Post: %@", self.journalPostToAdd); if (self.journalPostToAdd != nil){ [self. allJournalPosts addObject:self.journalPostToAdd]; } - NSLog(@"All Journal Posts: %@", self.allJournalPosts); + // NSLog(@"All Journal Posts: %@", self.allJournalPosts); collectionImages = [NSMutableArray arrayWithObjects:@"destroyer.png", @"drake.png", @"big_nerd_ranch.png", @"talking_heads.png", @"true_detective", @"sleater_kinney.png", @"x-files.png", @"run_the_jewels.png", @"lean_startup.png", nil]; @@ -50,13 +51,26 @@ - (void)viewDidLoad #pragma mark - fetch saved data from Parse - (void)runQuery { + + // __weak typeof(self) weakSelf = self; // prevent memory leakage? + PFQuery *query = [PFQuery queryWithClassName:@"JournalPost"]; + [query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) { + + // create a for loop and iterate through the objects array and push only the posts that are marked with True to "self.allJournalPosts" - self.allJournalPosts = objects; // pull all images from Parse - NSLog(@"info fetched from parse: %@", self.allJournalPosts); // test it! + [self.allJournalPosts removeAllObjects]; // clear to prevent doubles - // right now the posts are saved as a URL... change this back to image somehow + for (JournalPost *object in objects) { + if (object.reviewed) { + [self.allJournalPosts addObject:object]; + } + } + +// self.allJournalPosts = objects; // pull all images from Parse + + NSLog(@"info fetched from parse: %@", self.allJournalPosts); // test it! [self.collectionView reloadData]; // reload tableView }]; @@ -77,12 +91,9 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell static NSString *identifier = @"Cell"; UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; - PFObject *post = self.allJournalPosts[indexPath.row]; // pulling out parse data here PFFile *file = post[@"imageForMedia"]; // this returns urls for each image - // [cell.imageView loadInBackground]; // broken - NSLog(@"file: %@", file); NSString *fileString = [NSString stringWithFormat:@"%@",file]; NSURL *fileURL = [NSURL URLWithString:fileString]; @@ -108,7 +119,6 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell cell.layer.borderColor = [UIColor blackColor].CGColor; cell.layer.cornerRadius = 30.0; - return cell; } diff --git a/Unit-2-Journal/Unit-2-Journal/JournalPost.h b/Unit-2-Journal/Unit-2-Journal/JournalPost.h index d2f24c7..ce24eaf 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalPost.h +++ b/Unit-2-Journal/Unit-2-Journal/JournalPost.h @@ -20,6 +20,7 @@ @property (nonatomic) NSDate *dateEntered; @property (nonatomic) NSNumber *starRating; @property (nonatomic) NSString *typeOfMedia; // ie book, album, movie, tv -@property (nonatomic) NSString *imageForMedia; +@property (nonatomic) NSString *imageForMedia; +@property (nonatomic) BOOL reviewed; @end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalPost.m b/Unit-2-Journal/Unit-2-Journal/JournalPost.m index a9d1fba..00a003a 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalPost.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalPost.m @@ -19,7 +19,8 @@ @implementation JournalPost @dynamic dateEntered; @dynamic starRating; @dynamic typeOfMedia; // ie book, album, movie, tv -@dynamic imageForMedia; +@dynamic imageForMedia; +@dynamic reviewed; +(NSString *)parseClassName { return @"JournalPost"; diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 5c6e310..c2e2672 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -14,6 +14,9 @@ #import "SearchAPITableViewCell.h" // add custom cell #import "TabBarViewController.h" #import "WishListTableViewController.h" +#import <Parse/Parse.h> +#import "JournalPost.h" // for parse + //#import "JournalPost.h" @@ -33,8 +36,13 @@ @interface SearchAPIViewController () @property (strong, nonatomic) IBOutlet UIButton *televisionButton; @property (nonatomic) NSString *media; @property (nonatomic) NSMutableArray *searchResults; +@property (nonatomic) NSMutableArray *wishListItems; @property (nonatomic) iTunesSearchResult *passSearchResult; +@property (nonatomic) JournalPost *journalPost; // for parse +@property (nonatomic) NSString *mediaType; // for parse + + @end @implementation SearchAPIViewController @@ -75,19 +83,32 @@ - (IBAction)mediaButtonTypeSelected:(id)sender { self.media = [sender currentTitle]; } - NSLog(@"Media button tapped: %@",self.media); + // NSLog(@"Media button tapped: %@",self.media); } #pragma mark - add to list buttons - (IBAction)createJournalEntryButtonTapped:(id)sender { - + } - (IBAction)addToWishListButtonTapped:(id)sender { - WishListTableViewController *viewController = [[WishListTableViewController alloc]init]; - viewController.searchResult = self.passSearchResult; +// WishListTableViewController *viewController = [[WishListTableViewController alloc]init]; +// viewController.searchResult = self.passSearchResult; + + // SAVE the date, title, creator and image in parse, mark reviewed bool as NO + + JournalPost *myJournalPost = [[JournalPost alloc] init]; + + // myJournalPost[@"title"] = self.postSearchResult.albumOrMovieName; + // myJournalPost[@"creator"] = self.postSearchResult.artistName; + myJournalPost[@"dateEntered"] = [NSDate date]; + // myJournalPost[@"typeOfMedia"] = self.postSearchResult.mediaType; + // myJournalPost[@"imageForMedia"] = self.postSearchResult.artworkURL; + myJournalPost[@"reviewed"] = [NSNumber numberWithBool:NO]; + + [myJournalPost saveEventually]; // save your entry, even if offline [self.tabBarController setSelectedIndex:0]; @@ -114,7 +135,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term if (data != nil){ NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - NSLog(@"%@",json); + // NSLog(@"%@",json); NSArray *results = [json objectForKey:@"results"]; @@ -310,7 +331,7 @@ -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath * self.passSearchResult = searchResult; - NSLog(@"passed search results: %@", self.passSearchResult); + // NSLog(@"passed search results: %@", self.passSearchResult); // push view controller @@ -322,7 +343,7 @@ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier]isEqualToString:@"pushToCreateJournalEntry"]) { - NSLog(@"segue"); + // NSLog(@"segue"); CreateJournalEntryViewController *viewController = segue.destinationViewController; viewController.postSearchResult = self.passSearchResult; diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.h b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.h index b6840c3..0dd46e2 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.h +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.h @@ -12,5 +12,6 @@ @interface WishListTableViewController : UITableViewController @property (nonatomic) iTunesSearchResult *searchResult; +@property (nonatomic) NSMutableArray *allJournalPosts; @end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index df4bfbf..1f7c65a 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -8,6 +8,8 @@ #import "WishListTableViewController.h" #import "WishListTableViewCell.h" +#import <Parse/Parse.h> +#import "JournalPost.h" @interface WishListTableViewController () @@ -19,6 +21,8 @@ - (void)viewDidLoad { [super viewDidLoad]; + self.allJournalPosts = [[NSMutableArray alloc]init]; + NSLog(@"Wish List Result: %@",self.searchResult); // [self setUpSwipeGestures]; @@ -29,6 +33,35 @@ - (void)viewDidLoad self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimatedRowHeight = 35.0; + + [self pullEntriesFromParse]; +} + +- (void)pullEntriesFromParse { + + // __weak typeof(self) weakSelf = self; // prevent memory leakage? + + PFQuery *query = [PFQuery queryWithClassName:@"JournalPost"]; + + [query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) { + + // create a for loop and iterate through the objects array and push only the posts that are marked with True to "self.allJournalPosts" + + [self.allJournalPosts removeAllObjects]; // clear to prevent doubles + + for (JournalPost *object in objects) { + if (!object.reviewed) { + [self.allJournalPosts addObject:object]; + } + } + + // self.allJournalPosts = objects; // pull all images from Parse + + NSLog(@"info fetched from parse: %@", self.allJournalPosts); // test it! + + [self.tableView reloadData]; // reload tableView + }]; + } //#pragma mark - swipe gestures @@ -57,14 +90,17 @@ - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return 5; + return self.allJournalPosts.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { WishListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"WishListTableViewCellIdentifier" forIndexPath:indexPath]; - // Configure the cell... + JournalPost *thisEntry = self.allJournalPosts[indexPath.row]; + + cell.textLabel.text = thisEntry.title; + return cell; } From 9ef69ee6e6f46c3e93a86d66bade67af58cd9690 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Sun, 18 Oct 2015 16:03:09 -0400 Subject: [PATCH 54/86] update JS --- .DS_Store | Bin 6148 -> 8196 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 18 ++++++------- .../JournalMainCollectionViewController.h | 1 + .../JournalMainCollectionViewController.m | 25 ++++++++++++++++++ .../Unit-2-Journal/SearchAPIViewController.m | 10 +++---- .../ViewCompletedEntryViewController.h | 3 +++ .../ViewCompletedEntryViewController.m | 1 + .../WishListTableViewController.m | 11 +++++++- 8 files changed, 54 insertions(+), 15 deletions(-) diff --git a/.DS_Store b/.DS_Store index 1dce55acc4c6f3b1018c89df0b3237bac264c31a..230b4e2a70d055d8f79ad89ebfd4c53ba322ebc3 100644 GIT binary patch literal 8196 zcmeHLTWB0r82<k>ZDyyJ%qESQv~IhShBh^cF})<!UN*PZ^kPG9o21coc4tfmXJ?k3 z+1=DwjR>}aDB5aO@WB=o6#LX7_#pZsg5m{=v@gC0MST){@+to3oY|0j5h@lsXF2CT zm;XDLZ@xKa&j0{+<n)IDQ~;1DGOMhmWQoAqSzHuK{2GQs!UJT$g(gUY-eWED4k`i$ z0tNyG0tNyG0tW5|2I$OYL0abA7p*}WFc2_sPcp#vhbTp6W4@ghmTw)D@GAh>QmW>G z@^la2n5b`KzMU49L#a=3dq5wG{uKiSoZ6$zoovjv)4~ckpnwDVBcp#qK|VU+qTC%Y zCTx%f3<L};W`LdjAsB}&IFOrre|J(z%Slozd!Y_f+%dxg<p9=zNw<8Ba0a+N);!<u zR`S)|l$CTG{&k=XjzbT0LN`1P{m?zX8|+)qO$hqPvmLtN1X=$h!`y-K#sb6!7zCRp z>Omv4P&~?)n58-mtoftCV}w0Rv213BQh*h)$%32l$+?xxSf=YWH{ZaLRi&%flu03( z{mMg6^iMd2eoymqZikjV#Y?7cB>jA^=1mmy14PJdUP}&{Mj@eW>~w5TGi@U~2Rarv zZQUt!I5}H)6G~NY*2t50uVx!VrfVim%k)l5A@)ls>eN)ro;?lGmOXpVG(@LbTbmoA zyLat9b4HSCw(mN0EN)Mozwp-E7vFjJDql08zqdkIlxNdxw_~LESXl=vQfImOUO`=n zvjlZ()vj>2oKPy*s!nD+)3MzlBkPh)DCI6O+LLl@f7S7nW98B|@eodFRw`#{p3!bu z{pPcVJM0;g9?OloPS)$>j>9HlSzSU=a<0*55WvhET?BI#41K(=YSWh59gQum`>(Ix zP_Be4WO<aHnC+QQn?`o9VCvq)h~}mYTQ}|Tc%Bh%83VSKHo`a=3USnZ)v7$EQ<o<k zo#Axlnj~5_SF7qN*3y|ZDAgs21GYw0dBCMvDVp!NtxlE)o}mY=xPGVgJ7smy(vpUy z=pg}XdPr8|c|nbG%&*+FTULitPC8AKcEi}<SGVm`)hF4=$2HeGnK5jd)i*T!frE$E ztJP{paVZOzC`ls>)voI_+uGO;p@-U7v&e+#$gZI`F-C9C7;OX@I1R7DYw$X}2bbXr zT!k;-YxowvhaccaxCyu5H~1a?fWKe{Noy!$Ifk(UEAf7O0Bdm@)?pLw#=Y2zZP<=I zcnpu@2^_)%CNYINrtvv^9$&y|d<EaYi}(Rv!prz6Uct}sOEIaEqK1!%axulPD0e$) z`fqhfd?{&0x+@R=Ptv@(P6)DcW0kMa_Swh0;K9yS7?+jM4cAjqFI=+oM0%ZMTeE4i z92q3p8IuczP!xz#CPc-&w?-ooMdCVQ#cg#|EFrN=ys!G55m{NqCCyq%tr2B47cVQ4 zPGzN(%bOM3_EGB^u3}a^aFAL-yi%+js*A|9qx~BJUV=~Hb1uH0;Ai*+euY2bZ<5_= zl3X>`kl-S?1-D~8K8Ow2NRn&ANAOYHkKK5Lgm;vrH$cK0#t|GP=@~eV6KG-<J<MYP zC-Fsm317yuc#eelCZ5L&_&$EPK!WU0nG^6MDy%5Me1F!q9DAJniZY&qzvJ0eqDPhe z2k2h@`~MvuH|Q{6AYkC`VE{|J`nx)4KFe)7?5-W9_!LDJnBTOp96||mVfFkvPS(GU o^SY?t7W3`2upCMl4kasY^8fvZfMsq3^w%^v|AX`YUOE5&0bQ${{Qv*} delta 121 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$jG@dU^g=(=Vl&(yNnzr28KEc zh9(x1KMHnEo*|yUu|bY;F*^r`ATv-45D0Js30IKrjfLNtC-cjAg3MxIf|v`kieYm+ H&m3j|TJaTs diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 636d033..89ba5c5 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -19,7 +19,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -173,7 +173,7 @@ <constraint firstAttribute="trailing" secondItem="qle-iq-7ST" secondAttribute="trailing" id="vRx-Mn-xec"/> </constraints> <connections> - <segue destination="z1K-z0-Vef" kind="show" id="fYZ-7d-vsv"/> + <segue destination="z1K-z0-Vef" kind="show" identifier="ViewCompletedEntrySegue" id="fYZ-7d-vsv"/> </connections> </collectionViewCell> </cells> @@ -255,11 +255,11 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> - <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> + <rect key="frame" x="15" y="5" width="32" height="20"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="16"/> @@ -267,7 +267,7 @@ <nil key="highlightedColor"/> </label> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> - <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> + <rect key="frame" x="15" y="25" width="41" height="14"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="11"/> @@ -471,7 +471,7 @@ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="Title" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> <rect key="frame" x="128" y="84" width="412" height="19"/> <animations/> <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/> @@ -707,7 +707,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> - <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> + <rect key="frame" x="0.0" y="0.0" width="567" height="63"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="346-CT-Uvl"> @@ -796,7 +796,7 @@ <!--View Completed Journal Entry--> <scene sceneID="dbg-sY-EWD"> <objects> - <viewController title="View Completed Journal Entry" id="z1K-z0-Vef" customClass="ViewCompletedEntryViewController" sceneMemberID="viewController"> + <viewController storyboardIdentifier="CompleteEntryVC" title="View Completed Journal Entry" id="z1K-z0-Vef" customClass="ViewCompletedEntryViewController" sceneMemberID="viewController"> <layoutGuides> <viewControllerLayoutGuide type="top" id="hxi-Oa-IvU"/> <viewControllerLayoutGuide type="bottom" id="DF9-8P-jQU"/> diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h index 61f50fe..f74ab29 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h @@ -17,5 +17,6 @@ @property (nonatomic) NSMutableArray *allJournalPosts; @property (nonatomic) JournalPost *journalPostToAdd; +@property (nonatomic) JournalPost *journalPostToPass; @end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index 6a9a5d9..2c833cd 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -8,6 +8,7 @@ #import "JournalMainCollectionViewController.h" #import <Parse/Parse.h> +#import "ViewCompletedEntryViewController.h" @interface JournalMainCollectionViewController () @@ -121,6 +122,30 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell return cell; } +#pragma mark Navigation + +-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ + + self.journalPostToPass = self.allJournalPosts[indexPath.row]; + NSLog(@"Journal Post Clicked:%@",self.journalPostToPass); + + ViewCompletedEntryViewController *viewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"CompleteEntryVC"]; + viewController.journalPostDetail = self.journalPostToPass; + + [self.navigationController pushViewController:viewController animated:YES]; + +} +//-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ +// +// if ([[segue identifier] isEqualToString:@"ViewCompletedEntrySegue"]){ +// +// ViewCompletedEntryViewController *viewController = segue.destinationViewController; +// viewController.journalPostDetail = self.journalPostToPass; +// } +// +//} + + #pragma mark <UICollectionViewDelegate> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index c2e2672..3336155 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -100,12 +100,12 @@ - (IBAction)addToWishListButtonTapped:(id)sender { // SAVE the date, title, creator and image in parse, mark reviewed bool as NO JournalPost *myJournalPost = [[JournalPost alloc] init]; - - // myJournalPost[@"title"] = self.postSearchResult.albumOrMovieName; - // myJournalPost[@"creator"] = self.postSearchResult.artistName; + + myJournalPost[@"title"] = self.passSearchResult.albumOrMovieName; + myJournalPost[@"creator"] = self.passSearchResult.artistName; myJournalPost[@"dateEntered"] = [NSDate date]; - // myJournalPost[@"typeOfMedia"] = self.postSearchResult.mediaType; - // myJournalPost[@"imageForMedia"] = self.postSearchResult.artworkURL; + myJournalPost[@"typeOfMedia"] = self.passSearchResult.mediaType; + myJournalPost[@"imageForMedia"] = self.passSearchResult.artworkURL; myJournalPost[@"reviewed"] = [NSNumber numberWithBool:NO]; [myJournalPost saveEventually]; // save your entry, even if offline diff --git a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.h b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.h index 6e4d110..660a6ab 100644 --- a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.h +++ b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.h @@ -7,7 +7,10 @@ // #import <UIKit/UIKit.h> +#import "JournalPost.h" @interface ViewCompletedEntryViewController : UIViewController +@property (nonatomic) JournalPost *journalPostDetail; + @end diff --git a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m index e562aa0..90b3acc 100644 --- a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m @@ -17,6 +17,7 @@ @implementation ViewCompletedEntryViewController - (void)viewDidLoad { [super viewDidLoad]; + NSLog(@"Journal Post passed: %@",self.journalPostDetail); } diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index 1f7c65a..efacccd 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -21,7 +21,9 @@ - (void)viewDidLoad { [super viewDidLoad]; + if (self.allJournalPosts == nil){ self.allJournalPosts = [[NSMutableArray alloc]init]; + } NSLog(@"Wish List Result: %@",self.searchResult); @@ -99,8 +101,15 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N JournalPost *thisEntry = self.allJournalPosts[indexPath.row]; - cell.textLabel.text = thisEntry.title; + cell.titleLabel.text = thisEntry.title; + cell.authorArtistDirectorLabel.text = thisEntry.creator; + NSString *imageString = thisEntry.imageForMedia; + NSURL *imageURL = [NSURL URLWithString:imageString]; + NSData *imageData = [NSData dataWithContentsOfURL:imageURL]; + UIImage *image = [UIImage imageWithData:imageData]; + + cell.artworkImage.image = image; return cell; } From 20e19a9c902fd1016492224f257b509d48defc0b Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 18 Oct 2015 16:20:30 -0400 Subject: [PATCH 55/86] properties created for completed review controller --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 6 ++-- .../Unit-2-Journal/Base.lproj/Main.storyboard | 26 +++++++++++++----- .../ViewCompletedEntryViewController.m | 12 ++++++++ 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index b565dd98bb419524e704b2f361afecb797846bf7..6d88632a90e54ee4d31b1e8dbbf459ac2393f5f2 100644 GIT binary patch delta 116 zcmZoMXffC@k(Fsx!{q-gCj7biE-ophCCLm7mps?7F--o)Vmg_djhn@TeLjTa&&JEd z@L+Nr+ia#@%gOO<7JNur?7qC4?8xrQ45Bx(S@9QS7zQWj=N2%4!G?*2rkmM0{_+C= D|28Jo delta 119 zcmZoMXffC@k(KGN%;f(pCj7biE-ophCCLm7ms~7T87BW@F`dlK#?1of__OgcGEUye zW;J;_TM|=#*5r6L3qB-W_JU_8JF>engJ_^C{(=m{;N<+=0tPT>m{@4KnVsV=KLG8I BB;)`9 diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 6791223..cc4b69d 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -278,7 +278,7 @@ TargetAttributes = { 9A2FFC291BC84BF100E880D3 = { CreatedOnToolsVersion = 7.0; - DevelopmentTeam = Z6GBYPK592; + DevelopmentTeam = 5F2A5ZZ575; }; }; }; @@ -513,7 +513,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.brianblanco.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.shenayoshida.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; @@ -529,7 +529,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.brianblanco.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.shenayoshida.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 89ba5c5..88dc2ea 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -19,7 +19,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -255,11 +255,11 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> - <rect key="frame" x="15" y="5" width="32" height="20"/> + <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="16"/> @@ -267,7 +267,7 @@ <nil key="highlightedColor"/> </label> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> - <rect key="frame" x="15" y="25" width="41" height="14"/> + <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="11"/> @@ -471,7 +471,7 @@ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="Title" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> <rect key="frame" x="128" y="84" width="412" height="19"/> <animations/> <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/> @@ -707,7 +707,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> - <rect key="frame" x="0.0" y="0.0" width="567" height="63"/> + <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="346-CT-Uvl"> @@ -969,6 +969,18 @@ <constraint firstItem="x4f-Ym-z1V" firstAttribute="trailing" secondItem="EZl-sI-Vwl" secondAttribute="trailingMargin" id="mnC-Mc-ilI"/> </constraints> </view> + <connections> + <outlet property="completedCreatorLabel" destination="RUW-ww-VHC" id="qVi-vs-rrs"/> + <outlet property="completedDateLabel" destination="eHa-Fq-bcU" id="V3N-n4-xzw"/> + <outlet property="completedImageView" destination="P8h-8Q-AZm" id="sk9-0A-QLf"/> + <outlet property="completedReviewTextView" destination="riX-qw-M2j" id="UdV-2Z-9cW"/> + <outlet property="completedTitleLabel" destination="uPb-Kv-PyA" id="FcS-Tt-BME"/> + <outlet property="starFive" destination="Pt8-eG-uys" id="s1N-26-ZG1"/> + <outlet property="starFour" destination="JU3-mC-wxo" id="PvC-UX-v3N"/> + <outlet property="starOne" destination="rcY-Tz-IPf" id="WMP-nm-ES0"/> + <outlet property="starThree" destination="M7h-zf-QrN" id="NMy-EE-7f9"/> + <outlet property="starTwo" destination="zLL-Ls-a62" id="I3n-Tl-VqR"/> + </connections> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="gKL-Ix-enk" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> diff --git a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m index 90b3acc..ae58175 100644 --- a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m @@ -10,6 +10,18 @@ @interface ViewCompletedEntryViewController () +@property (weak, nonatomic) IBOutlet UIImageView *completedImageView; +@property (weak, nonatomic) IBOutlet UILabel *completedTitleLabel; +@property (weak, nonatomic) IBOutlet UILabel *completedCreatorLabel; +@property (weak, nonatomic) IBOutlet UILabel *completedDateLabel; // review written on +@property (weak, nonatomic) IBOutlet UITextView *completedReviewTextView; + +@property (weak, nonatomic) IBOutlet UIButton *starOne; +@property (weak, nonatomic) IBOutlet UIButton *starTwo; +@property (weak, nonatomic) IBOutlet UIButton *starThree; +@property (weak, nonatomic) IBOutlet UIButton *starFour; +@property (weak, nonatomic) IBOutlet UIButton *starFive; + @end @implementation ViewCompletedEntryViewController From af5e5de5cb8b7ec27c032e721b3d374846bb453e Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Sun, 18 Oct 2015 16:22:52 -0400 Subject: [PATCH 56/86] pass data to detailVC --- .../JournalMainCollectionViewController.m | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index 2c833cd..857359e 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -124,26 +124,16 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell } #pragma mark Navigation --(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ +-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ - self.journalPostToPass = self.allJournalPosts[indexPath.row]; - NSLog(@"Journal Post Clicked:%@",self.journalPostToPass); - - ViewCompletedEntryViewController *viewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"CompleteEntryVC"]; - viewController.journalPostDetail = self.journalPostToPass; - - [self.navigationController pushViewController:viewController animated:YES]; + if ([[segue identifier] isEqualToString:@"ViewCompletedEntrySegue"]){ + NSIndexPath *selectedIndexPath = [self.collectionView indexPathForCell:sender]; + ViewCompletedEntryViewController *viewController = segue.destinationViewController; + JournalPost *thisPost = self.allJournalPosts[selectedIndexPath.row]; + viewController.journalPostDetail = thisPost; + } } -//-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ -// -// if ([[segue identifier] isEqualToString:@"ViewCompletedEntrySegue"]){ -// -// ViewCompletedEntryViewController *viewController = segue.destinationViewController; -// viewController.journalPostDetail = self.journalPostToPass; -// } -// -//} From ff270e2aaf85cf9c146d5e2fef46e7f289684cd2 Mon Sep 17 00:00:00 2001 From: Brian <brianblanco1@gmail.comm> Date: Sun, 18 Oct 2015 16:33:19 -0400 Subject: [PATCH 57/86] added Akkurat Fonts --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 16 ++++++++++++++++ .../Unit-2-Journal/Akkurat Bold.otf | Bin 0 -> 40612 bytes .../Unit-2-Journal/Akkurat Italic.otf | Bin 0 -> 40960 bytes .../Unit-2-Journal/Akkurat Light Regular.otf | Bin 0 -> 39808 bytes .../Unit-2-Journal/Akkurat Regular.otf | Bin 0 -> 40608 bytes 6 files changed, 16 insertions(+) create mode 100644 Unit-2-Journal/Unit-2-Journal/Akkurat Bold.otf create mode 100644 Unit-2-Journal/Unit-2-Journal/Akkurat Italic.otf create mode 100644 Unit-2-Journal/Unit-2-Journal/Akkurat Light Regular.otf create mode 100644 Unit-2-Journal/Unit-2-Journal/Akkurat Regular.otf diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 6d88632a90e54ee4d31b1e8dbbf459ac2393f5f2..cb42c7f4b13e8d6d25ac5a3e4d97444a0791b64a 100644 GIT binary patch delta 119 zcmZoMXffC@k(KGN%;f(pCj7biE-ophCCLm7ms~7T87BW@F`dlK#?1of__OgcGEUye zW;J;_TM|>g{^WQz3qB-W_JU_8JF>engJ_^C{(=m{;N<+=0tPUcFtN~dGdss$egNS& BB)I?p delta 116 zcmZoMXffC@k(Fsx!{q-gCj7biE-ophCCLm7mps?7F--o)Vmg_djhn@TeLjTa&&JEd z@L+Nr+ia#@%gOO<7JNur?7qC4?8xrQ45Bx(S@9QS7zQWj=N2%4!G?*2rkmM0{_+C= D|28Jo diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index cc4b69d..eff69df 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -31,6 +31,10 @@ 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331C1BC8D99D001CBA5C /* LoginViewController.m */; settings = {ASSET_TAGS = (); }; }; 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331F1BC8D9B5001CBA5C /* SignUpViewController.m */; settings = {ASSET_TAGS = (); }; }; 5A6A22811BD3FE31006E9FE7 /* basictitlefont.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5A6A22801BD3FDFF006E9FE7 /* basictitlefont.ttf */; }; + 5A6A22851BD4393D006E9FE7 /* Akkurat Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 5A6A22841BD438B4006E9FE7 /* Akkurat Regular.otf */; settings = {ASSET_TAGS = (); }; }; + 5A6A22891BD43952006E9FE7 /* Akkurat Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 5A6A22861BD4394E006E9FE7 /* Akkurat Bold.otf */; settings = {ASSET_TAGS = (); }; }; + 5A6A228A1BD43955006E9FE7 /* Akkurat Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 5A6A22871BD4394E006E9FE7 /* Akkurat Italic.otf */; settings = {ASSET_TAGS = (); }; }; + 5A6A228B1BD43958006E9FE7 /* Akkurat Light Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 5A6A22881BD4394E006E9FE7 /* Akkurat Light Regular.otf */; settings = {ASSET_TAGS = (); }; }; 617F8769EFBE79517A02E6D0 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAF24AD380284C55768010A2 /* libPods.a */; }; 9A2937201BCC26FE00ACEEE0 /* JournalPost.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A29371F1BCC26FE00ACEEE0 /* JournalPost.m */; settings = {ASSET_TAGS = (); }; }; 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC2E1BC84BF200E880D3 /* main.m */; }; @@ -82,6 +86,10 @@ 5A50331E1BC8D9B5001CBA5C /* SignUpViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SignUpViewController.h; sourceTree = "<group>"; }; 5A50331F1BC8D9B5001CBA5C /* SignUpViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SignUpViewController.m; sourceTree = "<group>"; }; 5A6A22801BD3FDFF006E9FE7 /* basictitlefont.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = basictitlefont.ttf; sourceTree = "<group>"; }; + 5A6A22841BD438B4006E9FE7 /* Akkurat Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Akkurat Regular.otf"; sourceTree = "<group>"; }; + 5A6A22861BD4394E006E9FE7 /* Akkurat Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Akkurat Bold.otf"; sourceTree = "<group>"; }; + 5A6A22871BD4394E006E9FE7 /* Akkurat Italic.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Akkurat Italic.otf"; sourceTree = "<group>"; }; + 5A6A22881BD4394E006E9FE7 /* Akkurat Light Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Akkurat Light Regular.otf"; sourceTree = "<group>"; }; 9A29371E1BCC26FE00ACEEE0 /* JournalPost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalPost.h; sourceTree = "<group>"; }; 9A29371F1BCC26FE00ACEEE0 /* JournalPost.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalPost.m; sourceTree = "<group>"; }; 9A2FFC2A1BC84BF200E880D3 /* Unit-2-Journal.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Unit-2-Journal.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -197,6 +205,10 @@ 9A2FFC2D1BC84BF200E880D3 /* Supporting Files */ = { isa = PBXGroup; children = ( + 5A6A22841BD438B4006E9FE7 /* Akkurat Regular.otf */, + 5A6A22861BD4394E006E9FE7 /* Akkurat Bold.otf */, + 5A6A22871BD4394E006E9FE7 /* Akkurat Italic.otf */, + 5A6A22881BD4394E006E9FE7 /* Akkurat Light Regular.otf */, 5A6A22801BD3FDFF006E9FE7 /* basictitlefont.ttf */, 4DCBE1331BC9943D0075BA2C /* big_nerd_ranch.png */, 4DCBE1341BC9943D0075BA2C /* destroyer.png */, @@ -307,19 +319,23 @@ files = ( 5A6A22811BD3FE31006E9FE7 /* basictitlefont.ttf in Resources */, 4DCBE13F1BC9943D0075BA2C /* lean_startup.png in Resources */, + 5A6A228A1BD43955006E9FE7 /* Akkurat Italic.otf in Resources */, 9A2FFC401BC84BF200E880D3 /* LaunchScreen.storyboard in Resources */, 4D7FE2A61BCC41A00036E58E /* WishListTableViewCell.xib in Resources */, 4D7FE29E1BCC32170036E58E /* SearchAPITableViewCell.xib in Resources */, 4DCBE1441BC9943D0075BA2C /* x-files.png in Resources */, 4DCBE13E1BC9943D0075BA2C /* drake.png in Resources */, 4DCBE1401BC9943D0075BA2C /* run_the_jewels.png in Resources */, + 5A6A228B1BD43958006E9FE7 /* Akkurat Light Regular.otf in Resources */, 4DCBE13D1BC9943D0075BA2C /* destroyer.png in Resources */, 4DCBE1411BC9943D0075BA2C /* sleater_kinney.png in Resources */, 4DCBE1421BC9943D0075BA2C /* talking_heads.png in Resources */, 9A2FFC3D1BC84BF200E880D3 /* Assets.xcassets in Resources */, 4DCBE13C1BC9943D0075BA2C /* big_nerd_ranch.png in Resources */, + 5A6A22891BD43952006E9FE7 /* Akkurat Bold.otf in Resources */, 9A2FFC381BC84BF200E880D3 /* Main.storyboard in Resources */, 4DCBE1431BC9943D0075BA2C /* true_detective.png in Resources */, + 5A6A22851BD4393D006E9FE7 /* Akkurat Regular.otf in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Unit-2-Journal/Unit-2-Journal/Akkurat Bold.otf b/Unit-2-Journal/Unit-2-Journal/Akkurat Bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..13076b65ff580e48610f6f26671b4b01c109757c GIT binary patch literal 40612 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 HmgD>nQC|e2 literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Akkurat Italic.otf b/Unit-2-Journal/Unit-2-Journal/Akkurat Italic.otf new file mode 100644 index 0000000000000000000000000000000000000000..f7148ef9754472d64269f354ba94a93da3b5e4af GIT binary patch literal 40960 zcmbrm2UHYE*Dzc&&<)h+=rY@`&g}MJ&RN&I2F!{H5KuvopyWK{q?o`AC{aM72$B^A zb3)93h#9lH>+bq&svc`xzuN=PInVQc-}(Ok{Qu19?y6g%tM0v3b?e^SwcN^TIg+7R zWPrw)&!2A=xv#VjLdHuGn)7VIishDRrR+n5R(?Qendt&c>p2%5U)hGxa$|&~ua{en z9_P7g#3O_xW(XliXKyDzm+Bp52r-e6eteUwlgsN9<&Pn)0j}>i0l@gQ@i!3u6RrW9 zyn{l&8qimX(2@}d89ecJ3iU%|1tdv&!;STE@^(Gg=J*%HV<BDZ=NlOGr3{UO_CbDR zh9qKEgdRT}e{Fq_>3<;ugZBVI=YRTs>c5{~68?E^IMbjQNuh^Q5eh#jW6<(tGO{&H z`jYUa8q(jRi(gK6ChG45A!rBOkyJWBvJWv3NRZk>e2KI{ngCTig?4-bC}Io@#D`%l zLgg!v!~^o^e=F=(S;CvlsI>E42E~%TkRY}hN&b|I7%@YJaPK1-*9nF26fqGl@oogM z&af1*XjWI)0QEuhyTXP@j@EaD88iTScZFGi@9zp5p|L2tD{PE<pu1gRlm7^JgZ$6C z;64B2y<h3yYk(w%CeWe)^b6on3`>w)vc4-UMcpLcU10+>P7>A?Hbmb_j&+3@v`})b zE6k#Ar9HaBMrea{cvsjM@zUL0VUzy|cZ2-@uE$iY)7;lDEWmx^rXaH+&O^<XIt2%~ z`h=U!2?+M_aSa$@Hg3$A38TzrdwH4ZGX<IjxCXigXk1-J&Gz&R4sZ%u6y)UP?mTwX zm@#9fi8Pwl1s~a&&=oW5jIDMJ2z2-LG3&~1X*Om|XVBa?z*U5f8bA5}R^H4#(9Fp! zD8R|Z)!Qk+)6CcHf3|qk|L8$TNXRHJcOTav-%-xK-pCyJB0m%c$ahB@(IylGOfv*I zqoMFzikwg|q_`p<6b|t@5Dtd04?qIY2!M=3W8gmlje_uO<OP4T|EMWYA9F>4`urNW zyFkv_$P@lzy-x79MQ}MmId^#HSV$G?8-u37=&(bpkR^ovJO9Z4D)HZGX8)D8TL0ES zsM!}<Z1z8Dw*-jzrvH4Whzqf||IRxKjYpIJKfm7$-YjCk39cZ0Z(X2nZ-@s#|IOfC zZgBs<<9O8nLwX1j|D*Ky6R8pewT=Qz`oeqkKbSgz=aHme*Xa9J90B?`lCYgw^ml-D z<@gUEfO>vqs`#4g^-b?SO4YaD@oKZa{rV3WIB4*Yp~Hrc7&&V6n6cx=Pnh`qq{&mJ zPMbdChncfx&oQ4nZ~lUXixw|gYO!qjij}J@t*lqu*xIdGyUyNWy`$3xXBStujhoy( zJiWY8$+5EXlMNTIU2SZ-e&g1i+jsA^G`HS=@UZ>SlgAy;U%U)FxMSz;=*%n0dpD== z`B-}P*Fy*;W+3#(?`U5Ry7{bN`+-0G-lP4w0lyU<tq<E86B`*79`O{t*=FJs8joc` zS-$?7;)<fm<JC2_Ri{qBt2=+;oN;hmiqydHFvA)lL&+}auocXH4Eh?#5sh+CDf%KA zE14s)lsHL3CDD=t(reO3(x(RJ&Av8Mn(=1+%m$f_F`H^O*Q~VfH+}o{-PiX(-$VU+ z^fT?J?8o<8*w1l5|BgW&V}&nN`sEAMZif0ot-0tp)H++TO5zB$MnSDtrR~zkP^-eM zx7oL5X8KyE{8z09|F>GlK&_H5U%tHf@*7(I<?WZZ|2+8ThDfq6@_+XK^9-TS!{8d% z;U&Tl>R8$_AED=0o?m?a?78D}yXUsgt)IPq7WeGYv%Al7p6z?mWOg1QqxXzB=l=I^ zK3doXm<vzw67LIvA;n+kT_5~E-o|u6!_Zb>&@C|BjbN^i11yK52w=}h6ovd@cmx5) zLs2~X8~qDP0H=O|)%Z)TxCa04KM69FB8f!O<G*J_5j0ZhfrOC~VU$!DZ6NeEjO`|+ znAU!3`81vR4$XZwv^#0*p`G$o^|uopOc5uMFs9%18$NN?(v^0On|%F4V-gPBc-S#7 zIKbD*+YjbsCm)wlPF_JyeturAa0~Dab@dN+@^T6Y@D1^Dbqmr5^b3GK6b#wAfWdxx z@CGj@A5V85H+LWRpfH~efqqWTu0Fm&`dWN_T*b=$+@W5VU}tgmc6WC23UGDy4RFzy z4tEXk6|?;RU5mO_nJ#>ZLmbE)Cjo?`ZBkgmVX8ph5(H!507BOgdJU2W1FHZsnFJ(4 zbH0;oM?gE6S&#<7DuMhYKro;oI*(uyLwgWRj|hY{cLZbxY65A|PK06*N<-)=f{6(w zBXkuZM=2~XF#p3yfO!u%0+ql}MhL_i7}JFa6(AIgV3eRtgz^zOihx5<DgqvX`4YGY z9Ykm^0%k#n5rQco4*?^g;|Lv-pbCUQC@e=P0ijBSY7wfEqEiT+kfL;iK<+w=P`w15 zL+A`b#R%<2=rTeVr05DlSqP;d1Y@XCf^H$ygwRcd_91i|p=N~cNKqR?EmBm3&;yVJ z5o(v9CkQ=4AoQRlgkB)@Op0D2bOfPSNV20RBEX|)AS|Nmq2arr{wjEJBYFn2%D0lG zlAV&HlADrWrD|z{!7PK9h6fF+4L>pFOgNLv)G}9@C(Iu#&rWAEj1)%8j7p8?7&{yP zX;Nr%)#MZY8jr<`@m1L#*}-noZn)d>ZnoWGx*K#K(|t<!@a}ot&vgH#JCRG|<K({b zOY%1Prydh}Eb9@|qr695kGnno)f4v|+H+aYbv-?L?){4Ss{dDeze@Y6$TZjVoN1E+ zDW)lwC{h*26?KX~zPA55>+1^6gd574b3xn@u7W$$Yf!Hly)t{f{l@E?;BW4K^R743 zdt~pR-f?}*`b_V$rq823Klh<ZQ{`ag0;P>|lQKqmQ~A5fKy^{oqWb$=*Khy&&f~ia z-@W83`3CiHb-nt7nUNW1=4uvhR&DmWFX}t6@5H`a`_}hu?)$XwhkhISZRwZY?^eIh z{X_ci?4RDhwEwmK4+jhx5HVoafUE(f1I`S%HQ?!h4+C@qWdnT%CJf9PSTXR@z()f= z3{nrO9dvcj{XuUBX$Q*&FByD$@Uy`mhe(DD9Wrf5z|grvJ%>gN-7_?2XvNU8LvIg# zHuS@=MZ<iCMGxCQEN|H9VNJt64qrRmYk17?{lkw8e=tHmqTh(Zk-bOSjtm=_HuBWS z$0O+|-%$ahsz$vUJ#@^_F)PO$9CK|~;(g&%o8(m+NpCZFrCr7eV?Hm_jbX`~`<!r! zrt3}_$#oJr-6AyJSVG2_-o34G6#8pjxVfw%$2ww@>vGjvkJ5Uz!tvlDqlEax_;}^i zM(anv-fnuI$IIzmt@Jku*`syi2D4#<ncrBs&Pcd+ju@PkoV`dSmkdarc3cLw?3In> zw71Y)iiI88ftPUnAD6IPH<7xR;y2WqvnDELCR<78GIAQI&465EKAE^;c?6b_4Z@y7 zct@f}8x<lE?rUdrR#mz~pRF!zVC0oK8ex75G5&4dy*(kOiVorTo!CaZno~5+#EQF# zSbiy8Q>f1}sC5Tq@LPlxo5;#n2eG1f6Shixre&ed;Ab5Dkv&av$oyXe&(prs&yY%H zEW4ckXtq4h=3bQzt!D&tR!;Y%YqVY=64D{Kae?Q@*_|Z&Phx9&b%<r2P1ErWG=f<k zTd=aN1m9z}M~Cg)tn!IDT)0o&K*|_-e&REs`WXp^_mzF>?utp!n!WfLqZ`Qzn}t$F zJ|gix`E;K+LHZ)?c+S0=vID07zSj92#mpI&OkL-WX=);o2p^yU^|`n&>r8`!=n>`$ z+f0ryOLg6D1BM3+Yc!-7>X?v=hq1x5$2K~WInOqbkqjM7dT{>(CMSb)G{mx%OuJ83 zg-Em(!fuX!#a<<=m|5%!x{9IWx+2TP2+u~%W(ddH&}sU}9EN<&uDF58ICeSQRcu-- zLrvLpWEw-hW$DIV`i$fB0J*v5-9zDA``ZxH1202gk>uBFUn~9+P6>(JA9EfI$>uXZ zFe}-}F$|T{p3^Be`Lbn)zdA8*%b^{-Bi+s@KF!OpuWM5#B_{1k;wP{PTN2~9D5=q- zsl*_Z4;#i@Wi#I0+;uCnzN*iuisDPRl`qY2P0r?h4pftHM)BA6s51MdN;-;goGbPB zO=i|)_!ieFAKk8du$xzWB8+YpH+8y$c>-TUq7QFn8X{{wt(9`}D*E;+4S9Uq`!?Bq zdtZp@+XrM}d;0^jpj}aPUVEQ-b1zrj8g1=VfNQT{UttsHaN@J+XIn<G_I%xXhNK8@ zJ2N;I;1gFc>7azOk6N_Rn^zn=9~%|9B}iozTzTeH+U@dU^})1^q$8>exvq9<-AM8m zXCJB0m;o81#Ee0ZF}*Wmx|s0@WR#OZ(T^N7q^*@CwU{<^6ul%?&lP92(*-q0hqGIj zg-qONN4t}0y|WKiXD2Fem0i5{LfO2ctv{7bokk_D>2BHHd}3xmatuFq?WCpD5Rm%I zqF>&%pQx(g710gzncvxAM0KL!Slhv-KCLVbCA+zmPEK|Ke4=+`#1?*YYFK`vGU7;V z{!wMqiTb81MGo$~x6Xo7oORsbpqZ^&Y;)rFm5RFhVs(0Q#)0%?V>x})#iwLzE*>uO z=~m#=3v4~`shrl(o|;dCLL?0>2ILRzM$X|B<pz$UQ+?@#KJgp2J2@(;X$kFhqd$MO zkg@*5_fNtotM}9-o#2ber2C{NF(C-vQA?GYPh(-U%z%2f3gbDV@Fd*gUwKOp=KPSN zLDWFGVTaR}^}G+AJc}x*3B{)!dJ~Q?Z^)b?GST<|R9d5yuO#<0!T=ak`-LPf{4pK7 zyqrv7#<Nj$3hj4o<4iKdiJDSHqa9(%cQ@&Gt*53Cj*-79(2$I~BoP{L>Yjn{k>qf9 z=~j|Bk0#Ri`6QlZ+#?xAa(d=6CR2$CM|-jwYQo%@4#RlV3rxO{A31ua1Cui_^PEW} zG6|VPWE_=2HW@=?0JTceXak{P>tOnw%jy<<4rH2HdGte}>7nG<OVaYfU>=^hn_CmN zX3JXsJ|63F_i;l?LsGrE1-~hsKTR#q(P)=I`N`TP+!U5tQ5-&$EF;GKb?=xLtUU3t zu#i~)&~7SBeyO-C>=mlG6A{(kC47aOZN^F!H5xOGGLh<6tfHbl?Q+#cRY}?Apj>r& zL`rag(k{?>qdQLp`X+iNBTQyfA2aj<OHRXFc>YYq<@-u`bUR6TL`*`6s@*jA70G(x z@LKUn*e#TCL^7gjkj1iKhxNR#kGItZ<qP&sYW?YERpWV=#p4#ZOjU2_z_qMGclVs@ zoGB}pOrEu-?m_adq+QAC@oYkDLR_qp_I$Sh_@L)sZ;9f%cjL+e7~>D~FSI{VLZ``) zcEJPsy^92Mqu6rd%uHZ6QfG!nvP2L(m=P@fRp$^njv+0qKOF+NC?G?aA4SxX<~A~+ zT~g6ON?#fXWq>$cPj)K(@Gg`oE2_z?RXsjo`@>kP!Gq@5o^DG@Oo1kS&nCnr#>FXV z_t!ItAsPE4=|zSRX2D}>VrLz>(SturHZtTg)ZQ-EKBrxBvV)XB?U_O$R})pGDdHR4 zR^}{M&0M+3!BxF{ZqVTHA;w$QZC$%wxhQRM!#aLrMMKyHRpYsw(n@vHh0@1QmBeJ$ zGunN*g`bljpVpfF=G-ac?A+qC3e~Za%>h87@RVR*r9Um>EQ6OhZsbFQe4{t2rrBS9 za54L8ZG}2Jw*>M&J!v&V<PqVYc8PFS?5YhL^#en+tZuOGALeIP7%2S1$fMgxW($dJ zGd=P$@&$2z;q*fBlaMYP<4%Uvc$M(g&Q@8Ls->2i4UTHqhuE%GS{2#V`tXWBC;C`U zAFs5^aV~Y|ovRu{uBn=?<y4<gpR6vtd`)?MQ=@$zulT9$=$Y2X%86UK*(+DgUTj@? z@BWnw_pe`eTL3kzr}w!@78VodEkAkxdDHb5_pYv=&C6rj$(%OQ+%9Q+NshiS5RwFc zu0H-`XeEDl)8f)us%5J+9<J&o)*jQQC~Yzvi#GB0<yQhPtFB!ys4Y}S&C!gvu{RD0 z_KkE?dHW{i1gk?2#}pJPQ@=M#OxV0dxgpg($CtOOxE6d(_2BC9x=Qu6=G>2&zZfT- z-haAIIWd>B3|X#6s&~{zm9tBFS&%yN$d;l~<)xgfC(8N5M@rJmRn-*{?nl(=K}mid zN;$1gAW~9A3?yW;u;&#Hp$6Bm9jy{W(rYjwR8xh9%+Ltm5km=y6?VVEq15miwx#7_ zNXlGhH`_#dTL-7F?|r}c=&96JWBCIt3@YbnF46zj)YE2qkF?NcM*fi~+esgw=`Hes zYu9OhFcLJ>turJRvmjSE+Dz`PSxa)M{$Ia_k&jL!Qekii836_RzA_NPga)oIqS~{B zFLhs=vsg86iT{QTYG>!rb#Ye4Z`u2)4Od>MDoSGlv(>2)$sqwsOaDOs0N%ybHpF#< zzi;@)t(Mz2^?u0i&EH?1T9|vJPes-Fth&?26;%bNuPbT1ZW(9BihcW=m6N*@VP0<` z$#)6gCTV<5<j;k1PYkp#g~1%LqhpAiuB6FyDP2W((?~Lpen*^}o}?FD=F=WBzN;pO z&R5X|Q~?w8B4SO{WG2}JL$LceI(m8JRC@<?NQfrNTNM;>s4#hV%I;+Kb+U_D$Obqu z<snX)E-Kn<9_>zL_8Cq`ebhlm%EGHuXKOR7%GAC|$9(HmP33vz73!;(3*S6f(#vbO z1wI2OTL#sftxY>$a-2V$nVVjyx=`S5qn5A665({O;rL17Q<C_Q1U@nq65d+=sCciH z38ma0GwxCYo|Z1e<N~YsNWLLGZ<AryoNw7=s}=8CGOs*oQ;yumO<CwPi>GVYDiX*L zE4H!Tb(vc6aT9IgM$cV0iKi~?Ns`Erb?ohPPK(s?lIRZM`eZDBk@!@oeJT;EUK_yM z>^L%L43W~|JPm>O9c14(71p0ozkgE!tISu*aoe~No^;r}`Mj5xjmB0*r?5W@wGB83 zOSC3hyD@kh%%ZoRl1QlVb1v4cb;K9RErvW{)1NZ*30p%V89~Cz??-poYRKuQB(1}= z`mLf)_$<V57lLlupX85uEH9s=nzq1mt(|)4$W3%I{YE*pV9wdKyi3jHfcvUDEd`fO zsuiL0ZyMbex-m4Djhw=e6|AC;vLQ<;qTi_2x?~jisW+BIox7s^rGyM`ZRL+0tII#9 zsxI0ZQK&xQpTE`)L^uxG`uHWO2LX3lE*=ZwYdu5XfK*z~jCI6U$YX}QVOP?}%o|po z0~?M5T046@ExJSdRfr_ywSnL#78<R~WR}L-TQ5*8@T|I#x;t%mDl9fTqIQNvDy<GX z9`)uo9X}IMuOi(aKPGIpTHY3dwdT2)8nZf1hi?g3d|5fMCv$=QhU$!&UsyU{Si;C{ zyS5=A`fUi2YFTFNLM(1LNFCJi4C?63(p$RwR4UwO=vNEzOZIo+H)5iD!`x#@yU;<A z?kDCY<R1+AEwpyt_%Qazf>u~(hRdPz#g9q;6Nzy2y@8e$j<jK#;)v@>F+(g^GJ>#g zPhmP6WUqXNOn!v#IB3ov?<zhLpRPH0xSYQ*`DUHfv%PznAAhVQ)5+J$(c8F@estiX zS^UD^mpa_-%fxB|w)&05ZSb};kI7zmTjh@i+8#m{N6?hVv?ouq9q~DGh9N82WcD3B z1Iy_!a=qr@@vNePKINswmv1Xa_8PU!b|6oe0t4@5$b9y3ozr5qyf*r&aQms`!+Vnd zqk-^Fh#!w_L2zN8Nd&-+E}4y-%#e*Nm40TKw=9tW{vay<vy*^#fZfN51e~mMXNHF_ zF(0TJzU<V`S-Z3LWT_o+@XnxMCH?lpcrt*D{_qDGT)@ji0gJ}s{)wK^{Wwne5oA5W z#^bku;Or3m^J9ZgSZntdQ#ak+1;SNk8cWl3*JFhiW)hnfkAG#!A>r;V-CbymJRYiI za`7ORYQ#C5RD*0m#?e0@@(JW>5=KrEj-F(GV(CQkiIIDTVBsIF-C~>%qqPQlsMXr- z#ZMXCC|1}az&7#@2!`6799_ZEQJ<+e9u8h-Kqe%;wK1JSp=GB~NNz-P)La|LEMkc{ z2!>+G!p@Sh77W2G?fp51p_mn8D_Hp&;Rg-52SQPZFqEUy$vxPQ)9Lgc^NJ;y1QQb) z%*gGRUju1#Id@IBWjTnhe+bPQG93im!%MJy6+VX*sURfpSpd81Ay{D>3C|I@wkX&y zL!B15&(BjS-yYrSq7hcLlJy~`!n~J?P$83C;?Boh@HolWc&*N}RxMu}?7T^Rie#O{ zRPosj1ls&&Mp0*3e8cy$>PmffS%vz}_2Ym2sGQJiUdRNSHGEK@SCqSIf=6@P(S5}S ziq(hC6xCN18)xL?CYPw5mCiL+%NIqr&LOkNWMVs~^&BPzFBR*&up)B<R+R3-U2Vz; zA%P*LM_<7lbrr<vi7YI?%%z|ug_f#?R=!To>g7wlhEGtgPO~g?;+>D34LGa1)R=ev zILuH>nvGn^`6ldd@8V;usEg19#(JqHdo{P*%X@LIL473eXnL9IWzpPOYI!i;jfD`> z*ca2_PTj?zR>>kPUq)kE$o)Gc=x#-bX-NB_=fttYqC@eIkO!;mo|u?jF)F7G!A`;I z!=4+HTvXO;!hJWX9X9$|uT-wjbSd`c!?%QQj*2!82#nQiQu<~F<wo*0A+C0-l^fGN zvo*Z^iF;AkR2>g8PuHsp3$w~jD_bp2PfF(Lz;woMPk4H^^5EW-q$K`OYIaJ-UgMa8 z;%&!Nm(FDsm#Gz>PgE3KysRvbEe|T<vr~>7%2ypoP1w0#O;z+8Zob{Bxyu~NZ`?e6 zwe{L*_a(gIpCH{7E?{$HR1_>8wwqU|+-#GI{M6BDTQUzT&sG%GC-LO#DCXkUV;Wbb zJmwjGiG_H<bQ@l=)MuR=XiJWDl72g$jUzDm7W7NIcY+MmNUb$mmk>Q5ISU6+W1vz$ zm;~M8{lmRgp*~3|;p&)0OvKTno6A%!r|Q~L)$%o=n8X5CA3cxFSei|DKNVb|`maB` zy}|iJT~%ILUU9q+=|&S^xY8lyGDA#>$-9n35X#PXse9tJZU^xuOp1VF%O6C89_c)J z-m3=h!yW83@{ZY)u`44@d3;NLcrITW;B<JcYSvOG8xQrR7`sYy)vA@jtK8IzoLlpa z#_9GjHCS<e9~Qf<uSo29GFIfI0C+augQKtzL>l|ycna%gutsoffoy{LOT~L3y%1Zj z2wdZ#R<vK6X9R;|<7PbZG;S`!iuV~g`69O;H3x2wq&6C|zD4+^H97=_WV>+iJT_+o z<}!-+7c~~et6(voNPnP%Rv!XZR(G=Uxy#wLrRsGw3-&sS_B}#s6AoMl+#I0^5P8|V zrRCm{4&Y_Qd*J2_;O0V+o2esU#Qe!t5hKF4pgY<Z7P323wQ^;EHMBCPRo~+`_ypN@ z=;o0tr;hhgoX^TDPCc&5P2aIKLoJ^f-7Ki?N$x!-mLR4(kiSP^>KK1tkhYT1K(lVb zo)efYBBRIp2T_h0%tp@v1>;&;!0ZU$85XYe+3%kl$Oq*di>_21KfXVsRGr$)#7Ef2 z1ghNpQ>*sx%GjHy2DKhThOqKjY^ul+XQ#J#Jxz?W47YT3>Ju2`8|pR~D;&cyHN1+2 zsPlLf=&f|aW(mV!HvhE_zk^AC_Er4sfq{10c|4w_({#O-2tAqkEVb6j{e-WX$!v8U ze#R0zfxD^Wn8&Pq4Ahix9`|GE1Zp{ySTdk(RnVQ(kESvIV#yR@{|B{a-m#P?`x*II z>d~rIL3fjcJyy6=4JZ*jggx%~E`9@=gMr!v&Y$hSY6CUUs6FZI&1)=t9e4MMHfM?o zW5P1kS)n@vc7z7de!X`@CPYLiCpEY{;S1S=P0Xqdd+(<1J_M3V0U4Qm$>+rC)IPh7 z8k1}5QZ5yfiM?+f$}VqJ6@Vt8ZK&pxBt-JdT>~<W%D7LG`Tt0a<aaT-3~DG}pX97? zb=cv(MSBhxk+Hph&UC*@4OM<@>{8}+w%?>kbs*(q7w0=PM)uihv~08ex;RT8I<fbP z*kDI<mA{y+fF(U@8;Ef>v}ADdx%#SWJNn4$$pOu^4vBDr+~DjkGY;$hclfEIqxbBK zRtF>pr1_^9r}+CH@KvpKi(YJ@Zm?wPP8RGfR23CO#pJ6)t7;-ERQ2VlH=ES*ZBdWO zqQ*y!WZ`4UE7+S*ZFlbc>Up`dRa57C+S;hsto2wLw#axk8@mh^l<i^h&KjjY@|2~c z_x`Id8Lzs0F1@&39de%uaCV4Zr=n8xW+GJ+8@95Mq2cWAyuD@na*RoaK3>VDoy@8# zDKoCBXvn*wx_UX-sRo9_O;F{0KL^W~P@{HXKpSy{tx}k_2iIn_H!O6ot7^W5&BSoE zFYV7zlUe^_E$9tqZj@`7hsq;t->!J|ETipNhqqU%?p{ClB2#@EW)?E0jrL`a5F@5J ztum`rRhqRe;ec8`gnp|bV~L4GKyxsi2X7=EiNr{volT555I8l|h#|%--Bp2UVg;55 z^w$U%TVa|lJ&)-!P<X5duH8u2U&KRn7nx`5ufj!!EMvudWPK|+E@mx)tjqOT6WD2N zf|#8FK+K#**q9!_h{gCW_A$Fl%+rWdLG!zuJwuK+!b}}2+yf0hBm6iF%Y`S=O{+De zu_>d8L^pu~^>s5S<Z@fc^wugdq^SS+sfDcPp02(=(bhTWF%Dl~t(<bfA`fTWzM%X( zN9fj-6!`C?Wt~Yx_ZO!K`MCbX=WjmSo?Ooe|Bw*wsWsH%0=0xeEl{<-qD-iW9NX!P z#oC-Pd8zAm1V<gkX<@iaxFqf&|CTSS^vZdAnm!)W!dDsr6!N4-2;=NdP$y7*Dri(= z+4sbTkqa}UJIq_mpOT%=iPuwe{r)EXQwm6=>)6OijN;%;x7o*Ls_5o%G@shh;cuxC z8GH3+&dFM}V$Eh7MsQ*kQ&T~-V?o^A$&edt`g4Zff^D4_BS=|YES<|K4$^OJ>2_*P z4Q!wNPE^;(4%j>x)_p%nG`$FJ8d3<&+o_$vEd{hc64rGBQnYpxATASDf(i^Ypu!4$ z4r<p+%*Kh?^xR`7=A(0gf9N2xSVPjGve%@JYq7jKckZec=H{1IG&f(m+QQ3kyuiXk zP)O<ybztETD;G*$;7{cM_{X~gfAWSIBtm#ojuo+jnO0?q6|*Kn*aG-6fxOd@r`ILg z8?cQ*EbT{2ok%IukDaemF?ZQZq~#2~&NQ%O0%@|OtpL&~1Qkb5fLwYFucS`_a)mr) zh?MPGE{JQ$zgG+|?M%-30Jd}Z7yX90$Py)811m`3YmKlTdXia<>4>M$hI&!_8~wbM z3<l{>Yuuq|(B3AE+{K8?t~GqM+uAHEm8DxmkcZkoEGRG{Ao93hvHM};G=J}8FV%uI zK`zef#Y?>hjZj);+LpNSj^zyjS5+qq_UBZpk7wr<=2jTbD{S6yU!{or?dg>dC9o@0 zG}r}i@La8$x_&(-f3f@X_7oQ@zjwm)Fq>SJQBhD}T##R$U88ERSTRpc|Bm72YKE;` z%ZF?HqdiqqH{EXiP)UZ8ZcmOcoTHX|+Tz#mBtp3M(@;#>=Pw2`5Vg<<ABaRk(uKs^ zctc-qB|DcM0ecYh7h6q&7|_{uh!U@08)AC>r6}(<z{<CX`(V*DF@w+inOVk0jArPR zxY?k>9;zI0dDg2S9w3cuddDBTer(S8t<U$Y;z^kG2Ip1V?g(G?J{4W$Y`qK9fIqoK zI$89-*rd4RJ_-16_L21B{l@ad2Qz`8=CqO?WXY^HQ^Br7Q7Rl4&T(%S+!#WoGiFmT z(P(IQ*ebyi{+Nwh6}K{O)n;37Uz>!e>AlHARuM!{^TmH1Qcq$Pr4E~YHm+7B(r**z z@w<)6lGDrfmmDJtdXovPIL%CCb4YjQOmfAwTdK=tURG*FP5jO+3GsXfyE}PTO0rU( ztf_cNE<CIZk(56nC!QJzx#zeUcbI~TjD~t;eMEzQ1^@8o;@k6QFa>UoX=_w#9HabQ z)eGAfEqb(=@pp?@vsSq_V@-h@KYhW?C3hb({*|?n4XTC{=>-+)dovhoa+sTByKv-4 z+t!CKPT%<D&BcY2c~PxAqw#Gcxdr3xBPdIUurz>Pr`^bPW*n@3^cF+Ai|Y@W!bX6V zYYH0&;mNEwodGh}Q8I%ebJ-MFYv!^UZ^iII2=|78b;n1eJrg4N>wy7TEUf0p^_ld# z(F5HMjx^4sjYe`Gy1m7mEEL|7h2|}$1<!3d_C9ZYzPH2Xx#G|)Ap0%u<<yIlslkM~ z)Y#{MS7so;)ZNZ@rqVfML$NPUX3?2UR@gy*f93Ku&Z~IE+SoNN#b=WfMK#!Dc4tgN zRE%<R+lp7j;8im*E{-n=&*PiQ&YXRqtd6MhDdOoYGLs3*iY+KmHl41x3TCZY4OL!i zHYddG+^l}ag7lGgNU11_r6xKv&cS<=ODGTex^YZI#+HIyW!=%Ts>3`PL&q^05lI2T zAa!35etrkj&@>phdC@oiytx>5=7<bfeDkjxrgv_W?rp-iw-qO2$6+eB;%2gnJF(XB zt^p1zFTb>$aJ8mjOL@7nJh?olfX~S+NGnl6-nz;F>jUZs?DP1A*G8)-yLfb8yOfPZ z&T7Y_4L;XZukT)Yk))QJkqcLd@(ht)lH9#V7T-1yejs<avqp(AJGaJc*_+LiWk$I> zv$tgNC&Jbro28mM&vpDx^=&qLf5xFhd}?Y=a+#{+@Rry^>deSpfuTx&Bg(`xed9eA z+bNgTt$2OD?nuQE-fMSmK$$8db$3#_x*wUqd2RL#3gR^(ew%$%)*&UOr%z;6?N<K= zg5ieF)knzcTzwp2_4!I%eI~=|Gli`D_lg9t>t&O~6{(DL(~v13b2vUU5RU)Kk!`xL zAB5p_ijn*R%-@$tI`>F-Xu6RevE<Nog0KH|LjpLRahsUkBmHh008-89GHxyz!JN*? ztv;iCxU_Z-Py6Z=w@KeN_6F_C>>?SQlYf{qKa1ctw)|+Q3kW{-!k>2}<R|T9j+U@7 z3m8%YjN41#o5`|f$**l>QJaA<N4UuSY<_3t$hixK4{u)Z<Bu(Oe&%QOvT|{?v2m@u zc(Jnb+_@@OD_$O)c$a`}%mSwHT_FA@kPhx1T}mwGQ44A@k66&<_sDW1vXpjkcXdnV zgC3$6`S})^L;5UjG9~RTV5%|`XeCxutc8VbBGGEd!%L>*O0%7q)K81JBb&2g()o2* z(P0N}0>zmACfwDKS@6PRT7D{)C(s2NvZ8%`AU1v0L84*75F&aBd%mX`MmBL)o*um7 zNf4L^+*Q+j>mH~{n$gwoR~XR(BOUG_9!61F<uPTdt2axo6sQ#q2Yz7WxB6?e`|nD$ zU%?vK4vLpy<EiP`<~c9b({%Ps8?0N}{R}Z=sq*uFrnNJA7Z7-g=&gP(f|LV2jo#{q z!M|c6^(e)JU6G3EUO}o6kiOk^9@vbWzeZ}WN!~XTdqCU**pM~GTy(1Ci+r84V3u<U z^Yv9bIYnD7Q!Y!jtaajji>kt4UaQV3DpJ?h9=g=1oY%`C-rmobkBAJ8^HzClQZgdd zens)8>XdZ{>I#eajP#t8qpG91aS`e2Lf-=p4odlk&gE9v3d`;Ar`U&ta-isnu<&?6 zS9h+zg^8M4P1{wWC8Qj7itn}CmtoLuFVgyWU~)B4lhZ{z@>)#Su4z%c)gB@FK)|-O zI8qp!i4{L}<$l;zQ{JVdkS>b;q&>Y16Mrq&MODS`K-WKkuD=)K(bTJ*jMNB&iBysT z+k$SQ5}?zh@J=_F8^g|yUbAwd%FW|YUWht6V{>-C@=`%wK|Wtqc{aPUrl2UZeE+4r z$9vCUw+C$980{Av)W^+bb(q6CV>cK7brwp84CiBByhmBR=BDc2je?pQb#?XO(<v8? zLD8?*I)rOa%)q~X-pLKe0EvT@VT&IoDWA7>0^$LXtF0P_+dgmAL*9Z2^--wPwt)!s z9z>{*7I^pPHht1>AOjSAVn7Di`1xpO@&1=2B)O4vyKVqR1uD}HXHI12*VZW;?Jv)q z>9A^<Tjr+XV4i;ZJlPxvY7cTgVSe7*_(0ZsUsz$Wvh+xCMa2;x4?a|vz8sSWiO>Ih ze&acDdM5ca5`@^}tZr32{>TzzvXUYDSa-UT5oYOS)VFLMY+Ol|K2inpzY{}Vu)1k` zI14H;)RQH?L}274biIbmJ+9>^W9q6qnhM4P;s-rW(w?4y$w-?qBETB}#{nm&9Q4r; zh+fj38iq+XTM_UWdVNvf>x^k*aE>0Uq(#K4_gZ@~4mc(4P@Z$pN4G$ELv7_Syu?wA zi%2sNi$9oVkHG*!_TM6!|Dz3rwWf`XEeq<Sv*7shiur$I5z%8|8hZ#<_URyZX&NvY zY>PX9h8@BO?OmYZU7%ry1^$uBM3p?*7y?@P6zy5)zKUKq6G5&b=z#XushC`$m-HZK z5p+Ui3sAbA5kXhVarIk4`A+dcXx6q_<0_q81mArJ8Bc#Q0-i{sugvh<6B?lb5I`Sr zG>`-kxU4VGKoCRxA!JPgAO!yl5EB110F=UOHJ6U#Q{o%JTEMjh-&tSJU;EiEfAu6L z&&@u~N;Pen7Z_-Uk8+_i=-0|0@)p#s<rfb)>wo1v6I5|3>b&al^%5`~{rtWh3<I2! zjwK^G+MwISgdE#kb5i+B85!Bq0%n=&3%Kf7Tv(p^CLPBO^`@iD&3RAH4M8?4SFe=J zKs7lnxG`B?NzRT+`7xmLbJ%BybSA6T4#WV61AxdVFCFyJc!=K9<7n`D5%BSy<Sv+M zZhm3`8>goZ#2_}4a6pE;_9fu<57)&w10=NmPrwpF`T#uqy@BvR;K3L&5H{F-z~760 z^?41LfbvOyhD_2MM&5y8WJIT7r2iv)Ft*K6L;kqG`vDo%Vk%g^{Nbe{T&NKmxgTdY zQwi-cbt3Jd;dg{H6It+ic)`xriT5``I`bg4uIYj5YOTl8d3KBDs1pMcVs`P-vzbEJ zDzrAOpEPWx#ZX_by-9xRn0ZWWS;f|J75VPNucY@Q`{wDHYQ^b}v@=hhDnZ9iVnWVh zVZstjzFyZKLwu_kpQY^woh)CYha`#+SK-%T_(xk2@OL?e9YBc?r{9?s0!yY_;0)Rq z)bu5wre6bU`jSCnRmSh2poexbU@&61Sn{Fh#|H{?bdg9eDzak*3+?y}e1}efqUEtr zc75!un?{?!T`e2$qFN4sgTR&;-AbmmkYUY|q?f|q&kVH1otrH;*lcZd$XcngcZt%t ztHa~M!lNUN&jv3kuvGOOy_!k_L0&vil3iGsVSFeje;=$fM`B@}$qd^Y8mJ818MQ5t zr{mcHV;55CrnG>ZK($w4eQ3R^_{g3EdFt~Sr^=4i881BA?AomQ@I>5*eb3qjJ9^rx zraQnk>?3T$_QE!7GHk;#*c8}?<rf+k<Q+d;t-4<=Zo@zp+p;di#%YtWzn536v&zxA z;8f$8%9~(5pdK)hok|q9REc0k=+R|Fcn(H{-!@>_7y0S>rQ%>r96~_7|HBgej_&L$ z#y5!Z<ytc!&bBU)s|a!zRU<d(4l&c?cK~pnhRG&+vahJ{j)5tya0zx_cSekf6Wj$+ zD*4;tkQm<v@yBBEx%T=v1H$s7X}EdR8SEV0D)ef-dvyg-njU=#4k|ETgaYpKx0P<r z<ITw$<~DoqDl-tac0O&)6jt$}aMnp2yMiIz*uo!}ePN+{LRVmMldE<tzZ5VDPj$WB zs=-ex7tZ13dqsscuo8$+$$Ca=1V*}Rfg@-Z=&vhMAR_9o0R^DKp1cJAM0fTR<IZAy zv9>RuU<XamgEonv4Z??Ez)FcC<gv)1o$cMK?Q4z0=`VWlJIJ>lFyl^7_QQ?!1poB# zcLE056v7$^M#8dYOq%E-?x8MWh7q|+-J7v|gQez%h=p6?J3@sEoMX|7(M+cIrsR!t z@xHD5w(j3%{eAC~J{O)d(S;@P$87M$uq!UrYHvE48@7QCrQL$V_9aE|WF45Z4+ZV> z^--=S-8s6RwlER-TT0868eEtgACt+0Mj1$Ds;KB1jRP<Mw&(#idWxs6(}P6E)CwU; z_}4J}$XX9!-svIGG5=8mFzA0DYI}u1QHd}^U$ADK54If0_(TN9`l&nvQV)iyqreBd zpe*`?>S{&V`C?Fbisk{w`$F$~psJe#zCvk**v3lZ<PMgz!(iW-^3Tl8`1{lNUJ*=t z`3FVQz-%xLbm^K2FpV%D-k&?l3X@)m56Hf@S!5M4d}Mm#b;x@~yLPBB_!U;vWrOB% zBCBW(0fizpVVA5bzxDiXO?zSCwyg!~w07ozug`uT)jac1TU)h<hsJK5a@q0KXM%V| z`y{V<vqmW?{%G|VPny}(2Mm>h*s$*!1})Tjx{skf*hPzr+n(OP^+qk<1)77&;bb`( z6Jpvxri7DaicLbffVlH6)z<vd>+A)1TDv$~^K*?3MuhGUQ7J0KsG9B~yNxbXRb5ak z{0?u;j!oxV*b7zF7u4as6cr9$o(?>?gG91*CCBROjzMhtBcr+!F9)^!22p6PJpT){ z&$k84Szo$|cUR%0>)7fRj*iV&hgFwHv|_r-(E8#{yr&8uxQ?xF;i%4($W|<`#~`ET zaxJ=#MkIzru02Cr!DR-n`ZE;bjF_QR^rLAZ&1>yQG>v3*AI*i2EQMgb9V35;AKf$1 z8WB%UH&d9&kY~4bHahEj<T)$MgmnYbg>(?&J4h-gSnF&TlIKP`NH}XNh}r3L*u}k> zbBdUUNHR}rXPz?9md)XazdbeoJd>EOqyCWYLB4ARHc5V9da+$7eW<9@MuV~S-Ga6u z^X)dyTfyI3VOzdPHDvCr(W9GZ|9YpP?A}$dW-h;a#__J|*E_B6)H4z|McwKRF18LE zDlXdd7f;nx)Tz$axU5#wre0R|&TbAW+x1oF&!4P5TUYI7c}gvMl7Fnw5G?u^5e7K= zDN%Cm^sv#7u*8yC?O>_C_|We7bjmQa_6HKfj-q`S+V6)~?8?b!Ha#PlktaSBK10FP z4>?$w3AmSlu3B_Wj2KERi18R*8bgP&QJ^jv%7STnAS-W(Z?)G5OYWGGKF`Ut4lv+e z-pk!K+PN)ehp)<Qb3wV9G_~K+#VmMeqzKh5c`hs=la2P!R`4WQT4eF0CMS9KK3-1z zX>HA`+9$OyYoFA-s(IY?l-#O)QS+j<qxNOZiy8xMl$N;R1iEh{J`i{4;KAfWJUu}6 zt%TK>_S%S3HUlX6AWwSgj8|g1pX}L+<7)Bd*El&Er=%R@b*92s+`+iy*x1dReKGBo zj)k6|4X1!Z2HDpMkK62tbv=b1Q!uESITx{#z3Eun;~x}<+i_<t@G?lzef?i`aqz-@ zWX}|_Mh5CiiH(hmgSr&LS1w}nxH#PPTAeIS4}bzmWM3K-Gn|j*7gIIb^ji|`Qtbim z76toa_-A{n5IE6zwLq85w1ZoNHl69z9qhbLdR`~2UU{%cuRQ3bS041b#XVeF_iv4X z>OR}rbo!xsUN0wqji@l_DJl$tL1ED8qB;+cujJ@mTDYg`K-GcDJ}vk`<?7`J)H_FW z+r78J-}pXWu%Y_g7ATM^>`5i7Qdt_4WyI&Ka{kiIq#bw2+V^+s)^VU)cj5fk!gH=# zfv$-kxb%asZ!+L3o%8TXQ4h&niMzyKvR#rUsgvB4Zj$;-Q>4eGf<dIg4udR%BL)?Q zGQ(bmeGLa0PBt_*Tx1w%7;9K;SZ3H@c$vYBf-z$TF=H4DW)<VdL^7q!3FbU=nYqI} zVkpb9J=s32nq9)KWFy!-wuC*wo?|bwx7c^=M^<aZ8uc*Zj7A$RH*z#`H%c(dGpaQ@ zZFJ7)n$azzW}_!YZ;gI2`j^pP#*A@yV^d?LaX;fh#>0%q8c#M}WxU#W4SZhXZyasB z)p)mYx^a<ljd6qVCF6(2zZw%0WWt!pO};T1W-``fn#nwqRVJ<`ekKtnF(&&>4w|H! z<eMBfsW!P}(qi(`<Tn!mORzDPV^jPM{uU3zlkt3Pi5;;E*tNZ|ACAO3a58Kua&aLp z!N+kGuE$sLJ^TcB;5Yau{3rfLW-K$6eJdLz8zY-4`$4uqwnAnn+aU9l1<68Xak3ro z;ZL$GU6vy&lpT{*$ZBP$WoKm<WmiXH{SJW_cL*~&U5EZt{2z<Ci{YJ$cw11!FR%)5 za#Al_?lF3ta?PQ2M_l=3mDhcmRljv~s@Cm-*Nckvbs*8vE{Sd;NOXB@N@Zr3Vm${G z>!L&_=Prhw^Qz!aY_!T-F&8_QUksdtCvUuUUxS~OF9JVNkYY<gh+PK)aOohdw+qL+ z#MlOI>f;u$X_Fn;h5f=Y*XcPlCSvjQ0jkv-Q;K}l-o^11mCCGL*?Y2h2ON|T6r{9F zv#D|fFN>ytN2-e#((|j-Ep;bbGu|7^N8pnM8sALt^xWeM4lpV&O)}_IA~QDU9#bCL zmAX5XzesMJ#Fq3fvm;D2-`Zrl9QEge3XVsgR9(1Uc(zn6OAYYd@2|30?eFRWrU<X0 zW0VUsR#iLko=0oL&Z;iotT<bwmW{@A!n@H}#tkIjFjnBpK)<PWAPQpi3Knk}RcP&) z{;W>++0Gn0l6}iDHCRgf_wx))%MR!Lk8Z85Qa0tjICGZI&o9fWP{}wlWIVxiyng@3 z!~Sm;RDEnqUPKXp*<)^=h01bGxSzY)%{yqrE}LB*={`9jIUz+c#qp(E>SD9D8=s8J z4)Rn6#D+&k^C3Z=ah@t?@BR6{>adK+yh7!^ggv|V^WYi1b=TIdO7}w^*#W#w%}q_K z>cWNel1g>O(VP?Y%BJ;o%QASIG?!$*{l<a&y)(;|*#|OG)A;-&N0Umy<{#$^zRaQE zb)b}UqeYv>J66W&HnFs4JQloJ(Yj^|*0luCPvm3zs?)Y6XXPqtVDs$v&b_Hxzc(cY z4U-3`<=PSg9{@PPXCmKIXZVkzlfdlfL`Ko?i8K61fp?@6zpxir<V+|>=fU5Ed`-;Z zZvqA9!QX^_P0e{3S08!Sw}QX1_J{mAs#&(7p6k_C&Yr6lDu>*$dL7IY<j33#JL+h! z+!W=f3E{mw*F~*UtzL2Hl#AN$*yf6A<tWx7!?wbnUwZC|-!s*thk0kus>_e(HZ&^V zF1a;0pQlU_V|U2q=tX5&dU1X(UsO_is8-c<DtLXNIz4cIfG^+#ge>u!f~M(MW*>CY zO6A}l=<TUK=EP)XA3j*9lHJ2UVA)k0te&v5OZt^{NUGl&2n2M_*Mb_IPV%Q6R_4!E zO<UZl1#q2(Z#Nz(uj9{DS2U(J8joT(Zw&ME^)vSMbqE8ixgM>h;+7xKdh!B3T^8e8 ztS<7)bg@^;{=F)F51h2A71nflz8xdeE*OesU=j-RwhYQz*ZX0~@pGy7jb$e=>0v#e zOdrC?VAYGkvJ_AMWCzvwm6i)*)ZxQnSpo-$ckB<k`ET$8VLn3!v#BlckyAdF=`|H} z*n4VB#>l{%xS~OIEPHcQnmRplZ>XO#cANXoSl*gmegi(MP0XId`%1IHOVnfnmVr~^ z3o@M{*V!UEosq4;SvIg4k_kCN5O**1s!I)D?rwKvvC7Uq(#u6Xc5Waw2{kj`Y`4YM zRyixz;?xG-yX=(as_N{?^pa}zo929Ca`<oK<TD4(o>j^Y#_iV&0WxkL8?ZPgKR72K zwT}$c4)85Fe1fr>n~4(vGvF(@gT4V3>Kk$Cov52?L#x3z=?wS|%7ve1U|HDdxxP+T z(X;!Aq$NGT8fL;QWs}e4SDwiRyyZAuQ=P0hQgT!+1KDc@oBEJhz(&tt2CyLE$1qb_ zaFY&>0fYf`7ITM9ZG%szjtGBe!n^5SmaG&E85khu(*TVltYqALEDP!K+KUd6ao)8| zcvxVxze?tVSC}z@(IF9@DsO*rlOp<F<&{NNgQ7#fNdX1e6WAnvu)s2Kog&kp3-%#0 z6)}Gd>%a&ZxNzEq$jZ*{uy@)J<`xmYHzisfle{H8Q@J;B->$v<LN;Mr;<jzddDoq9 zwm+<V$;)D6lYw1plZuN@stO7sy*>OifnjPom-Ye=69OJDpop8wzP-gX96wumTPZ6F za!z$o*?YzX`>OpzBD~|>jGNh-q@vtf)v^3AA1lj5XLZ~vM#ha^DEj$46f8gsG*f5J zY?obnmYkRj-)_hj;y0`;g^N$z1_nmis!#`~rK*kohYp9R6L5ZBNmh;O_6diDYS|GS zc@(FIVHrq)(Ks3Sm2*3QS9e*af%P}<?}Q%Q9Drrv=||#@mEgNwp9%WKrsnQR+`DTp ztXVpq1;r4lX6f%#8#Rj&2C!-1^?RBnzY{GZ=N7Y6vM_4K?@i!^0q(!@@Aa~r8?cZ! zc?aJveSaHVqs^z&nRF!W`D_yD_UBK{A2VR8mBC6jSoer-7alPK9r15MJK3&l2Ztm% zH&XO@GMgfpiIz$O-459rs8pu?aVnO<YygT!16j%z{2I$N!k!RW3FuK1o`KJUY^|v2 zX(dBiWFKlogSE^SOJq5LSa!X%NPRFh{XmZDY|h4YYT4p@Mz4iE@M%|bD3*cB$erBg zWD@<J-#`|3@SqH2V_9@`+Xg5L(s1$<7>dt<<!hLg#W(yftH_jx<OecH4L+Y?zy@)! ziZPH;6l=MIGOm0}nO`Aa;P0BYP9=MT!TtR}ZQ6;v@;)+dLK1jO%d)UPHQs?`{`oPL zCzZFeUNxNIWt9hx<yWi9v*Tl7sBBNzv0eF+-M4H1KBc~86)y~A4tj+OtSE`1kFlU; zb#c0~h;fXN%7UPiSCD>8bvxbJEjl4`M}&G6ZDVA~Tkz(4Ag0Ue;Da)w@x(~Rj;+J8 zZFt#2Puq=Z**(2W+;%K`i~H+3m~FlZF<X>A2SU@sVZ|7qgkJ$QX0QXO>Ir<^3iBmw z9^%#jFCC0)$FR9bfz5@CySU-p{P`PftgLEm?%u6AcM(8qsy{0}Tb*`->C_D@&+sMg zudM7&8J2l#0z5o|^N$|QEhsI`@%QFsw80k3w04|~bBwld_vK@wWiQTF<&_lk71c5} z{TU+*@bKnc9K+04DJNWB^zMR8@1c9H(?hplwMy2Ox=ZwaPii{SdcN9Nmai%IN#bi$ zj#ivd%HuUE+u-ukCuFK4*?SLUst?KjjDDt7gvdaH79x>FAICEI9HB#YEAWn~O!QVV z>hxAJ0{(2Ysa`tS!e(j&-^|Lu3Cus)|B&7Z%uhxdIBF^yl{)BZSqG?Oa}Qq2sXu<S zj|}!XFmDZ&F~H&AUMVBv)uZCM0rQs+;$?d8U~jO~P4JYF!$}%)yoDTxRxqR=`}d{k zgVpjKSPm|dnKILYmoi}wC(Aphl8KH?(ctC;Be;cHQ!Z~Eh)>{fHD3cCt4U-9rAPUy z6Iu7JC}p9*?hG+t;kKNW`Kat%qn0dIpNC0un@_wCA7dw@mSEqz1}=ay#=+iyr|8}$ zW9m*7>?u?gm&o7)mk=s}4_sull(N^gG1nzBx{b=3v|E}az~?C-g<;B4Y$W?vRvyfn z->PI)sxy^oH*TtB1H%Ggh6V^nx{tU{4S}*UaQ*H9O$@*(vK9hPA_2E0GWK4h7ktL$ z<->1umg%>dGP?4NBLfq#u%b;CBI?a$Y!obaB>j;@2A<gxKqz!74lv7f09^pHaP-1b zWDDm6Ajvv3PtpSpX=q2|;asCBsN_q##0z;!y2DvT3z3o39}SXjf$QrpTFFY(N9ywB z7s-b&ze^UN*^)XGA$^7hNJk(egLJf3`V@_oFeq3u9G=6zT#$YRumUtuJP}4xi6+4F z8%g4q+mPQ3t~lw4F9e>w;3>d!AY3Eh8V=VtaP^Y_46YuMR@7fwfo$NpSn?YhWw0I1 zkZ%0aD9wa29%zU(SN|L+oe$3xh~I>A{o$ftK1dG&tT!5H;0w=ZaP5V3F)TjCv|z+R z`ZQ?`nk$`*rWmY7HqyCYZb*ltN&3EyhZ8(@q4|>WUmB!Jv_SgZmxt&Bnkk)xl+p!& zBNP3Tm#UBw&dVAkmBTw{!r4xMKgl;=5}?et5;YoW-~f36F6ANrT<G_7$R7h~U!Z?6 z=sW2TfV0PtCZL&;k6&6O|N3%Xk7ql;g9+Lou>*WYpefKtR-*XwSt^5btKK7tL0{BO zIu4n`h2R{kS%yhyvDhcc6x7$?Z!`pGy8>vk4sf?h(uCGZPN9|3L^Q$B3FzU1W*W?f zzKLy^f=mno;Qi2Vpsh%sAAl|tt}hTCEa{0nq@$qCJepvz2F;appn1}MsISx;O_au= z5qj7FsPj5<mQI8|Tt}-VCCCANL=&WoktLjmWhEJe<^g}5k*t7rbRc^uZ(?ANmK#LD zwGTM}ZLyxNB5nW2Wv~bOFVflrX!akMp3eONM<Tu9spo}f@D%C$Kd(Zdn+U6cw*TiP z(t0iM*lH*z()Isv8CW1=J*|PxBCY>@>FF%ex;yG6hNb=Cyszb5bQWp-pVtmF8~Usi zY5kv<NNef*FMsQwx6mvYn`41Svkk0)Z>*thNoYA-Lku#}S3vJc;<$zJuo39;y)+U{ zG8h8=+Kd*6Gys^Hc<>6saL!OGl6W}<`M{wm7)h+GSDB%2;l!ISh=p`G<qe)<N+(2u z4B*5ZBV+<6=yh`oaB@bA_4gHC?i-!ZYW>{-&W!OvF8aGiAe<S4{PcHCVBnasC{lml zES@KWcIfYLWQ)En|GtaL9H}1Gd1v(D&O4mP1F4;NLw&gOF1A&oZ>cF#f+}bjoYylI z&IVecKW|O~=f~;uNxtrS^7=PQBtyEMgY>;Mlnju3FIfn)oroKWWJA}}Q6FYdPxJ#E zMH3ANwip6NzD7J61gFp#0yfm}7el;0^fk0lgo#fPBIfRFSDrqlFPzOH=I9S+#{92# z&ILBA>rB9Rj0uQPPe{RF{0QaYfCI#sgoK7yY>e$d(DHI1fbp_150!<~U4?gT)sW39 zn^lP-B2`@}u3Fo8pkmv4#Y+qctnIPE*l`k!@$fLK9c?u2cDCwB?yNHV{rAlEJUrKU zf?<;tvc9=9_i^sI|M|~<{_~&TSI$ts)A%j#y-VP2GwP^pW$(bRkF1xM_ZX>q$v0Im zwN2x<g_qG-XkA`oL=EGx^%m`&-aU`AXFb0TXl;Q{c~jQ`;MF{Q@|q^<XW@l87VYhj zJyOm-_U#PYx0sjgShV8aeHPBTrr$G;m)m^Av7tz60&VBfYi7~bu+O56(LX0}<`9lg z<$4c)BRI#44$2w4f{?!={WDene2ULF_RBue@iblyXXv=-f#|Z{!apb}6}?waBT`Tr zheTdY<QH%7v23&a%<_??D(>=-w}x~KxjDogpAerC|NZ#<_+P~TF1|b7{n*6E{%+X$ z;T<D(j%XawN$Bh^j}IUD{>avm|B>)!!jBXFG2#7$j}m^J@R>F7i8n?ij4FR}#FMv2 zCyxH(n7A?H#%xaf>DW)l-X8mham7i6NtebKjX#x=p0X|Vi?oiXzWCmvi5U~$n7DId z`NS_KO`kMp(oZM9GWo*fFDL(T$}gr|n(~+Qwdu9#m(p9FPI-Fb)0e02oEAT=Dq})M z;WPQqygq&2jJO$3%-AyHmotl=otzn$d1}_?S?99ivi>UTXqJ2Sk7vI#`{?Y?W_QkZ zKbQ5~i_aI$IrKv9i>-6LFQvTn#k~Caar4hDcxz$i!Z{1)EzDkca?$ujhZg<e<+U$= zl07|pXZFeL|IT@C@zKTqle;;$ammajA1wJQZ*^X6zLsB@f4m^BV0b}d!GwbJg0%&| zd1d4)TVA=aG;QggrT?__mrKtqZC&=(vdhapUDomHh*zJ`Mrw2YZY{^}(sKPCEf4bf zUf}m?yZr6i4`CndhXZgB&{x0c=;NGIppEc%Yh(OQEzw`0CHdED$-FBv#b2qVvV97s zz*LyY8@!(7ye!V2!*;IUr@h3T7Vvu!Wb-}8|Dm>+@41}2#P6UcHf<#}S_P|N4ae4U zT@l}lp@iCOVc#~krQBsVW$fX)y=?dS^Qd(mwa%l~d0H8DDu+W{cNmWN?OG+<6I_3a z^H0MWI1A_CJlHvQ0X~LL;3D<8!Zj^$6<VPU+R^V0w%4H(Za^2@guB!&LzhaVM6!_k z9L`w4b`fOreI?sfuo{YB8#3O_{yj)+FWW=Z>M;9{@Vk=lC-{Df{iop!oP~369<Fe# z1+GFXw1KLro0__*shgU*si~Wqx~ZvG8%Is8w4Ifjc&Uk(ns}*+7kPV;sSBC9kf%%g z2{jNoUSWR=T!mI>gZ|`!rQlvev}D>k6-r?^nv#VLPQvy~(*Gv&IYpbHJx!}l<@*rs zZR6fH?rp>BO+Z7^d3)+y?v}$=bT^;vMF=lD5p8rJV-GU+=$a#PEMs3e$P;|PlbFfS ztX2QaHSyY5K9hNxR9MFM$NBXhzuwc*C_5A6>8jXPLk%2*TChP}?^C>rOj?k+RU5_m ziI7AY6X;RtJm*X_H4_a}x}u&Vn_iHEHZP|Bxonr9W%-;RsXxWktc2^gP`hp1b36C= z5$EmZdXd9EzVC+va1cbd-sRk*Qg7~A4K;8KYQY9(va(a&1^5^~fs2$^&wU!85ggD2 z&2Sl_>1PM`kEWZqIR7@>fo{0Vvy9fp@i~E~{~k}DPK{@xmzmr-2OY`fDa3v(<Jda1 zqy%>Gy^7=2Py@%H7HlAWd!^nE35-{vZ7~j=lJ<Ctx~VpC^tMSBS4z9gMRyl)chNDk zw!v0Xn==86ruujxcanZC?X;Qa3bvJ9Z>t@gA8aqNYT@lw!8HSEvlG<I+{*QBH)Z9* zZO6dd#*Vi)f;%SrOXv+H^o9z0xE1L+cw?}Yo^7RPTj|+WZ5sPBM8lEZT-wLzsmpm+ z@=AWMg4M8w@(O9w4V<?TirBY_Z86);*yb%9FXdjM)fN0c%>G|--zv_jh8j2qwP1te zV5Z6S+@}E=!2wOs442^w<+i|8XoWVoMp+$fuR|x?fG)TRw>Wki?m#z`panDVFq3%p z8QOQTd%6X|riq_9js2N03$kD~JO|Ii9C!g<1ktze!%Hv^=EDM52#erl$c7wP47sob z@*p1yU<LPI39Dc=FpJR&;Wbzb>)>_R02`qQHbF6Lh7#BUTVWe)huxIB7b^IE7^?VQ z4K;8KYQY94;1rw&dY5(<&cS)G!v**lK7or+PgxDn2o7k1X1EMjparf%E40Bi=z#0c z2{)h%Zo)0N4R@d$?n0tAnzkB)E+%1d$MZcIos^Lym2DdBK8^hu@C?VMgYswU&^d?p z7Qe;skWu9j9D$?QlS;Pnl;)%)C+(ZW87@30Y3axG&q-**N`7tN*e1Ro<+z%0NXv-i zH;3tq(vi`RbOd=lY#p(p8=in}l+dDe0o&Fduwf2#!;Wsq=-|TFmC=6}EnbJM>1J*v zeSI3EmeI1Cv{4bQYn<`O0zCZIWgboIO@MUzs`1OA|FY1sC)p=QCt<hK>D%&4ybilI zgJZlanKl-iA@*W9ZC=V&y!Jz&ymcqhi)1t-6_o#47Z~+q=F_fwEP0$=%5k$%YZc?F z4?T3?r>CKV9(;9)Z-maXE}?r~=2<R06PaHbUWxccX96B$Hy)#S%$FEreT=a_##kR? ztPiU{l(E&vxGLU=hjG=b&q8+b+&_d;#vAb-_fYO$j_t$$+K=ybfbBuNq%y842Q^di zX>W6nBb+O<mE&B0g6%1;I}K;xES!V$(AR^!Wa>d)p$;u@6<VPU)V#yTIP7B__Aw6o z7>9j~!#>7gFXOP6aoEc^?A2#G8Cn8IlKGWNjYW!+LnN8Wu^h<t_aH4_U~cSYZj7{$ z(pr%eY=&*@E2W(MlyeaN0X?Z=Up3UgF{lL_T*TL_=b8p+1P3%hGjzap=!6^41$Vh7 zg_?S)sfRWX*4CI?tD34Ae6Xf!7GKIWMy<-Ywj9iACO*+c5IIidjvhR0b=Oq1JB{C= znwH729QNn34c^s>e3)lZ@6bC}aZWYVz%i%=8>l-vk;gFPF${SOLmtDB$1vnEOs~oF z`kXWcDfFE|`_OS8exuByeR$tK-TPiii>(6D=_0nppuB6*XAiCA4$Odjy|O9i+{17J zPQht7183nJoQHadHk*l67o|mI&gaprNP7(1WdB~(o7sxD5h~|t9M6DfA(LZS$ZZbH zrMCs2+8dZxs7Og6=WgVjBDR~jTQOTD0k7Vpw;}<FEo|rhrQB0u4APs$TFIQaifuL2 zz%i%=8yxpnAtA4653c7}12lpInxGjjL$t`rHTIj$v7`0aIbo7f+9!6bn^Dz@Cu^l= zj>eO<;>lX^WUcg4D>luFCu_x@vf{}y<Kmo6Y>Qztl)x6)3fu6vWR|?2r#%Q4DZ8HE z4bTV<Xo6<A0y1yE3a!uvpF%r)2A{(<=z#0c2{)h%ZozH11KkiG_GG_B_lJh<G5YY6 zx)m_&RnP)R?8wIqNn#wzdP{r1tJ|UIGv1~898K3g?k^sy#C<|FPsQrG^(c#q)4B9G z-D0#y#pPV|F_%6!lepXl?ylx$GA~ma_lCcNaYW{4?P#3D>8ychRxp-S#=XlqCbL;X z1C23LjTdI|IX4jpHxUOn5eKX)_iTVha6l6@gNimt+%9~)FxNZ}V}*yY!oyf0F+8`# zxcR*QXs3+E676(iJHJk}Q{p&g(aybt9_=)fXtciEU(`>cpt5=p^i#rr$@u1Gv=K{) zPlHbN9c{#a>0q?+1V$S-{a!{JiM^ry^cNY4cksOmqQ!WO(MD=IU$?&r+$q_=A~341 zh+=!a*j_Jow~b!#AwGbMyNVCs3bVIsxU<+=L+fRhFP5a#KOT?Br+Y-A-C|o+pKPOs zZP?c~>}wnLwGI2)rrTHDKj5CR*imy$4)=PJBjoIfS<bP@I6bVzWt7fAcFJGq(dDST zPl+<iNG*0N=tCXmyOM?3s4J1@&>k&gi5KtBi}&Zn`}5-cdGY?dcz@yX!$f9dFVOP% z6x1qIFO@GPUX9`Lx%83Ju)k)$li@e9UWaZ-^vlY;V2rL`mFSm^J5?fWTkqY{_1Jb2 z<9a*#b%t?W)&tz=StaATtO<y<MP~GxT&!k3I<}l+D;a}V!D>)Zv6EQdlUUx9$gqm> z{tR-gV!S_z<*mZ<vIfn4x50M4mr}-V%HP9QR!a6WMwD@^94a_25sbrJ_crUeM>t2K z7*&*64K;8KYQYA_xkjx)M7PlOl-B@_;D9D*hRbk;d$hn+XoWVo#{Ler*P#<`Ko{JE zTO7L$cc2^Ya&MVYiM@zyLx}|j{a!PBAa+37OWMj4@WZ67WR50n<?3xKS;3OkE9HL$ zV!q7q7I57n$VOXoXro+8%m>v@F4{?rkcDj3=qTf}i#8Hl;i8QsK5zJB;+cw1=3(va zeV*WCV5ZfsM>Y3z>>#Mo(n(vn1EZxY&{plVm9rn;%}!fM960)V(M9TAPn{Z|5ggD2 z&2Sm6Knq-jR%nB3l-0rZI&{Jf=z^PYi(}!VsF&DeGTN@sThXdCo+iBS5lP3!8(yvQ zF~p<w;@NnSpbsq<OCjq~;$Ns$%2LYQ%YI|-sr(4HZfz@(l3Dwk`}wh1-)r34+yaMN zo`t%;jiFX4_yM6$uU1FZnxLA|gsuw)S3%W!f#J`)0y7$??!&9qPj~OEri^=pdsPly zN0c78ndP{d<+z#UxS8d+ndS87MMd}F2m0i9(aqO&>uBYhtQjZ!D*~3WBFr*MZ=1&P z43Jec70VDm^ylb?lOE^P{m>jNqUv$q!74iFZFT4h8BJ_Au-ynnunCIUx0xPW!b+R? zqFd3kZD{Fs%GyOe)Y@?!dgKg|o?#X30jua>^cJgF7qE)aSN4?8>O{Iur0YbwPNeHZ zy38l^Ugn^eIp}2$dYOY>=Af53=w<EnG6%gZe0@Re)HSZ{;MjHOgd5NWH=*xL$;Ik` zj6<>--*?umB11~Y#2*ceGxVs%^e7qm@*%jE=+b+i*e&UGDk>!2yept{v9C>=*_mi- zg37OqzAh+h)(QGLYzi_ntno6QdM`CCW1q|`%q(7<9_?RB>r39yBt51ttE#f1I!2GQ zSt(zw@On7v)>a^wHSCi)bqQ>Nt^AgV!gjW$Z1<sM`{4i_1X(GUXShp^j8Y})B<sdf zs?48!+H1rpUI$fb52eaz;0Y;J^ioQdER66{<IsHZoqVigNPN%=s(g2E`Qf#da((E% ziwqBm07$JR%R|bSd9Re;uKgSLH)=i;nI=(c3$<oVnz3#L{%z1g%iL4N8<b^6KJ-o_ zhoqD!;67xq9}d7l(Crdi@rf%b+dOt4YsIn5-oky}RI(aI=(3g-nB{m~D&F}Oae*{_ zJ#H&CRo*%);yl@5WD_l>)4~1$#TL2W2wh*)*xo}+N~E-}UWopZ(S@w1(^rS;V?ruh zC0Fr_W!2M=t5+ZKBqCeNITBr#D237pC)(}`*m}uu@dl#K9@D6mnicoW-Z1x}!{s_0 zT@}q2J(4UTna_vnk5l^&GLS5iuk<se-bxOlX^s$0a}qU)L(?YEN4(nDUL79C(<?o8 zMd-0Ntbgo6e<f2%>9HeF52K%i>+$H`(t|z3=-0lGe%)UWboBN>>C=zt`m~M~mmaA4 zk%}FW0mt+FHG97sa#xviNWYYPrbsIy-k(I0r5r<BjQ(g?5z!bam#iYrQSo3q8WW7; z7xLYR0*Qq(+DOSLbbM3sV3o@gTYS^JFZAH`_28xV;HCG_qCR?@czvm$BC~3>p^&4h zmPT||X_Bg?Xp@SiOYOu~NUt=Dz$#ttiI@+HS2nO7I|Vt)j9#=={7u7}sk|rgGo`m3 z<e2m_RimEXUe>?mikziNt;}Yr;XO>`_7QUXFr;SU34a;p0gGkdMSoIqlQG8=sG*k{ zO8+;Dib?iXY}ss)o<^D;n~x=5%&a!C=8=)ZjXoJ8{tjmI0~zt>;T5&h7i9&mQeQ>S zLIR<gRXIe%bD4b^8C5dkucYmbncNz#m3c@J`-(wD)$8yCF44~}>9tVW%1n&$CTjKr z_cZfK?wvK|>@y4NpdQzu6K+5k+=RQ-CmtPIj}EQJqn43=J^3SpA%h3`{8y-Z<V@4- z86zV*^31bB^5`Th%ud`%yt<Qms|NjAx4udco`2<}B_-lx*YmFSvBt6=4uGs~s+JAr z$n|fJ`sQE8l0zkVj1{z81+7+r=h%P5O5$q4h?QYGtJoKP4N|T0shq5t^a;to%E5|A z-rN$#Cs~Qk=eOBP^hJ)%9Kgz)uXi>tF_O?x${3;4d_s8=Dlaj%Rk>)Mnwm32xBW6A z&C>gTlJ8z^5*}?P8Zy^EpBmcf>vqNfCzjT!=MDyS-5FRb8mhfX^r=+W2w5?cs7oc1 zt|UTMNrbGD2w5c&vPvRkk_FjcKA9a|cM?@`5>;^$RgrmK^!^;VX7oa!Cp-1{m8>DA zLg>@vF!n0zWz(N%4J8-ybQ_2ZY~;H<*(M0ij%8*b(X$G4-OiKQzUGrT7+Y+8o=nYR zZCEQC*2;#pvSF=kSSuT|SSOx?6VJhk=inswN$ix-2PUy6*hXTHB`;7t%{s=@2irzs zj|SF88G%}>%*XIr8=7U;+d$RW&IsZRXp_i%Fto{zHrdf8JKAJ7)uu!}e>R1zq+kwh zrS50nD~Gm>(bg=cCV8}@^pa&}d#{rED`jwf=23b+gJhrvt({~Ew`1w#KMm^iyoIgE z-`wKW^_jol&-~i(=RIVdWHM^y5LwCviDXH}t3<IRdUY78I9?4ka13g}2KAiR0FB^) zCTIq;NYX$fNOAN#nd!H%YL|>mQlS*?Z@jRe7m_z`SSrb&k_`F5X&cF_l+4!HGNdGP zBqWB<nuf}$zn=^#`A-zH45<%$qtt_yAr<@hr~YpzmOL_%6484krLS~+Bcvog^uY7T z9+s3I>C(M&5+C)rfn;ue6Q%U1$9*%b_qTW6b+0^D$q>1pJXZN%E+2EQU>@sW$x5x! zOC<GS%~1!d=0*<px3A{kUYS4qnp?Erk=1I^>h#aw@F}@o1Igf){?<2xyOe8#QKbH} zw<X##J|eR$_6)v(X6`+@(-N#u9x=Mm{Ks#v^g`|Z*L$Y>&jS1ZQ3AQ{%&!NYS#!xW zv&P6{TS*K;W!2Q_@rYnnP2C`5)u{iLl=#NrWYxqL3lXaoYgP>z5X3-ay-U__C4#*L zWK~=8+V>%SwIZ+9e`TFeRxSIBM)zI6@Djy%bQgJ}M)dgo|DD9f_i2|B*03Lh21Mow z4NjafvebcOA4xWXWCxjNA4Qh>VCoucsgf5HnK{un|0>o}!}D9DUq{R88k|xs{0~tY z@z+nuO#6)NlF!-3@k_o<#nY4hBe6s3-4@~5HR1IP&8`V%h?!^C7&&c5mRNt;HNhzM zqmsqm8#*zNET-7x9GZ>y;AB0Nz8?I~EaQppfA2J+{zfiKFqb))+orO)BXe1d8Hm)Q z0!@F=`7DMli<b2nnjI!B7nz@F<ZJcK`m|_Y(pN3o?|G-m*LmO8pZv{SEo&#dGl*~U z=CtAZTjO{KAo~(nL5U|nU@7~S^Y=2jnXmEwk9Fi*7w}(?f5VXy-V(P;+ok=8y}QZ3 zEYixfa`sm6zXMx&=iEEm5Aed?)plq{`1@P!1O9euNBP@Dc4nparuHlCU-%F3-)jHL z`}a=qwvM0hwvLP1-}B#*pKI^&e~w++Kl6T#f9H*Q|H)si_Iv(p+JEtPT>BG$C$vBF I_iIi2U-zL#8UO$Q literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Akkurat Light Regular.otf b/Unit-2-Journal/Unit-2-Journal/Akkurat Light Regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..dc9c1c983ff4631d4a06edf8369ca062966fd1f9 GIT binary patch literal 39808 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 literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Akkurat Regular.otf b/Unit-2-Journal/Unit-2-Journal/Akkurat Regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..a9673327d07b6af23ab3a177e1c1d5cfa789d0c2 GIT binary patch literal 40608 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 literal 0 HcmV?d00001 From b247ee33d24018a509d374639e396c45a5497ff1 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Sun, 18 Oct 2015 16:33:46 -0400 Subject: [PATCH 58/86] updated JS --- .../Unit-2-Journal/SearchAPITableViewCell.xib | 15 ++++++++++----- .../ViewCompletedEntryViewController.m | 14 ++++++++++++-- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib index 1460f76..cae8e4a 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -11,11 +11,12 @@ <rect key="frame" x="0.0" y="0.0" width="340" height="125"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> - <rect key="frame" x="0.0" y="0.0" width="340" height="124.5"/> + <rect key="frame" x="0.0" y="0.0" width="340" height="124"/> <autoresizingMask key="autoresizingMask"/> <subviews> - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Fq8-dI-Pdu"> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fq8-dI-Pdu"> <rect key="frame" x="18" y="33" width="60" height="60"/> + <animations/> <constraints> <constraint firstAttribute="width" constant="60" id="TzC-rK-Lse"/> <constraint firstAttribute="height" constant="60" id="VZE-5H-hlD"/> @@ -23,16 +24,19 @@ </imageView> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Author/Director/Artist" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="y9p-St-OV6"> <rect key="frame" x="86" y="62" width="254" height="46"/> + <animations/> <fontDescription key="fontDescription" type="system" pointSize="14"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TITLE" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Sl4-bL-ILp"> - <rect key="frame" x="86" y="16" width="254" height="46.5"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="TITLE" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Sl4-bL-ILp"> + <rect key="frame" x="86" y="16" width="254" height="47"/> + <animations/> <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/> <nil key="highlightedColor"/> </label> </subviews> + <animations/> <constraints> <constraint firstAttribute="bottomMargin" secondItem="y9p-St-OV6" secondAttribute="bottom" constant="8" id="77R-9I-uAO"/> <constraint firstItem="Fq8-dI-Pdu" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leadingMargin" constant="10" id="BKX-nf-3UF"/> @@ -54,6 +58,7 @@ </mask> </variation> </tableViewCellContentView> + <animations/> <accessibility key="accessibilityConfiguration" identifier=""/> <connections> <outlet property="artworkImage" destination="Fq8-dI-Pdu" id="vEj-X3-ezi"/> diff --git a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m index ae58175..f072982 100644 --- a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m @@ -26,11 +26,21 @@ @interface ViewCompletedEntryViewController () @implementation ViewCompletedEntryViewController -- (void)viewDidLoad -{ +- (void)viewDidLoad{ [super viewDidLoad]; NSLog(@"Journal Post passed: %@",self.journalPostDetail); + self.completedTitleLabel.text = self.journalPostDetail.title; + self.completedCreatorLabel.text = self.journalPostDetail.creator; + self.completedDateLabel.text = [NSString stringWithFormat:@"%@",self.journalPostDetail.dateEntered]; + self.completedReviewTextView.text = self.journalPostDetail.postText; + + NSURL *imageURL = [NSURL URLWithString:self.journalPostDetail.imageForMedia]; + NSData *imageData = [NSData dataWithContentsOfURL:imageURL]; + UIImage *image = [UIImage imageWithData:imageData]; + + self.completedImageView.image = image; + } - (void)didReceiveMemoryWarning From 9007a37ac9ccd4366f84f52577ecb6e8da505c3f Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 18 Oct 2015 16:35:24 -0400 Subject: [PATCH 59/86] added heading to storyboard --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 9 +++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index cb42c7f4b13e8d6d25ac5a3e4d97444a0791b64a..285658f0c141feda393c96102ea202d72a88b55c 100644 GIT binary patch delta 116 zcmZoMXffC@k(FuVm&yNGO!#y2U0hO1OOhEFE_tqDW0?Gp#dI<^8#jvw`+Nw;pN*G^ z;lboMw%JU*mXqVzEclSL*nN37*^%9q8ANYnv*ItvFbq!4&n;j8gAEf4O*gZ1{N)D# DGPNgA delta 119 zcmZoMXffC@k(KGN%;f(pCj7biE-ophCCLm7ms~7T87BW@F`dlK#?1of__OgcGEUye zW;J;_TM|>g{^WQz3qB-W_JU_8JF>engJ_^C{(=m{;N<+=0tPUcFtN~dGdss$egNS& BB)I?p diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 88dc2ea..3db7961 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -702,9 +702,14 @@ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <view key="tableHeaderView" contentMode="scaleToFill" id="t7Q-Vo-vCQ"> + <rect key="frame" x="0.0" y="0.0" width="600" height="158"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + </view> <prototypes> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="WishListIdentifier" rowHeight="64" id="Ej0-R4-rXa"> - <rect key="frame" x="0.0" y="28" width="600" height="64"/> + <rect key="frame" x="0.0" y="186" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> @@ -1012,6 +1017,6 @@ <image name="rating_star_filled" width="128" height="128"/> </resources> <inferredMetricsTieBreakers> - <segue reference="a4i-zx-cvK"/> + <segue reference="Ggq-sb-ccX"/> </inferredMetricsTieBreakers> </document> From 9795a58efb666f10600b33df31dbaeb7634dc0cd Mon Sep 17 00:00:00 2001 From: Brian <brianblanco1@gmail.comm> Date: Sun, 18 Oct 2015 16:49:30 -0400 Subject: [PATCH 60/86] launch screen text in progress --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 12 ++++-- .../Base.lproj/LaunchScreen.storyboard | 24 ++++++++--- Unit-2-Journal/Unit-2-Journal/CustomFont.h | 13 ++++++ Unit-2-Journal/Unit-2-Journal/CustomFont.m | 21 ++++++++++ .../Unit-2-Journal/CustomFontViewController.h | 13 ++++++ .../Unit-2-Journal/CustomFontViewController.m | 39 ++++++++++++++++++ Unit-2-Journal/Unit-2-Journal/Info.plist | 2 + 8 files changed, 116 insertions(+), 8 deletions(-) create mode 100644 Unit-2-Journal/Unit-2-Journal/CustomFont.h create mode 100644 Unit-2-Journal/Unit-2-Journal/CustomFont.m create mode 100644 Unit-2-Journal/Unit-2-Journal/CustomFontViewController.h create mode 100644 Unit-2-Journal/Unit-2-Journal/CustomFontViewController.m diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index cb42c7f4b13e8d6d25ac5a3e4d97444a0791b64a..64f212c9d3436bf4bb637de8730d49caaf1f7395 100644 GIT binary patch delta 28 kcmZoMXffFElZ~nR$mDo7i^<09^B5OQEHvHB&heKY0H3%Dng9R* delta 28 kcmZoMXffFElZ`1~e{wvV#bjgld5jY#7MgBm=lIJH0Fx;R=>Px# diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index eff69df..2e10f13 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -35,6 +35,7 @@ 5A6A22891BD43952006E9FE7 /* Akkurat Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 5A6A22861BD4394E006E9FE7 /* Akkurat Bold.otf */; settings = {ASSET_TAGS = (); }; }; 5A6A228A1BD43955006E9FE7 /* Akkurat Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 5A6A22871BD4394E006E9FE7 /* Akkurat Italic.otf */; settings = {ASSET_TAGS = (); }; }; 5A6A228B1BD43958006E9FE7 /* Akkurat Light Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 5A6A22881BD4394E006E9FE7 /* Akkurat Light Regular.otf */; settings = {ASSET_TAGS = (); }; }; + 5A6A22911BD43A4A006E9FE7 /* CustomFontViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A6A22901BD43A4A006E9FE7 /* CustomFontViewController.m */; settings = {ASSET_TAGS = (); }; }; 617F8769EFBE79517A02E6D0 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAF24AD380284C55768010A2 /* libPods.a */; }; 9A2937201BCC26FE00ACEEE0 /* JournalPost.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A29371F1BCC26FE00ACEEE0 /* JournalPost.m */; settings = {ASSET_TAGS = (); }; }; 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC2E1BC84BF200E880D3 /* main.m */; }; @@ -90,6 +91,8 @@ 5A6A22861BD4394E006E9FE7 /* Akkurat Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Akkurat Bold.otf"; sourceTree = "<group>"; }; 5A6A22871BD4394E006E9FE7 /* Akkurat Italic.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Akkurat Italic.otf"; sourceTree = "<group>"; }; 5A6A22881BD4394E006E9FE7 /* Akkurat Light Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Akkurat Light Regular.otf"; sourceTree = "<group>"; }; + 5A6A228F1BD43A4A006E9FE7 /* CustomFontViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomFontViewController.h; sourceTree = "<group>"; }; + 5A6A22901BD43A4A006E9FE7 /* CustomFontViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomFontViewController.m; sourceTree = "<group>"; }; 9A29371E1BCC26FE00ACEEE0 /* JournalPost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalPost.h; sourceTree = "<group>"; }; 9A29371F1BCC26FE00ACEEE0 /* JournalPost.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalPost.m; sourceTree = "<group>"; }; 9A2FFC2A1BC84BF200E880D3 /* Unit-2-Journal.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Unit-2-Journal.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -195,6 +198,8 @@ 9A2FFC361BC84BF200E880D3 /* Main.storyboard */, 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */, 9A2FFC3E1BC84BF200E880D3 /* LaunchScreen.storyboard */, + 5A6A228F1BD43A4A006E9FE7 /* CustomFontViewController.h */, + 5A6A22901BD43A4A006E9FE7 /* CustomFontViewController.m */, 9A2FFC411BC84BF200E880D3 /* Info.plist */, 9A2FFC391BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld */, 9A2FFC2D1BC84BF200E880D3 /* Supporting Files */, @@ -290,7 +295,7 @@ TargetAttributes = { 9A2FFC291BC84BF100E880D3 = { CreatedOnToolsVersion = 7.0; - DevelopmentTeam = 5F2A5ZZ575; + DevelopmentTeam = Z6GBYPK592; }; }; }; @@ -396,6 +401,7 @@ files = ( 9A2FFC321BC84BF200E880D3 /* AppDelegate.m in Sources */, 9A34656D1BCACDF40049337C /* iTunesSearchResult.m in Sources */, + 5A6A22911BD43A4A006E9FE7 /* CustomFontViewController.m in Sources */, 4D7FE2941BCC12050036E58E /* TabBarViewController.m in Sources */, 4DCBE14A1BC9ADAE0075BA2C /* CreateJournalEntryViewController.m in Sources */, 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */, @@ -529,7 +535,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.shenayoshida.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.brianblanco.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; @@ -545,7 +551,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.shenayoshida.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.brianblanco.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard index 06e4fc2..1dc9b95 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard @@ -2,12 +2,18 @@ <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> + <capability name="Aspect ratio constraints" minToolsVersion="5.1"/> </dependencies> + <customFonts key="customFonts"> + <mutableArray key="Akkurat Light Regular.otf"> + <string>AkkuratLight</string> + </mutableArray> + </customFonts> <scenes> - <!--View Controller--> + <!--Custom Font View Controller--> <scene sceneID="EHf-IW-A2E"> <objects> - <viewController id="01J-lp-oVM" sceneMemberID="viewController"> + <viewController id="01J-lp-oVM" customClass="CustomFontViewController" sceneMemberID="viewController"> <layoutGuides> <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/> <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/> @@ -22,11 +28,11 @@ <constraints> <constraint firstAttribute="height" constant="142" id="DJr-5U-LGO"/> <constraint firstAttribute="width" constant="305" id="T3c-iU-jOA"/> + <constraint firstAttribute="width" secondItem="j2q-Vy-UO8" secondAttribute="height" multiplier="305:142" id="odS-3V-kuc"/> </constraints> - <fontDescription key="fontDescription" name="IowanOldStyle-Roman" family="Iowan Old Style" pointSize="100"/> + <fontDescription key="fontDescription" name="AkkuratLight" family="Akkurat Light" pointSize="100"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> - <color key="highlightedColor" red="0.40000000600000002" green="0.40000000600000002" blue="0.40000000600000002" alpha="1" colorSpace="calibratedRGB"/> - <color key="shadowColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/> + <nil key="highlightedColor"/> <size key="shadowOffset" width="2" height="-1"/> </label> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rating_star_filled" translatesAutoresizingMaskIntoConstraints="NO" id="r92-Pp-sGu"> @@ -35,12 +41,14 @@ <constraints> <constraint firstAttribute="width" constant="60" id="0Kv-zE-laH"/> <constraint firstAttribute="height" constant="60" id="Gy3-sl-70j"/> + <constraint firstAttribute="width" secondItem="r92-Pp-sGu" secondAttribute="height" multiplier="1:1" id="Iuu-nz-EgZ"/> </constraints> </imageView> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rating_star_filled" translatesAutoresizingMaskIntoConstraints="NO" id="ziX-3c-ZhK"> <rect key="frame" x="270" y="278" width="60" height="60"/> <animations/> <constraints> + <constraint firstAttribute="width" secondItem="ziX-3c-ZhK" secondAttribute="height" multiplier="1:1" id="5Zf-Gi-HjR"/> <constraint firstAttribute="height" constant="60" id="XtN-IC-I2J"/> <constraint firstAttribute="width" constant="60" id="g7o-8m-NZF"/> </constraints> @@ -50,6 +58,7 @@ <animations/> <constraints> <constraint firstAttribute="height" constant="60" id="B7e-84-ide"/> + <constraint firstAttribute="width" secondItem="0L6-ec-PpF" secondAttribute="height" multiplier="1:1" id="RIg-fd-gVX"/> <constraint firstAttribute="width" constant="60" id="cVT-nK-qtc"/> </constraints> </imageView> @@ -57,6 +66,7 @@ <rect key="frame" x="207" y="278" width="60" height="60"/> <animations/> <constraints> + <constraint firstAttribute="width" secondItem="Hd4-1H-gES" secondAttribute="height" multiplier="1:1" id="8E2-7l-5Jg"/> <constraint firstAttribute="height" constant="60" id="Uc8-zf-puh"/> <constraint firstAttribute="width" constant="60" id="hEI-nU-1lO"/> </constraints> @@ -66,6 +76,7 @@ <animations/> <constraints> <constraint firstAttribute="height" constant="60" id="Oii-Sw-U6V"/> + <constraint firstAttribute="width" secondItem="6el-0s-hhb" secondAttribute="height" multiplier="1:1" id="Zjy-QC-m00"/> <constraint firstAttribute="width" constant="60" id="fEz-kV-Ad3"/> </constraints> </imageView> @@ -88,6 +99,9 @@ <constraint firstItem="j2q-Vy-UO8" firstAttribute="top" secondItem="Llm-lL-Icb" secondAttribute="bottom" constant="126" id="ucC-Ud-8N3"/> </constraints> </view> + <connections> + <outlet property="launchLabel" destination="j2q-Vy-UO8" id="ypS-04-noB"/> + </connections> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> diff --git a/Unit-2-Journal/Unit-2-Journal/CustomFont.h b/Unit-2-Journal/Unit-2-Journal/CustomFont.h new file mode 100644 index 0000000..ac74ad8 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/CustomFont.h @@ -0,0 +1,13 @@ +// +// CustomFont.h +// Unit-2-Journal +// +// Created by Brian Blanco on 10/18/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface CustomFont : UIView + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/CustomFont.m b/Unit-2-Journal/Unit-2-Journal/CustomFont.m new file mode 100644 index 0000000..3cfaaa8 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/CustomFont.m @@ -0,0 +1,21 @@ +// +// CustomFont.m +// Unit-2-Journal +// +// Created by Brian Blanco on 10/18/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "CustomFont.h" + +@implementation CustomFont + +/* +// Only override drawRect: if you perform custom drawing. +// An empty implementation adversely affects performance during animation. +- (void)drawRect:(CGRect)rect { + // Drawing code +} +*/ + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/CustomFontViewController.h b/Unit-2-Journal/Unit-2-Journal/CustomFontViewController.h new file mode 100644 index 0000000..9e7c667 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/CustomFontViewController.h @@ -0,0 +1,13 @@ +// +// CustomFontViewController.h +// Unit-2-Journal +// +// Created by Brian Blanco on 10/18/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface CustomFontViewController : UIViewController + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/CustomFontViewController.m b/Unit-2-Journal/Unit-2-Journal/CustomFontViewController.m new file mode 100644 index 0000000..d73d2ac --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/CustomFontViewController.m @@ -0,0 +1,39 @@ +// +// CustomFontViewController.m +// Unit-2-Journal +// +// Created by Brian Blanco on 10/18/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "CustomFontViewController.h" + +@interface CustomFontViewController () + +@property (weak, nonatomic) IBOutlet UILabel *launchLabel; + +@end + +@implementation CustomFontViewController + + +- (void)viewDidLoad { + [super viewDidLoad]; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/Info.plist b/Unit-2-Journal/Unit-2-Journal/Info.plist index af66eeb..6e0f4ff 100644 --- a/Unit-2-Journal/Unit-2-Journal/Info.plist +++ b/Unit-2-Journal/Unit-2-Journal/Info.plist @@ -71,6 +71,8 @@ <key>UIAppFonts</key> <array> <string>basictitlefont.ttf</string> + <string>Akkurat Light Regular.otf</string> + <string>Akkurat Bold.otf</string> </array> <key>UILaunchStoryboardName</key> <string>LaunchScreen</string> From a98cc0cea830b7888eb679f0a60f5d879413567a Mon Sep 17 00:00:00 2001 From: Brian <brianblanco1@gmail.comm> Date: Sun, 18 Oct 2015 16:51:01 -0400 Subject: [PATCH 61/86] in progress --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 64f212c9d3436bf4bb637de8730d49caaf1f7395..472a22df51ad09b6b095357da2fdfa3b620e270b 100644 GIT binary patch delta 19 acmZoMXffFElZ~lr+T?gPi_OOD7X<)JAO|P_ delta 19 acmZoMXffFElZ~nR$mDo7i_OOD7X<)K_Xk%1 From 796ac656757d4777449655dc84dc7a056dbf890a Mon Sep 17 00:00:00 2001 From: Brian <brianblanco1@gmail.comm> Date: Sun, 18 Oct 2015 16:51:36 -0400 Subject: [PATCH 62/86] in progress --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 472a22df51ad09b6b095357da2fdfa3b620e270b..abb78f9eba9b6ead6ada67ec04cfadf3328351ea 100644 GIT binary patch delta 18 ZcmZoMXffFEi;Z#e<ajoV&Bp8(1pq^=2CD!7 delta 18 ZcmZoMXffFEi;Z#G<ajoV&Bp8(1pq_J2Ce`A From f913a3397e025a1d2064851d407fffaabccbd26a Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 18 Oct 2015 16:56:34 -0400 Subject: [PATCH 63/86] storyboard changed --- .../Base.lproj/LaunchScreen.storyboard | 28 ++--- .../Unit-2-Journal/Base.lproj/Main.storyboard | 119 +++++++++--------- 2 files changed, 77 insertions(+), 70 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard index 06e4fc2..916b166 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> </dependencies> @@ -16,19 +16,6 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Rate It" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="j2q-Vy-UO8"> - <rect key="frame" x="148" y="146" width="305" height="142"/> - <animations/> - <constraints> - <constraint firstAttribute="height" constant="142" id="DJr-5U-LGO"/> - <constraint firstAttribute="width" constant="305" id="T3c-iU-jOA"/> - </constraints> - <fontDescription key="fontDescription" name="IowanOldStyle-Roman" family="Iowan Old Style" pointSize="100"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> - <color key="highlightedColor" red="0.40000000600000002" green="0.40000000600000002" blue="0.40000000600000002" alpha="1" colorSpace="calibratedRGB"/> - <color key="shadowColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/> - <size key="shadowOffset" width="2" height="-1"/> - </label> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rating_star_filled" translatesAutoresizingMaskIntoConstraints="NO" id="r92-Pp-sGu"> <rect key="frame" x="148" y="278" width="60" height="60"/> <animations/> @@ -69,6 +56,19 @@ <constraint firstAttribute="width" constant="60" id="fEz-kV-Ad3"/> </constraints> </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Rate It" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="j2q-Vy-UO8"> + <rect key="frame" x="148" y="146" width="305" height="142"/> + <animations/> + <constraints> + <constraint firstAttribute="height" constant="142" id="DJr-5U-LGO"/> + <constraint firstAttribute="width" constant="305" id="T3c-iU-jOA"/> + </constraints> + <fontDescription key="fontDescription" name="IowanOldStyle-Roman" family="Iowan Old Style" pointSize="100"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <color key="highlightedColor" red="0.40000000600000002" green="0.40000000600000002" blue="0.40000000600000002" alpha="1" colorSpace="calibratedRGB"/> + <color key="shadowColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/> + <size key="shadowOffset" width="2" height="-1"/> + </label> </subviews> <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 3db7961..fed289a 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -810,65 +810,21 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2sS-fd-D0X"> - <rect key="frame" x="20" y="20" width="560" height="140"/> - <subviews> - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="P8h-8Q-AZm"> - <rect key="frame" x="0.0" y="5" width="130" height="130"/> - <animations/> - <constraints> - <constraint firstAttribute="width" constant="130" id="T4f-sf-dem"/> - <constraint firstAttribute="height" constant="130" id="ZGH-hy-6dT"/> - </constraints> - </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="characterWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uPb-Kv-PyA"> - <rect key="frame" x="145" y="5" width="415" height="30"/> - <animations/> - <fontDescription key="fontDescription" type="boldSystem" pointSize="25"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> - <nil key="highlightedColor"/> - </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eHa-Fq-bcU"> - <rect key="frame" x="145" y="111" width="415" height="24"/> - <animations/> - <fontDescription key="fontDescription" type="system" pointSize="20"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> - <nil key="highlightedColor"/> - </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RUW-ww-VHC"> - <rect key="frame" x="145" y="58" width="415" height="24"/> - <animations/> - <fontDescription key="fontDescription" type="system" pointSize="20"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> - <nil key="highlightedColor"/> - </label> - </subviews> - <animations/> - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> - <constraints> - <constraint firstItem="P8h-8Q-AZm" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="top" constant="5" id="4Iw-Mk-e5C"/> - <constraint firstItem="eHa-Fq-bcU" firstAttribute="bottom" secondItem="P8h-8Q-AZm" secondAttribute="bottom" id="9Ij-qz-1nr"/> - <constraint firstItem="eHa-Fq-bcU" firstAttribute="leading" secondItem="P8h-8Q-AZm" secondAttribute="trailing" constant="15" id="AOR-fg-jjQ"/> - <constraint firstItem="RUW-ww-VHC" firstAttribute="centerY" secondItem="P8h-8Q-AZm" secondAttribute="centerY" id="B8H-cZ-Twb"/> - <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerY" secondItem="2sS-fd-D0X" secondAttribute="centerY" id="IsG-6d-QoO"/> - <constraint firstItem="uPb-Kv-PyA" firstAttribute="top" secondItem="P8h-8Q-AZm" secondAttribute="top" id="RKA-2y-eIC"/> - <constraint firstAttribute="bottom" secondItem="P8h-8Q-AZm" secondAttribute="bottom" constant="5" id="UCI-7U-pf5"/> - <constraint firstAttribute="trailing" secondItem="eHa-Fq-bcU" secondAttribute="trailing" id="gYy-RN-0dc"/> - <constraint firstItem="uPb-Kv-PyA" firstAttribute="leading" secondItem="P8h-8Q-AZm" secondAttribute="trailing" constant="15" id="gwF-Qt-P6G"/> - <constraint firstItem="P8h-8Q-AZm" firstAttribute="leading" secondItem="2sS-fd-D0X" secondAttribute="leading" id="nTp-YF-tYN"/> - <constraint firstAttribute="trailing" secondItem="RUW-ww-VHC" secondAttribute="trailing" id="p8j-yz-JRL"/> - <constraint firstItem="RUW-ww-VHC" firstAttribute="leading" secondItem="P8h-8Q-AZm" secondAttribute="trailing" constant="15" id="wQg-ht-nEO"/> - <constraint firstAttribute="trailing" secondItem="uPb-Kv-PyA" secondAttribute="trailing" id="yeu-We-Dj2"/> - </constraints> - </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bI1-9Y-Lhn"> - <rect key="frame" x="20" y="160" width="560" height="250"/> + <rect key="frame" x="20" y="145" width="560" height="265"/> <subviews> - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> - <rect key="frame" x="5" y="5" width="550" height="240"/> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" usesAttributedText="YES" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> + <rect key="frame" x="5" y="5" width="550" height="255"/> <animations/> - <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <attributedString key="attributedText"> + <fragment> + <string key="content">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string> + <attributes> + <font key="NSFont" size="14" name="HelveticaNeue"/> + <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural"/> + </attributes> + </fragment> + </attributedString> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> </textView> </subviews> @@ -951,6 +907,57 @@ </mask> </variation> </view> + <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2sS-fd-D0X"> + <rect key="frame" x="20" y="20" width="560" height="130"/> + <subviews> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="P8h-8Q-AZm"> + <rect key="frame" x="0.0" y="5" width="120" height="120"/> + <animations/> + <constraints> + <constraint firstAttribute="width" constant="120" id="T4f-sf-dem"/> + <constraint firstAttribute="height" constant="120" id="ZGH-hy-6dT"/> + </constraints> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Title" lineBreakMode="characterWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uPb-Kv-PyA"> + <rect key="frame" x="128" y="8" width="425" height="19.5"/> + <animations/> + <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eHa-Fq-bcU"> + <rect key="frame" x="128" y="103" width="424" height="17"/> + <animations/> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RUW-ww-VHC"> + <rect key="frame" x="128" y="69" width="425" height="17"/> + <animations/> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <animations/> + <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="top" constant="5" id="4Iw-Mk-e5C"/> + <constraint firstItem="eHa-Fq-bcU" firstAttribute="bottom" secondItem="P8h-8Q-AZm" secondAttribute="bottom" id="Chb-Da-5rL"/> + <constraint firstAttribute="trailing" secondItem="eHa-Fq-bcU" secondAttribute="trailing" constant="8" id="Hpo-YO-zPa"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerY" secondItem="2sS-fd-D0X" secondAttribute="centerY" id="IsG-6d-QoO"/> + <constraint firstAttribute="bottom" secondItem="P8h-8Q-AZm" secondAttribute="bottom" constant="5" id="UCI-7U-pf5"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="leading" secondItem="2sS-fd-D0X" secondAttribute="leading" id="nTp-YF-tYN"/> + <constraint firstItem="eHa-Fq-bcU" firstAttribute="leading" secondItem="P8h-8Q-AZm" secondAttribute="trailing" constant="8" id="nZv-l4-XuW"/> + <constraint firstAttribute="height" constant="125" id="pV2-le-mwS"/> + </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="4Iw-Mk-e5C"/> + </mask> + </variation> + </view> </subviews> <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> From 4dedc766347bc71fab646537198eb5bd6349e467 Mon Sep 17 00:00:00 2001 From: Brian <brianblanco1@gmail.comm> Date: Sun, 18 Oct 2015 16:57:56 -0400 Subject: [PATCH 64/86] took off class from launch screen --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Base.lproj/LaunchScreen.storyboard | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index abb78f9eba9b6ead6ada67ec04cfadf3328351ea..a8fdbd0108b11bbc681d23cb6290f00891f7c690 100644 GIT binary patch delta 19 acmZoMXffFElZ~k+b8<YJ#b#snivj>jbO!wZ delta 19 acmZoMXffFElZ~lr^5l3ni_OOD7X<)J0tY1k diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard index 1dc9b95..b0bd4a7 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard @@ -10,10 +10,10 @@ </mutableArray> </customFonts> <scenes> - <!--Custom Font View Controller--> + <!--View Controller--> <scene sceneID="EHf-IW-A2E"> <objects> - <viewController id="01J-lp-oVM" customClass="CustomFontViewController" sceneMemberID="viewController"> + <viewController id="01J-lp-oVM" sceneMemberID="viewController"> <layoutGuides> <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/> <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/> From e7638b809005ad9c34119ac72d28a0682d2c68ec Mon Sep 17 00:00:00 2001 From: Brian <brianblanco1@gmail.comm> Date: Sun, 18 Oct 2015 17:17:56 -0400 Subject: [PATCH 65/86] fixed launchscreen error --- .DS_Store | Bin 8196 -> 8196 bytes Unit-2-Journal/.DS_Store | Bin 6148 -> 8196 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 16 +-- Unit-2-Journal/Unit-2-Journal/.DS_Store | Bin 12292 -> 12292 bytes .../Unit-2-Journal/Base.lproj/.DS_Store | Bin 6148 -> 6148 bytes .../Base.lproj/LaunchScreen.storyboard | 130 ------------------ .../Unit-2-Journal/LaunchScreen.Storyboard | 7 + 7 files changed, 11 insertions(+), 142 deletions(-) delete mode 100644 Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard create mode 100644 Unit-2-Journal/Unit-2-Journal/LaunchScreen.Storyboard diff --git a/.DS_Store b/.DS_Store index 230b4e2a70d055d8f79ad89ebfd4c53ba322ebc3..6a68428d6c704f2cf4af33a8654468e0a3dc9c06 100644 GIT binary patch delta 21 ccmZp1XmQx^Qjo*Y#8gMY$k1f-M?qme08hCFjsO4v delta 21 ccmZp1XmQx^Qjo*Q)Ko{o$kc4}M?qme08jb`mH+?% diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 32fa9a5e37186baa69d90532a2fe7e588511d831..ac8e2dc9abb66bf69851fea5dc04aeba414c6795 100644 GIT binary patch delta 914 zcmZWo&rcIU6n;ZX+1f(4rNu%pR(rq%V#@E6p_Uj$4lT4oD`2zR9m>RIrtWU3*pPDI zY|^YhxsrG#rka?Tcrf8lFd<&NdGg>%FD5wKZGmVeyWh8OzW3hF_cD92y?7V^P@=4i z0$5bwkA<SA{;02h{R#@aO?`AUBElcXL6;!ZcbzC;dYzxWT;n=9;ctK*^RjEOCRg;5 ztTLGgzRM+*=teAdj5-|7PFI)UzF;k%do8`eDrrM9%6dZ5R+?W#!E%eIBx9q^GmNRH zT#}avuH?nwETe`*DAvxUt}YX*)L13K%2d(wVko8IEiO+<6fY5-$V4T^w&1o_UJO^O zW0R93k+I3Cosmd&dO9`|nHZni*%5^Pq4AmdWm+|#J%91?)$4c7(*Z&@g1?1rc+W`> z+ye>(40Fg8>{j%GD)axg6t*j*u+?$}eQLY%O%%_3@p!v?e4;<l>ks-vp}vdZQ2)Td zU|#H%rNYCaW*upksZ2|#Wt=4iM$_a8&Kmf!VUfHT_(!*hl?P{`T4uY%MZvR3v)FA7 zW4cn*h>~1i*Rhd3$8&knrx!G)swt)ugD{#~)%n!s47@o<*BNhVnVT$GTlx~#bdLY! zWOI_HNwikPiS0F2lChek31%2<(~?@{_)%JOYBo=oqynME=*&;s-e^44Cf95tLewSz z(fE{21rcQ^quA|^#^+nR0t~}VxC?36fQ1S?g?)GfAK(bS!Vma`oTv|7MZ;(U-9R(w z4q8BqD1&n7K3cI0bhPJvsol;-q;PCb)w`9}sLE)O2T<e0d5BO~<It5w_1$B?!&Zkq o9B)|{so@uXJ4|12&P;j*ffu*#7?^qQzS+?^YI<A;r`ccr0;`SiivR!s delta 137 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$jHAjU^g=(|70G4L+t;-fMK$L zkm6(xA)d)hqK2EJMXDK@ng9Qvyiv?*v#^*9<6?FW4nbz15kMfo4J2Garfn?z&ODi4 V#uH>V0~5p^kkt&E<9X&V0|0(79Yg>C diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 2e10f13..03cfba8 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -36,6 +36,7 @@ 5A6A228A1BD43955006E9FE7 /* Akkurat Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 5A6A22871BD4394E006E9FE7 /* Akkurat Italic.otf */; settings = {ASSET_TAGS = (); }; }; 5A6A228B1BD43958006E9FE7 /* Akkurat Light Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 5A6A22881BD4394E006E9FE7 /* Akkurat Light Regular.otf */; settings = {ASSET_TAGS = (); }; }; 5A6A22911BD43A4A006E9FE7 /* CustomFontViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A6A22901BD43A4A006E9FE7 /* CustomFontViewController.m */; settings = {ASSET_TAGS = (); }; }; + 5AE959A11BD442C1007136F4 /* LaunchScreen.Storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5AE959A01BD442C1007136F4 /* LaunchScreen.Storyboard */; settings = {ASSET_TAGS = (); }; }; 617F8769EFBE79517A02E6D0 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAF24AD380284C55768010A2 /* libPods.a */; }; 9A2937201BCC26FE00ACEEE0 /* JournalPost.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A29371F1BCC26FE00ACEEE0 /* JournalPost.m */; settings = {ASSET_TAGS = (); }; }; 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC2E1BC84BF200E880D3 /* main.m */; }; @@ -43,7 +44,6 @@ 9A2FFC381BC84BF200E880D3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A2FFC361BC84BF200E880D3 /* Main.storyboard */; }; 9A2FFC3B1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC391BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld */; }; 9A2FFC3D1BC84BF200E880D3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */; }; - 9A2FFC401BC84BF200E880D3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A2FFC3E1BC84BF200E880D3 /* LaunchScreen.storyboard */; }; 9A34656D1BCACDF40049337C /* iTunesSearchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A34656C1BCACDF40049337C /* iTunesSearchResult.m */; settings = {ASSET_TAGS = (); }; }; 9AAB40061BC9FABC00FD7227 /* APIManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AAB40051BC9FABC00FD7227 /* APIManager.m */; settings = {ASSET_TAGS = (); }; }; /* End PBXBuildFile section */ @@ -93,6 +93,7 @@ 5A6A22881BD4394E006E9FE7 /* Akkurat Light Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Akkurat Light Regular.otf"; sourceTree = "<group>"; }; 5A6A228F1BD43A4A006E9FE7 /* CustomFontViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomFontViewController.h; sourceTree = "<group>"; }; 5A6A22901BD43A4A006E9FE7 /* CustomFontViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomFontViewController.m; sourceTree = "<group>"; }; + 5AE959A01BD442C1007136F4 /* LaunchScreen.Storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.Storyboard; sourceTree = "<group>"; }; 9A29371E1BCC26FE00ACEEE0 /* JournalPost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalPost.h; sourceTree = "<group>"; }; 9A29371F1BCC26FE00ACEEE0 /* JournalPost.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalPost.m; sourceTree = "<group>"; }; 9A2FFC2A1BC84BF200E880D3 /* Unit-2-Journal.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Unit-2-Journal.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -102,7 +103,6 @@ 9A2FFC371BC84BF200E880D3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; 9A2FFC3A1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Unit_2_Journal.xcdatamodel; sourceTree = "<group>"; }; 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; - 9A2FFC3F1BC84BF200E880D3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 9A2FFC411BC84BF200E880D3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 9A34656B1BCACDF40049337C /* iTunesSearchResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iTunesSearchResult.h; sourceTree = "<group>"; }; 9A34656C1BCACDF40049337C /* iTunesSearchResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iTunesSearchResult.m; sourceTree = "<group>"; }; @@ -197,7 +197,7 @@ 9AAB40021BC9EC7300FD7227 /* ViewControllers */, 9A2FFC361BC84BF200E880D3 /* Main.storyboard */, 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */, - 9A2FFC3E1BC84BF200E880D3 /* LaunchScreen.storyboard */, + 5AE959A01BD442C1007136F4 /* LaunchScreen.Storyboard */, 5A6A228F1BD43A4A006E9FE7 /* CustomFontViewController.h */, 5A6A22901BD43A4A006E9FE7 /* CustomFontViewController.m */, 9A2FFC411BC84BF200E880D3 /* Info.plist */, @@ -324,8 +324,8 @@ files = ( 5A6A22811BD3FE31006E9FE7 /* basictitlefont.ttf in Resources */, 4DCBE13F1BC9943D0075BA2C /* lean_startup.png in Resources */, + 5AE959A11BD442C1007136F4 /* LaunchScreen.Storyboard in Resources */, 5A6A228A1BD43955006E9FE7 /* Akkurat Italic.otf in Resources */, - 9A2FFC401BC84BF200E880D3 /* LaunchScreen.storyboard in Resources */, 4D7FE2A61BCC41A00036E58E /* WishListTableViewCell.xib in Resources */, 4D7FE29E1BCC32170036E58E /* SearchAPITableViewCell.xib in Resources */, 4DCBE1441BC9943D0075BA2C /* x-files.png in Resources */, @@ -432,14 +432,6 @@ name = Main.storyboard; sourceTree = "<group>"; }; - 9A2FFC3E1BC84BF200E880D3 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 9A2FFC3F1BC84BF200E880D3 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = "<group>"; - }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ diff --git a/Unit-2-Journal/Unit-2-Journal/.DS_Store b/Unit-2-Journal/Unit-2-Journal/.DS_Store index 7d5541670a4bcd2f65eed797c2d65c87c8070381..6d4848b28d2a9df025956adf371120b0e276e9ac 100644 GIT binary patch delta 996 zcmZokXi1nL&Db_k##q#efq{XUfkA+QA&nuQL64z;A%`JzvLK`KWCI-*Rz{#K%VbRz z^UYxr4(yxRIaoLtH8#hpOktilA!y<R)5!~z`8Nj$T;;Bp1gaEZaAe2^!cvAJhD3%E z1_cHupqV)gDL`}cf&4Vjoc!dZoctuPS_TF;1_suQ|6l+VVPFu#(C-P<l?ZYXLoyCC z&Opql2blskL=wXgAE5Shh77QSf*4YP>{6hSi9knUbrxd~nzMv4OvE%r9K&~vH$cWr zwoy=?tgi5%1?V=W$!`?YCRZu0W-~R_Q7|%{tgYlS`LlvNPg!tLUQT{qI#3PcWIaWF zM&`+Jit3C{C$}li<`l24Hnud^QLq3iS76*c*+)s9aSKqD#N-ww6Wc_FVsPM;0Lc=d zuTsI$m<MF*0WpT7z(IZk9OA&x+PqPTpV6C#!5J7J#X!aR47orB`3w;48ECNu3Te1j zpi{Bvn|xkPR239_$m*o9nLoKvS$=Yyy08*aN{yJ<JSJ~dE}i^WSWyOOH7gJUfd)5_ oa0RA29w6Puz@WgrS&;EP^JIP<U2w`hFxggT&*TM45+g8}07SwC+5i9m delta 223 zcmZokXi1nL&DcIs##q#xfq{XUfkA+QA(J7GA%r23A&DVp;zi}j20ARPj6g}2$qR&o zCf6w{Z@k3BzL}kag@aKVC}cXBUx<IRnaEY{jSrqN1BDV4r6(^H6rLQW_=e>_5KP{q zEHinDvN$6nkflDkTxkKDxv7qVk?~|%WtYi^l|?5%R595csmj4Pxl%oA;zYB_;Q|_) z%>^=<Co>8O%K&X=1!5r3;06+|KqvA5>2?MN1@4U(-!o6<*U@EUnCz&tXYx5g-N~I& N5}V%&Y-R%K1pp4nJ+uG- diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/.DS_Store b/Unit-2-Journal/Unit-2-Journal/Base.lproj/.DS_Store index 11afc076d5ab1e8ad98ce7512df635efb0f87d04..bdbe8ca501818d56545037d6bde62dea08f24914 100644 GIT binary patch delta 17 YcmZoMXffCj#K^+Hz`(RQjB%Y904an7KmY&$ delta 17 XcmZoMXffCj#K`g=2sVc?t`h?QM_LFv diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index 78fd440..0000000 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,130 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> - <dependencies> - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> - <capability name="Aspect ratio constraints" minToolsVersion="5.1"/> - </dependencies> - <customFonts key="customFonts"> - <mutableArray key="Akkurat Light Regular.otf"> - <string>AkkuratLight</string> - </mutableArray> - </customFonts> - <scenes> - <!--View Controller--> - <scene sceneID="EHf-IW-A2E"> - <objects> - <viewController id="01J-lp-oVM" sceneMemberID="viewController"> - <layoutGuides> - <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/> - <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/> - </layoutGuides> - <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> - <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> - <subviews> -<<<<<<< HEAD -======= - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Rate It" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="j2q-Vy-UO8"> - <rect key="frame" x="148" y="146" width="305" height="142"/> - <animations/> - <constraints> - <constraint firstAttribute="height" constant="142" id="DJr-5U-LGO"/> - <constraint firstAttribute="width" constant="305" id="T3c-iU-jOA"/> - <constraint firstAttribute="width" secondItem="j2q-Vy-UO8" secondAttribute="height" multiplier="305:142" id="odS-3V-kuc"/> - </constraints> - <fontDescription key="fontDescription" name="AkkuratLight" family="Akkurat Light" pointSize="100"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> - <nil key="highlightedColor"/> - <size key="shadowOffset" width="2" height="-1"/> - </label> ->>>>>>> 7a8bb9c910214440048cd404750a5f88926cf49e - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rating_star_filled" translatesAutoresizingMaskIntoConstraints="NO" id="r92-Pp-sGu"> - <rect key="frame" x="148" y="278" width="60" height="60"/> - <animations/> - <constraints> - <constraint firstAttribute="width" constant="60" id="0Kv-zE-laH"/> - <constraint firstAttribute="height" constant="60" id="Gy3-sl-70j"/> - <constraint firstAttribute="width" secondItem="r92-Pp-sGu" secondAttribute="height" multiplier="1:1" id="Iuu-nz-EgZ"/> - </constraints> - </imageView> - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rating_star_filled" translatesAutoresizingMaskIntoConstraints="NO" id="ziX-3c-ZhK"> - <rect key="frame" x="270" y="278" width="60" height="60"/> - <animations/> - <constraints> - <constraint firstAttribute="width" secondItem="ziX-3c-ZhK" secondAttribute="height" multiplier="1:1" id="5Zf-Gi-HjR"/> - <constraint firstAttribute="height" constant="60" id="XtN-IC-I2J"/> - <constraint firstAttribute="width" constant="60" id="g7o-8m-NZF"/> - </constraints> - </imageView> - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rating_star_filled" translatesAutoresizingMaskIntoConstraints="NO" id="0L6-ec-PpF"> - <rect key="frame" x="332" y="278" width="60" height="60"/> - <animations/> - <constraints> - <constraint firstAttribute="height" constant="60" id="B7e-84-ide"/> - <constraint firstAttribute="width" secondItem="0L6-ec-PpF" secondAttribute="height" multiplier="1:1" id="RIg-fd-gVX"/> - <constraint firstAttribute="width" constant="60" id="cVT-nK-qtc"/> - </constraints> - </imageView> - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rating_star_filled" translatesAutoresizingMaskIntoConstraints="NO" id="Hd4-1H-gES"> - <rect key="frame" x="207" y="278" width="60" height="60"/> - <animations/> - <constraints> - <constraint firstAttribute="width" secondItem="Hd4-1H-gES" secondAttribute="height" multiplier="1:1" id="8E2-7l-5Jg"/> - <constraint firstAttribute="height" constant="60" id="Uc8-zf-puh"/> - <constraint firstAttribute="width" constant="60" id="hEI-nU-1lO"/> - </constraints> - </imageView> - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rating_star_filled" translatesAutoresizingMaskIntoConstraints="NO" id="6el-0s-hhb"> - <rect key="frame" x="393" y="278" width="60" height="60"/> - <animations/> - <constraints> - <constraint firstAttribute="height" constant="60" id="Oii-Sw-U6V"/> - <constraint firstAttribute="width" secondItem="6el-0s-hhb" secondAttribute="height" multiplier="1:1" id="Zjy-QC-m00"/> - <constraint firstAttribute="width" constant="60" id="fEz-kV-Ad3"/> - </constraints> - </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Rate It" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="j2q-Vy-UO8"> - <rect key="frame" x="148" y="146" width="305" height="142"/> - <animations/> - <constraints> - <constraint firstAttribute="height" constant="142" id="DJr-5U-LGO"/> - <constraint firstAttribute="width" constant="305" id="T3c-iU-jOA"/> - </constraints> - <fontDescription key="fontDescription" name="IowanOldStyle-Roman" family="Iowan Old Style" pointSize="100"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> - <color key="highlightedColor" red="0.40000000600000002" green="0.40000000600000002" blue="0.40000000600000002" alpha="1" colorSpace="calibratedRGB"/> - <color key="shadowColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/> - <size key="shadowOffset" width="2" height="-1"/> - </label> - </subviews> - <animations/> - <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> - <rect key="contentStretch" x="0.0" y="0.0" width="1" height="0.0"/> - <constraints> - <constraint firstItem="Hd4-1H-gES" firstAttribute="leading" secondItem="r92-Pp-sGu" secondAttribute="trailing" constant="-1" id="3ii-5q-hRb"/> - <constraint firstItem="ziX-3c-ZhK" firstAttribute="leading" secondItem="Hd4-1H-gES" secondAttribute="trailing" constant="3" id="6pO-HJ-Pil"/> - <constraint firstItem="Hd4-1H-gES" firstAttribute="top" secondItem="j2q-Vy-UO8" secondAttribute="bottom" constant="-10" id="7BO-jJ-39y"/> - <constraint firstItem="ziX-3c-ZhK" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="F5B-G9-hXv"/> - <constraint firstItem="j2q-Vy-UO8" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="GJk-9P-XTt"/> - <constraint firstItem="0L6-ec-PpF" firstAttribute="leading" secondItem="ziX-3c-ZhK" secondAttribute="trailing" constant="2" id="MeQ-CK-lT0"/> - <constraint firstItem="ziX-3c-ZhK" firstAttribute="top" secondItem="j2q-Vy-UO8" secondAttribute="bottom" constant="-10" id="amX-r4-PdM"/> - <constraint firstItem="6el-0s-hhb" firstAttribute="top" secondItem="j2q-Vy-UO8" secondAttribute="bottom" constant="-10" id="ayZ-42-MHT"/> - <constraint firstItem="0L6-ec-PpF" firstAttribute="top" secondItem="j2q-Vy-UO8" secondAttribute="bottom" constant="-10" id="gaJ-NX-OT6"/> - <constraint firstItem="6el-0s-hhb" firstAttribute="leading" secondItem="0L6-ec-PpF" secondAttribute="trailing" constant="1" id="jWH-VE-bAX"/> - <constraint firstItem="r92-Pp-sGu" firstAttribute="top" secondItem="j2q-Vy-UO8" secondAttribute="bottom" constant="-10" id="q7p-HH-IfM"/> - <constraint firstItem="j2q-Vy-UO8" firstAttribute="top" secondItem="Llm-lL-Icb" secondAttribute="bottom" constant="126" id="ucC-Ud-8N3"/> - </constraints> - </view> - <connections> - <outlet property="launchLabel" destination="j2q-Vy-UO8" id="ypS-04-noB"/> - </connections> - </viewController> - <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> - </objects> - <point key="canvasLocation" x="53" y="375"/> - </scene> - </scenes> - <resources> - <image name="rating_star_filled" width="128" height="128"/> - </resources> -</document> diff --git a/Unit-2-Journal/Unit-2-Journal/LaunchScreen.Storyboard b/Unit-2-Journal/Unit-2-Journal/LaunchScreen.Storyboard new file mode 100644 index 0000000..673e0f7 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/LaunchScreen.Storyboard @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6211" systemVersion="14A298i" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> + <dependencies> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6204"/> + </dependencies> + <scenes/> +</document> From 75b71a676b754a2e27de7be7996ee511434f6339 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 18 Oct 2015 17:18:37 -0400 Subject: [PATCH 66/86] woooooo --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 4 +- .../Unit-2-Journal/Base.lproj/Main.storyboard | 77 +++++++++++------- .../Unit-2-Journal/SearchAPITableViewCell.xib | 22 +++-- .../ViewCompletedEntryViewController.m | 6 ++ .../Unit-2-Journal/WishListTableViewCell.xib | 12 ++- 6 files changed, 81 insertions(+), 40 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 7863fbab6a6690b45f4cc41ff83366e25b732405..4b2c86aeded7a3684e86a4a8e4a337652f3f5f03 100644 GIT binary patch delta 38 ucmZoMXffC@iItIe@_!Z+{@i>Qmz2_yWCn&yo_kI(O#a7Wx|y5pryu|auMOe= delta 38 ucmZoMXffC@iIq`u@_!Z+{@i>Qmz2_yWCn&yo|`@}O#a7Wx|y5pryu|dR}KsS diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 2e10f13..b52fecc 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -535,7 +535,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.brianblanco.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.shenayoshida.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; @@ -551,7 +551,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.brianblanco.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.shenayoshida.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index fed289a..10302f0 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -4,6 +4,25 @@ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> </dependencies> + <customFonts key="customFonts"> + <mutableArray key="Akkurat Bold.otf"> + <string>Akkurat-Bold</string> + <string>Akkurat-Bold</string> + <string>Akkurat-Bold</string> + </mutableArray> + <mutableArray key="Akkurat Regular.otf"> + <string>Akkurat</string> + <string>Akkurat</string> + <string>Akkurat</string> + <string>Akkurat</string> + <string>Akkurat</string> + <string>Akkurat</string> + <string>Akkurat</string> + <string>Akkurat</string> + <string>Akkurat</string> + <string>Akkurat</string> + </mutableArray> + </customFonts> <scenes> <!--Main Table View Controller--> <scene sceneID="n2d-u0-8vM"> @@ -201,10 +220,10 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="lets add the social stuff over here! " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qLr-OV-7JA"> - <rect key="frame" x="169" y="291" width="264" height="20"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="lets add the social stuff over here! " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qLr-OV-7JA"> + <rect key="frame" x="165" y="290" width="270.5" height="20.5"/> <animations/> - <fontDescription key="fontDescription" type="system" pointSize="17"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> @@ -329,6 +348,7 @@ <constraints> <constraint firstAttribute="height" constant="50" id="nSu-DZ-G40"/> </constraints> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> <state key="normal" title="music"> <color key="titleColor" red="1" green="0.96580194144491827" blue="0.065849877366854659" alpha="1" colorSpace="calibratedRGB"/> </state> @@ -340,6 +360,7 @@ <rect key="frame" x="120" y="20" width="120" height="50"/> <animations/> <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> <state key="normal" title="movie"> <color key="titleColor" red="0.0" green="0.98431378599999997" blue="0.31764706970000001" alpha="1" colorSpace="deviceRGB"/> </state> @@ -362,6 +383,7 @@ <rect key="frame" x="360" y="20" width="120" height="50"/> <animations/> <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> <state key="normal" title="podcast"> <color key="titleColor" red="0.98580998180000001" green="0.62003214620000002" blue="0.067037612610000005" alpha="1" colorSpace="calibratedRGB"/> </state> @@ -373,6 +395,7 @@ <rect key="frame" x="240" y="20" width="120" height="50"/> <animations/> <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> <state key="normal" title="tv"> <color key="titleColor" red="0.68431816999999995" green="0.90332986250000002" blue="1" alpha="1" colorSpace="calibratedRGB"/> </state> @@ -467,20 +490,21 @@ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HdG-mr-PTo"> <rect key="frame" x="128" y="103" width="412" height="17"/> <animations/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> - <rect key="frame" x="128" y="84" width="412" height="19"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="Title" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> + <rect key="frame" x="128" y="83" width="412" height="19"/> <animations/> - <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="16"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oCt-vd-4RS"> - <rect key="frame" x="515" y="0.0" width="37" height="30"/> + <rect key="frame" x="516" y="0.0" width="36" height="30"/> <animations/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> <state key="normal" title="Done"> <color key="titleColor" red="0.98580998180000001" green="0.62003214620000002" blue="0.067037612610000005" alpha="1" colorSpace="calibratedRGB"/> </state> @@ -603,8 +627,9 @@ <rect key="frame" x="0.0" y="411" width="600" height="60"/> <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bIK-7d-Vfl"> - <rect key="frame" x="250" y="15" width="101" height="30"/> + <rect key="frame" x="251" y="15" width="99" height="30"/> <animations/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="15"/> <state key="normal" title="Log To Journal"> <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> </state> @@ -811,20 +836,12 @@ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bI1-9Y-Lhn"> - <rect key="frame" x="20" y="145" width="560" height="265"/> + <rect key="frame" x="20" y="150" width="560" height="260"/> <subviews> <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" usesAttributedText="YES" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> - <rect key="frame" x="5" y="5" width="550" height="255"/> + <rect key="frame" x="5" y="5" width="550" height="250"/> <animations/> - <attributedString key="attributedText"> - <fragment> - <string key="content">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string> - <attributes> - <font key="NSFont" size="14" name="HelveticaNeue"/> - <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural"/> - </attributes> - </fragment> - </attributedString> + <attributedString key="attributedText"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> </textView> </subviews> @@ -886,9 +903,10 @@ <rect key="frame" x="20" y="485" width="560" height="66"/> <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> - <rect key="frame" x="258" y="18" width="45" height="30"/> + <rect key="frame" x="250.5" y="18" width="59" height="30"/> <animations/> - <state key="normal" title="Delete"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="15"/> + <state key="normal" title="RETURN"/> <connections> <action selector="deleteButtonTapped:" destination="z1K-z0-Vef" eventType="touchUpInside" id="umA-zo-2bu"/> </connections> @@ -907,10 +925,10 @@ </mask> </variation> </view> - <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2sS-fd-D0X"> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2sS-fd-D0X"> <rect key="frame" x="20" y="20" width="560" height="130"/> <subviews> - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="P8h-8Q-AZm"> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="P8h-8Q-AZm"> <rect key="frame" x="0.0" y="5" width="120" height="120"/> <animations/> <constraints> @@ -921,21 +939,21 @@ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Title" lineBreakMode="characterWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uPb-Kv-PyA"> <rect key="frame" x="128" y="8" width="425" height="19.5"/> <animations/> - <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="16"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eHa-Fq-bcU"> - <rect key="frame" x="128" y="103" width="424" height="17"/> + <rect key="frame" x="128" y="108" width="424" height="17"/> <animations/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RUW-ww-VHC"> <rect key="frame" x="128" y="69" width="425" height="17"/> <animations/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> @@ -954,6 +972,7 @@ </constraints> <variation key="default"> <mask key="constraints"> + <exclude reference="pV2-le-mwS"/> <exclude reference="4Iw-Mk-e5C"/> </mask> </variation> @@ -1024,6 +1043,6 @@ <image name="rating_star_filled" width="128" height="128"/> </resources> <inferredMetricsTieBreakers> - <segue reference="Ggq-sb-ccX"/> + <segue reference="a4i-zx-cvK"/> </inferredMetricsTieBreakers> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib index cae8e4a..738fbc3 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib @@ -1,9 +1,17 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> </dependencies> + <customFonts key="customFonts"> + <mutableArray key="Akkurat Bold.otf"> + <string>Akkurat-Bold</string> + </mutableArray> + <mutableArray key="Akkurat Regular.otf"> + <string>Akkurat</string> + </mutableArray> + </customFonts> <objects> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> @@ -11,10 +19,10 @@ <rect key="frame" x="0.0" y="0.0" width="340" height="125"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> - <rect key="frame" x="0.0" y="0.0" width="340" height="124"/> + <rect key="frame" x="0.0" y="0.0" width="340" height="124.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fq8-dI-Pdu"> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Fq8-dI-Pdu"> <rect key="frame" x="18" y="33" width="60" height="60"/> <animations/> <constraints> @@ -25,14 +33,14 @@ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Author/Director/Artist" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="y9p-St-OV6"> <rect key="frame" x="86" y="62" width="254" height="46"/> <animations/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="TITLE" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Sl4-bL-ILp"> - <rect key="frame" x="86" y="16" width="254" height="47"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TITLE" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Sl4-bL-ILp"> + <rect key="frame" x="86" y="16" width="254" height="46"/> <animations/> - <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="16"/> <nil key="highlightedColor"/> </label> </subviews> diff --git a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m index f072982..83da193 100644 --- a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m @@ -40,6 +40,12 @@ - (void)viewDidLoad{ UIImage *image = [UIImage imageWithData:imageData]; self.completedImageView.image = image; + + // round corners + self.completedImageView.clipsToBounds = YES; + self.completedImageView.layer.borderColor = [UIColor blackColor].CGColor; + self.completedImageView.layer.borderWidth = 2.0; + self.completedImageView.layer.cornerRadius = 25.0; } diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib index 37febe7..c3b81b0 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib @@ -4,6 +4,14 @@ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> </dependencies> + <customFonts key="customFonts"> + <mutableArray key="Akkurat Bold.otf"> + <string>Akkurat-Bold</string> + </mutableArray> + <mutableArray key="Akkurat Regular.otf"> + <string>Akkurat</string> + </mutableArray> + </customFonts> <objects> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> @@ -23,13 +31,13 @@ </imageView> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TR1-Ae-Cd4"> <rect key="frame" x="86" y="62.5" width="238" height="46"/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ywi-Ne-nLf"> <rect key="frame" x="86" y="16" width="238" height="46.5"/> - <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="16"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> From 8f5de771b1ded9a0b89aa727261f780b2d940eb3 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Sun, 18 Oct 2015 21:31:12 -0400 Subject: [PATCH 67/86] commit to pull jamaal --- Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index eff69df..85d64da 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -529,7 +529,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.shenayoshida.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.jamaalsedayao.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; @@ -545,7 +545,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.shenayoshida.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.jamaalsedayao.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; From a6fc25ad8c48dab463f50e78d9b544a6c8140eba Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Sun, 18 Oct 2015 22:47:25 -0400 Subject: [PATCH 68/86] view added for jamaal --- .../Unit-2-Journal/Base.lproj/Main.storyboard | 322 +++++++++++++----- .../JournalMainCollectionViewController.m | 5 +- .../Unit-2-Journal/MainTableViewController.m | 2 - .../Unit-2-Journal/SearchAPIViewController.m | 54 +-- .../ViewCompletedEntryViewController.m | 71 +++- .../Unit-2-Journal/WishListTableViewCell.m | 1 + .../WishListTableViewController.m | 8 + 7 files changed, 317 insertions(+), 146 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 10302f0..920a6a1 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -9,6 +9,8 @@ <string>Akkurat-Bold</string> <string>Akkurat-Bold</string> <string>Akkurat-Bold</string> + <string>Akkurat-Bold</string> + <string>Akkurat-Bold</string> </mutableArray> <mutableArray key="Akkurat Regular.otf"> <string>Akkurat</string> @@ -494,8 +496,8 @@ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="Title" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> - <rect key="frame" x="128" y="83" width="412" height="19"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> + <rect key="frame" x="128" y="84" width="412" height="19"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="16"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> @@ -728,13 +730,49 @@ <animations/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <view key="tableHeaderView" contentMode="scaleToFill" id="t7Q-Vo-vCQ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="158"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="150"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WISH" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Df0-BF-gAU"> + <rect key="frame" x="173" y="45" width="126" height="59"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="50"/> + <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/> + <nil key="highlightedColor"/> + </label> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Pix-v9-EmC"> + <rect key="frame" x="299" y="33" width="2" height="117"/> + <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstAttribute="width" constant="2" id="jRL-xR-JIZ"/> + </constraints> + </view> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="LIST" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oKs-Fj-h2E"> + <rect key="frame" x="301" y="81" width="101" height="59"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="50"/> + <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/> + <nil key="highlightedColor"/> + </label> + </subviews> <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <constraints> + <constraint firstItem="oKs-Fj-h2E" firstAttribute="top" secondItem="Df0-BF-gAU" secondAttribute="bottom" constant="-23" id="3fL-JR-23W"/> + <constraint firstItem="Pix-v9-EmC" firstAttribute="centerX" secondItem="t7Q-Vo-vCQ" secondAttribute="centerX" id="9KS-hu-Ysd"/> + <constraint firstAttribute="bottom" secondItem="Pix-v9-EmC" secondAttribute="bottom" id="Rbq-Zp-oG7"/> + <constraint firstAttribute="bottom" secondItem="oKs-Fj-h2E" secondAttribute="bottom" constant="10" id="WJ5-V2-VBg"/> + <constraint firstItem="Pix-v9-EmC" firstAttribute="top" secondItem="t7Q-Vo-vCQ" secondAttribute="top" constant="33" id="Xvf-g8-cc0"/> + <constraint firstItem="Pix-v9-EmC" firstAttribute="leading" secondItem="Df0-BF-gAU" secondAttribute="trailing" id="eeX-ya-zkq"/> + <constraint firstItem="oKs-Fj-h2E" firstAttribute="leading" secondItem="Df0-BF-gAU" secondAttribute="trailing" constant="10.5" id="k05-wH-1R7"/> + <constraint firstItem="oKs-Fj-h2E" firstAttribute="leading" secondItem="Pix-v9-EmC" secondAttribute="trailing" id="vk3-7M-cvN"/> + </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="k05-wH-1R7"/> + </mask> + </variation> </view> <prototypes> - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="WishListIdentifier" rowHeight="64" id="Ej0-R4-rXa"> - <rect key="frame" x="0.0" y="186" width="600" height="64"/> + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" accessoryType="disclosureIndicator" indentationWidth="10" shouldIndentWhileEditing="NO" reuseIdentifier="WishListIdentifier" rowHeight="64" id="Ej0-R4-rXa"> + <rect key="frame" x="0.0" y="178" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> @@ -752,7 +790,7 @@ <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zzx-oe-N5F"> - <rect key="frame" x="74" y="39" width="42" height="21"/> + <rect key="frame" x="74" y="40" width="42" height="21"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="17"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> @@ -762,6 +800,7 @@ <animations/> </tableViewCellContentView> <animations/> + <inset key="separatorInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/> <connections> <segue destination="aXS-um-aw2" kind="show" id="Ggq-sb-ccX"/> </connections> @@ -835,18 +874,18 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bI1-9Y-Lhn"> - <rect key="frame" x="20" y="150" width="560" height="260"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bI1-9Y-Lhn" userLabel="Blue View"> + <rect key="frame" x="20" y="325" width="560" height="101"/> <subviews> <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" usesAttributedText="YES" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> - <rect key="frame" x="5" y="5" width="550" height="250"/> + <rect key="frame" x="5" y="5" width="550" height="91"/> <animations/> <attributedString key="attributedText"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> </textView> </subviews> <animations/> - <color key="backgroundColor" red="1" green="0.77670592760000001" blue="0.97496195610000003" alpha="1" colorSpace="calibratedRGB"/> + <color key="backgroundColor" cocoaTouchSystemColor="tableCellGroupedBackgroundColor"/> <constraints> <constraint firstItem="riX-qw-M2j" firstAttribute="leading" secondItem="bI1-9Y-Lhn" secondAttribute="leading" constant="5" id="9qy-ow-Nql"/> <constraint firstAttribute="trailing" secondItem="riX-qw-M2j" secondAttribute="trailing" constant="5" id="Gsp-CD-sDk"/> @@ -855,69 +894,86 @@ </constraints> </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ly8-tU-R6b"> - <rect key="frame" x="20" y="410" width="560" height="75"/> + <rect key="frame" x="35" y="426" width="530" height="50"/> <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rcY-Tz-IPf"> - <rect key="frame" x="102" y="23" width="30" height="30"/> + <button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="M7h-zf-QrN"> + <rect key="frame" x="216" y="0.0" width="98" height="50"/> <animations/> - <state key="normal" title="one"/> </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="M7h-zf-QrN"> - <rect key="frame" x="262" y="23" width="36" height="30"/> + <button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JU3-mC-wxo"> + <rect key="frame" x="324" y="0.0" width="98" height="50"/> <animations/> - <state key="normal" title="three"/> </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JU3-mC-wxo"> - <rect key="frame" x="348" y="23" width="30" height="30"/> + <button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Pt8-eG-uys"> + <rect key="frame" x="432" y="0.0" width="98" height="50"/> <animations/> - <state key="normal" title="four"/> </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Pt8-eG-uys"> - <rect key="frame" x="428" y="23" width="30" height="30"/> + <button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zLL-Ls-a62"> + <rect key="frame" x="108" y="0.0" width="98" height="50"/> <animations/> - <state key="normal" title="five"/> </button> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zLL-Ls-a62"> - <rect key="frame" x="182" y="23" width="30" height="30"/> + <button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rcY-Tz-IPf"> + <rect key="frame" x="0.0" y="0.0" width="98" height="50"/> <animations/> - <state key="normal" title="two"/> </button> </subviews> <animations/> - <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <constraints> - <constraint firstItem="zLL-Ls-a62" firstAttribute="centerY" secondItem="Ly8-tU-R6b" secondAttribute="centerY" id="8YT-wf-Yyd"/> - <constraint firstItem="JU3-mC-wxo" firstAttribute="centerY" secondItem="Ly8-tU-R6b" secondAttribute="centerY" id="EYT-AS-Ucr"/> - <constraint firstItem="M7h-zf-QrN" firstAttribute="leading" secondItem="zLL-Ls-a62" secondAttribute="trailing" constant="50" id="M3j-5H-SKe"/> - <constraint firstItem="zLL-Ls-a62" firstAttribute="leading" secondItem="rcY-Tz-IPf" secondAttribute="trailing" constant="50" id="Nf0-Rf-UQF"/> - <constraint firstItem="Pt8-eG-uys" firstAttribute="centerY" secondItem="Ly8-tU-R6b" secondAttribute="centerY" id="Z0q-cs-6eh"/> - <constraint firstItem="Pt8-eG-uys" firstAttribute="leading" secondItem="JU3-mC-wxo" secondAttribute="trailing" constant="50" id="ZNI-vl-J2M"/> - <constraint firstItem="M7h-zf-QrN" firstAttribute="centerY" secondItem="Ly8-tU-R6b" secondAttribute="centerY" id="cD6-q0-u8V"/> - <constraint firstItem="M7h-zf-QrN" firstAttribute="centerX" secondItem="Ly8-tU-R6b" secondAttribute="centerX" id="gPb-rg-pLb"/> - <constraint firstItem="rcY-Tz-IPf" firstAttribute="centerY" secondItem="Ly8-tU-R6b" secondAttribute="centerY" id="tim-Fj-76d"/> - <constraint firstAttribute="height" constant="75" id="umD-ss-qeO"/> - <constraint firstItem="JU3-mC-wxo" firstAttribute="leading" secondItem="M7h-zf-QrN" secondAttribute="trailing" constant="50" id="xSf-tn-Ha9"/> + <constraint firstItem="JU3-mC-wxo" firstAttribute="top" secondItem="Ly8-tU-R6b" secondAttribute="top" id="2Tf-0t-JRM"/> + <constraint firstItem="zLL-Ls-a62" firstAttribute="width" secondItem="M7h-zf-QrN" secondAttribute="width" id="BHh-BK-YdV"/> + <constraint firstItem="Pt8-eG-uys" firstAttribute="leading" secondItem="JU3-mC-wxo" secondAttribute="trailing" constant="10" id="CH4-Yy-9nS"/> + <constraint firstItem="zLL-Ls-a62" firstAttribute="leading" secondItem="rcY-Tz-IPf" secondAttribute="trailing" constant="10" id="Cq2-Md-WKu"/> + <constraint firstItem="M7h-zf-QrN" firstAttribute="centerY" secondItem="Ly8-tU-R6b" secondAttribute="centerY" id="G5T-Ag-IXG"/> + <constraint firstItem="Pt8-eG-uys" firstAttribute="top" secondItem="Ly8-tU-R6b" secondAttribute="top" id="Gkl-ve-1CI"/> + <constraint firstAttribute="trailing" secondItem="Pt8-eG-uys" secondAttribute="trailing" id="Jt0-0A-BaN"/> + <constraint firstItem="JU3-mC-wxo" firstAttribute="leading" secondItem="M7h-zf-QrN" secondAttribute="trailing" constant="10" id="Oat-qV-Hlr"/> + <constraint firstItem="M7h-zf-QrN" firstAttribute="centerX" secondItem="Ly8-tU-R6b" secondAttribute="centerX" id="R9E-P7-EPD"/> + <constraint firstItem="M7h-zf-QrN" firstAttribute="top" secondItem="Ly8-tU-R6b" secondAttribute="top" id="RKC-59-2Rp"/> + <constraint firstItem="rcY-Tz-IPf" firstAttribute="top" secondItem="Ly8-tU-R6b" secondAttribute="top" id="SdJ-5x-By3"/> + <constraint firstItem="JU3-mC-wxo" firstAttribute="width" secondItem="Pt8-eG-uys" secondAttribute="width" id="bNq-hH-S4O"/> + <constraint firstAttribute="bottom" secondItem="JU3-mC-wxo" secondAttribute="bottom" id="hnm-lN-zbH"/> + <constraint firstItem="zLL-Ls-a62" firstAttribute="top" secondItem="Ly8-tU-R6b" secondAttribute="top" id="ieb-CF-uXd"/> + <constraint firstAttribute="bottom" secondItem="M7h-zf-QrN" secondAttribute="bottom" id="kqk-W5-xgt"/> + <constraint firstAttribute="bottom" secondItem="Pt8-eG-uys" secondAttribute="bottom" id="nVH-hA-3Ay"/> + <constraint firstItem="M7h-zf-QrN" firstAttribute="leading" secondItem="zLL-Ls-a62" secondAttribute="trailing" constant="10" id="r6Z-Bw-wGo"/> + <constraint firstAttribute="bottom" secondItem="rcY-Tz-IPf" secondAttribute="bottom" id="r79-C4-zRI"/> + <constraint firstAttribute="bottom" secondItem="zLL-Ls-a62" secondAttribute="bottom" id="s6E-5N-8Tn"/> + <constraint firstAttribute="trailing" secondItem="Pt8-eG-uys" secondAttribute="trailing" id="uj3-xf-ala"/> + <constraint firstAttribute="height" constant="50" id="umD-ss-qeO"/> + <constraint firstItem="rcY-Tz-IPf" firstAttribute="leading" secondItem="Ly8-tU-R6b" secondAttribute="leading" id="vll-ua-VXC"/> + <constraint firstItem="M7h-zf-QrN" firstAttribute="width" secondItem="JU3-mC-wxo" secondAttribute="width" id="wks-Gj-E8F"/> + <constraint firstItem="rcY-Tz-IPf" firstAttribute="width" secondItem="zLL-Ls-a62" secondAttribute="width" id="yIe-IF-AG8"/> </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="uj3-xf-ala"/> + </mask> + </variation> </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="x4f-Ym-z1V"> - <rect key="frame" x="20" y="485" width="560" height="66"/> + <rect key="frame" x="20" y="476" width="280" height="75"/> <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> - <rect key="frame" x="250.5" y="18" width="59" height="30"/> + <rect key="frame" x="98" y="23" width="84" height="30"/> <animations/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="15"/> - <state key="normal" title="RETURN"/> + <state key="normal" title=" RETURN "> + <color key="titleColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + </state> <connections> <action selector="deleteButtonTapped:" destination="z1K-z0-Vef" eventType="touchUpInside" id="umA-zo-2bu"/> </connections> </button> </subviews> <animations/> - <color key="backgroundColor" red="0.99607843139999996" green="0.79215686269999996" blue="0.086274509799999996" alpha="1" colorSpace="calibratedRGB"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstAttribute="height" constant="100" id="4cP-Gz-KpJ"/> - <constraint firstItem="1br-zx-rKo" firstAttribute="centerY" secondItem="x4f-Ym-z1V" secondAttribute="centerY" id="PpI-nI-XT1"/> - <constraint firstItem="1br-zx-rKo" firstAttribute="centerX" secondItem="x4f-Ym-z1V" secondAttribute="centerX" id="kQc-qO-IbZ"/> + <constraint firstItem="1br-zx-rKo" firstAttribute="centerX" secondItem="x4f-Ym-z1V" secondAttribute="centerX" id="97n-xh-93f"/> + <constraint firstAttribute="height" constant="75" id="JSN-NO-vFc"/> + <constraint firstItem="1br-zx-rKo" firstAttribute="centerY" secondItem="x4f-Ym-z1V" secondAttribute="centerY" id="u1x-dv-z8q"/> </constraints> <variation key="default"> <mask key="constraints"> @@ -925,80 +981,192 @@ </mask> </variation> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2sS-fd-D0X"> - <rect key="frame" x="20" y="20" width="560" height="130"/> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iJa-08-1GE"> + <rect key="frame" x="300" y="476" width="280" height="75"/> <subviews> - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="P8h-8Q-AZm"> - <rect key="frame" x="0.0" y="5" width="120" height="120"/> - <animations/> - <constraints> - <constraint firstAttribute="width" constant="120" id="T4f-sf-dem"/> - <constraint firstAttribute="height" constant="120" id="ZGH-hy-6dT"/> - </constraints> - </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Title" lineBreakMode="characterWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uPb-Kv-PyA"> - <rect key="frame" x="128" y="8" width="425" height="19.5"/> - <animations/> - <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="16"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Facebook" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Qia-hv-Okp"> + <rect key="frame" x="103" y="27" width="74.5" height="20.5"/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eHa-Fq-bcU"> - <rect key="frame" x="128" y="108" width="424" height="17"/> + </subviews> + <color key="backgroundColor" red="0.99607843139999996" green="0.79215686269999996" blue="0.086274509799999996" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstAttribute="height" constant="100" id="DnT-BB-V1g"/> + <constraint firstItem="Qia-hv-Okp" firstAttribute="centerX" secondItem="iJa-08-1GE" secondAttribute="centerX" id="Hf4-By-8MH"/> + <constraint firstItem="Qia-hv-Okp" firstAttribute="centerY" secondItem="iJa-08-1GE" secondAttribute="centerY" id="MBF-Xt-pRY"/> + </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="DnT-BB-V1g"/> + </mask> + </variation> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="DLn-Kf-i7J" userLabel="Red View"> + <rect key="frame" x="20" y="250" width="560" height="75"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RUW-ww-VHC"> + <rect key="frame" x="10" y="31" width="540" height="17"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RUW-ww-VHC"> - <rect key="frame" x="128" y="69" width="425" height="17"/> + <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="IKw-fC-6K4"> + <rect key="frame" x="10" y="5" width="540" height="21"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uPb-Kv-PyA"> + <rect key="frame" x="0.0" y="0.0" width="540" height="21"/> + <animations/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="19"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <constraints> + <constraint firstItem="uPb-Kv-PyA" firstAttribute="centerX" secondItem="IKw-fC-6K4" secondAttribute="centerX" id="hS6-oM-b42"/> + </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="hS6-oM-b42"/> + </mask> + </variation> + </stackView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eHa-Fq-bcU"> + <rect key="frame" x="10" y="53" width="540" height="17"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <nil key="highlightedColor"/> </label> </subviews> + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <constraints> + <constraint firstItem="IKw-fC-6K4" firstAttribute="leading" secondItem="DLn-Kf-i7J" secondAttribute="leading" constant="10" id="1bi-eY-etH"/> + <constraint firstItem="eHa-Fq-bcU" firstAttribute="top" secondItem="RUW-ww-VHC" secondAttribute="bottom" constant="5" id="8xJ-q0-da2"/> + <constraint firstAttribute="trailing" secondItem="RUW-ww-VHC" secondAttribute="trailing" constant="10" id="I81-DF-sUO"/> + <constraint firstAttribute="height" constant="75" id="IVL-4V-IKI"/> + <constraint firstItem="RUW-ww-VHC" firstAttribute="leading" secondItem="DLn-Kf-i7J" secondAttribute="leading" constant="10" id="T4f-b2-xi4"/> + <constraint firstItem="IKw-fC-6K4" firstAttribute="top" secondItem="DLn-Kf-i7J" secondAttribute="top" constant="5" id="U5O-h5-H0h"/> + <constraint firstItem="eHa-Fq-bcU" firstAttribute="leading" secondItem="DLn-Kf-i7J" secondAttribute="leading" constant="10" id="jfn-IA-DMZ"/> + <constraint firstAttribute="trailing" secondItem="IKw-fC-6K4" secondAttribute="trailing" constant="10" id="lCg-Ll-5sL"/> + <constraint firstItem="RUW-ww-VHC" firstAttribute="top" secondItem="IKw-fC-6K4" secondAttribute="bottom" constant="5" id="lmz-rv-5s8"/> + <constraint firstItem="IKw-fC-6K4" firstAttribute="centerX" secondItem="DLn-Kf-i7J" secondAttribute="centerX" id="qnS-3b-zLI"/> + <constraint firstAttribute="bottom" secondItem="eHa-Fq-bcU" secondAttribute="bottom" constant="5" id="v1t-Hh-ylQ"/> + <constraint firstAttribute="trailing" secondItem="eHa-Fq-bcU" secondAttribute="trailing" constant="10" id="yQ9-AI-sK9"/> + </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="qnS-3b-zLI"/> + </mask> + </variation> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2sS-fd-D0X" userLabel="Pink View"> + <rect key="frame" x="20" y="20" width="560" height="230"/> + <subviews> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="P8h-8Q-AZm"> + <rect key="frame" x="180" y="15" width="200" height="200"/> + <animations/> + <constraints> + <constraint firstAttribute="height" constant="200" id="1bV-mr-UNq"/> + <constraint firstAttribute="width" constant="200" id="j39-Np-9Qw"/> + <constraint firstAttribute="width" constant="250" id="qPa-Gb-BP4"/> + </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="qPa-Gb-BP4"/> + </mask> + </variation> + </imageView> + </subviews> <animations/> - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <constraints> <constraint firstItem="P8h-8Q-AZm" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="top" constant="5" id="4Iw-Mk-e5C"/> - <constraint firstItem="eHa-Fq-bcU" firstAttribute="bottom" secondItem="P8h-8Q-AZm" secondAttribute="bottom" id="Chb-Da-5rL"/> - <constraint firstAttribute="trailing" secondItem="eHa-Fq-bcU" secondAttribute="trailing" constant="8" id="Hpo-YO-zPa"/> - <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerY" secondItem="2sS-fd-D0X" secondAttribute="centerY" id="IsG-6d-QoO"/> - <constraint firstAttribute="bottom" secondItem="P8h-8Q-AZm" secondAttribute="bottom" constant="5" id="UCI-7U-pf5"/> - <constraint firstItem="P8h-8Q-AZm" firstAttribute="leading" secondItem="2sS-fd-D0X" secondAttribute="leading" id="nTp-YF-tYN"/> - <constraint firstItem="eHa-Fq-bcU" firstAttribute="leading" secondItem="P8h-8Q-AZm" secondAttribute="trailing" constant="8" id="nZv-l4-XuW"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerY" secondItem="2sS-fd-D0X" secondAttribute="centerY" id="4vp-EM-f9w"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerX" secondItem="2sS-fd-D0X" secondAttribute="centerX" id="7HA-mu-ocy"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerY" secondItem="2sS-fd-D0X" secondAttribute="centerY" id="Gqe-NI-Z3C"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="top" constant="25" id="Gwt-cb-ayI"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerX" secondItem="2sS-fd-D0X" secondAttribute="centerX" id="IAe-fk-e1S"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="leading" secondItem="2sS-fd-D0X" secondAttribute="leading" id="Niy-tr-Y6J"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerY" secondItem="2sS-fd-D0X" secondAttribute="centerY" id="Ntg-Gm-9zu"/> + <constraint firstAttribute="bottom" secondItem="P8h-8Q-AZm" secondAttribute="bottom" constant="8" id="O1M-iv-PWr"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerX" secondItem="2sS-fd-D0X" secondAttribute="centerX" id="Qq8-Qh-xM5"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerX" secondItem="2sS-fd-D0X" secondAttribute="centerX" id="QtP-WJ-Had"/> + <constraint firstAttribute="height" constant="250" id="VfU-zQ-x6U"/> + <constraint firstAttribute="bottom" secondItem="P8h-8Q-AZm" secondAttribute="bottom" id="WuK-4Z-oTG"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerY" secondItem="2sS-fd-D0X" secondAttribute="centerY" id="eIg-rl-hTN"/> <constraint firstAttribute="height" constant="125" id="pV2-le-mwS"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerY" secondItem="2sS-fd-D0X" secondAttribute="centerY" id="sBD-Zu-u6U"/> + <constraint firstAttribute="trailing" secondItem="P8h-8Q-AZm" secondAttribute="trailing" id="ziG-OY-chr"/> </constraints> <variation key="default"> <mask key="constraints"> + <exclude reference="VfU-zQ-x6U"/> <exclude reference="pV2-le-mwS"/> <exclude reference="4Iw-Mk-e5C"/> + <exclude reference="7HA-mu-ocy"/> + <exclude reference="Gqe-NI-Z3C"/> + <exclude reference="Gwt-cb-ayI"/> + <exclude reference="IAe-fk-e1S"/> + <exclude reference="Niy-tr-Y6J"/> + <exclude reference="Ntg-Gm-9zu"/> + <exclude reference="O1M-iv-PWr"/> + <exclude reference="QtP-WJ-Had"/> + <exclude reference="WuK-4Z-oTG"/> + <exclude reference="eIg-rl-hTN"/> + <exclude reference="sBD-Zu-u6U"/> + <exclude reference="ziG-OY-chr"/> </mask> </variation> </view> </subviews> <animations/> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <constraints> - <constraint firstItem="Ly8-tU-R6b" firstAttribute="leading" secondItem="EZl-sI-Vwl" secondAttribute="leadingMargin" id="1T0-Ze-kQC"/> + <constraint firstItem="Ly8-tU-R6b" firstAttribute="leading" secondItem="EZl-sI-Vwl" secondAttribute="leadingMargin" constant="15" id="1T0-Ze-kQC"/> + <constraint firstItem="iJa-08-1GE" firstAttribute="width" secondItem="x4f-Ym-z1V" secondAttribute="width" id="2eT-qx-CF9"/> <constraint firstItem="bI1-9Y-Lhn" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="bottom" id="3c5-ik-Auq"/> <constraint firstItem="DF9-8P-jQU" firstAttribute="top" secondItem="x4f-Ym-z1V" secondAttribute="bottom" id="4Fa-3M-oyp"/> <constraint firstItem="bI1-9Y-Lhn" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="bottom" id="4JK-ES-1ri"/> <constraint firstItem="x4f-Ym-z1V" firstAttribute="top" secondItem="Ly8-tU-R6b" secondAttribute="bottom" id="5op-S4-Rvd"/> <constraint firstItem="2sS-fd-D0X" firstAttribute="top" secondItem="hxi-Oa-IvU" secondAttribute="bottom" id="6j7-Pw-W91"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="top" secondItem="hxi-Oa-IvU" secondAttribute="bottom" constant="15" id="8ZM-iZ-FzX"/> + <constraint firstItem="DLn-Kf-i7J" firstAttribute="leading" secondItem="EZl-sI-Vwl" secondAttribute="leadingMargin" id="EXX-9N-Oxk"/> <constraint firstItem="2sS-fd-D0X" firstAttribute="trailing" secondItem="EZl-sI-Vwl" secondAttribute="trailingMargin" id="HN0-Bi-dhn"/> + <constraint firstItem="iJa-08-1GE" firstAttribute="top" secondItem="Ly8-tU-R6b" secondAttribute="bottom" id="HUk-f2-mkx"/> <constraint firstItem="2sS-fd-D0X" firstAttribute="top" secondItem="hxi-Oa-IvU" secondAttribute="bottom" id="KCf-gF-e0e"/> <constraint firstItem="bI1-9Y-Lhn" firstAttribute="trailing" secondItem="EZl-sI-Vwl" secondAttribute="trailingMargin" id="N93-6I-U69"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="width" secondItem="EZl-sI-Vwl" secondAttribute="width" id="OFO-ZK-Q4N"/> <constraint firstItem="Ly8-tU-R6b" firstAttribute="top" secondItem="EZl-sI-Vwl" secondAttribute="top" constant="410" id="S8h-Yj-9gp"/> + <constraint firstItem="DLn-Kf-i7J" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="bottom" id="UE2-tj-Agp"/> + <constraint firstItem="DF9-8P-jQU" firstAttribute="top" secondItem="iJa-08-1GE" secondAttribute="bottom" id="VWC-OE-anb"/> <constraint firstItem="2sS-fd-D0X" firstAttribute="leading" secondItem="EZl-sI-Vwl" secondAttribute="leadingMargin" id="WUr-xg-D5x"/> <constraint firstItem="Ly8-tU-R6b" firstAttribute="top" secondItem="bI1-9Y-Lhn" secondAttribute="bottom" id="Zqz-eo-C42"/> - <constraint firstItem="Ly8-tU-R6b" firstAttribute="trailing" secondItem="EZl-sI-Vwl" secondAttribute="trailingMargin" id="fGr-sx-IUP"/> + <constraint firstItem="iJa-08-1GE" firstAttribute="leading" secondItem="x4f-Ym-z1V" secondAttribute="trailing" id="boO-Nt-gih"/> + <constraint firstItem="iJa-08-1GE" firstAttribute="height" secondItem="x4f-Ym-z1V" secondAttribute="height" id="cQv-ly-Jaj"/> + <constraint firstItem="P8h-8Q-AZm" firstAttribute="width" secondItem="EZl-sI-Vwl" secondAttribute="width" id="dan-ER-otn"/> + <constraint firstItem="Ly8-tU-R6b" firstAttribute="trailing" secondItem="EZl-sI-Vwl" secondAttribute="trailingMargin" constant="-15" id="fGr-sx-IUP"/> <constraint firstItem="bI1-9Y-Lhn" firstAttribute="leading" secondItem="EZl-sI-Vwl" secondAttribute="leadingMargin" id="flc-is-VEs"/> + <constraint firstItem="DLn-Kf-i7J" firstAttribute="trailing" secondItem="EZl-sI-Vwl" secondAttribute="trailingMargin" id="gEr-xm-jxi"/> <constraint firstItem="bI1-9Y-Lhn" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="bottom" id="gL3-nR-tUc"/> <constraint firstItem="x4f-Ym-z1V" firstAttribute="leading" secondItem="EZl-sI-Vwl" secondAttribute="leadingMargin" id="jwd-au-VUD"/> <constraint firstItem="x4f-Ym-z1V" firstAttribute="trailing" secondItem="EZl-sI-Vwl" secondAttribute="trailingMargin" id="mnC-Mc-ilI"/> + <constraint firstAttribute="trailingMargin" secondItem="iJa-08-1GE" secondAttribute="trailing" id="sA6-1W-UsV"/> + <constraint firstItem="bI1-9Y-Lhn" firstAttribute="top" secondItem="DLn-Kf-i7J" secondAttribute="bottom" id="yhw-F7-jIa"/> </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="OFO-ZK-Q4N"/> + <exclude reference="dan-ER-otn"/> + <exclude reference="3c5-ik-Auq"/> + <exclude reference="4JK-ES-1ri"/> + <exclude reference="gL3-nR-tUc"/> + <exclude reference="S8h-Yj-9gp"/> + <exclude reference="mnC-Mc-ilI"/> + </mask> + </variation> </view> <connections> <outlet property="completedCreatorLabel" destination="RUW-ww-VHC" id="qVi-vs-rrs"/> @@ -1015,7 +1183,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="gKL-Ix-enk" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="2173" y="3332"/> + <point key="canvasLocation" x="1397" y="3308"/> </scene> <!--Item--> <scene sceneID="lqz-ju-jUl"> @@ -1043,6 +1211,6 @@ <image name="rating_star_filled" width="128" height="128"/> </resources> <inferredMetricsTieBreakers> - <segue reference="a4i-zx-cvK"/> + <segue reference="Ggq-sb-ccX"/> </inferredMetricsTieBreakers> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index 857359e..aceae0c 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -41,11 +41,8 @@ - (void)viewDidLoad // NSLog(@"All Journal Posts: %@", self.allJournalPosts); - - collectionImages = [NSMutableArray arrayWithObjects:@"destroyer.png", @"drake.png", @"big_nerd_ranch.png", @"talking_heads.png", @"true_detective", @"sleater_kinney.png", @"x-files.png", @"run_the_jewels.png", @"lean_startup.png", nil]; - self.collectionView.alwaysBounceVertical = YES; - + [self runQuery]; // run Parse query to fetch saved data } diff --git a/Unit-2-Journal/Unit-2-Journal/MainTableViewController.m b/Unit-2-Journal/Unit-2-Journal/MainTableViewController.m index 0a42a22..c42d9f8 100644 --- a/Unit-2-Journal/Unit-2-Journal/MainTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/MainTableViewController.m @@ -25,8 +25,6 @@ - (void)viewDidLoad { [self performSegueWithIdentifier:@"showLogin" sender:self]; } - - #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 3336155..9b2f397 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -42,7 +42,6 @@ @interface SearchAPIViewController () @property (nonatomic) JournalPost *journalPost; // for parse @property (nonatomic) NSString *mediaType; // for parse - @end @implementation SearchAPIViewController @@ -61,7 +60,7 @@ - (void)viewDidLoad self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimatedRowHeight = 35.0; - + [self.tableView setSeparatorColor:[UIColor whiteColor]]; } #pragma mark - setup buttons @@ -93,11 +92,6 @@ - (IBAction)createJournalEntryButtonTapped:(id)sender { } - (IBAction)addToWishListButtonTapped:(id)sender { - -// WishListTableViewController *viewController = [[WishListTableViewController alloc]init]; -// viewController.searchResult = self.passSearchResult; - - // SAVE the date, title, creator and image in parse, mark reviewed bool as NO JournalPost *myJournalPost = [[JournalPost alloc] init]; @@ -121,7 +115,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term self.searchResults = [[NSMutableArray alloc]init]; -//First API Request - iTunes (music, ebooks, podcast) +// First API Request - iTunes (music, ebooks, podcast) NSString *urlString = [NSString stringWithFormat: @"https://itunes.apple.com/search?media=%@&term=%@",media,term]; @@ -135,13 +129,9 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term if (data != nil){ NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - // NSLog(@"%@",json); - NSArray *results = [json objectForKey:@"results"]; - // NSLog(@"iTunes Results: %@",results); - - for (NSDictionary *result in results){ + for (NSDictionary *result in results) { NSString *artistName = [result objectForKey:@"artistName"]; NSString *albumName = [result objectForKey:@"collectionName"]; @@ -214,7 +204,6 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term searchResult.mediaType = @"tv"; [self.searchResults addObject:searchResult]; - } } } @@ -224,14 +213,11 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term // Third API Request - for movies, including in-theatre // https://api.themoviedb.org/3/search/movie?api_key=a958839150c7c7c6333fd335128ea066&query=django - NSString *urlStringThree = [NSString stringWithFormat:@"https://api.themoviedb.org/3/search/%@?api_key=a958839150c7c7c6333fd335128ea066&query=%@",media,term]; NSString *encodedStringThree = [urlStringThree stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; - // NSLog(@"Movie String: %@",encodedStringThree); - NSURL *urlThree = [NSURL URLWithString:encodedStringThree]; [APIManager GETRequestWithURL:urlThree @@ -242,14 +228,12 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term NSDictionary *results = [jsonThree valueForKey:@"results"]; - // NSLog(@"Movie Results: %@",results); - for (NSDictionary *result in results){ NSString *name = [result valueForKey:@"title"]; NSString *releaseDate = [result valueForKey:@"release_date"]; NSString *posterPath = [result valueForKey:@"poster_path"]; - + //http://image.tmdb.org/t/p/w500 if ([self.media isEqualToString:@"movie"]){ @@ -257,41 +241,33 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term iTunesSearchResult *movieResult = [[iTunesSearchResult alloc]init]; movieResult.albumOrMovieName = name; - movieResult.artistName = releaseDate; + movieResult.artistName = releaseDate; movieResult.artworkURL = [NSString stringWithFormat:@"http://image.tmdb.org/t/p/w500%@",posterPath]; movieResult.mediaType = @"movie"; [self.searchResults addObject:movieResult]; - } - [self.tableView reloadData]; - } - } - }]; } -- (BOOL)textFieldShouldReturn:(UITextField *)textField{ +- (BOOL)textFieldShouldReturn:(UITextField *)textField { [self.view endEditing:YES]; - [self makeNewAPIRequestWithSearchTerm:textField.text inMedia:self.media]; - - return YES; } #pragma mark - set up table view -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.searchResults.count; } @@ -329,12 +305,6 @@ -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath * iTunesSearchResult *searchResult = self.searchResults[indexPath.row]; self.passSearchResult = searchResult; - - - // NSLog(@"passed search results: %@", self.passSearchResult); - - // push view controller - } #pragma mark - Navigation @@ -342,16 +312,8 @@ -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath * - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier]isEqualToString:@"pushToCreateJournalEntry"]) { - - // NSLog(@"segue"); - CreateJournalEntryViewController *viewController = segue.destinationViewController; viewController.postSearchResult = self.passSearchResult; - } - } - - - @end diff --git a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m index 83da193..aa5b2c5 100644 --- a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m @@ -22,19 +22,29 @@ @interface ViewCompletedEntryViewController () @property (weak, nonatomic) IBOutlet UIButton *starFour; @property (weak, nonatomic) IBOutlet UIButton *starFive; + @end @implementation ViewCompletedEntryViewController - (void)viewDidLoad{ [super viewDidLoad]; - NSLog(@"Journal Post passed: %@",self.journalPostDetail); self.completedTitleLabel.text = self.journalPostDetail.title; self.completedCreatorLabel.text = self.journalPostDetail.creator; - self.completedDateLabel.text = [NSString stringWithFormat:@"%@",self.journalPostDetail.dateEntered]; self.completedReviewTextView.text = self.journalPostDetail.postText; + NSLog(@"stars: %@", self.journalPostDetail.starRating); + + // convert date to readable format + NSDate *now = self.journalPostDetail.dateEntered; + NSCalendar *calendar = [[NSCalendar alloc] + initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; + NSCalendarUnit units = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay; + NSDateComponents *components = [calendar components:units fromDate:now]; + + self.completedDateLabel.text = [NSString stringWithFormat:@"Entry Date: %ld/%ld/%ld", (long)components.month, (long)components.day, (long)components.year]; // set date text + NSURL *imageURL = [NSURL URLWithString:self.journalPostDetail.imageForMedia]; NSData *imageData = [NSData dataWithContentsOfURL:imageURL]; UIImage *image = [UIImage imageWithData:imageData]; @@ -45,14 +55,51 @@ - (void)viewDidLoad{ self.completedImageView.clipsToBounds = YES; self.completedImageView.layer.borderColor = [UIColor blackColor].CGColor; self.completedImageView.layer.borderWidth = 2.0; - self.completedImageView.layer.cornerRadius = 25.0; - + self.completedImageView.layer.cornerRadius = 30.0; + + [self setupStars]; } -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; +#pragma mark - stars +- (void)setupStars { + + if ([self.journalPostDetail.starRating isEqual:@1]) { + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + } + + else if ([self.journalPostDetail.starRating isEqual:@2]) { + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + } + else if ([self.journalPostDetail.starRating isEqual:@3]) { + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + } + else if ([self.journalPostDetail.starRating isEqual:@4]) { + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + } + else if ([self.journalPostDetail.starRating isEqual:@5]) { + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + } } #pragma mark - delete item @@ -65,14 +112,4 @@ - (IBAction)deleteButtonTapped:(id)sender } -/* -#pragma mark - Navigation - -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. -} -*/ - @end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m index ff6c919..624e5af 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m @@ -18,6 +18,7 @@ - (void)awakeFromNib { self.artworkImage.layer.borderColor = [UIColor blackColor].CGColor; self.artworkImage.layer.borderWidth = 2.0; self.artworkImage.layer.cornerRadius = 25.0; + } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index efacccd..4fcf729 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -35,6 +35,9 @@ - (void)viewDidLoad self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimatedRowHeight = 35.0; + //[self.tableView setSeparatorColor:[UIColor whiteColor]]; + [self.tableView setTableFooterView:[UIView new]]; // hide extra lines in empty tableview cells + [self pullEntriesFromParse]; } @@ -111,6 +114,11 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N cell.artworkImage.image = image; + cell.preservesSuperviewLayoutMargins = false; + cell.separatorInset = UIEdgeInsetsZero; + cell.layoutMargins = UIEdgeInsetsZero; + + return cell; } From 3fd74e155dab6ca4cb71040d466867412c522d14 Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Mon, 19 Oct 2015 18:04:43 -0400 Subject: [PATCH 69/86] adjusted UI and search reloads once submitted --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes Unit-2-Journal/Unit-2-Journal/AppDelegate.m | 2 +- .../rating_star2.imageset/Contents.json | 21 ++ .../rating_star2.imageset/rating_star2.png | Bin 0 -> 4822 bytes .../Contents.json | 21 ++ .../rating_star_filled2.png | Bin 0 -> 4341 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 282 +++++++++--------- .../CreateJournalEntryViewController.m | 40 +-- .../JournalMainCollectionViewController.h | 2 + .../JournalMainCollectionViewController.m | 4 + .../Unit-2-Journal/SearchAPITableViewCell.xib | 6 +- .../Unit-2-Journal/SearchAPIViewController.h | 3 +- .../Unit-2-Journal/SearchAPIViewController.m | 44 ++- .../ViewCompletedEntryViewController.m | 55 ++-- .../Unit-2-Journal/WishListTableViewCell.xib | 17 +- .../WishListTableViewController.m | 5 +- 16 files changed, 294 insertions(+), 208 deletions(-) create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star2.imageset/Contents.json create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star2.imageset/rating_star2.png create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star_filled2.imageset/Contents.json create mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star_filled2.imageset/rating_star_filled2.png diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index fe4a9f484420f0707ada68f7ac1ae02b2ae5376c..9dd9e0c99d3c650c559f96bafb47d296645a2db0 100644 GIT binary patch delta 114 zcmZoMXffC@k(KH6smcFYO!#y2U0hO1OOhEFE_wZQV3_=m#dI<^8#fD_<Il#&_+fG! w+ib>-K+=*ANrS!r@yU+tuFN2MBbya}L55*)a(-?B0~lPGSZKPLo#QV*04mBR;Q#;t delta 115 zcmZoMXffC@k(Fsn{^b8GCj7biE-ophCCLm7mpu2JV3_=m#dI<^8#jvw`+Nw;pN)_4 z!Q?o$*-X8bljGSe_>gqieR((8k=>OUL~mrX;xEWB3{K9^EnonH4HFAZH?wp6<p%&W C7bl<q diff --git a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m index 4bf1a32..e8a9003 100644 --- a/Unit-2-Journal/Unit-2-Journal/AppDelegate.m +++ b/Unit-2-Journal/Unit-2-Journal/AppDelegate.m @@ -52,7 +52,7 @@ - (void)setupYALTabBarController { rightItemImage:nil]; - YALTabBarItem *item2 = [[YALTabBarItem alloc] initWithItemImage:[UIImage imageNamed:@"add"] + YALTabBarItem *item2 = [[YALTabBarItem alloc] initWithItemImage:[UIImage imageNamed:@"add"] // we can add hidden left/right buttons here leftItemImage:nil rightItemImage:nil]; diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star2.imageset/Contents.json b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star2.imageset/Contents.json new file mode 100644 index 0000000..89dc5b6 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "rating_star2.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star2.imageset/rating_star2.png b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star2.imageset/rating_star2.png new file mode 100644 index 0000000000000000000000000000000000000000..a9c3cd1726face556a0480d7d7c9aaf6a53b6772 GIT binary patch literal 4822 zcmV;{5-IJ8P)<h;3K|Lk000e1NJLTq004jh004jp1^@s6!#-il00009a7bBm000XU z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+<Lqi~Na&Km7Y-Iodc-oy)XH-+^7Crag z^g>IBfRsybQWXdwQbLP>6p<z>Aqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uh<iVD~V z<RPMtgQJLw%KPDaqifc@_vX$1wbwr9tn;0-&j-K=43<bUQ8j=JsX`tR;Dg7+#^K~H zK!FM*Z~zbpvt%K2{UZSY_<lS*D<Z%Lz5oGu(+dayz)hRLFdT>f59&ghTmgWD0l;*T zI7<kC6aYYajzXpYKt=(8otP$50H6c_V9R4-;{Z@C0AMG7=F<Rxo%or10RUT+Ar%3j zkpLhQWr#!oXgdI`&sK^>09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-<?i z0%4j!F2Z@488U%158(66005wo6%pWr^Zj_v4zAA5HjcIqUoGmt2LB>rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_<lS*MWK+n+1cgf z<k(8YLR(?VSAG6x!e78w{cQPuJpA|d;J)G{fihizM+Erb!p!tcr5w+a34~(Y=8s4G zw+sLL9n&JjNn*KJDiq^U5^;`1nvC-@r6P$!k}1U{(*I=Q-z@tBKHoI}uxdU5dyy@u zU1J0GOD7Ombim^G008p4Z^6_k2m^p<gW=D2|L;HjN1!DDfM!XOaR2~bL?kX$%CkSm z2mk;?pn)o|K^yeJ7%adB9Ki+L!3+FgHiSYX#KJ-lLJDMn9CBbOtb#%)hRv`YDqt_v zKpix|QD}yfa1JiQRk#j4a1Z)n2%f<xynzV>LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_Ifq<Ex{*7`05XF7hP+2Hl!3BQJ=6@fL%FCo z8iYoo3(#bAF`ADSpqtQgv>H8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ<AYmRsNLWl*PS{AOARHt#5!wki2?K;t z!Y3k=s7tgax)J%r7-BLphge7~Bi0g+6E6^Zh(p9TBoc{3GAFr^0!gu?RMHaCM$&Fl zBk3%un>0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 z<uv66WtcKSRim0x-Ke2d5jBrmLam{;Qm;{ms1r1GnmNsb7D-E`t)i9F8fX`2_i3-_ zbh;7Ul^#x)&{xvS=|||7=mYe33=M`AgU5(xC>fg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vF<Q0r40Q)j6=sE4X&sBct1q<&fbi3VB2Ov6t@q*0);U*o*SAPZv|vv@2aYYnT0 zb%8a+Cb7-ge0D0knEf5Qi#@8Tp*ce{N;6lpQuCB%KL_KOarm5cP6_8Ir<e17iry6O zDdH&`rZh~sF=bq9s+O0QSgS~@QL9Jmy*94xr=6y~MY~!1fet~(N+(<=M`w@D1)b+p z*;C!83a1uLJv#NSE~;y#8=<>IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a<fJbF^|4I#xQ~n$Dc= zKYhjYmgz5NSkDm8*fZm{6U!;YX`NG>(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-k<Mujg;0Lz*3buG=3$G&ehepthlN*$KaOySSQ^nWmo<0M+(UEUMEXRQ zMBbZcF;6+KElM>iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BK<z=<L*0kfKU@CX*zeqbYQT4(^U>T#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot<a{81DF0~rvGr5Xr~8u`lav1h z1DNytV>2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000O9Nkl<Zc-rip+i~JZ6o!8&zr$<-un~xfz-$CC5x_)XCITh{GZ7eX0)_~TBQSp7 zD%-UI7!p|R14lI)jrt;J_2qP*D#}>s)_wjy=To=T>g0KjNbMHDg1)Z+e2cLXx{*46 zS#mz;`!dFg=tLR;UI7d%%iaL|nIZsxo76ZTv}}?Dz~AO){+3bz0~=7Nm)Q`&dx`+@ zwf-ohKx`4<RgnLqg~6C2z(m9O(ZOI$0+_e7Zb|_G!{3hnj$?(vZse_hO`m9^Kr9iU z4*m`RKGF9N0R0$YFop;qg1@!kdsHwOg8)RKd?olERT|(ffB}GM&GJnJ@ZM=z)uyzM zBmjo+r?ZTG6yOelO^1D>8z$x)0d(L`=Qq|c$XNhQ!hf`BfU5v>;je1Z!C*JF{<xz6 zR|vecXHV60m?D73Hmh;IZtIt=+oyde0Wc2#(WL=y0vMovXjcV)x-dBA27}xLurSd2 zRog5Q1oDNy=wOgj1TX=A(ZL`m0hoZlU!o&`d+spEMF6JYuk8E|fPVpOIl~|q0holp zPU!<l6kq{^Tp-XC{8gP_*gpao`~yIqA^<P=>(ng!n=1@*5P(Ve>j;*!g~8ATU>g2J z_AY?IYv?_0mIM$0{HaV71#S`qh7W(`6d-F9A{hLXB0%`?SD36tu!F&n1z-~X%FfTv zNCWdE06y@S1Ng5Y42}_K&)}73=hFi)D*ZpK<lGU3++oY`SBRh^I7Z!V;ydDx1Au*n zN#08T?*SaSL*R8KN9s8BQo98Hbo&O1%F>x?M#pr-awz@(WHSO}6~~MvPBrDkOKjcJ zesjUGz8lzgUy#bq5l>YtyUMyRvIsDt0*wNO!XfO<=%F*+oX@r=e{VZ^o@W&$g?dGB zZ~2%v5I<HPOryC%{S!34nJhPMMB%Mv`$1uLs>wQDHk>Pqp{xn;92_~dsl7Bf&oWcl z0%N65I(eS=NXfeSf7igNPe^9^s!AmmU8vjx7#9$zBZ4)6ugMod*d64(lY0`%vFHgr z0{E=Bl$ry0B(Ws((|Y8ixuPL|CZGS-75o+Qd)>wqDY8`8-dRSzk)?n|HHwRR0w<)D zz69u|DaU)o2pfgJ=BOFR5Df-xNlBtBgg&Wlmg?TQ&Bzyh$tCm{^@CW-v48}JOkhv6 zf@(PUNIOVy7$)pVov$N+LIhtSAN)vg=ojpLC!Z;Yotq8^&v5GhPH^Zi>@Cn>T;!bl z0Wt-26lvi;`O7%$$x`uwqC%rC^mA?rd%>wIa<9lgcgbf)VQ;N~y&=vRKRNfFzyybZ z!JcUWBsdHV_DnKBg2Mn|uWbP&IP@I$+DHKj4g-Qc8v;mh=rQcs5<pWp93<akU<3AS zFu=KRXe^%vO!}?Eo+|+)IP?VeY^H#7;qW#h=il0fJ(mK|g~J7a2j+0tqcSdR!=B3& zP^bQdLj6<ldvWssr_P;`WStd&Z#GZL)f6#a<UfyK&lv}~oFho5QpO0s`&jktrBkuH zoFU|e!r@-Q1)<wYk?uw=Bc1ChV%|yp8^P~=#z45CvO8rRALa-;0{DVoCpRdE$Iwkw zt}pOlsu*7;i5du6`;LJCc7n*}MK`!F0vI=_JPrbol{pEZ6ec-b2EGW=KoWqWGB~t; zSy_?*O8I{np#X+Ha6s47)*piayodt63V=)g_nrfM6#%E!?==Uw7C;R7-)j!&df577 z5`gn4;G+Pz<$td^z()aaZ2jJHfJ*_yl>fcufUak)KSlvKjRL+2fNTEumIHhffUVZw z1F!_}jMLjcmaum>@-7L$ZT`Q;&le_)=sdpDvg_D5z?A@|4)T9-PyS9Iz9IeA_Ol7Q zhIPVH0Jii04Nfy=PBq2(hW1_w>lFw1B!D(re}>az*DEx;!L(1?JffZHZFVsWAVd52 z{}qt8zp!G*v=7sexD$vji$MTwU;mdOPiAj)E@P-)n`0Uh{pk<L^W665A^+Vz4D7cj z*ms>RYqno%Zu>yTy7YWM1pBt?4;KQcEBM`o`<w~(TeZhL&j*tI3}_vdeb6y4Ip@2U z8bYH_H}L#FAW&N?An$<F!<T<S{v^&jtuu%Gp_D!y^YMb~cP}`g8*u(#mh!mF)^v^E z<jLE6+Ged$o;Ny|Fgd`3{Quf;AJ?>v%3f*ROV7E@<Gs4(fROTkPmni7kk>PK-n|Bp zc-P?A&N;xQ^D{w(%?v|c)^Zt4LgGxYea2A$H-f^NqVgNdWifTtQD-+C1<*AAFEuOq z!Em@Y-S6-r=y&jf1ANT?*Lj{lTZBAYkoYV(U#A?<_2~M)htmvVJE&h|U5w@XFn`b! zor|jLc|>Kqt&A(U?GNxI|4%f-{j*I#IujC~HPgbx2M*{u>;NhTU>+fVIYQBsx4`M8 z$3EXP_(JEn(CA6rP}w0EjIz=pWNVtZj~WLbN|hnA4OM7p6Gsl{o&wcPD582e0QkhA zD_E5O`wHj3QRRI>n6rky)45L-!_9q3{bU>ja84*&5j1TPzHO;2D@%13v;g*0S>NEn z6lw<TNM#y9J~3vr0tf~2Y(XL$0c0AGS6ui1Ks@%N)Gq)9A7mj5Ky_(1h59B9u2$T9 zGS#?b3|0VpLE%<7-Egr*vMtrcO3+B2LKeWWav8Lvyv7akOhMupKPS%K+h72f?+Zxg wfpt?ABmpE#0!WqwkSqxxSrS09$n5_C0PGdfvWQ>;P5=M^07*qoM6N<$f@<3ON&o-= literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star_filled2.imageset/Contents.json b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star_filled2.imageset/Contents.json new file mode 100644 index 0000000..9fe890d --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star_filled2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "rating_star_filled2.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star_filled2.imageset/rating_star_filled2.png b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/rating_star_filled2.imageset/rating_star_filled2.png new file mode 100644 index 0000000000000000000000000000000000000000..b804593df5c55fc2cac69e2abe80e64630998b75 GIT binary patch literal 4341 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 literal 0 HcmV?d00001 diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 920a6a1..1409a26 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -11,6 +11,7 @@ <string>Akkurat-Bold</string> <string>Akkurat-Bold</string> <string>Akkurat-Bold</string> + <string>Akkurat-Bold</string> </mutableArray> <mutableArray key="Akkurat Regular.otf"> <string>Akkurat</string> @@ -23,6 +24,11 @@ <string>Akkurat</string> <string>Akkurat</string> <string>Akkurat</string> + <string>Akkurat</string> + <string>Akkurat</string> + <string>Akkurat</string> + <string>Akkurat</string> + <string>Akkurat</string> </mutableArray> </customFonts> <scenes> @@ -255,28 +261,17 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i6F-Oe-4xR"> - <rect key="frame" x="300" y="426" width="300" height="50"/> - <animations/> - <color key="backgroundColor" red="1" green="0.5210467205" blue="0.69047673470000004" alpha="1" colorSpace="calibratedRGB"/> - <constraints> - <constraint firstAttribute="height" constant="50" id="hZN-AM-gYR"/> - </constraints> - <state key="normal" title="Add to Wish List"/> - <connections> - <action selector="addToWishListButtonTapped:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="pGb-oC-cak"/> - </connections> - </button> - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="twc-ko-3Rx"> - <rect key="frame" x="0.0" y="120" width="600" height="306"/> + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="twc-ko-3Rx"> + <rect key="frame" x="0.0" y="145" width="600" height="281"/> <animations/> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="separatorColor" cocoaTouchSystemColor="darkTextColor"/> <prototypes> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="APIResultsIdentifier" textLabel="wn8-3w-eKd" detailTextLabel="DsP-zu-9UZ" style="IBUITableViewCellStyleSubtitle" id="oHk-9R-1hr"> <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oHk-9R-1hr" id="Q9h-u4-3sZ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> @@ -302,44 +297,18 @@ </tableViewCell> </prototypes> </tableView> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4h9-oR-C40"> - <rect key="frame" x="0.0" y="70" width="600" height="50"/> - <subviews> - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Search" textAlignment="natural" clearsOnBeginEditing="YES" minimumFontSize="20" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="zob-sY-qha"> - <rect key="frame" x="40" y="10" width="520" height="30"/> - <animations/> - <constraints> - <constraint firstAttribute="width" constant="350" id="FjN-tR-Pz2"/> - </constraints> - <fontDescription key="fontDescription" type="system" pointSize="14"/> - <textInputTraits key="textInputTraits" autocapitalizationType="words" autocorrectionType="yes" spellCheckingType="yes"/> - <variation key="default"> - <mask key="constraints"> - <exclude reference="FjN-tR-Pz2"/> - </mask> - </variation> - </textField> - </subviews> - <animations/> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> - <constraints> - <constraint firstAttribute="trailing" secondItem="zob-sY-qha" secondAttribute="trailing" constant="40" id="2d1-5l-Hn0"/> - <constraint firstItem="zob-sY-qha" firstAttribute="leading" secondItem="4h9-oR-C40" secondAttribute="leading" constant="40" id="Yg5-BR-c5k"/> - <constraint firstItem="zob-sY-qha" firstAttribute="centerX" secondItem="4h9-oR-C40" secondAttribute="centerX" id="cbv-OU-esH"/> - <constraint firstAttribute="height" constant="50" id="fyg-AW-jv6"/> - <constraint firstItem="zob-sY-qha" firstAttribute="centerY" secondItem="4h9-oR-C40" secondAttribute="centerY" id="x76-Iu-Ldy"/> - </constraints> - </view> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q0c-Ez-WJB"> <rect key="frame" x="0.0" y="426" width="300" height="50"/> <animations/> - <color key="backgroundColor" red="0.75457596599999999" green="0.86496030550000003" blue="1" alpha="1" colorSpace="calibratedRGB"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstAttribute="height" constant="50" id="Obp-pq-hKR"/> </constraints> - <state key="normal" title="Create Journal Entry"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> + <state key="normal" title="Add to Journal"> + <color key="titleColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + </state> <connections> - <action selector="createJournalEntryButtonTapped:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="tTN-M9-kCZ"/> <segue destination="aXS-um-aw2" kind="show" identifier="pushToCreateJournalEntry" id="a4i-zx-cvK"/> </connections> </button> @@ -350,7 +319,7 @@ <constraints> <constraint firstAttribute="height" constant="50" id="nSu-DZ-G40"/> </constraints> - <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> <state key="normal" title="music"> <color key="titleColor" red="1" green="0.96580194144491827" blue="0.065849877366854659" alpha="1" colorSpace="calibratedRGB"/> </state> @@ -362,7 +331,7 @@ <rect key="frame" x="120" y="20" width="120" height="50"/> <animations/> <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> - <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> <state key="normal" title="movie"> <color key="titleColor" red="0.0" green="0.98431378599999997" blue="0.31764706970000001" alpha="1" colorSpace="deviceRGB"/> </state> @@ -374,6 +343,7 @@ <rect key="frame" x="480" y="20" width="120" height="50"/> <animations/> <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> <state key="normal" title="book"> <color key="titleColor" red="1" green="0.30034427511886808" blue="0.46572456648647631" alpha="1" colorSpace="calibratedRGB"/> </state> @@ -385,7 +355,7 @@ <rect key="frame" x="360" y="20" width="120" height="50"/> <animations/> <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> - <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> <state key="normal" title="podcast"> <color key="titleColor" red="0.98580998180000001" green="0.62003214620000002" blue="0.067037612610000005" alpha="1" colorSpace="calibratedRGB"/> </state> @@ -397,7 +367,7 @@ <rect key="frame" x="240" y="20" width="120" height="50"/> <animations/> <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> - <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> <state key="normal" title="tv"> <color key="titleColor" red="0.68431816999999995" green="0.90332986250000002" blue="1" alpha="1" colorSpace="calibratedRGB"/> </state> @@ -405,9 +375,52 @@ <action selector="mediaButtonTypeSelected:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="OaW-gN-Lra"/> </connections> </button> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4h9-oR-C40"> + <rect key="frame" x="0.0" y="70" width="600" height="75"/> + <subviews> + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="search for title" textAlignment="center" clearsOnBeginEditing="YES" minimumFontSize="20" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="zob-sY-qha"> + <rect key="frame" x="40" y="22.5" width="520" height="30"/> + <animations/> + <constraints> + <constraint firstAttribute="width" constant="350" id="FjN-tR-Pz2"/> + </constraints> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> + <textInputTraits key="textInputTraits" autocapitalizationType="words" autocorrectionType="yes" spellCheckingType="yes"/> + <variation key="default"> + <mask key="constraints"> + <exclude reference="FjN-tR-Pz2"/> + </mask> + </variation> + </textField> + </subviews> + <animations/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <constraints> + <constraint firstAttribute="trailing" secondItem="zob-sY-qha" secondAttribute="trailing" constant="40" id="2d1-5l-Hn0"/> + <constraint firstItem="zob-sY-qha" firstAttribute="leading" secondItem="4h9-oR-C40" secondAttribute="leading" constant="40" id="Yg5-BR-c5k"/> + <constraint firstItem="zob-sY-qha" firstAttribute="centerX" secondItem="4h9-oR-C40" secondAttribute="centerX" id="cbv-OU-esH"/> + <constraint firstAttribute="height" constant="75" id="fyg-AW-jv6"/> + <constraint firstItem="zob-sY-qha" firstAttribute="centerY" secondItem="4h9-oR-C40" secondAttribute="centerY" id="x76-Iu-Ldy"/> + </constraints> + </view> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i6F-Oe-4xR"> + <rect key="frame" x="300" y="426" width="300" height="50"/> + <animations/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <constraints> + <constraint firstAttribute="height" constant="50" id="hZN-AM-gYR"/> + </constraints> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> + <state key="normal" title="Add to Wish List"> + <color key="titleColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> + </state> + <connections> + <action selector="addToWishListButtonTapped:" destination="0x4-Nu-mZ8" eventType="touchUpInside" id="pGb-oC-cak"/> + </connections> + </button> </subviews> <animations/> - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstAttribute="trailing" secondItem="i6F-Oe-4xR" secondAttribute="trailing" id="1vY-Sv-N2G"/> <constraint firstItem="PPA-gt-rZ4" firstAttribute="top" secondItem="Q0c-Ez-WJB" secondAttribute="bottom" constant="75" id="3L8-sb-LAC"/> @@ -489,34 +502,34 @@ <constraint firstAttribute="height" constant="120" id="mgE-Dx-7HC"/> </constraints> </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HdG-mr-PTo"> - <rect key="frame" x="128" y="103" width="412" height="17"/> - <animations/> - <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> - <nil key="highlightedColor"/> - </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> - <rect key="frame" x="128" y="84" width="412" height="19"/> + <rect key="frame" x="128" y="82" width="412" height="20.5"/> <animations/> - <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="16"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <nil key="highlightedColor"/> </label> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oCt-vd-4RS"> - <rect key="frame" x="516" y="0.0" width="36" height="30"/> + <rect key="frame" x="502" y="0.0" width="50" height="30"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> - <state key="normal" title="Done"> + <state key="normal" title=" Done "> <color key="titleColor" red="0.98580998180000001" green="0.62003214620000002" blue="0.067037612610000005" alpha="1" colorSpace="calibratedRGB"/> </state> <connections> <action selector="doneEditingTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="Yvg-fL-af4"/> </connections> </button> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HdG-mr-PTo"> + <rect key="frame" x="128" y="103" width="412" height="17"/> + <animations/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <nil key="highlightedColor"/> + </label> </subviews> <animations/> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstItem="HdG-mr-PTo" firstAttribute="top" secondItem="f6q-RS-lgS" secondAttribute="bottom" id="2Li-DK-Gsd"/> <constraint firstAttribute="trailing" secondItem="oCt-vd-4RS" secondAttribute="trailing" constant="8" id="4sW-VU-zvV"/> @@ -549,7 +562,7 @@ <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0G1-Em-Jng"> <rect key="frame" x="464" y="0.0" width="106" height="50"/> <animations/> - <state key="normal" backgroundImage="rating_star"/> + <state key="normal" backgroundImage="rating_star2"/> <connections> <action selector="fiveStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="lF4-Jk-XCm"/> </connections> @@ -557,7 +570,7 @@ <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Hue-C5-PHW"> <rect key="frame" x="348" y="0.0" width="106" height="50"/> <animations/> - <state key="normal" backgroundImage="rating_star"/> + <state key="normal" backgroundImage="rating_star2"/> <connections> <action selector="fourStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="pCL-4u-Duz"/> </connections> @@ -565,7 +578,7 @@ <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZP9-Qg-4Le"> <rect key="frame" x="232" y="0.0" width="106" height="50"/> <animations/> - <state key="normal" backgroundImage="rating_star"/> + <state key="normal" backgroundImage="rating_star2"/> <connections> <action selector="threeStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="F0g-su-LVO"/> </connections> @@ -574,7 +587,7 @@ <rect key="frame" x="0.0" y="0.0" width="106" height="50"/> <animations/> <color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> - <state key="normal" image="rating_star"/> + <state key="normal" image="rating_star2"/> <state key="highlighted" image="rating_star_filled"/> <connections> <action selector="oneStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="5jC-Qf-LPh"/> @@ -583,7 +596,7 @@ <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ofM-BY-Yzj"> <rect key="frame" x="116" y="0.0" width="106" height="50"/> <animations/> - <state key="normal" backgroundImage="rating_star"> + <state key="normal" backgroundImage="rating_star2"> <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> </state> <state key="selected" backgroundImage="rating_star_filled"/> @@ -594,7 +607,7 @@ </button> </subviews> <animations/> - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstItem="Hue-C5-PHW" firstAttribute="width" secondItem="0G1-Em-Jng" secondAttribute="width" id="2FZ-ZI-T0C"/> <constraint firstItem="ZP9-Qg-4Le" firstAttribute="top" secondItem="BCK-ON-IjJ" secondAttribute="top" id="2p6-Tb-6HP"/> @@ -629,10 +642,10 @@ <rect key="frame" x="0.0" y="411" width="600" height="60"/> <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bIK-7d-Vfl"> - <rect key="frame" x="251" y="15" width="99" height="30"/> + <rect key="frame" x="233" y="13" width="134" height="33"/> <animations/> - <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="15"/> - <state key="normal" title="Log To Journal"> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> + <state key="normal" title=" Log To Journal "> <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> </state> <connections> @@ -641,7 +654,7 @@ </button> </subviews> <animations/> - <color key="backgroundColor" red="0.98580998180000001" green="0.62003214620000002" blue="0.067037612610000005" alpha="1" colorSpace="calibratedRGB"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstAttribute="height" constant="60" id="3us-vq-HY3"/> <constraint firstItem="bIK-7d-Vfl" firstAttribute="centerX" secondItem="ccY-ot-FYH" secondAttribute="centerX" id="67t-uq-gMg"/> @@ -651,12 +664,13 @@ <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="gMh-cq-aTG"> <rect key="frame" x="20" y="219" width="560" height="176"/> <animations/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="25"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> </textView> </subviews> <animations/> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstItem="3Hz-RL-Ugz" firstAttribute="trailing" secondItem="p3u-dw-cX6" secondAttribute="trailingMargin" id="1b0-Cy-sHW"/> <constraint firstItem="3Hz-RL-Ugz" firstAttribute="top" secondItem="35G-Te-D94" secondAttribute="bottom" id="CcV-Ir-Nos"/> @@ -724,11 +738,11 @@ <scene sceneID="WUv-ax-PAc"> <objects> <tableViewController title="Wish List" id="WZe-UX-wgc" customClass="WishListTableViewController" sceneMemberID="viewController"> - <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="64" sectionHeaderHeight="28" sectionFooterHeight="28" id="YJ5-uB-Kgw"> + <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="64" sectionHeaderHeight="28" sectionFooterHeight="28" id="YJ5-uB-Kgw"> <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <animations/> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <view key="tableHeaderView" contentMode="scaleToFill" id="t7Q-Vo-vCQ"> <rect key="frame" x="0.0" y="0.0" width="600" height="150"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> @@ -753,7 +767,7 @@ <nil key="highlightedColor"/> </label> </subviews> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="oKs-Fj-h2E" firstAttribute="top" secondItem="Df0-BF-gAU" secondAttribute="bottom" constant="-23" id="3fL-JR-23W"/> <constraint firstItem="Pix-v9-EmC" firstAttribute="centerX" secondItem="t7Q-Vo-vCQ" secondAttribute="centerX" id="9KS-hu-Ysd"/> @@ -771,11 +785,11 @@ </variation> </view> <prototypes> - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" accessoryType="disclosureIndicator" indentationWidth="10" shouldIndentWhileEditing="NO" reuseIdentifier="WishListIdentifier" rowHeight="64" id="Ej0-R4-rXa"> + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" accessoryType="disclosureIndicator" indentationWidth="10" shouldIndentWhileEditing="NO" rowHeight="64" id="Ej0-R4-rXa"> <rect key="frame" x="0.0" y="178" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> - <rect key="frame" x="0.0" y="0.0" width="567" height="63.5"/> + <rect key="frame" x="0.0" y="0.0" width="567" height="64"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="346-CT-Uvl"> @@ -875,17 +889,18 @@ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bI1-9Y-Lhn" userLabel="Blue View"> - <rect key="frame" x="20" y="325" width="560" height="101"/> + <rect key="frame" x="20" y="325" width="560" height="91"/> <subviews> - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" usesAttributedText="YES" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> - <rect key="frame" x="5" y="5" width="550" height="91"/> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> + <rect key="frame" x="5" y="5" width="550" height="81"/> <animations/> - <attributedString key="attributedText"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="25"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> </textView> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="tableCellGroupedBackgroundColor"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstItem="riX-qw-M2j" firstAttribute="leading" secondItem="bI1-9Y-Lhn" secondAttribute="leading" constant="5" id="9qy-ow-Nql"/> <constraint firstAttribute="trailing" secondItem="riX-qw-M2j" secondAttribute="trailing" constant="5" id="Gsp-CD-sDk"/> @@ -894,7 +909,7 @@ </constraints> </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ly8-tU-R6b"> - <rect key="frame" x="35" y="426" width="530" height="50"/> + <rect key="frame" x="35" y="416" width="530" height="50"/> <subviews> <button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="M7h-zf-QrN"> <rect key="frame" x="216" y="0.0" width="98" height="50"/> @@ -918,7 +933,7 @@ </button> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstItem="JU3-mC-wxo" firstAttribute="top" secondItem="Ly8-tU-R6b" secondAttribute="top" id="2Tf-0t-JRM"/> <constraint firstItem="zLL-Ls-a62" firstAttribute="width" secondItem="M7h-zf-QrN" secondAttribute="width" id="BHh-BK-YdV"/> @@ -955,12 +970,12 @@ <rect key="frame" x="20" y="476" width="280" height="75"/> <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1br-zx-rKo"> - <rect key="frame" x="98" y="23" width="84" height="30"/> + <rect key="frame" x="92" y="21" width="96" height="33"/> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> - <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="15"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> <state key="normal" title=" RETURN "> - <color key="titleColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="titleColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> </state> <connections> <action selector="deleteButtonTapped:" destination="z1K-z0-Vef" eventType="touchUpInside" id="umA-zo-2bu"/> @@ -968,7 +983,7 @@ </button> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstAttribute="height" constant="100" id="4cP-Gz-KpJ"/> <constraint firstItem="1br-zx-rKo" firstAttribute="centerX" secondItem="x4f-Ym-z1V" secondAttribute="centerX" id="97n-xh-93f"/> @@ -985,9 +1000,9 @@ <rect key="frame" x="300" y="476" width="280" height="75"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Facebook" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Qia-hv-Okp"> - <rect key="frame" x="103" y="27" width="74.5" height="20.5"/> - <fontDescription key="fontDescription" type="system" pointSize="17"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <rect key="frame" x="102" y="27" width="76.5" height="20.5"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> </subviews> @@ -1007,60 +1022,41 @@ <rect key="frame" x="20" y="250" width="560" height="75"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RUW-ww-VHC"> - <rect key="frame" x="10" y="31" width="540" height="17"/> + <rect key="frame" x="10" y="25" width="540" height="17"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <nil key="highlightedColor"/> </label> - <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="IKw-fC-6K4"> - <rect key="frame" x="10" y="5" width="540" height="21"/> - <subviews> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uPb-Kv-PyA"> - <rect key="frame" x="0.0" y="0.0" width="540" height="21"/> - <animations/> - <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="19"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> - <nil key="highlightedColor"/> - </label> - </subviews> - <constraints> - <constraint firstItem="uPb-Kv-PyA" firstAttribute="centerX" secondItem="IKw-fC-6K4" secondAttribute="centerX" id="hS6-oM-b42"/> - </constraints> - <variation key="default"> - <mask key="constraints"> - <exclude reference="hS6-oM-b42"/> - </mask> - </variation> - </stackView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eHa-Fq-bcU"> - <rect key="frame" x="10" y="53" width="540" height="17"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uPb-Kv-PyA"> + <rect key="frame" x="10" y="0.0" width="540" height="20.5"/> + <animations/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" text="Title" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eHa-Fq-bcU"> + <rect key="frame" x="10" y="48" width="540" height="22"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <nil key="highlightedColor"/> </label> </subviews> - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> - <constraint firstItem="IKw-fC-6K4" firstAttribute="leading" secondItem="DLn-Kf-i7J" secondAttribute="leading" constant="10" id="1bi-eY-etH"/> - <constraint firstItem="eHa-Fq-bcU" firstAttribute="top" secondItem="RUW-ww-VHC" secondAttribute="bottom" constant="5" id="8xJ-q0-da2"/> + <constraint firstAttribute="trailing" secondItem="uPb-Kv-PyA" secondAttribute="trailing" constant="10" id="9dy-H7-3rx"/> + <constraint firstItem="eHa-Fq-bcU" firstAttribute="top" secondItem="RUW-ww-VHC" secondAttribute="bottom" constant="5.5" id="HxD-t4-nxH"/> <constraint firstAttribute="trailing" secondItem="RUW-ww-VHC" secondAttribute="trailing" constant="10" id="I81-DF-sUO"/> <constraint firstAttribute="height" constant="75" id="IVL-4V-IKI"/> + <constraint firstItem="RUW-ww-VHC" firstAttribute="top" secondItem="uPb-Kv-PyA" secondAttribute="bottom" constant="5" id="NCU-bN-sFr"/> + <constraint firstItem="eHa-Fq-bcU" firstAttribute="leading" secondItem="DLn-Kf-i7J" secondAttribute="leading" constant="10" id="NfX-5o-5nc"/> <constraint firstItem="RUW-ww-VHC" firstAttribute="leading" secondItem="DLn-Kf-i7J" secondAttribute="leading" constant="10" id="T4f-b2-xi4"/> - <constraint firstItem="IKw-fC-6K4" firstAttribute="top" secondItem="DLn-Kf-i7J" secondAttribute="top" constant="5" id="U5O-h5-H0h"/> - <constraint firstItem="eHa-Fq-bcU" firstAttribute="leading" secondItem="DLn-Kf-i7J" secondAttribute="leading" constant="10" id="jfn-IA-DMZ"/> - <constraint firstAttribute="trailing" secondItem="IKw-fC-6K4" secondAttribute="trailing" constant="10" id="lCg-Ll-5sL"/> - <constraint firstItem="RUW-ww-VHC" firstAttribute="top" secondItem="IKw-fC-6K4" secondAttribute="bottom" constant="5" id="lmz-rv-5s8"/> - <constraint firstItem="IKw-fC-6K4" firstAttribute="centerX" secondItem="DLn-Kf-i7J" secondAttribute="centerX" id="qnS-3b-zLI"/> - <constraint firstAttribute="bottom" secondItem="eHa-Fq-bcU" secondAttribute="bottom" constant="5" id="v1t-Hh-ylQ"/> - <constraint firstAttribute="trailing" secondItem="eHa-Fq-bcU" secondAttribute="trailing" constant="10" id="yQ9-AI-sK9"/> + <constraint firstAttribute="trailing" secondItem="eHa-Fq-bcU" secondAttribute="trailing" constant="10" id="Vl9-PL-v5V"/> + <constraint firstItem="uPb-Kv-PyA" firstAttribute="top" secondItem="DLn-Kf-i7J" secondAttribute="top" id="cPx-3F-rDr"/> + <constraint firstAttribute="bottom" secondItem="eHa-Fq-bcU" secondAttribute="bottom" constant="5" id="dzZ-gQ-gFU"/> + <constraint firstItem="uPb-Kv-PyA" firstAttribute="leading" secondItem="DLn-Kf-i7J" secondAttribute="leading" constant="10" id="hqU-eA-14x"/> </constraints> - <variation key="default"> - <mask key="constraints"> - <exclude reference="qnS-3b-zLI"/> - </mask> - </variation> </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2sS-fd-D0X" userLabel="Pink View"> <rect key="frame" x="20" y="20" width="560" height="230"/> @@ -1081,7 +1077,7 @@ </imageView> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstItem="P8h-8Q-AZm" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="top" constant="5" id="4Iw-Mk-e5C"/> <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerY" secondItem="2sS-fd-D0X" secondAttribute="centerY" id="4vp-EM-f9w"/> @@ -1123,19 +1119,19 @@ </view> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstItem="Ly8-tU-R6b" firstAttribute="leading" secondItem="EZl-sI-Vwl" secondAttribute="leadingMargin" constant="15" id="1T0-Ze-kQC"/> <constraint firstItem="iJa-08-1GE" firstAttribute="width" secondItem="x4f-Ym-z1V" secondAttribute="width" id="2eT-qx-CF9"/> <constraint firstItem="bI1-9Y-Lhn" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="bottom" id="3c5-ik-Auq"/> <constraint firstItem="DF9-8P-jQU" firstAttribute="top" secondItem="x4f-Ym-z1V" secondAttribute="bottom" id="4Fa-3M-oyp"/> <constraint firstItem="bI1-9Y-Lhn" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="bottom" id="4JK-ES-1ri"/> - <constraint firstItem="x4f-Ym-z1V" firstAttribute="top" secondItem="Ly8-tU-R6b" secondAttribute="bottom" id="5op-S4-Rvd"/> + <constraint firstItem="x4f-Ym-z1V" firstAttribute="top" secondItem="Ly8-tU-R6b" secondAttribute="bottom" constant="10" id="5op-S4-Rvd"/> <constraint firstItem="2sS-fd-D0X" firstAttribute="top" secondItem="hxi-Oa-IvU" secondAttribute="bottom" id="6j7-Pw-W91"/> <constraint firstItem="P8h-8Q-AZm" firstAttribute="top" secondItem="hxi-Oa-IvU" secondAttribute="bottom" constant="15" id="8ZM-iZ-FzX"/> <constraint firstItem="DLn-Kf-i7J" firstAttribute="leading" secondItem="EZl-sI-Vwl" secondAttribute="leadingMargin" id="EXX-9N-Oxk"/> <constraint firstItem="2sS-fd-D0X" firstAttribute="trailing" secondItem="EZl-sI-Vwl" secondAttribute="trailingMargin" id="HN0-Bi-dhn"/> - <constraint firstItem="iJa-08-1GE" firstAttribute="top" secondItem="Ly8-tU-R6b" secondAttribute="bottom" id="HUk-f2-mkx"/> + <constraint firstItem="iJa-08-1GE" firstAttribute="top" secondItem="Ly8-tU-R6b" secondAttribute="bottom" constant="10" id="HUk-f2-mkx"/> <constraint firstItem="2sS-fd-D0X" firstAttribute="top" secondItem="hxi-Oa-IvU" secondAttribute="bottom" id="KCf-gF-e0e"/> <constraint firstItem="bI1-9Y-Lhn" firstAttribute="trailing" secondItem="EZl-sI-Vwl" secondAttribute="trailingMargin" id="N93-6I-U69"/> <constraint firstItem="P8h-8Q-AZm" firstAttribute="width" secondItem="EZl-sI-Vwl" secondAttribute="width" id="OFO-ZK-Q4N"/> @@ -1207,10 +1203,10 @@ </scene> </scenes> <resources> - <image name="rating_star" width="128" height="128"/> + <image name="rating_star2" width="128" height="128"/> <image name="rating_star_filled" width="128" height="128"/> </resources> <inferredMetricsTieBreakers> - <segue reference="Ggq-sb-ccX"/> + <segue reference="a4i-zx-cvK"/> </inferredMetricsTieBreakers> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index daedd26..bb50508 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -119,46 +119,46 @@ - (IBAction)fiveStarTapped:(id)sender - (void)resetStars { - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; - [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; - [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; - [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; - [self.starButtonFive setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; + [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; + [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; + [self.starButtonFive setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; } - (void)oneStarRating { self.rating = @1; // assign rating for parse - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; } - (void)twoStarRating { self.rating = @2; // assign rating for parse - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; } - (void)threeStarRating { self.rating = @3; // assign rating for parse - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; } - (void)fourStarRating { self.rating = @4; // assign rating for parse - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; } - (void)fiveStarRating { self.rating = @5; // assign rating for parse - [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starButtonFive setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starButtonFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starButtonFive setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; } #pragma mark - animate all diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h index f74ab29..a1021f1 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.h @@ -10,6 +10,8 @@ #import "JournalPost.h" #import "CreateJournalEntryViewController.h" + + @interface JournalMainCollectionViewController : UICollectionViewController { NSMutableArray *collectionImages; diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index aceae0c..5bf8d0e 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -10,6 +10,8 @@ #import <Parse/Parse.h> #import "ViewCompletedEntryViewController.h" + + @interface JournalMainCollectionViewController () @end @@ -134,6 +136,8 @@ -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ + + #pragma mark <UICollectionViewDelegate> /* diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib index 738fbc3..d25bee8 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.xib @@ -34,17 +34,19 @@ <rect key="frame" x="86" y="62" width="254" height="46"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TITLE" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Sl4-bL-ILp"> <rect key="frame" x="86" y="16" width="254" height="46"/> <animations/> - <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="16"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <nil key="highlightedColor"/> </label> </subviews> <animations/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstAttribute="bottomMargin" secondItem="y9p-St-OV6" secondAttribute="bottom" constant="8" id="77R-9I-uAO"/> <constraint firstItem="Fq8-dI-Pdu" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leadingMargin" constant="10" id="BKX-nf-3UF"/> diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.h b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.h index 35a3f41..0e4dbcf 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.h +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.h @@ -8,7 +8,8 @@ #import <UIKit/UIKit.h> +#import "YALTabBarInteracting.h" -@interface SearchAPIViewController : UIViewController +@interface SearchAPIViewController : UIViewController <YALTabBarInteracting> @end diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 9b2f397..4e6a185 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -87,12 +87,8 @@ - (IBAction)mediaButtonTypeSelected:(id)sender { #pragma mark - add to list buttons -- (IBAction)createJournalEntryButtonTapped:(id)sender { - -} - - (IBAction)addToWishListButtonTapped:(id)sender { - + JournalPost *myJournalPost = [[JournalPost alloc] init]; myJournalPost[@"title"] = self.passSearchResult.albumOrMovieName; @@ -103,11 +99,39 @@ - (IBAction)addToWishListButtonTapped:(id)sender { myJournalPost[@"reviewed"] = [NSNumber numberWithBool:NO]; [myJournalPost saveEventually]; // save your entry, even if offline - + [self.tabBarController setSelectedIndex:0]; + // clear search text view and reset tableView once data is passed + self.searchTextField.text = nil; + [self.searchResults removeAllObjects]; + [self.tableView reloadData]; + } +// these are the fancy tab bar buttons - need to figure out how to make them vanish on the createJournalViewController + +//- (void)extraLeftItemDidPress { +// NSLog(@"left button tapped"); +// +// JournalPost *myJournalPost = [[JournalPost alloc] init]; +// +// myJournalPost[@"title"] = self.passSearchResult.albumOrMovieName; +// myJournalPost[@"creator"] = self.passSearchResult.artistName; +// myJournalPost[@"dateEntered"] = [NSDate date]; +// myJournalPost[@"typeOfMedia"] = self.passSearchResult.mediaType; +// myJournalPost[@"imageForMedia"] = self.passSearchResult.artworkURL; +// myJournalPost[@"reviewed"] = [NSNumber numberWithBool:NO]; +// +// [myJournalPost saveEventually]; // save your entry, even if offline +// +// [self.tabBarController setSelectedIndex:0]; +//} +// +//- (void)extraRightItemDidPress { +// NSLog(@"right button tapped"); +//} + #pragma mark - API request - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term @@ -300,7 +324,7 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS return cell; } --(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ +-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ // here is where the data is passed iTunesSearchResult *searchResult = self.searchResults[indexPath.row]; @@ -314,6 +338,12 @@ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier]isEqualToString:@"pushToCreateJournalEntry"]) { CreateJournalEntryViewController *viewController = segue.destinationViewController; viewController.postSearchResult = self.passSearchResult; + + // clear text view and reset tableView once data is passed + self.searchTextField.text = nil; + [self.searchResults removeAllObjects]; + [self.tableView reloadData]; + } } @end diff --git a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m index aa5b2c5..32b0897 100644 --- a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m @@ -34,6 +34,11 @@ - (void)viewDidLoad{ self.completedCreatorLabel.text = self.journalPostDetail.creator; self.completedReviewTextView.text = self.journalPostDetail.postText; + self.completedReviewTextView.backgroundColor = [UIColor blackColor]; + [self.completedReviewTextView setTextColor:[UIColor whiteColor]]; + [self.completedReviewTextView setFont:[UIFont fontWithName:@"Akkurat" size:25]]; + + NSLog(@"stars: %@", self.journalPostDetail.starRating); // convert date to readable format @@ -65,40 +70,40 @@ - (void)viewDidLoad{ - (void)setupStars { if ([self.journalPostDetail.starRating isEqual:@1]) { - [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; - [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; - [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; - [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; + [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; + [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; + [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; } else if ([self.journalPostDetail.starRating isEqual:@2]) { - [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; - [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; - [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; + [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; + [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; } else if ([self.journalPostDetail.starRating isEqual:@3]) { - [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; - [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; + [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; } else if ([self.journalPostDetail.starRating isEqual:@4]) { - [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star.png"] forState:UIControlStateNormal]; + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; } else if ([self.journalPostDetail.starRating isEqual:@5]) { - [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; - [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star_filled.png"] forState:UIControlStateNormal]; + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; } } diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib index c3b81b0..53bbbc8 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib @@ -29,19 +29,20 @@ <constraint firstAttribute="width" constant="60" id="fag-dr-LW7"/> </constraints> </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TR1-Ae-Cd4"> - <rect key="frame" x="86" y="62.5" width="238" height="46"/> - <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> - <nil key="highlightedColor"/> - </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ywi-Ne-nLf"> <rect key="frame" x="86" y="16" width="238" height="46.5"/> - <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="16"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TR1-Ae-Cd4"> + <rect key="frame" x="86" y="63" width="238" height="46"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <nil key="highlightedColor"/> </label> </subviews> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstItem="Vb0-5u-rmQ" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="05Q-DJ-JMP"/> <constraint firstItem="TR1-Ae-Cd4" firstAttribute="leading" secondItem="Vb0-5u-rmQ" secondAttribute="trailing" constant="8" id="4aK-xN-uGi"/> diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index 4fcf729..e588d48 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -25,7 +25,7 @@ - (void)viewDidLoad self.allJournalPosts = [[NSMutableArray alloc]init]; } - NSLog(@"Wish List Result: %@",self.searchResult); + // NSLog(@"Wish List Result: %@",self.searchResult); // [self setUpSwipeGestures]; @@ -42,6 +42,8 @@ - (void)viewDidLoad [self pullEntriesFromParse]; } + + - (void)pullEntriesFromParse { // __weak typeof(self) weakSelf = self; // prevent memory leakage? @@ -114,6 +116,7 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N cell.artworkImage.image = image; + // format table view lines cell.preservesSuperviewLayoutMargins = false; cell.separatorInset = UIEdgeInsetsZero; cell.layoutMargins = UIEdgeInsetsZero; From 0d9726f9a7b7d13af116b924c9882b3cc9f7e8fb Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Mon, 19 Oct 2015 22:33:15 -0400 Subject: [PATCH 70/86] added facebook shareability --- .DS_Store | Bin 8196 -> 8196 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 78 ++++++++++-------- .../ViewCompletedEntryViewController.m | 23 +++++- 3 files changed, 65 insertions(+), 36 deletions(-) diff --git a/.DS_Store b/.DS_Store index 6a68428d6c704f2cf4af33a8654468e0a3dc9c06..230b4e2a70d055d8f79ad89ebfd4c53ba322ebc3 100644 GIT binary patch delta 21 ccmZp1XmQx^Qjo*Q)Ko{o$kc4}M?qme08jb`mH+?% delta 21 ccmZp1XmQx^Qjo*Y#8gMY$k1f-M?qme08hCFjsO4v diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 1409a26..e48a763 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -46,7 +46,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -229,7 +229,7 @@ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="lets add the social stuff over here! " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qLr-OV-7JA"> - <rect key="frame" x="165" y="290" width="270.5" height="20.5"/> + <rect key="frame" x="165" y="290" width="271" height="21"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> @@ -247,7 +247,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="Ure-Ti-78A" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1285" y="2512"/> + <point key="canvasLocation" x="1293" y="2504"/> </scene> <!--Search --> <scene sceneID="eAD-0s-cgb"> @@ -264,8 +264,8 @@ <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="twc-ko-3Rx"> <rect key="frame" x="0.0" y="145" width="600" height="281"/> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> - <color key="separatorColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <color key="separatorColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <prototypes> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="APIResultsIdentifier" textLabel="wn8-3w-eKd" detailTextLabel="DsP-zu-9UZ" style="IBUITableViewCellStyleSubtitle" id="oHk-9R-1hr"> <rect key="frame" x="0.0" y="28" width="600" height="44"/> @@ -275,7 +275,7 @@ <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> - <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> + <rect key="frame" x="15" y="5" width="32" height="20"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="16"/> @@ -283,7 +283,7 @@ <nil key="highlightedColor"/> </label> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> - <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> + <rect key="frame" x="15" y="25" width="41" height="14"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="11"/> @@ -300,13 +300,13 @@ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q0c-Ez-WJB"> <rect key="frame" x="0.0" y="426" width="300" height="50"/> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstAttribute="height" constant="50" id="Obp-pq-hKR"/> </constraints> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> <state key="normal" title="Add to Journal"> - <color key="titleColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="titleColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> </state> <connections> <segue destination="aXS-um-aw2" kind="show" identifier="pushToCreateJournalEntry" id="a4i-zx-cvK"/> @@ -379,7 +379,7 @@ <rect key="frame" x="0.0" y="70" width="600" height="75"/> <subviews> <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="search for title" textAlignment="center" clearsOnBeginEditing="YES" minimumFontSize="20" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="zob-sY-qha"> - <rect key="frame" x="40" y="22.5" width="520" height="30"/> + <rect key="frame" x="40" y="23" width="520" height="30"/> <animations/> <constraints> <constraint firstAttribute="width" constant="350" id="FjN-tR-Pz2"/> @@ -394,7 +394,7 @@ </textField> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstAttribute="trailing" secondItem="zob-sY-qha" secondAttribute="trailing" constant="40" id="2d1-5l-Hn0"/> <constraint firstItem="zob-sY-qha" firstAttribute="leading" secondItem="4h9-oR-C40" secondAttribute="leading" constant="40" id="Yg5-BR-c5k"/> @@ -406,7 +406,7 @@ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i6F-Oe-4xR"> <rect key="frame" x="300" y="426" width="300" height="50"/> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstAttribute="height" constant="50" id="hZN-AM-gYR"/> </constraints> @@ -420,7 +420,7 @@ </button> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstAttribute="trailing" secondItem="i6F-Oe-4xR" secondAttribute="trailing" id="1vY-Sv-N2G"/> <constraint firstItem="PPA-gt-rZ4" firstAttribute="top" secondItem="Q0c-Ez-WJB" secondAttribute="bottom" constant="75" id="3L8-sb-LAC"/> @@ -503,10 +503,10 @@ </constraints> </imageView> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> - <rect key="frame" x="128" y="82" width="412" height="20.5"/> + <rect key="frame" x="128" y="82" width="412" height="21"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> - <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oCt-vd-4RS"> @@ -524,12 +524,12 @@ <rect key="frame" x="128" y="103" width="412" height="17"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> - <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="HdG-mr-PTo" firstAttribute="top" secondItem="f6q-RS-lgS" secondAttribute="bottom" id="2Li-DK-Gsd"/> <constraint firstAttribute="trailing" secondItem="oCt-vd-4RS" secondAttribute="trailing" constant="8" id="4sW-VU-zvV"/> @@ -607,7 +607,7 @@ </button> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="Hue-C5-PHW" firstAttribute="width" secondItem="0G1-Em-Jng" secondAttribute="width" id="2FZ-ZI-T0C"/> <constraint firstItem="ZP9-Qg-4Le" firstAttribute="top" secondItem="BCK-ON-IjJ" secondAttribute="top" id="2p6-Tb-6HP"/> @@ -654,7 +654,7 @@ </button> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstAttribute="height" constant="60" id="3us-vq-HY3"/> <constraint firstItem="bIK-7d-Vfl" firstAttribute="centerX" secondItem="ccY-ot-FYH" secondAttribute="centerX" id="67t-uq-gMg"/> @@ -664,13 +664,13 @@ <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="gMh-cq-aTG"> <rect key="frame" x="20" y="219" width="560" height="176"/> <animations/> - <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="25"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> </textView> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="3Hz-RL-Ugz" firstAttribute="trailing" secondItem="p3u-dw-cX6" secondAttribute="trailingMargin" id="1b0-Cy-sHW"/> <constraint firstItem="3Hz-RL-Ugz" firstAttribute="top" secondItem="35G-Te-D94" secondAttribute="bottom" id="CcV-Ir-Nos"/> @@ -742,19 +742,21 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <view key="tableHeaderView" contentMode="scaleToFill" id="t7Q-Vo-vCQ"> <rect key="frame" x="0.0" y="0.0" width="600" height="150"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WISH" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Df0-BF-gAU"> <rect key="frame" x="173" y="45" width="126" height="59"/> + <animations/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="50"/> <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Pix-v9-EmC"> <rect key="frame" x="299" y="33" width="2" height="117"/> + <animations/> <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> <constraints> <constraint firstAttribute="width" constant="2" id="jRL-xR-JIZ"/> @@ -762,11 +764,13 @@ </view> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="LIST" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oKs-Fj-h2E"> <rect key="frame" x="301" y="81" width="101" height="59"/> + <animations/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="50"/> <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> </subviews> + <animations/> <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="oKs-Fj-h2E" firstAttribute="top" secondItem="Df0-BF-gAU" secondAttribute="bottom" constant="-23" id="3fL-JR-23W"/> @@ -894,13 +898,13 @@ <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> <rect key="frame" x="5" y="5" width="550" height="81"/> <animations/> - <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="25"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> </textView> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="riX-qw-M2j" firstAttribute="leading" secondItem="bI1-9Y-Lhn" secondAttribute="leading" constant="5" id="9qy-ow-Nql"/> <constraint firstAttribute="trailing" secondItem="riX-qw-M2j" secondAttribute="trailing" constant="5" id="Gsp-CD-sDk"/> @@ -933,7 +937,7 @@ </button> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="JU3-mC-wxo" firstAttribute="top" secondItem="Ly8-tU-R6b" secondAttribute="top" id="2Tf-0t-JRM"/> <constraint firstItem="zLL-Ls-a62" firstAttribute="width" secondItem="M7h-zf-QrN" secondAttribute="width" id="BHh-BK-YdV"/> @@ -1000,12 +1004,14 @@ <rect key="frame" x="300" y="476" width="280" height="75"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Facebook" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Qia-hv-Okp"> - <rect key="frame" x="102" y="27" width="76.5" height="20.5"/> + <rect key="frame" x="102" y="27" width="77" height="21"/> + <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> </subviews> + <animations/> <color key="backgroundColor" red="0.99607843139999996" green="0.79215686269999996" blue="0.086274509799999996" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstAttribute="height" constant="100" id="DnT-BB-V1g"/> @@ -1022,28 +1028,29 @@ <rect key="frame" x="20" y="250" width="560" height="75"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RUW-ww-VHC"> - <rect key="frame" x="10" y="25" width="540" height="17"/> + <rect key="frame" x="10" y="26" width="540" height="17"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> - <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uPb-Kv-PyA"> - <rect key="frame" x="10" y="0.0" width="540" height="20.5"/> + <rect key="frame" x="10" y="0.0" width="540" height="21"/> <animations/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> - <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" text="Title" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eHa-Fq-bcU"> <rect key="frame" x="10" y="48" width="540" height="22"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> - <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> </subviews> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <animations/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstAttribute="trailing" secondItem="uPb-Kv-PyA" secondAttribute="trailing" constant="10" id="9dy-H7-3rx"/> <constraint firstItem="eHa-Fq-bcU" firstAttribute="top" secondItem="RUW-ww-VHC" secondAttribute="bottom" constant="5.5" id="HxD-t4-nxH"/> @@ -1077,7 +1084,7 @@ </imageView> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="P8h-8Q-AZm" firstAttribute="top" secondItem="2sS-fd-D0X" secondAttribute="top" constant="5" id="4Iw-Mk-e5C"/> <constraint firstItem="P8h-8Q-AZm" firstAttribute="centerY" secondItem="2sS-fd-D0X" secondAttribute="centerY" id="4vp-EM-f9w"/> @@ -1119,7 +1126,7 @@ </view> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="Ly8-tU-R6b" firstAttribute="leading" secondItem="EZl-sI-Vwl" secondAttribute="leadingMargin" constant="15" id="1T0-Ze-kQC"/> <constraint firstItem="iJa-08-1GE" firstAttribute="width" secondItem="x4f-Ym-z1V" secondAttribute="width" id="2eT-qx-CF9"/> @@ -1170,6 +1177,7 @@ <outlet property="completedImageView" destination="P8h-8Q-AZm" id="sk9-0A-QLf"/> <outlet property="completedReviewTextView" destination="riX-qw-M2j" id="UdV-2Z-9cW"/> <outlet property="completedTitleLabel" destination="uPb-Kv-PyA" id="FcS-Tt-BME"/> + <outlet property="facebookView" destination="iJa-08-1GE" id="OOL-Xh-9Cp"/> <outlet property="starFive" destination="Pt8-eG-uys" id="s1N-26-ZG1"/> <outlet property="starFour" destination="JU3-mC-wxo" id="PvC-UX-v3N"/> <outlet property="starOne" destination="rcY-Tz-IPf" id="WMP-nm-ES0"/> diff --git a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m index 32b0897..eb9cca5 100644 --- a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m @@ -7,6 +7,8 @@ // #import "ViewCompletedEntryViewController.h" +#import <FBSDKCoreKit/FBSDKCoreKit.h> +#import <FBSDKShareKit/FBSDKShareKit.h> @interface ViewCompletedEntryViewController () @@ -15,6 +17,7 @@ @interface ViewCompletedEntryViewController () @property (weak, nonatomic) IBOutlet UILabel *completedCreatorLabel; @property (weak, nonatomic) IBOutlet UILabel *completedDateLabel; // review written on @property (weak, nonatomic) IBOutlet UITextView *completedReviewTextView; +@property (strong, nonatomic) IBOutlet UIView *facebookView; @property (weak, nonatomic) IBOutlet UIButton *starOne; @property (weak, nonatomic) IBOutlet UIButton *starTwo; @@ -30,6 +33,8 @@ @implementation ViewCompletedEntryViewController - (void)viewDidLoad{ [super viewDidLoad]; + [self setupFacebookShare]; + self.completedTitleLabel.text = self.journalPostDetail.title; self.completedCreatorLabel.text = self.journalPostDetail.creator; self.completedReviewTextView.text = self.journalPostDetail.postText; @@ -64,7 +69,23 @@ - (void)viewDidLoad{ [self setupStars]; } - +- (void) setupFacebookShare { + FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc]init]; + NSString *titleString = [NSString stringWithFormat:@"Check out my review of %@!",self.journalPostDetail.title]; + NSString *descriptionString = [NSString stringWithFormat:@"%@",self.journalPostDetail.postText]; + + content.contentTitle = titleString; + content.contentDescription = descriptionString; + content.imageURL = [NSURL URLWithString:self.journalPostDetail.imageForMedia]; + + + FBSDKShareButton *shareButton = [[FBSDKShareButton alloc]initWithFrame:CGRectMake(0, 0, self.facebookView.frame.size.width, self.facebookView.frame.size.height)]; + shareButton.shareContent = content; + //shareButton.center = self.view.center; + + [self.facebookView addSubview:shareButton]; + +} #pragma mark - stars - (void)setupStars { From feb37b34e71527154460fcc4f9e5520a50c6780e Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Mon, 19 Oct 2015 22:47:27 -0400 Subject: [PATCH 71/86] added settings View controller files and facebook login --- .../Unit-2-Journal.xcodeproj/project.pbxproj | 6 +++ .../Unit-2-Journal/Base.lproj/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 8 ++-- .../Unit-2-Journal/SettingsViewController.h | 13 ++++++ .../Unit-2-Journal/SettingsViewController.m | 44 ++++++++++++++++++ 5 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 Unit-2-Journal/Unit-2-Journal/SettingsViewController.h create mode 100644 Unit-2-Journal/Unit-2-Journal/SettingsViewController.m diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index db00ff0..6afa620 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -45,6 +45,7 @@ 9A2FFC3B1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 9A2FFC391BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld */; }; 9A2FFC3D1BC84BF200E880D3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A2FFC3C1BC84BF200E880D3 /* Assets.xcassets */; }; 9A34656D1BCACDF40049337C /* iTunesSearchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A34656C1BCACDF40049337C /* iTunesSearchResult.m */; settings = {ASSET_TAGS = (); }; }; + 9A51FF311BD5DF9F00B6AE23 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A51FF301BD5DF9F00B6AE23 /* SettingsViewController.m */; settings = {ASSET_TAGS = (); }; }; 9AAB40061BC9FABC00FD7227 /* APIManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AAB40051BC9FABC00FD7227 /* APIManager.m */; settings = {ASSET_TAGS = (); }; }; /* End PBXBuildFile section */ @@ -106,6 +107,8 @@ 9A2FFC411BC84BF200E880D3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 9A34656B1BCACDF40049337C /* iTunesSearchResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iTunesSearchResult.h; sourceTree = "<group>"; }; 9A34656C1BCACDF40049337C /* iTunesSearchResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iTunesSearchResult.m; sourceTree = "<group>"; }; + 9A51FF2F1BD5DF9F00B6AE23 /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = "<group>"; }; + 9A51FF301BD5DF9F00B6AE23 /* SettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsViewController.m; sourceTree = "<group>"; }; 9AAB40041BC9FABC00FD7227 /* APIManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIManager.h; sourceTree = "<group>"; }; 9AAB40051BC9FABC00FD7227 /* APIManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APIManager.m; sourceTree = "<group>"; }; FAF24AD380284C55768010A2 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -244,6 +247,8 @@ 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */, 4D7FE2921BCC12050036E58E /* TabBarViewController.h */, 4D7FE2931BCC12050036E58E /* TabBarViewController.m */, + 9A51FF2F1BD5DF9F00B6AE23 /* SettingsViewController.h */, + 9A51FF301BD5DF9F00B6AE23 /* SettingsViewController.m */, ); name = ViewControllers; sourceTree = "<group>"; @@ -406,6 +411,7 @@ 4DCBE14A1BC9ADAE0075BA2C /* CreateJournalEntryViewController.m in Sources */, 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */, 4DCBE1321BC98EF90075BA2C /* JournalMainCollectionViewController.m in Sources */, + 9A51FF311BD5DF9F00B6AE23 /* SettingsViewController.m in Sources */, 4DCBE1471BC9AD6A0075BA2C /* SearchAPIViewController.m in Sources */, 9A2FFC3B1BC84BF200E880D3 /* Unit_2_Journal.xcdatamodeld in Sources */, 9A2937201BCC26FE00ACEEE0 /* JournalPost.m in Sources */, diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/.DS_Store b/Unit-2-Journal/Unit-2-Journal/Base.lproj/.DS_Store index bdbe8ca501818d56545037d6bde62dea08f24914..64192e734fbda2287e190d46b588a2423fed8b43 100644 GIT binary patch delta 79 zcmZoMXfc=|#>CJ*u~2NHo}wrt0|NsP3otO~F%&bDFyu27F;q@0RA*$|9L2bnZSn@j hbDP;Y_&I<&HZNrS&ODi4#E_9;vJH>)<`|I`%mCe56M+B# delta 119 zcmZoMXfc=|#>B`mu~2NHo}wrd0|Nsi1A_nqLo!1KLokpmVo05MartBe5f*WA1|Nn* zhEj$+WJ#d(G<9A#pgs*CX8Ql1fnj6MTDHyX9Q+(Wb2nc6&ODi4#E=7MDnkPhZ}t$` G!wdlO!x~5c diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index e48a763..5d459f1 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -219,7 +219,8 @@ <!--settings--> <scene sceneID="PlQ-SS-pZx"> <objects> - <viewController title="settings" id="Oeh-Ah-1CX" sceneMemberID="viewController"> + <placeholder placeholderIdentifier="IBFirstResponder" id="Ure-Ti-78A" userLabel="First Responder" sceneMemberID="firstResponder"/> + <viewController title="settings" id="Oeh-Ah-1CX" customClass="SettingsViewController" sceneMemberID="viewController"> <layoutGuides> <viewControllerLayoutGuide type="top" id="OjC-qE-o96"/> <viewControllerLayoutGuide type="bottom" id="HPN-sF-Bn8"/> @@ -228,8 +229,8 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="lets add the social stuff over here! " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qLr-OV-7JA"> - <rect key="frame" x="165" y="290" width="271" height="21"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qLr-OV-7JA"> + <rect key="frame" x="436" y="290" width="0.0" height="0.0"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> @@ -245,7 +246,6 @@ </view> <tabBarItem key="tabBarItem" title="Item" id="aF0-rA-Z24"/> </viewController> - <placeholder placeholderIdentifier="IBFirstResponder" id="Ure-Ti-78A" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> <point key="canvasLocation" x="1293" y="2504"/> </scene> diff --git a/Unit-2-Journal/Unit-2-Journal/SettingsViewController.h b/Unit-2-Journal/Unit-2-Journal/SettingsViewController.h new file mode 100644 index 0000000..148094b --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/SettingsViewController.h @@ -0,0 +1,13 @@ +// +// SettingsViewController.h +// Unit-2-Journal +// +// Created by Jamaal Sedayao on 10/19/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface SettingsViewController : UIViewController + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/SettingsViewController.m b/Unit-2-Journal/Unit-2-Journal/SettingsViewController.m new file mode 100644 index 0000000..c27d9d5 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/SettingsViewController.m @@ -0,0 +1,44 @@ +// +// SettingsViewController.m +// Unit-2-Journal +// +// Created by Jamaal Sedayao on 10/19/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "SettingsViewController.h" +#import <FBSDKCoreKit/FBSDKCoreKit.h> +#import <FBSDKLoginKit/FBSDKLoginKit.h> + + +@interface SettingsViewController () + +@end + +@implementation SettingsViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + + FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc]init]; + loginButton.center = self.view.center; + [self.view addSubview:loginButton]; + +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end From 285c01dcb11241e033e84df013c5bd6bff5398c3 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Tue, 20 Oct 2015 18:53:14 -0400 Subject: [PATCH 72/86] changed social view color --- .../Unit-2-Journal/Base.lproj/Main.storyboard | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 5d459f1..a0c5c69 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -46,7 +46,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -219,7 +219,6 @@ <!--settings--> <scene sceneID="PlQ-SS-pZx"> <objects> - <placeholder placeholderIdentifier="IBFirstResponder" id="Ure-Ti-78A" userLabel="First Responder" sceneMemberID="firstResponder"/> <viewController title="settings" id="Oeh-Ah-1CX" customClass="SettingsViewController" sceneMemberID="viewController"> <layoutGuides> <viewControllerLayoutGuide type="top" id="OjC-qE-o96"/> @@ -238,7 +237,7 @@ </label> </subviews> <animations/> - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstItem="qLr-OV-7JA" firstAttribute="centerX" secondItem="qWh-Hz-BDE" secondAttribute="centerX" id="els-Ct-0Lj"/> <constraint firstItem="qLr-OV-7JA" firstAttribute="centerY" secondItem="qWh-Hz-BDE" secondAttribute="centerY" id="iFg-8y-wzh"/> @@ -246,6 +245,7 @@ </view> <tabBarItem key="tabBarItem" title="Item" id="aF0-rA-Z24"/> </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="Ure-Ti-78A" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> <point key="canvasLocation" x="1293" y="2504"/> </scene> @@ -275,7 +275,7 @@ <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> - <rect key="frame" x="15" y="5" width="32" height="20"/> + <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="16"/> @@ -283,7 +283,7 @@ <nil key="highlightedColor"/> </label> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> - <rect key="frame" x="15" y="25" width="41" height="14"/> + <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="11"/> @@ -1215,6 +1215,6 @@ <image name="rating_star_filled" width="128" height="128"/> </resources> <inferredMetricsTieBreakers> - <segue reference="a4i-zx-cvK"/> + <segue reference="Ggq-sb-ccX"/> </inferredMetricsTieBreakers> </document> From cf9a160f75b871a58400927636011a9a63dfb0dc Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Tue, 20 Oct 2015 19:15:45 -0400 Subject: [PATCH 73/86] fixed wishlist --- Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index e588d48..f247ea8 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -17,6 +17,10 @@ @interface WishListTableViewController () @implementation WishListTableViewController +- (void) viewDidAppear:(BOOL)animated{ + [self pullEntriesFromParse]; +} + - (void)viewDidLoad { [super viewDidLoad]; From b894f6241d145c5eace330e2ef07be2a898ca043 Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Wed, 21 Oct 2015 15:08:36 -0400 Subject: [PATCH 74/86] wishlist items can be reviewed and move to journal view --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 12 +- .../Unit-2-Journal/Base.lproj/Main.storyboard | 294 +++++++++++++++--- Unit-2-Journal/Unit-2-Journal/Info.plist | 2 - .../JournalMainCollectionViewController.m | 44 +-- .../Unit-2-Journal/SettingsViewController.m | 9 - .../WatchedWishListViewController.h | 16 + .../WatchedWishListViewController.m | 200 ++++++++++++ .../WishListTableViewController.m | 64 ++-- .../Unit-2-Journal/iTunesSearchResult.h | 1 - .../Unit-2-Journal/iTunesSearchResult.m | 1 - 11 files changed, 512 insertions(+), 131 deletions(-) create mode 100644 Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.h create mode 100644 Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.m diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 9dd9e0c99d3c650c559f96bafb47d296645a2db0..407495bece54201e01bb96b4ee6d8f349ffe46b4 100644 GIT binary patch delta 82 zcmZoMXffC@k(KF^@#Oz3Cj7biE-ophCCLm7mwYtp7$*N?F`dlK#?1of__OgcGEUye gW;J;_TN2Ywo5}HP7L$$H=P^E*SZKPLo#QV*0CKq-B>(^b delta 78 zcmZoMXffC@k(KH6smcFYO!#y2U0hO1OOhEFE_wZQV3_=m#dI<^8#fD_<Il#+#PDHq b9NTQhjX=_JvN8KS#tRb*O*gZ1{N)D#Zhjl? diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 6afa620..231c546 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 4D0030BC1BD6AF7C00BC7BD9 /* WatchedWishListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D0030BB1BD6AF7C00BC7BD9 /* WatchedWishListViewController.m */; settings = {ASSET_TAGS = (); }; }; 4D7FE2941BCC12050036E58E /* TabBarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7FE2931BCC12050036E58E /* TabBarViewController.m */; settings = {ASSET_TAGS = (); }; }; 4D7FE29D1BCC32170036E58E /* SearchAPITableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7FE29B1BCC32170036E58E /* SearchAPITableViewCell.m */; settings = {ASSET_TAGS = (); }; }; 4D7FE29E1BCC32170036E58E /* SearchAPITableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4D7FE29C1BCC32170036E58E /* SearchAPITableViewCell.xib */; settings = {ASSET_TAGS = (); }; }; @@ -52,6 +53,8 @@ /* Begin PBXFileReference section */ 1F41A29CEEC52ED6A148CCE5 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = "<group>"; }; 2BC0A6490F88476E5C31E3B1 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = "<group>"; }; + 4D0030BA1BD6AF7C00BC7BD9 /* WatchedWishListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WatchedWishListViewController.h; sourceTree = "<group>"; }; + 4D0030BB1BD6AF7C00BC7BD9 /* WatchedWishListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WatchedWishListViewController.m; sourceTree = "<group>"; }; 4D7FE2921BCC12050036E58E /* TabBarViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TabBarViewController.h; sourceTree = "<group>"; }; 4D7FE2931BCC12050036E58E /* TabBarViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TabBarViewController.m; sourceTree = "<group>"; }; 4D7FE29A1BCC32170036E58E /* SearchAPITableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchAPITableViewCell.h; sourceTree = "<group>"; }; @@ -243,6 +246,8 @@ 4DCBE1491BC9ADAE0075BA2C /* CreateJournalEntryViewController.m */, 4DCBE14B1BC9ADE00075BA2C /* WishListTableViewController.h */, 4DCBE14C1BC9ADE00075BA2C /* WishListTableViewController.m */, + 4D0030BA1BD6AF7C00BC7BD9 /* WatchedWishListViewController.h */, + 4D0030BB1BD6AF7C00BC7BD9 /* WatchedWishListViewController.m */, 4DCBE14E1BC9BD800075BA2C /* ViewCompletedEntryViewController.h */, 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */, 4D7FE2921BCC12050036E58E /* TabBarViewController.h */, @@ -300,7 +305,7 @@ TargetAttributes = { 9A2FFC291BC84BF100E880D3 = { CreatedOnToolsVersion = 7.0; - DevelopmentTeam = Z6GBYPK592; + DevelopmentTeam = 5F2A5ZZ575; }; }; }; @@ -406,6 +411,7 @@ files = ( 9A2FFC321BC84BF200E880D3 /* AppDelegate.m in Sources */, 9A34656D1BCACDF40049337C /* iTunesSearchResult.m in Sources */, + 4D0030BC1BD6AF7C00BC7BD9 /* WatchedWishListViewController.m in Sources */, 5A6A22911BD43A4A006E9FE7 /* CustomFontViewController.m in Sources */, 4D7FE2941BCC12050036E58E /* TabBarViewController.m in Sources */, 4DCBE14A1BC9ADAE0075BA2C /* CreateJournalEntryViewController.m in Sources */, @@ -533,7 +539,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.jamaalsedayao.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.shenayoshida.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; @@ -549,7 +555,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.jamaalsedayao.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.shenayoshida.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 5d459f1..bf90e39 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -12,6 +12,9 @@ <string>Akkurat-Bold</string> <string>Akkurat-Bold</string> <string>Akkurat-Bold</string> + <string>Akkurat-Bold</string> + <string>Akkurat-Bold</string> + <string>Akkurat-Bold</string> </mutableArray> <mutableArray key="Akkurat Regular.otf"> <string>Akkurat</string> @@ -29,6 +32,8 @@ <string>Akkurat</string> <string>Akkurat</string> <string>Akkurat</string> + <string>Akkurat</string> + <string>Akkurat</string> </mutableArray> </customFonts> <scenes> @@ -46,7 +51,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -219,7 +224,6 @@ <!--settings--> <scene sceneID="PlQ-SS-pZx"> <objects> - <placeholder placeholderIdentifier="IBFirstResponder" id="Ure-Ti-78A" userLabel="First Responder" sceneMemberID="firstResponder"/> <viewController title="settings" id="Oeh-Ah-1CX" customClass="SettingsViewController" sceneMemberID="viewController"> <layoutGuides> <viewControllerLayoutGuide type="top" id="OjC-qE-o96"/> @@ -229,8 +233,8 @@ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qLr-OV-7JA"> - <rect key="frame" x="436" y="290" width="0.0" height="0.0"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qLr-OV-7JA"> + <rect key="frame" x="300" y="300" width="0.0" height="0.0"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> @@ -238,7 +242,7 @@ </label> </subviews> <animations/> - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="qLr-OV-7JA" firstAttribute="centerX" secondItem="qWh-Hz-BDE" secondAttribute="centerX" id="els-Ct-0Lj"/> <constraint firstItem="qLr-OV-7JA" firstAttribute="centerY" secondItem="qWh-Hz-BDE" secondAttribute="centerY" id="iFg-8y-wzh"/> @@ -246,8 +250,9 @@ </view> <tabBarItem key="tabBarItem" title="Item" id="aF0-rA-Z24"/> </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="Ure-Ti-78A" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1293" y="2504"/> + <point key="canvasLocation" x="1233" y="2528"/> </scene> <!--Search --> <scene sceneID="eAD-0s-cgb"> @@ -275,7 +280,7 @@ <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> - <rect key="frame" x="15" y="5" width="32" height="20"/> + <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="16"/> @@ -283,7 +288,7 @@ <nil key="highlightedColor"/> </label> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> - <rect key="frame" x="15" y="25" width="41" height="14"/> + <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="11"/> @@ -477,7 +482,207 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="681" y="3314"/> + <point key="canvasLocation" x="-183" y="3302"/> + </scene> + <!--Watched Wish List View Controller--> + <scene sceneID="MYV-Oh-vlV"> + <objects> + <viewController storyboardIdentifier="WishListJournalEntry" id="BAI-dU-dy0" customClass="WatchedWishListViewController" sceneMemberID="viewController"> + <layoutGuides> + <viewControllerLayoutGuide type="top" id="O2f-ij-05W"/> + <viewControllerLayoutGuide type="bottom" id="7si-3l-1N3"/> + </layoutGuides> + <view key="view" contentMode="scaleToFill" id="XbP-Rr-3ea"> + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xM5-av-N4Q"> + <rect key="frame" x="0.0" y="25" width="600" height="125"/> + <subviews> + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="TLh-Y5-rQa"> + <rect key="frame" x="10" y="5" width="120" height="120"/> + <constraints> + <constraint firstAttribute="width" constant="120" id="F3F-8P-fTh"/> + <constraint firstAttribute="height" constant="120" id="Odq-ff-11v"/> + </constraints> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1AF-cw-sG5"> + <rect key="frame" x="138" y="108" width="442" height="17"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DWN-3U-CrL"> + <rect key="frame" x="138" y="79" width="442" height="20.5"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> + <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <nil key="highlightedColor"/> + </label> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="QXz-a4-RR1"> + <rect key="frame" x="549" y="15" width="36" height="30"/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> + <state key="normal" title="Done"> + <color key="titleColor" red="0.97254901960784312" green="0.5490196078431373" blue="0.062745098039215685" alpha="1" colorSpace="calibratedRGB"/> + </state> + <connections> + <action selector="doneButtonTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="ytx-oB-uey"/> + </connections> + </button> + </subviews> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <constraints> + <constraint firstAttribute="bottom" secondItem="1AF-cw-sG5" secondAttribute="bottom" id="5GX-Tt-REu"/> + <constraint firstAttribute="height" constant="125" id="Bjb-7L-TcT"/> + <constraint firstAttribute="bottom" secondItem="TLh-Y5-rQa" secondAttribute="bottom" id="CMz-9o-csd"/> + <constraint firstItem="DWN-3U-CrL" firstAttribute="leading" secondItem="TLh-Y5-rQa" secondAttribute="trailing" constant="8" id="Dja-JE-F6G"/> + <constraint firstAttribute="trailing" secondItem="1AF-cw-sG5" secondAttribute="trailing" constant="20" id="Eej-kZ-bcA"/> + <constraint firstItem="QXz-a4-RR1" firstAttribute="top" secondItem="xM5-av-N4Q" secondAttribute="top" constant="15" id="WDX-NV-xCI"/> + <constraint firstItem="1AF-cw-sG5" firstAttribute="top" secondItem="DWN-3U-CrL" secondAttribute="bottom" constant="8" id="b68-5t-IM6"/> + <constraint firstItem="1AF-cw-sG5" firstAttribute="leading" secondItem="TLh-Y5-rQa" secondAttribute="trailing" constant="8" id="hiE-op-4EG"/> + <constraint firstItem="TLh-Y5-rQa" firstAttribute="leading" secondItem="xM5-av-N4Q" secondAttribute="leading" constant="10" id="mN1-xv-3p3"/> + <constraint firstAttribute="trailing" secondItem="DWN-3U-CrL" secondAttribute="trailing" constant="20" id="y28-Zf-Ecb"/> + <constraint firstAttribute="trailing" secondItem="QXz-a4-RR1" secondAttribute="trailing" constant="15" id="zda-GW-cEn"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KTC-y5-v8E"> + <rect key="frame" x="20" y="227" width="560" height="174"/> + <subviews> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="5dG-Gc-FlR"> + <rect key="frame" x="8" y="8" width="544" height="158"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="25"/> + <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> + </textView> + </subviews> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <constraints> + <constraint firstAttribute="trailing" secondItem="5dG-Gc-FlR" secondAttribute="trailing" constant="8" id="Hh1-So-hwM"/> + <constraint firstItem="5dG-Gc-FlR" firstAttribute="top" secondItem="KTC-y5-v8E" secondAttribute="top" constant="8" id="VQs-d1-Hne"/> + <constraint firstItem="5dG-Gc-FlR" firstAttribute="leading" secondItem="KTC-y5-v8E" secondAttribute="leading" constant="8" id="k3B-yY-bRP"/> + <constraint firstAttribute="bottom" secondItem="5dG-Gc-FlR" secondAttribute="bottom" constant="8" id="rRN-D8-uV9"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jBv-4u-rAQ"> + <rect key="frame" x="35" y="167" width="530" height="50"/> + <subviews> + <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="RPL-cy-o0G" userLabel="star1"> + <rect key="frame" x="0.0" y="0.0" width="98" height="50"/> + <state key="normal" image="rating_star2"/> + <connections> + <action selector="starOneTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="Hxv-dr-2Yg"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eqY-tM-EkF" userLabel="star2"> + <rect key="frame" x="108" y="0.0" width="98" height="50"/> + <state key="normal" image="rating_star2"/> + <connections> + <action selector="starTwoTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="5H7-Qq-ml0"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="sLK-NH-rvK" userLabel="star3"> + <rect key="frame" x="216" y="0.0" width="98" height="50"/> + <state key="normal" image="rating_star2"/> + <connections> + <action selector="starThreeTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="J6b-uA-EaE"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fd9-H9-lzG" userLabel="star4"> + <rect key="frame" x="324" y="0.0" width="98" height="50"/> + <state key="normal" image="rating_star2"/> + <connections> + <action selector="starFourTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="VdS-rq-HCy"/> + </connections> + </button> + <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Jzq-uK-0EF" userLabel="star5"> + <rect key="frame" x="432" y="0.0" width="98" height="50"/> + <state key="normal" image="rating_star2"/> + <connections> + <action selector="starFiveTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="KDM-T7-hVz"/> + </connections> + </button> + </subviews> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <constraints> + <constraint firstAttribute="bottom" secondItem="Jzq-uK-0EF" secondAttribute="bottom" id="1ND-Ln-y7I"/> + <constraint firstAttribute="bottom" secondItem="sLK-NH-rvK" secondAttribute="bottom" id="2hF-t7-7wW"/> + <constraint firstItem="sLK-NH-rvK" firstAttribute="centerX" secondItem="jBv-4u-rAQ" secondAttribute="centerX" id="394-gs-dlG"/> + <constraint firstItem="eqY-tM-EkF" firstAttribute="width" secondItem="RPL-cy-o0G" secondAttribute="width" id="7uL-74-ycu"/> + <constraint firstItem="RPL-cy-o0G" firstAttribute="top" secondItem="jBv-4u-rAQ" secondAttribute="top" id="A0V-vY-Lle"/> + <constraint firstItem="sLK-NH-rvK" firstAttribute="top" secondItem="jBv-4u-rAQ" secondAttribute="top" id="FqZ-FC-NWu"/> + <constraint firstItem="fd9-H9-lzG" firstAttribute="leading" secondItem="sLK-NH-rvK" secondAttribute="trailing" constant="10" id="G9B-TP-o9o"/> + <constraint firstItem="Jzq-uK-0EF" firstAttribute="top" secondItem="jBv-4u-rAQ" secondAttribute="top" id="J8G-17-dhZ"/> + <constraint firstItem="eqY-tM-EkF" firstAttribute="top" secondItem="jBv-4u-rAQ" secondAttribute="top" id="O00-A7-gGU"/> + <constraint firstItem="RPL-cy-o0G" firstAttribute="leading" secondItem="jBv-4u-rAQ" secondAttribute="leading" id="Q3J-6O-eg2"/> + <constraint firstItem="fd9-H9-lzG" firstAttribute="top" secondItem="jBv-4u-rAQ" secondAttribute="top" id="UnY-64-yzq"/> + <constraint firstItem="sLK-NH-rvK" firstAttribute="width" secondItem="eqY-tM-EkF" secondAttribute="width" id="VbN-QB-fcN"/> + <constraint firstAttribute="bottom" secondItem="eqY-tM-EkF" secondAttribute="bottom" id="WBs-KE-6WQ"/> + <constraint firstItem="sLK-NH-rvK" firstAttribute="width" secondItem="fd9-H9-lzG" secondAttribute="width" id="dIJ-ws-vJk"/> + <constraint firstAttribute="trailing" secondItem="Jzq-uK-0EF" secondAttribute="trailing" id="iJA-xL-wIY"/> + <constraint firstItem="Jzq-uK-0EF" firstAttribute="leading" secondItem="fd9-H9-lzG" secondAttribute="trailing" constant="10" id="kVK-Zh-R6B"/> + <constraint firstItem="eqY-tM-EkF" firstAttribute="leading" secondItem="RPL-cy-o0G" secondAttribute="trailing" constant="10" id="l4B-xb-psJ"/> + <constraint firstAttribute="bottom" secondItem="RPL-cy-o0G" secondAttribute="bottom" id="lPF-7T-h5v"/> + <constraint firstAttribute="bottom" secondItem="fd9-H9-lzG" secondAttribute="bottom" id="pmr-Eq-fse"/> + <constraint firstItem="sLK-NH-rvK" firstAttribute="centerY" secondItem="jBv-4u-rAQ" secondAttribute="centerY" id="tEX-sw-r49"/> + <constraint firstItem="fd9-H9-lzG" firstAttribute="width" secondItem="Jzq-uK-0EF" secondAttribute="width" id="ucu-U4-sbF"/> + <constraint firstAttribute="height" constant="50" id="vK1-es-HIZ"/> + <constraint firstItem="sLK-NH-rvK" firstAttribute="leading" secondItem="eqY-tM-EkF" secondAttribute="trailing" constant="10" id="zua-Yv-onU"/> + </constraints> + </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tNJ-35-n33"> + <rect key="frame" x="20" y="411" width="560" height="60"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1oM-DR-MwP"> + <rect key="frame" x="213" y="13" width="134" height="33"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> + <state key="normal" title=" Log To Journal "> + <color key="titleColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> + </state> + <connections> + <action selector="logToJournalButtonTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="8y5-DW-DLo"/> + </connections> + </button> + </subviews> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <constraints> + <constraint firstItem="1oM-DR-MwP" firstAttribute="centerY" secondItem="tNJ-35-n33" secondAttribute="centerY" id="4aa-nt-gCQ"/> + <constraint firstItem="1oM-DR-MwP" firstAttribute="centerX" secondItem="tNJ-35-n33" secondAttribute="centerX" id="VcS-q4-UVW"/> + <constraint firstAttribute="height" constant="60" id="b8q-pP-86u"/> + </constraints> + </view> + </subviews> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <constraints> + <constraint firstItem="tNJ-35-n33" firstAttribute="top" secondItem="KTC-y5-v8E" secondAttribute="bottom" constant="10" id="5zc-ey-MkX"/> + <constraint firstItem="tNJ-35-n33" firstAttribute="leading" secondItem="XbP-Rr-3ea" secondAttribute="leadingMargin" id="AN1-xe-uD8"/> + <constraint firstAttribute="trailingMargin" secondItem="KTC-y5-v8E" secondAttribute="trailing" id="DAf-1a-PYo"/> + <constraint firstAttribute="trailingMargin" secondItem="xM5-av-N4Q" secondAttribute="trailing" constant="-20" id="GfT-5T-IBM"/> + <constraint firstItem="jBv-4u-rAQ" firstAttribute="top" secondItem="xM5-av-N4Q" secondAttribute="bottom" constant="17" id="Kc9-je-EFG"/> + <constraint firstItem="KTC-y5-v8E" firstAttribute="top" secondItem="jBv-4u-rAQ" secondAttribute="bottom" constant="10" id="P8N-A2-bXB"/> + <constraint firstItem="xM5-av-N4Q" firstAttribute="leading" secondItem="XbP-Rr-3ea" secondAttribute="leadingMargin" constant="-20" id="S55-Wn-Vpy"/> + <constraint firstItem="jBv-4u-rAQ" firstAttribute="leading" secondItem="XbP-Rr-3ea" secondAttribute="leadingMargin" constant="15" id="Sxg-wV-brp"/> + <constraint firstAttribute="trailingMargin" secondItem="jBv-4u-rAQ" secondAttribute="trailing" constant="15" id="Uw1-xl-Gia"/> + <constraint firstItem="KTC-y5-v8E" firstAttribute="leading" secondItem="XbP-Rr-3ea" secondAttribute="leadingMargin" id="VIe-dk-eeH"/> + <constraint firstItem="xM5-av-N4Q" firstAttribute="top" secondItem="XbP-Rr-3ea" secondAttribute="topMargin" constant="25" id="aD9-AP-CKs"/> + <constraint firstItem="7si-3l-1N3" firstAttribute="top" secondItem="tNJ-35-n33" secondAttribute="bottom" constant="80" id="cJL-Ky-MaK"/> + <constraint firstAttribute="trailingMargin" secondItem="tNJ-35-n33" secondAttribute="trailing" id="dYx-MI-P4p"/> + </constraints> + </view> + <connections> + <outlet property="doneButton" destination="QXz-a4-RR1" id="Dif-1U-4Jk"/> + <outlet property="mediaCreatorLabel" destination="1AF-cw-sG5" id="sYQ-qL-pbb"/> + <outlet property="mediaImageView" destination="TLh-Y5-rQa" id="A79-2U-4N9"/> + <outlet property="mediaTitleLabel" destination="DWN-3U-CrL" id="zKI-lT-Dki"/> + <outlet property="starFive" destination="Jzq-uK-0EF" id="Qsc-RC-7fp"/> + <outlet property="starFour" destination="fd9-H9-lzG" id="mb9-sr-5pL"/> + <outlet property="starOne" destination="RPL-cy-o0G" id="ZFR-qy-6sU"/> + <outlet property="starThree" destination="sLK-NH-rvK" id="NNl-e2-dN6"/> + <outlet property="starTwo" destination="eqY-tM-EkF" id="dZq-XK-II5"/> + <outlet property="textView" destination="5dG-Gc-FlR" id="hk4-TP-5ai"/> + </connections> + </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="3VJ-9s-RSN" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="-907" y="4034"/> </scene> <!--Create Journal Entry View Controller--> <scene sceneID="3xO-3p-x8L"> @@ -509,6 +714,13 @@ <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HdG-mr-PTo"> + <rect key="frame" x="128" y="103" width="412" height="17"/> + <animations/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> + <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> + <nil key="highlightedColor"/> + </label> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oCt-vd-4RS"> <rect key="frame" x="502" y="0.0" width="50" height="30"/> <animations/> @@ -520,13 +732,6 @@ <action selector="doneEditingTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="Yvg-fL-af4"/> </connections> </button> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HdG-mr-PTo"> - <rect key="frame" x="128" y="103" width="412" height="17"/> - <animations/> - <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> - <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> - <nil key="highlightedColor"/> - </label> </subviews> <animations/> <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> @@ -559,14 +764,6 @@ <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BCK-ON-IjJ"> <rect key="frame" x="15" y="153" width="570" height="50"/> <subviews> - <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0G1-Em-Jng"> - <rect key="frame" x="464" y="0.0" width="106" height="50"/> - <animations/> - <state key="normal" backgroundImage="rating_star2"/> - <connections> - <action selector="fiveStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="lF4-Jk-XCm"/> - </connections> - </button> <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Hue-C5-PHW"> <rect key="frame" x="348" y="0.0" width="106" height="50"/> <animations/> @@ -605,6 +802,14 @@ <action selector="twoStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="uc8-kM-fow"/> </connections> </button> + <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0G1-Em-Jng"> + <rect key="frame" x="464" y="0.0" width="106" height="50"/> + <animations/> + <state key="normal" backgroundImage="rating_star2"/> + <connections> + <action selector="fiveStarTapped:" destination="aXS-um-aw2" eventType="touchUpInside" id="lF4-Jk-XCm"/> + </connections> + </button> </subviews> <animations/> <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> @@ -710,7 +915,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="TK9-37-5bs" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="-907" y="3486"/> + <point key="canvasLocation" x="-183" y="4022"/> </scene> <!--Folding Tab Bar Controller--> <scene sceneID="bxL-4q-Pom"> @@ -724,16 +929,33 @@ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> </tabBar> <connections> - <segue destination="WZe-UX-wgc" kind="relationship" relationship="viewControllers" id="bAR-Zf-Kaj"/> - <segue destination="UUP-oh-FLI" kind="relationship" relationship="viewControllers" id="67Z-In-Vm1"/> - <segue destination="Gih-78-N3X" kind="relationship" relationship="viewControllers" id="gbO-Fx-x82"/> - <segue destination="Oeh-Ah-1CX" kind="relationship" relationship="viewControllers" id="vba-B8-xOk"/> + <segue destination="jRK-Je-LOr" kind="relationship" relationship="viewControllers" id="HOj-PJ-Fkd"/> + <segue destination="UUP-oh-FLI" kind="relationship" relationship="viewControllers" id="Rjg-aa-DxP"/> + <segue destination="Gih-78-N3X" kind="relationship" relationship="viewControllers" id="abK-z0-qa5"/> + <segue destination="Oeh-Ah-1CX" kind="relationship" relationship="viewControllers" id="2Xh-DK-MpE"/> </connections> </tabBarController> <placeholder placeholderIdentifier="IBFirstResponder" id="1hc-eJ-lg1" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> <point key="canvasLocation" x="171" y="1647"/> </scene> + <!--Item--> + <scene sceneID="cKb-7g-WEz"> + <objects> + <navigationController navigationBarHidden="YES" id="jRK-Je-LOr" sceneMemberID="viewController"> + <tabBarItem key="tabBarItem" title="Item" id="Dua-qJ-GWW"/> + <navigationBar key="navigationBar" contentMode="scaleToFill" id="kHi-Rv-LpC"> + <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> + <autoresizingMask key="autoresizingMask"/> + </navigationBar> + <connections> + <segue destination="WZe-UX-wgc" kind="relationship" relationship="rootViewController" id="c1X-Zg-b9I"/> + </connections> + </navigationController> + <placeholder placeholderIdentifier="IBFirstResponder" id="Bl9-pa-7aW" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="-907" y="2528"/> + </scene> <!--Wish List--> <scene sceneID="WUv-ax-PAc"> <objects> @@ -818,9 +1040,8 @@ <animations/> </tableViewCellContentView> <animations/> - <inset key="separatorInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/> <connections> - <segue destination="aXS-um-aw2" kind="show" id="Ggq-sb-ccX"/> + <segue destination="BAI-dU-dy0" kind="show" identifier="moveFromWishToJournalEntry" id="uNF-QU-YbJ"/> </connections> </tableViewCell> </prototypes> @@ -834,7 +1055,7 @@ </tableViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="vQP-Qq-o7U" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="-907" y="2504"/> + <point key="canvasLocation" x="-907" y="3308"/> </scene> <!--View Controller--> <scene sceneID="Sp1-uX-mf4"> @@ -1187,7 +1408,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="gKL-Ix-enk" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1397" y="3308"/> + <point key="canvasLocation" x="537" y="3302"/> </scene> <!--Item--> <scene sceneID="lqz-ju-jUl"> @@ -1207,14 +1428,11 @@ </navigationController> <placeholder placeholderIdentifier="IBFirstResponder" id="1ok-11-KLp" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="-131" y="3314"/> + <point key="canvasLocation" x="-183" y="2528"/> </scene> </scenes> <resources> <image name="rating_star2" width="128" height="128"/> <image name="rating_star_filled" width="128" height="128"/> </resources> - <inferredMetricsTieBreakers> - <segue reference="a4i-zx-cvK"/> - </inferredMetricsTieBreakers> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/Info.plist b/Unit-2-Journal/Unit-2-Journal/Info.plist index 6e0f4ff..aadec80 100644 --- a/Unit-2-Journal/Unit-2-Journal/Info.plist +++ b/Unit-2-Journal/Unit-2-Journal/Info.plist @@ -85,8 +85,6 @@ <key>UISupportedInterfaceOrientations</key> <array> <string>UIInterfaceOrientationPortrait</string> - <string>UIInterfaceOrientationLandscapeLeft</string> - <string>UIInterfaceOrientationLandscapeRight</string> </array> <key>UISupportedInterfaceOrientations~ipad</key> <array> diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index 5bf8d0e..e178fae 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -55,7 +55,7 @@ - (void)runQuery { // __weak typeof(self) weakSelf = self; // prevent memory leakage? PFQuery *query = [PFQuery queryWithClassName:@"JournalPost"]; - + [query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) { // create a for loop and iterate through the objects array and push only the posts that are marked with True to "self.allJournalPosts" @@ -68,9 +68,7 @@ - (void)runQuery { } } -// self.allJournalPosts = objects; // pull all images from Parse - - NSLog(@"info fetched from parse: %@", self.allJournalPosts); // test it! + // NSLog(@"info fetched from parse: %@", self.allJournalPosts); // test it! [self.collectionView reloadData]; // reload tableView }]; @@ -93,8 +91,11 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; PFObject *post = self.allJournalPosts[indexPath.row]; // pulling out parse data here + + PFFile *file = post[@"imageForMedia"]; // this returns urls for each image + NSString *fileString = [NSString stringWithFormat:@"%@",file]; NSURL *fileURL = [NSURL URLWithString:fileString]; NSData *fileData = [NSData dataWithContentsOfURL:fileURL]; @@ -134,39 +135,4 @@ -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ } - - - - -#pragma mark <UICollectionViewDelegate> - -/* -// Uncomment this method to specify if the specified item should be highlighted during tracking -- (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath { - return YES; -} -*/ - -/* -// Uncomment this method to specify if the specified item should be selected -- (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath { - return YES; -} -*/ - -/* -// Uncomment these methods to specify if an action menu should be displayed for the specified item, and react to actions performed on the item -- (BOOL)collectionView:(UICollectionView *)collectionView shouldShowMenuForItemAtIndexPath:(NSIndexPath *)indexPath { - return NO; -} - -- (BOOL)collectionView:(UICollectionView *)collectionView canPerformAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender { - return NO; -} - -- (void)collectionView:(UICollectionView *)collectionView performAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender { - -} -*/ - @end diff --git a/Unit-2-Journal/Unit-2-Journal/SettingsViewController.m b/Unit-2-Journal/Unit-2-Journal/SettingsViewController.m index c27d9d5..e4182d0 100644 --- a/Unit-2-Journal/Unit-2-Journal/SettingsViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SettingsViewController.m @@ -31,14 +31,5 @@ - (void)didReceiveMemoryWarning { // Dispose of any resources that can be recreated. } -/* -#pragma mark - Navigation - -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. -} -*/ @end diff --git a/Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.h b/Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.h new file mode 100644 index 0000000..cfe45c7 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.h @@ -0,0 +1,16 @@ +// +// WatchedWishListViewController.h +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/20/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> +#import "JournalPost.h" + +@interface WatchedWishListViewController : UIViewController + +@property (nonatomic) JournalPost *journalPostDetail; + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.m b/Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.m new file mode 100644 index 0000000..60ca03c --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.m @@ -0,0 +1,200 @@ +// +// WatchedWishListViewController.m +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/20/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "WatchedWishListViewController.h" +#import "pop/POP.h" +#import "JournalPost.h" +#import <Parse/Parse.h> + +@interface WatchedWishListViewController () <UITextViewDelegate> + +@property (weak, nonatomic) IBOutlet UIImageView *mediaImageView; +@property (weak, nonatomic) IBOutlet UILabel *mediaTitleLabel; +@property (weak, nonatomic) IBOutlet UILabel *mediaCreatorLabel; + +@property (weak, nonatomic) IBOutlet UIButton *starOne; +@property (weak, nonatomic) IBOutlet UIButton *starTwo; +@property (weak, nonatomic) IBOutlet UIButton *starThree; +@property (weak, nonatomic) IBOutlet UIButton *starFour; +@property (weak, nonatomic) IBOutlet UIButton *starFive; +@property (weak, nonatomic) IBOutlet UITextView *textView; +@property (weak, nonatomic) IBOutlet UIButton *doneButton; + +@property (nonatomic) NSMutableArray *journalPostArray; + +@property (strong, nonatomic) NSNumber *rating; // for parse +@property (nonatomic) JournalPost *journalPost; +@property (nonatomic) NSString *mediaType; + + +@end + +@implementation WatchedWishListViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + + self.journalPostArray = [[NSMutableArray alloc] init]; + + self.mediaTitleLabel.text = self.journalPostDetail.title; + self.mediaCreatorLabel.text = self.journalPostDetail.creator; + self.doneButton.hidden = YES; + + NSURL *artworkURL = [NSURL URLWithString:self.journalPostDetail.imageForMedia]; + NSData *artworkData = [NSData dataWithContentsOfURL:artworkURL]; + UIImage *artworkImage = [UIImage imageWithData:artworkData]; + self.mediaImageView.image = artworkImage; + + self.mediaType = self.journalPostDetail.typeOfMedia; + + // NSLog(@"journal post detail: %@", self.journalPostDetail); // test it + + //round image corners + self.mediaImageView.clipsToBounds = YES; + self.mediaImageView.layer.borderColor = [UIColor blackColor].CGColor; + self.mediaImageView.layer.borderWidth = 2.0; + self.mediaImageView.layer.cornerRadius = 25.0; + + //manage textview + self.textView.delegate = self; + self.textView.text = @"Write your thoughts here..."; + self.textView.layer.borderWidth = 1.0f; + self.textView.layer.cornerRadius = 5.0f; + self.textView.layer.borderColor = [UIColor blackColor].CGColor; + +} + +- (void) textViewDidBeginEditing:(UITextView *)textView{ + self.textView.text = @""; + + self.doneButton.hidden = NO; +} + +#pragma mark - buttons + +- (IBAction)doneButtonTapped:(id)sender { + + self.doneButton.hidden = YES; + [[[UIApplication sharedApplication] keyWindow] endEditing:YES]; +} + +- (IBAction)logToJournalButtonTapped:(id)sender { + + JournalPost *myJournalPost = [[JournalPost alloc]init]; + + myJournalPost[@"postText"] = self.textView.text; + myJournalPost[@"starRating"] = self.rating; + myJournalPost[@"title"] = self.journalPostDetail.title; + myJournalPost[@"creator"] = self.journalPostDetail.creator; + myJournalPost[@"dateEntered"] = [NSDate date]; + myJournalPost[@"typeOfMedia"] = self.mediaType; + myJournalPost[@"imageForMedia"] = self.journalPostDetail.imageForMedia; + myJournalPost[@"reviewed"] = [NSNumber numberWithBool:YES]; + + NSLog(@"my Journal post %@", myJournalPost); + + [myJournalPost saveEventually]; // save entry + + [self.navigationController popToRootViewControllerAnimated:YES]; // pop back to root controller + + [self.tabBarController setSelectedIndex:2]; // send to correct tab + + // NOTE: this saves new entry, but does not remove existing wishlist entry... + +} + +#pragma mark - stars + +- (IBAction)starOneTapped:(id)sender { + [self resetStars]; + [self oneStarRating]; + [self startAnimation]; +} +- (IBAction)starTwoTapped:(id)sender { + [self resetStars]; + [self twoStarRating]; + [self startAnimation]; +} +- (IBAction)starThreeTapped:(id)sender { + [self resetStars]; + [self threeStarRating]; + [self startAnimation]; +} +- (IBAction)starFourTapped:(id)sender { + [self resetStars]; + [self fourStarRating]; + [self startAnimation]; +} +- (IBAction)starFiveTapped:(id)sender { + [self resetStars]; + [self fiveStarRating]; + [self startAnimation]; +} + +- (void)oneStarRating { + self.rating = @1; // assign rating for parse + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; +} + +- (void)twoStarRating { + self.rating = @2; // assign rating for parse + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; +} + +- (void)threeStarRating { + self.rating = @3; // assign rating for parse + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; +} + +- (void)fourStarRating { + self.rating = @4; // assign rating for parse + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; +} + +- (void)fiveStarRating { + self.rating = @5; // assign rating for parse + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; + [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; +} + +- (void)resetStars { + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; + [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; + [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; + [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; + [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; +} + +#pragma mark - animate + +- (void)startAnimation { + + POPSpringAnimation *spin = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerRotation]; + + spin.fromValue = @(M_PI / 4); + spin.toValue = @(5); + spin.springBounciness = 5; + spin.velocity = @(1); + + [self.starOne.layer pop_addAnimation:spin forKey:nil]; + [self.starTwo.layer pop_addAnimation:spin forKey:nil]; + [self.starThree.layer pop_addAnimation:spin forKey:nil]; + [self.starFour.layer pop_addAnimation:spin forKey:nil]; + [self.starFive.layer pop_addAnimation:spin forKey:nil]; +} + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index e588d48..de4fd2c 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -10,6 +10,7 @@ #import "WishListTableViewCell.h" #import <Parse/Parse.h> #import "JournalPost.h" +#import "WatchedWishListViewController.h" @interface WishListTableViewController () @@ -125,49 +126,36 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N return cell; } +#pragma mark - didSelectRowAtIndexPath -/* -// Override to support conditional editing of the table view. -- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { - // Return NO if you do not want the specified item to be editable. - return YES; -} -*/ - -/* -// Override to support editing the table view. -- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { - if (editingStyle == UITableViewCellEditingStyleDelete) { - // Delete the row from the data source - [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; - } else if (editingStyle == UITableViewCellEditingStyleInsert) { - // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view - } -} -*/ - -/* -// Override to support rearranging the table view. -- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { -} -*/ +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { -/* -// Override to support conditional rearranging of the table view. -- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { - // Return NO if you do not want the item to be re-orderable. - return YES; + // get the data that we're going to pass + JournalPost *post = self.allJournalPosts[indexPath.row]; + + // declare where we're sending the data + WatchedWishListViewController *detailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"WishListJournalEntry"]; + + // pass the data + detailViewController.journalPostDetail = post; + + // present the view controller + [self.navigationController pushViewController:detailViewController animated:YES]; } -*/ -/* -#pragma mark - Navigation +#pragma mark - segue -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. +-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ + + //identifier: moveFromWishToJournalEntry + + if ([[segue identifier] isEqualToString:@"ViewCompletedEntrySegue"]){ + NSIndexPath *selectedIndexPath = [self.tableView indexPathForCell:sender]; + WatchedWishListViewController *viewController = segue.destinationViewController; + JournalPost *thisPost = self.allJournalPosts[selectedIndexPath.row]; + + viewController.journalPostDetail = thisPost; + } } -*/ @end diff --git a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h index 90d8e3c..610bcd5 100644 --- a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h +++ b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.h @@ -15,7 +15,6 @@ @property (nonatomic) NSString *albumOrMovieName; @property (nonatomic) NSString *artworkURL; @property (nonatomic) NSDate *addedDate; - @property (nonatomic) NSString *mediaType; diff --git a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m index dbd95d2..f165834 100644 --- a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m +++ b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m @@ -14,7 +14,6 @@ @implementation iTunesSearchResult @dynamic artworkURL; @dynamic albumOrMovieName; @dynamic addedDate; - @dynamic mediaType; From 671a4226dd9538e203d23956d7870246214579a6 Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Wed, 21 Oct 2015 16:28:34 -0400 Subject: [PATCH 75/86] fixed indentation --- .../Unit-2-Journal/Base.lproj/Main.storyboard | 48 +++---- .../CreateJournalEntryViewController.h | 2 - .../CreateJournalEntryViewController.m | 82 ++++------- .../JournalMainCollectionViewController.m | 43 +++--- .../Unit-2-Journal/SearchAPITableViewCell.m | 2 - .../Unit-2-Journal/SearchAPIViewController.m | 127 +++++++++--------- .../Unit-2-Journal/SettingsViewController.m | 4 +- .../Unit-2-Journal/TabBarViewController.h | 2 - .../Unit-2-Journal/TabBarViewController.m | 23 +++- .../ViewCompletedEntryViewController.m | 18 +-- .../WatchedWishListViewController.m | 23 +++- .../Unit-2-Journal/WishListTableViewCell.m | 5 +- .../WishListTableViewController.m | 41 +++--- .../Unit-2-Journal/iTunesSearchResult.m | 1 - 14 files changed, 196 insertions(+), 225 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index ad0e68a..558746f 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1221,30 +1221,6 @@ </mask> </variation> </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iJa-08-1GE"> - <rect key="frame" x="300" y="476" width="280" height="75"/> - <subviews> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Facebook" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Qia-hv-Okp"> - <rect key="frame" x="102" y="27" width="77" height="21"/> - <animations/> - <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> - <nil key="highlightedColor"/> - </label> - </subviews> - <animations/> - <color key="backgroundColor" red="0.99607843139999996" green="0.79215686269999996" blue="0.086274509799999996" alpha="1" colorSpace="calibratedRGB"/> - <constraints> - <constraint firstAttribute="height" constant="100" id="DnT-BB-V1g"/> - <constraint firstItem="Qia-hv-Okp" firstAttribute="centerX" secondItem="iJa-08-1GE" secondAttribute="centerX" id="Hf4-By-8MH"/> - <constraint firstItem="Qia-hv-Okp" firstAttribute="centerY" secondItem="iJa-08-1GE" secondAttribute="centerY" id="MBF-Xt-pRY"/> - </constraints> - <variation key="default"> - <mask key="constraints"> - <exclude reference="DnT-BB-V1g"/> - </mask> - </variation> - </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="DLn-Kf-i7J" userLabel="Red View"> <rect key="frame" x="20" y="250" width="560" height="75"/> <subviews> @@ -1345,6 +1321,30 @@ </mask> </variation> </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iJa-08-1GE"> + <rect key="frame" x="300" y="476" width="280" height="75"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Facebook" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Qia-hv-Okp"> + <rect key="frame" x="102" y="27" width="77" height="21"/> + <animations/> + <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <animations/> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <constraints> + <constraint firstAttribute="height" constant="100" id="DnT-BB-V1g"/> + <constraint firstItem="Qia-hv-Okp" firstAttribute="centerX" secondItem="iJa-08-1GE" secondAttribute="centerX" id="Hf4-By-8MH"/> + <constraint firstItem="Qia-hv-Okp" firstAttribute="centerY" secondItem="iJa-08-1GE" secondAttribute="centerY" id="MBF-Xt-pRY"/> + </constraints> + <variation key="default"> + <mask key="constraints"> + <exclude reference="DnT-BB-V1g"/> + </mask> + </variation> + </view> </subviews> <animations/> <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h index 47f0efd..cb2d1b7 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.h @@ -9,8 +9,6 @@ #import <UIKit/UIKit.h> #import "iTunesSearchResult.h" - - @interface CreateJournalEntryViewController : UIViewController @property (nonatomic) iTunesSearchResult *postSearchResult; diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index bb50508..c91bc76 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -13,7 +13,6 @@ #import <pop/POP.h> #import <Parse/Parse.h> - @interface CreateJournalEntryViewController () <UITextViewDelegate> @property (strong, nonatomic) IBOutlet UILabel *movieOrAlbumNameLabel; @@ -37,11 +36,12 @@ @interface CreateJournalEntryViewController () <UITextViewDelegate> @implementation CreateJournalEntryViewController - (void)viewDidLoad { + [super viewDidLoad]; self.journalPostArray = [[NSMutableArray alloc]init]; - // NSLog(@"Data has been passed: %@",self.postSearchResult); + // NSLog(@"Data has been passed: %@",self.postSearchResult); self.doneEditingButton.hidden = YES; @@ -51,7 +51,7 @@ - (void)viewDidLoad { self.textView.layer.borderWidth = 1.0f; self.textView.layer.cornerRadius = 5.0f; self.textView.layer.borderColor = [UIColor blackColor].CGColor; - + //populate journal header self.movieOrAlbumNameLabel.text = self.postSearchResult.albumOrMovieName; self.artistNameLabel.text = self.postSearchResult.artistName; @@ -65,9 +65,10 @@ - (void)viewDidLoad { self.artworkImageView.layer.borderColor = [UIColor blackColor].CGColor; self.artworkImageView.layer.borderWidth = 2.0; self.artworkImageView.layer.cornerRadius = 25.0; - } -- (void) textViewDidBeginEditing:(UITextView *)textView{ + +- (void) textViewDidBeginEditing:(UITextView *)textView { + self.textView.text = @""; self.doneEditingButton.hidden = NO; @@ -82,43 +83,42 @@ - (IBAction)doneEditingTapped:(id)sender { #pragma mark - star rating -- (IBAction)oneStarTapped:(id)sender -{ +- (IBAction)oneStarTapped:(id)sender { + [self resetStars]; [self oneStarRating]; [self startAnimation]; - } -- (IBAction)twoStarTapped:(id)sender -{ +- (IBAction)twoStarTapped:(id)sender { + [self resetStars]; [self twoStarRating]; [self startAnimation]; } -- (IBAction)threeStarTapped:(id)sender -{ +- (IBAction)threeStarTapped:(id)sender { + [self resetStars]; [self threeStarRating]; [self startAnimation]; } -- (IBAction)fourStarTapped:(id)sender -{ +- (IBAction)fourStarTapped:(id)sender { + [self resetStars]; [self fourStarRating]; [self startAnimation]; } -- (IBAction)fiveStarTapped:(id)sender -{ +- (IBAction)fiveStarTapped:(id)sender { + [self resetStars]; [self fiveStarRating]; [self startAnimation]; } -- (void)resetStars -{ +- (void)resetStars { + [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; [self.starButtonThree setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; @@ -127,17 +127,20 @@ - (void)resetStars } - (void)oneStarRating { + self.rating = @1; // assign rating for parse [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; } - (void)twoStarRating { + self.rating = @2; // assign rating for parse [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; } - (void)threeStarRating { + self.rating = @3; // assign rating for parse [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; @@ -145,6 +148,7 @@ - (void)threeStarRating { } - (void)fourStarRating { + self.rating = @4; // assign rating for parse [self.starButtonOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; [self.starButtonTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; @@ -188,20 +192,17 @@ - (IBAction)logToJournalButtonTapped:(id)sender { journalPost.postText = self.textView.text; journalPost.postSubject = self.postSearchResult; - //journalPost.reviewed = YES; - self.journalPost = journalPost; - [self.journalPostArray addObject:self.journalPost]; - - // NSLog(@"Journal Post: %@",self.journalPost); + + // NSLog(@"Journal Post: %@",self.journalPost); [self.navigationController popToRootViewControllerAnimated:YES]; // pop back to root controller - + [self.tabBarController setSelectedIndex:2]; // send to correct tab - // NSLog(@"my journal text is: %@", self.textView.text); + // NSLog(@"my journal text is: %@", self.textView.text); // when we log the journal entry, SAVE it all to Parse JournalPost *myJournalPost = [[JournalPost alloc] init]; // most of this is a repeat of above. @@ -216,37 +217,6 @@ - (IBAction)logToJournalButtonTapped:(id)sender { myJournalPost[@"reviewed"] = [NSNumber numberWithBool:YES]; [myJournalPost saveEventually]; // save your entry, even if offline - } - - - #pragma mark - Navigation - -// - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { -// -// NSLog(@"Segue"); -// -//// if ([[segue identifier]isEqualToString:@"logToJournalSegue"]) { -//// -//// NSLog(@"Segue to Tab"); -//// JournalMainCollectionViewController *viewController = [[JournalMainCollectionViewController alloc]init]; -// -// TabBarViewController *tabVC = segue.destinationViewController; // this creates a new tab bar -// -// JournalMainCollectionViewController *viewController = [[tabVC viewControllers] objectAtIndex:2]; -// -// //[viewController.allJournalPosts addObjectsFromArray:self.journalPostArray]; -// -// viewController.journalPostToAdd = self. journalPost; -// [tabVC setSelectedIndex:2]; -// -// -// // } -// } - -//locationsHome* vc = [[locationsHome alloc] init]; -//UITabBarController* tbc = [segue destinationViewController]; -//vc = (locationsHome *)[[tbc customizableViewControllers] objectAtIndex:0]; - @end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index e178fae..311d289 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -10,41 +10,37 @@ #import <Parse/Parse.h> #import "ViewCompletedEntryViewController.h" - - @interface JournalMainCollectionViewController () @end @implementation JournalMainCollectionViewController -//static NSString * const reuseIdentifier = @"Cell"; - -- (void) viewDidAppear:(BOOL)animated{ +- (void) viewDidAppear:(BOOL)animated { [self runQuery]; } -- (void)viewDidLoad -{ +- (void)viewDidLoad { + [super viewDidLoad]; if (self.allJournalPosts == nil){ - self.allJournalPosts = [[NSMutableArray alloc]init]; + self.allJournalPosts = [[NSMutableArray alloc]init]; } else { nil; } - - // NSLog(@"Current Journal Post: %@", self.journalPostToAdd); + + // NSLog(@"Current Journal Post: %@", self.journalPostToAdd); if (self.journalPostToAdd != nil){ - [self. allJournalPosts addObject:self.journalPostToAdd]; + [self. allJournalPosts addObject:self.journalPostToAdd]; } - // NSLog(@"All Journal Posts: %@", self.allJournalPosts); + // NSLog(@"All Journal Posts: %@", self.allJournalPosts); self.collectionView.alwaysBounceVertical = YES; - + [self runQuery]; // run Parse query to fetch saved data } @@ -52,12 +48,12 @@ - (void)viewDidLoad - (void)runQuery { - // __weak typeof(self) weakSelf = self; // prevent memory leakage? + // __weak typeof(self) weakSelf = self; // prevent memory leakage? PFQuery *query = [PFQuery queryWithClassName:@"JournalPost"]; - + [query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) { - + // create a for loop and iterate through the objects array and push only the posts that are marked with True to "self.allJournalPosts" [self.allJournalPosts removeAllObjects]; // clear to prevent doubles @@ -68,7 +64,7 @@ - (void)runQuery { } } - // NSLog(@"info fetched from parse: %@", self.allJournalPosts); // test it! + // NSLog(@"info fetched from parse: %@", self.allJournalPosts); // test it! [self.collectionView reloadData]; // reload tableView }]; @@ -85,7 +81,7 @@ - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSe return self.allJournalPosts.count; } -- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { static NSString *identifier = @"Cell"; UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; @@ -111,7 +107,7 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell NSString *imageString = iTunes.artworkURL; NSURL *imageURL = [NSURL URLWithString:imageString]; NSData *imageData = [NSData dataWithContentsOfURL:imageURL]; - // UIImage *image = [UIImage imageWithData:imageData]; + // UIImage *image = [UIImage imageWithData:imageData]; collectionImageView.image = fileImage; @@ -127,12 +123,11 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ if ([[segue identifier] isEqualToString:@"ViewCompletedEntrySegue"]){ - NSIndexPath *selectedIndexPath = [self.collectionView indexPathForCell:sender]; - ViewCompletedEntryViewController *viewController = segue.destinationViewController; - JournalPost *thisPost = self.allJournalPosts[selectedIndexPath.row]; - viewController.journalPostDetail = thisPost; + NSIndexPath *selectedIndexPath = [self.collectionView indexPathForCell:sender]; + ViewCompletedEntryViewController *viewController = segue.destinationViewController; + JournalPost *thisPost = self.allJournalPosts[selectedIndexPath.row]; + viewController.journalPostDetail = thisPost; } - } @end diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.m b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.m index 772444d..fe3832c 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPITableViewCell.m @@ -18,12 +18,10 @@ - (void)awakeFromNib { self.artworkImage.layer.borderColor = [UIColor blackColor].CGColor; self.artworkImage.layer.borderWidth = 2.0; self.artworkImage.layer.cornerRadius = 25.0; - } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; - } // animate custom cells diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 4e6a185..84ade22 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -17,9 +17,6 @@ #import <Parse/Parse.h> #import "JournalPost.h" // for parse - -//#import "JournalPost.h" - @interface SearchAPIViewController () < UITableViewDataSource, @@ -38,7 +35,6 @@ @interface SearchAPIViewController () @property (nonatomic) NSMutableArray *searchResults; @property (nonatomic) NSMutableArray *wishListItems; @property (nonatomic) iTunesSearchResult *passSearchResult; - @property (nonatomic) JournalPost *journalPost; // for parse @property (nonatomic) NSString *mediaType; // for parse @@ -46,10 +42,10 @@ @interface SearchAPIViewController () @implementation SearchAPIViewController -- (void)viewDidLoad -{ +- (void)viewDidLoad { + [super viewDidLoad]; - + self.tableView.delegate = self; self.tableView.dataSource = self; self.searchTextField.delegate = self; @@ -75,14 +71,14 @@ - (IBAction)mediaButtonTypeSelected:(id)sender { } else if (self.televisionButton.isTouchInside){ self.media = @"television"; - - // } else if (self.podcastButton.isTouchInside) { - + + // } else if (self.podcastButton.isTouchInside) { + } else { self.media = [sender currentTitle]; } - - // NSLog(@"Media button tapped: %@",self.media); + + // NSLog(@"Media button tapped: %@",self.media); } #pragma mark - add to list buttons @@ -113,18 +109,18 @@ - (IBAction)addToWishListButtonTapped:(id)sender { //- (void)extraLeftItemDidPress { // NSLog(@"left button tapped"); -// +// // JournalPost *myJournalPost = [[JournalPost alloc] init]; -// +// // myJournalPost[@"title"] = self.passSearchResult.albumOrMovieName; // myJournalPost[@"creator"] = self.passSearchResult.artistName; // myJournalPost[@"dateEntered"] = [NSDate date]; // myJournalPost[@"typeOfMedia"] = self.passSearchResult.mediaType; // myJournalPost[@"imageForMedia"] = self.passSearchResult.artworkURL; // myJournalPost[@"reviewed"] = [NSNumber numberWithBool:NO]; -// +// // [myJournalPost saveEventually]; // save your entry, even if offline -// +// // [self.tabBarController setSelectedIndex:0]; //} // @@ -134,12 +130,12 @@ - (IBAction)addToWishListButtonTapped:(id)sender { #pragma mark - API request -- (void) makeNewAPIRequestWithSearchTerm:(NSString *)term - inMedia:(NSString *)media{ - +- (void)makeNewAPIRequestWithSearchTerm:(NSString *)term + inMedia:(NSString *)media { + self.searchResults = [[NSMutableArray alloc]init]; -// First API Request - iTunes (music, ebooks, podcast) + // First API Request - iTunes (music, ebooks, podcast) NSString *urlString = [NSString stringWithFormat: @"https://itunes.apple.com/search?media=%@&term=%@",media,term]; @@ -149,8 +145,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term [APIManager GETRequestWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { - - if (data != nil){ + if (data != nil) { NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; NSArray *results = [json objectForKey:@"results"]; @@ -164,7 +159,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term iTunesSearchResult *resultsObject = [[iTunesSearchResult alloc]init]; - if ([self.media isEqualToString:@"movie"]){ + if ([self.media isEqualToString:@"movie"]) { resultsObject.artistName = artistName; resultsObject.albumOrMovieName = movieName; resultsObject.artworkURL = artworkURL; @@ -175,15 +170,15 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term resultsObject.albumOrMovieName = movieName; resultsObject.artworkURL = artworkURL; resultsObject.mediaType = @"podcast"; - - } else if ([self.media isEqualToString:@"music&entity=album"]){ + + } else if ([self.media isEqualToString:@"music&entity=album"]) { resultsObject.artistName = artistName; resultsObject.albumOrMovieName = albumName; resultsObject.artworkURL = artworkURL; resultsObject.mediaType = @"album"; - } else if ([self.media isEqualToString:@"ebook"]){ + } else if ([self.media isEqualToString:@"ebook"]) { resultsObject.artistName = artistName; resultsObject.albumOrMovieName = movieName; resultsObject.artworkURL = artworkURL; @@ -195,8 +190,8 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term [self.tableView reloadData]; }}]; -// Second API Request - for television - + // Second API Request - for television + NSString *urlStringTwo = [NSString stringWithFormat:@"http://api.tvmaze.com/search/shows?q=%@",term]; NSString *encodedStringTwo = [urlStringTwo stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; NSURL *urlTwo = [NSURL URLWithString:encodedStringTwo]; @@ -204,14 +199,14 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term [APIManager GETRequestWithURL:urlTwo completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { - if (data != nil){ + if (data != nil) { NSArray *jsonTwo = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - // NSLog(@"TV results: %@",jsonTwo); + // NSLog(@"TV results: %@",jsonTwo); NSDictionary *shows = [jsonTwo valueForKey:@"show"]; - for (NSDictionary *show in shows){ + for (NSDictionary *show in shows) { NSString *name = [show valueForKey:@"name"]; NSArray *image = [show valueForKey:@"image"]; @@ -219,7 +214,7 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term NSArray *network = [show valueForKey:@"network"]; NSString *channel = [network valueForKey:@"name"]; - if ([self.media isEqualToString:@"television"]){ + if ([self.media isEqualToString:@"television"]) { iTunesSearchResult *searchResult = [[iTunesSearchResult alloc]init]; searchResult.artistName = channel; @@ -234,38 +229,38 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term [self.tableView reloadData]; }]; -// Third API Request - for movies, including in-theatre - -// https://api.themoviedb.org/3/search/movie?api_key=a958839150c7c7c6333fd335128ea066&query=django + // Third API Request - for movies, including in-theatre + + // https://api.themoviedb.org/3/search/movie?api_key=a958839150c7c7c6333fd335128ea066&query=django NSString *urlStringThree = [NSString stringWithFormat:@"https://api.themoviedb.org/3/search/%@?api_key=a958839150c7c7c6333fd335128ea066&query=%@",media,term]; NSString *encodedStringThree = [urlStringThree stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; NSURL *urlThree = [NSURL URLWithString:encodedStringThree]; - + [APIManager GETRequestWithURL:urlThree completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { - if (data != nil){ + if (data != nil) { NSArray *jsonThree = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; NSDictionary *results = [jsonThree valueForKey:@"results"]; - for (NSDictionary *result in results){ + for (NSDictionary *result in results) { NSString *name = [result valueForKey:@"title"]; NSString *releaseDate = [result valueForKey:@"release_date"]; NSString *posterPath = [result valueForKey:@"poster_path"]; - + //http://image.tmdb.org/t/p/w500 - if ([self.media isEqualToString:@"movie"]){ - - iTunesSearchResult *movieResult = [[iTunesSearchResult alloc]init]; + if ([self.media isEqualToString:@"movie"]) { + + iTunesSearchResult *movieResult = [[iTunesSearchResult alloc]init]; movieResult.albumOrMovieName = name; - movieResult.artistName = releaseDate; + movieResult.artistName = releaseDate; movieResult.artworkURL = [NSString stringWithFormat:@"http://image.tmdb.org/t/p/w500%@",posterPath]; movieResult.mediaType = @"movie"; @@ -275,13 +270,13 @@ - (void) makeNewAPIRequestWithSearchTerm:(NSString *)term } } }]; - } +} - (BOOL)textFieldShouldReturn:(UITextField *)textField { [self.view endEditing:YES]; [self makeNewAPIRequestWithSearchTerm:textField.text - inMedia:self.media]; + inMedia:self.media]; return YES; } @@ -298,7 +293,7 @@ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { SearchAPITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SearchAPITableViewCellIdentifier" forIndexPath:indexPath]; - + iTunesSearchResult *searchResult = self.searchResults[indexPath.row]; cell.titleLabel.text = searchResult.albumOrMovieName; @@ -309,10 +304,10 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS NSData *artworkData = [NSData dataWithContentsOfURL:artworkURL]; UIImage *artworkImage = [UIImage imageWithData:artworkData]; -// NSLog(@"Image String: %@", searchResult.artworkURL); -// NSLog(@"Image URL: %@", artworkURL); -// NSLog(@"Image Data: %@", artworkData); -// NSLog(@"Image: %@", artworkImage); + // NSLog(@"Image String: %@", searchResult.artworkURL); + // NSLog(@"Image URL: %@", artworkURL); + // NSLog(@"Image Data: %@", artworkData); + // NSLog(@"Image: %@", artworkImage); cell.artworkImage.image = artworkImage; @@ -324,26 +319,26 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS return cell; } --(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ // here is where the data is passed - +-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // here is where the data is passed + iTunesSearchResult *searchResult = self.searchResults[indexPath.row]; self.passSearchResult = searchResult; } - #pragma mark - Navigation +#pragma mark - Navigation + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + + if ([[segue identifier]isEqualToString:@"pushToCreateJournalEntry"]) { + CreateJournalEntryViewController *viewController = segue.destinationViewController; + viewController.postSearchResult = self.passSearchResult; + + // clear text view and reset tableView once data is passed + self.searchTextField.text = nil; + [self.searchResults removeAllObjects]; + [self.tableView reloadData]; + } +} - - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - - if ([[segue identifier]isEqualToString:@"pushToCreateJournalEntry"]) { - CreateJournalEntryViewController *viewController = segue.destinationViewController; - viewController.postSearchResult = self.passSearchResult; - - // clear text view and reset tableView once data is passed - self.searchTextField.text = nil; - [self.searchResults removeAllObjects]; - [self.tableView reloadData]; - - } - } @end diff --git a/Unit-2-Journal/Unit-2-Journal/SettingsViewController.m b/Unit-2-Journal/Unit-2-Journal/SettingsViewController.m index e4182d0..d814e70 100644 --- a/Unit-2-Journal/Unit-2-Journal/SettingsViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SettingsViewController.m @@ -10,7 +10,6 @@ #import <FBSDKCoreKit/FBSDKCoreKit.h> #import <FBSDKLoginKit/FBSDKLoginKit.h> - @interface SettingsViewController () @end @@ -18,6 +17,7 @@ @interface SettingsViewController () @implementation SettingsViewController - (void)viewDidLoad { + [super viewDidLoad]; FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc]init]; @@ -27,8 +27,8 @@ - (void)viewDidLoad { } - (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. } diff --git a/Unit-2-Journal/Unit-2-Journal/TabBarViewController.h b/Unit-2-Journal/Unit-2-Journal/TabBarViewController.h index 5e96469..2b2e083 100644 --- a/Unit-2-Journal/Unit-2-Journal/TabBarViewController.h +++ b/Unit-2-Journal/Unit-2-Journal/TabBarViewController.h @@ -14,9 +14,7 @@ @property (nonatomic, copy) NSArray *leftBarItems; @property (nonatomic, copy) NSArray *rightBarItems; @property (nonatomic, strong) UIImage *centerButtonImage; - @property (nonatomic, assign) CGFloat tabBarViewHeight; - @property (nonatomic, strong) YALFoldingTabBar *tabBarView; @end diff --git a/Unit-2-Journal/Unit-2-Journal/TabBarViewController.m b/Unit-2-Journal/Unit-2-Journal/TabBarViewController.m index 78c095f..05495f3 100644 --- a/Unit-2-Journal/Unit-2-Journal/TabBarViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/TabBarViewController.m @@ -7,7 +7,6 @@ // #import "TabBarViewController.h" - #import "YALTabBarItem.h" //model #import "YALTabBarInteracting.h" //protocol #import "YALAnimatingTabBarConstants.h" @@ -26,6 +25,7 @@ @implementation TabBarViewController #pragma mark - Initialization - (instancetype)init { + self = [super init]; if (self) { [self setup]; @@ -34,6 +34,7 @@ - (instancetype)init { } - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { [self setup]; @@ -42,6 +43,7 @@ - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibB } - (instancetype)initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; if (self) { [self setup]; @@ -50,6 +52,7 @@ - (instancetype)initWithCoder:(NSCoder *)aDecoder { } - (void)setup { + self.tabBarViewHeight = YALTabBarViewDefaultHeight; [self setupTabBarView]; @@ -58,6 +61,7 @@ - (void)setup { #pragma mark - View & LifeCycle - (void)viewDidLoad { + [super viewDidLoad]; [self.tabBar setBackgroundImage:[[UIImage alloc] init]]; @@ -67,6 +71,7 @@ - (void)viewDidLoad { } - (void)viewWillLayoutSubviews { + [super viewWillLayoutSubviews]; CGRect tabFrame = self.tabBar.frame; @@ -76,12 +81,13 @@ - (void)viewWillLayoutSubviews { } - (void)viewDidLayoutSubviews { - [super viewDidLayoutSubviews]; + [super viewDidLayoutSubviews]; [self updateTabBarViewFrame]; } - (void)setSelectedIndex:(NSUInteger)selectedIndex { + [super setSelectedIndex:selectedIndex]; self.tabBarView.selectedTabBarItemIndex = selectedIndex; @@ -91,6 +97,7 @@ - (void)setSelectedIndex:(NSUInteger)selectedIndex { #pragma mark - Private - (void)updateTabBarViewFrame { + CGFloat tabBarViewOriginX = self.tabBar.frame.origin.x; CGFloat tabBarViewOriginY = self.tabBar.frame.origin.y; CGFloat tabBarViewSizeWidth = CGRectGetWidth(self.tabBar.frame); @@ -100,6 +107,7 @@ - (void)updateTabBarViewFrame { } - (void)setupTabBarView { + self.tabBarView = [[YALFoldingTabBar alloc] initWithFrame:CGRectZero state:self.state]; self.tabBarView.dataSource = self; @@ -109,6 +117,7 @@ - (void)setupTabBarView { } - (id<YALTabBarInteracting>)currentInteractingViewController { + if ([self.selectedViewController isKindOfClass:[UINavigationController class]]) { return (id<YALTabBarInteracting>)[(UINavigationController *)self.selectedViewController topViewController]; } else { @@ -119,20 +128,24 @@ - (void)setupTabBarView { #pragma mark - YALTabBarViewDataSource - (NSArray *)leftTabBarItemsInTabBarView:(YALFoldingTabBar *)tabBarView { + return self.leftBarItems; } - (NSArray *)rightTabBarItemsInTabBarView:(YALFoldingTabBar *)tabBarView { + return self.rightBarItems; } - (UIImage *)centerImageInTabBarView:(YALFoldingTabBar *)tabBarView { + return self.centerButtonImage; } #pragma mark - YALTabBarViewDelegate - (void)tabBarViewWillCollapse:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; if ([viewController respondsToSelector:@selector(tabBarViewWillCollapse)]) { [viewController tabBarViewWillCollapse]; @@ -140,6 +153,7 @@ - (void)tabBarViewWillCollapse:(YALFoldingTabBar *)tabBarView { } - (void)tabBarViewDidCollapse:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; if ([viewController respondsToSelector:@selector(tabBarViewDidCollapse)]) { [viewController tabBarViewDidCollapse]; @@ -147,6 +161,7 @@ - (void)tabBarViewDidCollapse:(YALFoldingTabBar *)tabBarView { } - (void)tabBarViewWillExpand:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; if ([viewController respondsToSelector:@selector(tabBarViewWillExpand)]) { [viewController tabBarViewWillExpand]; @@ -154,6 +169,7 @@ - (void)tabBarViewWillExpand:(YALFoldingTabBar *)tabBarView { } - (void)tabBarViewDidExpand:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; if ([viewController respondsToSelector:@selector(tabBarViewDidExpand)]) { [viewController tabBarViewDidExpand]; @@ -161,6 +177,7 @@ - (void)tabBarViewDidExpand:(YALFoldingTabBar *)tabBarView { } - (void)extraLeftItemDidPressInTabBarView:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; if ([viewController respondsToSelector:@selector(extraLeftItemDidPress)]) { [viewController extraLeftItemDidPress]; @@ -168,6 +185,7 @@ - (void)extraLeftItemDidPressInTabBarView:(YALFoldingTabBar *)tabBarView { } - (void)extraRightItemDidPressInTabBarView:(YALFoldingTabBar *)tabBarView { + id<YALTabBarInteracting>viewController = [self currentInteractingViewController]; if ([viewController respondsToSelector:@selector(extraRightItemDidPress)]) { [viewController extraRightItemDidPress]; @@ -175,6 +193,7 @@ - (void)extraRightItemDidPressInTabBarView:(YALFoldingTabBar *)tabBarView { } - (void)itemInTabBarViewPressed:(YALFoldingTabBar *)tabBarView atIndex:(NSUInteger)index { + self.selectedViewController = [self.viewControllers objectAtIndex:index]; } diff --git a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m index eb9cca5..e7c5f26 100644 --- a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m @@ -25,12 +25,12 @@ @interface ViewCompletedEntryViewController () @property (weak, nonatomic) IBOutlet UIButton *starFour; @property (weak, nonatomic) IBOutlet UIButton *starFive; - @end @implementation ViewCompletedEntryViewController -- (void)viewDidLoad{ +- (void)viewDidLoad { + [super viewDidLoad]; [self setupFacebookShare]; @@ -43,7 +43,6 @@ - (void)viewDidLoad{ [self.completedReviewTextView setTextColor:[UIColor whiteColor]]; [self.completedReviewTextView setFont:[UIFont fontWithName:@"Akkurat" size:25]]; - NSLog(@"stars: %@", self.journalPostDetail.starRating); // convert date to readable format @@ -69,7 +68,9 @@ - (void)viewDidLoad{ [self setupStars]; } + - (void) setupFacebookShare { + FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc]init]; NSString *titleString = [NSString stringWithFormat:@"Check out my review of %@!",self.journalPostDetail.title]; NSString *descriptionString = [NSString stringWithFormat:@"%@",self.journalPostDetail.postText]; @@ -78,14 +79,13 @@ - (void) setupFacebookShare { content.contentDescription = descriptionString; content.imageURL = [NSURL URLWithString:self.journalPostDetail.imageForMedia]; - FBSDKShareButton *shareButton = [[FBSDKShareButton alloc]initWithFrame:CGRectMake(0, 0, self.facebookView.frame.size.width, self.facebookView.frame.size.height)]; shareButton.shareContent = content; //shareButton.center = self.view.center; [self.facebookView addSubview:shareButton]; - } + #pragma mark - stars - (void)setupStars { @@ -105,6 +105,7 @@ - (void)setupStars { [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; } + else if ([self.journalPostDetail.starRating isEqual:@3]) { [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; @@ -112,6 +113,7 @@ - (void)setupStars { [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; } + else if ([self.journalPostDetail.starRating isEqual:@4]) { [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; @@ -119,6 +121,7 @@ - (void)setupStars { [self.starFour setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; [self.starFive setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; } + else if ([self.journalPostDetail.starRating isEqual:@5]) { [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; @@ -130,12 +133,11 @@ - (void)setupStars { #pragma mark - delete item -- (IBAction)deleteButtonTapped:(id)sender -{ +- (IBAction)deleteButtonTapped:(id)sender { + // delete item from memory and storyboard [self dismissViewControllerAnimated:YES completion:nil]; } - @end diff --git a/Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.m b/Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.m index 60ca03c..290ca6b 100644 --- a/Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.m @@ -39,8 +39,8 @@ @implementation WatchedWishListViewController - (void)viewDidLoad { [super viewDidLoad]; - self.journalPostArray = [[NSMutableArray alloc] init]; - + self.journalPostArray = [[NSMutableArray alloc] init]; + self.mediaTitleLabel.text = self.journalPostDetail.title; self.mediaCreatorLabel.text = self.journalPostDetail.creator; self.doneButton.hidden = YES; @@ -66,12 +66,11 @@ - (void)viewDidLoad { self.textView.layer.borderWidth = 1.0f; self.textView.layer.cornerRadius = 5.0f; self.textView.layer.borderColor = [UIColor blackColor].CGColor; - } -- (void) textViewDidBeginEditing:(UITextView *)textView{ - self.textView.text = @""; +- (void) textViewDidBeginEditing:(UITextView *)textView { + self.textView.text = @""; self.doneButton.hidden = NO; } @@ -95,7 +94,7 @@ - (IBAction)logToJournalButtonTapped:(id)sender { myJournalPost[@"typeOfMedia"] = self.mediaType; myJournalPost[@"imageForMedia"] = self.journalPostDetail.imageForMedia; myJournalPost[@"reviewed"] = [NSNumber numberWithBool:YES]; - + NSLog(@"my Journal post %@", myJournalPost); [myJournalPost saveEventually]; // save entry @@ -111,11 +110,13 @@ - (IBAction)logToJournalButtonTapped:(id)sender { #pragma mark - stars - (IBAction)starOneTapped:(id)sender { + [self resetStars]; [self oneStarRating]; [self startAnimation]; } - (IBAction)starTwoTapped:(id)sender { + [self resetStars]; [self twoStarRating]; [self startAnimation]; @@ -125,29 +126,36 @@ - (IBAction)starThreeTapped:(id)sender { [self threeStarRating]; [self startAnimation]; } + - (IBAction)starFourTapped:(id)sender { + [self resetStars]; [self fourStarRating]; [self startAnimation]; } + - (IBAction)starFiveTapped:(id)sender { + [self resetStars]; [self fiveStarRating]; [self startAnimation]; } - (void)oneStarRating { + self.rating = @1; // assign rating for parse [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; } - (void)twoStarRating { + self.rating = @2; // assign rating for parse [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; } - (void)threeStarRating { + self.rating = @3; // assign rating for parse [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; @@ -155,6 +163,7 @@ - (void)threeStarRating { } - (void)fourStarRating { + self.rating = @4; // assign rating for parse [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; @@ -163,6 +172,7 @@ - (void)fourStarRating { } - (void)fiveStarRating { + self.rating = @5; // assign rating for parse [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star_filled2.png"] forState:UIControlStateNormal]; @@ -172,6 +182,7 @@ - (void)fiveStarRating { } - (void)resetStars { + [self.starOne setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; [self.starTwo setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; [self.starThree setBackgroundImage:[UIImage imageNamed:@"rating_star2.png"] forState:UIControlStateNormal]; diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m index 624e5af..12f8ecb 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m @@ -12,19 +12,16 @@ @implementation WishListTableViewCell - (void)awakeFromNib { - // Initialization code self.artworkImage.clipsToBounds = YES; self.artworkImage.layer.borderColor = [UIColor blackColor].CGColor; self.artworkImage.layer.borderWidth = 2.0; self.artworkImage.layer.cornerRadius = 25.0; - } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; - - // Configure the view for the selected state } // animate custom cells diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index bb22b56..07011b4 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -18,21 +18,18 @@ @interface WishListTableViewController () @implementation WishListTableViewController -- (void) viewDidAppear:(BOOL)animated{ +- (void)viewDidAppear:(BOOL)animated { + [self pullEntriesFromParse]; } -- (void)viewDidLoad -{ - [super viewDidLoad]; - - if (self.allJournalPosts == nil){ - self.allJournalPosts = [[NSMutableArray alloc]init]; - } +- (void)viewDidLoad { - // NSLog(@"Wish List Result: %@",self.searchResult); + [super viewDidLoad]; - // [self setUpSwipeGestures]; + if (self.allJournalPosts == nil) { + self.allJournalPosts = [[NSMutableArray alloc] init]; + } // set up custom cell .xib UINib *nib = [UINib nibWithNibName:@"WishListTableViewCell" bundle:nil]; @@ -40,40 +37,31 @@ - (void)viewDidLoad self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimatedRowHeight = 35.0; - //[self.tableView setSeparatorColor:[UIColor whiteColor]]; [self.tableView setTableFooterView:[UIView new]]; // hide extra lines in empty tableview cells - [self pullEntriesFromParse]; } - - - (void)pullEntriesFromParse { - // __weak typeof(self) weakSelf = self; // prevent memory leakage? - PFQuery *query = [PFQuery queryWithClassName:@"JournalPost"]; [query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) { - // create a for loop and iterate through the objects array and push only the posts that are marked with True to "self.allJournalPosts" - [self.allJournalPosts removeAllObjects]; // clear to prevent doubles + // create a for loop and iterate through the objects array and push only the posts that are marked with True to "self.allJournalPosts" for (JournalPost *object in objects) { if (!object.reviewed) { [self.allJournalPosts addObject:object]; } } - // self.allJournalPosts = objects; // pull all images from Parse NSLog(@"info fetched from parse: %@", self.allJournalPosts); // test it! [self.tableView reloadData]; // reload tableView }]; - } //#pragma mark - swipe gestures @@ -98,15 +86,17 @@ - (void)pullEntriesFromParse { #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.allJournalPosts.count; } -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + WishListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"WishListTableViewCellIdentifier" forIndexPath:indexPath]; JournalPost *thisEntry = self.allJournalPosts[indexPath.row]; @@ -126,14 +116,13 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N cell.separatorInset = UIEdgeInsetsZero; cell.layoutMargins = UIEdgeInsetsZero; - return cell; } #pragma mark - didSelectRowAtIndexPath - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - + // get the data that we're going to pass JournalPost *post = self.allJournalPosts[indexPath.row]; @@ -149,11 +138,11 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath #pragma mark - segue --(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { //identifier: moveFromWishToJournalEntry - if ([[segue identifier] isEqualToString:@"ViewCompletedEntrySegue"]){ + if ([[segue identifier] isEqualToString:@"ViewCompletedEntrySegue"]) { NSIndexPath *selectedIndexPath = [self.tableView indexPathForCell:sender]; WatchedWishListViewController *viewController = segue.destinationViewController; JournalPost *thisPost = self.allJournalPosts[selectedIndexPath.row]; diff --git a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m index f165834..722ffe0 100644 --- a/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m +++ b/Unit-2-Journal/Unit-2-Journal/iTunesSearchResult.m @@ -16,7 +16,6 @@ @implementation iTunesSearchResult @dynamic addedDate; @dynamic mediaType; - +(NSString *)parseClassName { return @"iTunesSearchResult"; } From fa57206dfeb28280c53cc6bf8000e1a1f6af269e Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Wed, 21 Oct 2015 16:37:15 -0400 Subject: [PATCH 76/86] added stars to facebook and hopefully fixed the no-subtitle bug --- Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj | 4 ++-- Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m | 8 ++++++-- .../Unit-2-Journal/ViewCompletedEntryViewController.m | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 231c546..9158ce4 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -539,7 +539,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.shenayoshida.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.jamaalsedayao.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; @@ -555,7 +555,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.shenayoshida.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.jamaalsedayao.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 4e6a185..afcfde7 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -295,13 +295,17 @@ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger return self.searchResults.count; } --(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ +-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ + SearchAPITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SearchAPITableViewCellIdentifier" forIndexPath:indexPath]; iTunesSearchResult *searchResult = self.searchResults[indexPath.row]; cell.titleLabel.text = searchResult.albumOrMovieName; + + if (searchResult.artistName == nil){ + searchResult.artistName =@""; + } cell.authorArtistDirectorLabel.text = searchResult.artistName; NSString *artworkString = searchResult.artworkURL; diff --git a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m index eb9cca5..b2427fd 100644 --- a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m @@ -75,7 +75,7 @@ - (void) setupFacebookShare { NSString *descriptionString = [NSString stringWithFormat:@"%@",self.journalPostDetail.postText]; content.contentTitle = titleString; - content.contentDescription = descriptionString; + content.contentDescription = [NSString stringWithFormat:@"%@ Rating: %@/5 Stars",descriptionString, self.journalPostDetail.starRating]; content.imageURL = [NSURL URLWithString:self.journalPostDetail.imageForMedia]; From 4be507b54fb859b87190d3081f0db0bfd3a70b16 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Wed, 21 Oct 2015 16:43:59 -0400 Subject: [PATCH 77/86] added Review: to reviews --- .../Unit-2-Journal/ViewCompletedEntryViewController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m index b2427fd..d50205b 100644 --- a/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/ViewCompletedEntryViewController.m @@ -75,7 +75,7 @@ - (void) setupFacebookShare { NSString *descriptionString = [NSString stringWithFormat:@"%@",self.journalPostDetail.postText]; content.contentTitle = titleString; - content.contentDescription = [NSString stringWithFormat:@"%@ Rating: %@/5 Stars",descriptionString, self.journalPostDetail.starRating]; + content.contentDescription = [NSString stringWithFormat:@"Review: %@ Rating: %@/5 Stars",descriptionString, self.journalPostDetail.starRating]; content.imageURL = [NSURL URLWithString:self.journalPostDetail.imageForMedia]; From 25f5e5d5034475110a4431ee8269b5c63c44cea5 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Wed, 21 Oct 2015 22:31:45 -0400 Subject: [PATCH 78/86] added additional Parse functionality and a header in the collection view --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal.xcodeproj/project.pbxproj | 28 +++++----- Unit-2-Journal/Unit-2-Journal/.DS_Store | Bin 12292 -> 12292 bytes .../starFilled.imageset/Contents.json | 21 -------- .../starFilled.imageset/starFilled.jpg | Bin 19860 -> 0 bytes .../Unit-2-Journal/JournalHeaderView.h | 13 +++++ .../Unit-2-Journal/JournalHeaderView.m | 13 +++++ .../Unit-2-Journal/JournalHeaderView.xib | 41 +++++++++++++++ .../JournalMainCollectionViewCell.h | 13 ----- .../JournalMainCollectionViewCell.m | 13 ----- .../JournalMainCollectionViewController.m | 48 +++++++++++++++++- .../WatchedWishListViewController.m | 45 +++++++++++----- .../Unit-2-Journal/WishListTableViewCell.h | 8 +-- .../Unit-2-Journal/WishListTableViewCell.m | 40 +-------------- .../Unit-2-Journal/WishListTableViewCell.xib | 15 +++--- .../WishListTableViewController.m | 16 ++++-- 16 files changed, 185 insertions(+), 129 deletions(-) delete mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/starFilled.imageset/Contents.json delete mode 100644 Unit-2-Journal/Unit-2-Journal/Assets.xcassets/starFilled.imageset/starFilled.jpg create mode 100644 Unit-2-Journal/Unit-2-Journal/JournalHeaderView.h create mode 100644 Unit-2-Journal/Unit-2-Journal/JournalHeaderView.m create mode 100644 Unit-2-Journal/Unit-2-Journal/JournalHeaderView.xib delete mode 100644 Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.h delete mode 100644 Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.m diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 09272c1abefa10730c47565ec84fe6034acf57a4..a37f1b2f43aa6800bafbd710a6879303f477c4b6 100644 GIT binary patch delta 124 zcmZoMXffFEkA;z8@_&{|OnWkbl!-uYzKcsrX-P5z!zJI3aSR|ilgZp{+^oLq-Jm>w zHeM!%50m5AW;69#PL5}@;6u`6_vPJWM|M|c5WSJjioYPkFgQ6sw}1f*HcTuu-OSGM GmmdJ6pekzs delta 125 zcmZoMXffFEkA;zO@_&{|OqYy-lnH-szKcsrX-P5z!zCY$I)=&rSWG8#vvIS)IsR<C zKph*|tR_!qOJdq-GdZ5kf)7cTz5nsaj_j_?AR4HOzaYafI5|JJfB_61Oe{3r%+B$b F9{^nlD6Rki diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 9158ce4..38d2b7b 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -11,8 +11,10 @@ 4D7FE2941BCC12050036E58E /* TabBarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7FE2931BCC12050036E58E /* TabBarViewController.m */; settings = {ASSET_TAGS = (); }; }; 4D7FE29D1BCC32170036E58E /* SearchAPITableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7FE29B1BCC32170036E58E /* SearchAPITableViewCell.m */; settings = {ASSET_TAGS = (); }; }; 4D7FE29E1BCC32170036E58E /* SearchAPITableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4D7FE29C1BCC32170036E58E /* SearchAPITableViewCell.xib */; settings = {ASSET_TAGS = (); }; }; - 4D7FE2A51BCC41A00036E58E /* WishListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7FE2A31BCC41A00036E58E /* WishListTableViewCell.m */; settings = {ASSET_TAGS = (); }; }; 4D7FE2A61BCC41A00036E58E /* WishListTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4D7FE2A41BCC41A00036E58E /* WishListTableViewCell.xib */; settings = {ASSET_TAGS = (); }; }; + 4D9B60511BD8723B004A52E4 /* JournalHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4D9B60501BD8723B004A52E4 /* JournalHeaderView.xib */; settings = {ASSET_TAGS = (); }; }; + 4D9B60541BD8731F004A52E4 /* WishListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D9B60531BD8731F004A52E4 /* WishListTableViewCell.m */; settings = {ASSET_TAGS = (); }; }; + 4D9B60571BD8733B004A52E4 /* JournalHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D9B60561BD8733B004A52E4 /* JournalHeaderView.m */; settings = {ASSET_TAGS = (); }; }; 4DCBE1321BC98EF90075BA2C /* JournalMainCollectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */; settings = {ASSET_TAGS = (); }; }; 4DCBE13C1BC9943D0075BA2C /* big_nerd_ranch.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1331BC9943D0075BA2C /* big_nerd_ranch.png */; settings = {ASSET_TAGS = (); }; }; 4DCBE13D1BC9943D0075BA2C /* destroyer.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DCBE1341BC9943D0075BA2C /* destroyer.png */; settings = {ASSET_TAGS = (); }; }; @@ -27,7 +29,6 @@ 4DCBE14A1BC9ADAE0075BA2C /* CreateJournalEntryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE1491BC9ADAE0075BA2C /* CreateJournalEntryViewController.m */; settings = {ASSET_TAGS = (); }; }; 4DCBE14D1BC9ADE00075BA2C /* WishListTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE14C1BC9ADE00075BA2C /* WishListTableViewController.m */; settings = {ASSET_TAGS = (); }; }; 4DCBE1501BC9BD800075BA2C /* ViewCompletedEntryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */; settings = {ASSET_TAGS = (); }; }; - 4DFECE8B1BD1A4C000CC8DF6 /* JournalMainCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DFECE8A1BD1A4C000CC8DF6 /* JournalMainCollectionViewCell.m */; settings = {ASSET_TAGS = (); }; }; 5A50331A1BC8D0E4001CBA5C /* MainTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A5033191BC8D0E4001CBA5C /* MainTableViewController.m */; settings = {ASSET_TAGS = (); }; }; 5A50331D1BC8D99D001CBA5C /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331C1BC8D99D001CBA5C /* LoginViewController.m */; settings = {ASSET_TAGS = (); }; }; 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A50331F1BC8D9B5001CBA5C /* SignUpViewController.m */; settings = {ASSET_TAGS = (); }; }; @@ -60,9 +61,12 @@ 4D7FE29A1BCC32170036E58E /* SearchAPITableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchAPITableViewCell.h; sourceTree = "<group>"; }; 4D7FE29B1BCC32170036E58E /* SearchAPITableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchAPITableViewCell.m; sourceTree = "<group>"; }; 4D7FE29C1BCC32170036E58E /* SearchAPITableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchAPITableViewCell.xib; sourceTree = "<group>"; }; - 4D7FE2A21BCC41A00036E58E /* WishListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WishListTableViewCell.h; sourceTree = "<group>"; }; - 4D7FE2A31BCC41A00036E58E /* WishListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WishListTableViewCell.m; sourceTree = "<group>"; }; 4D7FE2A41BCC41A00036E58E /* WishListTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WishListTableViewCell.xib; sourceTree = "<group>"; }; + 4D9B60501BD8723B004A52E4 /* JournalHeaderView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = JournalHeaderView.xib; sourceTree = "<group>"; }; + 4D9B60521BD8731F004A52E4 /* WishListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WishListTableViewCell.h; sourceTree = "<group>"; }; + 4D9B60531BD8731F004A52E4 /* WishListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WishListTableViewCell.m; sourceTree = "<group>"; }; + 4D9B60551BD8733B004A52E4 /* JournalHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalHeaderView.h; sourceTree = "<group>"; }; + 4D9B60561BD8733B004A52E4 /* JournalHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalHeaderView.m; sourceTree = "<group>"; }; 4DCBE1301BC98EF90075BA2C /* JournalMainCollectionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalMainCollectionViewController.h; sourceTree = "<group>"; }; 4DCBE1311BC98EF90075BA2C /* JournalMainCollectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalMainCollectionViewController.m; sourceTree = "<group>"; }; 4DCBE1331BC9943D0075BA2C /* big_nerd_ranch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = big_nerd_ranch.png; sourceTree = "<group>"; }; @@ -82,8 +86,6 @@ 4DCBE14C1BC9ADE00075BA2C /* WishListTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WishListTableViewController.m; sourceTree = "<group>"; }; 4DCBE14E1BC9BD800075BA2C /* ViewCompletedEntryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewCompletedEntryViewController.h; sourceTree = "<group>"; }; 4DCBE14F1BC9BD800075BA2C /* ViewCompletedEntryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewCompletedEntryViewController.m; sourceTree = "<group>"; }; - 4DFECE891BD1A4C000CC8DF6 /* JournalMainCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JournalMainCollectionViewCell.h; sourceTree = "<group>"; }; - 4DFECE8A1BD1A4C000CC8DF6 /* JournalMainCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JournalMainCollectionViewCell.m; sourceTree = "<group>"; }; 5A5033181BC8D0E4001CBA5C /* MainTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainTableViewController.h; sourceTree = "<group>"; }; 5A5033191BC8D0E4001CBA5C /* MainTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainTableViewController.m; sourceTree = "<group>"; }; 5A50331B1BC8D99D001CBA5C /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; }; @@ -143,11 +145,12 @@ 4D7FE29A1BCC32170036E58E /* SearchAPITableViewCell.h */, 4D7FE29B1BCC32170036E58E /* SearchAPITableViewCell.m */, 4D7FE29C1BCC32170036E58E /* SearchAPITableViewCell.xib */, - 4D7FE2A21BCC41A00036E58E /* WishListTableViewCell.h */, - 4D7FE2A31BCC41A00036E58E /* WishListTableViewCell.m */, + 4D9B60521BD8731F004A52E4 /* WishListTableViewCell.h */, + 4D9B60531BD8731F004A52E4 /* WishListTableViewCell.m */, 4D7FE2A41BCC41A00036E58E /* WishListTableViewCell.xib */, - 4DFECE891BD1A4C000CC8DF6 /* JournalMainCollectionViewCell.h */, - 4DFECE8A1BD1A4C000CC8DF6 /* JournalMainCollectionViewCell.m */, + 4D9B60551BD8733B004A52E4 /* JournalHeaderView.h */, + 4D9B60561BD8733B004A52E4 /* JournalHeaderView.m */, + 4D9B60501BD8723B004A52E4 /* JournalHeaderView.xib */, ); name = "Custom Views & .XIBs"; sourceTree = "<group>"; @@ -341,6 +344,7 @@ 4DCBE1441BC9943D0075BA2C /* x-files.png in Resources */, 4DCBE13E1BC9943D0075BA2C /* drake.png in Resources */, 4DCBE1401BC9943D0075BA2C /* run_the_jewels.png in Resources */, + 4D9B60511BD8723B004A52E4 /* JournalHeaderView.xib in Resources */, 5A6A228B1BD43958006E9FE7 /* Akkurat Light Regular.otf in Resources */, 4DCBE13D1BC9943D0075BA2C /* destroyer.png in Resources */, 4DCBE1411BC9943D0075BA2C /* sleater_kinney.png in Resources */, @@ -424,10 +428,10 @@ 4DCBE14D1BC9ADE00075BA2C /* WishListTableViewController.m in Sources */, 5A50331A1BC8D0E4001CBA5C /* MainTableViewController.m in Sources */, 9AAB40061BC9FABC00FD7227 /* APIManager.m in Sources */, + 4D9B60541BD8731F004A52E4 /* WishListTableViewCell.m in Sources */, 5A5033201BC8D9B5001CBA5C /* SignUpViewController.m in Sources */, - 4D7FE2A51BCC41A00036E58E /* WishListTableViewCell.m in Sources */, 4DCBE1501BC9BD800075BA2C /* ViewCompletedEntryViewController.m in Sources */, - 4DFECE8B1BD1A4C000CC8DF6 /* JournalMainCollectionViewCell.m in Sources */, + 4D9B60571BD8733B004A52E4 /* JournalHeaderView.m in Sources */, 9A2FFC2F1BC84BF200E880D3 /* main.m in Sources */, 4D7FE29D1BCC32170036E58E /* SearchAPITableViewCell.m in Sources */, ); diff --git a/Unit-2-Journal/Unit-2-Journal/.DS_Store b/Unit-2-Journal/Unit-2-Journal/.DS_Store index 6d4848b28d2a9df025956adf371120b0e276e9ac..0c888c23b78638ee63edbfa6562ec2934cebf303 100644 GIT binary patch delta 32 hcmZokXi3=cUxL~0%f-og5;l|VB)MVi%^i|8VgTmd4Iuyk delta 32 hcmZokXi3=cUxL}*=g8zd37g4wlH4%%<_^gkF#yjI3%LLQ diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/starFilled.imageset/Contents.json b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/starFilled.imageset/Contents.json deleted file mode 100644 index 49440a9..0000000 --- a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/starFilled.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "starFilled.jpg", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/starFilled.imageset/starFilled.jpg b/Unit-2-Journal/Unit-2-Journal/Assets.xcassets/starFilled.imageset/starFilled.jpg deleted file mode 100644 index e3f08a815639f079ebedd660133fbbc33427353b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19860 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 diff --git a/Unit-2-Journal/Unit-2-Journal/JournalHeaderView.h b/Unit-2-Journal/Unit-2-Journal/JournalHeaderView.h new file mode 100644 index 0000000..a254231 --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/JournalHeaderView.h @@ -0,0 +1,13 @@ +// +// JournalHeaderView.h +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/21/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface JournalHeaderView : UICollectionReusableView + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalHeaderView.m b/Unit-2-Journal/Unit-2-Journal/JournalHeaderView.m new file mode 100644 index 0000000..2d3784a --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/JournalHeaderView.m @@ -0,0 +1,13 @@ +// +// JournalHeaderView.m +// Unit-2-Journal +// +// Created by Shena Yoshida on 10/21/15. +// Copyright © 2015 Jamaal Sedayao. All rights reserved. +// + +#import "JournalHeaderView.h" + +@implementation JournalHeaderView + +@end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalHeaderView.xib b/Unit-2-Journal/Unit-2-Journal/JournalHeaderView.xib new file mode 100644 index 0000000..a99f24f --- /dev/null +++ b/Unit-2-Journal/Unit-2-Journal/JournalHeaderView.xib @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> + <dependencies> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> + </dependencies> + <customFonts key="customFonts"> + <mutableArray key="Akkurat Bold.otf"> + <string>Akkurat-Bold</string> + </mutableArray> + </customFonts> + <objects> + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="JournalHeaderView"> + <rect key="frame" x="0.0" y="0.0" width="600" height="150"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="JOURNAL" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r2f-XV-NbP"> + <rect key="frame" x="190" y="66" width="221.5" height="59"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="50"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <accessibility key="accessibilityConfiguration" identifier="HeaderView"/> + <constraints> + <constraint firstItem="r2f-XV-NbP" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="9IL-fw-Xbi"/> + <constraint firstItem="r2f-XV-NbP" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="IS4-NX-b27"/> + <constraint firstAttribute="bottom" secondItem="r2f-XV-NbP" secondAttribute="bottom" constant="25" id="zgT-2s-llL"/> + </constraints> + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> + <variation key="default"> + <mask key="constraints"> + <exclude reference="9IL-fw-Xbi"/> + </mask> + </variation> + <point key="canvasLocation" x="318" y="228"/> + </view> + </objects> +</document> diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.h b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.h deleted file mode 100644 index 20c8ee0..0000000 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// JournalMainCollectionViewCell.h -// Unit-2-Journal -// -// Created by Shena Yoshida on 10/16/15. -// Copyright © 2015 Jamaal Sedayao. All rights reserved. -// - -#import <UIKit/UIKit.h> - -@interface JournalMainCollectionViewCell : UICollectionViewCell - -@end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.m deleted file mode 100644 index ce30bcd..0000000 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewCell.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// JournalMainCollectionViewCell.m -// Unit-2-Journal -// -// Created by Shena Yoshida on 10/16/15. -// Copyright © 2015 Jamaal Sedayao. All rights reserved. -// - -#import "JournalMainCollectionViewCell.h" - -@implementation JournalMainCollectionViewCell - -@end diff --git a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m index 311d289..7673fdf 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/JournalMainCollectionViewController.m @@ -9,9 +9,12 @@ #import "JournalMainCollectionViewController.h" #import <Parse/Parse.h> #import "ViewCompletedEntryViewController.h" +#import "JournalHeaderView.h" @interface JournalMainCollectionViewController () +//<UICollectionViewDelegateFlowLayout> + @end @implementation JournalMainCollectionViewController @@ -41,6 +44,13 @@ - (void)viewDidLoad { self.collectionView.alwaysBounceVertical = YES; + UICollectionViewFlowLayout *layout = (UICollectionViewFlowLayout *)self.collectionViewLayout; + layout.headerReferenceSize = CGSizeMake(0, 150.0); + + // set up custom cell .xib + UINib *nib = [UINib nibWithNibName:@"JournalHeaderView" bundle:nil]; + [self.collectionView registerNib:nib forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView"]; + [self runQuery]; // run Parse query to fetch saved data } @@ -51,6 +61,8 @@ - (void)runQuery { // __weak typeof(self) weakSelf = self; // prevent memory leakage? PFQuery *query = [PFQuery queryWithClassName:@"JournalPost"]; + [query whereKey:@"reviewed" equalTo:[NSNumber numberWithBool:YES]]; + [query orderByDescending:@"updatedAt"]; [query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) { @@ -59,9 +71,10 @@ - (void)runQuery { [self.allJournalPosts removeAllObjects]; // clear to prevent doubles for (JournalPost *object in objects) { - if (object.reviewed) { +// if (object.reviewed) { [self.allJournalPosts addObject:object]; - } +// [self.allJournalPosts insertObject:object atIndex:0]; +// } } // NSLog(@"info fetched from parse: %@", self.allJournalPosts); // test it! @@ -70,6 +83,25 @@ - (void)runQuery { }]; } + +//- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { +// +// UICollectionReusableView *reusableview = nil; +// +// if (kind == UICollectionElementKindSectionHeader) { +// +// JournalHeaderView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView" forIndexPath:indexPath]; +// +//// NSString *title = [[NSString alloc]initWithFormat:@"Recipe Group #%i", indexPath.section + 1]; +//// headerView.title.text = title; +//// UIImage *headerImage = [UIImage imageNamed:@"header_banner.png"]; +//// headerView.backgroundImage.image = headerImage; +// +// reusableview = headerView; +// } +// return reusableview; +//} + #pragma mark <UICollectionViewDataSource> - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { @@ -118,6 +150,18 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell return cell; } + +- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { + if ([kind isEqualToString:UICollectionElementKindSectionHeader]) { + JournalHeaderView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"HeaderView" forIndexPath:indexPath]; + + // configure outlets for .xib here if necessary + + return headerView; + } + return nil; +} + #pragma mark Navigation -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ diff --git a/Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.m b/Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.m index 290ca6b..5ee52d8 100644 --- a/Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WatchedWishListViewController.m @@ -84,20 +84,37 @@ - (IBAction)doneButtonTapped:(id)sender { - (IBAction)logToJournalButtonTapped:(id)sender { - JournalPost *myJournalPost = [[JournalPost alloc]init]; - - myJournalPost[@"postText"] = self.textView.text; - myJournalPost[@"starRating"] = self.rating; - myJournalPost[@"title"] = self.journalPostDetail.title; - myJournalPost[@"creator"] = self.journalPostDetail.creator; - myJournalPost[@"dateEntered"] = [NSDate date]; - myJournalPost[@"typeOfMedia"] = self.mediaType; - myJournalPost[@"imageForMedia"] = self.journalPostDetail.imageForMedia; - myJournalPost[@"reviewed"] = [NSNumber numberWithBool:YES]; - - NSLog(@"my Journal post %@", myJournalPost); - - [myJournalPost saveEventually]; // save entry + PFQuery *query = [PFQuery queryWithClassName:@"JournalPost"]; + [query whereKey:@"title" equalTo:self.journalPostDetail.title]; + [query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) { + + NSLog(@"%@", objects); + + JournalPost *existingPost = [objects firstObject]; + existingPost[@"postText"] = self.textView.text; + existingPost[@"starRating"] = self.rating; + existingPost[@"dateEntered"] = [NSDate date]; + existingPost[@"reviewed"] = [NSNumber numberWithBool:YES]; + + [existingPost saveEventually]; // save entry + }]; + + + +// JournalPost *myJournalPost = [[JournalPost alloc]init]; +// +// myJournalPost[@"postText"] = self.textView.text; +// myJournalPost[@"starRating"] = self.rating; +// myJournalPost[@"title"] = self.journalPostDetail.title; +// myJournalPost[@"creator"] = self.journalPostDetail.creator; +// myJournalPost[@"dateEntered"] = [NSDate date]; +// myJournalPost[@"typeOfMedia"] = self.mediaType; +// myJournalPost[@"imageForMedia"] = self.journalPostDetail.imageForMedia; +// myJournalPost[@"reviewed"] = [NSNumber numberWithBool:YES]; +// +// NSLog(@"my Journal post %@", myJournalPost); +// +// [myJournalPost saveEventually]; // save entry [self.navigationController popToRootViewControllerAnimated:YES]; // pop back to root controller diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.h b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.h index 0f834b4..61049b6 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.h +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.h @@ -2,7 +2,7 @@ // WishListTableViewCell.h // Unit-2-Journal // -// Created by Shena Yoshida on 10/12/15. +// Created by Shena Yoshida on 10/21/15. // Copyright © 2015 Jamaal Sedayao. All rights reserved. // @@ -10,8 +10,8 @@ @interface WishListTableViewCell : UITableViewCell -@property (weak, nonatomic) IBOutlet UILabel *titleLabel; -@property (weak, nonatomic) IBOutlet UILabel *authorArtistDirectorLabel; -@property (weak, nonatomic) IBOutlet UIImageView *artworkImage; +@property (nonatomic) IBOutlet UILabel *titleLabel; +@property (nonatomic) IBOutlet UILabel *authorArtistDirectorLabel; +@property (nonatomic) IBOutlet UIImageView * artworkImage; @end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m index 12f8ecb..42458ab 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m @@ -2,50 +2,14 @@ // WishListTableViewCell.m // Unit-2-Journal // -// Created by Shena Yoshida on 10/12/15. +// Created by Shena Yoshida on 10/21/15. // Copyright © 2015 Jamaal Sedayao. All rights reserved. // #import "WishListTableViewCell.h" -#import <pop/POP.h> @implementation WishListTableViewCell -- (void)awakeFromNib { - - self.artworkImage.clipsToBounds = YES; - self.artworkImage.layer.borderColor = [UIColor blackColor].CGColor; - self.artworkImage.layer.borderWidth = 2.0; - self.artworkImage.layer.cornerRadius = 25.0; -} - -- (void)setSelected:(BOOL)selected animated:(BOOL)animated { - - [super setSelected:selected animated:animated]; -} +@end -// animate custom cells -- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated { - - [super setHighlighted:highlighted animated:animated]; - - if (self.highlighted) { - POPBasicAnimation *scaleAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewScaleXY]; - scaleAnimation.duration = 0.1; - scaleAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(1, 1)]; - [self.titleLabel pop_addAnimation:scaleAnimation forKey:nil]; - [self.authorArtistDirectorLabel pop_addAnimation:scaleAnimation forKey:nil]; - [self.artworkImage pop_addAnimation:scaleAnimation forKey:nil]; - - } else { - POPSpringAnimation *sprintAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewScaleXY]; - sprintAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(0.9, 0.9)]; - sprintAnimation.velocity = [NSValue valueWithCGPoint:CGPointMake(2, 2)]; - sprintAnimation.springBounciness = 20.f; - [self.titleLabel pop_addAnimation:sprintAnimation forKey:nil]; - [self.authorArtistDirectorLabel pop_addAnimation:sprintAnimation forKey:nil]; - [self.artworkImage pop_addAnimation:sprintAnimation forKey:nil]; - } -} -@end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib index 53bbbc8..f2a6951 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib @@ -29,18 +29,18 @@ <constraint firstAttribute="width" constant="60" id="fag-dr-LW7"/> </constraints> </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ywi-Ne-nLf"> - <rect key="frame" x="86" y="16" width="238" height="46.5"/> - <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> - <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> - <nil key="highlightedColor"/> - </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TR1-Ae-Cd4"> <rect key="frame" x="86" y="63" width="238" height="46"/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <nil key="highlightedColor"/> </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ywi-Ne-nLf"> + <rect key="frame" x="86" y="16" width="238" height="46.5"/> + <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> + <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <nil key="highlightedColor"/> + </label> </subviews> <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> @@ -74,12 +74,13 @@ </mask> </variation> </tableViewCellContentView> + <accessibility key="accessibilityConfiguration" identifier="WishListTableViewCellIdentifier"/> <connections> <outlet property="artworkImage" destination="Vb0-5u-rmQ" id="YH4-Ar-buq"/> <outlet property="authorArtistDirectorLabel" destination="TR1-Ae-Cd4" id="MLM-qU-syZ"/> <outlet property="titleLabel" destination="ywi-Ne-nLf" id="8lN-ad-NzW"/> </connections> - <point key="canvasLocation" x="616.5" y="429.5"/> + <point key="canvasLocation" x="616" y="429.5"/> </tableViewCell> </objects> </document> diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index 07011b4..246ef0c 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -14,6 +14,8 @@ @interface WishListTableViewController () +@property (nonatomic) NSString *objectID; + @end @implementation WishListTableViewController @@ -53,12 +55,16 @@ - (void)pullEntriesFromParse { // create a for loop and iterate through the objects array and push only the posts that are marked with True to "self.allJournalPosts" for (JournalPost *object in objects) { if (!object.reviewed) { - [self.allJournalPosts addObject:object]; + + [self.allJournalPosts insertObject:object atIndex:0]; + + //[self.allJournalPosts addObject:object]; + } } - // self.allJournalPosts = objects; // pull all images from Parse + // self.allJournalPosts = objects; // pull all images from Parse - NSLog(@"info fetched from parse: %@", self.allJournalPosts); // test it! + // NSLog(@"info fetched from parse: %@", self.allJournalPosts); // test it! [self.tableView reloadData]; // reload tableView }]; @@ -100,7 +106,7 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N WishListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"WishListTableViewCellIdentifier" forIndexPath:indexPath]; JournalPost *thisEntry = self.allJournalPosts[indexPath.row]; - + cell.titleLabel.text = thisEntry.title; cell.authorArtistDirectorLabel.text = thisEntry.creator; @@ -113,7 +119,7 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N // format table view lines cell.preservesSuperviewLayoutMargins = false; - cell.separatorInset = UIEdgeInsetsZero; + // cell.separatorInset = UIEdgeInsetsZero; cell.layoutMargins = UIEdgeInsetsZero; return cell; From 1b6eaa42d662045a063e5be413279bf1e3af0495 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Wed, 21 Oct 2015 23:59:05 -0400 Subject: [PATCH 79/86] fixed custom cells --- .../Unit-2-Journal/WishListTableViewCell.m | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m index 42458ab..af04709 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.m @@ -7,9 +7,46 @@ // #import "WishListTableViewCell.h" +#import <Pop/POP.h> @implementation WishListTableViewCell -@end +- (void)awakeFromNib { + + // round corners + self.artworkImage.clipsToBounds = YES; + self.artworkImage.layer.borderColor = [UIColor blackColor].CGColor; + self.artworkImage.layer.borderWidth = 2.0; + self.artworkImage.layer.cornerRadius = 25.0; +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; +} +// animate custom cells +- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated { + + [super setHighlighted:highlighted animated:animated]; + + if (self.highlighted) { + POPBasicAnimation *scaleAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewScaleXY]; + scaleAnimation.duration = 0.1; + scaleAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(1, 1)]; + [self.titleLabel pop_addAnimation:scaleAnimation forKey:nil]; + [self.authorArtistDirectorLabel pop_addAnimation:scaleAnimation forKey:nil]; + [self.artworkImage pop_addAnimation:scaleAnimation forKey:nil]; + + } else { + POPSpringAnimation *sprintAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewScaleXY]; + sprintAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(0.9, 0.9)]; + sprintAnimation.velocity = [NSValue valueWithCGPoint:CGPointMake(2, 2)]; + sprintAnimation.springBounciness = 20.f; + [self.titleLabel pop_addAnimation:sprintAnimation forKey:nil]; + [self.authorArtistDirectorLabel pop_addAnimation:sprintAnimation forKey:nil]; + [self.artworkImage pop_addAnimation:sprintAnimation forKey:nil]; + } +} + +@end From b3d2b77c55cb3b5a236acfd2610b7c7b64156545 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Wed, 21 Oct 2015 23:59:56 -0400 Subject: [PATCH 80/86] one more --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index a37f1b2f43aa6800bafbd710a6879303f477c4b6..58a3d5db5bc3ba9f3272311eb881760e80ccb6a5 100644 GIT binary patch delta 32 hcmZoMXffDunU(od8^h#(ET)sW*?3^=&Hij#1p&>#3;6&5 delta 32 lcmZoMXffDunU(ot9K+;)ET)sW*?5@OyMfu8{n@q(0szD;3rzq3 From 181b90d10e44505658591e0e42cd5ce4e893e754 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Thu, 22 Oct 2015 00:04:46 -0400 Subject: [PATCH 81/86] fixed SearchAPI controller flow and empty textview handling --- .../Unit-2-Journal/Base.lproj/Main.storyboard | 45 +++++++++++++------ .../CreateJournalEntryViewController.m | 9 +++- .../Unit-2-Journal/SearchAPIViewController.m | 42 +++++++++++++++++ .../WishListTableViewController.m | 9 ++-- 4 files changed, 86 insertions(+), 19 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 558746f..06d2d42 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -51,7 +51,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -242,7 +242,7 @@ </label> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="qLr-OV-7JA" firstAttribute="centerX" secondItem="qWh-Hz-BDE" secondAttribute="centerX" id="els-Ct-0Lj"/> <constraint firstItem="qLr-OV-7JA" firstAttribute="centerY" secondItem="qWh-Hz-BDE" secondAttribute="centerY" id="iFg-8y-wzh"/> @@ -280,7 +280,7 @@ <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> - <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> + <rect key="frame" x="15" y="5" width="32" height="20"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="16"/> @@ -288,7 +288,7 @@ <nil key="highlightedColor"/> </label> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> - <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> + <rect key="frame" x="15" y="25" width="41" height="14"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="11"/> @@ -472,12 +472,14 @@ <navigationItem key="navigationItem" id="gPV-bk-VJf"/> <connections> <outlet property="booksButton" destination="VhT-rh-Xlh" id="lft-lw-MG6"/> + <outlet property="journalEntryButton" destination="Q0c-Ez-WJB" id="Tvu-tK-ucU"/> <outlet property="moviesButton" destination="4y1-WC-sKi" id="MrR-aE-OEy"/> <outlet property="musicButton" destination="EJ6-uf-zLo" id="uE7-0x-fSK"/> <outlet property="podcastButton" destination="XjD-vV-PU3" id="056-o8-aEu"/> <outlet property="searchTextField" destination="zob-sY-qha" id="CSN-S0-Rzp"/> <outlet property="tableView" destination="twc-ko-3Rx" id="4Cw-TH-Ai6"/> <outlet property="televisionButton" destination="pgh-XG-GUn" id="VIW-gO-3XS"/> + <outlet property="wishListButton" destination="i6F-Oe-4xR" id="Xi4-vP-rOj"/> </connections> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="jtX-Jk-aNy" userLabel="First Responder" sceneMemberID="firstResponder"/> @@ -501,6 +503,7 @@ <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="TLh-Y5-rQa"> <rect key="frame" x="10" y="5" width="120" height="120"/> + <animations/> <constraints> <constraint firstAttribute="width" constant="120" id="F3F-8P-fTh"/> <constraint firstAttribute="height" constant="120" id="Odq-ff-11v"/> @@ -508,18 +511,21 @@ </imageView> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1AF-cw-sG5"> <rect key="frame" x="138" y="108" width="442" height="17"/> + <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DWN-3U-CrL"> - <rect key="frame" x="138" y="79" width="442" height="20.5"/> + <rect key="frame" x="138" y="79" width="442" height="21"/> + <animations/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="QXz-a4-RR1"> <rect key="frame" x="549" y="15" width="36" height="30"/> + <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> <state key="normal" title="Done"> <color key="titleColor" red="0.97254901960784312" green="0.5490196078431373" blue="0.062745098039215685" alpha="1" colorSpace="calibratedRGB"/> @@ -529,7 +535,8 @@ </connections> </button> </subviews> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <animations/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstAttribute="bottom" secondItem="1AF-cw-sG5" secondAttribute="bottom" id="5GX-Tt-REu"/> <constraint firstAttribute="height" constant="125" id="Bjb-7L-TcT"/> @@ -549,12 +556,14 @@ <subviews> <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="5dG-Gc-FlR"> <rect key="frame" x="8" y="8" width="544" height="158"/> - <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <animations/> + <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="25"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> </textView> </subviews> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <animations/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstAttribute="trailing" secondItem="5dG-Gc-FlR" secondAttribute="trailing" constant="8" id="Hh1-So-hwM"/> <constraint firstItem="5dG-Gc-FlR" firstAttribute="top" secondItem="KTC-y5-v8E" secondAttribute="top" constant="8" id="VQs-d1-Hne"/> @@ -567,6 +576,7 @@ <subviews> <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="RPL-cy-o0G" userLabel="star1"> <rect key="frame" x="0.0" y="0.0" width="98" height="50"/> + <animations/> <state key="normal" image="rating_star2"/> <connections> <action selector="starOneTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="Hxv-dr-2Yg"/> @@ -574,6 +584,7 @@ </button> <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eqY-tM-EkF" userLabel="star2"> <rect key="frame" x="108" y="0.0" width="98" height="50"/> + <animations/> <state key="normal" image="rating_star2"/> <connections> <action selector="starTwoTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="5H7-Qq-ml0"/> @@ -581,6 +592,7 @@ </button> <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="sLK-NH-rvK" userLabel="star3"> <rect key="frame" x="216" y="0.0" width="98" height="50"/> + <animations/> <state key="normal" image="rating_star2"/> <connections> <action selector="starThreeTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="J6b-uA-EaE"/> @@ -588,6 +600,7 @@ </button> <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fd9-H9-lzG" userLabel="star4"> <rect key="frame" x="324" y="0.0" width="98" height="50"/> + <animations/> <state key="normal" image="rating_star2"/> <connections> <action selector="starFourTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="VdS-rq-HCy"/> @@ -595,13 +608,15 @@ </button> <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Jzq-uK-0EF" userLabel="star5"> <rect key="frame" x="432" y="0.0" width="98" height="50"/> + <animations/> <state key="normal" image="rating_star2"/> <connections> <action selector="starFiveTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="KDM-T7-hVz"/> </connections> </button> </subviews> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <animations/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstAttribute="bottom" secondItem="Jzq-uK-0EF" secondAttribute="bottom" id="1ND-Ln-y7I"/> <constraint firstAttribute="bottom" secondItem="sLK-NH-rvK" secondAttribute="bottom" id="2hF-t7-7wW"/> @@ -633,6 +648,7 @@ <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1oM-DR-MwP"> <rect key="frame" x="213" y="13" width="134" height="33"/> + <animations/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> <state key="normal" title=" Log To Journal "> <color key="titleColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> @@ -642,6 +658,7 @@ </connections> </button> </subviews> + <animations/> <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="1oM-DR-MwP" firstAttribute="centerY" secondItem="tNJ-35-n33" secondAttribute="centerY" id="4aa-nt-gCQ"/> @@ -650,7 +667,8 @@ </constraints> </view> </subviews> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <animations/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="tNJ-35-n33" firstAttribute="top" secondItem="KTC-y5-v8E" secondAttribute="bottom" constant="10" id="5zc-ey-MkX"/> <constraint firstItem="tNJ-35-n33" firstAttribute="leading" secondItem="XbP-Rr-3ea" secondAttribute="leadingMargin" id="AN1-xe-uD8"/> @@ -947,6 +965,7 @@ <navigationBar key="navigationBar" contentMode="scaleToFill" id="kHi-Rv-LpC"> <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> <autoresizingMask key="autoresizingMask"/> + <animations/> </navigationBar> <connections> <segue destination="WZe-UX-wgc" kind="relationship" relationship="rootViewController" id="c1X-Zg-b9I"/> @@ -1328,12 +1347,12 @@ <rect key="frame" x="102" y="27" width="77" height="21"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> - <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> </subviews> <animations/> - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstAttribute="height" constant="100" id="DnT-BB-V1g"/> <constraint firstItem="Qia-hv-Okp" firstAttribute="centerX" secondItem="iJa-08-1GE" secondAttribute="centerX" id="Hf4-By-8MH"/> diff --git a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m index c91bc76..8961b81 100644 --- a/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/CreateJournalEntryViewController.m @@ -48,6 +48,7 @@ - (void)viewDidLoad { //manage textview self.textView.delegate = self; self.textView.text = @"Write your thoughts here..."; + self.textView.textColor = [UIColor grayColor]; self.textView.layer.borderWidth = 1.0f; self.textView.layer.cornerRadius = 5.0f; self.textView.layer.borderColor = [UIColor blackColor].CGColor; @@ -71,6 +72,8 @@ - (void) textViewDidBeginEditing:(UITextView *)textView { self.textView.text = @""; + self.textView.textColor = [UIColor whiteColor]; + self.doneEditingButton.hidden = NO; } @@ -206,9 +209,13 @@ - (IBAction)logToJournalButtonTapped:(id)sender { // when we log the journal entry, SAVE it all to Parse JournalPost *myJournalPost = [[JournalPost alloc] init]; // most of this is a repeat of above. + + if ([self.textView.text isEqualToString:@"Write your thoughts here..."]){ + self.textView.text = @""; + } - myJournalPost[@"starRating"] = self.rating; myJournalPost[@"postText"] = self.textView.text; + myJournalPost[@"starRating"] = self.rating; myJournalPost[@"title"] = self.postSearchResult.albumOrMovieName; myJournalPost[@"creator"] = self.postSearchResult.artistName; myJournalPost[@"dateEntered"] = [NSDate date]; diff --git a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m index 9513dd0..3e9814a 100644 --- a/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/SearchAPIViewController.m @@ -23,6 +23,8 @@ @interface SearchAPIViewController () UITableViewDelegate, UITextFieldDelegate > +@property (strong, nonatomic) IBOutlet UIButton *wishListButton; +@property (strong, nonatomic) IBOutlet UIButton *journalEntryButton; @property (weak, nonatomic) IBOutlet UITextField *searchTextField; @property (weak, nonatomic) IBOutlet UITableView *tableView; @@ -46,6 +48,10 @@ - (void)viewDidLoad { [super viewDidLoad]; + self.searchTextField.userInteractionEnabled = NO; + self.searchTextField.alpha = .5; + [self disableButtons]; + self.tableView.delegate = self; self.tableView.dataSource = self; self.searchTextField.delegate = self; @@ -58,6 +64,24 @@ - (void)viewDidLoad { self.tableView.estimatedRowHeight = 35.0; [self.tableView setSeparatorColor:[UIColor whiteColor]]; } +- (void) viewDidAppear:(BOOL)animated{ + [self disableButtons]; + self.searchTextField.userInteractionEnabled = NO; + self.searchTextField.alpha =.5; +} + +- (void) disableButtons { + self.wishListButton.userInteractionEnabled = NO; + self.journalEntryButton.userInteractionEnabled = NO; + self.wishListButton.alpha = .5; + self.journalEntryButton.alpha = .5; +} +- (void) enableButtons { + self.wishListButton.userInteractionEnabled = YES; + self.journalEntryButton.userInteractionEnabled = YES; + self.wishListButton.alpha = 1.0; + self.journalEntryButton.alpha = 1.0; +} #pragma mark - setup buttons @@ -78,6 +102,8 @@ - (IBAction)mediaButtonTypeSelected:(id)sender { self.media = [sender currentTitle]; } + self.searchTextField.userInteractionEnabled = YES; + self.searchTextField.alpha = 1.0; // NSLog(@"Media button tapped: %@",self.media); } @@ -328,6 +354,8 @@ -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath * iTunesSearchResult *searchResult = self.searchResults[indexPath.row]; self.passSearchResult = searchResult; + + [self enableButtons]; } #pragma mark - Navigation @@ -345,4 +373,18 @@ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { } } +//- (void) postAlert { +// +// UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Wait..." +// message:@"Choose something to talk about!" +// preferredStyle:UIAlertControllerStyleAlert]; +// +// UIAlertAction *ok = [UIAlertAction actionWithTitle:@"Oh yeah!" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { +// [alert dismissViewControllerAnimated:YES completion:nil]; +// +// }]; +// +// [alert addAction:ok]; +// [self presentViewController:alert animated:YES completion:nil]; +//} @end diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index 246ef0c..70bfc20 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -20,11 +20,6 @@ @interface WishListTableViewController () @implementation WishListTableViewController -- (void)viewDidAppear:(BOOL)animated { - - [self pullEntriesFromParse]; -} - - (void)viewDidLoad { [super viewDidLoad]; @@ -43,6 +38,10 @@ - (void)viewDidLoad { [self pullEntriesFromParse]; } +- (void)viewDidAppear:(BOOL)animated { + + [self pullEntriesFromParse]; +} - (void)pullEntriesFromParse { From 9e3a1683429819900e20b8f4172226da37bbaf63 Mon Sep 17 00:00:00 2001 From: Jamaal Sedayao <you@example.com> Date: Thu, 22 Oct 2015 00:24:34 -0400 Subject: [PATCH 82/86] change WatchWishlist labels to white --- Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard | 8 ++++---- .../Unit-2-Journal/WishListTableViewController.m | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 06d2d42..19da4db 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -509,18 +509,18 @@ <constraint firstAttribute="height" constant="120" id="Odq-ff-11v"/> </constraints> </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1AF-cw-sG5"> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1AF-cw-sG5"> <rect key="frame" x="138" y="108" width="442" height="17"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DWN-3U-CrL"> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DWN-3U-CrL"> <rect key="frame" x="138" y="79" width="442" height="21"/> <animations/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> - <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> + <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <nil key="highlightedColor"/> </label> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="QXz-a4-RR1"> diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index 70bfc20..76960bb 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -147,7 +147,7 @@ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { //identifier: moveFromWishToJournalEntry - if ([[segue identifier] isEqualToString:@"ViewCompletedEntrySegue"]) { + if ([[segue identifier] isEqualToString:@"moveFromWishToJournalEntry"]) { NSIndexPath *selectedIndexPath = [self.tableView indexPathForCell:sender]; WatchedWishListViewController *viewController = segue.destinationViewController; JournalPost *thisPost = self.allJournalPosts[selectedIndexPath.row]; From 2c8afd57ddbd7cfa851cfda04fe5b1266b2757ad Mon Sep 17 00:00:00 2001 From: Brian <brianblanco1@gmail.comm> Date: Thu, 22 Oct 2015 12:12:47 -0400 Subject: [PATCH 83/86] added swipe to delete on WishList TableView --- .../Unit-2-Journal.xcodeproj/project.pbxproj | 6 ++--- .../Unit-2-Journal/Base.lproj/Main.storyboard | 27 +++++++++++++++---- .../Unit-2-Journal/WishListTableViewCell.xib | 15 +++++++---- .../WishListTableViewController.m | 9 +++++++ 4 files changed, 44 insertions(+), 13 deletions(-) diff --git a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj index 9158ce4..5d93766 100644 --- a/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj +++ b/Unit-2-Journal/Unit-2-Journal.xcodeproj/project.pbxproj @@ -305,7 +305,7 @@ TargetAttributes = { 9A2FFC291BC84BF100E880D3 = { CreatedOnToolsVersion = 7.0; - DevelopmentTeam = 5F2A5ZZ575; + DevelopmentTeam = Z6GBYPK592; }; }; }; @@ -539,7 +539,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.jamaalsedayao.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.brianblanco.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; @@ -555,7 +555,7 @@ INFOPLIST_FILE = "Unit-2-Journal/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.jamaalsedayao.Unit-2-Journal"; + PRODUCT_BUNDLE_IDENTIFIER = "com.brianblanco.Unit-2-Journal"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 558746f..969e9b9 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -51,7 +51,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -280,7 +280,7 @@ <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> - <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> + <rect key="frame" x="15" y="5" width="32" height="20"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="16"/> @@ -288,7 +288,7 @@ <nil key="highlightedColor"/> </label> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> - <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> + <rect key="frame" x="15" y="25" width="41" height="14"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="11"/> @@ -501,6 +501,7 @@ <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="TLh-Y5-rQa"> <rect key="frame" x="10" y="5" width="120" height="120"/> + <animations/> <constraints> <constraint firstAttribute="width" constant="120" id="F3F-8P-fTh"/> <constraint firstAttribute="height" constant="120" id="Odq-ff-11v"/> @@ -508,18 +509,21 @@ </imageView> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1AF-cw-sG5"> <rect key="frame" x="138" y="108" width="442" height="17"/> + <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DWN-3U-CrL"> - <rect key="frame" x="138" y="79" width="442" height="20.5"/> + <rect key="frame" x="138" y="79" width="442" height="21"/> + <animations/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="QXz-a4-RR1"> <rect key="frame" x="549" y="15" width="36" height="30"/> + <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> <state key="normal" title="Done"> <color key="titleColor" red="0.97254901960784312" green="0.5490196078431373" blue="0.062745098039215685" alpha="1" colorSpace="calibratedRGB"/> @@ -529,6 +533,7 @@ </connections> </button> </subviews> + <animations/> <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstAttribute="bottom" secondItem="1AF-cw-sG5" secondAttribute="bottom" id="5GX-Tt-REu"/> @@ -549,11 +554,13 @@ <subviews> <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="5dG-Gc-FlR"> <rect key="frame" x="8" y="8" width="544" height="158"/> + <animations/> <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="25"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> </textView> </subviews> + <animations/> <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstAttribute="trailing" secondItem="5dG-Gc-FlR" secondAttribute="trailing" constant="8" id="Hh1-So-hwM"/> @@ -567,6 +574,7 @@ <subviews> <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="RPL-cy-o0G" userLabel="star1"> <rect key="frame" x="0.0" y="0.0" width="98" height="50"/> + <animations/> <state key="normal" image="rating_star2"/> <connections> <action selector="starOneTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="Hxv-dr-2Yg"/> @@ -574,6 +582,7 @@ </button> <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eqY-tM-EkF" userLabel="star2"> <rect key="frame" x="108" y="0.0" width="98" height="50"/> + <animations/> <state key="normal" image="rating_star2"/> <connections> <action selector="starTwoTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="5H7-Qq-ml0"/> @@ -581,6 +590,7 @@ </button> <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="sLK-NH-rvK" userLabel="star3"> <rect key="frame" x="216" y="0.0" width="98" height="50"/> + <animations/> <state key="normal" image="rating_star2"/> <connections> <action selector="starThreeTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="J6b-uA-EaE"/> @@ -588,6 +598,7 @@ </button> <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fd9-H9-lzG" userLabel="star4"> <rect key="frame" x="324" y="0.0" width="98" height="50"/> + <animations/> <state key="normal" image="rating_star2"/> <connections> <action selector="starFourTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="VdS-rq-HCy"/> @@ -595,12 +606,14 @@ </button> <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Jzq-uK-0EF" userLabel="star5"> <rect key="frame" x="432" y="0.0" width="98" height="50"/> + <animations/> <state key="normal" image="rating_star2"/> <connections> <action selector="starFiveTapped:" destination="BAI-dU-dy0" eventType="touchUpInside" id="KDM-T7-hVz"/> </connections> </button> </subviews> + <animations/> <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstAttribute="bottom" secondItem="Jzq-uK-0EF" secondAttribute="bottom" id="1ND-Ln-y7I"/> @@ -633,6 +646,7 @@ <subviews> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1oM-DR-MwP"> <rect key="frame" x="213" y="13" width="134" height="33"/> + <animations/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> <state key="normal" title=" Log To Journal "> <color key="titleColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> @@ -642,6 +656,7 @@ </connections> </button> </subviews> + <animations/> <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <constraints> <constraint firstItem="1oM-DR-MwP" firstAttribute="centerY" secondItem="tNJ-35-n33" secondAttribute="centerY" id="4aa-nt-gCQ"/> @@ -650,6 +665,7 @@ </constraints> </view> </subviews> + <animations/> <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstItem="tNJ-35-n33" firstAttribute="top" secondItem="KTC-y5-v8E" secondAttribute="bottom" constant="10" id="5zc-ey-MkX"/> @@ -947,6 +963,7 @@ <navigationBar key="navigationBar" contentMode="scaleToFill" id="kHi-Rv-LpC"> <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> <autoresizingMask key="autoresizingMask"/> + <animations/> </navigationBar> <connections> <segue destination="WZe-UX-wgc" kind="relationship" relationship="rootViewController" id="c1X-Zg-b9I"/> diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib index 53bbbc8..65acc27 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -19,29 +19,33 @@ <rect key="frame" x="0.0" y="0.0" width="340" height="125"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> - <rect key="frame" x="0.0" y="0.0" width="340" height="124.5"/> + <rect key="frame" x="0.0" y="0.0" width="340" height="124"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Vb0-5u-rmQ"> <rect key="frame" x="18" y="32" width="60" height="60"/> + <animations/> <constraints> <constraint firstAttribute="height" constant="60" id="LLD-64-jSM"/> <constraint firstAttribute="width" constant="60" id="fag-dr-LW7"/> </constraints> </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ywi-Ne-nLf"> - <rect key="frame" x="86" y="16" width="238" height="46.5"/> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ywi-Ne-nLf"> + <rect key="frame" x="86" y="16" width="238" height="47"/> + <animations/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TR1-Ae-Cd4"> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TR1-Ae-Cd4"> <rect key="frame" x="86" y="63" width="238" height="46"/> + <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <nil key="highlightedColor"/> </label> </subviews> + <animations/> <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> <constraints> <constraint firstItem="Vb0-5u-rmQ" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="05Q-DJ-JMP"/> @@ -74,6 +78,7 @@ </mask> </variation> </tableViewCellContentView> + <animations/> <connections> <outlet property="artworkImage" destination="Vb0-5u-rmQ" id="YH4-Ar-buq"/> <outlet property="authorArtistDirectorLabel" destination="TR1-Ae-Cd4" id="MLM-qU-syZ"/> diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index 07011b4..df69530 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -136,6 +136,15 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath [self.navigationController pushViewController:detailViewController animated:YES]; } +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath +{ + if (editingStyle == UITableViewCellEditingStyleDelete) + { + [self.allJournalPosts removeObjectAtIndex:indexPath.row]; + // Delete the row from the data source + [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; + } +} #pragma mark - segue - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { From 527021a6f63cabcb4480e638f087e1449454779e Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Thu, 22 Oct 2015 15:18:50 -0400 Subject: [PATCH 84/86] fixed merge conflict --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 22 ++++-------------- .../Unit-2-Journal/WishListTableViewCell.xib | 17 +++----------- 3 files changed, 7 insertions(+), 32 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 58a3d5db5bc3ba9f3272311eb881760e80ccb6a5..3b07dd1e0456ec4261068fb9cdfb033f79b14df7 100644 GIT binary patch delta 121 zcmZoMXffFEkA;zO@_&{|Ov?@eDHHzOd>5CL(voBbhD&}Me=|(}$6`8}n~j?V&hcmC zW4tgqj%_xRedpwOHVZx!9e*b~vb!?-ZTvfVBbya}L55*)a(-?B0~iEMEHvHB&heKY E0L-l_{Qv*} delta 123 zcmZoMXffFEkA;z8@_&{|OnWkbl!-uYzKcsrX-P5z!zJHOZ44kelgZp{+^h(mKN}z8 zhskklvzdA=C&#l{@FD53`|@tGBfBdzh~CI%#b1zN7@VA+TfhJY8zvT-Zf58B%MSp> CKr0sj diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index fb898ed..f2e5acc 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -516,9 +516,7 @@ <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <nil key="highlightedColor"/> </label> -<<<<<<< HEAD - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DWN-3U-CrL"> -======= + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DWN-3U-CrL"> >>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 <rect key="frame" x="138" y="79" width="442" height="21"/> @@ -540,9 +538,6 @@ </button> </subviews> <animations/> -<<<<<<< HEAD - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> -======= <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> >>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 <constraints> @@ -565,9 +560,6 @@ <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="5dG-Gc-FlR"> <rect key="frame" x="8" y="8" width="544" height="158"/> <animations/> -<<<<<<< HEAD - <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> -======= <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> >>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="25"/> @@ -575,9 +567,7 @@ </textView> </subviews> <animations/> -<<<<<<< HEAD - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> -======= + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> >>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 <constraints> @@ -632,9 +622,7 @@ </button> </subviews> <animations/> -<<<<<<< HEAD - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> -======= + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> >>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 <constraints> @@ -688,9 +676,7 @@ </view> </subviews> <animations/> -<<<<<<< HEAD - <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> -======= + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> >>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 <constraints> diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib index 4613185..eb3ceaf 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib @@ -30,16 +30,7 @@ <constraint firstAttribute="width" constant="60" id="fag-dr-LW7"/> </constraints> </imageView> -<<<<<<< HEAD - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ywi-Ne-nLf"> - <rect key="frame" x="86" y="16" width="238" height="47"/> - <animations/> - <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> - <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> - <nil key="highlightedColor"/> - </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TR1-Ae-Cd4"> -======= + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TR1-Ae-Cd4"> >>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 <rect key="frame" x="86" y="63" width="238" height="46"/> @@ -88,11 +79,9 @@ </mask> </variation> </tableViewCellContentView> -<<<<<<< HEAD + <animations/> -======= - <accessibility key="accessibilityConfiguration" identifier="WishListTableViewCellIdentifier"/> ->>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 + <connections> <outlet property="artworkImage" destination="Vb0-5u-rmQ" id="YH4-Ar-buq"/> <outlet property="authorArtistDirectorLabel" destination="TR1-Ae-Cd4" id="MLM-qU-syZ"/> From 70f952cdfc035f5f7c5a01bdae709f31fc9579d2 Mon Sep 17 00:00:00 2001 From: Shena Yoshida <sheyoshida@gmail.com> Date: Thu, 22 Oct 2015 16:38:54 -0400 Subject: [PATCH 85/86] fixed spacing --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 34 +++++++----------- .../Unit-2-Journal/JournalHeaderView.xib | 6 ++-- .../Unit-2-Journal/WishListTableViewCell.xib | 8 ++--- .../WishListTableViewController.m | 19 +++++++--- 5 files changed, 32 insertions(+), 35 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 3b07dd1e0456ec4261068fb9cdfb033f79b14df7..1d2191a1b3f3bba0a8c8c63bb2bf72764cdfa8cd 100644 GIT binary patch delta 28 kcmZoMXffFElZ`3n=Hz%bi^<09^B4;z7MgBm=lIJH0G%reU;qFB delta 28 kcmZoMXffFEla0x~b8<YJ#bjgld5i%Q3r#n(bNuB80F&1V(*OVf diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index f2e5acc..847caab 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="sU9-FA-LDO"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -51,7 +51,7 @@ <rect key="frame" x="0.0" y="28" width="600" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4Uu-0J-i5z" id="a3N-Xk-wkT"> - <rect key="frame" x="0.0" y="0.0" width="600" height="43"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/> <autoresizingMask key="autoresizingMask"/> <animations/> </tableViewCellContentView> @@ -280,7 +280,7 @@ <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wn8-3w-eKd"> - <rect key="frame" x="15" y="5" width="32" height="20"/> + <rect key="frame" x="15" y="6" width="31.5" height="19.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="16"/> @@ -288,7 +288,7 @@ <nil key="highlightedColor"/> </label> <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Subtitle" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DsP-zu-9UZ"> - <rect key="frame" x="15" y="25" width="41" height="14"/> + <rect key="frame" x="15" y="25.5" width="40.5" height="13.5"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <animations/> <fontDescription key="fontDescription" type="system" pointSize="11"/> @@ -516,9 +516,7 @@ <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <nil key="highlightedColor"/> </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DWN-3U-CrL"> ->>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 <rect key="frame" x="138" y="79" width="442" height="21"/> <animations/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> @@ -539,7 +537,6 @@ </subviews> <animations/> <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> ->>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 <constraints> <constraint firstAttribute="bottom" secondItem="1AF-cw-sG5" secondAttribute="bottom" id="5GX-Tt-REu"/> <constraint firstAttribute="height" constant="125" id="Bjb-7L-TcT"/> @@ -561,15 +558,12 @@ <rect key="frame" x="8" y="8" width="544" height="158"/> <animations/> <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> ->>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="25"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> </textView> </subviews> <animations/> - <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> ->>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 <constraints> <constraint firstAttribute="trailing" secondItem="5dG-Gc-FlR" secondAttribute="trailing" constant="8" id="Hh1-So-hwM"/> <constraint firstItem="5dG-Gc-FlR" firstAttribute="top" secondItem="KTC-y5-v8E" secondAttribute="top" constant="8" id="VQs-d1-Hne"/> @@ -622,9 +616,7 @@ </button> </subviews> <animations/> - <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> ->>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 <constraints> <constraint firstAttribute="bottom" secondItem="Jzq-uK-0EF" secondAttribute="bottom" id="1ND-Ln-y7I"/> <constraint firstAttribute="bottom" secondItem="sLK-NH-rvK" secondAttribute="bottom" id="2hF-t7-7wW"/> @@ -676,9 +668,7 @@ </view> </subviews> <animations/> - <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> ->>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 <constraints> <constraint firstItem="tNJ-35-n33" firstAttribute="top" secondItem="KTC-y5-v8E" secondAttribute="bottom" constant="10" id="5zc-ey-MkX"/> <constraint firstItem="tNJ-35-n33" firstAttribute="leading" secondItem="XbP-Rr-3ea" secondAttribute="leadingMargin" id="AN1-xe-uD8"/> @@ -894,7 +884,7 @@ <constraint firstItem="bIK-7d-Vfl" firstAttribute="centerY" secondItem="ccY-ot-FYH" secondAttribute="centerY" id="ZwE-L5-xQD"/> </constraints> </view> - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="gMh-cq-aTG"> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gMh-cq-aTG"> <rect key="frame" x="20" y="219" width="560" height="176"/> <animations/> <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> @@ -995,17 +985,17 @@ <animations/> <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <view key="tableHeaderView" contentMode="scaleToFill" id="t7Q-Vo-vCQ"> - <rect key="frame" x="0.0" y="0.0" width="600" height="150"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="125"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WISH" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Df0-BF-gAU"> - <rect key="frame" x="173" y="45" width="126" height="59"/> + <rect key="frame" x="173" y="20" width="126" height="59"/> <animations/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="50"/> <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Pix-v9-EmC"> + <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Pix-v9-EmC"> <rect key="frame" x="299" y="33" width="2" height="117"/> <animations/> <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> @@ -1014,10 +1004,10 @@ </constraints> </view> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="LIST" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oKs-Fj-h2E"> - <rect key="frame" x="301" y="81" width="101" height="59"/> + <rect key="frame" x="301" y="56" width="101" height="59"/> <animations/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="50"/> - <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/> + <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <nil key="highlightedColor"/> </label> </subviews> @@ -1041,7 +1031,7 @@ </view> <prototypes> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" accessoryType="disclosureIndicator" indentationWidth="10" shouldIndentWhileEditing="NO" rowHeight="64" id="Ej0-R4-rXa"> - <rect key="frame" x="0.0" y="178" width="600" height="64"/> + <rect key="frame" x="0.0" y="153" width="600" height="64"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ej0-R4-rXa" id="ezU-vk-VRT"> <rect key="frame" x="0.0" y="0.0" width="567" height="64"/> @@ -1145,7 +1135,7 @@ <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bI1-9Y-Lhn" userLabel="Blue View"> <rect key="frame" x="20" y="325" width="560" height="91"/> <subviews> - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" textAlignment="center" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="riX-qw-M2j"> <rect key="frame" x="5" y="5" width="550" height="81"/> <animations/> <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> diff --git a/Unit-2-Journal/Unit-2-Journal/JournalHeaderView.xib b/Unit-2-Journal/Unit-2-Journal/JournalHeaderView.xib index a99f24f..d600e07 100644 --- a/Unit-2-Journal/Unit-2-Journal/JournalHeaderView.xib +++ b/Unit-2-Journal/Unit-2-Journal/JournalHeaderView.xib @@ -12,13 +12,13 @@ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="JournalHeaderView"> - <rect key="frame" x="0.0" y="0.0" width="600" height="150"/> + <rect key="frame" x="0.0" y="0.0" width="600" height="125"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="JOURNAL" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r2f-XV-NbP"> - <rect key="frame" x="190" y="66" width="221.5" height="59"/> + <rect key="frame" x="190" y="41" width="221.5" height="59"/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="50"/> - <color key="textColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> + <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <nil key="highlightedColor"/> </label> </subviews> diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib index eb3ceaf..5914ec0 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewCell.xib @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> @@ -19,7 +19,7 @@ <rect key="frame" x="0.0" y="0.0" width="340" height="125"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> - <rect key="frame" x="0.0" y="0.0" width="340" height="124"/> + <rect key="frame" x="0.0" y="0.0" width="340" height="124.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Vb0-5u-rmQ"> @@ -30,9 +30,7 @@ <constraint firstAttribute="width" constant="60" id="fag-dr-LW7"/> </constraints> </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TR1-Ae-Cd4"> ->>>>>>> 9e3a1683429819900e20b8f4172226da37bbaf63 <rect key="frame" x="86" y="63" width="238" height="46"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="14"/> @@ -79,9 +77,7 @@ </mask> </variation> </tableViewCellContentView> - <animations/> - <connections> <outlet property="artworkImage" destination="Vb0-5u-rmQ" id="YH4-Ar-buq"/> <outlet property="authorArtistDirectorLabel" destination="TR1-Ae-Cd4" id="MLM-qU-syZ"/> diff --git a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m index 4ff7457..4c33f09 100644 --- a/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m +++ b/Unit-2-Journal/Unit-2-Journal/WishListTableViewController.m @@ -141,15 +141,26 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath [self.navigationController pushViewController:detailViewController animated:YES]; } -- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath -{ - if (editingStyle == UITableViewCellEditingStyleDelete) - { + +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + + if (editingStyle == UITableViewCellEditingStyleDelete) { + + // Delete cell from Parse + PFQuery *object = [self.allJournalPosts objectAtIndex:indexPath.row]; + [object delete:nil]; + + // then remove the reference from the table view [self.allJournalPosts removeObjectAtIndex:indexPath.row]; // Delete the row from the data source [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; + + // reload table view with new data + [self.tableView reloadData]; + } } + #pragma mark - segue - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { From 4d3c99e19176a5b2ab1b0b3d56ba58016762f885 Mon Sep 17 00:00:00 2001 From: shenayoshida <sheyoshida@gmail.com> Date: Thu, 22 Oct 2015 19:25:29 -0400 Subject: [PATCH 86/86] button text --- Unit-2-Journal/.DS_Store | Bin 6148 -> 6148 bytes .../Unit-2-Journal/Base.lproj/Main.storyboard | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Unit-2-Journal/.DS_Store b/Unit-2-Journal/.DS_Store index 1d2191a1b3f3bba0a8c8c63bb2bf72764cdfa8cd..c084e5cff783cf4c6b8d31065219e187b2433548 100644 GIT binary patch delta 123 zcmZoMXffFEkA;z8@_&{|OncIRl!-uYzKcsrX-P5z!zJHOZ44kelgZp{+^h(mKN}z8 zhskklvzdA=C&#l{@FD53`|@tGBfBdzh~CI%#b1zN7@VA+TfhJY8zvT-Zf58B%MSp= CXe$)} delta 121 zcmZoMXffFEkA;zO@_&{|Ov?@eDHHzOd>5CL(voBbhD&}Me=|(}$6`8}n~j?V&hcmC zW4tgqj%_wm%+1O1Y!-YdI{r>}WOrru+xU0#Mm8({f(*mp<ow(M1~4d?SZKPLo#QV* E0Oi6fiU0rr diff --git a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard index 847caab..2652388 100644 --- a/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard +++ b/Unit-2-Journal/Unit-2-Journal/Base.lproj/Main.storyboard @@ -517,17 +517,17 @@ <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DWN-3U-CrL"> - <rect key="frame" x="138" y="79" width="442" height="21"/> + <rect key="frame" x="138" y="79" width="442" height="20.5"/> <animations/> <fontDescription key="fontDescription" name="Akkurat-Bold" family="Akkurat" pointSize="17"/> <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <nil key="highlightedColor"/> </label> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="QXz-a4-RR1"> - <rect key="frame" x="549" y="15" width="36" height="30"/> + <rect key="frame" x="530" y="15" width="55" height="30"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> - <state key="normal" title="Done"> + <state key="normal" title="Dismiss"> <color key="titleColor" red="0.97254901960784312" green="0.5490196078431373" blue="0.062745098039215685" alpha="1" colorSpace="calibratedRGB"/> </state> <connections> @@ -726,7 +726,7 @@ </constraints> </imageView> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f6q-RS-lgS"> - <rect key="frame" x="128" y="82" width="412" height="21"/> + <rect key="frame" x="128" y="82" width="412" height="20.5"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="17"/> <color key="textColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> @@ -740,10 +740,10 @@ <nil key="highlightedColor"/> </label> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oCt-vd-4RS"> - <rect key="frame" x="502" y="0.0" width="50" height="30"/> + <rect key="frame" x="483" y="0.0" width="69" height="30"/> <animations/> <fontDescription key="fontDescription" name="Akkurat" family="Akkurat" pointSize="15"/> - <state key="normal" title=" Done "> + <state key="normal" title=" Dismiss "> <color key="titleColor" red="0.98580998180000001" green="0.62003214620000002" blue="0.067037612610000005" alpha="1" colorSpace="calibratedRGB"/> </state> <connections>